Commit fb4a7df
committed
wifi: mt7996: harden FE/WED recovery against SCS and WDMA reset races
Crash analysis points to the FE/WED/mt7996 recovery path rather than a
standalone Wi-Fi fault.
The observed sequence is:
- mtk_eth detects an ADMA Rx hang and enters FE reset
- mtk_wed forwards the reset into mt7996 recovery
- mt7996 SCS work is still active and keeps sending MCU commands
- L1 SER starts while FE/WED reset is already in progress
- the system later hits a write-to-read-only-memory oops during the
recovery window
The exact faulting instruction is not available from the crash log, but
the repeated "failed to send SCS MCU command" messages immediately before
L1 SER strongly indicate a reset-time race. Vendor Mediatek trees also
carry WDMA link handling around Wi-Fi L1 SER, which is missing here.
Fix this by:
- canceling scs_work in mt7996_mac_full_reset() so SCS MCU traffic cannot
continue into reset/recovery
- disabling the PSE WDMA link before WED DMA reset and re-enabling it on
WED start, matching the vendor SER flow more closely
Together these changes make the FE/WED/mt7996 reset path more robust under
hang recovery.
Signed-off-by: Rudy Andram <rmandrad@gmail.com>1 parent 2120744 commit fb4a7df
3 files changed
Lines changed: 16 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1853 | 1853 | | |
1854 | 1854 | | |
1855 | 1855 | | |
| 1856 | + | |
| 1857 | + | |
| 1858 | + | |
| 1859 | + | |
| 1860 | + | |
| 1861 | + | |
| 1862 | + | |
| 1863 | + | |
| 1864 | + | |
| 1865 | + | |
| 1866 | + | |
| 1867 | + | |
1856 | 1868 | | |
1857 | 1869 | | |
1858 | 1870 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1762 | 1762 | | |
1763 | 1763 | | |
1764 | 1764 | | |
| 1765 | + | |
| 1766 | + | |
1765 | 1767 | | |
1766 | 1768 | | |
1767 | 1769 | | |
| |||
2434 | 2436 | | |
2435 | 2437 | | |
2436 | 2438 | | |
| 2439 | + | |
2437 | 2440 | | |
2438 | 2441 | | |
2439 | 2442 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2554 | 2554 | | |
2555 | 2555 | | |
2556 | 2556 | | |
| 2557 | + | |
2557 | 2558 | | |
2558 | 2559 | | |
2559 | 2560 | | |
| |||
0 commit comments