summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkash Patel <akashp@codeaurora.org>2015-05-01 11:11:15 -0700
committerAkash Patel <akashp@codeaurora.org>2015-05-01 11:12:06 -0700
commitb203a120d28cdf5ac4e3e3594955032c8d4b4793 (patch)
tree1e4a16f5a09a6f6fc7992c6e6d37d7316b40eb24
parent26385760a5abef4b3dd2e3f5662cb7274f06a5fa (diff)
parentfc6bf73c153998ba93caac082c2274891fa8ee86 (diff)
Release 4.0.10.89 QCACLD WLAN Driver
Merge remote-tracking branch 'origin/caf/caf-wlan/master' into HEAD * origin/caf/caf-wlan/master: Cafstaging Release 4.0.10.89 qcacld: Fix memory overwrite in struct join response and start bss qcacld: Use different variable to check Blacklist BSSID qcacld: configure tsf gpio pin qcacld-2.0: Use the correct Max WMI length in set_bssid_hotlist qcacld: Fix assert in FTM mode qcacld: Fix length calculation for bss descriptor qcacld: Provide tsf_delta to user space application qcacld: Update fine timing measurement capabilities qca-cld: ipa-uc: first connection and IPA resource grant race fix Change-Id: I2e23d9c3a607126b57d7a0d2bfc7829d23a3ef8d
-rw-r--r--CORE/CLD_TXRX/TLSHIM/tl_shim.c9
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg.h7
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg80211.h3
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg.c8
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c1
-rw-r--r--CORE/HDD/src/wlan_hdd_ipa.c16
-rwxr-xr-xCORE/HDD/src/wlan_hdd_main.c8
-rw-r--r--CORE/HDD/src/wlan_hdd_memdump.c10
-rw-r--r--CORE/MAC/inc/qwlan_version.h4
-rw-r--r--CORE/MAC/inc/sirApi.h9
-rw-r--r--CORE/MAC/src/cfg/cfgUtil/dot11f.frms1
-rw-r--r--CORE/MAC/src/include/dot11f.h3
-rw-r--r--CORE/MAC/src/include/parserApi.h4
-rw-r--r--CORE/MAC/src/include/sirParams.h2
-rw-r--r--CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c8
-rw-r--r--CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c8
-rw-r--r--CORE/MAC/src/pe/lim/limScanResultUtils.c26
-rw-r--r--CORE/MAC/src/pe/lim/limSendManagementFrames.c15
-rw-r--r--CORE/MAC/src/pe/lim/limUtils.c8
-rw-r--r--CORE/SERVICES/COMMON/wmi_unified_api.h2
-rw-r--r--CORE/SERVICES/WMA/wma.c66
-rw-r--r--CORE/SERVICES/WMI/wmi_unified.c14
-rw-r--r--CORE/SME/inc/sme_Api.h10
-rw-r--r--CORE/SME/src/csr/csrUtil.c8
-rw-r--r--CORE/SME/src/sme_common/sme_Api.c35
-rw-r--r--CORE/SYS/legacy/src/utils/src/dot11f.c23
-rw-r--r--CORE/SYS/legacy/src/utils/src/parserApi.c14
-rw-r--r--CORE/VOSS/inc/i_vos_packet.h3
-rw-r--r--CORE/WDA/inc/wlan_qct_wda.h4
29 files changed, 255 insertions, 74 deletions
diff --git a/CORE/CLD_TXRX/TLSHIM/tl_shim.c b/CORE/CLD_TXRX/TLSHIM/tl_shim.c
index c335eae90918..0941c4c71257 100644
--- a/CORE/CLD_TXRX/TLSHIM/tl_shim.c
+++ b/CORE/CLD_TXRX/TLSHIM/tl_shim.c
@@ -575,6 +575,7 @@ static int tlshim_mgmt_rx_process(void *context, u_int8_t *data,
rx_pkt->pkt_meta.mpdu_hdr_ptr = adf_nbuf_data(wbuf);
rx_pkt->pkt_meta.mpdu_data_ptr = rx_pkt->pkt_meta.mpdu_hdr_ptr +
rx_pkt->pkt_meta.mpdu_hdr_len;
+ rx_pkt->pkt_meta.tsf_delta = hdr->tsf_delta;
rx_pkt->pkt_buf = wbuf;
#ifdef BIG_ENDIAN_HOST
@@ -602,10 +603,10 @@ static int tlshim_mgmt_rx_process(void *context, u_int8_t *data,
#endif
TLSHIM_LOGD(
- "%s: BSSID: "MAC_ADDRESS_STR" snr = %d, rssi = %d, rssi_raw = %d",
- __func__, MAC_ADDR_ARRAY(wh->i_addr3),
- hdr->snr, rx_pkt->pkt_meta.rssi,
- rx_pkt->pkt_meta.rssi_raw);
+ FL("BSSID: "MAC_ADDRESS_STR" snr = %d, rssi = %d, rssi_raw = %d tsf_delta: %u"),
+ MAC_ADDR_ARRAY(wh->i_addr3), hdr->snr,
+ rx_pkt->pkt_meta.rssi,
+ rx_pkt->pkt_meta.rssi_raw, hdr->tsf_delta);
if (!tl_shim->mgmt_rx) {
TLSHIM_LOGE("Not registered for Mgmt rx, dropping the frame");
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 5968e95c4485..689737e11cb4 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -2780,6 +2780,12 @@ enum dot11p_mode {
#define CFG_INFORM_BSS_RSSI_RAW_MAX (1)
#define CFG_INFORM_BSS_RSSI_RAW_DEFAULT (1)
+/* GPIO pin to toogle when capture tsf */
+#define CFG_SET_TSF_GPIO_PIN_NAME "gtsf_gpio_pin"
+#define CFG_SET_TSF_GPIO_PIN_MIN (0)
+#define CFG_SET_TSF_GPIO_PIN_MAX (255)
+#define CFG_SET_TSF_GPIO_PIN_DEFAULT (34)
+
/*---------------------------------------------------------------------------
Type declarations
-------------------------------------------------------------------------*/
@@ -3381,6 +3387,7 @@ typedef struct
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
uint8_t prefer_non_dfs_on_radar;
uint8_t inform_bss_rssi_raw;
+ uint32_t tsf_gpio_pin;
} hdd_config_t;
#ifdef WLAN_FEATURE_MBSSID
diff --git a/CORE/HDD/inc/wlan_hdd_cfg80211.h b/CORE/HDD/inc/wlan_hdd_cfg80211.h
index 097539cde034..7ca9cdb59d6f 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg80211.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg80211.h
@@ -93,7 +93,7 @@
#define QCOM_OUI2 0xA0
#define QCOM_OUI3 0xC6
#define QCOM_VENDOR_IE_AGE_TYPE 0x100
-#define QCOM_VENDOR_IE_AGE_LEN 11
+#define QCOM_VENDOR_IE_AGE_LEN (sizeof(qcom_ie_age) - 2)
#ifdef FEATURE_WLAN_TDLS
#define WLAN_IS_TDLS_SETUP_ACTION(action) \
@@ -113,6 +113,7 @@ typedef struct {
u8 oui_3;
u32 type;
u32 age;
+ u32 tsf_delta;
}__attribute__((packed)) qcom_ie_age ;
#endif
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index 9564fa809231..1ca006b4f6a7 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -3637,6 +3637,14 @@ REG_TABLE_ENTRY g_registry_table[] =
CFG_INFORM_BSS_RSSI_RAW_DEFAULT,
CFG_INFORM_BSS_RSSI_RAW_MIN,
CFG_INFORM_BSS_RSSI_RAW_MAX),
+#ifdef WLAN_FEATURE_TSF
+ REG_VARIABLE(CFG_SET_TSF_GPIO_PIN_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, tsf_gpio_pin,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_SET_TSF_GPIO_PIN_DEFAULT,
+ CFG_SET_TSF_GPIO_PIN_MIN,
+ CFG_SET_TSF_GPIO_PIN_MAX),
+#endif
};
#ifdef WLAN_FEATURE_MBSSID
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index bf2e0e51a6fe..06575fa3b9b4 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -11549,6 +11549,7 @@ wlan_hdd_cfg80211_inform_bss_frame( hdd_adapter_t *pAdapter,
qie_age->oui_3 = QCOM_OUI3;
qie_age->type = QCOM_VENDOR_IE_AGE_TYPE;
qie_age->age = vos_timer_get_system_ticks() - bss_desc->nReceivedTime;
+ qie_age->tsf_delta = bss_desc->tsf_delta;
#endif
memcpy(mgmt->u.probe_resp.variable, ie, ie_length);
diff --git a/CORE/HDD/src/wlan_hdd_ipa.c b/CORE/HDD/src/wlan_hdd_ipa.c
index df8f0247c8c6..75d51bc86da8 100644
--- a/CORE/HDD/src/wlan_hdd_ipa.c
+++ b/CORE/HDD/src/wlan_hdd_ipa.c
@@ -888,7 +888,12 @@ static void hdd_ipa_uc_rm_notify_handler(void *context, enum ipa_rm_event event)
switch (event) {
case IPA_RM_RESOURCE_GRANTED:
/* Differed RM Granted */
- hdd_ipa_uc_enable_pipes(hdd_ipa);
+ vos_lock_acquire(&hdd_ipa->event_lock);
+ if ((VOS_FALSE == hdd_ipa->resource_unloading) &&
+ (!hdd_ipa->activated_fw_pipe)) {
+ hdd_ipa_uc_enable_pipes(hdd_ipa);
+ }
+ vos_lock_release(&hdd_ipa->event_lock);
if (hdd_ipa->pending_cons_req) {
ipa_rm_notify_completion(IPA_RM_RESOURCE_GRANTED,
IPA_RM_RESOURCE_WLAN_CONS);
@@ -1854,13 +1859,8 @@ static void hdd_ipa_rm_notify(void *user_data, enum ipa_rm_event event,
/* RM Notification comes with ISR context
* it should be serialized into work queue to avoid
* ISR sleep problem */
- if (hdd_ipa->resource_loading) {
- hdd_ipa->uc_rm_work.event = event;
- schedule_work(&hdd_ipa->uc_rm_work.work);
- } else {
- HDD_IPA_LOG(VOS_TRACE_LEVEL_ERROR,
- "UCResource Grntd with invalid status");
- }
+ hdd_ipa->uc_rm_work.event = event;
+ schedule_work(&hdd_ipa->uc_rm_work.work);
break;
}
#endif /* IPA_UC_OFFLOAD */
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 9aeb4715aa72..2f7fbf9f77a9 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -11216,6 +11216,7 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc)
#endif
hdd_context_t *pHddCtx = NULL;
v_CONTEXT_t pVosContext= NULL;
+ eHalStatus hal_status;
int ret;
int i;
struct wiphy *wiphy;
@@ -11975,6 +11976,13 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc)
"%s: Error setting txlimit in sme", __func__);
}
+ hal_status = sme_set_tsf_gpio(pHddCtx->hHal, pHddCtx->cfg_ini->tsf_gpio_pin);
+
+ if (eHAL_STATUS_SUCCESS != hal_status) {
+ hddLog(VOS_TRACE_LEVEL_ERROR,
+ FL("set tsf GPIO fail"));
+ }
+
#ifdef MSM_PLATFORM
spin_lock_init(&pHddCtx->bus_bw_lock);
vos_timer_init(&pHddCtx->bus_bw_timer,
diff --git a/CORE/HDD/src/wlan_hdd_memdump.c b/CORE/HDD/src/wlan_hdd_memdump.c
index 8192d1e69318..7e06b32fc12c 100644
--- a/CORE/HDD/src/wlan_hdd_memdump.c
+++ b/CORE/HDD/src/wlan_hdd_memdump.c
@@ -477,6 +477,11 @@ int memdump_init(void)
return -EINVAL;
}
+ if (VOS_FTM_MODE == hdd_get_conparam()) {
+ hddLog(LOGE, FL("Not initializing memdump in FTM mode"));
+ return -EINVAL;
+ }
+
cb_status = sme_fw_mem_dump_register_cb(hdd_ctx->hHal,
wlan_hdd_cfg80211_fw_mem_dump_cb);
if (eHAL_STATUS_SUCCESS != cb_status) {
@@ -530,6 +535,11 @@ void memdump_deinit(void) {
return;
}
+ if (VOS_FTM_MODE == hdd_get_conparam()) {
+ hddLog(LOGE, FL("Not deinitializing memdump in FTM mode"));
+ return;
+ }
+
adf_ctx = vos_get_context(VOS_MODULE_ID_ADF, hdd_ctx->pvosContext);
if (!adf_ctx) {
hddLog(LOGE, FL("ADF context is NULL"));
diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h
index 4f06b5a7a510..553537c9d3f6 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 88
+#define QWLAN_VERSION_BUILD 89
-#define QWLAN_VERSIONSTR "4.0.10.88"
+#define QWLAN_VERSIONSTR "4.0.10.89"
#define AR6320_REV1_VERSION 0x5000000
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 13f1f3fbb688..c536a962274f 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -716,6 +716,7 @@ typedef struct sSirBssDescription
tANI_U32 WscIeLen;
tANI_U8 WscIeProbeRsp[WSCIE_PROBE_RSP_LEN];
tANI_U8 reservedPadding4;
+ tANI_U32 tsf_delta;
tANI_U32 ieFields[1];
} tSirBssDescription, *tpSirBssDescription;
@@ -749,10 +750,10 @@ typedef struct sSirSmeStartBssRsp
tSirBssType bssType;//Add new type for WDS mode
tANI_U16 beaconInterval;//Beacon Interval for both type
tANI_U32 staId; /* Station ID for Self */
- tSirBssDescription bssDescription;//Peer BSS description
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
tSirSmeHTProfile HTProfile;
#endif
+ tSirBssDescription bssDescription;//Peer BSS description
} tSirSmeStartBssRsp, *tpSirSmeStartBssRsp;
@@ -1136,10 +1137,11 @@ typedef struct sSirSmeJoinRsp
bool tdls_chan_swit_prohibited;
#endif
- tANI_U8 frames[ 1 ];
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
tSirSmeHTProfile HTProfile;
#endif
+
+ tANI_U8 frames[ 1 ];
} tSirSmeJoinRsp, *tpSirSmeJoinRsp;
/// Definition for Authentication indication from peer
@@ -5792,7 +5794,8 @@ typedef struct
#define RTT_INVALID 0x00
#define RTT_TIMING_MEAS_CAPABILITY 0x01
-#define RTT_FINE_TIMING_MEAS_CAPABILITY 0x02
+#define RTT_FINE_TIME_MEAS_INITIATOR_CAPABILITY 0x02
+#define RTT_FINE_TIME_MEAS_RESPONDER_CAPABILITY 0x03
/* number of neighbor reports that we can handle in Neighbor Report Response */
#define MAX_SUPPORTED_NEIGHBOR_RPT 15
diff --git a/CORE/MAC/src/cfg/cfgUtil/dot11f.frms b/CORE/MAC/src/cfg/cfgUtil/dot11f.frms
index 97740a94f53a..6e021c48b270 100644
--- a/CORE/MAC/src/cfg/cfgUtil/dot11f.frms
+++ b/CORE/MAC/src/cfg/cfgUtil/dot11f.frms
@@ -3368,6 +3368,7 @@ FRAME ProbeRequest // 7.2.3.8
OPTIE WFATPC;
OPTIE P2PProbeReq;
OPTIE VHTCaps;
+ OPTIE ExtCap;
} // End frame ProbeRequest.
FRAME ProbeResponse // 7.2.3.9
diff --git a/CORE/MAC/src/include/dot11f.h b/CORE/MAC/src/include/dot11f.h
index b522dd05e5de..0f9e2a3e057d 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 Mar 19 17:16:31 2015 from the following file(s):
+ * Thu Apr 30 13:39:44 2015 from the following file(s):
*
* dot11f.frms
*
@@ -6795,6 +6795,7 @@ typedef struct sDot11fProbeRequest{
tDot11fIEWFATPC WFATPC;
tDot11fIEP2PProbeReq P2PProbeReq;
tDot11fIEVHTCaps VHTCaps;
+ tDot11fIEExtCap ExtCap;
} tDot11fProbeRequest;
#define DOT11F_PROBEREQUEST ( 36 )
diff --git a/CORE/MAC/src/include/parserApi.h b/CORE/MAC/src/include/parserApi.h
index ffc00b1696eb..03fa7c5fe676 100644
--- a/CORE/MAC/src/include/parserApi.h
+++ b/CORE/MAC/src/include/parserApi.h
@@ -398,8 +398,8 @@ struct s_ext_cap {
uint8_t NwChanControl: 1;
uint8_t WhiteSpaceMap: 1;
uint8_t ChanAvailQuery: 1;
- uint8_t fineTimingMeas: 1;
- uint8_t reserved7: 1;
+ uint8_t fine_time_meas_responder: 1;
+ uint8_t fine_time_meas_initiator: 1;
};
tANI_U8
diff --git a/CORE/MAC/src/include/sirParams.h b/CORE/MAC/src/include/sirParams.h
index 9607a7ce3e22..f235497ec332 100644
--- a/CORE/MAC/src/include/sirParams.h
+++ b/CORE/MAC/src/include/sirParams.h
@@ -711,6 +711,8 @@ typedef struct sSirMbMsgP2p
#define SIR_HAL_START_STOP_PACKET_STATS (SIR_HAL_ITC_MSG_TYPES_BEGIN + 328)
#define SIR_HAL_EXTSCAN_STATUS_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 329)
+#define SIR_HAL_TSF_GPIO_PIN_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 330)
+
#define SIR_HAL_MSG_TYPES_END (SIR_HAL_MSG_TYPES_BEGIN + 0x1FF)
// CFG message types
diff --git a/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c b/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c
index 1825e7adf287..767a25dc2040 100644
--- a/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c
@@ -1384,13 +1384,13 @@ if (limPopulateMatchingRateSet(pMac,
pStaDs->timingMeasCap |= (p_ext_cap->timingMeas)?
RTT_TIMING_MEAS_CAPABILITY:
RTT_INVALID;
- pStaDs->timingMeasCap |= (p_ext_cap->fineTimingMeas)?
- RTT_FINE_TIMING_MEAS_CAPABILITY:
+ pStaDs->timingMeasCap |= (p_ext_cap->fine_time_meas_initiator)?
+ RTT_FINE_TIME_MEAS_INITIATOR_CAPABILITY:
RTT_INVALID;
PELOG1(limLog(pMac, LOG1,
- FL("ExtCap present, timingMeas: %d fineTimingMeas: %d"),
+ FL("ExtCap present, timingMeas: %d ftm_initiator: %d"),
p_ext_cap->timingMeas,
- p_ext_cap->fineTimingMeas);)
+ p_ext_cap->fine_time_meas_initiator);)
}
else
{
diff --git a/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c b/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c
index a98912ee1e29..7237f453f4a7 100644
--- a/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c
@@ -935,13 +935,13 @@ limProcessAssocRspFrame(tpAniSirGlobal pMac, tANI_U8 *pRxPacketInfo, tANI_U8 sub
pStaDs->timingMeasCap |= (p_ext_cap->timingMeas)?
RTT_TIMING_MEAS_CAPABILITY:
RTT_INVALID;
- pStaDs->timingMeasCap |= (p_ext_cap->fineTimingMeas)?
- RTT_FINE_TIMING_MEAS_CAPABILITY:
+ pStaDs->timingMeasCap |= (p_ext_cap->fine_time_meas_initiator)?
+ RTT_FINE_TIME_MEAS_INITIATOR_CAPABILITY:
RTT_INVALID;
PELOG1(limLog(pMac, LOG1,
- FL("ExtCap present, timingMeas: %d fineTimingMeas: %d"),
+ FL("ExtCap present, timingMeas: %d ftm_initiator: %d"),
p_ext_cap->timingMeas,
- p_ext_cap->fineTimingMeas);)
+ p_ext_cap->fine_time_meas_initiator);)
#ifdef FEATURE_WLAN_TDLS
psessionEntry->tdls_prohibited =
p_ext_cap->TDLSProhibited;
diff --git a/CORE/MAC/src/pe/lim/limScanResultUtils.c b/CORE/MAC/src/pe/lim/limScanResultUtils.c
index e622ffc7f00d..8a73b03b4abc 100644
--- a/CORE/MAC/src/pe/lim/limScanResultUtils.c
+++ b/CORE/MAC/src/pe/lim/limScanResultUtils.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2014 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2015 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -177,11 +177,17 @@ limCollectBssDescription(tpAniSirGlobal pMac,
/**
* Length of BSS desription is without length of
* length itself and length of pointer
- * that holds the next BSS description
+ * that holds ieFields
+ *
+ * tSirBssDescription
+ * +--------+---------------------------------+---------------+
+ * | length | other fields | pointer to IEs|
+ * +--------+---------------------------------+---------------+
+ * ^
+ * ieFields
*/
- pBssDescr->length = (tANI_U16)(
- sizeof(tSirBssDescription) - sizeof(tANI_U16) -
- sizeof(tANI_U32) + ieLen);
+ pBssDescr->length = (tANI_U16)(offsetof(tSirBssDescription, ieFields[0]) -
+ sizeof(pBssDescr->length) + ieLen);
// Copy BSS Id
vos_mem_copy((tANI_U8 *) &pBssDescr->bssId,
@@ -250,11 +256,13 @@ limCollectBssDescription(tpAniSirGlobal pMac,
//SINR no longer reported by HW
pBssDescr->sinr = 0;
- limLog(pMac, LOG3,
- FL(MAC_ADDRESS_STR " rssi: normalized = %d, absolute = %d"),
- MAC_ADDR_ARRAY(pHdr->bssId), pBssDescr->rssi, pBssDescr->rssi_raw);
-
pBssDescr->nReceivedTime = (tANI_TIMESTAMP)palGetTickCount(pMac->hHdd);
+ pBssDescr->tsf_delta = WDA_GET_RX_TSF_DELTA(pRxPacketInfo);
+
+ limLog(pMac, LOG1,
+ FL("BSSID: "MAC_ADDRESS_STR " rssi: normalized = %d, absolute = %d tsf_delta = %u"),
+ MAC_ADDR_ARRAY(pHdr->bssId), pBssDescr->rssi, pBssDescr->rssi_raw,
+ pBssDescr->tsf_delta);
#if defined WLAN_FEATURE_VOWIFI
if( fScanning )
diff --git a/CORE/MAC/src/pe/lim/limSendManagementFrames.c b/CORE/MAC/src/pe/lim/limSendManagementFrames.c
index 32dfe14e2baa..be02b54c7923 100644
--- a/CORE/MAC/src/pe/lim/limSendManagementFrames.c
+++ b/CORE/MAC/src/pe/lim/limSendManagementFrames.c
@@ -393,6 +393,7 @@ limSendProbeReqMgmtFrame(tpAniSirGlobal pMac,
tANI_U8 *p2pIe = NULL;
tANI_U8 txFlag = 0;
tANI_U8 smeSessionId = 0;
+ bool isVHTEnabled = false;
@@ -501,19 +502,19 @@ limSendProbeReqMgmtFrame(tpAniSirGlobal pMac,
#ifdef WLAN_FEATURE_11AC
if (psessionEntry != NULL ) {
psessionEntry->vhtCapability = IS_DOT11_MODE_VHT(dot11mode);
- //Include HT Capability IE
- if (psessionEntry->vhtCapability)
- {
+ /* Include VHT Capability IE */
+ if (psessionEntry->vhtCapability) {
PopulateDot11fVHTCaps( pMac, psessionEntry, &pr.VHTCaps );
+ isVHTEnabled = true;
}
- } else {
- if (IS_DOT11_MODE_VHT(dot11mode))
- {
+ } else {
+ if (IS_DOT11_MODE_VHT(dot11mode)) {
PopulateDot11fVHTCaps( pMac, psessionEntry, &pr.VHTCaps );
+ isVHTEnabled = true;
}
}
#endif
-
+ PopulateDot11fExtCap(pMac, isVHTEnabled, &pr.ExtCap, psessionEntry);
// That's it-- now we pack it. First, how much space are we going to
// need?
diff --git a/CORE/MAC/src/pe/lim/limUtils.c b/CORE/MAC/src/pe/lim/limUtils.c
index eff2c6d57b5e..60e4400bc083 100644
--- a/CORE/MAC/src/pe/lim/limUtils.c
+++ b/CORE/MAC/src/pe/lim/limUtils.c
@@ -7948,14 +7948,14 @@ void lim_sap_offload_add_sta(tpAniSirGlobal pmac, tpSirMsgQ lim_msgq)
sta_ds->timingMeasCap |= (p_ext_cap->timingMeas)?
RTT_TIMING_MEAS_CAPABILITY :
RTT_INVALID;
- sta_ds->timingMeasCap |= (p_ext_cap->fineTimingMeas)?
- RTT_FINE_TIMING_MEAS_CAPABILITY :
+ sta_ds->timingMeasCap |= (p_ext_cap->fine_time_meas_initiator)?
+ RTT_FINE_TIME_MEAS_INITIATOR_CAPABILITY :
RTT_INVALID;
PELOG1(limLog(pMac, LOG1,
- FL("ExtCap present, timingMeas: %d fineTimingMeas: %d"),
+ FL("ExtCap present, timingMeas: %d ftm_initiator: %d"),
p_ext_cap->timingMeas,
- p_ext_cap->fineTimingMeas);)
+ p_ext_cap->fine_time_meas_initiator);)
} else {
sta_ds->timingMeasCap = 0;
PELOG1(limLog(pmac, LOG1, FL("ExtCap not present"));)
diff --git a/CORE/SERVICES/COMMON/wmi_unified_api.h b/CORE/SERVICES/COMMON/wmi_unified_api.h
index 7cbcf986d974..db1476cdda46 100644
--- a/CORE/SERVICES/COMMON/wmi_unified_api.h
+++ b/CORE/SERVICES/COMMON/wmi_unified_api.h
@@ -145,4 +145,6 @@ wmi_set_d0wow_flag(wmi_unified_t wmi_handle, A_BOOL flag);
WMA Callback to get the Tx complete for WOW_ENABLE
*/
typedef void (*wma_wow_tx_complete_cbk)(void *scn_handle);
+
+uint16_t wmi_get_max_msg_len(wmi_unified_t wmi_handle);
#endif /* _WMI_UNIFIED_API_H_ */
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index cf34c65d20d2..69b5176707ad 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -22356,6 +22356,47 @@ VOS_STATUS wma_notify_modem_power_state(void *wda_handle,
return VOS_STATUS_SUCCESS;
}
+#ifdef WLAN_FEATURE_TSF
+/**
+ * wma_set_tsf_gpio_pin() - send wmi cmd to configure gpio pin
+ *
+ * @handle: wma handler
+ * @pin: GPIO pin id
+ *
+ * Return: VOS_STATUS
+ */
+static VOS_STATUS wma_set_tsf_gpio_pin(WMA_HANDLE handle,
+ uint32_t pin)
+{
+ tp_wma_handle wma = (tp_wma_handle)handle;
+ int32_t ret;
+
+ if (!wma || !wma->wmi_handle) {
+ WMA_LOGE("%s: WMA is closed, can not set gpio",
+ __func__);
+ return VOS_STATUS_E_INVAL;
+ }
+
+ WMA_LOGD("%s: set tsf gpio pin: %d",
+ __func__, pin);
+
+ ret = wmi_unified_pdev_set_param(wma->wmi_handle,
+ WMI_PDEV_PARAM_WNTS_CONFIG, pin);
+ if (ret) {
+ WMA_LOGE("%s: Failed to set tsf gpio pin (%d)",
+ __func__, ret);
+ return VOS_STATUS_E_FAILURE;
+ }
+ return VOS_STATUS_SUCCESS;
+}
+#else
+static inline VOS_STATUS wma_set_tsf_gpio_pin(WMA_HANDLE handle,
+ uint32_t pin)
+{
+ return VOS_STATUS_E_INVAL;
+}
+#endif
+
#ifdef WLAN_FEATURE_STATS_EXT
VOS_STATUS wma_stats_ext_req(void *wda_handle,
tpStatsExtRequest preq)
@@ -22920,17 +22961,18 @@ VOS_STATUS wma_stop_extscan(tp_wma_handle wma,
*
* Return: number of entries
*/
-static inline int wma_get_hotlist_entries_per_page(size_t cmd_size,
+static inline int wma_get_hotlist_entries_per_page(wmi_unified_t wmi_handle,
+ size_t cmd_size,
size_t per_entry_size)
{
uint32_t avail_space = 0;
int num_entries = 0;
+ uint16_t max_msg_len = wmi_get_max_msg_len(wmi_handle);
/* Calculate number of hotlist entries that can
* be passed in wma message request.
*/
- avail_space = WMA_MAX_EXTSCAN_MSG_SIZE -
- (cmd_size - WMI_TLV_HDR_SIZE);
+ avail_space = max_msg_len - cmd_size;
num_entries = avail_space / per_entry_size;
return num_entries;
}
@@ -22973,19 +23015,19 @@ VOS_STATUS wma_get_buf_extscan_hotlist_cmd(tp_wma_handle wma_handle,
WMA_LOGE("%s: Invalid number of bssid's", __func__);
return VOS_STATUS_E_INVAL;
}
- num_entries = wma_get_hotlist_entries_per_page(sizeof(*cmd),
+ num_entries = wma_get_hotlist_entries_per_page(wma_handle->wmi_handle,
+ cmd_len,
sizeof(*dest_hotlist));
/* Split the hot list entry pages and send multiple command
- * requests if the buffer reaches the maximum request size
+ * requests if the buffer reaches the maximum request size
*/
while (index < numap) {
min_entries = VOS_MIN(num_entries, numap);
len += min_entries * sizeof(wmi_extscan_hotlist_entry);
buf = wmi_buf_alloc(wma_handle->wmi_handle, len);
if (!buf) {
- WMA_LOGP("%s: failed to allocate memory for start extscan cmd",
- __func__);
+ WMA_LOGP("%s: wmi_buf_alloc failed", __func__);
return VOS_STATUS_E_NOMEM;
}
buf_ptr = (u_int8_t *)wmi_buf_data(buf);
@@ -23032,8 +23074,7 @@ VOS_STATUS wma_get_buf_extscan_hotlist_cmd(tp_wma_handle wma_handle,
WMI_CHAR_ARRAY_TO_MAC_ADDR(src_ap->bssid,
&dest_hotlist->bssid);
- WMA_LOGD("%s:channel:%d min_rssi %d",
- __func__, dest_hotlist->channel,
+ WMA_LOGD("%s: min_rssi %d", __func__,
dest_hotlist->min_rssi);
WMA_LOGD("%s: bssid mac_addr31to0: 0x%x, mac_addr47to32: 0x%x",
__func__, dest_hotlist->bssid.mac_addr31to0,
@@ -23074,8 +23115,8 @@ VOS_STATUS wma_extscan_start_hotlist_monitor(tp_wma_handle wma,
vos_status = wma_get_buf_extscan_hotlist_cmd(wma, photlist,
&len);
if (vos_status != VOS_STATUS_SUCCESS) {
- WMA_LOGE("%s: Failed to get buffer"
- "for hotlist scan cmd", __func__);
+ WMA_LOGE("%s: Failed to get buffer for hotlist scan cmd",
+ __func__);
return VOS_STATUS_E_FAILURE;
}
return VOS_STATUS_SUCCESS;
@@ -25447,6 +25488,9 @@ VOS_STATUS wma_mc_process_msg(v_VOID_t *vos_context, vos_msg_t *msg)
(struct sir_wifi_start_log *)msg->bodyptr);
vos_mem_free(msg->bodyptr);
break;
+ case WDA_TSF_GPIO_PIN:
+ wma_set_tsf_gpio_pin(wma_handle, msg->bodyval);
+ break;
default:
WMA_LOGD("unknow msg type %x", msg->type);
/* Do Nothing? MSG Body should be freed at here */
diff --git a/CORE/SERVICES/WMI/wmi_unified.c b/CORE/SERVICES/WMI/wmi_unified.c
index 24dc394cc5ec..c30a209f3c6b 100644
--- a/CORE/SERVICES/WMI/wmi_unified.c
+++ b/CORE/SERVICES/WMI/wmi_unified.c
@@ -51,7 +51,6 @@
#endif
#define WMI_MIN_HEAD_ROOM 64
-#define WMI_MAX_LEN_BYTES 2048
#ifdef WMI_INTERFACE_EVENT_LOGGING
/* WMI commands */
@@ -118,6 +117,19 @@ static void __wmi_control_rx(struct wmi_unified *wmi_handle, wmi_buf_t evt_buf);
int wmi_get_host_credits(wmi_unified_t wmi_handle);
/* WMI buffer APIs */
+/**
+ * wmi_get_max_msg_len() - get maximum WMI message length
+ * @wmi_handle: WMI handle.
+ *
+ * This function returns the maximum WMI message length
+ *
+ * Return: maximum WMI message length
+ */
+uint16_t wmi_get_max_msg_len(wmi_unified_t wmi_handle)
+{
+ return wmi_handle->max_msg_len - WMI_MIN_HEAD_ROOM;
+}
+
wmi_buf_t
wmi_buf_alloc(wmi_unified_t wmi_handle, u_int16_t len)
{
diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h
index 5235b53bcb30..8e8a57cb8479 100644
--- a/CORE/SME/inc/sme_Api.h
+++ b/CORE/SME/inc/sme_Api.h
@@ -4282,4 +4282,14 @@ eHalStatus sme_update_roam_scan_hi_rssi_scan_params(tHalHandle hal_handle,
eHalStatus sme_wifi_start_logger(tHalHandle hal,
struct sir_wifi_start_log start_log);
+#ifdef WLAN_FEATURE_TSF
+eHalStatus sme_set_tsf_gpio(tHalHandle hHal, uint32_t pinvalue);
+#else
+static inline eHalStatus
+sme_set_tsf_gpio(tHalHandle hHal, uint32_t pinvalue)
+{
+ return eHAL_STATUS_FAILURE;
+}
+#endif
+
#endif //#if !defined( __SME_API_H )
diff --git a/CORE/SME/src/csr/csrUtil.c b/CORE/SME/src/csr/csrUtil.c
index f41b7a138445..c7482c032b54 100644
--- a/CORE/SME/src/csr/csrUtil.c
+++ b/CORE/SME/src/csr/csrUtil.c
@@ -4853,7 +4853,7 @@ tANI_BOOLEAN csrMatchBSS( tHalHandle hHal, tSirBssDescription *pBssDesc, tCsrSca
tDot11fBeaconIEs **ppIes)
{
tpAniSirGlobal pMac = PMAC_STRUCT( hHal );
- tANI_BOOLEAN fRC = eANI_BOOLEAN_FALSE, fCheck;
+ tANI_BOOLEAN fRC = eANI_BOOLEAN_FALSE, fCheck, blacklist_check;
tANI_U32 i;
tDot11fBeaconIEs *pIes = NULL;
tANI_U8 *pb;
@@ -4881,17 +4881,17 @@ tANI_BOOLEAN csrMatchBSS( tHalHandle hHal, tSirBssDescription *pBssDesc, tCsrSca
if(!fCheck) break;
/* Check for Blacklist BSSID's and avoid connections */
- fCheck = false;
+ blacklist_check = false;
blacklist_bssid = (tCsrBssid *)&roam_params->bssid_avoid_list;
for (i = 0; i < roam_params->num_bssid_avoid_list; i++) {
if (csrIsMacAddressEqual(pMac, blacklist_bssid,
(tCsrBssid *)pBssDesc->bssId)) {
- fCheck = true;
+ blacklist_check = true;
break;
}
blacklist_bssid++;
}
- if(fCheck) {
+ if(blacklist_check) {
VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,
"Do not Attempt connection to blacklist bssid");
break;
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index fd4a973f4607..6e1dcbf4f8bd 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -16283,6 +16283,41 @@ eHalStatus sme_set_tsfcb
return status;
}
+#ifdef WLAN_FEATURE_TSF
+/*
+ * sme_set_tsf_gpio() - set gpio pin that be toggled when capture tef
+ *
+ * @hHal: Handler return by macOpen
+ * @pinvalue: gpio pin id
+ *
+ * Return: eHalStatus
+ */
+eHalStatus sme_set_tsf_gpio(tHalHandle hHal, uint32_t pinvalue)
+{
+ eHalStatus status;
+ VOS_STATUS vos_status;
+ vos_msg_t vos_msg = {0};
+ tpAniSirGlobal pMac = PMAC_STRUCT(hHal);
+
+ status = sme_AcquireGlobalLock(&pMac->sme);
+ if (eHAL_STATUS_SUCCESS == status) {
+ vos_msg.type = WDA_TSF_GPIO_PIN;
+ vos_msg.reserved = 0;
+ vos_msg.bodyval = pinvalue;
+
+ vos_status = vos_mq_post_message(VOS_MQ_ID_WDA, &vos_msg);
+ if (!VOS_IS_STATUS_SUCCESS(vos_status)) {
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,
+ "%s: not able to post WDA_TSF_GPIO_PIN",
+ __func__);
+ status = eHAL_STATUS_FAILURE;
+ }
+ sme_ReleaseGlobalLock(&pMac->sme);
+ }
+ return status;
+}
+#endif
+
/*
* sme_wifi_start_logger() - This function send the command to WMA
* to either start/stop logging
diff --git a/CORE/SYS/legacy/src/utils/src/dot11f.c b/CORE/SYS/legacy/src/utils/src/dot11f.c
index c5e62baed085..bf5187055656 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 Mar 19 17:16:31 2015 from the following file(s):
+ * Thu Apr 30 13:39:44 2015 from the following file(s):
*
* dot11f.frms
*
@@ -12591,6 +12591,7 @@ tANI_U32 dot11fUnpackPresenceRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nB
{offsetof(tDot11fProbeRequest, WFATPC), offsetof(tDot11fIEWFATPC, present), 0, "WFATPC" , 0, 9, 9, SigIeWFATPC, {0, 80, 242, 8, 0}, 5, DOT11F_EID_WFATPC, 0, },
{offsetof(tDot11fProbeRequest, P2PProbeReq), offsetof(tDot11fIEP2PProbeReq, present), 0, "P2PProbeReq" , 0, 6, 43, SigIeP2PProbeReq, {80, 111, 154, 9, 0}, 4, DOT11F_EID_P2PPROBEREQ, 0, },
{offsetof(tDot11fProbeRequest, VHTCaps), offsetof(tDot11fIEVHTCaps, present), 0, "VHTCaps" , 0, 14, 14, SigIeVHTCaps, {0, 0, 0, 0, 0}, 0, DOT11F_EID_VHTCAPS, 0, },
+ {offsetof(tDot11fProbeRequest, ExtCap), offsetof(tDot11fIEExtCap, present), 0, "ExtCap" , 0, 10, 11, SigIeExtCap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EXTCAP, 0, },
{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, }, };
tANI_U32 dot11fUnpackProbeRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fProbeRequest *pFrm)
@@ -12995,6 +12996,16 @@ tANI_U32 dot11fUnpackProbeRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 n
FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBEREQUEST), FRFL("txSupDataRate (13): %d\n"), pFrm->VHTCaps.txSupDataRate);
FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBEREQUEST), FRFL("reserved3 (3): %d\n"), pFrm->VHTCaps.reserved3);
}
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBEREQUEST), FRFL("ExtCap:\n"));
+ if (!pFrm->ExtCap.present)
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBEREQUEST), FRFL("Not present.\n"));
+ }
+ else
+ {
+ FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBEREQUEST), FRFL("num_bytes: %d.\n"), pFrm->ExtCap.num_bytes);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBEREQUEST), ( tANI_U8* ) pFrm->ExtCap.bytes, pFrm->ExtCap.num_bytes);
+ }
}
# endif // DOT11F_DUMP_FRAMES
return status;
@@ -36401,6 +36412,16 @@ tANI_U32 dot11fPackProbeRequest(tpAniSirGlobal pCtx, tDot11fProbeRequest *pFrm,
FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBEREQUEST), FRFL("txSupDataRate (13): %d\n"), pFrm->VHTCaps.txSupDataRate);
FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBEREQUEST), FRFL("reserved3 (3): %d\n"), pFrm->VHTCaps.reserved3);
}
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBEREQUEST), FRFL("ExtCap:\n"));
+ if (!pFrm->ExtCap.present)
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBEREQUEST), FRFL("Not present.\n"));
+ }
+ else
+ {
+ FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBEREQUEST), FRFL("num_bytes: %d.\n"), pFrm->ExtCap.num_bytes);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBEREQUEST), ( tANI_U8* ) pFrm->ExtCap.bytes, pFrm->ExtCap.num_bytes);
+ }
FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBEREQUEST), FRFL("to:\n"));
FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBEREQUEST), pBuf, nBuf);
}
diff --git a/CORE/SYS/legacy/src/utils/src/parserApi.c b/CORE/SYS/legacy/src/utils/src/parserApi.c
index a352e7273376..e72288496acb 100644
--- a/CORE/SYS/legacy/src/utils/src/parserApi.c
+++ b/CORE/SYS/legacy/src/utils/src/parserApi.c
@@ -1163,7 +1163,7 @@ PopulateDot11fExtCap(tpAniSirGlobal pMac,
if (val) // If set to true then set RTTv3
{
- p_ext_cap->fineTimingMeas = 1;
+ p_ext_cap->fine_time_meas_initiator = 1;
}
#ifdef QCA_HT_2040_COEX
@@ -2573,8 +2573,8 @@ sirConvertAssocReqFrame2Struct(tpAniSirGlobal pMac,
p_ext_cap = (struct s_ext_cap *)&pAssocReq->ExtCap.bytes;
limLog(pMac, LOG1,
- FL("ExtCap is present, timingMeas: %d, fineTimingMeas: %d"),
- p_ext_cap->timingMeas, p_ext_cap->fineTimingMeas);
+ FL("ExtCap is present, timingMeas: %d, ftm_initiator: %d"),
+ p_ext_cap->timingMeas, p_ext_cap->fine_time_meas_initiator);
}
vos_mem_free(ar);
return eSIR_SUCCESS;
@@ -2765,8 +2765,8 @@ sirConvertAssocRespFrame2Struct(tpAniSirGlobal pMac,
ar.ExtCap.num_bytes);
p_ext_cap = (struct s_ext_cap *)&pAssocRsp->ExtCap.bytes;
limLog(pMac, LOG1,
- FL("ExtCap is present, timingMeas: %d, fineTimingMeas: %d"),
- p_ext_cap->timingMeas, p_ext_cap->fineTimingMeas);
+ FL("ExtCap is present, timingMeas: %d, ftm_initiator: %d"),
+ p_ext_cap->timingMeas, p_ext_cap->fine_time_meas_initiator);
}
if ( ar.QosMapSet.present )
@@ -2964,8 +2964,8 @@ sirConvertReassocReqFrame2Struct(tpAniSirGlobal pMac,
vos_mem_copy(&pAssocReq->ExtCap.bytes, &ar.ExtCap.bytes,
ar.ExtCap.num_bytes);
limLog(pMac, LOG1,
- FL("ExtCap is present, timingMeas: %d, fineTimingMeas: %d"),
- p_ext_cap->timingMeas, p_ext_cap->fineTimingMeas);
+ FL("ExtCap is present, timingMeas: %d, ftm_initiator: %d"),
+ p_ext_cap->timingMeas, p_ext_cap->fine_time_meas_initiator);
}
return eSIR_SUCCESS;
diff --git a/CORE/VOSS/inc/i_vos_packet.h b/CORE/VOSS/inc/i_vos_packet.h
index dd6b825ee379..72f93a3e0b94 100644
--- a/CORE/VOSS/inc/i_vos_packet.h
+++ b/CORE/VOSS/inc/i_vos_packet.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2014 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2015 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -70,6 +70,7 @@ typedef struct
u_int8_t sessionId;
u_int8_t scan_src;
u_int32_t rssi_raw;
+ u_int32_t tsf_delta;
}t_packetmeta, *tp_packetmeta;
/* implementation specific vos packet type */
diff --git a/CORE/WDA/inc/wlan_qct_wda.h b/CORE/WDA/inc/wlan_qct_wda.h
index 72dfb7916d3f..3413158700f3 100644
--- a/CORE/WDA/inc/wlan_qct_wda.h
+++ b/CORE/WDA/inc/wlan_qct_wda.h
@@ -477,6 +477,9 @@ VOS_STATUS WDA_open(v_PVOID_t pVosContext, v_PVOID_t pOSContext,
#define WDA_GET_RX_PAYLOAD_LEN(pRxMeta) \
(((t_packetmeta *)pRxMeta)->mpdu_data_len)
+#define WDA_GET_RX_TSF_DELTA(pRxMeta) \
+ (((t_packetmeta *)pRxMeta)->tsf_delta)
+
#define WDA_GET_RX_MAC_RATE_IDX(pRxMeta) 0
#define WDA_GET_RX_MPDU_DATA(pRxMeta) \
@@ -1035,6 +1038,7 @@ tSirRetStatus uMacPostCtrlMsg(void* pSirGlobal, tSirMbMsg* pMb);
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
#define WDA_FW_MEM_DUMP_REQ SIR_HAL_FW_MEM_DUMP_REQ
+#define WDA_TSF_GPIO_PIN SIR_HAL_TSF_GPIO_PIN_REQ
tSirRetStatus wdaPostCtrlMsg(tpAniSirGlobal pMac, tSirMsgQ *pMsg);