qcacld-3.0: Maintain chan_switch_in_progress flag for MLD also

Currently, chan_switch_in_progress flag is maintained per vdev.
This info is needed at MLD level also to differentiate between
current MLD STA and concurrent STA. This can be used to decide
whether to allow link switch or not.
Also, don't process session beacon if link switch is in
progress to avoid CSA upon detecting any change in the Operation
IEs(HT_INFO/VHT_OP/HE_OP/EHT_OP, etc..).

Change-Id: I9cca40f4953a390c71758896097c6a119951abe7
CRs-Fixed: 3660868
Šī revīzija ir iekļauta:
Srinivas Dasari
2023-11-09 16:57:20 +05:30
revīziju iesūtīja Ravindra Konda
vecāks 591177a99b
revīzija 2332eb23d0
2 mainīti faili ar 16 papildinājumiem un 1 dzēšanām

Parādīt failu

@@ -46,6 +46,7 @@
#endif
#include <wlan_lmac_if_def.h>
#include "target_if_mlme.h"
#include "wlan_mlo_mgr_sta.h"
static struct vdev_mlme_ops sta_mlme_ops;
static struct vdev_mlme_ops ap_mlme_ops;
@@ -867,6 +868,8 @@ QDF_STATUS mlme_set_chan_switch_in_progress(struct wlan_objmgr_vdev *vdev,
}
mlme_priv->chan_switch_in_progress = val;
mlo_set_chan_switch_in_progress(vdev, val);
mlme_legacy_info("Set chan_switch_in_progress: %d vdev %d",
val, wlan_vdev_get_id(vdev));

Parādīt failu

@@ -52,6 +52,7 @@
#include "wlan_reg_services_api.h"
#include "wlan_mlo_mgr_sta.h"
#include "wlan_mlme_main.h"
#include <wlan_mlo_mgr_link_switch.h>
static void
ap_beacon_process_5_ghz(struct mac_context *mac_ctx, uint8_t *rx_pkt_info,
@@ -1028,8 +1029,19 @@ sch_beacon_process(struct mac_context *mac_ctx, uint8_t *rx_pkt_info,
if (!session)
return;
/*
* Drop the beacon/probe response from current connected AP in
* below cases to avoid responding to the changes in beacon(e.g. doing
* VDEV_RESTART to update to the latest capabilities),
* 1. vdev is not in connected state: vdev might be transitioning
* 2. Link switch is in progress: Current link or one of the partner
* links are getting replaced.
*
* New beacons/probe rsps can be considered once post these operations.
*/
if (LIM_IS_STA_ROLE(session) &&
!wlan_cm_is_vdev_connected(session->vdev)) {
(!wlan_cm_is_vdev_connected(session->vdev) ||
mlo_mgr_is_link_switch_in_progress(session->vdev))) {
pe_debug_rl("vdev %d, drop beacon", session->vdev_id);
return;
}