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