From patchwork Fri Jul 9 19:08:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Asmaa Mnebhi X-Patchwork-Id: 1503321 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 4GM2kz0HTRz9sRN; Sat, 10 Jul 2021 05:08:59 +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 1m1vrr-0003Bo-2d; Fri, 09 Jul 2021 19:08:55 +0000 Received: from mail-il-dmz.mellanox.com ([193.47.165.129] helo=mellanox.co.il) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1m1vrn-00039R-3c for kernel-team@lists.ubuntu.com; Fri, 09 Jul 2021 19:08:51 +0000 Received: from Internal Mail-Server by MTLPINE1 (envelope-from asmaa@mellanox.com) with SMTP; 9 Jul 2021 22:08:47 +0300 Received: from farm-0002.mtbu.labs.mlnx (farm-0002.mtbu.labs.mlnx [10.15.2.32]) by mtbu-labmailer.labs.mlnx (8.14.4/8.14.4) with ESMTP id 169J8l8t030202; Fri, 9 Jul 2021 15:08:47 -0400 Received: (from asmaa@localhost) by farm-0002.mtbu.labs.mlnx (8.14.7/8.13.8/Submit) id 169J8lRB005458; Fri, 9 Jul 2021 15:08:47 -0400 From: Asmaa Mnebhi To: kernel-team@lists.ubuntu.com Subject: [SRU][F][PULL][PATCH v2 05/23] Revert "Revert "UBUNTU: SAUCE: Fix intermittent OOB link up issue"" Date: Fri, 9 Jul 2021 15:08:12 -0400 Message-Id: <20210709190830.5405-6-asmaa@nvidia.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210709190830.5405-1-asmaa@nvidia.com> References: <20210709190830.5405-1-asmaa@nvidia.com> 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: , Cc: asmaa@nvidia.com, davthompson@nvidia.com Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" BugLink: https://bugs.launchpad.net/bugs/1934923 This reverts commit 846c602c6b93c9ff08abc6615973efcdd35a92bb. Signed-off-by: Asmaa Mnebhi --- .../mellanox/mlxbf_gige/mlxbf_gige_main.c | 39 +++++-------------- .../mellanox/mlxbf_gige/mlxbf_gige_mdio.c | 4 +- 2 files changed, 12 insertions(+), 31 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c index 85a7ce19a6ff..63ea74ad5ee5 100644 --- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c +++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c @@ -21,7 +21,7 @@ #include "mlxbf_gige_regs.h" #define DRV_NAME "mlxbf_gige" -#define DRV_VERSION "1.10" +#define DRV_VERSION "1.14" static void mlxbf_gige_set_mac_rx_filter(struct mlxbf_gige *priv, unsigned int index, u64 dmac) @@ -862,34 +862,18 @@ static int mlxbf_gige_clean_port(struct mlxbf_gige *priv) return err; } -static int mlxbf_gige_phy_enable_interrupt(struct phy_device *phydev) +static int mlxbf_gige_phy_disable_interrupt(struct phy_device *phydev) { int err = 0; - if (phydev->drv->ack_interrupt) - err = phydev->drv->ack_interrupt(phydev); - if (err < 0) - return err; - - phydev->interrupts = PHY_INTERRUPT_ENABLED; + phydev->interrupts = PHY_INTERRUPT_DISABLED; if (phydev->drv->config_intr) err = phydev->drv->config_intr(phydev); - - return err; -} - -static int mlxbf_gige_phy_disable_interrupt(struct phy_device *phydev) -{ - int err = 0; - - if (phydev->drv->ack_interrupt) - err = phydev->drv->ack_interrupt(phydev); if (err < 0) return err; - phydev->interrupts = PHY_INTERRUPT_DISABLED; - if (phydev->drv->config_intr) - err = phydev->drv->config_intr(phydev); + if (phydev->drv->ack_interrupt) + err = phydev->drv->ack_interrupt(phydev); return err; } @@ -915,15 +899,10 @@ static int mlxbf_gige_open(struct net_device *netdev) if (err) return err; + phydev->irq = priv->phy_irq; + mlxbf_gige_mdio_enable_phy_int(priv); + phy_start(phydev); - /* Always make sure interrupts are enabled since phy_start calls - * __phy_resume which may reset the PHY interrupt control reg. - * __phy_resume only reenables the interrupts if - * phydev->irq != IRQ_IGNORE_INTERRUPT. - */ - err = mlxbf_gige_phy_enable_interrupt(phydev); - if (err) - return err; netif_napi_add(netdev, &priv->napi, mlxbf_gige_poll, NAPI_POLL_WEIGHT); napi_enable(&priv->napi); @@ -1292,6 +1271,8 @@ static int mlxbf_gige_remove(struct platform_device *pdev) struct mlxbf_gige *priv = platform_get_drvdata(pdev); unregister_netdev(priv->netdev); + priv->netdev->phydev->irq = PHY_IGNORE_INTERRUPT; + mlxbf_gige_phy_disable_interrupt(priv->netdev->phydev); phy_disconnect(priv->netdev->phydev); mlxbf_gige_mdio_remove(priv); platform_set_drvdata(pdev, NULL); diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_mdio.c b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_mdio.c index 636e19cf7050..4b063330ec28 100644 --- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_mdio.c +++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_mdio.c @@ -161,7 +161,7 @@ static void mlxbf_gige_mdio_disable_phy_int(struct mlxbf_gige *priv) spin_unlock_irqrestore(&priv->gpio_lock, flags); } -static void mlxbf_gige_mdio_enable_phy_int(struct mlxbf_gige *priv) +void mlxbf_gige_mdio_enable_phy_int(struct mlxbf_gige *priv) { unsigned long flags; u32 val; @@ -258,7 +258,7 @@ int mlxbf_gige_mdio_probe(struct platform_device *pdev, struct mlxbf_gige *priv) phy_int_gpio = MLXBF_GIGE_GPIO12_BIT; priv->phy_int_gpio_mask = BIT(phy_int_gpio); - mlxbf_gige_mdio_enable_phy_int(priv); + mlxbf_gige_mdio_disable_phy_int(priv); priv->mdiobus = devm_mdiobus_alloc(dev); if (!priv->mdiobus) {