qcacld-3.0: Move rso related process to connection manager [PART 4]
Add new code to implement below functions for connection manager roam part: Filling below WMI cmd parameters related process: WMI_ROAM_BTM_CONFIG_CMDID WMI_ROAM_SCAN_STOP_CMD WMI_ROAM_PER_CONFIG_CMDID And RSO command: ROAM_SCAN_OFFLOAD_RESTART Change-Id: I18480941980a55957abd48e0329fe4ef213a1243 CRs-Fixed: 2747578
This commit is contained in:
@@ -160,6 +160,8 @@ struct wlan_mlme_roam {
|
|||||||
* @cm_roam: Roaming configuration
|
* @cm_roam: Roaming configuration
|
||||||
* @bigtk_vdev_support: BIGTK feature support for this vdev (SAP)
|
* @bigtk_vdev_support: BIGTK feature support for this vdev (SAP)
|
||||||
* @sae_auth_retry: SAE auth retry information
|
* @sae_auth_retry: SAE auth retry information
|
||||||
|
* @roam_reason_better_ap: roam due to better AP found
|
||||||
|
* @better_ap_hb_failure_rssi: heartbeat failure AP RSSI
|
||||||
*/
|
*/
|
||||||
struct mlme_legacy_priv {
|
struct mlme_legacy_priv {
|
||||||
bool chan_switch_in_progress;
|
bool chan_switch_in_progress;
|
||||||
@@ -180,6 +182,8 @@ struct mlme_legacy_priv {
|
|||||||
struct wlan_cm_roam cm_roam;
|
struct wlan_cm_roam cm_roam;
|
||||||
bool bigtk_vdev_support;
|
bool bigtk_vdev_support;
|
||||||
struct sae_auth_retry sae_retry;
|
struct sae_auth_retry sae_retry;
|
||||||
|
bool roam_reason_better_ap;
|
||||||
|
uint32_t hb_failure_rssi;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -115,6 +115,41 @@ QDF_STATUS mlme_set_bigtk_support(struct wlan_objmgr_vdev *vdev, bool val);
|
|||||||
|
|
||||||
bool mlme_get_bigtk_support(struct wlan_objmgr_vdev *vdev);
|
bool mlme_get_bigtk_support(struct wlan_objmgr_vdev *vdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mlme_set_roam_reason_better_ap() - set roam reason better AP
|
||||||
|
* @vdev: vdev pointer
|
||||||
|
* @val: value to be set
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
mlme_set_roam_reason_better_ap(struct wlan_objmgr_vdev *vdev, bool val);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mlme_get_roam_reason_better_ap() - get roam reason better AP
|
||||||
|
* @vdev: vdev pointer
|
||||||
|
*
|
||||||
|
* Return: bool
|
||||||
|
*/
|
||||||
|
bool mlme_get_roam_reason_better_ap(struct wlan_objmgr_vdev *vdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mlme_set_hb_ap_rssi() - set hb ap RSSI
|
||||||
|
* @vdev: vdev pointer
|
||||||
|
* @val: value to be set
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS mlme_set_hb_ap_rssi(struct wlan_objmgr_vdev *vdev, uint32_t val);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mlme_get_hb_ap_rssi() - get HB AP RSSIc
|
||||||
|
* @vdev: vdev pointer
|
||||||
|
*
|
||||||
|
* Return: rssi value
|
||||||
|
*/
|
||||||
|
uint32_t mlme_get_hb_ap_rssi(struct wlan_objmgr_vdev *vdev);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mlme_set_connection_fail() - set connection failure flag
|
* mlme_set_connection_fail() - set connection failure flag
|
||||||
* @vdev: vdev pointer
|
* @vdev: vdev pointer
|
||||||
|
@@ -657,6 +657,65 @@ bool mlme_get_bigtk_support(struct wlan_objmgr_vdev *vdev)
|
|||||||
return mlme_priv->bigtk_vdev_support;
|
return mlme_priv->bigtk_vdev_support;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
mlme_set_roam_reason_better_ap(struct wlan_objmgr_vdev *vdev, bool val)
|
||||||
|
{
|
||||||
|
struct mlme_legacy_priv *mlme_priv;
|
||||||
|
|
||||||
|
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
|
||||||
|
if (!mlme_priv) {
|
||||||
|
mlme_legacy_err("vdev legacy private object is NULL");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
mlme_priv->roam_reason_better_ap = val;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool mlme_get_roam_reason_better_ap(struct wlan_objmgr_vdev *vdev)
|
||||||
|
{
|
||||||
|
struct mlme_legacy_priv *mlme_priv;
|
||||||
|
|
||||||
|
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
|
||||||
|
if (!mlme_priv) {
|
||||||
|
mlme_legacy_err("vdev legacy private object is NULL");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mlme_priv->roam_reason_better_ap;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
mlme_set_hb_ap_rssi(struct wlan_objmgr_vdev *vdev, uint32_t val)
|
||||||
|
{
|
||||||
|
struct mlme_legacy_priv *mlme_priv;
|
||||||
|
|
||||||
|
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
|
||||||
|
if (!mlme_priv) {
|
||||||
|
mlme_legacy_err("vdev legacy private object is NULL");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
mlme_priv->hb_failure_rssi = val;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t mlme_get_hb_ap_rssi(struct wlan_objmgr_vdev *vdev)
|
||||||
|
{
|
||||||
|
struct mlme_legacy_priv *mlme_priv;
|
||||||
|
|
||||||
|
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
|
||||||
|
if (!mlme_priv) {
|
||||||
|
mlme_legacy_err("vdev legacy private object is NULL");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mlme_priv->hb_failure_rssi;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QDF_STATUS mlme_set_connection_fail(struct wlan_objmgr_vdev *vdev, bool val)
|
QDF_STATUS mlme_set_connection_fail(struct wlan_objmgr_vdev *vdev, bool val)
|
||||||
{
|
{
|
||||||
struct mlme_legacy_priv *mlme_priv;
|
struct mlme_legacy_priv *mlme_priv;
|
||||||
|
@@ -565,6 +565,26 @@ target_if_cm_roam_scan_filter(wmi_unified_t wmi_handle, uint8_t command,
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* target_if_cm_roam_scan_btm_offload() - send roam scan btm offload to firmware
|
||||||
|
* @wmi_handle: wmi handle
|
||||||
|
* @req: roam scan btm offload parameters
|
||||||
|
*
|
||||||
|
* Send WMI_ROAM_BTM_CONFIG_CMDID parameters to firmware
|
||||||
|
*
|
||||||
|
* Return: QDF status
|
||||||
|
*/
|
||||||
|
static QDF_STATUS
|
||||||
|
target_if_cm_roam_scan_btm_offload(wmi_unified_t wmi_handle,
|
||||||
|
struct wlan_roam_btm_config *req)
|
||||||
|
{
|
||||||
|
target_if_debug("vdev %u btm_offload:%u btm_query_bitmask:%u btm_candidate_min_score:%d",
|
||||||
|
req->vdev_id, req->btm_offload_config,
|
||||||
|
req->btm_query_bitmask, req->btm_candidate_min_score);
|
||||||
|
|
||||||
|
return wmi_unified_send_btm_config(wmi_handle, req);
|
||||||
|
}
|
||||||
|
|
||||||
static uint32_t
|
static uint32_t
|
||||||
target_if_get_wmi_roam_offload_flag(uint32_t flag)
|
target_if_get_wmi_roam_offload_flag(uint32_t flag)
|
||||||
{
|
{
|
||||||
@@ -613,7 +633,7 @@ target_if_cm_roam_send_roam_init(struct wlan_objmgr_vdev *vdev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* target_if_cm_roam_send_roam_start() - Send roam start related commands
|
* target_if_cm_roam_send_start() - Send roam start related commands
|
||||||
* to wmi
|
* to wmi
|
||||||
* @vdev: vdev object
|
* @vdev: vdev object
|
||||||
* @req: roam start config parameters
|
* @req: roam start config parameters
|
||||||
@@ -623,7 +643,7 @@ target_if_cm_roam_send_roam_init(struct wlan_objmgr_vdev *vdev,
|
|||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
static QDF_STATUS
|
static QDF_STATUS
|
||||||
target_if_cm_roam_send_roam_start(struct wlan_objmgr_vdev *vdev,
|
target_if_cm_roam_send_start(struct wlan_objmgr_vdev *vdev,
|
||||||
struct wlan_roam_start_config *req)
|
struct wlan_roam_start_config *req)
|
||||||
{
|
{
|
||||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||||
@@ -678,11 +698,107 @@ target_if_cm_roam_send_roam_start(struct wlan_objmgr_vdev *vdev,
|
|||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
status = target_if_cm_roam_scan_btm_offload(wmi_handle,
|
||||||
|
&req->btm_config);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status)) {
|
||||||
|
target_if_err("Sending BTM config to fw failed");
|
||||||
|
}
|
||||||
|
|
||||||
/* add other wmi commands */
|
/* add other wmi commands */
|
||||||
end:
|
end:
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* target_if_cm_roam_send_stop() - Send roam stop related commands
|
||||||
|
* to wmi
|
||||||
|
* @vdev: vdev object
|
||||||
|
* @req: roam stop config parameters
|
||||||
|
*
|
||||||
|
* This function is used to Send roam start related commands to wmi
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static QDF_STATUS
|
||||||
|
target_if_cm_roam_send_stop(struct wlan_objmgr_vdev *vdev,
|
||||||
|
struct wlan_roam_stop_config *req)
|
||||||
|
{
|
||||||
|
wmi_unified_t wmi_handle;
|
||||||
|
|
||||||
|
wmi_handle = target_if_cm_roam_get_wmi_handle_from_vdev(vdev);
|
||||||
|
if (!wmi_handle)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* target_if_cm_roam_send_update_config() - Send roam update config related
|
||||||
|
* commands to wmi
|
||||||
|
* @vdev: vdev object
|
||||||
|
* @req: roam update config parameters
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static QDF_STATUS
|
||||||
|
target_if_cm_roam_send_update_config(struct wlan_objmgr_vdev *vdev,
|
||||||
|
struct wlan_roam_update_config *req)
|
||||||
|
{
|
||||||
|
wmi_unified_t wmi_handle;
|
||||||
|
|
||||||
|
wmi_handle = target_if_cm_roam_get_wmi_handle_from_vdev(vdev);
|
||||||
|
if (!wmi_handle)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* target_if_cm_roam_abort() - Send roam abort to wmi
|
||||||
|
* @vdev: vdev object
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static QDF_STATUS
|
||||||
|
target_if_cm_roam_abort(struct wlan_objmgr_vdev *vdev, uint8_t vdev_id)
|
||||||
|
{
|
||||||
|
wmi_unified_t wmi_handle;
|
||||||
|
|
||||||
|
wmi_handle = target_if_cm_roam_get_wmi_handle_from_vdev(vdev);
|
||||||
|
if (!wmi_handle)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
if (!target_if_is_vdev_valid(vdev_id)) {
|
||||||
|
target_if_err("Invalid vdev id:%d", vdev_id);
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
return wmi_unified_roam_scan_offload_cmd(wmi_handle,
|
||||||
|
WMI_ROAM_SCAN_STOP_CMD,
|
||||||
|
vdev_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* target_if_cm_roam_send_update_config() - Send roam update config related
|
||||||
|
* commands to wmi
|
||||||
|
* @vdev: vdev object
|
||||||
|
* @req: roam per config parameters
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static QDF_STATUS
|
||||||
|
target_if_cm_roam_per_config(struct wlan_objmgr_vdev *vdev,
|
||||||
|
struct wlan_per_roam_config_req *req)
|
||||||
|
{
|
||||||
|
wmi_unified_t wmi_handle;
|
||||||
|
|
||||||
|
wmi_handle = target_if_cm_roam_get_wmi_handle_from_vdev(vdev);
|
||||||
|
if (!wmi_handle)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
return wmi_unified_set_per_roam_config(wmi_handle, req);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* target_if_cm_roam_register_rso_req_ops() - Register rso req tx ops fucntions
|
* target_if_cm_roam_register_rso_req_ops() - Register rso req tx ops fucntions
|
||||||
* @tx_ops: tx ops
|
* @tx_ops: tx ops
|
||||||
@@ -695,7 +811,11 @@ static void
|
|||||||
target_if_cm_roam_register_rso_req_ops(struct wlan_cm_roam_tx_ops *tx_ops)
|
target_if_cm_roam_register_rso_req_ops(struct wlan_cm_roam_tx_ops *tx_ops)
|
||||||
{
|
{
|
||||||
tx_ops->send_roam_offload_init_req = target_if_cm_roam_send_roam_init;
|
tx_ops->send_roam_offload_init_req = target_if_cm_roam_send_roam_init;
|
||||||
tx_ops->send_roam_start_req = target_if_cm_roam_send_roam_start;
|
tx_ops->send_roam_start_req = target_if_cm_roam_send_start;
|
||||||
|
tx_ops->send_roam_stop_offload = target_if_cm_roam_send_stop;
|
||||||
|
tx_ops->send_roam_update_config = target_if_cm_roam_send_update_config;
|
||||||
|
tx_ops->send_roam_abort = target_if_cm_roam_abort;
|
||||||
|
tx_ops->send_roam_per_config = target_if_cm_roam_per_config;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static void
|
static void
|
||||||
|
@@ -22,12 +22,14 @@
|
|||||||
* Implementation for the common roaming offload api interfaces.
|
* Implementation for the common roaming offload api interfaces.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "wlan_mlme_main.h"
|
||||||
#include "wlan_cm_roam_offload.h"
|
#include "wlan_cm_roam_offload.h"
|
||||||
#include "wlan_cm_tgt_if_tx_api.h"
|
#include "wlan_cm_tgt_if_tx_api.h"
|
||||||
#include "wlan_cm_roam_api.h"
|
#include "wlan_cm_roam_api.h"
|
||||||
|
#include "wlan_mlme_vdev_mgr_interface.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_cm_roam_scan_bmiss_cnt() - set roam beacon miss count
|
* cm_roam_scan_bmiss_cnt() - set roam beacon miss count
|
||||||
* @psoc: psoc pointer
|
* @psoc: psoc pointer
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
* @params: roam beacon miss count parameters
|
* @params: roam beacon miss count parameters
|
||||||
@@ -37,8 +39,7 @@
|
|||||||
* Return: None
|
* Return: None
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
wlan_cm_roam_scan_bmiss_cnt(struct wlan_objmgr_psoc *psoc,
|
cm_roam_scan_bmiss_cnt(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||||
uint8_t vdev_id,
|
|
||||||
struct wlan_roam_beacon_miss_cnt *params)
|
struct wlan_roam_beacon_miss_cnt *params)
|
||||||
{
|
{
|
||||||
uint8_t beacon_miss_count;
|
uint8_t beacon_miss_count;
|
||||||
@@ -64,8 +65,7 @@ wlan_cm_roam_scan_bmiss_cnt(struct wlan_objmgr_psoc *psoc,
|
|||||||
* Return: None
|
* Return: None
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
wlan_cm_roam_reason_vsie(struct wlan_objmgr_psoc *psoc,
|
cm_roam_reason_vsie(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||||
uint8_t vdev_id,
|
|
||||||
struct wlan_roam_reason_vsie_enable *params)
|
struct wlan_roam_reason_vsie_enable *params)
|
||||||
{
|
{
|
||||||
uint8_t enable_roam_reason_vsie;
|
uint8_t enable_roam_reason_vsie;
|
||||||
@@ -87,8 +87,7 @@ wlan_cm_roam_reason_vsie(struct wlan_objmgr_psoc *psoc,
|
|||||||
* Return: None
|
* Return: None
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
wlan_cm_roam_triggers(struct wlan_objmgr_psoc *psoc,
|
cm_roam_triggers(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||||
uint8_t vdev_id,
|
|
||||||
struct wlan_roam_triggers *params)
|
struct wlan_roam_triggers *params)
|
||||||
{
|
{
|
||||||
params->vdev_id = vdev_id;
|
params->vdev_id = vdev_id;
|
||||||
@@ -98,16 +97,14 @@ wlan_cm_roam_triggers(struct wlan_objmgr_psoc *psoc,
|
|||||||
¶ms->vendor_btm_param);
|
¶ms->vendor_btm_param);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static void
|
static inline void
|
||||||
wlan_cm_roam_reason_vsie(struct wlan_objmgr_psoc *psoc,
|
cm_roam_reason_vsie(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||||
uint8_t vdev_id,
|
|
||||||
struct wlan_roam_reason_vsie_enable *params)
|
struct wlan_roam_reason_vsie_enable *params)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static inline void
|
||||||
wlan_cm_roam_triggers(struct wlan_objmgr_psoc *psoc,
|
cm_roam_triggers(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||||
uint8_t vdev_id,
|
|
||||||
struct wlan_roam_triggers *params)
|
struct wlan_roam_triggers *params)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -127,6 +124,19 @@ cm_roam_init_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id, bool enable)
|
|||||||
return wlan_cm_tgt_send_roam_offload_init(psoc, vdev_id, enable);
|
return wlan_cm_tgt_send_roam_offload_init(psoc, vdev_id, enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void cm_roam_set_roam_reason_better_ap(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id, bool set)
|
||||||
|
{
|
||||||
|
struct wlan_objmgr_vdev *vdev;
|
||||||
|
|
||||||
|
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
||||||
|
WLAN_MLME_NB_ID);
|
||||||
|
if (!vdev)
|
||||||
|
return;
|
||||||
|
mlme_set_roam_reason_better_ap(vdev, set);
|
||||||
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cm_roam_start_req() - roam start request handling
|
* cm_roam_start_req() - roam start request handling
|
||||||
* @psoc: psoc pointer
|
* @psoc: psoc pointer
|
||||||
@@ -136,8 +146,7 @@ cm_roam_init_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id, bool enable)
|
|||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
static QDF_STATUS
|
static QDF_STATUS
|
||||||
cm_roam_start_req(struct wlan_objmgr_psoc *psoc,
|
cm_roam_start_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||||
uint8_t vdev_id,
|
|
||||||
uint8_t reason)
|
uint8_t reason)
|
||||||
{
|
{
|
||||||
struct wlan_roam_start_config *start_req;
|
struct wlan_roam_start_config *start_req;
|
||||||
@@ -147,11 +156,11 @@ cm_roam_start_req(struct wlan_objmgr_psoc *psoc,
|
|||||||
if (!start_req)
|
if (!start_req)
|
||||||
return QDF_STATUS_E_NOMEM;
|
return QDF_STATUS_E_NOMEM;
|
||||||
|
|
||||||
|
cm_roam_set_roam_reason_better_ap(psoc, vdev_id, false);
|
||||||
/* fill from mlme directly */
|
/* fill from mlme directly */
|
||||||
wlan_cm_roam_scan_bmiss_cnt(psoc, vdev_id,
|
cm_roam_scan_bmiss_cnt(psoc, vdev_id, &start_req->beacon_miss_cnt);
|
||||||
&start_req->beacon_miss_cnt);
|
cm_roam_reason_vsie(psoc, vdev_id, &start_req->reason_vsie_enable);
|
||||||
wlan_cm_roam_reason_vsie(psoc, vdev_id, &start_req->reason_vsie_enable);
|
cm_roam_triggers(psoc, vdev_id, &start_req->roam_triggers);
|
||||||
wlan_cm_roam_triggers(psoc, vdev_id, &start_req->roam_triggers);
|
|
||||||
|
|
||||||
/* fill from legacy through this API */
|
/* fill from legacy through this API */
|
||||||
wlan_cm_roam_fill_start_req(psoc, vdev_id, start_req, reason);
|
wlan_cm_roam_fill_start_req(psoc, vdev_id, start_req, reason);
|
||||||
@@ -174,13 +183,201 @@ cm_roam_start_req(struct wlan_objmgr_psoc *psoc,
|
|||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
static QDF_STATUS
|
static QDF_STATUS
|
||||||
cm_roam_update_config_req(struct wlan_objmgr_psoc *psoc,
|
cm_roam_update_config_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||||
uint8_t vdev_id,
|
|
||||||
uint8_t reason)
|
uint8_t reason)
|
||||||
{
|
{
|
||||||
|
struct wlan_roam_update_config *update_req;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
cm_roam_set_roam_reason_better_ap(psoc, vdev_id, false);
|
||||||
|
|
||||||
|
update_req = qdf_mem_malloc(sizeof(*update_req));
|
||||||
|
if (!update_req)
|
||||||
|
return QDF_STATUS_E_NOMEM;
|
||||||
|
|
||||||
|
status = wlan_cm_tgt_send_roam_update_req(psoc, vdev_id, update_req);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
mlme_debug("fail to send update config");
|
||||||
|
|
||||||
|
qdf_mem_free(update_req);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cm_roam_restart_req() - roam restart req for LFR2
|
||||||
|
* @psoc: psoc pointer
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
* @reason: reason for changing roam state for the requested vdev id
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static QDF_STATUS
|
||||||
|
cm_roam_restart_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||||
|
uint8_t reason)
|
||||||
|
{
|
||||||
|
|
||||||
|
struct wlan_objmgr_vdev *vdev;
|
||||||
|
|
||||||
|
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
||||||
|
WLAN_MLME_NB_ID);
|
||||||
|
if (!vdev)
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
|
||||||
|
/* Rome offload engine does not stop after any scan.
|
||||||
|
* If this command is sent because all preauth attempts failed
|
||||||
|
* and WMI_ROAM_REASON_SUITABLE_AP event was received earlier,
|
||||||
|
* now it is time to call it heartbeat failure.
|
||||||
|
*/
|
||||||
|
if (reason == REASON_PREAUTH_FAILED_FOR_ALL
|
||||||
|
&& mlme_get_roam_reason_better_ap(vdev)) {
|
||||||
|
mlme_err("Sending heartbeat failure after preauth failures");
|
||||||
|
wlan_cm_send_beacon_miss(vdev_id, mlme_get_hb_ap_rssi(vdev));
|
||||||
|
mlme_set_roam_reason_better_ap(vdev, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cm_roam_abort_req() - roam scan abort req
|
||||||
|
* @psoc: psoc pointer
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
* @reason: reason for changing roam state for the requested vdev id
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static QDF_STATUS
|
||||||
|
cm_roam_abort_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||||
|
uint8_t reason)
|
||||||
|
{
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
status = wlan_cm_tgt_send_roam_abort_req(psoc, vdev_id);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
mlme_debug("fail to send abort start");
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cm_roam_stop_req() - roam stop request handling
|
||||||
|
* @psoc: psoc pointer
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
* @reason: reason for changing roam state for the requested vdev id
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static QDF_STATUS
|
||||||
|
cm_roam_stop_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||||
|
uint8_t reason)
|
||||||
|
{
|
||||||
|
struct wlan_roam_stop_config *stop_req;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
cm_roam_set_roam_reason_better_ap(psoc, vdev_id, false);
|
||||||
|
|
||||||
|
stop_req = qdf_mem_malloc(sizeof(*stop_req));
|
||||||
|
if (!stop_req)
|
||||||
|
return QDF_STATUS_E_NOMEM;
|
||||||
|
/* do the filling as csr_post_rso_stop */
|
||||||
|
|
||||||
|
status = wlan_cm_tgt_send_roam_stop_req(psoc, vdev_id, stop_req);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
mlme_debug("fail to send roam stop");
|
||||||
|
|
||||||
|
qdf_mem_free(stop_req);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cm_roam_fill_per_roam_request() - create PER roam offload config request
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static QDF_STATUS
|
||||||
|
cm_roam_fill_per_roam_request(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wlan_per_roam_config_req *req)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
||||||
|
if (!mlme_obj)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
req->per_config.enable = mlme_obj->cfg.lfr.per_roam_enable;
|
||||||
|
req->per_config.tx_high_rate_thresh =
|
||||||
|
mlme_obj->cfg.lfr.per_roam_config_high_rate_th;
|
||||||
|
req->per_config.rx_high_rate_thresh =
|
||||||
|
mlme_obj->cfg.lfr.per_roam_config_high_rate_th;
|
||||||
|
req->per_config.tx_low_rate_thresh =
|
||||||
|
mlme_obj->cfg.lfr.per_roam_config_low_rate_th;
|
||||||
|
req->per_config.rx_low_rate_thresh =
|
||||||
|
mlme_obj->cfg.lfr.per_roam_config_low_rate_th;
|
||||||
|
req->per_config.per_rest_time = mlme_obj->cfg.lfr.per_roam_rest_time;
|
||||||
|
req->per_config.tx_per_mon_time =
|
||||||
|
mlme_obj->cfg.lfr.per_roam_monitor_time;
|
||||||
|
req->per_config.rx_per_mon_time =
|
||||||
|
mlme_obj->cfg.lfr.per_roam_monitor_time;
|
||||||
|
req->per_config.tx_rate_thresh_percnt =
|
||||||
|
mlme_obj->cfg.lfr.per_roam_config_rate_th_percent;
|
||||||
|
req->per_config.rx_rate_thresh_percnt =
|
||||||
|
mlme_obj->cfg.lfr.per_roam_config_rate_th_percent;
|
||||||
|
req->per_config.min_candidate_rssi =
|
||||||
|
mlme_obj->cfg.lfr.per_roam_min_candidate_rssi;
|
||||||
|
|
||||||
|
mlme_debug("PER based roaming configuaration enable: %d vdev: %d high_rate_thresh: %d low_rate_thresh: %d rate_thresh_percnt: %d per_rest_time: %d monitor_time: %d min cand rssi: %d",
|
||||||
|
req->per_config.enable, req->vdev_id,
|
||||||
|
req->per_config.tx_high_rate_thresh,
|
||||||
|
req->per_config.tx_low_rate_thresh,
|
||||||
|
req->per_config.tx_rate_thresh_percnt,
|
||||||
|
req->per_config.per_rest_time,
|
||||||
|
req->per_config.tx_per_mon_time,
|
||||||
|
req->per_config.min_candidate_rssi);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cm_roam_offload_per_scan() - populates roam offload scan request and sends
|
||||||
|
* to fw
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static QDF_STATUS
|
||||||
|
cm_roam_offload_per_config(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
|
||||||
|
{
|
||||||
|
struct wlan_per_roam_config_req *req = NULL;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
req = qdf_mem_malloc(sizeof(*req));
|
||||||
|
if (!req)
|
||||||
|
return QDF_STATUS_E_NOMEM;
|
||||||
|
|
||||||
|
req->vdev_id = vdev_id;
|
||||||
|
status = cm_roam_fill_per_roam_request(psoc, req);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status)) {
|
||||||
|
qdf_mem_free(req);
|
||||||
|
mlme_debug("fail to fill per config");
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = wlan_cm_tgt_send_roam_per_config(psoc, vdev_id, req);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
mlme_debug("fail to send roam stop");
|
||||||
|
|
||||||
|
qdf_mem_free(req);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* similar to csr_roam_offload_scan, will be used from many legacy
|
* similar to csr_roam_offload_scan, will be used from many legacy
|
||||||
* process directly, generate a new function wlan_cm_roam_send_rso_cmd
|
* process directly, generate a new function wlan_cm_roam_send_rso_cmd
|
||||||
@@ -200,35 +397,28 @@ QDF_STATUS cm_roam_send_rso_cmd(struct wlan_objmgr_psoc *psoc,
|
|||||||
mlme_debug("ROAM: not allowed");
|
mlme_debug("ROAM: not allowed");
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Update PER config to FW. No need to update in case of stop command,
|
||||||
|
* FW takes care of stopping this internally
|
||||||
|
*/
|
||||||
|
if (rso_command != ROAM_SCAN_OFFLOAD_STOP)
|
||||||
|
cm_roam_offload_per_config(psoc, vdev_id);
|
||||||
|
|
||||||
if (rso_command == ROAM_SCAN_OFFLOAD_START)
|
if (rso_command == ROAM_SCAN_OFFLOAD_START)
|
||||||
status = cm_roam_start_req(psoc, vdev_id, reason);
|
status = cm_roam_start_req(psoc, vdev_id, reason);
|
||||||
else if (rso_command == ROAM_SCAN_OFFLOAD_UPDATE_CFG)
|
else if (rso_command == ROAM_SCAN_OFFLOAD_UPDATE_CFG)
|
||||||
status = cm_roam_update_config_req(psoc, vdev_id, reason);
|
status = cm_roam_update_config_req(psoc, vdev_id, reason);
|
||||||
// else if (rso_command == ROAM_SCAN_OFFLOAD_RESTART)
|
else if (rso_command == ROAM_SCAN_OFFLOAD_RESTART)
|
||||||
/* RESTART API */
|
status = cm_roam_restart_req(psoc, vdev_id, reason);
|
||||||
// else
|
else if (rso_command == ROAM_SCAN_OFFLOAD_ABORT_SCAN)
|
||||||
/* ABORT SCAN API */
|
status = cm_roam_abort_req(psoc, vdev_id, reason);
|
||||||
|
else
|
||||||
|
mlme_debug("ROAM: invalid RSO command %d", rso_command);
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* cm_roam_stop_req() - roam stop request handling
|
|
||||||
* @psoc: psoc pointer
|
|
||||||
* @vdev_id: vdev id
|
|
||||||
* @reason: reason for changing roam state for the requested vdev id
|
|
||||||
*
|
|
||||||
* Return: QDF_STATUS
|
|
||||||
*/
|
|
||||||
static QDF_STATUS
|
|
||||||
cm_roam_stop_req(struct wlan_objmgr_psoc *psoc,
|
|
||||||
uint8_t vdev_id,
|
|
||||||
uint8_t reason)
|
|
||||||
{
|
|
||||||
/* do the filling as csr_post_rso_stop */
|
|
||||||
return QDF_STATUS_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cm_roam_switch_to_rso_stop() - roam state handling for rso stop
|
* cm_roam_switch_to_rso_stop() - roam state handling for rso stop
|
||||||
* @pdev: pdev pointer
|
* @pdev: pdev pointer
|
||||||
|
@@ -78,6 +78,16 @@ wlan_cm_roam_fill_start_req(struct wlan_objmgr_psoc *psoc,
|
|||||||
uint8_t vdev_id,
|
uint8_t vdev_id,
|
||||||
struct wlan_roam_start_config *req,
|
struct wlan_roam_start_config *req,
|
||||||
uint8_t reason);
|
uint8_t reason);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_cm_send_beacon_miss() - initiate beacon miss
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
* @rssi: AP rssi
|
||||||
|
*
|
||||||
|
* Return: void
|
||||||
|
*/
|
||||||
|
void wlan_cm_send_beacon_miss(uint8_t vdev_id, int32_t rssi);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
static inline QDF_STATUS
|
static inline QDF_STATUS
|
||||||
wlan_cm_enable_roaming_on_connected_sta(struct wlan_objmgr_pdev *pdev,
|
wlan_cm_enable_roaming_on_connected_sta(struct wlan_objmgr_pdev *pdev,
|
||||||
@@ -88,21 +98,21 @@ wlan_cm_enable_roaming_on_connected_sta(struct wlan_objmgr_pdev *pdev,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cm_roam_acquire_lock - Wrapper for sme_acquire_global_lock.
|
* cm_roam_acquire_lock() - Wrapper for sme_acquire_global_lock.
|
||||||
*
|
*
|
||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
QDF_STATUS cm_roam_acquire_lock(void);
|
QDF_STATUS cm_roam_acquire_lock(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cm_roam_release_lock - Wrapper for sme_release_global_lock()
|
* cm_roam_release_lock() - Wrapper for sme_release_global_lock()
|
||||||
*
|
*
|
||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
QDF_STATUS cm_roam_release_lock(void);
|
QDF_STATUS cm_roam_release_lock(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cm_roam_get_requestor_string - RSO control requestor to string api
|
* cm_roam_get_requestor_string() - RSO control requestor to string api
|
||||||
* @requestor: Requestor of type enum wlan_cm_rso_control_requestor
|
* @requestor: Requestor of type enum wlan_cm_rso_control_requestor
|
||||||
*
|
*
|
||||||
* Return: Pointer to converted string
|
* Return: Pointer to converted string
|
||||||
@@ -111,7 +121,7 @@ char
|
|||||||
*cm_roam_get_requestor_string(enum wlan_cm_rso_control_requestor requestor);
|
*cm_roam_get_requestor_string(enum wlan_cm_rso_control_requestor requestor);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_cm_rso_init_deinit - Init or Deinit roaming module at firmware
|
* ucfg_cm_rso_init_deinit() - Init or Deinit roaming module at firmware
|
||||||
* @pdev: Pointer to pdev
|
* @pdev: Pointer to pdev
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
* @enable: true: Send RSO init and RSO enable
|
* @enable: true: Send RSO init and RSO enable
|
||||||
@@ -123,7 +133,7 @@ QDF_STATUS wlan_cm_rso_init_deinit(struct wlan_objmgr_pdev *pdev,
|
|||||||
uint8_t vdev_id, bool enable);
|
uint8_t vdev_id, bool enable);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_cm_disable_rso - Disable roam scan offload to firmware
|
* wlan_cm_disable_rso() - Disable roam scan offload to firmware
|
||||||
* @pdev: Pointer to pdev
|
* @pdev: Pointer to pdev
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
* @requestor: RSO disable requestor
|
* @requestor: RSO disable requestor
|
||||||
@@ -136,7 +146,7 @@ QDF_STATUS wlan_cm_disable_rso(struct wlan_objmgr_pdev *pdev, uint32_t vdev_id,
|
|||||||
uint8_t reason);
|
uint8_t reason);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_cm_enable_rso - Enable roam scan offload to firmware
|
* ucfg_cm_enable_rso() - Enable roam scan offload to firmware
|
||||||
* @pdev: Pointer to pdev
|
* @pdev: Pointer to pdev
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
* @requestor: RSO disable requestor
|
* @requestor: RSO disable requestor
|
||||||
@@ -212,7 +222,7 @@ wlan_cm_roam_extract_roam_initial_info(wmi_unified_t wmi, void *evt_buf,
|
|||||||
uint8_t idx);
|
uint8_t idx);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_cm_roam_activate_pcl_per_vdev - Set the PCL command to be sent per
|
* wlan_cm_roam_activate_pcl_per_vdev() - Set the PCL command to be sent per
|
||||||
* vdev instead of pdev.
|
* vdev instead of pdev.
|
||||||
* @psoc: PSOC pointer
|
* @psoc: PSOC pointer
|
||||||
* @vdev_id: VDEV id
|
* @vdev_id: VDEV id
|
||||||
@@ -232,8 +242,8 @@ void wlan_cm_roam_activate_pcl_per_vdev(struct wlan_objmgr_psoc *psoc,
|
|||||||
bool pcl_per_vdev);
|
bool pcl_per_vdev);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_cm_roam_is_pcl_per_vdev_active - API to know if the pcl command needs to be
|
* wlan_cm_roam_is_pcl_per_vdev_active() - API to know if the pcl command needs
|
||||||
* sent per vdev or not
|
* to be sent per vdev or not
|
||||||
* @psoc: PSOC pointer
|
* @psoc: PSOC pointer
|
||||||
* @vdev_id: VDEV id
|
* @vdev_id: VDEV id
|
||||||
*
|
*
|
||||||
@@ -243,7 +253,7 @@ bool wlan_cm_roam_is_pcl_per_vdev_active(struct wlan_objmgr_psoc *psoc,
|
|||||||
uint8_t vdev_id);
|
uint8_t vdev_id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_cm_dual_sta_is_freq_allowed - This API is used to check if the
|
* wlan_cm_dual_sta_is_freq_allowed() - This API is used to check if the
|
||||||
* provided frequency is allowed for the 2nd STA vdev for connection.
|
* provided frequency is allowed for the 2nd STA vdev for connection.
|
||||||
* @psoc: Pointer to PSOC object
|
* @psoc: Pointer to PSOC object
|
||||||
* @freq: Frequency in the given frequency list for the STA that is about to
|
* @freq: Frequency in the given frequency list for the STA that is about to
|
||||||
@@ -260,7 +270,7 @@ wlan_cm_dual_sta_is_freq_allowed(struct wlan_objmgr_psoc *psoc, uint32_t freq,
|
|||||||
enum QDF_OPMODE opmode);
|
enum QDF_OPMODE opmode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_cm_dual_sta_roam_update_connect_channels - Fill the allowed channels
|
* wlan_cm_dual_sta_roam_update_connect_channels() - Fill the allowed channels
|
||||||
* for connection of the 2nd STA based on the 1st STA connected band if dual
|
* for connection of the 2nd STA based on the 1st STA connected band if dual
|
||||||
* sta roaming is enabled.
|
* sta roaming is enabled.
|
||||||
* @psoc: Pointer to PSOC object
|
* @psoc: Pointer to PSOC object
|
||||||
@@ -272,7 +282,7 @@ void
|
|||||||
wlan_cm_dual_sta_roam_update_connect_channels(struct wlan_objmgr_psoc *psoc,
|
wlan_cm_dual_sta_roam_update_connect_channels(struct wlan_objmgr_psoc *psoc,
|
||||||
struct scan_filter *filter);
|
struct scan_filter *filter);
|
||||||
/**
|
/**
|
||||||
* wlan_cm_roam_set_vendor_btm_params - API to set vendor btm params
|
* wlan_cm_roam_set_vendor_btm_params() - API to set vendor btm params
|
||||||
* @psoc: PSOC pointer
|
* @psoc: PSOC pointer
|
||||||
* @vdev_id: VDEV id
|
* @vdev_id: VDEV id
|
||||||
* @param: vendor configured roam trigger param
|
* @param: vendor configured roam trigger param
|
||||||
@@ -285,7 +295,7 @@ wlan_cm_roam_set_vendor_btm_params(struct wlan_objmgr_psoc *psoc,
|
|||||||
struct wlan_cm_roam_vendor_btm_params
|
struct wlan_cm_roam_vendor_btm_params
|
||||||
*param);
|
*param);
|
||||||
/**
|
/**
|
||||||
* wlan_cm_roam_disable_vendor_btm - API to disable vendor btm by default
|
* wlan_cm_roam_disable_vendor_btm() - API to disable vendor btm by default
|
||||||
* reason
|
* reason
|
||||||
* @psoc: PSOC pointer
|
* @psoc: PSOC pointer
|
||||||
* @vdev_id: VDEV id
|
* @vdev_id: VDEV id
|
||||||
@@ -296,7 +306,7 @@ void
|
|||||||
wlan_cm_roam_disable_vendor_btm(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id);
|
wlan_cm_roam_disable_vendor_btm(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_cm_roam_get_vendor_btm_params - API to get vendor btm param
|
* wlan_cm_roam_get_vendor_btm_params() - API to get vendor btm param
|
||||||
* @psoc: PSOC pointer
|
* @psoc: PSOC pointer
|
||||||
* @vdev_id: VDEV id
|
* @vdev_id: VDEV id
|
||||||
* @param: vendor configured roam trigger param
|
* @param: vendor configured roam trigger param
|
||||||
|
@@ -418,6 +418,149 @@ struct wlan_roam_scan_filter_params {
|
|||||||
struct roam_scan_filter_params filter_params;
|
struct roam_scan_filter_params filter_params;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wlan_roam_btm_config - BSS Transition Management offload params
|
||||||
|
* @vdev_id: VDEV on which the parameters should be applied
|
||||||
|
* @btm_offload_config: BTM config
|
||||||
|
* @btm_solicited_timeout: Timeout value for waiting BTM request
|
||||||
|
* @btm_max_attempt_cnt: Maximum attempt for sending BTM query to ESS
|
||||||
|
* @btm_sticky_time: Stick time after roaming to new AP by BTM
|
||||||
|
* @disassoc_timer_threshold: threshold value till which the firmware can
|
||||||
|
* wait before triggering the roam scan after receiving the disassoc iminent
|
||||||
|
* @btm_query_bitmask: bitmask to btm query with candidate list
|
||||||
|
* @btm_candidate_min_score: Minimum score of the AP to consider it as a
|
||||||
|
* candidate if the roam trigger is BTM kickout.
|
||||||
|
*/
|
||||||
|
struct wlan_roam_btm_config {
|
||||||
|
uint8_t vdev_id;
|
||||||
|
uint32_t btm_offload_config;
|
||||||
|
uint32_t btm_solicited_timeout;
|
||||||
|
uint32_t btm_max_attempt_cnt;
|
||||||
|
uint32_t btm_sticky_time;
|
||||||
|
uint32_t disassoc_timer_threshold;
|
||||||
|
uint32_t btm_query_bitmask;
|
||||||
|
uint32_t btm_candidate_min_score;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wlan_roam_neighbor_report_params -neighbour report params
|
||||||
|
* @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 a 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
|
||||||
|
* @ssid: Current connect SSID info
|
||||||
|
*/
|
||||||
|
struct wlan_roam_neighbor_report_params {
|
||||||
|
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 wlan_ssid ssid;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wlan_roam_11k_offload_params - offload 11k features to FW
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
* @offload_11k_bitmask: bitmask to specify offloaded features
|
||||||
|
* B0: Neighbor Report Request offload
|
||||||
|
* B1-B31: Reserved
|
||||||
|
* @neighbor_report_params: neighbor report offload params
|
||||||
|
*/
|
||||||
|
struct wlan_roam_11k_offload_params {
|
||||||
|
uint32_t vdev_id;
|
||||||
|
uint32_t offload_11k_bitmask;
|
||||||
|
struct wlan_roam_neighbor_report_params neighbor_report_params;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wlan_roam_disconnect_params - Emergency deauth/disconnect roam params
|
||||||
|
* @vdev_id: VDEV on which the parameters should be applied
|
||||||
|
* @enable: Enable or disable disconnect roaming.
|
||||||
|
*/
|
||||||
|
struct wlan_roam_disconnect_params {
|
||||||
|
uint32_t vdev_id;
|
||||||
|
bool enable;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wlan_roam_idle_params - Idle roam trigger parameters
|
||||||
|
* @vdev_id: VDEV on which the parameters should be applied
|
||||||
|
* @enable: Enable/Disable Idle roaming
|
||||||
|
* @band: Connected AP band
|
||||||
|
* @conn_ap_rssi_delta: Rssi change of connected AP in dBm
|
||||||
|
* @conn_ap_min_rssi: If connected AP rssi is less than min rssi trigger roam
|
||||||
|
* @inactive_time: Connected AP idle time
|
||||||
|
* @data_pkt_count: Data packet count allowed during idle time
|
||||||
|
*/
|
||||||
|
struct wlan_roam_idle_params {
|
||||||
|
uint32_t vdev_id;
|
||||||
|
bool enable;
|
||||||
|
uint32_t band;
|
||||||
|
uint32_t conn_ap_rssi_delta;
|
||||||
|
int32_t conn_ap_min_rssi;
|
||||||
|
uint32_t inactive_time;
|
||||||
|
uint32_t data_pkt_count;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wlan_per_roam_config - per based roaming parameters
|
||||||
|
* @enable: if PER based roaming is enabled/disabled
|
||||||
|
* @tx_high_rate_thresh: high rate threshold at which PER based
|
||||||
|
* roam will stop in tx path
|
||||||
|
* @rx_high_rate_thresh: high rate threshold at which PER based
|
||||||
|
* roam will stop in rx path
|
||||||
|
* @tx_low_rate_thresh: rate below which traffic will be considered
|
||||||
|
* for PER based roaming in Tx path
|
||||||
|
* @rx_low_rate_thresh: rate below which traffic will be considered
|
||||||
|
* for PER based roaming in Tx path
|
||||||
|
* @tx_rate_thresh_percnt: % above which when traffic is below low_rate_thresh
|
||||||
|
* will be considered for PER based scan in tx path
|
||||||
|
* @rx_rate_thresh_percnt: % above which when traffic is below low_rate_thresh
|
||||||
|
* will be considered for PER based scan in rx path
|
||||||
|
* @per_rest_time: time for which PER based roam will wait once it
|
||||||
|
* issues a roam scan.
|
||||||
|
* @tx_per_mon_time: Minimum time required to be considered as valid scenario
|
||||||
|
* for PER based roam in tx path
|
||||||
|
* @rx_per_mon_time: Minimum time required to be considered as valid scenario
|
||||||
|
* for PER based roam in rx path
|
||||||
|
* @min_candidate_rssi: Minimum RSSI threshold for candidate AP to be used for
|
||||||
|
* PER based roaming
|
||||||
|
*/
|
||||||
|
struct wlan_per_roam_config {
|
||||||
|
uint32_t enable;
|
||||||
|
uint32_t tx_high_rate_thresh;
|
||||||
|
uint32_t rx_high_rate_thresh;
|
||||||
|
uint32_t tx_low_rate_thresh;
|
||||||
|
uint32_t rx_low_rate_thresh;
|
||||||
|
uint32_t tx_rate_thresh_percnt;
|
||||||
|
uint32_t rx_rate_thresh_percnt;
|
||||||
|
uint32_t per_rest_time;
|
||||||
|
uint32_t tx_per_mon_time;
|
||||||
|
uint32_t rx_per_mon_time;
|
||||||
|
uint32_t min_candidate_rssi;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wlan_per_roam_config_req: PER based roaming config request
|
||||||
|
* @vdev_id: vdev id on which config needs to be set
|
||||||
|
* @per_config: PER config
|
||||||
|
*/
|
||||||
|
struct wlan_per_roam_config_req {
|
||||||
|
uint8_t vdev_id;
|
||||||
|
struct wlan_per_roam_config per_config;
|
||||||
|
};
|
||||||
|
|
||||||
#ifdef ROAM_OFFLOAD_V1
|
#ifdef ROAM_OFFLOAD_V1
|
||||||
#define NOISE_FLOOR_DBM_DEFAULT (-96)
|
#define NOISE_FLOOR_DBM_DEFAULT (-96)
|
||||||
#define RSSI_MIN_VALUE (-128)
|
#define RSSI_MIN_VALUE (-128)
|
||||||
@@ -543,6 +686,10 @@ struct wlan_roam_scan_period_params {
|
|||||||
* @scan_period_params: roam scan period parameters
|
* @scan_period_params: roam scan period parameters
|
||||||
* @profile_params: ap profile parameters
|
* @profile_params: ap profile parameters
|
||||||
* @scan_filter_params: roam scan filter parameters
|
* @scan_filter_params: roam scan filter parameters
|
||||||
|
* @btm_config: btm configuration
|
||||||
|
* @roam_11k_params: 11k params
|
||||||
|
* @disconnect_params: disconnect params
|
||||||
|
* @idle_params: idle params
|
||||||
*/
|
*/
|
||||||
struct wlan_roam_start_config {
|
struct wlan_roam_start_config {
|
||||||
struct wlan_roam_offload_scan_rssi_params rssi_params;
|
struct wlan_roam_offload_scan_rssi_params rssi_params;
|
||||||
@@ -552,9 +699,53 @@ struct wlan_roam_start_config {
|
|||||||
struct wlan_roam_scan_period_params scan_period_params;
|
struct wlan_roam_scan_period_params scan_period_params;
|
||||||
struct ap_profile_params profile_params;
|
struct ap_profile_params profile_params;
|
||||||
struct wlan_roam_scan_filter_params scan_filter_params;
|
struct wlan_roam_scan_filter_params scan_filter_params;
|
||||||
|
struct wlan_roam_btm_config btm_config;
|
||||||
|
struct wlan_roam_11k_offload_params roam_11k_params;
|
||||||
|
struct wlan_roam_disconnect_params disconnect_params;
|
||||||
|
struct wlan_roam_idle_params idle_params;
|
||||||
/* other wmi cmd structures */
|
/* other wmi cmd structures */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wlan_roam_stop_config - structure containing parameters for
|
||||||
|
* roam stop
|
||||||
|
* @roam_11k_params: 11k params
|
||||||
|
* @btm_config: btm configuration
|
||||||
|
* @scan_filter_params: roam scan filter parameters
|
||||||
|
* @disconnect_params: disconnect params
|
||||||
|
* @idle_params: idle params
|
||||||
|
* @roam_triggers: roam triggers parameters
|
||||||
|
* @rssi_params: roam scan rssi threshold parameters
|
||||||
|
*/
|
||||||
|
struct wlan_roam_stop_config {
|
||||||
|
struct wlan_roam_11k_offload_params roam_11k_params;
|
||||||
|
struct wlan_roam_btm_config btm_config;
|
||||||
|
struct wlan_roam_scan_filter_params scan_filter_params;
|
||||||
|
struct wlan_roam_disconnect_params disconnect_params;
|
||||||
|
struct wlan_roam_idle_params idle_params;
|
||||||
|
struct wlan_roam_triggers roam_triggers;
|
||||||
|
struct wlan_roam_offload_scan_rssi_params rssi_params;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wlan_roam_update_config - structure containing parameters for
|
||||||
|
* roam update config
|
||||||
|
* @beacon_miss_cnt: roam beacon miss count parameters
|
||||||
|
* @scan_filter_params: roam scan filter parameters
|
||||||
|
* @scan_period_params: roam scan period parameters
|
||||||
|
* @rssi_params: roam scan rssi threshold parameters
|
||||||
|
* @disconnect_params: disconnect params
|
||||||
|
* @idle_params: idle params
|
||||||
|
*/
|
||||||
|
struct wlan_roam_update_config {
|
||||||
|
struct wlan_roam_beacon_miss_cnt beacon_miss_cnt;
|
||||||
|
struct wlan_roam_scan_filter_params scan_filter_params;
|
||||||
|
struct wlan_roam_scan_period_params scan_period_params;
|
||||||
|
struct wlan_roam_offload_scan_rssi_params rssi_params;
|
||||||
|
struct wlan_roam_disconnect_params disconnect_params;
|
||||||
|
struct wlan_roam_idle_params idle_params;
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
#if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
||||||
@@ -658,6 +849,7 @@ struct set_pcl_req {
|
|||||||
* module initialize request
|
* module initialize request
|
||||||
* @send_roam_start_req: TX ops function pointer to send roam start related
|
* @send_roam_start_req: TX ops function pointer to send roam start related
|
||||||
* commands
|
* commands
|
||||||
|
* @send_roam_abort: send roam abort
|
||||||
*/
|
*/
|
||||||
struct wlan_cm_roam_tx_ops {
|
struct wlan_cm_roam_tx_ops {
|
||||||
QDF_STATUS (*send_vdev_set_pcl_cmd) (struct wlan_objmgr_vdev *vdev,
|
QDF_STATUS (*send_vdev_set_pcl_cmd) (struct wlan_objmgr_vdev *vdev,
|
||||||
@@ -669,6 +861,14 @@ struct wlan_cm_roam_tx_ops {
|
|||||||
|
|
||||||
QDF_STATUS (*send_roam_start_req)(struct wlan_objmgr_vdev *vdev,
|
QDF_STATUS (*send_roam_start_req)(struct wlan_objmgr_vdev *vdev,
|
||||||
struct wlan_roam_start_config *req);
|
struct wlan_roam_start_config *req);
|
||||||
|
QDF_STATUS (*send_roam_stop_offload)(struct wlan_objmgr_vdev *vdev,
|
||||||
|
struct wlan_roam_stop_config *req);
|
||||||
|
QDF_STATUS (*send_roam_update_config)(struct wlan_objmgr_vdev *vdev,
|
||||||
|
struct wlan_roam_update_config *req);
|
||||||
|
QDF_STATUS (*send_roam_abort)(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint8_t vdev_id);
|
||||||
|
QDF_STATUS (*send_roam_per_config)(struct wlan_objmgr_vdev *vdev,
|
||||||
|
struct wlan_per_roam_config_req *req);
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -28,7 +28,7 @@
|
|||||||
#ifdef ROAM_OFFLOAD_V1
|
#ifdef ROAM_OFFLOAD_V1
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_user_space_enable_disable_rso - Enable/Disable Roam Scan offload
|
* ucfg_user_space_enable_disable_rso() - Enable/Disable Roam Scan offload
|
||||||
* to firmware.
|
* to firmware.
|
||||||
* @pdev: Pointer to pdev
|
* @pdev: Pointer to pdev
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
@@ -55,7 +55,7 @@ QDF_STATUS ucfg_cm_abort_roam_scan(struct wlan_objmgr_pdev *pdev,
|
|||||||
uint8_t vdev_id);
|
uint8_t vdev_id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_cm_rso_init_deinit - Init or Deinit roaming module at firmware
|
* ucfg_cm_rso_init_deinit() - Init or Deinit roaming module at firmware
|
||||||
* @pdev: Pointer to pdev
|
* @pdev: Pointer to pdev
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
* @enable: true: Send RSO init and RSO enable
|
* @enable: true: Send RSO init and RSO enable
|
||||||
@@ -71,7 +71,7 @@ ucfg_cm_rso_init_deinit(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_cm_disable_rso - Disable roam scan offload to firmware
|
* ucfg_cm_disable_rso() - Disable roam scan offload to firmware
|
||||||
* @pdev: Pointer to pdev
|
* @pdev: Pointer to pdev
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
* @requestor: RSO disable requestor
|
* @requestor: RSO disable requestor
|
||||||
@@ -88,7 +88,7 @@ QDF_STATUS ucfg_cm_disable_rso(struct wlan_objmgr_pdev *pdev, uint32_t vdev_id,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_cm_enable_rso - Enable roam scan offload to firmware
|
* ucfg_cm_enable_rso() - Enable roam scan offload to firmware
|
||||||
* @pdev: Pointer to pdev
|
* @pdev: Pointer to pdev
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
* @requestor: RSO disable requestor
|
* @requestor: RSO disable requestor
|
||||||
|
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||||
/**
|
/**
|
||||||
* wlan_cm_roam_send_set_vdev_pcl - Send vdev set pcl command to firmware
|
* wlan_cm_roam_send_set_vdev_pcl() - Send vdev set pcl command to firmware
|
||||||
* @psoc: PSOC pointer
|
* @psoc: PSOC pointer
|
||||||
* @pcl_req: Set pcl request structure pointer
|
* @pcl_req: Set pcl request structure pointer
|
||||||
*
|
*
|
||||||
@@ -51,8 +51,8 @@ wlan_cm_roam_send_set_vdev_pcl(struct wlan_objmgr_psoc *psoc,
|
|||||||
#ifdef ROAM_OFFLOAD_V1
|
#ifdef ROAM_OFFLOAD_V1
|
||||||
#if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
#if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
||||||
/**
|
/**
|
||||||
* wlan_cm_tgt_send_roam_offload_init - Send WMI_VDEV_PARAM_ROAM_FW_OFFLOAD to
|
* wlan_cm_tgt_send_roam_offload_init() - Send WMI_VDEV_PARAM_ROAM_FW_OFFLOAD
|
||||||
* init/deinit roaming module at firmware
|
* to init/deinit roaming module at firmware
|
||||||
* @psoc: PSOC pointer
|
* @psoc: PSOC pointer
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
* @is_init: true if roam module is to be initialized else false for deinit
|
* @is_init: true if roam module is to be initialized else false for deinit
|
||||||
@@ -63,7 +63,7 @@ QDF_STATUS wlan_cm_tgt_send_roam_offload_init(struct wlan_objmgr_psoc *psoc,
|
|||||||
uint8_t vdev_id, bool is_init);
|
uint8_t vdev_id, bool is_init);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_cm_tgt_send_roam_start_req - Send roam start command to firmware
|
* wlan_cm_tgt_send_roam_start_req() - Send roam start command to firmware
|
||||||
* @psoc: psoc pointer
|
* @psoc: psoc pointer
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
* @req: roam start config parameter
|
* @req: roam start config parameter
|
||||||
@@ -73,6 +73,52 @@ QDF_STATUS wlan_cm_tgt_send_roam_offload_init(struct wlan_objmgr_psoc *psoc,
|
|||||||
QDF_STATUS wlan_cm_tgt_send_roam_start_req(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS wlan_cm_tgt_send_roam_start_req(struct wlan_objmgr_psoc *psoc,
|
||||||
uint8_t vdev_id,
|
uint8_t vdev_id,
|
||||||
struct wlan_roam_start_config *req);
|
struct wlan_roam_start_config *req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_cm_tgt_send_roam_stop_req() - Send roam stop command to firmware
|
||||||
|
* @psoc: psoc pointer
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
* @req: roam stop config parameter
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_cm_tgt_send_roam_stop_req(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id,
|
||||||
|
struct wlan_roam_stop_config *req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_cm_tgt_send_roam_start_req() - Send roam update command to firmware
|
||||||
|
* @psoc: psoc pointer
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
* @req: roam update config parameter
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_cm_tgt_send_roam_update_req(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id,
|
||||||
|
struct wlan_roam_update_config *req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_cm_tgt_send_roam_abort_req() - Send roam abort command to firmware
|
||||||
|
* @psoc: psoc pointer
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_cm_tgt_send_roam_abort_req(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_cm_tgt_send_roam_per_config() - Send roam per config command to FW
|
||||||
|
* @psoc: psoc pointer
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_cm_tgt_send_roam_per_config(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id,
|
||||||
|
struct wlan_per_roam_config_req *req);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif /* CM_TGT_IF_TX_API_H__ */
|
#endif /* CM_TGT_IF_TX_API_H__ */
|
||||||
|
@@ -92,7 +92,7 @@ QDF_STATUS ucfg_cm_abort_roam_scan(struct wlan_objmgr_pdev *pdev,
|
|||||||
if (QDF_IS_STATUS_ERROR(status))
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
status = cm_roam_state_change(pdev, vdev_id,
|
status = cm_roam_send_rso_cmd(psoc, vdev_id,
|
||||||
ROAM_SCAN_OFFLOAD_ABORT_SCAN,
|
ROAM_SCAN_OFFLOAD_ABORT_SCAN,
|
||||||
REASON_ROAM_ABORT_ROAM_SCAN);
|
REASON_ROAM_ABORT_ROAM_SCAN);
|
||||||
cm_roam_release_lock();
|
cm_roam_release_lock();
|
||||||
|
@@ -169,6 +169,8 @@ QDF_STATUS wlan_cm_tgt_send_roam_offload_init(struct wlan_objmgr_psoc *psoc,
|
|||||||
init_msg.roam_offload_flag |=
|
init_msg.roam_offload_flag |=
|
||||||
WLAN_ROAM_BMISS_FINAL_SCAN_TYPE;
|
WLAN_ROAM_BMISS_FINAL_SCAN_TYPE;
|
||||||
}
|
}
|
||||||
|
mlme_debug("vdev_id:%d, is_init:%d, flag:%d", vdev_id, is_init,
|
||||||
|
init_msg.roam_offload_flag);
|
||||||
|
|
||||||
status = roam_tx_ops.send_roam_offload_init_req(vdev, &init_msg);
|
status = roam_tx_ops.send_roam_offload_init_req(vdev, &init_msg);
|
||||||
if (QDF_IS_STATUS_ERROR(status))
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
@@ -194,17 +196,138 @@ QDF_STATUS wlan_cm_tgt_send_roam_start_req(struct wlan_objmgr_psoc *psoc,
|
|||||||
|
|
||||||
roam_tx_ops = GET_CM_ROAM_TX_OPS_FROM_VDEV(vdev);
|
roam_tx_ops = GET_CM_ROAM_TX_OPS_FROM_VDEV(vdev);
|
||||||
if (!roam_tx_ops.send_roam_start_req) {
|
if (!roam_tx_ops.send_roam_start_req) {
|
||||||
mlme_err("CM_RSO: vdev%d send_roam_start_req is NULL", vdev_id);
|
mlme_err("CM_RSO: vdev %d send_roam_start_req is NULL",
|
||||||
|
vdev_id);
|
||||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
return QDF_STATUS_E_INVAL;
|
return QDF_STATUS_E_INVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = roam_tx_ops.send_roam_start_req(vdev, req);
|
status = roam_tx_ops.send_roam_start_req(vdev, req);
|
||||||
if (QDF_IS_STATUS_ERROR(status))
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
mlme_debug("CM_RSO: vdev%d fail to send roam start", vdev_id);
|
mlme_debug("CM_RSO: vdev %d fail to send roam start", vdev_id);
|
||||||
|
|
||||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS wlan_cm_tgt_send_roam_stop_req(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id,
|
||||||
|
struct wlan_roam_stop_config *req)
|
||||||
|
{
|
||||||
|
QDF_STATUS status;
|
||||||
|
struct wlan_cm_roam_tx_ops roam_tx_ops;
|
||||||
|
struct wlan_objmgr_vdev *vdev;
|
||||||
|
|
||||||
|
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
||||||
|
WLAN_MLME_NB_ID);
|
||||||
|
if (!vdev)
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
|
||||||
|
roam_tx_ops = GET_CM_ROAM_TX_OPS_FROM_VDEV(vdev);
|
||||||
|
if (!roam_tx_ops.send_roam_stop_offload) {
|
||||||
|
mlme_err("CM_RSO: vdev %d send_roam_stop_offload is NULL",
|
||||||
|
vdev_id);
|
||||||
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = roam_tx_ops.send_roam_stop_offload(vdev, req);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
mlme_debug("CM_RSO: vdev %d fail to send roam stop", vdev_id);
|
||||||
|
|
||||||
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS wlan_cm_tgt_send_roam_update_req(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id,
|
||||||
|
struct wlan_roam_update_config *req)
|
||||||
|
{
|
||||||
|
QDF_STATUS status;
|
||||||
|
struct wlan_cm_roam_tx_ops roam_tx_ops;
|
||||||
|
struct wlan_objmgr_vdev *vdev;
|
||||||
|
|
||||||
|
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
||||||
|
WLAN_MLME_NB_ID);
|
||||||
|
if (!vdev)
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
|
||||||
|
roam_tx_ops = GET_CM_ROAM_TX_OPS_FROM_VDEV(vdev);
|
||||||
|
if (!roam_tx_ops.send_roam_update_config) {
|
||||||
|
mlme_err("CM_RSO: vdev %d send_roam_update_config is NULL",
|
||||||
|
vdev_id);
|
||||||
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = roam_tx_ops.send_roam_update_config(vdev, req);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
mlme_debug("CM_RSO: vdev %d fail to send roam update", vdev_id);
|
||||||
|
|
||||||
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS wlan_cm_tgt_send_roam_abort_req(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id)
|
||||||
|
{
|
||||||
|
QDF_STATUS status;
|
||||||
|
struct wlan_cm_roam_tx_ops roam_tx_ops;
|
||||||
|
struct wlan_objmgr_vdev *vdev;
|
||||||
|
|
||||||
|
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
||||||
|
WLAN_MLME_NB_ID);
|
||||||
|
if (!vdev)
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
|
||||||
|
roam_tx_ops = GET_CM_ROAM_TX_OPS_FROM_VDEV(vdev);
|
||||||
|
if (!roam_tx_ops.send_roam_abort) {
|
||||||
|
mlme_err("CM_RSO: vdev %d send_roam_abort is NULL", vdev_id);
|
||||||
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = roam_tx_ops.send_roam_abort(vdev, vdev_id);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
mlme_debug("CM_RSO: vdev %d fail to send roam abort", vdev_id);
|
||||||
|
|
||||||
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS wlan_cm_tgt_send_roam_per_config(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id,
|
||||||
|
struct wlan_per_roam_config_req *req)
|
||||||
|
{
|
||||||
|
QDF_STATUS status;
|
||||||
|
struct wlan_cm_roam_tx_ops roam_tx_ops;
|
||||||
|
struct wlan_objmgr_vdev *vdev;
|
||||||
|
|
||||||
|
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
||||||
|
WLAN_MLME_NB_ID);
|
||||||
|
if (!vdev)
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
|
||||||
|
roam_tx_ops = GET_CM_ROAM_TX_OPS_FROM_VDEV(vdev);
|
||||||
|
if (!roam_tx_ops.send_roam_per_config) {
|
||||||
|
mlme_err("CM_RSO: vdev %d send_roam_per_config is NULL",
|
||||||
|
vdev_id);
|
||||||
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = roam_tx_ops.send_roam_per_config(vdev, req);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
mlme_debug("CM_RSO: vdev %d fail to send per config", vdev_id);
|
||||||
|
|
||||||
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@@ -225,24 +225,24 @@ QDF_STATUS wmi_unified_set_roam_triggers(wmi_unified_t wmi_handle,
|
|||||||
* wmi_unified_send_disconnect_roam_params() - Send disconnect roam trigger
|
* wmi_unified_send_disconnect_roam_params() - Send disconnect roam trigger
|
||||||
* parameters to firmware
|
* parameters to firmware
|
||||||
* @wmi_hdl: wmi handle
|
* @wmi_hdl: wmi handle
|
||||||
* @params: pointer to wmi_disconnect_roam_params
|
* @params: pointer to wlan_roam_disconnect_params
|
||||||
*
|
*
|
||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wmi_unified_send_disconnect_roam_params(wmi_unified_t wmi_handle,
|
wmi_unified_send_disconnect_roam_params(wmi_unified_t wmi_handle,
|
||||||
struct wmi_disconnect_roam_params *req);
|
struct wlan_roam_disconnect_params *req);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wmi_unified_send_idle_roam_params() - Send idle roam trigger params to fw
|
* wmi_unified_send_idle_roam_params() - Send idle roam trigger params to fw
|
||||||
* @wmi_hdl: wmi handle
|
* @wmi_hdl: wmi handle
|
||||||
* @params: pointer to wmi_idle_roam_params
|
* @params: pointer to wlan_roam_idle_params
|
||||||
*
|
*
|
||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wmi_unified_send_idle_roam_params(wmi_unified_t wmi_handle,
|
wmi_unified_send_idle_roam_params(wmi_unified_t wmi_handle,
|
||||||
struct wmi_idle_roam_params *req);
|
struct wlan_roam_idle_params *req);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wmi_unified_send_roam_preauth_status() - Send roam preauthentication status
|
* wmi_unified_send_roam_preauth_status() - Send roam preauthentication status
|
||||||
@@ -359,7 +359,7 @@ wmi_unified_roam_scan_offload_rssi_change_cmd(wmi_unified_t wmi_handle,
|
|||||||
*/
|
*/
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wmi_unified_set_per_roam_config(wmi_unified_t wmi_handle,
|
wmi_unified_set_per_roam_config(wmi_unified_t wmi_handle,
|
||||||
struct wmi_per_roam_config_req *req_buf);
|
struct wlan_per_roam_config_req *req_buf);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wmi_unified_send_limit_off_chan_cmd() - send wmi cmd of limit off channel
|
* wmi_unified_send_limit_off_chan_cmd() - send wmi cmd of limit off channel
|
||||||
@@ -388,12 +388,12 @@ QDF_STATUS wmi_unified_roam_send_hlp_cmd(wmi_unified_t wmi_handle,
|
|||||||
/**
|
/**
|
||||||
* wmi_unified_send_btm_config() - Send BTM config to fw
|
* wmi_unified_send_btm_config() - Send BTM config to fw
|
||||||
* @wmi_handle: wmi handle
|
* @wmi_handle: wmi handle
|
||||||
* @params: pointer to wmi_btm_config
|
* @params: pointer to wlan_roam_btm_config
|
||||||
*
|
*
|
||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
QDF_STATUS wmi_unified_send_btm_config(wmi_unified_t wmi_handle,
|
QDF_STATUS wmi_unified_send_btm_config(wmi_unified_t wmi_handle,
|
||||||
struct wmi_btm_config *params);
|
struct wlan_roam_btm_config *params);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wmi_unified_send_bss_load_config() - Send bss load trigger params to fw
|
* wmi_unified_send_bss_load_config() - Send bss load trigger params to fw
|
||||||
@@ -414,8 +414,9 @@ QDF_STATUS wmi_unified_send_bss_load_config(wmi_unified_t wmi_handle,
|
|||||||
*
|
*
|
||||||
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
|
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
|
||||||
*/
|
*/
|
||||||
QDF_STATUS wmi_unified_offload_11k_cmd(wmi_unified_t wmi_handle,
|
QDF_STATUS
|
||||||
struct wmi_11k_offload_params *params);
|
wmi_unified_offload_11k_cmd(wmi_unified_t wmi_handle,
|
||||||
|
struct wlan_roam_11k_offload_params *params);
|
||||||
/**
|
/**
|
||||||
* wmi_unified_invoke_neighbor_report_cmd() - send invoke neighbor report cmd
|
* wmi_unified_invoke_neighbor_report_cmd() - send invoke neighbor report cmd
|
||||||
* @wmi_handle: wmi handle
|
* @wmi_handle: wmi handle
|
||||||
|
@@ -234,54 +234,6 @@ struct wmi_roam_invoke_cmd {
|
|||||||
bool forced_roaming;
|
bool forced_roaming;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* struct wmi_per_roam_config - per based roaming parameters
|
|
||||||
* @enable: if PER based roaming is enabled/disabled
|
|
||||||
* @tx_high_rate_thresh: high rate threshold at which PER based
|
|
||||||
* roam will stop in tx path
|
|
||||||
* @rx_high_rate_thresh: high rate threshold at which PER based
|
|
||||||
* roam will stop in rx path
|
|
||||||
* @tx_low_rate_thresh: rate below which traffic will be considered
|
|
||||||
* for PER based roaming in Tx path
|
|
||||||
* @rx_low_rate_thresh: rate below which traffic will be considered
|
|
||||||
* for PER based roaming in Tx path
|
|
||||||
* @tx_rate_thresh_percnt: % above which when traffic is below low_rate_thresh
|
|
||||||
* will be considered for PER based scan in tx path
|
|
||||||
* @rx_rate_thresh_percnt: % above which when traffic is below low_rate_thresh
|
|
||||||
* will be considered for PER based scan in rx path
|
|
||||||
* @per_rest_time: time for which PER based roam will wait once it
|
|
||||||
* issues a roam scan.
|
|
||||||
* @tx_per_mon_time: Minimum time required to be considered as valid scenario
|
|
||||||
* for PER based roam in tx path
|
|
||||||
* @rx_per_mon_time: Minimum time required to be considered as valid scenario
|
|
||||||
* for PER based roam in rx path
|
|
||||||
* @min_candidate_rssi: Minimum RSSI threshold for candidate AP to be used for
|
|
||||||
* PER based roaming
|
|
||||||
*/
|
|
||||||
struct wmi_per_roam_config {
|
|
||||||
uint32_t enable;
|
|
||||||
uint32_t tx_high_rate_thresh;
|
|
||||||
uint32_t rx_high_rate_thresh;
|
|
||||||
uint32_t tx_low_rate_thresh;
|
|
||||||
uint32_t rx_low_rate_thresh;
|
|
||||||
uint32_t tx_rate_thresh_percnt;
|
|
||||||
uint32_t rx_rate_thresh_percnt;
|
|
||||||
uint32_t per_rest_time;
|
|
||||||
uint32_t tx_per_mon_time;
|
|
||||||
uint32_t rx_per_mon_time;
|
|
||||||
uint32_t min_candidate_rssi;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* struct wmi_per_roam_config_req: PER based roaming config request
|
|
||||||
* @vdev_id: vdev id on which config needs to be set
|
|
||||||
* @per_config: PER config
|
|
||||||
*/
|
|
||||||
struct wmi_per_roam_config_req {
|
|
||||||
uint8_t vdev_id;
|
|
||||||
struct wmi_per_roam_config per_config;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wmi_limit_off_chan_param - limit off channel parameters
|
* struct wmi_limit_off_chan_param - limit off channel parameters
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
@@ -311,30 +263,6 @@ struct hlp_params {
|
|||||||
uint8_t hlp_ie[WMI_MAX_HLP_IE_LEN];
|
uint8_t hlp_ie[WMI_MAX_HLP_IE_LEN];
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* struct wmi_btm_config - BSS Transition Management offload params
|
|
||||||
* @vdev_id: VDEV on which the parameters should be applied
|
|
||||||
* @btm_offload_config: BTM config
|
|
||||||
* @btm_solicited_timeout: Timeout value for waiting BTM request
|
|
||||||
* @btm_max_attempt_cnt: Maximum attempt for sending BTM query to ESS
|
|
||||||
* @btm_sticky_time: Stick time after roaming to new AP by BTM
|
|
||||||
* @disassoc_timer_threshold: threshold value till which the firmware can
|
|
||||||
* wait before triggering the roam scan after receiving the disassoc iminent
|
|
||||||
* @btm_query_bitmask: bitmask to btm query with candidate list
|
|
||||||
* @btm_candidate_min_score: Minimum score of the AP to consider it as a
|
|
||||||
* candidate if the roam trigger is BTM kickout.
|
|
||||||
*/
|
|
||||||
struct wmi_btm_config {
|
|
||||||
uint8_t vdev_id;
|
|
||||||
uint32_t btm_offload_config;
|
|
||||||
uint32_t btm_solicited_timeout;
|
|
||||||
uint32_t btm_max_attempt_cnt;
|
|
||||||
uint32_t btm_sticky_time;
|
|
||||||
uint32_t disassoc_timer_threshold;
|
|
||||||
uint32_t btm_query_bitmask;
|
|
||||||
uint32_t btm_candidate_min_score;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wmi_bss_load_config - BSS load trigger parameters
|
* struct wmi_bss_load_config - BSS load trigger parameters
|
||||||
* @vdev_id: VDEV on which the parameters should be applied
|
* @vdev_id: VDEV on which the parameters should be applied
|
||||||
@@ -356,36 +284,6 @@ struct wmi_bss_load_config {
|
|||||||
int32_t rssi_threshold_24ghz;
|
int32_t rssi_threshold_24ghz;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* struct wmi_idle_roam_params - Idle roam trigger parameters
|
|
||||||
* @vdev_id: VDEV on which the parameters should be applied
|
|
||||||
* @enable: Enable/Disable Idle roaming
|
|
||||||
* @band: Connected AP band
|
|
||||||
* @conn_ap_rssi_delta: Rssi change of connected AP in dBm
|
|
||||||
* @conn_ap_min_rssi: If connected AP rssi is less than min rssi trigger roam
|
|
||||||
* @inactive_time: Connected AP idle time
|
|
||||||
* @data_pkt_count: Data packet count allowed during idle time
|
|
||||||
*/
|
|
||||||
struct wmi_idle_roam_params {
|
|
||||||
uint32_t vdev_id;
|
|
||||||
bool enable;
|
|
||||||
uint32_t band;
|
|
||||||
uint32_t conn_ap_rssi_delta;
|
|
||||||
int32_t conn_ap_min_rssi;
|
|
||||||
uint32_t inactive_time;
|
|
||||||
uint32_t data_pkt_count;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* struct wmi_disconnect_roam_params - Emergency deauth/disconnect roam params
|
|
||||||
* @vdev_id: VDEV on which the parameters should be applied
|
|
||||||
* @enable: Enable or disable disconnect roaming.
|
|
||||||
*/
|
|
||||||
struct wmi_disconnect_roam_params {
|
|
||||||
uint32_t vdev_id;
|
|
||||||
bool enable;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wmi_roam_auth_status_params - WPA3 roam auth response status
|
* struct wmi_roam_auth_status_params - WPA3 roam auth response status
|
||||||
* parameters
|
* parameters
|
||||||
@@ -404,45 +302,6 @@ struct wmi_roam_auth_status_params {
|
|||||||
uint8_t pmkid[PMKID_LEN];
|
uint8_t pmkid[PMKID_LEN];
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* @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 a 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
|
|
||||||
* @ssid: Current connect SSID info
|
|
||||||
*/
|
|
||||||
struct wmi_11k_offload_neighbor_report_params {
|
|
||||||
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 wlan_ssid ssid;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* struct wmi_11k_offload_params - offload 11k features to FW
|
|
||||||
* @vdev_id: vdev id
|
|
||||||
* @offload_11k_bitmask: bitmask to specify offloaded features
|
|
||||||
* B0: Neighbor Report Request offload
|
|
||||||
* B1-B31: Reserved
|
|
||||||
* @neighbor_report_params: neighbor report offload params
|
|
||||||
*/
|
|
||||||
struct wmi_11k_offload_params {
|
|
||||||
uint32_t vdev_id;
|
|
||||||
uint32_t offload_11k_bitmask;
|
|
||||||
struct wmi_11k_offload_neighbor_report_params neighbor_report_params;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wmi_invoke_neighbor_report_params - Invoke neighbor report request
|
* struct wmi_invoke_neighbor_report_params - Invoke neighbor report request
|
||||||
* from IW to FW
|
* from IW to FW
|
||||||
|
@@ -170,7 +170,7 @@ QDF_STATUS wmi_unified_roam_invoke_cmd(wmi_unified_t wmi_handle,
|
|||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wmi_unified_send_disconnect_roam_params(wmi_unified_t wmi_handle,
|
wmi_unified_send_disconnect_roam_params(wmi_unified_t wmi_handle,
|
||||||
struct wmi_disconnect_roam_params *req)
|
struct wlan_roam_disconnect_params *req)
|
||||||
{
|
{
|
||||||
if (wmi_handle->ops->send_disconnect_roam_params)
|
if (wmi_handle->ops->send_disconnect_roam_params)
|
||||||
return wmi_handle->ops->send_disconnect_roam_params(wmi_handle,
|
return wmi_handle->ops->send_disconnect_roam_params(wmi_handle,
|
||||||
@@ -180,7 +180,7 @@ wmi_unified_send_disconnect_roam_params(wmi_unified_t wmi_handle,
|
|||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wmi_unified_send_idle_roam_params(wmi_unified_t wmi_handle,
|
wmi_unified_send_idle_roam_params(wmi_unified_t wmi_handle,
|
||||||
struct wmi_idle_roam_params *req)
|
struct wlan_roam_idle_params *req)
|
||||||
{
|
{
|
||||||
if (wmi_handle->ops->send_idle_roam_params)
|
if (wmi_handle->ops->send_idle_roam_params)
|
||||||
return wmi_handle->ops->send_idle_roam_params(wmi_handle,
|
return wmi_handle->ops->send_idle_roam_params(wmi_handle,
|
||||||
@@ -276,7 +276,7 @@ wmi_unified_roam_scan_offload_rssi_change_cmd(wmi_unified_t wmi_handle,
|
|||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wmi_unified_set_per_roam_config(wmi_unified_t wmi_handle,
|
wmi_unified_set_per_roam_config(wmi_unified_t wmi_handle,
|
||||||
struct wmi_per_roam_config_req *req_buf)
|
struct wlan_per_roam_config_req *req_buf)
|
||||||
{
|
{
|
||||||
if (wmi_handle->ops->send_per_roam_config_cmd)
|
if (wmi_handle->ops->send_per_roam_config_cmd)
|
||||||
return wmi_handle->ops->send_per_roam_config_cmd(wmi_handle,
|
return wmi_handle->ops->send_per_roam_config_cmd(wmi_handle,
|
||||||
@@ -309,7 +309,7 @@ QDF_STATUS wmi_unified_roam_send_hlp_cmd(wmi_unified_t wmi_handle,
|
|||||||
#endif /* WLAN_FEATURE_FILS_SK */
|
#endif /* WLAN_FEATURE_FILS_SK */
|
||||||
|
|
||||||
QDF_STATUS wmi_unified_send_btm_config(wmi_unified_t wmi_handle,
|
QDF_STATUS wmi_unified_send_btm_config(wmi_unified_t wmi_handle,
|
||||||
struct wmi_btm_config *params)
|
struct wlan_roam_btm_config *params)
|
||||||
{
|
{
|
||||||
if (wmi_handle->ops->send_btm_config)
|
if (wmi_handle->ops->send_btm_config)
|
||||||
return wmi_handle->ops->send_btm_config(wmi_handle,
|
return wmi_handle->ops->send_btm_config(wmi_handle,
|
||||||
@@ -328,9 +328,9 @@ QDF_STATUS wmi_unified_send_bss_load_config(wmi_unified_t wmi_handle,
|
|||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
QDF_STATUS wmi_unified_offload_11k_cmd(wmi_unified_t wmi_handle,
|
wmi_unified_offload_11k_cmd(wmi_unified_t wmi_handle,
|
||||||
struct wmi_11k_offload_params *params)
|
struct wlan_roam_11k_offload_params *params)
|
||||||
{
|
{
|
||||||
if (wmi_handle->ops->send_offload_11k_cmd)
|
if (wmi_handle->ops->send_offload_11k_cmd)
|
||||||
return wmi_handle->ops->send_offload_11k_cmd(wmi_handle,
|
return wmi_handle->ops->send_offload_11k_cmd(wmi_handle,
|
||||||
|
@@ -2613,7 +2613,7 @@ error:
|
|||||||
*/
|
*/
|
||||||
static QDF_STATUS
|
static QDF_STATUS
|
||||||
send_per_roam_config_cmd_tlv(wmi_unified_t wmi_handle,
|
send_per_roam_config_cmd_tlv(wmi_unified_t wmi_handle,
|
||||||
struct wmi_per_roam_config_req *req_buf)
|
struct wlan_per_roam_config_req *req_buf)
|
||||||
{
|
{
|
||||||
wmi_buf_t buf = NULL;
|
wmi_buf_t buf = NULL;
|
||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
@@ -2785,12 +2785,12 @@ void wmi_fils_sk_attach_tlv(wmi_unified_t wmi_handle)
|
|||||||
/*
|
/*
|
||||||
* send_btm_config_cmd_tlv() - Send wmi cmd for BTM config
|
* send_btm_config_cmd_tlv() - Send wmi cmd for BTM config
|
||||||
* @wmi_handle: wmi handle
|
* @wmi_handle: wmi handle
|
||||||
* @params: pointer to wmi_btm_config
|
* @params: pointer to wlan_roam_btm_config
|
||||||
*
|
*
|
||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
static QDF_STATUS send_btm_config_cmd_tlv(wmi_unified_t wmi_handle,
|
static QDF_STATUS send_btm_config_cmd_tlv(wmi_unified_t wmi_handle,
|
||||||
struct wmi_btm_config *params)
|
struct wlan_roam_btm_config *params)
|
||||||
{
|
{
|
||||||
wmi_btm_config_fixed_param *cmd;
|
wmi_btm_config_fixed_param *cmd;
|
||||||
wmi_buf_t buf;
|
wmi_buf_t buf;
|
||||||
@@ -2883,7 +2883,7 @@ send_roam_bss_load_config_tlv(wmi_unified_t wmi_handle,
|
|||||||
/**
|
/**
|
||||||
* send_disconnect_roam_params_tlv() - send disconnect roam trigger parameters
|
* send_disconnect_roam_params_tlv() - send disconnect roam trigger parameters
|
||||||
* @wmi_handle: wmi handle
|
* @wmi_handle: wmi handle
|
||||||
* @disconnect_roam: pointer to wmi_disconnect_roam_params which carries the
|
* @disconnect_roam: pointer to wlan_roam_disconnect_params which carries the
|
||||||
* disconnect_roam_trigger parameters from CSR
|
* disconnect_roam_trigger parameters from CSR
|
||||||
*
|
*
|
||||||
* This function sends the disconnect roam trigger parameters to fw.
|
* This function sends the disconnect roam trigger parameters to fw.
|
||||||
@@ -2892,7 +2892,7 @@ send_roam_bss_load_config_tlv(wmi_unified_t wmi_handle,
|
|||||||
*/
|
*/
|
||||||
static QDF_STATUS
|
static QDF_STATUS
|
||||||
send_disconnect_roam_params_tlv(wmi_unified_t wmi_handle,
|
send_disconnect_roam_params_tlv(wmi_unified_t wmi_handle,
|
||||||
struct wmi_disconnect_roam_params *req)
|
struct wlan_roam_disconnect_params *req)
|
||||||
{
|
{
|
||||||
wmi_roam_deauth_config_cmd_fixed_param *cmd;
|
wmi_roam_deauth_config_cmd_fixed_param *cmd;
|
||||||
wmi_buf_t buf;
|
wmi_buf_t buf;
|
||||||
@@ -2929,7 +2929,7 @@ send_disconnect_roam_params_tlv(wmi_unified_t wmi_handle,
|
|||||||
/**
|
/**
|
||||||
* send_idle_roam_params_tlv() - send idle roam trigger parameters
|
* send_idle_roam_params_tlv() - send idle roam trigger parameters
|
||||||
* @wmi_handle: wmi handle
|
* @wmi_handle: wmi handle
|
||||||
* @idle_roam_params: pointer to wmi_idle_roam_params which carries the
|
* @idle_roam_params: pointer to wlan_roam_idle_params which carries the
|
||||||
* idle roam parameters from CSR
|
* idle roam parameters from CSR
|
||||||
*
|
*
|
||||||
* This function sends the idle roam trigger parameters to fw.
|
* This function sends the idle roam trigger parameters to fw.
|
||||||
@@ -2938,7 +2938,7 @@ send_disconnect_roam_params_tlv(wmi_unified_t wmi_handle,
|
|||||||
*/
|
*/
|
||||||
static QDF_STATUS
|
static QDF_STATUS
|
||||||
send_idle_roam_params_tlv(wmi_unified_t wmi_handle,
|
send_idle_roam_params_tlv(wmi_unified_t wmi_handle,
|
||||||
struct wmi_idle_roam_params *idle_roam_params)
|
struct wlan_roam_idle_params *idle_roam_params)
|
||||||
{
|
{
|
||||||
wmi_roam_idle_config_cmd_fixed_param *cmd;
|
wmi_roam_idle_config_cmd_fixed_param *cmd;
|
||||||
wmi_buf_t buf;
|
wmi_buf_t buf;
|
||||||
@@ -3036,14 +3036,14 @@ send_roam_preauth_status_tlv(wmi_unified_t wmi_handle,
|
|||||||
#else
|
#else
|
||||||
static inline QDF_STATUS
|
static inline QDF_STATUS
|
||||||
send_disconnect_roam_params_tlv(wmi_unified_t wmi_handle,
|
send_disconnect_roam_params_tlv(wmi_unified_t wmi_handle,
|
||||||
struct wmi_disconnect_roam_params *req)
|
struct wlan_roam_disconnect_params *req)
|
||||||
{
|
{
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline QDF_STATUS
|
static inline QDF_STATUS
|
||||||
send_idle_roam_params_tlv(wmi_unified_t wmi_handle,
|
send_idle_roam_params_tlv(wmi_unified_t wmi_handle,
|
||||||
struct wmi_idle_roam_params *idle_roam_params)
|
struct wlan_roam_idle_params *idle_roam_params)
|
||||||
{
|
{
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
@@ -3065,7 +3065,7 @@ send_roam_preauth_status_tlv(wmi_unified_t wmi_handle,
|
|||||||
*/
|
*/
|
||||||
static QDF_STATUS
|
static QDF_STATUS
|
||||||
send_offload_11k_cmd_tlv(wmi_unified_t wmi_handle,
|
send_offload_11k_cmd_tlv(wmi_unified_t wmi_handle,
|
||||||
struct wmi_11k_offload_params *params)
|
struct wlan_roam_11k_offload_params *params)
|
||||||
{
|
{
|
||||||
wmi_11k_offload_report_fixed_param *cmd;
|
wmi_11k_offload_report_fixed_param *cmd;
|
||||||
wmi_buf_t buf;
|
wmi_buf_t buf;
|
||||||
|
@@ -2211,8 +2211,8 @@ struct roam_offload_scan_req {
|
|||||||
bool is_sae_single_pmk;
|
bool is_sae_single_pmk;
|
||||||
bool enable_ft_im_roaming;
|
bool enable_ft_im_roaming;
|
||||||
/* Idle/Disconnect roam parameters */
|
/* Idle/Disconnect roam parameters */
|
||||||
struct wmi_idle_roam_params idle_roam_params;
|
struct wlan_roam_idle_params idle_roam_params;
|
||||||
struct wmi_disconnect_roam_params disconnect_roam_params;
|
struct wlan_roam_disconnect_params disconnect_roam_params;
|
||||||
#endif
|
#endif
|
||||||
struct roam_ext_params roam_params;
|
struct roam_ext_params roam_params;
|
||||||
struct wlan_roam_triggers roam_triggers;
|
struct wlan_roam_triggers roam_triggers;
|
||||||
@@ -2239,7 +2239,7 @@ struct roam_offload_scan_req {
|
|||||||
uint32_t rct_validity_timer;
|
uint32_t rct_validity_timer;
|
||||||
uint32_t disassoc_timer_threshold;
|
uint32_t disassoc_timer_threshold;
|
||||||
uint32_t btm_trig_min_candidate_score;
|
uint32_t btm_trig_min_candidate_score;
|
||||||
struct wmi_11k_offload_params offload_11k_params;
|
struct wlan_roam_11k_offload_params offload_11k_params;
|
||||||
uint32_t ho_delay_for_rx;
|
uint32_t ho_delay_for_rx;
|
||||||
uint32_t roam_preauth_retry_count;
|
uint32_t roam_preauth_retry_count;
|
||||||
uint32_t roam_preauth_no_ack_timeout;
|
uint32_t roam_preauth_no_ack_timeout;
|
||||||
|
@@ -237,8 +237,10 @@ enum eWniMsgTypes {
|
|||||||
eWNI_SME_ANTENNA_ISOLATION_RSP = SIR_SME_MSG_TYPES_BEGIN + 155,
|
eWNI_SME_ANTENNA_ISOLATION_RSP = SIR_SME_MSG_TYPES_BEGIN + 155,
|
||||||
eWNI_SME_MON_DEINIT_SESSION = SIR_SME_MSG_TYPES_BEGIN + 156,
|
eWNI_SME_MON_DEINIT_SESSION = SIR_SME_MSG_TYPES_BEGIN + 156,
|
||||||
eWNI_SME_VDEV_DELETE_RSP = SIR_SME_MSG_TYPES_BEGIN + 157,
|
eWNI_SME_VDEV_DELETE_RSP = SIR_SME_MSG_TYPES_BEGIN + 157,
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
eWNI_SME_ROAM_INIT_PARAM = SIR_SME_MSG_TYPES_BEGIN + 158,
|
eWNI_SME_ROAM_INIT_PARAM = SIR_SME_MSG_TYPES_BEGIN + 158,
|
||||||
eWNI_SME_ROAM_SEND_PER_REQ = SIR_SME_MSG_TYPES_BEGIN + 159,
|
eWNI_SME_ROAM_SEND_PER_REQ = SIR_SME_MSG_TYPES_BEGIN + 159,
|
||||||
|
#endif
|
||||||
eWNI_SME_GET_ROAM_SCAN_CH_LIST_EVENT =
|
eWNI_SME_GET_ROAM_SCAN_CH_LIST_EVENT =
|
||||||
SIR_SME_MSG_TYPES_BEGIN + 160,
|
SIR_SME_MSG_TYPES_BEGIN + 160,
|
||||||
eWNI_SME_MONITOR_MODE_VDEV_UP = SIR_SME_MSG_TYPES_BEGIN + 161,
|
eWNI_SME_MONITOR_MODE_VDEV_UP = SIR_SME_MSG_TYPES_BEGIN + 161,
|
||||||
|
@@ -576,7 +576,9 @@ struct sir_cfg_action_frm_tb_ppdu {
|
|||||||
|
|
||||||
/* (SIR_HAL_ITC_MSG_TYPES_BEGIN + 370) is unused */
|
/* (SIR_HAL_ITC_MSG_TYPES_BEGIN + 370) is unused */
|
||||||
|
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
#define SIR_HAL_SET_PER_ROAM_CONFIG_CMD (SIR_HAL_ITC_MSG_TYPES_BEGIN + 371)
|
#define SIR_HAL_SET_PER_ROAM_CONFIG_CMD (SIR_HAL_ITC_MSG_TYPES_BEGIN + 371)
|
||||||
|
#endif
|
||||||
#define SIR_HAL_RX_CHN_STATUS_EVENT (SIR_HAL_ITC_MSG_TYPES_BEGIN + 372)
|
#define SIR_HAL_RX_CHN_STATUS_EVENT (SIR_HAL_ITC_MSG_TYPES_BEGIN + 372)
|
||||||
|
|
||||||
#define SIR_HAL_GET_RCPI_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 373)
|
#define SIR_HAL_GET_RCPI_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 373)
|
||||||
@@ -588,7 +590,10 @@ struct sir_cfg_action_frm_tb_ppdu {
|
|||||||
|
|
||||||
#define SIR_HAL_HIDDEN_SSID_RESTART_RSP (SIR_HAL_ITC_MSG_TYPES_BEGIN + 379)
|
#define SIR_HAL_HIDDEN_SSID_RESTART_RSP (SIR_HAL_ITC_MSG_TYPES_BEGIN + 379)
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
#define SIR_HAL_INIT_ROAM_OFFLOAD_PARAM (SIR_HAL_ITC_MSG_TYPES_BEGIN + 380)
|
#define SIR_HAL_INIT_ROAM_OFFLOAD_PARAM (SIR_HAL_ITC_MSG_TYPES_BEGIN + 380)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unused SIR_HAL_ITC_MSG_TYPES_BEGIN + 381 to
|
* Unused SIR_HAL_ITC_MSG_TYPES_BEGIN + 381 to
|
||||||
|
@@ -1761,9 +1761,11 @@ static void lim_process_messages(struct mac_context *mac_ctx,
|
|||||||
case eWNI_SME_ROAM_INVOKE:
|
case eWNI_SME_ROAM_INVOKE:
|
||||||
/* fall through */
|
/* fall through */
|
||||||
case eWNI_SME_ROAM_SCAN_OFFLOAD_REQ:
|
case eWNI_SME_ROAM_SCAN_OFFLOAD_REQ:
|
||||||
case eWNI_SME_ROAM_INIT_PARAM:
|
|
||||||
case eWNI_SME_ROAM_SEND_SET_PCL_REQ:
|
case eWNI_SME_ROAM_SEND_SET_PCL_REQ:
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
|
case eWNI_SME_ROAM_INIT_PARAM:
|
||||||
case eWNI_SME_ROAM_SEND_PER_REQ:
|
case eWNI_SME_ROAM_SEND_PER_REQ:
|
||||||
|
#endif
|
||||||
case eWNI_SME_SET_ADDBA_ACCEPT:
|
case eWNI_SME_SET_ADDBA_ACCEPT:
|
||||||
case eWNI_SME_UPDATE_EDCA_PROFILE:
|
case eWNI_SME_UPDATE_EDCA_PROFILE:
|
||||||
case WNI_SME_UPDATE_MU_EDCA_PARAMS:
|
case WNI_SME_UPDATE_MU_EDCA_PARAMS:
|
||||||
|
@@ -3489,6 +3489,7 @@ static void __lim_process_roam_scan_offload_req(struct mac_context *mac_ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
#if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
/**
|
/**
|
||||||
* lim_send_roam_offload_init() - Process Roam offload flag from csr
|
* lim_send_roam_offload_init() - Process Roam offload flag from csr
|
||||||
* @mac_ctx: Pointer to Global MAC structure
|
* @mac_ctx: Pointer to Global MAC structure
|
||||||
@@ -3534,7 +3535,7 @@ static void lim_send_roam_per_command(struct mac_context *mac_ctx,
|
|||||||
qdf_mem_free(msg_buf);
|
qdf_mem_free(msg_buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
/**
|
/**
|
||||||
* lim_send_roam_set_pcl() - Process Roam offload flag from csr
|
* lim_send_roam_set_pcl() - Process Roam offload flag from csr
|
||||||
* @mac_ctx: Pointer to Global MAC structure
|
* @mac_ctx: Pointer to Global MAC structure
|
||||||
@@ -3558,6 +3559,8 @@ static void lim_send_roam_set_pcl(struct mac_context *mac_ctx,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
static void lim_send_roam_offload_init(struct mac_context *mac_ctx,
|
static void lim_send_roam_offload_init(struct mac_context *mac_ctx,
|
||||||
uint32_t *msg_buf)
|
uint32_t *msg_buf)
|
||||||
{
|
{
|
||||||
@@ -3569,7 +3572,7 @@ static void lim_send_roam_per_command(struct mac_context *mac_ctx,
|
|||||||
{
|
{
|
||||||
qdf_mem_free(msg_buf);
|
qdf_mem_free(msg_buf);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
static inline void lim_send_roam_set_pcl(struct mac_context *mac_ctx,
|
static inline void lim_send_roam_set_pcl(struct mac_context *mac_ctx,
|
||||||
struct set_pcl_req *msg_buf)
|
struct set_pcl_req *msg_buf)
|
||||||
{
|
{
|
||||||
@@ -4644,18 +4647,20 @@ bool lim_process_sme_req_messages(struct mac_context *mac,
|
|||||||
__lim_process_roam_scan_offload_req(mac, msg_buf);
|
__lim_process_roam_scan_offload_req(mac, msg_buf);
|
||||||
bufConsumed = false;
|
bufConsumed = false;
|
||||||
break;
|
break;
|
||||||
case eWNI_SME_ROAM_INIT_PARAM:
|
|
||||||
lim_send_roam_offload_init(mac, msg_buf);
|
|
||||||
bufConsumed = false;
|
|
||||||
break;
|
|
||||||
case eWNI_SME_ROAM_SEND_SET_PCL_REQ:
|
case eWNI_SME_ROAM_SEND_SET_PCL_REQ:
|
||||||
lim_send_roam_set_pcl(mac, (struct set_pcl_req *)msg_buf);
|
lim_send_roam_set_pcl(mac, (struct set_pcl_req *)msg_buf);
|
||||||
bufConsumed = false;
|
bufConsumed = false;
|
||||||
break;
|
break;
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
|
case eWNI_SME_ROAM_INIT_PARAM:
|
||||||
|
lim_send_roam_offload_init(mac, msg_buf);
|
||||||
|
bufConsumed = false;
|
||||||
|
break;
|
||||||
case eWNI_SME_ROAM_SEND_PER_REQ:
|
case eWNI_SME_ROAM_SEND_PER_REQ:
|
||||||
lim_send_roam_per_command(mac, msg_buf);
|
lim_send_roam_per_command(mac, msg_buf);
|
||||||
bufConsumed = false;
|
bufConsumed = false;
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
case eWNI_SME_ROAM_INVOKE:
|
case eWNI_SME_ROAM_INVOKE:
|
||||||
lim_process_roam_invoke(mac, msg_buf);
|
lim_process_roam_invoke(mac, msg_buf);
|
||||||
bufConsumed = false;
|
bufConsumed = false;
|
||||||
|
@@ -350,7 +350,9 @@ uint8_t *mac_trace_get_sme_msg_string(uint16_t sme_msg)
|
|||||||
CASE_RETURN_STRING(eWNI_SME_UPDATE_ACCESS_POLICY_VENDOR_IE);
|
CASE_RETURN_STRING(eWNI_SME_UPDATE_ACCESS_POLICY_VENDOR_IE);
|
||||||
CASE_RETURN_STRING(eWNI_SME_DEFAULT_SCAN_IE);
|
CASE_RETURN_STRING(eWNI_SME_DEFAULT_SCAN_IE);
|
||||||
CASE_RETURN_STRING(eWNI_SME_ROAM_SCAN_OFFLOAD_REQ);
|
CASE_RETURN_STRING(eWNI_SME_ROAM_SCAN_OFFLOAD_REQ);
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
CASE_RETURN_STRING(eWNI_SME_ROAM_INIT_PARAM);
|
CASE_RETURN_STRING(eWNI_SME_ROAM_INIT_PARAM);
|
||||||
|
#endif
|
||||||
CASE_RETURN_STRING(eWNI_SME_LOST_LINK_INFO_IND);
|
CASE_RETURN_STRING(eWNI_SME_LOST_LINK_INFO_IND);
|
||||||
CASE_RETURN_STRING(eWNI_SME_GET_PEER_INFO_EXT_IND);
|
CASE_RETURN_STRING(eWNI_SME_GET_PEER_INFO_EXT_IND);
|
||||||
CASE_RETURN_STRING(eWNI_SME_RSO_CMD_STATUS_IND);
|
CASE_RETURN_STRING(eWNI_SME_RSO_CMD_STATUS_IND);
|
||||||
@@ -600,7 +602,9 @@ uint8_t *mac_trace_get_wma_msg_string(uint16_t wma_msg)
|
|||||||
CASE_RETURN_STRING(WMA_SET_RSSI_MONITOR_REQ);
|
CASE_RETURN_STRING(WMA_SET_RSSI_MONITOR_REQ);
|
||||||
CASE_RETURN_STRING(WMA_SET_WISA_PARAMS);
|
CASE_RETURN_STRING(WMA_SET_WISA_PARAMS);
|
||||||
CASE_RETURN_STRING(WMA_SET_WOW_PULSE_CMD);
|
CASE_RETURN_STRING(WMA_SET_WOW_PULSE_CMD);
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
CASE_RETURN_STRING(WMA_SET_PER_ROAM_CONFIG_CMD);
|
CASE_RETURN_STRING(WMA_SET_PER_ROAM_CONFIG_CMD);
|
||||||
|
#endif
|
||||||
CASE_RETURN_STRING(WMA_GET_RCPI_REQ);
|
CASE_RETURN_STRING(WMA_GET_RCPI_REQ);
|
||||||
CASE_RETURN_STRING(WMA_SET_DBS_SCAN_SEL_CONF_PARAMS);
|
CASE_RETURN_STRING(WMA_SET_DBS_SCAN_SEL_CONF_PARAMS);
|
||||||
CASE_RETURN_STRING(WMA_GET_ROAM_SCAN_STATS);
|
CASE_RETURN_STRING(WMA_GET_ROAM_SCAN_STATS);
|
||||||
|
@@ -16998,6 +16998,64 @@ csr_update_roam_scan_offload_request(struct mac_context *mac_ctx,
|
|||||||
|
|
||||||
#if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
#if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* csr_update_btm_offload_config() - Update btm config param to fw
|
||||||
|
* @mac_ctx: Global mac ctx
|
||||||
|
* @command: Roam offload command
|
||||||
|
* @btm_offload_config: btm offload config
|
||||||
|
* @session: roam session
|
||||||
|
*
|
||||||
|
* Return: None
|
||||||
|
*/
|
||||||
|
static void csr_update_btm_offload_config(struct mac_context *mac_ctx,
|
||||||
|
uint8_t command,
|
||||||
|
uint32_t *btm_offload_config,
|
||||||
|
struct csr_roam_session *session)
|
||||||
|
{
|
||||||
|
struct wlan_objmgr_peer *peer;
|
||||||
|
bool is_pmf_enabled;
|
||||||
|
|
||||||
|
*btm_offload_config =
|
||||||
|
mac_ctx->mlme_cfg->btm.btm_offload_config;
|
||||||
|
|
||||||
|
/* Return if INI is disabled */
|
||||||
|
if (!(*btm_offload_config))
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* For RSO Stop Disable BTM offload to firmware */
|
||||||
|
if (command == ROAM_SCAN_OFFLOAD_STOP) {
|
||||||
|
*btm_offload_config = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!session->pConnectBssDesc) {
|
||||||
|
sme_err("Connected Bss Desc is NULL");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
peer = wlan_objmgr_get_peer(mac_ctx->psoc,
|
||||||
|
wlan_objmgr_pdev_get_pdev_id(mac_ctx->pdev),
|
||||||
|
session->pConnectBssDesc->bssId,
|
||||||
|
WLAN_LEGACY_SME_ID);
|
||||||
|
if (!peer) {
|
||||||
|
sme_debug("Peer of peer_mac %pM not found",
|
||||||
|
session->pConnectBssDesc->bssId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
is_pmf_enabled = mlme_get_peer_pmf_status(peer);
|
||||||
|
wlan_objmgr_peer_release_ref(peer, WLAN_LEGACY_SME_ID);
|
||||||
|
sme_debug("get is_pmf_enabled %d for %pM", is_pmf_enabled,
|
||||||
|
session->pConnectBssDesc->bssId);
|
||||||
|
|
||||||
|
/* If peer does not support PMF in case of OCE/MBO
|
||||||
|
* Connection, Disable BTM offload to firmware.
|
||||||
|
*/
|
||||||
|
if (session->pConnectBssDesc->mbo_oce_enabled_ap &&
|
||||||
|
!is_pmf_enabled)
|
||||||
|
*btm_offload_config = 0;
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef ROAM_OFFLOAD_V1
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
/**
|
/**
|
||||||
* csr_populate_roam_chan_list()
|
* csr_populate_roam_chan_list()
|
||||||
@@ -17334,64 +17392,6 @@ csr_rso_command_fill_rsn_caps(struct mac_context *mac_ctx, uint8_t vdev_id,
|
|||||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* csr_update_btm_offload_config() - Update btm config param to fw
|
|
||||||
* @mac_ctx: Global mac ctx
|
|
||||||
* @command: Roam offload command
|
|
||||||
* @req_buf: roam offload scan request
|
|
||||||
* @session: roam session
|
|
||||||
*
|
|
||||||
* Return: None
|
|
||||||
*/
|
|
||||||
static void csr_update_btm_offload_config(struct mac_context *mac_ctx,
|
|
||||||
uint8_t command,
|
|
||||||
struct roam_offload_scan_req *req_buf,
|
|
||||||
struct csr_roam_session *session)
|
|
||||||
{
|
|
||||||
struct wlan_objmgr_peer *peer;
|
|
||||||
bool is_pmf_enabled;
|
|
||||||
|
|
||||||
req_buf->btm_offload_config =
|
|
||||||
mac_ctx->mlme_cfg->btm.btm_offload_config;
|
|
||||||
|
|
||||||
/* Return if INI is disabled */
|
|
||||||
if (!req_buf->btm_offload_config)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* For RSO Stop Disable BTM offload to firmware */
|
|
||||||
if (command == ROAM_SCAN_OFFLOAD_STOP) {
|
|
||||||
req_buf->btm_offload_config = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!session->pConnectBssDesc) {
|
|
||||||
sme_err("Connected Bss Desc is NULL");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
peer = wlan_objmgr_get_peer(mac_ctx->psoc,
|
|
||||||
wlan_objmgr_pdev_get_pdev_id(mac_ctx->pdev),
|
|
||||||
session->pConnectBssDesc->bssId,
|
|
||||||
WLAN_LEGACY_SME_ID);
|
|
||||||
if (!peer) {
|
|
||||||
sme_debug("Peer of peer_mac %pM not found",
|
|
||||||
session->pConnectBssDesc->bssId);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
is_pmf_enabled = mlme_get_peer_pmf_status(peer);
|
|
||||||
wlan_objmgr_peer_release_ref(peer, WLAN_LEGACY_SME_ID);
|
|
||||||
sme_debug("get is_pmf_enabled %d for %pM", is_pmf_enabled,
|
|
||||||
session->pConnectBssDesc->bssId);
|
|
||||||
|
|
||||||
/* If peer does not support PMF in case of OCE/MBO
|
|
||||||
* Connection, Disable BTM offload to firmware.
|
|
||||||
*/
|
|
||||||
if (session->pConnectBssDesc->mbo_oce_enabled_ap &&
|
|
||||||
!is_pmf_enabled)
|
|
||||||
req_buf->btm_offload_config = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* csr_create_roam_scan_offload_request() - init roam offload scan request
|
* csr_create_roam_scan_offload_request() - init roam offload scan request
|
||||||
*
|
*
|
||||||
@@ -17664,7 +17664,8 @@ csr_create_roam_scan_offload_request(struct mac_context *mac_ctx,
|
|||||||
req_buf->lca_config_params.num_disallowed_aps =
|
req_buf->lca_config_params.num_disallowed_aps =
|
||||||
mac_ctx->mlme_cfg->lfr.lfr3_num_disallowed_aps;
|
mac_ctx->mlme_cfg->lfr.lfr3_num_disallowed_aps;
|
||||||
|
|
||||||
csr_update_btm_offload_config(mac_ctx, command, req_buf, session);
|
csr_update_btm_offload_config(mac_ctx, command,
|
||||||
|
&req_buf->btm_offload_config, session);
|
||||||
|
|
||||||
req_buf->btm_solicited_timeout =
|
req_buf->btm_solicited_timeout =
|
||||||
mac_ctx->mlme_cfg->btm.btm_solicited_timeout;
|
mac_ctx->mlme_cfg->btm.btm_solicited_timeout;
|
||||||
@@ -17702,7 +17703,8 @@ csr_update_11k_offload_params(struct mac_context *mac_ctx,
|
|||||||
struct roam_offload_scan_req *req_buffer,
|
struct roam_offload_scan_req *req_buffer,
|
||||||
bool enabled)
|
bool enabled)
|
||||||
{
|
{
|
||||||
struct wmi_11k_offload_params *params = &req_buffer->offload_11k_params;
|
struct wlan_roam_11k_offload_params *params =
|
||||||
|
&req_buffer->offload_11k_params;
|
||||||
struct csr_config *csr_config = &mac_ctx->roam.configParam;
|
struct csr_config *csr_config = &mac_ctx->roam.configParam;
|
||||||
struct csr_neighbor_report_offload_params *neighbor_report_offload =
|
struct csr_neighbor_report_offload_params *neighbor_report_offload =
|
||||||
&csr_config->neighbor_report_offload;
|
&csr_config->neighbor_report_offload;
|
||||||
@@ -18129,13 +18131,13 @@ static void csr_update_driver_assoc_ies(struct mac_context *mac_ctx,
|
|||||||
*
|
*
|
||||||
* Return: per roam config request packet buffer
|
* Return: per roam config request packet buffer
|
||||||
*/
|
*/
|
||||||
static struct wmi_per_roam_config_req *
|
static struct wlan_per_roam_config_req *
|
||||||
csr_create_per_roam_request(struct mac_context *mac_ctx,
|
csr_create_per_roam_request(struct mac_context *mac_ctx,
|
||||||
uint8_t session_id)
|
uint8_t session_id)
|
||||||
{
|
{
|
||||||
struct wmi_per_roam_config_req *req_buf = NULL;
|
struct wlan_per_roam_config_req *req_buf = NULL;
|
||||||
|
|
||||||
req_buf = qdf_mem_malloc(sizeof(struct wmi_per_roam_config_req));
|
req_buf = qdf_mem_malloc(sizeof(struct wlan_per_roam_config_req));
|
||||||
if (!req_buf)
|
if (!req_buf)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@@ -18188,7 +18190,7 @@ csr_create_per_roam_request(struct mac_context *mac_ctx,
|
|||||||
static QDF_STATUS
|
static QDF_STATUS
|
||||||
csr_roam_offload_per_scan(struct mac_context *mac_ctx, uint8_t session_id)
|
csr_roam_offload_per_scan(struct mac_context *mac_ctx, uint8_t session_id)
|
||||||
{
|
{
|
||||||
struct wmi_per_roam_config_req *req_buf;
|
struct wlan_per_roam_config_req *req_buf;
|
||||||
struct scheduler_msg msg = {0};
|
struct scheduler_msg msg = {0};
|
||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
|
|
||||||
@@ -19258,10 +19260,8 @@ csr_roam_offload_scan(struct mac_context *mac_ctx, uint8_t session_id,
|
|||||||
}
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wlan_cm_roam_cmd_allowed(struct wlan_objmgr_psoc *psoc,
|
wlan_cm_roam_cmd_allowed(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||||
uint8_t vdev_id,
|
uint8_t command, uint8_t reason)
|
||||||
uint8_t command,
|
|
||||||
uint8_t reason)
|
|
||||||
{
|
{
|
||||||
uint8_t *state = NULL;
|
uint8_t *state = NULL;
|
||||||
struct csr_roam_session *session;
|
struct csr_roam_session *session;
|
||||||
@@ -19407,7 +19407,7 @@ wlan_cm_roam_cmd_allowed(struct wlan_objmgr_psoc *psoc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_cm_roam_scan_offload_rssi_thresh() - set roam offload scan rssi
|
* csr_cm_roam_scan_offload_rssi_thresh() - set roam offload scan rssi
|
||||||
* parameters
|
* parameters
|
||||||
* @mac_ctx: global mac ctx
|
* @mac_ctx: global mac ctx
|
||||||
* @session: csr roam session
|
* @session: csr roam session
|
||||||
@@ -19418,8 +19418,7 @@ wlan_cm_roam_cmd_allowed(struct wlan_objmgr_psoc *psoc,
|
|||||||
* Return: None
|
* Return: None
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
wlan_cm_roam_scan_offload_rssi_thresh(
|
csr_cm_roam_scan_offload_rssi_thresh(struct mac_context *mac_ctx,
|
||||||
struct mac_context *mac_ctx,
|
|
||||||
struct csr_roam_session *session,
|
struct csr_roam_session *session,
|
||||||
struct wlan_roam_offload_scan_rssi_params *params)
|
struct wlan_roam_offload_scan_rssi_params *params)
|
||||||
{
|
{
|
||||||
@@ -19502,7 +19501,7 @@ wlan_cm_roam_scan_offload_rssi_thresh(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_cm_roam_scan_offload_scan_period() - set roam offload scan period
|
* csr_cm_roam_scan_offload_scan_period() - set roam offload scan period
|
||||||
* parameters
|
* parameters
|
||||||
* @mac_ctx: global mac ctx
|
* @mac_ctx: global mac ctx
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
@@ -19513,8 +19512,7 @@ wlan_cm_roam_scan_offload_rssi_thresh(
|
|||||||
* Return: None
|
* Return: None
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
wlan_cm_roam_scan_offload_scan_period(
|
csr_cm_roam_scan_offload_scan_period(struct mac_context *mac_ctx,
|
||||||
struct mac_context *mac_ctx,
|
|
||||||
uint8_t vdev_id,
|
uint8_t vdev_id,
|
||||||
struct wlan_roam_scan_period_params *params)
|
struct wlan_roam_scan_period_params *params)
|
||||||
{
|
{
|
||||||
@@ -19537,7 +19535,7 @@ wlan_cm_roam_scan_offload_scan_period(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_cm_roam_scan_offload_ap_profile() - set roam ap profile parameters
|
* csr_cm_roam_scan_offload_ap_profile() - set roam ap profile parameters
|
||||||
* @mac_ctx: global mac ctx
|
* @mac_ctx: global mac ctx
|
||||||
* @session: sme session
|
* @session: sme session
|
||||||
* @params: roam ap profile related parameters
|
* @params: roam ap profile related parameters
|
||||||
@@ -19547,7 +19545,7 @@ wlan_cm_roam_scan_offload_scan_period(
|
|||||||
* Return: None
|
* Return: None
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
wlan_cm_roam_scan_offload_ap_profile(struct mac_context *mac_ctx,
|
csr_cm_roam_scan_offload_ap_profile(struct mac_context *mac_ctx,
|
||||||
struct csr_roam_session *session,
|
struct csr_roam_session *session,
|
||||||
struct ap_profile_params *params)
|
struct ap_profile_params *params)
|
||||||
{
|
{
|
||||||
@@ -19599,7 +19597,7 @@ wlan_cm_roam_scan_offload_ap_profile(struct mac_context *mac_ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_cm_roam_scan_filter() - set roam scan filter parameters
|
* csr_cm_roam_scan_filter() - set roam scan filter parameters
|
||||||
* @mac_ctx: global mac ctx
|
* @mac_ctx: global mac ctx
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
* @command: rso command
|
* @command: rso command
|
||||||
@@ -19613,11 +19611,8 @@ wlan_cm_roam_scan_offload_ap_profile(struct mac_context *mac_ctx,
|
|||||||
* Return: None
|
* Return: None
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
wlan_cm_roam_scan_filter(
|
csr_cm_roam_scan_filter(struct mac_context *mac_ctx, uint8_t vdev_id,
|
||||||
struct mac_context *mac_ctx,
|
uint8_t command, uint8_t reason,
|
||||||
uint8_t vdev_id,
|
|
||||||
uint8_t command,
|
|
||||||
uint8_t reason,
|
|
||||||
struct wlan_roam_scan_filter_params *scan_filter_params)
|
struct wlan_roam_scan_filter_params *scan_filter_params)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@@ -19725,6 +19720,38 @@ wlan_cm_roam_scan_filter(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* csr_cm_roam_scan_btm_offload() - set roam scan btm offload parameters
|
||||||
|
* @mac_ctx: global mac ctx
|
||||||
|
* @session: sme session
|
||||||
|
* @params: roam roam scan btm offload parameters
|
||||||
|
*
|
||||||
|
* This function is used to set roam scan btm offload related parameters
|
||||||
|
*
|
||||||
|
* Return: None
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
csr_cm_roam_scan_btm_offload(struct mac_context *mac_ctx,
|
||||||
|
struct csr_roam_session *session,
|
||||||
|
struct wlan_roam_btm_config *params)
|
||||||
|
{
|
||||||
|
params->vdev_id = session->vdev_id;
|
||||||
|
csr_update_btm_offload_config(mac_ctx, ROAM_SCAN_OFFLOAD_START,
|
||||||
|
¶ms->btm_offload_config, session);
|
||||||
|
params->btm_solicited_timeout =
|
||||||
|
mac_ctx->mlme_cfg->btm.btm_solicited_timeout;
|
||||||
|
params->btm_max_attempt_cnt =
|
||||||
|
mac_ctx->mlme_cfg->btm.btm_max_attempt_cnt;
|
||||||
|
params->btm_sticky_time =
|
||||||
|
mac_ctx->mlme_cfg->btm.btm_sticky_time;
|
||||||
|
params->disassoc_timer_threshold =
|
||||||
|
mac_ctx->mlme_cfg->btm.disassoc_timer_threshold;
|
||||||
|
params->btm_query_bitmask =
|
||||||
|
mac_ctx->mlme_cfg->btm.btm_query_bitmask;
|
||||||
|
params->btm_candidate_min_score =
|
||||||
|
mac_ctx->mlme_cfg->btm.btm_trig_min_candidate_score;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wlan_cm_roam_fill_start_req(struct wlan_objmgr_psoc *psoc,
|
wlan_cm_roam_fill_start_req(struct wlan_objmgr_psoc *psoc,
|
||||||
uint8_t vdev_id,
|
uint8_t vdev_id,
|
||||||
@@ -19748,18 +19775,20 @@ wlan_cm_roam_fill_start_req(struct wlan_objmgr_psoc *psoc,
|
|||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlan_cm_roam_scan_offload_rssi_thresh(mac_ctx, session,
|
csr_cm_roam_scan_offload_rssi_thresh(mac_ctx, session,
|
||||||
&req->rssi_params);
|
&req->rssi_params);
|
||||||
|
|
||||||
wlan_cm_roam_scan_offload_scan_period(mac_ctx, session->vdev_id,
|
csr_cm_roam_scan_offload_scan_period(mac_ctx, session->vdev_id,
|
||||||
&req->scan_period_params);
|
&req->scan_period_params);
|
||||||
|
|
||||||
wlan_cm_roam_scan_offload_ap_profile(mac_ctx, session,
|
csr_cm_roam_scan_offload_ap_profile(mac_ctx, session,
|
||||||
&req->profile_params);
|
&req->profile_params);
|
||||||
|
|
||||||
wlan_cm_roam_scan_filter(mac_ctx, vdev_id, ROAM_SCAN_OFFLOAD_START,
|
csr_cm_roam_scan_filter(mac_ctx, vdev_id, ROAM_SCAN_OFFLOAD_START,
|
||||||
reason, &req->scan_filter_params);
|
reason, &req->scan_filter_params);
|
||||||
|
|
||||||
|
csr_cm_roam_scan_btm_offload(mac_ctx, session, &req->btm_config);
|
||||||
|
|
||||||
/* fill other struct similar to wlan_roam_offload_scan_rssi_params */
|
/* fill other struct similar to wlan_roam_offload_scan_rssi_params */
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
@@ -848,9 +848,6 @@ struct wma_wlm_stats_data {
|
|||||||
* @roam_ho_wl: wake lock for roam handoff req
|
* @roam_ho_wl: wake lock for roam handoff req
|
||||||
* @wow_nack: wow negative ack flag
|
* @wow_nack: wow negative ack flag
|
||||||
* @is_wow_bus_suspended: is wow bus suspended flag
|
* @is_wow_bus_suspended: is wow bus suspended flag
|
||||||
* @suitable_ap_hb_failure: better ap found
|
|
||||||
* @suitable_ap_hb_failure_rssi: RSSI when suitable_ap_hb_failure
|
|
||||||
* triggered for later usage to report RSSI at beacon miss scenario
|
|
||||||
* @IsRArateLimitEnabled: RA rate limiti s enabled or not
|
* @IsRArateLimitEnabled: RA rate limiti s enabled or not
|
||||||
* @RArateLimitInterval: RA rate limit interval
|
* @RArateLimitInterval: RA rate limit interval
|
||||||
* @is_lpass_enabled: Flag to indicate if LPASS feature is enabled or not
|
* @is_lpass_enabled: Flag to indicate if LPASS feature is enabled or not
|
||||||
@@ -974,8 +971,6 @@ typedef struct {
|
|||||||
qdf_wake_lock_t roam_preauth_wl;
|
qdf_wake_lock_t roam_preauth_wl;
|
||||||
int wow_nack;
|
int wow_nack;
|
||||||
qdf_atomic_t is_wow_bus_suspended;
|
qdf_atomic_t is_wow_bus_suspended;
|
||||||
bool suitable_ap_hb_failure;
|
|
||||||
uint32_t suitable_ap_hb_failure_rssi;
|
|
||||||
#ifdef WLAN_FEATURE_LPSS
|
#ifdef WLAN_FEATURE_LPSS
|
||||||
bool is_lpass_enabled;
|
bool is_lpass_enabled;
|
||||||
#endif
|
#endif
|
||||||
|
@@ -817,6 +817,7 @@ int wma_wlm_stats_req(int vdev_id, uint32_t bitmask, uint32_t max_size,
|
|||||||
int wma_wlm_stats_rsp(void *wma_ctx, uint8_t *event, uint32_t len);
|
int wma_wlm_stats_rsp(void *wma_ctx, uint8_t *event, uint32_t len);
|
||||||
#endif /* FEATURE_WLM_STATS */
|
#endif /* FEATURE_WLM_STATS */
|
||||||
|
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
/**
|
/**
|
||||||
* wma_update_roam_offload_flag() - update roam offload flag to fw
|
* wma_update_roam_offload_flag() - update roam offload flag to fw
|
||||||
* @wma: wma handle
|
* @wma: wma handle
|
||||||
@@ -826,7 +827,7 @@ int wma_wlm_stats_rsp(void *wma_ctx, uint8_t *event, uint32_t len);
|
|||||||
*/
|
*/
|
||||||
void wma_update_roam_offload_flag(void *handle,
|
void wma_update_roam_offload_flag(void *handle,
|
||||||
struct roam_init_params *params);
|
struct roam_init_params *params);
|
||||||
|
#endif
|
||||||
/**
|
/**
|
||||||
* wma_self_peer_create() - create self peer in objmgr
|
* wma_self_peer_create() - create self peer in objmgr
|
||||||
* @vdev_mlme: vdev mlme component private object
|
* @vdev_mlme: vdev mlme component private object
|
||||||
|
@@ -350,6 +350,7 @@ wma_roam_scan_chan_list_event_handler(WMA_HANDLE handle, uint8_t *event,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
/**
|
/**
|
||||||
* wma_update_per_roam_config() -per roam config parameter updation to FW
|
* wma_update_per_roam_config() -per roam config parameter updation to FW
|
||||||
* @handle: wma handle
|
* @handle: wma handle
|
||||||
@@ -358,8 +359,8 @@ wma_roam_scan_chan_list_event_handler(WMA_HANDLE handle, uint8_t *event,
|
|||||||
* Return: none
|
* Return: none
|
||||||
*/
|
*/
|
||||||
void wma_update_per_roam_config(WMA_HANDLE handle,
|
void wma_update_per_roam_config(WMA_HANDLE handle,
|
||||||
struct wmi_per_roam_config_req *req_buf);
|
struct wlan_per_roam_config_req *req_buf);
|
||||||
|
#endif
|
||||||
QDF_STATUS wma_update_channel_list(WMA_HANDLE handle,
|
QDF_STATUS wma_update_channel_list(WMA_HANDLE handle,
|
||||||
tSirUpdateChanList *chan_list);
|
tSirUpdateChanList *chan_list);
|
||||||
|
|
||||||
|
@@ -398,7 +398,9 @@
|
|||||||
|
|
||||||
#define WMA_SET_WOW_PULSE_CMD SIR_HAL_SET_WOW_PULSE_CMD
|
#define WMA_SET_WOW_PULSE_CMD SIR_HAL_SET_WOW_PULSE_CMD
|
||||||
|
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
#define WMA_SET_PER_ROAM_CONFIG_CMD SIR_HAL_SET_PER_ROAM_CONFIG_CMD
|
#define WMA_SET_PER_ROAM_CONFIG_CMD SIR_HAL_SET_PER_ROAM_CONFIG_CMD
|
||||||
|
#endif
|
||||||
|
|
||||||
#define WMA_SEND_AP_VDEV_UP SIR_HAL_SEND_AP_VDEV_UP
|
#define WMA_SEND_AP_VDEV_UP SIR_HAL_SEND_AP_VDEV_UP
|
||||||
|
|
||||||
@@ -433,7 +435,9 @@
|
|||||||
#endif
|
#endif
|
||||||
#define WMA_SET_ROAM_TRIGGERS SIR_HAL_SET_ROAM_TRIGGERS
|
#define WMA_SET_ROAM_TRIGGERS SIR_HAL_SET_ROAM_TRIGGERS
|
||||||
|
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
#define WMA_ROAM_INIT_PARAM SIR_HAL_INIT_ROAM_OFFLOAD_PARAM
|
#define WMA_ROAM_INIT_PARAM SIR_HAL_INIT_ROAM_OFFLOAD_PARAM
|
||||||
|
#endif
|
||||||
|
|
||||||
#define WMA_DATA_STALL_TRIGGER 6
|
#define WMA_DATA_STALL_TRIGGER 6
|
||||||
|
|
||||||
|
@@ -8656,11 +8656,13 @@ static QDF_STATUS wma_mc_process_msg(struct scheduler_msg *msg)
|
|||||||
qdf_mem_free(msg->bodyptr);
|
qdf_mem_free(msg->bodyptr);
|
||||||
break;
|
break;
|
||||||
#endif /* FEATURE_WLAN_EXTSCAN */
|
#endif /* FEATURE_WLAN_EXTSCAN */
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
case WMA_SET_PER_ROAM_CONFIG_CMD:
|
case WMA_SET_PER_ROAM_CONFIG_CMD:
|
||||||
wma_update_per_roam_config(wma_handle,
|
wma_update_per_roam_config(wma_handle,
|
||||||
(struct wmi_per_roam_config_req *)msg->bodyptr);
|
(struct wlan_per_roam_config_req *)msg->bodyptr);
|
||||||
qdf_mem_free(msg->bodyptr);
|
qdf_mem_free(msg->bodyptr);
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
case WMA_SET_SCAN_MAC_OUI_REQ:
|
case WMA_SET_SCAN_MAC_OUI_REQ:
|
||||||
wma_scan_probe_setoui(wma_handle, msg->bodyptr);
|
wma_scan_probe_setoui(wma_handle, msg->bodyptr);
|
||||||
qdf_mem_free(msg->bodyptr);
|
qdf_mem_free(msg->bodyptr);
|
||||||
@@ -8969,10 +8971,12 @@ static QDF_STATUS wma_mc_process_msg(struct scheduler_msg *msg)
|
|||||||
wma_set_roam_triggers(wma_handle, msg->bodyptr);
|
wma_set_roam_triggers(wma_handle, msg->bodyptr);
|
||||||
qdf_mem_free(msg->bodyptr);
|
qdf_mem_free(msg->bodyptr);
|
||||||
break;
|
break;
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
case WMA_ROAM_INIT_PARAM:
|
case WMA_ROAM_INIT_PARAM:
|
||||||
wma_update_roam_offload_flag(wma_handle, msg->bodyptr);
|
wma_update_roam_offload_flag(wma_handle, msg->bodyptr);
|
||||||
qdf_mem_free(msg->bodyptr);
|
qdf_mem_free(msg->bodyptr);
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
case WMA_ROAM_SCAN_CH_REQ:
|
case WMA_ROAM_SCAN_CH_REQ:
|
||||||
wma_get_roam_scan_ch(wma_handle->wmi_handle, msg->bodyval);
|
wma_get_roam_scan_ch(wma_handle->wmi_handle, msg->bodyval);
|
||||||
break;
|
break;
|
||||||
|
@@ -84,6 +84,7 @@
|
|||||||
#if !defined(REMOVE_PKT_LOG)
|
#if !defined(REMOVE_PKT_LOG)
|
||||||
#include <wlan_logging_sock_svc.h>
|
#include <wlan_logging_sock_svc.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include "wlan_cm_roam_api.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wma_send_bcn_buf_ll() - prepare and send beacon buffer to fw for LL
|
* wma_send_bcn_buf_ll() - prepare and send beacon buffer to fw for LL
|
||||||
@@ -2411,6 +2412,20 @@ void wma_beacon_miss_handler(tp_wma_handle wma, uint32_t vdev_id, int32_t rssi)
|
|||||||
wma_lost_link_info_handler(wma, vdev_id, rssi);
|
wma_lost_link_info_handler(wma, vdev_id, rssi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ROAM_OFFLOAD_V1
|
||||||
|
void wlan_cm_send_beacon_miss(uint8_t vdev_id, int32_t rssi)
|
||||||
|
{
|
||||||
|
tp_wma_handle wma;
|
||||||
|
|
||||||
|
wma = cds_get_context(QDF_MODULE_ID_WMA);
|
||||||
|
if (!wma) {
|
||||||
|
wma_err("Invalid wma");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wma_beacon_miss_handler(wma, vdev_id, rssi);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
/**
|
/**
|
||||||
* wma_get_status_str() - get string of tx status from firmware
|
* wma_get_status_str() - get string of tx status from firmware
|
||||||
* @status: tx status
|
* @status: tx status
|
||||||
|
@@ -1633,10 +1633,10 @@ static QDF_STATUS
|
|||||||
wma_roam_scan_btm_offload(tp_wma_handle wma_handle,
|
wma_roam_scan_btm_offload(tp_wma_handle wma_handle,
|
||||||
struct roam_offload_scan_req *roam_req)
|
struct roam_offload_scan_req *roam_req)
|
||||||
{
|
{
|
||||||
struct wmi_btm_config *params;
|
struct wlan_roam_btm_config *params;
|
||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
|
|
||||||
params = qdf_mem_malloc(sizeof(struct wmi_btm_config));
|
params = qdf_mem_malloc(sizeof(struct wlan_roam_btm_config));
|
||||||
if (!params)
|
if (!params)
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
@@ -1711,7 +1711,7 @@ void wma_send_roam_bss_load_config(WMA_HANDLE handle,
|
|||||||
*/
|
*/
|
||||||
static
|
static
|
||||||
QDF_STATUS wma_send_offload_11k_params(WMA_HANDLE handle,
|
QDF_STATUS wma_send_offload_11k_params(WMA_HANDLE handle,
|
||||||
struct wmi_11k_offload_params *params)
|
struct wlan_roam_11k_offload_params *params)
|
||||||
{
|
{
|
||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
tp_wma_handle wma_handle = (tp_wma_handle) handle;
|
tp_wma_handle wma_handle = (tp_wma_handle) handle;
|
||||||
@@ -1758,7 +1758,7 @@ wma_send_disconnect_roam_params(tp_wma_handle wma_handle,
|
|||||||
struct roam_offload_scan_req *roam_req)
|
struct roam_offload_scan_req *roam_req)
|
||||||
{
|
{
|
||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
struct wmi_disconnect_roam_params *params =
|
struct wlan_roam_disconnect_params *params =
|
||||||
&roam_req->disconnect_roam_params;
|
&roam_req->disconnect_roam_params;
|
||||||
|
|
||||||
if (!wma_handle || !wma_handle->wmi_handle) {
|
if (!wma_handle || !wma_handle->wmi_handle) {
|
||||||
@@ -1920,10 +1920,10 @@ QDF_STATUS wma_process_roaming_config(tp_wma_handle wma_handle,
|
|||||||
roam_req->Command, roam_req->reason, roam_req->sessionId,
|
roam_req->Command, roam_req->reason, roam_req->sessionId,
|
||||||
roam_req->RoamScanOffloadEnabled,
|
roam_req->RoamScanOffloadEnabled,
|
||||||
roam_req->offload_11k_params.offload_11k_bitmask);
|
roam_req->offload_11k_params.offload_11k_bitmask);
|
||||||
wma_handle->interfaces[roam_req->sessionId].roaming_in_progress = false;
|
intr = &wma_handle->interfaces[roam_req->sessionId];
|
||||||
|
intr->roaming_in_progress = false;
|
||||||
switch (roam_req->Command) {
|
switch (roam_req->Command) {
|
||||||
case ROAM_SCAN_OFFLOAD_START:
|
case ROAM_SCAN_OFFLOAD_START:
|
||||||
intr = &wma_handle->interfaces[roam_req->sessionId];
|
|
||||||
intr->delay_before_vdev_stop = roam_req->delay_before_vdev_stop;
|
intr->delay_before_vdev_stop = roam_req->delay_before_vdev_stop;
|
||||||
/*
|
/*
|
||||||
* Scan/Roam threshold parameters are translated from
|
* Scan/Roam threshold parameters are translated from
|
||||||
@@ -1935,8 +1935,7 @@ QDF_STATUS wma_process_roaming_config(tp_wma_handle wma_handle,
|
|||||||
/* First param is positive rssi value to trigger rssi based scan
|
/* First param is positive rssi value to trigger rssi based scan
|
||||||
* Opportunistic scan is started at 30dB > trigger rssi.
|
* Opportunistic scan is started at 30dB > trigger rssi.
|
||||||
*/
|
*/
|
||||||
wma_handle->suitable_ap_hb_failure = false;
|
mlme_set_roam_reason_better_ap(intr->vdev, false);
|
||||||
|
|
||||||
qdf_status = wma_roam_scan_offload_rssi_thresh(wma_handle,
|
qdf_status = wma_roam_scan_offload_rssi_thresh(wma_handle,
|
||||||
roam_req);
|
roam_req);
|
||||||
if (qdf_status != QDF_STATUS_SUCCESS)
|
if (qdf_status != QDF_STATUS_SUCCESS)
|
||||||
@@ -2104,8 +2103,7 @@ QDF_STATUS wma_process_roaming_config(tp_wma_handle wma_handle,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
wma_handle->suitable_ap_hb_failure = false;
|
mlme_set_roam_reason_better_ap(intr->vdev, false);
|
||||||
|
|
||||||
wma_roam_scan_fill_scan_params(wma_handle, mac,
|
wma_roam_scan_fill_scan_params(wma_handle, mac,
|
||||||
NULL, &scan_params);
|
NULL, &scan_params);
|
||||||
|
|
||||||
@@ -2207,17 +2205,17 @@ QDF_STATUS wma_process_roaming_config(tp_wma_handle wma_handle,
|
|||||||
* now it is time to call it heartbeat failure.
|
* now it is time to call it heartbeat failure.
|
||||||
*/
|
*/
|
||||||
if ((roam_req->reason == REASON_PREAUTH_FAILED_FOR_ALL)
|
if ((roam_req->reason == REASON_PREAUTH_FAILED_FOR_ALL)
|
||||||
&& wma_handle->suitable_ap_hb_failure) {
|
&& mlme_get_roam_reason_better_ap(intr->vdev)) {
|
||||||
wma_err("Sending heartbeat failure after preauth failures");
|
wma_err("Sending heartbeat failure after preauth failures");
|
||||||
wma_beacon_miss_handler(wma_handle,
|
wma_beacon_miss_handler(wma_handle,
|
||||||
roam_req->sessionId,
|
roam_req->sessionId,
|
||||||
wma_handle->suitable_ap_hb_failure_rssi);
|
mlme_get_hb_ap_rssi(intr->vdev));
|
||||||
wma_handle->suitable_ap_hb_failure = false;
|
mlme_set_roam_reason_better_ap(intr->vdev, false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ROAM_SCAN_OFFLOAD_UPDATE_CFG:
|
case ROAM_SCAN_OFFLOAD_UPDATE_CFG:
|
||||||
wma_handle->suitable_ap_hb_failure = false;
|
mlme_set_roam_reason_better_ap(intr->vdev, false);
|
||||||
|
|
||||||
qdf_status = wma_roam_scan_bmiss_cnt(wma_handle,
|
qdf_status = wma_roam_scan_bmiss_cnt(wma_handle,
|
||||||
roam_req->RoamBmissFirstBcnt,
|
roam_req->RoamBmissFirstBcnt,
|
||||||
@@ -2307,8 +2305,9 @@ QDF_STATUS wma_process_roaming_config(tp_wma_handle wma_handle,
|
|||||||
return qdf_status;
|
return qdf_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
void wma_update_per_roam_config(WMA_HANDLE handle,
|
void wma_update_per_roam_config(WMA_HANDLE handle,
|
||||||
struct wmi_per_roam_config_req *req_buf)
|
struct wlan_per_roam_config_req *req_buf)
|
||||||
{
|
{
|
||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
tp_wma_handle wma_handle = (tp_wma_handle) handle;
|
tp_wma_handle wma_handle = (tp_wma_handle) handle;
|
||||||
@@ -2323,6 +2322,7 @@ void wma_update_per_roam_config(WMA_HANDLE handle,
|
|||||||
if (QDF_IS_STATUS_ERROR(status))
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
wma_err("failed to set per roam config to FW");
|
wma_err("failed to set per roam config to FW");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||||
|
|
||||||
@@ -6205,7 +6205,8 @@ int wma_roam_event_callback(WMA_HANDLE handle, uint8_t *event_buf,
|
|||||||
*/
|
*/
|
||||||
wma_debug("Better AP found for vdevid %x, rssi %d",
|
wma_debug("Better AP found for vdevid %x, rssi %d",
|
||||||
wmi_event->vdev_id, wmi_event->rssi);
|
wmi_event->vdev_id, wmi_event->rssi);
|
||||||
wma_handle->suitable_ap_hb_failure = false;
|
mlme_set_roam_reason_better_ap(
|
||||||
|
wma_handle->interfaces[wmi_event->vdev_id].vdev, false);
|
||||||
wma_roam_better_ap_handler(wma_handle, wmi_event->vdev_id);
|
wma_roam_better_ap_handler(wma_handle, wmi_event->vdev_id);
|
||||||
break;
|
break;
|
||||||
case WMI_ROAM_REASON_SUITABLE_AP:
|
case WMI_ROAM_REASON_SUITABLE_AP:
|
||||||
@@ -6213,8 +6214,11 @@ int wma_roam_event_callback(WMA_HANDLE handle, uint8_t *event_buf,
|
|||||||
* WMI_ROAM_REASON_SUITABLE_AP can get called in soft IRQ
|
* WMI_ROAM_REASON_SUITABLE_AP can get called in soft IRQ
|
||||||
* context, so avoid using CSR/PE structure directly.
|
* context, so avoid using CSR/PE structure directly.
|
||||||
*/
|
*/
|
||||||
wma_handle->suitable_ap_hb_failure = true;
|
mlme_set_roam_reason_better_ap(
|
||||||
wma_handle->suitable_ap_hb_failure_rssi = wmi_event->rssi;
|
wma_handle->interfaces[wmi_event->vdev_id].vdev, true);
|
||||||
|
mlme_set_hb_ap_rssi(
|
||||||
|
wma_handle->interfaces[wmi_event->vdev_id].vdev,
|
||||||
|
wmi_event->rssi);
|
||||||
wma_debug("Bmiss scan AP found for vdevid %x, rssi %d",
|
wma_debug("Bmiss scan AP found for vdevid %x, rssi %d",
|
||||||
wmi_event->vdev_id, wmi_event->rssi);
|
wmi_event->vdev_id, wmi_event->rssi);
|
||||||
wma_roam_better_ap_handler(wma_handle, wmi_event->vdev_id);
|
wma_roam_better_ap_handler(wma_handle, wmi_event->vdev_id);
|
||||||
|
@@ -4025,6 +4025,7 @@ int wma_rcpi_event_handler(void *handle, uint8_t *cmd_param_info,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef ROAM_OFFLOAD_V1
|
||||||
/**
|
/**
|
||||||
* wma_set_roam_offload_flag() - Set roam offload flag to fw
|
* wma_set_roam_offload_flag() - Set roam offload flag to fw
|
||||||
* @wma: wma handle
|
* @wma: wma handle
|
||||||
@@ -4094,6 +4095,7 @@ void wma_update_roam_offload_flag(void *handle,
|
|||||||
|
|
||||||
wma_set_roam_offload_flag(wma, params->vdev_id, params->enable);
|
wma_set_roam_offload_flag(wma, params->vdev_id, params->enable);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
QDF_STATUS wma_send_vdev_down_to_fw(t_wma_handle *wma, uint8_t vdev_id)
|
QDF_STATUS wma_send_vdev_down_to_fw(t_wma_handle *wma, uint8_t vdev_id)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user