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
This commit is contained in:
Naveen Rawat 2018-06-12 18:00:06 -07:00 • committed by nshrivas
commit e9d642342d
2 changed files with 12 additions and 6 deletions

View file

@ -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;

View file

@ -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;
}