Index: if_xl.c =================================================================== RCS file: /home/ncvs/src/sys/pci/if_xl.c,v retrieving revision 1.129 diff -p -u -r1.129 if_xl.c --- if_xl.c 19 Feb 2003 18:33:29 -0000 1.129 +++ if_xl.c 22 Feb 2003 00:14:00 -0000 @@ -1940,13 +1940,9 @@ xl_newbuf(sc, c) u_int32_t baddr; MGETHDR(m_new, M_DONTWAIT, MT_DATA); - if (m_new == NULL) - return(ENOBUFS); - - MCLGET(m_new, M_DONTWAIT); - if (!(m_new->m_flags & M_EXT)) { - m_freem(m_new); - return(ENOBUFS); + m_new = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR); + if (m_new == NULL) { + return (ENOBUFS); } m_new->m_len = m_new->m_pkthdr.len = MCLBYTES; @@ -2154,11 +2150,14 @@ xl_txeof(sc) break; sc->xl_cdata.xl_tx_head = cur_tx->xl_next; - bus_dmamap_sync(sc->xl_mtag, cur_tx->xl_map, - BUS_DMASYNC_POSTWRITE); - bus_dmamap_unload(sc->xl_mtag, cur_tx->xl_map); - m_freem(cur_tx->xl_mbuf); - cur_tx->xl_mbuf = NULL; + if (cur_tx->xl_mbuf != NULL) { + bus_dmamap_sync(sc->xl_mtag, cur_tx->xl_map, + BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(sc->xl_mtag, cur_tx->xl_map); + m_freem(cur_tx->xl_mbuf); + cur_tx->xl_mbuf = NULL; + } + ifp->if_opackets++; cur_tx->xl_next = sc->xl_cdata.xl_tx_free;