Annotation of driverkit/notes/enetOld.questions, revision 1.1.1.1

1.1       root        1: Ethernet questions
                      2: 
                      3: 1) current driver - how is enprobe() called? It's in bus_driver endriver, but
                      4:    I don't see where it's referred to...
                      5:    > in ioconf.c - endriver inferred (during config) from en0 in MASTER.next?
                      6:    
                      7: 2) netif stuff: In Unix server? In kernel? In separate task containing all of
                      8:    the network drivers and protocols etc.?
                      9:    
                     10:    In Unix server:
                     11:      -- easy to implement "Network Object" which provides methods analogous 
                     12:         to init_func, input_func, etc. (args to if_attach()). 
                     13:        
                     14:      -- very dirty to implement all of the functions in netif (e.g.,
                     15:         if_oerrors(), if_oerrors_set(), etc.). Need objc interface to
                     16:        all of these (in Unix server, accessible from network driver tasks)?
                     17:        Or RPCs to Unix server? Who would do all of this?
                     18:        
                     19:        -- a lot of these (like if_oerrors(), if_oerrors_set()) are pretty
                     20:           dumb and shouldn't require RPCs. Just maintain this stuff
                     21:           locally; these functions could be provided by NetworkDevice
                     22:           superclass.
                     23:           
                     24:        -- Necessary netif functions (called by driver, in netif.c):
                     25:        
                     26:                if_attach
                     27:                if_down
                     28:                if_handle_input (rld'd into driver task)?
                     29: 
                     30:      -- rld things like venip_input (the if_input function, in
                     31:         net/if_venip.c) into Enet task? What happens to the current 
                     32:        ifnet.if_input?
                     33:        
                     34:      -- What about ifnet.if_getbuf()? Seems way too expensive to do an RPC
                     35:         every time you do need to get an output buffer (one RPC to get
                     36:        the buffer, one to send to the driver). Also, mbuf chains ain't
                     37:        gonna work across RPCs. Need to unroll mbuf chains to get one
                     38:        continguous piece of vm to send to driver task...
                     39: 
                     40:      -- besides, this doesn't really seem right...IP is not Unix!
                     41:      
                     42:      -- How are we going to provide 3rd party network protocol support? 
                     43:         Rld into Unix server? Huh-uh. 
                     44:        
                     45:    In kernel: 
                     46:      -- could implement the netif functions needed by driver task as
                     47:         traps...seems kind of kludgy.
                     48:      
                     49:    One big "network" task, rld'd into at run time for 3rd party or optional
                     50:    protocols:
                     51:       -- rld inherently evil?
                     52:       -- use existing netif, or redo it in ObjC?
                     53:      
                     54:    Separate task for each driver and protocol:
                     55:       -- seems cleanest from one point of view (no rld, one module can't 
                     56:          crash another)
                     57:       -- Redo entire netif in ObjC? What's the interface to the rest of the 
                     58:          world (i.e., Unix and the kernel)? IODevice? NetworkDevice?

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.