aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/virtio_net.c8
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))) {