@@ -173,7 +173,7 @@ static int mlx5e_get_sset_count(struct net_device *dev, int sset)
173
173
case ETH_SS_STATS :
174
174
return NUM_VPORT_COUNTERS +
175
175
priv -> params .num_channels * NUM_RQ_STATS +
176
- priv -> params .num_channels * priv -> num_tc *
176
+ priv -> params .num_channels * priv -> params . num_tc *
177
177
NUM_SQ_STATS ;
178
178
/* fallthrough */
179
179
default :
@@ -207,7 +207,7 @@ static void mlx5e_get_strings(struct net_device *dev,
207
207
"rx%d_%s" , i , rq_stats_strings [j ]);
208
208
209
209
for (i = 0 ; i < priv -> params .num_channels ; i ++ )
210
- for (tc = 0 ; tc < priv -> num_tc ; tc ++ )
210
+ for (tc = 0 ; tc < priv -> params . num_tc ; tc ++ )
211
211
for (j = 0 ; j < NUM_SQ_STATS ; j ++ )
212
212
sprintf (data +
213
213
(idx ++ ) * ETH_GSTRING_LEN ,
@@ -242,7 +242,7 @@ static void mlx5e_get_ethtool_stats(struct net_device *dev,
242
242
((u64 * )& priv -> channel [i ]-> rq .stats )[j ];
243
243
244
244
for (i = 0 ; i < priv -> params .num_channels ; i ++ )
245
- for (tc = 0 ; tc < priv -> num_tc ; tc ++ )
245
+ for (tc = 0 ; tc < priv -> params . num_tc ; tc ++ )
246
246
for (j = 0 ; j < NUM_SQ_STATS ; j ++ )
247
247
data [idx ++ ] = !test_bit (MLX5E_STATE_OPENED ,
248
248
& priv -> state ) ? 0 :
@@ -264,7 +264,7 @@ static int mlx5e_set_ringparam(struct net_device *dev,
264
264
struct ethtool_ringparam * param )
265
265
{
266
266
struct mlx5e_priv * priv = netdev_priv (dev );
267
- struct mlx5e_params new_params ;
267
+ bool was_opened ;
268
268
u16 min_rx_wqes ;
269
269
u8 log_rq_size ;
270
270
u8 log_sq_size ;
@@ -316,11 +316,18 @@ static int mlx5e_set_ringparam(struct net_device *dev,
316
316
return 0 ;
317
317
318
318
mutex_lock (& priv -> state_lock );
319
- new_params = priv -> params ;
320
- new_params .log_rq_size = log_rq_size ;
321
- new_params .log_sq_size = log_sq_size ;
322
- new_params .min_rx_wqes = min_rx_wqes ;
323
- err = mlx5e_update_priv_params (priv , & new_params );
319
+
320
+ was_opened = test_bit (MLX5E_STATE_OPENED , & priv -> state );
321
+ if (was_opened )
322
+ mlx5e_close_locked (dev );
323
+
324
+ priv -> params .log_rq_size = log_rq_size ;
325
+ priv -> params .log_sq_size = log_sq_size ;
326
+ priv -> params .min_rx_wqes = min_rx_wqes ;
327
+
328
+ if (was_opened )
329
+ err = mlx5e_open_locked (dev );
330
+
324
331
mutex_unlock (& priv -> state_lock );
325
332
326
333
return err ;
@@ -342,7 +349,7 @@ static int mlx5e_set_channels(struct net_device *dev,
342
349
struct mlx5e_priv * priv = netdev_priv (dev );
343
350
int ncv = priv -> mdev -> priv .eq_table .num_comp_vectors ;
344
351
unsigned int count = ch -> combined_count ;
345
- struct mlx5e_params new_params ;
352
+ bool was_opened ;
346
353
int err = 0 ;
347
354
348
355
if (!count ) {
@@ -365,9 +372,16 @@ static int mlx5e_set_channels(struct net_device *dev,
365
372
return 0 ;
366
373
367
374
mutex_lock (& priv -> state_lock );
368
- new_params = priv -> params ;
369
- new_params .num_channels = count ;
370
- err = mlx5e_update_priv_params (priv , & new_params );
375
+
376
+ was_opened = test_bit (MLX5E_STATE_OPENED , & priv -> state );
377
+ if (was_opened )
378
+ mlx5e_close_locked (dev );
379
+
380
+ priv -> params .num_channels = count ;
381
+
382
+ if (was_opened )
383
+ err = mlx5e_open_locked (dev );
384
+
371
385
mutex_unlock (& priv -> state_lock );
372
386
373
387
return err ;
@@ -673,10 +687,10 @@ static int mlx5e_get_rxfh(struct net_device *netdev, u32 *indir, u8 *key,
673
687
return 0 ;
674
688
}
675
689
676
- static int mlx5e_set_rxfh (struct net_device * netdev , const u32 * indir ,
690
+ static int mlx5e_set_rxfh (struct net_device * dev , const u32 * indir ,
677
691
const u8 * key , const u8 hfunc )
678
692
{
679
- struct mlx5e_priv * priv = netdev_priv (netdev );
693
+ struct mlx5e_priv * priv = netdev_priv (dev );
680
694
int err = 0 ;
681
695
682
696
if (hfunc == ETH_RSS_HASH_NO_CHANGE )
@@ -690,8 +704,8 @@ static int mlx5e_set_rxfh(struct net_device *netdev, const u32 *indir,
690
704
691
705
priv -> params .rss_hfunc = hfunc ;
692
706
if (test_bit (MLX5E_STATE_OPENED , & priv -> state )) {
693
- mlx5e_close_locked (priv -> netdev );
694
- err = mlx5e_open_locked (priv -> netdev );
707
+ mlx5e_close_locked (dev );
708
+ err = mlx5e_open_locked (dev );
695
709
}
696
710
697
711
mutex_unlock (& priv -> state_lock );
@@ -724,7 +738,7 @@ static int mlx5e_set_tunable(struct net_device *dev,
724
738
{
725
739
struct mlx5e_priv * priv = netdev_priv (dev );
726
740
struct mlx5_core_dev * mdev = priv -> mdev ;
727
- struct mlx5e_params new_params ;
741
+ bool was_opened ;
728
742
u32 val ;
729
743
int err = 0 ;
730
744
@@ -737,9 +751,16 @@ static int mlx5e_set_tunable(struct net_device *dev,
737
751
}
738
752
739
753
mutex_lock (& priv -> state_lock );
740
- new_params = priv -> params ;
741
- new_params .tx_max_inline = val ;
742
- err = mlx5e_update_priv_params (priv , & new_params );
754
+
755
+ was_opened = test_bit (MLX5E_STATE_OPENED , & priv -> state );
756
+ if (was_opened )
757
+ mlx5e_close_locked (dev );
758
+
759
+ priv -> params .tx_max_inline = val ;
760
+
761
+ if (was_opened )
762
+ err = mlx5e_open_locked (dev );
763
+
743
764
mutex_unlock (& priv -> state_lock );
744
765
break ;
745
766
default :
0 commit comments