|
@@ -455,7 +455,7 @@ static u32 ath_lookup_rate(struct ath_softc *sc, struct ath_buf *bf,
|
|
|
struct ieee80211_tx_rate *rates;
|
|
|
struct ath_tx_info_priv *tx_info_priv;
|
|
|
u32 max_4ms_framelen, frmlen;
|
|
|
- u16 aggr_limit, legacy = 0, maxampdu;
|
|
|
+ u16 aggr_limit, legacy = 0;
|
|
|
int i;
|
|
|
|
|
|
skb = bf->bf_mpdu;
|
|
@@ -490,16 +490,15 @@ static u32 ath_lookup_rate(struct ath_softc *sc, struct ath_buf *bf,
|
|
|
if (tx_info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE || legacy)
|
|
|
return 0;
|
|
|
|
|
|
- aggr_limit = min(max_4ms_framelen, (u32)ATH_AMPDU_LIMIT_DEFAULT);
|
|
|
+ aggr_limit = min(max_4ms_framelen, (u32)ATH_AMPDU_LIMIT_MAX);
|
|
|
|
|
|
/*
|
|
|
* h/w can accept aggregates upto 16 bit lengths (65535).
|
|
|
* The IE, however can hold upto 65536, which shows up here
|
|
|
* as zero. Ignore 65536 since we are constrained by hw.
|
|
|
*/
|
|
|
- maxampdu = tid->an->maxampdu;
|
|
|
- if (maxampdu)
|
|
|
- aggr_limit = min(aggr_limit, maxampdu);
|
|
|
+ if (tid->an->maxampdu)
|
|
|
+ aggr_limit = min(aggr_limit, tid->an->maxampdu);
|
|
|
|
|
|
return aggr_limit;
|
|
|
}
|
|
@@ -507,7 +506,6 @@ static u32 ath_lookup_rate(struct ath_softc *sc, struct ath_buf *bf,
|
|
|
/*
|
|
|
* Returns the number of delimiters to be added to
|
|
|
* meet the minimum required mpdudensity.
|
|
|
- * caller should make sure that the rate is HT rate .
|
|
|
*/
|
|
|
static int ath_compute_num_delims(struct ath_softc *sc, struct ath_atx_tid *tid,
|
|
|
struct ath_buf *bf, u16 frmlen)
|
|
@@ -515,7 +513,7 @@ static int ath_compute_num_delims(struct ath_softc *sc, struct ath_atx_tid *tid,
|
|
|
const struct ath_rate_table *rt = sc->cur_rate_table;
|
|
|
struct sk_buff *skb = bf->bf_mpdu;
|
|
|
struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
|
|
|
- u32 nsymbits, nsymbols, mpdudensity;
|
|
|
+ u32 nsymbits, nsymbols;
|
|
|
u16 minlen;
|
|
|
u8 rc, flags, rix;
|
|
|
int width, half_gi, ndelim, mindelim;
|
|
@@ -537,14 +535,12 @@ static int ath_compute_num_delims(struct ath_softc *sc, struct ath_atx_tid *tid,
|
|
|
* on highest rate in rate series (i.e. first rate) to determine
|
|
|
* required minimum length for subframe. Take into account
|
|
|
* whether high rate is 20 or 40Mhz and half or full GI.
|
|
|
- */
|
|
|
- mpdudensity = tid->an->mpdudensity;
|
|
|
-
|
|
|
- /*
|
|
|
+ *
|
|
|
* If there is no mpdu density restriction, no further calculation
|
|
|
* is needed.
|
|
|
*/
|
|
|
- if (mpdudensity == 0)
|
|
|
+
|
|
|
+ if (tid->an->mpdudensity == 0)
|
|
|
return ndelim;
|
|
|
|
|
|
rix = tx_info->control.rates[0].idx;
|
|
@@ -554,9 +550,9 @@ static int ath_compute_num_delims(struct ath_softc *sc, struct ath_atx_tid *tid,
|
|
|
half_gi = (flags & IEEE80211_TX_RC_SHORT_GI) ? 1 : 0;
|
|
|
|
|
|
if (half_gi)
|
|
|
- nsymbols = NUM_SYMBOLS_PER_USEC_HALFGI(mpdudensity);
|
|
|
+ nsymbols = NUM_SYMBOLS_PER_USEC_HALFGI(tid->an->mpdudensity);
|
|
|
else
|
|
|
- nsymbols = NUM_SYMBOLS_PER_USEC(mpdudensity);
|
|
|
+ nsymbols = NUM_SYMBOLS_PER_USEC(tid->an->mpdudensity);
|
|
|
|
|
|
if (nsymbols == 0)
|
|
|
nsymbols = 1;
|