Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork8.2k
Commit6fa498c
rp2/mpnetworkport: Fix lost CYW43 WiFi events when using both cores.
There's a very odd but predictable sequence of events that breaks Wi-Fiwhen using both cores:1) CPU1 calls pendsv_suspend() - for example sleep() causes a softtimer node to be inserted, which calls pendsv_suspend().2) CYW43 sends wakeup IRQ. CPU0 GPIO IRQ handler schedules PendSV and disables the GPIO IRQ on CPU0, to re-enable after cyw43_poll() runs and completes.3) CPU0 PendSV_Handler runs, sees pendsv is suspended, exits.4) CPU1 calls pendsv_resume() and pendsv_resume() sees PendSV is pending and triggers it on CPU1.5) CPU1 runs PendSV_Handler, runs cyw43_poll(), and at the end it re-enables the IRQ *but now on CPU1*.However CPU1 has GPIO IRQs disabled, so the CYW43 interrupt never runsagain...The fix in this commit is to always enable/disable the interrupt on CPU0.This isn't supported by the pico-sdk, but it is supported by the hardware.Fixes issue#16779.This work was funded through GitHub Sponsors.Signed-off-by: Angus Gratton <angus@redyak.com.au>1 parentdd7a950 commit6fa498c
1 file changed
+29
-5
lines changedLines changed: 29 additions & 5 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
59 | 59 |
| |
60 | 60 |
| |
61 | 61 |
| |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
62 | 83 |
| |
63 | 84 |
| |
64 | 85 |
| |
65 |
| - | |
66 |
| - | |
67 |
| - | |
68 |
| - | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
69 | 92 |
| |
70 | 93 |
| |
71 | 94 |
| |
| |||
81 | 104 |
| |
82 | 105 |
| |
83 | 106 |
| |
| 107 | + | |
84 | 108 |
| |
85 | 109 |
| |
86 |
| - | |
| 110 | + | |
87 | 111 |
| |
88 | 112 |
| |
89 | 113 |
| |
|
0 commit comments
Comments
(0)