am79c961a: use netstats in net_device structure
Subsystems (2)
PATCH 1/1 am79c961a: use netstats in net_device structure
Use net_device_stats from net_device structure instead of local. Kill am79c961_getstats function, because by default it is used identical internal_stats function from net/core/dev.c Don't clear statistics when opening device.
Haven't tried to compile it. Need ack from ARM people!
Signed-off-by Paulius Zaleckas <[email protected]>
drivers/net/arm/am79c961a.c +15 -27
@@ -300,8 +300,6 @@ am79c961_open(struct net_device *dev)struct dev_priv *priv =netdev_priv (dev);int ret; -memset (&priv->stats,0 ,sizeof (priv->stats)); - ret =request_irq (dev->irq, am79c961_interrupt,0 , dev->name, dev);if (ret)return ret;
@@ -342,15 +340,6 @@ am79c961_close(struct net_device *dev)return 0 ; } -/* -* Get the current statistics. -*/ -static struct net_device_stats *am79c961_getstats (struct net_device *dev) -{ -struct dev_priv *priv =netdev_priv (dev); -return &priv->stats; -} -static void am79c961_mc_hash (struct dev_mc_list *dmi,unsigned short *hash) {if (dmi->dmi_addrlen ==ETH_ALEN && dmi->dmi_addr[0 ] &0x01 ) {
@@ -511,14 +500,14 @@ am79c961_rx(struct net_device *dev, struct dev_priv *priv)if ((status & (RMD_ERR |RMD_STP |RMD_ENP )) != (RMD_STP |RMD_ENP )) {am_writeword (dev, hdraddr +2 ,RMD_OWN ); - priv->stats.rx_errors ++; + dev->stats.rx_errors ++;if (status &RMD_ERR ) {if (status &RMD_FRAM ) - priv->stats.rx_frame_errors ++; + dev->stats.rx_frame_errors ++;if (status &RMD_CRC ) - priv->stats.rx_crc_errors ++; + dev->stats.rx_crc_errors ++; }else if (status &RMD_STP ) - priv->stats.rx_length_errors ++; + dev->stats.rx_length_errors ++;continue ; }
@@ -533,12 +522,12 @@ am79c961_rx(struct net_device *dev, struct dev_priv *priv) skb->protocol =eth_type_trans (skb, dev);netif_rx (skb); dev->last_rx = jiffies; - priv->stats.rx_bytes += len; - priv->stats.rx_packets ++; + dev->stats.rx_bytes += len; + dev->stats.rx_packets ++; }else {am_writeword (dev, hdraddr +2 ,RMD_OWN );printk (KERN_WARNING "%s: memory squeeze, dropping packet.\n" , dev->name); - priv->stats.rx_dropped ++; + dev->stats.rx_dropped ++;break ; } }while (1 );
@@ -567,7 +556,7 @@ am79c961_tx(struct net_device *dev, struct dev_priv *priv)if (status &TMD_ERR ) {u_int status2; - priv->stats.tx_errors ++; + dev->stats.tx_errors ++; status2 =am_readword (dev, hdraddr +6 );
@@ -577,18 +566,18 @@ am79c961_tx(struct net_device *dev, struct dev_priv *priv)am_writeword (dev, hdraddr +6 ,0 );if (status2 &TST_RTRY ) - priv->stats.collisions +=16 ; + dev->stats.collisions +=16 ;if (status2 &TST_LCOL ) - priv->stats.tx_window_errors ++; + dev->stats.tx_window_errors ++;if (status2 &TST_LCAR ) - priv->stats.tx_carrier_errors ++; + dev->stats.tx_carrier_errors ++;if (status2 &TST_UFLO ) - priv->stats.tx_fifo_errors ++; + dev->stats.tx_fifo_errors ++;continue ; } - priv->stats.tx_packets ++; + dev->stats.tx_packets ++; len =am_readword (dev, hdraddr +4 ); - priv->stats.tx_bytes += -len; + dev->stats.tx_bytes += -len; }while (priv->txtail != priv->txhead);netif_wake_queue (dev);
@@ -618,7 +607,7 @@ am79c961_interrupt(int irq, void *dev_id) }if (status &CSR0_MISS ) { handled =1 ; - priv->stats.rx_dropped ++; + dev->stats.rx_dropped ++; }if (status &CSR0_CERR ) { handled =1 ;
@@ -736,7 +725,6 @@ static int __init am79c961_probe(struct platform_device *pdev) dev->open = am79c961_open; dev->stop = am79c961_close; dev->hard_start_xmit = am79c961_sendpacket; - dev->get_stats = am79c961_getstats; dev->set_multicast_list = am79c961_setmulticastlist; dev->tx_timeout = am79c961_timeout;#ifdef CONFIG_NET_POLL_CONTROLLER
drivers/net/arm/am79c961a.h +0 -1
@@ -130,7 +130,6 @@#define ISALED0_LNKST 0x8000struct dev_priv { -struct net_device_stats stats;unsigned long rxbuffer[RX_BUFFERS ];unsigned long txbuffer[TX_BUFFERS ];unsigned char txhead;
Quoted 8 lines · Paulius Zaleckas
Use
net_device_statsfromnet_devicestructure instead of local. Killam79c961_getstatsfunction, because by default it is used identicalinternal_statsfunction fromnet/core/dev.cDon't clear statistics when opening device.Haven't tried to compile it. Need ack from ARM people!
Signed-off-by Paulius Zaleckas <[email protected]>
Acked-by Russell King <[email protected]>