qcacld-3.0: Add vdev state machine for CSA and radar
Add vdev state machine for Channel change and to handle radar indication. Change-Id: Ib5a5476510ffe55611325c98dd9779261c7bd9a3 CRs-Fixed: 2316574
This commit is contained in:
@@ -23,8 +23,20 @@
|
||||
#define _WLAN_MLME_VDEV_MGR_INT_API_H_
|
||||
|
||||
#ifdef CONFIG_VDEV_SM
|
||||
#include <wlan_objmgr_vdev_obj.h>
|
||||
#include "include/wlan_vdev_mlme.h"
|
||||
|
||||
/**
|
||||
* struct mlme_legacy_priv - VDEV MLME legacy priv object
|
||||
* @chan_switch_in_progress: flag to indicate that channel switch is in progress
|
||||
* @hidden_ssid_restart_in_progress: flag to indicate hidden ssid restart is
|
||||
* in progress
|
||||
*/
|
||||
struct mlme_legacy_priv {
|
||||
bool chan_switch_in_progress;
|
||||
bool hidden_ssid_restart_in_progress;
|
||||
};
|
||||
|
||||
/**
|
||||
* mlme_register_vdev_mgr_ops() - Register vdev mgr ops
|
||||
* @vdev_mlme: vdev mlme object
|
||||
@@ -43,5 +55,24 @@ QDF_STATUS mlme_register_vdev_mgr_ops(void *mlme);
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS mlme_unregister_vdev_mgr_ops(struct vdev_mlme_obj *vdev_mlme);
|
||||
|
||||
/**
|
||||
* ap_mlme_set_chan_switch_in_progress() - set mlme priv restart in progress
|
||||
* @vdev: vdev pointer
|
||||
* @val: value to be set
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS ap_mlme_set_chan_switch_in_progress(struct wlan_objmgr_vdev *vdev,
|
||||
bool val);
|
||||
|
||||
/**
|
||||
* ap_mlme_get_chan_switch_in_progress() - get mlme priv restart in progress
|
||||
* @vdev: vdev pointer
|
||||
*
|
||||
* Return: value of mlme priv restart in progress
|
||||
*/
|
||||
bool ap_mlme_get_chan_switch_in_progress(struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
@@ -18,7 +18,6 @@
|
||||
/**
|
||||
* DOC: define internal APIs related to the mlme component
|
||||
*/
|
||||
#include <wlan_objmgr_vdev_obj.h>
|
||||
#include "wlan_mlme_main.h"
|
||||
#include "wlan_mlme_vdev_mgr_interface.h"
|
||||
#include "lim_utils.h"
|
||||
@@ -460,20 +459,19 @@ static QDF_STATUS ap_mlme_vdev_start_req_failed(struct vdev_mlme_obj *vdev_mlme,
|
||||
}
|
||||
|
||||
/**
|
||||
* sap_mlme_vdev_restart_send() a callback to send vdev restart
|
||||
* ap_mlme_vdev_restart_send() a callback to send vdev restart
|
||||
* @vdev_mlme: vdev mlme object
|
||||
* @event_data_len: event data length
|
||||
* @event_data: event data
|
||||
* @data_len: event data length
|
||||
* @data: event data
|
||||
*
|
||||
* This function is called to initiate and send vdev restart req
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
static QDF_STATUS ap_mlme_vdev_restart_send(struct vdev_mlme_obj *vdev_mlme,
|
||||
uint16_t event_data_len,
|
||||
void *event_data)
|
||||
uint16_t data_len, void *data)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
return lim_ap_mlme_vdev_restart_send(vdev_mlme, data_len, data);
|
||||
}
|
||||
|
||||
static QDF_STATUS ap_mlme_vdev_stop_start_send(struct vdev_mlme_obj *vdev_mlme,
|
||||
@@ -484,15 +482,72 @@ static QDF_STATUS ap_mlme_vdev_stop_start_send(struct vdev_mlme_obj *vdev_mlme,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static
|
||||
QDF_STATUS ap_mlme_vdev_legacy_hdl_create(struct vdev_mlme_obj *vdev_mlme)
|
||||
QDF_STATUS ap_mlme_set_chan_switch_in_progress(struct wlan_objmgr_vdev *vdev,
|
||||
bool val)
|
||||
{
|
||||
struct vdev_mlme_obj *vdev_mlme;
|
||||
struct mlme_legacy_priv *mlme_priv;
|
||||
|
||||
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
|
||||
if (!vdev_mlme) {
|
||||
mlme_err("vdev component object is NULL");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
mlme_priv = (struct mlme_legacy_priv *)vdev_mlme->legacy_vdev_ptr;
|
||||
|
||||
mlme_priv->chan_switch_in_progress = val;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
bool ap_mlme_get_chan_switch_in_progress(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
struct vdev_mlme_obj *vdev_mlme;
|
||||
struct mlme_legacy_priv *mlme_priv;
|
||||
|
||||
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
|
||||
if (!vdev_mlme) {
|
||||
mlme_err("vdev component object is NULL");
|
||||
return false;
|
||||
}
|
||||
|
||||
mlme_priv = (struct mlme_legacy_priv *)vdev_mlme->legacy_vdev_ptr;
|
||||
|
||||
return mlme_priv->chan_switch_in_progress;
|
||||
}
|
||||
|
||||
/**
|
||||
* ap_mlme_vdev_legacy_hdl_create () - Create sap mlme legacy priv object
|
||||
* @vdev_mlme: vdev mlme object
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
static
|
||||
QDF_STATUS ap_mlme_vdev_legacy_hdl_create(struct vdev_mlme_obj *vdev_mlme)
|
||||
{
|
||||
vdev_mlme->legacy_vdev_ptr =
|
||||
qdf_mem_malloc(sizeof(struct mlme_legacy_priv));
|
||||
if (!vdev_mlme->legacy_vdev_ptr) {
|
||||
mlme_err("failed to allocate meory for legacy_vdev_ptr");
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* ap_mlme_vdev_legacy_hdl_destroy () - Destroy sap mlme legacy priv object
|
||||
* @vdev_mlme: vdev mlme object
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
static
|
||||
QDF_STATUS ap_mlme_vdev_legacy_hdl_destroy(struct vdev_mlme_obj *vdev_mlme)
|
||||
{
|
||||
qdf_mem_free(vdev_mlme->legacy_vdev_ptr);
|
||||
vdev_mlme->legacy_vdev_ptr = NULL;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user