Files
linux/drivers
Lennert Buytenhek 92c70f27d2 mv643xx_eth: fix double add_timer() on the receive oom timer
Commit 12e4ab79cd ("mv643xx_eth: be
more agressive about RX refill") changed the condition for the receive
out-of-memory timer to be scheduled from "the receive ring is empty"
to "the receive ring is not full".

This can lead to a situation where the receive out-of-memory timer is
pending because a previous rxq_refill() didn't manage to refill the
receive ring entirely as a result of being out of memory, and
rxq_refill() is then called again as a side effect of a packet receive
interrupt, and that rxq_refill() call then again does not succeed to
refill the entire receive ring with fresh empty skbuffs because we are
still out of memory, and then tries to call add_timer() on the already
scheduled out-of-memory timer.

This patch fixes this issue by changing the add_timer() call in
rxq_refill() to a mod_timer() call.  If the OOM timer was not already
scheduled, this will behave as before, whereas if it was already
scheduled, this patch will push back its firing time a bit, which is
safe because we've (unsuccessfully) attempted to refill the receive
ring just before we do this.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-08-24 03:33:02 +02:00
..
2008-08-18 21:40:04 +02:00
2008-08-19 18:47:56 +02:00
2008-08-12 16:07:31 -07:00
2008-08-15 11:50:15 -07:00
2008-08-13 17:32:56 -07:00
2008-08-08 19:18:18 +01:00
2008-08-10 23:32:07 +02:00
2008-08-20 15:40:30 -07:00
2008-08-16 16:35:33 +01:00
2008-08-04 12:51:06 +09:00
2008-08-13 17:33:00 -07:00