qcacld-3.0: MLO connect path fixes
Fixes in this change include: - Add debug prints - Don't disable roaming in case of MLO link connection - Minor compilation fixes Change-Id: I0aa9e8b2fd634b6dba1926796d95db997946aac3 CRs-fixed: 3013039
This commit is contained in:

committed by
Madan Koyyalamudi

parent
49133bc2ab
commit
19856d1d3f
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2020-2021, The Linux Foundation. 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 above
|
||||
@@ -75,7 +75,7 @@ QDF_STATUS if_mgr_connect_start(struct wlan_objmgr_vdev *vdev,
|
||||
if (!ucfg_nan_is_sta_nan_ndi_4_port_allowed(psoc))
|
||||
ucfg_nan_check_and_disable_unsupported_ndi(psoc,
|
||||
false);
|
||||
|
||||
if (!wlan_vdev_mlme_is_mlo_link_vdev(vdev)) {
|
||||
/*
|
||||
* In case of STA+STA concurrency, firmware might try to roam
|
||||
* to same AP where host is trying to do association on the other
|
||||
@@ -83,8 +83,8 @@ QDF_STATUS if_mgr_connect_start(struct wlan_objmgr_vdev *vdev,
|
||||
* this scenario.
|
||||
*/
|
||||
if_mgr_disable_roaming(pdev, vdev, RSO_CONNECT_START);
|
||||
|
||||
wlan_tdls_teardown_links_sync(psoc);
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
@@ -302,7 +302,7 @@ typedef struct sSirProbeRespBeacon {
|
||||
uint8_t num_transmit_power_env;
|
||||
tDot11fIEtransmit_power_env transmit_power_env[MAX_TPE_IES];
|
||||
uint8_t ap_power_type;
|
||||
tpSirMultiLink_IE mlo_ie;
|
||||
tSirMultiLink_IE mlo_ie;
|
||||
} tSirProbeRespBeacon, *tpSirProbeRespBeacon;
|
||||
|
||||
/* probe Request structure */
|
||||
|
@@ -4317,7 +4317,7 @@ lim_prepare_and_send_del_sta_cnf(struct mac_context *mac, tpDphHashNode sta,
|
||||
pe_session->peSessionId,
|
||||
pe_session->limMlmState));
|
||||
}
|
||||
if (mlo_conn && !mlo_recv_assoc_frm)
|
||||
if (mlo_conn && !mlo_recv_assoc_frm && LIM_IS_AP_ROLE(pe_session))
|
||||
return;
|
||||
|
||||
lim_send_del_sta_cnf(mac, sta_dsaddr, staDsAssocId, mlmStaContext,
|
||||
|
@@ -3640,6 +3640,8 @@ static void lim_fill_ml_partner_info(struct cm_vdev_join_req *req,
|
||||
return;
|
||||
}
|
||||
num_links = req->partner_info.num_partner_links;
|
||||
partner_info->num_partner_links = num_links;
|
||||
pe_debug("MLO: num_links:%d", num_links);
|
||||
|
||||
for (idx = 0; idx < num_links; idx++) {
|
||||
partner_info->partner_link_info[idx].link_id =
|
||||
@@ -3647,6 +3649,10 @@ static void lim_fill_ml_partner_info(struct cm_vdev_join_req *req,
|
||||
qdf_copy_macaddr(
|
||||
&partner_info->partner_link_info[idx].link_addr,
|
||||
&req->partner_info.partner_link_info[idx].link_addr);
|
||||
pe_debug("MLO: link_id:%d" QDF_MAC_ADDR_FMT,
|
||||
partner_info->partner_link_info[idx].link_id,
|
||||
QDF_MAC_ADDR_REF(partner_info->partner_link_info[idx].
|
||||
link_addr.bytes));
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
@@ -2972,7 +2972,7 @@ QDF_STATUS sir_convert_probe_frame2_struct(struct mac_context *mac,
|
||||
}
|
||||
|
||||
update_bss_color_change_ie_from_probe_rsp(pr, pProbeResp);
|
||||
sir_convert_mlo_probe_rsp_frame2_struct(pr, pProbeResp->mlo_ie);
|
||||
sir_convert_mlo_probe_rsp_frame2_struct(pr, &pProbeResp->mlo_ie);
|
||||
|
||||
qdf_mem_free(pr);
|
||||
return QDF_STATUS_SUCCESS;
|
||||
@@ -8679,7 +8679,7 @@ QDF_STATUS populate_dot11f_assoc_req_mlo_ie(struct mac_context *mac_ctx,
|
||||
struct pe_session *pe_session,
|
||||
tDot11fAssocRequest *frm)
|
||||
{
|
||||
uint8_t link, sta_link;
|
||||
uint8_t link;
|
||||
uint8_t num_sta_prof = 0, total_sta_prof;
|
||||
tDot11fIEmlo_ie *mlo_ie;
|
||||
tDot11fIEsta_profile *sta_prof;
|
||||
@@ -8714,38 +8714,37 @@ QDF_STATUS populate_dot11f_assoc_req_mlo_ie(struct mac_context *mac_ctx,
|
||||
qdf_mem_copy(&mlo_ie->mld_mac_addr.info.mld_mac_addr,
|
||||
mld_addr,
|
||||
QDF_MAC_ADDR_SIZE);
|
||||
mlo_ie->link_id_info_present = 1;
|
||||
mlo_ie->link_id_info.info.link_id =
|
||||
pe_session->vdev->mlo_dev_ctx->mld_id;
|
||||
|
||||
mlo_ie->link_id_info_present = 0;
|
||||
mlo_ie->bss_param_change_cnt_present = 0;
|
||||
mlo_ie->medium_sync_delay_info_present = 0;
|
||||
mlo_ie->eml_capab_present = 0;
|
||||
mlo_ie->mld_capab_present = 0;
|
||||
|
||||
//find out number of links from bcn or prb rsp
|
||||
/* find out number of links from bcn or prb rsp */
|
||||
total_sta_prof = 2;
|
||||
partner_info = &pe_session->lim_join_req->partner_info;
|
||||
|
||||
for (link = 0, sta_link = 1;
|
||||
link < total_sta_prof && total_sta_prof != num_sta_prof;
|
||||
link++, sta_link++) {
|
||||
if (!partner_info->num_partner_links)
|
||||
continue;
|
||||
|
||||
sta_prof = &mlo_ie->sta_profile[num_sta_prof];
|
||||
link_info = &partner_info->partner_link_info[link];
|
||||
mlo_dev_ctx = pe_session->vdev->mlo_dev_ctx;
|
||||
if (!mlo_dev_ctx) {
|
||||
pe_err("mlo_dev_ctx is null");
|
||||
return QDF_STATUS_E_NULL_VALUE;
|
||||
}
|
||||
vdev = mlo_dev_ctx->wlan_vdev_list[sta_link];
|
||||
|
||||
for (link = 0;
|
||||
link < total_sta_prof && total_sta_prof != num_sta_prof;
|
||||
link++) {
|
||||
if (!partner_info->num_partner_links)
|
||||
continue;
|
||||
|
||||
vdev = mlo_dev_ctx->wlan_vdev_list[1];
|
||||
if (!vdev) {
|
||||
pe_err("vdev is null");
|
||||
return QDF_STATUS_E_NULL_VALUE;
|
||||
}
|
||||
|
||||
sta_prof = &mlo_ie->sta_profile[num_sta_prof];
|
||||
link_info = &partner_info->partner_link_info[link];
|
||||
|
||||
qdf_mem_zero(non_inher_ie_lists, sizeof(non_inher_ie_lists));
|
||||
qdf_mem_zero(non_inher_ext_ie_lists,
|
||||
sizeof(non_inher_ext_ie_lists));
|
||||
@@ -8758,6 +8757,10 @@ QDF_STATUS populate_dot11f_assoc_req_mlo_ie(struct mac_context *mac_ctx,
|
||||
vdev->vdev_mlme.macaddr,
|
||||
QDF_MAC_ADDR_SIZE);
|
||||
|
||||
pe_debug("link mac: "QDF_MAC_ADDR_FMT, vdev->vdev_mlme.macaddr);
|
||||
pe_debug("STA prof mac: "QDF_MAC_ADDR_FMT,
|
||||
sta_prof->sta_mac_addr.info.sta_mac_addr);
|
||||
|
||||
/* TBD : populate beacon_interval, dtim_info
|
||||
* nstr_link_pair_present, nstr_bitmap_size
|
||||
*/
|
||||
|
Reference in New Issue
Block a user