ether1: Use net_device_stats from struct net_device
authorTobias Klauser <tklauser@distanz.ch>
Wed, 18 Aug 2010 20:15:04 +0000 (20:15 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 19 Aug 2010 07:12:38 +0000 (00:12 -0700)
struct net_device has its own struct net_device_stats member, so use
this one instead of a private copy in the ether1_priv struct. As the new
ndo_get_stats function would just return dev->stats we can omit it. This
patch also removes an incorrect memset of the stats on open.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/arm/ether1.c
drivers/net/arm/ether1.h

index b17ab5153f51e5aca038cb7a32c9bde62a0496e5..b00781c02d5d40b8b2e1aece3bba6070f24872ea 100644 (file)
@@ -68,7 +68,6 @@ static int ether1_open(struct net_device *dev);
 static int ether1_sendpacket(struct sk_buff *skb, struct net_device *dev);
 static irqreturn_t ether1_interrupt(int irq, void *dev_id);
 static int ether1_close(struct net_device *dev);
-static struct net_device_stats *ether1_getstats(struct net_device *dev);
 static void ether1_setmulticastlist(struct net_device *dev);
 static void ether1_timeout(struct net_device *dev);
 
@@ -649,8 +648,6 @@ ether1_open (struct net_device *dev)
        if (request_irq(dev->irq, ether1_interrupt, 0, "ether1", dev))
                return -EAGAIN;
 
-       memset (&priv(dev)->stats, 0, sizeof (struct net_device_stats));
-
        if (ether1_init_for_open (dev)) {
                free_irq (dev->irq, dev);
                return -EAGAIN;
@@ -673,7 +670,7 @@ ether1_timeout(struct net_device *dev)
        if (ether1_init_for_open (dev))
                printk (KERN_ERR "%s: unable to restart interface\n", dev->name);
 
-       priv(dev)->stats.tx_errors++;
+       dev->stats.tx_errors++;
        netif_wake_queue(dev);
 }
 
@@ -802,21 +799,21 @@ again:
 
        while (nop.nop_status & STAT_COMPLETE) {
                if (nop.nop_status & STAT_OK) {
-                       priv(dev)->stats.tx_packets ++;
-                       priv(dev)->stats.collisions += (nop.nop_status & STAT_COLLISIONS);
+                       dev->stats.tx_packets++;
+                       dev->stats.collisions += (nop.nop_status & STAT_COLLISIONS);
                } else {
-                       priv(dev)->stats.tx_errors ++;
+                       dev->stats.tx_errors++;
 
                        if (nop.nop_status & STAT_COLLAFTERTX)
-                               priv(dev)->stats.collisions ++;
+                               dev->stats.collisions++;
                        if (nop.nop_status & STAT_NOCARRIER)
-                               priv(dev)->stats.tx_carrier_errors ++;
+                               dev->stats.tx_carrier_errors++;
                        if (nop.nop_status & STAT_TXLOSTCTS)
                                printk (KERN_WARNING "%s: cts lost\n", dev->name);
                        if (nop.nop_status & STAT_TXSLOWDMA)
-                               priv(dev)->stats.tx_fifo_errors ++;
+                               dev->stats.tx_fifo_errors++;
                        if (nop.nop_status & STAT_COLLEXCESSIVE)
-                               priv(dev)->stats.collisions += 16;
+                               dev->stats.collisions += 16;
                }
 
                if (nop.nop_link == caddr) {
@@ -879,13 +876,13 @@ ether1_recv_done (struct net_device *dev)
 
                                skb->protocol = eth_type_trans (skb, dev);
                                netif_rx (skb);
-                               priv(dev)->stats.rx_packets ++;
+                               dev->stats.rx_packets++;
                        } else
-                               priv(dev)->stats.rx_dropped ++;
+                               dev->stats.rx_dropped++;
                } else {
                        printk(KERN_WARNING "%s: %s\n", dev->name,
                                (rbd.rbd_status & RBD_EOF) ? "oversized packet" : "acnt not valid");
-                       priv(dev)->stats.rx_dropped ++;
+                       dev->stats.rx_dropped++;
                }
 
                nexttail = ether1_readw(dev, priv(dev)->rx_tail, rfd_t, rfd_link, NORMALIRQS);
@@ -939,7 +936,7 @@ ether1_interrupt (int irq, void *dev_id)
                                printk (KERN_WARNING "%s: RU went not ready: RU suspended\n", dev->name);
                                ether1_writew(dev, SCB_CMDRXRESUME, SCB_ADDR, scb_t, scb_command, NORMALIRQS);
                                writeb(CTRL_CA, REG_CONTROL);
-                               priv(dev)->stats.rx_dropped ++; /* we suspended due to lack of buffer space */
+                               dev->stats.rx_dropped++;        /* we suspended due to lack of buffer space */
                        } else
                                printk(KERN_WARNING "%s: RU went not ready: %04X\n", dev->name,
                                        ether1_readw(dev, SCB_ADDR, scb_t, scb_status, NORMALIRQS));
@@ -962,12 +959,6 @@ ether1_close (struct net_device *dev)
        return 0;
 }
 
-static struct net_device_stats *
-ether1_getstats (struct net_device *dev)
-{
-       return &priv(dev)->stats;
-}
-
 /*
  * Set or clear the multicast filter for this adaptor.
  * num_addrs == -1     Promiscuous mode, receive all packets.
@@ -994,7 +985,6 @@ static const struct net_device_ops ether1_netdev_ops = {
        .ndo_open               = ether1_open,
        .ndo_stop               = ether1_close,
        .ndo_start_xmit         = ether1_sendpacket,
-       .ndo_get_stats          = ether1_getstats,
        .ndo_set_multicast_list = ether1_setmulticastlist,
        .ndo_tx_timeout         = ether1_timeout,
        .ndo_validate_addr      = eth_validate_addr,
index c8a4b2389d854b5ff22ad59716888c4c2c2324a3..3a5830ab3dc7dd2aacb6229b10624921f7c05087 100644 (file)
@@ -38,7 +38,6 @@
 
 struct ether1_priv {
        void __iomem *base;
-       struct net_device_stats stats;
        unsigned int tx_link;
        unsigned int tx_head;
        volatile unsigned int tx_tail;