|
@@ -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,
|