patch 'net/iavf: fix pattern check for flow director parser' has been queued to stable release 20.11.7

luca.boccassi at gmail.com luca.boccassi at gmail.com
Thu Nov 3 10:26:49 CET 2022


Hi,

FYI, your patch has been queued to stable release 20.11.7

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/22. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/565827b86ff1d49977bb5aa829d427989a3eaaa5

Thanks.

Luca Boccassi

---
>From 565827b86ff1d49977bb5aa829d427989a3eaaa5 Mon Sep 17 00:00:00 2001
From: Steve Yang <stevex.yang at intel.com>
Date: Wed, 10 Aug 2022 06:47:51 +0000
Subject: [PATCH] net/iavf: fix pattern check for flow director parser

[ upstream commit e5c7498fae094e97a8e8831979a7112fa260bf92 ]

FDIR rules with masks are not supported in current code. Thus add
pattern check for IPv4/UDP/TCP/SCTP addr/port to terminate the FDIR
programming stage.

Fixes: d5eb3e600d9e ("net/iavf: support flow director basic rule")

Signed-off-by: Steve Yang <stevex.yang at intel.com>
Acked-by: Qi Zhang <qi.z.zhang at intel.com>
---
 drivers/net/iavf/iavf_fdir.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/drivers/net/iavf/iavf_fdir.c b/drivers/net/iavf/iavf_fdir.c
index 01a3fc3f98..c16abb312f 100644
--- a/drivers/net/iavf/iavf_fdir.c
+++ b/drivers/net/iavf/iavf_fdir.c
@@ -571,6 +571,14 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad,
 					return -rte_errno;
 				}
 
+				/* Mask for IPv4 src/dst addrs not supported */
+				if (ipv4_mask->hdr.src_addr &&
+					ipv4_mask->hdr.src_addr != UINT32_MAX)
+					return -rte_errno;
+				if (ipv4_mask->hdr.dst_addr &&
+					ipv4_mask->hdr.dst_addr != UINT32_MAX)
+					return -rte_errno;
+
 				if (ipv4_mask->hdr.type_of_service ==
 								UINT8_MAX) {
 					input_set |= IAVF_INSET_IPV4_TOS;
@@ -670,6 +678,14 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad,
 					return -rte_errno;
 				}
 
+				/* Mask for UDP src/dst ports not supported */
+				if (udp_mask->hdr.src_port &&
+					udp_mask->hdr.src_port != UINT16_MAX)
+					return -rte_errno;
+				if (udp_mask->hdr.dst_port &&
+					udp_mask->hdr.dst_port != UINT16_MAX)
+					return -rte_errno;
+
 				if (udp_mask->hdr.src_port == UINT16_MAX) {
 					input_set |= IAVF_INSET_UDP_SRC_PORT;
 					VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, UDP, SRC_PORT);
@@ -714,6 +730,14 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad,
 					return -rte_errno;
 				}
 
+				/* Mask for TCP src/dst ports not supported */
+				if (tcp_mask->hdr.src_port &&
+					tcp_mask->hdr.src_port != UINT16_MAX)
+					return -rte_errno;
+				if (tcp_mask->hdr.dst_port &&
+					tcp_mask->hdr.dst_port != UINT16_MAX)
+					return -rte_errno;
+
 				if (tcp_mask->hdr.src_port == UINT16_MAX) {
 					input_set |= IAVF_INSET_TCP_SRC_PORT;
 					VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, TCP, SRC_PORT);
@@ -752,6 +776,14 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad,
 					return -rte_errno;
 				}
 
+				/* Mask for SCTP src/dst ports not supported */
+				if (sctp_mask->hdr.src_port &&
+					sctp_mask->hdr.src_port != UINT16_MAX)
+					return -rte_errno;
+				if (sctp_mask->hdr.dst_port &&
+					sctp_mask->hdr.dst_port != UINT16_MAX)
+					return -rte_errno;
+
 				if (sctp_mask->hdr.src_port == UINT16_MAX) {
 					input_set |= IAVF_INSET_SCTP_SRC_PORT;
 					VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, SCTP, SRC_PORT);
-- 
2.34.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2022-11-03 09:27:27.298946540 +0000
+++ 0031-net-iavf-fix-pattern-check-for-flow-director-parser.patch	2022-11-03 09:27:25.373422441 +0000
@@ -1 +1 @@
-From e5c7498fae094e97a8e8831979a7112fa260bf92 Mon Sep 17 00:00:00 2001
+From 565827b86ff1d49977bb5aa829d427989a3eaaa5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e5c7498fae094e97a8e8831979a7112fa260bf92 ]
+
@@ -11 +12,0 @@
-Cc: stable at dpdk.org
@@ -20 +21 @@
-index 2e6b3a9097..a397047fdb 100644
+index 01a3fc3f98..c16abb312f 100644
@@ -23,3 +24,3 @@
-@@ -932,6 +932,14 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad,
- 				return -rte_errno;
- 			}
+@@ -571,6 +571,14 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad,
+ 					return -rte_errno;
+ 				}
@@ -27,7 +28,7 @@
-+			/* Mask for IPv4 src/dst addrs not supported */
-+			if (ipv4_mask->hdr.src_addr &&
-+				ipv4_mask->hdr.src_addr != UINT32_MAX)
-+				return -rte_errno;
-+			if (ipv4_mask->hdr.dst_addr &&
-+				ipv4_mask->hdr.dst_addr != UINT32_MAX)
-+				return -rte_errno;
++				/* Mask for IPv4 src/dst addrs not supported */
++				if (ipv4_mask->hdr.src_addr &&
++					ipv4_mask->hdr.src_addr != UINT32_MAX)
++					return -rte_errno;
++				if (ipv4_mask->hdr.dst_addr &&
++					ipv4_mask->hdr.dst_addr != UINT32_MAX)
++					return -rte_errno;
@@ -35,4 +36,4 @@
- 			if (ipv4_mask->hdr.type_of_service ==
- 			    UINT8_MAX) {
- 				input_set |= IAVF_INSET_IPV4_TOS;
-@@ -1122,6 +1130,14 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad,
+ 				if (ipv4_mask->hdr.type_of_service ==
+ 								UINT8_MAX) {
+ 					input_set |= IAVF_INSET_IPV4_TOS;
+@@ -670,6 +678,14 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad,
@@ -53 +54 @@
-@@ -1171,6 +1187,14 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad,
+@@ -714,6 +730,14 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad,
@@ -68 +69 @@
-@@ -1214,6 +1238,14 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad,
+@@ -752,6 +776,14 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad,


More information about the stable mailing list