mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-28 21:33:52 +00:00
octeontx2-af: Add filter profiles in hardware to extract packet headers
This patch adds hardware profile supports for extracting packet headers. It makes sure that hardware is capabale of extracting ICMP, CPT, ERSPAN headers. Signed-off-by: Suman Ghosh <sumang@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
beb53f3269
commit
c57e32fb29
4 changed files with 573 additions and 71 deletions
|
@ -1114,6 +1114,7 @@ struct nix_rss_flowkey_cfg {
|
|||
#define NIX_FLOW_KEY_TYPE_INNR_UDP BIT(15)
|
||||
#define NIX_FLOW_KEY_TYPE_INNR_SCTP BIT(16)
|
||||
#define NIX_FLOW_KEY_TYPE_INNR_ETH_DMAC BIT(17)
|
||||
#define NIX_FLOW_KEY_TYPE_CUSTOM0 BIT(19)
|
||||
#define NIX_FLOW_KEY_TYPE_VLAN BIT(20)
|
||||
#define NIX_FLOW_KEY_TYPE_IPV4_PROTO BIT(21)
|
||||
#define NIX_FLOW_KEY_TYPE_AH BIT(22)
|
||||
|
|
|
@ -85,8 +85,7 @@ enum npc_kpu_lc_ltype {
|
|||
enum npc_kpu_ld_ltype {
|
||||
NPC_LT_LD_TCP = 1,
|
||||
NPC_LT_LD_UDP,
|
||||
NPC_LT_LD_ICMP,
|
||||
NPC_LT_LD_SCTP,
|
||||
NPC_LT_LD_SCTP = 4,
|
||||
NPC_LT_LD_ICMP6,
|
||||
NPC_LT_LD_CUSTOM0,
|
||||
NPC_LT_LD_CUSTOM1,
|
||||
|
@ -97,6 +96,7 @@ enum npc_kpu_ld_ltype {
|
|||
NPC_LT_LD_NSH,
|
||||
NPC_LT_LD_TU_MPLS_IN_NSH,
|
||||
NPC_LT_LD_TU_MPLS_IN_IP,
|
||||
NPC_LT_LD_ICMP,
|
||||
};
|
||||
|
||||
enum npc_kpu_le_ltype {
|
||||
|
@ -140,14 +140,14 @@ enum npc_kpu_lg_ltype {
|
|||
enum npc_kpu_lh_ltype {
|
||||
NPC_LT_LH_TU_TCP = 1,
|
||||
NPC_LT_LH_TU_UDP,
|
||||
NPC_LT_LH_TU_ICMP,
|
||||
NPC_LT_LH_TU_SCTP,
|
||||
NPC_LT_LH_TU_SCTP = 4,
|
||||
NPC_LT_LH_TU_ICMP6,
|
||||
NPC_LT_LH_CUSTOM0,
|
||||
NPC_LT_LH_CUSTOM1,
|
||||
NPC_LT_LH_TU_IGMP = 8,
|
||||
NPC_LT_LH_TU_ESP,
|
||||
NPC_LT_LH_TU_AH,
|
||||
NPC_LT_LH_CUSTOM0 = 0xE,
|
||||
NPC_LT_LH_CUSTOM1 = 0xF,
|
||||
NPC_LT_LH_TU_ICMP = 0xF,
|
||||
};
|
||||
|
||||
/* NPC port kind defines how the incoming or outgoing packets
|
||||
|
@ -155,10 +155,11 @@ enum npc_kpu_lh_ltype {
|
|||
* Software assigns pkind for each incoming port such as CGX
|
||||
* Ethernet interfaces, LBK interfaces, etc.
|
||||
*/
|
||||
#define NPC_UNRESERVED_PKIND_COUNT NPC_RX_CUSTOM_PRE_L2_PKIND
|
||||
#define NPC_UNRESERVED_PKIND_COUNT NPC_RX_CPT_HDR_PTP_PKIND
|
||||
|
||||
enum npc_pkind_type {
|
||||
NPC_RX_LBK_PKIND = 0ULL,
|
||||
NPC_RX_CPT_HDR_PTP_PKIND = 54ULL,
|
||||
NPC_RX_CUSTOM_PRE_L2_PKIND = 55ULL,
|
||||
NPC_RX_VLAN_EXDSA_PKIND = 56ULL,
|
||||
NPC_RX_CHLEN24B_PKIND = 57ULL,
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -4039,6 +4039,13 @@ static int set_flowkey_fields(struct nix_rx_flowkey_alg *alg, u32 flow_cfg)
|
|||
field->ltype_match = NPC_LT_LE_GTPU;
|
||||
field->ltype_mask = 0xF;
|
||||
break;
|
||||
case NIX_FLOW_KEY_TYPE_CUSTOM0:
|
||||
field->lid = NPC_LID_LC;
|
||||
field->hdr_offset = 6;
|
||||
field->bytesm1 = 1; /* 2 Bytes*/
|
||||
field->ltype_match = NPC_LT_LC_CUSTOM0;
|
||||
field->ltype_mask = 0xF;
|
||||
break;
|
||||
case NIX_FLOW_KEY_TYPE_VLAN:
|
||||
field->lid = NPC_LID_LB;
|
||||
field->hdr_offset = 2; /* Skip TPID (2-bytes) */
|
||||
|
|
Loading…
Reference in a new issue