Index: sys/pci/if_xl.c =================================================================== RCS file: /home/ncvs/src/sys/pci/if_xl.c,v retrieving revision 1.129 diff -u -r1.129 if_xl.c --- sys/pci/if_xl.c 19 Feb 2003 18:33:29 -0000 1.129 +++ sys/pci/if_xl.c 22 Feb 2003 03:18:50 -0000 @@ -1939,15 +1939,9 @@ int error; u_int32_t baddr; - MGETHDR(m_new, M_DONTWAIT, MT_DATA); + m_new = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR); if (m_new == NULL) - return(ENOBUFS); - - MCLGET(m_new, M_DONTWAIT); - if (!(m_new->m_flags & M_EXT)) { - m_freem(m_new); - return(ENOBUFS); - } + return (ENOBUFS); m_new->m_len = m_new->m_pkthdr.len = MCLBYTES; @@ -2443,22 +2437,24 @@ if (error) { struct mbuf *m_new = NULL; - MGETHDR(m_new, M_DONTWAIT, MT_DATA); - if (m_new == NULL) { - m_freem(m_head); - printf("xl%d: no memory for tx list\n", sc->xl_unit); - return(1); - } if (m_head->m_pkthdr.len > MHLEN) { - MCLGET(m_new, M_DONTWAIT); - if (!(m_new->m_flags & M_EXT)) { - m_freem(m_new); + m_new = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR); + if (m_new == NULL) { + m_freem(m_head); + printf("xl%d, no memory for tx list\n", + sc->xl_unit); + return(1); + } + } else { + MGETHDR(m_new, M_DONTWAIT, MT_DATA); + if (m_new == NULL) { m_freem(m_head); - printf("xl%d: no memory for tx list\n", - sc->xl_unit); + printf("xl%d, no memory for tx list\n", + sc->xl_unit); return(1); } } + m_copydata(m_head, 0, m_head->m_pkthdr.len, mtod(m_new, caddr_t)); m_new->m_pkthdr.len = m_new->m_len = m_head->m_pkthdr.len;