023-greth_handle_frame_error_interrupts.patch 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. From f62c047af910c9c9696db7b47472a3728b8100e8 Mon Sep 17 00:00:00 2001
  2. From: Daniel Hellstrom <[email protected]>
  3. Date: Wed, 1 Dec 2010 11:56:22 +0100
  4. Subject: [PATCH] GRETH: handle frame error interrupts
  5. Not handling frame error interrupts are unlikly but may lead to dead
  6. lock if 128 error frames are recieved in a row.
  7. Signed-off-by: Daniel Hellstrom <[email protected]>
  8. ---
  9. drivers/net/greth.c | 5 +++--
  10. drivers/net/greth.h | 2 ++
  11. 2 files changed, 5 insertions(+), 2 deletions(-)
  12. --- a/drivers/net/greth.c
  13. +++ b/drivers/net/greth.c
  14. @@ -595,11 +595,12 @@ static irqreturn_t greth_interrupt(int i
  15. status = GRETH_REGLOAD(greth->regs->status);
  16. /* Handle rx and tx interrupts through poll */
  17. - if (status & (GRETH_INT_RX | GRETH_INT_TX)) {
  18. + if (status & (GRETH_INT_RE | GRETH_INT_RX | GRETH_INT_TE | GRETH_INT_TX)) {
  19. /* Clear interrupt status */
  20. GRETH_REGSAVE(greth->regs->status,
  21. - status & (GRETH_INT_RX | GRETH_INT_TX));
  22. + status & (GRETH_INT_RE | GRETH_INT_RX |
  23. + GRETH_INT_TE | GRETH_INT_TX));
  24. retval = IRQ_HANDLED;
  25. --- a/drivers/net/greth.h
  26. +++ b/drivers/net/greth.h
  27. @@ -23,6 +23,7 @@
  28. #define GRETH_BD_LEN 0x7FF
  29. #define GRETH_TXEN 0x1
  30. +#define GRETH_INT_TE 0x2
  31. #define GRETH_INT_TX 0x8
  32. #define GRETH_TXI 0x4
  33. #define GRETH_TXBD_STATUS 0x0001C000
  34. @@ -35,6 +36,7 @@
  35. #define GRETH_TXBD_ERR_UE 0x4000
  36. #define GRETH_TXBD_ERR_AL 0x8000
  37. +#define GRETH_INT_RE 0x1
  38. #define GRETH_INT_RX 0x4
  39. #define GRETH_RXEN 0x2
  40. #define GRETH_RXI 0x8