Replace all trans_start updates with netif_trans_update helper.
change was done via spatch:
struct net_device *d;
@@
- d->trans_start = jiffies
+ netif_trans_update(d)
Compile tested only.
Cc: user-mode-linux-devel@lists.sourceforge.net
Cc: linux-xtensa@linux-xtensa.org
Cc: linux1394-devel@lists.sourceforge.net
Cc: linux-rdma@vger.kernel.org
Cc: netdev@vger.kernel.org
Cc: MPT-FusionLinux.pdl@broadcom.com
Cc: linux-scsi@vger.kernel.org
Cc: linux-can@vger.kernel.org
Cc: linux-parisc@vger.kernel.org
Cc: linux-omap@vger.kernel.org
Cc: linux-hams@vger.kernel.org
Cc: linux-usb@vger.kernel.org
Cc: linux-wireless@vger.kernel.org
Cc: linux-s390@vger.kernel.org
Cc: devel@driverdev.osuosl.org
Cc: b.a.t.m.a.n@lists.open-mesh.org
Cc: linux-bluetooth@vger.kernel.org
Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Acked-by: Mugunthan V N <mugunthanvnm@ti.com>
Acked-by: Antonio Quartulli <a@unstable.cc>
Signed-off-by: David S. Miller <davem@davemloft.net>
        if (len == skb->len) {
                dev->stats.tx_packets++;
                dev->stats.tx_bytes += skb->len;
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
                netif_start_queue(dev);
 
                /* this is normally done in the interrupt when tx finishes */
 
 static void uml_net_tx_timeout(struct net_device *dev)
 {
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        netif_wake_queue(dev);
 }
 
 
        if (len == skb->len) {
                lp->stats.tx_packets++;
                lp->stats.tx_bytes += skb->len;
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
                netif_start_queue(dev);
 
                /* this is normally done in the interrupt when tx finishes */
 
        dev_kfree_skb(skb);
 
        /* save start time for transmit timeout detection */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        /* start hardware transmitter if necessary */
        spin_lock_irqsave(&info->lock, flags);
        tty_kref_put(tty);
 
        /* enable network layer transmit */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        netif_start_queue(dev);
 
        /* inform generic HDLC layer of current DCD status */
 
 
        spin_unlock_irqrestore(&dev->lock, flags);
 
-       dev->netdev->trans_start = jiffies;
+       netif_trans_update(dev->netdev);
  out:
        if (free)
                fwnet_free_ptask(ptask);
 
                nes_write32(nesdev->regs+NES_WQE_ALLOC,
                                (wqe_count << 24) | (1 << 23) | nesvnic->nic.qp_id);
 
-       netdev->trans_start = jiffies;
+       netif_trans_update(netdev);
 
        return NETDEV_TX_OK;
 }
 
                ipoib_dma_unmap_tx(priv, tx_req);
                dev_kfree_skb_any(skb);
        } else {
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
                ++tx->tx_head;
 
                if (++priv->tx_outstanding == ipoib_sendq_size) {
 
                if (netif_queue_stopped(dev))
                        netif_wake_queue(dev);
        } else {
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
 
                address->last_send = priv->tx_head;
                ++priv->tx_head;
 
        if (lp->in_idx >= MAX_SKB_BUFFERS)
                lp->in_idx = 0; /* wrap around */
        lp->sk_count++;         /* adjust counter */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        /* If we just used up the very last entry in the
         * TX ring on this device, tell the queueing
 
                 * ever called   --KG
                 */
        }
-       ndev->trans_start = jiffies;
+       netif_trans_update(ndev);
        netif_wake_queue(ndev);
 }
 
                        }
                } else {
                        /* Device is connected to an ISDN channel */
-                       ndev->trans_start = jiffies;
+                       netif_trans_update(ndev);
                        if (!lp->dialstate) {
                                /* ISDN connection is established, try sending */
                                int ret;
 
        case X25_IFACE_DATA:
                if (*state == WAN_CONNECTED) {
                        skb_pull(skb, 1);
-                       cprot->net_dev->trans_start = jiffies;
+                       netif_trans_update(cprot->net_dev);
                        ret = (cprot->dops->data_req(cprot, skb));
                        /* prepare for future retransmissions */
                        if (ret) skb_push(skb, 1);
 
                pSimple->Address.High = 0;
 
        mpt_put_msg_frame (LanCtx, mpt_dev, mf);
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        dioprintk((KERN_INFO MYNAM ": %s/%s: Sending packet. FlagsLength = %08x.\n",
                        IOC_AND_NETDEV_NAMES_s_s(dev),
 
        }
        printk(KERN_WARNING "%s: Transmit timed out.\n", dev->name);
        cops_jumpstart(dev);    /* Restart the card. */
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
 }
 
 
        out_8(®s->cantflg, 1 << buf_id);
 
        if (!test_bit(F_TX_PROGRESS, &priv->flags))
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
 
        list_add_tail(&priv->tx_queue[buf_id].list, &priv->tx_head);
 
                        clear_bit(F_TX_PROGRESS, &priv->flags);
                        priv->cur_pri = 0;
                } else {
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
                }
 
                if (!test_bit(F_TX_WAIT_ALL, &priv->flags))
 
        if (urb->status)
                netdev_info(netdev, "Tx URB aborted (%d)\n", urb->status);
 
-       netdev->trans_start = jiffies;
+       netif_trans_update(netdev);
 
        /* transmission complete interrupt */
        netdev->stats.tx_packets++;
                        stats->tx_dropped++;
                }
        } else {
-               netdev->trans_start = jiffies;
+               netif_trans_update(netdev);
 
                /* Slow down tx path */
                if (atomic_read(&dev->active_tx_urbs) >= MAX_TX_URBS ||
 
        if (urb->status)
                netdev_info(netdev, "Tx URB aborted (%d)\n", urb->status);
 
-       netdev->trans_start = jiffies;
+       netif_trans_update(netdev);
 }
 
 static ssize_t show_firmware(struct device *d,
                goto releasebuf;
        }
 
-       netdev->trans_start = jiffies;
+       netif_trans_update(netdev);
 
        /*
         * Release our reference to this URB, the USB core will eventually free
 
                netdev->stats.tx_bytes += context->data_len;
 
                /* prevent tx timeout */
-               netdev->trans_start = jiffies;
+               netif_trans_update(netdev);
                break;
 
        default:
                        stats->tx_dropped++;
                }
        } else {
-               netdev->trans_start = jiffies;
+               netif_trans_update(netdev);
 
                /* slow down tx path */
                if (atomic_read(&dev->active_tx_urbs) >= PCAN_USB_MAX_TX_URBS)
 
 
        myNextTxDesc->skb = skb;
 
-       dev->trans_start = jiffies; /* NETIF_F_LLTX driver :( */
+       netif_trans_update(dev); /* NETIF_F_LLTX driver :( */
 
        e100_hardware_send_packet(np, buf, skb->len);
 
 
                dev->name, inb(ioaddr + TX_STATUS), inw(ioaddr + EL3_STATUS),
                inw(ioaddr + TX_FREE));
        dev->stats.tx_errors++;
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        /* Issue TX_RESET and TX_START commands. */
        outw(TxReset, ioaddr + EL3_CMD);
        outw(TxEnable, ioaddr + EL3_CMD);
 
                if (!(inw(ioaddr + EL3_STATUS) & CmdInProgress))
                        break;
        outw(TxEnable, ioaddr + EL3_CMD);
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        dev->stats.tx_errors++;
        dev->stats.tx_dropped++;
        netif_wake_queue(dev);
 
        netdev_notice(dev, "Transmit timed out!\n");
        dump_status(dev);
        dev->stats.tx_errors++;
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        /* Issue TX_RESET and TX_START commands. */
        tc574_wait_for_completion(dev, TxReset);
        outw(TxEnable, ioaddr + EL3_CMD);
 
        netdev_warn(dev, "Transmit timed out!\n");
        dump_status(dev);
        dev->stats.tx_errors++;
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        /* Issue TX_RESET and TX_START commands. */
        tc589_wait_for_completion(dev, TxReset);
        outw(TxEnable, ioaddr + EL3_CMD);
 
        }
        /* Issue Tx Enable */
        iowrite16(TxEnable, ioaddr + EL3_CMD);
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
 }
 
 /*
 
        {
                ei_local->txing = 1;
                NS8390_trigger_send(dev, send_length, output_page);
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
                if (output_page == ei_local->tx_start_page) 
                {
                        ei_local->tx1 = -1;
                {
                        ei_local->txing = 1;
                        NS8390_trigger_send(dev, ei_local->tx2, ei_local->tx_start_page + 6);
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
                        ei_local->tx2 = -1,
                        ei_local->lasttx = 2;
                }
                {
                        ei_local->txing = 1;
                        NS8390_trigger_send(dev, ei_local->tx1, ei_local->tx_start_page);
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
                        ei_local->tx1 = -1;
                        ei_local->lasttx = 1;
                }
 
                if (ei_local->tx2 > 0) {
                        ei_local->txing = 1;
                        NS8390_trigger_send(dev, ei_local->tx2, ei_local->tx_start_page + 6);
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
                        ei_local->tx2 = -1,
                        ei_local->lasttx = 2;
                } else
                if (ei_local->tx1 > 0) {
                        ei_local->txing = 1;
                        NS8390_trigger_send(dev, ei_local->tx1, ei_local->tx_start_page);
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
                        ei_local->tx1 = -1;
                        ei_local->lasttx = 1;
                } else
 
 
        /* Trigger an immediate transmit demand. */
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        dev->stats.tx_errors++;
        netif_wake_queue(dev);
 }
 
        bfin_mac_enable(lp->phydev);
 
        /* We can accept TX packets again */
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
 }
 
 static void bfin_mac_multicast_hash(struct net_device *dev)
 
        struct et131x_adapter *adapter = netdev_priv(netdev);
 
        /* Save the timestamp for the TX watchdog, prevent a timeout */
