Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Dec 2002 22:04:26 -0500 (EST)
From:      Andrew Gallatin <gallatin@cs.duke.edu>
To:        naddy@mips.inka.de (Christian Weisgerber)
Cc:        freebsd-alpha@FreeBSD.ORG, mux@FreeBSD.ORG
Subject:   Re: cvs commit: www/en/projects/busdma index.sgml style.css (fwd)
Message-ID:  <15867.61754.299505.858101@grasshopper.cs.duke.edu>
In-Reply-To: <atgnee$p9$1@kemoauc.mips.inka.de>
References:  <Pine.NEB.3.96L.1021209130854.19409C-100000@fledge.watson.org> <20021209194400.GA27086@elvis.mu.org> <15860.62239.549294.224934@grasshopper.cs.duke.edu> <20021214152341.GE27086@elvis.mu.org> <atgnee$p9$1@kemoauc.mips.inka.de>

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

Christian Weisgerber writes:
 > All mbufs or mbuf clusters exhausted, please see tuning(7).

I have 

xl0: <3Com 3c905B-TX Fast Etherlink XL> port 0x10000-0x1007f mem 0x41322000-0x4132 207f irq 10 at device 11.0 on pci0

So the problem must be in the code path for the older cards..
(my 905B uses different transmit and encap functions)

Ah, I see it.  The mbuf does not seem to be recorded in the ring if
the dmamap_load_mbuf succeeds in xl_encap().  Can you try the
following untested patch, please?  (on top of Maxime's earlier patch).

Interesting.. I see one nasty pre-existing condition that might cause
a memory leak.  What happens if xl_encap() fails?  Ugh, that should
be fixed too!


Drew

--- if_xl.c.bak	Sat Dec 14 22:01:30 2002
+++ if_xl.c	Sat Dec 14 22:01:55 2002
@@ -2419,6 +2419,7 @@
 					mtod(m_new, caddr_t));
 		m_new->m_pkthdr.len = m_new->m_len = m_head->m_pkthdr.len;
 		m_freem(m_head);
+		m_head = m_new;
 		f = &c->xl_ptr->xl_frag[0];
 		bus_dmamap_load(sc->xl_tag, c->xl_map, mtod(m_new, void *),
 		    MCLBYTES, xl_dma_map_addr, &f->xl_addr, 0);
@@ -2428,6 +2429,7 @@
 		c->xl_ptr->xl_next = 0;
 	}
 
+	c->xl_mbuf = m_head;
 	bus_dmamap_sync(sc->xl_tag, c->xl_map, BUS_DMASYNC_PREREAD);
 	return(0);
 }

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message




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