diff mbox series

[v6,3/3] wifi: ath12k: delete mon reap timer

Message ID 20250107025621.1907-4-quic_kangyang@quicinc.com
State New
Headers show
Series wifi: ath12k: monitor mode cleanup and state handling | expand

Commit Message

Kang Yang Jan. 7, 2025, 2:56 a.m. UTC
Currently mon reap timer is not used, and it is not needed anymore.

So remove related code.

Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3

Signed-off-by: Kang Yang <quic_kangyang@quicinc.com>
---
 drivers/net/wireless/ath/ath12k/core.h |  2 --
 drivers/net/wireless/ath/ath12k/dp.c   | 30 +-------------------------
 2 files changed, 1 insertion(+), 31 deletions(-)

Comments

Vasanthakumar Thiagarajan May 1, 2025, 3:34 p.m. UTC | #1
On 1/7/2025 8:26 AM, Kang Yang wrote:
> Currently mon reap timer is not used, and it is not needed anymore.
> 
> So remove related code.
> 
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
> 
> Signed-off-by: Kang Yang <quic_kangyang@quicinc.com>
> ---
>   drivers/net/wireless/ath/ath12k/core.h |  2 --
>   drivers/net/wireless/ath/ath12k/dp.c   | 30 +-------------------------
>   2 files changed, 1 insertion(+), 31 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/ath12k/core.h b/drivers/net/wireless/ath/ath12k/core.h
> index 41a51c7bad6c..ad2451fd7ce9 100644
> --- a/drivers/net/wireless/ath/ath12k/core.h
> +++ b/drivers/net/wireless/ath/ath12k/core.h
> @@ -992,8 +992,6 @@ struct ath12k_base {
>   	struct ath12k_dbring_cap *db_caps;
>   	u32 num_db_cap;
>   
> -	struct timer_list mon_reap_timer;
> -
>   	struct completion htc_suspend;
>   
>   	u64 fw_soc_drop_count;
> diff --git a/drivers/net/wireless/ath/ath12k/dp.c b/drivers/net/wireless/ath/ath12k/dp.c
> index 9e5a4e75f2f6..f162f98e7b79 100644
> --- a/drivers/net/wireless/ath/ath12k/dp.c
> +++ b/drivers/net/wireless/ath/ath12k/dp.c
> @@ -1,7 +1,7 @@
>   // SPDX-License-Identifier: BSD-3-Clause-Clear
>   /*
>    * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
> - * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
> + * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.
>    */
>   
>   #include <crypto/hash.h>
> @@ -982,11 +982,6 @@ void ath12k_dp_pdev_free(struct ath12k_base *ab)
>   {
>   	int i;
>   
> -	if (!ab->mon_reap_timer.function)
> -		return;

This dead code removal change also fixes a memory leak in rxdma_mon_dst_ring with QCN
chipset. Bailing out based on the timer setup will leave the memory allocated
for rxdma_mon_dst_ring unfreed as rxdma_mon_dst_ring is allocated when the mon_reap_timer
is not setup.

Vasanth
Kang Yang May 7, 2025, 2:07 a.m. UTC | #2
On 5/1/2025 11:34 PM, Vasanthakumar Thiagarajan wrote:
> 
> 
> On 1/7/2025 8:26 AM, Kang Yang wrote:
>> Currently mon reap timer is not used, and it is not needed anymore.
>>
>> So remove related code.
>>
>> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481- 
>> QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
>>
>> Signed-off-by: Kang Yang <quic_kangyang@quicinc.com>
>> ---
>>   drivers/net/wireless/ath/ath12k/core.h |  2 --
>>   drivers/net/wireless/ath/ath12k/dp.c   | 30 +-------------------------
>>   2 files changed, 1 insertion(+), 31 deletions(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath12k/core.h b/drivers/net/ 
>> wireless/ath/ath12k/core.h
>> index 41a51c7bad6c..ad2451fd7ce9 100644
>> --- a/drivers/net/wireless/ath/ath12k/core.h
>> +++ b/drivers/net/wireless/ath/ath12k/core.h
>> @@ -992,8 +992,6 @@ struct ath12k_base {
>>       struct ath12k_dbring_cap *db_caps;
>>       u32 num_db_cap;
>> -    struct timer_list mon_reap_timer;
>> -
>>       struct completion htc_suspend;
>>       u64 fw_soc_drop_count;
>> diff --git a/drivers/net/wireless/ath/ath12k/dp.c b/drivers/net/ 
>> wireless/ath/ath12k/dp.c
>> index 9e5a4e75f2f6..f162f98e7b79 100644
>> --- a/drivers/net/wireless/ath/ath12k/dp.c
>> +++ b/drivers/net/wireless/ath/ath12k/dp.c
>> @@ -1,7 +1,7 @@
>>   // SPDX-License-Identifier: BSD-3-Clause-Clear
>>   /*
>>    * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
>> - * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All 
>> rights reserved.
>> + * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All 
>> rights reserved.
>>    */
>>   #include <crypto/hash.h>
>> @@ -982,11 +982,6 @@ void ath12k_dp_pdev_free(struct ath12k_base *ab)
>>   {
>>       int i;
>> -    if (!ab->mon_reap_timer.function)
>> -        return;
> 
> This dead code removal change also fixes a memory leak in 
> rxdma_mon_dst_ring with QCN
> chipset. Bailing out based on the timer setup will leave the memory 
> allocated
> for rxdma_mon_dst_ring unfreed as rxdma_mon_dst_ring is allocated when 
> the mon_reap_timer
> is not setup.


Praneesh told me about this.

This change is in master-pending now.
https://git.kernel.org/pub/scm/linux/kernel/git/ath/ath.git/commit/?h=main-pending&id=c23cc8ea2d104fecd0a54ca691cf8d58fe956fa7


> 
> Vasanth
>
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath12k/core.h b/drivers/net/wireless/ath/ath12k/core.h
index 41a51c7bad6c..ad2451fd7ce9 100644
--- a/drivers/net/wireless/ath/ath12k/core.h
+++ b/drivers/net/wireless/ath/ath12k/core.h
@@ -992,8 +992,6 @@  struct ath12k_base {
 	struct ath12k_dbring_cap *db_caps;
 	u32 num_db_cap;
 
-	struct timer_list mon_reap_timer;
-
 	struct completion htc_suspend;
 
 	u64 fw_soc_drop_count;
diff --git a/drivers/net/wireless/ath/ath12k/dp.c b/drivers/net/wireless/ath/ath12k/dp.c
index 9e5a4e75f2f6..f162f98e7b79 100644
--- a/drivers/net/wireless/ath/ath12k/dp.c
+++ b/drivers/net/wireless/ath/ath12k/dp.c
@@ -1,7 +1,7 @@ 
 // SPDX-License-Identifier: BSD-3-Clause-Clear
 /*
  * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
- * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.
  */
 
 #include <crypto/hash.h>
@@ -982,11 +982,6 @@  void ath12k_dp_pdev_free(struct ath12k_base *ab)
 {
 	int i;
 
-	if (!ab->mon_reap_timer.function)
-		return;
-
-	del_timer_sync(&ab->mon_reap_timer);
-
 	for (i = 0; i < ab->num_radios; i++)
 		ath12k_dp_rx_pdev_free(ab, i);
 }
@@ -1024,27 +1019,6 @@  void ath12k_dp_hal_rx_desc_init(struct ath12k_base *ab)
 		ab->hal_rx_ops->rx_desc_get_desc_size();
 }
 
-static void ath12k_dp_service_mon_ring(struct timer_list *t)
-{
-	struct ath12k_base *ab = from_timer(ab, t, mon_reap_timer);
-	int i;
-
-	for (i = 0; i < ab->hw_params->num_rxdma_per_pdev; i++)
-		ath12k_dp_mon_process_ring(ab, i, NULL, DP_MON_SERVICE_BUDGET,
-					   ATH12K_DP_RX_MONITOR_MODE);
-
-	mod_timer(&ab->mon_reap_timer, jiffies +
-		  msecs_to_jiffies(ATH12K_MON_TIMER_INTERVAL));
-}
-
-static void ath12k_dp_mon_reap_timer_init(struct ath12k_base *ab)
-{
-	if (ab->hw_params->rxdma1_enable)
-		return;
-
-	timer_setup(&ab->mon_reap_timer, ath12k_dp_service_mon_ring, 0);
-}
-
 int ath12k_dp_pdev_alloc(struct ath12k_base *ab)
 {
 	struct ath12k *ar;
@@ -1055,8 +1029,6 @@  int ath12k_dp_pdev_alloc(struct ath12k_base *ab)
 	if (ret)
 		goto out;
 
-	ath12k_dp_mon_reap_timer_init(ab);
-
 	/* TODO: Per-pdev rx ring unlike tx ring which is mapped to different AC's */
 	for (i = 0; i < ab->num_radios; i++) {
 		ar = ab->pdevs[i].ar;