2015-05-05 20:01:03

by Nathan Sullivan

[permalink] [raw]
Subject: [PATCH] net: macb: Handle the RXUBR interrupt on all devices

The same hardware issue the at91 must work around applies to at least the
Zynq ethernet, and possibly more devices. The driver also needs to handle
the RXUBR interrupt since it turns it on with MACB_RX_INT_FLAGS anyway.

Signed-off-by: Nathan Sullivan <[email protected]>
---
drivers/net/ethernet/cadence/macb.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
index 4104d49..61aa570 100644
--- a/drivers/net/ethernet/cadence/macb.c
+++ b/drivers/net/ethernet/cadence/macb.c
@@ -981,7 +981,7 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id)
struct macb_queue *queue = dev_id;
struct macb *bp = queue->bp;
struct net_device *dev = bp->dev;
- u32 status;
+ u32 status, ctrl;

status = queue_readl(queue, ISR);

@@ -1037,6 +1037,15 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id)
* add that if/when we get our hands on a full-blown MII PHY.
*/

+ if (status & MACB_BIT(RXUBR)) {
+ ctrl = macb_readl(bp, NCR);
+ macb_writel(bp, NCR, ctrl & ~MACB_BIT(RE));
+ macb_writel(bp, NCR, ctrl | MACB_BIT(RE));
+
+ if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
+ macb_writel(bp, ISR, MACB_BIT(RXUBR));
+ }
+
if (status & MACB_BIT(ISR_ROVR)) {
/* We missed at least one packet */
if (macb_is_gem(bp))
--
1.7.10.4


2015-05-09 20:04:59

by David Miller

[permalink] [raw]
Subject: Re: [PATCH] net: macb: Handle the RXUBR interrupt on all devices

From: Nathan Sullivan <[email protected]>
Date: Tue, 5 May 2015 15:00:25 -0500

> The same hardware issue the at91 must work around applies to at least the
> Zynq ethernet, and possibly more devices. The driver also needs to handle
> the RXUBR interrupt since it turns it on with MACB_RX_INT_FLAGS anyway.
>
> Signed-off-by: Nathan Sullivan <[email protected]>

Applied, thank you.

2015-05-11 10:11:52

by Nicolas Ferre

[permalink] [raw]
Subject: Re: [PATCH] net: macb: Handle the RXUBR interrupt on all devices

Le 09/05/2015 22:04, David Miller a ?crit :
> From: Nathan Sullivan <[email protected]>
> Date: Tue, 5 May 2015 15:00:25 -0500
>
>> The same hardware issue the at91 must work around applies to at least the
>> Zynq ethernet, and possibly more devices. The driver also needs to handle
>> the RXUBR interrupt since it turns it on with MACB_RX_INT_FLAGS anyway.
>>
>> Signed-off-by: Nathan Sullivan <[email protected]>
>
> Applied, thank you.

A v2 of this patch with more explanation in both the commit message and
in code comments had been sent. Not a big deal (I suspect you can't use
the v2 one, now that it's applied in your tree, can you?).

Bye,
--
Nicolas Ferre

2015-05-11 14:28:25

by David Miller

[permalink] [raw]
Subject: Re: [PATCH] net: macb: Handle the RXUBR interrupt on all devices

From: Nicolas Ferre <[email protected]>
Date: Mon, 11 May 2015 12:10:54 +0200

> Le 09/05/2015 22:04, David Miller a ?crit :
>> From: Nathan Sullivan <[email protected]>
>> Date: Tue, 5 May 2015 15:00:25 -0500
>>
>>> The same hardware issue the at91 must work around applies to at least the
>>> Zynq ethernet, and possibly more devices. The driver also needs to handle
>>> the RXUBR interrupt since it turns it on with MACB_RX_INT_FLAGS anyway.
>>>
>>> Signed-off-by: Nathan Sullivan <[email protected]>
>>
>> Applied, thank you.
>
> A v2 of this patch with more explanation in both the commit message and
> in code comments had been sent. Not a big deal (I suspect you can't use
> the v2 one, now that it's applied in your tree, can you?).

Sorry, yes I see there was a v2. If you want to send me a relative patch that
corrects things, I can apply that.

Thanks.