diff options
author | Lachlan McIlroy <lachlan@redback.melbourne.sgi.com> | 2008-12-05 15:27:43 +1100 |
---|---|---|
committer | Lachlan McIlroy <lachlan@redback.melbourne.sgi.com> | 2008-12-05 15:27:43 +1100 |
commit | 14d676f56fad26fd3c31eeff5d4ef8ea4a163571 (patch) | |
tree | 5e740c5931daecf44a6e74c230f2deb291290f4b /net/ipv4/tcp_output.c | |
parent | 797eaed40e1df4a3b9ece6894a71ce2b568bca38 (diff) | |
parent | feaf3848a813a106f163013af6fcf6c4bfec92d9 (diff) | |
download | blackbird-op-linux-14d676f56fad26fd3c31eeff5d4ef8ea4a163571.tar.gz blackbird-op-linux-14d676f56fad26fd3c31eeff5d4ef8ea4a163571.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'net/ipv4/tcp_output.c')
-rw-r--r-- | net/ipv4/tcp_output.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index ba85d8831893..85b07eba1879 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -722,7 +722,8 @@ static void tcp_queue_skb(struct sock *sk, struct sk_buff *skb) static void tcp_set_skb_tso_segs(struct sock *sk, struct sk_buff *skb, unsigned int mss_now) { - if (skb->len <= mss_now || !sk_can_gso(sk)) { + if (skb->len <= mss_now || !sk_can_gso(sk) || + tcp_urg_mode(tcp_sk(sk))) { /* Avoid the costly divide in the normal * non-TSO case. */ @@ -1163,7 +1164,9 @@ static int tcp_init_tso_segs(struct sock *sk, struct sk_buff *skb, { int tso_segs = tcp_skb_pcount(skb); - if (!tso_segs || (tso_segs > 1 && tcp_skb_mss(skb) != mss_now)) { + if (!tso_segs || + (tso_segs > 1 && (tcp_skb_mss(skb) != mss_now || + tcp_urg_mode(tcp_sk(sk))))) { tcp_set_skb_tso_segs(sk, skb, mss_now); tso_segs = tcp_skb_pcount(skb); } |