?? rt2570sw.h
字號(hào):
#define IEEE80211_NWID_LEN 32
#define UNLINK_TIMEOUT_MS 3
//
// The miniport adapter structure
//
typedef struct _RT2570_ADAPTER
{
int nicknamelen;
char nickn[IEEE80211_NWID_LEN+1]; // nickname, only used in the iwconfig i/f
struct tasklet_struct rx_bh;
struct usb_device *usb;
//KERNEL266
struct usb_config_descriptor *config;
//struct usb_host_config *config;
devctrlrequest *devreq;
/* The device we're working with
* It's important to note:
* (o) you must hold dev_semaphore to change pusb_dev
*/
struct semaphore usbdev_semaphore; /* protect usb */
// Thread
struct semaphore mlme_semaphore; /* to sleep thread on */
struct semaphore RTUSBCmd_semaphore; /* to sleep thread on */
struct completion notify; /* thread begin/end */
pid_t MLMEThr_pid;
pid_t RTUSBCmdThr_pid;
wait_queue_head_t *wait;
spinlock_t *lock;
#if 1
UINT SET_R17_FLAG;
UCHAR BBPR17InitValue;
UCHAR ResetRequest;
UCHAR BulkAction;
#endif
struct net_device *net;
BOOLEAN bNetDeviceStopQueue;
#if WIRELESS_EXT >= 12
struct iw_statistics iw_stats;
#endif
struct net_device_stats netstats;
// configuration
UCHAR PermanentAddress[ETH_LENGTH_OF_ADDRESS]; // Factory default MAC address
UCHAR CurrentAddress[ETH_LENGTH_OF_ADDRESS]; // User changed MAC address
USHORT EEPROMDefaultValue[NUM_EEPROM_BBP_PARMS];
USHORT EEPROMBBPTuningParameters[NUM_EEPROM_BBP_TUNING_PARMS];
//
// Handle given by NDIS when the Adapter registered itself.
// Various NDIS handle function
//
MGMT_STRUC MgmtRing[MGMT_RING_SIZE]; // management ring size
UCHAR NextTxIndex; // Next TxD write pointer
UCHAR NextMLMEIndex; // Next PrioD write pointer
UCHAR PushMgmtIndex; // Next SW management ring index
UCHAR PopMgmtIndex; // Next SW management ring index
atomic_t MgmtQueueSize; // Number of Mgmt request stored in MgmtRing
UCHAR NextRxBulkInIndex;
UCHAR NextBulkOutIndex;
BOOLEAN BulkOutPending;
BOOLEAN ControlPending;
ULONG PrioRingTxCnt;
UCHAR PrioRingFirstIndex;
// 802.3 multicast support
ULONG NumberOfMcAddresses; // Number of mcast entry exists
UCHAR McastTable[MAX_MCAST_LIST_SIZE][ETH_LENGTH_OF_ADDRESS]; // Mcast list
ULONG Flags; // Represent current device status
// Flags for bulk out data priority
ULONG BulkFlags;
/////////////////////
// Transmit Path
/////////////////////
atomic_t TxCount; // Number of Bulkout waiting to be send.
TX_CONTEXT TxContext[TX_RING_SIZE];
TX_CONTEXT MLMEContext[PRIO_RING_SIZE];
TX_CONTEXT BeaconContext[BEACON_RING_SIZE];
TX_CONTEXT NullContext;
TX_CONTEXT PsPollContext;
RTS_BUFFER RTSBuffer;
WPAPSK_CONTEXT WpaPskContext;
PUCHAR TxBuffer;
TX_BUFFER TxMgmtBuf;
/////////////////////
// Receive Path
/////////////////////
RX_CONTEXT RxContext[RX_RING_SIZE];
PURB pRxUrb;//red: test mode only
PIRP pRxIrp;
PUCHAR RxBuffer;
// SEND queue list
QUEUE_HEADER SendTxWaitQueue;
USHORT Sequence; // Current sequence number
TUPLE_CACHE TupleCache[MAX_CLIENT]; // Maximum number of tuple caches, only useful in Ad-Hoc
UCHAR TupleCacheLastUpdateIndex; // 0..MAX_CLIENT-1
FRAGMENT_FRAME FragFrame; // Frame storage for fragment frame
// For MiniportTransferData
PUCHAR pRxData; // Pointer to current RxRing offset / fragment frame offset
// Counters for 802.3 & generic.
// Add 802.11 specific counters later
COUNTER_802_3 Counters; // 802.3 counters
COUNTER_802_11 WlanCounters; // 802.11 MIB counters
COUNTER_RALINK RalinkCounters; // Ralink propriety counters
COUNTER_DRS DrsCounters; // counters for Dynamic Rate Switching
COUNTER_QA QACounters; // Ralink propriety counters
NDIS_MEDIA_STATE MediaState;
UCHAR StationState;
NDIS_DEVICE_POWER_STATE CurrentPowerState; // Current device power state
NDIS_DEVICE_POWER_STATE NextPowerState; // Next device power state
PRIVATE_STRUC PrivateInfo; // Private information & counters
// SpinLocks
spinlock_t SendTxWaitQueueLock; // SendTxWaitQueue spinlock
spinlock_t MLMEWaitQueueLock; // SendTxWaitQueue spinlock
spinlock_t CmdQLock; // SendTxWaitQueue spinlock
spinlock_t BulkOutLock; // SendTxWaitQueue spinlock
spinlock_t ControlLock; // SendTxWaitQueue spinlock
spinlock_t MLMEQLock; // SendTxWaitQueue spinlock
spinlock_t GenericLock; // SendTxWaitQueue spinlock
spinlock_t MemLock; // need to check
// Reference count
LONG RefCount; // Keep adapter refer count for checkforhang & halt
ULONG SendRefCount; // number of packet that have not been confirmed
ULONG RcvRefCount; // number of packets that have not been returned back
// Various NDIS Event
int ExitEvent;
NDIS_MEDIA_STATE LinkIsActive;
ULONG CurrentLookAhead;
CmdQ CmdQ;
DATA_BULKOUT_QUEUE DataQ;
MLME_BULKOUT_QUEUE MLMEQ;
// Boolean control for packet filter
BOOLEAN bAcceptDirect;
BOOLEAN bAcceptMulticast;
BOOLEAN bAcceptBroadcast;
BOOLEAN bAcceptAllMulticast;
// Control to check Tx hang
BOOLEAN bTxBusy;
PQUEUE_ENTRY FirstEntryInQueue; // The first packet in Tx queue
// Control disconnect / connect event generation
ULONG LinkDownTime;
UCHAR LastSsidLen; // the actual ssid length in used
CHAR LastSsid[MAX_LEN_OF_SSID]; // NOT NULL-terminated
MACADDR LastBssid;
BOOLEAN bConfigChanged; // Config Change flag for the same SSID setting
PORT_CONFIG PortCfg;
MLME_STRUCT Mlme;
/////////////////////
// USB
/////////////////////
USHORT BulkOutMaxPacketSize; // 64 in XP
USHORT BulkInMaxPacketSize;
/////////////////////
// Control Flags
/////////////////////
LONG PendingTx;
atomic_t PendingRx;
LONG PendingReset;
LONG BulkOutFailed;
LONG BulkInFailed;
LONG DeviceFailed;
UCHAR DeviceMode;
BOOLEAN UnplugDevice;
atomic_t TerminateThreads;
atomic_t PendingIoCount;
BOOLEAN BSSSelected;
BOOLEAN StationWasAssociated;
BOOLEAN StationIsAssociated;
BOOLEAN StationIsAuthenticated;
UCHAR WepLevel;
BOOLEAN OutOfRangeDetected;
BOOLEAN AddressOverrided;
BOOLEAN AutoAuthentication;
BOOLEAN AutoPreamble;
BOOLEAN AutoJoin;
BOOLEAN UseInternalFWImage;
BOOLEAN AnyAP;
PVOID pInformationBuffer;
ULONG InformationBufferLength;
PULONG pBytesWritten;
PULONG pBytesNeeded;
BOOLEAN SendDelimitingPacket;
ULONG DelimitingPacketSent;
UINT FragmentsSent;
USHORT BulkOutLength;
USHORT BulkOutRemained;
BOOLEAN ContinBulkOut;
USHORT BulkInRemained;
BOOLEAN ContinBulkIn;
BOOLEAN BeaconIntervalChangeAllowed;
USHORT SentBeaconsCount;
USHORT ReceivedBeaconsCount;
LARGE_INTEGER TransmittedFragmentCount;
#ifdef TEST_MODE_SUPPORT
CmdQElmt CmdQElements[12];
#else
CmdQElmt CmdQElements[COMMAND_QUEUE_SIZE];
#endif
USHORT MACCounters[11];
TX_RATE_SWITCHING_STRUC TxRateSwitchingStruc[12];
ULONG CurrRateGoodTime;
UCHAR CurrRateBadTime;
UCHAR TxQuality;
BBP_TUNING_PARAMETERS_STRUC BBPTuningParameters;
ULONG LastRxRate;
ULONG PacketsSentBetweenTBTTs;
BOOLEAN ScanAllowed;
// Alpha can't link up problem
ULONG ExtraInfo; // Extra information for displaying status
struct net_device_stats net_device_stats; /* interface statistics */
} RT2570ADAPTER, *PRT2570ADAPTER;
#endif
////////////////////////////////////////////////////////////////////////////
//
// inline FUNCTIONS
//
// IncrementIoCount and DecrementIoCount
//
// DESCRIPTION
//
// We keep a pending IO count. This count is initialized to one.
// Subsequently, the count is incremented for each new IRP received or
// created and is decremented when each IRP is completed.
// Transition to 'one' therefore indicates no IO is pending and signals
// Adapter->RemoveEvent. Transition to 'zero' signals an event
// (Adapter->RemoveEvent) to enable device removal.
//
// INPUT
//
// Adapter Ptr to the adapter object
//
// OUTPUT
//
// -
//
////////////////////////////////////////////////////////////////////////////
inline VOID IncrementIoCount(PRT2570ADAPTER Adapter);
inline VOID DecrementIoCount(IN PRT2570ADAPTER pAdapter);
////////////////////////////////////////////////////////////////////////////
// __inline VOID EnQTxPacket(PRT2570ADAPTER Adapter, PNDIS_PACKET Packet)
// {
// PTX_QUEUE tempTxQnode;
//
//
// if (AllocateMemory(&tempTxQnode, sizeof(TX_QUEUE))!=NDIS_STATUS_SUCCESS)
// {
// NdisMSendComplete(Adapter->AdapterHandle, Packet, NDIS_STATUS_SUCCESS);
// return;
// }
//
// tempTxQnode->pNdisPacket = Packet;
// tempTxQnode->next = NULL;
//
// if (Adapter->TxQHead==NULL)
// {
// Adapter->TxQHead = tempTxQnode;
// }
//
// if (Adapter->TxQTail!=NULL)
// {
// Adapter->TxQTail->next = tempTxQnode;
// }
//
// Adapter->TxQTail = tempTxQnode;
// }
////////////////////////////////////////////////////////////////////////////
// __inline VOID DeQTxPacket(PRT2570ADAPTER Adapter)
// {
// PTX_QUEUE tempTxQnode;
//
// tempTxQnode = Adapter->TxQHead;
// Adapter->TxQHead = tempTxQnode->next;
//
// if (Adapter->TxQHead==NULL)
// {
// Adapter->TxQTail=NULL;
// }
//
// FreeMemory(tempTxQnode, sizeof(TX_QUEUE));
// }
#define DEVICE_VENDOR_REQUEST_OUT (USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE) // 0x40
#define DEVICE_VENDOR_REQUEST_IN (USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE ) //0xc0
#define INTERFACE_VENDOR_REQUEST_OUT 0x41
#define INTERFACE_VENDOR_REQUEST_IN 0xc1
#define PL_RESET_IN (1<<3) /* reset input pipe */
////////////////////////////////////////////////////////////////////////////
// Misc definitions
////////////////////////////////////////////////////////////////////////////
#define OS_IS_WIN_2000 0
#define OS_IS_WIN_ME 1
#define OS_IS_WIN_98 2
#define OS_IS_WIN_XP 3
////////////////////////////////////////////////////////////////////////////
// Station States definitions
////////////////////////////////////////////////////////////////////////////
#define STATION_STATE_INITIALIZING 0x00
#define STATION_STATE_SCANNING 0x01
#define STATION_STATE_JOINNING 0x02
#define STATION_STATE_AUTHENTICATING 0x03
#define STATION_STATE_ASSOCIATING 0x04
#define STATION_STATE_READY 0x05
#define STATION_STATE_OUT_OF_RANGE 0x06
#define STATION_STATE_DISASSOCIATING 0x07
#define STATION_STATE_DIAUTHENTICATING 0x08
#define STATION_STATE_REASSOCIATING 0x09
#define STATION_STATE_FORCED_JOINNING 0x0a
#define STATION_STATE_RECONFIGURING 0x0b
#define STATION_STATE_FW_UPGRADE 0x0c
#define STATION_STATE_FORCED_JOIN_FAILURE 0x0d
#define STATION_STATE_RESETTING 0x0e
#define STATION_STATE_RESET_PENDING 0x0f
#define STATION_STATE_NOT_NET_MODE 0x10
#define STATION_STATE_WAIT_ACTION 0x11 //under XP we need this state to allow XP to take control
#define STATION_STATE_REJECTING_PACKETS 0x99
#define STATION_STATE_NO_CARD 0xf0
#define STATION_STATE_MGMT_ERROR 0xf1
#define STATION_STATE_GENERAL_ERROR 0xf2
#define STATION_STATE_POWER_DOWN 0xff
////////////////////////////////////////////////////////////////////////////
// SCAN Type Definitions
/////////////////////////////////
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -