summaryrefslogtreecommitdiffstats
path: root/sys/dev/hfa/fore_command.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/hfa/fore_command.c')
-rw-r--r--sys/dev/hfa/fore_command.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/dev/hfa/fore_command.c b/sys/dev/hfa/fore_command.c
index e73091f..d4442a9 100644
--- a/sys/dev/hfa/fore_command.c
+++ b/sys/dev/hfa/fore_command.c
@@ -235,8 +235,9 @@ fore_cmd_drain(fup)
/*
* Process each completed entry
+ * ForeThought 4 may set QSTAT_ERROR without QSTAT_COMPLETED.
*/
- while (*fup->fu_cmd_head->hcq_status & QSTAT_COMPLETED) {
+ while (*fup->fu_cmd_head->hcq_status & (QSTAT_COMPLETED | QSTAT_ERROR)) {
hcp = fup->fu_cmd_head;
@@ -333,6 +334,14 @@ fore_cmd_drain(fup)
break;
case CMD_GET_PROM:
+ if (fup->fu_ft4)
+ goto unknown;
+ goto prom;
+
+ case CMD_GET_PROM4:
+ if (!fup->fu_ft4)
+ goto unknown;
+ prom:
if (*hcp->hcq_status & QSTAT_ERROR) {
/*
* Couldn't get PROM data
@@ -371,6 +380,7 @@ fore_cmd_drain(fup)
break;
default:
+ unknown:
log(LOG_ERR, "fore_cmd_drain: unknown command %ld\n",
hcp->hcq_code);
}
OpenPOWER on IntegriCloud