diff options
author | 2025-01-31 12:04:49 +0000 | |
---|---|---|
committer | 2025-02-06 17:27:19 +0000 | |
commit | 8ddcd48dd7177e37a910721e8349b752d2ac9c5e (patch) | |
tree | 9eefb78c657d21e21b9bccd90adcf83a9fefe564 | |
parent | 854dd1fb26512f0cefbaaf1e5aed2f0c014f694a (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.patch | 64 |
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 + |