xref: /wlan-driver/qca-wifi-host-cmn/dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for any
6*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
7*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
8*5113495bSYour Name  *
9*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16*5113495bSYour Name  */
17*5113495bSYour Name 
18*5113495bSYour Name #ifndef _DP_RX_MON_2_0_H_
19*5113495bSYour Name #define _DP_RX_MON_2_0_H_
20*5113495bSYour Name 
21*5113495bSYour Name #include <qdf_nbuf_frag.h>
22*5113495bSYour Name #include <hal_be_api_mon.h>
23*5113495bSYour Name #include <dp_mon_2.0.h>
24*5113495bSYour Name 
25*5113495bSYour Name #define DP_RX_MON_PACKET_OFFSET 8
26*5113495bSYour Name #define DP_RX_MON_RX_HDR_OFFSET 8
27*5113495bSYour Name #define DP_GET_NUM_QWORDS(num)	((num) >> 3)
28*5113495bSYour Name 
29*5113495bSYour Name #define DP_RX_MON_TLV_HDR_MARKER 0xFEED
30*5113495bSYour Name #define DP_RX_MON_TLV_HDR_MARKER_LEN 2
31*5113495bSYour Name #define DP_RX_MON_TLV_HDR_LEN 3 /* TLV ID field sz + TLV len field sz */
32*5113495bSYour Name #define DP_RX_MON_TLV_TOTAL_LEN 2
33*5113495bSYour Name 
34*5113495bSYour Name #define DP_RX_MON_TLV_PF_ID 1
35*5113495bSYour Name #define DP_RX_MON_TLV_PPDU_ID 2
36*5113495bSYour Name #define DP_RX_MON_MAX_TLVS 2
37*5113495bSYour Name 
38*5113495bSYour Name #define DP_RX_MON_TLV_MSDU_CNT 2
39*5113495bSYour Name #define DP_RX_MON_MAX_MSDU 16
40*5113495bSYour Name #define DP_RX_MON_PF_TLV_LEN (((DP_RX_MON_PF_TAG_LEN_PER_FRAG)\
41*5113495bSYour Name 			       * (DP_RX_MON_MAX_MSDU) * 2)\
42*5113495bSYour Name 			       + (DP_RX_MON_TLV_MSDU_CNT))
43*5113495bSYour Name 
44*5113495bSYour Name #define DP_RX_MON_PPDU_ID_LEN 4
45*5113495bSYour Name 
46*5113495bSYour Name #define DP_RX_MON_INDIV_TLV_LEN ((DP_RX_MON_PF_TLV_LEN)\
47*5113495bSYour Name 				 + (DP_RX_MON_PPDU_ID_LEN))
48*5113495bSYour Name #define DP_RX_MON_TLV_ROOM ((DP_RX_MON_INDIV_TLV_LEN)\
49*5113495bSYour Name 			    + ((DP_RX_MON_TLV_HDR_LEN) * (DP_RX_MON_MAX_TLVS))\
50*5113495bSYour Name 			    + (DP_RX_MON_TLV_HDR_MARKER_LEN)\
51*5113495bSYour Name 			    + (DP_RX_MON_TLV_TOTAL_LEN))
52*5113495bSYour Name 
53*5113495bSYour Name #define DP_RX_MON_WQ_THRESHOLD 128
54*5113495bSYour Name 
55*5113495bSYour Name #define DP_RX_MON_MAX_RX_HEADER_LEN 128
56*5113495bSYour Name 
57*5113495bSYour Name #ifdef WLAN_PKT_CAPTURE_RX_2_0
58*5113495bSYour Name QDF_STATUS dp_mon_pdev_ext_init_2_0(struct dp_pdev *pdev);
59*5113495bSYour Name QDF_STATUS dp_mon_pdev_ext_deinit_2_0(struct dp_pdev *pdev);
60*5113495bSYour Name 
61*5113495bSYour Name #ifdef QCA_KMEM_CACHE_SUPPORT
62*5113495bSYour Name QDF_STATUS dp_rx_mon_ppdu_info_cache_create(struct dp_pdev *pdev);
63*5113495bSYour Name void dp_rx_mon_ppdu_info_cache_destroy(struct dp_pdev *pdev);
64*5113495bSYour Name struct hal_rx_ppdu_info*
65*5113495bSYour Name dp_rx_mon_get_ppdu_info(struct dp_mon_pdev *mon_pdev);
66*5113495bSYour Name void
67*5113495bSYour Name dp_rx_mon_free_ppdu_info(struct dp_pdev *pdev,
68*5113495bSYour Name 			 struct hal_rx_ppdu_info *ppdu_info);
69*5113495bSYour Name void
70*5113495bSYour Name __dp_rx_mon_free_ppdu_info(struct dp_mon_pdev *mon_pdev,
71*5113495bSYour Name 			   struct hal_rx_ppdu_info *ppdu_info);
72*5113495bSYour Name #else
dp_rx_mon_ppdu_info_cache_create(struct dp_pdev * pdev)73*5113495bSYour Name static inline QDF_STATUS dp_rx_mon_ppdu_info_cache_create(struct dp_pdev *pdev)
74*5113495bSYour Name {
75*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
76*5113495bSYour Name }
77*5113495bSYour Name 
dp_rx_mon_ppdu_info_cache_destroy(struct dp_pdev * pdev)78*5113495bSYour Name static inline void dp_rx_mon_ppdu_info_cache_destroy(struct dp_pdev *pdev)
79*5113495bSYour Name {
80*5113495bSYour Name }
81*5113495bSYour Name 
82*5113495bSYour Name static inline struct hal_rx_ppdu_info*
dp_rx_mon_get_ppdu_info(struct dp_mon_pdev * mon_pdev)83*5113495bSYour Name dp_rx_mon_get_ppdu_info(struct dp_mon_pdev *mon_pdev)
84*5113495bSYour Name {
85*5113495bSYour Name 	qdf_mem_zero(&mon_pdev->ppdu_info, sizeof(struct hal_rx_ppdu_info));
86*5113495bSYour Name 	return &mon_pdev->ppdu_info;
87*5113495bSYour Name }
88*5113495bSYour Name 
89*5113495bSYour Name static inline void
dp_rx_mon_free_ppdu_info(struct dp_pdev * pdev,struct hal_rx_ppdu_info * ppdu_info)90*5113495bSYour Name dp_rx_mon_free_ppdu_info(struct dp_pdev *pdev,
91*5113495bSYour Name 			 struct hal_rx_ppdu_info *ppdu_info)
92*5113495bSYour Name {
93*5113495bSYour Name }
94*5113495bSYour Name 
95*5113495bSYour Name static inline void
__dp_rx_mon_free_ppdu_info(struct dp_mon_pdev * mon_pdev,struct hal_rx_ppdu_info * ppdu_info)96*5113495bSYour Name __dp_rx_mon_free_ppdu_info(struct dp_mon_pdev *mon_pdev,
97*5113495bSYour Name 			   struct hal_rx_ppdu_info *ppdu_info)
98*5113495bSYour Name {
99*5113495bSYour Name }
100*5113495bSYour Name #endif
101*5113495bSYour Name 
102*5113495bSYour Name QDF_STATUS dp_rx_mon_pdev_htt_srng_setup_2_0(struct dp_soc *soc,
103*5113495bSYour Name 					    struct dp_pdev *pdev,
104*5113495bSYour Name 					    int mac_id,
105*5113495bSYour Name 					    int mac_for_pdev);
106*5113495bSYour Name QDF_STATUS dp_rx_mon_soc_htt_srng_setup_2_0(struct dp_soc *soc,
107*5113495bSYour Name 					    int mac_id);
108*5113495bSYour Name QDF_STATUS dp_rx_mon_pdev_rings_alloc_2_0(struct dp_pdev *pdev, int lmac_id);
109*5113495bSYour Name void dp_rx_mon_pdev_rings_free_2_0(struct dp_pdev *pdev, int lmac_id);
110*5113495bSYour Name QDF_STATUS dp_rx_mon_pdev_rings_init_2_0(struct dp_pdev *pdev, int lmac_id);
111*5113495bSYour Name void dp_rx_mon_pdev_rings_deinit_2_0(struct dp_pdev *pdev, int lmac_id);
112*5113495bSYour Name QDF_STATUS dp_rx_mon_soc_init_2_0(struct dp_soc *soc);
113*5113495bSYour Name 
114*5113495bSYour Name /*
115*5113495bSYour Name  * dp_rx_mon_buffers_alloc() - allocate rx monitor buffers
116*5113495bSYour Name  * @soc: DP soc handle
117*5113495bSYour Name  *
118*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS: Success
119*5113495bSYour Name  *         QDF_STATUS_E_FAILURE: Error
120*5113495bSYour Name  */
121*5113495bSYour Name QDF_STATUS
122*5113495bSYour Name dp_rx_mon_buffers_alloc(struct dp_soc *soc, uint32_t size);
123*5113495bSYour Name 
124*5113495bSYour Name /*
125*5113495bSYour Name  * dp_rx_mon_buffers_free() - free rx monitor buffers
126*5113495bSYour Name  * @soc: dp soc handle
127*5113495bSYour Name  *
128*5113495bSYour Name  */
129*5113495bSYour Name void
130*5113495bSYour Name dp_rx_mon_buffers_free(struct dp_soc *soc);
131*5113495bSYour Name 
132*5113495bSYour Name /*
133*5113495bSYour Name  * dp_rx_mon_desc_pool_deinit() - deinit rx monitor descriptor pool
134*5113495bSYour Name  * @soc: dp soc handle
135*5113495bSYour Name  *
136*5113495bSYour Name  */
137*5113495bSYour Name void
138*5113495bSYour Name dp_rx_mon_buf_desc_pool_deinit(struct dp_soc *soc);
139*5113495bSYour Name 
140*5113495bSYour Name /*
141*5113495bSYour Name  * dp_rx_mon_desc_pool_deinit() - deinit rx monitor descriptor pool
142*5113495bSYour Name  * @soc: dp soc handle
143*5113495bSYour Name  *
144*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS: Success
145*5113495bSYour Name  *         QDF_STATUS_E_FAILURE: Error
146*5113495bSYour Name  */
147*5113495bSYour Name QDF_STATUS
148*5113495bSYour Name dp_rx_mon_buf_desc_pool_init(struct dp_soc *soc);
149*5113495bSYour Name 
150*5113495bSYour Name /*
151*5113495bSYour Name  * dp_rx_mon_buf_desc_pool_free() - free rx monitor descriptor pool
152*5113495bSYour Name  * @soc: dp soc handle
153*5113495bSYour Name  *
154*5113495bSYour Name  */
155*5113495bSYour Name void dp_rx_mon_buf_desc_pool_free(struct dp_soc *soc);
156*5113495bSYour Name 
157*5113495bSYour Name /*
158*5113495bSYour Name  * dp_rx_mon_buf_desc_pool_alloc() - allocate rx monitor descriptor pool
159*5113495bSYour Name  * @soc: DP soc handle
160*5113495bSYour Name  *
161*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS: Success
162*5113495bSYour Name  *         QDF_STATUS_E_FAILURE: Error
163*5113495bSYour Name  */
164*5113495bSYour Name QDF_STATUS
165*5113495bSYour Name dp_rx_mon_buf_desc_pool_alloc(struct dp_soc *soc);
166*5113495bSYour Name 
167*5113495bSYour Name /**
168*5113495bSYour Name  * dp_rx_mon_stats_update_2_0() - update rx stats
169*5113495bSYour Name  *
170*5113495bSYour Name  * @mon_peer: monitor peer handle
171*5113495bSYour Name  * @ppdu: Rx PPDU status metadata object
172*5113495bSYour Name  * @ppdu_user: Rx PPDU user status metadata object
173*5113495bSYour Name  *
174*5113495bSYour Name  * Return: Void
175*5113495bSYour Name  */
176*5113495bSYour Name void dp_rx_mon_stats_update_2_0(struct dp_mon_peer *mon_peer,
177*5113495bSYour Name 				struct cdp_rx_indication_ppdu *ppdu,
178*5113495bSYour Name 				struct cdp_rx_stats_ppdu_user *ppdu_user);
179*5113495bSYour Name 
180*5113495bSYour Name /**
181*5113495bSYour Name  * dp_rx_mon_populate_ppdu_usr_info_2_0() - Populate ppdu user info
182*5113495bSYour Name  *
183*5113495bSYour Name  * @rx_user_status: Rx user status
184*5113495bSYour Name  * @ppdu_user: ppdu user metadata
185*5113495bSYour Name  *
186*5113495bSYour Name  * Return: void
187*5113495bSYour Name  */
188*5113495bSYour Name void
189*5113495bSYour Name dp_rx_mon_populate_ppdu_usr_info_2_0(struct mon_rx_user_status *rx_user_status,
190*5113495bSYour Name 				     struct cdp_rx_stats_ppdu_user *ppdu_user);
191*5113495bSYour Name 
192*5113495bSYour Name /**
193*5113495bSYour Name  * dp_rx_mon_populate_ppdu_info_2_0() --  Populate ppdu info
194*5113495bSYour Name  *
195*5113495bSYour Name  * @hal_ppdu_info: HAL PPDU info
196*5113495bSYour Name  * @ppdu: Rx PPDU status metadata object
197*5113495bSYour Name  *
198*5113495bSYour Name  * Return: void
199*5113495bSYour Name  */
200*5113495bSYour Name void
201*5113495bSYour Name dp_rx_mon_populate_ppdu_info_2_0(struct hal_rx_ppdu_info *hal_ppdu_info,
202*5113495bSYour Name 				 struct cdp_rx_indication_ppdu *ppdu);
203*5113495bSYour Name 
204*5113495bSYour Name QDF_STATUS dp_rx_mon_soc_attach_2_0(struct dp_soc *soc, int lmac_id);
205*5113495bSYour Name void  dp_rx_mon_soc_detach_2_0(struct dp_soc *soc, int lmac_id);
206*5113495bSYour Name void dp_rx_mon_soc_deinit_2_0(struct dp_soc *soc, uint32_t lmac_id);
207*5113495bSYour Name 
208*5113495bSYour Name #ifndef QCA_MONITOR_2_0_PKT_SUPPORT
dp_rx_mon_init_wq_sm(struct dp_pdev * pdev)209*5113495bSYour Name static inline QDF_STATUS dp_rx_mon_init_wq_sm(struct dp_pdev *pdev)
210*5113495bSYour Name {
211*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
212*5113495bSYour Name }
213*5113495bSYour Name 
dp_rx_mon_deinit_wq_sm(struct dp_pdev * pdev)214*5113495bSYour Name static inline QDF_STATUS dp_rx_mon_deinit_wq_sm(struct dp_pdev *pdev)
215*5113495bSYour Name {
216*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
217*5113495bSYour Name }
218*5113495bSYour Name 
219*5113495bSYour Name static inline QDF_STATUS
dp_rx_mon_add_ppdu_info_to_wq(struct dp_pdev * pdev,struct hal_rx_ppdu_info * ppdu_info)220*5113495bSYour Name dp_rx_mon_add_ppdu_info_to_wq(struct dp_pdev *pdev,
221*5113495bSYour Name 			      struct hal_rx_ppdu_info *ppdu_info)
222*5113495bSYour Name {
223*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
224*5113495bSYour Name }
225*5113495bSYour Name 
226*5113495bSYour Name static inline int
dp_rx_mon_flush_packet_tlv(struct dp_pdev * pdev,void * buf,uint16_t end_offset,union dp_mon_desc_list_elem_t ** desc_list,union dp_mon_desc_list_elem_t ** tail)227*5113495bSYour Name dp_rx_mon_flush_packet_tlv(struct dp_pdev *pdev, void *buf, uint16_t end_offset,
228*5113495bSYour Name 			   union dp_mon_desc_list_elem_t **desc_list,
229*5113495bSYour Name 			   union dp_mon_desc_list_elem_t **tail)
230*5113495bSYour Name {
231*5113495bSYour Name 	return 0;
232*5113495bSYour Name }
233*5113495bSYour Name 
234*5113495bSYour Name static inline void
dp_rx_mon_handle_rx_hdr(struct dp_pdev * pdev,struct hal_rx_ppdu_info * ppdu_info,void * status_frag)235*5113495bSYour Name dp_rx_mon_handle_rx_hdr(struct dp_pdev *pdev,
236*5113495bSYour Name 			struct hal_rx_ppdu_info *ppdu_info,
237*5113495bSYour Name 			void *status_frag)
238*5113495bSYour Name {
239*5113495bSYour Name }
240*5113495bSYour Name 
241*5113495bSYour Name static inline uint16_t
dp_rx_mon_handle_mon_buf_addr(struct dp_pdev * pdev,struct hal_rx_ppdu_info * ppdu_info,union dp_mon_desc_list_elem_t ** desc_list,union dp_mon_desc_list_elem_t ** tail)242*5113495bSYour Name dp_rx_mon_handle_mon_buf_addr(struct dp_pdev *pdev,
243*5113495bSYour Name 			      struct hal_rx_ppdu_info *ppdu_info,
244*5113495bSYour Name 			      union dp_mon_desc_list_elem_t **desc_list,
245*5113495bSYour Name 			      union dp_mon_desc_list_elem_t **tail)
246*5113495bSYour Name {
247*5113495bSYour Name 	return 0;
248*5113495bSYour Name }
249*5113495bSYour Name 
250*5113495bSYour Name static inline void
dp_rx_mon_handle_msdu_end(struct dp_pdev * pdev,struct hal_rx_ppdu_info * ppdu_info)251*5113495bSYour Name dp_rx_mon_handle_msdu_end(struct dp_pdev *pdev,
252*5113495bSYour Name 			  struct hal_rx_ppdu_info *ppdu_info)
253*5113495bSYour Name {
254*5113495bSYour Name }
255*5113495bSYour Name 
256*5113495bSYour Name static inline void
dp_rx_mon_reset_mpdu_q(struct hal_rx_ppdu_info * ppdu_info)257*5113495bSYour Name dp_rx_mon_reset_mpdu_q(struct hal_rx_ppdu_info *ppdu_info)
258*5113495bSYour Name {
259*5113495bSYour Name }
260*5113495bSYour Name 
261*5113495bSYour Name static inline void
dp_rx_mon_handle_mpdu_start(struct hal_rx_ppdu_info * ppdu_info)262*5113495bSYour Name dp_rx_mon_handle_mpdu_start(struct hal_rx_ppdu_info *ppdu_info)
263*5113495bSYour Name {
264*5113495bSYour Name }
265*5113495bSYour Name 
266*5113495bSYour Name static inline void
dp_rx_mon_handle_mpdu_end(struct hal_rx_ppdu_info * ppdu_info)267*5113495bSYour Name dp_rx_mon_handle_mpdu_end(struct hal_rx_ppdu_info *ppdu_info)
268*5113495bSYour Name {
269*5113495bSYour Name }
270*5113495bSYour Name 
271*5113495bSYour Name static inline QDF_STATUS
dp_rx_mon_nbuf_add_rx_frag(qdf_nbuf_t nbuf,qdf_frag_t * frag,uint16_t frag_len,uint16_t offset,uint16_t buf_size,bool frag_ref)272*5113495bSYour Name dp_rx_mon_nbuf_add_rx_frag(qdf_nbuf_t nbuf, qdf_frag_t *frag,
273*5113495bSYour Name 			   uint16_t frag_len, uint16_t offset,
274*5113495bSYour Name 			   uint16_t buf_size, bool frag_ref)
275*5113495bSYour Name {
276*5113495bSYour Name 	return 0;
277*5113495bSYour Name }
278*5113495bSYour Name 
279*5113495bSYour Name static inline void
dp_rx_mon_pf_tag_to_buf_headroom_2_0(void * nbuf,struct hal_rx_ppdu_info * ppdu_info,struct dp_pdev * pdev,struct dp_soc * soc)280*5113495bSYour Name dp_rx_mon_pf_tag_to_buf_headroom_2_0(void *nbuf,
281*5113495bSYour Name 				     struct hal_rx_ppdu_info *ppdu_info,
282*5113495bSYour Name 				     struct dp_pdev *pdev, struct dp_soc *soc)
283*5113495bSYour Name {
284*5113495bSYour Name }
285*5113495bSYour Name #endif
286*5113495bSYour Name #else
dp_mon_pdev_ext_init_2_0(struct dp_pdev * pdev)287*5113495bSYour Name static inline QDF_STATUS dp_mon_pdev_ext_init_2_0(struct dp_pdev *pdev)
288*5113495bSYour Name {
289*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
290*5113495bSYour Name }
291*5113495bSYour Name 
dp_mon_pdev_ext_deinit_2_0(struct dp_pdev * pdev)292*5113495bSYour Name static inline QDF_STATUS dp_mon_pdev_ext_deinit_2_0(struct dp_pdev *pdev)
293*5113495bSYour Name {
294*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
295*5113495bSYour Name }
296*5113495bSYour Name 
dp_rx_mon_ppdu_info_cache_create(struct dp_pdev * pdev)297*5113495bSYour Name static inline QDF_STATUS dp_rx_mon_ppdu_info_cache_create(struct dp_pdev *pdev)
298*5113495bSYour Name {
299*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
300*5113495bSYour Name }
301*5113495bSYour Name 
dp_rx_mon_ppdu_info_cache_destroy(struct dp_pdev * pdev)302*5113495bSYour Name static inline void dp_rx_mon_ppdu_info_cache_destroy(struct dp_pdev *pdev)
303*5113495bSYour Name {
304*5113495bSYour Name }
305*5113495bSYour Name 
306*5113495bSYour Name static inline struct hal_rx_ppdu_info*
dp_rx_mon_get_ppdu_info(struct dp_mon_pdev * mon_pdev)307*5113495bSYour Name dp_rx_mon_get_ppdu_info(struct dp_mon_pdev *mon_pdev)
308*5113495bSYour Name {
309*5113495bSYour Name 	return NULL;
310*5113495bSYour Name }
311*5113495bSYour Name 
312*5113495bSYour Name static inline void
dp_rx_mon_free_ppdu_info(struct dp_pdev * pdev,struct hal_rx_ppdu_info * ppdu_info)313*5113495bSYour Name dp_rx_mon_free_ppdu_info(struct dp_pdev *pdev,
314*5113495bSYour Name 			 struct hal_rx_ppdu_info *ppdu_info)
315*5113495bSYour Name {
316*5113495bSYour Name }
317*5113495bSYour Name 
318*5113495bSYour Name static inline QDF_STATUS
dp_rx_mon_buffers_alloc(struct dp_soc * soc,uint32_t size)319*5113495bSYour Name dp_rx_mon_buffers_alloc(struct dp_soc *soc, uint32_t size)
320*5113495bSYour Name {
321*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
322*5113495bSYour Name }
323*5113495bSYour Name 
324*5113495bSYour Name static inline
dp_rx_mon_soc_init_2_0(struct dp_soc * soc)325*5113495bSYour Name QDF_STATUS dp_rx_mon_soc_init_2_0(struct dp_soc *soc)
326*5113495bSYour Name {
327*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
328*5113495bSYour Name }
329*5113495bSYour Name 
330*5113495bSYour Name static inline void
dp_rx_mon_buffers_free(struct dp_soc * soc)331*5113495bSYour Name dp_rx_mon_buffers_free(struct dp_soc *soc)
332*5113495bSYour Name 
333*5113495bSYour Name {
334*5113495bSYour Name }
335*5113495bSYour Name 
336*5113495bSYour Name static inline void
dp_rx_mon_buf_desc_pool_deinit(struct dp_soc * soc)337*5113495bSYour Name dp_rx_mon_buf_desc_pool_deinit(struct dp_soc *soc)
338*5113495bSYour Name {
339*5113495bSYour Name }
340*5113495bSYour Name 
341*5113495bSYour Name static inline QDF_STATUS
dp_rx_mon_buf_desc_pool_init(struct dp_soc * soc)342*5113495bSYour Name dp_rx_mon_buf_desc_pool_init(struct dp_soc *soc)
343*5113495bSYour Name {
344*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
345*5113495bSYour Name }
346*5113495bSYour Name 
dp_rx_mon_buf_desc_pool_free(struct dp_soc * soc)347*5113495bSYour Name static inline void dp_rx_mon_buf_desc_pool_free(struct dp_soc *soc)
348*5113495bSYour Name {
349*5113495bSYour Name }
350*5113495bSYour Name 
351*5113495bSYour Name static inline QDF_STATUS
dp_rx_mon_buf_desc_pool_alloc(struct dp_soc * soc)352*5113495bSYour Name dp_rx_mon_buf_desc_pool_alloc(struct dp_soc *soc)
353*5113495bSYour Name {
354*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
355*5113495bSYour Name }
356*5113495bSYour Name 
357*5113495bSYour Name static inline
dp_rx_mon_stats_update_2_0(struct dp_mon_peer * mon_peer,struct cdp_rx_indication_ppdu * ppdu,struct cdp_rx_stats_ppdu_user * ppdu_user)358*5113495bSYour Name void dp_rx_mon_stats_update_2_0(struct dp_mon_peer *mon_peer,
359*5113495bSYour Name 				struct cdp_rx_indication_ppdu *ppdu,
360*5113495bSYour Name 				struct cdp_rx_stats_ppdu_user *ppdu_user)
361*5113495bSYour Name {
362*5113495bSYour Name }
363*5113495bSYour Name 
364*5113495bSYour Name static inline void
dp_rx_mon_populate_ppdu_usr_info_2_0(struct mon_rx_user_status * rx_user_status,struct cdp_rx_stats_ppdu_user * ppdu_user)365*5113495bSYour Name dp_rx_mon_populate_ppdu_usr_info_2_0(struct mon_rx_user_status *rx_user_status,
366*5113495bSYour Name 				     struct cdp_rx_stats_ppdu_user *ppdu_user)
367*5113495bSYour Name {
368*5113495bSYour Name }
369*5113495bSYour Name 
370*5113495bSYour Name static inline void
dp_rx_mon_populate_ppdu_info_2_0(struct hal_rx_ppdu_info * hal_ppdu_info,struct cdp_rx_indication_ppdu * ppdu)371*5113495bSYour Name dp_rx_mon_populate_ppdu_info_2_0(struct hal_rx_ppdu_info *hal_ppdu_info,
372*5113495bSYour Name 				 struct cdp_rx_indication_ppdu *ppdu)
373*5113495bSYour Name {
374*5113495bSYour Name }
375*5113495bSYour Name 
376*5113495bSYour Name static inline
dp_rx_mon_pdev_htt_srng_setup_2_0(struct dp_soc * soc,struct dp_pdev * pdev,int mac_id,int mac_for_pdev)377*5113495bSYour Name QDF_STATUS dp_rx_mon_pdev_htt_srng_setup_2_0(struct dp_soc *soc,
378*5113495bSYour Name 					    struct dp_pdev *pdev,
379*5113495bSYour Name 					    int mac_id,
380*5113495bSYour Name 					    int mac_for_pdev)
381*5113495bSYour Name {
382*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
383*5113495bSYour Name }
384*5113495bSYour Name 
385*5113495bSYour Name static inline
dp_rx_mon_soc_htt_srng_setup_2_0(struct dp_soc * soc,int mac_id)386*5113495bSYour Name QDF_STATUS dp_rx_mon_soc_htt_srng_setup_2_0(struct dp_soc *soc,
387*5113495bSYour Name 					    int mac_id)
388*5113495bSYour Name {
389*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
390*5113495bSYour Name }
391*5113495bSYour Name 
392*5113495bSYour Name static inline
dp_rx_mon_pdev_rings_alloc_2_0(struct dp_pdev * pdev,int lmac_id)393*5113495bSYour Name QDF_STATUS dp_rx_mon_pdev_rings_alloc_2_0(struct dp_pdev *pdev, int lmac_id)
394*5113495bSYour Name {
395*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
396*5113495bSYour Name }
397*5113495bSYour Name 
398*5113495bSYour Name static inline
dp_rx_mon_pdev_rings_free_2_0(struct dp_pdev * pdev,int lmac_id)399*5113495bSYour Name void dp_rx_mon_pdev_rings_free_2_0(struct dp_pdev *pdev, int lmac_id)
400*5113495bSYour Name {
401*5113495bSYour Name }
402*5113495bSYour Name 
403*5113495bSYour Name static inline
dp_rx_mon_pdev_rings_init_2_0(struct dp_pdev * pdev,int lmac_id)404*5113495bSYour Name QDF_STATUS dp_rx_mon_pdev_rings_init_2_0(struct dp_pdev *pdev, int lmac_id)
405*5113495bSYour Name {
406*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
407*5113495bSYour Name }
408*5113495bSYour Name 
409*5113495bSYour Name static inline
dp_rx_mon_pdev_rings_deinit_2_0(struct dp_pdev * pdev,int lmac_id)410*5113495bSYour Name void dp_rx_mon_pdev_rings_deinit_2_0(struct dp_pdev *pdev, int lmac_id)
411*5113495bSYour Name {
412*5113495bSYour Name }
413*5113495bSYour Name 
414*5113495bSYour Name static inline
dp_rx_mon_soc_attach_2_0(struct dp_soc * soc,int lmac_id)415*5113495bSYour Name QDF_STATUS dp_rx_mon_soc_attach_2_0(struct dp_soc *soc, int lmac_id)
416*5113495bSYour Name {
417*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
418*5113495bSYour Name }
419*5113495bSYour Name 
420*5113495bSYour Name static inline
dp_rx_mon_soc_detach_2_0(struct dp_soc * soc,int lmac_id)421*5113495bSYour Name void dp_rx_mon_soc_detach_2_0(struct dp_soc *soc, int lmac_id)
422*5113495bSYour Name {
423*5113495bSYour Name }
424*5113495bSYour Name 
425*5113495bSYour Name static inline
dp_rx_mon_soc_deinit_2_0(struct dp_soc * soc,uint32_t lmac_id)426*5113495bSYour Name void dp_rx_mon_soc_deinit_2_0(struct dp_soc *soc, uint32_t lmac_id)
427*5113495bSYour Name {
428*5113495bSYour Name }
429*5113495bSYour Name #endif
430*5113495bSYour Name 
431*5113495bSYour Name #if !defined(DISABLE_MON_CONFIG) && defined(WLAN_PKT_CAPTURE_RX_2_0)
432*5113495bSYour Name /*
433*5113495bSYour Name  * dp_rx_mon_process_2_0() - Process Rx monitor interrupt
434*5113495bSYour Name  *
435*5113495bSYour Name  * @soc: DP soc handle
436*5113495bSYour Name  * @int_ctx: Interrupt context
437*5113495bSYour Name  * @mac_id: LMAC id
438*5113495bSYour Name  * @quota: quota to reap
439*5113495bSYour Name  */
440*5113495bSYour Name uint32_t
441*5113495bSYour Name dp_rx_mon_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
442*5113495bSYour Name 		      uint32_t mac_id, uint32_t quota);
443*5113495bSYour Name 
444*5113495bSYour Name /**
445*5113495bSYour Name  * dp_rx_mon_process_ppdu() - RxMON Workqueue processing API
446*5113495bSYour Name  *
447*5113495bSYour Name  * @context: workqueue context
448*5113495bSYour Name  */
449*5113495bSYour Name void dp_rx_mon_process_ppdu(void *context);
450*5113495bSYour Name #else
451*5113495bSYour Name static inline uint32_t
dp_rx_mon_process_2_0(struct dp_soc * soc,struct dp_intr * int_ctx,uint32_t mac_id,uint32_t quota)452*5113495bSYour Name dp_rx_mon_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
453*5113495bSYour Name 		      uint32_t mac_id, uint32_t quota)
454*5113495bSYour Name {
455*5113495bSYour Name 	return 0;
456*5113495bSYour Name }
457*5113495bSYour Name 
dp_rx_mon_process_ppdu(void * context)458*5113495bSYour Name static inline void dp_rx_mon_process_ppdu(void *context)
459*5113495bSYour Name {
460*5113495bSYour Name }
461*5113495bSYour Name #endif /* DISABLE_MON_CONFIG */
462*5113495bSYour Name 
463*5113495bSYour Name /**
464*5113495bSYour Name  * dp_rx_mon_handle_full_mon() - Handle full monitor MPDU restitch
465*5113495bSYour Name  *
466*5113495bSYour Name  * @pdev: DP pdev
467*5113495bSYour Name  * @ppdu_info: PPDU info
468*5113495bSYour Name  * @mpdu: mpdu buf
469*5113495bSYour Name  *
470*5113495bSYour Name  * Return: SUCCESS or Failure
471*5113495bSYour Name  */
472*5113495bSYour Name QDF_STATUS
473*5113495bSYour Name dp_rx_mon_handle_full_mon(struct dp_pdev *pdev,
474*5113495bSYour Name 			  struct hal_rx_ppdu_info *ppdu_info,
475*5113495bSYour Name 			  qdf_nbuf_t mpdu);
476*5113495bSYour Name 
477*5113495bSYour Name /**
478*5113495bSYour Name  * dp_rx_mon_drain_wq() - Drain monitor buffers from rxmon workqueue
479*5113495bSYour Name  *
480*5113495bSYour Name  * @pdev: DP pdev handle
481*5113495bSYour Name  *
482*5113495bSYour Name  * Return: Void
483*5113495bSYour Name  */
484*5113495bSYour Name void dp_rx_mon_drain_wq(struct dp_pdev *pdev);
485*5113495bSYour Name 
486*5113495bSYour Name /**
487*5113495bSYour Name  * dp_mon_free_parent_nbuf() - Free parent SKB
488*5113495bSYour Name  *
489*5113495bSYour Name  * @mon_pdev: monitor pdev
490*5113495bSYour Name  * @nbuf: SKB to be freed
491*5113495bSYour Name  *
492*5113495bSYour Name  * Return: void
493*5113495bSYour Name  */
494*5113495bSYour Name void dp_mon_free_parent_nbuf(struct dp_mon_pdev *mon_pdev,
495*5113495bSYour Name 			qdf_nbuf_t nbuf);
496*5113495bSYour Name 
497*5113495bSYour Name #ifdef QCA_ENHANCED_STATS_SUPPORT
498*5113495bSYour Name /**
499*5113495bSYour Name  * dp_mon_rx_print_advanced_stats_2_0() - print advanced monitor statistics
500*5113495bSYour Name  *
501*5113495bSYour Name  * @soc: DP soc handle
502*5113495bSYour Name  * @pdev: DP pdev handle
503*5113495bSYour Name  *
504*5113495bSYour Name  * Return: void
505*5113495bSYour Name  */
506*5113495bSYour Name void dp_mon_rx_print_advanced_stats_2_0(struct dp_soc *soc,
507*5113495bSYour Name 					struct dp_pdev *pdev);
508*5113495bSYour Name #else
509*5113495bSYour Name static inline
dp_mon_rx_print_advanced_stats_2_0(struct dp_soc * soc,struct dp_pdev * pdev)510*5113495bSYour Name void dp_mon_rx_print_advanced_stats_2_0(struct dp_soc *soc,
511*5113495bSYour Name 					struct dp_pdev *pdev)
512*5113495bSYour Name {
513*5113495bSYour Name }
514*5113495bSYour Name #endif
515*5113495bSYour Name 
516*5113495bSYour Name #ifdef BE_PKTLOG_SUPPORT
517*5113495bSYour Name /**
518*5113495bSYour Name  * dp_rx_process_pktlog_be() - process pktlog
519*5113495bSYour Name  * @soc: dp soc handle
520*5113495bSYour Name  * @pdev: dp pdev handle
521*5113495bSYour Name  * @ppdu_info: HAL PPDU info
522*5113495bSYour Name  * @status_frag: frag pointer which needs to be added to nbuf
523*5113495bSYour Name  * @end_offset: Offset in frag to be added to nbuf_frags
524*5113495bSYour Name  *
525*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS or Failure
526*5113495bSYour Name  */
527*5113495bSYour Name QDF_STATUS
528*5113495bSYour Name dp_rx_process_pktlog_be(struct dp_soc *soc, struct dp_pdev *pdev,
529*5113495bSYour Name 			struct hal_rx_ppdu_info *ppdu_info,
530*5113495bSYour Name 			void *status_frag, uint32_t end_offset);
531*5113495bSYour Name #else
532*5113495bSYour Name static inline QDF_STATUS
dp_rx_process_pktlog_be(struct dp_soc * soc,struct dp_pdev * pdev,struct hal_rx_ppdu_info * ppdu_info,void * status_frag,uint32_t end_offset)533*5113495bSYour Name dp_rx_process_pktlog_be(struct dp_soc *soc, struct dp_pdev *pdev,
534*5113495bSYour Name 			struct hal_rx_ppdu_info *ppdu_info,
535*5113495bSYour Name 			void *status_frag, uint32_t end_offset)
536*5113495bSYour Name {
537*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
538*5113495bSYour Name }
539*5113495bSYour Name #endif
540*5113495bSYour Name 
541*5113495bSYour Name /**
542*5113495bSYour Name  * dp_rx_mon_append_nbuf() - Append nbuf to parent nbuf
543*5113495bSYour Name  * @nbuf: Parent nbuf
544*5113495bSYour Name  * @tmp_nbuf: nbuf to be attached to parent
545*5113495bSYour Name  *
546*5113495bSYour Name  * Return: void
547*5113495bSYour Name  */
548*5113495bSYour Name void dp_rx_mon_append_nbuf(qdf_nbuf_t nbuf, qdf_nbuf_t tmp_nbuf);
549*5113495bSYour Name #endif /* _DP_RX_MON_2_0_H_ */
550