aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/qlge
diff options
context:
space:
mode:
authorRon Mercer <ron.mercer@qlogic.com>2009-03-03 07:10:35 -0500
committerDavid S. Miller <davem@davemloft.net>2009-03-04 02:50:48 -0500
commit7c92191cb4203d3900461074f90851e9e7b56fcb (patch)
treee8e93243f4f3711d38aea194db366024c72b89fb /drivers/net/qlge
parentf56b54f5423177d26da0aee1f8e7d5da6225ce6d (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.c18
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;