diff options
-rw-r--r-- | drivers/net/wireless/wl12xx/wl1251_main.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/wireless/wl12xx/wl1251_main.c b/drivers/net/wireless/wl12xx/wl1251_main.c index 0417745d7fc4..24050d56a9de 100644 --- a/drivers/net/wireless/wl12xx/wl1251_main.c +++ b/drivers/net/wireless/wl12xx/wl1251_main.c | |||
@@ -645,20 +645,25 @@ static int wl1251_op_config(struct ieee80211_hw *hw, u32 changed) | |||
645 | * through the bss_info_changed() hook. | 645 | * through the bss_info_changed() hook. |
646 | */ | 646 | */ |
647 | ret = wl1251_ps_set_mode(wl, STATION_POWER_SAVE_MODE); | 647 | ret = wl1251_ps_set_mode(wl, STATION_POWER_SAVE_MODE); |
648 | if (ret < 0) | ||
649 | goto out_sleep; | ||
648 | } else if (!(conf->flags & IEEE80211_CONF_PS) && | 650 | } else if (!(conf->flags & IEEE80211_CONF_PS) && |
649 | wl->psm_requested) { | 651 | wl->psm_requested) { |
650 | wl1251_debug(DEBUG_PSM, "psm disabled"); | 652 | wl1251_debug(DEBUG_PSM, "psm disabled"); |
651 | 653 | ||
652 | wl->psm_requested = false; | 654 | wl->psm_requested = false; |
653 | 655 | ||
654 | if (wl->psm) | 656 | if (wl->psm) { |
655 | ret = wl1251_ps_set_mode(wl, STATION_ACTIVE_MODE); | 657 | ret = wl1251_ps_set_mode(wl, STATION_ACTIVE_MODE); |
658 | if (ret < 0) | ||
659 | goto out_sleep; | ||
660 | } | ||
656 | } | 661 | } |
657 | 662 | ||
658 | if (conf->power_level != wl->power_level) { | 663 | if (conf->power_level != wl->power_level) { |
659 | ret = wl1251_acx_tx_power(wl, conf->power_level); | 664 | ret = wl1251_acx_tx_power(wl, conf->power_level); |
660 | if (ret < 0) | 665 | if (ret < 0) |
661 | goto out; | 666 | goto out_sleep; |
662 | 667 | ||
663 | wl->power_level = conf->power_level; | 668 | wl->power_level = conf->power_level; |
664 | } | 669 | } |