The stuff in this directory contains some not yet finished drivers for
ethernet boards based on the AMD LANCE (AM7990) and for the PAM's DMA
ethernet adaptors. Other boards will be supported as soon as Kay has
implemented some new IOCTLs necessary for passing a HW address to the
driver.

Note: The Riebel Card and the TUM board don't have their complete HW address
in a ROM. I don't know if the developers at TU Wien or TU München got some
HW address space from the internic. If anyone has information about that
please let me know. In that case I would use officially assigned addresses
within the driver.

The LANCE driver is quite stable now but there are still some optimizations
to do. 
The first published version (0.0) is based on the code of the TU Wien
package to which I added LANCE support for PAM's boards. This code was ported
to Kay's dummyeth. The actual driver uses only some definitions and some
initialization code of the TU Wien package. I have completely
rewritten most of the code.
Planned features and changes:
- Use more than one send buffer and enqueue packets to send if the send
  buffer is full. Dequeue and send queued packets in the interrupt routine.
  It should be alright to use two buffers and write to them in an alternating
  manner.
- "Follow" the LANCE through the receive buffer. At the moment the receive
  buffer is always scanned from the start. So when the LANCE receives two
  packets in fast succession and its receive buffer pointer wraps before the
  interrupt routine scans the buffer the packet received later will be passed
  first to the upper layers. This is not a serious problem since noone
  guarantees packets to arrive "in order". But the following algorithm seems
  better to me:
  - start the scan at a previously marked position
  -    if there is a packet at the actual scan position mark its position+1
          and pass the packet to the upper layers
  - do until the whole receive buffer is scanned
  Since there is no way to get the LANCE's ring pointers this is the only way
  to "follow" the LANCE.
- Real probing is missing yet so the driver simply crashes when there is no
  board installed.
- The LANCE should be started in the lance_open function.
- It should be possible to reset the LANCE.
- The LANCE should be stopped in the lance_close function.


DON'T TRY THESE DRIVERS UNLESS YOU ARE ABSOLUTELY SURE WHAT YOU ARE DOING.
I'm not responsible for any crashed harddisk or so.

If you have any suggestions, flames, hints or so do not hesitate to contact me.
My address:
Torsten Lang
Pestalozzistr. 9A
61231 Bad Nauheim
EMail: Torsten.Lang@physik.uni-giessen.de
