qcacld-3.0: Add VDEV state machine for STA disconnection
Add support for VDEV state machine support for STA disconnection Change-Id: Iee7274fbc8ae985d034a29f920faa38aab68ccc7 CRs-Fixed: 2322539
This commit is contained in:
parent
bfdca56d3d
commit
30bb8407cd
@ -115,5 +115,14 @@ mlme_set_vdev_start_failed(struct wlan_objmgr_vdev *vdev, bool val);
|
|||||||
*/
|
*/
|
||||||
bool mlme_get_vdev_start_failed(struct wlan_objmgr_vdev *vdev);
|
bool mlme_get_vdev_start_failed(struct wlan_objmgr_vdev *vdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mlme_is_vdev_in_beaconning_mode() - check if vdev is beaconing mode
|
||||||
|
* @vdev_opmode: vdev opmode
|
||||||
|
*
|
||||||
|
* To check if vdev is operating in beaconing mode or not.
|
||||||
|
*
|
||||||
|
* Return: true or false
|
||||||
|
*/
|
||||||
|
bool mlme_is_vdev_in_beaconning_mode(enum QDF_OPMODE vdev_opmode);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@ -22,19 +22,12 @@
|
|||||||
#include "wlan_mlme_vdev_mgr_interface.h"
|
#include "wlan_mlme_vdev_mgr_interface.h"
|
||||||
#include "lim_utils.h"
|
#include "lim_utils.h"
|
||||||
#include "wma_api.h"
|
#include "wma_api.h"
|
||||||
|
#include "lim_types.h"
|
||||||
|
|
||||||
static struct vdev_mlme_ops sta_mlme_ops;
|
static struct vdev_mlme_ops sta_mlme_ops;
|
||||||
static struct vdev_mlme_ops ap_mlme_ops;
|
static struct vdev_mlme_ops ap_mlme_ops;
|
||||||
|
|
||||||
/**
|
bool mlme_is_vdev_in_beaconning_mode(enum QDF_OPMODE vdev_opmode)
|
||||||
* mlme_is_vdev_in_beaconning_mode() - check if vdev is beaconing mode
|
|
||||||
* @vdev_opmode: vdev opmode
|
|
||||||
*
|
|
||||||
* This function is called to register vdev manager operations
|
|
||||||
*
|
|
||||||
* Return: QDF_STATUS
|
|
||||||
*/
|
|
||||||
static inline bool mlme_is_vdev_in_beaconning_mode(enum QDF_OPMODE vdev_opmode)
|
|
||||||
{
|
{
|
||||||
switch (vdev_opmode) {
|
switch (vdev_opmode) {
|
||||||
case QDF_SAP_MODE:
|
case QDF_SAP_MODE:
|
||||||
@ -101,6 +94,22 @@ static QDF_STATUS sta_mlme_vdev_start_send(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
event_data);
|
event_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sta_mlme_start_continue() - vdev start rsp calback
|
||||||
|
* @vdev_mlme: vdev mlme object
|
||||||
|
* @data_len: event data length
|
||||||
|
* @data: event data
|
||||||
|
*
|
||||||
|
* This function is called to handle the VDEV START/RESTART calback
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static QDF_STATUS sta_mlme_start_continue(struct vdev_mlme_obj *vdev_mlme,
|
||||||
|
uint16_t data_len, void *data)
|
||||||
|
{
|
||||||
|
return wma_sta_mlme_vdev_start_continue(vdev_mlme, data_len, data);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sta_mlme_vdev_restart_send() - MLME vdev restart send
|
* sta_mlme_vdev_restart_send() - MLME vdev restart send
|
||||||
* @vdev_mlme: vdev mlme object
|
* @vdev_mlme: vdev mlme object
|
||||||
@ -184,7 +193,8 @@ static QDF_STATUS sta_mlme_vdev_disconnect_bss(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
uint16_t event_data_len,
|
uint16_t event_data_len,
|
||||||
void *event_data)
|
void *event_data)
|
||||||
{
|
{
|
||||||
return QDF_STATUS_SUCCESS;
|
return lim_sta_mlme_vdev_disconnect_bss(vdev_mlme, event_data_len,
|
||||||
|
event_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -198,14 +208,14 @@ static QDF_STATUS sta_mlme_vdev_disconnect_bss(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
static QDF_STATUS sta_mlme_vdev_stop_send(struct vdev_mlme_obj *vdev_mlme,
|
static QDF_STATUS sta_mlme_vdev_stop_send(struct vdev_mlme_obj *vdev_mlme,
|
||||||
uint16_t event_data_len,
|
uint16_t data_len,
|
||||||
void *event_data)
|
void *data)
|
||||||
{
|
{
|
||||||
return QDF_STATUS_SUCCESS;
|
return lim_sta_mlme_vdev_stop_send(vdev_mlme, data_len, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sta_mlme_vdev_stop_continue() - MLME vdev stop send callback
|
* vdevmgr_mlme_stop_continue() - MLME vdev stop send callback
|
||||||
* @vdev_mlme: vdev mlme object
|
* @vdev_mlme: vdev mlme object
|
||||||
* @event_data_len: event data length
|
* @event_data_len: event data length
|
||||||
* @event_data: event data
|
* @event_data: event data
|
||||||
@ -215,48 +225,14 @@ static QDF_STATUS sta_mlme_vdev_stop_send(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
*
|
*
|
||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
static QDF_STATUS sta_mlme_vdev_stop_continue(struct vdev_mlme_obj *vdev_mlme,
|
static QDF_STATUS vdevmgr_mlme_stop_continue(struct vdev_mlme_obj *vdev_mlme,
|
||||||
uint16_t event_data_len,
|
uint16_t data_len,
|
||||||
void *event_data)
|
void *data)
|
||||||
{
|
{
|
||||||
return QDF_STATUS_SUCCESS;
|
return wma_mlme_vdev_stop_continue(vdev_mlme, data_len, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sta_mlme_vdev_down_send() - MLME vdev down send callback
|
|
||||||
* @vdev_mlme: vdev mlme object
|
|
||||||
* @event_data_len: event data length
|
|
||||||
* @event_data: event data
|
|
||||||
*
|
|
||||||
* This function is to send the vdev down to firmware
|
|
||||||
*
|
|
||||||
* Return: QDF_STATUS
|
|
||||||
*/
|
|
||||||
static QDF_STATUS sta_mlme_vdev_down_send(struct vdev_mlme_obj *vdev_mlme,
|
|
||||||
uint16_t event_data_len,
|
|
||||||
void *event_data)
|
|
||||||
{
|
|
||||||
return QDF_STATUS_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* sta_vdev_notify_down_complete() - MLME vdev down complete callback
|
|
||||||
* @vdev_mlme: vdev mlme object
|
|
||||||
* @event_data_len: event data length
|
|
||||||
* @event_data: event data
|
|
||||||
*
|
|
||||||
* This function is called on moving vdev state to down.
|
|
||||||
*
|
|
||||||
* Return: QDF_STATUS
|
|
||||||
*/
|
|
||||||
static QDF_STATUS sta_vdev_notify_down_complete(struct vdev_mlme_obj *vdev_mlme,
|
|
||||||
uint16_t event_data_len,
|
|
||||||
void *event_data)
|
|
||||||
{
|
|
||||||
return QDF_STATUS_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ap_mlme_vdev_start_send () - send vdev start req
|
* ap_mlme_vdev_start_send () - send vdev start req
|
||||||
* @vdev_mlme: vdev mlme object
|
* @vdev_mlme: vdev mlme object
|
||||||
* @data_len: event data length
|
* @data_len: event data length
|
||||||
@ -273,7 +249,7 @@ static QDF_STATUS ap_mlme_vdev_start_send(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mlme_start_continue () - vdev start rsp calback
|
* ap_start_continue () - vdev start rsp calback
|
||||||
* @vdev_mlme: vdev mlme object
|
* @vdev_mlme: vdev mlme object
|
||||||
* @data_len: event data length
|
* @data_len: event data length
|
||||||
* @data: event data
|
* @data: event data
|
||||||
@ -282,10 +258,10 @@ static QDF_STATUS ap_mlme_vdev_start_send(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
*
|
*
|
||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
static QDF_STATUS vdevmgr_mlme_start_continue(struct vdev_mlme_obj *vdev_mlme,
|
static QDF_STATUS ap_mlme_start_continue(struct vdev_mlme_obj *vdev_mlme,
|
||||||
uint16_t data_len, void *data)
|
uint16_t data_len, void *data)
|
||||||
{
|
{
|
||||||
return wma_mlme_vdev_start_continue(vdev_mlme, data_len, data);
|
return wma_ap_mlme_vdev_start_continue(vdev_mlme, data_len, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -378,22 +354,6 @@ static QDF_STATUS ap_mlme_vdev_stop_send(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
return lim_ap_mlme_vdev_stop_send(vdev_mlme, data_len, data);
|
return lim_ap_mlme_vdev_stop_send(vdev_mlme, data_len, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* ap_mlme_vdev_stop_continue() - callback to handle stop vdev resp
|
|
||||||
* @vdev_mlme: vdev mlme object
|
|
||||||
* @data_len: event data length
|
|
||||||
* @data: event data
|
|
||||||
*
|
|
||||||
* This function is called to handle stop vdev resp
|
|
||||||
*
|
|
||||||
* Return: QDF_STATUS
|
|
||||||
*/
|
|
||||||
static QDF_STATUS ap_mlme_vdev_stop_continue(struct vdev_mlme_obj *vdev_mlme,
|
|
||||||
uint16_t data_len, void *data)
|
|
||||||
{
|
|
||||||
return wma_ap_mlme_vdev_stop_continue(vdev_mlme, data_len, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ap_mlme_vdev_down_send() - callback to send vdev down req
|
* ap_mlme_vdev_down_send() - callback to send vdev down req
|
||||||
* @vdev_mlme: vdev mlme object
|
* @vdev_mlme: vdev mlme object
|
||||||
@ -404,13 +364,13 @@ static QDF_STATUS ap_mlme_vdev_stop_continue(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
*
|
*
|
||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
static QDF_STATUS ap_mlme_vdev_down_send(struct vdev_mlme_obj *vdev_mlme,
|
static QDF_STATUS vdevmgr_mlme_vdev_down_send(struct vdev_mlme_obj *vdev_mlme,
|
||||||
uint16_t data_len, void *data)
|
uint16_t data_len, void *data)
|
||||||
{
|
{
|
||||||
return wma_ap_mlme_vdev_down_send(vdev_mlme, data_len, data);
|
return wma_ap_mlme_vdev_down_send(vdev_mlme, data_len, data);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* ap_vdev_notify_down_complete() - callback to indicate vdev down is completed
|
* vdevmgr_notify_down_complete() - callback to indicate vdev down is completed
|
||||||
* @vdev_mlme: vdev mlme object
|
* @vdev_mlme: vdev mlme object
|
||||||
* @data_len: event data length
|
* @data_len: event data length
|
||||||
* @data: event data
|
* @data: event data
|
||||||
@ -419,7 +379,7 @@ static QDF_STATUS ap_mlme_vdev_down_send(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
*
|
*
|
||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
static QDF_STATUS ap_vdev_notify_down_complete(struct vdev_mlme_obj *vdev_mlme,
|
static QDF_STATUS vdevmgr_notify_down_complete(struct vdev_mlme_obj *vdev_mlme,
|
||||||
uint16_t data_len, void *data)
|
uint16_t data_len, void *data)
|
||||||
{
|
{
|
||||||
return wma_ap_mlme_vdev_notify_down_complete(vdev_mlme, data_len, data);
|
return wma_ap_mlme_vdev_notify_down_complete(vdev_mlme, data_len, data);
|
||||||
@ -672,15 +632,15 @@ static QDF_STATUS ap_vdev_dfs_cac_timer_stop(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
static struct vdev_mlme_ops sta_mlme_ops = {
|
static struct vdev_mlme_ops sta_mlme_ops = {
|
||||||
.mlme_vdev_start_send = sta_mlme_vdev_start_send,
|
.mlme_vdev_start_send = sta_mlme_vdev_start_send,
|
||||||
.mlme_vdev_restart_send = sta_mlme_vdev_restart_send,
|
.mlme_vdev_restart_send = sta_mlme_vdev_restart_send,
|
||||||
.mlme_vdev_start_continue = vdevmgr_mlme_start_continue,
|
.mlme_vdev_start_continue = sta_mlme_start_continue,
|
||||||
.mlme_vdev_sta_conn_start = sta_mlme_vdev_start_connection,
|
.mlme_vdev_sta_conn_start = sta_mlme_vdev_start_connection,
|
||||||
.mlme_vdev_up_send = sta_mlme_vdev_up_send,
|
.mlme_vdev_up_send = sta_mlme_vdev_up_send,
|
||||||
.mlme_vdev_notify_up_complete = sta_mlme_vdev_notify_up_complete,
|
.mlme_vdev_notify_up_complete = sta_mlme_vdev_notify_up_complete,
|
||||||
.mlme_vdev_disconnect_peers = sta_mlme_vdev_disconnect_bss,
|
.mlme_vdev_disconnect_peers = sta_mlme_vdev_disconnect_bss,
|
||||||
.mlme_vdev_stop_send = sta_mlme_vdev_stop_send,
|
.mlme_vdev_stop_send = sta_mlme_vdev_stop_send,
|
||||||
.mlme_vdev_stop_continue = sta_mlme_vdev_stop_continue,
|
.mlme_vdev_stop_continue = vdevmgr_mlme_stop_continue,
|
||||||
.mlme_vdev_down_send = sta_mlme_vdev_down_send,
|
.mlme_vdev_down_send = vdevmgr_mlme_vdev_down_send,
|
||||||
.mlme_vdev_notify_down_complete = sta_vdev_notify_down_complete,
|
.mlme_vdev_notify_down_complete = vdevmgr_notify_down_complete,
|
||||||
.mlme_vdev_legacy_hdl_create = mlme_legacy_hdl_create,
|
.mlme_vdev_legacy_hdl_create = mlme_legacy_hdl_create,
|
||||||
.mlme_vdev_legacy_hdl_destroy = mlme_legacy_hdl_destroy,
|
.mlme_vdev_legacy_hdl_destroy = mlme_legacy_hdl_destroy,
|
||||||
};
|
};
|
||||||
@ -721,7 +681,7 @@ static struct vdev_mlme_ops ap_mlme_ops = {
|
|||||||
.mlme_vdev_start_send = ap_mlme_vdev_start_send,
|
.mlme_vdev_start_send = ap_mlme_vdev_start_send,
|
||||||
.mlme_vdev_restart_send = ap_mlme_vdev_restart_send,
|
.mlme_vdev_restart_send = ap_mlme_vdev_restart_send,
|
||||||
.mlme_vdev_stop_start_send = ap_mlme_vdev_stop_start_send,
|
.mlme_vdev_stop_start_send = ap_mlme_vdev_stop_start_send,
|
||||||
.mlme_vdev_start_continue = vdevmgr_mlme_start_continue,
|
.mlme_vdev_start_continue = ap_mlme_start_continue,
|
||||||
.mlme_vdev_start_req_failed = ap_mlme_vdev_start_req_failed,
|
.mlme_vdev_start_req_failed = ap_mlme_vdev_start_req_failed,
|
||||||
.mlme_vdev_up_send = ap_mlme_vdev_up_send,
|
.mlme_vdev_up_send = ap_mlme_vdev_up_send,
|
||||||
.mlme_vdev_notify_up_complete = ap_mlme_vdev_notify_up_complete,
|
.mlme_vdev_notify_up_complete = ap_mlme_vdev_notify_up_complete,
|
||||||
@ -729,9 +689,9 @@ static struct vdev_mlme_ops ap_mlme_ops = {
|
|||||||
.mlme_vdev_disconnect_peers = ap_mlme_vdev_disconnect_peers,
|
.mlme_vdev_disconnect_peers = ap_mlme_vdev_disconnect_peers,
|
||||||
.mlme_vdev_dfs_cac_timer_stop = ap_vdev_dfs_cac_timer_stop,
|
.mlme_vdev_dfs_cac_timer_stop = ap_vdev_dfs_cac_timer_stop,
|
||||||
.mlme_vdev_stop_send = ap_mlme_vdev_stop_send,
|
.mlme_vdev_stop_send = ap_mlme_vdev_stop_send,
|
||||||
.mlme_vdev_stop_continue = ap_mlme_vdev_stop_continue,
|
.mlme_vdev_stop_continue = vdevmgr_mlme_stop_continue,
|
||||||
.mlme_vdev_down_send = ap_mlme_vdev_down_send,
|
.mlme_vdev_down_send = vdevmgr_mlme_vdev_down_send,
|
||||||
.mlme_vdev_notify_down_complete = ap_vdev_notify_down_complete,
|
.mlme_vdev_notify_down_complete = vdevmgr_notify_down_complete,
|
||||||
.mlme_vdev_legacy_hdl_create = mlme_legacy_hdl_create,
|
.mlme_vdev_legacy_hdl_create = mlme_legacy_hdl_create,
|
||||||
.mlme_vdev_legacy_hdl_destroy = mlme_legacy_hdl_destroy,
|
.mlme_vdev_legacy_hdl_destroy = mlme_legacy_hdl_destroy,
|
||||||
};
|
};
|
||||||
|
@ -44,7 +44,6 @@
|
|||||||
static void lim_process_mlm_auth_req(tpAniSirGlobal, uint32_t *);
|
static void lim_process_mlm_auth_req(tpAniSirGlobal, uint32_t *);
|
||||||
static void lim_process_mlm_assoc_req(tpAniSirGlobal, uint32_t *);
|
static void lim_process_mlm_assoc_req(tpAniSirGlobal, uint32_t *);
|
||||||
static void lim_process_mlm_disassoc_req(tpAniSirGlobal, uint32_t *);
|
static void lim_process_mlm_disassoc_req(tpAniSirGlobal, uint32_t *);
|
||||||
static void lim_process_mlm_deauth_req(tpAniSirGlobal, uint32_t *);
|
|
||||||
static void lim_process_mlm_set_keys_req(tpAniSirGlobal, uint32_t *);
|
static void lim_process_mlm_set_keys_req(tpAniSirGlobal, uint32_t *);
|
||||||
|
|
||||||
/* MLM Timeout event handler templates */
|
/* MLM Timeout event handler templates */
|
||||||
@ -128,9 +127,6 @@ void lim_process_mlm_req_messages(tpAniSirGlobal mac_ctx,
|
|||||||
case LIM_MLM_DISASSOC_REQ:
|
case LIM_MLM_DISASSOC_REQ:
|
||||||
lim_process_mlm_disassoc_req(mac_ctx, msg->bodyptr);
|
lim_process_mlm_disassoc_req(mac_ctx, msg->bodyptr);
|
||||||
break;
|
break;
|
||||||
case LIM_MLM_DEAUTH_REQ:
|
|
||||||
lim_process_mlm_deauth_req(mac_ctx, msg->bodyptr);
|
|
||||||
break;
|
|
||||||
case LIM_MLM_SETKEYS_REQ:
|
case LIM_MLM_SETKEYS_REQ:
|
||||||
lim_process_mlm_set_keys_req(mac_ctx, msg->bodyptr);
|
lim_process_mlm_set_keys_req(mac_ctx, msg->bodyptr);
|
||||||
break;
|
break;
|
||||||
@ -1991,8 +1987,7 @@ void lim_process_deauth_ack_timeout(tpAniSirGlobal mac_ctx)
|
|||||||
*
|
*
|
||||||
* @Return: None
|
* @Return: None
|
||||||
*/
|
*/
|
||||||
static void
|
void lim_process_mlm_deauth_req(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
|
||||||
lim_process_mlm_deauth_req(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
|
|
||||||
{
|
{
|
||||||
tLimMlmDeauthReq *mlm_deauth_req;
|
tLimMlmDeauthReq *mlm_deauth_req;
|
||||||
tpPESession session;
|
tpPESession session;
|
||||||
|
@ -1895,6 +1895,9 @@ void lim_process_sta_mlm_del_sta_rsp(tpAniSirGlobal pMac,
|
|||||||
tSirResultCodes statusCode = eSIR_SME_SUCCESS;
|
tSirResultCodes statusCode = eSIR_SME_SUCCESS;
|
||||||
tpDeleteStaParams pDelStaParams = (tpDeleteStaParams) limMsgQ->bodyptr;
|
tpDeleteStaParams pDelStaParams = (tpDeleteStaParams) limMsgQ->bodyptr;
|
||||||
tpDphHashNode pStaDs = NULL;
|
tpDphHashNode pStaDs = NULL;
|
||||||
|
#ifdef CONFIG_VDEV_SM
|
||||||
|
QDF_STATUS status;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (NULL == pDelStaParams) {
|
if (NULL == pDelStaParams) {
|
||||||
pe_err("Encountered NULL Pointer");
|
pe_err("Encountered NULL Pointer");
|
||||||
@ -1938,9 +1941,22 @@ void lim_process_sta_mlm_del_sta_rsp(tpAniSirGlobal pMac,
|
|||||||
qdf_mem_free(pDelStaParams);
|
qdf_mem_free(pDelStaParams);
|
||||||
limMsgQ->bodyptr = NULL;
|
limMsgQ->bodyptr = NULL;
|
||||||
}
|
}
|
||||||
|
#ifdef CONFIG_VDEV_SM
|
||||||
|
status =
|
||||||
|
wlan_vdev_mlme_sm_deliver_evt(psessionEntry->vdev,
|
||||||
|
WLAN_VDEV_SM_EV_DISCONNECT_COMPLETE,
|
||||||
|
sizeof(*psessionEntry),
|
||||||
|
psessionEntry);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status)) {
|
||||||
|
pe_err("failed to post WLAN_VDEV_SM_EV_DISCONNECT_COMPLETE for vdevid %d",
|
||||||
|
psessionEntry->smeSessionId);
|
||||||
|
}
|
||||||
|
#else
|
||||||
/* Proceed to do DelBSS even if DelSta resulted in failure */
|
/* Proceed to do DelBSS even if DelSta resulted in failure */
|
||||||
statusCode = (tSirResultCodes)lim_del_bss(pMac, pStaDs, 0,
|
statusCode = (tSirResultCodes)lim_del_bss(pMac, pStaDs, 0,
|
||||||
psessionEntry);
|
psessionEntry);
|
||||||
|
#endif
|
||||||
|
|
||||||
return;
|
return;
|
||||||
end:
|
end:
|
||||||
if (0 != limMsgQ->bodyptr) {
|
if (0 != limMsgQ->bodyptr) {
|
||||||
|
@ -49,10 +49,7 @@
|
|||||||
#include "sir_mac_prot_def.h"
|
#include "sir_mac_prot_def.h"
|
||||||
#include "rrm_api.h"
|
#include "rrm_api.h"
|
||||||
#include "nan_datapath.h"
|
#include "nan_datapath.h"
|
||||||
|
|
||||||
#include "sap_api.h"
|
#include "sap_api.h"
|
||||||
|
|
||||||
|
|
||||||
#include <lim_ft.h>
|
#include <lim_ft.h>
|
||||||
#include "cds_regdomain.h"
|
#include "cds_regdomain.h"
|
||||||
#include "lim_process_fils.h"
|
#include "lim_process_fils.h"
|
||||||
@ -2294,7 +2291,7 @@ sendDisassoc:
|
|||||||
\return none
|
\return none
|
||||||
\sa
|
\sa
|
||||||
----------------------------------------------------------------- */
|
----------------------------------------------------------------- */
|
||||||
static void __lim_process_sme_disassoc_cnf(tpAniSirGlobal pMac, uint32_t *pMsgBuf)
|
void __lim_process_sme_disassoc_cnf(tpAniSirGlobal pMac, uint32_t *pMsgBuf)
|
||||||
{
|
{
|
||||||
tSirSmeDisassocCnf smeDisassocCnf;
|
tSirSmeDisassocCnf smeDisassocCnf;
|
||||||
uint16_t aid;
|
uint16_t aid;
|
||||||
@ -2627,9 +2624,8 @@ static void __lim_process_sme_deauth_req(tpAniSirGlobal mac_ctx,
|
|||||||
|
|
||||||
/* Update PE session Id */
|
/* Update PE session Id */
|
||||||
mlm_deauth_req->sessionId = session_id;
|
mlm_deauth_req->sessionId = session_id;
|
||||||
|
lim_process_mlm_deauth_req(mac_ctx, (uint32_t *)mlm_deauth_req);
|
||||||
|
|
||||||
lim_post_mlm_message(mac_ctx, LIM_MLM_DEAUTH_REQ,
|
|
||||||
(uint32_t *)mlm_deauth_req);
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
send_deauth:
|
send_deauth:
|
||||||
@ -2971,6 +2967,27 @@ void lim_delete_all_peers(tpPESession session)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS lim_sta_send_del_bss(tpPESession session)
|
||||||
|
{
|
||||||
|
tpAniSirGlobal mac_ctx = session->mac_ctx;
|
||||||
|
QDF_STATUS status = QDF_STATUS_E_FAILURE;
|
||||||
|
tpDphHashNode sta_ds = NULL;
|
||||||
|
|
||||||
|
sta_ds = dph_get_hash_entry(mac_ctx, DPH_STA_HASH_INDEX_PEER,
|
||||||
|
&session->dph.dphHashTable);
|
||||||
|
if (!sta_ds) {
|
||||||
|
pe_err("DPH Entry for STA is missing, failed to send delbss");
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = lim_del_bss(mac_ctx, sta_ds, 0, session);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
pe_err("delBss failed for bss %d", session->bssIdx);
|
||||||
|
|
||||||
|
end:
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS lim_send_vdev_stop(tpPESession session)
|
QDF_STATUS lim_send_vdev_stop(tpPESession session)
|
||||||
{
|
{
|
||||||
tpAniSirGlobal mac_ctx = session->mac_ctx;
|
tpAniSirGlobal mac_ctx = session->mac_ctx;
|
||||||
@ -3024,7 +3041,6 @@ static void lim_delete_peers_and_send_vdev_stop(tpPESession session)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
__lim_handle_sme_stop_bss_request(tpAniSirGlobal pMac, uint32_t *pMsgBuf)
|
__lim_handle_sme_stop_bss_request(tpAniSirGlobal pMac, uint32_t *pMsgBuf)
|
||||||
{
|
{
|
||||||
@ -4683,6 +4699,129 @@ static void lim_process_sme_update_access_policy_vendor_ie(
|
|||||||
pe_session_entry->access_policy = update_vendor_ie->access_policy;
|
pe_session_entry->access_policy = update_vendor_ie->access_policy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_VDEV_SM
|
||||||
|
QDF_STATUS lim_sta_mlme_vdev_disconnect_bss(struct vdev_mlme_obj *vdev_mlme,
|
||||||
|
uint16_t data_len, void *data)
|
||||||
|
{
|
||||||
|
tpAniSirGlobal mac_ctx;
|
||||||
|
struct scheduler_msg *msg = (struct scheduler_msg *)data;
|
||||||
|
|
||||||
|
mac_ctx = cds_get_context(QDF_MODULE_ID_PE);
|
||||||
|
if (!mac_ctx) {
|
||||||
|
pe_err("mac_ctx is NULL");
|
||||||
|
if (data)
|
||||||
|
qdf_mem_free(data);
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
pe_debug("VDEV Manager disconnect bss callback type:(%d)", msg->type);
|
||||||
|
|
||||||
|
switch (msg->type) {
|
||||||
|
case eWNI_SME_DEAUTH_REQ:
|
||||||
|
__lim_process_sme_deauth_req(mac_ctx,
|
||||||
|
(uint32_t *)msg->bodyptr);
|
||||||
|
break;
|
||||||
|
case eWNI_SME_DISASSOC_CNF:
|
||||||
|
case eWNI_SME_DEAUTH_CNF:
|
||||||
|
__lim_process_sme_disassoc_cnf(mac_ctx,
|
||||||
|
(uint32_t *)msg->bodyptr);
|
||||||
|
break;
|
||||||
|
case eWNI_SME_DISASSOC_REQ:
|
||||||
|
__lim_process_sme_disassoc_req(mac_ctx,
|
||||||
|
(uint32_t *)msg->bodyptr);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
pe_debug("Wrong message type received %d", msg->type);
|
||||||
|
}
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void lim_process_sme_disassoc_cnf(tpAniSirGlobal mac_ctx,
|
||||||
|
struct scheduler_msg *msg)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_VDEV_SM
|
||||||
|
tSirSmeDisassocCnf sme_disassoc_cnf;
|
||||||
|
tpPESession session;
|
||||||
|
uint8_t session_id;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
qdf_mem_copy(&sme_disassoc_cnf, msg->bodyptr,
|
||||||
|
sizeof(struct sSirSmeDisassocCnf));
|
||||||
|
|
||||||
|
session = pe_find_session_by_bssid(mac_ctx,
|
||||||
|
sme_disassoc_cnf.bssid.bytes,
|
||||||
|
&session_id);
|
||||||
|
|
||||||
|
if (LIM_IS_STA_ROLE(session)) {
|
||||||
|
status = wlan_vdev_mlme_sm_deliver_evt(session->vdev,
|
||||||
|
WLAN_VDEV_SM_EV_DOWN,
|
||||||
|
sizeof(*msg),
|
||||||
|
msg);
|
||||||
|
} else {
|
||||||
|
__lim_process_sme_disassoc_cnf(mac_ctx,
|
||||||
|
(uint32_t *)msg->bodyptr);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
__lim_process_sme_disassoc_cnf(mac_ctx, (uint32_t *)msg->bodyptr);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void lim_process_sme_disassoc_req(tpAniSirGlobal mac_ctx,
|
||||||
|
struct scheduler_msg *msg)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_VDEV_SM
|
||||||
|
tSirSmeDisassocReq disassoc_req;
|
||||||
|
tpPESession session;
|
||||||
|
uint8_t session_id;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
qdf_mem_copy(&disassoc_req, msg->bodyptr, sizeof(tSirSmeDisassocReq));
|
||||||
|
|
||||||
|
session = pe_find_session_by_bssid(mac_ctx,
|
||||||
|
disassoc_req.bssid.bytes,
|
||||||
|
&session_id);
|
||||||
|
if (LIM_IS_STA_ROLE(session)) {
|
||||||
|
status = wlan_vdev_mlme_sm_deliver_evt(session->vdev,
|
||||||
|
WLAN_VDEV_SM_EV_DOWN,
|
||||||
|
sizeof(*msg),
|
||||||
|
msg);
|
||||||
|
} else {
|
||||||
|
__lim_process_sme_disassoc_req(mac_ctx,
|
||||||
|
(uint32_t *)msg->bodyptr);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
__lim_process_sme_disassoc_req(mac_ctx, (uint32_t *)msg->bodyptr);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void lim_process_sme_deauth_req(tpAniSirGlobal mac_ctx,
|
||||||
|
struct scheduler_msg *msg)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_VDEV_SM
|
||||||
|
tSirSmeDeauthReq sme_deauth_req;
|
||||||
|
tpPESession session;
|
||||||
|
uint8_t session_id;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
qdf_mem_copy(&sme_deauth_req, msg->bodyptr, sizeof(tSirSmeDeauthReq));
|
||||||
|
|
||||||
|
session = pe_find_session_by_bssid(mac_ctx,
|
||||||
|
sme_deauth_req.bssid.bytes,
|
||||||
|
&session_id);
|
||||||
|
if (LIM_IS_STA_ROLE(session)) {
|
||||||
|
status = wlan_vdev_mlme_sm_deliver_evt(session->vdev,
|
||||||
|
WLAN_VDEV_SM_EV_DOWN,
|
||||||
|
sizeof(*msg),
|
||||||
|
msg);
|
||||||
|
} else {
|
||||||
|
__lim_process_sme_deauth_req(mac_ctx,
|
||||||
|
(uint32_t *)msg->bodyptr);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
__lim_process_sme_deauth_req(mac_ctx, (uint32_t *)msg->bodyptr);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* lim_process_sme_req_messages()
|
* lim_process_sme_req_messages()
|
||||||
*
|
*
|
||||||
@ -4738,16 +4877,16 @@ bool lim_process_sme_req_messages(tpAniSirGlobal pMac,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case eWNI_SME_DISASSOC_REQ:
|
case eWNI_SME_DISASSOC_REQ:
|
||||||
__lim_process_sme_disassoc_req(pMac, pMsgBuf);
|
lim_process_sme_disassoc_req(pMac, pMsg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eWNI_SME_DISASSOC_CNF:
|
case eWNI_SME_DISASSOC_CNF:
|
||||||
case eWNI_SME_DEAUTH_CNF:
|
case eWNI_SME_DEAUTH_CNF:
|
||||||
__lim_process_sme_disassoc_cnf(pMac, pMsgBuf);
|
lim_process_sme_disassoc_cnf(pMac, pMsg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eWNI_SME_DEAUTH_REQ:
|
case eWNI_SME_DEAUTH_REQ:
|
||||||
__lim_process_sme_deauth_req(pMac, pMsgBuf);
|
lim_process_sme_deauth_req(pMac, pMsg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eWNI_SME_SEND_DISASSOC_FRAME:
|
case eWNI_SME_SEND_DISASSOC_FRAME:
|
||||||
|
@ -258,9 +258,7 @@ QDF_STATUS lim_send_switch_chnl_params(tpAniSirGlobal pMac,
|
|||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
pSessionEntry->ch_switch_in_progress = true;
|
pSessionEntry->ch_switch_in_progress = true;
|
||||||
#ifdef CONFIG_VDEV_SM
|
|
||||||
mlme_set_chan_switch_in_progress(pSessionEntry->vdev, true);
|
|
||||||
#endif
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1145,4 +1145,33 @@ void lim_process_mlm_start_req(tpAniSirGlobal mac_ctx,
|
|||||||
*/
|
*/
|
||||||
void lim_process_mlm_join_req(tpAniSirGlobal mac_ctx,
|
void lim_process_mlm_join_req(tpAniSirGlobal mac_ctx,
|
||||||
tLimMlmJoinReq *mlm_join_req);
|
tLimMlmJoinReq *mlm_join_req);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* lim_process_mlm_deauth_req() - This function is called to process
|
||||||
|
* MLM_DEAUTH_REQ message from SME
|
||||||
|
*
|
||||||
|
* @mac_ctx: Pointer to Global MAC structure
|
||||||
|
* @msg_buf: A pointer to the MLM message buffer
|
||||||
|
*
|
||||||
|
* This function is called to process MLM_DEAUTH_REQ message from SME
|
||||||
|
*
|
||||||
|
* @Return: None
|
||||||
|
*/
|
||||||
|
void lim_process_mlm_deauth_req(tpAniSirGlobal mac_ctx, uint32_t *msg_buf);
|
||||||
|
|
||||||
|
#ifdef CONFIG_VDEV_SM
|
||||||
|
/**
|
||||||
|
* lim_sta_mlme_vdev_disconnect_bss() - Disconnect from BSS
|
||||||
|
* @vdev_mlme_obj: VDEV MLME comp object
|
||||||
|
* @data_len: data size
|
||||||
|
* @data: event data
|
||||||
|
*
|
||||||
|
* API invokes BSS disconnection
|
||||||
|
*
|
||||||
|
* Return: SUCCESS on successful completion of disconnection
|
||||||
|
* FAILURE, if it fails due to any
|
||||||
|
*/
|
||||||
|
QDF_STATUS lim_sta_mlme_vdev_disconnect_bss(struct vdev_mlme_obj *vdev_mlme,
|
||||||
|
uint16_t data_len, void *data);
|
||||||
|
#endif
|
||||||
#endif /* __LIM_TYPES_H */
|
#endif /* __LIM_TYPES_H */
|
||||||
|
@ -8432,6 +8432,12 @@ QDF_STATUS lim_sta_mlme_vdev_start_send(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS lim_sta_mlme_vdev_stop_send(struct vdev_mlme_obj *vdev_mlme,
|
||||||
|
uint16_t data_len, void *data)
|
||||||
|
{
|
||||||
|
return lim_sta_send_del_bss((tpPESession)data);
|
||||||
|
}
|
||||||
|
|
||||||
void lim_send_beacon(tpAniSirGlobal mac_ctx, tpPESession session)
|
void lim_send_beacon(tpAniSirGlobal mac_ctx, tpPESession session)
|
||||||
{
|
{
|
||||||
if (wlan_vdev_mlme_get_state(session->vdev) ==
|
if (wlan_vdev_mlme_get_state(session->vdev) ==
|
||||||
|
@ -1381,6 +1381,14 @@ void lim_delete_all_peers(tpPESession session);
|
|||||||
*/
|
*/
|
||||||
QDF_STATUS lim_send_vdev_stop(tpPESession session);
|
QDF_STATUS lim_send_vdev_stop(tpPESession session);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* lim_send_vdev_stop() -send delete bss/stop vdev req for STA
|
||||||
|
* @session: session pointer
|
||||||
|
*
|
||||||
|
* Return QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS lim_sta_send_del_bss(tpPESession session);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* lim_send_start_bss_confirm() -send start bss confirm req
|
* lim_send_start_bss_confirm() -send start bss confirm req
|
||||||
* @mac_ctx: pointer to global mac structure
|
* @mac_ctx: pointer to global mac structure
|
||||||
@ -1497,6 +1505,20 @@ void lim_rx_invalid_peer_process(tpAniSirGlobal mac_ctx,
|
|||||||
void lim_send_beacon(tpAniSirGlobal mac_ctx, tpPESession session);
|
void lim_send_beacon(tpAniSirGlobal mac_ctx, tpPESession session);
|
||||||
|
|
||||||
#ifdef CONFIG_VDEV_SM
|
#ifdef CONFIG_VDEV_SM
|
||||||
|
/**
|
||||||
|
* lim_sta_mlme_vdev_stop_send() - send VDEV stop
|
||||||
|
* @vdev_mlme_obj: VDEV MLME comp object
|
||||||
|
* @data_len: data size
|
||||||
|
* @data: event data
|
||||||
|
*
|
||||||
|
* API invokes vdev stop
|
||||||
|
*
|
||||||
|
* Return: SUCCESS on successful completion of vdev stop
|
||||||
|
* FAILURE, if it fails due to any
|
||||||
|
*/
|
||||||
|
QDF_STATUS lim_sta_mlme_vdev_stop_send(struct vdev_mlme_obj *vdev_mlme,
|
||||||
|
uint16_t data_len, void *data);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* lim_ap_mlme_vdev_start_send() - Invokes VDEV start operation
|
* lim_ap_mlme_vdev_start_send() - Invokes VDEV start operation
|
||||||
* @vdev_mlme_obj: VDEV MLME comp object
|
* @vdev_mlme_obj: VDEV MLME comp object
|
||||||
|
@ -433,6 +433,20 @@ bool wma_get_hidden_ssid_restart_in_progress(struct wma_txrx_node *iface);
|
|||||||
|
|
||||||
#ifdef CONFIG_VDEV_SM
|
#ifdef CONFIG_VDEV_SM
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wma_sta_mlme_vdev_start_continue - VDEV start response handling
|
||||||
|
* @vdev_mlme_obj: VDEV MLME comp object
|
||||||
|
* @data_len: data size
|
||||||
|
* @data: event data
|
||||||
|
*
|
||||||
|
* API invokes VDEV start response actions
|
||||||
|
*
|
||||||
|
* Return: SUCCESS on successful completion of start response operation
|
||||||
|
* FAILURE, if it fails due to any
|
||||||
|
*/
|
||||||
|
QDF_STATUS wma_sta_mlme_vdev_start_continue(struct vdev_mlme_obj *vdev_mlme,
|
||||||
|
uint16_t data_len, void *data);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wma_ap_mlme_vdev_start_continue - VDEV start response handling
|
* wma_ap_mlme_vdev_start_continue - VDEV start response handling
|
||||||
* @vdev_mlme_obj: VDEV MLME comp object
|
* @vdev_mlme_obj: VDEV MLME comp object
|
||||||
@ -444,7 +458,7 @@ bool wma_get_hidden_ssid_restart_in_progress(struct wma_txrx_node *iface);
|
|||||||
* Return: SUCCESS on successful completion of start response operation
|
* Return: SUCCESS on successful completion of start response operation
|
||||||
* FAILURE, if it fails due to any
|
* FAILURE, if it fails due to any
|
||||||
*/
|
*/
|
||||||
QDF_STATUS wma_mlme_vdev_start_continue(struct vdev_mlme_obj *vdev_mlme,
|
QDF_STATUS wma_ap_mlme_vdev_start_continue(struct vdev_mlme_obj *vdev_mlme,
|
||||||
uint16_t data_len, void *data);
|
uint16_t data_len, void *data);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -459,10 +473,10 @@ QDF_STATUS wma_mlme_vdev_start_continue(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
* FAILURE, if it fails due to any
|
* FAILURE, if it fails due to any
|
||||||
*/
|
*/
|
||||||
QDF_STATUS wma_sta_vdev_up_send(struct vdev_mlme_obj *vdev_mlme,
|
QDF_STATUS wma_sta_vdev_up_send(struct vdev_mlme_obj *vdev_mlme,
|
||||||
uint16_t data_len, void *data);
|
uint16_t data_len, void *data);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wma_ap_mlme_vdev_stop_continue - VDEV stop response handling
|
* wma_mlme_vdev_stop_continue - VDEV stop response handling
|
||||||
* @vdev_mlme_obj: VDEV MLME comp object
|
* @vdev_mlme_obj: VDEV MLME comp object
|
||||||
* @data_len: data size
|
* @data_len: data size
|
||||||
* @data: event data
|
* @data: event data
|
||||||
@ -472,8 +486,8 @@ QDF_STATUS wma_sta_vdev_up_send(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
* Return: SUCCESS on successful completion of stop response operation
|
* Return: SUCCESS on successful completion of stop response operation
|
||||||
* FAILURE, if it fails due to any
|
* FAILURE, if it fails due to any
|
||||||
*/
|
*/
|
||||||
QDF_STATUS wma_ap_mlme_vdev_stop_continue(struct vdev_mlme_obj *vdev_mlme,
|
QDF_STATUS wma_mlme_vdev_stop_continue(struct vdev_mlme_obj *vdev_mlme,
|
||||||
uint16_t data_len, void *data);
|
uint16_t data_len, void *data);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wma_ap_mlme_vdev_down_send - VDEV down operation
|
* wma_ap_mlme_vdev_down_send - VDEV down operation
|
||||||
@ -520,6 +534,19 @@ QDF_STATUS wma_ap_mlme_vdev_stop_start_send(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
enum vdev_cmd_type type,
|
enum vdev_cmd_type type,
|
||||||
uint16_t data_len, void *data);
|
uint16_t data_len, void *data);
|
||||||
|
|
||||||
#endif
|
/**
|
||||||
|
* wma_sta_mlme_vdev_down_send - VDEV down operation
|
||||||
|
* @vdev_mlme_obj: VDEV MLME comp object
|
||||||
|
* @data_len: data size
|
||||||
|
* @data: event data
|
||||||
|
*
|
||||||
|
* API invokes VDEV down operation
|
||||||
|
*
|
||||||
|
* Return: SUCCESS on successful completion of VDEV down operation
|
||||||
|
* FAILURE, if it fails due to any
|
||||||
|
*/
|
||||||
|
QDF_STATUS wma_sta_mlme_vdev_down_send(struct vdev_mlme_obj *vdev_mlme,
|
||||||
|
uint16_t data_len, void *data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
@ -1489,4 +1489,14 @@ int wma_roam_scan_stats_event_handler(void *handle, uint8_t *event,
|
|||||||
*/
|
*/
|
||||||
void wma_send_vdev_down_bss(tp_wma_handle wma, struct wma_target_req *req);
|
void wma_send_vdev_down_bss(tp_wma_handle wma, struct wma_target_req *req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wma_sta_send_vdev_down_bss() - send vdev down to firmware
|
||||||
|
* @wma: wma handle.
|
||||||
|
* @req: vdev request
|
||||||
|
*
|
||||||
|
* This function sends vdev down to firmware
|
||||||
|
*
|
||||||
|
* Return: none
|
||||||
|
*/
|
||||||
|
void wma_sta_send_vdev_down_bss(tp_wma_handle wma, struct wma_target_req *req);
|
||||||
#endif
|
#endif
|
||||||
|
@ -5173,7 +5173,7 @@ static void wma_add_sta_req_sta_mode(tp_wma_handle wma, tpAddStaParams params)
|
|||||||
param.vdev_id = params->smesessionId;
|
param.vdev_id = params->smesessionId;
|
||||||
param.assoc_id = params->assocId;
|
param.assoc_id = params->assocId;
|
||||||
#ifdef CONFIG_VDEV_SM
|
#ifdef CONFIG_VDEV_SM
|
||||||
status = wlan_vdev_mlme_sm_deliver_evt(wma->interfaces[param.vdev_id].vdev,
|
status = wlan_vdev_mlme_sm_deliver_evt(iface->vdev,
|
||||||
WLAN_VDEV_SM_EV_START_SUCCESS,
|
WLAN_VDEV_SM_EV_START_SUCCESS,
|
||||||
sizeof(param), (void *)¶m);
|
sizeof(param), (void *)¶m);
|
||||||
#else
|
#else
|
||||||
|
@ -4830,8 +4830,19 @@ static QDF_STATUS wma_vdev_send_start_resp(tp_wma_handle wma,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
QDF_STATUS wma_mlme_vdev_start_continue(struct vdev_mlme_obj *vdev_mlme,
|
QDF_STATUS wma_sta_mlme_vdev_start_continue(struct vdev_mlme_obj *vdev_mlme,
|
||||||
uint16_t data_len, void *data)
|
uint16_t data_len, void *data)
|
||||||
|
{
|
||||||
|
tp_wma_handle wma = cds_get_context(QDF_MODULE_ID_WMA);
|
||||||
|
|
||||||
|
wma_send_msg_high_priority(wma, WMA_SWITCH_CHANNEL_RSP,
|
||||||
|
data, 0);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS wma_ap_mlme_vdev_start_continue(struct vdev_mlme_obj *vdev_mlme,
|
||||||
|
uint16_t data_len, void *data)
|
||||||
{
|
{
|
||||||
tp_wma_handle wma = cds_get_context(QDF_MODULE_ID_WMA);
|
tp_wma_handle wma = cds_get_context(QDF_MODULE_ID_WMA);
|
||||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||||
@ -4851,8 +4862,8 @@ QDF_STATUS wma_mlme_vdev_start_continue(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
QDF_STATUS wma_ap_mlme_vdev_stop_continue(struct vdev_mlme_obj *vdev_mlme,
|
QDF_STATUS wma_mlme_vdev_stop_continue(struct vdev_mlme_obj *vdev_mlme,
|
||||||
uint16_t data_len, void *data)
|
uint16_t data_len, void *data)
|
||||||
{
|
{
|
||||||
return __wma_vdev_stop_resp_handler(
|
return __wma_vdev_stop_resp_handler(
|
||||||
(wmi_vdev_stopped_event_fixed_param *)data);
|
(wmi_vdev_stopped_event_fixed_param *)data);
|
||||||
@ -4895,7 +4906,6 @@ QDF_STATUS wma_ap_mlme_vdev_stop_start_send(struct vdev_mlme_obj *vdev_mlme,
|
|||||||
|
|
||||||
return wma_vdev_send_start_resp(wma, bss_params);
|
return wma_vdev_send_start_resp(wma, bss_params);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
bool wma_get_hidden_ssid_restart_in_progress(struct wma_txrx_node *iface)
|
bool wma_get_hidden_ssid_restart_in_progress(struct wma_txrx_node *iface)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user