Garrett D'Amore wrote:

> But there are significant problems with layer 2.  I think you need to 
> look outside of layer 3 if you want to address all the performance, 
> scalability performance problems.  (Frankly, IMO, Solaris' layer 3 
> implementation is pretty darn good.  We fall down on layer 2 and 
> "infrastructure" performance related issues, which is why I think 
> Darren's suggestion has so much merit.
 >
> A simple run of er_kernel on real device drivers shows that a majority 
> of time doing processing is spent in layer 2.  (At least for IP 
> forwarding.  I'll grant that host-terminated traffic may look 
> different.)  I'd really like to make it easier for layer 2 to be 
> performant.

If a device driver calls msgdsize multiple times for the same packet, 
then I suggest the device driver should be fixed.

If the GLD framework causes msgdsize to be called multiple times for the 
same packet, then it might make sense to expand on the GLD interfaces to 
pass the packet length along.

But I've seen device drivers that don't call msgdsize at all. For 
instance by structuring the driver as
        if (mp->b_cont == NULL) {
                allocate a single xmit desciptor
                set length in descriptor to mp->b_wptr - mp->b_rptr
                ...
        } else if (mp->b_cont->b_cont == NULL) {
                allocate two xmit descriptors
                ...
        ...

This doesn't seem like rocket science to me.

    Erik



_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to