mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 07:03:09 -04:00
qcacmn: Deinitialize the pdev scan private member
Added api to support the deinitialization of pdev scan private member Change-Id: Id887eab16f195fc5052f30900451625a586ed9fa CRs-Fixed: 2033622
This commit is contained in:
parent
b4071431e9
commit
ea68a2c6f2
2 changed files with 84 additions and 0 deletions
|
|
@ -149,6 +149,17 @@ int wlan_cfg80211_sched_scan_stop(struct wlan_objmgr_pdev *pdev,
|
|||
*/
|
||||
QDF_STATUS wlan_cfg80211_scan_priv_init(struct wlan_objmgr_pdev *pdev);
|
||||
|
||||
/**
|
||||
* wlan_cfg80211_scan_priv_deinit() - API to deinitialize cfg80211 scan
|
||||
* @pdev: Pointer to net device
|
||||
*
|
||||
* API to deinitialize cfg80211 scan module.
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS wlan_cfg80211_scan_priv_deinit(
|
||||
struct wlan_objmgr_pdev *pdev);
|
||||
|
||||
/**
|
||||
* wlan_cfg80211_scan() - API to process cfg80211 scan request
|
||||
* @pdev: Pointer to pdev
|
||||
|
|
@ -217,4 +228,15 @@ QDF_STATUS wlan_abort_scan(struct wlan_objmgr_pdev *pdev,
|
|||
uint32_t vdev_id,
|
||||
wlan_scan_id scan_id);
|
||||
|
||||
/**
|
||||
* wlan_cfg80211_cleanup_scan_queue() - remove entries in scan queue
|
||||
* @pdev: pdev pointer
|
||||
*
|
||||
* Removes entries in scan queue and sends scan complete event to NL
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void wlan_cfg80211_cleanup_scan_queue(struct wlan_objmgr_pdev *pdev);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -721,6 +721,68 @@ QDF_STATUS wlan_cfg80211_scan_priv_init(struct wlan_objmgr_pdev *pdev)
|
|||
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
|
||||
|
|
|
|||
Loading…
Reference in a new issue