diff --git a/components/tdls/core/src/wlan_tdls_main.c b/components/tdls/core/src/wlan_tdls_main.c
index 5e8cfdfe64..6301718d27 100644
--- a/components/tdls/core/src/wlan_tdls_main.c
+++ b/components/tdls/core/src/wlan_tdls_main.c
@@ -804,7 +804,7 @@ static void tdls_state_param_setting_dump(struct tdls_info *info)
if (!info)
return;
- tdls_debug("Setting tdls state and param in fw: vdev_id: %d, tdls_state: %d, notification_interval_ms: %d, tx_discovery_threshold: %d, tx_teardown_threshold: %d, rssi_teardown_threshold: %d, rssi_delta: %d, tdls_options: 0x%x, peer_traffic_ind_window: %d, peer_traffic_response_timeout: %d, puapsd_mask: 0x%x, puapsd_inactivity_time: %d, puapsd_rx_frame_threshold: %d, teardown_notification_ms: %d, tdls_peer_kickout_threshold: %d",
+ tdls_debug("Setting tdls state and param in fw: vdev_id: %d, tdls_state: %d, notification_interval_ms: %d, tx_discovery_threshold: %d, tx_teardown_threshold: %d, rssi_teardown_threshold: %d, rssi_delta: %d, tdls_options: 0x%x, peer_traffic_ind_window: %d, peer_traffic_response_timeout: %d, puapsd_mask: 0x%x, puapsd_inactivity_time: %d, puapsd_rx_frame_threshold: %d, teardown_notification_ms: %d, tdls_peer_kickout_threshold: %d, tdls_discovery_wake_timeout: %d",
info->vdev_id,
info->tdls_state,
info->notification_interval_ms,
@@ -819,7 +819,8 @@ static void tdls_state_param_setting_dump(struct tdls_info *info)
info->puapsd_inactivity_time,
info->puapsd_rx_frame_threshold,
info->teardown_notification_ms,
- info->tdls_peer_kickout_threshold);
+ info->tdls_peer_kickout_threshold,
+ info->tdls_discovery_wake_timeout);
}
@@ -1208,6 +1209,8 @@ void tdls_send_update_to_fw(struct tdls_vdev_priv_obj *tdls_vdev_obj,
tdls_soc_obj->tdls_configs.tdls_idle_timeout;
tdls_info_to_fw->tdls_peer_kickout_threshold =
tdls_soc_obj->tdls_configs.tdls_peer_kickout_threshold;
+ tdls_info_to_fw->tdls_discovery_wake_timeout =
+ tdls_soc_obj->tdls_configs.tdls_discovery_wake_timeout;
tdls_state_param_setting_dump(tdls_info_to_fw);
diff --git a/components/tdls/dispatcher/inc/wlan_tdls_cfg.h b/components/tdls/dispatcher/inc/wlan_tdls_cfg.h
index 9e7bcabc59..da57d3551f 100644
--- a/components/tdls/dispatcher/inc/wlan_tdls_cfg.h
+++ b/components/tdls/dispatcher/inc/wlan_tdls_cfg.h
@@ -625,6 +625,33 @@
96, \
CFG_VALUE_OR_DEFAULT, \
"TDLS peer kick out threshold to firmware")
+/*
+ *
+ * gTDLSDiscoveryWakeTimeout - TDLS discovery WAKE timeout in ms.
+ * @Min: 10
+ * @Max: 5000
+ * @Default: 96
+ *
+ * DUT will wake until this timeout to receive TDLS discovery response
+ * from peer. If tdls_discovery_wake_timeout is 0x0, the DUT will
+ * choose autonomously what wake timeout value to use.
+ *
+ *
+ * Related: gEnableTDLSSupport.
+ *
+ * Supported Feature: TDLS
+ *
+ * Usage: External
+ *
+ *
+ */
+ #define CFG_TDLS_DISCOVERY_WAKE_TIMEOUT CFG_INI_UINT( \
+ "gTDLSDiscoveryWakeTimeout", \
+ 0, \
+ 2000, \
+ 200, \
+ CFG_VALUE_OR_DEFAULT, \
+ "TDLS peer kick out threshold to firmware")
/*
*
@@ -676,6 +703,7 @@
CFG(CFG_TDLS_WMM_MODE_ENABLE) \
CFG(CFG_TDLS_SCAN_ENABLE) \
CFG(CFG_TDLS_PEER_KICKOUT_THRESHOLD) \
+ CFG(CFG_TDLS_DISCOVERY_WAKE_TIMEOUT) \
CFG(CFG_TDLS_ENABLE_DEFER_TIMER)
#endif
diff --git a/components/tdls/dispatcher/inc/wlan_tdls_public_structs.h b/components/tdls/dispatcher/inc/wlan_tdls_public_structs.h
index 478ff2c1a8..fe7c3f09ec 100644
--- a/components/tdls/dispatcher/inc/wlan_tdls_public_structs.h
+++ b/components/tdls/dispatcher/inc/wlan_tdls_public_structs.h
@@ -455,6 +455,7 @@ enum tdls_feature_bit {
* @tdls_pre_off_chan_num: tdls off channel number
* @tdls_pre_off_chan_bw: tdls off channel bandwidth
* @tdls_peer_kickout_threshold: sta kickout threshold for tdls peer
+ * @tdls_discovery_wake_timeout: tdls discovery wake timeout
* @delayed_trig_framint: delayed trigger frame interval
* @tdls_vdev_nss_2g: tdls NSS setting for 2G band
* @tdls_vdev_nss_5g: tdls NSS setting for 5G band
@@ -485,6 +486,7 @@ struct tdls_user_config {
uint32_t tdls_pre_off_chan_num;
uint32_t tdls_pre_off_chan_bw;
uint32_t tdls_peer_kickout_threshold;
+ uint32_t tdls_discovery_wake_timeout;
uint32_t delayed_trig_framint;
uint8_t tdls_vdev_nss_2g;
uint8_t tdls_vdev_nss_5g;
@@ -826,6 +828,7 @@ struct tdls_oper_config_force_peer_request {
* @teardown_notification_ms: tdls teardown notification interval
* @tdls_peer_kickout_threshold: tdls packets threshold
* for peer kickout operation
+ * @tdls_discovery_wake_timeout: tdls discovery wake timeout
*/
struct tdls_info {
uint32_t vdev_id;
@@ -843,6 +846,7 @@ struct tdls_info {
uint32_t puapsd_rx_frame_threshold;
uint32_t teardown_notification_ms;
uint32_t tdls_peer_kickout_threshold;
+ uint32_t tdls_discovery_wake_timeout;
};
/**
diff --git a/components/tdls/dispatcher/src/wlan_tdls_ucfg_api.c b/components/tdls/dispatcher/src/wlan_tdls_ucfg_api.c
index ec813b5282..f9cb11b9a4 100644
--- a/components/tdls/dispatcher/src/wlan_tdls_ucfg_api.c
+++ b/components/tdls/dispatcher/src/wlan_tdls_ucfg_api.c
@@ -200,6 +200,8 @@ static QDF_STATUS tdls_object_init_params(
cfg_get(psoc, CFG_TDLS_PREFERRED_OFF_CHANNEL_BW);
tdls_soc_obj->tdls_configs.tdls_peer_kickout_threshold =
cfg_get(psoc, CFG_TDLS_PEER_KICKOUT_THRESHOLD);
+ tdls_soc_obj->tdls_configs.tdls_discovery_wake_timeout =
+ cfg_get(psoc, CFG_TDLS_DISCOVERY_WAKE_TIMEOUT);
tdls_soc_obj->tdls_configs.delayed_trig_framint =
cfg_get(psoc, CFG_TL_DELAYED_TRGR_FRM_INTERVAL);
tdls_soc_obj->tdls_configs.tdls_wmm_mode_enable =