mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 22:26:55 +00:00
RDMA/bnxt_re: cancel all control path command waiters upon error
When an error is detected in FW, wake up all the waiters as the all of them need to be completed with timeout. Add the device error state also as a wait condition. Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com> Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com> Link: https://lore.kernel.org/r/1686308514-11996-15-git-send-email-selvin.xavier@broadcom.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
parent
bb8c93618f
commit
a00278521c
2 changed files with 3 additions and 2 deletions
|
@ -1495,6 +1495,7 @@ static int bnxt_re_suspend(struct auxiliary_device *adev, pm_message_t state)
|
||||||
*/
|
*/
|
||||||
set_bit(BNXT_RE_FLAG_ERR_DEVICE_DETACHED, &rdev->flags);
|
set_bit(BNXT_RE_FLAG_ERR_DEVICE_DETACHED, &rdev->flags);
|
||||||
set_bit(ERR_DEVICE_DETACHED, &rdev->rcfw.cmdq.flags);
|
set_bit(ERR_DEVICE_DETACHED, &rdev->rcfw.cmdq.flags);
|
||||||
|
wake_up_all(&rdev->rcfw.cmdq.waitq);
|
||||||
mutex_unlock(&bnxt_re_mutex);
|
mutex_unlock(&bnxt_re_mutex);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -116,10 +116,10 @@ static int __wait_for_resp(struct bnxt_qplib_rcfw *rcfw, u16 cookie, u8 opcode)
|
||||||
return -ETIMEDOUT;
|
return -ETIMEDOUT;
|
||||||
|
|
||||||
wait_event_timeout(cmdq->waitq,
|
wait_event_timeout(cmdq->waitq,
|
||||||
!test_bit(cbit, cmdq->cmdq_bitmap),
|
!test_bit(cbit, cmdq->cmdq_bitmap) ||
|
||||||
|
test_bit(ERR_DEVICE_DETACHED, &cmdq->flags),
|
||||||
msecs_to_jiffies(RCFW_FW_STALL_TIMEOUT_SEC
|
msecs_to_jiffies(RCFW_FW_STALL_TIMEOUT_SEC
|
||||||
* 1000));
|
* 1000));
|
||||||
|
|
||||||
if (!test_bit(cbit, cmdq->cmdq_bitmap))
|
if (!test_bit(cbit, cmdq->cmdq_bitmap))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue