Date: Tue, 06 Jul 1999 20:39:47 PDT From: Craig Leres <leres@ee.lbl.gov> To: FreeBSD-gnats-submit@freebsd.org Subject: kern/12543: [PATCH] cumulative error stats for fxp(4) Message-ID: <199907070339.UAA53077@fun.ee.lbl.gov>
next in thread | raw e-mail | index | archive | help
>Number: 12543 >Category: kern >Synopsis: [PATCH] cumulative error counters for fxp(4) >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Tue Jul 6 20:40:02 PDT 1999 >Closed-Date: >Last-Modified: >Originator: Craig Leres >Release: FreeBSD 3.2-RELEASE i386 >Organization: Lawrence Berkeley National Laboratory >Environment: >Description: It would be really sweet if one could look at the long term error counters for the intel 10/100 card. This information can be invaluable in debugging network problems. >How-To-Repeat: The fxp driver only keeps around the last set of incremental changes to the error counters. >Fix: Add a new fxp_stats struct and add in new amounts fxp_stats_update(). RCS file: RCS/if_fxpvar.h,v retrieving revision 1.1 diff -c -r1.1 if_fxpvar.h *** /tmp/,RCSt1X53005 Tue Jul 6 20:33:45 1999 - --- if_fxpvar.h Tue Jul 6 20:33:36 1999 *************** *** 56,61 **** - --- 56,62 ---- int need_mcsetup; /* multicast filter needs programming */ struct fxp_cb_tx *cbl_last; /* last active TxCB in list */ struct fxp_stats *fxp_stats; /* Pointer to interface stats */ + struct fxp_stats fxp_tstats; /* interface stats totals */ int rx_idle_secs; /* # of seconds RX has been idle */ struct callout_handle stat_ch; /* Handle for canceling our stat timeout */ struct fxp_cb_tx *cbl_base; /* base of TxCB list */ *** if_fxp.c.virgin Tue Jul 6 20:34:12 1999 - --- if_fxp.c.new Tue Jul 6 20:36:00 1999 *************** *** 1058,1069 **** - --- 1058,1073 ---- FXP_RFA_STATUS_IAMATCH) && (eh->ether_dhost[0] & 1) == 0) { + #ifdef BRIDGE dropit: + #endif if (m) m_freem(m); goto rcvloop; } + #ifdef BRIDGE getit: + #endif m->m_data += sizeof(struct ether_header); m->m_len -= *************** *** 1105,1111 **** { struct fxp_softc *sc = arg; struct ifnet *ifp = &sc->sc_if; ! struct fxp_stats *sp = sc->fxp_stats; struct fxp_cb_tx *txp; int s; - --- 1109,1115 ---- { struct fxp_softc *sc = arg; struct ifnet *ifp = &sc->sc_if; ! struct fxp_stats *sp = sc->fxp_stats, *sp2 = &sc->fxp_tstats; struct fxp_cb_tx *txp; int s; *************** *** 1134,1139 **** - --- 1138,1162 ---- if (tx_threshold < 192) tx_threshold += 64; } + + /* Update totals */ + sp2->tx_good += sp->tx_good; + sp2->tx_maxcols += sp->tx_maxcols; + sp2->tx_latecols += sp->tx_latecols; + sp2->tx_underruns += sp->tx_underruns; + sp2->tx_lostcrs += sp->tx_lostcrs; + sp2->tx_deffered += sp->tx_deffered; + sp2->tx_single_collisions += sp->tx_single_collisions; + sp2->tx_multiple_collisions += sp->tx_multiple_collisions; + sp2->tx_total_collisions += sp->tx_total_collisions; + sp2->rx_good += sp->rx_good; + sp2->rx_crc_errors += sp->rx_crc_errors; + sp2->rx_alignment_errors += sp->rx_alignment_errors; + sp2->rx_rnr_errors += sp->rx_rnr_errors; + sp2->rx_overrun_errors += sp->rx_overrun_errors; + sp2->rx_cdt_errors += sp->rx_cdt_errors; + sp2->rx_shortframes += sp->rx_shortframes; + s = splimp(); /* * Release any xmit buffers that have completed DMA. This isn't -----BEGIN PGP SIGNATURE----- Version: 2.6.2 iQCVAwUBN4LL2L2JLbUEFcrxAQHcwQQAtENXZEtPG9GCEiCrkbOh6f0455BV4ujJ Jh7G4iPN66uqhOs3NemfPSvbLm5gLrnAM5Rhto/TDfi2LTdDZcH7B9dYZEMvPm59 bgRY1AvMKdwvtpjcg6ucuA6vN9gq6lSy3kArx9q3oYSVvETCdWdw2KMlVjk2jBfE f7cc5n2FjlA= =RtNR -----END PGP SIGNATURE----- >Release-Note: >Audit-Trail: >Unformatted: -----BEGIN PGP SIGNED MESSAGE----- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199907070339.UAA53077>