-       netdev->trans_start = jiffies;
+       netif_trans_update(netdev);
 
        phy_stop(adapter->phydev);
        et131x_disable_txrx(netdev);
                netif_stop_queue(netdev);
 
        /* Save the timestamp for the TX timeout watchdog */
-       netdev->trans_start = jiffies;
+       netif_trans_update(netdev);
 
        /* TCB is not available */
        if (tx_ring->used >= NUM_TCB)
 
        emac_reset(db);
        emac_init_device(dev);
        /* We can accept TX packets again */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        netif_wake_queue(dev);
 
        /* Restore previous register address */
                       db->membase + EMAC_TX_CTL0_REG);
 
                /* save the time stamp */
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
        } else if (channel == 1) {
                /* set TX len */
                writel(skb->len, db->membase + EMAC_TX_PL1_REG);
                       db->membase + EMAC_TX_CTL1_REG);
 
                /* save the time stamp */
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
        }
 
        if ((db->tx_fifo_stat & 3) == 3) {
 
 
        load_csrs(lp);
        lance_init_ring(dev);
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        status = init_restart_lance(lp);
 #ifdef DEBUG_DRIVER
        printk("Lance restart=%d\n", status);
 {
        printk("lance_tx_timeout\n");
        lance_reset(dev);
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
 }
 EXPORT_SYMBOL_GPL(lance_tx_timeout);
 
        load_csrs(lp);
 
        lance_init_ring(dev);
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_start_queue(dev);
 
        status = init_restart_lance(lp);
 
        /* lance_restart, essentially */
        lance_init_ring(dev);
        REGA( CSR0 ) = CSR0_INEA | CSR0_INIT | CSR0_STRT;
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
 }
 
 
        netdev_err(dev, "au1000_tx_timeout: dev=%p\n", dev);
        au1000_reset_mac(dev);
        au1000_init(dev);
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
 }
 
 
 
        lance_init_ring(dev);
        load_csrs(lp);
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        status = init_restart_lance(lp);
        return status;
 }
 
 #endif
        lance_restart (dev, 0x0043, 1);
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue (dev);
 }
 
 
                if(!p->lock)
                        if (p->tmdnum || !p->xmit_queued)
                                netif_wake_queue(dev);
-               dev->trans_start = jiffies; /* prevent tx timeout */
+               netif_trans_update(dev); /* prevent tx timeout */
        }
        else
                writedatareg(CSR0_STRT | csr0);
                printk("%02x ",p->tmdhead[i].u.s.status);
        printk("\n");
        ni65_lance_reinit(dev);
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
 }
 
 
 #else /* #if RESET_ON_TIMEOUT */
   pr_cont("NOT resetting card\n");
 #endif /* #if RESET_ON_TIMEOUT */
