diff options
author | adrian <adrian@FreeBSD.org> | 2012-04-07 02:51:53 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2012-04-07 02:51:53 +0000 |
commit | 17c1a9e4d5f967c74c9cabe8abc58f29af44b433 (patch) | |
tree | d2f4a99c40ad824a887261c7f358fcb422feda5d | |
parent | 8e4ce17ba282f8053da77cd6821d84eff3614cba (diff) | |
download | FreeBSD-src-17c1a9e4d5f967c74c9cabe8abc58f29af44b433.zip FreeBSD-src-17c1a9e4d5f967c74c9cabe8abc58f29af44b433.tar.gz |
Store away the RTS aggregate limit from the HAL.
This will be used by some upcoming code to ensure that aggregates
are enforced to be a certain size. The AR5416 has a limitation on
RTS protected aggregates (8KiB).
-rw-r--r-- | sys/dev/ath/if_ath.c | 7 | ||||
-rw-r--r-- | sys/dev/ath/if_athvar.h | 1 |
2 files changed, 8 insertions, 0 deletions
diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c index 3866ba1..9e1625b 100644 --- a/sys/dev/ath/if_ath.c +++ b/sys/dev/ath/if_ath.c @@ -732,6 +732,13 @@ ath_attach(u_int16_t devid, struct ath_softc *sc) ic->ic_txstream = txs; ic->ic_rxstream = rxs; + (void) ath_hal_getcapability(ah, HAL_CAP_RTS_AGGR_LIMIT, 1, + &sc->sc_rts_aggr_limit); + if (sc->sc_rts_aggr_limit != (64 * 1024)) + device_printf(sc->sc_dev, + "[HT] RTS aggregates limited to %d KiB\n", + sc->sc_rts_aggr_limit / 1024); + device_printf(sc->sc_dev, "[HT] %d RX streams; %d TX streams\n", rxs, txs); } diff --git a/sys/dev/ath/if_athvar.h b/sys/dev/ath/if_athvar.h index 04b7c30..77e7066 100644 --- a/sys/dev/ath/if_athvar.h +++ b/sys/dev/ath/if_athvar.h @@ -533,6 +533,7 @@ struct ath_softc { uint16_t *sc_eepromdata; /* Local eeprom data, if AR9100 */ int sc_txchainmask; /* currently configured TX chainmask */ int sc_rxchainmask; /* currently configured RX chainmask */ + int sc_rts_aggr_limit; /* TX limit on RTS aggregates */ /* Queue limits */ |