diff options
author | Ron Mercer <ron.mercer@qlogic.com> | 2009-03-03 07:10:35 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-03-04 02:50:48 -0500 |
commit | 7c92191cb4203d3900461074f90851e9e7b56fcb (patch) | |
tree | e8e93243f4f3711d38aea194db366024c72b89fb /drivers/net/qlge | |
parent | f56b54f5423177d26da0aee1f8e7d5da6225ce6d (diff) |
qlge: Improve handling for firmware init failure.
This event will arrive at boot time or after an
MPI processor reset if the firmware failed to initialize.
Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/qlge')
-rw-r--r-- | drivers/net/qlge/qlge_mpi.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/net/qlge/qlge_mpi.c b/drivers/net/qlge/qlge_mpi.c index 3a660f9e900..2c1d2205c65 100644 --- a/drivers/net/qlge/qlge_mpi.c +++ b/drivers/net/qlge/qlge_mpi.c | |||
@@ -395,7 +395,25 @@ static int ql_mpi_handler(struct ql_adapter *qdev, struct mbox_params *mbcp) | |||
395 | ql_sfp_out(qdev, mbcp); | 395 | ql_sfp_out(qdev, mbcp); |
396 | break; | 396 | break; |
397 | 397 | ||
398 | /* This event can arrive at boot time or after an | ||
399 | * MPI reset if the firmware failed to initialize. | ||
400 | */ | ||
398 | case AEN_FW_INIT_FAIL: | 401 | case AEN_FW_INIT_FAIL: |
402 | /* If we're in process on executing the firmware, | ||
403 | * then convert the status to normal mailbox status. | ||
404 | */ | ||
405 | if (mbcp->mbox_in[0] == MB_CMD_EX_FW) { | ||
406 | mbcp->out_count = orig_count; | ||
407 | status = ql_get_mb_sts(qdev, mbcp); | ||
408 | mbcp->mbox_out[0] = MB_CMD_STS_ERR; | ||
409 | return status; | ||
410 | } | ||
411 | QPRINTK(qdev, DRV, ERR, | ||
412 | "Firmware initialization failed.\n"); | ||
413 | status = -EIO; | ||
414 | ql_queue_fw_error(qdev); | ||
415 | break; | ||
416 | |||
399 | case AEN_SYS_ERR: | 417 | case AEN_SYS_ERR: |
400 | ql_queue_fw_error(qdev); | 418 | ql_queue_fw_error(qdev); |
401 | break; | 419 | break; |