aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2011-05-01 17:19:25 -0400
committerDan Williams <dan.j.williams@intel.com>2011-07-03 07:04:45 -0400
commitec5756699b705c179a0680985e3d18a093f93fae (patch)
tree4e0587ebac90db72bb19289abe8b16addbeac516 /drivers
parenteb229671b1310c996dba7b78e21a9a9474edccdc (diff)
isci: unify remote_device stop_handlers
Implement all states in scic_remote_device_stop() and delete the state handlers. Reported-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/isci/remote_device.c254
-rw-r--r--drivers/scsi/isci/remote_device.h6
2 files changed, 83 insertions, 177 deletions
diff --git a/drivers/scsi/isci/remote_device.c b/drivers/scsi/isci/remote_device.c
index 80eccdc1090f..d779939a6175 100644
--- a/drivers/scsi/isci/remote_device.c
+++ b/drivers/scsi/isci/remote_device.c
@@ -129,13 +129,91 @@ static void isci_remote_device_ready(struct isci_host *ihost, struct isci_remote
129 wake_up(&ihost->eventq); 129 wake_up(&ihost->eventq);
130} 130}
131 131
132/* called once the remote node context is ready to be freed.
133 * The remote device can now report that its stop operation is complete. none
134 */
135static void rnc_destruct_done(void *_dev)
136{
137 struct scic_sds_remote_device *sci_dev = _dev;
132 138
139 BUG_ON(sci_dev->started_request_count != 0);
140 sci_base_state_machine_change_state(&sci_dev->state_machine,
141 SCI_BASE_REMOTE_DEVICE_STATE_STOPPED);
142}
133 143
134enum sci_status scic_remote_device_stop( 144static enum sci_status scic_sds_remote_device_terminate_requests(struct scic_sds_remote_device *sci_dev)
135 struct scic_sds_remote_device *sci_dev,
136 u32 timeout)
137{ 145{
138 return sci_dev->state_handlers->stop_handler(sci_dev); 146 struct scic_sds_controller *scic = sci_dev->owning_port->owning_controller;
147 u32 i, request_count = sci_dev->started_request_count;
148 enum sci_status status = SCI_SUCCESS;
149
150 for (i = 0; i < SCI_MAX_IO_REQUESTS && i < request_count; i++) {
151 struct scic_sds_request *sci_req;
152 enum sci_status s;
153
154 sci_req = scic->io_request_table[i];
155 if (!sci_req || sci_req->target_device != sci_dev)
156 continue;
157 s = scic_controller_terminate_request(scic, sci_dev, sci_req);
158 if (s != SCI_SUCCESS)
159 status = s;
160 }
161
162 return status;
163}
164
165enum sci_status scic_remote_device_stop(struct scic_sds_remote_device *sci_dev,
166 u32 timeout)
167{
168 struct sci_base_state_machine *sm = &sci_dev->state_machine;
169 enum scic_sds_remote_device_states state = sm->current_state_id;
170
171 switch (state) {
172 case SCI_BASE_REMOTE_DEVICE_STATE_INITIAL:
173 case SCI_BASE_REMOTE_DEVICE_STATE_FAILED:
174 case SCI_BASE_REMOTE_DEVICE_STATE_FINAL:
175 default:
176 dev_warn(scirdev_to_dev(sci_dev), "%s: in wrong state: %d\n",
177 __func__, state);
178 return SCI_FAILURE_INVALID_STATE;
179 case SCI_BASE_REMOTE_DEVICE_STATE_STOPPED:
180 return SCI_SUCCESS;
181 case SCI_BASE_REMOTE_DEVICE_STATE_STARTING:
182 /* device not started so there had better be no requests */
183 BUG_ON(sci_dev->started_request_count != 0);
184 scic_sds_remote_node_context_destruct(&sci_dev->rnc,
185 rnc_destruct_done, sci_dev);
186 /* Transition to the stopping state and wait for the
187 * remote node to complete being posted and invalidated.
188 */
189 sci_base_state_machine_change_state(sm, SCI_BASE_REMOTE_DEVICE_STATE_STOPPING);
190 return SCI_SUCCESS;
191 case SCI_BASE_REMOTE_DEVICE_STATE_READY:
192 case SCIC_SDS_STP_REMOTE_DEVICE_READY_SUBSTATE_IDLE:
193 case SCIC_SDS_STP_REMOTE_DEVICE_READY_SUBSTATE_CMD:
194 case SCIC_SDS_STP_REMOTE_DEVICE_READY_SUBSTATE_NCQ:
195 case SCIC_SDS_STP_REMOTE_DEVICE_READY_SUBSTATE_NCQ_ERROR:
196 case SCIC_SDS_STP_REMOTE_DEVICE_READY_SUBSTATE_AWAIT_RESET:
197 case SCIC_SDS_SMP_REMOTE_DEVICE_READY_SUBSTATE_IDLE:
198 case SCIC_SDS_SMP_REMOTE_DEVICE_READY_SUBSTATE_CMD:
199 sci_base_state_machine_change_state(sm, SCI_BASE_REMOTE_DEVICE_STATE_STOPPING);
200 if (sci_dev->started_request_count == 0) {
201 scic_sds_remote_node_context_destruct(&sci_dev->rnc,
202 rnc_destruct_done, sci_dev);
203 return SCI_SUCCESS;
204 } else
205 return scic_sds_remote_device_terminate_requests(sci_dev);
206 break;
207 case SCI_BASE_REMOTE_DEVICE_STATE_STOPPING:
208 /* All requests should have been terminated, but if there is an
209 * attempt to stop a device already in the stopping state, then
210 * try again to terminate.
211 */
212 return scic_sds_remote_device_terminate_requests(sci_dev);
213 case SCI_BASE_REMOTE_DEVICE_STATE_RESETTING:
214 sci_base_state_machine_change_state(sm, SCI_BASE_REMOTE_DEVICE_STATE_STOPPING);
215 return SCI_SUCCESS;
216 }
139} 217}
140 218
141 219
@@ -275,18 +353,6 @@ void scic_sds_remote_device_post_request(
275 ); 353 );
276} 354}
277 355
278/* called once the remote node context is ready to be freed.
279 * The remote device can now report that its stop operation is complete. none
280 */
281static void scic_sds_cb_remote_device_rnc_destruct_complete(void *_dev)
282{
283 struct scic_sds_remote_device *sci_dev = _dev;
284
285 BUG_ON(sci_dev->started_request_count != 0);
286 sci_base_state_machine_change_state(&sci_dev->state_machine,
287 SCI_BASE_REMOTE_DEVICE_STATE_STOPPED);
288}
289
290/* called once the remote node context has transisitioned to a 356/* called once the remote node context has transisitioned to a
291 * ready state. This is the indication that the remote device object can also 357 * ready state. This is the indication that the remote device object can also
292 * transition to ready. 358 * transition to ready.
@@ -358,47 +424,6 @@ static void scic_sds_remote_device_continue_request(void *dev)
358 scic_controller_continue_io(sci_dev->working_request); 424 scic_controller_continue_io(sci_dev->working_request);
359} 425}
360 426
361/**
362 * This method will terminate all of the IO requests in the controllers IO
363 * request table that were targeted for this device.
364 * @sci_dev: This parameter specifies the remote device for which to
365 * attempt to terminate all requests.
366 *
367 * This method returns an indication as to whether all requests were
368 * successfully terminated. If a single request fails to be terminated, then
369 * this method will return the failure.
370 */
371static enum sci_status scic_sds_remote_device_terminate_requests(
372 struct scic_sds_remote_device *sci_dev)
373{
374 enum sci_status status = SCI_SUCCESS;
375 enum sci_status terminate_status = SCI_SUCCESS;
376 struct scic_sds_request *sci_req;
377 u32 index;
378 u32 request_count = sci_dev->started_request_count;
379
380 for (index = 0;
381 (index < SCI_MAX_IO_REQUESTS) && (request_count > 0);
382 index++) {
383 sci_req = sci_dev->owning_port->owning_controller->io_request_table[index];
384
385 if ((sci_req != NULL) && (sci_req->target_device == sci_dev)) {
386 terminate_status = scic_controller_terminate_request(
387 sci_dev->owning_port->owning_controller,
388 sci_dev,
389 sci_req
390 );
391
392 if (terminate_status != SCI_SUCCESS)
393 status = terminate_status;
394
395 request_count--;
396 }
397 }
398
399 return status;
400}
401
402static enum sci_status 427static enum sci_status
403default_device_handler(struct scic_sds_remote_device *sci_dev, 428default_device_handler(struct scic_sds_remote_device *sci_dev,
404 const char *func) 429 const char *func)
@@ -409,12 +434,6 @@ default_device_handler(struct scic_sds_remote_device *sci_dev,
409 return SCI_FAILURE_INVALID_STATE; 434 return SCI_FAILURE_INVALID_STATE;
410} 435}
411 436
412static enum sci_status scic_sds_remote_device_default_stop_handler(
413 struct scic_sds_remote_device *sci_dev)
414{
415 return default_device_handler(sci_dev, __func__);
416}
417
418static enum sci_status scic_sds_remote_device_default_fail_handler( 437static enum sci_status scic_sds_remote_device_default_fail_handler(
419 struct scic_sds_remote_device *sci_dev) 438 struct scic_sds_remote_device *sci_dev)
420{ 439{
@@ -646,12 +665,6 @@ static enum sci_status scic_sds_remote_device_general_event_handler(
646 true); 665 true);
647} 666}
648 667
649static enum sci_status scic_sds_remote_device_stopped_state_stop_handler(
650 struct scic_sds_remote_device *sci_dev)
651{
652 return SCI_SUCCESS;
653}
654
655/** 668/**
656 * 669 *
657 * @sci_dev: The struct scic_sds_remote_device which is cast into a 670 * @sci_dev: The struct scic_sds_remote_device which is cast into a
@@ -679,54 +692,6 @@ static enum sci_status scic_sds_remote_device_stopped_state_destruct_handler(
679 return SCI_SUCCESS; 692 return SCI_SUCCESS;
680} 693}
681 694
682/*
683 * *****************************************************************************
684 * * STARTING STATE HANDLERS
685 * ***************************************************************************** */
686
687static enum sci_status scic_sds_remote_device_starting_state_stop_handler(
688 struct scic_sds_remote_device *sci_dev)
689{
690 /*
691 * This device has not yet started so there had better be no IO requests
692 */
693 BUG_ON(sci_dev->started_request_count != 0);
694
695 /*
696 * Destroy the remote node context
697 */
698 scic_sds_remote_node_context_destruct(&sci_dev->rnc,
699 scic_sds_cb_remote_device_rnc_destruct_complete, sci_dev);
700
701 /*
702 * Transition to the stopping state and wait for the remote node to
703 * complete being posted and invalidated.
704 */
705 sci_base_state_machine_change_state(&sci_dev->state_machine,
706 SCI_BASE_REMOTE_DEVICE_STATE_STOPPING);
707
708 return SCI_SUCCESS;
709}
710
711static enum sci_status scic_sds_remote_device_ready_state_stop_handler(
712 struct scic_sds_remote_device *sci_dev)
713{
714 enum sci_status status = SCI_SUCCESS;
715
716 /* Request the parent state machine to transition to the stopping state */
717 sci_base_state_machine_change_state(&sci_dev->state_machine,
718 SCI_BASE_REMOTE_DEVICE_STATE_STOPPING);
719
720 if (sci_dev->started_request_count == 0) {
721 scic_sds_remote_node_context_destruct(&sci_dev->rnc,
722 scic_sds_cb_remote_device_rnc_destruct_complete,
723 sci_dev);
724 } else
725 status = scic_sds_remote_device_terminate_requests(sci_dev);
726
727 return status;
728}
729
730/** 695/**
731 * 696 *
732 * @device: The struct scic_sds_remote_device object which is cast to a 697 * @device: The struct scic_sds_remote_device object which is cast to a
@@ -832,32 +797,6 @@ static enum sci_status scic_sds_remote_device_ready_state_complete_request_handl
832 return result; 797 return result;
833} 798}
834 799
835/*
836 * *****************************************************************************
837 * * STOPPING STATE HANDLERS
838 * ***************************************************************************** */
839
840/**
841 *
842 * @sci_dev: The struct scic_sds_remote_device which is cast into a
843 * struct scic_sds_remote_device.
844 *
845 * This method will stop a struct scic_sds_remote_device that is already in the
846 * SCI_BASE_REMOTE_DEVICE_STATE_STOPPING state. This is not considered an error
847 * since we allow a stop request on a device that is alreay stopping or
848 * stopped. enum sci_status SCI_SUCCESS
849 */
850static enum sci_status scic_sds_remote_device_stopping_state_stop_handler(
851 struct scic_sds_remote_device *device)
852{
853 /*
854 * All requests should have been terminated, but if there is an
855 * attempt to stop a device already in the stopping state, then
856 * try again to terminate. */
857 return scic_sds_remote_device_terminate_requests(device);
858}
859
860
861/** 800/**
862 * 801 *
863 * @device: The device object for which the request is completing. 802 * @device: The device object for which the request is completing.
@@ -891,8 +830,7 @@ static enum sci_status scic_sds_remote_device_stopping_state_complete_request_ha
891 830
892 if (scic_sds_remote_device_get_request_count(sci_dev) == 0) 831 if (scic_sds_remote_device_get_request_count(sci_dev) == 0)
893 scic_sds_remote_node_context_destruct(&sci_dev->rnc, 832 scic_sds_remote_node_context_destruct(&sci_dev->rnc,
894 scic_sds_cb_remote_device_rnc_destruct_complete, 833 rnc_destruct_done, sci_dev);
895 sci_dev);
896 return SCI_SUCCESS; 834 return SCI_SUCCESS;
897} 835}
898 836
@@ -905,17 +843,6 @@ static enum sci_status scic_sds_remote_device_resetting_state_reset_complete_han
905 return SCI_SUCCESS; 843 return SCI_SUCCESS;
906} 844}
907 845
908static enum sci_status scic_sds_remote_device_resetting_state_stop_handler(
909 struct scic_sds_remote_device *sci_dev)
910{
911 sci_base_state_machine_change_state(
912 &sci_dev->state_machine,
913 SCI_BASE_REMOTE_DEVICE_STATE_STOPPING
914 );
915
916 return SCI_SUCCESS;
917}
918
919/* complete requests for this device while it is in the 846/* complete requests for this device while it is in the
920 * SCI_BASE_REMOTE_DEVICE_STATE_RESETTING state. This method calls the complete 847 * SCI_BASE_REMOTE_DEVICE_STATE_RESETTING state. This method calls the complete
921 * method for the request object and if that is successful the port object is 848 * method for the request object and if that is successful the port object is
@@ -1335,7 +1262,6 @@ static enum sci_status scic_sds_smp_remote_device_ready_cmd_substate_frame_handl
1335 1262
1336static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_state_handler_table[] = { 1263static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_state_handler_table[] = {
1337 [SCI_BASE_REMOTE_DEVICE_STATE_INITIAL] = { 1264 [SCI_BASE_REMOTE_DEVICE_STATE_INITIAL] = {
1338 .stop_handler = scic_sds_remote_device_default_stop_handler,
1339 .fail_handler = scic_sds_remote_device_default_fail_handler, 1265 .fail_handler = scic_sds_remote_device_default_fail_handler,
1340 .destruct_handler = scic_sds_remote_device_default_destruct_handler, 1266 .destruct_handler = scic_sds_remote_device_default_destruct_handler,
1341 .reset_handler = scic_sds_remote_device_default_reset_handler, 1267 .reset_handler = scic_sds_remote_device_default_reset_handler,
@@ -1351,7 +1277,6 @@ static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_
1351 .frame_handler = scic_sds_remote_device_default_frame_handler 1277 .frame_handler = scic_sds_remote_device_default_frame_handler
1352 }, 1278 },
1353 [SCI_BASE_REMOTE_DEVICE_STATE_STOPPED] = { 1279 [SCI_BASE_REMOTE_DEVICE_STATE_STOPPED] = {
1354 .stop_handler = scic_sds_remote_device_stopped_state_stop_handler,
1355 .fail_handler = scic_sds_remote_device_default_fail_handler, 1280 .fail_handler = scic_sds_remote_device_default_fail_handler,
1356 .destruct_handler = scic_sds_remote_device_stopped_state_destruct_handler, 1281 .destruct_handler = scic_sds_remote_device_stopped_state_destruct_handler,
1357 .reset_handler = scic_sds_remote_device_default_reset_handler, 1282 .reset_handler = scic_sds_remote_device_default_reset_handler,
@@ -1367,7 +1292,6 @@ static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_
1367 .frame_handler = scic_sds_remote_device_default_frame_handler 1292 .frame_handler = scic_sds_remote_device_default_frame_handler
1368 }, 1293 },
1369 [SCI_BASE_REMOTE_DEVICE_STATE_STARTING] = { 1294 [SCI_BASE_REMOTE_DEVICE_STATE_STARTING] = {
1370 .stop_handler = scic_sds_remote_device_starting_state_stop_handler,
1371 .fail_handler = scic_sds_remote_device_default_fail_handler, 1295 .fail_handler = scic_sds_remote_device_default_fail_handler,
1372 .destruct_handler = scic_sds_remote_device_default_destruct_handler, 1296 .destruct_handler = scic_sds_remote_device_default_destruct_handler,
1373 .reset_handler = scic_sds_remote_device_default_reset_handler, 1297 .reset_handler = scic_sds_remote_device_default_reset_handler,
@@ -1383,7 +1307,6 @@ static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_
1383 .frame_handler = scic_sds_remote_device_default_frame_handler 1307 .frame_handler = scic_sds_remote_device_default_frame_handler
1384 }, 1308 },
1385 [SCI_BASE_REMOTE_DEVICE_STATE_READY] = { 1309 [SCI_BASE_REMOTE_DEVICE_STATE_READY] = {
1386 .stop_handler = scic_sds_remote_device_ready_state_stop_handler,
1387 .fail_handler = scic_sds_remote_device_default_fail_handler, 1310 .fail_handler = scic_sds_remote_device_default_fail_handler,
1388 .destruct_handler = scic_sds_remote_device_default_destruct_handler, 1311 .destruct_handler = scic_sds_remote_device_default_destruct_handler,
1389 .reset_handler = scic_sds_remote_device_ready_state_reset_handler, 1312 .reset_handler = scic_sds_remote_device_ready_state_reset_handler,
@@ -1399,7 +1322,6 @@ static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_
1399 .frame_handler = scic_sds_remote_device_general_frame_handler, 1322 .frame_handler = scic_sds_remote_device_general_frame_handler,
1400 }, 1323 },
1401 [SCIC_SDS_STP_REMOTE_DEVICE_READY_SUBSTATE_IDLE] = { 1324 [SCIC_SDS_STP_REMOTE_DEVICE_READY_SUBSTATE_IDLE] = {
1402 .stop_handler = scic_sds_remote_device_ready_state_stop_handler,
1403 .fail_handler = scic_sds_remote_device_default_fail_handler, 1325 .fail_handler = scic_sds_remote_device_default_fail_handler,
1404 .destruct_handler = scic_sds_remote_device_default_destruct_handler, 1326 .destruct_handler = scic_sds_remote_device_default_destruct_handler,
1405 .reset_handler = scic_sds_remote_device_ready_state_reset_handler, 1327 .reset_handler = scic_sds_remote_device_ready_state_reset_handler,
@@ -1415,7 +1337,6 @@ static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_
1415 .frame_handler = scic_sds_remote_device_default_frame_handler 1337 .frame_handler = scic_sds_remote_device_default_frame_handler
1416 }, 1338 },
1417 [SCIC_SDS_STP_REMOTE_DEVICE_READY_SUBSTATE_CMD] = { 1339 [SCIC_SDS_STP_REMOTE_DEVICE_READY_SUBSTATE_CMD] = {
1418 .stop_handler = scic_sds_remote_device_ready_state_stop_handler,
1419 .fail_handler = scic_sds_remote_device_default_fail_handler, 1340 .fail_handler = scic_sds_remote_device_default_fail_handler,
1420 .destruct_handler = scic_sds_remote_device_default_destruct_handler, 1341 .destruct_handler = scic_sds_remote_device_default_destruct_handler,
1421 .reset_handler = scic_sds_remote_device_ready_state_reset_handler, 1342 .reset_handler = scic_sds_remote_device_ready_state_reset_handler,
@@ -1431,7 +1352,6 @@ static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_
1431 .frame_handler = scic_sds_stp_remote_device_ready_cmd_substate_frame_handler 1352 .frame_handler = scic_sds_stp_remote_device_ready_cmd_substate_frame_handler
1432 }, 1353 },
1433 [SCIC_SDS_STP_REMOTE_DEVICE_READY_SUBSTATE_NCQ] = { 1354 [SCIC_SDS_STP_REMOTE_DEVICE_READY_SUBSTATE_NCQ] = {
1434 .stop_handler = scic_sds_remote_device_ready_state_stop_handler,
1435 .fail_handler = scic_sds_remote_device_default_fail_handler, 1355 .fail_handler = scic_sds_remote_device_default_fail_handler,
1436 .destruct_handler = scic_sds_remote_device_default_destruct_handler, 1356 .destruct_handler = scic_sds_remote_device_default_destruct_handler,
1437 .reset_handler = scic_sds_remote_device_ready_state_reset_handler, 1357 .reset_handler = scic_sds_remote_device_ready_state_reset_handler,
@@ -1447,7 +1367,6 @@ static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_
1447 .frame_handler = scic_sds_stp_remote_device_ready_ncq_substate_frame_handler 1367 .frame_handler = scic_sds_stp_remote_device_ready_ncq_substate_frame_handler
1448 }, 1368 },
1449 [SCIC_SDS_STP_REMOTE_DEVICE_READY_SUBSTATE_NCQ_ERROR] = { 1369 [SCIC_SDS_STP_REMOTE_DEVICE_READY_SUBSTATE_NCQ_ERROR] = {
1450 .stop_handler = scic_sds_remote_device_ready_state_stop_handler,
1451 .fail_handler = scic_sds_remote_device_default_fail_handler, 1370 .fail_handler = scic_sds_remote_device_default_fail_handler,
1452 .destruct_handler = scic_sds_remote_device_default_destruct_handler, 1371 .destruct_handler = scic_sds_remote_device_default_destruct_handler,
1453 .reset_handler = scic_sds_remote_device_ready_state_reset_handler, 1372 .reset_handler = scic_sds_remote_device_ready_state_reset_handler,
@@ -1463,7 +1382,6 @@ static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_
1463 .frame_handler = scic_sds_remote_device_general_frame_handler 1382 .frame_handler = scic_sds_remote_device_general_frame_handler
1464 }, 1383 },
1465 [SCIC_SDS_STP_REMOTE_DEVICE_READY_SUBSTATE_AWAIT_RESET] = { 1384 [SCIC_SDS_STP_REMOTE_DEVICE_READY_SUBSTATE_AWAIT_RESET] = {
1466 .stop_handler = scic_sds_remote_device_ready_state_stop_handler,
1467 .fail_handler = scic_sds_remote_device_default_fail_handler, 1385 .fail_handler = scic_sds_remote_device_default_fail_handler,
1468 .destruct_handler = scic_sds_remote_device_default_destruct_handler, 1386 .destruct_handler = scic_sds_remote_device_default_destruct_handler,
1469 .reset_handler = scic_sds_remote_device_ready_state_reset_handler, 1387 .reset_handler = scic_sds_remote_device_ready_state_reset_handler,
@@ -1479,7 +1397,6 @@ static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_
1479 .frame_handler = scic_sds_remote_device_general_frame_handler 1397 .frame_handler = scic_sds_remote_device_general_frame_handler
1480 }, 1398 },
1481 [SCIC_SDS_SMP_REMOTE_DEVICE_READY_SUBSTATE_IDLE] = { 1399 [SCIC_SDS_SMP_REMOTE_DEVICE_READY_SUBSTATE_IDLE] = {
1482 .stop_handler = scic_sds_remote_device_ready_state_stop_handler,
1483 .fail_handler = scic_sds_remote_device_default_fail_handler, 1400 .fail_handler = scic_sds_remote_device_default_fail_handler,
1484 .destruct_handler = scic_sds_remote_device_default_destruct_handler, 1401 .destruct_handler = scic_sds_remote_device_default_destruct_handler,
1485 .reset_handler = scic_sds_remote_device_default_reset_handler, 1402 .reset_handler = scic_sds_remote_device_default_reset_handler,
@@ -1495,7 +1412,6 @@ static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_
1495 .frame_handler = scic_sds_remote_device_default_frame_handler 1412 .frame_handler = scic_sds_remote_device_default_frame_handler
1496 }, 1413 },
1497 [SCIC_SDS_SMP_REMOTE_DEVICE_READY_SUBSTATE_CMD] = { 1414 [SCIC_SDS_SMP_REMOTE_DEVICE_READY_SUBSTATE_CMD] = {
1498 .stop_handler = scic_sds_remote_device_ready_state_stop_handler,
1499 .fail_handler = scic_sds_remote_device_default_fail_handler, 1415 .fail_handler = scic_sds_remote_device_default_fail_handler,
1500 .destruct_handler = scic_sds_remote_device_default_destruct_handler, 1416 .destruct_handler = scic_sds_remote_device_default_destruct_handler,
1501 .reset_handler = scic_sds_remote_device_default_reset_handler, 1417 .reset_handler = scic_sds_remote_device_default_reset_handler,
@@ -1511,7 +1427,6 @@ static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_
1511 .frame_handler = scic_sds_smp_remote_device_ready_cmd_substate_frame_handler 1427 .frame_handler = scic_sds_smp_remote_device_ready_cmd_substate_frame_handler
1512 }, 1428 },
1513 [SCI_BASE_REMOTE_DEVICE_STATE_STOPPING] = { 1429 [SCI_BASE_REMOTE_DEVICE_STATE_STOPPING] = {
1514 .stop_handler = scic_sds_remote_device_stopping_state_stop_handler,
1515 .fail_handler = scic_sds_remote_device_default_fail_handler, 1430 .fail_handler = scic_sds_remote_device_default_fail_handler,
1516 .destruct_handler = scic_sds_remote_device_default_destruct_handler, 1431 .destruct_handler = scic_sds_remote_device_default_destruct_handler,
1517 .reset_handler = scic_sds_remote_device_default_reset_handler, 1432 .reset_handler = scic_sds_remote_device_default_reset_handler,
@@ -1527,7 +1442,6 @@ static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_
1527 .frame_handler = scic_sds_remote_device_general_frame_handler 1442 .frame_handler = scic_sds_remote_device_general_frame_handler
1528 }, 1443 },
1529 [SCI_BASE_REMOTE_DEVICE_STATE_FAILED] = { 1444 [SCI_BASE_REMOTE_DEVICE_STATE_FAILED] = {
1530 .stop_handler = scic_sds_remote_device_default_stop_handler,
1531 .fail_handler = scic_sds_remote_device_default_fail_handler, 1445 .fail_handler = scic_sds_remote_device_default_fail_handler,
1532 .destruct_handler = scic_sds_remote_device_default_destruct_handler, 1446 .destruct_handler = scic_sds_remote_device_default_destruct_handler,
1533 .reset_handler = scic_sds_remote_device_default_reset_handler, 1447 .reset_handler = scic_sds_remote_device_default_reset_handler,
@@ -1543,7 +1457,6 @@ static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_
1543 .frame_handler = scic_sds_remote_device_general_frame_handler 1457 .frame_handler = scic_sds_remote_device_general_frame_handler
1544 }, 1458 },
1545 [SCI_BASE_REMOTE_DEVICE_STATE_RESETTING] = { 1459 [SCI_BASE_REMOTE_DEVICE_STATE_RESETTING] = {
1546 .stop_handler = scic_sds_remote_device_resetting_state_stop_handler,
1547 .fail_handler = scic_sds_remote_device_default_fail_handler, 1460 .fail_handler = scic_sds_remote_device_default_fail_handler,
1548 .destruct_handler = scic_sds_remote_device_default_destruct_handler, 1461 .destruct_handler = scic_sds_remote_device_default_destruct_handler,
1549 .reset_handler = scic_sds_remote_device_default_reset_handler, 1462 .reset_handler = scic_sds_remote_device_default_reset_handler,
@@ -1559,7 +1472,6 @@ static const struct scic_sds_remote_device_state_handler scic_sds_remote_device_
1559 .frame_handler = scic_sds_remote_device_general_frame_handler 1472 .frame_handler = scic_sds_remote_device_general_frame_handler
1560 }, 1473 },
1561 [SCI_BASE_REMOTE_DEVICE_STATE_FINAL] = { 1474 [SCI_BASE_REMOTE_DEVICE_STATE_FINAL] = {
1562 .stop_handler = scic_sds_remote_device_default_stop_handler,
1563 .fail_handler = scic_sds_remote_device_default_fail_handler, 1475 .fail_handler = scic_sds_remote_device_default_fail_handler,
1564 .destruct_handler = scic_sds_remote_device_default_destruct_handler, 1476 .destruct_handler = scic_sds_remote_device_default_destruct_handler,
1565 .reset_handler = scic_sds_remote_device_default_reset_handler, 1477 .reset_handler = scic_sds_remote_device_default_reset_handler,
diff --git a/drivers/scsi/isci/remote_device.h b/drivers/scsi/isci/remote_device.h
index b778e0b49e33..ca8c5d16f790 100644
--- a/drivers/scsi/isci/remote_device.h
+++ b/drivers/scsi/isci/remote_device.h
@@ -387,12 +387,6 @@ typedef void (*scic_sds_remote_device_ready_not_ready_handler_t)(
387 */ 387 */
388struct scic_sds_remote_device_state_handler { 388struct scic_sds_remote_device_state_handler {
389 /** 389 /**
390 * The stop_handler specifies the method invoked when a user attempts to
391 * stop a remote device.
392 */
393 scic_sds_remote_device_handler_t stop_handler;
394
395 /**
396 * The fail_handler specifies the method invoked when a remote device 390 * The fail_handler specifies the method invoked when a remote device
397 * failure has occurred. A failure may be due to an inability to 391 * failure has occurred. A failure may be due to an inability to
398 * initialize/configure the device. 392 * initialize/configure the device.