2023-08-02 09:56:20

by Jonas Gorski

[permalink] [raw]
Subject: [PATCH] prestera: fix fallback to previous version on same major version

When both supported and previous version have the same major version,
and the firmwares are missing, the driver ends in a loop requesting the
same (previous) version over and over again:

[ 76.327413] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.1.img firmware, fall-back to previous 4.0 version
[ 76.339802] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
[ 76.352162] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
[ 76.364502] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
[ 76.376848] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
[ 76.389183] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
[ 76.401522] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
[ 76.413860] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
[ 76.426199] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
...

Fix this by inverting the check to that we aren't yet at the previous
version, and also check the minor version.

This also catches the case where both versions are the same, as it was
after commit bb5dbf2cc64d ("net: marvell: prestera: add firmware v4.0
support").

With this fix applied:

[ 88.499622] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.1.img firmware, fall-back to previous 4.0 version
[ 88.511995] Prestera DX 0000:01:00.0: failed to request previous firmware: mrvl/prestera/mvsw_prestera_fw-v4.0.img
[ 88.522403] Prestera DX: probe of 0000:01:00.0 failed with error -2

Fixes: 47f26018a414 ("net: marvell: prestera: try to load previous fw version")
Signed-off-by: Jonas Gorski <[email protected]>
---
drivers/net/ethernet/marvell/prestera/prestera_pci.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/marvell/prestera/prestera_pci.c b/drivers/net/ethernet/marvell/prestera/prestera_pci.c
index f328d957b2db..35857dc19542 100644
--- a/drivers/net/ethernet/marvell/prestera/prestera_pci.c
+++ b/drivers/net/ethernet/marvell/prestera/prestera_pci.c
@@ -727,7 +727,8 @@ static int prestera_fw_get(struct prestera_fw *fw)

err = request_firmware_direct(&fw->bin, fw_path, fw->dev.dev);
if (err) {
- if (ver_maj == PRESTERA_SUPP_FW_MAJ_VER) {
+ if (ver_maj != PRESTERA_PREV_FW_MAJ_VER ||
+ ver_min != PRESTERA_PREV_FW_MIN_VER) {
ver_maj = PRESTERA_PREV_FW_MAJ_VER;
ver_min = PRESTERA_PREV_FW_MIN_VER;

--
2.41.0


--
BISDN GmbH
K?rnerstra?e 7-10
10785 Berlin
Germany


Phone:
+49-30-6108-1-6100


Managing Directors:?
Dr.-Ing. Hagen Woesner, Andreas
K?psel


Commercial register:?
Amtsgericht Berlin-Charlottenburg HRB 141569
B
VAT ID No:?DE283257294



2023-08-02 12:06:05

by Elad Nachman

[permalink] [raw]
Subject: RE: [EXT] [PATCH] prestera: fix fallback to previous version on same major version



> -----Original Message-----
> From: Jonas Gorski <[email protected]>
> Sent: Wednesday, August 2, 2023 12:24 PM
> To: Taras Chornyi <[email protected]>; David S. Miller
> <[email protected]>; Eric Dumazet <[email protected]>; Jakub
> Kicinski <[email protected]>; Paolo Abeni <[email protected]>; Andrew
> Lunn <[email protected]>; Vadym Kochan [C] <[email protected]>
> Cc: [email protected]; [email protected]
> Subject: [EXT] [PATCH] prestera: fix fallback to previous version on same
> major version
>
> External Email
>
> ----------------------------------------------------------------------
> When both supported and previous version have the same major version,
> and the firmwares are missing, the driver ends in a loop requesting the same
> (previous) version over and over again:
>
> [ 76.327413] Prestera DX 0000:01:00.0: missing latest
> mrvl/prestera/mvsw_prestera_fw-v4.1.img firmware, fall-back to previous
> 4.0 version
> [ 76.339802] Prestera DX 0000:01:00.0: missing latest
> mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous
> 4.0 version
> [ 76.352162] Prestera DX 0000:01:00.0: missing latest
> mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous
> 4.0 version
> [ 76.364502] Prestera DX 0000:01:00.0: missing latest
> mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous
> 4.0 version
> [ 76.376848] Prestera DX 0000:01:00.0: missing latest
> mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous
> 4.0 version
> [ 76.389183] Prestera DX 0000:01:00.0: missing latest
> mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous
> 4.0 version
> [ 76.401522] Prestera DX 0000:01:00.0: missing latest
> mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous
> 4.0 version
> [ 76.413860] Prestera DX 0000:01:00.0: missing latest
> mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous
> 4.0 version
> [ 76.426199] Prestera DX 0000:01:00.0: missing latest
> mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous
> 4.0 version
> ...
>
> Fix this by inverting the check to that we aren't yet at the previous version,
> and also check the minor version.
>
> This also catches the case where both versions are the same, as it was after
> commit bb5dbf2cc64d ("net: marvell: prestera: add firmware v4.0 support").
>
> With this fix applied:
>
> [ 88.499622] Prestera DX 0000:01:00.0: missing latest
> mrvl/prestera/mvsw_prestera_fw-v4.1.img firmware, fall-back to previous
> 4.0 version
> [ 88.511995] Prestera DX 0000:01:00.0: failed to request previous
> firmware: mrvl/prestera/mvsw_prestera_fw-v4.0.img
> [ 88.522403] Prestera DX: probe of 0000:01:00.0 failed with error -2
>
> Fixes: 47f26018a414 ("net: marvell: prestera: try to load previous fw
> version")
> Signed-off-by: Jonas Gorski <[email protected]>
> ---
> drivers/net/ethernet/marvell/prestera/prestera_pci.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/marvell/prestera/prestera_pci.c
> b/drivers/net/ethernet/marvell/prestera/prestera_pci.c
> index f328d957b2db..35857dc19542 100644
> --- a/drivers/net/ethernet/marvell/prestera/prestera_pci.c
> +++ b/drivers/net/ethernet/marvell/prestera/prestera_pci.c
> @@ -727,7 +727,8 @@ static int prestera_fw_get(struct prestera_fw *fw)
>
> err = request_firmware_direct(&fw->bin, fw_path, fw->dev.dev);
> if (err) {
> - if (ver_maj == PRESTERA_SUPP_FW_MAJ_VER) {
> + if (ver_maj != PRESTERA_PREV_FW_MAJ_VER ||
> + ver_min != PRESTERA_PREV_FW_MIN_VER) {
> ver_maj = PRESTERA_PREV_FW_MAJ_VER;
> ver_min = PRESTERA_PREV_FW_MIN_VER;
>
> --
> 2.41.0
>
>
> --
> BISDN GmbH
> K?rnerstra?e 7-10
> 10785 Berlin
> Germany
>
>
> Phone:
> +49-30-6108-1-6100
>
>
> Managing Directors:
> Dr.-Ing. Hagen Woesner, Andreas
> K?psel
>
>
> Commercial register:
> Amtsgericht Berlin-Charlottenburg HRB 141569
> B
> VAT ID No:?DE283257294
>

Acked-by: Elad Nachman <[email protected]>


2023-08-03 01:48:14

by Jesse Brandeburg

[permalink] [raw]
Subject: Re: [PATCH] prestera: fix fallback to previous version on same major version

On 8/2/2023 2:23 AM, Jonas Gorski wrote:
> When both supported and previous version have the same major version,
> and the firmwares are missing, the driver ends in a loop requesting the
> same (previous) version over and over again:
>
> [ 76.327413] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.1.img firmware, fall-back to previous 4.0 version
> [ 76.339802] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> [ 76.352162] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> [ 76.364502] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> [ 76.376848] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> [ 76.389183] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> [ 76.401522] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> [ 76.413860] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> [ 76.426199] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> ...
>
> Fix this by inverting the check to that we aren't yet at the previous
> version, and also check the minor version.
>
> This also catches the case where both versions are the same, as it was
> after commit bb5dbf2cc64d ("net: marvell: prestera: add firmware v4.0
> support").
>
> With this fix applied:
>
> [ 88.499622] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.1.img firmware, fall-back to previous 4.0 version
> [ 88.511995] Prestera DX 0000:01:00.0: failed to request previous firmware: mrvl/prestera/mvsw_prestera_fw-v4.0.img
> [ 88.522403] Prestera DX: probe of 0000:01:00.0 failed with error -2
>
> Fixes: 47f26018a414 ("net: marvell: prestera: try to load previous fw version")
> Signed-off-by: Jonas Gorski <[email protected]>

Reviewed-by: Jesse Brandeburg <[email protected]>




2023-08-03 10:03:24

by Taras Chornyi

[permalink] [raw]
Subject: Re: [PATCH] prestera: fix fallback to previous version on same major version


> Fix this by inverting the check to that we aren't yet at the previous
> version, and also check the minor version.
>
> This also catches the case where both versions are the same, as it was
> after commit bb5dbf2cc64d ("net: marvell: prestera: add firmware v4.0
> support").
>
> With this fix applied:
>
> [ 88.499622] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.1.img firmware, fall-back to previous 4.0 version
> [ 88.511995] Prestera DX 0000:01:00.0: failed to request previous firmware: mrvl/prestera/mvsw_prestera_fw-v4.0.img
> [ 88.522403] Prestera DX: probe of 0000:01:00.0 failed with error -2
>
> Fixes: 47f26018a414 ("net: marvell: prestera: try to load previous fw version")
> Signed-off-by: Jonas Gorski <[email protected]>
> ---
> drivers/net/ethernet/marvell/prestera/prestera_pci.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/marvell/prestera/prestera_pci.c b/drivers/net/ethernet/marvell/prestera/prestera_pci.c
> index f328d957b2db..35857dc19542 100644
> --- a/drivers/net/ethernet/marvell/prestera/prestera_pci.c
> +++ b/drivers/net/ethernet/marvell/prestera/prestera_pci.c
> @@ -727,7 +727,8 @@ static int prestera_fw_get(struct prestera_fw *fw)
>
> err = request_firmware_direct(&fw->bin, fw_path, fw->dev.dev);
> if (err) {
> - if (ver_maj == PRESTERA_SUPP_FW_MAJ_VER) {
> + if (ver_maj != PRESTERA_PREV_FW_MAJ_VER ||
> + ver_min != PRESTERA_PREV_FW_MIN_VER) {
> ver_maj = PRESTERA_PREV_FW_MAJ_VER;
> ver_min = PRESTERA_PREV_FW_MIN_VER;
>

Acked-by: Taras Chornyi <[email protected]>


2023-08-03 19:08:06

by patchwork-bot+netdevbpf

[permalink] [raw]
Subject: Re: [PATCH] prestera: fix fallback to previous version on same major version

Hello:

This patch was applied to netdev/net.git (main)
by Jakub Kicinski <[email protected]>:

On Wed, 2 Aug 2023 11:23:56 +0200 you wrote:
> When both supported and previous version have the same major version,
> and the firmwares are missing, the driver ends in a loop requesting the
> same (previous) version over and over again:
>
> [ 76.327413] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.1.img firmware, fall-back to previous 4.0 version
> [ 76.339802] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> [ 76.352162] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> [ 76.364502] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> [ 76.376848] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> [ 76.389183] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> [ 76.401522] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> [ 76.413860] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> [ 76.426199] Prestera DX 0000:01:00.0: missing latest mrvl/prestera/mvsw_prestera_fw-v4.0.img firmware, fall-back to previous 4.0 version
> ...
>
> [...]

Here is the summary with links:
- prestera: fix fallback to previous version on same major version
https://git.kernel.org/netdev/net/c/b755c25fbcd5

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html