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_crtn.h | |
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_crtn.h')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_crtn.h | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/scsi/lpfc/lpfc_crtn.h b/drivers/scsi/lpfc/lpfc_crtn.h index ef86345ced6e..b789355fedf5 100644 --- a/drivers/scsi/lpfc/lpfc_crtn.h +++ b/drivers/scsi/lpfc/lpfc_crtn.h | |||
@@ -102,7 +102,7 @@ int lpfc_issue_els_scr(struct lpfc_vport *, uint32_t, uint8_t); | |||
102 | int lpfc_els_free_iocb(struct lpfc_hba *, struct lpfc_iocbq *); | 102 | int lpfc_els_free_iocb(struct lpfc_hba *, struct lpfc_iocbq *); |
103 | int lpfc_ct_free_iocb(struct lpfc_hba *, struct lpfc_iocbq *); | 103 | int lpfc_ct_free_iocb(struct lpfc_hba *, struct lpfc_iocbq *); |
104 | int lpfc_els_rsp_acc(struct lpfc_vport *, uint32_t, struct lpfc_iocbq *, | 104 | int lpfc_els_rsp_acc(struct lpfc_vport *, uint32_t, struct lpfc_iocbq *, |
105 | struct lpfc_nodelist *, LPFC_MBOXQ_t *, uint8_t); | 105 | struct lpfc_nodelist *, LPFC_MBOXQ_t *); |
106 | int lpfc_els_rsp_reject(struct lpfc_vport *, uint32_t, struct lpfc_iocbq *, | 106 | int lpfc_els_rsp_reject(struct lpfc_vport *, uint32_t, struct lpfc_iocbq *, |
107 | struct lpfc_nodelist *, LPFC_MBOXQ_t *); | 107 | struct lpfc_nodelist *, LPFC_MBOXQ_t *); |
108 | int lpfc_els_rsp_adisc_acc(struct lpfc_vport *, struct lpfc_iocbq *, | 108 | int lpfc_els_rsp_adisc_acc(struct lpfc_vport *, struct lpfc_iocbq *, |
@@ -163,9 +163,11 @@ LPFC_MBOXQ_t *lpfc_mbox_get(struct lpfc_hba *); | |||
163 | void lpfc_mbox_cmpl_put(struct lpfc_hba *, LPFC_MBOXQ_t *); | 163 | void lpfc_mbox_cmpl_put(struct lpfc_hba *, LPFC_MBOXQ_t *); |
164 | int lpfc_mbox_tmo_val(struct lpfc_hba *, int); | 164 | int lpfc_mbox_tmo_val(struct lpfc_hba *, int); |
165 | 165 | ||
166 | void lpfc_config_hbq(struct lpfc_hba *, struct lpfc_hbq_init *, uint32_t , | 166 | void lpfc_config_hbq(struct lpfc_hba *, uint32_t, struct lpfc_hbq_init *, |
167 | LPFC_MBOXQ_t *); | 167 | uint32_t , LPFC_MBOXQ_t *); |
168 | struct lpfc_hbq_entry * lpfc_sli_next_hbq_slot(struct lpfc_hba *, uint32_t); | 168 | struct lpfc_hbq_entry * lpfc_sli_next_hbq_slot(struct lpfc_hba *, uint32_t); |
169 | struct hbq_dmabuf *lpfc_els_hbq_alloc(struct lpfc_hba *); | ||
170 | void lpfc_els_hbq_free(struct lpfc_hba *, struct hbq_dmabuf *); | ||
169 | 171 | ||
170 | int lpfc_mem_alloc(struct lpfc_hba *); | 172 | int lpfc_mem_alloc(struct lpfc_hba *); |
171 | void lpfc_mem_free(struct lpfc_hba *); | 173 | void lpfc_mem_free(struct lpfc_hba *); |
@@ -202,6 +204,7 @@ int lpfc_sli_ringpostbuf_put(struct lpfc_hba *, struct lpfc_sli_ring *, | |||
202 | struct lpfc_dmabuf *lpfc_sli_ringpostbuf_get(struct lpfc_hba *, | 204 | struct lpfc_dmabuf *lpfc_sli_ringpostbuf_get(struct lpfc_hba *, |
203 | struct lpfc_sli_ring *, | 205 | struct lpfc_sli_ring *, |
204 | dma_addr_t); | 206 | dma_addr_t); |
207 | int lpfc_sli_hbq_count(void); | ||
205 | int lpfc_sli_hbqbuf_init_hbqs(struct lpfc_hba *, uint32_t); | 208 | int lpfc_sli_hbqbuf_init_hbqs(struct lpfc_hba *, uint32_t); |
206 | int lpfc_sli_hbqbuf_add_hbqs(struct lpfc_hba *, uint32_t); | 209 | int lpfc_sli_hbqbuf_add_hbqs(struct lpfc_hba *, uint32_t); |
207 | void lpfc_sli_hbqbuf_free_all(struct lpfc_hba *); | 210 | void lpfc_sli_hbqbuf_free_all(struct lpfc_hba *); |
@@ -209,10 +212,9 @@ struct hbq_dmabuf *lpfc_sli_hbqbuf_find(struct lpfc_hba *, uint32_t); | |||
209 | int lpfc_sli_hbq_size(void); | 212 | int lpfc_sli_hbq_size(void); |
210 | int lpfc_sli_issue_abort_iotag(struct lpfc_hba *, struct lpfc_sli_ring *, | 213 | int lpfc_sli_issue_abort_iotag(struct lpfc_hba *, struct lpfc_sli_ring *, |
211 | struct lpfc_iocbq *); | 214 | struct lpfc_iocbq *); |
212 | int lpfc_sli_sum_iocb(struct lpfc_hba *, struct lpfc_sli_ring *, uint16_t, | 215 | int lpfc_sli_sum_iocb(struct lpfc_vport *, uint16_t, uint64_t, lpfc_ctx_cmd); |
213 | uint64_t, lpfc_ctx_cmd); | 216 | int lpfc_sli_abort_iocb(struct lpfc_vport *, struct lpfc_sli_ring *, uint16_t, |
214 | int lpfc_sli_abort_iocb(struct lpfc_hba *, struct lpfc_sli_ring *, uint16_t, | 217 | uint64_t, lpfc_ctx_cmd); |
215 | uint64_t, uint32_t, lpfc_ctx_cmd); | ||
216 | 218 | ||
217 | void lpfc_mbox_timeout(unsigned long); | 219 | void lpfc_mbox_timeout(unsigned long); |
218 | void lpfc_mbox_timeout_handler(struct lpfc_hba *); | 220 | void lpfc_mbox_timeout_handler(struct lpfc_hba *); |
@@ -236,8 +238,6 @@ void lpfc_sli_abort_fcp_cmpl(struct lpfc_hba * phba, | |||
236 | struct lpfc_iocbq * cmdiocb, | 238 | struct lpfc_iocbq * cmdiocb, |
237 | struct lpfc_iocbq * rspiocb); | 239 | struct lpfc_iocbq * rspiocb); |
238 | 240 | ||
239 | void *lpfc_hbq_alloc(struct lpfc_hba *, int, dma_addr_t *); | ||
240 | void lpfc_hbq_free(struct lpfc_hba *, void *, dma_addr_t); | ||
241 | void lpfc_sli_free_hbq(struct lpfc_hba *, struct hbq_dmabuf *); | 241 | void lpfc_sli_free_hbq(struct lpfc_hba *, struct hbq_dmabuf *); |
242 | 242 | ||
243 | void *lpfc_mbuf_alloc(struct lpfc_hba *, int, dma_addr_t *); | 243 | void *lpfc_mbuf_alloc(struct lpfc_hba *, int, dma_addr_t *); |