Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+12 −22
Original line number Diff line number Diff line
@@ -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,
+0 −1
Original line number Diff line number Diff line
@@ -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;