From: David S. Miller <davem@davemloft.net>
Date: Thu, 28 Aug 2014 08:39:49 +0000 (-0700)
Subject: virtio_net: flush when in xmit_more mode and under descriptor pressure
X-Git-Tag: firefly_0821_release~176^2~3043^2~205
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=c89fcfd42cbcf839b6737c977f280188eeea92d7;p=firefly-linux-kernel-4.4.55.git

virtio_net: flush when in xmit_more mode and under descriptor pressure

Mirror the changes made to ixgbe in commit 2367a17390138f68b3aa28f2f220b8d7ff8d91f4
("ixgbe: flush when in xmit_more mode and under descriptor pressure")

Signed-off-by: David S. Miller <davem@davemloft.net>
---

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index f0c2824f5e0f..9359a13d285a 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -953,7 +953,7 @@ static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev)
 		}
 	}
 
-	if (!skb->xmit_more)
+	if (__netif_subqueue_stopped(dev, qnum) || !skb->xmit_more)
 		virtqueue_kick(sq->vq);
 
 	return NETDEV_TX_OK;