diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/ti/wlcore/main.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c index ef1fd0435947..87fa426c46f2 100644 --- a/drivers/net/wireless/ti/wlcore/main.c +++ b/drivers/net/wireless/ti/wlcore/main.c | |||
@@ -2553,7 +2553,8 @@ static int wlcore_set_ssid(struct wl1271 *wl, struct wl12xx_vif *wlvif) | |||
2553 | } | 2553 | } |
2554 | 2554 | ||
2555 | static int wlcore_set_assoc(struct wl1271 *wl, struct wl12xx_vif *wlvif, | 2555 | static int wlcore_set_assoc(struct wl1271 *wl, struct wl12xx_vif *wlvif, |
2556 | struct ieee80211_bss_conf *bss_conf) | 2556 | struct ieee80211_bss_conf *bss_conf, |
2557 | u32 sta_rate_set) | ||
2557 | { | 2558 | { |
2558 | int ieoffset; | 2559 | int ieoffset; |
2559 | int ret; | 2560 | int ret; |
@@ -2619,6 +2620,18 @@ static int wlcore_set_assoc(struct wl1271 *wl, struct wl12xx_vif *wlvif, | |||
2619 | * setting is off (ACTIVE), so sync the fw with the correct value. | 2620 | * setting is off (ACTIVE), so sync the fw with the correct value. |
2620 | */ | 2621 | */ |
2621 | ret = wl1271_ps_set_mode(wl, wlvif, STATION_ACTIVE_MODE); | 2622 | ret = wl1271_ps_set_mode(wl, wlvif, STATION_ACTIVE_MODE); |
2623 | if (ret < 0) | ||
2624 | return ret; | ||
2625 | |||
2626 | if (sta_rate_set) { | ||
2627 | wlvif->rate_set = | ||
2628 | wl1271_tx_enabled_rates_get(wl, | ||
2629 | sta_rate_set, | ||
2630 | wlvif->band); | ||
2631 | ret = wl1271_acx_sta_rate_policies(wl, wlvif); | ||
2632 | if (ret < 0) | ||
2633 | return ret; | ||
2634 | } | ||
2622 | 2635 | ||
2623 | return ret; | 2636 | return ret; |
2624 | } | 2637 | } |
@@ -3912,7 +3925,8 @@ static void wl1271_bss_info_changed_sta(struct wl1271 *wl, | |||
3912 | wlvif->rssi_thold = bss_conf->cqm_rssi_thold; | 3925 | wlvif->rssi_thold = bss_conf->cqm_rssi_thold; |
3913 | } | 3926 | } |
3914 | 3927 | ||
3915 | if (changed & (BSS_CHANGED_BSSID | BSS_CHANGED_HT)) { | 3928 | if (changed & (BSS_CHANGED_BSSID | BSS_CHANGED_HT | |
3929 | BSS_CHANGED_ASSOC)) { | ||
3916 | rcu_read_lock(); | 3930 | rcu_read_lock(); |
3917 | sta = ieee80211_find_sta(vif, bss_conf->bssid); | 3931 | sta = ieee80211_find_sta(vif, bss_conf->bssid); |
3918 | if (!sta) | 3932 | if (!sta) |
@@ -3982,7 +3996,8 @@ sta_not_found: | |||
3982 | 3996 | ||
3983 | if (changed & BSS_CHANGED_ASSOC) { | 3997 | if (changed & BSS_CHANGED_ASSOC) { |
3984 | if (bss_conf->assoc) { | 3998 | if (bss_conf->assoc) { |
3985 | ret = wlcore_set_assoc(wl, wlvif, bss_conf); | 3999 | ret = wlcore_set_assoc(wl, wlvif, bss_conf, |
4000 | sta_rate_set); | ||
3986 | if (ret < 0) | 4001 | if (ret < 0) |
3987 | goto out; | 4002 | goto out; |
3988 | 4003 | ||