diff options
| author | Bosko Milekic <bmilekic@FreeBSD.org> | 2003-02-22 14:46:31 +0000 |
|---|---|---|
| committer | Bosko Milekic <bmilekic@FreeBSD.org> | 2003-02-22 14:46:31 +0000 |
| commit | fd18f292bddd0f9e2bbec0c6f31a638fda27968c (patch) | |
| tree | b1f5d75ea9581de6605bd3007d8f5188db9eef63 | |
| parent | 4209510904acf03d46e67b15320688df775a039f (diff) | |
Notes
| -rw-r--r-- | sys/pci/if_xl.c | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/sys/pci/if_xl.c b/sys/pci/if_xl.c index 79207929483c..cc4c6d5308a5 100644 --- a/sys/pci/if_xl.c +++ b/sys/pci/if_xl.c @@ -1939,16 +1939,10 @@ xl_newbuf(sc, c) 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); - } - m_new->m_len = m_new->m_pkthdr.len = MCLBYTES; /* Force longword alignment for packet payload. */ @@ -2441,24 +2435,16 @@ xl_encap(sc, c, m_head) * and would waste cycles. */ if (error) { - struct mbuf *m_new = NULL; + struct mbuf *m_new; - MGETHDR(m_new, M_DONTWAIT, MT_DATA); + m_new = m_head->m_pkthdr.len > MHLEN ? + m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR) : + m_get(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_freem(m_head); - 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; |
