From 864d6f692b8237b1bef95855a4504fa6249053f2 Mon Sep 17 00:00:00 2001 From: Jeffrey Hsu Date: Wed, 8 Jun 2005 23:10:27 +0000 Subject: [PATCH] Convert to use m_getl() in order to take advantage of cluster caching and to avoid switching the mbuf type from non-packet header to packet header. --- sys/dev/atm/en/midway.c | 15 +++++---------- sys/dev/netif/awi/awi.c | 32 ++++++++++---------------------- 2 files changed, 15 insertions(+), 32 deletions(-) diff --git a/sys/dev/atm/en/midway.c b/sys/dev/atm/en/midway.c index c39f05502d..278ecb5e4a 100644 --- a/sys/dev/atm/en/midway.c +++ b/sys/dev/atm/en/midway.c @@ -33,7 +33,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/dev/en/midway.c,v 1.19.2.1 2003/01/23 21:06:42 sam Exp $ - * $DragonFly: src/sys/dev/atm/en/midway.c,v 1.18 2005/06/02 21:36:07 dillon Exp $ + * $DragonFly: src/sys/dev/atm/en/midway.c,v 1.19 2005/06/08 23:10:27 hsu Exp $ */ /* @@ -1717,19 +1717,14 @@ STATIC int en_makeexclusive(sc, mm, prev) if (m_sharecount(m) > 1) { /* make a real copy of the M_EXT mbuf since it is shared */ - MGET(new, MB_DONTWAIT, MT_DATA); - if (!new) { + new = m_getcl(MB_DONTWAIT, MT_DATA, m->m_flags & M_PKTHDR); + if (new == NULL) { + m_free(new); EN_COUNT(sc->mfixfail); - return(0); + return (0); } if (m->m_flags & M_PKTHDR) M_MOVE_PKTHDR(new, m); - MCLGET(new, MB_DONTWAIT); - if ((new->m_flags & M_EXT) == 0) { - m_free(new); - EN_COUNT(sc->mfixfail); - return(0); - } bcopy(m->m_data, new->m_data, m->m_len); new->m_len = m->m_len; new->m_next = m->m_next; diff --git a/sys/dev/netif/awi/awi.c b/sys/dev/netif/awi/awi.c index 983313e977..bf0aa6f507 100644 --- a/sys/dev/netif/awi/awi.c +++ b/sys/dev/netif/awi/awi.c @@ -1,6 +1,6 @@ /* $NetBSD: awi.c,v 1.26 2000/07/21 04:48:55 onoe Exp $ */ /* $FreeBSD: src/sys/dev/awi/awi.c,v 1.10.2.2 2003/01/23 21:06:42 sam Exp $ */ -/* $DragonFly: src/sys/dev/netif/awi/Attic/awi.c,v 1.19 2005/02/15 18:23:41 joerg Exp $ */ +/* $DragonFly: src/sys/dev/netif/awi/Attic/awi.c,v 1.20 2005/06/08 23:10:27 hsu Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -1120,29 +1120,17 @@ awi_fix_rxhdr(sc, m0) np = &n0; off = 0; while (m0->m_pkthdr.len > off) { - if (n0 == NULL) { - MGETHDR(n, MB_DONTWAIT, MT_DATA); - if (n == NULL) { - m_freem(m0); - return NULL; - } - M_MOVE_PKTHDR(n, m0); - n->m_len = MHLEN; - } else { - MGET(n, MB_DONTWAIT, MT_DATA); - if (n == NULL) { - m_freem(m0); - m_freem(n0); - return NULL; - } - n->m_len = MLEN; - } - if (m0->m_pkthdr.len - off >= MINCLSIZE) { - MCLGET(n, MB_DONTWAIT); - if (n->m_flags & M_EXT) - n->m_len = n->m_ext.ext_size; + int msize; + + n = m_getl(m0->m_pkthdr.len - off, MB_DONTWAIT, + MT_DATA, n0 == NULL ? M_PKTHDR : 0, &msize); + if (n == NULL) { + m_freem(m0); + return (NULL); } + n->m_len = msize; if (n0 == NULL) { + M_MOVE_PKTHDR(n, m0); newdata = (caddr_t) ALIGN(n->m_data + sizeof(struct ether_header)) -- 2.41.0