aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/ieee80211.c13
-rw-r--r--net/mac80211/ieee80211_sta.c6
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
378static 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
378static int ieee80211_open(struct net_device *dev) 390static 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