diff options
-rw-r--r-- | drivers/net/virtio_net.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 59b0e9754ae3..4e84236b62ce 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c | |||
@@ -939,8 +939,12 @@ static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
939 | skb_orphan(skb); | 939 | skb_orphan(skb); |
940 | nf_reset(skb); | 940 | nf_reset(skb); |
941 | 941 | ||
942 | /* Apparently nice girls don't return TX_BUSY; stop the queue | 942 | /* It is better to stop queue if running out of space |
943 | * before it gets out of hand. Naturally, this wastes entries. */ | 943 | * instead of forcing queuing layer to requeue the skb |
944 | * by returning TX_BUSY (and cause a BUG message). | ||
945 | * Since most packets only take 1 or 2 ring slots | ||
946 | * this means 16 slots are typically wasted. | ||
947 | */ | ||
944 | if (sq->vq->num_free < 2+MAX_SKB_FRAGS) { | 948 | if (sq->vq->num_free < 2+MAX_SKB_FRAGS) { |
945 | netif_stop_subqueue(dev, qnum); | 949 | netif_stop_subqueue(dev, qnum); |
946 | if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { | 950 | if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { |