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
这个提交包含在:
Mukul Sharma
2018-05-24 17:30:52 +05:30
提交者 nshrivas
父节点 e4a628f2d6
当前提交 4474604869
修改 6 个文件,包含 243 行新增140 行删除

查看文件

@@ -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;
}