qcacld-3.0: Infra for mlme_priv_obj with VDEV_SM enable/disable
Define two different mlme priv obj structures based upon the flag CONFIG_VDEV_SM, for the support of dynamic nss, chains update. Change-Id: I00f39eb82973da86233ddfc8bdcc94b6ca8a439a CRs-Fixed: 2349200
This commit is contained in:
parent
b414bce3b7
commit
24ed0f4056
@ -26,6 +26,8 @@
|
||||
#include <wlan_objmgr_psoc_obj.h>
|
||||
#include <wlan_objmgr_global_obj.h>
|
||||
#include <wlan_cmn.h>
|
||||
#include <wlan_objmgr_vdev_obj.h>
|
||||
|
||||
|
||||
#define mlme_fatal(params...) QDF_TRACE_FATAL(QDF_MODULE_ID_MLME, params)
|
||||
#define mlme_err(params...) QDF_TRACE_ERROR(QDF_MODULE_ID_MLME, params)
|
||||
@ -41,6 +43,78 @@ struct wlan_mlme_psoc_obj {
|
||||
struct wlan_mlme_cfg cfg;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_VDEV_SM
|
||||
|
||||
/**
|
||||
* enum vdev_assoc_type - VDEV associate/reassociate type
|
||||
* @VDEV_ASSOC: associate
|
||||
* @VDEV_REASSOC: reassociate
|
||||
* @VDEV_FT_REASSOC: fast reassociate
|
||||
*/
|
||||
enum vdev_assoc_type {
|
||||
VDEV_ASSOC,
|
||||
VDEV_REASSOC,
|
||||
VDEV_FT_REASSOC
|
||||
};
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @vdev_start_failed: flag to indicate that vdev start failed.
|
||||
* @connection_fail: flag to indicate connection failed
|
||||
* @assoc_type: vdev associate/reassociate type
|
||||
* @dynamic_cfg: current configuration of nss, chains for vdev.
|
||||
* @ini_cfg: Max configuration of nss, chains supported for vdev.
|
||||
*/
|
||||
struct mlme_legacy_priv {
|
||||
bool chan_switch_in_progress;
|
||||
bool hidden_ssid_restart_in_progress;
|
||||
bool vdev_start_failed;
|
||||
bool connection_fail;
|
||||
enum vdev_assoc_type assoc_type;
|
||||
struct wlan_mlme_nss_chains dynamic_cfg;
|
||||
struct wlan_mlme_nss_chains ini_cfg;
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
/**
|
||||
* struct vdev_mlme_obj - VDEV MLME component object
|
||||
*/
|
||||
struct vdev_mlme_priv_obj {
|
||||
};
|
||||
|
||||
/**
|
||||
* mlme_vdev_object_created_notification(): mlme vdev create handler
|
||||
* @vdev: vdev which is going to created by objmgr
|
||||
* @arg: argument for vdev create handler
|
||||
*
|
||||
* Register this api with objmgr to detect vdev is created
|
||||
*
|
||||
* Return: QDF_STATUS status in case of success else return error
|
||||
*/
|
||||
|
||||
QDF_STATUS
|
||||
mlme_vdev_object_created_notification(struct wlan_objmgr_vdev *vdev,
|
||||
void *arg);
|
||||
|
||||
/**
|
||||
* mlme_vdev_object_destroyed_notification(): mlme vdev delete handler
|
||||
* @psoc: vdev which is going to delete by objmgr
|
||||
* @arg: argument for vdev delete handler
|
||||
*
|
||||
* Register this api with objmgr to detect vdev is deleted
|
||||
*
|
||||
* Return: QDF_STATUS status in case of success else return error
|
||||
*/
|
||||
QDF_STATUS
|
||||
mlme_vdev_object_destroyed_notification(struct wlan_objmgr_vdev *vdev,
|
||||
void *arg);
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* mlme_psoc_object_created_notification(): mlme psoc create handler
|
||||
* @psoc: psoc which is going to created by objmgr
|
||||
|
@ -25,39 +25,7 @@
|
||||
#ifdef CONFIG_VDEV_SM
|
||||
#include <wlan_objmgr_vdev_obj.h>
|
||||
#include "include/wlan_vdev_mlme.h"
|
||||
|
||||
/**
|
||||
* enum vdev_assoc_type - VDEV associate/reassociate type
|
||||
* @VDEV_ASSOC: associate
|
||||
* @VDEV_REASSOC: reassociate
|
||||
* @VDEV_FT_REASSOC: fast reassociate
|
||||
*/
|
||||
enum vdev_assoc_type {
|
||||
VDEV_ASSOC,
|
||||
VDEV_REASSOC,
|
||||
VDEV_FT_REASSOC
|
||||
};
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @vdev_start_failed: flag to indicate that vdev start failed.
|
||||
* @connection_fail: flag to indicate connection failed
|
||||
* @assoc_type: vdev associate/reassociate type
|
||||
* @dynamic_cfg: current configuration of nss, chains for vdev.
|
||||
* @ini_cfg: Max configuration of nss, chains supported for vdev.
|
||||
*/
|
||||
struct mlme_legacy_priv {
|
||||
bool chan_switch_in_progress;
|
||||
bool hidden_ssid_restart_in_progress;
|
||||
bool vdev_start_failed;
|
||||
bool connection_fail;
|
||||
enum vdev_assoc_type assoc_type;
|
||||
struct wlan_mlme_nss_chains dynamic_cfg;
|
||||
struct wlan_mlme_nss_chains ini_cfg;
|
||||
};
|
||||
#include "wlan_mlme_main.h"
|
||||
|
||||
/**
|
||||
* mlme_register_vdev_mgr_ops() - Register vdev mgr ops
|
||||
@ -145,24 +113,6 @@ bool mlme_is_connection_fail(struct wlan_objmgr_vdev *vdev);
|
||||
QDF_STATUS
|
||||
mlme_set_connection_fail(struct wlan_objmgr_vdev *vdev, bool val);
|
||||
|
||||
/**
|
||||
* mlme_get_dynamic_vdev_config() - get the vdev dynamic config params
|
||||
* @vdev: vdev pointer
|
||||
*
|
||||
* Return: pointer to the dynamic vdev config structure
|
||||
*/
|
||||
struct wlan_mlme_nss_chains *mlme_get_dynamic_vdev_config(
|
||||
struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* mlme_get_ini_vdev_config() - get the vdev ini config params
|
||||
* @vdev: vdev pointer
|
||||
*
|
||||
* Return: pointer to the ini vdev config structure
|
||||
*/
|
||||
struct wlan_mlme_nss_chains *mlme_get_ini_vdev_config(
|
||||
struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* mlme_get_vdev_start_failed() - get mlme priv vdev restart fail flag
|
||||
* @vdev: vdev pointer
|
||||
|
@ -20,9 +20,11 @@
|
||||
*/
|
||||
|
||||
#include "wlan_mlme_main.h"
|
||||
#include "include/wlan_vdev_mlme.h"
|
||||
#include "cfg_ucfg_api.h"
|
||||
#include "wmi_unified.h"
|
||||
#include "wlan_scan_public_structs.h"
|
||||
#include "wlan_vdev_mlme_api.h"
|
||||
|
||||
#define NUM_OF_SOUNDING_DIMENSIONS 1 /*Nss - 1, (Nss = 2 for 2x2)*/
|
||||
|
||||
@ -37,6 +39,92 @@ struct wlan_mlme_psoc_obj *mlme_get_psoc_obj(struct wlan_objmgr_psoc *psoc)
|
||||
return mlme_obj;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_VDEV_SM
|
||||
|
||||
#else
|
||||
|
||||
static struct vdev_mlme_priv_obj *
|
||||
wlan_vdev_mlme_get_priv_obj(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
struct vdev_mlme_priv_obj *vdev_mlme;
|
||||
|
||||
if (!vdev) {
|
||||
mlme_err("vdev is NULL");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
vdev_mlme = wlan_objmgr_vdev_get_comp_private_obj(vdev,
|
||||
WLAN_UMAC_COMP_MLME);
|
||||
if (!vdev_mlme) {
|
||||
mlme_err(" MLME component object is NULL");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return vdev_mlme;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
mlme_vdev_object_created_notification(struct wlan_objmgr_vdev *vdev,
|
||||
void *arg)
|
||||
{
|
||||
struct vdev_mlme_priv_obj *vdev_mlme;
|
||||
QDF_STATUS status;
|
||||
|
||||
if (!vdev) {
|
||||
mlme_err(" VDEV is NULL");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
vdev_mlme = qdf_mem_malloc(sizeof(*vdev_mlme));
|
||||
if (!vdev_mlme) {
|
||||
mlme_err(" MLME component object alloc failed");
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_vdev_component_obj_attach(vdev,
|
||||
WLAN_UMAC_COMP_MLME,
|
||||
(void *)vdev_mlme,
|
||||
QDF_STATUS_SUCCESS);
|
||||
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
mlme_err("unable to attach vdev priv obj to vdev obj");
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
mlme_vdev_object_destroyed_notification(struct wlan_objmgr_vdev *vdev,
|
||||
void *arg)
|
||||
{
|
||||
struct vdev_mlme_priv_obj *vdev_mlme;
|
||||
QDF_STATUS status;
|
||||
|
||||
if (!vdev) {
|
||||
mlme_err(" VDEV is NULL");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
vdev_mlme = wlan_objmgr_vdev_get_comp_private_obj(vdev,
|
||||
WLAN_UMAC_COMP_MLME);
|
||||
if (!vdev_mlme) {
|
||||
mlme_err(" VDEV MLME component object is NULL");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_vdev_component_obj_detach(vdev,
|
||||
WLAN_UMAC_COMP_MLME,
|
||||
vdev_mlme);
|
||||
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
mlme_err("unable to detach vdev priv obj to vdev obj");
|
||||
|
||||
qdf_mem_free(vdev_mlme);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
QDF_STATUS
|
||||
mlme_psoc_object_created_notification(struct wlan_objmgr_psoc *psoc,
|
||||
void *arg)
|
||||
|
@ -595,40 +595,6 @@ mlme_set_vdev_start_failed(struct wlan_objmgr_vdev *vdev, bool val)
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
struct wlan_mlme_nss_chains *mlme_get_dynamic_vdev_config(
|
||||
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 NULL;
|
||||
}
|
||||
|
||||
mlme_priv = vdev_mlme->legacy_vdev_ptr;
|
||||
|
||||
return &mlme_priv->dynamic_cfg;
|
||||
}
|
||||
|
||||
struct wlan_mlme_nss_chains *mlme_get_ini_vdev_config(
|
||||
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 NULL;
|
||||
}
|
||||
|
||||
mlme_priv = vdev_mlme->legacy_vdev_ptr;
|
||||
|
||||
return &mlme_priv->ini_cfg;
|
||||
}
|
||||
|
||||
bool mlme_get_vdev_start_failed(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
struct vdev_mlme_obj *vdev_mlme;
|
||||
|
@ -27,7 +27,7 @@
|
||||
#include <wlan_objmgr_global_obj.h>
|
||||
#include <wlan_cmn.h>
|
||||
#include <wlan_mlme_api.h>
|
||||
#include <wlan_mlme_vdev_mgr_interface.h>
|
||||
#include <wlan_mlme_main.h>
|
||||
|
||||
/**
|
||||
* ucfg_mlme_init() - initialize mlme_ctx context.
|
||||
|
@ -27,6 +27,67 @@
|
||||
#include "wlan_objmgr_pdev_obj.h"
|
||||
#include "wlan_mlme_vdev_mgr_interface.h"
|
||||
|
||||
#ifdef CONFIG_VDEV_SM
|
||||
static QDF_STATUS ucfg_mlme_vdev_init(void)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static QDF_STATUS ucfg_mlme_vdev_deinit(void)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
#else
|
||||
static QDF_STATUS ucfg_mlme_vdev_init(void)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
|
||||
status = wlan_objmgr_register_vdev_create_handler(
|
||||
WLAN_UMAC_COMP_MLME,
|
||||
mlme_vdev_object_created_notification,
|
||||
NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
mlme_err("unable to register vdev create handle");
|
||||
return status;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_register_vdev_destroy_handler(
|
||||
WLAN_UMAC_COMP_MLME,
|
||||
mlme_vdev_object_destroyed_notification,
|
||||
NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
mlme_err("unable to register vdev create handle");
|
||||
|
||||
return status;
|
||||
|
||||
}
|
||||
|
||||
static QDF_STATUS ucfg_mlme_vdev_deinit(void)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
|
||||
status = wlan_objmgr_unregister_vdev_destroy_handler(
|
||||
WLAN_UMAC_COMP_MLME,
|
||||
mlme_vdev_object_destroyed_notification,
|
||||
NULL);
|
||||
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
mlme_err("unable to unregister vdev destroy handle");
|
||||
|
||||
status = wlan_objmgr_unregister_vdev_create_handler(
|
||||
WLAN_UMAC_COMP_MLME,
|
||||
mlme_vdev_object_created_notification,
|
||||
NULL);
|
||||
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
mlme_err("unable to unregister vdev create handle");
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
QDF_STATUS ucfg_mlme_init(void)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
@ -44,8 +105,11 @@ QDF_STATUS ucfg_mlme_init(void)
|
||||
WLAN_UMAC_COMP_MLME,
|
||||
mlme_psoc_object_destroyed_notification,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS)
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
mlme_err("unable to register psoc create handle");
|
||||
return status;
|
||||
}
|
||||
status = ucfg_mlme_vdev_init();
|
||||
|
||||
return status;
|
||||
}
|
||||
@ -54,22 +118,25 @@ QDF_STATUS ucfg_mlme_deinit(void)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
|
||||
status = wlan_objmgr_unregister_psoc_create_handler(
|
||||
WLAN_UMAC_COMP_MLME,
|
||||
mlme_psoc_object_created_notification,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
mlme_err("unable to unregister psoc create handle");
|
||||
return status;
|
||||
}
|
||||
status = ucfg_mlme_vdev_deinit();
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
mlme_err("unable to unregister vdev destroy handle");
|
||||
|
||||
status = wlan_objmgr_unregister_psoc_destroy_handler(
|
||||
WLAN_UMAC_COMP_MLME,
|
||||
mlme_psoc_object_destroyed_notification,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS)
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
mlme_err("unable to unregister psoc destroy handle");
|
||||
|
||||
status = wlan_objmgr_unregister_psoc_create_handler(
|
||||
WLAN_UMAC_COMP_MLME,
|
||||
mlme_psoc_object_created_notification,
|
||||
NULL);
|
||||
|
||||
if (status != QDF_STATUS_SUCCESS)
|
||||
mlme_err("unable to unregister psoc create handle");
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
@ -64,6 +64,7 @@
|
||||
#include "cfg_mlme_obss_ht40.h"
|
||||
#include "cfg_ucfg_api.h"
|
||||
#include "lim_ft.h"
|
||||
#include "wlan_mlme_main.h"
|
||||
|
||||
#define ASCII_SPACE_CHARACTER 0x20
|
||||
|
||||
|
@ -60,6 +60,7 @@
|
||||
#include <qca_vendor.h>
|
||||
#include <wlan_spectral_utils_api.h>
|
||||
#include "wlan_mlme_public_struct.h"
|
||||
#include "wlan_mlme_main.h"
|
||||
|
||||
static tSelfRecoveryStats g_self_recovery_stats;
|
||||
|
||||
@ -4807,7 +4808,7 @@ static uint8_t sme_get_nss_chain_shift(enum QDF_OPMODE device_mode)
|
||||
}
|
||||
|
||||
static void
|
||||
sme_fill_nss_chain_params(struct sAniSirGlobal *mac_ctx,
|
||||
sme_fill_nss_chain_params(struct mac_context *mac_ctx,
|
||||
struct wlan_mlme_nss_chains *vdev_ini_cfg,
|
||||
enum QDF_OPMODE device_mode,
|
||||
enum nss_chains_band_info band,
|
||||
@ -4872,7 +4873,7 @@ void sme_populate_nss_chain_params(mac_handle_t mac_handle,
|
||||
enum QDF_OPMODE device_mode,
|
||||
uint8_t rf_chains_supported)
|
||||
{
|
||||
struct sAniSirGlobal *mac_ctx = MAC_CONTEXT(mac_handle);
|
||||
struct mac_context *mac_ctx = MAC_CONTEXT(mac_handle);
|
||||
enum nss_chains_band_info band;
|
||||
|
||||
for (band = NSS_CHAINS_BAND_2GHZ; band < NSS_CHAINS_BAND_MAX; band++)
|
||||
@ -5069,7 +5070,7 @@ sme_nss_chains_update(mac_handle_t mac_handle,
|
||||
struct wlan_mlme_nss_chains *user_cfg,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
struct sAniSirGlobal *mac_ctx = MAC_CONTEXT(mac_handle);
|
||||
struct mac_context *mac_ctx = MAC_CONTEXT(mac_handle);
|
||||
QDF_STATUS status;
|
||||
struct wlan_mlme_nss_chains *dynamic_cfg;
|
||||
struct wlan_objmgr_vdev *vdev =
|
||||
|
@ -76,6 +76,7 @@
|
||||
#include <target_if.h>
|
||||
#include "wlan_mlme_public_struct.h"
|
||||
#include "wlan_mlme_api.h"
|
||||
#include "wlan_mlme_main.h"
|
||||
|
||||
/**
|
||||
* wma_find_vdev_by_addr() - find vdev_id from mac address
|
||||
|
@ -61,6 +61,7 @@
|
||||
#include "cds_reg_service.h"
|
||||
#include "target_if.h"
|
||||
#include <wlan_utility.h>
|
||||
#include <wlan_mlme_main.h>
|
||||
|
||||
|
||||
/* MCS Based rate table */
|
||||
|
Loading…
Reference in New Issue
Block a user