diff --git a/drivers/net/ntb_netdev.c b/drivers/net/ntb_netdev.c index 0250aa9ae2cb..9f6f7ccd44f7 100644 --- a/drivers/net/ntb_netdev.c +++ b/drivers/net/ntb_netdev.c @@ -230,10 +230,10 @@ err: return NETDEV_TX_BUSY; } -static void ntb_netdev_tx_timer(unsigned long data) +static void ntb_netdev_tx_timer(struct timer_list *t) { - struct net_device *ndev = (struct net_device *)data; - struct ntb_netdev *dev = netdev_priv(ndev); + struct ntb_netdev *dev = from_timer(dev, t, tx_timer); + struct net_device *ndev = dev->ndev; if (ntb_transport_tx_free_entry(dev->qp) < tx_stop) { mod_timer(&dev->tx_timer, jiffies + msecs_to_jiffies(tx_time)); @@ -269,7 +269,7 @@ static int ntb_netdev_open(struct net_device *ndev) } } - setup_timer(&dev->tx_timer, ntb_netdev_tx_timer, (unsigned long)ndev); + timer_setup(&dev->tx_timer, ntb_netdev_tx_timer, 0); netif_carrier_off(ndev); ntb_transport_link_up(dev->qp);