13fb28ae7STim Collier /* SPDX-License-Identifier: (GPL-2.0 OR MPL-1.1) */ 20ae952e3SSergio Paracuellos /* 3*8ffd91d9SAldas Taraškevičius * 400b3ed16SGreg Kroah-Hartman * 500b3ed16SGreg Kroah-Hartman * Macros, constants, types, and funcs for p80211 data types 600b3ed16SGreg Kroah-Hartman * 700b3ed16SGreg Kroah-Hartman * Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved. 800b3ed16SGreg Kroah-Hartman * -------------------------------------------------------------------- 900b3ed16SGreg Kroah-Hartman * 1000b3ed16SGreg Kroah-Hartman * linux-wlan 1100b3ed16SGreg Kroah-Hartman * 1200b3ed16SGreg Kroah-Hartman * -------------------------------------------------------------------- 1300b3ed16SGreg Kroah-Hartman * 1400b3ed16SGreg Kroah-Hartman * Inquiries regarding the linux-wlan Open Source project can be 1500b3ed16SGreg Kroah-Hartman * made directly to: 1600b3ed16SGreg Kroah-Hartman * 1700b3ed16SGreg Kroah-Hartman * AbsoluteValue Systems Inc. 1800b3ed16SGreg Kroah-Hartman * info@linux-wlan.com 1900b3ed16SGreg Kroah-Hartman * http://www.linux-wlan.com 2000b3ed16SGreg Kroah-Hartman * 2100b3ed16SGreg Kroah-Hartman * -------------------------------------------------------------------- 2200b3ed16SGreg Kroah-Hartman * 2300b3ed16SGreg Kroah-Hartman * Portions of the development of this software were funded by 2400b3ed16SGreg Kroah-Hartman * Intersil Corporation as part of PRISM(R) chipset product development. 2500b3ed16SGreg Kroah-Hartman * 2600b3ed16SGreg Kroah-Hartman * -------------------------------------------------------------------- 2700b3ed16SGreg Kroah-Hartman * 2800b3ed16SGreg Kroah-Hartman * This file declares some of the constants and types used in various 2900b3ed16SGreg Kroah-Hartman * parts of the linux-wlan system. 3000b3ed16SGreg Kroah-Hartman * 3100b3ed16SGreg Kroah-Hartman * Notes: 3200b3ed16SGreg Kroah-Hartman * - Constant values are always in HOST byte order. 3300b3ed16SGreg Kroah-Hartman * 3400b3ed16SGreg Kroah-Hartman * All functions and statics declared here are implemented in p80211types.c 3500b3ed16SGreg Kroah-Hartman * -------------------------------------------------------------------- 3600b3ed16SGreg Kroah-Hartman */ 3700b3ed16SGreg Kroah-Hartman 3800b3ed16SGreg Kroah-Hartman #ifndef _P80211TYPES_H 3900b3ed16SGreg Kroah-Hartman #define _P80211TYPES_H 4000b3ed16SGreg Kroah-Hartman 4100b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 4200b3ed16SGreg Kroah-Hartman /* The following constants are indexes into the Mib Category List */ 4300b3ed16SGreg Kroah-Hartman /* and the Message Category List */ 4400b3ed16SGreg Kroah-Hartman 4500b3ed16SGreg Kroah-Hartman /* Mib Category List */ 4600b3ed16SGreg Kroah-Hartman #define P80211_MIB_CAT_DOT11SMT 1 4700b3ed16SGreg Kroah-Hartman #define P80211_MIB_CAT_DOT11MAC 2 4800b3ed16SGreg Kroah-Hartman #define P80211_MIB_CAT_DOT11PHY 3 4900b3ed16SGreg Kroah-Hartman 5000b3ed16SGreg Kroah-Hartman #define P80211SEC_DOT11SMT P80211_MIB_CAT_DOT11SMT 5100b3ed16SGreg Kroah-Hartman #define P80211SEC_DOT11MAC P80211_MIB_CAT_DOT11MAC 5200b3ed16SGreg Kroah-Hartman #define P80211SEC_DOT11PHY P80211_MIB_CAT_DOT11PHY 5300b3ed16SGreg Kroah-Hartman 5400b3ed16SGreg Kroah-Hartman /* Message Category List */ 5500b3ed16SGreg Kroah-Hartman #define P80211_MSG_CAT_DOT11REQ 1 5600b3ed16SGreg Kroah-Hartman #define P80211_MSG_CAT_DOT11IND 2 5700b3ed16SGreg Kroah-Hartman 5800b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 5900b3ed16SGreg Kroah-Hartman /* p80211 enumeration constants. The value to text mappings for */ 6000b3ed16SGreg Kroah-Hartman /* these is in p80211types.c. These defines were generated */ 6100b3ed16SGreg Kroah-Hartman /* from the mappings. */ 6200b3ed16SGreg Kroah-Hartman 6300b3ed16SGreg Kroah-Hartman /* error codes for lookups */ 6400b3ed16SGreg Kroah-Hartman 6500b3ed16SGreg Kroah-Hartman #define P80211ENUM_truth_false 0 6600b3ed16SGreg Kroah-Hartman #define P80211ENUM_truth_true 1 6700b3ed16SGreg Kroah-Hartman #define P80211ENUM_ifstate_disable 0 6800b3ed16SGreg Kroah-Hartman #define P80211ENUM_ifstate_fwload 1 6900b3ed16SGreg Kroah-Hartman #define P80211ENUM_ifstate_enable 2 7000b3ed16SGreg Kroah-Hartman #define P80211ENUM_bsstype_infrastructure 1 7100b3ed16SGreg Kroah-Hartman #define P80211ENUM_bsstype_independent 2 7200b3ed16SGreg Kroah-Hartman #define P80211ENUM_bsstype_any 3 7300b3ed16SGreg Kroah-Hartman #define P80211ENUM_authalg_opensystem 1 7400b3ed16SGreg Kroah-Hartman #define P80211ENUM_authalg_sharedkey 2 7500b3ed16SGreg Kroah-Hartman #define P80211ENUM_scantype_active 1 7600b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_success 1 7700b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_invalid_parameters 2 7800b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_not_supported 3 7900b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_refused 6 8000b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_cant_set_readonly_mib 10 8100b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_implementation_failure 11 8200b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_cant_get_writeonly_mib 12 8300b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_successful 0 8400b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_unspec_failure 1 8500b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_ap_full 17 8600b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_data_ok 0 8700b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_no_value 1 8800b3ed16SGreg Kroah-Hartman 8900b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 9000b3ed16SGreg Kroah-Hartman /* p80211 max length constants for the different pascal strings. */ 9100b3ed16SGreg Kroah-Hartman 9200b3ed16SGreg Kroah-Hartman #define MAXLEN_PSTR6 (6) /* pascal array of 6 bytes */ 9300b3ed16SGreg Kroah-Hartman #define MAXLEN_PSTR14 (14) /* pascal array of 14 bytes */ 9400b3ed16SGreg Kroah-Hartman #define MAXLEN_PSTR32 (32) /* pascal array of 32 bytes */ 9500b3ed16SGreg Kroah-Hartman #define MAXLEN_PSTR255 (255) /* pascal array of 255 bytes */ 9600b3ed16SGreg Kroah-Hartman #define MAXLEN_MIBATTRIBUTE (392) /* maximum mibattribute */ 9700b3ed16SGreg Kroah-Hartman /* where the size of the DATA itself */ 9800b3ed16SGreg Kroah-Hartman /* is a DID-LEN-DATA triple */ 9900b3ed16SGreg Kroah-Hartman /* with a max size of 4+4+384 */ 10000b3ed16SGreg Kroah-Hartman 10100b3ed16SGreg Kroah-Hartman /*---------------------------------------------------------------- 10200b3ed16SGreg Kroah-Hartman * The following constants and macros are used to construct and 10300b3ed16SGreg Kroah-Hartman * deconstruct the Data ID codes. The coding is as follows: 10400b3ed16SGreg Kroah-Hartman * 10500b3ed16SGreg Kroah-Hartman * ...rwtnnnnnnnniiiiiiggggggssssss s - Section 10600b3ed16SGreg Kroah-Hartman * g - Group 10700b3ed16SGreg Kroah-Hartman * i - Item 10800b3ed16SGreg Kroah-Hartman * n - Index 10900b3ed16SGreg Kroah-Hartman * t - Table flag 11000b3ed16SGreg Kroah-Hartman * w - Write flag 11100b3ed16SGreg Kroah-Hartman * r - Read flag 11200b3ed16SGreg Kroah-Hartman * . - Unused 11300b3ed16SGreg Kroah-Hartman */ 11400b3ed16SGreg Kroah-Hartman 11500b3ed16SGreg Kroah-Hartman #define P80211DID_LSB_SECTION (0) 11600b3ed16SGreg Kroah-Hartman #define P80211DID_LSB_GROUP (6) 11700b3ed16SGreg Kroah-Hartman #define P80211DID_LSB_ITEM (12) 11800b3ed16SGreg Kroah-Hartman #define P80211DID_LSB_INDEX (18) 11900b3ed16SGreg Kroah-Hartman #define P80211DID_LSB_ISTABLE (26) 12000b3ed16SGreg Kroah-Hartman #define P80211DID_LSB_ACCESS (27) 12100b3ed16SGreg Kroah-Hartman 12200b3ed16SGreg Kroah-Hartman #define P80211DID_MASK_SECTION (0x0000003fUL) 12300b3ed16SGreg Kroah-Hartman #define P80211DID_MASK_GROUP (0x0000003fUL) 12400b3ed16SGreg Kroah-Hartman #define P80211DID_MASK_ITEM (0x0000003fUL) 12500b3ed16SGreg Kroah-Hartman #define P80211DID_MASK_INDEX (0x000000ffUL) 12600b3ed16SGreg Kroah-Hartman #define P80211DID_MASK_ISTABLE (0x00000001UL) 12700b3ed16SGreg Kroah-Hartman #define P80211DID_MASK_ACCESS (0x00000003UL) 12800b3ed16SGreg Kroah-Hartman 129aaad4303SSolomon Peachy #define P80211DID_MK(a, m, l) ((((u32)(a)) & (m)) << (l)) 13000b3ed16SGreg Kroah-Hartman 13100b3ed16SGreg Kroah-Hartman #define P80211DID_MKSECTION(a) P80211DID_MK(a, \ 13200b3ed16SGreg Kroah-Hartman P80211DID_MASK_SECTION, \ 13300b3ed16SGreg Kroah-Hartman P80211DID_LSB_SECTION) 13400b3ed16SGreg Kroah-Hartman #define P80211DID_MKGROUP(a) P80211DID_MK(a, \ 13500b3ed16SGreg Kroah-Hartman P80211DID_MASK_GROUP, \ 13600b3ed16SGreg Kroah-Hartman P80211DID_LSB_GROUP) 13700b3ed16SGreg Kroah-Hartman #define P80211DID_MKITEM(a) P80211DID_MK(a, \ 13800b3ed16SGreg Kroah-Hartman P80211DID_MASK_ITEM, \ 13900b3ed16SGreg Kroah-Hartman P80211DID_LSB_ITEM) 14000b3ed16SGreg Kroah-Hartman #define P80211DID_MKINDEX(a) P80211DID_MK(a, \ 14100b3ed16SGreg Kroah-Hartman P80211DID_MASK_INDEX, \ 14200b3ed16SGreg Kroah-Hartman P80211DID_LSB_INDEX) 14300b3ed16SGreg Kroah-Hartman #define P80211DID_MKISTABLE(a) P80211DID_MK(a, \ 14400b3ed16SGreg Kroah-Hartman P80211DID_MASK_ISTABLE, \ 14500b3ed16SGreg Kroah-Hartman P80211DID_LSB_ISTABLE) 14600b3ed16SGreg Kroah-Hartman 14700b3ed16SGreg Kroah-Hartman #define P80211DID_MKID(s, g, i, n, t, a) (P80211DID_MKSECTION(s) | \ 14800b3ed16SGreg Kroah-Hartman P80211DID_MKGROUP(g) | \ 14900b3ed16SGreg Kroah-Hartman P80211DID_MKITEM(i) | \ 15000b3ed16SGreg Kroah-Hartman P80211DID_MKINDEX(n) | \ 15100b3ed16SGreg Kroah-Hartman P80211DID_MKISTABLE(t) | \ 15200b3ed16SGreg Kroah-Hartman (a)) 15300b3ed16SGreg Kroah-Hartman 154aaad4303SSolomon Peachy #define P80211DID_GET(a, m, l) ((((u32)(a)) >> (l)) & (m)) 15500b3ed16SGreg Kroah-Hartman 15600b3ed16SGreg Kroah-Hartman #define P80211DID_SECTION(a) P80211DID_GET(a, \ 15700b3ed16SGreg Kroah-Hartman P80211DID_MASK_SECTION, \ 15800b3ed16SGreg Kroah-Hartman P80211DID_LSB_SECTION) 15900b3ed16SGreg Kroah-Hartman #define P80211DID_GROUP(a) P80211DID_GET(a, \ 16000b3ed16SGreg Kroah-Hartman P80211DID_MASK_GROUP, \ 16100b3ed16SGreg Kroah-Hartman P80211DID_LSB_GROUP) 16200b3ed16SGreg Kroah-Hartman #define P80211DID_ITEM(a) P80211DID_GET(a, \ 16300b3ed16SGreg Kroah-Hartman P80211DID_MASK_ITEM, \ 16400b3ed16SGreg Kroah-Hartman P80211DID_LSB_ITEM) 16500b3ed16SGreg Kroah-Hartman #define P80211DID_INDEX(a) P80211DID_GET(a, \ 16600b3ed16SGreg Kroah-Hartman P80211DID_MASK_INDEX, \ 16700b3ed16SGreg Kroah-Hartman P80211DID_LSB_INDEX) 16800b3ed16SGreg Kroah-Hartman #define P80211DID_ISTABLE(a) P80211DID_GET(a, \ 16900b3ed16SGreg Kroah-Hartman P80211DID_MASK_ISTABLE, \ 17000b3ed16SGreg Kroah-Hartman P80211DID_LSB_ISTABLE) 17100b3ed16SGreg Kroah-Hartman #define P80211DID_ACCESS(a) P80211DID_GET(a, \ 17200b3ed16SGreg Kroah-Hartman P80211DID_MASK_ACCESS, \ 17300b3ed16SGreg Kroah-Hartman P80211DID_LSB_ACCESS) 17400b3ed16SGreg Kroah-Hartman 17500b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 17600b3ed16SGreg Kroah-Hartman /* The following structure types are used to store data items in */ 17700b3ed16SGreg Kroah-Hartman /* messages. */ 17800b3ed16SGreg Kroah-Hartman 17900b3ed16SGreg Kroah-Hartman /* Template pascal string */ 180c529e31fSSergio Paracuellos struct p80211pstr { 181aaad4303SSolomon Peachy u8 len; 182c529e31fSSergio Paracuellos } __packed; 18300b3ed16SGreg Kroah-Hartman 1843fd1e3fcSSergio Paracuellos struct p80211pstrd { 185aaad4303SSolomon Peachy u8 len; 1865979afa2SGustavo A. R. Silva u8 data[]; 1873fd1e3fcSSergio Paracuellos } __packed; 18800b3ed16SGreg Kroah-Hartman 18900b3ed16SGreg Kroah-Hartman /* Maximum pascal string */ 19094a29147SSergio Paracuellos struct p80211pstr255 { 191aaad4303SSolomon Peachy u8 len; 192aaad4303SSolomon Peachy u8 data[MAXLEN_PSTR255]; 19394a29147SSergio Paracuellos } __packed; 19400b3ed16SGreg Kroah-Hartman 19500b3ed16SGreg Kroah-Hartman /* pascal string for macaddress and bssid */ 1962816c008SSergio Paracuellos struct p80211pstr6 { 197aaad4303SSolomon Peachy u8 len; 198aaad4303SSolomon Peachy u8 data[MAXLEN_PSTR6]; 1992816c008SSergio Paracuellos } __packed; 20000b3ed16SGreg Kroah-Hartman 20100b3ed16SGreg Kroah-Hartman /* pascal string for channel list */ 2025d005584SSergio Paracuellos struct p80211pstr14 { 203aaad4303SSolomon Peachy u8 len; 204aaad4303SSolomon Peachy u8 data[MAXLEN_PSTR14]; 2055d005584SSergio Paracuellos } __packed; 20600b3ed16SGreg Kroah-Hartman 20700b3ed16SGreg Kroah-Hartman /* pascal string for ssid */ 208758f140dSSergio Paracuellos struct p80211pstr32 { 209aaad4303SSolomon Peachy u8 len; 210aaad4303SSolomon Peachy u8 data[MAXLEN_PSTR32]; 211758f140dSSergio Paracuellos } __packed; 21200b3ed16SGreg Kroah-Hartman 21300b3ed16SGreg Kroah-Hartman /* prototype template */ 214cf796937SSergio Paracuellos struct p80211item { 215aaad4303SSolomon Peachy u32 did; 216aaad4303SSolomon Peachy u16 status; 217aaad4303SSolomon Peachy u16 len; 218cf796937SSergio Paracuellos } __packed; 21900b3ed16SGreg Kroah-Hartman 22000b3ed16SGreg Kroah-Hartman /* prototype template w/ data item */ 221ac033ec9SSergio Paracuellos struct p80211itemd { 222aaad4303SSolomon Peachy u32 did; 223aaad4303SSolomon Peachy u16 status; 224aaad4303SSolomon Peachy u16 len; 2255979afa2SGustavo A. R. Silva u8 data[]; 226ac033ec9SSergio Paracuellos } __packed; 22700b3ed16SGreg Kroah-Hartman 228aaad4303SSolomon Peachy /* message data item for int, BOUNDEDINT, ENUMINT */ 229b26b2325SSergio Paracuellos struct p80211item_uint32 { 230aaad4303SSolomon Peachy u32 did; 231aaad4303SSolomon Peachy u16 status; 232aaad4303SSolomon Peachy u16 len; 233aaad4303SSolomon Peachy u32 data; 234b26b2325SSergio Paracuellos } __packed; 23500b3ed16SGreg Kroah-Hartman 23600b3ed16SGreg Kroah-Hartman /* message data item for OCTETSTR, DISPLAYSTR */ 23734aae059SSergio Paracuellos struct p80211item_pstr6 { 238aaad4303SSolomon Peachy u32 did; 239aaad4303SSolomon Peachy u16 status; 240aaad4303SSolomon Peachy u16 len; 2412816c008SSergio Paracuellos struct p80211pstr6 data; 24234aae059SSergio Paracuellos } __packed; 24300b3ed16SGreg Kroah-Hartman 24400b3ed16SGreg Kroah-Hartman /* message data item for OCTETSTR, DISPLAYSTR */ 245f055b211SSergio Paracuellos struct p80211item_pstr14 { 246aaad4303SSolomon Peachy u32 did; 247aaad4303SSolomon Peachy u16 status; 248aaad4303SSolomon Peachy u16 len; 2495d005584SSergio Paracuellos struct p80211pstr14 data; 250f055b211SSergio Paracuellos } __packed; 25100b3ed16SGreg Kroah-Hartman 25200b3ed16SGreg Kroah-Hartman /* message data item for OCTETSTR, DISPLAYSTR */ 2536a50b5afSSergio Paracuellos struct p80211item_pstr32 { 254aaad4303SSolomon Peachy u32 did; 255aaad4303SSolomon Peachy u16 status; 256aaad4303SSolomon Peachy u16 len; 257758f140dSSergio Paracuellos struct p80211pstr32 data; 2586a50b5afSSergio Paracuellos } __packed; 25900b3ed16SGreg Kroah-Hartman 26000b3ed16SGreg Kroah-Hartman /* message data item for OCTETSTR, DISPLAYSTR */ 2613636ab01SSergio Paracuellos struct p80211item_pstr255 { 262aaad4303SSolomon Peachy u32 did; 263aaad4303SSolomon Peachy u16 status; 264aaad4303SSolomon Peachy u16 len; 26594a29147SSergio Paracuellos struct p80211pstr255 data; 2663636ab01SSergio Paracuellos } __packed; 26700b3ed16SGreg Kroah-Hartman 26800b3ed16SGreg Kroah-Hartman /* message data item for UNK 392, namely mib items */ 26937e48668SSergio Paracuellos struct p80211item_unk392 { 270aaad4303SSolomon Peachy u32 did; 271aaad4303SSolomon Peachy u16 status; 272aaad4303SSolomon Peachy u16 len; 273aaad4303SSolomon Peachy u8 data[MAXLEN_MIBATTRIBUTE]; 27437e48668SSergio Paracuellos } __packed; 27500b3ed16SGreg Kroah-Hartman 27600b3ed16SGreg Kroah-Hartman /* message data item for UNK 1025, namely p2 pdas */ 2771ad26f70SSergio Paracuellos struct p80211item_unk1024 { 278aaad4303SSolomon Peachy u32 did; 279aaad4303SSolomon Peachy u16 status; 280aaad4303SSolomon Peachy u16 len; 281aaad4303SSolomon Peachy u8 data[1024]; 2821ad26f70SSergio Paracuellos } __packed; 28300b3ed16SGreg Kroah-Hartman 28400b3ed16SGreg Kroah-Hartman /* message data item for UNK 4096, namely p2 download chunks */ 285f8b8f64fSSergio Paracuellos struct p80211item_unk4096 { 286aaad4303SSolomon Peachy u32 did; 287aaad4303SSolomon Peachy u16 status; 288aaad4303SSolomon Peachy u16 len; 289aaad4303SSolomon Peachy u8 data[4096]; 290f8b8f64fSSergio Paracuellos } __packed; 29100b3ed16SGreg Kroah-Hartman 29200b3ed16SGreg Kroah-Hartman #endif /* _P80211TYPES_H */ 293