From 94fb06971312ee28f7f371d1a05255e16a7a76a3 Mon Sep 17 00:00:00 2001 From: Ron Mercer Date: Tue, 3 Mar 2009 12:10:30 +0000 Subject: [PATCH] --- yaml --- r: 135042 b: refs/heads/master c: eae6b58fb229bd17fea38d596020b80547e51381 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/qlge/qlge_mpi.c | 38 +++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index a733f153e7d3..0b79dcd3be39 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 38d408152a86598a50680a82fe3353b506630409 +refs/heads/master: eae6b58fb229bd17fea38d596020b80547e51381 diff --git a/trunk/drivers/net/qlge/qlge_mpi.c b/trunk/drivers/net/qlge/qlge_mpi.c index ef610c674dfb..ebb7b0c48dea 100644 --- a/trunk/drivers/net/qlge/qlge_mpi.c +++ b/trunk/drivers/net/qlge/qlge_mpi.c @@ -200,6 +200,36 @@ static void ql_link_down(struct ql_adapter *qdev, struct mbox_params *mbcp) ql_write32(qdev, CSR, CSR_CMD_CLR_R2PCI_INT); } +static int ql_sfp_in(struct ql_adapter *qdev, struct mbox_params *mbcp) +{ + int status; + + mbcp->out_count = 5; + + status = ql_get_mb_sts(qdev, mbcp); + if (status) + QPRINTK(qdev, DRV, ERR, "SFP in AEN broken!\n"); + else + QPRINTK(qdev, DRV, ERR, "SFP insertion detected.\n"); + + return status; +} + +static int ql_sfp_out(struct ql_adapter *qdev, struct mbox_params *mbcp) +{ + int status; + + mbcp->out_count = 1; + + status = ql_get_mb_sts(qdev, mbcp); + if (status) + QPRINTK(qdev, DRV, ERR, "SFP out AEN broken!\n"); + else + QPRINTK(qdev, DRV, ERR, "SFP removal detected.\n"); + + return status; +} + static void ql_init_fw_done(struct ql_adapter *qdev, struct mbox_params *mbcp) { mbcp->out_count = 2; @@ -284,6 +314,14 @@ static int ql_mpi_handler(struct ql_adapter *qdev, struct mbox_params *mbcp) ql_init_fw_done(qdev, mbcp); break; + case AEN_AEN_SFP_IN: + ql_sfp_in(qdev, mbcp); + break; + + case AEN_AEN_SFP_OUT: + ql_sfp_out(qdev, mbcp); + break; + case AEN_FW_INIT_FAIL: case AEN_SYS_ERR: ql_queue_fw_error(qdev);