summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2012-04-07 02:51:53 +0000
committeradrian <adrian@FreeBSD.org>2012-04-07 02:51:53 +0000
commit17c1a9e4d5f967c74c9cabe8abc58f29af44b433 (patch)
treed2f4a99c40ad824a887261c7f358fcb422feda5d
parent8e4ce17ba282f8053da77cd6821d84eff3614cba (diff)
downloadFreeBSD-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.c7
-rw-r--r--sys/dev/ath/if_athvar.h1
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 */
OpenPOWER on IntegriCloud