|
@@ -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,
|