Skip to content

Commit a3b1933

Browse files
committed
Merge tag 'mlx5-fixes-2019-03-11' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux
Saeed Mahameed says: ==================== Mellanox, mlx5 fixes 2019-03-11 For -stable v5.0: ('net/mlx5e: Fix access to non-existing receive queue') ('net/mlx5e: Properly get the PF number phys port name ndo') ('net/mlx5: Fix multiple updates of steering rules in parallel') ('net/mlx5: Avoid panic when setting vport mac, getting vport config') ('net/mlx5: Avoid panic when setting vport rate') ('net/mlx5e: IPoIB, Fix RX checksum statistics update') ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents c6873d1 + 2431925 commit a3b1933

File tree

8 files changed

+128
-101
lines changed

8 files changed

+128
-101
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,9 @@ int mlx5e_ethtool_set_channels(struct mlx5e_priv *priv,
424424

425425
if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) {
426426
priv->channels.params = new_channels.params;
427+
if (!netif_is_rxfh_configured(priv->netdev))
428+
mlx5e_build_default_indir_rqt(priv->rss_params.indirection_rqt,
429+
MLX5E_INDIR_RQT_SIZE, count);
427430
goto out;
428431
}
429432

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1129,16 +1129,17 @@ static int mlx5e_rep_get_phys_port_name(struct net_device *dev,
11291129
struct mlx5e_priv *priv = netdev_priv(dev);
11301130
struct mlx5e_rep_priv *rpriv = priv->ppriv;
11311131
struct mlx5_eswitch_rep *rep = rpriv->rep;
1132-
int ret, pf_num;
1132+
unsigned int fn;
1133+
int ret;
11331134

1134-
ret = mlx5_lag_get_pf_num(priv->mdev, &pf_num);
1135-
if (ret)
1136-
return ret;
1135+
fn = PCI_FUNC(priv->mdev->pdev->devfn);
1136+
if (fn >= MLX5_MAX_PORTS)
1137+
return -EOPNOTSUPP;
11371138

11381139
if (rep->vport == MLX5_VPORT_UPLINK)
1139-
ret = snprintf(buf, len, "p%d", pf_num);
1140+
ret = snprintf(buf, len, "p%d", fn);
11401141
else
1141-
ret = snprintf(buf, len, "pf%dvf%d", pf_num, rep->vport - 1);
1142+
ret = snprintf(buf, len, "pf%dvf%d", fn, rep->vport - 1);
11421143

11431144
if (ret >= len)
11441145
return -EOPNOTSUPP;

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1295,8 +1295,14 @@ static inline void mlx5i_complete_rx_cqe(struct mlx5e_rq *rq,
12951295

12961296
skb->protocol = *((__be16 *)(skb->data));
12971297

1298-
skb->ip_summed = CHECKSUM_COMPLETE;
1299-
skb->csum = csum_unfold((__force __sum16)cqe->check_sum);
1298+
if (netdev->features & NETIF_F_RXCSUM) {
1299+
skb->ip_summed = CHECKSUM_COMPLETE;
1300+
skb->csum = csum_unfold((__force __sum16)cqe->check_sum);
1301+
stats->csum_complete++;
1302+
} else {
1303+
skb->ip_summed = CHECKSUM_NONE;
1304+
stats->csum_none++;
1305+
}
13001306

13011307
if (unlikely(mlx5e_rx_hw_stamp(tstamp)))
13021308
skb_hwtstamps(skb)->hwtstamp =
@@ -1315,7 +1321,6 @@ static inline void mlx5i_complete_rx_cqe(struct mlx5e_rq *rq,
13151321

13161322
skb->dev = netdev;
13171323

1318-
stats->csum_complete++;
13191324
stats->packets++;
13201325
stats->bytes += cqe_bcnt;
13211326
}

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

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1931,7 +1931,7 @@ int mlx5_eswitch_set_vport_mac(struct mlx5_eswitch *esw,
19311931
u64 node_guid;
19321932
int err = 0;
19331933

1934-
if (!MLX5_CAP_GEN(esw->dev, vport_group_manager))
1934+
if (!esw || !MLX5_CAP_GEN(esw->dev, vport_group_manager))
19351935
return -EPERM;
19361936
if (!LEGAL_VPORT(esw, vport) || is_multicast_ether_addr(mac))
19371937
return -EINVAL;
@@ -2005,7 +2005,7 @@ int mlx5_eswitch_get_vport_config(struct mlx5_eswitch *esw,
20052005
{
20062006
struct mlx5_vport *evport;
20072007

2008-
if (!MLX5_CAP_GEN(esw->dev, vport_group_manager))
2008+
if (!esw || !MLX5_CAP_GEN(esw->dev, vport_group_manager))
20092009
return -EPERM;
20102010
if (!LEGAL_VPORT(esw, vport))
20112011
return -EINVAL;
@@ -2297,19 +2297,24 @@ static int normalize_vports_min_rate(struct mlx5_eswitch *esw, u32 divider)
22972297
int mlx5_eswitch_set_vport_rate(struct mlx5_eswitch *esw, int vport,
22982298
u32 max_rate, u32 min_rate)
22992299
{
2300-
u32 fw_max_bw_share = MLX5_CAP_QOS(esw->dev, max_tsar_bw_share);
2301-
bool min_rate_supported = MLX5_CAP_QOS(esw->dev, esw_bw_share) &&
2302-
fw_max_bw_share >= MLX5_MIN_BW_SHARE;
2303-
bool max_rate_supported = MLX5_CAP_QOS(esw->dev, esw_rate_limit);
23042300
struct mlx5_vport *evport;
2301+
u32 fw_max_bw_share;
23052302
u32 previous_min_rate;
23062303
u32 divider;
2304+
bool min_rate_supported;
2305+
bool max_rate_supported;
23072306
int err = 0;
23082307

23092308
if (!ESW_ALLOWED(esw))
23102309
return -EPERM;
23112310
if (!LEGAL_VPORT(esw, vport))
23122311
return -EINVAL;
2312+
2313+
fw_max_bw_share = MLX5_CAP_QOS(esw->dev, max_tsar_bw_share);
2314+
min_rate_supported = MLX5_CAP_QOS(esw->dev, esw_bw_share) &&
2315+
fw_max_bw_share >= MLX5_MIN_BW_SHARE;
2316+
max_rate_supported = MLX5_CAP_QOS(esw->dev, esw_rate_limit);
2317+
23132318
if ((min_rate && !min_rate_supported) || (max_rate && !max_rate_supported))
23142319
return -EOPNOTSUPP;
23152320

0 commit comments

Comments
 (0)