• Michael Chan's avatar
    bnxt_en: Fix RDMA driver failure with SRIOV after firmware reset. · 12de2ead
    Michael Chan authored
    bnxt_ulp_start() needs to be called before SRIOV is re-enabled after
    firmware reset.  Re-enabling SRIOV may consume all the resources and
    may cause the RDMA driver to fail to get MSIX and other resources.
    Fix it by calling bnxt_ulp_start() first before calling
    bnxt_reenable_sriov().
    
    We re-arrange the logic so that we call bnxt_ulp_start() and
    bnxt_reenable_sriov() in proper sequence in bnxt_fw_reset_task() and
    bnxt_open().  The former is the normal coordinated firmware reset sequence
    and the latter is firmware reset while the function is down.  This new
    logic is now more straight forward and will now fix both scenarios.
    
    Fixes: f3a6d206 ("bnxt_en: Call bnxt_ulp_stop()/bnxt_ulp_start() during error recovery.")
    Reported-by: default avatarVasundhara Volam <vasundhara-v.volam@broadcom.com>
    Signed-off-by: default avatarMichael Chan <michael.chan@broadcom.com>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    12de2ead
bnxt.c 319 KB