Skip to content

Commit d262610

Browse files
moore-brosgregkh
authored andcommitted
mt76: mt7921: avoid unnecessary consecutive WiFi resets
[ Upstream commit f07ac38 ] Avoid unnecessary consecutive WiFi resets by dropping reset request when reset work is working. Co-developed-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Sean Wang <[email protected]> Signed-off-by: Felix Fietkau <[email protected]> Signed-off-by: Sasha Levin <[email protected]>
1 parent 7c041b2 commit d262610

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

drivers/net/wireless/mediatek/mt76/mt7921/mac.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1272,6 +1272,7 @@ void mt7921_mac_reset_work(struct work_struct *work)
12721272
hw = mt76_hw(dev);
12731273

12741274
dev_err(dev->mt76.dev, "chip reset\n");
1275+
dev->hw_full_reset = true;
12751276
ieee80211_stop_queues(hw);
12761277

12771278
cancel_delayed_work_sync(&dev->mphy.mac_work);
@@ -1296,6 +1297,7 @@ void mt7921_mac_reset_work(struct work_struct *work)
12961297
ieee80211_scan_completed(dev->mphy.hw, &info);
12971298
}
12981299

1300+
dev->hw_full_reset = false;
12991301
ieee80211_wake_queues(hw);
13001302
ieee80211_iterate_active_interfaces(hw,
13011303
IEEE80211_IFACE_ITER_RESUME_ALL,
@@ -1306,7 +1308,8 @@ void mt7921_reset(struct mt76_dev *mdev)
13061308
{
13071309
struct mt7921_dev *dev = container_of(mdev, struct mt7921_dev, mt76);
13081310

1309-
queue_work(dev->mt76.wq, &dev->reset_work);
1311+
if (!dev->hw_full_reset)
1312+
queue_work(dev->mt76.wq, &dev->reset_work);
13101313
}
13111314

13121315
static void

drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ struct mt7921_dev {
156156
u16 chainmask;
157157

158158
struct work_struct reset_work;
159+
bool hw_full_reset;
159160

160161
struct list_head sta_poll_list;
161162
spinlock_t sta_poll_lock;

0 commit comments

Comments
 (0)