[20.11,2/7] net/ice: refine flow priority usage
Checks
Commit Message
From: Yuying Zhang <yuying.zhang@intel.com>
This patch is not for LTS upstream, just for users to cherry-pick.
Current code uses switch filter as backup of FDIR in non-pipeline
mode and Value 1 denotes higher priority. This patch refines priority
usage to match the original design of rte_flow attribute. When priority
is 0, rules are create in switch filter first and FDIR is used as backup.
When priority is 1, only switch filter is supported and has lower priority.
Signed-off-by: Yuying Zhang <yuying.zhang@intel.com>
---
drivers/net/ice/ice_generic_flow.c | 4 ++--
drivers/net/ice/ice_switch_filter.c | 7 +++++--
2 files changed, 7 insertions(+), 4 deletions(-)
@@ -1927,9 +1927,9 @@ ice_register_parser(struct ice_flow_parser *parser,
} else {
if (parser->engine->type == ICE_FLOW_ENGINE_SWITCH ||
parser->engine->type == ICE_FLOW_ENGINE_HASH)
- TAILQ_INSERT_TAIL(list, parser_node, node);
- else if (parser->engine->type == ICE_FLOW_ENGINE_FDIR)
TAILQ_INSERT_HEAD(list, parser_node, node);
+ else if (parser->engine->type == ICE_FLOW_ENGINE_FDIR)
+ TAILQ_INSERT_TAIL(list, parser_node, node);
else if (parser->engine->type == ICE_FLOW_ENGINE_ACL)
TAILQ_INSERT_HEAD(list, parser_node, node);
else
@@ -1560,7 +1560,7 @@ ice_switch_parse_dcf_action(struct ice_dcf_adapter *ad,
rule_info->sw_act.src = rule_info->sw_act.vsi_handle;
rule_info->sw_act.flag = ICE_FLTR_RX;
rule_info->rx = 1;
- rule_info->priority = priority + 5;
+ rule_info->priority = 6 - priority;
return 0;
}
@@ -1639,7 +1639,7 @@ ice_switch_parse_action(struct ice_pf *pf,
rule_info->sw_act.vsi_handle = vsi->idx;
rule_info->rx = 1;
rule_info->sw_act.src = vsi->idx;
- rule_info->priority = priority + 5;
+ rule_info->priority = 6 - priority;
return 0;
@@ -1749,6 +1749,9 @@ ice_switch_parse_pattern_action(struct ice_adapter *ad,
ICE_NON_TUN;
struct ice_pattern_match_item *pattern_match_item = NULL;
+ if (priority != 0 && priority != 1)
+ return rte_errno;
+
for (; item->type != RTE_FLOW_ITEM_TYPE_END; item++) {
item_num++;
if (item->type == RTE_FLOW_ITEM_TYPE_ETH) {