Commit 47ee1b9f authored by Ron Livne's avatar Ron Livne Committed by Roland Dreier

IB/core: Add support for multicast loopback blocking

This patch also adds a creation flag for QPs,
IB_QP_CREATE_MULTICAST_BLOCK_LOOPBACK, which when set means that
multicast sends from the QP to a group that the QP is attached to will
not be looped back to the QP's receive queue.  This can be used to
save receive resources when a consumer does not want a local copy of
multicast traffic; for example IPoIB must waste CPU time throwing away
such local copies of multicast traffic.

This patch also adds a device capability flag that shows whether a
device supports this feature or not.
Signed-off-by: default avatarRon Livne <ronli@voltaire.com>
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent 14cc180f
...@@ -104,6 +104,7 @@ enum ib_device_cap_flags { ...@@ -104,6 +104,7 @@ enum ib_device_cap_flags {
IB_DEVICE_UD_IP_CSUM = (1<<18), IB_DEVICE_UD_IP_CSUM = (1<<18),
IB_DEVICE_UD_TSO = (1<<19), IB_DEVICE_UD_TSO = (1<<19),
IB_DEVICE_MEM_MGT_EXTENSIONS = (1<<21), IB_DEVICE_MEM_MGT_EXTENSIONS = (1<<21),
IB_DEVICE_BLOCK_MULTICAST_LOOPBACK = (1<<22),
}; };
enum ib_atomic_cap { enum ib_atomic_cap {
...@@ -555,7 +556,8 @@ enum ib_qp_type { ...@@ -555,7 +556,8 @@ enum ib_qp_type {
}; };
enum ib_qp_create_flags { enum ib_qp_create_flags {
IB_QP_CREATE_IPOIB_UD_LSO = 1 << 0, IB_QP_CREATE_IPOIB_UD_LSO = 1 << 0,
IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK = 1 << 1,
}; };
struct ib_qp_init_attr { struct ib_qp_init_attr {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment