qcacld-3.0: Move RTPM QoS notification inside HDD enable/disable

Runtime PM is enabled in hdd_enable_power_management(). Hence, move
PM QoS notification registration to HDD enable power management.
Similarly, move PM QoS unregistration to HDD disable power management.

Change-Id: Ifc7f280ab838dd9347095726961b6a0296626f6a
CRs-Fixed: 2665176
This commit is contained in:
Alan Chen 2020-04-15 16:06:17 -07:00 • committed by nshrivas
commit ff95ece535

View file

@ -2856,44 +2856,6 @@ err_start_adapter:
return -EINVAL;
}
/**
* hdd_enable_power_management() - API to Enable Power Management
*
* API invokes Bus Interface Layer power management functionality
*
* Return: None
*/
static void hdd_enable_power_management(void)
{
void *hif_ctx = cds_get_context(QDF_MODULE_ID_HIF);
if (!hif_ctx) {
hdd_err("Bus Interface Context is Invalid");
return;
}
hif_enable_power_management(hif_ctx, cds_is_packet_log_enabled());
}
/**
* hdd_disable_power_management() - API to disable Power Management
*
* API disable Bus Interface Layer Power management functionality
*
* Return: None
*/
static void hdd_disable_power_management(void)
{
void *hif_ctx = cds_get_context(QDF_MODULE_ID_HIF);
if (!hif_ctx) {
hdd_err("Bus Interface Context is Invalid");
return;
}
hif_disable_power_management(hif_ctx);
}
void hdd_update_hw_sw_info(struct hdd_context *hdd_ctx)
{
void *hif_sc;
@ -3543,6 +3505,46 @@ static void hdd_wlan_unregister_pm_qos_notifier(struct hdd_context *hdd_ctx)
}
#endif
/**
* hdd_enable_power_management() - API to Enable Power Management
*
* API invokes Bus Interface Layer power management functionality
*
* Return: None
*/
static void hdd_enable_power_management(struct hdd_context *hdd_ctx)
{
void *hif_ctx = cds_get_context(QDF_MODULE_ID_HIF);
if (!hif_ctx) {
hdd_err("Bus Interface Context is Invalid");
return;
}
hif_enable_power_management(hif_ctx, cds_is_packet_log_enabled());
hdd_wlan_register_pm_qos_notifier(hdd_ctx);
}
/**
* hdd_disable_power_management() - API to disable Power Management
*
* API disable Bus Interface Layer Power management functionality
*
* Return: None
*/
static void hdd_disable_power_management(struct hdd_context *hdd_ctx)
{
void *hif_ctx = cds_get_context(QDF_MODULE_ID_HIF);
if (!hif_ctx) {
hdd_err("Bus Interface Context is Invalid");
return;
}
hdd_wlan_unregister_pm_qos_notifier(hdd_ctx);
hif_disable_power_management(hif_ctx);
}
/**
* hdd_register_notifiers - Register netdev notifiers.
* @hdd_ctx: HDD context
@ -3573,14 +3575,8 @@ static int hdd_register_notifiers(struct hdd_context *hdd_ctx)
goto unregister_inetaddr_notifier;
}
ret = hdd_wlan_register_pm_qos_notifier(hdd_ctx);
if (ret)
goto unregister_nud_notifier;
return 0;
unregister_nud_notifier:
hdd_nud_unregister_netevent_notifier(hdd_ctx);
unregister_inetaddr_notifier:
unregister_inetaddr_notifier(&hdd_ctx->ipv4_notifier);
unregister_ip6_notifier:
@ -3777,7 +3773,7 @@ int hdd_wlan_start_modules(struct hdd_context *hdd_ctx, bool reinit)
hdd_update_hw_sw_info(hdd_ctx);
if (QDF_GLOBAL_FTM_MODE == hdd_get_conparam()) {
hdd_enable_power_management();
hdd_enable_power_management(hdd_ctx);
hdd_err("in ftm mode, no need to configure cds modules");
ret = -EINVAL;
break;
@ -3789,7 +3785,7 @@ int hdd_wlan_start_modules(struct hdd_context *hdd_ctx, bool reinit)
goto destroy_driver_sysfs;
}
hdd_enable_power_management();
hdd_enable_power_management(hdd_ctx);
hdd_skip_acs_scan_timer_init(hdd_ctx);
@ -8043,7 +8039,6 @@ void hdd_set_disconnect_status(struct hdd_adapter *adapter, bool status)
*/
void hdd_unregister_notifiers(struct hdd_context *hdd_ctx)
{
hdd_wlan_unregister_pm_qos_notifier(hdd_ctx);
hdd_nud_unregister_netevent_notifier(hdd_ctx);
hdd_wlan_unregister_ip6_notifier(hdd_ctx);
@ -12760,15 +12755,19 @@ int hdd_wlan_stop_modules(struct hdd_context *hdd_ctx, bool ftm_mode)
case DRIVER_MODULES_ENABLED:
hdd_debug("Wlan transitioning (CLOSED <- ENABLED)");
if (hdd_get_conparam() == QDF_GLOBAL_FTM_MODE ||
hdd_get_conparam() == QDF_GLOBAL_EPPING_MODE)
if (hdd_get_conparam() == QDF_GLOBAL_FTM_MODE) {
hdd_disable_power_management(hdd_ctx);
break;
}
if (hdd_get_conparam() == QDF_GLOBAL_EPPING_MODE)
break;
wlan_hdd_deinit_tx_rx_histogram(hdd_ctx);
hdd_skip_acs_scan_timer_deinit(hdd_ctx);
hdd_disable_power_management();
hdd_disable_power_management(hdd_ctx);
if (hdd_deconfigure_cds(hdd_ctx)) {
hdd_err("Failed to de-configure CDS");
QDF_ASSERT(0);