summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnjaneedevi Kapparapu <akappa@codeaurora.org>2014-12-02 14:34:22 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2014-12-02 14:35:39 +0530
commitd6572e4df23fca8e683e7b588688845cfdd2d8bd (patch)
tree66ad2e55c2b75f19feecc2b3383c9ad7723dd35f
parent79a7c9396071b170feba08dfc8065bdffffb2f8f (diff)
parent954bd96a22c780a9cf0c4791f85fc1831cc79283 (diff)
Release 1.0.0.247 QCACLD WLAN Driver
Merge remote-tracking branch 'origin/caf/caf-wlan/master' * origin/caf/caf-wlan/master: Cafstaging Release 1.0.0.247 qcacld: USB: shorter remove module time for USB3.0 device. qcacld: Changes to reduce number of TIDS/PEER and num_peer_keys qcacld: Add wakelock acquirement/release for non-QC platform qcacld: HIF: Add runtime power management API for HIF qcacld: get the correct RSSI/signal level of the connected AP qcacld: Consistently use MHF nomenclature qcacld: prop: remove pronto specific extended IBSS changes qcacld: UMAC: Update dot11f files for missing changes wlan: SAP: HT IE's advertised in 11a mode Change-Id: I343e9ab63c45868313b685e81c0955837ab4705b
-rw-r--r--CORE/HDD/src/wlan_hdd_p2p.c2
-rw-r--r--CORE/HDD/src/wlan_hdd_scan.c15
-rw-r--r--CORE/MAC/inc/qwlan_version.h4
-rw-r--r--CORE/MAC/inc/sirMacProtDef.h3
-rw-r--r--CORE/MAC/src/include/dot11f.h2
-rw-r--r--CORE/MAC/src/pe/lim/limLogDump.c1
-rw-r--r--CORE/MAC/src/pe/lim/limProcessActionFrame.c3
-rw-r--r--CORE/MAC/src/pe/lim/limProcessMessageQueue.c1
-rw-r--r--CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c1
-rw-r--r--CORE/SAP/src/sapFsm.c2
-rw-r--r--CORE/SERVICES/COMMON/hif.h4
-rw-r--r--CORE/SERVICES/COMMON/wlan_tgt_def_config.h2
-rw-r--r--CORE/SERVICES/COMMON/wmi_unified.h14
-rw-r--r--CORE/SERVICES/HIF/PCIe/if_pci.c10
-rw-r--r--CORE/SERVICES/HIF/USB/if_usb.c35
-rw-r--r--CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c11
-rw-r--r--CORE/SERVICES/WMA/wma.c2
-rw-r--r--CORE/SERVICES/WMI/wmi_unified.c6
-rw-r--r--CORE/SME/inc/csrInternal.h1
-rw-r--r--CORE/SYS/legacy/src/utils/src/dot11f.c37
-rw-r--r--CORE/VOSS/src/vos_lock.c10
-rw-r--r--CORE/WDA/inc/wlan_qct_wda.h1
-rw-r--r--Kbuild1
23 files changed, 125 insertions, 43 deletions
diff --git a/CORE/HDD/src/wlan_hdd_p2p.c b/CORE/HDD/src/wlan_hdd_p2p.c
index 4005218712a1..d01303366506 100644
--- a/CORE/HDD/src/wlan_hdd_p2p.c
+++ b/CORE/HDD/src/wlan_hdd_p2p.c
@@ -75,7 +75,7 @@ static tANI_U8* hdd_getActionString(tANI_U16 MsgType)
CASE_RETURN_STRING(SIR_MAC_ACTION_UNPROT_WNM);
CASE_RETURN_STRING(SIR_MAC_ACTION_TDLS);
CASE_RETURN_STRING(SIR_MAC_ACITON_MESH);
- CASE_RETURN_STRING(SIR_MAC_ACTION_MULTIHOP);
+ CASE_RETURN_STRING(SIR_MAC_ACTION_MHF);
CASE_RETURN_STRING(SIR_MAC_SELF_PROTECTED);
CASE_RETURN_STRING(SIR_MAC_ACTION_WME);
CASE_RETURN_STRING(SIR_MAC_ACTION_VHT);
diff --git a/CORE/HDD/src/wlan_hdd_scan.c b/CORE/HDD/src/wlan_hdd_scan.c
index 922732693199..3de47879f822 100644
--- a/CORE/HDD/src/wlan_hdd_scan.c
+++ b/CORE/HDD/src/wlan_hdd_scan.c
@@ -479,20 +479,7 @@ static eHalStatus hdd_IndicateScanResult(hdd_scan_info_t *scanInfo, tCsrScanResu
event.u.qual.qual = descriptor->rssi;
event.u.qual.noise = descriptor->sinr;
- /*To keep the rssi icon of the connected AP in the scan window
- *and the rssi icon of the wireless networks in sync */
- if (( eConnectionState_Associated ==
- pAdapter->sessionCtx.station.conn_info.connState ) &&
- ( VOS_TRUE == vos_mem_compare(descriptor->bssId,
- pAdapter->sessionCtx.station.conn_info.bssId,
- VOS_MAC_ADDR_SIZE)))
- {
- event.u.qual.level = pAdapter->rssi;
- }
- else
- {
- event.u.qual.level = VOS_MIN ((descriptor->rssi + descriptor->sinr), 0);
- }
+ event.u.qual.level = VOS_MIN ((descriptor->rssi + descriptor->sinr), 0);
event.u.qual.updated = IW_QUAL_ALL_UPDATED;
diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h
index 12317a94a116..afd45f322d39 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 0
#define QWLAN_VERSION_EXTRA ""
-#define QWLAN_VERSION_BUILD 246
+#define QWLAN_VERSION_BUILD 247
-#define QWLAN_VERSIONSTR "1.0.0.246"
+#define QWLAN_VERSIONSTR "1.0.0.247"
#define AR6320_REV1_VERSION 0x5000000
diff --git a/CORE/MAC/inc/sirMacProtDef.h b/CORE/MAC/inc/sirMacProtDef.h
index bf638f172e8e..084fab729147 100644
--- a/CORE/MAC/inc/sirMacProtDef.h
+++ b/CORE/MAC/inc/sirMacProtDef.h
@@ -140,7 +140,7 @@
#define SIR_MAC_ACTION_UNPROT_WNM 11
#define SIR_MAC_ACTION_TDLS 12
#define SIR_MAC_ACITON_MESH 13
-#define SIR_MAC_ACTION_MULTIHOP 14
+#define SIR_MAC_ACTION_MHF 14
#define SIR_MAC_SELF_PROTECTED 15
#define SIR_MAC_ACTION_WME 17
#define SIR_MAC_ACTION_VHT 21
@@ -2243,7 +2243,6 @@ typedef struct sSirMacRadioMeasureReport
#define SIR_MAC_MIN_IE_LEN 2 // Minimum IE length for IE validation
-
#define SIR_MAC_TI_TYPE_REASSOC_DEADLINE 1
#define SIR_MAC_TI_TYPE_KEY_LIFETIME 2
#define SIR_MAC_TI_TYPE_ASSOC_COMEBACK 3
diff --git a/CORE/MAC/src/include/dot11f.h b/CORE/MAC/src/include/dot11f.h
index 9dc58199951b..36dabd9dc391 100644
--- a/CORE/MAC/src/include/dot11f.h
+++ b/CORE/MAC/src/include/dot11f.h
@@ -37,7 +37,7 @@
*
*
* This file was automatically generated by 'framesc'
- * Thu Nov 27 16:19:21 2014 from the following file(s):
+ * Mon Dec 1 15:21:01 2014 from the following file(s):
*
* dot11f.frms
*
diff --git a/CORE/MAC/src/pe/lim/limLogDump.c b/CORE/MAC/src/pe/lim/limLogDump.c
index a8f112649f87..5af6518cf883 100644
--- a/CORE/MAC/src/pe/lim/limLogDump.c
+++ b/CORE/MAC/src/pe/lim/limLogDump.c
@@ -2047,7 +2047,6 @@ dump_lim_get_pkts_rcvd_per_rssi_values( tpAniSirGlobal pMac, tANI_U32 arg1, tANI
}
#endif
-
#if defined(FEATURE_WLAN_ESE) && defined(FEATURE_WLAN_ESE_UPLOAD)
static char *
dump_send_plm_start(tpAniSirGlobal pMac, tANI_U32 arg1, tANI_U32 arg2,
diff --git a/CORE/MAC/src/pe/lim/limProcessActionFrame.c b/CORE/MAC/src/pe/lim/limProcessActionFrame.c
index e0e56bccec4a..b4d3e78dd3c0 100644
--- a/CORE/MAC/src/pe/lim/limProcessActionFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessActionFrame.c
@@ -2235,8 +2235,7 @@ limProcessActionFrame(tpAniSirGlobal pMac, tANI_U8 *pRxPacketInfo,tpPESession ps
psessionEntry->smeSessionId,
WDA_GET_RX_CH( pRxPacketInfo ), psessionEntry, 0);
}
- else
- {
+ else {
limLog( pMac, LOGE, FL("Dropping the vendor specific action frame because of( "
"WES Mode not enabled (WESMODE = %d) or OUI mismatch (%02x %02x %02x) or "
"not received with SelfSta Mac address) system role = %d"),
diff --git a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
index e0abca44ee8c..2c92936b4d61 100644
--- a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
+++ b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
@@ -70,7 +70,6 @@
#include "limFT.h"
#endif
-
#include "vos_types.h"
#include "vos_packet.h"
#include "vos_memory.h"
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index 96d8029ead4c..7befe6556f71 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -5883,7 +5883,6 @@ limProcessSmeReqMessages(tpAniSirGlobal pMac, tpSirMsgQ pMsg)
limSendSetTxPowerReq(pMac, pMsgBuf);
break ;
-
case eWNI_SME_CHANNEL_CHANGE_REQ:
limProcessSmeChannelChangeRequest(pMac, pMsgBuf);
break;
diff --git a/CORE/SAP/src/sapFsm.c b/CORE/SAP/src/sapFsm.c
index dd78a44146de..2b5ba202010c 100644
--- a/CORE/SAP/src/sapFsm.c
+++ b/CORE/SAP/src/sapFsm.c
@@ -3948,6 +3948,8 @@ eCsrPhyMode sapConvertSapPhyModeToCsrPhyMode( eSapPhyMode sapPhyMode )
return eCSR_DOT11_MODE_11g;
case (eSAP_DOT11_MODE_11n):
return eCSR_DOT11_MODE_11n;
+ case (eSAP_DOT11_MODE_11a):
+ return eCSR_DOT11_MODE_11a;
case (eSAP_DOT11_MODE_11g_ONLY):
return eCSR_DOT11_MODE_11g_ONLY;
case (eSAP_DOT11_MODE_11n_ONLY):
diff --git a/CORE/SERVICES/COMMON/hif.h b/CORE/SERVICES/COMMON/hif.h
index 4f912ef650ea..a7a468ca7560 100644
--- a/CORE/SERVICES/COMMON/hif.h
+++ b/CORE/SERVICES/COMMON/hif.h
@@ -822,6 +822,10 @@ void HIFIpaGetCEResource(HIF_DEVICE *hif_device,
#endif /* IPA_UC_OFFLOAD */
void HIFSetMailboxSwap(HIF_DEVICE *device);
+
+/* runtime power management API of HIF to prevent suspending */
+int hif_pm_runtime_get(void);
+int hif_pm_runtime_put(void);
#ifdef __cplusplus
}
#endif
diff --git a/CORE/SERVICES/COMMON/wlan_tgt_def_config.h b/CORE/SERVICES/COMMON/wlan_tgt_def_config.h
index 0438eff2c862..163962572828 100644
--- a/CORE/SERVICES/COMMON/wlan_tgt_def_config.h
+++ b/CORE/SERVICES/COMMON/wlan_tgt_def_config.h
@@ -101,7 +101,7 @@
/*
* keys per peer node
*/
-#define CFG_TGT_NUM_PEER_KEYS 2
+#define CFG_TGT_NUM_PEER_KEYS 1
/*
* total number of data TX and RX TIDs
*/
diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h
index 5a5b7c7810d0..045f16d045e4 100644
--- a/CORE/SERVICES/COMMON/wmi_unified.h
+++ b/CORE/SERVICES/COMMON/wmi_unified.h
@@ -640,10 +640,10 @@ typedef enum {
* configures/finetunes RMC algorithms */
WMI_RMC_CONFIG_CMDID,
- /** WLAN multihop forwarding (MHF) offload commands */
- /** enable/disable multihop forwarding offload */
+ /** WLAN MHF offload commands */
+ /** enable/disable MHF offload */
WMI_MHF_OFFLOAD_SET_MODE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MHF_OFL),
- /** Plumb routing table for multihop forwarding offload */
+ /** Plumb routing table for MHF offload */
WMI_MHF_OFFLOAD_PLUMB_ROUTING_TBL_CMDID,
/*location scan commands*/
@@ -7672,9 +7672,9 @@ typedef struct {
* the next hop using next hop's mac address. This is a vendor
* proprietary feature. */
enum wmi_mhf_ofl_mode {
- /** Disable multihop forwarding offload */
+ /** Disable MHF offload */
WMI_MHF_OFL_MODE_DISABLED = 0,
- /** Enable multihop forwarding offload */
+ /** Enable MHF offload */
WMI_MHF_OFL_MODE_ENABLED = 1,
};
@@ -7692,9 +7692,9 @@ typedef struct {
enum wmi_mhf_ofl_table_action {
/** Create forwarding offload table in FW */
WMI_MHF_OFL_TBL_CREATE = 0,
- /** Append to existing multihop forwarding offload table */
+ /** Append to existing MFF table */
WMI_MHF_OFL_TBL_APPEND = 1,
- /** Flush entire multihop forwarding offload table in FW */
+ /** Flush entire MHF offload table in FW */
WMI_MHF_OFL_TBL_FLUSH = 2,
};
diff --git a/CORE/SERVICES/HIF/PCIe/if_pci.c b/CORE/SERVICES/HIF/PCIe/if_pci.c
index abf02f21bec9..271a7d830ad8 100644
--- a/CORE/SERVICES/HIF/PCIe/if_pci.c
+++ b/CORE/SERVICES/HIF/PCIe/if_pci.c
@@ -2213,6 +2213,16 @@ void hif_set_fw_info(void *ol_sc, u32 target_fw_version)
((struct ol_softc *)ol_sc)->target_fw_version = target_fw_version;
}
+int hif_pm_runtime_get(void)
+{
+ return 0;
+}
+
+int hif_pm_runtime_put(void)
+{
+ return 0;
+}
+
#ifdef IPA_UC_OFFLOAD
/* Micro controller needs PCI BAR address to access CE register */
void hif_read_bar(struct hif_pci_softc *sc, u32 *bar_value)
diff --git a/CORE/SERVICES/HIF/USB/if_usb.c b/CORE/SERVICES/HIF/USB/if_usb.c
index da81b57debdf..cf0c41368ca8 100644
--- a/CORE/SERVICES/HIF/USB/if_usb.c
+++ b/CORE/SERVICES/HIF/USB/if_usb.c
@@ -223,6 +223,7 @@ err_alloc:
static void hif_usb_remove(struct usb_interface *interface)
{
HIF_DEVICE_USB *device = usb_get_intfdata(interface);
+ struct usb_device *udev = interface_to_usbdev(interface);
struct hif_usb_softc *sc = device->sc;
struct ol_softc *scn;
@@ -239,12 +240,20 @@ static void hif_usb_remove(struct usb_interface *interface)
set_current_state(TASK_RUNNING);
usb_sc->hdd_removed_wait_cnt ++;
}
- /* do cold reset */
- HIFDiagWriteCOLDRESET(sc->hif_device);
- /* wait for target jump to boot code and finish the initialization */
+
+ /* disable lpm to avoid following cold reset will
+ *cause xHCI U1/U2 timeout
+ */
+ usb_disable_lpm(udev);
+
+ /* wait for disable lpm */
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(msecs_to_jiffies(DELAY_FOR_TARGET_READY));
set_current_state(TASK_RUNNING);
+
+ /* do cold reset */
+ HIFDiagWriteCOLDRESET(sc->hif_device);
+
if (usb_sc->suspend_state) {
hif_usb_resume(usb_sc->interface);
}
@@ -628,4 +637,24 @@ void hif_set_fw_info(void *ol_sc, u32 target_fw_version)
{
((struct ol_softc *)ol_sc)->target_fw_version = target_fw_version;
}
+
+int hif_pm_runtime_get(void)
+{
+ if (usb_sc && usb_sc->interface)
+ return usb_autopm_get_interface_async(usb_sc->interface);
+ else {
+ pr_err("%s: USB interface isn't ready for autopm\n", __func__);
+ return 0;
+ }
+}
+
+int hif_pm_runtime_put(void)
+{
+ if (usb_sc && usb_sc->interface)
+ usb_autopm_put_interface_async(usb_sc->interface);
+ else
+ pr_err("%s: USB interface isn't ready for autopm\n", __func__);
+ return 0;
+}
+
MODULE_LICENSE("Dual BSD/GPL");
diff --git a/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c b/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c
index 35587178b5dc..d9fac19bfe3c 100644
--- a/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c
+++ b/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c
@@ -434,3 +434,14 @@ void hif_set_fw_info(void *ol_sc, u32 target_fw_version)
{
((struct ol_softc *)ol_sc)->target_fw_version = target_fw_version;
}
+
+int hif_pm_runtime_get(void)
+{
+ return 0;
+}
+
+int hif_pm_runtime_put(void)
+{
+ return 0;
+}
+
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index 57d5c816eb49..5d8ac2a43def 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -1144,7 +1144,7 @@ static v_VOID_t wma_set_default_tgt_config(tp_wma_handle wma_handle)
}
no_of_peers_supported = ol_get_number_of_peers_supported(scn);
tgt_cfg.num_peers = no_of_peers_supported + CFG_TGT_NUM_VDEV + 2;
- tgt_cfg.num_tids = (2 * (no_of_peers_supported + CFG_TGT_NUM_VDEV + 2));
+ tgt_cfg.num_tids = no_of_peers_supported + CFG_TGT_NUM_VDEV + 2;
WMITLV_SET_HDR(&tgt_cfg.tlv_header,WMITLV_TAG_STRUC_wmi_resource_config,
WMITLV_GET_STRUCT_TLVLEN(wmi_resource_config));
diff --git a/CORE/SERVICES/WMI/wmi_unified.c b/CORE/SERVICES/WMI/wmi_unified.c
index 7b8e25ae8804..aceb34238c2a 100644
--- a/CORE/SERVICES/WMI/wmi_unified.c
+++ b/CORE/SERVICES/WMI/wmi_unified.c
@@ -537,10 +537,10 @@ static u_int8_t* get_wmi_cmd_string(WMI_CMD_ID wmi_command)
* configures/finetunes RMC algorithms */
CASE_RETURN_STRING(WMI_RMC_CONFIG_CMDID);
- /** WLAN multihop forwarding (MHF) offload commands */
- /** enable/disable multihop forwarding offload */
+ /** WLAN MHF offload commands */
+ /** enable/disable MHF offload */
CASE_RETURN_STRING(WMI_MHF_OFFLOAD_SET_MODE_CMDID);
- /** Plumb routing table for multihop forwarding offload */
+ /** Plumb routing table for MHF offload */
CASE_RETURN_STRING(WMI_MHF_OFFLOAD_PLUMB_ROUTING_TBL_CMDID);
/*location scan commands*/
diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h
index d1f9de4559d4..15283be7d679 100644
--- a/CORE/SME/inc/csrInternal.h
+++ b/CORE/SME/inc/csrInternal.h
@@ -1482,7 +1482,6 @@ eHalStatus csrHandoffRequest(tpAniSirGlobal pMac, tANI_U8 sessionId,
tANI_BOOLEAN csrRoamIsStaMode(tpAniSirGlobal pMac, tANI_U32 sessionId);
#endif
-
/* Post Channel Change Indication */
eHalStatus csrRoamChannelChangeReq(tpAniSirGlobal pMac, tCsrBssid bssid,
tANI_U8 targetChannel, tANI_U8 cbMode,
diff --git a/CORE/SYS/legacy/src/utils/src/dot11f.c b/CORE/SYS/legacy/src/utils/src/dot11f.c
index 155ff9edfadd..4e3eba08638a 100644
--- a/CORE/SYS/legacy/src/utils/src/dot11f.c
+++ b/CORE/SYS/legacy/src/utils/src/dot11f.c
@@ -35,7 +35,7 @@
*
*
* This file was automatically generated by 'framesc'
- * Thu Nov 27 16:19:21 2014 from the following file(s):
+ * Mon Dec 1 15:21:01 2014 from the following file(s):
*
* dot11f.frms
*
@@ -2783,6 +2783,9 @@ tANI_U32 dot11fUnpackIeExtCap(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
(void) pBuf; (void)ielen; /* Shutup the compiler */
if (pDst->present) status = DOT11F_DUPLICATE_IE;
pDst->present = 1;
+
+ if (!ielen) /* Check to ensure copying of ielen bytes */
+ goto endUnpackIeExtCap;
tmp33__ = *pBuf;
pBuf += 1;
ielen -= 1;
@@ -2794,6 +2797,9 @@ tANI_U32 dot11fUnpackIeExtCap(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
pDst->reserved3 = tmp33__ >> 5 & 0x1;
pDst->spsmpCap = tmp33__ >> 6 & 0x1;
pDst->event = tmp33__ >> 7 & 0x1;
+
+ if (!ielen) /* Check to ensure copying of ielen bytes */
+ goto endUnpackIeExtCap;
tmp34__ = *pBuf;
pBuf += 1;
ielen -= 1;
@@ -2805,6 +2811,9 @@ tANI_U32 dot11fUnpackIeExtCap(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
pDst->coLocIntfReporting = tmp34__ >> 5 & 0x1;
pDst->civicLoc = tmp34__ >> 6 & 0x1;
pDst->geospatialLoc = tmp34__ >> 7 & 0x1;
+
+ if (!ielen) /* Check to ensure copying of ielen bytes */
+ goto endUnpackIeExtCap;
tmp35__ = *pBuf;
pBuf += 1;
ielen -= 1;
@@ -2816,6 +2825,9 @@ tANI_U32 dot11fUnpackIeExtCap(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
pDst->acStaCnt = tmp35__ >> 5 & 0x1;
pDst->multiBSSID = tmp35__ >> 6 & 0x1;
pDst->timingMeas = tmp35__ >> 7 & 0x1;
+
+ if (!ielen) /* Check to ensure copying of ielen bytes */
+ goto endUnpackIeExtCap;
tmp36__ = *pBuf;
pBuf += 1;
ielen -= 1;
@@ -2827,6 +2839,9 @@ tANI_U32 dot11fUnpackIeExtCap(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
pDst->TDLSPeerPSMSupp = tmp36__ >> 5 & 0x1;
pDst->TDLSChannelSwitching = tmp36__ >> 6 & 0x1;
pDst->interworkingService = tmp36__ >> 7 & 0x1;
+
+ if (!ielen) /* Check to ensure copying of ielen bytes */
+ goto endUnpackIeExtCap;
tmp37__ = *pBuf;
pBuf += 1;
ielen -= 1;
@@ -2838,6 +2853,9 @@ tANI_U32 dot11fUnpackIeExtCap(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
pDst->TDLSSupport = tmp37__ >> 5 & 0x1;
pDst->TDLSProhibited = tmp37__ >> 6 & 0x1;
pDst->TDLSChanSwitProhibited = tmp37__ >> 7 & 0x1;
+
+ if (!ielen) /* Check to ensure copying of ielen bytes */
+ goto endUnpackIeExtCap;
tmp38__ = *pBuf;
pBuf += 1;
ielen -= 1;
@@ -2847,6 +2865,9 @@ tANI_U32 dot11fUnpackIeExtCap(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
pDst->uapsdCoexistence = tmp38__ >> 5 & 0x1;
pDst->wnmNotification = tmp38__ >> 6 & 0x1;
pDst->QABcapbility = tmp38__ >> 7 & 0x1;
+
+ if (!ielen) /* Check to ensure copying of ielen bytes */
+ goto endUnpackIeExtCap;
tmp39__ = *pBuf;
pBuf += 1;
ielen -= 1;
@@ -2858,6 +2879,9 @@ tANI_U32 dot11fUnpackIeExtCap(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
pDst->MeshGCR = tmp39__ >> 5 & 0x1;
pDst->SCS = tmp39__ >> 6 & 0x1;
pDst->QLoadReport = tmp39__ >> 7 & 0x1;
+
+ if (!ielen) /* Check to ensure copying of ielen bytes */
+ goto endUnpackIeExtCap;
tmp40__ = *pBuf;
pBuf += 1;
ielen -= 1;
@@ -2869,6 +2893,9 @@ tANI_U32 dot11fUnpackIeExtCap(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
pDst->TDLSWiderBW = tmp40__ >> 5 & 0x1;
pDst->operModeNotification = tmp40__ >> 6 & 0x1;
pDst->maxNumOfMSDU_bit1 = tmp40__ >> 7 & 0x1;
+
+ if (!ielen) /* Check to ensure copying of ielen bytes */
+ goto endUnpackIeExtCap;
tmp41__ = *pBuf;
pDst->maxNumOfMSDU_bit2 = tmp41__ >> 0 & 0x1;
pDst->ChanSchMgmt = tmp41__ >> 1 & 0x1;
@@ -2878,6 +2905,8 @@ tANI_U32 dot11fUnpackIeExtCap(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
pDst->ChanAvailQuery = tmp41__ >> 5 & 0x1;
pDst->fineTimingMeas = tmp41__ >> 6 & 0x1;
pDst->reserved7 = tmp41__ >> 7 & 0x1;
+
+endUnpackIeExtCap:
(void)pCtx;
return status;
} /* End dot11fUnpackIeExtCap. */
@@ -19357,7 +19386,11 @@ static tANI_U32 UnpackCore(tpAniSirGlobal pCtx,
status |= dot11fUnpackIeMobilityDomain(pCtx, pBufRemaining, len, ( tDot11fIEMobilityDomain* )(pFrm + pIe->offset + sizeof(tDot11fIEMobilityDomain)*countOffset) );
break;
case SigIeNeighborReport:
- status |= dot11fUnpackIeNeighborReport(pCtx, pBufRemaining, len, ( tDot11fIENeighborReport* )(pFrm + pIe->offset + sizeof(tDot11fIENeighborReport)*countOffset) );
+ if (countOffset < MAX_SUPPORTED_NEIGHBOR_RPT) {
+ status |= dot11fUnpackIeNeighborReport(pCtx, pBufRemaining, len, ( tDot11fIENeighborReport* )(pFrm + pIe->offset + sizeof(tDot11fIENeighborReport)*countOffset) );
+ } else {
+ status |= DOT11F_BUFFER_OVERFLOW;
+ }
break;
case SigIeOBSSScanParameters:
status |= dot11fUnpackIeOBSSScanParameters(pCtx, pBufRemaining, len, ( tDot11fIEOBSSScanParameters* )(pFrm + pIe->offset + sizeof(tDot11fIEOBSSScanParameters)*countOffset) );
diff --git a/CORE/VOSS/src/vos_lock.c b/CORE/VOSS/src/vos_lock.c
index be1137d8824e..3be063c22cad 100644
--- a/CORE/VOSS/src/vos_lock.c
+++ b/CORE/VOSS/src/vos_lock.c
@@ -48,6 +48,8 @@
#include "vos_lock.h"
#include "vos_memory.h"
#include "vos_trace.h"
+#include "vos_api.h"
+#include "hif.h"
#ifdef CONFIG_CNSS
#include <net/cnss.h>
#endif
@@ -521,6 +523,10 @@ VOS_STATUS vos_wake_lock_acquire(vos_wake_lock_t *pLock)
cnss_pm_wake_lock(pLock);
#elif defined(WLAN_OPEN_SOURCE) && defined(CONFIG_HAS_WAKELOCK)
wake_lock(pLock);
+#elif defined(CONFIG_NON_QC_PLATFORM)
+#if defined(QCA_WIFI_2_0) && !defined(QCA_WIFI_ISOC)
+ hif_pm_runtime_get();
+#endif
#endif
return VOS_STATUS_SUCCESS;
}
@@ -559,6 +565,10 @@ VOS_STATUS vos_wake_lock_release(vos_wake_lock_t *pLock)
cnss_pm_wake_lock_release(pLock);
#elif defined(WLAN_OPEN_SOURCE) && defined(CONFIG_HAS_WAKELOCK)
wake_unlock(pLock);
+#elif defined(CONFIG_NON_QC_PLATFORM)
+#if defined(QCA_WIFI_2_0) && !defined(QCA_WIFI_ISOC)
+ hif_pm_runtime_put();
+#endif
#endif
return VOS_STATUS_SUCCESS;
}
diff --git a/CORE/WDA/inc/wlan_qct_wda.h b/CORE/WDA/inc/wlan_qct_wda.h
index 4adeca3d5e24..f07fff3a1201 100644
--- a/CORE/WDA/inc/wlan_qct_wda.h
+++ b/CORE/WDA/inc/wlan_qct_wda.h
@@ -919,6 +919,7 @@ tSirRetStatus uMacPostCtrlMsg(void* pSirGlobal, tSirMbMsg* pMb);
#define WDA_INIT_THERMAL_INFO_CMD SIR_HAL_INIT_THERMAL_INFO_CMD
#define WDA_SET_THERMAL_LEVEL SIR_HAL_SET_THERMAL_LEVEL
+
#ifdef FEATURE_WLAN_BATCH_SCAN
#define WDA_SET_BATCH_SCAN_REQ SIR_HAL_SET_BATCH_SCAN_REQ
#define WDA_SET_BATCH_SCAN_RSP SIR_HAL_SET_BATCH_SCAN_RSP
diff --git a/Kbuild b/Kbuild
index 8b099d092747..2cf5124fc90a 100644
--- a/Kbuild
+++ b/Kbuild
@@ -1310,6 +1310,7 @@ endif
# Enable target dump for non-qualcomm platform
ifeq ($(CONFIG_NON_QC_PLATFORM), y)
+CDEFINES += -DCONFIG_NON_QC_PLATFORM
ifeq ($(CONFIG_CLD_HL_SDIO_CORE), y)
CDEFINES += -DTARGET_DUMP_FOR_NON_QC_PLATFORM
endif