From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 45BA1C43381 for ; Sat, 30 Mar 2019 09:22:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 10D922184C for ; Sat, 30 Mar 2019 09:22:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="uubhnolQ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730521AbfC3JWz (ORCPT ); Sat, 30 Mar 2019 05:22:55 -0400 Received: from mail-wr1-f65.google.com ([209.85.221.65]:42154 "EHLO mail-wr1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730414AbfC3JWx (ORCPT ); Sat, 30 Mar 2019 05:22:53 -0400 Received: by mail-wr1-f65.google.com with SMTP id g3so5460406wrx.9 for ; Sat, 30 Mar 2019 02:22:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:cc:from:subject:message-id:date:user-agent:mime-version :content-language:content-transfer-encoding; bh=07YSD1003iaNW3h//OwG7a/AuY4opKc9um0jw5DeFMw=; b=uubhnolQhMGV0KgS3BlO6COqOt7mz0wKU7HUet+D5ZrFYdO+dw/2lQ+hFR0RxT+WG/ DQ2iPnriQNVzmDDCGw5tPAGsNRGlXrZz9J0UUgFRoaGS0rM+ohw3Ks0rQcqIxhyd+Rl5 iIvE9j9hv3NVInWRGqNiE3wg/hjcCQcotyMX+rfscYu//EKprWaLq+UfxiZoma4ujQmG VR4Mw33FfPUAglAo5soUZXLfTxaqoXu2uRDHeemC4rwTv4RkE+mrzvZ1q0rpKXsI+f4Z i5Di1pd/ewcQAf5v8vqvF5xjcpuAKqpHC4oIRBuddUgbPBj9TyFXhJIRFo3uO0dCysaA 8jMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:cc:from:subject:message-id:date:user-agent :mime-version:content-language:content-transfer-encoding; bh=07YSD1003iaNW3h//OwG7a/AuY4opKc9um0jw5DeFMw=; b=cAMlhWzlyGY63xgazTEfpUvJ95XvE9MaKBgeLgFdyjWdLOwNl/PynBzryCnFJUmCj7 T85Bl9vUcPUA4zBeJR14oJONw1Q4x49f2taif1298YM++U2Y5lcd+ZMNUOV3Zefkdcsb /F/iykng/kBhDLFWgpRiqlWduFUT4b0c+SxQxv0jHmKk2zAMF7DuLKhUDEcFyXg+A2sT /nxks4OUIFnm424GqkwCcuOJB1LH2ymwcRhOzv4yVPkjFdF82dFWRLRTEACfNCa1XYpJ 7WBaSGm0tssow1TqfifiJVAMZK4Mx5SwuXY265+x8dHEyIcPY2Q/uwYym3q27g2Gjnix bLNg== X-Gm-Message-State: APjAAAUAQ8n5LXgFD8+GiZh5KJGWZxck40rJFrktEwXhK9oazJD5GlKy cGcCe4DgqqDAkYqqTOHEHSm+Xzv+ X-Google-Smtp-Source: APXvYqxkKjwZ/37PX+/s+7m3afhpvxpn/NF1k/db4rdGLmyX0kYAWXpv/q1ZuPZ2inK7FC2PR6wTVg== X-Received: by 2002:adf:fecb:: with SMTP id q11mr32550273wrs.252.1553937771471; Sat, 30 Mar 2019 02:22:51 -0700 (PDT) Received: from ?IPv6:2003:ea:8be1:dd00:7ccd:5549:2050:93de? (p200300EA8BE1DD007CCD5549205093DE.dip0.t-ipconnect.de. [2003:ea:8be1:dd00:7ccd:5549:2050:93de]) by smtp.googlemail.com with ESMTPSA id h10sm6833985wrs.27.2019.03.30.02.22.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 30 Mar 2019 02:22:50 -0700 (PDT) To: Andrew Lunn , Florian Fainelli , David Miller Cc: "netdev@vger.kernel.org" From: Heiner Kallweit Subject: [PATCH net-next] net: phy: improve genphy_read_status Message-ID: <36da82de-6dad-939e-7604-d3c0b93f54c8@gmail.com> Date: Sat, 30 Mar 2019 10:22:45 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch improves few aspects of genphy_read_status(): - Don't initialize lpagb, it's not needed. - Move initializing phydev->speed et al before the if clause. - In auto-neg case, skip populating lp_advertising if we don't have a link. This avoids quite some unnecessary MDIO reads in case of phylib polling mode. Signed-off-by: Heiner Kallweit --- drivers/net/phy/phy_device.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 0c4cc9b54..67fc581e3 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -1743,19 +1743,21 @@ EXPORT_SYMBOL(genphy_update_link); */ int genphy_read_status(struct phy_device *phydev) { - int adv; - int err; - int lpa; - int lpagb = 0; + int adv, lpa, lpagb, err; /* Update the link, but return if there was an error */ err = genphy_update_link(phydev); if (err) return err; + phydev->speed = SPEED_UNKNOWN; + phydev->duplex = DUPLEX_UNKNOWN; + phydev->pause = 0; + phydev->asym_pause = 0; + linkmode_zero(phydev->lp_advertising); - if (AUTONEG_ENABLE == phydev->autoneg) { + if (phydev->autoneg == AUTONEG_ENABLE && phydev->link) { if (linkmode_test_bit(ETHTOOL_LINK_MODE_1000baseT_Half_BIT, phydev->supported) || linkmode_test_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT, @@ -1785,14 +1787,8 @@ int genphy_read_status(struct phy_device *phydev) return lpa; mii_lpa_mod_linkmode_lpa_t(phydev->lp_advertising, lpa); - - phydev->speed = SPEED_UNKNOWN; - phydev->duplex = DUPLEX_UNKNOWN; - phydev->pause = 0; - phydev->asym_pause = 0; - phy_resolve_aneg_linkmode(phydev); - } else { + } else if (phydev->autoneg == AUTONEG_DISABLE) { int bmcr = phy_read(phydev, MII_BMCR); if (bmcr < 0) @@ -1809,9 +1805,6 @@ int genphy_read_status(struct phy_device *phydev) phydev->speed = SPEED_100; else phydev->speed = SPEED_10; - - phydev->pause = 0; - phydev->asym_pause = 0; } return 0; -- 2.21.0