atlx: use embedded net_device_stats
authorStephen Hemminger <shemminger@vyatta.com>
Fri, 31 Oct 2008 23:52:03 +0000 (16:52 -0700)
committerJeff Garzik <jgarzik@redhat.com>
Sun, 2 Nov 2008 12:59:55 +0000 (07:59 -0500)
There is now a net_device_stats structure inside net_device that should
be used if possible by devices. Compile tested only.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/net/atlx/atl1.c
drivers/net/atlx/atl1.h
drivers/net/atlx/atl2.c
drivers/net/atlx/atl2.h
drivers/net/atlx/atlx.c

index 246d92b426360b37865352d0d6133e71415770b4..6cc47616b6d4384c027ee3b65b6fff079e5ad5f2 100644 (file)
@@ -1662,6 +1662,7 @@ static void atl1_via_workaround(struct atl1_adapter *adapter)
 
 static void atl1_inc_smb(struct atl1_adapter *adapter)
 {
+       struct net_device *netdev = adapter->netdev;
        struct stats_msg_block *smb = adapter->smb.smb;
 
        /* Fill out the OS statistics structure */
@@ -1704,30 +1705,30 @@ static void atl1_inc_smb(struct atl1_adapter *adapter)
        adapter->soft_stats.tx_trunc += smb->tx_trunc;
        adapter->soft_stats.tx_pause += smb->tx_pause;
 
-       adapter->net_stats.rx_packets = adapter->soft_stats.rx_packets;
-       adapter->net_stats.tx_packets = adapter->soft_stats.tx_packets;
-       adapter->net_stats.rx_bytes = adapter->soft_stats.rx_bytes;
-       adapter->net_stats.tx_bytes = adapter->soft_stats.tx_bytes;
-       adapter->net_stats.multicast = adapter->soft_stats.multicast;
-       adapter->net_stats.collisions = adapter->soft_stats.collisions;
-       adapter->net_stats.rx_errors = adapter->soft_stats.rx_errors;
-       adapter->net_stats.rx_over_errors =
+       netdev->stats.rx_packets = adapter->soft_stats.rx_packets;
+       netdev->stats.tx_packets = adapter->soft_stats.tx_packets;
+       netdev->stats.rx_bytes = adapter->soft_stats.rx_bytes;
+       netdev->stats.tx_bytes = adapter->soft_stats.tx_bytes;
+       netdev->stats.multicast = adapter->soft_stats.multicast;
+       netdev->stats.collisions = adapter->soft_stats.collisions;
+       netdev->stats.rx_errors = adapter->soft_stats.rx_errors;
+       netdev->stats.rx_over_errors =
                adapter->soft_stats.rx_missed_errors;
-       adapter->net_stats.rx_length_errors =
+       netdev->stats.rx_length_errors =
                adapter->soft_stats.rx_length_errors;
-       adapter->net_stats.rx_crc_errors = adapter->soft_stats.rx_crc_errors;
-       adapter->net_stats.rx_frame_errors =
+       netdev->stats.rx_crc_errors = adapter->soft_stats.rx_crc_errors;
+       netdev->stats.rx_frame_errors =
                adapter->soft_stats.rx_frame_errors;
-       adapter->net_stats.rx_fifo_errors = adapter->soft_stats.rx_fifo_errors;
-       adapter->net_stats.rx_missed_errors =
+       netdev->stats.rx_fifo_errors = adapter->soft_stats.rx_fifo_errors;
+       netdev->stats.rx_missed_errors =
                adapter->soft_stats.rx_missed_errors;
-       adapter->net_stats.tx_errors = adapter->soft_stats.tx_errors;
-       adapter->net_stats.tx_fifo_errors = adapter->soft_stats.tx_fifo_errors;
-       adapter->net_stats.tx_aborted_errors =
+       netdev->stats.tx_errors = adapter->soft_stats.tx_errors;
+       netdev->stats.tx_fifo_errors = adapter->soft_stats.tx_fifo_errors;
+       netdev->stats.tx_aborted_errors =
                adapter->soft_stats.tx_aborted_errors;
-       adapter->net_stats.tx_window_errors =
+       netdev->stats.tx_window_errors =
                adapter->soft_stats.tx_window_errors;
-       adapter->net_stats.tx_carrier_errors =
+       netdev->stats.tx_carrier_errors =
                adapter->soft_stats.tx_carrier_errors;
 }
 
