Commit fc1f9ea5 authored by Ron Mercer's avatar Ron Mercer Committed by David S. Miller

qlge: Add support for lost firmware events.

When the firmware is issuing events to the driver the events
must be removed from the queue.  If the queue overflows, the
firmware will build and special event that captures those that
are lost.
Signed-off-by: default avatarRon Mercer <ron.mercer@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent bb667670
...@@ -284,6 +284,27 @@ static int ql_sfp_out(struct ql_adapter *qdev, struct mbox_params *mbcp) ...@@ -284,6 +284,27 @@ static int ql_sfp_out(struct ql_adapter *qdev, struct mbox_params *mbcp)
return status; return status;
} }
static int ql_aen_lost(struct ql_adapter *qdev, struct mbox_params *mbcp)
{
int status;
mbcp->out_count = 6;
status = ql_get_mb_sts(qdev, mbcp);
if (status)
QPRINTK(qdev, DRV, ERR, "Lost AEN broken!\n");
else {
int i;
QPRINTK(qdev, DRV, ERR, "Lost AEN detected.\n");
for (i = 0; i < mbcp->out_count; i++)
QPRINTK(qdev, DRV, ERR, "mbox_out[%d] = 0x%.08x.\n",
i, mbcp->mbox_out[i]);
}
return status;
}
static void ql_init_fw_done(struct ql_adapter *qdev, struct mbox_params *mbcp) static void ql_init_fw_done(struct ql_adapter *qdev, struct mbox_params *mbcp)
{ {
int status; int status;
...@@ -421,6 +442,10 @@ static int ql_mpi_handler(struct ql_adapter *qdev, struct mbox_params *mbcp) ...@@ -421,6 +442,10 @@ static int ql_mpi_handler(struct ql_adapter *qdev, struct mbox_params *mbcp)
status = -EIO; status = -EIO;
break; break;
case AEN_AEN_LOST:
ql_aen_lost(qdev, mbcp);
break;
default: default:
QPRINTK(qdev, DRV, ERR, QPRINTK(qdev, DRV, ERR,
"Unsupported AE %.08x.\n", mbcp->mbox_out[0]); "Unsupported AE %.08x.\n", mbcp->mbox_out[0]);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment