]> git.hungrycats.org Git - linux/commitdiff
scsi: libsas: Add a helper sas_get_sas_addr_and_dev_type()
authorXingui Yang <yangxingui@huawei.com>
Thu, 7 Mar 2024 14:14:12 +0000 (14:14 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Apr 2024 13:11:58 +0000 (15:11 +0200)
commit a57345279fd311ba679b8083feb0eec5272c7729 upstream.

Add a helper to get attached_sas_addr and device type from disc_resp.

Suggested-by: John Garry <john.g.garry@oracle.com>
Signed-off-by: Xingui Yang <yangxingui@huawei.com>
Link: https://lore.kernel.org/r/20240307141413.48049-2-yangxingui@huawei.com
Reviewed-by: John Garry <john.g.garry@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/scsi/libsas/sas_expander.c

index a2204674b6808fa3df84288d7f5b134680232fd1..de9dee488277c7c5a81d40b81110de0f4a1122fa 100644 (file)
@@ -1621,6 +1621,16 @@ out_err:
 
 /* ---------- Domain revalidation ---------- */
 
+static void sas_get_sas_addr_and_dev_type(struct smp_disc_resp *disc_resp,
+                                         u8 *sas_addr,
+                                         enum sas_device_type *type)
+{
+       memcpy(sas_addr, disc_resp->disc.attached_sas_addr, SAS_ADDR_SIZE);
+       *type = to_dev_type(&disc_resp->disc);
+       if (*type == SAS_PHY_UNUSED)
+               memset(sas_addr, 0, SAS_ADDR_SIZE);
+}
+
 static int sas_get_phy_discover(struct domain_device *dev,
                                int phy_id, struct smp_disc_resp *disc_resp)
 {
@@ -1674,13 +1684,8 @@ int sas_get_phy_attached_dev(struct domain_device *dev, int phy_id,
                return -ENOMEM;
 
        res = sas_get_phy_discover(dev, phy_id, disc_resp);
-       if (res == 0) {
-               memcpy(sas_addr, disc_resp->disc.attached_sas_addr,
-                      SAS_ADDR_SIZE);
-               *type = to_dev_type(&disc_resp->disc);
-               if (*type == 0)
-                       memset(sas_addr, 0, SAS_ADDR_SIZE);
-       }
+       if (res == 0)
+               sas_get_sas_addr_and_dev_type(disc_resp, sas_addr, type);
        kfree(disc_resp);
        return res;
 }