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

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

Checks

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

Commit Message

Dekel Peled Jan. 17, 2019, 12:12 p.m. UTC
  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. UTC | #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;
 	}