Skip to content

Commit

Permalink
mt76: mt7921: reduce the mutex lock scope during reset
Browse files Browse the repository at this point in the history
Reduce the mutex lock scope for reset to get rid of possible task hung
e.g wpa_supplicant and to allow the user-space process to keep running
during we need more retries to complete the reset.

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Suggested-by: YN Chen <YN.Chen@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
  • Loading branch information
moore-bros authored and nbd168 committed Jul 11, 2022
1 parent 6e0d707 commit cb80da9
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions mt7921/mac.c
Expand Up @@ -738,7 +738,7 @@ void mt7921_mac_reset_work(struct work_struct *work)
reset_work);
struct ieee80211_hw *hw = mt76_hw(dev);
struct mt76_connac_pm *pm = &dev->pm;
int i;
int i, ret;

dev_dbg(dev->mt76.dev, "chip reset\n");
dev->hw_full_reset = true;
Expand All @@ -748,11 +748,14 @@ void mt7921_mac_reset_work(struct work_struct *work)
cancel_delayed_work_sync(&pm->ps_work);
cancel_work_sync(&pm->wake_work);

mutex_lock(&dev->mt76.mutex);
for (i = 0; i < 10; i++)
if (!mt7921_dev_reset(dev))
for (i = 0; i < 10; i++) {
mutex_lock(&dev->mt76.mutex);
ret = mt7921_dev_reset(dev);
mutex_unlock(&dev->mt76.mutex);

if (!ret)
break;
mutex_unlock(&dev->mt76.mutex);
}

if (i == 10)
dev_err(dev->mt76.dev, "chip reset failed\n");
Expand Down

0 comments on commit cb80da9

Please sign in to comment.