diff mbox

TI Davinci EMAC : Fix Console Hang when bringing the interface down

Message ID 1258026942-2947-1-git-send-email-srk@ti.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Sriram Nov. 12, 2009, 11:55 a.m. UTC
In the NAPI poll function(emac_poll), check for netif_running()
is unnecassary. In addition to associated runtime overhead, it
also results in a continuous softirq loop when the interface is
brought down under heavy traffic(tested wit Traffic Generator).
Once the interface is disabled, the poll function always returns
zero(with the check for netif_running) and napi_complete() would
never get called resulting in softirq loop.

Signed-off-by: Sriramakrishnan <srk@ti.com>
Acked-by: Chaithrika U S <chaithrika@ti.com>
---
This patch has been validated on the OMAP-L138 platform. The smsc911x
driver has a similar issue. Will post a patch for that separately.

 drivers/net/davinci_emac.c |    3 ---
 1 files changed, 0 insertions(+), 3 deletions(-)

Comments

David Miller Nov. 16, 2009, 6:17 a.m. UTC | #1
From: Sriramakrishnan <srk@ti.com>
Date: Thu, 12 Nov 2009 17:25:42 +0530

> In the NAPI poll function(emac_poll), check for netif_running()
> is unnecassary. In addition to associated runtime overhead, it
> also results in a continuous softirq loop when the interface is
> brought down under heavy traffic(tested wit Traffic Generator).
> Once the interface is disabled, the poll function always returns
> zero(with the check for netif_running) and napi_complete() would
> never get called resulting in softirq loop.
> 
> Signed-off-by: Sriramakrishnan <srk@ti.com>
> Acked-by: Chaithrika U S <chaithrika@ti.com>

Applied to net-2.6
--
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/davinci_emac.c b/drivers/net/davinci_emac.c
index f72c56d..2533413 100644
--- a/drivers/net/davinci_emac.c
+++ b/drivers/net/davinci_emac.c
@@ -2140,9 +2140,6 @@  static int emac_poll(struct napi_struct *napi, int budget)
 	u32 status = 0;
 	u32 num_pkts = 0;
 
-	if (!netif_running(ndev))
-		return 0;
-
 	/* Check interrupt vectors and call packet processing */
 	status = emac_read(EMAC_MACINVECTOR);