@@ -75,15 +75,14 @@ struct mlx5e_rss {
7575 struct mlx5e_tir * inner_tir [MLX5E_NUM_INDIR_TIRS ];
7676 struct mlx5e_rqt rqt ;
7777 struct mlx5_core_dev * mdev ; /* primary */
78- u32 drop_rqn ;
79- bool inner_ft_support ;
78+ struct mlx5e_rss_params params ;
8079 bool enabled ;
8180 refcount_t refcnt ;
8281};
8382
8483bool mlx5e_rss_get_inner_ft_support (struct mlx5e_rss * rss )
8584{
86- return rss -> inner_ft_support ;
85+ return rss -> params . inner_ft_support ;
8786}
8887
8988void mlx5e_rss_params_indir_modify_actual_size (struct mlx5e_rss * rss , u32 num_channels )
@@ -198,14 +197,15 @@ mlx5e_rss_create_tir(struct mlx5e_rss *rss, enum mlx5_traffic_types tt,
198197 const struct mlx5e_packet_merge_param * pkt_merge_param ,
199198 bool inner )
200199{
200+ bool rss_inner = rss -> params .inner_ft_support ;
201201 struct mlx5e_rss_params_traffic_type rss_tt ;
202202 struct mlx5e_tir_builder * builder ;
203203 struct mlx5e_tir * * tir_p ;
204204 struct mlx5e_tir * tir ;
205205 u32 rqtn ;
206206 int err ;
207207
208- if (inner && !rss -> inner_ft_support ) {
208+ if (inner && !rss_inner ) {
209209 mlx5e_rss_warn (rss -> mdev ,
210210 "Cannot create inner indirect TIR[%d], RSS inner FT is not supported.\n" ,
211211 tt );
@@ -228,7 +228,7 @@ mlx5e_rss_create_tir(struct mlx5e_rss *rss, enum mlx5_traffic_types tt,
228228
229229 rqtn = mlx5e_rqt_get_rqtn (& rss -> rqt );
230230 mlx5e_tir_builder_build_rqt (builder , rss -> mdev -> mlx5e_res .hw_objs .td .tdn ,
231- rqtn , rss -> inner_ft_support );
231+ rqtn , rss_inner );
232232 mlx5e_tir_builder_build_packet_merge (builder , pkt_merge_param );
233233 rss_tt = mlx5e_rss_get_tt_config (rss , tt );
234234 mlx5e_tir_builder_build_rss (builder , & rss -> hash , & rss_tt , inner );
@@ -337,7 +337,7 @@ static int mlx5e_rss_update_tirs(struct mlx5e_rss *rss)
337337 tt , err );
338338 }
339339
340- if (!rss -> inner_ft_support )
340+ if (!rss -> params . inner_ft_support )
341341 continue ;
342342
343343 err = mlx5e_rss_update_tir (rss , tt , true);
@@ -357,11 +357,13 @@ static int mlx5e_rss_init_no_tirs(struct mlx5e_rss *rss)
357357 refcount_set (& rss -> refcnt , 1 );
358358
359359 return mlx5e_rqt_init_direct (& rss -> rqt , rss -> mdev , true,
360- rss -> drop_rqn , rss -> indir .max_table_size );
360+ rss -> params .drop_rqn ,
361+ rss -> indir .max_table_size );
361362}
362363
363364struct mlx5e_rss *
364- mlx5e_rss_init (struct mlx5_core_dev * mdev , bool inner_ft_support , u32 drop_rqn ,
365+ mlx5e_rss_init (struct mlx5_core_dev * mdev ,
366+ const struct mlx5e_rss_params * params ,
365367 const struct mlx5e_rss_init_params * init_params )
366368{
367369 u32 rqt_max_size , rqt_size ;
@@ -379,8 +381,7 @@ mlx5e_rss_init(struct mlx5_core_dev *mdev, bool inner_ft_support, u32 drop_rqn,
379381 goto err_free_rss ;
380382
381383 rss -> mdev = mdev ;
382- rss -> inner_ft_support = inner_ft_support ;
383- rss -> drop_rqn = drop_rqn ;
384+ rss -> params = * params ;
384385
385386 err = mlx5e_rss_init_no_tirs (rss );
386387 if (err )
@@ -394,7 +395,7 @@ mlx5e_rss_init(struct mlx5_core_dev *mdev, bool inner_ft_support, u32 drop_rqn,
394395 if (err )
395396 goto err_destroy_rqt ;
396397
397- if (inner_ft_support ) {
398+ if (params -> inner_ft_support ) {
398399 err = mlx5e_rss_create_tirs (rss ,
399400 init_params -> pkt_merge_param ,
400401 true);
@@ -423,7 +424,7 @@ int mlx5e_rss_cleanup(struct mlx5e_rss *rss)
423424
424425 mlx5e_rss_destroy_tirs (rss , false);
425426
426- if (rss -> inner_ft_support )
427+ if (rss -> params . inner_ft_support )
427428 mlx5e_rss_destroy_tirs (rss , true);
428429
429430 mlx5e_rqt_destroy (& rss -> rqt );
@@ -453,7 +454,7 @@ u32 mlx5e_rss_get_tirn(struct mlx5e_rss *rss, enum mlx5_traffic_types tt,
453454{
454455 struct mlx5e_tir * tir ;
455456
456- WARN_ON (inner && !rss -> inner_ft_support );
457+ WARN_ON (inner && !rss -> params . inner_ft_support );
457458 tir = rss_get_tir (rss , tt , inner );
458459 WARN_ON (!tir );
459460
@@ -517,10 +518,11 @@ void mlx5e_rss_disable(struct mlx5e_rss *rss)
517518 int err ;
518519
519520 rss -> enabled = false;
520- err = mlx5e_rqt_redirect_direct (& rss -> rqt , rss -> drop_rqn , NULL );
521+ err = mlx5e_rqt_redirect_direct (& rss -> rqt , rss -> params . drop_rqn , NULL );
521522 if (err )
522523 mlx5e_rss_warn (rss -> mdev , "Failed to redirect RQT %#x to drop RQ %#x: err = %d\n" ,
523- mlx5e_rqt_get_rqtn (& rss -> rqt ), rss -> drop_rqn , err );
524+ mlx5e_rqt_get_rqtn (& rss -> rqt ),
525+ rss -> params .drop_rqn , err );
524526}
525527
526528int mlx5e_rss_packet_merge_set_param (struct mlx5e_rss * rss ,
@@ -553,7 +555,7 @@ int mlx5e_rss_packet_merge_set_param(struct mlx5e_rss *rss,
553555 }
554556
555557inner_tir :
556- if (!rss -> inner_ft_support )
558+ if (!rss -> params . inner_ft_support )
557559 continue ;
558560
559561 tir = rss_get_tir (rss , tt , true);
@@ -686,7 +688,7 @@ int mlx5e_rss_set_hash_fields(struct mlx5e_rss *rss, enum mlx5_traffic_types tt,
686688 return err ;
687689 }
688690
689- if (!(rss -> inner_ft_support ))
691+ if (!(rss -> params . inner_ft_support ))
690692 return 0 ;
691693
692694 err = mlx5e_rss_update_tir (rss , tt , true);
0 commit comments