* [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 related [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 related [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@dpdk.org, 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@dpdk.org, 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 related [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 related [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 related [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 related [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 related [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@dpdk.org > -----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 related [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 an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.