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

Commit 4f1e5ba0 authored by Don Fry's avatar Don Fry Committed by Jeff Garzik
Browse files

pcnet32: remove private net_device_stats structure



Remove the statistics from the private structure.
Use the net_device_stats in netn_device structure.

Following Jeff Garzik's massive cleanup Sep 01.
pcnet32 was not "low-hanging fruit".

Tested x86_64.

Signed-off-by: default avatarDon Fry <pcnet32@verizon.net>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 0280f9f9
Loading
Loading
Loading
Loading
+25 −26
Original line number Diff line number Diff line
@@ -282,7 +282,6 @@ struct pcnet32_private {

	struct net_device	*dev;
	struct napi_struct	napi;
	struct net_device_stats	stats;
	char			tx_full;
	char			phycount;	/* number of phys found */
	int			options;
@@ -1182,15 +1181,15 @@ static void pcnet32_rx_entry(struct net_device *dev,
		 * buffers, with only the last correctly noting the error.
		 */
		if (status & 0x01)	/* Only count a general error at the */
			lp->stats.rx_errors++;	/* end of a packet. */
			dev->stats.rx_errors++;	/* end of a packet. */
		if (status & 0x20)
			lp->stats.rx_frame_errors++;
			dev->stats.rx_frame_errors++;
		if (status & 0x10)
			lp->stats.rx_over_errors++;
			dev->stats.rx_over_errors++;
		if (status & 0x08)
			lp->stats.rx_crc_errors++;
			dev->stats.rx_crc_errors++;
		if (status & 0x04)
			lp->stats.rx_fifo_errors++;
			dev->stats.rx_fifo_errors++;
		return;
	}

@@ -1201,13 +1200,13 @@ static void pcnet32_rx_entry(struct net_device *dev,
		if (netif_msg_drv(lp))
			printk(KERN_ERR "%s: Impossible packet size %d!\n",
			       dev->name, pkt_len);
		lp->stats.rx_errors++;
		dev->stats.rx_errors++;
		return;
	}
	if (pkt_len < 60) {
		if (netif_msg_rx_err(lp))
			printk(KERN_ERR "%s: Runt packet!\n", dev->name);
		lp->stats.rx_errors++;
		dev->stats.rx_errors++;
		return;
	}

@@ -1241,7 +1240,7 @@ static void pcnet32_rx_entry(struct net_device *dev,
			printk(KERN_ERR
			       "%s: Memory squeeze, dropping packet.\n",
			       dev->name);
		lp->stats.rx_dropped++;
		dev->stats.rx_dropped++;
		return;
	}
	skb->dev = dev;
@@ -1260,7 +1259,7 @@ static void pcnet32_rx_entry(struct net_device *dev,
					       pkt_len,
					       PCI_DMA_FROMDEVICE);
	}
	lp->stats.rx_bytes += skb->len;
	dev->stats.rx_bytes += skb->len;
	skb->protocol = eth_type_trans(skb, dev);
#ifdef CONFIG_PCNET32_NAPI
	netif_receive_skb(skb);
@@ -1268,7 +1267,7 @@ static void pcnet32_rx_entry(struct net_device *dev,
	netif_rx(skb);
#endif
	dev->last_rx = jiffies;
	lp->stats.rx_packets++;
	dev->stats.rx_packets++;
	return;
}

