From: Heiko Schocher <hs@denx.de>
To: linux-can@vger.kernel.org
Cc: Heiko Schocher <hs@denx.de>, Markus Marb <markus@marb.org>,
netdev@vger.kernel.org, Marc Kleine-Budde <mkl@pengutronix.de>,
linux-kernel@vger.kernel.org, Marek Vasut <marex@denx.de>,
Wolfgang Grandegger <wg@grandegger.com>
Subject: [PATCH v2 1/2] net, can, ifi: fix "write buffer full" error
Date: Thu, 8 Feb 2018 07:47:47 +0100 [thread overview]
Message-ID: <20180208064748.17985-1-hs@denx.de> (raw)
the driver reads in the ISR first the IRQpending register,
and clears after that in a write *all* bits in it.
It could happen that the isr register raise bits between
this 2 register accesses, which leads in lost bits ...
In case it clears "TX message sent successfully", the driver
never sends any Tx data, and buffers to userspace run over.
Fixed this:
clear only the bits in the IRQpending register, the
driver had read.
Signed-off-by: Heiko Schocher <hs@denx.de>
Reviewed-by: Marek Vasut <marex@denx.de>
---
Changes in v2:
- add Reviewed-by from Marek
drivers/net/can/ifi_canfd/ifi_canfd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/can/ifi_canfd/ifi_canfd.c b/drivers/net/can/ifi_canfd/ifi_canfd.c
index 2772d05ff11c..05feb8177936 100644
--- a/drivers/net/can/ifi_canfd/ifi_canfd.c
+++ b/drivers/net/can/ifi_canfd/ifi_canfd.c
@@ -607,7 +607,7 @@ static irqreturn_t ifi_canfd_isr(int irq, void *dev_id)
return IRQ_NONE;
/* Clear all pending interrupts but ErrWarn */
- writel(clr_irq_mask, priv->base + IFI_CANFD_INTERRUPT);
+ writel(isr & clr_irq_mask, priv->base + IFI_CANFD_INTERRUPT);
/* RX IRQ or bus warning, start NAPI */
if (isr & rx_irq_mask) {
--
2.14.3
next reply other threads:[~2018-02-08 6:47 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-08 6:47 Heiko Schocher [this message]
2018-02-08 6:47 ` [PATCH v2 2/2] net, can, ifi: loopback Tx message in IFI block Heiko Schocher
2018-02-08 14:46 ` [PATCH v2 1/2] net, can, ifi: fix "write buffer full" error Marc Kleine-Budde
2018-02-08 19:22 ` Marek Vasut
2018-02-08 21:33 ` Marc Kleine-Budde
2018-02-08 21:44 ` Marek Vasut
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180208064748.17985-1-hs@denx.de \
--to=hs@denx.de \
--cc=linux-can@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marex@denx.de \
--cc=markus@marb.org \
--cc=mkl@pengutronix.de \
--cc=netdev@vger.kernel.org \
--cc=wg@grandegger.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).