From: Alagu Sankar <alagusankar@xxxxxxxxxxxxxxx> sdio hif interface uses the start_once optimization to avoid unnecessary firmware downloading. simulate hif_stop in sdio as core_stop does not handle this due to start_once optimization. Signed-off-by: Alagu Sankar <alagusankar@xxxxxxxxxxxxxxx> --- drivers/net/wireless/ath/ath10k/sdio.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/net/wireless/ath/ath10k/sdio.c b/drivers/net/wireless/ath/ath10k/sdio.c index 11fbf6e..c6f23a9 100644 --- a/drivers/net/wireless/ath/ath10k/sdio.c +++ b/drivers/net/wireless/ath/ath10k/sdio.c @@ -2255,6 +2255,12 @@ static void ath10k_sdio_remove(struct sdio_func *func) cancel_work_sync(&ar_sdio->wr_async_work); ath10k_core_unregister(ar); ath10k_core_destroy(ar); + + if (ar->is_started && ar->hw_params.start_once) { + ath10k_hif_stop(ar); + ath10k_hif_power_down(ar); + } + kfree(ar_sdio->dma_buffer); kfree(ar_sdio->vsg_buffer); } -- 1.9.1