summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNaveen Rawat <nrawat@qca.qualcomm.com>2016-01-11 20:09:53 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-01-19 03:21:46 -0800
commit222bdd373de63a4e62d35eb8e6255dff4909f40a (patch)
treeb9185f05ce1c55dca534b464be6fb0e802a73abb
parent80f7231a8892a20956532ed8c60c474251384a10 (diff)
qcacld-2.0: Add fine timing measurement capabilities from FW
Add support to use fine timing measurement capabilities coming from the Firmware. Currently INI config is being used for setting initiator and responder roles. With this change, intersection of INI config and FW indicated capability will be used. Change-Id: If20bc8de2b6ec12bc638b75806e2a870a5ebc189 CRs-Fixed: 942290
-rw-r--r--CORE/HDD/inc/wlan_hdd_tgt_cfg.h3
-rw-r--r--CORE/HDD/src/wlan_hdd_main.c3
-rw-r--r--CORE/SERVICES/WMA/wma.c6
-rw-r--r--CORE/SERVICES/WMA/wma.h1
-rw-r--r--CORE/SYS/legacy/src/utils/src/parserApi.c10
5 files changed, 15 insertions, 8 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_tgt_cfg.h b/CORE/HDD/inc/wlan_hdd_tgt_cfg.h
index 1821da3f2040..ae3d1c3d52ab 100644
--- a/CORE/HDD/inc/wlan_hdd_tgt_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_tgt_cfg.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2015 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2016 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -108,6 +108,7 @@ struct hdd_tgt_cfg {
#ifdef FEATURE_GREEN_AP
bool egap_support;
#endif
+ uint32_t fine_time_measurement_cap;
};
struct hdd_dfs_radar_ind {
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 218435ae0913..caf62fe30820 100644
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -8768,6 +8768,9 @@ void hdd_update_tgt_cfg(void *context, void *param)
HDD_ANTENNA_MODE_2X2 : HDD_ANTENNA_MODE_1X1;
hddLog(LOG1, FL("Current antenna mode: %d"),
hdd_ctx->current_antenna_mode);
+ hdd_ctx->cfg_ini->fine_time_meas_cap &= cfg->fine_time_measurement_cap;
+ hddLog(LOG1, FL("fine_time_measurement_cap: 0x%x"),
+ hdd_ctx->cfg_ini->fine_time_meas_cap);
}
/* This function is invoked in atomic context when a radar
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index 0316c2de27df..6751637c0ae6 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -30963,7 +30963,8 @@ static void wma_update_hdd_cfg(tp_wma_handle wma_handle)
hdd_tgt_cfg.lpss_support = wma_handle->lpss_support;
#endif
hdd_tgt_cfg.ap_arpns_support = wma_handle->ap_arpns_support;
-
+ hdd_tgt_cfg.fine_time_measurement_cap =
+ wma_handle->fine_time_measurement_cap;
wma_setup_egap_support(&hdd_tgt_cfg, wma_handle);
wma_handle->tgt_cfg_update_cb(hdd_ctx, &hdd_tgt_cfg);
}
@@ -31123,7 +31124,8 @@ v_VOID_t wma_rx_service_ready_event(WMA_HANDLE handle, void *cmd_param_info)
wma_handle->txrx_chainmask = ev->txrx_chainmask;
wma_handle->target_fw_version = ev->fw_build_vers;
-
+ wma_handle->fine_time_measurement_cap = ev->wmi_fw_sub_feat_caps;
+ WMA_LOGD(FL("FW fine time meas cap: 0x%x"), ev->wmi_fw_sub_feat_caps);
WMA_LOGE("%s: Firmware build version : %08x",
__func__, ev->fw_build_vers);
diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h
index 07f59cea4223..2ac7b536052f 100644
--- a/CORE/SERVICES/WMA/wma.h
+++ b/CORE/SERVICES/WMA/wma.h
@@ -851,6 +851,7 @@ typedef struct wma_handle {
uint16_t max_mgmt_tx_fail_count;
struct wma_runtime_pm_context runtime_context;
+ uint32_t fine_time_measurement_cap;
}t_wma_handle, *tp_wma_handle;
struct wma_target_cap {
diff --git a/CORE/SYS/legacy/src/utils/src/parserApi.c b/CORE/SYS/legacy/src/utils/src/parserApi.c
index 8c42380733a2..ca41fea99ba9 100644
--- a/CORE/SYS/legacy/src/utils/src/parserApi.c
+++ b/CORE/SYS/legacy/src/utils/src/parserApi.c
@@ -1183,18 +1183,18 @@ PopulateDot11fExtCap(tpAniSirGlobal pMac,
return eSIR_FAILURE;
}
- if (val) // If set to true then set RTTv3
+ if (val)
{
if (!psessionEntry || LIM_IS_STA_ROLE(psessionEntry)) {
p_ext_cap->fine_time_meas_initiator =
- (pMac->fine_time_meas_cap & FINE_TIME_MEAS_STA_INITIATOR) ? 1 : 0;
+ (pMac->fine_time_meas_cap & WMI_FW_STA_RTT_INITR) ? 1 : 0;
p_ext_cap->fine_time_meas_responder =
- (pMac->fine_time_meas_cap & FINE_TIME_MEAS_STA_RESPONDER) ? 1 : 0;
+ (pMac->fine_time_meas_cap & WMI_FW_STA_RTT_RESPR) ? 1 : 0;
} else if (LIM_IS_AP_ROLE(psessionEntry)) {
p_ext_cap->fine_time_meas_initiator =
- (pMac->fine_time_meas_cap & FINE_TIME_MEAS_SAP_INITIATOR) ? 1 : 0;
+ (pMac->fine_time_meas_cap & WMI_FW_AP_RTT_INITR) ? 1 : 0;
p_ext_cap->fine_time_meas_responder =
- (pMac->fine_time_meas_cap & FINE_TIME_MEAS_SAP_RESPONDER) ? 1 : 0;
+ (pMac->fine_time_meas_cap & WMI_FW_AP_RTT_RESPR) ? 1 : 0;
}
}