* [dpdk-dev] [PATCH 0/2] support GTPU inner IPv4/IPv6 for AVF FDIR @ 2021-02-22 10:09 Junfeng Guo 2021-02-22 10:09 ` [dpdk-dev] [PATCH 1/2] net/iavf: support GTPU inner IPv4 for FDIR Junfeng Guo 2021-02-22 10:09 ` [dpdk-dev] [PATCH 2/2] net/iavf: support GTPU inner IPv6 for FDIR Junfeng Guo 0 siblings, 2 replies; 18+ messages in thread From: Junfeng Guo @ 2021-02-22 10:09 UTC (permalink / raw) To: qi.z.zhang, jingjing.wu, beilei.xing; +Cc: dev, junfeng.guo Support GTPU_(EH)_IPV4/IPV6 inner L3 and L4 fields matching for AVF FDIR. [PATCH 1/2] support GTPU inner IPv4 for FDIR. [PATCH 2/2] support GTPU inner IPv6 for FDIR. Junfeng Guo (2): net/iavf: support GTPU inner IPv4 for FDIR net/iavf: support GTPU inner IPv6 for FDIR drivers/net/iavf/iavf_fdir.c | 61 ++++++++++++++++++++++++++++ drivers/net/iavf/iavf_generic_flow.h | 31 ++++++++++++++ 2 files changed, 92 insertions(+) -- 2.25.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [dpdk-dev] [PATCH 1/2] net/iavf: support GTPU inner IPv4 for FDIR 2021-02-22 10:09 [dpdk-dev] [PATCH 0/2] support GTPU inner IPv4/IPv6 for AVF FDIR Junfeng Guo @ 2021-02-22 10:09 ` Junfeng Guo 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR Junfeng Guo 2021-02-22 10:09 ` [dpdk-dev] [PATCH 2/2] net/iavf: support GTPU inner IPv6 for FDIR Junfeng Guo 1 sibling, 1 reply; 18+ messages in thread From: Junfeng Guo @ 2021-02-22 10:09 UTC (permalink / raw) To: qi.z.zhang, jingjing.wu, beilei.xing; +Cc: dev, junfeng.guo Support GTPU_(EH)_IPV4 inner L3 and L4 fields matching for AVF FDIR. Signed-off-by: Junfeng Guo <junfeng.guo@intel.com> --- drivers/net/iavf/iavf_fdir.c | 37 ++++++++++++++++++++++++++++ drivers/net/iavf/iavf_generic_flow.h | 21 ++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/drivers/net/iavf/iavf_fdir.c b/drivers/net/iavf/iavf_fdir.c index 4e864b4b9c..a15574c9ea 100644 --- a/drivers/net/iavf/iavf_fdir.c +++ b/drivers/net/iavf/iavf_fdir.c @@ -75,6 +75,19 @@ IAVF_INSET_IPV4_SRC | IAVF_INSET_IPV4_DST | \ IAVF_INSET_GTPU_TEID) +#define IAVF_FDIR_INSET_GTPU_IPV4 (\ + IAVF_INSET_TUN_IPV4_SRC | IAVF_INSET_TUN_IPV4_DST | \ + IAVF_INSET_TUN_IPV4_PROTO | IAVF_INSET_TUN_IPV4_TOS | \ + IAVF_INSET_TUN_IPV4_TTL) + +#define IAVF_FDIR_INSET_GTPU_IPV4_UDP (\ + IAVF_FDIR_INSET_GTPU_IPV4 | \ + IAVF_INSET_TUN_UDP_SRC_PORT | IAVF_INSET_TUN_UDP_DST_PORT) + +#define IAVF_FDIR_INSET_GTPU_IPV4_TCP (\ + IAVF_FDIR_INSET_GTPU_IPV4 | \ + IAVF_INSET_TUN_TCP_SRC_PORT | IAVF_INSET_TUN_TCP_DST_PORT) + #define IAVF_FDIR_INSET_IPV4_GTPU_EH (\ IAVF_INSET_IPV4_SRC | IAVF_INSET_IPV4_DST | \ IAVF_INSET_GTPU_TEID | IAVF_INSET_GTPU_QFI) @@ -121,7 +134,13 @@ static struct iavf_pattern_match_item iavf_fdir_pattern[] = { {iavf_pattern_eth_ipv6_tcp, IAVF_FDIR_INSET_ETH_IPV6_TCP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv6_sctp, IAVF_FDIR_INSET_ETH_IPV6_SCTP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu, IAVF_FDIR_INSET_IPV4_GTPU, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv4, IAVF_FDIR_INSET_GTPU_IPV4, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv4_udp, IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv4_tcp, IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_eh, IAVF_FDIR_INSET_IPV4_GTPU_EH, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv4, IAVF_FDIR_INSET_GTPU_IPV4, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_udp,IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp,IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv6_gtpu, IAVF_FDIR_INSET_IPV6_GTPU, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv6_gtpu_eh, IAVF_FDIR_INSET_IPV6_GTPU_EH, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_l2tpv3, IAVF_FDIR_INSET_L2TPV3OIP, IAVF_INSET_NONE}, @@ -534,6 +553,7 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, enum rte_flow_item_type next_type; uint16_t ether_type; + u8 tun_inner = 0; int layer = 0; struct virtchnl_proto_hdr *hdr; @@ -650,6 +670,11 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, IPV4, DST); } + if (tun_inner) { + input_set &= ~IAVF_PROT_IPV4_OUTER; + input_set |= IAVF_PROT_IPV4_INNER; + } + rte_memcpy(hdr->buffer, &ipv4_spec->hdr, sizeof(ipv4_spec->hdr)); @@ -736,6 +761,11 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, UDP, DST_PORT); } + if (tun_inner) { + input_set &= ~IAVF_PROT_UDP_OUTER; + input_set |= IAVF_PROT_UDP_INNER; + } + if (l3 == RTE_FLOW_ITEM_TYPE_IPV4) rte_memcpy(hdr->buffer, &udp_spec->hdr, @@ -780,6 +810,11 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, TCP, DST_PORT); } + if (tun_inner) { + input_set &= ~IAVF_PROT_TCP_OUTER; + input_set |= IAVF_PROT_TCP_INNER; + } + if (l3 == RTE_FLOW_ITEM_TYPE_IPV4) rte_memcpy(hdr->buffer, &tcp_spec->hdr, @@ -858,6 +893,8 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, gtp_spec, sizeof(*gtp_spec)); } + tun_inner = 1; + filter->add_fltr.rule_cfg.proto_hdrs.count = ++layer; break; diff --git a/drivers/net/iavf/iavf_generic_flow.h b/drivers/net/iavf/iavf_generic_flow.h index 0ccf5901b4..f7bdd094e1 100644 --- a/drivers/net/iavf/iavf_generic_flow.h +++ b/drivers/net/iavf/iavf_generic_flow.h @@ -95,6 +95,17 @@ #define IAVF_INSET_IPV6_TC \ (IAVF_PROT_IPV6_OUTER | IAVF_IP_TOS) +#define IAVF_INSET_TUN_IPV4_SRC \ + (IAVF_PROT_IPV4_INNER | IAVF_IP_SRC) +#define IAVF_INSET_TUN_IPV4_DST \ + (IAVF_PROT_IPV4_INNER | IAVF_IP_DST) +#define IAVF_INSET_TUN_IPV4_TOS \ + (IAVF_PROT_IPV4_INNER | IAVF_IP_TOS) +#define IAVF_INSET_TUN_IPV4_PROTO \ + (IAVF_PROT_IPV4_INNER | IAVF_IP_PROTO) +#define IAVF_INSET_TUN_IPV4_TTL \ + (IAVF_PROT_IPV4_INNER | IAVF_IP_TTL) + #define IAVF_INSET_TCP_SRC_PORT \ (IAVF_PROT_TCP_OUTER | IAVF_SPORT) #define IAVF_INSET_TCP_DST_PORT \ @@ -103,6 +114,16 @@ (IAVF_PROT_UDP_OUTER | IAVF_SPORT) #define IAVF_INSET_UDP_DST_PORT \ (IAVF_PROT_UDP_OUTER | IAVF_DPORT) + +#define IAVF_INSET_TUN_TCP_SRC_PORT \ + (IAVF_PROT_TCP_INNER | IAVF_SPORT) +#define IAVF_INSET_TUN_TCP_DST_PORT \ + (IAVF_PROT_TCP_INNER | IAVF_DPORT) +#define IAVF_INSET_TUN_UDP_SRC_PORT \ + (IAVF_PROT_UDP_INNER | IAVF_SPORT) +#define IAVF_INSET_TUN_UDP_DST_PORT \ + (IAVF_PROT_UDP_INNER | IAVF_DPORT) + #define IAVF_INSET_SCTP_SRC_PORT \ (IAVF_PROT_SCTP_OUTER | IAVF_SPORT) #define IAVF_INSET_SCTP_DST_PORT \ -- 2.25.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [dpdk-dev] [PATCH v2 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR. 2021-02-22 10:09 ` [dpdk-dev] [PATCH 1/2] net/iavf: support GTPU inner IPv4 for FDIR Junfeng Guo @ 2021-03-26 10:42 ` Junfeng Guo 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 1/3] net/iavf: support GTPU inner IPv4 for FDIR Junfeng Guo ` (2 more replies) 0 siblings, 3 replies; 18+ messages in thread From: Junfeng Guo @ 2021-03-26 10:42 UTC (permalink / raw) To: qi.z.zhang, jingjing.wu, beilei.xing; +Cc: dev, junfeng.guo Support GTPU_(EH)_IPV4/IPV6 inner L3 and L4 fields matching for AVF FDIR. v2: * add release notes for 21.05. [PATCH v2 1/3] support GTPU inner IPv4 for FDIR. [PATCH v2 2/3] support GTPU inner IPv6 for FDIR. [PATCH v2 3/3] add release notes for 21.05. Junfeng Guo (3): net/iavf: support GTPU inner IPv4 for FDIR net/iavf: support GTPU inner IPv6 for FDIR doc: add release notes for 21.05 doc/guides/rel_notes/release_21_05.rst | 6 +++ drivers/net/iavf/iavf_fdir.c | 61 ++++++++++++++++++++++++++ drivers/net/iavf/iavf_generic_flow.h | 31 +++++++++++++ 3 files changed, 98 insertions(+) -- 2.25.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [dpdk-dev] [PATCH v2 1/3] net/iavf: support GTPU inner IPv4 for FDIR 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR Junfeng Guo @ 2021-03-26 10:42 ` Junfeng Guo 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR Junfeng Guo 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 2/3] net/iavf: support GTPU inner IPv6 for FDIR Junfeng Guo 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 3/3] doc: add release notes for 21.05 Junfeng Guo 2 siblings, 1 reply; 18+ messages in thread From: Junfeng Guo @ 2021-03-26 10:42 UTC (permalink / raw) To: qi.z.zhang, jingjing.wu, beilei.xing; +Cc: dev, junfeng.guo Support GTPU_(EH)_IPV4 inner L3 and L4 fields matching for AVF FDIR. +------------------------------+---------------------------------+ | Pattern | Input Set | +------------------------------+---------------------------------+ | eth/ipv4/gtpu/ipv4 | inner: src/dst ip | | eth/ipv4/gtpu/ipv4/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/ipv4/tcp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh/ipv4 | inner: src/dst ip | | eth/ipv4/gtpu/eh/ipv4/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh/ipv4/tcp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(0)/ipv4 | inner: src/dst ip | | eth/ipv4/gtpu/eh(0)/ipv4/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(0)/ipv4/tcp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(1)/ipv4 | inner: src/dst ip | | eth/ipv4/gtpu/eh(1)/ipv4/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(1)/ipv4/tcp | inner: src/dst ip, src/dst port | +------------------------------+---------------------------------+ Signed-off-by: Junfeng Guo <junfeng.guo@intel.com> --- drivers/net/iavf/iavf_fdir.c | 37 ++++++++++++++++++++++++++++ drivers/net/iavf/iavf_generic_flow.h | 21 ++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/drivers/net/iavf/iavf_fdir.c b/drivers/net/iavf/iavf_fdir.c index 4e864b4b9c..a15574c9ea 100644 --- a/drivers/net/iavf/iavf_fdir.c +++ b/drivers/net/iavf/iavf_fdir.c @@ -75,6 +75,19 @@ IAVF_INSET_IPV4_SRC | IAVF_INSET_IPV4_DST | \ IAVF_INSET_GTPU_TEID) +#define IAVF_FDIR_INSET_GTPU_IPV4 (\ + IAVF_INSET_TUN_IPV4_SRC | IAVF_INSET_TUN_IPV4_DST | \ + IAVF_INSET_TUN_IPV4_PROTO | IAVF_INSET_TUN_IPV4_TOS | \ + IAVF_INSET_TUN_IPV4_TTL) + +#define IAVF_FDIR_INSET_GTPU_IPV4_UDP (\ + IAVF_FDIR_INSET_GTPU_IPV4 | \ + IAVF_INSET_TUN_UDP_SRC_PORT | IAVF_INSET_TUN_UDP_DST_PORT) + +#define IAVF_FDIR_INSET_GTPU_IPV4_TCP (\ + IAVF_FDIR_INSET_GTPU_IPV4 | \ + IAVF_INSET_TUN_TCP_SRC_PORT | IAVF_INSET_TUN_TCP_DST_PORT) + #define IAVF_FDIR_INSET_IPV4_GTPU_EH (\ IAVF_INSET_IPV4_SRC | IAVF_INSET_IPV4_DST | \ IAVF_INSET_GTPU_TEID | IAVF_INSET_GTPU_QFI) @@ -121,7 +134,13 @@ static struct iavf_pattern_match_item iavf_fdir_pattern[] = { {iavf_pattern_eth_ipv6_tcp, IAVF_FDIR_INSET_ETH_IPV6_TCP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv6_sctp, IAVF_FDIR_INSET_ETH_IPV6_SCTP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu, IAVF_FDIR_INSET_IPV4_GTPU, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv4, IAVF_FDIR_INSET_GTPU_IPV4, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv4_udp, IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv4_tcp, IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_eh, IAVF_FDIR_INSET_IPV4_GTPU_EH, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv4, IAVF_FDIR_INSET_GTPU_IPV4, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_udp,IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp,IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv6_gtpu, IAVF_FDIR_INSET_IPV6_GTPU, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv6_gtpu_eh, IAVF_FDIR_INSET_IPV6_GTPU_EH, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_l2tpv3, IAVF_FDIR_INSET_L2TPV3OIP, IAVF_INSET_NONE}, @@ -534,6 +553,7 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, enum rte_flow_item_type next_type; uint16_t ether_type; + u8 tun_inner = 0; int layer = 0; struct virtchnl_proto_hdr *hdr; @@ -650,6 +670,11 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, IPV4, DST); } + if (tun_inner) { + input_set &= ~IAVF_PROT_IPV4_OUTER; + input_set |= IAVF_PROT_IPV4_INNER; + } + rte_memcpy(hdr->buffer, &ipv4_spec->hdr, sizeof(ipv4_spec->hdr)); @@ -736,6 +761,11 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, UDP, DST_PORT); } + if (tun_inner) { + input_set &= ~IAVF_PROT_UDP_OUTER; + input_set |= IAVF_PROT_UDP_INNER; + } + if (l3 == RTE_FLOW_ITEM_TYPE_IPV4) rte_memcpy(hdr->buffer, &udp_spec->hdr, @@ -780,6 +810,11 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, TCP, DST_PORT); } + if (tun_inner) { + input_set &= ~IAVF_PROT_TCP_OUTER; + input_set |= IAVF_PROT_TCP_INNER; + } + if (l3 == RTE_FLOW_ITEM_TYPE_IPV4) rte_memcpy(hdr->buffer, &tcp_spec->hdr, @@ -858,6 +893,8 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, gtp_spec, sizeof(*gtp_spec)); } + tun_inner = 1; + filter->add_fltr.rule_cfg.proto_hdrs.count = ++layer; break; diff --git a/drivers/net/iavf/iavf_generic_flow.h b/drivers/net/iavf/iavf_generic_flow.h index 0ccf5901b4..f7bdd094e1 100644 --- a/drivers/net/iavf/iavf_generic_flow.h +++ b/drivers/net/iavf/iavf_generic_flow.h @@ -95,6 +95,17 @@ #define IAVF_INSET_IPV6_TC \ (IAVF_PROT_IPV6_OUTER | IAVF_IP_TOS) +#define IAVF_INSET_TUN_IPV4_SRC \ + (IAVF_PROT_IPV4_INNER | IAVF_IP_SRC) +#define IAVF_INSET_TUN_IPV4_DST \ + (IAVF_PROT_IPV4_INNER | IAVF_IP_DST) +#define IAVF_INSET_TUN_IPV4_TOS \ + (IAVF_PROT_IPV4_INNER | IAVF_IP_TOS) +#define IAVF_INSET_TUN_IPV4_PROTO \ + (IAVF_PROT_IPV4_INNER | IAVF_IP_PROTO) +#define IAVF_INSET_TUN_IPV4_TTL \ + (IAVF_PROT_IPV4_INNER | IAVF_IP_TTL) + #define IAVF_INSET_TCP_SRC_PORT \ (IAVF_PROT_TCP_OUTER | IAVF_SPORT) #define IAVF_INSET_TCP_DST_PORT \ @@ -103,6 +114,16 @@ (IAVF_PROT_UDP_OUTER | IAVF_SPORT) #define IAVF_INSET_UDP_DST_PORT \ (IAVF_PROT_UDP_OUTER | IAVF_DPORT) + +#define IAVF_INSET_TUN_TCP_SRC_PORT \ + (IAVF_PROT_TCP_INNER | IAVF_SPORT) +#define IAVF_INSET_TUN_TCP_DST_PORT \ + (IAVF_PROT_TCP_INNER | IAVF_DPORT) +#define IAVF_INSET_TUN_UDP_SRC_PORT \ + (IAVF_PROT_UDP_INNER | IAVF_SPORT) +#define IAVF_INSET_TUN_UDP_DST_PORT \ + (IAVF_PROT_UDP_INNER | IAVF_DPORT) + #define IAVF_INSET_SCTP_SRC_PORT \ (IAVF_PROT_SCTP_OUTER | IAVF_SPORT) #define IAVF_INSET_SCTP_DST_PORT \ -- 2.25.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [dpdk-dev] [PATCH v3 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR. 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 1/3] net/iavf: support GTPU inner IPv4 for FDIR Junfeng Guo @ 2021-03-26 14:29 ` Junfeng Guo 2021-03-26 6:41 ` Zhang, Qi Z ` (3 more replies) 0 siblings, 4 replies; 18+ messages in thread From: Junfeng Guo @ 2021-03-26 14:29 UTC (permalink / raw) To: qi.z.zhang, jingjing.wu, beilei.xing Cc: dev, haiyue.wang, yuying.zhang, junfeng.guo Support GTPU_(EH)_IPV4/IPV6 inner L3 and L4 fields matching for AVF FDIR. v2: * add release notes for 21.05. v3: * update release notes for 21.05. [PATCH v3 1/3] support GTPU inner IPv4 for FDIR. [PATCH v3 2/3] support GTPU inner IPv6 for FDIR. [PATCH v3 3/3] add release notes for 21.05. Junfeng Guo (3): net/iavf: support GTPU inner IPv4 for FDIR net/iavf: support GTPU inner IPv6 for FDIR doc: add release notes for 21.05 doc/guides/rel_notes/release_21_05.rst | 6 +++ drivers/net/iavf/iavf_fdir.c | 61 ++++++++++++++++++++++++++ drivers/net/iavf/iavf_generic_flow.h | 31 +++++++++++++ 3 files changed, 98 insertions(+) -- 2.25.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [dpdk-dev] [PATCH v3 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR. 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR Junfeng Guo @ 2021-03-26 6:41 ` Zhang, Qi Z 2021-03-31 14:54 ` Ferruh Yigit 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 1/3] net/iavf: support GTPU inner IPv4 for FDIR Junfeng Guo ` (2 subsequent siblings) 3 siblings, 1 reply; 18+ messages in thread From: Zhang, Qi Z @ 2021-03-26 6:41 UTC (permalink / raw) To: Guo, Junfeng, Wu, Jingjing, Xing, Beilei; +Cc: dev, Wang, Haiyue, Zhang, Yuying > -----Original Message----- > From: Guo, Junfeng <junfeng.guo@intel.com> > Sent: Friday, March 26, 2021 10:30 PM > To: Zhang, Qi Z <qi.z.zhang@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>; > Xing, Beilei <beilei.xing@intel.com> > Cc: dev@dpdk.org; Wang, Haiyue <haiyue.wang@intel.com>; Zhang, Yuying > <yuying.zhang@intel.com>; Guo, Junfeng <junfeng.guo@intel.com> > Subject: [PATCH v3 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR. > > Support GTPU_(EH)_IPV4/IPV6 inner L3 and L4 fields matching for AVF FDIR. > > v2: > * add release notes for 21.05. > v3: > * update release notes for 21.05. > > [PATCH v3 1/3] support GTPU inner IPv4 for FDIR. > [PATCH v3 2/3] support GTPU inner IPv6 for FDIR. > [PATCH v3 3/3] add release notes for 21.05. > > Junfeng Guo (3): > net/iavf: support GTPU inner IPv4 for FDIR > net/iavf: support GTPU inner IPv6 for FDIR > doc: add release notes for 21.05 > > doc/guides/rel_notes/release_21_05.rst | 6 +++ > drivers/net/iavf/iavf_fdir.c | 61 ++++++++++++++++++++++++++ > drivers/net/iavf/iavf_generic_flow.h | 31 +++++++++++++ > 3 files changed, 98 insertions(+) > > -- > 2.25.1 Acked-by: Qi Zhang <qi.z.zhang@intel.com> Applied to dpdk-next-net-intel. Thanks Qi ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [dpdk-dev] [PATCH v3 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR. 2021-03-26 6:41 ` Zhang, Qi Z @ 2021-03-31 14:54 ` Ferruh Yigit 0 siblings, 0 replies; 18+ messages in thread From: Ferruh Yigit @ 2021-03-31 14:54 UTC (permalink / raw) To: Zhang, Qi Z, Guo, Junfeng, Wu, Jingjing, Xing, Beilei Cc: dev, Wang, Haiyue, Zhang, Yuying On 3/26/2021 6:41 AM, Zhang, Qi Z wrote: > > >> -----Original Message----- >> From: Guo, Junfeng <junfeng.guo@intel.com> >> Sent: Friday, March 26, 2021 10:30 PM >> To: Zhang, Qi Z <qi.z.zhang@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>; >> Xing, Beilei <beilei.xing@intel.com> >> Cc: dev@dpdk.org; Wang, Haiyue <haiyue.wang@intel.com>; Zhang, Yuying >> <yuying.zhang@intel.com>; Guo, Junfeng <junfeng.guo@intel.com> >> Subject: [PATCH v3 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR. >> >> Support GTPU_(EH)_IPV4/IPV6 inner L3 and L4 fields matching for AVF FDIR. >> >> v2: >> * add release notes for 21.05. >> v3: >> * update release notes for 21.05. >> >> [PATCH v3 1/3] support GTPU inner IPv4 for FDIR. >> [PATCH v3 2/3] support GTPU inner IPv6 for FDIR. >> [PATCH v3 3/3] add release notes for 21.05. >> >> Junfeng Guo (3): >> net/iavf: support GTPU inner IPv4 for FDIR >> net/iavf: support GTPU inner IPv6 for FDIR >> doc: add release notes for 21.05 >> >> doc/guides/rel_notes/release_21_05.rst | 6 +++ >> drivers/net/iavf/iavf_fdir.c | 61 ++++++++++++++++++++++++++ >> drivers/net/iavf/iavf_generic_flow.h | 31 +++++++++++++ >> 3 files changed, 98 insertions(+) >> >> -- >> 2.25.1 > > Acked-by: Qi Zhang <qi.z.zhang@intel.com> > > Applied to dpdk-next-net-intel. > Release notes update patch merged to actual patch in next-net. ^ permalink raw reply [flat|nested] 18+ messages in thread
* [dpdk-dev] [PATCH v3 1/3] net/iavf: support GTPU inner IPv4 for FDIR 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR Junfeng Guo 2021-03-26 6:41 ` Zhang, Qi Z @ 2021-03-26 14:29 ` Junfeng Guo 2021-03-29 7:50 ` [dpdk-dev] rte_flow ageing David Bouyeure ` (2 more replies) 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 2/3] net/iavf: support GTPU inner IPv6 for FDIR Junfeng Guo 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 3/3] doc: add release notes for 21.05 Junfeng Guo 3 siblings, 3 replies; 18+ messages in thread From: Junfeng Guo @ 2021-03-26 14:29 UTC (permalink / raw) To: qi.z.zhang, jingjing.wu, beilei.xing Cc: dev, haiyue.wang, yuying.zhang, junfeng.guo Support GTPU_(EH)_IPV4 inner L3 and L4 fields matching for AVF FDIR. +------------------------------+---------------------------------+ | Pattern | Input Set | +------------------------------+---------------------------------+ | eth/ipv4/gtpu/ipv4 | inner: src/dst ip | | eth/ipv4/gtpu/ipv4/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/ipv4/tcp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh/ipv4 | inner: src/dst ip | | eth/ipv4/gtpu/eh/ipv4/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh/ipv4/tcp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(0)/ipv4 | inner: src/dst ip | | eth/ipv4/gtpu/eh(0)/ipv4/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(0)/ipv4/tcp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(1)/ipv4 | inner: src/dst ip | | eth/ipv4/gtpu/eh(1)/ipv4/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(1)/ipv4/tcp | inner: src/dst ip, src/dst port | +------------------------------+---------------------------------+ Signed-off-by: Junfeng Guo <junfeng.guo@intel.com> --- drivers/net/iavf/iavf_fdir.c | 37 ++++++++++++++++++++++++++++ drivers/net/iavf/iavf_generic_flow.h | 21 ++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/drivers/net/iavf/iavf_fdir.c b/drivers/net/iavf/iavf_fdir.c index 4e864b4b9c..a15574c9ea 100644 --- a/drivers/net/iavf/iavf_fdir.c +++ b/drivers/net/iavf/iavf_fdir.c @@ -75,6 +75,19 @@ IAVF_INSET_IPV4_SRC | IAVF_INSET_IPV4_DST | \ IAVF_INSET_GTPU_TEID) +#define IAVF_FDIR_INSET_GTPU_IPV4 (\ + IAVF_INSET_TUN_IPV4_SRC | IAVF_INSET_TUN_IPV4_DST | \ + IAVF_INSET_TUN_IPV4_PROTO | IAVF_INSET_TUN_IPV4_TOS | \ + IAVF_INSET_TUN_IPV4_TTL) + +#define IAVF_FDIR_INSET_GTPU_IPV4_UDP (\ + IAVF_FDIR_INSET_GTPU_IPV4 | \ + IAVF_INSET_TUN_UDP_SRC_PORT | IAVF_INSET_TUN_UDP_DST_PORT) + +#define IAVF_FDIR_INSET_GTPU_IPV4_TCP (\ + IAVF_FDIR_INSET_GTPU_IPV4 | \ + IAVF_INSET_TUN_TCP_SRC_PORT | IAVF_INSET_TUN_TCP_DST_PORT) + #define IAVF_FDIR_INSET_IPV4_GTPU_EH (\ IAVF_INSET_IPV4_SRC | IAVF_INSET_IPV4_DST | \ IAVF_INSET_GTPU_TEID | IAVF_INSET_GTPU_QFI) @@ -121,7 +134,13 @@ static struct iavf_pattern_match_item iavf_fdir_pattern[] = { {iavf_pattern_eth_ipv6_tcp, IAVF_FDIR_INSET_ETH_IPV6_TCP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv6_sctp, IAVF_FDIR_INSET_ETH_IPV6_SCTP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu, IAVF_FDIR_INSET_IPV4_GTPU, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv4, IAVF_FDIR_INSET_GTPU_IPV4, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv4_udp, IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv4_tcp, IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_eh, IAVF_FDIR_INSET_IPV4_GTPU_EH, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv4, IAVF_FDIR_INSET_GTPU_IPV4, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_udp,IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp,IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv6_gtpu, IAVF_FDIR_INSET_IPV6_GTPU, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv6_gtpu_eh, IAVF_FDIR_INSET_IPV6_GTPU_EH, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_l2tpv3, IAVF_FDIR_INSET_L2TPV3OIP, IAVF_INSET_NONE}, @@ -534,6 +553,7 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, enum rte_flow_item_type next_type; uint16_t ether_type; + u8 tun_inner = 0; int layer = 0; struct virtchnl_proto_hdr *hdr; @@ -650,6 +670,11 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, IPV4, DST); } + if (tun_inner) { + input_set &= ~IAVF_PROT_IPV4_OUTER; + input_set |= IAVF_PROT_IPV4_INNER; + } + rte_memcpy(hdr->buffer, &ipv4_spec->hdr, sizeof(ipv4_spec->hdr)); @@ -736,6 +761,11 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, UDP, DST_PORT); } + if (tun_inner) { + input_set &= ~IAVF_PROT_UDP_OUTER; + input_set |= IAVF_PROT_UDP_INNER; + } + if (l3 == RTE_FLOW_ITEM_TYPE_IPV4) rte_memcpy(hdr->buffer, &udp_spec->hdr, @@ -780,6 +810,11 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, TCP, DST_PORT); } + if (tun_inner) { + input_set &= ~IAVF_PROT_TCP_OUTER; + input_set |= IAVF_PROT_TCP_INNER; + } + if (l3 == RTE_FLOW_ITEM_TYPE_IPV4) rte_memcpy(hdr->buffer, &tcp_spec->hdr, @@ -858,6 +893,8 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, gtp_spec, sizeof(*gtp_spec)); } + tun_inner = 1; + filter->add_fltr.rule_cfg.proto_hdrs.count = ++layer; break; diff --git a/drivers/net/iavf/iavf_generic_flow.h b/drivers/net/iavf/iavf_generic_flow.h index 0ccf5901b4..f7bdd094e1 100644 --- a/drivers/net/iavf/iavf_generic_flow.h +++ b/drivers/net/iavf/iavf_generic_flow.h @@ -95,6 +95,17 @@ #define IAVF_INSET_IPV6_TC \ (IAVF_PROT_IPV6_OUTER | IAVF_IP_TOS) +#define IAVF_INSET_TUN_IPV4_SRC \ + (IAVF_PROT_IPV4_INNER | IAVF_IP_SRC) +#define IAVF_INSET_TUN_IPV4_DST \ + (IAVF_PROT_IPV4_INNER | IAVF_IP_DST) +#define IAVF_INSET_TUN_IPV4_TOS \ + (IAVF_PROT_IPV4_INNER | IAVF_IP_TOS) +#define IAVF_INSET_TUN_IPV4_PROTO \ + (IAVF_PROT_IPV4_INNER | IAVF_IP_PROTO) +#define IAVF_INSET_TUN_IPV4_TTL \ + (IAVF_PROT_IPV4_INNER | IAVF_IP_TTL) + #define IAVF_INSET_TCP_SRC_PORT \ (IAVF_PROT_TCP_OUTER | IAVF_SPORT) #define IAVF_INSET_TCP_DST_PORT \ @@ -103,6 +114,16 @@ (IAVF_PROT_UDP_OUTER | IAVF_SPORT) #define IAVF_INSET_UDP_DST_PORT \ (IAVF_PROT_UDP_OUTER | IAVF_DPORT) + +#define IAVF_INSET_TUN_TCP_SRC_PORT \ + (IAVF_PROT_TCP_INNER | IAVF_SPORT) +#define IAVF_INSET_TUN_TCP_DST_PORT \ + (IAVF_PROT_TCP_INNER | IAVF_DPORT) +#define IAVF_INSET_TUN_UDP_SRC_PORT \ + (IAVF_PROT_UDP_INNER | IAVF_SPORT) +#define IAVF_INSET_TUN_UDP_DST_PORT \ + (IAVF_PROT_UDP_INNER | IAVF_DPORT) + #define IAVF_INSET_SCTP_SRC_PORT \ (IAVF_PROT_SCTP_OUTER | IAVF_SPORT) #define IAVF_INSET_SCTP_DST_PORT \ -- 2.25.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [dpdk-dev] rte_flow ageing 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 1/3] net/iavf: support GTPU inner IPv4 for FDIR Junfeng Guo @ 2021-03-29 7:50 ` David Bouyeure 2021-03-29 8:32 ` David Bouyeure 2021-03-31 14:53 ` [dpdk-dev] [PATCH v3 1/3] net/iavf: support GTPU inner IPv4 for FDIR Ferruh Yigit 2021-12-28 14:45 ` [dpdk-dev] net/mlx5: rte_flow_item_gtp restricted to GTPU David Bouyeure 2 siblings, 1 reply; 18+ messages in thread From: David Bouyeure @ 2021-03-29 7:50 UTC (permalink / raw) To: dev Hi, I've found out the pretty useful experimental brand new flow ageing API implemented in the mlx5 PMD. I'm trying it (rte_eth_dev_callback_register(RTE_ETH_EVENT_FLOW_AGED), RTE_FLOW_ACTION_TYPE_AGE) to recover any flow that I previously offloaded. The DPDK version is 20.08 and Mellanox(Connect-X6) OFED drivers are 5.1-2.5.8.0. I eventually don't see the usefulness of the callback since it's actually triggered indirectly by us(the DPDK application) when calling rte_flow_get_aged_flows(). If we don't call it, the callback is called only once. And, calling rte_flow_get_aged_flows() from the callback won't trigger it next time(MLX5_AGE_TRIGGER is reset after the callback call) Furthermore, I don't see the point of computing ageing flows in mlx5_fow.c::mlx5_flow_aging_check() if the client callback isn't called. So far, I can handle the flow ageing from the same thread as the one which is handling the flow direction(rte_flow), it even avoid threads synchronization. But, in the future, I may need to be noticed as soon as possible of a single flow ageing, and thus handle this flow logic from the ageing callback. I may misunderstand the whole ageing API... Thanks a lot for any clarification. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [dpdk-dev] rte_flow ageing 2021-03-29 7:50 ` [dpdk-dev] rte_flow ageing David Bouyeure @ 2021-03-29 8:32 ` David Bouyeure 0 siblings, 0 replies; 18+ messages in thread From: David Bouyeure @ 2021-03-29 8:32 UTC (permalink / raw) To: dev Sorry for the below topic confusion(in-reply-to). On 3/29/21 9:50 AM, David Bouyeure wrote: > Hi, > > > I've found out the pretty useful experimental brand new flow ageing > API implemented in the mlx5 PMD. > > I'm trying it (rte_eth_dev_callback_register(RTE_ETH_EVENT_FLOW_AGED), > RTE_FLOW_ACTION_TYPE_AGE) to recover any flow that I previously > offloaded. > > The DPDK version is 20.08 and Mellanox(Connect-X6) OFED drivers are > 5.1-2.5.8.0. > > I eventually don't see the usefulness of the callback since it's > actually triggered indirectly by us(the DPDK application) when calling > rte_flow_get_aged_flows(). If we don't call it, the callback is called > only once. > > And, calling rte_flow_get_aged_flows() from the callback won't trigger > it next time(MLX5_AGE_TRIGGER is reset after the callback call) > > Furthermore, I don't see the point of computing ageing flows in > mlx5_fow.c::mlx5_flow_aging_check() if the client callback isn't called. > > So far, I can handle the flow ageing from the same thread as the one > which is handling the flow direction(rte_flow), it even avoid threads > synchronization. But, in the future, I may need to be noticed as soon > as possible of a single flow ageing, and thus handle this flow logic > from the ageing callback. > > > I may misunderstand the whole ageing API... Thanks a lot for any > clarification. > ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [dpdk-dev] [PATCH v3 1/3] net/iavf: support GTPU inner IPv4 for FDIR 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 1/3] net/iavf: support GTPU inner IPv4 for FDIR Junfeng Guo 2021-03-29 7:50 ` [dpdk-dev] rte_flow ageing David Bouyeure @ 2021-03-31 14:53 ` Ferruh Yigit 2021-12-28 14:45 ` [dpdk-dev] net/mlx5: rte_flow_item_gtp restricted to GTPU David Bouyeure 2 siblings, 0 replies; 18+ messages in thread From: Ferruh Yigit @ 2021-03-31 14:53 UTC (permalink / raw) To: Junfeng Guo, qi.z.zhang, jingjing.wu, beilei.xing Cc: dev, haiyue.wang, yuying.zhang On 3/26/2021 2:29 PM, Junfeng Guo wrote: > Support GTPU_(EH)_IPV4 inner L3 and L4 fields matching for AVF FDIR. > > +------------------------------+---------------------------------+ > | Pattern | Input Set | > +------------------------------+---------------------------------+ > | eth/ipv4/gtpu/ipv4 | inner: src/dst ip | > | eth/ipv4/gtpu/ipv4/udp | inner: src/dst ip, src/dst port | > | eth/ipv4/gtpu/ipv4/tcp | inner: src/dst ip, src/dst port | > | eth/ipv4/gtpu/eh/ipv4 | inner: src/dst ip | > | eth/ipv4/gtpu/eh/ipv4/udp | inner: src/dst ip, src/dst port | > | eth/ipv4/gtpu/eh/ipv4/tcp | inner: src/dst ip, src/dst port | > | eth/ipv4/gtpu/eh(0)/ipv4 | inner: src/dst ip | > | eth/ipv4/gtpu/eh(0)/ipv4/udp | inner: src/dst ip, src/dst port | > | eth/ipv4/gtpu/eh(0)/ipv4/tcp | inner: src/dst ip, src/dst port | > | eth/ipv4/gtpu/eh(1)/ipv4 | inner: src/dst ip | > | eth/ipv4/gtpu/eh(1)/ipv4/udp | inner: src/dst ip, src/dst port | > | eth/ipv4/gtpu/eh(1)/ipv4/tcp | inner: src/dst ip, src/dst port | > +------------------------------+---------------------------------+ > > Signed-off-by: Junfeng Guo <junfeng.guo@intel.com> <...> > @@ -121,7 +134,13 @@ static struct iavf_pattern_match_item iavf_fdir_pattern[] = { > {iavf_pattern_eth_ipv6_tcp, IAVF_FDIR_INSET_ETH_IPV6_TCP, IAVF_INSET_NONE}, > {iavf_pattern_eth_ipv6_sctp, IAVF_FDIR_INSET_ETH_IPV6_SCTP, IAVF_INSET_NONE}, > {iavf_pattern_eth_ipv4_gtpu, IAVF_FDIR_INSET_IPV4_GTPU, IAVF_INSET_NONE}, > + {iavf_pattern_eth_ipv4_gtpu_ipv4, IAVF_FDIR_INSET_GTPU_IPV4, IAVF_INSET_NONE}, > + {iavf_pattern_eth_ipv4_gtpu_ipv4_udp, IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE}, > + {iavf_pattern_eth_ipv4_gtpu_ipv4_tcp, IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE}, > {iavf_pattern_eth_ipv4_gtpu_eh, IAVF_FDIR_INSET_IPV4_GTPU_EH, IAVF_INSET_NONE}, > + {iavf_pattern_eth_ipv4_gtpu_eh_ipv4, IAVF_FDIR_INSET_GTPU_IPV4, IAVF_INSET_NONE}, > + {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_udp,IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE}, > + {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp,IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE}, Syntax updated to fix checkpatch warning in next-net, space added after ',' & addtional tab removed before third field. ^ permalink raw reply [flat|nested] 18+ messages in thread
* [dpdk-dev] net/mlx5: rte_flow_item_gtp restricted to GTPU 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 1/3] net/iavf: support GTPU inner IPv4 for FDIR Junfeng Guo 2021-03-29 7:50 ` [dpdk-dev] rte_flow ageing David Bouyeure 2021-03-31 14:53 ` [dpdk-dev] [PATCH v3 1/3] net/iavf: support GTPU inner IPv4 for FDIR Ferruh Yigit @ 2021-12-28 14:45 ` David Bouyeure 2 siblings, 0 replies; 18+ messages in thread From: David Bouyeure @ 2021-12-28 14:45 UTC (permalink / raw) To: dev Hi everybody, I've implemented some flows offloading through rte_flow, and I'm just finding out that my GTPC packets aren't handled the same way as my GTPU ones by a Mellanox Connect-X6(FLEX_PARSER_PROFILE_ENABLE==3). In others words, the GTP rules that I set are ignoring GTPC packets. The DPDK api doc doesn't say anything about any GTP-C/GTP-U distinction as far as I know, only that there's no way to set some filter against a GTPv2(GTP-C) header. There's a reference to RTE_GTPU_UDP_PORT in dpdk.20.11.2/drivers/net/mlx5/mlx5_flow_dv.c::flow_dv_translate_item_gtp(), and none to RTE_GTPC_UDP_PORT. Do you confirm that mlx5 rte_flow implementation is definitely ignoring GTPC packets? And, if so, for which reason? Thanks a lot. Regards. ^ permalink raw reply [flat|nested] 18+ messages in thread
* [dpdk-dev] [PATCH v3 2/3] net/iavf: support GTPU inner IPv6 for FDIR 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR Junfeng Guo 2021-03-26 6:41 ` Zhang, Qi Z 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 1/3] net/iavf: support GTPU inner IPv4 for FDIR Junfeng Guo @ 2021-03-26 14:29 ` Junfeng Guo 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 3/3] doc: add release notes for 21.05 Junfeng Guo 3 siblings, 0 replies; 18+ messages in thread From: Junfeng Guo @ 2021-03-26 14:29 UTC (permalink / raw) To: qi.z.zhang, jingjing.wu, beilei.xing Cc: dev, haiyue.wang, yuying.zhang, junfeng.guo Support GTPU_(EH)_IPV6 inner L3 and L4 fields matching for AVF FDIR. +------------------------------+---------------------------------+ | Pattern | Input Set | +------------------------------+---------------------------------+ | eth/ipv4/gtpu/ipv6 | inner: src/dst ip | | eth/ipv4/gtpu/ipv6/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/ipv6/tcp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh/ipv6 | inner: src/dst ip | | eth/ipv4/gtpu/eh/ipv6/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh/ipv6/tcp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(0)/ipv6 | inner: src/dst ip | | eth/ipv4/gtpu/eh(0)/ipv6/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(0)/ipv6/tcp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(1)/ipv6 | inner: src/dst ip | | eth/ipv4/gtpu/eh(1)/ipv6/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(1)/ipv6/tcp | inner: src/dst ip, src/dst port | +------------------------------+---------------------------------+ Signed-off-by: Junfeng Guo <junfeng.guo@intel.com> --- drivers/net/iavf/iavf_fdir.c | 24 ++++++++++++++++++++++++ drivers/net/iavf/iavf_generic_flow.h | 10 ++++++++++ 2 files changed, 34 insertions(+) diff --git a/drivers/net/iavf/iavf_fdir.c b/drivers/net/iavf/iavf_fdir.c index a15574c9ea..94ea2d959e 100644 --- a/drivers/net/iavf/iavf_fdir.c +++ b/drivers/net/iavf/iavf_fdir.c @@ -96,6 +96,19 @@ IAVF_INSET_IPV6_SRC | IAVF_INSET_IPV6_DST | \ IAVF_INSET_GTPU_TEID) +#define IAVF_FDIR_INSET_GTPU_IPV6 (\ + IAVF_INSET_TUN_IPV6_SRC | IAVF_INSET_TUN_IPV6_DST | \ + IAVF_INSET_TUN_IPV6_NEXT_HDR | IAVF_INSET_TUN_IPV6_TC | \ + IAVF_INSET_TUN_IPV6_HOP_LIMIT) + +#define IAVF_FDIR_INSET_GTPU_IPV6_UDP (\ + IAVF_FDIR_INSET_GTPU_IPV6 | \ + IAVF_INSET_TUN_UDP_SRC_PORT | IAVF_INSET_TUN_UDP_DST_PORT) + +#define IAVF_FDIR_INSET_GTPU_IPV6_TCP (\ + IAVF_FDIR_INSET_GTPU_IPV6 | \ + IAVF_INSET_TUN_TCP_SRC_PORT | IAVF_INSET_TUN_TCP_DST_PORT) + #define IAVF_FDIR_INSET_IPV6_GTPU_EH (\ IAVF_INSET_IPV6_SRC | IAVF_INSET_IPV6_DST | \ IAVF_INSET_GTPU_TEID | IAVF_INSET_GTPU_QFI) @@ -137,10 +150,16 @@ static struct iavf_pattern_match_item iavf_fdir_pattern[] = { {iavf_pattern_eth_ipv4_gtpu_ipv4, IAVF_FDIR_INSET_GTPU_IPV4, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_ipv4_udp, IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_ipv4_tcp, IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv6, IAVF_FDIR_INSET_GTPU_IPV6, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv6_udp, IAVF_FDIR_INSET_GTPU_IPV6_UDP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv6_tcp, IAVF_FDIR_INSET_GTPU_IPV6_TCP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_eh, IAVF_FDIR_INSET_IPV4_GTPU_EH, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_eh_ipv4, IAVF_FDIR_INSET_GTPU_IPV4, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_udp,IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp,IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv6, IAVF_FDIR_INSET_GTPU_IPV6, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_udp,IAVF_FDIR_INSET_GTPU_IPV6_UDP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_tcp,IAVF_FDIR_INSET_GTPU_IPV6_TCP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv6_gtpu, IAVF_FDIR_INSET_IPV6_GTPU, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv6_gtpu_eh, IAVF_FDIR_INSET_IPV6_GTPU_EH, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_l2tpv3, IAVF_FDIR_INSET_L2TPV3OIP, IAVF_INSET_NONE}, @@ -727,6 +746,11 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, IPV6, DST); } + if (tun_inner) { + input_set &= ~IAVF_PROT_IPV6_OUTER; + input_set |= IAVF_PROT_IPV6_INNER; + } + rte_memcpy(hdr->buffer, &ipv6_spec->hdr, sizeof(ipv6_spec->hdr)); diff --git a/drivers/net/iavf/iavf_generic_flow.h b/drivers/net/iavf/iavf_generic_flow.h index f7bdd094e1..005eeb3553 100644 --- a/drivers/net/iavf/iavf_generic_flow.h +++ b/drivers/net/iavf/iavf_generic_flow.h @@ -105,6 +105,16 @@ (IAVF_PROT_IPV4_INNER | IAVF_IP_PROTO) #define IAVF_INSET_TUN_IPV4_TTL \ (IAVF_PROT_IPV4_INNER | IAVF_IP_TTL) +#define IAVF_INSET_TUN_IPV6_SRC \ + (IAVF_PROT_IPV6_INNER | IAVF_IP_SRC) +#define IAVF_INSET_TUN_IPV6_DST \ + (IAVF_PROT_IPV6_INNER | IAVF_IP_DST) +#define IAVF_INSET_TUN_IPV6_NEXT_HDR \ + (IAVF_PROT_IPV6_INNER | IAVF_IP_PROTO) +#define IAVF_INSET_TUN_IPV6_HOP_LIMIT \ + (IAVF_PROT_IPV6_INNER | IAVF_IP_TTL) +#define IAVF_INSET_TUN_IPV6_TC \ + (IAVF_PROT_IPV6_INNER | IAVF_IP_TOS) #define IAVF_INSET_TCP_SRC_PORT \ (IAVF_PROT_TCP_OUTER | IAVF_SPORT) -- 2.25.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [dpdk-dev] [PATCH v3 3/3] doc: add release notes for 21.05 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR Junfeng Guo ` (2 preceding siblings ...) 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 2/3] net/iavf: support GTPU inner IPv6 for FDIR Junfeng Guo @ 2021-03-26 14:29 ` Junfeng Guo 3 siblings, 0 replies; 18+ messages in thread From: Junfeng Guo @ 2021-03-26 14:29 UTC (permalink / raw) To: qi.z.zhang, jingjing.wu, beilei.xing Cc: dev, haiyue.wang, yuying.zhang, junfeng.guo Add support for FDIR GTPU_(EH)_IPv4/IPv6 inner L3/L4 fields matching. Signed-off-by: Junfeng Guo <junfeng.guo@intel.com> --- doc/guides/rel_notes/release_21_05.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/guides/rel_notes/release_21_05.rst b/doc/guides/rel_notes/release_21_05.rst index 22aa80a15b..0e4a1b6f57 100644 --- a/doc/guides/rel_notes/release_21_05.rst +++ b/doc/guides/rel_notes/release_21_05.rst @@ -117,6 +117,12 @@ New Features * Added command to display Rx queue used descriptor count. ``show port (port_id) rxq (queue_id) desc used count`` +* **Updated Intel iavf driver.** + + Updated the Intel iavf driver with new features and improvements, including: + + * Added flow filter to support GTPU inner L3/L4 fields matching. + Removed Items ------------- -- 2.25.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [dpdk-dev] [PATCH v2 2/3] net/iavf: support GTPU inner IPv6 for FDIR 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR Junfeng Guo 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 1/3] net/iavf: support GTPU inner IPv4 for FDIR Junfeng Guo @ 2021-03-26 10:42 ` Junfeng Guo 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 3/3] doc: add release notes for 21.05 Junfeng Guo 2 siblings, 0 replies; 18+ messages in thread From: Junfeng Guo @ 2021-03-26 10:42 UTC (permalink / raw) To: qi.z.zhang, jingjing.wu, beilei.xing; +Cc: dev, junfeng.guo Support GTPU_(EH)_IPV6 inner L3 and L4 fields matching for AVF FDIR. +------------------------------+---------------------------------+ | Pattern | Input Set | +------------------------------+---------------------------------+ | eth/ipv4/gtpu/ipv6 | inner: src/dst ip | | eth/ipv4/gtpu/ipv6/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/ipv6/tcp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh/ipv6 | inner: src/dst ip | | eth/ipv4/gtpu/eh/ipv6/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh/ipv6/tcp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(0)/ipv6 | inner: src/dst ip | | eth/ipv4/gtpu/eh(0)/ipv6/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(0)/ipv6/tcp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(1)/ipv6 | inner: src/dst ip | | eth/ipv4/gtpu/eh(1)/ipv6/udp | inner: src/dst ip, src/dst port | | eth/ipv4/gtpu/eh(1)/ipv6/tcp | inner: src/dst ip, src/dst port | +------------------------------+---------------------------------+ Signed-off-by: Junfeng Guo <junfeng.guo@intel.com> --- drivers/net/iavf/iavf_fdir.c | 24 ++++++++++++++++++++++++ drivers/net/iavf/iavf_generic_flow.h | 10 ++++++++++ 2 files changed, 34 insertions(+) diff --git a/drivers/net/iavf/iavf_fdir.c b/drivers/net/iavf/iavf_fdir.c index a15574c9ea..94ea2d959e 100644 --- a/drivers/net/iavf/iavf_fdir.c +++ b/drivers/net/iavf/iavf_fdir.c @@ -96,6 +96,19 @@ IAVF_INSET_IPV6_SRC | IAVF_INSET_IPV6_DST | \ IAVF_INSET_GTPU_TEID) +#define IAVF_FDIR_INSET_GTPU_IPV6 (\ + IAVF_INSET_TUN_IPV6_SRC | IAVF_INSET_TUN_IPV6_DST | \ + IAVF_INSET_TUN_IPV6_NEXT_HDR | IAVF_INSET_TUN_IPV6_TC | \ + IAVF_INSET_TUN_IPV6_HOP_LIMIT) + +#define IAVF_FDIR_INSET_GTPU_IPV6_UDP (\ + IAVF_FDIR_INSET_GTPU_IPV6 | \ + IAVF_INSET_TUN_UDP_SRC_PORT | IAVF_INSET_TUN_UDP_DST_PORT) + +#define IAVF_FDIR_INSET_GTPU_IPV6_TCP (\ + IAVF_FDIR_INSET_GTPU_IPV6 | \ + IAVF_INSET_TUN_TCP_SRC_PORT | IAVF_INSET_TUN_TCP_DST_PORT) + #define IAVF_FDIR_INSET_IPV6_GTPU_EH (\ IAVF_INSET_IPV6_SRC | IAVF_INSET_IPV6_DST | \ IAVF_INSET_GTPU_TEID | IAVF_INSET_GTPU_QFI) @@ -137,10 +150,16 @@ static struct iavf_pattern_match_item iavf_fdir_pattern[] = { {iavf_pattern_eth_ipv4_gtpu_ipv4, IAVF_FDIR_INSET_GTPU_IPV4, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_ipv4_udp, IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_ipv4_tcp, IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv6, IAVF_FDIR_INSET_GTPU_IPV6, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv6_udp, IAVF_FDIR_INSET_GTPU_IPV6_UDP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv6_tcp, IAVF_FDIR_INSET_GTPU_IPV6_TCP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_eh, IAVF_FDIR_INSET_IPV4_GTPU_EH, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_eh_ipv4, IAVF_FDIR_INSET_GTPU_IPV4, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_udp,IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp,IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv6, IAVF_FDIR_INSET_GTPU_IPV6, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_udp,IAVF_FDIR_INSET_GTPU_IPV6_UDP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_tcp,IAVF_FDIR_INSET_GTPU_IPV6_TCP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv6_gtpu, IAVF_FDIR_INSET_IPV6_GTPU, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv6_gtpu_eh, IAVF_FDIR_INSET_IPV6_GTPU_EH, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_l2tpv3, IAVF_FDIR_INSET_L2TPV3OIP, IAVF_INSET_NONE}, @@ -727,6 +746,11 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, IPV6, DST); } + if (tun_inner) { + input_set &= ~IAVF_PROT_IPV6_OUTER; + input_set |= IAVF_PROT_IPV6_INNER; + } + rte_memcpy(hdr->buffer, &ipv6_spec->hdr, sizeof(ipv6_spec->hdr)); diff --git a/drivers/net/iavf/iavf_generic_flow.h b/drivers/net/iavf/iavf_generic_flow.h index f7bdd094e1..005eeb3553 100644 --- a/drivers/net/iavf/iavf_generic_flow.h +++ b/drivers/net/iavf/iavf_generic_flow.h @@ -105,6 +105,16 @@ (IAVF_PROT_IPV4_INNER | IAVF_IP_PROTO) #define IAVF_INSET_TUN_IPV4_TTL \ (IAVF_PROT_IPV4_INNER | IAVF_IP_TTL) +#define IAVF_INSET_TUN_IPV6_SRC \ + (IAVF_PROT_IPV6_INNER | IAVF_IP_SRC) +#define IAVF_INSET_TUN_IPV6_DST \ + (IAVF_PROT_IPV6_INNER | IAVF_IP_DST) +#define IAVF_INSET_TUN_IPV6_NEXT_HDR \ + (IAVF_PROT_IPV6_INNER | IAVF_IP_PROTO) +#define IAVF_INSET_TUN_IPV6_HOP_LIMIT \ + (IAVF_PROT_IPV6_INNER | IAVF_IP_TTL) +#define IAVF_INSET_TUN_IPV6_TC \ + (IAVF_PROT_IPV6_INNER | IAVF_IP_TOS) #define IAVF_INSET_TCP_SRC_PORT \ (IAVF_PROT_TCP_OUTER | IAVF_SPORT) -- 2.25.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [dpdk-dev] [PATCH v2 3/3] doc: add release notes for 21.05 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR Junfeng Guo 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 1/3] net/iavf: support GTPU inner IPv4 for FDIR Junfeng Guo 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 2/3] net/iavf: support GTPU inner IPv6 for FDIR Junfeng Guo @ 2021-03-26 10:42 ` Junfeng Guo 2021-03-26 6:08 ` Zhang, Qi Z 2 siblings, 1 reply; 18+ messages in thread From: Junfeng Guo @ 2021-03-26 10:42 UTC (permalink / raw) To: qi.z.zhang, jingjing.wu, beilei.xing; +Cc: dev, junfeng.guo Add support for FDIR GTPU_(EH)_IPv4/IPv6 inner L3/L4 fields matching. Signed-off-by: Junfeng Guo <junfeng.guo@intel.com> --- doc/guides/rel_notes/release_21_05.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/guides/rel_notes/release_21_05.rst b/doc/guides/rel_notes/release_21_05.rst index 22aa80a15b..f4ec406a6e 100644 --- a/doc/guides/rel_notes/release_21_05.rst +++ b/doc/guides/rel_notes/release_21_05.rst @@ -117,6 +117,12 @@ New Features * Added command to display Rx queue used descriptor count. ``show port (port_id) rxq (queue_id) desc used count`` +* **Updated Intel iavf driver.** + + Updated the Intel iavf driver with new features and improvements, including: + + * Added support for FDIR GTPU_(EH)_IPv4/IPv6 inner L3/L4 fields matching. + Removed Items ------------- -- 2.25.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [dpdk-dev] [PATCH v2 3/3] doc: add release notes for 21.05 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 3/3] doc: add release notes for 21.05 Junfeng Guo @ 2021-03-26 6:08 ` Zhang, Qi Z 0 siblings, 0 replies; 18+ messages in thread From: Zhang, Qi Z @ 2021-03-26 6:08 UTC (permalink / raw) To: Guo, Junfeng, Wu, Jingjing, Xing, Beilei; +Cc: dev > -----Original Message----- > From: Guo, Junfeng <junfeng.guo@intel.com> > Sent: Friday, March 26, 2021 6:42 PM > To: Zhang, Qi Z <qi.z.zhang@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>; > Xing, Beilei <beilei.xing@intel.com> > Cc: dev@dpdk.org; Guo, Junfeng <junfeng.guo@intel.com> > Subject: [PATCH v2 3/3] doc: add release notes for 21.05 > > Add support for FDIR GTPU_(EH)_IPv4/IPv6 inner L3/L4 fields matching. > > Signed-off-by: Junfeng Guo <junfeng.guo@intel.com> > --- > doc/guides/rel_notes/release_21_05.rst | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/doc/guides/rel_notes/release_21_05.rst > b/doc/guides/rel_notes/release_21_05.rst > index 22aa80a15b..f4ec406a6e 100644 > --- a/doc/guides/rel_notes/release_21_05.rst > +++ b/doc/guides/rel_notes/release_21_05.rst > @@ -117,6 +117,12 @@ New Features > * Added command to display Rx queue used descriptor count. > ``show port (port_id) rxq (queue_id) desc used count`` > > +* **Updated Intel iavf driver.** > + > + Updated the Intel iavf driver with new features and improvements, > including: > + > + * Added support for FDIR GTPU_(EH)_IPv4/IPv6 inner L3/L4 fields > matching. How about "Added flow filter to support GTPU inner L3/L4 fields matching." > + > > Removed Items > ------------- > -- > 2.25.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [dpdk-dev] [PATCH 2/2] net/iavf: support GTPU inner IPv6 for FDIR 2021-02-22 10:09 [dpdk-dev] [PATCH 0/2] support GTPU inner IPv4/IPv6 for AVF FDIR Junfeng Guo 2021-02-22 10:09 ` [dpdk-dev] [PATCH 1/2] net/iavf: support GTPU inner IPv4 for FDIR Junfeng Guo @ 2021-02-22 10:09 ` Junfeng Guo 1 sibling, 0 replies; 18+ messages in thread From: Junfeng Guo @ 2021-02-22 10:09 UTC (permalink / raw) To: qi.z.zhang, jingjing.wu, beilei.xing; +Cc: dev, junfeng.guo Support GTPU_(EH)_IPV6 inner L3 and L4 fields matching for AVF FDIR. Signed-off-by: Junfeng Guo <junfeng.guo@intel.com> --- drivers/net/iavf/iavf_fdir.c | 24 ++++++++++++++++++++++++ drivers/net/iavf/iavf_generic_flow.h | 10 ++++++++++ 2 files changed, 34 insertions(+) diff --git a/drivers/net/iavf/iavf_fdir.c b/drivers/net/iavf/iavf_fdir.c index a15574c9ea..94ea2d959e 100644 --- a/drivers/net/iavf/iavf_fdir.c +++ b/drivers/net/iavf/iavf_fdir.c @@ -96,6 +96,19 @@ IAVF_INSET_IPV6_SRC | IAVF_INSET_IPV6_DST | \ IAVF_INSET_GTPU_TEID) +#define IAVF_FDIR_INSET_GTPU_IPV6 (\ + IAVF_INSET_TUN_IPV6_SRC | IAVF_INSET_TUN_IPV6_DST | \ + IAVF_INSET_TUN_IPV6_NEXT_HDR | IAVF_INSET_TUN_IPV6_TC | \ + IAVF_INSET_TUN_IPV6_HOP_LIMIT) + +#define IAVF_FDIR_INSET_GTPU_IPV6_UDP (\ + IAVF_FDIR_INSET_GTPU_IPV6 | \ + IAVF_INSET_TUN_UDP_SRC_PORT | IAVF_INSET_TUN_UDP_DST_PORT) + +#define IAVF_FDIR_INSET_GTPU_IPV6_TCP (\ + IAVF_FDIR_INSET_GTPU_IPV6 | \ + IAVF_INSET_TUN_TCP_SRC_PORT | IAVF_INSET_TUN_TCP_DST_PORT) + #define IAVF_FDIR_INSET_IPV6_GTPU_EH (\ IAVF_INSET_IPV6_SRC | IAVF_INSET_IPV6_DST | \ IAVF_INSET_GTPU_TEID | IAVF_INSET_GTPU_QFI) @@ -137,10 +150,16 @@ static struct iavf_pattern_match_item iavf_fdir_pattern[] = { {iavf_pattern_eth_ipv4_gtpu_ipv4, IAVF_FDIR_INSET_GTPU_IPV4, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_ipv4_udp, IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_ipv4_tcp, IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv6, IAVF_FDIR_INSET_GTPU_IPV6, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv6_udp, IAVF_FDIR_INSET_GTPU_IPV6_UDP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_ipv6_tcp, IAVF_FDIR_INSET_GTPU_IPV6_TCP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_eh, IAVF_FDIR_INSET_IPV4_GTPU_EH, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_eh_ipv4, IAVF_FDIR_INSET_GTPU_IPV4, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_udp,IAVF_FDIR_INSET_GTPU_IPV4_UDP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp,IAVF_FDIR_INSET_GTPU_IPV4_TCP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv6, IAVF_FDIR_INSET_GTPU_IPV6, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_udp,IAVF_FDIR_INSET_GTPU_IPV6_UDP, IAVF_INSET_NONE}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_tcp,IAVF_FDIR_INSET_GTPU_IPV6_TCP, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv6_gtpu, IAVF_FDIR_INSET_IPV6_GTPU, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv6_gtpu_eh, IAVF_FDIR_INSET_IPV6_GTPU_EH, IAVF_INSET_NONE}, {iavf_pattern_eth_ipv4_l2tpv3, IAVF_FDIR_INSET_L2TPV3OIP, IAVF_INSET_NONE}, @@ -727,6 +746,11 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, IPV6, DST); } + if (tun_inner) { + input_set &= ~IAVF_PROT_IPV6_OUTER; + input_set |= IAVF_PROT_IPV6_INNER; + } + rte_memcpy(hdr->buffer, &ipv6_spec->hdr, sizeof(ipv6_spec->hdr)); diff --git a/drivers/net/iavf/iavf_generic_flow.h b/drivers/net/iavf/iavf_generic_flow.h index f7bdd094e1..005eeb3553 100644 --- a/drivers/net/iavf/iavf_generic_flow.h +++ b/drivers/net/iavf/iavf_generic_flow.h @@ -105,6 +105,16 @@ (IAVF_PROT_IPV4_INNER | IAVF_IP_PROTO) #define IAVF_INSET_TUN_IPV4_TTL \ (IAVF_PROT_IPV4_INNER | IAVF_IP_TTL) +#define IAVF_INSET_TUN_IPV6_SRC \ + (IAVF_PROT_IPV6_INNER | IAVF_IP_SRC) +#define IAVF_INSET_TUN_IPV6_DST \ + (IAVF_PROT_IPV6_INNER | IAVF_IP_DST) +#define IAVF_INSET_TUN_IPV6_NEXT_HDR \ + (IAVF_PROT_IPV6_INNER | IAVF_IP_PROTO) +#define IAVF_INSET_TUN_IPV6_HOP_LIMIT \ + (IAVF_PROT_IPV6_INNER | IAVF_IP_TTL) +#define IAVF_INSET_TUN_IPV6_TC \ + (IAVF_PROT_IPV6_INNER | IAVF_IP_TOS) #define IAVF_INSET_TCP_SRC_PORT \ (IAVF_PROT_TCP_OUTER | IAVF_SPORT) -- 2.25.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2021-12-28 14:45 UTC | newest] Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-02-22 10:09 [dpdk-dev] [PATCH 0/2] support GTPU inner IPv4/IPv6 for AVF FDIR Junfeng Guo 2021-02-22 10:09 ` [dpdk-dev] [PATCH 1/2] net/iavf: support GTPU inner IPv4 for FDIR Junfeng Guo 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR Junfeng Guo 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 1/3] net/iavf: support GTPU inner IPv4 for FDIR Junfeng Guo 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 0/3] support GTPU inner IPv4/IPv6 for AVF FDIR Junfeng Guo 2021-03-26 6:41 ` Zhang, Qi Z 2021-03-31 14:54 ` Ferruh Yigit 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 1/3] net/iavf: support GTPU inner IPv4 for FDIR Junfeng Guo 2021-03-29 7:50 ` [dpdk-dev] rte_flow ageing David Bouyeure 2021-03-29 8:32 ` David Bouyeure 2021-03-31 14:53 ` [dpdk-dev] [PATCH v3 1/3] net/iavf: support GTPU inner IPv4 for FDIR Ferruh Yigit 2021-12-28 14:45 ` [dpdk-dev] net/mlx5: rte_flow_item_gtp restricted to GTPU David Bouyeure 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 2/3] net/iavf: support GTPU inner IPv6 for FDIR Junfeng Guo 2021-03-26 14:29 ` [dpdk-dev] [PATCH v3 3/3] doc: add release notes for 21.05 Junfeng Guo 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 2/3] net/iavf: support GTPU inner IPv6 for FDIR Junfeng Guo 2021-03-26 10:42 ` [dpdk-dev] [PATCH v2 3/3] doc: add release notes for 21.05 Junfeng Guo 2021-03-26 6:08 ` Zhang, Qi Z 2021-02-22 10:09 ` [dpdk-dev] [PATCH 2/2] net/iavf: support GTPU inner IPv6 for FDIR Junfeng Guo
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).