1 /* 2 * Copyright (c) 2019-2021 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 /* Max 4 users in MU case for Spruce */ 97 #define SPRUCE_CFR_MU_USERS 4 98 99 #define SPRUCE_MAX_HEADER_LENGTH_WORDS 16 100 101 #define SPRUCE_MAX_DATA_LENGTH_BYTES 16384 102 103 /* Max size : 104 * sizeof(csi_cfr_header) + 200 bytes(cfr header) + 16384 bytes(cfr payload) 105 */ 106 #define STREAMFS_MAX_SUBBUF_SPRUCE \ 107 (sizeof(struct csi_cfr_header) + \ 108 (SPRUCE_MAX_HEADER_LENGTH_WORDS * 4) + \ 109 SPRUCE_MAX_DATA_LENGTH_BYTES) 110 111 #define STREAMFS_NUM_SUBBUF_SPRUCE 255 112 113 /* enum macrx_freeze_tlv_version: Reported by uCode in enh_dma_header 114 * MACRX_FREEZE_TLV_VERSION_1: Single MU UL user info reported by MAC 115 * MACRX_FREEZE_TLV_VERSION_2: Upto 4 MU UL user info reported by MAC 116 * MACRX_FREEZE_TLV_VERSION_3: Upto 37 MU UL user info reported by MAC 117 */ 118 enum macrx_freeze_tlv_version { 119 MACRX_FREEZE_TLV_VERSION_1 = 1, 120 MACRX_FREEZE_TLV_VERSION_2 = 2, 121 MACRX_FREEZE_TLV_VERSION_3 = 3, 122 MACRX_FREEZE_TLV_VERSION_MAX 123 }; 124 125 /* Max 4 users in MU case for Maple */ 126 #define MAPLE_CFR_MU_USERS 4 127 128 #define MAPLE_MAX_HEADER_LENGTH_WORDS 16 129 130 #define MAPLE_MAX_DATA_LENGTH_BYTES 4096 131 132 /* Max size : 133 * sizeof(csi_cfr_header) + 64 bytes(cfr uCode header) + 134 * 4096 bytes(cfr payload) 135 */ 136 #define STREAMFS_MAX_SUBBUF_MAPLE \ 137 (sizeof(struct csi_cfr_header) + \ 138 (MAPLE_MAX_HEADER_LENGTH_WORDS * 4) + \ 139 MAPLE_MAX_DATA_LENGTH_BYTES) 140 141 /* 142 * RelayFS memory required: 143 * Max sub buffer size * Number of sub buffers 144 * 145 * Cascade: (2200B * 1100) ~= 2MB 146 * Dakota: (1100B * 2200) ~= 2MB 147 * Hawkeye: (8200B * 255 ) ~= 2MB 148 * Cypress: (16438B * 255 ) ~= 4MB 149 * Pine : (16894B * 255 ) ~= 4MB 150 * Maple : (4470B * 255 ) ~= 1MB 151 * 152 */ 153 #define STREAMFS_NUM_SUBBUF_MAPLE 255 154 155 /* 156 * @tag: ucode fills this with 0xBA 157 * 158 * @length: length of CFR header in words (32-bit) 159 * 160 * @upload_done: ucode sets this to 1 to indicate DMA completion 161 * 162 * @capture_type: 163 * 164 * 0 - None 165 * 1 - RTT-H (Nss = 1, Nrx) 166 * 2 - Debug-H (Nss, Nrx) 167 * 3 - Reserved 168 * 5 - RTT-H + CIR(Nss, Nrx) 169 * 170 * @preamble_type: 171 * 172 * 0 - Legacy 173 * 1 - HT 174 * 2 - VHT 175 * 3 - HE 176 * 177 * @nss: 178 * 179 * 0 - 1-stream 180 * 1 - 2-stream 181 * .. .. 182 * 7 - 8-stream 183 * 184 *@num_chains: 185 * 186 * 0 - 1-chain 187 * 1 - 2-chain 188 * .. .. 189 * 7 - 8-chain 190 * 191 *@upload_bw_pkt: 192 * 193 * 0 - 20 MHz 194 * 1 - 40 MHz 195 * 2 - 80 MHz 196 * 3 - 160 MHz 197 * 198 * @sw_peer_id_valid: Indicates whether sw_peer_id field is valid or not, 199 * sent from MAC to PHY via the MACRX_FREEZE_CAPTURE_CHANNEL TLV 200 * 201 * @sw_peer_id: Indicates peer id based on AST search, sent from MAC to PHY 202 * via the MACRX_FREEZE_CAPTURE_CHANNEL TLV 203 * 204 * @phy_ppdu_id: sent from PHY to MAC, copied to MACRX_FREEZE_CAPTURE_CHANNEL 205 * TLV 206 * 207 * @total_bytes: Total size of CFR payload (FFT bins) 208 * 209 * @header_version: 210 * 211 * 1 - HKV2/Hastings 212 * 2 - Cypress 213 * 214 * @target_id: 215 * 216 * 1 - Hastings 217 * 2 - Cypress 218 * 3 - Hastings Prime 219 * 4 - Pine 220 * 221 * @cfr_fmt: 222 * 223 * 0 - raw (32-bit format) 224 * 1 - compressed (24-bit format) 225 * 226 * @mu_rx_data_incl: Indicates whether CFR header contains UL-MU-MIMO info 227 * 228 * @freeze_data_incl: Indicates whether CFR header contains 229 * MACRX_FREEZE_CAPTURE_CHANNEL TLV 230 * 231 * @freeze_tlv_version: Indicates the version of freeze_tlv 232 * 1 - HSP, Cypress 233 * 2 - Maple/Spruce/Moselle 234 * 3 - Pine 235 * 236 * @decimation_factor: FFT bins decimation 237 * @mu_rx_num_users: Number of users in UL-MU-PPDU 238 */ 239 struct whal_cfir_enhanced_hdr { 240 uint16_t tag : 8, 241 length : 6, 242 rsvd1 : 2; 243 244 uint16_t upload_done : 1, 245 capture_type : 3, 246 preamble_type : 2, 247 nss : 3, 248 num_chains : 3, 249 upload_pkt_bw : 3, 250 sw_peer_id_valid : 1; 251 252 uint16_t sw_peer_id : 16; 253 254 uint16_t phy_ppdu_id : 16; 255 256 uint16_t total_bytes; 257 258 uint16_t header_version :4, 259 target_id :4, 260 cfr_fmt :1, 261 rsvd2 :1, 262 mu_rx_data_incl :1, 263 freeze_data_incl :1, 264 freeze_tlv_version :4; 265 266 uint16_t mu_rx_num_users :8, 267 decimation_factor :4, 268 rsvd3 :4; 269 270 uint16_t rsvd4; 271 }; 272 273 /* 274 * freeze_tlv v1/v2 used by Hastings/Cypress/Maple/Spruce/Moselle supports upto 275 * 4 UL MU users 276 * 277 * @freeze: 278 * 0: Allow channel capture 279 * 1: Freeze channel capture 280 * 281 * @capture_reason: Field only valid when the freeze field is 1. Indicates why 282 * the MAC asked to capture the channel 283 * 0: freeze_reason_TM 284 * 1: freeze_reason_FTM 285 * 2: freeze_reason_ACK_resp_to_TM_FTM 286 * 3: freeze_reason_TA_RA_TYPE_FILTER 287 * 4: freeze readon NDP_NDP 288 * 5: freeze_reason_ALL_PACKET 289 * 290 * @packet_type: Packet type of captured packets. 291 * 0: Management 292 * 1: Control 293 * 2: Data 294 * 3: Extension 295 * 296 * @packet_sub_type: packet subtype of the captured packets. 297 * @sw_peer_id_valid: It is valid only when the freeze field is set to 1. 298 * 0: no TA address search on the received frame has been 299 * performed. This is due to the frame not having a TA address 300 * (like ACK frame), or the received frame being from an other 301 * AP to which this device is not associated. 302 * 1: field sw_peer_id will contain valid information. 303 * This implies that a (successful) address search has been 304 * performed on the TA address of the received frame. 305 * 306 * @sw_peer_id: Valid only when sw_peer_id_valid field is set. It is an 307 * identifier that allows SW to double check that the CSI info stored belongs 308 * to the device with this SW identifier. 309 * 310 * @phy_ppdu_id: ppdu_id of ppdu which has channel capture performed. Field 311 * only valid when the freeze field is set to 1. 312 * 313 * @packet_ta_lower_16: Packet’s lower 16bits transmit address in MAC header. 314 * 315 * @packet_ta_mid_16: Packet’s middle 16bits transmit address in MAC header. 316 * 317 * @packet_ta_upper_16: Packet’s upper 16bits transmit address in MAC header. 318 * 319 * @packet_ra_lower_16: Packet’s lower 16bits receive address in MAC header. 320 * 321 * @packet_ra_mid_16: Packet’s middle 16bits receive address in MAC header. 322 * 323 * @packet_ra_upper_16: Packet’s upper 16bits receive address in MAC header. 324 * 325 * @tsf_timestamp_15_0: MAC side 64bit TSF timestamp when this TLV is sent to 326 * PHY. Bits [15:0]. 327 * 328 * @tsf_timestamp_31_16: MAC side 64bit TSF timestamp when this TLV is sent to 329 * PHY. Bits [31:16]. 330 * 331 * @tsf_timestamp_47_32: MAC side 64bit TSF timestamp when this TLV is sent to 332 * PHY. Bits [47:32]. 333 * 334 * @tsf_timestamp_63_48: MAC side 64bit TSF timestamp when this TLV is sent to 335 * PHY. Bits [63:48]. 336 * 337 * @user_index_or_user_mask_5_0: When freeze_tlv_version is 1, this field from 338 * MAC, indicate to PHY which user's channel information need to be uploaded. 339 * When freeze_tlv_version is 2 & MU_SUPPORT_IN_TLV is 1, this field indicates 340 * bitmap of users upto 4 to which channel capture need to be uploaded. And if 341 * freeze_tlv_version is 2 & MU_SUPPORT_IN_TLV is 0, this field indicate to PHY 342 * which user's channel information need to be uploaded 343 * 344 * @directed: Indicate the frame is directed to us or not when NDPA/NDP capture 345 * or FTM/TM/ACK capture. 1=directed. For other modes, it is 0. 346 */ 347 struct macrx_freeze_capture_channel { 348 uint16_t freeze : 1, //[0] 349 capture_reason : 3, //[3:1] 350 packet_type : 2, //[5:4] 351 packet_sub_type : 4, //[9:6] 352 reserved : 5, //[14:10] 353 sw_peer_id_valid : 1; //[15] 354 uint16_t sw_peer_id : 16; //[15:0] 355 uint16_t phy_ppdu_id : 16; //[15:0] 356 uint16_t packet_ta_lower_16 : 16; //[15:0] 357 uint16_t packet_ta_mid_16 : 16; //[15:0] 358 uint16_t packet_ta_upper_16 : 16; //[15:0] 359 uint16_t packet_ra_lower_16 : 16; //[15:0] 360 uint16_t packet_ra_mid_16 : 16; //[15:0] 361 uint16_t packet_ra_upper_16 : 16; //[15:0] 362 uint16_t tsf_timestamp_15_0 : 16; //[15:0] 363 uint16_t tsf_timestamp_31_16 : 16; //[15:0] 364 uint16_t tsf_timestamp_47_32 : 16; //[15:0] 365 uint16_t tsf_timestamp_63_48 : 16; //[15:0] 366 uint16_t user_index_or_user_mask_5_0 : 6, //[5:0] 367 directed : 1, //[6] 368 reserved_13 : 9; //[15:7] 369 }; 370 371 /* 372 * freeze_tlv v3 used by Pine 373 * 374 * @freeze: 375 * 0: Allow channel capture 376 * 1: Freeze channel capture 377 * 378 * @capture_reason: Field only valid when the freeze field is 1. Indicates why 379 * the MAC asked to capture the channel 380 * 0: freeze_reason_TM 381 * 1: freeze_reason_FTM 382 * 2: freeze_reason_ACK_resp_to_TM_FTM 383 * 3: freeze_reason_TA_RA_TYPE_FILTER 384 * 4: freeze readon NDP_NDP 385 * 5: freeze_reason_ALL_PACKET 386 * 387 * @packet_type: Packet type of captured packets. 388 * 0: Management 389 * 1: Control 390 * 2: Data 391 * 3: Extension 392 * 393 * @packet_sub_type: packet subtype of the captured packets. 394 * 395 * @directed: Indicate the frame is directed to us or not when NDPA/NDP capture 396 * or FTM/TM/ACK capture. 1=directed. For other modes, it is 0. 397 * 398 * @sw_peer_id_valid: It is valid only when the freeze field is set to 1. 399 * 0: no TA address search on the received frame has been 400 * performed. This is due to the frame not having a TA address 401 * (like ACK frame), or the received frame being from an other 402 * AP to which this device is not associated. 403 * 1: field sw_peer_id will contain valid information. 404 * This implies that a (successful) address search has been 405 * performed on the TA address of the received frame. 406 * 407 * @sw_peer_id: Valid only when sw_peer_id_valid field is set. It is an 408 * identifier that allows SW to double check that the CSI info stored belongs 409 * to the device with this SW identifier. 410 * 411 * @phy_ppdu_id: ppdu_id of ppdu which has channel capture performed. Field 412 * only valid when the freeze field is set to 1. 413 * 414 * @packet_ta_lower_16: Packet’s lower 16bits transmit address in MAC header. 415 * 416 * @packet_ta_mid_16: Packet’s middle 16bits transmit address in MAC header. 417 * 418 * @packet_ta_upper_16: Packet’s upper 16bits transmit address in MAC header. 419 * 420 * @packet_ra_lower_16: Packet’s lower 16bits receive address in MAC header. 421 * 422 * @packet_ra_mid_16: Packet’s middle 16bits receive address in MAC header. 423 * 424 * @packet_ra_upper_16: Packet’s upper 16bits receive address in MAC header. 425 * 426 * @tsf_timestamp_15_0: MAC side 64bit TSF timestamp when this TLV is sent to 427 * PHY. Bits [15:0]. 428 * 429 * @tsf_timestamp_31_16: MAC side 64bit TSF timestamp when this TLV is sent to 430 * PHY. Bits [31:16]. 431 * 432 * @tsf_timestamp_47_32: MAC side 64bit TSF timestamp when this TLV is sent to 433 * PHY. Bits [47:32]. 434 * 435 * @tsf_63_48_or_user_mask_36_32: Indicates to PHY which user's channel info 436 * need to be uploaded. Only valid in UL MU case with MU_SUPPORT_IN_TLV = 1. 437 * Otherwise this indicates to PHY MSBs 63:48 of the MAC side 64bit TSF 438 * timestamp when this TLV is sent to PHY. 439 * 440 * @user_index_or_user_mask_15_0: Indicate to PHY which user's channel info 441 * need to be uploaded in UL MU case with MU_SUPPORT_IN_TLV = 1. Otherwise it 442 * indicate PHY which user’s channel information need to be uploaded. 443 * 444 * @user_mask_31_16: Indicate to PHY which user’s channel information need to 445 * be uploaded. Only valid in UL MU case with MU_SUPPORT_IN_TLV = 1. 446 */ 447 struct macrx_freeze_capture_channel_v3 { 448 uint16_t freeze : 1, //[0] 449 capture_reason : 3, //[3:1] 450 packet_type : 2, //[5:4] 451 packet_sub_type : 4, //[9:6] 452 directed : 1, //[10] 453 reserved : 4, //[14:11] 454 sw_peer_id_valid : 1; //[15] 455 uint16_t sw_peer_id : 16; //[15:0] 456 uint16_t phy_ppdu_id : 16; //[15:0] 457 uint16_t packet_ta_lower_16 : 16; //[15:0] 458 uint16_t packet_ta_mid_16 : 16; //[15:0] 459 uint16_t packet_ta_upper_16 : 16; //[15:0] 460 uint16_t packet_ra_lower_16 : 16; //[15:0] 461 uint16_t packet_ra_mid_16 : 16; //[15:0] 462 uint16_t packet_ra_upper_16 : 16; //[15:0] 463 uint16_t tsf_timestamp_15_0 : 16; //[15:0] 464 uint16_t tsf_timestamp_31_16 : 16; //[15:0] 465 uint16_t tsf_timestamp_47_32 : 16; //[15:0] 466 uint16_t tsf_63_48_or_user_mask_36_32 : 16; //[15:0] 467 uint16_t user_index_or_user_mask_15_0 : 16; //[15:0] 468 uint16_t user_mask_31_16 : 16; //[15:0] 469 }; 470 471 struct uplink_user_setup_info { 472 uint32_t bw_info_valid : 1, //[0] 473 uplink_receive_type : 2, //[2:1] 474 reserved_0a : 1, //[3] 475 uplink_11ax_mcs : 4, //[7:4] 476 ru_width : 7, //[14:8] 477 reserved_0b : 1, //[15] 478 nss : 3, //[18:16] 479 stream_offset : 3, //[21:19] 480 sta_dcm : 1, //[22] 481 sta_coding : 1, //[23] 482 ru_start_index : 7, //[30:24] 483 reserved_0c : 1; //[31] 484 }; 485 486 /** 487 * cfr_enh_init_pdev() - Inits cfr pdev and registers necessary handlers. 488 * @psoc: pointer to psoc object 489 * @pdev: pointer to pdev object 490 * 491 * Return: Registration status for necessary handlers 492 */ 493 QDF_STATUS cfr_enh_init_pdev( 494 struct wlan_objmgr_psoc *psoc, 495 struct wlan_objmgr_pdev *pdev); 496 497 /** 498 * cfr_enh_deinit_pdev() - De-inits corresponding pdev and handlers. 499 * @psoc: pointer to psoc object 500 * @pdev: pointer to pdev object 501 * 502 * Return: De-registration status for necessary handlers 503 */ 504 QDF_STATUS cfr_enh_deinit_pdev( 505 struct wlan_objmgr_psoc *psoc, 506 struct wlan_objmgr_pdev *pdev); 507 508 /** 509 * target_if_cfr_start_lut_age_timer() - Start timer to flush aged-out LUT 510 * entries 511 * @pdev: pointer to pdev object 512 * 513 * Return: None 514 */ 515 void target_if_cfr_start_lut_age_timer(struct wlan_objmgr_pdev *pdev); 516 517 /** 518 * target_if_cfr_stop_lut_age_timer() - Stop timer to flush aged-out LUT 519 * entries 520 * @pdev: pointer to pdev object 521 * 522 * Return: None 523 */ 524 void target_if_cfr_stop_lut_age_timer(struct wlan_objmgr_pdev *pdev); 525 526 /** 527 * target_if_cfr_dump_lut_enh() - Dump all valid LUT entries 528 * @pdev: objmgr PDEV 529 * 530 * Return: none 531 */ 532 void target_if_cfr_dump_lut_enh(struct wlan_objmgr_pdev *pdev); 533 534 /** 535 * target_if_cfr_config_rcc() - Start repetitive channel capture 536 * @pdev: pointer to pdev object 537 * @rcc_param: rcc configurations 538 * 539 * Return: Success/Failure status 540 */ 541 QDF_STATUS target_if_cfr_config_rcc(struct wlan_objmgr_pdev *pdev, 542 struct cfr_rcc_param *rcc_param); 543 544 /** 545 * target_if_cfr_default_ta_ra_config() - Configure default values to all 546 * params(BW/NSS/TA/RA) in TA_RA mode 547 * @rcc_param: rcc configurations 548 * @allvalid: Indicates whether all TA_RA params are valid or not. 549 * It could be either 0 or 1. 550 * 1: should be sent to FW during CFR initialization 551 * 0: should be set, after a successful commit session. 552 * @reset_cfg: This bitmap is being used to determine which groups' 553 * parameters are needed to be reset to its default state. 554 */ 555 void target_if_cfr_default_ta_ra_config(struct cfr_rcc_param *rcc_param, 556 bool allvalid, uint16_t reset_cfg); 557 558 /** 559 * target_if_cfr_rx_tlv_process() - Process PPDU status TLVs and store info in 560 * lookup table 561 * @pdev: PDEV object 562 * @nbuf: ppdu info 563 * 564 * Return: none 565 */ 566 void target_if_cfr_rx_tlv_process(struct wlan_objmgr_pdev *pdev, void *nbuf); 567 568 /** 569 * target_if_cfr_update_global_cfg() - Update global config after a successful 570 * commit 571 * @pdev: pointer to pdev object 572 * 573 * Return: None 574 */ 575 void target_if_cfr_update_global_cfg(struct wlan_objmgr_pdev *pdev); 576 #else 577 static inline QDF_STATUS cfr_enh_init_pdev( 578 struct wlan_objmgr_psoc *psoc, 579 struct wlan_objmgr_pdev *pdev) 580 { 581 return QDF_STATUS_SUCCESS; 582 } 583 584 static inline QDF_STATUS cfr_enh_deinit_pdev( 585 struct wlan_objmgr_psoc *psoc, 586 struct wlan_objmgr_pdev *pdev) 587 { 588 return QDF_STATUS_SUCCESS; 589 } 590 #endif 591 #endif 592