isci: remove usage of sci_sas_address in scic_sds_remote_device
authorDan Williams <dan.j.williams@intel.com>
Tue, 26 Apr 2011 16:41:52 +0000 (09:41 -0700)
committerDan Williams <dan.j.williams@intel.com>
Sun, 3 Jul 2011 11:00:38 +0000 (04:00 -0700)
The sas address can be retrieved from the domain device and then
converted to the always little-endian format in the remote node context.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/scsi/isci/remote_device.c
drivers/scsi/isci/remote_device.h
drivers/scsi/isci/remote_node_context.c

index 5ba3b5dca4d5b594b1a4cb0483c1a99fabaf8a95..1e9e2227820a5bfccb2c4c6681ffdbcfb71e80c2 100644 (file)
@@ -1501,8 +1501,6 @@ static enum sci_status scic_remote_device_da_construct(struct scic_sds_port *sci
 
        sci_dev->rnc.remote_node_index = remote_node_index;
 
-       scic_sds_port_get_attached_sas_address(sci_port, &sci_dev->device_address);
-
        if (dev->dev_type == SAS_END_DEV)
                sci_dev->has_ready_substate_machine = false;
        else if (dev->dev_type == SATA_DEV || (dev->tproto & SAS_PROTOCOL_STP)) {
@@ -1553,7 +1551,6 @@ static enum sci_status scic_remote_device_ea_construct(struct scic_sds_port *sci
        enum sci_status status;
 
        scic_remote_device_construct(sci_port, sci_dev);
-       memcpy(&sci_dev->device_address, dev->sas_addr, SAS_ADDR_SIZE);
 
        status = scic_sds_controller_allocate_remote_node_context(
                scic, sci_dev, &sci_dev->rnc.remote_node_index);
index 39821601022b910a39b2889a46dd828ef844a277..f0612d46fe2bd22cc5294677dd2fe5801e89d3f2 100644 (file)
@@ -99,11 +99,6 @@ struct scic_sds_remote_device {
         */
        enum sas_linkrate connection_rate;
 
-       /**
-        * This field contains the device SAS address.
-        */
-       struct sci_sas_address device_address;
-
        /**
         * This filed is assinged the value of true if the device is directly
         * attached to the port.
index 59f878f11f33ee06060d3cffbac4ddb027849acd..e83657d554b773906a5c298c0b2bdb2480b2cb09 100644 (file)
@@ -110,6 +110,7 @@ static void scic_sds_remote_node_context_construct_buffer(
        struct domain_device *dev = sci_dev_to_domain(sci_dev);
        union scu_remote_node_context *rnc;
        struct scic_sds_controller *scic;
+       __le64 sas_addr;
 
        scic = scic_sds_remote_device_get_controller(sci_dev);
 
@@ -124,9 +125,10 @@ static void scic_sds_remote_node_context_construct_buffer(
        rnc->ssp.logical_port_index =
                scic_sds_remote_device_get_port_index(sci_dev);
 
-       /* address is always big endian, destination is always little */
-       rnc->ssp.remote_sas_address_hi = swab32(sci_dev->device_address.high);
-       rnc->ssp.remote_sas_address_lo = swab32(sci_dev->device_address.low);
+       /* sas address is __be64, context ram format is __le64 */
+       sas_addr = cpu_to_le64(SAS_ADDR(dev->sas_addr));
+       rnc->ssp.remote_sas_address_hi = upper_32_bits(sas_addr);
+       rnc->ssp.remote_sas_address_lo = lower_32_bits(sas_addr);
 
        rnc->ssp.nexus_loss_timer_enable = true;
        rnc->ssp.check_bit               = false;