fealnx: Use the instance of net_device_stats from net_device.
Subsystems (3)
PATCH 1/1 fealnx: Use the instance of net_device_stats from net_device.
Since net_device has an instance of net_device_stats, we can remove the instance of this from the adapter structure.
Signed-off-by Kulikov Vasiliy <[email protected]>
--- drivers/net/fealnx.c | 68 ++++++++++++++++++++++++++----------------------- 1 files changed, 36 insertions(+), 32 deletions(-)
drivers/net/fealnx.c +26 -32
@@ -382,8 +382,6 @@ struct netdev_private {spinlock_t lock; -struct net_device_stats stats; -/* Media monitoring timer. */ struct timer_list timer;
@@ -1234,7 +1232,7 @@ static void fealnx_tx_timeout(struct net_device *dev)spin_unlock_irqrestore (&np->lock, flags); dev->trans_start = jiffies;/* prevent tx timeout */ - np->stats.tx_errors++; + dev->stats.tx_errors++;netif_wake_queue (dev);/* or .._start_.. ?? */ }
@@ -1479,10 +1477,11 @@ static irqreturn_t intr_handler(int irq, void *dev_instance)if (intr_status &CNTOVF ) {/* missed pkts */ - np->stats.rx_missed_errors +=ioread32 (ioaddr +TALLY ) &0x7fff ; + dev->stats.rx_missed_errors ++ ioread32(ioaddr + TALLY) & 0x7fff;/* crc error */ - np->stats.rx_crc_errors ++ dev->stats.rx_crc_errors + (ioread32(ioaddr + TALLY) & 0x7fff0000) >> 16; }
@@ -1513,30 +1512,30 @@ static irqreturn_t intr_handler(int irq, void *dev_instance)if (!(np->crvalue &CR_W_ENH )) {if (tx_status & (CSL |LC |EC |UDF |HF )) { - np->stats.tx_errors++; + dev->stats.tx_errors++;if (tx_status &EC ) - np->stats.tx_aborted_errors++; + dev->stats.tx_aborted_errors++;if (tx_status &CSL ) - np->stats.tx_carrier_errors++; + dev->stats.tx_carrier_errors++;if (tx_status &LC ) - np->stats.tx_window_errors++; + dev->stats.tx_window_errors++;if (tx_status &UDF ) - np->stats.tx_fifo_errors++; + dev->stats.tx_fifo_errors++;if ((tx_status &HF ) && np->mii.full_duplex =0 ) - np->stats.tx_heartbeat_errors++; + dev->stats.tx_heartbeat_errors++; }else { - np->stats.tx_bytes ++ dev->stats.tx_bytes + ((tx_control & PKTSMask) >> PKTSShift); - np->stats.collisions ++ dev->stats.collisions + ((tx_status & NCRMask) >> NCRShift); - np->stats.tx_packets++; + dev->stats.tx_packets++; } }else { - np->stats.tx_bytes ++ dev->stats.tx_bytes + ((tx_control & PKTSMask) >> PKTSShift); - np->stats.tx_packets++; + dev->stats.tx_packets++; }/* Free the original skb. */
@@ -1564,10 +1563,12 @@ static irqreturn_t intr_handler(int irq, void *dev_instance)long data; data =ioread32 (ioaddr +TSR ); - np->stats.tx_errors += (data &0xff000000 ) >>24 ; - np->stats.tx_aborted_errors += (data &0xff000000 ) >>24 ; - np->stats.tx_window_errors += (data &0x00ff0000 ) >>16 ; - np->stats.collisions += (data &0x0000ffff ); + dev->stats.tx_errors += (data &0xff000000 ) >>24 ; + dev->stats.tx_aborted_errors ++ (data &0xff000000 ) >>24 ; + dev->stats.tx_window_errors ++ (data &0x00ff0000 ) >>16 ; + dev->stats.collisions += (data &0x0000ffff ); }if (--boguscnt <0 ) {
@@ -1593,10 +1594,11 @@ static irqreturn_t intr_handler(int irq, void *dev_instance)/* read the tally counters */ /* missed pkts */ - np->stats.rx_missed_errors +=ioread32 (ioaddr +TALLY ) &0x7fff ; + dev->stats.rx_missed_errors +=ioread32 (ioaddr +TALLY ) &0x7fff ;/* crc error */ - np->stats.rx_crc_errors += (ioread32 (ioaddr +TALLY ) &0x7fff0000 ) >>16 ; + dev->stats.rx_crc_errors ++ (ioread32 (ioaddr +TALLY ) &0x7fff0000 ) >>16 ;if (debug) printk(KERN_DEBUG "%s: exiting interrupt, status=%#4.4x.\n",
@@ -1635,13 +1637,13 @@ static int netdev_rx(struct net_device *dev)"%s: Receive error, Rx status %8.8x.\n" , dev->name, rx_status); - np->stats.rx_errors++;/* end of a packet. */ + dev->stats.rx_errors++;/* end of a packet. */ if (rx_status & (LONG |RUNT )) - np->stats.rx_length_errors++; + dev->stats.rx_length_errors++;if (rx_status &RXER ) - np->stats.rx_frame_errors++; + dev->stats.rx_frame_errors++;if (rx_status &CRC ) - np->stats.rx_crc_errors++; + dev->stats.rx_crc_errors++; }else {int need_to_reset =0 ;int desno =0 ;
@@ -1667,7 +1669,7 @@ static int netdev_rx(struct net_device *dev)if (need_to_reset =0 ) {int i; - np->stats.rx_length_errors++; + dev->stats.rx_length_errors++;/* free all rx descriptors related this long pkt */ for (i =0 ; i < desno; ++i) {
@@ -1733,8 +1735,8 @@ static int netdev_rx(struct net_device *dev) } skb->protocol =eth_type_trans (skb, dev);netif_rx (skb); - np->stats.rx_packets++; - np->stats.rx_bytes += pkt_len; + dev->stats.rx_packets++; + dev->stats.rx_bytes += pkt_len; } np->cur_rx = np->cur_rx->next_desc_logical;
@@ -1754,11 +1756,13 @@ static struct net_device_stats *get_stats(struct net_device *dev)/* The chip only need report frame silently dropped. */ if (netif_running (dev)) { - np->stats.rx_missed_errors +=ioread32 (ioaddr +TALLY ) &0x7fff ; - np->stats.rx_crc_errors += (ioread32 (ioaddr +TALLY ) &0x7fff0000 ) >>16 ; + dev->stats.rx_missed_errors ++ ioread32(ioaddr + TALLY) & 0x7fff; + dev->stats.rx_crc_errors ++ (ioread32 (ioaddr +TALLY ) &0x7fff0000 ) >>16 ; } -return &np->stats; +return &dev->stats; }
Signature · 1 line
1.7.0.4
From: Kulikov Vasiliy <[email protected]>
Date: Mon, 5 Jul 2010 16:13:36 +0400
Quoted 4 lines
Since
net_devicehas an instance ofnet_device_stats, we can remove the instance of this from the adapter structure.Signed-off-by Kulikov Vasiliy <[email protected]>
Applied.