From bfc48d43faeae2a0ff77f870fcf743e739e1c80d Mon Sep 17 00:00:00 2001 From: Aasir Rasheed Date: Wed, 20 Sep 2023 21:37:35 +0530 Subject: [PATCH] qcacld-3.0: Use peer link address for multi link Currently, Host driver is using MLD mac address for TWT set peer capabilities after the roaming. This change is to use peer link address for setting TWT peer caps after roaming, for multi link roaming. Change-Id: I6cdfda5ee9f75a3509b5f12bdbbce92f8202397c CRs-Fixed: 3618635 --- core/mac/src/pe/lim/lim_api.c | 11 +++++++++-- core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c | 3 ++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/core/mac/src/pe/lim/lim_api.c b/core/mac/src/pe/lim/lim_api.c index 926999486f..424e8d741f 100644 --- a/core/mac/src/pe/lim/lim_api.c +++ b/core/mac/src/pe/lim/lim_api.c @@ -2568,6 +2568,7 @@ lim_fill_roamed_peer_twt_caps(struct mac_context *mac_ctx, uint32_t status; tDot11fReAssocResponse *reassoc_rsp; struct pe_session *pe_session; + struct qdf_mac_addr mac_addr; pe_session = pe_find_session_by_vdev_id(mac_ctx, vdev_id); if (!pe_session) { @@ -2597,11 +2598,17 @@ lim_fill_roamed_peer_twt_caps(struct mac_context *mac_ctx, status, len); } - if (lim_is_session_he_capable(pe_session)) + if (lim_is_session_he_capable(pe_session)) { + if (is_multi_link_roam(roam_synch)) + mlo_get_sta_link_mac_addr(vdev_id, roam_synch, + &mac_addr); + else + qdf_copy_macaddr(&mac_addr, &roam_synch->bssid); lim_set_twt_peer_capabilities(mac_ctx, - &roam_synch->bssid, + &mac_addr, &reassoc_rsp->he_cap, &reassoc_rsp->he_op); + } qdf_mem_free(reassoc_rsp); } #endif diff --git a/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c b/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c index 2a657cf4e3..37dc1b76f3 100644 --- a/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c +++ b/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c @@ -1384,7 +1384,8 @@ lim_process_assoc_rsp_frame(struct mac_context *mac_ctx, uint8_t *rx_pkt_info, &assoc_rsp->obss_scanparams); if (lim_is_session_he_capable(session_entry)) { - lim_set_twt_peer_capabilities( + if (!wlan_cm_is_vdev_roaming(session_entry->vdev)) + lim_set_twt_peer_capabilities( mac_ctx, (struct qdf_mac_addr *)current_bssid, &assoc_rsp->he_cap,