Subject: Re: Question with commit 299b0767(ipv6: Fix IPsec slowpath fragmentation problem)

From: Li Wei <[email-masked]>
Date: Wed, 15 Feb 2012 15:00:04 +0800

Steffen Klassert wrote:
> On Mon, Feb 13, 2012 at 04:10:39PM +0800, Li Wei wrote:
>> Hi, Steffen!
>>
>> I found some problem while doing networking tests with IPSec that
>> the first fragment doesn't use the max MTU to fill payload, but with
>> 20 bytes smaller. When I reverted your commit 299b0767(ipv6: Fix 
>> IPsec slowpath fragmentation problem), things goes well.
>>
>> Would you so kindly to point me out what the commit did, because I
>> think the original implementation had taken IPSec header and tailer
>> into account.
>>
> 
> Without this patch we used always the slow path in ip6_fragment()
> due to a miscalculation of the packet lenght in ip6_append_data().
> 
> This patch just makes use of the reduced IPsec mtu, and adapts
> the IPsec header handling to have enought headroom on the skb.
> 
> 

Hi Steffen,

Thank you for your reply!

I see in your patch that you use the "mtu" of &rt->dst (which taken IPSec
into account) instead of rt->dst.path, but the "exthdrlen" and "dst_exthdrlen"
things process IPSec again. Does some duplication there?

After reverted the patch and put some "printk" things in the slow_path of
ip6_fragment(), setup IPSec transport mode between two hosts, when sending
some echo request which exceeds the MTU, I don't see any "printk" in slow_path
outputed. Could you tell me how to reproduce the slow_path things?

Thanks,
Wei