qcacld-3.0: Send RTT capability for STA mode
Based on the ini gfine_time_meas_cap, send enable/disable value to the firmware for STA INITIATOR/RESPONDER mode using VDEV set param. Change-Id: Idd4142e13061cd1af992bda88d0a0b81edc42fef CRs-Fixed: 2574050
This commit is contained in:

committed by
nshrivas

parent
09db9462f7
commit
fab026a99a
@@ -33,12 +33,12 @@
|
||||
* fine timing measurement capability information
|
||||
*
|
||||
* <----- fine_time_meas_cap (in bits) ----->
|
||||
* +----------+-----+-----+------+------+-------+-------+-----+-----+
|
||||
* | 8-31 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|
||||
* +----------+-----+-----+------+------+-------+-------+-----+-----+
|
||||
* | reserved | SAP | SAP |P2P-GO|P2P-GO|P2P-CLI|P2P-CLI| STA | STA |
|
||||
* | |resp |init |resp |init |resp |init |resp |init |
|
||||
* +----------+-----+-----+------+------+-------+-------+-----+-----+
|
||||
* +---------+-----+-----+-----+-----+------+------+-------+-------+-----+-----+
|
||||
* | 10-31 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|
||||
* +---------+-----+-----+-----+-----+------+------+-------+-------+-----+-----+
|
||||
* | reserved| NAN | NAN | SAP | SAP |P2P-GO|P2P-GO|P2P-CLI|P2P-CLI| STA | STA |
|
||||
* | | resp|init |resp |init |resp |init |resp |init |resp |init |
|
||||
* +---------+-----+-----+-----+-----+------+------+-------+-------+-----+-----+
|
||||
*
|
||||
* resp - responder role; init- initiator role
|
||||
*
|
||||
@@ -63,8 +63,8 @@
|
||||
#define CFG_FINE_TIME_MEAS_CAPABILITY CFG_INI_UINT( \
|
||||
"gfine_time_meas_cap", \
|
||||
0x0000, \
|
||||
0x00BD, \
|
||||
0x000D, \
|
||||
0x003BD, \
|
||||
0x0030D, \
|
||||
CFG_VALUE_OR_DEFAULT, \
|
||||
"fine timing measurement capability")
|
||||
|
||||
|
@@ -532,9 +532,11 @@ struct nan_event_params {
|
||||
* struct nan_msg_params - NAN request params
|
||||
* @request_data_len: request data length
|
||||
* @request_data: request data
|
||||
* @rtt_cap: indicate if responder/initiator role is supported
|
||||
*/
|
||||
struct nan_msg_params {
|
||||
uint16_t request_data_len;
|
||||
uint32_t rtt_cap;
|
||||
/* Variable length, do not add anything after this */
|
||||
uint8_t request_data[];
|
||||
};
|
||||
|
@@ -1230,29 +1230,6 @@ struct dhcp_server {
|
||||
#define CFG_ENABLE_MTRACE_ALL
|
||||
#endif
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* gEnableRTTsupport
|
||||
*
|
||||
* @Min: 0 - Disabled
|
||||
* @Max: 1 - Enabled
|
||||
* @Default: 1 - Enabled
|
||||
*
|
||||
* The param is used to enable/disable support for RTT
|
||||
*
|
||||
* Related: None.
|
||||
*
|
||||
* Supported Feature: RTT
|
||||
*
|
||||
* Usage: Internal/External
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_ENABLE_RTT_SUPPORT CFG_INI_BOOL( \
|
||||
"gEnableRTTSupport", \
|
||||
1, \
|
||||
"The param is used to enable/disable support for RTT")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* gAdvertiseConcurrentOperation - Iface combination advertising
|
||||
@@ -1499,7 +1476,6 @@ enum host_log_level {
|
||||
CFG(CFG_ENABLE_MAC_PROVISION) \
|
||||
CFG_ENABLE_MTRACE_ALL \
|
||||
CFG(CFG_ENABLE_RAMDUMP_COLLECTION) \
|
||||
CFG(CFG_ENABLE_RTT_SUPPORT) \
|
||||
CFG(CFG_ENABLE_UNIT_TEST_FRAMEWORK) \
|
||||
CFG(CFG_INTERFACE_CHANGE_WAIT) \
|
||||
CFG(CFG_INFORM_BSS_RSSI_RAW) \
|
||||
|
@@ -219,7 +219,6 @@ struct hdd_config {
|
||||
bool mac_provision;
|
||||
uint32_t provisioned_intf_pool;
|
||||
uint32_t derived_intf_pool;
|
||||
uint8_t enable_rtt_support;
|
||||
uint32_t cfg_wmi_credit_cnt;
|
||||
uint32_t sar_version;
|
||||
bool is_wow_disabled;
|
||||
|
@@ -148,6 +148,16 @@
|
||||
#define g_mode_rates_size (12)
|
||||
#define a_mode_rates_size (8)
|
||||
|
||||
/**
|
||||
* rtt_is_initiator - Macro to check if the bitmap has any RTT roles set
|
||||
* @bitmap: The bitmap to be checked
|
||||
*/
|
||||
#define rtt_is_enabled(bitmap) \
|
||||
((bitmap) & (WMI_FW_STA_RTT_INITR | \
|
||||
WMI_FW_STA_RTT_RESPR | \
|
||||
WMI_FW_AP_RTT_INITR | \
|
||||
WMI_FW_AP_RTT_RESPR))
|
||||
|
||||
/*
|
||||
* Android CTS verifier needs atleast this much wait time (in msec)
|
||||
*/
|
||||
@@ -3438,6 +3448,7 @@ __wlan_hdd_cfg80211_get_supported_features(struct wiphy *wiphy,
|
||||
#ifdef FEATURE_WLAN_TDLS
|
||||
bool bvalue;
|
||||
#endif
|
||||
uint32_t fine_time_meas_cap;
|
||||
|
||||
/* ENTER_DEV() intentionally not used in a frequently invoked API */
|
||||
|
||||
@@ -3479,9 +3490,13 @@ __wlan_hdd_cfg80211_get_supported_features(struct wiphy *wiphy,
|
||||
hdd_debug("NAN is supported by firmware");
|
||||
fset |= WIFI_FEATURE_NAN;
|
||||
}
|
||||
|
||||
ucfg_mlme_get_fine_time_meas_cap(hdd_ctx->psoc, &fine_time_meas_cap);
|
||||
|
||||
if (sme_is_feature_supported_by_fw(RTT) &&
|
||||
hdd_ctx->config->enable_rtt_support) {
|
||||
hdd_debug("RTT is supported by firmware and framework");
|
||||
rtt_is_enabled(fine_time_meas_cap)) {
|
||||
hdd_debug("RTT is supported by firmware and driver: %x",
|
||||
fine_time_meas_cap);
|
||||
fset |= WIFI_FEATURE_D2D_RTT;
|
||||
fset |= WIFI_FEATURE_D2AP_RTT;
|
||||
}
|
||||
|
@@ -4643,6 +4643,7 @@ QDF_STATUS hdd_init_station_mode(struct hdd_adapter *adapter)
|
||||
mac_handle_t mac_handle;
|
||||
bool bval = false;
|
||||
uint8_t enable_sifs_burst = 0;
|
||||
uint32_t fine_time_meas_cap = 0;
|
||||
|
||||
hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
||||
mac_handle = hdd_ctx->mac_handle;
|
||||
@@ -4717,10 +4718,24 @@ QDF_STATUS hdd_init_station_mode(struct hdd_adapter *adapter)
|
||||
/* rcpi info initialization */
|
||||
qdf_mem_zero(&adapter->rcpi, sizeof(adapter->rcpi));
|
||||
|
||||
if (adapter->device_mode == QDF_STA_MODE)
|
||||
if (adapter->device_mode == QDF_STA_MODE) {
|
||||
mlme_set_roam_trigger_bitmap(hdd_ctx->psoc, adapter->vdev_id,
|
||||
DEFAULT_ROAM_TRIGGER_BITMAP);
|
||||
|
||||
ucfg_mlme_get_fine_time_meas_cap(hdd_ctx->psoc,
|
||||
&fine_time_meas_cap);
|
||||
sme_cli_set_command(
|
||||
adapter->vdev_id,
|
||||
WMI_VDEV_PARAM_ENABLE_DISABLE_RTT_RESPONDER_ROLE,
|
||||
(bool)(fine_time_meas_cap & WMI_FW_STA_RTT_RESPR),
|
||||
VDEV_CMD);
|
||||
sme_cli_set_command(
|
||||
adapter->vdev_id,
|
||||
WMI_VDEV_PARAM_ENABLE_DISABLE_RTT_INITIATOR_ROLE,
|
||||
(bool)(fine_time_meas_cap & WMI_FW_STA_RTT_INITR),
|
||||
VDEV_CMD);
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
error_wmm_init:
|
||||
@@ -10304,7 +10319,6 @@ static void hdd_cfg_params_init(struct hdd_context *hdd_ctx)
|
||||
cfg_get(psoc,
|
||||
CFG_ACTION_OUI_DISABLE_AGGRESSIVE_EDCA),
|
||||
ACTION_OUI_MAX_STR_LEN);
|
||||
config->enable_rtt_support = cfg_get(psoc, CFG_ENABLE_RTT_SUPPORT);
|
||||
config->is_unit_test_framework_enabled =
|
||||
cfg_get(psoc, CFG_ENABLE_UNIT_TEST_FRAMEWORK);
|
||||
config->disable_channel = cfg_get(psoc, CFG_ENABLE_DISABLE_CHANNEL);
|
||||
@@ -10524,10 +10538,16 @@ int hdd_start_ap_adapter(struct hdd_adapter *adapter)
|
||||
if (adapter->device_mode == QDF_SAP_MODE) {
|
||||
ucfg_mlme_get_fine_time_meas_cap(hdd_ctx->psoc,
|
||||
&fine_time_meas_cap);
|
||||
sme_cli_set_command(adapter->vdev_id,
|
||||
sme_cli_set_command(
|
||||
adapter->vdev_id,
|
||||
WMI_VDEV_PARAM_ENABLE_DISABLE_RTT_RESPONDER_ROLE,
|
||||
(bool)(fine_time_meas_cap & WMI_FW_AP_RTT_RESPR),
|
||||
VDEV_CMD);
|
||||
sme_cli_set_command(
|
||||
adapter->vdev_id,
|
||||
WMI_VDEV_PARAM_ENABLE_DISABLE_RTT_INITIATOR_ROLE,
|
||||
(bool)(fine_time_meas_cap & WMI_FW_AP_RTT_INITR),
|
||||
VDEV_CMD);
|
||||
}
|
||||
|
||||
status = hdd_init_ap_mode(adapter, is_ssr);
|
||||
|
@@ -35,6 +35,7 @@
|
||||
#include "wlan_objmgr_vdev_obj.h"
|
||||
#include "wlan_utility.h"
|
||||
#include "wlan_osif_request_manager.h"
|
||||
#include "wlan_mlme_ucfg_api.h"
|
||||
|
||||
#define NAN_CMD_MAX_SIZE 2048
|
||||
|
||||
@@ -2634,6 +2635,7 @@ static int os_if_process_nan_enable_req(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t chan_freq_2g, chan_freq_5g = 0;
|
||||
uint32_t buf_len;
|
||||
QDF_STATUS status;
|
||||
uint32_t fine_time_meas_cap;
|
||||
struct nan_enable_req *nan_req;
|
||||
|
||||
if (!tb[QCA_WLAN_VENDOR_ATTR_NAN_DISC_24GHZ_BAND_FREQ]) {
|
||||
@@ -2668,6 +2670,9 @@ static int os_if_process_nan_enable_req(struct wlan_objmgr_psoc *psoc,
|
||||
nan_req->psoc = psoc;
|
||||
nan_req->params.request_data_len = buf_len;
|
||||
|
||||
ucfg_mlme_get_fine_time_meas_cap(psoc, &fine_time_meas_cap);
|
||||
nan_req->params.rtt_cap = fine_time_meas_cap;
|
||||
|
||||
nla_memcpy(nan_req->params.request_data,
|
||||
tb[QCA_WLAN_VENDOR_ATTR_NAN_CMD_DATA], buf_len);
|
||||
|
||||
|
Reference in New Issue
Block a user