#ifndef ATH12K_HAL_RX_H
#define ATH12K_HAL_RX_H
struct hal_rx_wbm_rel_info { … };
#define HAL_INVALID_PEERID …
#define VHT_SIG_SU_NSS_MASK …
#define HAL_RX_MAX_MCS …
#define HAL_RX_MAX_NSS …
#define HAL_RX_MPDU_INFO_PN_GET_BYTE1(__val) …
#define HAL_RX_MPDU_INFO_PN_GET_BYTE2(__val) …
#define HAL_RX_MPDU_INFO_PN_GET_BYTE3(__val) …
#define HAL_RX_MPDU_INFO_PN_GET_BYTE4(__val) …
struct hal_rx_mon_status_tlv_hdr { … };
enum hal_rx_su_mu_coding { … };
enum hal_rx_gi { … };
enum hal_rx_bw { … };
enum hal_rx_preamble { … };
enum hal_rx_reception_type { … };
enum hal_rx_legacy_rate { … };
#define HAL_TLV_STATUS_PPDU_NOT_DONE …
#define HAL_TLV_STATUS_PPDU_DONE …
#define HAL_TLV_STATUS_BUF_DONE …
#define HAL_TLV_STATUS_PPDU_NON_STD_DONE …
#define HAL_RX_FCS_LEN …
enum hal_rx_mon_status { … };
#define HAL_RX_MAX_MPDU …
#define HAL_RX_NUM_WORDS_PER_PPDU_BITMAP …
struct hal_rx_user_status { … };
#define HAL_MAX_UL_MU_USERS …
struct hal_rx_mon_ppdu_info { … };
#define HAL_RX_PPDU_START_INFO0_PPDU_ID …
struct hal_rx_ppdu_start { … } __packed;
#define HAL_RX_PPDU_END_USER_STATS_INFO0_MPDU_CNT_FCS_ERR …
#define HAL_RX_PPDU_END_USER_STATS_INFO1_MPDU_CNT_FCS_OK …
#define HAL_RX_PPDU_END_USER_STATS_INFO1_FC_VALID …
#define HAL_RX_PPDU_END_USER_STATS_INFO1_QOS_CTRL_VALID …
#define HAL_RX_PPDU_END_USER_STATS_INFO1_HT_CTRL_VALID …
#define HAL_RX_PPDU_END_USER_STATS_INFO1_PKT_TYPE …
#define HAL_RX_PPDU_END_USER_STATS_INFO2_AST_INDEX …
#define HAL_RX_PPDU_END_USER_STATS_INFO2_FRAME_CTRL …
#define HAL_RX_PPDU_END_USER_STATS_INFO3_QOS_CTRL …
#define HAL_RX_PPDU_END_USER_STATS_INFO4_UDP_MSDU_CNT …
#define HAL_RX_PPDU_END_USER_STATS_INFO4_TCP_MSDU_CNT …
#define HAL_RX_PPDU_END_USER_STATS_INFO5_OTHER_MSDU_CNT …
#define HAL_RX_PPDU_END_USER_STATS_INFO5_TCP_ACK_MSDU_CNT …
#define HAL_RX_PPDU_END_USER_STATS_INFO6_TID_BITMAP …
#define HAL_RX_PPDU_END_USER_STATS_INFO6_TID_EOSP_BITMAP …
#define HAL_RX_PPDU_END_USER_STATS_MPDU_DELIM_OK_BYTE_COUNT …
#define HAL_RX_PPDU_END_USER_STATS_MPDU_DELIM_ERR_BYTE_COUNT …
struct hal_rx_ppdu_end_user_stats { … } __packed;
struct hal_rx_ppdu_end_user_stats_ext { … } __packed;
#define HAL_RX_HT_SIG_INFO_INFO0_MCS …
#define HAL_RX_HT_SIG_INFO_INFO0_BW …
#define HAL_RX_HT_SIG_INFO_INFO1_STBC …
#define HAL_RX_HT_SIG_INFO_INFO1_FEC_CODING …
#define HAL_RX_HT_SIG_INFO_INFO1_GI …
struct hal_rx_ht_sig_info { … } __packed;
#define HAL_RX_LSIG_B_INFO_INFO0_RATE …
#define HAL_RX_LSIG_B_INFO_INFO0_LEN …
struct hal_rx_lsig_b_info { … } __packed;
#define HAL_RX_LSIG_A_INFO_INFO0_RATE …
#define HAL_RX_LSIG_A_INFO_INFO0_LEN …
#define HAL_RX_LSIG_A_INFO_INFO0_PKT_TYPE …
struct hal_rx_lsig_a_info { … } __packed;
#define HAL_RX_VHT_SIG_A_INFO_INFO0_BW …
#define HAL_RX_VHT_SIG_A_INFO_INFO0_STBC …
#define HAL_RX_VHT_SIG_A_INFO_INFO0_GROUP_ID …
#define HAL_RX_VHT_SIG_A_INFO_INFO0_NSTS …
#define HAL_RX_VHT_SIG_A_INFO_INFO1_GI_SETTING …
#define HAL_RX_VHT_SIG_A_INFO_INFO1_SU_MU_CODING …
#define HAL_RX_VHT_SIG_A_INFO_INFO1_MCS …
#define HAL_RX_VHT_SIG_A_INFO_INFO1_BEAMFORMED …
struct hal_rx_vht_sig_a_info { … } __packed;
enum hal_rx_vht_sig_a_gi_setting { … };
#define HE_GI_0_8 …
#define HE_GI_0_4 …
#define HE_GI_1_6 …
#define HE_GI_3_2 …
#define HE_LTF_1_X …
#define HE_LTF_2_X …
#define HE_LTF_4_X …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO0_TRANSMIT_MCS …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO0_DCM …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO0_TRANSMIT_BW …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO0_CP_LTF_SIZE …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO0_NSTS …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO0_BSS_COLOR …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO0_SPATIAL_REUSE …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO0_FORMAT_IND …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO0_BEAM_CHANGE …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO0_DL_UL_FLAG …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO1_TXOP_DURATION …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO1_CODING …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO1_LDPC_EXTRA …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO1_STBC …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO1_TXBF …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO1_PKT_EXT_FACTOR …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO1_PKT_EXT_PE_DISAM …
#define HAL_RX_HE_SIG_A_SU_INFO_INFO1_DOPPLER_IND …
struct hal_rx_he_sig_a_su_info { … } __packed;
#define HAL_RX_HE_SIG_A_MU_DL_INFO0_UL_FLAG …
#define HAL_RX_HE_SIG_A_MU_DL_INFO0_MCS_OF_SIGB …
#define HAL_RX_HE_SIG_A_MU_DL_INFO0_DCM_OF_SIGB …
#define HAL_RX_HE_SIG_A_MU_DL_INFO0_BSS_COLOR …
#define HAL_RX_HE_SIG_A_MU_DL_INFO0_SPATIAL_REUSE …
#define HAL_RX_HE_SIG_A_MU_DL_INFO0_TRANSMIT_BW …
#define HAL_RX_HE_SIG_A_MU_DL_INFO0_NUM_SIGB_SYMB …
#define HAL_RX_HE_SIG_A_MU_DL_INFO0_COMP_MODE_SIGB …
#define HAL_RX_HE_SIG_A_MU_DL_INFO0_CP_LTF_SIZE …
#define HAL_RX_HE_SIG_A_MU_DL_INFO0_DOPPLER_INDICATION …
#define HAL_RX_HE_SIG_A_MU_DL_INFO1_TXOP_DURATION …
#define HAL_RX_HE_SIG_A_MU_DL_INFO1_CODING …
#define HAL_RX_HE_SIG_A_MU_DL_INFO1_NUM_LTF_SYMB …
#define HAL_RX_HE_SIG_A_MU_DL_INFO1_LDPC_EXTRA …
#define HAL_RX_HE_SIG_A_MU_DL_INFO1_STBC …
#define HAL_RX_HE_SIG_A_MU_DL_INFO1_TXBF …
#define HAL_RX_HE_SIG_A_MU_DL_INFO1_PKT_EXT_FACTOR …
#define HAL_RX_HE_SIG_A_MU_DL_INFO1_PKT_EXT_PE_DISAM …
struct hal_rx_he_sig_a_mu_dl_info { … } __packed;
#define HAL_RX_HE_SIG_B1_MU_INFO_INFO0_RU_ALLOCATION …
struct hal_rx_he_sig_b1_mu_info { … } __packed;
#define HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_ID …
#define HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_MCS …
#define HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_CODING …
#define HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_NSTS …
struct hal_rx_he_sig_b2_mu_info { … } __packed;
#define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_ID …
#define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_NSTS …
#define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_TXBF …
#define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_MCS …
#define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_DCM …
#define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_CODING …
struct hal_rx_he_sig_b2_ofdma_info { … } __packed;
enum hal_rx_ul_reception_type { … };
#define HAL_RX_PHYRX_RSSI_LEGACY_INFO_INFO0_RSSI_COMB …
#define HAL_RX_PHYRX_RSSI_LEGACY_INFO_RSVD1_RECEPTION …
struct hal_rx_phyrx_rssi_legacy_info { … } __packed;
#define HAL_RX_MPDU_START_INFO0_PPDU_ID …
#define HAL_RX_MPDU_START_INFO1_PEERID …
#define HAL_RX_MPDU_START_INFO2_MPDU_LEN …
struct hal_rx_mpdu_start { … } __packed;
#define HAL_RX_PPDU_END_DURATION …
struct hal_rx_ppdu_end_duration { … } __packed;
struct hal_rx_rxpcu_classification_overview { … } __packed;
struct hal_rx_msdu_desc_info { … };
#define HAL_RX_NUM_MSDU_DESC …
struct hal_rx_msdu_list { … };
#define HAL_RX_FBM_ACK_INFO0_ADDR1_31_0 …
#define HAL_RX_FBM_ACK_INFO1_ADDR1_47_32 …
#define HAL_RX_FBM_ACK_INFO1_ADDR2_15_0 …
#define HAL_RX_FBM_ACK_INFO2_ADDR2_47_16 …
struct hal_rx_frame_bitmap_ack { … } __packed;
#define HAL_RX_RESP_REQ_INFO0_PPDU_ID …
#define HAL_RX_RESP_REQ_INFO0_RECEPTION_TYPE …
#define HAL_RX_RESP_REQ_INFO1_DURATION …
#define HAL_RX_RESP_REQ_INFO1_RATE_MCS …
#define HAL_RX_RESP_REQ_INFO1_SGI …
#define HAL_RX_RESP_REQ_INFO1_STBC …
#define HAL_RX_RESP_REQ_INFO1_LDPC …
#define HAL_RX_RESP_REQ_INFO1_IS_AMPDU …
#define HAL_RX_RESP_REQ_INFO2_NUM_USER …
#define HAL_RX_RESP_REQ_INFO3_ADDR1_31_0 …
#define HAL_RX_RESP_REQ_INFO4_ADDR1_47_32 …
#define HAL_RX_RESP_REQ_INFO4_ADDR1_15_0 …
#define HAL_RX_RESP_REQ_INFO5_ADDR1_47_16 …
struct hal_rx_resp_req_info { … } __packed;
#define REO_QUEUE_DESC_MAGIC_DEBUG_PATTERN_0 …
#define REO_QUEUE_DESC_MAGIC_DEBUG_PATTERN_1 …
#define REO_QUEUE_DESC_MAGIC_DEBUG_PATTERN_2 …
#define REO_QUEUE_DESC_MAGIC_DEBUG_PATTERN_3 …
#define HAL_RX_UL_OFDMA_USER_INFO_V0_W0_VALID …
#define HAL_RX_UL_OFDMA_USER_INFO_V0_W0_VER …
#define HAL_RX_UL_OFDMA_USER_INFO_V0_W1_NSS …
#define HAL_RX_UL_OFDMA_USER_INFO_V0_W1_MCS …
#define HAL_RX_UL_OFDMA_USER_INFO_V0_W1_LDPC …
#define HAL_RX_UL_OFDMA_USER_INFO_V0_W1_DCM …
#define HAL_RX_UL_OFDMA_USER_INFO_V0_W1_RU_START …
#define HAL_RX_UL_OFDMA_USER_INFO_V0_W1_RU_SIZE …
#define HE_SU_FORMAT_TYPE …
#define HE_EXT_SU_FORMAT_TYPE …
#define HE_MU_FORMAT_TYPE …
#define HE_TRIG_FORMAT_TYPE …
#define HE_BEAM_CHANGE_KNOWN …
#define HE_DL_UL_KNOWN …
#define HE_MCS_KNOWN …
#define HE_DCM_KNOWN …
#define HE_CODING_KNOWN …
#define HE_LDPC_EXTRA_SYMBOL_KNOWN …
#define HE_STBC_KNOWN …
#define HE_DATA_BW_RU_KNOWN …
#define HE_DOPPLER_KNOWN …
#define HE_BSS_COLOR_KNOWN …
#define HE_GI_KNOWN …
#define HE_TXBF_KNOWN …
#define HE_PE_DISAMBIGUITY_KNOWN …
#define HE_TXOP_KNOWN …
#define HE_LTF_SYMBOLS_KNOWN …
#define HE_PRE_FEC_PADDING_KNOWN …
#define HE_MIDABLE_PERIODICITY_KNOWN …
#define HE_BEAM_CHANGE_SHIFT …
#define HE_DL_UL_SHIFT …
#define HE_TRANSMIT_MCS_SHIFT …
#define HE_DCM_SHIFT …
#define HE_CODING_SHIFT …
#define HE_LDPC_EXTRA_SYMBOL_SHIFT …
#define HE_STBC_SHIFT …
#define HE_STA_ID_SHIFT …
#define HE_GI_SHIFT …
#define HE_LTF_SIZE_SHIFT …
#define HE_LTF_SYM_SHIFT …
#define HE_TXBF_SHIFT …
#define HE_PE_DISAMBIGUITY_SHIFT …
#define HE_PRE_FEC_PAD_SHIFT …
#define HE_DOPPLER_SHIFT …
#define HE_TXOP_SHIFT …
#define HE_SIG_B_MCS_KNOWN …
#define HE_SIG_B_DCM_KNOWN …
#define HE_SIG_B_SYM_NUM_KNOWN …
#define HE_RU_0_KNOWN …
#define HE_RU_1_KNOWN …
#define HE_RU_2_KNOWN …
#define HE_RU_3_KNOWN …
#define HE_DCM_FLAG_1_SHIFT …
#define HE_SPATIAL_REUSE_MU_KNOWN …
#define HE_SIG_B_COMPRESSION_FLAG_1_KNOWN …
#define HE_SIG_B_COMPRESSION_FLAG_2_SHIFT …
#define HE_BW_KNOWN …
#define HE_NUM_SIG_B_SYMBOLS_SHIFT …
#define HE_SIG_B_COMPRESSION_FLAG_2_KNOWN …
#define HE_NUM_SIG_B_FLAG_2_SHIFT …
#define HE_LTF_FLAG_2_SYMBOLS_SHIFT …
#define HE_LTF_KNOWN …
#define HE_STA_SPATIAL_SHIFT …
#define HE_TXBF_SHIFT …
#define HE_RESERVED_SET_TO_1_SHIFT …
#define HE_STA_CODING_SHIFT …
#define HE_STA_MCS_SHIFT …
#define HE_STA_DCM_SHIFT …
#define HE_USER_FIELD_POSITION_KNOWN …
#define HE_STA_ID_PER_USER_KNOWN …
#define HE_STA_NSTS_KNOWN …
#define HE_STA_TX_BF_KNOWN …
#define HE_STA_SPATIAL_CONFIG_KNOWN …
#define HE_STA_MCS_KNOWN …
#define HE_STA_DCM_KNOWN …
#define HE_STA_CODING_KNOWN …
#define HAL_RX_MPDU_ERR_FCS …
#define HAL_RX_MPDU_ERR_DECRYPT …
#define HAL_RX_MPDU_ERR_TKIP_MIC …
#define HAL_RX_MPDU_ERR_AMSDU_ERR …
#define HAL_RX_MPDU_ERR_OVERFLOW …
#define HAL_RX_MPDU_ERR_MSDU_LEN …
#define HAL_RX_MPDU_ERR_MPDU_LEN …
#define HAL_RX_MPDU_ERR_UNENCRYPTED_FRAME …
static inline
enum nl80211_he_ru_alloc ath12k_he_ru_tones_to_nl80211_he_ru_alloc(u16 ru_tones)
{ … }
void ath12k_hal_reo_status_queue_stats(struct ath12k_base *ab,
struct hal_tlv_64_hdr *tlv,
struct hal_reo_status *status);
void ath12k_hal_reo_flush_queue_status(struct ath12k_base *ab,
struct hal_tlv_64_hdr *tlv,
struct hal_reo_status *status);
void ath12k_hal_reo_flush_cache_status(struct ath12k_base *ab,
struct hal_tlv_64_hdr *tlv,
struct hal_reo_status *status);
void ath12k_hal_reo_unblk_cache_status(struct ath12k_base *ab,
struct hal_tlv_64_hdr *tlv,
struct hal_reo_status *status);
void ath12k_hal_reo_flush_timeout_list_status(struct ath12k_base *ab,
struct hal_tlv_64_hdr *tlv,
struct hal_reo_status *status);
void ath12k_hal_reo_desc_thresh_reached_status(struct ath12k_base *ab,
struct hal_tlv_64_hdr *tlv,
struct hal_reo_status *status);
void ath12k_hal_reo_update_rx_reo_queue_status(struct ath12k_base *ab,
struct hal_tlv_64_hdr *tlv,
struct hal_reo_status *status);
void ath12k_hal_rx_msdu_link_info_get(struct hal_rx_msdu_link *link, u32 *num_msdus,
u32 *msdu_cookies,
enum hal_rx_buf_return_buf_manager *rbm);
void ath12k_hal_rx_msdu_link_desc_set(struct ath12k_base *ab,
struct hal_wbm_release_ring *dst_desc,
struct hal_wbm_release_ring *src_desc,
enum hal_wbm_rel_bm_act action);
void ath12k_hal_rx_buf_addr_info_set(struct ath12k_buffer_addr *binfo,
dma_addr_t paddr, u32 cookie, u8 manager);
void ath12k_hal_rx_buf_addr_info_get(struct ath12k_buffer_addr *binfo,
dma_addr_t *paddr,
u32 *cookie, u8 *rbm);
int ath12k_hal_desc_reo_parse_err(struct ath12k_base *ab,
struct hal_reo_dest_ring *desc,
dma_addr_t *paddr, u32 *desc_bank);
int ath12k_hal_wbm_desc_parse_err(struct ath12k_base *ab, void *desc,
struct hal_rx_wbm_rel_info *rel_info);
void ath12k_hal_rx_reo_ent_paddr_get(struct ath12k_base *ab,
struct ath12k_buffer_addr *buff_addr,
dma_addr_t *paddr, u32 *cookie);
#endif