aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/hfi1
diff options
context:
space:
mode:
authorBartlomiej Dudek <bartlomiej.dudek@intel.com>2017-08-04 13:52:32 -0700
committerDoug Ledford <dledford@redhat.com>2017-08-22 14:22:36 -0400
commit64a296f579303322ebec9edae09cf87240b1ad78 (patch)
tree6380ac3080cf9fe12486b868c223ff142dced2f0 /drivers/infiniband/hw/hfi1
parentIB/hfi1: Remove lstate from hfi1_pportdata (diff)
downloadlinux-dev-64a296f579303322ebec9edae09cf87240b1ad78.tar.xz
linux-dev-64a296f579303322ebec9edae09cf87240b1ad78.zip
IB/hfi1: Use host_link_state to read state when DC is shut down
When DC is shut down (by e.g. disconnecting the cable), the driver should use host_link_state to get port's current physical state. This is due to the fact that physical state is read from DC's CSRs and when DC is shut down and state is changed, its registers are not impacted. Reviewed-by: Jakub Byczkowski <jakub.byczkowski@intel.com> Signed-off-by: Bartlomiej Dudek <bartlomiej.dudek@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/hw/hfi1')
-rw-r--r--drivers/infiniband/hw/hfi1/hfi.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/hfi1/hfi.h b/drivers/infiniband/hw/hfi1/hfi.h
index e66e8f96ceab..728ed457e447 100644
--- a/drivers/infiniband/hw/hfi1/hfi.h
+++ b/drivers/infiniband/hw/hfi1/hfi.h
@@ -1298,6 +1298,13 @@ int hfi1_reset_device(int);
static inline u32 driver_pstate(struct hfi1_pportdata *ppd)
{
/*
+ * When DC is shut down and state is changed, its CSRs are not
+ * impacted, therefore host_link_state should be used to get
+ * current physical state.
+ */
+ if (ppd->dd->dc_shutdown)
+ return driver_physical_state(ppd);
+ /*
* The driver does some processing from the time the physical
* link state is at LINKUP to the time the SM can be notified
* as such. Return IB_PORTPHYSSTATE_TRAINING until the software