aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_ct.c
diff options
context:
space:
mode:
authorJames Smart <James.Smart@Emulex.Com>2008-08-24 21:50:00 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-10-13 09:28:53 -0400
commitd7c255b26d8e3f12164d82093de3bf22efad2b4a (patch)
tree0b3467eda322ec2d90e5a7369891ab4ba12ff0a1 /drivers/scsi/lpfc/lpfc_ct.c
parent34b02dcdcf1865405f4762b991965c0c3b8a3ae0 (diff)
[SCSI] lpfc 8.2.8 : Miscellaneous Bug Fixes
Miscellaneous Fixes: - Fix the wrong variable name used for checking node active usage status - Fix numerous duplicate log message numbers - Fix change KERN_WARNING messages to KERN_INFO. - Stop sending erroneous LOGO to fabric after vport is already terminated - Fix HBQ allocates that were kalloc'ing w/ GFP_KERNEL while holding a lock. - Fix gcc 4.3.2 compiler warnings and a sparse warning - Fix bugs in handling unsolicited ct event queue - Reorder some of the initial link up checks, to remove odd VPI states. - Correct poor VPI handling - Add debug messages - Expand Update_CFG mailbox definition - Fix handling of VPD data offsets - Reorder loopback flags - convert to use offsetof() Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_ct.c')
-rw-r--r--drivers/scsi/lpfc/lpfc_ct.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/scsi/lpfc/lpfc_ct.c b/drivers/scsi/lpfc/lpfc_ct.c
index 0f387862cf77..71cfee884b8a 100644
--- a/drivers/scsi/lpfc/lpfc_ct.c
+++ b/drivers/scsi/lpfc/lpfc_ct.c
@@ -134,25 +134,24 @@ lpfc_ct_unsol_event(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,
134 } 134 }
135 list_del(&head); 135 list_del(&head);
136 } else { 136 } else {
137 struct lpfc_iocbq *next; 137 INIT_LIST_HEAD(&head);
138 138 list_add_tail(&head, &piocbq->list);
139 list_for_each_entry_safe(iocbq, next, &piocbq->list, list) { 139 list_for_each_entry(iocbq, &head, list) {
140 icmd = &iocbq->iocb; 140 icmd = &iocbq->iocb;
141 if (icmd->ulpBdeCount == 0) 141 if (icmd->ulpBdeCount == 0)
142 lpfc_ct_unsol_buffer(phba, piocbq, NULL, 0); 142 lpfc_ct_unsol_buffer(phba, iocbq, NULL, 0);
143 for (i = 0; i < icmd->ulpBdeCount; i++) { 143 for (i = 0; i < icmd->ulpBdeCount; i++) {
144 paddr = getPaddr(icmd->un.cont64[i].addrHigh, 144 paddr = getPaddr(icmd->un.cont64[i].addrHigh,
145 icmd->un.cont64[i].addrLow); 145 icmd->un.cont64[i].addrLow);
146 mp = lpfc_sli_ringpostbuf_get(phba, pring, 146 mp = lpfc_sli_ringpostbuf_get(phba, pring,
147 paddr); 147 paddr);
148 size = icmd->un.cont64[i].tus.f.bdeSize; 148 size = icmd->un.cont64[i].tus.f.bdeSize;
149 lpfc_ct_unsol_buffer(phba, piocbq, mp, size); 149 lpfc_ct_unsol_buffer(phba, iocbq, mp, size);
150 lpfc_in_buf_free(phba, mp); 150 lpfc_in_buf_free(phba, mp);
151 } 151 }
152 list_del(&iocbq->list);
153 lpfc_sli_release_iocbq(phba, iocbq);
154 lpfc_post_buffer(phba, pring, i); 152 lpfc_post_buffer(phba, pring, i);
155 } 153 }
154 list_del(&head);
156 } 155 }
157} 156}
158 157
@@ -861,7 +860,7 @@ lpfc_cmpl_ct(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
861 860
862 retry++; 861 retry++;
863 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY, 862 lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY,
864 "0216 Retrying NS cmd %x\n", cmdcode); 863 "0250 Retrying NS cmd %x\n", cmdcode);
865 rc = lpfc_ns_cmd(vport, cmdcode, retry, 0); 864 rc = lpfc_ns_cmd(vport, cmdcode, retry, 0);
866 if (rc == 0) 865 if (rc == 0)
867 goto out; 866 goto out;