r6040: do not use a private stats structure to store statistics

Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu>
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
This commit is contained in:
Florian Fainelli 2007-12-12 22:34:55 +01:00 committed by Francois Romieu
parent 21511abd0a
commit d248fd7790
1 changed files with 20 additions and 14 deletions

View File

@ -174,7 +174,6 @@ struct r6040_private {
struct net_device *dev; struct net_device *dev;
struct mii_if_info mii_if; struct mii_if_info mii_if;
struct napi_struct napi; struct napi_struct napi;
struct net_device_stats stats;
u16 napi_rx_running; u16 napi_rx_running;
void __iomem *base; void __iomem *base;
}; };
@ -280,11 +279,11 @@ static struct net_device_stats *r6040_get_stats(struct net_device *dev)
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&priv->lock, flags); spin_lock_irqsave(&priv->lock, flags);
priv->stats.rx_crc_errors += ioread8(ioaddr + ME_CNT1); dev->stats.rx_crc_errors += ioread8(ioaddr + ME_CNT1);
priv->stats.multicast += ioread8(ioaddr + ME_CNT0); dev->stats.multicast += ioread8(ioaddr + ME_CNT0);
spin_unlock_irqrestore(&priv->lock, flags); spin_unlock_irqrestore(&priv->lock, flags);
return &priv->stats; return &dev->stats;
} }
/* Stop RDC MAC and Free the allocated resource */ /* Stop RDC MAC and Free the allocated resource */
@ -432,19 +431,24 @@ static int r6040_rx(struct net_device *dev, int limit)
/* Check for errors */ /* Check for errors */
err = ioread16(ioaddr + MLSR); err = ioread16(ioaddr + MLSR);
if (err & 0x0400) priv->stats.rx_errors++; if (err & 0x0400)
dev->stats.rx_errors++;
/* RX FIFO over-run */ /* RX FIFO over-run */
if (err & 0x8000) priv->stats.rx_fifo_errors++; if (err & 0x8000)
dev->stats.rx_fifo_errors++;
/* RX descriptor unavailable */ /* RX descriptor unavailable */
if (err & 0x0080) priv->stats.rx_frame_errors++; if (err & 0x0080)
dev->stats.rx_frame_errors++;
/* Received packet with length over buffer lenght */ /* Received packet with length over buffer lenght */
if (err & 0x0020) priv->stats.rx_over_errors++; if (err & 0x0020)
dev->stats.rx_over_errors++;
/* Received packet with too long or short */ /* Received packet with too long or short */
if (err & (0x0010|0x0008)) priv->stats.rx_length_errors++; if (err & (0x0010 | 0x0008))
dev->stats.rx_length_errors++;
/* Received packet with CRC errors */ /* Received packet with CRC errors */
if (err & 0x0004) { if (err & 0x0004) {
spin_lock(&priv->lock); spin_lock(&priv->lock);
priv->stats.rx_crc_errors++; dev->stats.rx_crc_errors++;
spin_unlock(&priv->lock); spin_unlock(&priv->lock);
} }
@ -469,8 +473,8 @@ static int r6040_rx(struct net_device *dev, int limit)
/* Send to upper layer */ /* Send to upper layer */
netif_receive_skb(skb_ptr); netif_receive_skb(skb_ptr);
dev->last_rx = jiffies; dev->last_rx = jiffies;
priv->dev->stats.rx_packets++; dev->stats.rx_packets++;
priv->dev->stats.rx_bytes += descptr->len; dev->stats.rx_bytes += descptr->len;
/* To next descriptor */ /* To next descriptor */
descptr = descptr->vndescp; descptr = descptr->vndescp;
priv->rx_free_desc--; priv->rx_free_desc--;
@ -498,8 +502,10 @@ static void r6040_tx(struct net_device *dev)
/* Check for errors */ /* Check for errors */
err = ioread16(ioaddr + MLSR); err = ioread16(ioaddr + MLSR);
if (err & 0x0200) priv->stats.rx_fifo_errors++; if (err & 0x0200)
if (err & (0x2000 | 0x4000)) priv->stats.tx_carrier_errors++; dev->stats.rx_fifo_errors++;
if (err & (0x2000 | 0x4000))
dev->stats.tx_carrier_errors++;
if (descptr->status & 0x8000) if (descptr->status & 0x8000)
break; /* Not complte */ break; /* Not complte */