Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d9bc4b9b authored by Michal Kazior's avatar Michal Kazior Committed by Kalle Valo
Browse files

ath10k: fix firmware recovery with ap interface



Beacon data wasn't properly cleared during early
phase of recovery. This in turn caused firmware to
crash because the beacon data was submitted before
vdevs were fully re-configured. Ultimately the
device was considered wedged and nothing worked
until driver was reloaded.

Signed-off-by: default avatarMichal Kazior <michal.kazior@tieto.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent ad3d2153
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -2291,6 +2291,8 @@ static void ath10k_tx(struct ieee80211_hw *hw,
 */
void ath10k_halt(struct ath10k *ar)
{
	struct ath10k_vif *arvif;

	lockdep_assert_held(&ar->conf_mutex);

	if (ath10k_monitor_is_enabled(ar)) {
@@ -2313,6 +2315,17 @@ void ath10k_halt(struct ath10k *ar)
		ar->scan.in_progress = false;
		ieee80211_scan_completed(ar->hw, true);
	}

	list_for_each_entry(arvif, &ar->arvifs, list) {
		if (!arvif->beacon)
			continue;

		dma_unmap_single(arvif->ar->dev,
				 ATH10K_SKB_CB(arvif->beacon)->paddr,
				 arvif->beacon->len, DMA_TO_DEVICE);
		dev_kfree_skb_any(arvif->beacon);
		arvif->beacon = NULL;
	}
	spin_unlock_bh(&ar->data_lock);
}