cvs commit: src/sys/dev/bge if_bge.c if_bgereg.h

Gleb Smirnoff glebius at FreeBSD.org
Thu Dec 8 08:12:38 PST 2005


glebius     2005-12-08 16:11:45 UTC

  FreeBSD src repository

  Modified files:
    sys/dev/bge          if_bge.c if_bgereg.h 
  Log:
  A big rewrite of receive Jumbo frame handling. Remove the local Jumbo
  cluster allocator, that wasn't MPSAFE. Instead, utilize our new generic
  UMA jumbo cluster allocator. Since UMA gives us a 9k piece that is contigous
  in virtual memory, but isn't contigous in physical memory we need to handle
  a few segments. To deal with this we utilize Tigon chip feature - extended
  RX descriptors, that can handle up to four DMA segments for one frame.
  
  Details:
  
  o Remove bge_alloc_jumbo_mem(), bge_free_jumbo_mem(),
    bge_jalloc(), bge_jfree() functions.
  o Remove SLIST heads, bge_jumbo_tag, bge_jumbo_map from softc.
  o Use extended RX BDs for Jumbo receive producer ring, and
    initialize it appropriately.
  o New bge_newbuf_jumbo():
    - Allocate an mbuf with Jumbo cluster with help of m_cljget().
    - Load the cluster for DMA with help of bus_dmamap_load_mbuf_sg().
    - Assert that we got 3 segments in the DMA mapping.
    - Fill in these 3 segments into the extended RX descriptor.
  
  Revision  Changes    Path
  1.103     +49 -233   src/sys/dev/bge/if_bge.c
  1.39      +26 -15    src/sys/dev/bge/if_bgereg.h


More information about the cvs-all mailing list