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;