Skip to content

Commit 922584f

Browse files
Hao Zhengdavem330
authored andcommitted
octeontx2-af: Update NPC KPU packet parsing profile
Updated NPC KPU packet parsing profile with support for following - Fragmentation support for IPv4 IPv6 outer header - NIX instruction header support - QinQ with TPID of 0x8100 as non inner most vlan tag, as legacy network equipments still generate QinQ packets with this configuration. - To better support RSS for tunnelled packets, udp based tunnel protocols such as vxlan, vxlan-gpe, geneve and gtpu are now captured into a separate layer E. Consequently, the inner packet headers are pushed one layer down to LF, LG, and LH accordingly. - Support for rfc7510 mpls in udp. Up to 4 MPLS labels can be parsed and captured in one layer LE. - Parser support for DSA, extended DSA and eDSA tags right after ethernet header by Marvell SOHO and Falcon switches. For extended DSA and eDSA tags, a special PKIND of 62 is used, as these tags don't contain a tpid field. - Higig2 protocol header parsing support, added a NPC_LT_LA_HIGIG2_ETHER for a combined header of HIGIG2 and Ethernet. Add a NPC_LT_LA_IH_NIX_HIGIG2_ETHER for a combined header of nix_ih, HIGIG2 and Ethernet on egress side. Also added 2 upper flags in LA to indicate the presence of nix_ih and HIGIG2. Other changes include - IPv4.TTL==0 IPv6.HLIM==0 check - Per RFC 1858, mark fragment offset == 1 as error - TCP invalid flags check - Separate error codes for outer and inner IPv4 checksum errors. - Fix a parser error when KPU parses incoming IPSec ESP and AH packets - NPC vtag capture/strip hardware expect tag pointer to point to tpid/ethertype instead of tci. So move lb_ptr to point to tpid/ethertype. - Fix npc parser error when parsing udp packets that don't have any payload. - For a single MCAM entry to match on packets with one or stacked vlan tags combine NPC_LT_LB_STAG and NPC_LT_LB_QINQ to NPC_LT_LB_STAG_QINQ. - NVGRE to have a separate ltype LD_NVGRE instead of combined with LD_GRE. - Reserve top LD/LTYPEs to support custom KPU profile fields. Signed-off-by: Hao Zheng <[email protected]> Signed-off-by: Sunil Goutham <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent c661473 commit 922584f

File tree

4 files changed

+11252
-3808
lines changed

4 files changed

+11252
-3808
lines changed

drivers/net/ethernet/marvell/octeontx2/af/npc.h

