net/softnic: support flow mark action

Add support for ethdev flow API mark action.

Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
This commit is contained in:
Cristian Dumitrescu 2018-10-09 16:41:52 +01:00
parent 16d2d65325
commit 974a48d42b

View File

@ -1168,6 +1168,7 @@ flow_rule_action_get(struct pmd_internals *softnic,
struct softnic_table_action_profile_params *params;
int n_jump_queue_rss_drop = 0;
int n_count = 0;
int n_mark = 0;
profile = softnic_table_action_profile_find(softnic,
table->params.action_profile_name);
@ -1475,6 +1476,40 @@ flow_rule_action_get(struct pmd_internals *softnic,
break;
} /* RTE_FLOW_ACTION_TYPE_COUNT */
case RTE_FLOW_ACTION_TYPE_MARK:
{
const struct rte_flow_action_mark *conf = action->conf;
if (conf == NULL)
return rte_flow_error_set(error,
EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION,
action,
"MARK: Null configuration");
if (n_mark)
return rte_flow_error_set(error,
ENOTSUP,
RTE_FLOW_ERROR_TYPE_ACTION,
action,
"Only one MARK action per flow");
if ((params->action_mask &
(1LLU << RTE_TABLE_ACTION_TAG)) == 0)
return rte_flow_error_set(error,
ENOTSUP,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL,
"MARK action not supported by this table");
n_mark = 1;
/* RTE_TABLE_ACTION_TAG */
rule_action->tag.tag = conf->id;
rule_action->action_mask |= 1 << RTE_TABLE_ACTION_TAG;
break;
} /* RTE_FLOW_ACTION_TYPE_MARK */
case RTE_FLOW_ACTION_TYPE_METER:
{
const struct rte_flow_action_meter *conf = action->conf;