bnxt_en: Do not process completion entries after fatal condition detected.
Once the firmware fatal condition is detected, we should cease comminication with the firmware and hardware quickly even if there are many completion entries in the completion rings. This will speed up the recovery process and prevent further I/Os that may cause further exceptions. Do not proceed in the NAPI poll function if fatal condition is detected. Call napi_complete() and return without arming interrupts. Cleanup of all rings and reset are imminent. Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com> Reviewed-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com> Reviewed-by: Edwin Peer <edwin.peer@broadcom.com> Signed-off-by: Michael Chan <michael.chan@broadcom.com> Acked-by: Willem de Bruijn <willemb@google.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
5863b10aa8
commit
0da65f4932
@ -2405,6 +2405,10 @@ static int bnxt_poll(struct napi_struct *napi, int budget)
|
||||
struct bnxt_cp_ring_info *cpr = &bnapi->cp_ring;
|
||||
int work_done = 0;
|
||||
|
||||
if (unlikely(test_bit(BNXT_STATE_FW_FATAL_COND, &bp->state))) {
|
||||
napi_complete(napi);
|
||||
return 0;
|
||||
}
|
||||
while (1) {
|
||||
work_done += bnxt_poll_work(bp, cpr, budget - work_done);
|
||||
|
||||
@ -2479,6 +2483,10 @@ static int bnxt_poll_p5(struct napi_struct *napi, int budget)
|
||||
int work_done = 0;
|
||||
u32 cons;
|
||||
|
||||
if (unlikely(test_bit(BNXT_STATE_FW_FATAL_COND, &bp->state))) {
|
||||
napi_complete(napi);
|
||||
return 0;
|
||||
}
|
||||
if (cpr->has_more_work) {
|
||||
cpr->has_more_work = 0;
|
||||
work_done = __bnxt_poll_cqs(bp, bnapi, budget);
|
||||
|
Loading…
x
Reference in New Issue
Block a user