]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
octeontx2-af: kpu: Default profile updates
authorKiran Kumar K <kirankumark@marvell.com>
Tue, 2 Jun 2026 04:05:25 +0000 (09:35 +0530)
committerJakub Kicinski <kuba@kernel.org>
Fri, 5 Jun 2026 01:35:40 +0000 (18:35 -0700)
Add support for parsing the following:
1. fabric path header
2. tpids 0x88a8, 0x9100 and 0x9200 parsing for
   first pass and second pass packets
3. parse stacked VLANs
4. RoCEv2 header with UDP destination port 4791
5. single SBTAG parsing

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Signed-off-by: Nitin Shetty J <nshettyj@marvell.com>
Link: https://patch.msgid.link/20260602040535.3975769-1-nshettyj@marvell.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/marvell/octeontx2/af/cn20k/npc.c
drivers/net/ethernet/marvell/octeontx2/af/npc.h
drivers/net/ethernet/marvell/octeontx2/af/npc_profile.h

index 6b3f453fd5004e66345bfc2e0e594c80c56cec18..003487d7c3cfd0a270680cfadcc3a9a9bd6561b3 100644 (file)
@@ -57,7 +57,7 @@ static struct npc_mcam_kex_extr npc_mkex_extr_default = {
        .keyx_cfg = {
                /* nibble: LA..LE (ltype only) + Error code + Channel */
                [NIX_INTF_RX] = ((u64)NPC_MCAM_KEY_DYN << 32) |
-                       NPC_PARSE_NIBBLE_INTF_RX |
+                       NPC_CN20K_PARSE_NIBBLE_INTF_RX |
                                 NPC_CN20K_PARSE_NIBBLE_ERRCODE,
 
                /* nibble: LA..LE (ltype only) */
index cefc5d70f3e492ab9640cb268edb175ba61fd144..2138c044fe418bf89dae0c306a9de8d57aeed256 100644 (file)
@@ -41,6 +41,7 @@ enum npc_kpu_la_ltype {
        NPC_LT_LA_CPT_HDR,
        NPC_LT_LA_CUSTOM_L2_24B_ETHER,
        NPC_LT_LA_CUSTOM_PRE_L2_ETHER,
+       NPC_LT_LA_FP_ETHER,
        NPC_LT_LA_CUSTOM0 = 0xE,
        NPC_LT_LA_CUSTOM1 = 0xF,
 };
@@ -114,6 +115,7 @@ enum npc_kpu_le_ltype {
        NPC_LT_LE_TU_MPLS_IN_GRE,
        NPC_LT_LE_TU_NSH_IN_GRE,
        NPC_LT_LE_TU_MPLS_IN_UDP,
+       NPC_LT_LE_ROCEV2,
        NPC_LT_LE_CUSTOM0 = 0xE,
        NPC_LT_LE_CUSTOM1 = 0xF,
 };
index db74f7fdf0288331b6345954955e30cb9939b423..62902f0ad686929b35b68c2096224072adbcbcf8 100644 (file)
 #define NPC_ETYPE_PTP          0x88f7
 #define NPC_ETYPE_FCOE         0x8906
 #define NPC_ETYPE_QINQ         0x9100
+#define NPC_ETYPE_QINQ2                0x9200
 #define NPC_ETYPE_TRANS_ETH_BR 0x6558
 #define NPC_ETYPE_PPP          0x880b
 #define NPC_ETYPE_NSH          0x894f
 #define NPC_ETYPE_DSA          0xdada
 #define NPC_ETYPE_PPPOE                0x8864
 #define NPC_ETYPE_ERSPA                0x88be
+#define NPC_ETYPE_FP           0x8903
 
 #define NPC_PPP_IP             0x0021
 #define NPC_PPP_IP6            0x0057
@@ -73,6 +75,7 @@
 #define NPC_UDP_PORT_GENEVE    6081
 #define NPC_UDP_PORT_MPLS      6635
 #define NPC_UDP_PORT_ESP       4500
+#define NPC_UDP_PORT_ROCEV2     4791
 
 #define NPC_VXLANGPE_NP_IP     0x1
 #define NPC_VXLANGPE_NP_IP6    0x2
@@ -191,6 +194,8 @@ enum npc_kpu_parser_state {
        NPC_S_KPU2_EXDSA,
        NPC_S_KPU2_CPT_CTAG,
        NPC_S_KPU2_CPT_QINQ,
+       NPC_S_KPU2_CPT_CTAG2,
+       NPC_S_KPU2_CPT_SBTAG,
        NPC_S_KPU2_MT,
        NPC_S_KPU3_CTAG,
        NPC_S_KPU3_STAG,
@@ -200,6 +205,9 @@ enum npc_kpu_parser_state {
        NPC_S_KPU3_QINQ_C,
        NPC_S_KPU3_DSA,
        NPC_S_KPU3_VLAN_EXDSA,
+       NPC_S_KPU3_CPT_QINQ,
+       NPC_S_KPU3_CPT_CTAG,
+       NPC_S_KPU3_CPT_STAG,
        NPC_S_KPU4_MPLS,
        NPC_S_KPU4_NSH,
        NPC_S_KPU4_FDSA,
@@ -281,6 +289,14 @@ enum npc_kpu_parser_state {
        NPC_S_LAST /* has to be the last item */
 };
 
+enum npc_kpu9_extra_parser_state {
+       NPC_S_KPU9_ROCEV2 = NPC_S_LAST + 6,
+};
+
+enum npc_kpu4_extra_parser_state {
+       NPC_S_KPU4_SBTAG_PTP = NPC_S_LAST + 7,
+};
+
 enum npc_kpu_la_uflag {
        NPC_F_LA_U_HAS_TAG = 0x10,
        NPC_F_LA_U_HAS_IH_NIX = 0x20,
@@ -504,7 +520,7 @@ enum NPC_ERRLEV_E {
 static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -513,7 +529,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -522,7 +538,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -531,7 +547,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -540,7 +556,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -549,7 +565,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -558,7 +574,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -567,7 +583,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -576,7 +592,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -585,7 +601,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -594,7 +610,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -603,7 +619,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -612,7 +628,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -621,7 +637,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -630,7 +646,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -639,7 +655,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -648,7 +664,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -657,7 +673,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -666,7 +682,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -675,7 +691,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -684,7 +700,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -693,7 +709,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -702,7 +718,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -711,7 +727,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -720,7 +736,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -729,7 +745,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -738,7 +754,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -747,7 +763,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -756,7 +772,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -765,7 +781,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -774,7 +790,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -783,7 +799,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -792,7 +808,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -801,7 +817,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -810,7 +826,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -819,7 +835,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -828,7 +844,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -837,7 +853,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -846,7 +862,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -855,7 +871,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -864,7 +880,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -873,7 +889,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -882,7 +898,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -891,7 +907,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -900,7 +916,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -909,7 +925,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -918,7 +934,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -927,7 +943,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -936,7 +952,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -945,7 +961,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -954,7 +970,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -963,7 +979,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -972,7 +988,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -981,7 +997,7 @@ static struct npc_kpu_profile_action ikpu_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               12, 16, 20, 0, 0,
+               12, 16, 28, 0, 0,
                NPC_S_KPU1_ETHER, 0, 0,
                NPC_LID_LA, NPC_LT_NA,
                0,
@@ -1087,6 +1103,141 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] __maybe_unused = {
        NPC_KPU_NOP_CAM,
        NPC_KPU_NOP_CAM,
        NPC_KPU_NOP_CAM,
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_FP,
+               0xffff,
+               0x0000,
+               0x0000,
+               NPC_ETYPE_IP,
+               0xffff,
+       },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_FP,
+               0xffff,
+               0x0000,
+               0x0000,
+               NPC_ETYPE_IP6,
+               0xffff,
+       },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_FP,
+               0xffff,
+               0x0000,
+               0x0000,
+               NPC_ETYPE_ARP,
+               0xffff,
+       },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_FP,
+               0xffff,
+               0x0000,
+               0x0000,
+               NPC_ETYPE_RARP,
+               0xffff,
+       },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_FP,
+               0xffff,
+               0x0000,
+               0x0000,
+               NPC_ETYPE_PTP,
+               0xffff,
+       },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_FP,
+               0xffff,
+               0x0000,
+               0x0000,
+               NPC_ETYPE_FCOE,
+               0xffff,
+       },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_FP,
+               0xffff,
+               0x0000,
+               0x0000,
+               NPC_ETYPE_CTAG,
+               0xffff,
+       },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_FP,
+               0xffff,
+               0x0000,
+               0x0000,
+               NPC_ETYPE_SBTAG,
+               0xffff,
+       },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_FP,
+               0xffff,
+               0x0000,
+               0x0000,
+               NPC_ETYPE_QINQ,
+               0xffff,
+       },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_FP,
+               0xffff,
+               0x0000,
+               0x0000,
+               NPC_ETYPE_ETAG,
+               0xffff,
+       },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_FP,
+               0xffff,
+               0x0000,
+               0x0000,
+               NPC_ETYPE_MPLSU,
+               0xffff,
+       },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_FP,
+               0xffff,
+               0x0000,
+               0x0000,
+               NPC_ETYPE_MPLSM,
+               0xffff,
+       },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_FP,
+               0xffff,
+               0x0000,
+               0x0000,
+               NPC_ETYPE_NSH,
+               0xffff,
+       },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_FP,
+               0xffff,
+               0x0000,
+               0x0000,
+               NPC_ETYPE_DSA,
+               0xffff,
+       },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_FP,
+               0xffff,
+               0x0000,
+               0x0000,
+               NPC_ETYPE_PPPOE,
+               0xffff,
+       },
        {
                NPC_S_KPU1_ETHER, 0xff,
                NPC_ETYPE_IP,
@@ -1159,6 +1310,15 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] __maybe_unused = {
                0x0000,
                0x0000,
        },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_SBTAG,
