diff options
author | Kalle Valo <kvalo@qca.qualcomm.com> | 2012-07-12 15:33:58 +0300 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-07-17 12:00:43 +0200 |
commit | 959085352b7c44ff9bae4d8a4d76146193260e4c (patch) | |
tree | 0b868f531b1883c894e02d14640901bfb570d05d /net/wireless/core.c | |
parent | 84f10708f73254878246772cead70a2eb6a123f2 (diff) | |
download | op-kernel-dev-959085352b7c44ff9bae4d8a4d76146193260e4c.zip op-kernel-dev-959085352b7c44ff9bae4d8a4d76146193260e4c.tar.gz |
cfg80211: fix set_regdom() to cancel requests with same alpha2
While adding regulatory support to ath6kl I noticed that I easily
got the regulatory code confused. The way to reproduce the bug was:
1. iw reg set FI (in userspace)
2. cfg80211 calls ath6kl_reg_notify(FI)
3. ath6kl sets regdomain in firmware
4. firmware sends regdomain event to notify about the new regdomain (FI)
5. ath6kl calls regulatory_hint(FI)
And this (from FI to FI transition) confuses cfg80211 and after that I
only get "Pending regulatory request, waiting for it to be
processed...." messages and regdomain changes won't work anymore.
The reason why ath6kl calls regulatory_hint() is that firmware can change
the regulatory domain by it's own, for example due to 11d IEs. I could
of course workaround this in ath6kl but I think it's better to handle
the case in cfg80211.
The fix is pretty simple, use a different error code if the regdomain is
same and then just set the request processed so that it doesn't block new
requests.
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless/core.c')
0 files changed, 0 insertions, 0 deletions