cvs commit: src/sys/conf options src/sys/netinet ip_output.c

Doug Ambrisko ambrisko at
Tue Mar 25 23:44:55 PST 2003

Mike Silbersack writes:
| 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.

This doesn't surprise me.  I fixed this in the ste(4) driver.  You can 
also make this happen to some extent by do a dd etc. into a connection
with a small byte count.  This makes it easier though.

Most of this is probably due to a common cut-n-paste of other drivers.

Might also look at tuning down the number of allowable frags in drivers.
With 4 ste(4) chips on 3 ports consumed 1.5M of memory!  I reduced this 
in the ste(4) driver as well.  We might want to document a good rule of 
thumb for number of mbuf frags before de-fraging them.  Unfortunately 
this seems to imply you might have to walk the mbuf chain twice.

| Mike "Silby" Silbersack
| On Mon, 24 Mar 2003, Mike Silbersack wrote:
| > silby       2003/03/24 21:45:05 PST
| >
| >   FreeBSD src repository
| >
| >   Modified files:
| >     sys/conf             options
| >     sys/netinet          ip_output.c
| >   Log:
| >   Add the MBUF_FRAG_TEST option.  When compiled in, this option
| >   allows you to tell ip_output to fragment all outgoing packets
| >   into mbuf fragments of size net.inet.ip.mbuf_frag_size bytes.
| >   This is an excellent way to test if network drivers can properly
| >   handle long mbuf chains being passed to them.
| >
| >   net.inet.ip.mbuf_frag_size defaults to 0 (no fragmentation)
| >   so that you can at least boot before your network driver dies. :)
| >
| >   Revision  Changes    Path
| >   1.383     +1 -0      src/sys/conf/options
| >   1.179     +30 -0     src/sys/netinet/ip_output.c

More information about the cvs-src mailing list