Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753557Ab2FZUXy (ORCPT ); Tue, 26 Jun 2012 16:23:54 -0400 Received: from webmail.solarflare.com ([12.187.104.25]:56950 "EHLO ocex02.SolarFlarecom.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751554Ab2FZUXv (ORCPT ); Tue, 26 Jun 2012 16:23:51 -0400 Message-ID: <1340742224.2644.1.camel@bwh-desktop.uk.solarflarecom.com> Subject: Re: [PATCH 1/1] atl1c: fix issue of transmit queue 0 timed out From: Ben Hutchings To: "Ren, Cloud" CC: , , , , , xiong Date: Tue, 26 Jun 2012 21:23:44 +0100 In-Reply-To: <1340724786-3819-1-git-send-email-cjren@qca.qualcomm.com> References: <1340724786-3819-1-git-send-email-cjren@qca.qualcomm.com> Organization: Solarflare Communications Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.3 (3.2.3-1.fc16) Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [10.17.20.137] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1850 Lines: 50 On Tue, 2012-06-26 at 12:33 -0300, Ren, Cloud wrote: > From: xiong > > some people report atl1c could cause system hang with following > kernel trace info: > --------------------------------------- > WARNING: at.../net/sched/sch_generic.c:258 > dev_watchdog+0x1db/0x1d0() > ... > NETDEV WATCHDOG: eth0 (atl1c): transmit queue 0 timed out > ... > --------------------------------------- > This is caused by netif_stop_queue calling when cable Link is down > but netif_wake_queue isn't called when cable Link is resume. > > Signed-off-by: xiong > Signed-off-by: Cloud Ren > --- > drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c > index 85717cb..c2736c4 100644 > --- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c > +++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c > @@ -351,6 +351,8 @@ static void atl1c_common_task(struct work_struct *work) > atl1c_irq_disable(adapter); > atl1c_check_link_status(adapter); > atl1c_irq_enable(adapter); > + if (netif_queue_stopped(netdev) && netif_carrier_ok(netdev)) > + netif_wake_queue(netdev); > } > } > Why explicitly stop/start the queue when the link changes? That's what link_watch is for. Ben. -- Ben Hutchings, Staff Engineer, Solarflare Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/