summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/isci/core/scic_phy.h3
-rw-r--r--drivers/scsi/isci/core/scic_sds_phy.c5
-rw-r--r--drivers/scsi/isci/port.c2
3 files changed, 10 insertions, 0 deletions
diff --git a/drivers/scsi/isci/core/scic_phy.h b/drivers/scsi/isci/core/scic_phy.h
index 13f8a30..bf0d3be 100644
--- a/drivers/scsi/isci/core/scic_phy.h
+++ b/drivers/scsi/isci/core/scic_phy.h
@@ -72,6 +72,9 @@
struct scic_sds_phy;
struct scic_sds_port;
+
+enum sas_linkrate sci_phy_linkrate(struct scic_sds_phy *sci_phy);
+
/**
* struct scic_phy_properties - This structure defines the properties common to
* all phys that can be retrieved.
diff --git a/drivers/scsi/isci/core/scic_sds_phy.c b/drivers/scsi/isci/core/scic_sds_phy.c
index d9213e2..743e5a6 100644
--- a/drivers/scsi/isci/core/scic_sds_phy.c
+++ b/drivers/scsi/isci/core/scic_sds_phy.c
@@ -73,6 +73,11 @@
/* Maximum arbitration wait time in micro-seconds */
#define SCIC_SDS_PHY_MAX_ARBITRATION_WAIT_TIME (700)
+enum sas_linkrate sci_phy_linkrate(struct scic_sds_phy *sci_phy)
+{
+ return sci_phy->max_negotiated_speed;
+}
+
/*
* *****************************************************************************
* * SCIC SDS PHY Internal Methods
diff --git a/drivers/scsi/isci/port.c b/drivers/scsi/isci/port.c
index 2343f65..446da20 100644
--- a/drivers/scsi/isci/port.c
+++ b/drivers/scsi/isci/port.c
@@ -263,6 +263,8 @@ void isci_port_link_up(
success = false;
}
+ isci_phy->sas_phy.phy->negotiated_linkrate = sci_phy_linkrate(phy);
+
spin_unlock_irqrestore(&isci_phy->sas_phy.frame_rcvd_lock, flags);
/* Notify libsas that we have an address frame, if indeed