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=-8.5 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,USER_AGENT_MUTT 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 6FD49C282D7 for ; Wed, 30 Jan 2019 23:14:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2071020882 for ; Wed, 30 Jan 2019 23:14:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=resnulli-us.20150623.gappssmtp.com header.i=@resnulli-us.20150623.gappssmtp.com header.b="OLJdIMv9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728303AbfA3XOw (ORCPT ); Wed, 30 Jan 2019 18:14:52 -0500 Received: from mail-wm1-f66.google.com ([209.85.128.66]:35202 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726802AbfA3XOw (ORCPT ); Wed, 30 Jan 2019 18:14:52 -0500 Received: by mail-wm1-f66.google.com with SMTP id t200so612395wmt.0 for ; Wed, 30 Jan 2019 15:14:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=resnulli-us.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=lktKI3TPIgpJ9qm1RZKfjAmvkIZIFCMZb9GBNWQK4qY=; b=OLJdIMv9mJH337s02NR1lwEwx7GwpYL588fQsNZs7rDVJQMebkeJu2nnTV3gb0upHx zypqzH3IFGQRCgrQAGH8fF6gmqvAHZMME1SgHSK/US8VaS8rRw23kcbUmfZqSxeJP8Yd wOf2CSvL4wEzYtO4dAg2J6G6PXygzhX48VQIG34U5YiaX0mvFjY9mCiKWVONHJtZtOKv C26AvyW013FGaCkpYFEWJb2kws4FdrKBEehO7hwbmsWCe5i/fA+IiKJLKSjSme02/f23 T3yVWiCPfrUDTmTrq6iDm9si6oVeBKevblMBWLSFWQFB3YvkT2VfTLG4Hla/9ch4WgPk yPgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=lktKI3TPIgpJ9qm1RZKfjAmvkIZIFCMZb9GBNWQK4qY=; b=TBXl3TmT3FDHUyvI/G4MaBdHz+Utst4yyMyimOFs/+H5lM4Jj5Y5m9hU65JJooigmS yRBOzsQ6UadPkofMKvFUWjUaK+bFErRQvlECLHeGaFZQxXCgrnheEhZuar7mYONKnuct 8uqS+E9cAe1EicpbAdbtUDt8VyJfd0tNlceLrf8OzQ3USABKFlcAL6U1RVty7jxrrQ07 bHkdX2dIOQtfT+JLvkh7uIh6xvSKeSfpL8+sFLzh6tEvXh/Pkeq9vxQQR6YLbJ9kyoLv Ns6InZdDEEztPIi5vI43hn7s5PKM8w8qVqfuJV445h5XQwkO6YzdEOkzR0x97sm2CqJF /rBw== X-Gm-Message-State: AJcUukfcpkip2LORp1hL+9I58f7wSbA0ZUIOm1yt0S0SKeMJehrf3gNB Wgk7dpPMX+LU068+PFJURtR2XFl97+Q= X-Google-Smtp-Source: ALg8bN4vwkxSqGtT/eFekAykxLz8hQlb1duI0M92RCQelbCzIWrwEJC4AamRLM5ujF2Dp1fonJNQyw== X-Received: by 2002:a1c:8851:: with SMTP id k78mr27522778wmd.51.1548886013275; Wed, 30 Jan 2019 14:06:53 -0800 (PST) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id m6sm1697165wrv.24.2019.01.30.14.06.52 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 30 Jan 2019 14:06:52 -0800 (PST) Date: Wed, 30 Jan 2019 22:57:52 +0100 From: Jiri Pirko To: Jakub Kicinski Cc: davem@davemloft.net, netdev@vger.kernel.org, oss-drivers@netronome.com, andrew@lunn.ch, f.fainelli@gmail.com, mkubecek@suse.cz, eugenem@fb.com, jonathan.lemon@gmail.com Subject: Re: [PATCH net-next v2 6/7] nfp: devlink: report the running and flashed versions Message-ID: <20190130215752.GD349@nanopsycho.orion> References: <20190130190513.25718-1-jakub.kicinski@netronome.com> <20190130190513.25718-7-jakub.kicinski@netronome.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190130190513.25718-7-jakub.kicinski@netronome.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Wed, Jan 30, 2019 at 08:05:12PM CET, jakub.kicinski@netronome.com wrote: >Report versions of firmware components using the new NSP command. > >Signed-off-by: Jakub Kicinski >--- > .../net/ethernet/netronome/nfp/nfp_devlink.c | 86 +++++++++++++++++++ > include/net/devlink.h | 11 +++ > 2 files changed, 97 insertions(+) > >diff --git a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c >index 9857fa663adf..fade37d2b796 100644 >--- a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c >+++ b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c >@@ -207,11 +207,59 @@ nfp_devlink_versions_get_hwinfo(struct nfp_pf *pf, struct devlink_info_req *req) > return 0; > } > >+static const struct nfp_devlink_versions { >+ enum nfp_nsp_versions id; >+ const char *key; >+} nfp_devlink_versions_nsp[] = { >+ { NFP_VERSIONS_BUNDLE, "fw.bundle_id", }, >+ { NFP_VERSIONS_BSP, DEVLINK_VERSION_GENERIC_FW_MGMT, }, >+ { NFP_VERSIONS_CPLD, "fw.cpld", }, >+ { NFP_VERSIONS_APP, DEVLINK_VERSION_GENERIC_FW_APP, }, >+ { NFP_VERSIONS_UNDI, DEVLINK_VERSION_GENERIC_FW_UNDI, }, >+ { NFP_VERSIONS_NCSI, DEVLINK_VERSION_GENERIC_FW_NCSI, }, >+ { NFP_VERSIONS_CFGR, "chip.init", }, >+}; >+ >+static int >+nfp_devlink_versions_get_nsp(struct devlink_info_req *req, bool flash, >+ const u8 *buf, unsigned int size) >+{ >+ enum devlink_version_type type; >+ unsigned int i; >+ int err; >+ >+ type = flash ? DEVLINK_VERSION_STORED : DEVLINK_VERSION_RUNNING; >+ >+ for (i = 0; i < ARRAY_SIZE(nfp_devlink_versions_nsp); i++) { >+ const struct nfp_devlink_versions *info; >+ const char *version; >+ >+ info = &nfp_devlink_versions_nsp[i]; >+ >+ version = nfp_nsp_versions_get(info->id, flash, buf, size); >+ if (IS_ERR(version)) { >+ if (PTR_ERR(version) == -ENOENT) >+ continue; >+ else >+ return PTR_ERR(version); >+ } >+ >+ err = devlink_info_report_version(req, type, >+ info->key, version); >+ if (err) >+ return err; >+ } >+ >+ return 0; >+} >+ > static int > nfp_devlink_info_get(struct devlink *devlink, struct devlink_info_req *req, > struct netlink_ext_ack *extack) > { > struct nfp_pf *pf = devlink_priv(devlink); >+ struct nfp_nsp *nsp; >+ char *buf = NULL; > const char *sn; > int err; > >@@ -226,7 +274,45 @@ nfp_devlink_info_get(struct devlink *devlink, struct devlink_info_req *req, > return err; > } > >+ nsp = nfp_nsp_open(pf->cpp); >+ if (IS_ERR(nsp)) { >+ NL_SET_ERR_MSG_MOD(extack, "can't access NSP"); >+ return PTR_ERR(nsp); >+ } >+ >+ if (nfp_nsp_has_versions(nsp)) { >+ buf = kzalloc(NFP_NSP_VERSION_BUFSZ, GFP_KERNEL); >+ if (!buf) { >+ err = -ENOMEM; >+ goto err_close_nsp; >+ } >+ >+ err = nfp_nsp_versions(nsp, buf, NFP_NSP_VERSION_BUFSZ); >+ if (err) >+ goto err_free_buf; >+ >+ err = nfp_devlink_versions_get_nsp(req, false, >+ buf, NFP_NSP_VERSION_BUFSZ); >+ if (err) >+ goto err_free_buf; >+ >+ err = nfp_devlink_versions_get_nsp(req, true, >+ buf, NFP_NSP_VERSION_BUFSZ); >+ if (err) >+ goto err_free_buf; >+ >+ kfree(buf); >+ } >+ >+ nfp_nsp_close(nsp); >+ > return nfp_devlink_versions_get_hwinfo(pf, req); >+ >+err_free_buf: >+ kfree(buf); >+err_close_nsp: >+ nfp_nsp_close(nsp); >+ return err; > } > > const struct devlink_ops nfp_devlink_ops = { >diff --git a/include/net/devlink.h b/include/net/devlink.h >index 3d553cc6693d..c678ed0cb099 100644 >--- a/include/net/devlink.h >+++ b/include/net/devlink.h >@@ -433,6 +433,17 @@ enum devlink_param_wol_types { > /* Revision of board design */ > #define DEVLINK_VERSION_GENERIC_BOARD_REV "board.rev" > >+/* Control processor FW version, FW is responsible for house keeping tasks, >+ * PHY control etc. >+ */ >+#define DEVLINK_VERSION_GENERIC_FW_MGMT "fw.mgmt" >+/* Data path microcode controlling high-speed packet processing */ >+#define DEVLINK_VERSION_GENERIC_FW_APP "fw.app" >+/* UNDI software version */ >+#define DEVLINK_VERSION_GENERIC_FW_UNDI "fw.undi" >+/* NCSI support/handler version */ >+#define DEVLINK_VERSION_GENERIC_FW_NCSI "fw.ncsi" Same here. Also, please put "INFO" in the names to respect the namespacing >+ > enum devlink_version_type { > DEVLINK_VERSION_FIXED, > DEVLINK_VERSION_STORED, >-- >2.19.2 >