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

John Polstra jdp at
Thu Nov 16 04:04:08 UTC 2006

jdp         2006-11-16 04:04:07 UTC

  FreeBSD src repository

  Modified files:
    sys/dev/bce          if_bce.c 
  In bce_start_locked, check the used_tx_bd count rather than the
  descriptor's mbuf pointer to see if the transmit ring is full.  The
  mbuf pointer is set only in the last descriptor of a
  multi-descriptor packet.  By relying on the mbuf pointers of the
  earlier descriptors, the driver would sometimes overwrite a
  descriptor belonging to a packet that wasn't completed yet.  Also,
  tx_chain_prod wasn't updated inside the loop, causing the wrong
  descriptor to be checked after the first iteration.  The upshot of
  all this was the loss of some transmitted packets at medium to high
  packet rates.
  In bce_tx_encap, remove a couple of old statements that shuffled
  around the tx_mbuf_map pointers.  These now correspond 1-to-1 with
  the transmit descriptors, and they are not supposed to be changed.
  Correct a couple of inaccurate comments.
  MFC after:      1 month
  Revision  Changes    Path
  1.20      +8 -8      src/sys/dev/bce/if_bce.c

More information about the cvs-all mailing list