mac80211: fix offchannel queue stop
authorJohannes Berg <johannes.berg@intel.com>
Fri, 27 Aug 2010 11:45:28 +0000 (13:45 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 27 Aug 2010 17:53:31 +0000 (13:53 -0400)
commit5b714c6a3753dad0798a70a049e15c7f6bc9446b
tree39345981014b14e881cbfbef87a4a3a74469fada
parentc35d02705e9c2db90a89b29142046b4ffd5a76e5
mac80211: fix offchannel queue stop

Somebody noticed this problem, and I outlined
to them how to fix it, but haven't heard back
from them. So while I was adding the state
field I figured I could use it to fix it.

The problem, as I understand it, is that when
we go offchannel while the driver has a queue
stopped, the driver will likely start draining
the queue and then enable it while offchannel.
This in turn will enable the interface queue,
and that leads to transmitting data frames on
the wrong channel.

Fix this by keeping track of offchannel status
per interface, and not enabling the interface
queues on interfaces that are offchannel when
the driver enables a queue.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/ieee80211_i.h
net/mac80211/offchannel.c
net/mac80211/util.c