net/cnxk: support IPv6 fragment flow pattern item

Support matching IPv6 fragment extension header
with RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT flow pattern item.

Signed-off-by: Satheesh Paul <psatheesh@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
This commit is contained in:
Satheesh Paul 2022-04-27 11:53:19 +05:30 committed by Jerin Jacob
parent b934e65b01
commit a800675b06
6 changed files with 14 additions and 0 deletions

View File

@ -65,6 +65,7 @@ icmp = Y
ipv4 = Y ipv4 = Y
ipv6 = Y ipv6 = Y
ipv6_ext = Y ipv6_ext = Y
ipv6_frag_ext = Y
mark = Y mark = Y
mpls = Y mpls = Y
nvgre = Y nvgre = Y

View File

@ -61,6 +61,7 @@ icmp = Y
ipv4 = Y ipv4 = Y
ipv6 = Y ipv6 = Y
ipv6_ext = Y ipv6_ext = Y
ipv6_frag_ext = Y
mark = Y mark = Y
mpls = Y mpls = Y
nvgre = Y nvgre = Y

View File

@ -57,6 +57,7 @@ icmp = Y
ipv4 = Y ipv4 = Y
ipv6 = Y ipv6 = Y
ipv6_ext = Y ipv6_ext = Y
ipv6_frag_ext = Y
mark = Y mark = Y
mpls = Y mpls = Y
nvgre = Y nvgre = Y

View File

@ -15,6 +15,7 @@ enum roc_npc_item_type {
ROC_NPC_ITEM_TYPE_E_TAG, ROC_NPC_ITEM_TYPE_E_TAG,
ROC_NPC_ITEM_TYPE_IPV4, ROC_NPC_ITEM_TYPE_IPV4,
ROC_NPC_ITEM_TYPE_IPV6, ROC_NPC_ITEM_TYPE_IPV6,
ROC_NPC_ITEM_TYPE_IPV6_FRAG_EXT,
ROC_NPC_ITEM_TYPE_ARP_ETH_IPV4, ROC_NPC_ITEM_TYPE_ARP_ETH_IPV4,
ROC_NPC_ITEM_TYPE_MPLS, ROC_NPC_ITEM_TYPE_MPLS,
ROC_NPC_ITEM_TYPE_ICMP, ROC_NPC_ITEM_TYPE_ICMP,

View File

@ -594,6 +594,13 @@ npc_parse_lc(struct npc_parse_state *pst)
info.len = pst->pattern->size; info.len = pst->pattern->size;
info.hw_hdr_len = 40; info.hw_hdr_len = 40;
break; break;
case ROC_NPC_ITEM_TYPE_IPV6_FRAG_EXT:
lid = NPC_LID_LC;
lt = NPC_LT_LC_IP6_EXT;
flags = NPC_F_LC_U_IP6_FRAG;
info.len = pst->pattern->size;
info.hw_hdr_len = 40;
break;
case ROC_NPC_ITEM_TYPE_L3_CUSTOM: case ROC_NPC_ITEM_TYPE_L3_CUSTOM:
lt = NPC_LT_LC_CUSTOM0; lt = NPC_LT_LC_CUSTOM0;
info.len = pst->pattern->size; info.len = pst->pattern->size;

View File

@ -14,6 +14,9 @@ const struct cnxk_rte_flow_term_info term[] = {
sizeof(struct rte_flow_item_ipv4)}, sizeof(struct rte_flow_item_ipv4)},
[RTE_FLOW_ITEM_TYPE_IPV6] = {ROC_NPC_ITEM_TYPE_IPV6, [RTE_FLOW_ITEM_TYPE_IPV6] = {ROC_NPC_ITEM_TYPE_IPV6,
sizeof(struct rte_flow_item_ipv6)}, sizeof(struct rte_flow_item_ipv6)},
[RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT] = {
ROC_NPC_ITEM_TYPE_IPV6_FRAG_EXT,
sizeof(struct rte_flow_item_ipv6_frag_ext)},
[RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4] = { [RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4] = {
ROC_NPC_ITEM_TYPE_ARP_ETH_IPV4, ROC_NPC_ITEM_TYPE_ARP_ETH_IPV4,
sizeof(struct rte_flow_item_arp_eth_ipv4)}, sizeof(struct rte_flow_item_arp_eth_ipv4)},