diff options
Diffstat (limited to 'drivers/net/r8169.c')
-rw-r--r-- | drivers/net/r8169.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index 27f90b2139c0..1f9663a70823 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c | |||
@@ -424,6 +424,7 @@ struct ring_info { | |||
424 | struct rtl8169_private { | 424 | struct rtl8169_private { |
425 | void __iomem *mmio_addr; /* memory map physical address */ | 425 | void __iomem *mmio_addr; /* memory map physical address */ |
426 | struct pci_dev *pci_dev; /* Index of PCI device */ | 426 | struct pci_dev *pci_dev; /* Index of PCI device */ |
427 | struct net_device *dev; | ||
427 | struct net_device_stats stats; /* statistics of net device */ | 428 | struct net_device_stats stats; /* statistics of net device */ |
428 | spinlock_t lock; /* spin lock flag */ | 429 | spinlock_t lock; /* spin lock flag */ |
429 | u32 msg_enable; | 430 | u32 msg_enable; |
@@ -455,7 +456,7 @@ struct rtl8169_private { | |||
455 | void (*phy_reset_enable)(void __iomem *); | 456 | void (*phy_reset_enable)(void __iomem *); |
456 | unsigned int (*phy_reset_pending)(void __iomem *); | 457 | unsigned int (*phy_reset_pending)(void __iomem *); |
457 | unsigned int (*link_ok)(void __iomem *); | 458 | unsigned int (*link_ok)(void __iomem *); |
458 | struct work_struct task; | 459 | struct delayed_work task; |
459 | unsigned wol_enabled : 1; | 460 | unsigned wol_enabled : 1; |
460 | }; | 461 | }; |
461 | 462 | ||
@@ -1492,6 +1493,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
1492 | SET_MODULE_OWNER(dev); | 1493 | SET_MODULE_OWNER(dev); |
1493 | SET_NETDEV_DEV(dev, &pdev->dev); | 1494 | SET_NETDEV_DEV(dev, &pdev->dev); |
1494 | tp = netdev_priv(dev); | 1495 | tp = netdev_priv(dev); |
1496 | tp->dev = dev; | ||
1495 | tp->msg_enable = netif_msg_init(debug.msg_enable, R8169_MSG_DEFAULT); | 1497 | tp->msg_enable = netif_msg_init(debug.msg_enable, R8169_MSG_DEFAULT); |
1496 | 1498 | ||
1497 | /* enable device (incl. PCI PM wakeup and hotplug setup) */ | 1499 | /* enable device (incl. PCI PM wakeup and hotplug setup) */ |
@@ -1764,7 +1766,7 @@ static int rtl8169_open(struct net_device *dev) | |||
1764 | if (retval < 0) | 1766 | if (retval < 0) |
1765 | goto err_free_rx; | 1767 | goto err_free_rx; |
1766 | 1768 | ||
1767 | INIT_WORK(&tp->task, NULL, dev); | 1769 | INIT_DELAYED_WORK(&tp->task, NULL); |
1768 | 1770 | ||
1769 | rtl8169_hw_start(dev); | 1771 | rtl8169_hw_start(dev); |
1770 | 1772 | ||
@@ -2087,11 +2089,11 @@ static void rtl8169_tx_clear(struct rtl8169_private *tp) | |||
2087 | tp->cur_tx = tp->dirty_tx = 0; | 2089 | tp->cur_tx = tp->dirty_tx = 0; |
2088 | } | 2090 | } |
2089 | 2091 | ||
2090 | static void rtl8169_schedule_work(struct net_device *dev, void (*task)(void *)) | 2092 | static void rtl8169_schedule_work(struct net_device *dev, work_func_t task) |
2091 | { | 2093 | { |
2092 | struct rtl8169_private *tp = netdev_priv(dev); | 2094 | struct rtl8169_private *tp = netdev_priv(dev); |
2093 | 2095 | ||
2094 | PREPARE_WORK(&tp->task, task, dev); | 2096 | PREPARE_DELAYED_WORK(&tp->task, task); |
2095 | schedule_delayed_work(&tp->task, 4); | 2097 | schedule_delayed_work(&tp->task, 4); |
2096 | } | 2098 | } |
2097 | 2099 | ||
@@ -2110,9 +2112,11 @@ static void rtl8169_wait_for_quiescence(struct net_device *dev) | |||
2110 | netif_poll_enable(dev); | 2112 | netif_poll_enable(dev); |
2111 | } | 2113 | } |
2112 | 2114 | ||
2113 | static void rtl8169_reinit_task(void *_data) | 2115 | static void rtl8169_reinit_task(struct work_struct *work) |
2114 | { | 2116 | { |
2115 | struct net_device *dev = _data; | 2117 | struct rtl8169_private *tp = |
2118 | container_of(work, struct rtl8169_private, task.work); | ||
2119 | struct net_device *dev = tp->dev; | ||
2116 | int ret; | 2120 | int ret; |
2117 | 2121 | ||
2118 | if (netif_running(dev)) { | 2122 | if (netif_running(dev)) { |
@@ -2135,10 +2139,11 @@ static void rtl8169_reinit_task(void *_data) | |||
2135 | } | 2139 | } |
2136 | } | 2140 | } |
2137 | 2141 | ||
2138 | static void rtl8169_reset_task(void *_data) | 2142 | static void rtl8169_reset_task(struct work_struct *work) |
2139 | { | 2143 | { |
2140 | struct net_device *dev = _data; | 2144 | struct rtl8169_private *tp = |
2141 | struct rtl8169_private *tp = netdev_priv(dev); | 2145 | container_of(work, struct rtl8169_private, task.work); |
2146 | struct net_device *dev = tp->dev; | ||
2142 | 2147 | ||
2143 | if (!netif_running(dev)) | 2148 | if (!netif_running(dev)) |
2144 | return; | 2149 | return; |