summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/mvm/scan.c
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2015-07-29 23:06:41 +0300
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>2015-07-30 21:38:14 +0300
commitaecdc63d87891c75e60906973c7b7c9cd58403d6 (patch)
tree3e6d357e6ef08784d6f4d0fd680e5fca907b0d4a /drivers/net/wireless/iwlwifi/mvm/scan.c
parentdc9f69b907f3853952d3ffb7918d05a662146712 (diff)
downloadop-kernel-dev-aecdc63d87891c75e60906973c7b7c9cd58403d6.zip
op-kernel-dev-aecdc63d87891c75e60906973c7b7c9cd58403d6.tar.gz
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>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/scan.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud