qcacld-3.0: Set dp peer flags for mlo roaming
During MLO roaming, non-assoc link is processed first. Set the dp peer info flags: - Non-assoc link: is_first_link = True and is_primary_link = False - Assoc link: is_first_link = False and is_primary_link = True For legacy to MLO roaming add checks for link vdev processing during add sta resp and delete bss peer. Change-Id: I602e4bc03c09b5d8dd35016448eabfaa3ff5acfa CRs-Fixed: 3129304
This commit is contained in:

committed by
Madan Koyyalamudi

parent
64300680c5
commit
6ce2f89512
@@ -1915,7 +1915,8 @@ QDF_STATUS wma_add_peer(tp_wma_handle wma,
|
||||
if (peer_type == WMI_PEER_TYPE_TDLS)
|
||||
cdp_peer_set_peer_as_tdls(dp_soc, vdev_id, peer_addr, true);
|
||||
|
||||
if (MLME_IS_ROAM_SYNCH_IN_PROGRESS(wma->psoc, vdev_id)) {
|
||||
if (MLME_IS_ROAM_SYNCH_IN_PROGRESS(wma->psoc, vdev_id) ||
|
||||
MLME_IS_MLO_ROAM_SYNCH_IN_PROGRESS(wma->psoc, vdev_id)) {
|
||||
wma_debug("LFR3: Created peer "QDF_MAC_ADDR_FMT" vdev_id %d, peer_count %d",
|
||||
QDF_MAC_ADDR_REF(peer_addr), vdev_id,
|
||||
wma->interfaces[vdev_id].peer_count + 1);
|
||||
@@ -1989,8 +1990,19 @@ static void wma_cdp_peer_setup(tp_wma_handle wma,
|
||||
qdf_mem_zero(&peer_info, sizeof(peer_info));
|
||||
|
||||
peer_info.mld_peer_mac = mld_mac;
|
||||
if (MLME_IS_MLO_ROAM_SYNCH_IN_PROGRESS(wma->psoc, vdev_id) &&
|
||||
wlan_vdev_mlme_get_is_mlo_link(wma->psoc, vdev_id)) {
|
||||
peer_info.is_first_link = 1;
|
||||
peer_info.is_primary_link = 0;
|
||||
} else if (MLME_IS_ROAM_SYNCH_IN_PROGRESS(wma->psoc, vdev_id) &&
|
||||
wlan_vdev_mlme_get_is_mlo_vdev(wma->psoc, vdev_id)) {
|
||||
peer_info.is_first_link = 0;
|
||||
peer_info.is_primary_link = 1;
|
||||
} else {
|
||||
peer_info.is_first_link = wlan_peer_mlme_is_assoc_peer(obj_peer);
|
||||
peer_info.is_primary_link = peer_info.is_first_link;
|
||||
}
|
||||
|
||||
cdp_peer_setup(dp_soc, vdev_id, peer_addr, &peer_info);
|
||||
wlan_objmgr_peer_release_ref(obj_peer, WLAN_LEGACY_WMA_ID);
|
||||
}
|
||||
@@ -4645,6 +4657,8 @@ static void wma_add_sta_req_sta_mode(tp_wma_handle wma, tpAddStaParams params)
|
||||
}
|
||||
|
||||
if (MLME_IS_ROAM_SYNCH_IN_PROGRESS(wma->psoc,
|
||||
params->smesessionId) ||
|
||||
MLME_IS_MLO_ROAM_SYNCH_IN_PROGRESS(wma->psoc,
|
||||
params->smesessionId)) {
|
||||
/* iface->nss = params->nss; */
|
||||
/*In LFR2.0, the following operations are performed as
|
||||
@@ -4839,8 +4853,11 @@ out:
|
||||
wma_debug("vdev_id %d aid %d sta mac " QDF_MAC_ADDR_FMT " status %d",
|
||||
params->smesessionId, params->assocId,
|
||||
QDF_MAC_ADDR_REF(params->bssId), params->status);
|
||||
|
||||
/* Don't send a response during roam sync operation */
|
||||
if (!MLME_IS_ROAM_SYNCH_IN_PROGRESS(wma->psoc, params->smesessionId))
|
||||
if (!MLME_IS_ROAM_SYNCH_IN_PROGRESS(wma->psoc, params->smesessionId) &&
|
||||
!MLME_IS_MLO_ROAM_SYNCH_IN_PROGRESS(wma->psoc,
|
||||
params->smesessionId))
|
||||
wma_send_msg_high_priority(wma, WMA_ADD_STA_RSP,
|
||||
(void *)params, 0);
|
||||
}
|
||||
@@ -5238,7 +5255,8 @@ void wma_delete_sta(tp_wma_handle wma, tpDeleteStaParams del_sta)
|
||||
|
||||
switch (oper_mode) {
|
||||
case BSS_OPERATIONAL_MODE_STA:
|
||||
if (MLME_IS_ROAM_SYNCH_IN_PROGRESS(wma->psoc, vdev_id)) {
|
||||
if (MLME_IS_ROAM_SYNCH_IN_PROGRESS(wma->psoc, vdev_id) ||
|
||||
MLME_IS_MLO_ROAM_SYNCH_IN_PROGRESS(wma->psoc, vdev_id)) {
|
||||
wma_debug("LFR3: Del STA on vdev_id %d", vdev_id);
|
||||
qdf_mem_free(del_sta);
|
||||
return;
|
||||
@@ -5516,7 +5534,8 @@ void wma_delete_bss(tp_wma_handle wma, uint8_t vdev_id)
|
||||
qdf_mem_free(roam_scan_stats_req);
|
||||
}
|
||||
|
||||
if (MLME_IS_ROAM_SYNCH_IN_PROGRESS(wma->psoc, vdev_id)) {
|
||||
if (MLME_IS_ROAM_SYNCH_IN_PROGRESS(wma->psoc, vdev_id) ||
|
||||
MLME_IS_MLO_ROAM_SYNCH_IN_PROGRESS(wma->psoc, vdev_id)) {
|
||||
roam_synch_in_progress = true;
|
||||
wma_debug("LFR3: Setting vdev_up to FALSE for vdev:%d",
|
||||
vdev_id);
|
||||
@@ -5568,6 +5587,10 @@ detach_peer:
|
||||
return;
|
||||
|
||||
out:
|
||||
/* skip when legacy to mlo roam sync ongoing */
|
||||
if (MLME_IS_MLO_ROAM_SYNCH_IN_PROGRESS(wma->psoc, vdev_id))
|
||||
return;
|
||||
|
||||
params = qdf_mem_malloc(sizeof(*params));
|
||||
if (!params)
|
||||
return;
|
||||
|
Reference in New Issue
Block a user