diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/xmit.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/xmit.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index 8d8306039edb..cafb4a09729a 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c | |||
@@ -1165,6 +1165,7 @@ int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, | |||
1165 | { | 1165 | { |
1166 | struct ath_atx_tid *txtid; | 1166 | struct ath_atx_tid *txtid; |
1167 | struct ath_node *an; | 1167 | struct ath_node *an; |
1168 | u8 density; | ||
1168 | 1169 | ||
1169 | an = (struct ath_node *)sta->drv_priv; | 1170 | an = (struct ath_node *)sta->drv_priv; |
1170 | txtid = ATH_AN_2_TID(an, tid); | 1171 | txtid = ATH_AN_2_TID(an, tid); |
@@ -1172,6 +1173,17 @@ int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, | |||
1172 | if (txtid->state & (AGGR_CLEANUP | AGGR_ADDBA_COMPLETE)) | 1173 | if (txtid->state & (AGGR_CLEANUP | AGGR_ADDBA_COMPLETE)) |
1173 | return -EAGAIN; | 1174 | return -EAGAIN; |
1174 | 1175 | ||
1176 | /* update ampdu factor/density, they may have changed. This may happen | ||
1177 | * in HT IBSS when a beacon with HT-info is received after the station | ||
1178 | * has already been added. | ||
1179 | */ | ||
1180 | if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_HT) { | ||
1181 | an->maxampdu = 1 << (IEEE80211_HT_MAX_AMPDU_FACTOR + | ||
1182 | sta->ht_cap.ampdu_factor); | ||
1183 | density = ath9k_parse_mpdudensity(sta->ht_cap.ampdu_density); | ||
1184 | an->mpdudensity = density; | ||
1185 | } | ||
1186 | |||
1175 | txtid->state |= AGGR_ADDBA_PROGRESS; | 1187 | txtid->state |= AGGR_ADDBA_PROGRESS; |
1176 | txtid->paused = true; | 1188 | txtid->paused = true; |
1177 | *ssn = txtid->seq_start = txtid->seq_next; | 1189 | *ssn = txtid->seq_start = txtid->seq_next; |