On Tue, Mar 23, 2010 at 09:30:10AM +0800, Zhu Yi wrote:
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?
No, not really.
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?
Ah, ok. So only additional cost with "paged Rx" and swcrypto is a memcpy, which is theoretically rather small cost compared with doing tx/rx cryptography in main cpu.
So, what about turn on swcrypto by default upstream?
Stanislaw