File tree 9 files changed +30
-4
lines changed
drivers/net/wireless/mediatek/mt76 9 files changed +30
-4
lines changed Original file line number Diff line number Diff line change @@ -1471,17 +1471,20 @@ static void mt7603_mac_watchdog_reset(struct mt7603_dev *dev)
1471
1471
mutex_unlock (& dev -> mt76 .mutex );
1472
1472
1473
1473
mt76_worker_enable (& dev -> mt76 .tx_worker );
1474
- napi_enable (& dev -> mt76 .tx_napi );
1475
- napi_schedule (& dev -> mt76 .tx_napi );
1476
1474
1477
1475
tasklet_enable (& dev -> mt76 .pre_tbtt_tasklet );
1478
1476
mt7603_beacon_set_timer (dev , -1 , beacon_int );
1479
1477
1478
+ local_bh_disable ();
1479
+ napi_enable (& dev -> mt76 .tx_napi );
1480
+ napi_schedule (& dev -> mt76 .tx_napi );
1481
+
1480
1482
napi_enable (& dev -> mt76 .napi [0 ]);
1481
1483
napi_schedule (& dev -> mt76 .napi [0 ]);
1482
1484
1483
1485
napi_enable (& dev -> mt76 .napi [1 ]);
1484
1486
napi_schedule (& dev -> mt76 .napi [1 ]);
1487
+ local_bh_enable ();
1485
1488
1486
1489
ieee80211_wake_queues (dev -> mt76 .hw );
1487
1490
mt76_txq_schedule_all (& dev -> mphy );
Original file line number Diff line number Diff line change @@ -164,12 +164,14 @@ static int mt7615_pci_resume(struct pci_dev *pdev)
164
164
dev_err (mdev -> dev , "PDMA engine must be reinitialized\n" );
165
165
166
166
mt76_worker_enable (& mdev -> tx_worker );
167
+ local_bh_disable ();
167
168
mt76_for_each_q_rx (mdev , i ) {
168
169
napi_enable (& mdev -> napi [i ]);
169
170
napi_schedule (& mdev -> napi [i ]);
170
171
}
171
172
napi_enable (& mdev -> tx_napi );
172
173
napi_schedule (& mdev -> tx_napi );
174
+ local_bh_enable ();
173
175
174
176
if (!test_bit (MT76_STATE_SUSPEND , & dev -> mphy .state ) &&
175
177
mt7615_firmware_offload (dev ))
Original file line number Diff line number Diff line change @@ -326,6 +326,8 @@ void mt7615_mac_reset_work(struct work_struct *work)
326
326
clear_bit (MT76_RESET , & phy2 -> mt76 -> state );
327
327
328
328
mt76_worker_enable (& dev -> mt76 .tx_worker );
329
+
330
+ local_bh_disable ();
329
331
napi_enable (& dev -> mt76 .tx_napi );
330
332
napi_schedule (& dev -> mt76 .tx_napi );
331
333
@@ -334,6 +336,7 @@ void mt7615_mac_reset_work(struct work_struct *work)
334
336
335
337
napi_enable (& dev -> mt76 .napi [1 ]);
336
338
napi_schedule (& dev -> mt76 .napi [1 ]);
339
+ local_bh_enable ();
337
340
338
341
ieee80211_wake_queues (mt76_hw (dev ));
339
342
if (ext_phy )
Original file line number Diff line number Diff line change @@ -276,6 +276,7 @@ static int mt76x0e_resume(struct pci_dev *pdev)
276
276
277
277
mt76_worker_enable (& mdev -> tx_worker );
278
278
279
+ local_bh_disable ();
279
280
mt76_for_each_q_rx (mdev , i ) {
280
281
mt76_queue_rx_reset (dev , i );
281
282
napi_enable (& mdev -> napi [i ]);
@@ -284,6 +285,7 @@ static int mt76x0e_resume(struct pci_dev *pdev)
284
285
285
286
napi_enable (& mdev -> tx_napi );
286
287
napi_schedule (& mdev -> tx_napi );
288
+ local_bh_enable ();
287
289
288
290
return mt76x0e_init_hardware (dev , true);
289
291
}
Original file line number Diff line number Diff line change @@ -491,15 +491,17 @@ static void mt76x02_watchdog_reset(struct mt76x02_dev *dev)
491
491
clear_bit (MT76_RESET , & dev -> mphy .state );
492
492
493
493
mt76_worker_enable (& dev -> mt76 .tx_worker );
494
+ tasklet_enable (& dev -> mt76 .pre_tbtt_tasklet );
495
+
496
+ local_bh_disable ();
494
497
napi_enable (& dev -> mt76 .tx_napi );
495
498
napi_schedule (& dev -> mt76 .tx_napi );
496
499
497
- tasklet_enable (& dev -> mt76 .pre_tbtt_tasklet );
498
-
499
500
mt76_for_each_q_rx (& dev -> mt76 , i ) {
500
501
napi_enable (& dev -> mt76 .napi [i ]);
501
502
napi_schedule (& dev -> mt76 .napi [i ]);
502
503
}
504
+ local_bh_enable ();
503
505
504
506
if (restart ) {
505
507
set_bit (MT76_RESTART , & dev -> mphy .state );
Original file line number Diff line number Diff line change @@ -149,12 +149,15 @@ mt76x2e_resume(struct pci_dev *pdev)
149
149
pci_restore_state (pdev );
150
150
151
151
mt76_worker_enable (& mdev -> tx_worker );
152
+
153
+ local_bh_disable ();
152
154
mt76_for_each_q_rx (mdev , i ) {
153
155
napi_enable (& mdev -> napi [i ]);
154
156
napi_schedule (& mdev -> napi [i ]);
155
157
}
156
158
napi_enable (& mdev -> tx_napi );
157
159
napi_schedule (& mdev -> tx_napi );
160
+ local_bh_enable ();
158
161
159
162
return mt76x2_resume_device (dev );
160
163
}
Original file line number Diff line number Diff line change @@ -1837,6 +1837,7 @@ void mt7915_mac_reset_work(struct work_struct *work)
1837
1837
if (phy2 )
1838
1838
clear_bit (MT76_RESET , & phy2 -> mt76 -> state );
1839
1839
1840
+ local_bh_disable ();
1840
1841
napi_enable (& dev -> mt76 .napi [0 ]);
1841
1842
napi_schedule (& dev -> mt76 .napi [0 ]);
1842
1843
@@ -1845,6 +1846,8 @@ void mt7915_mac_reset_work(struct work_struct *work)
1845
1846
1846
1847
napi_enable (& dev -> mt76 .napi [2 ]);
1847
1848
napi_schedule (& dev -> mt76 .napi [2 ]);
1849
+ local_bh_enable ();
1850
+
1848
1851
tasklet_schedule (& dev -> irq_tasklet );
1849
1852
1850
1853
mt76_wr (dev , MT_MCU_INT_EVENT , MT_MCU_INT_EVENT_RESET_DONE );
Original file line number Diff line number Diff line change @@ -1390,10 +1390,12 @@ mt7921_mac_reset(struct mt7921_dev *dev)
1390
1390
1391
1391
mt7921_wpdma_reset (dev , true);
1392
1392
1393
+ local_bh_disable ();
1393
1394
mt76_for_each_q_rx (& dev -> mt76 , i ) {
1394
1395
napi_enable (& dev -> mt76 .napi [i ]);
1395
1396
napi_schedule (& dev -> mt76 .napi [i ]);
1396
1397
}
1398
+ local_bh_enable ();
1397
1399
1398
1400
clear_bit (MT76_MCU_RESET , & dev -> mphy .state );
1399
1401
@@ -1418,8 +1420,11 @@ mt7921_mac_reset(struct mt7921_dev *dev)
1418
1420
out :
1419
1421
clear_bit (MT76_RESET , & dev -> mphy .state );
1420
1422
1423
+ local_bh_disable ();
1421
1424
napi_enable (& dev -> mt76 .tx_napi );
1422
1425
napi_schedule (& dev -> mt76 .tx_napi );
1426
+ local_bh_enable ();
1427
+
1423
1428
mt76_worker_enable (& dev -> mt76 .tx_worker );
1424
1429
1425
1430
return err ;
Original file line number Diff line number Diff line change @@ -302,12 +302,15 @@ static int mt7921_pci_resume(struct pci_dev *pdev)
302
302
MT_WFDMA0_GLO_CFG_TX_DMA_EN | MT_WFDMA0_GLO_CFG_RX_DMA_EN );
303
303
304
304
mt76_worker_enable (& mdev -> tx_worker );
305
+
306
+ local_bh_disable ();
305
307
mt76_for_each_q_rx (mdev , i ) {
306
308
napi_enable (& mdev -> napi [i ]);
307
309
napi_schedule (& mdev -> napi [i ]);
308
310
}
309
311
napi_enable (& mdev -> tx_napi );
310
312
napi_schedule (& mdev -> tx_napi );
313
+ local_bh_enable ();
311
314
312
315
/* restore previous ds setting */
313
316
if (!pm -> ds_enable )
You can’t perform that action at this time.
0 commit comments