IB/ipath: iba6110 rev4 no longer needs recv header overrun workaround
[firefly-linux-kernel-4.4.55.git] / drivers / infiniband / hw / ipath / ipath_iba6110.c
index 650745d83faccbe0f3da87ffbc6feb11087b1137..d4940beb58c7a95b0df5cf2f416f342cfa790339 100644 (file)
@@ -1559,6 +1559,14 @@ static int ipath_ht_early_init(struct ipath_devdata *dd)
                ipath_dev_err(dd, "Unsupported InfiniPath serial "
                              "number %.16s!\n", dd->ipath_serial);
 
+       if (dd->ipath_minrev >= 4) {
+               /* Rev4+ reports extra errors via internal GPIO pins */
+               dd->ipath_flags |= IPATH_GPIO_ERRINTRS;
+               dd->ipath_gpio_mask |= IPATH_GPIO_ERRINTR_MASK;
+               ipath_write_kreg(dd, dd->ipath_kregs->kr_gpio_mask,
+                                dd->ipath_gpio_mask);
+       }
+
        return 0;
 }
 
@@ -1591,8 +1599,10 @@ static int ipath_ht_get_base_info(struct ipath_portdata *pd, void *kbase)
 {
        struct ipath_base_info *kinfo = kbase;
 
-       kinfo->spi_runtime_flags |= IPATH_RUNTIME_HT |
-               IPATH_RUNTIME_RCVHDR_COPY;
+       kinfo->spi_runtime_flags |= IPATH_RUNTIME_HT;
+
+       if (pd->port_dd->ipath_minrev < 4)
+               kinfo->spi_runtime_flags |= IPATH_RUNTIME_RCVHDR_COPY;
 
        return 0;
 }