aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ioat
diff options
context:
space:
mode:
authorConrad Meyer <cem@FreeBSD.org>2016-08-22 14:51:09 +0000
committerConrad Meyer <cem@FreeBSD.org>2016-08-22 14:51:09 +0000
commitc114e741206a645bc068d2a1d4f963d372032c2e (patch)
treeac759b0a9fd0b604e1c6467ceb66035403f185c6 /sys/dev/ioat
parent0283c0f581f325aa7095dca58800fe8ea1248927 (diff)
Notes
Diffstat (limited to 'sys/dev/ioat')
-rw-r--r--sys/dev/ioat/ioat.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/dev/ioat/ioat.c b/sys/dev/ioat/ioat.c
index c412401b98f6..8443e3a92601 100644
--- a/sys/dev/ioat/ioat.c
+++ b/sys/dev/ioat/ioat.c
@@ -768,6 +768,13 @@ ioat_process_events(struct ioat_softc *ioat)
ioat->stats.descriptors_error++;
}
+ if (ioat->is_completion_pending) {
+ ioat->is_completion_pending = FALSE;
+ callout_reset(&ioat->shrink_timer, IOAT_SHRINK_PERIOD,
+ ioat_shrink_timer_callback, ioat);
+ callout_stop(&ioat->poll_timer);
+ }
+
/* Clear error status */
ioat_write_4(ioat, IOAT_CHANERR_OFFSET, chanerr);
@@ -1898,6 +1905,7 @@ ioat_reset_hw(struct ioat_softc *ioat)
ioat->tail = ioat->head = ioat->hw_head = 0;
ioat->last_seen = 0;
*ioat->comp_update = 0;
+ KASSERT(!ioat->is_completion_pending, ("bogus completion_pending"));
ioat_write_chanctrl(ioat, IOAT_CHANCTRL_RUN);
ioat_write_chancmp(ioat, ioat->comp_update_bus_addr);