1 /* 2 * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2022 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 * DOC: This file provides the common definitions for object manager 21 */ 22 23 #ifndef _WLAN_CMN_H_ 24 #define _WLAN_CMN_H_ 25 26 #include <qdf_types.h> 27 28 /* Max no of UMAC components */ 29 #define WLAN_UMAC_MAX_COMPONENTS WLAN_UMAC_COMP_ID_MAX 30 31 /* Max no. of radios, a pSoc/Device can support */ 32 #ifdef WLAN_MAX_PDEVS 33 #define WLAN_UMAC_MAX_PDEVS WLAN_MAX_PDEVS 34 #else 35 #define WLAN_UMAC_MAX_PDEVS 3 36 #endif 37 38 /* Max no. of VDEV per PSOC */ 39 #ifdef WLAN_PSOC_MAX_VDEVS 40 #define WLAN_UMAC_PSOC_MAX_VDEVS WLAN_PSOC_MAX_VDEVS 41 #else 42 #define WLAN_UMAC_PSOC_MAX_VDEVS 51 43 #endif 44 45 /* Max no. of VDEVs, a PDEV can support */ 46 #ifdef WLAN_PDEV_MAX_VDEVS 47 #define WLAN_UMAC_PDEV_MAX_VDEVS WLAN_PDEV_MAX_VDEVS 48 #else 49 #define WLAN_UMAC_PDEV_MAX_VDEVS 17 50 #endif 51 52 /* Max no. of Peers, a device can support */ 53 #define WLAN_UMAC_PSOC_MAX_PEERS (1536 + WLAN_UMAC_PSOC_MAX_VDEVS) 54 55 /* Max no. of Temporary Peers, a pdev can support */ 56 #define WLAN_MAX_PDEV_TEMP_PEERS 128 57 58 /* Max no. of Temporary Peers, a psoc can support */ 59 #define WLAN_MAX_PSOC_TEMP_PEERS \ 60 (WLAN_MAX_PDEV_TEMP_PEERS * WLAN_UMAC_MAX_PDEVS) 61 62 /* Max length of a SSID */ 63 #define WLAN_SSID_MAX_LEN 32 64 65 #define WLAN_CACHE_ID_LEN 2 66 67 /* Max sequence number */ 68 #define WLAN_MAX_SEQ_NUM 4096 69 70 /* Max no. of peers for STA vap */ 71 #define WLAN_UMAC_MAX_STA_PEERS 2 72 73 /* Max vdev_id */ 74 #define WLAN_UMAC_VDEV_ID_MAX 0xFF 75 76 /* MAX AID */ 77 #define WLAN_UMAC_MAX_AID 2008 78 79 /* Invalid pdev_id */ 80 #define WLAN_INVALID_PDEV_ID 0xFFFFFFFF 81 82 /* Invalid free descriptor count */ 83 #define WLAN_INVALID_MGMT_DESC_COUNT 0xFFFFFFFF 84 85 /* Max fw report pdev id */ 86 #define WLAN_UMAC_MAX_RP_PID 2 87 88 /* 802.11 cap info */ 89 #define WLAN_CAPINFO_ESS 0x0001 90 #define WLAN_CAPINFO_IBSS 0x0002 91 #define WLAN_CAPINFO_CF_POLLABLE 0x0004 92 #define WLAN_CAPINFO_CF_POLLREQ 0x0008 93 #define WLAN_CAPINFO_PRIVACY 0x0010 94 #define WLAN_CAPINFO_SHORT_PREAMBLE 0x0020 95 #define WLAN_CAPINFO_PBCC 0x0040 96 #define WLAN_CAPINFO_CHNL_AGILITY 0x0080 97 #define WLAN_CAPINFO_SPECTRUM_MGMT 0x0100 98 #define WLAN_CAPINFO_QOS 0x0200 99 #define WLAN_CAPINFO_SHORT_SLOTTIME 0x0400 100 #define WLAN_CAPINFO_APSD 0x0800 101 #define WLAN_CAPINFO_RADIOMEAS 0x1000 102 #define WLAN_CAPINFO_DSSSOFDM 0x2000 103 104 /* Allowed time to wait for Object creation */ 105 #define WLAN_VDEV_CREATE_TIMEOUT_CNT 300 106 /* 25 msec */ 107 #define WLAN_VDEV_CREATE_TIMEOUT 25 108 109 #define WLAN_PDEV_CREATE_TIMEOUT_CNT 300 110 /* 25 msec */ 111 #define WLAN_PDEV_CREATE_TIMEOUT 25 112 113 #define WLAN_PSOC_CREATE_TIMEOUT_CNT 300 114 /* 25 msec */ 115 #define WLAN_PSOC_CREATE_TIMEOUT 25 116 #define WLAN_24_GHZ_BASE_FREQ (2407) 117 #define WLAN_5_GHZ_BASE_FREQ (5000) 118 #define WLAN_24_GHZ_CHANNEL_6 (6) 119 #define WLAN_24_GHZ_CHANNEL_14 (14) 120 #define WLAN_24_GHZ_CHANNEL_15 (15) 121 #define WLAN_24_GHZ_CHANNEL_27 (27) 122 #define WLAN_5_GHZ_CHANNEL_170 (170) 123 #define WLAN_CHAN_SPACING_5MHZ (5) 124 #define WLAN_CHAN_SPACING_20MHZ (20) 125 #define WLAN_CHAN_14_FREQ (2484) 126 #define WLAN_CHAN_15_FREQ (2512) 127 #define WLAN_CHAN_170_FREQ (5852) 128 129 #define WLAN_MAC_EID_VENDOR 221 130 #define WLAN_MAC_EID_EXT 255 131 132 /* VHT capability flags */ 133 /* B0-B1 Maximum MPDU Length */ 134 /* A-MSDU Length 3839 octets */ 135 #define WLAN_VHTCAP_MAX_MPDU_LEN_3839 0x00000000 136 /* A-MSDU Length 7991 octets */ 137 #define WLAN_VHTCAP_MAX_MPDU_LEN_7935 0x00000001 138 /* A-MSDU Length 11454 octets */ 139 #define WLAN_VHTCAP_MAX_MPDU_LEN_11454 0x00000002 140 141 /* B2-B3 Supported Channel Width */ 142 /* Does not support 160 or 80+80 */ 143 #define WLAN_VHTCAP_SUP_CHAN_WIDTH_80 0x00000000 144 /* Supports 160 */ 145 #define WLAN_VHTCAP_SUP_CHAN_WIDTH_160 0x00000004 146 /* Support both 160 or 80+80 */ 147 #define WLAN_VHTCAP_SUP_CHAN_WIDTH_80_160 0x00000008 148 /* B2-B3 */ 149 #define WLAN_VHTCAP_SUP_CHAN_WIDTH_S 2 150 #define WLAN_VHTCAP_SUP_CHAN_WIDTH_MASK 0x0000000C 151 /* B4 RX LDPC */ 152 #define WLAN_VHTCAP_RX_LDPC 0x00000010 153 /* B5 Short GI for 80MHz */ 154 #define WLAN_VHTCAP_SHORTGI_80 0x00000020 155 /* B6 Short GI for 160 and 80+80 MHz */ 156 #define WLAN_VHTCAP_SHORTGI_160 0x00000040 157 /* B7 Tx STBC */ 158 #define WLAN_VHTCAP_TX_STBC 0x00000080 159 #define WLAN_VHTCAP_TX_STBC_S 7 160 /* B8-B10 Rx STBC */ 161 #define WLAN_VHTCAP_RX_STBC 0x00000700 162 #define WLAN_VHTCAP_RX_STBC_S 8 163 /* B11 SU Beam former capable */ 164 #define WLAN_VHTCAP_SU_BFORMER 0x00000800 165 #define WLAN_VHTCAP_SU_BFORMER_S 11 166 /* B12 SU Beam formee capable */ 167 #define WLAN_VHTCAP_SU_BFORMEE 0x00001000 168 #define WLAN_VHTCAP_SU_BFORMEE_S 12 169 170 /* B13-B15 Compressed steering number of beacomformer Antennas supported */ 171 #define WLAN_VHTCAP_BF_MAX_ANT 0x0000E000 172 #define WLAN_VHTCAP_BF_MAX_ANT_S 13 173 /* B13-B15 Beamformee STS Capability */ 174 #define WLAN_VHTCAP_STS_CAP_S 13 175 #define WLAN_VHTCAP_STS_CAP_M 0x7 176 177 /* B16-B18 Sounding Dimensions */ 178 #define WLAN_VHTCAP_SOUND_DIM 0x00070000 179 #define WLAN_VHTCAP_SOUND_DIM_S 16 180 /* B19 MU Beam Former */ 181 #define WLAN_VHTCAP_MU_BFORMER 0x00080000 182 #define WLAN_VHTCAP_MU_BFORMER_S 19 183 /* B20 MU Beam Formee */ 184 #define WLAN_VHTCAP_MU_BFORMEE 0x00100000 185 #define WLAN_VHTCAP_MU_BFORMEE_S 20 186 /* B21 VHT TXOP PS */ 187 #define WLAN_VHTCAP_TXOP_PS 0x00200000 188 /* B22 +HTC-VHT capable */ 189 #define WLAN_VHTCAP_PLUS_HTC_VHT 0x00400000 190 191 #define WLAN_VHTCAP_MAX_AMPDU_LEN_FACTOR 13 192 /* B23-B25 maximum AMPDU Length Exponent */ 193 #define WLAN_VHTCAP_MAX_AMPDU_LEN_EXP 0x03800000 194 #define WLAN_VHTCAP_MAX_AMPDU_LEN_EXP_S 23 195 /* B26-B27 VHT Link Adaptation capable */ 196 #define WLAN_VHTCAP_LINK_ADAPT 0x0C000000 197 /* Rx Antenna Pattern Consistency Supported */ 198 #define WLAN_VHTCAP_RX_ANTENNA_PATTERN 0x10000000 199 /* Tx Antenna Pattern Consistency Supported */ 200 #define WLAN_VHTCAP_TX_ANTENNA_PATTERN 0x20000000 201 /* B30-B31 Extended NSS Bandwidth Support */ 202 #define WLAN_VHTCAP_NO_EXT_NSS_BW_SUPPORT 0x00000000 203 /* B30-B31 Extended NSS Bandwidth Support */ 204 #define WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_1 0x40000000 205 /* B30-B31 Extended NSS Bandwidth Support */ 206 #define WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_2 0x80000000 207 /* B30-B31 Extended NSS Bandwidth Support */ 208 #define WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_3 0xC0000000 209 #define WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_S 30 210 #define WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_MASK 0xC0000000 211 212 #define WLAN_VHTCAP_EXT_NSS_MASK (WLAN_VHTCAP_SUP_CHAN_WIDTH_MASK |\ 213 WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_MASK) 214 /* VHTCAP combinations of "supported channel width" and "ext nss support" 215 * which determine the NSS value supported by STA for <=80 MHz, 160 MHz 216 * and 80+80 MHz. The macros to be read as combination of 217 * "supported channel width" and "ext nss support" followed by NSS for 80MHz, 218 * 160MHz and 80+80MHz defined as a function of Max VHT NSS supported. 219 * Ex: WLAN_EXTNSS_MAP_01_80F1_160FDOT5_80P80NONE - To be reas as 220 * supported channel width = 0 221 * ext nss support = 1 222 * NSS value for <=80MHz = max_vht_nss * 1 223 * NSS value for 160MHz = max_vht_nss * (.5) 224 * NSS value for 80+80MHz = not supported 225 */ 226 #define WLAN_EXTNSS_MAP_00_80F1_160NONE_80P80NONE \ 227 (WLAN_VHTCAP_SUP_CHAN_WIDTH_80 | WLAN_VHTCAP_NO_EXT_NSS_BW_SUPPORT) 228 #define WLAN_EXTNSS_MAP_01_80F1_160FDOT5_80P80NONE \ 229 (WLAN_VHTCAP_SUP_CHAN_WIDTH_80 | WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_1) 230 #define WLAN_EXTNSS_MAP_02_80F1_160FDOT5_80P80FDOT5 \ 231 (WLAN_VHTCAP_SUP_CHAN_WIDTH_80 | WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_2) 232 #define WLAN_EXTNSS_MAP_03_80F1_160FDOT75_80P80FDOT75 \ 233 (WLAN_VHTCAP_SUP_CHAN_WIDTH_80 | WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_3) 234 #define WLAN_EXTNSS_MAP_10_80F1_160F1_80P80NONE \ 235 (WLAN_VHTCAP_SUP_CHAN_WIDTH_160 | WLAN_VHTCAP_NO_EXT_NSS_BW_SUPPORT) 236 #define WLAN_EXTNSS_MAP_11_80F1_160F1_80P80FDOT5 \ 237 (WLAN_VHTCAP_SUP_CHAN_WIDTH_160 | WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_1) 238 #define WLAN_EXTNSS_MAP_12_80F1_160F1_80P80FDOT75 \ 239 (WLAN_VHTCAP_SUP_CHAN_WIDTH_160 | WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_2) 240 #define WLAN_EXTNSS_MAP_13_80F2_160F2_80P80F1 \ 241 (WLAN_VHTCAP_SUP_CHAN_WIDTH_160 | WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_3) 242 #define WLAN_EXTNSS_MAP_20_80F1_160F1_80P80F1 \ 243 (WLAN_VHTCAP_SUP_CHAN_WIDTH_80_160 | WLAN_VHTCAP_NO_EXT_NSS_BW_SUPPORT) 244 #define WLAN_EXTNSS_MAP_23_80F2_160F1_80P80F1 \ 245 (WLAN_VHTCAP_SUP_CHAN_WIDTH_80_160 | WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_3) 246 247 248 /** 249 * enum wlan_umac_comp_id - UMAC component id 250 * @WLAN_UMAC_COMP_MLME: MLME 251 * @WLAN_UMAC_COMP_MGMT_TXRX: MGMT Tx/Rx 252 * @WLAN_UMAC_COMP_SERIALIZATION: Serialization 253 * @WLAN_UMAC_COMP_SCAN: SCAN - as scan module uses services provided by 254 * MLME, MGMT_TXRX and SERIALIZATION, SCAN module 255 * must be initializes after above modules. 256 * @WLAN_UMAC_COMP_PMO: PMO component 257 * @WLAN_UMAC_COMP_P2P: P2P 258 * @WLAN_UMAC_COMP_POLICY_MGR: Policy Manager 259 * @WLAN_UMAC_COMP_CONFIG: Configuration 260 * @WLAN_UMAC_COMP_WIFI_POS: WIFI Positioning 261 * @WLAN_UMAC_COMP_TDLS: TDLS 262 * @WLAN_UMAC_COMP_ATF: Airtime Fairness 263 * @WLAN_UMAC_COMP_SA_API: Smart Antenna API 264 * @WLAN_UMAC_COMP_REGULATORY: REGULATORY 265 * @WLAN_UMAC_COMP_CRYPTO: CRYPTO 266 * @WLAN_UMAC_COMP_NAN: Neighbor Aware Networking 267 * @WLAN_UMAC_COMP_DFS: DFS 268 * @WLAN_UMAC_COMP_SPECTRAL: Spectral 269 * @WLAN_UMAC_COMP_OFFCHAN_TXRX: Offchan TxRx 270 * @WLAN_UMAC_COMP_SON: SON 271 * @WLAN_UMAC_COMP_SPECTRAL: Spectral 272 * @WLAN_UMAC_COMP_SPLITMAC: SplitMAC 273 * @WLAN_UMAC_COMP_DISA: DISA encryption test 274 * @WLAN_UMAC_COMP_GREEN_AP: Green AP 275 * @WLAN_UMAC_COMP_FTM: FTM component 276 * @WLAN_UMAC_COMP_FD: FILS Discovery 277 * @WLAN_UMAC_COMP_OCB: OCB 278 * @WLAN_UMAC_COMP_IPA: IPA 279 * @WLAN_UMAC_COMP_CP_STATS: Control Plane Statistics 280 * @WLAN_UMAC_COMP_ACTION_OUI: ACTION OUI 281 * @WLAN_UMAC_COMP_FWOL FW Offload 282 * @WLAN_UMAC_COMP_INTEROP_ISSUES_AP interop issues ap component 283 * @WLAN_UMAC_COMP_DENYLIST_MGR: Denylist mgr component 284 * @WLAN_UMAC_COMP_COEX: Coex config component 285 * @WLAN_UMAC_COMP_FTM_TIME_SYNC: WLAN FTM TIMESYNC 286 * @WLAN_UMAC_COMP_PKT_CAPTURE: Packet capture component 287 * @WLAN_UMAC_COMP_DCS: DCS 288 * @WLAN_IOT_SIM_COMP: IOT Simulation component 289 * @WLAN_UMAC_COMP_IF_MGR: Interface manager component 290 * @WLAN_UMAC_COMP_GPIO: GPIO Configuration 291 * @WLAN_UMAC_COMP_MLO_MGR: MLO manager 292 * @WLAN_UMAC_COMP_REPEATER: Repeater component 293 * @WLAN_UMAC_COMP_MBSS: MBSS Framework 294 * @WLAN_UMAC_COMP_WIFI_RADAR: WIFI RADAR component 295 * @WLAN_UMAC_COMP_TWT: Target Wake Time (TWT) Component 296 * @WLAN_UMAC_COMP_PRE_CAC: PRE CAC component 297 * @WLAN_COMP_DP: DP component 298 * @WLAN_UMAC_COMP_COAP: Constrained Application Protocol component 299 * @WLAN_UMAC_COMP_QMI: QMI component 300 * @WLAN_UMAC_COMP_AFC: AFC component 301 * @WLAN_UMAC_COMP_ID_MAX: Maximum components in UMAC 302 * 303 * This id is static. 304 * On Adding new component, new id has to be assigned 305 */ 306 enum wlan_umac_comp_id { 307 WLAN_UMAC_COMP_MLME = 0, 308 WLAN_UMAC_COMP_MGMT_TXRX = 1, 309 WLAN_UMAC_COMP_SERIALIZATION = 2, 310 WLAN_UMAC_COMP_SCAN = 3, 311 WLAN_UMAC_COMP_PMO = 4, 312 WLAN_UMAC_COMP_P2P = 5, 313 WLAN_UMAC_COMP_POLICY_MGR = 6, 314 WLAN_UMAC_COMP_CONFIG = 7, 315 WLAN_TARGET_IF_COMP_DIRECT_BUF_RX = 8, 316 WLAN_UMAC_COMP_WIFI_POS = 9, 317 WLAN_UMAC_COMP_TDLS = 10, 318 WLAN_UMAC_COMP_ATF = 11, 319 WLAN_UMAC_COMP_SA_API = 12, 320 WLAN_UMAC_COMP_REGULATORY = 13, 321 WLAN_UMAC_COMP_CRYPTO = 14, 322 WLAN_UMAC_COMP_NAN = 15, 323 WLAN_UMAC_COMP_DFS = 16, 324 WLAN_UMAC_COMP_OFFCHAN_TXRX = 17, 325 WLAN_UMAC_COMP_SON = 18, 326 WLAN_UMAC_COMP_SPECTRAL = 19, 327 WLAN_UMAC_COMP_SPLITMAC = 20, 328 WLAN_UMAC_COMP_DISA = 21, 329 WLAN_UMAC_COMP_GREEN_AP = 22, 330 WLAN_UMAC_COMP_FTM = 23, 331 WLAN_UMAC_COMP_FD = 24, 332 WLAN_UMAC_COMP_OCB = 25, 333 WLAN_UMAC_COMP_IPA = 26, 334 WLAN_UMAC_COMP_CP_STATS = 27, 335 WLAN_UMAC_COMP_ACTION_OUI = 28, 336 WLAN_UMAC_COMP_FWOL = 29, 337 WLAN_UMAC_COMP_CFR = 30, 338 WLAN_UMAC_COMP_INTEROP_ISSUES_AP = 31, 339 WLAN_UMAC_COMP_DENYLIST_MGR = 32, 340 WLAN_UMAC_COMP_COEX = 33, 341 WLAN_UMAC_COMP_FTM_TIME_SYNC = 34, 342 WLAN_UMAC_COMP_PKT_CAPTURE = 35, 343 WLAN_UMAC_COMP_DCS = 36, 344 WLAN_IOT_SIM_COMP = 37, 345 WLAN_UMAC_COMP_IF_MGR = 38, 346 WLAN_UMAC_COMP_GPIO = 39, 347 WLAN_UMAC_COMP_MLO_MGR = 40, 348 WLAN_UMAC_COMP_REPEATER = 41, 349 WLAN_UMAC_COMP_MBSS = 42, 350 WLAN_UMAC_COMP_WIFI_RADAR = 43, 351 WLAN_UMAC_COMP_TWT = 44, 352 WLAN_UMAC_COMP_PRE_CAC = 45, 353 WLAN_COMP_DP = 46, 354 WLAN_COMP_TELEMETRY_AGENT = 47, 355 WLAN_UMAC_COMP_COAP = 48, 356 WLAN_UMAC_COMP_QMI = 49, 357 WLAN_UMAC_COMP_AFC = 50, 358 WLAN_UMAC_COMP_ID_MAX, 359 }; 360 361 /** 362 * enum WLAN_DEV_TYPE - for DA or OL architecture types 363 * @WLAN_DEV_DA: Direct attach 364 * @WLAN_DEV_OL: Partial offload 365 * @WLAN_DEV_INVALID: Invalid dev type 366 */ 367 typedef enum { 368 WLAN_DEV_DA = 0, 369 WLAN_DEV_OL = 1, 370 WLAN_DEV_INVALID = 3, 371 } WLAN_DEV_TYPE; 372 373 /** 374 * enum wlan_phymode - phy mode 375 * @WLAN_PHYMODE_AUTO: autoselect 376 * @WLAN_PHYMODE_11A: 5GHz, OFDM 377 * @WLAN_PHYMODE_11B: 2GHz, CCK 378 * @WLAN_PHYMODE_11G: 2GHz, OFDM 379 * @WLAN_PHYMODE_11G_ONLY: 2GHz only 380 * @WLAN_PHYMODE_11NA_HT20: 5Ghz, HT20 381 * @WLAN_PHYMODE_11NG_HT20: 2Ghz, HT20 382 * @WLAN_PHYMODE_11NA_HT40: 5Ghz, Auto HT40 383 * @WLAN_PHYMODE_11NG_HT40PLUS: 2Ghz, HT40 (ext ch +1) 384 * @WLAN_PHYMODE_11NG_HT40MINUS: 2Ghz, HT40 (ext ch -1) 385 * @WLAN_PHYMODE_11NG_HT40: 2Ghz, Auto HT40 386 * @WLAN_PHYMODE_11AC_VHT20: 5Ghz, VHT20 387 * @WLAN_PHYMODE_11AC_VHT20_2G: 2Ghz, VHT20 388 * @WLAN_PHYMODE_11AC_VHT40: 5Ghz, VHT40 389 * @WLAN_PHYMODE_11AC_VHT40PLUS_2G: 2Ghz, VHT40 (ext ch +1) 390 * @WLAN_PHYMODE_11AC_VHT40MINUS_2G: 2Ghz, VHT40 (ext ch -1) 391 * @WLAN_PHYMODE_11AC_VHT40_2G: 2Ghz, VHT40 392 * @WLAN_PHYMODE_11AC_VHT80: 5Ghz, VHT80 393 * @WLAN_PHYMODE_11AC_VHT80_2G: 2Ghz, VHT80 394 * @WLAN_PHYMODE_11AC_VHT160: 5Ghz, VHT160 395 * @WLAN_PHYMODE_11AC_VHT80_80: 5Ghz, VHT80_80 396 * @WLAN_PHYMODE_11AXA_HE20: 5GHz, HE20 397 * @WLAN_PHYMODE_11AXG_HE20: 2GHz, HE20 398 * @WLAN_PHYMODE_11AXA_HE40: 5GHz, HE40 399 * @WLAN_PHYMODE_11AXG_HE40PLUS: 2GHz, HE40 (ext ch +1) 400 * @WLAN_PHYMODE_11AXG_HE40MINUS:2GHz, HE40 (ext ch -1) 401 * @WLAN_PHYMODE_11AXG_HE40: 2GHz, HE40 402 * @WLAN_PHYMODE_11AXA_HE80: 5GHz, HE80 403 * @WLAN_PHYMODE_11AXG_HE80: 2GHz, HE80 404 * @WLAN_PHYMODE_11AXA_HE160: 5GHz, HE160 405 * @WLAN_PHYMODE_11AXA_HE80_80: 5GHz, HE80_80 406 * @WLAN_PHYMODE_11BEA_EHT20: 5GHz, EHT20 407 * @WLAN_PHYMODE_11BEG_EHT20: 2GHz, EHT20 408 * @WLAN_PHYMODE_11BEA_EHT40: 5GHz, EHT40 409 * @WLAN_PHYMODE_11BEG_EHT40PLUS: 2GHz, EHT40 (ext ch +1) 410 * @WLAN_PHYMODE_11BEG_EHT40MINUS:2GHz, EHT40 (ext ch -1) 411 * @WLAN_PHYMODE_11BEG_EHT40: 2GHz, EHT40 412 * @WLAN_PHYMODE_11BEA_EHT80: 5GHz, EHT80 413 * @WLAN_PHYMODE_11BEG_EHT80: 2GHz, EHT80 414 * @WLAN_PHYMODE_11BEA_EHT160: 5GHz, EHT160 415 * @WLAN_PHYMODE_11BEA_EHT320: 5GHz, EHT320 416 * @WLAN_PHYMODE_MAX: Max phymode 417 */ 418 enum wlan_phymode { 419 WLAN_PHYMODE_AUTO = 0, 420 WLAN_PHYMODE_11A = 1, 421 WLAN_PHYMODE_11B = 2, 422 WLAN_PHYMODE_11G = 3, 423 WLAN_PHYMODE_11G_ONLY = 4, 424 WLAN_PHYMODE_11NA_HT20 = 5, 425 WLAN_PHYMODE_11NG_HT20 = 6, 426 WLAN_PHYMODE_11NA_HT40 = 7, 427 WLAN_PHYMODE_11NG_HT40PLUS = 8, 428 WLAN_PHYMODE_11NG_HT40MINUS = 9, 429 WLAN_PHYMODE_11NG_HT40 = 10, 430 WLAN_PHYMODE_11AC_VHT20 = 11, 431 WLAN_PHYMODE_11AC_VHT20_2G = 12, 432 WLAN_PHYMODE_11AC_VHT40 = 13, 433 WLAN_PHYMODE_11AC_VHT40PLUS_2G = 14, 434 WLAN_PHYMODE_11AC_VHT40MINUS_2G = 15, 435 WLAN_PHYMODE_11AC_VHT40_2G = 16, 436 WLAN_PHYMODE_11AC_VHT80 = 17, 437 WLAN_PHYMODE_11AC_VHT80_2G = 18, 438 WLAN_PHYMODE_11AC_VHT160 = 19, 439 WLAN_PHYMODE_11AC_VHT80_80 = 20, 440 WLAN_PHYMODE_11AXA_HE20 = 21, 441 WLAN_PHYMODE_11AXG_HE20 = 22, 442 WLAN_PHYMODE_11AXA_HE40 = 23, 443 WLAN_PHYMODE_11AXG_HE40PLUS = 24, 444 WLAN_PHYMODE_11AXG_HE40MINUS = 25, 445 WLAN_PHYMODE_11AXG_HE40 = 26, 446 WLAN_PHYMODE_11AXA_HE80 = 27, 447 WLAN_PHYMODE_11AXG_HE80 = 28, 448 WLAN_PHYMODE_11AXA_HE160 = 29, 449 WLAN_PHYMODE_11AXA_HE80_80 = 30, 450 #ifdef WLAN_FEATURE_11BE 451 WLAN_PHYMODE_11BEA_EHT20 = 31, 452 WLAN_PHYMODE_11BEG_EHT20 = 32, 453 WLAN_PHYMODE_11BEA_EHT40 = 33, 454 WLAN_PHYMODE_11BEG_EHT40PLUS = 34, 455 WLAN_PHYMODE_11BEG_EHT40MINUS = 35, 456 WLAN_PHYMODE_11BEG_EHT40 = 36, 457 WLAN_PHYMODE_11BEA_EHT80 = 37, 458 WLAN_PHYMODE_11BEG_EHT80 = 38, 459 WLAN_PHYMODE_11BEA_EHT160 = 39, 460 WLAN_PHYMODE_11BEA_EHT320 = 40, 461 #endif 462 WLAN_PHYMODE_MAX 463 }; 464 465 #ifdef WLAN_FEATURE_11BE 466 #define IS_WLAN_PHYMODE_320MHZ(_mode) ({typeof(_mode) mode = (_mode); \ 467 ((mode) == WLAN_PHYMODE_11BEA_EHT320); }) 468 469 #define IS_WLAN_PHYMODE_160MHZ(_mode) ({typeof(_mode) mode = (_mode); \ 470 ((mode) == WLAN_PHYMODE_11BEA_EHT160) || \ 471 ((mode) == WLAN_PHYMODE_11AC_VHT80_80) || \ 472 ((mode) == WLAN_PHYMODE_11AC_VHT160) || \ 473 ((mode) == WLAN_PHYMODE_11AXA_HE80_80) || \ 474 ((mode) == WLAN_PHYMODE_11AXA_HE160); }) 475 476 #define IS_WLAN_PHYMODE_80MHZ(_mode) ({typeof(_mode) mode = (_mode); \ 477 ((mode) == WLAN_PHYMODE_11BEA_EHT80) || \ 478 ((mode) == WLAN_PHYMODE_11AC_VHT80) || \ 479 ((mode) == WLAN_PHYMODE_11AC_VHT80_2G) || \ 480 ((mode) == WLAN_PHYMODE_11AXA_HE80) || \ 481 ((mode) == WLAN_PHYMODE_11AXG_HE80); }) 482 483 #define IS_WLAN_PHYMODE_40MHZ(_mode) ({typeof(_mode) mode = (_mode); \ 484 ((mode) == WLAN_PHYMODE_11NG_HT40) || \ 485 ((mode) == WLAN_PHYMODE_11NG_HT40PLUS) || \ 486 ((mode) == WLAN_PHYMODE_11NG_HT40MINUS) || \ 487 ((mode) == WLAN_PHYMODE_11NA_HT40) || \ 488 ((mode) == WLAN_PHYMODE_11AC_VHT40) || \ 489 ((mode) == WLAN_PHYMODE_11AC_VHT40_2G) || \ 490 ((mode) == WLAN_PHYMODE_11AC_VHT40PLUS_2G) || \ 491 ((mode) == WLAN_PHYMODE_11AC_VHT40MINUS_2G) || \ 492 ((mode) == WLAN_PHYMODE_11BEA_EHT40) || \ 493 ((mode) == WLAN_PHYMODE_11BEG_EHT40) || \ 494 ((mode) == WLAN_PHYMODE_11BEG_EHT40PLUS) || \ 495 ((mode) == WLAN_PHYMODE_11BEG_EHT40MINUS) || \ 496 ((mode) == WLAN_PHYMODE_11AXA_HE40) || \ 497 ((mode) == WLAN_PHYMODE_11AXG_HE40) || \ 498 ((mode) == WLAN_PHYMODE_11AXG_HE40PLUS) || \ 499 ((mode) == WLAN_PHYMODE_11AXG_HE40MINUS); }) 500 501 #define IS_WLAN_PHYMODE_EHT(_mode) ({typeof(_mode) mode = (_mode); \ 502 ((mode) == WLAN_PHYMODE_11BEA_EHT20) || \ 503 ((mode) == WLAN_PHYMODE_11BEG_EHT20) || \ 504 ((mode) == WLAN_PHYMODE_11BEA_EHT40) || \ 505 ((mode) == WLAN_PHYMODE_11BEG_EHT40) || \ 506 ((mode) == WLAN_PHYMODE_11BEG_EHT40PLUS) || \ 507 ((mode) == WLAN_PHYMODE_11BEG_EHT40MINUS) || \ 508 ((mode) == WLAN_PHYMODE_11BEA_EHT80) || \ 509 ((mode) == WLAN_PHYMODE_11BEG_EHT80) || \ 510 ((mode) == WLAN_PHYMODE_11BEA_EHT160) || \ 511 ((mode) == WLAN_PHYMODE_11BEA_EHT320); }) 512 513 #else 514 #define IS_WLAN_PHYMODE_320MHZ(_mode) 0 515 516 #define IS_WLAN_PHYMODE_160MHZ(_mode) ({typeof(_mode) mode = (_mode); \ 517 ((mode) == WLAN_PHYMODE_11AC_VHT80_80) || \ 518 ((mode) == WLAN_PHYMODE_11AC_VHT160) || \ 519 ((mode) == WLAN_PHYMODE_11AXA_HE80_80) || \ 520 ((mode) == WLAN_PHYMODE_11AXA_HE160); }) 521 522 #define IS_WLAN_PHYMODE_80MHZ(_mode) ({typeof(_mode) mode = (_mode); \ 523 ((mode) == WLAN_PHYMODE_11AC_VHT80) || \ 524 ((mode) == WLAN_PHYMODE_11AC_VHT80_2G) || \ 525 ((mode) == WLAN_PHYMODE_11AXA_HE80) || \ 526 ((mode) == WLAN_PHYMODE_11AXG_HE80); }) 527 528 #define IS_WLAN_PHYMODE_40MHZ(_mode) ({typeof(_mode) mode = (_mode); \ 529 ((mode) == WLAN_PHYMODE_11NG_HT40) || \ 530 ((mode) == WLAN_PHYMODE_11NG_HT40PLUS) || \ 531 ((mode) == WLAN_PHYMODE_11NG_HT40MINUS) || \ 532 ((mode) == WLAN_PHYMODE_11NA_HT40) || \ 533 ((mode) == WLAN_PHYMODE_11AC_VHT40) || \ 534 ((mode) == WLAN_PHYMODE_11AC_VHT40_2G) || \ 535 ((mode) == WLAN_PHYMODE_11AC_VHT40PLUS_2G) || \ 536 ((mode) == WLAN_PHYMODE_11AC_VHT40MINUS_2G) || \ 537 ((mode) == WLAN_PHYMODE_11AXA_HE40) || \ 538 ((mode) == WLAN_PHYMODE_11AXG_HE40) || \ 539 ((mode) == WLAN_PHYMODE_11AXG_HE40PLUS) || \ 540 ((mode) == WLAN_PHYMODE_11AXG_HE40MINUS); }) 541 #endif 542 543 #define IS_WLAN_PHYMODE_HT(_mode) ({typeof(_mode) mode = (_mode); \ 544 ((mode) == WLAN_PHYMODE_11NA_HT20) || \ 545 ((mode) == WLAN_PHYMODE_11NG_HT20) || \ 546 ((mode) == WLAN_PHYMODE_11NA_HT40) || \ 547 ((mode) == WLAN_PHYMODE_11NG_HT40PLUS) || \ 548 ((mode) == WLAN_PHYMODE_11NG_HT40MINUS) || \ 549 ((mode) == WLAN_PHYMODE_11NG_HT40); }) 550 551 #define IS_WLAN_PHYMODE_VHT(_mode) ({typeof(_mode) mode = (_mode); \ 552 ((mode) == WLAN_PHYMODE_11AC_VHT20) || \ 553 ((mode) == WLAN_PHYMODE_11AC_VHT20_2G) || \ 554 ((mode) == WLAN_PHYMODE_11AC_VHT40) || \ 555 ((mode) == WLAN_PHYMODE_11AC_VHT40PLUS_2G) || \ 556 ((mode) == WLAN_PHYMODE_11AC_VHT40MINUS_2G) || \ 557 ((mode) == WLAN_PHYMODE_11AC_VHT40_2G) || \ 558 ((mode) == WLAN_PHYMODE_11AC_VHT80) || \ 559 ((mode) == WLAN_PHYMODE_11AC_VHT80_2G) || \ 560 ((mode) == WLAN_PHYMODE_11AC_VHT160) || \ 561 ((mode) == WLAN_PHYMODE_11AC_VHT80_80); }) 562 563 #define IS_WLAN_PHYMODE_HE(_mode) ({typeof(_mode) mode = (_mode); \ 564 ((mode) == WLAN_PHYMODE_11AXA_HE20) || \ 565 ((mode) == WLAN_PHYMODE_11AXG_HE20) || \ 566 ((mode) == WLAN_PHYMODE_11AXA_HE40) || \ 567 ((mode) == WLAN_PHYMODE_11AXG_HE40) || \ 568 ((mode) == WLAN_PHYMODE_11AXG_HE40PLUS) || \ 569 ((mode) == WLAN_PHYMODE_11AXG_HE40MINUS) || \ 570 ((mode) == WLAN_PHYMODE_11AXA_HE80) || \ 571 ((mode) == WLAN_PHYMODE_11AXG_HE80) || \ 572 ((mode) == WLAN_PHYMODE_11AXA_HE160) || \ 573 ((mode) == WLAN_PHYMODE_11AXA_HE80_80); }) 574 575 /** 576 * enum phy_ch_width - channel width 577 * @CH_WIDTH_20MHZ: 20 mhz width 578 * @CH_WIDTH_40MHZ: 40 mhz width 579 * @CH_WIDTH_80MHZ: 80 mhz width 580 * @CH_WIDTH_160MHZ: 160 mhz width 581 * @CH_WIDTH_80P80HZ: 80+80 mhz width 582 * @CH_WIDTH_5MHZ: 5 mhz width 583 * @CH_WIDTH_10MHZ: 10 mhz width 584 * @CH_WIDTH_320MHZ: 320 mhz width 585 * @CH_WIDTH_INVALID: invalid width 586 * @CH_WIDTH_MAX: max possible width 587 */ 588 enum phy_ch_width { 589 CH_WIDTH_20MHZ = 0, 590 CH_WIDTH_40MHZ, 591 CH_WIDTH_80MHZ, 592 CH_WIDTH_160MHZ, 593 CH_WIDTH_80P80MHZ, 594 CH_WIDTH_5MHZ, 595 CH_WIDTH_10MHZ, 596 CH_WIDTH_320MHZ, 597 CH_WIDTH_INVALID, 598 CH_WIDTH_MAX 599 }; 600 601 /** 602 * enum wifi_traffic_ac - access category type 603 * @WIFI_AC_VO: Voice AC 604 * @WIFI_AC_VI: Video AC 605 * @WIFI_AC_BE: Best effort AC 606 * @WIFI_AC_BK: Background AC 607 * @WIFI_AC_MAX: MAX access category 608 */ 609 enum wifi_traffic_ac { 610 WIFI_AC_VO = 0, 611 WIFI_AC_VI = 1, 612 WIFI_AC_BE = 2, 613 WIFI_AC_BK = 3, 614 WIFI_AC_MAX = 4, 615 }; 616 617 /** 618 * enum wlan_peer_type - peer type 619 * @WLAN_PEER_SELF: for AP mode, SELF PEER or AP PEER are same 620 * @WLAN_PEER_AP: BSS peer for STA mode, Self peer for AP mode 621 * @WLAN_PEER_P2P_GO: BSS peer for P2P CLI mode, Self peer for P2P GO mode 622 * @WLAN_PEER_STA: Self Peer for STA mode, STA peer for AP mode 623 * @WLAN_PEER_P2P_CLI: Self peer for P2P CLI mode, P2P CLI peer for P2P GO mode 624 * @WLAN_PEER_TDLS: TDLS Peer 625 * @WLAN_PEER_NAWDS: NAWDS Peer 626 * @WLAN_PEER_STA_TEMP: STA Peer Temp (its host only node) 627 * @WLAN_PEER_IBSS: IBSS Peer 628 * @WLAN_PEER_NDP: NDP Peer 629 * @WLAN_PEER_MLO_TEMP: MLO Peer Temp (host only node) 630 * @WLAN_PEER_RTT_PASN: Ranging PASN peer 631 */ 632 enum wlan_peer_type { 633 WLAN_PEER_SELF = 1, 634 WLAN_PEER_AP = 2, 635 WLAN_PEER_P2P_GO = 3, 636 WLAN_PEER_STA = 4, 637 WLAN_PEER_P2P_CLI = 5, 638 WLAN_PEER_TDLS = 6, 639 WLAN_PEER_NAWDS = 7, 640 WLAN_PEER_STA_TEMP = 8, 641 WLAN_PEER_IBSS = 9, 642 WLAN_PEER_NDP = 10, 643 WLAN_PEER_MLO_TEMP = 11, 644 WLAN_PEER_RTT_PASN = 12, 645 }; 646 647 /** 648 * enum wlan_band - specifies operating channel band 649 * @WLAN_BAND_ALL: Any band 650 * @WLAN_BAND_2_4_GHZ: 2.4 GHz band 651 * @WLAN_BAND_5_GHZ: 5 GHz band 652 * @WLAN_BAND_4_9_GHZ: 4.9 GHz band 653 * @WLAN_BAND_NUM_MAX: Max num band 654 */ 655 enum wlan_band { 656 WLAN_BAND_ALL, 657 WLAN_BAND_2_4_GHZ, 658 WLAN_BAND_5_GHZ, 659 WLAN_BAND_4_9_GHZ, 660 WLAN_BAND_NUM_MAX, 661 }; 662 663 /** 664 * enum wlan_bss_type - type of network 665 * @WLAN_TYPE_ANY: Default value 666 * @WLAN_TYPE_BSS: Type BSS 667 * @WLAN_TYPE_IBSS: Type IBSS 668 */ 669 enum wlan_bss_type { 670 WLAN_TYPE_ANY, 671 WLAN_TYPE_BSS, 672 WLAN_TYPE_IBSS, 673 }; 674 675 /** 676 * enum wlan_pmf_cap: pmf capability 677 * @PMF_DISABLED: PMF is disabled 678 * @PMF_CAPABLE: PMF is supported 679 * @PMF_REQUIRED: PMF is mandatory 680 */ 681 enum wlan_pmf_cap { 682 WLAN_PMF_DISABLED, 683 WLAN_PMF_CAPABLE, 684 WLAN_PMF_REQUIRED, 685 }; 686 687 /** 688 * struct wlan_ssid - SSID info 689 * @length: ssid length of bss excluding null 690 * @ssid: ssid character array potentially non null terminated 691 */ 692 struct wlan_ssid { 693 uint8_t length; 694 uint8_t ssid[WLAN_SSID_MAX_LEN]; 695 }; 696 697 /* Util API to copy the MAC address */ 698 #define WLAN_ADDR_COPY(dst, src) qdf_mem_copy(dst, src, QDF_MAC_ADDR_SIZE) 699 /* Util API to compare the MAC address */ 700 #define WLAN_ADDR_EQ(a1, a2) qdf_mem_cmp(a1, a2, QDF_MAC_ADDR_SIZE) 701 702 #define PSOC_SERVICE_BM_SIZE ((128 + sizeof(uint32_t) - 1) / sizeof(uint32_t)) 703 #define PSOC_HOST_MAX_NUM_SS (8) 704 #define PSOC_HOST_MAX_PHY_SIZE (3) 705 #define PSOC_HOST_MAX_MAC_SIZE (2) 706 #define PSOC_MAX_HW_MODE (3) 707 #define PSOC_MAX_MAC_PHY_CAP (5) 708 #define PSOC_MAX_PHY_REG_CAP (3) 709 #define PSOC_MAX_CHAINMASK_TABLES (5) 710 711 #ifdef WLAN_FEATURE_11BE 712 #define PSOC_HOST_MAX_EHT_MAC_SIZE 1 713 #define PSOC_HOST_MAX_EHT_PHY_SIZE 3 714 #define PSOC_HOST_EHT_MCS_NSS_MAP_2G_SIZE 2 715 #define PSOC_HOST_EHT_MCS_NSS_MAP_5G_SIZE 4 716 #endif 717 718 /** 719 * enum host_edca_param_type - Host edca param type 720 * @HOST_EDCA_PARAM_TYPE_AGGRESSIVE: Aggressive type 721 * @HOST_EDCA_PARAM_TYPE_PIFS: Pifs type 722 */ 723 enum host_edca_param_type { 724 HOST_EDCA_PARAM_TYPE_AGGRESSIVE = 0, 725 HOST_EDCA_PARAM_TYPE_PIFS = 1, 726 }; 727 728 #endif /* _WLAN_OBJMGR_CMN_H_*/ 729