|
@@ -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);
|
|
|
}
|
|
|
}
|
|
|
}
|