Among the 3 class of drivers, I would say that the network drivers are the hardest to code/debug but if you're really interested, have a look here:
http://lwn.net/images/pdf/LDD3/ch17.pdf
http://lwn.net/images/pdf/LDD3/
If its for Linux 2.0,2.2,2.4 then you probably should look here:
http://www.xml.com/ldd/chapter/book/ch14.html
I used this one to code a network driver, there is some information but it's not sufficent. You can also look directly at the kernel source (the best documentation)
In any case, you will need information for your chipset : registrer, GPIO,... which is not always available and then there is no luck
Happy coding