net/mlx4: fix creation of flow rule w/o ETH spec

Message ID 1547727139-39646-1-git-send-email-dekelp@mellanox.com
State Accepted, archived
Delegated to: Shahaf Shuler
Headers show
Series
  • net/mlx4: fix creation of flow rule w/o ETH spec
Related show

Checks

Context Check Description
ci/Intel-compilation success Compilation OK
ci/intel-Performance-Testing success Performance Testing PASS
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/checkpatch success coding style OK

Commit Message

Dekel Peled Jan. 17, 2019, 12:12 p.m.
The original commit enabled the creation of flow rule with empty
ETH address and with specific VLAN.
It works fine on PF, but such flow rule is still rejected on VF due
to kernel limitation, which blocks MAC address of all zeroes.

This patch complements the original commit.
It sets byte 0 of MAC address to 0xFF.

Fixes: c0d239263156 ("net/mlx4: support flow w/o ETH spec and with VLAN")
Cc: dekelp@mellanox.com

Signed-off-by: Dekel Peled <dekelp@mellanox.com>
---
 drivers/net/mlx4/mlx4_flow.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Shahaf Shuler Jan. 21, 2019, 7:33 a.m. | #1
Thursday, January 17, 2019 2:12 PM, Dekel Peled:
> Subject: [dpdk-dev] [PATCH] net/mlx4: fix creation of flow rule w/o ETH spec
> 
> The original commit enabled the creation of flow rule with empty ETH
> address and with specific VLAN.
> It works fine on PF, but such flow rule is still rejected on VF due to kernel
> limitation, which blocks MAC address of all zeroes.
> 
> This patch complements the original commit.
> It sets byte 0 of MAC address to 0xFF.
> 
> Fixes: c0d239263156 ("net/mlx4: support flow w/o ETH spec and with VLAN")
> Cc: dekelp@mellanox.com
> 
> Signed-off-by: Dekel Peled <dekelp@mellanox.com>

Applied to next-net-mlx, thanks.

Patch

diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c
index 6c927a6..3abde30 100644
--- a/drivers/net/mlx4/mlx4_flow.c
+++ b/drivers/net/mlx4/mlx4_flow.c
@@ -248,6 +248,7 @@  struct mlx4_drop {
 		.size = sizeof(*eth),
 	};
 	if (!mask) {
+		eth->val.dst_mac[0] = 0xff;
 		flow->ibv_attr->type = IBV_FLOW_ATTR_ALL_DEFAULT;
 		return 0;
 	}