qcacld-3.0: Add support for getting cfg integer from PMO
Add support for getting cfg integer from PMO. Register callbacks during pe_open/close so that PMO can query CFG int values for calculating parameters like listen interval etc. Change-Id: I52d165586576e547e175ba276e6b7225db5b27e0 CRs-Fixed: 2252661
此提交包含在:
@@ -46,6 +46,7 @@
|
||||
* @txrx_hdl: txrx pdev handle
|
||||
* @pause_bitmap_notifier: registered callback to update pause bitmap value
|
||||
* @pmo_get_pause_bitmap: registered callback to get pause bitmap value
|
||||
* @get_cfg_int: register callback to get integer from cfg
|
||||
* @lock: spin lock for pmo psoc
|
||||
*/
|
||||
struct pmo_psoc_priv_obj {
|
||||
@@ -60,6 +61,7 @@ struct pmo_psoc_priv_obj {
|
||||
pmo_notify_pause_bitmap pause_bitmap_notifier;
|
||||
pmo_get_pause_bitmap get_pause_bitmap;
|
||||
pmo_is_device_in_low_pwr_mode is_device_in_low_pwr_mode;
|
||||
pmo_get_cfg_int get_cfg_int;
|
||||
qdf_spinlock_t lock;
|
||||
};
|
||||
|
||||
@@ -131,6 +133,15 @@ struct pmo_vdev_priv_obj {
|
||||
qdf_spinlock_t pmo_vdev_lock;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum pmo_cfg_int_type: Mapping for Mac config param ID's
|
||||
* @PMO_CFG_DTIM_PERIOD: CFG ID for Dtim Period value
|
||||
* @PMO_CFG_LISTEN_INTERVAL: CFG ID for Listen Interval value
|
||||
*/
|
||||
enum pmo_cfg_int_type {
|
||||
PMO_CFG_DTIM_PERIOD = 0x5,
|
||||
PMO_CFG_LISTEN_INTERVAL = 0x26,
|
||||
};
|
||||
#endif /* WLAN_POWER_MANAGEMENT_OFFLOAD */
|
||||
|
||||
#endif /* end of _WLAN_PMO_PRIV_STRUCT_H_ */
|
||||
|
@@ -54,8 +54,8 @@ QDF_STATUS pmo_deinit(void);
|
||||
*
|
||||
* Return QDF_STATUS status in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_psoc_object_created_notification(
|
||||
struct wlan_objmgr_psoc *psoc, void *arg);
|
||||
QDF_STATUS pmo_psoc_object_created_notification(struct wlan_objmgr_psoc *psoc,
|
||||
void *arg);
|
||||
|
||||
/**
|
||||
* pmo_psoc_object_destroyed_notification(): pmo psoc delete handler
|
||||
@@ -66,8 +66,8 @@ QDF_STATUS pmo_psoc_object_created_notification(
|
||||
*
|
||||
* Return QDF_STATUS status in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_psoc_object_destroyed_notification(
|
||||
struct wlan_objmgr_psoc *psoc, void *arg);
|
||||
QDF_STATUS pmo_psoc_object_destroyed_notification(struct wlan_objmgr_psoc *psoc,
|
||||
void *arg);
|
||||
|
||||
/**
|
||||
* pmo_vdev_object_created_notification(): pmo vdev create handler
|
||||
@@ -78,8 +78,8 @@ QDF_STATUS pmo_psoc_object_destroyed_notification(
|
||||
*
|
||||
* Return QDF_STATUS status in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_vdev_object_created_notification(
|
||||
struct wlan_objmgr_vdev *vdev, void *arg);
|
||||
QDF_STATUS pmo_vdev_object_created_notification(struct wlan_objmgr_vdev *vdev,
|
||||
void *arg);
|
||||
|
||||
/**
|
||||
* pmo_vdev_ready() - handles vdev ready in firmware event
|
||||
@@ -102,8 +102,8 @@ QDF_STATUS pmo_vdev_ready(struct wlan_objmgr_vdev *vdev);
|
||||
*
|
||||
* Return QDF_STATUS status in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_vdev_object_destroyed_notification(
|
||||
struct wlan_objmgr_vdev *vdev, void *arg);
|
||||
QDF_STATUS pmo_vdev_object_destroyed_notification(struct wlan_objmgr_vdev *vdev,
|
||||
void *arg);
|
||||
|
||||
/**
|
||||
* pmo_register_suspend_handler(): register suspend handler for components
|
||||
@@ -113,10 +113,9 @@ QDF_STATUS pmo_vdev_object_destroyed_notification(
|
||||
*
|
||||
* Return QDF_STATUS status -in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_register_suspend_handler(
|
||||
enum wlan_umac_comp_id id,
|
||||
pmo_psoc_suspend_handler handler,
|
||||
void *arg);
|
||||
QDF_STATUS pmo_register_suspend_handler(enum wlan_umac_comp_id id,
|
||||
pmo_psoc_suspend_handler handler,
|
||||
void *arg);
|
||||
|
||||
/**
|
||||
* pmo_unregister_suspend_handler():unregister suspend handler for components
|
||||
@@ -125,9 +124,8 @@ QDF_STATUS pmo_register_suspend_handler(
|
||||
*
|
||||
* Return QDF_STATUS status -in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_unregister_suspend_handler(
|
||||
enum wlan_umac_comp_id id,
|
||||
pmo_psoc_suspend_handler handler);
|
||||
QDF_STATUS pmo_unregister_suspend_handler(enum wlan_umac_comp_id id,
|
||||
pmo_psoc_suspend_handler handler);
|
||||
|
||||
/**
|
||||
* pmo_register_resume_handler(): API to register resume handler for components
|
||||
@@ -137,10 +135,9 @@ QDF_STATUS pmo_unregister_suspend_handler(
|
||||
*
|
||||
* Return QDF_STATUS status - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_register_resume_handler(
|
||||
enum wlan_umac_comp_id id,
|
||||
pmo_psoc_resume_handler handler,
|
||||
void *arg);
|
||||
QDF_STATUS pmo_register_resume_handler(enum wlan_umac_comp_id id,
|
||||
pmo_psoc_resume_handler handler,
|
||||
void *arg);
|
||||
|
||||
/**
|
||||
* pmo_unregister_resume_handler(): unregister resume handler for components
|
||||
@@ -149,9 +146,8 @@ QDF_STATUS pmo_register_resume_handler(
|
||||
*
|
||||
* Return QDF_STATUS status - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_unregister_resume_handler(
|
||||
enum wlan_umac_comp_id id,
|
||||
pmo_psoc_resume_handler handler);
|
||||
QDF_STATUS pmo_unregister_resume_handler(enum wlan_umac_comp_id id,
|
||||
pmo_psoc_resume_handler handler);
|
||||
|
||||
/**
|
||||
* pmo_suspend_all_components(): API to suspend all component
|
||||
@@ -161,7 +157,7 @@ QDF_STATUS pmo_unregister_resume_handler(
|
||||
* Return QDF_STATUS status - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_suspend_all_components(struct wlan_objmgr_psoc *psoc,
|
||||
enum qdf_suspend_type suspend_type);
|
||||
enum qdf_suspend_type suspend_type);
|
||||
|
||||
/**
|
||||
* pmo_resume_all_components(): API to resume all component
|
||||
@@ -171,7 +167,7 @@ QDF_STATUS pmo_suspend_all_components(struct wlan_objmgr_psoc *psoc,
|
||||
* Return QDF_STATUS status - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_resume_all_components(struct wlan_objmgr_psoc *psoc,
|
||||
enum qdf_suspend_type suspend_type);
|
||||
enum qdf_suspend_type suspend_type);
|
||||
|
||||
/**
|
||||
* pmo_register_pause_bitmap_notifier(): API to register pause bitmap notifier
|
||||
@@ -180,20 +176,17 @@ QDF_STATUS pmo_resume_all_components(struct wlan_objmgr_psoc *psoc,
|
||||
*
|
||||
* Return QDF_STATUS status - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_register_pause_bitmap_notifier(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
pmo_notify_pause_bitmap handler);
|
||||
QDF_STATUS pmo_register_pause_bitmap_notifier(struct wlan_objmgr_psoc *psoc,
|
||||
pmo_notify_pause_bitmap handler);
|
||||
|
||||
/**
|
||||
* pmo_unregister_pause_bitmap_notifier(): API to unregister pause bitmap notifier
|
||||
* pmo_unregister_pause_bitmap_notifier(): API to unregister pause bitmap
|
||||
* notifier
|
||||
* @psoc: objmgr psoc handle
|
||||
* @handler: pause bitmap updated notifier
|
||||
*
|
||||
* Return QDF_STATUS status - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_unregister_pause_bitmap_notifier(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
pmo_notify_pause_bitmap handler);
|
||||
QDF_STATUS pmo_unregister_pause_bitmap_notifier(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
/**
|
||||
* pmo_register_get_pause_bitmap(): API to get register pause bitmap notifier
|
||||
@@ -203,17 +196,16 @@ QDF_STATUS pmo_unregister_pause_bitmap_notifier(
|
||||
* Return QDF_STATUS status - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_register_get_pause_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
pmo_get_pause_bitmap handler);
|
||||
pmo_get_pause_bitmap handler);
|
||||
|
||||
/**
|
||||
* pmo_unregister_get_pause_bitmap(): API to unregister get pause bitmap callback
|
||||
* pmo_unregister_get_pause_bitmap(): API to unregister get pause bitmap
|
||||
* callback
|
||||
* @psoc: objmgr psoc handle
|
||||
* @handler: pause bitmap updated notifier
|
||||
*
|
||||
* Return QDF_STATUS status - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_unregister_get_pause_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
pmo_get_pause_bitmap handler);
|
||||
QDF_STATUS pmo_unregister_get_pause_bitmap(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
|
||||
/**
|
||||
@@ -225,20 +217,40 @@ QDF_STATUS pmo_unregister_get_pause_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
* Return QDF_STATUS status - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_register_is_device_in_low_pwr_mode(struct wlan_objmgr_psoc *psoc,
|
||||
pmo_is_device_in_low_pwr_mode handler);
|
||||
pmo_is_device_in_low_pwr_mode handler);
|
||||
|
||||
/**
|
||||
* pmo_unregister_is_device_in_low_pwr_mode(): API to unregister device power
|
||||
* save check notifier.
|
||||
* @psoc: objmgr psoc handle
|
||||
* @handler: device power save check notifier
|
||||
*
|
||||
* Return QDF_STATUS status - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_unregister_is_device_in_low_pwr_mode(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
pmo_is_device_in_low_pwr_mode handler);
|
||||
#else
|
||||
QDF_STATUS
|
||||
pmo_unregister_is_device_in_low_pwr_mode(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
/**
|
||||
* pmo_register_get_cfg_int_callback(): API to register callback for getting
|
||||
* cfg integer from mlme
|
||||
* @psoc: objmgr psoc handle
|
||||
* @handler: get cfg integer callback notifier
|
||||
*
|
||||
* Return QDF_STATUS status - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_register_get_cfg_int_callback(struct wlan_objmgr_psoc *psoc,
|
||||
pmo_get_cfg_int handler);
|
||||
|
||||
/**
|
||||
* pmo_unregister_get_cfg_int_callback(): API to unregister callback that gets
|
||||
* cfg integer from mlme
|
||||
* @psoc: objmgr psoc handle
|
||||
*
|
||||
* Return QDF_STATUS status - in case of success else return error
|
||||
*/
|
||||
QDF_STATUS pmo_unregister_get_cfg_int_callback(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
#else /* WLAN_POWER_MANAGEMENT_OFFLOAD */
|
||||
|
||||
static inline QDF_STATUS pmo_init(void)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
@@ -250,22 +262,19 @@ static inline QDF_STATUS pmo_deinit(void)
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_psoc_object_created_notification(
|
||||
struct wlan_objmgr_psoc *psoc, void *arg)
|
||||
pmo_psoc_object_created_notification(struct wlan_objmgr_psoc *psoc, void *arg)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_psoc_object_destroyed_notification(
|
||||
struct wlan_objmgr_psoc *psoc, void *arg)
|
||||
pmo_psoc_object_destroyed_notification(struct wlan_objmgr_psoc *psoc, void *arg)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_vdev_object_created_notification(
|
||||
struct wlan_objmgr_vdev *vdev, void *arg)
|
||||
pmo_vdev_object_created_notification(struct wlan_objmgr_vdev *vdev, void *arg)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
@@ -277,106 +286,103 @@ pmo_vdev_ready(struct wlan_objmgr_vdev *vdev)
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_vdev_object_destroyed_notification(
|
||||
struct wlan_objmgr_vdev *vdev, void *arg)
|
||||
pmo_vdev_object_destroyed_notification(struct wlan_objmgr_vdev *vdev, void *arg)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_register_suspend_handler(
|
||||
enum wlan_umac_comp_id id,
|
||||
pmo_psoc_suspend_handler handler,
|
||||
void *arg)
|
||||
pmo_register_suspend_handler(enum wlan_umac_comp_id id,
|
||||
pmo_psoc_suspend_handler handler,
|
||||
void *arg)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_unregister_suspend_handler(
|
||||
enum wlan_umac_comp_id id,
|
||||
pmo_psoc_suspend_handler handler)
|
||||
pmo_unregister_suspend_handler(enum wlan_umac_comp_id id,
|
||||
pmo_psoc_suspend_handler handler)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_register_resume_handler(
|
||||
enum wlan_umac_comp_id id,
|
||||
pmo_psoc_resume_handler handler,
|
||||
void *arg)
|
||||
pmo_register_resume_handler(enum wlan_umac_comp_id id,
|
||||
pmo_psoc_resume_handler handler,
|
||||
void *arg)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_unregister_resume_handler(
|
||||
enum wlan_umac_comp_id id,
|
||||
pmo_psoc_resume_handler handler)
|
||||
pmo_unregister_resume_handler(enum wlan_umac_comp_id id,
|
||||
pmo_psoc_resume_handler handler)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_suspend_all_components(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
enum qdf_suspend_type suspend_type)
|
||||
pmo_suspend_all_components(struct wlan_objmgr_psoc *psoc,
|
||||
enum qdf_suspend_type suspend_type)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_resume_all_components(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
enum qdf_suspend_type suspend_type)
|
||||
pmo_resume_all_components(struct wlan_objmgr_psoc *psoc,
|
||||
enum qdf_suspend_type suspend_type)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_register_pause_bitmap_notifier(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
pmo_notify_pause_bitmap handler)
|
||||
pmo_register_pause_bitmap_notifier(struct wlan_objmgr_psoc *psoc,
|
||||
pmo_notify_pause_bitmap handler)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_unregister_pause_bitmap_notifier(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
pmo_notify_pause_bitmap handler)
|
||||
pmo_unregister_pause_bitmap_notifier(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_register_get_pause_bitmap(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
pmo_get_pause_bitmap handler)
|
||||
pmo_register_get_pause_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
pmo_get_pause_bitmap handler)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_unregister_get_pause_bitmap(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
pmo_get_pause_bitmap handler)
|
||||
pmo_unregister_get_pause_bitmap(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_register_is_device_in_low_pwr_mode(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
pmo_is_device_in_low_pwr_mode handler)
|
||||
pmo_register_is_device_in_low_pwr_mode(struct wlan_objmgr_psoc *psoc,
|
||||
pmo_is_device_in_low_pwr_mode handler)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_unregister_is_device_in_low_pwr_mode(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
pmo_is_device_in_low_pwr_mode handler)
|
||||
pmo_unregister_is_device_in_low_pwr_mode(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_register_get_cfg_int_callback(struct wlan_objmgr_psoc *psoc,
|
||||
pmo_get_cfg_int handler)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
pmo_unregister_get_cfg_int_callback(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2017 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -38,8 +38,12 @@
|
||||
/**
|
||||
* typedef for vdev notifying the vdev pause bitmap new value to mlme
|
||||
*/
|
||||
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 QDF_STATUS (*pmo_get_cfg_int)(int cfg_id, int *value);
|
||||
|
||||
/**
|
||||
* typedef for getting vdev pause bitmap
|
||||
@@ -54,14 +58,12 @@ typedef bool (*pmo_is_device_in_low_pwr_mode)(uint8_t vdev_id);
|
||||
/*
|
||||
* typedef for pld auto suspend callback during runtime suspend
|
||||
*/
|
||||
typedef
|
||||
int (*pmo_pld_auto_suspend_cb)(void);
|
||||
typedef int (*pmo_pld_auto_suspend_cb)(void);
|
||||
|
||||
/*
|
||||
* typedef for pld auto resume callback during runtime resume
|
||||
*/
|
||||
typedef
|
||||
int (*pmo_pld_auto_resume_cb)(void);
|
||||
typedef int (*pmo_pld_auto_resume_cb)(void);
|
||||
|
||||
/**
|
||||
* struct wlan_pmo_tx_ops - structure of tx function
|
||||
|
@@ -606,8 +606,7 @@ QDF_STATUS pmo_register_pause_bitmap_notifier(struct wlan_objmgr_psoc *psoc,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS pmo_unregister_pause_bitmap_notifier(struct wlan_objmgr_psoc *psoc,
|
||||
pmo_notify_pause_bitmap handler)
|
||||
QDF_STATUS pmo_unregister_pause_bitmap_notifier(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
struct pmo_psoc_priv_obj *psoc_ctx;
|
||||
QDF_STATUS status;
|
||||
@@ -617,11 +616,6 @@ QDF_STATUS pmo_unregister_pause_bitmap_notifier(struct wlan_objmgr_psoc *psoc,
|
||||
return QDF_STATUS_E_NULL_VALUE;
|
||||
}
|
||||
|
||||
if (!handler) {
|
||||
pmo_err("pmo_notify_vdev_pause_bitmap 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");
|
||||
@@ -629,8 +623,7 @@ QDF_STATUS pmo_unregister_pause_bitmap_notifier(struct wlan_objmgr_psoc *psoc,
|
||||
}
|
||||
|
||||
pmo_psoc_with_ctx(psoc, psoc_ctx) {
|
||||
if (psoc_ctx->pause_bitmap_notifier == handler)
|
||||
psoc_ctx->pause_bitmap_notifier = NULL;
|
||||
psoc_ctx->pause_bitmap_notifier = NULL;
|
||||
}
|
||||
|
||||
pmo_psoc_put_ref(psoc);
|
||||
@@ -669,8 +662,7 @@ QDF_STATUS pmo_register_get_pause_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS pmo_unregister_get_pause_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
pmo_get_pause_bitmap handler)
|
||||
QDF_STATUS pmo_unregister_get_pause_bitmap(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
struct pmo_psoc_priv_obj *psoc_ctx;
|
||||
QDF_STATUS status;
|
||||
@@ -680,11 +672,6 @@ QDF_STATUS pmo_unregister_get_pause_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
return QDF_STATUS_E_NULL_VALUE;
|
||||
}
|
||||
|
||||
if (!handler) {
|
||||
pmo_err("pmo_get_pause_bitmap 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");
|
||||
@@ -692,8 +679,7 @@ QDF_STATUS pmo_unregister_get_pause_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
}
|
||||
|
||||
pmo_psoc_with_ctx(psoc, psoc_ctx) {
|
||||
if (psoc_ctx->get_pause_bitmap == handler)
|
||||
psoc_ctx->get_pause_bitmap = NULL;
|
||||
psoc_ctx->get_pause_bitmap = NULL;
|
||||
}
|
||||
|
||||
pmo_psoc_put_ref(psoc);
|
||||
@@ -732,9 +718,8 @@ QDF_STATUS pmo_register_is_device_in_low_pwr_mode(struct wlan_objmgr_psoc *psoc,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS pmo_unregister_is_device_in_low_pwr_mode(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
pmo_is_device_in_low_pwr_mode handler)
|
||||
QDF_STATUS
|
||||
pmo_unregister_is_device_in_low_pwr_mode(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
struct pmo_psoc_priv_obj *psoc_ctx;
|
||||
QDF_STATUS status;
|
||||
@@ -744,11 +729,6 @@ QDF_STATUS pmo_unregister_is_device_in_low_pwr_mode(
|
||||
return QDF_STATUS_E_NULL_VALUE;
|
||||
}
|
||||
|
||||
if (!handler) {
|
||||
pmo_err("pmo_get_pause_bitmap 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");
|
||||
@@ -763,3 +743,59 @@ QDF_STATUS pmo_unregister_is_device_in_low_pwr_mode(
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS pmo_register_get_cfg_int_callback(struct wlan_objmgr_psoc *psoc,
|
||||
pmo_get_cfg_int 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_cfg_int 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_cfg_int = handler;
|
||||
}
|
||||
|
||||
pmo_psoc_put_ref(psoc);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS pmo_unregister_get_cfg_int_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_cfg_int = NULL;
|
||||
}
|
||||
|
||||
pmo_psoc_put_ref(psoc);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
新增問題並參考
封鎖使用者