rtlwifi: Convert timers to use timer_setup()

In preparation for unconditionally passing the struct timer_list pointer to
all timer callbacks, switch to using the new timer_setup() and from_timer()
to pass the timer pointer explicitly.

Cc: Kalle Valo <kvalo@codeaurora.org>
Cc: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Chaoming Li <chaoming_li@realsil.com.cn>
Cc: Ping-Ke Shih <pkshih@realtek.com>
Cc: Arvind Yadav <arvind.yadav.cs@gmail.com>
Cc: Souptick Joarder <jrdr.linux@gmail.com>
Cc: linux-wireless@vger.kernel.org
Cc: netdev@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
Kees Cook 2017-10-24 02:28:29 -07:00 committed by Kalle Valo
parent 5e5c79b2e1
commit 7c51d17c02
9 changed files with 29 additions and 28 deletions

View File

@ -457,10 +457,10 @@ static void _rtl_init_deferred_work(struct ieee80211_hw *hw)
struct rtl_priv *rtlpriv = rtl_priv(hw); struct rtl_priv *rtlpriv = rtl_priv(hw);
/* <1> timer */ /* <1> timer */
setup_timer(&rtlpriv->works.watchdog_timer, timer_setup(&rtlpriv->works.watchdog_timer,
rtl_watch_dog_timer_callback, (unsigned long)hw); rtl_watch_dog_timer_callback, 0);
setup_timer(&rtlpriv->works.dualmac_easyconcurrent_retrytimer, timer_setup(&rtlpriv->works.dualmac_easyconcurrent_retrytimer,
rtl_easy_concurrent_retrytimer_callback, (unsigned long)hw); rtl_easy_concurrent_retrytimer_callback, 0);
/* <2> work queue */ /* <2> work queue */
rtlpriv->works.hw = hw; rtlpriv->works.hw = hw;
rtlpriv->works.rtl_wq = alloc_workqueue("%s", 0, 0, rtlpriv->cfg->name); rtlpriv->works.rtl_wq = alloc_workqueue("%s", 0, 0, rtlpriv->cfg->name);
@ -2057,10 +2057,9 @@ label_lps_done:
rtl_scan_list_expire(hw); rtl_scan_list_expire(hw);
} }
void rtl_watch_dog_timer_callback(unsigned long data) void rtl_watch_dog_timer_callback(struct timer_list *t)
{ {
struct ieee80211_hw *hw = (struct ieee80211_hw *)data; struct rtl_priv *rtlpriv = from_timer(rtlpriv, t, works.watchdog_timer);
struct rtl_priv *rtlpriv = rtl_priv(hw);
queue_delayed_work(rtlpriv->works.rtl_wq, queue_delayed_work(rtlpriv->works.rtl_wq,
&rtlpriv->works.watchdog_wq, 0); &rtlpriv->works.watchdog_wq, 0);
@ -2166,10 +2165,11 @@ void rtl_c2hcmd_wq_callback(void *data)
rtl_c2hcmd_launcher(hw, 1); rtl_c2hcmd_launcher(hw, 1);
} }
void rtl_easy_concurrent_retrytimer_callback(unsigned long data) void rtl_easy_concurrent_retrytimer_callback(struct timer_list *t)
{ {
struct ieee80211_hw *hw = (struct ieee80211_hw *)data; struct rtl_priv *rtlpriv =
struct rtl_priv *rtlpriv = rtl_priv(hw); from_timer(rtlpriv, t, works.dualmac_easyconcurrent_retrytimer);
struct ieee80211_hw *hw = rtlpriv->hw;
struct rtl_priv *buddy_priv = rtlpriv->buddy_priv; struct rtl_priv *buddy_priv = rtlpriv->buddy_priv;
if (buddy_priv == NULL) if (buddy_priv == NULL)

View File

@ -120,7 +120,7 @@ void rtl_init_rx_config(struct ieee80211_hw *hw);
void rtl_init_rfkill(struct ieee80211_hw *hw); void rtl_init_rfkill(struct ieee80211_hw *hw);
void rtl_deinit_rfkill(struct ieee80211_hw *hw); void rtl_deinit_rfkill(struct ieee80211_hw *hw);
void rtl_watch_dog_timer_callback(unsigned long data); void rtl_watch_dog_timer_callback(struct timer_list *t);
void rtl_deinit_deferred_work(struct ieee80211_hw *hw); void rtl_deinit_deferred_work(struct ieee80211_hw *hw);
bool rtl_action_proc(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx); bool rtl_action_proc(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx);
@ -173,7 +173,7 @@ int rtl_send_smps_action(struct ieee80211_hw *hw,
u8 *rtl_find_ie(u8 *data, unsigned int len, u8 ie); u8 *rtl_find_ie(u8 *data, unsigned int len, u8 ie);
void rtl_recognize_peer(struct ieee80211_hw *hw, u8 *data, unsigned int len); void rtl_recognize_peer(struct ieee80211_hw *hw, u8 *data, unsigned int len);
u8 rtl_tid_to_ac(u8 tid); u8 rtl_tid_to_ac(u8 tid);
void rtl_easy_concurrent_retrytimer_callback(unsigned long data); void rtl_easy_concurrent_retrytimer_callback(struct timer_list *t);
extern struct rtl_global_var rtl_global_var; extern struct rtl_global_var rtl_global_var;
void rtl_phy_scan_operation_backup(struct ieee80211_hw *hw, u8 operation); void rtl_phy_scan_operation_backup(struct ieee80211_hw *hw, u8 operation);

View File

@ -160,7 +160,7 @@ static int rtl_op_start(struct ieee80211_hw *hw)
mutex_lock(&rtlpriv->locks.conf_mutex); mutex_lock(&rtlpriv->locks.conf_mutex);
err = rtlpriv->intf_ops->adapter_start(hw); err = rtlpriv->intf_ops->adapter_start(hw);
if (!err) if (!err)
rtl_watch_dog_timer_callback((unsigned long)hw); rtl_watch_dog_timer_callback(&rtlpriv->works.watchdog_timer);
mutex_unlock(&rtlpriv->locks.conf_mutex); mutex_unlock(&rtlpriv->locks.conf_mutex);
return err; return err;
} }

View File

@ -55,7 +55,7 @@ bool rtl_ps_enable_nic(struct ieee80211_hw *hw)
rtlpriv->cfg->ops->enable_interrupt(hw); rtlpriv->cfg->ops->enable_interrupt(hw);
/*<enable timer> */ /*<enable timer> */
rtl_watch_dog_timer_callback((unsigned long)hw); rtl_watch_dog_timer_callback(&rtlpriv->works.watchdog_timer);
return true; return true;
} }

