(Linus, please do not apply this. After some patch review, I'll send this to you along with driver updates to use it) Attached is a patch against 2.4.3-pre6, which adds alloc_etherdev and variants to the driver API. This API addition should allow us to close the gaping race between init_etherdev call time, and when the network device is actually ready. This version removes the DECLARE_xxx at the request of the crowd. Hooray for cut-n-paste code... please check for errors. Driver API changes for this stable kernel series are: * Six functions added, * Four prototypes moved from netdevice.h to foodevice.h, and * No behavior changes, no code changes requiring immediate driver updates Main change in this patch: * New functions alloc_etherdev, alloc_fddidev, alloc_hippi_dev, alloc_fcdev, alloc_trdev Cleanup changes in this patch: * Move prototypes from netdevice.h to foodevice.h: [un]register_fcdev, [un]register_trdev * Add inline source docs for init_xxxdev * Move EXPORT_SYMBOL for public functions from net/netsyms.c to net_init.c * New function register_hipdev, for API completeness * Remove duplicate code from unregister_hipdev, [un]register_trdev, [un]register_fcdev * tr_setup was exported but did nothing. Rename tr_configure to tr_setup, remove old no-op tr_setup. -- Jeff Garzik | More novel than War and Peace Building 1024 | More tongue-in-cheek than a lesbian orgy MandrakeSoft | Sneakin' up like celery, yeah I'm stalkin'