Преглед на файлове

qcacmn: Add API to deint scan runtime suspend lock

Add API to deint scan runtime suspend lock, which can be called
before HIF is closed, to avoid crash while acessing HIF pointer.

Change-Id: Ida9269cdaea33a387e2acd1e3d9670d152b6016f
CRs-Fixed: 2065228
Abhishek Singh преди 7 години
родител
ревизия
fb9d5acfed
променени са 2 файла, в които са добавени 26 реда и са изтрити 2 реда
  1. 12 0
      os_if/linux/scan/inc/wlan_cfg80211_scan.h
  2. 14 2
      os_if/linux/scan/src/wlan_cfg80211_scan.c

+ 12 - 0
os_if/linux/scan/inc/wlan_cfg80211_scan.h

@@ -139,6 +139,18 @@ int wlan_cfg80211_sched_scan_stop(struct wlan_objmgr_pdev *pdev,
 	struct net_device *dev);
 #endif
 
+/**
+ * wlan_scan_runtime_pm_deinit() - API to deinitialize runtime pm
+ * for scan.
+ * @pdev: Pointer to pdev
+ *
+ * This will help to deinitialize scan runtime pm before deinitialize
+ * HIF
+ *
+ * Return: void
+ */
+void wlan_scan_runtime_pm_deinit(struct wlan_objmgr_pdev *pdev);
+
 /**
  * wlan_cfg80211_scan_priv_init() - API to initialize cfg80211 scan
  * @pdev: Pointer to net device

+ 14 - 2
os_if/linux/scan/src/wlan_cfg80211_scan.c

@@ -773,6 +773,20 @@ allow_suspend:
 
 }
 
+void wlan_scan_runtime_pm_deinit(struct wlan_objmgr_pdev *pdev)
+{
+	struct pdev_osif_priv *osif_priv;
+	struct osif_scan_pdev *scan_priv;
+
+	wlan_pdev_obj_lock(pdev);
+	osif_priv = wlan_pdev_get_ospriv(pdev);
+	wlan_pdev_obj_unlock(pdev);
+
+	scan_priv = osif_priv->osif_scan;
+	qdf_runtime_lock_deinit(scan_priv->runtime_pm_lock);
+	scan_priv->runtime_pm_lock = NULL;
+}
+
 QDF_STATUS wlan_cfg80211_scan_priv_init(struct wlan_objmgr_pdev *pdev)
 {
 	struct pdev_osif_priv *osif_priv;
@@ -819,8 +833,6 @@ QDF_STATUS wlan_cfg80211_scan_priv_deinit(struct wlan_objmgr_pdev *pdev)
 	ucfg_scan_unregister_requester(psoc, scan_priv->req_id);
 	qdf_list_destroy(&scan_priv->scan_req_q);
 	qdf_mutex_destroy(&scan_priv->scan_req_q_lock);
-	qdf_runtime_lock_deinit(scan_priv->runtime_pm_lock);
-	scan_priv->runtime_pm_lock = NULL;
 	qdf_mem_free(scan_priv);
 
 	return QDF_STATUS_SUCCESS;