On Sun, Feb 20, 2005 at 05:57:56PM -0800, Alex Aizman wrote:
>
> That's what we do, simply because interrupts are coalesced.
>
> > The function doesn't do the full packet
> > processing, but just stuffs the packet into a CPU queue that
> > is processed at a lower priority interrupt (softirq).
>
> There's the netif_rx's own per-packet overhead (including the call itself)
> that arguably could be optimized..
netif_rx should be pretty cheap. It could be probably optimized more
(e.g. no local_irq_save if you know you're comming from
a interrupt or somehow avoiding the atomic reference count
increase on the device), but I suspect there are other
areas that could be improved first.
> > Most interesting would be to use per CPU TX completion
> > interrupts using MSI-X and avoid bouncing packets around between CPUs.
>
> Our experimental Linux driver already supports MSI and MSI-X (the latter not
> tested). Once/if multi-MSI support in Linux becomes available it'd be
> practically possible to scale TCP connections with a number of CPUs.
It's already available, although the API is still a bit clumpsy.
> Alternative: wait until Xframe II adapter w/MSI-X..
How does that help with MSI?
-Andi
|