minix/drivers/dpeth
Cristiano Giuffrida 48c6bb79f4 Driver refactory for live update and crash recovery.
SYSLIB CHANGES:
- DS calls to publish / retrieve labels consider endpoints instead of u32_t.

VFS CHANGES:
- mapdriver() only adds an entry in the dmap table in VFS.
- dev_up() is only executed upon reception of a driver up event.

INET CHANGES:
- INET no longer searches for existing drivers instances at startup.
- A newtwork driver is (re)initialized upon reception of a driver up event.
- Networking startup is now race-free by design. No need to waste 5 seconds
at startup any more.

DRIVER CHANGES:
- Every driver publishes driver up events when starting for the first time or
in case of restart when recovery actions must be taken in the upper layers.
- Driver up events are published by drivers through DS. 
- For regular drivers, VFS is normally the only subscriber, but not necessarily.
For instance, when the filter driver is in use, it must subscribe to driver
up events to initiate recovery.
- For network drivers, inet is the only subscriber for now.
- Every VFS driver is statically linked with libdriver, every network driver
is statically linked with libnetdriver.

DRIVER LIBRARIES CHANGES:
- Libdriver is extended to provide generic receive() and ds_publish() interfaces
for VFS drivers.
- driver_receive() is a wrapper for sef_receive() also used in driver_task()
to discard spurious messages that were meant to be delivered to a previous
version of the driver.
- driver_receive_mq() is the same as driver_receive() but integrates support
for queued messages.
- driver_announce() publishes a driver up event for VFS drivers and marks
the driver as initialized and expecting a DEV_OPEN message.
- Libnetdriver is introduced to provide similar receive() and ds_publish()
interfaces for network drivers (netdriver_announce() and netdriver_receive()).
- Network drivers all support live update with no state transfer now.

KERNEL CHANGES:
- Added kernel call statectl for state management. Used by driver_announce() to
unblock eventual callers sendrecing to the driver.
2010-04-08 13:41:35 +00:00
..
3c501.c Lots of const correctness, other cleanup. 2010-04-01 12:51:31 +00:00
3c501.h Import of dpeth 3c501/3c509b/.. ethernet driver by 2005-06-29 10:16:46 +00:00
3c503.c Convert drivers/ and servers/ over to bsdmake 2010-03-22 21:25:22 +00:00
3c503.h Import of dpeth 3c501/3c509b/.. ethernet driver by 2005-06-29 10:16:46 +00:00
3c509.c Lots of const correctness, other cleanup. 2010-04-01 12:51:31 +00:00
3c509.h Import of dpeth 3c501/3c509b/.. ethernet driver by 2005-06-29 10:16:46 +00:00
8390.c Lots of const correctness, other cleanup. 2010-04-01 12:51:31 +00:00
8390.h Remove double-blank lines (Al) 2005-08-22 15:17:42 +00:00
devio.c More use of endpoint_t. Other code cleanup. 2010-03-30 14:07:15 +00:00
dp.c Driver refactory for live update and crash recovery. 2010-04-08 13:41:35 +00:00
dp.h More use of endpoint_t. Other code cleanup. 2010-03-30 14:07:15 +00:00
Makefile Driver refactory for live update and crash recovery. 2010-04-08 13:41:35 +00:00
ne.c Convert drivers/ and servers/ over to bsdmake 2010-03-22 21:25:22 +00:00
ne.h Import of dpeth 3c501/3c509b/.. ethernet driver by 2005-06-29 10:16:46 +00:00
netbuff.c Convert drivers/ and servers/ over to bsdmake 2010-03-22 21:25:22 +00:00
README Import of dpeth 3c501/3c509b/.. ethernet driver by 2005-06-29 10:16:46 +00:00
wd.c Convert drivers/ and servers/ over to bsdmake 2010-03-22 21:25:22 +00:00
wd.h Remove double-blank lines (Al) 2005-08-22 15:17:42 +00:00

This is my implementation of a new network task 
for the Minix kernel.  I did it initially to handle
a 3c501 board (Etherlink), but those board are so
unstable that it is not worth using them except for
learning how to implement a driver.  When I got a
3c509b board (Etherlink III) it was easier to
write the code to handle them.  

The Minix code in 'dp8390.c' is too specific for the
National chip set, so what I did was to remove as 
much as I needed of the code dependant from the chip
and produce a generic task that, I hope, will be able
to handle many more cards.

$Log$
Revision 1.1  2005/06/29 10:16:46  beng
Import of dpeth 3c501/3c509b/.. ethernet driver by
Giovanni Falzoni <fgalzoni@inwind.it>.

Revision 1.3  2004/04/14 12:49:07  lsodgf0
Changes for porting to Minix 2.0.4 run on BOCHS

Revision 1.2  2002/03/25 14:16:09  lsodgf0
The driver for the NEx000 has been rewritten to be
operational with the ACCTON 18xx (an NE1000 clone)
The I/O routines for 16 bit cards are still untested..

Revision 1.1  2002/02/09 09:35:09  lsodgf0
Initial revision
The package is not fully tested, i.e. I had only 3Com
boards (3c501, 3c503, 3c503/16 and 3c509b) and WD8003.
I got also a NE1000 clone but it was not fully
operational and I could not appreciate the results.
For this reason the changes done to the interface
to I/O for 8 and 16 bits are not tested.
  
$Id$