diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/mac80211/mlme.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 9f6464f3e05f..6044c6d87e4c 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -3503,6 +3503,14 @@ void ieee80211_sta_quiesce(struct ieee80211_sub_if_data *sdata) | |||
3503 | struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; | 3503 | struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; |
3504 | 3504 | ||
3505 | /* | 3505 | /* |
3506 | * Stop timers before deleting work items, as timers | ||
3507 | * could race and re-add the work-items. They will be | ||
3508 | * re-established on connection. | ||
3509 | */ | ||
3510 | del_timer_sync(&ifmgd->conn_mon_timer); | ||
3511 | del_timer_sync(&ifmgd->bcn_mon_timer); | ||
3512 | |||
3513 | /* | ||
3506 | * we need to use atomic bitops for the running bits | 3514 | * we need to use atomic bitops for the running bits |
3507 | * only because both timers might fire at the same | 3515 | * only because both timers might fire at the same |
3508 | * time -- the code here is properly synchronised. | 3516 | * time -- the code here is properly synchronised. |
@@ -3516,13 +3524,9 @@ void ieee80211_sta_quiesce(struct ieee80211_sub_if_data *sdata) | |||
3516 | if (del_timer_sync(&ifmgd->timer)) | 3524 | if (del_timer_sync(&ifmgd->timer)) |
3517 | set_bit(TMR_RUNNING_TIMER, &ifmgd->timers_running); | 3525 | set_bit(TMR_RUNNING_TIMER, &ifmgd->timers_running); |
3518 | 3526 | ||
3519 | cancel_work_sync(&ifmgd->chswitch_work); | ||
3520 | if (del_timer_sync(&ifmgd->chswitch_timer)) | 3527 | if (del_timer_sync(&ifmgd->chswitch_timer)) |
3521 | set_bit(TMR_RUNNING_CHANSW, &ifmgd->timers_running); | 3528 | set_bit(TMR_RUNNING_CHANSW, &ifmgd->timers_running); |
3522 | 3529 | cancel_work_sync(&ifmgd->chswitch_work); | |
3523 | /* these will just be re-established on connection */ | ||
3524 | del_timer_sync(&ifmgd->conn_mon_timer); | ||
3525 | del_timer_sync(&ifmgd->bcn_mon_timer); | ||
3526 | } | 3530 | } |
3527 | 3531 | ||
3528 | void ieee80211_sta_restart(struct ieee80211_sub_if_data *sdata) | 3532 | void ieee80211_sta_restart(struct ieee80211_sub_if_data *sdata) |