Commit 25aec76a authored by Tobias Klauser's avatar Tobias Klauser Committed by David S. Miller

ether1: Use net_device_stats from struct net_device

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