* [PATCH v4 net-next 4/6] bnxt_en: Read partno and serialno of the board from VPD
@ 2020-03-27 9:35 Vasundhara Volam
2020-03-27 9:35 ` [PATCH v4 net-next 5/6] bnxt_en: Add partno to devlink info_get cb Vasundhara Volam
2020-03-27 9:35 ` [PATCH v4 net-next 6/6] bnxt_en: Fix "fw.mgmt" and "fw.nsci" info via " Vasundhara Volam
0 siblings, 2 replies; 3+ messages in thread
From: Vasundhara Volam @ 2020-03-27 9:35 UTC (permalink / raw)
To: davem; +Cc: netdev, Vasundhara Volam, Michael Chan
Store the part number and serial number information from VPD in
the bnxt structure. Follow up patch will add the support to display
the information via devlink command.
Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 59 +++++++++++++++++++++++++++++++
drivers/net/ethernet/broadcom/bnxt/bnxt.h | 4 +++
2 files changed, 63 insertions(+)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 3861dff..fead64f 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -11752,6 +11752,63 @@ static int bnxt_init_mac_addr(struct bnxt *bp)
return rc;
}
+#define BNXT_VPD_LEN 512
+static void bnxt_vpd_read_info(struct bnxt *bp)
+{
+ struct pci_dev *pdev = bp->pdev;
+ int i, len, pos, ro_size;
+ ssize_t vpd_size;
+ u8 *vpd_data;
+
+ vpd_data = kmalloc(BNXT_VPD_LEN, GFP_KERNEL);
+ if (!vpd_data)
+ return;
+
+ vpd_size = pci_read_vpd(pdev, 0, BNXT_VPD_LEN, vpd_data);
+ if (vpd_size <= 0) {
+ netdev_err(bp->dev, "Unable to read VPD\n");
+ goto exit;
+ }
+
+ i = pci_vpd_find_tag(vpd_data, 0, vpd_size, PCI_VPD_LRDT_RO_DATA);
+ if (i < 0) {
+ netdev_err(bp->dev, "VPD READ-Only not found\n");
+ goto exit;
+ }
+
+ ro_size = pci_vpd_lrdt_size(&vpd_data[i]);
+ i += PCI_VPD_LRDT_TAG_SIZE;
+ if (i + ro_size > vpd_size)
+ goto exit;
+
+ pos = pci_vpd_find_info_keyword(vpd_data, i, ro_size,
+ PCI_VPD_RO_KEYWORD_PARTNO);
+ if (pos < 0)
+ goto read_sn;
+
+ len = pci_vpd_info_field_size(&vpd_data[pos]);
+ pos += PCI_VPD_INFO_FLD_HDR_SIZE;
+ if (len + pos > vpd_size)
+ goto read_sn;
+
+ strlcpy(bp->board_partno, &vpd_data[pos], min(len, BNXT_VPD_FLD_LEN));
+
+read_sn:
+ pos = pci_vpd_find_info_keyword(vpd_data, i, ro_size,
+ PCI_VPD_RO_KEYWORD_SERIALNO);
+ if (pos < 0)
+ goto exit;
+
+ len = pci_vpd_info_field_size(&vpd_data[pos]);
+ pos += PCI_VPD_INFO_FLD_HDR_SIZE;
+ if (len + pos > vpd_size)
+ goto exit;
+
+ strlcpy(bp->board_serialno, &vpd_data[pos], min(len, BNXT_VPD_FLD_LEN));
+exit:
+ kfree(vpd_data);
+}
+
static int bnxt_pcie_dsn_get(struct bnxt *bp, u8 dsn[])
{
struct pci_dev *pdev = bp->pdev;
@@ -11809,6 +11866,8 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
dev->ethtool_ops = &bnxt_ethtool_ops;
pci_set_drvdata(pdev, dev);
+ bnxt_vpd_read_info(bp);
+
rc = bnxt_alloc_hwrm_resources(bp);
if (rc)
goto init_err_pci_clean;
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
index a1e9d33..f2caa27 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
@@ -1500,6 +1500,10 @@ struct bnxt {
(chip_num) == CHIP_NUM_58804 || \
(chip_num) == CHIP_NUM_58808)
+#define BNXT_VPD_FLD_LEN 32
+ char board_partno[BNXT_VPD_FLD_LEN];
+ char board_serialno[BNXT_VPD_FLD_LEN];
+
struct net_device *dev;
struct pci_dev *pdev;
--
1.8.3.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v4 net-next 5/6] bnxt_en: Add partno to devlink info_get cb
2020-03-27 9:35 [PATCH v4 net-next 4/6] bnxt_en: Read partno and serialno of the board from VPD Vasundhara Volam
@ 2020-03-27 9:35 ` Vasundhara Volam
2020-03-27 9:35 ` [PATCH v4 net-next 6/6] bnxt_en: Fix "fw.mgmt" and "fw.nsci" info via " Vasundhara Volam
1 sibling, 0 replies; 3+ messages in thread
From: Vasundhara Volam @ 2020-03-27 9:35 UTC (permalink / raw)
To: davem; +Cc: netdev, Vasundhara Volam, Jakub Kicinski, Michael Chan
Add part number info from the vital product data to info_get command
via devlink tool. Update bnxt.rst documentation as well.
Cc: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
v1->v2: Remove serial number information.
---
v3->v4: Remove example display.
---
Documentation/networking/devlink/bnxt.rst | 3 +++
drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c | 8 ++++++++
2 files changed, 11 insertions(+)
diff --git a/Documentation/networking/devlink/bnxt.rst b/Documentation/networking/devlink/bnxt.rst
index 7ab34c9..9818118 100644
--- a/Documentation/networking/devlink/bnxt.rst
+++ b/Documentation/networking/devlink/bnxt.rst
@@ -51,6 +51,9 @@ The ``bnxt_en`` driver reports the following versions
* - Name
- Type
- Description
+ * - ``board.id``
+ - fixed
+ - Part number identifying the board design
* - ``asic.id``
- fixed
- ASIC design identifier
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c
index 39c2ac4..0c8283b 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c
@@ -403,6 +403,14 @@ static int bnxt_dl_info_get(struct devlink *dl, struct devlink_info_req *req,
if (rc)
return rc;
+ if (strlen(bp->board_partno)) {
+ rc = devlink_info_version_fixed_put(req,
+ DEVLINK_INFO_VERSION_GENERIC_BOARD_ID,
+ bp->board_partno);
+ if (rc)
+ return rc;
+ }
+
sprintf(buf, "%X", bp->chip_num);
rc = devlink_info_version_fixed_put(req,
DEVLINK_INFO_VERSION_GENERIC_ASIC_ID, buf);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v4 net-next 6/6] bnxt_en: Fix "fw.mgmt" and "fw.nsci" info via devlink info_get cb
2020-03-27 9:35 [PATCH v4 net-next 4/6] bnxt_en: Read partno and serialno of the board from VPD Vasundhara Volam
2020-03-27 9:35 ` [PATCH v4 net-next 5/6] bnxt_en: Add partno to devlink info_get cb Vasundhara Volam
@ 2020-03-27 9:35 ` Vasundhara Volam
1 sibling, 0 replies; 3+ messages in thread
From: Vasundhara Volam @ 2020-03-27 9:35 UTC (permalink / raw)
To: davem; +Cc: netdev, Vasundhara Volam, Michael Chan
Fix macro names to report fw.mgmt and fw.ncsi versions to match the
devlink documentation.
Example display after fixes:
$ devlink dev info pci/0000:af:00.0
pci/0000:af:00.0:
driver bnxt_en
serial_number B0-26-28-FF-FE-25-84-20
versions:
fixed:
board.id BCM957454A4540
asic.id C454
asic.rev 1
running:
fw 216.1.154.0
fw.psid 0.0.0
fw.mgmt 216.1.146.0
fw.mgmt.api 1.10.1
fw.ncsi 864.0.44.0
fw.roce 216.1.16.0
Fixes: 9599e036b161 ("bnxt_en: Add support for devlink info command")
Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
Documentation/networking/devlink/bnxt.rst | 8 ++++----
drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/Documentation/networking/devlink/bnxt.rst b/Documentation/networking/devlink/bnxt.rst
index 9818118..3dfd84c 100644
--- a/Documentation/networking/devlink/bnxt.rst
+++ b/Documentation/networking/devlink/bnxt.rst
@@ -66,15 +66,15 @@ The ``bnxt_en`` driver reports the following versions
* - ``fw``
- stored, running
- Overall board firmware version
- * - ``fw.app``
+ * - ``fw.mgmt``
- stored, running
- - Data path firmware version
+ - NIC hardware resource management firmware version
* - ``fw.mgmt.api``
- running
- Minimum firmware interface spec version supported between driver and firmware
- * - ``fw.mgmt``
+ * - ``fw.nsci``
- stored, running
- - Management firmware version
+ - General platform management firmware version
* - ``fw.roce``
- stored, running
- RoCE management firmware version
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c
index 0c8283b..8e09a52 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c
@@ -479,7 +479,7 @@ static int bnxt_dl_info_get(struct devlink *dl, struct devlink_info_req *req,
ver_resp->roce_fw_bld_8b, ver_resp->roce_fw_rsvd_8b);
}
rc = devlink_info_version_running_put(req,
- DEVLINK_INFO_VERSION_GENERIC_FW_APP, fw_ver);
+ DEVLINK_INFO_VERSION_GENERIC_FW_MGMT, fw_ver);
if (rc)
return rc;
@@ -491,7 +491,7 @@ static int bnxt_dl_info_get(struct devlink *dl, struct devlink_info_req *req,
if (!(bp->flags & BNXT_FLAG_CHIP_P5)) {
rc = devlink_info_version_running_put(req,
- DEVLINK_INFO_VERSION_GENERIC_FW_MGMT, mgmt_ver);
+ DEVLINK_INFO_VERSION_GENERIC_FW_NCSI, mgmt_ver);
if (rc)
return rc;
--
1.8.3.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-03-27 9:37 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-27 9:35 [PATCH v4 net-next 4/6] bnxt_en: Read partno and serialno of the board from VPD Vasundhara Volam
2020-03-27 9:35 ` [PATCH v4 net-next 5/6] bnxt_en: Add partno to devlink info_get cb Vasundhara Volam
2020-03-27 9:35 ` [PATCH v4 net-next 6/6] bnxt_en: Fix "fw.mgmt" and "fw.nsci" info via " Vasundhara Volam
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).