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 @@ -484,18 +484,21 @@ static void _rtl_init_deferred_work(struct ieee80211_hw *hw)
484
484
485
485
}
486
486
487
- void rtl_deinit_deferred_work (struct ieee80211_hw * hw )
487
+ void rtl_deinit_deferred_work (struct ieee80211_hw * hw , bool ips_wq )
488
488
{
489
489
struct rtl_priv * rtlpriv = rtl_priv (hw );
490
490
491
491
del_timer_sync (& rtlpriv -> works .watchdog_timer );
492
492
493
- cancel_delayed_work (& rtlpriv -> works .watchdog_wq );
494
- cancel_delayed_work (& rtlpriv -> works .ips_nic_off_wq );
495
- cancel_delayed_work (& rtlpriv -> works .ps_work );
496
- cancel_delayed_work (& rtlpriv -> works .ps_rfon_wq );
497
- cancel_delayed_work (& rtlpriv -> works .fwevt_wq );
498
- cancel_delayed_work (& rtlpriv -> works .c2hcmd_wq );
493
+ cancel_delayed_work_sync (& rtlpriv -> works .watchdog_wq );
494
+ if (ips_wq )
495
+ cancel_delayed_work (& rtlpriv -> works .ips_nic_off_wq );
496
+ else
497
+ cancel_delayed_work_sync (& rtlpriv -> works .ips_nic_off_wq );
498
+ cancel_delayed_work_sync (& rtlpriv -> works .ps_work );
499
+ cancel_delayed_work_sync (& rtlpriv -> works .ps_rfon_wq );
500
+ cancel_delayed_work_sync (& rtlpriv -> works .fwevt_wq );
501
+ cancel_delayed_work_sync (& rtlpriv -> works .c2hcmd_wq );
499
502
}
500
503
EXPORT_SYMBOL_GPL (rtl_deinit_deferred_work );
501
504
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 (struct timer_list * t );
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 @@ -2377,7 +2377,7 @@ void rtl_pci_disconnect(struct pci_dev *pdev)
2377
2377
ieee80211_unregister_hw (hw );
2378
2378
rtlmac -> mac80211_registered = 0 ;
2379
2379
} else {
2380
- rtl_deinit_deferred_work (hw );
2380
+ rtl_deinit_deferred_work (hw , false );
2381
2381
rtlpriv -> intf_ops -> adapter_stop (hw );
2382
2382
}
2383
2383
rtlpriv -> cfg -> ops -> disable_interrupt (hw );
Original file line number Diff line number Diff line change @@ -71,7 +71,7 @@ bool rtl_ps_disable_nic(struct ieee80211_hw *hw)
71
71
struct rtl_priv * rtlpriv = rtl_priv (hw );
72
72
73
73
/*<1> Stop all timer */
74
- rtl_deinit_deferred_work (hw );
74
+ rtl_deinit_deferred_work (hw , true );
75
75
76
76
/*<2> Disable Interrupt */
77
77
rtlpriv -> cfg -> ops -> disable_interrupt (hw );
@@ -292,7 +292,7 @@ void rtl_ips_nic_on(struct ieee80211_hw *hw)
292
292
struct rtl_ps_ctl * ppsc = rtl_psc (rtl_priv (hw ));
293
293
enum rf_pwrstate rtstate ;
294
294
295
- cancel_delayed_work (& rtlpriv -> works .ips_nic_off_wq );
295
+ cancel_delayed_work_sync (& rtlpriv -> works .ips_nic_off_wq );
296
296
297
297
mutex_lock (& rtlpriv -> locks .ips_mutex );
298
298
if (ppsc -> inactiveps ) {
Original file line number Diff line number Diff line change @@ -1132,7 +1132,7 @@ void rtl_usb_disconnect(struct usb_interface *intf)
1132
1132
ieee80211_unregister_hw (hw );
1133
1133
rtlmac -> mac80211_registered = 0 ;
1134
1134
} else {
1135
- rtl_deinit_deferred_work (hw );
1135
+ rtl_deinit_deferred_work (hw , false );
1136
1136
rtlpriv -> intf_ops -> adapter_stop (hw );
1137
1137
}
1138
1138
/*deinit rfkill */
You can’t perform that action at this time.
0 commit comments