ath10k: fix core start sequence
It was possible to call hif_stop() 2 times through ath10k_htc_connect_init() timeout failpath which could lead to double free_irq() kernel splat for multiple MSI interrupt case. Re-order init sequence to avoid this problem. The HTC stop shouldn't stop HIF implicitly since it doesn't implicitly start it. Since the re-ordering required some functions to be split/removed/renamed rename a few functions to make more sense while at it. Reported-By: Ben Greear <greearb@candelatech.com> Signed-off-by: Michal Kazior <michal.kazior@tieto.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
This commit is contained in:

committed by
Kalle Valo

parent
46acf7bb9b
commit
95bf21f97f
@@ -830,17 +830,11 @@ int ath10k_htc_start(struct ath10k_htc *htc)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* stop HTC communications, i.e. stop interrupt reception, and flush all
|
||||
* queued buffers
|
||||
*/
|
||||
void ath10k_htc_stop(struct ath10k_htc *htc)
|
||||
{
|
||||
spin_lock_bh(&htc->tx_lock);
|
||||
htc->stopped = true;
|
||||
spin_unlock_bh(&htc->tx_lock);
|
||||
|
||||
ath10k_hif_stop(htc->ar);
|
||||
}
|
||||
|
||||
/* registered target arrival callback from the HIF layer */
|
||||
|
Reference in New Issue
Block a user