📄 device.h
字号:
/* * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc. * All rights reserved. * * This software is copyrighted by and is the sole property of * VIA Networking Technologies, Inc. This software may only be used * in accordance with the corresponding license agreement. Any unauthorized * use, duplication, transmission, distribution, or disclosure of this * software is expressly forbidden. * * This software is provided by VIA Networking Technologies, Inc. "as is" * and any express or implied warranties, including, but not limited to, the * implied warranties of merchantability and fitness for a particular purpose * are disclaimed. In no event shall VIA Networking Technologies, Inc. * be liable for any direct, indirect, incidental, special, exemplary, or * consequential damages. * * File: device.h * * Purpose: MAC Data structure * * Author: Tevin Chen * * Date: Mar 17, 1997 * */ #ifndef __DEVICE_H__#define __DEVICE_H__#ifdef MODULE#ifdef MODVERSIONS#include <linux/modversions.h>#endif /* MODVERSIONS */#include <linux/module.h>#endif /* MODULE */#include <linux/types.h>#include <linux/init.h>#include <linux/mm.h>#include <linux/errno.h>#include <linux/ioport.h>#include <linux/pci.h>#include <linux/kernel.h>#include <linux/netdevice.h>#include <linux/etherdevice.h>#include <linux/skbuff.h>#include <linux/delay.h>#include <linux/timer.h>#include <linux/slab.h>#include <linux/interrupt.h>#include <linux/version.h>#include <linux/string.h>#include <linux/wait.h>#include <linux/if_arp.h>#include <linux/sched.h>#include <linux/if.h>#include <linux/rtnetlink.h>//James#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)#include <linux/config.h>#endif#include <linux/proc_fs.h>#include <linux/inetdevice.h>#include <linux/reboot.h>#include <linux/usb.h>#include <linux/signal.h>#include <asm/io.h>#include <asm/uaccess.h>#ifdef SIOCETHTOOL#define DEVICE_ETHTOOL_IOCTL_SUPPORT#include <linux/ethtool.h>#else#undef DEVICE_ETHTOOL_IOCTL_SUPPORT#endif/* Include Wireless Extension definition and check version - Jean II */#include <linux/wireless.h>#if WIRELESS_EXT > 12#include <net/iw_handler.h> // New driver API#endif /* WIRELESS_EXT > 12 *///2008-0409-07, <Add> by Einsn Liu#if WIRELESS_EXT > 17#ifndef WPA_SUPPLICANT_DRIVER_WEXT_SUPPORT#define WPA_SUPPLICANT_DRIVER_WEXT_SUPPORT#endif #endif//// device specific//#if !defined(_KCOMPAT_H)#include "kcompat.h"#endif#if !defined(__DEVICE_CONFIG_H)#include "device_cfg.h"#endif#if !defined(__TTYPE_H__)#include "ttype.h"#endif#if !defined(__80211HDR_H__)#include "80211hdr.h"#endif#if !defined(__TETHER_H__)#include "tether.h"#endif#if !defined(__WMGR_H__)#include "wmgr.h"#endif#if !defined(__WCMD_H__)#include "wcmd.h"#endif#if !defined(__MIB_H__)#include "mib.h"#endif#if !defined(__SROM_H__)#include "srom.h"#endif#if !defined(__RC4_H__)#include "rc4.h"#endif#if !defined(__TPCI_H__)#include "tpci.h"#endif#if !defined(__DESC_H__)#include "desc.h"#endif#if !defined(__KEY_H__)#include "key.h"#endif#if !defined(__CARD_H__)#include "card.h"#endif/*--------------------- Export Definitions -------------------------*/#define VNT_USB_VENDOR_ID 0x160A#define VNT_USB_PRODUCT_ID 0x3184#define MAC_MAX_CONTEXT_REG (256+128)#define MAX_MULTICAST_ADDRESS_NUM 32#define MULTICAST_ADDRESS_LIST_SIZE (MAX_MULTICAST_ADDRESS_NUM * U_ETHER_ADDR_LEN)//#define OP_MODE_INFRASTRUCTURE 0//#define OP_MODE_ADHOC 1//#define OP_MODE_AP 2#define DUPLICATE_RX_CACHE_LENGTH 5#define NUM_KEY_ENTRY 11#define TX_WEP_NONE 0#define TX_WEP_OTF 1#define TX_WEP_SW 2#define TX_WEP_SWOTP 3#define TX_WEP_OTPSW 4#define TX_WEP_SW232 5#define KEYSEL_WEP40 0#define KEYSEL_WEP104 1#define KEYSEL_TKIP 2#define KEYSEL_CCMP 3#define AUTO_FB_NONE 0#define AUTO_FB_0 1#define AUTO_FB_1 2#define FB_RATE0 0#define FB_RATE1 1// Antenna Mode#define ANT_A 0#define ANT_B 1#define ANT_DIVERSITY 2#define ANT_RXD_TXA 3#define ANT_RXD_TXB 4#define ANT_UNKNOWN 0xFF#define ANT_TXA 0#define ANT_TXB 1#define ANT_RXA 2#define ANT_RXB 3#define MAXCHECKHANGCNT 4//Packet type#define TX_PKT_UNI 0x00#define TX_PKT_MULTI 0x01#define TX_PKT_BROAD 0x02#define BB_VGA_LEVEL 4#define BB_VGA_CHANGE_THRESHOLD 3#ifndef RUN_AT#define RUN_AT(x) (jiffies+(x))#endif// DMA related#define RESERV_AC0DMA 4/*--------------------- Export Types ------------------------------*/#define DBG_PRT(l, p, args...) {if (l<=msglevel) printk( p ,##args);}typedef enum __device_msg_level { MSG_LEVEL_ERR=0, //Errors that will cause abnormal operation. MSG_LEVEL_NOTICE=1, //Some errors need users to be notified. MSG_LEVEL_INFO=2, //Normal message. MSG_LEVEL_VERBOSE=3, //Will report all trival errors. MSG_LEVEL_DEBUG=4 //Only for debug purpose.} DEVICE_MSG_LEVEL, *PDEVICE_MSG_LEVEL;typedef enum __device_init_type { DEVICE_INIT_COLD=0, // cold init DEVICE_INIT_RESET, // reset init or Dx to D0 power remain init DEVICE_INIT_DXPL // Dx to D0 power lost init} DEVICE_INIT_TYPE, *PDEVICE_INIT_TYPE;//USB //// Enum of context types for SendPacket//typedef enum _CONTEXT_TYPE { CONTEXT_DATA_PACKET = 1, CONTEXT_MGMT_PACKET} CONTEXT_TYPE;// RCB (Receive Control Block)typedef struct _RCB{ PVOID Next; LONG Ref; PVOID pDevice; struct urb *pUrb; SRxMgmtPacket sMngPacket; struct sk_buff* skb; BOOL bBoolInUse; } RCB, *PRCB;// used to track bulk out irps typedef struct _USB_SEND_CONTEXT { PVOID pDevice; struct sk_buff *pPacket; struct urb *pUrb; UINT uBufLen; CONTEXT_TYPE Type; SEthernetHeader sEthHeader; PVOID Next; BOOL bBoolInUse; UCHAR Data[MAX_TOTAL_SIZE_WITH_ALL_HEADERS];} USB_SEND_CONTEXT, *PUSB_SEND_CONTEXT;//// Structure to keep track of usb interrupt packets//typedef struct { UINT uDataLen; PBYTE pDataBuf; // struct urb *pUrb; BOOL bInUse;} INT_BUFFER, *PINT_BUFFER;//0:11A 1:11B 2:11Gtypedef enum _VIA_BB_TYPE{ BB_TYPE_11A=0, BB_TYPE_11B, BB_TYPE_11G} VIA_BB_TYPE, *PVIA_BB_TYPE;//0:11a,1:11b,2:11gb(only CCK in BasicRate),3:11ga(OFDM in Basic Rate)typedef enum _VIA_PKT_TYPE{ PK_TYPE_11A=0, PK_TYPE_11B, PK_TYPE_11GB, PK_TYPE_11GA} VIA_PKT_TYPE, *PVIA_PKT_TYPE;//++ NDIS related#define NDIS_STATUS int#define NTSTATUS inttypedef enum __DEVICE_NDIS_STATUS { STATUS_SUCCESS=0, STATUS_FAILURE, STATUS_RESOURCES, STATUS_PENDING,} DEVICE_NDIS_STATUS, *PDEVICE_NDIS_STATUS; #define MAX_BSSIDINFO_4_PMKID 16#define MAX_PMKIDLIST 5//Flags for PMKID Candidate list structure#define NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED 0x01// PMKID Structurestypedef UCHAR NDIS_802_11_PMKID_VALUE[16];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} 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_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; //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 _BSSID_INFO{ NDIS_802_11_MAC_ADDRESS BSSID; NDIS_802_11_PMKID_VALUE PMKID;} BSSID_INFO, *PBSSID_INFO;typedef struct tagSPMKID { ULONG Length; ULONG BSSIDInfoCount; BSSID_INFO BSSIDInfo[MAX_BSSIDINFO_4_PMKID];} SPMKID, *PSPMKID;typedef struct tagSPMKIDCandidateEvent { NDIS_802_11_STATUS_TYPE StatusType; ULONG Version; // Version of the structure ULONG NumCandidates; // No. of pmkid candidates PMKID_CANDIDATE CandidateList[MAX_PMKIDLIST];} SPMKIDCandidateEvent, DEF* PSPMKIDCandidateEvent; //--//++ 802.11h related#define MAX_QUIET_COUNT 8typedef struct tagSQuietControl { BOOL bEnable; DWORD dwStartTime; BYTE byPeriod; WORD wDuration;} SQuietControl, DEF* PSQuietControl;//--// The receive duplicate detection cache entrytypedef struct tagSCacheEntry{ WORD wFmSequence; BYTE abyAddr2[U_ETHER_ADDR_LEN]; WORD wFrameCtl; } SCacheEntry, *PSCacheEntry;typedef struct tagSCache{/* The receive cache is updated circularly. The next entry to be written is * indexed by the "InPtr".*/ UINT uInPtr; // Place to use next SCacheEntry asCacheEntry[DUPLICATE_RX_CACHE_LENGTH];} SCache, *PSCache;#define CB_MAX_RX_FRAG 64// DeFragment Control Block, used for collecting fragments prior to reassemblytypedef struct tagSDeFragControlBlock{ WORD wSequence; WORD wFragNum; BYTE abyAddr2[U_ETHER_ADDR_LEN]; UINT uLifetime; struct sk_buff* skb; PBYTE pbyRxBuffer; UINT cbFrameLength; BOOL bInUse;} SDeFragControlBlock, DEF* PSDeFragControlBlock;//flags for options#define DEVICE_FLAGS_UNPLUG 0x00000001UL#define DEVICE_FLAGS_PREAMBLE_TYPE 0x00000002UL#define DEVICE_FLAGS_OP_MODE 0x00000004UL#define DEVICE_FLAGS_PS_MODE 0x00000008UL#define DEVICE_FLAGS_80211h_MODE 0x00000010UL//flags for driver status#define DEVICE_FLAGS_OPENED 0x00010000UL#define DEVICE_FLAGS_WOL_ENABLED 0x00080000UL//flags for capbilities#define DEVICE_FLAGS_TX_ALIGN 0x01000000UL#define DEVICE_FLAGS_HAVE_CAM 0x02000000UL#define DEVICE_FLAGS_FLOW_CTRL 0x04000000UL//flags for MII status#define DEVICE_LINK_FAIL 0x00000001UL#define DEVICE_SPEED_10 0x00000002UL#define DEVICE_SPEED_100 0x00000004UL#define DEVICE_SPEED_1000 0x00000008UL#define DEVICE_DUPLEX_FULL 0x00000010UL#define DEVICE_AUTONEG_ENABLE 0x00000020UL#define DEVICE_FORCED_BY_EEPROM 0x00000040UL//for device_set_media_duplex#define DEVICE_LINK_CHANGE 0x00000001ULtypedef struct __device_opt { int nRxDescs0; //Number of RX descriptors0 int nTxDescs0; //Number of TX descriptors 0, 1, 2, 3 int rts_thresh; //rts threshold int frag_thresh; int OpMode; int data_rate; int channel_num; int short_retry; int long_retry; int bbp_type; U32 flags;} OPTIONS, *POPTIONS;typedef struct __device_info {// netdev struct usb_device* usb; struct net_device* dev; struct net_device_stats stats; OPTIONS sOpts; struct tasklet_struct CmdWorkItem; struct tasklet_struct EventWorkItem; struct tasklet_struct ReadWorkItem; struct tasklet_struct RxMngWorkItem;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -