Skip to content

Commit

Permalink
[netdrvr 8139too] fast poll for thread, if an unlikely race occurs
Browse files Browse the repository at this point in the history
The rtl8139 thread is triggered only on rare 8139 hardware, the race
itself is unlikely, and the impact of racing is low.  We don't care
enough to create a more-complex race-free solution.

Rather, if the trylock fails, we now simply poll twice a second until
we do get the lock.
  • Loading branch information
Jeff Garzik committed Nov 10, 2005
1 parent 2f67bdb commit 760559e
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion drivers/net/8139too.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 760559e

Please sign in to comment.