Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Mar 2003 16:06:19 -0600 (CST)
From:      Mike Silbersack <silby@silby.com>
To:        Bill Paul <wpaul@FreeBSD.ORG>
Cc:        cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/conf options src/sys/netinet ip_output.c
Message-ID:  <20030325160051.H580@odysseus.silby.com>
In-Reply-To: <20030325220044.DA39F37B401@hub.freebsd.org>
References:  <20030325220044.DA39F37B401@hub.freebsd.org>

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

On Tue, 25 Mar 2003, Bill Paul wrote:

> >
> > FWIW, the two drivers I tested this with (if_xl and if_sis) both flunk.
> > if_xl tries to fix the situation, but fails, and if_sis goes totally
> > weird, eating mbufs and rendering the interface unuseable.
> >
> > I'll test more interfaces once I have these two fixed.
>
> Just how long did you make the fragment chain in your tests anyway?
>
> -Bill

Well over 63 fragments.

I'm not sure what the worst case chain that could be created by an
application is, but it seems wise to make sure the drivers can handle
whatever you throw at them.

One of the reasons if_xl fails, even though it tries to recover is
probably because m_copypacket doesn't copy fragments resident inside mbuf
clusters, thereby defeating the attempt at defragmentation.  I'm going to
whip up a m_defragment function we can use in all drivers on long chains
soon.

This started out as code to test whether old versions of if_xl which did
not check for the > 63 condition could cause the mbuf free list corruption
described in a bunch of PRs.  I never figured that even the fixed code
could still be broken. :)

Mike "Silby" Silbersack




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