Under options RSS the IPv4 and IPv6 input handlers set nh_dispatch to
NETISR_DISPATCH_HYBRID. netisr_get_dispatch() returns a handler's own
policy in preference to the global net.isr.dispatch, so the sysctl has
no effect on IP and hybrid dispatch is forced.
Hybrid routes each packet to the workstream chosen by the software RSS
hash. On hardware whose RSS key is not programmed from the kernel that
CPU does not match the one the receive queue interrupts on, so inbound
processing is deferred onto a netisr worker instead of running where the
interrupt landed.
Set nh_dispatch to NETISR_DISPATCH_DEFAULT on the ip, ip6, ip_direct and
ip6_direct handlers so IP honors the global policy like every other
protocol. Under the default direct policy inbound IP runs in line on
the receive queue's CPU with no netisr worker involved, and the policy
stays selectable at run time via net.isr.dispatch.