Commit 9b36627a authored by Florian Westphal's avatar Florian Westphal Committed by David S. Miller

net: remove dev->trans_start

previous patches removed all direct accesses to dev->trans_start,
so change the netif_trans_update helper to update trans_start of
netdev queue 0 instead and then remove trans_start from struct net_device.

AFAICS a lot of the netif_trans_update() invocations are now useless
because they occur in ndo_start_xmit and driver doesn't set LLTX
(i.e. stack already took care of the update).

As I can't test any of them it seems better to just leave them alone.
Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 860e9538
...@@ -328,7 +328,7 @@ static void i40e_tx_timeout(struct net_device *netdev) ...@@ -328,7 +328,7 @@ static void i40e_tx_timeout(struct net_device *netdev)
unsigned long trans_start; unsigned long trans_start;
q = netdev_get_tx_queue(netdev, i); q = netdev_get_tx_queue(netdev, i);
trans_start = q->trans_start ? : netdev->trans_start; trans_start = q->trans_start;
if (netif_xmit_stopped(q) && if (netif_xmit_stopped(q) &&
time_after(jiffies, time_after(jiffies,
(trans_start + netdev->watchdog_timeo))) { (trans_start + netdev->watchdog_timeo))) {
......
...@@ -581,7 +581,7 @@ struct netdev_queue { ...@@ -581,7 +581,7 @@ struct netdev_queue {
spinlock_t _xmit_lock ____cacheline_aligned_in_smp; spinlock_t _xmit_lock ____cacheline_aligned_in_smp;
int xmit_lock_owner; int xmit_lock_owner;
/* /*
* please use this field instead of dev->trans_start * Time (in jiffies) of last Tx
*/ */
unsigned long trans_start; unsigned long trans_start;
...@@ -1545,7 +1545,6 @@ enum netdev_priv_flags { ...@@ -1545,7 +1545,6 @@ enum netdev_priv_flags {
* *
* @offload_fwd_mark: Offload device fwding mark * @offload_fwd_mark: Offload device fwding mark
* *
* @trans_start: Time (in jiffies) of last Tx
* @watchdog_timeo: Represents the timeout that is used by * @watchdog_timeo: Represents the timeout that is used by
* the watchdog (see dev_watchdog()) * the watchdog (see dev_watchdog())
* @watchdog_timer: List of timers * @watchdog_timer: List of timers
...@@ -1794,13 +1793,6 @@ struct net_device { ...@@ -1794,13 +1793,6 @@ struct net_device {
#endif #endif
/* These may be needed for future network-power-down code. */ /* These may be needed for future network-power-down code. */
/*
* trans_start here is expensive for high speed devices on SMP,
* please use netdev_queue->trans_start instead.
*/
unsigned long trans_start;
struct timer_list watchdog_timer; struct timer_list watchdog_timer;
int __percpu *pcpu_refcnt; int __percpu *pcpu_refcnt;
...@@ -3484,7 +3476,10 @@ static inline void txq_trans_update(struct netdev_queue *txq) ...@@ -3484,7 +3476,10 @@ static inline void txq_trans_update(struct netdev_queue *txq)
/* legacy drivers only, netdev_start_xmit() sets txq->trans_start */ /* legacy drivers only, netdev_start_xmit() sets txq->trans_start */
static inline void netif_trans_update(struct net_device *dev) static inline void netif_trans_update(struct net_device *dev)
{ {
dev->trans_start = jiffies; struct netdev_queue *txq = netdev_get_tx_queue(dev, 0);
if (txq->trans_start != jiffies)
txq->trans_start = jiffies;
} }
/** /**
......
...@@ -227,13 +227,12 @@ unsigned long dev_trans_start(struct net_device *dev) ...@@ -227,13 +227,12 @@ unsigned long dev_trans_start(struct net_device *dev)
if (is_vlan_dev(dev)) if (is_vlan_dev(dev))
dev = vlan_dev_real_dev(dev); dev = vlan_dev_real_dev(dev);
res = dev->trans_start; res = netdev_get_tx_queue(dev, 0)->trans_start;
for (i = 0; i < dev->num_tx_queues; i++) { for (i = 1; i < dev->num_tx_queues; i++) {
val = netdev_get_tx_queue(dev, i)->trans_start; val = netdev_get_tx_queue(dev, i)->trans_start;
if (val && time_after(val, res)) if (val && time_after(val, res))
res = val; res = val;
} }
dev->trans_start = res;
return res; return res;
} }
...@@ -256,10 +255,7 @@ static void dev_watchdog(unsigned long arg) ...@@ -256,10 +255,7 @@ static void dev_watchdog(unsigned long arg)
struct netdev_queue *txq; struct netdev_queue *txq;
txq = netdev_get_tx_queue(dev, i); txq = netdev_get_tx_queue(dev, i);
/* trans_start = txq->trans_start;
* old device drivers set dev->trans_start
*/
trans_start = txq->trans_start ? : dev->trans_start;
if (netif_xmit_stopped(txq) && if (netif_xmit_stopped(txq) &&
time_after(jiffies, (trans_start + time_after(jiffies, (trans_start +
dev->watchdog_timeo))) { dev->watchdog_timeo))) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment