• Vasundhara Volam's avatar
    bnxt_en: Improve bnxt_ulp_stop()/bnxt_ulp_start() call sequence. · aa46dfff
    Vasundhara Volam authored
    We call bnxt_ulp_stop() to notify the RDMA driver that some error or
    imminent reset is about to happen.  After that we always call
    some variants of bnxt_close().
    
    In the next patch, we will integrate the recently added error
    recovery with the RDMA driver.  In response to ulp_stop, the
    RDMA driver may free MSIX vectors and that will also trigger
    bnxt_close().  To avoid bnxt_close() from being called twice,
    we set a new flag after ulp_stop is called.  If the RDMA driver
    frees MSIX vectors while the new flag is set, we will not call
    bnxt_close(), knowing that it will happen in due course.
    
    With this change, we must make sure that the bnxt_close() call
    after ulp_stop will reset IRQ.  Modify bnxt_reset_task()
    accordingly if we call ulp_stop.
    Signed-off-by: default avatarVasundhara Volam <vasundhara-v.volam@broadcom.com>
    Signed-off-by: default avatarMichael Chan <michael.chan@broadcom.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    aa46dfff
bnxt.c 315 KB