Apparently there are still cards in the wild with a very old
management FW.  Let's make the error message in that case
indicate more clearly that management firmware has to be
updated.

Signed-off-by: Jakub Kicinski <jakub.kicin...@netronome.com>
Reviewed-by: Dirk van der Merwe <dirk.vanderme...@netronome.com>
---
 drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c 
b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c
index 42cf4fd875ea..9a08623c325d 100644
--- a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c
+++ b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c
@@ -241,11 +241,16 @@ static int nfp_nsp_check(struct nfp_nsp *state)
        state->ver.major = FIELD_GET(NSP_STATUS_MAJOR, reg);
        state->ver.minor = FIELD_GET(NSP_STATUS_MINOR, reg);
 
-       if (state->ver.major != NSP_MAJOR || state->ver.minor < NSP_MINOR) {
+       if (state->ver.major != NSP_MAJOR) {
                nfp_err(cpp, "Unsupported ABI %hu.%hu\n",
                        state->ver.major, state->ver.minor);
                return -EINVAL;
        }
+       if (state->ver.minor < NSP_MINOR) {
+               nfp_err(cpp, "ABI too old to support NIC operation (%u.%hu < 
%u.%u), please update the management FW on the flash\n",
+                       NSP_MAJOR, state->ver.minor, NSP_MAJOR, NSP_MINOR);
+               return -EINVAL;
+       }
 
        if (reg & NSP_STATUS_BUSY) {
                nfp_err(cpp, "Service processor busy!\n");
-- 
2.21.0

Reply via email to