From patchwork Fri Feb 17 22:00:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 729375 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3vQ6RW74cpz9s85 for ; Sat, 18 Feb 2017 09:01:11 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="mhUf10GD"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935090AbdBQWBI (ORCPT ); Fri, 17 Feb 2017 17:01:08 -0500 Received: from mail-pg0-f45.google.com ([74.125.83.45]:34052 "EHLO mail-pg0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934994AbdBQWBG (ORCPT ); Fri, 17 Feb 2017 17:01:06 -0500 Received: by mail-pg0-f45.google.com with SMTP id z67so18621660pgb.1 for ; Fri, 17 Feb 2017 14:01:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=3iiGwJQ6uXH1GRtjqh/BRsbym6v4007KcumJtRRJyN0=; b=mhUf10GD7Dc3kpqxLsl/iVrnG9A34MIImKIsaw/8WQSNMb3k6v7rPF4+ZOaLz9HZO7 aCo14D71tLXfw9j5cLsjyybD9MNFP1Jlqxd+WP7HmPjRcU2EXRzA03jUwVbglfF3d1A/ adkBXkU31j6LRIycx5h8dOTlwJrvUin+2UagTBW5LTs0ds0ahs0KXTC2VNkF6IGT4RlL mMptSGVLWPHWeIQHxaS5H9RlDGQxhWeky0WG3zjm1pT+gVPzBanNGDjnkFTcUWjQXG9F ZK4BEIu8za3Gp7LpaoFaSt598hNGZF3oeIYnFyzeGcFzrDxk9zM7JNlzylLVa2LBHxsb WHGA== 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=3iiGwJQ6uXH1GRtjqh/BRsbym6v4007KcumJtRRJyN0=; b=QzJ8N4ESx2PajXCfIiAbbHbkm2Nv6r0/1V0fdKl2QBwXSF2MCULnRw5uh+68HFuLTd kzSNMOaE9Fgo2sH/Z6WG+Dv3eHI3TcOzjgrBzWRkjVjG6dQz1tuzPQBNc4VACW0eJm4q GVz3S0oFho513u2xGzx8QA1cPqnR6NskdojQy5ys9sCbwCKECJH6V9a7NOF2OfM1yC8A +7cmD0DUXWVJbUZNJ1qhaRs68eINNkTMNdt0xKe3VA4OKed3yza7V7kCRWGKZbwWaYtN AXrkOwEC86i/Un3Ocj7nc2bI2+Myir3YAflDmO4QLO9WNbdyTSxkyfJWYCbVe0Cz1wAr vCcA== X-Gm-Message-State: AMke39mWVtsDCE8nzY794qbwB6ROvRzCdHqV6/wg1RB7xeZl4jgRHkuo36Q9Dcnkq1fJm2jI X-Received: by 10.84.208.227 with SMTP id c32mr14049926plj.71.1487368865351; Fri, 17 Feb 2017 14:01:05 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id z127sm21519833pgz.29.2017.02.17.14.01.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 17 Feb 2017 14:01:04 -0800 (PST) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, dinan.gunawardena@netronome.com, Jakub Kicinski Subject: [PATCH net-next 1/7] nfp: refactor NSP initialization and add error message Date: Fri, 17 Feb 2017 14:00:21 -0800 Message-Id: <20170217220027.189992-2-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170217220027.189992-1-jakub.kicinski@netronome.com> References: <20170217220027.189992-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When acquiring NSP communication resource fails user is left with "probe failed with error -2" PCI code message but no info on what caused the problem. Some development boards may not have NSP FW in the flash image. Help users with a more verbouse message. While at it move the whole NSP init to a separate function to keep .probe() callback nice and simple. Signed-off-by: Jakub Kicinski --- drivers/net/ethernet/netronome/nfp/nfp_main.c | 59 ++++++++++++++++----------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_main.c b/drivers/net/ethernet/netronome/nfp/nfp_main.c index db52b6a53c6f..ca2c464c15df 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_main.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_main.c @@ -228,6 +228,40 @@ nfp_fw_load(struct pci_dev *pdev, struct nfp_pf *pf, struct nfp_nsp *nsp) return err < 0 ? err : 1; } +static int nfp_nsp_init(struct pci_dev *pdev, struct nfp_pf *pf) +{ + struct nfp_nsp *nsp; + int err; + + nsp = nfp_nsp_open(pf->cpp); + if (IS_ERR(nsp)) { + err = PTR_ERR(nsp); + dev_err(&pdev->dev, "Failed to access the NSP: %d\n", err); + return err; + } + + err = nfp_nsp_wait(nsp); + if (err < 0) + goto exit_close_nsp; + + pf->eth_tbl = __nfp_eth_read_ports(pf->cpp, nsp); + + err = nfp_fw_load(pdev, pf, nsp); + if (err < 0) { + kfree(pf->eth_tbl); + dev_err(&pdev->dev, "Failed to load FW\n"); + goto exit_close_nsp; + } + + pf->fw_loaded = !!err; + err = 0; + +exit_close_nsp: + nfp_nsp_close(nsp); + + return err; +} + static void nfp_fw_unload(struct nfp_pf *pf) { struct nfp_nsp *nsp; @@ -251,7 +285,6 @@ static void nfp_fw_unload(struct nfp_pf *pf) static int nfp_pci_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id) { - struct nfp_nsp *nsp; struct nfp_pf *pf; int err; @@ -289,28 +322,9 @@ static int nfp_pci_probe(struct pci_dev *pdev, goto err_disable_msix; } - nsp = nfp_nsp_open(pf->cpp); - if (IS_ERR(nsp)) { - err = PTR_ERR(nsp); - goto err_cpp_free; - } - - err = nfp_nsp_wait(nsp); - if (err < 0) { - nfp_nsp_close(nsp); + err = nfp_nsp_init(pdev, pf); + if (err) goto err_cpp_free; - } - - pf->eth_tbl = __nfp_eth_read_ports(pf->cpp, nsp); - - err = nfp_fw_load(pdev, pf, nsp); - nfp_nsp_close(nsp); - if (err < 0) { - dev_err(&pdev->dev, "Failed to load FW\n"); - goto err_eth_tbl_free; - } - - pf->fw_loaded = !!err; err = nfp_net_pci_probe(pf); if (err) @@ -321,7 +335,6 @@ static int nfp_pci_probe(struct pci_dev *pdev, err_fw_unload: if (pf->fw_loaded) nfp_fw_unload(pf); -err_eth_tbl_free: kfree(pf->eth_tbl); err_cpp_free: nfp_cpp_free(pf->cpp);