From e9d642342dea9cac53155e08640058c06232b983 Mon Sep 17 00:00:00 2001 From: Naveen Rawat Date: Tue, 12 Jun 2018 18:00:06 -0700 Subject: [PATCH] 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 --- core/wma/src/wma_dev_if.c | 1 - core/wma/src/wma_nan_datapath.c | 17 ++++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c index 778d425728e1..ce2d4c178ab2 100644 --- a/core/wma/src/wma_dev_if.c +++ b/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; diff --git a/core/wma/src/wma_nan_datapath.c b/core/wma/src/wma_nan_datapath.c index 3d0509488e34..e7143c112b82 100644 --- a/core/wma/src/wma_nan_datapath.c +++ b/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; }