summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKang Xu <kangxu@qti.qualcomm.com>2015-06-09 18:49:16 +0800
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2015-06-15 17:34:00 +0530
commit951ca21675ae2f46e5f40128272f16e4f26d2ebc (patch)
treecd3c2701808f98cb002151d8956f0e539dbd165f
parente9c026423872e6fe6ef619401af1272d289b67f1 (diff)
cld: CL 1312909 - update fw common interface files
Update HTT version to 3.23: Define peer rate reporting to host for HL download scheduling Change-Id:I75f667fb96309c42321ef6c95d68785086c69d26 CRs-Fixed: 850824
-rw-r--r--CORE/CLD_TXRX/HTT/htt.h124
1 files changed, 123 insertions, 1 deletions
diff --git a/CORE/CLD_TXRX/HTT/htt.h b/CORE/CLD_TXRX/HTT/htt.h
index cbf09aeaf7a8..4e362d175e23 100644
--- a/CORE/CLD_TXRX/HTT/htt.h
+++ b/CORE/CLD_TXRX/HTT/htt.h
@@ -120,9 +120,15 @@
* 3.21 Add optional rx channel spec to HL RX_IND.
* 3.22 Expand rx_reorder_stats
* (distinguish duplicates within vs. outside block ack window)
+ * 3.23 Add HTT_T2H_MSG_TYPE_RATE_REPORT to report peer justified rate.
+ * The justified rate is calculated by two steps. The first is to
+ * multiply user-rate by (1 - PER) and the other is to smooth the
+ * step 1's result by a low pass filter.
+ * This change allows HL download scheduling to consider the WLAN
+ * rate that will be used for transmitting the downloaded frames.
*/
#define HTT_CURRENT_VERSION_MAJOR 3
-#define HTT_CURRENT_VERSION_MINOR 21
+#define HTT_CURRENT_VERSION_MINOR 23
#define HTT_NUM_TX_FRAG_DESC 1024
@@ -2923,6 +2929,7 @@ enum htt_t2h_msg_type {
HTT_T2H_MSG_TYPE_WDI_IPA_OP_RESPONSE = 0x14,
HTT_T2H_MSG_TYPE_CHAN_CHANGE = 0x15,
HTT_T2H_MSG_TYPE_RX_OFLD_PKT_ERR = 0x16,
+ HTT_T2H_MSG_TYPE_RATE_REPORT = 0x17,
HTT_T2H_MSG_TYPE_TEST,
/* keep this last */
@@ -6490,5 +6497,120 @@ enum htt_rx_ofld_pkt_err_type {
((_var) |= ((_val) << HTT_RX_OFLD_PKT_ERR_MIC_ERR_PN_47_32_S)); \
} while (0)
+/**
+ * @brief peer rate report message
+ *
+ * @details
+ * HTT_T2H_MSG_TYPE_RATE_REPORT message is sent by target to host to
+ * indicate the justified rate of all the peers.
+ *
+ * |31 24|23 16|15 8|7 0|
+ * |-------------+-------------+-------------+-------------|
+ * | peer_count | reserved | msg_type |
+ * |-------------------------------------------------------|
+ * : Payload (variant number of peer rate report) :
+ * :- - -- - - - - - - - - - - - - - - - - - - - - - - - -:
+ * Header fields:
+ * - msg_type
+ * Bits 7:0
+ * Purpose: Identifies this as HTT_T2H_MSG_TYPE_RATE_REPORT message.
+ * value: 0x17 (HTT_T2H_MSG_TYPE_RATE_REPORT)
+ * - reserved
+ * Bits 15:8
+ * Purpose:
+ * value:
+ * - peer_count
+ * Bits 31:16
+ * Purpose: Specify how many peer rate report elements are present
+ * in the payload.
+ * value:
+ *
+ * Payload:
+ * There are variant number of peer rate report follow the first 32
+ * bits. The peer rate report is defined as follows.
+ *
+ * |31 20|19 16|15 0|
+ * |----------------+--------+------------------------|-
+ * | reserved | phy | peer_id | \
+ * |--------------------------------------------------| -> report #0
+ * | rate | /
+ * |----------------+--------+------------------------|-
+ * | reserved | phy | peer_id | \
+ * |--------------------------------------------------| -> report #1
+ * | rate | /
+ * |----------------+--------+------------------------|-
+ * | reserved | phy | peer_id | \
+ * |--------------------------------------------------| -> report #2
+ * | rate | /
+ * |---- ---------------------------------------------|-
+ * : :
+ * : :
+ * : :
+ * :--------------------------------------------------:
+ *
+ * - peer_id
+ * Bits 15:0
+ * Purpose: identify the peer
+ * value:
+ * - phy
+ * Bits 19:16
+ * Purpose: identify which phy is in use
+ * value: 0=11b, 1=11a/g, 2=11n, 3=11ac.
+ * Please see enum htt_peer_report_phy_type for detail.
+ * - reserved
+ * Bits 31:20
+ * Purpose:
+ * value:
+ * - rate
+ * Bits 31:0
+ * Purpose: represent the justified rate of the peer specified
+ * by peer_id
+ * value:
+ */
+
+enum htt_peer_rate_report_phy_type {
+ HTT_PEER_RATE_REPORT_11B = 0,
+ HTT_PEER_RATE_REPORT_11A_G,
+ HTT_PEER_RATE_REPORT_11N,
+ HTT_PEER_RATE_REPORT_11AC,
+};
+
+#define HTT_PEER_RATE_REPORT_SIZE 8
+
+#define HTT_PEER_RATE_REPORT_MSG_PEER_COUNT_M 0xffff0000
+#define HTT_PEER_RATE_REPORT_MSG_PEER_COUNT_S 16
+
+#define HTT_PEER_RATE_REPORT_MSG_PEER_ID_M 0x0000ffff
+#define HTT_PEER_RATE_REPORT_MSG_PEER_ID_S 0
+
+#define HTT_PEER_RATE_REPORT_MSG_PHY_M 0x000f0000
+#define HTT_PEER_RATE_REPORT_MSG_PHY_S 16
+
+#define HTT_PEER_RATE_REPORT_MSG_PEER_COUNT_GET(_var) \
+ (((_var) & HTT_PEER_RATE_REPORT_MSG_PEER_COUNT_M) \
+ >> HTT_PEER_RATE_REPORT_MSG_PEER_COUNT_S)
+#define HTT_PEER_RATE_REPORT_MSG_PEER_COUNT_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_PEER_RATE_REPORT_MSG_PEER_COUNT, _val); \
+ ((_var) |= ((_val) << HTT_PEER_RATE_REPORT_MSG_PEER_COUNT_S)); \
+ } while (0)
+
+#define HTT_PEER_RATE_REPORT_MSG_PEER_ID_GET(_var) \
+ (((_var) & HTT_PEER_RATE_REPORT_MSG_PEER_ID_M) \
+ >> HTT_PEER_RATE_REPORT_MSG_PEER_ID_S)
+#define HTT_PEER_RATE_REPORT_MSG_PEER_ID_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_PEER_RATE_REPORT_MSG_PEER_ID, _val); \
+ ((_var) |= ((_val) << HTT_PEER_RATE_REPORT_MSG_PEER_ID_S)); \
+ } while (0)
+
+#define HTT_PEER_RATE_REPORT_MSG_PHY_GET(_var) \
+ (((_var) & HTT_PEER_RATE_REPORT_MSG_PHY_M) \
+ >> HTT_PEER_RATE_REPORT_MSG_PHY_S)
+#define HTT_PEER_RATE_REPORT_MSG_PHY_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_PEER_RATE_REPORT_MSG_PHY, _val); \
+ ((_var) |= ((_val) << HTT_PEER_RATE_REPORT_MSG_PHY_S)); \
+ } while (0)
#endif