qcacld-3.0: Populate MLO mgr link info for MBSSID connect
In api wlan_connectivity_sta_info_event(),and in connectivity_mgmt_event() the band information, link self mac address is populated from the MLO mgr link info structure. But MLO mgr link info is updated when we receive unicast probe request from the AP. But we don't send unicast probe request to MBSSID non-TX BSS and we could receive beacon from TX BSSID. This causes the advertised links band information not getting logged for the assoc request frame connectivity log and STA information event doesn't have the self link addresses. Populate MLO mgr link info before sending Join confirm during MBSSID connect for non-TX BSSID. Introduce a new api lim_populate_partner_link_chan_info_for_mbssid(), to populate the link info from join request. Change-Id: I6148a8a9b9bf15de65e7640f39456dade2e8987f CRs-Fixed: 3647725
Dieser Commit ist enthalten in:

committet von
Ravindra Konda

Ursprung
18dfc03871
Commit
3e61245f1c
@@ -2997,6 +2997,64 @@ lim_process_switch_channel_join_mlo_roam(struct pe_session *session_entry,
|
||||
}
|
||||
#endif /* (WLAN_FEATURE_ROAM_OFFLOAD) && (WLAN_FEATURE_11BE_MLO) */
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
static void
|
||||
lim_update_mlo_mgr_ap_link_info_mbssid_connect(struct pe_session *session)
|
||||
{
|
||||
struct mlo_partner_info *partner_info;
|
||||
struct mlo_link_info *partner_link_info;
|
||||
struct wlan_channel channel;
|
||||
struct mlo_link_switch_context *link_ctx;
|
||||
uint8_t i = 0;
|
||||
|
||||
if (!session->vdev) {
|
||||
pe_err("vdev:%d is NULL", session->vdev_id);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!wlan_vdev_mlme_is_mlo_vdev(session->vdev))
|
||||
return;
|
||||
|
||||
if (!session->lim_join_req) {
|
||||
pe_err("vdev:%d lim_join_req is NULL", session->vdev_id);
|
||||
return;
|
||||
}
|
||||
|
||||
link_ctx = session->vdev->mlo_dev_ctx->link_ctx;
|
||||
if (!link_ctx) {
|
||||
pe_err("vdev:%d MLO Link_ctx not found",
|
||||
session->vdev_id);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Populating Assoc Link Band info */
|
||||
channel.ch_freq = (uint16_t)session->curr_op_freq;
|
||||
|
||||
mlo_mgr_reset_ap_link_info(session->vdev);
|
||||
mlo_mgr_update_ap_link_info(session->vdev,
|
||||
wlan_vdev_get_link_id(session->vdev),
|
||||
session->bssId, channel);
|
||||
|
||||
/* Populating Partner link band Info */
|
||||
partner_info = &session->lim_join_req->partner_info;
|
||||
for (i = 0; i < partner_info->num_partner_links; i++) {
|
||||
partner_link_info = &partner_info->partner_link_info[i];
|
||||
|
||||
qdf_mem_zero(&channel, sizeof(channel));
|
||||
channel.ch_freq = partner_link_info->chan_freq;
|
||||
|
||||
mlo_mgr_update_ap_link_info(session->vdev,
|
||||
partner_link_info->link_id,
|
||||
partner_link_info->ap_link_addr.bytes,
|
||||
channel);
|
||||
}
|
||||
}
|
||||
#else
|
||||
static void
|
||||
lim_update_mlo_mgr_ap_link_info_mbssid_connect(struct pe_session *session)
|
||||
{}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* lim_process_switch_channel_join_req() -Initiates probe request
|
||||
*
|
||||
@@ -3098,6 +3156,9 @@ static void lim_process_switch_channel_join_req(
|
||||
join_cnf.sessionId = session_entry->peSessionId;
|
||||
join_cnf.resultCode = eSIR_SME_SUCCESS;
|
||||
join_cnf.protStatusCode = STATUS_SUCCESS;
|
||||
|
||||
lim_update_mlo_mgr_ap_link_info_mbssid_connect(session_entry);
|
||||
|
||||
lim_post_sme_message(mac_ctx, LIM_MLM_JOIN_CNF,
|
||||
(uint32_t *)&join_cnf);
|
||||
return;
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren