summaryrefslogtreecommitdiffstats
path: root/net/wireless
diff options
context:
space:
mode:
authorRajkumar Manoharan2011-12-08 19:29:26 +0100
committerJohn W. Linville2011-12-13 21:31:04 +0100
commit4a38994f1c43351b4aaca01ae93bd574f5b5075e (patch)
treece4120cddb527315be41ceeace4ad5568e4faf07 /net/wireless
parentath9k: Reconfigure tx power on regulatory update (diff)
downloadkernel-qcow2-linux-4a38994f1c43351b4aaca01ae93bd574f5b5075e.tar.gz
kernel-qcow2-linux-4a38994f1c43351b4aaca01ae93bd574f5b5075e.tar.xz
kernel-qcow2-linux-4a38994f1c43351b4aaca01ae93bd574f5b5075e.zip
cfg80211: notify core hints that helps to restore regd settings
Regulatory updates set by CORE are ignored for custom regulatory cards. Let us notify the changes to the driver, as some drivers uses core hint to restore its orig_* reg domain setting. Cc: Paul Stewart <pstew@google.com> Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless')
-rw-r--r--net/wireless/reg.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 70b171a52aea..2f5b0505c95d 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -1163,9 +1163,21 @@ void regulatory_update(struct wiphy *wiphy,
static void update_all_wiphy_regulatory(enum nl80211_reg_initiator initiator)
{
struct cfg80211_registered_device *rdev;
+ struct wiphy *wiphy;
- list_for_each_entry(rdev, &cfg80211_rdev_list, list)
- wiphy_update_regulatory(&rdev->wiphy, initiator);
+ list_for_each_entry(rdev, &cfg80211_rdev_list, list) {
+ wiphy = &rdev->wiphy;
+ wiphy_update_regulatory(wiphy, initiator);
+ /*
+ * Regulatory updates set by CORE are ignored for custom
+ * regulatory cards. Let us notify the changes to the driver,
+ * as some drivers used this to restore its orig_* reg domain.
+ */
+ if (initiator == NL80211_REGDOM_SET_BY_CORE &&
+ wiphy->flags & WIPHY_FLAG_CUSTOM_REGULATORY &&
+ wiphy->reg_notifier)
+ wiphy->reg_notifier(wiphy, last_request);
+ }
}
static void handle_channel_custom(struct wiphy *wiphy,