diff options
author | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2009-03-10 17:35:11 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-03-16 18:09:44 -0400 |
commit | df36c044f51ba6889c2d8b0efd285303bf2a0fbe (patch) | |
tree | ed0f6971c9bb149698c7419c0e07cb539eb02a3e /drivers | |
parent | 8fe723117a8ef543b6e68ba24e50e1c15250f6c5 (diff) |
iwlwifi: check IEEE80211_TX_STAT_AMPDU for agg pkt
when perform rate scaling, in tx status function, checking for
IEEE80211_TX_STAT_AMPDU flag instead of IEEE_TX_CTL_AMPDU flag to perform
AMPDU rate scaling operation.
IEEE80211_TX_CTL_AMPDU was set by mac80211 for aggregation pkt. But when
iwlwifi receive the tx status reply, it reset the flag to following
info->flags = IEEE80211_TX_STAT_ACK;
info->flags |= IEEE80211_TX_STAT_AMPDU;
it causes the rate-scaling to not work for aggregation pkt if we checking
for IEEE80211_TX_CTL_AMPDU flag.
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c index 0929f310b2d4..43c796bb5800 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c | |||
@@ -916,7 +916,7 @@ static void rs_tx_status(void *priv_r, struct ieee80211_supported_band *sband, | |||
916 | tpt = search_tbl->expected_tpt[rs_index]; | 916 | tpt = search_tbl->expected_tpt[rs_index]; |
917 | else | 917 | else |
918 | tpt = 0; | 918 | tpt = 0; |
919 | if (info->flags & IEEE80211_TX_CTL_AMPDU) | 919 | if (info->flags & IEEE80211_TX_STAT_AMPDU) |
920 | rs_collect_tx_data(search_win, rs_index, tpt, | 920 | rs_collect_tx_data(search_win, rs_index, tpt, |
921 | info->status.ampdu_ack_len, | 921 | info->status.ampdu_ack_len, |
922 | info->status.ampdu_ack_map); | 922 | info->status.ampdu_ack_map); |
@@ -932,7 +932,7 @@ static void rs_tx_status(void *priv_r, struct ieee80211_supported_band *sband, | |||
932 | tpt = curr_tbl->expected_tpt[rs_index]; | 932 | tpt = curr_tbl->expected_tpt[rs_index]; |
933 | else | 933 | else |
934 | tpt = 0; | 934 | tpt = 0; |
935 | if (info->flags & IEEE80211_TX_CTL_AMPDU) | 935 | if (info->flags & IEEE80211_TX_STAT_AMPDU) |
936 | rs_collect_tx_data(window, rs_index, tpt, | 936 | rs_collect_tx_data(window, rs_index, tpt, |
937 | info->status.ampdu_ack_len, | 937 | info->status.ampdu_ack_len, |
938 | info->status.ampdu_ack_map); | 938 | info->status.ampdu_ack_map); |
@@ -944,7 +944,7 @@ static void rs_tx_status(void *priv_r, struct ieee80211_supported_band *sband, | |||
944 | /* If not searching for new mode, increment success/failed counter | 944 | /* If not searching for new mode, increment success/failed counter |
945 | * ... these help determine when to start searching again */ | 945 | * ... these help determine when to start searching again */ |
946 | if (lq_sta->stay_in_tbl) { | 946 | if (lq_sta->stay_in_tbl) { |
947 | if (info->flags & IEEE80211_TX_CTL_AMPDU) { | 947 | if (info->flags & IEEE80211_TX_STAT_AMPDU) { |
948 | lq_sta->total_success += info->status.ampdu_ack_map; | 948 | lq_sta->total_success += info->status.ampdu_ack_map; |
949 | lq_sta->total_failed += | 949 | lq_sta->total_failed += |
950 | (info->status.ampdu_ack_len - info->status.ampdu_ack_map); | 950 | (info->status.ampdu_ack_len - info->status.ampdu_ack_map); |