xref: /wlan-driver/qca-wifi-host-cmn/dp/inc/cdp_txrx_mon_struct.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2022-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
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name /**
21*5113495bSYour Name  * DOC: cdp_txrx_mon_struct.h
22*5113495bSYour Name  * Define the monitor mode API structure
23*5113495bSYour Name  * shared by data path and the OS interface module
24*5113495bSYour Name  */
25*5113495bSYour Name 
26*5113495bSYour Name #ifndef _CDP_TXRX_MON_STRUCT_H_
27*5113495bSYour Name #define _CDP_TXRX_MON_STRUCT_H_
28*5113495bSYour Name 
29*5113495bSYour Name #ifdef QCA_SUPPORT_LITE_MONITOR
30*5113495bSYour Name 
31*5113495bSYour Name #define CDP_LITE_MON_PEER_MAX 16
32*5113495bSYour Name 
33*5113495bSYour Name #define CDP_MON_FRM_TYPE_MAX 3
34*5113495bSYour Name #define CDP_MON_FRM_FILTER_MODE_MAX 4
35*5113495bSYour Name 
36*5113495bSYour Name #define CDP_LITE_MON_LEN_64B 0x40
37*5113495bSYour Name #define CDP_LITE_MON_LEN_128B 0x80
38*5113495bSYour Name #define CDP_LITE_MON_LEN_256B 0x100
39*5113495bSYour Name #define CDP_LITE_MON_LEN_FULL 0xFFFF
40*5113495bSYour Name 
41*5113495bSYour Name #define CDP_LITE_MON_FILTER_ALL 0xFFFF
42*5113495bSYour Name 
43*5113495bSYour Name /* This should align with nac mac type enumerations in ieee80211_ioctl.h */
44*5113495bSYour Name #define CDP_LITE_MON_PEER_MAC_TYPE_CLIENT 2
45*5113495bSYour Name 
46*5113495bSYour Name /**
47*5113495bSYour Name  * enum cdp_lite_mon_legacy_filter - legacy filters for tx/rx
48*5113495bSYour Name  * @LEGACY_FILTER_DISABLED: No filter / filter disabled
49*5113495bSYour Name  * @LEGACY_FILTER_MCOPY: M_Copy filter
50*5113495bSYour Name  * @LEGACY_FILTER_TX_CAPTURE: Tx_Capture filter
51*5113495bSYour Name  * @LEGACY_FILTER_RX_ENH_CAPTURE: Rx Enhance capture filter
52*5113495bSYour Name  * @LEGACY_FILTER_ADV_MON_FILTER: Advance Monitor filter
53*5113495bSYour Name  *
54*5113495bSYour Name  * Use to identify which filter is currently enabled using lite mon
55*5113495bSYour Name  */
56*5113495bSYour Name enum cdp_lite_mon_legacy_filter {
57*5113495bSYour Name 	LEGACY_FILTER_DISABLED = 0,
58*5113495bSYour Name 	LEGACY_FILTER_MCOPY = 1,
59*5113495bSYour Name 	LEGACY_FILTER_TX_CAPTURE = 2,
60*5113495bSYour Name 	LEGACY_FILTER_RX_ENH_CAPTURE = 3,
61*5113495bSYour Name 	LEGACY_FILTER_ADV_MON_FILTER = 4,
62*5113495bSYour Name };
63*5113495bSYour Name 
64*5113495bSYour Name /**
65*5113495bSYour Name  * enum cdp_lite_mon_level- lite mon frame levels
66*5113495bSYour Name  * @CDP_LITE_MON_LEVEL_INVALID: level invalid
67*5113495bSYour Name  * @CDP_LITE_MON_LEVEL_MSDU: level msdu
68*5113495bSYour Name  * @CDP_LITE_MON_LEVEL_MPDU: level mpdu
69*5113495bSYour Name  * @CDP_LITE_MON_LEVEL_PPDU: level ppdu
70*5113495bSYour Name  */
71*5113495bSYour Name enum cdp_lite_mon_level {
72*5113495bSYour Name 	CDP_LITE_MON_LEVEL_INVALID = 0,
73*5113495bSYour Name 	CDP_LITE_MON_LEVEL_MSDU = 1,
74*5113495bSYour Name 	CDP_LITE_MON_LEVEL_MPDU = 2,
75*5113495bSYour Name 	CDP_LITE_MON_LEVEL_PPDU = 3,
76*5113495bSYour Name };
77*5113495bSYour Name 
78*5113495bSYour Name /**
79*5113495bSYour Name  * enum cdp_lite_mon_peer_action- lite mon peer action
80*5113495bSYour Name  * @CDP_LITE_MON_PEER_ADD: peer add
81*5113495bSYour Name  * @CDP_LITE_MON_PEER_REMOVE: peer remove
82*5113495bSYour Name  */
83*5113495bSYour Name enum cdp_lite_mon_peer_action {
84*5113495bSYour Name 	CDP_LITE_MON_PEER_ADD = 0,
85*5113495bSYour Name 	CDP_LITE_MON_PEER_REMOVE = 1,
86*5113495bSYour Name };
87*5113495bSYour Name 
88*5113495bSYour Name /**
89*5113495bSYour Name  * enum cdp_lite_mon_direction - lite mon config direction
90*5113495bSYour Name  * @CDP_LITE_MON_DIRECTION_RX: lite mon config direction rx
91*5113495bSYour Name  * @CDP_LITE_MON_DIRECTION_TX: lite mon config direction tx
92*5113495bSYour Name  */
93*5113495bSYour Name enum cdp_lite_mon_direction {
94*5113495bSYour Name 	CDP_LITE_MON_DIRECTION_RX = 1,
95*5113495bSYour Name 	CDP_LITE_MON_DIRECTION_TX = 2,
96*5113495bSYour Name };
97*5113495bSYour Name #endif
98*5113495bSYour Name /* MU max user to sniff */
99*5113495bSYour Name #define CDP_MU_SNIF_USER_MAX 4
100*5113495bSYour Name /* EHT max type and compression mode */
101*5113495bSYour Name #define CDP_EHT_TYPE_MODE_MAX 3
102*5113495bSYour Name /* Same as MAX_20MHZ_SEGMENTS */
103*5113495bSYour Name #define CDP_MAX_20MHZ_SEGS 16
104*5113495bSYour Name /* Same as MAX_ANTENNA_EIGHT */
105*5113495bSYour Name #define CDP_MAX_NUM_ANTENNA 8
106*5113495bSYour Name 
107*5113495bSYour Name /* XXX not really a mode; there are really multiple PHY's */
108*5113495bSYour Name enum cdp_mon_phymode {
109*5113495bSYour Name 	/* autoselect */
110*5113495bSYour Name 	CDP_IEEE80211_MODE_AUTO	= 0,
111*5113495bSYour Name 	/* 5GHz, OFDM */
112*5113495bSYour Name 	CDP_IEEE80211_MODE_11A	= 1,
113*5113495bSYour Name 	/* 2GHz, CCK */
114*5113495bSYour Name 	CDP_IEEE80211_MODE_11B	= 2,
115*5113495bSYour Name 	/* 2GHz, OFDM */
116*5113495bSYour Name 	CDP_IEEE80211_MODE_11G	= 3,
117*5113495bSYour Name 	/* 2GHz, GFSK */
118*5113495bSYour Name 	CDP_IEEE80211_MODE_FH	= 4,
119*5113495bSYour Name 	/* 5GHz, OFDM, 2x clock dynamic turbo */
120*5113495bSYour Name 	CDP_IEEE80211_MODE_TURBO_A	= 5,
121*5113495bSYour Name 	   /* 2GHz, OFDM, 2x clock dynamic turbo */
122*5113495bSYour Name 	CDP_IEEE80211_MODE_TURBO_G	= 6,
123*5113495bSYour Name 	/* 5Ghz, HT20 */
124*5113495bSYour Name 	CDP_IEEE80211_MODE_11NA_HT20	= 7,
125*5113495bSYour Name 	/* 2Ghz, HT20 */
126*5113495bSYour Name 	CDP_IEEE80211_MODE_11NG_HT20	= 8,
127*5113495bSYour Name 	/* 5Ghz, HT40 (ext ch +1) */
128*5113495bSYour Name 	CDP_IEEE80211_MODE_11NA_HT40PLUS	= 9,
129*5113495bSYour Name 	/* 5Ghz, HT40 (ext ch -1) */
130*5113495bSYour Name 	CDP_IEEE80211_MODE_11NA_HT40MINUS = 10,
131*5113495bSYour Name 	  /* 2Ghz, HT40 (ext ch +1) */
132*5113495bSYour Name 	CDP_IEEE80211_MODE_11NG_HT40PLUS = 11,
133*5113495bSYour Name 	/* 2Ghz, HT40 (ext ch -1) */
134*5113495bSYour Name 	CDP_IEEE80211_MODE_11NG_HT40MINUS = 12,
135*5113495bSYour Name 	/* 2Ghz, Auto HT40 */
136*5113495bSYour Name 	CDP_IEEE80211_MODE_11NG_HT40	= 13,
137*5113495bSYour Name 	/* 5Ghz, Auto HT40 */
138*5113495bSYour Name 	CDP_IEEE80211_MODE_11NA_HT40	= 14,
139*5113495bSYour Name 	/* 5Ghz, VHT20 */
140*5113495bSYour Name 	CDP_IEEE80211_MODE_11AC_VHT20	= 15,
141*5113495bSYour Name 	/* 5Ghz, VHT40 (Ext ch +1) */
142*5113495bSYour Name 	CDP_IEEE80211_MODE_11AC_VHT40PLUS   = 16,
143*5113495bSYour Name 	/* 5Ghz  VHT40 (Ext ch -1) */
144*5113495bSYour Name 	CDP_IEEE80211_MODE_11AC_VHT40MINUS  = 17,
145*5113495bSYour Name 	/* 5Ghz, VHT40 */
146*5113495bSYour Name 	CDP_IEEE80211_MODE_11AC_VHT40	= 18,
147*5113495bSYour Name 	/* 5Ghz, VHT80 */
148*5113495bSYour Name 	CDP_IEEE80211_MODE_11AC_VHT80	= 19,
149*5113495bSYour Name 	/* 5Ghz, VHT160 */
150*5113495bSYour Name 	CDP_IEEE80211_MODE_11AC_VHT160	= 20,
151*5113495bSYour Name 	/* 5Ghz, VHT80_80 */
152*5113495bSYour Name 	CDP_IEEE80211_MODE_11AC_VHT80_80	= 21,
153*5113495bSYour Name };
154*5113495bSYour Name 
155*5113495bSYour Name enum {
156*5113495bSYour Name 	CDP_PKT_TYPE_OFDM = 0,
157*5113495bSYour Name 	CDP_PKT_TYPE_CCK,
158*5113495bSYour Name 	CDP_PKT_TYPE_HT,
159*5113495bSYour Name 	CDP_PKT_TYPE_VHT,
160*5113495bSYour Name 	CDP_PKT_TYPE_HE,
161*5113495bSYour Name 	CDP_PKT_TYPE_EHT,
162*5113495bSYour Name 	CDP_PKT_TYPE_NO_SUP,
163*5113495bSYour Name 	CDP_PKT_TYPE_MAX,
164*5113495bSYour Name };
165*5113495bSYour Name 
166*5113495bSYour Name enum {
167*5113495bSYour Name 	CDP_SGI_0_8_US = 0,
168*5113495bSYour Name 	CDP_SGI_0_4_US,
169*5113495bSYour Name 	CDP_SGI_1_6_US,
170*5113495bSYour Name 	CDP_SGI_3_2_US,
171*5113495bSYour Name };
172*5113495bSYour Name 
173*5113495bSYour Name enum {
174*5113495bSYour Name 	CDP_RX_TYPE_SU = 0,
175*5113495bSYour Name 	CDP_RX_TYPE_MU_MIMO,
176*5113495bSYour Name 	CDP_RX_TYPE_MU_OFDMA,
177*5113495bSYour Name 	CDP_RX_TYPE_MU_OFDMA_MIMO,
178*5113495bSYour Name 	CDP_RX_TYPE_MAX,
179*5113495bSYour Name };
180*5113495bSYour Name 
181*5113495bSYour Name enum {
182*5113495bSYour Name 	CDP_MU_TYPE_DL = 0,
183*5113495bSYour Name 	CDP_MU_TYPE_UL,
184*5113495bSYour Name 	CDP_MU_TYPE_MAX,
185*5113495bSYour Name };
186*5113495bSYour Name 
187*5113495bSYour Name /*
188*5113495bSYour Name  *Band Width Types
189*5113495bSYour Name  */
190*5113495bSYour Name enum CMN_BW_TYPES {
191*5113495bSYour Name 	CMN_BW_20MHZ,
192*5113495bSYour Name 	CMN_BW_40MHZ,
193*5113495bSYour Name 	CMN_BW_80MHZ,
194*5113495bSYour Name 	CMN_BW_160MHZ,
195*5113495bSYour Name 	CMN_BW_80_80MHZ,
196*5113495bSYour Name #ifdef WLAN_FEATURE_11BE
197*5113495bSYour Name 	CMN_BW_320MHZ,
198*5113495bSYour Name #endif
199*5113495bSYour Name 	CMN_BW_CNT,
200*5113495bSYour Name 	CMN_BW_IDLE = 0xFF, /*default BW state */
201*5113495bSYour Name };
202*5113495bSYour Name 
203*5113495bSYour Name enum cdp_punctured_modes {
204*5113495bSYour Name 	NO_PUNCTURE,
205*5113495bSYour Name #ifdef WLAN_FEATURE_11BE
206*5113495bSYour Name 	PUNCTURED_20MHZ,
207*5113495bSYour Name 	PUNCTURED_40MHZ,
208*5113495bSYour Name 	PUNCTURED_80MHZ,
209*5113495bSYour Name 	PUNCTURED_120MHZ,
210*5113495bSYour Name #endif
211*5113495bSYour Name 	PUNCTURED_MODE_CNT,
212*5113495bSYour Name };
213*5113495bSYour Name 
214*5113495bSYour Name struct cdp_mon_status {
215*5113495bSYour Name 	/* bss color value 1-63 used for update on ppdu_desc bsscolor */
216*5113495bSYour Name 	uint8_t bsscolor;
217*5113495bSYour Name 	int rs_numchains;
218*5113495bSYour Name 	int rs_flags;
219*5113495bSYour Name #define IEEE80211_RX_FCS_ERROR      0x01
220*5113495bSYour Name #define IEEE80211_RX_MIC_ERROR      0x02
221*5113495bSYour Name #define IEEE80211_RX_DECRYPT_ERROR  0x04
222*5113495bSYour Name /* holes in flags here between, ATH_RX_XXXX to IEEE80211_RX_XXX */
223*5113495bSYour Name #define IEEE80211_RX_KEYMISS        0x200
224*5113495bSYour Name #define IEEE80211_RX_PN_ERROR       0x400
225*5113495bSYour Name 	int rs_rssi;       /* RSSI (noise floor adjusted) */
226*5113495bSYour Name 	int rs_abs_rssi;   /* absolute RSSI */
227*5113495bSYour Name 	int rs_datarate;   /* data rate received */
228*5113495bSYour Name 	int rs_rateieee;
229*5113495bSYour Name 	int rs_ratephy1;
230*5113495bSYour Name 	int rs_ratephy2;
231*5113495bSYour Name 	int rs_ratephy3;
232*5113495bSYour Name 
233*5113495bSYour Name /* Keep the same as ATH_MAX_ANTENNA */
234*5113495bSYour Name #define IEEE80211_MAX_ANTENNA       3
235*5113495bSYour Name 	/* RSSI (noise floor adjusted) */
236*5113495bSYour Name 	u_int8_t    rs_rssictl[IEEE80211_MAX_ANTENNA];
237*5113495bSYour Name 	/* RSSI (noise floor adjusted) */
238*5113495bSYour Name 	u_int8_t    rs_rssiextn[IEEE80211_MAX_ANTENNA];
239*5113495bSYour Name 	/* rs_rssi is valid or not */
240*5113495bSYour Name 	u_int8_t    rs_isvalidrssi;
241*5113495bSYour Name 
242*5113495bSYour Name 	enum cdp_mon_phymode rs_phymode;
243*5113495bSYour Name 	int         rs_freq;
244*5113495bSYour Name 
245*5113495bSYour Name 	union {
246*5113495bSYour Name 		u_int8_t            data[8];
247*5113495bSYour Name 		u_int64_t           tsf;
248*5113495bSYour Name 	} rs_tstamp;
249*5113495bSYour Name 
250*5113495bSYour Name 	/*
251*5113495bSYour Name 	 * Detail channel structure of recv frame.
252*5113495bSYour Name 	 * It could be NULL if not available
253*5113495bSYour Name 	 */
254*5113495bSYour Name 
255*5113495bSYour Name 
256*5113495bSYour Name #ifdef ATH_SUPPORT_AOW
257*5113495bSYour Name 	u_int16_t   rs_rxseq;      /* WLAN Sequence number */
258*5113495bSYour Name #endif
259*5113495bSYour Name #ifdef ATH_VOW_EXT_STATS
260*5113495bSYour Name 	/* Lower 16 bits holds the udp checksum offset in the data pkt */
261*5113495bSYour Name 	u_int32_t vow_extstats_offset;
262*5113495bSYour Name 	/* Higher 16 bits contains offset in the data pkt at which vow
263*5113495bSYour Name 	 * ext stats are embedded
264*5113495bSYour Name 	 */
265*5113495bSYour Name #endif
266*5113495bSYour Name 	u_int8_t rs_isaggr;
267*5113495bSYour Name 	u_int8_t rs_isapsd;
268*5113495bSYour Name 	int16_t rs_noisefloor;
269*5113495bSYour Name 	u_int16_t  rs_channel;
270*5113495bSYour Name #ifdef ATH_SUPPORT_TxBF
271*5113495bSYour Name 	u_int32_t   rs_rpttstamp;   /* txbf report time stamp*/
272*5113495bSYour Name #endif
273*5113495bSYour Name 
274*5113495bSYour Name 	/* The following counts are meant to assist in stats calculation.
275*5113495bSYour Name 	 * These variables are incremented only in specific situations, and
276*5113495bSYour Name 	 * should not be relied upon for any purpose other than the original
277*5113495bSYour Name 	 * stats related purpose they have been introduced for.
278*5113495bSYour Name 	*/
279*5113495bSYour Name 
280*5113495bSYour Name 	u_int16_t   rs_cryptodecapcount; /* Crypto bytes decapped/demic'ed. */
281*5113495bSYour Name 	u_int8_t    rs_padspace;         /* No. of padding bytes present after
282*5113495bSYour Name 					  header in wbuf. */
283*5113495bSYour Name 	u_int8_t    rs_qosdecapcount;    /* QoS/HTC bytes decapped. */
284*5113495bSYour Name 
285*5113495bSYour Name 	/* End of stats calculation related counts. */
286*5113495bSYour Name 
287*5113495bSYour Name 	/*
288*5113495bSYour Name 	 * uint8_t     rs_lsig[IEEE80211_LSIG_LEN];
289*5113495bSYour Name 	 * uint8_t     rs_htsig[IEEE80211_HTSIG_LEN];
290*5113495bSYour Name 	 * uint8_t     rs_servicebytes[IEEE80211_SB_LEN];
291*5113495bSYour Name 	 * uint8_t     rs_fcs_error;
292*5113495bSYour Name 	*/
293*5113495bSYour Name 
294*5113495bSYour Name 	/* cdp convergence monitor mode status */
295*5113495bSYour Name 	union {
296*5113495bSYour Name 		u_int8_t            cdp_data[8];
297*5113495bSYour Name 		u_int64_t           cdp_tsf;
298*5113495bSYour Name 	} cdp_rs_tstamp;
299*5113495bSYour Name 
300*5113495bSYour Name 	uint8_t  cdp_rs_pream_type;
301*5113495bSYour Name 	uint32_t cdp_rs_user_rssi;
302*5113495bSYour Name 	uint8_t  cdp_rs_stbc;
303*5113495bSYour Name 	uint8_t  cdp_rs_sgi;
304*5113495bSYour Name 	uint32_t cdf_rs_rate_mcs;
305*5113495bSYour Name 	uint32_t cdp_rs_reception_type;
306*5113495bSYour Name 	uint32_t cdp_rs_bw;
307*5113495bSYour Name 	uint32_t cdp_rs_nss;
308*5113495bSYour Name 	uint8_t  cdp_rs_fcs_err;
309*5113495bSYour Name 	bool     cdp_rs_rxdma_err;
310*5113495bSYour Name };
311*5113495bSYour Name 
312*5113495bSYour Name enum {
313*5113495bSYour Name 	CDP_MON_PPDU_START = 0,
314*5113495bSYour Name 	CDP_MON_PPDU_END,
315*5113495bSYour Name };
316*5113495bSYour Name 
317*5113495bSYour Name #ifdef QCA_UNDECODED_METADATA_SUPPORT
318*5113495bSYour Name /*
319*5113495bSYour Name  * enum cdp_mon_phyrx_abort_reason_code: Phy err code to store the reason
320*5113495bSYour Name  * why PHY generated an abort request.
321*5113495bSYour Name  */
322*5113495bSYour Name enum cdp_mon_phyrx_abort_reason_code {
323*5113495bSYour Name 	CDP_PHYRX_ERR_PHY_OFF = 0,
324*5113495bSYour Name 	CDP_PHYRX_ERR_SYNTH_OFF,
325*5113495bSYour Name 	CDP_PHYRX_ERR_OFDMA_TIMING,
326*5113495bSYour Name 	CDP_PHYRX_ERR_OFDMA_SIGNAL_PARITY,
327*5113495bSYour Name 	CDP_PHYRX_ERR_OFDMA_RATE_ILLEGAL,
328*5113495bSYour Name 	CDP_PHYRX_ERR_OFDMA_LENGTH_ILLEGAL,
329*5113495bSYour Name 	CDP_PHYRX_ERR_OFDMA_RESTART,
330*5113495bSYour Name 	CDP_PHYRX_ERR_OFDMA_SERVICE,
331*5113495bSYour Name 	CDP_PHYRX_ERR_PPDU_OFDMA_POWER_DROP,
332*5113495bSYour Name 	CDP_PHYRX_ERR_CCK_BLOKKER,
333*5113495bSYour Name 	CDP_PHYRX_ERR_CCK_TIMING = 10,
334*5113495bSYour Name 	CDP_PHYRX_ERR_CCK_HEADER_CRC,
335*5113495bSYour Name 	CDP_PHYRX_ERR_CCK_RATE_ILLEGAL,
336*5113495bSYour Name 	CDP_PHYRX_ERR_CCK_LENGTH_ILLEGAL,
337*5113495bSYour Name 	CDP_PHYRX_ERR_CCK_RESTART,
338*5113495bSYour Name 	CDP_PHYRX_ERR_CCK_SERVICE,
339*5113495bSYour Name 	CDP_PHYRX_ERR_CCK_POWER_DROP,
340*5113495bSYour Name 	CDP_PHYRX_ERR_HT_CRC_ERR,
341*5113495bSYour Name 	CDP_PHYRX_ERR_HT_LENGTH_ILLEGAL,
342*5113495bSYour Name 	CDP_PHYRX_ERR_HT_RATE_ILLEGAL,
343*5113495bSYour Name 	CDP_PHYRX_ERR_HT_ZLF = 20,
344*5113495bSYour Name 	CDP_PHYRX_ERR_FALSE_RADAR_EXT,
345*5113495bSYour Name 	CDP_PHYRX_ERR_GREEN_FIELD,
346*5113495bSYour Name 	CDP_PHYRX_ERR_BW_GT_DYN_BW,
347*5113495bSYour Name 	CDP_PHYRX_ERR_HT_LSIG_RATE_MISMATCH,
348*5113495bSYour Name 	CDP_PHYRX_ERR_VHT_CRC_ERROR,
349*5113495bSYour Name 	CDP_PHYRX_ERR_VHT_SIGA_UNSUPPORTED,
350*5113495bSYour Name 	CDP_PHYRX_ERR_VHT_LSIG_LEN_INVALID,
351*5113495bSYour Name 	CDP_PHYRX_ERR_VHT_NDP_OR_ZLF,
352*5113495bSYour Name 	CDP_PHYRX_ERR_VHT_NSYM_LT_ZERO,
353*5113495bSYour Name 	CDP_PHYRX_ERR_VHT_RX_EXTRA_SYMBOL_MISMATCH = 30,
354*5113495bSYour Name 	CDP_PHYRX_ERR_VHT_RX_SKIP_GROUP_ID0,
355*5113495bSYour Name 	CDP_PHYRX_ERR_VHT_RX_SKIP_GROUP_ID1TO62,
356*5113495bSYour Name 	CDP_PHYRX_ERR_VHT_RX_SKIP_GROUP_ID63,
357*5113495bSYour Name 	CDP_PHYRX_ERR_OFDM_LDPC_DECODER_DISABLED,
358*5113495bSYour Name 	CDP_PHYRX_ERR_DEFER_NAP,
359*5113495bSYour Name 	CDP_PHYRX_ERR_FDOMAIN_TIMEOUT,
360*5113495bSYour Name 	CDP_PHYRX_ERR_LSIG_REL_CHECK,
361*5113495bSYour Name 	CDP_PHYRX_ERR_BT_COLLISION,
362*5113495bSYour Name 	CDP_PHYRX_ERR_UNSUPPORTED_MU_FEEDBACK,
363*5113495bSYour Name 	CDP_PHYRX_ERR_PPDU_TX_INTERRUPT_RX = 40,
364*5113495bSYour Name 	CDP_PHYRX_ERR_UNSUPPORTED_CBF,
365*5113495bSYour Name 	CDP_PHYRX_ERR_OTHER,
366*5113495bSYour Name 	CDP_PHYRX_ERR_HE_SIGA_UNSUPPORTED,
367*5113495bSYour Name 	CDP_PHYRX_ERR_HE_SIGA_CRC_ERROR,
368*5113495bSYour Name 	CDP_PHYRX_ERR_HE_SIGB_UNSUPPORTED,
369*5113495bSYour Name 	CDP_PHYRX_ERR_HE_SIGB_CRC_ERROR,
370*5113495bSYour Name 	CDP_PHYRX_ERR_HE_MU_MODE_UNSUPPORTED,
371*5113495bSYour Name 	CDP_PHYRX_ERR_HE_NDP_OR_ZLF,
372*5113495bSYour Name 	CDP_PHYRX_ERR_HE_NSYM_LT_ZERO,
373*5113495bSYour Name 	CDP_PHYRX_ERR_HE_RU_PARAMS_UNSUPPORTED = 50,
374*5113495bSYour Name 	CDP_PHYRX_ERR_HE_NUM_USERS_UNSUPPORTED,
375*5113495bSYour Name 	CDP_PHYRX_ERR_HE_SOUNDING_PARAMS_UNSUPPORTED,
376*5113495bSYour Name 	CDP_PHYRX_ERR_HE_EXT_SU_UNSUPPORTED,
377*5113495bSYour Name 	CDP_PHYRX_ERR_HE_TRIG_UNSUPPORTED,
378*5113495bSYour Name 	CDP_PHYRX_ERR_HE_LSIG_LEN_INVALID = 55,
379*5113495bSYour Name 	CDP_PHYRX_ERR_HE_LSIG_RATE_MISMATCH,
380*5113495bSYour Name 	CDP_PHYRX_ERR_OFDMA_SIGNAL_RELIABILITY,
381*5113495bSYour Name 	CDP_PHYRX_ERR_HT_NSYM_LT_ZERO,
382*5113495bSYour Name 	CDP_PHYRX_ERR_VHT_LSIG_RATE_MISMATCH,
383*5113495bSYour Name 	CDP_PHYRX_ERR_VHT_PAID_GID_MISMATCH = 60,
384*5113495bSYour Name 	CDP_PHYRX_ERR_VHT_UNSUPPORTED_BW,
385*5113495bSYour Name 	CDP_PHYRX_ERR_VHT_GI_DISAM_MISMATCH,
386*5113495bSYour Name 	CDP_PHYRX_ERR_RX_WDG_TIMEOUT = 63,
387*5113495bSYour Name 	CDP_PHYRX_ERR_MAX
388*5113495bSYour Name };
389*5113495bSYour Name #endif
390*5113495bSYour Name 
391*5113495bSYour Name #define MAX_PPDU_ID_HIST 128
392*5113495bSYour Name 
393*5113495bSYour Name /**
394*5113495bSYour Name  * struct cdp_pdev_mon_stats
395*5113495bSYour Name  * @status_ppdu_state: state on PPDU start and end
396*5113495bSYour Name  * @status_ppdu_start: status ring PPDU start TLV count
397*5113495bSYour Name  * @status_ppdu_end: status ring PPDU end TLV count
398*5113495bSYour Name  * @status_ppdu_compl: status ring matching start and end count on PPDU
399*5113495bSYour Name  * @status_ppdu_start_mis: status ring missing start TLV count on PPDU
400*5113495bSYour Name  * @status_ppdu_end_mis: status ring missing end TLV count on PPDU
401*5113495bSYour Name  * @mpdu_cnt_fcs_ok: MPDU ok count per pkt and reception type DL-UL and user
402*5113495bSYour Name  * @mpdu_cnt_fcs_err: MPDU err count per pkt and reception type DL-UL and user
403*5113495bSYour Name  * @ppdu_eht_type_mode: PPDU count per type compression mode and DL-UL
404*5113495bSYour Name  * @end_user_stats_cnt: PPDU end user TLV count
405*5113495bSYour Name  * @start_user_info_cnt: PPDU start user info TLV count
406*5113495bSYour Name  * @status_ppdu_done: status ring PPDU done TLV count
407*5113495bSYour Name  * @dest_ppdu_done: destination ring PPDU count
408*5113495bSYour Name  * @dest_mpdu_done: destination ring MPDU count
409*5113495bSYour Name  * @dest_mpdu_drop:
410*5113495bSYour Name  * @dup_mon_linkdesc_cnt: duplicate link descriptor indications from HW
411*5113495bSYour Name  * @dup_mon_buf_cnt: duplicate buffer indications from HW
412*5113495bSYour Name  * @dup_mon_sw_desc: Duplicate sw desc from HW
413*5113495bSYour Name  * @stat_ring_ppdu_id_hist:
414*5113495bSYour Name  * @dest_ring_ppdu_id_hist:
415*5113495bSYour Name  * @ppdu_id_hist_idx:
416*5113495bSYour Name  * @mon_rx_dest_stuck:
417*5113495bSYour Name  * @tlv_tag_status_err: status not correct in the tlv tag
418*5113495bSYour Name  * @status_buf_done_war: Number of status ring buffers for which DMA not done
419*5113495bSYour Name  *  WAR is applied.
420*5113495bSYour Name  * @mon_rx_bufs_replenished_dest: Rx buffers replenish count
421*5113495bSYour Name  * @mon_rx_bufs_reaped_dest: Rx buffer reap count
422*5113495bSYour Name  * @ppdu_id_mismatch: counter to track ppdu id mismatch in
423*5113495bSYour Name  *  mointor status and monitor destination ring
424*5113495bSYour Name  * @ppdu_id_match: counter to track ppdu id match in
425*5113495bSYour Name  *  mointor status and monitor destination ring
426*5113495bSYour Name  * @status_ppdu_drop: Number of ppdu dropped from monitor status ring
427*5113495bSYour Name  * @dest_ppdu_drop: Number of ppdu dropped from monitor destination ring
428*5113495bSYour Name  * @mon_link_desc_invalid: msdu link desc invalid count
429*5113495bSYour Name  * @mon_rx_desc_invalid: rx_desc invalid count
430*5113495bSYour Name  * @mon_nbuf_sanity_err:
431*5113495bSYour Name  * @mpdu_ppdu_id_mismatch_drop: mpdu's ppdu id did not match destination
432*5113495bSYour Name  *  ring ppdu id
433*5113495bSYour Name  * @mpdu_decap_type_invalid: mpdu decap type invalid count
434*5113495bSYour Name  * @rx_undecoded_count: Received undecoded frame count
435*5113495bSYour Name  * @rx_undecoded_error: Rx undecoded errors
436*5113495bSYour Name  * @rx_hdr_not_received: Rx HDR not received for MPDU
437*5113495bSYour Name  * @invalid_dma_length: Invalid length received for packet buffer
438*5113495bSYour Name  * @parent_buf_alloc: Numder of parent nbuf allocated for MPDU
439*5113495bSYour Name  * @parent_buf_free: Number of parent nbuf freed
440*5113495bSYour Name  * @pkt_buf_count: Number of packet buffers received
441*5113495bSYour Name  * @mpdus_buf_to_stack: Number of MPDUs delivered to stack
442*5113495bSYour Name  * @status_buf_count: Number of status buffer received
443*5113495bSYour Name  * @empty_desc_ppdu: Number of empty desc received
444*5113495bSYour Name  * @total_ppdu_info_enq: Number of PPDUs enqueued to wq
445*5113495bSYour Name  * @total_ppdu_info_drop: Number of PPDUs dropped
446*5113495bSYour Name  * @total_ppdu_info_alloc: Number of PPDU info allocated
447*5113495bSYour Name  * @total_ppdu_info_free: Number of PPDU info freed
448*5113495bSYour Name  * @ppdu_drop_cnt: Total PPDU drop count
449*5113495bSYour Name  * @mpdu_drop_cnt: Total MPDU drop count
450*5113495bSYour Name  * @end_of_ppdu_drop_cnt: Total end of ppdu drop count
451*5113495bSYour Name  * @tlv_drop_cnt: TLV drop count
452*5113495bSYour Name  * @rx_hdr_invalid_cnt: Rx header invalid count
453*5113495bSYour Name  * @null_status_desc: NULL packet desc count
454*5113495bSYour Name  * @null_pkt_desc: NULL packet desc count
455*5113495bSYour Name  * @desc_magic_mismatch: desc magic number mismatch count;
456*5113495bSYour Name  * @null_pkt_addr: NULL packet address count;
457*5113495bSYour Name  * @pending_desc_count: Pending desc_count during pdev deinit
458*5113495bSYour Name  */
459*5113495bSYour Name struct cdp_pdev_mon_stats {
460*5113495bSYour Name #ifndef REMOVE_MON_DBG_STATS
461*5113495bSYour Name 	uint32_t status_ppdu_state;
462*5113495bSYour Name 	uint32_t status_ppdu_start;
463*5113495bSYour Name 	uint32_t status_ppdu_end;
464*5113495bSYour Name 	uint32_t status_ppdu_compl;
465*5113495bSYour Name 	uint32_t status_ppdu_start_mis;
466*5113495bSYour Name 	uint32_t status_ppdu_end_mis;
467*5113495bSYour Name #endif
468*5113495bSYour Name 	uint32_t mpdu_cnt_fcs_ok[CDP_PKT_TYPE_MAX][CDP_RX_TYPE_MAX]
469*5113495bSYour Name 				[CDP_MU_TYPE_MAX][CDP_MU_SNIF_USER_MAX];
470*5113495bSYour Name 	uint32_t mpdu_cnt_fcs_err[CDP_PKT_TYPE_MAX][CDP_RX_TYPE_MAX]
471*5113495bSYour Name 				 [CDP_MU_TYPE_MAX][CDP_MU_SNIF_USER_MAX];
472*5113495bSYour Name 	uint32_t ppdu_eht_type_mode[CDP_EHT_TYPE_MODE_MAX][CDP_MU_TYPE_MAX];
473*5113495bSYour Name 	uint32_t end_user_stats_cnt;
474*5113495bSYour Name 	uint32_t start_user_info_cnt;
475*5113495bSYour Name 	uint32_t status_ppdu_done;
476*5113495bSYour Name 	uint32_t dest_ppdu_done;
477*5113495bSYour Name 	uint32_t dest_mpdu_done;
478*5113495bSYour Name 	uint32_t dest_mpdu_drop;
479*5113495bSYour Name 	uint32_t dup_mon_linkdesc_cnt;
480*5113495bSYour Name 	uint32_t dup_mon_buf_cnt;
481*5113495bSYour Name 	uint32_t dup_mon_sw_desc;
482*5113495bSYour Name 	uint32_t stat_ring_ppdu_id_hist[MAX_PPDU_ID_HIST];
483*5113495bSYour Name 	uint32_t dest_ring_ppdu_id_hist[MAX_PPDU_ID_HIST];
484*5113495bSYour Name 	uint32_t ppdu_id_hist_idx;
485*5113495bSYour Name 	uint32_t mon_rx_dest_stuck;
486*5113495bSYour Name 	uint32_t tlv_tag_status_err;
487*5113495bSYour Name 	uint32_t status_buf_done_war;
488*5113495bSYour Name 	uint32_t mon_rx_bufs_replenished_dest;
489*5113495bSYour Name 	uint32_t mon_rx_bufs_reaped_dest;
490*5113495bSYour Name 	uint32_t ppdu_id_mismatch;
491*5113495bSYour Name 	uint32_t ppdu_id_match;
492*5113495bSYour Name 	uint32_t status_ppdu_drop;
493*5113495bSYour Name 	uint32_t dest_ppdu_drop;
494*5113495bSYour Name 	uint32_t mon_link_desc_invalid;
495*5113495bSYour Name 	uint32_t mon_rx_desc_invalid;
496*5113495bSYour Name 	uint32_t mon_nbuf_sanity_err;
497*5113495bSYour Name 	uint32_t mpdu_ppdu_id_mismatch_drop;
498*5113495bSYour Name 	uint32_t mpdu_decap_type_invalid;
499*5113495bSYour Name #ifdef QCA_UNDECODED_METADATA_SUPPORT
500*5113495bSYour Name 	uint32_t rx_undecoded_count;
501*5113495bSYour Name 	uint32_t rx_undecoded_error[CDP_PHYRX_ERR_MAX];
502*5113495bSYour Name #endif
503*5113495bSYour Name 	uint32_t rx_hdr_not_received;
504*5113495bSYour Name 	uint32_t invalid_dma_length;
505*5113495bSYour Name 	uint32_t parent_buf_alloc;
506*5113495bSYour Name 	uint32_t parent_buf_free;
507*5113495bSYour Name 	uint32_t pkt_buf_count;
508*5113495bSYour Name 	uint32_t mpdus_buf_to_stack;
509*5113495bSYour Name 	uint32_t status_buf_count;
510*5113495bSYour Name 	uint32_t empty_desc_ppdu;
511*5113495bSYour Name 	uint32_t total_ppdu_info_enq;
512*5113495bSYour Name 	uint32_t total_ppdu_info_drop;
513*5113495bSYour Name 	uint32_t total_ppdu_info_alloc;
514*5113495bSYour Name 	uint32_t total_ppdu_info_free;
515*5113495bSYour Name 	uint32_t ppdu_drop_cnt;
516*5113495bSYour Name 	uint32_t mpdu_drop_cnt;
517*5113495bSYour Name 	uint32_t end_of_ppdu_drop_cnt;
518*5113495bSYour Name 	uint32_t tlv_drop_cnt;
519*5113495bSYour Name 	uint32_t rx_hdr_invalid_cnt;
520*5113495bSYour Name 	uint32_t null_status_desc;
521*5113495bSYour Name 	uint32_t null_pkt_desc;
522*5113495bSYour Name 	uint32_t desc_magic_mismatch;
523*5113495bSYour Name 	uint32_t null_pkt_addr;
524*5113495bSYour Name 	uint32_t pending_desc_count;
525*5113495bSYour Name };
526*5113495bSYour Name 
527*5113495bSYour Name #ifdef QCA_SUPPORT_LITE_MONITOR
528*5113495bSYour Name /**
529*5113495bSYour Name  * struct cdp_lite_mon_filter_config - lite mon set/get filter config
530*5113495bSYour Name  * @direction: direction tx/rx
531*5113495bSYour Name  * @disable: disables lite mon
532*5113495bSYour Name  * @level: MSDU/MPDU/PPDU levels
533*5113495bSYour Name  * @metadata: meta information to be added
534*5113495bSYour Name  * @mgmt_filter: mgmt filter for modes fp,md,mo
535*5113495bSYour Name  * @ctrl_filter: ctrl filter for modes fp,md,mo
536*5113495bSYour Name  * @data_filter: data filter for modes fp,md,mo
537*5113495bSYour Name  * @len: mgmt/ctrl/data frame lens
538*5113495bSYour Name  * @debug: debug options
539*5113495bSYour Name  * @vdev_id: output vdev id
540*5113495bSYour Name  * @legacy_filter_enabled: legacy filter currently enabled
541*5113495bSYour Name  */
542*5113495bSYour Name struct cdp_lite_mon_filter_config {
543*5113495bSYour Name 	uint8_t direction;
544*5113495bSYour Name 	uint8_t disable;
545*5113495bSYour Name 	uint8_t level;
546*5113495bSYour Name 	uint8_t metadata;
547*5113495bSYour Name 	uint16_t mgmt_filter[CDP_MON_FRM_FILTER_MODE_MAX];
548*5113495bSYour Name 	uint16_t ctrl_filter[CDP_MON_FRM_FILTER_MODE_MAX];
549*5113495bSYour Name 	uint16_t data_filter[CDP_MON_FRM_FILTER_MODE_MAX];
550*5113495bSYour Name 	uint16_t len[CDP_MON_FRM_TYPE_MAX];
551*5113495bSYour Name 	uint8_t debug;
552*5113495bSYour Name 	uint8_t vdev_id;
553*5113495bSYour Name 	uint8_t legacy_filter_enabled;
554*5113495bSYour Name };
555*5113495bSYour Name 
556*5113495bSYour Name /**
557*5113495bSYour Name  * struct cdp_lite_mon_peer_config - lite mon set peer config
558*5113495bSYour Name  * @direction: direction tx/rx
559*5113495bSYour Name  * @action: add/del
560*5113495bSYour Name  * @vdev_id: peer vdev id
561*5113495bSYour Name  * @mac: peer mac
562*5113495bSYour Name  */
563*5113495bSYour Name struct cdp_lite_mon_peer_config {
564*5113495bSYour Name 	uint8_t direction;
565*5113495bSYour Name 	uint8_t action;
566*5113495bSYour Name 	uint8_t vdev_id;
567*5113495bSYour Name 	uint8_t mac[QDF_MAC_ADDR_SIZE];
568*5113495bSYour Name };
569*5113495bSYour Name 
570*5113495bSYour Name /**
571*5113495bSYour Name  * struct cdp_lite_mon_peer_info - lite mon get peer config
572*5113495bSYour Name  * @direction: direction tx/rx
573*5113495bSYour Name  * @count: no of peers
574*5113495bSYour Name  * @mac: peer macs
575*5113495bSYour Name  */
576*5113495bSYour Name struct cdp_lite_mon_peer_info {
577*5113495bSYour Name 	uint8_t direction;
578*5113495bSYour Name 	uint8_t count;
579*5113495bSYour Name 	uint8_t mac[CDP_LITE_MON_PEER_MAX][QDF_MAC_ADDR_SIZE];
580*5113495bSYour Name };
581*5113495bSYour Name #endif
582*5113495bSYour Name /* channel operating width */
583*5113495bSYour Name enum cdp_channel_width {
584*5113495bSYour Name 	CHAN_WIDTH_20 = 0,
585*5113495bSYour Name 	CHAN_WIDTH_40,
586*5113495bSYour Name 	CHAN_WIDTH_80,
587*5113495bSYour Name 	CHAN_WIDTH_160,
588*5113495bSYour Name 	CHAN_WIDTH_80P80,
589*5113495bSYour Name 	CHAN_WIDTH_5,
590*5113495bSYour Name 	CHAN_WIDTH_10,
591*5113495bSYour Name 	CHAN_WIDTH_165,
592*5113495bSYour Name 	CHAN_WIDTH_160P160,
593*5113495bSYour Name 	CHAN_WIDTH_320,
594*5113495bSYour Name 
595*5113495bSYour Name 	CHAN_WIDTH_MAX,
596*5113495bSYour Name };
597*5113495bSYour Name 
598*5113495bSYour Name /**
599*5113495bSYour Name  * struct cdp_rssi_temp_off_param_dp
600*5113495bSYour Name  * @rssi_temp_offset: Temperature based rssi offset , send every 30 secs
601*5113495bSYour Name  */
602*5113495bSYour Name 
603*5113495bSYour Name struct cdp_rssi_temp_off_param_dp {
604*5113495bSYour Name 	int32_t rssi_temp_offset;
605*5113495bSYour Name };
606*5113495bSYour Name 
607*5113495bSYour Name /**
608*5113495bSYour Name  * struct cdp_rssi_dbm_conv_param_dp
609*5113495bSYour Name  * @curr_bw: Current bandwidth
610*5113495bSYour Name  * @curr_rx_chainmask: Current rx chainmask
611*5113495bSYour Name  * @xbar_config: 4 bytes, used for BB to RF Chain mapping
612*5113495bSYour Name  * @xlna_bypass_offset: Low noise amplifier bypass offset
613*5113495bSYour Name  * @xlna_bypass_threshold: Low noise amplifier bypass threshold
614*5113495bSYour Name  * @nf_hw_dbm: HW noise floor in dBm per chain, per 20MHz subband
615*5113495bSYour Name  */
616*5113495bSYour Name struct cdp_rssi_dbm_conv_param_dp {
617*5113495bSYour Name 	uint32_t curr_bw;
618*5113495bSYour Name 	uint32_t curr_rx_chainmask;
619*5113495bSYour Name 	uint32_t xbar_config;
620*5113495bSYour Name 	int32_t xlna_bypass_offset;
621*5113495bSYour Name 	int32_t xlna_bypass_threshold;
622*5113495bSYour Name 	int8_t nf_hw_dbm[CDP_MAX_NUM_ANTENNA][CDP_MAX_20MHZ_SEGS];
623*5113495bSYour Name };
624*5113495bSYour Name 
625*5113495bSYour Name /**
626*5113495bSYour Name  * struct cdp_rssi_db2dbm_param_dp
627*5113495bSYour Name  * @pdev_id: pdev_id
628*5113495bSYour Name  * @rssi_temp_off_present: to check temp offset values present or not
629*5113495bSYour Name  * @rssi_dbm_info_present: to check rssi dbm conversion parameters
630*5113495bSYour Name  *						   present or not
631*5113495bSYour Name  * @temp_off_param: cdp_rssi_temp_off_param_dp structure value
632*5113495bSYour Name  * @rssi_dbm_param: cdp_rssi_dbm_conv_param_dp staructure value
633*5113495bSYour Name  */
634*5113495bSYour Name struct cdp_rssi_db2dbm_param_dp {
635*5113495bSYour Name 	uint32_t pdev_id;
636*5113495bSYour Name 	bool rssi_temp_off_present;
637*5113495bSYour Name 	bool rssi_dbm_info_present;
638*5113495bSYour Name 	struct cdp_rssi_temp_off_param_dp temp_off_param;
639*5113495bSYour Name 	struct cdp_rssi_dbm_conv_param_dp rssi_dbm_param;
640*5113495bSYour Name };
641*5113495bSYour Name 
642*5113495bSYour Name /**
643*5113495bSYour Name  * enum cdp_mon_reap_source - trigger source of the reap timer of
644*5113495bSYour Name  * monitor status ring
645*5113495bSYour Name  * @CDP_MON_REAP_SOURCE_PKTLOG: pktlog
646*5113495bSYour Name  * @CDP_MON_REAP_SOURCE_CFR: CFR
647*5113495bSYour Name  * @CDP_MON_REAP_SOURCE_EMESH: easy mesh
648*5113495bSYour Name  * @CDP_MON_REAP_SOURCE_NUM: total number of the sources
649*5113495bSYour Name  * @CDP_MON_REAP_SOURCE_ANY: any of the sources
650*5113495bSYour Name  */
651*5113495bSYour Name enum cdp_mon_reap_source {
652*5113495bSYour Name 	CDP_MON_REAP_SOURCE_PKTLOG,
653*5113495bSYour Name 	CDP_MON_REAP_SOURCE_CFR,
654*5113495bSYour Name 	CDP_MON_REAP_SOURCE_EMESH,
655*5113495bSYour Name 
656*5113495bSYour Name 	/* keep last */
657*5113495bSYour Name 	CDP_MON_REAP_SOURCE_NUM,
658*5113495bSYour Name 	CDP_MON_REAP_SOURCE_ANY,
659*5113495bSYour Name };
660*5113495bSYour Name #endif
661