wifi: mt76: mt7921e: fix race issue between reset and suspend/resume
authorSean Wang <sean.wang@mediatek.com>
Wed, 20 Jul 2022 22:25:37 +0000 (06:25 +0800)
committerFelix Fietkau <nbd@nbd.name>
Thu, 15 Sep 2022 10:53:57 +0000 (12:53 +0200)
commitff6c4a6449793e9718ef2e9ad46864b63022648e
tree06a9632f15def8f0864ddb1b97517f18b8f58791
parent12d7440e3bf94c87c7cf518c11577a532a9be350
wifi: mt76: mt7921e: fix race issue between reset and suspend/resume

It is unexpected that the reset work is running simultaneously with
the suspend or resume context and it is possible that reset work is still
running even after mt7921 is suspended if we don't fix the race issue.

Thus, the suspend procedure should be waiting until the reset is completed
at the beginning and ignore the subsequent the reset requests.

In case there is an error that happens during either suspend or resume
handler, we will schedule a reset task to recover the error before
returning the error code to ensure we can immediately fix the error there.

Fixes: 0c1ce9884607 ("mt76: mt7921: add wifi reset support")
Co-developed-by: YN Chen <YN.Chen@mediatek.com>
Signed-off-by: YN Chen <YN.Chen@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7921/mac.c
drivers/net/wireless/mediatek/mt76/mt7921/pci.c