lpfc 8.3.5: MIsc patch set part 1
Subsystems (2)
PATCH 1/6 lpfc 8.3.5: MIsc patch set part 1
This patch includes the following fixes:
- Fixed panic during HBA reset.
- Fixed FCoE event tag passed in resume_rpi.
- Fix out of order ELS commands
- Fixed discovery issues found during VLAN testing.
- Fix UNREG_VPI failure on extended link pull
- Fixed crash while processing unsolicited FC frames.
- Clear retry count in the delayed ELS handler
- Fixed discovery failure during quick link bounce.
Signed-off-by James Smart <[email protected]>
---
lpfc.h | 3 lpfc_attr.c | 11 +- lpfc_crtn.h | 2 lpfc_els.c | 1 lpfc_hbadisc.c | 67 ++++++++++--- lpfc_init.c | 51 +-------- lpfc_sli.c | 293 +++++++++++++++++++++++++++++---------------------------- lpfc_sli.h | 21 ++-- lpfc_sli4.h | 13 -- 9 files changed, 242 insertions(+), 220 deletions(-)
drivers/scsi/lpfc/lpfc_attr.c +9 -2
@@ -3815,7 +3815,11 @@ lpfc_get_stats(struct Scsi_Host *shost) hs->invalid_crc_count -= lso->invalid_crc_count; hs->error_frames -= lso->error_frames; -if (phba->fc_topology ==TOPOLOGY_LOOP ) { +if (phba->hba_flag &HBA_FCOE_SUPPORT ) { + hs->lip_count =-1 ; + hs->nos_count = (phba->link_events >>1 ); + hs->nos_count -= lso->link_events; + }else if (phba->fc_topology ==TOPOLOGY_LOOP ) { hs->lip_count = (phba->fc_eventTag >>1 ); hs->lip_count -= lso->link_events; hs->nos_count =-1 ;
@@ -3906,7 +3910,10 @@ lpfc_reset_stats(struct Scsi_Host *shost lso->invalid_tx_word_count = pmb->un.varRdLnk.invalidXmitWord; lso->invalid_crc_count = pmb->un.varRdLnk.crcCnt; lso->error_frames = pmb->un.varRdLnk.crcCnt; - lso->link_events = (phba->fc_eventTag >>1 ); +if (phba->hba_flag &HBA_FCOE_SUPPORT ) + lso->link_events = (phba->link_events >>1 ); +else + lso->link_events = (phba->fc_eventTag >>1 ); psli->stats_start =get_seconds ();
drivers/scsi/lpfc/lpfc_crtn.h +1 -1
@@ -235,7 +235,7 @@ void lpfc_sli_mbox_sys_shutdown(struct lint lpfc_sli_check_eratt (struct lpfc_hba *);void lpfc_sli_handle_slow_ring_event (struct lpfc_hba *,struct lpfc_sli_ring *,uint32_t ); -int lpfc_sli4_handle_received_buffer (struct lpfc_hba *); +void lpfc_sli4_handle_received_buffer (struct lpfc_hba *,struct hbq_dmabuf *);void lpfc_sli_def_mbox_cmpl (struct lpfc_hba *,LPFC_MBOXQ_t *);int lpfc_sli_issue_iocb (struct lpfc_hba *,uint32_t ,struct lpfc_iocbq *,uint32_t );
drivers/scsi/lpfc/lpfc_els.c +1 -0
@@ -2452,6 +2452,7 @@ lpfc_els_retry_delay_handler(struct lpfc*/ del_timer_sync (&ndlp->nlp_delayfunc); retry = ndlp->nlp_retry; + ndlp->nlp_retry =0 ;switch (cmd) {case ELS_CMD_FLOGI :
drivers/scsi/lpfc/lpfc.h +2 -1
@@ -109,7 +109,7 @@ struct hbq_dmabuf {struct lpfc_dmabuf dbuf;uint32_t size;uint32_t tag; -struct lpfc_rcqe rcqe; +struct lpfc_cq_event cq_event; };/* Priority bit. Set value to exceed low water mark in lpfc_mem. */
@@ -551,6 +551,7 @@ struct lpfc_hba {uint8_t fc_linkspeed;/* Link speed after last READ_LA */ uint32_t fc_eventTag;/* event tag for link attention */ +uint32_t link_events;/* These fields used to be binfo */ uint32_t fc_pref_DID;/* preferred D_ID */
drivers/scsi/lpfc/lpfc_hbadisc.c +56 -11
157 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_init.c +8 -43
124 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_sli4.h +0 -13
@@ -110,18 +110,6 @@ struct lpfc_queue {union sli4_qe qe[1 ];/* array to index entries (must be last) */ }; -struct lpfc_cq_event { -struct list_head list; -union { -struct lpfc_mcqe mcqe_cmpl; -struct lpfc_acqe_link acqe_link; -struct lpfc_acqe_fcoe acqe_fcoe; -struct lpfc_acqe_dcbx acqe_dcbx; -struct lpfc_rcqe rcqe_cmpl; -struct sli4_wcqe_xri_aborted wcqe_axri; - } cqe; -}; -struct lpfc_sli4_link {uint8_t speed;uint8_t duplex;
@@ -325,7 +313,6 @@ struct lpfc_sli4_hba {struct lpfc_queue **fcp_cq;/* Fast-path FCP compl queue */ struct lpfc_queue *mbx_cq;/* Slow-path mailbox complete queue */ struct lpfc_queue *els_cq;/* Slow-path ELS response complete queue */ -struct lpfc_queue *rxq_cq;/* Slow-path unsolicited complete queue */ /* Setup information for various queue parameters */ int eq_esize;
drivers/scsi/lpfc/lpfc_sli.c +153 -140
466 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_sli.h +12 -9
@@ -29,14 +29,17 @@ typedef enum _lpfc_ctx_cmd { LPFC_CTX_HOST } lpfc_ctx_cmd; -/* This structure is used to carry the needed response IOCB states */ -struct lpfc_sli4_rspiocb_info { -uint8_t hw_status; -uint8_t bfield; -#define LPFC_XB 0x1 -#define LPFC_PV 0x2 -uint8_t priority; -uint8_t reserved; +struct lpfc_cq_event { +struct list_head list; +union { +struct lpfc_mcqe mcqe_cmpl; +struct lpfc_acqe_link acqe_link; +struct lpfc_acqe_fcoe acqe_fcoe; +struct lpfc_acqe_dcbx acqe_dcbx; +struct lpfc_rcqe rcqe_cmpl; +struct sli4_wcqe_xri_aborted wcqe_axri; +struct lpfc_wcqe_complete wcqe_cmpl; + } cqe; };/* This structure is used to handle IOCB requests / responses */
@@ -76,7 +79,7 @@ struct lpfc_iocbq { struct lpfc_iocbq *);void (*iocb_cmpl) (struct lpfc_hba *,struct lpfc_iocbq *,struct lpfc_iocbq *); -struct lpfc_sli4_rspiocb_info sli4_info; +struct lpfc_cq_event cq_event; };#define SLI_IOCB_RET_IOCB 1/* Return IOCB if cmd ring full */