📄 eagledev.h
字号:
/******************* (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: heb $
*
* $Date: 2007/07/13 08:01:34 $
*
* $Revision: 1.5.2.1 $
*
*****************************************************************************/
#ifndef _MRVDRVDEVICE_H_
#define _MRVDRVDEVICE_H_
#ifdef IF_SPI
#include "hostcmd.h"
#endif
#ifdef SDIO
#include "SDCardDDK.h"
#endif // SDIO
//#define MAX_TX_PACKETS 128 //dralee_20051128
#define MAX_TX_PACKETS 256 //dralee_20051128
#define MAX_ACTIVE_REG_PATH 256
#define NDIS_SUCCESS(Status) ((NDIS_STATUS)(Status) == NDIS_STATUS_SUCCESS)
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;
/////////////////////////////////////////////////////////////////
//
// 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;
#ifdef CONFIG_WLAN_DHCP_PROXY
NDIS_MINIPORT_TIMER DHCPProxyRxPktTimer;
PNDIS_PACKET DHCPRespPacket;
UINT DHCPProxyRxPktTimerSet;
#endif
NDIS_MINIPORT_TIMER MrvDrvTxPktTimer;
//dralee, unused
//NDIS_MINIPORT_TIMER MrvDrvCheckTxQueueTimer;
NDIS_MINIPORT_TIMER MrvDrvIndicateConnectStatusTimer;
#ifdef REASSOCIATE
NDIS_MINIPORT_TIMER MrvReConnectTimer;
BOOLEAN ReConnectTimerIsSet;
// reconnect
BOOLEAN bIsReconnectEnable;
USHORT ReconnectType;
USHORT usReconnectCounter;
ULONG ulReconnectPeriod;
ULONG ulStartTimeStamp;
BOOLEAN bIsReConnectNow;
BOOLEAN bIsSystemConnectNow;
BOOLEAN bIsAcceptSystemConnect;
NDIS_802_11_NETWORK_INFRASTRUCTURE ReInfrastructureMode;
NDIS_802_11_AUTHENTICATION_MODE ReAuthenticationMode;
NDIS_802_11_ENCRYPTION_STATUS ReEncryptionStatus;
MRVL_WEP_KEY ReWEPKey;
NDIS_802_11_SSID ReSSID;
#endif //REASSOCIATE
NDIS_MINIPORT_TIMER MrvDrvRssiHighTimer;
BOOLEAN CommandTimerSet;
BOOLEAN TxPktTimerIsSet;
BOOLEAN RssiHighTimerIsSet;
//BOOLEAN CheckTxQueueTimerIsSet;
BOOLEAN isCommandTimerExpired;
BOOLEAN DisconnectTimerSet;
NDIS_WORK_ITEM MrvDrvPMWorkItem;
// Command-related variables
USHORT SeqNum;
CmdCtrlNode *CmdArray;
CmdCtrlNode *CurCmd; // Current Command
Q_KEEPER CmdFreeQ; // Queue to keep free command buffers
Q_KEEPER CmdPendQ; // plus
#ifdef TX_PRY_Q
TXQ_NODE FreeTxQNode[MAX_TX_PACKETS];
PTXQ_NODE TxFreeQ;
TXQ_KEEPER TXPRYQ[NUM_OF_WMM_PRIORITY_LEVEL]; // Tx priority Queue 0,1,2,3
//TXQ_KEEPER TXPRYQ1; // Tx priority Queue 1
//TXQ_KEEPER TXPRYQ2; // Tx priority Queue 2
TXQ_KEEPER TXRETQ; // Tx priority Queue 3
#ifdef RETQ_TIMER
BOOLEAN RetQTimerIsSet;
NDIS_MINIPORT_TIMER MrvRetQTimer;
#endif //RETQ_TIMER
#endif //TX_PRY_Q
// Tx-related variables
//ULONG PacketSentState;
WCB Wcb;
TxCtrlNode TxNode;
PNDIS_PACKET SentPacket;
ULONG bSentPacketReturned; //dralee++ 09172005
// PNDIS_PACKET QueuedPacket; // packet queued while in sleep , dralee
//UINT SentFlags; dralee, unused .
//dralee-- 09172005 unused flag
//BOOLEAN FirstSentDone;
// UCHAR TxRetryCount; // number of times to retry sending the pkt
//#ifdef USE_TX_QUEUE
// NDIS_SPIN_LOCK TxQueueLock;
// TX_QUEUE_HEADER TxQueue;
// UINT TxQueueDepth;
//#endif
/// Rx-related variables
//dralee, 072705
//RxPD RxPD1;
UCHAR pRxBuf[MRVDRV_ETH_RX_PACKET_BUFFER_SIZE];
ULONG ulRxSize;
PNDIS_PACKET pRxCurPkt;
PRxPD pRxPD1;
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;
NDIS_HANDLE PMUTxPacketPoolHandle;
NDIS_HANDLE PMUTxBufferPoolHandle;
PNDIS_PACKET pPMUTxPacket;
PNDIS_BUFFER pPMUTxBuffer;
PVOID pPMUTxBufVM;
/// NDIS spin lock
NDIS_SPIN_LOCK FreeQSpinLock; // Command : free queue
//dralee_1108 --
// NDIS_SPIN_LOCK PriorityQSpinLock; // Command : priority queue
// NDIS_SPIN_LOCK TxSpinLock; // Tx
// 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 // #ifdef WPA
///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 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];
NDIS_WLAN_BLACK_BSSID_EX BlackBSSIDList[MRVDRV_MAX_BSSID_LIST];
ULONG BlackBSSIDListCursor;
ULONG ProfileListCursor;
MRV_BSSID_IE_LIST PSIEBuffer[MRVDRV_MAX_BSSID_LIST];
BSS_DESCRIPTION_SET_ALL_FIELDS PSBssDescList[MRVDRV_MAX_BSSID_LIST];
ULONG ulPSNumOfBSSIDs;
BOOLEAN bIsPendingReset;
BOOLEAN bIsAssociationBlockedByScan;
BOOLEAN bIsScanWhileConnect;
BOOLEAN bIsConnectToAny;
BOOLEAN bIsScanInProgress;
BOOLEAN bIsAssociateInProgress;
BOOLEAN bRetryAssociate;
PENDING_OID PendingGetBssidOid;
PENDING_OID PendingSetSssidOid;
LONG LastRSSI;
LONG rssi_Current ;
LONG RSSITriggerValue;
USHORT RSSITriggerCounter;
#ifdef NEW_RSSI
/* Requested Signal Strength Indicator */
//int AvgPacketCount;
UCHAR SNRNF[MAX_SNR][2];
USHORT SNR[MAX_TYPE_B][MAX_TYPE_AVG];
USHORT NF[MAX_TYPE_B][MAX_TYPE_AVG];
//USHORT RSSI[MAX_TYPE_B][MAX_TYPE_AVG];
LONG RSSI[MAX_TYPE_B][MAX_TYPE_AVG];
//ULONG RxPDSNRAge;
#endif
#ifdef UNDER_CE
BOOLEAN bIsLastOIDSetEncryptionStatus;
#endif // #ifdef UNDER_CE
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;
UINT m_NumScanInAssociationBlocked;
/// 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
ULONGLONG XmitOK;
ULONGLONG RcvOK;
ULONGLONG XmitError;
ULONGLONG RcvError;
ULONGLONG RcvNoBuffer;
ULONGLONG RcvCRCError;
ULONGLONG DirectedFramesRcvOK;
/// 802.11 statistics
LARGE_INTEGER TransmittedFragmentCount;
LARGE_INTEGER MulticastTransmittedFrameCount;
LARGE_INTEGER FailedCount;
LARGE_INTEGER RetryCount;
LARGE_INTEGER MultipleRetryCount;
LARGE_INTEGER RTSSuccessCount;
LARGE_INTEGER RTSFailureCount;
LARGE_INTEGER ACKFailureCount;
LARGE_INTEGER FrameDuplicateCount;
LARGE_INTEGER ReceivedFragmentCount;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -