diff --git a/fw/htt.h b/fw/htt.h index 3519af91cd32..fe0cee91eee4 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -3879,11 +3879,14 @@ TEMPLATE_HTT_WDI_IPA_CONFIG_T(64, HTT_VAR_PADDR64_LE(tx_comp_ring_base_addr), #endif enum htt_wdi_ipa_op_code { - HTT_WDI_IPA_OPCODE_TX_SUSPEND = 0, - HTT_WDI_IPA_OPCODE_TX_RESUME = 1, - HTT_WDI_IPA_OPCODE_RX_SUSPEND = 2, - HTT_WDI_IPA_OPCODE_RX_RESUME = 3, - HTT_WDI_IPA_OPCODE_DBG_STATS = 4, + HTT_WDI_IPA_OPCODE_TX_SUSPEND = 0, + HTT_WDI_IPA_OPCODE_TX_RESUME = 1, + HTT_WDI_IPA_OPCODE_RX_SUSPEND = 2, + HTT_WDI_IPA_OPCODE_RX_RESUME = 3, + HTT_WDI_IPA_OPCODE_DBG_STATS = 4, + HTT_WDI_IPA_OPCODE_GET_SHARING_STATS = 5, + HTT_WDI_IPA_OPCODE_SET_QUOTA = 6, + HTT_WDI_IPA_OPCODE_IND_QUOTA = 7, /* keep this last */ HTT_WDI_IPA_OPCODE_MAX }; @@ -3896,7 +3899,7 @@ enum htt_wdi_ipa_op_code { * to either suspend or resume WDI_IPA TX or RX path. * |31 24|23 16|15 8|7 0| * |----------------+----------------+----------------+----------------| - * | op_code | Rsvd | msg_type | + * | op_code | Rsvd | msg_type | * |-------------------------------------------------------------------| * * Header fields: @@ -3913,12 +3916,12 @@ enum htt_wdi_ipa_op_code { PREPACK struct htt_wdi_ipa_op_request_t { /* DWORD 0: flags and meta-data */ A_UINT32 - msg_type:8, /* HTT_H2T_MSG_TYPE_WDI_IPA_OP_REQUEST */ + msg_type:8, /* HTT_H2T_MSG_TYPE_WDI_IPA_OP_REQ */ reserved:8, op_code:16; } POSTPACK; -#define HTT_WDI_IPA_OP_REQUEST_SZ 4 /* bytes */ +#define HTT_WDI_IPA_OP_REQUEST_SZ 4 #define HTT_WDI_IPA_OP_REQUEST_OP_CODE_M 0xffff0000 #define HTT_WDI_IPA_OP_REQUEST_OP_CODE_S 16 @@ -3932,6 +3935,122 @@ PREPACK struct htt_wdi_ipa_op_request_t { ((_var) |= ((_val) << HTT_WDI_IPA_OP_REQUEST_OP_CODE_S)); \ } while (0) +/** + * @brief WLAN_WDI_IPA_GET_SHARING_STATS_REQ + * |31 24|23 16|15 8|7 0| + * |----------------+----------------+----------------+----------------| + * | reserved | reset_stats | + * |-------------------------------------------------------------------| + * Header fields: + * - RESET_STATS + * Bits 7:0 + * Purpose: when 1, FW clears sharing stats + * - RESERVED + * Bits 31:8 + * Purpose: reserved bits + */ + +PREPACK struct htt_wdi_ipa_get_sharing_stats_t { + A_UINT32 + reset_stats:8, /* reset stat countis after response */ + reserved:24; +} POSTPACK; + +#define HTT_WDI_IPA_OP_REQ_GET_SHARING_STATS_SZ \ + (sizeof(struct htt_wdi_ipa_get_sharing_stats_t)) + +#define HTT_WDI_IPA_OP_REQ_GET_SHARING_STATS_RESET_STATS_M 0x000000ff +#define HTT_WDI_IPA_OP_REQ_GET_SHARING_STATS_RESET_STATS_S 0 +#define HTT_WDI_IPA_OP_REQ_GET_SHARING_STATS_RESET_STATS_GET(_var) \ + (((_var) & HTT_WDI_IPA_OP_REQ_GET_SHARING_STATS_RESET_STATS_M) >>\ + HTT_WDI_IPA_OP_REQ_GET_SHARING_STATS_RESET_STATS_S) +#define HTT_WDI_IPA_OP_REQ_GET_SHARING_STATS_RESET_STATS_SET(_var, _val)\ + do { \ + HTT_CHECK_SET_VAL( \ + HTT_WDI_IPA_OP_REQ_GET_SHARING_STATS_RESET_STATS,\ + _val); \ + ((_var) |= ((_val) << \ + HTT_WDI_IPA_OP_REQ_GET_SHARING_STATS_RESET_STATS_S)); \ + } while (0) + +/** + * @brief WLAN_WDI_IPA_SET_QUOTA_REQ + * + * |31 24|23 16|15 8|7 0| + * |----------------+----------------+----------------+----------------| + * | reserved | set_quota | + * |-------------------------------------------------------------------| + * | quota_lo | + * |-------------------------------------------------------------------| + * | quota_hi | + * |-------------------------------------------------------------------| + * Header fields: + * - set_quota + * Bits 7:0 + * Purpose: when 1, FW configures quota and starts quota monitoring. + * when 0, FW stops. + * - RESERVED + * Bits 31:8 + * Purpose: reserved bits + * - quota_lo + * Bits 31:0 + * Purpose: bytes of quota to be set, low 32-bit. + * It is accumulated number of bytes from when quota is configured. + * - quota_hi + * Bits 31:0 + * Purpose: bytes of quota to be set, high 32-bit + */ + +PREPACK struct htt_wdi_ipa_set_quota_t { + A_UINT32 + set_quota:8, /* enable quota monitoring */ + reserved:24; + A_UINT32 quota_lo; /* quota limit in bytes */ + A_UINT32 quota_hi; +} POSTPACK; + +#define HTT_WDI_IPA_OP_REQ_SET_QUOTA_SZ \ + (sizeof(struct htt_wdi_ipa_set_quota_t)) + +#define HTT_WDI_IPA_OP_REQ_SET_QUOTA_SET_QUOTA_M 0x000000ff +#define HTT_WDI_IPA_OP_REQ_SET_QUOTA_SET_QUOTA_S 0 +#define HTT_WDI_IPA_OP_REQ_SET_QUOTA_SET_QUOTA_GET(_var) \ + (((_var) & HTT_WDI_IPA_OP_REQ_SET_QUOTA_SET_QUOTA_M) >> \ + HTT_WDI_IPA_OP_REQ_SET_QUOTA_SET_QUOTA_S) +#define HTT_WDI_IPA_OP_REQ_SET_QUOTA_SET_QUOTA_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_WDI_IPA_OP_REQ_SET_QUOTA_SET_QUOTA,\ + _val); \ + ((_var) |= ((_val) << \ + HTT_WDI_IPA_OP_REQ_SET_QUOTA_SET_QUOTA_S)); \ + } while (0) + +#define HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_LO_M 0xffffffff +#define HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_LO_S 0 +#define HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_LO_GET(_var) \ + (((_var) & HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_LO_M) >> \ + HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_LO_S) +#define HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_LO_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_LO,\ + _val); \ + ((_var) |= ((_val) << \ + HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_LO_S)); \ + } while (0) + +#define HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_HI_M 0xffffffff +#define HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_HI_S 0 +#define HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_HI_GET(_var) \ + (((_var) & HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_HI_M) >> \ + HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_HI_S) +#define HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_HI_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_HI,\ + _val); \ + ((_var) |= ((_val) << \ + HTT_WDI_IPA_OP_REQ_SET_QUOTA_QUOTA_HI_S)); \ + } while (0) + /* * @brief host -> target HTT_SRING_SETUP message * @@ -8647,7 +8766,7 @@ enum htt_phy_mode { PREPACK struct htt_chan_change_t { /* DWORD 0: flags and meta-data */ - A_UINT32 msg_type:8, /* HTT_T2H_MSG_TYPE_WDI_IPA_OP_RESPONSE */ + A_UINT32 msg_type:8, /* HTT_T2H_MSG_TYPE_CHAN_CHANGE */ reserved1:24; A_UINT32 primary_chan_center_freq_mhz; A_UINT32 contig_chan1_center_freq_mhz;