net/mlx5: fix TPID check for VLAN push action on E-Switch

The VLAN push action on E-Switch supports only 802.1Q (0x8100)
and 802.1AD (0x88A8) Tag Protocol ID (TPID) insertions. The
parameter check for RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN action
is added.

Fixes: 57123c00c1b8 ("net/mlx5: add Linux TC flower driver for E-Switch flow")

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
This commit is contained in:
Viacheslav Ovsiienko 2018-11-21 11:27:49 +00:00 committed by Ferruh Yigit
parent e71b32f172
commit 4022d78982

View File

@ -1887,9 +1887,23 @@ flow_tcf_validate(struct rte_eth_dev *dev,
case RTE_FLOW_ACTION_TYPE_OF_POP_VLAN:
current_action_flag = MLX5_FLOW_ACTION_OF_POP_VLAN;
break;
case RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN:
case RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN: {
rte_be16_t ethertype;
current_action_flag = MLX5_FLOW_ACTION_OF_PUSH_VLAN;
if (!actions->conf)
break;
conf.of_push_vlan = actions->conf;
ethertype = conf.of_push_vlan->ethertype;
if (ethertype != RTE_BE16(ETH_P_8021Q) &&
ethertype != RTE_BE16(ETH_P_8021AD))
return rte_flow_error_set
(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION, actions,
"vlan push TPID must be "
"802.1Q or 802.1AD");
break;
}
case RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID:
if (!(action_flags & MLX5_FLOW_ACTION_OF_PUSH_VLAN))
return rte_flow_error_set