diff options
| author | Naveen Rawat <nrawat@qca.qualcomm.com> | 2016-01-11 20:09:53 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-01-19 03:21:46 -0800 |
| commit | 222bdd373de63a4e62d35eb8e6255dff4909f40a (patch) | |
| tree | b9185f05ce1c55dca534b464be6fb0e802a73abb | |
| parent | 80f7231a8892a20956532ed8c60c474251384a10 (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.h | 3 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_main.c | 3 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 6 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.h | 1 | ||||
| -rw-r--r-- | CORE/SYS/legacy/src/utils/src/parserApi.c | 10 |
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; } } |
