wcn36xx: Move BSS parameter setup to wcn36xx_smd_set_bss_params()
authorBryan O'Donoghue <bryan.odonoghue@linaro.org>
Thu, 10 Sep 2020 15:06:27 +0000 (16:06 +0100)
committerKalle Valo <kvalo@codeaurora.org>
Mon, 21 Sep 2020 13:17:03 +0000 (16:17 +0300)
This commit moves BSS parameter setup to a separate function
wcn36xx_smd_set_bss_params(). This will allow for further functional
decomposition and fewer kzalloc() operations in subsequent patches.

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-4-bryan.odonoghue@linaro.org
drivers/net/wireless/ath/wcn36xx/smd.c

index fa4357b36a8eca556aa023d1b5f92df721ae3f2a..4be9def9509c709bc900b8e6cdaa66b171e06547 100644 (file)
@@ -1402,6 +1402,100 @@ out:
        return ret;
 }
 
+void wcn36xx_smd_set_bss_params(struct wcn36xx *wcn,
+                               struct ieee80211_vif *vif,
+                               struct ieee80211_sta *sta,
+                               const u8 *bssid,
+                               bool update,
+                               struct wcn36xx_hal_config_bss_params *bss);
+void wcn36xx_smd_set_bss_params(struct wcn36xx *wcn,
+                               struct ieee80211_vif *vif,
+                               struct ieee80211_sta *sta,
+                               const u8 *bssid,
+                               bool update,
+                               struct wcn36xx_hal_config_bss_params *bss)
+{
+       struct wcn36xx_vif *vif_priv = wcn36xx_vif_to_priv(vif);
+
+       WARN_ON(is_zero_ether_addr(bssid));
+
+       memcpy(&bss->bssid, bssid, ETH_ALEN);
+
+       memcpy(bss->self_mac_addr, vif->addr, ETH_ALEN);
+
+       if (vif->type == NL80211_IFTYPE_STATION) {
+               bss->bss_type = WCN36XX_HAL_INFRASTRUCTURE_MODE;
+
+               /* STA */
+               bss->oper_mode = 1;
+               bss->wcn36xx_hal_persona = WCN36XX_HAL_STA_MODE;
+       } else if (vif->type == NL80211_IFTYPE_AP ||
+                  vif->type == NL80211_IFTYPE_MESH_POINT) {
+               bss->bss_type = WCN36XX_HAL_INFRA_AP_MODE;
+
+               /* AP */
+               bss->oper_mode = 0;
+               bss->wcn36xx_hal_persona = WCN36XX_HAL_STA_SAP_MODE;
+       } else if (vif->type == NL80211_IFTYPE_ADHOC) {
+               bss->bss_type = WCN36XX_HAL_IBSS_MODE;
+
+               /* STA */
+               bss->oper_mode = 1;
+       } else {
+               wcn36xx_warn("Unknown type for bss config: %d\n", vif->type);
+       }
+
+       if (vif->type == NL80211_IFTYPE_STATION)
+               wcn36xx_smd_set_bss_nw_type(wcn, sta, bss);
+       else
+               bss->nw_type = WCN36XX_HAL_11N_NW_TYPE;
+
+       bss->short_slot_time_supported = vif->bss_conf.use_short_slot;
+       bss->lla_coexist = 0;
+       bss->llb_coexist = 0;
+       bss->llg_coexist = 0;
+       bss->rifs_mode = 0;
+       bss->beacon_interval = vif->bss_conf.beacon_int;
+       bss->dtim_period = vif_priv->dtim_period;
+
+       wcn36xx_smd_set_bss_ht_params(vif, sta, bss);
+
+       bss->oper_channel = WCN36XX_HW_CHANNEL(wcn);
+
+       if (conf_is_ht40_minus(&wcn->hw->conf))
+               bss->ext_channel = IEEE80211_HT_PARAM_CHA_SEC_BELOW;
+       else if (conf_is_ht40_plus(&wcn->hw->conf))
+               bss->ext_channel = IEEE80211_HT_PARAM_CHA_SEC_ABOVE;
+       else
+               bss->ext_channel = IEEE80211_HT_PARAM_CHA_SEC_NONE;
+
+       bss->reserved = 0;
+
+       /* wcn->ssid is only valid in AP and IBSS mode */
+       bss->ssid.length = vif_priv->ssid.length;
+       memcpy(bss->ssid.ssid, vif_priv->ssid.ssid, vif_priv->ssid.length);
+
+       bss->obss_prot_enabled = 0;
+       bss->rmf = 0;
+       bss->max_probe_resp_retry_limit = 0;
+       bss->hidden_ssid = vif->bss_conf.hidden_ssid;
+       bss->proxy_probe_resp = 0;
+       bss->edca_params_valid = 0;
+
+       /* FIXME: set acbe, acbk, acvi and acvo */
+
+       bss->ext_set_sta_key_param_valid = 0;
+
+       /* FIXME: set ext_set_sta_key_param */
+
+       bss->spectrum_mgt_enable = 0;
+       bss->tx_mgmt_power = 0;
+       bss->max_tx_power = WCN36XX_MAX_POWER(wcn);
+       bss->action = update;
+
+       vif_priv->bss_type = bss->bss_type;
+}
+
 static int wcn36xx_smd_config_bss_v1(struct wcn36xx *wcn,
                        const struct wcn36xx_hal_config_bss_req_msg *orig)
 {
@@ -1505,7 +1599,6 @@ static int wcn36xx_smd_config_bss_v1(struct wcn36xx *wcn,
        return ret;
 }
 
-
 static int wcn36xx_smd_config_bss_rsp(struct wcn36xx *wcn,
                                      struct ieee80211_vif *vif,
                                      struct ieee80211_sta *sta,
@@ -1557,7 +1650,6 @@ int wcn36xx_smd_config_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif,
        struct wcn36xx_hal_config_bss_req_msg *msg;
        struct wcn36xx_hal_config_bss_params *bss;
        struct wcn36xx_hal_config_sta_params *sta_params;
-       struct wcn36xx_vif *vif_priv = wcn36xx_vif_to_priv(vif);
        int ret;
 
        mutex_lock(&wcn->hal_mutex);
@@ -1571,84 +1663,7 @@ int wcn36xx_smd_config_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif,
        bss = &msg->bss_params;
        sta_params = &bss->sta;
 
-       WARN_ON(is_zero_ether_addr(bssid));
-
-       memcpy(&bss->bssid, bssid, ETH_ALEN);
-
-       memcpy(bss->self_mac_addr, vif->addr, ETH_ALEN);
-
-       if (vif->type == NL80211_IFTYPE_STATION) {
-               bss->bss_type = WCN36XX_HAL_INFRASTRUCTURE_MODE;
-
-               /* STA */
-               bss->oper_mode = 1;
-               bss->wcn36xx_hal_persona = WCN36XX_HAL_STA_MODE;
-       } else if (vif->type == NL80211_IFTYPE_AP ||
-                  vif->type == NL80211_IFTYPE_MESH_POINT) {
-               bss->bss_type = WCN36XX_HAL_INFRA_AP_MODE;
-
-               /* AP */
-               bss->oper_mode = 0;
-               bss->wcn36xx_hal_persona = WCN36XX_HAL_STA_SAP_MODE;
-       } else if (vif->type == NL80211_IFTYPE_ADHOC) {
-               bss->bss_type = WCN36XX_HAL_IBSS_MODE;
-
-               /* STA */
-               bss->oper_mode = 1;
-       } else {
-               wcn36xx_warn("Unknown type for bss config: %d\n", vif->type);
-       }
-
-       if (vif->type == NL80211_IFTYPE_STATION)
-               wcn36xx_smd_set_bss_nw_type(wcn, sta, bss);
-       else
-               bss->nw_type = WCN36XX_HAL_11N_NW_TYPE;
-
-       bss->short_slot_time_supported = vif->bss_conf.use_short_slot;
-       bss->lla_coexist = 0;
-       bss->llb_coexist = 0;
-       bss->llg_coexist = 0;
-       bss->rifs_mode = 0;
-       bss->beacon_interval = vif->bss_conf.beacon_int;
-       bss->dtim_period = vif_priv->dtim_period;
-
-       wcn36xx_smd_set_bss_ht_params(vif, sta, bss);
-
-       bss->oper_channel = WCN36XX_HW_CHANNEL(wcn);
-
-       if (conf_is_ht40_minus(&wcn->hw->conf))
-               bss->ext_channel = IEEE80211_HT_PARAM_CHA_SEC_BELOW;
-       else if (conf_is_ht40_plus(&wcn->hw->conf))
-               bss->ext_channel = IEEE80211_HT_PARAM_CHA_SEC_ABOVE;
-       else
-               bss->ext_channel = IEEE80211_HT_PARAM_CHA_SEC_NONE;
-
-       bss->reserved = 0;
-
-       /* wcn->ssid is only valid in AP and IBSS mode */
-       bss->ssid.length = vif_priv->ssid.length;
-       memcpy(bss->ssid.ssid, vif_priv->ssid.ssid, vif_priv->ssid.length);
-
-       bss->obss_prot_enabled = 0;
-       bss->rmf = 0;
-       bss->max_probe_resp_retry_limit = 0;
-       bss->hidden_ssid = vif->bss_conf.hidden_ssid;
-       bss->proxy_probe_resp = 0;
-       bss->edca_params_valid = 0;
-
-       /* FIXME: set acbe, acbk, acvi and acvo */
-
-       bss->ext_set_sta_key_param_valid = 0;
-
-       /* FIXME: set ext_set_sta_key_param */
-
-       bss->spectrum_mgt_enable = 0;
-       bss->tx_mgmt_power = 0;
-       bss->max_tx_power = WCN36XX_MAX_POWER(wcn);
-       bss->action = update;
-
-       vif_priv->bss_type = bss->bss_type;
-
+       wcn36xx_smd_set_bss_params(wcn, vif, sta, bssid, update, bss);
        wcn36xx_smd_set_sta_params(wcn, vif, sta, sta_params);
 
        wcn36xx_dbg(WCN36XX_DBG_HAL,