From: P Praneesh Date: Fri, 12 Nov 2021 09:02:12 +0000 (+0200) Subject: ath11k: avoid additional access to ath11k_hal_srng_dst_num_free X-Git-Tag: v5.17-rc1~170^2~250^2~33^2~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a1775e732eb90486519de3813b83a11b7fcee2d0;p=thirdparty%2Flinux.git ath11k: avoid additional access to ath11k_hal_srng_dst_num_free In ath11k_dp_process_rx(), after processing rx_desc from ath11k_hal_srng_dst_get_next_entry(), ath11k_hal_srng_dst_num_free() is accessed everytime because of done flag is not set. To avoid this additional access to ath11k_hal_srng_dst_num_free(), increment total_msdu_reaped only when continuation is not set and update done flag correspondingly. Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.4.0.1.r2-00012-QCAHKSWPL_SILICONZ-1 Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.4.0.1-01695-QCAHKSWPL_SILICONZ-1 Co-developed-by: Sriram R Signed-off-by: Sriram R Signed-off-by: Jouni Malinen Signed-off-by: P Praneesh Signed-off-by: Kalle Valo Link: https://lore.kernel.org/r/1630560820-21905-5-git-send-email-ppranees@codeaurora.org --- diff --git a/drivers/net/wireless/ath/ath11k/dp_rx.c b/drivers/net/wireless/ath/ath11k/dp_rx.c index f4ae948a6dd64..7c60f66077f5d 100644 --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c @@ -2701,7 +2701,6 @@ try_again: DMA_FROM_DEVICE); num_buffs_reaped[mac_id]++; - total_msdu_reaped++; push_reason = FIELD_GET(HAL_REO_DEST_RING_INFO0_PUSH_REASON, desc.info0); @@ -2728,10 +2727,15 @@ try_again: rxcb->mac_id = mac_id; __skb_queue_tail(&msdu_list, msdu); - if (total_msdu_reaped >= quota && !rxcb->is_continuation) { + if (rxcb->is_continuation) { + done = false; + } else { + total_msdu_reaped++; done = true; - break; } + + if (total_msdu_reaped >= budget) + break; } /* Hw might have updated the head pointer after we cached it.