+               0xffff,
+               NPC_ETYPE_PTP,
+               0xffff,
+               0x0000,
+               0x0000,
+       },
        {
                NPC_S_KPU1_ETHER, 0xff,
                NPC_ETYPE_SBTAG,
@@ -1177,6 +1337,15 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] __maybe_unused = {
                0x0000,
                0x0000,
        },
+       {
+               NPC_S_KPU1_ETHER, 0xff,
+               NPC_ETYPE_QINQ2,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
        {
                NPC_S_KPU1_ETHER, 0xff,
                NPC_ETYPE_ETAG,
@@ -1852,6 +2021,15 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] __maybe_unused = {
                0x0000,
                0x0000,
        },
+       {
+               NPC_S_KPU1_CPT_HDR, 0xff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               0x0000,
+               0x0000,
+       },
        {
                NPC_S_KPU1_CPT_HDR, 0xff,
                NPC_ETYPE_CTAG,
@@ -1870,6 +2048,24 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] __maybe_unused = {
                0x0000,
                0x0000,
        },
+       {
+               NPC_S_KPU1_CPT_HDR, 0xff,
+               NPC_ETYPE_QINQ2,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU1_CPT_HDR, 0xff,
+               NPC_ETYPE_SBTAG,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
        {
                NPC_S_KPU1_VLAN_EXDSA, 0xff,
                NPC_ETYPE_CTAG,
@@ -2005,6 +2201,33 @@ static struct npc_kpu_profile_cam kpu2_cam_entries[] __maybe_unused = {
                NPC_PPP_IP6,
                0xffff,
        },
+       {
+               NPC_S_KPU2_CTAG, 0xff,
+               NPC_ETYPE_SBTAG,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU2_CTAG, 0xff,
+               NPC_ETYPE_QINQ,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU2_CTAG, 0xff,
+               NPC_ETYPE_QINQ2,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
        {
                NPC_S_KPU2_CTAG, 0xff,
                0x0000,
@@ -2230,6 +2453,24 @@ static struct npc_kpu_profile_cam kpu2_cam_entries[] __maybe_unused = {
                0x0000,
                0x0000,
        },
+       {
+               NPC_S_KPU2_SBTAG, 0xff,
+               NPC_ETYPE_IP,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU2_SBTAG, 0xff,
+               NPC_ETYPE_IP6,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
        {
                NPC_S_KPU2_SBTAG, 0xff,
                0x0000,
@@ -2347,6 +2588,24 @@ static struct npc_kpu_profile_cam kpu2_cam_entries[] __maybe_unused = {
                0x0000,
                0x0000,
        },
+       {
+               NPC_S_KPU2_QINQ, 0xff,
+               NPC_ETYPE_IP,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU2_QINQ, 0xff,
+               NPC_ETYPE_IP6,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
        {
                NPC_S_KPU2_QINQ, 0xff,
                0x0000,
@@ -2437,6 +2696,15 @@ static struct npc_kpu_profile_cam kpu2_cam_entries[] __maybe_unused = {
                0x0000,
                0x0000,
        },
+       {
+               NPC_S_KPU2_ETAG, 0xff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               0x0000,
+               0x0000,
+       },
        {
                NPC_S_KPU2_ETAG, 0xff,
                NPC_ETYPE_CTAG,
@@ -2807,7 +3075,43 @@ static struct npc_kpu_profile_cam kpu2_cam_entries[] __maybe_unused = {
                0x0000,
        },
        {
-               NPC_S_KPU2_MT, 0xff,
+               NPC_S_KPU2_CPT_QINQ, 0xff,
+               NPC_ETYPE_IP,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU2_CPT_QINQ, 0xff,
+               NPC_ETYPE_IP6,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU2_CPT_CTAG2, 0xff,
+               NPC_ETYPE_IP,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU2_CPT_CTAG2, 0xff,
+               NPC_ETYPE_IP6,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU2_CPT_CTAG2, 0xff,
                NPC_ETYPE_CTAG,
                0xffff,
                0x0000,
@@ -2816,7 +3120,7 @@ static struct npc_kpu_profile_cam kpu2_cam_entries[] __maybe_unused = {
                0x0000,
        },
        {
-               NPC_S_KPU2_MT, 0xff,
+               NPC_S_KPU2_CPT_CTAG2, 0xff,
                0x0000,
                0x0000,
                0x0000,
@@ -2825,7 +3129,61 @@ static struct npc_kpu_profile_cam kpu2_cam_entries[] __maybe_unused = {
                0x0000,
        },
        {
-               NPC_S_NA, 0X00,
+               NPC_S_KPU2_CPT_SBTAG, 0xff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               NPC_ETYPE_IP,
+               0xffff,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU2_CPT_SBTAG, 0xff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               NPC_ETYPE_IP6,
+               0xffff,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU2_CPT_SBTAG, 0xff,
+               NPC_ETYPE_SBTAG,
+               0xffff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU2_CPT_SBTAG, 0xff,
+               NPC_ETYPE_IP,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU2_CPT_SBTAG, 0xff,
+               NPC_ETYPE_IP6,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU2_MT, 0xff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU2_MT, 0xff,
                0x0000,
                0x0000,
                0x0000,
@@ -3256,6 +3614,42 @@ static struct npc_kpu_profile_cam kpu3_cam_entries[] __maybe_unused = {
                0x0000,
                0x0000,
        },
+       {
+               NPC_S_KPU3_CTAG_C, 0xff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               NPC_ETYPE_IP,
+               0xffff,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU3_CTAG_C, 0xff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               NPC_ETYPE_IP6,
+               0xffff,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU3_CTAG_C, 0xff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               NPC_ETYPE_MPLSU,
+               0xffff,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU3_CTAG_C, 0xff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               NPC_ETYPE_MPLSM,
+               0xffff,
+               0x0000,
+               0x0000,
+       },
        {
                NPC_S_KPU3_CTAG_C, 0xff,
                NPC_ETYPE_IP,
@@ -3806,7 +4200,43 @@ static struct npc_kpu_profile_cam kpu3_cam_entries[] __maybe_unused = {
                0x0000,
        },
        {
-               NPC_S_NA, 0X00,
+               NPC_S_KPU3_CPT_QINQ, 0xff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               NPC_ETYPE_IP,
+               0xffff,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU3_CPT_QINQ, 0xff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               NPC_ETYPE_IP6,
+               0xffff,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU3_CPT_QINQ, 0xff,
+               NPC_ETYPE_IP,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU3_CPT_QINQ, 0xff,
+               NPC_ETYPE_IP6,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU3_CPT_QINQ, 0xff,
                0x0000,
                0x0000,
                0x0000,
@@ -3814,6 +4244,60 @@ static struct npc_kpu_profile_cam kpu3_cam_entries[] __maybe_unused = {
                0x0000,
                0x0000,
        },
+       {
+               NPC_S_KPU3_CPT_CTAG, 0xff,
+               NPC_ETYPE_IP,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU3_CPT_CTAG, 0xff,
+               NPC_ETYPE_IP6,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU3_CPT_STAG, 0xff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               NPC_ETYPE_IP,
+               0xffff,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU3_CPT_STAG, 0xff,
+               NPC_ETYPE_CTAG,
+               0xffff,
+               NPC_ETYPE_IP6,
+               0xffff,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU3_CPT_STAG, 0xff,
+               NPC_ETYPE_IP,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU3_CPT_STAG, 0xff,
+               NPC_ETYPE_IP6,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
 };
 
 static struct npc_kpu_profile_cam kpu4_cam_entries[] __maybe_unused = {
@@ -4120,6 +4604,15 @@ static struct npc_kpu_profile_cam kpu4_cam_entries[] __maybe_unused = {
                0x0000,
                0x0000,
        },
+       {
+               NPC_S_KPU4_SBTAG_PTP, 0xff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
        {
                NPC_S_NA, 0X00,
                0x0000,
@@ -6397,6 +6890,15 @@ static struct npc_kpu_profile_cam kpu8_cam_entries[] __maybe_unused = {
                0x0000,
                0x0000,
        },
+       {
+               NPC_S_KPU8_UDP, 0xff,
+               NPC_UDP_PORT_ROCEV2,
+               0xffff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
        {
                NPC_S_KPU8_UDP, 0xff,
                NPC_UDP_PORT_VXLAN,
@@ -7252,6 +7754,15 @@ static struct npc_kpu_profile_cam kpu9_cam_entries[] __maybe_unused = {
                0x0000,
                0x0000,
        },
+       {
+               NPC_S_KPU9_ROCEV2, 0xff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
        {
                NPC_S_KPU9_VXLAN, 0xff,
                0x0000,
@@ -8080,6 +8591,24 @@ static struct npc_kpu_profile_cam kpu12_cam_entries[] __maybe_unused = {
        NPC_KPU_NOP_CAM,
        NPC_KPU_NOP_CAM,
        NPC_KPU_NOP_CAM,
+       {
+               NPC_S_KPU12_TU_IP, 0xff,
+               0x0000,
+               NPC_IP_TTL_MASK,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+       },
+       {
+               NPC_S_KPU12_TU_IP, 0xff,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0000,
+               0x0001,
+               NPC_IP_HDR_FRAGOFF,
+       },
        {
                NPC_S_KPU12_TU_IP, 0xff,
                NPC_IPNH_TCP,
@@ -8087,7 +8616,7 @@ static struct npc_kpu_profile_cam kpu12_cam_entries[] __maybe_unused = {
                NPC_IP_VER_4 | NPC_IP_HDR_LEN_5,
                NPC_IP_VER_MASK | NPC_IP_HDR_LEN_MASK,
                0x0000,
-               0x0000,
+               NPC_IP_HDR_MF | NPC_IP_HDR_FRAGOFF,
        },
        {
                NPC_S_KPU12_TU_IP, 0xff,
@@ -8096,7 +8625,7 @@ static struct npc_kpu_profile_cam kpu12_cam_entries[] __maybe_unused = {
                NPC_IP_VER_4 | NPC_IP_HDR_LEN_5,
                NPC_IP_VER_MASK | NPC_IP_HDR_LEN_MASK,
                0x0000,
-               0x0000,
+               NPC_IP_HDR_MF | NPC_IP_HDR_FRAGOFF,
        },
        {
                NPC_S_KPU12_TU_IP, 0xff,
@@ -8105,7 +8634,7 @@ static struct npc_kpu_profile_cam kpu12_cam_entries[] __maybe_unused = {
                NPC_IP_VER_4 | NPC_IP_HDR_LEN_5,
                NPC_IP_VER_MASK | NPC_IP_HDR_LEN_MASK,
                0x0000,
-               0x0000,
+               NPC_IP_HDR_MF | NPC_IP_HDR_FRAGOFF,
        },
        {
                NPC_S_KPU12_TU_IP, 0xff,
@@ -8114,7 +8643,7 @@ static struct npc_kpu_profile_cam kpu12_cam_entries[] __maybe_unused = {
                NPC_IP_VER_4 | NPC_IP_HDR_LEN_5,
                NPC_IP_VER_MASK | NPC_IP_HDR_LEN_MASK,
                0x0000,
-               0x0000,
+               NPC_IP_HDR_MF | NPC_IP_HDR_FRAGOFF,
        },
        {
                NPC_S_KPU12_TU_IP, 0xff,
@@ -8123,7 +8652,7 @@ static struct npc_kpu_profile_cam kpu12_cam_entries[] __maybe_unused = {
                NPC_IP_VER_4 | NPC_IP_HDR_LEN_5,
                NPC_IP_VER_MASK | NPC_IP_HDR_LEN_MASK,
                0x0000,
-               0x0000,
+               NPC_IP_HDR_MF | NPC_IP_HDR_FRAGOFF,
        },
        {
                NPC_S_KPU12_TU_IP, 0xff,
@@ -8132,7 +8661,7 @@ static struct npc_kpu_profile_cam kpu12_cam_entries[] __maybe_unused = {
                NPC_IP_VER_4 | NPC_IP_HDR_LEN_5,
                NPC_IP_VER_MASK | NPC_IP_HDR_LEN_MASK,
                0x0000,
-               0x0000,
+               NPC_IP_HDR_MF | NPC_IP_HDR_FRAGOFF,
        },
        {
                NPC_S_KPU12_TU_IP, 0xff,
@@ -8141,7 +8670,16 @@ static struct npc_kpu_profile_cam kpu12_cam_entries[] __maybe_unused = {
                NPC_IP_VER_4 | NPC_IP_HDR_LEN_5,
                NPC_IP_VER_MASK | NPC_IP_HDR_LEN_MASK,
                0x0000,
+               NPC_IP_HDR_MF | NPC_IP_HDR_FRAGOFF,
+       },
+       {
+               NPC_S_KPU12_TU_IP, 0xff,
+               0x0000,
+               0x0000,
+               NPC_IP_VER_4 | NPC_IP_HDR_LEN_5,
+               NPC_IP_VER_MASK | NPC_IP_HDR_LEN_MASK,
                0x0000,
+               NPC_IP_HDR_MF | NPC_IP_HDR_FRAGOFF,
        },
        {
                NPC_S_KPU12_TU_IP, 0xff,
@@ -8647,6 +9185,126 @@ static struct npc_kpu_profile_action kpu1_action_entries[] __maybe_unused = {
        NPC_KPU_NOP_ACTION,
        NPC_KPU_NOP_ACTION,
        NPC_KPU_NOP_ACTION,
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 0, 6, 3, 0,
+               NPC_S_KPU5_IP, 30, 1,
+               NPC_LID_LA, NPC_LT_LA_FP_ETHER,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               6, 0, 42, 3, 0,
+               NPC_S_KPU5_IP6, 30, 1,
+               NPC_LID_LA, NPC_LT_LA_FP_ETHER,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               0, 0, 0, 3, 0,
+               NPC_S_KPU5_ARP, 30, 1,
+               NPC_LID_LA, NPC_LT_LA_FP_ETHER,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               0, 0, 0, 3, 0,
+               NPC_S_KPU5_RARP, 30, 1,
+               NPC_LID_LA, NPC_LT_LA_FP_ETHER,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               0, 0, 0, 3, 0,
+               NPC_S_KPU5_PTP, 30, 1,
+               NPC_LID_LA, NPC_LT_LA_FP_ETHER,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               0, 0, 0, 3, 0,
+               NPC_S_KPU5_FCOE, 30, 1,
+               NPC_LID_LA, NPC_LT_LA_FP_ETHER,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               4, 8, 12, 0, 0,
+               NPC_S_KPU2_CTAG, 28, 1,
+               NPC_LID_LA, NPC_LT_LA_FP_ETHER,
+               NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               4, 8, 22, 0, 0,
+               NPC_S_KPU2_SBTAG, 28, 1,
+               NPC_LID_LA, NPC_LT_LA_FP_ETHER,
+               NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               4, 8, 0, 0, 0,
+               NPC_S_KPU2_QINQ, 28, 1,
+               NPC_LID_LA, NPC_LT_LA_FP_ETHER,
+               NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 12, 26, 0, 0,
+               NPC_S_KPU2_ETAG, 28, 1,
+               NPC_LID_LA, NPC_LT_LA_FP_ETHER,
+               NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_ETAG,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               2, 6, 10, 2, 0,
+               NPC_S_KPU4_MPLS, 30, 1,
+               NPC_LID_LA, NPC_LT_LA_FP_ETHER,
+               NPC_F_LA_L_WITH_MPLS,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               2, 6, 10, 2, 0,
+               NPC_S_KPU4_MPLS, 30, 1,
+               NPC_LID_LA, NPC_LT_LA_FP_ETHER,
+               NPC_F_LA_L_WITH_MPLS,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               2, 0, 0, 2, 0,
+               NPC_S_KPU4_NSH, 30, 1,
+               NPC_LID_LA, NPC_LT_LA_FP_ETHER,
+               NPC_F_LA_L_WITH_NSH,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 12, 0, 1, 0,
+               NPC_S_KPU3_DSA, 28, 1,
+               NPC_LID_LA, NPC_LT_LA_FP_ETHER,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 12, 0, 2, 0,
+               NPC_S_KPU4_PPPOE, 28, 1,
+               NPC_LID_LA, NPC_LT_LA_FP_ETHER,
+               0,
+               0, 0, 0, 0,
+       },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
                8, 0, 6, 3, 0,
@@ -8711,6 +9369,14 @@ static struct npc_kpu_profile_action kpu1_action_entries[] __maybe_unused = {
                NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
                0, 0, 0, 0,
        },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               4, 8, 22, 2, 0,
+               NPC_S_KPU4_SBTAG_PTP, 12, 1,
+               NPC_LID_LA, NPC_LT_LA_ETHER,
+               NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
+               0, 0, 0, 0,
+       },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
                4, 8, 22, 0, 0,
@@ -8727,6 +9393,14 @@ static struct npc_kpu_profile_action kpu1_action_entries[] __maybe_unused = {
                NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
                0, 0, 0, 0,
        },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               4, 8, 0, 0, 0,
+               NPC_S_KPU2_QINQ, 12, 1,
+               NPC_LID_LA, NPC_LT_LA_ETHER,
+               NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
+               0, 0, 0, 0,
+       },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
                8, 12, 26, 0, 0,
@@ -9346,6 +10020,14 @@ static struct npc_kpu_profile_action kpu1_action_entries[] __maybe_unused = {
                0,
                0, 0, 0, 0,
        },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 12, 0, 0, 0,
+               NPC_S_KPU2_CPT_CTAG2, 12, 1,
+               NPC_LID_LA, NPC_LT_LA_CPT_HDR,
+               NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
+               0, 0, 0, 0,
+       },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
                4, 8, 0, 0, 0,
@@ -9362,6 +10044,22 @@ static struct npc_kpu_profile_action kpu1_action_entries[] __maybe_unused = {
                NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
                0, 0, 0, 0,
        },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               4, 8, 0, 0, 0,
+               NPC_S_KPU2_CPT_QINQ, 12, 1,
+               NPC_LID_LA, NPC_LT_LA_CPT_HDR,
+               NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               4, 8, 22, 0, 0,
+               NPC_S_KPU2_CPT_SBTAG, 12, 1,
+               NPC_LID_LA, NPC_LT_LA_CPT_HDR,
+               NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
+               0, 0, 0, 0,
+       },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
                12, 0, 0, 1, 0,
@@ -9483,6 +10181,30 @@ static struct npc_kpu_profile_action kpu2_action_entries[] __maybe_unused = {
                0,
                0, 0, 0, 0,
        },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               2, 6, 0, 0, 0,
+               NPC_S_KPU3_STAG, 6, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_STAG_STAG,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               2, 6, 0, 0, 0,
+               NPC_S_KPU3_STAG, 6, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_STAG_STAG,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               2, 6, 0, 0, 0,
+               NPC_S_KPU3_STAG, 6, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_STAG_STAG,
+               0, 0, 0, 0,
+       },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
                0, 0, 0, 0, 1,
@@ -9683,6 +10405,22 @@ static struct npc_kpu_profile_action kpu2_action_entries[] __maybe_unused = {
                NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_ITAG_UNK,
                0, 0, 0, 0,
        },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 0, 6, 2, 0,
+               NPC_S_KPU5_IP, 6, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_CTAG,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               6, 0, 42, 2, 0,
+               NPC_S_KPU5_IP6, 6, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_CTAG,
+               0, 0, 0, 0,
+       },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
                0, 0, 0, 0, 1,
@@ -9787,6 +10525,22 @@ static struct npc_kpu_profile_action kpu2_action_entries[] __maybe_unused = {
                NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_QINQ_QINQ,
                0, 0, 0, 0,
        },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 0, 6, 2, 0,
+               NPC_S_KPU5_IP, 6, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_CTAG,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               6, 0, 42, 2, 0,
+               NPC_S_KPU5_IP6, 6, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_CTAG,
+               0, 0, 0, 0,
+       },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
                0, 0, 0, 0, 1,
@@ -9869,8 +10623,16 @@ static struct npc_kpu_profile_action kpu2_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               2, 0, 0, 0, 0,
-               NPC_S_KPU3_CTAG, 10, 1,
+               0, 4, 8, 0, 0,
+               NPC_S_KPU3_CTAG_C, 16, 1,
+               NPC_LID_LB, NPC_LT_LB_ETAG,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_CTAG,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               0, 4, 8, 0, 0,
+               NPC_S_KPU3_CTAG_C, 12, 1,
                NPC_LID_LB, NPC_LT_LB_ETAG,
                NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_CTAG,
                0, 0, 0, 0,
@@ -10109,88 +10871,176 @@ static struct npc_kpu_profile_action kpu2_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               6, 0, 42, 2, 0,
-               NPC_S_KPU5_IP6, 10, 1,
-               NPC_LID_LB, NPC_LT_LB_EXDSA,
-               NPC_F_LB_L_EXDSA,
+               6, 0, 42, 2, 0,
+               NPC_S_KPU5_IP6, 10, 1,
+               NPC_LID_LB, NPC_LT_LB_EXDSA,
+               NPC_F_LB_L_EXDSA,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               0, 0, 0, 2, 0,
+               NPC_S_KPU5_ARP, 10, 1,
+               NPC_LID_LB, NPC_LT_LB_EXDSA,
+               NPC_F_LB_L_EXDSA,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 0, 6, 2, 0,
+               NPC_S_KPU5_RARP, 10, 1,
+               NPC_LID_LB, NPC_LT_LB_EXDSA,
+               NPC_F_LB_L_EXDSA,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               6, 0, 0, 2, 0,
+               NPC_S_KPU5_PTP, 10, 1,
+               NPC_LID_LB, NPC_LT_LB_EXDSA,
+               NPC_F_LB_L_EXDSA,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               0, 0, 0, 2, 0,
+               NPC_S_KPU5_FCOE, 10, 1,
+               NPC_LID_LB, NPC_LT_LB_EXDSA,
+               NPC_F_LB_L_EXDSA,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               4, 8, 0, 0, 0,
+               NPC_S_KPU3_CTAG, 8, 1,
+               NPC_LID_LB, NPC_LT_LB_EXDSA_VLAN,
+               NPC_F_LB_L_EXDSA_VLAN,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               0, 0, 0, 0, 1,
+               NPC_S_NA, 0, 1,
+               NPC_LID_LB, NPC_LT_LB_EXDSA,
+               NPC_F_LB_U_UNK_ETYPE | NPC_F_LB_L_EXDSA,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 0, 6, 2, 0,
+               NPC_S_KPU5_CPT_IP, 6, 1,
+               NPC_LID_LB, NPC_LT_LB_CTAG,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               6, 0, 0, 2, 0,
+               NPC_S_KPU5_CPT_IP6, 6, 1,
+               NPC_LID_LB, NPC_LT_LB_CTAG,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 0, 6, 2, 0,
+               NPC_S_KPU5_CPT_IP, 10, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_CTAG,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               6, 0, 0, 2, 0,
+               NPC_S_KPU5_CPT_IP6, 10, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_CTAG,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 0, 6, 2, 0,
+               NPC_S_KPU5_CPT_IP, 6, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_CTAG,
                0, 0, 0, 0,
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               0, 0, 0, 2, 0,
-               NPC_S_KPU5_ARP, 10, 1,
-               NPC_LID_LB, NPC_LT_LB_EXDSA,
-               NPC_F_LB_L_EXDSA,
+               6, 0, 42, 2, 0,
+               NPC_S_KPU5_CPT_IP6, 6, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_CTAG,
                0, 0, 0, 0,
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
                8, 0, 6, 2, 0,
-               NPC_S_KPU5_RARP, 10, 1,
-               NPC_LID_LB, NPC_LT_LB_EXDSA,
-               NPC_F_LB_L_EXDSA,
+               NPC_S_KPU5_CPT_IP, 10, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               0,
                0, 0, 0, 0,
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               6, 0, 0, 2, 0,
-               NPC_S_KPU5_PTP, 10, 1,
-               NPC_LID_LB, NPC_LT_LB_EXDSA,
-               NPC_F_LB_L_EXDSA,
+               6, 0, 42, 2, 0,
+               NPC_S_KPU5_CPT_IP6, 10, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               0,
                0, 0, 0, 0,
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               0, 0, 0, 2, 0,
-               NPC_S_KPU5_FCOE, 10, 1,
-               NPC_LID_LB, NPC_LT_LB_EXDSA,
-               NPC_F_LB_L_EXDSA,
+               2, 6, 0, 0, 0,
+               NPC_S_KPU3_CPT_QINQ, 10, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_QINQ_QINQ,
                0, 0, 0, 0,
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               4, 8, 0, 0, 0,
-               NPC_S_KPU3_CTAG, 8, 1,
-               NPC_LID_LB, NPC_LT_LB_EXDSA_VLAN,
-               NPC_F_LB_L_EXDSA_VLAN,
+               2, 6, 0, 0, 1,
+               NPC_S_KPU3_CPT_QINQ, 10, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_QINQ_QINQ,
                0, 0, 0, 0,
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               0, 0, 0, 0, 1,
-               NPC_S_NA, 0, 1,
-               NPC_LID_LB, NPC_LT_LB_EXDSA,
-               NPC_F_LB_U_UNK_ETYPE | NPC_F_LB_L_EXDSA,
+               8, 0, 6, 2, 0,
+               NPC_S_KPU5_CPT_IP, 10, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_CTAG,
                0, 0, 0, 0,
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               8, 0, 6, 2, 0,
-               NPC_S_KPU5_CPT_IP, 6, 1,
-               NPC_LID_LB, NPC_LT_LB_CTAG,
-               0,
+               6, 0, 42, 2, 0,
+               NPC_S_KPU5_CPT_IP6, 10, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_CTAG,
                0, 0, 0, 0,
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               6, 0, 0, 2, 0,
-               NPC_S_KPU5_CPT_IP6, 6, 1,
-               NPC_LID_LB, NPC_LT_LB_CTAG,
-               0,
+               2, 6, 0, 0, 0,
+               NPC_S_KPU3_CPT_CTAG, 10, 1,
+               NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
+               NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_STAG_CTAG,
                0, 0, 0, 0,
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
                8, 0, 6, 2, 0,
-               NPC_S_KPU5_CPT_IP, 10, 1,
+               NPC_S_KPU5_CPT_IP, 6, 1,
                NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
                NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_CTAG,
                0, 0, 0, 0,
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               6, 0, 0, 2, 0,
-               NPC_S_KPU5_CPT_IP6, 10, 1,
+               6, 0, 42, 2, 0,
+               NPC_S_KPU5_CPT_IP6, 6, 1,
                NPC_LID_LB, NPC_LT_LB_STAG_QINQ,
                NPC_F_LB_U_MORE_TAG | NPC_F_LB_L_WITH_CTAG,
                0, 0, 0, 0,
@@ -10211,14 +11061,6 @@ static struct npc_kpu_profile_action kpu2_action_entries[] __maybe_unused = {
                0,
                0, 0, 0, 0,
        },
-       {
-               NPC_ERRLEV_LB, NPC_EC_L2_K3,
-               0, 0, 0, 0, 1,
-               NPC_S_NA, 0, 0,
-               NPC_LID_LB, NPC_LT_NA,
-               0,
-               0, 0, 0, 0,
-       },
 };
 
 static struct npc_kpu_profile_action kpu3_action_entries[] __maybe_unused = {
@@ -10589,13 +11431,45 @@ static struct npc_kpu_profile_action kpu3_action_entries[] __maybe_unused = {
                0, 0, 0, 0,
        },
        {
-               NPC_ERRLEV_LB, NPC_EC_L2_K3_ETYPE_UNK,
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
                0, 0, 0, 0, 1,
                NPC_S_NA, 0, 0,
                NPC_LID_LB, NPC_LT_NA,
                0,
                0, 0, 0, 0,
        },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 0, 6, 1, 0,
+               NPC_S_KPU5_IP, 6, 0,
+               NPC_LID_LB, NPC_LT_NA,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               6, 0, 42, 1, 0,
+               NPC_S_KPU5_IP6, 6, 0,
+               NPC_LID_LB, NPC_LT_NA,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               2, 6, 10, 0, 0,
+               NPC_S_KPU4_MPLS, 6, 0,
+               NPC_LID_LB, NPC_LT_NA,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               2, 6, 10, 0, 0,
+               NPC_S_KPU4_MPLS, 6, 0,
+               NPC_LID_LB, NPC_LT_NA,
+               0,
+               0, 0, 0, 0,
+       },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
                8, 0, 6, 1, 0,
@@ -11085,9 +11959,89 @@ static struct npc_kpu_profile_action kpu3_action_entries[] __maybe_unused = {
                0, 0, 0, 0,
        },
        {
-               NPC_ERRLEV_LB, NPC_EC_L2_K3,
-               0, 0, 0, 0, 1,
-               NPC_S_NA, 0, 0,
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 0, 6, 1, 0,
+               NPC_S_KPU5_CPT_IP, 8, 0,
+               NPC_LID_LB, NPC_LT_NA,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               6, 0, 42, 1, 0,
+               NPC_S_KPU5_CPT_IP6, 8, 0,
+               NPC_LID_LB, NPC_LT_NA,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 0, 6, 1, 0,
+               NPC_S_KPU5_CPT_IP, 4, 0,
+               NPC_LID_LB, NPC_LT_NA,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               6, 0, 42, 1, 0,
+               NPC_S_KPU5_CPT_IP6, 4, 0,
+               NPC_LID_LB, NPC_LT_NA,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               6, 0, 42, 1, 1,
+               NPC_S_KPU5_CPT_IP6, 4, 0,
+               NPC_LID_LB, NPC_LT_NA,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 0, 6, 1, 0,
+               NPC_S_KPU5_CPT_IP, 6, 0,
+               NPC_LID_LB, NPC_LT_NA,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               6, 0, 42, 1, 0,
+               NPC_S_KPU5_CPT_IP6, 6, 0,
+               NPC_LID_LB, NPC_LT_NA,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 0, 6, 1, 0,
+               NPC_S_KPU5_CPT_IP, 8, 0,
+               NPC_LID_LB, NPC_LT_NA,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               6, 0, 42, 1, 0,
+               NPC_S_KPU5_CPT_IP6, 8, 0,
+               NPC_LID_LB, NPC_LT_NA,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 0, 6, 1, 0,
+               NPC_S_KPU5_CPT_IP, 4, 0,
+               NPC_LID_LB, NPC_LT_NA,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               6, 0, 42, 1, 0,
+               NPC_S_KPU5_CPT_IP6, 4, 0,
                NPC_LID_LB, NPC_LT_NA,
                0,
                0, 0, 0, 0,
@@ -11365,6 +12319,14 @@ static struct npc_kpu_profile_action kpu4_action_entries[] __maybe_unused = {
                0,
                0, 0, 0, 0,
        },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               8, 0, 6, 0, 0,
+               NPC_S_KPU5_PTP, 4, 1,
+               NPC_LID_LB, NPC_LT_LB_CTAG,
+               0,
+               0, 0, 0, 0,
+       },
        {
                NPC_ERRLEV_LB, NPC_EC_L2_K4,
                0, 0, 0, 0, 1,
@@ -11696,7 +12658,7 @@ static struct npc_kpu_profile_action kpu5_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               0, 0, 0, 2, 0,
+               2, 0, 0, 2, 0,
                NPC_S_KPU8_GRE, 40, 1,
                NPC_LID_LC, NPC_LT_LC_IP6,
                0,
@@ -12176,7 +13138,7 @@ static struct npc_kpu_profile_action kpu5_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               0, 0, 0, 2, 0,
+               2, 0, 0, 2, 0,
                NPC_S_KPU8_GRE, 40, 1,
                NPC_LID_LC, NPC_LT_LC_IP6,
                0,
@@ -12481,7 +13443,7 @@ static struct npc_kpu_profile_action kpu6_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               0, 0, 0, 1, 0,
+               2, 0, 0, 1, 0,
                NPC_S_KPU8_GRE, 8, 0,
                NPC_LID_LC, NPC_LT_NA,
                0,
@@ -12593,7 +13555,7 @@ static struct npc_kpu_profile_action kpu6_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               0, 0, 0, 1, 0,
+               2, 0, 0, 1, 0,
                NPC_S_KPU8_GRE, 8, 0,
                NPC_LID_LC, NPC_LT_NA,
                0,
@@ -12697,7 +13659,7 @@ static struct npc_kpu_profile_action kpu6_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               0, 0, 0, 1, 0,
+               2, 0, 0, 1, 0,
                NPC_S_KPU8_GRE, 8, 0,
                NPC_LID_LC, NPC_LT_NA,
                0,
@@ -12793,7 +13755,7 @@ static struct npc_kpu_profile_action kpu6_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               0, 0, 0, 1, 0,
+               2, 0, 0, 1, 0,
                NPC_S_KPU8_GRE, 8, 0,
                NPC_LID_LC, NPC_LT_NA,
                0,
@@ -12905,7 +13867,7 @@ static struct npc_kpu_profile_action kpu6_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               0, 0, 0, 1, 0,
+               2, 0, 0, 1, 0,
                NPC_S_KPU8_GRE, 8, 0,
                NPC_LID_LC, NPC_LT_NA,
                0,
@@ -13034,7 +13996,7 @@ static struct npc_kpu_profile_action kpu7_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               0, 0, 0, 0, 0,
+               2, 0, 0, 0, 0,
                NPC_S_KPU8_GRE, 8, 0,
                NPC_LID_LC, NPC_LT_NA,
                0,
@@ -13226,7 +14188,7 @@ static struct npc_kpu_profile_action kpu7_action_entries[] __maybe_unused = {
        },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
-               0, 0, 0, 0, 0,
+               2, 0, 0, 0, 0,
                NPC_S_KPU8_GRE, 8, 0,
                NPC_LID_LC, NPC_LT_NA,
                0,
@@ -13393,6 +14355,14 @@ static struct npc_kpu_profile_action kpu8_action_entries[] __maybe_unused = {
                NPC_F_LD_L_TCP_UNK_PORT_HAS_OPTIONS,
                12, 0xf0, 1, 2,
        },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               0, 0, 2, 0, 0,
+               NPC_S_KPU9_ROCEV2, 8, 1,
+               NPC_LID_LD, NPC_LT_LD_UDP,
+               0,
+               0, 0, 0, 0,
+       },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
                0, 0, 2, 0, 0,
@@ -13538,10 +14508,10 @@ static struct npc_kpu_profile_action kpu8_action_entries[] __maybe_unused = {
                0, 0, 0, 0,
        },
        {
-               NPC_ERRLEV_LD, NPC_EC_NVGRE,
-               0, 0, 0, 0, 1,
-               NPC_S_NA, 0, 0,
-               NPC_LID_LD, NPC_LT_NA,
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               12, 16, 20, 2, 0,
+               NPC_S_KPU11_TU_ETHER, 4, 1,
+               NPC_LID_LD, NPC_LT_LD_GRE,
                0,
                0, 0, 0, 0,
        },
@@ -14154,6 +15124,14 @@ static struct npc_kpu_profile_action kpu9_action_entries[] __maybe_unused = {
                0,
                0, 0, 0, 0,
        },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               0, 0, 0, 0, 1,
+               NPC_S_NA, 8, 1,
+               NPC_LID_LE, NPC_LT_LE_ROCEV2,
+               0,
+               0, 0, 0, 0,
+       },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
                12, 16, 20, 1, 0,
@@ -14893,6 +15871,22 @@ static struct npc_kpu_profile_action kpu12_action_entries[] __maybe_unused = {
        NPC_KPU_NOP_ACTION,
        NPC_KPU_NOP_ACTION,
        NPC_KPU_NOP_ACTION,
+       {
+               NPC_ERRLEV_LC, NPC_EC_IP_TTL_0,
+               0, 0, 0, 0, 1,
+               NPC_S_NA, 0, 1,
+               NPC_LID_LG, NPC_LT_LG_TU_IP,
+               0,
+               0, 0, 0, 0,
+       },
+       {
+               NPC_ERRLEV_LC, NPC_EC_IP_FRAG_OFFSET_1,
+               0, 0, 0, 0, 1,
+               NPC_S_NA, 0, 1,
+               NPC_LID_LG, NPC_LT_LG_TU_IP,
+               0,
+               0, 0, 0, 0,
+       },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
                2, 12, 0, 2, 0,
@@ -14957,6 +15951,14 @@ static struct npc_kpu_profile_action kpu12_action_entries[] __maybe_unused = {
                NPC_F_LG_U_UNK_IP_PROTO,
                0, 0, 0, 0,
        },
+       {
+               NPC_ERRLEV_RE, NPC_EC_NOERR,
+               0, 0, 0, 0, 1,
+               NPC_S_NA, 0, 1,
+               NPC_LID_LG, NPC_LT_LG_TU_IP,
+               0,
+               0, 0, 0, 0,
+       },
        {
                NPC_ERRLEV_RE, NPC_EC_NOERR,
                2, 12, 0, 2, 0,