diff options
Diffstat (limited to 'drivers/infiniband/ulp/ipoib/ipoib_cm.c')
| -rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_cm.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c index 67b0c1d2367..1ef880de3a4 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c @@ -758,9 +758,13 @@ void ipoib_cm_send(struct net_device *dev, struct sk_buff *skb, struct ipoib_cm_  		if (++priv->tx_outstanding == ipoib_sendq_size) {  			ipoib_dbg(priv, "TX ring 0x%x full, stopping kernel net queue\n",  				  tx->qp->qp_num); -			if (ib_req_notify_cq(priv->send_cq, IB_CQ_NEXT_COMP)) -				ipoib_warn(priv, "request notify on send CQ failed\n");  			netif_stop_queue(dev); +			rc = ib_req_notify_cq(priv->send_cq, +				IB_CQ_NEXT_COMP | IB_CQ_REPORT_MISSED_EVENTS); +			if (rc < 0) +				ipoib_warn(priv, "request notify on send CQ failed\n"); +			else if (rc) +				ipoib_send_comp_handler(priv->send_cq, dev);  		}  	}  }  |