diff options
author | John W. Linville <linville@tuxdriver.com> | 2014-03-04 13:05:12 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-03-04 13:05:12 -0500 |
commit | f3b6a488a670f1be2666ab97e31dcfc0b1648884 (patch) | |
tree | d8d2431f21d4371c907dec075926e86840e86d1e /net/wireless | |
parent | c14c5d99a453af6b86f15aca8fe9005b2b8f3b26 (diff) | |
parent | adb07df1e039e9fe43e66aeea8b4771f83659dbb (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.c | 12 |
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, | |||
2492 | int set_regdom(const struct ieee80211_regdomain *rd) | 2492 | int 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; |