svn commit: r344678 - head/sys/dev/cxgb
Conrad Meyer
cem at FreeBSD.org
Fri Mar 1 01:57:24 UTC 2019
Author: cem
Date: Fri Mar 1 01:57:22 2019
New Revision: 344678
URL: https://svnweb.freebsd.org/changeset/base/344678
Log:
cxgb(4): Netdump: only reference allocated qsets
SGE_QSETS is an upper bound -- fewer qsets may be allocated depending on
the number of CPUs.
Reviewed by: markj, np, vangyzen
X-MFC-With: r333288
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D17274
Modified:
head/sys/dev/cxgb/cxgb_adapter.h
head/sys/dev/cxgb/cxgb_main.c
Modified: head/sys/dev/cxgb/cxgb_adapter.h
==============================================================================
--- head/sys/dev/cxgb/cxgb_adapter.h Fri Mar 1 01:20:21 2019 (r344677)
+++ head/sys/dev/cxgb/cxgb_adapter.h Fri Mar 1 01:57:22 2019 (r344678)
@@ -363,6 +363,7 @@ struct adapter {
unsigned int slow_intr_mask;
unsigned long irq_stats[IRQ_NUM_STATS];
+ unsigned nqsets;
struct sge sge;
struct mc7 pmrx;
struct mc7 pmtx;
Modified: head/sys/dev/cxgb/cxgb_main.c
==============================================================================
--- head/sys/dev/cxgb/cxgb_main.c Fri Mar 1 01:20:21 2019 (r344677)
+++ head/sys/dev/cxgb/cxgb_main.c Fri Mar 1 01:57:22 2019 (r344678)
@@ -853,6 +853,8 @@ setup_sge_qsets(adapter_t *sc)
}
}
+ sc->nqsets = qset_idx;
+
return (0);
}
@@ -3598,7 +3600,7 @@ cxgb_netdump_init(struct ifnet *ifp, int *nrxr, int *n
pi = if_getsoftc(ifp);
adap = pi->adapter;
ADAPTER_LOCK(adap);
- *nrxr = SGE_QSETS;
+ *nrxr = adap->nqsets;
*ncl = adap->sge.qs[0].fl[1].size;
*clsize = adap->sge.qs[0].fl[1].buf_size;
ADAPTER_UNLOCK(adap);
@@ -3613,7 +3615,7 @@ cxgb_netdump_event(struct ifnet *ifp, enum netdump_ev
pi = if_getsoftc(ifp);
if (event == NETDUMP_START)
- for (i = 0; i < SGE_QSETS; i++) {
+ for (i = 0; i < pi->adapter->nqsets; i++) {
qs = &pi->adapter->sge.qs[i];
/* Need to reinit after netdump_mbuf_dump(). */
@@ -3650,7 +3652,7 @@ cxgb_netdump_poll(struct ifnet *ifp, int count)
return (ENOENT);
adap = pi->adapter;
- for (i = 0; i < SGE_QSETS; i++)
+ for (i = 0; i < adap->nqsets; i++)
(void)cxgb_netdump_poll_rx(adap, &adap->sge.qs[i]);
(void)cxgb_netdump_poll_tx(&adap->sge.qs[pi->first_qset]);
return (0);
More information about the svn-src-head
mailing list