Print the current interrupt flags and mask and
the interrupt state during the last interrupt in
fec_timeout.

Signed-off-by: Troy Kisky <troy.ki...@boundarydevices.com>
---
 drivers/net/ethernet/freescale/fec.h      | 1 +
 drivers/net/ethernet/freescale/fec_main.c | 4 ++++
 2 files changed, 5 insertions(+)

diff --git a/drivers/net/ethernet/freescale/fec.h 
b/drivers/net/ethernet/freescale/fec.h
index be0e3d9..d2ca2e2 100644
--- a/drivers/net/ethernet/freescale/fec.h
+++ b/drivers/net/ethernet/freescale/fec.h
@@ -490,6 +490,7 @@ struct fec_enet_private {
        unsigned int total_tx_ring_size;
        unsigned int total_rx_ring_size;
        uint    events;
+       uint    last_ievents;
 
        struct  platform_device *pdev;
 
diff --git a/drivers/net/ethernet/freescale/fec_main.c 
b/drivers/net/ethernet/freescale/fec_main.c
index 47df66e..bc084ad9 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -1102,6 +1102,9 @@ fec_timeout(struct net_device *ndev)
        int i;
        uint events = 0;
 
+       pr_err("%s: last=%x %x, mask %x\n", __func__, fep->last_ievents,
+              readl(fep->hwp + FEC_IEVENT), readl(fep->hwp + FEC_IMASK));
+
        for (i = 0; i < fep->num_tx_queues; i++) {
                struct fec_enet_priv_tx_q *txq = fep->tx_queue[i];
                int index;
@@ -1504,6 +1507,7 @@ fec_enet_interrupt(int irq, void *dev_id)
 
        if (!int_events)
                return IRQ_NONE;
+       fep->last_ievents = int_events;
 
        if (int_events & (FEC_ENET_RXF | FEC_ENET_TXF)) {
                if (napi_schedule_prep(&fep->napi)) {
-- 
2.5.0

Reply via email to