From 4757819765afa545c7446d5a1013d0a032b80b5b Mon Sep 17 00:00:00 2001 From: Sravan Kumar Kairam Date: Mon, 14 Jan 2019 17:13:09 +0530 Subject: [PATCH] qcacld-3.0: Delete second STA wlan ipa interface Currently second STA wlan ipa interface is not deleted in case of STA-STA concurrency for second sta disconnection. At the time of driver recovery first virtual interface is deleted and later existing ipa interfaces are deleted. This leads to invalid access of second STA ipa interface net dev at the time of deletion during driver recovery. Fix this by deleting the interface at the time of sta disconnect event. Change-Id: I21e46fe5c6f0b0213d139050acf229cb5ab914eb CRs-Fixed: 2376897 --- components/ipa/core/src/wlan_ipa_core.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/components/ipa/core/src/wlan_ipa_core.c b/components/ipa/core/src/wlan_ipa_core.c index 3d32dc1e1598..e9a3a49395a8 100644 --- a/components/ipa/core/src/wlan_ipa_core.c +++ b/components/ipa/core/src/wlan_ipa_core.c @@ -1694,9 +1694,16 @@ static QDF_STATUS __wlan_ipa_wlan_evt(qdf_netdev_t net_dev, uint8_t device_mode, qdf_mutex_acquire(&ipa_ctx->event_lock); if (!ipa_ctx->sta_connected) { + struct wlan_ipa_iface_context *iface; + qdf_mutex_release(&ipa_ctx->event_lock); ipa_err("%s: Evt: %d, STA already disconnected", msg_ex->name, QDF_IPA_MSG_META_MSG_TYPE(&meta)); + + iface = wlan_ipa_get_iface(ipa_ctx, QDF_STA_MODE); + if (iface && (iface->dev == net_dev)) + wlan_ipa_cleanup_iface(iface); + return QDF_STATUS_E_INVAL; }