qcacld-3.0: Move code from csr to rso for btm offload

Move code from csr to rso for btm offload.

Change-Id: I0de4e1efe7b4996ae3ca58d124aff0aadfca72a5
CRs-Fixed: 2857739
Esse commit está contido em:
hqu
2021-01-19 21:07:00 +08:00
commit de snandini
commit 7e457bd884
6 arquivos alterados com 152 adições e 119 exclusões

Ver arquivo

@@ -32,6 +32,7 @@
#include "pld_common.h"
#include "wlan_blm_api.h"
#include "wlan_scan_api.h"
#include "wlan_vdev_mgr_ucfg_api.h"
/**
* cm_roam_scan_bmiss_cnt() - set roam beacon miss count
@@ -2046,6 +2047,121 @@ cm_roam_scan_offload_fill_rso_configs(struct wlan_objmgr_psoc *psoc,
cm_roam_scan_offload_add_fils_params(psoc, rso_mode_cfg, vdev_id);
}
/**
* cm_update_btm_offload_config() - Update btm config param to fw
* @psoc: psoc
* @vdev: vdev
* @command: Roam offload command
* @btm_offload_config: btm offload config
*
* Return: None
*/
static void
cm_update_btm_offload_config(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev,
uint8_t command, uint32_t *btm_offload_config)
{
struct wlan_mlme_psoc_ext_obj *mlme_obj;
struct wlan_mlme_btm *btm_cfg;
struct wlan_objmgr_peer *peer;
uint8_t bssid[QDF_MAC_ADDR_SIZE];
struct cm_roam_values_copy temp;
bool is_hs_20_ap, is_pmf_enabled, is_open_connection = false;
int32_t cipher;
uint8_t vdev_id;
uint32_t mbo_oce_enabled_ap;
mlme_obj = mlme_get_psoc_ext_obj(psoc);
if (!mlme_obj)
return;
btm_cfg = &mlme_obj->cfg.btm;
*btm_offload_config = btm_cfg->btm_offload_config;
/* Return if INI is disabled */
if (!(*btm_offload_config))
return;
vdev_id = wlan_vdev_get_id(vdev);
wlan_cm_roam_cfg_get_value(psoc, vdev_id, HS_20_AP, &temp);
is_hs_20_ap = temp.bool_value;
/* For RSO Stop Disable BTM offload to firmware */
if (command == ROAM_SCAN_OFFLOAD_STOP || is_hs_20_ap) {
mlme_debug("RSO cmd: %d", command);
*btm_offload_config = 0;
return;
}
ucfg_wlan_vdev_mgr_get_param_bssid(vdev, bssid);
peer = wlan_objmgr_get_peer(psoc,
wlan_objmgr_pdev_get_pdev_id(
wlan_vdev_get_pdev(vdev)),
bssid,
WLAN_MLME_CM_ID);
if (!peer) {
mlme_debug("Peer of peer_mac "QDF_MAC_ADDR_FMT" not found",
QDF_MAC_ADDR_REF(bssid));
return;
}
is_pmf_enabled = mlme_get_peer_pmf_status(peer);
wlan_objmgr_peer_release_ref(peer, WLAN_MLME_CM_ID);
cipher = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_UCAST_CIPHER);
if (!cipher || QDF_HAS_PARAM(cipher, WLAN_CRYPTO_CIPHER_NONE))
is_open_connection = true;
wlan_cm_roam_cfg_get_value(psoc, vdev_id, MBO_OCE_ENABLED_AP, &temp);
mbo_oce_enabled_ap = temp.uint_value;
/*
* If peer does not support PMF in case of OCE/MBO
* Connection, Disable BTM offload to firmware.
*/
if (mbo_oce_enabled_ap && (!is_pmf_enabled && !is_open_connection))
*btm_offload_config = 0;
mlme_debug("is_open:%d is_pmf_enabled %d btm_offload_cfg:%d for "QDF_MAC_ADDR_FMT,
is_open_connection, is_pmf_enabled, *btm_offload_config,
QDF_MAC_ADDR_REF(bssid));
}
/**
* cm_roam_scan_btm_offload() - set roam scan btm offload parameters
* @psoc: psoc ctx
* @vdev: vdev
* @params: roam scan btm offload parameters
* @rso_cfg: rso config
*
* This function is used to set roam scan btm offload related parameters
*
* Return: None
*/
static void
cm_roam_scan_btm_offload(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev,
struct wlan_roam_btm_config *params,
struct rso_config *rso_cfg)
{
struct wlan_mlme_psoc_ext_obj *mlme_obj;
struct wlan_mlme_btm *btm_cfg;
mlme_obj = mlme_get_psoc_ext_obj(psoc);
if (!mlme_obj)
return;
btm_cfg = &mlme_obj->cfg.btm;
params->vdev_id = wlan_vdev_get_id(vdev);
cm_update_btm_offload_config(psoc, vdev, ROAM_SCAN_OFFLOAD_START,
&params->btm_offload_config);
params->btm_solicited_timeout = btm_cfg->btm_solicited_timeout;
params->btm_max_attempt_cnt = btm_cfg->btm_max_attempt_cnt;
params->btm_sticky_time = btm_cfg->btm_sticky_time;
params->disassoc_timer_threshold = btm_cfg->disassoc_timer_threshold;
params->btm_query_bitmask = btm_cfg->btm_query_bitmask;
params->btm_candidate_min_score = btm_cfg->btm_trig_min_candidate_score;
}
/**
* cm_roam_start_req() - roam start request handling
* @psoc: psoc pointer
@@ -2109,6 +2225,7 @@ cm_roam_start_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
&start_req->rso_chan_info,
ROAM_SCAN_OFFLOAD_START,
reason);
cm_roam_scan_btm_offload(psoc, vdev, &start_req->btm_config, rso_cfg);
/* fill from legacy through this API */
wlan_cm_roam_fill_start_req(psoc, vdev_id, start_req, reason);

