Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Jan 2010 00:55:07 +0000 (UTC)
From:      Pyun YongHyeon <yongari@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/dev/bge if_bge.c if_bgereg.h
Message-ID:  <201001070055.o070tT0P069549@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
yongari     2010-01-07 00:55:07 UTC

  FreeBSD src repository

  Modified files:        (Branch: RELENG_8)
    sys/dev/bge          if_bge.c if_bgereg.h 
  Log:
  SVN rev 201706 on 2010-01-07 00:55:07Z by yongari
  
  MFC r200088,200227-200228,200246,200264,201446
  
  r200088:
    Add workaround to overcome hardware limitation which allows only a
    single outstanding DMA read operation. Most controllers targeted to
    client with PCIe bus interface(e.g. BCM5761) may have this
    limitation. All controllers for servers does not have this
    limitation.
    Collapsing mbuf chains to reduce number of memory reads before
    transmitting was most effective way to workaround this. I got about
    940Mbps from 850Mbps with mbuf collapsing on BCM5761. However it
    takes a lot of CPU cycles to collapse mbuf chains so add tunable to
    control the number of allowed TX buffers before collapsing. The
    default value is 0 which effectively disables the forced collapsing.
    For most cases 2 would yield best performance(about 930Mbps)
    without much sacrificing CPU cycles.
    Note the collapsing is only activated when the controller is on
    PCIe bus and the frame does not need TSO operation. TSO does not
    seem to suffer from the hardware limitation because the payload
    size is much bigger than normal IP datagram.
    Thanks to davidch@ who told me the limitation of client controllers
    and actually gave possible workarounds to mitigate the limitation.
  
  r200227:
    Remove PHY isolate/power down code in bge_stop(). The isolation
    handler in brgphy(4) does not exist and brgphy(4) just resets the
    PHY and returns EINVAL as it has no isolation handler. I also agree
    on Marius's opinion that stop handler of every NIC driver seems to
    be the wrong place for implementing PHY isolate/power down.
    If we need PHY isolate/power down it should be implemented in
    brgphy(4) and users should administratively down the PHY.
  
  r200228:
    Don't access jumbo frame related registers if controller lacks the
    feature. These registers are reserved on controllers that have no
    support for jumbo frame.
    Only BCM5700 has mini ring so do not poke mini ring related
    registers if controller is not BCM5700.
  
  r200246:
    Partially revert r200228. For mini RCB case, bge(4) still have to
    disable mini ring withtout regard to mini ring support.
  
  r200264:
    Create sysctl node(dev.bge.%d.focred_collapse) instead of
    hw.bge.forced_collapse. hw.bge.forced_collapse affects all bge(4)
    controllers on system which may not desirable behavior of the
    sysctl node. Also allow the sysctl node could be modified at any
    time.
  
  r201446:
    Fix regression introduced in r198318. BCM5754/BCM5754M uses the
    same ASIC ID of BCM5758 such that r198318 incorecctly enabled TSO
    on BCM5754.BCM5754M controllers. BCM5754/BCM5754M needs a special
    firmware to enable TSO and bge(4) does not support firmware based
    TSO.
  
  Revision    Changes    Path
  1.226.2.13  +56 -32    src/sys/dev/bge/if_bge.c
  1.83.2.9    +1 -0      src/sys/dev/bge/if_bgereg.h



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