aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/mps
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2022-04-28 17:13:58 +0000
committerWarner Losh <imp@FreeBSD.org>2022-04-28 17:19:39 +0000
commitc5041b4ee8c3385cec03e6ccf73af78cadfe8d90 (patch)
tree486f457c356a78ab7a7a98b1a0aebf477cbc2784 /sys/dev/mps
parent65c87a6c81f52a8328d81ba9ede5662d9df23a0c (diff)
Diffstat (limited to 'sys/dev/mps')
-rw-r--r--sys/dev/mps/mps.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/dev/mps/mps.c b/sys/dev/mps/mps.c
index 5021acf930a3..b3f470bf5a39 100644
--- a/sys/dev/mps/mps.c
+++ b/sys/dev/mps/mps.c
@@ -2983,6 +2983,12 @@ mps_data_cb(void *arg, bus_dma_segment_t *segs, int nsegs, int error)
mps_dprint(sc, MPS_INFO, "Out of chain frames, "
"consider increasing hw.mps.max_chains.\n");
cm->cm_flags |= MPS_CM_FLAGS_CHAIN_FAILED;
+ /*
+ * mpr_complete_command can only be called on commands
+ * that are in the queue. Since this is an error path
+ * which gets called before we enqueue, update the state
+ * to meet this requirement before we complete it.
+ */
cm->cm_state = MPS_CM_STATE_INQUEUE;
mps_complete_command(sc, cm);
return;