summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xfw/wmi_services.h2
-rwxr-xr-xfw/wmi_tlv_defs.h7
-rwxr-xr-xfw/wmi_unified.h95
-rwxr-xr-xfw/wmi_version.h2
4 files changed, 105 insertions, 1 deletions
diff --git a/fw/wmi_services.h b/fw/wmi_services.h
index 49e8623ad25d..a67dada36748 100755
--- a/fw/wmi_services.h
+++ b/fw/wmi_services.h
@@ -261,6 +261,8 @@ typedef enum {
WMI_SERVICE_NDI_DBS_SUPPORT=165, /* Support DBS for NAN data interface */
WMI_SERVICE_NAN_SAP_SUPPORT=166, /* Support SAP Concurrency for NAN Discovery interface */
WMI_SERVICE_NDI_SAP_SUPPORT=167, /* Support SAP Concurrency for NAN Data interface */
+ WMI_SERVICE_CFR_CAPTURE_SUPPORT=168, /* Support to capture uncompressed Channel Frequency Response (CFR) */
+ WMI_SERVICE_CFR_CAPTURE_IND_MSG_TYPE_1=169, /* Message type HTT_PEER_CFR_CAPTURE_MSG_TYPE_1 in HTT_T2H_MSG_TYPE_CFR_DUMP_COMPL_IND */
/******* ADD NEW SERVICES HERE *******/
diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h
index 44ac30532a07..1427af7984c6 100755
--- a/fw/wmi_tlv_defs.h
+++ b/fw/wmi_tlv_defs.h
@@ -927,6 +927,7 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_esp_estimate_event_fixed_param,
WMITLV_TAG_STRUC_wmi_nan_host_config_param,
WMITLV_TAG_STRUC_wmi_spectral_bin_scaling_params,
+ WMITLV_TAG_STRUC_wmi_peer_cfr_capture_cmd_fixed_param,
} WMITLV_TAG_ID;
/*
@@ -1305,6 +1306,7 @@ typedef enum {
OP(WMI_MOTION_DET_START_STOP_CMDID) \
OP(WMI_MOTION_DET_BASE_LINE_START_STOP_CMDID) \
OP(WMI_PDEV_OBSS_PD_SPATIAL_REUSE_CMDID) \
+ OP(WMI_PEER_CFR_CAPTURE_CMDID) \
/* add new CMD_LIST elements above this line */
@@ -3758,6 +3760,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_TID_CONFIGURATIONS_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_obss_spatial_reuse_set_cmd_fixed_param, wmi_obss_spatial_reuse_set_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_OBSS_PD_SPATIAL_REUSE_CMDID);
+/* Peer CFR capture cmd */
+#define WMITLV_TABLE_WMI_PEER_CFR_CAPTURE_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_cfr_capture_cmd_fixed_param, wmi_peer_cfr_capture_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_PEER_CFR_CAPTURE_CMDID);
+
/************************** TLV definitions of WMI events *******************************/
diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h
index 17027f23574d..93c0cabeae6c 100755
--- a/fw/wmi_unified.h
+++ b/fw/wmi_unified.h
@@ -537,6 +537,12 @@ typedef enum {
*/
WMI_PEER_TID_CONFIGURATIONS_CMDID,
+ /** Peer configuration for Channel Frequency Response (CFR) capture
+ * of type wmi_peer_cfr_capture_cmd. The CFR capture is communicated
+ * through HTT_T2H_MSG_TYPE_CFR_DUMP_COMPL_IND.
+ */
+ WMI_PEER_CFR_CAPTURE_CMDID,
+
/* beacon/management specific commands */
/** transmit beacon by reference . used for transmitting beacon on low latency interface like pcie */
@@ -5151,6 +5157,33 @@ typedef enum {
* Non zero Value: Periodicity (seconds)
*/
WMI_PDEV_PARAM_ESP_INDICATION_PERIOD, /* 0xA7 */
+
+ /*
+ * Enable/Disable periodic peer CFR capture
+ * WMI_PEER_CFR_CAPTURE_ENABLE - Enable per peer periodic CFR capture
+ * WMI_PEER_CFR_CAPTURE_DISABLE - Disable per peer periodic CFR capture
+ */
+ WMI_PDEV_PARAM_PER_PEER_PERIODIC_CFR_ENABLE,
+
+ /*
+ * Set the base timer for the periodic CFR capture. By default this is 10ms.
+ * The period ('periodicity' param in wmi_peer_cfr_capture_cmd) of
+ * CFR measurment of other peers will be in multiples of this base timer.
+ * The unit is in milliseconds.
+ */
+ WMI_PDEV_PARAM_PERIODIC_CFR_BASE_TIMER,
+
+ /*
+ * Once the periodic capture is enabled using
+ * WMI_PDEV_PARAM_PER_PEER_PERIODIC_CFR_ENABLE, the timer starts running in
+ * the target. This parameter will ensure that the timer stops if there are
+ * no active peers in the capture list. Once the peers are added again to
+ * the capture list, the timer will not start again. The timer has to be
+ * started again using WMI_PDEV_PARAM_PER_PEER_PERIODIC_CFR_ENABLE.
+ * Value 1: Enable this feature
+ * Value 0: Disable this feature
+ */
+ WMI_PDEV_PARAM_ENABLE_OPTIMIZED_PERIODIC_CFR_TIMER,
} WMI_PDEV_PARAM;
typedef struct {
@@ -15329,6 +15362,68 @@ typedef struct {
A_UINT32 sw_retry_threshold;
} wmi_peer_tid_configurations_cmd_fixed_param;
+/* The below enable/disable macros are used for both per peer CFR capture
+ * control (as in wmi_peer_cfr_capture_cmd) and control of the entire periodic
+ * CFR capture feature (as in WMI_PDEV_PARAM_PER_PEER_PERIODIC_CFR_ENABLE)
+ */
+#define WMI_PEER_CFR_CAPTURE_ENABLE 1
+#define WMI_PEER_CFR_CAPTURE_DISABLE 0
+
+#define WMI_PEER_CFR_ONE_SHOT_REQUEST 0
+#define WMI_PEER_CFR_PERIODICITY_MIN 10 /* 10ms */
+#define WMI_PEER_CFR_PERIODICITY_MAX 10*60*1000 /* 10 minutes */
+
+/* Bandwidth of peer CFR captures */
+typedef enum {
+ WMI_PEER_CFR_CAPTURE_BW_20MHZ = 0,
+ WMI_PEER_CFR_CAPTURE_BW_40MHZ = 1,
+ WMI_PEER_CFR_CAPTURE_BW_80MHZ = 2,
+ WMI_PEER_CFR_CAPTURE_BW_160MHZ = 3,
+ WMI_PEER_CFR_CAPTURE_BW_80_80MHZ = 4,
+ WMI_PEER_CFR_CAPTURE_BW_MAX,
+} WMI_PEER_CFR_CAPTURE_BW;
+
+/* Peer CFR capture method */
+typedef enum {
+ /* Send null frame on the requested bw and capture CFR on ACK */
+ WMI_PEER_CFR_CAPTURE_METHOD_NULL_FRAME = 0,
+ /* New methods to be added here */
+ WMI_PEER_CFR_CAPTURE_METHOD_MAX,
+} WMI_PEER_CFR_CAPTURE_METHOD;
+
+/*
+ * Peer command structure to configure the CFR capture
+ */
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_peer_cfr_capture_cmd_fixed_param
+ */
+ A_UINT32 tlv_header;
+
+ /* WMI_PEER_CFR_CAPTURE_ENABLE: Enable CFR capture for the peer
+ * WMI_PEER_CFR_CAPTURE_DISABLE: Disable CFR capture for the peer
+ */
+ A_UINT32 request;
+ /* Peer MAC address. In AP mode, this is the address of the connected peer
+ * for which CFR capture is needed. In case of STA mode, this is the address
+ * of the AP to which the STA is connected
+ */
+ wmi_mac_addr mac_addr;
+ /* vdev id */
+ A_UINT32 vdev_id;
+ /* Periodicity of measurement in ms.
+ * WMI_PEER_CFR_ONE_SHOT_REQUEST: One-shot request i.e., Only one CFR
+ * capture for the request and no periodic CFR captures.
+ * The min value is WMI_PEER_CFR_PERIODICITY_MIN
+ * The max value is WMI_PEER_CFR_PERIODICITY_MAX
+ */
+ A_UINT32 periodicity;
+ /* BW of measurement - of type WMI_PEER_CFR_CAPTURE_BW */
+ A_UINT32 bandwidth;
+ /* Method used to capture CFR - of type WMI_PEER_CFR_CAPTURE_METHOD */
+ A_UINT32 capture_method;
+} wmi_peer_cfr_capture_cmd_fixed_param;
+
typedef enum {
WMI_PEER_IND_SMPS = 0x0, /* spatial multiplexing power save */
WMI_PEER_IND_OMN, /* operating mode notification */
diff --git a/fw/wmi_version.h b/fw/wmi_version.h
index 5ca527a3e227..ce751c547883 100755
--- a/fw/wmi_version.h
+++ b/fw/wmi_version.h
@@ -36,7 +36,7 @@
#define __WMI_VER_MINOR_ 0
/** WMI revision number has to be incremented when there is a
* change that may or may not break compatibility. */
-#define __WMI_REVISION_ 564
+#define __WMI_REVISION_ 565
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work