Skip to contentSkip to conversation

lpfc 8.1.3: Adding hbaapi event support using new fc transport events api

PATCH New Jamie Wellnitz 1 participant 1 message Mar 1, 2006

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 8/9 lpfc 8.1.3: Adding hbaapi event support using new fc transport events api

Adding hbaapi event support using new fc transport events api

Requires the following patch, which adds event support to the FC transport:
http://marc.theaimsgroup.com/?l=linux-scsi&m=114062467404472&w=2

drivers/scsi/lpfc/lpfc_hbadisc.c +3 -0
@@ -320,6 +320,8 @@ lpfc_linkdown(struct lpfc_hba * phba)
 		spin_unlock_irq(phba->host->host_lock);
 	}
 
+	fc_host_event_post(phba->host, FCH_EVT_LINKDOWN, 0);
+
 	/* Clean up any firmware default rpi's */
 	if ((mb = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL))) {
 		lpfc_unreg_did(phba, 0xffffffff, mb);
@@ -415,6 +417,7 @@ lpfc_linkup(struct lpfc_hba * phba)
 	phba->fc_ns_retry = 0;
 	spin_unlock_irq(phba->host->host_lock);
 
+	fc_host_event_post(phba->host, FCH_EVT_LINKUP, 0);
 
 	node_list[0] = &phba->fc_plogi_list;
 	node_list[1] = &phba->fc_adisc_list;
drivers/scsi/lpfc/lpfc_init.c +5 -0
@@ -561,6 +561,7 @@ lpfc_handle_eratt(struct lpfc_hba * phba
 
 		lpfc_offline(phba);
 		phba->hba_state = LPFC_HBA_ERROR;
+		fc_host_event_post(phba->host, FCH_EVT_VENDOR_UNIQUE, 0);
 		lpfc_hba_down_post(phba);
 	}
 }
@@ -1333,6 +1334,8 @@ lpfc_online(struct lpfc_hba * phba)
 	if (lpfc_sli_hba_setup(phba))	/* Initialize the HBA */
 		return 1;
 
+	fc_host_event_post(phba->host, FCH_EVT_PORT_ONLINE, 0);
+
 	spin_lock_irq(phba->host->host_lock);
 	phba->fc_flag &= ~FC_OFFLINE_MODE;
 	spin_unlock_irq(phba->host->host_lock);
@@ -1354,6 +1357,8 @@ lpfc_offline(struct lpfc_hba * phba)
 	if (phba->fc_flag & FC_OFFLINE_MODE)
 		return 0;
 
+	fc_host_event_post(phba->host, FCH_EVT_PORT_OFFLINE, 0);
+
 	psli = &phba->sli;
 	pring = &psli->ring[psli->fcp_ring];
 
drivers/scsi/lpfc/lpfc_els.c +4 -0
@@ -2383,6 +2383,7 @@ lpfc_els_rcv_rscn(struct lpfc_hba * phba
 	uint32_t *lp;
 	IOCB_t *icmd;
 	uint32_t payload_len, cmd;
+	int i;
 
 	icmd = &cmdiocb->iocb;
 	pcmd = (struct lpfc_dmabuf *) cmdiocb->context2;
@@ -2401,6 +2402,9 @@ lpfc_els_rcv_rscn(struct lpfc_hba * phba
 			phba->brd_no,
 			phba->fc_flag, payload_len, *lp, phba->fc_rscn_id_cnt);
 
+	for (i = 0; i < payload_len/sizeof (uint32_t); i++)
+		fc_host_event_post(phba->host, FCH_EVT_RSCN, lp[i]);
+
 	/* If we are about to begin discovery, just ACC the RSCN.
 	 * Discovery processing will satisfy it.
 	 */