Commit 661a16ce authored by Kulikov Vasiliy's avatar Kulikov Vasiliy Committed by David S. Miller

cs89x0: Use the instance of net_device_stats from net_device.

Since net_device has an instance of net_device_stats,
we can remove the instance of this from the adapter structure.
Signed-off-by: default avatarKulikov Vasiliy <segooon@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 275defc9
...@@ -218,7 +218,6 @@ static unsigned int net_debug = DEBUGGING; ...@@ -218,7 +218,6 @@ static unsigned int net_debug = DEBUGGING;
/* Information that need to be kept for each board. */ /* Information that need to be kept for each board. */
struct net_local { struct net_local {
struct net_device_stats stats;
int chip_type; /* one of: CS8900, CS8920, CS8920M */ int chip_type; /* one of: CS8900, CS8920, CS8920M */
char chip_revision; /* revision letter of the chip ('A'...) */ char chip_revision; /* revision letter of the chip ('A'...) */
int send_cmd; /* the proper send command: TX_NOW, TX_AFTER_381, or TX_AFTER_ALL */ int send_cmd; /* the proper send command: TX_NOW, TX_AFTER_381, or TX_AFTER_ALL */
...@@ -257,7 +256,7 @@ static void reset_chip(struct net_device *dev); ...@@ -257,7 +256,7 @@ static void reset_chip(struct net_device *dev);
static int get_eeprom_data(struct net_device *dev, int off, int len, int *buffer); static int get_eeprom_data(struct net_device *dev, int off, int len, int *buffer);
static int get_eeprom_cksum(int off, int len, int *buffer); static int get_eeprom_cksum(int off, int len, int *buffer);
static int set_mac_address(struct net_device *dev, void *addr); static int set_mac_address(struct net_device *dev, void *addr);
static void count_rx_errors(int status, struct net_local *lp); static void count_rx_errors(int status, struct net_device *dev);
#ifdef CONFIG_NET_POLL_CONTROLLER #ifdef CONFIG_NET_POLL_CONTROLLER
static void net_poll_controller(struct net_device *dev); static void net_poll_controller(struct net_device *dev);
#endif #endif
...@@ -983,7 +982,7 @@ dma_rx(struct net_device *dev) ...@@ -983,7 +982,7 @@ dma_rx(struct net_device *dev)
dev->name, (unsigned long)bp, status, length); dev->name, (unsigned long)bp, status, length);
} }
if ((status & RX_OK) == 0) { if ((status & RX_OK) == 0) {
count_rx_errors(status, lp); count_rx_errors(status, dev);
goto skip_this_frame; goto skip_this_frame;
} }
...@@ -992,7 +991,7 @@ dma_rx(struct net_device *dev) ...@@ -992,7 +991,7 @@ dma_rx(struct net_device *dev)
if (skb == NULL) { if (skb == NULL) {
if (net_debug) /* I don't think we want to do this to a stressed system */ if (net_debug) /* I don't think we want to do this to a stressed system */
printk("%s: Memory squeeze, dropping packet.\n", dev->name); printk("%s: Memory squeeze, dropping packet.\n", dev->name);
lp->stats.rx_dropped++; dev->stats.rx_dropped++;
/* AKPM: advance bp to the next frame */ /* AKPM: advance bp to the next frame */
skip_this_frame: skip_this_frame:
...@@ -1022,8 +1021,8 @@ dma_rx(struct net_device *dev) ...@@ -1022,8 +1021,8 @@ dma_rx(struct net_device *dev)
} }
skb->protocol=eth_type_trans(skb,dev); skb->protocol=eth_type_trans(skb,dev);
netif_rx(skb); netif_rx(skb);
lp->stats.rx_packets++; dev->stats.rx_packets++;
lp->stats.rx_bytes += length; dev->stats.rx_bytes += length;
} }
#endif /* ALLOW_DMA */ #endif /* ALLOW_DMA */
...@@ -1552,7 +1551,7 @@ static netdev_tx_t net_send_packet(struct sk_buff *skb,struct net_device *dev) ...@@ -1552,7 +1551,7 @@ static netdev_tx_t net_send_packet(struct sk_buff *skb,struct net_device *dev)
/* Write the contents of the packet */ /* Write the contents of the packet */
writewords(dev->base_addr, TX_FRAME_PORT,skb->data,(skb->len+1) >>1); writewords(dev->base_addr, TX_FRAME_PORT,skb->data,(skb->len+1) >>1);
spin_unlock_irqrestore(&lp->lock, flags); spin_unlock_irqrestore(&lp->lock, flags);
lp->stats.tx_bytes += skb->len; dev->stats.tx_bytes += skb->len;
dev_kfree_skb (skb); dev_kfree_skb (skb);
/* /*
...@@ -1598,18 +1597,23 @@ static irqreturn_t net_interrupt(int irq, void *dev_id) ...@@ -1598,18 +1597,23 @@ static irqreturn_t net_interrupt(int irq, void *dev_id)
net_rx(dev); net_rx(dev);
break; break;
case ISQ_TRANSMITTER_EVENT: case ISQ_TRANSMITTER_EVENT:
lp->stats.tx_packets++; dev->stats.tx_packets++;
netif_wake_queue(dev); /* Inform upper layers. */ netif_wake_queue(dev); /* Inform upper layers. */
if ((status & ( TX_OK | if ((status & ( TX_OK |
TX_LOST_CRS | TX_LOST_CRS |
TX_SQE_ERROR | TX_SQE_ERROR |
TX_LATE_COL | TX_LATE_COL |
TX_16_COL)) != TX_OK) { TX_16_COL)) != TX_OK) {
if ((status & TX_OK) == 0) lp->stats.tx_errors++; if ((status & TX_OK) == 0)
if (status & TX_LOST_CRS) lp->stats.tx_carrier_errors++; dev->stats.tx_errors++;
if (status & TX_SQE_ERROR) lp->stats.tx_heartbeat_errors++; if (status & TX_LOST_CRS)
if (status & TX_LATE_COL) lp->stats.tx_window_errors++; dev->stats.tx_carrier_errors++;
if (status & TX_16_COL) lp->stats.tx_aborted_errors++; if (status & TX_SQE_ERROR)
dev->stats.tx_heartbeat_errors++;
if (status & TX_LATE_COL)
dev->stats.tx_window_errors++;
if (status & TX_16_COL)
dev->stats.tx_aborted_errors++;
} }
break; break;
case ISQ_BUFFER_EVENT: case ISQ_BUFFER_EVENT:
...@@ -1651,10 +1655,10 @@ static irqreturn_t net_interrupt(int irq, void *dev_id) ...@@ -1651,10 +1655,10 @@ static irqreturn_t net_interrupt(int irq, void *dev_id)
#endif #endif
break; break;
case ISQ_RX_MISS_EVENT: case ISQ_RX_MISS_EVENT:
lp->stats.rx_missed_errors += (status >>6); dev->stats.rx_missed_errors += (status >> 6);
break; break;
case ISQ_TX_COL_EVENT: case ISQ_TX_COL_EVENT:
lp->stats.collisions += (status >>6); dev->stats.collisions += (status >> 6);
break; break;
} }
} }
...@@ -1662,22 +1666,24 @@ static irqreturn_t net_interrupt(int irq, void *dev_id) ...@@ -1662,22 +1666,24 @@ static irqreturn_t net_interrupt(int irq, void *dev_id)
} }
static void static void
count_rx_errors(int status, struct net_local *lp) count_rx_errors(int status, struct net_device *dev)
{ {
lp->stats.rx_errors++; dev->stats.rx_errors++;
if (status & RX_RUNT) lp->stats.rx_length_errors++; if (status & RX_RUNT)
if (status & RX_EXTRA_DATA) lp->stats.rx_length_errors++; dev->stats.rx_length_errors++;
if (status & RX_CRC_ERROR) if (!(status & (RX_EXTRA_DATA|RX_RUNT))) if (status & RX_EXTRA_DATA)
dev->stats.rx_length_errors++;
if ((status & RX_CRC_ERROR) && !(status & (RX_EXTRA_DATA|RX_RUNT)))
/* per str 172 */ /* per str 172 */
lp->stats.rx_crc_errors++; dev->stats.rx_crc_errors++;
if (status & RX_DRIBBLE) lp->stats.rx_frame_errors++; if (status & RX_DRIBBLE)
dev->stats.rx_frame_errors++;
} }
/* We have a good packet(s), get it/them out of the buffers. */ /* We have a good packet(s), get it/them out of the buffers. */
static void static void
net_rx(struct net_device *dev) net_rx(struct net_device *dev)
{ {
struct net_local *lp = netdev_priv(dev);
struct sk_buff *skb; struct sk_buff *skb;
int status, length; int status, length;
...@@ -1686,7 +1692,7 @@ net_rx(struct net_device *dev) ...@@ -1686,7 +1692,7 @@ net_rx(struct net_device *dev)
length = readword(ioaddr, RX_FRAME_PORT); length = readword(ioaddr, RX_FRAME_PORT);
if ((status & RX_OK) == 0) { if ((status & RX_OK) == 0) {
count_rx_errors(status, lp); count_rx_errors(status, dev);
return; return;
} }
...@@ -1696,7 +1702,7 @@ net_rx(struct net_device *dev) ...@@ -1696,7 +1702,7 @@ net_rx(struct net_device *dev)
#if 0 /* Again, this seems a cruel thing to do */ #if 0 /* Again, this seems a cruel thing to do */
printk(KERN_WARNING "%s: Memory squeeze, dropping packet.\n", dev->name); printk(KERN_WARNING "%s: Memory squeeze, dropping packet.\n", dev->name);
#endif #endif
lp->stats.rx_dropped++; dev->stats.rx_dropped++;
return; return;
} }
skb_reserve(skb, 2); /* longword align L3 header */ skb_reserve(skb, 2); /* longword align L3 header */
...@@ -1713,8 +1719,8 @@ net_rx(struct net_device *dev) ...@@ -1713,8 +1719,8 @@ net_rx(struct net_device *dev)
skb->protocol=eth_type_trans(skb,dev); skb->protocol=eth_type_trans(skb,dev);
netif_rx(skb); netif_rx(skb);
lp->stats.rx_packets++; dev->stats.rx_packets++;
lp->stats.rx_bytes += length; dev->stats.rx_bytes += length;
} }
#if ALLOW_DMA #if ALLOW_DMA
...@@ -1765,11 +1771,11 @@ net_get_stats(struct net_device *dev) ...@@ -1765,11 +1771,11 @@ net_get_stats(struct net_device *dev)
spin_lock_irqsave(&lp->lock, flags); spin_lock_irqsave(&lp->lock, flags);
/* Update the statistics from the device registers. */ /* Update the statistics from the device registers. */
lp->stats.rx_missed_errors += (readreg(dev, PP_RxMiss) >> 6); dev->stats.rx_missed_errors += (readreg(dev, PP_RxMiss) >> 6);
lp->stats.collisions += (readreg(dev, PP_TxCol) >> 6); dev->stats.collisions += (readreg(dev, PP_TxCol) >> 6);
spin_unlock_irqrestore(&lp->lock, flags); spin_unlock_irqrestore(&lp->lock, flags);
return &lp->stats; return &dev->stats;
} }
static void set_multicast_list(struct net_device *dev) static void set_multicast_list(struct net_device *dev)
......
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