From: David S. Miller Date: Thu, 24 Jun 2010 01:26:27 +0000 (-0700) Subject: Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 X-Git-Tag: v3.12-rc1~9497^2~490 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8244132ea89cdd128003f5b9980fab50d8d36d72;p=kernel%2Fkernel-generic.git Merge branch 'master' of /linux/kernel/git/davem/net-2.6 Conflicts: net/ipv4/ip_output.c --- 8244132ea89cdd128003f5b9980fab50d8d36d72 diff --cc net/ipv4/ip_output.c index 6cbeb2e,041d41d..7d1f4b4 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c @@@ -873,10 -873,12 +873,12 @@@ int ip_append_data(struct sock *sk !exthdrlen) csummode = CHECKSUM_PARTIAL; + skb = skb_peek_tail(&sk->sk_write_queue); + inet->cork.length += length; - if (((length> mtu) || !skb_queue_empty(&sk->sk_write_queue)) && + if (((length > mtu) || (skb && skb_is_gso(skb))) && (sk->sk_protocol == IPPROTO_UDP) && - (rt->u.dst.dev->features & NETIF_F_UFO)) { + (rt->dst.dev->features & NETIF_F_UFO)) { err = ip_ufo_append_data(sk, getfrag, from, length, hh_len, fragheaderlen, transhdrlen, mtu, flags); @@@ -1121,8 -1123,9 +1123,9 @@@ ssize_t ip_append_page(struct sock *sk return -EINVAL; inet->cork.length += size; - if ((sk->sk_protocol == IPPROTO_UDP) && + if ((size + skb->len > mtu) && + (sk->sk_protocol == IPPROTO_UDP) && - (rt->u.dst.dev->features & NETIF_F_UFO)) { + (rt->dst.dev->features & NETIF_F_UFO)) { skb_shinfo(skb)->gso_size = mtu - fragheaderlen; skb_shinfo(skb)->gso_type = SKB_GSO_UDP; }