-  dev->trans_start = jiffies; /* prevent tx timeout */
+  netif_trans_update(dev); /* prevent tx timeout */
   netif_wake_queue(dev);
 }
 
 
 {
        struct pcnet32_private *lp = netdev_priv(dev);
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        napi_disable(&lp->napi);
        netif_tx_disable(dev);
 }
        }
        pcnet32_restart(dev, CSR0_NORMAL);
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
 
        spin_unlock_irqrestore(&lp->lock, flags);
 
        }
        lp->init_ring(dev);
        load_csrs(lp);
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        status = init_restart_lance(lp);
        return status;
 }
 
 
 static void alx_netif_stop(struct alx_priv *alx)
 {
-       alx->dev->trans_start = jiffies;
+       netif_trans_update(alx->dev);
        if (netif_carrier_ok(alx->dev)) {
                netif_carrier_off(alx->dev);
                netif_tx_disable(alx->dev);
 
 {
        netdev_warn(dev, "transmit timeout!\n");
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        dev->stats.tx_errors++;
 
        netif_tx_wake_all_queues(dev);
 
        bcmgenet_intrl2_0_writel(priv, int0_enable, INTRL2_CPU_MASK_CLEAR);
        bcmgenet_intrl2_1_writel(priv, int1_enable, INTRL2_CPU_MASK_CLEAR);
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        dev->stats.tx_errors++;
 
 
        spin_lock_irqsave(&sc->sbm_lock, flags);
 
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        dev->stats.tx_errors++;
 
        spin_unlock_irqrestore(&sc->sbm_lock, flags);
 
 
 static inline void tg3_netif_stop(struct tg3 *tp)
 {
-       tp->dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(tp->dev);    /* prevent tx timeout */
        tg3_napi_disable(tp);
        netif_carrier_off(tp->dev);
        netif_tx_disable(tp->dev);
 
        if (status == IQ_SEND_STOP)
                stop_q(lio->netdev, q_idx);
 
-       netdev->trans_start = jiffies;
+       netif_trans_update(netdev);
 
        stats->tx_done++;
        stats->tx_tot_bytes += skb->len;
        netif_info(lio, tx_err, lio->netdev,
                   "Transmit timeout tx_dropped:%ld, waking up queues now!!\n",
                   netdev->stats.tx_dropped);
-       netdev->trans_start = jiffies;
+       netif_trans_update(netdev);
        txqs_wake(netdev);
 }
 
 
        /* Ring the bell.  */
        cvmx_write_csr(p->mix + MIX_ORING2, 1);
 
-       netdev->trans_start = jiffies;
+       netif_trans_update(netdev);
        rv = NETDEV_TX_OK;
 out:
        octeon_mgmt_update_tx_stats(netdev);
 
 
        nicvf_stop(nic->netdev);
        nicvf_open(nic->netdev);
-       nic->netdev->trans_start = jiffies;
+       netif_trans_update(nic->netdev);
 }
 
 static int nicvf_config_loopback(struct nicvf *nic,
 
         * the new TX descriptors and return success.
         */
        txq_advance(&txq->q, ndesc);
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        ring_tx_db(adapter, &txq->q, ndesc);
        return NETDEV_TX_OK;
 
 
        /* Init Driver variable */
        db->tx_pkt_cnt = 0;
        db->queue_pkt_len = 0;
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 }
 
 /* Our watchdog timed out. Called by the networking layer */
        dm9000_init_dm9000(dev);
        dm9000_unmask_interrupts(db);
        /* We can accept TX packets again */
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
 
        /* Restore previous register address */
 
     }
 
     lp->interrupt = UNMASK_INTERRUPTS;
-    dev->trans_start = jiffies; /* prevent tx timeout */
+    netif_trans_update(dev); /* prevent tx timeout */
 
     START_DE4X5;
 
 
            lp->tx_new = (lp->tx_new + 1) % lp->txRingSize;
            outl(POLL_DEMAND, DE4X5_TPD);       /* Start the TX */
-           dev->trans_start = jiffies; /* prevent tx timeout */
+           netif_trans_update(dev); /* prevent tx timeout */
        }
     }
 }
 
                txptr->tdes0 = cpu_to_le32(0x80000000); /* Set owner bit */
                db->tx_packet_cnt++;                    /* Ready to send */
                dw32(DCR1, 0x1);                        /* Issue Tx polling */
-               dev->trans_start = jiffies;             /* saved time stamp */
+               netif_trans_update(dev);                /* saved time stamp */
        } else {
                db->tx_queue_cnt++;                     /* queue TX packet */
                dw32(DCR1, 0x1);                        /* Issue Tx polling */
                db->tx_packet_cnt++;                    /* Ready to send */
                db->tx_queue_cnt--;
                dw32(DCR1, 0x1);                        /* Issue Tx polling */
-               dev->trans_start = jiffies;             /* saved time stamp */
+               netif_trans_update(dev);                /* saved time stamp */
        }
 
        /* Resource available check */
                update_cr6(db->cr6_data | 0x2000, ioaddr);
                dw32(DCR1, 0x1);        /* Issue Tx polling */
                update_cr6(db->cr6_data, ioaddr);
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
        } else
                db->tx_queue_cnt++;     /* Put in TX queue */
 }
 
                        tp->csr6 = new_csr6;
                        /* Restart Tx */
                        tulip_restart_rxtx(tp);
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
                }
        }
 }
                        iowrite32(tp->csr6, ioaddr + CSR6);
                        iowrite32(0x30, ioaddr + CSR12);
                        iowrite32(0x0201F078, ioaddr + 0xB8); /* Turn on autonegotiation. */
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
                }
        } else if (ioread32(ioaddr + CSR5) & TPLnkPass) {
                if (tulip_media_cap[dev->if_port] & MediaIsMII) {
                                tp->csr6 = new_csr6;
                                /* Restart Tx */
                                tulip_restart_rxtx(tp);
-                               dev->trans_start = jiffies;
+                               netif_trans_update(dev);
                                if (tulip_debug > 1)
                                        dev_info(&dev->dev,
                                                 "Changing PNIC configuration to %s %s-duplex, CSR6 %08x\n",
 
 
 out_unlock:
        spin_unlock_irqrestore (&tp->lock, flags);
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue (dev);
 }
 
 
                txptr->tdes0 = cpu_to_le32(0x80000000); /* Set owner bit */
                db->tx_packet_cnt++;                    /* Ready to send */
                uw32(DCR1, 0x1);                        /* Issue Tx polling */
-               dev->trans_start = jiffies;             /* saved time stamp */
+               netif_trans_update(dev);                /* saved time stamp */
        }
 
        /* Tx resource check */
                update_cr6(db->cr6_data | 0x2000, ioaddr);
                uw32(DCR1, 0x1);        /* Issue Tx polling */
                update_cr6(db->cr6_data, ioaddr);
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
        } else
                netdev_err(dev, "No Tx resource - Send_filter_frame!\n");
 }
 
        enable_irq(irq);
 
        netif_wake_queue(dev);
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        np->stats.tx_errors++;
 }
 
 
                dev->name, dr32(TxStatus));
        rio_free_tx(dev, 0);
        dev->if_port = 0;
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
 }
 
 static netdev_tx_t
 
 
        dev->if_port = 0;
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        dev->stats.tx_errors++;
        if (np->cur_tx - np->dirty_tx < TX_QUEUE_LEN - 4) {
                netif_wake_queue(dev);
 
 
        spin_unlock_irqrestore(&np->lock, flags);
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        dev->stats.tx_errors++;
        netif_wake_queue(dev); /* or .._start_.. ?? */
 }
 
 
        gfar_ints_enable(priv);
 
-       priv->ndev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(priv->ndev); /* prevent tx timeout */
 }
 
 static void free_grp_irqs(struct gfar_priv_grp *grp)
 
            lp->sent = lp->tx_queue ;
            lp->tx_queue = 0;
            lp->tx_queue_len = 0;
