Browse Source

qcacld-3.0: Refactor RSSI/SNR get APIs

Modify the following functions to take link info as function
argument to get the RSSI and SNR values from FW on per link.
The existing callers moved to deflink pointer in adapter.
1) wlan_hdd_get_rssi()
2) wlan_hdd_get_snr()

Change-Id: I2ebefab54192ca7e7672794d446b41a6d0dffec6
CRs-Fixed: 3520838
Vinod Kumar Pirla 2 years ago
parent
commit
58f28eb092

+ 1 - 1
core/hdd/src/wlan_hdd_ioctl.c

@@ -5467,7 +5467,7 @@ static int drv_cmd_get_rssi(struct hdd_adapter *adapter,
 
 	uint8_t len = 0;
 
-	wlan_hdd_get_rssi(adapter, &rssi);
+	wlan_hdd_get_rssi(adapter->deflink, &rssi);
 
 	len = scnprintf(extra, sizeof(extra), "%s %d", command, rssi);
 	len = QDF_MIN(priv_data->total_len, len + 1);

+ 16 - 29
core/hdd/src/wlan_hdd_stats.c

@@ -7364,45 +7364,39 @@ QDF_STATUS wlan_hdd_get_mib_stats(struct hdd_adapter *adapter)
 }
 #endif
 
-QDF_STATUS wlan_hdd_get_rssi(struct hdd_adapter *adapter, int8_t *rssi_value)
+QDF_STATUS wlan_hdd_get_rssi(struct wlan_hdd_link_info *link_info,
+			     int8_t *rssi_value)
 {
 	int ret = 0, i;
 	struct hdd_station_ctx *sta_ctx;
 	struct stats_event *rssi_info;
 	struct wlan_objmgr_vdev *vdev;
 
-	if (!adapter) {
-		hdd_err("Invalid context, adapter");
-		return QDF_STATUS_E_FAULT;
-	}
-
-	sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter->deflink);
-
 	if (cds_is_driver_recovering() || cds_is_driver_in_bad_state()) {
 		hdd_err("Recovery in Progress. State: 0x%x Ignore!!!",
 			cds_get_driver_state());
 		/* return a cached value */
-		*rssi_value = adapter->deflink->rssi;
+		*rssi_value = link_info->rssi;
 		return QDF_STATUS_SUCCESS;
 	}
 
-	if (!hdd_cm_is_vdev_associated(adapter->deflink)) {
+	sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(link_info);
+	if (!hdd_cm_is_vdev_associated(link_info)) {
 		hdd_debug("Not associated!, rssi on disconnect %d",
-			  adapter->deflink->rssi_on_disconnect);
-		*rssi_value = adapter->deflink->rssi_on_disconnect;
+			  link_info->rssi_on_disconnect);
+		*rssi_value = link_info->rssi_on_disconnect;
 		return QDF_STATUS_SUCCESS;
 	}
 
-	if (hdd_cm_is_vdev_roaming(adapter->deflink)) {
+	if (hdd_cm_is_vdev_roaming(link_info)) {
 		hdd_debug("Roaming in progress, return cached RSSI");
-		*rssi_value = adapter->deflink->rssi;
+		*rssi_value = link_info->rssi;
 		return QDF_STATUS_SUCCESS;
 	}
 
-	vdev = hdd_objmgr_get_vdev_by_user(adapter->deflink,
-					   WLAN_OSIF_STATS_ID);
+	vdev = hdd_objmgr_get_vdev_by_user(link_info, WLAN_OSIF_STATS_ID);
 	if (!vdev) {
-		*rssi_value = adapter->deflink->rssi;
+		*rssi_value = link_info->rssi;
 		return QDF_STATUS_SUCCESS;
 	}
 
@@ -7462,9 +7456,9 @@ static void hdd_get_snr_cb(int8_t snr, void *context)
 	osif_request_put(request);
 }
 
