Эх сурвалжийг харах

qcacmn: Add vdev in abort scan request

Abort scan req requires vdev pointer to remove the cmd from
serialization. Thus add the vdev pointer in the abort scan req.
If vdev id is invalid to abort all scan on a pdev use the first
vdev of the pdev.

Change-Id: I4462ceb24084e68dfc6b20f5b69d050c0daff2d1
CRs-Fixed: 1095299
Abhishek Singh 8 жил өмнө
parent
commit
54c28ccd14

+ 9 - 0
os_if/linux/scan/src/wlan_cfg80211_scan.c

@@ -595,6 +595,7 @@ QDF_STATUS wlan_abort_scan(struct wlan_objmgr_pdev *pdev,
 	struct pdev_osif_priv *osif_ctx;
 	struct osif_scan_pdev *scan_priv;
 	QDF_STATUS status;
+	struct wlan_objmgr_vdev *vdev;
 
 	req = qdf_mem_malloc(sizeof(*req));
 	if (!req) {
@@ -608,9 +609,16 @@ QDF_STATUS wlan_abort_scan(struct wlan_objmgr_pdev *pdev,
 		cfg80211_err("Failed to retrieve osif context");
 		return QDF_STATUS_E_FAILURE;
 	}
+	if (vdev_id == INVAL_VDEV_ID)
+		vdev = wlan_objmgr_get_vdev_by_id_from_pdev(pdev,
+				0, WLAN_OSIF_ID);
+	else
+		vdev = wlan_objmgr_get_vdev_by_id_from_pdev(pdev,
+				vdev_id, WLAN_OSIF_ID);
 
 	scan_priv = osif_ctx->osif_scan;
 	req->cancel_req.requester = scan_priv->req_id;
+	req->vdev = vdev;
 	req->cancel_req.scan_id = scan_id;
 	req->cancel_req.pdev_id = pdev_id;
 	req->cancel_req.vdev_id = vdev_id;
@@ -623,6 +631,7 @@ QDF_STATUS wlan_abort_scan(struct wlan_objmgr_pdev *pdev,
 	status = ucfg_scan_cancel(req);
 	if (QDF_IS_STATUS_ERROR(status))
 		cfg80211_err("Cancel scan request failed");
+	wlan_objmgr_vdev_release_ref(vdev, WLAN_OSIF_ID);
 
 	return status;
 }