cvs commit: src/sys/conf options src/sys/netinet ip_output.c
silby at silby.com
Tue Mar 25 22:09:47 PST 2003
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?
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
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
More information about the cvs-src