1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-11 09:50:12 +00:00

o adds sysctl variables to show device statistics.

o records RTS success/fail statistics.

Pointed by:	imp
This commit is contained in:
Weongyo Jeong 2010-02-23 19:55:54 +00:00
parent e355ad550c
commit d2ee7771f1
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=204257
2 changed files with 37 additions and 10 deletions

View File

@ -536,6 +536,7 @@ static void bwn_phy_lp_gaintbl_write_r2(struct bwn_mac *, int,
struct bwn_txgain_entry);
static void bwn_phy_lp_gaintbl_write_r01(struct bwn_mac *, int,
struct bwn_txgain_entry);
static void bwn_sysctl_node(struct bwn_softc *);
static struct resource_spec bwn_res_spec_legacy[] = {
{ SYS_RES_IRQ, 0, RF_ACTIVE | RF_SHAREABLE },
@ -1066,9 +1067,6 @@ bwn_attach_post(struct bwn_softc *sc)
struct ifnet *ifp = sc->sc_ifp;
struct siba_dev_softc *sd = sc->sc_sd;
struct siba_sprom *sprom = &sd->sd_bus->siba_sprom;
#ifdef BWN_DEBUG
device_t dev = sc->sc_dev;
#endif
ic = ifp->if_l2com;
ic->ic_ifp = ifp;
@ -1117,11 +1115,7 @@ bwn_attach_post(struct bwn_softc *sc)
&sc->sc_rx_th.wr_ihdr, sizeof(sc->sc_rx_th),
BWN_RX_RADIOTAP_PRESENT);
#ifdef BWN_DEBUG
SYSCTL_ADD_UINT(device_get_sysctl_ctx(dev),
SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO,
"debug", CTLFLAG_RW, &sc->sc_debug, 0, "Debug flags");
#endif
bwn_sysctl_node(sc);
if (bootverbose)
ieee80211_announce(ic);
@ -9077,6 +9071,7 @@ bwn_handle_txeof(struct bwn_mac *mac, const struct bwn_txstatus *status)
struct bwn_pio_txqueue *tq;
struct bwn_pio_txpkt *tp = NULL;
struct bwn_softc *sc = mac->mac_sc;
struct bwn_stats *stats = &mac->mac_stats;
struct ieee80211_node *ni;
int slot;
@ -9088,9 +9083,9 @@ bwn_handle_txeof(struct bwn_mac *mac, const struct bwn_txstatus *status)
device_printf(sc->sc_dev, "TODO: STATUS AMPDU\n");
if (status->rtscnt) {
if (status->rtscnt == 0xf)
device_printf(sc->sc_dev, "TODO: RTS fail\n");
stats->rtsfail++;
else
device_printf(sc->sc_dev, "TODO: RTS ok\n");
stats->rts++;
}
if (mac->mac_flags & BWN_MAC_FLAG_DMA) {
@ -14285,6 +14280,36 @@ bwn_phy_lp_gaintbl_write_r01(struct bwn_mac *mac, int offset,
bwn_tab_write(mac, BWN_TAB_4(10, 0x140 + offset), te.te_bbmult << 20);
}
static void
bwn_sysctl_node(struct bwn_softc *sc)
{
device_t dev = sc->sc_dev;
struct bwn_mac *mac;
struct bwn_stats *stats;
/* XXX assume that count of MAC is only 1. */
if ((mac = sc->sc_curmac) == NULL)
return;
stats = &mac->mac_stats;
SYSCTL_ADD_UINT(device_get_sysctl_ctx(dev),
SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO,
"linknoise", CTLFLAG_RW, &stats->rts, 0, "Noise level");
SYSCTL_ADD_UINT(device_get_sysctl_ctx(dev),
SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO,
"rts", CTLFLAG_RW, &stats->rts, 0, "RTS");
SYSCTL_ADD_UINT(device_get_sysctl_ctx(dev),
SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO,
"rtsfail", CTLFLAG_RW, &stats->rtsfail, 0, "RTS failed to send");
#ifdef BWN_DEBUG
SYSCTL_ADD_UINT(device_get_sysctl_ctx(dev),
SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO,
"debug", CTLFLAG_RW, &sc->sc_debug, 0, "Debug flags");
#endif
}
static void
bwn_identify(driver_t *driver, device_t parent)
{

View File

@ -515,6 +515,8 @@ struct bwn_tx_radiotap_header {
};
struct bwn_stats {
int32_t rtsfail;
int32_t rts;
int32_t link_noise;
};