On Tue, 15 Jan 2019 11:18:18 +0100, Jiri Pirko wrote:
> Tue, Jan 15, 2019 at 01:50:06AM CET, jakub.kicin...@netronome.com wrote:
> >For now we only use HWinfo for fixed versions.
> >
> >Signed-off-by: Jakub Kicinski <jakub.kicin...@netronome.com>
> >---
> > .../net/ethernet/netronome/nfp/nfp_devlink.c  | 72 +++++++++++++++++++
> > 1 file changed, 72 insertions(+)
> >
> >diff --git a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c 
> >b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c
> >index 4422da939937..c7759564316d 100644
> >--- a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c
> >+++ b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c
> >@@ -192,6 +192,77 @@ nfp_devlink_serial_get(struct devlink *devlink, u8 
> >*buf, size_t buf_len,
> >     return 0;
> > }
> > 
> >+static const struct nfp_devlink_versions_simple {
> >+    const char *key;
> >+    const char *hwinfo;
> >+} nfp_devlink_versions_hwinfo[] = {
> >+    { "board.model",        "assembly.model", },
> >+    { "board.partno",       "assembly.partno", },
> >+    { "board.revision",     "assembly.revision", },
> >+    { "board.vendor",       "assembly.vendor", },  
> 
> That means that every driver would re-define these strings. Would it
> make sense to have them (at least some of them) defined in a generic
> way? Something in a sense of devlink params, where we have generic and
> driver-specific ones.

Ack, I will add those as defines in the devlink header plus some docs.
Let's see how it goes..

> >+};
> >+
> >+static int
> >+nfp_devlink_versions_get_hwinfo(struct sk_buff *skb, struct nfp_nsp *nsp,
> >+                            struct netlink_ext_ack *extack)
> >+{
> >+    unsigned int i;
> >+    int attr;
> >+    int err;
> >+
> >+    attr = DEVLINK_ATTR_INFO_VERSIONS_FIXED;
> >+
> >+    for (i = 0; i < ARRAY_SIZE(nfp_devlink_versions_hwinfo); i++) {
> >+            const struct nfp_devlink_versions_simple *info;
> >+            char buf[256] = {};
> >+
> >+            info = &nfp_devlink_versions_hwinfo[i];
> >+            strcpy(buf, info->hwinfo);
> >+
> >+            err = nfp_nsp_hwinfo_lookup(nsp, buf, sizeof(buf));
> >+            if (err == -ENOENT)
> >+                    continue;
> >+            if (err) {
> >+                    NL_SET_ERR_MSG_MOD(extack,
> >+                                       "error reading versions string from 
> >FW");
> >+                    return err;
> >+            }
> >+
> >+            err = devlink_versions_report(skb, attr, info->key, buf);  
> 
> So this is always "DEVLINK_ATTR_INFO_VERSIONS_FIXED". I don't
> understand.

Tmp var makes it look more like the other function (from next patch)...
and it makes the line fit in 80 char ;)

Reply via email to