bnxt_en: Return proper error code for non-existent NVM variable
authorVasundhara Volam <vasundhara-v.volam@broadcom.com>
Mon, 18 Nov 2019 08:56:41 +0000 (03:56 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 31 Dec 2019 15:45:39 +0000 (16:45 +0100)
[ Upstream commit 05069dd4c577f9b143dfd243d55834333c4470c5 ]

For NVM params that are not supported in the current NVM
configuration, return the error as -EOPNOTSUPP.

Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c

index 7151244..7d2cfea 100644 (file)
@@ -311,10 +311,17 @@ static int bnxt_hwrm_nvm_req(struct bnxt *bp, u32 param_id, void *msg,
        } else {
                rc = hwrm_send_message_silent(bp, msg, msg_len,
                                              HWRM_CMD_TIMEOUT);
-               if (!rc)
+               if (!rc) {
                        bnxt_copy_from_nvm_data(val, data,
                                                nvm_param.nvm_num_bits,
                                                nvm_param.dl_num_bytes);
+               } else {
+                       struct hwrm_err_output *resp = bp->hwrm_cmd_resp_addr;
+
+                       if (resp->cmd_err ==
+                               NVM_GET_VARIABLE_CMD_ERR_CODE_VAR_NOT_EXIST)
+                               rc = -EOPNOTSUPP;
+               }
        }
        dma_free_coherent(&bp->pdev->dev, sizeof(*data), data, data_dma_addr);
        if (rc == -EACCES)