git: emx: Implement multiple hardware TX queue support; disabled by default

Sepherosa Ziehau sephe at crater.dragonflybsd.org
Fri Feb 8 02:33:27 PST 2013


commit d84018e9fb36a00a2dc66fc24ff89725c03b0190
Author: Sepherosa Ziehau <sephe at dragonflybsd.org>
Date:   Thu Feb 7 14:38:04 2013 +0800

    emx: Implement multiple hardware TX queue support; disabled by default
    
    Two notes about the multiple hardware TX queue support:
    
    - It could only be enabled on 82571, 82572 and es2lan.  Enabling it on
      82574, whose datasheet claims multiple hardware TX queue support,
      could cause watchdog timeout when heavy TCP receiving test are
      conducted.
    
    - It is disabled by default.  Since 82571, 82572 and es2lan only have
      one global context for TX hardware checksum and TSO, the driver will
      have to setup TX context descriptor for each packet.  Using TX context
      descriptor for each packet could cause serious transmission performance
      regression for tiny packets, see comment of following commit:
      51e6819fc2ad7cefdf830dcc9f20bcbe2af2aa52
    
      However, multiple hardware TX queues still could be enabled depending
      on the workload (*):
      o  TSO probably are not affected by setting up a TX context descriptor
         for each TSO packet.
      o  Stuffs do not using hardware TX checksum, e.g. IP fast forwarding.
    
      Multiple hardware TX queues could be enabled globally by tunable:
          hw.emx.txr=2
      Multiple hardware TX queues could be enabled on individual interface by
      tunable:
          hw.emxY.txr=2
    
    (*) Another thought is to add per-interface metric, which indicates the
    size of packets that worth hardware checksum; if the packets' size is
    below that metric, software checksum is used.

Summary of changes:
 sys/conf/options           |   1 +
 sys/config/LINT            |   1 +
 sys/config/LINT64          |   1 +
 sys/dev/netif/emx/if_emx.c | 598 ++++++++++++++++++++++++++++++---------------
 sys/dev/netif/emx/if_emx.h |  25 +-
 5 files changed, 420 insertions(+), 206 deletions(-)

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


-- 
DragonFly BSD source repository


More information about the Commits mailing list