aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@vyatta.com>2008-10-31 19:52:03 -0400
committerJeff Garzik <jgarzik@redhat.com>2008-11-02 07:59:55 -0500
commit02e7173149c3ffcf963075ec2bdc5f7be8335a78 (patch)
treed4206ce6e7f222891f7ccb547eadd01515217950
parentae27e98a51526595837ab7498b23d6478a198960 (diff)
atlx: use embedded net_device_stats
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>
-rw-r--r--drivers/net/atlx/atl1.c43
-rw-r--r--drivers/net/atlx/atl1.h2
-rw-r--r--drivers/net/atlx/atl2.c55
-rw-r--r--drivers/net/atlx/atl2.h1
-rw-r--r--drivers/net/atlx/atlx.c13
5 files changed, 44 insertions, 70 deletions
diff --git a/drivers/net/atlx/atl1.c b/drivers/net/atlx/atl1.c
index 246d92b42636..6cc47616b6d4 100644
--- a/drivers/net/atlx/atl1.c
+++ b/drivers/net/atlx/atl1.c
@@ -1662,6 +1662,7 @@ static void atl1_via_workaround(struct atl1_adapter *adapter)
1662 1662
1663static void atl1_inc_smb(struct atl1_adapter *adapter) 1663static void atl1_inc_smb(struct atl1_adapter *adapter)
1664{ 1664{
1665 struct net_device *netdev = adapter->netdev;
1665 struct stats_msg_block *smb = adapter->smb.smb; 1666 struct stats_msg_block *smb = adapter->smb.smb;
1666 1667
1667 /* Fill out the OS statistics structure */ 1668 /* Fill out the OS statistics structure */
@@ -1704,30 +1705,30 @@ static void atl1_inc_smb(struct atl1_adapter *adapter)
1704 adapter->soft_stats.tx_trunc += smb->tx_trunc; 1705 adapter->soft_stats.tx_trunc += smb->tx_trunc;
1705 adapter->soft_stats.tx_pause += smb->tx_pause; 1706 adapter->soft_stats.tx_pause += smb->tx_pause;
1706 1707
1707 adapter->net_stats.rx_packets = adapter->soft_stats.rx_packets; 1708 netdev->stats.rx_packets = adapter->soft_stats.rx_packets;
1708 adapter->net_stats.tx_packets = adapter->soft_stats.tx_packets; 1709 netdev->stats.tx_packets = adapter->soft_stats.tx_packets;
1709 adapter->net_stats.rx_bytes = adapter->soft_stats.rx_bytes; 1710 netdev->stats.rx_bytes = adapter->soft_stats.rx_bytes;
1710 adapter->net_stats.tx_bytes = adapter->soft_stats.tx_bytes; 1711 netdev->stats.tx_bytes = adapter->soft_stats.tx_bytes;
1711 adapter->net_stats.multicast = adapter->soft_stats.multicast; 1712 netdev->stats.multicast = adapter->soft_stats.multicast;
1712 adapter->net_stats.collisions = adapter->soft_stats.collisions; 1713 netdev->stats.collisions = adapter->soft_stats.collisions;
1713 adapter->net_stats.rx_errors = adapter->soft_stats.rx_errors; 1714 netdev->stats.rx_errors = adapter->soft_stats.rx_errors;
1714 adapter->net_stats.rx_over_errors = 1715 netdev->stats.rx_over_errors =
1715 adapter->soft_stats.rx_missed_errors; 1716 adapter->soft_stats.rx_missed_errors;
1716 adapter->net_stats.rx_length_errors = 1717 netdev->stats.rx_length_errors =
1717 adapter->soft_stats.rx_length_errors; 1718 adapter->soft_stats.rx_length_errors;
1718 adapter->net_stats.rx_crc_errors = adapter->soft_stats.rx_crc_errors; 1719 netdev->stats.rx_crc_errors = adapter->soft_stats.rx_crc_errors;
1719 adapter->net_stats.rx_frame_errors = 1720 netdev->stats.rx_frame_errors =
1720 adapter->soft_stats.rx_frame_errors; 1721 adapter->soft_stats.rx_frame_errors;
1721 adapter->net_stats.rx_fifo_errors = adapter->soft_stats.rx_fifo_errors; 1722 netdev->stats.rx_fifo_errors = adapter->soft_stats.rx_fifo_errors;
1722 adapter->net_stats.rx_missed_errors = 1723 netdev->stats.rx_missed_errors =
1723 adapter->soft_stats.rx_missed_errors; 1724 adapter->soft_stats.rx_missed_errors;
1724 adapter->net_stats.tx_errors = adapter->soft_stats.tx_errors; 1725 netdev->stats.tx_errors = adapter->soft_stats.tx_errors;
1725 adapter->net_stats.tx_fifo_errors = adapter->soft_stats.tx_fifo_errors; 1726 netdev->stats.tx_fifo_errors = adapter->soft_stats.tx_fifo_errors;
1726 adapter->net_stats.tx_aborted_errors = 1727 netdev->stats.tx_aborted_errors =
1727 adapter->soft_stats.tx_aborted_errors; 1728 adapter->soft_stats.tx_aborted_errors;
1728 adapter->net_stats.tx_window_errors = 1729 netdev->stats.tx_window_errors =
1729 adapter->soft_stats.tx_window_errors; 1730 adapter->soft_stats.tx_window_errors;
1730 adapter->net_stats.tx_carrier_errors = 1731 netdev->stats.tx_carrier_errors =
1731 adapter->soft_stats.tx_carrier_errors; 1732 adapter->soft_stats.tx_carrier_errors;
1732} 1733}
1733 1734
@@ -1860,7 +1861,7 @@ static u16 atl1_alloc_rx_buffers(struct atl1_adapter *adapter)
1860 adapter->rx_buffer_len + NET_IP_ALIGN); 1861 adapter->rx_buffer_len + NET_IP_ALIGN);
1861 if (unlikely(!skb)) { 1862 if (unlikely(!skb)) {
1862 /* Better luck next round */ 1863 /* Better luck next round */
1863 adapter->net_stats.rx_dropped++; 1864 adapter->netdev->stats.rx_dropped++;
1864 break; 1865 break;
1865 } 1866 }
1866 1867
@@ -2983,7 +2984,7 @@ static int __devinit atl1_probe(struct pci_dev *pdev,
2983 netdev->open = &atl1_open; 2984 netdev->open = &atl1_open;
2984 netdev->stop = &atl1_close; 2985 netdev->stop = &atl1_close;
2985 netdev->hard_start_xmit = &atl1_xmit_frame; 2986 netdev->hard_start_xmit = &atl1_xmit_frame;
2986 netdev->get_stats = &atlx_get_stats; 2987
2987 netdev->set_multicast_list = &atlx_set_multi; 2988 netdev->set_multicast_list = &atlx_set_multi;
2988 netdev->set_mac_address = &atl1_set_mac; 2989 netdev->set_mac_address = &atl1_set_mac;
2989 netdev->change_mtu = &atl1_change_mtu; 2990 netdev->change_mtu = &atl1_change_mtu;
@@ -3173,8 +3174,6 @@ static struct atl1_stats atl1_gstrings_stats[] = {
3173 {"tx_bytes", ATL1_STAT(soft_stats.tx_bytes)}, 3174 {"tx_bytes", ATL1_STAT(soft_stats.tx_bytes)},
3174 {"rx_errors", ATL1_STAT(soft_stats.rx_errors)}, 3175 {"rx_errors", ATL1_STAT(soft_stats.rx_errors)},
3175 {"tx_errors", ATL1_STAT(soft_stats.tx_errors)}, 3176 {"tx_errors", ATL1_STAT(soft_stats.tx_errors)},
3176 {"rx_dropped", ATL1_STAT(net_stats.rx_dropped)},
3177 {"tx_dropped", ATL1_STAT(net_stats.tx_dropped)},
3178 {"multicast", ATL1_STAT(soft_stats.multicast)}, 3177 {"multicast", ATL1_STAT(soft_stats.multicast)},
3179 {"collisions", ATL1_STAT(soft_stats.collisions)}, 3178 {"collisions", ATL1_STAT(soft_stats.collisions)},
3180 {"rx_length_errors", ATL1_STAT(soft_stats.rx_length_errors)}, 3179 {"rx_length_errors", ATL1_STAT(soft_stats.rx_length_errors)},
diff --git a/drivers/net/atlx/atl1.h b/drivers/net/atlx/atl1.h
index ffa73fc8d95e..324ef5e93412 100644
--- a/drivers/net/atlx/atl1.h
+++ b/drivers/net/atlx/atl1.h
@@ -754,7 +754,7 @@ struct atl1_hw {
754struct atl1_adapter { 754struct atl1_adapter {
755 struct net_device *netdev; 755 struct net_device *netdev;
756 struct pci_dev *pdev; 756 struct pci_dev *pdev;
757 struct net_device_stats net_stats; 757
758 struct atl1_sft_stats soft_stats; 758 struct atl1_sft_stats soft_stats;
759 struct vlan_group *vlgrp; 759 struct vlan_group *vlgrp;
760 u32 rx_buffer_len; 760 u32 rx_buffer_len;
diff --git a/drivers/net/atlx/atl2.c b/drivers/net/atlx/atl2.c
index f5bdc92c1a65..8c5d009ca821 100644
--- a/drivers/net/atlx/atl2.c
+++ b/drivers/net/atlx/atl2.c
@@ -418,7 +418,7 @@ static void atl2_intr_rx(struct atl2_adapter *adapter)
418 * Check that some rx space is free. If not, 418 * Check that some rx space is free. If not,
419 * free one and mark stats->rx_dropped++. 419 * free one and mark stats->rx_dropped++.
420 */ 420 */
421 adapter->net_stats.rx_dropped++; 421 netdev->stats.rx_dropped++;
422 break; 422 break;
423 } 423 }
424 skb_reserve(skb, NET_IP_ALIGN); 424 skb_reserve(skb, NET_IP_ALIGN);
@@ -435,20 +435,20 @@ static void atl2_intr_rx(struct atl2_adapter *adapter)
435 } else 435 } else
436#endif 436#endif
437 netif_rx(skb); 437 netif_rx(skb);
438 adapter->net_stats.rx_bytes += rx_size; 438 netdev->stats.rx_bytes += rx_size;
439 adapter->net_stats.rx_packets++; 439 netdev->stats.rx_packets++;
440 netdev->last_rx = jiffies; 440 netdev->last_rx = jiffies;
441 } else { 441 } else {
442 adapter->net_stats.rx_errors++; 442 netdev->stats.rx_errors++;
443 443
444 if (rxd->status.ok && rxd->status.pkt_size <= 60) 444 if (rxd->status.ok && rxd->status.pkt_size <= 60)
445 adapter->net_stats.rx_length_errors++; 445 netdev->stats.rx_length_errors++;
446 if (rxd->status.mcast) 446 if (rxd->status.mcast)
447 adapter->net_stats.multicast++; 447 netdev->stats.multicast++;
448 if (rxd->status.crc) 448 if (rxd->status.crc)
449 adapter->net_stats.rx_crc_errors++; 449 netdev->stats.rx_crc_errors++;
450 if (rxd->status.align) 450 if (rxd->status.align)
451 adapter->net_stats.rx_frame_errors++; 451 netdev->stats.rx_frame_errors++;
452 } 452 }
453 453
454 /* advance write ptr */ 454 /* advance write ptr */
@@ -463,6 +463,7 @@ static void atl2_intr_rx(struct atl2_adapter *adapter)
463 463
464static void atl2_intr_tx(struct atl2_adapter *adapter) 464static void atl2_intr_tx(struct atl2_adapter *adapter)
465{ 465{
466 struct net_device *netdev = adapter->netdev;
466 u32 txd_read_ptr; 467 u32 txd_read_ptr;
467 u32 txs_write_ptr; 468 u32 txs_write_ptr;
468 struct tx_pkt_status *txs; 469 struct tx_pkt_status *txs;
@@ -522,20 +523,20 @@ static void atl2_intr_tx(struct atl2_adapter *adapter)
522 523
523 /* tx statistics: */ 524 /* tx statistics: */
524 if (txs->ok) { 525 if (txs->ok) {
525 adapter->net_stats.tx_bytes += txs->pkt_size; 526 netdev->stats.tx_bytes += txs->pkt_size;
526 adapter->net_stats.tx_packets++; 527 netdev->stats.tx_packets++;
527 } 528 }
528 else 529 else
529 adapter->net_stats.tx_errors++; 530 netdev->stats.tx_errors++;
530 531
531 if (txs->defer) 532 if (txs->defer)
532 adapter->net_stats.collisions++; 533 netdev->stats.collisions++;
533 if (txs->abort_col) 534 if (txs->abort_col)
534 adapter->net_stats.tx_aborted_errors++; 535 netdev->stats.tx_aborted_errors++;
535 if (txs->late_col) 536 if (txs->late_col)
536 adapter->net_stats.tx_window_errors++; 537 netdev->stats.tx_window_errors++;
537 if (txs->underun) 538 if (txs->underun)
538 adapter->net_stats.tx_fifo_errors++; 539 netdev->stats.tx_fifo_errors++;
539 } while (1); 540 } while (1);
540 541
541 if (free_hole) { 542 if (free_hole) {
@@ -621,7 +622,7 @@ static irqreturn_t atl2_intr(int irq, void *data)
621 622
622 /* link event */ 623 /* link event */
623 if (status & (ISR_PHY | ISR_MANUAL)) { 624 if (status & (ISR_PHY | ISR_MANUAL)) {
624 adapter->net_stats.tx_carrier_errors++; 625 adapter->netdev->stats.tx_carrier_errors++;
625 atl2_check_for_link(adapter); 626 atl2_check_for_link(adapter);
626 } 627 }
627 628
@@ -900,19 +901,6 @@ static int atl2_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
900} 901}
901 902
902/* 903/*
903 * atl2_get_stats - Get System Network Statistics
904 * @netdev: network interface device structure
905 *
906 * Returns the address of the device statistics structure.
907 * The statistics are actually updated from the timer callback.
908 */
909static struct net_device_stats *atl2_get_stats(struct net_device *netdev)
910{
911 struct atl2_adapter *adapter = netdev_priv(netdev);
912 return &adapter->net_stats;
913}
914
915/*
916 * atl2_change_mtu - Change the Maximum Transfer Unit 904 * atl2_change_mtu - Change the Maximum Transfer Unit
917 * @netdev: network interface device structure 905 * @netdev: network interface device structure
918 * @new_mtu: new value for maximum frame size 906 * @new_mtu: new value for maximum frame size
@@ -1050,16 +1038,18 @@ static void atl2_tx_timeout(struct net_device *netdev)
1050static void atl2_watchdog(unsigned long data) 1038static void atl2_watchdog(unsigned long data)
1051{ 1039{
1052 struct atl2_adapter *adapter = (struct atl2_adapter *) data; 1040 struct atl2_adapter *adapter = (struct atl2_adapter *) data;
1053 u32 drop_rxd, drop_rxs;
1054 unsigned long flags;
1055 1041
1056 if (!test_bit(__ATL2_DOWN, &adapter->flags)) { 1042 if (!test_bit(__ATL2_DOWN, &adapter->flags)) {
1043 u32 drop_rxd, drop_rxs;
1044 unsigned long flags;
1045
1057 spin_lock_irqsave(&adapter->stats_lock, flags); 1046 spin_lock_irqsave(&adapter->stats_lock, flags);
1058 drop_rxd = ATL2_READ_REG(&adapter->hw, REG_STS_RXD_OV); 1047 drop_rxd = ATL2_READ_REG(&adapter->hw, REG_STS_RXD_OV);
1059 drop_rxs = ATL2_READ_REG(&adapter->hw, REG_STS_RXS_OV); 1048 drop_rxs = ATL2_READ_REG(&adapter->hw, REG_STS_RXS_OV);
1060 adapter->net_stats.rx_over_errors += (drop_rxd+drop_rxs);
1061 spin_unlock_irqrestore(&adapter->stats_lock, flags); 1049 spin_unlock_irqrestore(&adapter->stats_lock, flags);
1062 1050
1051 adapter->netdev->stats.rx_over_errors += drop_rxd + drop_rxs;
1052
1063 /* Reset the timer */ 1053 /* Reset the timer */
1064 mod_timer(&adapter->watchdog_timer, jiffies + 4 * HZ); 1054 mod_timer(&adapter->watchdog_timer, jiffies + 4 * HZ);
1065 } 1055 }
@@ -1396,7 +1386,6 @@ static int __devinit atl2_probe(struct pci_dev *pdev,
1396 netdev->open = &atl2_open; 1386 netdev->open = &atl2_open;
1397 netdev->stop = &atl2_close; 1387 netdev->stop = &atl2_close;
1398 netdev->hard_start_xmit = &atl2_xmit_frame; 1388 netdev->hard_start_xmit = &atl2_xmit_frame;
1399 netdev->get_stats = &atl2_get_stats;
1400 netdev->set_multicast_list = &atl2_set_multi; 1389 netdev->set_multicast_list = &atl2_set_multi;
1401 netdev->set_mac_address = &atl2_set_mac; 1390 netdev->set_mac_address = &atl2_set_mac;
1402 netdev->change_mtu = &atl2_change_mtu; 1391 netdev->change_mtu = &atl2_change_mtu;
diff --git a/drivers/net/atlx/atl2.h b/drivers/net/atlx/atl2.h
index 09974df76b18..d918bbe621ea 100644
--- a/drivers/net/atlx/atl2.h
+++ b/drivers/net/atlx/atl2.h
@@ -453,7 +453,6 @@ struct atl2_adapter {
453 /* OS defined structs */ 453 /* OS defined structs */
454 struct net_device *netdev; 454 struct net_device *netdev;
455 struct pci_dev *pdev; 455 struct pci_dev *pdev;
456 struct net_device_stats net_stats;
457#ifdef NETIF_F_HW_VLAN_TX 456#ifdef NETIF_F_HW_VLAN_TX
458 struct vlan_group *vlgrp; 457 struct vlan_group *vlgrp;
459#endif 458#endif
diff --git a/drivers/net/atlx/atlx.c b/drivers/net/atlx/atlx.c
index 3cc9d1089ca1..3dc014215679 100644
--- a/drivers/net/atlx/atlx.c
+++ b/drivers/net/atlx/atlx.c
@@ -182,19 +182,6 @@ static void atlx_clear_phy_int(struct atlx_adapter *adapter)
182} 182}
183 183
184/* 184/*
185 * atlx_get_stats - Get System Network Statistics
186 * @netdev: network interface device structure
187 *
188 * Returns the address of the device statistics structure.
189 * The statistics are actually updated from the timer callback.
190 */
191static struct net_device_stats *atlx_get_stats(struct net_device *netdev)
192{
193 struct atlx_adapter *adapter = netdev_priv(netdev);
194 return &adapter->net_stats;
195}
196
197/*
198 * atlx_tx_timeout - Respond to a Tx Hang 185 * atlx_tx_timeout - Respond to a Tx Hang
199 * @netdev: network interface device structure 186 * @netdev: network interface device structure
200 */ 187 */