aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/ixgbe/devlink/devlink.c
diff options
context:
space:
mode:
authorAndrii Staikov <[email protected]>2025-04-10 13:00:08 +0000
committerTony Nguyen <[email protected]>2025-04-15 14:36:33 +0000
commit4811b0c220f212ff0b35da0d9fc993bce87868c0 (patch)
treec811724e5185914f9206c3cd55a55893da4dcbd2 /drivers/net/ethernet/intel/ixgbe/devlink/devlink.c
parentixgbe: add E610 implementation of FW recovery mode (diff)
downloadkernel-4811b0c220f212ff0b35da0d9fc993bce87868c0.tar.gz
kernel-4811b0c220f212ff0b35da0d9fc993bce87868c0.zip
ixgbe: add support for FW rollback mode
The driver should detect whether the device entered FW rollback mode and then notify user with the dedicated message including FW and NVM versions. Even if the driver detected rollback mode, this should not result in an probe error and the normal flow proceeds. FW tries to rollback to "old" operational FW located in the inactive NVM bank in cases when newly loaded FW exhibits faulty behavior. If something goes wrong during boot the FW may switch into rollback mode in an attempt to avoid recovery mode and stay operational. After rollback is successful, the banks are swapped, and the "rollback" bank becomes the active bank for the next reset. Reviewed-by: Mateusz Polchlopek <[email protected]> Signed-off-by: Andrii Staikov <[email protected]> Signed-off-by: Jedrzej Jagielski <[email protected]> Signed-off-by: Tony Nguyen <[email protected]>
Diffstat (limited to 'drivers/net/ethernet/intel/ixgbe/devlink/devlink.c')
-rw-r--r--drivers/net/ethernet/intel/ixgbe/devlink/devlink.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/ethernet/intel/ixgbe/devlink/devlink.c b/drivers/net/ethernet/intel/ixgbe/devlink/devlink.c
index 3e79e446a944..54f1b83dfe42 100644
--- a/drivers/net/ethernet/intel/ixgbe/devlink/devlink.c
+++ b/drivers/net/ethernet/intel/ixgbe/devlink/devlink.c
@@ -471,7 +471,8 @@ static int ixgbe_devlink_reload_empr_finish(struct devlink *devlink,
*actions_performed = BIT(DEVLINK_RELOAD_ACTION_FW_ACTIVATE);
- adapter->flags2 &= ~IXGBE_FLAG2_API_MISMATCH;
+ adapter->flags2 &= ~(IXGBE_FLAG2_API_MISMATCH |
+ IXGBE_FLAG2_FW_ROLLBACK);
return 0;
}