erikarn / athp

freebsd ath10k port
48 stars 15 forks source link

"deadlock" #37

Open bzfbd opened 4 years ago

bzfbd commented 4 years ago

Hit a "deadklock".

I assume it's more likely that the firmware went kaboom after this athp0: ath10k_htt_rx_delba: received DELBA, couldn't find node! and we didn't move anymore?

db> trace 100166 Tracing pid 0 tid 100166 td 0xfffffe003b99be00 sched_switch() at sched_switch+0x5b2/frame 0xfffffe003c0098e0 mi_switch() at mi_switch+0x155/frame 0xfffffe003c009900 mtx_lock_sleep() at mtx_lock_sleep+0x1cc/frame 0xfffffe003c009990 mtx_lock_flags() at mtx_lock_flags+0xe5/frame 0xfffffe003c0099e0 ath10k_wait_for_peer_common() at ath10k_wait_for_peer_common+0xe3/frame 0xfffffe003c009a40 athp_peer_free() at athp_peer_free+0xfb/frame 0xfffffe003c009a80 athp_node_free_cb() at athp_node_free_cb+0x84/frame 0xfffffe003c009ac0 athp_taskq_task() at athp_taskq_task+0x2fe/frame 0xfffffe003c009b00 taskqueue_run_locked() at taskqueue_run_locked+0xaa/frame 0xfffffe003c009b80 taskqueue_thread_loop() at taskqueue_thread_loop+0x94/frame 0xfffffe003c009bb0 fork_exit() at fork_exit+0x80/frame 0xfffffe003c009bf0 fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe003c009bf0 --- trap 0, rip = 0, rsp = 0, rbp = 0 --- db> trace 100160 Tracing pid 12 tid 100160 td 0xfffffe003b98f700 sched_switch() at sched_switch+0x5b2/frame 0xfffffe003b1e9810 mi_switch() at mi_switch+0x155/frame 0xfffffe003b1e9830 mtx_lock_sleep() at mtx_lock_sleep+0x1cc/frame 0xfffffe003b1e98c0 mtx_lock_flags() at mtx_lock_flags+0xe5/frame 0xfffffe003b1e9910 ath10k_get_arvif() at ath10k_get_arvif+0x2e/frame 0xfffffe003b1e9940 ath10k_htt_t2h_msg_handler() at ath10k_htt_t2h_msg_handler+0x374/frame 0xfffffe003b1e99b0 ath10k_htc_rx_completion_handler() at ath10k_htc_rx_completion_handler+0x203/frame 0xfffffe003b1e9a40 ath10k_pci_ce_recv_data() at ath10k_pci_ce_recv_data+0xff/frame 0xfffffe003b1e9ac0 ath10k_ce_per_engine_service() at ath10k_ce_per_engine_service+0x8c/frame 0xfffffe003b1e9b00 ath10k_pci_ce_tasklet() at ath10k_pci_ce_tasklet+0x55/frame 0xfffffe003b1e9b20 ithread_loop() at ithread_loop+0x279/frame 0xfffffe003b1e9bb0 fork_exit() at fork_exit+0x80/frame 0xfffffe003b1e9bf0 fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe003b1e9bf0 --- trap 0, rip = 0, rsp = 0, rbp = 0 --- db> trace 100161 Tracing pid 12 tid 100161 td 0xfffffe003b98f000 sched_switch() at sched_switch+0x5b2/frame 0xfffffe003b1ee540 mi_switch() at mi_switch+0x155/frame 0xfffffe003b1ee560 mtx_lock_sleep() at mtx_lock_sleep+0x1cc/frame 0xfffffe003b1ee5f0 mtx_lock_flags() at mtx_lock_flags+0xe5/frame 0xfffffe003b1ee640 ath10k_get_arvif() at ath10k_get_arvif+0x2e/frame 0xfffffe003b1ee670 ath10k_wmi_event_host_swba() at ath10k_wmi_event_host_swba+0x1a9/frame 0xfffffe003b1ee910 ath10k_wmi_10_2_op_rx() at ath10k_wmi_10_2_op_rx+0x2b9/frame 0xfffffe003b1ee9b0 ath10k_htc_rx_completion_handler() at ath10k_htc_rx_completion_handler+0x203/frame 0xfffffe003b1eea40 ath10k_pci_ce_recv_data() at ath10k_pci_ce_recv_data+0xff/frame 0xfffffe003b1eeac0 ath10k_ce_per_engine_service() at ath10k_ce_per_engine_service+0x8c/frame 0xfffffe003b1eeb00 ath10k_pci_ce_tasklet() at ath10k_pci_ce_tasklet+0x55/frame 0xfffffe003b1eeb20 ithread_loop() at ithread_loop+0x279/frame 0xfffffe003b1eebb0 fork_exit() at fork_exit+0x80/frame 0xfffffe003b1eebf0 fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe003b1eebf0 --- trap 0, rip = 0, rsp = 0, rbp = 0 ---

erikarn commented 4 years ago

Do you have any LOR info before that?

So I know there are a few LORs that need squishing still. :-)

A bunch of firmware messages do come by when we delete a node; those notifications shouldn't hurt. Ideally we'd go through the machinery of issuing delba and ensure crypto key deletion before we issue the peer teardown, but net80211 isn't quite ready for that.

bzfbd commented 4 years ago

No, no LOR before that.