Parcourir la source

qcacld-3.0: Fix NDI self-peer creation sequence

Make sure to follow AP for NDI self peer creation so that self peer
creation and deletion can be symmetric.

Change-Id: Ie7f9c7b5500540c824a75758337967f8d4f6e692
CRs-Fixed: 2261713
Naveen Rawat il y a 6 ans
Parent
commit
e9d642342d
2 fichiers modifiés avec 12 ajouts et 6 suppressions
  1. 0 1
      core/wma/src/wma_dev_if.c
  2. 12 5
      core/wma/src/wma_nan_datapath.c

+ 0 - 1
core/wma/src/wma_dev_if.c

@@ -762,7 +762,6 @@ static bool wma_vdev_uses_self_peer(uint32_t vdev_type, uint32_t vdev_subtype)
 		return vdev_subtype == WMI_UNIFIED_VDEV_SUBTYPE_P2P_DEVICE;
 
 	case WMI_VDEV_TYPE_MONITOR:
-	case WMI_VDEV_TYPE_NDI:
 	case WMI_VDEV_TYPE_OCB:
 		return true;
 

+ 12 - 5
core/wma/src/wma_nan_datapath.c

@@ -46,6 +46,7 @@
 void wma_add_bss_ndi_mode(tp_wma_handle wma, tpAddBssParams add_bss)
 {
 	struct cdp_pdev *pdev;
+	struct cdp_vdev *vdev;
 	struct wma_vdev_start_req req;
 	void *peer = NULL;
 	struct wma_target_req *msg;
@@ -54,7 +55,8 @@ void wma_add_bss_ndi_mode(tp_wma_handle wma, tpAddBssParams add_bss)
 	void *soc = cds_get_context(QDF_MODULE_ID_SOC);
 
 	WMA_LOGD("%s: enter", __func__);
-	if (NULL == wma_find_vdev_by_addr(wma, add_bss->bssId, &vdev_id)) {
+	vdev = wma_find_vdev_by_addr(wma, add_bss->bssId, &vdev_id);
+	if (!vdev) {
 		WMA_LOGE("%s: Failed to find vdev", __func__);
 		goto send_fail_resp;
 	}
@@ -67,12 +69,17 @@ void wma_add_bss_ndi_mode(tp_wma_handle wma, tpAddBssParams add_bss)
 
 	wma_set_bss_rate_flags(wma, vdev_id, add_bss);
 
-	peer = cdp_peer_find_by_addr(soc,
-			pdev,
-			add_bss->selfMacAddr, &peer_id);
+	status = wma_create_peer(wma, pdev, vdev, add_bss->selfMacAddr,
+				 WMI_PEER_TYPE_DEFAULT, vdev_id, false);
+	if (QDF_IS_STATUS_ERROR(status)) {
+		WMA_LOGE("%s: Failed to create peer", __func__);
+		goto send_fail_resp;
+	}
+
+	peer = cdp_peer_find_by_addr(soc, pdev, add_bss->selfMacAddr, &peer_id);
 	if (!peer) {
 		WMA_LOGE("%s Failed to find peer %pM", __func__,
-			add_bss->selfMacAddr);
+			 add_bss->selfMacAddr);
 		goto send_fail_resp;
 	}