From patchwork Thu Jul 1 08:10:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Koba Ko X-Patchwork-Id: 1499436 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4GFrWH11HMz9sWw; Thu, 1 Jul 2021 18:10:51 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1lyrmZ-0000eA-KK; Thu, 01 Jul 2021 08:10:47 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1lyrmW-0000dw-Jw for kernel-team@lists.ubuntu.com; Thu, 01 Jul 2021 08:10:44 +0000 Received: from mail-pl1-f199.google.com ([209.85.214.199]) by youngberry.canonical.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from ) id 1lyrmW-0003Kv-Cl for kernel-team@lists.ubuntu.com; Thu, 01 Jul 2021 08:10:44 +0000 Received: by mail-pl1-f199.google.com with SMTP id t10-20020a170902b20ab029011b9ceafaafso2237468plr.11 for ; Thu, 01 Jul 2021 01:10:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=voVdWJKHA1X2JNCyRB9ZIVDsXNWSU3vV9AWSxzL0nV8=; b=hZgKDaCPBulTtKiGUij68P1Tpj8MSbyCfEuAU8mNWJV2w4wn6L9zsJkIL9SHG8FWZT Tp1moZKlSuxLJP4GMqB3YUreZp0URedf2r8WfQvvshy30ZaYuorD139704lQ7atSmINs cdoaYiHCHTOFnsFF54AfpxPnrI/r1EWXKjEvnmB3KGw04FY8mLbjicJCkxq5B/S40ihe dewizxre3gR0YpHkJTlj+oBkwkjEB8UXUjeJHWMxPQ+ofK7xwlOT1IVFgbRz7hks3d69 +rtHusMSi2pAqD3QO7gDdCOXAMb0+BdJqloMbRgGQ/sMo3BaXxGU7kmuUquBcr4iq6HU earw== X-Gm-Message-State: AOAM530/DI5UH8fahuRit3ugDQ03wYoJU7OT1JNVl0eAzud9g2isE0b2 PYdhKz8hcfRpIVq9Hlr2d8tK+fmwJ0aCEUF1kVXuxrxJWyN+Ho0fcM2Ml2Wzyb5BMrUgCWDJNPS eGqwOYkmshjKVZjkNYg5ON50SFGJ+YCCtyINfDoks/A== X-Received: by 2002:a17:902:e80f:b029:127:a484:fc1a with SMTP id u15-20020a170902e80fb0290127a484fc1amr10506474plg.70.1625127042772; Thu, 01 Jul 2021 01:10:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzzaweqZFxnZPJXhcu/DtmFeOt5KIhDr8mV79/Zu8KE8Uhy4zZNNV8QDObnl/3rlRfad4rbnQ== X-Received: by 2002:a17:902:e80f:b029:127:a484:fc1a with SMTP id u15-20020a170902e80fb0290127a484fc1amr10506437plg.70.1625127042152; Thu, 01 Jul 2021 01:10:42 -0700 (PDT) Received: from canonical.com (61-220-137-34.HINET-IP.hinet.net. [61.220.137.34]) by smtp.gmail.com with ESMTPSA id f15sm21021812pfj.84.2021.07.01.01.10.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Jul 2021 01:10:41 -0700 (PDT) From: Koba Ko To: kernel-team@lists.ubuntu.com Subject: [PATCH V2][SRU][OEM-5.13] UBUNTU: SAUCE: r8169: Use PHY_POLL when RTL8106E enable ASPM Date: Thu, 1 Jul 2021 16:10:38 +0800 Message-Id: <20210701081040.559253-1-koba.ko@canonical.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" BugLink: https://bugs.launchpad.net/bugs/1930645 For RTL8106E, it's a Fast-ethernet chip. If ASPM is enabled, the link chang interrupt wouldn't be triggered immediately and must wait a very long time to get link change interrupt. Even the link change interrupt isn't triggered, the phy link is already established. Use PHY_POLL to watch the status of phy link when ASPM is enabled on RTL8106E. Signed-off-by: Koba Ko --- drivers/net/ethernet/realtek/r8169_main.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c index 88ff10fde853..b3c88ad943b1 100644 --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c @@ -2246,6 +2246,19 @@ static int rtl_set_mac_address(struct net_device *dev, void *p) return 0; } +static int rtl_phy_poll_quirk(struct rtl8169_private *tp) +{ + struct pci_dev *pdev = tp->pci_dev; + + if (!pcie_aspm_enabled(pdev)) + return 0; + + if (tp->mac_version == RTL_GIGA_MAC_VER_39) + return 1; + + return 0; +} + static void rtl_wol_enable_rx(struct rtl8169_private *tp) { if (tp->mac_version >= RTL_GIGA_MAC_VER_25) @@ -5085,7 +5098,8 @@ static int r8169_mdio_register(struct rtl8169_private *tp) new_bus->name = "r8169"; new_bus->priv = tp; new_bus->parent = &pdev->dev; - new_bus->irq[0] = PHY_MAC_INTERRUPT; + new_bus->irq[0] = + (rtl_phy_poll_quirk(tp) ? PHY_POLL : PHY_MAC_INTERRUPT); snprintf(new_bus->id, MII_BUS_ID_SIZE, "r8169-%x", pci_dev_id(pdev)); new_bus->read = r8169_mdio_read_reg;