Module Name: src
Committed By: msaitoh
Date: Wed Aug 25 09:06:03 UTC 2021
Modified Files:
src/share/man/man4: ixg.4 ixv.4
src/sys/dev/pci: files.pci
src/sys/dev/pci/ixgbe: ix_txrx.c ixgbe.c ixgbe.h ixgbe_netbsd.c
ixgbe_netbsd.h ixgbe_osdep.h ixv.c
Log Message:
Use MCLGET() instead of homegrown cluster (jcl) allocation mechanism.
- Before this commit, resource shortage was easily occurred because the total
number of the clusters is small.
- Reviewed by knakahara and ryo.
To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/share/man/man4/ixg.4
cvs rdiff -u -r1.7 -r1.8 src/share/man/man4/ixv.4
cvs rdiff -u -r1.437 -r1.438 src/sys/dev/pci/files.pci
cvs rdiff -u -r1.86 -r1.87 src/sys/dev/pci/ixgbe/ix_txrx.c
cvs rdiff -u -r1.288 -r1.289 src/sys/dev/pci/ixgbe/ixgbe.c
cvs rdiff -u -r1.77 -r1.78 src/sys/dev/pci/ixgbe/ixgbe.h
cvs rdiff -u -r1.16 -r1.17 src/sys/dev/pci/ixgbe/ixgbe_netbsd.c
cvs rdiff -u -r1.13 -r1.14 src/sys/dev/pci/ixgbe/ixgbe_netbsd.h
cvs rdiff -u -r1.29 -r1.30 src/sys/dev/pci/ixgbe/ixgbe_osdep.h
cvs rdiff -u -r1.164 -r1.165 src/sys/dev/pci/ixgbe/ixv.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/share/man/man4/ixg.4
diff -u src/share/man/man4/ixg.4:1.14 src/share/man/man4/ixg.4:1.15
--- src/share/man/man4/ixg.4:1.14 Tue Mar 9 12:02:24 2021
+++ src/share/man/man4/ixg.4 Wed Aug 25 09:06:02 2021
@@ -1,4 +1,4 @@
-.\" $NetBSD: ixg.4,v 1.14 2021/03/09 12:02:24 wiz Exp $
+.\" $NetBSD: ixg.4,v 1.15 2021/08/25 09:06:02 msaitoh Exp $
.\"
.\" Copyright (c) 2001-2008, Intel Corporation
.\" All rights reserved.
@@ -33,7 +33,7 @@
.\"
.\" $FreeBSD: src/share/man/man4/ixgbe.4,v 1.3 2010/12/19 23:54:31 yongari Exp $
.\"
-.Dd March 9, 2021
+.Dd August 25, 2021
.Dt IXG 4
.Os
.Sh NAME
@@ -83,26 +83,6 @@ go to the Intel support website at:
.\" with a supported adapter, email the specific information related to the
.\" issue to
.\" .Aq [email protected] .
-.Sh OPTIONS
-The
-.Nm
-driver doesn't use the common
-.Xr MCLGET 9
-interface and use the driver specific cluster allocation mechanism.
-If it's exhausted, the
-.Xr evcnt 9
-counter "ixgX qY Rx no jumbo mbuf" is incremented.
-If this is observed,
-the number can be changed by the following config parameter:
-.Bl -tag -width IXGBE_JCLNUM_MULTI -offset 3n
-.It Dv IXGBE_JCLNUM_MULTI
-The number of RX jumbo buffers (clusters) per queue is calculated by
-.Dv IXGBE_JCLNUM_MULTI
-* (number of rx descriptors).
-The total number of clusters per queue is available via the
-.Li hw.ixgN.num_jcl_per_queue
-.Xr sysctl 7 .
-.El
.Sh SEE ALSO
.Xr arp 4 ,
.Xr ixv 4 ,
Index: src/share/man/man4/ixv.4
diff -u src/share/man/man4/ixv.4:1.7 src/share/man/man4/ixv.4:1.8
--- src/share/man/man4/ixv.4:1.7 Tue Mar 9 12:02:24 2021
+++ src/share/man/man4/ixv.4 Wed Aug 25 09:06:02 2021
@@ -1,4 +1,4 @@
-.\" $NetBSD: ixv.4,v 1.7 2021/03/09 12:02:24 wiz Exp $
+.\" $NetBSD: ixv.4,v 1.8 2021/08/25 09:06:02 msaitoh Exp $
.\"
.\" Copyright (c) 2018 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -27,7 +27,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd March 9, 2021
+.Dd August 25, 2021
.Dt IXV 4
.Os
.Sh NAME
@@ -43,26 +43,6 @@ newer chips support.
It can be used on a
.Nx
guest that the host supports SR-IOV.
-.Sh OPTIONS
-The
-.Nm
-driver doesn't use the common
-.Xr MCLGET 9
-interface and use the driver specific cluster allocation mechanism.
-If it's exhausted, the
-.Xr evcnt 9
-counter "ixgX qY Rx no jumbo mbuf" is incremented.
-If this is observed,
-the number can be changed by the following config parameter:
-.Bl -tag -width IXGBE_JCLNUM_MULTI -offset 3n
-.It Dv IXGBE_JCLNUM_MULTI
-The number of RX jumbo buffers (clusters) per queue is calculated by
-.Dv IXGBE_JCLNUM_MULTI
-* (number of rx descriptors).
-The total number of clusters per queue is available with the
-.Li hw.ixgN.num_jcl_per_queue
-.Xr sysctl 7 .
-.El
.Sh SEE ALSO
.Xr arp 4 ,
.Xr ixg 4 ,
Index: src/sys/dev/pci/files.pci
diff -u src/sys/dev/pci/files.pci:1.437 src/sys/dev/pci/files.pci:1.438
--- src/sys/dev/pci/files.pci:1.437 Mon Apr 26 19:28:24 2021
+++ src/sys/dev/pci/files.pci Wed Aug 25 09:06:02 2021
@@ -1,4 +1,4 @@
-# $NetBSD: files.pci,v 1.437 2021/04/26 19:28:24 thorpej Exp $
+# $NetBSD: files.pci,v 1.438 2021/08/25 09:06:02 msaitoh Exp $
#
# Config file and device description for machine-independent PCI code.
# Included by ports that need it. Requires that the SCSI files be
@@ -664,7 +664,6 @@ file dev/pci/ixgbe/ixgbe_phy.c ixg | ixv
file dev/pci/ixgbe/ixgbe_vf.c ixg | ixv
file dev/pci/ixgbe/if_bypass.c ixg | ixv
file dev/pci/ixgbe/if_fdir.c ixg | ixv
-defparam opt_ixgbe.h IXGBE_JCLNUM_MULTI
# This appears to be the driver for virtual instances of i82599.
device ixv: ether, ifnet, arp, mii, mii_phy
Index: src/sys/dev/pci/ixgbe/ix_txrx.c
diff -u src/sys/dev/pci/ixgbe/ix_txrx.c:1.86 src/sys/dev/pci/ixgbe/ix_txrx.c:1.87
--- src/sys/dev/pci/ixgbe/ix_txrx.c:1.86 Thu Aug 19 10:18:13 2021
+++ src/sys/dev/pci/ixgbe/ix_txrx.c Wed Aug 25 09:06:02 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: ix_txrx.c,v 1.86 2021/08/19 10:18:13 msaitoh Exp $ */
+/* $NetBSD: ix_txrx.c,v 1.87 2021/08/25 09:06:02 msaitoh Exp $ */
/******************************************************************************
@@ -64,7 +64,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.86 2021/08/19 10:18:13 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.87 2021/08/25 09:06:02 msaitoh Exp $");
#include "opt_inet.h"
#include "opt_inet6.h"
@@ -1330,7 +1330,7 @@ ixgbe_setup_hw_rsc(struct rx_ring *rxr)
* be recalled to try again.
*
* XXX NetBSD TODO:
- * - The ixgbe_rxeof() function always preallocates mbuf cluster (jcl),
+ * - The ixgbe_rxeof() function always preallocates mbuf cluster,
* so the ixgbe_refresh_mbufs() function can be simplified.
*
************************************************************************/
@@ -1351,8 +1351,7 @@ ixgbe_refresh_mbufs(struct rx_ring *rxr,
while (i != limit) {
rxbuf = &rxr->rx_buffers[i];
if (rxbuf->buf == NULL) {
- mp = ixgbe_getjcl(&rxr->jcl_head, M_NOWAIT,
- MT_DATA, M_PKTHDR, rxr->mbuf_sz);
+ mp = ixgbe_getcl();
if (mp == NULL) {
rxr->no_jmbuf.ev_count++;
goto update;
@@ -1506,17 +1505,6 @@ ixgbe_setup_receive_ring(struct rx_ring
/* Free current RX buffer structs and their mbufs */
ixgbe_free_receive_ring(rxr);
- IXGBE_RX_UNLOCK(rxr);
- /*
- * Now reinitialize our supply of jumbo mbufs. The number
- * or size of jumbo mbufs may have changed.
- * Assume all of rxr->ptag are the same.
- */
- ixgbe_jcl_reinit(adapter, rxr->ptag->dt_dmat, rxr,
- adapter->num_jcl, adapter->rx_mbuf_sz);
-
- IXGBE_RX_LOCK(rxr);
-
/* Now replenish the mbufs */
for (int j = 0; j != rxr->num_desc; ++j) {
struct mbuf *mp;
@@ -1546,8 +1534,7 @@ ixgbe_setup_receive_ring(struct rx_ring
#endif /* DEV_NETMAP */
rxbuf->flags = 0;
- rxbuf->buf = ixgbe_getjcl(&rxr->jcl_head, M_NOWAIT,
- MT_DATA, M_PKTHDR, adapter->rx_mbuf_sz);
+ rxbuf->buf = ixgbe_getcl();
if (rxbuf->buf == NULL) {
rxr->no_jmbuf.ev_count++;
error = ENOBUFS;
@@ -1702,9 +1689,6 @@ ixgbe_free_receive_buffers(struct rx_rin
}
}
- /* NetBSD specific. See ixgbe_netbsd.c */
- ixgbe_jcl_destroy(adapter, rxr);
-
if (rxr->rx_buffers != NULL) {
free(rxr->rx_buffers, M_DEVBUF);
rxr->rx_buffers = NULL;
@@ -1893,8 +1877,7 @@ ixgbe_rxeof(struct ix_queue *que)
/* pre-alloc new mbuf */
if (!discard_multidesc)
- newmp = ixgbe_getjcl(&rxr->jcl_head, M_NOWAIT, MT_DATA,
- M_PKTHDR, rxr->mbuf_sz);
+ newmp = ixgbe_getcl();
else
newmp = NULL;
if (newmp == NULL) {
Index: src/sys/dev/pci/ixgbe/ixgbe.c
diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.288 src/sys/dev/pci/ixgbe/ixgbe.c:1.289
--- src/sys/dev/pci/ixgbe/ixgbe.c:1.288 Fri Aug 20 20:25:28 2021
+++ src/sys/dev/pci/ixgbe/ixgbe.c Wed Aug 25 09:06:02 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe.c,v 1.288 2021/08/20 20:25:28 andvar Exp $ */
+/* $NetBSD: ixgbe.c,v 1.289 2021/08/25 09:06:02 msaitoh Exp $ */
/******************************************************************************
@@ -64,13 +64,12 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.288 2021/08/20 20:25:28 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.289 2021/08/25 09:06:02 msaitoh Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
#include "opt_inet6.h"
#include "opt_net_mpsafe.h"
-#include "opt_ixgbe.h"
#endif
#include "ixgbe.h"
@@ -991,8 +990,6 @@ ixgbe_attach(device_t parent, device_t d
/* Set default high limit of copying mbuf in rxeof */
adapter->rx_copy_len = IXGBE_RX_COPY_LEN_MAX;
- adapter->num_jcl = adapter->num_rx_desc * IXGBE_JCLNUM_MULTI;
-
/* Allocate our TX/RX Queues */
if (ixgbe_allocate_queues(adapter)) {
error = ENOMEM;
@@ -3419,13 +3416,6 @@ ixgbe_add_device_sysctls(struct adapter
aprint_error_dev(dev, "could not create sysctl\n");
if (sysctl_createv(log, 0, &rnode, &cnode,
- CTLFLAG_READONLY, CTLTYPE_INT, "num_jcl_per_queue",
- SYSCTL_DESCR("Number of jumbo buffers per queue"),
- NULL, 0, &adapter->num_jcl, 0, CTL_CREATE,
- CTL_EOL) != 0)
- aprint_error_dev(dev, "could not create sysctl\n");
-
- if (sysctl_createv(log, 0, &rnode, &cnode,
CTLFLAG_READONLY, CTLTYPE_INT,
"num_queues", SYSCTL_DESCR("Number of queues"),
NULL, 0, &adapter->num_queues, 0, CTL_CREATE, CTL_EOL) != 0)
@@ -4076,11 +4066,8 @@ ixgbe_init_locked(struct adapter *adapte
/* Setup Multicast table */
ixgbe_set_rxfilter(adapter);
- /* Determine the correct mbuf pool, based on frame size */
- if (adapter->max_frame_size <= MCLBYTES)
- adapter->rx_mbuf_sz = MCLBYTES;
- else
- adapter->rx_mbuf_sz = MJUMPAGESIZE;
+ /* Use fixed buffer size, even for jumbo frames */
+ adapter->rx_mbuf_sz = MCLBYTES;
/* Prepare receive descriptors and buffers */
error = ixgbe_setup_receive_structures(adapter);
Index: src/sys/dev/pci/ixgbe/ixgbe.h
diff -u src/sys/dev/pci/ixgbe/ixgbe.h:1.77 src/sys/dev/pci/ixgbe/ixgbe.h:1.78
--- src/sys/dev/pci/ixgbe/ixgbe.h:1.77 Thu Aug 19 22:17:56 2021
+++ src/sys/dev/pci/ixgbe/ixgbe.h Wed Aug 25 09:06:02 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe.h,v 1.77 2021/08/19 22:17:56 msaitoh Exp $ */
+/* $NetBSD: ixgbe.h,v 1.78 2021/08/25 09:06:02 msaitoh Exp $ */
/******************************************************************************
SPDX-License-Identifier: BSD-3-Clause
@@ -416,9 +416,6 @@ struct rx_ring {
#endif
struct ixgbe_rx_buf *rx_buffers;
ixgbe_dma_tag_t *ptag;
- u16 last_rx_mbuf_sz;
- u32 last_num_rx_desc;
- ixgbe_extmem_head_t jcl_head;
u64 bytes; /* Used for AIM calc */
u64 packets;
@@ -566,7 +563,6 @@ struct adapter {
u32 num_rx_desc;
u32 rx_process_limit;
u32 rx_copy_len;
- int num_jcl;
/* Multicast array memory */
struct ixgbe_mc_addr *mta;
@@ -778,9 +774,6 @@ bool ixgbe_rxeof(struct ix_queue *);
/* For NetBSD */
const struct sysctlnode *ixgbe_sysctl_instance(struct adapter *);
-void ixgbe_jcl_reinit(struct adapter *, bus_dma_tag_t, struct rx_ring *,
- int, size_t);
-void ixgbe_jcl_destroy(struct adapter *, struct rx_ring *);
#include "ixgbe_bypass.h"
#include "ixgbe_fdir.h"
Index: src/sys/dev/pci/ixgbe/ixgbe_netbsd.c
diff -u src/sys/dev/pci/ixgbe/ixgbe_netbsd.c:1.16 src/sys/dev/pci/ixgbe/ixgbe_netbsd.c:1.17
--- src/sys/dev/pci/ixgbe/ixgbe_netbsd.c:1.16 Fri Apr 30 06:55:32 2021
+++ src/sys/dev/pci/ixgbe/ixgbe_netbsd.c Wed Aug 25 09:06:02 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe_netbsd.c,v 1.16 2021/04/30 06:55:32 msaitoh Exp $ */
+/* $NetBSD: ixgbe_netbsd.c,v 1.17 2021/08/25 09:06:02 msaitoh Exp $ */
/*
* Copyright (c) 2011 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ixgbe_netbsd.c,v 1.16 2021/04/30 06:55:32 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ixgbe_netbsd.c,v 1.17 2021/08/25 09:06:02 msaitoh Exp $");
#include <sys/param.h>
@@ -99,192 +99,19 @@ ixgbe_dmamap_create(ixgbe_dma_tag_t *dt,
dt->dt_maxsegsize, dt->dt_boundary, flags, dmamp);
}
-static void
-ixgbe_putext(ixgbe_extmem_t *em)
-{
- ixgbe_extmem_head_t *eh = em->em_head;
-
- mutex_enter(&eh->eh_mtx);
-
- TAILQ_INSERT_HEAD(&eh->eh_freelist, em, em_link);
-
- mutex_exit(&eh->eh_mtx);
-
- return;
-}
-
-static ixgbe_extmem_t *
-ixgbe_getext(ixgbe_extmem_head_t *eh, size_t size)
-{
- ixgbe_extmem_t *em;
-
- mutex_enter(&eh->eh_mtx);
-
- TAILQ_FOREACH(em, &eh->eh_freelist, em_link) {
- if (em->em_size >= size)
- break;
- }
-
- if (em != NULL)
- TAILQ_REMOVE(&eh->eh_freelist, em, em_link);
-
- mutex_exit(&eh->eh_mtx);
-
- return em;
-}
-
-static ixgbe_extmem_t *
-ixgbe_newext(ixgbe_extmem_head_t *eh, bus_dma_tag_t dmat, size_t size)
-{
- ixgbe_extmem_t *em;
- int nseg, rc;
-
- em = kmem_zalloc(sizeof(*em), KM_SLEEP);
-
- rc = bus_dmamem_alloc(dmat, size, PAGE_SIZE, 0, &em->em_seg, 1, &nseg,
- BUS_DMA_WAITOK);
-
- if (rc != 0)
- goto post_zalloc_err;
-
- rc = bus_dmamem_map(dmat, &em->em_seg, 1, size, &em->em_vaddr,
- BUS_DMA_WAITOK);
-
- if (rc != 0)
- goto post_dmamem_err;
-
- em->em_dmat = dmat;
- em->em_size = size;
- em->em_head = eh;
-
- return em;
-post_dmamem_err:
- bus_dmamem_free(dmat, &em->em_seg, 1);
-post_zalloc_err:
- kmem_free(em, sizeof(*em));
- return NULL;
-}
-
-static void
-ixgbe_jcl_freeall(struct adapter *adapter, struct rx_ring *rxr)
-{
- ixgbe_extmem_head_t *eh = &rxr->jcl_head;
- ixgbe_extmem_t *em;
- bus_dma_tag_t dmat = rxr->ptag->dt_dmat;
-
- while ((em = ixgbe_getext(eh, 0)) != NULL) {
- KASSERT(em->em_vaddr != NULL);
- bus_dmamem_unmap(dmat, em->em_vaddr, em->em_size);
- bus_dmamem_free(dmat, &em->em_seg, 1);
- memset(em, 0, sizeof(*em));
- kmem_free(em, sizeof(*em));
- }
-}
-void
-ixgbe_jcl_reinit(struct adapter *adapter, bus_dma_tag_t dmat,
- struct rx_ring *rxr, int nbuf, size_t size)
-{
- ixgbe_extmem_head_t *eh = &rxr->jcl_head;
- ixgbe_extmem_t *em;
- int i;
-
- if (!eh->eh_initialized) {
- TAILQ_INIT(&eh->eh_freelist);
- mutex_init(&eh->eh_mtx, MUTEX_DEFAULT, IPL_NET);
- eh->eh_initialized = true;
- }
-
- /*
- * Check previous parameters. If it's not required to reinit, just
- * return.
- *
- * Note that the num_rx_desc is currently fixed value. It's never
- * changed after device is attached.
- */
- if ((rxr->last_rx_mbuf_sz == rxr->mbuf_sz)
- && (rxr->last_num_rx_desc == adapter->num_rx_desc))
- return;
-
- /* Free all dmamem */
- ixgbe_jcl_freeall(adapter, rxr);
-
- for (i = 0; i < nbuf; i++) {
- if ((em = ixgbe_newext(eh, dmat, size)) == NULL) {
- device_printf(adapter->dev,
- "%s: only %d of %d jumbo buffers allocated\n",
- __func__, i, nbuf);
- break;
- }
- ixgbe_putext(em);
- }
-
- /* Keep current parameters */
- rxr->last_rx_mbuf_sz = adapter->rx_mbuf_sz;
- rxr->last_num_rx_desc = adapter->num_rx_desc;
-}
-
-void
-ixgbe_jcl_destroy(struct adapter *adapter, struct rx_ring *rxr)
-{
- ixgbe_extmem_head_t *eh = &rxr->jcl_head;
-
- if (eh->eh_initialized) {
- /* Free all dmamem */
- ixgbe_jcl_freeall(adapter, rxr);
-
- mutex_destroy(&eh->eh_mtx);
- eh->eh_initialized = false;
- }
-}
-
-
-static void
-ixgbe_jcl_free(struct mbuf *m, void *buf, size_t size, void *arg)
-{
- ixgbe_extmem_t *em = arg;
-
- KASSERT(em->em_size == size);
-
- ixgbe_putext(em);
- /* this is an abstraction violation, but it does not lead to a
- * double-free
- */
- if (__predict_true(m != NULL)) {
- KASSERT(m->m_type != MT_FREE);
- m->m_type = MT_FREE;
- pool_cache_put(mb_cache, m);
- }
-}
-
-/* XXX need to wait for the system to finish with each jumbo mbuf and
- * free it before detaching the driver from the device.
- */
struct mbuf *
-ixgbe_getjcl(ixgbe_extmem_head_t *eh, int nowait /* M_DONTWAIT */,
- int type /* MT_DATA */, int flags /* M_PKTHDR */, size_t size)
+ixgbe_getcl(void)
{
- ixgbe_extmem_t *em;
struct mbuf *m;
- if ((flags & M_PKTHDR) != 0)
- m = m_gethdr(nowait, type);
- else
- m = m_get(nowait, type);
+ MGETHDR(m, M_DONTWAIT, MT_DATA);
if (m == NULL)
return NULL;
- em = ixgbe_getext(eh, size);
- if (em == NULL) {
- m_freem(m);
- return NULL;
- }
-
- MEXTADD(m, em->em_vaddr, em->em_size, M_DEVBUF, &ixgbe_jcl_free, em);
-
+ MCLGET(m, M_DONTWAIT);
if ((m->m_flags & M_EXT) == 0) {
- ixgbe_putext(em);
m_freem(m);
return NULL;
}
Index: src/sys/dev/pci/ixgbe/ixgbe_netbsd.h
diff -u src/sys/dev/pci/ixgbe/ixgbe_netbsd.h:1.13 src/sys/dev/pci/ixgbe/ixgbe_netbsd.h:1.14
--- src/sys/dev/pci/ixgbe/ixgbe_netbsd.h:1.13 Wed May 19 08:19:20 2021
+++ src/sys/dev/pci/ixgbe/ixgbe_netbsd.h Wed Aug 25 09:06:02 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe_netbsd.h,v 1.13 2021/05/19 08:19:20 msaitoh Exp $ */
+/* $NetBSD: ixgbe_netbsd.h,v 1.14 2021/08/25 09:06:02 msaitoh Exp $ */
/*
* Copyright (c) 2011 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -40,20 +40,6 @@
#define MJUM16BYTES (16 * 1024)
#define MJUMPAGESIZE PAGE_SIZE
-/*
- * Number of jcl per queue is calculated by
- * adapter->num_rx_desc * IXGBE_JCLNUM_MULTI. The lower limit is 2.
- */
-#define IXGBE_JCLNUM_MULTI_LOWLIM 2
-#define IXGBE_JCLNUM_MULTI_DEFAULT 3
-#if !defined(IXGBE_JCLNUM_MULTI)
-# define IXGBE_JCLNUM_MULTI IXGBE_JCLNUM_MULTI_DEFAULT
-#else
-# if (IXGBE_JCLNUM_MULTI < IXGBE_JCLNUM_MULTI_LOWLIM)
-# error IXGBE_JCLNUM_MULTI is too low.
-# endif
-#endif
-
#define IFCAP_RXCSUM \
(IFCAP_CSUM_IPv4_Rx|IFCAP_CSUM_TCPv4_Rx|IFCAP_CSUM_UDPv4_Rx|\
IFCAP_CSUM_TCPv6_Rx|IFCAP_CSUM_UDPv6_Rx)
@@ -76,26 +62,6 @@ struct ixgbe_dma_tag {
typedef struct ixgbe_dma_tag ixgbe_dma_tag_t;
-struct ixgbe_extmem_head;
-typedef struct ixgbe_extmem_head ixgbe_extmem_head_t;
-
-struct ixgbe_extmem {
- ixgbe_extmem_head_t *em_head;
- bus_dma_tag_t em_dmat;
- bus_size_t em_size;
- bus_dma_segment_t em_seg;
- void *em_vaddr;
- TAILQ_ENTRY(ixgbe_extmem) em_link;
-};
-
-typedef struct ixgbe_extmem ixgbe_extmem_t;
-
-struct ixgbe_extmem_head {
- TAILQ_HEAD(, ixgbe_extmem) eh_freelist;
- kmutex_t eh_mtx;
- bool eh_initialized;
-};
-
int ixgbe_dma_tag_create(bus_dma_tag_t, bus_size_t, bus_size_t, bus_size_t,
int, bus_size_t, int, ixgbe_dma_tag_t **);
void ixgbe_dma_tag_destroy(ixgbe_dma_tag_t *);
@@ -104,7 +70,7 @@ void ixgbe_dmamap_destroy(ixgbe_dma_tag_
void ixgbe_dmamap_sync(ixgbe_dma_tag_t *, bus_dmamap_t, int);
void ixgbe_dmamap_unload(ixgbe_dma_tag_t *, bus_dmamap_t);
-struct mbuf *ixgbe_getjcl(ixgbe_extmem_head_t *, int, int, int, size_t);
+struct mbuf *ixgbe_getcl(void);
void ixgbe_pci_enable_busmaster(pci_chipset_tag_t, pcitag_t);
u_int atomic_load_acq_uint(volatile u_int *);
Index: src/sys/dev/pci/ixgbe/ixgbe_osdep.h
diff -u src/sys/dev/pci/ixgbe/ixgbe_osdep.h:1.29 src/sys/dev/pci/ixgbe/ixgbe_osdep.h:1.30
--- src/sys/dev/pci/ixgbe/ixgbe_osdep.h:1.29 Thu Aug 19 10:18:13 2021
+++ src/sys/dev/pci/ixgbe/ixgbe_osdep.h Wed Aug 25 09:06:02 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe_osdep.h,v 1.29 2021/08/19 10:18:13 msaitoh Exp $ */
+/* $NetBSD: ixgbe_osdep.h,v 1.30 2021/08/25 09:06:02 msaitoh Exp $ */
/******************************************************************************
SPDX-License-Identifier: BSD-3-Clause
@@ -176,7 +176,6 @@ struct ixgbe_osdep
bus_space_handle_t mem_bus_space_handle;
bus_size_t mem_size;
bus_dma_tag_t dmat;
- u16 last_rx_mbuf_sz;
pci_intr_handle_t *intrs;
int nintrs;
void *ihs[IXG_MAX_NINTR];
Index: src/sys/dev/pci/ixgbe/ixv.c
diff -u src/sys/dev/pci/ixgbe/ixv.c:1.164 src/sys/dev/pci/ixgbe/ixv.c:1.165
--- src/sys/dev/pci/ixgbe/ixv.c:1.164 Thu Jul 15 08:09:31 2021
+++ src/sys/dev/pci/ixgbe/ixv.c Wed Aug 25 09:06:02 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: ixv.c,v 1.164 2021/07/15 08:09:31 msaitoh Exp $ */
+/* $NetBSD: ixv.c,v 1.165 2021/08/25 09:06:02 msaitoh Exp $ */
/******************************************************************************
@@ -35,13 +35,12 @@
/*$FreeBSD: head/sys/dev/ixgbe/if_ixv.c 331224 2018-03-19 20:55:05Z erj $*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ixv.c,v 1.164 2021/07/15 08:09:31 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ixv.c,v 1.165 2021/08/25 09:06:02 msaitoh Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
#include "opt_inet6.h"
#include "opt_net_mpsafe.h"
-#include "opt_ixgbe.h"
#endif
#include "ixgbe.h"
@@ -521,8 +520,6 @@ ixv_attach(device_t parent, device_t dev
/* Set default high limit of copying mbuf in rxeof */
adapter->rx_copy_len = IXGBE_RX_COPY_LEN_MAX;
- adapter->num_jcl = adapter->num_rx_desc * IXGBE_JCLNUM_MULTI;
-
/* Setup MSI-X */
error = ixv_configure_interrupts(adapter);
if (error)
@@ -751,14 +748,8 @@ ixv_init_locked(struct adapter *adapter)
/* Setup Multicast table */
ixv_set_rxfilter(adapter);
- /*
- * Determine the correct mbuf pool
- * for doing jumbo/headersplit
- */
- if (adapter->max_frame_size <= MCLBYTES)
- adapter->rx_mbuf_sz = MCLBYTES;
- else
- adapter->rx_mbuf_sz = MJUMPAGESIZE;
+ /* Use fixed buffer size, even for jumbo frames */
+ adapter->rx_mbuf_sz = MCLBYTES;
/* Prepare receive descriptors and buffers */
error = ixgbe_setup_receive_structures(adapter);
@@ -2599,13 +2590,6 @@ ixv_add_device_sysctls(struct adapter *a
aprint_error_dev(dev, "could not create sysctl\n");
if (sysctl_createv(log, 0, &rnode, &cnode,
- CTLFLAG_READONLY, CTLTYPE_INT, "num_jcl_per_queue",
- SYSCTL_DESCR("Number of jumbo buffers per queue"),
- NULL, 0, &adapter->num_jcl, 0, CTL_CREATE,
- CTL_EOL) != 0)
- aprint_error_dev(dev, "could not create sysctl\n");
-
- if (sysctl_createv(log, 0, &rnode, &cnode,
CTLFLAG_READWRITE, CTLTYPE_BOOL, "enable_aim",
SYSCTL_DESCR("Interrupt Moderation"),
NULL, 0, &adapter->enable_aim, 0, CTL_CREATE, CTL_EOL) != 0)