summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2014-10-08 01:03:32 +0000
committeryongari <yongari@FreeBSD.org>2014-10-08 01:03:32 +0000
commitb83ad553045314fa36efb86e6e2f592f2b5ed360 (patch)
tree1a1fe024b4a92725ee64e12d982556902a664164
parent79bb3d345523aa96619c217b41149aa584565082 (diff)
downloadFreeBSD-src-b83ad553045314fa36efb86e6e2f592f2b5ed360.zip
FreeBSD-src-b83ad553045314fa36efb86e6e2f592f2b5ed360.tar.gz
Fix a long standing bug in MAC statistics register access. One
additional register was erroneously added in the MAC register set such that 7 TX statistics counters were wrong.
-rw-r--r--sys/dev/alc/if_alc.c16
-rw-r--r--sys/dev/alc/if_alcreg.h1
-rw-r--r--sys/dev/ale/if_ale.c16
-rw-r--r--sys/dev/ale/if_alereg.h1
4 files changed, 6 insertions, 28 deletions
diff --git a/sys/dev/alc/if_alc.c b/sys/dev/alc/if_alc.c
index ecb3b47..f048456 100644
--- a/sys/dev/alc/if_alc.c
+++ b/sys/dev/alc/if_alc.c
@@ -1287,8 +1287,6 @@ alc_sysctl_node(struct alc_softc *sc)
&stats->tx_late_colls, "Late collisions");
ALC_SYSCTL_STAT_ADD32(ctx, child, "excess_colls",
&stats->tx_excess_colls, "Excessive collisions");
- ALC_SYSCTL_STAT_ADD32(ctx, child, "abort",
- &stats->tx_abort, "Aborted frames due to Excessive collisions");
ALC_SYSCTL_STAT_ADD32(ctx, child, "underruns",
&stats->tx_underrun, "FIFO underruns");
ALC_SYSCTL_STAT_ADD32(ctx, child, "desc_underruns",
@@ -2599,7 +2597,6 @@ alc_stats_update(struct alc_softc *sc)
stat->tx_multi_colls += smb->tx_multi_colls;
stat->tx_late_colls += smb->tx_late_colls;
stat->tx_excess_colls += smb->tx_excess_colls;
- stat->tx_abort += smb->tx_abort;
stat->tx_underrun += smb->tx_underrun;
stat->tx_desc_underrun += smb->tx_desc_underrun;
stat->tx_lenerrs += smb->tx_lenerrs;
@@ -2612,17 +2609,10 @@ alc_stats_update(struct alc_softc *sc)
if_inc_counter(ifp, IFCOUNTER_COLLISIONS, smb->tx_single_colls +
smb->tx_multi_colls * 2 + smb->tx_late_colls +
- smb->tx_abort * HDPX_CFG_RETRY_DEFAULT);
+ smb->tx_excess_colls * HDPX_CFG_RETRY_DEFAULT);
- /*
- * XXX
- * tx_pkts_truncated counter looks suspicious. It constantly
- * increments with no sign of Tx errors. This may indicate
- * the counter name is not correct one so I've removed the
- * counter in output errors.
- */
- if_inc_counter(ifp, IFCOUNTER_OERRORS,
- smb->tx_abort + smb->tx_late_colls + smb->tx_underrun);
+ if_inc_counter(ifp, IFCOUNTER_OERRORS, smb->tx_late_colls +
+ smb->tx_excess_colls + smb->tx_underrun + smb->tx_pkts_truncated);
if_inc_counter(ifp, IFCOUNTER_IPACKETS, smb->rx_frames);
diff --git a/sys/dev/alc/if_alcreg.h b/sys/dev/alc/if_alcreg.h
index 3011abf..c4b9122 100644
--- a/sys/dev/alc/if_alcreg.h
+++ b/sys/dev/alc/if_alcreg.h
@@ -860,7 +860,6 @@ struct smb {
uint32_t tx_multi_colls;
uint32_t tx_late_colls;
uint32_t tx_excess_colls;
- uint32_t tx_abort;
uint32_t tx_underrun;
uint32_t tx_desc_underrun;
uint32_t tx_lenerrs;
diff --git a/sys/dev/ale/if_ale.c b/sys/dev/ale/if_ale.c
index 78dfa0e..3a728f4 100644
--- a/sys/dev/ale/if_ale.c
+++ b/sys/dev/ale/if_ale.c
@@ -946,8 +946,6 @@ ale_sysctl_node(struct ale_softc *sc)
&stats->tx_late_colls, "Late collisions");
ALE_SYSCTL_STAT_ADD32(ctx, child, "excess_colls",
&stats->tx_excess_colls, "Excessive collisions");
- ALE_SYSCTL_STAT_ADD32(ctx, child, "abort",
- &stats->tx_abort, "Aborted frames due to Excessive collisions");
ALE_SYSCTL_STAT_ADD32(ctx, child, "underruns",
&stats->tx_underrun, "FIFO underruns");
ALE_SYSCTL_STAT_ADD32(ctx, child, "desc_underruns",
@@ -2197,7 +2195,6 @@ ale_stats_update(struct ale_softc *sc)
stat->tx_multi_colls += smb->tx_multi_colls;
stat->tx_late_colls += smb->tx_late_colls;
stat->tx_excess_colls += smb->tx_excess_colls;
- stat->tx_abort += smb->tx_abort;
stat->tx_underrun += smb->tx_underrun;
stat->tx_desc_underrun += smb->tx_desc_underrun;
stat->tx_lenerrs += smb->tx_lenerrs;
@@ -2210,17 +2207,10 @@ ale_stats_update(struct ale_softc *sc)
if_inc_counter(ifp, IFCOUNTER_COLLISIONS, smb->tx_single_colls +
smb->tx_multi_colls * 2 + smb->tx_late_colls +
- smb->tx_abort * HDPX_CFG_RETRY_DEFAULT);
+ smb->tx_excess_colls * HDPX_CFG_RETRY_DEFAULT);
- /*
- * XXX
- * tx_pkts_truncated counter looks suspicious. It constantly
- * increments with no sign of Tx errors. This may indicate
- * the counter name is not correct one so I've removed the
- * counter in output errors.
- */
- if_inc_counter(ifp, IFCOUNTER_OERRORS,
- smb->tx_abort + smb->tx_late_colls + smb->tx_underrun);
+ if_inc_counter(ifp, IFCOUNTER_OERRORS, smb->tx_late_colls +
+ smb->tx_excess_colls + smb->tx_underrun + smb->tx_pkts_truncated);
if_inc_counter(ifp, IFCOUNTER_IPACKETS, smb->rx_frames);
diff --git a/sys/dev/ale/if_alereg.h b/sys/dev/ale/if_alereg.h
index 445af99..5804c53 100644
--- a/sys/dev/ale/if_alereg.h
+++ b/sys/dev/ale/if_alereg.h
@@ -605,7 +605,6 @@ struct smb {
uint32_t tx_multi_colls;
uint32_t tx_late_colls;
uint32_t tx_excess_colls;
- uint32_t tx_abort;
uint32_t tx_underrun;
uint32_t tx_desc_underrun;
uint32_t tx_lenerrs;
OpenPOWER on IntegriCloud