From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiner Kallweit Subject: [PATCH net-next] r8169: power down chip in probe Date: Tue, 17 Jul 2018 21:21:37 +0200 Message-ID: <5bc628cd-b638-df9a-c0bc-5b15105a8fb1@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: "netdev@vger.kernel.org" To: Realtek linux nic maintainers , David Miller Return-path: Received: from mail-wr1-f66.google.com ([209.85.221.66]:36038 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729716AbeGQTzr (ORCPT ); Tue, 17 Jul 2018 15:55:47 -0400 Received: by mail-wr1-f66.google.com with SMTP id h9-v6so2311731wro.3 for ; Tue, 17 Jul 2018 12:21:44 -0700 (PDT) Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: The removed code would be called in two situations: 1. interface is brought up never or >10s after driver load 2. after close() Case 1 we can handle cleaner by ensuring chip is powered down when leaving probe(). open() callback will power up the chip. In case 2 we call rtl_pll_power_down() twice currently, from the close() callback and 10s later when entering runtime-suspend. This is avoided by this patch. Signed-off-by: Heiner Kallweit --- drivers/net/ethernet/realtek/r8169.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c index 9d5c7b17..e5f6f8c5 100644 --- a/drivers/net/ethernet/realtek/r8169.c +++ b/drivers/net/ethernet/realtek/r8169.c @@ -7183,10 +7183,8 @@ static int rtl8169_runtime_suspend(struct device *device) struct net_device *dev = pci_get_drvdata(pdev); struct rtl8169_private *tp = netdev_priv(dev); - if (!tp->TxDescArray) { - rtl_pll_power_down(tp); + if (!tp->TxDescArray) return 0; - } rtl_lock_work(tp); __rtl8169_set_wol(tp, WAKE_ANY); @@ -7645,6 +7643,9 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) pci_set_drvdata(pdev, dev); + /* chip gets powered up in rtl_open() */ + rtl_pll_power_down(tp); + rc = register_netdev(dev); if (rc < 0) return rc; -- 2.18.0