rtlwifi: Convert timers to use timer_setup()
authorKees Cook <keescook@chromium.org>
Tue, 24 Oct 2017 09:28:29 +0000 (02:28 -0700)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 27 Oct 2017 07:41:57 +0000 (10:41 +0300)
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>
drivers/net/wireless/realtek/rtlwifi/base.c
drivers/net/wireless/realtek/rtlwifi/base.h
drivers/net/wireless/realtek/rtlwifi/core.c
drivers/net/wireless/realtek/rtlwifi/ps.c
drivers/net/wireless/realtek/rtlwifi/rtl8188ee/dm.c
drivers/net/wireless/realtek/rtlwifi/rtl8188ee/dm.h
drivers/net/wireless/realtek/rtlwifi/rtl8188ee/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8188ee/hw.h
drivers/net/wireless/realtek/rtlwifi/rtl8188ee/sw.c

index 0b34886321f1404cba9996da932ca70d93b1ca74..ea90b460c017e8e175ddbc814c8bf003d6c6bcf2 100644 (file)
@@ -457,10 +457,10 @@ static void _rtl_init_deferred_work(struct ieee80211_hw *hw)
        struct rtl_priv *rtlpriv = rtl_priv(hw);
 
        /* <1> timer */
-       setup_timer(&rtlpriv->works.watchdog_timer,
-                   rtl_watch_dog_timer_callback, (unsigned long)hw);
-       setup_timer(&rtlpriv->works.dualmac_easyconcurrent_retrytimer,
-                   rtl_easy_concurrent_retrytimer_callback, (unsigned long)hw);
+       timer_setup(&rtlpriv->works.watchdog_timer,
+                   rtl_watch_dog_timer_callback, 0);
+       timer_setup(&rtlpriv->works.dualmac_easyconcurrent_retrytimer,
+                   rtl_easy_concurrent_retrytimer_callback, 0);
        /* <2> work queue */
        rtlpriv->works.hw = hw;
        rtlpriv->works.rtl_wq = alloc_workqueue("%s", 0, 0, rtlpriv->cfg->name);
@@ -2057,10 +2057,9 @@ label_lps_done:
        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 = rtl_priv(hw);
+       struct rtl_priv *rtlpriv = from_timer(rtlpriv, t, works.watchdog_timer);
 
        queue_delayed_work(rtlpriv->works.rtl_wq,
                           &rtlpriv->works.watchdog_wq, 0);
@@ -2166,10 +2165,11 @@ void rtl_c2hcmd_wq_callback(void *data)
        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 = rtl_priv(hw);
+       struct rtl_priv *rtlpriv =
+               from_timer(rtlpriv, t, works.dualmac_easyconcurrent_retrytimer);
+       struct ieee80211_hw *hw = rtlpriv->hw;
        struct rtl_priv *buddy_priv = rtlpriv->buddy_priv;
 
        if (buddy_priv == NULL)
index cfea9fc39a9fcdded19b8eb7b2666a06c3b0a7ca..26735319b38f3bb7a2cd48c8865ded37be0be821 100644 (file)
@@ -120,7 +120,7 @@ void rtl_init_rx_config(struct ieee80211_hw *hw);
 void rtl_init_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);
 
 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);
 void rtl_recognize_peer(struct ieee80211_hw *hw, u8 *data, unsigned int len);
 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;
 void rtl_phy_scan_operation_backup(struct ieee80211_hw *hw, u8 operation);
 
index 015a8ec367031459dbed2a53f4d8be516cbe6a51..1147327e6f520797394e287f3403eafa650c8aa8 100644 (file)
@@ -160,7 +160,7 @@ static int rtl_op_start(struct ieee80211_hw *hw)
        mutex_lock(&rtlpriv->locks.conf_mutex);
        err = rtlpriv->intf_ops->adapter_start(hw);
        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);
        return err;
 }
index 07ee3096f50e25f2a6cc264c9341982277f1017a..24c87fae5382902d5542f92a3fc0fa85a5c53cd2 100644 (file)
@@ -55,7 +55,7 @@ bool rtl_ps_enable_nic(struct ieee80211_hw *hw)
        rtlpriv->cfg->ops->enable_interrupt(hw);
 
        /*<enable timer> */
-       rtl_watch_dog_timer_callback((unsigned long)hw);
+       rtl_watch_dog_timer_callback(&rtlpriv->works.watchdog_timer);
 
        return true;
 }
index 207411d1b015c1059bc3b4327d16d365ab1947c7..e05af7d6083096588cc5e6c6b66f9f343aeabe28 100644 (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);
 }
index 0fd2bac14db611162cadeaa339bdbc4885abcb9e..50f26a9a97db2e9ef840cce110e193c2ef418d30 100644 (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,
                                  u8 antsel_tr_mux, u32 mac_id,
                                  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_watchdog(struct ieee80211_hw *hw);
 void rtl88e_dm_write_dig(struct ieee80211_hw *hw);
index d31117d52381c2bc2b6e612ddb60b85e2b274147..2c671364c521aae5a1f92344d1a9c9be63ac5a6f 100644 (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;
        _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);
 }
index 719b78a3b7dbc52f0bb138f1120171eae2fa929c..ab8488da9409782bb37fe90758815d83c4b80963 100644 (file)
@@ -58,6 +58,6 @@ void rtl8188ee_bt_reg_init(struct ieee80211_hw *hw);
 void rtl8188ee_bt_hw_init(struct ieee80211_hw *hw);
 void rtl88ee_suspend(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
index 35de3aeafcc91984cc62957afe49ae1bbfffe48b..82681b96ef93ee71d93984fdb02081d13877b9bb 100644 (file)
@@ -190,16 +190,12 @@ int rtl88e_init_sw_vars(struct ieee80211_hw *hw)
        /*low power */
        rtlpriv->psc.low_power_enable = false;
        if (rtlpriv->psc.low_power_enable) {
-               init_timer(&rtlpriv->works.fw_clockoff_timer);
-               setup_timer(&rtlpriv->works.fw_clockoff_timer,
-                           rtl88ee_fw_clk_off_timer_callback,
-                           (unsigned long)hw);
+               timer_setup(&rtlpriv->works.fw_clockoff_timer,
+                           rtl88ee_fw_clk_off_timer_callback, 0);
        }
 
-       init_timer(&rtlpriv->works.fast_antenna_training_timer);
-       setup_timer(&rtlpriv->works.fast_antenna_training_timer,
-                   rtl88e_dm_fast_antenna_training_callback,
-                       (unsigned long)hw);
+       timer_setup(&rtlpriv->works.fast_antenna_training_timer,
+                   rtl88e_dm_fast_antenna_training_callback, 0);
        return err;
 }