qcacld-3.0: CL 1515963 – update fw common interface files
Propagation from qcacld-2.0 to qcacld-3.0.
WMI changes for per_chain_RSSI stats
Add WMI defs for weighted slow diversity
Change-Id: I90dc3218517e1a6b38fd7ded07c5ea17bc832b9b
CRs-Fixed: 865207
diff --git a/target/inc/wmi_unified.h b/target/inc/wmi_unified.h
index f2c2dae..96dd622 100644
--- a/target/inc/wmi_unified.h
+++ b/target/inc/wmi_unified.h
@@ -77,6 +77,7 @@
#define MAX_TX_RATE_VALUES 10 /*Max Tx Rates */
#define MAX_RSSI_VALUES 10 /*Max Rssi values */
+#define MAX_CHAINS 8
/* The WLAN_MAX_AC macro cannot be changed without breaking
* WMI compatibility.
@@ -3742,6 +3743,32 @@
#define WMI_FAST_DIVERSITY_BIT_OFFSET 0
#define WMI_SLOW_DIVERSITY_BIT_OFFSET 1
+#define WMI_SLOW_DIVERSITY_CH0_WEIGHT_SHIFT 2
+#define WMI_SLOW_DIVERSITY_CH0_WEIGHT_MASK \
+ (0xf << WMI_SLOW_DIVERSITY_CH0_WEIGHT_SHIFT)
+#define WMI_SLOW_DIVERSITY_CH0_WEIGHT_GET_BITS(word32) \
+ (((word32) & WMI_SLOW_DIVERSITY_CH0_WEIGHT_MASK) >> \
+ WMI_SLOW_DIVERSITY_CH0_WEIGHT_SHIFT)
+#define WMI_SLOW_DIVERSITY_CH0_WEIGHT_SET_BITS(word32, value) \
+ do { \
+ (word32) &= ~WMI_SLOW_DIVERSITY_CH0_WEIGHT_MASK; \
+ (word32) |= ((value) << WMI_SLOW_DIVERSITY_CH0_WEIGHT_SHIFT) & \
+ WMI_SLOW_DIVERSITY_CH0_WEIGHT_MASK; \
+ } while (0)
+
+#define WMI_SLOW_DIVERSITY_CH1_WEIGHT_SHIFT 6
+#define WMI_SLOW_DIVERSITY_CH1_WEIGHT_MASK \
+ (0xf << WMI_SLOW_DIVERSITY_CH1_WEIGHT_SHIFT)
+#define WMI_SLOW_DIVERSITY_CH1_WEIGHT_GET_BITS(word32) \
+ (((word32) & WMI_SLOW_DIVERSITY_CH1_WEIGHT_MASK) >> \
+ WMI_SLOW_DIVERSITY_CH1_WEIGHT_SHIFT)
+#define WMI_SLOW_DIVERSITY_CH1_WEIGHT_SET_BITS(word32, value) \
+ do { \
+ (word32) &= ~WMI_SLOW_DIVERSITY_CH1_WEIGHT_MASK; \
+ (word32) |= ((value) << WMI_SLOW_DIVERSITY_CH1_WEIGHT_SHIFT) & \
+ WMI_SLOW_DIVERSITY_CH1_WEIGHT_MASK; \
+ } while (0)
+
typedef struct {
/** TLV tag and len; tag equals
* WMITLV_TAG_STRUC_wmi_pdev_set_antenna_diversity_cmd_fixed_param
@@ -3755,10 +3782,16 @@
*/
A_UINT32 pdev_id;
};
- /** parameter */
- /** bit0 is for enable/disable FAST diversity,
- * and bit1 is for enable/disable SLOW diversity,
- * 0->disable, 1->enable
+ /*
+ * The following "value" field is divided into bit fields as follows:
+ * bits | purpose
+ * -----+---------------------------------------
+ * 0 | enable/disable FAST diversity
+ * 1 | enable/disable SLOW diversity
+ * 5:2 | chain0 slow-diversity weighting factor
+ * 9:6 | chain1 slow-diversity weighting factor
+ * 31:10| currenty unused (set to 0x0)
+ * Refer to the above WMI_[FAST/SLOW]_DIVERSITY constants.
*/
A_UINT32 value;
} wmi_pdev_set_antenna_diversity_cmd_fixed_param;
@@ -4193,6 +4226,7 @@
WMI_REQUEST_VDEV_RATE_STAT = 0x20,
WMI_REQUEST_INST_STAT = 0x40,
WMI_REQUEST_MIB_STAT = 0x80,
+ WMI_REQUEST_RSSI_PER_CHAIN_STAT = 0x100,
} wmi_stats_id;
typedef struct {
@@ -4898,6 +4932,28 @@
} wmi_mib_stats;
typedef struct {
+ /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_rssi_stats */
+ A_UINT32 tlv_header;
+ A_UINT32 vdev_id;
+ A_INT32 rssi_avg_beacon[MAX_CHAINS];
+ A_INT32 rssi_avg_data[MAX_CHAINS];
+ wmi_mac_addr peer_macaddr;
+} wmi_rssi_stats;
+
+typedef struct {
+ /*
+ * TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_per_chain_rssi_stats
+ */
+ A_UINT32 tlv_header;
+ A_UINT32 num_per_chain_rssi_stats;
+ /*
+ * This TLV is followed by another TLV of array of structs:
+ * wmi_rssi_stats rssi_stats[num_per_chain_rssi_stats];
+ */
+} wmi_per_chain_rssi_stats;
+
+typedef struct {
A_UINT32 tlv_header;
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_create_cmd_fixed_param */
/** unique id identifying the VDEV, generated by the caller */