aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/8139too.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/net/8139too.c b/drivers/net/8139too.c
index 120baaa90754..d2102a27d307 100644
--- a/drivers/net/8139too.c
+++ b/drivers/net/8139too.c
@@ -1598,13 +1598,19 @@ static void rtl8139_thread (void *_data)
1598{ 1598{
1599 struct net_device *dev = _data; 1599 struct net_device *dev = _data;
1600 struct rtl8139_private *tp = netdev_priv(dev); 1600 struct rtl8139_private *tp = netdev_priv(dev);
1601 unsigned long thr_delay;
1601 1602
1602 if (rtnl_shlock_nowait() == 0) { 1603 if (rtnl_shlock_nowait() == 0) {
1603 rtl8139_thread_iter (dev, tp, tp->mmio_addr); 1604 rtl8139_thread_iter (dev, tp, tp->mmio_addr);
1604 rtnl_unlock (); 1605 rtnl_unlock ();
1606
1607 thr_delay = next_tick;
1608 } else {
1609 /* unlikely race. mitigate with fast poll. */
1610 thr_delay = HZ / 2;
1605 } 1611 }
1606 1612
1607 schedule_delayed_work(&tp->thread, next_tick); 1613 schedule_delayed_work(&tp->thread, thr_delay);
1608} 1614}
1609 1615
1610static void rtl8139_start_thread(struct rtl8139_private *tp) 1616static void rtl8139_start_thread(struct rtl8139_private *tp)