Skip to content

Commit 8c47485

Browse files
committed
Merge branch 'mlx5e-misc-fixes-2025-09-15'
Tariq Toukan says: ==================== mlx5e misc fixes 2025-09-15 This patchset provides misc bug fixes from the team to the mlx5 Eth driver. ==================== Link: https://patch.msgid.link/1757939074-617281-1-git-send-email-tariqt@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2 parents 94ff1ed + 7601a0a commit 8c47485

8 files changed

Lines changed: 44 additions & 9 deletions

File tree

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ enum {
9292
MLX5E_ACCEL_FS_ESP_FT_LEVEL = MLX5E_INNER_TTC_FT_LEVEL + 1,
9393
MLX5E_ACCEL_FS_ESP_FT_ERR_LEVEL,
9494
MLX5E_ACCEL_FS_POL_FT_LEVEL,
95+
MLX5E_ACCEL_FS_POL_MISS_FT_LEVEL,
9596
MLX5E_ACCEL_FS_ESP_FT_ROCE_LEVEL,
9697
#endif
9798
};

drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ struct mlx5e_ipsec_rx_create_attr {
185185
u32 family;
186186
int prio;
187187
int pol_level;
188+
int pol_miss_level;
188189
int sa_level;
189190
int status_level;
190191
enum mlx5_flow_namespace_type chains_ns;

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -747,6 +747,7 @@ static void ipsec_rx_create_attr_set(struct mlx5e_ipsec *ipsec,
747747
attr->family = family;
748748
attr->prio = MLX5E_NIC_PRIO;
749749
attr->pol_level = MLX5E_ACCEL_FS_POL_FT_LEVEL;
750+
attr->pol_miss_level = MLX5E_ACCEL_FS_POL_MISS_FT_LEVEL;
750751
attr->sa_level = MLX5E_ACCEL_FS_ESP_FT_LEVEL;
751752
attr->status_level = MLX5E_ACCEL_FS_ESP_FT_ERR_LEVEL;
752753
attr->chains_ns = MLX5_FLOW_NAMESPACE_KERNEL;
@@ -833,7 +834,7 @@ static int ipsec_rx_chains_create_miss(struct mlx5e_ipsec *ipsec,
833834

834835
ft_attr.max_fte = 1;
835836
ft_attr.autogroup.max_num_groups = 1;
836-
ft_attr.level = attr->pol_level;
837+
ft_attr.level = attr->pol_miss_level;
837838
ft_attr.prio = attr->prio;
838839

839840
ft = mlx5_create_auto_grouped_flow_table(attr->ns, &ft_attr);

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

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1506,12 +1506,21 @@ static const struct mlx5e_profile mlx5e_uplink_rep_profile = {
15061506
static int
15071507
mlx5e_vport_uplink_rep_load(struct mlx5_core_dev *dev, struct mlx5_eswitch_rep *rep)
15081508
{
1509-
struct mlx5e_priv *priv = netdev_priv(mlx5_uplink_netdev_get(dev));
15101509
struct mlx5e_rep_priv *rpriv = mlx5e_rep_to_rep_priv(rep);
1510+
struct net_device *netdev;
1511+
struct mlx5e_priv *priv;
1512+
int err;
1513+
1514+
netdev = mlx5_uplink_netdev_get(dev);
1515+
if (!netdev)
1516+
return 0;
15111517

1518+
priv = netdev_priv(netdev);
15121519
rpriv->netdev = priv->netdev;
1513-
return mlx5e_netdev_change_profile(priv, &mlx5e_uplink_rep_profile,
1514-
rpriv);
1520+
err = mlx5e_netdev_change_profile(priv, &mlx5e_uplink_rep_profile,
1521+
rpriv);
1522+
mlx5_uplink_netdev_put(dev, netdev);
1523+
return err;
15151524
}
15161525

15171526
static void
@@ -1638,8 +1647,16 @@ mlx5e_vport_rep_unload(struct mlx5_eswitch_rep *rep)
16381647
{
16391648
struct mlx5e_rep_priv *rpriv = mlx5e_rep_to_rep_priv(rep);
16401649
struct net_device *netdev = rpriv->netdev;
1641-
struct mlx5e_priv *priv = netdev_priv(netdev);
1642-
void *ppriv = priv->ppriv;
1650+
struct mlx5e_priv *priv;
1651+
void *ppriv;
1652+
1653+
if (!netdev) {
1654+
ppriv = rpriv;
1655+
goto free_ppriv;
1656+
}
1657+
1658+
priv = netdev_priv(netdev);
1659+
ppriv = priv->ppriv;
16431660

16441661
if (rep->vport == MLX5_VPORT_UPLINK) {
16451662
mlx5e_vport_uplink_rep_unload(rpriv);

drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1515,6 +1515,7 @@ static u32 mlx5_esw_qos_lag_link_speed_get_locked(struct mlx5_core_dev *mdev)
15151515
speed = lksettings.base.speed;
15161516

15171517
out:
1518+
mlx5_uplink_netdev_put(mdev, slave);
15181519
return speed;
15191520
}
15201521

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,9 @@
114114
#define ETHTOOL_NUM_PRIOS 11
115115
#define ETHTOOL_MIN_LEVEL (KERNEL_MIN_LEVEL + ETHTOOL_NUM_PRIOS)
116116
/* Vlan, mac, ttc, inner ttc, {UDP/ANY/aRFS/accel/{esp, esp_err}}, IPsec policy,
117-
* {IPsec RoCE MPV,Alias table},IPsec RoCE policy
117+
* IPsec policy miss, {IPsec RoCE MPV,Alias table},IPsec RoCE policy
118118
*/
119-
#define KERNEL_NIC_PRIO_NUM_LEVELS 10
119+
#define KERNEL_NIC_PRIO_NUM_LEVELS 11
120120
#define KERNEL_NIC_NUM_PRIOS 1
121121
/* One more level for tc, and one more for promisc */
122122
#define KERNEL_MIN_LEVEL (KERNEL_NIC_PRIO_NUM_LEVELS + 2)

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,20 @@ int mlx5_crdump_collect(struct mlx5_core_dev *dev, u32 *cr_data);
4747

4848
static inline struct net_device *mlx5_uplink_netdev_get(struct mlx5_core_dev *mdev)
4949
{
50-
return mdev->mlx5e_res.uplink_netdev;
50+
struct mlx5e_resources *mlx5e_res = &mdev->mlx5e_res;
51+
struct net_device *netdev;
52+
53+
mutex_lock(&mlx5e_res->uplink_netdev_lock);
54+
netdev = mlx5e_res->uplink_netdev;
55+
netdev_hold(netdev, &mlx5e_res->tracker, GFP_KERNEL);
56+
mutex_unlock(&mlx5e_res->uplink_netdev_lock);
57+
return netdev;
58+
}
59+
60+
static inline void mlx5_uplink_netdev_put(struct mlx5_core_dev *mdev,
61+
struct net_device *netdev)
62+
{
63+
netdev_put(netdev, &mdev->mlx5e_res.tracker);
5164
}
5265

5366
struct mlx5_sd;

include/linux/mlx5/driver.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,7 @@ struct mlx5e_resources {
663663
bool tisn_valid;
664664
} hw_objs;
665665
struct net_device *uplink_netdev;
666+
netdevice_tracker tracker;
666667
struct mutex uplink_netdev_lock;
667668
struct mlx5_crypto_dek_priv *dek_priv;
668669
};

0 commit comments

Comments
 (0)