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
这个提交包含在:
Dustin Brown
2018-08-02 11:51:49 -07:00
提交者 nshrivas
父节点 f6e75c88de
当前提交 86d196bacd
修改 3 个文件,包含 10 行新增14 行删除

查看文件

@@ -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); 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 * @hdd_ctx: HDD context
* *
* Destroy bus bandwidth related data structures like timer. * De-initialize bus bandwidth related data structures like timer.
* *
* Return: None. * 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 * 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 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_unregister_notifiers(hdd_ctx);
hdd_bus_bandwidth_destroy(hdd_ctx);
#ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE #ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE
if (QDF_TIMER_STATE_RUNNING == if (QDF_TIMER_STATE_RUNNING ==
qdf_mc_timer_get_current_state(&hdd_ctx->skip_acs_scan_timer)) { 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_wlan_stop_modules(hdd_ctx, false);
hdd_bus_bandwidth_deinit(hdd_ctx);
hdd_driver_memdump_deinit(); hdd_driver_memdump_deinit();
qdf_nbuf_deinit_replenish_timer(); qdf_nbuf_deinit_replenish_timer();
@@ -7715,7 +7714,7 @@ int hdd_bus_bandwidth_init(struct hdd_context *hdd_ctx)
return 0; 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) if (hdd_ctx->bus_bw_timer_running)
hdd_reset_tcp_delack(hdd_ctx); hdd_reset_tcp_delack(hdd_ctx);
@@ -11173,8 +11172,8 @@ int hdd_wlan_startup(struct device *dev)
osif_request_manager_init(); osif_request_manager_init();
qdf_atomic_init(&hdd_ctx->con_mode_flag); qdf_atomic_init(&hdd_ctx->con_mode_flag);
hdd_driver_memdump_init(); hdd_driver_memdump_init();
hdd_bus_bandwidth_init(hdd_ctx);
ret = hdd_wlan_start_modules(hdd_ctx, false); ret = hdd_wlan_start_modules(hdd_ctx, false);
if (ret) { if (ret) {
@@ -11236,8 +11235,6 @@ int hdd_wlan_startup(struct device *dev)
qdf_spinlock_create(&hdd_ctx->acs_skip_lock); qdf_spinlock_create(&hdd_ctx->acs_skip_lock);
#endif #endif
hdd_bus_bandwidth_init(hdd_ctx);
hdd_lpass_notify_start(hdd_ctx); hdd_lpass_notify_start(hdd_ctx);
if (hdd_ctx->rps) if (hdd_ctx->rps)
@@ -11287,6 +11284,7 @@ err_stop_modules:
hdd_wlan_stop_modules(hdd_ctx, false); hdd_wlan_stop_modules(hdd_ctx, false);
err_memdump_deinit: err_memdump_deinit:
hdd_bus_bandwidth_deinit(hdd_ctx);
hdd_driver_memdump_deinit(); hdd_driver_memdump_deinit();
osif_request_manager_deinit(); osif_request_manager_deinit();

查看文件

@@ -1240,10 +1240,9 @@ QDF_STATUS hdd_wlan_shutdown(void)
} }
#endif #endif
hdd_bus_bandwidth_destroy(hdd_ctx);
hdd_wlan_stop_modules(hdd_ctx, false); hdd_wlan_stop_modules(hdd_ctx, false);
hdd_bus_bandwidth_deinit(hdd_ctx);
hdd_lpass_notify_stop(hdd_ctx); hdd_lpass_notify_stop(hdd_ctx);
hdd_info("WLAN driver shutdown complete"); hdd_info("WLAN driver shutdown complete");
@@ -1321,10 +1320,8 @@ QDF_STATUS hdd_wlan_re_init(void)
hdd_err("Failed to get adapter"); hdd_err("Failed to get adapter");
hdd_dp_trace_init(hdd_ctx->config); hdd_dp_trace_init(hdd_ctx->config);
hdd_bus_bandwidth_init(hdd_ctx); hdd_bus_bandwidth_init(hdd_ctx);
ret = hdd_wlan_start_modules(hdd_ctx, true); ret = hdd_wlan_start_modules(hdd_ctx, true);
if (ret) { if (ret) {
hdd_err("Failed to start wlan after error"); hdd_err("Failed to start wlan after error");
@@ -1361,6 +1358,7 @@ QDF_STATUS hdd_wlan_re_init(void)
goto success; goto success;
err_re_init: err_re_init:
hdd_bus_bandwidth_deinit(hdd_ctx);
qdf_dp_trace_deinit(); qdf_dp_trace_deinit();
/* Allow the phone to go to sleep */ /* Allow the phone to go to sleep */
hdd_allow_suspend(WIFI_POWER_EVENT_WAKELOCK_DRIVER_REINIT); hdd_allow_suspend(WIFI_POWER_EVENT_WAKELOCK_DRIVER_REINIT);