diff options
author | Lorenzo Bianconi <lorenzo@kernel.org> | 2020-05-12 22:02:47 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2020-05-13 20:01:10 +0200 |
commit | 7cba8c30aa7baf79650dec6b7713b985be84c5f7 (patch) | |
tree | 9251c6b05431aea4caf2ad1db3b709c7194f5a3d /drivers/net/wireless/mediatek/mt76/mt7615/main.c | |
parent | mt76: mt7663: fix the usage WoW with net detect support (diff) | |
download | linux-7cba8c30aa7baf79650dec6b7713b985be84c5f7.tar.xz linux-7cba8c30aa7baf79650dec6b7713b985be84c5f7.zip |
mt76: mt7615: do not report scan_complete twice to mac80211
Fix the following kernel warning that occurs if scan work is scheduled
and the hw scan has been cancelled by mac80211
WARNING: CPU: 1 PID: 502 at net/mac80211/scan.c:391 __ieee80211_scan_completed+0x299/0x690
Modules linked in:
CPU: 1 PID: 502 Comm: kworker/u4:4 Not tainted 5.7.0-rc1+ #2882
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-2.fc32 04/01/2014
Workqueue: phy0 ieee80211_scan_work
RIP: 0010:__ieee80211_scan_completed+0x299/0x690
RSP: 0018:ffffc9000036fda8 EFLAGS: 00010246
RAX: 0000000000000000 RBX: 0000000000000000 RCX: 8c6318c6318c6320
RDX: 0000000000000000 RSI: 00000000ffffffff RDI: ffff88803bb129b8
RBP: ffff88803bb10d80 R08: 0000000000000001 R09: 0000000000000001
R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000000 R15: ffff88803bb12ae8
FS: 0000000000000000(0000) GS:ffff88803ec00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f13ee5c1470 CR3: 000000003c790000 CR4: 00000000000006a0
Call Trace:
ieee80211_scan_work+0x170/0x850
? sched_clock_cpu+0x11/0xb0
process_one_work+0x24f/0x580
? worker_thread+0xcc/0x3e0
worker_thread+0x4f/0x3e0
? process_one_work+0x580/0x580
kthread+0x11b/0x140
? __kthread_bind_mask+0x60/0x60
ret_from_fork+0x3a/0x50
irq event stamp: 9255532
hardirqs last enabled at (9255531): [<ffffffff81a504e4>] _raw_spin_unlock_irq+0x24/0x30
hardirqs last disabled at (9255532): [<ffffffff81001b3f>] trace_hardirqs_off_thunk+0x1a/0x1c
softirqs last enabled at (9255526): [<ffffffff8107c9ef>] process_one_work+0x24f/0x580
softirqs last disabled at (9255524): [<ffffffff815f2f41>] mt7615_scan_work+0x91/0xc0
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/mt7615/main.c')
-rw-r--r-- | drivers/net/wireless/mediatek/mt76/mt7615/main.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/main.c b/drivers/net/wireless/mediatek/mt76/mt7615/main.c index 402ff38f7dcf..c8705f91bafc 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7615/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7615/main.c @@ -810,15 +810,15 @@ void mt7615_scan_work(struct work_struct *work) break; rxd = (struct mt7615_mcu_rxd *)skb->data; - if (rxd->eid == MCU_EVENT_SCAN_DONE) { + if (rxd->eid == MCU_EVENT_SCHED_SCAN_DONE) { + ieee80211_sched_scan_results(phy->mt76->hw); + } else if (test_and_clear_bit(MT76_HW_SCANNING, + &phy->mt76->state)) { struct cfg80211_scan_info info = { .aborted = false, }; - clear_bit(MT76_HW_SCANNING, &phy->mt76->state); ieee80211_scan_completed(phy->mt76->hw, &info); - } else { - ieee80211_sched_scan_results(phy->mt76->hw); } dev_kfree_skb(skb); } |