Report serial number via the info devlink command. Signed-off-by: Jakub Kicinski <jakub.kicin...@netronome.com> --- .../net/ethernet/netronome/nfp/nfp_devlink.c | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+)
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c index 808647ec3573..4422da939937 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c @@ -4,6 +4,7 @@ #include <linux/rtnetlink.h> #include <net/devlink.h> +#include "nfpcore/nfp_cpp.h" #include "nfpcore/nfp_nsp.h" #include "nfp_app.h" #include "nfp_main.h" @@ -171,6 +172,26 @@ static int nfp_devlink_eswitch_mode_set(struct devlink *devlink, u16 mode, return ret; } +static int +nfp_devlink_serial_get(struct devlink *devlink, u8 *buf, size_t buf_len, + size_t *len, struct netlink_ext_ack *extack) +{ + struct nfp_pf *pf = devlink_priv(devlink); + const u8 *serial; + int ret; + + ret = nfp_cpp_serial(pf->cpp, &serial); + if (ret < 0) + return ret; + + if (buf_len < ret) + return -EINVAL; + *len = ret; + + memcpy(buf, serial, *len); + return 0; +} + const struct devlink_ops nfp_devlink_ops = { .port_split = nfp_devlink_port_split, .port_unsplit = nfp_devlink_port_unsplit, @@ -178,6 +199,7 @@ const struct devlink_ops nfp_devlink_ops = { .sb_pool_set = nfp_devlink_sb_pool_set, .eswitch_mode_get = nfp_devlink_eswitch_mode_get, .eswitch_mode_set = nfp_devlink_eswitch_mode_set, + .serial_get = nfp_devlink_serial_get, }; int nfp_devlink_port_register(struct nfp_app *app, struct nfp_port *port) -- 2.19.2