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

Commit 689de38e authored by Rajkumar Manoharan's avatar Rajkumar Manoharan Committed by Kalle Valo
Browse files

ath10k: fix unconditional num_mpdus_ready subtraction



Decrement num_mpdus_ready only when rx amsdu is processed successfully.
Not doing so, will result in leak and impact stabilty under low memory
cases. Also commit 3128b3d8 ("ath10k: speedup htt rx descriptor
processing for rx_ind") missed to removed unused skb list rx_q.

Fixes: 3128b3d8 ("ath10k: speedup htt rx descriptor processing for rx_ind")
Signed-off-by: default avatarRajkumar Manoharan <rmanohar@qti.qualcomm.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent dd7c280f
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -2412,14 +2412,12 @@ static void ath10k_htt_txrx_compl_task(unsigned long ptr)
	struct ath10k_htt *htt = (struct ath10k_htt *)ptr;
	struct ath10k *ar = htt->ar;
	struct htt_tx_done tx_done = {};
	struct sk_buff_head rx_q;
	struct sk_buff_head rx_ind_q;
	struct sk_buff_head tx_ind_q;
	struct sk_buff *skb;
	unsigned long flags;
	int num_mpdus;

	__skb_queue_head_init(&rx_q);
	__skb_queue_head_init(&rx_ind_q);
	__skb_queue_head_init(&tx_ind_q);

@@ -2447,11 +2445,13 @@ static void ath10k_htt_txrx_compl_task(unsigned long ptr)
	ath10k_mac_tx_push_pending(ar);

	num_mpdus = atomic_read(&htt->num_mpdus_ready);
	atomic_sub(num_mpdus, &htt->num_mpdus_ready);

	while (num_mpdus--) {
	while (num_mpdus) {
		if (ath10k_htt_rx_handle_amsdu(htt))
			break;

		num_mpdus--;
		atomic_dec(&htt->num_mpdus_ready);
	}

	while ((skb = __skb_dequeue(&rx_ind_q))) {