Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Jul 2000 21:35:57 -0500 (CDT)
From:      Mike Silbersack <silby@silby.com>
To:        Archie Cobbs <archie@whistle.com>
Cc:        freebsd-net@freebsd.org
Subject:   Re: sub-optimal tcp_ouput() performance in the face of ENOBUFS
Message-ID:  <Pine.BSF.4.21.0007272130290.16889-100000@achilles.silby.com>
In-Reply-To: <200007272138.OAA11016@bubba.whistle.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On Thu, 27 Jul 2000, Archie Cobbs wrote:

> Dear TCP gurus,
> 
> It seems like there is sub-optimal behaviour in tcp_output(),
> and I'm wondering what other people think.
> 
> Consider an output interface whose transmit queue is full.
> tcp_output() calls ip_output(), and it will return ENOBUFS.
> Here's where this is handled (tcp_output, line 863):

I get the impression that ENOBUFS was never tested, if it makes you feel
any better.  The code which checks to make sure a timer is pending wasn't
even there until a few weeks ago.  Until it was added, sockets could
semi-easily get stuck in the LAST_ACK state forever.

So, while you're fixing the case you just found, you may want to try to
think of other bad outcomes due to ENOBUFS - there probably are a few
more.

Mike "Silby" Silbersack



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?Pine.BSF.4.21.0007272130290.16889-100000>