-           dev->trans_start = jiffies;
+           netif_trans_update(dev);
        } else {
            lp->tx_started = 0;
        }
 
        pos = dma_ring_incr(pos, TX_DESC_NUM);
        writel_relaxed(dma_byte(pos), priv->base + TX_BQ_WR_ADDR);
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        dev->stats.tx_packets++;
        dev->stats.tx_bytes += skb->len;
        netdev_sent_queue(dev, skb->len);
 
 {
        struct hns_nic_priv *priv = netdev_priv(netdev);
 
-       priv->netdev->trans_start = jiffies;
+       netif_trans_update(priv->netdev);
        while (test_and_set_bit(NIC_STATE_REINITING, &priv->state))
                usleep_range(1000, 2000);
 
        ret = hns_nic_net_xmit_hw(ndev, skb,
                                  &tx_ring_data(priv, skb->queue_mapping));
        if (ret == NETDEV_TX_OK) {
-               ndev->trans_start = jiffies;
+               netif_trans_update(ndev);
                ndev->stats.tx_bytes += skb->len;
                ndev->stats.tx_packets++;
        }
 
        rtnl_lock();
        /* put off any impending NetWatchDogTimeout */
-       priv->netdev->trans_start = jiffies;
+       netif_trans_update(priv->netdev);
 
        if (type == HNAE_PORT_DEBUG) {
                hns_nic_net_reinit(priv->netdev);
 
                return -EAGAIN;
        }
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_start_queue(dev);
 
        lp->lan_type = hp100_sense_lan(dev);
 
                lp->last_restart = dev->stats.tx_packets;
        }
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue (dev);
 }
 
 
                lp->last_restart = dev->stats.tx_packets;
        }
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue (dev);
 }
 
 
                p->scb->cmd_cuc = CUC_START;
                sun3_attn586();
                WAIT_4_SCB_CMD();
-               dev->trans_start = jiffies; /* prevent tx timeout */
+               netif_trans_update(dev); /* prevent tx timeout */
                return 0;
        }
 #endif
                sun3_82586_close(dev);
                sun3_82586_open(dev);
        }
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
 }
 
 /******************************************************
 
        dev->no_mcast = 1;
        netif_addr_unlock(dev->ndev);
        netif_tx_unlock_bh(dev->ndev);
-       dev->ndev->trans_start = jiffies;       /* prevent tx timeout */
+       netif_trans_update(dev->ndev);  /* prevent tx timeout */
        mal_poll_disable(dev->mal, &dev->commac);
        netif_tx_disable(dev->ndev);
 }
                DBG2(dev, "stopped TX queue" NL);
        }
 
-       ndev->trans_start = jiffies;
+       netif_trans_update(ndev);
        ++dev->stats.tx_packets;
        dev->stats.tx_bytes += len;
 
 
        WARN_ON(in_interrupt());
 
        /* put off any impending NetWatchDogTimeout */
-       netdev->trans_start = jiffies;
+       netif_trans_update(netdev);
 
        while (test_and_set_bit(__FM10K_RESETTING, &interface->state))
                usleep_range(1000, 2000);
 
 {
        WARN_ON(in_interrupt());
        /* put off any impending NetWatchDogTimeout */
-       adapter->netdev->trans_start = jiffies;
+       netif_trans_update(adapter->netdev);
 
        while (test_and_set_bit(__IXGBE_RESETTING, &adapter->state))
                usleep_range(1000, 2000);
 
               writel(0x10, &ch->dmac);
 
               while (!(readl(&ch->dmas) & DMA_STAT_HALT))
-                      dev->trans_start = jiffies;
+                      netif_trans_update(dev);
 
               writel(0, &ch->dmas);
        }
        }
        dma_cache_wback((u32) td, sizeof(*td));
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        spin_unlock_irqrestore(&lp->lock, flags);
 
        return NETDEV_TX_OK;
                                &(lp->tx_dma_regs->dmandptr));
                        lp->tx_chain_status = desc_empty;
                        lp->tx_chain_head = lp->tx_chain_tail;
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
                }
                if (dmas & DMA_STAT_ERR)
                        printk(KERN_ERR "%s: DMA error\n", dev->name);
        /* reset ethernet logic */
        writel(0, &lp->eth_regs->ethintfc);
        while ((readl(&lp->eth_regs->ethintfc) & ETH_INT_FC_RIP))
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
 
        /* Enable Ethernet Interface */
        writel(ETH_INT_FC_EN, &lp->eth_regs->ethintfc);
 
        byte_offset = CPHYSADDR(skb->data) % 16;
        ch->skb[ch->dma.desc] = skb;
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        spin_lock_irqsave(&priv->lock, flags);
        desc->addr = ((unsigned int) dma_map_single(NULL, skb->data, len,
        err = ltq_etop_hw_init(dev);
        if (err)
                goto err_hw;
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        netif_wake_queue(dev);
        return;
 
 
 
        stats->tx_bytes += length;
        stats->tx_packets++;
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        if (pep->tx_ring_size - pep->tx_desc_count <= 1) {
                /* We handled the current skb, but now we are out of space.*/
                netif_stop_queue(dev);
 
        sky2_write32(hw, B0_IMSK, 0);
        sky2_read32(hw, B0_IMSK);
 
-       dev->trans_start = jiffies;     /* prevent tx timeout */
+       netif_trans_update(dev);        /* prevent tx timeout */
        napi_disable(&hw->napi);
        netif_tx_disable(dev);
 
 
 
        /* Notify the network subsystem that the packet has been sent. */
        if (dev)
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
 }
 
 /**
                hw_ena_intr(hw);
        }
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        netif_wake_queue(dev);
 }
 
 
        netif_stop_queue(dev);
 
        /* save the timestamp */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        /* Remember the skb for deferred processing */
        priv->tx_skb = skb;
 
 
        priv->tx_head = TX_NEXT(tx_head);
 
-       ndev->trans_start = jiffies;
+       netif_trans_update(ndev);
        ret = NETDEV_TX_OK;
 out_unlock:
        spin_unlock_irq(&priv->txlock);
 
        spin_unlock_irq(&np->lock);
        enable_irq(irq);
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        dev->stats.tx_errors++;
        netif_wake_queue(dev);
 }
 
        /* Try to restart the adaptor. */
        sonic_init(dev);
        lp->stats.tx_errors++;
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
 }
 
 
 
        w90p910_init_desc(dev);
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        ether->cur_tx = 0x0;
        ether->finish_tx = 0x0;
        ether->cur_rx = 0x0;
        w90p910_trigger_tx(dev);
        w90p910_trigger_rx(dev);
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
 
        if (netif_queue_stopped(dev))
                netif_wake_queue(dev);
 
        hmp->rx_ring[RX_RING_SIZE-1].status_n_length |= cpu_to_le32(DescEndRing);
 
        /* Trigger an immediate transmit demand. */
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        dev->stats.tx_errors++;
 
        /* Restart the chip's Tx/Rx processes . */
 
        if (yp->cur_tx - yp->dirty_tx < TX_QUEUE_SIZE)
                netif_wake_queue (dev);         /* Typical path */
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        dev->stats.tx_errors++;
 }
 
 
                        goto request_reset;
                }
        }
