IB/mlx5: Add raw ethernet local loopback support
authorHuy Nguyen <huyn@mellanox.com>
Tue, 30 May 2017 06:42:54 +0000 (09:42 +0300)
committerDoug Ledford <dledford@redhat.com>
Mon, 24 Jul 2017 14:29:18 +0000 (10:29 -0400)
commitc85023e153e3824661d07307138fdeff41f6d86a
tree037281702fea8a91a6aa5ed45676beadc0b9ccba
parentbded747bb432bc5f7ad6d84ea747368b70ed9df2
IB/mlx5: Add raw ethernet local loopback support

Currently, unicast/multicast loopback raw ethernet
(non-RDMA) packets are sent back to the vport.
A unicast loopback packet is the packet with destination
MAC address the same as the source MAC address.
For multicast, the destination MAC address is in the
vport's multicast filter list.

Moreover, the local loopback is not needed if
there is one or none user space context.

After this patch, the raw ethernet unicast and multicast
local loopback are disabled by default. When there is more
than one user space context, the local loopback is enabled.

Note that when local loopback is disabled, raw ethernet
packets are not looped back to the vport and are forwarded
to the next routing level (eswitch, or multihost switch,
or out to the wire depending on the configuration).

Signed-off-by: Huy Nguyen <huyn@mellanox.com>
Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/mlx5/main.c
drivers/infiniband/hw/mlx5/mlx5_ib.h
drivers/net/ethernet/mellanox/mlx5/core/main.c