소스 검색

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
Aasir Rasheed 1 년 전
부모
커밋
bfc48d43fa
2개의 변경된 파일11개의 추가작업 그리고 3개의 파일을 삭제
  1. 9 2
      core/mac/src/pe/lim/lim_api.c
  2. 2 1
      core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c

+ 9 - 2
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

+ 2 - 1
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,