Commit 1f5cf103 authored by Jakub Kicinski's avatar Jakub Kicinski Committed by David S. Miller

nfp: devlink: include vendor/product info in serial number

The manufacturing team requests we include vendor and product
in the serial number field, as the serial number itself is not
unique across manufacturing facilities and products.
Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: default avatarDirk van der Merwe <dirk.vandermerwe@netronome.com>
Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 05fe4ab7
...@@ -258,18 +258,33 @@ nfp_devlink_info_get(struct devlink *devlink, struct devlink_info_req *req, ...@@ -258,18 +258,33 @@ nfp_devlink_info_get(struct devlink *devlink, struct devlink_info_req *req,
struct netlink_ext_ack *extack) struct netlink_ext_ack *extack)
{ {
struct nfp_pf *pf = devlink_priv(devlink); struct nfp_pf *pf = devlink_priv(devlink);
const char *sn, *vendor, *part;
struct nfp_nsp *nsp; struct nfp_nsp *nsp;
char *buf = NULL; char *buf = NULL;
const char *sn;
int err; int err;
err = devlink_info_driver_name_put(req, "nfp"); err = devlink_info_driver_name_put(req, "nfp");
if (err) if (err)
return err; return err;
vendor = nfp_hwinfo_lookup(pf->hwinfo, "assembly.vendor");
part = nfp_hwinfo_lookup(pf->hwinfo, "assembly.partno");
sn = nfp_hwinfo_lookup(pf->hwinfo, "assembly.serial"); sn = nfp_hwinfo_lookup(pf->hwinfo, "assembly.serial");
if (sn) { if (vendor && part && sn) {
err = devlink_info_serial_number_put(req, sn); char *buf;
buf = kmalloc(strlen(vendor) + strlen(part) + strlen(sn) + 1,
GFP_KERNEL);
if (!buf)
return -ENOMEM;
buf[0] = '\0';
strcat(buf, vendor);
strcat(buf, part);
strcat(buf, sn);
err = devlink_info_serial_number_put(req, buf);
kfree(buf);
if (err) if (err)
return err; return err;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment