Skip to content

Commit e82a08b

Browse files
committed
Merge branch 'mlx5e-next'
Amir Vadai says: ==================== net/mlx5e: Driver update 29-Jul-2015 This patchset contain bug fixes and code cleaning patches to the ConnectX-4 Ethernet driver. Patchset was applied and tested over commit 8c1a91f ("Merge branch 'mlx4-802.1ad-accel'") ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents dcc38c0 + 98e81b0 commit e82a08b

File tree

6 files changed

+124
-101
lines changed

6 files changed

+124
-101
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,6 @@ struct mlx5e_flow_table {
389389

390390
struct mlx5e_priv {
391391
/* priv data path fields - start */
392-
int num_tc;
393392
int default_vlan_prio;
394393
struct mlx5e_sq **txq_to_sq_map;
395394
/* priv data path fields - end */
@@ -497,8 +496,6 @@ void mlx5e_del_all_vlan_rules(struct mlx5e_priv *priv);
497496

498497
int mlx5e_open_locked(struct net_device *netdev);
499498
int mlx5e_close_locked(struct net_device *netdev);
500-
int mlx5e_update_priv_params(struct mlx5e_priv *priv,
501-
struct mlx5e_params *new_params);
502499

503500
static inline void mlx5e_tx_notify_hw(struct mlx5e_sq *sq,
504501
struct mlx5e_tx_wqe *wqe, int bf_sz)

drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ static int mlx5e_get_sset_count(struct net_device *dev, int sset)
173173
case ETH_SS_STATS:
174174
return NUM_VPORT_COUNTERS +
175175
priv->params.num_channels * NUM_RQ_STATS +
176-
priv->params.num_channels * priv->num_tc *
176+
priv->params.num_channels * priv->params.num_tc *
177177
NUM_SQ_STATS;
178178
/* fallthrough */
179179
default:
@@ -207,7 +207,7 @@ static void mlx5e_get_strings(struct net_device *dev,
207207
"rx%d_%s", i, rq_stats_strings[j]);
208208

209209
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++)
211211
for (j = 0; j < NUM_SQ_STATS; j++)
212212
sprintf(data +
213213
(idx++) * ETH_GSTRING_LEN,
@@ -242,7 +242,7 @@ static void mlx5e_get_ethtool_stats(struct net_device *dev,
242242
((u64 *)&priv->channel[i]->rq.stats)[j];
243243

244244
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++)
246246
for (j = 0; j < NUM_SQ_STATS; j++)
247247
data[idx++] = !test_bit(MLX5E_STATE_OPENED,
248248
&priv->state) ? 0 :
@@ -264,7 +264,7 @@ static int mlx5e_set_ringparam(struct net_device *dev,
264264
struct ethtool_ringparam *param)
265265
{
266266
struct mlx5e_priv *priv = netdev_priv(dev);
267-
struct mlx5e_params new_params;
267+
bool was_opened;
268268
u16 min_rx_wqes;
269269
u8 log_rq_size;
270270
u8 log_sq_size;
@@ -316,11 +316,18 @@ static int mlx5e_set_ringparam(struct net_device *dev,
316316
return 0;
317317

318318
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+
324331
mutex_unlock(&priv->state_lock);
325332

326333
return err;
@@ -342,7 +349,7 @@ static int mlx5e_set_channels(struct net_device *dev,
342349
struct mlx5e_priv *priv = netdev_priv(dev);
343350
int ncv = priv->mdev->priv.eq_table.num_comp_vectors;
344351
unsigned int count = ch->combined_count;
345-
struct mlx5e_params new_params;
352+
bool was_opened;
346353
int err = 0;
347354

348355
if (!count) {
@@ -365,9 +372,16 @@ static int mlx5e_set_channels(struct net_device *dev,
365372
return 0;
366373

367374
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+
371385
mutex_unlock(&priv->state_lock);
372386

373387
return err;
@@ -673,10 +687,10 @@ static int mlx5e_get_rxfh(struct net_device *netdev, u32 *indir, u8 *key,
673687
return 0;
674688
}
675689

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,
677691
const u8 *key, const u8 hfunc)
678692
{
679-
struct mlx5e_priv *priv = netdev_priv(netdev);
693+
struct mlx5e_priv *priv = netdev_priv(dev);
680694
int err = 0;
681695

682696
if (hfunc == ETH_RSS_HASH_NO_CHANGE)
@@ -690,8 +704,8 @@ static int mlx5e_set_rxfh(struct net_device *netdev, const u32 *indir,
690704

691705
priv->params.rss_hfunc = hfunc;
692706
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);
695709
}
696710

697711
mutex_unlock(&priv->state_lock);
@@ -724,7 +738,7 @@ static int mlx5e_set_tunable(struct net_device *dev,
724738
{
725739
struct mlx5e_priv *priv = netdev_priv(dev);
726740
struct mlx5_core_dev *mdev = priv->mdev;
727-
struct mlx5e_params new_params;
741+
bool was_opened;
728742
u32 val;
729743
int err = 0;
730744

@@ -737,9 +751,16 @@ static int mlx5e_set_tunable(struct net_device *dev,
737751
}
738752

739753
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+
743764
mutex_unlock(&priv->state_lock);
744765
break;
745766
default:

0 commit comments

Comments
 (0)