Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Jan 2011 22:36:33 +0000 (UTC)
From:      Pyun YongHyeon <yongari@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/dev/usb/net if_axe.c
Message-ID:  <201101142236.p0EMae9O059531@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
yongari     2011-01-14 22:36:33 UTC

  FreeBSD src repository

  Modified files:        (Branch: RELENG_8)
    sys/dev/usb/net      if_axe.c 
  Log:
  SVN rev 217429 on 2011-01-14 22:36:33Z by yongari
  
  MFC r216284:
    r184610 changed the way how TX frames are handled on AX88178 and
    AX88772 controllers. ASIX added a new feature for AX88178/AX88772
    controllers which allows combining multiple TX frames into a single
    big frame. This was to overcome one of USB limitation where it
    can't generate more than 8k interrupts/sec which in turn means USB
    ethernet controllers can not send more than 8k packets per second.
    Using ASIX's feature greatly enhanced TX performance(more than 3~4
    times) compared to 7.x driver. However it seems r184610 removed
    boundary checking for buffered frames which in turn caused
    instability issues under certain conditions. In addition, using
    ASIX's feature triggered another issue which made USB controller
    hang under certain conditions. Restarting ethernet controller
    didn't help under this hang condition and unplugging and replugging
    the controller was the only solution. I believe there is a silicon
    bug in TX frame combining feature on AX88178/AX88772 controllers.
  
    To address these issues, reintroduce the boundary checking for both
    AX88178 and AX88772 after copying a frame to USB buffer and do not
    use ASIX's multiple frame combining feature. Instead, use USB
    controller's multi-frame transmit capability to enhance TX
    performance as suggested by Hans[1].
    This should fix a long standing axe(4) instability issues reported
    on AX88772 and AX88178 controllers. While I'm here remove
    unnecessary TX frame length check since upper stack always
    guarantee the size of a frame to be less than MCLBYTES.
  
    Special thanks to Derrick Brashear who tried numerous patches
    during last 4 months and waited real fix with patience. Without
    this enthusiastic support, patience and H/W donation I couldn't fix
    it since I was not able to trigger the issue on my box.
  
    Suggested by: hselasky [1]
    Tested by:    Derrick Brashear (shadow <> gmail dot com>
    H/W donated by:       Derrick Brashear (shadow <> gmail dot com>
    PR:           usb/140883
  
  Revision   Changes    Path
  1.12.2.18  +31 -42    src/sys/dev/usb/net/if_axe.c



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