@@ -1860,7 +1861,7 @@ static u16 atl1_alloc_rx_buffers(struct atl1_adapter *adapter)
                                       adapter->rx_buffer_len + NET_IP_ALIGN);
                if (unlikely(!skb)) {
                        /* Better luck next round */
-                       adapter->net_stats.rx_dropped++;
+                       adapter->netdev->stats.rx_dropped++;
                        break;
                }
 
@@ -2983,7 +2984,7 @@ static int __devinit atl1_probe(struct pci_dev *pdev,
        netdev->open = &atl1_open;
        netdev->stop = &atl1_close;
        netdev->hard_start_xmit = &atl1_xmit_frame;
-       netdev->get_stats = &atlx_get_stats;
+
        netdev->set_multicast_list = &atlx_set_multi;
        netdev->set_mac_address = &atl1_set_mac;
        netdev->change_mtu = &atl1_change_mtu;
@@ -3173,8 +3174,6 @@ static struct atl1_stats atl1_gstrings_stats[] = {
        {"tx_bytes", ATL1_STAT(soft_stats.tx_bytes)},
        {"rx_errors", ATL1_STAT(soft_stats.rx_errors)},
        {"tx_errors", ATL1_STAT(soft_stats.tx_errors)},
-       {"rx_dropped", ATL1_STAT(net_stats.rx_dropped)},
-       {"tx_dropped", ATL1_STAT(net_stats.tx_dropped)},
        {"multicast", ATL1_STAT(soft_stats.multicast)},
        {"collisions", ATL1_STAT(soft_stats.collisions)},
        {"rx_length_errors", ATL1_STAT(soft_stats.rx_length_errors)},
index ffa73fc8d95e6eca471ee18ec73986653bb492b3..324ef5e9341299d42647c2a26791d6550f9e576b 100644 (file)
@@ -754,7 +754,7 @@ struct atl1_hw {
 struct atl1_adapter {
        struct net_device *netdev;
        struct pci_dev *pdev;
-       struct net_device_stats net_stats;
+
        struct atl1_sft_stats soft_stats;
        struct vlan_group *vlgrp;
        u32 rx_buffer_len;
index f5bdc92c1a658932cb2de2663e8aad88478c9da6..8c5d009ca8219cecf831bbc5be915f205e1042b2 100644 (file)
@@ -418,7 +418,7 @@ static void atl2_intr_rx(struct atl2_adapter *adapter)
                                 * Check that some rx space is free. If not,
                                 * free one and mark stats->rx_dropped++.
                                 */
-                               adapter->net_stats.rx_dropped++;
+                               netdev->stats.rx_dropped++;
                                break;
                        }
                        skb_reserve(skb, NET_IP_ALIGN);
@@ -435,20 +435,20 @@ static void atl2_intr_rx(struct atl2_adapter *adapter)
                        } else
 #endif
                        netif_rx(skb);
-                       adapter->net_stats.rx_bytes += rx_size;
-                       adapter->net_stats.rx_packets++;
+                       netdev->stats.rx_bytes += rx_size;
+                       netdev->stats.rx_packets++;
                        netdev->last_rx = jiffies;
                } else {
-                       adapter->net_stats.rx_errors++;
+                       netdev->stats.rx_errors++;
 
                        if (rxd->status.ok && rxd->status.pkt_size <= 60)
-                               adapter->net_stats.rx_length_errors++;
+                               netdev->stats.rx_length_errors++;
                        if (rxd->status.mcast)
-                               adapter->net_stats.multicast++;
+                               netdev->stats.multicast++;
                        if (rxd->status.crc)
-                               adapter->net_stats.rx_crc_errors++;
+                               netdev->stats.rx_crc_errors++;
                        if (rxd->status.align)
-                               adapter->net_stats.rx_frame_errors++;
+                               netdev->stats.rx_frame_errors++;
                }
 
                /* advance write ptr */
@@ -463,6 +463,7 @@ static void atl2_intr_rx(struct atl2_adapter *adapter)
 
 static void atl2_intr_tx(struct atl2_adapter *adapter)
 {
+       struct net_device *netdev = adapter->netdev;
        u32 txd_read_ptr;
        u32 txs_write_ptr;
        struct tx_pkt_status *txs;
@@ -522,20 +523,20 @@ static void atl2_intr_tx(struct atl2_adapter *adapter)
 
                /* tx statistics: */
                if (txs->ok) {
-                       adapter->net_stats.tx_bytes += txs->pkt_size;
-                       adapter->net_stats.tx_packets++;
+                       netdev->stats.tx_bytes += txs->pkt_size;
+                       netdev->stats.tx_packets++;
                }
                else
-                       adapter->net_stats.tx_errors++;
+                       netdev->stats.tx_errors++;
 
                if (txs->defer)
-                       adapter->net_stats.collisions++;
+                       netdev->stats.collisions++;
                if (txs->abort_col)
-                       adapter->net_stats.tx_aborted_errors++;
+                       netdev->stats.tx_aborted_errors++;
                if (txs->late_col)
-                       adapter->net_stats.tx_window_errors++;
+                       netdev->stats.tx_window_errors++;
                if (txs->underun)
-                       adapter->net_stats.tx_fifo_errors++;
+                       netdev->stats.tx_fifo_errors++;
        } while (1);
 
        if (free_hole) {
@@ -621,7 +622,7 @@ static irqreturn_t atl2_intr(int irq, void *data)
 
        /* link event */
        if (status & (ISR_PHY | ISR_MANUAL)) {
-               adapter->net_stats.tx_carrier_errors++;
+               adapter->netdev->stats.tx_carrier_errors++;
                atl2_check_for_link(adapter);
        }
 
@@ -899,19 +900,6 @@ static int atl2_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
        return NETDEV_TX_OK;
 }
 
-/*
- * atl2_get_stats - Get System Network Statistics
- * @netdev: network interface device structure
- *
- * Returns the address of the device statistics structure.
- * The statistics are actually updated from the timer callback.
- */
-static struct net_device_stats *atl2_get_stats(struct net_device *netdev)
-{
-       struct atl2_adapter *adapter = netdev_priv(netdev);
-       return &adapter->net_stats;
-}
-
 /*
  * atl2_change_mtu - Change the Maximum Transfer Unit
  * @netdev: network interface device structure
@@ -1050,16 +1038,18 @@ static void atl2_tx_timeout(struct net_device *netdev)
 static void atl2_watchdog(unsigned long data)
 {
        struct atl2_adapter *adapter = (struct atl2_adapter *) data;
-       u32 drop_rxd, drop_rxs;
-       unsigned long flags;
 
        if (!test_bit(__ATL2_DOWN, &adapter->flags)) {
+               u32 drop_rxd, drop_rxs;
+               unsigned long flags;
+
                spin_lock_irqsave(&adapter->stats_lock, flags);
                drop_rxd = ATL2_READ_REG(&adapter->hw, REG_STS_RXD_OV);
                drop_rxs = ATL2_READ_REG(&adapter->hw, REG_STS_RXS_OV);
-               adapter->net_stats.rx_over_errors += (drop_rxd+drop_rxs);
                spin_unlock_irqrestore(&adapter->stats_lock, flags);
 
+               adapter->netdev->stats.rx_over_errors += drop_rxd + drop_rxs;
+
                /* Reset the timer */
                mod_timer(&adapter->watchdog_timer, jiffies + 4 * HZ);
        }
