net: Do txq_trans_update() in netdev_start_xmit()
That way we don't have to audit every call site to make sure it is doing this properly. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -2666,10 +2666,8 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
|
||||
|
||||
skb_len = skb->len;
|
||||
trace_net_dev_start_xmit(skb, dev);
|
||||
rc = netdev_start_xmit(skb, dev);
|
||||
rc = netdev_start_xmit(skb, dev, txq);
|
||||
trace_net_dev_xmit(skb, rc, dev, skb_len);
|
||||
if (rc == NETDEV_TX_OK)
|
||||
txq_trans_update(txq);
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -2685,7 +2683,7 @@ gso:
|
||||
|
||||
skb_len = nskb->len;
|
||||
trace_net_dev_start_xmit(nskb, dev);
|
||||
rc = netdev_start_xmit(nskb, dev);
|
||||
rc = netdev_start_xmit(nskb, dev, txq);
|
||||
trace_net_dev_xmit(nskb, rc, dev, skb_len);
|
||||
if (unlikely(rc != NETDEV_TX_OK)) {
|
||||
if (rc & ~NETDEV_TX_MASK)
|
||||
@@ -2694,7 +2692,6 @@ gso:
|
||||
skb->next = nskb;
|
||||
return rc;
|
||||
}
|
||||
txq_trans_update(txq);
|
||||
if (unlikely(netif_xmit_stopped(txq) && skb->next))
|
||||
return NETDEV_TX_BUSY;
|
||||
} while (skb->next);
|
||||
|
||||
@@ -91,9 +91,7 @@ static int netpoll_start_xmit(struct sk_buff *skb, struct net_device *dev,
|
||||
skb->vlan_tci = 0;
|
||||
}
|
||||
|
||||
status = netdev_start_xmit(skb, dev);
|
||||
if (status == NETDEV_TX_OK)
|
||||
txq_trans_update(txq);
|
||||
status = netdev_start_xmit(skb, dev, txq);
|
||||
|
||||
out:
|
||||
return status;
|
||||
|
||||
@@ -3335,11 +3335,10 @@ static void pktgen_xmit(struct pktgen_dev *pkt_dev)
|
||||
goto unlock;
|
||||
}
|
||||
atomic_inc(&(pkt_dev->skb->users));
|
||||
ret = netdev_start_xmit(pkt_dev->skb, odev);
|
||||
ret = netdev_start_xmit(pkt_dev->skb, odev, txq);
|
||||
|
||||
switch (ret) {
|
||||
case NETDEV_TX_OK:
|
||||
txq_trans_update(txq);
|
||||
pkt_dev->last_ok = 1;
|
||||
pkt_dev->sofar++;
|
||||
pkt_dev->seq_num++;
|
||||
|
||||
Reference in New Issue
Block a user