linux/drivers/net/wireless/iwlwifi
Emmanuel Grumbach aecdc63d87 iwlwifi: pcie: fix stuck queue detection for sleeping clients
The stuck queue detection mechanism allows to detect queues
that are stuck. For sleeping clients, a queue may rightfully
be stuck: if a poor client implementation stays asleep for
more than 10s, then we don't want to trigger recovery flows
because of that client.
In order to cope with this, I added a mechanism that
monitors the state of the client: when a client goes to
sleep, the timer of his queues is frozen. When he wakes up,
the timer is reset to the right value so that if a client
was awake for more than 10s and the queues are stuck, only
then, the recovery flow will kick in.
This is valid only on non-shared queues: A-MPDU queues.

There was a bug in case we Tx to a sleeping client that has
an empty A-MPDU queue: the timer was armed to now + 10s.
This is bad, but pretty harmless.
The problem is that when the client wakes up, the timer is
modified to be now + remainder. But remainder is 0 since the
queue was empty when that client went to sleep...

Fix this by checking the state of the client before playing
with the timer when we add a packet to an empty queue.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2015-07-30 21:38:14 +03:00
..
dvm mac80211: convert HW flags to unsigned long bitmap 2015-06-10 16:05:36 +02:00
mvm iwlwifi: mvm: Fix regular scan priority 2015-07-28 11:36:02 +03:00
pcie iwlwifi: pcie: fix stuck queue detection for sleeping clients 2015-07-30 21:38:14 +03:00
Kconfig Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-06-01 22:51:30 -07:00
Makefile iwlwifi: refactor common transport alloc/init code 2015-05-28 13:32:34 +03:00
iwl-1000.c iwlwifi: fix max_ht_ampdu_exponent for older devices 2015-03-12 09:57:21 +02:00
iwl-2000.c iwlwifi: fix max_ht_ampdu_exponent for older devices 2015-03-12 09:57:21 +02:00
iwl-5000.c iwlwifi: fix max_ht_ampdu_exponent for older devices 2015-03-12 09:57:21 +02:00
iwl-6000.c iwlwifi: fix max_ht_ampdu_exponent for older devices 2015-03-12 09:57:21 +02:00
iwl-7000.c iwlwifi: bump the iwlmvm API number to 15 2015-06-03 09:54:18 +03:00
iwl-8000.c iwlwifi: bump the iwlmvm API number to 15 2015-06-03 09:54:18 +03:00
iwl-agn-hw.h iwlwifi: mvm: fix bug with OTP memory size 2014-05-06 20:40:01 +03:00
iwl-config.h iwlwifi: pcie: Control access to the NIC's PM registers via iwl_cfg 2015-06-03 09:40:56 +03:00
iwl-csr.h iwlwifi: mvm: support family 8000 C step 2015-01-22 17:55:20 +02:00
iwl-debug.c iwlwifi: use dev_printk instead of dev_dbg for debug logs 2014-05-13 13:52:22 +03:00
iwl-debug.h iwlwifi: mvm: add MCC update FW API 2015-03-12 09:57:21 +02:00
iwl-devtrace-data.h iwlwifi: Move each system tracepoints to their own header 2015-04-08 09:38:49 -04:00
iwl-devtrace-io.h iwlwifi: Move each system tracepoints to their own header 2015-04-08 09:38:49 -04:00
iwl-devtrace-iwlwifi.h iwlwifi: tracing: add rx cmd header fields 2015-05-28 13:35:24 +03:00
iwl-devtrace-msg.h iwlwifi: Move each system tracepoints to their own header 2015-04-08 09:38:49 -04:00
iwl-devtrace-ucode.h iwlwifi: Move each system tracepoints to their own header 2015-04-08 09:38:49 -04:00
iwl-devtrace.c iwlwifi: don't export tracepoints unnecessarily 2014-09-03 22:49:03 +03:00
iwl-devtrace.h iwlwifi: Move each system tracepoints to their own header 2015-04-08 09:38:49 -04:00
iwl-drv.c iwlwifi: prepare for higher API/CAPA bits 2015-06-03 09:45:37 +03:00
iwl-drv.h iwlwifi: fix spelling errors 2015-04-02 09:29:13 +03:00
iwl-eeprom-parse.c iwlwifi: mvm: forbid MIMO on devices that don't support it 2015-05-10 11:44:42 +03:00
iwl-eeprom-parse.h iwlwifi: mvm: forbid MIMO on devices that don't support it 2015-05-10 11:44:42 +03:00
iwl-eeprom-read.c iwlwifi: fix spelling errors 2015-04-02 09:29:13 +03:00
iwl-eeprom-read.h iwlwifi: Update Copyright to 2014 2013-12-31 19:03:53 +02:00
iwl-fh.h Revert "iwlwifi: pcie: New RBD allocation model" 2015-07-12 19:54:19 +03:00
iwl-fw-error-dump.h iwlwifi: mvm: implement the BlockAck related debug triggers 2015-05-28 13:36:54 +03:00
iwl-fw-file.h iwlwifi: mvm: Add DC2DC_CONFIG_CMD (0x83) cmd & TLV 2015-06-03 09:52:44 +03:00
iwl-fw.h iwlwifi: prepare for higher API/CAPA bits 2015-06-03 09:45:37 +03:00
iwl-io.c iwlwifi: drop support for early versions of 8000 2015-03-26 09:15:36 +02:00
iwl-io.h iwlwifi: update nmi register 2014-05-15 19:50:51 +03:00
iwl-modparams.h iwlwifi: allow disabling LAR via module param 2015-03-12 09:57:29 +02:00
iwl-notif-wait.c iwlwifi: Update Copyright to 2014 2013-12-31 19:03:53 +02:00
iwl-notif-wait.h iwlwifi: Update Copyright to 2014 2013-12-31 19:03:53 +02:00
iwl-nvm-parse.c iwlwifi: nvm: remove mac address byte swapping in 8000 family 2015-07-12 19:54:19 +03:00
iwl-nvm-parse.h iwlwifi: drop support for early versions of 8000 2015-03-26 09:15:36 +02:00
iwl-op-mode.h iwlwifi: fix spelling errors 2015-04-02 09:29:13 +03:00
iwl-phy-db.c iwlwifi: fix spelling errors 2015-04-02 09:29:13 +03:00
iwl-phy-db.h iwlwifi: Update Copyright to 2014 2013-12-31 19:03:53 +02:00
iwl-prph.h iwlwifi: pcie: support marbh fw dbg mode 2015-04-29 13:12:49 +03:00
iwl-scd.h iwlwifi: pcie: prepare the enablement of 31 TFD queues 2015-02-01 15:57:20 +02:00
iwl-trans.c iwlwifi: refactor common transport alloc/init code 2015-05-28 13:32:34 +03:00
iwl-trans.h iwlwifi: pcie: re-enable interrupts on resume 2015-06-03 09:41:42 +03:00