aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorFabien Thomas <fabient@FreeBSD.org>2010-05-07 22:09:17 +0000
committerFabien Thomas <fabient@FreeBSD.org>2010-05-07 22:09:17 +0000
commitb92990ef88c60569cfd1e3ab05e5730da90813ce (patch)
tree9d71d29c17f913c6dfc2fd660e4ec7975a1e1005 /sys
parentaf394cfa3697918cfe0bc4badddee31a637ac941 (diff)
downloadsrc-b92990ef88c60569cfd1e3ab05e5730da90813ce.tar.gz
src-b92990ef88c60569cfd1e3ab05e5730da90813ce.zip
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
Notes
Notes: svn path=/head/; revision=207761
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/bce/if_bce.c7
-rw-r--r--sys/dev/mxge/if_mxge.c5
-rw-r--r--sys/sys/mbuf.h3
3 files changed, 6 insertions, 9 deletions
diff --git a/sys/dev/bce/if_bce.c b/sys/dev/bce/if_bce.c
index 6608dbde2c1b..ad7209e7fd59 100644
--- a/sys/dev/bce/if_bce.c
+++ b/sys/dev/bce/if_bce.c
@@ -5059,11 +5059,8 @@ bce_get_rx_buf(struct bce_softc *sc, struct mbuf *m, u16 *prod,
#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) {
diff --git a/sys/dev/mxge/if_mxge.c b/sys/dev/mxge/if_mxge.c
index 956b1aa2dbb3..e5a34bc70ed3 100644
--- a/sys/dev/mxge/if_mxge.c
+++ b/sys/dev/mxge/if_mxge.c
@@ -2400,10 +2400,7 @@ mxge_get_buf_big(struct mxge_slice_state *ss, bus_dmamap_t map, int idx)
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;
diff --git a/sys/sys/mbuf.h b/sys/sys/mbuf.h
index 158edb4fdc2d..95a44a4aecfc 100644
--- a/sys/sys/mbuf.h
+++ b/sys/sys/mbuf.h
@@ -523,6 +523,9 @@ m_getjcl(int how, short type, int flags, int size)
struct mbuf *m, *n;
uma_zone_t zone;
+ if (size == MCLBYTES)
+ return m_getcl(how, type, flags);
+
args.flags = flags;
args.type = type;