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