diff --git a/fw/htt.h b/fw/htt.h index 73198698a3fc..8c6472c5cc46 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -274,9 +274,10 @@ * 3.144 Add svc_inst_req_type in htt_h2t_mpduq_or_msduq_info. * 3.145 Add 3rd bit for rx_hdr_len in RX_RING_SELECTION_CFG * 3.146 Add HTT_RXOLE_ASE_STATUS_RING def. + * 3.147 Add direct_refill flag in SRING_SETUP msg. */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 146 +#define HTT_CURRENT_VERSION_MINOR 147 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -5494,7 +5495,8 @@ PREPACK struct htt_sring_setup_t { prefetch_timer_cfg: 3, response_required: 1, ipa_drop_flag: 1, - reserved1: 11; + direct_refill: 1, + reserved1: 10; A_UINT32 ipa_drop_low_threshold: 8, ipa_drop_high_threshold: 8, reserved: 16; @@ -5852,6 +5854,27 @@ enum htt_srng_ring_id { ((_var) |= ((_val) << HTT_SRING_SETUP_RESPONSE_REQUIRED_S)); \ } while (0) +#define HTT_SRING_SETUP_IPA_DROP_FLAG_M 0x00100000 +#define HTT_SRING_SETUP_IPA_DROP_FLAG_S 20 +#define HTT_SRING_SETUP_IPA_DROP_FLAG_GET(_var) \ + (((_var) & HTT_SRING_SETUP_IPA_DROP_FLAG_M) >> \ + HTT_SRING_SETUP_IPA_DROP_FLAG_S) +#define HTT_SRING_SETUP_IPA_DROP_FLAG_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_SRING_SETUP_IPA_DROP_FLAG, _val); \ + ((_var) |= ((_val) << HTT_SRING_SETUP_IPA_DROP_FLAG_S)); \ + } while (0) + +#define HTT_SRING_SETUP_DIRECT_REFILL_M 0x00200000 +#define HTT_SRING_SETUP_DIRECT_REFILL_S 21 +#define HTT_SRING_SETUP_DIRECT_REFILL_GET(_var) \ + (((_var) & HTT_SRING_SETUP_DIRECT_REFILL_M) >> \ + HTT_SRING_SETUP_DIRECT_REFILL_S) +#define HTT_SRING_SETUP_DIRECT_REFILL_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_SRING_SETUP_DIRECT_REFILL, _val); \ + ((_var) |= ((_val) << HTT_SRING_SETUP_DIRECT_REFILL_S)); \ + } while (0) /** * @brief host -> target RX ring selection config message diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 6adcdbfac4e5..4a53da1202d4 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -738,6 +738,7 @@ typedef enum { WMI_SERVICE_CCK_RX_SUPPORT_5GHZ = 475, /* Indicates FW supports CCK RX in 5 GHz band */ WMI_SERVICE_CCK_TX_SUPPORT_5GHZ = 476, /* Indicates FW supports CCK TX in 5 GHZ band */ + WMI_SERVICE_DIRECT_REFILL_SUPPORT = 477, /* Indicates FW supports direct refill for RX buffer ring */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 333da66baef9..03c69db4bb15 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -5106,8 +5106,16 @@ typedef struct { * country supports SP regulatory rules. * Refer to the below defintions of WMI_RSRC_CFG_HOST_SERVICE_FLAG * AFC_TRIGGER_ON_DEFAULT_CC_EVENT_GET and _SET macros. + * Bit 23 + * This bit will set by host to inform FW that direct refill to + * SW2RxDMA ring is supported by the host and the ring which is + * directly refilled by HOST will be indicated in the + * HTT_H2T_MSG_TYPE_SRING_SETUP and FW should refill the Rx buffers + * to the secondary refill ring. + * Refer to the below definitions of WMI_RSRC_CFG_HOST_SERVICE_FLAG + * DIRECT_REFILL_SUPPORT_GET and _SET macros. * - * Bits 31:23 - Reserved + * Bits 31:24 - Reserved */ A_UINT32 host_service_flags; @@ -5686,6 +5694,12 @@ typedef struct { #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_AFC_TRIGGER_ON_DEFAULT_CC_EVENT_SET(host_service_flags, val) \ WMI_SET_BITS(host_service_flags, 22, 1, val) +/* This bit is used to inform FW that HOST supports direct Rx buffers refill to the SW2RxDMA ring*/ +#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_DIRECT_REFILL_SUPPORT_GET(host_service_flags) \ + WMI_GET_BITS(host_service_flags, 23, 1) +#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_DIRECT_REFILL_SUPPORT_SET(host_service_flags, val) \ + WMI_SET_BITS(host_service_flags, 23, 1, val) + #define WMI_RSRC_CFG_CARRIER_CFG_CHARTER_ENABLE_GET(carrier_config) \ WMI_GET_BITS(carrier_config, 0, 1) diff --git a/fw/wmi_version.h b/fw/wmi_version.h index c04994234144..744f2302c459 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1670 +#define __WMI_REVISION_ 1671 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work