diff mbox

atl1c: dont use highprio tx queue

Message ID 1329374591.5646.23.camel@edumazet-laptop
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Eric Dumazet Feb. 16, 2012, 6:43 a.m. UTC
This driver attempts to use two TX rings but lacks proper support :

1) IRQ handler only takes care of TX completion on first TX ring
2) the stop/start logic uses the legacy functions (for non multiqueue
drivers)

This means all packets witk skb mark set to 1 are sent through high
queue but are never cleaned and queue eventualy fills and block the
device, triggering the infamous "NETDEV WATCHDOG" message. 

Lets use a single TX ring to fix the problem, this driver is not a real
multiqueue one yet.

Minimal fix for stable kernels.

Reported-by: Thomas Meyer <thomas@m3y3r.de>
Tested-by: Thomas Meyer <thomas@m3y3r.de>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Jay Cliburn <jcliburn@gmail.com>
Cc: Chris Snook <chris.snook@gmail.com>
---
 drivers/net/ethernet/atheros/atl1c/atl1c_main.c |    4 ----
 1 file changed, 4 deletions(-)



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

Comments

Josh Boyer Feb. 16, 2012, 12:36 p.m. UTC | #1
On Thu, Feb 16, 2012 at 1:43 AM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> This driver attempts to use two TX rings but lacks proper support :
>
> 1) IRQ handler only takes care of TX completion on first TX ring
> 2) the stop/start logic uses the legacy functions (for non multiqueue
> drivers)
>
> This means all packets witk skb mark set to 1 are sent through high
> queue but are never cleaned and queue eventualy fills and block the
> device, triggering the infamous "NETDEV WATCHDOG" message.
>
> Lets use a single TX ring to fix the problem, this driver is not a real
> multiqueue one yet.
>
> Minimal fix for stable kernels.
>
> Reported-by: Thomas Meyer <thomas@m3y3r.de>
> Tested-by: Thomas Meyer <thomas@m3y3r.de>
> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
> Cc: Jay Cliburn <jcliburn@gmail.com>
> Cc: Chris Snook <chris.snook@gmail.com>

As I think David handles netdev patches a bit differently for stable releases,
I'd like to suggest this get included in the next batch for the 3.2 kernel.
We've been seeing the bug this patch fixes in Fedora for quite a while now.

josh
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eric Dumazet Feb. 16, 2012, 1:12 p.m. UTC | #2
Le jeudi 16 février 2012 à 07:36 -0500, Josh Boyer a écrit :

> As I think David handles netdev patches a bit differently for stable releases,
> I'd like to suggest this get included in the next batch for the 3.2 kernel.
> We've been seeing the bug this patch fixes in Fedora for quite a while now.

Hard to believe this bug lasted so long...



--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller Feb. 19, 2012, 11:59 p.m. UTC | #3
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Thu, 16 Feb 2012 07:43:11 +0100

> This driver attempts to use two TX rings but lacks proper support :
> 
> 1) IRQ handler only takes care of TX completion on first TX ring
> 2) the stop/start logic uses the legacy functions (for non multiqueue
> drivers)
> 
> This means all packets witk skb mark set to 1 are sent through high
> queue but are never cleaned and queue eventualy fills and block the
> device, triggering the infamous "NETDEV WATCHDOG" message. 
> 
> Lets use a single TX ring to fix the problem, this driver is not a real
> multiqueue one yet.
> 
> Minimal fix for stable kernels.
> 
> Reported-by: Thomas Meyer <thomas@m3y3r.de>
> Tested-by: Thomas Meyer <thomas@m3y3r.de>
> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" 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/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
index b859124..1ff3c6d 100644
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
@@ -2244,10 +2244,6 @@  static netdev_tx_t atl1c_xmit_frame(struct sk_buff *skb,
 			dev_info(&adapter->pdev->dev, "tx locked\n");
 		return NETDEV_TX_LOCKED;
 	}
-	if (skb->mark == 0x01)
-		type = atl1c_trans_high;
-	else
-		type = atl1c_trans_normal;
 
 	if (atl1c_tpd_avail(adapter, type) < tpd_req) {
 		/* no enough descriptor, just stop queue */