@@ -1396,7 +1386,6 @@ static int __devinit atl2_probe(struct pci_dev *pdev,
        netdev->open = &atl2_open;
        netdev->stop = &atl2_close;
        netdev->hard_start_xmit = &atl2_xmit_frame;
-       netdev->get_stats = &atl2_get_stats;
        netdev->set_multicast_list = &atl2_set_multi;
        netdev->set_mac_address = &atl2_set_mac;
        netdev->change_mtu = &atl2_change_mtu;
index 09974df76b1865d138d0ebac05319e3e8d7692cd..d918bbe621eae3d9e44dc1ad141fad8019a6f7fe 100644 (file)
@@ -453,7 +453,6 @@ struct atl2_adapter {
        /* OS defined structs */
        struct net_device *netdev;
        struct pci_dev *pdev;
-       struct net_device_stats net_stats;
 #ifdef NETIF_F_HW_VLAN_TX
        struct vlan_group *vlgrp;
 #endif
index 3cc9d1089ca15b2c40ec80a88c124fe391116451..3dc01421567961450b6503f3bb2a98662bea2f07 100644 (file)
@@ -181,19 +181,6 @@ static void atlx_clear_phy_int(struct atlx_adapter *adapter)
        spin_unlock_irqrestore(&adapter->lock, flags);
 }
 
-/*
- * atlx_get_stats - Get System Network Statistics
- * @netdev: network interface device structure
- *
- * Returns the address of the device statistics structure.
- * The statistics are actually updated from the timer callback.
- */
-static struct net_device_stats *atlx_get_stats(struct net_device *netdev)
-{
-       struct atlx_adapter *adapter = netdev_priv(netdev);
-       return &adapter->net_stats;
-}
-
 /*
  * atlx_tx_timeout - Respond to a Tx Hang
  * @netdev: network interface device structure