diff options
Diffstat (limited to 'drivers/s390/scsi/zfcp_fsf.c')
-rw-r--r-- | drivers/s390/scsi/zfcp_fsf.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c index 6d805c50627f..9881ba947f11 100644 --- a/drivers/s390/scsi/zfcp_fsf.c +++ b/drivers/s390/scsi/zfcp_fsf.c | |||
@@ -211,13 +211,13 @@ static void zfcp_fsf_status_read_handler(struct zfcp_fsf_req *req) | |||
211 | struct fsf_status_read_buffer *sr_buf = req->data; | 211 | struct fsf_status_read_buffer *sr_buf = req->data; |
212 | 212 | ||
213 | if (req->status & ZFCP_STATUS_FSFREQ_DISMISSED) { | 213 | if (req->status & ZFCP_STATUS_FSFREQ_DISMISSED) { |
214 | zfcp_dbf_hba_fsf_unsol("dism", adapter->dbf, sr_buf); | 214 | zfcp_dbf_hba_fsf_uss("fssrh_1", req); |
215 | mempool_free(sr_buf, adapter->pool.status_read_data); | 215 | mempool_free(sr_buf, adapter->pool.status_read_data); |
216 | zfcp_fsf_req_free(req); | 216 | zfcp_fsf_req_free(req); |
217 | return; | 217 | return; |
218 | } | 218 | } |
219 | 219 | ||
220 | zfcp_dbf_hba_fsf_unsol("read", adapter->dbf, sr_buf); | 220 | zfcp_dbf_hba_fsf_uss("fssrh_2", req); |
221 | 221 | ||
222 | switch (sr_buf->status_type) { | 222 | switch (sr_buf->status_type) { |
223 | case FSF_STATUS_READ_PORT_CLOSED: | 223 | case FSF_STATUS_READ_PORT_CLOSED: |
@@ -232,7 +232,7 @@ static void zfcp_fsf_status_read_handler(struct zfcp_fsf_req *req) | |||
232 | dev_warn(&adapter->ccw_device->dev, | 232 | dev_warn(&adapter->ccw_device->dev, |
233 | "The error threshold for checksum statistics " | 233 | "The error threshold for checksum statistics " |
234 | "has been exceeded\n"); | 234 | "has been exceeded\n"); |
235 | zfcp_dbf_hba_berr(adapter->dbf, req); | 235 | zfcp_dbf_hba_bit_err("fssrh_3", req); |
236 | break; | 236 | break; |
237 | case FSF_STATUS_READ_LINK_DOWN: | 237 | case FSF_STATUS_READ_LINK_DOWN: |
238 | zfcp_fsf_status_read_link_down(req); | 238 | zfcp_fsf_status_read_link_down(req); |
@@ -754,10 +754,11 @@ int zfcp_fsf_status_read(struct zfcp_qdio *qdio) | |||
754 | goto out; | 754 | goto out; |
755 | 755 | ||
756 | failed_req_send: | 756 | failed_req_send: |
757 | req->data = NULL; | ||
757 | mempool_free(sr_buf, adapter->pool.status_read_data); | 758 | mempool_free(sr_buf, adapter->pool.status_read_data); |
758 | failed_buf: | 759 | failed_buf: |
760 | zfcp_dbf_hba_fsf_uss("fssr__1", req); | ||
759 | zfcp_fsf_req_free(req); | 761 | zfcp_fsf_req_free(req); |
760 | zfcp_dbf_hba_fsf_unsol("fail", adapter->dbf, NULL); | ||
761 | out: | 762 | out: |
762 | spin_unlock_irq(&qdio->req_q_lock); | 763 | spin_unlock_irq(&qdio->req_q_lock); |
763 | return retval; | 764 | return retval; |
@@ -2420,3 +2421,12 @@ void zfcp_fsf_reqid_check(struct zfcp_qdio *qdio, int sbal_idx) | |||
2420 | break; | 2421 | break; |
2421 | } | 2422 | } |
2422 | } | 2423 | } |
2424 | |||
2425 | struct zfcp_fsf_req *zfcp_fsf_get_req(struct zfcp_qdio *qdio, | ||
2426 | struct qdio_buffer *sbal) | ||
2427 | { | ||
2428 | struct qdio_buffer_element *sbale = &sbal->element[0]; | ||
2429 | u64 req_id = (unsigned long) sbale->addr; | ||
2430 | |||
2431 | return zfcp_reqlist_find(qdio->adapter->req_list, req_id); | ||
2432 | } | ||