svn commit: r325901 - head/sys/net
Stephen Hurd
shurd at FreeBSD.org
Thu Nov 16 18:53:00 UTC 2017
Author: shurd
Date: Thu Nov 16 18:52:58 2017
New Revision: 325901
URL: https://svnweb.freebsd.org/changeset/base/325901
Log:
Fix default numbers of iflib queue sets
The intent appears to be having one RX/TX queue set per core,
but since scctx->isc_n[tr]xqsets is set to max before calling
iflib_msix_init(), both end up being set to total number of cores.
Use ctx->ifc_sysctl_n[rt]xqs as the selected value and
scctx->isc_n[rt]xqsets as the max. This should result in what appears
to be the intended behaviour
Reviewed by: sbruno
Sponsored by: Limelight Networks
Differential Revision: https://reviews.freebsd.org/D13096
Modified:
head/sys/net/iflib.c
Modified: head/sys/net/iflib.c
==============================================================================
--- head/sys/net/iflib.c Thu Nov 16 18:22:03 2017 (r325900)
+++ head/sys/net/iflib.c Thu Nov 16 18:52:58 2017 (r325901)
@@ -5312,11 +5312,11 @@ iflib_msix_init(if_ctx_t ctx)
int iflib_num_tx_queues, iflib_num_rx_queues;
int err, admincnt, bar;
- iflib_num_tx_queues = scctx->isc_ntxqsets;
- iflib_num_rx_queues = scctx->isc_nrxqsets;
+ iflib_num_tx_queues = ctx->ifc_sysctl_ntxqs;
+ iflib_num_rx_queues = ctx->ifc_sysctl_nrxqs;
- device_printf(dev, "msix_init qsets capped at %d\n", iflib_num_tx_queues);
-
+ device_printf(dev, "msix_init qsets capped at %d\n", imax(scctx->isc_ntxqsets, scctx->isc_nrxqsets));
+
bar = ctx->ifc_softc_ctx.isc_msix_bar;
admincnt = sctx->isc_admin_intrcnt;
/* Override by global tuneable */
@@ -5414,6 +5414,10 @@ iflib_msix_init(if_ctx_t ctx)
rx_queues = iflib_num_rx_queues;
else
rx_queues = queues;
+
+ if (rx_queues > scctx->isc_nrxqsets)
+ rx_queues = scctx->isc_nrxqsets;
+
/*
* We want this to be all logical CPUs by default
*/
@@ -5421,6 +5425,9 @@ iflib_msix_init(if_ctx_t ctx)
tx_queues = iflib_num_tx_queues;
else
tx_queues = mp_ncpus;
+
+ if (tx_queues > scctx->isc_ntxqsets)
+ tx_queues = scctx->isc_ntxqsets;
if (ctx->ifc_sysctl_qs_eq_override == 0) {
#ifdef INVARIANTS
More information about the svn-src-head
mailing list