diff options
-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 130aad2de108..cedd73a0c875 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) | |||
439 | return; | 439 | return; |
440 | } | 440 | } |
441 | 441 | ||
442 | list_del(&(*sta)->list); | ||
443 | |||
444 | if ((*sta)->flags & WLAN_STA_PS) { | ||
445 | (*sta)->flags &= ~WLAN_STA_PS; | ||
446 | if (sdata->bss) | ||
447 | atomic_dec(&sdata->bss->num_sta_ps); | ||
448 | __sta_info_clear_tim_bit(sdata->bss, *sta); | ||
449 | } | ||
450 | |||
451 | local->num_sta--; | ||
452 | |||
453 | if (local->ops->sta_notify) { | ||
454 | if (sdata->vif.type == IEEE80211_IF_TYPE_VLAN) | ||
455 | sdata = sdata->u.vlan.ap; | ||
456 | |||
457 | local->ops->sta_notify(local_to_hw(local), &sdata->vif, | ||
458 | STA_NOTIFY_REMOVE, (*sta)->addr); | ||
459 | } | ||
460 | |||
461 | if (ieee80211_vif_is_mesh(&sdata->vif)) { | ||
462 | mesh_accept_plinks_update(sdata); | ||
463 | #ifdef CONFIG_MAC80211_MESH | ||
464 | del_timer(&(*sta)->plink_timer); | ||
465 | #endif | ||
466 | } | ||
467 | |||
468 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG | ||
469 | printk(KERN_DEBUG "%s: Removed STA %s\n", | ||
470 | wiphy_name(local->hw.wiphy), print_mac(mbuf, (*sta)->addr)); | ||
471 | #endif /* CONFIG_MAC80211_VERBOSE_DEBUG */ | ||
472 | |||
442 | /* | 473 | /* |
443 | * Also pull caller's reference if the STA is pinned by the | 474 | * Finally, pull caller's reference if the STA is pinned by the |
444 | * task that is adding the debugfs entries. In that case, we | 475 | * task that is adding the debugfs entries. In that case, we |
445 | * leave the STA "to be freed". | 476 | * leave the STA "to be freed". |
446 | * | 477 | * |
@@ -472,37 +503,6 @@ void __sta_info_unlink(struct sta_info **sta) | |||
472 | *sta = NULL; | 503 | *sta = NULL; |
473 | return; | 504 | return; |
474 | } | 505 | } |
475 | |||
476 | list_del(&(*sta)->list); | ||
477 | |||
478 | if ((*sta)->flags & WLAN_STA_PS) { | ||
479 | (*sta)->flags &= ~WLAN_STA_PS; | ||
480 | if (sdata->bss) | ||
481 | atomic_dec(&sdata->bss->num_sta_ps); | ||
482 | __sta_info_clear_tim_bit(sdata->bss, *sta); | ||
483 | } | ||
484 | |||
485 | local->num_sta--; | ||
486 | |||
487 | if (local->ops->sta_notify) { | ||
488 | if (sdata->vif.type == IEEE80211_IF_TYPE_VLAN) | ||
489 | sdata = sdata->u.vlan.ap; | ||
490 | |||
491 | local->ops->sta_notify(local_to_hw(local), &sdata->vif, | ||
492 | STA_NOTIFY_REMOVE, (*sta)->addr); | ||
493 | } | ||
494 | |||
495 | if (ieee80211_vif_is_mesh(&sdata->vif)) { | ||
496 | mesh_accept_plinks_update(sdata); | ||
497 | #ifdef CONFIG_MAC80211_MESH | ||
498 | del_timer(&(*sta)->plink_timer); | ||
499 | #endif | ||
500 | } | ||
501 | |||
502 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG | ||
503 | printk(KERN_DEBUG "%s: Removed STA %s\n", | ||
504 | wiphy_name(local->hw.wiphy), print_mac(mbuf, (*sta)->addr)); | ||
505 | #endif /* CONFIG_MAC80211_VERBOSE_DEBUG */ | ||
506 | } | 506 | } |
507 | 507 | ||
508 | void sta_info_unlink(struct sta_info **sta) | 508 | void sta_info_unlink(struct sta_info **sta) |