Skip to content

Commit fb63d21

Browse files
committed
Merge tag 'mlx5-fixes-2023-03-21' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux
Saeed Mahameed says: ==================== mlx5 fixes 2023-03-21 This series provides bug fixes to mlx5 driver. * tag 'mlx5-fixes-2023-03-21' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux: net/mlx5: E-Switch, Fix an Oops in error handling code net/mlx5: Read the TC mapping of all priorities on ETS query net/mlx5e: Overcome slow response for first macsec ASO WQE net/mlx5e: Initialize link speed to zero net/mlx5: Fix steering rules cleanup net/mlx5e: Block entering switchdev mode with ns inconsistency net/mlx5e: Set uplink rep as NETNS_LOCAL ==================== Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 3e212b0 + 640fcdb commit fb63d21

File tree

7 files changed

+39
-7
lines changed

7 files changed

+39
-7
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en_accel/macsec.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1412,6 +1412,7 @@ static int macsec_aso_query(struct mlx5_core_dev *mdev, struct mlx5e_macsec *mac
14121412
struct mlx5e_macsec_aso *aso;
14131413
struct mlx5_aso_wqe *aso_wqe;
14141414
struct mlx5_aso *maso;
1415+
unsigned long expires;
14151416
int err;
14161417

14171418
aso = &macsec->aso;
@@ -1425,7 +1426,13 @@ static int macsec_aso_query(struct mlx5_core_dev *mdev, struct mlx5e_macsec *mac
14251426
macsec_aso_build_wqe_ctrl_seg(aso, &aso_wqe->aso_ctrl, NULL);
14261427

14271428
mlx5_aso_post_wqe(maso, false, &aso_wqe->ctrl);
1428-
err = mlx5_aso_poll_cq(maso, false);
1429+
expires = jiffies + msecs_to_jiffies(10);
1430+
do {
1431+
err = mlx5_aso_poll_cq(maso, false);
1432+
if (err)
1433+
usleep_range(2, 10);
1434+
} while (err && time_is_after_jiffies(expires));
1435+
14291436
if (err)
14301437
goto err_out;
14311438

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,14 @@ static int mlx5e_dcbnl_ieee_getets(struct net_device *netdev,
117117
if (!MLX5_CAP_GEN(priv->mdev, ets))
118118
return -EOPNOTSUPP;
119119

120-
ets->ets_cap = mlx5_max_tc(priv->mdev) + 1;
121-
for (i = 0; i < ets->ets_cap; i++) {
120+
for (i = 0; i < IEEE_8021QAZ_MAX_TCS; i++) {
122121
err = mlx5_query_port_prio_tc(mdev, i, &ets->prio_tc[i]);
123122
if (err)
124123
return err;
124+
}
125125

126+
ets->ets_cap = mlx5_max_tc(priv->mdev) + 1;
127+
for (i = 0; i < ets->ets_cap; i++) {
126128
err = mlx5_query_port_tc_group(mdev, i, &tc_group[i]);
127129
if (err)
128130
return err;

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4150,8 +4150,12 @@ static netdev_features_t mlx5e_fix_features(struct net_device *netdev,
41504150
}
41514151
}
41524152

4153-
if (mlx5e_is_uplink_rep(priv))
4153+
if (mlx5e_is_uplink_rep(priv)) {
41544154
features = mlx5e_fix_uplink_rep_features(netdev, features);
4155+
features |= NETIF_F_NETNS_LOCAL;
4156+
} else {
4157+
features &= ~NETIF_F_NETNS_LOCAL;
4158+
}
41554159

41564160
mutex_unlock(&priv->state_lock);
41574161

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1103,8 +1103,8 @@ static void
11031103
mlx5e_hairpin_params_init(struct mlx5e_hairpin_params *hairpin_params,
11041104
struct mlx5_core_dev *mdev)
11051105
{
1106+
u32 link_speed = 0;
11061107
u64 link_speed64;
1107-
u32 link_speed;
11081108

11091109
hairpin_params->mdev = mdev;
11101110
/* set hairpin pair per each 50Gbs share of the link */

drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_ofld.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -364,8 +364,7 @@ int mlx5_esw_acl_ingress_vport_metadata_update(struct mlx5_eswitch *esw, u16 vpo
364364

365365
if (WARN_ON_ONCE(IS_ERR(vport))) {
366366
esw_warn(esw->dev, "vport(%d) invalid!\n", vport_num);
367-
err = PTR_ERR(vport);
368-
goto out;
367+
return PTR_ERR(vport);
369368
}
370369

371370
esw_acl_ingress_ofld_rules_destroy(esw, vport);

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -959,6 +959,7 @@ void mlx5_esw_vport_disable(struct mlx5_eswitch *esw, u16 vport_num)
959959
*/
960960
esw_vport_change_handle_locked(vport);
961961
vport->enabled_events = 0;
962+
esw_apply_vport_rx_mode(esw, vport, false, false);
962963
esw_vport_cleanup(esw, vport);
963964
esw->enabled_vports--;
964965

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3405,6 +3405,18 @@ static int esw_inline_mode_to_devlink(u8 mlx5_mode, u8 *mode)
34053405
return 0;
34063406
}
34073407

3408+
static bool esw_offloads_devlink_ns_eq_netdev_ns(struct devlink *devlink)
3409+
{
3410+
struct net *devl_net, *netdev_net;
3411+
struct mlx5_eswitch *esw;
3412+
3413+
esw = mlx5_devlink_eswitch_get(devlink);
3414+
netdev_net = dev_net(esw->dev->mlx5e_res.uplink_netdev);
3415+
devl_net = devlink_net(devlink);
3416+
3417+
return net_eq(devl_net, netdev_net);
3418+
}
3419+
34083420
int mlx5_devlink_eswitch_mode_set(struct devlink *devlink, u16 mode,
34093421
struct netlink_ext_ack *extack)
34103422
{
@@ -3419,6 +3431,13 @@ int mlx5_devlink_eswitch_mode_set(struct devlink *devlink, u16 mode,
34193431
if (esw_mode_from_devlink(mode, &mlx5_mode))
34203432
return -EINVAL;
34213433

3434+
if (mode == DEVLINK_ESWITCH_MODE_SWITCHDEV &&
3435+
!esw_offloads_devlink_ns_eq_netdev_ns(devlink)) {
3436+
NL_SET_ERR_MSG_MOD(extack,
3437+
"Can't change E-Switch mode to switchdev when netdev net namespace has diverged from the devlink's.");
3438+
return -EPERM;
3439+
}
3440+
34223441
mlx5_lag_disable_change(esw->dev);
34233442
err = mlx5_esw_try_lock(esw);
34243443
if (err < 0) {

0 commit comments

Comments
 (0)