svn commit: r207761 - in head/sys: dev/bce dev/mxge sys
Fabien Thomas
fabient at FreeBSD.org
Fri May 7 22:09:18 UTC 2010
Author: fabient
Date: Fri May 7 22:09:17 2010
New Revision: 207761
URL: http://svn.freebsd.org/changeset/base/207761
Log:
Add a fastpath to allocate from packet zone when using m_getjcl.
This will add support for packet zone for at least igb and ixgbe
and will avoid to check for that in bce and mxge.
MFC after: 1 week
Modified:
head/sys/dev/bce/if_bce.c
head/sys/dev/mxge/if_mxge.c
head/sys/sys/mbuf.h
Modified: head/sys/dev/bce/if_bce.c
==============================================================================
--- head/sys/dev/bce/if_bce.c Fri May 7 21:48:51 2010 (r207760)
+++ head/sys/dev/bce/if_bce.c Fri May 7 22:09:17 2010 (r207761)
@@ -5059,11 +5059,8 @@ bce_get_rx_buf(struct bce_softc *sc, str
#ifdef BCE_JUMBO_HDRSPLIT
MGETHDR(m_new, M_DONTWAIT, MT_DATA);
#else
- if (sc->rx_bd_mbuf_alloc_size <= MCLBYTES)
- m_new = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR);
- else
- m_new = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR,
- sc->rx_bd_mbuf_alloc_size);
+ m_new = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR,
+ sc->rx_bd_mbuf_alloc_size);
#endif
if (m_new == NULL) {
Modified: head/sys/dev/mxge/if_mxge.c
==============================================================================
--- head/sys/dev/mxge/if_mxge.c Fri May 7 21:48:51 2010 (r207760)
+++ head/sys/dev/mxge/if_mxge.c Fri May 7 22:09:17 2010 (r207761)
@@ -2400,10 +2400,7 @@ mxge_get_buf_big(struct mxge_slice_state
mxge_rx_ring_t *rx = &ss->rx_big;
int cnt, err, i;
- if (rx->cl_size == MCLBYTES)
- m = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR);
- else
- m = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, rx->cl_size);
+ m = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, rx->cl_size);
if (m == NULL) {
rx->alloc_fail++;
err = ENOBUFS;
Modified: head/sys/sys/mbuf.h
==============================================================================
--- head/sys/sys/mbuf.h Fri May 7 21:48:51 2010 (r207760)
+++ head/sys/sys/mbuf.h Fri May 7 22:09:17 2010 (r207761)
@@ -523,6 +523,9 @@ m_getjcl(int how, short type, int flags,
struct mbuf *m, *n;
uma_zone_t zone;
+ if (size == MCLBYTES)
+ return m_getcl(how, type, flags);
+
args.flags = flags;
args.type = type;
More information about the svn-src-head
mailing list