* [PATCH net] octeontx2-af: fix IP fragment flag corruption on custom KPU profile load
@ 2026-06-08 9:54 nshettyj
2026-06-10 15:14 ` Simon Horman
0 siblings, 1 reply; 2+ messages in thread
From: nshettyj @ 2026-06-08 9:54 UTC (permalink / raw)
To: netdev, linux-kernel
Cc: sgoutham, lcherian, gakula, hkelam, sbhatta, andrew+netdev, davem,
edumazet, kuba, pabeni, rkannoth, sumang, kirankumark, nshettyj
From: Kiran Kumar K <kirankumark@marvell.com>
npc_cn20k_apply_custom_kpu() overwrites KPU profile entries with custom
firmware values and then calls npc_cn20k_update_action_entries_n_flags()
over all entries. Since the same function already ran during default
profile initialisation, entries not overridden by the custom firmware
get their flags translated twice, corrupting the CN20K-specific values.
Fix this by extracting the per-entry translation into a helper
npc_cn20k_translate_action_flags() and calling it as each custom entry
is loaded, removing the redundant batch call at the end.
Fixes: ef992a0f12e8 ("octeontx2-af: npc: cn20k: MKEX profile support")
Cc: Suman Ghosh <sumang@marvell.com>
Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Nitin Shetty J <nshettyj@marvell.com>
---
.../ethernet/marvell/octeontx2/af/cn20k/npc.c | 72 +++++++++----------
1 file changed, 34 insertions(+), 38 deletions(-)
diff --git a/drivers/net/ethernet/marvell/octeontx2/af/cn20k/npc.c b/drivers/net/ethernet/marvell/octeontx2/af/cn20k/npc.c
index 6b3f453fd500..fe8c4ffcd8f7 100644
--- a/drivers/net/ethernet/marvell/octeontx2/af/cn20k/npc.c
+++ b/drivers/net/ethernet/marvell/octeontx2/af/cn20k/npc.c
@@ -1571,53 +1571,49 @@ static u8 npc_map2cn20k_flag(u8 flag)
return 0xff;
}
+static void npc_cn20k_translate_action_flags(struct npc_kpu_profile_action *act)
+{
+ u8 ltype, val;
+
+ if (act->lid != NPC_LID_LC)
+ return;
+
+ ltype = act->ltype;
+ if (ltype != NPC_LT_LC_IP &&
+ ltype != NPC_LT_LC_IP6 &&
+ ltype != NPC_LT_LC_IP_OPT &&
+ ltype != NPC_LT_LC_IP6_EXT)
+ return;
+
+ switch (act->flags) {
+ case NPC_F_LC_U_IP_FRAG:
+ case NPC_F_LC_U_IP6_FRAG:
+ case NPC_F_LC_L_6TO4:
+ case NPC_F_LC_L_MPLS_IN_IP:
+ case NPC_F_LC_L_IP6_TUN_IP6:
+ case NPC_F_LC_L_IP6_MPLS_IN_IP:
+ val = npc_map2cn20k_flag(act->flags);
+ if (val != 0xFF)
+ act->flags = val;
+ break;
+ default:
+ break;
+ }
+}
+
void
npc_cn20k_update_action_entries_n_flags(struct rvu *rvu,
struct npc_kpu_profile_adapter *pfl)
{
struct npc_kpu_profile_action *action;
- int entries, ltype;
- u8 flags, val;
+ int entries;
for (int i = 0; i < pfl->kpus; i++) {
action = pfl->kpu[i].action;
entries = pfl->kpu[i].action_entries;
- for (int j = 0; j < entries; j++) {
- if (action[j].lid != NPC_LID_LC)
- continue;
-
- ltype = action[j].ltype;
-
- if (ltype != NPC_LT_LC_IP &&
- ltype != NPC_LT_LC_IP6 &&
- ltype != NPC_LT_LC_IP_OPT &&
- ltype != NPC_LT_LC_IP6_EXT)
- continue;
-
- flags = action[j].flags;
-
- switch (flags) {
- case NPC_F_LC_U_IP_FRAG:
- case NPC_F_LC_U_IP6_FRAG:
- case NPC_F_LC_L_6TO4:
- case NPC_F_LC_L_MPLS_IN_IP:
- case NPC_F_LC_L_IP6_TUN_IP6:
- case NPC_F_LC_L_IP6_MPLS_IN_IP:
- val = npc_map2cn20k_flag(flags);
- if (val == 0xFF) {
- dev_err(rvu->dev,
- "%s: Error to get flag value\n",
- __func__);
- return;
- }
-
- action[j].flags = val;
- break;
- default:
- break;
- }
- }
+ for (int j = 0; j < entries; j++)
+ npc_cn20k_translate_action_flags(&action[j]);
}
}
@@ -1709,9 +1705,9 @@ int npc_cn20k_apply_custom_kpu(struct rvu *rvu,
for (entry = 0; entry < entries; entry++) {
profile->kpu[kpu].cam[entry] = cam[entry];
profile->kpu[kpu].action[entry] = action[entry];
+ npc_cn20k_translate_action_flags(&profile->kpu[kpu].action[entry]);
}
}
- npc_cn20k_update_action_entries_n_flags(rvu, profile);
return 0;
}
--
2.48.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH net] octeontx2-af: fix IP fragment flag corruption on custom KPU profile load
2026-06-08 9:54 [PATCH net] octeontx2-af: fix IP fragment flag corruption on custom KPU profile load nshettyj
@ 2026-06-10 15:14 ` Simon Horman
0 siblings, 0 replies; 2+ messages in thread
From: Simon Horman @ 2026-06-10 15:14 UTC (permalink / raw)
To: nshettyj
Cc: netdev, linux-kernel, sgoutham, lcherian, gakula, hkelam, sbhatta,
andrew+netdev, davem, edumazet, kuba, pabeni, rkannoth, sumang,
kirankumark
On Mon, Jun 08, 2026 at 03:24:55PM +0530, nshettyj@marvell.com wrote:
> From: Kiran Kumar K <kirankumark@marvell.com>
>
> npc_cn20k_apply_custom_kpu() overwrites KPU profile entries with custom
> firmware values and then calls npc_cn20k_update_action_entries_n_flags()
> over all entries. Since the same function already ran during default
> profile initialisation, entries not overridden by the custom firmware
> get their flags translated twice, corrupting the CN20K-specific values.
>
> Fix this by extracting the per-entry translation into a helper
> npc_cn20k_translate_action_flags() and calling it as each custom entry
> is loaded, removing the redundant batch call at the end.
>
> Fixes: ef992a0f12e8 ("octeontx2-af: npc: cn20k: MKEX profile support")
> Cc: Suman Ghosh <sumang@marvell.com>
> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
> Signed-off-by: Nitin Shetty J <nshettyj@marvell.com>
Reviewed-by: Simon Horman <horms@kernel.org>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-06-10 15:14 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-08 9:54 [PATCH net] octeontx2-af: fix IP fragment flag corruption on custom KPU profile load nshettyj
2026-06-10 15:14 ` Simon Horman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox