[ofa-general] [PATCH 01/23] IB/ipath -- iba6110 rev4 GPIO counters support

Arthur Jones arthur.jones at qlogic.com
Tue Oct 9 12:59:20 PDT 2007


On iba6110 rev4, support for three more IB counters
were added.  The LocalLinkIntegrityError counter,
the ExcessiveBufferOverrunErrors counter and support
for error counting of flow control packets on an
invalid VL.  These counters trigger GPIO interrupts
and the sw keeps track of the counts.  Since we also
use GPIO interrupts to signal packet reception, we
need to turn off the fast interrupts, or we risk losing
a GPIO interrupt.

Signed-off-by: Arthur Jones <arthur.jones at qlogic.com>
---

 drivers/infiniband/hw/ipath/ipath_iba6110.c |    8 ++++++++
 drivers/infiniband/hw/ipath/ipath_intr.c    |    4 ++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/infiniband/hw/ipath/ipath_iba6110.c b/drivers/infiniband/hw/ipath/ipath_iba6110.c
index 650745d..e1c5998 100644
--- a/drivers/infiniband/hw/ipath/ipath_iba6110.c
+++ b/drivers/infiniband/hw/ipath/ipath_iba6110.c
@@ -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;
 }
 
diff --git a/drivers/infiniband/hw/ipath/ipath_intr.c b/drivers/infiniband/hw/ipath/ipath_intr.c
index b29fe7e..11b3614 100644
--- a/drivers/infiniband/hw/ipath/ipath_intr.c
+++ b/drivers/infiniband/hw/ipath/ipath_intr.c
@@ -1085,8 +1085,8 @@ irqreturn_t ipath_intr(int irq, void *data)
 		 * GPIO_2 indicates (on some HT4xx boards) that a packet
 		 *        has arrived for Port 0. Checking for this
 		 *        is controlled by flag IPATH_GPIO_INTR.
-		 * GPIO_3..5 on IBA6120 Rev2 chips indicate errors
-		 *        that we need to count. Checking for this
+		 * GPIO_3..5 on IBA6120 Rev2 and IBA6110 Rev4 chips indicate
+		 *        errors that we need to count. Checking for this
 		 *        is controlled by flag IPATH_GPIO_ERRINTRS.
 		 */
 		u32 gpiostatus;




More information about the general mailing list