Browse Source

qcacld-3.0: Report best RSSI and SNR in the ML STA links

If wlan_hdd_get_sta_stats() is called with non-assoc link's
peer MAC address, it will fetch link adapter with that BSSID.
Link adapter doesn't have pointer to partner link's adapter
and wlan_hdd_mlo_update_stats_info() cannot return the best
RSSI and SNR among all the links.

In wlan_hdd_mlo_update_stats_info() API, if link adapter is
passed to get the best RSSI and SNR of all links, then first
fetch ML adapter to loop through all the link adapters.

Change-Id: I33090fecfa0a20221fc8c465ad9f36f3eb941e60
CRs-Fixed: 3399641
Vinod Kumar Pirla 2 years ago
parent
commit
ede71596ed
1 changed files with 11 additions and 5 deletions
  1. 11 5
      core/hdd/src/wlan_hdd_stats.c

+ 11 - 5
core/hdd/src/wlan_hdd_stats.c

@@ -6118,11 +6118,16 @@ static inline void wlan_hdd_mlo_update_stats_info(struct hdd_adapter *adapter)
 	uint32_t *snr, *link_snr;
 	uint8_t iter;
 	struct hdd_mlo_adapter_info *mlo_adapter_info;
-	struct hdd_adapter *link_adapter;
+	struct hdd_adapter *link_adapter, *ml_adapter;
 	struct wlan_objmgr_vdev *vdev;
 
-	rssi = &adapter->hdd_stats.summary_stat.rssi;
-	snr = &adapter->hdd_stats.summary_stat.snr;
+	if (hdd_adapter_is_link_adapter(adapter))
+		ml_adapter = hdd_adapter_get_mlo_adapter_from_link(adapter);
+	else
+		ml_adapter = adapter;
+
+	rssi = &ml_adapter->hdd_stats.summary_stat.rssi;
+	snr = &ml_adapter->hdd_stats.summary_stat.snr;
 
 	vdev = hdd_objmgr_get_vdev_by_user(adapter, WLAN_OSIF_STATS_ID);
 	if (!vdev)
@@ -6138,11 +6143,12 @@ static inline void wlan_hdd_mlo_update_stats_info(struct hdd_adapter *adapter)
 	hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_STATS_ID);
 
 	hdd_debug("Link0: RSSI: %d, SNR: %d", *rssi, *snr);
-	mlo_adapter_info = &adapter->mlo_adapter_info;
+
+	mlo_adapter_info = &ml_adapter->mlo_adapter_info;
 	for (iter = 0; iter < WLAN_MAX_MLD; iter++) {
 		link_adapter = mlo_adapter_info->link_adapter[iter];
 		if (!link_adapter ||
-		    link_adapter->mlo_adapter_info.associate_with_ml_adapter)
+		    hdd_adapter_is_associated_with_ml_adapter(link_adapter))
 			continue;
 
 		link_rssi = &link_adapter->hdd_stats.summary_stat.rssi;