aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/scsi_transport_sas.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/scsi_transport_sas.c')
-rw-r--r--drivers/scsi/scsi_transport_sas.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_transport_sas.c b/drivers/scsi/scsi_transport_sas.c
index ab3bd0b5ffd9..7d69a25d2004 100644
--- a/drivers/scsi/scsi_transport_sas.c
+++ b/drivers/scsi/scsi_transport_sas.c
@@ -1060,6 +1060,29 @@ int scsi_is_sas_port(const struct device *dev)
1060EXPORT_SYMBOL(scsi_is_sas_port); 1060EXPORT_SYMBOL(scsi_is_sas_port);
1061 1061
1062/** 1062/**
1063 * sas_port_get_phy - try to take a reference on a port member
1064 * @port: port to check
1065 */
1066struct sas_phy *sas_port_get_phy(struct sas_port *port)
1067{
1068 struct sas_phy *phy;
1069
1070 mutex_lock(&port->phy_list_mutex);
1071 if (list_empty(&port->phy_list))
1072 phy = NULL;
1073 else {
1074 struct list_head *ent = port->phy_list.next;
1075
1076 phy = list_entry(ent, typeof(*phy), port_siblings);
1077 get_device(&phy->dev);
1078 }
1079 mutex_unlock(&port->phy_list_mutex);
1080
1081 return phy;
1082}
1083EXPORT_SYMBOL(sas_port_get_phy);
1084
1085/**
1063 * sas_port_add_phy - add another phy to a port to form a wide port 1086 * sas_port_add_phy - add another phy to a port to form a wide port
1064 * @port: port to add the phy to 1087 * @port: port to add the phy to
1065 * @phy: phy to add 1088 * @phy: phy to add