From: Sachin Ahuja <sahuja@xxxxxxxxxxxxxx> When STA disconnects, cfg80211 restores the regulatory setting to world domain. For the drivers that ignore country ie, cfg80211 should remain in the default country code which is configured at driver load and should do not be restored to world reg domain. Signed-off-by: Sachin Ahuja <sahuja@xxxxxxxxxxxxxx> Signed-off-by: Rajkumar Manoharan <rmanohar@xxxxxxxxxxxxxxxx> --- net/wireless/sme.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/net/wireless/sme.c b/net/wireless/sme.c index 4bc21a2..1319dd1 100644 --- a/net/wireless/sme.c +++ b/net/wireless/sme.c @@ -558,10 +558,33 @@ static bool cfg80211_is_all_idle(void) return is_all_idle; } +static bool cfg80211_is_all_countryie_ignore(void) +{ + struct cfg80211_registered_device *rdev; + struct wireless_dev *wdev; + bool is_all_countryie_ignore = true; + + list_for_each_entry(rdev, &cfg80211_rdev_list, list) { + list_for_each_entry(wdev, &rdev->wdev_list, list) { + wdev_lock(wdev); + if (!(wdev->wiphy->regulatory_flags & + REGULATORY_COUNTRY_IE_IGNORE)) { + is_all_countryie_ignore = false; + wdev_unlock(wdev); + goto out; + } + wdev_unlock(wdev); + } + } +out: + return is_all_countryie_ignore; +} + static void disconnect_work(struct work_struct *work) { rtnl_lock(); - if (cfg80211_is_all_idle()) + if (cfg80211_is_all_idle() && + !cfg80211_is_all_countryie_ignore()) regulatory_hint_disconnect(); rtnl_unlock(); } -- 1.9.2 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html