[ofa-general] ***SPAM*** [PATCH 3/3 v3] ib/ipoib: blocking multicast loopback ipoib packets

Ron Livne ronli at voltaire.com
Thu Jun 26 07:35:22 PDT 2008


This patch makes any mcast packet sent via IPoIB
from any host, to be blocked when looped back
to the same host it was sent from.
The blocking is done by the HCA if possible.


This patch creates an improvement of up to 39% in bandwidth when
seding mcast packets with IPoIB.

There is also an improvment of 12% in cpu usage.


Signed-off-by: Ron Livne <ronli at voltaire.com>

Changes in v2:
IB_QP_BLOCK_LOOPBACK QP creation flag in version 1, is now called
IB_QP_CREATE_MULTICAST_BLOCK_LOOPBACK.

Changes in v3:
Whitespaces deleted.

---
 linux-2.6.26-rc2/drivers/infiniband/ulp/ipoib/ipoib_verbs.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Index: kernels/linux-2.6.26-rc2/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
===================================================================
--- kernels.orig/linux-2.6.26-rc2/drivers/infiniband/ulp/ipoib/ipoib_verbs.c	2008-06-26 14:10:01.000000000 +0300
+++ kernels/linux-2.6.26-rc2/drivers/infiniband/ulp/ipoib/ipoib_verbs.c	2008-06-26 14:10:20.000000000 +0300
@@ -153,7 +153,8 @@ int ipoib_transport_dev_init(struct net_
 			.max_recv_sge = IPOIB_UD_RX_SG
 		},
 		.sq_sig_type = IB_SIGNAL_ALL_WR,
-		.qp_type     = IB_QPT_UD
+		.qp_type     = IB_QPT_UD,
+		.create_flags = 0
 	};

 	int ret, size;
@@ -201,7 +202,10 @@ int ipoib_transport_dev_init(struct net_
 	init_attr.recv_cq = priv->recv_cq;

 	if (priv->hca_caps & IB_DEVICE_UD_TSO)
-		init_attr.create_flags = IB_QP_CREATE_IPOIB_UD_LSO;
+		init_attr.create_flags |= IB_QP_CREATE_IPOIB_UD_LSO;
+
+	if (priv->hca_caps & IB_DEVICE_BLOCK_LOOPBACK)
+		init_attr.create_flags |= IB_QP_CREATE_MULTICAST_BLOCK_LOOPBACK;

 	if (dev->features & NETIF_F_SG)
 		init_attr.cap.max_send_sge = MAX_SKB_FRAGS + 1;



More information about the general mailing list