From 87c7d4acad367a291dd807204339eec757af2e28 Mon Sep 17 00:00:00 2001 From: Kai Ji Date: Fri, 31 Jan 2025 12:04:49 +0000 Subject: 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 --- ...-net-ice-fix-how-ice-driver-handles-flows.patch | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 build/external/patches/dpdk_24.11.1/0001-net-ice-fix-how-ice-driver-handles-flows.patch (limited to 'build/external') 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 +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 +--- + 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 + -- cgit