qcacld-3.0: Send IPA RX offload disable to FW
When AP_DISCONNECT event occurs during IPA resource unloading in progress, unload time out can happen due to IPA driver taking time in suspending pipes or delay in FW HTT responses. In such case events are added to pending queue. Pending queue events are executed in worker thread context when resource unload is complete. There is possibility of delay in scheduling of worker thread. When worker thread is scheduled after HOST sends VDEV DELETE to FW and processing of AP_DISCONNECT pening event will leads to FW assert. Reason is as part of AP_DISCONNECT host sends IPA OFFLOAD disable to FW on deleted vdev id. So send IPA RX offload disable command to FW when AP_DISCONNECT is added to pending queue. Change-Id: Ib24deb7654496ec60a3e56b8a9d1e1bd2d8c2db5 CRs-Fixed: 2295105
This commit is contained in:

committed by
nshrivas

parent
eec28b5d97
commit
cd430b6ebb
@@ -1338,13 +1338,8 @@ static void wlan_ipa_uc_offload_enable_disable(struct wlan_ipa_priv *ipa_ctx,
|
||||
}
|
||||
|
||||
if (enable == ipa_ctx->vdev_offload_enabled[session_id]) {
|
||||
/*
|
||||
* This shouldn't happen :
|
||||
* IPA offload status is already set as desired
|
||||
*/
|
||||
QDF_ASSERT(0);
|
||||
ipa_warn("IPA offload status is already set");
|
||||
ipa_warn("offload_type=%d, vdev_id=%d, enable=%d",
|
||||
ipa_info("IPA offload status is already set");
|
||||
ipa_info("offload_type=%d, vdev_id=%d, enable=%d",
|
||||
offload_type, session_id, enable);
|
||||
return;
|
||||
}
|
||||
@@ -1438,6 +1433,11 @@ static QDF_STATUS __wlan_ipa_wlan_evt(qdf_netdev_t net_dev, uint8_t device_mode,
|
||||
ipa_ctx->resource_loading ?
|
||||
"load" : "unload");
|
||||
|
||||
if (type == QDF_IPA_AP_DISCONNECT)
|
||||
wlan_ipa_uc_offload_enable_disable(ipa_ctx,
|
||||
SIR_AP_RX_DATA_OFFLOAD,
|
||||
session_id, false);
|
||||
|
||||
qdf_mutex_acquire(&ipa_ctx->ipa_lock);
|
||||
|
||||
pending_event_count =
|
||||
|
Reference in New Issue
Block a user