diff options
author | Swen Schillig <swen@vnet.ibm.com> | 2009-08-18 09:43:18 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-09-05 09:49:24 -0400 |
commit | 42428f747a8a0db9c6de03e105932316defad65d (patch) | |
tree | 84cd4b28678c94e5c6780517f89e803121cd73a7 /drivers/s390/scsi/zfcp_fsf.c | |
parent | 4544683a4b1d4e65ccca8c736bac56a195a5206b (diff) |
[SCSI] zfcp: Separate qdio attributes from zfcp_fsf_req
Split all qdio related attributes out of zfcp_fsf_req and put it in
new structure.
Signed-off-by: Swen Schillig <swen@vnet.ibm.com>
Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/s390/scsi/zfcp_fsf.c')
-rw-r--r-- | drivers/s390/scsi/zfcp_fsf.c | 79 |
1 files changed, 42 insertions, 37 deletions
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c index 5b73f989a629..e88b7804780b 100644 --- a/drivers/s390/scsi/zfcp_fsf.c +++ b/drivers/s390/scsi/zfcp_fsf.c | |||
@@ -720,12 +720,12 @@ static struct zfcp_fsf_req *zfcp_fsf_req_create(struct zfcp_adapter *adapter, | |||
720 | req->adapter = adapter; | 720 | req->adapter = adapter; |
721 | req->fsf_command = fsf_cmd; | 721 | req->fsf_command = fsf_cmd; |
722 | req->req_id = adapter->req_no; | 722 | req->req_id = adapter->req_no; |
723 | req->sbal_number = 1; | 723 | req->queue_req.sbal_number = 1; |
724 | req->sbal_first = req_q->first; | 724 | req->queue_req.sbal_first = req_q->first; |
725 | req->sbal_last = req_q->first; | 725 | req->queue_req.sbal_last = req_q->first; |
726 | req->sbale_curr = 1; | 726 | req->queue_req.sbale_curr = 1; |
727 | 727 | ||
728 | sbale = zfcp_qdio_sbale_req(req); | 728 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
729 | sbale[0].addr = (void *) req->req_id; | 729 | sbale[0].addr = (void *) req->req_id; |
730 | sbale[0].flags |= SBAL_FLAGS0_COMMAND; | 730 | sbale[0].flags |= SBAL_FLAGS0_COMMAND; |
731 | 731 | ||
@@ -774,9 +774,9 @@ static int zfcp_fsf_req_send(struct zfcp_fsf_req *req) | |||
774 | list_add_tail(&req->list, &adapter->req_list[idx]); | 774 | list_add_tail(&req->list, &adapter->req_list[idx]); |
775 | spin_unlock_irqrestore(&adapter->req_list_lock, flags); | 775 | spin_unlock_irqrestore(&adapter->req_list_lock, flags); |
776 | 776 | ||
777 | req->qdio_outb_usage = atomic_read(&adapter->req_q.count); | 777 | req->queue_req.qdio_outb_usage = atomic_read(&adapter->req_q.count); |
778 | req->issued = get_clock(); | 778 | req->issued = get_clock(); |
779 | if (zfcp_qdio_send(req)) { | 779 | if (zfcp_qdio_send(adapter, &req->queue_req)) { |
780 | del_timer(&req->timer); | 780 | del_timer(&req->timer); |
781 | spin_lock_irqsave(&adapter->req_list_lock, flags); | 781 | spin_lock_irqsave(&adapter->req_list_lock, flags); |
782 | /* lookup request again, list might have changed */ | 782 | /* lookup request again, list might have changed */ |
@@ -819,9 +819,9 @@ int zfcp_fsf_status_read(struct zfcp_adapter *adapter) | |||
819 | goto out; | 819 | goto out; |
820 | } | 820 | } |
821 | 821 | ||
822 | sbale = zfcp_qdio_sbale_req(req); | 822 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
823 | sbale[2].flags |= SBAL_FLAGS_LAST_ENTRY; | 823 | sbale[2].flags |= SBAL_FLAGS_LAST_ENTRY; |
824 | req->sbale_curr = 2; | 824 | req->queue_req.sbale_curr = 2; |
825 | 825 | ||
826 | sr_buf = mempool_alloc(adapter->pool.status_read_data, GFP_ATOMIC); | 826 | sr_buf = mempool_alloc(adapter->pool.status_read_data, GFP_ATOMIC); |
827 | if (!sr_buf) { | 827 | if (!sr_buf) { |
@@ -830,7 +830,7 @@ int zfcp_fsf_status_read(struct zfcp_adapter *adapter) | |||
830 | } | 830 | } |
831 | memset(sr_buf, 0, sizeof(*sr_buf)); | 831 | memset(sr_buf, 0, sizeof(*sr_buf)); |
832 | req->data = sr_buf; | 832 | req->data = sr_buf; |
833 | sbale = zfcp_qdio_sbale_curr(req); | 833 | sbale = zfcp_qdio_sbale_curr(adapter, &req->queue_req); |
834 | sbale->addr = (void *) sr_buf; | 834 | sbale->addr = (void *) sr_buf; |
835 | sbale->length = sizeof(*sr_buf); | 835 | sbale->length = sizeof(*sr_buf); |
836 | 836 | ||
@@ -929,7 +929,7 @@ struct zfcp_fsf_req *zfcp_fsf_abort_fcp_command(unsigned long old_req_id, | |||
929 | ZFCP_STATUS_COMMON_UNBLOCKED))) | 929 | ZFCP_STATUS_COMMON_UNBLOCKED))) |
930 | goto out_error_free; | 930 | goto out_error_free; |
931 | 931 | ||
932 | sbale = zfcp_qdio_sbale_req(req); | 932 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
933 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; | 933 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; |
934 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; | 934 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; |
935 | 935 | ||
@@ -1023,8 +1023,10 @@ static int zfcp_fsf_setup_ct_els_sbals(struct zfcp_fsf_req *req, | |||
1023 | struct scatterlist *sg_resp, | 1023 | struct scatterlist *sg_resp, |
1024 | int max_sbals) | 1024 | int max_sbals) |
1025 | { | 1025 | { |
1026 | struct qdio_buffer_element *sbale = zfcp_qdio_sbale_req(req); | 1026 | struct zfcp_adapter *adapter = req->adapter; |
1027 | u32 feat = req->adapter->adapter_features; | 1027 | struct qdio_buffer_element *sbale = zfcp_qdio_sbale_req(adapter, |
1028 | &req->queue_req); | ||
1029 | u32 feat = adapter->adapter_features; | ||
1028 | int bytes; | 1030 | int bytes; |
1029 | 1031 | ||
1030 | if (!(feat & FSF_FEATURE_ELS_CT_CHAINED_SBALS)) { | 1032 | if (!(feat & FSF_FEATURE_ELS_CT_CHAINED_SBALS)) { |
@@ -1041,14 +1043,16 @@ static int zfcp_fsf_setup_ct_els_sbals(struct zfcp_fsf_req *req, | |||
1041 | return 0; | 1043 | return 0; |
1042 | } | 1044 | } |
1043 | 1045 | ||
1044 | bytes = zfcp_qdio_sbals_from_sg(req, SBAL_FLAGS0_TYPE_WRITE_READ, | 1046 | bytes = zfcp_qdio_sbals_from_sg(adapter, &req->queue_req, |
1047 | SBAL_FLAGS0_TYPE_WRITE_READ, | ||
1045 | sg_req, max_sbals); | 1048 | sg_req, max_sbals); |
1046 | if (bytes <= 0) | 1049 | if (bytes <= 0) |
1047 | return -EIO; | 1050 | return -EIO; |
1048 | req->qtcb->bottom.support.req_buf_length = bytes; | 1051 | req->qtcb->bottom.support.req_buf_length = bytes; |
1049 | req->sbale_curr = ZFCP_LAST_SBALE_PER_SBAL; | 1052 | req->queue_req.sbale_curr = ZFCP_LAST_SBALE_PER_SBAL; |
1050 | 1053 | ||
1051 | bytes = zfcp_qdio_sbals_from_sg(req, SBAL_FLAGS0_TYPE_WRITE_READ, | 1054 | bytes = zfcp_qdio_sbals_from_sg(adapter, &req->queue_req, |
1055 | SBAL_FLAGS0_TYPE_WRITE_READ, | ||
1052 | sg_resp, max_sbals); | 1056 | sg_resp, max_sbals); |
1053 | if (bytes <= 0) | 1057 | if (bytes <= 0) |
1054 | return -EIO; | 1058 | return -EIO; |
@@ -1241,7 +1245,7 @@ int zfcp_fsf_exchange_config_data(struct zfcp_erp_action *erp_action) | |||
1241 | } | 1245 | } |
1242 | 1246 | ||
1243 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; | 1247 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; |
1244 | sbale = zfcp_qdio_sbale_req(req); | 1248 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
1245 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; | 1249 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; |
1246 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; | 1250 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; |
1247 | 1251 | ||
@@ -1283,7 +1287,7 @@ int zfcp_fsf_exchange_config_data_sync(struct zfcp_adapter *adapter, | |||
1283 | goto out_unlock; | 1287 | goto out_unlock; |
1284 | } | 1288 | } |
1285 | 1289 | ||
1286 | sbale = zfcp_qdio_sbale_req(req); | 1290 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
1287 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; | 1291 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; |
1288 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; | 1292 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; |
1289 | req->handler = zfcp_fsf_exchange_config_data_handler; | 1293 | req->handler = zfcp_fsf_exchange_config_data_handler; |
@@ -1339,7 +1343,7 @@ int zfcp_fsf_exchange_port_data(struct zfcp_erp_action *erp_action) | |||
1339 | } | 1343 | } |
1340 | 1344 | ||
1341 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; | 1345 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; |
1342 | sbale = zfcp_qdio_sbale_req(req); | 1346 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
1343 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; | 1347 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; |
1344 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; | 1348 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; |
1345 | 1349 | ||
@@ -1388,7 +1392,7 @@ int zfcp_fsf_exchange_port_data_sync(struct zfcp_adapter *adapter, | |||
1388 | if (data) | 1392 | if (data) |
1389 | req->data = data; | 1393 | req->data = data; |
1390 | 1394 | ||
1391 | sbale = zfcp_qdio_sbale_req(req); | 1395 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
1392 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; | 1396 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; |
1393 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; | 1397 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; |
1394 | 1398 | ||
@@ -1509,7 +1513,7 @@ int zfcp_fsf_open_port(struct zfcp_erp_action *erp_action) | |||
1509 | } | 1513 | } |
1510 | 1514 | ||
1511 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; | 1515 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; |
1512 | sbale = zfcp_qdio_sbale_req(req); | 1516 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
1513 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; | 1517 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; |
1514 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; | 1518 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; |
1515 | 1519 | ||
@@ -1579,7 +1583,7 @@ int zfcp_fsf_close_port(struct zfcp_erp_action *erp_action) | |||
1579 | } | 1583 | } |
1580 | 1584 | ||
1581 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; | 1585 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; |
1582 | sbale = zfcp_qdio_sbale_req(req); | 1586 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
1583 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; | 1587 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; |
1584 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; | 1588 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; |
1585 | 1589 | ||
@@ -1656,7 +1660,7 @@ int zfcp_fsf_open_wka_port(struct zfcp_wka_port *wka_port) | |||
1656 | } | 1660 | } |
1657 | 1661 | ||
1658 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; | 1662 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; |
1659 | sbale = zfcp_qdio_sbale_req(req); | 1663 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
1660 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; | 1664 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; |
1661 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; | 1665 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; |
1662 | 1666 | ||
@@ -1711,7 +1715,7 @@ int zfcp_fsf_close_wka_port(struct zfcp_wka_port *wka_port) | |||
1711 | } | 1715 | } |
1712 | 1716 | ||
1713 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; | 1717 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; |
1714 | sbale = zfcp_qdio_sbale_req(req); | 1718 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
1715 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; | 1719 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; |
1716 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; | 1720 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; |
1717 | 1721 | ||
@@ -1803,7 +1807,7 @@ int zfcp_fsf_close_physical_port(struct zfcp_erp_action *erp_action) | |||
1803 | } | 1807 | } |
1804 | 1808 | ||
1805 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; | 1809 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; |
1806 | sbale = zfcp_qdio_sbale_req(req); | 1810 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
1807 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; | 1811 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; |
1808 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; | 1812 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; |
1809 | 1813 | ||
@@ -1976,7 +1980,7 @@ int zfcp_fsf_open_unit(struct zfcp_erp_action *erp_action) | |||
1976 | } | 1980 | } |
1977 | 1981 | ||
1978 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; | 1982 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; |
1979 | sbale = zfcp_qdio_sbale_req(req); | 1983 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
1980 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; | 1984 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; |
1981 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; | 1985 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; |
1982 | 1986 | ||
@@ -2063,7 +2067,7 @@ int zfcp_fsf_close_unit(struct zfcp_erp_action *erp_action) | |||
2063 | } | 2067 | } |
2064 | 2068 | ||
2065 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; | 2069 | req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; |
2066 | sbale = zfcp_qdio_sbale_req(req); | 2070 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
2067 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; | 2071 | sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; |
2068 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; | 2072 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; |
2069 | 2073 | ||
@@ -2140,8 +2144,8 @@ static void zfcp_fsf_trace_latency(struct zfcp_fsf_req *fsf_req) | |||
2140 | } | 2144 | } |
2141 | if (fsf_req->status & ZFCP_STATUS_FSFREQ_ERROR) | 2145 | if (fsf_req->status & ZFCP_STATUS_FSFREQ_ERROR) |
2142 | trace.flags |= ZFCP_BLK_REQ_ERROR; | 2146 | trace.flags |= ZFCP_BLK_REQ_ERROR; |
2143 | trace.inb_usage = fsf_req->qdio_inb_usage; | 2147 | trace.inb_usage = fsf_req->queue_req.qdio_inb_usage; |
2144 | trace.outb_usage = fsf_req->qdio_outb_usage; | 2148 | trace.outb_usage = fsf_req->queue_req.qdio_outb_usage; |
2145 | 2149 | ||
2146 | blk_add_driver_data(req->q, req, &trace, sizeof(trace)); | 2150 | blk_add_driver_data(req->q, req, &trace, sizeof(trace)); |
2147 | } | 2151 | } |
@@ -2420,11 +2424,11 @@ int zfcp_fsf_send_fcp_command_task(struct zfcp_unit *unit, | |||
2420 | req->qtcb->bottom.io.fcp_cmnd_length = sizeof(struct fcp_cmnd_iu) + | 2424 | req->qtcb->bottom.io.fcp_cmnd_length = sizeof(struct fcp_cmnd_iu) + |
2421 | fcp_cmnd_iu->add_fcp_cdb_length + sizeof(u32); | 2425 | fcp_cmnd_iu->add_fcp_cdb_length + sizeof(u32); |
2422 | 2426 | ||
2423 | real_bytes = zfcp_qdio_sbals_from_sg(req, sbtype, | 2427 | real_bytes = zfcp_qdio_sbals_from_sg(adapter, &req->queue_req, sbtype, |
2424 | scsi_sglist(scsi_cmnd), | 2428 | scsi_sglist(scsi_cmnd), |
2425 | FSF_MAX_SBALS_PER_REQ); | 2429 | FSF_MAX_SBALS_PER_REQ); |
2426 | if (unlikely(real_bytes < 0)) { | 2430 | if (unlikely(real_bytes < 0)) { |
2427 | if (req->sbal_number >= FSF_MAX_SBALS_PER_REQ) { | 2431 | if (req->queue_req.sbal_number >= FSF_MAX_SBALS_PER_REQ) { |
2428 | dev_err(&adapter->ccw_device->dev, | 2432 | dev_err(&adapter->ccw_device->dev, |
2429 | "Oversize data package, unit 0x%016Lx " | 2433 | "Oversize data package, unit 0x%016Lx " |
2430 | "on port 0x%016Lx closed\n", | 2434 | "on port 0x%016Lx closed\n", |
@@ -2492,7 +2496,7 @@ struct zfcp_fsf_req *zfcp_fsf_send_fcp_ctm(struct zfcp_unit *unit, u8 tm_flags) | |||
2492 | req->qtcb->bottom.io.fcp_cmnd_length = sizeof(struct fcp_cmnd_iu) + | 2496 | req->qtcb->bottom.io.fcp_cmnd_length = sizeof(struct fcp_cmnd_iu) + |
2493 | sizeof(u32); | 2497 | sizeof(u32); |
2494 | 2498 | ||
2495 | sbale = zfcp_qdio_sbale_req(req); | 2499 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
2496 | sbale[0].flags |= SBAL_FLAGS0_TYPE_WRITE; | 2500 | sbale[0].flags |= SBAL_FLAGS0_TYPE_WRITE; |
2497 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; | 2501 | sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; |
2498 | 2502 | ||
@@ -2555,15 +2559,15 @@ struct zfcp_fsf_req *zfcp_fsf_control_file(struct zfcp_adapter *adapter, | |||
2555 | 2559 | ||
2556 | req->handler = zfcp_fsf_control_file_handler; | 2560 | req->handler = zfcp_fsf_control_file_handler; |
2557 | 2561 | ||
2558 | sbale = zfcp_qdio_sbale_req(req); | 2562 | sbale = zfcp_qdio_sbale_req(adapter, &req->queue_req); |
2559 | sbale[0].flags |= direction; | 2563 | sbale[0].flags |= direction; |
2560 | 2564 | ||
2561 | bottom = &req->qtcb->bottom.support; | 2565 | bottom = &req->qtcb->bottom.support; |
2562 | bottom->operation_subtype = FSF_CFDC_OPERATION_SUBTYPE; | 2566 | bottom->operation_subtype = FSF_CFDC_OPERATION_SUBTYPE; |
2563 | bottom->option = fsf_cfdc->option; | 2567 | bottom->option = fsf_cfdc->option; |
2564 | 2568 | ||
2565 | bytes = zfcp_qdio_sbals_from_sg(req, direction, fsf_cfdc->sg, | 2569 | bytes = zfcp_qdio_sbals_from_sg(adapter, &req->queue_req, direction, |
2566 | FSF_MAX_SBALS_PER_REQ); | 2570 | fsf_cfdc->sg, FSF_MAX_SBALS_PER_REQ); |
2567 | if (bytes != ZFCP_CFDC_MAX_SIZE) { | 2571 | if (bytes != ZFCP_CFDC_MAX_SIZE) { |
2568 | zfcp_fsf_req_free(req); | 2572 | zfcp_fsf_req_free(req); |
2569 | goto out; | 2573 | goto out; |
@@ -2612,8 +2616,9 @@ void zfcp_fsf_reqid_check(struct zfcp_adapter *adapter, int sbal_idx) | |||
2612 | list_del(&fsf_req->list); | 2616 | list_del(&fsf_req->list); |
2613 | spin_unlock_irqrestore(&adapter->req_list_lock, flags); | 2617 | spin_unlock_irqrestore(&adapter->req_list_lock, flags); |
2614 | 2618 | ||
2615 | fsf_req->sbal_response = sbal_idx; | 2619 | fsf_req->queue_req.sbal_response = sbal_idx; |
2616 | fsf_req->qdio_inb_usage = atomic_read(&adapter->resp_q.count); | 2620 | fsf_req->queue_req.qdio_inb_usage = |
2621 | atomic_read(&adapter->resp_q.count); | ||
2617 | zfcp_fsf_req_complete(fsf_req); | 2622 | zfcp_fsf_req_complete(fsf_req); |
2618 | 2623 | ||
2619 | if (likely(sbale->flags & SBAL_FLAGS_LAST_ENTRY)) | 2624 | if (likely(sbale->flags & SBAL_FLAGS_LAST_ENTRY)) |