/* ipwlan_atheros.h - Structures for atheros wlan driver */ /* ****************************************************************************** * INTERPEAK API HEADER FILE * * Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: ipwlan_atheros.h,v $ $Revision: 1.5 $ * $Source: /home/interpeak/CVSRoot/ipwlan/include/ipwlan_atheros.h,v $ * $Author: ulf $ $Date: 2009-11-25 09:59:10 $ * $State: Exp $ $Locker: $ * * Copyright 2000-2007 Interpeak AB (http://www.interpeak.se). All rights reserved. * Design and implementation by Kenneth Jonsson ****************************************************************************** */ #ifndef IPWLAN_ATHEROS_H #define IPWLAN_ATHEROS_H /* **************************************************************************** * 1 DESCRIPTION **************************************************************************** */ /* DESCRIPTION This library contains structures used by the Broadcom wlan driver */ /* **************************************************************************** * 2 CONFIGURATION **************************************************************************** */ /* **************************************************************************** * 3 INCLUDE FILES **************************************************************************** */ #include #include #ifdef __cplusplus extern "C" { #endif /* **************************************************************************** * 4 DEFINES **************************************************************************** */ #define ATH_IOC_USER 0x8000 #define ATH_IOCPARM_MASK 0xfff #define ATH_IOC(inout,group,num,len) \ ((Ip_u32)(inout | ((len & ATH_IOCPARM_MASK) << 16) | \ ((group) << 8) | (num))) #define ATH_IO(g,n) ATH_IOC(IP_IOC_VOID,(g),(n),0) #define ATH_IOR(g,n,t) ATH_IOC(IP_IOC_OUT,(g),(n),sizeof(t)) #define ATH_IOW(g,n,t) ATH_IOC(IP_IOC_IN,(g),(n),sizeof(t)) #define ATH_IOWR(g,n,t) ATH_IOC(IP_IOC_INOUT,(g),(n),sizeof(t)) #define ATH_IOU(g,n) (ATH_IOC_USER|ATH_IO(g,n)) #define ATH_IORU(g,n,t) (ATH_IOC_USER|ATH_IOR(g,n,t)) #define ATH_IOWU(g,n,t) (ATH_IOC_USER|ATH_IOW(g,n,t)) #define ATH_IOWRU(g,n,t) (ATH_IOC_USER|ATH_IOWR(g,n,t)) #ifndef _BIT #define _BIT(x) (1<<(x)) #endif /* Error codes */ #define IPWLAN_ATHEROS_ERR_FAILED -1 #define IPWLAN_ATHEROS_ERR_UNSUPPORTED -2 #define IPWLAN_ATHEROS_ERR_INVALID_ARG -3 #define IPWLAN_ATHEROS_ERR_INVALID_MODE -4 /* Debug values, macros */ #define IPWLAN_ATHEROS_MAX_DEBUG (sizeof(ipwlan_atheros_debuglevels)/sizeof(Ipcom_iw_debug_level)) #define IPWLAN_ATHEROS_MAX_STATS 33 #define DOT11_MAX_CHANNELS 64 #define DOT11_MAX_DEFAULT_KEY 4 #define DOT11_PASSPHRASE_LEN 63 typedef char DOT11_PASSPHRASE[DOT11_PASSPHRASE_LEN]; #define DOT11_DEBUG_FATAL 1 #define DOT11_DEBUG_ERROR 2 #define DOT11_DEBUG_INFO 3 #define DOT11_DEBUG_FLOOD 4 #define DOT11_DEBUG_NONE 0 #define DOT11_AREA_ALL 0 #define DOT11_AREA_INIT 1 #define DOT11_AREA_SME 2 #define DOT11_AREA_DPE 3 #define DOT11_AREA_HDD 4 #define DOT11_AREA_INT 5 #define ATH_DBG_AREAS 6 #define ATH_DBG_NONE 0 #define ATH_DBG_ALL 1 #define ATH_DBG_INFO 2 #define ATH_DBG_ERROR 4 #define ATH_DBG_FATAL 8 #define ATH_DBG_ALL_SHIFT 0 #define ATH_DBG_INIT_SHIFT 4 #define ATH_DBG_STATE_SHIFT 8 #define ATH_DBG_DATA_SHIFT 12 #define ATH_DBG_HW_SHIFT 16 #define ATH_DBG_ISR_SHIFT 20 #define ATH_DBG_ALL_NONE 0x00000000 #define ATH_DBG_ALL_ALL 0x00000004 #define ATH_DBG_ALL_INFO 0x00000003 #define ATH_DBG_ALL_ERROR 0x00000002 #define ATH_DBG_ALL_FATAL 0x00000001 #define ATH_DBG_INIT_NONE 0x01000000 #define ATH_DBG_INIT_ALL 0x01000040 #define ATH_DBG_INIT_INFO 0x01000030 #define ATH_DBG_INIT_ERROR 0x01000020 #define ATH_DBG_INIT_FATAL 0x01000010 #define ATH_DBG_STATE_NONE 0x02000000 #define ATH_DBG_STATE_ALL 0x02000400 #define ATH_DBG_STATE_INFO 0x02000300 #define ATH_DBG_STATE_ERROR 0x02000200 #define ATH_DBG_STATE_FATAL 0x02000100 #define ATH_DBG_DATA_NONE 0x04000000 #define ATH_DBG_DATA_ALL 0x04004000 #define ATH_DBG_DATA_INFO 0x04003000 #define ATH_DBG_DATA_ERROR 0x04002000 #define ATH_DBG_DATA_FATAL 0x04001000 #define ATH_DBG_HW_NONE 0x08000000 #define ATH_DBG_HW_ALL 0x08040000 #define ATH_DBG_HW_INFO 0x08030000 #define ATH_DBG_HW_ERROR 0x08020000 #define ATH_DBG_HW_FATAL 0x08010000 #define ATH_DBG_ISR_NONE 0x10000000 #define ATH_DBG_ISR_ALL 0x10400000 #define ATH_DBG_ISR_INFO 0x10300000 #define ATH_DBG_ISR_ERROR 0x10200000 #define ATH_DBG_ISR_FATAL 0x10100000 #define MAX_TEXT_LEN 100 #define DOT11_ADDR_LEN 6 #define DOT11_SSID_LEN 32 #define MAX_CHANNEL_NO (sizeof(ipwlan_atheros_freq)/sizeof(int)) #define DOT11_MODE_NONE 0 #define DOT11_MODE_ESS 1 #define DOT11_MODE_IBSS 2 #define DOT11_MODE_AP 3 #define DOT11_MAX_RATES 256 #define DOT11_MAX_SCANRESULTS 50 #define DOT11_RATE(x) (((x) & 0x7f) / 2) #define DOT11_RATE_MASK(x) (((x) & 0x7f)) #define DOT11_IS_BRATE(x) (((x) & 0x80) == 0x80) #define ALIGN_UP_4(a) (((a)+3)&(~0<<2)) #define CHANNEL_MASK(c) ((c) & 0xff) #define DOT11_KSL_MAX_HASH 256 #define DOT11_ACL_DISABLED 0 #define DOT11_ACL_ALLOW 1 #define DOT11_ACL_DENY 2 #define DOT11_SCANTYPE_ACTIVE _BIT(0) #define DOT11_SCANTYPE_PASSIVE _BIT(1) #define DOT11_TXPOWER_MAX 0 #define DOT11_TXPOWER_66 1 #define DOT11_TXPOWER_50 2 #define DOT11_TXPOWER_33 3 #define DOT11_TXPOWER_MIN 4 #define DOT11_AUTHTYPE_OPEN 1 #define DOT11_AUTHTYPE_SKA 2 #define DOT11_AUTHTYPE_ALL 3 #define DOT11_AUTHPOL_NONE 0 #define DOT11_AUTHPOL_8021X _BIT(0) #define DOT11_AUTHPOL_PSK _BIT(1) #define DOT11_AUTHPOL_MAX (DOT11_AUTHPOL_PSK + 1) #define DOT11_SECPOL_NONE 0 #define DOT11_SECPOL_TSN _BIT(0) #define DOT11_SECPOL_WPA _BIT(1) #define DOT11_SECPOL_11i _BIT(2) #define DOT11_CIPHPOL_NONE 0 #define DOT11_CIPHPOL_WEP40 _BIT(0) #define DOT11_CIPHPOL_WEP104 _BIT(1) #define DOT11_CIPHPOL_TKIP _BIT(2) #define DOT11_CIPHPOL_AES _BIT(3) #define DOT11_CIPHPOL_MAX (DOT11_CIPHPOL_AES + 1) #define DOT11_WEP40_KEY_SIZE 5 #define DOT11_WEP104_KEY_SIZE 13 #define DOT11_AES_KEY_SIZE 16 #define DOT11_TKIP_KEY_SIZE 32 #define DOT11_MAX_WEP_KEY_INDEX 3 #define DOT11_KEYINDEX_SEARCH 65536 #define DOT11_RADIO_NONE 0 #define DOT11_RADIO_11a _BIT(0) #define DOT11_RADIO_11b _BIT(1) #define DOT11_RADIO_11g _BIT(2) #define DOT11_RADIO_TURBOg _BIT(3) #define DOT11_RADIO_TURBOa _BIT(4) #define DOT11_RADIO_ANY 0x1f /* Capability Information Field */ #define DOT11_CAP_ESS 0x0001 /* d11 cap. ESS */ #define DOT11_CAP_IBSS 0x0002 /* d11 cap. IBSS */ #define DOT11_CAP_PRIVACY 0x0010 /* d11 cap. privacy */ #define WIOCSDOT1XPORTSTATUS ATH_IOW('x', 0x01, DOT11_DOT1X_PORTSTATUS) #define WIOCSAUTHCALLBACK ATH_IOW('x', 0x02, DOT11_CALLBACK_PARAMS) #define WIOCGSTATS ATH_IORU('w', 0x001, DOT11_STATS) #define WIOCGLINKSTAT 0x002 #define WIOCGDESIREDSSID ATH_IORU('w', 0x003, DOT11_SSID) #define WIOCSSSID ATH_IOWU('w', 0x004, DOT11_SSID) #define WIOCGCONNECTEDSSID ATH_IORU('w', 0x005, DOT11_SSID) #define WIOCGCONNECTEDBSSID 0x006 #define WIOCGTXRATE ATH_IORU('w', 0x007, Ip_u32) #define WIOCSTXRATE ATH_IOWU('w', 0x008, DOT11_RATES) #define WIOCGPWRMAN ATH_IORU('w', 0x009, Ip_u32) #define WIOCSPWRMAN ATH_IOU('w', 0x00a) #define WIOCGCOMMQUAL 0x00b #define WIOCGCARDTYPE 0x00c #define WIOCGCHANNEL ATH_IORU('w', 0x00d, Ip_u32) #define WIOCSCHANNEL ATH_IOU('w', 0x00e) #define WIOCGWEPAVAIL 0x00f #define WIOCSWEPKEY0 ATH_IOWU('w', 0x010, DOT11_KEY) #define WIOCSWEPKEY1 ATH_IOWU('w', 0x011, DOT11_KEY) #define WIOCSWEPKEY2 ATH_IOWU('w', 0x012, DOT11_KEY) #define WIOCSWEPKEY3 ATH_IOWU('w', 0x013, DOT11_KEY) #define WIOCSWEPDEFAULTKEY ATH_IOU('w', 0x014) #define WIOCGENCRYPTTYPE ATH_IORU('w', 0x015, Ip_u32) #define WIOCSENCRYPTTYPE ATH_IOU('w',0x016) #define WIOCAACLSTA ATH_IOWU('w', 0x017, DOT11_ADDR) #define WIOCDACLSTA ATH_IOWU('w', 0x018, DOT11_ADDR) #define WIOCSEXUNENCRYPT 0x019 #define WIOCGEXUNENCRYPT 0x01a #define WIOCGAUTHTYPE ATH_IORU('w', 0x01b, Ip_u32) #define WIOCSAUTHTYPE ATH_IOU('w', 0x1c) #define WIOCSBEACONRATE ATH_IOU('w', 0x01e) #define WIOCGBEACONRATE ATH_IORU('w', 0x01f, Ip_u32) #define WIOCGMAC 0x020 #define WIOCSCTSRTS ATH_IOU('w', 0x021) #define WIOCGCTSRTS ATH_IORU('w', 0x022, Ip_u32) #define WIOCSSHORTRETRY ATH_IOU('w', 0x023) #define WIOCGSHORTRETRY ATH_IORU('w', 0x024, Ip_u32) #define WIOCSLONGRETRY ATH_IOU('w', 0x025) #define WIOCGLONGRETRY ATH_IORU('w', 0x026, Ip_u32) #define WIOCSFRAGTHRESH ATH_IOU('w', 0x027) #define WIOCGFRAGTHRESH ATH_IORU('w', 0x028, Ip_u32) #define WIOCSMAXTXLIFE 0x029 #define WIOCGMAXTXLIFE 0x02a #define WIOCSMAXRXLIFE 0x02b #define WIOCGMAXRXLIFE 0x02c #define WIOCSPREAMBLE 0x02d #define WIOCGPREAMBLE 0x02e #define WIOCSAUTHRESPTO 0x02f #define WIOCGAUTHRESPTO 0x030 #define WIOCSADVSECURITY ATH_IOU('w', 0x035) #define WIOCGADVSECURITY ATH_IORU('w', 0x036, Ip_u32) #define WIOCSOCCUPANCY 0x037 #define WIOCGOCCUPANCY 0x038 #define WIOCGCFPPOLL 0x039 #define WIOCSCFPPERIOD 0x03a #define WIOCGCFPPERIOD 0x03b #define WIOCSCFPMAX 0x03c #define WIOCGCFPMAX 0x03d #define WIOCSDTIMRATE 0x03e #define WIOCGDTIMRATE 0x03f #define WIOCGSUPPTXRATE ATH_IORU('w', 0x040, DOT11_RATES) #define WIOCGSUPPRXRATE ATH_IORU('w', 0x041, DOT11_RATES) #define WIOCSASSOCRESPTIME 0x042 #define WIOCGASSOCRESPTIME 0x043 #define WIOCSBCASTRATE 0x044 #define WIOCGBCASTRATE 0x045 #define WIOCSRADIOMODE ATH_IOU('w', 0x046) #define WIOCGRADIOMODE ATH_IORU('w', 0x047, Ip_u32) #define WIOCSDOT11MODE ATH_IOU('w', 0x048) #define WIOCGDOT11MODE ATH_IORU('w', 0x049, Ip_u32) #define WIOCSACLMODE ATH_IOU('w', 0x04a) #define WIOCGACLMODE ATH_IORU('w', 0x04b, Ip_u32) #define WIOCGWEPDEFAULTKEY ATH_IORU('w' 0x04c, Ip_u32) #define WIOCSDESIREDSSID 0x04d #define WIOCUNSUPPORTED 0x04e #define WIOCAPAIRWISEKEY ATH_IOWU('w', 0x04f, DOT11_KEY) #define WIOCSSECPOL ATH_IOU('w', 0x050) #define WIOCGSECPOL ATH_IORU('w', 0x051, Ip_u32) #define WIOCSAUTHPOL ATH_IOU('w', 0x052) #define WIOCGAUTHPOL ATH_IORU('w', 0x053, Ip_u32) #define WIOCSCIPHPOL ATH_IOU('w', 0x054) #define WIOCGCIPHPOL ATH_IORU('w', 0x055, Ip_u32) #define WIOCSPSK ATH_IOWU('w', 0x56, DOT11_PSK) #define WIOCSPASSPHRASE ATH_IOWU('w', 0x57, DOT11_PASSPHRASE) #define WIOCBSSSCAN ATH_IOWRU('w', 0x058, DOT11_SCAN_REQ) #define WIOCSCOUNTRYCODE ATH_IOU('w', 0x059) #define WIOCGCOUNTRYCODE ATH_IORU('w', 0x5a, Ip_u32) #define WIOCS80211D ATH_IOU('w', 0x5b) #define WIOCG80211D ATH_IORU('w', 0x5c, Ip_u32) #define WIOCSBULK 0x5d #define WIOCGHWVERS 0x5e #define WIOCGTXPOWERSCALE ATH_IORU('w', 0x5f, Ip_u32) #define WIOCSTXPOWERSCALE ATH_IOU('w', 0x60) #define WIOCSUSERAUTHCALLBACK 0x61 #define WIOCDPAIRWISEKEY ATH_IOWU('w', 0x62, DOT11_ADDR) #define WIOCGCHANNELLIST ATH_IOWRU('w', 0x63, DOT11_CHANNEL_LIST) #define WIOCSSCANTYPE ATH_IOU('w', 0x64) #define WIOCGSCANTYPE ATH_IORU('w', 0x65, Ip_u32) #define WIOCSBSS ATH_IOU('w', 0x66) #define WIOCGBSS ATH_IORU('w', 0x67, Ip_u32) #define WIOCABSS ATH_IORU('w', 0x68, Ip_u32) #define WIOCDBSS ATH_IOU('w', 0x69) #define WIOCSMBSSADDRBITS 0x6a #define WIOCSASSOCLIMIT 0x6b #define WIOCSVLAN 0x6c #define WIOCGVLAN 0x6d #define WIOCSBRSSITHR 0x6e #define WIOCGBRSSITHR 0x6f #define WIOCGACL ATH_IOWRU('w', 0x070, DOT11_ACL) #define WIOCS4WAYHSSTATE ATH_IOWRU('w', 0x071, DOT11_4WAYHSSTATE) #define WIOCSEXTRSN ATH_IOWRU('w', 0x072, Ip_u32) #define WIOCSTKIPCMSTART ATH_IOWU('w', 0x73, DOT11_ADDR) #define WIOCSDEAUTH ATH_IOWU('w', 0x74, DOT11_DEAUTH_REQ) #define EIOCVLANJOIN ATH_IOU('e', 37) #define EIOCVLANGET ATH_IOWRU('e', 40, END_VLAN_REQ) /* **************************************************************************** * 5 TYPES **************************************************************************** */ typedef char DOT11_SSID[DOT11_SSID_LEN + 1]; typedef Ip_u8 DOT11_ADDR[DOT11_ADDR_LEN]; #include "ipcom_align16.h" typedef IP_PACKED1 struct { Ip_u32 length; Ip_u8 rates[DOT11_MAX_RATES]; } IP_PACKED2 DOT11_RATES; #include "ipcom_align16.h" #include "ipcom_align16.h" typedef IP_PACKED1 struct { int numStations; DOT11_ADDR macAddr[DOT11_ADDR_LEN]; } IP_PACKED2 DOT11_ACL; #include "ipcom_align16.h" typedef struct { Ip_u32 channel; Ip_u32 freq; Ip_u32 mode; Ip_bool activeScanAllowed; } DOT11_CHANNEL_INFO; typedef struct { Ip_u32 numChannels; DOT11_CHANNEL_INFO channels[DOT11_MAX_CHANNELS]; } DOT11_CHANNEL_LIST; typedef struct { char ssid[DOT11_SSID_LEN + 1]; Ip_u8 macAddr[DOT11_ADDR_LEN]; Ip_u16 capabilities; DOT11_RATES rates; Ip_u16 beaconInterval; Ip_u32 channel; Ip_u8 ssi; } DOT11_SCAN_RESULTS; typedef struct { Ip_u8 ssid[DOT11_SSID_LEN + 1]; Ip_u32 maxResults; DOT11_SCAN_RESULTS * pResults; Ip_u32 numResults; } DOT11_SCAN_REQ; typedef struct { Ip_u32 keyType; Ip_u32 keySlot; /* Keyslot key was installed to */ Ip_u8 macAddr[DOT11_ADDR_LEN]; union { Ip_u8 wep40[DOT11_WEP40_KEY_SIZE]; Ip_u8 wep104[DOT11_WEP104_KEY_SIZE]; Ip_u8 aes[DOT11_AES_KEY_SIZE]; Ip_u8 tkip[DOT11_TKIP_KEY_SIZE]; } type; Ip_u16 dummy_pad; /* Make struct 4 byte aligned to avoid compiler packing issues */ } DOT11_KEY; /* structure used by 4 WAY Handshake state Ioctl */ typedef struct { Ip_bool established; /* 4 WAY Handshake established or not */ Ip_u8 macAddr[DOT11_ADDR_LEN]; Ip_u16 dummy_pad; /* Make struct 4 byte aligned to avoid compiler packing issues */ } DOT11_4WAYHSSTATE; typedef struct { Ip_u32 reason; Ip_u8 macAddr[DOT11_ADDR_LEN]; Ip_u16 dummy_pad; /* Make struct 4 byte aligned to avoid compiler packing issues */ } DOT11_DEAUTH_REQ; #define DOT11_PMK_LEN 32 typedef Ip_u8 DOT11_PMK[DOT11_PMK_LEN]; #define DOT11_PSK_LEN 64 typedef Ip_u8 DOT11_PSK[DOT11_PSK_LEN]; typedef struct /* DOT11_STATS */ { Ip_u32 rxFrames; Ip_u32 rxFragments; Ip_u32 rxMcastFragments; Ip_u64 rxTotalBytes; Ip_u32 rxDuplicates; Ip_u32 rxFCSError; Ip_u32 rxHardwareError; Ip_u32 rxDecryptError; Ip_u32 rxMicFailure; Ip_u32 rxExcludeUnencrypted; Ip_u32 rxDot1xDropped; Ip_u32 rxCantReassemble; Ip_u32 rxBytesPerSec; Ip_u32 rxBytesPer16Sec; Ip_u32 txFrames; Ip_u32 txFragments; Ip_u32 txMcastFragments; Ip_u64 txTotalBytes; Ip_u32 txRetry; Ip_u32 txRetryMultiple; Ip_u32 txRetryFailure; Ip_u32 txAckFailure; Ip_u32 txRTSFailure; Ip_u32 txRTSSuccess; Ip_u32 txHardwareError; Ip_u32 txDot1xDropped; Ip_u32 txBytesPerSec; Ip_u32 txBytesPer16Sec; Ip_u32 fourWaySuccess; Ip_u32 fourWayFailure; Ip_u32 groupExchangeSuccess; Ip_u32 groupExchangeFailure; } DOT11_STATS; typedef struct _END_VLAN_REQ { Ip_u32 vlanCount; /* # of configured VLAN tags */ Ip_u32 vlanTagCount; /* # of VLAN tags in pVlanTagData */ Ip_u16 * pVlanTagData; /* Array of VLAN tags */ } END_VLAN_REQ; #include "ipcom_align16.h" /* Must match DOT11_DOT1X_PORTSTATUS and "OT11_DOT1XPORT_XXX" defined value in "dot11Lib.h" */ typedef IP_PACKED1 struct { Ip_u32 status; Ip_u8 macAddr[6]; } IP_PACKED2 DOT11_DOT1X_PORTSTATUS; #include "ipcom_align16.h" /* Must match DOT1X_PARAMS defined value in "dot1xCommonIoctls.h" */ typedef struct { Ip_u32 callback; /* Callback event handler */ Ip_u32 cookie; /* private data */ } DOT11_CALLBACK_PARAMS; #define DOT11_DOT1XPORT_UNCONTROLLED 0 #define DOT11_DOT1XPORT_CLOSED 1 #define DOT11_DOT1XPORT_OPEN 2 /* **************************************************************************** * 6 FUNCTIONS **************************************************************************** */ #ifdef __cplusplus } #endif #endif /* **************************************************************************** * END OF FILE **************************************************************************** */