/* ************************************************************************* * Ralink Tech Inc. * 5F., No.36, Taiyuan St., Jhubei City, * Hsinchu County 302, * Taiwan, R.O.C. * * (c) Copyright 2002-2007, Ralink Technology, Inc. * * 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, or * * (at your option) any later version. * * * * 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. * * * ************************************************************************* Module Name: oid.h Abstract: Revision History: Who When What -------- ---------- ---------------------------------------------- Name Date Modification logs */ #ifndef _OID_H_ #define _OID_H_ #define TRUE 1 #define FALSE 0 // // IEEE 802.11 Structures and definitions // #define MAX_TX_POWER_LEVEL 100 /* mW */ #define MAX_RSSI_TRIGGER -10 /* dBm */ #define MIN_RSSI_TRIGGER -200 /* dBm */ #define MAX_FRAG_THRESHOLD 2346 /* byte count */ #define MIN_FRAG_THRESHOLD 256 /* byte count */ #define MAX_RTS_THRESHOLD 2347 /* byte count */ // new types for Media Specific Indications // Extension channel offset #define EXTCHA_NONE 0 #define EXTCHA_ABOVE 0x1 #define EXTCHA_BELOW 0x3 // BW #define BAND_WIDTH_20 0 #define BAND_WIDTH_40 1 #define BAND_WIDTH_BOTH 2 #define BAND_WIDTH_10 3 // 802.11j has 10MHz. This definition is for internal usage. doesn't fill in the IE or other field. // SHORTGI #define GAP_INTERVAL_400 1 // only support in HT mode #define GAP_INTERVAL_800 0 #define GAP_INTERVAL_BOTH 2 #define NdisMediaStateConnected 1 #define NdisMediaStateDisconnected 0 #define NDIS_802_11_LENGTH_SSID 32 #define NDIS_802_11_LENGTH_RATES 8 #define NDIS_802_11_LENGTH_RATES_EX 16 #define MAC_ADDR_LENGTH 6 #define MAX_NUM_OF_CHS 49 // 14 channels @2.4G + 12@UNII + 4 @MMAC + 11 @HiperLAN2 + 7 @Japan + 1 as NULL terminationc #define MAX_NUMBER_OF_EVENT 10 // entry # in EVENT table #define MAX_NUMBER_OF_MAC 32 // if MAX_MBSSID_NUM is 8, this value can't be larger than 211 #define MAX_NUMBER_OF_ACL 64 #define MAX_LENGTH_OF_SUPPORT_RATES 12 // 1, 2, 5.5, 11, 6, 9, 12, 18, 24, 36, 48, 54 #define MAX_NUMBER_OF_DLS_ENTRY 4 #ifndef UNDER_CE #define OID_GEN_MACHINE_NAME 0x0001021A #ifdef RALINK_ATE #define RT_QUERY_ATE_TXDONE_COUNT 0x0401 #endif // RALINK_ATE // #define RT_QUERY_SIGNAL_CONTEXT 0x0402 #define RT_SET_IAPP_PID 0x0404 #define RT_SET_APD_PID 0x0405 #define RT_SET_DEL_MAC_ENTRY 0x0406 // // IEEE 802.11 OIDs // #define OID_GET_SET_TOGGLE 0x8000 #define OID_802_11_NETWORK_TYPES_SUPPORTED 0x0103 #define OID_802_11_NETWORK_TYPE_IN_USE 0x0104 #define OID_802_11_RSSI_TRIGGER 0x0107 #define RT_OID_802_11_RSSI 0x0108 //rt2860 only , kathy #define RT_OID_802_11_RSSI_1 0x0109 //rt2860 only , kathy #define RT_OID_802_11_RSSI_2 0x010A //rt2860 only , kathy #define OID_802_11_NUMBER_OF_ANTENNAS 0x010B #define OID_802_11_RX_ANTENNA_SELECTED 0x010C #define OID_802_11_TX_ANTENNA_SELECTED 0x010D #define OID_802_11_SUPPORTED_RATES 0x010E #define OID_802_11_ADD_WEP 0x0112 #define OID_802_11_REMOVE_WEP 0x0113 #define OID_802_11_DISASSOCIATE 0x0114 #define OID_802_11_PRIVACY_FILTER 0x0118 #define OID_802_11_ASSOCIATION_INFORMATION 0x011E #define OID_802_11_TEST 0x011F #define RT_OID_802_11_COUNTRY_REGION 0x0507 #define OID_802_11_BSSID_LIST_SCAN 0x0508 #define OID_802_11_SSID 0x0509 #define OID_802_11_BSSID 0x050A #define RT_OID_802_11_RADIO 0x050B #define RT_OID_802_11_PHY_MODE 0x050C #define RT_OID_802_11_STA_CONFIG 0x050D #define OID_802_11_DESIRED_RATES 0x050E #define RT_OID_802_11_PREAMBLE 0x050F #define OID_802_11_WEP_STATUS 0x0510 #define OID_802_11_AUTHENTICATION_MODE 0x0511 #define OID_802_11_INFRASTRUCTURE_MODE 0x0512 #define RT_OID_802_11_RESET_COUNTERS 0x0513 #define OID_802_11_RTS_THRESHOLD 0x0514 #define OID_802_11_FRAGMENTATION_THRESHOLD 0x0515 #define OID_802_11_POWER_MODE 0x0516 #define OID_802_11_TX_POWER_LEVEL 0x0517 #define RT_OID_802_11_ADD_WPA 0x0518 #define OID_802_11_REMOVE_KEY 0x0519 #define OID_802_11_ADD_KEY 0x0520 #define OID_802_11_CONFIGURATION 0x0521 #define OID_802_11_TX_PACKET_BURST 0x0522 #define RT_OID_802_11_QUERY_NOISE_LEVEL 0x0523 #define RT_OID_802_11_EXTRA_INFO 0x0524 #ifdef DBG #define RT_OID_802_11_HARDWARE_REGISTER 0x0525 #endif #define OID_802_11_ENCRYPTION_STATUS OID_802_11_WEP_STATUS #define OID_802_11_DEAUTHENTICATION 0x0526 #define OID_802_11_DROP_UNENCRYPTED 0x0527 #define OID_802_11_MIC_FAILURE_REPORT_FRAME 0x0528 // For 802.1x daemin using to require current driver configuration #define OID_802_11_RADIUS_QUERY_SETTING 0x0540 #define RT_OID_DEVICE_NAME 0x0607 #define RT_OID_VERSION_INFO 0x0608 #define OID_802_11_BSSID_LIST 0x0609 #define OID_802_3_CURRENT_ADDRESS 0x060A #define OID_GEN_MEDIA_CONNECT_STATUS 0x060B #define RT_OID_802_11_QUERY_LINK_STATUS 0x060C #define OID_802_11_RSSI 0x060D #define OID_802_11_STATISTICS 0x060E #define OID_GEN_RCV_OK 0x060F #define OID_GEN_RCV_NO_BUFFER 0x0610 #define RT_OID_802_11_QUERY_EEPROM_VERSION 0x0611 #define RT_OID_802_11_QUERY_FIRMWARE_VERSION 0x0612 #define RT_OID_802_11_QUERY_LAST_RX_RATE 0x0613 #define RT_OID_802_11_TX_POWER_LEVEL_1 0x0614 #define RT_OID_802_11_QUERY_PIDVID 0x0615 //for WPA_SUPPLICANT_SUPPORT #define OID_SET_COUNTERMEASURES 0x0616 #define OID_802_11_SET_IEEE8021X 0x0617 #define OID_802_11_SET_IEEE8021X_REQUIRE_KEY 0x0618 #define OID_802_11_PMKID 0x0620 #define RT_OID_WPA_SUPPLICANT_SUPPORT 0x0621 #define RT_OID_WE_VERSION_COMPILED 0x0622 #define RT_OID_NEW_DRIVER 0x0623 //rt2860 , kathy #define RT_OID_802_11_SNR_0 0x0630 #define RT_OID_802_11_SNR_1 0x0631 #define RT_OID_802_11_QUERY_LAST_TX_RATE 0x0632 #define RT_OID_802_11_QUERY_HT_PHYMODE 0x0633 #define RT_OID_802_11_SET_HT_PHYMODE 0x0634 #define OID_802_11_RELOAD_DEFAULTS 0x0635 #define RT_OID_802_11_QUERY_APSD_SETTING 0x0636 #define RT_OID_802_11_SET_APSD_SETTING 0x0637 #define RT_OID_802_11_QUERY_APSD_PSM 0x0638 #define RT_OID_802_11_SET_APSD_PSM 0x0639 #define RT_OID_802_11_QUERY_DLS 0x063A #define RT_OID_802_11_SET_DLS 0x063B #define RT_OID_802_11_QUERY_DLS_PARAM 0x063C #define RT_OID_802_11_SET_DLS_PARAM 0x063D #define RT_OID_802_11_QUERY_WMM 0x063E #define RT_OID_802_11_SET_WMM 0x063F #define RT_OID_802_11_QUERY_IMME_BA_CAP 0x0640 #define RT_OID_802_11_SET_IMME_BA_CAP 0x0641 #define RT_OID_802_11_QUERY_BATABLE 0x0642 #define RT_OID_802_11_ADD_IMME_BA 0x0643 #define RT_OID_802_11_TEAR_IMME_BA 0x0644 #define RT_OID_DRIVER_DEVICE_NAME 0x0645 #define RT_OID_802_11_QUERY_DAT_HT_PHYMODE 0x0646 #define RT_OID_QUERY_MULTIPLE_CARD_SUPPORT 0x0647 // Ralink defined OIDs // Dennis Lee move to platform specific #define RT_OID_802_11_BSSID (OID_GET_SET_TOGGLE | OID_802_11_BSSID) #define RT_OID_802_11_SSID (OID_GET_SET_TOGGLE | OID_802_11_SSID) #define RT_OID_802_11_INFRASTRUCTURE_MODE (OID_GET_SET_TOGGLE | OID_802_11_INFRASTRUCTURE_MODE) #define RT_OID_802_11_ADD_WEP (OID_GET_SET_TOGGLE | OID_802_11_ADD_WEP) #define RT_OID_802_11_ADD_KEY (OID_GET_SET_TOGGLE | OID_802_11_ADD_KEY) #define RT_OID_802_11_REMOVE_WEP (OID_GET_SET_TOGGLE | OID_802_11_REMOVE_WEP) #define RT_OID_802_11_REMOVE_KEY (OID_GET_SET_TOGGLE | OID_802_11_REMOVE_KEY) #define RT_OID_802_11_DISASSOCIATE (OID_GET_SET_TOGGLE | OID_802_11_DISASSOCIATE) #define RT_OID_802_11_AUTHENTICATION_MODE (OID_GET_SET_TOGGLE | OID_802_11_AUTHENTICATION_MODE) #define RT_OID_802_11_PRIVACY_FILTER (OID_GET_SET_TOGGLE | OID_802_11_PRIVACY_FILTER) #define RT_OID_802_11_BSSID_LIST_SCAN (OID_GET_SET_TOGGLE | OID_802_11_BSSID_LIST_SCAN) #define RT_OID_802_11_WEP_STATUS (OID_GET_SET_TOGGLE | OID_802_11_WEP_STATUS) #define RT_OID_802_11_RELOAD_DEFAULTS (OID_GET_SET_TOGGLE | OID_802_11_RELOAD_DEFAULTS) #define RT_OID_802_11_NETWORK_TYPE_IN_USE (OID_GET_SET_TOGGLE | OID_802_11_NETWORK_TYPE_IN_USE) #define RT_OID_802_11_TX_POWER_LEVEL (OID_GET_SET_TOGGLE | OID_802_11_TX_POWER_LEVEL) #define RT_OID_802_11_RSSI_TRIGGER (OID_GET_SET_TOGGLE | OID_802_11_RSSI_TRIGGER) #define RT_OID_802_11_FRAGMENTATION_THRESHOLD (OID_GET_SET_TOGGLE | OID_802_11_FRAGMENTATION_THRESHOLD) #define RT_OID_802_11_RTS_THRESHOLD (OID_GET_SET_TOGGLE | OID_802_11_RTS_THRESHOLD) #define RT_OID_802_11_RX_ANTENNA_SELECTED (OID_GET_SET_TOGGLE | OID_802_11_RX_ANTENNA_SELECTED) #define RT_OID_802_11_TX_ANTENNA_SELECTED (OID_GET_SET_TOGGLE | OID_802_11_TX_ANTENNA_SELECTED) #define RT_OID_802_11_SUPPORTED_RATES (OID_GET_SET_TOGGLE | OID_802_11_SUPPORTED_RATES) #define RT_OID_802_11_DESIRED_RATES (OID_GET_SET_TOGGLE | OID_802_11_DESIRED_RATES) #define RT_OID_802_11_CONFIGURATION (OID_GET_SET_TOGGLE | OID_802_11_CONFIGURATION) #define RT_OID_802_11_POWER_MODE (OID_GET_SET_TOGGLE | OID_802_11_POWER_MODE) typedef enum _NDIS_802_11_STATUS_TYPE { Ndis802_11StatusType_Authentication, Ndis802_11StatusType_MediaStreamMode, Ndis802_11StatusType_PMKID_CandidateList, Ndis802_11StatusTypeMax // not a real type, defined as an upper bound } NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE; typedef UCHAR NDIS_802_11_MAC_ADDRESS[6]; typedef struct _NDIS_802_11_STATUS_INDICATION { NDIS_802_11_STATUS_TYPE StatusType; } NDIS_802_11_STATUS_INDICATION, *PNDIS_802_11_STATUS_INDICATION; // mask for authentication/integrity fields #define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS 0x0f #define NDIS_802_11_AUTH_REQUEST_REAUTH 0x01 #define NDIS_802_11_AUTH_REQUEST_KEYUPDATE 0x02 #define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR 0x06 #define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR 0x0E typedef struct _NDIS_802_11_AUTHENTICATION_REQUEST { ULONG Length; // Length of structure NDIS_802_11_MAC_ADDRESS Bssid; ULONG Flags; } NDIS_802_11_AUTHENTICATION_REQUEST, *PNDIS_802_11_AUTHENTICATION_REQUEST; //Added new types for PMKID Candidate lists. typedef struct _PMKID_CANDIDATE { NDIS_802_11_MAC_ADDRESS BSSID; ULONG Flags; } PMKID_CANDIDATE, *PPMKID_CANDIDATE; typedef struct _NDIS_802_11_PMKID_CANDIDATE_LIST { ULONG Version; // Version of the structure ULONG NumCandidates; // No. of pmkid candidates PMKID_CANDIDATE CandidateList[1]; } NDIS_802_11_PMKID_CANDIDATE_LIST, *PNDIS_802_11_PMKID_CANDIDATE_LIST; //Flags for PMKID Candidate list structure #define NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED 0x01 // Added new types for OFDM 5G and 2.4G typedef enum _NDIS_802_11_NETWORK_TYPE { Ndis802_11FH, Ndis802_11DS, Ndis802_11OFDM5, Ndis802_11OFDM5_N, Ndis802_11OFDM24, Ndis802_11OFDM24_N, Ndis802_11Automode, Ndis802_11NetworkTypeMax // not a real type, defined as an upper bound } NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE; typedef struct _NDIS_802_11_NETWORK_TYPE_LIST { UINT NumberOfItems; // in list below, at least 1 NDIS_802_11_NETWORK_TYPE NetworkType [1]; } NDIS_802_11_NETWORK_TYPE_LIST, *PNDIS_802_11_NETWORK_TYPE_LIST; typedef enum _NDIS_802_11_POWER_MODE { Ndis802_11PowerModeCAM, Ndis802_11PowerModeMAX_PSP, Ndis802_11PowerModeFast_PSP, Ndis802_11PowerModeLegacy_PSP, Ndis802_11PowerModeMax // not a real mode, defined as an upper bound } NDIS_802_11_POWER_MODE, *PNDIS_802_11_POWER_MODE; typedef ULONG NDIS_802_11_TX_POWER_LEVEL; // in milliwatts // // Received Signal Strength Indication // typedef LONG NDIS_802_11_RSSI; // in dBm typedef struct _NDIS_802_11_CONFIGURATION_FH { ULONG Length; // Length of structure ULONG HopPattern; // As defined by 802.11, MSB set ULONG HopSet; // to one if non-802.11 ULONG DwellTime; // units are Kusec } NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH; typedef struct _NDIS_802_11_CONFIGURATION { ULONG Length; // Length of structure ULONG BeaconPeriod; // units are Kusec ULONG ATIMWindow; // units are Kusec ULONG DSConfig; // Frequency, units are kHz NDIS_802_11_CONFIGURATION_FH FHConfig; } NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION; typedef struct _NDIS_802_11_STATISTICS { ULONG Length; // Length of structure LARGE_INTEGER TransmittedFragmentCount; LARGE_INTEGER MulticastTransmittedFrameCount; LARGE_INTEGER FailedCount; LARGE_INTEGER RetryCount; LARGE_INTEGER MultipleRetryCount; LARGE_INTEGER RTSSuccessCount; LARGE_INTEGER RTSFailureCount; LARGE_INTEGER ACKFailureCount; LARGE_INTEGER FrameDuplicateCount; LARGE_INTEGER ReceivedFragmentCount; LARGE_INTEGER MulticastReceivedFrameCount; LARGE_INTEGER FCSErrorCount; LARGE_INTEGER TKIPLocalMICFailures; LARGE_INTEGER TKIPRemoteMICErrors; LARGE_INTEGER TKIPICVErrors; LARGE_INTEGER TKIPCounterMeasuresInvoked; LARGE_INTEGER TKIPReplays; LARGE_INTEGER CCMPFormatErrors; LARGE_INTEGER CCMPReplays; LARGE_INTEGER CCMPDecryptErrors; LARGE_INTEGER FourWayHandshakeFailures; } NDIS_802_11_STATISTICS, *PNDIS_802_11_STATISTICS; typedef ULONG NDIS_802_11_KEY_INDEX; typedef ULONGLONG NDIS_802_11_KEY_RSC; #define MAX_RADIUS_SRV_NUM 2 // 802.1x failover number typedef struct PACKED _RADIUS_SRV_INFO { UINT32 radius_ip; UINT32 radius_port; UCHAR radius_key[64]; UCHAR radius_key_len; } RADIUS_SRV_INFO, *PRADIUS_SRV_INFO; typedef struct PACKED _RADIUS_KEY_INFO { UCHAR radius_srv_num; RADIUS_SRV_INFO radius_srv_info[MAX_RADIUS_SRV_NUM]; UCHAR ieee8021xWEP; // dynamic WEP UCHAR key_index; UCHAR key_length; // length of key in bytes UCHAR key_material[13]; } RADIUS_KEY_INFO, *PRADIUS_KEY_INFO; // It's used by 802.1x daemon to require relative configuration typedef struct PACKED _RADIUS_CONF { UINT32 Length; // Length of this structure UCHAR mbss_num; // indicate multiple BSS number UINT32 own_ip_addr; UINT32 retry_interval; UINT32 session_timeout_interval; UCHAR EAPifname[IFNAMSIZ]; UCHAR EAPifname_len; UCHAR PreAuthifname[IFNAMSIZ]; UCHAR PreAuthifname_len; RADIUS_KEY_INFO RadiusInfo[8/*MAX_MBSSID_NUM*/]; } RADIUS_CONF, *PRADIUS_CONF; #ifdef CONFIG_STA_SUPPORT // Key mapping keys require a BSSID typedef struct _NDIS_802_11_KEY { UINT Length; // Length of this structure UINT KeyIndex; UINT KeyLength; // length of key in bytes NDIS_802_11_MAC_ADDRESS BSSID; NDIS_802_11_KEY_RSC KeyRSC; UCHAR KeyMaterial[1]; // variable length depending on above field } NDIS_802_11_KEY, *PNDIS_802_11_KEY; #endif // CONFIG_STA_SUPPORT // typedef struct _NDIS_802_11_REMOVE_KEY { UINT Length; // Length of this structure UINT KeyIndex; NDIS_802_11_MAC_ADDRESS BSSID; } NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY; typedef struct _NDIS_802_11_WEP { UINT Length; // Length of this structure UINT KeyIndex; // 0 is the per-client key, 1-N are the // global keys UINT KeyLength; // length of key in bytes UCHAR KeyMaterial[1];// variable length depending on above field } NDIS_802_11_WEP, *PNDIS_802_11_WEP; typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE { Ndis802_11IBSS, Ndis802_11Infrastructure, Ndis802_11AutoUnknown, Ndis802_11Monitor, Ndis802_11InfrastructureMax // Not a real value, defined as upper bound } NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE; // Add new authentication modes typedef enum _NDIS_802_11_AUTHENTICATION_MODE { Ndis802_11AuthModeOpen, Ndis802_11AuthModeShared, Ndis802_11AuthModeAutoSwitch, Ndis802_11AuthModeWPA, Ndis802_11AuthModeWPAPSK, Ndis802_11AuthModeWPANone, Ndis802_11AuthModeWPA2, Ndis802_11AuthModeWPA2PSK, Ndis802_11AuthModeWPA1WPA2, Ndis802_11AuthModeWPA1PSKWPA2PSK, Ndis802_11AuthModeMax // Not a real mode, defined as upper bound } NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE; typedef UCHAR NDIS_802_11_RATES[NDIS_802_11_LENGTH_RATES]; // Set of 8 data rates typedef UCHAR NDIS_802_11_RATES_EX[NDIS_802_11_LENGTH_RATES_EX]; // Set of 16 data rates typedef struct PACKED _NDIS_802_11_SSID { UINT SsidLength; // length of SSID field below, in bytes; // this can be zero. UCHAR Ssid[NDIS_802_11_LENGTH_SSID]; // SSID information field } NDIS_802_11_SSID, *PNDIS_802_11_SSID; typedef struct PACKED _NDIS_WLAN_BSSID { ULONG Length; // Length of this structure NDIS_802_11_MAC_ADDRESS MacAddress; // BSSID UCHAR Reserved[2]; NDIS_802_11_SSID Ssid; // SSID ULONG Privacy; // WEP encryption requirement NDIS_802_11_RSSI Rssi; // receive signal strength in dBm NDIS_802_11_NETWORK_TYPE NetworkTypeInUse; NDIS_802_11_CONFIGURATION Configuration; NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode; NDIS_802_11_RATES SupportedRates; } NDIS_WLAN_BSSID, *PNDIS_WLAN_BSSID; typedef struct PACKED _NDIS_802_11_BSSID_LIST { UINT NumberOfItems; // in list below, at least 1 NDIS_WLAN_BSSID Bssid[1]; } NDIS_802_11_BSSID_LIST, *PNDIS_802_11_BSSID_LIST; // Added Capabilities, IELength and IEs for each BSSID typedef struct PACKED _NDIS_WLAN_BSSID_EX { ULONG Length; // Length of this structure NDIS_802_11_MAC_ADDRESS MacAddress; // BSSID UCHAR Reserved[2]; NDIS_802_11_SSID Ssid; // SSID UINT Privacy; // WEP encryption requirement NDIS_802_11_RSSI Rssi; // receive signal // strength in dBm NDIS_802_11_NETWORK_TYPE NetworkTypeInUse; NDIS_802_11_CONFIGURATION Configuration; NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode; NDIS_802_11_RATES_EX SupportedRates; ULONG IELength; UCHAR IEs[1]; } NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX; typedef struct PACKED _NDIS_802_11_BSSID_LIST_EX { UINT NumberOfItems; // in list below, at least 1 NDIS_WLAN_BSSID_EX Bssid[1]; } NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX; typedef struct PACKED _NDIS_802_11_FIXED_IEs { UCHAR Timestamp[8]; USHORT BeaconInterval; USHORT Capabilities; } NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs; typedef struct _NDIS_802_11_VARIABLE_IEs { UCHAR ElementID; UCHAR Length; // Number of bytes in data field UCHAR data[1]; } NDIS_802_11_VARIABLE_IEs, *PNDIS_802_11_VARIABLE_IEs; typedef ULONG NDIS_802_11_FRAGMENTATION_THRESHOLD; typedef ULONG NDIS_802_11_RTS_THRESHOLD; typedef ULONG NDIS_802_11_ANTENNA; typedef enum _NDIS_802_11_PRIVACY_FILTER { Ndis802_11PrivFilterAcceptAll, Ndis802_11PrivFilter8021xWEP } NDIS_802_11_PRIVACY_FILTER, *PNDIS_802_11_PRIVACY_FILTER; // Added new encryption types // Also aliased typedef to new name typedef enum _NDIS_802_11_WEP_STATUS { Ndis802_11WEPEnabled, Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled, Ndis802_11WEPDisabled, Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled, Ndis802_11WEPKeyAbsent, Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent, Ndis802_11WEPNotSupported, Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported, Ndis802_11Encryption2Enabled, Ndis802_11Encryption2KeyAbsent, Ndis802_11Encryption3Enabled, Ndis802_11Encryption3KeyAbsent, Ndis802_11Encryption4Enabled, // TKIP or AES mix Ndis802_11Encryption4KeyAbsent, } NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS, NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS; typedef enum _NDIS_802_11_RELOAD_DEFAULTS { Ndis802_11ReloadWEPKeys } NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS; #define NDIS_802_11_AI_REQFI_CAPABILITIES 1 #define NDIS_802_11_AI_REQFI_LISTENINTERVAL 2 #define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS 4 #define NDIS_802_11_AI_RESFI_CAPABILITIES 1 #define NDIS_802_11_AI_RESFI_STATUSCODE 2 #define NDIS_802_11_AI_RESFI_ASSOCIATIONID 4 typedef struct _NDIS_802_11_AI_REQFI { USHORT Capabilities; USHORT ListenInterval; NDIS_802_11_MAC_ADDRESS CurrentAPAddress; } NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI; typedef struct _NDIS_802_11_AI_RESFI { USHORT Capabilities; USHORT StatusCode; USHORT AssociationId; } NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI; typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION { ULONG Length; USHORT AvailableRequestFixedIEs; NDIS_802_11_AI_REQFI RequestFixedIEs; ULONG RequestIELength; ULONG OffsetRequestIEs; USHORT AvailableResponseFixedIEs; NDIS_802_11_AI_RESFI ResponseFixedIEs; ULONG ResponseIELength; ULONG OffsetResponseIEs; } NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION; typedef struct _NDIS_802_11_AUTHENTICATION_EVENT { NDIS_802_11_STATUS_INDICATION Status; NDIS_802_11_AUTHENTICATION_REQUEST Request[1]; } NDIS_802_11_AUTHENTICATION_EVENT, *PNDIS_802_11_AUTHENTICATION_EVENT; // 802.11 Media stream constraints, associated with OID_802_11_MEDIA_STREAM_MODE typedef enum _NDIS_802_11_MEDIA_STREAM_MODE { Ndis802_11MediaStreamOff, Ndis802_11MediaStreamOn, } NDIS_802_11_MEDIA_STREAM_MODE, *PNDIS_802_11_MEDIA_STREAM_MODE; // PMKID Structures typedef UCHAR NDIS_802_11_PMKID_VALUE[16]; #ifdef CONFIG_STA_SUPPORT typedef struct _BSSID_INFO { NDIS_802_11_MAC_ADDRESS BSSID; NDIS_802_11_PMKID_VALUE PMKID; } BSSID_INFO, *PBSSID_INFO; typedef struct _NDIS_802_11_PMKID { UINT Length; UINT BSSIDInfoCount; BSSID_INFO BSSIDInfo[1]; } NDIS_802_11_PMKID, *PNDIS_802_11_PMKID; #endif // CONFIG_STA_SUPPORT // typedef struct _NDIS_802_11_AUTHENTICATION_ENCRYPTION { NDIS_802_11_AUTHENTICATION_MODE AuthModeSupported; NDIS_802_11_ENCRYPTION_STATUS EncryptStatusSupported; } NDIS_802_11_AUTHENTICATION_ENCRYPTION, *PNDIS_802_11_AUTHENTICATION_ENCRYPTION; typedef struct _NDIS_802_11_CAPABILITY { ULONG Length; ULONG Version; ULONG NoOfPMKIDs; ULONG NoOfAuthEncryptPairsSupported; NDIS_802_11_AUTHENTICATION_ENCRYPTION AuthenticationEncryptionSupported[1]; } NDIS_802_11_CAPABILITY, *PNDIS_802_11_CAPABILITY; //#endif //of WIN 2k #endif //UNDER_CE #if WIRELESS_EXT <= 11 #ifndef SIOCDEVPRIVATE #define SIOCDEVPRIVATE 0x8BE0 #endif #define SIOCIWFIRSTPRIV SIOCDEVPRIVATE #endif #ifdef CONFIG_STA_SUPPORT #define RTPRIV_IOCTL_SET (SIOCIWFIRSTPRIV + 0x02) #ifdef DBG #define RTPRIV_IOCTL_BBP (SIOCIWFIRSTPRIV + 0x03) #define RTPRIV_IOCTL_MAC (SIOCIWFIRSTPRIV + 0x05) #define RTPRIV_IOCTL_E2P (SIOCIWFIRSTPRIV + 0x07) #endif #ifdef RALINK_ATE #ifdef RALINK_28xx_QA #define RTPRIV_IOCTL_ATE (SIOCIWFIRSTPRIV + 0x08) #endif // RALINK_28xx_QA // #endif // RALINK_ATE // #define RTPRIV_IOCTL_STATISTICS (SIOCIWFIRSTPRIV + 0x09) #define RTPRIV_IOCTL_ADD_PMKID_CACHE (SIOCIWFIRSTPRIV + 0x0A) #define RTPRIV_IOCTL_RADIUS_DATA (SIOCIWFIRSTPRIV + 0x0C) #define RTPRIV_IOCTL_GSITESURVEY (SIOCIWFIRSTPRIV + 0x0D) #define RT_PRIV_IOCTL (SIOCIWFIRSTPRIV + 0x0E) // Sync. with RT61 (for wpa_supplicant) #define RTPRIV_IOCTL_GET_MAC_TABLE (SIOCIWFIRSTPRIV + 0x0F) #define RTPRIV_IOCTL_SHOW (SIOCIWFIRSTPRIV + 0x11) enum { SHOW_CONN_STATUS = 4, SHOW_DRVIER_VERION = 5, SHOW_BA_INFO = 6, SHOW_DESC_INFO = 7, RAIO_OFF = 10, RAIO_ON = 11, #ifdef QOS_DLS_SUPPORT SHOW_DLS_ENTRY_INFO = 19, #endif // QOS_DLS_SUPPORT // SHOW_CFG_VALUE = 20, }; #endif // CONFIG_STA_SUPPORT // #ifdef SNMP_SUPPORT //SNMP ieee 802dot11, kathy , 2008_0220 // dot11res(3) #define RT_OID_802_11_MANUFACTUREROUI 0x0700 #define RT_OID_802_11_MANUFACTURERNAME 0x0701 #define RT_OID_802_11_RESOURCETYPEIDNAME 0x0702 // dot11smt(1) #define RT_OID_802_11_PRIVACYOPTIONIMPLEMENTED 0x0703 #define RT_OID_802_11_POWERMANAGEMENTMODE 0x0704 #define OID_802_11_WEPDEFAULTKEYVALUE 0x0705 // read , write #define OID_802_11_WEPDEFAULTKEYID 0x0706 #define RT_OID_802_11_WEPKEYMAPPINGLENGTH 0x0707 #define OID_802_11_SHORTRETRYLIMIT 0x0708 #define OID_802_11_LONGRETRYLIMIT 0x0709 #define RT_OID_802_11_PRODUCTID 0x0710 #define RT_OID_802_11_MANUFACTUREID 0x0711 // //dot11Phy(4) #define OID_802_11_CURRENTCHANNEL 0x0712 //dot11mac #define RT_OID_802_11_MAC_ADDRESS 0x0713 #endif // SNMP_SUPPORT // #define OID_802_11_BUILD_CHANNEL_EX 0x0714 #define OID_802_11_GET_CH_LIST 0x0715 #define OID_802_11_GET_COUNTRY_CODE 0x0716 #define OID_802_11_GET_CHANNEL_GEOGRAPHY 0x0717 #ifdef LLTD_SUPPORT // for consistency with RT61 #define RT_OID_GET_PHY_MODE 0x761 #endif // LLTD_SUPPORT // // New for MeetingHouse Api support #define OID_MH_802_1X_SUPPORTED 0xFFEDC100 // MIMO Tx parameter, ShortGI, MCS, STBC, etc. these are fields in TXWI. Don't change this definition!!! typedef union _HTTRANSMIT_SETTING { #ifdef RT_BIG_ENDIAN struct { USHORT MODE:2; // Use definition MODE_xxx. USHORT TxBF:1; USHORT rsv:2; USHORT STBC:2; //SPACE USHORT ShortGI:1; USHORT BW:1; //channel bandwidth 20MHz or 40 MHz USHORT MCS:7; // MCS } field; #else struct { USHORT MCS:7; // MCS USHORT BW:1; //channel bandwidth 20MHz or 40 MHz USHORT ShortGI:1; USHORT STBC:2; //SPACE USHORT rsv:2; USHORT TxBF:1; USHORT MODE:2; // Use definition MODE_xxx. } field; #endif USHORT word; } HTTRANSMIT_SETTING, *PHTTRANSMIT_SETTING; typedef enum _RT_802_11_PREAMBLE { Rt802_11PreambleLong, Rt802_11PreambleShort, Rt802_11PreambleAuto } RT_802_11_PREAMBLE, *PRT_802_11_PREAMBLE; // Only for STA, need to sync with AP // 2005-03-08 match current RaConfig. typedef enum _RT_802_11_PHY_MODE { PHY_11BG_MIXED = 0, PHY_11B, PHY_11A, PHY_11ABG_MIXED, PHY_11G, #ifdef DOT11_N_SUPPORT PHY_11ABGN_MIXED, // both band 5 PHY_11N_2_4G, // 11n-only with 2.4G band 6 PHY_11GN_MIXED, // 2.4G band 7 PHY_11AN_MIXED, // 5G band 8 PHY_11BGN_MIXED, // if check 802.11b. 9 PHY_11AGN_MIXED, // if check 802.11b. 10 PHY_11N_5G, // 11n-only with 5G band 11 #endif // DOT11_N_SUPPORT // } RT_802_11_PHY_MODE; // put all proprietery for-query objects here to reduce # of Query_OID typedef struct _RT_802_11_LINK_STATUS { ULONG CurrTxRate; // in units of 0.5Mbps ULONG ChannelQuality; // 0..100 % ULONG TxByteCount; // both ok and fail ULONG RxByteCount; // both ok and fail ULONG CentralChannel; // 40MHz central channel number } RT_802_11_LINK_STATUS, *PRT_802_11_LINK_STATUS; typedef struct _RT_802_11_EVENT_LOG { LARGE_INTEGER SystemTime; // timestammp via NdisGetCurrentSystemTime() UCHAR Addr[MAC_ADDR_LENGTH]; USHORT Event; // EVENT_xxx } RT_802_11_EVENT_LOG, *PRT_802_11_EVENT_LOG; typedef struct _RT_802_11_EVENT_TABLE { ULONG Num; ULONG Rsv; // to align Log[] at LARGE_INEGER boundary RT_802_11_EVENT_LOG Log[MAX_NUMBER_OF_EVENT]; } RT_802_11_EVENT_TABLE, PRT_802_11_EVENT_TABLE; // MIMO Tx parameter, ShortGI, MCS, STBC, etc. these are fields in TXWI. Don't change this definition!!! typedef union _MACHTTRANSMIT_SETTING { struct { USHORT MCS:7; // MCS USHORT BW:1; //channel bandwidth 20MHz or 40 MHz USHORT ShortGI:1; USHORT STBC:2; //SPACE USHORT rsv:3; USHORT MODE:2; // Use definition MODE_xxx. } field; USHORT word; } MACHTTRANSMIT_SETTING, *PMACHTTRANSMIT_SETTING; typedef struct _RT_802_11_MAC_ENTRY { UCHAR Addr[MAC_ADDR_LENGTH]; UCHAR Aid; UCHAR Psm; // 0:PWR_ACTIVE, 1:PWR_SAVE UCHAR MimoPs; // 0:MMPS_STATIC, 1:MMPS_DYNAMIC, 3:MMPS_Enabled CHAR AvgRssi0; CHAR AvgRssi1; CHAR AvgRssi2; UINT32 ConnectedTime; MACHTTRANSMIT_SETTING TxRate; } RT_802_11_MAC_ENTRY, *PRT_802_11_MAC_ENTRY; typedef struct _RT_802_11_MAC_TABLE { ULONG Num; RT_802_11_MAC_ENTRY Entry[MAX_NUMBER_OF_MAC]; } RT_802_11_MAC_TABLE, *PRT_802_11_MAC_TABLE; // structure for query/set hardware register - MAC, BBP, RF register typedef struct _RT_802_11_HARDWARE_REGISTER { ULONG HardwareType; // 0:MAC, 1:BBP, 2:RF register, 3:EEPROM ULONG Offset; // Q/S register offset addr ULONG Data; // R/W data buffer } RT_802_11_HARDWARE_REGISTER, *PRT_802_11_HARDWARE_REGISTER; typedef struct _RT_802_11_AP_CONFIG { ULONG EnableTxBurst; // 0-disable, 1-enable ULONG EnableTurboRate; // 0-disable, 1-enable 72/100mbps turbo rate ULONG IsolateInterStaTraffic; // 0-disable, 1-enable isolation ULONG HideSsid; // 0-disable, 1-enable hiding ULONG UseBGProtection; // 0-AUTO, 1-always ON, 2-always OFF ULONG UseShortSlotTime; // 0-no use, 1-use 9-us short slot time ULONG Rsv1; // must be 0 ULONG SystemErrorBitmap; // ignore upon SET, return system error upon QUERY } RT_802_11_AP_CONFIG, *PRT_802_11_AP_CONFIG; // structure to query/set STA_CONFIG typedef struct _RT_802_11_STA_CONFIG { ULONG EnableTxBurst; // 0-disable, 1-enable ULONG EnableTurboRate; // 0-disable, 1-enable 72/100mbps turbo rate ULONG UseBGProtection; // 0-AUTO, 1-always ON, 2-always OFF ULONG UseShortSlotTime; // 0-no use, 1-use 9-us short slot time when applicable ULONG AdhocMode; // 0-11b rates only (WIFI spec), 1 - b/g mixed, 2 - g only ULONG HwRadioStatus; // 0-OFF, 1-ON, default is 1, Read-Only ULONG Rsv1; // must be 0 ULONG SystemErrorBitmap; // ignore upon SET, return system error upon QUERY } RT_802_11_STA_CONFIG, *PRT_802_11_STA_CONFIG; // // For OID Query or Set about BA structure // typedef struct _OID_BACAP_STRUC { UCHAR RxBAWinLimit; UCHAR TxBAWinLimit; UCHAR Policy; // 0: DELAY_BA 1:IMMED_BA (//BA Policy subfiled value in ADDBA frame) 2:BA-not use. other value invalid UCHAR MpduDensity; // 0: DELAY_BA 1:IMMED_BA (//BA Policy subfiled value in ADDBA frame) 2:BA-not use. other value invalid UCHAR AmsduEnable; //Enable AMSDU transmisstion UCHAR AmsduSize; // 0:3839, 1:7935 bytes. UINT MSDUSizeToBytes[] = { 3839, 7935}; UCHAR MMPSmode; // MIMO power save more, 0:static, 1:dynamic, 2:rsv, 3:mimo enable BOOLEAN AutoBA; // Auto BA will automatically } OID_BACAP_STRUC, *POID_BACAP_STRUC; typedef struct _RT_802_11_ACL_ENTRY { UCHAR Addr[MAC_ADDR_LENGTH]; USHORT Rsv; } RT_802_11_ACL_ENTRY, *PRT_802_11_ACL_ENTRY; typedef struct PACKED _RT_802_11_ACL { ULONG Policy; // 0-disable, 1-positive list, 2-negative list ULONG Num; RT_802_11_ACL_ENTRY Entry[MAX_NUMBER_OF_ACL]; } RT_802_11_ACL, *PRT_802_11_ACL; typedef struct _RT_802_11_WDS { ULONG Num; NDIS_802_11_MAC_ADDRESS Entry[24/*MAX_NUM_OF_WDS_LINK*/]; ULONG KeyLength; UCHAR KeyMaterial[32]; } RT_802_11_WDS, *PRT_802_11_WDS; typedef struct _RT_802_11_TX_RATES_ { UCHAR SupRateLen; UCHAR SupRate[MAX_LENGTH_OF_SUPPORT_RATES]; UCHAR ExtRateLen; UCHAR ExtRate[MAX_LENGTH_OF_SUPPORT_RATES]; } RT_802_11_TX_RATES, *PRT_802_11_TX_RATES; // Definition of extra information code #define GENERAL_LINK_UP 0x0 // Link is Up #define GENERAL_LINK_DOWN 0x1 // Link is Down #define HW_RADIO_OFF 0x2 // Hardware radio off #define SW_RADIO_OFF 0x3 // Software radio off #define AUTH_FAIL 0x4 // Open authentication fail #define AUTH_FAIL_KEYS 0x5 // Shared authentication fail #define ASSOC_FAIL 0x6 // Association failed #define EAP_MIC_FAILURE 0x7 // Deauthencation because MIC failure #define EAP_4WAY_TIMEOUT 0x8 // Deauthencation on 4-way handshake timeout #define EAP_GROUP_KEY_TIMEOUT 0x9 // Deauthencation on group key handshake timeout #define EAP_SUCCESS 0xa // EAP succeed #define DETECT_RADAR_SIGNAL 0xb // Radar signal occur in current channel #define EXTRA_INFO_MAX 0xb // Indicate Last OID #define EXTRA_INFO_CLEAR 0xffffffff // This is OID setting structure. So only GF or MM as Mode. This is valid when our wirelss mode has 802.11n in use. typedef struct { RT_802_11_PHY_MODE PhyMode; // UCHAR TransmitNo; UCHAR HtMode; //HTMODE_GF or HTMODE_MM UCHAR ExtOffset; //extension channel above or below UCHAR MCS; UCHAR BW; UCHAR STBC; UCHAR SHORTGI; UCHAR rsv; } OID_SET_HT_PHYMODE, *POID_SET_HT_PHYMODE; #ifdef LLTD_SUPPORT typedef struct _RT_LLTD_ASSOICATION_ENTRY { UCHAR Addr[ETH_LENGTH_OF_ADDRESS]; unsigned short MOR; // maximum operational rate UCHAR phyMode; } RT_LLTD_ASSOICATION_ENTRY, *PRT_LLTD_ASSOICATION_ENTRY; typedef struct _RT_LLTD_ASSOICATION_TABLE { unsigned int Num; RT_LLTD_ASSOICATION_ENTRY Entry[MAX_NUMBER_OF_MAC]; } RT_LLTD_ASSOICATION_TABLE, *PRT_LLTD_ASSOICATION_TABLE; #endif // LLTD_SUPPORT // #ifdef CONFIG_STA_SUPPORT #ifdef QOS_DLS_SUPPORT //rt2860, kathy 2007-0118 // structure for DLS typedef struct _RT_802_11_DLS_UI { USHORT TimeOut; // unit: second , set by UI USHORT CountDownTimer; // unit: second , used by driver only NDIS_802_11_MAC_ADDRESS MacAddr; // set by UI UCHAR Status; // 0: none , 1: wait STAkey, 2: finish DLS setup , set by driver only BOOLEAN Valid; // 1: valid , 0: invalid , set by UI, use to setup or tear down DLS link } RT_802_11_DLS_UI, *PRT_802_11_DLS_UI; typedef struct _RT_802_11_DLS_INFO { RT_802_11_DLS_UI Entry[MAX_NUMBER_OF_DLS_ENTRY]; UCHAR num; } RT_802_11_DLS_INFO, *PRT_802_11_DLS_INFO; typedef enum _RT_802_11_DLS_MODE { DLS_NONE, DLS_WAIT_KEY, DLS_FINISH } RT_802_11_DLS_MODE; #endif // QOS_DLS_SUPPORT // #ifdef WPA_SUPPLICANT_SUPPORT #ifndef NATIVE_WPA_SUPPLICANT_SUPPORT #define RT_ASSOC_EVENT_FLAG 0x0101 #define RT_DISASSOC_EVENT_FLAG 0x0102 #define RT_REQIE_EVENT_FLAG 0x0103 #define RT_RESPIE_EVENT_FLAG 0x0104 #define RT_ASSOCINFO_EVENT_FLAG 0x0105 #define RT_PMKIDCAND_FLAG 0x0106 #define RT_INTERFACE_DOWN 0x0107 #define RT_INTERFACE_UP 0x0108 #endif // NATIVE_WPA_SUPPLICANT_SUPPORT // #endif // WPA_SUPPLICANT_SUPPORT // #endif // CONFIG_STA_SUPPORT // #define MAX_CUSTOM_LEN 128 #ifdef CONFIG_STA_SUPPORT typedef enum _RT_802_11_D_CLIENT_MODE { Rt802_11_D_None, Rt802_11_D_Flexible, Rt802_11_D_Strict, } RT_802_11_D_CLIENT_MODE, *PRT_802_11_D_CLIENT_MODE; #endif // CONFIG_STA_SUPPORT // typedef struct _RT_CHANNEL_LIST_INFO { UCHAR ChannelList[MAX_NUM_OF_CHS]; // list all supported channels for site survey UCHAR ChannelListNum; // number of channel in ChannelList[] } RT_CHANNEL_LIST_INFO, *PRT_CHANNEL_LIST_INFO; #endif // _OID_H_