Browse Source

qcacld-3.0: Refactor wlan_hdd_get_linkspeed_for_peermac() API

To request linkspeed on per link from the BSSID saved in the station
context of each link, change the function prototype to accept link info
pointer as argument. The station context will later is accessed from
this link info pointer to send request to FW on that particular VDEV.
Existing callers moved to deflink pointer in adapter.

Change-Id: I87207455d71967c69dcdfa7680c716b4da5d5e8a
CRs-Fixed: 3520911
Vinod Kumar Pirla 2 years ago
parent
commit
e1becbe77c

+ 2 - 2
core/hdd/src/wlan_hdd_hostapd_wext.c

@@ -2570,8 +2570,8 @@ int __iw_get_softap_linkspeed(struct net_device *dev,
 		hdd_err("Invalid peer macaddress");
 		return -EINVAL;
 	}
-	rc = wlan_hdd_get_linkspeed_for_peermac(adapter, &mac_address,
-						&link_speed);
+	rc = wlan_hdd_get_linkspeed_for_peermac(adapter->deflink,
+						&mac_address, &link_speed);
 	if (rc) {
 		hdd_err("Unable to retrieve SME linkspeed");
 		return rc;

+ 7 - 6
core/hdd/src/wlan_hdd_stats.c

@@ -7542,7 +7542,7 @@ hdd_get_link_speed_cb(struct link_speed_info *linkspeed_info, void *context)
 	osif_request_put(request);
 }
 
-int wlan_hdd_get_linkspeed_for_peermac(struct hdd_adapter *adapter,
+int wlan_hdd_get_linkspeed_for_peermac(struct wlan_hdd_link_info *link_info,
 				       struct qdf_mac_addr *mac_address,
 				       uint32_t *linkspeed)
 {
@@ -7552,12 +7552,13 @@ int wlan_hdd_get_linkspeed_for_peermac(struct hdd_adapter *adapter,
 	struct link_speed_info *linkspeed_info;
 	struct osif_request *request;
 	struct linkspeed_priv *priv;
+	struct hdd_adapter *adapter = link_info->adapter;
 	static const struct osif_request_params params = {
 		.priv_size = sizeof(*priv),
 		.timeout_ms = WLAN_WAIT_TIME_STATS,
 	};
 
-	if ((!adapter) || (!linkspeed)) {
+	if (!linkspeed) {
 		hdd_err("NULL argument");
 		return -EINVAL;
 	}
@@ -7587,7 +7588,7 @@ int wlan_hdd_get_linkspeed_for_peermac(struct hdd_adapter *adapter,
 		hdd_err("SME timed out while retrieving link speed");
 		goto cleanup;
 	}
-	adapter->deflink->estimated_linkspeed = linkspeed_info->estLinkSpeed;
+	link_info->estimated_linkspeed = linkspeed_info->estLinkSpeed;
 
 cleanup:
 	/*
@@ -7598,7 +7599,7 @@ cleanup:
 	osif_request_put(request);
 
 return_cached_value:
-	*linkspeed = adapter->deflink->estimated_linkspeed;
+	*linkspeed = link_info->estimated_linkspeed;
 
 	return ret;
 }
@@ -7633,8 +7634,8 @@ int wlan_hdd_get_link_speed(struct wlan_hdd_link_info *link_info,
 
 		qdf_copy_macaddr(&bssid, &hdd_stactx->conn_info.bssid);
 
-		ret = wlan_hdd_get_linkspeed_for_peermac(adapter, &bssid,
-							 link_speed);
+		ret = wlan_hdd_get_linkspeed_for_peermac(link_info,
+							 &bssid, link_speed);
 		if (ret) {
 			hdd_err("Unable to retrieve SME linkspeed");
 			return ret;

+ 2 - 2
core/hdd/src/wlan_hdd_stats.h

@@ -472,7 +472,7 @@ QDF_STATUS wlan_hdd_get_snr(struct wlan_hdd_link_info *link_info, int8_t *snr);
 
 /**
  * wlan_hdd_get_linkspeed_for_peermac() - Get link speed for a peer
- * @adapter: adapter upon which the peer is active
+ * @link_info: Link info pointer in adapter
  * @mac_address: MAC address of the peer
  * @linkspeed: pointer to memory where returned link speed is to be placed
  *
@@ -481,7 +481,7 @@ QDF_STATUS wlan_hdd_get_snr(struct wlan_hdd_link_info *link_info, int8_t *snr);
  *
  * Return: 0 if linkspeed data is available, negative errno otherwise
  */
-int wlan_hdd_get_linkspeed_for_peermac(struct hdd_adapter *adapter,
+int wlan_hdd_get_linkspeed_for_peermac(struct wlan_hdd_link_info *link_info,
 				       struct qdf_mac_addr *mac_address,
 				       uint32_t *linkspeed);