diff options
Diffstat (limited to 'sys/dev/hfa/fore_command.c')
-rw-r--r-- | sys/dev/hfa/fore_command.c | 12 |
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); } |