Index: ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c =================================================================== --- ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c (revision 298202) +++ ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c (working copy) @@ -484,6 +484,8 @@ ipoib_dbg_data(priv, "cm recv completion: id %d, status: %d\n", wr_id, wc->status); + CURVNET_SET_QUIET(dev->if_vnet); + if (unlikely(wr_id >= ipoib_recvq_size)) { if (wr_id == (IPOIB_CM_RX_DRAIN_WRID & ~(IPOIB_OP_CM | IPOIB_OP_RECV))) { spin_lock(&priv->lock); @@ -496,7 +498,7 @@ } else ipoib_warn(priv, "cm recv completion event with wrid %d (> %d)\n", wr_id, ipoib_recvq_size); - return; + goto done; } p = wc->qp->qp_context; @@ -520,7 +522,7 @@ queue_work(ipoib_workqueue, &priv->cm.rx_reap_task); spin_unlock(&priv->lock); } - return; + goto done; } } @@ -579,6 +581,9 @@ "for buf %d\n", wr_id); } } +done: + CURVNET_RESTORE(); + return; } static inline int post_send(struct ipoib_dev_priv *priv,