diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/mac80211/ieee80211.c | 13 | ||||
-rw-r--r-- | net/mac80211/ieee80211_sta.c | 6 |
2 files changed, 17 insertions, 2 deletions
diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c index 566bdca32b86..f811a260ee9c 100644 --- a/net/mac80211/ieee80211.c +++ b/net/mac80211/ieee80211.c | |||
@@ -375,6 +375,18 @@ static void ieee80211_start_hard_monitor(struct ieee80211_local *local) | |||
375 | } | 375 | } |
376 | } | 376 | } |
377 | 377 | ||
378 | static void ieee80211_if_open(struct net_device *dev) | ||
379 | { | ||
380 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); | ||
381 | |||
382 | switch (sdata->type) { | ||
383 | case IEEE80211_IF_TYPE_STA: | ||
384 | case IEEE80211_IF_TYPE_IBSS: | ||
385 | sdata->u.sta.prev_bssid_set = 0; | ||
386 | break; | ||
387 | } | ||
388 | } | ||
389 | |||
378 | static int ieee80211_open(struct net_device *dev) | 390 | static int ieee80211_open(struct net_device *dev) |
379 | { | 391 | { |
380 | struct ieee80211_sub_if_data *sdata, *nsdata; | 392 | struct ieee80211_sub_if_data *sdata, *nsdata; |
@@ -408,6 +420,7 @@ static int ieee80211_open(struct net_device *dev) | |||
408 | local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP; | 420 | local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP; |
409 | return 0; | 421 | return 0; |
410 | } | 422 | } |
423 | ieee80211_if_open(dev); | ||
411 | ieee80211_start_soft_monitor(local); | 424 | ieee80211_start_soft_monitor(local); |
412 | 425 | ||
413 | conf.if_id = dev->ifindex; | 426 | conf.if_id = dev->ifindex; |
diff --git a/net/mac80211/ieee80211_sta.c b/net/mac80211/ieee80211_sta.c index 9aee1abae127..8e6548974a9f 100644 --- a/net/mac80211/ieee80211_sta.c +++ b/net/mac80211/ieee80211_sta.c | |||
@@ -1187,8 +1187,10 @@ static void ieee80211_rx_mgmt_assoc_resp(struct net_device *dev, | |||
1187 | if (status_code != WLAN_STATUS_SUCCESS) { | 1187 | if (status_code != WLAN_STATUS_SUCCESS) { |
1188 | printk(KERN_DEBUG "%s: AP denied association (code=%d)\n", | 1188 | printk(KERN_DEBUG "%s: AP denied association (code=%d)\n", |
1189 | dev->name, status_code); | 1189 | dev->name, status_code); |
1190 | if (status_code == WLAN_STATUS_REASSOC_NO_ASSOC) | 1190 | /* if this was a reassociation, ensure we try a "full" |
1191 | ifsta->prev_bssid_set = 0; | 1191 | * association next time. This works around some broken APs |
1192 | * which do not correctly reject reassociation requests. */ | ||
1193 | ifsta->prev_bssid_set = 0; | ||
1192 | return; | 1194 | return; |
1193 | } | 1195 | } |
1194 | 1196 | ||