qcacld-3.0: Move rso related process to connection manager [PART 8]
Move below two changes from legacy to connection manager: 'Change-Id: If3bb344ec7058d4149d0064975d7c91f213fd105', 'Change-Id: I39a84d06b9c696179da1b854985a23b874a399c5' Change-Id: I33921497d966f08a0ca476a373cfe6527888ca39 CRs-Fixed: 2765469
This commit is contained in:
@@ -2930,4 +2930,24 @@ bool
|
|||||||
wlan_mlme_check_chan_param_has_dfs(struct wlan_objmgr_pdev *pdev,
|
wlan_mlme_check_chan_param_has_dfs(struct wlan_objmgr_pdev *pdev,
|
||||||
struct ch_params *ch_params,
|
struct ch_params *ch_params,
|
||||||
uint32_t chan_freq);
|
uint32_t chan_freq);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_set_usr_disabled_roaming() - Set user config for roaming disable
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @val: user config for roaming disable
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_set_usr_disabled_roaming(struct wlan_objmgr_psoc *psoc, bool val);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_get_usr_disabled_roaming() - Get user config for roaming disable
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @val: user config for roaming disable
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_get_usr_disabled_roaming(struct wlan_objmgr_psoc *psoc, bool *val);
|
||||||
#endif /* _WLAN_MLME_API_H_ */
|
#endif /* _WLAN_MLME_API_H_ */
|
||||||
|
@@ -4476,3 +4476,31 @@ wlan_mlme_check_chan_param_has_dfs(struct wlan_objmgr_pdev *pdev,
|
|||||||
|
|
||||||
return is_dfs;
|
return is_dfs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_set_usr_disabled_roaming(struct wlan_objmgr_psoc *psoc, bool val)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
||||||
|
if (!mlme_obj)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
mlme_obj->cfg.sta.usr_disabled_roaming = val;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_get_usr_disabled_roaming(struct wlan_objmgr_psoc *psoc, bool *val)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
||||||
|
if (!mlme_obj)
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
|
||||||
|
*val = mlme_obj->cfg.sta.usr_disabled_roaming;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
@@ -1198,6 +1198,51 @@ target_if_cm_roam_per_config(struct wlan_objmgr_vdev *vdev,
|
|||||||
return wmi_unified_set_per_roam_config(wmi_handle, req);
|
return wmi_unified_set_per_roam_config(wmi_handle, req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* target_if_cm_roam_send_disable_config() - Send roam disable config related
|
||||||
|
* commands to wmi
|
||||||
|
* @vdev: vdev object
|
||||||
|
* @req: roam disable config parameters
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static QDF_STATUS
|
||||||
|
target_if_cm_roam_send_disable_config(struct wlan_objmgr_vdev *vdev,
|
||||||
|
struct roam_disable_cfg *req)
|
||||||
|
{
|
||||||
|
QDF_STATUS status = QDF_STATUS_E_FAILURE;
|
||||||
|
wmi_unified_t wmi_handle;
|
||||||
|
struct vdev_mlme_obj *vdev_mlme;
|
||||||
|
|
||||||
|
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
|
||||||
|
if (!vdev_mlme) {
|
||||||
|
target_if_err("Failed to get vdev mlme obj!");
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (vdev_mlme->mgmt.generic.type != WMI_VDEV_TYPE_STA ||
|
||||||
|
vdev_mlme->mgmt.generic.subtype != 0) {
|
||||||
|
target_if_err("This isn't a STA: %d", req->vdev_id);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
wmi_handle = target_if_cm_roam_get_wmi_handle_from_vdev(vdev);
|
||||||
|
if (!wmi_handle)
|
||||||
|
goto end;
|
||||||
|
|
||||||
|
status = target_if_vdev_set_param(
|
||||||
|
wmi_handle,
|
||||||
|
req->vdev_id,
|
||||||
|
WMI_VDEV_PARAM_ROAM_11KV_CTRL,
|
||||||
|
req->cfg);
|
||||||
|
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
target_if_err("Failed to set WMI_VDEV_PARAM_ROAM_11KV_CTRL");
|
||||||
|
|
||||||
|
end:
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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
|
||||||
@@ -1216,6 +1261,8 @@ target_if_cm_roam_register_rso_req_ops(struct wlan_cm_roam_tx_ops *tx_ops)
|
|||||||
tx_ops->send_roam_abort = target_if_cm_roam_abort;
|
tx_ops->send_roam_abort = target_if_cm_roam_abort;
|
||||||
tx_ops->send_roam_per_config = target_if_cm_roam_per_config;
|
tx_ops->send_roam_per_config = target_if_cm_roam_per_config;
|
||||||
tx_ops->send_roam_triggers = target_if_cm_roam_triggers;
|
tx_ops->send_roam_triggers = target_if_cm_roam_triggers;
|
||||||
|
tx_ops->send_roam_disable_config =
|
||||||
|
target_if_cm_roam_send_disable_config;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static void
|
static void
|
||||||
|
@@ -245,6 +245,29 @@ cm_roam_mawc_params(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
|||||||
psoc, ¶ms->rssi_stationary_low_adjust);
|
psoc, ¶ms->rssi_stationary_low_adjust);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
cm_roam_send_disable_config(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id, uint8_t cfg)
|
||||||
|
{
|
||||||
|
struct roam_disable_cfg *req;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
req = qdf_mem_malloc(sizeof(*req));
|
||||||
|
if (!req)
|
||||||
|
return QDF_STATUS_E_NOMEM;
|
||||||
|
|
||||||
|
req->vdev_id = vdev_id;
|
||||||
|
req->cfg = cfg;
|
||||||
|
|
||||||
|
status = wlan_cm_tgt_send_roam_disable_config(psoc, vdev_id, req);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
mlme_debug("fail to send roam disable config");
|
||||||
|
|
||||||
|
qdf_mem_free(req);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cm_roam_init_req() - roam init request handling
|
* cm_roam_init_req() - roam init request handling
|
||||||
* @psoc: psoc pointer
|
* @psoc: psoc pointer
|
||||||
@@ -568,7 +591,7 @@ cm_roam_fill_per_roam_request(struct wlan_objmgr_psoc *psoc,
|
|||||||
static QDF_STATUS
|
static QDF_STATUS
|
||||||
cm_roam_offload_per_config(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
|
cm_roam_offload_per_config(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
|
||||||
{
|
{
|
||||||
struct wlan_per_roam_config_req *req = NULL;
|
struct wlan_per_roam_config_req *req;
|
||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
|
|
||||||
req = qdf_mem_malloc(sizeof(*req));
|
req = qdf_mem_malloc(sizeof(*req));
|
||||||
@@ -672,6 +695,9 @@ cm_roam_switch_to_rso_stop(struct wlan_objmgr_pdev *pdev,
|
|||||||
* nothing to do here
|
* nothing to do here
|
||||||
*/
|
*/
|
||||||
default:
|
default:
|
||||||
|
/* For LFR2 BTM request, need handoff even roam disabled */
|
||||||
|
if (reason == REASON_OS_REQUESTED_ROAMING_NOW)
|
||||||
|
wlan_cm_roam_neighbor_proceed_with_handoff_req(vdev_id);
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
mlme_set_roam_state(psoc, vdev_id, WLAN_ROAM_RSO_STOPPED);
|
mlme_set_roam_state(psoc, vdev_id, WLAN_ROAM_RSO_STOPPED);
|
||||||
@@ -768,7 +794,7 @@ cm_roam_switch_to_init(struct wlan_objmgr_pdev *pdev,
|
|||||||
enum roam_offload_state cur_state;
|
enum roam_offload_state cur_state;
|
||||||
uint8_t temp_vdev_id, roam_enabled_vdev_id;
|
uint8_t temp_vdev_id, roam_enabled_vdev_id;
|
||||||
uint32_t roaming_bitmap;
|
uint32_t roaming_bitmap;
|
||||||
bool dual_sta_roam_active;
|
bool dual_sta_roam_active, usr_disabled_roaming;
|
||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
struct wlan_objmgr_psoc *psoc = wlan_pdev_get_psoc(pdev);
|
struct wlan_objmgr_psoc *psoc = wlan_pdev_get_psoc(pdev);
|
||||||
|
|
||||||
@@ -851,6 +877,18 @@ cm_roam_switch_to_init(struct wlan_objmgr_pdev *pdev,
|
|||||||
/* Set PCL before sending RSO start */
|
/* Set PCL before sending RSO start */
|
||||||
policy_mgr_set_pcl_for_existing_combo(psoc, PM_STA_MODE, vdev_id);
|
policy_mgr_set_pcl_for_existing_combo(psoc, PM_STA_MODE, vdev_id);
|
||||||
|
|
||||||
|
wlan_mlme_get_usr_disabled_roaming(psoc, &usr_disabled_roaming);
|
||||||
|
if (usr_disabled_roaming) {
|
||||||
|
status =
|
||||||
|
cm_roam_send_disable_config(
|
||||||
|
psoc, vdev_id,
|
||||||
|
WMI_VDEV_ROAM_11KV_CTRL_DISABLE_FW_TRIGGER_ROAMING);
|
||||||
|
|
||||||
|
if (!QDF_IS_STATUS_SUCCESS(status))
|
||||||
|
mlme_err("ROAM: fast roaming disable failed. status %d",
|
||||||
|
status);
|
||||||
|
}
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -89,7 +89,7 @@ cm_roam_stop_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
|||||||
uint8_t reason);
|
uint8_t reason);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_cm_rso_fill_rssi_change_params - Fill roam scan rssi change parameters
|
* cm_roam_fill_rssi_change_params() - Fill roam scan rssi change parameters
|
||||||
* @psoc: PSOC pointer
|
* @psoc: PSOC pointer
|
||||||
* @vdev_id: vdev_id
|
* @vdev_id: vdev_id
|
||||||
* @params: RSSI change parameters
|
* @params: RSSI change parameters
|
||||||
@@ -100,4 +100,16 @@ QDF_STATUS
|
|||||||
cm_roam_fill_rssi_change_params(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
cm_roam_fill_rssi_change_params(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||||
struct wlan_roam_rssi_change_params *params);
|
struct wlan_roam_rssi_change_params *params);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cm_roam_send_disable_config() - Send roam module enable/disable cfg to fw
|
||||||
|
* @psoc: PSOC pointer
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
* @cfg: roaming enable/disable cfg
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
cm_roam_send_disable_config(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id, uint8_t cfg);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -129,6 +129,17 @@ wlan_cm_roam_scan_offload_rsp(uint8_t vdev_id, uint8_t reason);
|
|||||||
*/
|
*/
|
||||||
void wlan_cm_send_beacon_miss(uint8_t vdev_id, int32_t rssi);
|
void wlan_cm_send_beacon_miss(uint8_t vdev_id, int32_t rssi);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_cm_roam_neighbor_proceed_with_handoff_req() - invoke host handover to
|
||||||
|
* new AP
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
*
|
||||||
|
* This function gets called to invoke host handover to new AP
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_cm_roam_neighbor_proceed_with_handoff_req(uint8_t vdev_id);
|
||||||
#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,
|
||||||
|
@@ -1207,6 +1207,7 @@ struct set_pcl_req {
|
|||||||
* @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
|
* @send_roam_abort: send roam abort
|
||||||
|
* @send_roam_disable_config: send roam disable config
|
||||||
*/
|
*/
|
||||||
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,
|
||||||
@@ -1230,6 +1231,8 @@ struct wlan_cm_roam_tx_ops {
|
|||||||
struct wlan_per_roam_config_req *req);
|
struct wlan_per_roam_config_req *req);
|
||||||
QDF_STATUS (*send_roam_triggers)(struct wlan_objmgr_vdev *vdev,
|
QDF_STATUS (*send_roam_triggers)(struct wlan_objmgr_vdev *vdev,
|
||||||
struct wlan_roam_triggers *req);
|
struct wlan_roam_triggers *req);
|
||||||
|
QDF_STATUS (*send_roam_disable_config)(struct wlan_objmgr_vdev *vdev,
|
||||||
|
struct roam_disable_cfg *req);
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -112,6 +112,7 @@ QDF_STATUS wlan_cm_tgt_send_roam_abort_req(struct wlan_objmgr_psoc *psoc,
|
|||||||
* wlan_cm_tgt_send_roam_per_config() - Send roam per config command to FW
|
* wlan_cm_tgt_send_roam_per_config() - Send roam per config command to FW
|
||||||
* @psoc: psoc pointer
|
* @psoc: psoc pointer
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
|
* @req: per roam config parameter
|
||||||
*
|
*
|
||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
@@ -131,5 +132,18 @@ QDF_STATUS wlan_cm_tgt_send_roam_triggers(struct wlan_objmgr_psoc *psoc,
|
|||||||
uint8_t vdev_id,
|
uint8_t vdev_id,
|
||||||
struct wlan_roam_triggers *req);
|
struct wlan_roam_triggers *req);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_cm_tgt_send_roam_disable_config() - Send roam disable config command
|
||||||
|
* to FW
|
||||||
|
* @psoc: psoc pointer
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
* @req: roam disable config parameter
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_cm_tgt_send_roam_disable_config(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id,
|
||||||
|
struct roam_disable_cfg *req);
|
||||||
#endif
|
#endif
|
||||||
#endif /* CM_TGT_IF_TX_API_H__ */
|
#endif /* CM_TGT_IF_TX_API_H__ */
|
||||||
|
@@ -35,6 +35,8 @@ ucfg_user_space_enable_disable_rso(struct wlan_objmgr_pdev *pdev,
|
|||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
bool lfr_enabled;
|
bool lfr_enabled;
|
||||||
enum roam_offload_state state;
|
enum roam_offload_state state;
|
||||||
|
uint32_t set_val = 0;
|
||||||
|
enum roam_offload_state cur_state;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the ini "FastRoamEnabled" is disabled, don't allow the
|
* If the ini "FastRoamEnabled" is disabled, don't allow the
|
||||||
@@ -50,6 +52,19 @@ ucfg_user_space_enable_disable_rso(struct wlan_objmgr_pdev *pdev,
|
|||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cur_state = mlme_get_roam_state(psoc, vdev_id);
|
||||||
|
if (cur_state == WLAN_ROAM_INIT) {
|
||||||
|
if (!is_fast_roam_enabled)
|
||||||
|
set_val =
|
||||||
|
WMI_VDEV_ROAM_11KV_CTRL_DISABLE_FW_TRIGGER_ROAMING;
|
||||||
|
|
||||||
|
status = cm_roam_send_disable_config(psoc, vdev_id, set_val);
|
||||||
|
if (!QDF_IS_STATUS_SUCCESS(status))
|
||||||
|
mlme_err("ROAM: update fast roaming failed, status: %d",
|
||||||
|
status);
|
||||||
|
}
|
||||||
|
wlan_mlme_set_usr_disabled_roaming(psoc, !is_fast_roam_enabled);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Supplicant_disabled_roaming flag is the global flag to control
|
* Supplicant_disabled_roaming flag is the global flag to control
|
||||||
* roam offload from supplicant. Driver cannot enable roaming if
|
* roam offload from supplicant. Driver cannot enable roaming if
|
||||||
|
@@ -358,6 +358,36 @@ QDF_STATUS wlan_cm_tgt_send_roam_triggers(struct wlan_objmgr_psoc *psoc,
|
|||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
QDF_STATUS wlan_cm_tgt_send_roam_disable_config(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id,
|
||||||
|
struct roam_disable_cfg *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_disable_config) {
|
||||||
|
mlme_err("CM_RSO: vdev %d send_roam_disable_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_disable_config(vdev, req);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
mlme_debug("CM_RSO: vdev %d fail to send roam disable config",
|
||||||
|
vdev_id);
|
||||||
|
|
||||||
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -20044,6 +20044,20 @@ wlan_cm_roam_scan_offload_rsp(uint8_t vdev_id, uint8_t reason)
|
|||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_cm_roam_neighbor_proceed_with_handoff_req(uint8_t vdev_id)
|
||||||
|
{
|
||||||
|
struct mac_context *mac_ctx;
|
||||||
|
|
||||||
|
mac_ctx = sme_get_mac_context();
|
||||||
|
if (!mac_ctx) {
|
||||||
|
sme_err("mac_ctx is NULL");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return csr_neighbor_roam_proceed_with_handoff_req(mac_ctx, vdev_id);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
|
Reference in New Issue
Block a user