diff options
Diffstat (limited to 'drivers/staging/vt6656/device.h')
| -rw-r--r-- | drivers/staging/vt6656/device.h | 1232 |
1 files changed, 515 insertions, 717 deletions
diff --git a/drivers/staging/vt6656/device.h b/drivers/staging/vt6656/device.h index 8b541d1d0e2..5b64ca7b62f 100644 --- a/drivers/staging/vt6656/device.h +++ b/drivers/staging/vt6656/device.h @@ -30,108 +30,58 @@ #define __DEVICE_H__ #include <linux/module.h> -#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/string.h> -#include <linux/wait.h> +#include <linux/delay.h> +#include <linux/device.h> +#include <linux/firmware.h> +#include <linux/etherdevice.h> +#include <linux/suspend.h> #include <linux/if_arp.h> -#include <linux/sched.h> -#include <linux/if.h> -#include <linux/rtnetlink.h>//James -#include <linux/proc_fs.h> -#include <linux/inetdevice.h> -#include <linux/reboot.h> +#include <linux/wireless.h> +#include <net/iw_handler.h> +#include <net/cfg80211.h> +#include <linux/timer.h> #include <linux/usb.h> -#include <linux/signal.h> -#include <asm/io.h> -#include <asm/uaccess.h> +#include <linux/crc32.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> -#include <net/iw_handler.h> // New driver API - -#ifndef WPA_SUPPLICANT_DRIVER_WEXT_SUPPORT -#define WPA_SUPPLICANT_DRIVER_WEXT_SUPPORT -#endif -//2007-0920-01<Add>by MikeLiu -#ifndef SndEvt_ToAPI -#define SndEvt_ToAPI -//please copy below macro to driver_event.c for API -#define RT_INSMOD_EVENT_FLAG 0x0101 -#define RT_UPDEV_EVENT_FLAG 0x0102 -#define RT_DISCONNECTED_EVENT_FLAG 0x0103 -#define RT_WPACONNECTED_EVENT_FLAG 0x0104 -#define RT_DOWNDEV_EVENT_FLAG 0x0105 -#define RT_RMMOD_EVENT_FLAG 0x0106 -#endif +#define MAX_RATE 12 -// -// device specific -// +/* + * device specific + */ -#include "device_cfg.h" -#include "ttype.h" #include "80211hdr.h" #include "tether.h" #include "wmgr.h" #include "wcmd.h" -#include "mib.h" -#include "srom.h" #include "rc4.h" #include "desc.h" #include "key.h" #include "card.h" -/*--------------------- Export Definitions -------------------------*/ #define VNT_USB_VENDOR_ID 0x160a #define VNT_USB_PRODUCT_ID 0x3184 -#define MAC_MAX_CONTEXT_REG (256+128) +#define DEVICE_NAME "vt6656" +#define DEVICE_FULL_DRV_NAM "VIA Networking Wireless LAN USB Driver" -#define MAX_MULTICAST_ADDRESS_NUM 32 -#define MULTICAST_ADDRESS_LIST_SIZE (MAX_MULTICAST_ADDRESS_NUM * U_ETHER_ADDR_LEN) +#define DEVICE_VERSION "1.19_12" +#define CONFIG_PATH "/etc/vntconfiguration.dat" -//#define OP_MODE_INFRASTRUCTURE 0 -//#define OP_MODE_ADHOC 1 -//#define OP_MODE_AP 2 +#define MAX_UINTS 8 +#define OPTION_DEFAULT { [0 ... MAX_UINTS-1] = -1} #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 @@ -139,7 +89,7 @@ #define FB_RATE0 0 #define FB_RATE1 1 -// Antenna Mode +/* Antenna Mode */ #define ANT_A 0 #define ANT_B 1 #define ANT_DIVERSITY 2 @@ -151,153 +101,192 @@ #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 - +#define EEP_MAX_CONTEXT_SIZE 256 + +/* Contents in the EEPROM */ +#define EEP_OFS_PAR 0x0 +#define EEP_OFS_ANTENNA 0x17 +#define EEP_OFS_RADIOCTL 0x18 +#define EEP_OFS_RFTYPE 0x1b +#define EEP_OFS_MINCHANNEL 0x1c +#define EEP_OFS_MAXCHANNEL 0x1d +#define EEP_OFS_SIGNATURE 0x1e +#define EEP_OFS_ZONETYPE 0x1f +#define EEP_OFS_RFTABLE 0x20 +#define EEP_OFS_PWR_CCK 0x20 +#define EEP_OFS_SETPT_CCK 0x21 +#define EEP_OFS_PWR_OFDMG 0x23 + +#define EEP_OFS_CALIB_TX_IQ 0x24 +#define EEP_OFS_CALIB_TX_DC 0x25 +#define EEP_OFS_CALIB_RX_IQ 0x26 + +#define EEP_OFS_MAJOR_VER 0x2e +#define EEP_OFS_MINOR_VER 0x2f + +#define EEP_OFS_CCK_PWR_TBL 0x30 +#define EEP_OFS_OFDM_PWR_TBL 0x40 +#define EEP_OFS_OFDMA_PWR_TBL 0x50 + +/* Bits in EEP_OFS_ANTENNA */ +#define EEP_ANTENNA_MAIN 0x1 +#define EEP_ANTENNA_AUX 0x2 +#define EEP_ANTINV 0x4 + +/* Bits in EEP_OFS_RADIOCTL */ +#define EEP_RADIOCTL_ENABLE 0x80 + +/* control commands */ +#define MESSAGE_TYPE_READ 0x1 +#define MESSAGE_TYPE_WRITE 0x0 +#define MESSAGE_TYPE_LOCK_OR 0x2 +#define MESSAGE_TYPE_LOCK_AND 0x3 +#define MESSAGE_TYPE_WRITE_MASK 0x4 +#define MESSAGE_TYPE_CARDINIT 0x5 +#define MESSAGE_TYPE_INIT_RSP 0x6 +#define MESSAGE_TYPE_MACSHUTDOWN 0x7 +#define MESSAGE_TYPE_SETKEY 0x8 +#define MESSAGE_TYPE_CLRKEYENTRY 0x9 +#define MESSAGE_TYPE_WRITE_MISCFF 0xa +#define MESSAGE_TYPE_SET_ANTMD 0xb +#define MESSAGE_TYPE_SELECT_CHANNLE 0xc +#define MESSAGE_TYPE_SET_TSFTBTT 0xd +#define MESSAGE_TYPE_SET_SSTIFS 0xe +#define MESSAGE_TYPE_CHANGE_BBTYPE 0xf +#define MESSAGE_TYPE_DISABLE_PS 0x10 +#define MESSAGE_TYPE_WRITE_IFRF 0x11 + +/* command read/write(index) */ +#define MESSAGE_REQUEST_MEM 0x1 +#define MESSAGE_REQUEST_BBREG 0x2 +#define MESSAGE_REQUEST_MACREG 0x3 +#define MESSAGE_REQUEST_EEPROM 0x4 +#define MESSAGE_REQUEST_TSF 0x5 +#define MESSAGE_REQUEST_TBTT 0x6 +#define MESSAGE_REQUEST_BBAGC 0x7 +#define MESSAGE_REQUEST_VERSION 0x8 +#define MESSAGE_REQUEST_RF_INIT 0x9 +#define MESSAGE_REQUEST_RF_INIT2 0xa +#define MESSAGE_REQUEST_RF_CH0 0xb +#define MESSAGE_REQUEST_RF_CH1 0xc +#define MESSAGE_REQUEST_RF_CH2 0xd + +/* USB registers */ +#define USB_REG4 0x604 #ifndef RUN_AT #define RUN_AT(x) (jiffies+(x)) #endif -// DMA related -#define RESERV_AC0DMA 4 - #define PRIVATE_Message 0 -/*--------------------- Export Types ------------------------------*/ - -#define DBG_PRT(l, p, args...) {if (l<=msglevel) printk( p ,##args);} -#define PRINT_K(p, args...) {if (PRIVATE_Message) printk( p ,##args);} +#define DBG_PRT(l, p, args...) { if (l <= msglevel) printk(p, ##args); } +#define PRINT_K(p, args...) { if (PRIVATE_Message) 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. + MSG_LEVEL_ERR = 0, /* Errors causing abnormal operation */ + MSG_LEVEL_NOTICE = 1, /* Errors needing user notification */ + 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 got from configuration file as user desired default setting. -typedef struct _DEFAULT_CONFIG{ - INT ZoneType; - INT eConfigMode; - INT eAuthenMode; //open/wep/wpa - INT bShareKeyAlgorithm; //open-open/open-sharekey/wep-sharekey - INT keyidx; //wepkey index - INT eEncryptionStatus; - -}DEFAULT_CONFIG,*PDEFAULT_CONFIG; - -// -// 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:11G -typedef 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; - - +#define DEVICE_INIT_COLD 0x0 /* cold init */ +#define DEVICE_INIT_RESET 0x1 /* reset init or Dx to D0 power remain */ +#define DEVICE_INIT_DXPL 0x2 /* Dx to D0 power lost init */ + +/* Device init */ +struct vnt_cmd_card_init { + u8 init_class; + u8 exist_sw_net_addr; + u8 sw_net_addr[6]; + u8 short_retry_limit; + u8 long_retry_limit; +}; + +struct vnt_rsp_card_init { + u8 status; + u8 net_addr[6]; + u8 rf_type; + u8 min_channel; + u8 max_channel; +}; + +/* USB */ +/* + * Enum of context types for SendPacket + */ +enum { + CONTEXT_DATA_PACKET = 1, + CONTEXT_MGMT_PACKET +}; + +/* RCB (Receive Control Block) */ +struct vnt_rcb { + void *Next; + signed long Ref; + void *pDevice; + struct urb *pUrb; + struct vnt_rx_mgmt sMngPacket; + struct sk_buff *skb; + int bBoolInUse; +}; + +/* used to track bulk out irps */ +struct vnt_usb_send_context { + void *priv; + struct sk_buff *skb; + struct urb *urb; + unsigned int buf_len; + u8 type; + bool in_use; + unsigned char data[MAX_TOTAL_SIZE_WITH_ALL_HEADERS]; +}; + +/* tx packet info for rxtx */ +struct vnt_tx_pkt_info { + u16 fifo_ctl; + u8 dest_addr[ETH_ALEN]; +}; + +/* structure got from configuration file as user-desired default settings */ +typedef struct _DEFAULT_CONFIG { + signed int ZoneType; + signed int eConfigMode; + signed int eAuthenMode; /* open/wep/wpa */ + signed int bShareKeyAlgorithm; /* open-open/{open,wep}-sharekey */ + signed int keyidx; /* wepkey index */ + signed int eEncryptionStatus; +} DEFAULT_CONFIG, *PDEFAULT_CONFIG; -//++ NDIS related +/* + * Structure to keep track of USB interrupt packets + */ +struct vnt_interrupt_buffer { + u8 *data_buf; + bool in_use; +}; -#define NDIS_STATUS int -#define NTSTATUS int +/*++ NDIS related */ typedef enum __DEVICE_NDIS_STATUS { - STATUS_SUCCESS=0, + 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 +/* flags for PMKID Candidate list structure */ #define NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED 0x01 -// PMKID Structures -typedef UCHAR NDIS_802_11_PMKID_VALUE[16]; - +/* PMKID Structures */ +typedef unsigned char NDIS_802_11_PMKID_VALUE[16]; typedef enum _NDIS_802_11_WEP_STATUS { @@ -316,22 +305,20 @@ typedef enum _NDIS_802_11_WEP_STATUS } 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 + Ndis802_11StatusType_Authentication, + Ndis802_11StatusType_MediaStreamMode, + Ndis802_11StatusType_PMKID_CandidateList, + Ndis802_11StatusTypeMax, /* not a real type, defined as upper bound */ } NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE; -//Added new types for PMKID Candidate lists. +/* added new types for PMKID Candidate lists */ typedef struct _PMKID_CANDIDATE { NDIS_802_11_MAC_ADDRESS BSSID; - ULONG Flags; + unsigned long Flags; } PMKID_CANDIDATE, *PPMKID_CANDIDATE; - typedef struct _BSSID_INFO { NDIS_802_11_MAC_ADDRESS BSSID; @@ -339,95 +326,59 @@ typedef struct _BSSID_INFO } BSSID_INFO, *PBSSID_INFO; typedef struct tagSPMKID { - ULONG Length; - ULONG BSSIDInfoCount; + unsigned long Length; + unsigned long 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 + unsigned long Version; /* Version of the structure */ + unsigned long NumCandidates; /* No. of pmkid candidates */ PMKID_CANDIDATE CandidateList[MAX_PMKIDLIST]; } SPMKIDCandidateEvent, *PSPMKIDCandidateEvent; -//-- - -//++ 802.11h related -#define MAX_QUIET_COUNT 8 - -typedef struct tagSQuietControl { - BOOL bEnable; - DWORD dwStartTime; - BYTE byPeriod; - WORD wDuration; -} SQuietControl, *PSQuietControl; - -//-- - - -// The receive duplicate detection cache entry +/* The receive duplicate detection cache entry */ typedef struct tagSCacheEntry{ - WORD wFmSequence; - BYTE abyAddr2[U_ETHER_ADDR_LEN]; - WORD wFrameCtl; + __le16 wFmSequence; + u8 abyAddr2[ETH_ALEN]; + __le16 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 + */ + unsigned int 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 reassembly +/* + * DeFragment Control Block, used for collecting fragments prior to reassembly + */ typedef struct tagSDeFragControlBlock { - WORD wSequence; - WORD wFragNum; - BYTE abyAddr2[U_ETHER_ADDR_LEN]; - UINT uLifetime; + u16 wSequence; + u16 wFragNum; + u8 abyAddr2[ETH_ALEN]; + unsigned int uLifetime; struct sk_buff* skb; - PBYTE pbyRxBuffer; - UINT cbFrameLength; - BOOL bInUse; + u8 * pbyRxBuffer; + unsigned int cbFrameLength; + bool bInUse; } SDeFragControlBlock, *PSDeFragControlBlock; - - -//flags for options +/* 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 +/* 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 0x00000001UL - typedef 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 nRxDescs0; /* number of RX descriptors 0 */ + int nTxDescs0; /* number of TX descriptors 0, 1, 2, 3 */ + int rts_thresh; /* RTS threshold */ int frag_thresh; int OpMode; int data_rate; @@ -435,444 +386,310 @@ typedef struct __device_opt { int short_retry; int long_retry; int bbp_type; - U32 flags; + u32 flags; } OPTIONS, *POPTIONS; +struct vnt_private { + /* netdev */ + struct usb_device *usb; + struct net_device *dev; + struct net_device_stats stats; + + OPTIONS sOpts; + + struct work_struct read_work_item; + struct work_struct rx_mng_work_item; + + u32 rx_buf_sz; + int multicast_limit; + u8 byRxMode; + + spinlock_t lock; + struct mutex usb_lock; + + u32 rx_bytes; + + u32 flags; + unsigned long Flags; + + SCache sDupRxCache; + + SDeFragControlBlock sRxDFCB[CB_MAX_RX_FRAG]; + u32 cbDFCB; + u32 cbFreeDFCB; + u32 uCurrentDFCBIdx; + + /* USB */ + struct urb *pInterruptURB; + u32 int_interval; + + /* Variables to track resources for the BULK In Pipe */ + struct vnt_rcb *pRCBMem; + struct vnt_rcb *apRCB[CB_MAX_RX_DESC]; + u32 cbRD; + struct vnt_rcb *FirstRecvFreeList; + struct vnt_rcb *LastRecvFreeList; + u32 NumRecvFreeList; + struct vnt_rcb *FirstRecvMngList; + struct vnt_rcb *LastRecvMngList; + u32 NumRecvMngList; + int bIsRxWorkItemQueued; + int bIsRxMngWorkItemQueued; + unsigned long ulRcvRefCount; /* packets that have not returned back */ + + /* Variables to track resources for the BULK Out Pipe */ + struct vnt_usb_send_context *apTD[CB_MAX_TX_DESC]; + u32 cbTD; + struct vnt_tx_pkt_info pkt_info[16]; + + /* Variables to track resources for the Interrupt In Pipe */ + struct vnt_interrupt_buffer int_buf; + + /* default config from file by user setting */ + DEFAULT_CONFIG config_file; + + /* Version control */ + u16 wFirmwareVersion; + u8 byLocalID; + u8 byRFType; + u8 byBBRxConf; + + u8 byZoneType; + int bZoneRegExist; + + u8 byOriginalZonetype; + + int bLinkPass; /* link status: OK or fail */ + struct vnt_cmd_card_init init_command; + struct vnt_rsp_card_init init_response; + u8 abyCurrentNetAddr[ETH_ALEN]; + u8 abyPermanentNetAddr[ETH_ALEN]; + + int bExistSWNetAddr; + + /* Maintain statistical debug info. */ + unsigned long SendContextsInUse; + unsigned long RcvBuffersInUse; + + /* 802.11 management */ + struct vnt_manager vnt_mgmt; + + u64 qwCurrTSF; + u32 cbBulkInMax; + int bPSRxBeacon; + + /* 802.11 MAC specific */ + u32 uCurrRSSI; + u8 byCurrSQ; + + /* Antenna Diversity */ + int bTxRxAntInv; + u32 dwRxAntennaSel; + u32 dwTxAntennaSel; + u8 byAntennaCount; + u8 byRxAntennaMode; + u8 byTxAntennaMode; + u8 byRadioCtl; + u8 bHWRadioOff; + + /* IFS & Cw */ + u32 uSIFS; /* Current SIFS */ + u32 uDIFS; /* Current DIFS */ + u32 uEIFS; /* Current EIFS */ + u32 uSlot; /* Current SlotTime */ + u32 uCwMin; /* Current CwMin */ + u32 uCwMax; /* CwMax is fixed on 1023 */ + + /* PHY parameter */ + u8 bySIFS; + u8 byDIFS; + u8 byEIFS; + u8 bySlot; + u8 byCWMaxMin; + + /* Rate */ + u8 byBBType; /* 0: 11A, 1:11B, 2:11G */ + u8 byPacketType; /* 0:11a 1:11b 2:11gb 3:11ga */ + u16 wBasicRate; + u8 byTopOFDMBasicRate; + u8 byTopCCKBasicRate; + + u8 abyEEPROM[EEP_MAX_CONTEXT_SIZE]; /*u32 alignment */ + + u8 byMinChannel; + u8 byMaxChannel; + u32 uConnectionRate; + + u8 byPreambleType; + u8 byShortPreamble; + /* CARD_PHY_TYPE */ + u8 eConfigPHYMode; + + /* For RF Power table */ + u8 byCCKPwr; + u8 byOFDMPwrG; + u8 byOFDMPwrA; + u8 byCurPwr; + u8 abyCCKPwrTbl[14]; + u8 abyOFDMPwrTbl[14]; + u8 abyOFDMAPwrTbl[42]; + + u16 wCurrentRate; + u16 tx_rate_fb0; + u16 tx_rate_fb1; + + u16 wRTSThreshold; + u16 wFragmentationThreshold; + u8 byShortRetryLimit; + u8 byLongRetryLimit; + + enum nl80211_iftype op_mode; + + int bBSSIDFilter; + u16 wMaxTransmitMSDULifetime; + u8 abyBSSID[ETH_ALEN]; + u8 abyDesireBSSID[ETH_ALEN]; + + u32 dwMaxReceiveLifetime; /* dot11MaxReceiveLifetime */ + + int bEncryptionEnable; + int bShortSlotTime; + int bProtectMode; + int bNonERPPresent; + int bBarkerPreambleMd; + + u8 byERPFlag; + u16 wUseProtectCntDown; + + int bRadioControlOff; + int bRadioOff; + + /* Power save */ + int bEnablePSMode; + u16 wListenInterval; + int bPWBitOn; + WMAC_POWER_MODE ePSMode; + unsigned long ulPSModeWaitTx; + int bPSModeTxBurst; + + /* Beacon releated */ + u16 wSeqCounter; + int bBeaconBufReady; + int bBeaconSent; + int bFixRate; + u8 byCurrentCh; + + CMD_STATE eCommandState; + + CMD_CODE eCommand; + int bBeaconTx; + u8 byScanBBType; + + int bStopBeacon; + int bStopDataPkt; + int bStopTx0Pkt; + u32 uAutoReConnectTime; + u32 uIsroamingTime; + + /* 802.11 counter */ + + CMD_ITEM eCmdQueue[CMD_Q_SIZE]; + u32 uCmdDequeueIdx; + u32 uCmdEnqueueIdx; + u32 cbFreeCmdQueue; + int bCmdRunning; + int bCmdClear; + int bNeedRadioOFF; + + int bEnableRoaming; + int bIsRoaming; + int bFastRoaming; + u8 bSameBSSMaxNum; + u8 bSameBSSCurNum; + int bRoaming; + int b11hEable; + + /* Encryption */ + NDIS_802_11_WEP_STATUS eEncryptionStatus; + int bTransmitKey; + NDIS_802_11_WEP_STATUS eOldEncryptionStatus; + SKeyManagement sKey; + u32 dwIVCounter; + + RC4Ext SBox; + u8 abyPRNG[WLAN_WEPMAX_KEYLEN+3]; + u8 byKeyIndex; + + u32 uKeyLength; + u8 abyKey[WLAN_WEP232_KEYLEN]; + + /* for AP mode */ + u32 uAssocCount; + int bMoreData; + + /* QoS */ + int bGrpAckPolicy; + + u8 byAutoFBCtrl; + + int bTxMICFail; + int bRxMICFail; + + /* For Update BaseBand VGA Gain Offset */ + u32 uBBVGADiffCount; + u8 byBBVGANew; + u8 byBBVGACurrent; + u8 abyBBVGA[BB_VGA_LEVEL]; + signed long ldBmThreshold[BB_VGA_LEVEL]; + + u8 byBBPreEDRSSI; + u8 byBBPreEDIndex; + + int bRadioCmd; + + /* command timer */ + struct delayed_work run_command_work; + /* One second callback */ + struct delayed_work second_callback_work; + + u8 tx_data_time_out; + bool tx_trigger; + int fWPA_Authened; /*is WPA/WPA-PSK or WPA2/WPA2-PSK authen?? */ + u8 byReAssocCount; + u8 byLinkWaitCount; + + struct ethhdr sTxEthHeader; + struct ethhdr sRxEthHeader; + u8 abyBroadcastAddr[ETH_ALEN]; + u8 abySNAP_RFC1042[ETH_ALEN]; + u8 abySNAP_Bridgetunnel[ETH_ALEN]; + + /* Pre-Authentication & PMK cache */ + SPMKID gsPMKID; + SPMKIDCandidateEvent gsPMKIDCandidate; + + /* for 802.11h */ + int b11hEnable; + + int bChannelSwitch; + u8 byNewChannel; + u8 byChannelSwitchCount; + + /* WPA supplicant daemon */ + int bWPADEVUp; + int bwextstep0; + int bwextstep1; + int bwextstep2; + int bwextstep3; + int bWPASuppWextEnabled; + + u32 uChannel; -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; - - U32 rx_buf_sz; - int multicast_limit; - BYTE byRxMode; - - spinlock_t lock; - - U32 rx_bytes; - - BYTE byRevId; - - U32 flags; - ULONG Flags; - - SCache sDupRxCache; - - SDeFragControlBlock sRxDFCB[CB_MAX_RX_FRAG]; - UINT cbDFCB; - UINT cbFreeDFCB; - UINT uCurrentDFCBIdx; - - // +++USB - - struct urb *pControlURB; - struct urb *pInterruptURB; - struct usb_ctrlrequest sUsbCtlRequest; - - UINT int_interval; - // - // Variables to track resources for the BULK In Pipe - // - PRCB pRCBMem; - PRCB apRCB[CB_MAX_RX_DESC]; - UINT cbRD; - PRCB FirstRecvFreeList; - PRCB LastRecvFreeList; - UINT NumRecvFreeList; - PRCB FirstRecvMngList; - PRCB LastRecvMngList; - UINT NumRecvMngList; - BOOL bIsRxWorkItemQueued; - BOOL bIsRxMngWorkItemQueued; - ULONG ulRcvRefCount; // number of packets that have not been returned back - - // - // Variables to track resources for the BULK Out Pipe - // - - PUSB_SEND_CONTEXT apTD[CB_MAX_TX_DESC]; - UINT cbTD; - - // - // Variables to track resources for the Interript In Pipe - // - INT_BUFFER intBuf; - BOOL fKillEventPollingThread; - BOOL bEventAvailable; - - - //default config from file by user setting - DEFAULT_CONFIG config_file; - - - // - // Statistic for USB - // protect with spinlock - ULONG ulBulkInPosted; - ULONG ulBulkInError; - ULONG ulBulkInContCRCError; - ULONG ulBulkInBytesRead; - - ULONG ulBulkOutPosted; - ULONG ulBulkOutError; - ULONG ulBulkOutContCRCError; - ULONG ulBulkOutBytesWrite; - - ULONG ulIntInPosted; - ULONG ulIntInError; - ULONG ulIntInContCRCError; - ULONG ulIntInBytesRead; - - - // Version control - WORD wFirmwareVersion; - BYTE byLocalID; - BYTE byRFType; - BYTE byBBRxConf; - - - BYTE byZoneType; - BOOL bZoneRegExist; - - BYTE byOriginalZonetype; - - BOOL bLinkPass; // link status: OK or fail - BYTE abyCurrentNetAddr[U_ETHER_ADDR_LEN]; - BYTE abyPermanentNetAddr[U_ETHER_ADDR_LEN]; - // SW network address -// BYTE abySoftwareNetAddr[U_ETHER_ADDR_LEN]; - BOOL bExistSWNetAddr; - - // Adapter statistics - SStatCounter scStatistic; - // 802.11 counter - SDot11Counters s802_11Counter; - - // - // Maintain statistical debug info. - // - ULONG packetsReceived; - ULONG packetsReceivedDropped; - ULONG packetsReceivedOverflow; - ULONG packetsSent; - ULONG packetsSentDropped; - ULONG SendContextsInUse; - ULONG RcvBuffersInUse; - - - // 802.11 management - SMgmtObject sMgmtObj; - - QWORD qwCurrTSF; - UINT cbBulkInMax; - BOOL bPSRxBeacon; - - // 802.11 MAC specific - UINT uCurrRSSI; - BYTE byCurrSQ; - - - //Antenna Diversity - BOOL bTxRxAntInv; - DWORD dwRxAntennaSel; - DWORD dwTxAntennaSel; - BYTE byAntennaCount; - BYTE byRxAntennaMode; - BYTE byTxAntennaMode; - BYTE byRadioCtl; - BYTE bHWRadioOff; - - //SQ3 functions for antenna diversity - struct timer_list TimerSQ3Tmax1; - struct timer_list TimerSQ3Tmax2; - struct timer_list TimerSQ3Tmax3; - - BOOL bDiversityRegCtlON; - BOOL bDiversityEnable; - ULONG ulDiversityNValue; - ULONG ulDiversityMValue; - BYTE byTMax; - BYTE byTMax2; - BYTE byTMax3; - ULONG ulSQ3TH; - - ULONG uDiversityCnt; - BYTE byAntennaState; - ULONG ulRatio_State0; - ULONG ulRatio_State1; - ULONG ulSQ3_State0; - ULONG ulSQ3_State1; - - ULONG aulSQ3Val[MAX_RATE]; - ULONG aulPktNum[MAX_RATE]; - - // IFS & Cw - UINT uSIFS; //Current SIFS - UINT uDIFS; //Current DIFS - UINT uEIFS; //Current EIFS - UINT uSlot; //Current SlotTime - UINT uCwMin; //Current CwMin - UINT uCwMax; //CwMax is fixed on 1023. - // PHY parameter - BYTE bySIFS; - BYTE byDIFS; - BYTE byEIFS; - BYTE bySlot; - BYTE byCWMaxMin; - - // Rate - VIA_BB_TYPE byBBType; //0: 11A, 1:11B, 2:11G - VIA_PKT_TYPE byPacketType; //0:11a,1:11b,2:11gb(only CCK in BasicRate),3:11ga(OFDM in Basic Rate) - WORD wBasicRate; - BYTE byACKRate; - BYTE byTopOFDMBasicRate; - BYTE byTopCCKBasicRate; - - - DWORD dwAotoRateTxOkCnt; - DWORD dwAotoRateTxFailCnt; - DWORD dwErrorRateThreshold[13]; - DWORD dwTPTable[MAX_RATE]; - BYTE abyEEPROM[EEP_MAX_CONTEXT_SIZE]; //DWORD alignment - - BYTE byMinChannel; - BYTE byMaxChannel; - UINT uConnectionRate; - - BYTE byPreambleType; - BYTE byShortPreamble; - // CARD_PHY_TYPE - BYTE eConfigPHYMode; - - // For RF Power table - BYTE byCCKPwr; - BYTE byOFDMPwrG; - BYTE byOFDMPwrA; - BYTE byCurPwr; - BYTE abyCCKPwrTbl[14]; - BYTE abyOFDMPwrTbl[14]; - BYTE abyOFDMAPwrTbl[42]; - - WORD wCurrentRate; - WORD wRTSThreshold; - WORD wFragmentationThreshold; - BYTE byShortRetryLimit; - BYTE byLongRetryLimit; - CARD_OP_MODE eOPMode; - BOOL bBSSIDFilter; - WORD wMaxTransmitMSDULifetime; - BYTE abyBSSID[U_ETHER_ADDR_LEN]; - BYTE abyDesireBSSID[U_ETHER_ADDR_LEN]; - WORD wCTSDuration; // update while speed change - WORD wACKDuration; // update while speed change - WORD wRTSTransmitLen; // update while speed change - BYTE byRTSServiceField; // update while speed change - BYTE byRTSSignalField; // update while speed change - - DWORD dwMaxReceiveLifetime; // dot11MaxReceiveLifetime - - BOOL bCCK; - BOOL bEncryptionEnable; - BOOL bLongHeader; - BOOL bSoftwareGenCrcErr; - BOOL bShortSlotTime; - BOOL bProtectMode; - BOOL bNonERPPresent; - BOOL bBarkerPreambleMd; - - BYTE byERPFlag; - WORD wUseProtectCntDown; - - BOOL bRadioControlOff; - BOOL bRadioOff; - - // Power save - BOOL bEnablePSMode; - WORD wListenInterval; - BOOL bPWBitOn; - WMAC_POWER_MODE ePSMode; - ULONG ulPSModeWaitTx; - BOOL bPSModeTxBurst; - - // Beacon releated - WORD wSeqCounter; - BOOL bBeaconBufReady; - BOOL bBeaconSent; - BOOL bFixRate; - BYTE byCurrentCh; - UINT uScanTime; - - CMD_STATE eCommandState; - - CMD_CODE eCommand; - BOOL bBeaconTx; - BYTE byScanBBType; - - BOOL bStopBeacon; - BOOL bStopDataPkt; - BOOL bStopTx0Pkt; - UINT uAutoReConnectTime; - UINT uIsroamingTime; - - // 802.11 counter - - CMD_ITEM eCmdQueue[CMD_Q_SIZE]; - UINT uCmdDequeueIdx; - UINT uCmdEnqueueIdx; - UINT cbFreeCmdQueue; - BOOL bCmdRunning; - BOOL bCmdClear; - BOOL bNeedRadioOFF; - - BOOL bEnableRoaming; //DavidWang - BOOL bIsRoaming; //DavidWang - BOOL bFastRoaming; //DavidWang - BYTE bSameBSSMaxNum; //Davidwang - BYTE bSameBSSCurNum; //DavidWang - BOOL bRoaming; - BOOL b11hEable; - ULONG ulTxPower; - - // Encryption - NDIS_802_11_WEP_STATUS eEncryptionStatus; - BOOL bTransmitKey; - -//2007-0925-01<Add>by MikeLiu -//mike add :save old Encryption - NDIS_802_11_WEP_STATUS eOldEncryptionStatus; - - SKeyManagement sKey; - DWORD dwIVCounter; - - - RC4Ext SBox; - BYTE abyPRNG[WLAN_WEPMAX_KEYLEN+3]; - BYTE byKeyIndex; - - BOOL bAES; - BYTE byCntMeasure; - - UINT uKeyLength; - BYTE abyKey[WLAN_WEP232_KEYLEN]; - - // for AP mode - UINT uAssocCount; - BOOL bMoreData; - - // QoS - BOOL bGrpAckPolicy; - - - BYTE byAutoFBCtrl; - - BOOL bTxMICFail; - BOOL bRxMICFail; - - - // For Update BaseBand VGA Gain Offset - BOOL bUpdateBBVGA; - UINT uBBVGADiffCount; - BYTE byBBVGANew; - BYTE byBBVGACurrent; - BYTE abyBBVGA[BB_VGA_LEVEL]; - LONG ldBmThreshold[BB_VGA_LEVEL]; - - BYTE byBBPreEDRSSI; - BYTE byBBPreEDIndex; - - - BOOL bRadioCmd; - DWORD dwDiagRefCount; - - // For FOE Tuning - BYTE byFOETuning; - - // For Auto Power Tunning - - BYTE byAutoPwrTunning; - - // BaseBand Loopback Use - BYTE byBBCR4d; - BYTE byBBCRc9; - BYTE byBBCR88; - BYTE byBBCR09; - - // command timer - struct timer_list sTimerCommand; - -//2007-0115-01<Add>by MikeLiu -#ifdef TxInSleep - struct timer_list sTimerTxData; - ULONG nTxDataTimeCout; - BOOL fTxDataInSleep; - BOOL IsTxDataTrigger; -#endif - -#ifdef WPA_SM_Transtatus - BOOL fWPA_Authened; //is WPA/WPA-PSK or WPA2/WPA2-PSK authen?? -#endif - BYTE byReAssocCount; //mike add:re-association retry times! - BYTE byLinkWaitCount; - - SEthernetHeader sTxEthHeader; - SEthernetHeader sRxEthHeader; - BYTE abyBroadcastAddr[U_ETHER_ADDR_LEN]; - BYTE abySNAP_RFC1042[U_ETHER_ADDR_LEN]; - BYTE abySNAP_Bridgetunnel[U_ETHER_ADDR_LEN]; - - // Pre-Authentication & PMK cache - SPMKID gsPMKID; - SPMKIDCandidateEvent gsPMKIDCandidate; - - - // for 802.11h - BOOL b11hEnable; - - BOOL bChannelSwitch; - BYTE byNewChannel; - BYTE byChannelSwitchCount; - - //WPA supplicant daemon - struct net_device *wpadev; - BOOL bWPADEVUp; - struct sk_buff *skb; - //-- - -#ifdef WPA_SUPPLICANT_DRIVER_WEXT_SUPPORT - BOOL bwextstep0; - BOOL bwextstep1; - BOOL bwextstep2; - BOOL bwextstep3; - BOOL bWPASuppWextEnabled; -#endif - -#ifdef HOSTAP - // user space daemon: hostapd, is used for HOSTAP - BOOL bEnableHostapd; - BOOL bEnable8021x; - BOOL bEnableHostWEP; - struct net_device *apdev; - int (*tx_80211)(struct sk_buff *skb, struct net_device *dev); -#endif - UINT uChannel; - - struct iw_statistics wstats; // wireless stats - BOOL bCommit; - -} DEVICE_INFO, *PSDevice; - - + struct iw_statistics wstats; /* wireless stats */ + + int bCommit; +}; #define EnqueueRCB(_Head, _Tail, _RCB) \ { \ @@ -888,14 +705,13 @@ typedef struct __device_info { #define DequeueRCB(Head, Tail) \ { \ - PRCB RCB = Head; \ + struct vnt_rcb *RCB = Head; \ if (!RCB->Next) { \ Tail = NULL; \ } \ Head = RCB->Next; \ } - #define ADD_ONE_WITH_WRAP_AROUND(uVar, uModulo) { \ if ((uVar) >= ((uModulo) - 1)) \ (uVar) = 0; \ @@ -903,35 +719,17 @@ typedef struct __device_info { (uVar)++; \ } - -#define fMP_RESET_IN_PROGRESS 0x00000001 #define fMP_DISCONNECTED 0x00000002 -#define fMP_HALT_IN_PROGRESS 0x00000004 -#define fMP_SURPRISE_REMOVED 0x00000008 -#define fMP_RECV_LOOKASIDE 0x00000010 -#define fMP_INIT_IN_PROGRESS 0x00000020 -#define fMP_SEND_SIDE_RESOURCE_ALLOCATED 0x00000040 -#define fMP_RECV_SIDE_RESOURCE_ALLOCATED 0x00000080 #define fMP_POST_READS 0x00000100 #define fMP_POST_WRITES 0x00000200 -#define fMP_CONTROL_READS 0x00000400 -#define fMP_CONTROL_WRITES 0x00000800 - - #define MP_SET_FLAG(_M, _F) ((_M)->Flags |= (_F)) #define MP_CLEAR_FLAG(_M, _F) ((_M)->Flags &= ~(_F)) -#define MP_TEST_FLAG(_M, _F) (((_M)->Flags & (_F)) != 0) #define MP_TEST_FLAGS(_M, _F) (((_M)->Flags & (_F)) == (_F)) -#define MP_IS_READY(_M) (((_M)->Flags & \ - (fMP_DISCONNECTED | fMP_RESET_IN_PROGRESS | fMP_HALT_IN_PROGRESS | fMP_INIT_IN_PROGRESS | fMP_SURPRISE_REMOVED)) == 0) +#define MP_IS_READY(_M) (((_M)->Flags & fMP_DISCONNECTED) == 0) -/*--------------------- Export Functions --------------------------*/ - -//BOOL device_dma0_xmit(PSDevice pDevice, struct sk_buff *skb, UINT uNodeIndex); -BOOL device_alloc_frag_buf(PSDevice pDevice, PSDeFragControlBlock pDeF); +int device_alloc_frag_buf(struct vnt_private *, PSDeFragControlBlock pDeF); +void vnt_configure_filter(struct vnt_private *); #endif - - |
