Patch "bnxt_en: Fix bnxt_reinit_after_abort() code path" has been added to the 5.18-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    bnxt_en: Fix bnxt_reinit_after_abort() code path

to the 5.18-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     bnxt_en-fix-bnxt_reinit_after_abort-code-path.patch
and it can be found in the queue-5.18 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit fbbd665644f5b3c77919ee1b714763df79b8a10d
Author: Michael Chan <michael.chan@xxxxxxxxxxxx>
Date:   Mon Jul 11 22:26:15 2022 -0400

    bnxt_en: Fix bnxt_reinit_after_abort() code path
    
    [ Upstream commit 4279414bff8af9898e8c53ae6c5bc17f68ad67b7 ]
    
    bnxt_reinit_after_abort() is called during ifup when a previous
    FW reset sequence has aborted or a previous ifup has failed after
    detecting FW reset.  In all cases, it is safe to assume that a
    previous FW reset has completed and the driver may not have fully
    reinitialized.
    
    Prior to this patch, it is assumed that the
    FUNC_DRV_IF_CHANGE_RESP_FLAGS_HOT_FW_RESET_DONE flag will always be
    set by the firmware in bnxt_hwrm_if_change().  This may not be true if
    the driver has already attempted to register with the firmware.  The
    firmware may not set the RESET_DONE flag again after the driver has
    registered, assuming that the driver has seen the flag already.
    
    Fix it to always go through the FW reset initialization path if
    the BNXT_STATE_FW_RESET_DET flag is set.  This flag is always set
    by the driver after successfully going through bnxt_reinit_after_abort().
    
    Fixes: 6882c36cf82e ("bnxt_en: attempt to reinitialize after aborted reset")
    Reviewed-by: Pavan Chebbi <pavan.chebbi@xxxxxxxxxxxx>
    Signed-off-by: Michael Chan <michael.chan@xxxxxxxxxxxx>
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index ee6686a111bd..1ceccaed2da0 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -9916,7 +9916,8 @@ static int bnxt_hwrm_if_change(struct bnxt *bp, bool up)
 
 	if (flags & FUNC_DRV_IF_CHANGE_RESP_FLAGS_RESC_CHANGE)
 		resc_reinit = true;
-	if (flags & FUNC_DRV_IF_CHANGE_RESP_FLAGS_HOT_FW_RESET_DONE)
+	if (flags & FUNC_DRV_IF_CHANGE_RESP_FLAGS_HOT_FW_RESET_DONE ||
+	    test_bit(BNXT_STATE_FW_RESET_DET, &bp->state))
 		fw_reset = true;
 	else
 		bnxt_remap_fw_health_regs(bp);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux