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