From a3d568f0dfbb6bc786df04ad13e0b401f80e614c Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Tue, 26 Apr 2011 09:41:52 -0700 Subject: [PATCH] isci: remove usage of sci_sas_address in scic_sds_remote_device 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 --- drivers/scsi/isci/remote_device.c | 3 --- drivers/scsi/isci/remote_device.h | 5 ----- drivers/scsi/isci/remote_node_context.c | 8 +++++--- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/drivers/scsi/isci/remote_device.c b/drivers/scsi/isci/remote_device.c index 5ba3b5dca4d5..1e9e2227820a 100644 --- a/drivers/scsi/isci/remote_device.c +++ b/drivers/scsi/isci/remote_device.c @@ -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); diff --git a/drivers/scsi/isci/remote_device.h b/drivers/scsi/isci/remote_device.h index 39821601022b..f0612d46fe2b 100644 --- a/drivers/scsi/isci/remote_device.h +++ b/drivers/scsi/isci/remote_device.h @@ -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. diff --git a/drivers/scsi/isci/remote_node_context.c b/drivers/scsi/isci/remote_node_context.c index 59f878f11f33..e83657d554b7 100644 --- a/drivers/scsi/isci/remote_node_context.c +++ b/drivers/scsi/isci/remote_node_context.c @@ -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;