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

Move code from csr to rso for 11k offload.

Change-Id: I8930ca381a8af45e39d3ed69cb1614ccc363f766
CRs-Fixed: 2861183
Цей коміт міститься в:
hqu
2021-01-22 21:47:22 +08:00
зафіксовано snandini
джерело 5fe53b2b73
коміт 46d7e82b98
16 змінених файлів з 351 додано та 588 видалено

Переглянути файл

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -156,6 +156,49 @@ fwol_init_thermal_temp_in_cfg(struct wlan_objmgr_psoc *psoc,
}
/**
* fwol_set_neighbor_report_offload_params: set neighbor report parameters
* for rso user config
* @psoc: The global psoc handler
* @fwol_neighbor_report_cfg: neighbor report config params
*
* Return: none
*/
static void
fwol_set_neighbor_report_offload_params(
struct wlan_objmgr_psoc *psoc,
struct wlan_fwol_neighbor_report_cfg *fwol_neighbor_report_cfg)
{
struct cm_roam_neighbor_report_offload_params *neighbor_report_offload;
struct wlan_mlme_psoc_ext_obj *mlme_obj;
mlme_obj = mlme_get_psoc_ext_obj(psoc);
if (!mlme_obj) {
fwol_err("Failed to get MLME Obj");
return;
}
neighbor_report_offload = &mlme_obj->cfg.lfr.rso_user_config
.neighbor_report_offload;
neighbor_report_offload->offload_11k_enable_bitmask =
fwol_neighbor_report_cfg->enable_bitmask;
neighbor_report_offload->params_bitmask =
fwol_neighbor_report_cfg->params_bitmask;
neighbor_report_offload->time_offset =
fwol_neighbor_report_cfg->time_offset;
neighbor_report_offload->low_rssi_offset =
fwol_neighbor_report_cfg->low_rssi_offset;
neighbor_report_offload->bmiss_count_trigger =
fwol_neighbor_report_cfg->bmiss_count_trigger;
neighbor_report_offload->per_threshold_offset =
fwol_neighbor_report_cfg->per_threshold_offset;
neighbor_report_offload->neighbor_report_cache_timeout =
fwol_neighbor_report_cfg->cache_timeout;
neighbor_report_offload->max_neighbor_report_req_cap =
fwol_neighbor_report_cfg->max_req_cap;
}
QDF_STATUS fwol_init_neighbor_report_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_fwol_neighbor_report_cfg
*fwol_neighbor_report_cfg)
@@ -182,6 +225,8 @@ QDF_STATUS fwol_init_neighbor_report_cfg(struct wlan_objmgr_psoc *psoc,
fwol_neighbor_report_cfg->max_req_cap =
cfg_get(psoc, CFG_OFFLOAD_NEIGHBOR_REPORT_MAX_REQ_CAP);
fwol_set_neighbor_report_offload_params(psoc, fwol_neighbor_report_cfg);
return QDF_STATUS_SUCCESS;
}

