[NET]: Add preemption point in qdisc_run
authorHerbert Xu <herbert@gondor.apana.org.au>
Fri, 28 Mar 2008 23:25:26 +0000 (16:25 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 28 Mar 2008 23:25:26 +0000 (16:25 -0700)
commit2ba2506ca7ca62c56edaa334b0fe61eb5eab6ab0
tree0a1b1f7046eff42e2323334b656543efdf85d38a
parent32aced7509cb20ef3ec67c9b56f5b55c41dd4f8d
[NET]: Add preemption point in qdisc_run

The qdisc_run loop is currently unbounded and runs entirely in a
softirq.  This is bad as it may create an unbounded softirq run.

This patch fixes this by calling need_resched and breaking out if
necessary.

It also adds a break out if the jiffies value changes since that would
indicate we've been transmitting for too long which starves other
softirqs.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_generic.c