aboutsummaryrefslogtreecommitdiff
path: root/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c
diff options
context:
space:
mode:
authorHans Petter Selasky <hselasky@FreeBSD.org>2015-02-17 08:40:27 +0000
committerHans Petter Selasky <hselasky@FreeBSD.org>2015-02-17 08:40:27 +0000
commitb5c1e0cb8dcc358eed9ba6179ce2555b9ea788af (patch)
tree64746faea5ee1c213d909e22c077f2b289427a99 /sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c
parentfa592170fe180b62ab981da2d37a07aaf941cf0f (diff)
downloadsrc-b5c1e0cb8dcc358eed9ba6179ce2555b9ea788af.tar.gz
src-b5c1e0cb8dcc358eed9ba6179ce2555b9ea788af.zip
Update the infiniband stack to Mellanox's OFED version 2.1.
Highlights: - Multiple verbs API updates - Support for RoCE, RDMA over ethernet All hardware drivers depending on the common infiniband stack has been updated aswell. Discussed with: np @ Sponsored by: Mellanox Technologies MFC after: 1 month
Notes
Notes: svn path=/head/; revision=278886
Diffstat (limited to 'sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c')
-rw-r--r--sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c
index 4fb39b410cd8..814938c101bc 100644
--- a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c
+++ b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c
@@ -383,6 +383,7 @@ ipoib_poll(struct ipoib_dev_priv *priv)
int n, i;
poll_more:
+ spin_lock(&priv->drain_lock);
for (;;) {
n = ib_poll_cq(priv->recv_cq, IPOIB_NUM_WC, priv->ibwc);
@@ -401,6 +402,7 @@ poll_more:
if (n != IPOIB_NUM_WC)
break;
}
+ spin_unlock(&priv->drain_lock);
if (ib_req_notify_cq(priv->recv_cq,
IB_CQ_NEXT_COMP | IB_CQ_REPORT_MISSED_EVENTS))
@@ -707,6 +709,7 @@ void ipoib_drain_cq(struct ipoib_dev_priv *priv)
{
int i, n;
+ spin_lock(&priv->drain_lock);
do {
n = ib_poll_cq(priv->recv_cq, IPOIB_NUM_WC, priv->ibwc);
for (i = 0; i < n; ++i) {
@@ -727,6 +730,7 @@ void ipoib_drain_cq(struct ipoib_dev_priv *priv)
ipoib_ib_handle_rx_wc(priv, priv->ibwc + i);
}
} while (n == IPOIB_NUM_WC);
+ spin_unlock(&priv->drain_lock);
spin_lock(&priv->lock);
while (ipoib_poll_tx(priv))