From patchwork Wed Oct 31 21:27:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frieder Schrempf X-Patchwork-Id: 991716 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=kontron.de Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=as-electronics.de header.i=@as-electronics.de header.b="URaG/R+e"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 42lhcW2fJGz9sDT for ; Thu, 1 Nov 2018 08:41:47 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726242AbeKAGlh (ORCPT ); Thu, 1 Nov 2018 02:41:37 -0400 Received: from mo4-p05-ob.smtp.rzone.de ([85.215.255.132]:20327 "EHLO mo4-p05-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725848AbeKAGlh (ORCPT ); Thu, 1 Nov 2018 02:41:37 -0400 X-Greylist: delayed 732 seconds by postgrey-1.27 at vger.kernel.org; Thu, 01 Nov 2018 02:41:36 EDT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1541022103; s=strato-dkim-0002; d=as-electronics.de; h=Message-Id:Date:Subject:Cc:To:From:X-RZG-CLASS-ID:X-RZG-AUTH:From: Subject:Sender; bh=T9xwjHpTZB2lQjNJqdunv30sZGHcaQh3nkzRNsxbtlw=; b=URaG/R+eegpoPjXonqtryq56ZyBzJXSaXPPIHYc4CQD/ygRs0VhK3rK1EsRTObEKKi nUuhihwUubCu4KnEOCynQG8mQkG0jtCtbkZeyTkSa6Dpz917xhu7kusuhuFYgMWf+aZo BtUswociZoW/piH/Yzm9Gr/Cgd0LvlmoMtJVb/9PMmC+IcC1IuC1C6QZh3ebHeS5VSTx l764tz4ta4/B0/FGtpaarXz7q3sxvXcEWEiPgWnHLdzWnk02tpec9zhppj39i0DPjO1F +9yZ0tKjiqfkme6WWEURKGyB/mUVcps0Y4X49Iv5KMCJywEJ61EEnOLU3ibbRZBUX6+U quiA== X-RZG-AUTH: ":LX8JdEmkW/4tAFwMkcNJIloh1hrA5u3owhPk7bdT5Fx22AatU+eLaHfutoZdl+X9BETxn4/4+IVqx+QKE8uPUyz7H84id4F0yi4r+BiOwjaTFJDezg==" X-RZG-CLASS-ID: mo05 Received: from fs-work.fritz.box by smtp.strato.de (RZmta 44.3 AUTH) with ESMTPSA id j097e4u9VLTT3ZI (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA (curve secp521r1 with 521 ECDH bits, eq. 15360 bits RSA)) (Client did not present a certificate); Wed, 31 Oct 2018 22:29:29 +0100 (CET) From: Frieder Schrempf To: steve.glendinning@shawell.net, UNGLinuxDriver@microchip.com Cc: davem@davemloft.net, netdev@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Frieder Schrempf , stable@vger.kernel.org Subject: [PATCH] usbnet: smsc95xx: disable carrier check while suspending Date: Wed, 31 Oct 2018 22:27:01 +0100 Message-Id: <1541021221-337-1-git-send-email-frieder.schrempf@kontron.de> X-Mailer: git-send-email 2.7.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org We need to make sure, that the carrier check polling is disabled while suspending. Otherwise we can end up with usbnet_read_cmd() being issued when only usbnet_read_cmd_nopm() is allowed. If this happens, read operations lock up. Fixes: d69d169493 ("usbnet: smsc95xx: fix link detection for disabled autonegotiation") Cc: Signed-off-by: Frieder Schrempf --- drivers/net/usb/smsc95xx.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c index 262e7a3..3bc9633 100644 --- a/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c @@ -1592,6 +1592,8 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message) u32 val, link_up; int ret; + cancel_delayed_work_sync(&pdata->carrier_check); + ret = usbnet_suspend(intf, message); if (ret < 0) { netdev_warn(dev->net, "usbnet_suspend error\n"); @@ -1840,6 +1842,11 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message) */ if (ret && PMSG_IS_AUTO(message)) usbnet_resume(intf); + + if (ret) + schedule_delayed_work(&pdata->carrier_check, + CARRIER_CHECK_DELAY); + return ret; }