> Just queuing the packet in netif_rx() *should* take minimal extra work, and
> have minimal cache impact. Dropping the packet because the queue layer is
> full should take even less work.
It is true, it does not take any time. But we need not this.
We need to do some work in the worst conditions, rather then to serve
as perfect blackhole. Linux as it is, is perfect blackhole.
We need that driver leaved us some time for packet processing.
Not all the OS exists to serve driver, but driver exists to allow
this OS to do some useful work.
Look at HW_FLOWCONTROL, by the way. It is crappy, but it is real move,
rather than useless talks. And it really works at least, when process
context is not involved (i.e. forwarding).
> I think that some people have been making the assumption that it's the
> driver itself that is slow..
And some people avoid to assume anything before profiling. 8)