Forráskód Böngészése

qcacld-3.0: Send T2LM status event after assoc complete

Issue 1: Host sends T2LM status event twice during an
association.

Requirement is: Host should send T2LM status event to
upper layer for an association only once if T2LM elements
does not get change in between.

Currently host sends T2LM status event
(wlan_connectivity_t2lm_status_event) to upper layer in
below cases:
1. When host receives t2lm action frame
2. Upon Re/Association Response frame reception or roam
   synch indication with reassociation response frame is
   received
3. While processing connects complete indication

As there is no chance to get change T2LM status in between
association response frame and connect complete indication.
So, no need to send T2LM status event while processing
assoc/reassoc response frame as by this time host doesn't
updates T2LM IE information buffer.

Issue 2: Currently host sends STA MLD MAC address via ASSOC
RESP connectivity logging event.

As per requirement, host should send MLD MAC address of MLD
AP via ASSOC RESP connectivity logging event and mld address
should not present in event in case of non-MLD AP connection.

Fix is to send MLD MAC address of MLD AP instead of STA MLD
MAC address via ASSOC RESP connectivity logging event.

Change-Id: I57a5875775b0960ab3b307f1486bd9e6ff4dd9ac
CRs-Fixed: 3647437
Abhinav Kumar 1 éve
szülő
commit
f482ec3167

+ 12 - 13
components/cmn_services/logging/src/wlan_connectivity_logging.c

@@ -431,7 +431,7 @@ wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev *vdev,
 				   enum wlan_main_tag tag)
 {
 	struct mlo_link_switch_context *link_ctx;
-	struct qdf_mac_addr peer_mac;
+	struct qdf_mac_addr peer_mac, peer_mld_mac;
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
 
 	if (!mlo_is_mld_sta(vdev))
@@ -447,16 +447,18 @@ wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev *vdev,
 		return status;
 	}
 
-	qdf_mem_copy(data->diag_cmn.bssid,
-		     peer_mac.bytes,
-		     QDF_MAC_ADDR_SIZE);
+	qdf_mem_copy(data->diag_cmn.bssid, peer_mac.bytes, QDF_MAC_ADDR_SIZE);
 
-	qdf_mem_copy(data->mld_addr,
-		     wlan_vdev_mlme_get_mldaddr(vdev),
-		     QDF_MAC_ADDR_SIZE);
+	status = wlan_vdev_get_bss_peer_mld_mac(vdev, &peer_mld_mac);
+	if (QDF_IS_STATUS_ERROR(status)) {
+		logging_err("vdev: %d failed to get mld mac address of peer",
+			    wlan_vdev_get_id(vdev));
+		return status;
+	}
 
-	if (tag == WLAN_ASSOC_REQ ||
-	    tag == WLAN_REASSOC_REQ) {
+	qdf_mem_copy(data->mld_addr, peer_mld_mac.bytes, QDF_MAC_ADDR_SIZE);
+
+	if (tag == WLAN_ASSOC_REQ || tag == WLAN_REASSOC_REQ) {
 		link_ctx = vdev->mlo_dev_ctx->link_ctx;
 		if (!link_ctx) {
 			logging_debug("vdev: %d link_ctx not found",
@@ -464,8 +466,7 @@ wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev *vdev,
 			return QDF_STATUS_E_INVAL;
 		}
 
-		data->supported_links =
-			wlan_populate_band_bitmap(link_ctx);
+		data->supported_links = wlan_populate_band_bitmap(link_ctx);
 	}
 
 	return status;
@@ -559,8 +560,6 @@ wlan_connectivity_mlo_setup_event(struct wlan_objmgr_vdev *vdev)
 	wlan_diag_event.num_links = num_links;
 
 	WLAN_HOST_DIAG_EVENT_REPORT(&wlan_diag_event, EVENT_WLAN_MLO_SETUP);
-
-	wlan_connectivity_t2lm_status_event(vdev);
 }
 
 #define IS_LINK_SET(link_bitmap, link_id) ((link_bitmap) & (BIT(link_id)))