IB/mlx4: Add counter based implementation for QP multicast loopback block
authorEran Ben Elisha <eranbe@mellanox.com>
Thu, 15 Oct 2015 11:44:41 +0000 (14:44 +0300)
committerDoug Ledford <dledford@redhat.com>
Thu, 22 Oct 2015 03:16:47 +0000 (23:16 -0400)
commit7b59f0f9516040157450443b9df591556c0c49a9
tree6d95f81b17611ec58298b54cb1243b71e18eb828
parent3ba8e31d5a4343fa042c976a9ce9c3c16946c92d
IB/mlx4: Add counter based implementation for QP multicast loopback block

Current implementation for MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK is not
supported when link layer is Ethernet.

This patch will add counter based implementation for multicast loopback
prevention. HW can drop multicast loopback packets if sender QP counter
index is equal to receiver QP counter index. If qp flag
MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK is set and link layer is Ethernet,
create a new counter and attach it to the QP so it will continue
receiving multicast loopback traffic but it's own.

The decision if to create a new counter is being made at the qp
modification to RTR after the QP's port is set. When QP is destroyed or
moved back to reset state, delete the counter.

Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/mlx4/mlx4_ib.h
drivers/infiniband/hw/mlx4/qp.c