qcacld-3.0: Add support for getting dtim and beacon interval
Add support for getting vdev dtim and beacon interval from mlme in PMO. Change-Id: I97c117eec290f6b9452b98629bf6b3ee10c38ce6 CRs-Fixed: 2252713
This commit is contained in:

committed by
nshrivas

parent
4474604869
commit
37b4e6dfbe
@@ -47,6 +47,8 @@
|
|||||||
* @pause_bitmap_notifier: registered callback to update pause bitmap value
|
* @pause_bitmap_notifier: registered callback to update pause bitmap value
|
||||||
* @pmo_get_pause_bitmap: registered callback to get pause bitmap value
|
* @pmo_get_pause_bitmap: registered callback to get pause bitmap value
|
||||||
* @get_cfg_int: register callback to get integer from cfg
|
* @get_cfg_int: register callback to get integer from cfg
|
||||||
|
* @get_dtim_period: register callback to get dtim period from mlme
|
||||||
|
* @get_beacon_interval: register callback to get beacon interval from mlme
|
||||||
* @lock: spin lock for pmo psoc
|
* @lock: spin lock for pmo psoc
|
||||||
*/
|
*/
|
||||||
struct pmo_psoc_priv_obj {
|
struct pmo_psoc_priv_obj {
|
||||||
@@ -62,6 +64,8 @@ struct pmo_psoc_priv_obj {
|
|||||||
pmo_get_pause_bitmap get_pause_bitmap;
|
pmo_get_pause_bitmap get_pause_bitmap;
|
||||||
pmo_is_device_in_low_pwr_mode is_device_in_low_pwr_mode;
|
pmo_is_device_in_low_pwr_mode is_device_in_low_pwr_mode;
|
||||||
pmo_get_cfg_int get_cfg_int;
|
pmo_get_cfg_int get_cfg_int;
|
||||||
|
pmo_get_dtim_period get_dtim_period;
|
||||||
|
pmo_get_beacon_interval get_beacon_interval;
|
||||||
qdf_spinlock_t lock;
|
qdf_spinlock_t lock;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -140,50 +140,6 @@ QDF_STATUS pmo_core_psoc_suspend_target(struct wlan_objmgr_psoc *psoc,
|
|||||||
QDF_STATUS pmo_core_psoc_bus_resume_req(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS pmo_core_psoc_bus_resume_req(struct wlan_objmgr_psoc *psoc,
|
||||||
enum qdf_suspend_type type);
|
enum qdf_suspend_type type);
|
||||||
|
|
||||||
/**
|
|
||||||
* pmo_core_get_vdev_dtim_period() - Get vdev dtim period
|
|
||||||
* @vdev: objmgr vdev handle
|
|
||||||
*
|
|
||||||
* Return: Vdev dtim period
|
|
||||||
*/
|
|
||||||
static inline
|
|
||||||
uint8_t pmo_core_get_vdev_dtim_period(struct wlan_objmgr_vdev *vdev)
|
|
||||||
{
|
|
||||||
uint8_t dtim_period = 0;
|
|
||||||
|
|
||||||
if (!vdev) {
|
|
||||||
pmo_err("vdev is null");
|
|
||||||
QDF_ASSERT(0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
/* TODO */
|
|
||||||
/* dtim_period = wlan_vdev_mlme_get_dtim_period(vdev); */
|
|
||||||
|
|
||||||
return dtim_period;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* pmo_core_get_vdev_beacon_interval() - Get vdev beacon interval
|
|
||||||
* @vdev: objmgr vdev handle
|
|
||||||
*
|
|
||||||
* Return: Vdev beacon interval
|
|
||||||
*/
|
|
||||||
static inline
|
|
||||||
uint16_t pmo_core_get_vdev_beacon_interval(struct wlan_objmgr_vdev *vdev)
|
|
||||||
{
|
|
||||||
uint16_t beacon_interval = 0;
|
|
||||||
|
|
||||||
if (!vdev) {
|
|
||||||
pmo_err("vdev is null");
|
|
||||||
QDF_ASSERT(0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
/* TODO */
|
|
||||||
/* beacon_interval = wlan_vdev_mlme_get_beacon_interval(vdev); */
|
|
||||||
|
|
||||||
return beacon_interval;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pmo_core_update_alt_modulated_dtim_enable() - update alt modulatate dtim
|
* pmo_core_update_alt_modulated_dtim_enable() - update alt modulatate dtim
|
||||||
* @vdev: objmgr vdev handle
|
* @vdev: objmgr vdev handle
|
||||||
|
@@ -109,6 +109,8 @@
|
|||||||
|
|
||||||
#define PMO_WOW_FILTERS_ARP_NS 2
|
#define PMO_WOW_FILTERS_ARP_NS 2
|
||||||
#define PMO_WOW_FILTERS_PKT_OR_APF 5
|
#define PMO_WOW_FILTERS_PKT_OR_APF 5
|
||||||
|
/* Default Listen Interval */
|
||||||
|
#define PMO_DEFAULT_LISTEN_INTERVAL 1
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pmo_get_and_increment_wow_default_ptrn() -Get and increment wow default ptrn
|
* pmo_get_and_increment_wow_default_ptrn() -Get and increment wow default ptrn
|
||||||
|
@@ -36,6 +36,63 @@
|
|||||||
#include "cds_api.h"
|
#include "cds_api.h"
|
||||||
#include "wlan_pmo_static_config.h"
|
#include "wlan_pmo_static_config.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pmo_core_get_vdev_dtim_period() - Get vdev dtim period
|
||||||
|
* @vdev: objmgr vdev handle
|
||||||
|
*
|
||||||
|
* Return: Vdev dtim period
|
||||||
|
*/
|
||||||
|
static uint8_t pmo_core_get_vdev_dtim_period(struct wlan_objmgr_vdev *vdev)
|
||||||
|
{
|
||||||
|
uint8_t dtim_period = 0;
|
||||||
|
struct pmo_psoc_priv_obj *psoc_ctx;
|
||||||
|
struct wlan_objmgr_psoc *psoc;
|
||||||
|
QDF_STATUS ret = QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
psoc = pmo_vdev_get_psoc(vdev);
|
||||||
|
|
||||||
|
pmo_psoc_with_ctx(psoc, psoc_ctx) {
|
||||||
|
if (psoc_ctx->get_dtim_period)
|
||||||
|
ret = psoc_ctx->get_dtim_period(pmo_vdev_get_id(vdev),
|
||||||
|
&dtim_period);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (QDF_IS_STATUS_ERROR(ret))
|
||||||
|
pmo_err("Failed to get to dtim period for vdevId %d",
|
||||||
|
pmo_vdev_get_id(vdev));
|
||||||
|
|
||||||
|
return dtim_period;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pmo_core_get_vdev_beacon_interval() - Get vdev beacon interval
|
||||||
|
* @vdev: objmgr vdev handle
|
||||||
|
*
|
||||||
|
* Return: Vdev beacon interval
|
||||||
|
*/
|
||||||
|
static uint16_t pmo_core_get_vdev_beacon_interval(struct wlan_objmgr_vdev *vdev)
|
||||||
|
{
|
||||||
|
uint16_t beacon_interval = 0;
|
||||||
|
struct pmo_psoc_priv_obj *psoc_ctx;
|
||||||
|
struct wlan_objmgr_psoc *psoc;
|
||||||
|
QDF_STATUS ret = QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
psoc = pmo_vdev_get_psoc(vdev);
|
||||||
|
|
||||||
|
pmo_psoc_with_ctx(psoc, psoc_ctx) {
|
||||||
|
if (psoc_ctx->get_beacon_interval)
|
||||||
|
ret = psoc_ctx->get_beacon_interval(
|
||||||
|
pmo_vdev_get_id(vdev),
|
||||||
|
&beacon_interval);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (QDF_IS_STATUS_ERROR(ret))
|
||||||
|
pmo_err("Failed to get beacon interval for vdev id %d",
|
||||||
|
pmo_vdev_get_id(vdev));
|
||||||
|
|
||||||
|
return beacon_interval;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pmo_core_calculate_listen_interval() - Calculate vdev listen interval
|
* pmo_core_calculate_listen_interval() - Calculate vdev listen interval
|
||||||
* @vdev: objmgr vdev handle
|
* @vdev: objmgr vdev handle
|
||||||
@@ -107,7 +164,7 @@ static void pmo_core_set_vdev_suspend_dtim(struct wlan_objmgr_psoc *psoc,
|
|||||||
struct wlan_objmgr_vdev *vdev,
|
struct wlan_objmgr_vdev *vdev,
|
||||||
struct pmo_vdev_priv_obj *vdev_ctx)
|
struct pmo_vdev_priv_obj *vdev_ctx)
|
||||||
{
|
{
|
||||||
uint32_t listen_interval;
|
uint32_t listen_interval = PMO_DEFAULT_LISTEN_INTERVAL;
|
||||||
QDF_STATUS ret;
|
QDF_STATUS ret;
|
||||||
uint8_t vdev_id;
|
uint8_t vdev_id;
|
||||||
enum pmo_power_save_qpower_mode qpower_config;
|
enum pmo_power_save_qpower_mode qpower_config;
|
||||||
|
@@ -207,6 +207,48 @@ QDF_STATUS pmo_register_get_pause_bitmap(struct wlan_objmgr_psoc *psoc,
|
|||||||
*/
|
*/
|
||||||
QDF_STATUS pmo_unregister_get_pause_bitmap(struct wlan_objmgr_psoc *psoc);
|
QDF_STATUS pmo_unregister_get_pause_bitmap(struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pmo_register_get_dtim_period_callback(): API to register callback that gets
|
||||||
|
* dtim period from mlme
|
||||||
|
* @psoc: objmgr psoc handle
|
||||||
|
* @handler: pointer to the callback function
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS in case of success else error
|
||||||
|
*/
|
||||||
|
QDF_STATUS pmo_register_get_dtim_period_callback(struct wlan_objmgr_psoc *psoc,
|
||||||
|
pmo_get_dtim_period handler);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pmo_unregister_get_dtim_period_callback(): API to unregister callback that
|
||||||
|
* gets dtim period from mlme
|
||||||
|
* @psoc: objmgr psoc handle
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS in case of success else error
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
pmo_unregister_get_dtim_period_callback(struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pmo_register_get_beacon_interval_callback(): API to register callback that
|
||||||
|
* gets beacon interval from mlme
|
||||||
|
* @psoc: objmgr psoc handle
|
||||||
|
* @handler: pointer to the callback function
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS in case of success else error
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
pmo_register_get_beacon_interval_callback(struct wlan_objmgr_psoc *psoc,
|
||||||
|
pmo_get_beacon_interval handler);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pmo_unregister_get_beacon_interval_callback(): API to unregister callback
|
||||||
|
* that gets beacon interval from mlme
|
||||||
|
* @psoc: objmgr psoc handle
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS in case of success else error
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
pmo_unregister_get_beacon_interval_callback(struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pmo_register_is_device_in_low_pwr_mode(): API to get register device power
|
* pmo_register_is_device_in_low_pwr_mode(): API to get register device power
|
||||||
@@ -386,6 +428,33 @@ pmo_unregister_get_cfg_int_callback(struct wlan_objmgr_psoc *psoc)
|
|||||||
{
|
{
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline QDF_STATUS
|
||||||
|
pmo_register_get_dtim_period_callback(struct wlan_objmgr_psoc *psoc,
|
||||||
|
pmo_get_dtim_period handler)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline QDF_STATUS
|
||||||
|
pmo_unregister_get_dtim_period_callback(struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline QDF_STATUS
|
||||||
|
pmo_register_get_beacon_interval_callback(struct wlan_objmgr_psoc *psoc,
|
||||||
|
pmo_get_beacon_interval handler)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline QDF_STATUS
|
||||||
|
pmo_unregister_get_beacon_interval_callback(struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* WLAN_POWER_MANAGEMENT_OFFLOAD */
|
#endif /* WLAN_POWER_MANAGEMENT_OFFLOAD */
|
||||||
|
|
||||||
#endif /* end of _WLAN_PMO_OBJ_MGMT_API_H_ */
|
#endif /* end of _WLAN_PMO_OBJ_MGMT_API_H_ */
|
||||||
|
@@ -41,10 +41,20 @@
|
|||||||
typedef void (*pmo_notify_pause_bitmap)(uint8_t vdev_id, uint16_t value);
|
typedef void (*pmo_notify_pause_bitmap)(uint8_t vdev_id, uint16_t value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* typedef for getting cfg integer from mlme
|
* typedef for function that gets cfg integer from mlme
|
||||||
*/
|
*/
|
||||||
typedef QDF_STATUS (*pmo_get_cfg_int)(int cfg_id, int *value);
|
typedef QDF_STATUS (*pmo_get_cfg_int)(int cfg_id, int *value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* typedef for function that gets dtim period from mlme
|
||||||
|
*/
|
||||||
|
typedef QDF_STATUS (*pmo_get_dtim_period)(uint8_t vdev_id, uint8_t *value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* typedef for function that gets beacon interval from mlme
|
||||||
|
*/
|
||||||
|
typedef QDF_STATUS (*pmo_get_beacon_interval)(uint8_t vdev_id, uint16_t *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* typedef for getting vdev pause bitmap
|
* typedef for getting vdev pause bitmap
|
||||||
*/
|
*/
|
||||||
|
@@ -769,7 +769,6 @@ QDF_STATUS pmo_register_get_cfg_int_callback(struct wlan_objmgr_psoc *psoc,
|
|||||||
pmo_psoc_with_ctx(psoc, psoc_ctx) {
|
pmo_psoc_with_ctx(psoc, psoc_ctx) {
|
||||||
psoc_ctx->get_cfg_int = handler;
|
psoc_ctx->get_cfg_int = handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
pmo_psoc_put_ref(psoc);
|
pmo_psoc_put_ref(psoc);
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
@@ -794,7 +793,117 @@ QDF_STATUS pmo_unregister_get_cfg_int_callback(struct wlan_objmgr_psoc *psoc)
|
|||||||
pmo_psoc_with_ctx(psoc, psoc_ctx) {
|
pmo_psoc_with_ctx(psoc, psoc_ctx) {
|
||||||
psoc_ctx->get_cfg_int = NULL;
|
psoc_ctx->get_cfg_int = NULL;
|
||||||
}
|
}
|
||||||
|
pmo_psoc_put_ref(psoc);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS pmo_register_get_dtim_period_callback(struct wlan_objmgr_psoc *psoc,
|
||||||
|
pmo_get_dtim_period handler)
|
||||||
|
{
|
||||||
|
struct pmo_psoc_priv_obj *psoc_ctx;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
if (!psoc) {
|
||||||
|
pmo_err("psoc is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!handler) {
|
||||||
|
pmo_err("pmo_get_dtim_period is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = pmo_psoc_get_ref(psoc);
|
||||||
|
if (status != QDF_STATUS_SUCCESS) {
|
||||||
|
pmo_err("pmo cannot get the reference out of psoc");
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
pmo_psoc_with_ctx(psoc, psoc_ctx) {
|
||||||
|
psoc_ctx->get_dtim_period = handler;
|
||||||
|
}
|
||||||
|
pmo_psoc_put_ref(psoc);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
pmo_unregister_get_dtim_period_callback(struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
struct pmo_psoc_priv_obj *psoc_ctx;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
if (!psoc) {
|
||||||
|
pmo_err("psoc is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = pmo_psoc_get_ref(psoc);
|
||||||
|
if (status != QDF_STATUS_SUCCESS) {
|
||||||
|
pmo_err("pmo cannot get the reference out of psoc");
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
pmo_psoc_with_ctx(psoc, psoc_ctx) {
|
||||||
|
psoc_ctx->get_dtim_period = NULL;
|
||||||
|
}
|
||||||
|
pmo_psoc_put_ref(psoc);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
pmo_register_get_beacon_interval_callback(struct wlan_objmgr_psoc *psoc,
|
||||||
|
pmo_get_beacon_interval handler)
|
||||||
|
{
|
||||||
|
struct pmo_psoc_priv_obj *psoc_ctx;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
if (!psoc) {
|
||||||
|
pmo_err("psoc is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!handler) {
|
||||||
|
pmo_err("pmo_get_beacon_interval is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = pmo_psoc_get_ref(psoc);
|
||||||
|
if (status != QDF_STATUS_SUCCESS) {
|
||||||
|
pmo_err("pmo cannot get the reference out of psoc");
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
pmo_psoc_with_ctx(psoc, psoc_ctx) {
|
||||||
|
psoc_ctx->get_beacon_interval = handler;
|
||||||
|
}
|
||||||
|
pmo_psoc_put_ref(psoc);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
pmo_unregister_get_beacon_interval_callback(struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
struct pmo_psoc_priv_obj *psoc_ctx;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
if (!psoc) {
|
||||||
|
pmo_err("psoc is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = pmo_psoc_get_ref(psoc);
|
||||||
|
if (status != QDF_STATUS_SUCCESS) {
|
||||||
|
pmo_err("pmo cannot get the reference out of psoc");
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
pmo_psoc_with_ctx(psoc, psoc_ctx) {
|
||||||
|
psoc_ctx->get_beacon_interval = NULL;
|
||||||
|
}
|
||||||
pmo_psoc_put_ref(psoc);
|
pmo_psoc_put_ref(psoc);
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
|
@@ -2400,19 +2400,75 @@ QDF_STATUS wma_vdev_get_cfg_int(int cfg_id, int *value)
|
|||||||
/* set value to zero */
|
/* set value to zero */
|
||||||
*value = 0;
|
*value = 0;
|
||||||
|
|
||||||
if (!mac) {
|
if (!mac)
|
||||||
WMA_LOGE("%s: Failed to get mac context!", __func__);
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
|
||||||
|
|
||||||
if (wlan_cfg_get_int(mac, cfg_id, value) != eSIR_SUCCESS) {
|
if (wlan_cfg_get_int(mac, cfg_id, value) != eSIR_SUCCESS)
|
||||||
WMA_LOGE("%s: Can't get cfg_id :%d", __func__, cfg_id);
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wma_vdev_get_dtim_period - Get dtim period value from mlme
|
||||||
|
* @vdev_id: vdev index number
|
||||||
|
* @value: pointer to the value to fill out
|
||||||
|
*
|
||||||
|
* Note caller must verify return status before using value
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS when fetched a valid value from cfg else
|
||||||
|
* QDF_STATUS_E_FAILURE
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
QDF_STATUS wma_vdev_get_dtim_period(uint8_t vdev_id, uint8_t *value)
|
||||||
|
{
|
||||||
|
tp_wma_handle wma = (tp_wma_handle)cds_get_context(QDF_MODULE_ID_WMA);
|
||||||
|
struct wma_txrx_node *iface;
|
||||||
|
/* set value to zero */
|
||||||
|
*value = 0;
|
||||||
|
|
||||||
|
if (!wma)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
iface = &wma->interfaces[vdev_id];
|
||||||
|
|
||||||
|
if (!iface || !iface->handle)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
*value = iface->dtimPeriod;
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wma_vdev_get_beacon_interval - Get beacon interval from mlme
|
||||||
|
* @vdev_id: vdev index number
|
||||||
|
* @value: pointer to the value to fill out
|
||||||
|
*
|
||||||
|
* Note caller must verify return status before using value
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS when fetched a valid value from cfg else
|
||||||
|
* QDF_STATUS_E_FAILURE
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
QDF_STATUS wma_vdev_get_beacon_interval(uint8_t vdev_id, uint16_t *value)
|
||||||
|
{
|
||||||
|
tp_wma_handle wma = (tp_wma_handle)cds_get_context(QDF_MODULE_ID_WMA);
|
||||||
|
struct wma_txrx_node *iface;
|
||||||
|
/* set value to zero */
|
||||||
|
*value = 0;
|
||||||
|
|
||||||
|
if (!wma)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
iface = &wma->interfaces[vdev_id];
|
||||||
|
|
||||||
|
if (!iface || !iface->handle)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
*value = iface->beaconInterval;
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wma_vdev_set_pause_bit() - Set a bit in vdev pause bitmap
|
* wma_vdev_set_pause_bit() - Set a bit in vdev pause bitmap
|
||||||
* @vdev_id: the Id of the vdev to configure
|
* @vdev_id: the Id of the vdev to configure
|
||||||
|
@@ -3536,6 +3536,10 @@ QDF_STATUS wma_open(struct wlan_objmgr_psoc *psoc,
|
|||||||
wma_vdev_is_device_in_low_pwr_mode);
|
wma_vdev_is_device_in_low_pwr_mode);
|
||||||
pmo_register_get_cfg_int_callback(wma_handle->psoc,
|
pmo_register_get_cfg_int_callback(wma_handle->psoc,
|
||||||
wma_vdev_get_cfg_int);
|
wma_vdev_get_cfg_int);
|
||||||
|
pmo_register_get_dtim_period_callback(wma_handle->psoc,
|
||||||
|
wma_vdev_get_dtim_period);
|
||||||
|
pmo_register_get_beacon_interval_callback(wma_handle->psoc,
|
||||||
|
wma_vdev_get_beacon_interval);
|
||||||
wma_cbacks.wma_get_connection_info = wma_get_connection_info;
|
wma_cbacks.wma_get_connection_info = wma_get_connection_info;
|
||||||
qdf_status = policy_mgr_register_wma_cb(wma_handle->psoc, &wma_cbacks);
|
qdf_status = policy_mgr_register_wma_cb(wma_handle->psoc, &wma_cbacks);
|
||||||
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
||||||
@@ -4713,6 +4717,8 @@ QDF_STATUS wma_close(void)
|
|||||||
wma_handle->pdev = NULL;
|
wma_handle->pdev = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pmo_unregister_get_beacon_interval_callback(wma_handle->psoc);
|
||||||
|
pmo_unregister_get_dtim_period_callback(wma_handle->psoc);
|
||||||
pmo_unregister_get_cfg_int_callback(wma_handle->psoc);
|
pmo_unregister_get_cfg_int_callback(wma_handle->psoc);
|
||||||
pmo_unregister_is_device_in_low_pwr_mode(wma_handle->psoc);
|
pmo_unregister_is_device_in_low_pwr_mode(wma_handle->psoc);
|
||||||
pmo_unregister_get_pause_bitmap(wma_handle->psoc);
|
pmo_unregister_get_pause_bitmap(wma_handle->psoc);
|
||||||
|
Reference in New Issue
Block a user