aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/isci
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2011-04-19 16:48:49 -0400
committerDan Williams <dan.j.williams@intel.com>2011-07-03 07:00:37 -0400
commit7ab92c9ed22b49a50d9a10bbfdf4ee8ffe62c324 (patch)
tree9dc0dbfeede0e24250fd0d596ff84ce09c14d283 /drivers/scsi/isci
parent31e824ed0d8c84c5232405167b2338ffc071ae8a (diff)
isci: make a remote_node_context a proper member of a remote_device
A rnc object has the same lifetime as its associated remote_device. It might get re-initialized, but a remote device always has an rnc member. Preparation for unifying scic_sds_remote_device and isci_remote_device Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci')
-rw-r--r--drivers/scsi/isci/core/scic_sds_remote_device.c41
-rw-r--r--drivers/scsi/isci/core/scic_sds_remote_device.h6
-rw-r--r--drivers/scsi/isci/core/scic_sds_request.c2
-rw-r--r--drivers/scsi/isci/core/scic_sds_smp_remote_device.c3
-rw-r--r--drivers/scsi/isci/core/scic_sds_smp_request.c9
-rw-r--r--drivers/scsi/isci/core/scic_sds_stp_remote_device.c39
6 files changed, 45 insertions, 55 deletions
diff --git a/drivers/scsi/isci/core/scic_sds_remote_device.c b/drivers/scsi/isci/core/scic_sds_remote_device.c
index fa7828d4d975..04295274b71a 100644
--- a/drivers/scsi/isci/core/scic_sds_remote_device.c
+++ b/drivers/scsi/isci/core/scic_sds_remote_device.c
@@ -83,8 +83,7 @@
83 83
84u32 scic_remote_device_get_object_size(void) 84u32 scic_remote_device_get_object_size(void)
85{ 85{
86 return sizeof(struct scic_sds_remote_device) 86 return sizeof (struct scic_sds_remote_device);
87 + sizeof(struct scic_sds_remote_node_context);
88} 87}
89 88
90enum sci_status scic_remote_device_da_construct( 89enum sci_status scic_remote_device_da_construct(
@@ -111,7 +110,7 @@ enum sci_status scic_remote_device_da_construct(
111 &remote_node_index); 110 &remote_node_index);
112 111
113 if (status == SCI_SUCCESS) { 112 if (status == SCI_SUCCESS) {
114 sci_dev->rnc->remote_node_index = remote_node_index; 113 sci_dev->rnc.remote_node_index = remote_node_index;
115 114
116 scic_sds_port_get_attached_sas_address( 115 scic_sds_port_get_attached_sas_address(
117 sci_dev->owning_port, &sci_dev->device_address); 116 sci_dev->owning_port, &sci_dev->device_address);
@@ -176,7 +175,7 @@ enum sci_status scic_remote_device_ea_construct(
176 sci_dev, discover_response); 175 sci_dev, discover_response);
177 176
178 status = scic_sds_controller_allocate_remote_node_context( 177 status = scic_sds_controller_allocate_remote_node_context(
179 scic, sci_dev, &sci_dev->rnc->remote_node_index); 178 scic, sci_dev, &sci_dev->rnc.remote_node_index);
180 179
181 if (status == SCI_SUCCESS) { 180 if (status == SCI_SUCCESS) {
182 if (sci_dev->target_protocols.u.bits.attached_ssp_target) { 181 if (sci_dev->target_protocols.u.bits.attached_ssp_target) {
@@ -694,7 +693,7 @@ static enum sci_status scic_sds_remote_device_core_event_handler(
694 case SCU_EVENT_TYPE_RNC_OPS_MISC: 693 case SCU_EVENT_TYPE_RNC_OPS_MISC:
695 case SCU_EVENT_TYPE_RNC_SUSPEND_TX: 694 case SCU_EVENT_TYPE_RNC_SUSPEND_TX:
696 case SCU_EVENT_TYPE_RNC_SUSPEND_TX_RX: 695 case SCU_EVENT_TYPE_RNC_SUSPEND_TX_RX:
697 status = scic_sds_remote_node_context_event_handler(sci_dev->rnc, event_code); 696 status = scic_sds_remote_node_context_event_handler(&sci_dev->rnc, event_code);
698 break; 697 break;
699 case SCU_EVENT_TYPE_PTX_SCHEDULE_EVENT: 698 case SCU_EVENT_TYPE_PTX_SCHEDULE_EVENT:
700 699
@@ -702,7 +701,7 @@ static enum sci_status scic_sds_remote_device_core_event_handler(
702 status = SCI_SUCCESS; 701 status = SCI_SUCCESS;
703 702
704 /* Suspend the associated RNC */ 703 /* Suspend the associated RNC */
705 scic_sds_remote_node_context_suspend(sci_dev->rnc, 704 scic_sds_remote_node_context_suspend(&sci_dev->rnc,
706 SCI_SOFTWARE_SUSPENSION, 705 SCI_SOFTWARE_SUSPENSION,
707 NULL, NULL); 706 NULL, NULL);
708 707
@@ -889,7 +888,7 @@ static enum sci_status scic_sds_remote_device_stopped_state_start_handler(
889{ 888{
890 enum sci_status status; 889 enum sci_status status;
891 890
892 status = scic_sds_remote_node_context_resume(sci_dev->rnc, 891 status = scic_sds_remote_node_context_resume(&sci_dev->rnc,
893 scic_sds_remote_device_resume_complete_handler, sci_dev); 892 scic_sds_remote_device_resume_complete_handler, sci_dev);
894 893
895 if (status == SCI_SUCCESS) 894 if (status == SCI_SUCCESS)
@@ -923,8 +922,8 @@ static enum sci_status scic_sds_remote_device_stopped_state_destruct_handler(
923 922
924 scic = scic_sds_remote_device_get_controller(sci_dev); 923 scic = scic_sds_remote_device_get_controller(sci_dev);
925 scic_sds_controller_free_remote_node_context(scic, sci_dev, 924 scic_sds_controller_free_remote_node_context(scic, sci_dev,
926 sci_dev->rnc->remote_node_index); 925 sci_dev->rnc.remote_node_index);
927 sci_dev->rnc->remote_node_index = SCIC_SDS_REMOTE_NODE_CONTEXT_INVALID_INDEX; 926 sci_dev->rnc.remote_node_index = SCIC_SDS_REMOTE_NODE_CONTEXT_INVALID_INDEX;
928 927
929 sci_base_state_machine_change_state(&sci_dev->state_machine, 928 sci_base_state_machine_change_state(&sci_dev->state_machine,
930 SCI_BASE_REMOTE_DEVICE_STATE_FINAL); 929 SCI_BASE_REMOTE_DEVICE_STATE_FINAL);
@@ -948,7 +947,7 @@ static enum sci_status scic_sds_remote_device_starting_state_stop_handler(
948 /* 947 /*
949 * Destroy the remote node context 948 * Destroy the remote node context
950 */ 949 */
951 scic_sds_remote_node_context_destruct(sci_dev->rnc, 950 scic_sds_remote_node_context_destruct(&sci_dev->rnc,
952 scic_sds_cb_remote_device_rnc_destruct_complete, sci_dev); 951 scic_sds_cb_remote_device_rnc_destruct_complete, sci_dev);
953 952
954 /* 953 /*
@@ -971,7 +970,7 @@ enum sci_status scic_sds_remote_device_ready_state_stop_handler(
971 SCI_BASE_REMOTE_DEVICE_STATE_STOPPING); 970 SCI_BASE_REMOTE_DEVICE_STATE_STOPPING);
972 971
973 if (sci_dev->started_request_count == 0) { 972 if (sci_dev->started_request_count == 0) {
974 scic_sds_remote_node_context_destruct(sci_dev->rnc, 973 scic_sds_remote_node_context_destruct(&sci_dev->rnc,
975 scic_sds_cb_remote_device_rnc_destruct_complete, 974 scic_sds_cb_remote_device_rnc_destruct_complete,
976 sci_dev); 975 sci_dev);
977 } else 976 } else
@@ -1016,8 +1015,8 @@ static enum sci_status scic_sds_remote_device_ready_state_start_task_handler(
1016 scic_sds_remote_device_get_port(sci_dev), sci_dev, request); 1015 scic_sds_remote_device_get_port(sci_dev), sci_dev, request);
1017 1016
1018 if (result == SCI_SUCCESS) { 1017 if (result == SCI_SUCCESS) {
1019 result = scic_sds_remote_node_context_start_task( 1018 result = scic_sds_remote_node_context_start_task(&sci_dev->rnc,
1020 sci_dev->rnc, request); 1019 request);
1021 if (result == SCI_SUCCESS) 1020 if (result == SCI_SUCCESS)
1022 result = scic_sds_request_start(request); 1021 result = scic_sds_request_start(request);
1023 1022
@@ -1046,8 +1045,7 @@ static enum sci_status scic_sds_remote_device_ready_state_start_io_handler(
1046 scic_sds_remote_device_get_port(sci_dev), sci_dev, request); 1045 scic_sds_remote_device_get_port(sci_dev), sci_dev, request);
1047 1046
1048 if (result == SCI_SUCCESS) { 1047 if (result == SCI_SUCCESS) {
1049 result = scic_sds_remote_node_context_start_io( 1048 result = scic_sds_remote_node_context_start_io(&sci_dev->rnc, request);
1050 sci_dev->rnc, request);
1051 if (result == SCI_SUCCESS) 1049 if (result == SCI_SUCCESS)
1052 result = scic_sds_request_start(request); 1050 result = scic_sds_request_start(request);
1053 1051
@@ -1144,7 +1142,7 @@ static enum sci_status scic_sds_remote_device_stopping_state_complete_request_ha
1144 scic_sds_remote_device_decrement_request_count(sci_dev); 1142 scic_sds_remote_device_decrement_request_count(sci_dev);
1145 1143
1146 if (scic_sds_remote_device_get_request_count(sci_dev) == 0) 1144 if (scic_sds_remote_device_get_request_count(sci_dev) == 0)
1147 scic_sds_remote_node_context_destruct(sci_dev->rnc, 1145 scic_sds_remote_node_context_destruct(&sci_dev->rnc,
1148 scic_sds_cb_remote_device_rnc_destruct_complete, 1146 scic_sds_cb_remote_device_rnc_destruct_complete,
1149 sci_dev); 1147 sci_dev);
1150 return SCI_SUCCESS; 1148 return SCI_SUCCESS;
@@ -1491,7 +1489,7 @@ static void scic_sds_remote_device_ready_state_enter(struct sci_base_object *obj
1491 scic_sds_remote_device_state_handler_table, 1489 scic_sds_remote_device_state_handler_table,
1492 SCI_BASE_REMOTE_DEVICE_STATE_READY); 1490 SCI_BASE_REMOTE_DEVICE_STATE_READY);
1493 1491
1494 scic->remote_device_sequence[sci_dev->rnc->remote_node_index]++; 1492 scic->remote_device_sequence[sci_dev->rnc.remote_node_index]++;
1495 1493
1496 if (sci_dev->has_ready_substate_machine) 1494 if (sci_dev->has_ready_substate_machine)
1497 sci_base_state_machine_start(&sci_dev->ready_substate_machine); 1495 sci_base_state_machine_start(&sci_dev->ready_substate_machine);
@@ -1585,7 +1583,7 @@ static void scic_sds_remote_device_resetting_state_enter(
1585 ); 1583 );
1586 1584
1587 scic_sds_remote_node_context_suspend( 1585 scic_sds_remote_node_context_suspend(
1588 sci_dev->rnc, SCI_SOFTWARE_SUSPENSION, NULL, NULL); 1586 &sci_dev->rnc, SCI_SOFTWARE_SUSPENSION, NULL, NULL);
1589} 1587}
1590 1588
1591/** 1589/**
@@ -1601,7 +1599,7 @@ static void scic_sds_remote_device_resetting_state_exit(
1601{ 1599{
1602 struct scic_sds_remote_device *sci_dev = (struct scic_sds_remote_device *)object; 1600 struct scic_sds_remote_device *sci_dev = (struct scic_sds_remote_device *)object;
1603 1601
1604 scic_sds_remote_node_context_resume(sci_dev->rnc, NULL, NULL); 1602 scic_sds_remote_node_context_resume(&sci_dev->rnc, NULL, NULL);
1605} 1603}
1606 1604
1607/** 1605/**
@@ -1661,7 +1659,6 @@ void scic_remote_device_construct(struct scic_sds_port *sci_port,
1661{ 1659{
1662 sci_dev->owning_port = sci_port; 1660 sci_dev->owning_port = sci_port;
1663 sci_dev->started_request_count = 0; 1661 sci_dev->started_request_count = 0;
1664 sci_dev->rnc = (struct scic_sds_remote_node_context *) &sci_dev[1];
1665 sci_dev->parent.private = NULL; 1662 sci_dev->parent.private = NULL;
1666 1663
1667 sci_base_state_machine_construct( 1664 sci_base_state_machine_construct(
@@ -1677,9 +1674,9 @@ void scic_remote_device_construct(struct scic_sds_port *sci_port,
1677 1674
1678 scic_sds_remote_node_context_construct( 1675 scic_sds_remote_node_context_construct(
1679 sci_dev, 1676 sci_dev,
1680 sci_dev->rnc, 1677 &sci_dev->rnc,
1681 SCIC_SDS_REMOTE_NODE_CONTEXT_INVALID_INDEX 1678 SCIC_SDS_REMOTE_NODE_CONTEXT_INVALID_INDEX
1682 ); 1679 );
1683 1680
1684 sci_object_set_association(sci_dev->rnc, sci_dev); 1681 sci_object_set_association(&sci_dev->rnc, sci_dev);
1685} 1682}
diff --git a/drivers/scsi/isci/core/scic_sds_remote_device.h b/drivers/scsi/isci/core/scic_sds_remote_device.h
index 5d3df92212eb..7f43f3003e81 100644
--- a/drivers/scsi/isci/core/scic_sds_remote_device.h
+++ b/drivers/scsi/isci/core/scic_sds_remote_device.h
@@ -297,7 +297,7 @@ struct scic_sds_remote_device {
297 * This field contains the SCU silicon remote node context specific 297 * This field contains the SCU silicon remote node context specific
298 * information. 298 * information.
299 */ 299 */
300 struct scic_sds_remote_node_context *rnc; 300 struct scic_sds_remote_node_context rnc;
301 301
302 /** 302 /**
303 * This field contains the stated request count for the remote device. The 303 * This field contains the stated request count for the remote device. The
@@ -523,7 +523,7 @@ extern const struct sci_base_state scic_sds_smp_remote_device_ready_substate_tab
523#define scic_sds_remote_device_get_sequence(sci_dev) \ 523#define scic_sds_remote_device_get_sequence(sci_dev) \
524 (\ 524 (\
525 scic_sds_remote_device_get_controller(sci_dev)-> \ 525 scic_sds_remote_device_get_controller(sci_dev)-> \
526 remote_device_sequence[(sci_dev)->rnc->remote_node_index] \ 526 remote_device_sequence[(sci_dev)->rnc.remote_node_index] \
527 ) 527 )
528 528
529/** 529/**
@@ -554,7 +554,7 @@ extern const struct sci_base_state scic_sds_smp_remote_device_ready_substate_tab
554 * This macro returns the remote node index for this device object 554 * This macro returns the remote node index for this device object
555 */ 555 */
556#define scic_sds_remote_device_get_index(sci_dev) \ 556#define scic_sds_remote_device_get_index(sci_dev) \
557 ((sci_dev)->rnc->remote_node_index) 557 ((sci_dev)->rnc.remote_node_index)
558 558
559/** 559/**
560 * scic_sds_remote_device_build_command_context() - 560 * scic_sds_remote_device_build_command_context() -
diff --git a/drivers/scsi/isci/core/scic_sds_request.c b/drivers/scsi/isci/core/scic_sds_request.c
index 8a608f01ceda..63ebbf39dc90 100644
--- a/drivers/scsi/isci/core/scic_sds_request.c
+++ b/drivers/scsi/isci/core/scic_sds_request.c
@@ -1766,7 +1766,7 @@ enum sci_status scic_io_request_construct(struct scic_sds_controller *scic,
1766 scic_sds_general_request_construct(scic, sci_dev, io_tag, 1766 scic_sds_general_request_construct(scic, sci_dev, io_tag,
1767 user_io_request_object, sci_req); 1767 user_io_request_object, sci_req);
1768 1768
1769 if (sci_dev->rnc->remote_node_index == SCIC_SDS_REMOTE_NODE_CONTEXT_INVALID_INDEX) 1769 if (sci_dev->rnc.remote_node_index == SCIC_SDS_REMOTE_NODE_CONTEXT_INVALID_INDEX)
1770 return SCI_FAILURE_INVALID_REMOTE_DEVICE; 1770 return SCI_FAILURE_INVALID_REMOTE_DEVICE;
1771 1771
1772 scic_remote_device_get_protocols(sci_dev, &device_protocol); 1772 scic_remote_device_get_protocols(sci_dev, &device_protocol);
diff --git a/drivers/scsi/isci/core/scic_sds_smp_remote_device.c b/drivers/scsi/isci/core/scic_sds_smp_remote_device.c
index 471cb7d1142d..cd55c0a8dae3 100644
--- a/drivers/scsi/isci/core/scic_sds_smp_remote_device.c
+++ b/drivers/scsi/isci/core/scic_sds_smp_remote_device.c
@@ -87,8 +87,7 @@ static enum sci_status scic_sds_smp_remote_device_ready_idle_substate_start_io_h
87 device->owning_port, device, request); 87 device->owning_port, device, request);
88 88
89 if (status == SCI_SUCCESS) { 89 if (status == SCI_SUCCESS) {
90 status = scic_sds_remote_node_context_start_io( 90 status = scic_sds_remote_node_context_start_io(&device->rnc, request);
91 device->rnc, request);
92 91
93 if (status == SCI_SUCCESS) 92 if (status == SCI_SUCCESS)
94 status = scic_sds_request_start(request); 93 status = scic_sds_request_start(request);
diff --git a/drivers/scsi/isci/core/scic_sds_smp_request.c b/drivers/scsi/isci/core/scic_sds_smp_request.c
index f53f21b8b9c0..3274d62ac3b2 100644
--- a/drivers/scsi/isci/core/scic_sds_smp_request.c
+++ b/drivers/scsi/isci/core/scic_sds_smp_request.c
@@ -173,7 +173,7 @@ static void scu_smp_request_construct_task_context(
173{ 173{
174 dma_addr_t dma_addr; 174 dma_addr_t dma_addr;
175 struct scic_sds_controller *controller; 175 struct scic_sds_controller *controller;
176 struct scic_sds_remote_device *target_device; 176 struct scic_sds_remote_device *sci_dev;
177 struct scic_sds_port *target_port; 177 struct scic_sds_port *target_port;
178 struct scu_task_context *task_context; 178 struct scu_task_context *task_context;
179 179
@@ -185,7 +185,7 @@ static void scu_smp_request_construct_task_context(
185 task_context = scic_sds_request_get_task_context(sds_request); 185 task_context = scic_sds_request_get_task_context(sds_request);
186 186
187 controller = scic_sds_request_get_controller(sds_request); 187 controller = scic_sds_request_get_controller(sds_request);
188 target_device = scic_sds_request_get_device(sds_request); 188 sci_dev = scic_sds_request_get_device(sds_request);
189 target_port = scic_sds_request_get_port(sds_request); 189 target_port = scic_sds_request_get_port(sds_request);
190 190
191 /* 191 /*
@@ -195,7 +195,7 @@ static void scu_smp_request_construct_task_context(
195 task_context->priority = 0; 195 task_context->priority = 0;
196 task_context->initiator_request = 1; 196 task_context->initiator_request = 1;
197 task_context->connection_rate = 197 task_context->connection_rate =
198 scic_remote_device_get_connection_rate(target_device); 198 scic_remote_device_get_connection_rate(sci_dev);
199 task_context->protocol_engine_index = 199 task_context->protocol_engine_index =
200 scic_sds_controller_get_protocol_engine_group(controller); 200 scic_sds_controller_get_protocol_engine_group(controller);
201 task_context->logical_port_index = 201 task_context->logical_port_index =
@@ -206,8 +206,7 @@ static void scu_smp_request_construct_task_context(
206 task_context->context_type = SCU_TASK_CONTEXT_TYPE; 206 task_context->context_type = SCU_TASK_CONTEXT_TYPE;
207 207
208 /* 04h */ 208 /* 04h */
209 task_context->remote_node_index = 209 task_context->remote_node_index = sci_dev->rnc.remote_node_index;
210 sds_request->target_device->rnc->remote_node_index;
211 task_context->command_code = 0; 210 task_context->command_code = 0;
212 task_context->task_type = SCU_TASK_TYPE_SMP_REQUEST; 211 task_context->task_type = SCU_TASK_TYPE_SMP_REQUEST;
213 212
diff --git a/drivers/scsi/isci/core/scic_sds_stp_remote_device.c b/drivers/scsi/isci/core/scic_sds_stp_remote_device.c
index b15357b2ce08..848cb4711b63 100644
--- a/drivers/scsi/isci/core/scic_sds_stp_remote_device.c
+++ b/drivers/scsi/isci/core/scic_sds_stp_remote_device.c
@@ -150,7 +150,7 @@ static enum sci_status scic_sds_stp_remote_device_ready_substate_start_request_h
150 if (status != SCI_SUCCESS) 150 if (status != SCI_SUCCESS)
151 return status; 151 return status;
152 152
153 status = scic_sds_remote_node_context_start_task(device->rnc, request); 153 status = scic_sds_remote_node_context_start_task(&device->rnc, request);
154 if (status != SCI_SUCCESS) 154 if (status != SCI_SUCCESS)
155 goto out; 155 goto out;
156 156
@@ -173,9 +173,9 @@ static enum sci_status scic_sds_stp_remote_device_ready_substate_start_request_h
173 * remote node context state machine will take the correct action when 173 * remote node context state machine will take the correct action when
174 * the remote node context is suspended and later resumed. 174 * the remote node context is suspended and later resumed.
175 */ 175 */
176 scic_sds_remote_node_context_suspend(device->rnc, 176 scic_sds_remote_node_context_suspend(&device->rnc,
177 SCI_SOFTWARE_SUSPENSION, NULL, NULL); 177 SCI_SOFTWARE_SUSPENSION, NULL, NULL);
178 scic_sds_remote_node_context_resume(device->rnc, 178 scic_sds_remote_node_context_resume(&device->rnc,
179 scic_sds_remote_device_continue_request, 179 scic_sds_remote_device_continue_request,
180 device); 180 device);
181 181
@@ -220,7 +220,7 @@ static enum sci_status scic_sds_stp_remote_device_ready_idle_substate_start_io_h
220 if (status != SCI_SUCCESS) 220 if (status != SCI_SUCCESS)
221 return status; 221 return status;
222 222
223 status = scic_sds_remote_node_context_start_io(sci_dev->rnc, request); 223 status = scic_sds_remote_node_context_start_io(&sci_dev->rnc, request);
224 if (status != SCI_SUCCESS) 224 if (status != SCI_SUCCESS)
225 goto out; 225 goto out;
226 226
@@ -263,7 +263,7 @@ static enum sci_status scic_sds_stp_remote_device_ready_idle_substate_event_hand
263 if (scu_get_event_type(event_code) == SCU_EVENT_TYPE_RNC_SUSPEND_TX 263 if (scu_get_event_type(event_code) == SCU_EVENT_TYPE_RNC_SUSPEND_TX
264 || scu_get_event_type(event_code) == SCU_EVENT_TYPE_RNC_SUSPEND_TX_RX) { 264 || scu_get_event_type(event_code) == SCU_EVENT_TYPE_RNC_SUSPEND_TX_RX) {
265 status = scic_sds_remote_node_context_resume( 265 status = scic_sds_remote_node_context_resume(
266 sci_dev->rnc, NULL, NULL); 266 &sci_dev->rnc, NULL, NULL);
267 } 267 }
268 } 268 }
269 269
@@ -289,19 +289,16 @@ static enum sci_status scic_sds_stp_remote_device_ready_ncq_substate_start_io_ha
289 sci_dev->owning_port, 289 sci_dev->owning_port,
290 sci_dev, 290 sci_dev,
291 request); 291 request);
292 if (status != SCI_SUCCESS)
293 return status;
292 294
293 if (status == SCI_SUCCESS) { 295 status = scic_sds_remote_node_context_start_io(&sci_dev->rnc, request);
294 status = scic_sds_remote_node_context_start_io( 296 if (status != SCI_SUCCESS)
295 sci_dev->rnc, 297 return status;
296 request);
297 298
298 if (status == SCI_SUCCESS) 299 status = request->state_handlers->start_handler(request);
299 status = request->state_handlers->start_handler(request);
300 300
301 scic_sds_remote_device_start_request(sci_dev, 301 scic_sds_remote_device_start_request(sci_dev, request, status);
302 request,
303 status);
304 }
305 } else 302 } else
306 status = SCI_FAILURE_INVALID_STATE; 303 status = SCI_FAILURE_INVALID_STATE;
307 304
@@ -398,9 +395,8 @@ static enum sci_status scic_sds_stp_remote_device_ready_cmd_substate_suspend_han
398{ 395{
399 enum sci_status status; 396 enum sci_status status;
400 397
401 status = scic_sds_remote_node_context_suspend( 398 status = scic_sds_remote_node_context_suspend(&sci_dev->rnc,
402 sci_dev->rnc, suspend_type, NULL, NULL 399 suspend_type, NULL, NULL);
403 );
404 400
405 return status; 401 return status;
406} 402}
@@ -685,7 +681,7 @@ static void scic_sds_stp_remote_device_ready_idle_substate_enter(
685 681
686 sci_dev->working_request = NULL; 682 sci_dev->working_request = NULL;
687 683
688 if (scic_sds_remote_node_context_is_ready(sci_dev->rnc)) { 684 if (scic_sds_remote_node_context_is_ready(&sci_dev->rnc)) {
689 /* 685 /*
690 * Since the RNC is ready, it's alright to finish completion 686 * Since the RNC is ready, it's alright to finish completion
691 * processing (e.g. signal the remote device is ready). */ 687 * processing (e.g. signal the remote device is ready). */
@@ -694,10 +690,9 @@ static void scic_sds_stp_remote_device_ready_idle_substate_enter(
694 ); 690 );
695 } else { 691 } else {
696 scic_sds_remote_node_context_resume( 692 scic_sds_remote_node_context_resume(
697 sci_dev->rnc, 693 &sci_dev->rnc,
698 scic_sds_stp_remote_device_ready_idle_substate_resume_complete_handler, 694 scic_sds_stp_remote_device_ready_idle_substate_resume_complete_handler,
699 sci_dev 695 sci_dev);
700 );
701 } 696 }
702} 697}
703 698