xref: /wlan-dirver/qca-wifi-host-cmn/target_if/cfr/inc/target_if_cfr_enh.h (revision 97f44cd39e4ff816eaa1710279d28cf6b9e65ad9)
1 /*
2  * Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #ifndef _TARGET_IF_CFR_ENH_H_
20 #define _TARGET_IF_CFR_ENH_H_
21 
22 #ifdef WLAN_ENH_CFR_ENABLE
23 /*
24  * Memory requirements :
25  *
26  *  1. DMA header :
27  *
28  * Legacy DMA header(QCA8074V2) : 2 words (length = 8 bytes)
29  * Enhanced DMA header(QCA6018) : Upto 16 words depending on no. of MU users
30  *                       in UL-MU-PPDU (Max length = 64 bytes)
31  *
32  * Fixed 4 words for whal_cfir_enhanced_hdr + freeze TLV
33  *                                          + uplink_user_info TLV (MAX 4)
34  *
35  * mu_rx_num_users -> No. of words in CFR DMA header
36  * 0 -> 12  =  4 + 7(freeze TLV) + 1(for 64-bit alignment)
37  * 1 -> 12  =  4 + 7(freeze TLV) + 1(user1)
38  * 2 -> 14  =  4 + 7(freeze TLV) + 2(users 1,2) + 1(for 64-bit alignment)
39  * 3 -> 14  =  4 + 7(freeze TLV) + 3(users 1,2,3)
40  * 4 -> 16  =  4 + 7(freeze TLV) + 4(users 1,2,3,4) + 1(for 64-bit alignment)
41  *
42  *
43  * 2. CFR data size for max BW/Nss/Nrx
44  *
45  *	Cypress : Max BW = 80 MHz
46  *			 NSS = 2
47  *			 Nrx = 2
48  *			 Size of one tone = 4 bytes
49  *
50  *		a. RTT-H - 2048 bytes
51  *
52  *		b. Debug-H (MIMO CFR) - 16016 bytes
53  *
54  *		c. RTT-H + CIR - 10240 bytes = 2048(RTT-H) + 8192(CIR)
55  */
56 
57 /* Max 4 users in MU case */
58 #define CYP_CFR_MU_USERS 4
59 
60 #define CYP_MAX_HEADER_LENGTH_WORDS 16
61 
62 /* payload_len = Max(2048, 16016, 10240) = 16064 (64-bit alignment) */
63 #define CYP_MAX_DATA_LENGTH_BYTES 16064
64 
65 /* in ms */
66 #define LUT_AGE_TIMER 3000
67 #define LUT_AGE_THRESHOLD 3000
68 
69 /* Max size :
70  * sizeof(csi_cfr_header) + 64 bytes(cfr header) + 16064 bytes(cfr payload)
71  */
72 #define STREAMFS_MAX_SUBBUF_CYP \
73 	(sizeof(struct csi_cfr_header) + \
74 	 (CYP_MAX_HEADER_LENGTH_WORDS * 4) + \
75 	 CYP_MAX_DATA_LENGTH_BYTES)
76 
77 #define STREAMFS_NUM_SUBBUF_CYP 255
78 
79 /* Max 37 users in MU case for Pine */
80 #define PINE_CFR_MU_USERS 37
81 
82 #define PINE_MAX_HEADER_LENGTH_WORDS 50
83 
84 #define PINE_MAX_DATA_LENGTH_BYTES 16384
85 
86 /* Max size :
87  * sizeof(csi_cfr_header) + 200 bytes(cfr header) + 16384 bytes(cfr payload)
88  */
89 #define STREAMFS_MAX_SUBBUF_PINE \
90 	(sizeof(struct csi_cfr_header) + \
91 	 (PINE_MAX_HEADER_LENGTH_WORDS * 4) + \
92 	 PINE_MAX_DATA_LENGTH_BYTES)
93 
94 #define STREAMFS_NUM_SUBBUF_PINE 255
95 
96 /* enum macrx_freeze_tlv_version: Reported by uCode in enh_dma_header
97  * MACRX_FREEZE_TLV_VERSION_1: Single MU UL user info reported by MAC
98  * MACRX_FREEZE_TLV_VERSION_2: Upto 4 MU UL user info reported by MAC
99  * MACRX_FREEZE_TLV_VERSION_3: Upto 37 MU UL user info reported by MAC
100  */
101 enum macrx_freeze_tlv_version {
102 	MACRX_FREEZE_TLV_VERSION_1 = 1,
103 	MACRX_FREEZE_TLV_VERSION_2 = 2,
104 	MACRX_FREEZE_TLV_VERSION_3 = 3,
105 	MACRX_FREEZE_TLV_VERSION_MAX
106 };
107 
108 /* Max 4 users in MU case for Maple */
109 #define MAPLE_CFR_MU_USERS 4
110 
111 #define MAPLE_MAX_HEADER_LENGTH_WORDS 16
112 
113 #define MAPLE_MAX_DATA_LENGTH_BYTES 4096
114 
115 /* Max size :
116  * sizeof(csi_cfr_header) + 64 bytes(cfr uCode header) +
117  * 4096 bytes(cfr payload)
118  */
119 #define STREAMFS_MAX_SUBBUF_MAPLE \
120 	(sizeof(struct csi_cfr_header) + \
121 	 (MAPLE_MAX_HEADER_LENGTH_WORDS * 4) + \
122 	 MAPLE_MAX_DATA_LENGTH_BYTES)
123 
124 /* The number 470 has come up by considering the 2MB benchmark
125  * for Relay FS buffer pool. For Cascade, dakota and HK, the
126  * Relay FS buffer pool has been considered as 2MB and based
127  * on that the number of sub buffers are 1100, 2200 and 255.
128  * For Cypress and pine, since the buffer size has increased
129  * to 16K, if we would have considered to keep the relay FS
130  * buffer pool size as 2MB then the number of sub buffers /
131  * CFR records would have been lesser in number (around 130)
132  * So, the decision had been taken to keep the sub buffer
133  * count to 255 and as result the relay fs buffer pool size
134  * in case of Cypress and Pine exceeded 4MB.
135  *
136  * In case of Maple, since the Buffer size is small (4470B)
137  * we have decided to maintain the relay fs buffer pool size
138  * as 2MB, as a result the number of sub buffers has become
139  * 470.
140  *
141  * RelayFS memory required:
142  * Max sub buffer size * Number of sub buffers
143  *
144  * Cascade: (2200B  * 1100) ~= 2MB
145  * Dakota:  (1100B  * 2200) ~= 2MB
146  * Hawkeye: (8200B  * 255 ) ~= 2MB
147  * Cypress: (16438B * 255 ) ~= 4MB
148  * Pine   : (16894B * 255 ) ~= 4MB
149  * Maple  : (4470B *  470 ) ~= 2MB
150  *
151  */
152 #define STREAMFS_NUM_SUBBUF_MAPLE 470
153 
154 /*
155  * @tag: ucode fills this with 0xBA
156  *
157  * @length: length of CFR header in words (32-bit)
158  *
159  * @upload_done: ucode sets this to 1 to indicate DMA completion
160  *
161  * @capture_type:
162  *
163  *			0 - None
164  *			1 - RTT-H (Nss = 1, Nrx)
165  *			2 - Debug-H (Nss, Nrx)
166  *			3 - Reserved
167  *			5 - RTT-H + CIR(Nss, Nrx)
168  *
169  * @preamble_type:
170  *
171  *			0 - Legacy
172  *			1 - HT
173  *			2 - VHT
174  *			3 - HE
175  *
176  * @nss:
177  *
178  *			0 - 1-stream
179  *			1 - 2-stream
180  *			..	..
181  *			7 - 8-stream
182  *
183  *@num_chains:
184  *
185  *			0 - 1-chain
186  *			1 - 2-chain
187  *			..  ..
188  *			7 - 8-chain
189  *
190  *@upload_bw_pkt:
191  *
192  *			0 - 20 MHz
193  *			1 - 40 MHz
194  *			2 - 80 MHz
195  *			3 - 160 MHz
196  *
197  * @sw_peer_id_valid: Indicates whether sw_peer_id field is valid or not,
198  * sent from MAC to PHY via the MACRX_FREEZE_CAPTURE_CHANNEL TLV
199  *
200  * @sw_peer_id: Indicates peer id based on AST search, sent from MAC to PHY
201  * via the MACRX_FREEZE_CAPTURE_CHANNEL TLV
202  *
203  * @phy_ppdu_id: sent from PHY to MAC, copied to MACRX_FREEZE_CAPTURE_CHANNEL
204  * TLV
205  *
206  * @total_bytes: Total size of CFR payload (FFT bins)
207  *
208  * @header_version:
209  *
210  *			1 - HKV2/Hastings
211  *			2 - Cypress
212  *
213  * @target_id:
214  *
215  *			1 - Hastings
216  *			2 - Cypress
217  *			3 - Hastings Prime
218  *			4 - Pine
219  *
220  * @cfr_fmt:
221  *
222  *			0 - raw (32-bit format)
223  *			1 - compressed (24-bit format)
224  *
225  * @mu_rx_data_incl: Indicates whether CFR header contains UL-MU-MIMO info
226  *
227  * @freeze_data_incl: Indicates whether CFR header contains
228  * MACRX_FREEZE_CAPTURE_CHANNEL TLV
229  *
230  * @freeze_tlv_version: Indicates the version of freeze_tlv
231  *			1 - HSP, Cypress
232  *			2 - Maple/Spruce/Moselle
233  *			3 - Pine
234  *
235  * @decimation_factor: FFT bins decimation
236  * @mu_rx_num_users: Number of users in UL-MU-PPDU
237  */
238 struct whal_cfir_enhanced_hdr {
239 	uint16_t tag              :  8,
240 		 length           :  6,
241 		 rsvd1            :  2;
242 
243 	uint16_t upload_done        :  1,
244 		 capture_type       :  3,
245 		 preamble_type      :  2,
246 		 nss                :  3,
247 		 num_chains         :  3,
248 		 upload_pkt_bw      :  3,
249 		 sw_peer_id_valid   :  1;
250 
251 	uint16_t sw_peer_id         : 16;
252 
253 	uint16_t phy_ppdu_id        : 16;
254 
255 	uint16_t total_bytes;
256 
257 	uint16_t header_version     :4,
258 		 target_id          :4,
259 		 cfr_fmt            :1,
260 		 rsvd2              :1,
261 		 mu_rx_data_incl    :1,
262 		 freeze_data_incl   :1,
263 		 freeze_tlv_version :4;
264 
265 	uint16_t mu_rx_num_users   :8,
266 		 decimation_factor :4,
267 		 rsvd3             :4;
268 
269 	uint16_t rsvd4;
270 };
271 
272 /*
273  * freeze_tlv v1/v2 used by Hastings/Cypress/Maple/Spruce/Moselle supports upto
274  * 4 UL MU users
275  *
276  * @freeze:
277  *		0: Allow channel capture
278  *		1: Freeze channel capture
279  *
280  * @capture_reason: Field only valid when the freeze field is 1. Indicates why
281  * the MAC asked to capture the channel
282  *		0: freeze_reason_TM
283  *		1: freeze_reason_FTM
284  *		2: freeze_reason_ACK_resp_to_TM_FTM
285  *		3: freeze_reason_TA_RA_TYPE_FILTER
286  *		4: freeze readon NDP_NDP
287  *		5: freeze_reason_ALL_PACKET
288  *
289  * @packet_type: Packet type of captured packets.
290  *		0: Management
291  *		1: Control
292  *		2: Data
293  *		3: Extension
294  *
295  * @packet_sub_type: packet subtype of the captured packets.
296  * @sw_peer_id_valid: It is valid only when the freeze field is set to 1.
297  *		0: no TA address search on the received frame has been
298  *		   performed. This is due to the frame not having a TA address
299  *		   (like ACK frame), or the received frame being from an other
300  *		   AP to which this device is not associated.
301  *		1: field sw_peer_id will contain valid information.
302  *		   This implies that a (successful) address search has been
303  *		   performed on the TA address of the received frame.
304  *
305  * @sw_peer_id: Valid only when sw_peer_id_valid field is set. It is an
306  * identifier that allows SW to double check that the CSI info stored belongs
307  * to the device with this SW identifier.
308  *
309  * @phy_ppdu_id: ppdu_id of ppdu which has channel capture performed. Field
310  * only valid when the freeze field is set to 1.
311  *
312  * @packet_ta_lower_16: Packet’s lower 16bits transmit address in MAC header.
313  *
314  * @packet_ta_mid_16: Packet’s middle 16bits transmit address in MAC header.
315  *
316  * @packet_ta_upper_16: Packet’s upper 16bits transmit address in MAC header.
317  *
318  * @packet_ra_lower_16: Packet’s lower 16bits receive address in MAC header.
319  *
320  * @packet_ra_mid_16: Packet’s middle 16bits receive address in MAC header.
321  *
322  * @packet_ra_upper_16: Packet’s upper 16bits receive address in MAC header.
323  *
324  * @tsf_timestamp_15_0: MAC side 64bit TSF timestamp when this TLV is sent to
325  * PHY. Bits [15:0].
326  *
327  * @tsf_timestamp_31_16: MAC side 64bit TSF timestamp when this TLV is sent to
328  * PHY. Bits [31:16].
329  *
330  * @tsf_timestamp_47_32: MAC side 64bit TSF timestamp when this TLV is sent to
331  * PHY. Bits [47:32].
332  *
333  * @tsf_timestamp_63_48: MAC side 64bit TSF timestamp when this TLV is sent to
334  * PHY. Bits [63:48].
335  *
336  * @user_index_or_user_mask_5_0: When freeze_tlv_version is 1, this field from
337  * MAC, indicate to PHY which user's channel information need to be uploaded.
338  * When freeze_tlv_version is 2 & MU_SUPPORT_IN_TLV is 1, this field indicates
339  * bitmap of users upto 4 to which channel capture need to be uploaded. And if
340  * freeze_tlv_version is 2 & MU_SUPPORT_IN_TLV is 0, this field indicate to PHY
341  * which user's channel information need to be uploaded
342  *
343  * @directed: Indicate the frame is directed to us or not when NDPA/NDP capture
344  * or FTM/TM/ACK capture. 1=directed. For other modes, it is 0.
345  */
346 struct macrx_freeze_capture_channel {
347 	uint16_t freeze                          :  1, //[0]
348 		 capture_reason                  :  3, //[3:1]
349 		 packet_type                     :  2, //[5:4]
350 		 packet_sub_type                 :  4, //[9:6]
351 		 reserved                        :  5, //[14:10]
352 		 sw_peer_id_valid                :  1; //[15]
353 	uint16_t sw_peer_id                      : 16; //[15:0]
354 	uint16_t phy_ppdu_id                     : 16; //[15:0]
355 	uint16_t packet_ta_lower_16              : 16; //[15:0]
356 	uint16_t packet_ta_mid_16                : 16; //[15:0]
357 	uint16_t packet_ta_upper_16              : 16; //[15:0]
358 	uint16_t packet_ra_lower_16              : 16; //[15:0]
359 	uint16_t packet_ra_mid_16                : 16; //[15:0]
360 	uint16_t packet_ra_upper_16              : 16; //[15:0]
361 	uint16_t tsf_timestamp_15_0              : 16; //[15:0]
362 	uint16_t tsf_timestamp_31_16             : 16; //[15:0]
363 	uint16_t tsf_timestamp_47_32             : 16; //[15:0]
364 	uint16_t tsf_timestamp_63_48             : 16; //[15:0]
365 	uint16_t user_index_or_user_mask_5_0     :  6, //[5:0]
366 		 directed                        :  1, //[6]
367 		 reserved_13                     :  9; //[15:7]
368 };
369 
370 /*
371  * freeze_tlv v3 used by Pine
372  *
373  * @freeze:
374  *		0: Allow channel capture
375  *		1: Freeze channel capture
376  *
377  * @capture_reason: Field only valid when the freeze field is 1. Indicates why
378  * the MAC asked to capture the channel
379  *		0: freeze_reason_TM
380  *		1: freeze_reason_FTM
381  *		2: freeze_reason_ACK_resp_to_TM_FTM
382  *		3: freeze_reason_TA_RA_TYPE_FILTER
383  *		4: freeze readon NDP_NDP
384  *		5: freeze_reason_ALL_PACKET
385  *
386  * @packet_type: Packet type of captured packets.
387  *		0: Management
388  *		1: Control
389  *		2: Data
390  *		3: Extension
391  *
392  * @packet_sub_type: packet subtype of the captured packets.
393  *
394  * @directed: Indicate the frame is directed to us or not when NDPA/NDP capture
395  * or FTM/TM/ACK capture. 1=directed. For other modes, it is 0.
396  *
397  * @sw_peer_id_valid: It is valid only when the freeze field is set to 1.
398  *		0: no TA address search on the received frame has been
399  *		   performed. This is due to the frame not having a TA address
400  *		   (like ACK frame), or the received frame being from an other
401  *		   AP to which this device is not associated.
402  *		1: field sw_peer_id will contain valid information.
403  *		   This implies that a (successful) address search has been
404  *		   performed on the TA address of the received frame.
405  *
406  * @sw_peer_id: Valid only when sw_peer_id_valid field is set. It is an
407  * identifier that allows SW to double check that the CSI info stored belongs
408  * to the device with this SW identifier.
409  *
410  * @phy_ppdu_id: ppdu_id of ppdu which has channel capture performed. Field
411  * only valid when the freeze field is set to 1.
412  *
413  * @packet_ta_lower_16: Packet’s lower 16bits transmit address in MAC header.
414  *
415  * @packet_ta_mid_16: Packet’s middle 16bits transmit address in MAC header.
416  *
417  * @packet_ta_upper_16: Packet’s upper 16bits transmit address in MAC header.
418  *
419  * @packet_ra_lower_16: Packet’s lower 16bits receive address in MAC header.
420  *
421  * @packet_ra_mid_16: Packet’s middle 16bits receive address in MAC header.
422  *
423  * @packet_ra_upper_16: Packet’s upper 16bits receive address in MAC header.
424  *
425  * @tsf_timestamp_15_0: MAC side 64bit TSF timestamp when this TLV is sent to
426  * PHY. Bits [15:0].
427  *
428  * @tsf_timestamp_31_16: MAC side 64bit TSF timestamp when this TLV is sent to
429  * PHY. Bits [31:16].
430  *
431  * @tsf_timestamp_47_32: MAC side 64bit TSF timestamp when this TLV is sent to
432  * PHY. Bits [47:32].
433  *
434  * @tsf_63_48_or_user_mask_36_32: Indicates to PHY which user's channel info
435  * need to be uploaded. Only valid in UL MU case with MU_SUPPORT_IN_TLV = 1.
436  * Otherwise this indicates to PHY MSBs 63:48 of the MAC side 64bit TSF
437  * timestamp when this TLV is sent to PHY.
438  *
439  * @user_index_or_user_mask_15_0: Indicate to PHY which user's channel info
440  * need to be uploaded in UL MU case with MU_SUPPORT_IN_TLV = 1. Otherwise it
441  * indicate PHY which user’s channel information need to be uploaded.
442  *
443  * @user_mask_31_16: Indicate to PHY which user’s channel information need to
444  * be uploaded. Only valid in UL MU case with MU_SUPPORT_IN_TLV = 1.
445  */
446 struct macrx_freeze_capture_channel_v3 {
447 	uint16_t freeze                          :  1, //[0]
448 		 capture_reason                  :  3, //[3:1]
449 		 packet_type                     :  2, //[5:4]
450 		 packet_sub_type                 :  4, //[9:6]
451 		 directed                        :  1, //[10]
452 		 reserved                        :  4, //[14:11]
453 		 sw_peer_id_valid                :  1; //[15]
454 	uint16_t sw_peer_id                      : 16; //[15:0]
455 	uint16_t phy_ppdu_id                     : 16; //[15:0]
456 	uint16_t packet_ta_lower_16              : 16; //[15:0]
457 	uint16_t packet_ta_mid_16                : 16; //[15:0]
458 	uint16_t packet_ta_upper_16              : 16; //[15:0]
459 	uint16_t packet_ra_lower_16              : 16; //[15:0]
460 	uint16_t packet_ra_mid_16                : 16; //[15:0]
461 	uint16_t packet_ra_upper_16              : 16; //[15:0]
462 	uint16_t tsf_timestamp_15_0              : 16; //[15:0]
463 	uint16_t tsf_timestamp_31_16             : 16; //[15:0]
464 	uint16_t tsf_timestamp_47_32             : 16; //[15:0]
465 	uint16_t tsf_63_48_or_user_mask_36_32    : 16; //[15:0]
466 	uint16_t user_index_or_user_mask_15_0    : 16; //[15:0]
467 	uint16_t user_mask_31_16                 : 16; //[15:0]
468 };
469 
470 struct uplink_user_setup_info {
471 	uint32_t bw_info_valid                   :  1, //[0]
472 		 uplink_receive_type             :  2, //[2:1]
473 		 reserved_0a                     :  1, //[3]
474 		 uplink_11ax_mcs                 :  4, //[7:4]
475 		 ru_width                        :  7, //[14:8]
476 		 reserved_0b                     :  1, //[15]
477 		 nss                             :  3, //[18:16]
478 		 stream_offset                   :  3, //[21:19]
479 		 sta_dcm                         :  1, //[22]
480 		 sta_coding                      :  1, //[23]
481 		 ru_start_index                  :  7, //[30:24]
482 		 reserved_0c                     :  1; //[31]
483 };
484 
485 /**
486  * cfr_enh_init_pdev() - Inits cfr pdev and registers necessary handlers.
487  * @psoc: pointer to psoc object
488  * @pdev: pointer to pdev object
489  *
490  * Return: Registration status for necessary handlers
491  */
492 QDF_STATUS cfr_enh_init_pdev(
493 		struct wlan_objmgr_psoc *psoc,
494 		struct wlan_objmgr_pdev *pdev);
495 
496 /**
497  * cfr_enh_deinit_pdev() - De-inits corresponding pdev and handlers.
498  * @psoc: pointer to psoc object
499  * @pdev: pointer to pdev object
500  *
501  * Return: De-registration status for necessary handlers
502  */
503 QDF_STATUS cfr_enh_deinit_pdev(
504 		struct wlan_objmgr_psoc *psoc,
505 		struct wlan_objmgr_pdev *pdev);
506 
507 /**
508  * target_if_cfr_start_lut_age_timer() - Start timer to flush aged-out LUT
509  * entries
510  * @pdev: pointer to pdev object
511  *
512  * Return: None
513  */
514 void target_if_cfr_start_lut_age_timer(struct wlan_objmgr_pdev *pdev);
515 
516 /**
517  * target_if_cfr_stop_lut_age_timer() - Stop timer to flush aged-out LUT
518  * entries
519  * @pdev: pointer to pdev object
520  *
521  * Return: None
522  */
523 void target_if_cfr_stop_lut_age_timer(struct wlan_objmgr_pdev *pdev);
524 
525 /**
526  * target_if_cfr_dump_lut_enh() - Dump all valid LUT entries
527  * @pdev: objmgr PDEV
528  *
529  * Return: none
530  */
531 void target_if_cfr_dump_lut_enh(struct wlan_objmgr_pdev *pdev);
532 
533 /**
534  * target_if_cfr_config_rcc() - Start repetitive channel capture
535  * @pdev: pointer to pdev object
536  * @rcc_param: rcc configurations
537  *
538  * Return: Success/Failure status
539  */
540 QDF_STATUS target_if_cfr_config_rcc(struct wlan_objmgr_pdev *pdev,
541 				    struct cfr_rcc_param *rcc_param);
542 
543 /**
544  *  target_if_cfr_default_ta_ra_config() - Configure default values to all
545  *  params(BW/NSS/TA/RA) in TA_RA mode
546  * @rcc_param: rcc configurations
547  * @allvalid: Indicates whether all TA_RA params are valid or not.
548  *            It could be either 0 or 1.
549  *            1: should be sent to FW during CFR initialization
550  *            0: should be set, after a successful commit session.
551  * @reset_cfg: This bitmap is being used to determine which groups'
552  *            parameters are needed to be reset to its default state.
553  */
554 void target_if_cfr_default_ta_ra_config(struct cfr_rcc_param *rcc_param,
555 					bool allvalid, uint16_t reset_cfg);
556 
557 /**
558  * target_if_cfr_rx_tlv_process() - Process PPDU status TLVs and store info in
559  * lookup table
560  * @pdev: PDEV object
561  * @nbuf: ppdu info
562  *
563  * Return: none
564  */
565 void target_if_cfr_rx_tlv_process(struct wlan_objmgr_pdev *pdev, void *nbuf);
566 
567 /**
568  * target_if_cfr_update_global_cfg() - Update global config after a successful
569  * commit
570  * @pdev: pointer to pdev object
571  *
572  * Return: None
573  */
574 void target_if_cfr_update_global_cfg(struct wlan_objmgr_pdev *pdev);
575 #else
576 static inline QDF_STATUS cfr_enh_init_pdev(
577 		struct wlan_objmgr_psoc *psoc,
578 		struct wlan_objmgr_pdev *pdev)
579 {
580 	return QDF_STATUS_SUCCESS;
581 }
582 
583 static inline QDF_STATUS cfr_enh_deinit_pdev(
584 		struct wlan_objmgr_psoc *psoc,
585 		struct wlan_objmgr_pdev *pdev)
586 {
587 	return QDF_STATUS_SUCCESS;
588 }
589 #endif
590 #endif
591