qcacmn: Handle CSA in MLO sta partner link before it is up

Before MLO sta partner link is up, FW can't indicate CSA event to host.
For this case, host need save csa parameters and process it when MLO
sta partner link is up.

Change-Id: Id1803f32787002e020c6899ec72e428feb765b7f
CRs-Fixed: 3082438
This commit is contained in:
Bing Sun
2021-11-25 16:38:45 +08:00
committed by Madan Koyyalamudi
parent 7ee4663048
commit bdbcc9ddf0
8 changed files with 388 additions and 2 deletions

View File

@@ -1790,13 +1790,15 @@ static bool mlme_vdev_subst_up_active_event(void *ctx, uint16_t event,
mlme_vdev_update_beacon(vdev_mlme, BEACON_INIT,
event_data_len, event_data);
if (mlme_vdev_up_send(vdev_mlme, event_data_len,
event_data) != QDF_STATUS_SUCCESS)
event_data) != QDF_STATUS_SUCCESS) {
mlme_vdev_sm_deliver_event(vdev_mlme,
WLAN_VDEV_SM_EV_UP_FAIL,
event_data_len, event_data);
else
} else {
mlme_vdev_notify_up_complete(vdev_mlme, event_data_len,
event_data);
mlme_vdev_up_active_notify_mlo_mgr(vdev_mlme);
}
status = true;
break;

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -25,6 +26,7 @@
#ifdef WLAN_FEATURE_11BE_MLO
#include <wlan_mlo_mgr_ap.h>
#include <wlan_mlo_mgr_sta.h>
#endif
#include <wlan_dfs_utils_api.h>
@@ -677,6 +679,20 @@ static inline void mlme_vdev_down_cmpl_notify_mlo_mgr(
if (wlan_vdev_mlme_is_mlo_ap(vdev_mlme->vdev))
mlo_ap_link_down_cmpl_notify(vdev_mlme->vdev);
}
/**
* mlme_vdev_up_active_notify_mlo_mgr - notify mlo link is up active
* @vdev_mlme_obj: VDEV MLME comp object
*
* Return: VOID.
*/
static inline void mlme_vdev_up_active_notify_mlo_mgr(
struct vdev_mlme_obj *vdev_mlme)
{
if ((wlan_vdev_mlme_get_opmode(vdev_mlme->vdev) == QDF_STA_MODE) &&
wlan_vdev_mlme_is_mlo_vdev(vdev_mlme->vdev))
mlo_sta_up_active_notify(vdev_mlme->vdev);
}
#else
static inline void mlme_vdev_up_notify_mlo_mgr(struct vdev_mlme_obj *vdev_mlme)
{
@@ -691,6 +707,11 @@ static inline void mlme_vdev_down_cmpl_notify_mlo_mgr(
struct vdev_mlme_obj *vdev_mlme)
{
}
static inline void mlme_vdev_up_active_notify_mlo_mgr(
struct vdev_mlme_obj *vdev_mlme)
{
}
#endif
#ifdef VDEV_SM_LOCK_SUPPORT