tuntap: set transport header before passing it to kernel
authorJason Wang <jasowang@redhat.com>
Mon, 25 Mar 2013 20:19:56 +0000 (20:19 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 26 Mar 2013 16:44:43 +0000 (12:44 -0400)
commit38502af77e07b5d6650b9ff99a0b482d86366592
treefa2164acb8ee8d57d8134af49296b80801ff0e66
parent9b4d669bc06c215d64f56f1eb0d4eb96e14d689d
tuntap: set transport header before passing it to kernel

Currently, for the packets receives from tuntap, before doing header check,
kernel just reset the transport header in netif_receive_skb() which pretends no
l4 header. This is suboptimal for precise packet length estimation (introduced
in 1def9238) which needs correct l4 header for gso packets.

So this patch set the transport header to csum_start for partial checksum
packets, otherwise it first try skb_flow_dissect(), if it fails, just reset the
transport header.

Cc: Eric Dumazet <edumazet@google.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tun.c