* [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 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
* 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
* 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
* [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 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
* [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
* [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] [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] 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
* 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] 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
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).