diff options
author | Ron Livne <ronli@voltaire.com> | 2008-07-15 02:48:48 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2008-07-15 02:48:48 -0400 |
commit | 12406734051a26e9fe4c8568e931dfddbb72d431 (patch) | |
tree | 731bbb97c981389fd04684714214b18388ec8b41 /drivers/infiniband/ulp | |
parent | 521e575b9a7324a0bca762622139f69582a042bf (diff) |
IPoIB: Use multicast loopback blocking if available
Set IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK for IPoIB's UD QPs if
supported by the underlying device. This creates an improvement of up
to 39% in bandwidth when sending multicast packets with IPoIB, and an
improvment of 12% in cpu usage.
Signed-off-by: Ron Livne <ronli@voltaire.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/ulp')
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_verbs.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_verbs.c b/drivers/infiniband/ulp/ipoib/ipoib_verbs.c index 810790ae7530..7b8fa36f509b 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_verbs.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_verbs.c | |||
@@ -199,7 +199,10 @@ int ipoib_transport_dev_init(struct net_device *dev, struct ib_device *ca) | |||
199 | init_attr.recv_cq = priv->recv_cq; | 199 | init_attr.recv_cq = priv->recv_cq; |
200 | 200 | ||
201 | if (priv->hca_caps & IB_DEVICE_UD_TSO) | 201 | if (priv->hca_caps & IB_DEVICE_UD_TSO) |
202 | init_attr.create_flags = IB_QP_CREATE_IPOIB_UD_LSO; | 202 | init_attr.create_flags |= IB_QP_CREATE_IPOIB_UD_LSO; |
203 | |||
204 | if (priv->hca_caps & IB_DEVICE_BLOCK_MULTICAST_LOOPBACK) | ||
205 | init_attr.create_flags |= IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK; | ||
203 | 206 | ||
204 | if (dev->features & NETIF_F_SG) | 207 | if (dev->features & NETIF_F_SG) |
205 | init_attr.cap.max_send_sge = MAX_SKB_FRAGS + 1; | 208 | init_attr.cap.max_send_sge = MAX_SKB_FRAGS + 1; |