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 timing measurement capability information
|
||||||
*
|
*
|
||||||
* <----- fine_time_meas_cap (in bits) ----->
|
* <----- fine_time_meas_cap (in bits) ----->
|
||||||
* +----------+-----+-----+------+------+-------+-------+-----+-----+
|
* +---------+-----+-----+-----+-----+------+------+-------+-------+-----+-----+
|
||||||
* | 8-31 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|
* | 10-31 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|
||||||
* +----------+-----+-----+------+------+-------+-------+-----+-----+
|
* +---------+-----+-----+-----+-----+------+------+-------+-------+-----+-----+
|
||||||
* | reserved | SAP | SAP |P2P-GO|P2P-GO|P2P-CLI|P2P-CLI| STA | STA |
|
* | 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 |init |resp |init |resp |init |resp |init |
|
||||||
* +----------+-----+-----+------+------+-------+-------+-----+-----+
|
* +---------+-----+-----+-----+-----+------+------+-------+-------+-----+-----+
|
||||||
*
|
*
|
||||||
* resp - responder role; init- initiator role
|
* resp - responder role; init- initiator role
|
||||||
*
|
*
|
||||||
@@ -63,8 +63,8 @@
|
|||||||
#define CFG_FINE_TIME_MEAS_CAPABILITY CFG_INI_UINT( \
|
#define CFG_FINE_TIME_MEAS_CAPABILITY CFG_INI_UINT( \
|
||||||
"gfine_time_meas_cap", \
|
"gfine_time_meas_cap", \
|
||||||
0x0000, \
|
0x0000, \
|
||||||
0x00BD, \
|
0x003BD, \
|
||||||
0x000D, \
|
0x0030D, \
|
||||||
CFG_VALUE_OR_DEFAULT, \
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
"fine timing measurement capability")
|
"fine timing measurement capability")
|
||||||
|
|
||||||
|
@@ -532,9 +532,11 @@ struct nan_event_params {
|
|||||||
* struct nan_msg_params - NAN request params
|
* struct nan_msg_params - NAN request params
|
||||||
* @request_data_len: request data length
|
* @request_data_len: request data length
|
||||||
* @request_data: request data
|
* @request_data: request data
|
||||||
|
* @rtt_cap: indicate if responder/initiator role is supported
|
||||||
*/
|
*/
|
||||||
struct nan_msg_params {
|
struct nan_msg_params {
|
||||||
uint16_t request_data_len;
|
uint16_t request_data_len;
|
||||||
|
uint32_t rtt_cap;
|
||||||
/* Variable length, do not add anything after this */
|
/* Variable length, do not add anything after this */
|
||||||
uint8_t request_data[];
|
uint8_t request_data[];
|
||||||
};
|
};
|
||||||
|
@@ -1230,29 +1230,6 @@ struct dhcp_server {
|
|||||||
#define CFG_ENABLE_MTRACE_ALL
|
#define CFG_ENABLE_MTRACE_ALL
|
||||||
#endif
|
#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>
|
* <ini>
|
||||||
* gAdvertiseConcurrentOperation - Iface combination advertising
|
* gAdvertiseConcurrentOperation - Iface combination advertising
|
||||||
@@ -1499,7 +1476,6 @@ enum host_log_level {
|
|||||||
CFG(CFG_ENABLE_MAC_PROVISION) \
|
CFG(CFG_ENABLE_MAC_PROVISION) \
|
||||||
CFG_ENABLE_MTRACE_ALL \
|
CFG_ENABLE_MTRACE_ALL \
|
||||||
CFG(CFG_ENABLE_RAMDUMP_COLLECTION) \
|
CFG(CFG_ENABLE_RAMDUMP_COLLECTION) \
|
||||||
CFG(CFG_ENABLE_RTT_SUPPORT) \
|
|
||||||
CFG(CFG_ENABLE_UNIT_TEST_FRAMEWORK) \
|
CFG(CFG_ENABLE_UNIT_TEST_FRAMEWORK) \
|
||||||
CFG(CFG_INTERFACE_CHANGE_WAIT) \
|
CFG(CFG_INTERFACE_CHANGE_WAIT) \
|
||||||
CFG(CFG_INFORM_BSS_RSSI_RAW) \
|
CFG(CFG_INFORM_BSS_RSSI_RAW) \
|
||||||
|
@@ -219,7 +219,6 @@ struct hdd_config {
|
|||||||
bool mac_provision;
|
bool mac_provision;
|
||||||
uint32_t provisioned_intf_pool;
|
uint32_t provisioned_intf_pool;
|
||||||
uint32_t derived_intf_pool;
|
uint32_t derived_intf_pool;
|
||||||
uint8_t enable_rtt_support;
|
|
||||||
uint32_t cfg_wmi_credit_cnt;
|
uint32_t cfg_wmi_credit_cnt;
|
||||||
uint32_t sar_version;
|
uint32_t sar_version;
|
||||||
bool is_wow_disabled;
|
bool is_wow_disabled;
|
||||||
|
@@ -148,6 +148,16 @@
|
|||||||
#define g_mode_rates_size (12)
|
#define g_mode_rates_size (12)
|
||||||
#define a_mode_rates_size (8)
|
#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)
|
* 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
|
#ifdef FEATURE_WLAN_TDLS
|
||||||
bool bvalue;
|
bool bvalue;
|
||||||
#endif
|
#endif
|
||||||
|
uint32_t fine_time_meas_cap;
|
||||||
|
|
||||||
/* ENTER_DEV() intentionally not used in a frequently invoked API */
|
/* 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");
|
hdd_debug("NAN is supported by firmware");
|
||||||
fset |= WIFI_FEATURE_NAN;
|
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) &&
|
if (sme_is_feature_supported_by_fw(RTT) &&
|
||||||
hdd_ctx->config->enable_rtt_support) {
|
rtt_is_enabled(fine_time_meas_cap)) {
|
||||||
hdd_debug("RTT is supported by firmware and framework");
|
hdd_debug("RTT is supported by firmware and driver: %x",
|
||||||
|
fine_time_meas_cap);
|
||||||
fset |= WIFI_FEATURE_D2D_RTT;
|
fset |= WIFI_FEATURE_D2D_RTT;
|
||||||
fset |= WIFI_FEATURE_D2AP_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;
|
mac_handle_t mac_handle;
|
||||||
bool bval = false;
|
bool bval = false;
|
||||||
uint8_t enable_sifs_burst = 0;
|
uint8_t enable_sifs_burst = 0;
|
||||||
|
uint32_t fine_time_meas_cap = 0;
|
||||||
|
|
||||||
hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
||||||
mac_handle = hdd_ctx->mac_handle;
|
mac_handle = hdd_ctx->mac_handle;
|
||||||
@@ -4717,10 +4718,24 @@ QDF_STATUS hdd_init_station_mode(struct hdd_adapter *adapter)
|
|||||||
/* rcpi info initialization */
|
/* rcpi info initialization */
|
||||||
qdf_mem_zero(&adapter->rcpi, sizeof(adapter->rcpi));
|
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,
|
mlme_set_roam_trigger_bitmap(hdd_ctx->psoc, adapter->vdev_id,
|
||||||
DEFAULT_ROAM_TRIGGER_BITMAP);
|
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;
|
return QDF_STATUS_SUCCESS;
|
||||||
|
|
||||||
error_wmm_init:
|
error_wmm_init:
|
||||||
@@ -10304,7 +10319,6 @@ static void hdd_cfg_params_init(struct hdd_context *hdd_ctx)
|
|||||||
cfg_get(psoc,
|
cfg_get(psoc,
|
||||||
CFG_ACTION_OUI_DISABLE_AGGRESSIVE_EDCA),
|
CFG_ACTION_OUI_DISABLE_AGGRESSIVE_EDCA),
|
||||||
ACTION_OUI_MAX_STR_LEN);
|
ACTION_OUI_MAX_STR_LEN);
|
||||||
config->enable_rtt_support = cfg_get(psoc, CFG_ENABLE_RTT_SUPPORT);
|
|
||||||
config->is_unit_test_framework_enabled =
|
config->is_unit_test_framework_enabled =
|
||||||
cfg_get(psoc, CFG_ENABLE_UNIT_TEST_FRAMEWORK);
|
cfg_get(psoc, CFG_ENABLE_UNIT_TEST_FRAMEWORK);
|
||||||
config->disable_channel = cfg_get(psoc, CFG_ENABLE_DISABLE_CHANNEL);
|
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) {
|
if (adapter->device_mode == QDF_SAP_MODE) {
|
||||||
ucfg_mlme_get_fine_time_meas_cap(hdd_ctx->psoc,
|
ucfg_mlme_get_fine_time_meas_cap(hdd_ctx->psoc,
|
||||||
&fine_time_meas_cap);
|
&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,
|
WMI_VDEV_PARAM_ENABLE_DISABLE_RTT_RESPONDER_ROLE,
|
||||||
(bool)(fine_time_meas_cap & WMI_FW_AP_RTT_RESPR),
|
(bool)(fine_time_meas_cap & WMI_FW_AP_RTT_RESPR),
|
||||||
VDEV_CMD);
|
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);
|
status = hdd_init_ap_mode(adapter, is_ssr);
|
||||||
|
@@ -35,6 +35,7 @@
|
|||||||
#include "wlan_objmgr_vdev_obj.h"
|
#include "wlan_objmgr_vdev_obj.h"
|
||||||
#include "wlan_utility.h"
|
#include "wlan_utility.h"
|
||||||
#include "wlan_osif_request_manager.h"
|
#include "wlan_osif_request_manager.h"
|
||||||
|
#include "wlan_mlme_ucfg_api.h"
|
||||||
|
|
||||||
#define NAN_CMD_MAX_SIZE 2048
|
#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 chan_freq_2g, chan_freq_5g = 0;
|
||||||
uint32_t buf_len;
|
uint32_t buf_len;
|
||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
|
uint32_t fine_time_meas_cap;
|
||||||
struct nan_enable_req *nan_req;
|
struct nan_enable_req *nan_req;
|
||||||
|
|
||||||
if (!tb[QCA_WLAN_VENDOR_ATTR_NAN_DISC_24GHZ_BAND_FREQ]) {
|
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->psoc = psoc;
|
||||||
nan_req->params.request_data_len = buf_len;
|
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,
|
nla_memcpy(nan_req->params.request_data,
|
||||||
tb[QCA_WLAN_VENDOR_ATTR_NAN_CMD_DATA], buf_len);
|
tb[QCA_WLAN_VENDOR_ATTR_NAN_CMD_DATA], buf_len);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user