nfp: report application FW build name in ethtool -i
authorJakub Kicinski <jakub.kicinski@netronome.com>
Fri, 9 Jun 2017 03:56:14 +0000 (20:56 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 9 Jun 2017 16:52:09 +0000 (12:52 -0400)
Make sure application FW build name is NULL-terminated and
print it as a part of ethtool's firmware version string.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/netronome/nfp/nfp_app.c
drivers/net/ethernet/netronome/nfp/nfp_app.h
drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_mip.c
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nffw.h

index de07517da1bd7b011377393826ffb05845769897..396b93f54823f9d44badfd682ebf7a21ba5de5a6 100644 (file)
@@ -35,6 +35,7 @@
 #include <linux/slab.h>
 
 #include "nfpcore/nfp_cpp.h"
+#include "nfpcore/nfp_nffw.h"
 #include "nfp_app.h"
 #include "nfp_main.h"
 
@@ -43,6 +44,13 @@ static const struct nfp_app_type *apps[] = {
        &app_bpf,
 };
 
+const char *nfp_app_mip_name(struct nfp_app *app)
+{
+       if (!app || !app->pf->mip)
+               return "";
+       return nfp_mip_name(app->pf->mip);
+}
+
 struct sk_buff *nfp_app_ctrl_msg_alloc(struct nfp_app *app, unsigned int size)
 {
        struct sk_buff *skb;
index 3fbf68f8577c005f6ffbacfd923b6d6d0d932995..f5e373fa8c3bbc1a815e87854a9cdebb2c80f98c 100644 (file)
@@ -216,6 +216,7 @@ static inline void nfp_app_ctrl_rx(struct nfp_app *app, struct sk_buff *skb)
        app->type->ctrl_msg_rx(app, skb);
 }
 
+const char *nfp_app_mip_name(struct nfp_app *app);
 struct sk_buff *nfp_app_ctrl_msg_alloc(struct nfp_app *app, unsigned int size);
 
 struct nfp_app *nfp_app_alloc(struct nfp_pf *pf, enum nfp_app_id id);
index 83664ca2521382cde49fdaa1ec7d8969bd96a6c4..6e31355c3567ac62b32837044fcd918d41932f09 100644 (file)
@@ -166,10 +166,10 @@ static void nfp_net_get_drvinfo(struct net_device *netdev,
 
        nfp_net_get_nspinfo(nn->app, nsp_version);
        snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version),
-                "%d.%d.%d.%d %s %s",
+                "%d.%d.%d.%d %s %s %s",
                 nn->fw_ver.resv, nn->fw_ver.class,
                 nn->fw_ver.major, nn->fw_ver.minor, nsp_version,
-                nfp_app_name(nn->app));
+                nfp_app_mip_name(nn->app), nfp_app_name(nn->app));
        strlcpy(drvinfo->bus_info, pci_name(nn->pdev),
                sizeof(drvinfo->bus_info));
 
index 3d15dd03647e8383a981f1c67b1cd62ab893f897..5f193fe2d69e8d98ddbc3006806b318aba6e2874 100644 (file)
@@ -141,6 +141,8 @@ const struct nfp_mip *nfp_mip_open(struct nfp_cpp *cpp)
                return NULL;
        }
 
+       mip->name[sizeof(mip->name) - 1] = 0;
+
        return mip;
 }
 
@@ -149,6 +151,11 @@ void nfp_mip_close(const struct nfp_mip *mip)
        kfree(mip);
 }
 
+const char *nfp_mip_name(const struct nfp_mip *mip)
+{
+       return mip->name;
+}
+
 /**
  * nfp_mip_symtab() - Get the address and size of the MIP symbol table
  * @mip:       MIP handle
index c7266baec0eb5b8a11b22a35fb537b891f10d06f..d27d29782a1262be31f7e067122ec2f2bcca2f18 100644 (file)
@@ -55,6 +55,7 @@ struct nfp_mip;
 const struct nfp_mip *nfp_mip_open(struct nfp_cpp *cpp);
 void nfp_mip_close(const struct nfp_mip *mip);
 
+const char *nfp_mip_name(const struct nfp_mip *mip);
 void nfp_mip_symtab(const struct nfp_mip *mip, u32 *addr, u32 *size);
 void nfp_mip_strtab(const struct nfp_mip *mip, u32 *addr, u32 *size);