diff mbox

[net] ravb: Fix int mask value overwritten issue

Message ID 1447410289-3741-1-git-send-email-ykaneko0929@gmail.com (mailing list archive)
State Accepted
Delegated to: Geert Uytterhoeven
Headers show

Commit Message

Yoshihiro Kaneko Nov. 13, 2015, 10:24 a.m. UTC
From: Masaru Nagai <masaru.nagai.vx@renesas.com>

When RX/TX interrupt for Network Control queue and Best Effort queue
is issued at the same time, the interrupt mask of Network Control
queue will be reset when the mask of Best Effort queue is set.
This patch fixes this problem.

Signed-off-by: Masaru Nagai <masaru.nagai.vx@renesas.com>
Signed-off-by: Yoshihiro Kaneko <ykaneko0929@gmail.com>
---

This patch is based on the master branch of David Miller's networking tree.

 drivers/net/ethernet/renesas/ravb_main.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Geert Uytterhoeven Nov. 13, 2015, 10:45 a.m. UTC | #1
Hi Kaneko-san,

On Fri, Nov 13, 2015 at 11:24 AM, Yoshihiro Kaneko
<ykaneko0929@gmail.com> wrote:
> From: Masaru Nagai <masaru.nagai.vx@renesas.com>
>
> When RX/TX interrupt for Network Control queue and Best Effort queue
> is issued at the same time, the interrupt mask of Network Control
> queue will be reset when the mask of Best Effort queue is set.

Nice catch!

At first I was a bit puzzled why this would make a difference, but
the key is "will be reset in the next iteration of the for loop", which
falls outside of the visible context.

> This patch fixes this problem.
>
> Signed-off-by: Masaru Nagai <masaru.nagai.vx@renesas.com>
> Signed-off-by: Yoshihiro Kaneko <ykaneko0929@gmail.com>

Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Simon Horman Nov. 14, 2015, 12:16 a.m. UTC | #2
On Fri, Nov 13, 2015 at 11:45:28AM +0100, Geert Uytterhoeven wrote:
> Hi Kaneko-san,
> 
> On Fri, Nov 13, 2015 at 11:24 AM, Yoshihiro Kaneko
> <ykaneko0929@gmail.com> wrote:
> > From: Masaru Nagai <masaru.nagai.vx@renesas.com>
> >
> > When RX/TX interrupt for Network Control queue and Best Effort queue
> > is issued at the same time, the interrupt mask of Network Control
> > queue will be reset when the mask of Best Effort queue is set.
> 
> Nice catch!
> 
> At first I was a bit puzzled why this would make a difference, but
> the key is "will be reset in the next iteration of the for loop", which
> falls outside of the visible context.
> 
> > This patch fixes this problem.
> >
> > Signed-off-by: Masaru Nagai <masaru.nagai.vx@renesas.com>
> > Signed-off-by: Yoshihiro Kaneko <ykaneko0929@gmail.com>
> 
> Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>

Acked-by: Simon Horman <horms+renesas@verge.net.au>
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller Nov. 16, 2015, 7:44 p.m. UTC | #3
From: Yoshihiro Kaneko <ykaneko0929@gmail.com>
Date: Fri, 13 Nov 2015 19:24:49 +0900

> From: Masaru Nagai <masaru.nagai.vx@renesas.com>
> 
> When RX/TX interrupt for Network Control queue and Best Effort queue
> is issued at the same time, the interrupt mask of Network Control
> queue will be reset when the mask of Best Effort queue is set.
> This patch fixes this problem.
> 
> Signed-off-by: Masaru Nagai <masaru.nagai.vx@renesas.com>
> Signed-off-by: Yoshihiro Kaneko <ykaneko0929@gmail.com>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index aa7b208..7180e26 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -733,8 +733,10 @@  static irqreturn_t ravb_interrupt(int irq, void *dev_id)
 			    ((tis  & tic)  & BIT(q))) {
 				if (napi_schedule_prep(&priv->napi[q])) {
 					/* Mask RX and TX interrupts */
-					ravb_write(ndev, ric0 & ~BIT(q), RIC0);
-					ravb_write(ndev, tic  & ~BIT(q), TIC);
+					ric0 &= ~BIT(q);
+					tic &= ~BIT(q);
+					ravb_write(ndev, ric0, RIC0);
+					ravb_write(ndev, tic, TIC);
 					__napi_schedule(&priv->napi[q]);
 				} else {
 					netdev_warn(ndev,