]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
wifi: ath11k: refactor setting country code logic
authorBaochen Qiang <quic_bqiang@quicinc.com>
Tue, 21 May 2024 08:08:10 +0000 (11:08 +0300)
committerKalle Valo <quic_kvalo@quicinc.com>
Sat, 25 May 2024 08:55:31 +0000 (11:55 +0300)
ath11k_wmi_send_set_current_country_cmd() is called in several places
and all of them are just simply repeating the same logic.

Refactor to make code clean.

Compile tested only.

Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://msgid.link/20240520024148.5472-2-quic_bqiang@quicinc.com
drivers/net/wireless/ath/ath11k/core.c
drivers/net/wireless/ath/ath11k/mac.c
drivers/net/wireless/ath/ath11k/reg.c
drivers/net/wireless/ath/ath11k/reg.h

index d4ef556852c2c3bea21096f45290fb3ecbe679bf..748e3ad2bec379cb0f93536dc93d80b461f87dfa 100644 (file)
@@ -1978,23 +1978,20 @@ static void ath11k_update_11d(struct work_struct *work)
        struct ath11k_base *ab = container_of(work, struct ath11k_base, update_11d_work);
        struct ath11k *ar;
        struct ath11k_pdev *pdev;
-       struct wmi_set_current_country_params set_current_param = {};
        int ret, i;
 
-       spin_lock_bh(&ab->base_lock);
-       memcpy(&set_current_param.alpha2, &ab->new_alpha2, 2);
-       spin_unlock_bh(&ab->base_lock);
-
-       ath11k_dbg(ab, ATH11K_DBG_WMI, "update 11d new cc %c%c\n",
-                  set_current_param.alpha2[0],
-                  set_current_param.alpha2[1]);
-
        for (i = 0; i < ab->num_radios; i++) {
                pdev = &ab->pdevs[i];
                ar = pdev->ar;
 
-               memcpy(&ar->alpha2, &set_current_param.alpha2, 2);
-               ret = ath11k_wmi_send_set_current_country_cmd(ar, &set_current_param);
+               spin_lock_bh(&ab->base_lock);
+               memcpy(&ar->alpha2, &ab->new_alpha2, 2);
+               spin_unlock_bh(&ab->base_lock);
+
+               ath11k_dbg(ab, ATH11K_DBG_WMI, "update 11d new cc %c%c for pdev %d\n",
+                          ar->alpha2[0], ar->alpha2[1], i);
+
+               ret = ath11k_reg_set_cc(ar);
                if (ret)
                        ath11k_warn(ar->ab,
                                    "pdev id %d failed set current country code: %d\n",
index 17b06c0cd06282ca3e0a518e0fcd21b17178e052..84415187416d22be7721e956087fecc0fa8cfcf7 100644 (file)
@@ -8864,12 +8864,8 @@ ath11k_mac_op_reconfig_complete(struct ieee80211_hw *hw,
                ieee80211_wake_queues(ar->hw);
 
                if (ar->ab->hw_params.current_cc_support &&
-                   ar->alpha2[0] != 0 && ar->alpha2[1] != 0) {
-                       struct wmi_set_current_country_params set_current_param = {};
-
-                       memcpy(&set_current_param.alpha2, ar->alpha2, 2);
-                       ath11k_wmi_send_set_current_country_cmd(ar, &set_current_param);
-               }
+                   ar->alpha2[0] != 0 && ar->alpha2[1] != 0)
+                       ath11k_reg_set_cc(ar);
 
                if (ab->is_reset) {
                        recovery_count = atomic_inc_return(&ab->recovery_count);
@@ -10311,11 +10307,8 @@ static int __ath11k_mac_register(struct ath11k *ar)
        }
 
        if (ab->hw_params.current_cc_support && ab->new_alpha2[0]) {
-               struct wmi_set_current_country_params set_current_param = {};
-
-               memcpy(&set_current_param.alpha2, ab->new_alpha2, 2);
                memcpy(&ar->alpha2, ab->new_alpha2, 2);
-               ret = ath11k_wmi_send_set_current_country_cmd(ar, &set_current_param);
+               ret = ath11k_reg_set_cc(ar);
                if (ret)
                        ath11k_warn(ar->ab,
                                    "failed set cc code for mac register: %d\n", ret);
index 4c3aefbbabbe77ac998843952e1a89a4ff0f15d4..b0f289784dd3a2e1798c81b37a22d4fb0e69f183 100644 (file)
@@ -49,7 +49,6 @@ ath11k_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request)
 {
        struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy);
        struct wmi_init_country_params init_country_param;
-       struct wmi_set_current_country_params set_current_param = {};
        struct ath11k *ar = hw->priv;
        int ret;
 
@@ -83,9 +82,8 @@ ath11k_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request)
         * reg info
         */
        if (ar->ab->hw_params.current_cc_support) {
-               memcpy(&set_current_param.alpha2, request->alpha2, 2);
-               memcpy(&ar->alpha2, &set_current_param.alpha2, 2);
-               ret = ath11k_wmi_send_set_current_country_cmd(ar, &set_current_param);
+               memcpy(&ar->alpha2, request->alpha2, 2);
+               ret = ath11k_reg_set_cc(ar);
                if (ret)
                        ath11k_warn(ar->ab,
                                    "failed set current country code: %d\n", ret);
@@ -1017,3 +1015,11 @@ void ath11k_reg_free(struct ath11k_base *ab)
                kfree(ab->new_regd[i]);
        }
 }
+
+int ath11k_reg_set_cc(struct ath11k *ar)
+{
+       struct wmi_set_current_country_params set_current_param = {};
+
+       memcpy(&set_current_param.alpha2, ar->alpha2, 2);
+       return ath11k_wmi_send_set_current_country_cmd(ar, &set_current_param);
+}
index 64edb794260abcbe2d92eb4098d3b17712554ebe..263ea90619483ec8e1c235dd7ae7b2b1f537d706 100644 (file)
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause-Clear */
 /*
  * Copyright (c) 2019 The Linux Foundation. All rights reserved.
- * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
  */
 
 #ifndef ATH11K_REG_H
@@ -45,5 +45,5 @@ ath11k_reg_ap_pwr_convert(enum ieee80211_ap_reg_power power_type);
 int ath11k_reg_handle_chan_list(struct ath11k_base *ab,
                                struct cur_regulatory_info *reg_info,
                                enum ieee80211_ap_reg_power power_type);
-
+int ath11k_reg_set_cc(struct ath11k *ar);
 #endif