isci: Fix RNC suspend call for SCI_RESUMING state.
[firefly-linux-kernel-4.4.55.git] / drivers / scsi / isci / remote_node_context.c
index faeae9554ee39bc4f10a9d88176703abfc898b5a..b698081ce2ddc923e2e93f78b3befa3efb23e1ff 100644 (file)
@@ -321,8 +321,6 @@ static void sci_remote_node_context_ready_state_enter(struct sci_base_state_mach
 {
        struct sci_remote_node_context *rnc = container_of(sm, typeof(*rnc), sm);
        enum sci_remote_node_context_destination_state dest_select;
-       scics_sds_remote_node_context_callback usr_cb = rnc->user_callback;
-       void *usr_param = rnc->user_cookie;
        int tell_user = 1;
 
        dest_select = rnc->destination_state;
@@ -334,12 +332,10 @@ static void sci_remote_node_context_ready_state_enter(struct sci_base_state_mach
                        rnc, rnc->suspend_reason,
                        SCI_SOFTWARE_SUSPEND_EXPECTED_EVENT);
 
-               if (dest_select == RNC_DEST_SUSPENDED_RESUME) {
-                       sci_remote_node_context_resume(rnc, usr_cb, usr_param);
+               if (dest_select == RNC_DEST_SUSPENDED_RESUME)
                        tell_user = 0;  /* Wait until ready again. */
-               }
        }
-       if (tell_user && rnc->user_callback)
+       if (tell_user)
                sci_remote_node_context_notify_user(rnc);
 }
 
@@ -584,8 +580,6 @@ enum sci_status sci_remote_node_context_suspend(
                dest_param = sci_rnc->destination_state;
 
        switch (state) {
-       case SCI_RNC_RESUMING:
-               break;  /* The RNC has been posted, so start the suspend. */
        case SCI_RNC_READY:
                break;
        case SCI_RNC_INVALIDATING:
@@ -596,6 +590,8 @@ enum sci_status sci_remote_node_context_suspend(
                        return SCI_FAILURE_INVALID_STATE;
                }
                /* Fall through and handle like SCI_RNC_POSTING */
+       case SCI_RNC_RESUMING:
+               /* Fall through and handle like SCI_RNC_POSTING */
        case SCI_RNC_POSTING:
                /* Set the destination state to AWAIT - this signals the
                 * entry into the SCI_RNC_READY state that a suspension