two problems in dev/e1000/if_lem.c::lem_handle_rxtx()

John Baldwin jhb at freebsd.org
Fri Jan 18 21:16:29 UTC 2013


On Friday, January 18, 2013 3:07:35 pm Adrian Chadd wrote:
> For my purposes, rescheduling the taskqueue means that other things
> (such as TX, reset processing, other state handling, etc) can run
> before the next pass at RX completion.

That only works if your taskqueue thread has a priority <= those things.  I 
think the e1000 drivers use the same priority for their taskqueue threads as 
the ithreads use, so the effectively preempt just about everything and are not 
preempted by other task queues or swi threads, etc.

> Also, IIRC, acquiring mutexes are one of those magic points where the
> scheduler may decide to switch things around in a preemption kernel.

No, releasing mutexes (and any other place that makes a non-runnable thread 
runnable), and only if it wakes up a thread with a more important priority.

-- 
John Baldwin


More information about the freebsd-net mailing list