diff --git a/components/nan/core/src/nan_main.c b/components/nan/core/src/nan_main.c index 9f1e2ac369..07b14d802d 100644 --- a/components/nan/core/src/nan_main.c +++ b/components/nan/core/src/nan_main.c @@ -448,6 +448,7 @@ ndi_remove_and_update_primary_connection(struct wlan_objmgr_psoc *psoc, if (!peer && psoc_nan_obj->nan_caps.ndi_dbs_supported) { policy_mgr_decr_session_set_pcl(psoc, QDF_NDI_MODE, wlan_vdev_get_id(vdev)); + vdev_nan_obj->ndp_init_done = false; return QDF_STATUS_SUCCESS; } @@ -570,7 +571,7 @@ static QDF_STATUS nan_handle_confirm( NDP_CONFIRM, confirm); if (confirm->rsp_code == NAN_DATAPATH_RESPONSE_ACCEPT && - vdev_nan_obj->active_ndp_peers == 1) { + !vdev_nan_obj->ndp_init_done) { /* * If this is the NDI's first NDP, store the NDP instance in * vdev object as its primary connection. If this instance ends @@ -609,6 +610,7 @@ static QDF_STATUS nan_handle_confirm( policy_mgr_incr_active_session(psoc, QDF_NDI_MODE, vdev_id); + vdev_nan_obj->ndp_init_done = true; } } diff --git a/components/nan/core/src/nan_main_i.h b/components/nan/core/src/nan_main_i.h index 6b6f779ffc..4e71480d39 100644 --- a/components/nan/core/src/nan_main_i.h +++ b/components/nan/core/src/nan_main_i.h @@ -131,6 +131,8 @@ struct nan_psoc_priv_obj { * @ndi_delete_rsp_status: status for ndi_delete rsp * @primary_peer_mac: Primary NDP Peer mac address for the vdev * @disable_context: Disable all NDP's operation context + * @ndp_init_done: Flag to indicate NDP initialization complete after first peer + * connection. */ struct nan_vdev_priv_obj { qdf_spinlock_t lock; @@ -142,6 +144,7 @@ struct nan_vdev_priv_obj { uint32_t ndi_delete_rsp_status; struct qdf_mac_addr primary_peer_mac; void *disable_context; + bool ndp_init_done; }; /**