diff options
author | Conrad Meyer <cem@FreeBSD.org> | 2019-03-01 01:57:22 +0000 |
---|---|---|
committer | Conrad Meyer <cem@FreeBSD.org> | 2019-03-01 01:57:22 +0000 |
commit | 3948ad29e9d789636f6ed8ec6ba825c12687d09f (patch) | |
tree | 6f8ec82ad6db8175c37d78af27949a8a527b3c5a /sys/dev/cxgb | |
parent | ef30b5a80910bd877f582248004200065eeb3ef5 (diff) | |
download | src-3948ad29e9d789636f6ed8ec6ba825c12687d09f.tar.gz src-3948ad29e9d789636f6ed8ec6ba825c12687d09f.zip |
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
Notes
Notes:
svn path=/head/; revision=344678
Diffstat (limited to 'sys/dev/cxgb')
-rw-r--r-- | sys/dev/cxgb/cxgb_adapter.h | 1 | ||||
-rw-r--r-- | sys/dev/cxgb/cxgb_main.c | 8 |
2 files changed, 6 insertions, 3 deletions
diff --git a/sys/dev/cxgb/cxgb_adapter.h b/sys/dev/cxgb/cxgb_adapter.h index a78addd9cd18..0806e036eb2d 100644 --- a/sys/dev/cxgb/cxgb_adapter.h +++ b/sys/dev/cxgb/cxgb_adapter.h @@ -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; diff --git a/sys/dev/cxgb/cxgb_main.c b/sys/dev/cxgb/cxgb_main.c index a47aa909c237..c23ba3d0037b 100644 --- a/sys/dev/cxgb/cxgb_main.c +++ b/sys/dev/cxgb/cxgb_main.c @@ -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 *ncl, int *clsize) 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 event) 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); |