|
|
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?
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.