-       adapter->netdev->trans_start = jiffies;
+       netif_trans_update(adapter->netdev);
        rtnl_unlock();
        return;
 
 
                qca->stats.ring_full++;
        }
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        if (qca->spi_thread &&
            qca->spi_thread->state != TASK_RUNNING)
 
        dev->stats.tx_errors++;
        /* Try to restart the adapter. */
        hardware_init(dev);
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
        dev->stats.tx_errors++;
 }
 
        if (err)
                return err;
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
 
        return 0;
        printk(KERN_NOTICE "%s: transmit timed out, resetting\n", dev->name);
        sgiseeq_reset(dev);
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
 }
 
 
        mace->eth.dma_ctrl = priv->dma_ctrl;
 
        meth_add_to_tx_ring(priv, skb);
-       dev->trans_start = jiffies; /* save the timestamp */
+       netif_trans_update(dev); /* save the timestamp */
 
        /* If TX ring is full, tell the upper layer to stop sending packets */
        if (meth_tx_full(dev)) {
        /* Enable interrupt */
        spin_unlock_irqrestore(&priv->meth_lock, flags);
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
 }
 
 
 
        spin_unlock_irqrestore(&sis_priv->lock, flags);
 
-       net_dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(net_dev); /* prevent tx timeout */
 
        /* load Transmit Descriptor Register */
        sw32(txdp, sis_priv->tx_ring_dma);
 
                ew32(COMMAND, TxQueued);
        }
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        dev->stats.tx_errors++;
        if (!ep->tx_full)
                netif_wake_queue(dev);
 
        /* DMA complete IRQ will free buffer and set jiffies */
 #else
        SMC_PUSH_DATA(lp, buf, len);
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        dev_kfree_skb_irq(skb);
 #endif
        if (!lp->tx_throttle) {
        DBG(SMC_DEBUG_TX | SMC_DEBUG_DMA, dev, "TX DMA irq handler\n");
        BUG_ON(skb == NULL);
        dma_unmap_single(NULL, tx_dmabuf, tx_dmalen, DMA_TO_DEVICE);
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        dev_kfree_skb_irq(skb);
        lp->current_tx_skb = NULL;
        if (lp->pending_tx_skb != NULL)
                schedule_work(&lp->phy_configure);
 
        /* We can accept TX packets again */
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
 }
 
 
        lp->saved_skb = NULL;
        dev_kfree_skb_any (skb);
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        /* we can send another packet */
        netif_wake_queue(dev);
        /* "kick" the adaptor */
        smc_reset( dev->base_addr );
        smc_enable( dev->base_addr );
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        /* clear anything saved */
        ((struct smc_local *)netdev_priv(dev))->saved_skb = NULL;
        netif_wake_queue(dev);
 
 
     smc->saved_skb = NULL;
     dev_kfree_skb_irq(skb);
-    dev->trans_start = jiffies;
+    netif_trans_update(dev);
     netif_start_queue(dev);
 }
 
                  inw(ioaddr)&0xff, inw(ioaddr + 2));
     dev->stats.tx_errors++;
     smc_reset(dev);
-    dev->trans_start = jiffies; /* prevent tx timeout */
+    netif_trans_update(dev); /* prevent tx timeout */
     smc->saved_skb = NULL;
     netif_wake_queue(dev);
 }
 
        SMC_SET_MMU_CMD(lp, MC_ENQUEUE);
        smc_special_unlock(&lp->lock, flags);
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        dev->stats.tx_packets++;
        dev->stats.tx_bytes += len;
 
                schedule_work(&lp->phy_configure);
 
        /* We can accept TX packets again */
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
 }
 
 
 
 static void niu_netif_stop(struct niu *np)
 {
-       np->dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(np->dev);    /* prevent tx timeout */
 
        niu_disable_napi(np);
 
 
 
 static inline void gem_netif_stop(struct gem *gp)
 {
-       gp->dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(gp->dev);    /* prevent tx timeout */
        napi_disable(&gp->napi);
        netif_tx_disable(gp->dev);
 }
 
 
        if (status_change) {
                if (phydev->link) {
-                       lp->ndev->trans_start = jiffies;
+                       netif_trans_update(lp->ndev);
                        dwceqos_link_up(lp);
                } else {
                        dwceqos_link_down(lp);
        netdev_sent_queue(ndev, skb->len);
        spin_unlock_bh(&lp->tx_lock);
 
-       ndev->trans_start = jiffies;
+       netif_trans_update(ndev);
        return 0;
 
 tx_error:
 
 
 #endif
 #ifdef BDX_LLTX
-       ndev->trans_start = jiffies; /* NETIF_F_LLTX driver :( */
+       netif_trans_update(ndev); /* NETIF_F_LLTX driver :( */
 #endif
        ndev->stats.tx_packets++;
        ndev->stats.tx_bytes += skb->len;
 
        struct cpsw_priv *priv = netdev_priv(ndev);
        int ret;
 
-       ndev->trans_start = jiffies;
+       netif_trans_update(ndev);
 
        if (skb_padto(skb, CPSW_MIN_PACKET_SIZE)) {
                cpsw_err(priv, tx_err, "packet pad failed\n");
 
        if (ret)
                goto drop;
 
-       ndev->trans_start = jiffies;
+       netif_trans_update(ndev);
 
        /* Check Tx pool count & stop subqueue if needed */
        desc_count = knav_pool_count(netcp->tx_pool);
 
        dev_err(netcp->ndev_dev, "transmit timed out tx descs(%d)\n", descs);
        netcp_process_tx_compl_packets(netcp, netcp->tx_pool_size);
-       ndev->trans_start = jiffies;
+       netif_trans_update(ndev);
        netif_tx_wake_all_queues(ndev);
 }
 
 
        tlan_reset_lists(dev);
        tlan_read_and_clear_stats(dev, TLAN_IGNORE);
        tlan_reset_adapter(dev);
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
 
 }
 
 
 
        /* Save the timestamp. */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
 
 #ifdef TILE_NET_PARANOIA
 
        wmb();
        descr->prev->hwdescr->next_descr_addr = descr->bus_addr;
 
-       card->netdev->trans_start = jiffies; /* set netdev watchdog timer */
+       netif_trans_update(card->netdev); /* set netdev watchdog timer */
        return 0;
 }
 
 
 
        spin_unlock_bh(&rp->lock);
 
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        dev->stats.tx_errors++;
        netif_wake_queue(dev);
 
 
        w5100_hw_reset(priv);
        w5100_hw_start(priv);
        ndev->stats.tx_errors++;
-       ndev->trans_start = jiffies;
+       netif_trans_update(ndev);
        netif_wake_queue(ndev);
 }
 
 
        w5300_hw_reset(priv);
        w5300_hw_start(priv);
        ndev->stats.tx_errors++;
