|
@@ -939,8 +939,12 @@ static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
skb_orphan(skb);
|
|
skb_orphan(skb);
|
|
nf_reset(skb);
|
|
nf_reset(skb);
|
|
|
|
|
|
- /* Apparently nice girls don't return TX_BUSY; stop the queue
|
|
|
|
- * before it gets out of hand. Naturally, this wastes entries. */
|
|
|
|
|
|
+ /* It is better to stop queue if running out of space
|
|
|
|
+ * instead of forcing queuing layer to requeue the skb
|
|
|
|
+ * by returning TX_BUSY (and cause a BUG message).
|
|
|
|
+ * Since most packets only take 1 or 2 ring slots
|
|
|
|
+ * this means 16 slots are typically wasted.
|
|
|
|
+ */
|
|
if (sq->vq->num_free < 2+MAX_SKB_FRAGS) {
|
|
if (sq->vq->num_free < 2+MAX_SKB_FRAGS) {
|
|
netif_stop_subqueue(dev, qnum);
|
|
netif_stop_subqueue(dev, qnum);
|
|
if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) {
|
|
if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) {
|