summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJianbo Liu <jianbol@mellanox.com>2018-08-25 03:29:58 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-10-18 09:18:09 +0200
commit6db3fc2839be61f7b897ef35085f2c7ee7dbf665 (patch)
treedb702cdeb5d54871983daf123b9baf1956208687
parent42296a1641967fffd643505415634972e47ace20 (diff)
downloadlinux-stable-6db3fc2839be61f7b897ef35085f2c7ee7dbf665.tar.gz
linux-stable-6db3fc2839be61f7b897ef35085f2c7ee7dbf665.tar.bz2
linux-stable-6db3fc2839be61f7b897ef35085f2c7ee7dbf665.zip
net/mlx5e: Set vlan masks for all offloaded TC rules
[ Upstream commit cee26487620bc9bc3c7db21b6984d91f7bae12ae ] In flow steering, if asked to, the hardware matches on the first ethertype which is not vlan. It's possible to set a rule as follows, which is meant to match on untagged packet, but will match on a vlan packet: tc filter add dev eth0 parent ffff: protocol ip flower ... To avoid this for packets with single tag, we set vlan masks to tell hardware to check the tags for every matched packet. Fixes: 095b6cfd69ce ('net/mlx5e: Add TC vlan match parsing') Signed-off-by: Jianbo Liu <jianbol@mellanox.com> Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_tc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
index dfbcda0d0e08..701af5ffcbc9 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
@@ -1339,6 +1339,9 @@ static int __parse_cls_flower(struct mlx5e_priv *priv,
*match_level = MLX5_MATCH_L2;
}
+ } else {
+ MLX5_SET(fte_match_set_lyr_2_4, headers_c, svlan_tag, 1);
+ MLX5_SET(fte_match_set_lyr_2_4, headers_c, cvlan_tag, 1);
}
if (dissector_uses_key(f->dissector, FLOW_DISSECTOR_KEY_BASIC)) {