A few nitpicks:

* Use ATH_RC_NUM instead of '4' when iterating over the ratecontrol series
  array.

* A few style(9) fixes, hopefully no regressions here.

* Add some comments that better describe what's going on.
This commit is contained in:
Adrian Chadd 2012-06-16 21:37:15 +00:00
parent ec528f07de
commit b25c1f2af0

View File

@ -96,9 +96,10 @@ __FBSDID("$FreeBSD$");
*/
#define IEEE80211_AMPDU_SUBFRAME_DEFAULT 32
#define ATH_AGGR_DELIM_SZ 4 /* delimiter size */
#define ATH_AGGR_DELIM_SZ 4 /* delimiter size */
#define ATH_AGGR_MINPLEN 256 /* in bytes, minimum packet length */
#define ATH_AGGR_ENCRYPTDELIM 10 /* number of delimiters for encryption padding */
/* number of delimiters for encryption padding */
#define ATH_AGGR_ENCRYPTDELIM 10
/*
* returns delimiter padding required given the packet length
@ -414,7 +415,7 @@ ath_get_aggr_limit(struct ath_softc *sc, struct ath_buf *bf)
int amin = 65530;
int i;
for (i = 0; i < 4; i++) {
for (i = 0; i < ATH_RC_NUM; i++) {
if (bf->bf_state.bfs_rc[i].tries == 0)
continue;
amin = MIN(amin, bf->bf_state.bfs_rc[i].max4msframelen);
@ -465,7 +466,7 @@ ath_rateseries_setup(struct ath_softc *sc, struct ieee80211_node *ni,
* XXX fields.
*/
memset(series, 0, sizeof(HAL_11N_RATE_SERIES) * 4);
for (i = 0; i < 4; i++) {
for (i = 0; i < ATH_RC_NUM; i++) {
/* Only set flags for actual TX attempts */
if (rc[i].tries == 0)
continue;
@ -511,7 +512,10 @@ ath_rateseries_setup(struct ath_softc *sc, struct ieee80211_node *ni,
series[i].Rate = rt->info[rc[i].rix].rateCode;
/* PktDuration doesn't include slot, ACK, RTS, etc timing - it's just the packet duration */
/*
* PktDuration doesn't include slot, ACK, RTS, etc timing -
* it's just the packet duration
*/
if (series[i].Rate & IEEE80211_RATE_MCS) {
series[i].PktDuration =
ath_computedur_ht(pktlen
@ -531,11 +535,12 @@ ath_rateseries_setup(struct ath_softc *sc, struct ieee80211_node *ni,
#if 0
static void
ath_rateseries_print(HAL_11N_RATE_SERIES *series)
ath_rateseries_print(struct ath_softc *sc, HAL_11N_RATE_SERIES *series)
{
int i;
for (i = 0; i < 4; i++) {
printf("series %d: rate %x; tries %d; pktDuration %d; chSel %d; rateFlags %x\n",
for (i = 0; i < ATH_RC_NUM; i++) {
device_printf(sc->sc_dev ,"series %d: rate %x; tries %d; "
"pktDuration %d; chSel %d; rateFlags %x\n",
i,
series[i].Rate,
series[i].Tries,
@ -580,19 +585,34 @@ ath_buf_set_rate(struct ath_softc *sc, struct ieee80211_node *ni,
#if 0
printf("pktlen: %d; flags 0x%x\n", pktlen, flags);
ath_rateseries_print(series);
ath_rateseries_print(sc, series);
#endif
/* Set rate scenario */
/*
* Note: Don't allow hardware to override the duration on
* ps-poll packets.
*/
ath_hal_set11nratescenario(ah, ds,
!is_pspoll, /* whether to override the duration or not */
/* don't allow hardware to override the duration on ps-poll packets */
ctsrate, /* rts/cts rate */
series, /* 11n rate series */
4, /* number of series */
flags);
/* Setup the last descriptor in the chain */
/*
* XXX Why is this done here, and not in the upper layer?
* The rate control code stores a copy of the RC info in
* the last descriptor as well as the first, then uses
* the shadow copy in the last descriptor to see what the RC
* decisions were. I'm not sure why; perhaps earlier hardware
* overwrote the first descriptor contents.
*
* In the 802.11n case, it also clears the moreaggr/delim
* fields. Again, this should be done by the caller of
* ath_buf_set_rate().
*/
ath_hal_setuplasttxdesc(ah, lastds, ds);
/* Set burst duration */
@ -628,8 +648,9 @@ ath_buf_set_rate(struct ath_softc *sc, struct ieee80211_node *ni,
* descriptor setup, and ath_buf_set_rate() will configure the
* rate control.
*
* Note that the TID lock is only grabbed when dequeuing packets from
* the TID queue. If some code in another thread adds to the head of this
* The TID lock is required for the entirety of this function.
*
* If some code in another thread adds to the head of this
* list, very strange behaviour will occur. Since retransmission is the
* only reason this will occur, and this routine is designed to be called
* from within the scheduler task, it won't ever clash with the completion
@ -639,8 +660,8 @@ ath_buf_set_rate(struct ath_softc *sc, struct ieee80211_node *ni,
* dispatch aggregate frames to the hardware), please keep this in mind.
*/
ATH_AGGR_STATUS
ath_tx_form_aggr(struct ath_softc *sc, struct ath_node *an, struct ath_tid *tid,
ath_bufhead *bf_q)
ath_tx_form_aggr(struct ath_softc *sc, struct ath_node *an,
struct ath_tid *tid, ath_bufhead *bf_q)
{
//struct ieee80211_node *ni = &an->an_node;
struct ath_buf *bf, *bf_first = NULL, *bf_prev = NULL;