aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/isci/core/scic_sds_port.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/drivers/scsi/isci/core/scic_sds_port.c b/drivers/scsi/isci/core/scic_sds_port.c
index 410c9a104bc0..a41fe426ac26 100644
--- a/drivers/scsi/isci/core/scic_sds_port.c
+++ b/drivers/scsi/isci/core/scic_sds_port.c
@@ -1673,12 +1673,6 @@ static void scic_sds_port_ready_substate_waiting_enter(
1673 1673
1674 scic_sds_port_suspend_port_task_scheduler(this_port); 1674 scic_sds_port_suspend_port_task_scheduler(this_port);
1675 1675
1676 /* Kill the dummy task for this port if it has not yet posted
1677 * the hardware will treat this as a NOP and just return abort
1678 * complete.
1679 */
1680 scic_sds_port_abort_dummy_request(this_port);
1681
1682 this_port->not_ready_reason = SCIC_PORT_NOT_READY_NO_ACTIVE_PHYS; 1676 this_port->not_ready_reason = SCIC_PORT_NOT_READY_NO_ACTIVE_PHYS;
1683 1677
1684 if (this_port->active_phy_mask != 0) { 1678 if (this_port->active_phy_mask != 0) {
@@ -1744,6 +1738,13 @@ static void scic_sds_port_ready_substate_operational_exit(
1744{ 1738{
1745 struct scic_sds_port *this_port = (struct scic_sds_port *)object; 1739 struct scic_sds_port *this_port = (struct scic_sds_port *)object;
1746 1740
1741/*
1742 * Kill the dummy task for this port if it has not yet posted
1743 * the hardware will treat this as a NOP and just return abort
1744 * complete.
1745 */
1746 scic_sds_port_abort_dummy_request(this_port);
1747
1747 isci_event_port_not_ready( 1748 isci_event_port_not_ready(
1748 scic_sds_port_get_controller(this_port), 1749 scic_sds_port_get_controller(this_port),
1749 this_port, 1750 this_port,
@@ -2643,6 +2644,13 @@ void scic_sds_port_invalidate_dummy_remote_node(struct scic_sds_port *sci_port)
2643 2644
2644 rnc->ssp.is_valid = false; 2645 rnc->ssp.is_valid = false;
2645 2646
2647 /* ensure the preceding tc abort request has reached the
2648 * controller and give it ample time to act before posting the rnc
2649 * invalidate
2650 */
2651 SMU_ISR_READ(scic); /* flush */
2652 udelay(10);
2653
2646 command = SCU_CONTEXT_COMMAND_POST_RNC_INVALIDATE | 2654 command = SCU_CONTEXT_COMMAND_POST_RNC_INVALIDATE |
2647 phys_index << SCU_CONTEXT_COMMAND_LOGICAL_PORT_SHIFT | rni; 2655 phys_index << SCU_CONTEXT_COMMAND_LOGICAL_PORT_SHIFT | rni;
2648 2656