diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/rc.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/rc.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath9k/rc.c b/drivers/net/wireless/ath/ath9k/rc.c index 244e1c629177..8519452c95f1 100644 --- a/drivers/net/wireless/ath/ath9k/rc.c +++ b/drivers/net/wireless/ath/ath9k/rc.c | |||
@@ -691,6 +691,19 @@ static void ath_get_rate(void *priv, struct ieee80211_sta *sta, void *priv_sta, | |||
691 | rate_table = sc->cur_rate_table; | 691 | rate_table = sc->cur_rate_table; |
692 | rix = ath_rc_get_highest_rix(sc, ath_rc_priv, rate_table, &is_probe); | 692 | rix = ath_rc_get_highest_rix(sc, ath_rc_priv, rate_table, &is_probe); |
693 | 693 | ||
694 | /* | ||
695 | * If we're in HT mode and both us and our peer supports LDPC. | ||
696 | * We don't need to check our own device's capabilities as our own | ||
697 | * ht capabilities would have already been intersected with our peer's. | ||
698 | */ | ||
699 | if (conf_is_ht(&sc->hw->conf) && | ||
700 | (sta->ht_cap.cap & IEEE80211_HT_CAP_LDPC_CODING)) | ||
701 | tx_info->flags |= IEEE80211_TX_CTL_LDPC; | ||
702 | |||
703 | if (conf_is_ht(&sc->hw->conf) && | ||
704 | (sta->ht_cap.cap & IEEE80211_HT_CAP_TX_STBC)) | ||
705 | tx_info->flags |= (1 << IEEE80211_TX_CTL_STBC_SHIFT); | ||
706 | |||
694 | if (is_probe) { | 707 | if (is_probe) { |
695 | /* set one try for probe rates. For the | 708 | /* set one try for probe rates. For the |
696 | * probes don't enable rts */ | 709 | * probes don't enable rts */ |
@@ -1228,8 +1241,12 @@ static void ath_tx_status(void *priv, struct ieee80211_supported_band *sband, | |||
1228 | long_retry = rate->count - 1; | 1241 | long_retry = rate->count - 1; |
1229 | } | 1242 | } |
1230 | 1243 | ||
1231 | if (!priv_sta || !ieee80211_is_data(fc) || | 1244 | if (!priv_sta || !ieee80211_is_data(fc)) |
1232 | !(tx_info->pad[0] & ATH_TX_INFO_UPDATE_RC)) | 1245 | return; |
1246 | |||
1247 | /* This packet was aggregated but doesn't carry status info */ | ||
1248 | if ((tx_info->flags & IEEE80211_TX_CTL_AMPDU) && | ||
1249 | !(tx_info->flags & IEEE80211_TX_STAT_AMPDU)) | ||
1233 | return; | 1250 | return; |
1234 | 1251 | ||
1235 | if (tx_info->flags & IEEE80211_TX_STAT_TX_FILTERED) | 1252 | if (tx_info->flags & IEEE80211_TX_STAT_TX_FILTERED) |