View File

@ -1708,9 +1708,11 @@ static void rtl88e_dm_fast_ant_training(struct ieee80211_hw *hw)
} }
} }
void rtl88e_dm_fast_antenna_training_callback(unsigned long data) void rtl88e_dm_fast_antenna_training_callback(struct timer_list *t)
{ {
struct ieee80211_hw *hw = (struct ieee80211_hw *)data; struct rtl_priv *rtlpriv =
from_timer(rtlpriv, t, works.fast_antenna_training_timer);
struct ieee80211_hw *hw = rtlpriv->hw;
rtl88e_dm_fast_ant_training(hw); rtl88e_dm_fast_ant_training(hw);
} }

View File

@ -270,7 +270,7 @@ void rtl88e_dm_set_tx_ant_by_tx_info(struct ieee80211_hw *hw,
void rtl88e_dm_ant_sel_statistics(struct ieee80211_hw *hw, void rtl88e_dm_ant_sel_statistics(struct ieee80211_hw *hw,
u8 antsel_tr_mux, u32 mac_id, u8 antsel_tr_mux, u32 mac_id,
u32 rx_pwdb_all); u32 rx_pwdb_all);
void rtl88e_dm_fast_antenna_training_callback(unsigned long data); void rtl88e_dm_fast_antenna_training_callback(struct timer_list *t);
void rtl88e_dm_init(struct ieee80211_hw *hw); void rtl88e_dm_init(struct ieee80211_hw *hw);
void rtl88e_dm_watchdog(struct ieee80211_hw *hw); void rtl88e_dm_watchdog(struct ieee80211_hw *hw);
void rtl88e_dm_write_dig(struct ieee80211_hw *hw); void rtl88e_dm_write_dig(struct ieee80211_hw *hw);

View File

@ -253,9 +253,12 @@ static void _rtl88ee_set_fw_ps_rf_off_low_power(struct ieee80211_hw *hw)
rpwm_val |= FW_PS_STATE_RF_OFF_LOW_PWR_88E; rpwm_val |= FW_PS_STATE_RF_OFF_LOW_PWR_88E;
_rtl88ee_set_fw_clock_off(hw, rpwm_val); _rtl88ee_set_fw_clock_off(hw, rpwm_val);
} }
void rtl88ee_fw_clk_off_timer_callback(unsigned long data)
void rtl88ee_fw_clk_off_timer_callback(struct timer_list *t)
{ {
struct ieee80211_hw *hw = (struct ieee80211_hw *)data; struct rtl_priv *rtlpriv = from_timer(rtlpriv, t,
works.fw_clockoff_timer);
struct ieee80211_hw *hw = rtlpriv->hw;
_rtl88ee_set_fw_ps_rf_off_low_power(hw); _rtl88ee_set_fw_ps_rf_off_low_power(hw);
} }

View File

@ -58,6 +58,6 @@ void rtl8188ee_bt_reg_init(struct ieee80211_hw *hw);
void rtl8188ee_bt_hw_init(struct ieee80211_hw *hw); void rtl8188ee_bt_hw_init(struct ieee80211_hw *hw);
void rtl88ee_suspend(struct ieee80211_hw *hw); void rtl88ee_suspend(struct ieee80211_hw *hw);
void rtl88ee_resume(struct ieee80211_hw *hw); void rtl88ee_resume(struct ieee80211_hw *hw);
void rtl88ee_fw_clk_off_timer_callback(unsigned long data); void rtl88ee_fw_clk_off_timer_callback(struct timer_list *t);
#endif #endif

View File

@ -190,16 +190,12 @@ int rtl88e_init_sw_vars(struct ieee80211_hw *hw)
/*low power */ /*low power */
rtlpriv->psc.low_power_enable = false; rtlpriv->psc.low_power_enable = false;
if (rtlpriv->psc.low_power_enable) { if (rtlpriv->psc.low_power_enable) {
init_timer(&rtlpriv->works.fw_clockoff_timer); timer_setup(&rtlpriv->works.fw_clockoff_timer,
setup_timer(&rtlpriv->works.fw_clockoff_timer, rtl88ee_fw_clk_off_timer_callback, 0);
rtl88ee_fw_clk_off_timer_callback,
(unsigned long)hw);
} }
init_timer(&rtlpriv->works.fast_antenna_training_timer); timer_setup(&rtlpriv->works.fast_antenna_training_timer,
setup_timer(&rtlpriv->works.fast_antenna_training_timer, rtl88e_dm_fast_antenna_training_callback, 0);
rtl88e_dm_fast_antenna_training_callback,
(unsigned long)hw);
return err; return err;
} }