linux/drivers/net/wireless/iwlwifi
Emmanuel Grumbach c3e5d7181a iwlwifi: audit single frames from AGG queue in RS
The rate scaling won't treat the information in a frame
with IEEE80211_TX_CTL_AMPDU set if IEEE80211_TX_STAT_AMPDU
is cleared. But all the frames coming from an AGG tx queue
have IEEE80211_TX_CTL_AMPDU set, and IEEE80211_TX_STAT_AMPDU
is set only if the frame was sent in an AMPDU.
This means that all the data in frames in AGG tx queues that
aren't sent as an AMPDU is thrown away.
This is even more harmful when in bad link conditions, the
frames are sent in an AMPDU and then finally sent as single
frame. So a lot of failures weren't reported and the rate
scaling got stuck in high rates leading to very poor
connectivity.

Fix that by clearing IEEE80211_TX_CTL_AMPDU when the frame
isn't part of an AMPDU.

This bug was introduced by

2eb81a40aa
iwlwifi: don't clear CTL_AMPDU on frame status

This fix basically reverts the aforementioned commit.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2013-01-16 14:20:20 +01:00
..
dvm iwlwifi: audit single frames from AGG queue in RS 2013-01-16 14:20:20 +01:00
pcie iwlwifi: fix PCIe interrupt handle return value 2013-01-03 15:29:15 +01:00
Kconfig iwlwifi: remove MFP Kconfig option 2012-10-23 15:27:25 +02:00
Makefile iwlwifi: Fix Makefile build order for built-in driver 2012-06-13 09:01:05 +02:00
iwl-agn-hw.h iwlwifi: move OTP defines 2012-04-23 14:30:01 -07:00
iwl-config.h iwlwifi: Change define and struct names in iwl-eeprom-parse.h 2012-12-06 22:21:38 +01:00
iwl-csr.h iwlwifi: configure the SKU in the HW 2012-06-06 13:22:30 +02:00
iwl-debug.c iwlwifi: fix debug message level 2012-06-29 14:28:59 +02:00
iwl-debug.h iwlwifi: refactor EEPROM reading/parsing 2012-06-06 13:24:19 +02:00
iwl-devtrace.c iwlwifi: implement dynamic opmode loading 2012-06-05 15:32:13 -04:00
iwl-devtrace.h iwlwifi: move prph handling into the transport 2012-12-06 22:24:03 +01:00
iwl-drv.c iwlwifi: return real info in probe failure 2012-11-29 16:04:27 +01:00
iwl-drv.h iwlwifi: s/iwl_ucode_callback/iwl_req_fw_callback 2012-07-26 08:53:22 +02:00
iwl-eeprom-parse.c iwlwifi: Change define and struct names in iwl-eeprom-parse.h 2012-12-06 22:21:38 +01:00
iwl-eeprom-parse.h iwlwifi: Change define and struct names in iwl-eeprom-parse.h 2012-12-06 22:21:38 +01:00
iwl-eeprom-read.c iwlwifi: refactor EEPROM reading/parsing 2012-06-06 13:24:19 +02:00
iwl-eeprom-read.h iwlwifi: refactor EEPROM reading/parsing 2012-06-06 13:24:19 +02:00
iwl-fh.h iwlwifi: update the RB_TIMEOUT to 0x11 2012-11-19 15:07:48 +01:00
iwl-fw-file.h iwlwifi: remove uCode alternatives mechanism 2012-04-16 14:34:44 -07:00
iwl-fw.h iwlwifi: load firmware in chunks 2012-09-10 19:14:30 +02:00
iwl-io.c iwlwifi: move prph handling into the transport 2012-12-06 22:24:03 +01:00
iwl-io.h iwlwifi: move prph handling into the transport 2012-12-06 22:24:03 +01:00
iwl-modparams.h iwlwifi: remove the iwl_shared reference 2012-05-08 21:53:44 -04:00
iwl-notif-wait.c iwlwifi: don't disable interrupt in iwl_abort_notification_waits 2012-06-18 10:46:37 +02:00
iwl-notif-wait.h iwlwifi: extend notification wait 2012-04-09 16:37:15 -04:00
iwl-op-mode.h iwlwifi: rework the iwlwifi debugfs structure 2012-07-26 08:59:28 +02:00
iwl-prph.h iwlwifi: wipe out the status of the SCD when we disable a queue 2012-10-16 16:31:53 +02:00
iwl-test.c iwlwifi: iwl_{read,write}_targ_mem_words takes dwords 2012-06-13 09:01:01 +02:00
iwl-test.h iwlwifi: decouple testmode and iwl-test 2012-06-11 11:41:18 +02:00
iwl-testmode.h iwlwifi: refactor testmode 2012-06-11 11:37:21 +02:00
iwl-trans.h iwlwifi: move prph handling into the transport 2012-12-06 22:24:03 +01:00