cvs commit: src/sys/dev/bce if_bce.c if_bcereg.h

Scott Long scottl at FreeBSD.org
Sun Oct 15 23:42:58 UTC 2006


scottl      2006-10-15 23:42:57 UTC

  FreeBSD src repository

  Modified files:
    sys/dev/bce          if_bce.c if_bcereg.h 
  Log:
  Overhaul the transmit and dma paths:
  - Use bus_dmamap_load_mbuf_sg() to eliminate the need for the callback and
  all of the extra bookkeeping associated with it.
  - Eliminate the bce_dmamap_arg structure and streamline the memory allocation
  routines to not need it.  This does change some of the debugging messages.
  - Refactor the loop that fills the buffer descriptor so that it can be done
  with a single set of logic in a single loop instead of two sets of logic.
  - Eliminate the need to cache and pass descriptor indexes between the start
  loop and the encap function.
  - Change the start loop to always check the ifnet sendq for more work.
  
  This significantly helps the driver withstand large UDP workloads, though
  it's still not perfect.  I suspect the remaining work lies with handling
  the OACTIVE flag, and also in possibly streamlining the interrupt handler
  some.  It is, however, nearly on par with the other popular gigabit drivers
  in terms of stability now.
  
  Revision  Changes    Path
  1.14      +121 -203  src/sys/dev/bce/if_bce.c
  1.7       +0 -16     src/sys/dev/bce/if_bcereg.h


More information about the cvs-all mailing list