|
@@ -766,12 +766,14 @@ void ipoib_cm_send(struct net_device *dev, struct sk_buff *skb, struct ipoib_cm_
|
|
|
skb_orphan(skb);
|
|
|
skb_dst_drop(skb);
|
|
|
|
|
|
- if (netif_queue_stopped(dev))
|
|
|
- if (ib_req_notify_cq(priv->send_cq, IB_CQ_NEXT_COMP |
|
|
|
- IB_CQ_REPORT_MISSED_EVENTS)) {
|
|
|
+ if (netif_queue_stopped(dev)) {
|
|
|
+ rc = ib_req_notify_cq(priv->send_cq, IB_CQ_NEXT_COMP |
|
|
|
+ IB_CQ_REPORT_MISSED_EVENTS);
|
|
|
+ if (unlikely(rc < 0))
|
|
|
ipoib_warn(priv, "IPoIB/CM:request notify on send CQ failed\n");
|
|
|
+ else if (rc)
|
|
|
napi_schedule(&priv->send_napi);
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
rc = post_send(priv, tx, tx->tx_head & (ipoib_sendq_size - 1), tx_req);
|
|
|
if (unlikely(rc)) {
|