IB/hfi1: Do not set physical link state if DC is in the shutdown state
authorMichael J. Ruhl <michael.j.ruhl@intel.com>
Wed, 8 Feb 2017 13:28:13 +0000 (05:28 -0800)
committerDoug Ledford <dledford@redhat.com>
Sun, 19 Feb 2017 14:18:43 +0000 (09:18 -0500)
If the DC is in shutdown state, the set link state function will return
an error.  Since this is not a failure in this state, make sure to
only call set link state if the DC is on.

Reviewed-by: Easwar Hariharan <easwar.hariharan@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/hfi1/chip.c

index b9d491c9071a44d565721892e430948f56eab3bc..121a4c920f1b04b40862d5e64d5b3785d906788a 100644 (file)
@@ -10510,16 +10510,18 @@ int set_link_state(struct hfi1_pportdata *ppd, u32 state)
                        ppd->remote_link_down_reason = 0;
                }
 
-               ret1 = set_physical_link_state(dd, PLS_DISABLED);
-               if (ret1 != HCMD_SUCCESS) {
-                       dd_dev_err(dd,
-                                  "Failed to transition to Disabled link state, return 0x%x\n",
-                                  ret1);
-                       ret = -EINVAL;
-                       break;
+               if (!dd->dc_shutdown) {
+                       ret1 = set_physical_link_state(dd, PLS_DISABLED);
+                       if (ret1 != HCMD_SUCCESS) {
+                               dd_dev_err(dd,
+                                          "Failed to transition to Disabled link state, return 0x%x\n",
+                                          ret1);
+                               ret = -EINVAL;
+                               break;
+                       }
+                       dc_shutdown(dd);
                }
                ppd->host_link_state = HLS_DN_DISABLE;
-               dc_shutdown(dd);
                break;
        case HLS_DN_OFFLINE:
                if (ppd->host_link_state == HLS_DN_DISABLE)