diff options
author | James Smart <James.Smart@Emulex.Com> | 2007-08-02 11:10:31 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.localdomain> | 2007-08-01 13:24:10 -0400 |
commit | 51ef4c26891a734bc8416b639ad460a8162926bc (patch) | |
tree | 8279e11bf1a0a3200e8aa9bb3d956345ef73533c /drivers/scsi/lpfc/lpfc_mbox.c | |
parent | 78b2d852a88cd2a55e3ab632109de045d58b83e3 (diff) |
[SCSI] lpfc 8.2.2 : Miscellaneous Bug Fixes
- Fix vport ndlp ref counting errors
- Fix use after free of ndlp structure
- Use the correct flag to check for LOADING setting.
- Fix driver unload bugs (related to shost references) after link down or rscn
- Fix up HBQ initialization
- Fix port_list locking around driver unload.
- Fix references to hostdata as a phba
- Fix GFFID type offset to work correctly with big endian structure.
- Only call pci_disable_msi if the pci_enable_msi succeeded
- Fix vport_delete wait/fail if in discovery
- Put a reference on the nameservers ndlp when performing CT traffic.
- Remove unbalanced hba unlock.
- Fix up HBQ processing
- Fix lpfc debugfs discovery trace output for ELS rsp cmpl
- Send ADISC when rpi is 0
- Stop FDISC retrying forever
- Unable to retrieve correct config parameter for vport
- Fix sli_validate_fcp_iocb, sli_sum_iocb, sli_abort_iocb to be vport-aware.
- Fix index-out-of-range error in iocb. Spotted by Coverity.
Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_mbox.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_mbox.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/scsi/lpfc/lpfc_mbox.c b/drivers/scsi/lpfc/lpfc_mbox.c index 09ecdcb63a74..a592733664e9 100644 --- a/drivers/scsi/lpfc/lpfc_mbox.c +++ b/drivers/scsi/lpfc/lpfc_mbox.c | |||
@@ -560,7 +560,8 @@ lpfc_build_hbq_profile5(struct config_hbq_var *hbqmb, | |||
560 | } | 560 | } |
561 | 561 | ||
562 | void | 562 | void |
563 | lpfc_config_hbq(struct lpfc_hba *phba, struct lpfc_hbq_init *hbq_desc, | 563 | lpfc_config_hbq(struct lpfc_hba *phba, uint32_t id, |
564 | struct lpfc_hbq_init *hbq_desc, | ||
564 | uint32_t hbq_entry_index, LPFC_MBOXQ_t *pmb) | 565 | uint32_t hbq_entry_index, LPFC_MBOXQ_t *pmb) |
565 | { | 566 | { |
566 | int i; | 567 | int i; |
@@ -568,6 +569,7 @@ lpfc_config_hbq(struct lpfc_hba *phba, struct lpfc_hbq_init *hbq_desc, | |||
568 | struct config_hbq_var *hbqmb = &mb->un.varCfgHbq; | 569 | struct config_hbq_var *hbqmb = &mb->un.varCfgHbq; |
569 | 570 | ||
570 | memset(pmb, 0, sizeof (LPFC_MBOXQ_t)); | 571 | memset(pmb, 0, sizeof (LPFC_MBOXQ_t)); |
572 | hbqmb->hbqId = id; | ||
571 | hbqmb->entry_count = hbq_desc->entry_count; /* # entries in HBQ */ | 573 | hbqmb->entry_count = hbq_desc->entry_count; /* # entries in HBQ */ |
572 | hbqmb->recvNotify = hbq_desc->rn; /* Receive | 574 | hbqmb->recvNotify = hbq_desc->rn; /* Receive |
573 | * Notification */ | 575 | * Notification */ |
@@ -687,7 +689,7 @@ lpfc_config_port(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) | |||
687 | 689 | ||
688 | if (phba->sli_rev == 3 && phba->vpd.sli3Feat.cerbm) { | 690 | if (phba->sli_rev == 3 && phba->vpd.sli3Feat.cerbm) { |
689 | mb->un.varCfgPort.cerbm = 1; /* Request HBQs */ | 691 | mb->un.varCfgPort.cerbm = 1; /* Request HBQs */ |
690 | mb->un.varCfgPort.max_hbq = 1; /* Requesting 2 HBQs */ | 692 | mb->un.varCfgPort.max_hbq = lpfc_sli_hbq_count(); |
691 | if (phba->max_vpi && phba->cfg_enable_npiv && | 693 | if (phba->max_vpi && phba->cfg_enable_npiv && |
692 | phba->vpd.sli3Feat.cmv) { | 694 | phba->vpd.sli3Feat.cmv) { |
693 | mb->un.varCfgPort.max_vpi = phba->max_vpi; | 695 | mb->un.varCfgPort.max_vpi = phba->max_vpi; |