From patchwork Sun Jan 20 09:01:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heiner Kallweit X-Patchwork-Id: 1028124 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=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="B7HYAjQi"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43j80V6FNsz9s3l for ; Sun, 20 Jan 2019 20:05:30 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730300AbfATJF1 (ORCPT ); Sun, 20 Jan 2019 04:05:27 -0500 Received: from mail-wm1-f66.google.com ([209.85.128.66]:52669 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729513AbfATJF1 (ORCPT ); Sun, 20 Jan 2019 04:05:27 -0500 Received: by mail-wm1-f66.google.com with SMTP id m1so8122744wml.2 for ; Sun, 20 Jan 2019 01:05:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=n0jXgakLLs0Hww0stRuyZasnIPaIt2llUAZ2RuUri1g=; b=B7HYAjQiMW/WAMcLzoDI6GFh/7OprOPwfKNgaEF+mdlXC9gWv9BodllqKy+n9qwfSR doESRbka0AGAlG4tt7vRpifmEHps0smQEefNFRAbIsoJDTmzEaKSrgGgUl4uGCkBFFc4 jfxPi83Csmp6ajDfUwzMG/hgGqZXKPYVFMie2Z/Gd25Ja2k/6bXvsgPRHPrwnb/SURb8 xTZj8ul3SXeTFRBJTZJdkLD2gNyJqWHWUuU+mUJ7lGw78ISEBFq00+CJiAGDMy1DcWN1 7yQLZOzXLX3VU3noNvQrafMPJB3x8W+wvuB6Q8fWL2vx2qjOfspw6Tnu9Df+lQU9olnP mUzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=n0jXgakLLs0Hww0stRuyZasnIPaIt2llUAZ2RuUri1g=; b=H9WSMkH3QQAb9K5teME1L0E2m1dJP/MkOJGgQb9Z2izJUOIte3lXnUP335VBczuePu AA4jQbCA4t73OY/q8crriL5A04wfWx9/dZ/rEiJ2FQT164I/ZsLCMNN8JHIG/U41gbF8 VQWtakObZNn+dKM07fRv9UzzYZrAv3x+MIw1Di46/rCOOChM9IsF8Zh7L+DsF4LSX5Wn kyJS9A2cfQv5YKnFr8SbclOR0m3wGbULcTOZnkWgd9TpkwUchtQJnGukUL37aamEOQSr nQaBFPyvIqMyivA0H3FbG4EYYqB31+XdISkRmYu+b5qJoiPnjdZZqiyUV6bdxKcwflVD s6YA== X-Gm-Message-State: AJcUukd9zvuQtOaZpPKUw7PL3rKCFTUu5FqrvDFShBV5m9Wx83BGIlqG Nc/wv4X8wrwO5jSdheQLtspXHc+v X-Google-Smtp-Source: ALg8bN6Fu1nh5ZNVDSGscRiMlw1mE6qIF7ai7jIk6bJVaLBBmYRdnsJBckHtZgLhmweNHg5tthzY9w== X-Received: by 2002:a1c:cc2:: with SMTP id 185mr21690387wmm.1.1547975124539; Sun, 20 Jan 2019 01:05:24 -0800 (PST) Received: from ?IPv6:2003:ea:8bf1:e200:f1bd:c97d:6fa2:e035? (p200300EA8BF1E200F1BDC97D6FA2E035.dip0.t-ipconnect.de. [2003:ea:8bf1:e200:f1bd:c97d:6fa2:e035]) by smtp.googlemail.com with ESMTPSA id x10sm113908663wrn.29.2019.01.20.01.05.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 20 Jan 2019 01:05:23 -0800 (PST) Subject: [PATCH net-next v2 1/4] net: phy: start state machine in phy_start only From: Heiner Kallweit To: Andrew Lunn , Florian Fainelli , David Miller Cc: "netdev@vger.kernel.org" References: <36a3f6a9-7f4c-7d51-05aa-71e847132102@gmail.com> Message-ID: Date: Sun, 20 Jan 2019 10:01:15 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <36a3f6a9-7f4c-7d51-05aa-71e847132102@gmail.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The state machine is a no-op before phy_start() has been called. Therefore let's enable it in phy_start() only. In phy_start() let's call phy_start_machine() instead of phy_trigger_machine(). phy_start_machine is an alias for phy_trigger_machine but it makes clearer that we start the state machine here instead of just triggering a run. Signed-off-by: Heiner Kallweit --- drivers/net/phy/phy.c | 2 +- drivers/net/phy/phy_device.c | 1 - drivers/net/phy/phylink.c | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 745a705a5..3df6aadc5 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -883,7 +883,7 @@ void phy_start(struct phy_device *phydev) } mutex_unlock(&phydev->lock); - phy_trigger_machine(phydev); + phy_start_machine(phydev); } EXPORT_SYMBOL(phy_start); diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index e0ceecbed..3e284d596 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -944,7 +944,6 @@ int phy_connect_direct(struct net_device *dev, struct phy_device *phydev, return rc; phy_prepare_link(phydev, handler); - phy_start_machine(phydev); if (phydev->irq > 0) phy_start_interrupts(phydev); diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c index e7becc737..e9b8f1037 100644 --- a/drivers/net/phy/phylink.c +++ b/drivers/net/phy/phylink.c @@ -679,7 +679,6 @@ static int phylink_bringup_phy(struct phylink *pl, struct phy_device *phy) __ETHTOOL_LINK_MODE_MASK_NBITS, pl->supported, __ETHTOOL_LINK_MODE_MASK_NBITS, phy->advertising); - phy_start_machine(phy); if (phy->irq > 0) phy_start_interrupts(phy); From patchwork Sun Jan 20 09:02:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heiner Kallweit X-Patchwork-Id: 1028125 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=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="kcliPpKR"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43j80W4B36z9sCr for ; Sun, 20 Jan 2019 20:05:31 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730338AbfATJF3 (ORCPT ); Sun, 20 Jan 2019 04:05:29 -0500 Received: from mail-wm1-f65.google.com ([209.85.128.65]:33640 "EHLO mail-wm1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730186AbfATJF2 (ORCPT ); Sun, 20 Jan 2019 04:05:28 -0500 Received: by mail-wm1-f65.google.com with SMTP id r24so3950889wmh.0 for ; Sun, 20 Jan 2019 01:05:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=rRS55ki7DD2GMtvh8+Qu4p0y024PoHo49XySfQ9COEY=; b=kcliPpKR95MZbtvzgeRPKtfuC6c3kaq78UOkWaZyIbkUQvab2gsWYCDbsHPL5X59y7 WfcmitPROttp5bkIeS6IrNoMWdMMPoa/qbRnTn4TGZYLlmvZ2beYdEZBVh1aaDU80fZ/ 2dUki+JTrc6vm+KWUCIYuJNVK7bYCUNEfgcgnyxA1frteZVBCmd2tNhs9P2qFhHdk5Tl ZPoa8970+ux4ra20Y8CGoUWCcX1qa7GSaghZeCvBFgw/vbgCTYske0znWbihsZNU+ICK e+3lrvRBfralbK+gjGguSfox0Y5h6aekGDsNXd3/kON8AN1RDCKD9rQySRXrcyaClzqe vFog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=rRS55ki7DD2GMtvh8+Qu4p0y024PoHo49XySfQ9COEY=; b=nJbl6gVoLgajqIyjY4rgnzHUgQ65XnkVcRPsf8jCY9TmsoU8irMUFtRs5SPQPtKLqm y6QgqMXdeXSYjmnCcHb6o+EZWdAmIPrpmdtHXvQKyscBgqENb44X/D9h3d+e4mj7Xp9p RSUiDSfsjNoaeaoJDNBcXy1hsz3+7u4lMlF+kKbDHwX2f0fQEgdK3FZHEoS0R0vpwh9J urS9Et0Wp7QQx1HsNytpPdjgdZYrY2gBnjgWpRL72ErlpupPe4sRLYXa4yIy9qkLhpcJ 73Ofc1EiW7/XqIpkiPSsXX5PDmXhvtBt8AmzaXqFF+1Wfp7GSraW2PqLJjc75ivY7Sbh RkiQ== X-Gm-Message-State: AJcUukcA+61VKh6JZMFPpmP9NAeyhJEY2MszNhGUMLwEi8tDAQQvoSSR 5Z8vmozS0wQ3prEfsqQrH0LG8xAZ X-Google-Smtp-Source: ALg8bN4ua3GDYUvfeq1x25MxXd5ya2VaqYuoPbDqj9WGfWModHcTp3y3xgzWt5KvfUIM8XWdnec08w== X-Received: by 2002:a1c:c90b:: with SMTP id f11mr20891039wmb.33.1547975126060; Sun, 20 Jan 2019 01:05:26 -0800 (PST) Received: from ?IPv6:2003:ea:8bf1:e200:f1bd:c97d:6fa2:e035? (p200300EA8BF1E200F1BDC97D6FA2E035.dip0.t-ipconnect.de. [2003:ea:8bf1:e200:f1bd:c97d:6fa2:e035]) by smtp.googlemail.com with ESMTPSA id c21sm46474044wre.71.2019.01.20.01.05.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 20 Jan 2019 01:05:25 -0800 (PST) Subject: [PATCH net-next v2 2/4] net: phy: warn if phy_start is called from invalid state From: Heiner Kallweit To: Andrew Lunn , Florian Fainelli , David Miller Cc: "netdev@vger.kernel.org" References: <36a3f6a9-7f4c-7d51-05aa-71e847132102@gmail.com> Message-ID: Date: Sun, 20 Jan 2019 10:02:13 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <36a3f6a9-7f4c-7d51-05aa-71e847132102@gmail.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org phy_start() should be called from states PHY_READY or PHY_HALTED only. Check for this to detect misbehaving drivers. Also the state machine should be started only when being called from one of the valid states. Signed-off-by: Heiner Kallweit --- drivers/net/phy/phy.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 3df6aadc5..fd928979b 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -861,9 +861,16 @@ void phy_start(struct phy_device *phydev) mutex_lock(&phydev->lock); + if (phydev->state != PHY_READY && phydev->state != PHY_HALTED) { + WARN(1, "called from state %s\n", + phy_state_to_str(phydev->state)); + goto out; + } + switch (phydev->state) { case PHY_READY: phydev->state = PHY_UP; + phy_start_machine(phydev); break; case PHY_HALTED: /* if phy was suspended, bring the physical link up again */ @@ -877,13 +884,13 @@ void phy_start(struct phy_device *phydev) } phydev->state = PHY_RESUMING; + phy_start_machine(phydev); break; default: break; } +out: mutex_unlock(&phydev->lock); - - phy_start_machine(phydev); } EXPORT_SYMBOL(phy_start); From patchwork Sun Jan 20 09:03:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heiner Kallweit X-Patchwork-Id: 1028126 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=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="lm+4Nyy4"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43j80X27yVz9s3l for ; Sun, 20 Jan 2019 20:05:32 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730360AbfATJFa (ORCPT ); Sun, 20 Jan 2019 04:05:30 -0500 Received: from mail-wr1-f66.google.com ([209.85.221.66]:34015 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729513AbfATJF3 (ORCPT ); Sun, 20 Jan 2019 04:05:29 -0500 Received: by mail-wr1-f66.google.com with SMTP id j2so19959693wrw.1 for ; Sun, 20 Jan 2019 01:05:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=h9tXBUJ0oblCnCfWj7eu7bva63EDqjmqU/CYVRREZYo=; b=lm+4Nyy4lAjXIjNa088O78j+7Y2auJOrJU5/rKgUGqblqRsa0U9cen5CoO7T6/ahwS zhg2z2ieMoa62a+SH13UEkgpPxiAFvhU4rnkX7srqVQ3jPPDKK8Cwio6HltSMIUXXo6g RhwY7lM/lSw9zHY+oLo8C8GLasEDCxJ8no7A/ARK8WeuXN7ZWjuNxmLAybbekOtLFjAQ 8Skk4jZcOwgaUBIRMAYXPXAnFRV1WMumWlzzHlmeEqrRaqCYV9MunI7EvrSz+gSCpIrL gKgcUGdm2YPAXSitBRPMR5m5a+7+EW+MZ/RUNOTALjt2EEymXgwOfXfaI47XQAJGpN8f 2pcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=h9tXBUJ0oblCnCfWj7eu7bva63EDqjmqU/CYVRREZYo=; b=Gv8p9dNHpsjheQjmJNm6itTV8Uoi7Gh18hh3wjF5vSmjQNHYr4NjSmdELT8zFcJ09e 2zo7DruIvct53qdXKy5tPms8b7yXCgQkgHYiVQxogycP7eRP9JmhHfQSmRfK2H9FNRXK A1jaSF7Bbm3p2AhANNy1/ltpNycQaB66GZ2wkmuillnE1XlXAFQ1B7hJbpJnOmSz0iyc dJwSc8V0u4vheSktp5ROEsGjqQm8nlG+aNY1wv//lZp07B9anBJfzY0r3A39PX3lo2jv 0ySnlL/qjSpiiLgu0zfUQd+47suoQUUoiTZy1oVcmVTvb8ZqCZDUWHBRk3jn1BDYEJl9 aPYA== X-Gm-Message-State: AJcUukdf51qHgfHkaATN1ZnBoExKbC4HgNGCYvwFgE1y8nh7ekgRJ4WU Ruy6Ef08Rd2EejateD37Ub3WZlWu X-Google-Smtp-Source: ALg8bN5GzQTtMhnbznmXJklLDrrPVSfel0jbZMywyauLvh8R0Unl5/LcSOPM1Wb3z5GcJ4yrX0a4+Q== X-Received: by 2002:adf:ea81:: with SMTP id s1mr22674967wrm.309.1547975127477; Sun, 20 Jan 2019 01:05:27 -0800 (PST) Received: from ?IPv6:2003:ea:8bf1:e200:f1bd:c97d:6fa2:e035? (p200300EA8BF1E200F1BDC97D6FA2E035.dip0.t-ipconnect.de. [2003:ea:8bf1:e200:f1bd:c97d:6fa2:e035]) by smtp.googlemail.com with ESMTPSA id 60sm144215927wrb.81.2019.01.20.01.05.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 20 Jan 2019 01:05:27 -0800 (PST) Subject: [PATCH net-next v2 3/4] net: phy: start interrupts in phy_start From: Heiner Kallweit To: Andrew Lunn , Florian Fainelli , David Miller Cc: "netdev@vger.kernel.org" References: <36a3f6a9-7f4c-7d51-05aa-71e847132102@gmail.com> Message-ID: <9947dc4e-7868-2fa4-abb8-cc5b42f0ecd9@gmail.com> Date: Sun, 20 Jan 2019 10:03:24 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <36a3f6a9-7f4c-7d51-05aa-71e847132102@gmail.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Interrupts don't have to be enabled before calling phy_start(). Therefore let's enable them in phy_start(). In a subsequent step we'll remove enabling interrupts from phy_connect_direct(). Signed-off-by: Heiner Kallweit --- drivers/net/phy/phy.c | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index fd928979b..30ba650bb 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -857,7 +857,7 @@ EXPORT_SYMBOL(phy_stop); */ void phy_start(struct phy_device *phydev) { - int err = 0; + int err; mutex_lock(&phydev->lock); @@ -867,28 +867,22 @@ void phy_start(struct phy_device *phydev) goto out; } - switch (phydev->state) { - case PHY_READY: - phydev->state = PHY_UP; - phy_start_machine(phydev); - break; - case PHY_HALTED: - /* if phy was suspended, bring the physical link up again */ - __phy_resume(phydev); + /* if phy was suspended, bring the physical link up again */ + __phy_resume(phydev); - /* make sure interrupts are re-enabled for the PHY */ - if (phy_interrupt_is_valid(phydev)) { - err = phy_enable_interrupts(phydev); - if (err < 0) - break; - } + /* make sure interrupts are enabled for the PHY */ + if (phy_interrupt_is_valid(phydev)) { + err = phy_enable_interrupts(phydev); + if (err < 0) + goto out; + } + if (phydev->state == PHY_READY) + phydev->state = PHY_UP; + else phydev->state = PHY_RESUMING; - phy_start_machine(phydev); - break; - default: - break; - } + + phy_start_machine(phydev); out: mutex_unlock(&phydev->lock); } From patchwork Sun Jan 20 09:05:12 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heiner Kallweit X-Patchwork-Id: 1028127 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=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="BRP0+Elc"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43j80b2HKfz9s3l for ; Sun, 20 Jan 2019 20:05:35 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730375AbfATJFd (ORCPT ); Sun, 20 Jan 2019 04:05:33 -0500 Received: from mail-wr1-f67.google.com ([209.85.221.67]:33297 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730353AbfATJFb (ORCPT ); Sun, 20 Jan 2019 04:05:31 -0500 Received: by mail-wr1-f67.google.com with SMTP id c14so19929623wrr.0 for ; Sun, 20 Jan 2019 01:05:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=FXr9/+MpfXkyN1PkHuGam2I51hIqcIZpQijpkYxKNFs=; b=BRP0+Elcw6q77BC+7DMYT73htcV6s+AgwcfTnJ1Hf+R9Fd45iRmU9PlSzFGIt9J+dc adclNUDzQFbS2COfMT7Y6ub8+qxuW0nlbCtI36D9MDc6SJKLDxMZdX1KXDvTm7octfvv SSuMj3LrU2SFxpK8vSplfTuHBIASPlr8IEkM2x9D5UC4jkl+yQ9d/ruwkGM6sNML/HEc AOSImFk/yVgu4vHizFcoJOD/67QWkgudYujpRm2slzNL1mKiRoIyekKbypRbENRm9dG8 gClw7QM7sElTHXbQZS6smLn497e2cqg1vyfvgDJtSg+EVgVMnM4BCGndXwzenz5Z1GWo kl/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=FXr9/+MpfXkyN1PkHuGam2I51hIqcIZpQijpkYxKNFs=; b=sLLvJAuE/zQlLF+9HOo130aXfDHwkv9kcCUJVYynkfOk18AaLTQVZiVsyAwIAmfDCr uvDnnNk2nsU0denmcnbq5l2zckPIU3VjVBRhOdhZl2LmSZOg85KnK9PvevCuoLm67O7s T2g8N91IYxAm+tQaU66p3epdOeYGm/gM3B7CrvXOFsnqU+utZdWVcaG7zIxCWCv85bxM /moqOVqTdp+TkXb2dZ4XBAXYCq8l+owvw4RosBSk6Nc5JFnga8+1F1dQbqCB6tfpWecV JgXhyFcvkYK8dVA5o8jCwuy3rL/nBdon45Jh4sgx6mfZiBErvmkflzYQfV3JsRUo9B/d MUzQ== X-Gm-Message-State: AJcUukeqpmXHMBYRB3hETSGXdmKo5piPgDsxTo42zUFKykfkwa8/j2of OHDW7Q3rJxAs2IU7xfwCNaj7gK+7 X-Google-Smtp-Source: ALg8bN4/iGD7gl3GyNTd1rvtQsdIZessblL42pxFvZc8KNZ8+8u7c9RV42VnxP7BGlgLGpEO1qMK/A== X-Received: by 2002:a5d:444a:: with SMTP id x10mr24053138wrr.162.1547975128880; Sun, 20 Jan 2019 01:05:28 -0800 (PST) Received: from ?IPv6:2003:ea:8bf1:e200:f1bd:c97d:6fa2:e035? (p200300EA8BF1E200F1BDC97D6FA2E035.dip0.t-ipconnect.de. [2003:ea:8bf1:e200:f1bd:c97d:6fa2:e035]) by smtp.googlemail.com with ESMTPSA id y138sm54434956wmc.16.2019.01.20.01.05.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 20 Jan 2019 01:05:28 -0800 (PST) Subject: [PATCH net-next v2 4/4] net: phy: change phy_start_interrupts to phy_request_interrupt From: Heiner Kallweit To: Andrew Lunn , Florian Fainelli , David Miller Cc: "netdev@vger.kernel.org" References: <36a3f6a9-7f4c-7d51-05aa-71e847132102@gmail.com> Message-ID: <54397ae4-b13d-387a-92d8-63d4eb35ad60@gmail.com> Date: Sun, 20 Jan 2019 10:05:12 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <36a3f6a9-7f4c-7d51-05aa-71e847132102@gmail.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Now that we enable the interrupts in phy_start() we don't have to do it before. Therefore remove enabling interrupts from phy_start_interrupts() and rename this function to reflect the changed functionality. v2: - improve warning to clearly state that we fall back to polling Signed-off-by: Heiner Kallweit --- drivers/net/phy/phy.c | 23 +++++++++++------------ drivers/net/phy/phy_device.c | 4 ++-- drivers/net/phy/phylink.c | 4 ++-- include/linux/phy.h | 2 +- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 30ba650bb..58ce3dac2 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -790,28 +790,27 @@ static int phy_enable_interrupts(struct phy_device *phydev) } /** - * phy_start_interrupts - request and enable interrupts for a PHY device + * phy_request_interrupt - request interrupt for a PHY device * @phydev: target phy_device struct * * Description: Request the interrupt for the given PHY. * If this fails, then we set irq to PHY_POLL. - * Otherwise, we enable the interrupts in the PHY. * This should only be called with a valid IRQ number. - * Returns 0 on success or < 0 on error. */ -int phy_start_interrupts(struct phy_device *phydev) +void phy_request_interrupt(struct phy_device *phydev) { - if (request_threaded_irq(phydev->irq, NULL, phy_interrupt, - IRQF_ONESHOT | IRQF_SHARED, - phydev_name(phydev), phydev) < 0) { - phydev_warn(phydev, "Can't get IRQ %d\n", phydev->irq); + int err; + + err = request_threaded_irq(phydev->irq, NULL, phy_interrupt, + IRQF_ONESHOT | IRQF_SHARED, + phydev_name(phydev), phydev); + if (err) { + phydev_warn(phydev, "Error %d requesting IRQ %d, falling back to polling\n", + err, phydev->irq); phydev->irq = PHY_POLL; - return 0; } - - return phy_enable_interrupts(phydev); } -EXPORT_SYMBOL(phy_start_interrupts); +EXPORT_SYMBOL(phy_request_interrupt); /** * phy_stop - Bring down the PHY link, and stop checking the status diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 3e284d596..dd3a2302f 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -944,8 +944,8 @@ int phy_connect_direct(struct net_device *dev, struct phy_device *phydev, return rc; phy_prepare_link(phydev, handler); - if (phydev->irq > 0) - phy_start_interrupts(phydev); + if (phy_interrupt_is_valid(phydev)) + phy_request_interrupt(phydev); return 0; } diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c index e9b8f1037..1ac832ba0 100644 --- a/drivers/net/phy/phylink.c +++ b/drivers/net/phy/phylink.c @@ -679,8 +679,8 @@ static int phylink_bringup_phy(struct phylink *pl, struct phy_device *phy) __ETHTOOL_LINK_MODE_MASK_NBITS, pl->supported, __ETHTOOL_LINK_MODE_MASK_NBITS, phy->advertising); - if (phy->irq > 0) - phy_start_interrupts(phy); + if (phy_interrupt_is_valid(phy)) + phy_request_interrupt(phy); return 0; } diff --git a/include/linux/phy.h b/include/linux/phy.h index 1fa7c367b..d0055adbc 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -1045,7 +1045,7 @@ void phy_ethtool_ksettings_get(struct phy_device *phydev, int phy_ethtool_ksettings_set(struct phy_device *phydev, const struct ethtool_link_ksettings *cmd); int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd); -int phy_start_interrupts(struct phy_device *phydev); +void phy_request_interrupt(struct phy_device *phydev); void phy_print_status(struct phy_device *phydev); int phy_set_max_speed(struct phy_device *phydev, u32 max_speed); void phy_remove_link_mode(struct phy_device *phydev, u32 link_mode);