Page MenuHomeFreeBSD

D54524.diff
No OneTemporary

D54524.diff

diff --git a/sys/dev/bnxt/bnxt_en/bnxt.h b/sys/dev/bnxt/bnxt_en/bnxt.h
--- a/sys/dev/bnxt/bnxt_en/bnxt.h
+++ b/sys/dev/bnxt/bnxt_en/bnxt.h
@@ -1340,6 +1340,7 @@
unsigned long fw_reset_timestamp;
struct bnxt_fw_health *fw_health;
+ char board_partno[64];
};
struct bnxt_filter_info {
diff --git a/sys/dev/bnxt/bnxt_en/bnxt_ulp.h b/sys/dev/bnxt/bnxt_en/bnxt_ulp.h
--- a/sys/dev/bnxt/bnxt_en/bnxt_ulp.h
+++ b/sys/dev/bnxt/bnxt_en/bnxt_ulp.h
@@ -127,6 +127,8 @@
struct bnxt_bar_info hwrm_bar;
u32 espeed;
uint8_t lanes;
+ #define BNXT_VPD_PN_FLD_LEN 32
+ char board_part_number[BNXT_VPD_PN_FLD_LEN];
};
struct bnxt_en_ops {
diff --git a/sys/dev/bnxt/bnxt_en/bnxt_ulp.c b/sys/dev/bnxt/bnxt_en/bnxt_ulp.c
--- a/sys/dev/bnxt/bnxt_en/bnxt_ulp.c
+++ b/sys/dev/bnxt/bnxt_en/bnxt_ulp.c
@@ -463,6 +463,7 @@
edev->hwrm_bar = bp->hwrm_bar;
edev->port_partition_type = bp->port_partition_type;
edev->ulp_version = BNXT_ULP_VERSION;
+ memcpy(edev->board_part_number, bp->board_partno, BNXT_VPD_PN_FLD_LEN - 1);
}
int bnxt_rdma_aux_device_del(struct bnxt_softc *softc)
diff --git a/sys/dev/bnxt/bnxt_en/if_bnxt.c b/sys/dev/bnxt/bnxt_en/if_bnxt.c
--- a/sys/dev/bnxt/bnxt_en/if_bnxt.c
+++ b/sys/dev/bnxt/bnxt_en/if_bnxt.c
@@ -2674,6 +2674,13 @@
softc->state_bv = bit_alloc(BNXT_STATE_MAX, M_DEVBUF,
M_WAITOK|M_ZERO);
+ if (BNXT_PF(softc)) {
+ const char *part_num;
+
+ if (pci_get_vpd_readonly(softc->dev, "PN", &part_num) == 0)
+ snprintf(softc->board_partno, sizeof(softc->board_partno), "%s", part_num);
+ }
+
return (rc);
failed:
diff --git a/sys/dev/bnxt/bnxt_re/main.c b/sys/dev/bnxt/bnxt_re/main.c
--- a/sys/dev/bnxt/bnxt_re/main.c
+++ b/sys/dev/bnxt/bnxt_re/main.c
@@ -2031,11 +2031,30 @@
return scnprintf(buf, PAGE_SIZE, "%s\n", rdev->ibdev.node_desc);
}
+static ssize_t show_board_id(struct device *device, struct device_attribute *attr,
+ char *buf)
+{
+ struct bnxt_re_dev *rdev = to_bnxt_re_dev(device, ibdev.dev);
+ char buffer[BNXT_VPD_PN_FLD_LEN] = {};
+
+ if (!rdev->is_virtfn)
+ memcpy(buffer, rdev->en_dev->board_part_number,
+ BNXT_VPD_PN_FLD_LEN - 1);
+ else
+ scnprintf(buffer, BNXT_VPD_PN_FLD_LEN,
+ "0x%x-VF", rdev->en_dev->pdev->device);
+
+ return scnprintf(buf, PAGE_SIZE, "%s\n", buffer);
+}
+
static DEVICE_ATTR(hw_rev, 0444, show_rev, NULL);
static DEVICE_ATTR(hca_type, 0444, show_hca, NULL);
+static DEVICE_ATTR(board_id, 0444, show_board_id, NULL);
+
static struct device_attribute *bnxt_re_attributes[] = {
&dev_attr_hw_rev,
- &dev_attr_hca_type
+ &dev_attr_hca_type,
+ &dev_attr_board_id
};
int ib_register_device_compat(struct bnxt_re_dev *rdev)

File Metadata

Mime Type
text/plain
Expires
Mon, Feb 9, 8:27 AM (10 h, 50 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28558361
Default Alt Text
D54524.diff (2 KB)

Event Timeline