Skip to content

Commit

Permalink
net/ice: fix how ice driver handles flows
Browse files Browse the repository at this point in the history
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: 9c5f007 ("net/ice: map group to pipeline stage")
Cc: [email protected]
Cc: [email protected]

Signed-off-by: Vladimir Medvedkin <[email protected]>
Acked-by: Bruce Richardson <[email protected]>
  • Loading branch information
vmedvedk authored and bruce-richardson committed Jan 31, 2025
1 parent 0bf210e commit abf3b7b
Showing 1 changed file with 17 additions and 13 deletions.
30 changes: 17 additions & 13 deletions drivers/net/intel/ice/ice_generic_flow.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@

#define ICE_FLOW_ENGINE_DISABLED(mask, type) ((mask) & BIT(type))

#define ICE_FLOW_ENGINE_NB 3

static struct ice_engine_list engine_list =
TAILQ_HEAD_INITIALIZER(engine_list);

Expand Down Expand Up @@ -2295,21 +2297,23 @@ 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 < ICE_FLOW_ENGINE_NB; 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;
} else {
return -rte_errno;
if (ice_parse_engine(ad, flow, parser, attr->priority,
pattern, actions, error)) {
*engine = parser->engine;
return 0;
}
}

return -rte_errno;
}

static int
Expand Down

0 comments on commit abf3b7b

Please sign in to comment.