-       ndev->trans_start = jiffies;
+       netif_trans_update(ndev);
        netif_wake_queue(ndev);
 }
 
 
                dev_err(&ndev->dev, "Error setting TEMAC options\n");
 
        /* Init Driver variable */
-       ndev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(ndev); /* prevent tx timeout */
 }
 
 static void temac_adjust_link(struct net_device *ndev)
 
        axienet_set_multicast_list(ndev);
        axienet_setoptions(ndev, lp->options);
 
-       ndev->trans_start = jiffies;
+       netif_trans_update(ndev);
 }
 
 /**
 
        }
 
        /* To exclude tx timeout */
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
 
        /* We're all ready to go. Start the queue */
        netif_wake_queue(dev);
                        dev->stats.tx_bytes += lp->deferred_skb->len;
                        dev_kfree_skb_irq(lp->deferred_skb);
                        lp->deferred_skb = NULL;
-                       dev->trans_start = jiffies; /* prevent tx timeout */
+                       netif_trans_update(dev); /* prevent tx timeout */
                        netif_wake_queue(dev);
                }
        }
 
        struct net_device *dev = local->dev;
     /* reset the card */
     do_reset(dev,1);
-    dev->trans_start = jiffies; /* prevent tx timeout */
+    netif_trans_update(dev); /* prevent tx timeout */
     netif_wake_queue(dev);
 }
 
 
 
                                        ret = NETDEV_TX_OK;
                                } else {
-                                       netdev->trans_start = jiffies;
+                                       netif_trans_update(netdev);
                                        netif_tx_stop_queue(cur_queue);
 
                                        if (!work_pending(&adapter->tx_stall_task))
 
        dev->stats.tx_packets++;
        dev->stats.tx_bytes += actual;
 
-       ax->dev->trans_start = jiffies;
+       netif_trans_update(ax->dev);
        ax->xleft = count - actual;
        ax->xhead = ax->xbuff + actual;
 }
 
                dev_kfree_skb(skb_del);
        }
        skb_queue_tail(&scc->tx_queue, skb);
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        
 
        /*
 
                return ax25_ip_xmit(skb);
 
        skb_queue_tail(&yp->send_queue, skb);
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        return NETDEV_TX_OK;
 }
 
 
                /* Check for empty frame */
                if (!skb->len) {
                        ali_ircc_change_speed(self, speed); 
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
                        spin_unlock_irqrestore(&self->lock, flags);
                        dev_kfree_skb(skb);
                        return NETDEV_TX_OK;
        /* Restore bank register */
        switch_bank(iobase, BANK0);
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        spin_unlock_irqrestore(&self->lock, flags);
        dev_kfree_skb(skb);
 
                /* Check for empty frame */
                if (!skb->len) {
                        ali_ircc_change_speed(self, speed); 
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
                        spin_unlock_irqrestore(&self->lock, flags);
                        dev_kfree_skb(skb);
                        return NETDEV_TX_OK;
        /* Turn on transmit finished interrupt. Will fire immediately!  */
        outb(UART_IER_THRI, iobase+UART_IER); 
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        spin_unlock_irqrestore(&self->lock, flags);
 
        dev_kfree_skb(skb);
 
        bfin_sir_dma_tx_chars(dev);
 #endif
        bfin_sir_enable_tx(port);
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 }
 
 static int bfin_sir_hard_xmit(struct sk_buff *skb, struct net_device *dev)
 
                         * do an extra memcpy and increment packet counters...
                         * Jean II */
                        irda_usb_change_speed_xbofs(self);
-                       netdev->trans_start = jiffies;
+                       netif_trans_update(netdev);
                        /* Will netif_wake_queue() in callback */
                        goto drop;
                }
                netdev->stats.tx_packets++;
                 netdev->stats.tx_bytes += skb->len;
                
-               netdev->trans_start = jiffies;
+               netif_trans_update(netdev);
        }
        spin_unlock_irqrestore(&self->lock, flags);
        
 
                                 * to make sure packets gets through the
                                 * proper xmit handler - Jean II */
                        }
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
                        spin_unlock_irqrestore(&self->lock, flags);
                        dev_kfree_skb(skb);
                        return NETDEV_TX_OK;
        /* Restore bank register */
        outb(bank, iobase+BSR);
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        spin_unlock_irqrestore(&self->lock, flags);
 
        dev_kfree_skb(skb);
                                 * the speed change has been done.
                                 * Jean II */
                        }
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
                        spin_unlock_irqrestore(&self->lock, flags);
                        dev_kfree_skb(skb);
                        return NETDEV_TX_OK;
        /* Restore bank register */
        outb(bank, iobase+BSR);
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        spin_unlock_irqrestore(&self->lock, flags);
        dev_kfree_skb(skb);
 
 
        spin_lock_irqsave(&self->lock, flags);
        smsc_ircc_sir_start(self);
        smsc_ircc_change_speed(self, self->io.speed);
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
        netif_wake_queue(dev);
        spin_unlock_irqrestore(&self->lock, flags);
 }
 
 
        stir->netdev->stats.tx_packets++;
        stir->netdev->stats.tx_bytes += skb->len;
-       stir->netdev->trans_start = jiffies;
+       netif_trans_update(stir->netdev);
        pr_debug("send %d (%d)\n", skb->len, wraplen);
 
        if (usb_bulk_msg(stir->usbdev, usb_sndbulkpipe(stir->usbdev, 1),
 
                /* Check for empty frame */
                if (!skb->len) {
                        via_ircc_change_speed(self, speed);
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
                        dev_kfree_skb(skb);
                        return NETDEV_TX_OK;
                } else
        RXStart(iobase, OFF);
        TXStart(iobase, ON);
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        spin_unlock_irqrestore(&self->lock, flags);
        dev_kfree_skb(skb);
        return NETDEV_TX_OK;
        if ((speed != self->io.speed) && (speed != -1)) {
                if (!skb->len) {
                        via_ircc_change_speed(self, speed);
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
                        dev_kfree_skb(skb);
                        return NETDEV_TX_OK;
                } else
        via_ircc_dma_xmit(self, iobase);
 //F01   }
 //F01   if (self->tx_fifo.free < (MAX_TX_WINDOW -1 )) netif_wake_queue(self->netdev);
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        dev_kfree_skb(skb);
        spin_unlock_irqrestore(&self->lock, flags);
        return NETDEV_TX_OK;
 
        set_bit(TTY_DO_WRITE_WAKEUP, &sl->tty->flags);
        actual = sl->tty->ops->write(sl->tty, sl->xbuff, count);
 #ifdef SL_CHECK_TRANSMIT
-       sl->dev->trans_start = jiffies;
+       netif_trans_update(sl->dev);
 #endif
        sl->xleft = count - actual;
        sl->xhead = sl->xbuff + actual;
 
        catc->tx_idx = !catc->tx_idx;
        catc->tx_ptr = 0;
 
-       catc->netdev->trans_start = jiffies;
+       netif_trans_update(catc->netdev);
        return status;
 }
 
        if (status == -ECONNRESET) {
                dev_dbg(&urb->dev->dev, "Tx Reset.\n");
                urb->status = 0;
-               catc->netdev->trans_start = jiffies;
+               netif_trans_update(catc->netdev);
                catc->netdev->stats.tx_errors++;
                clear_bit(TX_RUNNING, &catc->flags);
                netif_wake_queue(catc->netdev);
 
 
        dev_warn(&net->dev, "%s: Tx timed out. Resetting.\n", net->name);
        kaweth->stats.tx_errors++;
-       net->trans_start = jiffies;
+       netif_trans_update(net);
 
        usb_unlink_urb(kaweth->tx_urb);
 }
 
        ret = usb_submit_urb(urb, GFP_ATOMIC);
        switch (ret) {
        case 0:
-               dev->net->trans_start = jiffies;
+               netif_trans_update(dev->net);
                lan78xx_queue_skb(&dev->txq, skb, tx_start);
                if (skb_queue_len(&dev->txq) >= dev->tx_qlen)
                        netif_stop_queue(dev->net);
                                usb_free_urb(res);
                                usb_autopm_put_interface_async(dev->intf);
                        } else {
-                               dev->net->trans_start = jiffies;
+                               netif_trans_update(dev->net);
                                lan78xx_queue_skb(&dev->txq, skb, tx_start);
                        }
                }
 
                break;
        }
 
