net/mlx5: fix VLAN inner ethernet type on E-Switch
Checks
Commit Message
The TCA_FLOWER_KEY_VLAN_ETH_TYPE should be specified for the E-Switch
Flows with VLAN and L3 pattern items in the Netlink messages. The patch
adds missing flower key to the messages. This patch partially reverts to
the code smashed by http://patches.dpdk.org/patch/47781
Fixes: 251e8d02cf37 ("net/mlx5: add VXLAN to flow translate routine")
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
---
drivers/net/mlx5/mlx5_flow_tcf.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
Comments
Wednesday, November 21, 2018 7:45 PM, Viacheslav Ovsiienko:
> Subject: [dpdk-dev] [PATCH] net/mlx5: fix VLAN inner ethernet type on E-
> Switch
>
> The TCA_FLOWER_KEY_VLAN_ETH_TYPE should be specified for the E-Switch
> Flows with VLAN and L3 pattern items in the Netlink messages. The patch
> adds missing flower key to the messages. This patch partially reverts to the
> code smashed by
> https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpatc
> hes.dpdk.org%2Fpatch%2F47781&data=02%7C01%7Cshahafs%40mellan
> ox.com%7C6cdd88ebb5494ed2809908d64fd90b8f%7Ca652971c7d2e4d9ba6a4
> d149256f461b%7C0%7C0%7C636784190968004901&sdata=y%2BjABP0X3
> Z%2FQ70nemjj%2FzBaFkJ8ndpK%2BO1VmIH5BGPE%3D&reserved=0
>
> Fixes: 251e8d02cf37 ("net/mlx5: add VXLAN to flow translate routine")
>
> Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Applied to next-net-mlx, thanks.
Ferruh, please let me know if you think it can be added to 18.11, it is relatively small, local, yet important fix.
> ---
> drivers/net/mlx5/mlx5_flow_tcf.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/mlx5/mlx5_flow_tcf.c
> b/drivers/net/mlx5/mlx5_flow_tcf.c
> index 22a866d..fb284c3 100644
> --- a/drivers/net/mlx5/mlx5_flow_tcf.c
> +++ b/drivers/net/mlx5/mlx5_flow_tcf.c
> @@ -3260,7 +3260,8 @@ struct pedit_parser {
> assert(mask.ipv4);
> spec.ipv4 = items->spec;
> if (!decap.vxlan) {
> - if (!eth_type_set && !vlan_eth_type_set)
> + if (!eth_type_set ||
> + (!vlan_eth_type_set && vlan_present))
> mnl_attr_put_u16
> (nlh,
> vlan_present ?
> @@ -3317,14 +3318,14 @@ struct pedit_parser {
> assert(mask.ipv6);
> spec.ipv6 = items->spec;
> if (!decap.vxlan) {
> - if (!eth_type_set || !vlan_eth_type_set) {
> + if (!eth_type_set ||
> + (!vlan_eth_type_set && vlan_present))
> mnl_attr_put_u16
> (nlh,
> vlan_present ?
>
> TCA_FLOWER_KEY_VLAN_ETH_TYPE :
>
> TCA_FLOWER_KEY_ETH_TYPE,
> RTE_BE16(ETH_P_IPV6));
> - }
> eth_type_set = 1;
> vlan_eth_type_set = 1;
> if (mask.ipv6 ==
> &flow_tcf_mask_empty.ipv6)
> --
> 1.8.3.1
@@ -3260,7 +3260,8 @@ struct pedit_parser {
assert(mask.ipv4);
spec.ipv4 = items->spec;
if (!decap.vxlan) {
- if (!eth_type_set && !vlan_eth_type_set)
+ if (!eth_type_set ||
+ (!vlan_eth_type_set && vlan_present))
mnl_attr_put_u16
(nlh,
vlan_present ?
@@ -3317,14 +3318,14 @@ struct pedit_parser {
assert(mask.ipv6);
spec.ipv6 = items->spec;
if (!decap.vxlan) {
- if (!eth_type_set || !vlan_eth_type_set) {
+ if (!eth_type_set ||
+ (!vlan_eth_type_set && vlan_present))
mnl_attr_put_u16
(nlh,
vlan_present ?
TCA_FLOWER_KEY_VLAN_ETH_TYPE :
TCA_FLOWER_KEY_ETH_TYPE,
RTE_BE16(ETH_P_IPV6));
- }
eth_type_set = 1;
vlan_eth_type_set = 1;
if (mask.ipv6 == &flow_tcf_mask_empty.ipv6)