can: rcar_canfd: Add missing ECC error checks for channels 2-7
When introducing support for R-Car V3U, which has 8 instead of 2
channels, the ECC error bitmask was extended to take into account the
extra channels, but rcar_canfd_global_error() was not updated to act
upon the extra bits.
Replace the RCANFD_GERFL_EEF[01] macros by a new macro that takes the
channel number, fixing R-Car V3U while simplifying the code.
Fixes: 45721c406d
("can: rcar_canfd: Add support for r8a779a0 SoC")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
Link: https://lore.kernel.org/all/4edb2ea46cc64d0532a08a924179827481e14b4f.1666951503.git.geert+renesas@glider.be
Cc: stable@vger.kernel.org
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
ae64438be1
commit
8b043dfb3d
@ -81,8 +81,7 @@ enum rcanfd_chip_id {
|
||||
|
||||
/* RSCFDnCFDGERFL / RSCFDnGERFL */
|
||||
#define RCANFD_GERFL_EEF0_7 GENMASK(23, 16)
|
||||
#define RCANFD_GERFL_EEF1 BIT(17)
|
||||
#define RCANFD_GERFL_EEF0 BIT(16)
|
||||
#define RCANFD_GERFL_EEF(ch) BIT(16 + (ch))
|
||||
#define RCANFD_GERFL_CMPOF BIT(3) /* CAN FD only */
|
||||
#define RCANFD_GERFL_THLES BIT(2)
|
||||
#define RCANFD_GERFL_MES BIT(1)
|
||||
@ -90,7 +89,7 @@ enum rcanfd_chip_id {
|
||||
|
||||
#define RCANFD_GERFL_ERR(gpriv, x) \
|
||||
((x) & (reg_v3u(gpriv, RCANFD_GERFL_EEF0_7, \
|
||||
RCANFD_GERFL_EEF0 | RCANFD_GERFL_EEF1) | \
|
||||
RCANFD_GERFL_EEF(0) | RCANFD_GERFL_EEF(1)) | \
|
||||
RCANFD_GERFL_MES | \
|
||||
((gpriv)->fdmode ? RCANFD_GERFL_CMPOF : 0)))
|
||||
|
||||
@ -936,12 +935,8 @@ static void rcar_canfd_global_error(struct net_device *ndev)
|
||||
u32 ridx = ch + RCANFD_RFFIFO_IDX;
|
||||
|
||||
gerfl = rcar_canfd_read(priv->base, RCANFD_GERFL);
|
||||
if ((gerfl & RCANFD_GERFL_EEF0) && (ch == 0)) {
|
||||
netdev_dbg(ndev, "Ch0: ECC Error flag\n");
|
||||
stats->tx_dropped++;
|
||||
}
|
||||
if ((gerfl & RCANFD_GERFL_EEF1) && (ch == 1)) {
|
||||
netdev_dbg(ndev, "Ch1: ECC Error flag\n");
|
||||
if (gerfl & RCANFD_GERFL_EEF(ch)) {
|
||||
netdev_dbg(ndev, "Ch%u: ECC Error flag\n", ch);
|
||||
stats->tx_dropped++;
|
||||
}
|
||||
if (gerfl & RCANFD_GERFL_MES) {
|
||||
|
Loading…
Reference in New Issue
Block a user