diff options
author | Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> | 2013-06-20 17:12:21 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-06-24 03:10:21 -0400 |
commit | ca8c35852138ee0585eaffe6b9f10a5261ea7771 (patch) | |
tree | bc6dddbdba3f2014b150a69869adedca66502146 /drivers/net/ethernet/renesas | |
parent | 8afe3dc891c4dec2ebddbba6f3767684f95ac2f9 (diff) |
sh_eth: fix unhandled RFE interrupt
EESR.RFE (receive FIFO overflow) interrupt is enabled by the driver on all SoCs
and sh_eth_error() handles it but it's not present in any initializer/assignment
of the 'eesr_err_check' field of 'struct sh_eth_cpu_data'. This leads to that
interrupt not being handled and cleared, and finally to disabling IRQ and the
driver being non-functional.
Modify DEFAULT_EESR_ERR_CHECK macro and all explicit initializers of the above
mentioned field to contain the EESR.RFE bit. Remove useless backslashes from the
initializers, while at it.
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/renesas')
-rw-r--r-- | drivers/net/ethernet/renesas/sh_eth.c | 33 | ||||
-rw-r--r-- | drivers/net/ethernet/renesas/sh_eth.h | 2 |
2 files changed, 19 insertions, 16 deletions
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c index 5e3982fc5398..d9c21dd596d7 100644 --- a/drivers/net/ethernet/renesas/sh_eth.c +++ b/drivers/net/ethernet/renesas/sh_eth.c | |||
@@ -380,8 +380,9 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data = { | |||
380 | .eesipr_value = 0x01ff009f, | 380 | .eesipr_value = 0x01ff009f, |
381 | 381 | ||
382 | .tx_check = EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | EESR_RTO, | 382 | .tx_check = EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | EESR_RTO, |
383 | .eesr_err_check = EESR_TWB | EESR_TABT | EESR_RABT | EESR_RDE | | 383 | .eesr_err_check = EESR_TWB | EESR_TABT | EESR_RABT | EESR_RFE | |
384 | EESR_RFRMER | EESR_TFE | EESR_TDE | EESR_ECI, | 384 | EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE | |
385 | EESR_ECI, | ||
385 | .tx_error_check = EESR_TWB | EESR_TABT | EESR_TDE | EESR_TFE, | 386 | .tx_error_check = EESR_TWB | EESR_TABT | EESR_TDE | EESR_TFE, |
386 | 387 | ||
387 | .apr = 1, | 388 | .apr = 1, |
@@ -427,8 +428,9 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data = { | |||
427 | .eesipr_value = DMAC_M_RFRMER | DMAC_M_ECI | 0x01ff009f, | 428 | .eesipr_value = DMAC_M_RFRMER | DMAC_M_ECI | 0x01ff009f, |
428 | 429 | ||
429 | .tx_check = EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | EESR_RTO, | 430 | .tx_check = EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | EESR_RTO, |
430 | .eesr_err_check = EESR_TWB | EESR_TABT | EESR_RABT | EESR_RDE | | 431 | .eesr_err_check = EESR_TWB | EESR_TABT | EESR_RABT | EESR_RFE | |
431 | EESR_RFRMER | EESR_TFE | EESR_TDE | EESR_ECI, | 432 | EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE | |
433 | EESR_ECI, | ||
432 | .tx_error_check = EESR_TWB | EESR_TABT | EESR_TDE | EESR_TFE, | 434 | .tx_error_check = EESR_TWB | EESR_TABT | EESR_TDE | EESR_TFE, |
433 | 435 | ||
434 | .apr = 1, | 436 | .apr = 1, |
@@ -478,8 +480,9 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data = { | |||
478 | .rmcr_value = 0x00000001, | 480 | .rmcr_value = 0x00000001, |
479 | 481 | ||
480 | .tx_check = EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | EESR_RTO, | 482 | .tx_check = EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | EESR_RTO, |
481 | .eesr_err_check = EESR_TWB | EESR_TABT | EESR_RABT | EESR_RDE | | 483 | .eesr_err_check = EESR_TWB | EESR_TABT | EESR_RABT | EESR_RFE | |
482 | EESR_RFRMER | EESR_TFE | EESR_TDE | EESR_ECI, | 484 | EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE | |
485 | EESR_ECI, | ||
483 | .tx_error_check = EESR_TWB | EESR_TABT | EESR_TDE | EESR_TFE, | 486 | .tx_error_check = EESR_TWB | EESR_TABT | EESR_TDE | EESR_TFE, |
484 | 487 | ||
485 | .apr = 1, | 488 | .apr = 1, |
@@ -592,9 +595,9 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data_giga = { | |||
592 | .eesipr_value = DMAC_M_RFRMER | DMAC_M_ECI | 0x003fffff, | 595 | .eesipr_value = DMAC_M_RFRMER | DMAC_M_ECI | 0x003fffff, |
593 | 596 | ||
594 | .tx_check = EESR_TC1 | EESR_FTC, | 597 | .tx_check = EESR_TC1 | EESR_FTC, |
595 | .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT | \ | 598 | .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT | |
596 | EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE | \ | 599 | EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE | |
597 | EESR_ECI, | 600 | EESR_TDE | EESR_ECI, |
598 | .tx_error_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_TDE | \ | 601 | .tx_error_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_TDE | \ |
599 | EESR_TFE, | 602 | EESR_TFE, |
600 | .fdr_value = 0x0000072f, | 603 | .fdr_value = 0x0000072f, |
@@ -674,9 +677,9 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data = { | |||
674 | .eesipr_value = DMAC_M_RFRMER | DMAC_M_ECI | 0x003fffff, | 677 | .eesipr_value = DMAC_M_RFRMER | DMAC_M_ECI | 0x003fffff, |
675 | 678 | ||
676 | .tx_check = EESR_TC1 | EESR_FTC, | 679 | .tx_check = EESR_TC1 | EESR_FTC, |
677 | .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT | \ | 680 | .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT | |
678 | EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE | \ | 681 | EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE | |
679 | EESR_ECI, | 682 | EESR_TDE | EESR_ECI, |
680 | .tx_error_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_TDE | \ | 683 | .tx_error_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_TDE | \ |
681 | EESR_TFE, | 684 | EESR_TFE, |
682 | 685 | ||
@@ -811,9 +814,9 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data = { | |||
811 | .eesipr_value = DMAC_M_RFRMER | DMAC_M_ECI | 0x003fffff, | 814 | .eesipr_value = DMAC_M_RFRMER | DMAC_M_ECI | 0x003fffff, |
812 | 815 | ||
813 | .tx_check = EESR_TC1 | EESR_FTC, | 816 | .tx_check = EESR_TC1 | EESR_FTC, |
814 | .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT | \ | 817 | .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT | |
815 | EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE | \ | 818 | EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE | |
816 | EESR_ECI, | 819 | EESR_TDE | EESR_ECI, |
817 | .tx_error_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_TDE | \ | 820 | .tx_error_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_TDE | \ |
818 | EESR_TFE, | 821 | EESR_TFE, |
819 | 822 | ||
diff --git a/drivers/net/ethernet/renesas/sh_eth.h b/drivers/net/ethernet/renesas/sh_eth.h index 1ddc9f235bcb..62689a5823be 100644 --- a/drivers/net/ethernet/renesas/sh_eth.h +++ b/drivers/net/ethernet/renesas/sh_eth.h | |||
@@ -253,7 +253,7 @@ enum EESR_BIT { | |||
253 | 253 | ||
254 | #define DEFAULT_TX_CHECK (EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | \ | 254 | #define DEFAULT_TX_CHECK (EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | \ |
255 | EESR_RTO) | 255 | EESR_RTO) |
256 | #define DEFAULT_EESR_ERR_CHECK (EESR_TWB | EESR_TABT | EESR_RABT | \ | 256 | #define DEFAULT_EESR_ERR_CHECK (EESR_TWB | EESR_TABT | EESR_RABT | EESR_RFE | \ |
257 | EESR_RDE | EESR_RFRMER | EESR_ADE | \ | 257 | EESR_RDE | EESR_RFRMER | EESR_ADE | \ |
258 | EESR_TFE | EESR_TDE | EESR_ECI) | 258 | EESR_TFE | EESR_TDE | EESR_ECI) |
259 | #define DEFAULT_TX_ERROR_CHECK (EESR_TWB | EESR_TABT | EESR_ADE | EESR_TDE | \ | 259 | #define DEFAULT_TX_ERROR_CHECK (EESR_TWB | EESR_TABT | EESR_ADE | EESR_TDE | \ |