mirror of https://gitee.com/openkylin/linux.git
net/mlx5e: Check for needed capability for cvlan matching
If not supported show an error and return instead of trying to offload
to the hardware and fail.
Fixes: 699e96ddf4
("net/mlx5e: Support offloading tc double vlan headers match")
Reported-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Roi Dayan <roid@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
5940e64281
commit
afe93f71b5
|
@ -2015,11 +2015,13 @@ static int __parse_cls_flower(struct mlx5e_priv *priv,
|
|||
misc_parameters_3);
|
||||
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
|
||||
struct flow_dissector *dissector = rule->match.dissector;
|
||||
enum fs_flow_table_type fs_type;
|
||||
u16 addr_type = 0;
|
||||
u8 ip_proto = 0;
|
||||
u8 *match_level;
|
||||
int err;
|
||||
|
||||
fs_type = mlx5e_is_eswitch_flow(flow) ? FS_FT_FDB : FS_FT_NIC_RX;
|
||||
match_level = outer_match_level;
|
||||
|
||||
if (dissector->used_keys &
|
||||
|
@ -2145,6 +2147,13 @@ static int __parse_cls_flower(struct mlx5e_priv *priv,
|
|||
if (match.mask->vlan_id ||
|
||||
match.mask->vlan_priority ||
|
||||
match.mask->vlan_tpid) {
|
||||
if (!MLX5_CAP_FLOWTABLE_TYPE(priv->mdev, ft_field_support.outer_second_vid,
|
||||
fs_type)) {
|
||||
NL_SET_ERR_MSG_MOD(extack,
|
||||
"Matching on CVLAN is not supported");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
if (match.key->vlan_tpid == htons(ETH_P_8021AD)) {
|
||||
MLX5_SET(fte_match_set_misc, misc_c,
|
||||
outer_second_svlan_tag, 1);
|
||||
|
|
Loading…
Reference in New Issue