summary refs log tree commit diff
path: root/drivers/scsi/isci/port_config.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2011-06-29 13:09:25 -0700
committerDan Williams <dan.j.williams@intel.com>2011-07-03 04:04:52 -0700
commitffe191c92ff195d73f9130b1490045ca2dd4c5e0 (patch)
treec14a78903734b7f5e662e7cf49db4d7fd24e4d71 /drivers/scsi/isci/port_config.c
parent76802ce6756d605fbd7a9a43c196e9a471b3e57c (diff)
downloadlinux-ffe191c92ff195d73f9130b1490045ca2dd4c5e0.tar.gz
isci: unify isci_port and scic_sds_port
Remove the distinction between these two implementations and unify on
isci_port (local instances named iport).  The duplicate '->owning_port' and
'->isci_port' in both isci_phy and isci_remote_device will be fixed in a later
patch... this is just the straightforward rename/unification.

Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci/port_config.c')
-rw-r--r--drivers/scsi/isci/port_config.c99
1 files changed, 47 insertions, 52 deletions
diff --git a/drivers/scsi/isci/port_config.c b/drivers/scsi/isci/port_config.c
index 8444fd8219dd..bb62d2a25217 100644
--- a/drivers/scsi/isci/port_config.c
+++ b/drivers/scsi/isci/port_config.c
@@ -112,7 +112,7 @@ static s32 sci_sas_address_compare(
  * port. port address if the port can be found to match the phy.
  * NULL if there is no matching port for the phy.
  */
-static struct scic_sds_port *scic_sds_port_configuration_agent_find_port(
+static struct isci_port *scic_sds_port_configuration_agent_find_port(
 	struct scic_sds_controller *scic,
 	struct isci_phy *iphy)
 {
@@ -132,14 +132,14 @@ static struct scic_sds_port *scic_sds_port_configuration_agent_find_port(
 
 	for (i = 0; i < scic->logical_port_entries; i++) {
 		struct isci_host *ihost = scic_to_ihost(scic);
-		struct scic_sds_port *sci_port = &ihost->ports[i].sci;
+		struct isci_port *iport = &ihost->ports[i];
 
-		scic_sds_port_get_sas_address(sci_port, &port_sas_address);
-		scic_sds_port_get_attached_sas_address(sci_port, &port_attached_device_address);
+		scic_sds_port_get_sas_address(iport, &port_sas_address);
+		scic_sds_port_get_attached_sas_address(iport, &port_attached_device_address);
 
 		if (sci_sas_address_compare(port_sas_address, phy_sas_address) == 0 &&
 		    sci_sas_address_compare(port_attached_device_address, phy_attached_device_address) == 0)
-			return sci_port;
+			return iport;
 	}
 
 	return NULL;
@@ -315,7 +315,7 @@ static enum sci_status scic_sds_mpc_agent_validate_phy_configuration(
 			port_agent->phy_valid_port_range[phy_index].min_index = port_index;
 			port_agent->phy_valid_port_range[phy_index].max_index = phy_index;
 
-			scic_sds_port_add_phy(&ihost->ports[port_index].sci,
+			scic_sds_port_add_phy(&ihost->ports[port_index],
 					      &ihost->phys[phy_index]);
 
 			assigned_phy_mask |= (1 << phy_index);
@@ -367,22 +367,20 @@ done:
 
 static void scic_sds_mpc_agent_link_up(struct scic_sds_controller *controller,
 				       struct scic_sds_port_configuration_agent *port_agent,
-				       struct scic_sds_port *port,
+				       struct isci_port *iport,
 				       struct isci_phy *iphy)
 {
-	/* If the port has an invalid handle then the phy was not assigned to
-	 * a port.  This is because the phy was not given the same SAS Address
-	 * as the other PHYs in the port.
+	/* If the port is NULL then the phy was not assigned to a port.
+	 * This is because the phy was not given the same SAS Address as
+	 * the other PHYs in the port.
 	 */
-	if (port != NULL) {
-		port_agent->phy_ready_mask |= (1 << scic_sds_phy_get_index(iphy));
-
-		scic_sds_port_link_up(port, iphy);
+	if (!iport)
+		return;
 
-		if ((port->active_phy_mask & (1 << scic_sds_phy_get_index(iphy))) != 0) {
-			port_agent->phy_configured_mask |= (1 << scic_sds_phy_get_index(iphy));
-		}
-	}
+	port_agent->phy_ready_mask |= (1 << scic_sds_phy_get_index(iphy));
+	scic_sds_port_link_up(iport, iphy);
+	if ((iport->active_phy_mask & (1 << scic_sds_phy_get_index(iphy))))
+		port_agent->phy_configured_mask |= (1 << scic_sds_phy_get_index(iphy));
 }
 
 /**
@@ -405,10 +403,10 @@ static void scic_sds_mpc_agent_link_up(struct scic_sds_controller *controller,
 static void scic_sds_mpc_agent_link_down(
 	struct scic_sds_controller *scic,
 	struct scic_sds_port_configuration_agent *port_agent,
-	struct scic_sds_port *sci_port,
+	struct isci_port *iport,
 	struct isci_phy *iphy)
 {
-	if (sci_port != NULL) {
+	if (iport != NULL) {
 		/*
 		 * If we can form a new port from the remainder of the phys
 		 * then we want to start the timer to allow the SCI User to
@@ -436,7 +434,7 @@ static void scic_sds_mpc_agent_link_down(
 				      SCIC_SDS_MPC_RECONFIGURATION_TIMEOUT);
 		}
 
-		scic_sds_port_link_down(sci_port, iphy);
+		scic_sds_port_link_down(iport, iphy);
 	}
 }
 
@@ -496,14 +494,14 @@ static void scic_sds_apc_agent_configure_ports(struct scic_sds_controller *contr
 {
 	u8 port_index;
 	enum sci_status status;
-	struct scic_sds_port *port;
+	struct isci_port *iport;
 	enum SCIC_SDS_APC_ACTIVITY apc_activity = SCIC_SDS_APC_SKIP_PHY;
 	struct isci_host *ihost = scic_to_ihost(controller);
 
-	port = scic_sds_port_configuration_agent_find_port(controller, iphy);
+	iport = scic_sds_port_configuration_agent_find_port(controller, iphy);
 
-	if (port != NULL) {
-		if (scic_sds_port_is_valid_phy_assignment(port, iphy->phy_index))
+	if (iport) {
+		if (scic_sds_port_is_valid_phy_assignment(iport, iphy->phy_index))
 			apc_activity = SCIC_SDS_APC_ADD_PHY;
 		else
 			apc_activity = SCIC_SDS_APC_SKIP_PHY;
@@ -514,21 +512,19 @@ static void scic_sds_apc_agent_configure_ports(struct scic_sds_controller *contr
 		 * the timer and wait to see if a wider port can be made.
 		 *
 		 * Note the break when we reach the condition of the port id == phy id */
-		for (
-			port_index = port_agent->phy_valid_port_range[iphy->phy_index].min_index;
-			port_index <= port_agent->phy_valid_port_range[iphy->phy_index].max_index;
-			port_index++
-			) {
+		for (port_index = port_agent->phy_valid_port_range[iphy->phy_index].min_index;
+		     port_index <= port_agent->phy_valid_port_range[iphy->phy_index].max_index;
+		     port_index++) {
 
-			port = &ihost->ports[port_index].sci;
+			iport = &ihost->ports[port_index];
 
 			/* First we must make sure that this PHY can be added to this Port. */
-			if (scic_sds_port_is_valid_phy_assignment(port, iphy->phy_index)) {
+			if (scic_sds_port_is_valid_phy_assignment(iport, iphy->phy_index)) {
 				/*
 				 * Port contains a PHY with a greater PHY ID than the current
 				 * PHY that has gone link up.  This phy can not be part of any
 				 * port so skip it and move on. */
-				if (port->active_phy_mask > (1 << iphy->phy_index)) {
+				if (iport->active_phy_mask > (1 << iphy->phy_index)) {
 					apc_activity = SCIC_SDS_APC_SKIP_PHY;
 					break;
 				}
@@ -537,7 +533,7 @@ static void scic_sds_apc_agent_configure_ports(struct scic_sds_controller *contr
 				 * We have reached the end of our Port list and have not found
 				 * any reason why we should not either add the PHY to the port
 				 * or wait for more phys to become active. */
-				if (port->physical_port_index == iphy->phy_index) {
+				if (iport->physical_port_index == iphy->phy_index) {
 					/*
 					 * The Port either has no active PHYs.
 					 * Consider that if the port had any active PHYs we would have
@@ -554,10 +550,10 @@ static void scic_sds_apc_agent_configure_ports(struct scic_sds_controller *contr
 				 * The current Port has no active PHYs and this PHY could be part
 				 * of this Port.  Since we dont know as yet setup to start the
 				 * timer and see if there is a better configuration. */
-				if (port->active_phy_mask == 0) {
+				if (iport->active_phy_mask == 0) {
 					apc_activity = SCIC_SDS_APC_START_TIMER;
 				}
-			} else if (port->active_phy_mask != 0) {
+			} else if (iport->active_phy_mask != 0) {
 				/*
 				 * The Port has an active phy and the current Phy can not
 				 * participate in this port so skip the PHY and see if
@@ -583,7 +579,7 @@ static void scic_sds_apc_agent_configure_ports(struct scic_sds_controller *contr
 
 	switch (apc_activity) {
 	case SCIC_SDS_APC_ADD_PHY:
-		status = scic_sds_port_add_phy(port, iphy);
+		status = scic_sds_port_add_phy(iport, iphy);
 
 		if (status == SCI_SUCCESS) {
 			port_agent->phy_configured_mask |= (1 << iphy->phy_index);
@@ -625,18 +621,18 @@ static void scic_sds_apc_agent_configure_ports(struct scic_sds_controller *contr
  */
 static void scic_sds_apc_agent_link_up(struct scic_sds_controller *scic,
 				       struct scic_sds_port_configuration_agent *port_agent,
-				       struct scic_sds_port *sci_port,
+				       struct isci_port *iport,
 				       struct isci_phy *iphy)
 {
 	u8 phy_index  = iphy->phy_index;
 
-	if (!sci_port) {
+	if (!iport) {
 		/* the phy is not the part of this port */
 		port_agent->phy_ready_mask |= 1 << phy_index;
 		scic_sds_apc_agent_configure_ports(scic, port_agent, iphy, true);
 	} else {
 		/* the phy is already the part of the port */
-		u32 port_state = sci_port->sm.current_state_id;
+		u32 port_state = iport->sm.current_state_id;
 
 		/* if the PORT'S state is resetting then the link up is from
 		 * port hard reset in this case, we need to tell the port
@@ -644,7 +640,7 @@ static void scic_sds_apc_agent_link_up(struct scic_sds_controller *scic,
 		 */
 		BUG_ON(port_state != SCI_PORT_RESETTING);
 		port_agent->phy_ready_mask |= 1 << phy_index;
-		scic_sds_port_link_up(sci_port, iphy);
+		scic_sds_port_link_up(iport, iphy);
 	}
 }
 
@@ -652,9 +648,9 @@ static void scic_sds_apc_agent_link_up(struct scic_sds_controller *scic,
  *
  * @controller: This is the controller object that receives the link down
  *    notification.
- * @port: This is the port object associated with the phy.  If the is no
+ * @iport: This is the port object associated with the phy.  If the is no
  *    associated port this is an NULL.
- * @phy: This is the phy object which has gone link down.
+ * @iphy: This is the phy object which has gone link down.
  *
  * This method handles the automatic port configuration link down
  * notifications. not associated with a port there is no action taken. Is it
@@ -664,21 +660,20 @@ static void scic_sds_apc_agent_link_up(struct scic_sds_controller *scic,
 static void scic_sds_apc_agent_link_down(
 	struct scic_sds_controller *controller,
 	struct scic_sds_port_configuration_agent *port_agent,
-	struct scic_sds_port *port,
+	struct isci_port *iport,
 	struct isci_phy *iphy)
 {
 	port_agent->phy_ready_mask &= ~(1 << scic_sds_phy_get_index(iphy));
 
-	if (port != NULL) {
-		if (port_agent->phy_configured_mask & (1 << iphy->phy_index)) {
-			enum sci_status status;
+	if (!iport)
+		return;
+	if (port_agent->phy_configured_mask & (1 << iphy->phy_index)) {
+		enum sci_status status;
 
-			status = scic_sds_port_remove_phy(port, iphy);
+		status = scic_sds_port_remove_phy(iport, iphy);
 
-			if (status == SCI_SUCCESS) {
-				port_agent->phy_configured_mask &= ~(1 << iphy->phy_index);
-			}
-		}
+		if (status == SCI_SUCCESS)
+			port_agent->phy_configured_mask &= ~(1 << iphy->phy_index);
 	}
 }