aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_ct.c
diff options
context:
space:
mode:
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;