Commit 57616ee4 authored by Kulikov Vasiliy's avatar Kulikov Vasiliy Committed by David S. Miller

ethoc: 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 d117b666
...@@ -183,7 +183,6 @@ MODULE_PARM_DESC(buffer_size, "DMA buffer allocation size"); ...@@ -183,7 +183,6 @@ MODULE_PARM_DESC(buffer_size, "DMA buffer allocation size");
* @vma: pointer to array of virtual memory addresses for buffers * @vma: pointer to array of virtual memory addresses for buffers
* @netdev: pointer to network device structure * @netdev: pointer to network device structure
* @napi: NAPI structure * @napi: NAPI structure
* @stats: network device statistics
* @msg_enable: device state flags * @msg_enable: device state flags
* @rx_lock: receive lock * @rx_lock: receive lock
* @lock: device lock * @lock: device lock
...@@ -208,7 +207,6 @@ struct ethoc { ...@@ -208,7 +207,6 @@ struct ethoc {
struct net_device *netdev; struct net_device *netdev;
struct napi_struct napi; struct napi_struct napi;
struct net_device_stats stats;
u32 msg_enable; u32 msg_enable;
spinlock_t rx_lock; spinlock_t rx_lock;
...@@ -367,39 +365,39 @@ static unsigned int ethoc_update_rx_stats(struct ethoc *dev, ...@@ -367,39 +365,39 @@ static unsigned int ethoc_update_rx_stats(struct ethoc *dev,
if (bd->stat & RX_BD_TL) { if (bd->stat & RX_BD_TL) {
dev_err(&netdev->dev, "RX: frame too long\n"); dev_err(&netdev->dev, "RX: frame too long\n");
dev->stats.rx_length_errors++; netdev->stats.rx_length_errors++;
ret++; ret++;
} }
if (bd->stat & RX_BD_SF) { if (bd->stat & RX_BD_SF) {
dev_err(&netdev->dev, "RX: frame too short\n"); dev_err(&netdev->dev, "RX: frame too short\n");
dev->stats.rx_length_errors++; netdev->stats.rx_length_errors++;
ret++; ret++;
} }
if (bd->stat & RX_BD_DN) { if (bd->stat & RX_BD_DN) {
dev_err(&netdev->dev, "RX: dribble nibble\n"); dev_err(&netdev->dev, "RX: dribble nibble\n");
dev->stats.rx_frame_errors++; netdev->stats.rx_frame_errors++;
} }
if (bd->stat & RX_BD_CRC) { if (bd->stat & RX_BD_CRC) {
dev_err(&netdev->dev, "RX: wrong CRC\n"); dev_err(&netdev->dev, "RX: wrong CRC\n");
dev->stats.rx_crc_errors++; netdev->stats.rx_crc_errors++;
ret++; ret++;
} }
if (bd->stat & RX_BD_OR) { if (bd->stat & RX_BD_OR) {
dev_err(&netdev->dev, "RX: overrun\n"); dev_err(&netdev->dev, "RX: overrun\n");
dev->stats.rx_over_errors++; netdev->stats.rx_over_errors++;
ret++; ret++;
} }
if (bd->stat & RX_BD_MISS) if (bd->stat & RX_BD_MISS)
dev->stats.rx_missed_errors++; netdev->stats.rx_missed_errors++;
if (bd->stat & RX_BD_LC) { if (bd->stat & RX_BD_LC) {
dev_err(&netdev->dev, "RX: late collision\n"); dev_err(&netdev->dev, "RX: late collision\n");
dev->stats.collisions++; netdev->stats.collisions++;
ret++; ret++;
} }
...@@ -431,15 +429,15 @@ static int ethoc_rx(struct net_device *dev, int limit) ...@@ -431,15 +429,15 @@ static int ethoc_rx(struct net_device *dev, int limit)
void *src = priv->vma[entry]; void *src = priv->vma[entry];
memcpy_fromio(skb_put(skb, size), src, size); memcpy_fromio(skb_put(skb, size), src, size);
skb->protocol = eth_type_trans(skb, dev); skb->protocol = eth_type_trans(skb, dev);
priv->stats.rx_packets++; dev->stats.rx_packets++;
priv->stats.rx_bytes += size; dev->stats.rx_bytes += size;
netif_receive_skb(skb); netif_receive_skb(skb);
} else { } else {
if (net_ratelimit()) if (net_ratelimit())
dev_warn(&dev->dev, "low on memory - " dev_warn(&dev->dev, "low on memory - "
"packet dropped\n"); "packet dropped\n");
priv->stats.rx_dropped++; dev->stats.rx_dropped++;
break; break;
} }
} }
...@@ -460,30 +458,30 @@ static int ethoc_update_tx_stats(struct ethoc *dev, struct ethoc_bd *bd) ...@@ -460,30 +458,30 @@ static int ethoc_update_tx_stats(struct ethoc *dev, struct ethoc_bd *bd)
if (bd->stat & TX_BD_LC) { if (bd->stat & TX_BD_LC) {
dev_err(&netdev->dev, "TX: late collision\n"); dev_err(&netdev->dev, "TX: late collision\n");
dev->stats.tx_window_errors++; netdev->stats.tx_window_errors++;
} }
if (bd->stat & TX_BD_RL) { if (bd->stat & TX_BD_RL) {
dev_err(&netdev->dev, "TX: retransmit limit\n"); dev_err(&netdev->dev, "TX: retransmit limit\n");
dev->stats.tx_aborted_errors++; netdev->stats.tx_aborted_errors++;
} }
if (bd->stat & TX_BD_UR) { if (bd->stat & TX_BD_UR) {
dev_err(&netdev->dev, "TX: underrun\n"); dev_err(&netdev->dev, "TX: underrun\n");
dev->stats.tx_fifo_errors++; netdev->stats.tx_fifo_errors++;
} }
if (bd->stat & TX_BD_CS) { if (bd->stat & TX_BD_CS) {
dev_err(&netdev->dev, "TX: carrier sense lost\n"); dev_err(&netdev->dev, "TX: carrier sense lost\n");
dev->stats.tx_carrier_errors++; netdev->stats.tx_carrier_errors++;
} }
if (bd->stat & TX_BD_STATS) if (bd->stat & TX_BD_STATS)
dev->stats.tx_errors++; netdev->stats.tx_errors++;
dev->stats.collisions += (bd->stat >> 4) & 0xf; netdev->stats.collisions += (bd->stat >> 4) & 0xf;
dev->stats.tx_bytes += bd->stat >> 16; netdev->stats.tx_bytes += bd->stat >> 16;
dev->stats.tx_packets++; netdev->stats.tx_packets++;
return 0; return 0;
} }
...@@ -514,7 +512,7 @@ static void ethoc_tx(struct net_device *dev) ...@@ -514,7 +512,7 @@ static void ethoc_tx(struct net_device *dev)
static irqreturn_t ethoc_interrupt(int irq, void *dev_id) static irqreturn_t ethoc_interrupt(int irq, void *dev_id)
{ {
struct net_device *dev = (struct net_device *)dev_id; struct net_device *dev = dev_id;
struct ethoc *priv = netdev_priv(dev); struct ethoc *priv = netdev_priv(dev);
u32 pending; u32 pending;
...@@ -529,7 +527,7 @@ static irqreturn_t ethoc_interrupt(int irq, void *dev_id) ...@@ -529,7 +527,7 @@ static irqreturn_t ethoc_interrupt(int irq, void *dev_id)
if (pending & INT_MASK_BUSY) { if (pending & INT_MASK_BUSY) {
dev_err(&dev->dev, "packet dropped\n"); dev_err(&dev->dev, "packet dropped\n");
priv->stats.rx_dropped++; dev->stats.rx_dropped++;
} }
if (pending & INT_MASK_RX) { if (pending & INT_MASK_RX) {
...@@ -810,8 +808,7 @@ static void ethoc_tx_timeout(struct net_device *dev) ...@@ -810,8 +808,7 @@ static void ethoc_tx_timeout(struct net_device *dev)
static struct net_device_stats *ethoc_stats(struct net_device *dev) static struct net_device_stats *ethoc_stats(struct net_device *dev)
{ {
struct ethoc *priv = netdev_priv(dev); return &dev->stats;
return &priv->stats;
} }
static netdev_tx_t ethoc_start_xmit(struct sk_buff *skb, struct net_device *dev) static netdev_tx_t ethoc_start_xmit(struct sk_buff *skb, struct net_device *dev)
...@@ -822,7 +819,7 @@ static netdev_tx_t ethoc_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -822,7 +819,7 @@ static netdev_tx_t ethoc_start_xmit(struct sk_buff *skb, struct net_device *dev)
void *dest; void *dest;
if (unlikely(skb->len > ETHOC_BUFSIZ)) { if (unlikely(skb->len > ETHOC_BUFSIZ)) {
priv->stats.tx_errors++; dev->stats.tx_errors++;
goto out; goto out;
} }
......
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