Skip to contentSkip to conversation

lpfc 8.3.4: Various SLI4 fixes

PATCH New James Smart 1 participant 1 message Jul 19, 2009

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

PATCH 1/8 lpfc 8.3.4: Various SLI4 fixes

Various SLI4 fixes

- Fix switch name not used in the FCF record for FCoE HBAs
- Enabled HBA UE error polling error-condition action code
- Rewrite lpfc_sli4_scmd_to_wqidx_distr() to handle counter rollover cleanly
- Modify resume_rpi mailbox data structure to match current SLI4 spec
- Do not issue mailbox command in MBX_POLL mode when LPFC_HBA_ERROR is set
- Wait for HBA POST completion before checking Online and UE registers
- Fix accumulated total length not being filled in on unsolicited IOCBs
- Use PCI config space register to determine SLI rev of HBA
- Turn on starting ELS tmo function timer during device initialization

---

 drivers/scsi/lpfc/lpfc.h         |    2 +
 drivers/scsi/lpfc/lpfc_hbadisc.c |   66 +++++++++++++++++++++++++---
 drivers/scsi/lpfc/lpfc_hw4.h     |   74 ++++++++++++++++++++++++++-----
 drivers/scsi/lpfc/lpfc_init.c    |   48 ++++++++++----------
 drivers/scsi/lpfc/lpfc_mbox.c    |    8 +--
 drivers/scsi/lpfc/lpfc_sli.c     |   90 +++++++++++++++++---------------------
 drivers/scsi/lpfc/lpfc_sli4.h    |    1 
 7 files changed, 190 insertions(+), 99 deletions(-)
drivers/scsi/lpfc/lpfc.h +2 -0
@@ -616,6 +616,8 @@ struct lpfc_hba {
 	uint32_t hbq_count;	        /* Count of configured HBQs */
 	struct hbq_s hbqs[LPFC_MAX_HBQS]; /* local copy of hbq indicies  */
 
+	uint32_t fcp_qidx;		/* next work queue to post work to */
+
 	unsigned long pci_bar0_map;     /* Physical address for PCI BAR0 */
 	unsigned long pci_bar1_map;     /* Physical address for PCI BAR1 */
 	unsigned long pci_bar2_map;     /* Physical address for PCI BAR2 */
drivers/scsi/lpfc/lpfc_hbadisc.c +60 -6

97 lines not on this page · raw message

drivers/scsi/lpfc/lpfc_hw4.h +61 -13

93 lines not on this page · raw message

drivers/scsi/lpfc/lpfc_init.c +23 -25

71 lines not on this page · raw message

drivers/scsi/lpfc/lpfc_mbox.c +3 -5
@@ -1938,9 +1938,7 @@ lpfc_resume_rpi(struct lpfcMboxq *mbox, struct lpfc_nodelist *ndlp)
 	memset(mbox, 0, sizeof(*mbox));
 	resume_rpi = &mbox->u.mqe.un.resume_rpi;
 	bf_set(lpfc_mqe_command, &mbox->u.mqe, MBX_RESUME_RPI);
-	bf_set(lpfc_resume_rpi_rpi, resume_rpi, ndlp->nlp_rpi);
-	bf_set(lpfc_resume_rpi_vpi, resume_rpi,
-	       ndlp->vport->vpi + ndlp->vport->phba->vpi_base);
-	bf_set(lpfc_resume_rpi_vfi, resume_rpi,
-	       ndlp->vport->vfi + ndlp->vport->phba->vfi_base);
+	bf_set(lpfc_resume_rpi_index, resume_rpi, ndlp->nlp_rpi);
+	bf_set(lpfc_resume_rpi_ii, resume_rpi, RESUME_INDEX_RPI);
+	resume_rpi->event_tag = ndlp->phba->fc_eventTag;
 }
drivers/scsi/lpfc/lpfc_sli.c +40 -50

219 lines not on this page · raw message

drivers/scsi/lpfc/lpfc_sli4.h +1 -0
@@ -132,6 +132,7 @@ struct lpfc_sli4_link {
 
 struct lpfc_fcf {
 	uint8_t	 fabric_name[8];
+	uint8_t	 switch_name[8];
 	uint8_t  mac_addr[6];
 	uint16_t fcf_indx;
 	uint16_t fcfi;