summaryrefslogtreecommitdiff
path: root/qcwcn
diff options
context:
space:
mode:
authorSubhani Shaik <subhanis@codeaurora.org>2016-03-02 12:58:54 +0530
committermukesh agrawal <quiche@google.com>2016-03-16 12:36:08 -0700
commite7565bd3953766d874f03973e732eeac290f3398 (patch)
tree8f0ec73973e983ead3dd4697ace1f03c36df6599 /qcwcn
parent15edefc411e5d4afe85c0ca404e93f2346fde5b1 (diff)
downloadwlan-e7565bd3953766d874f03973e732eeac290f3398.tar.gz
WiFi-HAL: Do not free local frame_content in get()
Wifihal allocates memory for a frame when it receives the corresponding stat. It gets freed when wifihal receives first packet of the next connection instance. Framework can query for the same any number of times. So, wifihal should maintain the current stats till it gets next connection instance stats. So, do not free it in get() APIs. Correct memcpy() length for management frames from MAX_FRAME_LEN_ETHERNET to MAX_FRAME_LEN_80211_MGMT. BUG: 27502434 Change-Id: I0b5756e1a916f95290c85e90a5ae42c7fcd62d18
Diffstat (limited to 'qcwcn')
-rw-r--r--qcwcn/wifi_hal/wifilogger.cpp16
-rw-r--r--qcwcn/wifi_hal/wifilogger_diag.cpp4
2 files changed, 12 insertions, 8 deletions
diff --git a/qcwcn/wifi_hal/wifilogger.cpp b/qcwcn/wifi_hal/wifilogger.cpp
index 0ce2bab..506e0df 100644
--- a/qcwcn/wifi_hal/wifilogger.cpp
+++ b/qcwcn/wifi_hal/wifilogger.cpp
@@ -686,10 +686,12 @@ wifi_error wifi_get_tx_pkt_fates(wifi_interface_handle iface,
tx_report_bufs[i].frame_inf.frame_content.ieee_80211_mgmt_bytes,
tx_fate_stats[i].frame_inf.frame_content,
min(tx_fate_stats[i].frame_inf.frame_len,
- MAX_FRAME_LEN_ETHERNET));
+ MAX_FRAME_LEN_80211_MGMT));
else
- ALOGE("Unknown format packet");
- free (tx_fate_stats[i].frame_inf.frame_content);
+ /* Currently framework is interested only two types(
+ * FRAME_TYPE_ETHERNET_II and FRAME_TYPE_80211_MGMT) of packets, so
+ * ignore the all other types of packets received from driver */
+ ALOGI("Unknown format packet");
}
return WIFI_SUCCESS;
@@ -750,10 +752,12 @@ wifi_error wifi_get_rx_pkt_fates(wifi_interface_handle iface,
rx_report_bufs[i].frame_inf.frame_content.ieee_80211_mgmt_bytes,
rx_fate_stats[i].frame_inf.frame_content,
min(rx_fate_stats[i].frame_inf.frame_len,
- MAX_FRAME_LEN_ETHERNET));
+ MAX_FRAME_LEN_80211_MGMT));
else
- ALOGE("Unknown format packet");
- free (rx_fate_stats[i].frame_inf.frame_content);
+ /* Currently framework is interested only two types(
+ * FRAME_TYPE_ETHERNET_II and FRAME_TYPE_80211_MGMT) of packets, so
+ * ignore the all other types of packets received from driver */
+ ALOGI("Unknown format packet");
}
return WIFI_SUCCESS;
diff --git a/qcwcn/wifi_hal/wifilogger_diag.cpp b/qcwcn/wifi_hal/wifilogger_diag.cpp
index 9ecbf45..ac999ec 100644
--- a/qcwcn/wifi_hal/wifilogger_diag.cpp
+++ b/qcwcn/wifi_hal/wifilogger_diag.cpp
@@ -1831,7 +1831,7 @@ static wifi_error parse_tx_pkt_fate_stats(hal_info *info, u8 *buf, u16 size)
memcpy(pkt_fate_stats->frame_inf.frame_content,
buf + sizeof(pktdump_hdr), pkt_fate_stats->frame_inf.frame_len);
} else {
- ALOGE("Failed to allocate mem for Tx frame_content for packet: %d",
+ ALOGE("Failed to allocate mem for Tx frame_content for packet: %zu",
info->pkt_fate_stats->n_tx_stats_collected);
pkt_fate_stats->frame_inf.frame_len = 0;
}
@@ -1873,7 +1873,7 @@ static wifi_error parse_rx_pkt_fate_stats(hal_info *info, u8 *buf, u16 size)
memcpy(pkt_fate_stats->frame_inf.frame_content,
buf + sizeof(pktdump_hdr), pkt_fate_stats->frame_inf.frame_len);
} else {
- ALOGE("Failed to allocate mem for Rx frame_content for packet: %d",
+ ALOGE("Failed to allocate mem for Rx frame_content for packet: %zu",
info->pkt_fate_stats->n_rx_stats_collected);
pkt_fate_stats->frame_inf.frame_len = 0;
}