forked from Minki/linux
wl1251: fix bssid handling
bssid needs to be copied first in wl1251_op_bss_info_changed(), otherwise templates will have incorrect bssid and power save will not work correctly. Signed-off-by: Kalle Valo <kalle.valo@nokia.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
e84217a9fc
commit
de8df1ea48
@ -1110,6 +1110,21 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
if (changed & BSS_CHANGED_BSSID) {
|
||||
memcpy(wl->bssid, bss_conf->bssid, ETH_ALEN);
|
||||
|
||||
ret = wl1251_build_null_data(wl);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
if (wl->bss_type != BSS_TYPE_IBSS) {
|
||||
ret = wl1251_join(wl, wl->bss_type, wl->channel,
|
||||
wl->beacon_int, wl->dtim_period);
|
||||
if (ret < 0)
|
||||
goto out_sleep;
|
||||
}
|
||||
}
|
||||
|
||||
if (changed & BSS_CHANGED_ASSOC) {
|
||||
if (bss_conf->assoc) {
|
||||
wl->beacon_int = bss_conf->beacon_int;
|
||||
@ -1169,21 +1184,6 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
|
||||
}
|
||||
}
|
||||
|
||||
if (changed & BSS_CHANGED_BSSID) {
|
||||
memcpy(wl->bssid, bss_conf->bssid, ETH_ALEN);
|
||||
|
||||
ret = wl1251_build_null_data(wl);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
if (wl->bss_type != BSS_TYPE_IBSS) {
|
||||
ret = wl1251_join(wl, wl->bss_type, wl->channel,
|
||||
wl->beacon_int, wl->dtim_period);
|
||||
if (ret < 0)
|
||||
goto out_sleep;
|
||||
}
|
||||
}
|
||||
|
||||
if (changed & BSS_CHANGED_BEACON) {
|
||||
beacon = ieee80211_beacon_get(hw, vif);
|
||||
ret = wl1251_cmd_template_set(wl, CMD_BEACON, beacon->data,
|
||||
|
Loading…
Reference in New Issue
Block a user