Lines changed: 66 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -27,26 +27,45 @@ enum NPC_LID_E {
2727
enum npc_kpu_la_ltype {
2828
NPC_LT_LA_8023 = 1,
2929
NPC_LT_LA_ETHER,
30+
NPC_LT_LA_IH_NIX_ETHER,
31+
NPC_LT_LA_IH_8_ETHER,
32+
NPC_LT_LA_IH_4_ETHER,
33+
NPC_LT_LA_IH_2_ETHER,
34+
NPC_LT_LA_HIGIG2_ETHER,
35+
NPC_LT_LA_IH_NIX_HIGIG2_ETHER,
36+
NPC_LT_LA_CUSTOM0 = 0xE,
37+
NPC_LT_LA_CUSTOM1 = 0xF,
3038
};
3139

3240
enum npc_kpu_lb_ltype {
3341
NPC_LT_LB_ETAG = 1,
3442
NPC_LT_LB_CTAG,
35-
NPC_LT_LB_STAG,
43+
NPC_LT_LB_STAG_QINQ,
3644
NPC_LT_LB_BTAG,
37-
NPC_LT_LB_QINQ,
3845
NPC_LT_LB_ITAG,
46+
NPC_LT_LB_DSA,
47+
NPC_LT_LB_DSA_VLAN,
48+
NPC_LT_LB_EDSA,
49+
NPC_LT_LB_EDSA_VLAN,
50+
NPC_LT_LB_EXDSA,
51+
NPC_LT_LB_EXDSA_VLAN,
52+
NPC_LT_LB_CUSTOM0 = 0xE,
53+
NPC_LT_LB_CUSTOM1 = 0xF,
3954
};
4055

4156
enum npc_kpu_lc_ltype {
4257
NPC_LT_LC_IP = 1,
58+
NPC_LT_LC_IP_OPT,
4359
NPC_LT_LC_IP6,
60+
NPC_LT_LC_IP6_EXT,
4461
NPC_LT_LC_ARP,
4562
NPC_LT_LC_RARP,
4663
NPC_LT_LC_MPLS,
4764
NPC_LT_LC_NSH,
4865
NPC_LT_LC_PTP,
4966
NPC_LT_LC_FCOE,
67+
NPC_LT_LC_CUSTOM0 = 0xE,
68+
NPC_LT_LC_CUSTOM1 = 0xF,
5069
};
5170

5271
/* Don't modify Ltypes upto SCTP, otherwise it will
@@ -57,49 +76,67 @@ enum npc_kpu_ld_ltype {
5776
NPC_LT_LD_UDP,
5877
NPC_LT_LD_ICMP,
5978
NPC_LT_LD_SCTP,
60-
NPC_LT_LD_IGMP,
6179
NPC_LT_LD_ICMP6,
80+
NPC_LT_LD_IGMP = 8,
6281
NPC_LT_LD_ESP,
6382
NPC_LT_LD_AH,
6483
NPC_LT_LD_GRE,
65-
NPC_LT_LD_GRE_MPLS,
66-
NPC_LT_LD_GRE_NSH,
67-
NPC_LT_LD_TU_MPLS,
84+
NPC_LT_LD_NVGRE,
85+
NPC_LT_LD_NSH,
86+
NPC_LT_LD_TU_MPLS_IN_NSH,
87+
NPC_LT_LD_TU_MPLS_IN_IP,
88+
NPC_LT_LD_CUSTOM0 = 0xE,
89+
NPC_LT_LD_CUSTOM1 = 0xF,
6890
};
6991

7092
enum npc_kpu_le_ltype {
71-
NPC_LT_LE_TU_ETHER = 1,
72-
NPC_LT_LE_TU_PPP,
73-
NPC_LT_LE_TU_MPLS_IN_NSH,
74-
NPC_LT_LE_TU_3RD_NSH,
93+
NPC_LT_LE_VXLAN = 1,
94+
NPC_LT_LE_GENEVE,
95+
NPC_LT_LE_GTPU = 4,
96+
NPC_LT_LE_VXLANGPE,
97+
NPC_LT_LE_GTPC,
98+
NPC_LT_LE_NSH,
99+
NPC_LT_LE_TU_MPLS_IN_GRE,
100+
NPC_LT_LE_TU_NSH_IN_GRE,
101+
NPC_LT_LE_TU_MPLS_IN_UDP,
102+
NPC_LT_LE_CUSTOM0 = 0xE,
103+
NPC_LT_LE_CUSTOM1 = 0xF,
75104
};
76105

77106
enum npc_kpu_lf_ltype {
78-
NPC_LT_LF_TU_IP = 1,
79-
NPC_LT_LF_TU_IP6,
80-
NPC_LT_LF_TU_ARP,
81-
NPC_LT_LF_TU_MPLS_IP,
82-
NPC_LT_LF_TU_MPLS_IP6,
83-
NPC_LT_LF_TU_MPLS_ETHER,
107+
NPC_LT_LF_TU_ETHER = 1,
108+
NPC_LT_LF_TU_PPP,
109+
NPC_LT_LF_TU_MPLS_IN_VXLANGPE,
110+
NPC_LT_LF_TU_NSH_IN_VXLANGPE,
111+
NPC_LT_LF_TU_MPLS_IN_NSH,
112+
NPC_LT_LF_TU_3RD_NSH,
113+
NPC_LT_LF_CUSTOM0 = 0xE,
114+
NPC_LT_LF_CUSTOM1 = 0xF,
84115
};
85116

86117
enum npc_kpu_lg_ltype {
87-
NPC_LT_LG_TU_TCP = 1,
88-
NPC_LT_LG_TU_UDP,
89-
NPC_LT_LG_TU_SCTP,
90-
NPC_LT_LG_TU_ICMP,
91-
NPC_LT_LG_TU_IGMP,
92-
NPC_LT_LG_TU_ICMP6,
93-
NPC_LT_LG_TU_ESP,
94-
NPC_LT_LG_TU_AH,
118+
NPC_LT_LG_TU_IP = 1,
119+
NPC_LT_LG_TU_IP6,
120+
NPC_LT_LG_TU_ARP,
121+
NPC_LT_LG_TU_ETHER_IN_NSH,
122+
NPC_LT_LG_CUSTOM0 = 0xE,
123+
NPC_LT_LG_CUSTOM1 = 0xF,
95124
};
96125

126+
/* Don't modify Ltypes upto SCTP, otherwise it will
127+
* effect flow tag calculation and thus RSS.
128+
*/
97129
enum npc_kpu_lh_ltype {
98-
NPC_LT_LH_TCP_DATA = 1,
99-
NPC_LT_LH_HTTP_DATA,
100-
NPC_LT_LH_HTTPS_DATA,
101-
NPC_LT_LH_PPTP_DATA,
102-
NPC_LT_LH_UDP_DATA,
130+
NPC_LT_LH_TU_TCP = 1,
131+
NPC_LT_LH_TU_UDP,
132+
NPC_LT_LH_TU_ICMP,
133+
NPC_LT_LH_TU_SCTP,
134+
NPC_LT_LH_TU_ICMP6,
135+
NPC_LT_LH_TU_IGMP = 8,
136+
NPC_LT_LH_TU_ESP,
137+
NPC_LT_LH_TU_AH,
138+
NPC_LT_LH_CUSTOM0 = 0xE,
139+
NPC_LT_LH_CUSTOM1 = 0xF,
103140
};
104141

105142
struct npc_kpu_profile_cam {

0 commit comments

Comments
 (0)