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-src
mailing list