diff options
author | John W. Linville <linville@tuxdriver.com> | 2005-09-12 10:48:59 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-09-14 08:26:16 -0400 |
commit | ecf7130b087a9bd1b9d03dbf452630243210d22e (patch) | |
tree | d33278cc14351958dddb8f907f28a530f16e98be /drivers/net/e100.c | |
parent | bd061bf1ff37e186012c6e2522328b58e5d35ed8 (diff) |
[PATCH] e100: correct rx_dropped and add rx_missed_errors
Do not count non-error frames dropped by the hardware as
part of rx_dropped. Instead, count those frames dropped as
rx_missed_errors. Also, do not count other error frames as part of
rx_dropped. Finally, do not count oversized frames in rx_dropped
(since they are counted as part of rx_length_errors).
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/e100.c')
-rw-r--r-- | drivers/net/e100.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/net/e100.c b/drivers/net/e100.c index 25cc20e415da..fbf1c06ec5c1 100644 --- a/drivers/net/e100.c +++ b/drivers/net/e100.c | |||
@@ -1387,13 +1387,13 @@ static void e100_update_stats(struct nic *nic) | |||
1387 | ns->collisions += nic->tx_collisions; | 1387 | ns->collisions += nic->tx_collisions; |
1388 | ns->tx_errors += le32_to_cpu(s->tx_max_collisions) + | 1388 | ns->tx_errors += le32_to_cpu(s->tx_max_collisions) + |
1389 | le32_to_cpu(s->tx_lost_crs); | 1389 | le32_to_cpu(s->tx_lost_crs); |
1390 | ns->rx_dropped += le32_to_cpu(s->rx_resource_errors); | ||
1391 | ns->rx_length_errors += le32_to_cpu(s->rx_short_frame_errors) + | 1390 | ns->rx_length_errors += le32_to_cpu(s->rx_short_frame_errors) + |
1392 | nic->rx_over_length_errors; | 1391 | nic->rx_over_length_errors; |
1393 | ns->rx_crc_errors += le32_to_cpu(s->rx_crc_errors); | 1392 | ns->rx_crc_errors += le32_to_cpu(s->rx_crc_errors); |
1394 | ns->rx_frame_errors += le32_to_cpu(s->rx_alignment_errors); | 1393 | ns->rx_frame_errors += le32_to_cpu(s->rx_alignment_errors); |
1395 | ns->rx_over_errors += le32_to_cpu(s->rx_overrun_errors); | 1394 | ns->rx_over_errors += le32_to_cpu(s->rx_overrun_errors); |
1396 | ns->rx_fifo_errors += le32_to_cpu(s->rx_overrun_errors); | 1395 | ns->rx_fifo_errors += le32_to_cpu(s->rx_overrun_errors); |
1396 | ns->rx_missed_errors += le32_to_cpu(s->rx_resource_errors); | ||
1397 | ns->rx_errors += le32_to_cpu(s->rx_crc_errors) + | 1397 | ns->rx_errors += le32_to_cpu(s->rx_crc_errors) + |
1398 | le32_to_cpu(s->rx_alignment_errors) + | 1398 | le32_to_cpu(s->rx_alignment_errors) + |
1399 | le32_to_cpu(s->rx_short_frame_errors) + | 1399 | le32_to_cpu(s->rx_short_frame_errors) + |
@@ -1727,12 +1727,10 @@ static inline int e100_rx_indicate(struct nic *nic, struct rx *rx, | |||
1727 | 1727 | ||
1728 | if(unlikely(!(rfd_status & cb_ok))) { | 1728 | if(unlikely(!(rfd_status & cb_ok))) { |
1729 | /* Don't indicate if hardware indicates errors */ | 1729 | /* Don't indicate if hardware indicates errors */ |
1730 | nic->net_stats.rx_dropped++; | ||
1731 | dev_kfree_skb_any(skb); | 1730 | dev_kfree_skb_any(skb); |
1732 | } else if(actual_size > ETH_DATA_LEN + VLAN_ETH_HLEN) { | 1731 | } else if(actual_size > ETH_DATA_LEN + VLAN_ETH_HLEN) { |
1733 | /* Don't indicate oversized frames */ | 1732 | /* Don't indicate oversized frames */ |
1734 | nic->rx_over_length_errors++; | 1733 | nic->rx_over_length_errors++; |
1735 | nic->net_stats.rx_dropped++; | ||
1736 | dev_kfree_skb_any(skb); | 1734 | dev_kfree_skb_any(skb); |
1737 | } else { | 1735 | } else { |
1738 | nic->net_stats.rx_packets++; | 1736 | nic->net_stats.rx_packets++; |