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