Ver arquivo

@@ -200,6 +200,8 @@ struct wlan_chan_list {
* @mdid: mdid info
* @is_11r_assoc: is 11r assoc
* @is_adaptive_11r_connection: is adaptive 11r connection
* @hs_20_ap: Hotspot 2.0 AP
* @mbo_oce_enabled_ap: MBO/OCE enabled network
* @roam_scan_freq_lst: roam freq list
*/
struct rso_config {
@@ -225,6 +227,8 @@ struct rso_config {
struct mobility_domain_info mdid;
bool is_11r_assoc;
bool is_adaptive_11r_connection;
bool hs_20_ap;
uint32_t mbo_oce_enabled_ap;
struct rso_chan_info roam_scan_freq_lst;
};
@@ -321,6 +325,8 @@ struct rso_config_params {
* @MOBILITY_DOMAIN: mobility domain
* @IS_11R_CONNECTION: is 11r connection
* @ADAPTIVE_11R_CONNECTION: adaptive 11r
* @HS_20_AP: Hotspot 2.0 AP
* @MBO_OCE_ENABLED_AP: MBO/OCE enabled network
*/
enum roam_cfg_param {
RSSI_CHANGE_THRESHOLD,
@@ -345,6 +351,8 @@ enum roam_cfg_param {
MOBILITY_DOMAIN,
IS_11R_CONNECTION,
ADAPTIVE_11R_CONNECTION,
HS_20_AP,
MBO_OCE_ENABLED_AP,
};
/**

Ver arquivo

@@ -642,6 +642,12 @@ QDF_STATUS wlan_cm_roam_cfg_get_value(struct wlan_objmgr_psoc *psoc,
case ADAPTIVE_11R_CONNECTION:
dst_config->bool_value = rso_cfg->is_adaptive_11r_connection;
break;
case HS_20_AP:
dst_config->bool_value = rso_cfg->hs_20_ap;
break;
case MBO_OCE_ENABLED_AP:
dst_config->uint_value = rso_cfg->mbo_oce_enabled_ap;
break;
default:
mlme_err("Invalid roam config requested:%d", roam_cfg_type);
status = QDF_STATUS_E_FAILURE;
@@ -1003,6 +1009,12 @@ wlan_cm_roam_cfg_set_value(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
case ADAPTIVE_11R_CONNECTION:
rso_cfg->is_adaptive_11r_connection = src_config->bool_value;
break;
case HS_20_AP:
rso_cfg->hs_20_ap = src_config->bool_value;
break;
case MBO_OCE_ENABLED_AP:
rso_cfg->mbo_oce_enabled_ap = src_config->uint_value;
break;
default:
mlme_err("Invalid roam config requested:%d", roam_cfg_type);
status = QDF_STATUS_E_FAILURE;