Commit 7974c0f3 authored by Kees Cook's avatar Kees Cook Committed by David S. Miller

drivers/net/3com: 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: Steffen Klassert <klassert@mathematik.tu-chemnitz.de>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jarod Wilson <jarod@redhat.com>
Cc: netdev@vger.kernel.org
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1fccb565
...@@ -225,7 +225,7 @@ static unsigned short read_eeprom(unsigned int ioaddr, int index); ...@@ -225,7 +225,7 @@ static unsigned short read_eeprom(unsigned int ioaddr, int index);
static void tc574_wait_for_completion(struct net_device *dev, int cmd); static void tc574_wait_for_completion(struct net_device *dev, int cmd);
static void tc574_reset(struct net_device *dev); static void tc574_reset(struct net_device *dev);
static void media_check(unsigned long arg); static void media_check(struct timer_list *t);
static int el3_open(struct net_device *dev); static int el3_open(struct net_device *dev);
static netdev_tx_t el3_start_xmit(struct sk_buff *skb, static netdev_tx_t el3_start_xmit(struct sk_buff *skb,
struct net_device *dev); struct net_device *dev);
...@@ -377,7 +377,7 @@ static int tc574_config(struct pcmcia_device *link) ...@@ -377,7 +377,7 @@ static int tc574_config(struct pcmcia_device *link)
lp->autoselect = config & Autoselect ? 1 : 0; lp->autoselect = config & Autoselect ? 1 : 0;
} }
init_timer(&lp->media); timer_setup(&lp->media, media_check, 0);
{ {
int phy; int phy;
...@@ -681,8 +681,6 @@ static int el3_open(struct net_device *dev) ...@@ -681,8 +681,6 @@ static int el3_open(struct net_device *dev)
netif_start_queue(dev); netif_start_queue(dev);
tc574_reset(dev); tc574_reset(dev);
lp->media.function = media_check;
lp->media.data = (unsigned long) dev;
lp->media.expires = jiffies + HZ; lp->media.expires = jiffies + HZ;
add_timer(&lp->media); add_timer(&lp->media);
...@@ -859,10 +857,10 @@ static irqreturn_t el3_interrupt(int irq, void *dev_id) ...@@ -859,10 +857,10 @@ static irqreturn_t el3_interrupt(int irq, void *dev_id)
(and as a last resort, poll the NIC for events), and to monitor (and as a last resort, poll the NIC for events), and to monitor
the MII, reporting changes in cable status. the MII, reporting changes in cable status.
*/ */
static void media_check(unsigned long arg) static void media_check(struct timer_list *t)
{ {
struct net_device *dev = (struct net_device *) arg; struct el3_private *lp = from_timer(lp, t, media);
struct el3_private *lp = netdev_priv(dev); struct net_device *dev = lp->p_dev->priv;
unsigned int ioaddr = dev->base_addr; unsigned int ioaddr = dev->base_addr;
unsigned long flags; unsigned long flags;
unsigned short /* cable, */ media, partner; unsigned short /* cable, */ media, partner;
......
...@@ -163,7 +163,7 @@ static void tc589_release(struct pcmcia_device *link); ...@@ -163,7 +163,7 @@ static void tc589_release(struct pcmcia_device *link);
static u16 read_eeprom(unsigned int ioaddr, int index); static u16 read_eeprom(unsigned int ioaddr, int index);
static void tc589_reset(struct net_device *dev); static void tc589_reset(struct net_device *dev);
static void media_check(unsigned long arg); static void media_check(struct timer_list *t);
static int el3_config(struct net_device *dev, struct ifmap *map); static int el3_config(struct net_device *dev, struct ifmap *map);
static int el3_open(struct net_device *dev); static int el3_open(struct net_device *dev);
static netdev_tx_t el3_start_xmit(struct sk_buff *skb, static netdev_tx_t el3_start_xmit(struct sk_buff *skb,
...@@ -517,7 +517,7 @@ static int el3_open(struct net_device *dev) ...@@ -517,7 +517,7 @@ static int el3_open(struct net_device *dev)
netif_start_queue(dev); netif_start_queue(dev);
tc589_reset(dev); tc589_reset(dev);
setup_timer(&lp->media, media_check, (unsigned long)dev); timer_setup(&lp->media, media_check, 0);
mod_timer(&lp->media, jiffies + HZ); mod_timer(&lp->media, jiffies + HZ);
dev_dbg(&link->dev, "%s: opened, status %4.4x.\n", dev_dbg(&link->dev, "%s: opened, status %4.4x.\n",
...@@ -676,10 +676,10 @@ static irqreturn_t el3_interrupt(int irq, void *dev_id) ...@@ -676,10 +676,10 @@ static irqreturn_t el3_interrupt(int irq, void *dev_id)
return IRQ_RETVAL(handled); return IRQ_RETVAL(handled);
} }
static void media_check(unsigned long arg) static void media_check(struct timer_list *t)
{ {
struct net_device *dev = (struct net_device *)(arg); struct el3_private *lp = from_timer(lp, t, media);
struct el3_private *lp = netdev_priv(dev); struct net_device *dev = lp->p_dev->priv;
unsigned int ioaddr = dev->base_addr; unsigned int ioaddr = dev->base_addr;
u16 media, errs; u16 media, errs;
unsigned long flags; unsigned long flags;
......
...@@ -759,8 +759,8 @@ static int vortex_open(struct net_device *dev); ...@@ -759,8 +759,8 @@ static int vortex_open(struct net_device *dev);
static void mdio_sync(struct vortex_private *vp, int bits); static void mdio_sync(struct vortex_private *vp, int bits);
static int mdio_read(struct net_device *dev, int phy_id, int location); static int mdio_read(struct net_device *dev, int phy_id, int location);
static void mdio_write(struct net_device *vp, int phy_id, int location, int value); static void mdio_write(struct net_device *vp, int phy_id, int location, int value);
static void vortex_timer(unsigned long arg); static void vortex_timer(struct timer_list *t);
static void rx_oom_timer(unsigned long arg); static void rx_oom_timer(struct timer_list *t);
static netdev_tx_t vortex_start_xmit(struct sk_buff *skb, static netdev_tx_t vortex_start_xmit(struct sk_buff *skb,
struct net_device *dev); struct net_device *dev);
static netdev_tx_t boomerang_start_xmit(struct sk_buff *skb, static netdev_tx_t boomerang_start_xmit(struct sk_buff *skb,
...@@ -1599,9 +1599,9 @@ vortex_up(struct net_device *dev) ...@@ -1599,9 +1599,9 @@ vortex_up(struct net_device *dev)
dev->name, media_tbl[dev->if_port].name); dev->name, media_tbl[dev->if_port].name);
} }
setup_timer(&vp->timer, vortex_timer, (unsigned long)dev); timer_setup(&vp->timer, vortex_timer, 0);
mod_timer(&vp->timer, RUN_AT(media_tbl[dev->if_port].wait)); mod_timer(&vp->timer, RUN_AT(media_tbl[dev->if_port].wait));
setup_timer(&vp->rx_oom_timer, rx_oom_timer, (unsigned long)dev); timer_setup(&vp->rx_oom_timer, rx_oom_timer, 0);
if (vortex_debug > 1) if (vortex_debug > 1)
pr_debug("%s: Initial media type %s.\n", pr_debug("%s: Initial media type %s.\n",
...@@ -1784,10 +1784,10 @@ vortex_open(struct net_device *dev) ...@@ -1784,10 +1784,10 @@ vortex_open(struct net_device *dev)
} }
static void static void
vortex_timer(unsigned long data) vortex_timer(struct timer_list *t)
{ {
struct net_device *dev = (struct net_device *)data; struct vortex_private *vp = from_timer(vp, t, timer);
struct vortex_private *vp = netdev_priv(dev); struct net_device *dev = vp->mii.dev;
void __iomem *ioaddr = vp->ioaddr; void __iomem *ioaddr = vp->ioaddr;
int next_tick = 60*HZ; int next_tick = 60*HZ;
int ok = 0; int ok = 0;
...@@ -2687,10 +2687,10 @@ boomerang_rx(struct net_device *dev) ...@@ -2687,10 +2687,10 @@ boomerang_rx(struct net_device *dev)
* for some memory. Otherwise there is no way to restart the rx process. * for some memory. Otherwise there is no way to restart the rx process.
*/ */
static void static void
rx_oom_timer(unsigned long arg) rx_oom_timer(struct timer_list *t)
{ {
struct net_device *dev = (struct net_device *)arg; struct vortex_private *vp = from_timer(vp, t, rx_oom_timer);
struct vortex_private *vp = netdev_priv(dev); struct net_device *dev = vp->mii.dev;
spin_lock_irq(&vp->lock); spin_lock_irq(&vp->lock);
if ((vp->cur_rx - vp->dirty_rx) == RX_RING_SIZE) /* This test is redundant, but makes me feel good */ if ((vp->cur_rx - vp->dirty_rx) == RX_RING_SIZE) /* This test is redundant, but makes me feel good */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment