xref: /wlan-driver/qcacld-3.0/core/mac/inc/ani_system_defs.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2011-2019, 2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name /*
21*5113495bSYour Name  *
22*5113495bSYour Name  * This file ani_system_defs.h contains definitions used by
23*5113495bSYour Name  * various ANI entities
24*5113495bSYour Name  * Author:    Chandra Modumudi
25*5113495bSYour Name  * Date:      09/18/2002
26*5113495bSYour Name  * History:-
27*5113495bSYour Name  * Date       Modified by    Modification Information
28*5113495bSYour Name  * --------------------------------------------------------------------
29*5113495bSYour Name  */
30*5113495bSYour Name 
31*5113495bSYour Name #ifndef __ANI_SYSTEM_DEFS_H
32*5113495bSYour Name #define __ANI_SYSTEM_DEFS_H
33*5113495bSYour Name 
34*5113495bSYour Name #include "sir_types.h"
35*5113495bSYour Name #include "sir_mac_prot_def.h"
36*5113495bSYour Name #include "wlan_crypto_global_def.h"
37*5113495bSYour Name 
38*5113495bSYour Name /* This is to force compiler to use the maximum of an int for enum */
39*5113495bSYour Name #define SIR_MAX_ENUM_SIZE    0x7FFFFFFF
40*5113495bSYour Name 
41*5113495bSYour Name #ifndef false
42*5113495bSYour Name #undef false
43*5113495bSYour Name #define false   0
44*5113495bSYour Name #endif
45*5113495bSYour Name #ifndef true
46*5113495bSYour Name #undef true
47*5113495bSYour Name #define true    1
48*5113495bSYour Name #endif
49*5113495bSYour Name 
50*5113495bSYour Name /* / Authentication type enum used with peer */
51*5113495bSYour Name typedef enum eAniAuthType {
52*5113495bSYour Name 	eSIR_OPEN_SYSTEM,
53*5113495bSYour Name 	eSIR_SHARED_KEY,
54*5113495bSYour Name 	eSIR_FT_AUTH,
55*5113495bSYour Name 	eSIR_AUTH_TYPE_SAE = 3,
56*5113495bSYour Name #if defined FEATURE_WLAN_ESE
57*5113495bSYour Name 	eSIR_LEAP_AUTH = 0x80,
58*5113495bSYour Name #endif
59*5113495bSYour Name 	SIR_FILS_SK_WITHOUT_PFS = 4,
60*5113495bSYour Name 	SIR_FILS_SK_WITH_PFS = 5,
61*5113495bSYour Name 	SIR_FILS_PK_AUTH = 6,
62*5113495bSYour Name 	eSIR_AUTH_TYPE_PASN = 7,
63*5113495bSYour Name 	eSIR_AUTH_TYPE_OWE,
64*5113495bSYour Name 	eSIR_AUTO_SWITCH,
65*5113495bSYour Name 	eSIR_DONOT_USE_AUTH_TYPE = SIR_MAX_ENUM_SIZE
66*5113495bSYour Name } tAniAuthType;
67*5113495bSYour Name 
68*5113495bSYour Name enum ani_akm_type {
69*5113495bSYour Name 	ANI_AKM_TYPE_NONE,
70*5113495bSYour Name 	ANI_AKM_TYPE_RSN,
71*5113495bSYour Name 	ANI_AKM_TYPE_RSN_PSK,
72*5113495bSYour Name 	ANI_AKM_TYPE_FT_RSN,
73*5113495bSYour Name 	ANI_AKM_TYPE_FT_RSN_PSK,
74*5113495bSYour Name 	ANI_AKM_TYPE_RSN_PSK_SHA256,
75*5113495bSYour Name 	ANI_AKM_TYPE_RSN_8021X_SHA256,
76*5113495bSYour Name 	ANI_AKM_TYPE_SAE,
77*5113495bSYour Name 	ANI_AKM_TYPE_FT_SAE,
78*5113495bSYour Name 	ANI_AKM_TYPE_SUITEB_EAP_SHA256,
79*5113495bSYour Name 	ANI_AKM_TYPE_SUITEB_EAP_SHA384,
80*5113495bSYour Name 	ANI_AKM_TYPE_FT_SUITEB_EAP_SHA384,
81*5113495bSYour Name 	ANI_AKM_TYPE_FILS_SHA256,
82*5113495bSYour Name 	ANI_AKM_TYPE_FILS_SHA384,
83*5113495bSYour Name 	ANI_AKM_TYPE_FT_FILS_SHA256,
84*5113495bSYour Name 	ANI_AKM_TYPE_FT_FILS_SHA384,
85*5113495bSYour Name 	ANI_AKM_TYPE_OWE,
86*5113495bSYour Name 	ANI_AKM_TYPE_CCKM,
87*5113495bSYour Name 	ANI_AKM_TYPE_OSEN,
88*5113495bSYour Name 	ANI_AKM_TYPE_DPP_RSN,
89*5113495bSYour Name 	ANI_AKM_TYPE_WPA,
90*5113495bSYour Name 	ANI_AKM_TYPE_WPA_PSK,
91*5113495bSYour Name 	ANI_AKM_TYPE_SAE_EXT_KEY,
92*5113495bSYour Name 	ANI_AKM_TYPE_FT_SAE_EXT_KEY,
93*5113495bSYour Name 	ANI_NUM_OF_SUPPORT_AKM_TYPE,
94*5113495bSYour Name 	ANI_AKM_TYPE_UNKNOWN = 0xff,
95*5113495bSYour Name };
96*5113495bSYour Name 
97*5113495bSYour Name /* / Encryption type enum used with peer */
98*5113495bSYour Name typedef enum eAniEdType {
99*5113495bSYour Name 	eSIR_ED_NONE,
100*5113495bSYour Name 	eSIR_ED_WEP40,
101*5113495bSYour Name 	eSIR_ED_WEP104,
102*5113495bSYour Name 	eSIR_ED_TKIP,
103*5113495bSYour Name 	eSIR_ED_CCMP,
104*5113495bSYour Name #if defined(FEATURE_WLAN_WAPI)
105*5113495bSYour Name 	eSIR_ED_WPI,
106*5113495bSYour Name #endif
107*5113495bSYour Name 	/*DPU HW treats encryption mode 4 plus RMF bit set in TX BD as BIP.
108*5113495bSYour Name 	   Thus while setting BIP encryption mode in corresponding DPU Desc
109*5113495bSYour Name 	   eSIR_ED_AES_128_CMAC should be set to eSIR_ED_CCMP */
110*5113495bSYour Name 	eSIR_ED_AES_128_CMAC,
111*5113495bSYour Name 	/* Firmware uses key length to find GCMP 128 or 256 */
112*5113495bSYour Name 	eSIR_ED_GCMP,
113*5113495bSYour Name 	eSIR_ED_GCMP_256,
114*5113495bSYour Name 	eSIR_ED_AES_GMAC_128,
115*5113495bSYour Name 	eSIR_ED_AES_GMAC_256,
116*5113495bSYour Name 	eSIR_ED_NOT_IMPLEMENTED = SIR_MAX_ENUM_SIZE
117*5113495bSYour Name } tAniEdType;
118*5113495bSYour Name 
119*5113495bSYour Name typedef struct sAniSSID {
120*5113495bSYour Name 	uint8_t length;
121*5113495bSYour Name 	uint8_t ssId[WLAN_SSID_MAX_LEN];
122*5113495bSYour Name } tAniSSID, *tpAniSSID;
123*5113495bSYour Name 
124*5113495bSYour Name /* / RSN IE information */
125*5113495bSYour Name typedef struct sSirRSNie {
126*5113495bSYour Name 	uint16_t length;
127*5113495bSYour Name 	uint8_t rsnIEdata[WLAN_MAX_IE_LEN + 2];
128*5113495bSYour Name } tSirRSNie, *tpSirRSNie;
129*5113495bSYour Name 
130*5113495bSYour Name typedef struct sSirWAPIie {
131*5113495bSYour Name 	uint16_t length;
132*5113495bSYour Name 	uint8_t wapiIEdata[WLAN_MAX_IE_LEN + 2];
133*5113495bSYour Name } tSirWAPIie, *tpSirWAPIie;
134*5113495bSYour Name /* / Additional IE information : */
135*5113495bSYour Name /* / This can include WSC IE, P2P IE, and/or FTIE from upper layer. */
136*5113495bSYour Name /* / MAC layer transparently convey these IE info between peer STA and upper layer, */
137*5113495bSYour Name /* / but never requires to parse it. */
138*5113495bSYour Name typedef struct sSirAddie {
139*5113495bSYour Name 	uint16_t length;
140*5113495bSYour Name 	uint8_t addIEdata[SIR_MAC_MAX_ADD_IE_LENGTH + 2];
141*5113495bSYour Name } tSirAddie, *tpSirAddie;
142*5113495bSYour Name 
143*5113495bSYour Name #define SIR_CIPHER_SEQ_CTR_SIZE 6
144*5113495bSYour Name /* / Definition for MIC failure indication */
145*5113495bSYour Name typedef struct sSirMicFailureInfo {
146*5113495bSYour Name 	tSirMacAddr srcMacAddr; /* address used to compute MIC */
147*5113495bSYour Name 	tSirMacAddr taMacAddr;  /* transmitter address */
148*5113495bSYour Name 	tSirMacAddr dstMacAddr;
149*5113495bSYour Name 	bool multicast;
150*5113495bSYour Name 	uint8_t IV1;            /* first byte of IV */
151*5113495bSYour Name 	uint8_t keyId;          /* second byte of IV */
152*5113495bSYour Name 	uint8_t TSC[SIR_CIPHER_SEQ_CTR_SIZE];   /* sequence number */
153*5113495bSYour Name 	tSirMacAddr rxMacAddr;  /* receive address */
154*5113495bSYour Name 
155*5113495bSYour Name } tSirMicFailureInfo, *tpSirMicFailureInfo;
156*5113495bSYour Name 
157*5113495bSYour Name typedef struct sTrafStrmMetrics {
158*5113495bSYour Name 	uint8_t RoamingCount;
159*5113495bSYour Name 	uint16_t RoamingDly;
160*5113495bSYour Name } qdf_packed tTrafStrmMetrics, *tpTrafStrmMetrics;
161*5113495bSYour Name 
162*5113495bSYour Name typedef struct sBcnReportFields {
163*5113495bSYour Name 	uint8_t ChanNum;
164*5113495bSYour Name 	uint8_t Spare;
165*5113495bSYour Name 	uint16_t MeasDuration;
166*5113495bSYour Name 	uint8_t PhyType;
167*5113495bSYour Name 	uint8_t RecvSigPower;
168*5113495bSYour Name 	tSirMacAddr Bssid;
169*5113495bSYour Name 	uint32_t ParentTsf;
170*5113495bSYour Name 	uint32_t TargetTsf[2];
171*5113495bSYour Name 	uint16_t BcnInterval;
172*5113495bSYour Name 	uint16_t CapabilityInfo;
173*5113495bSYour Name } qdf_packed tBcnReportFields, *tpBcnReportFields;
174*5113495bSYour Name 
175*5113495bSYour Name #endif /* __ANI_SYSTEM_DEFS_H */
176