On 9/16/2026 1:18 PM, Anatoly Burakov wrote:
Use the new flow graph API and the common parsing framework to implement
flow parser for RSS.

The RSS parser was bypassing the other generic infrastructure, probably
because it was very convoluted and did not map onto that model very well.
It has now been made a first-class citizen.

The hash parser is multiple engines that share state, so each engine will
attach to the shared refcounted RSS configuration state.

Additionally, this is the final engine in i40e, so remaining legacy flow
infrastructure has been removed.

Signed-off-by: Anatoly Burakov<[email protected]>
---
<snip>
+static int
+i40e_hash_flow_query(struct ci_flow *flow,
+               const struct rte_flow_action *action,
+               void *data,
+               struct rte_flow_error *error __rte_unused)
+{
+       struct i40e_flow_engine_hash_flow *hash_flow = (struct 
i40e_flow_engine_hash_flow *)flow;
+       struct i40e_rte_flow_rss_conf *rss_conf = data;
+
+       if (action->type != RTE_FLOW_ACTION_TYPE_RSS) {
+               return rte_flow_error_set(error, EINVAL,
+                               RTE_FLOW_ERROR_TYPE_ACTION, action,
+                               "Unsupported action for query");
+       }
+
+       memcpy(rss_conf, &hash_flow->rss_conf, sizeof(*rss_conf));
seems like a buffer overflow. Destination (*data) is of the sizeof(struct rte_flow_action_rss) (splz ref to testpmd port_flow_query())
+       return 0;
+}
+
<snip>

--
Regards,
Vladimir

Reply via email to