From patchwork Wed Feb 13 19:11:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heiner Kallweit X-Patchwork-Id: 1041547 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="Sh/FwJHG"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 4408LW4p4rz9s1l for ; Thu, 14 Feb 2019 06:13:07 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730886AbfBMTNF (ORCPT ); Wed, 13 Feb 2019 14:13:05 -0500 Received: from mail-wm1-f66.google.com ([209.85.128.66]:50901 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726384AbfBMTNF (ORCPT ); Wed, 13 Feb 2019 14:13:05 -0500 Received: by mail-wm1-f66.google.com with SMTP id x7so3745426wmj.0 for ; Wed, 13 Feb 2019 11:13:04 -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=JTO9RejW/5Mj2hV0jnaefLZvGYm5enNXSJspwr0csNA=; b=Sh/FwJHGsuiDkmd5Hpc40vyuSlasaXo41EBizuSm2bffMzVFQVx+Sy0QxFbphVNN0V vBPWN7GkKIdSTdLh0Gf6faLciJH5OIVMlIwg+Rp05nzHYgEzNQkGbm59iDhs4smwp93b Z7bt1Rg9Xbr0bBvkHvjPNNHj0igP12crUfj7guaZR7l+Chqc9Ig+77LUwOSqA+Z7gVrT 1Wzry0O5Kl0FrzdkS5RaX7BlRuECfZO0l0EBeUcy6o2MS3NlxcGitL/8xN20a1BJhFRr uj8EaBvuGYNJviYHumkuVLqAPaOfStT50TwiNifpIUdK9lO2YQHDN2ch15Y9NEIwCBFA rO9Q== 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=JTO9RejW/5Mj2hV0jnaefLZvGYm5enNXSJspwr0csNA=; b=bHMcx5m/E2H8Zr/ni6PPLuRDDhws20eRk6i6M7L9UTx4mwcFVdCEvw6pm7MOIxKlsu rUuoYKob1k7QlLjtgaZj9oE0dxmlgaqAmQOzaZrN2IqGy1sdcfuUZ+HpZgqMPWz0PtUF kd7sijaEwfU6b2synzhhsbh33GGzU+r6SbQ3a1KIdrj1FG7H4DHJzMVwzZj7kCTw+P1p Sp14GaSZGO4OircC/rF1z7Rayri6+zQpbcR8xDvYV6EW5sArvSI0PFpx3cJs5E/Y5Wa9 OEgpPyefDoe3EIKcI2FYGRE832qzlgNq4S49pdWi5F3A23HZfsrqrWObi18grkf3PXQF GXyQ== X-Gm-Message-State: AHQUAuYLUuFfsxJBdxz6sMEMcX2ZW7jAO/ge72cuJFZoOaj+kI7QPR62 nlPKZo2bTGpTukbCf9Qqj6RucV2F X-Google-Smtp-Source: AHgI3Ia5zkrftnO4ESEWhn5JIyqySuU78c4Q2UqV0kKS3VdXG7dTxc9SButsyEXFDQiBW4idP6VXKQ== X-Received: by 2002:a1c:4006:: with SMTP id n6mr1526218wma.137.1550085183353; Wed, 13 Feb 2019 11:13:03 -0800 (PST) Received: from ?IPv6:2003:ea:8bf1:e200:a96a:7a3b:9f9b:531c? (p200300EA8BF1E200A96A7A3B9F9B531C.dip0.t-ipconnect.de. [2003:ea:8bf1:e200:a96a:7a3b:9f9b:531c]) by smtp.googlemail.com with ESMTPSA id z14sm59275wrm.48.2019.02.13.11.13.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 13 Feb 2019 11:13:02 -0800 (PST) Subject: [PATCH net 1/2] net: phy: don't use locking in phy_is_started From: Heiner Kallweit To: Andrew Lunn , Florian Fainelli , David Miller Cc: Russell King - ARM Linux , "netdev@vger.kernel.org" References: <2a39271d-3b9e-e425-98b4-b2a24074e806@gmail.com> Message-ID: <2e6abca8-6a60-a7f0-b3e3-0d55fbebd4fc@gmail.com> Date: Wed, 13 Feb 2019 20:11:40 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.5.0 MIME-Version: 1.0 In-Reply-To: <2a39271d-3b9e-e425-98b4-b2a24074e806@gmail.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Russell suggested to remove the locking from phy_is_started() because the read is atomic anyway and actually the locking may be more misleading. Fixes: 2b3e88ea6528 ("net: phy: improve phy state checking") Suggested-by: Russell King - ARM Linux admin Signed-off-by: Heiner Kallweit Reviewed-by: Florian Fainelli --- drivers/net/phy/phy.c | 11 +++++------ include/linux/phy.h | 15 +-------------- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index ca5e0c0f018c..602816d70281 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -553,7 +553,7 @@ int phy_start_aneg(struct phy_device *phydev) if (err < 0) goto out_unlock; - if (__phy_is_started(phydev)) { + if (phy_is_started(phydev)) { if (phydev->autoneg == AUTONEG_ENABLE) { err = phy_check_link_status(phydev); } else { @@ -709,7 +709,7 @@ void phy_stop_machine(struct phy_device *phydev) cancel_delayed_work_sync(&phydev->state_queue); mutex_lock(&phydev->lock); - if (__phy_is_started(phydev)) + if (phy_is_started(phydev)) phydev->state = PHY_UP; mutex_unlock(&phydev->lock); } @@ -839,15 +839,14 @@ EXPORT_SYMBOL(phy_stop_interrupts); */ void phy_stop(struct phy_device *phydev) { - mutex_lock(&phydev->lock); - - if (!__phy_is_started(phydev)) { + if (!phy_is_started(phydev)) { WARN(1, "called from state %s\n", phy_state_to_str(phydev->state)); - mutex_unlock(&phydev->lock); return; } + mutex_lock(&phydev->lock); + if (phy_interrupt_is_valid(phydev)) phy_disable_interrupts(phydev); diff --git a/include/linux/phy.h b/include/linux/phy.h index ef20aeea10cc..127fcc9c3778 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -674,26 +674,13 @@ phy_lookup_setting(int speed, int duplex, const unsigned long *mask, size_t phy_speeds(unsigned int *speeds, size_t size, unsigned long *mask); -static inline bool __phy_is_started(struct phy_device *phydev) -{ - WARN_ON(!mutex_is_locked(&phydev->lock)); - - return phydev->state >= PHY_UP; -} - /** * phy_is_started - Convenience function to check whether PHY is started * @phydev: The phy_device struct */ static inline bool phy_is_started(struct phy_device *phydev) { - bool started; - - mutex_lock(&phydev->lock); - started = __phy_is_started(phydev); - mutex_unlock(&phydev->lock); - - return started; + return phydev->state >= PHY_UP; } void phy_resolve_aneg_linkmode(struct phy_device *phydev);