diff options
author | David S. Miller <davem@davemloft.net> | 2014-03-05 20:32:02 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-03-05 20:32:02 -0500 |
commit | 67ddc87f162e2d0e29db2b6b21c5a3fbcb8be206 (patch) | |
tree | c83ac73e3d569156d4b7f3dab3e7e27e0054cd0d /net/wireless | |
parent | 6092c79fd00ce48ee8698955ea6419cc5cd65641 (diff) | |
parent | c3bebc71c4bcdafa24b506adf0c1de3c1f77e2e0 (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.c | 12 |
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, | |||
2481 | int set_regdom(const struct ieee80211_regdomain *rd) | 2481 | int 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; |