xref: /wlan-driver/qca-wifi-host-cmn/umac/wifi_pos/inc/wifi_pos_pasn_api.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
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