mac80211: allow TDLS setup code to take wdev lock
authorArik Nemtsov <arik@wizery.com>
Sun, 1 Mar 2015 07:10:09 +0000 (09:10 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 4 Mar 2015 09:34:10 +0000 (10:34 +0100)
commitae2e9fba85f69e0b53b1ef15e3011ce09ac1b9f2
treee2ba955bb3a1ff3fc6fa88423535201d2f07b168
parent23e370989c3fe6b9b2062d9d511feda800434de3
mac80211: allow TDLS setup code to take wdev lock

TDLS off-channel can be allowed in channels marked with GO_CONCURRENT,
provided the device is connected to an AP on the same UNII.
When relaxing the NO-IR requirements for TDLS, we might hit flows in
cfg80211_reg_can_beacon that acquire the wdev lock. Take some measures
to allow this during TDLS setup.
Acquire the RCU read lock later in the flow that invokes
cfg80211_reg_can_beacon.
Avoid taking local->mtx when preparing the setup packet to avoid
circular deadlocks with mac80211 code that is invoked with wdev-mtx
held.

Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/tdls.c