qcacld-3.0: Don't Invoke cfg80211_scan_done during unload/SSR
qcacld-2.0 to qcacld-3.0 propagation
While netdev interface is closing the __cfg80211_scan_done() shall already
be invoked, so in hdd_cfg80211_scan_done_callback() check for the
interface flag before invoking the cfg80211_scan_done().
Change-Id: If88447acd4d13a4ba0ef84378f21e75669af6c71
CRs-Fixed: 908656
diff --git a/core/hdd/src/wlan_hdd_scan.c b/core/hdd/src/wlan_hdd_scan.c
index 5feed80..7dbe6ec 100644
--- a/core/hdd/src/wlan_hdd_scan.c
+++ b/core/hdd/src/wlan_hdd_scan.c
@@ -1103,6 +1103,43 @@
return;
}
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0))
+/**
+ * hdd_cfg80211_scan_done() - Scan completed callback to cfg80211
+ * @adapter: Pointer to the adapter
+ * @req : Scan request
+ * @aborted : true scan aborted false scan success
+ *
+ * This function notifies scan done to cfg80211
+ *
+ * Return: none
+ */
+static void hdd_cfg80211_scan_done(hdd_adapter_t *adapter,
+ struct cfg80211_scan_request *req,
+ bool aborted)
+{
+ if (adapter->dev->flags & IFF_UP)
+ cfg80211_scan_done(req, aborted);
+}
+#else
+/**
+ * hdd_cfg80211_scan_done() - Scan completed callback to cfg80211
+ * @adapter: Pointer to the adapter
+ * @req : Scan request
+ * @aborted : true scan aborted false scan success
+ *
+ * This function notifies scan done to cfg80211
+ *
+ * Return: none
+ */
+static void hdd_cfg80211_scan_done(hdd_adapter_t *adapter,
+ struct cfg80211_scan_request *req,
+ bool aborted)
+{
+ cfg80211_scan_done(req, aborted);
+}
+#endif
+
/**
* hdd_cfg80211_scan_done_callback() - scan done callback function called after
* scan is finished
@@ -1200,7 +1237,7 @@
* scan done event will be posted
*/
if (NL_SCAN == source)
- cfg80211_scan_done(req, aborted);
+ hdd_cfg80211_scan_done(pAdapter, req, aborted);
else
hdd_vendor_scan_callback(pAdapter, req, aborted);