Lars Povlsen <[EMAIL PROTECTED]> writes: > Unless the fragments (notably the first - the ethernet header) are > squirelled away, it will be thrashed randomly by subsequent stack use. > > So is this a bug? > > Off course, other network stacks may have better characteristics, but > at least redboot will exhibit random data thrashing if I use straight > DMA. The occurrence will be dependent on how fast the DMA is started > (other system/network) activity - which may be non-existing in the > redboot - > which could explain why this apparently is not a problem...?
RedBoot doesn't use interrupts, so eth_drv_write() is synchronous. The implementation of eth_drv_write() used by the RedBoot stack polls until the packet has been sent. The send() routine is called, then the driver's poll() routine is called repeatedly until the tx_done() routine is called, then eth_drv_write() returns. The ethernet drivers are only asynchronous when interrupts are available, and only the BSD and LwIP stacks are able to take advantage of that since they run with the kernel enabled. -- Nick Garnett eCos Kernel Architect http://www.ecoscentric.com The eCos and RedBoot experts
