aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-03-05 20:32:02 -0500
committerDavid S. Miller <davem@davemloft.net>2014-03-05 20:32:02 -0500
commit67ddc87f162e2d0e29db2b6b21c5a3fbcb8be206 (patch)
treec83ac73e3d569156d4b7f3dab3e7e27e0054cd0d /net/wireless
parent6092c79fd00ce48ee8698955ea6419cc5cd65641 (diff)
parentc3bebc71c4bcdafa24b506adf0c1de3c1f77e2e0 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/wireless/ath/ath9k/recv.c drivers/net/wireless/mwifiex/pcie.c net/ipv6/sit.c The SIT driver conflict consists of a bug fix being done by hand in 'net' (missing u64_stats_init()) whilst in 'net-next' a helper was created (netdev_alloc_pcpu_stats()) which takes care of this. The two wireless conflicts were overlapping changes. Signed-off-by: David S. Miller <davem@davemloft.net>
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 27c5253e7a61..24c257cd706b 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -1788,7 +1788,7 @@ static void reg_process_hint(struct regulatory_request *reg_request)
1788 return; 1788 return;
1789 case NL80211_REGDOM_SET_BY_USER: 1789 case NL80211_REGDOM_SET_BY_USER:
1790 treatment = reg_process_hint_user(reg_request); 1790 treatment = reg_process_hint_user(reg_request);
1791 if (treatment == REG_REQ_OK || 1791 if (treatment == REG_REQ_IGNORE ||
1792 treatment == REG_REQ_ALREADY_SET) 1792 treatment == REG_REQ_ALREADY_SET)
1793 return; 1793 return;
1794 queue_delayed_work(system_power_efficient_wq, 1794 queue_delayed_work(system_power_efficient_wq,
@@ -2481,6 +2481,7 @@ static int reg_set_rd_country_ie(const struct ieee80211_regdomain *rd,
2481int set_regdom(const struct ieee80211_regdomain *rd) 2481int set_regdom(const struct ieee80211_regdomain *rd)
2482{ 2482{
2483 struct regulatory_request *lr; 2483 struct regulatory_request *lr;
2484 bool user_reset = false;
2484 int r; 2485 int r;
2485 2486
2486 if (!reg_is_valid_request(rd->alpha2)) { 2487 if (!reg_is_valid_request(rd->alpha2)) {
@@ -2497,6 +2498,7 @@ int set_regdom(const struct ieee80211_regdomain *rd)
2497 break; 2498 break;
2498 case NL80211_REGDOM_SET_BY_USER: 2499 case NL80211_REGDOM_SET_BY_USER:
2499 r = reg_set_rd_user(rd, lr); 2500 r = reg_set_rd_user(rd, lr);
2501 user_reset = true;
2500 break; 2502 break;
2501 case NL80211_REGDOM_SET_BY_DRIVER: 2503 case NL80211_REGDOM_SET_BY_DRIVER:
2502 r = reg_set_rd_driver(rd, lr); 2504 r = reg_set_rd_driver(rd, lr);
@@ -2510,8 +2512,14 @@ int set_regdom(const struct ieee80211_regdomain *rd)
2510 } 2512 }
2511 2513
2512 if (r) { 2514 if (r) {
2513 if (r == -EALREADY) 2515 switch (r) {
2516 case -EALREADY:
2514 reg_set_request_processed(); 2517 reg_set_request_processed();
2518 break;
2519 default:
2520 /* Back to world regulatory in case of errors */
2521 restore_regulatory_settings(user_reset);
2522 }
2515 2523
2516 kfree(rd); 2524 kfree(rd);
2517 return r; 2525 return r;