[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
+12
-27
@@ -109,7 +109,6 @@ typedef unsigned char uchar;
|
||||
|
||||
/* Information that need to be kept for each board. */
|
||||
struct net_local {
|
||||
struct net_device_stats stats;
|
||||
spinlock_t lock;
|
||||
unsigned char mc_filter[8];
|
||||
uint jumpered:1; /* Set iff the board has jumper config. */
|
||||
@@ -164,7 +163,6 @@ static int net_send_packet(struct sk_buff *skb, struct net_device *dev);
|
||||
static irqreturn_t net_interrupt(int irq, void *dev_id);
|
||||
static void net_rx(struct net_device *dev);
|
||||
static int net_close(struct net_device *dev);
|
||||
static struct net_device_stats *net_get_stats(struct net_device *dev);
|
||||
static void set_rx_mode(struct net_device *dev);
|
||||
static void net_tx_timeout (struct net_device *dev);
|
||||
|
||||
@@ -456,7 +454,6 @@ found:
|
||||
dev->open = net_open;
|
||||
dev->stop = net_close;
|
||||
dev->hard_start_xmit = net_send_packet;
|
||||
dev->get_stats = net_get_stats;
|
||||
dev->set_multicast_list = &set_rx_mode;
|
||||
dev->tx_timeout = net_tx_timeout;
|
||||
dev->watchdog_timeo = TX_TIMEOUT;
|
||||
@@ -571,7 +568,7 @@ static void net_tx_timeout (struct net_device *dev)
|
||||
dev->name, inw(ioaddr + TX_STATUS), inw(ioaddr + TX_INTR), inw(ioaddr + TX_MODE),
|
||||
inw(ioaddr + CONFIG_0), inw(ioaddr + DATAPORT), inw(ioaddr + TX_START),
|
||||
inw(ioaddr + MODE13 - 1), inw(ioaddr + RX_CTRL));
|
||||
lp->stats.tx_errors++;
|
||||
dev->stats.tx_errors++;
|
||||
/* ToDo: We should try to restart the adaptor... */
|
||||
outw(0xffff, ioaddr + MODE24);
|
||||
outw (0xffff, ioaddr + TX_STATUS);
|
||||
@@ -691,10 +688,10 @@ static irqreturn_t net_interrupt(int irq, void *dev_id)
|
||||
printk("%s: 16 Collision occur during Txing.\n", dev->name);
|
||||
/* Cancel sending a packet. */
|
||||
outb(0x03, ioaddr + COL16CNTL);
|
||||
lp->stats.collisions++;
|
||||
dev->stats.collisions++;
|
||||
}
|
||||
if (status & 0x82) {
|
||||
lp->stats.tx_packets++;
|
||||
dev->stats.tx_packets++;
|
||||
/* The Tx queue has any packets and is not being
|
||||
transferred a packet from the host, start
|
||||
transmitting. */
|
||||
@@ -719,7 +716,6 @@ static irqreturn_t net_interrupt(int irq, void *dev_id)
|
||||
static void
|
||||
net_rx(struct net_device *dev)
|
||||
{
|
||||
struct net_local *lp = netdev_priv(dev);
|
||||
int ioaddr = dev->base_addr;
|
||||
int boguscount = 5;
|
||||
|
||||
@@ -738,11 +734,11 @@ net_rx(struct net_device *dev)
|
||||
#endif
|
||||
|
||||
if ((status & 0xF0) != 0x20) { /* There was an error. */
|
||||
lp->stats.rx_errors++;
|
||||
if (status & 0x08) lp->stats.rx_length_errors++;
|
||||
if (status & 0x04) lp->stats.rx_frame_errors++;
|
||||
if (status & 0x02) lp->stats.rx_crc_errors++;
|
||||
if (status & 0x01) lp->stats.rx_over_errors++;
|
||||
dev->stats.rx_errors++;
|
||||
if (status & 0x08) dev->stats.rx_length_errors++;
|
||||
if (status & 0x04) dev->stats.rx_frame_errors++;
|
||||
if (status & 0x02) dev->stats.rx_crc_errors++;
|
||||
if (status & 0x01) dev->stats.rx_over_errors++;
|
||||
} else {
|
||||
/* Malloc up new buffer. */
|
||||
struct sk_buff *skb;
|
||||
@@ -753,7 +749,7 @@ net_rx(struct net_device *dev)
|
||||
/* Prime the FIFO and then flush the packet. */
|
||||
inw(ioaddr + DATAPORT); inw(ioaddr + DATAPORT);
|
||||
outb(0x05, ioaddr + RX_CTRL);
|
||||
lp->stats.rx_errors++;
|
||||
dev->stats.rx_errors++;
|
||||
break;
|
||||
}
|
||||
skb = dev_alloc_skb(pkt_len+3);
|
||||
@@ -763,7 +759,7 @@ net_rx(struct net_device *dev)
|
||||
/* Prime the FIFO and then flush the packet. */
|
||||
inw(ioaddr + DATAPORT); inw(ioaddr + DATAPORT);
|
||||
outb(0x05, ioaddr + RX_CTRL);
|
||||
lp->stats.rx_dropped++;
|
||||
dev->stats.rx_dropped++;
|
||||
break;
|
||||
}
|
||||
skb_reserve(skb,2);
|
||||
@@ -772,8 +768,8 @@ net_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 += pkt_len;
|
||||
dev->stats.rx_packets++;
|
||||
dev->stats.rx_bytes += pkt_len;
|
||||
}
|
||||
if (--boguscount <= 0)
|
||||
break;
|
||||
@@ -822,17 +818,6 @@ static int net_close(struct net_device *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Get the current statistics.
|
||||
This may be called with the card open or closed.
|
||||
There are no on-chip counters, so this function is trivial.
|
||||
*/
|
||||
static struct net_device_stats *
|
||||
net_get_stats(struct net_device *dev)
|
||||
{
|
||||
struct net_local *lp = netdev_priv(dev);
|
||||
return &lp->stats;
|
||||
}
|
||||
|
||||
/*
|
||||
Set the multicast/promiscuous mode for this adaptor.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user