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
Цей коміт міститься в:
@@ -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,
|
||||
¶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))
|
||||
|
@@ -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);
|
||||
|
Посилання в новій задачі
Заблокувати користувача