> That is sort of fixable but does require some kind of irq awareness. In
> netif_rx
>
> if(skb_queue_len(&backlog)>200)
> {
> /* This wont always be the right victim but statistically
> speaking we punish the guilty party. Van would probably
> argue we should pick an entry at random from the queue
> and disable its IRQ, but we cant do that O(1) */
> disable_irq(skb->dev->irq);
> }
Effectively, it is the thing, which is called CONFIG_NET_HW_FLOWCONTROL.
Only throttling function is leaved to device driver, so that
it may throttle only receive direction. Again, tulip and 8390 only.
BTW current 8390 uses disable_irq(), it is pretty strange.
disable_irq()/enable_irq() is not reentrable combination.
hw_flowcontrol appeared superb solution in some situations,
but it did not all the problem, only shifted point of disaster.
Alexey
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/