aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/isci/core/sci_util.c5
-rw-r--r--drivers/scsi/isci/core/scic_sds_request.c42
-rw-r--r--drivers/scsi/isci/core/scic_sds_request.h6
-rw-r--r--drivers/scsi/isci/core/scic_sds_smp_request.c6
-rw-r--r--drivers/scsi/isci/core/scic_sds_ssp_request.c4
-rw-r--r--drivers/scsi/isci/core/scic_sds_stp_request.c30
-rw-r--r--drivers/scsi/isci/request.c4
-rw-r--r--drivers/scsi/isci/stp_remote_device.c6
-rw-r--r--drivers/scsi/isci/task.c7
9 files changed, 48 insertions, 62 deletions
diff --git a/drivers/scsi/isci/core/sci_util.c b/drivers/scsi/isci/core/sci_util.c
index cb3e9f73828d..ebf0ed919a9f 100644
--- a/drivers/scsi/isci/core/sci_util.c
+++ b/drivers/scsi/isci/core/sci_util.c
@@ -72,7 +72,7 @@ void scic_word_copy_with_swap(
72 72
73void *scic_request_get_virt_addr(struct scic_sds_request *sci_req, dma_addr_t phys_addr) 73void *scic_request_get_virt_addr(struct scic_sds_request *sci_req, dma_addr_t phys_addr)
74{ 74{
75 struct isci_request *ireq = sci_object_get_association(sci_req); 75 struct isci_request *ireq = sci_req->ireq;
76 dma_addr_t offset; 76 dma_addr_t offset;
77 77
78 BUG_ON(phys_addr < ireq->request_daddr); 78 BUG_ON(phys_addr < ireq->request_daddr);
@@ -87,8 +87,7 @@ void *scic_request_get_virt_addr(struct scic_sds_request *sci_req, dma_addr_t ph
87dma_addr_t scic_io_request_get_dma_addr(struct scic_sds_request *sds_request, 87dma_addr_t scic_io_request_get_dma_addr(struct scic_sds_request *sds_request,
88 void *virt_addr) 88 void *virt_addr)
89{ 89{
90 struct isci_request *isci_request = 90 struct isci_request *isci_request = sds_request->ireq;
91 (struct isci_request *)sci_object_get_association(sds_request);
92 91
93 char *requested_addr = (char *)virt_addr; 92 char *requested_addr = (char *)virt_addr;
94 char *base_addr = (char *)isci_request; 93 char *base_addr = (char *)isci_request;
diff --git a/drivers/scsi/isci/core/scic_sds_request.c b/drivers/scsi/isci/core/scic_sds_request.c
index a438ea22315a..fba642881092 100644
--- a/drivers/scsi/isci/core/scic_sds_request.c
+++ b/drivers/scsi/isci/core/scic_sds_request.c
@@ -253,8 +253,7 @@ static struct scu_sgl_element_pair *scic_sds_request_get_sgl_element_pair(
253 */ 253 */
254void scic_sds_request_build_sgl(struct scic_sds_request *sds_request) 254void scic_sds_request_build_sgl(struct scic_sds_request *sds_request)
255{ 255{
256 struct isci_request *isci_request = 256 struct isci_request *isci_request = sds_request->ireq;
257 (struct isci_request *)sci_object_get_association(sds_request);
258 struct isci_host *isci_host = isci_request->isci_host; 257 struct isci_host *isci_host = isci_request->isci_host;
259 struct sas_task *task = isci_request_access_task(isci_request); 258 struct sas_task *task = isci_request_access_task(isci_request);
260 struct scatterlist *sg = NULL; 259 struct scatterlist *sg = NULL;
@@ -359,8 +358,7 @@ static void scic_sds_io_request_build_ssp_command_iu(
359 struct sci_ssp_command_iu *command_frame; 358 struct sci_ssp_command_iu *command_frame;
360 u32 cdb_length; 359 u32 cdb_length;
361 u32 *cdb_buffer; 360 u32 *cdb_buffer;
362 struct isci_request *isci_request = 361 struct isci_request *isci_request = sds_request->ireq;
363 (struct isci_request *)sci_object_get_association(sds_request);
364 362
365 command_frame = 363 command_frame =
366 (struct sci_ssp_command_iu *)sds_request->command_buffer; 364 (struct sci_ssp_command_iu *)sds_request->command_buffer;
@@ -403,8 +401,7 @@ static void scic_sds_task_request_build_ssp_task_iu(
403 struct scic_sds_request *sds_request) 401 struct scic_sds_request *sds_request)
404{ 402{
405 struct sci_ssp_task_iu *command_frame; 403 struct sci_ssp_task_iu *command_frame;
406 struct isci_request *isci_request = 404 struct isci_request *isci_request = sds_request->ireq;
407 (struct isci_request *)sci_object_get_association(sds_request);
408 405
409 command_frame = 406 command_frame =
410 (struct sci_ssp_task_iu *)sds_request->command_buffer; 407 (struct sci_ssp_task_iu *)sds_request->command_buffer;
@@ -700,8 +697,7 @@ u32 scic_io_request_get_object_size(void)
700enum sci_status scic_io_request_construct_basic_ssp( 697enum sci_status scic_io_request_construct_basic_ssp(
701 struct scic_sds_request *sci_req) 698 struct scic_sds_request *sci_req)
702{ 699{
703 struct isci_request *isci_request = 700 struct isci_request *isci_request = sci_req->ireq;
704 (struct isci_request *)sci_object_get_association(sci_req);
705 701
706 sci_req->protocol = SCIC_SSP_PROTOCOL; 702 sci_req->protocol = SCIC_SSP_PROTOCOL;
707 703
@@ -744,8 +740,7 @@ enum sci_status scic_io_request_construct_basic_sata(
744 u32 len; 740 u32 len;
745 enum dma_data_direction dir; 741 enum dma_data_direction dir;
746 bool copy = false; 742 bool copy = false;
747 struct isci_request *isci_request = 743 struct isci_request *isci_request = sci_req->ireq;
748 (struct isci_request *)sci_object_get_association(sci_req);
749 struct sas_task *task = isci_request_access_task(isci_request); 744 struct sas_task *task = isci_request_access_task(isci_request);
750 745
751 stp_req = container_of(sci_req, typeof(*stp_req), parent); 746 stp_req = container_of(sci_req, typeof(*stp_req), parent);
@@ -772,8 +767,7 @@ enum sci_status scic_task_request_construct_sata(
772{ 767{
773 enum sci_status status; 768 enum sci_status status;
774 u8 sat_protocol; 769 u8 sat_protocol;
775 struct isci_request *isci_request = 770 struct isci_request *isci_request = sci_req->ireq;
776 (struct isci_request *)sci_object_get_association(sci_req);
777 771
778 sat_protocol = isci_sata_get_sat_protocol(isci_request); 772 sat_protocol = isci_sata_get_sat_protocol(isci_request);
779 773
@@ -1002,8 +996,7 @@ void scic_sds_io_request_copy_response(struct scic_sds_request *sds_request)
1002 u32 user_response_length; 996 u32 user_response_length;
1003 u32 core_response_length; 997 u32 core_response_length;
1004 struct sci_ssp_response_iu *ssp_response; 998 struct sci_ssp_response_iu *ssp_response;
1005 struct isci_request *isci_request = 999 struct isci_request *isci_request = sds_request->ireq;
1006 (struct isci_request *)sci_object_get_association(sds_request);
1007 1000
1008 ssp_response = 1001 ssp_response =
1009 (struct sci_ssp_response_iu *)sds_request->response_buffer; 1002 (struct sci_ssp_response_iu *)sds_request->response_buffer;
@@ -1523,7 +1516,7 @@ static const struct scic_sds_io_request_state_handler scic_sds_request_state_han
1523 */ 1516 */
1524static void scic_sds_request_initial_state_enter(void *object) 1517static void scic_sds_request_initial_state_enter(void *object)
1525{ 1518{
1526 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1519 struct scic_sds_request *sci_req = object;
1527 1520
1528 SET_STATE_HANDLER( 1521 SET_STATE_HANDLER(
1529 sci_req, 1522 sci_req,
@@ -1542,7 +1535,7 @@ static void scic_sds_request_initial_state_enter(void *object)
1542 */ 1535 */
1543static void scic_sds_request_constructed_state_enter(void *object) 1536static void scic_sds_request_constructed_state_enter(void *object)
1544{ 1537{
1545 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1538 struct scic_sds_request *sci_req = object;
1546 1539
1547 SET_STATE_HANDLER( 1540 SET_STATE_HANDLER(
1548 sci_req, 1541 sci_req,
@@ -1562,7 +1555,7 @@ static void scic_sds_request_constructed_state_enter(void *object)
1562 */ 1555 */
1563static void scic_sds_request_started_state_enter(void *object) 1556static void scic_sds_request_started_state_enter(void *object)
1564{ 1557{
1565 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1558 struct scic_sds_request *sci_req = object;
1566 1559
1567 SET_STATE_HANDLER( 1560 SET_STATE_HANDLER(
1568 sci_req, 1561 sci_req,
@@ -1589,7 +1582,7 @@ static void scic_sds_request_started_state_enter(void *object)
1589 */ 1582 */
1590static void scic_sds_request_started_state_exit(void *object) 1583static void scic_sds_request_started_state_exit(void *object)
1591{ 1584{
1592 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1585 struct scic_sds_request *sci_req = object;
1593 1586
1594 if (sci_req->has_started_substate_machine == true) 1587 if (sci_req->has_started_substate_machine == true)
1595 sci_base_state_machine_stop(&sci_req->started_substate_machine); 1588 sci_base_state_machine_stop(&sci_req->started_substate_machine);
@@ -1609,11 +1602,11 @@ static void scic_sds_request_started_state_exit(void *object)
1609 */ 1602 */
1610static void scic_sds_request_completed_state_enter(void *object) 1603static void scic_sds_request_completed_state_enter(void *object)
1611{ 1604{
1612 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1605 struct scic_sds_request *sci_req = object;
1613 struct scic_sds_controller *scic = 1606 struct scic_sds_controller *scic =
1614 scic_sds_request_get_controller(sci_req); 1607 scic_sds_request_get_controller(sci_req);
1615 struct isci_host *ihost = scic->ihost; 1608 struct isci_host *ihost = scic->ihost;
1616 struct isci_request *ireq = sci_object_get_association(sci_req); 1609 struct isci_request *ireq = sci_req->ireq;
1617 1610
1618 SET_STATE_HANDLER(sci_req, 1611 SET_STATE_HANDLER(sci_req,
1619 scic_sds_request_state_handler_table, 1612 scic_sds_request_state_handler_table,
@@ -1639,7 +1632,7 @@ static void scic_sds_request_completed_state_enter(void *object)
1639 */ 1632 */
1640static void scic_sds_request_aborting_state_enter(void *object) 1633static void scic_sds_request_aborting_state_enter(void *object)
1641{ 1634{
1642 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1635 struct scic_sds_request *sci_req = object;
1643 1636
1644 /* Setting the abort bit in the Task Context is required by the silicon. */ 1637 /* Setting the abort bit in the Task Context is required by the silicon. */
1645 sci_req->task_context_buffer->abort = 1; 1638 sci_req->task_context_buffer->abort = 1;
@@ -1662,7 +1655,7 @@ static void scic_sds_request_aborting_state_enter(void *object)
1662 */ 1655 */
1663static void scic_sds_request_final_state_enter(void *object) 1656static void scic_sds_request_final_state_enter(void *object)
1664{ 1657{
1665 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1658 struct scic_sds_request *sci_req = object;
1666 1659
1667 SET_STATE_HANDLER( 1660 SET_STATE_HANDLER(
1668 sci_req, 1661 sci_req,
@@ -1699,8 +1692,7 @@ static void scic_sds_general_request_construct(struct scic_sds_controller *scic,
1699 void *user_io_request_object, 1692 void *user_io_request_object,
1700 struct scic_sds_request *sci_req) 1693 struct scic_sds_request *sci_req)
1701{ 1694{
1702 sci_req->parent.private = NULL; 1695 sci_base_state_machine_construct(&sci_req->state_machine, sci_req,
1703 sci_base_state_machine_construct(&sci_req->state_machine, &sci_req->parent,
1704 scic_sds_request_state_table, SCI_BASE_REQUEST_STATE_INITIAL); 1696 scic_sds_request_state_table, SCI_BASE_REQUEST_STATE_INITIAL);
1705 sci_base_state_machine_start(&sci_req->state_machine); 1697 sci_base_state_machine_start(&sci_req->state_machine);
1706 1698
@@ -1790,7 +1782,7 @@ enum sci_status scic_task_request_construct(struct scic_sds_controller *scic,
1790 /* Construct the started sub-state machine. */ 1782 /* Construct the started sub-state machine. */
1791 sci_base_state_machine_construct( 1783 sci_base_state_machine_construct(
1792 &sci_req->started_substate_machine, 1784 &sci_req->started_substate_machine,
1793 &sci_req->parent, 1785 sci_req,
1794 scic_sds_io_request_started_task_mgmt_substate_table, 1786 scic_sds_io_request_started_task_mgmt_substate_table,
1795 SCIC_SDS_IO_REQUEST_STARTED_TASK_MGMT_SUBSTATE_AWAIT_TC_COMPLETION 1787 SCIC_SDS_IO_REQUEST_STARTED_TASK_MGMT_SUBSTATE_AWAIT_TC_COMPLETION
1796 ); 1788 );
diff --git a/drivers/scsi/isci/core/scic_sds_request.h b/drivers/scsi/isci/core/scic_sds_request.h
index 0bb1da81ce85..11d5a3ea9da3 100644
--- a/drivers/scsi/isci/core/scic_sds_request.h
+++ b/drivers/scsi/isci/core/scic_sds_request.h
@@ -118,6 +118,7 @@ enum scic_sds_smp_request_started_substates {
118 SCIC_SDS_SMP_REQUEST_STARTED_SUBSTATE_AWAIT_TC_COMPLETION, 118 SCIC_SDS_SMP_REQUEST_STARTED_SUBSTATE_AWAIT_TC_COMPLETION,
119}; 119};
120 120
121struct isci_request;
121/** 122/**
122 * struct scic_sds_request - This structure contains or references all of 123 * struct scic_sds_request - This structure contains or references all of
123 * the data necessary to process a task management or normal IO request. 124 * the data necessary to process a task management or normal IO request.
@@ -126,10 +127,9 @@ enum scic_sds_smp_request_started_substates {
126 */ 127 */
127struct scic_sds_request { 128struct scic_sds_request {
128 /** 129 /**
129 * The field specifies that the parent object for the base request is the 130 * The field specifies that the peer object for the request object.
130 * base object itself.
131 */ 131 */
132 struct sci_base_object parent; 132 struct isci_request *ireq;
133 133
134 /** 134 /**
135 * This field contains the information for the base request state machine. 135 * This field contains the information for the base request state machine.
diff --git a/drivers/scsi/isci/core/scic_sds_smp_request.c b/drivers/scsi/isci/core/scic_sds_smp_request.c
index 429973759776..ba29192f7fd0 100644
--- a/drivers/scsi/isci/core/scic_sds_smp_request.c
+++ b/drivers/scsi/isci/core/scic_sds_smp_request.c
@@ -525,7 +525,7 @@ static const struct scic_sds_io_request_state_handler scic_sds_smp_request_start
525static void scic_sds_smp_request_started_await_response_substate_enter( 525static void scic_sds_smp_request_started_await_response_substate_enter(
526 void *object) 526 void *object)
527{ 527{
528 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 528 struct scic_sds_request *sci_req = object;
529 529
530 SET_STATE_HANDLER( 530 SET_STATE_HANDLER(
531 sci_req, 531 sci_req,
@@ -546,7 +546,7 @@ static void scic_sds_smp_request_started_await_response_substate_enter(
546static void scic_sds_smp_request_started_await_tc_completion_substate_enter( 546static void scic_sds_smp_request_started_await_tc_completion_substate_enter(
547 void *object) 547 void *object)
548{ 548{
549 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 549 struct scic_sds_request *sci_req = object;
550 550
551 SET_STATE_HANDLER( 551 SET_STATE_HANDLER(
552 sci_req, 552 sci_req,
@@ -590,7 +590,7 @@ enum sci_status scic_io_request_construct_smp(struct scic_sds_request *sci_req)
590 /* Construct the started sub-state machine. */ 590 /* Construct the started sub-state machine. */
591 sci_base_state_machine_construct( 591 sci_base_state_machine_construct(
592 &sci_req->started_substate_machine, 592 &sci_req->started_substate_machine,
593 &sci_req->parent, 593 sci_req,
594 scic_sds_smp_request_started_substate_table, 594 scic_sds_smp_request_started_substate_table,
595 SCIC_SDS_SMP_REQUEST_STARTED_SUBSTATE_AWAIT_RESPONSE 595 SCIC_SDS_SMP_REQUEST_STARTED_SUBSTATE_AWAIT_RESPONSE
596 ); 596 );
diff --git a/drivers/scsi/isci/core/scic_sds_ssp_request.c b/drivers/scsi/isci/core/scic_sds_ssp_request.c
index a7297abdb1bd..7183ae331d2e 100644
--- a/drivers/scsi/isci/core/scic_sds_ssp_request.c
+++ b/drivers/scsi/isci/core/scic_sds_ssp_request.c
@@ -202,7 +202,7 @@ static const struct scic_sds_io_request_state_handler scic_sds_ssp_task_request_
202static void scic_sds_io_request_started_task_mgmt_await_tc_completion_substate_enter( 202static void scic_sds_io_request_started_task_mgmt_await_tc_completion_substate_enter(
203 void *object) 203 void *object)
204{ 204{
205 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 205 struct scic_sds_request *sci_req = object;
206 206
207 SET_STATE_HANDLER( 207 SET_STATE_HANDLER(
208 sci_req, 208 sci_req,
@@ -223,7 +223,7 @@ static void scic_sds_io_request_started_task_mgmt_await_tc_completion_substate_e
223static void scic_sds_io_request_started_task_mgmt_await_task_response_substate_enter( 223static void scic_sds_io_request_started_task_mgmt_await_task_response_substate_enter(
224 void *object) 224 void *object)
225{ 225{
226 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 226 struct scic_sds_request *sci_req = object;
227 227
228 SET_STATE_HANDLER( 228 SET_STATE_HANDLER(
229 sci_req, 229 sci_req,
diff --git a/drivers/scsi/isci/core/scic_sds_stp_request.c b/drivers/scsi/isci/core/scic_sds_stp_request.c
index 2c6b62ee5fe8..ec215463092a 100644
--- a/drivers/scsi/isci/core/scic_sds_stp_request.c
+++ b/drivers/scsi/isci/core/scic_sds_stp_request.c
@@ -566,7 +566,7 @@ static const struct scic_sds_io_request_state_handler scic_sds_stp_request_start
566static void scic_sds_stp_request_started_non_data_await_h2d_completion_enter( 566static void scic_sds_stp_request_started_non_data_await_h2d_completion_enter(
567 void *object) 567 void *object)
568{ 568{
569 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 569 struct scic_sds_request *sci_req = object;
570 570
571 SET_STATE_HANDLER( 571 SET_STATE_HANDLER(
572 sci_req, 572 sci_req,
@@ -581,7 +581,7 @@ static void scic_sds_stp_request_started_non_data_await_h2d_completion_enter(
581 581
582static void scic_sds_stp_request_started_non_data_await_d2h_enter(void *object) 582static void scic_sds_stp_request_started_non_data_await_d2h_enter(void *object)
583{ 583{
584 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 584 struct scic_sds_request *sci_req = object;
585 585
586 SET_STATE_HANDLER( 586 SET_STATE_HANDLER(
587 sci_req, 587 sci_req,
@@ -611,7 +611,7 @@ enum sci_status scic_sds_stp_non_data_request_construct(struct scic_sds_request
611 scu_stp_raw_request_construct_task_context(stp_req, sci_req->task_context_buffer); 611 scu_stp_raw_request_construct_task_context(stp_req, sci_req->task_context_buffer);
612 612
613 sci_base_state_machine_construct(&sci_req->started_substate_machine, 613 sci_base_state_machine_construct(&sci_req->started_substate_machine,
614 &sci_req->parent, 614 sci_req,
615 scic_sds_stp_request_started_non_data_substate_table, 615 scic_sds_stp_request_started_non_data_substate_table,
616 SCIC_SDS_STP_REQUEST_STARTED_NON_DATA_AWAIT_H2D_COMPLETION_SUBSTATE); 616 SCIC_SDS_STP_REQUEST_STARTED_NON_DATA_AWAIT_H2D_COMPLETION_SUBSTATE);
617 617
@@ -1215,7 +1215,7 @@ static const struct scic_sds_io_request_state_handler scic_sds_stp_request_start
1215static void scic_sds_stp_request_started_pio_await_h2d_completion_enter( 1215static void scic_sds_stp_request_started_pio_await_h2d_completion_enter(
1216 void *object) 1216 void *object)
1217{ 1217{
1218 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1218 struct scic_sds_request *sci_req = object;
1219 1219
1220 SET_STATE_HANDLER( 1220 SET_STATE_HANDLER(
1221 sci_req, 1221 sci_req,
@@ -1229,7 +1229,7 @@ static void scic_sds_stp_request_started_pio_await_h2d_completion_enter(
1229 1229
1230static void scic_sds_stp_request_started_pio_await_frame_enter(void *object) 1230static void scic_sds_stp_request_started_pio_await_frame_enter(void *object)
1231{ 1231{
1232 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1232 struct scic_sds_request *sci_req = object;
1233 1233
1234 SET_STATE_HANDLER( 1234 SET_STATE_HANDLER(
1235 sci_req, 1235 sci_req,
@@ -1241,7 +1241,7 @@ static void scic_sds_stp_request_started_pio_await_frame_enter(void *object)
1241static void scic_sds_stp_request_started_pio_data_in_await_data_enter( 1241static void scic_sds_stp_request_started_pio_data_in_await_data_enter(
1242 void *object) 1242 void *object)
1243{ 1243{
1244 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1244 struct scic_sds_request *sci_req = object;
1245 1245
1246 SET_STATE_HANDLER( 1246 SET_STATE_HANDLER(
1247 sci_req, 1247 sci_req,
@@ -1253,7 +1253,7 @@ static void scic_sds_stp_request_started_pio_data_in_await_data_enter(
1253static void scic_sds_stp_request_started_pio_data_out_transmit_data_enter( 1253static void scic_sds_stp_request_started_pio_data_out_transmit_data_enter(
1254 void *object) 1254 void *object)
1255{ 1255{
1256 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1256 struct scic_sds_request *sci_req = object;
1257 1257
1258 SET_STATE_HANDLER( 1258 SET_STATE_HANDLER(
1259 sci_req, 1259 sci_req,
@@ -1311,7 +1311,7 @@ enum sci_status scic_sds_stp_pio_request_construct(struct scic_sds_request *sci_
1311 } 1311 }
1312 1312
1313 sci_base_state_machine_construct(&sci_req->started_substate_machine, 1313 sci_base_state_machine_construct(&sci_req->started_substate_machine,
1314 &sci_req->parent, 1314 sci_req,
1315 scic_sds_stp_request_started_pio_substate_table, 1315 scic_sds_stp_request_started_pio_substate_table,
1316 SCIC_SDS_STP_REQUEST_STARTED_PIO_AWAIT_H2D_COMPLETION_SUBSTATE); 1316 SCIC_SDS_STP_REQUEST_STARTED_PIO_AWAIT_H2D_COMPLETION_SUBSTATE);
1317 1317
@@ -1485,7 +1485,7 @@ static const struct scic_sds_io_request_state_handler scic_sds_stp_request_start
1485static void scic_sds_stp_request_started_udma_await_tc_completion_enter( 1485static void scic_sds_stp_request_started_udma_await_tc_completion_enter(
1486 void *object) 1486 void *object)
1487{ 1487{
1488 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1488 struct scic_sds_request *sci_req = object;
1489 1489
1490 SET_STATE_HANDLER( 1490 SET_STATE_HANDLER(
1491 sci_req, 1491 sci_req,
@@ -1504,7 +1504,7 @@ static void scic_sds_stp_request_started_udma_await_tc_completion_enter(
1504static void scic_sds_stp_request_started_udma_await_d2h_reg_fis_enter( 1504static void scic_sds_stp_request_started_udma_await_d2h_reg_fis_enter(
1505 void *object) 1505 void *object)
1506{ 1506{
1507 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1507 struct scic_sds_request *sci_req = object;
1508 1508
1509 SET_STATE_HANDLER( 1509 SET_STATE_HANDLER(
1510 sci_req, 1510 sci_req,
@@ -1535,7 +1535,7 @@ enum sci_status scic_sds_stp_udma_request_construct(struct scic_sds_request *sci
1535 1535
1536 sci_base_state_machine_construct( 1536 sci_base_state_machine_construct(
1537 &sci_req->started_substate_machine, 1537 &sci_req->started_substate_machine,
1538 &sci_req->parent, 1538 sci_req,
1539 scic_sds_stp_request_started_udma_substate_table, 1539 scic_sds_stp_request_started_udma_substate_table,
1540 SCIC_SDS_STP_REQUEST_STARTED_UDMA_AWAIT_TC_COMPLETION_SUBSTATE 1540 SCIC_SDS_STP_REQUEST_STARTED_UDMA_AWAIT_TC_COMPLETION_SUBSTATE
1541 ); 1541 );
@@ -1732,7 +1732,7 @@ static const struct scic_sds_io_request_state_handler scic_sds_stp_request_start
1732static void scic_sds_stp_request_started_soft_reset_await_h2d_asserted_completion_enter( 1732static void scic_sds_stp_request_started_soft_reset_await_h2d_asserted_completion_enter(
1733 void *object) 1733 void *object)
1734{ 1734{
1735 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1735 struct scic_sds_request *sci_req = object;
1736 1736
1737 SET_STATE_HANDLER( 1737 SET_STATE_HANDLER(
1738 sci_req, 1738 sci_req,
@@ -1748,7 +1748,7 @@ static void scic_sds_stp_request_started_soft_reset_await_h2d_asserted_completio
1748static void scic_sds_stp_request_started_soft_reset_await_h2d_diagnostic_completion_enter( 1748static void scic_sds_stp_request_started_soft_reset_await_h2d_diagnostic_completion_enter(
1749 void *object) 1749 void *object)
1750{ 1750{
1751 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1751 struct scic_sds_request *sci_req = object;
1752 struct scu_task_context *task_context; 1752 struct scu_task_context *task_context;
1753 struct sata_fis_reg_h2d *h2d_fis; 1753 struct sata_fis_reg_h2d *h2d_fis;
1754 enum sci_status status; 1754 enum sci_status status;
@@ -1775,7 +1775,7 @@ static void scic_sds_stp_request_started_soft_reset_await_h2d_diagnostic_complet
1775static void scic_sds_stp_request_started_soft_reset_await_d2h_response_enter( 1775static void scic_sds_stp_request_started_soft_reset_await_d2h_response_enter(
1776 void *object) 1776 void *object)
1777{ 1777{
1778 struct scic_sds_request *sci_req = (struct scic_sds_request *)object; 1778 struct scic_sds_request *sci_req = object;
1779 1779
1780 SET_STATE_HANDLER( 1780 SET_STATE_HANDLER(
1781 sci_req, 1781 sci_req,
@@ -1806,7 +1806,7 @@ enum sci_status scic_sds_stp_soft_reset_request_construct(struct scic_sds_reques
1806 scu_stp_raw_request_construct_task_context(stp_req, sci_req->task_context_buffer); 1806 scu_stp_raw_request_construct_task_context(stp_req, sci_req->task_context_buffer);
1807 1807
1808 sci_base_state_machine_construct(&sci_req->started_substate_machine, 1808 sci_base_state_machine_construct(&sci_req->started_substate_machine,
1809 &sci_req->parent, 1809 sci_req,
1810 scic_sds_stp_request_started_soft_reset_substate_table, 1810 scic_sds_stp_request_started_soft_reset_substate_table,
1811 SCIC_SDS_STP_REQUEST_STARTED_SOFT_RESET_AWAIT_H2D_ASSERTED_COMPLETION_SUBSTATE); 1811 SCIC_SDS_STP_REQUEST_STARTED_SOFT_RESET_AWAIT_H2D_ASSERTED_COMPLETION_SUBSTATE);
1812 1812
diff --git a/drivers/scsi/isci/request.c b/drivers/scsi/isci/request.c
index 281a556f5eeb..c45e78e41f27 100644
--- a/drivers/scsi/isci/request.c
+++ b/drivers/scsi/isci/request.c
@@ -61,7 +61,7 @@
61#include "request.h" 61#include "request.h"
62#include "sata.h" 62#include "sata.h"
63#include "scu_completion_codes.h" 63#include "scu_completion_codes.h"
64 64#include "core/scic_sds_request.h"
65 65
66static enum sci_status isci_request_ssp_request_construct( 66static enum sci_status isci_request_ssp_request_construct(
67 struct isci_request *request) 67 struct isci_request *request)
@@ -225,7 +225,7 @@ static enum sci_status isci_io_request_build(
225 return SCI_FAILURE; 225 return SCI_FAILURE;
226 } 226 }
227 227
228 sci_object_set_association(request->sci_request_handle, request); 228 request->sci_request_handle->ireq = request;
229 229
230 switch (task->task_proto) { 230 switch (task->task_proto) {
231 case SAS_PROTOCOL_SMP: 231 case SAS_PROTOCOL_SMP:
diff --git a/drivers/scsi/isci/stp_remote_device.c b/drivers/scsi/isci/stp_remote_device.c
index d86976469428..1853552bc252 100644
--- a/drivers/scsi/isci/stp_remote_device.c
+++ b/drivers/scsi/isci/stp_remote_device.c
@@ -209,8 +209,7 @@ static enum sci_status scic_sds_stp_remote_device_ready_idle_substate_start_io_h
209 struct scic_sds_request *request) 209 struct scic_sds_request *request)
210{ 210{
211 enum sci_status status; 211 enum sci_status status;
212 struct isci_request *isci_request = 212 struct isci_request *isci_request = request->ireq;
213 (struct isci_request *)sci_object_get_association(request);
214 213
215 214
216 /* Will the port allow the io request to start? */ 215 /* Will the port allow the io request to start? */
@@ -280,8 +279,7 @@ static enum sci_status scic_sds_stp_remote_device_ready_ncq_substate_start_io_ha
280 struct scic_sds_request *request) 279 struct scic_sds_request *request)
281{ 280{
282 enum sci_status status; 281 enum sci_status status;
283 struct isci_request *isci_request = 282 struct isci_request *isci_request = request->ireq;
284 (struct isci_request *)sci_object_get_association(request);
285 283
286 if (isci_sata_get_sat_protocol(isci_request) == SAT_PROTOCOL_FPDMA) { 284 if (isci_sata_get_sat_protocol(isci_request) == SAT_PROTOCOL_FPDMA) {
287 status = sci_dev->owning_port->state_handlers->start_io_handler( 285 status = sci_dev->owning_port->state_handlers->start_io_handler(
diff --git a/drivers/scsi/isci/task.c b/drivers/scsi/isci/task.c
index c0ed1b28f3e5..95f386723212 100644
--- a/drivers/scsi/isci/task.c
+++ b/drivers/scsi/isci/task.c
@@ -63,7 +63,7 @@
63#include "request.h" 63#include "request.h"
64#include "sata.h" 64#include "sata.h"
65#include "task.h" 65#include "task.h"
66 66#include "core/scic_sds_request.h"
67/** 67/**
68* isci_task_refuse() - complete the request to the upper layer driver in 68* isci_task_refuse() - complete the request to the upper layer driver in
69* the case where an I/O needs to be completed back in the submit path. 69* the case where an I/O needs to be completed back in the submit path.
@@ -314,10 +314,7 @@ static enum sci_status isci_task_request_build(
314 goto errout; 314 goto errout;
315 } 315 }
316 316
317 sci_object_set_association( 317 request->sci_request_handle->ireq = request;
318 request->sci_request_handle,
319 request
320 );
321 318
322 /* XXX convert to get this from task->tproto like other drivers */ 319 /* XXX convert to get this from task->tproto like other drivers */
323 if (dev->dev_type == SAS_END_DEV) { 320 if (dev->dev_type == SAS_END_DEV) {