nfp: support variable NSP response lengths
authorJakub Kicinski <jakub.kicinski@netronome.com>
Mon, 29 May 2017 00:52:59 +0000 (17:52 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 30 May 2017 15:27:05 +0000 (11:27 -0400)
We want to support extendable commands, where newer versions
of the management FW may provide more information.  Zero out
the communication buffer before passing control to NSP.  This
way if management FW is old and only fills in first N bytes,
the remaining ones will be zeros which extended ABI fields
should reserve as not supported/not available.

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

index 2fa9247bb23db41e406c2243eee6d32fab06e372..58cc3d5327690015a8592eeddb1e5f3e1e1cce2f 100644 (file)
@@ -419,6 +419,14 @@ static int nfp_nsp_command_buf(struct nfp_nsp *nsp, u16 code, u32 option,
                if (err < 0)
                        return err;
        }
+       /* Zero out remaining part of the buffer */
+       if (out_buf && out_size && out_size > in_size) {
+               memset(out_buf, 0, out_size - in_size);
+               err = nfp_cpp_write(cpp, cpp_id, cpp_buf + in_size,
+                                   out_buf, out_size - in_size);
+               if (err < 0)
+                       return err;
+       }
 
        ret = nfp_nsp_command(nsp, code, option, cpp_id, cpp_buf);
        if (ret < 0)