xref: /wlan-driver/qca-wifi-host-cmn/umac/wifi_pos/inc/wifi_pos_public_struct.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_public_struct.h
19*5113495bSYour Name  * This file declares public structures of wifi positioning component
20*5113495bSYour Name  */
21*5113495bSYour Name #ifndef _WIFI_POS_PUBLIC_STRUCT_H_
22*5113495bSYour Name #define _WIFI_POS_PUBLIC_STRUCT_H_
23*5113495bSYour Name 
24*5113495bSYour Name /* Include files */
25*5113495bSYour Name #include "qdf_types.h"
26*5113495bSYour Name #include "qdf_status.h"
27*5113495bSYour Name #include "qdf_trace.h"
28*5113495bSYour Name #include <wlan_cmn.h>
29*5113495bSYour Name 
30*5113495bSYour Name #define WLAN_MAX_11AZ_PEERS 16
31*5113495bSYour Name 
32*5113495bSYour Name /**
33*5113495bSYour Name  * enum wifi_pos_pasn_peer_type  - PASN peer type
34*5113495bSYour Name  * @WLAN_WIFI_POS_PASN_UNSECURE_PEER: Unsecure ranging peer
35*5113495bSYour Name  * @WLAN_WIFI_POS_PASN_SECURE_PEER: Secure ranging peer
36*5113495bSYour Name  * @WLAN_WIFI_POS_PASN_PEER_TYPE_MAX: Max peer type
37*5113495bSYour Name  */
38*5113495bSYour Name enum wifi_pos_pasn_peer_type {
39*5113495bSYour Name 	WLAN_WIFI_POS_PASN_UNSECURE_PEER,
40*5113495bSYour Name 	WLAN_WIFI_POS_PASN_SECURE_PEER,
41*5113495bSYour Name 	WLAN_WIFI_POS_PASN_PEER_TYPE_MAX,
42*5113495bSYour Name };
43*5113495bSYour Name 
44*5113495bSYour Name /**
45*5113495bSYour Name  * enum wifi_pos_pasn_peer_delete_actions  - Actions on receiving a peer
46*5113495bSYour Name  * delete event for PASN peer
47*5113495bSYour Name  * @WIFI_POS_PEER_DELETE_ACTION_ALREADY_DELETED: Peer is already deleted at
48*5113495bSYour Name  * target. Cleanup the host objmgr peer.
49*5113495bSYour Name  * @WIFI_POS_PEER_DELETE_ACTION_FLUSH_KEYS: Flush the derived keys for this
50*5113495bSYour Name  * peer at userspace.
51*5113495bSYour Name  */
52*5113495bSYour Name enum wifi_pos_pasn_peer_delete_actions {
53*5113495bSYour Name 	WIFI_POS_PEER_DELETE_ACTION_ALREADY_DELETED = BIT(0),
54*5113495bSYour Name 	WIFI_POS_PEER_DELETE_ACTION_FLUSH_KEYS = BIT(1),
55*5113495bSYour Name };
56*5113495bSYour Name 
57*5113495bSYour Name #define WIFI_POS_IS_PEER_ALREADY_DELETED(flag) \
58*5113495bSYour Name 			((flag) & WIFI_POS_PEER_DELETE_ACTION_ALREADY_DELETED)
59*5113495bSYour Name #define WIFI_POS_IS_FLUSH_KEYS_REQUIRED(flag) \
60*5113495bSYour Name 			((flag) & WIFI_POS_PEER_DELETE_ACTION_FLUSH_KEYS)
61*5113495bSYour Name 
62*5113495bSYour Name #define CFG_RESPONDER_11AZ_NTB_SUPPORT 0x1
63*5113495bSYour Name #define CFG_RESPONDER_11AZ_TB_SUPPORT 0x2
64*5113495bSYour Name #define CFG_RESPONDER_11AZ_MAX_SUPPORT (CFG_RESPONDER_11AZ_NTB_SUPPORT | \
65*5113495bSYour Name 		CFG_RESPONDER_11AZ_TB_SUPPORT)
66*5113495bSYour Name /**
67*5113495bSYour Name  * struct wlan_pasn_request  - PASN peer create request data
68*5113495bSYour Name  * @peer_mac: Peer mac address
69*5113495bSYour Name  * @peer_type: Peer type of enum wifi_pos_pasn_peer_type
70*5113495bSYour Name  * @self_mac: Self mac address to be used for frame exchange & key
71*5113495bSYour Name  * derivation
72*5113495bSYour Name  * @force_self_mac_usage: If this flag is true, the supplicant
73*5113495bSYour Name  * should use the provided self mac address
74*5113495bSYour Name  * @is_ltf_keyseed_required: Is set LTF keyseed required
75*5113495bSYour Name  * @control_flags: Control flags to indicate if its required to flush
76*5113495bSYour Name  * the keys
77*5113495bSYour Name  */
78*5113495bSYour Name struct wlan_pasn_request {
79*5113495bSYour Name 	struct qdf_mac_addr peer_mac;
80*5113495bSYour Name 	enum wifi_pos_pasn_peer_type peer_type;
81*5113495bSYour Name 	struct qdf_mac_addr self_mac;
82*5113495bSYour Name 	bool force_self_mac_usage;
83*5113495bSYour Name 	bool is_ltf_keyseed_required;
84*5113495bSYour Name 	uint16_t control_flags;
85*5113495bSYour Name };
86*5113495bSYour Name 
87*5113495bSYour Name /**
88*5113495bSYour Name  * struct wifi_pos_11az_context  - 11az Security context
89*5113495bSYour Name  * @secure_peer_list: Mac address list of secure peers
90*5113495bSYour Name  * @num_secure_peers: Total number of secure peers
91*5113495bSYour Name  * @unsecure_peer_list: Mac address list of unsecure peers
92*5113495bSYour Name  * @num_unsecure_peers: Total number of unsecure peers
93*5113495bSYour Name  * @failed_peer_list: List of failed peers
94*5113495bSYour Name  * @num_failed_peers: Total number of failed peers
95*5113495bSYour Name  * @num_pending_peer_creation: Number of pending peer create commands for which
96*5113495bSYour Name  * peer create confirmation is pending.
97*5113495bSYour Name  */
98*5113495bSYour Name struct wifi_pos_11az_context {
99*5113495bSYour Name 	struct wlan_pasn_request secure_peer_list[WLAN_MAX_11AZ_PEERS];
100*5113495bSYour Name 	uint8_t num_secure_peers;
101*5113495bSYour Name 	struct wlan_pasn_request unsecure_peer_list[WLAN_MAX_11AZ_PEERS];
102*5113495bSYour Name 	uint8_t num_unsecure_peers;
103*5113495bSYour Name 	struct qdf_mac_addr failed_peer_list[WLAN_MAX_11AZ_PEERS];
104*5113495bSYour Name 	uint8_t num_failed_peers;
105*5113495bSYour Name 	uint8_t num_pending_peer_creation;
106*5113495bSYour Name };
107*5113495bSYour Name 
108*5113495bSYour Name /**
109*5113495bSYour Name  * struct wifi_pos_vdev_priv_obj  - Wifi Pos module vdev private object
110*5113495bSYour Name  * @pasn_context: 11az security peers context.
111*5113495bSYour Name  * @num_pasn_peers: Total number of PASN peers
112*5113495bSYour Name  * @is_delete_all_pasn_peer_in_progress: Delete all the VDEV PASN peers in
113*5113495bSYour Name  * progress
114*5113495bSYour Name  */
115*5113495bSYour Name struct wifi_pos_vdev_priv_obj {
116*5113495bSYour Name 	struct wifi_pos_11az_context pasn_context;
117*5113495bSYour Name 	uint8_t num_pasn_peers;
118*5113495bSYour Name 	bool is_delete_all_pasn_peer_in_progress;
119*5113495bSYour Name };
120*5113495bSYour Name 
121*5113495bSYour Name /**
122*5113495bSYour Name  * enum wlan_pasn_auth_status_code  - PASN auth status code
123*5113495bSYour Name  * @WLAN_PASN_AUTH_STATUS_SUCCESS: PASN auth is successful
124*5113495bSYour Name  * @WLAN_PASN_AUTH_STATUS_PASN_FAILED: PASN authentication failed
125*5113495bSYour Name  * @WLAN_PASN_AUTH_STATUS_PEER_CREATE_FAILED: PASN peer create confirm received
126*5113495bSYour Name  * with failure status.
127*5113495bSYour Name  * @WLAN_PASN_AUTH_STATUS_PEER_ALREADY_EXISTS: Peer already exists
128*5113495bSYour Name  * @WLAN_PASN_AUTH_STATUS_HOST_INTERNAL_ERROR: WLAN driver internal error
129*5113495bSYour Name  */
130*5113495bSYour Name enum wlan_pasn_auth_status_code {
131*5113495bSYour Name 	WLAN_PASN_AUTH_STATUS_SUCCESS = 0,
132*5113495bSYour Name 	WLAN_PASN_AUTH_STATUS_PASN_FAILED = 1,
133*5113495bSYour Name 	WLAN_PASN_AUTH_STATUS_PEER_CREATE_FAILED = 2,
134*5113495bSYour Name 	WLAN_PASN_AUTH_STATUS_PEER_ALREADY_EXISTS = 3,
135*5113495bSYour Name 	WLAN_PASN_AUTH_STATUS_HOST_INTERNAL_ERROR = 4,
136*5113495bSYour Name };
137*5113495bSYour Name 
138*5113495bSYour Name /**
139*5113495bSYour Name  * struct wlan_pasn_auth_status_peer_info - PASN authentication status peer
140*5113495bSYour Name  * info
141*5113495bSYour Name  * @peer_mac: Peer mac address
142*5113495bSYour Name  * @self_mac: Self mac address
143*5113495bSYour Name  * @status: PASN auth status code
144*5113495bSYour Name  */
145*5113495bSYour Name struct wlan_pasn_auth_status_peer_info {
146*5113495bSYour Name 	struct qdf_mac_addr peer_mac;
147*5113495bSYour Name 	struct qdf_mac_addr self_mac;
148*5113495bSYour Name 	enum wlan_pasn_auth_status_code status;
149*5113495bSYour Name };
150*5113495bSYour Name 
151*5113495bSYour Name /**
152*5113495bSYour Name  * struct wlan_pasn_auth_status  - PASN authentication status
153*5113495bSYour Name  * @vdev_id:  vdev_id
154*5113495bSYour Name  * @num_peers: Number of peers for which auth status is to be sent
155*5113495bSYour Name  * @auth_status: Auth status details
156*5113495bSYour Name  */
157*5113495bSYour Name struct wlan_pasn_auth_status {
158*5113495bSYour Name 	uint8_t vdev_id;
159*5113495bSYour Name 	uint8_t num_peers;
160*5113495bSYour Name 	struct wlan_pasn_auth_status_peer_info auth_status[WLAN_MAX_11AZ_PEERS];
161*5113495bSYour Name };
162*5113495bSYour Name 
163*5113495bSYour Name /**
164*5113495bSYour Name  * struct wlan_wifi_pos_peer_priv_obj - WLAN wifi pos peer private object
165*5113495bSYour Name  * @is_ltf_keyseed_required: Is LTF keyseed required for peer
166*5113495bSYour Name  */
167*5113495bSYour Name struct wlan_wifi_pos_peer_priv_obj {
168*5113495bSYour Name 	bool is_ltf_keyseed_required;
169*5113495bSYour Name };
170*5113495bSYour Name #endif /* _WIFI_POS_PUBLIC_STRUCT_H_ */
171