qcacmn: Add public API for connection manager

Add public util API for connection manager to get connection
states and set max connection attempts.

Change-Id: I66d4318c7465e3926d6bacdc70dbb849827bf2c4
CRs-Fixed: 2787323
This commit is contained in:
gaurank kathpalia 2020-09-29 07:54:03 +05:30 • committed by snandini
commit 619e46370d
11 changed files with 370 additions and 71 deletions

View file

@ -111,10 +111,8 @@ cm_ser_connect_cb(struct wlan_serialization_command *cmd,
vdev = cmd->vdev;
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx) {
mlme_err("cm_ctx is NULL, reason: %d", reason);
if (!cm_ctx)
return QDF_STATUS_E_NULL_VALUE;
}
switch (reason) {
case WLAN_SER_CB_ACTIVATE_CMD:
@ -308,7 +306,6 @@ void cm_hw_mode_change_resp(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id,
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx) {
mlme_err("cm ctx NULL");
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_CM_ID);
return;
}
@ -629,9 +626,10 @@ static QDF_STATUS cm_get_valid_candidate(struct cnx_mgr *cm_ctx,
QDF_STATUS status = QDF_STATUS_SUCCESS;
if (cm_req->connect_req.connect_attempts >=
CM_MAX_CANDIDATE_TO_BE_TRIED) {
mlme_info("Max %d candidates tried for the conenction",
cm_req->connect_req.connect_attempts);
cm_ctx->max_connect_attempts) {
mlme_info("%d attempts tried for the connect req (cm id %d), max %d",
cm_req->connect_req.connect_attempts,
cm_req->cm_id, cm_ctx->max_connect_attempts);
return QDF_STATUS_E_FAILURE;
}
@ -744,10 +742,8 @@ QDF_STATUS cm_try_next_candidate(struct cnx_mgr *cm_ctx,
struct cm_req *cm_req;
cm_req = cm_get_req_by_cm_id(cm_ctx, resp->cm_id);
if (!cm_req) {
mlme_err("cm req NULL connect fail");
if (!cm_req)
return QDF_STATUS_E_FAILURE;
}
status = cm_get_valid_candidate(cm_ctx, cm_req);
if (QDF_IS_STATUS_ERROR(status))
@ -786,10 +782,8 @@ QDF_STATUS cm_connect_active(struct cnx_mgr *cm_ctx, wlan_cm_id *cm_id)
struct wlan_cm_connect_req *req;
cm_req = cm_get_req_by_cm_id(cm_ctx, *cm_id);
if (!cm_req) {
mlme_err("cm req NULL for *cm_id %x", *cm_id);
if (!cm_req)
return QDF_STATUS_E_INVAL;
}
cm_ctx->active_cm_id = *cm_id;
req = &cm_req->connect_req.req;
@ -822,10 +816,8 @@ cm_peer_create_on_bss_select_ind_resp(struct cnx_mgr *cm_ctx, wlan_cm_id *cm_id)
struct cm_req *cm_req;
cm_req = cm_get_req_by_cm_id(cm_ctx, *cm_id);
if (!cm_req) {
mlme_err("cm req NULL for *cm_id %x", *cm_id);
if (!cm_req)
return QDF_STATUS_E_FAILURE;
}
cm_create_bss_peer(cm_ctx, &cm_req->connect_req);
@ -840,10 +832,8 @@ cm_resume_connect_after_peer_create(struct cnx_mgr *cm_ctx, wlan_cm_id *cm_id)
QDF_STATUS status;
cm_req = cm_get_req_by_cm_id(cm_ctx, *cm_id);
if (!cm_req) {
mlme_err("cm req NULL for *cm_id %x", *cm_id);
if (!cm_req)
return QDF_STATUS_E_FAILURE;
}
/*
* fill vdev crypto for the peer.
*/
@ -906,14 +896,10 @@ QDF_STATUS cm_connect_complete(struct cnx_mgr *cm_ctx,
return QDF_STATUS_SUCCESS;
sm_state = cm_get_state(cm_ctx);
mlme_cm_osif_connect_complete(cm_ctx->vdev, resp);
mlme_cm_connect_complete_ind(cm_ctx->vdev, resp);
if (sm_state == WLAN_CM_S_INIT || sm_state == WLAN_CM_S_CONNECTED) {
cm_inform_if_mgr_connect_complete(cm_ctx->vdev,
resp->connect_status);
cm_inform_blm_connect_complete(cm_ctx->vdev, resp);
}
mlme_cm_osif_connect_complete(cm_ctx->vdev, resp);
cm_inform_if_mgr_connect_complete(cm_ctx->vdev, resp->connect_status);
cm_inform_blm_connect_complete(cm_ctx->vdev, resp);
/* Update scan entry in case connect is success or fails with bssid */
if (!qdf_is_macaddr_zero(&resp->bssid)) {
@ -932,8 +918,8 @@ QDF_STATUS cm_connect_complete(struct cnx_mgr *cm_ctx,
}
/*
* update fils/wep key and inform legacy, update bcn filter and scan
* entry mlme info,, start OBSS scan for open mode.
* update fils/wep key and inform legacy, update bcn filter,
* start OBSS scan for open mode.
*/
cm_remove_cmd(cm_ctx, resp->cm_id);
@ -965,10 +951,8 @@ QDF_STATUS cm_connect_rsp(struct wlan_objmgr_vdev *vdev,
uint32_t prefix;
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx) {
mlme_err("cm ctx NULL");
if (!cm_ctx)
return QDF_STATUS_E_INVAL;
}
cm_id = cm_ctx->active_cm_id;
prefix = CM_ID_GET_PREFIX(cm_id);
@ -1024,10 +1008,8 @@ QDF_STATUS cm_bss_select_ind_rsp(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_connect_rsp *resp;
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx) {
mlme_err("cm ctx NULL");
if (!cm_ctx)
return QDF_STATUS_E_INVAL;
}
cm_id = cm_ctx->active_cm_id;
prefix = CM_ID_GET_PREFIX(cm_id);
@ -1086,10 +1068,8 @@ QDF_STATUS cm_bss_peer_create_rsp(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_connect_rsp *resp;
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx) {
mlme_err("cm ctx NULL");
if (!cm_ctx)
return QDF_STATUS_E_INVAL;
}
cm_id = cm_ctx->active_cm_id;
prefix = CM_ID_GET_PREFIX(cm_id);
@ -1252,11 +1232,8 @@ QDF_STATUS cm_connect_start_req(struct wlan_objmgr_vdev *vdev,
QDF_STATUS status;
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx) {
mlme_err("cm ctx NULL");
if (!cm_ctx)
return QDF_STATUS_E_INVAL;
}
cm_vdev_scan_cancel(wlan_vdev_get_pdev(cm_ctx->vdev), cm_ctx->vdev);

View file

@ -137,10 +137,8 @@ QDF_STATUS cm_disconnect_active(struct cnx_mgr *cm_ctx, wlan_cm_id *cm_id)
struct cm_req *cm_req;
cm_req = cm_get_req_by_cm_id(cm_ctx, *cm_id);
if (!cm_req) {
mlme_err("cm req NULL connect fail");
if (!cm_req)
return QDF_STATUS_E_INVAL;
}
cm_ctx->active_cm_id = *cm_id;
@ -185,11 +183,8 @@ QDF_STATUS cm_disconnect_start_req(struct wlan_objmgr_vdev *vdev,
QDF_STATUS status;
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx) {
mlme_err("cm ctx NULL");
if (!cm_ctx)
return QDF_STATUS_E_INVAL;
}
/*
* This would be freed as part of removal from cm req list if adding

View file

@ -84,6 +84,8 @@ QDF_STATUS wlan_cm_init(struct vdev_mlme_obj *vdev_mlme)
vdev_mlme->cnx_mgr_ctx = NULL;
return QDF_STATUS_E_NOMEM;
}
vdev_mlme->cnx_mgr_ctx->max_connect_attempts =
CM_MAX_CONNECT_ATTEMPTS;
qdf_list_create(&vdev_mlme->cnx_mgr_ctx->req_list, CM_MAX_REQ);
cm_req_lock_create(vdev_mlme->cnx_mgr_ctx);

View file

@ -28,8 +28,8 @@
#ifdef FEATURE_CM_ENABLE
#include <wlan_cm_public_struct.h>
/* Max candidate to be tried to connect */
#define CM_MAX_CANDIDATE_TO_BE_TRIED 5
/* Max candidate/attempts to be tried to connect */
#define CM_MAX_CONNECT_ATTEMPTS 5
/* Max time to wait for scan for SSID */
#define CM_SCAN_MAX_TIME 5000
/* Max connect/disconnect/roam req that can be queued at a time */
@ -169,6 +169,7 @@ struct connect_ies {
* @req_ie: request ies for connect/disconnect set by osif/user separately from
* connect req
* @global_cmd_id: global cmd id for getting cm id for connect/disconnect req
* @max_connect_attempts: Max attempts to be tried for a connect req
*/
struct cnx_mgr {
struct wlan_objmgr_vdev *vdev;
@ -185,6 +186,7 @@ struct cnx_mgr {
bool force_rsne_override;
struct connect_ies req_ie;
qdf_atomic_t global_cmd_id;
uint8_t max_connect_attempts;
};
/**

View file

@ -308,13 +308,17 @@ static inline bool cm_ser_get_blocking_cmd(void)
*/
wlan_cm_id cm_get_cm_id(struct cnx_mgr *cm_ctx, enum wlan_cm_source source);
struct cnx_mgr *cm_get_cm_ctx_fl(struct wlan_objmgr_vdev *vdev,
const char *func, uint32_t line);
/**
* cm_get_cm_ctx() - Get connection manager context from vdev
* @vdev: vdev object pointer
*
* Return: pointer to connection manager context
*/
struct cnx_mgr *cm_get_cm_ctx(struct wlan_objmgr_vdev *vdev);
#define cm_get_cm_ctx(vdev) \
cm_get_cm_ctx_fl(vdev, __func__, __LINE__)
/**
* cm_reset_active_cm_id() - Reset active cm_id from cm context, if its same as
@ -417,6 +421,9 @@ QDF_STATUS cm_add_req_to_list_and_indicate_osif(struct cnx_mgr *cm_ctx,
struct cm_req *cm_req,
enum wlan_cm_source source);
struct cm_req *cm_get_req_by_cm_id_fl(struct cnx_mgr *cm_ctx, wlan_cm_id cm_id,
const char *func, uint32_t line);
/**
* cm_get_req_by_cm_id() - Get cm req matching the cm id
* @cm_ctx: connection manager context
@ -428,7 +435,8 @@ QDF_STATUS cm_add_req_to_list_and_indicate_osif(struct cnx_mgr *cm_ctx,
*
* Return: cm req from the req list whose cm id matches the argument
*/
struct cm_req *cm_get_req_by_cm_id(struct cnx_mgr *cm_ctx, wlan_cm_id cm_id);
#define cm_get_req_by_cm_id(cm_ctx, cm_id) \
cm_get_req_by_cm_id_fl(cm_ctx, cm_id, __func__, __LINE__)
/**
* cm_vdev_scan_cancel() - cancel all scans for vdev
@ -440,4 +448,56 @@ struct cm_req *cm_get_req_by_cm_id(struct cnx_mgr *cm_ctx, wlan_cm_id cm_id);
void cm_vdev_scan_cancel(struct wlan_objmgr_pdev *pdev,
struct wlan_objmgr_vdev *vdev);
/**
* cm_set_max_connect_attempts() - Set max connect attempts
* @vdev: vdev pointer
* @max_connect_attempts: max connect attempts to be set.
*
* Set max connect attempts. Max value is limited to CM_MAX_CONNECT_ATTEMPTS.
*
* Return: void
*/
void cm_set_max_connect_attempts(struct wlan_objmgr_vdev *vdev,
uint8_t max_connect_attempts);
/**
* cm_is_vdev_connecting() - check if vdev is in conneting state
* @vdev: vdev pointer
*
* Return: bool
*/
bool cm_is_vdev_connecting(struct wlan_objmgr_vdev *vdev);
/**
* cm_is_vdev_connected() - check if vdev is in conneted state
* @vdev: vdev pointer
*
* Return: bool
*/
bool cm_is_vdev_connected(struct wlan_objmgr_vdev *vdev);
/**
* cm_is_vdev_disconnecting() - check if vdev is in disconneting state
* @vdev: vdev pointer
*
* Return: bool
*/
bool cm_is_vdev_disconnecting(struct wlan_objmgr_vdev *vdev);
/**
* cm_is_vdev_disconnected() - check if vdev is disconnected/init state
* @vdev: vdev pointer
*
* Return: bool
*/
bool cm_is_vdev_disconnected(struct wlan_objmgr_vdev *vdev);
/**
* cm_is_vdev_roaming() - check if vdev is in roaming state
* @vdev: vdev pointer
*
* Return: bool
*/
bool cm_is_vdev_roaming(struct wlan_objmgr_vdev *vdev);
#endif /* __WLAN_CM_MAIN_API_H__ */

View file

@ -853,10 +853,9 @@ QDF_STATUS cm_sm_deliver_event(struct wlan_objmgr_vdev *vdev,
}
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx) {
mlme_err("cm_ctx is NULL");
if (!cm_ctx)
return QDF_STATUS_E_FAILURE;
}
cm_lock_acquire(cm_ctx);
/* store entry state and sub state for prints */

View file

@ -47,15 +47,21 @@ wlan_cm_id cm_get_cm_id(struct cnx_mgr *cm_ctx, enum wlan_cm_source source)
return cmd_id;
}
struct cnx_mgr *cm_get_cm_ctx(struct wlan_objmgr_vdev *vdev)
struct cnx_mgr *cm_get_cm_ctx_fl(struct wlan_objmgr_vdev *vdev,
const char *func, uint32_t line)
{
struct vdev_mlme_obj *vdev_mlme;
struct cnx_mgr *cm_ctx = NULL;
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
if (!vdev_mlme)
return NULL;
if (vdev_mlme)
cm_ctx = vdev_mlme->cnx_mgr_ctx;
return vdev_mlme->cnx_mgr_ctx;
if (!cm_ctx)
mlme_nofl_err("%s:%u: cm_ctx NULL vdev %d", func, line,
wlan_vdev_get_id(vdev));
return cm_ctx;
}
void cm_reset_active_cm_id(struct wlan_objmgr_vdev *vdev, wlan_cm_id cm_id)
@ -174,7 +180,8 @@ exit:
return match;
}
struct cm_req *cm_get_req_by_cm_id(struct cnx_mgr *cm_ctx, wlan_cm_id cm_id)
struct cm_req *cm_get_req_by_cm_id_fl(struct cnx_mgr *cm_ctx, wlan_cm_id cm_id,
const char *func, uint32_t line)
{
qdf_list_node_t *cur_node = NULL, *next_node = NULL;
struct cm_req * cm_req;
@ -195,6 +202,9 @@ struct cm_req *cm_get_req_by_cm_id(struct cnx_mgr *cm_ctx, wlan_cm_id cm_id)
}
cm_req_lock_release(cm_ctx);
mlme_nofl_info("%s:%u: cm req not found for cm id %d", func,
line, cm_id);
return NULL;
}
@ -400,3 +410,103 @@ void cm_vdev_scan_cancel(struct wlan_objmgr_pdev *pdev,
if (QDF_IS_STATUS_ERROR(status))
mlme_err("Cancel scan request failed");
}
void cm_set_max_connect_attempts(struct wlan_objmgr_vdev *vdev,
uint8_t max_connect_attempts)
{
struct cnx_mgr *cm_ctx;
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx)
return;
cm_ctx->max_connect_attempts =
QDF_MIN(max_connect_attempts, CM_MAX_CONNECT_ATTEMPTS);
mlme_debug("max connect attempts set to %d, requested %d",
cm_ctx->max_connect_attempts, max_connect_attempts);
}
bool cm_is_vdev_connecting(struct wlan_objmgr_vdev *vdev)
{
struct cnx_mgr *cm_ctx;
enum wlan_cm_sm_state state;
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx)
return false;
state = cm_get_state(cm_ctx);
if (state == WLAN_CM_S_CONNECTING)
return true;
return false;
}
bool cm_is_vdev_connected(struct wlan_objmgr_vdev *vdev)
{
struct cnx_mgr *cm_ctx;
enum wlan_cm_sm_state state;
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx)
return false;
state = cm_get_state(cm_ctx);
if (state == WLAN_CM_S_CONNECTED)
return true;
return false;
}
bool cm_is_vdev_disconnecting(struct wlan_objmgr_vdev *vdev)
{
struct cnx_mgr *cm_ctx;
enum wlan_cm_sm_state state;
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx)
return false;
state = cm_get_state(cm_ctx);
if (state == WLAN_CM_S_DISCONNECTING)
return true;
return false;
}
bool cm_is_vdev_disconnected(struct wlan_objmgr_vdev *vdev)
{
struct cnx_mgr *cm_ctx;
enum wlan_cm_sm_state state;
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx)
return false;
state = cm_get_state(cm_ctx);
if (state == WLAN_CM_S_INIT)
return true;
return false;
}
bool cm_is_vdev_roaming(struct wlan_objmgr_vdev *vdev)
{
struct cnx_mgr *cm_ctx;
enum wlan_cm_sm_state state;
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx)
return false;
state = cm_get_state(cm_ctx);
if (state == WLAN_CM_S_ROAMING)
return true;
return false;
}

