aboutsummaryrefslogtreecommitdiff
path: root/sys/ofed/drivers/infiniband/ulp
diff options
context:
space:
mode:
authorHans Petter Selasky <hselasky@FreeBSD.org>2019-10-15 11:11:21 +0000
committerHans Petter Selasky <hselasky@FreeBSD.org>2019-10-15 11:11:21 +0000
commitf570a1bd0939bbe5b89df53b64f540d4ede8bd2d (patch)
treedffb62cd137eb8f8f27cf725bff1122ad08db8e7 /sys/ofed/drivers/infiniband/ulp
parent51b159306584004fc4d4fba87d64d85f73007491 (diff)
Notes
Diffstat (limited to 'sys/ofed/drivers/infiniband/ulp')
-rw-r--r--sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c3
-rw-r--r--sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c5
-rw-r--r--sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c4
3 files changed, 12 insertions, 0 deletions
diff --git a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
index 2f0ea2fc5783..b3984167fb42 100644
--- a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+++ b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
@@ -845,6 +845,7 @@ static int ipoib_cm_rep_handler(struct ib_cm_id *cm_id, struct ib_cm_event *even
struct ipoib_cm_tx *p = cm_id->context;
struct ipoib_dev_priv *priv = p->priv;
struct ipoib_cm_data *data = event->private_data;
+ struct epoch_tracker et;
struct ifqueue mbqueue;
struct ib_qp_attr qp_attr;
int qp_attr_mask, ret;
@@ -898,6 +899,7 @@ static int ipoib_cm_rep_handler(struct ib_cm_id *cm_id, struct ib_cm_event *even
}
spin_unlock_irq(&priv->lock);
+ NET_EPOCH_ENTER(et);
for (;;) {
struct ifnet *dev = p->priv->dev;
_IF_DEQUEUE(&mbqueue, mb);
@@ -908,6 +910,7 @@ static int ipoib_cm_rep_handler(struct ib_cm_id *cm_id, struct ib_cm_event *even
ipoib_warn(priv, "dev_queue_xmit failed "
"to requeue packet\n");
}
+ NET_EPOCH_EXIT(et);
ret = ib_send_cm_rtu(cm_id, NULL, 0);
if (ret) {
diff --git a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c
index e411000f84b3..99c46b581fc2 100644
--- a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -555,6 +555,7 @@ path_rec_completion(int status, struct ib_sa_path_rec *pathrec, void *path_ptr)
struct ifnet *dev = priv->dev;
struct ipoib_ah *ah = NULL;
struct ipoib_ah *old_ah = NULL;
+ struct epoch_tracker et;
struct ifqueue mbqueue;
struct mbuf *mb;
unsigned long flags;
@@ -609,6 +610,7 @@ path_rec_completion(int status, struct ib_sa_path_rec *pathrec, void *path_ptr)
if (old_ah)
ipoib_put_ah(old_ah);
+ NET_EPOCH_ENTER(et);
for (;;) {
_IF_DEQUEUE(&mbqueue, mb);
if (mb == NULL)
@@ -618,6 +620,7 @@ path_rec_completion(int status, struct ib_sa_path_rec *pathrec, void *path_ptr)
ipoib_warn(priv, "dev_queue_xmit failed "
"to requeue packet\n");
}
+ NET_EPOCH_EXIT(et);
}
static struct ipoib_path *
@@ -1483,6 +1486,8 @@ ipoib_output(struct ifnet *ifp, struct mbuf *m,
int error = 0, is_gw = 0;
short type;
+ NET_EPOCH_ASSERT();
+
if (ro != NULL)
is_gw = (ro->ro_flags & RT_HAS_GW) != 0;
#ifdef MAC
diff --git a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index 3518bd0a117d..6998d3461fe9 100644
--- a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -157,6 +157,7 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast,
struct ipoib_dev_priv *priv = mcast->priv;
struct ifnet *dev = priv->dev;
struct ipoib_ah *ah;
+ struct epoch_tracker et;
int ret;
int set_qkey = 0;
@@ -227,6 +228,8 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast,
}
}
+ NET_EPOCH_ENTER(et);
+
/* actually send any queued packets */
while (mcast->pkt_queue.ifq_len) {
struct mbuf *mb;
@@ -237,6 +240,7 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast,
ipoib_warn(priv, "dev_queue_xmit failed to requeue packet\n");
}
+ NET_EPOCH_EXIT(et);
return 0;
}