qcacld-3.0: Fix WLAN IPA disconnection handling
When wlan driver unloading is in progress, IPA_OPCODE_TX/RX_SUSPEND will not be processed and resource_unloading may be left as true. Moroever since driver will be unloaded, IPA_OPCODE_TX/RX_SUSPEND interaction between Host and FW will not be necessary. Fix is to disable IPA pipes directly when handling disconnection if wlan driver unloading is in progress. Change-Id: Ia4af1ab04052b1a9bab44105760de50ad6263dbb CRs-Fixed: 2279044
This commit is contained in:
@@ -1597,8 +1597,19 @@ static QDF_STATUS __wlan_ipa_wlan_evt(qdf_netdev_t net_dev, uint8_t device_mode,
|
||||
/* Disable IPA UC TX PIPE when STA disconnected */
|
||||
if ((ipa_ctx->num_iface == 1) &&
|
||||
wlan_ipa_is_fw_wdi_activated(ipa_ctx) &&
|
||||
!ipa_ctx->ipa_pipes_down)
|
||||
wlan_ipa_uc_handle_last_discon(ipa_ctx);
|
||||
!ipa_ctx->ipa_pipes_down) {
|
||||
if (cds_is_driver_unloading()) {
|
||||
/*
|
||||
* We disable WDI pipes directly here
|
||||
* since IPA_OPCODE_TX/RX_SUSPEND
|
||||
* message will not be processed when
|
||||
* unloading WLAN driver is in progress
|
||||
*/
|
||||
wlan_ipa_uc_disable_pipes(ipa_ctx);
|
||||
} else {
|
||||
wlan_ipa_uc_handle_last_discon(ipa_ctx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (wlan_ipa_uc_sta_is_enabled(ipa_ctx->config) &&
|
||||
@@ -1793,7 +1804,17 @@ static QDF_STATUS __wlan_ipa_wlan_evt(qdf_netdev_t net_dev, uint8_t device_mode,
|
||||
if ((false == ipa_ctx->resource_unloading) &&
|
||||
wlan_ipa_is_fw_wdi_activated(ipa_ctx) &&
|
||||
!ipa_ctx->ipa_pipes_down) {
|
||||
wlan_ipa_uc_handle_last_discon(ipa_ctx);
|
||||
if (cds_is_driver_unloading()) {
|
||||
/*
|
||||
* We disable WDI pipes directly here
|
||||
* since IPA_OPCODE_TX/RX_SUSPEND
|
||||
* message will not be processed when
|
||||
* unloading WLAN driver is in progress
|
||||
*/
|
||||
wlan_ipa_uc_disable_pipes(ipa_ctx);
|
||||
} else {
|
||||
wlan_ipa_uc_handle_last_discon(ipa_ctx);
|
||||
}
|
||||
}
|
||||
|
||||
if (wlan_ipa_uc_sta_is_enabled(ipa_ctx->config) &&
|
||||
|
Reference in New Issue
Block a user