-QDF_STATUS wlan_hdd_get_snr(struct hdd_adapter *adapter, int8_t *snr)
+QDF_STATUS wlan_hdd_get_snr(struct wlan_hdd_link_info *link_info, int8_t *snr)
 {
-	struct hdd_context *hdd_ctx;
+	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(link_info->adapter);
 	struct hdd_station_ctx *sta_ctx;
 	QDF_STATUS status;
 	int ret;
@@ -7478,18 +7472,11 @@ QDF_STATUS wlan_hdd_get_snr(struct hdd_adapter *adapter, int8_t *snr)
 
 	hdd_enter();
 
-	if (!adapter) {
-		hdd_err("Invalid context, adapter");
-		return QDF_STATUS_E_FAULT;
-	}
-
-	hdd_ctx = WLAN_HDD_GET_CTX(adapter);
-
 	ret = wlan_hdd_validate_context(hdd_ctx);
 	if (ret)
 		return QDF_STATUS_E_FAULT;
 
-	sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter->deflink);
+	sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(link_info);
 
 	request = osif_request_alloc(&params);
 	if (!request) {
@@ -7512,7 +7499,7 @@ QDF_STATUS wlan_hdd_get_snr(struct hdd_adapter *adapter, int8_t *snr)
 		} else {
 			/* update the adapter with the fresh results */
 			priv = osif_request_priv(request);
-			adapter->deflink->snr = priv->snr;
+			link_info->snr = priv->snr;
 		}
 	}
 
@@ -7523,7 +7510,7 @@ QDF_STATUS wlan_hdd_get_snr(struct hdd_adapter *adapter, int8_t *snr)
 	 */
 	osif_request_put(request);
 
-	*snr = adapter->deflink->snr;
+	*snr = link_info->snr;
 	hdd_exit();
 	return QDF_STATUS_SUCCESS;
 }

+ 5 - 4
core/hdd/src/wlan_hdd_stats.h

@@ -453,21 +453,22 @@ QDF_STATUS wlan_hdd_get_mib_stats(struct hdd_adapter *adapter);
 
 /**
  * wlan_hdd_get_rssi() - Get the current RSSI
- * @adapter: adapter upon which the measurement is requested
+ * @link_info: Link info pointer in HDD adapter
  * @rssi_value: pointer to where the RSSI should be returned
  *
  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
  */
-QDF_STATUS wlan_hdd_get_rssi(struct hdd_adapter *adapter, int8_t *rssi_value);
+QDF_STATUS wlan_hdd_get_rssi(struct wlan_hdd_link_info *link_info,
+			     int8_t *rssi_value);
 
 /**
  * wlan_hdd_get_snr() - Get the current SNR
- * @adapter: adapter upon which the measurement is requested
+ * @link_info: Link info pointer in HDD adapter
  * @snr: pointer to where the SNR should be returned
  *
  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
  */
-QDF_STATUS wlan_hdd_get_snr(struct hdd_adapter *adapter, int8_t *snr);
+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

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

@@ -6085,7 +6085,7 @@ static int __iw_get_char_setnone(struct net_device *dev,
 	{
 		int8_t s7Rssi = 0;
 
-		wlan_hdd_get_rssi(adapter, &s7Rssi);
+		wlan_hdd_get_rssi(link_info, &s7Rssi);
 		snprintf(extra, WE_MAX_STR_LEN, "rssi=%d", s7Rssi);
 		wrqu->data.length = strlen(extra) + 1;
 		break;
@@ -6352,7 +6352,7 @@ static int __iw_get_char_setnone(struct net_device *dev,
 				enable_snr_monitoring);
 			return -ENONET;
 		}
-		wlan_hdd_get_snr(adapter, &s7snr);
+		wlan_hdd_get_snr(link_info, &s7snr);
 		snprintf(extra, WE_MAX_STR_LEN, "snr=%d", s7snr);
 		wrqu->data.length = strlen(extra) + 1;
 		break;