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

Reply via email to