diff --git a/components/fw_offload/core/src/wlan_fw_offload_main.c b/components/fw_offload/core/src/wlan_fw_offload_main.c index f0eafa72ba..6e8ba7c8b5 100644 --- a/components/fw_offload/core/src/wlan_fw_offload_main.c +++ b/components/fw_offload/core/src/wlan_fw_offload_main.c @@ -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; } diff --git a/components/fw_offload/dispatcher/inc/wlan_fwol_ucfg_api.h b/components/fw_offload/dispatcher/inc/wlan_fwol_ucfg_api.h index b4aa04b413..38341ce208 100644 --- a/components/fw_offload/dispatcher/inc/wlan_fwol_ucfg_api.h +++ b/components/fw_offload/dispatcher/inc/wlan_fwol_ucfg_api.h @@ -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) diff --git a/components/fw_offload/dispatcher/src/wlan_fwol_ucfg_api.c b/components/fw_offload/dispatcher/src/wlan_fwol_ucfg_api.c index 40b12e07e3..99b848b1f7 100644 --- a/components/fw_offload/dispatcher/src/wlan_fwol_ucfg_api.c +++ b/components/fw_offload/dispatcher/src/wlan_fwol_ucfg_api.c @@ -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) diff --git a/components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_offload.c b/components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_offload.c index a2ae44df3f..c57e7b6925 100644 --- a/components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_offload.c +++ b/components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_offload.c @@ -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, + ¶ms->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)) diff --git a/components/umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_roam_api.h b/components/umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_roam_api.h index 1b1a76de3d..8675641feb 100644 --- a/components/umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_roam_api.h +++ b/components/umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_roam_api.h @@ -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 diff --git a/components/umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_roam_public_struct.h b/components/umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_roam_public_struct.h index 29b4fa7336..1f2431d351 100644 --- a/components/umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_roam_public_struct.h +++ b/components/umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_roam_public_struct.h @@ -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; }; /** diff --git a/components/umac/mlme/connection_mgr/dispatcher/src/wlan_cm_roam_api.c b/components/umac/mlme/connection_mgr/dispatcher/src/wlan_cm_roam_api.c index 5f00ab8528..e14b7ee577 100644 --- a/components/umac/mlme/connection_mgr/dispatcher/src/wlan_cm_roam_api.c +++ b/components/umac/mlme/connection_mgr/dispatcher/src/wlan_cm_roam_api.c @@ -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) { diff --git a/core/sme/inc/csr_api.h b/core/sme/inc/csr_api.h index b9cd588651..4fa6ec75d7 100644 --- a/core/sme/inc/csr_api.h +++ b/core/sme/inc/csr_api.h @@ -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 diff --git a/core/sme/inc/csr_internal.h b/core/sme/inc/csr_internal.h index b020ee2629..c48c52aaed 100644 --- a/core/sme/inc/csr_internal.h +++ b/core/sme/inc/csr_internal.h @@ -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 { diff --git a/core/sme/inc/csr_neighbor_roam.h b/core/sme/inc/csr_neighbor_roam.h index 3931a305f6..15f2ed8db1 100644 --- a/core/sme/inc/csr_neighbor_roam.h +++ b/core/sme/inc/csr_neighbor_roam.h @@ -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) /** diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index 5177a4e0b8..4dc8ff078a 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -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); } diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 1d5496f9b7..d737e6da02 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -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); -} diff --git a/core/sme/src/csr/csr_host_scan_roam.c b/core/sme/src/csr/csr_host_scan_roam.c index 5b7626a002..3a19dca4b4 100644 --- a/core/sme/src/csr/csr_host_scan_roam.c +++ b/core/sme/src/csr/csr_host_scan_roam.c @@ -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); } diff --git a/core/sme/src/csr/csr_neighbor_roam.c b/core/sme/src/csr/csr_neighbor_roam.c index 0f3d81a86c..1e30f847e3 100644 --- a/core/sme/src/csr/csr_neighbor_roam.c +++ b/core/sme/src/csr/csr_neighbor_roam.c @@ -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; diff --git a/core/sme/src/csr/csr_roam_preauth.c b/core/sme/src/csr/csr_roam_preauth.c index 4a3ea3b126..45a3fbabfb 100644 --- a/core/sme/src/csr/csr_roam_preauth.c +++ b/core/sme/src/csr/csr_roam_preauth.c @@ -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); } diff --git a/core/sme/src/qos/sme_qos.c b/core/sme/src/qos/sme_qos.c index b9ad74e613..dfedd1058b 100644 --- a/core/sme/src/qos/sme_qos.c +++ b/core/sme/src/qos/sme_qos.c @@ -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);