diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-06-30 09:52:04 +0100 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-06-30 09:52:04 +0100 |
commit | e0d8fc7dce38024a693941e6e0f8b0dd826d6205 (patch) | |
tree | 3f6beedaf4f11222c90b635bf53a3b1f7816bb0d /patches | |
parent | bcdd7e25a6b686e47b16fb9a45b8682dbccbd19b (diff) | |
download | xen-e0d8fc7dce38024a693941e6e0f8b0dd826d6205.tar.gz xen-e0d8fc7dce38024a693941e6e0f8b0dd826d6205.tar.bz2 xen-e0d8fc7dce38024a693941e6e0f8b0dd826d6205.zip |
[NET]: Add net-tso.patch
This patch has been submitted upstream for review. It resets gso_segs for
TSO.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'patches')
-rw-r--r-- | patches/linux-2.6.16.13/net-tso.patch | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/patches/linux-2.6.16.13/net-tso.patch b/patches/linux-2.6.16.13/net-tso.patch new file mode 100644 index 0000000000..188e40738a --- /dev/null +++ b/patches/linux-2.6.16.13/net-tso.patch @@ -0,0 +1,28 @@ +diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c +index 0336422..0bb0ac9 100644 +--- a/net/ipv4/tcp.c ++++ b/net/ipv4/tcp.c +@@ -2166,13 +2166,19 @@ struct sk_buff *tcp_tso_segment(struct s + if (!pskb_may_pull(skb, thlen)) + goto out; + +- segs = NULL; +- if (skb_gso_ok(skb, features | NETIF_F_GSO_ROBUST)) +- goto out; +- + oldlen = (u16)~skb->len; + __skb_pull(skb, thlen); + ++ if (skb_gso_ok(skb, features | NETIF_F_GSO_ROBUST)) { ++ /* Packet is from an untrusted source, reset gso_segs. */ ++ int mss = skb_shinfo(skb)->gso_size; ++ ++ skb_shinfo(skb)->gso_segs = (skb->len + mss - 1) / mss; ++ ++ segs = NULL; ++ goto out; ++ } ++ + segs = skb_segment(skb, features); + if (IS_ERR(segs)) + goto out; |