qcacld-3.0: Normalize bus bandwidth init/deinit sequence
The HDD bus bandwidth infrastructure init/deinit sequence is currently very sporadic. Startup and re-init initialize it at different point, and failed to de-initialize it in the case of failure. Likewise, exit and shutdown de-initialize it at different points. Update the HDD bus bandwidth init/deinit sequence so that it is uniform and symmetrical in all situations. Change-Id: I5312bd340d885aafb8d4e809672eb02afc199781 CRs-Fixed: 2290237
此提交包含在:
@@ -2264,14 +2264,14 @@ void hdd_bus_bw_compute_timer_try_stop(struct hdd_context *hdd_ctx);
|
||||
int hdd_bus_bandwidth_init(struct hdd_context *hdd_ctx);
|
||||
|
||||
/**
|
||||
* hdd_bus_bandwidth_destroy() - Destroy bus bandwidth data structures.
|
||||
* hdd_bus_bandwidth_deinit() - De-initialize bus bandwidth data structures.
|
||||
* @hdd_ctx: HDD context
|
||||
*
|
||||
* Destroy bus bandwidth related data structures like timer.
|
||||
* De-initialize bus bandwidth related data structures like timer.
|
||||
*
|
||||
* Return: None.
|
||||
*/
|
||||
void hdd_bus_bandwidth_destroy(struct hdd_context *hdd_ctx);
|
||||
void hdd_bus_bandwidth_deinit(struct hdd_context *hdd_ctx);
|
||||
|
||||
/**
|
||||
* hdd_bus_bw_cancel_work() - Cancel the bus_bw_work worker
|
||||
@@ -2315,7 +2315,7 @@ int hdd_bus_bandwidth_init(struct hdd_context *hdd_ctx)
|
||||
}
|
||||
|
||||
static inline
|
||||
void hdd_bus_bandwidth_destroy(struct hdd_context *hdd_ctx)
|
||||
void hdd_bus_bandwidth_deinit(struct hdd_context *hdd_ctx)
|
||||
{
|
||||
}
|
||||
|
||||
|
@@ -6949,8 +6949,6 @@ static void hdd_wlan_exit(struct hdd_context *hdd_ctx)
|
||||
|
||||
hdd_unregister_notifiers(hdd_ctx);
|
||||
|
||||
hdd_bus_bandwidth_destroy(hdd_ctx);
|
||||
|
||||
#ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE
|
||||
if (QDF_TIMER_STATE_RUNNING ==
|
||||
qdf_mc_timer_get_current_state(&hdd_ctx->skip_acs_scan_timer)) {
|
||||
@@ -7012,6 +7010,7 @@ static void hdd_wlan_exit(struct hdd_context *hdd_ctx)
|
||||
|
||||
hdd_wlan_stop_modules(hdd_ctx, false);
|
||||
|
||||
hdd_bus_bandwidth_deinit(hdd_ctx);
|
||||
hdd_driver_memdump_deinit();
|
||||
|
||||
qdf_nbuf_deinit_replenish_timer();
|
||||
@@ -7715,7 +7714,7 @@ int hdd_bus_bandwidth_init(struct hdd_context *hdd_ctx)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void hdd_bus_bandwidth_destroy(struct hdd_context *hdd_ctx)
|
||||
void hdd_bus_bandwidth_deinit(struct hdd_context *hdd_ctx)
|
||||
{
|
||||
if (hdd_ctx->bus_bw_timer_running)
|
||||
hdd_reset_tcp_delack(hdd_ctx);
|
||||
@@ -11173,8 +11172,8 @@ int hdd_wlan_startup(struct device *dev)
|
||||
|
||||
osif_request_manager_init();
|
||||
qdf_atomic_init(&hdd_ctx->con_mode_flag);
|
||||
|
||||
hdd_driver_memdump_init();
|
||||
hdd_bus_bandwidth_init(hdd_ctx);
|
||||
|
||||
ret = hdd_wlan_start_modules(hdd_ctx, false);
|
||||
if (ret) {
|
||||
@@ -11236,8 +11235,6 @@ int hdd_wlan_startup(struct device *dev)
|
||||
qdf_spinlock_create(&hdd_ctx->acs_skip_lock);
|
||||
#endif
|
||||
|
||||
hdd_bus_bandwidth_init(hdd_ctx);
|
||||
|
||||
hdd_lpass_notify_start(hdd_ctx);
|
||||
|
||||
if (hdd_ctx->rps)
|
||||
@@ -11287,6 +11284,7 @@ err_stop_modules:
|
||||
hdd_wlan_stop_modules(hdd_ctx, false);
|
||||
|
||||
err_memdump_deinit:
|
||||
hdd_bus_bandwidth_deinit(hdd_ctx);
|
||||
hdd_driver_memdump_deinit();
|
||||
|
||||
osif_request_manager_deinit();
|
||||
|
@@ -1240,10 +1240,9 @@ QDF_STATUS hdd_wlan_shutdown(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
hdd_bus_bandwidth_destroy(hdd_ctx);
|
||||
|
||||
hdd_wlan_stop_modules(hdd_ctx, false);
|
||||
|
||||
hdd_bus_bandwidth_deinit(hdd_ctx);
|
||||
hdd_lpass_notify_stop(hdd_ctx);
|
||||
|
||||
hdd_info("WLAN driver shutdown complete");
|
||||
@@ -1321,10 +1320,8 @@ QDF_STATUS hdd_wlan_re_init(void)
|
||||
hdd_err("Failed to get adapter");
|
||||
|
||||
hdd_dp_trace_init(hdd_ctx->config);
|
||||
|
||||
hdd_bus_bandwidth_init(hdd_ctx);
|
||||
|
||||
|
||||
ret = hdd_wlan_start_modules(hdd_ctx, true);
|
||||
if (ret) {
|
||||
hdd_err("Failed to start wlan after error");
|
||||
@@ -1361,6 +1358,7 @@ QDF_STATUS hdd_wlan_re_init(void)
|
||||
goto success;
|
||||
|
||||
err_re_init:
|
||||
hdd_bus_bandwidth_deinit(hdd_ctx);
|
||||
qdf_dp_trace_deinit();
|
||||
/* Allow the phone to go to sleep */
|
||||
hdd_allow_suspend(WIFI_POWER_EVENT_WAKELOCK_DRIVER_REINIT);
|
||||
|
新增問題並參考
封鎖使用者