View file

@ -109,6 +109,58 @@ QDF_STATUS wlan_cm_bss_peer_delete_rsp(struct wlan_objmgr_vdev *vdev,
QDF_STATUS wlan_cm_disconnect_rsp(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_discon_rsp cm_discon_rsp);
/**
* wlan_cm_set_max_connect_attempts() - Set max connect attempts
* @vdev: vdev pointer
* @max_connect_attempts: max connect attempts to be set.
*
* Set max connect attempts. Max value is limited to CM_MAX_CONNECT_ATTEMPTS.
*
* Return: void
*/
void wlan_cm_set_max_connect_attempts(struct wlan_objmgr_vdev *vdev,
uint8_t max_connect_attempts);
/**
* wlan_cm_is_vdev_connecting() - check if vdev is in conneting state
* @vdev: vdev pointer
*
* Return: bool
*/
bool wlan_cm_is_vdev_connecting(struct wlan_objmgr_vdev *vdev);
/**
* wlan_cm_is_vdev_connected() - check if vdev is in conneted state
* @vdev: vdev pointer
*
* Return: bool
*/
bool wlan_cm_is_vdev_connected(struct wlan_objmgr_vdev *vdev);
/**
* wlan_cm_is_vdev_disconnecting() - check if vdev is in disconneting state
* @vdev: vdev pointer
*
* Return: bool
*/
bool wlan_cm_is_vdev_disconnecting(struct wlan_objmgr_vdev *vdev);
/**
* wlan_cm_is_vdev_disconnected() - check if vdev is disconnected/init state
* @vdev: vdev pointer
*
* Return: bool
*/
bool wlan_cm_is_vdev_disconnected(struct wlan_objmgr_vdev *vdev);
/**
* wlan_cm_is_vdev_roaming() - check if vdev is in roaming state
* @vdev: vdev pointer
*
* Return: bool
*/
bool wlan_cm_is_vdev_roaming(struct wlan_objmgr_vdev *vdev);
/**
* wlan_cm_reason_code_to_str() - return string conversion of reason code
* @reason: reason code.

View file

@ -34,13 +34,8 @@
*
* Return: QDF_STATUS
*/
static inline
QDF_STATUS ucfg_cm_start_connect(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_connect_req *req)
{
return wlan_cm_start_connect(vdev, req);
}
struct wlan_cm_connect_req *req);
/**
* ucfg_cm_start_disconnect() - disconnect start request
@ -49,12 +44,48 @@ QDF_STATUS ucfg_cm_start_connect(struct wlan_objmgr_vdev *vdev,
*
* Return: QDF_STATUS
*/
static inline
QDF_STATUS ucfg_cm_start_disconnect(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_disconnect_req *req)
{
return wlan_cm_start_disconnect(vdev, req);
}
struct wlan_cm_disconnect_req *req);
/**
* ucfg_cm_is_vdev_connecting() - check if vdev is in conneting state
* @vdev: vdev pointer
*
* Return: bool
*/
bool ucfg_cm_is_vdev_connecting(struct wlan_objmgr_vdev *vdev);
/**
* ucfg_cm_is_vdev_connected() - check if vdev is in conneted state
* @vdev: vdev pointer
*
* Return: bool
*/
bool ucfg_cm_is_vdev_connected(struct wlan_objmgr_vdev *vdev);
/**
* ucfg_cm_is_vdev_disconnecting() - check if vdev is in disconneting state
* @vdev: vdev pointer
*
* Return: bool
*/
bool ucfg_cm_is_vdev_disconnecting(struct wlan_objmgr_vdev *vdev);
/**
* ucfg_cm_is_vdev_disconnected() - check if vdev is disconnected/init state
* @vdev: vdev pointer
*
* Return: bool
*/
bool ucfg_cm_is_vdev_disconnected(struct wlan_objmgr_vdev *vdev);
/**
* ucfg_cm_is_vdev_roaming() - check if vdev is in roaming state
* @vdev: vdev pointer
*
* Return: bool
*/
bool ucfg_cm_is_vdev_roaming(struct wlan_objmgr_vdev *vdev);
/**
* ucfg_cm_reason_code_to_str() - return string conversion of reason code

View file

@ -72,6 +72,37 @@ QDF_STATUS wlan_cm_disconnect_rsp(struct wlan_objmgr_vdev *vdev,
return QDF_STATUS_SUCCESS;
}
void wlan_cm_set_max_connect_attempts(struct wlan_objmgr_vdev *vdev,
uint8_t max_connect_attempts)
{
cm_set_max_connect_attempts(vdev, max_connect_attempts);
}
bool wlan_cm_is_vdev_connecting(struct wlan_objmgr_vdev *vdev)
{
return cm_is_vdev_connecting(vdev);
}
bool wlan_cm_is_vdev_connected(struct wlan_objmgr_vdev *vdev)
{
return cm_is_vdev_connecting(vdev);
}
bool wlan_cm_is_vdev_disconnecting(struct wlan_objmgr_vdev *vdev)
{
return cm_is_vdev_connecting(vdev);
}
bool wlan_cm_is_vdev_disconnected(struct wlan_objmgr_vdev *vdev)
{
return cm_is_vdev_connecting(vdev);
}
bool wlan_cm_is_vdev_roaming(struct wlan_objmgr_vdev *vdev)
{
return cm_is_vdev_connecting(vdev);
}
const char *wlan_cm_reason_code_to_str(enum wlan_reason_code reason)
{
if (reason > REASON_PROP_START)

View file

@ -19,3 +19,43 @@
*
* This file maintains definitaions public ucfg apis.
*/
#include <wlan_cm_ucfg_api.h>
#include "connection_mgr/core/src/wlan_cm_main_api.h"
QDF_STATUS ucfg_cm_start_connect(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_connect_req *req)
{
return cm_connect_start_req(vdev, req);
}
QDF_STATUS ucfg_cm_start_disconnect(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_disconnect_req *req)
{
return cm_disconnect_start_req(vdev, req);
}
bool ucfg_cm_is_vdev_connecting(struct wlan_objmgr_vdev *vdev)
{
return cm_is_vdev_connecting(vdev);
}
bool ucfg_cm_is_vdev_connected(struct wlan_objmgr_vdev *vdev)
{
return cm_is_vdev_connecting(vdev);
}
bool ucfg_cm_is_vdev_disconnecting(struct wlan_objmgr_vdev *vdev)
{
return cm_is_vdev_connecting(vdev);
}
bool ucfg_cm_is_vdev_disconnected(struct wlan_objmgr_vdev *vdev)
{
return cm_is_vdev_connecting(vdev);
}
bool ucfg_cm_is_vdev_roaming(struct wlan_objmgr_vdev *vdev)
{
return cm_is_vdev_connecting(vdev);
}