Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Jan 2010 00:44:54 +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:  <201001070045.o070j56S058299@repoman.freebsd.org>

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

  FreeBSD src repository

  Modified files:        (Branch: RELENG_8)
    sys/dev/bge          if_bge.c if_bgereg.h 
  Log:
  SVN rev 201702 on 2010-01-07 00:44:54Z by yongari
  
  MFC r199670-199671,199674,199679,199761,199807-199808
  
  r199670:
    Fix two long standing bugs on bge(4). Most pre BCM5755 controllers
    have a DMA bug when buffer address crosses a multiple of the 4GB
    boundary(e.g. 4GB, 8GB, 12GB etc). Limit DMA address to be within
    4GB address for these controllers. The second DMA bug limits DMA
    address to be within 40bit address space. This bug applies to
    BCM5714 and BCM5715 and 5708(bce(4) controller). This is not
    actually a MAC controller bug but an issue with the embedded PCIe
    to PCI-X bridge in the device. So for BCM5714/BCM5715 controllers
    also limit the DMA address to be within 40bit address space.
    Special thanks to davidch@ who gave me detailed errata information.
    I think this change will fix long standing bge(4) instability
    issues on systems with more than 4GB memory.
  
  r199671:
    Implement TSO for BCM5755 or newer controllers. Some controllers
    seem to require a special firmware to use TSO. But the firmware is
    not available to FreeBSD and Linux claims that the TSO performed by
    the firmware is slower than hardware based TSO. Moreover the
    firmware based TSO has one known bug which can't handle TSO if
    ethernet header + IP/TCP header is greater than 80 bytes. The
    workaround for the TSO bug exist but it seems it's too expensive
    than not using TSO at all. Some hardwares also have the TSO bug so
    limit the TSO to the controllers that are not affected TSO issues
    (e.g. 5755 or higher).
    While I'm here set VLAN tag bit to all descriptors that belengs to
    a frame instead of the first descriptor of a frame. The datasheet
    is not clear how to handle VLAN tag bit but it worked either way in
    my testing. This makes it simplify TSO configuration a little bit.
  
    Big thanks to davidch@ who sent me detailed TSO information.
    Without this I was not able to implement it.
  
  r199674:
    Add missing function prototype in r199671.
  
  r199679:
    Reduce status block size DMAed by controller. bge(4) uses single
    Tx/Rx/Rx return ring such that large part of status block was not
    used at all. All bge(4) controllers except BCM5700 AX/BX has a
    feature to control the size of status block. So use minimum status
    block size allowed in controller. This reduces number of DMAed
    status block size to 32 bytes from 80 bytes.
  
  r199761:
    BGE_FLAG_40BIT_BUG should be set before creating DMA tags.
  
  r199807:
    Make sure one shot MSI is enabled.
  
  r199808:
    Fix typo which inversed the logic which in turn disabled MSI.
  
  Revision    Changes    Path
  1.226.2.12  +196 -38   src/sys/dev/bge/if_bge.c
  1.83.2.8    +16 -3     src/sys/dev/bge/if_bgereg.h



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