Browse Source

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 years ago
parent
commit
e44fc21aea
2 changed files with 11 additions and 2 deletions
  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,