cvs commit: src/sys/conf options src/sys/netinet ip_output.c
ambrisko at ambrisko.com
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