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

📄 eagledev.h

📁 marvell wifi driver CF-8385PN-NDIS-ARM4-WINCE50-5.24.17.p5-27.p11.src.zip
💻 H
📖 第 1 页 / 共 2 页
字号:
/******************* (c) Marvell Semiconductor, Inc., 2004 ********************
 *
 *
 *  Purpose:
 *
 *      This file contains definitions and data structures that are specific
 *      to Marvell MrvDrv 802.11 NIC. It contains the Device Information
 *      structure MRVDRV_ADAPTER.
 *
 *
 *	$Author: schiu $
 *
 *	$Date: 2004/12/15 $
 *
 *	$Revision: #10 $
 *
 *****************************************************************************/
#ifndef _MRVDRVDEVICE_H_
#define _MRVDRVDEVICE_H_

#ifdef BG_SCAN
#define LENGTH_BGSCAN_CFG      512
#endif

#define MAX_TX_PACKETS      64

typedef struct _TX_QUEUE_NODE {
	PNDIS_PACKET        pNextPacket;
}TX_QUEUE_NODE, *PTX_QUEUE_NODE;

typedef struct _TX_QUEUE_HEADER{
	PNDIS_PACKET        Head, Tail;
}TX_QUEUE_HEADER, *PTX_QUEUE_HEADER;


#ifdef FAST_RETURN_PACKET

typedef struct _RXPDQIDX {
	PVOID	_DO_NOT_USE;
	UINT	Index;
} RX_PDQ_IDX, *PRX_PDQ_IDX;

/*#define MrvDrvGetReturnedPackets(Adapter,Packet)								  \
{																			  \
	NDIS_SET_PACKET_STATUS(Packet, NDIS_STATUS_SUCCESS);					  \
	Adapter->RxPDQ[((PRX_PDQ_IDX)Packet->MiniportReserved)->Index].Control =0;\
}*/

#endif

typedef struct _MRV_QOS_PARAMS
{
	ULONG  AC_BE;		// Best Effort AC parameters
	ULONG  AC_BE_XTRA;	// Extra AC_BE parameters
	ULONG  AC_BK;		// Background AC parameters
	ULONG  AC_BK_XTRA;	// Extra AC_BK parameters
	ULONG  AC_VI;		// Video AC parameters
	ULONG  AC_VI_XTRA;	// Extra Video AC parameters
	ULONG  AC_VO;		// Voice AC parameters
	ULONG  AC_VO_XTRA;	// Extra Voice AC parameters
} MRV_QOS_PARAMS, *PMRV_QOS_PARAMS;

typedef struct _MRV_BSSID_IE_LIST
{
    NDIS_802_11_FIXED_IEs       FixedIE;
    UCHAR                       VariableIE[MRVDRV_SCAN_LIST_VAR_IE_SPACE];
} MRV_BSSID_IE_LIST, *PMRV_BSSID_IE_LIST;

typedef struct _PER_CHANNEL_BSSID_LIST_DATA 
{
    UCHAR               ucNumEntry;
    MRV_BSSID_IE_LIST   IEBuffer[MRVDRV_MAX_BSSID_LIST];
    NDIS_WLAN_BSSID_EX  BSSIDList[MRVDRV_MAX_BSSID_LIST];
} PER_CHANNEL_BSSID_LIST_DATA, *PPER_CHANNEL_BSSID_LIST_DATA;

#ifdef PMKID_CACHE_CAP
#define MAX_PMKID_CACHE	        8
#define LEN_OF_PMKID		16
#define MAX_PMKID_CANDIDATE	5

typedef struct _PMKID_CACHE
{
    UCHAR    bssid[MRVDRV_ETH_ADDR_LEN];
    UCHAR    pad[2]; // for 4 bytes boundary. ?do we need it?
    UCHAR    pmkid[LEN_OF_PMKID];
} PMKID_CACHE, *PPMKID_CACHE;
#endif //PMKID_CACHE_CAP

/////////////////////////////////////////////////////////////////
//
//			Adapter information
//
/////////////////////////////////////////////////////////////////

