]> git.baikalelectronics.ru Git - kernel.git/commit
mac80211: fix on-channel remain-on-channel
authorJohannes Berg <johannes.berg@intel.com>
Wed, 14 May 2014 13:34:41 +0000 (15:34 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 14 May 2014 13:48:38 +0000 (15:48 +0200)
commit81422e3bdb8815ced476cd61ac6d4a45e8764897
tree5125bf36af13ddd351655dd50c9d45b2bbe0dfee
parentcd27f72ce607607377705d09bfbe3e7dd5dd3629
mac80211: fix on-channel remain-on-channel

Jouni reported that if a remain-on-channel was active on the
same channel as the current operating channel, then the ROC
would start, but any frames transmitted using mgmt-tx on the
same channel would get delayed until after the ROC.

The reason for this is that the ROC starts, but doesn't have
any handling for "remain on the same channel", so it stops
the interface queues. The later mgmt-tx then puts the frame
on the interface queues (since it's on the current operating
channel) and thus they get delayed until after the ROC.

To fix this, add some logic to handle remaining on the same
channel specially and not stop the queues etc. in this case.
This not only fixes the bug but also improves behaviour in
this case as data frames etc. can continue to flow.

Cc: stable@vger.kernel.org
Reported-by: Jouni Malinen <j@w1.fi>
Tested-by: Jouni Malinen <j@w1.fi>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/ieee80211_i.h
net/mac80211/offchannel.c