Преглед изворни кода

qcacld-3.0: Split __wlan_hdd_cfg80211_get_station for sta/sap

Refactor function __wlan_hdd_cfg80211_get_station for sta and sap
case.

Change-Id: Ic71333750657745058c5f37665ea0bb7b7331988
CRs-Fixed: 2223583
Naveen Rawat пре 7 година
родитељ
комит
374d798de2
1 измењених фајлова са 54 додато и 37 уклоњено
  1. 54 37
      core/hdd/src/wlan_hdd_stats.c

+ 54 - 37
core/hdd/src/wlan_hdd_stats.c

@@ -3887,20 +3887,22 @@ int wlan_hdd_get_station_remote(struct wiphy *wiphy,
 }
 
 /**
- * __wlan_hdd_cfg80211_get_station() - get station statistics
- * @wiphy: Pointer to wiphy
- * @dev: Pointer to network device
- * @mac: Pointer to mac
- * @sinfo: Pointer to station info
+ * wlan_hdd_get_sta_stats() - get aggregate STA stats
+ * @wiphy: wireless phy
+ * @adapter: STA adapter to get stats for
+ * @mac: mac address of sta
+ * @sinfo: kernel station_info struct to populate
  *
- * Return: 0 for success, non-zero for failure
+ * Fetch the vdev-level aggregate stats for the given STA adapter. This is to
+ * support "station dump" and "station get" for STA vdevs
+ *
+ * Return: errno
  */
-static int __wlan_hdd_cfg80211_get_station(struct wiphy *wiphy,
-					   struct net_device *dev,
-					   const uint8_t *mac,
-					   struct station_info *sinfo)
+static int wlan_hdd_get_sta_stats(struct wiphy *wiphy,
+				  struct hdd_adapter *adapter,
+				  const uint8_t *mac,
+				  struct station_info *sinfo)
 {
-	struct hdd_adapter *adapter = WLAN_HDD_GET_PRIV_PTR(dev);
 	struct hdd_station_ctx *sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter);
 	int ssidlen = sta_ctx->conn_info.SSID.SSID.length;
 	uint8_t rate_flags;
@@ -3924,7 +3926,7 @@ static int __wlan_hdd_cfg80211_get_station(struct wiphy *wiphy,
 	uint8_t rateFlag = 1;
 	uint8_t i, j, rssidx;
 	uint8_t nss = 1;
-	int status, mode = 0, maxHtIdx;
+	int mode = 0, maxHtIdx;
 	struct index_vht_data_rate_type *supported_vht_mcs_rate;
 	struct index_data_rate_type *supported_mcs_rate;
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0))
@@ -3935,25 +3937,6 @@ static int __wlan_hdd_cfg80211_get_station(struct wiphy *wiphy,
 	enum data_rate_11ac_max_mcs vht_max_mcs;
 	int32_t rcpi_value;
 
-	hdd_enter_dev(dev);
-
-	if (QDF_GLOBAL_FTM_MODE == hdd_get_conparam()) {
-		hdd_err("Command not allowed in FTM mode");
-		return -EINVAL;
-	}
-
-	status = wlan_hdd_validate_context(hdd_ctx);
-	if (status)
-		return status;
-
-	if (wlan_hdd_validate_session_id(adapter->session_id)) {
-		hdd_err("invalid session id: %d", adapter->session_id);
-		return -EINVAL;
-	}
-
-	if (adapter->device_mode == QDF_SAP_MODE)
-		return wlan_hdd_get_sap_stats(adapter, sinfo);
-
 	if ((eConnectionState_Associated != sta_ctx->conn_info.connState) ||
 	    (0 == ssidlen)) {
 		hdd_debug("Not associated or Invalid ssidlen, %d",
@@ -4407,6 +4390,46 @@ static int __wlan_hdd_cfg80211_get_station(struct wiphy *wiphy,
 	return 0;
 }
 
+/**
+ * __wlan_hdd_cfg80211_get_station() - get station statistics
+ * @wiphy: Pointer to wiphy
+ * @dev: Pointer to network device
+ * @mac: Pointer to mac
+ * @sinfo: Pointer to station info
+ *
+ * Return: 0 for success, non-zero for failure
+ */
+static int __wlan_hdd_cfg80211_get_station(struct wiphy *wiphy,
+					   struct net_device *dev,
+					   const uint8_t *mac,
+					   struct station_info *sinfo)
+{
+	int status;
+	struct hdd_adapter *adapter = WLAN_HDD_GET_PRIV_PTR(dev);
+	struct hdd_context *hdd_ctx = (struct hdd_context *) wiphy_priv(wiphy);
+
+	hdd_enter_dev(dev);
+
+	if (QDF_GLOBAL_FTM_MODE == hdd_get_conparam()) {
+		hdd_err("Command not allowed in FTM mode");
+		return -EINVAL;
+	}
+
+	status = wlan_hdd_validate_context(hdd_ctx);
+	if (status)
+		return status;
+
+	if (wlan_hdd_validate_session_id(adapter->session_id)) {
+		hdd_err("invalid session id: %d", adapter->session_id);
+		return -EINVAL;
+	}
+
+	if (adapter->device_mode == QDF_SAP_MODE)
+		return wlan_hdd_get_sap_stats(adapter, sinfo);
+	else
+		return wlan_hdd_get_sta_stats(wiphy, adapter, mac, sinfo);
+}
+
 /**
  * wlan_hdd_cfg80211_get_station() - get station statistics
  * @wiphy: Pointer to wiphy
@@ -4416,15 +4439,9 @@ static int __wlan_hdd_cfg80211_get_station(struct wiphy *wiphy,
  *
  * Return: 0 for success, non-zero for failure
  */
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0))
 int wlan_hdd_cfg80211_get_station(struct wiphy *wiphy,
 				  struct net_device *dev, const uint8_t *mac,
 				  struct station_info *sinfo)
-#else
-int wlan_hdd_cfg80211_get_station(struct wiphy *wiphy,
-				  struct net_device *dev, uint8_t *mac,
-				  struct station_info *sinfo)
-#endif
 {
 	int ret;