Hi!
lance.c emulation implements incorrect algorithm to scan receive/transmit descriptors:
- it scans a whole ring of descriptors instead of stopping at first owned by host
- it skips buffers in corner cases
- card is not reset, current rx/tx descriptor number is not reset when card is stopped by driver
Attached patch should fix these problems.
On-demand packet transmission is also implemented.
Without this patch I had ~500 byte/second transfers with qemu-system-sparc,
now it network speed is much better :)
Looking at 7990 chip docs (main chip on lance card) it seems like there are more features
not implemented; e.g. 1.6ms timer is needed to implement "normal" transmission.