瀏覽代碼

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>
Rajkumar Manoharan 13 年之前
父節點
當前提交
4a38994f1c
共有 1 個文件被更改,包括 14 次插入2 次删除
  1. 14 2
      net/wireless/reg.c

+ 14 - 2
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)
 static void update_all_wiphy_regulatory(enum nl80211_reg_initiator initiator)
 {
 {
 	struct cfg80211_registered_device *rdev;
 	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,
 static void handle_channel_custom(struct wiphy *wiphy,