From bc680ed6c99cbbe02df533e79efc99c31751ee18 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Thu, 10 Nov 2005 04:31:55 -0500 Subject: [PATCH] --- yaml --- r: 15676 b: refs/heads/master c: 760559e1330a58cc5b320154a20e64b8444143c0 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/8139too.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 63b83d4651d0..ef76f640f5d0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2f67bdb23d74a6c6fd4f98f64239c5c34d1833cc +refs/heads/master: 760559e1330a58cc5b320154a20e64b8444143c0 diff --git a/trunk/drivers/net/8139too.c b/trunk/drivers/net/8139too.c index 120baaa90754..d2102a27d307 100644 --- a/trunk/drivers/net/8139too.c +++ b/trunk/drivers/net/8139too.c @@ -1598,13 +1598,19 @@ static void rtl8139_thread (void *_data) { struct net_device *dev = _data; struct rtl8139_private *tp = netdev_priv(dev); + unsigned long thr_delay; if (rtnl_shlock_nowait() == 0) { rtl8139_thread_iter (dev, tp, tp->mmio_addr); rtnl_unlock (); + + thr_delay = next_tick; + } else { + /* unlikely race. mitigate with fast poll. */ + thr_delay = HZ / 2; } - schedule_delayed_work(&tp->thread, next_tick); + schedule_delayed_work(&tp->thread, thr_delay); } static void rtl8139_start_thread(struct rtl8139_private *tp)