From: "Ilpo Järvinen" <ilpo.jarvinen@helsinki.fi>
To: Stephen Hemminger <shemminger@linux-foundation.org>,
David Miller <davem@davemloft.net>
Cc: Baruch Even <baruch@ev-en.org>,
Herbert Xu <herbert@gondor.apana.org.au>,
Netdev <netdev@vger.kernel.org>
Subject: Re: [PATCH 0/9]: tcp-2.6 patchset
Date: Tue, 29 May 2007 23:58:39 +0300 (EEST) [thread overview]
Message-ID: <Pine.LNX.4.64.0705292335080.23565@kivilampi-30.cs.helsinki.fi> (raw)
In-Reply-To: <20070529131951.1d9a5b84@freepuppy>
[-- Attachment #1: Type: TEXT/PLAIN, Size: 3421 bytes --]
On Tue, 29 May 2007, Stephen Hemminger wrote:
> On Tue, 29 May 2007 23:07:00 +0300 (EEST)
> "Ilpo Järvinen" <ilpo.jarvinen@helsinki.fi> wrote:
>
> > On Tue, 29 May 2007, Stephen Hemminger wrote:
> >
> > > Since we don't invoke congestion control modules until after the SYN
> > > handshake this is not a problem.
> >
> > Just curious, do you mean that cc modules cannot measure, e.g., initial
> > RTT through this mechanism (though they could do that in init() cb then
> > I suppose)... Or do you mean that they are called already for the ACK
> > that completes the SYN handshake and therefore its skb is being cleaned
> > from the queue right now (this is the case I above refer to)?
> > In the first case the decrementer code is NOP. If the latter, then it
> > is just interface specification question, i.e., if SYNs are treated as
> > zero or one in num_acked for the pkts_acked callback (I have no opinion
> > on this but was just trying to make sure cc modules get what they
> > expect :-)).
>
> We don't switch a socket out of Reno until after the initial handshake.
...It's still not very clear to me what exactly your "after" means (both
here and in your earlier description), i.e., whether clean_rtx_queue call
that cleans SYN skb from the queue happens before or after the switch out
of reno or not... If I understand the code correctly, this specific
clean_rtx_queue call happens after "your after" but I could be
misunderstanding the current 3-way handshake code. :-)
> As an interface, it makes sense to keep the API with the SYN counting
> as a packet.
Ok, this one answers the remaining question concerning the patch, here
is it without the decrementer for SYN case (which IMHO wasn't very
beautiful looking anyway :-)).
Dave, please consider this to net-2.6. It could be a stable candidate
as well, haven't tested yet if it applies cleanly to stable:
[PATCH] [TCP]: Fix GSO ignorance of pkts_acked arg (cong.cntrl modules)
The code used to ignore GSO completely, passing either way too
small or zero pkts_acked when GSO skb or part of it got ACKed.
In addition, there is no need to calculate the value in the loop
but simple arithmetics after the loop is sufficient. Pkts_acked
callback of congestion control modules include SYN as a packet
for now on.
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
---
net/ipv4/tcp_input.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 38cb25b..74683d8 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -2407,8 +2407,8 @@ static int tcp_clean_rtx_queue(struct sock *sk, __s32 *seq_rtt_p)
struct sk_buff *skb;
__u32 now = tcp_time_stamp;
int acked = 0;
+ int prior_packets = tp->packets_out;
__s32 seq_rtt = -1;
- u32 pkts_acked = 0;
ktime_t last_ackt = ktime_set(0,0);
while ((skb = tcp_write_queue_head(sk)) &&
@@ -2437,7 +2437,6 @@ static int tcp_clean_rtx_queue(struct sock *sk, __s32 *seq_rtt_p)
*/
if (!(scb->flags & TCPCB_FLAG_SYN)) {
acked |= FLAG_DATA_ACKED;
- ++pkts_acked;
} else {
acked |= FLAG_SYN_ACKED;
tp->retrans_stamp = 0;
@@ -2481,6 +2480,7 @@ static int tcp_clean_rtx_queue(struct sock *sk, __s32 *seq_rtt_p)
}
if (acked&FLAG_ACKED) {
+ u32 pkts_acked = prior_packets - tp->packets_out;
const struct tcp_congestion_ops *ca_ops
= inet_csk(sk)->icsk_ca_ops;
--
1.5.0.6
next prev parent reply other threads:[~2007-05-29 20:58 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-26 8:35 [PATCH 0/9]: tcp-2.6 patchset Ilpo Järvinen
2007-05-26 8:35 ` [PATCH 1/9] [TCP]: Move Reno SACKed_out counter functions earlier Ilpo Järvinen
2007-05-26 8:35 ` [PATCH 2/9] [TCP] FRTO: remove unnecessary fackets/sacked_out recounting Ilpo Järvinen
2007-05-26 8:35 ` [PATCH 3/9] [TCP]: Tighten tcp_sock's belt, drop left_out Ilpo Järvinen
2007-05-26 8:35 ` [PATCH 4/9] [TCP]: Access to highest_sack obsoletes forward_cnt_hint Ilpo Järvinen
2007-05-26 8:35 ` [PATCH 5/9] [TCP]: Move code from tcp_ecn.h to tcp*.c and tcp.h & remove it Ilpo Järvinen
2007-05-26 8:35 ` [PATCH 6/9] [TCP]: Reorganize lost marking code Ilpo Järvinen
2007-05-26 8:36 ` [PATCH 7/9] [TCP]: Correct fastpath entrypoint below high_seq Ilpo Järvinen
2007-05-26 8:36 ` [PATCH 8/9] [TCP]: Reduce sacked_out with reno when purging write_queue Ilpo Järvinen
2007-05-26 8:36 ` [PATCH 9/9] [RFC] [TCP]: Kill tp->fackets_out (tcp_sock diet program) Ilpo Järvinen
2007-07-03 5:00 ` [PATCH 8/9] [TCP]: Reduce sacked_out with reno when purging write_queue David Miller
2007-07-03 11:08 ` Ilpo Järvinen
2007-05-31 8:44 ` [PATCH 7/9] [TCP]: Correct fastpath entrypoint below high_seq David Miller
2007-05-27 7:38 ` [PATCH 6/9] [TCP]: Reorganize lost marking code Ilpo Järvinen
2007-05-31 8:44 ` David Miller
2007-05-31 8:43 ` [PATCH 5/9] [TCP]: Move code from tcp_ecn.h to tcp*.c and tcp.h & remove it David Miller
2007-05-31 8:43 ` [PATCH 4/9] [TCP]: Access to highest_sack obsoletes forward_cnt_hint David Miller
2007-05-31 8:42 ` [PATCH 3/9] [TCP]: Tighten tcp_sock's belt, drop left_out David Miller
2007-05-31 16:31 ` Ilpo Järvinen
2007-07-03 5:02 ` David Miller
2007-05-31 8:40 ` [PATCH 2/9] [TCP] FRTO: remove unnecessary fackets/sacked_out recounting David Miller
2007-05-31 8:39 ` [PATCH 1/9] [TCP]: Move Reno SACKed_out counter functions earlier David Miller
2007-05-26 23:44 ` [PATCH 0/9]: tcp-2.6 patchset David Miller
2007-05-27 7:58 ` Ilpo Järvinen
2007-05-27 9:11 ` David Miller
2007-05-27 11:16 ` Ilpo Järvinen
2007-05-27 14:04 ` Baruch Even
2007-05-27 16:56 ` Ilpo Järvinen
2007-05-28 10:27 ` Ilpo Järvinen
2007-05-29 16:14 ` Stephen Hemminger
2007-05-29 20:07 ` Ilpo Järvinen
2007-05-29 20:19 ` Stephen Hemminger
2007-05-29 20:58 ` Ilpo Järvinen [this message]
2007-05-29 21:15 ` Stephen Hemminger
2007-05-30 9:10 ` [PATCH] [TCP]: Fix GSO ignorance of pkts_acked arg (cong.cntrl modules) Ilpo Järvinen
2007-06-01 4:38 ` David Miller
2007-06-01 11:22 ` Ilpo Järvinen
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=Pine.LNX.4.64.0705292335080.23565@kivilampi-30.cs.helsinki.fi \
--to=ilpo.jarvinen@helsinki.fi \
--cc=baruch@ev-en.org \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=netdev@vger.kernel.org \
--cc=shemminger@linux-foundation.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).