qcacld-3.0: Cache scan entries of all OWE links

Currently, OWE assoc link scan entry is cached post roam success
but link scan entry is not cached. This causes join failure while
non-assoc link tries to get connected post assoc link roam.
So, cache scan entries of all links while processing first link
itself to avoid these failures.
This also fixes adding scan entry properly for non-MLO OWE
cases as well.

Change-Id: I3188f98f2682acceaae28f226e6c8abe0c81fff9
CRs-Fixed: 3437632
This commit is contained in:
Srinivas Dasari
2023-04-03 01:30:51 -07:00
کامیت شده توسط Madan Koyyalamudi
والد c671d25226
کامیت 8765c8c3b8
3فایلهای تغییر یافته به همراه76 افزوده شده و 71 حذف شده

مشاهده پرونده

@@ -881,52 +881,30 @@ cm_update_scan_db_on_roam_success(struct wlan_objmgr_vdev *vdev,
if (!cm_ctx)
return;
if (roam_synch_ind->auth_status == ROAM_AUTH_STATUS_CONNECTED) {
if (ies->link_bcn_probe_rsp.len) {
frame_freq = mlo_roam_get_link_freq_from_mac_addr(
roam_synch_ind,
wlan_mlme_get_src_addr_from_frame(
&ies->link_bcn_probe_rsp));
cm_inform_bcn_probe(cm_ctx,
ies->link_bcn_probe_rsp.ptr,
ies->link_bcn_probe_rsp.len,
frame_freq,
roam_synch_ind->rssi,
cm_id);
}
if (ies->link_bcn_probe_rsp.len) {
frame_freq = mlo_roam_get_link_freq_from_mac_addr(
roam_synch_ind,
wlan_mlme_get_src_addr_from_frame(
&ies->bcn_probe_rsp));
roam_synch_ind,
wlan_mlme_get_src_addr_from_frame(
&ies->link_bcn_probe_rsp));
cm_inform_bcn_probe(cm_ctx,
ies->bcn_probe_rsp.ptr,
ies->bcn_probe_rsp.len,
ies->link_bcn_probe_rsp.ptr,
ies->link_bcn_probe_rsp.len,
frame_freq,
roam_synch_ind->rssi,
cm_id);
} else if (wlan_vdev_mlme_is_mlo_link_vdev(vdev)) {
if (ies->link_bcn_probe_rsp.len) {
frame_freq = mlo_roam_get_link_freq_from_mac_addr(
roam_synch_ind,
wlan_mlme_get_src_addr_from_frame(
&ies->link_bcn_probe_rsp));
cm_inform_bcn_probe(cm_ctx,
ies->link_bcn_probe_rsp.ptr,
ies->link_bcn_probe_rsp.len,
frame_freq,
roam_synch_ind->rssi,
cm_id);
}
} else {
cm_inform_bcn_probe(cm_ctx,
ies->bcn_probe_rsp.ptr,
ies->bcn_probe_rsp.len,
resp->freq,
roam_synch_ind->rssi,
cm_id);
}
frame_freq = mlo_roam_get_link_freq_from_mac_addr(
roam_synch_ind,
wlan_mlme_get_src_addr_from_frame(
&ies->bcn_probe_rsp));
cm_inform_bcn_probe(cm_ctx,
ies->bcn_probe_rsp.ptr,
ies->bcn_probe_rsp.len,
frame_freq,
roam_synch_ind->rssi,
cm_id);
cm_update_scan_mlme_on_roam(vdev, &resp->bssid,
SCAN_ENTRY_CON_STATE_ASSOC);
}

مشاهده پرونده

@@ -465,15 +465,27 @@ mlo_roam_get_link_freq_from_mac_addr(struct roam_offload_synch_ind *sync_ind,
{
uint8_t i;
if (!sync_ind || !sync_ind->num_setup_links || !link_mac_addr)
if (!sync_ind)
return 0;
/* Non-MLO roaming */
if (!sync_ind->num_setup_links)
return sync_ind->chan_freq;
if (!link_mac_addr) {
mlo_debug("link_mac_addr is NULL");
return 0;
}
for (i = 0; i < sync_ind->num_setup_links; i++)
if (!qdf_mem_cmp(sync_ind->ml_link[i].link_addr.bytes,
link_mac_addr,
QDF_MAC_ADDR_SIZE))
return sync_ind->ml_link[i].channel.mhz;
mlo_debug("Mac address not found in ml_link info" QDF_MAC_ADDR_FMT,
QDF_MAC_ADDR_REF(link_mac_addr));
return 0;
}