wcn36xx: Functionally decompose wcn36xx_smd_config_sta()
authorBryan O'Donoghue <bryan.odonoghue@linaro.org>
Thu, 10 Sep 2020 15:06:25 +0000 (16:06 +0100)
committerKalle Valo <kvalo@codeaurora.org>
Mon, 21 Sep 2020 13:16:58 +0000 (16:16 +0300)
This commit functionally decomposes wcn36xx_smd_config_sta into a clearly
defined wcn36xx_smd_config_sta_v0 and wcn36xx_smd_config_sta_v1 path.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Loic Poulain <loic.poulain@linaro.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200910150631.2178970-2-bryan.odonoghue@linaro.org
drivers/net/wireless/ath/wcn36xx/smd.c

index 71ecf3ef5ab2130f9a4a9da784613696ffe9a64f..475d4f60185cff2dc8cae19e4751c261817b1f47 100644 (file)
@@ -1326,54 +1326,65 @@ static int wcn36xx_smd_config_sta_rsp(struct wcn36xx *wcn,
 }
 
 static int wcn36xx_smd_config_sta_v1(struct wcn36xx *wcn,
-                    const struct wcn36xx_hal_config_sta_req_msg *orig)
+                                    struct ieee80211_vif *vif,
+                                    struct ieee80211_sta *sta)
 {
        struct wcn36xx_hal_config_sta_req_msg_v1 msg_body;
-       struct wcn36xx_hal_config_sta_params_v1 *sta = &msg_body.sta_params;
+       struct wcn36xx_hal_config_sta_params_v1 *sta_params;
 
        INIT_HAL_MSG(msg_body, WCN36XX_HAL_CONFIG_STA_REQ);
        msg_body.header.len -= WCN36XX_DIFF_STA_PARAMS_V1_NOVHT;
 
-       wcn36xx_smd_convert_sta_to_v1(wcn, &orig->sta_params,
-                                     &msg_body.sta_params);
+       sta_params = &msg_body.sta_params;
+
+       wcn36xx_smd_set_sta_params_v1(wcn, vif, sta, sta_params);
 
        PREPARE_HAL_BUF(wcn->hal_buf, msg_body);
 
        wcn36xx_dbg(WCN36XX_DBG_HAL,
                    "hal config sta v1 action %d sta_index %d bssid_index %d bssid %pM type %d mac %pM aid %d\n",
-                   sta->action, sta->sta_index, sta->bssid_index,
-                   sta->bssid, sta->type, sta->mac, sta->aid);
+                   sta_params->action, sta_params->sta_index, sta_params->bssid_index,
+                   sta_params->bssid, sta_params->type, sta_params->mac, sta_params->aid);
 
        return wcn36xx_smd_send_and_wait(wcn, msg_body.header.len);
 }
 
-int wcn36xx_smd_config_sta(struct wcn36xx *wcn, struct ieee80211_vif *vif,
-                          struct ieee80211_sta *sta)
+static int wcn36xx_smd_config_sta_v0(struct wcn36xx *wcn,
+                                    struct ieee80211_vif *vif,
+                                    struct ieee80211_sta *sta)
 {
        struct wcn36xx_hal_config_sta_req_msg msg;
        struct wcn36xx_hal_config_sta_params *sta_params;
-       int ret;
 
-       mutex_lock(&wcn->hal_mutex);
        INIT_HAL_MSG(msg, WCN36XX_HAL_CONFIG_STA_REQ);
 
        sta_params = &msg.sta_params;
 
        wcn36xx_smd_set_sta_params(wcn, vif, sta, sta_params);
 
-       if (!wcn36xx_is_fw_version(wcn, 1, 2, 2, 24)) {
-               ret = wcn36xx_smd_config_sta_v1(wcn, &msg);
-       } else {
-               PREPARE_HAL_BUF(wcn->hal_buf, msg);
+       PREPARE_HAL_BUF(wcn->hal_buf, msg);
 
-               wcn36xx_dbg(WCN36XX_DBG_HAL,
-                           "hal config sta action %d sta_index %d bssid_index %d bssid %pM type %d mac %pM aid %d\n",
-                           sta_params->action, sta_params->sta_index,
-                           sta_params->bssid_index, sta_params->bssid,
-                           sta_params->type, sta_params->mac, sta_params->aid);
+       wcn36xx_dbg(WCN36XX_DBG_HAL,
+                   "hal config sta action %d sta_index %d bssid_index %d bssid %pM type %d mac %pM aid %d\n",
+                   sta_params->action, sta_params->sta_index,
+                   sta_params->bssid_index, sta_params->bssid,
+                   sta_params->type, sta_params->mac, sta_params->aid);
+
+       return wcn36xx_smd_send_and_wait(wcn, msg.header.len);
+}
+
+int wcn36xx_smd_config_sta(struct wcn36xx *wcn, struct ieee80211_vif *vif,
+                          struct ieee80211_sta *sta)
+{
+       int ret;
+
+       mutex_lock(&wcn->hal_mutex);
+
+       if (!wcn36xx_is_fw_version(wcn, 1, 2, 2, 24))
+               ret = wcn36xx_smd_config_sta_v1(wcn, vif, sta);
+       else
+               ret = wcn36xx_smd_config_sta_v0(wcn, vif, sta);
 
-               ret = wcn36xx_smd_send_and_wait(wcn, msg.header.len);
-       }
        if (ret) {
                wcn36xx_err("Sending hal_config_sta failed\n");
                goto out;