summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkash Patel <akashp@codeaurora.org>2015-04-28 10:10:29 -0700
committerAkash Patel <akashp@codeaurora.org>2015-04-28 10:10:29 -0700
commit1c55fca9190bf97eccd090ca378c01ad3e378ee2 (patch)
tree3873ed7485362e356720892735bef8c9a35d22d4
parent9b2f443006c558ec7ba36251718c4935eae8ff2d (diff)
parent922e735ef9a1097394c86a1dd9802c619e7b8042 (diff)
Release 4.0.10.86 QCACLD WLAN Driver
Merge remote-tracking branch 'origin/caf/caf-wlan/master' into HEAD * origin/caf/caf-wlan/master: Cafstaging Release 4.0.10.86 qcacld-2.0: Fix to validate destination address of deauth & disassoc qcacld-2.0: Initial Scan fix wlan: Fix wmi buffer stale pointer qcacld: Add version field to the packet log message structure qcacld: Read residue data written into the proc during read process qcacld: Fix compilation errors in SDIO platform Change-Id: Ic8b3f3b50eb8e731907993f5b84d9183e816780a
-rwxr-xr-xCORE/HDD/src/wlan_hdd_main.c2
-rw-r--r--CORE/HDD/src/wlan_hdd_memdump.c36
-rw-r--r--CORE/MAC/inc/qwlan_version.h4
-rw-r--r--CORE/MAC/inc/sirTypes.h1
-rw-r--r--CORE/MAC/src/pe/lim/limProcessDeauthFrame.c6
-rw-r--r--CORE/MAC/src/pe/lim/limProcessDisassocFrame.c5
-rw-r--r--CORE/MAC/src/pe/lim/limUtils.c31
-rw-r--r--CORE/MAC/src/pe/lim/limUtils.h2
-rw-r--r--CORE/SERVICES/WMA/wma.c36
-rw-r--r--CORE/SME/src/csr/csrApiScan.c6
-rw-r--r--CORE/SYS/legacy/src/system/src/macInitApi.c2
-rw-r--r--CORE/UTILS/PKTLOG/include/pktlog_ac.h3
-rw-r--r--CORE/UTILS/PKTLOG/linux_ac.c44
-rw-r--r--CORE/UTILS/PKTLOG/pktlog_internal.c1
-rw-r--r--CORE/VOSS/inc/vos_diag_core_log.h4
15 files changed, 142 insertions, 41 deletions
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 97b3587cbb58..7e8481de59ee 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -110,7 +110,6 @@
#ifdef CONFIG_CNSS
#include <net/cnss.h>
#endif
-#include "wlan_hdd_memdump.h"
extern int hdd_hostapd_stop (struct net_device *dev);
void hdd_ch_avoid_cb(void *hdd_context,void *indi_param);
@@ -122,6 +121,7 @@ void hdd_ch_avoid_cb(void *hdd_context,void *indi_param);
#include "wlan_hdd_debugfs.h"
#include "epping_main.h"
+#include "wlan_hdd_memdump.h"
#ifdef IPA_OFFLOAD
#include <wlan_hdd_ipa.h>
diff --git a/CORE/HDD/src/wlan_hdd_memdump.c b/CORE/HDD/src/wlan_hdd_memdump.c
index 2dba7df3c24a..8192d1e69318 100644
--- a/CORE/HDD/src/wlan_hdd_memdump.c
+++ b/CORE/HDD/src/wlan_hdd_memdump.c
@@ -35,6 +35,11 @@
#include <sme_Api.h>
#include <wlan_hdd_includes.h>
#include "wlan_hdd_memdump.h"
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/version.h>
+#include <linux/proc_fs.h> /* Necessary because we use the proc fs */
+#include <linux/uaccess.h> /* for copy_to_user */
/**
* memdump_cleanup_timer_cb() - Timer callback function for memory dump cleanup.
@@ -265,6 +270,33 @@ int wlan_hdd_cfg80211_get_fw_mem_dump(struct wiphy *wiphy,
static struct proc_dir_entry *proc_file, *proc_dir;
+/** memdump_get_file_data() - get data available in proc file
+ *
+ * @file - handle for the proc file.
+ *
+ * This function is used to retrieve the data passed while
+ * creating proc file entry.
+ *
+ * Return: void pointer to hdd_context
+ */
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)) || defined(WITH_BACKPORTS)
+static void *memdump_get_file_data(struct file *file)
+{
+ void *hdd_ctx;
+
+ hdd_ctx = PDE_DATA(file_inode(file));
+ return hdd_ctx;
+}
+#else
+static void *memdump_get_file_data(struct file *file)
+{
+ void *hdd_ctx;
+
+ hdd_ctx = PDE(file->f_path.dentry->d_inode)->data;
+ return hdd_ctx;
+}
+#endif
+
/**
* memdump_read() - perform read operation in memory dump proc file
*
@@ -281,11 +313,13 @@ static ssize_t memdump_read(struct file *file, char __user *buf,
size_t count, loff_t *pos)
{
int status;
- hdd_context_t *hdd_ctx = (hdd_context_t *)PDE_DATA(file_inode(file));
+ hdd_context_t *hdd_ctx;
adf_os_dma_addr_t paddr;
adf_os_dma_addr_t dma_ctx;
adf_os_device_t adf_ctx;
+ hdd_ctx = memdump_get_file_data(file);
+
hddLog(LOG1, FL("Read req for size:%zu pos:%llu"), count, *pos);
status = wlan_hdd_validate_context(hdd_ctx);
if (0 != status) {
diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h
index 7dad50c0b4f3..7e42f0768f4d 100644
--- a/CORE/MAC/inc/qwlan_version.h
+++ b/CORE/MAC/inc/qwlan_version.h
@@ -42,9 +42,9 @@ BRIEF DESCRIPTION:
#define QWLAN_VERSION_MINOR 0
#define QWLAN_VERSION_PATCH 10
#define QWLAN_VERSION_EXTRA ""
-#define QWLAN_VERSION_BUILD 85
+#define QWLAN_VERSION_BUILD 86
-#define QWLAN_VERSIONSTR "4.0.10.85"
+#define QWLAN_VERSIONSTR "4.0.10.86"
#define AR6320_REV1_VERSION 0x5000000
diff --git a/CORE/MAC/inc/sirTypes.h b/CORE/MAC/inc/sirTypes.h
index 9f04e9a9ee03..4c4f177600a7 100644
--- a/CORE/MAC/inc/sirTypes.h
+++ b/CORE/MAC/inc/sirTypes.h
@@ -41,6 +41,7 @@
#include "halTypes.h"
+#define FIRST_SCAN_ID 1
/* ********************************************** *
* *
* SIRIUS ERROR Codes / Return Codes *
diff --git a/CORE/MAC/src/pe/lim/limProcessDeauthFrame.c b/CORE/MAC/src/pe/lim/limProcessDeauthFrame.c
index bbba2794533d..f7a730120c16 100644
--- a/CORE/MAC/src/pe/lim/limProcessDeauthFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessDeauthFrame.c
@@ -128,6 +128,12 @@ limProcessDeauthFrame(tpAniSirGlobal pMac, tANI_U8 *pRxPacketInfo, tpPESession p
return;
}
+ if (!lim_validate_received_frame_a1_addr(pMac, pHdr->da, psessionEntry)) {
+ limLog(pMac, LOGE,
+ FL("rx frame doesn't have valid a1 address, dropping it"));
+ return;
+ }
+
#ifdef WLAN_FEATURE_11W
/* PMF: If this session is a PMF session, then ensure that this frame was protected */
if(psessionEntry->limRmfEnabled && (WDA_GET_RX_DPU_FEEDBACK(pRxPacketInfo) & DPU_FEEDBACK_UNPROTECTED_ERROR))
diff --git a/CORE/MAC/src/pe/lim/limProcessDisassocFrame.c b/CORE/MAC/src/pe/lim/limProcessDisassocFrame.c
index ce2b9dea868e..9418a33b8ddd 100644
--- a/CORE/MAC/src/pe/lim/limProcessDisassocFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessDisassocFrame.c
@@ -105,6 +105,11 @@ limProcessDisassocFrame(tpAniSirGlobal pMac, tANI_U8 *pRxPacketInfo, tpPESession
return;
}
+ if (!lim_validate_received_frame_a1_addr(pMac, pHdr->da, psessionEntry)) {
+ limLog(pMac, LOGE,
+ FL("rx frame doesn't have valid a1 address, dropping it"));
+ return;
+ }
if (LIM_IS_STA_ROLE(psessionEntry) &&
(eLIM_SME_WT_DISASSOC_STATE == psessionEntry->limSmeState)) {
diff --git a/CORE/MAC/src/pe/lim/limUtils.c b/CORE/MAC/src/pe/lim/limUtils.c
index 073320661700..eff2c6d57b5e 100644
--- a/CORE/MAC/src/pe/lim/limUtils.c
+++ b/CORE/MAC/src/pe/lim/limUtils.c
@@ -8030,3 +8030,34 @@ error:
return;
}
#endif /* SAP_AUTH_OFFLOAD */
+
+/**
+ * lim_validate_received_frame_a1_addr() - To validate received frame's A1 addr
+ * @mac_ctx: pointer to mac context
+ * @a1: received frame's a1 address which is nothing but our self address
+ * @session: PE session pointer
+ *
+ * This routine will validate, A1 addres of the received frame
+ *
+ * Return: true or false
+ */
+bool lim_validate_received_frame_a1_addr(tpAniSirGlobal mac_ctx,
+ tSirMacAddr a1, tpPESession session)
+{
+ if (mac_ctx == NULL || session == NULL) {
+ limLog(mac_ctx, LOGE,
+ FL("NULL pointer"));
+ /* let main routine handle it */
+ return true;
+ }
+ if (limIsGroupAddr(a1) || limIsAddrBC(a1)) {
+ /* just for fail safe, don't handle MC/BC a1 in this routine */
+ return true;
+ }
+ if (!vos_mem_compare(a1, session->selfMacAddr, 6)) {
+ limLog(mac_ctx, LOGE,
+ FL("Invalid A1 address in received frame"));
+ return false;
+ }
+ return true;
+}
diff --git a/CORE/MAC/src/pe/lim/limUtils.h b/CORE/MAC/src/pe/lim/limUtils.h
index 1fecbb73ed59..a7f3b3daabee 100644
--- a/CORE/MAC/src/pe/lim/limUtils.h
+++ b/CORE/MAC/src/pe/lim/limUtils.h
@@ -612,5 +612,7 @@ void lim_sap_offload_add_sta(tpAniSirGlobal pmac,
void lim_sap_offload_del_sta(tpAniSirGlobal pmac,
tpSirMsgQ lim_msgq);
#endif /* SAP_AUTH_OFFLOAD */
+bool lim_validate_received_frame_a1_addr(tpAniSirGlobal mac_ctx,
+ tSirMacAddr a1, tpPESession session);
#endif /* __LIM_UTILS_H */
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index bb2839d5aede..ac3cf4e351e9 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -10736,6 +10736,24 @@ VOS_STATUS wma_vdev_start(tp_wma_handle wma,
chan->band_center_freq2, chan->reg_info_1, chan->reg_info_2,
req->max_txpow);
+ /* Store vdev params in SAP mode which can be used in vdev restart */
+ if (intr[req->vdev_id].type == WMI_VDEV_TYPE_AP &&
+ intr[req->vdev_id].sub_type == 0) {
+ intr[req->vdev_id].vdev_restart_params.vdev_id = req->vdev_id;
+ intr[req->vdev_id].vdev_restart_params.ssid.ssid_len = cmd->ssid.ssid_len;
+ vos_mem_copy(intr[req->vdev_id].vdev_restart_params.ssid.ssid, cmd->ssid.ssid,
+ cmd->ssid.ssid_len);
+ intr[req->vdev_id].vdev_restart_params.flags = cmd->flags;
+ intr[req->vdev_id].vdev_restart_params.requestor_id = cmd->requestor_id;
+ intr[req->vdev_id].vdev_restart_params.disable_hw_ack = cmd->disable_hw_ack;
+ intr[req->vdev_id].vdev_restart_params.chan.mhz = chan->mhz;
+ intr[req->vdev_id].vdev_restart_params.chan.band_center_freq1 = chan->band_center_freq1;
+ intr[req->vdev_id].vdev_restart_params.chan.band_center_freq2 = chan->band_center_freq1;
+ intr[req->vdev_id].vdev_restart_params.chan.info = chan->info;
+ intr[req->vdev_id].vdev_restart_params.chan.reg_info_1 = chan->reg_info_1;
+ intr[req->vdev_id].vdev_restart_params.chan.reg_info_2 = chan->reg_info_2;
+ }
+
if (isRestart) {
/*
* Marking the VDEV UP STATUS to FALSE
@@ -10763,24 +10781,6 @@ VOS_STATUS wma_vdev_start(tp_wma_handle wma,
return VOS_STATUS_E_FAILURE;
}
- /* Store vdev params in SAP mode which can be used in vdev restart */
- if (intr[req->vdev_id].type == WMI_VDEV_TYPE_AP &&
- intr[req->vdev_id].sub_type == 0) {
- intr[req->vdev_id].vdev_restart_params.vdev_id = req->vdev_id;
- intr[req->vdev_id].vdev_restart_params.ssid.ssid_len = cmd->ssid.ssid_len;
- vos_mem_copy(intr[req->vdev_id].vdev_restart_params.ssid.ssid, cmd->ssid.ssid,
- cmd->ssid.ssid_len);
- intr[req->vdev_id].vdev_restart_params.flags = cmd->flags;
- intr[req->vdev_id].vdev_restart_params.requestor_id = cmd->requestor_id;
- intr[req->vdev_id].vdev_restart_params.disable_hw_ack = cmd->disable_hw_ack;
- intr[req->vdev_id].vdev_restart_params.chan.mhz = chan->mhz;
- intr[req->vdev_id].vdev_restart_params.chan.band_center_freq1 = chan->band_center_freq1;
- intr[req->vdev_id].vdev_restart_params.chan.band_center_freq2 = chan->band_center_freq1;
- intr[req->vdev_id].vdev_restart_params.chan.info = chan->info;
- intr[req->vdev_id].vdev_restart_params.chan.reg_info_1 = chan->reg_info_1;
- intr[req->vdev_id].vdev_restart_params.chan.reg_info_2 = chan->reg_info_2;
- }
-
return VOS_STATUS_SUCCESS;
}
diff --git a/CORE/SME/src/csr/csrApiScan.c b/CORE/SME/src/csr/csrApiScan.c
index 7324340b08b4..7ef70f9b1345 100644
--- a/CORE/SME/src/csr/csrApiScan.c
+++ b/CORE/SME/src/csr/csrApiScan.c
@@ -561,10 +561,11 @@ static void csrScan2GOnyRequest(tpAniSirGlobal pMac,tSmeCmd *pScanCmd,
return;
}
- if (pScanCmd->u.scanCmd.scanID ||
+ if ((pScanCmd->u.scanCmd.scanID != FIRST_SCAN_ID) ||
(eCSR_SCAN_REQUEST_FULL_SCAN != pScanRequest->requestType))
return;
+ smsLog( pMac, LOG1, FL("Scanning only 2G Channels during first scan"));
/* Construct valid Supported 2.4 GHz Channel List */
for( index = 0; index < ARRAY_SIZE(channelList2G); index++ )
{
@@ -730,7 +731,7 @@ eHalStatus csrScanRequest(tpAniSirGlobal pMac, tANI_U16 sessionId,
// If it is the first scan request from HDD, CSR checks if it is for 11d.
// If it is not, CSR will save the scan request in the pending cmd queue
// & issue an 11d scan request to PE.
- if (((0 == pScanCmd->u.scanCmd.scanID)
+ if (((FIRST_SCAN_ID == pScanCmd->u.scanCmd.scanID)
&& (eCSR_SCAN_REQUEST_11D_SCAN != pScanRequest->requestType))
#ifdef SOFTAP_CHANNEL_RANGE
&& (eCSR_SCAN_SOFTAP_CHANNEL_RANGE != pScanRequest->requestType)
@@ -850,7 +851,6 @@ eHalStatus csrScanRequest(tpAniSirGlobal pMac, tANI_U16 sessionId,
//Once we turn on Wifi
if(pMac->scan.fFirstScanOnly2GChnl)
{
- smsLog( pMac, LOG1, FL("Scanning only 2G Channels during first scan"));
csrScan2GOnyRequest(pMac, pScanCmd, pScanRequest);
}
diff --git a/CORE/SYS/legacy/src/system/src/macInitApi.c b/CORE/SYS/legacy/src/system/src/macInitApi.c
index 983c8e08ae5e..2455691d378c 100644
--- a/CORE/SYS/legacy/src/system/src/macInitApi.c
+++ b/CORE/SYS/legacy/src/system/src/macInitApi.c
@@ -202,7 +202,7 @@ tSirRetStatus macOpen(tHalHandle *pHalHandle, tHddHandle hHdd, tMacOpenParameter
*/
p_mac->psOffloadEnabled = TRUE;
- p_mac->scan.nextScanID = 1;
+ p_mac->scan.nextScanID = FIRST_SCAN_ID;
/* FW: 0 to 2047 and Host: 2048 to 4095 */
p_mac->mgmtSeqNum = WLAN_HOST_SEQ_NUM_MIN-1;
diff --git a/CORE/UTILS/PKTLOG/include/pktlog_ac.h b/CORE/UTILS/PKTLOG/include/pktlog_ac.h
index dc7f3f6f575b..b7d22028865c 100644
--- a/CORE/UTILS/PKTLOG/include/pktlog_ac.h
+++ b/CORE/UTILS/PKTLOG/include/pktlog_ac.h
@@ -63,7 +63,8 @@ extern int pktlog_alloc_buf(struct ol_softc *scn);
extern void pktlog_release_buf(struct ol_softc *scn);
ssize_t pktlog_read_proc_entry(char *buf, size_t nbytes, loff_t *ppos,
- struct ath_pktlog_info *pl_info);
+ struct ath_pktlog_info *pl_info,
+ bool *read_complete);
int pktlog_send_per_pkt_stats_to_user(void);
struct ol_pl_arch_dep_funcs {
diff --git a/CORE/UTILS/PKTLOG/linux_ac.c b/CORE/UTILS/PKTLOG/linux_ac.c
index 8e148f16aff5..91b1b9e383f9 100644
--- a/CORE/UTILS/PKTLOG/linux_ac.c
+++ b/CORE/UTILS/PKTLOG/linux_ac.c
@@ -587,21 +587,24 @@ int pktlog_send_per_pkt_stats_to_user(void)
ol_txrx_pdev_handle txrx_pdev =
vos_get_context(VOS_MODULE_ID_TXRX, vos);
struct ath_pktlog_info *pl_info;
+ bool read_complete;
if (!txrx_pdev) {
- printk(PKTLOG_TAG "%s: Invalid TxRx handle \n", __func__);
+ printk(PKTLOG_TAG " %s: Invalid TxRx handle\n", __func__);
return -EINVAL;
}
pl_info = txrx_pdev->pl_dev->pl_info;
if (!pl_info || !pl_info->buf) {
- printk(PKTLOG_TAG "%s: Shouldnt happen. pl_info is invalid \n",
+ printk(PKTLOG_TAG " %s: Shouldnt happen. pl_info is invalid\n",
__func__);
return -EINVAL;
}
if (pl_info->buf->rd_offset == -1) {
+ printk(PKTLOG_TAG " %s: Shouldnt happen. No write yet!\n",
+ __func__);
return -EINVAL;
}
@@ -610,7 +613,8 @@ int pktlog_send_per_pkt_stats_to_user(void)
vos_mem_malloc(sizeof(struct vos_log_pktlog_info) +
VOS_LOG_PKT_LOG_SIZE);
if (!pktlog) {
- printk(PKTLOG_TAG "%s: Memory allocation failed \n", __func__);
+ printk(PKTLOG_TAG " %s: Memory allocation failed\n",
+ __func__);
return -ENOMEM;
}
@@ -618,6 +622,7 @@ int pktlog_send_per_pkt_stats_to_user(void)
vos_log_set_code(pktlog, LOG_WLAN_PKT_LOG_INFO_C);
pktlog->buf_len = 0;
+ pktlog->version = VERSION_LOG_WLAN_PKT_LOG_INFO_C;
/*
* @ret_val: ret_val gives the actual data read from the buffer.
@@ -629,7 +634,7 @@ int pktlog_send_per_pkt_stats_to_user(void)
ret_val = pktlog_read_proc_entry(pktlog->buf,
VOS_LOG_PKT_LOG_SIZE,
&pl_info->buf->offset,
- pl_info);
+ pl_info, &read_complete);
if (ret_val) {
int index = 0;
struct ath_pktlog_hdr *temp;
@@ -637,7 +642,8 @@ int pktlog_send_per_pkt_stats_to_user(void)
if ((ret_val - index) <
sizeof(struct ath_pktlog_hdr)) {
/* Partial header */
- pl_info->buf->offset -= (ret_val - index);
+ pl_info->buf->offset -=
+ (ret_val - index);
ret_val = index;
break;
}
@@ -646,7 +652,8 @@ int pktlog_send_per_pkt_stats_to_user(void)
if ((ret_val - index) < (temp->size +
sizeof(struct ath_pktlog_hdr))) {
/* Partial record payload */
- pl_info->buf->offset -= (ret_val - index);
+ pl_info->buf->offset -=
+ (ret_val - index);
ret_val = index;
break;
}
@@ -665,7 +672,7 @@ int pktlog_send_per_pkt_stats_to_user(void)
} else {
vos_mem_free(pktlog);
}
- } while (ret_val);
+ } while (read_complete == false);
return 0;
}
@@ -673,10 +680,11 @@ int pktlog_send_per_pkt_stats_to_user(void)
/**
* pktlog_read_proc_entry() - This function is used to read data from the
* proc entry into the readers buffer
- * @buf: Readers buffer
- * @nbytes: Number of bytes to read
- * @ppos: Offset within the drivers buffer
- * @pl_info: Packet log information pointer
+ * @buf: Readers buffer
+ * @nbytes: Number of bytes to read
+ * @ppos: Offset within the drivers buffer
+ * @pl_info: Packet log information pointer
+ * @read_complete: Boolean value indication whether read is complete
*
* This function is used to read data from the proc entry into the readers
* buffer. Its functionality is similar to 'pktlog_read' which does
@@ -687,7 +695,8 @@ int pktlog_send_per_pkt_stats_to_user(void)
*/
ssize_t
pktlog_read_proc_entry(char *buf, size_t nbytes, loff_t *ppos,
- struct ath_pktlog_info *pl_info)
+ struct ath_pktlog_info *pl_info,
+ bool *read_complete)
{
size_t bufhdr_size;
size_t count = 0, ret_val = 0;
@@ -696,8 +705,12 @@ pktlog_read_proc_entry(char *buf, size_t nbytes, loff_t *ppos,
int fold_offset, ppos_data, cur_rd_offset, cur_wr_offset;
struct ath_pktlog_buf *log_buf = pl_info->buf;
- if (log_buf == NULL)
+ *read_complete = false;
+
+ if (log_buf == NULL) {
+ *read_complete = true;
return 0;
+ }
if (*ppos == 0 && pl_info->log_state) {
pl_info->saved_state = pl_info->log_state;
@@ -803,11 +816,14 @@ rd_done:
* So, if some data is written into, lets not reset the pointers.
* We can continue to read from the offset position
*/
- if (cur_wr_offset == log_buf->wr_offset) {
+ if (cur_wr_offset != log_buf->wr_offset) {
+ *read_complete = false;
+ } else {
pl_info->buf->rd_offset = -1;
pl_info->buf->wr_offset = 0;
pl_info->buf->bytes_written = 0;
pl_info->buf->offset = PKTLOG_READ_OFFSET;
+ *read_complete = true;
}
PKTLOG_UNLOCK(pl_info);
}
diff --git a/CORE/UTILS/PKTLOG/pktlog_internal.c b/CORE/UTILS/PKTLOG/pktlog_internal.c
index c22c7f474e7a..7560da0a7609 100644
--- a/CORE/UTILS/PKTLOG/pktlog_internal.c
+++ b/CORE/UTILS/PKTLOG/pktlog_internal.c
@@ -105,6 +105,7 @@ pktlog_getbuf_intsafe(struct ath_pktlog_arg *plarg)
while ((cur_wr_offset <= log_buf->rd_offset)
&& (cur_wr_offset + log_size) > log_buf->rd_offset) {
+ printk("%s: Buffer overflow\n", __func__);
PKTLOG_MOV_RD_IDX(log_buf->rd_offset, log_buf,
buf_size);
}
diff --git a/CORE/VOSS/inc/vos_diag_core_log.h b/CORE/VOSS/inc/vos_diag_core_log.h
index 10ece90b4bc1..cc579e16f6f1 100644
--- a/CORE/VOSS/inc/vos_diag_core_log.h
+++ b/CORE/VOSS/inc/vos_diag_core_log.h
@@ -66,6 +66,9 @@ extern "C" {
#define VOS_LOG_MAX_WOW_PTRN_MASK_SIZE 16
#define VOS_LOG_PKT_LOG_SIZE 2048
+/* Version to be updated whenever format of vos_log_pktlog_info changes */
+#define VERSION_LOG_WLAN_PKT_LOG_INFO_C 1
+
/*---------------------------------------------------------------------------
This packet contains the scan results of the recent scan operation
LOG_WLAN_SCAN_C 0x1496
@@ -378,6 +381,7 @@ typedef struct
*/
struct vos_log_pktlog_info {
log_hdr_type log_hdr;
+ uint32_t version;
uint32_t seq_no;
uint32_t buf_len;
uint8_t buf[];