net: Have xmit_list() signal more==true when appropriate.
authorDavid S. Miller <davem@davemloft.net>
Sat, 30 Aug 2014 04:57:30 +0000 (21:57 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 2 Sep 2014 00:39:55 +0000 (17:39 -0700)
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c

index f0ed5a611a979750f0af684c6625fffb79f835e6..6d82194e414b9aa1e35a040656c6c2820b6507a1 100644 (file)
@@ -2600,7 +2600,7 @@ netdev_features_t netif_skb_features(struct sk_buff *skb)
 EXPORT_SYMBOL(netif_skb_features);
 
 static int xmit_one(struct sk_buff *skb, struct net_device *dev,
-                   struct netdev_queue *txq)
+                   struct netdev_queue *txq, bool more)
 {
        unsigned int len;
        int rc;
@@ -2610,7 +2610,7 @@ static int xmit_one(struct sk_buff *skb, struct net_device *dev,
 
        len = skb->len;
        trace_net_dev_start_xmit(skb, dev);
-       rc = netdev_start_xmit(skb, dev, txq, false);
+       rc = netdev_start_xmit(skb, dev, txq, more);
        trace_net_dev_xmit(skb, rc, dev, len);
 
        return rc;
@@ -2626,7 +2626,7 @@ static struct sk_buff *xmit_list(struct sk_buff *first, struct net_device *dev,
                struct sk_buff *next = skb->next;
 
                skb->next = NULL;
-               rc = xmit_one(skb, dev, txq);
+               rc = xmit_one(skb, dev, txq, next != NULL);
                if (unlikely(!dev_xmit_complete(rc))) {
                        skb->next = next;
                        goto out;
@@ -2705,7 +2705,7 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
                        }
                }
 
-               return xmit_one(skb, dev, txq);
+               return xmit_one(skb, dev, txq, false);
        }
 
 gso: