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