Skip to content

Commit 63f428c

Browse files
committed
Merge branch 'mlx5-misc-fixes-2026-03-05'
Tariq Toukan says: ==================== mlx5 misc fixes 2026-03-05 This patchset provides misc bug fixes from the team to the mlx5 core and Eth drivers. ==================== Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents aed763a + a6413e6 commit 63f428c

4 files changed

Lines changed: 22 additions & 31 deletions

File tree

drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ static void mlx5e_reset_txqsq_cc_pc(struct mlx5e_txqsq *sq)
4747
"SQ 0x%x: cc (0x%x) != pc (0x%x)\n",
4848
sq->sqn, sq->cc, sq->pc);
4949
sq->cc = 0;
50-
sq->dma_fifo_cc = 0;
5150
sq->pc = 0;
5251
}
5352

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2912,7 +2912,7 @@ void mlx5e_ipsec_disable_events(struct mlx5e_priv *priv)
29122912
goto out;
29132913

29142914
peer_priv = mlx5_devcom_get_next_peer_data(priv->devcom, &tmp);
2915-
if (peer_priv)
2915+
if (peer_priv && peer_priv->ipsec)
29162916
complete_all(&peer_priv->ipsec->comp);
29172917

29182918
mlx5_devcom_for_each_peer_end(priv->devcom);

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

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1589,6 +1589,7 @@ mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi
15891589
struct skb_shared_info *sinfo;
15901590
u32 frag_consumed_bytes;
15911591
struct bpf_prog *prog;
1592+
u8 nr_frags_free = 0;
15921593
struct sk_buff *skb;
15931594
dma_addr_t addr;
15941595
u32 truesize;
@@ -1631,26 +1632,22 @@ mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi
16311632

16321633
prog = rcu_dereference(rq->xdp_prog);
16331634
if (prog) {
1634-
u8 nr_frags_free, old_nr_frags = sinfo->nr_frags;
1635+
u8 old_nr_frags = sinfo->nr_frags;
16351636

16361637
if (mlx5e_xdp_handle(rq, prog, mxbuf)) {
16371638
if (__test_and_clear_bit(MLX5E_RQ_FLAG_XDP_XMIT,
16381639
rq->flags)) {
16391640
struct mlx5e_wqe_frag_info *pwi;
16401641

1641-
wi -= old_nr_frags - sinfo->nr_frags;
1642-
16431642
for (pwi = head_wi; pwi < wi; pwi++)
16441643
pwi->frag_page->frags++;
16451644
}
16461645
return NULL; /* page/packet was consumed by XDP */
16471646
}
16481647

16491648
nr_frags_free = old_nr_frags - sinfo->nr_frags;
1650-
if (unlikely(nr_frags_free)) {
1651-
wi -= nr_frags_free;
1649+
if (unlikely(nr_frags_free))
16521650
truesize -= nr_frags_free * frag_info->frag_stride;
1653-
}
16541651
}
16551652

