Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Jan 2001 11:17:51 -0500 (EST)
From:      Garrett Wollman <wollman@khavrinen.lcs.mit.edu>
To:        jayanth <jayanth@yahoo-inc.com>
Cc:        net@FreeBSD.ORG
Subject:   Re: I have delayed ACK problems
Message-ID:  <200101251617.LAA83006@khavrinen.lcs.mit.edu>
In-Reply-To: <20010125002509.A77051@yahoo-inc.com>
References:  <77394.980367750@winston.osd.bsdi.com> <Pine.BSF.4.21.0101250840280.48291-100000@besplex.bde.org> <20010125002509.A77051@yahoo-inc.com>

next in thread | previous in thread | raw e-mail | index | archive | help
<<On Thu, 25 Jan 2001 00:25:10 -0800, jayanth <jayanth@yahoo-inc.com> said:

> could you test this patch and compare the results.
> By generating an ACK for every segment with the TH_PSH flag set
> I found a significant increase in throughput.

I don't think this is right.

I think what we want to do is:

	if (callout_pending(tp->tt_delack)) {
		callout_stop(tp->tt_delack);
		tp->t_flags |= TF_ACKNOW;
	} else
		callout_reset(...)

This has the effect of ACKing every other packet.  This should
probably be encapsulated in a macro:

#define	MAYBE_DELAYED_ACK(tp) 					\
	do {							\
		if (tcp_delack_enabled) {			\
			if (callout_pending(tp->tt_delack)) {	\
				callout_stop(tp->tt_delack);	\
				tp->t_flags |= TF_ACKNOW;	\
			} else					\
				callout_reset(tp->tt_delack,	\
				    tcp_delacktime,		\
				    tcp_timer_delack, tp);	\
		} else						\
			tp->t_flags |= TF_ACKNOW;		\
	while (0)

(It may be possible to eliminate the callout_stop() call and one of
the `if' statements.)

-GAWollman



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200101251617.LAA83006>