1*5113495bSYour Name /*
2*5113495bSYour Name * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
3*5113495bSYour Name *
4*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for any
5*5113495bSYour Name * purpose with or without fee is hereby granted, provided that the above
6*5113495bSYour Name * copyright notice and this permission notice appear in all copies.
7*5113495bSYour Name *
8*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9*5113495bSYour Name * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10*5113495bSYour Name * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11*5113495bSYour Name * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12*5113495bSYour Name * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13*5113495bSYour Name * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14*5113495bSYour Name * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*5113495bSYour Name */
16*5113495bSYour Name
17*5113495bSYour Name /**
18*5113495bSYour Name * DOC: wifi_pos_pasn_api.h
19*5113495bSYour Name * This file declares public APIs of wifi positioning component
20*5113495bSYour Name */
21*5113495bSYour Name #ifndef _WIFI_POS_PASN_API_H_
22*5113495bSYour Name #define _WIFI_POS_PASN_API_H_
23*5113495bSYour Name
24*5113495bSYour Name /* Include files */
25*5113495bSYour Name #include "wlan_objmgr_cmn.h"
26*5113495bSYour Name #include "wifi_pos_utils_pub.h"
27*5113495bSYour Name #include "wifi_pos_public_struct.h"
28*5113495bSYour Name
29*5113495bSYour Name #if defined(WIFI_POS_CONVERGED) && defined(WLAN_FEATURE_RTT_11AZ_SUPPORT)
30*5113495bSYour Name /**
31*5113495bSYour Name * wifi_pos_set_peer_ltf_keyseed_required() - Set LTF keyseed required
32*5113495bSYour Name * for the peer
33*5113495bSYour Name * @peer: Peer object
34*5113495bSYour Name * @value: Value to set
35*5113495bSYour Name *
36*5113495bSYour Name * Return: QDF_STATUS
37*5113495bSYour Name */
38*5113495bSYour Name QDF_STATUS
39*5113495bSYour Name wifi_pos_set_peer_ltf_keyseed_required(struct wlan_objmgr_peer *peer,
40*5113495bSYour Name bool value);
41*5113495bSYour Name /**
42*5113495bSYour Name * wifi_pos_is_ltf_keyseed_required_for_peer() - Is LTF keyseed required for
43*5113495bSYour Name * the given peer
44*5113495bSYour Name * @peer: Peer object
45*5113495bSYour Name *
46*5113495bSYour Name * Return: true or false
47*5113495bSYour Name */
48*5113495bSYour Name bool wifi_pos_is_ltf_keyseed_required_for_peer(struct wlan_objmgr_peer *peer);
49*5113495bSYour Name
50*5113495bSYour Name /**
51*5113495bSYour Name * wifi_pos_handle_ranging_peer_create() - Handle ranging peer create
52*5113495bSYour Name * @psoc: Pointer to PSOC
53*5113495bSYour Name * @req: PASN request
54*5113495bSYour Name * @vdev_id: vdev id
55*5113495bSYour Name * @total_entries: Total entries
56*5113495bSYour Name *
57*5113495bSYour Name * Return: QDF_STATUS
58*5113495bSYour Name */
59*5113495bSYour Name QDF_STATUS wifi_pos_handle_ranging_peer_create(struct wlan_objmgr_psoc *psoc,
60*5113495bSYour Name struct wlan_pasn_request *req,
61*5113495bSYour Name uint8_t vdev_id,
62*5113495bSYour Name uint8_t total_entries);
63*5113495bSYour Name
64*5113495bSYour Name /**
65*5113495bSYour Name * wifi_pos_set_11az_failed_peers() - Update the 11az failed peers to the
66*5113495bSYour Name * context
67*5113495bSYour Name * @vdev: Objmgr vdev pointer
68*5113495bSYour Name * @mac_addr: mac address
69*5113495bSYour Name */
70*5113495bSYour Name void wifi_pos_set_11az_failed_peers(struct wlan_objmgr_vdev *vdev,
71*5113495bSYour Name struct qdf_mac_addr *mac_addr);
72*5113495bSYour Name
73*5113495bSYour Name /**
74*5113495bSYour Name * wifi_pos_add_peer_to_list() - Add the peer mac to the secure/unsecure
75*5113495bSYour Name * peer list in the 11az context
76*5113495bSYour Name * @vdev: Pointer to vdev object
77*5113495bSYour Name * @req: PASN peer create request pointer
78*5113495bSYour Name * @is_peer_create_required: True if we need to send peer create command to
79*5113495bSYour Name * firmware
80*5113495bSYour Name */
81*5113495bSYour Name void wifi_pos_add_peer_to_list(struct wlan_objmgr_vdev *vdev,
82*5113495bSYour Name struct wlan_pasn_request *req,
83*5113495bSYour Name bool is_peer_create_required);
84*5113495bSYour Name
85*5113495bSYour Name /**
86*5113495bSYour Name * wifi_pos_handle_ranging_peer_create_rsp() - Ranging peer create response
87*5113495bSYour Name * handler
88*5113495bSYour Name * @psoc: Pointer to PSOC object
89*5113495bSYour Name * @vdev_id: vdev id
90*5113495bSYour Name * @peer_mac: Peer mac address
91*5113495bSYour Name * @status: Status
92*5113495bSYour Name *
93*5113495bSYour Name * Return: QDF_STATUS
94*5113495bSYour Name */
95*5113495bSYour Name QDF_STATUS
96*5113495bSYour Name wifi_pos_handle_ranging_peer_create_rsp(struct wlan_objmgr_psoc *psoc,
97*5113495bSYour Name uint8_t vdev_id,
98*5113495bSYour Name struct qdf_mac_addr *peer_mac,
99*5113495bSYour Name uint8_t status);
100*5113495bSYour Name
101*5113495bSYour Name /**
102*5113495bSYour Name * wifi_pos_handle_ranging_peer_delete() - Handle ranging PASN peer delete
103*5113495bSYour Name * @psoc: Pointer to PSOC object
104*5113495bSYour Name * @req: PASN request
105*5113495bSYour Name * @vdev_id: vdev id
106*5113495bSYour Name * @total_entries: Total number of peers
107*5113495bSYour Name *
108*5113495bSYour Name * Return: QDF_STATUS
109*5113495bSYour Name */
110*5113495bSYour Name QDF_STATUS
111*5113495bSYour Name wifi_pos_handle_ranging_peer_delete(struct wlan_objmgr_psoc *psoc,
112*5113495bSYour Name struct wlan_pasn_request *req,
113*5113495bSYour Name uint8_t vdev_id,
114*5113495bSYour Name uint8_t total_entries);
115*5113495bSYour Name
116*5113495bSYour Name /**
117*5113495bSYour Name * wifi_pos_send_pasn_auth_status() - Send PASN auth status to firmware
118*5113495bSYour Name * @psoc: Pointer to PSOC object
119*5113495bSYour Name * @data: pointer to auth status data
120*5113495bSYour Name *
121*5113495bSYour Name * Return: QDF_STATUS
122*5113495bSYour Name */
123*5113495bSYour Name QDF_STATUS
124*5113495bSYour Name wifi_pos_send_pasn_auth_status(struct wlan_objmgr_psoc *psoc,
125*5113495bSYour Name struct wlan_pasn_auth_status *data);
126*5113495bSYour Name
127*5113495bSYour Name /**
128*5113495bSYour Name * wifi_pos_send_pasn_peer_deauth() - Send PASN peer deauth
129*5113495bSYour Name * @psoc: Pointer to PSOC object
130*5113495bSYour Name * @peer_mac: Peer mac address
131*5113495bSYour Name *
132*5113495bSYour Name * Return: QDF_STATUS
133*5113495bSYour Name */
134*5113495bSYour Name QDF_STATUS
135*5113495bSYour Name wifi_pos_send_pasn_peer_deauth(struct wlan_objmgr_psoc *psoc,
136*5113495bSYour Name struct qdf_mac_addr *peer_mac);
137*5113495bSYour Name
138*5113495bSYour Name /**
139*5113495bSYour Name * wifi_pos_get_pasn_peer_count() - Wifi POS get total pasn peer count
140*5113495bSYour Name * @vdev: Pointer to vdev object
141*5113495bSYour Name *
142*5113495bSYour Name * Return: Total number of pasn peers
143*5113495bSYour Name */
144*5113495bSYour Name uint8_t
145*5113495bSYour Name wifi_pos_get_pasn_peer_count(struct wlan_objmgr_vdev *vdev);
146*5113495bSYour Name
147*5113495bSYour Name /**
148*5113495bSYour Name * wifi_pos_update_pasn_peer_count() - Increment pasn peer count
149*5113495bSYour Name * @vdev: Pointer to vdev object
150*5113495bSYour Name * @is_increment: flag to indicate if peer count needs to be incremented
151*5113495bSYour Name *
152*5113495bSYour Name * Return: None
153*5113495bSYour Name */
154*5113495bSYour Name void wifi_pos_update_pasn_peer_count(struct wlan_objmgr_vdev *vdev,
155*5113495bSYour Name bool is_increment);
156*5113495bSYour Name
157*5113495bSYour Name /**
158*5113495bSYour Name * wifi_pos_cleanup_pasn_peers() - Delete all PASN peer objects for
159*5113495bSYour Name * given vdev
160*5113495bSYour Name * @psoc: Pointer to psoc object
161*5113495bSYour Name * @vdev: Pointer to vdev object
162*5113495bSYour Name *
163*5113495bSYour Name * Return: QDF_STATUS
164*5113495bSYour Name */
165*5113495bSYour Name QDF_STATUS
166*5113495bSYour Name wifi_pos_cleanup_pasn_peers(struct wlan_objmgr_psoc *psoc,
167*5113495bSYour Name struct wlan_objmgr_vdev *vdev);
168*5113495bSYour Name
169*5113495bSYour Name /**
170*5113495bSYour Name * wifi_pos_vdev_delete_all_ranging_peers() - Delete all ranging peers
171*5113495bSYour Name * associated with given vdev
172*5113495bSYour Name * @vdev: Vdev object pointer
173*5113495bSYour Name *
174*5113495bSYour Name * Return: QDF_STATUS
175*5113495bSYour Name */
176*5113495bSYour Name QDF_STATUS
177*5113495bSYour Name wifi_pos_vdev_delete_all_ranging_peers(struct wlan_objmgr_vdev *vdev);
178*5113495bSYour Name
179*5113495bSYour Name /**
180*5113495bSYour Name * wifi_pos_vdev_delete_all_ranging_peers_rsp() - Delete all vdev peers response
181*5113495bSYour Name * handler
182*5113495bSYour Name * @psoc: Psoc pointer
183*5113495bSYour Name * @vdev_id: vdev id
184*5113495bSYour Name *
185*5113495bSYour Name * Return: QDF_STATUS
186*5113495bSYour Name */
187*5113495bSYour Name QDF_STATUS
188*5113495bSYour Name wifi_pos_vdev_delete_all_ranging_peers_rsp(struct wlan_objmgr_psoc *psoc,
189*5113495bSYour Name uint8_t vdev_id);
190*5113495bSYour Name
191*5113495bSYour Name /**
192*5113495bSYour Name * wifi_pos_is_delete_all_peer_in_progress() - Check if delete all pasn peers
193*5113495bSYour Name * command is already in progress
194*5113495bSYour Name * for a given vdev
195*5113495bSYour Name * @vdev: Vdev object pointer
196*5113495bSYour Name *
197*5113495bSYour Name * Return: True if delete all pasn peer is in progress
198*5113495bSYour Name */
199*5113495bSYour Name bool wifi_pos_is_delete_all_peer_in_progress(struct wlan_objmgr_vdev *vdev);
200*5113495bSYour Name
201*5113495bSYour Name /**
202*5113495bSYour Name * wifi_pos_set_delete_all_peer_in_progress() - API to set/unset delete all
203*5113495bSYour Name * ranging peers is in progress
204*5113495bSYour Name * @vdev: Pointer to vdev object
205*5113495bSYour Name * @flag: value to indicate set or unset the flag
206*5113495bSYour Name *
207*5113495bSYour Name * Return: None
208*5113495bSYour Name */
209*5113495bSYour Name void wifi_pos_set_delete_all_peer_in_progress(struct wlan_objmgr_vdev *vdev,
210*5113495bSYour Name bool flag);
211*5113495bSYour Name #else
212*5113495bSYour Name static inline
wifi_pos_handle_ranging_peer_create(struct wlan_objmgr_psoc * psoc,struct wlan_pasn_request * req,uint8_t vdev_id,uint8_t total_entries)213*5113495bSYour Name QDF_STATUS wifi_pos_handle_ranging_peer_create(struct wlan_objmgr_psoc *psoc,
214*5113495bSYour Name struct wlan_pasn_request *req,
215*5113495bSYour Name uint8_t vdev_id,
216*5113495bSYour Name uint8_t total_entries)
217*5113495bSYour Name {
218*5113495bSYour Name return QDF_STATUS_SUCCESS;
219*5113495bSYour Name }
220*5113495bSYour Name
221*5113495bSYour Name static inline
wifi_pos_set_11az_failed_peers(struct wlan_objmgr_vdev * vdev,struct qdf_mac_addr * mac_addr)222*5113495bSYour Name void wifi_pos_set_11az_failed_peers(struct wlan_objmgr_vdev *vdev,
223*5113495bSYour Name struct qdf_mac_addr *mac_addr)
224*5113495bSYour Name {}
225*5113495bSYour Name
226*5113495bSYour Name static inline
wifi_pos_add_peer_to_list(struct wlan_objmgr_vdev * vdev,struct wlan_pasn_request * req,bool is_peer_create_required)227*5113495bSYour Name void wifi_pos_add_peer_to_list(struct wlan_objmgr_vdev *vdev,
228*5113495bSYour Name struct wlan_pasn_request *req,
229*5113495bSYour Name bool is_peer_create_required)
230*5113495bSYour Name {}
231*5113495bSYour Name
232*5113495bSYour Name static inline QDF_STATUS
wifi_pos_handle_ranging_peer_create_rsp(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id,struct qdf_mac_addr * peer_mac,uint8_t status)233*5113495bSYour Name wifi_pos_handle_ranging_peer_create_rsp(struct wlan_objmgr_psoc *psoc,
234*5113495bSYour Name uint8_t vdev_id,
235*5113495bSYour Name struct qdf_mac_addr *peer_mac,
236*5113495bSYour Name uint8_t status)
237*5113495bSYour Name {
238*5113495bSYour Name return QDF_STATUS_SUCCESS;
239*5113495bSYour Name }
240*5113495bSYour Name
241*5113495bSYour Name static inline QDF_STATUS
wifi_pos_handle_ranging_peer_delete(struct wlan_objmgr_psoc * psoc,struct wlan_pasn_request * req,uint8_t vdev_id,uint8_t total_entries)242*5113495bSYour Name wifi_pos_handle_ranging_peer_delete(struct wlan_objmgr_psoc *psoc,
243*5113495bSYour Name struct wlan_pasn_request *req,
244*5113495bSYour Name uint8_t vdev_id,
245*5113495bSYour Name uint8_t total_entries)
246*5113495bSYour Name {
247*5113495bSYour Name return QDF_STATUS_SUCCESS;
248*5113495bSYour Name }
249*5113495bSYour Name
250*5113495bSYour Name static inline QDF_STATUS
wifi_pos_send_pasn_peer_deauth(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * peer_mac)251*5113495bSYour Name wifi_pos_send_pasn_peer_deauth(struct wlan_objmgr_psoc *psoc,
252*5113495bSYour Name struct qdf_mac_addr *peer_mac)
253*5113495bSYour Name {
254*5113495bSYour Name return QDF_STATUS_SUCCESS;
255*5113495bSYour Name }
256*5113495bSYour Name
257*5113495bSYour Name static inline void
wifi_pos_update_pasn_peer_count(struct wlan_objmgr_vdev * vdev,bool is_increment)258*5113495bSYour Name wifi_pos_update_pasn_peer_count(struct wlan_objmgr_vdev *vdev,
259*5113495bSYour Name bool is_increment)
260*5113495bSYour Name {}
261*5113495bSYour Name
262*5113495bSYour Name static inline uint8_t
wifi_pos_get_pasn_peer_count(struct wlan_objmgr_vdev * vdev)263*5113495bSYour Name wifi_pos_get_pasn_peer_count(struct wlan_objmgr_vdev *vdev)
264*5113495bSYour Name {
265*5113495bSYour Name return 0;
266*5113495bSYour Name }
267*5113495bSYour Name
268*5113495bSYour Name static inline QDF_STATUS
wifi_pos_vdev_delete_all_ranging_peers(struct wlan_objmgr_vdev * vdev)269*5113495bSYour Name wifi_pos_vdev_delete_all_ranging_peers(struct wlan_objmgr_vdev *vdev)
270*5113495bSYour Name {
271*5113495bSYour Name return QDF_STATUS_SUCCESS;
272*5113495bSYour Name }
273*5113495bSYour Name
274*5113495bSYour Name static inline
wifi_pos_is_delete_all_peer_in_progress(struct wlan_objmgr_vdev * vdev)275*5113495bSYour Name bool wifi_pos_is_delete_all_peer_in_progress(struct wlan_objmgr_vdev *vdev)
276*5113495bSYour Name {
277*5113495bSYour Name return false;
278*5113495bSYour Name }
279*5113495bSYour Name
280*5113495bSYour Name static inline QDF_STATUS
wifi_pos_cleanup_pasn_peers(struct wlan_objmgr_psoc * psoc,struct wlan_objmgr_vdev * vdev)281*5113495bSYour Name wifi_pos_cleanup_pasn_peers(struct wlan_objmgr_psoc *psoc,
282*5113495bSYour Name struct wlan_objmgr_vdev *vdev)
283*5113495bSYour Name {
284*5113495bSYour Name return QDF_STATUS_SUCCESS;
285*5113495bSYour Name }
286*5113495bSYour Name
287*5113495bSYour Name static inline
wifi_pos_set_delete_all_peer_in_progress(struct wlan_objmgr_vdev * vdev,bool flag)288*5113495bSYour Name void wifi_pos_set_delete_all_peer_in_progress(struct wlan_objmgr_vdev *vdev,
289*5113495bSYour Name bool flag)
290*5113495bSYour Name {}
291*5113495bSYour Name #endif /* WIFI_POS_CONVERGED && WLAN_FEATURE_RTT_11AZ_SUPPORT */
292*5113495bSYour Name #endif /* _WIFI_POS_PASN_API_H_ */
293