-       net->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(net); /* prevent tx timeout */
        netif_wake_queue(net);
 }
 
 
        if (status)
                dev_info(&urb->dev->dev, "%s: Tx status %d\n",
                         dev->netdev->name, status);
-       dev->netdev->trans_start = jiffies;
+       netif_trans_update(dev->netdev);
        netif_wake_queue(dev->netdev);
 }
 
        } else {
                netdev->stats.tx_packets++;
                netdev->stats.tx_bytes += skb->len;
-               netdev->trans_start = jiffies;
+               netif_trans_update(netdev);
        }
 
        return NETDEV_TX_OK;
 
                          "tx: submit urb err %d\n", retval);
                break;
        case 0:
-               net->trans_start = jiffies;
+               netif_trans_update(net);
                __usbnet_queue_skb(&dev->txq, skb, tx_start);
                if (dev->txq.qlen >= TX_QLEN (dev))
                        netif_stop_queue (net);
                                usb_free_urb(res);
                                usb_autopm_put_interface_async(dev->intf);
                        } else {
-                               dev->net->trans_start = jiffies;
+                               netif_trans_update(dev->net);
                                __skb_queue_tail(&dev->txq, skb);
                        }
                }
 
                chan->netdev->stats.rx_dropped++;
                return NULL;
        }
-       chan->netdev->trans_start = jiffies;
+       netif_trans_update(chan->netdev);
        return skb_put(chan->rx_skb, size);
 }
 
 
                DMA_OWN | TX_STP | TX_ENP);
        dev->stats.tx_packets++;
        dev->stats.tx_bytes += len;
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 }
 
 /*
                                                DMA_OWN | TX_STP | TX_ENP);
                                        dev->stats.tx_packets++;
                                        dev->stats.tx_bytes += skb->len;
-                                       dev->trans_start = jiffies;
+                                       netif_trans_update(dev);
                                } else {
                                        /* Or do it through dma */
                                        memcpy(card->tx_dma_handle_host,
            card->card_no, port->index);
        fst_issue_cmd(port, ABORTTX);
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        netif_wake_queue(dev);
        port->start = 0;
 }
 
     sc->lmc_device->stats.tx_errors++;
     sc->extra_stats.tx_ProcTimeout++; /* -baz */
 
-    dev->trans_start = jiffies; /* prevent tx timeout */
+    netif_trans_update(dev); /* prevent tx timeout */
 
 bug_out:
 
 
 
        outb( inb( dev->base_addr + CSR0 ) | TR_REQ,  dev->base_addr + CSR0 );
 #ifdef CONFIG_SBNI_MULTILINE
-       nl->master->trans_start = jiffies;
+       netif_trans_update(nl->master);
 #else
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 #endif
 }
 
        nl->state &= ~(FL_WAIT_ACK | FL_NEED_RESEND);
 #ifdef CONFIG_SBNI_MULTILINE
        netif_start_queue( nl->master );
-       nl->master->trans_start = jiffies;
+       netif_trans_update(nl->master);
 #else
        netif_start_queue( dev );
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 #endif
 }
 
 
        d_fnstart(3, dev, "(i2400m %p net_dev %p skb %p)\n",
                  i2400m, net_dev, skb);
        /* FIXME: check eth hdr, only IPv4 is routed by the device as of now */