16561653
skb = mlx5e_build_linear_skb(
@@ -1666,7 +1663,7 @@ mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi
16661663

16671664
if (xdp_buff_has_frags(&mxbuf->xdp)) {
16681665
/* sinfo->nr_frags is reset by build_skb, calculate again. */
1669-
xdp_update_skb_frags_info(skb, wi - head_wi - 1,
1666+
xdp_update_skb_frags_info(skb, wi - head_wi - nr_frags_free - 1,
16701667
sinfo->xdp_frags_size, truesize,
16711668
xdp_buff_get_skb_flags(&mxbuf->xdp));
16721669

@@ -1957,14 +1954,13 @@ mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *w
19571954

19581955
if (prog) {
19591956
u8 nr_frags_free, old_nr_frags = sinfo->nr_frags;
1957+
u8 new_nr_frags;
19601958
u32 len;
19611959

19621960
if (mlx5e_xdp_handle(rq, prog, mxbuf)) {
19631961
if (__test_and_clear_bit(MLX5E_RQ_FLAG_XDP_XMIT, rq->flags)) {
19641962
struct mlx5e_frag_page *pfp;
19651963

1966-
frag_page -= old_nr_frags - sinfo->nr_frags;
1967-
19681964
for (pfp = head_page; pfp < frag_page; pfp++)
19691965
pfp->frags++;
19701966

@@ -1975,13 +1971,12 @@ mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *w
19751971
return NULL; /* page/packet was consumed by XDP */
19761972
}
19771973

1978-
nr_frags_free = old_nr_frags - sinfo->nr_frags;
1979-
if (unlikely(nr_frags_free)) {
1980-
frag_page -= nr_frags_free;
1974+
new_nr_frags = sinfo->nr_frags;
1975+
nr_frags_free = old_nr_frags - new_nr_frags;
1976+
if (unlikely(nr_frags_free))
19811977
truesize -= (nr_frags_free - 1) * PAGE_SIZE +
19821978
ALIGN(pg_consumed_bytes,
19831979
BIT(rq->mpwqe.log_stride_sz));
1984-
}
19851980

19861981
len = mxbuf->xdp.data_end - mxbuf->xdp.data;
19871982

@@ -2003,7 +1998,7 @@ mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *w
20031998
struct mlx5e_frag_page *pagep;
20041999

20052000
/* sinfo->nr_frags is reset by build_skb, calculate again. */
2006-
xdp_update_skb_frags_info(skb, frag_page - head_page,
2001+
xdp_update_skb_frags_info(skb, new_nr_frags,
20072002
sinfo->xdp_frags_size,
20082003
truesize,
20092004
xdp_buff_get_skb_flags(&mxbuf->xdp));

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

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,21 +1241,17 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
12411241
flows[peer_vport->index] = flow;
12421242
}
12431243

1244-
if (mlx5_esw_host_functions_enabled(esw->dev)) {
1245-
mlx5_esw_for_each_vf_vport(peer_esw, i, peer_vport,
1246-
mlx5_core_max_vfs(peer_dev)) {
1247-
esw_set_peer_miss_rule_source_port(esw, peer_esw,
1248-
spec,
1249-
peer_vport->vport);
1250-
1251-
flow = mlx5_add_flow_rules(mlx5_eswitch_get_slow_fdb(esw),
1252-
spec, &flow_act, &dest, 1);
1253-
if (IS_ERR(flow)) {
1254-
err = PTR_ERR(flow);
1255-
goto add_vf_flow_err;
1256-
}
1257-
flows[peer_vport->index] = flow;
1244+
mlx5_esw_for_each_vf_vport(peer_esw, i, peer_vport,
1245+
mlx5_core_max_vfs(peer_dev)) {
1246+
esw_set_peer_miss_rule_source_port(esw, peer_esw, spec,
1247+
peer_vport->vport);
1248+
flow = mlx5_add_flow_rules(mlx5_eswitch_get_slow_fdb(esw),
1249+
spec, &flow_act, &dest, 1);
1250+
if (IS_ERR(flow)) {
1251+
err = PTR_ERR(flow);
1252+
goto add_vf_flow_err;
12581253
}
1254+
flows[peer_vport->index] = flow;
12591255
}
12601256

12611257
if (mlx5_core_ec_sriov_enabled(peer_dev)) {
@@ -1347,7 +1343,8 @@ static void esw_del_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
13471343
mlx5_del_flow_rules(flows[peer_vport->index]);
13481344
}
13491345

1350-
if (mlx5_core_is_ecpf_esw_manager(peer_dev)) {
1346+
if (mlx5_core_is_ecpf_esw_manager(peer_dev) &&
1347+
mlx5_esw_host_functions_enabled(peer_dev)) {
13511348
peer_vport = mlx5_eswitch_get_vport(peer_esw, MLX5_VPORT_PF);
13521349
mlx5_del_flow_rules(flows[peer_vport->index]);
13531350
}

0 commit comments

Comments
 (0)