vhiz wrote: > The opensolaris version that I am using is pre-crossbow. In general, can I > say that a received packet’s trip can be classified into three stages: > • Packet is transferred from network interface card (NIC) to ring buffer. The > NIC and device driver manage and controls this process. > • Packet is transferred from ring buffer to a socket receive buffer, driven > by a software interrupt request (softirq). The kernel protocol stack handles > this stage. > • Packet data is copied from the socket receive buffer to the application.
Perhaps a nit, but the above descriptions sound more like BSD or Linux to me. The stack processing isn't exactly done on a single software interrupt. Obviously, it'll help to read the code, but the first thing to understand is that (depending on the exact version of the code you're looking at) the drivers may be implemented using either STREAMS-based DLPIv2 or the "Nemo" interfaces. If STREAMS-based, then there's often an upper and lower interrupt in the driver, and the delivery into IP might be done with putq() or putnext(), which affects the context in which the work is done. Nemo has a different set of issues and can result in processing in interrupt or squeue context. There's a similar issue at the top of the stack where you run into either the older STREAMS-based sockfs layer or the newer "Volo" sockets. So ... what exactly are you looking for? A design document? Pointers to the code? Or something else? If it's design documents, you can find a lot of what you might be interested in by digging through the PSARC archives, particularly for the Nemo and Volo cases. -- James Carlson 42.703N 71.076W <carls...@workingcode.com> _______________________________________________ networking-discuss mailing list networking-discuss@opensolaris.org