Message ID | 20250107025621.1907-4-quic_kangyang@quicinc.com |
---|---|
State | New |
Headers | show |
Series | wifi: ath12k: monitor mode cleanup and state handling | expand |
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
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 --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;
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(-)