Date: Thu, 17 Apr 2008 00:43:53 +0300 From: quad <agile.quad@gmail.com> To: freebsd-net@freebsd.org Subject: [bfe] [panic] Serious error: bfe failed to map RX buffer Message-ID: <1733112647.20080417004353@gmail.com>
next in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
Hi,
FreeBSD amd64 7.0-RELEASE, ULE, SMP.
On heavy loads bfe network driver after few messages
Serious error: bfe failed to map RX buffer
Serious error: bfe failed to map RX buffer
Serious error: bfe failed to map RX buffer
...
make kernel panic.
Here patch.
--
Best regards,
Oleg Dolgov mailto:agile.quad@gmail.com
[-- Attachment #2 --]
--- if_bfe_orig.c 2008-04-17 00:26:43.559375000 +0300
+++ if_bfe.c 2008-04-17 00:33:03.121875000 +0300
@@ -648,10 +648,12 @@
struct bfe_data *r;
u_int32_t ctrl;
int error;
+ int allocated;
if ((c < 0) || (c >= BFE_RX_LIST_CNT))
return (EINVAL);
+ allocated = (m == NULL);
if(m == NULL) {
m = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR);
if(m == NULL)
@@ -671,8 +673,11 @@
r = &sc->bfe_rx_ring[c];
error = bus_dmamap_load(sc->bfe_tag, r->bfe_map, mtod(m, void *),
MCLBYTES, bfe_dma_map_desc, d, BUS_DMA_NOWAIT);
- if (error)
- printf("Serious error: bfe failed to map RX buffer\n");
+ if (error) {
+ if (allocated)
+ m_free(m);
+ return (error);
+ }
bus_dmamap_sync(sc->bfe_tag, r->bfe_map, BUS_DMASYNC_PREWRITE);
ctrl = ETHER_MAX_LEN + 32;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1733112647.20080417004353>
