From patchwork Fri Aug 25 22:23:29 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Iyappan Subramanian X-Patchwork-Id: 806043 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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; dkim=pass (1024-bit key; unprotected) header.d=apm.com header.i=@apm.com header.b="SSgYLZ8E"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xfG0S6mTPz9t3k for ; Sat, 26 Aug 2017 08:23:52 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934857AbdHYWXv (ORCPT ); Fri, 25 Aug 2017 18:23:51 -0400 Received: from mail-pg0-f50.google.com ([74.125.83.50]:38282 "EHLO mail-pg0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933777AbdHYWXs (ORCPT ); Fri, 25 Aug 2017 18:23:48 -0400 Received: by mail-pg0-f50.google.com with SMTP id b8so5663368pgn.5 for ; Fri, 25 Aug 2017 15:23:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apm.com; s=apm; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=TpAWZn2aLl6SBtbyAVvw6mlUIyJkdVqlBfZk/Sw02XU=; b=SSgYLZ8Exqf9kj1oERaLJHGz+l4NHwVvCU73x4Vc4//BMbNF1cdnS4s0Vv3WxZEtQA 82F1HLSLOwPAcdbHKL2U8tuO6vuLFprLW4Q5S21ILJoRZwLqxsmOOI2lS5BZ9hK08qUm 0uLR6ZJKFwdyzIGjhxL3+a8dzW+KOiQuwLABs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=TpAWZn2aLl6SBtbyAVvw6mlUIyJkdVqlBfZk/Sw02XU=; b=NGmFvVgq3J0VcYGW4AvDmzMRrmgpAFsDDkpvAoGbMIq8Z0OIca/oBNNepAeiX11j5n Swl4MkekcrNgkU2S7XPRDWecUFHi9XNUJh8Mz0kxz3RxG2Tcy6PkwbFRkOXZTf32RTSZ B+T/d2yHgjL9KrbMd09tbLv8ZK9wc1Vza6PmtbhcAr9WHlsO/Z6kYTIuySAVpcfoPHq0 hhBzAuAzOQaxMyhUjzRP9PeZHAZBNerJTJW5dltFSf1KoIFX1+YfICDiCxF580LeMQVh +QFMNZLN8y6pnpRZuxPYD71UlcFR0D0Xb0T1Ai5epFg6cg0scnD0dohm46Bqe2D4XSWS eIWA== X-Gm-Message-State: AHYfb5iKl16nGDpzFCLchxM4iTszf2KQ7jEz8aOBOxGrhByVJYW4SUB8 gUcygskxeaKiVQcE X-Received: by 10.98.220.93 with SMTP id t90mr11380756pfg.158.1503699827977; Fri, 25 Aug 2017 15:23:47 -0700 (PDT) Received: from isubrama-dev.amcc.com ([206.80.4.98]) by smtp.gmail.com with ESMTPSA id c80sm13889519pfj.26.2017.08.25.15.23.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 25 Aug 2017 15:23:46 -0700 (PDT) From: Iyappan Subramanian To: davem@davemloft.net, netdev@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, dnelson@redhat.com, qnguyen@apm.com, patches@apm.com, Iyappan Subramanian Subject: [PATCH 1/2] drivers: net: xgene: Correct probe sequence handling Date: Fri, 25 Aug 2017 15:23:29 -0700 Message-Id: <1503699810-12803-2-git-send-email-isubramanian@apm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1503699810-12803-1-git-send-email-isubramanian@apm.com> References: <1503699810-12803-1-git-send-email-isubramanian@apm.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quan Nguyen The phy is connected at early stage of probe but not properly disconnected if error occurs. This patch fixes the issue. Also changing the return type of xgene_enet_check_phy_handle(), since this function always returns success. Signed-off-by: Quan Nguyen Signed-off-by: Iyappan Subramanian --- drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 27 ++++++++++++------------ 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c index 1d307f2..6e253d9 100644 --- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c +++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c @@ -1661,21 +1661,21 @@ static int xgene_enet_get_irqs(struct xgene_enet_pdata *pdata) return 0; } -static int xgene_enet_check_phy_handle(struct xgene_enet_pdata *pdata) +static void xgene_enet_check_phy_handle(struct xgene_enet_pdata *pdata) { int ret; if (pdata->phy_mode == PHY_INTERFACE_MODE_XGMII) - return 0; + return; if (!IS_ENABLED(CONFIG_MDIO_XGENE)) - return 0; + return; ret = xgene_enet_phy_connect(pdata->ndev); if (!ret) pdata->mdio_driver = true; - return 0; + return; } static void xgene_enet_gpiod_get(struct xgene_enet_pdata *pdata) @@ -1779,10 +1779,6 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata) if (ret) return ret; - ret = xgene_enet_check_phy_handle(pdata); - if (ret) - return ret; - xgene_enet_gpiod_get(pdata); pdata->clk = devm_clk_get(&pdev->dev, NULL); @@ -2097,9 +2093,11 @@ static int xgene_enet_probe(struct platform_device *pdev) goto err; } + xgene_enet_check_phy_handle(pdata); + ret = xgene_enet_init_hw(pdata); if (ret) - goto err; + goto err2; link_state = pdata->mac_ops->link_state; if (pdata->phy_mode == PHY_INTERFACE_MODE_XGMII) { @@ -2117,29 +2115,30 @@ static int xgene_enet_probe(struct platform_device *pdev) spin_lock_init(&pdata->stats_lock); ret = xgene_extd_stats_init(pdata); if (ret) - goto err2; + goto err1; xgene_enet_napi_add(pdata); ret = register_netdev(ndev); if (ret) { netdev_err(ndev, "Failed to register netdev\n"); - goto err2; + goto err1; } return 0; -err2: +err1: /* * If necessary, free_netdev() will call netif_napi_del() and undo * the effects of xgene_enet_napi_add()'s calls to netif_napi_add(). */ + xgene_enet_delete_desc_rings(pdata); + +err2: if (pdata->mdio_driver) xgene_enet_phy_disconnect(pdata); else if (phy_interface_mode_is_rgmii(pdata->phy_mode)) xgene_enet_mdio_remove(pdata); -err1: - xgene_enet_delete_desc_rings(pdata); err: free_netdev(ndev); return ret;