From: Hubert Tonneau <hubert.tonneau@fullpliant.org>
To: "David S. Miller" <davem@davemloft.net>
Cc: shemminger@osdl.org, romieu@fr.zoreil.com, kuznet@ms2.inr.ac.ru,
Nivedita Singhvi<niv@us.ibm.com>, Rick Jones <rick.jones2@hp.com>,
netdev@oss.sgi.com
Subject: Re: 2.6.10 TCP troubles -- suggested patch
Date: Fri, 11 Feb 2005 21:55:49 GMT [thread overview]
Message-ID: <0525M9211@server5.heliogroup.fr> (raw)
Sorry, it still does not work, unless I made a mistake:
Linux 2.6.9 takes 15 seconds to copy 105 MB to Mac OSX
Linux 2.6.10 with the TCP patch below still takes 325 seconds to do the same.
You can pick the new tcpdump report, created through:
tcpdump -i eth1 ip host 10.107.96.230 -w /tmp/dump-2.6.10-tcp2
at http://fullpliant.org/pliant/browse/file/archive/dump-2.6.10-tcp2.gz
Here is the connection summary:
Dell PowerEdge 2600 (dual Xeon with hyper threading) running libsmbclient
on Linux 2.6.x, IP for eth1 (Intel pro 1000) is 10.107.96.7 (full
duplex, flow control is enabled)
|
|
gigabit switch
|
|
100 Mbps switch
|
|
Mac running Samba server on OSX,
IP is 10.107.96.230
David S. Miller wrote:
>
> Hubert, try this patch instead.
>
> ===== net/ipv4/tcp_output.c 1.77 vs edited =====
> --- 1.77/net/ipv4/tcp_output.c 2005-01-18 12:23:36 -08:00
> +++ edited/net/ipv4/tcp_output.c 2005-02-10 16:42:42 -08:00
> @@ -408,6 +408,16 @@
> sk->sk_send_head = skb;
> }
>
> +static inline void tcp_tso_set_push(struct sk_buff *skb)
> +{
> + /* Force push to be on for any TSO frames to workaround
> + * problems with busted implementations like Mac OS-X that
> + * hold off socket reveive wakeups until push is seen.
> + */
> + if (tcp_skb_pcount(skb) > 1)
> + TCP_SKB_CB(skb)->flags |= TCPCB_FLAG_PSH;
> +}
> +
> /* Send _single_ skb sitting at the send head. This function requires
> * true push pending frames to setup probe timer etc.
> */
> @@ -419,6 +429,7 @@
> if (tcp_snd_test(tp, skb, cur_mss, TCP_NAGLE_PUSH)) {
> /* Send it out now. */
> TCP_SKB_CB(skb)->when = tcp_time_stamp;
> + tcp_tso_set_push(skb);
> if (!tcp_transmit_skb(sk, skb_clone(skb, sk->sk_allocation))) {
> sk->sk_send_head = NULL;
> tp->snd_nxt = TCP_SKB_CB(skb)->end_seq;
> @@ -755,6 +766,7 @@
> }
>
> TCP_SKB_CB(skb)->when = tcp_time_stamp;
> + tcp_tso_set_push(skb);
> if (tcp_transmit_skb(sk, skb_clone(skb, GFP_ATOMIC)))
> break;
>
> @@ -1096,6 +1108,7 @@
> * is still in somebody's hands, else make a clone.
> */
> TCP_SKB_CB(skb)->when = tcp_time_stamp;
> + tcp_tso_set_push(skb);
>
> err = tcp_transmit_skb(sk, (skb_cloned(skb) ?
> pskb_copy(skb, GFP_ATOMIC):
> @@ -1668,6 +1681,7 @@
>
> TCP_SKB_CB(skb)->flags |= TCPCB_FLAG_PSH;
> TCP_SKB_CB(skb)->when = tcp_time_stamp;
> + tcp_tso_set_push(skb);
> err = tcp_transmit_skb(sk, skb_clone(skb, GFP_ATOMIC));
> if (!err) {
> update_send_head(sk, tp, skb);
next reply other threads:[~2005-02-11 21:55 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-02-11 21:55 Hubert Tonneau [this message]
2005-02-11 22:54 ` 2.6.10 TCP troubles -- suggested patch Rick Jones
2005-02-11 23:09 ` Nivedita Singhvi
2005-02-11 23:40 ` Rick Jones
2005-02-12 1:08 ` David S. Miller
2005-02-12 1:09 ` David S. Miller
2005-02-12 14:31 ` Alexey Kuznetsov
2005-02-12 19:28 ` David S. Miller
2005-02-12 19:44 ` Leonid Grossman
2005-02-12 19:52 ` Alexey Kuznetsov
2005-02-15 23:25 ` David S. Miller
2005-02-12 20:19 ` rick jones
2005-02-12 20:28 ` David S. Miller
2005-02-12 20:56 ` Alexey Kuznetsov
2005-02-12 21:27 ` Nivedita Singhvi
2005-02-12 21:43 ` rick jones
2005-02-12 22:00 ` Alexey Kuznetsov
2005-02-13 1:29 ` rick jones
2005-02-11 23:04 ` Stephen Hemminger
2005-02-12 1:07 ` David S. Miller
2005-02-12 12:11 ` Andi Kleen
2005-02-12 19:23 ` David S. Miller
2005-02-12 21:30 ` Andi Kleen
2005-02-12 14:16 ` Alexey Kuznetsov
2005-02-12 19:41 ` David S. Miller
2005-02-12 20:03 ` Alexey Kuznetsov
2005-02-15 23:26 ` David S. Miller
2005-02-15 23:42 ` Rick Jones
2005-02-15 23:23 ` David S. Miller
2005-02-16 9:13 ` Alexey Kuznetsov
2005-02-16 17:50 ` David S. Miller
-- strict thread matches above, loose matches on Subject: below --
2005-02-20 23:06 Hubert Tonneau
2005-02-16 20:00 Hubert Tonneau
2005-02-13 10:52 Hubert Tonneau
2005-02-14 14:12 ` Alexey Kuznetsov
2005-02-10 21:53 Hubert Tonneau
2005-02-10 22:36 ` Rick Jones
2005-02-11 1:16 ` David S. Miller
[not found] <050QTJA12@server5.heliogroup.fr>
2005-02-09 18:59 ` Stephen Hemminger
2005-02-09 20:25 ` David S. Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0525M9211@server5.heliogroup.fr \
--to=hubert.tonneau@fullpliant.org \
--cc=davem@davemloft.net \
--cc=kuznet@ms2.inr.ac.ru \
--cc=netdev@oss.sgi.com \
--cc=niv@us.ibm.com \
--cc=rick.jones2@hp.com \
--cc=romieu@fr.zoreil.com \
--cc=shemminger@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).