[PATCH net-next V2 13/16] net: fec: print more debug info in fec_timeout
Troy Kisky
troy.kisky at boundarydevices.com
Wed Feb 24 16:36:56 PST 2016
Print the current interrupt flags and mask and
the interrupt state during the last interrupt in
fec_timeout.
Signed-off-by: Troy Kisky <troy.kisky at 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 001200b..615cca1 100644
--- a/drivers/net/ethernet/freescale/fec.h
+++ b/drivers/net/ethernet/freescale/fec.h
@@ -506,6 +506,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 afd4060..9a3136b 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -1107,6 +1107,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;
@@ -1514,6 +1517,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
More information about the linux-arm-kernel
mailing list