Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 May 2011 12:34:19 +0000 (UTC)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/net netisr.c netisr.h netisr_internal.h
Message-ID:  <201105241234.p4OCYbUG003969@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
rwatson     2011-05-24 12:34:19 UTC

  FreeBSD src repository

  Modified files:
    sys/net              netisr.c netisr.h netisr_internal.h 
  Log:
  SVN rev 222249 on 2011-05-24 12:34:19Z by rwatson
  
  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.
  
  Revision  Changes    Path
  1.42      +231 -55   src/sys/net/netisr.c
  1.47      +16 -3     src/sys/net/netisr.h
  1.2       +2 -1      src/sys/net/netisr_internal.h



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201105241234.p4OCYbUG003969>