diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-01-06 10:45:50 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-01-06 10:45:50 -0800 |
commit | 642a74e7a411967ceea87d6ee720a436608696a0 (patch) | |
tree | 8e4b51e79acc31d2b98ef3dd267dd3bb2a61f9f5 /drivers/scsi/lpfc/lpfc_init.c | |
parent | c6f7afaeeda5b3c42ea8d7b27e197d223a04675e (diff) | |
parent | 500af638b3f378e5d1f04dfe5043a377cdc234de (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:
[SCSI] lpfc 8.3.7: Update Driver version to 8.3.7
[SCSI] lpfc 8.3.7: Fix discovery failures.
[SCSI] lpfc 8.3.7: Fix SCSI protocol related errors.
[SCSI] lpfc 8.3.7: Fix hardware/SLI relates issues
[SCSI] lpfc 8.3.7: Fix NPIV operation errors
[SCSI] lpfc 8.3.7: Fix FC protocol errors
[SCSI] stex: fix scan of nonexistent lun
[SCSI] pmcraid: fix to avoid twice scsi_dma_unmap for a command
[SCSI] qla2xxx: Update version number to 8.03.01-k9.
[SCSI] qla2xxx: Added to EEH support.
[SCSI] qla2xxx: Extend base EEH support in qla2xxx.
[SCSI] qla2xxx: Fix for a multiqueue bug in CPU affinity mode
[SCSI] qla2xxx: Get the link data rate explicitly during device resync.
[SCSI] cxgb3i: Fix a login over vlan issue
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_init.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_init.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c index d4da6bdd0e7..b8eb1b6e5e7 100644 --- a/drivers/scsi/lpfc/lpfc_init.c +++ b/drivers/scsi/lpfc/lpfc_init.c @@ -3006,6 +3006,7 @@ lpfc_sli4_async_fcoe_evt(struct lpfc_hba *phba, struct lpfc_vport *vport; struct lpfc_nodelist *ndlp; struct Scsi_Host *shost; + uint32_t link_state; phba->fc_eventTag = acqe_fcoe->event_tag; phba->fcoe_eventtag = acqe_fcoe->event_tag; @@ -3052,9 +3053,12 @@ lpfc_sli4_async_fcoe_evt(struct lpfc_hba *phba, break; /* * Currently, driver support only one FCF - so treat this as - * a link down. + * a link down, but save the link state because we don't want + * it to be changed to Link Down unless it is already down. */ + link_state = phba->link_state; lpfc_linkdown(phba); + phba->link_state = link_state; /* Unregister FCF if no devices connected to it */ lpfc_unregister_unused_fcf(phba); break; @@ -7226,8 +7230,6 @@ lpfc_prep_dev_for_perm_failure(struct lpfc_hba *phba) { lpfc_printf_log(phba, KERN_ERR, LOG_INIT, "2711 PCI channel permanent disable for failure\n"); - /* Block all SCSI devices' I/Os on the host */ - lpfc_scsi_dev_block(phba); /* Clean up all driver's outstanding SCSI I/Os */ lpfc_sli_flush_fcp_rings(phba); } @@ -7256,6 +7258,9 @@ lpfc_io_error_detected_s3(struct pci_dev *pdev, pci_channel_state_t state) struct Scsi_Host *shost = pci_get_drvdata(pdev); struct lpfc_hba *phba = ((struct lpfc_vport *)shost->hostdata)->phba; + /* Block all SCSI devices' I/Os on the host */ + lpfc_scsi_dev_block(phba); + switch (state) { case pci_channel_io_normal: /* Non-fatal error, prepare for recovery */ @@ -7507,6 +7512,9 @@ lpfc_pci_probe_one_s4(struct pci_dev *pdev, const struct pci_device_id *pid) error = -ENODEV; goto out_free_sysfs_attr; } + /* Default to single FCP EQ for non-MSI-X */ + if (phba->intr_type != MSIX) + phba->cfg_fcp_eq_count = 1; /* Set up SLI-4 HBA */ if (lpfc_sli4_hba_setup(phba)) { lpfc_printf_log(phba, KERN_ERR, LOG_INIT, |