diff mbox

[2/3] scsi_transport_sas: add function to get SAS endpoint address

Message ID 1449688415.2226.34.camel@HansenPartnership.com (mailing list archive)
State Accepted, archived
Headers show

Commit Message

James Bottomley Dec. 9, 2015, 7:13 p.m. UTC
For a device known to be SAS connected, this will return the endpoint
address.  This is useful for getting the SAS address of SATA devices.

Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
---
 drivers/scsi/scsi_transport_sas.c |   14 ++++++++++++++
 include/scsi/scsi_transport_sas.h |    1 +
 2 files changed, 15 insertions(+), 0 deletions(-)

Comments

Hannes Reinecke Dec. 15, 2015, 10:17 a.m. UTC | #1
On 12/09/2015 08:13 PM, James Bottomley wrote:
> For a device known to be SAS connected, this will return the endpoint
> address.  This is useful for getting the SAS address of SATA devices.
>
> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
> ---
>   drivers/scsi/scsi_transport_sas.c |   14 ++++++++++++++
>   include/scsi/scsi_transport_sas.h |    1 +
>   2 files changed, 15 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/scsi/scsi_transport_sas.c b/drivers/scsi/scsi_transport_sas.c
> index b17f763..80520e2 100644
> --- a/drivers/scsi/scsi_transport_sas.c
> +++ b/drivers/scsi/scsi_transport_sas.c
> @@ -383,6 +383,20 @@ void sas_remove_host(struct Scsi_Host *shost)
>   EXPORT_SYMBOL(sas_remove_host);
>
>   /**
> + * sas_get_address - return the SAS address of the device
> + * @sdev: scsi device
> + *
> + * Returns the SAS address of the scsi device
> + */
> +u64 sas_get_address(struct scsi_device *sdev)
> +{
> +	struct sas_end_device *rdev = sas_sdev_to_rdev(sdev);
> +
> +	return rdev->rphy.identify.sas_address;
> +}
> +EXPORT_SYMBOL(sas_get_address);
> +
> +/**
>    * sas_tlr_supported - checking TLR bit in vpd 0x90
>    * @sdev: scsi device struct
>    *
> diff --git a/include/scsi/scsi_transport_sas.h b/include/scsi/scsi_transport_sas.h
> index a8fdd10..13c0b2b 100644
> --- a/include/scsi/scsi_transport_sas.h
> +++ b/include/scsi/scsi_transport_sas.h
> @@ -189,6 +189,7 @@ extern int sas_phy_add(struct sas_phy *);
>   extern void sas_phy_delete(struct sas_phy *);
>   extern int scsi_is_sas_phy(const struct device *);
>
> +u64 sas_get_address(struct scsi_device *);
>   unsigned int sas_tlr_supported(struct scsi_device *);
>   unsigned int sas_is_tlr_enabled(struct scsi_device *);
>   void sas_disable_tlr(struct scsi_device *);
>
Reviewed-by: Hannes Reinecke <hare@suse.com>

Cheers,

Hannes
diff mbox

Patch

diff --git a/drivers/scsi/scsi_transport_sas.c b/drivers/scsi/scsi_transport_sas.c
index b17f763..80520e2 100644
--- a/drivers/scsi/scsi_transport_sas.c
+++ b/drivers/scsi/scsi_transport_sas.c
@@ -383,6 +383,20 @@  void sas_remove_host(struct Scsi_Host *shost)
 EXPORT_SYMBOL(sas_remove_host);
 
 /**
+ * sas_get_address - return the SAS address of the device
+ * @sdev: scsi device
+ *
+ * Returns the SAS address of the scsi device
+ */
+u64 sas_get_address(struct scsi_device *sdev)
+{
+	struct sas_end_device *rdev = sas_sdev_to_rdev(sdev);
+
+	return rdev->rphy.identify.sas_address;
+}
+EXPORT_SYMBOL(sas_get_address);
+
+/**
  * sas_tlr_supported - checking TLR bit in vpd 0x90
  * @sdev: scsi device struct
  *
diff --git a/include/scsi/scsi_transport_sas.h b/include/scsi/scsi_transport_sas.h
index a8fdd10..13c0b2b 100644
--- a/include/scsi/scsi_transport_sas.h
+++ b/include/scsi/scsi_transport_sas.h
@@ -189,6 +189,7 @@  extern int sas_phy_add(struct sas_phy *);
 extern void sas_phy_delete(struct sas_phy *);
 extern int scsi_is_sas_phy(const struct device *);
 
+u64 sas_get_address(struct scsi_device *);
 unsigned int sas_tlr_supported(struct scsi_device *);
 unsigned int sas_is_tlr_enabled(struct scsi_device *);
 void sas_disable_tlr(struct scsi_device *);