diff options
author | Fabien Thomas <fabient@FreeBSD.org> | 2010-05-07 22:09:17 +0000 |
---|---|---|
committer | Fabien Thomas <fabient@FreeBSD.org> | 2010-05-07 22:09:17 +0000 |
commit | b92990ef88c60569cfd1e3ab05e5730da90813ce (patch) | |
tree | 9d71d29c17f913c6dfc2fd660e4ec7975a1e1005 /sys | |
parent | af394cfa3697918cfe0bc4badddee31a637ac941 (diff) | |
download | src-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.c | 7 | ||||
-rw-r--r-- | sys/dev/mxge/if_mxge.c | 5 | ||||
-rw-r--r-- | sys/sys/mbuf.h | 3 |
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; |