[NET] drivers/net: statistics cleanup #1 -- save memory and shrink code
We now have struct net_device_stats embedded in struct net_device, and the default ->get_stats() hook does the obvious thing for us. Run through drivers/net/* and remove the driver-local storage of statistics, and driver-local ->get_stats() hook where applicable. This was just the low-hanging fruit in drivers/net; plenty more drivers remain to be updated. [ Resolved conflicts with napi_struct changes and fix sunqe build regression... -DaveM ] Signed-off-by: Jeff Garzik <jeff@garzik.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
ff8ac60948
commit
09f75cd7bf
@@ -305,18 +305,18 @@ static int lance_rx (struct net_device *dev)
|
||||
|
||||
/* We got an incomplete frame? */
|
||||
if ((bits & LE_R1_POK) != LE_R1_POK) {
|
||||
lp->stats.rx_over_errors++;
|
||||
lp->stats.rx_errors++;
|
||||
dev->stats.rx_over_errors++;
|
||||
dev->stats.rx_errors++;
|
||||
continue;
|
||||
} else if (bits & LE_R1_ERR) {
|
||||
/* Count only the end frame as a rx error,
|
||||
* not the beginning
|
||||
*/
|
||||
if (bits & LE_R1_BUF) lp->stats.rx_fifo_errors++;
|
||||
if (bits & LE_R1_CRC) lp->stats.rx_crc_errors++;
|
||||
if (bits & LE_R1_OFL) lp->stats.rx_over_errors++;
|
||||
if (bits & LE_R1_FRA) lp->stats.rx_frame_errors++;
|
||||
if (bits & LE_R1_EOP) lp->stats.rx_errors++;
|
||||
if (bits & LE_R1_BUF) dev->stats.rx_fifo_errors++;
|
||||
if (bits & LE_R1_CRC) dev->stats.rx_crc_errors++;
|
||||
if (bits & LE_R1_OFL) dev->stats.rx_over_errors++;
|
||||
if (bits & LE_R1_FRA) dev->stats.rx_frame_errors++;
|
||||
if (bits & LE_R1_EOP) dev->stats.rx_errors++;
|
||||
} else {
|
||||
len = (rd->mblength & 0xfff) - 4;
|
||||
skb = dev_alloc_skb (len+2);
|
||||
@@ -324,7 +324,7 @@ static int lance_rx (struct net_device *dev)
|
||||
if (skb == 0) {
|
||||
printk ("%s: Memory squeeze, deferring packet.\n",
|
||||
dev->name);
|
||||
lp->stats.rx_dropped++;
|
||||
dev->stats.rx_dropped++;
|
||||
rd->mblength = 0;
|
||||
rd->rmd1_bits = LE_R1_OWN;
|
||||
lp->rx_new = (lp->rx_new + 1) & lp->rx_ring_mod_mask;
|
||||
@@ -339,8 +339,8 @@ static int lance_rx (struct net_device *dev)
|
||||
skb->protocol = eth_type_trans (skb, dev);
|
||||
netif_rx (skb);
|
||||
dev->last_rx = jiffies;
|
||||
lp->stats.rx_packets++;
|
||||
lp->stats.rx_bytes += len;
|
||||
dev->stats.rx_packets++;
|
||||
dev->stats.rx_bytes += len;
|
||||
}
|
||||
|
||||
/* Return the packet to the pool */
|
||||
@@ -377,12 +377,12 @@ static int lance_tx (struct net_device *dev)
|
||||
if (td->tmd1_bits & LE_T1_ERR) {
|
||||
status = td->misc;
|
||||
|
||||
lp->stats.tx_errors++;
|
||||
if (status & LE_T3_RTY) lp->stats.tx_aborted_errors++;
|
||||
if (status & LE_T3_LCOL) lp->stats.tx_window_errors++;
|
||||
dev->stats.tx_errors++;
|
||||
if (status & LE_T3_RTY) dev->stats.tx_aborted_errors++;
|
||||
if (status & LE_T3_LCOL) dev->stats.tx_window_errors++;
|
||||
|
||||
if (status & LE_T3_CLOS) {
|
||||
lp->stats.tx_carrier_errors++;
|
||||
dev->stats.tx_carrier_errors++;
|
||||
if (lp->auto_select) {
|
||||
lp->tpe = 1 - lp->tpe;
|
||||
printk("%s: Carrier Lost, trying %s\n",
|
||||
@@ -400,7 +400,7 @@ static int lance_tx (struct net_device *dev)
|
||||
/* buffer errors and underflows turn off the transmitter */
|
||||
/* Restart the adapter */
|
||||
if (status & (LE_T3_BUF|LE_T3_UFL)) {
|
||||
lp->stats.tx_fifo_errors++;
|
||||
dev->stats.tx_fifo_errors++;
|
||||
|
||||
printk ("%s: Tx: ERR_BUF|ERR_UFL, restarting\n",
|
||||
dev->name);
|
||||
@@ -420,13 +420,13 @@ static int lance_tx (struct net_device *dev)
|
||||
|
||||
/* One collision before packet was sent. */
|
||||
if (td->tmd1_bits & LE_T1_EONE)
|
||||
lp->stats.collisions++;
|
||||
dev->stats.collisions++;
|
||||
|
||||
/* More than one collision, be optimistic. */
|
||||
if (td->tmd1_bits & LE_T1_EMORE)
|
||||
lp->stats.collisions += 2;
|
||||
dev->stats.collisions += 2;
|
||||
|
||||
lp->stats.tx_packets++;
|
||||
dev->stats.tx_packets++;
|
||||
}
|
||||
|
||||
j = (j + 1) & lp->tx_ring_mod_mask;
|
||||
@@ -471,9 +471,9 @@ lance_interrupt (int irq, void *dev_id)
|
||||
|
||||
/* Log misc errors. */
|
||||
if (csr0 & LE_C0_BABL)
|
||||
lp->stats.tx_errors++; /* Tx babble. */
|
||||
dev->stats.tx_errors++; /* Tx babble. */
|
||||
if (csr0 & LE_C0_MISS)
|
||||
lp->stats.rx_errors++; /* Missed a Rx frame. */
|
||||
dev->stats.rx_errors++; /* Missed a Rx frame. */
|
||||
if (csr0 & LE_C0_MERR) {
|
||||
printk("%s: Bus master arbitration failure, status %4.4x.\n",
|
||||
dev->name, csr0);
|
||||
@@ -589,13 +589,6 @@ int lance_start_xmit (struct sk_buff *skb, struct net_device *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct net_device_stats *lance_get_stats (struct net_device *dev)
|
||||
{
|
||||
struct lance_private *lp = netdev_priv(dev);
|
||||
|
||||
return &lp->stats;
|
||||
}
|
||||
|
||||
/* taken from the depca driver via a2065.c */
|
||||
static void lance_load_multicast (struct net_device *dev)
|
||||
{
|
||||
|
Reference in New Issue
Block a user