K 10 svn:author V 7 rwatson K 8 svn:date V 27 2009-05-19T14:10:14.719897Z K 7 svn:log V 1233 Read-locking of netisr2 during dispatch is no longer optional, so update comment. Add an XXXRW because assertions aren't implemented for rmlocks. Break out net.isr2.direct into two sysctls: net.isr2.direct_force to force direct dispatch to always be used even if work should be processed by a workstream, and net.isr2.direct_enable, which allows direct dispatch to be used. Document the three modes of operation we support using these flags. Add a new direct dispatch mode, "hybrid", in which work destined for the current CPU may directly dispatch, but work destined for other CPUs will be queued. Hybrid direct dispatch is only permitted if there is no pending work, the netisr isn't already running, and no other thread is directly dispatching the workstream, as these could lead to misordering. Add a new hybrid direct dispatch counter. Fix a bug in the tunable portion of the net.isr2.maxqlimit sysctl and document it. Make it a writable sysctl. Don't test queue limits during registration with an assert -- instead, cap and printf. Update stats printout in DDB. Default settings remain the same as in the current netisr code: force direct dispatch, create a single worker thread, and don't bind it to a specific CPU. END