2005-04-17 02:20:36 +04:00
/*
* Copyright ( C ) 2003 Herbert Valerio Riedel < hvr @ gnu . org >
* Copyright ( C ) 2004 Luis R . Rodriguez < mcgrof @ ruslug . rutgers . edu >
* Copyright ( C ) 2004 Aurelien Alleaume < slts @ free . fr >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*
*/
# if !defined(_ISL_OID_H)
# define _ISL_OID_H
2006-10-08 08:38:15 +04:00
/*
2005-04-17 02:20:36 +04:00
* MIB related constant and structure definitions for communicating
* with the device firmware
*/
struct obj_ssid {
u8 length ;
char octets [ 33 ] ;
2010-06-02 22:10:09 +04:00
} __packed ;
2005-04-17 02:20:36 +04:00
struct obj_key {
u8 type ; /* dot11_priv_t */
u8 length ;
char key [ 32 ] ;
2010-06-02 22:10:09 +04:00
} __packed ;
2005-04-17 02:20:36 +04:00
struct obj_mlme {
u8 address [ 6 ] ;
u16 id ;
u16 state ;
u16 code ;
2010-06-02 22:10:09 +04:00
} __packed ;
2005-04-17 02:20:36 +04:00
struct obj_mlmeex {
u8 address [ 6 ] ;
u16 id ;
u16 state ;
u16 code ;
u16 size ;
u8 data [ 0 ] ;
2010-06-02 22:10:09 +04:00
} __packed ;
2005-04-17 02:20:36 +04:00
struct obj_buffer {
u32 size ;
u32 addr ; /* 32bit bus address */
2010-06-02 22:10:09 +04:00
} __packed ;
2005-04-17 02:20:36 +04:00
struct obj_bss {
u8 address [ 6 ] ;
int : 16 ; /* padding */
char state ;
char reserved ;
short age ;
char quality ;
char rssi ;
struct obj_ssid ssid ;
short channel ;
char beacon_period ;
char dtim_period ;
short capinfo ;
short rates ;
short basic_rates ;
int : 16 ; /* padding */
2010-06-02 22:10:09 +04:00
} __packed ;
2005-04-17 02:20:36 +04:00
struct obj_bsslist {
u32 nr ;
struct obj_bss bsslist [ 0 ] ;
2010-06-02 22:10:09 +04:00
} __packed ;
2005-04-17 02:20:36 +04:00
struct obj_frequencies {
u16 nr ;
u16 mhz [ 0 ] ;
2010-06-02 22:10:09 +04:00
} __packed ;
2005-04-17 02:20:36 +04:00
struct obj_attachment {
char type ;
char reserved ;
short id ;
short size ;
char data [ 0 ] ;
2010-06-02 22:10:09 +04:00
} __packed ;
2005-04-17 02:20:36 +04:00
2006-10-08 08:38:15 +04:00
/*
2005-04-17 02:20:36 +04:00
* in case everything ' s ok , the inlined function below will be
* optimized away by the compiler . . .
*/
static inline void
__bug_on_wrong_struct_sizes ( void )
{
2006-10-11 01:45:47 +04:00
BUILD_BUG_ON ( sizeof ( struct obj_ssid ) ! = 34 ) ;
BUILD_BUG_ON ( sizeof ( struct obj_key ) ! = 34 ) ;
BUILD_BUG_ON ( sizeof ( struct obj_mlme ) ! = 12 ) ;
BUILD_BUG_ON ( sizeof ( struct obj_mlmeex ) ! = 14 ) ;
BUILD_BUG_ON ( sizeof ( struct obj_buffer ) ! = 8 ) ;
BUILD_BUG_ON ( sizeof ( struct obj_bss ) ! = 60 ) ;
BUILD_BUG_ON ( sizeof ( struct obj_bsslist ) ! = 4 ) ;
BUILD_BUG_ON ( sizeof ( struct obj_frequencies ) ! = 2 ) ;
2005-04-17 02:20:36 +04:00
}
enum dot11_state_t {
DOT11_STATE_NONE = 0 ,
DOT11_STATE_AUTHING = 1 ,
DOT11_STATE_AUTH = 2 ,
DOT11_STATE_ASSOCING = 3 ,
DOT11_STATE_ASSOC = 5 ,
DOT11_STATE_IBSS = 6 ,
DOT11_STATE_WDS = 7
} ;
enum dot11_bsstype_t {
DOT11_BSSTYPE_NONE = 0 ,
DOT11_BSSTYPE_INFRA = 1 ,
DOT11_BSSTYPE_IBSS = 2 ,
DOT11_BSSTYPE_ANY = 3
} ;
enum dot11_auth_t {
DOT11_AUTH_NONE = 0 ,
DOT11_AUTH_OS = 1 ,
DOT11_AUTH_SK = 2 ,
DOT11_AUTH_BOTH = 3
} ;
enum dot11_mlme_t {
DOT11_MLME_AUTO = 0 ,
DOT11_MLME_INTERMEDIATE = 1 ,
DOT11_MLME_EXTENDED = 2
} ;
enum dot11_priv_t {
DOT11_PRIV_WEP = 0 ,
DOT11_PRIV_TKIP = 1
} ;
/* Prism "Nitro" / Frameburst / "Packet Frame Grouping"
* Value is in microseconds . Represents the # microseconds
2006-10-08 08:38:15 +04:00
* the firmware will take to group frames before sending out then out
2005-04-17 02:20:36 +04:00
* together with a CSMA contention . Without this all frames are
2006-10-08 08:38:15 +04:00
* sent with a CSMA contention .
* Bibliography :
2005-04-17 02:20:36 +04:00
* http : //www.hpl.hp.com/personal/Jean_Tourrilhes/Papers/Packet.Frame.Grouping.html
*/
2006-10-08 08:38:15 +04:00
enum dot11_maxframeburst_t {
2005-04-17 02:20:36 +04:00
/* Values for DOT11_OID_MAXFRAMEBURST */
DOT11_MAXFRAMEBURST_OFF = 0 , /* Card firmware default */
DOT11_MAXFRAMEBURST_MIXED_SAFE = 650 , /* 802.11 a,b,g safe */
DOT11_MAXFRAMEBURST_IDEAL = 1300 , /* Theoretical ideal level */
DOT11_MAXFRAMEBURST_MAX = 5000 , /* Use this as max,
* Note : firmware allows for greater values . This is a
* recommended max . I ' ll update this as I find
* out what the real MAX is . Also note that you don ' t necessarily
* get better results with a greater value here .
*/
} ;
/* Support for 802.11 long and short frame preambles.
* Long preamble uses 128 - bit sync field , 8 - bit CRC
* Short preamble uses 56 - bit sync field , 16 - bit CRC
2006-10-08 08:38:15 +04:00
*
2005-04-17 02:20:36 +04:00
* 802.11 a - - not sure , both optionally ?
2006-10-08 08:38:15 +04:00
* 802.11 b supports long and optionally short
2005-04-17 02:20:36 +04:00
* 802.11 g supports both */
enum dot11_preamblesettings_t {
DOT11_PREAMBLESETTING_LONG = 0 ,
/* Allows *only* long 802.11 preambles */
DOT11_PREAMBLESETTING_SHORT = 1 ,
/* Allows *only* short 802.11 preambles */
DOT11_PREAMBLESETTING_DYNAMIC = 2
/* AutomatiGically set */
} ;
/* Support for 802.11 slot timing (time between packets).
*
* Long uses 802.11 a slot timing ( 9 usec ? )
* Short uses 802.11 b slot timing ( 20 use ? ) */
enum dot11_slotsettings_t {
2006-10-08 08:38:15 +04:00
DOT11_SLOTSETTINGS_LONG = 0 ,
2005-04-17 02:20:36 +04:00
/* Allows *only* long 802.11b slot timing */
DOT11_SLOTSETTINGS_SHORT = 1 ,
/* Allows *only* long 802.11a slot timing */
DOT11_SLOTSETTINGS_DYNAMIC = 2
/* AutomatiGically set */
} ;
/* All you need to know, ERP is "Extended Rate PHY".
2006-10-08 08:38:15 +04:00
* An Extended Rate PHY ( ERP ) STA or AP shall support three different
2005-04-17 02:20:36 +04:00
* preamble and header formats :
* Long preamble ( refer to above )
* Short preamble ( refer to above )
* OFDM preamble ( ? )
*
* I ' m assuming here Protection tells the AP
* to be careful , a STA which cannot handle the long pre - amble
* has joined .
*/
enum do11_nonerpstatus_t {
DOT11_ERPSTAT_NONEPRESENT = 0 ,
DOT11_ERPSTAT_USEPROTECTION = 1
} ;
/* (ERP is "Extended Rate PHY") Way to read NONERP is NON-ERP-*
* The key here is DOT11 NON ERP NEVER protects against
* NON ERP STA ' s . You * don ' t * want this unless
2006-10-08 08:38:15 +04:00
* you know what you are doing . It means you will only
2005-04-17 02:20:36 +04:00
* get Extended Rate capabilities */
enum dot11_nonerpprotection_t {
DOT11_NONERP_NEVER = 0 ,
DOT11_NONERP_ALWAYS = 1 ,
DOT11_NONERP_DYNAMIC = 2
} ;
2006-10-08 08:38:15 +04:00
/* Preset OID configuration for 802.11 modes
* Note : DOT11_OID_CW [ MIN | MAX ] hold the values of the
2005-04-17 02:20:36 +04:00
* DCS MIN | MAX backoff used */
enum dot11_profile_t { /* And set/allowed values */
/* Allowed values for DOT11_OID_PROFILES */
DOT11_PROFILE_B_ONLY = 0 ,
2006-10-08 08:38:15 +04:00
/* DOT11_OID_RATES: 1, 2, 5.5, 11Mbps
2005-04-17 02:20:36 +04:00
* DOT11_OID_PREAMBLESETTINGS : DOT11_PREAMBLESETTING_DYNAMIC
* DOT11_OID_CWMIN : 31
* DOT11_OID_NONEPROTECTION : DOT11_NOERP_DYNAMIC
* DOT11_OID_SLOTSETTINGS : DOT11_SLOTSETTINGS_LONG
*/
DOT11_PROFILE_MIXED_G_WIFI = 1 ,
/* DOT11_OID_RATES: 1, 2, 5.5, 11, 6, 9, 12, 18, 24, 36, 48, 54Mbs
* DOT11_OID_PREAMBLESETTINGS : DOT11_PREAMBLESETTING_DYNAMIC
* DOT11_OID_CWMIN : 15
* DOT11_OID_NONEPROTECTION : DOT11_NOERP_DYNAMIC
* DOT11_OID_SLOTSETTINGS : DOT11_SLOTSETTINGS_DYNAMIC
*/
DOT11_PROFILE_MIXED_LONG = 2 , /* "Long range" */
/* Same as Profile MIXED_G_WIFI */
DOT11_PROFILE_G_ONLY = 3 ,
/* Same as Profile MIXED_G_WIFI */
DOT11_PROFILE_TEST = 4 ,
/* Same as Profile MIXED_G_WIFI except:
* DOT11_OID_PREAMBLESETTINGS : DOT11_PREAMBLESETTING_SHORT
* DOT11_OID_NONEPROTECTION : DOT11_NOERP_NEVER
* DOT11_OID_SLOTSETTINGS : DOT11_SLOTSETTINGS_SHORT
*/
DOT11_PROFILE_B_WIFI = 5 ,
/* Same as Profile B_ONLY */
DOT11_PROFILE_A_ONLY = 6 ,
/* Same as Profile MIXED_G_WIFI except:
* DOT11_OID_RATES : 6 , 9 , 12 , 18 , 24 , 36 , 48 , 54 Mbs
*/
DOT11_PROFILE_MIXED_SHORT = 7
/* Same as MIXED_G_WIFI */
} ;
/* The dot11d conformance level configures the 802.11d conformance levels.
* The following conformance levels exist : */
enum oid_inl_conformance_t {
OID_INL_CONFORMANCE_NONE = 0 , /* Perform active scanning */
OID_INL_CONFORMANCE_STRICT = 1 , /* Strictly adhere to 802.11d */
OID_INL_CONFORMANCE_FLEXIBLE = 2 , /* Use passed 802.11d info to
2006-10-08 08:38:15 +04:00
* determine channel AND / OR just make assumption that active
2005-04-17 02:20:36 +04:00
* channels are valid channels */
} ;
enum oid_inl_mode_t {
INL_MODE_NONE = - 1 ,
INL_MODE_PROMISCUOUS = 0 ,
INL_MODE_CLIENT = 1 ,
INL_MODE_AP = 2 ,
INL_MODE_SNIFFER = 3
} ;
enum oid_inl_config_t {
INL_CONFIG_NOTHING = 0x00 ,
INL_CONFIG_MANUALRUN = 0x01 ,
INL_CONFIG_FRAMETRAP = 0x02 ,
INL_CONFIG_RXANNEX = 0x04 ,
INL_CONFIG_TXANNEX = 0x08 ,
INL_CONFIG_WDS = 0x10
} ;
enum oid_inl_phycap_t {
INL_PHYCAP_2400MHZ = 1 ,
INL_PHYCAP_5000MHZ = 2 ,
INL_PHYCAP_FAA = 0x80000000 , /* Means card supports the FAA switch */
} ;
enum oid_num_t {
GEN_OID_MACADDRESS = 0 ,
GEN_OID_LINKSTATE ,
GEN_OID_WATCHDOG ,
GEN_OID_MIBOP ,
GEN_OID_OPTIONS ,
GEN_OID_LEDCONFIG ,
/* 802.11 */
DOT11_OID_BSSTYPE ,
DOT11_OID_BSSID ,
DOT11_OID_SSID ,
DOT11_OID_STATE ,
DOT11_OID_AID ,
DOT11_OID_COUNTRYSTRING ,
DOT11_OID_SSIDOVERRIDE ,
DOT11_OID_MEDIUMLIMIT ,
DOT11_OID_BEACONPERIOD ,
DOT11_OID_DTIMPERIOD ,
DOT11_OID_ATIMWINDOW ,
DOT11_OID_LISTENINTERVAL ,
DOT11_OID_CFPPERIOD ,
DOT11_OID_CFPDURATION ,
DOT11_OID_AUTHENABLE ,
DOT11_OID_PRIVACYINVOKED ,
DOT11_OID_EXUNENCRYPTED ,
DOT11_OID_DEFKEYID ,
DOT11_OID_DEFKEYX , /* DOT11_OID_DEFKEY1,...DOT11_OID_DEFKEY4 */
DOT11_OID_STAKEY ,
DOT11_OID_REKEYTHRESHOLD ,
DOT11_OID_STASC ,
DOT11_OID_PRIVTXREJECTED ,
DOT11_OID_PRIVRXPLAIN ,
DOT11_OID_PRIVRXFAILED ,
DOT11_OID_PRIVRXNOKEY ,
DOT11_OID_RTSTHRESH ,
DOT11_OID_FRAGTHRESH ,
DOT11_OID_SHORTRETRIES ,
DOT11_OID_LONGRETRIES ,
DOT11_OID_MAXTXLIFETIME ,
DOT11_OID_MAXRXLIFETIME ,
DOT11_OID_AUTHRESPTIMEOUT ,
DOT11_OID_ASSOCRESPTIMEOUT ,
DOT11_OID_ALOFT_TABLE ,
DOT11_OID_ALOFT_CTRL_TABLE ,
DOT11_OID_ALOFT_RETREAT ,
DOT11_OID_ALOFT_PROGRESS ,
DOT11_OID_ALOFT_FIXEDRATE ,
DOT11_OID_ALOFT_RSSIGRAPH ,
DOT11_OID_ALOFT_CONFIG ,
DOT11_OID_VDCFX ,
DOT11_OID_MAXFRAMEBURST ,
DOT11_OID_PSM ,
DOT11_OID_CAMTIMEOUT ,
DOT11_OID_RECEIVEDTIMS ,
DOT11_OID_ROAMPREFERENCE ,
DOT11_OID_BRIDGELOCAL ,
DOT11_OID_CLIENTS ,
DOT11_OID_CLIENTSASSOCIATED ,
DOT11_OID_CLIENTX , /* DOT11_OID_CLIENTX,...DOT11_OID_CLIENT2007 */
DOT11_OID_CLIENTFIND ,
DOT11_OID_WDSLINKADD ,
DOT11_OID_WDSLINKREMOVE ,
DOT11_OID_EAPAUTHSTA ,
DOT11_OID_EAPUNAUTHSTA ,
DOT11_OID_DOT1XENABLE ,
DOT11_OID_MICFAILURE ,
DOT11_OID_REKEYINDICATE ,
DOT11_OID_MPDUTXSUCCESSFUL ,
DOT11_OID_MPDUTXONERETRY ,
DOT11_OID_MPDUTXMULTIPLERETRIES ,
DOT11_OID_MPDUTXFAILED ,
DOT11_OID_MPDURXSUCCESSFUL ,
DOT11_OID_MPDURXDUPS ,
DOT11_OID_RTSSUCCESSFUL ,
DOT11_OID_RTSFAILED ,
DOT11_OID_ACKFAILED ,
DOT11_OID_FRAMERECEIVES ,
DOT11_OID_FRAMEERRORS ,
DOT11_OID_FRAMEABORTS ,
DOT11_OID_FRAMEABORTSPHY ,
DOT11_OID_SLOTTIME ,
DOT11_OID_CWMIN , /* MIN DCS backoff */
DOT11_OID_CWMAX , /* MAX DCS backoff */
DOT11_OID_ACKWINDOW ,
DOT11_OID_ANTENNARX ,
DOT11_OID_ANTENNATX ,
DOT11_OID_ANTENNADIVERSITY ,
DOT11_OID_CHANNEL ,
DOT11_OID_EDTHRESHOLD ,
DOT11_OID_PREAMBLESETTINGS ,
DOT11_OID_RATES ,
DOT11_OID_CCAMODESUPPORTED ,
DOT11_OID_CCAMODE ,
DOT11_OID_RSSIVECTOR ,
DOT11_OID_OUTPUTPOWERTABLE ,
DOT11_OID_OUTPUTPOWER ,
DOT11_OID_SUPPORTEDRATES ,
DOT11_OID_FREQUENCY ,
DOT11_OID_SUPPORTEDFREQUENCIES ,
DOT11_OID_NOISEFLOOR ,
DOT11_OID_FREQUENCYACTIVITY ,
DOT11_OID_IQCALIBRATIONTABLE ,
DOT11_OID_NONERPPROTECTION ,
DOT11_OID_SLOTSETTINGS ,
DOT11_OID_NONERPTIMEOUT ,
DOT11_OID_PROFILES ,
DOT11_OID_EXTENDEDRATES ,
DOT11_OID_DEAUTHENTICATE ,
DOT11_OID_AUTHENTICATE ,
DOT11_OID_DISASSOCIATE ,
DOT11_OID_ASSOCIATE ,
DOT11_OID_SCAN ,
DOT11_OID_BEACON ,
DOT11_OID_PROBE ,
DOT11_OID_DEAUTHENTICATEEX ,
DOT11_OID_AUTHENTICATEEX ,
DOT11_OID_DISASSOCIATEEX ,
DOT11_OID_ASSOCIATEEX ,
DOT11_OID_REASSOCIATE ,
DOT11_OID_REASSOCIATEEX ,
DOT11_OID_NONERPSTATUS ,
DOT11_OID_STATIMEOUT ,
DOT11_OID_MLMEAUTOLEVEL ,
DOT11_OID_BSSTIMEOUT ,
DOT11_OID_ATTACHMENT ,
DOT11_OID_PSMBUFFER ,
DOT11_OID_BSSS ,
DOT11_OID_BSSX , /*DOT11_OID_BSS1,...,DOT11_OID_BSS64 */
DOT11_OID_BSSFIND ,
DOT11_OID_BSSLIST ,
OID_INL_TUNNEL ,
OID_INL_MEMADDR ,
OID_INL_MEMORY ,
OID_INL_MODE ,
OID_INL_COMPONENT_NR ,
OID_INL_VERSION ,
OID_INL_INTERFACE_ID ,
OID_INL_COMPONENT_ID ,
OID_INL_CONFIG ,
OID_INL_DOT11D_CONFORMANCE ,
OID_INL_PHYCAPABILITIES ,
OID_INL_OUTPUTPOWER ,
OID_NUM_LAST
} ;
# define OID_FLAG_CACHED 0x80
# define OID_FLAG_TYPE 0x7f
# define OID_TYPE_U32 0x01
# define OID_TYPE_SSID 0x02
# define OID_TYPE_KEY 0x03
# define OID_TYPE_BUFFER 0x04
# define OID_TYPE_BSS 0x05
# define OID_TYPE_BSSLIST 0x06
# define OID_TYPE_FREQUENCIES 0x07
# define OID_TYPE_MLME 0x08
# define OID_TYPE_MLMEEX 0x09
# define OID_TYPE_ADDR 0x0A
# define OID_TYPE_RAW 0x0B
# define OID_TYPE_ATTACH 0x0C
/* OID_TYPE_MLMEEX is special because of a variable size field when sending.
* Not yet implemented ( not used in driver anyway ) .
*/
struct oid_t {
enum oid_num_t oid ;
short range ; /* to define a range of oid */
short size ; /* max size of the associated data */
char flags ;
} ;
union oid_res_t {
void * ptr ;
u32 u ;
} ;
# define IWMAX_BITRATES 20
# define IWMAX_BSS 24
# define IWMAX_FREQ 30
# define PRIV_STR_SIZE 1024
# endif /* !defined(_ISL_OID_H) */
/* EOF */