diff --git a/fw/htt.h b/fw/htt.h index 58459e69d820..8c6472c5cc46 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -273,9 +273,11 @@ * 3.143 Add T2H HAPS msg def. * 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 145 +#define HTT_CURRENT_VERSION_MINOR 147 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -5493,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; @@ -5526,6 +5529,7 @@ enum htt_srng_ring_id { HTT_RXDMA_WBM_BUF0_RING, /* used for SFE Datapath */ HTT_RXDMA_WBM_BUF1_RING, /* used for PPE Datapath */ HTT_RXDMA_WBM_BUF2_RING, /* used for MGMT path */ + HTT_RXOLE_ASE_STATUS_RING, /* RxOLE2SW ASE Status ring */ /* Add Other SRING which can't be directly configured by host software above this line */ }; @@ -5850,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 66e421fe9c2e..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) @@ -38726,8 +38740,8 @@ typedef struct { (WMI_GET_BITS(uhr_cap_mac[1], 0, 2) << 3)) #define WMI_UHRCAP_MAC_UPDATE_IND_TIM_SET(uhr_cap_mac, value) \ do { \ - WMI_SET_BITS(uhr_cap_mac[0], 29, 3, value & 0x7) \ - WMI_SET_BITS(uhr_cap_mac[1], 0, 2, ((value & 0x18) >> 3)) \ + WMI_SET_BITS(uhr_cap_mac[0], 29, 3, value & 0x7); \ + WMI_SET_BITS(uhr_cap_mac[1], 0, 2, ((value & 0x18) >> 3)); \ } while (0) /* Bit 34: Bounded ESS */ @@ -38785,32 +38799,32 @@ typedef struct { #define WMI_CAP_EXT2_NPCA_ENABLED_GET(npca_capability) \ WMI_GET_BITS(npca_capability, 0, 1) #define WMI_CAP_EXT2_NPCA_ENABLED_SET(npca_capability, value) \ - WMI_sET_BITS(npca_capability, 0, 1, value) + WMI_SET_BITS(npca_capability, 0, 1, value) #define WMI_CAP_EXT2_NPCA_MIN_DUR_THRESHOLD_GET(npca_capability) \ WMI_GET_BITS(npca_capability, 1, 4) #define WMI_CAP_EXT2_NPCA_MIN_DUR_THRESHOLD_SET(npca_capability, value) \ - WMI_sET_BITS(npca_capability, 1, 5, value) + WMI_SET_BITS(npca_capability, 1, 5, value) #define WMI_CAP_EXT2_NPCA_SWITCH_DELAY_GET(npca_capability) \ WMI_GET_BITS(npca_capability, 5, 6) #define WMI_CAP_EXT2_NPCA_SWITCH_DELAY_SET(npca_capability, value) \ - WMI_sET_BITS(npca_capability, 5, 6, value) + WMI_SET_BITS(npca_capability, 5, 6, value) #define WMI_CAP_EXT2_NPCA_SWITCH_BACK_DELAY_GET(npca_capability) \ WMI_GET_BITS(npca_capability, 11, 6) #define WMI_CAP_EXT2_NPCA_SWITCH_BACK_DELAY_SET(npca_capability, value) \ - WMI_sET_BITS(npca_capability, 11, 6, value) + WMI_SET_BITS(npca_capability, 11, 6, value) #define WMI_CAP_EXT2_NPCA_QSRC_GET(npca_capability) \ WMI_GET_BITS(npca_capability, 17, 2) #define WMI_CAP_EXT2_NPCA_QSRC_SET(npca_capability, value) \ - WMI_sET_BITS(npca_capability, 17, 2, value) + WMI_SET_BITS(npca_capability, 17, 2, value) #define WMI_CAP_EXT2_NPCA_MOPLEN_GET(npca_capability) \ WMI_GET_BITS(npca_capability, 19, 1) #define WMI_CAP_EXT2_NPCA_MOPLEN_SET(npca_capability, value) \ - WMI_sET_BITS(npca_capability, 19, 1, value) + WMI_SET_BITS(npca_capability, 19, 1, value) typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index b3270921e3c5..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_ 1669 +#define __WMI_REVISION_ 1671 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work