diff options
-rw-r--r-- | drivers/net/greth.c | 9 | ||||
-rw-r--r-- | drivers/net/greth.h | 2 |
2 files changed, 7 insertions, 4 deletions
diff --git a/drivers/net/greth.c b/drivers/net/greth.c index e48d18216cb..b888abe6cd2 100644 --- a/drivers/net/greth.c +++ b/drivers/net/greth.c @@ -586,12 +586,13 @@ static irqreturn_t greth_interrupt(int irq, void *dev_id) status = GRETH_REGLOAD(greth->regs->status); /* Handle rx and tx interrupts through poll */ - if (status & (GRETH_INT_RX | GRETH_INT_TX)) { + if (status & (GRETH_INT_RE | GRETH_INT_RX | + GRETH_INT_TE | GRETH_INT_TX)) { /* Clear interrupt status */ - GRETH_REGORIN(greth->regs->status, - status & (GRETH_INT_RX | GRETH_INT_TX)); - + GRETH_REGSAVE(greth->regs->status, + status & (GRETH_INT_RE | GRETH_INT_RX | + GRETH_INT_TE | GRETH_INT_TX)); retval = IRQ_HANDLED; /* Disable interrupts and schedule poll() */ diff --git a/drivers/net/greth.h b/drivers/net/greth.h index 03ad903cd67..be0f2062bd1 100644 --- a/drivers/net/greth.h +++ b/drivers/net/greth.h @@ -23,6 +23,7 @@ #define GRETH_BD_LEN 0x7FF #define GRETH_TXEN 0x1 +#define GRETH_INT_TE 0x2 #define GRETH_INT_TX 0x8 #define GRETH_TXI 0x4 #define GRETH_TXBD_STATUS 0x0001C000 @@ -35,6 +36,7 @@ #define GRETH_TXBD_ERR_UE 0x4000 #define GRETH_TXBD_ERR_AL 0x8000 +#define GRETH_INT_RE 0x1 #define GRETH_INT_RX 0x4 #define GRETH_RXEN 0x2 #define GRETH_RXI 0x8 |