1 /* 2 * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 /** 21 * DOC: wifi_pos_api.h 22 * This file declares public APIs of wifi positioning component 23 */ 24 #ifndef _WIFI_POS_API_H_ 25 #define _WIFI_POS_API_H_ 26 27 /* Include files */ 28 #include "wifi_pos_utils_pub.h" 29 #include "wifi_pos_utils_i.h" 30 31 /* forward reference */ 32 struct wlan_objmgr_psoc; 33 struct wifi_pos_driver_caps; 34 35 #ifdef WIFI_POS_CONVERGED 36 struct wifi_pos_osif_ops; 37 #endif 38 39 /** 40 * enum RTT_FIELD_ID - identifies which field is being specified 41 * @META_DATA_SUB_TYPE: oem data req sub type 42 * @META_DATA_CHANNEL_MHZ: channel mhz info 43 * @META_DATA_PDEV: pdev info 44 */ 45 enum RTT_FIELD_ID { 46 META_DATA_SUB_TYPE, 47 META_DATA_CHANNEL_MHZ, 48 META_DATA_PDEV, 49 }; 50 51 /** 52 * struct wifi_pos_field - wifi positioning field element 53 * @id: RTT field id 54 * @offset: data offset in field info buffer 55 * @length: length of related data in field info buffer 56 */ 57 struct wifi_pos_field { 58 uint32_t id; 59 uint32_t offset; 60 uint32_t length; 61 }; 62 63 /** 64 * struct wifi_pos_field_info - wifi positioning field info buffer 65 * @count: number of @wifi_pos_field elements 66 * @fields: buffer to hold @wifi_pos_field elements 67 */ 68 struct wifi_pos_field_info { 69 uint32_t count; 70 struct wifi_pos_field fields[1]; 71 }; 72 73 /* Length of interface name */ 74 #define INTERFACE_LEN 16 75 /** 76 * struct wifi_pos_interface - wifi positioning interface structure 77 * @length: interface length 78 * @dev_name: device name 79 */ 80 struct wifi_pos_interface { 81 uint8_t length; 82 char dev_name[INTERFACE_LEN]; 83 }; 84 85 #ifdef WIFI_POS_CONVERGED 86 /** 87 * enum oem_err_msg - err msg returned to user space 88 * @OEM_ERR_NULL_CONTEXT: NULL context 89 * @OEM_ERR_APP_NOT_REGISTERED: OEM App is not registered 90 * @OEM_ERR_INVALID_SIGNATURE: Invalid signature 91 * @OEM_ERR_NULL_MESSAGE_HEADER: Invalid message header 92 * @OEM_ERR_INVALID_MESSAGE_TYPE: Invalid message type 93 * @OEM_ERR_INVALID_MESSAGE_LENGTH: Invalid length in message body 94 * @OEM_ERR_REQUEST_REJECTED: Request is rejected by the driver 95 */ 96 enum oem_err_msg { 97 OEM_ERR_NULL_CONTEXT = 1, 98 OEM_ERR_APP_NOT_REGISTERED, 99 OEM_ERR_INVALID_SIGNATURE, 100 OEM_ERR_NULL_MESSAGE_HEADER, 101 OEM_ERR_INVALID_MESSAGE_TYPE, 102 OEM_ERR_INVALID_MESSAGE_LENGTH, 103 OEM_ERR_REQUEST_REJECTED 104 }; 105 106 /* this struct is needed since MLME is not converged yet */ 107 struct wifi_pos_ch_info { 108 uint8_t chan_id; 109 uint32_t mhz; 110 uint32_t band_center_freq1; 111 uint32_t band_center_freq2; 112 uint32_t info; 113 uint32_t reg_info_1; 114 uint32_t reg_info_2; 115 uint8_t nss; 116 uint32_t rate_flags; 117 uint8_t sec_ch_offset; 118 uint32_t ch_width; 119 }; 120 121 /** 122 * typedef wifi_pos_ch_info_rsp - Channel information 123 * @chan_id: channel id 124 * @reserved0: reserved for padding and future use 125 * @mhz: primary 20 MHz channel frequency in mhz 126 * @band_center_freq1: Center frequency 1 in MHz 127 * @band_center_freq2: Center frequency 2 in MHz, valid only for 11ac 128 * VHT 80+80 mode 129 * @info: channel info 130 * @reg_info_1: regulatory information field 1 which contains min power, 131 * max power, reg power and reg class id 132 * @reg_info_2: regulatory information field 2 which contains antennamax 133 */ 134 struct qdf_packed wifi_pos_ch_info_rsp { 135 uint32_t chan_id; 136 uint32_t reserved0; 137 uint32_t mhz; 138 uint32_t band_center_freq1; 139 uint32_t band_center_freq2; 140 uint32_t info; 141 uint32_t reg_info_1; 142 uint32_t reg_info_2; 143 }; 144 145 /** 146 * struct wifi_pos_peer_status_info - Status information for a given peer 147 * @peer_mac_addr: peer mac address 148 * @peer_status: peer status: 1: CONNECTED, 2: DISCONNECTED 149 * @vdev_id: vdev_id for the peer mac 150 * @peer_capability: peer capability: 0: RTT/RTT2, 1: RTT3. Default is 0 151 * @reserved0: reserved0 152 * @peer_chan_info: channel info on which peer is connected 153 */ 154 struct qdf_packed wifi_pos_peer_status_info { 155 uint8_t peer_mac_addr[ETH_ALEN]; 156 uint8_t peer_status; 157 uint8_t vdev_id; 158 uint32_t peer_capability; 159 uint32_t reserved0; 160 struct wifi_pos_ch_info_rsp peer_chan_info; 161 }; 162 163 /** 164 * struct wifi_pos_req_msg - wifi pos request struct 165 * @msg_type: message type 166 * @pid: process id 167 * @buf: request buffer 168 * @buf_len: request buffer length 169 * @field_info_buf: buffer containing field info 170 * @field_info_buf_len: length of field info buffer 171 * @rsp_version: nl type or ani type 172 * @interface: contains interface name and length 173 */ 174 struct wifi_pos_req_msg { 175 enum wifi_pos_cmd_ids msg_type; 176 uint32_t pid; 177 uint8_t *buf; 178 uint32_t buf_len; 179 struct wifi_pos_field_info *field_info_buf; 180 uint32_t field_info_buf_len; 181 uint32_t rsp_version; 182 struct wifi_pos_interface interface; 183 }; 184 185 /** 186 * ucfg_wifi_pos_process_req: ucfg API to be called from HDD/OS_IF to process a 187 * wifi_pos request from userspace 188 * @psoc: pointer to psoc object 189 * @req: wifi_pos request msg 190 * @send_rsp_cb: callback pointer required to send msg to userspace 191 * 192 * Return: status of operation 193 */ 194 QDF_STATUS ucfg_wifi_pos_process_req(struct wlan_objmgr_psoc *psoc, 195 struct wifi_pos_req_msg *req, 196 wifi_pos_send_rsp_handler send_rsp_cb); 197 198 /** 199 * wifi_pos_init: initializes WIFI POS component, called by dispatcher init 200 * 201 * Return: status of operation 202 */ 203 QDF_STATUS wifi_pos_init(void); 204 205 /** 206 * wifi_pos_deinit: de-initializes WIFI POS component, called by dispatcher init 207 * 208 * Return: status of operation 209 */ 210 QDF_STATUS wifi_pos_deinit(void); 211 212 /** 213 * wifi_pos_psoc_enable: psoc enable API for wifi positioning component 214 * @psoc: pointer to PSOC 215 * 216 * Return: status of operation 217 */ 218 QDF_STATUS wifi_pos_psoc_enable(struct wlan_objmgr_psoc *psoc); 219 220 /** 221 * wifi_pos_psoc_disable: psoc disable API for wifi positioning component 222 * @psoc: pointer to PSOC 223 * 224 * Return: status of operation 225 */ 226 QDF_STATUS wifi_pos_psoc_disable(struct wlan_objmgr_psoc *psoc); 227 228 /** 229 * wifi_pos_set_oem_target_type: public API to set param in wifi_pos private 230 * object 231 * @psoc: pointer to PSOC 232 * @val: value to set 233 * 234 * Return: None 235 */ 236 void wifi_pos_set_oem_target_type(struct wlan_objmgr_psoc *psoc, uint32_t val); 237 238 /** 239 * wifi_pos_set_oem_fw_version: public API to set param in wifi_pos private 240 * object 241 * @psoc: pointer to PSOC 242 * @val: value to set 243 * 244 * Return: None 245 */ 246 void wifi_pos_set_oem_fw_version(struct wlan_objmgr_psoc *psoc, uint32_t val); 247 248 /** 249 * wifi_pos_set_drv_ver_major: public API to set param in wifi_pos private 250 * object 251 * @psoc: pointer to PSOC 252 * @val: value to set 253 * 254 * Return: None 255 */ 256 void wifi_pos_set_drv_ver_major(struct wlan_objmgr_psoc *psoc, uint8_t val); 257 258 /** 259 * wifi_pos_set_drv_ver_minor: public API to set param in wifi_pos private 260 * object 261 * @psoc: pointer to PSOC 262 * @val: value to set 263 * 264 * Return: None 265 */ 266 void wifi_pos_set_drv_ver_minor(struct wlan_objmgr_psoc *psoc, uint8_t val); 267 268 /** 269 * wifi_pos_set_drv_ver_patch: public API to set param in wifi_pos private 270 * object 271 * @psoc: pointer to PSOC 272 * @val: value to set 273 * 274 * Return: None 275 */ 276 void wifi_pos_set_drv_ver_patch(struct wlan_objmgr_psoc *psoc, uint8_t val); 277 278 /** 279 * wifi_pos_set_drv_ver_build: public API to set param in wifi_pos private 280 * object 281 * @psoc: pointer to PSOC 282 * @val: value to set 283 * 284 * Return: None 285 */ 286 void wifi_pos_set_drv_ver_build(struct wlan_objmgr_psoc *psoc, uint8_t val); 287 288 /** 289 * wifi_pos_set_dwell_time_min: public API to set param in wifi_pos private 290 * object 291 * @psoc: pointer to PSOC 292 * @val: value to set 293 * 294 * Return: None 295 */ 296 void wifi_pos_set_dwell_time_min(struct wlan_objmgr_psoc *psoc, uint16_t val); 297 298 /** 299 * wifi_pos_set_dwell_time_max: public API to set param in wifi_pos private 300 * object 301 * @psoc: pointer to PSOC 302 * @val: value to set 303 * 304 * Return: None 305 */ 306 void wifi_pos_set_dwell_time_max(struct wlan_objmgr_psoc *psoc, uint16_t val); 307 308 /** 309 * wifi_pos_set_current_dwell_time_min: public API to set param in wifi_pos 310 * private object 311 * @psoc: pointer to PSOC 312 * @val: value to set 313 * 314 * Return: None 315 */ 316 void wifi_pos_set_current_dwell_time_min(struct wlan_objmgr_psoc *psoc, 317 uint16_t val); 318 319 /** 320 * wifi_pos_set_current_dwell_time_max: public API to set param in wifi_pos 321 * private object 322 * @psoc: pointer to PSOC 323 * @val: value to set 324 * 325 * Return: None 326 */ 327 void wifi_pos_set_current_dwell_time_max(struct wlan_objmgr_psoc *psoc, 328 uint16_t val); 329 330 /** 331 * wifi_pos_populate_caps() - populate oem capabilities 332 * @psoc: psoc object 333 * @caps: pointer to populate the capabilities 334 * 335 * Return: error code 336 */ 337 QDF_STATUS wifi_pos_populate_caps(struct wlan_objmgr_psoc *psoc, 338 struct wifi_pos_driver_caps *caps); 339 340 struct wlan_lmac_if_rx_ops; 341 /** 342 * wifi_pos_register_rx_ops: function to register with lmac rx ops 343 * @rx_ops: lmac rx ops struct object 344 * 345 * Return: None 346 */ 347 void wifi_pos_register_rx_ops(struct wlan_lmac_if_rx_ops *rx_ops); 348 349 /** 350 * wifi_pos_get_tx_ops: api to get tx ops 351 * @psoc: pointer to psoc object 352 * 353 * Return: tx ops 354 */ 355 struct wlan_lmac_if_wifi_pos_tx_ops * 356 wifi_pos_get_tx_ops(struct wlan_objmgr_psoc *psoc); 357 358 /** 359 * wifi_pos_get_rx_ops: api to get rx ops 360 * @psoc: pointer to psoc object 361 * 362 * Return: rx ops 363 */ 364 struct wlan_lmac_if_wifi_pos_rx_ops * 365 wifi_pos_get_rx_ops(struct wlan_objmgr_psoc *psoc); 366 367 /** 368 * ucfg_wifi_pos_get_ftm_cap: API to get fine timing measurement caps 369 * @psoc: psoc object 370 * 371 * Return: FTM value 372 */ 373 uint32_t ucfg_wifi_pos_get_ftm_cap(struct wlan_objmgr_psoc *psoc); 374 375 /** 376 * ucfg_wifi_pos_set_ftm_cap: API to set fine timing measurement caps 377 * @psoc: psoc object 378 * @val: value to set 379 * 380 * Return: None 381 */ 382 void ucfg_wifi_pos_set_ftm_cap(struct wlan_objmgr_psoc *psoc, uint32_t val); 383 384 /** 385 * ucfg_wifi_pos_set_oem_6g_supported: API to set oem target 6g enabled/disabled 386 * @psoc: psoc object 387 * @val: value to set 388 * 389 * Return: None 390 */ 391 void ucfg_wifi_pos_set_oem_6g_supported(struct wlan_objmgr_psoc *psoc, 392 bool val); 393 394 /** 395 * ucfg_wifi_pos_is_nl_rsp: API to check if response is nl or ani type 396 * @psoc: psoc object 397 * 398 * Return: true if response is nl type 399 */ 400 bool ucfg_wifi_pos_is_nl_rsp(struct wlan_objmgr_psoc *psoc); 401 402 /** 403 * wifi_pos_get_app_pid: returns oem app pid. 404 * @psoc: pointer to psoc object 405 * 406 * Return: oem app pid 407 */ 408 uint32_t wifi_pos_get_app_pid(struct wlan_objmgr_psoc *psoc); 409 410 /** 411 * wifi_pos_is_app_registered: indicates if oem app is registered. 412 * @psoc: pointer to psoc object 413 * 414 * Return: true if app is registered, false otherwise 415 */ 416 bool wifi_pos_is_app_registered(struct wlan_objmgr_psoc *psoc); 417 418 /** 419 * wifi_pos_get_psoc: API to get global PSOC object 420 * 421 * Since request from userspace is not associated with any vdev/pdev/psoc, this 422 * API is used to get global psoc object. 423 * Return: global psoc object. 424 */ 425 struct wlan_objmgr_psoc *wifi_pos_get_psoc(void); 426 427 /** 428 * wifi_pos_get_legacy_ops() - Get wifi pos legacy ops 429 * 430 * Return: Pointer to legacy ops 431 */ 432 struct wifi_pos_legacy_ops *wifi_pos_get_legacy_ops(void); 433 434 /** 435 * wifi_pos_set_legacy_ops() - Set Wifi Pos legacy ops 436 * @psoc: PSOC pointer 437 * @legacy_ops: Legacy ops 438 * 439 * Return: QDF_STATUS 440 */ 441 QDF_STATUS 442 wifi_pos_set_legacy_ops(struct wlan_objmgr_psoc *psoc, 443 struct wifi_pos_legacy_ops *legacy_ops); 444 #else 445 static inline QDF_STATUS wifi_pos_init(void) 446 { 447 return QDF_STATUS_SUCCESS; 448 } 449 450 static inline QDF_STATUS wifi_pos_deinit(void) 451 { 452 return QDF_STATUS_SUCCESS; 453 } 454 455 static inline QDF_STATUS wifi_pos_psoc_enable(struct wlan_objmgr_psoc *psoc) 456 { 457 return QDF_STATUS_SUCCESS; 458 } 459 460 static inline QDF_STATUS wifi_pos_psoc_disable(struct wlan_objmgr_psoc *psoc) 461 { 462 return QDF_STATUS_SUCCESS; 463 } 464 #endif 465 466 #if defined(WLAN_FEATURE_CIF_CFR) && defined(WIFI_POS_CONVERGED) 467 /** 468 * wifi_pos_init_cir_cfr_rings: API to set DMA ring cap in wifi pos psoc private 469 * object 470 * @psoc: pointer to psoc object 471 * @hal_soc: hal soc pointer 472 * @num_mac: number of macs 473 * @buf: buffer containing dma ring cap 474 * 475 * Return: status of operation. 476 */ 477 QDF_STATUS wifi_pos_init_cir_cfr_rings(struct wlan_objmgr_psoc *psoc, 478 void *hal_soc, uint8_t num_mac, void *buf); 479 #else 480 static inline QDF_STATUS wifi_pos_init_cir_cfr_rings( 481 struct wlan_objmgr_psoc *psoc, 482 void *hal_soc, uint8_t num_mac, void *buf) 483 { 484 return QDF_STATUS_SUCCESS; 485 } 486 #endif 487 488 /** 489 * wifi_pos_register_get_fw_phy_mode_for_freq_cb: API to register callback 490 * to get current PHY mode 491 * @psoc: pointer to psoc object 492 * @handler: callback to be registered 493 * 494 * Return: QDF_STATUS_SUCCESS in case of success, error codes in 495 * case of failure 496 */ 497 QDF_STATUS wifi_pos_register_get_fw_phy_mode_for_freq_cb( 498 struct wlan_objmgr_psoc *psoc, 499 void (*handler)(uint32_t, uint32_t, uint32_t *)); 500 501 /** 502 * wifi_pos_register_get_phy_mode_cb: API to register callback to get 503 * current PHY mode 504 * @psoc: pointer to psoc object 505 * @handler: callback to be registered 506 * 507 * Return: QDF_STATUS_SUCCESS in case of success, error codes in 508 * case of failure 509 */ 510 QDF_STATUS wifi_pos_register_get_phy_mode_cb( 511 struct wlan_objmgr_psoc *psoc, 512 void (*handler)(qdf_freq_t, uint32_t, uint32_t *)); 513 514 /** 515 * wifi_pos_register_send_action: API to register callback to send 516 * action frames 517 * @psoc: pointer to psoc object 518 * @handler: callback to be registered 519 * 520 * Return: QDF_STATUS_SUCCESS in case of success, error codes in 521 * case of failure 522 */ 523 QDF_STATUS wifi_pos_register_send_action( 524 struct wlan_objmgr_psoc *psoc, 525 void (*handler)(struct wlan_objmgr_psoc *psoc, 526 uint32_t sub_type, 527 uint8_t *buf, 528 uint32_t buf_len)); 529 530 #ifndef CNSS_GENL 531 /** 532 * ucfg_wifi_psoc_get_pdev_id_by_dev_name: ucfg API to get pdev_id and psoc from 533 * devname. 534 * @dev_name: dev name received from LOWI application 535 * @pdev_id: get pdev_id from dev_name 536 * @psoc: get psoc corresponding psoc from dev_name 537 */ 538 QDF_STATUS ucfg_wifi_psoc_get_pdev_id_by_dev_name( 539 char *dev_name, uint8_t *pdev_id, 540 struct wlan_objmgr_psoc **psoc); 541 542 /** 543 * wifi_pos_register_get_pdev_id_by_dev_name: API to register callback to get 544 * pdev_id from dev name 545 * @psoc: pointer to global psoc object 546 * @handler: callback to be registered 547 * 548 * Return: QDF_STATUS_SUCCESS in case of success, error codes in 549 * case of failure 550 */ 551 QDF_STATUS wifi_pos_register_get_pdev_id_by_dev_name( 552 struct wlan_objmgr_psoc *psoc, 553 QDF_STATUS (*handler)(char *dev_name, uint8_t *pdev_id, 554 struct wlan_objmgr_psoc **psoc)); 555 556 /** 557 * wifi_pos_register_get_max_fw_phymode_for_channels: API to register callback 558 * to get FW phymode for the given channels. 559 * @psoc: pointer to global psoc object 560 * @handler: callback to be registered 561 * 562 * Return: QDF_STATUS_SUCCESS in case of success, error codes in case of failure 563 */ 564 QDF_STATUS wifi_pos_register_get_max_fw_phymode_for_channels( 565 struct wlan_objmgr_psoc *psoc, 566 QDF_STATUS (*handler)(struct wlan_objmgr_pdev *pdev, 567 struct wifi_pos_channel_power *chan_list, 568 uint16_t wifi_pos_num_chans)); 569 #endif /* CNSS_GENL */ 570 571 #if !defined(CNSS_GENL) && defined(WLAN_RTT_MEASUREMENT_NOTIFICATION) 572 /** 573 * ucfg_wifi_pos_measurement_request_notification: ucfg API to notify 574 * measurement request received from the LOWI application 575 * @pdev: Pointer to pdev structure 576 * @req: Pointer to wifi_pos_req_msg structure 577 * 578 * Return: QDF_STATUS_SUCCESS in case of success, error codes in 579 * case of failure 580 */ 581 QDF_STATUS ucfg_wifi_pos_measurement_request_notification( 582 struct wlan_objmgr_pdev *pdev, 583 struct wifi_pos_req_msg *req); 584 585 /** 586 * wifi_pos_register_measurement_request_notification: API to register a 587 * callback that needs to be called when the driver receives a measurement 588 * request from the LOWI application. 589 * @psoc: pointer to global psoc object 590 * @handler: callback to be registered 591 * 592 * Return: QDF_STATUS_SUCCESS in case of success, error codes in case of 593 * failure. 594 */ 595 QDF_STATUS wifi_pos_register_measurement_request_notification( 596 struct wlan_objmgr_psoc *psoc, 597 QDF_STATUS (*handler)(struct wlan_objmgr_pdev *pdev, 598 struct rtt_channel_info *chinfo)); 599 #else 600 static inline QDF_STATUS ucfg_wifi_pos_measurement_request_notification( 601 struct wlan_objmgr_pdev *pdev, 602 struct wifi_pos_req_msg *req) 603 { 604 return QDF_STATUS_SUCCESS; 605 } 606 607 static inline QDF_STATUS wifi_pos_register_measurement_request_notification( 608 struct wlan_objmgr_psoc *psoc, 609 QDF_STATUS (*handler)(struct wlan_objmgr_pdev *pdev, 610 struct rtt_channel_info *chinfo)) 611 { 612 return QDF_STATUS_SUCCESS; 613 } 614 #endif /*!defined(CNSS_GENL) && defined(WLAN_RTT_MEASUREMENT_NOTIFICATION)*/ 615 616 /** 617 * wifi_pos_send_report_resp: Send report to osif 618 * @psoc: pointer to psoc object 619 * @req_id: Request id 620 * @dest_mac: destination mac address 621 * @err_code: Error code to be sent 622 * 623 * Return: QDF_STATUS_SUCCESS in case of success, error codes in 624 * case of failure 625 */ 626 QDF_STATUS wifi_pos_send_report_resp(struct wlan_objmgr_psoc *psoc, 627 int req_id, uint8_t *dest_mac, 628 int err_code); 629 630 /** 631 * wifi_pos_convert_host_pdev_id_to_target: convert host pdev_id to target 632 * pdev_id 633 * @psoc: pointer to psoc object 634 * @host_pdev_id: host pdev id 635 * @target_pdev_id: target pdev id 636 * 637 * Return: QDF_STATUS_SUCCESS in case of success, error codes in 638 * case of failure 639 */ 640 QDF_STATUS wifi_pos_convert_host_pdev_id_to_target( 641 struct wlan_objmgr_psoc *psoc, uint32_t host_pdev_id, 642 uint32_t *target_pdev_id); 643 644 #ifdef WIFI_POS_CONVERGED 645 /** 646 * wifi_pos_get_peer_private_object() - Wifi Pos get peer private object 647 * @peer: Peer object pointer 648 * 649 * Return: Peer private object pointer 650 */ 651 struct wlan_wifi_pos_peer_priv_obj * 652 wifi_pos_get_peer_private_object(struct wlan_objmgr_peer *peer); 653 654 /** 655 * wifi_pos_register_osif_callbacks() - Register OSIF callbacks 656 * @ops: Osif callbacks pointer 657 * 658 * Return: QDF_STATUS 659 */ 660 QDF_STATUS wifi_pos_register_osif_callbacks(struct wifi_pos_osif_ops *ops); 661 662 /** 663 * wifi_pos_get_osif_callbacks() - Get OS IF callbacks 664 * 665 * Return: struct wifi_pos_osif_ops pointer 666 */ 667 struct wifi_pos_osif_ops *wifi_pos_get_osif_callbacks(void); 668 #endif /* WIFI_POS_CONVERGED */ 669 670 #if defined(WIFI_POS_CONVERGED) && defined(WLAN_FEATURE_RTT_11AZ_SUPPORT) 671 /** 672 * wifi_pos_set_rsta_sec_ltf_cap() - Set RSTA secure LTF capability 673 * @val: Value 674 * 675 * Return: None 676 **/ 677 void 678 wifi_pos_set_rsta_sec_ltf_cap(bool val); 679 680 /** 681 * wifi_pos_get_rsta_sec_ltf_cap - Get RSTA secure LTF capability 682 * 683 * Return: True or false 684 */ 685 bool wifi_pos_get_rsta_sec_ltf_cap(void); 686 687 /** 688 * wifi_pos_set_rsta_11az_ranging_cap() - Enable/Disable R-STA 11az ranging 689 * @val: Value to set 690 */ 691 void wifi_pos_set_rsta_11az_ranging_cap(bool val); 692 693 /** 694 * wifi_pos_get_rsta_11az_ranging_cap() - Get if RSTA 11az ranging is enabled 695 * 696 * Return: True if 11az ranging is enabled 697 */ 698 bool wifi_pos_get_rsta_11az_ranging_cap(void); 699 #endif 700 #endif /* _WIFI_POS_API_H_ */ 701