wcn36xx: Functionally decompose wcn36xx_smd_config_sta()
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
This commit is contained in:
parent
c05a8bd80c
commit
fe784c28fe
|
@ -1326,54 +1326,65 @@ static int wcn36xx_smd_config_sta_rsp(struct wcn36xx *wcn,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int wcn36xx_smd_config_sta_v1(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_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);
|
INIT_HAL_MSG(msg_body, WCN36XX_HAL_CONFIG_STA_REQ);
|
||||||
msg_body.header.len -= WCN36XX_DIFF_STA_PARAMS_V1_NOVHT;
|
msg_body.header.len -= WCN36XX_DIFF_STA_PARAMS_V1_NOVHT;
|
||||||
|
|
||||||
wcn36xx_smd_convert_sta_to_v1(wcn, &orig->sta_params,
|
sta_params = &msg_body.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);
|
PREPARE_HAL_BUF(wcn->hal_buf, msg_body);
|
||||||
|
|
||||||
wcn36xx_dbg(WCN36XX_DBG_HAL,
|
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",
|
"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_params->action, sta_params->sta_index, sta_params->bssid_index,
|
||||||
sta->bssid, sta->type, sta->mac, sta->aid);
|
sta_params->bssid, sta_params->type, sta_params->mac, sta_params->aid);
|
||||||
|
|
||||||
return wcn36xx_smd_send_and_wait(wcn, msg_body.header.len);
|
return wcn36xx_smd_send_and_wait(wcn, msg_body.header.len);
|
||||||
}
|
}
|
||||||
|
|
||||||
int wcn36xx_smd_config_sta(struct wcn36xx *wcn, struct ieee80211_vif *vif,
|
static int wcn36xx_smd_config_sta_v0(struct wcn36xx *wcn,
|
||||||
struct ieee80211_sta *sta)
|
struct ieee80211_vif *vif,
|
||||||
|
struct ieee80211_sta *sta)
|
||||||
{
|
{
|
||||||
struct wcn36xx_hal_config_sta_req_msg msg;
|
struct wcn36xx_hal_config_sta_req_msg msg;
|
||||||
struct wcn36xx_hal_config_sta_params *sta_params;
|
struct wcn36xx_hal_config_sta_params *sta_params;
|
||||||
int ret;
|
|
||||||
|
|
||||||
mutex_lock(&wcn->hal_mutex);
|
|
||||||
INIT_HAL_MSG(msg, WCN36XX_HAL_CONFIG_STA_REQ);
|
INIT_HAL_MSG(msg, WCN36XX_HAL_CONFIG_STA_REQ);
|
||||||
|
|
||||||
sta_params = &msg.sta_params;
|
sta_params = &msg.sta_params;
|
||||||
|
|
||||||
wcn36xx_smd_set_sta_params(wcn, vif, sta, sta_params);
|
wcn36xx_smd_set_sta_params(wcn, vif, sta, sta_params);
|
||||||
|
|
||||||
if (!wcn36xx_is_fw_version(wcn, 1, 2, 2, 24)) {
|
PREPARE_HAL_BUF(wcn->hal_buf, msg);
|
||||||
ret = wcn36xx_smd_config_sta_v1(wcn, &msg);
|
|
||||||
} else {
|
|
||||||
PREPARE_HAL_BUF(wcn->hal_buf, msg);
|
|
||||||
|
|
||||||
wcn36xx_dbg(WCN36XX_DBG_HAL,
|
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",
|
"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->action, sta_params->sta_index,
|
||||||
sta_params->bssid_index, sta_params->bssid,
|
sta_params->bssid_index, sta_params->bssid,
|
||||||
sta_params->type, sta_params->mac, sta_params->aid);
|
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) {
|
if (ret) {
|
||||||
wcn36xx_err("Sending hal_config_sta failed\n");
|
wcn36xx_err("Sending hal_config_sta failed\n");
|
||||||
goto out;
|
goto out;
|
||||||
|
|
Loading…
Reference in New Issue