net/ti/tlan: 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: Samuel Chessman <chessman@tux.org>
Cc: netdev@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Kees Cook 2017-10-16 17:28:50 -07:00 committed by David S. Miller
parent 4966babd90
commit 0010e3f8b3

View File

@ -172,7 +172,8 @@ static u32 tlan_handle_tx_eoc(struct net_device *, u16);
static u32 tlan_handle_status_check(struct net_device *, u16); static u32 tlan_handle_status_check(struct net_device *, u16);
static u32 tlan_handle_rx_eoc(struct net_device *, u16); static u32 tlan_handle_rx_eoc(struct net_device *, u16);
static void tlan_timer(unsigned long); static void tlan_timer(struct timer_list *t);
static void tlan_phy_monitor(struct timer_list *t);
static void tlan_reset_lists(struct net_device *); static void tlan_reset_lists(struct net_device *);
static void tlan_free_lists(struct net_device *); static void tlan_free_lists(struct net_device *);
@ -190,7 +191,6 @@ static void tlan_phy_power_up(struct net_device *);
static void tlan_phy_reset(struct net_device *); static void tlan_phy_reset(struct net_device *);
static void tlan_phy_start_link(struct net_device *); static void tlan_phy_start_link(struct net_device *);
static void tlan_phy_finish_auto_neg(struct net_device *); static void tlan_phy_finish_auto_neg(struct net_device *);
static void tlan_phy_monitor(unsigned long);
/* /*
static int tlan_phy_nop(struct net_device *); static int tlan_phy_nop(struct net_device *);
@ -254,11 +254,10 @@ tlan_set_timer(struct net_device *dev, u32 ticks, u32 type)
spin_unlock_irqrestore(&priv->lock, flags); spin_unlock_irqrestore(&priv->lock, flags);
return; return;
} }
priv->timer.function = tlan_timer; priv->timer.function = (TIMER_FUNC_TYPE)tlan_timer;
if (!in_irq()) if (!in_irq())
spin_unlock_irqrestore(&priv->lock, flags); spin_unlock_irqrestore(&priv->lock, flags);
priv->timer.data = (unsigned long) dev;
priv->timer_set_at = jiffies; priv->timer_set_at = jiffies;
priv->timer_type = type; priv->timer_type = type;
mod_timer(&priv->timer, jiffies + ticks); mod_timer(&priv->timer, jiffies + ticks);
@ -926,8 +925,8 @@ static int tlan_open(struct net_device *dev)
return err; return err;
} }
init_timer(&priv->timer); timer_setup(&priv->timer, NULL, 0);
init_timer(&priv->media_timer); timer_setup(&priv->media_timer, tlan_phy_monitor, 0);
tlan_start(dev); tlan_start(dev);
@ -1426,8 +1425,7 @@ static u32 tlan_handle_tx_eof(struct net_device *dev, u16 host_int)
tlan_dio_write8(dev->base_addr, tlan_dio_write8(dev->base_addr,
TLAN_LED_REG, TLAN_LED_LINK | TLAN_LED_ACT); TLAN_LED_REG, TLAN_LED_LINK | TLAN_LED_ACT);
if (priv->timer.function == NULL) { if (priv->timer.function == NULL) {
priv->timer.function = tlan_timer; priv->timer.function = (TIMER_FUNC_TYPE)tlan_timer;
priv->timer.data = (unsigned long) dev;
priv->timer.expires = jiffies + TLAN_TIMER_ACT_DELAY; priv->timer.expires = jiffies + TLAN_TIMER_ACT_DELAY;
priv->timer_set_at = jiffies; priv->timer_set_at = jiffies;
priv->timer_type = TLAN_TIMER_ACTIVITY; priv->timer_type = TLAN_TIMER_ACTIVITY;
@ -1578,8 +1576,7 @@ static u32 tlan_handle_rx_eof(struct net_device *dev, u16 host_int)
tlan_dio_write8(dev->base_addr, tlan_dio_write8(dev->base_addr,
TLAN_LED_REG, TLAN_LED_LINK | TLAN_LED_ACT); TLAN_LED_REG, TLAN_LED_LINK | TLAN_LED_ACT);
if (priv->timer.function == NULL) { if (priv->timer.function == NULL) {
priv->timer.function = tlan_timer; priv->timer.function = (TIMER_FUNC_TYPE)tlan_timer;
priv->timer.data = (unsigned long) dev;
priv->timer.expires = jiffies + TLAN_TIMER_ACT_DELAY; priv->timer.expires = jiffies + TLAN_TIMER_ACT_DELAY;
priv->timer_set_at = jiffies; priv->timer_set_at = jiffies;
priv->timer_type = TLAN_TIMER_ACTIVITY; priv->timer_type = TLAN_TIMER_ACTIVITY;
@ -1836,10 +1833,10 @@ ThunderLAN driver timer function
* *
**************************************************************/ **************************************************************/
static void tlan_timer(unsigned long data) static void tlan_timer(struct timer_list *t)
{ {
struct net_device *dev = (struct net_device *) data; struct tlan_priv *priv = from_timer(priv, t, timer);
struct tlan_priv *priv = netdev_priv(dev); struct net_device *dev = priv->dev;
u32 elapsed; u32 elapsed;
unsigned long flags = 0; unsigned long flags = 0;
@ -1872,7 +1869,6 @@ static void tlan_timer(unsigned long data)
tlan_dio_write8(dev->base_addr, tlan_dio_write8(dev->base_addr,
TLAN_LED_REG, TLAN_LED_LINK); TLAN_LED_REG, TLAN_LED_LINK);
} else { } else {
priv->timer.function = tlan_timer;
priv->timer.expires = priv->timer_set_at priv->timer.expires = priv->timer_set_at
+ TLAN_TIMER_ACT_DELAY; + TLAN_TIMER_ACT_DELAY;
spin_unlock_irqrestore(&priv->lock, flags); spin_unlock_irqrestore(&priv->lock, flags);
@ -2317,8 +2313,6 @@ tlan_finish_reset(struct net_device *dev)
} else } else
netdev_info(dev, "Link active\n"); netdev_info(dev, "Link active\n");
/* Enabling link beat monitoring */ /* Enabling link beat monitoring */
priv->media_timer.function = tlan_phy_monitor;
priv->media_timer.data = (unsigned long) dev;
priv->media_timer.expires = jiffies + HZ; priv->media_timer.expires = jiffies + HZ;
add_timer(&priv->media_timer); add_timer(&priv->media_timer);
} }
@ -2763,10 +2757,10 @@ static void tlan_phy_finish_auto_neg(struct net_device *dev)
* *
*******************************************************************/ *******************************************************************/
static void tlan_phy_monitor(unsigned long data) static void tlan_phy_monitor(struct timer_list *t)
{ {
struct net_device *dev = (struct net_device *) data; struct tlan_priv *priv = from_timer(priv, t, media_timer);
struct tlan_priv *priv = netdev_priv(dev); struct net_device *dev = priv->dev;
u16 phy; u16 phy;
u16 phy_status; u16 phy_status;