git: kernel - Force manual hash calculation for IP fragments

Matthew Dillon dillon at crater.dragonflybsd.org
Fri Jun 27 10:28:17 PDT 2014


commit aecff6d16ba3e705aa6b0aaae2be1f9ef0e4e37c
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Fri Jun 27 10:24:24 2014 -0700

    kernel - Force manual hash calculation for IP fragments
    
    * Hardware toeplitz hashes do not always distinguish IP fragments from
      full IP packets.  An IP fragment will typically have the
      (src,dst,srcport,dstport) in the first fragment, but will only have
      (src,dst) in the remaining fragments.  The HW might not understand this
      and generate hashes which prevent the fragments from being directed to
      the same cpu.
    
    * Force a manual recalculation of the hash (ignore the HW hash) for any
      IP fragment.  That is, any IP packet with the IP_MF bit set or with a
      non-zero offset (masked by IP_OFFMASK).
    
    * Direct all IP fragments to a target cpu based on the hash.  We previously
      directed all IP fragments to cpu 0.
    
    * NOTE: The IP fragment handling code in the kernel is still serialized with
    	a lock.  This will be addressed in a later commit.  However, fragments
    	which are piped into PF will now be properly distributed across
    	available cpus.
    
    Submitted-by: sephe

Summary of changes:
 sys/netinet/ip_demux.c |  6 ++----
 sys/netinet/ip_input.c | 43 ++++++++++++++++++-------------------------
 2 files changed, 20 insertions(+), 29 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/aecff6d16ba3e705aa6b0aaae2be1f9ef0e4e37c


-- 
DragonFly BSD source repository



More information about the Commits mailing list