📄 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: schiu $
*
* $Date: 2004/12/15 $
*
* $Revision: #10 $
*
*****************************************************************************/
#ifndef _MRVDRVDEVICE_H_
#define _MRVDRVDEVICE_H_
#ifdef IF_GSPI
#include "hostcmd.h"
#endif ///IF_GSPI
#ifdef IF_SDIO
#include "SDCardDDK.h"
#endif // IF_SDIO
#ifdef BG_SCAN
#define LENGTH_BGSCAN_CFG 512
#endif
#ifdef PA_CFG_EXT
#define LENGTH_PA_CFG 64
#endif
#define MAX_TX_PACKETS 64 //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;
#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;
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;
//35.p6++
BOOLEAN bIsBeaconLoseEvent;
BOOLEAN bIsDeauthenticationEvent;
//35.p6--
#endif //REASSOCIATE
#ifdef ACTIVE_ROAMING
NDIS_MINIPORT_TIMER MrvActiveRoamingTimer;
BOOLEAN ActiveRoamingTimerIsSet;
BOOLEAN bIsActiveRoaming;
ULONG bActiveRoamingScanOneChannel;
ULONG bLinkLostScanOneChannel;
NDIS_MINIPORT_TIMER MrvBGActiveRoamingTimer;
BOOLEAN BGActiveRoamingTimerIsSet;
USHORT ACTIVE_ROAMING_Count;
UCHAR Pre_ACTIVING_ROAMING_BSSID[MRVDRV_ETH_ADDR_LEN];
BOOLEAN ActiveRoamingwithBGSCAN_FLAG;
#endif //ACTIVE_ROAMING
BOOLEAN CommandTimerSet;
BOOLEAN TxPktTimerIsSet;
//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[MAX_AC_QUEUES]; // 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
#ifdef WMM_UAPSD
ULONG bNullFrameSent;
#endif
// 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 spin lock
NDIS_SPIN_LOCK FreeQSpinLock; // Command : free queue
//dralee_1108 --
// NDIS_SPIN_LOCK PriorityQSpinLock; // Command : priority queue
// NDIS_SPIN_LOCK TxSpinLock; // Tx
//ahan [2005-12-13] ++dralee_20060217
SubscibeEvent_t EventRecord;
USHORT SubscribeEvents;
//++dralee_20060220
USHORT ScanProbes; //ahan [2005-12-09]
USHORT LocalListenInterval; //ahan [2005-12-12]
// 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];
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 RSSITriggerValue;
USHORT RSSITriggerCounter;
USHORT RxPDRate;
#ifdef NEW_RSSI
/** Requested Signal Strength*/
USHORT bcn_avg_factor;
USHORT data_avg_factor;
SHORT SNR[MAX_TYPE_B][MAX_TYPE_AVG];
SHORT NF[MAX_TYPE_B][MAX_TYPE_AVG];
SHORT RSSI[MAX_TYPE_B][MAX_TYPE_AVG];
ULONG ulRSSITickCount;
ULONG ulRSSIThresholdTimer;
SHORT RSSI_Range;
SHORT NegativeRSSI_Range;
#endif //NEW_RSSI
#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;
LARGE_INTEGER MulticastReceivedFrameCount;
LARGE_INTEGER FCSErrorCount;
// Software filter support
BOOLEAN SoftwareFilterOn;
ULONG NoOfWEPEntry;
MRVL_WEP_KEY LastAddedWEPKey;
MRVL_WEP_INFO WEP_INFO_LIST[MRVDRV_NUM_OF_WEP_INFO];
ULONG IV;
MRVL_WEP_KEY CurrentWEPKey;
BOOLEAN AdHocCreated;
BOOLEAN AdHocFailed;
ULONG AcceptAnySSID;
ULONG AutoConfig;
ULONG TxWepKey;
ULONG Preamble;
NDIS_802_11_ANTENNA TxAntenna;
NDIS_802_11_ANTENNA RxAntenna;
ULONG Channel;
ULONG TxPower;
NDIS_802_11_FRAGMENTATION_THRESHOLD FragThsd;
NDIS_802_11_RTS_THRESHOLD RTSThsd;
ULONG RTSRetryLimit;
ULONG NetworkMode;
// 0:auto, 1:1 Mbps, 2:2 Mbps, 3:5.5 Mbps,4:11 Mbps, 5:22 Mbps
ULONG DataRate;
MRVL_WEP_KEY WepKey1;
MRVL_WEP_KEY WepKey2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -