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]