提交 d2873e4c 编写于 作者: J James Smart 提交者: James Bottomley

[SCSI] lpfc 8.1.10 : Add support to post events via new FC event interfaces

Add support to post events via new FC event interfaces
Signed-off-by: NJames Smart <James.Smart@emulex.com>
Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
上级 f14e2e29
...@@ -391,3 +391,5 @@ struct rnidrsp { ...@@ -391,3 +391,5 @@ struct rnidrsp {
struct list_head list; struct list_head list;
uint32_t data; uint32_t data;
}; };
#define FC_REG_DUMP_EVENT 0x10 /* Register for Dump events */
...@@ -2506,6 +2506,7 @@ lpfc_els_rcv_rscn(struct lpfc_hba * phba, ...@@ -2506,6 +2506,7 @@ lpfc_els_rcv_rscn(struct lpfc_hba * phba,
uint32_t *lp; uint32_t *lp;
IOCB_t *icmd; IOCB_t *icmd;
uint32_t payload_len, cmd; uint32_t payload_len, cmd;
int i;
icmd = &cmdiocb->iocb; icmd = &cmdiocb->iocb;
pcmd = (struct lpfc_dmabuf *) cmdiocb->context2; pcmd = (struct lpfc_dmabuf *) cmdiocb->context2;
...@@ -2524,6 +2525,10 @@ lpfc_els_rcv_rscn(struct lpfc_hba * phba, ...@@ -2524,6 +2525,10 @@ lpfc_els_rcv_rscn(struct lpfc_hba * phba,
phba->brd_no, phba->brd_no,
phba->fc_flag, payload_len, *lp, phba->fc_rscn_id_cnt); phba->fc_flag, payload_len, *lp, phba->fc_rscn_id_cnt);
for (i = 0; i < payload_len/sizeof(uint32_t); i++)
fc_host_post_event(phba->host, fc_get_event_number(),
FCH_EVT_RSCN, lp[i]);
/* If we are about to begin discovery, just ACC the RSCN. /* If we are about to begin discovery, just ACC the RSCN.
* Discovery processing will satisfy it. * Discovery processing will satisfy it.
*/ */
......
...@@ -340,6 +340,9 @@ lpfc_linkdown(struct lpfc_hba * phba) ...@@ -340,6 +340,9 @@ lpfc_linkdown(struct lpfc_hba * phba)
spin_unlock_irq(phba->host->host_lock); spin_unlock_irq(phba->host->host_lock);
} }
fc_host_post_event(phba->host, fc_get_event_number(),
FCH_EVT_LINKDOWN, 0);
/* Clean up any firmware default rpi's */ /* Clean up any firmware default rpi's */
if ((mb = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL))) { if ((mb = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL))) {
lpfc_unreg_did(phba, 0xffffffff, mb); lpfc_unreg_did(phba, 0xffffffff, mb);
...@@ -427,6 +430,9 @@ lpfc_linkup(struct lpfc_hba * phba) ...@@ -427,6 +430,9 @@ lpfc_linkup(struct lpfc_hba * phba)
struct list_head *listp, *node_list[7]; struct list_head *listp, *node_list[7];
int i; int i;
fc_host_post_event(phba->host, fc_get_event_number(),
FCH_EVT_LINKUP, 0);
spin_lock_irq(phba->host->host_lock); spin_lock_irq(phba->host->host_lock);
phba->hba_state = LPFC_LINK_UP; phba->hba_state = LPFC_LINK_UP;
phba->fc_flag &= ~(FC_PT2PT | FC_PT2PT_PLOGI | FC_ABORT_DISCOVERY | phba->fc_flag &= ~(FC_PT2PT | FC_PT2PT_PLOGI | FC_ABORT_DISCOVERY |
......
...@@ -511,6 +511,7 @@ lpfc_handle_eratt(struct lpfc_hba * phba) ...@@ -511,6 +511,7 @@ lpfc_handle_eratt(struct lpfc_hba * phba)
{ {
struct lpfc_sli *psli = &phba->sli; struct lpfc_sli *psli = &phba->sli;
struct lpfc_sli_ring *pring; struct lpfc_sli_ring *pring;
uint32_t event_data;
if (phba->work_hs & HS_FFER6) { if (phba->work_hs & HS_FFER6) {
/* Re-establishing Link */ /* Re-establishing Link */
...@@ -555,6 +556,11 @@ lpfc_handle_eratt(struct lpfc_hba * phba) ...@@ -555,6 +556,11 @@ lpfc_handle_eratt(struct lpfc_hba * phba)
phba->brd_no, phba->work_hs, phba->brd_no, phba->work_hs,
phba->work_status[0], phba->work_status[1]); phba->work_status[0], phba->work_status[1]);
event_data = FC_REG_DUMP_EVENT;
fc_host_post_vendor_event(phba->host, fc_get_event_number(),
sizeof(event_data), (char *) &event_data,
SCSI_NL_VID_TYPE_PCI | PCI_VENDOR_ID_EMULEX);
psli->sli_flag &= ~LPFC_SLI2_ACTIVE; psli->sli_flag &= ~LPFC_SLI2_ACTIVE;
lpfc_offline(phba); lpfc_offline(phba);
phba->hba_state = LPFC_HBA_ERROR; phba->hba_state = LPFC_HBA_ERROR;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册