📄 utility.h
字号:
//---------------------------------------------------------------------------
//Copyright (C) 2006, Freescale Semiconductor, Inc. All Rights Reserved.
// THIS SOURCE CODE, AND ITS USE AND DISTRIBUTION, IS SUBJECT TO THE TERMS
// AND CONDITIONS OF THE APPLICABLE LICENSE AGREEMENT
//--------------------------------------------------------------------------
//
// File: utility.h
// Header file for platform specific SDIO WLAN functions
//------------------------------------------------------------------------------
#ifndef CFSD_NDUTILITY_H
#define CFSD_NDUTILITY_H
/*************************************************************************/
/*** Included Headers */
/*************************************************************************/
#include "mib_id.h"
/*************************************************************************/
/*** Public Constant Defintions */
/*************************************************************************/
// no trace support under Windows
#define TRACE(x, y)
// Vendor information.
#define VENDOR_ID 0x4321 // Device vendor ID.
#define VENDOR_MAJOR_VERSION ((1<<8) | 110)
#define VENDOR_MINOR_VERSION ((1<<8) | 2)
#define MAX_RX_PACKETS 32
#define MAX_RX_PENDING_PACKETS 24
#define MAX_MULTICAST_ADDRESSES 32
// Ethernet packet related definitions.
#define ETHER_MAX_FRAME_SIZE 1514 // Max packet length of Ethernet 802.3.
#define ETHER_HDR_SIZE 14 // Header length of Ethernet 802.3.
#define ETHER_TYPE_SIZE 2 // Type/length size in Ethernet 802.3 header.
#define DAT_SIZE_ETHERNET_HDR (14)
/* From [1] section 18.12: the standard 802.2 Logical Link Control (LLC)
and SubNetwork Attachment Point (SNAP) header is as follows:
- LLC (AA.AA.03)
- OUI1 (00)
- OUI2 (00.00)
- TYPE (08.00)
*/
#define DAT_SIZE_LLC_AND_SNAP_HDR (8)
// Ethernet type/length field.
#define DAT_SIZE_ETHERNET_TYPE (2)
#define DAT_ETHERNET_DEST(x) ((PUCHAR)(x) + 0)
#define DAT_ETHERNET_SRC(x) ((PUCHAR)(x) + 6)
#define DAT_ETHERNET_TYPE(x) ((PUCHAR)(x) + 12)
#define DAT_ETHERNET_LENGTH(x) ((PUCHAR)(x) + 12)
#define DAT_ETHERNET_PAYLOAD(x) ((PUCHAR)(x) + 14)
// Macros used to check destination address.
#define DAT_IS_DIRECTED_PKT(x) ((((PUCHAR)x)[0] & 1) == 0)
#define DAT_IS_BROADCAST_PKT(x) ((((PUCHAR)x)[0] == 0xFF) && \
(((PUCHAR)x)[1] == 0xFF) && \
(((PUCHAR)x)[2] == 0xFF) && \
(((PUCHAR)x)[3] == 0xFF) && \
(((PUCHAR)x)[4] == 0xFF) && \
(((PUCHAR)x)[5] == 0xFF))
// Data packet type.
#define DAT_TYPE_EAPOL (0x888E)
/* Various IEEE-defined values */
#define FRAME_EL_ESSID 0 /* ess id */
#define FRAME_EL_SUPPORTED_RATES 1 /* Supported phy rates */
#define FRAME_EL_DS_PARAMETER_SET 3 /* Direct-sequence paramters */
#define FRAME_EL_COUNTRY 7 // Country - see 802.11d,j
#define FRAME_EL_RSN 48 /* RSN (Robust Security Network) */
#define FRAME_EL_EX_SUPPORTED_RATES 50 /* Extended supported rates (g) */
#define FRAME_EL_AP_CHANNEL_REPORT 51 // see 802.11k
#define FRAME_EL_BSS_LOAD 55 // see 802.11k
#define FRAME_EL_VENDOR_SPECIFIC 221 // WiFi extensions - used for WPA
#define FRAME_CAPINFO_ESS_MASK 0x0001
#define FRAME_CAPINFO_IBSS_MASK 0x0002
#define FRAME_CAPINFO_PRIVACY_MASK 0x0010
#define FRAME_CAPINFO_SHORT_PREAMBLE_MASK 0x0020
#define FRAME_CAPINFO_SHORT_SLOT_MASK 0x0400
#define FRAME_REASON_DEAUTH_SENDER_LEAVING 3
#define FRAME_REASON_MIC_FAILURE 14
// Version 2 current as of initial WPA2 support
#define DRIVER_OID_802_11_CAPABILITY_VERSION 2
// Resources buffer size.
#define END_RESOURCE_BUF_SIZE (sizeof(NDIS_RESOURCE_LIST) + \
5 * sizeof(CM_PARTIAL_RESOURCE_DESCRIPTOR))
#define END_MAX_ACTIVE_REG_PATH (256)
// Timeout (millisecond) for device initialization.
#define END_INITIAL_TIMEOUT (2000)
// Timeout (second) for TKIP MIC error handling.
#define END_MIC_ERROR_TIMEOUT (60)
#define END_CHECKFORHANG_INTERVAL (2)
// Maximum number of BSSID supported.
#define END_MAX_BSSID_NUM (32)
// Maximum size of variable-length IEs.
#define END_MAX_IES_SIZE (128)
// Maximum number of authentication/encryption supported table
#define END_MAX_AUTH_ENC_NUM (14)
// Default supported rates bitmaps.
#define END_802_11A_BASIC_RATES (0x0015)
#define END_802_11A_COMMON_RATES (0x00FF)
#define END_802_11B_BASIC_RATES (0x000F)
#define END_802_11B_COMMON_RATES (0x000F)
#define END_802_11G_BASIC_RATES (0x026F)
#define END_802_11G_COMMON_RATES (0x3AFF)
// Dot11 OIDs.
#define OID_DOT11_NDIS_START 0x0D010300
#define OID_DOT11_CURRENT_REG_DOMAIN (OID_DOT11_NDIS_START + 39)
// Custom OIDs.
#define OID_COMMASIC_TX_THRUPUT_PS_THRESHOLD 0xFF432101
#define OID_COMMASIC_RX_THRUPUT_PS_THRESHOLD 0xFF432102
#define OID_COMMASIC_SHORT_PREAMBLE 0xFF432103
#define OID_COMMASIC_RX_BUF_OVERFLOW_CT 0xFF432104
#define OID_COMMASIC_RESET 0xFF432105
#define OID_COMMASIC_UWA_SENS_LOCKOUT 0xFF432106
#define OID_COMMASIC_RX_STATS 0xFF432107
#define OID_COMMASIC_CONFIG 0xFF432108
#define OID_COMMASIC_SNR 0xFF432109
#define OID_COMMASIC_GEN_STATS 0xFF43210A
#define OID_COMMASIC_RADIO 0xFF43210B
#define OID_COMMASIC_IBSS_CHANNEL 0xFF43210C
//#define OID_COMMASIC_BACKGROUND_SCAN_CONFIG 0xFF43210D
#define OID_COMMASIC_CARD_CAPABILITIES 0xFF43210E
#define OID_COMMASIC_FORCE_TX_RATE 0xFF43210F
#define OID_COMMASIC_CARD_STATUS 0xFF432111
#define OID_COMMASIC_CARD_CIS 0xFF432112
#define OID_COMMASIC_REGISTER 0xFF432113
#define OID_COMMASIC_UTIL_STATUS 0xFF432121
#define OID_COMMASIC_UTIL_SIGNAL 0xFF432122
#define OID_COMMASIC_UTIL_STAT 0xFF432123
#define OID_COMMASIC_GET_MIB_ATTR 0xFF432124
#define OID_QUERY_STATUS 0xFF432125
#define OID_COMMASIC_DBG_LEV 0xFF432126
#ifdef CA_CE_GROUND
#define OID_COMMASIC_CARADIO_INIT 0xFF432161
#define OID_COMMASIC_CARADIO_LOAD 0xFF432162
#define OID_COMMASIC_CARADIO_SEQ 0xFF432163
#define OID_COMMASIC_CARADIO_RES 0xFF432164
#define CE_LOCAL 1
#define CE_PASSTHROUGH 2
#define MAX_CA_PKT_LENGTH 200
#define CA_HEAD 4
#define MAX_MSG_LENGTH MAX_CA_PKT_LENGTH + CA_HEAD
#define MSG_REQUEST 1
#define MSG_RESPONSE 2
typedef struct {
unsigned char msgType;
unsigned char msgLen;
unsigned char moreData;
unsigned char reserved;
unsigned char msg[MAX_CA_PKT_LENGTH];
} caMsg;
#endif
#define MAX_RTS_THR 2347
#define MIN_RTS_THR 0
#define MAX_FRAG_THR 2346
#define MIN_FRAG_THR 256
#define IW_AUTH_WPA_VERSION 0
#define IW_AUTH_CIPHER_PAIRWISE 1
#define IW_AUTH_CIPHER_GROUP 2
#define IW_AUTH_KEY_MGMT 3
#define IW_AUTH_TKIP_COUNTERMEASURES 4
#define IW_AUTH_DROP_UNENCRYPTED 5
#define IW_AUTH_80211_AUTH_ALG 6
#define IW_AUTH_WPA_ENABLED 7
#define IW_AUTH_RX_UNENCRYPTED_EAPOL 8
#define IW_AUTH_ROAMING_CONTROL 9
#define IW_AUTH_PRIVACY_INVOKED 10
/* IW_AUTH_WPA_VERSION values (bit field) */
#define IW_AUTH_WPA_VERSION_DISABLED 0x00000001
#define IW_AUTH_WPA_VERSION_WPA 0x00000002
#define IW_AUTH_WPA_VERSION_WPA2 0x00000004
/* IW_AUTH_PAIRWISE_CIPHER and IW_AUTH_GROUP_CIPHER values (bit field) */
#define IW_AUTH_CIPHER_NONE 0x00000001
#define IW_AUTH_CIPHER_WEP40 0x00000002
#define IW_AUTH_CIPHER_TKIP 0x00000004
#define IW_AUTH_CIPHER_CCMP 0x00000008
#define IW_AUTH_CIPHER_WEP104 0x00000010
/* IW_AUTH_KEY_MGMT values (bit field) */
#define IW_AUTH_KEY_MGMT_802_1X 1
#define IW_AUTH_KEY_MGMT_PSK 2
/* IW_AUTH_80211_AUTH_ALG values (bit field) */
#define IW_AUTH_ALG_OPEN_SYSTEM 0x00000001
#define IW_AUTH_ALG_SHARED_KEY 0x00000002
#define IW_AUTH_ALG_LEAP 0x00000004
/*************************************************************************/
/*** Public Macro Definitions */
/*************************************************************************/
/*************************************************************************/
/*** Public Type Definitions */
/*************************************************************************/
// NET state.
typedef enum
{
NET_STOPPED,
NET_SETUP,
NET_CONNECTING,
NET_CONNECTED,
NET_DISCONNECTING,
NET_DISCONNECTED
} NET_STATE;
// MIC error handling state.
typedef enum
{
MICERR_INIT,
MICERR_ONEERROR,
MICERR_FILTERON,
MICERR_TXEAPOL,
MICERR_DISASSOC
} MICERR_STATE;
#pragma pack(push,4)
#define OID_802_11_MEDIA_STREAM_MODE 0x0D010121
// 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;
#define OID_802_11_CAPABILITY 0x0D010122
#define OID_802_11_PMKID 0x0D010123
#define Ndis802_11AuthModeWPA2 6
#define Ndis802_11AuthModeWPA2PSK 7
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;
typedef UCHAR NDIS_802_11_PMKID_VALUE[16];
typedef struct _BSSIDInfo
{
NDIS_802_11_MAC_ADDRESS BSSID;
NDIS_802_11_PMKID_VALUE PMKID;
} BSSIDInfo, *PBSSIDInfo;
typedef struct _NDIS_802_11_PMKID
{
ULONG Length;
ULONG BSSIDInfoCount;
BSSIDInfo BSSIDInfo[1];
} NDIS_802_11_PMKID, *PNDIS_802_11PMKID;
#define NDIS_802_11_LENGTH_RATES_EX 16
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;
// Pending OID request.
typedef struct
{
NDIS_OID ulOid;
PVOID pvBuffer;
ULONG ulBufferLength;
PULONG pulBytesWritten;
PULONG pulBytesNeeded;
} PENDING_OID, * PPENDING_OID;
// Data type for channel set.
typedef struct _CHANNEL_SET
{
ULONG ulDomain; // Domain code.
ULONG ulChannelNum; // Number of channels in list.
ULONG ulChannelList[24]; // Available channel list.
} END_CHANNEL_SET, *PEND_CHANNEL_SET;
// structure for OID_COMMASIC_GEN_STATS
typedef struct _NDIS_COMMASIC_GEN_STATS
{
ULONG Length; // Length of structure
ULONG TxTotalDataFrames; // Total Data frames tx'ed
ULONG TxTotalMgmtFrames; // Total Mgmt frames tx'ed
ULONG RxDroppedFrames; // Rx frames that were discarded
ULONG RxTotalDataFrames; // Total Data frames rx'ed
ULONG RxTotalMgmtFrames; // Total Mgmt frames rx'ed
ULONGLONG DataBytesTxed; // Txed data bytes
ULONGLONG DataBytesRxed; // Rxed data bytes
} NDIS_COMMASIC_GEN_STATS, *PNDIS_COMMASIC_GEN_STATS;
// structure for OID_COMMASIC_CONFIG - this OID allows the host to configure
// different parameters in the device the device will reset after receiving
// this OID
typedef struct _NDIS_COMMASIC_CONFIG
{
ULONG ParamMask; // each bit corresponds to a
ULONG ListenInterval; // number of beacons between
ULONG Channel; // Restricted channel
ULONG RegDomain; // The regulatory domain
NDIS_802_11_MAC_ADDRESS MacAddr; // MAC address of the device
} NDIS_COMMASIC_CONFIG, *PNDIS_COMMASIC_CONFIG;
// structure for OID_COMMASIC_BACKGROUND_SCAN_CONFIG - this OID allows the host to configure different parameters in the device
// the device will reset after receiving this OID
typedef struct _NDIS_COMMASIC_BACKGROUND_SCAN_CONFIG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -