qcacmn: Deinitialize the pdev scan private member

Added api to support the deinitialization of pdev scan
private member

Change-Id: Id887eab16f195fc5052f30900451625a586ed9fa
CRs-Fixed: 2033622
diff --git a/os_if/linux/scan/src/wlan_cfg80211_scan.c b/os_if/linux/scan/src/wlan_cfg80211_scan.c
index e40e127..cdea702 100644
--- a/os_if/linux/scan/src/wlan_cfg80211_scan.c
+++ b/os_if/linux/scan/src/wlan_cfg80211_scan.c
@@ -721,6 +721,68 @@
 	return QDF_STATUS_SUCCESS;
 }
 
+QDF_STATUS wlan_cfg80211_scan_priv_deinit(struct wlan_objmgr_pdev *pdev)
+{
+	struct pdev_osif_priv *osif_priv;
+	struct osif_scan_pdev *scan_priv;
+	struct wlan_objmgr_psoc *psoc;
+
+	wlan_pdev_obj_lock(pdev);
+	psoc = wlan_pdev_get_psoc(pdev);
+	osif_priv = wlan_pdev_get_ospriv(pdev);
+	wlan_pdev_obj_unlock(pdev);
+
+	scan_priv = osif_priv->osif_scan;
+	osif_priv->osif_scan = NULL;
+	ucfg_scan_unregister_requester(psoc, scan_priv->req_id);
+	qdf_list_destroy(&scan_priv->scan_req_q);
+	qdf_mem_free(scan_priv);
+
+	return QDF_STATUS_SUCCESS;
+}
+
+void wlan_cfg80211_cleanup_scan_queue(struct wlan_objmgr_pdev *pdev)
+{
+	struct scan_req *scan_req;
+	qdf_list_node_t *node = NULL;
+	struct cfg80211_scan_request *req;
+	uint8_t source;
+	bool aborted = true;
+	struct pdev_osif_priv *osif_priv;
+	struct osif_scan_pdev *scan_priv;
+
+	if (!pdev) {
+		cfg80211_err("pdev is Null");
+		return;
+	}
+
+	wlan_pdev_obj_lock(pdev);
+	osif_priv = wlan_pdev_get_ospriv(pdev);
+	wlan_pdev_obj_unlock(pdev);
+
+	scan_priv = osif_priv->osif_scan;
+
+	while (!qdf_list_empty(&scan_priv->scan_req_q)) {
+		if (QDF_STATUS_SUCCESS !=
+			qdf_list_remove_front(&scan_priv->scan_req_q,
+						&node)) {
+			cfg80211_err("Failed to remove scan request");
+			return;
+		}
+
+		scan_req = container_of(node, struct scan_req, node);
+		req = scan_req->scan_request;
+		source = scan_req->source;
+		if (NL_SCAN == source)
+			wlan_cfg80211_scan_done(req, aborted);
+		else
+			wlan_vendor_scan_callback(req, aborted);
+		qdf_mem_free(scan_req);
+	}
+
+	return;
+}
+
 /**
  * wlan_cfg80211_scan() - Process scan request
  * @pdev: pdev object pointer