net/mlx5e: Check for needed capability for cvlan matching
[ Upstream commit afe93f71b5d3cdae7209213ec8ef25210b837b93 ]
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
7307003375
commit
c8972cf28e
@@ -2253,11 +2253,13 @@ static int __parse_cls_flower(struct mlx5e_priv *priv,
|
|||||||
misc_parameters);
|
misc_parameters);
|
||||||
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
|
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
|
||||||
struct flow_dissector *dissector = rule->match.dissector;
|
struct flow_dissector *dissector = rule->match.dissector;
|
||||||
|
enum fs_flow_table_type fs_type;
|
||||||
u16 addr_type = 0;
|
u16 addr_type = 0;
|
||||||
u8 ip_proto = 0;
|
u8 ip_proto = 0;
|
||||||
u8 *match_level;
|
u8 *match_level;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
fs_type = mlx5e_is_eswitch_flow(flow) ? FS_FT_FDB : FS_FT_NIC_RX;
|
||||||
match_level = outer_match_level;
|
match_level = outer_match_level;
|
||||||
|
|
||||||
if (dissector->used_keys &
|
if (dissector->used_keys &
|
||||||
@@ -2382,6 +2384,13 @@ static int __parse_cls_flower(struct mlx5e_priv *priv,
|
|||||||
if (match.mask->vlan_id ||
|
if (match.mask->vlan_id ||
|
||||||
match.mask->vlan_priority ||
|
match.mask->vlan_priority ||
|
||||||
match.mask->vlan_tpid) {
|
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)) {
|
if (match.key->vlan_tpid == htons(ETH_P_8021AD)) {
|
||||||
MLX5_SET(fte_match_set_misc, misc_c,
|
MLX5_SET(fte_match_set_misc, misc_c,
|
||||||
outer_second_svlan_tag, 1);
|
outer_second_svlan_tag, 1);
|
||||||
|
Reference in New Issue
Block a user