Second - I've got some documentation and i think i could try to make the e100/1000 driver. Now i have de DOS drivers, linux e100 stable sources e1000 stable sources etc... (anyone can get it on internet)
Does anyone could help me about network driver coding requirements or a "start point"?
Currently all net drivers are built in KolibriOS kernel. You can take a look at them for example here
Many of these drivers were done with the help of etherboot drivers source, which you can find here
(see "src\drivers\net\e1000" directory or "src\drivers\net\e1000e"). So I suggest you also to write driver with the help of etherboot driver source.
For the first you have to find your card PCI VID and DID and find which module (e1000_82540, e1000_82541, e1000_82542 or e1000_82543) in that directory is for your card (see pci_device_id
structure at the bottom of a module). The other files in that directory are common to all e1000 cards.
Second - I assume that you can read in C language so you can understand that code.
You have to understand the stucture of that driver. So how to do it? I use my own method of "Call tree" and suggest it to you, but of cause you can use any method you like."Call tree" method.
For the first get a pen and a piece of paper.Step 1. File structure.
You have to write names of all modules that belong your driver on paper and give every module a unical Latin capital symbol, i.e.
Choose among these modules that have functions' and macroses' definitions and enumerate all functions and macroses (its names) that module contain. Be carefull and don't skip any function or macros !
After you enumerate all function/macros definitions in all modules (that contain it) you can go to step 2.Step 2. Call tree
Final step where you have to build a tree of function/macros calls.
We start to build tree from the root which is the entry point of the driver. In this case e1000_probe
Place function names into subtree in order.
Place every function name only once in the current function subtree even if a function called several times whithin this function.
Level 1 would contain all function that were called in Level 0. For every such function you have to build its own tree.
After you complete Level 1, you go to Level 2 where you build subtrees of all functions that are called on Level 1, and were not already build on previous levels then to Level 3 and so on until you reach the bottom (or heap) of the tree. Leafs of the tree are the most simple and base functions. Of cause you don't need to include into your tree standard functions such as memcpy, alloc etc. You also don't have to build subtree of functions that are external to your driver, but if you don't understand what they do you have to take a look at them later.
After your "Call tree" build complete, you can filter functions that are not used at all, wrappers etc. You also can change function names in the Call tree to their "code names" i.e. instead of e1000_reset_hw_82540
, instead of e1000_probe
This method helps to understand abstraction layers of any code easier.
Also note that in the future new network stack
will be integrated into the KolibriOS official brunch.