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_ID_MAX: Maximum components in UMAC 299 * 300 * This id is static. 301 * On Adding new component, new id has to be assigned 302 */ 303 enum wlan_umac_comp_id { 304 WLAN_UMAC_COMP_MLME = 0, 305 WLAN_UMAC_COMP_MGMT_TXRX = 1, 306 WLAN_UMAC_COMP_SERIALIZATION = 2, 307 WLAN_UMAC_COMP_SCAN = 3, 308 WLAN_UMAC_COMP_PMO = 4, 309 WLAN_UMAC_COMP_P2P = 5, 310 WLAN_UMAC_COMP_POLICY_MGR = 6, 311 WLAN_UMAC_COMP_CONFIG = 7, 312 WLAN_TARGET_IF_COMP_DIRECT_BUF_RX = 8, 313 WLAN_UMAC_COMP_WIFI_POS = 9, 314 WLAN_UMAC_COMP_TDLS = 10, 315 WLAN_UMAC_COMP_ATF = 11, 316 WLAN_UMAC_COMP_SA_API = 12, 317 WLAN_UMAC_COMP_REGULATORY = 13, 318 WLAN_UMAC_COMP_CRYPTO = 14, 319 WLAN_UMAC_COMP_NAN = 15, 320 WLAN_UMAC_COMP_DFS = 16, 321 WLAN_UMAC_COMP_OFFCHAN_TXRX = 17, 322 WLAN_UMAC_COMP_SON = 18, 323 WLAN_UMAC_COMP_SPECTRAL = 19, 324 WLAN_UMAC_COMP_SPLITMAC = 20, 325 WLAN_UMAC_COMP_DISA = 21, 326 WLAN_UMAC_COMP_GREEN_AP = 22, 327 WLAN_UMAC_COMP_FTM = 23, 328 WLAN_UMAC_COMP_FD = 24, 329 WLAN_UMAC_COMP_OCB = 25, 330 WLAN_UMAC_COMP_IPA = 26, 331 WLAN_UMAC_COMP_CP_STATS = 27, 332 WLAN_UMAC_COMP_ACTION_OUI = 28, 333 WLAN_UMAC_COMP_FWOL = 29, 334 WLAN_UMAC_COMP_CFR = 30, 335 WLAN_UMAC_COMP_INTEROP_ISSUES_AP = 31, 336 WLAN_UMAC_COMP_DENYLIST_MGR = 32, 337 WLAN_UMAC_COMP_COEX = 33, 338 WLAN_UMAC_COMP_FTM_TIME_SYNC = 34, 339 WLAN_UMAC_COMP_PKT_CAPTURE = 35, 340 WLAN_UMAC_COMP_DCS = 36, 341 WLAN_IOT_SIM_COMP = 37, 342 WLAN_UMAC_COMP_IF_MGR = 38, 343 WLAN_UMAC_COMP_GPIO = 39, 344 WLAN_UMAC_COMP_MLO_MGR = 40, 345 WLAN_UMAC_COMP_REPEATER = 41, 346 WLAN_UMAC_COMP_MBSS = 42, 347 WLAN_UMAC_COMP_WIFI_RADAR = 43, 348 WLAN_UMAC_COMP_TWT = 44, 349 WLAN_UMAC_COMP_PRE_CAC = 45, 350 WLAN_COMP_DP = 46, 351 WLAN_COMP_TELEMETRY_AGENT = 47, 352 WLAN_UMAC_COMP_ID_MAX, 353 }; 354 355 /** 356 * enum WLAN_DEV_TYPE - for DA or OL architecture types 357 * @WLAN_DEV_DA: Direct attach 358 * @WLAN_DEV_OL: Partial offload 359 * @WLAN_DEV_INVALID: Invalid dev type 360 */ 361 typedef enum { 362 WLAN_DEV_DA = 0, 363 WLAN_DEV_OL = 1, 364 WLAN_DEV_INVALID = 3, 365 } WLAN_DEV_TYPE; 366 367 /** 368 * enum wlan_phymode - phy mode 369 * @WLAN_PHYMODE_AUTO: autoselect 370 * @WLAN_PHYMODE_11A: 5GHz, OFDM 371 * @WLAN_PHYMODE_11B: 2GHz, CCK 372 * @WLAN_PHYMODE_11G: 2GHz, OFDM 373 * @WLAN_PHYMODE_11G_ONLY: 2GHz only 374 * @WLAN_PHYMODE_11NA_HT20: 5Ghz, HT20 375 * @WLAN_PHYMODE_11NG_HT20: 2Ghz, HT20 376 * @WLAN_PHYMODE_11NA_HT40: 5Ghz, Auto HT40 377 * @WLAN_PHYMODE_11NG_HT40PLUS: 2Ghz, HT40 (ext ch +1) 378 * @WLAN_PHYMODE_11NG_HT40MINUS: 2Ghz, HT40 (ext ch -1) 379 * @WLAN_PHYMODE_11NG_HT40: 2Ghz, Auto HT40 380 * @WLAN_PHYMODE_11AC_VHT20: 5Ghz, VHT20 381 * @WLAN_PHYMODE_11AC_VHT20_2G: 2Ghz, VHT20 382 * @WLAN_PHYMODE_11AC_VHT40: 5Ghz, VHT40 383 * @WLAN_PHYMODE_11AC_VHT40PLUS_2G: 2Ghz, VHT40 (ext ch +1) 384 * @WLAN_PHYMODE_11AC_VHT40MINUS_2G: 2Ghz, VHT40 (ext ch -1) 385 * @WLAN_PHYMODE_11AC_VHT40_2G: 2Ghz, VHT40 386 * @WLAN_PHYMODE_11AC_VHT80: 5Ghz, VHT80 387 * @WLAN_PHYMODE_11AC_VHT80_2G: 2Ghz, VHT80 388 * @WLAN_PHYMODE_11AC_VHT160: 5Ghz, VHT160 389 * @WLAN_PHYMODE_11AC_VHT80_80: 5Ghz, VHT80_80 390 * @WLAN_PHYMODE_11AXA_HE20: 5GHz, HE20 391 * @WLAN_PHYMODE_11AXG_HE20: 2GHz, HE20 392 * @WLAN_PHYMODE_11AXA_HE40: 5GHz, HE40 393 * @WLAN_PHYMODE_11AXG_HE40PLUS: 2GHz, HE40 (ext ch +1) 394 * @WLAN_PHYMODE_11AXG_HE40MINUS:2GHz, HE40 (ext ch -1) 395 * @WLAN_PHYMODE_11AXG_HE40: 2GHz, HE40 396 * @WLAN_PHYMODE_11AXA_HE80: 5GHz, HE80 397 * @WLAN_PHYMODE_11AXG_HE80: 2GHz, HE80 398 * @WLAN_PHYMODE_11AXA_HE160: 5GHz, HE160 399 * @WLAN_PHYMODE_11AXA_HE80_80: 5GHz, HE80_80 400 * @WLAN_PHYMODE_11BEA_EHT20: 5GHz, EHT20 401 * @WLAN_PHYMODE_11BEG_EHT20: 2GHz, EHT20 402 * @WLAN_PHYMODE_11BEA_EHT40: 5GHz, EHT40 403 * @WLAN_PHYMODE_11BEG_EHT40PLUS: 2GHz, EHT40 (ext ch +1) 404 * @WLAN_PHYMODE_11BEG_EHT40MINUS:2GHz, EHT40 (ext ch -1) 405 * @WLAN_PHYMODE_11BEG_EHT40: 2GHz, EHT40 406 * @WLAN_PHYMODE_11BEA_EHT80: 5GHz, EHT80 407 * @WLAN_PHYMODE_11BEG_EHT80: 2GHz, EHT80 408 * @WLAN_PHYMODE_11BEA_EHT160: 5GHz, EHT160 409 * @WLAN_PHYMODE_11BEA_EHT320: 5GHz, EHT320 410 * @WLAN_PHYMODE_MAX: Max phymode 411 */ 412 enum wlan_phymode { 413 WLAN_PHYMODE_AUTO = 0, 414 WLAN_PHYMODE_11A = 1, 415 WLAN_PHYMODE_11B = 2, 416 WLAN_PHYMODE_11G = 3, 417 WLAN_PHYMODE_11G_ONLY = 4, 418 WLAN_PHYMODE_11NA_HT20 = 5, 419 WLAN_PHYMODE_11NG_HT20 = 6, 420 WLAN_PHYMODE_11NA_HT40 = 7, 421 WLAN_PHYMODE_11NG_HT40PLUS = 8, 422 WLAN_PHYMODE_11NG_HT40MINUS = 9, 423 WLAN_PHYMODE_11NG_HT40 = 10, 424 WLAN_PHYMODE_11AC_VHT20 = 11, 425 WLAN_PHYMODE_11AC_VHT20_2G = 12, 426 WLAN_PHYMODE_11AC_VHT40 = 13, 427 WLAN_PHYMODE_11AC_VHT40PLUS_2G = 14, 428 WLAN_PHYMODE_11AC_VHT40MINUS_2G = 15, 429 WLAN_PHYMODE_11AC_VHT40_2G = 16, 430 WLAN_PHYMODE_11AC_VHT80 = 17, 431 WLAN_PHYMODE_11AC_VHT80_2G = 18, 432 WLAN_PHYMODE_11AC_VHT160 = 19, 433 WLAN_PHYMODE_11AC_VHT80_80 = 20, 434 WLAN_PHYMODE_11AXA_HE20 = 21, 435 WLAN_PHYMODE_11AXG_HE20 = 22, 436 WLAN_PHYMODE_11AXA_HE40 = 23, 437 WLAN_PHYMODE_11AXG_HE40PLUS = 24, 438 WLAN_PHYMODE_11AXG_HE40MINUS = 25, 439 WLAN_PHYMODE_11AXG_HE40 = 26, 440 WLAN_PHYMODE_11AXA_HE80 = 27, 441 WLAN_PHYMODE_11AXG_HE80 = 28, 442 WLAN_PHYMODE_11AXA_HE160 = 29, 443 WLAN_PHYMODE_11AXA_HE80_80 = 30, 444 #ifdef WLAN_FEATURE_11BE 445 WLAN_PHYMODE_11BEA_EHT20 = 31, 446 WLAN_PHYMODE_11BEG_EHT20 = 32, 447 WLAN_PHYMODE_11BEA_EHT40 = 33, 448 WLAN_PHYMODE_11BEG_EHT40PLUS = 34, 449 WLAN_PHYMODE_11BEG_EHT40MINUS = 35, 450 WLAN_PHYMODE_11BEG_EHT40 = 36, 451 WLAN_PHYMODE_11BEA_EHT80 = 37, 452 WLAN_PHYMODE_11BEG_EHT80 = 38, 453 WLAN_PHYMODE_11BEA_EHT160 = 39, 454 WLAN_PHYMODE_11BEA_EHT320 = 40, 455 #endif 456 WLAN_PHYMODE_MAX 457 }; 458 459 #ifdef WLAN_FEATURE_11BE 460 #define IS_WLAN_PHYMODE_320MHZ(_mode) ({typeof(_mode) mode = (_mode); \ 461 ((mode) == WLAN_PHYMODE_11BEA_EHT320); }) 462 463 #define IS_WLAN_PHYMODE_160MHZ(_mode) ({typeof(_mode) mode = (_mode); \ 464 ((mode) == WLAN_PHYMODE_11BEA_EHT160) || \ 465 ((mode) == WLAN_PHYMODE_11AC_VHT80_80) || \ 466 ((mode) == WLAN_PHYMODE_11AC_VHT160) || \ 467 ((mode) == WLAN_PHYMODE_11AXA_HE80_80) || \ 468 ((mode) == WLAN_PHYMODE_11AXA_HE160); }) 469 470 #define IS_WLAN_PHYMODE_80MHZ(_mode) ({typeof(_mode) mode = (_mode); \ 471 ((mode) == WLAN_PHYMODE_11BEA_EHT80) || \ 472 ((mode) == WLAN_PHYMODE_11AC_VHT80) || \ 473 ((mode) == WLAN_PHYMODE_11AC_VHT80_2G) || \ 474 ((mode) == WLAN_PHYMODE_11AXA_HE80) || \ 475 ((mode) == WLAN_PHYMODE_11AXG_HE80); }) 476 477 #define IS_WLAN_PHYMODE_40MHZ(_mode) ({typeof(_mode) mode = (_mode); \ 478 ((mode) == WLAN_PHYMODE_11NG_HT40) || \ 479 ((mode) == WLAN_PHYMODE_11NG_HT40PLUS) || \ 480 ((mode) == WLAN_PHYMODE_11NG_HT40MINUS) || \ 481 ((mode) == WLAN_PHYMODE_11NA_HT40) || \ 482 ((mode) == WLAN_PHYMODE_11AC_VHT40) || \ 483 ((mode) == WLAN_PHYMODE_11AC_VHT40_2G) || \ 484 ((mode) == WLAN_PHYMODE_11AC_VHT40PLUS_2G) || \ 485 ((mode) == WLAN_PHYMODE_11AC_VHT40MINUS_2G) || \ 486 ((mode) == WLAN_PHYMODE_11BEA_EHT40) || \ 487 ((mode) == WLAN_PHYMODE_11BEG_EHT40) || \ 488 ((mode) == WLAN_PHYMODE_11BEG_EHT40PLUS) || \ 489 ((mode) == WLAN_PHYMODE_11BEG_EHT40MINUS) || \ 490 ((mode) == WLAN_PHYMODE_11AXA_HE40) || \ 491 ((mode) == WLAN_PHYMODE_11AXG_HE40) || \ 492 ((mode) == WLAN_PHYMODE_11AXG_HE40PLUS) || \ 493 ((mode) == WLAN_PHYMODE_11AXG_HE40MINUS); }) 494 495 #define IS_WLAN_PHYMODE_EHT(_mode) ({typeof(_mode) mode = (_mode); \ 496 ((mode) == WLAN_PHYMODE_11BEA_EHT20) || \ 497 ((mode) == WLAN_PHYMODE_11BEG_EHT20) || \ 498 ((mode) == WLAN_PHYMODE_11BEA_EHT40) || \ 499 ((mode) == WLAN_PHYMODE_11BEG_EHT40) || \ 500 ((mode) == WLAN_PHYMODE_11BEG_EHT40PLUS) || \ 501 ((mode) == WLAN_PHYMODE_11BEG_EHT40MINUS) || \ 502 ((mode) == WLAN_PHYMODE_11BEA_EHT80) || \ 503 ((mode) == WLAN_PHYMODE_11BEG_EHT80) || \ 504 ((mode) == WLAN_PHYMODE_11BEA_EHT160) || \ 505 ((mode) == WLAN_PHYMODE_11BEA_EHT320); }) 506 507 #else 508 #define IS_WLAN_PHYMODE_320MHZ(_mode) 0 509 510 #define IS_WLAN_PHYMODE_160MHZ(_mode) ({typeof(_mode) mode = (_mode); \ 511 ((mode) == WLAN_PHYMODE_11AC_VHT80_80) || \ 512 ((mode) == WLAN_PHYMODE_11AC_VHT160) || \ 513 ((mode) == WLAN_PHYMODE_11AXA_HE80_80) || \ 514 ((mode) == WLAN_PHYMODE_11AXA_HE160); }) 515 516 #define IS_WLAN_PHYMODE_80MHZ(_mode) ({typeof(_mode) mode = (_mode); \ 517 ((mode) == WLAN_PHYMODE_11AC_VHT80) || \ 518 ((mode) == WLAN_PHYMODE_11AC_VHT80_2G) || \ 519 ((mode) == WLAN_PHYMODE_11AXA_HE80) || \ 520 ((mode) == WLAN_PHYMODE_11AXG_HE80); }) 521 522 #define IS_WLAN_PHYMODE_40MHZ(_mode) ({typeof(_mode) mode = (_mode); \ 523 ((mode) == WLAN_PHYMODE_11NG_HT40) || \ 524 ((mode) == WLAN_PHYMODE_11NG_HT40PLUS) || \ 525 ((mode) == WLAN_PHYMODE_11NG_HT40MINUS) || \ 526 ((mode) == WLAN_PHYMODE_11NA_HT40) || \ 527 ((mode) == WLAN_PHYMODE_11AC_VHT40) || \ 528 ((mode) == WLAN_PHYMODE_11AC_VHT40_2G) || \ 529 ((mode) == WLAN_PHYMODE_11AC_VHT40PLUS_2G) || \ 530 ((mode) == WLAN_PHYMODE_11AC_VHT40MINUS_2G) || \ 531 ((mode) == WLAN_PHYMODE_11AXA_HE40) || \ 532 ((mode) == WLAN_PHYMODE_11AXG_HE40) || \ 533 ((mode) == WLAN_PHYMODE_11AXG_HE40PLUS) || \ 534 ((mode) == WLAN_PHYMODE_11AXG_HE40MINUS); }) 535 #endif 536 537 #define IS_WLAN_PHYMODE_HT(_mode) ({typeof(_mode) mode = (_mode); \ 538 ((mode) == WLAN_PHYMODE_11NA_HT20) || \ 539 ((mode) == WLAN_PHYMODE_11NG_HT20) || \ 540 ((mode) == WLAN_PHYMODE_11NA_HT40) || \ 541 ((mode) == WLAN_PHYMODE_11NG_HT40PLUS) || \ 542 ((mode) == WLAN_PHYMODE_11NG_HT40MINUS) || \ 543 ((mode) == WLAN_PHYMODE_11NG_HT40); }) 544 545 #define IS_WLAN_PHYMODE_VHT(_mode) ({typeof(_mode) mode = (_mode); \ 546 ((mode) == WLAN_PHYMODE_11AC_VHT20) || \ 547 ((mode) == WLAN_PHYMODE_11AC_VHT20_2G) || \ 548 ((mode) == WLAN_PHYMODE_11AC_VHT40) || \ 549 ((mode) == WLAN_PHYMODE_11AC_VHT40PLUS_2G) || \ 550 ((mode) == WLAN_PHYMODE_11AC_VHT40MINUS_2G) || \ 551 ((mode) == WLAN_PHYMODE_11AC_VHT40_2G) || \ 552 ((mode) == WLAN_PHYMODE_11AC_VHT80) || \ 553 ((mode) == WLAN_PHYMODE_11AC_VHT80_2G) || \ 554 ((mode) == WLAN_PHYMODE_11AC_VHT160) || \ 555 ((mode) == WLAN_PHYMODE_11AC_VHT80_80); }) 556 557 #define IS_WLAN_PHYMODE_HE(_mode) ({typeof(_mode) mode = (_mode); \ 558 ((mode) == WLAN_PHYMODE_11AXA_HE20) || \ 559 ((mode) == WLAN_PHYMODE_11AXG_HE20) || \ 560 ((mode) == WLAN_PHYMODE_11AXA_HE40) || \ 561 ((mode) == WLAN_PHYMODE_11AXG_HE40) || \ 562 ((mode) == WLAN_PHYMODE_11AXG_HE40PLUS) || \ 563 ((mode) == WLAN_PHYMODE_11AXG_HE40MINUS) || \ 564 ((mode) == WLAN_PHYMODE_11AXA_HE80) || \ 565 ((mode) == WLAN_PHYMODE_11AXG_HE80) || \ 566 ((mode) == WLAN_PHYMODE_11AXA_HE160) || \ 567 ((mode) == WLAN_PHYMODE_11AXA_HE80_80); }) 568 569 /** 570 * enum phy_ch_width - channel width 571 * @CH_WIDTH_20MHZ: 20 mhz width 572 * @CH_WIDTH_40MHZ: 40 mhz width 573 * @CH_WIDTH_80MHZ: 80 mhz width 574 * @CH_WIDTH_160MHZ: 160 mhz width 575 * @CH_WIDTH_80P80HZ: 80+80 mhz width 576 * @CH_WIDTH_5MHZ: 5 mhz width 577 * @CH_WIDTH_10MHZ: 10 mhz width 578 * @CH_WIDTH_320MHZ: 320 mhz width 579 * @CH_WIDTH_INVALID: invalid width 580 * @CH_WIDTH_MAX: max possible width 581 */ 582 enum phy_ch_width { 583 CH_WIDTH_20MHZ = 0, 584 CH_WIDTH_40MHZ, 585 CH_WIDTH_80MHZ, 586 CH_WIDTH_160MHZ, 587 CH_WIDTH_80P80MHZ, 588 CH_WIDTH_5MHZ, 589 CH_WIDTH_10MHZ, 590 #ifdef WLAN_FEATURE_11BE 591 CH_WIDTH_320MHZ, 592 #endif 593 CH_WIDTH_INVALID, 594 CH_WIDTH_MAX 595 }; 596 597 /** 598 * enum wifi_traffic_ac - access category type 599 * @WIFI_AC_VO: Voice AC 600 * @WIFI_AC_VI: Video AC 601 * @WIFI_AC_BE: Best effort AC 602 * @WIFI_AC_BK: Background AC 603 * @WIFI_AC_MAX: MAX access category 604 */ 605 enum wifi_traffic_ac { 606 WIFI_AC_VO = 0, 607 WIFI_AC_VI = 1, 608 WIFI_AC_BE = 2, 609 WIFI_AC_BK = 3, 610 WIFI_AC_MAX = 4, 611 }; 612 613 /** 614 * enum wlan_peer_type - peer type 615 * @WLAN_PEER_SELF: for AP mode, SELF PEER or AP PEER are same 616 * @WLAN_PEER_AP: BSS peer for STA mode, Self peer for AP mode 617 * @WLAN_PEER_P2P_GO: BSS peer for P2P CLI mode, Self peer for P2P GO mode 618 * @WLAN_PEER_STA: Self Peer for STA mode, STA peer for AP mode 619 * @WLAN_PEER_P2P_CLI: Self peer for P2P CLI mode, P2P CLI peer for P2P GO mode 620 * @WLAN_PEER_TDLS: TDLS Peer 621 * @WLAN_PEER_NAWDS: NAWDS Peer 622 * @WLAN_PEER_STA_TEMP: STA Peer Temp (its host only node) 623 * @WLAN_PEER_IBSS: IBSS Peer 624 * @WLAN_PEER_NDP: NDP Peer 625 * @WLAN_PEER_MLO_TEMP: MLO Peer Temp (host only node) 626 * @WLAN_PEER_RTT_PASN: Ranging PASN peer 627 */ 628 enum wlan_peer_type { 629 WLAN_PEER_SELF = 1, 630 WLAN_PEER_AP = 2, 631 WLAN_PEER_P2P_GO = 3, 632 WLAN_PEER_STA = 4, 633 WLAN_PEER_P2P_CLI = 5, 634 WLAN_PEER_TDLS = 6, 635 WLAN_PEER_NAWDS = 7, 636 WLAN_PEER_STA_TEMP = 8, 637 WLAN_PEER_IBSS = 9, 638 WLAN_PEER_NDP = 10, 639 WLAN_PEER_MLO_TEMP = 11, 640 WLAN_PEER_RTT_PASN = 12, 641 }; 642 643 /** 644 * enum wlan_band - specifies operating channel band 645 * @WLAN_BAND_ALL: Any band 646 * @WLAN_BAND_2_4_GHZ: 2.4 GHz band 647 * @WLAN_BAND_5_GHZ: 5 GHz band 648 * @WLAN_BAND_4_9_GHZ: 4.9 GHz band 649 * @WLAN_BAND_NUM_MAX: Max num band 650 */ 651 enum wlan_band { 652 WLAN_BAND_ALL, 653 WLAN_BAND_2_4_GHZ, 654 WLAN_BAND_5_GHZ, 655 WLAN_BAND_4_9_GHZ, 656 WLAN_BAND_NUM_MAX, 657 }; 658 659 /** 660 * enum wlan_bss_type - type of network 661 * @WLAN_TYPE_ANY: Default value 662 * @WLAN_TYPE_BSS: Type BSS 663 * @WLAN_TYPE_IBSS: Type IBSS 664 */ 665 enum wlan_bss_type { 666 WLAN_TYPE_ANY, 667 WLAN_TYPE_BSS, 668 WLAN_TYPE_IBSS, 669 }; 670 671 /** 672 * enum wlan_pmf_cap: pmf capability 673 * @PMF_DISABLED: PMF is disabled 674 * @PMF_CAPABLE: PMF is supported 675 * @PMF_REQUIRED: PMF is mandatory 676 */ 677 enum wlan_pmf_cap { 678 WLAN_PMF_DISABLED, 679 WLAN_PMF_CAPABLE, 680 WLAN_PMF_REQUIRED, 681 }; 682 683 /** 684 * struct wlan_ssid - SSID info 685 * @length: ssid length of bss excluding null 686 * @ssid: ssid character array potentially non null terminated 687 */ 688 struct wlan_ssid { 689 uint8_t length; 690 uint8_t ssid[WLAN_SSID_MAX_LEN]; 691 }; 692 693 /* Util API to copy the MAC address */ 694 #define WLAN_ADDR_COPY(dst, src) qdf_mem_copy(dst, src, QDF_MAC_ADDR_SIZE) 695 /* Util API to compare the MAC address */ 696 #define WLAN_ADDR_EQ(a1, a2) qdf_mem_cmp(a1, a2, QDF_MAC_ADDR_SIZE) 697 698 #define PSOC_SERVICE_BM_SIZE ((128 + sizeof(uint32_t) - 1) / sizeof(uint32_t)) 699 #define PSOC_HOST_MAX_NUM_SS (8) 700 #define PSOC_HOST_MAX_PHY_SIZE (3) 701 #define PSOC_HOST_MAX_MAC_SIZE (2) 702 #define PSOC_MAX_HW_MODE (3) 703 #define PSOC_MAX_MAC_PHY_CAP (5) 704 #define PSOC_MAX_PHY_REG_CAP (3) 705 #define PSOC_MAX_CHAINMASK_TABLES (5) 706 707 #ifdef WLAN_FEATURE_11BE 708 #define PSOC_HOST_MAX_EHT_MAC_SIZE 1 709 #define PSOC_HOST_MAX_EHT_PHY_SIZE 3 710 #define PSOC_HOST_EHT_MCS_NSS_MAP_2G_SIZE 2 711 #define PSOC_HOST_EHT_MCS_NSS_MAP_5G_SIZE 4 712 #endif 713 714 #endif /* _WLAN_OBJMGR_CMN_H_*/ 715