diff options
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r-- | net/mac80211/mlme.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 37ea04f5bab9..dbc8cf454bc0 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -564,15 +564,14 @@ static void ieee80211_set_associated(struct net_device *dev, | |||
564 | sdata->bss_conf.ht_bss_conf = &conf->ht_bss_conf; | 564 | sdata->bss_conf.ht_bss_conf = &conf->ht_bss_conf; |
565 | } | 565 | } |
566 | 566 | ||
567 | netif_carrier_on(dev); | ||
568 | ifsta->flags |= IEEE80211_STA_PREV_BSSID_SET; | 567 | ifsta->flags |= IEEE80211_STA_PREV_BSSID_SET; |
569 | memcpy(ifsta->prev_bssid, sdata->u.sta.bssid, ETH_ALEN); | 568 | memcpy(ifsta->prev_bssid, sdata->u.sta.bssid, ETH_ALEN); |
570 | memcpy(wrqu.ap_addr.sa_data, sdata->u.sta.bssid, ETH_ALEN); | 569 | memcpy(wrqu.ap_addr.sa_data, sdata->u.sta.bssid, ETH_ALEN); |
571 | ieee80211_sta_send_associnfo(dev, ifsta); | 570 | ieee80211_sta_send_associnfo(dev, ifsta); |
572 | } else { | 571 | } else { |
572 | netif_carrier_off(dev); | ||
573 | ieee80211_sta_tear_down_BA_sessions(dev, ifsta->bssid); | 573 | ieee80211_sta_tear_down_BA_sessions(dev, ifsta->bssid); |
574 | ifsta->flags &= ~IEEE80211_STA_ASSOCIATED; | 574 | ifsta->flags &= ~IEEE80211_STA_ASSOCIATED; |
575 | netif_carrier_off(dev); | ||
576 | changed |= ieee80211_reset_erp_info(dev); | 575 | changed |= ieee80211_reset_erp_info(dev); |
577 | 576 | ||
578 | sdata->bss_conf.assoc_ht = 0; | 577 | sdata->bss_conf.assoc_ht = 0; |
@@ -586,6 +585,10 @@ static void ieee80211_set_associated(struct net_device *dev, | |||
586 | 585 | ||
587 | sdata->bss_conf.assoc = assoc; | 586 | sdata->bss_conf.assoc = assoc; |
588 | ieee80211_bss_info_change_notify(sdata, changed); | 587 | ieee80211_bss_info_change_notify(sdata, changed); |
588 | |||
589 | if (assoc) | ||
590 | netif_carrier_on(dev); | ||
591 | |||
589 | wrqu.ap_addr.sa_family = ARPHRD_ETHER; | 592 | wrqu.ap_addr.sa_family = ARPHRD_ETHER; |
590 | wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL); | 593 | wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL); |
591 | } | 594 | } |
@@ -3694,8 +3697,10 @@ static int ieee80211_sta_find_ibss(struct net_device *dev, | |||
3694 | spin_unlock_bh(&local->sta_bss_lock); | 3697 | spin_unlock_bh(&local->sta_bss_lock); |
3695 | 3698 | ||
3696 | #ifdef CONFIG_MAC80211_IBSS_DEBUG | 3699 | #ifdef CONFIG_MAC80211_IBSS_DEBUG |
3697 | printk(KERN_DEBUG " sta_find_ibss: selected %s current " | 3700 | if (found) |
3698 | "%s\n", print_mac(mac, bssid), print_mac(mac2, ifsta->bssid)); | 3701 | printk(KERN_DEBUG " sta_find_ibss: selected %s current " |
3702 | "%s\n", print_mac(mac, bssid), | ||
3703 | print_mac(mac2, ifsta->bssid)); | ||
3699 | #endif /* CONFIG_MAC80211_IBSS_DEBUG */ | 3704 | #endif /* CONFIG_MAC80211_IBSS_DEBUG */ |
3700 | if (found && memcmp(ifsta->bssid, bssid, ETH_ALEN) != 0 && | 3705 | if (found && memcmp(ifsta->bssid, bssid, ETH_ALEN) != 0 && |
3701 | (bss = ieee80211_rx_bss_get(dev, bssid, | 3706 | (bss = ieee80211_rx_bss_get(dev, bssid, |