⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rt2570sw.h

📁 台湾RALink公司的 rt2570无线 802.11g 网卡的 驱动的源代码 ,支持linux2.4以上的 内河
💻 H
📖 第 1 页 / 共 5 页
字号:
#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
/////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -