X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fice%2Fice_generic_flow.c;h=261f0b78e4a052662cf4ad9f3f5cfa6ba23c250a;hb=2913bc4155d209f7d2d11b0d46f46d6ab8ad47e9;hp=8704812622fd0fd84bb6d7af983a482b6ac44f88;hpb=817c9a047749332a5b8c3ebcf28e1fe9159e5b9d;p=dpdk.git diff --git a/drivers/net/ice/ice_generic_flow.c b/drivers/net/ice/ice_generic_flow.c index 8704812622..261f0b78e4 100644 --- a/drivers/net/ice/ice_generic_flow.c +++ b/drivers/net/ice/ice_generic_flow.c @@ -1774,6 +1774,7 @@ enum rte_flow_item_type pattern_eth_ipv6_pfcp[] = { typedef struct ice_flow_engine * (*parse_engine_t)(struct ice_adapter *ad, struct rte_flow *flow, struct ice_parser_list *parser_list, + uint32_t priority, const struct rte_flow_item pattern[], const struct rte_flow_action actions[], struct rte_flow_error *error); @@ -1965,11 +1966,10 @@ ice_flow_valid_attr(struct ice_adapter *ad, } else { *ice_pipeline_stage = ICE_FLOW_CLASSIFY_STAGE_DISTRIBUTOR_ONLY; - /* Not supported */ - if (attr->priority) { + if (attr->priority > 1) { rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ATTR_PRIORITY, - attr, "Not support priority."); + attr, "Only support priority 0 and 1."); return -rte_errno; } } @@ -2240,6 +2240,7 @@ static struct ice_flow_engine * ice_parse_engine_create(struct ice_adapter *ad, struct rte_flow *flow, struct ice_parser_list *parser_list, + uint32_t priority, const struct rte_flow_item pattern[], const struct rte_flow_action actions[], struct rte_flow_error *error) @@ -2255,7 +2256,7 @@ ice_parse_engine_create(struct ice_adapter *ad, if (parser_node->parser->parse_pattern_action(ad, parser_node->parser->array, parser_node->parser->array_len, - pattern, actions, &meta, error) < 0) + pattern, actions, priority, &meta, error) < 0) continue; engine = parser_node->parser->engine; @@ -2273,6 +2274,7 @@ static struct ice_flow_engine * ice_parse_engine_validate(struct ice_adapter *ad, struct rte_flow *flow __rte_unused, struct ice_parser_list *parser_list, + uint32_t priority, const struct rte_flow_item pattern[], const struct rte_flow_action actions[], struct rte_flow_error *error) @@ -2285,7 +2287,7 @@ ice_parse_engine_validate(struct ice_adapter *ad, if (parser_node->parser->parse_pattern_action(ad, parser_node->parser->array, parser_node->parser->array_len, - pattern, actions, NULL, error) < 0) + pattern, actions, priority, NULL, error) < 0) continue; engine = parser_node->parser->engine; @@ -2335,7 +2337,7 @@ ice_flow_process_filter(struct rte_eth_dev *dev, return ret; *engine = ice_parse_engine(ad, flow, &pf->rss_parser_list, - pattern, actions, error); + attr->priority, pattern, actions, error); if (*engine != NULL) return 0; @@ -2343,11 +2345,11 @@ ice_flow_process_filter(struct rte_eth_dev *dev, case ICE_FLOW_CLASSIFY_STAGE_DISTRIBUTOR_ONLY: case ICE_FLOW_CLASSIFY_STAGE_DISTRIBUTOR: *engine = ice_parse_engine(ad, flow, &pf->dist_parser_list, - pattern, actions, error); + attr->priority, pattern, actions, error); break; case ICE_FLOW_CLASSIFY_STAGE_PERMISSION: *engine = ice_parse_engine(ad, flow, &pf->perm_parser_list, - pattern, actions, error); + attr->priority, pattern, actions, error); break; default: return -EINVAL;