cxgb3 - log and clear PEX errors
authorDivy Le Ray <divy@chelsio.com>
Wed, 5 Sep 2007 22:58:15 +0000 (15:58 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 10 Oct 2007 23:51:03 +0000 (16:51 -0700)
Clear pciE PEX errors late at module load time.
Log details when PEX errors occur.

Signed-off-by: Divy Le Ray <divy@chelsio.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/cxgb3/t3_hw.c

index 2b49b96a6fdb79c25c0167ae7187b47045e03d99..cdcfc132e37da8ca8f0ad746a5a533e6226b8e91 100644 (file)
@@ -1358,6 +1358,10 @@ static void pcie_intr_handler(struct adapter *adapter)
                {0}
        };
 
+       if (t3_read_reg(adapter, A_PCIE_INT_CAUSE) & F_PEXERR)
+               CH_ALERT(adapter, "PEX error code 0x%x\n",
+                        t3_read_reg(adapter, A_PCIE_PEX_ERR));
+
        if (t3_handle_intr_status(adapter, A_PCIE_INT_CAUSE, PCIE_INTR_MASK,
                                  pcie_intr_info, adapter->irq_stats))
                t3_fatal_err(adapter);
@@ -1809,6 +1813,8 @@ void t3_intr_clear(struct adapter *adapter)
        for (i = 0; i < ARRAY_SIZE(cause_reg_addr); ++i)
                t3_write_reg(adapter, cause_reg_addr[i], 0xffffffff);
 
+       if (is_pcie(adapter))
+               t3_write_reg(adapter, A_PCIE_PEX_ERR, 0xffffffff);
        t3_write_reg(adapter, A_PL_INT_CAUSE0, 0xffffffff);
        t3_read_reg(adapter, A_PL_INT_CAUSE0);  /* flush */
 }