Re: [PATCH net v1] octeon_ep: explicitly test for firmware ready value

From: Michal Schmidt
Date: Wed Dec 06 2023 - 08:58:23 EST


On Wed, Dec 6, 2023 at 7:36 AM Shinas Rasheed <srasheed@xxxxxxxxxxx> wrote:
>
> The firmware ready value is 1, and get firmware ready status
> function should explicitly test for that value. The firmware
> ready value read will be 2 after driver load, and on unbind
> till firmware rewrites the firmware ready back to 0, the value
> seen by driver will be 2, which should be regarded as not ready.
>
> Fixes: 10c073e40469 ("octeon_ep: defer probe if firmware not ready")
> Signed-off-by: Shinas Rasheed <srasheed@xxxxxxxxxxx>
> ---
> drivers/net/ethernet/marvell/octeon_ep/octep_main.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
> index 552970c7dec0..b8ae269f6f97 100644
> --- a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
> +++ b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
> @@ -1258,7 +1258,8 @@ static bool get_fw_ready_status(struct pci_dev *pdev)
>
> pci_read_config_byte(pdev, (pos + 8), &status);
> dev_info(&pdev->dev, "Firmware ready status = %u\n", status);
> - return status;
> +#define FW_STATUS_READY 1ULL
> + return (status == FW_STATUS_READY) ? true : false;

"status == FW_STATUS_READY" is already the bool value you want. You
don't need to use the ternary operator here.

> }
> return false;
> }
> --
> 2.25.1
>