xref: /linux/drivers/net/wireless/ath/ath11k/hal_rx.h (revision 4f6b838c378a52ea3ae0b15f12ca8a20849072fa)
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