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>