|
@@ -920,6 +920,8 @@ static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
int qnum = skb_get_queue_mapping(skb);
|
|
|
struct send_queue *sq = &vi->sq[qnum];
|
|
|
int err;
|
|
|
+ struct netdev_queue *txq = netdev_get_tx_queue(dev, qnum);
|
|
|
+ bool kick = !skb->xmit_more;
|
|
|
|
|
|
/* Free up any pending old buffers before queueing new ones. */
|
|
|
free_old_xmit_skbs(sq);
|
|
@@ -956,7 +958,7 @@ static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (__netif_subqueue_stopped(dev, qnum) || !skb->xmit_more)
|
|
|
+ if (kick || netif_xmit_stopped(txq))
|
|
|
virtqueue_kick(sq->vq);
|
|
|
|
|
|
return NETDEV_TX_OK;
|