aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/sky2.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 2a288070d566..947439167493 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -1443,6 +1443,9 @@ static void sky2_tx_complete(struct sky2_port *sky2, u16 done)
1443 if (unlikely(netif_msg_tx_done(sky2))) 1443 if (unlikely(netif_msg_tx_done(sky2)))
1444 printk(KERN_DEBUG "%s: tx done %u\n", 1444 printk(KERN_DEBUG "%s: tx done %u\n",
1445 dev->name, idx); 1445 dev->name, idx);
1446 sky2->net_stats.tx_packets++;
1447 sky2->net_stats.tx_bytes += re->skb->len;
1448
1446 dev_kfree_skb_any(re->skb); 1449 dev_kfree_skb_any(re->skb);
1447 } 1450 }
1448 1451
@@ -2065,6 +2068,8 @@ static int sky2_status_intr(struct sky2_hw *hw, int to_do)
2065 goto force_update; 2068 goto force_update;
2066 2069
2067 skb->protocol = eth_type_trans(skb, dev); 2070 skb->protocol = eth_type_trans(skb, dev);
2071 sky2->net_stats.rx_packets++;
2072 sky2->net_stats.rx_bytes += skb->len;
2068 dev->last_rx = jiffies; 2073 dev->last_rx = jiffies;
2069 2074
2070#ifdef SKY2_VLAN_TAG_USED 2075#ifdef SKY2_VLAN_TAG_USED
@@ -2790,25 +2795,9 @@ static void sky2_get_strings(struct net_device *dev, u32 stringset, u8 * data)
2790 } 2795 }
2791} 2796}
2792 2797
2793/* Use hardware MIB variables for critical path statistics and
2794 * transmit feedback not reported at interrupt.
2795 * Other errors are accounted for in interrupt handler.
2796 */
2797static struct net_device_stats *sky2_get_stats(struct net_device *dev) 2798static struct net_device_stats *sky2_get_stats(struct net_device *dev)
2798{ 2799{
2799 struct sky2_port *sky2 = netdev_priv(dev); 2800 struct sky2_port *sky2 = netdev_priv(dev);
2800 u64 data[13];
2801
2802 sky2_phy_stats(sky2, data, ARRAY_SIZE(data));
2803
2804 sky2->net_stats.tx_bytes = data[0];
2805 sky2->net_stats.rx_bytes = data[1];
2806 sky2->net_stats.tx_packets = data[2] + data[4] + data[6];
2807 sky2->net_stats.rx_packets = data[3] + data[5] + data[7];
2808 sky2->net_stats.multicast = data[3] + data[5];
2809 sky2->net_stats.collisions = data[10];
2810 sky2->net_stats.tx_aborted_errors = data[12];
2811
2812 return &sky2->net_stats; 2801 return &sky2->net_stats;
2813} 2802}
2814 2803