aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKai Ji <kai.ji@intel.com>2025-01-31 12:04:49 +0000
committerDave Wallace <dwallacelf@gmail.com>2025-02-06 17:27:19 +0000
commit8ddcd48dd7177e37a910721e8349b752d2ac9c5e (patch)
tree9eefb78c657d21e21b9bccd90adcf83a9fefe564
parent854dd1fb26512f0cefbaaf1e5aed2f0c014f694a (diff)
dpdk: patch add to ice driver for flow action handles
This patch updates the DPDK ICE driver to ensure the correct hardware engine is selected for flow offload, addressing issues with improper engine assignment. Type: fix Change-Id: Ief7bfbe978d8a684b992ca85b07097112e497b80 Signed-off-by: Kai Ji <kai.ji@intel.com>
-rw-r--r--build/external/patches/dpdk_24.11.1/0001-net-ice-fix-how-ice-driver-handles-flows.patch64
1 files changed, 64 insertions, 0 deletions
diff --git a/build/external/patches/dpdk_24.11.1/0001-net-ice-fix-how-ice-driver-handles-flows.patch b/build/external/patches/dpdk_24.11.1/0001-net-ice-fix-how-ice-driver-handles-flows.patch
new file mode 100644
index 00000000000..2808b142557
--- /dev/null
+++ b/build/external/patches/dpdk_24.11.1/0001-net-ice-fix-how-ice-driver-handles-flows.patch
@@ -0,0 +1,64 @@
+From b33b5d621d340d033cd1d181b0ab0c09dc9bd787 Mon Sep 17 00:00:00 2001
+From: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
+Date: Thu, 30 Jan 2025 15:50:11 +0000
+Subject: [PATCH] net/ice: fix how ice driver handles flows
+
+Currently ICE PMD uses group attribute to select the appropriate HW engine
+to offload the flow. This behavior violates the rte_flow API, existing
+documentation/examples, and reveals hardware specific details.
+
+This patch eliminates the use of the group attribute and runs each engine
+parser in the order they work in the HW pipeline.
+
+Fixes: 9c5f0070fa3f ("net/ice: map group to pipeline stage")
+Cc: qi.z.zhang@intel.com
+Cc: stable@dpdk.org
+
+Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
+---
+ drivers/net/ice/ice_generic_flow.c | 27 ++++++++++++++-------------
+ 1 file changed, 14 insertions(+), 13 deletions(-)
+
+diff --git a/drivers/net/ice/ice_generic_flow.c b/drivers/net/ice/ice_generic_flow.c
+index 50d760004f..666c8f3cb9 100644
+--- a/drivers/net/ice/ice_generic_flow.c
++++ b/drivers/net/ice/ice_generic_flow.c
+@@ -2295,21 +2295,22 @@ ice_flow_process_filter(struct rte_eth_dev *dev,
+ return 0;
+ }
+
+- parser = get_flow_parser(attr->group);
+- if (parser == NULL) {
+- rte_flow_error_set(error, EINVAL,
+- RTE_FLOW_ERROR_TYPE_ATTR,
+- NULL, "NULL attribute.");
+- return -rte_errno;
++ for (int i = 0; i < 3; i++) {
++ parser = get_flow_parser(i);
++ if (parser == NULL) {
++ rte_flow_error_set(error, EINVAL,
++ RTE_FLOW_ERROR_TYPE_ATTR,
++ NULL, "NULL attribute.");
++ return -rte_errno;
++ }
++ if (ice_parse_engine(ad, flow, parser, attr->priority,
++ pattern, actions, error)) {
++ *engine = parser->engine;
++ return 0;
++ }
+ }
+
+- if (ice_parse_engine(ad, flow, parser, attr->priority,
+- pattern, actions, error)) {
+- *engine = parser->engine;
+- return 0;
+- } else {
+- return -rte_errno;
+- }
++ return -rte_errno;
+ }
+
+ static int
+--
+2.43.0
+