-       net_dev->trans_start = jiffies;
+       netif_trans_update(net_dev);
        i2400m_tx_prep_header(skb);
        d_printf(3, dev, "NETTX: skb %p sending %d bytes to radio\n",
                 skb, skb->len);
 
        } else {
                *payloadLen = cpu_to_le16(len - sizeof(etherHead));
 
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
 
                /* copy data into airo dma buffer */
                memcpy(sendbuf, buffer, len);
 
        i = 0;
        if ( status == SUCCESS ) {
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
                for (; i < MAX_FIDS / 2 && (priv->fids[i] & 0xffff0000); i++);
        } else {
                priv->fids[fid] &= 0xffff;
 
        i = MAX_FIDS / 2;
        if ( status == SUCCESS ) {
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
                for (; i < MAX_FIDS && (priv->fids[i] & 0xffff0000); i++);
        } else {
                priv->fids[fid] &= 0xffff;
 
 
                /* A packet was processed by the hardware, so update the
                 * watchdog */
-               priv->net_dev->trans_start = jiffies;
+               netif_trans_update(priv->net_dev);
 
                break;
 
 
        struct ipw_rx_packet *pkt = (struct ipw_rx_packet *)rxb->skb->data;
 
        /* We received data from the HW, so stop the watchdog */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        /* We only process data packets if the
         * interface is open */
        unsigned short len = le16_to_cpu(pkt->u.frame.length);
 
        /* We received data from the HW, so stop the watchdog */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        /* We only process data packets if the
         * interface is open */
                return;
 
        /* We received data from the HW, so stop the watchdog */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        if (unlikely((len + IPW_RX_FRAME_SIZE) > skb_tailroom(rxb->skb))) {
                dev->stats.rx_errors++;
 
                netif_wake_queue(dev);
                return -1;
        }
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        /* Since we did not wait for command completion, the card continues
         * to process on the background and we will finish handling when
 
                        printk(KERN_ERR "%s: orinoco_reset: Error %d reenabling card\n",
                               dev->name, err);
                } else
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
        }
 
        orinoco_unlock_irq(priv);
 
                goto busy;
        }
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        stats->tx_bytes += skb->len;
        goto ok;
 
 
        for (i = 0; i < dev->num_tx_queues; i++)
                netdev_get_tx_queue(dev, i)->trans_start = jiffies;
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 }
 
 /*
 
                printk(KERN_ERR "%s: Error %d resetting card on Tx timeout!\n",
                       dev->name, rc);
        else {
-               dev->trans_start = jiffies; /* prevent tx timeout */
+               netif_trans_update(dev); /* prevent tx timeout */
                netif_wake_queue(dev);
        }
 }
 
        usb_unlink_urb(zd->tx_urb);
        dev->stats.tx_errors++;
        /* Restart the timeout to quiet the watchdog: */
-       dev->trans_start = jiffies; /* prevent tx timeout */
+       netif_trans_update(dev); /* prevent tx timeout */
 }
 
 static int zd1201_set_mac_address(struct net_device *dev, void *p)
 
 
        kfree(header);
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        skb_queue_tail(&ch->sweep_queue, sweep_skb);
 
        fsm_addtimer(&ch->sweep_timer, 100, CTC_EVENT_RSWEEP_TIMER, ch);
        if (ctcm_test_and_set_busy(dev))
                return NETDEV_TX_BUSY;
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        if (ctcm_transmit_skb(priv->channel[CTCM_WRITE], skb) != 0)
                return NETDEV_TX_BUSY;
        return NETDEV_TX_OK;
                                        goto done;
        }
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        if (ctcmpc_transmit_skb(priv->channel[CTCM_WRITE], skb) != 0) {
                CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR,
                        "%s(%s): device error - dropped",
 
 
        kfree(header);
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        skb_queue_tail(&ch->sweep_queue, sweep_skb);
 
        fsm_addtimer(&ch->sweep_timer, 100, CTC_EVENT_RSWEEP_TIMER, ch);
 
                IUCV_DBF_TEXT(data, 2, "EBUSY from netiucv_tx\n");
                return NETDEV_TX_BUSY;
        }
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        rc = netiucv_transmit_skb(privptr->conn, skb);
        netiucv_clear_busy(dev);
        return rc ? NETDEV_TX_BUSY : NETDEV_TX_OK;
 
        __skb_queue_tail(&ring->queue, skb);
        pdesc->OWN = 1;
        spin_unlock_irqrestore(&priv->irq_th_lock, flags);
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        rtl92e_writew(dev, TPPoll, 0x01 << tcb_desc->queue_index);
        return 0;
 
                                ieee->seq_ctrl[0]++;
 
                        /* avoid watchdog triggers */
-                       ieee->dev->trans_start = jiffies;
+                       netif_trans_update(ieee->dev);
                        ieee->softmac_data_hard_start_xmit(skb,ieee->dev,ieee->basic_rate);
                        //dev_kfree_skb_any(skb);//edit by thomas
                }
                        ieee->seq_ctrl[0]++;
 
                /* avoid watchdog triggers */
-               ieee->dev->trans_start = jiffies;
+               netif_trans_update(ieee->dev);
                ieee->softmac_data_hard_start_xmit(skb,ieee->dev,ieee->basic_rate);
 
        }else{
                                ieee->dev, ieee->rate);
                                //(i+1)<ieee->tx_pending.txb->nr_frags);
                        ieee->stats.tx_packets++;
-                       ieee->dev->trans_start = jiffies;
+                       netif_trans_update(ieee->dev);
                }
        }
 
 
 
        if (tcb_desc->queue_index != TXCMD_QUEUE) {
                if (tx_urb->status == 0) {
-                       dev->trans_start = jiffies;
+                       netif_trans_update(dev);
                        priv->stats.txoktotal++;
                        priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++;
                        priv->stats.txbytesunicast +=
                                return -1;
                        }
                }
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
                atomic_inc(&priv->tx_pending[tcb_desc->queue_index]);
                return 0;
        }
 
                goto failed;
        }
 
-       netdev->trans_start = jiffies;
+       netif_trans_update(netdev);
 
        netdev->stats.tx_packets++;
        /* count only the packet payload */
 
        STATS(net).tx_bytes += skb->len;
        gsm_dlci_data_kick(dlci);
        /* And tell the kernel when the last transmit started. */
-       net->trans_start = jiffies;
+       netif_trans_update(net);
        muxnet_put(mux_net);
        return NETDEV_TX_OK;
 }
 
        dev_kfree_skb(skb);
 
        /* save start time for transmit timeout detection */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        /* start hardware transmitter if necessary */
        spin_lock_irqsave(&info->irq_spinlock,flags);
        mgsl_program_hw(info);
 
        /* enable network layer transmit */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        netif_start_queue(dev);
 
        /* inform generic HDLC layer of current DCD status */
 
        dev->stats.tx_bytes += skb->len;
 
        /* save start time for transmit timeout detection */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        spin_lock_irqsave(&info->lock, flags);
        tx_load(info, skb->data, skb->len);
        program_hw(info);
 
        /* enable network layer transmit */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        netif_start_queue(dev);
 
        /* inform generic HDLC layer of current DCD status */
 
        dev_kfree_skb(skb);
 
        /* save start time for transmit timeout detection */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        /* start hardware transmitter if necessary */
        spin_lock_irqsave(&info->lock,flags);
        program_hw(info);
 
        /* enable network layer transmit */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        netif_start_queue(dev);
 
        /* inform generic HDLC layer of current DCD status */
 
                DBG(dev, "tx queue err %d\n", retval);
                break;
        case 0:
-               net->trans_start = jiffies;
+               netif_trans_update(net);
                atomic_inc(&dev->tx_qlen);
        }
 
 
 static void lec_tx_timeout(struct net_device *dev)
 {
        pr_info("%s\n", dev->name);
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        netif_wake_queue(dev);
 }
 
 out:
        if (entry)
                lec_arp_put(entry);
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        return NETDEV_TX_OK;
 }
 
 
        if (atomic_read(&bat_priv->mesh_state) != BATADV_MESH_ACTIVE)
                goto dropped;
 
-       soft_iface->trans_start = jiffies;
+       netif_trans_update(soft_iface);
        vid = batadv_get_vid(skb, 0);
        ethhdr = eth_hdr(skb);
 
 
         * So we have to queue them and wake up session thread which is sleeping
         * on the sk_sleep(sk).
         */
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
        skb_queue_tail(&sk->sk_write_queue, skb);
        wake_up_interruptible(sk_sleep(sk));
 
 
                skb = new_skb;
        }
 
-       dev->trans_start = jiffies;
+       netif_trans_update(dev);
 
        len = skb->len;
        /* Now queue the packet in the transport layer */
 
                transition_one_qdisc(dev, dev_ingress_queue(dev), NULL);
 
        if (need_watchdog) {
-               dev->trans_start = jiffies;
+               netif_trans_update(dev);
                dev_watchdog_up(dev);
        }
 }