From: Rick Jones <[EMAIL PROTECTED]> Date: Tue, 28 Aug 2007 16:48:24 -0700
> Not to defend any one driver, but could it be that the behaviour of TCP > is such that we've not noticed until now? > > Does TCP particularly care for an SKB carrying an ACK? For ones carrying > data there would be an ACK arriving before TCP could "really" free them > right? And that ACK (rx event) could very well come after some other TX > completion, or perhaps trigger cleaning up TXs in the driver at that time? > > And a UDP app is as likely as not to be request/response in nature, with the > response behaving at the driver level rather like a TCP ACK in terms of the > above. The issue is not ACKs or anything of that nature, but socket buffer accounting. We can't release the socket until all transmit packets have been liberated and their size subtracted from the send buffer quota. Because these packets have their skb->destructor and skb->sk set to reference that socket and the protocol code that manages it's send buffer allocations. In the worst possible case, using UDP as an example, let's say one big packets fits in the send buffer and this is the one last packet that gets into the devices TX ring. It never liberates the packet, and if that is the only application generating traffic in the system we deadlock. Devices need to free packets in a deterministic amount of time, no matter what. I don't even understand why this needs to be discussed to be honest with you :-) - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html