@@ -2270,8 +2272,11 @@ static netdev_tx_t atl1c_xmit_frame(struct sk_buff *skb,
atl1c_tx_rollback(adapter, tpd, type);
dev_kfree_skb_any(skb);
} else {
- netdev_sent_queue(adapter->netdev, skb->len);
- atl1c_tx_queue(adapter, skb, tpd, type);
+ bool more = netdev_xmit_more();
+
+ __netdev_sent_queue(adapter->netdev, skb->len, more);
This is probably buggy.
You must check and use the return code of this function,
as in :
bool door_bell = __netdev_sent_queue(adapter->netdev, skb->len,
netdev_xmit_more());
if (door_bell)
atl1c_tx_queue(adapter, type);
+ if (!more)
+ atl1c_tx_queue(adapter, type);
}
return NETDEV_TX_OK;