aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2014-03-04 13:05:12 -0500
committerJohn W. Linville <linville@tuxdriver.com>2014-03-04 13:05:12 -0500
commitf3b6a488a670f1be2666ab97e31dcfc0b1648884 (patch)
treed8d2431f21d4371c907dec075926e86840e86d1e /net/wireless
parentc14c5d99a453af6b86f15aca8fe9005b2b8f3b26 (diff)
parentadb07df1e039e9fe43e66aeea8b4771f83659dbb (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
Conflicts: drivers/net/wireless/ath/ath9k/recv.c drivers/net/wireless/mwifiex/pcie.c
Diffstat (limited to 'net/wireless')
-rw-r--r--net/wireless/reg.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 6b6f33ad78f2..90b82e08ae69 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -1798,7 +1798,7 @@ static void reg_process_hint(struct regulatory_request *reg_request)
1798 return; 1798 return;
1799 case NL80211_REGDOM_SET_BY_USER: 1799 case NL80211_REGDOM_SET_BY_USER:
1800 treatment = reg_process_hint_user(reg_request); 1800 treatment = reg_process_hint_user(reg_request);
1801 if (treatment == REG_REQ_OK || 1801 if (treatment == REG_REQ_IGNORE ||
1802 treatment == REG_REQ_ALREADY_SET) 1802 treatment == REG_REQ_ALREADY_SET)
1803 return; 1803 return;
1804 queue_delayed_work(system_power_efficient_wq, 1804 queue_delayed_work(system_power_efficient_wq,
@@ -2492,6 +2492,7 @@ static int reg_set_rd_country_ie(const struct ieee80211_regdomain *rd,
2492int set_regdom(const struct ieee80211_regdomain *rd) 2492int set_regdom(const struct ieee80211_regdomain *rd)
2493{ 2493{
2494 struct regulatory_request *lr; 2494 struct regulatory_request *lr;
2495 bool user_reset = false;
2495 int r; 2496 int r;
2496 2497
2497 if (!reg_is_valid_request(rd->alpha2)) { 2498 if (!reg_is_valid_request(rd->alpha2)) {
@@ -2508,6 +2509,7 @@ int set_regdom(const struct ieee80211_regdomain *rd)
2508 break; 2509 break;
2509 case NL80211_REGDOM_SET_BY_USER: 2510 case NL80211_REGDOM_SET_BY_USER:
2510 r = reg_set_rd_user(rd, lr); 2511 r = reg_set_rd_user(rd, lr);
2512 user_reset = true;
2511 break; 2513 break;
2512 case NL80211_REGDOM_SET_BY_DRIVER: 2514 case NL80211_REGDOM_SET_BY_DRIVER:
2513 r = reg_set_rd_driver(rd, lr); 2515 r = reg_set_rd_driver(rd, lr);
@@ -2521,8 +2523,14 @@ int set_regdom(const struct ieee80211_regdomain *rd)
2521 } 2523 }
2522 2524
2523 if (r) { 2525 if (r) {
2524 if (r == -EALREADY) 2526 switch (r) {
2527 case -EALREADY:
2525 reg_set_request_processed(); 2528 reg_set_request_processed();
2529 break;
2530 default:
2531 /* Back to world regulatory in case of errors */
2532 restore_regulatory_settings(user_reset);
2533 }
2526 2534
2527 kfree(rd); 2535 kfree(rd);
2528 return r; 2536 return r;