diff options
| author | Kang Xu <kangxu@qti.qualcomm.com> | 2015-06-09 18:49:16 +0800 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2015-06-15 17:34:00 +0530 |
| commit | 951ca21675ae2f46e5f40128272f16e4f26d2ebc (patch) | |
| tree | cd3c2701808f98cb002151d8956f0e539dbd165f | |
| parent | e9c026423872e6fe6ef619401af1272d289b67f1 (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.h | 124 |
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 |
