From: Jiri Pirko <jiri@resnulli.us>
To: Igor Russkikh <irusskikh@marvell.com>
Cc: netdev@vger.kernel.org, "David S . Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Ariel Elior <aelior@marvell.com>,
Michal Kalderon <mkalderon@marvell.com>,
Alexander Lobakin <alobakin@marvell.com>,
Michal Kalderon <michal.kalderon@marvell.com>
Subject: Re: [PATCH v3 net-next 05/11] qed: implement devlink info request
Date: Wed, 29 Jul 2020 14:52:51 +0200 [thread overview]
Message-ID: <20200729125251.GD2204@nanopsycho> (raw)
In-Reply-To: <20200729113846.1551-6-irusskikh@marvell.com>
Wed, Jul 29, 2020 at 01:38:40PM CEST, irusskikh@marvell.com wrote:
>Here we return existing fw & mfw versions, we also fetch device's
>serial number.
>
>The base device specific structure (qed_dev_info) was not directly
>available to the base driver before.
>Thus, here we create and store a private copy of this structure
>in qed_dev root object.
>
>Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
>Signed-off-by: Alexander Lobakin <alobakin@marvell.com>
>Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
>---
> drivers/net/ethernet/qlogic/qed/qed.h | 1 +
> drivers/net/ethernet/qlogic/qed/qed_dev.c | 10 ++++
> drivers/net/ethernet/qlogic/qed/qed_devlink.c | 52 ++++++++++++++++++-
> drivers/net/ethernet/qlogic/qed/qed_main.c | 1 +
> 4 files changed, 63 insertions(+), 1 deletion(-)
>
>diff --git a/drivers/net/ethernet/qlogic/qed/qed.h b/drivers/net/ethernet/qlogic/qed/qed.h
>index b6ce1488abcc..ccd789eeda3e 100644
>--- a/drivers/net/ethernet/qlogic/qed/qed.h
>+++ b/drivers/net/ethernet/qlogic/qed/qed.h
>@@ -807,6 +807,7 @@ struct qed_dev {
> struct qed_llh_info *p_llh_info;
>
> /* Linux specific here */
>+ struct qed_dev_info common_dev_info;
> struct qede_dev *edev;
> struct pci_dev *pdev;
> u32 flags;
>diff --git a/drivers/net/ethernet/qlogic/qed/qed_dev.c b/drivers/net/ethernet/qlogic/qed/qed_dev.c
>index b3c9ebaf2280..377950ce8ea2 100644
>--- a/drivers/net/ethernet/qlogic/qed/qed_dev.c
>+++ b/drivers/net/ethernet/qlogic/qed/qed_dev.c
>@@ -4290,6 +4290,16 @@ static int qed_hw_get_nvm_info(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
> __set_bit(QED_DEV_CAP_ROCE,
> &p_hwfn->hw_info.device_capabilities);
>
>+ /* Read device serial number information from shmem */
>+ addr = MCP_REG_SCRATCH + nvm_cfg1_offset +
>+ offsetof(struct nvm_cfg1, glob) +
>+ offsetof(struct nvm_cfg1_glob, serial_number);
>+
>+ p_hwfn->hw_info.part_num[0] = qed_rd(p_hwfn, p_ptt, addr);
>+ p_hwfn->hw_info.part_num[1] = qed_rd(p_hwfn, p_ptt, addr + 4);
>+ p_hwfn->hw_info.part_num[2] = qed_rd(p_hwfn, p_ptt, addr + 8);
>+ p_hwfn->hw_info.part_num[3] = qed_rd(p_hwfn, p_ptt, addr + 12);
for() ?
>+
> return qed_mcp_fill_shmem_func_info(p_hwfn, p_ptt);
> }
>
>diff --git a/drivers/net/ethernet/qlogic/qed/qed_devlink.c b/drivers/net/ethernet/qlogic/qed/qed_devlink.c
>index 4e3316c6beb6..5bd5528dc409 100644
>--- a/drivers/net/ethernet/qlogic/qed/qed_devlink.c
>+++ b/drivers/net/ethernet/qlogic/qed/qed_devlink.c
>@@ -45,7 +45,57 @@ static const struct devlink_param qed_devlink_params[] = {
> qed_dl_param_get, qed_dl_param_set, NULL),
> };
>
>-static const struct devlink_ops qed_dl_ops;
>+static int qed_devlink_info_get(struct devlink *devlink,
>+ struct devlink_info_req *req,
>+ struct netlink_ext_ack *extack)
>+{
>+ struct qed_devlink *qed_dl = devlink_priv(devlink);
>+ struct qed_dev *cdev = qed_dl->cdev;
>+ struct qed_dev_info *dev_info;
>+ char buf[100];
>+ int err;
>+
>+ dev_info = &cdev->common_dev_info;
>+
>+ err = devlink_info_driver_name_put(req, KBUILD_MODNAME);
>+ if (err)
>+ return err;
>+
>+ memcpy(buf, cdev->hwfns[0].hw_info.part_num, sizeof(cdev->hwfns[0].hw_info.part_num));
>+ buf[sizeof(cdev->hwfns[0].hw_info.part_num)] = 0;
>+
>+ if (buf[0]) {
>+ err = devlink_info_serial_number_put(req, buf);
>+ if (err)
>+ return err;
>+ }
>+
>+ snprintf(buf, sizeof(buf), "%d.%d.%d.%d",
>+ GET_MFW_FIELD(dev_info->mfw_rev, QED_MFW_VERSION_3),
>+ GET_MFW_FIELD(dev_info->mfw_rev, QED_MFW_VERSION_2),
>+ GET_MFW_FIELD(dev_info->mfw_rev, QED_MFW_VERSION_1),
>+ GET_MFW_FIELD(dev_info->mfw_rev, QED_MFW_VERSION_0));
>+
>+ err = devlink_info_version_stored_put(req,
>+ DEVLINK_INFO_VERSION_GENERIC_FW_MGMT, buf);
>+ if (err)
>+ return err;
>+
>+ snprintf(buf, sizeof(buf), "%d.%d.%d.%d",
>+ dev_info->fw_major,
>+ dev_info->fw_minor,
>+ dev_info->fw_rev,
>+ dev_info->fw_eng);
>+
>+ err = devlink_info_version_running_put(req,
>+ DEVLINK_INFO_VERSION_GENERIC_FW, buf);
return = devlink...
>+
>+ return err;
>+}
>+
>+static const struct devlink_ops qed_dl_ops = {
>+ .info_get = qed_devlink_info_get,
>+};
>
> struct devlink *qed_devlink_register(struct qed_dev *cdev)
> {
>diff --git a/drivers/net/ethernet/qlogic/qed/qed_main.c b/drivers/net/ethernet/qlogic/qed/qed_main.c
>index d6f76421379b..d1a559ccf516 100644
>--- a/drivers/net/ethernet/qlogic/qed/qed_main.c
>+++ b/drivers/net/ethernet/qlogic/qed/qed_main.c
>@@ -479,6 +479,7 @@ int qed_fill_dev_info(struct qed_dev *cdev,
> }
>
> dev_info->mtu = hw_info->mtu;
>+ cdev->common_dev_info = *dev_info;
>
> return 0;
> }
>--
>2.17.1
>
next prev parent reply other threads:[~2020-07-29 12:52 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-29 11:38 [PATCH v3 net-next 00/11] qed: introduce devlink health support Igor Russkikh
2020-07-29 11:38 ` [PATCH v3 net-next 01/11] qed: move out devlink logic into a new file Igor Russkikh
2020-07-29 11:38 ` [PATCH v3 net-next 02/11] qed/qede: make devlink survive recovery Igor Russkikh
2020-07-29 12:49 ` Jiri Pirko
2020-07-29 11:38 ` [PATCH v3 net-next 03/11] qed: swap param init and publish Igor Russkikh
2020-07-29 12:51 ` Jiri Pirko
2020-07-29 11:38 ` [PATCH v3 net-next 04/11] qed: fix kconfig help entries Igor Russkikh
2020-07-29 11:38 ` [PATCH v3 net-next 05/11] qed: implement devlink info request Igor Russkikh
2020-07-29 12:52 ` Jiri Pirko [this message]
2020-07-29 11:38 ` [PATCH v3 net-next 06/11] qed: health reporter init deinit seq Igor Russkikh
2020-07-29 11:38 ` [PATCH v3 net-next 07/11] qed: use devlink logic to report errors Igor Russkikh
2020-07-29 13:08 ` Jiri Pirko
2020-07-30 8:30 ` [EXT] " Igor Russkikh
2020-07-29 11:38 ` [PATCH v3 net-next 08/11] qed*: make use of devlink recovery infrastructure Igor Russkikh
2020-07-29 11:38 ` [PATCH v3 net-next 09/11] qed: implement devlink dump Igor Russkikh
2020-07-29 11:38 ` [PATCH v3 net-next 10/11] qed: align adjacent indent Igor Russkikh
2020-07-29 11:38 ` [PATCH v3 net-next 11/11] qede: make driver reliable on unload after failures Igor Russkikh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200729125251.GD2204@nanopsycho \
--to=jiri@resnulli.us \
--cc=aelior@marvell.com \
--cc=alobakin@marvell.com \
--cc=davem@davemloft.net \
--cc=irusskikh@marvell.com \
--cc=kuba@kernel.org \
--cc=michal.kalderon@marvell.com \
--cc=mkalderon@marvell.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.