fixup! net: wireless: broadcom: bcmdhd: Align link layer stats with AOSP HAL code

* AOSP expects rate_stat to be in peer_info rather than appended at the end of iface_stat

Change-Id: Iac8b71f73fe1a018a380a1b54f6df39e278e604f
diff --git a/drivers/net/wireless/broadcom/bcmdhd_101_16/include/dngl_stats.h b/drivers/net/wireless/broadcom/bcmdhd_101_16/include/dngl_stats.h
index 63831a9..17f3056 100644
--- a/drivers/net/wireless/broadcom/bcmdhd_101_16/include/dngl_stats.h
+++ b/drivers/net/wireless/broadcom/bcmdhd_101_16/include/dngl_stats.h
@@ -27,6 +27,8 @@
 #ifndef _dngl_stats_h_
 #define _dngl_stats_h_
 
+#define NUM_RATE 32
+
 #include <ethernet.h>
 #include <802.11.h>
 
@@ -269,7 +271,7 @@ typedef struct {
 	uint32 capabilities;              /* peer WIFI_CAPABILITY_XXX */
 	bssload_info_t bssload;		/* STA count and CU */
 	uint32 num_rate;                  /* number of rates */
-	wifi_rate_stat rate_stats[1];   /* per rate statistics, number of entries  = num_rate */
+	wifi_rate_stat_v1 rate_stats[NUM_RATE];   /* per rate statistics, number of entries  = num_rate */
 } wifi_peer_info;
 
 /* per access category statistics */
diff --git a/drivers/net/wireless/broadcom/bcmdhd_101_16/wifi_stats.h b/drivers/net/wireless/broadcom/bcmdhd_101_16/wifi_stats.h
index 907a37b..ef3f013 100644
--- a/drivers/net/wireless/broadcom/bcmdhd_101_16/wifi_stats.h
+++ b/drivers/net/wireless/broadcom/bcmdhd_101_16/wifi_stats.h
@@ -28,6 +28,8 @@
 // remove the conditional after moving all branches to use the new code
 #ifdef USE_WIFI_STATS_H
 
+#define NUM_RATE 32
+
 #include <ethernet.h>
 #include <802.11.h>
 
@@ -261,7 +263,7 @@ typedef struct {
 	uint32 capabilities;              /* peer WIFI_CAPABILITY_XXX */
 	bssload_info_t bssload;		/* STA count and CU */
 	uint32 num_rate;                  /* number of rates */
-	wifi_rate_stat rate_stats[1];   /* per rate statistics, number of entries  = num_rate */
+	wifi_rate_stat_v1 rate_stats[NUM_RATE];   /* per rate statistics, number of entries  = num_rate */
 } wifi_peer_info;
 
 /* per access category statistics */
diff --git a/drivers/net/wireless/broadcom/bcmdhd_101_16/wl_cfgvendor.c b/drivers/net/wireless/broadcom/bcmdhd_101_16/wl_cfgvendor.c
index 4324ff7..4154db2 100644
--- a/drivers/net/wireless/broadcom/bcmdhd_101_16/wl_cfgvendor.c
+++ b/drivers/net/wireless/broadcom/bcmdhd_101_16/wl_cfgvendor.c
@@ -6886,7 +6886,6 @@ wl_cfgvendor_nan_enable_merge(struct wiphy *wiphy,
 
 #ifdef LINKSTAT_SUPPORT
 
-#define NUM_RATE 32
 #define NUM_PEER 1
 #define NUM_CHAN 11
 #define HEADER_SIZE sizeof(ver_len)
@@ -7398,8 +7397,6 @@ static int wl_cfgvendor_lstats_get_info(struct wiphy *wiphy,
 	COMPAT_ASSIGN_VALUE(iface, num_peers, NUM_PEER);
 	COMPAT_ASSIGN_VALUE(iface, peer_info->num_rate, NUM_RATE);
 
-	COMPAT_MEMCOPY_IFACE(output, total_len, wifi_iface_stat, iface, wifi_rate_stat);
-
 	err = wldev_iovar_getbuf(bcmcfg_to_prmry_ndev(cfg), "ratestat", NULL, 0,
 		iovar_buf, WLC_IOCTL_MAXLEN, NULL);
 	if (err != BCME_OK && err != BCME_UNSUPPORTED) {
@@ -7409,7 +7406,7 @@ static int wl_cfgvendor_lstats_get_info(struct wiphy *wiphy,
 	for (i = 0; i < NUM_RATE; i++) {
 		p_wifi_rate_stat =
 			(wifi_rate_stat *)(iovar_buf + i*sizeof(wifi_rate_stat));
-		p_wifi_rate_stat_v1 = (wifi_rate_stat_v1 *)output;
+		p_wifi_rate_stat_v1 = &iface.peer_info->rate_stats[i];
 		p_wifi_rate_stat_v1->rate.preamble = p_wifi_rate_stat->rate.preamble;
 		p_wifi_rate_stat_v1->rate.nss = p_wifi_rate_stat->rate.nss;
 		p_wifi_rate_stat_v1->rate.bw = p_wifi_rate_stat->rate.bw;
@@ -7422,8 +7419,6 @@ static int wl_cfgvendor_lstats_get_info(struct wiphy *wiphy,
 		p_wifi_rate_stat_v1->retries = p_wifi_rate_stat->retries;
 		p_wifi_rate_stat_v1->retries_short = p_wifi_rate_stat->retries_short;
 		p_wifi_rate_stat_v1->retries_long = p_wifi_rate_stat->retries_long;
-		output = (char *) &(p_wifi_rate_stat_v1->retries_long);
-		output += sizeof(p_wifi_rate_stat_v1->retries_long);
 	}
 
 	total_len = sizeof(wifi_radio_stat_h) + chan_stats_size;