From: Jesse Brandeburg <[EMAIL PROTECTED]>
Date: Tue, 31 Jan 2006 16:27:59 -0800 (Pacific Standard Time)

> Assuming a 1500 mtu, This appears to be due to e1000 allocating 2k buffers 
> for hardware + 2 bytes of alignment to align the ip header (NET_IP_ALIGN), 
> to which then dev_alloc_skb adds 16 bytes.  There is a final alloc_skb 
> call of 2048 + 16 + 2 bytes, which then comes from 4096 byte slab.
> 
> skb->truesize is 4k, this is used to compute the socket buffer charge, and 
> also to limit window size, which in turn limits our future window growth.

Just because it comes from a 4K slab doesn't mean the truesize
will be set to 4K.

It is the rounded up size you specify to alloc_skb() plus the
size of "struct sk_buff" and "struct skb_shared_info".

Therefore, what SLAB gets used has no bearing on the skb->truesize
value.

So you should get "2K and change" for your example.

This doesn't detract from your point, in that e1000 is using an
extremely wasteful SKB allocation strategy which is making TCP refuse
to grow the window.

Wow, these e1000 regressions seem to get better and better.  You guys
test this stuff right?
-
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

Reply via email to