On Mon, 2010-03-22 at 22:13 +0800, Stanislaw Gruszka wrote:
Changing default options in upstream kernel is problematic. Since 2.6.33 we have different memory allocations to avoid failures due to buddy allocator fragmentation. It is optimized for normal usage case, but with swcrypto when and skb's have to be linearized memory usage by driver increase about 2 times.
Have you benchmarked about this change? Before paged Rx skb is used, we have to allocate (8K + sizeof(struct skb_shared_info)) linear skb, which is an order-2 allocation. Now with paged skb, first we do an order-1 allocation to hold the packet from device, then skb_linearize (if swcrypto is used) the skb. Note, in most of the time, the skb->len will be far less than 8K (unless 11n aggregation is used). So normally skb_linearize only does an order-1 (or even order-0) allocation in most. So in the swcrypto case, the paged Rx patch changes the memory allocation from one order-2 into two separated order-1 allocations. It should still be an improvement. No?
Thanks, -yi