ariadne: use netstats in net_device structure
authorPaulius Zaleckas <paulius.zaleckas@teltonika.lt>
Thu, 17 Jul 2008 19:16:09 +0000 (21:16 +0200)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 21 Jul 2008 00:24:38 +0000 (17:24 -0700)
Use net_device_stats from net_device structure instead of local.

Signed-off-by: Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Jeff Garzik <jgarzik@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/net/ariadne.c

index 10f3a196be32b729c5ddb075d72f39a0c82199ff..29e53eb71c7484c2c8f2e4c0ecef185786bbb00c 100644 (file)
@@ -98,7 +98,6 @@ struct ariadne_private {
     volatile u_short *rx_buff[RX_RING_SIZE];
     int cur_tx, cur_rx;                        /* The next free ring entry */
     int dirty_tx;                      /* The ring entries to be free()ed. */
-    struct net_device_stats stats;
     char tx_full;
 };
 
@@ -378,20 +377,19 @@ static void ariadne_init_ring(struct net_device *dev)
 
 static int ariadne_close(struct net_device *dev)
 {
-    struct ariadne_private *priv = netdev_priv(dev);
     volatile struct Am79C960 *lance = (struct Am79C960*)dev->base_addr;
 
     netif_stop_queue(dev);
 
     lance->RAP = CSR112;       /* Missed Frame Count */
-    priv->stats.rx_missed_errors = swapw(lance->RDP);
+    dev->stats.rx_missed_errors = swapw(lance->RDP);
     lance->RAP = CSR0;         /* PCnet-ISA Controller Status */
 
     if (ariadne_debug > 1) {
        printk(KERN_DEBUG "%s: Shutting down ethercard, status was %2.2x.\n",
               dev->name, lance->RDP);
        printk(KERN_DEBUG "%s: %lu packets missed\n", dev->name,
-              priv->stats.rx_missed_errors);
+              dev->stats.rx_missed_errors);
     }
 
     /* We stop the LANCE here -- it occasionally polls memory if we don't. */
@@ -502,16 +500,16 @@ static irqreturn_t ariadne_interrupt(int irq, void *data)
                if (status & TF_ERR) {
                    /* There was an major error, log it. */
                    int err_status = priv->tx_ring[entry]->TMD3;
-                   priv->stats.tx_errors++;
+                   dev->stats.tx_errors++;
                    if (err_status & EF_RTRY)
-                       priv->stats.tx_aborted_errors++;
+                       dev->stats.tx_aborted_errors++;
                    if (err_status & EF_LCAR)
-                       priv->stats.tx_carrier_errors++;
+                       dev->stats.tx_carrier_errors++;
                    if (err_status & EF_LCOL)
-                       priv->stats.tx_window_errors++;
+                       dev->stats.tx_window_errors++;
                    if (err_status & EF_UFLO) {
                        /* Ackk!  On FIFO errors the Tx unit is turned off! */
-                       priv->stats.tx_fifo_errors++;
+                       dev->stats.tx_fifo_errors++;
                        /* Remove this verbosity later! */
                        printk(KERN_ERR "%s: Tx FIFO error! Status %4.4x.\n",
                               dev->name, csr0);
@@ -520,8 +518,8 @@ static irqreturn_t ariadne_interrupt(int irq, void *data)
                    }
                } else {
                    if (status & (TF_MORE|TF_ONE))
-                       priv->stats.collisions++;
-                   priv->stats.tx_packets++;
+                       dev->stats.collisions++;
+                   dev->stats.tx_packets++;
                }
                dirty_tx++;
            }
@@ -547,11 +545,11 @@ static irqreturn_t ariadne_interrupt(int irq, void *data)
        /* Log misc errors. */
        if (csr0 & BABL) {
            handled = 1;
-           priv->stats.tx_errors++;    /* Tx babble. */
+           dev->stats.tx_errors++;     /* Tx babble. */
        }
        if (csr0 & MISS) {
            handled = 1;
-           priv->stats.rx_errors++;    /* Missed a Rx frame. */
+           dev->stats.rx_errors++;     /* Missed a Rx frame. */
        }
        if (csr0 & MERR) {
            handled = 1;
@@ -672,7 +670,7 @@ static int ariadne_start_xmit(struct sk_buff *skb, struct net_device *dev)
        priv->cur_tx -= TX_RING_SIZE;
        priv->dirty_tx -= TX_RING_SIZE;
     }
-    priv->stats.tx_bytes += len;
+    dev->stats.tx_bytes += len;
 
     /* Trigger an immediate send poll. */
     lance->RAP = CSR0;         /* PCnet-ISA Controller Status */
@@ -707,15 +705,15 @@ static int ariadne_rx(struct net_device *dev)
                buffers, with only the last correctly noting the error. */
            if (status & RF_ENP)
                /* Only count a general error at the end of a packet.*/
-               priv->stats.rx_errors++;
+               dev->stats.rx_errors++;
            if (status & RF_FRAM)
-               priv->stats.rx_frame_errors++;
+               dev->stats.rx_frame_errors++;
            if (status & RF_OFLO)
-               priv->stats.rx_over_errors++;
+               dev->stats.rx_over_errors++;
            if (status & RF_CRC)
-               priv->stats.rx_crc_errors++;
+               dev->stats.rx_crc_errors++;
            if (status & RF_BUFF)
-               priv->stats.rx_fifo_errors++;
+               dev->stats.rx_fifo_errors++;
            priv->rx_ring[entry]->RMD1 &= 0xff00|RF_STP|RF_ENP;
        } else {
            /* Malloc up new buffer, compatible with net-3. */
@@ -731,7 +729,7 @@ static int ariadne_rx(struct net_device *dev)
                        break;
 
                if (i > RX_RING_SIZE-2) {
-                   priv->stats.rx_dropped++;
+                   dev->stats.rx_dropped++;
                    priv->rx_ring[entry]->RMD1 |= RF_OWN;
                    priv->cur_rx++;
                }
@@ -764,8 +762,8 @@ static int ariadne_rx(struct net_device *dev)
 
            netif_rx(skb);
            dev->last_rx = jiffies;
-           priv->stats.rx_packets++;
-           priv->stats.rx_bytes += pkt_len;
+           dev->stats.rx_packets++;
+           dev->stats.rx_bytes += pkt_len;
        }
 
        priv->rx_ring[entry]->RMD1 |= RF_OWN;
@@ -783,7 +781,6 @@ static int ariadne_rx(struct net_device *dev)
 
 static struct net_device_stats *ariadne_get_stats(struct net_device *dev)
 {
-    struct ariadne_private *priv = netdev_priv(dev);
     volatile struct Am79C960 *lance = (struct Am79C960*)dev->base_addr;
     short saved_addr;
     unsigned long flags;
@@ -791,11 +788,11 @@ static struct net_device_stats *ariadne_get_stats(struct net_device *dev)
     local_irq_save(flags);
     saved_addr = lance->RAP;
     lance->RAP = CSR112;               /* Missed Frame Count */
-    priv->stats.rx_missed_errors = swapw(lance->RDP);
+    dev->stats.rx_missed_errors = swapw(lance->RDP);
     lance->RAP = saved_addr;
     local_irq_restore(flags);
 
-    return &priv->stats;
+    return &dev->stats;
 }