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:

revīziju iesūtīja
Ravindra Konda

vecāks
591177a99b
revīzija
2332eb23d0
@@ -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));
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
|
Atsaukties uz šo jaunā problēmā
Block a user