qcacmn: Allow MLO peer create when ACS scan completes

Allow peer create and association only when full ACS
scan is complete for any link in an AP MLD.

Change-Id: I54d60f31c2521c87fb715b23fc3e0ea7e6100248
CRs-Fixed: 3232153
This commit is contained in:
Jhalak Naik
2022-07-05 11:50:58 +05:30
gecommit door Madan Koyyalamudi
bovenliggende 0e921647c0
commit 56fa1788e4
3 gewijzigde bestanden met toevoegingen van 41 en 5 verwijderingen

Bestand weergeven

@@ -24,6 +24,7 @@
#include "include/wlan_vdev_mlme.h"
#include "../../core/src/vdev_mlme_sm.h"
#include <wlan_vdev_mlme_api.h>
#include <include/wlan_mlme_cmn.h>
#include <qdf_module.h>
struct vdev_mlme_obj *wlan_vdev_mlme_get_cmpt_obj(struct wlan_objmgr_vdev *vdev)
@@ -231,6 +232,8 @@ QDF_STATUS wlan_vdev_is_mlo_peer_create_allowed(struct wlan_objmgr_vdev *vdev)
{
enum wlan_vdev_state state;
enum wlan_vdev_state substate;
bool acs_in_progress;
QDF_STATUS ret;
if (!vdev) {
mlme_err("vdev is null");
@@ -239,11 +242,20 @@ QDF_STATUS wlan_vdev_is_mlo_peer_create_allowed(struct wlan_objmgr_vdev *vdev)
state = wlan_vdev_mlme_get_state(vdev);
substate = wlan_vdev_mlme_get_substate(vdev);
if ((state == WLAN_VDEV_S_UP) ||
((state == WLAN_VDEV_S_SUSPEND) &&
(substate == WLAN_VDEV_SS_SUSPEND_CSA_RESTART)) ||
(state == WLAN_VDEV_S_DFS_CAC_WAIT))
return QDF_STATUS_SUCCESS;
acs_in_progress = false;
ret = mlme_ext_hdl_get_acs_in_progress(vdev, &acs_in_progress);
if (ret != QDF_STATUS_SUCCESS) {
mlme_err("Unable to get ACS in progress status");
return QDF_STATUS_E_FAILURE;
}
if (!acs_in_progress)
if ((state == WLAN_VDEV_S_UP) ||
((state == WLAN_VDEV_S_SUSPEND) &&
(substate == WLAN_VDEV_SS_SUSPEND_CSA_RESTART)) ||
(state == WLAN_VDEV_S_DFS_CAC_WAIT))
return QDF_STATUS_SUCCESS;
return QDF_STATUS_E_FAILURE;
}