]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: ath12k: Remove ath12k_get_num_hw() helper function
authorKarthikeyan Periyasamy <quic_periyasa@quicinc.com>
Sun, 12 Jan 2025 07:16:29 +0000 (12:46 +0530)
committerJeff Johnson <jeff.johnson@oss.qualcomm.com>
Tue, 14 Jan 2025 20:53:01 +0000 (12:53 -0800)
Currently, the ath12k_get_num_hw() helper function takes the device handle
as an argument. Here, the number of hardware is retrieved from the group
handle. Demanding the device handle from the caller is unnecessary since
in some cases the group handle is already available. Additionally, there
is no longer a need for multiple indirections to get the number of
hardware. Therefore, remove this helper function and directly use
ag->num_hw. This change also fixes the below Smatch static checker
warning.

Smatch warning:
ath12k_mac_destroy() error: we previously assumed 'ab' could be null

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1

Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/ath12k/3e705de0-67d1-4437-97ff-4828d83ae2af@stanley.mountain/
Closes: https://scan7.scan.coverity.com/#/project-view/52682/11354?selectedIssue=1602340
Fixes: a343d97f27f5 ("wifi: ath12k: move struct ath12k_hw from per device to group")
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Acked-by: Kalle Valo <kvalo@kernel.org>
Acked-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
Link: https://patch.msgid.link/20250112071630.4059410-4-quic_periyasa@quicinc.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
drivers/net/wireless/ath/ath12k/core.c
drivers/net/wireless/ath/ath12k/core.h
drivers/net/wireless/ath/ath12k/mac.c

index af49e7db4928d10b7c4e7db7ad86379d645c87a7..0606116d6b9c491b6ede401b2e1aedfb619339a8 100644 (file)
@@ -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 <linux/module.h>
@@ -1173,6 +1173,7 @@ err_hal_srng_deinit:
 static void ath12k_rfkill_work(struct work_struct *work)
 {
        struct ath12k_base *ab = container_of(work, struct ath12k_base, rfkill_work);
+       struct ath12k_hw_group *ag = ab->ag;
        struct ath12k *ar;
        struct ath12k_hw *ah;
        struct ieee80211_hw *hw;
@@ -1183,8 +1184,8 @@ static void ath12k_rfkill_work(struct work_struct *work)
        rfkill_radio_on = ab->rfkill_radio_on;
        spin_unlock_bh(&ab->base_lock);
 
-       for (i = 0; i < ath12k_get_num_hw(ab); i++) {
-               ah = ath12k_ag_to_ah(ab->ag, i);
+       for (i = 0; i < ag->num_hw; i++) {
+               ah = ath12k_ag_to_ah(ag, i);
                if (!ah)
                        continue;
 
@@ -1224,6 +1225,7 @@ void ath12k_core_halt(struct ath12k *ar)
 
 static void ath12k_core_pre_reconfigure_recovery(struct ath12k_base *ab)
 {
+       struct ath12k_hw_group *ag = ab->ag;
        struct ath12k *ar;
        struct ath12k_hw *ah;
        int i, j;
@@ -1235,8 +1237,8 @@ static void ath12k_core_pre_reconfigure_recovery(struct ath12k_base *ab)
        if (ab->is_reset)
                set_bit(ATH12K_FLAG_CRASH_FLUSH, &ab->dev_flags);
 
-       for (i = 0; i < ath12k_get_num_hw(ab); i++) {
-               ah = ath12k_ag_to_ah(ab->ag, i);
+       for (i = 0; i < ag->num_hw; i++) {
+               ah = ath12k_ag_to_ah(ag, i);
                if (!ah || ah->state == ATH12K_HW_STATE_OFF)
                        continue;
 
@@ -1270,12 +1272,13 @@ static void ath12k_core_pre_reconfigure_recovery(struct ath12k_base *ab)
 
 static void ath12k_core_post_reconfigure_recovery(struct ath12k_base *ab)
 {
+       struct ath12k_hw_group *ag = ab->ag;
        struct ath12k_hw *ah;
        struct ath12k *ar;
        int i, j;
 
-       for (i = 0; i < ath12k_get_num_hw(ab); i++) {
-               ah = ath12k_ag_to_ah(ab->ag, i);
+       for (i = 0; i < ag->num_hw; i++) {
+               ah = ath12k_ag_to_ah(ag, i);
                if (!ah || ah->state == ATH12K_HW_STATE_OFF)
                        continue;
 
@@ -1318,6 +1321,7 @@ static void ath12k_core_post_reconfigure_recovery(struct ath12k_base *ab)
 static void ath12k_core_restart(struct work_struct *work)
 {
        struct ath12k_base *ab = container_of(work, struct ath12k_base, restart_work);
+       struct ath12k_hw_group *ag = ab->ag;
        struct ath12k_hw *ah;
        int ret, i;
 
@@ -1336,7 +1340,7 @@ static void ath12k_core_restart(struct work_struct *work)
                        ath12k_dbg(ab, ATH12K_DBG_BOOT, "reset success\n");
                }
 
-               for (i = 0; i < ath12k_get_num_hw(ab); i++) {
+               for (i = 0; i < ag->num_hw; i++) {
                        ah = ath12k_ag_to_ah(ab->ag, i);
                        ieee80211_restart_hw(ah->hw);
                }
index 4932bd1c20965aab4ad17b683aa716ca1a160fb3..ee595794a7aee83a7695fb57d6b8e2e74eabf3aa 100644 (file)
@@ -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.
  */
 
 #ifndef ATH12K_CORE_H
@@ -1205,11 +1205,6 @@ static inline void ath12k_ag_set_ah(struct ath12k_hw_group *ag, int idx,
        ag->ah[idx] = ah;
 }
 
-static inline int ath12k_get_num_hw(struct ath12k_base *ab)
-{
-       return ab->ag->num_hw;
-}
-
 static inline struct ath12k_hw_group *ath12k_ab_to_ag(struct ath12k_base *ab)
 {
        return ab->ag;
index 285bb88acb900a265839f2bed71a2d8c0388701f..08f340afb9709304bd7a37d5a205b3c0a4e1bba2 100644 (file)
@@ -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 <net/mac80211.h>
@@ -11243,7 +11243,7 @@ int ath12k_mac_register(struct ath12k_hw_group *ag)
        int i;
        int ret;
 
-       for (i = 0; i < ath12k_get_num_hw(ab); i++) {
+       for (i = 0; i < ag->num_hw; i++) {
                ah = ath12k_ag_to_ah(ag, i);
 
                ret = ath12k_mac_hw_register(ah);
@@ -11275,7 +11275,7 @@ void ath12k_mac_unregister(struct ath12k_hw_group *ag)
 
        clear_bit(ATH12K_FLAG_REGISTERED, &ab->dev_flags);
 
-       for (i = ath12k_get_num_hw(ab) - 1; i >= 0; i--) {
+       for (i = ag->num_hw - 1; i >= 0; i--) {
                ah = ath12k_ag_to_ah(ag, i);
                if (!ah)
                        continue;
@@ -11356,7 +11356,7 @@ void ath12k_mac_destroy(struct ath12k_hw_group *ag)
                }
        }
 
-       for (i = 0; i < ath12k_get_num_hw(ab); i++) {
+       for (i = 0; i < ag->num_hw; i++) {
                ah = ath12k_ag_to_ah(ag, i);
                if (!ah)
                        continue;