@@ -1316,21 +1315,21 @@ static int pcnet32_tx(struct net_device *dev)
		if (status & 0x4000) {
			/* There was a major error, log it. */
			int err_status = le32_to_cpu(lp->tx_ring[entry].misc);
			lp->stats.tx_errors++;
			dev->stats.tx_errors++;
			if (netif_msg_tx_err(lp))
				printk(KERN_ERR
				       "%s: Tx error status=%04x err_status=%08x\n",
				       dev->name, status,
				       err_status);
			if (err_status & 0x04000000)
				lp->stats.tx_aborted_errors++;
				dev->stats.tx_aborted_errors++;
			if (err_status & 0x08000000)
				lp->stats.tx_carrier_errors++;
				dev->stats.tx_carrier_errors++;
			if (err_status & 0x10000000)
				lp->stats.tx_window_errors++;
				dev->stats.tx_window_errors++;
#ifndef DO_DXSUFLO
			if (err_status & 0x40000000) {
				lp->stats.tx_fifo_errors++;
				dev->stats.tx_fifo_errors++;
				/* Ackk!  On FIFO errors the Tx unit is turned off! */
				/* Remove this verbosity later! */
				if (netif_msg_tx_err(lp))
@@ -1341,7 +1340,7 @@ static int pcnet32_tx(struct net_device *dev)
			}
#else
			if (err_status & 0x40000000) {
				lp->stats.tx_fifo_errors++;
				dev->stats.tx_fifo_errors++;
				if (!lp->dxsuflo) {	/* If controller doesn't recover ... */
					/* Ackk!  On FIFO errors the Tx unit is turned off! */
					/* Remove this verbosity later! */
@@ -1355,8 +1354,8 @@ static int pcnet32_tx(struct net_device *dev)
#endif
		} else {
			if (status & 0x1800)
				lp->stats.collisions++;
			lp->stats.tx_packets++;
				dev->stats.collisions++;
			dev->stats.tx_packets++;
		}

		/* We must free the original skb */
@@ -2478,7 +2477,7 @@ static void pcnet32_tx_timeout(struct net_device *dev)
		       "%s: transmit timed out, status %4.4x, resetting.\n",
		       dev->name, lp->a.read_csr(ioaddr, CSR0));
	lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);
	lp->stats.tx_errors++;
	dev->stats.tx_errors++;
	if (netif_msg_tx_err(lp)) {
		int i;
		printk(KERN_DEBUG
@@ -2548,7 +2547,7 @@ static int pcnet32_start_xmit(struct sk_buff *skb, struct net_device *dev)
	lp->tx_ring[entry].status = cpu_to_le16(status);

	lp->cur_tx++;
	lp->stats.tx_bytes += skb->len;
	dev->stats.tx_bytes += skb->len;

	/* Trigger an immediate send poll. */
	lp->a.write_csr(ioaddr, CSR0, CSR0_INTEN | CSR0_TXPOLL);
@@ -2593,7 +2592,7 @@ pcnet32_interrupt(int irq, void *dev_id)

		/* Log misc errors. */
		if (csr0 & 0x4000)
			lp->stats.tx_errors++;	/* Tx babble. */
			dev->stats.tx_errors++;	/* Tx babble. */
		if (csr0 & 0x1000) {
			/*
			 * This happens when our receive ring is full. This
@@ -2606,7 +2605,7 @@ pcnet32_interrupt(int irq, void *dev_id)
			 * don't get a rx interrupt, but a missed frame
			 * interrupt sooner or later.
			 */
			lp->stats.rx_errors++;	/* Missed a Rx frame. */
			dev->stats.rx_errors++;	/* Missed a Rx frame. */
		}
		if (csr0 & 0x0800) {
			if (netif_msg_drv(lp))
@@ -2668,7 +2667,7 @@ static int pcnet32_close(struct net_device *dev)

	spin_lock_irqsave(&lp->lock, flags);

	lp->stats.rx_missed_errors = lp->a.read_csr(ioaddr, 112);
	dev->stats.rx_missed_errors = lp->a.read_csr(ioaddr, 112);

	if (netif_msg_ifdown(lp))
		printk(KERN_DEBUG
@@ -2705,10 +2704,10 @@ static struct net_device_stats *pcnet32_get_stats(struct net_device *dev)
	unsigned long flags;

	spin_lock_irqsave(&lp->lock, flags);
	lp->stats.rx_missed_errors = lp->a.read_csr(ioaddr, 112);
	dev->stats.rx_missed_errors = lp->a.read_csr(ioaddr, 112);
	spin_unlock_irqrestore(&lp->lock, flags);

	return &lp->stats;
	return &dev->stats;
}

/* taken from the sunlance driver, which it took from the depca driver */