freebsd-dev/sys
Robert Watson f2d2d69438 Rework netisr policy mechanism so that per-protocol dispatch policies can
be represented:

- A single policy namespace is defined, consisting of four possible
  policies: "default" to use the global default, "deferred" to force
  deferred dispatch, "direct" to employ direct dispatch where possible, and
  "hybrid" which makes a dynamic decision based on CPU affinity, ordering,
  etc.  Routines are implemented to convert between strings and an integer
  namespace.

- A new global variable, netisr_dispatch_policy, subsumes existing global
  variables for direct dispatch, forced direct dispatch, etc, and is used
  for explicit policy interpretation and composition.  Old variables remain
  so that they can be exported by legacy sysctls for use by old netstat(1)
  binaries.  A new sysctl and tunable, netisr.dispatch.policy, accepts the
  above strings for specifying a global policy default.

- The protocol registration structure, netisr_handler, grows an nh_dispatch
  field, which accepts a per-policy policy override.  The default value is
  '0', which corresponds to "default", meaning that protocols will accept
  the global default policy unless otherwise specified.

- Policies are now interpreted and composed explicitly at various points in
  packet dispatch; protocol policies override global policies.

- Protocols grow the ability to express a non-opinion about affinity even
  when implenting m2cpuid by returning NETISR_CPUID_NONE.  In that case, the
  framework falls back on source ordering, rather than simply using the
  current CPU.

These changes are in support of allowing link layer re-dispatch based on
RSS or similar hashes provided by NICs, especially in the case where the
number of hardware receive queues matches hardware core count, rather than
hardware thread count, requiring further software redistributeon.  (i.e.,
on RMI XLR).

MFC after:      3 weeks
Reviewed by:    bz
Sponsored by:   Juniper Networks, Inc.
2011-05-24 12:34:19 +00:00
..
amd64 Update CPUID bits to reflect AMD Bulldozer and Intel Sandy Bridge features. 2011-05-17 22:36:16 +00:00
arm Move the ZERO_REGION_SIZE to a machine-dependent file, as on many 2011-05-13 19:35:01 +00:00
boot Disconnect sun4v architecture from the three. 2011-05-14 01:53:38 +00:00
bsm Add ECAPMODE, "Not permitted in capability mode", a new kernel errno 2011-03-01 13:14:28 +00:00
cam scsi_cd: silence READ_TOC errors in CDIOREADTOCHEADER ioctl 2011-05-07 10:06:43 +00:00
cddl Fix the zfs file system so that it uses the lock 2011-05-22 21:04:32 +00:00
compat Commit the missing linux_videdev2_compat.h (lost somewhere between 2011-05-04 13:09:20 +00:00
conf Remove an outdated comment as requested by Bruce Evans in a private email to 2011-05-24 09:01:56 +00:00
contrib Make pf compile without INET support by adding #ifdef INETs and 2011-04-27 19:34:01 +00:00
crypto Fix a bug in the result of manual assembly. 2011-03-02 14:56:58 +00:00
ddb Trim some additional unnecessary <linker_set.h> includes. 2011-04-28 17:59:33 +00:00
dev Use the new per-series antenna and TPC definitions when setting ctl8->11. 2011-05-24 05:49:02 +00:00
fs Set the MNT_NFS4ACLS flag for an NFSv4 client mount 2011-05-23 22:31:42 +00:00
gdb Modify kdb_trap() so that it re-calls the dbbe_trap function as long as 2011-02-18 22:25:11 +00:00
geom Remove unused variable. 2011-05-24 06:46:07 +00:00
gnu Fix typo in unused function name 2011-05-22 09:58:48 +00:00
i386 Merge part of r221322 from largeSMP project: 2011-05-18 16:07:30 +00:00
ia64 Prefer switching the memory stack from user to kernel *before* switching 2011-05-14 14:55:15 +00:00
isa Move VT switching hack for suspend/resume from bus drivers to syscons.c 2011-05-09 18:46:49 +00:00
kern BKVASIZE was bumped to 16k more than a decade ago. 2011-05-23 19:59:01 +00:00
kgssapi
libkern Fix typos - remove duplicate "is". 2011-02-23 09:22:33 +00:00
mips Merge r221846 from largeSMP project branch: 2011-05-23 23:35:50 +00:00
modules Fix a typo, it is MPDU not MDPU. 2011-05-21 16:34:53 +00:00
net Rework netisr policy mechanism so that per-protocol dispatch policies can 2011-05-24 12:34:19 +00:00
net80211 Fix typo, it is MPDU not MDPU. 2011-05-21 16:41:41 +00:00
netatalk
netgraph usb: fix a missed use of use_generic in r222051 2011-05-18 11:38:36 +00:00
netinet Continue to refine inpcb reference counting and locking, in preparation for 2011-05-23 19:32:02 +00:00
netinet6 Move from passing a wildcard boolean to a general set up lookup flags into 2011-05-23 15:23:18 +00:00
netipsec Release SP's refcount in key_get_spdbyid(). 2011-05-09 13:16:21 +00:00
netipx
netnatm
netncp
netsmb Change some variables from int to size_t. This is more accurate since 2011-01-08 23:06:54 +00:00
nfs Change the sysctl naming for the old and new NFS clients 2011-05-15 20:52:43 +00:00
nfsclient Eliminate duplicate #include's. 2011-05-22 18:11:41 +00:00
nfsserver Add a lock flags argument to the VFS_FHTOVP() file system 2011-05-22 01:07:54 +00:00
nlm Add a lock flags argument to the VFS_FHTOVP() file system 2011-05-22 01:07:54 +00:00
ofed - Catch up to falloc() changes. 2011-04-26 07:30:52 +00:00
opencrypto After the r219999 is merged to stable/8, rename fallocf(9) to falloc(9) 2011-04-01 13:28:34 +00:00
pc98 Move VT switching hack for suspend/resume from bus drivers to syscons.c 2011-05-09 18:46:49 +00:00
pci Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
powerpc Add RTC support for the LV1 clock on the PS3. The hypervisor won't let us 2011-05-24 02:19:45 +00:00
rpc This patch is believed to fix a problem in the kernel rpc for 2011-04-27 18:19:26 +00:00
security - Add a FEATURE for capsicum (security_capabilities). 2011-03-04 09:03:54 +00:00
sparc64 Recognize the eeprom device found in Fujitsu PRIMEPOWER650 and 900. 2011-05-15 13:25:26 +00:00
sys Merge r221901 from largeSMP project branch: 2011-05-22 21:31:36 +00:00
teken Add proper build infrastructure for teken. 2011-05-09 16:27:39 +00:00
tools GNU awk does not output escaped newlines in multi-line printc statements. This 2011-03-31 21:33:33 +00:00
ufs Fix the ufs/ffs file system so that it uses the lock 2011-05-22 20:39:07 +00:00
vm Correct an error in r222163. Unless UMA_MD_SMALL_ALLOC is defined, 2011-05-22 17:46:16 +00:00
x86 Implement boot-time TSC synchronization test for SMP. This test is executed 2011-05-09 17:34:00 +00:00
xdr
xen Fix a few more SYSCTL_PROC() that were missing a CTLFLAG type specifier. 2011-01-19 00:57:58 +00:00
Makefile Disconnect sun4v architecture from the three. 2011-05-14 01:53:38 +00:00