From: Jesse Brandeburg <[EMAIL PROTECTED]> Date: Fri, 14 Apr 2006 15:43:02 -0700 (Pacific Daylight Time)
> Please help me understand how you think it should work when we have a > device that wants to receive a packet using header in the skb->data, and > application data in the ->frags[]? If you're removing the pages from ->frags[] and you already accounted for them in skb->truesize, then yes I guess it could be correct to subtract it back out. Looking at S2IO it's doing something very wrong with it's modification of skb->truesize. It's not changing the amount of memory allocated to an SKB in any way yet it's bumping skb->truesize for some reason. That will definitely lead to performance problems. That's why generally when we see an skb->truesize modification, it's just assumed to be a bug, it's generally not necessary but may be so in your e1000 situation here. Another problem to look out for is that once a socket has a reference to an SKB you must never ever modify skb->truesize because doing so will break socket memory accounting. There is exactly one spot in the TCP stack where we are able to do this by adjusting the socket memory accounting variables carefully in a locked context at the same time, but otherwise it's not safe to modify skb->truesize when there is an attached socket. - 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