lpfc 8.3.14: PCI fixes and enhancements
Subsystems (2)
PATCH 1/4 lpfc 8.3.14: PCI fixes and enhancements
- Allow enabling MSI-X intterupts with fewer vectors than requested by looking at the return value from pci_enable_msix.
- Implemented driver PCI AER error handling routines for supporting AER error recovering on SLI4 devices.
- Remove redundant SLI_ACTIVE checks
Signed-off-by Alex Iannicelli <[email protected]>
Signed-off-by James Smart <[email protected]>
---
lpfc_attr.c | 22 ------ lpfc_init.c | 195 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- lpfc_scsi.c | 10 ++- lpfc_sli.c | 41 ++++++++++-- lpfc_sli4.h | 1 5 files changed, 228 insertions(+), 41 deletions(-)
drivers/scsi/lpfc/lpfc_attr.c +3 -19
@@ -864,7 +864,6 @@ lpfc_get_hba_info(struct lpfc_hba *phba, uint32_t *mrpi, uint32_t *arpi, uint32_t *mvpi, uint32_t *avpi) { - struct lpfc_sli *psli = &phba->sli; struct lpfc_mbx_read_config *rd_config;LPFC_MBOXQ_t *pmboxq;MAILBOX_t *pmb;
@@ -893,8 +892,7 @@ lpfc_get_hba_info(struct lpfc_hba *phba, pmb->mbxOwner =OWN_HOST ; pmboxq->context1 =NULL ; -if ((phba->pport->fc_flag &FC_OFFLINE_MODE ) || - (!(psli->sli_flag &LPFC_SLI_ACTIVE ))) +if (phba->pport->fc_flag &FC_OFFLINE_MODE ) rc =MBX_NOT_FINISHED ;else rc =lpfc_sli_issue_mbox_wait (phba, pmboxq, phba->fc_ratov *2 );
@@ -2943,9 +2941,6 @@ lpfc_aer_support_store(struct device *destruct lpfc_hba *phba = vport->phba;int val =0 , rc = -EINVAL ; -/* AER not supported on OC devices yet */ -if (phba->pci_dev_grp ==LPFC_PCI_DEV_OC ) -return -EPERM ;if (!isdigit (buf[0 ]))return -EINVAL ;if (sscanf (buf,"%i" , &val) !=1 )
@@ -3018,12 +3013,6 @@ lpfc_param_show(aer_support)static int lpfc_aer_support_init (struct lpfc_hba *phba,int val) { -/* AER not supported on OC devices yet */ -if (phba->pci_dev_grp ==LPFC_PCI_DEV_OC ) { - phba->cfg_aer_support =0 ; -return -EPERM ; - } -if (val ==0 || val ==1 ) { phba->cfg_aer_support = val;return 0 ;
@@ -3068,9 +3057,6 @@ lpfc_aer_cleanup_state(struct device *destruct lpfc_hba *phba = vport->phba;int val, rc =-1 ; -/* AER not supported on OC devices yet */ -if (phba->pci_dev_grp ==LPFC_PCI_DEV_OC ) -return -EPERM ;if (!isdigit (buf[0 ]))return -EINVAL ;if (sscanf (buf,"%i" , &val) !=1 )
@@ -4099,8 +4085,7 @@ lpfc_get_stats(struct Scsi_Host *shost) pmboxq->context1 =NULL ; pmboxq->vport = vport; -if ((vport->fc_flag &FC_OFFLINE_MODE ) || - (!(psli->sli_flag &LPFC_SLI_ACTIVE ))) +if (vport->fc_flag &FC_OFFLINE_MODE ) rc =lpfc_sli_issue_mbox (phba, pmboxq,MBX_POLL );else rc =lpfc_sli_issue_mbox_wait (phba, pmboxq, phba->fc_ratov *2 );
@@ -4124,8 +4109,7 @@ lpfc_get_stats(struct Scsi_Host *shost) pmboxq->context1 =NULL ; pmboxq->vport = vport; -if ((vport->fc_flag &FC_OFFLINE_MODE ) || - (!(psli->sli_flag &LPFC_SLI_ACTIVE ))) +if (vport->fc_flag &FC_OFFLINE_MODE ) rc =lpfc_sli_issue_mbox (phba, pmboxq,MBX_POLL );else rc =lpfc_sli_issue_mbox_wait (phba, pmboxq, phba->fc_ratov *2 );
drivers/scsi/lpfc/lpfc_init.c +182 -13
311 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_scsi.c +8 -2
@@ -2295,15 +2295,21 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hbastruct lpfc_vport *vport = pIocbIn->vport;struct lpfc_rport_data *rdata = lpfc_cmd->rdata;struct lpfc_nodelist *pnode = rdata->pnode; -struct scsi_cmnd *cmd = lpfc_cmd->pCmd; +struct scsi_cmnd *cmd;int result;struct scsi_device *tmp_sdev;int depth;unsigned long flags;struct lpfc_fast_path_event *fast_path_evt; -struct Scsi_Host *shost = cmd->device->host; +struct Scsi_Host *shost;uint32_t queue_depth, scsi_id; +/* Sanity check on return of outstanding command */ +if (!(lpfc_cmd->pCmd)) +return ; + cmd = lpfc_cmd->pCmd; + shost = cmd->device->host; + lpfc_cmd->result = pIocbOut->iocb.un.ulpWord[4 ]; lpfc_cmd->status = pIocbOut->iocb.ulpStatus;/* pick up SLI4 exhange busy status from HBA */
drivers/scsi/lpfc/lpfc_sli4.h +1 -0
@@ -382,6 +382,7 @@ struct lpfc_sli4_hba {struct lpfc_pc_sli4_params pc_sli4_params;struct msix_entry *msix_entries;uint32_t cfg_eqn; +uint32_t msix_vec_nr;struct lpfc_fcp_eq_hdl *fcp_eq_hdl;/* FCP per-WQ handle */ /* Pointers to the constructed SLI4 queues */ struct lpfc_queue **fp_eq;/* Fast-path event queue */
drivers/scsi/lpfc/lpfc_sli.c +34 -7
77 lines not on this page · raw message