Переглянути файл

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -165,18 +165,6 @@ QDF_STATUS
ucfg_fwol_get_thermal_temp(struct wlan_objmgr_psoc *psoc,
struct wlan_fwol_thermal_temp *thermal_temp);
/**
* ucfg_fwol_get_neighbor_report_cfg() - Get neighbor report config params
* @psoc: Pointer to psoc object
* @fwol_neighbor_report_cfg: Pointer to return neighbor report config
*
* Return: QDF Status
*/
QDF_STATUS
ucfg_fwol_get_neighbor_report_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_fwol_neighbor_report_cfg
*fwol_neighbor_report_cfg);
/**
* ucfg_fwol_get_neighbor_report_req() - Get neighbor report request bit
* @psoc: Pointer to psoc object
@@ -759,14 +747,6 @@ ucfg_fwol_get_thermal_temp(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_E_FAILURE;
}
static inline QDF_STATUS
ucfg_fwol_get_neighbor_report_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_fwol_neighbor_report_cfg
*fwol_neighbor_report_cfg)
{
return QDF_STATUS_E_FAILURE;
}
static inline QDF_STATUS
ucfg_fwol_is_neighbor_report_req_supported(struct wlan_objmgr_psoc *psoc,
bool *neighbor_report_req)

Переглянути файл

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -251,29 +251,6 @@ ucfg_fwol_get_thermal_temp(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
ucfg_fwol_get_neighbor_report_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_fwol_neighbor_report_cfg
*fwol_neighbor_report_cfg)
{
struct wlan_fwol_psoc_obj *fwol_obj;
QDF_STATUS status = QDF_STATUS_SUCCESS;
if (!fwol_neighbor_report_cfg)
return QDF_STATUS_E_FAILURE;
fwol_obj = fwol_get_psoc_obj(psoc);
if (!fwol_obj) {
fwol_err("Failed to get fwol obj");
fwol_init_neighbor_report_cfg(psoc, fwol_neighbor_report_cfg);
status = QDF_STATUS_E_FAILURE;
} else {
*fwol_neighbor_report_cfg = fwol_obj->cfg.neighbor_report_cfg;
}
return status;
}
QDF_STATUS
ucfg_fwol_is_neighbor_report_req_supported(struct wlan_objmgr_psoc *psoc,
bool *neighbor_report_req)

Переглянути файл

@@ -2177,6 +2177,107 @@ cm_roam_scan_btm_offload(struct wlan_objmgr_psoc *psoc,
params->btm_candidate_min_score = btm_cfg->btm_trig_min_candidate_score;
}
/**
* cm_roam_offload_11k_params() - set roam 11k offload parameters
* @psoc: psoc ctx
* @vdev: vdev
* @params: roam 11k offload parameters
* @enabled: 11k offload enabled/disabled
*
* This function is used to set roam 11k offload related parameters
*
* Return: None
*/
static void
cm_roam_offload_11k_params(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev,
struct wlan_roam_11k_offload_params *params,
bool enabled)
{
struct cm_roam_neighbor_report_offload_params *neighbor_report_offload;
struct wlan_mlme_psoc_ext_obj *mlme_obj;
mlme_obj = mlme_get_psoc_ext_obj(psoc);
if (!mlme_obj)
return;
neighbor_report_offload =
&mlme_obj->cfg.lfr.rso_user_config.neighbor_report_offload;
params->vdev_id = wlan_vdev_get_id(vdev);
if (enabled) {
params->offload_11k_bitmask =
neighbor_report_offload->offload_11k_enable_bitmask;
} else {
params->offload_11k_bitmask = 0;
return;
}
/*
* If none of the parameters are enabled, then set the
* offload_11k_bitmask to 0, so that we don't send the command
* to the FW and drop it in WMA
*/
if ((neighbor_report_offload->params_bitmask &
NEIGHBOR_REPORT_PARAMS_ALL) == 0) {
mlme_err("No valid neighbor report offload params %x",
neighbor_report_offload->params_bitmask);
params->offload_11k_bitmask = 0;
return;
}
/*
* First initialize all params to NEIGHBOR_REPORT_PARAM_INVALID
* Then set the values that are enabled
*/
params->neighbor_report_params.time_offset =
NEIGHBOR_REPORT_PARAM_INVALID;
params->neighbor_report_params.low_rssi_offset =
NEIGHBOR_REPORT_PARAM_INVALID;
params->neighbor_report_params.bmiss_count_trigger =
NEIGHBOR_REPORT_PARAM_INVALID;
params->neighbor_report_params.per_threshold_offset =
NEIGHBOR_REPORT_PARAM_INVALID;
params->neighbor_report_params.neighbor_report_cache_timeout =
NEIGHBOR_REPORT_PARAM_INVALID;
params->neighbor_report_params.max_neighbor_report_req_cap =
NEIGHBOR_REPORT_PARAM_INVALID;
if (neighbor_report_offload->params_bitmask &
NEIGHBOR_REPORT_PARAMS_TIME_OFFSET)
params->neighbor_report_params.time_offset =
neighbor_report_offload->time_offset;
if (neighbor_report_offload->params_bitmask &
NEIGHBOR_REPORT_PARAMS_LOW_RSSI_OFFSET)
params->neighbor_report_params.low_rssi_offset =
neighbor_report_offload->low_rssi_offset;
if (neighbor_report_offload->params_bitmask &
NEIGHBOR_REPORT_PARAMS_BMISS_COUNT_TRIGGER)
params->neighbor_report_params.bmiss_count_trigger =
neighbor_report_offload->bmiss_count_trigger;
if (neighbor_report_offload->params_bitmask &
NEIGHBOR_REPORT_PARAMS_PER_THRESHOLD_OFFSET)
params->neighbor_report_params.per_threshold_offset =
neighbor_report_offload->per_threshold_offset;
if (neighbor_report_offload->params_bitmask &
NEIGHBOR_REPORT_PARAMS_CACHE_TIMEOUT)
params->neighbor_report_params.neighbor_report_cache_timeout =
neighbor_report_offload->neighbor_report_cache_timeout;
if (neighbor_report_offload->params_bitmask &
NEIGHBOR_REPORT_PARAMS_MAX_REQ_CAP)
params->neighbor_report_params.max_neighbor_report_req_cap =
neighbor_report_offload->max_neighbor_report_req_cap;
wlan_vdev_mlme_get_ssid(vdev, params->neighbor_report_params.ssid.ssid,
&params->neighbor_report_params.ssid.length);
}
/**
* cm_roam_start_req() - roam start request handling
* @psoc: psoc pointer
@@ -2241,9 +2342,8 @@ cm_roam_start_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
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);
cm_roam_offload_11k_params(psoc, vdev, &start_req->roam_11k_params,
true);
status = wlan_cm_tgt_send_roam_start_req(psoc, vdev_id, start_req);
if (QDF_IS_STATUS_ERROR(status))

Переглянути файл

@@ -44,6 +44,51 @@ QDF_STATUS
wlan_cm_enable_roaming_on_connected_sta(struct wlan_objmgr_pdev *pdev,
uint8_t vdev_id);
/**
* wlan_cm_roam_send_rso_cmd() - send rso command
* @psoc: psoc pointer
* @vdev_id: vdev id
* @rso_command: roam command to send
* @reason: reason for changing roam state for the requested vdev id
*
* similar to csr_roam_offload_scan, will be used from many legacy
* process directly, generate a new function wlan_cm_roam_send_rso_cmd
* for external usage.
*
* Return: QDF_STATUS
*/
QDF_STATUS wlan_cm_roam_send_rso_cmd(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id, uint8_t rso_command,
uint8_t reason);
/**
* wlan_cm_roam_state_change() - Post roam state change to roam state machine
* @pdev: pdev pointer
* @vdev_id: vdev id
* @requested_state: roam state to be set
* @reason: reason for changing roam state for the requested vdev id
*
* This function posts roam state change to roam state machine handling
*
* Return: QDF_STATUS
*/
QDF_STATUS wlan_cm_roam_state_change(struct wlan_objmgr_pdev *pdev,
uint8_t vdev_id,
enum roam_offload_state requested_state,
uint8_t reason);
/**
* csr_roam_update_cfg() - Process RSO update cfg request
* @psoc: psoc context
* @vdev_id: vdev id
* @reason: reason for requesting RSO update cfg
*
* Return: QDF_STATUS
*/
QDF_STATUS
wlan_roam_update_cfg(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
uint8_t reason);
#ifndef FEATURE_CM_ENABLE
/**
* wlan_cm_roam_cmd_allowed() - check roam cmd is allowed or not
@@ -61,21 +106,6 @@ wlan_cm_roam_cmd_allowed(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
uint8_t rso_command, uint8_t reason);
#endif
/**
* wlan_cm_roam_fill_start_req() - fill start request structure content
* @psoc: pointer to psoc object
* @vdev_id: vdev id
* @req: roam start config pointer
* @reason: reason to roam
*
* This function gets called to fill start request structure content
*
* Return: QDF_STATUS
*/
QDF_STATUS
wlan_cm_roam_fill_start_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
struct wlan_roam_start_config *req, uint8_t reason);
/**
* wlan_cm_roam_scan_offload_rsp() - send roam scan offload response message
* @vdev_id: vdev id
@@ -118,6 +148,30 @@ wlan_cm_roam_neighbor_proceed_with_handoff_req(uint8_t vdev_id);
bool wlan_cm_is_sta_connected(uint8_t vdev_id);
#else
static inline
QDF_STATUS wlan_cm_roam_send_rso_cmd(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id, uint8_t rso_command,
uint8_t reason)
{
return QDF_STATUS_E_NOSUPPORT;
}
static inline QDF_STATUS
wlan_roam_update_cfg(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
uint8_t reason)
{
return QDF_STATUS_E_NOSUPPORT;
}
static inline
QDF_STATUS wlan_cm_roam_state_change(struct wlan_objmgr_pdev *pdev,
uint8_t vdev_id,
enum roam_offload_state requested_state,
uint8_t reason)
{
return QDF_STATUS_E_NOSUPPORT;
}
static inline QDF_STATUS
wlan_cm_enable_roaming_on_connected_sta(struct wlan_objmgr_pdev *pdev,
uint8_t vdev_id)
@@ -230,39 +284,6 @@ QDF_STATUS wlan_cm_abort_rso(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id);
bool
wlan_cm_roaming_in_progress(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id);
/**
* wlan_cm_roam_state_change() - Post roam state change to roam state machine
* @pdev: pdev pointer
* @vdev_id: vdev id
* @requested_state: roam state to be set
* @reason: reason for changing roam state for the requested vdev id
*
* This function posts roam state change to roam state machine handling
*
* Return: QDF_STATUS
*/
QDF_STATUS wlan_cm_roam_state_change(struct wlan_objmgr_pdev *pdev,
uint8_t vdev_id,
enum roam_offload_state requested_state,
uint8_t reason);
/**
* wlan_cm_roam_send_rso_cmd() - send rso command
* @psoc: psoc pointer
* @vdev_id: vdev id
* @rso_command: roam command to send
* @reason: reason for changing roam state for the requested vdev id
*
* similar to csr_roam_offload_scan, will be used from many legacy
* process directly, generate a new function wlan_cm_roam_send_rso_cmd
* for external usage.
*
* Return: QDF_STATUS
*/
QDF_STATUS wlan_cm_roam_send_rso_cmd(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id, uint8_t rso_command,
uint8_t reason);
/**
* wlan_cm_roam_stop_req() - roam stop request handling
* @psoc: psoc pointer

Переглянути файл

@@ -115,6 +115,52 @@
#define ROAM_R0KH_ID_MAX_LEN 48
#endif
/*
* Neighbor Report Params Bitmask
*/
#define NEIGHBOR_REPORT_PARAMS_TIME_OFFSET 0x01
#define NEIGHBOR_REPORT_PARAMS_LOW_RSSI_OFFSET 0x02
#define NEIGHBOR_REPORT_PARAMS_BMISS_COUNT_TRIGGER 0x04
#define NEIGHBOR_REPORT_PARAMS_PER_THRESHOLD_OFFSET 0x08
#define NEIGHBOR_REPORT_PARAMS_CACHE_TIMEOUT 0x10
#define NEIGHBOR_REPORT_PARAMS_MAX_REQ_CAP 0x20
#define NEIGHBOR_REPORT_PARAMS_ALL 0x3F
/*
* Neighbor report offload needs to send 0xFFFFFFFF if a particular
* parameter is disabled from the ini
*/
#define NEIGHBOR_REPORT_PARAM_INVALID (0xFFFFFFFFU)
/**
* struct cm_roam_neighbor_report_offload_params - neighbor report offload
* parameters
* @offload_11k_enable_bitmask: neighbor report offload bitmask control
* @params_bitmask: bitmask to specify which of the below are enabled
* @time_offset: time offset after 11k offload command to trigger a neighbor
* report request (in seconds)
* @low_rssi_offset: Offset from rssi threshold to trigger neighbor
* report request (in dBm)
* @bmiss_count_trigger: Number of beacon miss events to trigger neighbor
* report request
* @per_threshold_offset: offset from PER threshold to trigger neighbor
* report request (in %)
* @neighbor_report_cache_timeout: timeout after which new trigger can enable
* sending of a neighbor report request (in seconds)
* @max_neighbor_report_req_cap: max number of neighbor report requests that
* can be sent to the peer in the current session
*/
struct cm_roam_neighbor_report_offload_params {
uint32_t offload_11k_enable_bitmask;
uint8_t params_bitmask;
uint32_t time_offset;
uint32_t low_rssi_offset;
uint32_t bmiss_count_trigger;
uint32_t per_threshold_offset;
uint32_t neighbor_report_cache_timeout;
uint32_t max_neighbor_report_req_cap;
};
/**
* struct rso_chan_info - chan info
* @num_chan: number of channels
@@ -284,6 +330,7 @@ struct rso_roam_policy_params {
* @max_raise_rssi_5g: Maximum amount of Boost that can added
* @is_fils_roaming_supported: fils roaming supported
* @policy_params: roam policy params
* @neighbor_report_offload: neighbor report offload params
*/
struct rso_config_params {
uint8_t num_ssid_allowed_list;
@@ -302,6 +349,7 @@ struct rso_config_params {
uint8_t cat_rssi_offset;
bool is_fils_roaming_supported;
struct rso_roam_policy_params policy_params;
struct cm_roam_neighbor_report_offload_params neighbor_report_offload;
};
/**

Переглянути файл

@@ -79,6 +79,35 @@ wlan_cm_enable_roaming_on_connected_sta(struct wlan_objmgr_pdev *pdev,
WLAN_ROAM_RSO_ENABLED,
REASON_CTX_INIT);
}
QDF_STATUS wlan_cm_roam_state_change(struct wlan_objmgr_pdev *pdev,
uint8_t vdev_id,
enum roam_offload_state requested_state,
uint8_t reason)
{
return cm_roam_state_change(pdev, vdev_id, requested_state, reason);
}
QDF_STATUS wlan_cm_roam_send_rso_cmd(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id, uint8_t rso_command,
uint8_t reason)
{
return cm_roam_send_rso_cmd(psoc, vdev_id, rso_command, reason);
}
QDF_STATUS
wlan_roam_update_cfg(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
uint8_t reason)
{
if (!MLME_IS_ROAM_STATE_RSO_ENABLED(psoc, vdev_id)) {
mlme_debug("Update cfg received while ROAM RSO not started");
return QDF_STATUS_E_INVAL;
}
return cm_roam_send_rso_cmd(psoc, vdev_id, ROAM_SCAN_OFFLOAD_UPDATE_CFG,
reason);
}
#endif
char *cm_roam_get_requestor_string(enum wlan_cm_rso_control_requestor requestor)
@@ -238,21 +267,6 @@ bool wlan_cm_roaming_in_progress(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id)
return false;
}
QDF_STATUS wlan_cm_roam_state_change(struct wlan_objmgr_pdev *pdev,
uint8_t vdev_id,
enum roam_offload_state requested_state,
uint8_t reason)
{
return cm_roam_state_change(pdev, vdev_id, requested_state, reason);
}
QDF_STATUS wlan_cm_roam_send_rso_cmd(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id, uint8_t rso_command,
uint8_t reason)
{
return cm_roam_send_rso_cmd(psoc, vdev_id, rso_command, reason);
}
QDF_STATUS wlan_cm_roam_stop_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
uint8_t reason)
{

Переглянути файл

@@ -751,32 +751,6 @@ typedef struct tagCsrRoamConnectedProfile {
#endif
} tCsrRoamConnectedProfile;
/**
* struct csr_neighbor_report_offload_params - neighbor report offload params
* @params_bitmask: bitmask to specify which of the below are enabled
* @time_offset: time offset after 11k offload command to trigger a neighbor
* report request (in seconds)
* @low_rssi_offset: Offset from rssi threshold to trigger neighbor
* report request (in dBm)
* @bmiss_count_trigger: Number of beacon miss events to trigger neighbor
* report request
* @per_threshold_offset: offset from PER threshold to trigger neighbor
* report request (in %)
* @neighbor_report_cache_timeout: timeout after which new trigger can enable
* sending of a neighbor report request (in seconds)
* @max_neighbor_report_req_cap: max number of neighbor report requests that
* can be sent to the peer in the current session
*/
struct csr_neighbor_report_offload_params {
uint8_t params_bitmask;
uint32_t time_offset;
uint32_t low_rssi_offset;
uint32_t bmiss_count_trigger;
uint32_t per_threshold_offset;
uint32_t neighbor_report_cache_timeout;
uint32_t max_neighbor_report_req_cap;
};
struct csr_config_params {
/* keep this uint32_t. This gets converted to ePhyChannelBondState */
uint32_t channelBondingMode24GHz;
@@ -820,9 +794,7 @@ struct csr_config_params {
bool sap_channel_avoidance;
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
enum force_1x1_type is_force_1x1;
uint32_t offload_11k_enable_bitmask;
bool wep_tkip_in_he;
struct csr_neighbor_report_offload_params neighbor_report_offload;
};
#ifdef WLAN_FEATURE_ROAM_OFFLOAD

Переглянути файл

@@ -322,17 +322,6 @@ struct delstafor_sessionCmd {
void *context;
};
/*
* Neighbor Report Params Bitmask
*/
#define NEIGHBOR_REPORT_PARAMS_TIME_OFFSET 0x01
#define NEIGHBOR_REPORT_PARAMS_LOW_RSSI_OFFSET 0x02
#define NEIGHBOR_REPORT_PARAMS_BMISS_COUNT_TRIGGER 0x04
#define NEIGHBOR_REPORT_PARAMS_PER_THRESHOLD_OFFSET 0x08
#define NEIGHBOR_REPORT_PARAMS_CACHE_TIMEOUT 0x10
#define NEIGHBOR_REPORT_PARAMS_MAX_REQ_CAP 0x20
#define NEIGHBOR_REPORT_PARAMS_ALL 0x3F
struct csr_config {
uint32_t channelBondingMode24GHz;
uint32_t channelBondingMode5GHz;
@@ -358,9 +347,7 @@ struct csr_config {
uint8_t conc_custom_rule2;
uint8_t is_sta_connection_in_5gz_enabled;
enum force_1x1_type is_force_1x1;
uint32_t offload_11k_enable_bitmask;
bool wep_tkip_in_he;
struct csr_neighbor_report_offload_params neighbor_report_offload;
};
struct csr_channel_powerinfo {

Переглянути файл

@@ -154,71 +154,6 @@ QDF_STATUS csr_neighbor_roam_merge_channel_lists(struct mac_context *mac,
uint8_t outputNumOfChannels,
uint8_t *pMergedOutputNumOfChannels);
#if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
QDF_STATUS csr_roam_offload_scan(struct mac_context *mac, uint8_t sessionId,
uint8_t command, uint8_t reason);
/**
* csr_post_roam_state_change() - Post roam state change to roam state machine
* @mac: mac context
* @vdev_id: vdev id
* @state: roam state to be set for the requested vdev id
* @reason: reason for changing roam state for the requested vdev id
*
* Return: QDF_STATUS
*/
QDF_STATUS csr_post_roam_state_change(struct mac_context *mac, uint8_t vdev_id,
enum roam_offload_state state,
uint8_t reason);
/**
* csr_roam_update_cfg() - Process RSO update cfg request
* @mac: mac context
* @vdev_id: vdev id
* @reason: reason for requesting RSO update cfg
*
* Return: QDF_STATUS
*/
QDF_STATUS
csr_roam_update_cfg(struct mac_context *mac, uint8_t vdev_id, uint8_t reason);
#else
static inline QDF_STATUS csr_roam_offload_scan(struct mac_context *mac,
uint8_t sessionId, uint8_t command, uint8_t reason)
{
return QDF_STATUS_E_NOSUPPORT;
}
static inline
QDF_STATUS csr_post_roam_state_change(struct mac_context *mac, uint8_t vdev_id,
enum roam_offload_state state,
uint8_t reason)
{
return QDF_STATUS_E_NOSUPPORT;
}
static inline QDF_STATUS
csr_roam_update_cfg(struct mac_context *mac, uint8_t vdev_id, uint8_t reason)
{
return QDF_STATUS_E_NOSUPPORT;
}
#endif
/**
* csr_get_roam_enabled_sta_sessionid() - get the session id of the sta on which
* roaming is enabled.
* @mac_ctx: pointer to global mac structure
* @vdev_id: vdev id of the requestor
*
* The function checks if any sta(other than the provided vdev_id) is present
* and has roaming enabled and return the session id of the sta with roaming
* enabled else if roaming is not enabled on any STA return
* WLAN_UMAC_VDEV_ID_MAX.
*
* Return: session id of STA on which roaming is enabled
*/
uint8_t csr_get_roam_enabled_sta_sessionid(struct mac_context *mac_ctx,
uint8_t vdev_id);
#ifndef FEATURE_CM_ENABLE
#if defined(WLAN_FEATURE_FILS_SK)
/**

Переглянути файл

@@ -906,8 +906,8 @@ void sme_update_fine_time_measurement_capab(mac_handle_t mac_handle,
/* Inform this RRM IE change to FW */
status = sme_acquire_global_lock(&mac_ctx->sme);
if (QDF_IS_STATUS_SUCCESS(status)) {
csr_roam_update_cfg(mac_ctx, session_id,
REASON_CONNECT_IES_CHANGED);
wlan_roam_update_cfg(mac_ctx->psoc, session_id,
REASON_CONNECT_IES_CHANGED);
sme_release_global_lock(&mac_ctx->sme);
}
}
@@ -919,44 +919,6 @@ void sme_update_nud_config(mac_handle_t mac_handle, uint8_t nud_fail_behavior)
mac->nud_fail_behaviour = nud_fail_behavior;
}
/**
* sme_update_neighbor_report_config() - Update CSR config for 11k params
* @mac_handle: Pointer to MAC context
* @csr_config: Pointer to CSR config data structure
*
* Return: None
*/
static void
sme_update_neighbor_report_config(struct mac_context *mac,
struct csr_config_params *csr_config)
{
struct wlan_fwol_neighbor_report_cfg fwol_neighbor_report_cfg = {0};
QDF_STATUS status;
status = ucfg_fwol_get_neighbor_report_cfg(mac->psoc,
&fwol_neighbor_report_cfg);
if (!QDF_IS_STATUS_SUCCESS(status))
sme_err("Using defaults for 11K offload params: Error: %d",
status);
csr_config->offload_11k_enable_bitmask =
fwol_neighbor_report_cfg.enable_bitmask;
csr_config->neighbor_report_offload.params_bitmask =
fwol_neighbor_report_cfg.params_bitmask;
csr_config->neighbor_report_offload.time_offset =
fwol_neighbor_report_cfg.time_offset;
csr_config->neighbor_report_offload.low_rssi_offset =
fwol_neighbor_report_cfg.low_rssi_offset;
csr_config->neighbor_report_offload.bmiss_count_trigger =
fwol_neighbor_report_cfg.bmiss_count_trigger;
csr_config->neighbor_report_offload.per_threshold_offset =
fwol_neighbor_report_cfg.per_threshold_offset;
csr_config->neighbor_report_offload.neighbor_report_cache_timeout =
fwol_neighbor_report_cfg.cache_timeout;
csr_config->neighbor_report_offload.max_neighbor_report_req_cap =
fwol_neighbor_report_cfg.max_req_cap;
}
/*
* sme_update_config() - Change configurations for all SME moduels
* The function updates some configuration for modules in SME, CSR, etc
@@ -983,10 +945,9 @@ QDF_STATUS sme_update_config(mac_handle_t mac_handle,
sme_err("SME config params empty");
return status;
}
sme_update_neighbor_report_config(mac, &pSmeConfigParams->csr_config);
status = csr_change_default_config_param(mac, &pSmeConfigParams->
csr_config);
if (!QDF_IS_STATUS_SUCCESS(status))
sme_err("csr_change_default_config_param failed status: %d",
status);
@@ -1068,7 +1029,7 @@ QDF_STATUS sme_update_roam_params(mac_handle_t mac_handle,
status = sme_acquire_global_lock(&mac_ctx->sme);
if (QDF_IS_STATUS_SUCCESS(status)) {
csr_roam_update_cfg(mac_ctx, vdev_id, update_param);
wlan_roam_update_cfg(mac_ctx->psoc, vdev_id, update_param);
sme_release_global_lock(&mac_ctx->sme);
}
@@ -1504,7 +1465,7 @@ QDF_STATUS sme_update_is_ese_feature_enabled(mac_handle_t mac_handle,
if (mac->mlme_cfg->lfr.roam_scan_offload_enabled) {
status = sme_acquire_global_lock(&mac->sme);
if (QDF_IS_STATUS_SUCCESS(status)) {
csr_roam_update_cfg(mac, sessionId,
wlan_roam_update_cfg(mac->psoc, sessionId,
REASON_ESE_INI_CFG_CHANGED);
sme_release_global_lock(&mac->sme);
} else {
@@ -1876,7 +1837,7 @@ QDF_STATUS sme_set_ese_roam_scan_channel_list(mac_handle_t mac_handle,
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
if (mac->mlme_cfg->lfr.roam_scan_offload_enabled)
csr_roam_update_cfg(mac, sessionId,
wlan_roam_update_cfg(mac->psoc, sessionId,
REASON_CHANNEL_LIST_CHANGED);
sme_release_global_lock(&mac->sme);
@@ -6096,7 +6057,7 @@ QDF_STATUS sme_send_rso_connect_params(mac_handle_t mac_handle,
status = sme_acquire_global_lock(&mac->sme);
if (QDF_IS_STATUS_SUCCESS(status)) {
sme_debug("Updating fils config to fw");
csr_roam_update_cfg(mac, vdev_id,
wlan_roam_update_cfg(mac->psoc, vdev_id,
REASON_FILS_PARAMS_CHANGED);
sme_release_global_lock(&mac->sme);
} else {
@@ -6322,10 +6283,10 @@ QDF_STATUS sme_set_roam_scan_control(mac_handle_t mac_handle, uint8_t sessionId,
* and then append channel list with dynamic channels in the FW
* using REASON_CHANNEL_LIST_CHANGED.
*/
csr_roam_update_cfg(mac, sessionId,
wlan_roam_update_cfg(mac->psoc, sessionId,
REASON_FLUSH_CHANNEL_LIST);
csr_roam_update_cfg(mac, sessionId,
wlan_roam_update_cfg(mac->psoc, sessionId,
REASON_CHANNEL_LIST_CHANGED);
}
}
@@ -6426,7 +6387,7 @@ int sme_add_key_btk(mac_handle_t mac_handle, uint8_t session_id,
* KRK and BTK are updated by upper layer back to back. Send
* updated KRK and BTK together to FW here.
*/
csr_roam_update_cfg(mac_ctx, session_id, REASON_ROAM_PSK_PMK_CHANGED);
wlan_roam_update_cfg(mac_ctx->psoc, session_id, REASON_ROAM_PSK_PMK_CHANGED);
return 0;
}
@@ -6915,8 +6876,8 @@ QDF_STATUS sme_roam_control_restore_default_config(mac_handle_t mac_handle,
sme_restore_default_roaming_params(mac, vdev_id);
/* Flush static and dynamic channels in ROAM scan list in firmware */
csr_roam_update_cfg(mac, vdev_id, REASON_FLUSH_CHANNEL_LIST);
csr_roam_update_cfg(mac, vdev_id, REASON_SCORING_CRITERIA_CHANGED);
wlan_roam_update_cfg(mac->psoc, vdev_id, REASON_FLUSH_CHANNEL_LIST);
wlan_roam_update_cfg(mac->psoc, vdev_id, REASON_SCORING_CRITERIA_CHANGED);
out:
sme_release_global_lock(&mac->sme);
@@ -9200,7 +9161,7 @@ QDF_STATUS sme_update_dfs_scan_mode(mac_handle_t mac_handle, uint8_t sessionId,
mac->mlme_cfg->lfr.roaming_dfs_channel =
allowDFSChannelRoam;
if (mac->mlme_cfg->lfr.roam_scan_offload_enabled)
csr_roam_update_cfg(mac, sessionId,
wlan_roam_update_cfg(mac->psoc, sessionId,
REASON_ROAM_DFS_SCAN_MODE_CHANGED);
sme_release_global_lock(&mac->sme);
@@ -13065,7 +13026,7 @@ QDF_STATUS sme_update_sta_roam_policy(mac_handle_t mac_handle,
if (mac_ctx->mlme_cfg->lfr.roam_scan_offload_enabled) {
status = sme_acquire_global_lock(&mac_ctx->sme);
if (QDF_IS_STATUS_SUCCESS(status)) {
csr_roam_update_cfg(mac_ctx, vdev_id,
wlan_roam_update_cfg(mac_ctx->psoc, vdev_id,
REASON_ROAM_SCAN_STA_ROAM_POLICY_CHANGED);
sme_release_global_lock(&mac_ctx->sme);
}
@@ -15923,7 +15884,7 @@ sme_send_vendor_btm_params(mac_handle_t mac_handle, uint8_t vdev_id)
status = sme_acquire_global_lock(&mac->sme);
if (QDF_IS_STATUS_SUCCESS(status)) {
if (mac->mlme_cfg->lfr.roam_scan_offload_enabled)
csr_roam_update_cfg(mac, vdev_id,
wlan_roam_update_cfg(mac->psoc, vdev_id,
REASON_ROAM_CONTROL_CONFIG_CHANGED);
sme_release_global_lock(&mac->sme);
}

Переглянути файл

@@ -114,12 +114,6 @@
#define ROAMING_OFFLOAD_TIMER_STOP 2
#define CSR_ROAMING_OFFLOAD_TIMEOUT_PERIOD (5 * QDF_MC_TIMER_TO_SEC_UNIT)
/*
* Neighbor report offload needs to send 0xFFFFFFFF if a particular
* parameter is disabled from the ini
*/
#define NEIGHBOR_REPORT_PARAM_INVALID (0xFFFFFFFFU)
/*
* To get 4 LSB of roam reason of roam_synch_data
* received from firmware
@@ -2221,40 +2215,6 @@ void csr_update_session_he_cap(struct mac_context *mac_ctx,
}
#endif
/**
* csr_set_11k_offload_config_param() - Update 11k neighbor report config
*
* @csr_config: pointer to csr_config in MAC context
* @pParam: pointer to config params from HDD
*
* Return: none
*/
static
void csr_set_11k_offload_config_param(struct csr_config *csr_config,
struct csr_config_params *param)
{
csr_config->offload_11k_enable_bitmask =
param->offload_11k_enable_bitmask;
csr_config->neighbor_report_offload.params_bitmask =
param->neighbor_report_offload.params_bitmask;
csr_config->neighbor_report_offload.time_offset =
param->neighbor_report_offload.time_offset;
csr_config->neighbor_report_offload.low_rssi_offset =
param->neighbor_report_offload.low_rssi_offset;
csr_config->neighbor_report_offload.bmiss_count_trigger =
param->neighbor_report_offload.bmiss_count_trigger;
csr_config->neighbor_report_offload.per_threshold_offset =
param->neighbor_report_offload.per_threshold_offset;
csr_config->neighbor_report_offload.
neighbor_report_cache_timeout =
param->neighbor_report_offload.
neighbor_report_cache_timeout;
csr_config->neighbor_report_offload.
max_neighbor_report_req_cap =
param->neighbor_report_offload.
max_neighbor_report_req_cap;
}
QDF_STATUS csr_change_default_config_param(struct mac_context *mac,
struct csr_config_params *pParam)
{
@@ -2350,44 +2310,10 @@ QDF_STATUS csr_change_default_config_param(struct mac_context *mac,
mac->sap.sap_channel_avoidance =
pParam->sap_channel_avoidance;
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
csr_set_11k_offload_config_param(&mac->roam.configParam,
pParam);
}
return status;
}
/**
* csr_get_11k_offload_config_param() - Get 11k neighbor report config
*
* @csr_config: pointer to csr_config in MAC context
* @pParam: pointer to config params from HDD
*
* Return: none
*/
static
void csr_get_11k_offload_config_param(struct csr_config *csr_config,
struct csr_config_params *param)
{
param->offload_11k_enable_bitmask =
csr_config->offload_11k_enable_bitmask;
param->neighbor_report_offload.params_bitmask =
csr_config->neighbor_report_offload.params_bitmask;
param->neighbor_report_offload.time_offset =
csr_config->neighbor_report_offload.time_offset;
param->neighbor_report_offload.low_rssi_offset =
csr_config->neighbor_report_offload.low_rssi_offset;
param->neighbor_report_offload.bmiss_count_trigger =
csr_config->neighbor_report_offload.bmiss_count_trigger;
param->neighbor_report_offload.per_threshold_offset =
csr_config->neighbor_report_offload.per_threshold_offset;
param->neighbor_report_offload.neighbor_report_cache_timeout =
csr_config->neighbor_report_offload.
neighbor_report_cache_timeout;
param->neighbor_report_offload.max_neighbor_report_req_cap =
csr_config->neighbor_report_offload.
max_neighbor_report_req_cap;
}
QDF_STATUS csr_get_config_param(struct mac_context *mac,
struct csr_config_params *pParam)
{
@@ -2428,8 +2354,6 @@ QDF_STATUS csr_get_config_param(struct mac_context *mac,
mac->f_sta_miracast_mcc_rest_time_val;
pParam->send_smps_action = mac->roam.configParam.send_smps_action;
csr_get_11k_offload_config_param(&mac->roam.configParam, pParam);
return QDF_STATUS_SUCCESS;
}
@@ -6948,8 +6872,9 @@ static void csr_roam_process_join_res(struct mac_context *mac_ctx,
}
if (csr_roam_is_sta_mode(mac_ctx, session_id))
csr_post_roam_state_change(mac_ctx, session_id, WLAN_ROAM_INIT,
REASON_CONNECT);
wlan_cm_roam_state_change(mac_ctx->pdev, session_id,
WLAN_ROAM_INIT,
REASON_CONNECT);
/* Not to signal link up because keys are yet to be set.
* The linkup function will overwrite the sub-state that
@@ -13493,7 +13418,8 @@ QDF_STATUS csr_roam_set_psk_pmk(struct mac_context *mac, uint8_t vdev_id,
}
if (update_to_fw)
csr_roam_update_cfg(mac, vdev_id, REASON_ROAM_PSK_PMK_CHANGED);
wlan_roam_update_cfg(mac->psoc, vdev_id,
REASON_ROAM_PSK_PMK_CHANGED);
return QDF_STATUS_SUCCESS;
}
@@ -16197,104 +16123,6 @@ csr_roam_pmkid_req_callback(uint8_t vdev_id,
#endif /* WLAN_FEATURE_ROAM_OFFLOAD */
#if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
/**
* csr_update_11k_offload_params - Update 11K offload params
* @mac_ctx: MAC context
* @session: Pointer to the CSR Roam Session
* @params: Pointer to the roam 11k offload params
* @enabled: 11k offload enabled/disabled.
*
* API to update 11k offload params
*
* Return: none
*/
static void
csr_update_11k_offload_params(struct mac_context *mac_ctx,
struct csr_roam_session *session,
struct wlan_roam_11k_offload_params *params,
bool enabled)
{
struct csr_config *csr_config = &mac_ctx->roam.configParam;
struct csr_neighbor_report_offload_params *neighbor_report_offload =
&csr_config->neighbor_report_offload;
params->vdev_id = session->sessionId;
if (enabled) {
params->offload_11k_bitmask =
csr_config->offload_11k_enable_bitmask;
} else {
params->offload_11k_bitmask = 0;
return;
}
/*
* If none of the parameters are enabled, then set the
* offload_11k_bitmask to 0, so that we don't send the command
* to the FW and drop it in WMA
*/
if ((neighbor_report_offload->params_bitmask &
NEIGHBOR_REPORT_PARAMS_ALL) == 0) {
sme_err("No valid neighbor report offload params %x",
neighbor_report_offload->params_bitmask);
params->offload_11k_bitmask = 0;
return;
}
/*
* First initialize all params to NEIGHBOR_REPORT_PARAM_INVALID
* Then set the values that are enabled
*/
params->neighbor_report_params.time_offset =
NEIGHBOR_REPORT_PARAM_INVALID;
params->neighbor_report_params.low_rssi_offset =
NEIGHBOR_REPORT_PARAM_INVALID;
params->neighbor_report_params.bmiss_count_trigger =
NEIGHBOR_REPORT_PARAM_INVALID;
params->neighbor_report_params.per_threshold_offset =
NEIGHBOR_REPORT_PARAM_INVALID;
params->neighbor_report_params.neighbor_report_cache_timeout =
NEIGHBOR_REPORT_PARAM_INVALID;
params->neighbor_report_params.max_neighbor_report_req_cap =
NEIGHBOR_REPORT_PARAM_INVALID;
if (neighbor_report_offload->params_bitmask &
NEIGHBOR_REPORT_PARAMS_TIME_OFFSET)
params->neighbor_report_params.time_offset =
neighbor_report_offload->time_offset;
if (neighbor_report_offload->params_bitmask &
NEIGHBOR_REPORT_PARAMS_LOW_RSSI_OFFSET)
params->neighbor_report_params.low_rssi_offset =
neighbor_report_offload->low_rssi_offset;
if (neighbor_report_offload->params_bitmask &
NEIGHBOR_REPORT_PARAMS_BMISS_COUNT_TRIGGER)
params->neighbor_report_params.bmiss_count_trigger =
neighbor_report_offload->bmiss_count_trigger;
if (neighbor_report_offload->params_bitmask &
NEIGHBOR_REPORT_PARAMS_PER_THRESHOLD_OFFSET)
params->neighbor_report_params.per_threshold_offset =
neighbor_report_offload->per_threshold_offset;
if (neighbor_report_offload->params_bitmask &
NEIGHBOR_REPORT_PARAMS_CACHE_TIMEOUT)
params->neighbor_report_params.neighbor_report_cache_timeout =
neighbor_report_offload->neighbor_report_cache_timeout;
if (neighbor_report_offload->params_bitmask &
NEIGHBOR_REPORT_PARAMS_MAX_REQ_CAP)
params->neighbor_report_params.max_neighbor_report_req_cap =
neighbor_report_offload->max_neighbor_report_req_cap;
params->neighbor_report_params.ssid.length =
session->connectedProfile.SSID.length;
qdf_mem_copy(params->neighbor_report_params.ssid.ssid,
session->connectedProfile.SSID.ssId,
session->connectedProfile.SSID.length);
}
QDF_STATUS csr_invoke_neighbor_report_request(
uint8_t session_id,
struct sRrmNeighborReq *neighbor_report_req,
@@ -16427,48 +16255,6 @@ QDF_STATUS csr_update_fils_config(struct mac_context *mac, uint8_t session_id,
return QDF_STATUS_SUCCESS;
}
#endif
#endif
uint8_t
csr_get_roam_enabled_sta_sessionid(struct mac_context *mac_ctx, uint8_t vdev_id)
{
struct csr_roam_session *session;
uint8_t i;
for (i = 0; i < WLAN_MAX_VDEVS; i++) {
session = CSR_GET_SESSION(mac_ctx, i);
if (!session || !CSR_IS_SESSION_VALID(mac_ctx, i))
continue;
if (wlan_get_opmode_from_vdev_id(mac_ctx->pdev, vdev_id) !=
QDF_STA_MODE)
continue;
if (vdev_id == i)
continue;
if (MLME_IS_ROAM_INITIALIZED(mac_ctx->psoc, i))
return i;
}
return WLAN_UMAC_VDEV_ID_MAX;
}
QDF_STATUS
csr_post_roam_state_change(struct mac_context *mac, uint8_t vdev_id,
enum roam_offload_state state, uint8_t reason)
{
return wlan_cm_roam_state_change(mac->pdev, vdev_id, state, reason);
}
QDF_STATUS
csr_roam_offload_scan(struct mac_context *mac_ctx, uint8_t session_id,
uint8_t command, uint8_t reason)
{
return wlan_cm_roam_send_rso_cmd(mac_ctx->psoc, session_id, command,
reason);
}
#ifndef FEATURE_CM_ENABLE
#ifdef WLAN_ADAPTIVE_11R
static bool
@@ -16651,58 +16437,6 @@ wlan_cm_roam_cmd_allowed(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
return QDF_STATUS_SUCCESS;
}
#endif
/**
* csr_cm_roam_offload_11k_params() - set roam 11k offload parameters
* @mac_ctx: global mac ctx
* @session: sme session
* @params: roam 11k offload parameters
* @enabled: 11k offload enabled/disabled
*
* This function is used to set roam 11k offload related parameters
*
* Return: None
*/
static void
csr_cm_roam_offload_11k_params(struct mac_context *mac_ctx,
struct csr_roam_session *session,
struct wlan_roam_11k_offload_params *params,
bool enabled)
{
csr_update_11k_offload_params(mac_ctx, session, params, enabled);
}
/*
* Below wlan_cm_roam_* and all csr_cm_roam_* APIs will move to component once
* conenction manager is converged.
*/
QDF_STATUS
wlan_cm_roam_fill_start_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
struct wlan_roam_start_config *req, uint8_t reason)
{
struct csr_roam_session *session;
struct mac_context *mac_ctx;
mac_ctx = sme_get_mac_context();
if (!mac_ctx) {
sme_err("mac_ctx is NULL");
return QDF_STATUS_E_FAILURE;
}
session = CSR_GET_SESSION(mac_ctx, vdev_id);
if (!session) {
sme_err("session is null %d", vdev_id);
return QDF_STATUS_E_FAILURE;
}
/* 11k offload is enabled during RSO Start after connect indication */
csr_cm_roam_offload_11k_params(mac_ctx, session,
&req->roam_11k_params, TRUE);
/* fill other struct similar to wlan_roam_offload_scan_rssi_params */
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
wlan_cm_roam_scan_offload_rsp(uint8_t vdev_id, uint8_t reason)
{
@@ -18617,7 +18351,7 @@ csr_process_roam_sync_callback(struct mac_context *mac_ctx,
goto end;
}
#endif
status = csr_post_roam_state_change(mac_ctx, session_id,
status = wlan_cm_roam_state_change(mac_ctx->pdev, session_id,
WLAN_ROAM_SYNCH_IN_PROG,
REASON_ROAM_HANDOFF_DONE);
if (QDF_IS_STATUS_ERROR(status))
@@ -18627,8 +18361,7 @@ csr_process_roam_sync_callback(struct mac_context *mac_ctx,
eCSR_ROAM_FT_START, eCSR_ROAM_RESULT_SUCCESS);
goto end;
case SIR_ROAMING_START:
status = csr_post_roam_state_change(
mac_ctx, session_id,
status = wlan_cm_roam_state_change(mac_ctx->pdev, session_id,
WLAN_ROAMING_IN_PROG,
REASON_ROAM_CANDIDATE_FOUND);
if (QDF_IS_STATUS_ERROR(status))
@@ -18673,7 +18406,7 @@ csr_process_roam_sync_callback(struct mac_context *mac_ctx,
* Connection to the previous AP is still valid in this
* case. So move to RSO_ENABLED state.
*/
csr_post_roam_state_change(mac_ctx, session_id,
wlan_cm_roam_state_change(mac_ctx->pdev, session_id,
WLAN_ROAM_RSO_ENABLED,
REASON_ROAM_ABORT);
csr_roam_roaming_offload_timer_action(mac_ctx,
@@ -18778,7 +18511,7 @@ csr_process_roam_sync_callback(struct mac_context *mac_ctx,
if (roam_synch_data->authStatus ==
CSR_ROAM_AUTH_STATUS_AUTHENTICATED) {
csr_post_roam_state_change(mac_ctx, session_id,
wlan_cm_roam_state_change(mac_ctx->pdev, session_id,
WLAN_ROAM_RSO_ENABLED,
REASON_CONNECT);
} else {
@@ -18788,9 +18521,9 @@ csr_process_roam_sync_callback(struct mac_context *mac_ctx,
* user-space and after set key response
* is received.
*/
csr_post_roam_state_change(mac_ctx, session_id,
WLAN_ROAM_INIT,
REASON_CONNECT);
wlan_cm_roam_state_change(mac_ctx->pdev, session_id,
WLAN_ROAM_INIT,
REASON_CONNECT);
}
goto end;
case SIR_ROAMING_DEAUTH:
@@ -19310,15 +19043,3 @@ QDF_STATUS csr_update_owe_info(struct mac_context *mac,
return status;
}
QDF_STATUS
csr_roam_update_cfg(struct mac_context *mac, uint8_t vdev_id, uint8_t reason)
{
if (!MLME_IS_ROAM_STATE_RSO_ENABLED(mac->psoc, vdev_id)) {
sme_debug("Update cfg received while ROAM RSO not started");
return QDF_STATUS_E_INVAL;
}
return csr_roam_offload_scan(mac, vdev_id, ROAM_SCAN_OFFLOAD_UPDATE_CFG,
reason);
}

Переглянути файл

@@ -401,7 +401,7 @@ QDF_STATUS csr_neighbor_roam_process_scan_complete(struct mac_context *mac,
if (csr_roam_is_roam_offload_scan_enabled(mac)) {
if (pNeighborRoamInfo->uOsRequestedHandoff) {
csr_roam_offload_scan(mac, sessionId,
wlan_cm_roam_send_rso_cmd(mac->psoc, sessionId,
ROAM_SCAN_OFFLOAD_START,
REASON_NO_CAND_FOUND_OR_NOT_ROAMING_NOW);
pNeighborRoamInfo->uOsRequestedHandoff = 0;
@@ -409,7 +409,7 @@ QDF_STATUS csr_neighbor_roam_process_scan_complete(struct mac_context *mac,
/* There is no candidate or We are not roaming Now.
* Inform the FW to restart Roam Offload Scan
*/
csr_roam_offload_scan(mac, sessionId,
wlan_cm_roam_send_rso_cmd(mac->psoc, sessionId,
ROAM_SCAN_OFFLOAD_RESTART,
REASON_NO_CAND_FOUND_OR_NOT_ROAMING_NOW);
}

Переглянути файл

@@ -136,13 +136,13 @@ QDF_STATUS csr_neighbor_roam_update_fast_roaming_enabled(struct mac_context *mac
mlme_set_supplicant_disabled_roaming(mac_ctx->psoc, session_id,
!fast_roam_enabled);
if (fast_roam_enabled) {
csr_post_roam_state_change(mac_ctx, session_id,
WLAN_ROAM_RSO_ENABLED,
REASON_CONNECT);
wlan_cm_roam_state_change(mac_ctx->pdev, session_id,
WLAN_ROAM_RSO_ENABLED,
REASON_CONNECT);
} else {
csr_post_roam_state_change(mac_ctx, session_id,
WLAN_ROAM_RSO_STOPPED,
REASON_SUPPLICANT_DISABLED_ROAMING);
wlan_cm_roam_state_change(mac_ctx->pdev, session_id,
WLAN_ROAM_RSO_STOPPED,
REASON_SUPPLICANT_DISABLED_ROAMING);
}
sme_release_global_lock(&mac_ctx->sme);
break;
@@ -230,7 +230,7 @@ QDF_STATUS csr_neighbor_roam_update_config(struct mac_context *mac_ctx,
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
if (state == eCSR_NEIGHBOR_ROAM_STATE_CONNECTED) {
sme_debug("CONNECTED, send update cfg cmd");
csr_roam_update_cfg(mac_ctx, session_id, reason);
wlan_roam_update_cfg(mac_ctx->psoc, session_id, reason);
}
sme_debug("LFR config for %s changed from %d to %d",
lfr_get_config_item_string(reason), old_value, value);
@@ -720,8 +720,9 @@ QDF_STATUS csr_neighbor_roam_indicate_disconnect(struct mac_context *mac,
/*Inform the Firmware to STOP Scanning as the host has a disconnect. */
if (csr_roam_is_sta_mode(mac, sessionId))
csr_post_roam_state_change(mac, sessionId, WLAN_ROAM_DEINIT,
REASON_DISCONNECTED);
wlan_cm_roam_state_change(mac->pdev, sessionId,
WLAN_ROAM_DEINIT,
REASON_DISCONNECTED);
return QDF_STATUS_SUCCESS;
}
@@ -826,9 +827,9 @@ static void csr_neighbor_roam_info_ctx_init(struct mac_context *mac,
ngbr_roam_info->uOsRequestedHandoff = 0;
if (!MLME_IS_ROAM_SYNCH_IN_PROGRESS(mac->psoc, session_id))
csr_post_roam_state_change(mac, session_id,
WLAN_ROAM_RSO_ENABLED,
REASON_CTX_INIT);
wlan_cm_roam_state_change(mac->pdev, session_id,
WLAN_ROAM_RSO_ENABLED,
REASON_CTX_INIT);
}
/**
@@ -1331,9 +1332,9 @@ QDF_STATUS csr_neighbor_roam_handoff_req_hdlr(
&handoff_req->bssid, QDF_MAC_ADDR_SIZE);
roam_ctrl_info->uOsRequestedHandoff = 1;
status = csr_post_roam_state_change(mac_ctx, session_id,
WLAN_ROAM_RSO_STOPPED,
REASON_OS_REQUESTED_ROAMING_NOW);
status = wlan_cm_roam_state_change(mac_ctx->pdev, session_id,
WLAN_ROAM_RSO_STOPPED,
REASON_OS_REQUESTED_ROAMING_NOW);
if (QDF_STATUS_SUCCESS != status) {
sme_err("ROAM: RSO stop failed");
roam_ctrl_info->uOsRequestedHandoff = 0;
@@ -1397,8 +1398,8 @@ QDF_STATUS csr_neighbor_roam_start_lfr_scan(struct mac_context *mac,
/* There is no candidate or We are not roaming Now.
* Inform the FW to restart Roam Offload Scan
*/
csr_post_roam_state_change(mac, sessionId, WLAN_ROAM_RSO_ENABLED,
REASON_NO_CAND_FOUND_OR_NOT_ROAMING_NOW);
wlan_cm_roam_state_change(mac->pdev, sessionId, WLAN_ROAM_RSO_ENABLED,
REASON_NO_CAND_FOUND_OR_NOT_ROAMING_NOW);
return QDF_STATUS_SUCCESS;

Переглянути файл

@@ -342,10 +342,10 @@ ABORT_PREAUTH:
reason = REASON_PREAUTH_FAILED_FOR_ALL;
if (neighbor_roam_info->uOsRequestedHandoff) {
neighbor_roam_info->uOsRequestedHandoff = 0;
csr_post_roam_state_change(
mac_ctx, session_id,
WLAN_ROAM_RSO_ENABLED,
reason);
wlan_cm_roam_state_change(mac_ctx->pdev,
session_id,
WLAN_ROAM_RSO_ENABLED,
reason);
} else {
/* ROAM_SCAN_OFFLOAD_RESTART is a
* special command to trigger bmiss
@@ -353,7 +353,8 @@ ABORT_PREAUTH:
* preauth failure.
* This should be decoupled from RSO.
*/
csr_roam_offload_scan(mac_ctx, session_id,
wlan_cm_roam_send_rso_cmd(mac_ctx->psoc,
session_id,
ROAM_SCAN_OFFLOAD_RESTART,
reason);
}

Переглянути файл

@@ -5596,7 +5596,7 @@ static QDF_STATUS sme_qos_process_add_ts_success_rsp(struct mac_context *mac,
/* Inform this TSPEC IE change to FW */
opmode = wlan_get_opmode_from_vdev_id(mac->pdev, sessionId);
if (opmode == QDF_STA_MODE)
csr_roam_update_cfg(mac, sessionId,
wlan_roam_update_cfg(mac->psoc, sessionId,
REASON_CONNECT_IES_CHANGED);
(void)sme_qos_process_buffered_cmd(sessionId);