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