ipoib: blocking mcast loopback IPoIB packets 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@voltaire.com> Changes in v2: IB_QP_BLOCK_LOOPBACK QP creation flag in version 1, is now called IB_QP_CREATE_MULTICAST_BLOCK_LOOPBACK. 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-02 16:58:56.000000000 +0300 +++ kernels/linux-2.6.26-rc2/drivers/infiniband/ulp/ipoib/ipoib_verbs.c 2008-06-22 15:42:16.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; _______________________________________________ general mailing list general@lists.openfabrics.org http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
