Przeglądaj źródła

msm: ipa : index mismatch fix for stats buffer

For more than one wlan clients, if other than first
gets disconnected, stats  was not updating at index zero,
due to which stats were showing as zero.

Change-Id: Ie83edeb977f758420334bf30295f978532462de3
Signed-off-by: Armaan Siddiqui <[email protected]>
Armaan Siddiqui 4 lat temu
rodzic
commit
f7290e40a6
1 zmienionych plików z 11 dodań i 7 usunięć
  1. 11 7
      drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c

+ 11 - 7
drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c

@@ -6385,7 +6385,7 @@ EXPORT_SYMBOL(ipa3_wwan_platform_driver_register);
 int rmnet_ipa3_query_per_client_stats_v2(
 		struct wan_ioctl_query_per_client_stats *data)
 {
-	int lan_clnt_idx, i, j, result = 1;
+	int lan_clnt_idx, i, j, result = 1, stats_idx = 0;
 	struct ipa_lan_client *lan_client = NULL;
 	struct ipa_lan_client_cntr_index
 		*lan_client_index = NULL;
@@ -6492,19 +6492,23 @@ int rmnet_ipa3_query_per_client_stats_v2(
 		}
 		fnr_stats = &((struct ipa_flt_rt_stats *)
 				query->stats)[0];
-		data->client_info[i].ipv4_tx_bytes =
+		if (data->num_clients == 1)
+			stats_idx = 0;
+		else
+			stats_idx = i;
+		data->client_info[stats_idx].ipv4_tx_bytes =
 			fnr_stats->num_bytes;
 		fnr_stats = &((struct ipa_flt_rt_stats *)
 				query->stats)[1];
-		data->client_info[i].ipv4_rx_bytes =
+		data->client_info[stats_idx].ipv4_rx_bytes =
 			fnr_stats->num_bytes;
-		memcpy(data->client_info[i].mac,
+		memcpy(data->client_info[stats_idx].mac,
 				lan_client[i].mac,
 				IPA_MAC_ADDR_SIZE);
 
-		IPAWANDBG("Client ipv4_tx_bytes = %lu, ipv4_rx_bytes = %lu\n",
-				data->client_info[i].ipv4_tx_bytes,
-				data->client_info[i].ipv4_rx_bytes);
+		IPAWANDBG("Client ipv4_tx_bytes = %llu, ipv4_rx_bytes = %llu\n",
+				data->client_info[stats_idx].ipv4_tx_bytes,
+				data->client_info[stats_idx].ipv4_rx_bytes);
 
 		kfree((void *)query->stats);
 		ret = result;