Messages in this thread | | | Date | Fri, 24 Sep 2010 14:42:07 -0700 (PDT) | Subject | Re: [PATCH] ip : take care of last fragment in ip_append_data | From | David Miller <> |
| |
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Tue, 21 Sep 2010 08:16:27 +0200
> [PATCH] ip : take care of last fragment in ip_append_data > > While investigating a bit, I found ip_fragment() slow path was taken > because ip_append_data() provides following layout for a send(MTU + > N*(MTU - 20)) syscall : > > - one skb with 1500 (mtu) bytes > - N fragments of 1480 (mtu-20) bytes (before adding IP header) > last fragment gets 17 bytes of trail data because of following bit: > > if (datalen == length + fraggap) > alloclen += rt->dst.trailer_len; > > Then esp4 adds 16 bytes of data (while trailer_len is 17... hmm... > another bug ?) > > In ip_fragment(), we notice last fragment is too big (1496 + 20) > mtu, > so we take slow path, building another skb chain. > > In order to avoid taking slow path, we should correct ip_append_data() > to make sure last fragment has real trail space, under mtu... > > Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Applied, thanks Eric.
| |