#pragma pack(4)

typedef struct _MRVDRV_ADAPTER
{
	/// Handle given by NDIS when the NIC registered itself 
    	NDIS_HANDLE             					MrvDrvAdapterHdl;

	/// Device information 
    	ULONG								VendorID;
    	UINT								BusNumber;
    	USHORT								SlotNumber;
    	USHORT								DeviceNumber;
	UCHAR                   					ChipVersion;
    	USHORT								DriverVersion;
    	UCHAR								MachineName[MRVDRV_DEFAULT_MACHINE_NAME_SIZE];

	/// Interrupt object for this adapter 
    	NDIS_MINIPORT_INTERRUPT				MrvDrvINT;
    	NDIS_INTERRUPT_MODE				MrvDrvINTMode;
    	UINT								MrvDrvINTVector;
    	UINT								MrvDrvINTLevel;
    	ULONG								INTCause;
    	NDIS_HANDLE             					MrvDrvWrapperConfigurationContext;

	ULONG								InitializationStatus;
    	UINT								TimerInterval;

	/// NDIS Timer
    	NDIS_MINIPORT_TIMER					MrvDrvCommandTimer;      		// Command
    	NDIS_MINIPORT_TIMER					MrvDrvTxPktTimer;        		// Tx
   	NDIS_MINIPORT_TIMER					MrvDrvChechTxQueueTimer;		// Chech Tx Queued Packet and send 
    	NDIS_MINIPORT_TIMER					MrvDrvIndicateConnectStatusTimer;
	NDIS_MINIPORT_TIMER					MrvReConnectTimer;     
	
	BOOLEAN								CommandTimerSet;         	// Command
	BOOLEAN                 					TxPktTimerIsSet;         		// Tx
	BOOLEAN								ChechTxQueueTimerIsSet;  	// Chech Tx Queued Packet and send  
	BOOLEAN	                                                 ReConnectTimerIsSet;
	
    	BOOLEAN								isCommandTimerExpired;
	BOOLEAN								DisconnectTimerSet;
    
	//NDIS_WORK_ITEM  					MrvDrvPMWorkItem;

       BOOLEAN                                                 bIsFreeNow;
	
	/// Command-related variables
    	USHORT								SeqNum;
    	//CmdCtrlNode						CmdArray[MRVDRV_NUM_OF_CMD_BUFFER];
	//UCHAR	                                                 CmdBufferArray[MRVDRV_NUM_OF_CMD_BUFFER][MRVDRV_SIZE_OF_CMD_BUFFER];
    	CmdCtrlNode							*CurCmd;	 // Current Command
    	Q_KEEPER							CmdFreeQ;	 // Queue to keep free command buffers
         Q_KEEPER                CmdPendQ;

	/// Tx-related variables
	WCB			            				Wcb;
	TxCtrlNode	            					TxNode;
	PNDIS_PACKET	        				SentPacket;
    	PNDIS_PACKET            					QueuedPacket;   // packet queued while in sleep
	UINT			        				SentFlags;  
	BOOLEAN                 					IsReturnResources; 
	UCHAR                   					TxRetryCount;   // number of times to retry sending the pkt

	/// Rx-related variables
   	RxPD								RxPD;
	UCHAR                   					pRxBuf[MRVDRV_ETH_RX_PACKET_BUFFER_SIZE];
	ULONG                   					ulRxSize;
#ifdef USE_RX_QUEUE	
    	NDIS_HANDLE                 				RxPacketPoolHandle;
    	NDIS_HANDLE                 				RxBufferPoolHandle;
    	PNDIS_PACKET                				pRxPacket[MRVDRV_NUM_RX_PKT_IN_QUEUE];
    	PNDIS_BUFFER                				pRxBuffer[MRVDRV_NUM_RX_PKT_IN_QUEUE];
    	PVOID                       					pRxBufVM[MRVDRV_NUM_RX_PKT_IN_QUEUE];
    	PACKET_QUEUE_NODE           			RxPacketQueueNode[MRVDRV_NUM_RX_PKT_IN_QUEUE];	

    	NDIS_SPIN_LOCK              				RxQueueSpinLock;
    	Q_KEEPER                    				RxPacketFreeQueue;
    	SHORT                      		    			sNumOutstandingRxPacket;
#endif

	/// NDIS spin lock
	NDIS_SPIN_LOCK						FreeQSpinLock;          // Command : free queue 
	NDIS_SPIN_LOCK						PriorityQSpinLock;	// Command : priority queue 
    	NDIS_SPIN_LOCK 	        				TxSpinLock;		       // Tx
    	NDIS_SPIN_LOCK 	        				RxSpinLock;		       // Rx

	/// MAC address information
    	UCHAR								PermanentAddr[MRVDRV_ETH_ADDR_LEN];
    	UCHAR								CurrentAddr[MRVDRV_ETH_ADDR_LEN];
    	UCHAR								MulticastList[MRVDRV_MAX_MULTICAST_LIST_SIZE][MRVDRV_ETH_ADDR_LEN];
    	ULONG								NumOfMulticastMACAddr;
    	USHORT                  					RegionCode;
    	USHORT                  					RegionTableIndex;
    	ULONG								FWReleaseNumber;

	/// Operation characteristics
    	ULONG								LinkSpeed;
    	ULONG								CurrentPacketFilter;
    	ULONG								CurrentLookAhead;
    	ULONG								ProtocolOptions;
    	ULONG								MACOptions;
    	ULONG								MediaConnectStatus;
    	NDIS_MEDIUM						MediaInUse;

	/// Status variables
    	NDIS_HARDWARE_STATUS    			HardwareStatus;
    	USHORT                  					FWStatus;
    	USHORT                  					MACStatus;
    	USHORT                  					RFStatus;
    	USHORT                  					CurentChannel; // 1..99

#ifdef WPA
    	/// WPA-related variables
	NDIS_802_11_ENCRYPTION_STATUS       	EncryptionStatus;
    	BOOLEAN                             			WPAEnabled;
	// Alignment on PDA
    	UCHAR                               				RESERVED[3];  
    	// Buffer to store data from OID_802_11_ASSOCIATION_INFORMATION
    	UCHAR                               				AssocInfoBuffer[MRVDRV_ASSOCIATE_INFO_BUFFER_SIZE];
    	// Key management
    	MRVL_WPA_KEY_SET                    		KeyMap[MRVL_NUM_WPA_KEYSET_SUPPORTED];
    	UCHAR                               				ucCurrentUsedKeyIdx;
        // Last added pair wise key
        PMRVL_WPA_KEY                       pLastAddedPWK;
        // Last matching group wise key
        PMRVL_WPA_KEY                       pLastAddedGWK;
#endif 

    	/// Misc variables
    	ULONG                               				FWCapInfo;

    	NDIS_802_11_WEP_STATUS              		WEPStatus;

    	NDIS_802_11_AUTHENTICATION_MODE	    AuthenticationMode;
    	NDIS_802_11_NETWORK_INFRASTRUCTURE   InfrastructureMode; 
    	NDIS_802_11_PRIVACY_FILTER          	    PrivacyFilter;
		
    	ULONG                               				ulAttemptedBSSIDIndex;
    	ULONG                               				ulCurrentBSSIDIndex;

	NDIS_802_11_SSID                                  HideSsidSsid;
		
    	NDIS_802_11_SSID                    		CurrentSSID;
    	UCHAR                               				CurrentBSSID[MRVDRV_ETH_ADDR_LEN];
    	NDIS_802_11_CONFIGURATION           	CurrentConfiguration;

    	NDIS_WLAN_BSSID_EX                  		CurrentBSSIDDesciptor;
    	MRV_BSSID_IE_LIST                   		CurrentBSSIDIEBuffer;
	BSS_DESCRIPTION_SET_ALL_FIELDS      	CurrentBssDesciptor;

    	NDIS_802_11_SSID                    		AttemptedSSIDBeforeScan;
    	NDIS_802_11_SSID                    		PreviousSSID;
    	UCHAR                               				PreviousBSSID[MRVDRV_ETH_ADDR_LEN];

    	// BSSID LIST for ESS and IBSS 
    	NDIS_WLAN_BSSID_EX		            		BSSIDList[MRVDRV_MAX_BSSID_LIST];
    	MRV_BSSID_IE_LIST                   		IEBuffer[MRVDRV_MAX_BSSID_LIST];
	BSS_DESCRIPTION_SET_ALL_FIELDS		BssDescList[MRVDRV_MAX_BSSID_LIST];
	ULONG					            		ulNumOfBSSIDs;
    	// progressive scan data
    	NDIS_WLAN_BSSID_EX                  		PSBSSIDList[MRVDRV_MAX_BSSID_LIST];    
    	MRV_BSSID_IE_LIST                   		PSIEBuffer[MRVDRV_MAX_BSSID_LIST];
	BSS_DESCRIPTION_SET_ALL_FIELDS		PSBssDescList[MRVDRV_MAX_BSSID_LIST];
	ULONG					            		ulPSNumOfBSSIDs;    
	NDIS_802_11_SSID                    		SysAttemptedSSID;

	BOOLEAN                             			bIsPendingReset;
	BOOLEAN								bIsAssociationBlockedByScan;
	BOOLEAN                             			bIsScanWhileConnect;
    	BOOLEAN                             			bIsConnectToAny;  
  
    	BOOLEAN    							bIsScanInProgress;
	BOOLEAN    							bIsAssociateInProgress;

	BOOLEAN                     					bRetryAssociate;

	PENDING_OID							PendingGetBssidOid;
	PENDING_OID                         			PendingSetSssidOid;
	PENDING_OID                         			PendingMacAddressOid;

       // Requested Signal Strength Indicator 
       UCHAR                                       		SNRNF[MAX_SNR][2];
       USHORT                                      		SNR[MAX_TYPE_B][MAX_TYPE_AVG];
       USHORT                                      		NF[MAX_TYPE_B][MAX_TYPE_AVG];	
       LONG                                        			RSSI[MAX_TYPE_B][MAX_TYPE_AVG];
	LONG					            		LastRSSI;
    	LONG					            		RSSITriggerValue;
    	USHORT					            		RSSITriggerCounter;

    	BOOLEAN                     					TxPowerLevelIsSetByOS; // is the power level set by the OS or API?
    	NDIS_802_11_TX_POWER_LEVEL  		TxPowerLevel;

 	USHORT   							DTIMNum;
    	BOOLEAN  							DTIMFlag;

    	UCHAR                       					ucNumCmdTimeOut;

    	ULONG                       					DefaultPerChannelScanTime;
    	ULONG                       					ulLastMICErrorTime;
   
   	// MAC control record 
    	USHORT                                 			usMacControlRecord;

	/// Used to deal with 0 length SET SSID (Need to auto associate)
    	NDIS_802_11_SSID		            		DesiredSSID;
    	NDIS_802_11_SSID                    		NullSSID;
    	NDIS_802_11_SSID					ActiveScanSSID;
    	BOOLEAN								SetActiveScanSSID;
    	UCHAR 								ActiveScanBSSID[MRVDRV_ETH_ADDR_LEN];
	BOOLEAN								SetActiveScanBSSID;
    	UCHAR                               				NullBSSID[MRVDRV_ETH_ADDR_LEN];
    	ULONG                               				ulLastScanRequestTime;
	ULONG                                                     ulRetryNum;

	/// Power management and pNp support
	NDIS_DEVICE_POWER_STATE 			CurPowerState;
	ULONG                   					PowerLevelList[MRVDRV_TX_POWER_LEVEL_TOTAL];
	BOOLEAN                 					SurpriseRemoved;
    	UCHAR                   					Pad3;
	USHORT                  					SupportTxPowerLevel;
	USHORT                  					CurrentTxPowerLevel;

    	/// 802.3 Statistics

⌨️ 快捷键说明

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