summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSandeep Puligilla <spuligil@codeaurora.org>2017-03-09 11:01:11 -0800
committerSandeep Puligilla <spuligil@codeaurora.org>2017-03-16 06:54:06 -0700
commitf186655939ba41a0eed147aaec5265d2c494ab4b (patch)
treec7931e4a8cd04f0d00c72761ac1d5c16552f5556
parent32fd566d95c982fb2ae040ba435e43ec25e526ff (diff)
fw-api: CL 2914574 - update fw common interface files
rx PHY err RSSI values for chains 4-7 Change-Id: I126748318904565d6229a2209e810b9246c00ce4 CRs-Fixed: 1107600
-rwxr-xr-xfw/wmi_tlv_defs.h8
-rwxr-xr-xfw/wmi_unified.h67
-rwxr-xr-xfw/wmi_version.h2
3 files changed, 74 insertions, 3 deletions
diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h
index 6991c3c17dea..a7d03cfef2b9 100755
--- a/fw/wmi_tlv_defs.h
+++ b/fw/wmi_tlv_defs.h
@@ -809,6 +809,8 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_vdev_get_arp_stats_event_fixed_param,
WMITLV_TAG_STRUC_wmi_iface_offload_stats,
WMITLV_TAG_STRUC_wmi_request_stats_cmd_sub_struc_param,
+ WMITLV_TAG_STRUC_rssi_ctl_ext,
+ WMITLV_TAG_STRUC_wmi_single_phyerr_ext_rx_hdr,
} WMITLV_TAG_ID;
/*
@@ -3377,7 +3379,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_CHAN_INFO_EVENTID);
/* Phy Error Event */
#define WMITLV_TABLE_WMI_PHYERR_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_comb_phyerr_rx_hdr, wmi_comb_phyerr_rx_hdr, hdr, WMITLV_SIZE_FIX) \
- WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR)
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_single_phyerr_ext_rx_hdr, single_phyerr_ext, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_PHYERR_EVENTID);
/* TX Pause/Unpause event */
@@ -3425,7 +3428,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STA_KICKOUT_EVENTID);
/* Management Rx Event */
#define WMITLV_TABLE_WMI_MGMT_RX_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_rx_hdr, wmi_mgmt_rx_hdr, hdr, WMITLV_SIZE_FIX) \
- WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR)
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rssi_ctl_ext, rssi_ctl_ext, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_RX_EVENTID);
/* TBTT offset Event */
diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h
index e05b6046b485..066f40d3280d 100755
--- a/fw/wmi_unified.h
+++ b/fw/wmi_unified.h
@@ -3040,6 +3040,7 @@ typedef struct {
/** flag indicating that the the mgmt frame (probe req/beacon) is received in the context of matched network by FW ENLO */
#define WMI_MGMT_RX_HDR_ENLO 0x02
+#define MAX_ANTENNA_EIGHT 8
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mgmt_rx_hdr */
@@ -3089,8 +3090,22 @@ typedef struct {
/* This TLV is followed by array of bytes:
* A_UINT8 bufp[]; <-- management frame buffer
*/
+/* This TLV is optionally followed by array of struct:
+ * wmi_rssi_ctl_ext rssi_ctl_ext;
+ */
} wmi_mgmt_rx_hdr;
+/*
+ * Instead of universally increasing the RX_HDR_HEADROOM size which may cause problems for older targets,
+ * this new ext_hdr can be used for extending the header and will be only applicable for new targets.
+ */
+typedef struct
+{
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_rssi_ctl_ext */
+ /** RSSI of PRI 20MHz for each chain, in dB w.r.t. noise floor */
+ A_UINT32 rssi_ctl_ext[MAX_ANTENNA_EIGHT - ATH_MAX_ANTENNA];
+} wmi_rssi_ctl_ext;
+
typedef struct {
/** TSF timestamp */
A_UINT32 tsf_timestamp;
@@ -3151,6 +3166,41 @@ typedef struct {
A_UINT32 buf_len;
} wmi_single_phyerr_rx_hdr;
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_single_phyerr_ext_rx_hdr */
+ /**
+ * RSSI on chain 4 through 7 in dB w.r.t noise floor.
+ *
+ * This is formatted the same as the PPDU_START RX descriptor
+ * field:
+ *
+ * [7:0]: pri20
+ * [15:8]: sec20
+ * [23:16]: sec40
+ * [31:24]: sec80
+ */
+ A_UINT32 rssi_chain4;
+ A_UINT32 rssi_chain5;
+ A_UINT32 rssi_chain6;
+ A_UINT32 rssi_chain7;
+ /**
+ * Last calibrated NF value for chain 4 through 7 in dbm
+ *
+ * nf_list_3:
+ * + [15:0] - chain 4
+ * + [31:16] - chain 5
+ *
+ * nf_list_4:
+ * + [15:0] - chain 6
+ * + [31:16] - chain 7
+ *
+ * Each chain's noise floor is stored as a sign-extended (negative)
+ * value in dBm units.
+ */
+ A_UINT32 nf_list_3;
+ A_UINT32 nf_list_4;
+} wmi_single_phyerr_ext_rx_hdr;
+
#define WMI_UNIFIED_FREQINFO_1_LO 0x000000ff
#define WMI_UNIFIED_FREQINFO_1_LO_S 0
#define WMI_UNIFIED_FREQINFO_1_HI 0x0000ff00
@@ -3216,10 +3266,23 @@ typedef struct {
#define WMI_UNIFIED_CHAIN_3 0xffff0000
#define WMI_UNIFIED_CHAIN_3_S 16
+#define WMI_UNIFIED_CHAIN_4 0x0000ffff
+#define WMI_UNIFIED_CHAIN_4_S 0
+#define WMI_UNIFIED_CHAIN_5 0xffff0000
+#define WMI_UNIFIED_CHAIN_5_S 16
+#define WMI_UNIFIED_CHAIN_6 0x0000ffff
+#define WMI_UNIFIED_CHAIN_6_S 0
+#define WMI_UNIFIED_CHAIN_7 0xffff0000
+#define WMI_UNIFIED_CHAIN_7_S 16
+
#define WMI_UNIFIED_CHAIN_0_FIELD nf_list_1
#define WMI_UNIFIED_CHAIN_1_FIELD nf_list_1
#define WMI_UNIFIED_CHAIN_2_FIELD nf_list_2
#define WMI_UNIFIED_CHAIN_3_FIELD nf_list_2
+#define WMI_UNIFIED_CHAIN_4_FIELD nf_list_3
+#define WMI_UNIFIED_CHAIN_5_FIELD nf_list_3
+#define WMI_UNIFIED_CHAIN_6_FIELD nf_list_4
+#define WMI_UNIFIED_CHAIN_7_FIELD nf_list_4
#define WMI_UNIFIED_NF_CHAIN_GET(hdr, c) \
((int16_t) (WMI_F_MS((hdr)->WMI_UNIFIED_CHAIN_##c##_FIELD, \
@@ -3298,6 +3361,10 @@ typedef struct {
* header - payload, header - payload...
* (The header is of type: wmi_single_phyerr_rx_hdr)
* A_UINT8 bufp[];
+ * The extension hdr will repeat num_phyerr_events of times
+ * and will have 1:1 mapping with above header. i.e the 1st
+ * ext_rx_hdr will belong to 1st phyerr_rx_hdr and so on.
+ * wmi_single_phyerr_ext_rx_hdr single_phyerr_ext;
*/
} wmi_comb_phyerr_rx_hdr;
diff --git a/fw/wmi_version.h b/fw/wmi_version.h
index 80d27bddcd06..af4df03ded28 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_ 362
+#define __WMI_REVISION_ 363
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work