diff options
Diffstat (limited to 'net/mac80211/sta_info.c')
| -rw-r--r-- | net/mac80211/sta_info.c | 64 | 
1 files changed, 32 insertions, 32 deletions
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c index 130aad2de10..cedd73a0c87 100644 --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c @@ -439,8 +439,39 @@ void __sta_info_unlink(struct sta_info **sta)  		return;  	} +	list_del(&(*sta)->list); + +	if ((*sta)->flags & WLAN_STA_PS) { +		(*sta)->flags &= ~WLAN_STA_PS; +		if (sdata->bss) +			atomic_dec(&sdata->bss->num_sta_ps); +		__sta_info_clear_tim_bit(sdata->bss, *sta); +	} + +	local->num_sta--; + +	if (local->ops->sta_notify) { +		if (sdata->vif.type == IEEE80211_IF_TYPE_VLAN) +			sdata = sdata->u.vlan.ap; + +		local->ops->sta_notify(local_to_hw(local), &sdata->vif, +				       STA_NOTIFY_REMOVE, (*sta)->addr); +	} + +	if (ieee80211_vif_is_mesh(&sdata->vif)) { +		mesh_accept_plinks_update(sdata); +#ifdef CONFIG_MAC80211_MESH +		del_timer(&(*sta)->plink_timer); +#endif +	} + +#ifdef CONFIG_MAC80211_VERBOSE_DEBUG +	printk(KERN_DEBUG "%s: Removed STA %s\n", +	       wiphy_name(local->hw.wiphy), print_mac(mbuf, (*sta)->addr)); +#endif /* CONFIG_MAC80211_VERBOSE_DEBUG */ +  	/* -	 * Also pull caller's reference if the STA is pinned by the +	 * Finally, pull caller's reference if the STA is pinned by the  	 * task that is adding the debugfs entries. In that case, we  	 * leave the STA "to be freed".  	 * @@ -472,37 +503,6 @@ void __sta_info_unlink(struct sta_info **sta)  		*sta = NULL;  		return;  	} - -	list_del(&(*sta)->list); - -	if ((*sta)->flags & WLAN_STA_PS) { -		(*sta)->flags &= ~WLAN_STA_PS; -		if (sdata->bss) -			atomic_dec(&sdata->bss->num_sta_ps); -		__sta_info_clear_tim_bit(sdata->bss, *sta); -	} - -	local->num_sta--; - -	if (local->ops->sta_notify) { -		if (sdata->vif.type == IEEE80211_IF_TYPE_VLAN) -			sdata = sdata->u.vlan.ap; - -		local->ops->sta_notify(local_to_hw(local), &sdata->vif, -				       STA_NOTIFY_REMOVE, (*sta)->addr); -	} - -	if (ieee80211_vif_is_mesh(&sdata->vif)) { -		mesh_accept_plinks_update(sdata); -#ifdef CONFIG_MAC80211_MESH -		del_timer(&(*sta)->plink_timer); -#endif -	} - -#ifdef CONFIG_MAC80211_VERBOSE_DEBUG -	printk(KERN_DEBUG "%s: Removed STA %s\n", -	       wiphy_name(local->hw.wiphy), print_mac(mbuf, (*sta)->addr)); -#endif /* CONFIG_MAC80211_VERBOSE_DEBUG */  }  void sta_info_unlink(struct sta_info **sta)  |