diff options
author | Stephen Hurd <shurd@FreeBSD.org> | 2018-11-14 20:36:18 +0000 |
---|---|---|
committer | Stephen Hurd <shurd@FreeBSD.org> | 2018-11-14 20:36:18 +0000 |
commit | 0efb1a464f1163767307bad0ca00a83885469124 (patch) | |
tree | 12e166134a7a659d2a6ade7fda0ca60db3478b89 /sys/net/iflib.c | |
parent | 905837ebe7ddd65e5d5cd362c210ce55633b0aff (diff) | |
download | src-0efb1a464f1163767307bad0ca00a83885469124.tar.gz src-0efb1a464f1163767307bad0ca00a83885469124.zip |
Clear RX completion queue state veriables in iflib_stop()
iflib_stop() was not resetting the rxq completion queue state variables.
This meant that for any driver that has receive completion queues, after a
reinit, iflib would start asking what's available on the rx side starting at
whatever the completion queue index was prior to the stop, instead of at 0.
Submitted by: pkelsey
Reported by: pkelsey
MFC after: 3 days
Sponsored by: Limelight Networks
Notes
Notes:
svn path=/head/; revision=340445
Diffstat (limited to 'sys/net/iflib.c')
-rw-r--r-- | sys/net/iflib.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/net/iflib.c b/sys/net/iflib.c index 1925a6d0f7c5..537e52aad2de 100644 --- a/sys/net/iflib.c +++ b/sys/net/iflib.c @@ -2414,6 +2414,7 @@ iflib_stop(if_ctx_t ctx) for (i = 0; i < scctx->isc_nrxqsets; i++, rxq++) { /* make sure all transmitters have completed before proceeding XXX */ + rxq->ifr_cq_gen = rxq->ifr_cq_cidx = rxq->ifr_cq_pidx = 0; for (j = 0, di = rxq->ifr_ifdi; j < sctx->isc_nrxqs; j++, di++) bzero((void *)di->idi_vaddr, di->idi_size); /* also resets the free lists pidx/cidx */ |