1d5c65159SKalle Valo /* SPDX-License-Identifier: BSD-3-Clause-Clear */ 2d5c65159SKalle Valo /* 3d5c65159SKalle Valo * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. 4d5c65159SKalle Valo */ 5d5c65159SKalle Valo 6d5c65159SKalle Valo #ifndef ATH11K_HAL_RX_H 7d5c65159SKalle Valo #define ATH11K_HAL_RX_H 8d5c65159SKalle Valo 9d5c65159SKalle Valo struct hal_rx_wbm_rel_info { 10d5c65159SKalle Valo u32 cookie; 11d5c65159SKalle Valo enum hal_wbm_rel_src_module err_rel_src; 12d5c65159SKalle Valo enum hal_reo_dest_ring_push_reason push_reason; 13d5c65159SKalle Valo u32 err_code; 14d5c65159SKalle Valo bool first_msdu; 15d5c65159SKalle Valo bool last_msdu; 16d5c65159SKalle Valo }; 17d5c65159SKalle Valo 18d5c65159SKalle Valo #define HAL_INVALID_PEERID 0xffff 19d5c65159SKalle Valo #define VHT_SIG_SU_NSS_MASK 0x7 20d5c65159SKalle Valo 21d5c65159SKalle Valo #define HAL_RX_MAX_MCS 12 22d5c65159SKalle Valo #define HAL_RX_MAX_NSS 8 23d5c65159SKalle Valo 24d5c65159SKalle Valo struct hal_rx_mon_status_tlv_hdr { 25d5c65159SKalle Valo u32 hdr; 2614dd3a71SGustavo A. R. Silva u8 value[]; 27d5c65159SKalle Valo }; 28d5c65159SKalle Valo 29d5c65159SKalle Valo enum hal_rx_su_mu_coding { 30d5c65159SKalle Valo HAL_RX_SU_MU_CODING_BCC, 31d5c65159SKalle Valo HAL_RX_SU_MU_CODING_LDPC, 32d5c65159SKalle Valo HAL_RX_SU_MU_CODING_MAX, 33d5c65159SKalle Valo }; 34d5c65159SKalle Valo 35d5c65159SKalle Valo enum hal_rx_gi { 36d5c65159SKalle Valo HAL_RX_GI_0_8_US, 37d5c65159SKalle Valo HAL_RX_GI_0_4_US, 38d5c65159SKalle Valo HAL_RX_GI_1_6_US, 39d5c65159SKalle Valo HAL_RX_GI_3_2_US, 40d5c65159SKalle Valo HAL_RX_GI_MAX, 41d5c65159SKalle Valo }; 42d5c65159SKalle Valo 43d5c65159SKalle Valo enum hal_rx_bw { 44d5c65159SKalle Valo HAL_RX_BW_20MHZ, 45d5c65159SKalle Valo HAL_RX_BW_40MHZ, 46d5c65159SKalle Valo HAL_RX_BW_80MHZ, 47d5c65159SKalle Valo HAL_RX_BW_160MHZ, 48d5c65159SKalle Valo HAL_RX_BW_MAX, 49d5c65159SKalle Valo }; 50d5c65159SKalle Valo 51d5c65159SKalle Valo enum hal_rx_preamble { 52d5c65159SKalle Valo HAL_RX_PREAMBLE_11A, 53d5c65159SKalle Valo HAL_RX_PREAMBLE_11B, 54d5c65159SKalle Valo HAL_RX_PREAMBLE_11N, 55d5c65159SKalle Valo HAL_RX_PREAMBLE_11AC, 56d5c65159SKalle Valo HAL_RX_PREAMBLE_11AX, 57d5c65159SKalle Valo HAL_RX_PREAMBLE_MAX, 58d5c65159SKalle Valo }; 59d5c65159SKalle Valo 60d5c65159SKalle Valo enum hal_rx_reception_type { 61d5c65159SKalle Valo HAL_RX_RECEPTION_TYPE_SU, 62d5c65159SKalle Valo HAL_RX_RECEPTION_TYPE_MU_MIMO, 63d5c65159SKalle Valo HAL_RX_RECEPTION_TYPE_MU_OFDMA, 64d5c65159SKalle Valo HAL_RX_RECEPTION_TYPE_MU_OFDMA_MIMO, 65d5c65159SKalle Valo HAL_RX_RECEPTION_TYPE_MAX, 66d5c65159SKalle Valo }; 67d5c65159SKalle Valo 68d5c65159SKalle Valo #define HAL_TLV_STATUS_PPDU_NOT_DONE 0 69d5c65159SKalle Valo #define HAL_TLV_STATUS_PPDU_DONE 1 70d5c65159SKalle Valo #define HAL_TLV_STATUS_BUF_DONE 2 71d5c65159SKalle Valo #define HAL_TLV_STATUS_PPDU_NON_STD_DONE 3 72d5c65159SKalle Valo #define HAL_RX_FCS_LEN 4 73d5c65159SKalle Valo 74d5c65159SKalle Valo enum hal_rx_mon_status { 75d5c65159SKalle Valo HAL_RX_MON_STATUS_PPDU_NOT_DONE, 76d5c65159SKalle Valo HAL_RX_MON_STATUS_PPDU_DONE, 77d5c65159SKalle Valo HAL_RX_MON_STATUS_BUF_DONE, 78d5c65159SKalle Valo }; 79d5c65159SKalle Valo 80d5c65159SKalle Valo struct hal_rx_mon_ppdu_info { 81d5c65159SKalle Valo u32 ppdu_id; 82d5c65159SKalle Valo u32 ppdu_ts; 83d5c65159SKalle Valo u32 num_mpdu_fcs_ok; 84d5c65159SKalle Valo u32 num_mpdu_fcs_err; 85d5c65159SKalle Valo u32 preamble_type; 86d5c65159SKalle Valo u16 chan_num; 87d5c65159SKalle Valo u16 tcp_msdu_count; 88d5c65159SKalle Valo u16 tcp_ack_msdu_count; 89d5c65159SKalle Valo u16 udp_msdu_count; 90d5c65159SKalle Valo u16 other_msdu_count; 91d5c65159SKalle Valo u16 peer_id; 92d5c65159SKalle Valo u8 rate; 93d5c65159SKalle Valo u8 mcs; 94d5c65159SKalle Valo u8 nss; 95d5c65159SKalle Valo u8 bw; 96d5c65159SKalle Valo u8 is_stbc; 97d5c65159SKalle Valo u8 gi; 98d5c65159SKalle Valo u8 ldpc; 99d5c65159SKalle Valo u8 beamformed; 100d5c65159SKalle Valo u8 rssi_comb; 101d5c65159SKalle Valo u8 tid; 1026a0c3702SJohn Crispin u8 dcm; 1036a0c3702SJohn Crispin u8 ru_alloc; 104d5c65159SKalle Valo u8 reception_type; 105d5c65159SKalle Valo u64 rx_duration; 106d5c65159SKalle Valo }; 107d5c65159SKalle Valo 108d5c65159SKalle Valo #define HAL_RX_PPDU_START_INFO0_PPDU_ID GENMASK(15, 0) 109d5c65159SKalle Valo 110d5c65159SKalle Valo struct hal_rx_ppdu_start { 111d5c65159SKalle Valo __le32 info0; 112d5c65159SKalle Valo __le32 chan_num; 113d5c65159SKalle Valo __le32 ppdu_start_ts; 114d5c65159SKalle Valo } __packed; 115d5c65159SKalle Valo 116d5c65159SKalle Valo #define HAL_RX_PPDU_END_USER_STATS_INFO0_MPDU_CNT_FCS_ERR GENMASK(25, 16) 117d5c65159SKalle Valo 118d5c65159SKalle Valo #define HAL_RX_PPDU_END_USER_STATS_INFO1_MPDU_CNT_FCS_OK GENMASK(8, 0) 119d5c65159SKalle Valo #define HAL_RX_PPDU_END_USER_STATS_INFO1_FC_VALID BIT(9) 120d5c65159SKalle Valo #define HAL_RX_PPDU_END_USER_STATS_INFO1_QOS_CTRL_VALID BIT(10) 121d5c65159SKalle Valo #define HAL_RX_PPDU_END_USER_STATS_INFO1_HT_CTRL_VALID BIT(11) 122d5c65159SKalle Valo #define HAL_RX_PPDU_END_USER_STATS_INFO1_PKT_TYPE GENMASK(23, 20) 123d5c65159SKalle Valo 124d5c65159SKalle Valo #define HAL_RX_PPDU_END_USER_STATS_INFO2_AST_INDEX GENMASK(15, 0) 125d5c65159SKalle Valo #define HAL_RX_PPDU_END_USER_STATS_INFO2_FRAME_CTRL GENMASK(31, 16) 126d5c65159SKalle Valo 127d5c65159SKalle Valo #define HAL_RX_PPDU_END_USER_STATS_INFO3_QOS_CTRL GENMASK(31, 16) 128d5c65159SKalle Valo 129d5c65159SKalle Valo #define HAL_RX_PPDU_END_USER_STATS_INFO4_UDP_MSDU_CNT GENMASK(15, 0) 130d5c65159SKalle Valo #define HAL_RX_PPDU_END_USER_STATS_INFO4_TCP_MSDU_CNT GENMASK(31, 16) 131d5c65159SKalle Valo 132d5c65159SKalle Valo #define HAL_RX_PPDU_END_USER_STATS_INFO5_OTHER_MSDU_CNT GENMASK(15, 0) 133d5c65159SKalle Valo #define HAL_RX_PPDU_END_USER_STATS_INFO5_TCP_ACK_MSDU_CNT GENMASK(31, 16) 134d5c65159SKalle Valo 135d5c65159SKalle Valo #define HAL_RX_PPDU_END_USER_STATS_INFO6_TID_BITMAP GENMASK(15, 0) 136d5c65159SKalle Valo #define HAL_RX_PPDU_END_USER_STATS_INFO6_TID_EOSP_BITMAP GENMASK(31, 16) 137d5c65159SKalle Valo 138d5c65159SKalle Valo struct hal_rx_ppdu_end_user_stats { 139d5c65159SKalle Valo __le32 rsvd0[2]; 140d5c65159SKalle Valo __le32 info0; 141d5c65159SKalle Valo __le32 info1; 142d5c65159SKalle Valo __le32 info2; 143d5c65159SKalle Valo __le32 info3; 144d5c65159SKalle Valo __le32 ht_ctrl; 145d5c65159SKalle Valo __le32 rsvd1[2]; 146d5c65159SKalle Valo __le32 info4; 147d5c65159SKalle Valo __le32 info5; 148d5c65159SKalle Valo __le32 info6; 149d5c65159SKalle Valo __le32 rsvd2[11]; 150d5c65159SKalle Valo } __packed; 151d5c65159SKalle Valo 152d5c65159SKalle Valo #define HAL_RX_HT_SIG_INFO_INFO0_MCS GENMASK(6, 0) 153d5c65159SKalle Valo #define HAL_RX_HT_SIG_INFO_INFO0_BW BIT(7) 154d5c65159SKalle Valo 155d5c65159SKalle Valo #define HAL_RX_HT_SIG_INFO_INFO1_STBC GENMASK(5, 4) 156d5c65159SKalle Valo #define HAL_RX_HT_SIG_INFO_INFO1_FEC_CODING BIT(6) 157d5c65159SKalle Valo #define HAL_RX_HT_SIG_INFO_INFO1_GI BIT(7) 158d5c65159SKalle Valo 159d5c65159SKalle Valo struct hal_rx_ht_sig_info { 160d5c65159SKalle Valo __le32 info0; 161d5c65159SKalle Valo __le32 info1; 162d5c65159SKalle Valo } __packed; 163d5c65159SKalle Valo 164d5c65159SKalle Valo #define HAL_RX_LSIG_B_INFO_INFO0_RATE GENMASK(3, 0) 165d5c65159SKalle Valo #define HAL_RX_LSIG_B_INFO_INFO0_LEN GENMASK(15, 4) 166d5c65159SKalle Valo 167d5c65159SKalle Valo struct hal_rx_lsig_b_info { 168d5c65159SKalle Valo __le32 info0; 169d5c65159SKalle Valo } __packed; 170d5c65159SKalle Valo 171d5c65159SKalle Valo #define HAL_RX_LSIG_A_INFO_INFO0_RATE GENMASK(3, 0) 172d5c65159SKalle Valo #define HAL_RX_LSIG_A_INFO_INFO0_LEN GENMASK(16, 5) 173d5c65159SKalle Valo #define HAL_RX_LSIG_A_INFO_INFO0_PKT_TYPE GENMASK(27, 24) 174d5c65159SKalle Valo 175d5c65159SKalle Valo struct hal_rx_lsig_a_info { 176d5c65159SKalle Valo __le32 info0; 177d5c65159SKalle Valo } __packed; 178d5c65159SKalle Valo 179d5c65159SKalle Valo #define HAL_RX_VHT_SIG_A_INFO_INFO0_BW GENMASK(1, 0) 180d5c65159SKalle Valo #define HAL_RX_VHT_SIG_A_INFO_INFO0_STBC BIT(3) 181d5c65159SKalle Valo #define HAL_RX_VHT_SIG_A_INFO_INFO0_GROUP_ID GENMASK(9, 4) 182d5c65159SKalle Valo #define HAL_RX_VHT_SIG_A_INFO_INFO0_NSTS GENMASK(21, 10) 183d5c65159SKalle Valo 184d5c65159SKalle Valo #define HAL_RX_VHT_SIG_A_INFO_INFO1_GI_SETTING GENMASK(1, 0) 185d5c65159SKalle Valo #define HAL_RX_VHT_SIG_A_INFO_INFO1_SU_MU_CODING BIT(2) 186d5c65159SKalle Valo #define HAL_RX_VHT_SIG_A_INFO_INFO1_MCS GENMASK(7, 4) 187d5c65159SKalle Valo #define HAL_RX_VHT_SIG_A_INFO_INFO1_BEAMFORMED BIT(8) 188d5c65159SKalle Valo 189d5c65159SKalle Valo struct hal_rx_vht_sig_a_info { 190d5c65159SKalle Valo __le32 info0; 191d5c65159SKalle Valo __le32 info1; 192d5c65159SKalle Valo } __packed; 193d5c65159SKalle Valo 19428dee8efSManikanta Pubbisetty enum hal_rx_vht_sig_a_gi_setting { 19528dee8efSManikanta Pubbisetty HAL_RX_VHT_SIG_A_NORMAL_GI = 0, 19628dee8efSManikanta Pubbisetty HAL_RX_VHT_SIG_A_SHORT_GI = 1, 19728dee8efSManikanta Pubbisetty HAL_RX_VHT_SIG_A_SHORT_GI_AMBIGUITY = 3, 19828dee8efSManikanta Pubbisetty }; 19928dee8efSManikanta Pubbisetty 200d5c65159SKalle Valo #define HAL_RX_HE_SIG_A_SU_INFO_INFO0_TRANSMIT_MCS GENMASK(6, 3) 201d5c65159SKalle Valo #define HAL_RX_HE_SIG_A_SU_INFO_INFO0_DCM BIT(7) 202d5c65159SKalle Valo #define HAL_RX_HE_SIG_A_SU_INFO_INFO0_TRANSMIT_BW GENMASK(20, 19) 203d5c65159SKalle Valo #define HAL_RX_HE_SIG_A_SU_INFO_INFO0_CP_LTF_SIZE GENMASK(22, 21) 204d5c65159SKalle Valo #define HAL_RX_HE_SIG_A_SU_INFO_INFO0_NSTS GENMASK(25, 23) 205d5c65159SKalle Valo 206d5c65159SKalle Valo #define HAL_RX_HE_SIG_A_SU_INFO_INFO1_CODING BIT(7) 207d5c65159SKalle Valo #define HAL_RX_HE_SIG_A_SU_INFO_INFO1_STBC BIT(9) 208d5c65159SKalle Valo #define HAL_RX_HE_SIG_A_SU_INFO_INFO1_TXBF BIT(10) 209d5c65159SKalle Valo 210d5c65159SKalle Valo struct hal_rx_he_sig_a_su_info { 211d5c65159SKalle Valo __le32 info0; 212d5c65159SKalle Valo __le32 info1; 213d5c65159SKalle Valo } __packed; 214d5c65159SKalle Valo 215d5c65159SKalle Valo #define HAL_RX_HE_SIG_A_MU_DL_INFO_INFO0_TRANSMIT_BW GENMASK(17, 15) 216d5c65159SKalle Valo #define HAL_RX_HE_SIG_A_MU_DL_INFO_INFO0_CP_LTF_SIZE GENMASK(24, 23) 217d5c65159SKalle Valo 218d5c65159SKalle Valo #define HAL_RX_HE_SIG_A_MU_DL_INFO_INFO1_STBC BIT(12) 219d5c65159SKalle Valo 220d5c65159SKalle Valo struct hal_rx_he_sig_a_mu_dl_info { 221d5c65159SKalle Valo __le32 info0; 222d5c65159SKalle Valo __le32 info1; 223d5c65159SKalle Valo } __packed; 224d5c65159SKalle Valo 225d5c65159SKalle Valo #define HAL_RX_HE_SIG_B1_MU_INFO_INFO0_RU_ALLOCATION GENMASK(7, 0) 226d5c65159SKalle Valo 227d5c65159SKalle Valo struct hal_rx_he_sig_b1_mu_info { 228d5c65159SKalle Valo __le32 info0; 229d5c65159SKalle Valo } __packed; 230d5c65159SKalle Valo 231d5c65159SKalle Valo #define HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_MCS GENMASK(18, 15) 232d5c65159SKalle Valo #define HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_CODING BIT(20) 233d5c65159SKalle Valo #define HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_NSTS GENMASK(31, 29) 234d5c65159SKalle Valo 235d5c65159SKalle Valo struct hal_rx_he_sig_b2_mu_info { 236d5c65159SKalle Valo __le32 info0; 237d5c65159SKalle Valo } __packed; 238d5c65159SKalle Valo 239d5c65159SKalle Valo #define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_NSTS GENMASK(13, 11) 240d5c65159SKalle Valo #define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_TXBF BIT(19) 241d5c65159SKalle Valo #define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_MCS GENMASK(18, 15) 242d5c65159SKalle Valo #define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_DCM BIT(19) 243d5c65159SKalle Valo #define HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_CODING BIT(20) 244d5c65159SKalle Valo 245d5c65159SKalle Valo struct hal_rx_he_sig_b2_ofdma_info { 246d5c65159SKalle Valo __le32 info0; 247d5c65159SKalle Valo } __packed; 248d5c65159SKalle Valo 249d5c65159SKalle Valo #define HAL_RX_PHYRX_RSSI_LEGACY_INFO_INFO1_RSSI_COMB GENMASK(15, 8) 250d5c65159SKalle Valo 251d5c65159SKalle Valo struct hal_rx_phyrx_rssi_legacy_info { 252d5c65159SKalle Valo __le32 rsvd[35]; 253d5c65159SKalle Valo __le32 info0; 254d5c65159SKalle Valo } __packed; 255d5c65159SKalle Valo 256d5c65159SKalle Valo #define HAL_RX_MPDU_INFO_INFO0_PEERID GENMASK(31, 16) 257d5c65159SKalle Valo struct hal_rx_mpdu_info { 258d5c65159SKalle Valo __le32 rsvd0; 259d5c65159SKalle Valo __le32 info0; 260d5c65159SKalle Valo __le32 rsvd1[21]; 261d5c65159SKalle Valo } __packed; 262d5c65159SKalle Valo 263d5c65159SKalle Valo #define HAL_RX_PPDU_END_DURATION GENMASK(23, 0) 264d5c65159SKalle Valo struct hal_rx_ppdu_end_duration { 265d5c65159SKalle Valo __le32 rsvd0[9]; 266d5c65159SKalle Valo __le32 info0; 267d5c65159SKalle Valo __le32 rsvd1[4]; 268d5c65159SKalle Valo } __packed; 269d5c65159SKalle Valo 270d5c65159SKalle Valo struct hal_rx_rxpcu_classification_overview { 271d5c65159SKalle Valo u32 rsvd0; 272d5c65159SKalle Valo } __packed; 273d5c65159SKalle Valo 274d5c65159SKalle Valo struct hal_rx_msdu_desc_info { 275d5c65159SKalle Valo u32 msdu_flags; 276d5c65159SKalle Valo u16 msdu_len; /* 14 bits for length */ 277d5c65159SKalle Valo }; 278d5c65159SKalle Valo 279d5c65159SKalle Valo #define HAL_RX_NUM_MSDU_DESC 6 280d5c65159SKalle Valo struct hal_rx_msdu_list { 281d5c65159SKalle Valo struct hal_rx_msdu_desc_info msdu_info[HAL_RX_NUM_MSDU_DESC]; 282d5c65159SKalle Valo u32 sw_cookie[HAL_RX_NUM_MSDU_DESC]; 283d5c65159SKalle Valo u8 rbm[HAL_RX_NUM_MSDU_DESC]; 284d5c65159SKalle Valo }; 285d5c65159SKalle Valo 286d5c65159SKalle Valo void ath11k_hal_reo_status_queue_stats(struct ath11k_base *ab, u32 *reo_desc, 287d5c65159SKalle Valo struct hal_reo_status *status); 288d5c65159SKalle Valo void ath11k_hal_reo_flush_queue_status(struct ath11k_base *ab, u32 *reo_desc, 289d5c65159SKalle Valo struct hal_reo_status *status); 290d5c65159SKalle Valo void ath11k_hal_reo_flush_cache_status(struct ath11k_base *ab, u32 *reo_desc, 291d5c65159SKalle Valo struct hal_reo_status *status); 292d5c65159SKalle Valo void ath11k_hal_reo_flush_cache_status(struct ath11k_base *ab, u32 *reo_desc, 293d5c65159SKalle Valo struct hal_reo_status *status); 294d5c65159SKalle Valo void ath11k_hal_reo_unblk_cache_status(struct ath11k_base *ab, u32 *reo_desc, 295d5c65159SKalle Valo struct hal_reo_status *status); 296d5c65159SKalle Valo void ath11k_hal_reo_flush_timeout_list_status(struct ath11k_base *ab, 297d5c65159SKalle Valo u32 *reo_desc, 298d5c65159SKalle Valo struct hal_reo_status *status); 299d5c65159SKalle Valo void ath11k_hal_reo_desc_thresh_reached_status(struct ath11k_base *ab, 300d5c65159SKalle Valo u32 *reo_desc, 301d5c65159SKalle Valo struct hal_reo_status *status); 302d5c65159SKalle Valo void ath11k_hal_reo_update_rx_reo_queue_status(struct ath11k_base *ab, 303d5c65159SKalle Valo u32 *reo_desc, 304d5c65159SKalle Valo struct hal_reo_status *status); 305d5c65159SKalle Valo int ath11k_hal_reo_process_status(u8 *reo_desc, u8 *status); 306d5c65159SKalle Valo void ath11k_hal_rx_msdu_link_info_get(void *link_desc, u32 *num_msdus, 307293cb583SJohn Crispin u32 *msdu_cookies, 308d5c65159SKalle Valo enum hal_rx_buf_return_buf_manager *rbm); 309d5c65159SKalle Valo void ath11k_hal_rx_msdu_link_desc_set(struct ath11k_base *ab, void *desc, 310d5c65159SKalle Valo void *link_desc, 311d5c65159SKalle Valo enum hal_wbm_rel_bm_act action); 312d5c65159SKalle Valo void ath11k_hal_rx_buf_addr_info_set(void *desc, dma_addr_t paddr, 313d5c65159SKalle Valo u32 cookie, u8 manager); 314d5c65159SKalle Valo void ath11k_hal_rx_buf_addr_info_get(void *desc, dma_addr_t *paddr, 315d5c65159SKalle Valo u32 *cookie, u8 *rbm); 316d5c65159SKalle Valo int ath11k_hal_desc_reo_parse_err(struct ath11k_base *ab, u32 *rx_desc, 317d5c65159SKalle Valo dma_addr_t *paddr, u32 *desc_bank); 318d5c65159SKalle Valo int ath11k_hal_wbm_desc_parse_err(struct ath11k_base *ab, void *desc, 319d5c65159SKalle Valo struct hal_rx_wbm_rel_info *rel_info); 320d5c65159SKalle Valo void ath11k_hal_rx_reo_ent_paddr_get(struct ath11k_base *ab, void *desc, 321d5c65159SKalle Valo dma_addr_t *paddr, u32 *desc_bank); 322d5c65159SKalle Valo void ath11k_hal_rx_reo_ent_buf_paddr_get(void *rx_desc, 323d5c65159SKalle Valo dma_addr_t *paddr, u32 *sw_cookie, 324*701e48a4SCarl Huang void **pp_buf_addr_info, u8 *rbm, 325d5c65159SKalle Valo u32 *msdu_cnt); 326d5c65159SKalle Valo enum hal_rx_mon_status 327d5c65159SKalle Valo ath11k_hal_rx_parse_mon_status(struct ath11k_base *ab, 328d5c65159SKalle Valo struct hal_rx_mon_ppdu_info *ppdu_info, 329d5c65159SKalle Valo struct sk_buff *skb); 3306a0c3702SJohn Crispin 3316a0c3702SJohn Crispin static inline u32 ath11k_he_ru_tones_to_nl80211_he_ru_alloc(u16 ru_tones) 3326a0c3702SJohn Crispin { 3336a0c3702SJohn Crispin u32 ret = 0; 3346a0c3702SJohn Crispin 3356a0c3702SJohn Crispin switch (ru_tones) { 3366a0c3702SJohn Crispin case RU_26: 3376a0c3702SJohn Crispin ret = NL80211_RATE_INFO_HE_RU_ALLOC_26; 3386a0c3702SJohn Crispin break; 3396a0c3702SJohn Crispin case RU_52: 3406a0c3702SJohn Crispin ret = NL80211_RATE_INFO_HE_RU_ALLOC_52; 3416a0c3702SJohn Crispin break; 3426a0c3702SJohn Crispin case RU_106: 3436a0c3702SJohn Crispin ret = NL80211_RATE_INFO_HE_RU_ALLOC_106; 3446a0c3702SJohn Crispin break; 3456a0c3702SJohn Crispin case RU_242: 3466a0c3702SJohn Crispin ret = NL80211_RATE_INFO_HE_RU_ALLOC_242; 3476a0c3702SJohn Crispin break; 3486a0c3702SJohn Crispin case RU_484: 3496a0c3702SJohn Crispin ret = NL80211_RATE_INFO_HE_RU_ALLOC_484; 3506a0c3702SJohn Crispin break; 3516a0c3702SJohn Crispin case RU_996: 3526a0c3702SJohn Crispin ret = NL80211_RATE_INFO_HE_RU_ALLOC_996; 3536a0c3702SJohn Crispin break; 3546a0c3702SJohn Crispin } 3556a0c3702SJohn Crispin return ret; 3566a0c3702SJohn Crispin } 3576a0c3702SJohn Crispin 358d5c65159SKalle Valo #define REO_QUEUE_DESC_MAGIC_DEBUG_PATTERN_0 0xDDBEEF 359d5c65159SKalle Valo #define REO_QUEUE_DESC_MAGIC_DEBUG_PATTERN_1 0xADBEEF 360d5c65159SKalle Valo #define REO_QUEUE_DESC_MAGIC_DEBUG_PATTERN_2 0xBDBEEF 361d5c65159SKalle Valo #define REO_QUEUE_DESC_MAGIC_DEBUG_PATTERN_3 0xCDBEEF 362d5c65159SKalle Valo #endif 363