Просмотр исходного кода

qcacmn: Fix partner link scan entry generated with wrong bssid issue

When partner link probe rsp is generated from ML probe rsp, bssid is
filled wrongly, then scan entry with wrong bssid is added, if no beacon
or probe rsp of partner link is received, then candidate can't be found
by partner link bssid, partner link connect fails, at last MLO connect
fails.

Change-Id: I3fa51dbde1cf9d8e256ecfc17059660a4430056a
CRs-Fixed: 3298706
Jianmin Zhu 2 лет назад
Родитель
Сommit
e44fc21aea
2 измененных файлов с 11 добавлено и 2 удалено
  1. 8 1
      umac/mlo_mgr/src/utils_mlo.c
  2. 3 1
      umac/mlo_mgr/src/wlan_mlo_mgr_sta.c

+ 8 - 1
umac/mlo_mgr/src/utils_mlo.c

@@ -2606,7 +2606,7 @@ QDF_STATUS util_gen_link_reqrsp_cmn(uint8_t *frame, qdf_size_t frame_len,
 		link_frame_hdr->i_fc[0] = MLO_LINKSPECIFIC_ASSOC_REQ_FC0;
 		link_frame_hdr->i_fc[1] = MLO_LINKSPECIFIC_ASSOC_REQ_FC1;
 	} else if (subtype == WLAN_FC0_STYPE_PROBE_RESP) {
-		qdf_mem_copy(link_frame_hdr->i_addr3, &link_addr,
+		qdf_mem_copy(link_frame_hdr->i_addr3, reportedmacaddr.bytes,
 			     QDF_MAC_ADDR_SIZE);
 		qdf_mem_copy(link_frame_hdr->i_addr2, reportedmacaddr.bytes,
 			     QDF_MAC_ADDR_SIZE);
@@ -2629,6 +2629,13 @@ QDF_STATUS util_gen_link_reqrsp_cmn(uint8_t *frame, qdf_size_t frame_len,
 		link_frame_hdr->i_fc[1] = MLO_LINKSPECIFIC_ASSOC_RESP_FC1;
 	}
 
+	mlo_debug("subtype:%u addr3:" QDF_MAC_ADDR_FMT " addr2:"
+		  QDF_MAC_ADDR_FMT " addr1:" QDF_MAC_ADDR_FMT,
+		  subtype,
+		  QDF_MAC_ADDR_REF(link_frame_hdr->i_addr3),
+		  QDF_MAC_ADDR_REF(link_frame_hdr->i_addr2),
+		  QDF_MAC_ADDR_REF(link_frame_hdr->i_addr1));
+
 	/* Seq num not used so not populated */
 
 	qdf_mem_free(mlieseqpayload_copy);

+ 3 - 1
umac/mlo_mgr/src/wlan_mlo_mgr_sta.c

@@ -527,8 +527,10 @@ mlo_prepare_and_send_connect(struct wlan_objmgr_vdev *vdev,
 
 	sta_ctx = mlo_dev_ctx->sta_ctx;
 
-	mlo_debug("Partner link connect mac:" QDF_MAC_ADDR_FMT " vdev_id:%d",
+	mlo_debug("Partner link connect mac:" QDF_MAC_ADDR_FMT
+		  " bssid:" QDF_MAC_ADDR_FMT " vdev_id:%d",
 		  QDF_MAC_ADDR_REF(wlan_vdev_mlme_get_macaddr(vdev)),
+		  QDF_MAC_ADDR_REF(link_info.link_addr.bytes),
 		  wlan_vdev_get_id(vdev));
 
 	qdf_mem_copy(&req, sta_ctx->copied_conn_req,