diff options
| author | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2014-12-02 14:34:22 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2014-12-02 14:35:39 +0530 |
| commit | d6572e4df23fca8e683e7b588688845cfdd2d8bd (patch) | |
| tree | 66ad2e55c2b75f19feecc2b3383c9ad7723dd35f | |
| parent | 79a7c9396071b170feba08dfc8065bdffffb2f8f (diff) | |
| parent | 954bd96a22c780a9cf0c4791f85fc1831cc79283 (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.c | 2 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_scan.c | 15 | ||||
| -rw-r--r-- | CORE/MAC/inc/qwlan_version.h | 4 | ||||
| -rw-r--r-- | CORE/MAC/inc/sirMacProtDef.h | 3 | ||||
| -rw-r--r-- | CORE/MAC/src/include/dot11f.h | 2 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limLogDump.c | 1 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessActionFrame.c | 3 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessMessageQueue.c | 1 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c | 1 | ||||
| -rw-r--r-- | CORE/SAP/src/sapFsm.c | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/hif.h | 4 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wlan_tgt_def_config.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_unified.h | 14 | ||||
| -rw-r--r-- | CORE/SERVICES/HIF/PCIe/if_pci.c | 10 | ||||
| -rw-r--r-- | CORE/SERVICES/HIF/USB/if_usb.c | 35 | ||||
| -rw-r--r-- | CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c | 11 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/WMI/wmi_unified.c | 6 | ||||
| -rw-r--r-- | CORE/SME/inc/csrInternal.h | 1 | ||||
| -rw-r--r-- | CORE/SYS/legacy/src/utils/src/dot11f.c | 37 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_lock.c | 10 | ||||
| -rw-r--r-- | CORE/WDA/inc/wlan_qct_wda.h | 1 | ||||
| -rw-r--r-- | Kbuild | 1 |
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 @@ -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 |
