diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c index f2b2e752d98e..24425437d514 100644 --- a/core/wma/src/wma_dev_if.c +++ b/core/wma/src/wma_dev_if.c @@ -2988,7 +2988,7 @@ static void wma_add_bss_sta_mode(tp_wma_handle wma, tpAddBssParams add_bss) ol_txrx_pdev_handle pdev; struct wma_vdev_start_req req; struct wma_target_req *msg; - uint8_t vdev_id, peer_id; + uint8_t peer_id; ol_txrx_peer_handle peer = NULL; QDF_STATUS status; struct wma_txrx_node *iface; @@ -2998,6 +2998,7 @@ static void wma_add_bss_sta_mode(tp_wma_handle wma, tpAddBssParams add_bss) struct sir_hw_mode_params hw_mode = {0}; bool peer_assoc_sent = false; struct pdev_params param = {0}; + uint8_t vdev_id = add_bss->staContext.smesessionId; if (NULL == pMac) { WMA_LOGE("%s: Unable to get PE context", __func__); @@ -3011,7 +3012,6 @@ static void wma_add_bss_sta_mode(tp_wma_handle wma, tpAddBssParams add_bss) goto send_fail_resp; } - vdev_id = add_bss->staContext.smesessionId; iface = &wma->interfaces[vdev_id]; wma_set_bss_rate_flags(iface, add_bss); @@ -3277,7 +3277,8 @@ peer_cleanup: roam_synch_in_progress); send_fail_resp: add_bss->status = QDF_STATUS_E_FAILURE; - wma_send_msg(wma, WMA_ADD_BSS_RSP, (void *)add_bss, 0); + if (!wma_is_roam_synch_in_progress(wma, vdev_id)) + wma_send_msg(wma, WMA_ADD_BSS_RSP, (void *)add_bss, 0); } /** @@ -3723,6 +3724,12 @@ static void wma_add_sta_req_sta_mode(tp_wma_handle wma, tpAddStaParams params) goto out; } peer = ol_txrx_find_peer_by_addr(pdev, params->bssId, ¶ms->staIdx); + if (peer == NULL) { + WMA_LOGE("%s: Peer is not present vdev id %d for %pM", __func__, + params->smesessionId, params->bssId); + status = QDF_STATUS_E_FAILURE; + goto out; + } if (params->nonRoamReassoc) { ol_txrx_peer_state_update(pdev, params->bssId, OL_TXRX_PEER_STATE_AUTH); @@ -3916,7 +3923,9 @@ out: params->staType, params->smesessionId, params->assocId, params->bssId, params->staIdx, params->status); - wma_send_msg(wma, WMA_ADD_STA_RSP, (void *)params, 0); + /* Don't send a response during roam sync operation */ + if (!wma_is_roam_synch_in_progress(wma, params->smesessionId)) + wma_send_msg(wma, WMA_ADD_STA_RSP, (void *)params, 0); } /**