IB/hfi1: Do not enable disabled port on cable insert
authorJan Sokolowski <jan.sokolowski@intel.com>
Sat, 29 Jul 2017 15:43:26 +0000 (08:43 -0700)
committerDoug Ledford <dledford@redhat.com>
Mon, 31 Jul 2017 19:18:37 +0000 (15:18 -0400)
Fix issue where a disabled port can be enabled by
inserting a cable. The port should be explicitly
enabled instead.

Reviewed-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Reviewed-by: Jakub Byczkowski <jakub.byczkowski@intel.com>
Signed-off-by: Jan Sokolowski <jan.sokolowski@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 eca31dd49caea1e7bf0d420717e5b28224aba12a..bd594e7b0078f89bd3826dfc0709f990ea2f087d 100644 (file)
@@ -9306,12 +9306,6 @@ int start_link(struct hfi1_pportdata *ppd)
         */
        tune_serdes(ppd);
 
-       if (!ppd->link_enabled) {
-               dd_dev_info(ppd->dd,
-                           "%s: stopping link start because link is disabled\n",
-                           __func__);
-               return 0;
-       }
        if (!ppd->driver_link_ready) {
                dd_dev_info(ppd->dd,
                            "%s: stopping link start because driver is not ready\n",
@@ -9529,6 +9523,13 @@ void qsfp_event(struct work_struct *work)
        if (!qsfp_mod_present(ppd))
                return;
 
+       if (ppd->host_link_state == HLS_DN_DISABLE) {
+               dd_dev_info(ppd->dd,
+                           "%s: stopping link start because link is disabled\n",
+                           __func__);
+               return;
+       }
+
        /*
         * Turn DC back on after cable has been re-inserted. Up until
         * now, the DC has been in reset to save power.