@@ -161,6 +161,7 @@ static void mlx5e_rss_params_init(struct mlx5e_rss *rss)
161161{
162162 enum mlx5_traffic_types tt ;
163163
164+ rss -> hash .symmetric = true;
164165 rss -> hash .hfunc = ETH_RSS_HASH_TOP ;
165166 netdev_rss_key_fill (rss -> hash .toeplitz_hash_key ,
166167 sizeof (rss -> hash .toeplitz_hash_key ));
@@ -566,7 +567,7 @@ int mlx5e_rss_packet_merge_set_param(struct mlx5e_rss *rss,
566567 return final_err ;
567568}
568569
569- int mlx5e_rss_get_rxfh (struct mlx5e_rss * rss , u32 * indir , u8 * key , u8 * hfunc )
570+ int mlx5e_rss_get_rxfh (struct mlx5e_rss * rss , u32 * indir , u8 * key , u8 * hfunc , bool * symmetric )
570571{
571572 if (indir )
572573 memcpy (indir , rss -> indir .table ,
@@ -579,11 +580,14 @@ int mlx5e_rss_get_rxfh(struct mlx5e_rss *rss, u32 *indir, u8 *key, u8 *hfunc)
579580 if (hfunc )
580581 * hfunc = rss -> hash .hfunc ;
581582
583+ if (symmetric )
584+ * symmetric = rss -> hash .symmetric ;
585+
582586 return 0 ;
583587}
584588
585589int mlx5e_rss_set_rxfh (struct mlx5e_rss * rss , const u32 * indir ,
586- const u8 * key , const u8 * hfunc ,
590+ const u8 * key , const u8 * hfunc , const bool * symmetric ,
587591 u32 * rqns , u32 * vhca_ids , unsigned int num_rqns )
588592{
589593 bool changed_indir = false;
@@ -623,6 +627,11 @@ int mlx5e_rss_set_rxfh(struct mlx5e_rss *rss, const u32 *indir,
623627 rss -> indir .actual_table_size * sizeof (* rss -> indir .table ));
624628 }
625629
630+ if (symmetric ) {
631+ rss -> hash .symmetric = * symmetric ;
632+ changed_hash = true;
633+ }
634+
626635 if (changed_indir && rss -> enabled ) {
627636 err = mlx5e_rss_apply (rss , rqns , vhca_ids , num_rqns );
628637 if (err ) {
0 commit comments