File tree Expand file tree Collapse file tree 6 files changed +16
-13
lines changed
drivers/net/wireless/realtek/rtlwifi Expand file tree Collapse file tree 6 files changed +16
-13
lines changed Original file line number Diff line number Diff line change @@ -483,18 +483,21 @@ static void _rtl_init_deferred_work(struct ieee80211_hw *hw)
483
483
484
484
}
485
485
486
- void rtl_deinit_deferred_work (struct ieee80211_hw * hw )
486
+ void rtl_deinit_deferred_work (struct ieee80211_hw * hw , bool ips_wq )
487
487
{
488
488
struct rtl_priv * rtlpriv = rtl_priv (hw );
489
489
490
490
del_timer_sync (& rtlpriv -> works .watchdog_timer );
491
491
492
- cancel_delayed_work (& rtlpriv -> works .watchdog_wq );
493
- cancel_delayed_work (& rtlpriv -> works .ips_nic_off_wq );
494
- cancel_delayed_work (& rtlpriv -> works .ps_work );
495
- cancel_delayed_work (& rtlpriv -> works .ps_rfon_wq );
496
- cancel_delayed_work (& rtlpriv -> works .fwevt_wq );
497
- cancel_delayed_work (& rtlpriv -> works .c2hcmd_wq );
492
+ cancel_delayed_work_sync (& rtlpriv -> works .watchdog_wq );
493
+ if (ips_wq )
494
+ cancel_delayed_work (& rtlpriv -> works .ips_nic_off_wq );
495
+ else
496
+ cancel_delayed_work_sync (& rtlpriv -> works .ips_nic_off_wq );
497
+ cancel_delayed_work_sync (& rtlpriv -> works .ps_work );
498
+ cancel_delayed_work_sync (& rtlpriv -> works .ps_rfon_wq );
499
+ cancel_delayed_work_sync (& rtlpriv -> works .fwevt_wq );
500
+ cancel_delayed_work_sync (& rtlpriv -> works .c2hcmd_wq );
498
501
}
499
502
EXPORT_SYMBOL_GPL (rtl_deinit_deferred_work );
500
503
Original file line number Diff line number Diff line change @@ -121,7 +121,7 @@ void rtl_init_rfkill(struct ieee80211_hw *hw);
121
121
void rtl_deinit_rfkill (struct ieee80211_hw * hw );
122
122
123
123
void rtl_watch_dog_timer_callback (unsigned long data );
124
- void rtl_deinit_deferred_work (struct ieee80211_hw * hw );
124
+ void rtl_deinit_deferred_work (struct ieee80211_hw * hw , bool ips_wq );
125
125
126
126
bool rtl_action_proc (struct ieee80211_hw * hw , struct sk_buff * skb , u8 is_tx );
127
127
int rtlwifi_rate_mapping (struct ieee80211_hw * hw , bool isht ,
Original file line number Diff line number Diff line change @@ -196,7 +196,7 @@ static void rtl_op_stop(struct ieee80211_hw *hw)
196
196
/* reset sec info */
197
197
rtl_cam_reset_sec_info (hw );
198
198
199
- rtl_deinit_deferred_work (hw );
199
+ rtl_deinit_deferred_work (hw , false );
200
200
}
201
201
rtlpriv -> intf_ops -> adapter_stop (hw );
202
202
Original file line number Diff line number Diff line change @@ -2359,7 +2359,7 @@ void rtl_pci_disconnect(struct pci_dev *pdev)
2359
2359
ieee80211_unregister_hw (hw );
2360
2360
rtlmac -> mac80211_registered = 0 ;
2361
2361
} else {
2362
- rtl_deinit_deferred_work (hw );
2362
+ rtl_deinit_deferred_work (hw , false );
2363
2363
rtlpriv -> intf_ops -> adapter_stop (hw );
2364
2364
}
2365
2365
rtlpriv -> cfg -> ops -> disable_interrupt (hw );
Original file line number Diff line number Diff line change @@ -66,7 +66,7 @@ bool rtl_ps_disable_nic(struct ieee80211_hw *hw)
66
66
struct rtl_priv * rtlpriv = rtl_priv (hw );
67
67
68
68
/*<1> Stop all timer */
69
- rtl_deinit_deferred_work (hw );
69
+ rtl_deinit_deferred_work (hw , true );
70
70
71
71
/*<2> Disable Interrupt */
72
72
rtlpriv -> cfg -> ops -> disable_interrupt (hw );
@@ -287,7 +287,7 @@ void rtl_ips_nic_on(struct ieee80211_hw *hw)
287
287
struct rtl_ps_ctl * ppsc = rtl_psc (rtl_priv (hw ));
288
288
enum rf_pwrstate rtstate ;
289
289
290
- cancel_delayed_work (& rtlpriv -> works .ips_nic_off_wq );
290
+ cancel_delayed_work_sync (& rtlpriv -> works .ips_nic_off_wq );
291
291
292
292
spin_lock (& rtlpriv -> locks .ips_lock );
293
293
if (ppsc -> inactiveps ) {
Original file line number Diff line number Diff line change @@ -1150,7 +1150,7 @@ void rtl_usb_disconnect(struct usb_interface *intf)
1150
1150
ieee80211_unregister_hw (hw );
1151
1151
rtlmac -> mac80211_registered = 0 ;
1152
1152
} else {
1153
- rtl_deinit_deferred_work (hw );
1153
+ rtl_deinit_deferred_work (hw , false );
1154
1154
rtlpriv -> intf_ops -> adapter_stop (hw );
1155
1155
}
1156
1156
/*deinit rfkill */
You can’t perform that action at this time.
0 commit comments