2008-10-28 21:48:09 +00:00
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Ralink Tech Inc .
* 5F . , No .36 , Taiyuan St . , Jhubei City ,
* Hsinchu County 302 ,
* Taiwan , R . O . C .
*
* ( c ) Copyright 2002 - 2007 , Ralink Technology , Inc .
*
* This program is free software ; you can redistribute it and / or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation ; either version 2 of the License , or *
* ( at your option ) any later version . *
* *
* This program is distributed in the hope that it will be useful , *
* but WITHOUT ANY WARRANTY ; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the *
* GNU General Public License for more details . *
* *
* You should have received a copy of the GNU General Public License *
* along with this program ; if not , write to the *
* Free Software Foundation , Inc . , *
* 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA . *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Module Name :
rtmp . h
Abstract :
Miniport generic portion header file
Revision History :
Who When What
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Paul Lin 2002 - 08 - 01 created
James Tan 2002 - 09 - 06 modified ( Revise NTCRegTable )
John Chang 2004 - 09 - 06 modified for RT2600
*/
# ifndef __RTMP_H__
# define __RTMP_H__
# include "spectrum_def.h"
2009-09-22 18:44:07 +00:00
# include "rtmp_dot11.h"
# include "rtmp_chip.h"
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
typedef struct _RTMP_ADAPTER RTMP_ADAPTER ;
typedef struct _RTMP_ADAPTER * PRTMP_ADAPTER ;
typedef struct _RTMP_CHIP_OP_ RTMP_CHIP_OP ;
//#define DBG 1
//#define DBG_DIAGNOSE 1
//+++Add by shiang for merge MiniportMMRequest() and MiniportDataMMRequest() into one function
# define MAX_DATAMM_RETRY 3
# define MGMT_USE_QUEUE_FLAG 0x80
//---Add by shiang for merge MiniportMMRequest() and MiniportDataMMRequest() into one function
# define MAXSEQ (0xFFF)
2008-10-28 21:48:09 +00:00
extern unsigned char SNAP_AIRONET [ ] ;
extern unsigned char CISCO_OUI [ ] ;
extern UCHAR BaSizeArray [ 4 ] ;
extern UCHAR BROADCAST_ADDR [ MAC_ADDR_LEN ] ;
extern UCHAR ZERO_MAC_ADDR [ MAC_ADDR_LEN ] ;
extern ULONG BIT32 [ 32 ] ;
extern UCHAR BIT8 [ 8 ] ;
extern char * CipherName [ ] ;
extern char * MCSToMbps [ ] ;
extern UCHAR RxwiMCSToOfdmRate [ 12 ] ;
extern UCHAR SNAP_802_1H [ 6 ] ;
extern UCHAR SNAP_BRIDGE_TUNNEL [ 6 ] ;
extern UCHAR SNAP_AIRONET [ 8 ] ;
extern UCHAR CKIP_LLC_SNAP [ 8 ] ;
extern UCHAR EAPOL_LLC_SNAP [ 8 ] ;
extern UCHAR EAPOL [ 2 ] ;
extern UCHAR IPX [ 2 ] ;
extern UCHAR APPLE_TALK [ 2 ] ;
extern UCHAR RateIdToPlcpSignal [ 12 ] ; // see IEEE802.11a-1999 p.14
extern UCHAR OfdmRateToRxwiMCS [ ] ;
extern UCHAR OfdmSignalToRateId [ 16 ] ;
extern UCHAR default_cwmin [ 4 ] ;
extern UCHAR default_cwmax [ 4 ] ;
extern UCHAR default_sta_aifsn [ 4 ] ;
extern UCHAR MapUserPriorityToAccessCategory [ 8 ] ;
extern USHORT RateUpPER [ ] ;
extern USHORT RateDownPER [ ] ;
extern UCHAR Phy11BNextRateDownward [ ] ;
extern UCHAR Phy11BNextRateUpward [ ] ;
extern UCHAR Phy11BGNextRateDownward [ ] ;
extern UCHAR Phy11BGNextRateUpward [ ] ;
extern UCHAR Phy11ANextRateDownward [ ] ;
extern UCHAR Phy11ANextRateUpward [ ] ;
extern CHAR RssiSafeLevelForTxRate [ ] ;
extern UCHAR RateIdToMbps [ ] ;
extern USHORT RateIdTo500Kbps [ ] ;
extern UCHAR CipherSuiteWpaNoneTkip [ ] ;
extern UCHAR CipherSuiteWpaNoneTkipLen ;
extern UCHAR CipherSuiteWpaNoneAes [ ] ;
extern UCHAR CipherSuiteWpaNoneAesLen ;
extern UCHAR SsidIe ;
extern UCHAR SupRateIe ;
extern UCHAR ExtRateIe ;
extern UCHAR HtCapIe ;
extern UCHAR AddHtInfoIe ;
extern UCHAR NewExtChanIe ;
extern UCHAR ErpIe ;
extern UCHAR DsIe ;
extern UCHAR TimIe ;
extern UCHAR WpaIe ;
extern UCHAR Wpa2Ie ;
extern UCHAR IbssIe ;
extern UCHAR Ccx2Ie ;
2009-09-22 18:44:07 +00:00
extern UCHAR WapiIe ;
2008-10-28 21:48:09 +00:00
extern UCHAR WPA_OUI [ ] ;
extern UCHAR RSN_OUI [ ] ;
2009-09-22 18:44:07 +00:00
extern UCHAR WAPI_OUI [ ] ;
2008-10-28 21:48:09 +00:00
extern UCHAR WME_INFO_ELEM [ ] ;
extern UCHAR WME_PARM_ELEM [ ] ;
extern UCHAR Ccx2QosInfo [ ] ;
extern UCHAR Ccx2IeInfo [ ] ;
extern UCHAR RALINK_OUI [ ] ;
extern UCHAR PowerConstraintIE [ ] ;
extern UCHAR RateSwitchTable [ ] ;
extern UCHAR RateSwitchTable11B [ ] ;
extern UCHAR RateSwitchTable11G [ ] ;
extern UCHAR RateSwitchTable11BG [ ] ;
extern UCHAR RateSwitchTable11BGN1S [ ] ;
extern UCHAR RateSwitchTable11BGN2S [ ] ;
extern UCHAR RateSwitchTable11BGN2SForABand [ ] ;
extern UCHAR RateSwitchTable11N1S [ ] ;
extern UCHAR RateSwitchTable11N2S [ ] ;
extern UCHAR RateSwitchTable11N2SForABand [ ] ;
extern UCHAR PRE_N_HT_OUI [ ] ;
typedef struct _RSSI_SAMPLE {
CHAR LastRssi0 ; // last received RSSI
CHAR LastRssi1 ; // last received RSSI
CHAR LastRssi2 ; // last received RSSI
CHAR AvgRssi0 ;
CHAR AvgRssi1 ;
CHAR AvgRssi2 ;
SHORT AvgRssi0X8 ;
SHORT AvgRssi1X8 ;
SHORT AvgRssi2X8 ;
} RSSI_SAMPLE ;
//
// Queue structure and macros
//
typedef struct _QUEUE_ENTRY {
struct _QUEUE_ENTRY * Next ;
} QUEUE_ENTRY , * PQUEUE_ENTRY ;
// Queue structure
typedef struct _QUEUE_HEADER {
PQUEUE_ENTRY Head ;
PQUEUE_ENTRY Tail ;
ULONG Number ;
} QUEUE_HEADER , * PQUEUE_HEADER ;
# define InitializeQueueHeader(QueueHeader) \
{ \
( QueueHeader ) - > Head = ( QueueHeader ) - > Tail = NULL ; \
( QueueHeader ) - > Number = 0 ; \
}
# define RemoveHeadQueue(QueueHeader) \
( QueueHeader ) - > Head ; \
{ \
PQUEUE_ENTRY pNext ; \
if ( ( QueueHeader ) - > Head ! = NULL ) \
{ \
pNext = ( QueueHeader ) - > Head - > Next ; \
2009-09-22 18:44:07 +00:00
( QueueHeader ) - > Head - > Next = NULL ; \
2008-10-28 21:48:09 +00:00
( QueueHeader ) - > Head = pNext ; \
if ( pNext = = NULL ) \
( QueueHeader ) - > Tail = NULL ; \
( QueueHeader ) - > Number - - ; \
} \
}
# define InsertHeadQueue(QueueHeader, QueueEntry) \
{ \
( ( PQUEUE_ENTRY ) QueueEntry ) - > Next = ( QueueHeader ) - > Head ; \
( QueueHeader ) - > Head = ( PQUEUE_ENTRY ) ( QueueEntry ) ; \
if ( ( QueueHeader ) - > Tail = = NULL ) \
( QueueHeader ) - > Tail = ( PQUEUE_ENTRY ) ( QueueEntry ) ; \
( QueueHeader ) - > Number + + ; \
}
# define InsertTailQueue(QueueHeader, QueueEntry) \
{ \
( ( PQUEUE_ENTRY ) QueueEntry ) - > Next = NULL ; \
if ( ( QueueHeader ) - > Tail ) \
( QueueHeader ) - > Tail - > Next = ( PQUEUE_ENTRY ) ( QueueEntry ) ; \
else \
( QueueHeader ) - > Head = ( PQUEUE_ENTRY ) ( QueueEntry ) ; \
( QueueHeader ) - > Tail = ( PQUEUE_ENTRY ) ( QueueEntry ) ; \
( QueueHeader ) - > Number + + ; \
}
2009-09-22 18:44:07 +00:00
# define InsertTailQueueAc(pAd, pEntry, QueueHeader, QueueEntry) \
{ \
( ( PQUEUE_ENTRY ) QueueEntry ) - > Next = NULL ; \
if ( ( QueueHeader ) - > Tail ) \
( QueueHeader ) - > Tail - > Next = ( PQUEUE_ENTRY ) ( QueueEntry ) ; \
else \
( QueueHeader ) - > Head = ( PQUEUE_ENTRY ) ( QueueEntry ) ; \
( QueueHeader ) - > Tail = ( PQUEUE_ENTRY ) ( QueueEntry ) ; \
( QueueHeader ) - > Number + + ; \
}
2008-10-28 21:48:09 +00:00
//
// Macros for flag and ref count operations
//
# define RTMP_SET_FLAG(_M, _F) ((_M)->Flags |= (_F))
# define RTMP_CLEAR_FLAG(_M, _F) ((_M)->Flags &= ~(_F))
# define RTMP_CLEAR_FLAGS(_M) ((_M)->Flags = 0)
# define RTMP_TEST_FLAG(_M, _F) (((_M)->Flags & (_F)) != 0)
# define RTMP_TEST_FLAGS(_M, _F) (((_M)->Flags & (_F)) == (_F))
2009-02-23 15:01:07 +00:00
// Macro for power save flag.
# define RTMP_SET_PSFLAG(_M, _F) ((_M)->PSFlags |= (_F))
# define RTMP_CLEAR_PSFLAG(_M, _F) ((_M)->PSFlags &= ~(_F))
# define RTMP_CLEAR_PSFLAGS(_M) ((_M)->PSFlags = 0)
# define RTMP_TEST_PSFLAG(_M, _F) (((_M)->PSFlags & (_F)) != 0)
# define RTMP_TEST_PSFLAGS(_M, _F) (((_M)->PSFlags & (_F)) == (_F))
2008-10-28 21:48:09 +00:00
# define OPSTATUS_SET_FLAG(_pAd, _F) ((_pAd)->CommonCfg.OpStatusFlags |= (_F))
# define OPSTATUS_CLEAR_FLAG(_pAd, _F) ((_pAd)->CommonCfg.OpStatusFlags &= ~(_F))
# define OPSTATUS_TEST_FLAG(_pAd, _F) (((_pAd)->CommonCfg.OpStatusFlags & (_F)) != 0)
# define CLIENT_STATUS_SET_FLAG(_pEntry,_F) ((_pEntry)->ClientStatusFlags |= (_F))
# define CLIENT_STATUS_CLEAR_FLAG(_pEntry,_F) ((_pEntry)->ClientStatusFlags &= ~(_F))
# define CLIENT_STATUS_TEST_FLAG(_pEntry,_F) (((_pEntry)->ClientStatusFlags & (_F)) != 0)
# define RX_FILTER_SET_FLAG(_pAd, _F) ((_pAd)->CommonCfg.PacketFilter |= (_F))
# define RX_FILTER_CLEAR_FLAG(_pAd, _F) ((_pAd)->CommonCfg.PacketFilter &= ~(_F))
# define RX_FILTER_TEST_FLAG(_pAd, _F) (((_pAd)->CommonCfg.PacketFilter & (_F)) != 0)
# define STA_NO_SECURITY_ON(_p) (_p->StaCfg.WepStatus == Ndis802_11EncryptionDisabled)
# define STA_WEP_ON(_p) (_p->StaCfg.WepStatus == Ndis802_11Encryption1Enabled)
# define STA_TKIP_ON(_p) (_p->StaCfg.WepStatus == Ndis802_11Encryption2Enabled)
# define STA_AES_ON(_p) (_p->StaCfg.WepStatus == Ndis802_11Encryption3Enabled)
# define STA_TGN_WIFI_ON(_p) (_p->StaCfg.bTGnWifiTest == TRUE)
# define CKIP_KP_ON(_p) ((((_p)->StaCfg.CkipFlag) & 0x10) && ((_p)->StaCfg.bCkipCmicOn == TRUE))
# define CKIP_CMIC_ON(_p) ((((_p)->StaCfg.CkipFlag) & 0x08) && ((_p)->StaCfg.bCkipCmicOn == TRUE))
# define INC_RING_INDEX(_idx, _RingSize) \
{ \
( _idx ) = ( _idx + 1 ) % ( _RingSize ) ; \
}
// StaActive.SupportedHtPhy.MCSSet is copied from AP beacon. Don't need to update here.
# define COPY_HTSETTINGS_FROM_MLME_AUX_TO_ACTIVE_CFG(_pAd) \
{ \
_pAd - > StaActive . SupportedHtPhy . ChannelWidth = _pAd - > MlmeAux . HtCapability . HtCapInfo . ChannelWidth ; \
_pAd - > StaActive . SupportedHtPhy . MimoPs = _pAd - > MlmeAux . HtCapability . HtCapInfo . MimoPs ; \
_pAd - > StaActive . SupportedHtPhy . GF = _pAd - > MlmeAux . HtCapability . HtCapInfo . GF ; \
_pAd - > StaActive . SupportedHtPhy . ShortGIfor20 = _pAd - > MlmeAux . HtCapability . HtCapInfo . ShortGIfor20 ; \
_pAd - > StaActive . SupportedHtPhy . ShortGIfor40 = _pAd - > MlmeAux . HtCapability . HtCapInfo . ShortGIfor40 ; \
_pAd - > StaActive . SupportedHtPhy . TxSTBC = _pAd - > MlmeAux . HtCapability . HtCapInfo . TxSTBC ; \
_pAd - > StaActive . SupportedHtPhy . RxSTBC = _pAd - > MlmeAux . HtCapability . HtCapInfo . RxSTBC ; \
_pAd - > StaActive . SupportedHtPhy . ExtChanOffset = _pAd - > MlmeAux . AddHtInfo . AddHtInfo . ExtChanOffset ; \
_pAd - > StaActive . SupportedHtPhy . RecomWidth = _pAd - > MlmeAux . AddHtInfo . AddHtInfo . RecomWidth ; \
_pAd - > StaActive . SupportedHtPhy . OperaionMode = _pAd - > MlmeAux . AddHtInfo . AddHtInfo2 . OperaionMode ; \
_pAd - > StaActive . SupportedHtPhy . NonGfPresent = _pAd - > MlmeAux . AddHtInfo . AddHtInfo2 . NonGfPresent ; \
NdisMoveMemory ( ( _pAd ) - > MacTab . Content [ BSSID_WCID ] . HTCapability . MCSSet , ( _pAd ) - > StaActive . SupportedPhyInfo . MCSSet , sizeof ( UCHAR ) * 16 ) ; \
}
# define COPY_AP_HTSETTINGS_FROM_BEACON(_pAd, _pHtCapability) \
{ \
_pAd - > MacTab . Content [ BSSID_WCID ] . AMsduSize = ( UCHAR ) ( _pHtCapability - > HtCapInfo . AMsduSize ) ; \
_pAd - > MacTab . Content [ BSSID_WCID ] . MmpsMode = ( UCHAR ) ( _pHtCapability - > HtCapInfo . MimoPs ) ; \
_pAd - > MacTab . Content [ BSSID_WCID ] . MaxRAmpduFactor = ( UCHAR ) ( _pHtCapability - > HtCapParm . MaxRAmpduFactor ) ; \
}
//
// MACRO for 32-bit PCI register read / write
//
// Usage : RTMP_IO_READ32(
// PRTMP_ADAPTER pAd,
// ULONG Register_Offset,
// PULONG pValue)
//
// RTMP_IO_WRITE32(
// PRTMP_ADAPTER pAd,
// ULONG Register_Offset,
// ULONG Value)
//
//
// Common fragment list structure - Identical to the scatter gather frag list structure
//
2009-09-22 18:44:07 +00:00
//#define RTMP_SCATTER_GATHER_ELEMENT SCATTER_GATHER_ELEMENT
//#define PRTMP_SCATTER_GATHER_ELEMENT PSCATTER_GATHER_ELEMENT
2008-10-28 21:48:09 +00:00
# define NIC_MAX_PHYS_BUF_COUNT 8
typedef struct _RTMP_SCATTER_GATHER_ELEMENT {
PVOID Address ;
ULONG Length ;
PULONG Reserved ;
} RTMP_SCATTER_GATHER_ELEMENT , * PRTMP_SCATTER_GATHER_ELEMENT ;
typedef struct _RTMP_SCATTER_GATHER_LIST {
ULONG NumberOfElements ;
PULONG Reserved ;
RTMP_SCATTER_GATHER_ELEMENT Elements [ NIC_MAX_PHYS_BUF_COUNT ] ;
} RTMP_SCATTER_GATHER_LIST , * PRTMP_SCATTER_GATHER_LIST ;
//
// Some utility macros
//
# ifndef min
# define min(_a, _b) (((_a) < (_b)) ? (_a) : (_b))
# endif
# ifndef max
# define max(_a, _b) (((_a) > (_b)) ? (_a) : (_b))
# endif
# define GET_LNA_GAIN(_pAd) ((_pAd->LatchRfRegs.Channel <= 14) ? (_pAd->BLNAGain) : ((_pAd->LatchRfRegs.Channel <= 64) ? (_pAd->ALNAGain0) : ((_pAd->LatchRfRegs.Channel <= 128) ? (_pAd->ALNAGain1) : (_pAd->ALNAGain2))))
# define INC_COUNTER64(Val) (Val.QuadPart++)
# define INFRA_ON(_p) (OPSTATUS_TEST_FLAG(_p, fOP_STATUS_INFRA_ON))
# define ADHOC_ON(_p) (OPSTATUS_TEST_FLAG(_p, fOP_STATUS_ADHOC_ON))
# define MONITOR_ON(_p) (((_p)->StaCfg.BssType) == BSS_MONITOR)
# define IDLE_ON(_p) (!INFRA_ON(_p) && !ADHOC_ON(_p))
// Check LEAP & CCKM flags
# define LEAP_ON(_p) (((_p)->StaCfg.LeapAuthMode) == CISCO_AuthModeLEAP)
# define LEAP_CCKM_ON(_p) ((((_p)->StaCfg.LeapAuthMode) == CISCO_AuthModeLEAP) && ((_p)->StaCfg.LeapAuthInfo.CCKM == TRUE))
// if orginal Ethernet frame contains no LLC/SNAP, then an extra LLC/SNAP encap is required
# define EXTRA_LLCSNAP_ENCAP_FROM_PKT_START(_pBufVA, _pExtraLlcSnapEncap) \
{ \
if ( ( ( * ( _pBufVA + 12 ) < < 8 ) + * ( _pBufVA + 13 ) ) > 1500 ) \
{ \
_pExtraLlcSnapEncap = SNAP_802_1H ; \
if ( NdisEqualMemory ( IPX , _pBufVA + 12 , 2 ) | | \
NdisEqualMemory ( APPLE_TALK , _pBufVA + 12 , 2 ) ) \
{ \
_pExtraLlcSnapEncap = SNAP_BRIDGE_TUNNEL ; \
} \
} \
else \
{ \
_pExtraLlcSnapEncap = NULL ; \
} \
}
// New Define for new Tx Path.
# define EXTRA_LLCSNAP_ENCAP_FROM_PKT_OFFSET(_pBufVA, _pExtraLlcSnapEncap) \
{ \
if ( ( ( * ( _pBufVA ) < < 8 ) + * ( _pBufVA + 1 ) ) > 1500 ) \
{ \
_pExtraLlcSnapEncap = SNAP_802_1H ; \
if ( NdisEqualMemory ( IPX , _pBufVA , 2 ) | | \
NdisEqualMemory ( APPLE_TALK , _pBufVA , 2 ) ) \
{ \
_pExtraLlcSnapEncap = SNAP_BRIDGE_TUNNEL ; \
} \
} \
else \
{ \
_pExtraLlcSnapEncap = NULL ; \
} \
}
# define MAKE_802_3_HEADER(_p, _pMac1, _pMac2, _pType) \
{ \
NdisMoveMemory ( _p , _pMac1 , MAC_ADDR_LEN ) ; \
NdisMoveMemory ( ( _p + MAC_ADDR_LEN ) , _pMac2 , MAC_ADDR_LEN ) ; \
NdisMoveMemory ( ( _p + MAC_ADDR_LEN * 2 ) , _pType , LENGTH_802_3_TYPE ) ; \
}
// if pData has no LLC/SNAP (neither RFC1042 nor Bridge tunnel), keep it that way.
// else if the received frame is LLC/SNAP-encaped IPX or APPLETALK, preserve the LLC/SNAP field
// else remove the LLC/SNAP field from the result Ethernet frame
// Patch for WHQL only, which did not turn on Netbios but use IPX within its payload
// Note:
// _pData & _DataSize may be altered (remove 8-byte LLC/SNAP) by this MACRO
// _pRemovedLLCSNAP: pointer to removed LLC/SNAP; NULL is not removed
# define CONVERT_TO_802_3(_p8023hdr, _pDA, _pSA, _pData, _DataSize, _pRemovedLLCSNAP) \
{ \
char LLC_Len [ 2 ] ; \
\
_pRemovedLLCSNAP = NULL ; \
if ( NdisEqualMemory ( SNAP_802_1H , _pData , 6 ) | | \
NdisEqualMemory ( SNAP_BRIDGE_TUNNEL , _pData , 6 ) ) \
{ \
PUCHAR pProto = _pData + 6 ; \
\
if ( ( NdisEqualMemory ( IPX , pProto , 2 ) | | NdisEqualMemory ( APPLE_TALK , pProto , 2 ) ) & & \
NdisEqualMemory ( SNAP_802_1H , _pData , 6 ) ) \
{ \
LLC_Len [ 0 ] = ( UCHAR ) ( _DataSize / 256 ) ; \
LLC_Len [ 1 ] = ( UCHAR ) ( _DataSize % 256 ) ; \
MAKE_802_3_HEADER ( _p8023hdr , _pDA , _pSA , LLC_Len ) ; \
} \
else \
{ \
MAKE_802_3_HEADER ( _p8023hdr , _pDA , _pSA , pProto ) ; \
_pRemovedLLCSNAP = _pData ; \
_DataSize - = LENGTH_802_1_H ; \
_pData + = LENGTH_802_1_H ; \
} \
} \
else \
{ \
LLC_Len [ 0 ] = ( UCHAR ) ( _DataSize / 256 ) ; \
LLC_Len [ 1 ] = ( UCHAR ) ( _DataSize % 256 ) ; \
MAKE_802_3_HEADER ( _p8023hdr , _pDA , _pSA , LLC_Len ) ; \
} \
}
// Enqueue this frame to MLME engine
// We need to enqueue the whole frame because MLME need to pass data type
// information from 802.11 header
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_PCI
2008-10-28 21:48:09 +00:00
# define REPORT_MGMT_FRAME_TO_MLME(_pAd, Wcid, _pFrame, _FrameSize, _Rssi0, _Rssi1, _Rssi2, _PlcpSignal) \
{ \
UINT32 High32TSF , Low32TSF ; \
RTMP_IO_READ32 ( _pAd , TSF_TIMER_DW1 , & High32TSF ) ; \
RTMP_IO_READ32 ( _pAd , TSF_TIMER_DW0 , & Low32TSF ) ; \
MlmeEnqueueForRecv ( _pAd , Wcid , High32TSF , Low32TSF , ( UCHAR ) _Rssi0 , ( UCHAR ) _Rssi1 , ( UCHAR ) _Rssi2 , _FrameSize , _pFrame , ( UCHAR ) _PlcpSignal ) ; \
}
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_PCI //
# ifdef RTMP_MAC_USB
2009-04-26 14:06:25 +00:00
# define REPORT_MGMT_FRAME_TO_MLME(_pAd, Wcid, _pFrame, _FrameSize, _Rssi0, _Rssi1, _Rssi2, _PlcpSignal) \
{ \
UINT32 High32TSF = 0 , Low32TSF = 0 ; \
MlmeEnqueueForRecv ( _pAd , Wcid , High32TSF , Low32TSF , ( UCHAR ) _Rssi0 , ( UCHAR ) _Rssi1 , ( UCHAR ) _Rssi2 , _FrameSize , _pFrame , ( UCHAR ) _PlcpSignal ) ; \
}
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_USB //
2008-10-28 21:48:09 +00:00
# define MAC_ADDR_EQUAL(pAddr1,pAddr2) RTMPEqualMemory((PVOID)(pAddr1), (PVOID)(pAddr2), MAC_ADDR_LEN)
# define SSID_EQUAL(ssid1, len1, ssid2, len2) ((len1==len2) && (RTMPEqualMemory(ssid1, ssid2, len1)))
//
// Check if it is Japan W53(ch52,56,60,64) channel.
//
# define JapanChannelCheck(channel) ((channel == 52) || (channel == 56) || (channel == 60) || (channel == 64))
2009-09-22 18:44:07 +00:00
# define STA_EXTRA_SETTING(_pAd)
2008-10-28 21:48:09 +00:00
# define STA_PORT_SECURED(_pAd) \
{ \
2009-09-22 18:44:07 +00:00
BOOLEAN Cancelled ; \
( _pAd ) - > StaCfg . PortSecured = WPA_802_1X_PORT_SECURED ; \
NdisAcquireSpinLock ( & ( ( _pAd ) - > MacTabLock ) ) ; \
( _pAd ) - > MacTab . Content [ BSSID_WCID ] . PortSecured = ( _pAd ) - > StaCfg . PortSecured ; \
( _pAd ) - > MacTab . Content [ BSSID_WCID ] . PrivacyFilter = Ndis802_11PrivFilterAcceptAll ; \
2009-02-23 15:01:07 +00:00
NdisReleaseSpinLock ( & ( _pAd ) - > MacTabLock ) ; \
2009-09-22 18:44:07 +00:00
RTMPCancelTimer ( & ( ( _pAd ) - > Mlme . LinkDownTimer ) , & Cancelled ) ; \
STA_EXTRA_SETTING ( _pAd ) ; \
2008-10-28 21:48:09 +00:00
}
//
// Data buffer for DMA operation, the buffer must be contiguous physical memory
// Both DMA to / from CPU use the same structure.
//
typedef struct _RTMP_DMABUF
{
ULONG AllocSize ;
PVOID AllocVa ; // TxBuf virtual address
NDIS_PHYSICAL_ADDRESS AllocPa ; // TxBuf physical address
} RTMP_DMABUF , * PRTMP_DMABUF ;
//
// Control block (Descriptor) for all ring descriptor DMA operation, buffer must be
// contiguous physical memory. NDIS_PACKET stored the binding Rx packet descriptor
// which won't be released, driver has to wait until upper layer return the packet
// before giveing up this rx ring descriptor to ASIC. NDIS_BUFFER is assocaited pair
// to describe the packet buffer. For Tx, NDIS_PACKET stored the tx packet descriptor
// which driver should ACK upper layer when the tx is physically done or failed.
//
typedef struct _RTMP_DMACB
{
ULONG AllocSize ; // Control block size
PVOID AllocVa ; // Control block virtual address
NDIS_PHYSICAL_ADDRESS AllocPa ; // Control block physical address
PNDIS_PACKET pNdisPacket ;
PNDIS_PACKET pNextNdisPacket ;
RTMP_DMABUF DmaBuf ; // Associated DMA buffer structure
} RTMP_DMACB , * PRTMP_DMACB ;
typedef struct _RTMP_TX_RING
{
RTMP_DMACB Cell [ TX_RING_SIZE ] ;
UINT32 TxCpuIdx ;
UINT32 TxDmaIdx ;
UINT32 TxSwFreeIdx ; // software next free tx index
} RTMP_TX_RING , * PRTMP_TX_RING ;
typedef struct _RTMP_RX_RING
{
RTMP_DMACB Cell [ RX_RING_SIZE ] ;
UINT32 RxCpuIdx ;
UINT32 RxDmaIdx ;
INT32 RxSwReadIdx ; // software next read index
} RTMP_RX_RING , * PRTMP_RX_RING ;
typedef struct _RTMP_MGMT_RING
{
RTMP_DMACB Cell [ MGMT_RING_SIZE ] ;
UINT32 TxCpuIdx ;
UINT32 TxDmaIdx ;
UINT32 TxSwFreeIdx ; // software next free tx index
} RTMP_MGMT_RING , * PRTMP_MGMT_RING ;
//
// Statistic counter structure
//
typedef struct _COUNTER_802_3
{
// General Stats
ULONG GoodTransmits ;
ULONG GoodReceives ;
ULONG TxErrors ;
ULONG RxErrors ;
ULONG RxNoBuffer ;
// Ethernet Stats
ULONG RcvAlignmentErrors ;
ULONG OneCollision ;
ULONG MoreCollisions ;
} COUNTER_802_3 , * PCOUNTER_802_3 ;
typedef struct _COUNTER_802_11 {
ULONG Length ;
LARGE_INTEGER LastTransmittedFragmentCount ;
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 ;
} COUNTER_802_11 , * PCOUNTER_802_11 ;
typedef struct _COUNTER_RALINK {
ULONG TransmittedByteCount ; // both successful and failure, used to calculate TX throughput
ULONG ReceivedByteCount ; // both CRC okay and CRC error, used to calculate RX throughput
ULONG BeenDisassociatedCount ;
ULONG BadCQIAutoRecoveryCount ;
ULONG PoorCQIRoamingCount ;
ULONG MgmtRingFullCount ;
ULONG RxCountSinceLastNULL ;
ULONG RxCount ;
ULONG RxRingErrCount ;
ULONG KickTxCount ;
ULONG TxRingErrCount ;
LARGE_INTEGER RealFcsErrCount ;
ULONG PendingNdisPacketCount ;
ULONG OneSecOsTxCount [ NUM_OF_TX_RING ] ;
ULONG OneSecDmaDoneCount [ NUM_OF_TX_RING ] ;
UINT32 OneSecTxDoneCount ;
ULONG OneSecRxCount ;
UINT32 OneSecTxAggregationCount ;
UINT32 OneSecRxAggregationCount ;
2009-09-22 18:44:07 +00:00
UINT32 OneSecReceivedByteCount ;
2008-10-28 21:48:09 +00:00
UINT32 OneSecFrameDuplicateCount ;
2009-09-22 18:44:07 +00:00
UINT32 OneSecTransmittedByteCount ; // both successful and failure, used to calculate TX throughput
2008-10-28 21:48:09 +00:00
UINT32 OneSecTxNoRetryOkCount ;
UINT32 OneSecTxRetryOkCount ;
UINT32 OneSecTxFailCount ;
UINT32 OneSecFalseCCACnt ; // CCA error count, for debug purpose, might move to global counter
UINT32 OneSecRxOkCnt ; // RX without error
UINT32 OneSecRxOkDataCnt ; // unicast-to-me DATA frame count
UINT32 OneSecRxFcsErrCnt ; // CRC error
UINT32 OneSecBeaconSentCnt ;
UINT32 LastOneSecTotalTxCount ; // OneSecTxNoRetryOkCount + OneSecTxRetryOkCount + OneSecTxFailCount
UINT32 LastOneSecRxOkDataCnt ; // OneSecRxOkDataCnt
ULONG DuplicateRcv ;
ULONG TxAggCount ;
ULONG TxNonAggCount ;
ULONG TxAgg1MPDUCount ;
ULONG TxAgg2MPDUCount ;
ULONG TxAgg3MPDUCount ;
ULONG TxAgg4MPDUCount ;
ULONG TxAgg5MPDUCount ;
ULONG TxAgg6MPDUCount ;
ULONG TxAgg7MPDUCount ;
ULONG TxAgg8MPDUCount ;
ULONG TxAgg9MPDUCount ;
ULONG TxAgg10MPDUCount ;
ULONG TxAgg11MPDUCount ;
ULONG TxAgg12MPDUCount ;
ULONG TxAgg13MPDUCount ;
ULONG TxAgg14MPDUCount ;
ULONG TxAgg15MPDUCount ;
ULONG TxAgg16MPDUCount ;
LARGE_INTEGER TransmittedOctetsInAMSDU ;
LARGE_INTEGER TransmittedAMSDUCount ;
LARGE_INTEGER ReceivedOctesInAMSDUCount ;
LARGE_INTEGER ReceivedAMSDUCount ;
LARGE_INTEGER TransmittedAMPDUCount ;
LARGE_INTEGER TransmittedMPDUsInAMPDUCount ;
LARGE_INTEGER TransmittedOctetsInAMPDUCount ;
LARGE_INTEGER MPDUInReceivedAMPDUCount ;
} COUNTER_RALINK , * PCOUNTER_RALINK ;
typedef struct _COUNTER_DRS {
// to record the each TX rate's quality. 0 is best, the bigger the worse.
USHORT TxQuality [ MAX_STEP_OF_TX_RATE_SWITCH ] ;
UCHAR PER [ MAX_STEP_OF_TX_RATE_SWITCH ] ;
UCHAR TxRateUpPenalty ; // extra # of second penalty due to last unstable condition
ULONG CurrTxRateStableTime ; // # of second in current TX rate
BOOLEAN fNoisyEnvironment ;
BOOLEAN fLastSecAccordingRSSI ;
UCHAR LastSecTxRateChangeAction ; // 0: no change, 1:rate UP, 2:rate down
UCHAR LastTimeTxRateChangeAction ; //Keep last time value of LastSecTxRateChangeAction
ULONG LastTxOkCount ;
} COUNTER_DRS , * PCOUNTER_DRS ;
2009-09-22 18:44:07 +00:00
/***************************************************************************
* security key related data structure
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-10-28 21:48:09 +00:00
typedef struct _CIPHER_KEY {
UCHAR Key [ 16 ] ; // right now we implement 4 keys, 128 bits max
UCHAR RxMic [ 8 ] ; // make alignment
UCHAR TxMic [ 8 ] ;
UCHAR TxTsc [ 6 ] ; // 48bit TSC value
UCHAR RxTsc [ 6 ] ; // 48bit TSC value
UCHAR CipherAlg ; // 0-none, 1:WEP64, 2:WEP128, 3:TKIP, 4:AES, 5:CKIP64, 6:CKIP128
UCHAR KeyLen ;
UCHAR BssId [ 6 ] ;
// Key length for each key, 0: entry is invalid
UCHAR Type ; // Indicate Pairwise/Group when reporting MIC error
} CIPHER_KEY , * PCIPHER_KEY ;
2009-09-22 18:44:07 +00:00
// structure to define WPA Group Key Rekey Interval
typedef struct PACKED _RT_802_11_WPA_REKEY {
ULONG ReKeyMethod ; // mechanism for rekeying: 0:disable, 1: time-based, 2: packet-based
ULONG ReKeyInterval ; // time-based: seconds, packet-based: kilo-packets
} RT_WPA_REKEY , * PRT_WPA_REKEY , RT_802_11_WPA_REKEY , * PRT_802_11_WPA_REKEY ;
# ifdef RTMP_MAC_USB
/***************************************************************************
* RTUSB I / O related data structure
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
typedef struct _RT_SET_ASIC_WCID {
ULONG WCID ; // mechanism for rekeying: 0:disable, 1: time-based, 2: packet-based
ULONG SetTid ; // time-based: seconds, packet-based: kilo-packets
ULONG DeleteTid ; // time-based: seconds, packet-based: kilo-packets
UCHAR Addr [ MAC_ADDR_LEN ] ; // avoid in interrupt when write key
} RT_SET_ASIC_WCID , * PRT_SET_ASIC_WCID ;
typedef struct _RT_SET_ASIC_WCID_ATTRI {
ULONG WCID ; // mechanism for rekeying: 0:disable, 1: time-based, 2: packet-based
ULONG Cipher ; // ASIC Cipher definition
UCHAR Addr [ ETH_LENGTH_OF_ADDRESS ] ;
} RT_SET_ASIC_WCID_ATTRI , * PRT_SET_ASIC_WCID_ATTRI ;
// for USB interface, avoid in interrupt when write key
typedef struct RT_ADD_PAIRWISE_KEY_ENTRY {
UCHAR MacAddr [ 6 ] ;
USHORT MacTabMatchWCID ; // ASIC
CIPHER_KEY CipherKey ;
} RT_ADD_PAIRWISE_KEY_ENTRY , * PRT_ADD_PAIRWISE_KEY_ENTRY ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
// Cipher suite type for mixed mode group cipher, P802.11i-2004
typedef enum _RT_802_11_CIPHER_SUITE_TYPE {
Cipher_Type_NONE ,
Cipher_Type_WEP40 ,
Cipher_Type_TKIP ,
Cipher_Type_RSVD ,
Cipher_Type_CCMP ,
Cipher_Type_WEP104
} RT_802_11_CIPHER_SUITE_TYPE , * PRT_802_11_CIPHER_SUITE_TYPE ;
# endif // RTMP_MAC_USB //
2008-10-28 21:48:09 +00:00
typedef struct {
UCHAR Addr [ MAC_ADDR_LEN ] ;
UCHAR ErrorCode [ 2 ] ; //00 01-Invalid authentication type
//00 02-Authentication timeout
//00 03-Challenge from AP failed
//00 04-Challenge to AP failed
BOOLEAN Reported ;
} ROGUEAP_ENTRY , * PROGUEAP_ENTRY ;
typedef struct {
UCHAR RogueApNr ;
ROGUEAP_ENTRY RogueApEntry [ MAX_LEN_OF_BSS_TABLE ] ;
} ROGUEAP_TABLE , * PROGUEAP_TABLE ;
//
2009-09-22 18:44:07 +00:00
// Cisco IAPP format
2008-10-28 21:48:09 +00:00
//
2009-09-22 18:44:07 +00:00
typedef struct _CISCO_IAPP_CONTENT_
{
USHORT Length ; //IAPP Length
UCHAR MessageType ; //IAPP type
UCHAR FunctionCode ; //IAPP function type
UCHAR DestinaionMAC [ MAC_ADDR_LEN ] ;
UCHAR SourceMAC [ MAC_ADDR_LEN ] ;
USHORT Tag ; //Tag(element IE) - Adjacent AP report
USHORT TagLength ; //Length of element not including 4 byte header
UCHAR OUI [ 4 ] ; //0x00, 0x40, 0x96, 0x00
UCHAR PreviousAP [ MAC_ADDR_LEN ] ; //MAC Address of access point
USHORT Channel ;
USHORT SsidLen ;
UCHAR Ssid [ MAX_LEN_OF_SSID ] ;
USHORT Seconds ; //Seconds that the client has been disassociated.
} CISCO_IAPP_CONTENT , * PCISCO_IAPP_CONTENT ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
/*
* Fragment Frame structure
*/
2008-10-28 21:48:09 +00:00
typedef struct _FRAGMENT_FRAME {
PNDIS_PACKET pFragPacket ;
ULONG RxSize ;
USHORT Sequence ;
USHORT LastFrag ;
ULONG Flags ; // Some extra frame information. bit 0: LLC presented
} FRAGMENT_FRAME , * PFRAGMENT_FRAME ;
//
// Packet information for NdisQueryPacket
//
typedef struct _PACKET_INFO {
UINT PhysicalBufferCount ; // Physical breaks of buffer descripor chained
UINT BufferCount ; // Number of Buffer descriptor chained
UINT TotalPacketLength ; // Self explained
PNDIS_BUFFER pFirstBuffer ; // Pointer to first buffer descriptor
} PACKET_INFO , * PPACKET_INFO ;
2009-09-22 18:44:07 +00:00
//
// Arcfour Structure Added by PaulWu
//
typedef struct _ARCFOUR
{
UINT X ;
UINT Y ;
UCHAR STATE [ 256 ] ;
} ARCFOURCONTEXT , * PARCFOURCONTEXT ;
2008-10-28 21:48:09 +00:00
//
// Tkip Key structure which RC4 key & MIC calculation
//
typedef struct _TKIP_KEY_INFO {
UINT nBytesInM ; // # bytes in M for MICKEY
ULONG IV16 ;
ULONG IV32 ;
ULONG K0 ; // for MICKEY Low
ULONG K1 ; // for MICKEY Hig
ULONG L ; // Current state for MICKEY
ULONG R ; // Current state for MICKEY
ULONG M ; // Message accumulator for MICKEY
UCHAR RC4KEY [ 16 ] ;
UCHAR MIC [ 8 ] ;
} TKIP_KEY_INFO , * PTKIP_KEY_INFO ;
//
// Private / Misc data, counters for driver internal use
//
typedef struct __PRIVATE_STRUC {
UINT SystemResetCnt ; // System reset counter
UINT TxRingFullCnt ; // Tx ring full occurrance number
UINT PhyRxErrCnt ; // PHY Rx error count, for debug purpose, might move to global counter
// Variables for WEP encryption / decryption in rtmp_wep.c
UINT FCSCRC32 ;
ARCFOURCONTEXT WEPCONTEXT ;
// Tkip stuff
TKIP_KEY_INFO Tx ;
TKIP_KEY_INFO Rx ;
} PRIVATE_STRUC , * PPRIVATE_STRUC ;
2009-09-22 18:44:07 +00:00
/***************************************************************************
* Channel and BBP related data structures
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-10-28 21:48:09 +00:00
// structure to tune BBP R66 (BBP TUNING)
typedef struct _BBP_R66_TUNING {
BOOLEAN bEnable ;
USHORT FalseCcaLowerThreshold ; // default 100
USHORT FalseCcaUpperThreshold ; // default 512
UCHAR R66Delta ;
UCHAR R66CurrentValue ;
BOOLEAN R66LowerUpperSelect ; //Before LinkUp, Used LowerBound or UpperBound as R66 value.
} BBP_R66_TUNING , * PBBP_R66_TUNING ;
// structure to store channel TX power
typedef struct _CHANNEL_TX_POWER {
USHORT RemainingTimeForUse ; //unit: sec
UCHAR Channel ;
CHAR Power ;
CHAR Power2 ;
UCHAR MaxTxPwr ;
UCHAR DfsReq ;
} CHANNEL_TX_POWER , * PCHANNEL_TX_POWER ;
// structure to store 802.11j channel TX power
typedef struct _CHANNEL_11J_TX_POWER {
UCHAR Channel ;
UCHAR BW ; // BW_10 or BW_20
CHAR Power ;
CHAR Power2 ;
USHORT RemainingTimeForUse ; //unit: sec
} CHANNEL_11J_TX_POWER , * PCHANNEL_11J_TX_POWER ;
2009-09-22 18:44:07 +00:00
typedef struct _SOFT_RX_ANT_DIVERSITY_STRUCT {
UCHAR EvaluatePeriod ; // 0:not evalute status, 1: evaluate status, 2: switching status
UCHAR EvaluateStableCnt ;
UCHAR Pair1PrimaryRxAnt ; // 0:Ant-E1, 1:Ant-E2
UCHAR Pair1SecondaryRxAnt ; // 0:Ant-E1, 1:Ant-E2
UCHAR Pair2PrimaryRxAnt ; // 0:Ant-E3, 1:Ant-E4
UCHAR Pair2SecondaryRxAnt ; // 0:Ant-E3, 1:Ant-E4
SHORT Pair1AvgRssi [ 2 ] ; // AvgRssi[0]:E1, AvgRssi[1]:E2
SHORT Pair2AvgRssi [ 2 ] ; // AvgRssi[0]:E3, AvgRssi[1]:E4
SHORT Pair1LastAvgRssi ; //
SHORT Pair2LastAvgRssi ; //
ULONG RcvPktNumWhenEvaluate ;
BOOLEAN FirstPktArrivedWhenEvaluate ;
RALINK_TIMER_STRUCT RxAntDiversityTimer ;
} SOFT_RX_ANT_DIVERSITY , * PSOFT_RX_ANT_DIVERSITY ;
/***************************************************************************
* structure for radar detection and channel switch
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
typedef struct _RADAR_DETECT_STRUCT {
//BOOLEAN IEEE80211H; // 0: disable, 1: enable IEEE802.11h
UCHAR CSCount ; //Channel switch counter
UCHAR CSPeriod ; //Channel switch period (beacon count)
UCHAR RDCount ; //Radar detection counter
UCHAR RDMode ; //Radar Detection mode
UCHAR RDDurRegion ; //Radar detection duration region
UCHAR BBPR16 ;
UCHAR BBPR17 ;
UCHAR BBPR18 ;
UCHAR BBPR21 ;
UCHAR BBPR22 ;
UCHAR BBPR64 ;
ULONG InServiceMonitorCount ; // unit: sec
UINT8 DfsSessionTime ;
BOOLEAN bFastDfs ;
UINT8 ChMovingTime ;
UINT8 LongPulseRadarTh ;
} RADAR_DETECT_STRUCT , * PRADAR_DETECT_STRUCT ;
2008-10-28 21:48:09 +00:00
typedef enum _ABGBAND_STATE_ {
UNKNOWN_BAND ,
BG_BAND ,
A_BAND ,
} ABGBAND_STATE ;
2009-09-22 18:44:24 +00:00
# ifdef RTMP_MAC_PCI
// Power save method control
typedef union _PS_CONTROL {
struct {
ULONG EnablePSinIdle : 1 ; // Enable radio off when not connect to AP. radio on only when sitesurvey,
ULONG EnableNewPS : 1 ; // Enable new Chip power save fucntion . New method can only be applied in chip version after 2872. and PCIe.
ULONG rt30xxPowerMode : 2 ; // Power Level Mode for rt30xx chip
ULONG rt30xxFollowHostASPM : 1 ; // Card Follows Host's setting for rt30xx chip.
ULONG rt30xxForceASPMTest : 1 ; // Force enable L1 for rt30xx chip. This has higher priority than rt30xxFollowHostASPM Mode.
ULONG rsv : 26 ; // Radio Measurement Enable
} field ;
ULONG word ;
} PS_CONTROL , * PPS_CONTROL ;
# endif // RTMP_MAC_PCI //
2009-09-22 18:44:07 +00:00
/***************************************************************************
* structure for MLME state machine
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-10-28 21:48:09 +00:00
typedef struct _MLME_STRUCT {
// STA state machines
STATE_MACHINE CntlMachine ;
STATE_MACHINE AssocMachine ;
STATE_MACHINE AuthMachine ;
STATE_MACHINE AuthRspMachine ;
STATE_MACHINE SyncMachine ;
STATE_MACHINE WpaPskMachine ;
STATE_MACHINE LeapMachine ;
STATE_MACHINE_FUNC AssocFunc [ ASSOC_FUNC_SIZE ] ;
STATE_MACHINE_FUNC AuthFunc [ AUTH_FUNC_SIZE ] ;
STATE_MACHINE_FUNC AuthRspFunc [ AUTH_RSP_FUNC_SIZE ] ;
STATE_MACHINE_FUNC SyncFunc [ SYNC_FUNC_SIZE ] ;
STATE_MACHINE_FUNC ActFunc [ ACT_FUNC_SIZE ] ;
// Action
STATE_MACHINE ActMachine ;
2009-09-22 18:44:07 +00:00
// common WPA state machine
STATE_MACHINE WpaMachine ;
STATE_MACHINE_FUNC WpaFunc [ WPA_FUNC_SIZE ] ;
2008-10-28 21:48:09 +00:00
ULONG ChannelQuality ; // 0..100, Channel Quality Indication for Roaming
ULONG Now32 ; // latch the value of NdisGetSystemUpTime()
ULONG LastSendNULLpsmTime ;
BOOLEAN bRunning ;
NDIS_SPIN_LOCK TaskLock ;
MLME_QUEUE Queue ;
UINT ShiftReg ;
RALINK_TIMER_STRUCT PeriodicTimer ;
RALINK_TIMER_STRUCT APSDPeriodicTimer ;
RALINK_TIMER_STRUCT LinkDownTimer ;
RALINK_TIMER_STRUCT LinkUpTimer ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_PCI
2008-10-28 21:48:09 +00:00
UCHAR bPsPollTimerRunning ;
RALINK_TIMER_STRUCT PsPollTimer ;
RALINK_TIMER_STRUCT RadioOnOffTimer ;
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_PCI //
2008-10-28 21:48:09 +00:00
ULONG PeriodicRound ;
ULONG OneSecPeriodicRound ;
UCHAR RealRxPath ;
BOOLEAN bLowThroughput ;
BOOLEAN bEnableAutoAntennaCheck ;
RALINK_TIMER_STRUCT RxAntEvalTimer ;
2009-09-22 18:44:07 +00:00
# ifdef RT30xx
2009-04-26 14:06:25 +00:00
UCHAR CaliBW40RfR24 ;
UCHAR CaliBW20RfR24 ;
2009-09-22 18:44:07 +00:00
# endif // RT30xx //
# ifdef RTMP_MAC_USB
RALINK_TIMER_STRUCT AutoWakeupTimer ;
BOOLEAN AutoWakeupTimerRunning ;
# endif // RTMP_MAC_USB //
2008-10-28 21:48:09 +00:00
} MLME_STRUCT , * PMLME_STRUCT ;
2009-09-22 18:44:07 +00:00
/***************************************************************************
* 802.11 N related data structures
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct reordering_mpdu
2008-10-28 21:48:09 +00:00
{
2009-09-22 18:44:07 +00:00
struct reordering_mpdu * next ;
PNDIS_PACKET pPacket ; /* coverted to 802.3 frame */
int Sequence ; /* sequence number of MPDU */
BOOLEAN bAMSDU ;
} ;
struct reordering_list
{
struct reordering_mpdu * next ;
int qlen ;
} ;
struct reordering_mpdu_pool
{
PVOID mem ;
NDIS_SPIN_LOCK lock ;
struct reordering_list freelist ;
} ;
typedef enum _REC_BLOCKACK_STATUS
{
Recipient_NONE = 0 ,
Recipient_USED ,
Recipient_HandleRes ,
Recipient_Accept
2008-10-28 21:48:09 +00:00
} REC_BLOCKACK_STATUS , * PREC_BLOCKACK_STATUS ;
typedef enum _ORI_BLOCKACK_STATUS
{
Originator_NONE = 0 ,
Originator_USED ,
Originator_WaitRes ,
Originator_Done
} ORI_BLOCKACK_STATUS , * PORI_BLOCKACK_STATUS ;
typedef struct _BA_ORI_ENTRY {
UCHAR Wcid ;
UCHAR TID ;
UCHAR BAWinSize ;
UCHAR Token ;
// Sequence is to fill every outgoing QoS DATA frame's sequence field in 802.11 header.
USHORT Sequence ;
USHORT TimeOutValue ;
ORI_BLOCKACK_STATUS ORI_BA_Status ;
RALINK_TIMER_STRUCT ORIBATimer ;
PVOID pAdapter ;
} BA_ORI_ENTRY , * PBA_ORI_ENTRY ;
typedef struct _BA_REC_ENTRY {
UCHAR Wcid ;
UCHAR TID ;
UCHAR BAWinSize ; // 7.3.1.14. each buffer is capable of holding a max AMSDU or MSDU.
2009-09-22 18:44:07 +00:00
//UCHAR NumOfRxPkt;
//UCHAR Curindidx; // the head in the RX reordering buffer
2008-10-28 21:48:09 +00:00
USHORT LastIndSeq ;
2009-09-22 18:44:07 +00:00
// USHORT LastIndSeqAtTimer;
2008-10-28 21:48:09 +00:00
USHORT TimeOutValue ;
RALINK_TIMER_STRUCT RECBATimer ;
ULONG LastIndSeqAtTimer ;
ULONG nDropPacket ;
ULONG rcvSeq ;
REC_BLOCKACK_STATUS REC_BA_Status ;
2009-09-22 18:44:07 +00:00
// UCHAR RxBufIdxUsed;
// corresponding virtual address for RX reordering packet storage.
//RTMP_REORDERDMABUF MAP_RXBuf[MAX_RX_REORDERBUF];
2008-10-28 21:48:09 +00:00
NDIS_SPIN_LOCK RxReRingLock ; // Rx Ring spinlock
2009-09-22 18:44:07 +00:00
// struct _BA_REC_ENTRY *pNext;
2008-10-28 21:48:09 +00:00
PVOID pAdapter ;
struct reordering_list list ;
} BA_REC_ENTRY , * PBA_REC_ENTRY ;
typedef struct {
ULONG numAsRecipient ; // I am recipient of numAsRecipient clients. These client are in the BARecEntry[]
ULONG numAsOriginator ; // I am originator of numAsOriginator clients. These clients are in the BAOriEntry[]
2009-09-22 18:44:07 +00:00
ULONG numDoneOriginator ; // count Done Originator sessions
2008-10-28 21:48:09 +00:00
BA_ORI_ENTRY BAOriEntry [ MAX_LEN_OF_BA_ORI_TABLE ] ;
BA_REC_ENTRY BARecEntry [ MAX_LEN_OF_BA_REC_TABLE ] ;
} BA_TABLE , * PBA_TABLE ;
//For QureyBATableOID use;
typedef struct PACKED _OID_BA_REC_ENTRY {
UCHAR MACAddr [ MAC_ADDR_LEN ] ;
UCHAR BaBitmap ; // if (BaBitmap&(1<<TID)), this session with{MACAddr, TID}exists, so read BufSize[TID] for BufferSize
UCHAR rsv ;
UCHAR BufSize [ 8 ] ;
REC_BLOCKACK_STATUS REC_BA_Status [ 8 ] ;
} OID_BA_REC_ENTRY , * POID_BA_REC_ENTRY ;
//For QureyBATableOID use;
typedef struct PACKED _OID_BA_ORI_ENTRY {
UCHAR MACAddr [ MAC_ADDR_LEN ] ;
UCHAR BaBitmap ; // if (BaBitmap&(1<<TID)), this session with{MACAddr, TID}exists, so read BufSize[TID] for BufferSize, read ORI_BA_Status[TID] for status
UCHAR rsv ;
UCHAR BufSize [ 8 ] ;
ORI_BLOCKACK_STATUS ORI_BA_Status [ 8 ] ;
} OID_BA_ORI_ENTRY , * POID_BA_ORI_ENTRY ;
typedef struct _QUERYBA_TABLE {
OID_BA_ORI_ENTRY BAOriEntry [ 32 ] ;
OID_BA_REC_ENTRY BARecEntry [ 32 ] ;
UCHAR OriNum ; // Number of below BAOriEntry
UCHAR RecNum ; // Number of below BARecEntry
} QUERYBA_TABLE , * PQUERYBA_TABLE ;
typedef union _BACAP_STRUC {
struct {
UINT32 RxBAWinLimit : 8 ;
UINT32 TxBAWinLimit : 8 ;
UINT32 AutoBA : 1 ; // automatically BA
UINT32 Policy : 2 ; // 0: DELAY_BA 1:IMMED_BA (//BA Policy subfiled value in ADDBA frame) 2:BA-not use
UINT32 MpduDensity : 3 ;
UINT32 AmsduEnable : 1 ; //Enable AMSDU transmisstion
UINT32 AmsduSize : 1 ; // 0:3839, 1:7935 bytes. UINT MSDUSizeToBytes[] = { 3839, 7935};
UINT32 MMPSmode : 2 ; // MIMO power save more, 0:static, 1:dynamic, 2:rsv, 3:mimo enable
UINT32 bHtAdhoc : 1 ; // adhoc can use ht rate.
UINT32 b2040CoexistScanSup : 1 ; //As Sta, support do 2040 coexistence scan for AP. As Ap, support monitor trigger event to check if can use BW 40MHz.
UINT32 : 4 ;
} field ;
UINT32 word ;
} BACAP_STRUC , * PBACAP_STRUC ;
2009-09-22 18:44:07 +00:00
typedef struct {
BOOLEAN IsRecipient ;
UCHAR MACAddr [ MAC_ADDR_LEN ] ;
UCHAR TID ;
UCHAR nMSDU ;
USHORT TimeOut ;
BOOLEAN bAllTid ; // If True, delete all TID for BA sessions with this MACaddr.
} OID_ADD_BA_ENTRY , * POID_ADD_BA_ENTRY ;
# define IS_HT_STA(_pMacEntry) \
( _pMacEntry - > MaxHTPhyMode . field . MODE > = MODE_HTMIX )
# define IS_HT_RATE(_pMacEntry) \
( _pMacEntry - > HTPhyMode . field . MODE > = MODE_HTMIX )
# define PEER_IS_HT_RATE(_pMacEntry) \
( _pMacEntry - > HTPhyMode . field . MODE > = MODE_HTMIX )
2008-10-28 21:48:09 +00:00
//This structure is for all 802.11n card InterOptibilityTest action. Reset all Num every n second. (Details see MLMEPeriodic)
typedef struct _IOT_STRUC {
UCHAR Threshold [ 2 ] ;
UCHAR ReorderTimeOutNum [ MAX_LEN_OF_BA_REC_TABLE ] ; // compare with threshold[0]
UCHAR RefreshNum [ MAX_LEN_OF_BA_REC_TABLE ] ; // compare with threshold[1]
ULONG OneSecInWindowCount ;
ULONG OneSecFrameDuplicateCount ;
ULONG OneSecOutWindowCount ;
UCHAR DelOriAct ;
UCHAR DelRecAct ;
UCHAR RTSShortProt ;
UCHAR RTSLongProt ;
BOOLEAN bRTSLongProtOn ;
BOOLEAN bLastAtheros ;
BOOLEAN bCurrentAtheros ;
BOOLEAN bNowAtherosBurstOn ;
BOOLEAN bNextDisableRxBA ;
BOOLEAN bToggle ;
} IOT_STRUC , * PIOT_STRUC ;
// This is the registry setting for 802.11n transmit setting. Used in advanced page.
typedef union _REG_TRANSMIT_SETTING {
struct {
2009-09-22 18:44:07 +00:00
//UINT32 PhyMode:4;
//UINT32 MCS:7; // MCS
2008-10-28 21:48:09 +00:00
UINT32 rsv0 : 10 ;
UINT32 TxBF : 1 ;
UINT32 BW : 1 ; //channel bandwidth 20MHz or 40 MHz
UINT32 ShortGI : 1 ;
UINT32 STBC : 1 ; //SPACE
UINT32 TRANSNO : 2 ;
UINT32 HTMODE : 1 ;
UINT32 EXTCHA : 2 ;
UINT32 rsv : 13 ;
} field ;
UINT32 word ;
} REG_TRANSMIT_SETTING , * PREG_TRANSMIT_SETTING ;
typedef union _DESIRED_TRANSMIT_SETTING {
struct {
USHORT MCS : 7 ; // MCS
USHORT PhyMode : 4 ;
USHORT FixedTxMode : 2 ; // If MCS isn't AUTO, fix rate in CCK, OFDM or HT mode.
USHORT rsv : 3 ;
} field ;
USHORT word ;
} DESIRED_TRANSMIT_SETTING , * PDESIRED_TRANSMIT_SETTING ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
/***************************************************************************
* USB - based chip Beacon related data structures
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# define BEACON_BITMAP_MASK 0xff
typedef struct _BEACON_SYNC_STRUCT_
{
UCHAR BeaconBuf [ HW_BEACON_MAX_COUNT ] [ HW_BEACON_OFFSET ] ;
UCHAR BeaconTxWI [ HW_BEACON_MAX_COUNT ] [ TXWI_SIZE ] ;
ULONG TimIELocationInBeacon [ HW_BEACON_MAX_COUNT ] ;
ULONG CapabilityInfoLocationInBeacon [ HW_BEACON_MAX_COUNT ] ;
BOOLEAN EnableBeacon ; // trigger to enable beacon transmission.
UCHAR BeaconBitMap ; // NOTE: If the MAX_MBSSID_NUM is larger than 8, this parameter need to change.
UCHAR DtimBitOn ; // NOTE: If the MAX_MBSSID_NUM is larger than 8, this parameter need to change.
} BEACON_SYNC_STRUCT ;
# endif // RTMP_MAC_USB //
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
/***************************************************************************
* Multiple SSID related data structures
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-10-28 21:48:09 +00:00
# define WLAN_MAX_NUM_OF_TIM ((MAX_LEN_OF_MAC_TABLE >> 3) + 1) /* /8 + 1 */
# define WLAN_CT_TIM_BCMC_OFFSET 0 /* unit: 32B */
/* clear bcmc TIM bit */
# define WLAN_MR_TIM_BCMC_CLEAR(apidx) \
pAd - > ApCfg . MBSSID [ apidx ] . TimBitmaps [ WLAN_CT_TIM_BCMC_OFFSET ] & = ~ BIT8 [ 0 ] ;
/* set bcmc TIM bit */
# define WLAN_MR_TIM_BCMC_SET(apidx) \
pAd - > ApCfg . MBSSID [ apidx ] . TimBitmaps [ WLAN_CT_TIM_BCMC_OFFSET ] | = BIT8 [ 0 ] ;
/* clear a station PS TIM bit */
# define WLAN_MR_TIM_BIT_CLEAR(ad_p, apidx, wcid) \
{ UCHAR tim_offset = wcid > > 3 ; \
UCHAR bit_offset = wcid & 0x7 ; \
ad_p - > ApCfg . MBSSID [ apidx ] . TimBitmaps [ tim_offset ] & = ( ~ BIT8 [ bit_offset ] ) ; }
/* set a station PS TIM bit */
# define WLAN_MR_TIM_BIT_SET(ad_p, apidx, wcid) \
{ UCHAR tim_offset = wcid > > 3 ; \
UCHAR bit_offset = wcid & 0x7 ; \
ad_p - > ApCfg . MBSSID [ apidx ] . TimBitmaps [ tim_offset ] | = BIT8 [ bit_offset ] ; }
// configuration common to OPMODE_AP as well as OPMODE_STA
typedef struct _COMMON_CONFIG {
BOOLEAN bCountryFlag ;
UCHAR CountryCode [ 3 ] ;
UCHAR Geography ;
UCHAR CountryRegion ; // Enum of country region, 0:FCC, 1:IC, 2:ETSI, 3:SPAIN, 4:France, 5:MKK, 6:MKK1, 7:Israel
UCHAR CountryRegionForABand ; // Enum of country region for A band
UCHAR PhyMode ; // PHY_11A, PHY_11B, PHY_11BG_MIXED, PHY_ABG_MIXED
USHORT Dsifs ; // in units of usec
ULONG PacketFilter ; // Packet filter for receiving
2009-09-22 18:44:07 +00:00
UINT8 RegulatoryClass ;
2008-10-28 21:48:09 +00:00
CHAR Ssid [ MAX_LEN_OF_SSID ] ; // NOT NULL-terminated
UCHAR SsidLen ; // the actual ssid length in used
UCHAR LastSsidLen ; // the actual ssid length in used
CHAR LastSsid [ MAX_LEN_OF_SSID ] ; // NOT NULL-terminated
UCHAR LastBssid [ MAC_ADDR_LEN ] ;
UCHAR Bssid [ MAC_ADDR_LEN ] ;
USHORT BeaconPeriod ;
UCHAR Channel ;
UCHAR CentralChannel ; // Central Channel when using 40MHz is indicating. not real channel.
UCHAR SupRate [ MAX_LEN_OF_SUPPORTED_RATES ] ;
UCHAR SupRateLen ;
UCHAR ExtRate [ MAX_LEN_OF_SUPPORTED_RATES ] ;
UCHAR ExtRateLen ;
UCHAR DesireRate [ MAX_LEN_OF_SUPPORTED_RATES ] ; // OID_802_11_DESIRED_RATES
UCHAR MaxDesiredRate ;
UCHAR ExpectedACKRate [ MAX_LEN_OF_SUPPORTED_RATES ] ;
ULONG BasicRateBitmap ; // backup basic ratebitmap
BOOLEAN bAPSDCapable ;
BOOLEAN bInServicePeriod ;
BOOLEAN bAPSDAC_BE ;
BOOLEAN bAPSDAC_BK ;
BOOLEAN bAPSDAC_VI ;
BOOLEAN bAPSDAC_VO ;
2009-09-22 18:44:07 +00:00
/* because TSPEC can modify the APSD flag, we need to keep the APSD flag
requested in association stage from the station ;
we need to recover the APSD flag after the TSPEC is deleted . */
BOOLEAN bACMAPSDBackup [ 4 ] ; /* for delivery-enabled & trigger-enabled both */
BOOLEAN bACMAPSDTr [ 4 ] ; /* no use */
2008-10-28 21:48:09 +00:00
BOOLEAN bNeedSendTriggerFrame ;
BOOLEAN bAPSDForcePowerSave ; // Force power save mode, should only use in APSD-STAUT
ULONG TriggerTimerCount ;
UCHAR MaxSPLength ;
UCHAR BBPCurrentBW ; // BW_10, BW_20, BW_40
2009-09-22 18:44:07 +00:00
// move to MULTISSID_STRUCT for MBSS
//HTTRANSMIT_SETTING HTPhyMode, MaxHTPhyMode, MinHTPhyMode;// For transmit phy setting in TXWI.
2008-10-28 21:48:09 +00:00
REG_TRANSMIT_SETTING RegTransmitSetting ; //registry transmit setting. this is for reading registry setting only. not useful.
2009-09-22 18:44:07 +00:00
//UCHAR FixedTxMode; // Fixed Tx Mode (CCK, OFDM), for HT fixed tx mode (GF, MIX) , refer to RegTransmitSetting.field.HTMode
2008-10-28 21:48:09 +00:00
UCHAR TxRate ; // Same value to fill in TXD. TxRate is 6-bit
UCHAR MaxTxRate ; // RATE_1, RATE_2, RATE_5_5, RATE_11
UCHAR TxRateIndex ; // Tx rate index in RateSwitchTable
UCHAR TxRateTableSize ; // Valid Tx rate table size in RateSwitchTable
2009-09-22 18:44:07 +00:00
//BOOLEAN bAutoTxRateSwitch;
2008-10-28 21:48:09 +00:00
UCHAR MinTxRate ; // RATE_1, RATE_2, RATE_5_5, RATE_11
UCHAR RtsRate ; // RATE_xxx
HTTRANSMIT_SETTING MlmeTransmit ; // MGMT frame PHY rate setting when operatin at Ht rate.
UCHAR MlmeRate ; // RATE_xxx, used to send MLME frames
UCHAR BasicMlmeRate ; // Default Rate for sending MLME frames
USHORT RtsThreshold ; // in unit of BYTE
USHORT FragmentThreshold ; // in unit of BYTE
UCHAR TxPower ; // in unit of mW
ULONG TxPowerPercentage ; // 0~100 %
ULONG TxPowerDefault ; // keep for TxPowerPercentage
2009-09-22 18:44:07 +00:00
UINT8 PwrConstraint ;
2008-10-28 21:48:09 +00:00
BACAP_STRUC BACapability ; // NO USE = 0XFF ; IMMED_BA =1 ; DELAY_BA=0
BACAP_STRUC REGBACapability ; // NO USE = 0XFF ; IMMED_BA =1 ; DELAY_BA=0
2009-04-26 14:06:00 +00:00
2008-10-28 21:48:09 +00:00
IOT_STRUC IOTestParm ; // 802.11n InterOpbility Test Parameter;
ULONG TxPreamble ; // Rt802_11PreambleLong, Rt802_11PreambleShort, Rt802_11PreambleAuto
BOOLEAN bUseZeroToDisableFragment ; // Microsoft use 0 as disable
ULONG UseBGProtection ; // 0: auto, 1: always use, 2: always not use
BOOLEAN bUseShortSlotTime ; // 0: disable, 1 - use short slot (9us)
2009-09-22 18:44:07 +00:00
BOOLEAN bEnableTxBurst ; // 1: enble TX PACKET BURST (when BA is established or AP is not a legacy WMM AP), 0: disable TX PACKET BURST
2008-10-28 21:48:09 +00:00
BOOLEAN bAggregationCapable ; // 1: enable TX aggregation when the peer supports it
BOOLEAN bPiggyBackCapable ; // 1: enable TX piggy-back according MAC's version
BOOLEAN bIEEE80211H ; // 1: enable IEEE802.11h spec.
ULONG DisableOLBCDetect ; // 0: enable OLBC detect; 1 disable OLBC detect
BOOLEAN bRdg ;
2009-04-26 14:06:00 +00:00
2008-10-28 21:48:09 +00:00
BOOLEAN bWmmCapable ; // 0:disable WMM, 1:enable WMM
QOS_CAPABILITY_PARM APQosCapability ; // QOS capability of the current associated AP
EDCA_PARM APEdcaParm ; // EDCA parameters of the current associated AP
QBSS_LOAD_PARM APQbssLoad ; // QBSS load of the current associated AP
UCHAR AckPolicy [ 4 ] ; // ACK policy of the specified AC. see ACK_xxx
BOOLEAN bDLSCapable ; // 0:disable DLS, 1:enable DLS
// a bitmap of BOOLEAN flags. each bit represent an operation status of a particular
// BOOLEAN control, either ON or OFF. These flags should always be accessed via
// OPSTATUS_TEST_FLAG(), OPSTATUS_SET_FLAG(), OP_STATUS_CLEAR_FLAG() macros.
// see fOP_STATUS_xxx in RTMP_DEF.C for detail bit definition
ULONG OpStatusFlags ;
BOOLEAN NdisRadioStateOff ; //For HCT 12.0, set this flag to TRUE instead of called MlmeRadioOff.
ABGBAND_STATE BandState ; // For setting BBP used on B/G or A mode.
// IEEE802.11H--DFS.
RADAR_DETECT_STRUCT RadarDetect ;
// HT
UCHAR BASize ; // USer desired BAWindowSize. Should not exceed our max capability
//RT_HT_CAPABILITY SupportedHtPhy;
RT_HT_CAPABILITY DesiredHtPhy ;
HT_CAPABILITY_IE HtCapability ;
ADD_HT_INFO_IE AddHTInfo ; // Useful as AP.
//This IE is used with channel switch announcement element when changing to a new 40MHz.
//This IE is included in channel switch ammouncement frames 7.4.1.5, beacons, probe Rsp.
NEW_EXT_CHAN_IE NewExtChanOffset ; //7.3.2.20A, 1 if extension channel is above the control channel, 3 if below, 0 if not present
BOOLEAN bHTProtect ;
BOOLEAN bMIMOPSEnable ;
BOOLEAN bBADecline ;
2009-09-22 18:44:07 +00:00
//2008/11/05: KH add to support Antenna power-saving of AP<--
BOOLEAN bGreenAPEnable ;
//2008/11/05: KH add to support Antenna power-saving of AP-->
2008-10-28 21:48:09 +00:00
BOOLEAN bDisableReordering ;
BOOLEAN bForty_Mhz_Intolerant ;
BOOLEAN bExtChannelSwitchAnnouncement ;
BOOLEAN bRcvBSSWidthTriggerEvents ;
ULONG LastRcvBSSWidthTriggerEventsTime ;
UCHAR TxBASize ;
// Enable wireless event
BOOLEAN bWirelessEvent ;
BOOLEAN bWiFiTest ; // Enable this parameter for WiFi test
// Tx & Rx Stream number selection
UCHAR TxStream ;
UCHAR RxStream ;
BOOLEAN bHardwareRadio ; // Hardware controlled Radio enabled
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
2009-04-26 14:06:25 +00:00
BOOLEAN bMultipleIRP ; // Multiple Bulk IN flag
UCHAR NumOfBulkInIRP ; // if bMultipleIRP == TRUE, NumOfBulkInIRP will be 4 otherwise be 1
RT_HT_CAPABILITY SupportedHtPhy ;
ULONG MaxPktOneTxBulk ;
UCHAR TxBulkFactor ;
UCHAR RxBulkFactor ;
2009-09-22 18:44:07 +00:00
BOOLEAN IsUpdateBeacon ;
2009-04-26 14:06:25 +00:00
BEACON_SYNC_STRUCT * pBeaconSync ;
RALINK_TIMER_STRUCT BeaconUpdateTimer ;
UINT32 BeaconAdjust ;
UINT32 BeaconFactor ;
UINT32 BeaconRemain ;
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_USB //
2008-10-28 21:48:09 +00:00
NDIS_SPIN_LOCK MeasureReqTabLock ;
PMEASURE_REQ_TAB pMeasureReqTab ;
NDIS_SPIN_LOCK TpcReqTabLock ;
PTPC_REQ_TAB pTpcReqTab ;
2009-09-22 18:44:07 +00:00
BOOLEAN PSPXlink ; // 0: Disable. 1: Enable
# if defined(RT305x)||defined(RT30xx)
// request by Gary, for High Power issue
UCHAR HighPowerPatchDisabled ;
# endif
BOOLEAN HT_DisallowTKIP ; /* Restrict the encryption type in 11n HT mode */
2008-10-28 21:48:09 +00:00
} COMMON_CONFIG , * PCOMMON_CONFIG ;
2009-09-22 18:44:07 +00:00
2008-10-28 21:48:09 +00:00
/* Modified by Wu Xi-Kun 4/21/2006 */
// STA configuration and status
typedef struct _STA_ADMIN_CONFIG {
// GROUP 1 -
// User configuration loaded from Registry, E2PROM or OID_xxx. These settings describe
// the user intended configuration, but not necessary fully equal to the final
// settings in ACTIVE BSS after negotiation/compromize with the BSS holder (either
// AP or IBSS holder).
// Once initialized, user configuration can only be changed via OID_xxx
UCHAR BssType ; // BSS_INFRA or BSS_ADHOC
USHORT AtimWin ; // used when starting a new IBSS
// GROUP 2 -
// User configuration loaded from Registry, E2PROM or OID_xxx. These settings describe
// the user intended configuration, and should be always applied to the final
// settings in ACTIVE BSS without compromising with the BSS holder.
// Once initialized, user configuration can only be changed via OID_xxx
UCHAR RssiTrigger ;
UCHAR RssiTriggerMode ; // RSSI_TRIGGERED_UPON_BELOW_THRESHOLD or RSSI_TRIGGERED_UPON_EXCCEED_THRESHOLD
USHORT DefaultListenCount ; // default listen count;
ULONG WindowsPowerMode ; // Power mode for AC power
ULONG WindowsBatteryPowerMode ; // Power mode for battery if exists
BOOLEAN bWindowsACCAMEnable ; // Enable CAM power mode when AC on
BOOLEAN bAutoReconnect ; // Set to TRUE when setting OID_802_11_SSID with no matching BSSID
ULONG WindowsPowerProfile ; // Windows power profile, for NDIS5.1 PnP
// MIB:ieee802dot11.dot11smt(1).dot11StationConfigTable(1)
USHORT Psm ; // power management mode (PWR_ACTIVE|PWR_SAVE)
USHORT DisassocReason ;
UCHAR DisassocSta [ MAC_ADDR_LEN ] ;
USHORT DeauthReason ;
UCHAR DeauthSta [ MAC_ADDR_LEN ] ;
USHORT AuthFailReason ;
UCHAR AuthFailSta [ MAC_ADDR_LEN ] ;
NDIS_802_11_PRIVACY_FILTER PrivacyFilter ; // PrivacyFilter enum for 802.1X
NDIS_802_11_AUTHENTICATION_MODE AuthMode ; // This should match to whatever microsoft defined
NDIS_802_11_WEP_STATUS WepStatus ;
NDIS_802_11_WEP_STATUS OrigWepStatus ; // Original wep status set from OID
// Add to support different cipher suite for WPA2/WPA mode
NDIS_802_11_ENCRYPTION_STATUS GroupCipher ; // Multicast cipher suite
NDIS_802_11_ENCRYPTION_STATUS PairCipher ; // Unicast cipher suite
BOOLEAN bMixCipher ; // Indicate current Pair & Group use different cipher suites
USHORT RsnCapability ;
NDIS_802_11_WEP_STATUS GroupKeyWepStatus ;
2009-09-22 18:44:07 +00:00
UCHAR WpaPassPhrase [ 64 ] ; // WPA PSK pass phrase
UINT WpaPassPhraseLen ; // the length of WPA PSK pass phrase
2008-10-28 21:48:09 +00:00
UCHAR PMK [ 32 ] ; // WPA PSK mode PMK
UCHAR PTK [ 64 ] ; // WPA PSK mode PTK
UCHAR GTK [ 32 ] ; // GTK from authenticator
BSSID_INFO SavedPMK [ PMKID_NO ] ;
UINT SavedPMKNum ; // Saved PMKID number
UCHAR DefaultKeyId ;
// WPA 802.1x port control, WPA_802_1X_PORT_SECURED, WPA_802_1X_PORT_NOT_SECURED
UCHAR PortSecured ;
// For WPA countermeasures
ULONG LastMicErrorTime ; // record last MIC error time
ULONG MicErrCnt ; // Should be 0, 1, 2, then reset to zero (after disassoiciation).
BOOLEAN bBlockAssoc ; // Block associate attempt for 60 seconds after counter measure occurred.
// For WPA-PSK supplicant state
WPA_STATE WpaState ; // Default is SS_NOTUSE and handled by microsoft 802.1x
UCHAR ReplayCounter [ 8 ] ;
UCHAR ANonce [ 32 ] ; // ANonce for WPA-PSK from aurhenticator
UCHAR SNonce [ 32 ] ; // SNonce for WPA-PSK
UCHAR LastSNR0 ; // last received BEACON's SNR
UCHAR LastSNR1 ; // last received BEACON's SNR for 2nd antenna
RSSI_SAMPLE RssiSample ;
ULONG NumOfAvgRssiSample ;
ULONG LastBeaconRxTime ; // OS's timestamp of the last BEACON RX time
ULONG Last11bBeaconRxTime ; // OS's timestamp of the last 11B BEACON RX time
ULONG Last11gBeaconRxTime ; // OS's timestamp of the last 11G BEACON RX time
ULONG Last20NBeaconRxTime ; // OS's timestamp of the last 20MHz N BEACON RX time
ULONG LastScanTime ; // Record last scan time for issue BSSID_SCAN_LIST
ULONG ScanCnt ; // Scan counts since most recent SSID, BSSID, SCAN OID request
BOOLEAN bSwRadio ; // Software controlled Radio On/Off, TRUE: On
BOOLEAN bHwRadio ; // Hardware controlled Radio On/Off, TRUE: On
BOOLEAN bRadio ; // Radio state, And of Sw & Hw radio state
BOOLEAN bHardwareRadio ; // Hardware controlled Radio enabled
BOOLEAN bShowHiddenSSID ; // Show all known SSID in SSID list get operation
2009-09-22 18:44:07 +00:00
2009-07-16 15:13:03 +00:00
// New for WPA, windows want us to keep association information and
2008-10-28 21:48:09 +00:00
// Fixed IEs from last association response
NDIS_802_11_ASSOCIATION_INFORMATION AssocInfo ;
USHORT ReqVarIELen ; // Length of next VIE include EID & Length
UCHAR ReqVarIEs [ MAX_VIE_LEN ] ; // The content saved here should be little-endian format.
USHORT ResVarIELen ; // Length of next VIE include EID & Length
UCHAR ResVarIEs [ MAX_VIE_LEN ] ;
UCHAR RSNIE_Len ;
UCHAR RSN_IE [ MAX_LEN_OF_RSNIE ] ; // The content saved here should be little-endian format.
ULONG CLBusyBytes ; // Save the total bytes received durning channel load scan time
USHORT RPIDensity [ 8 ] ; // Array for RPI density collection
2009-09-22 18:44:07 +00:00
2008-10-28 21:48:09 +00:00
UCHAR RMReqCnt ; // Number of measurement request saved.
UCHAR CurrentRMReqIdx ; // Number of measurement request saved.
BOOLEAN ParallelReq ; // Parallel measurement, only one request performed,
// It must be the same channel with maximum duration
USHORT ParallelDuration ; // Maximum duration for parallel measurement
UCHAR ParallelChannel ; // Only one channel with parallel measurement
USHORT IAPPToken ; // IAPP dialog token
// Hack for channel load and noise histogram parameters
UCHAR NHFactor ; // Parameter for Noise histogram
UCHAR CLFactor ; // Parameter for channel load
RALINK_TIMER_STRUCT StaQuickResponeForRateUpTimer ;
BOOLEAN StaQuickResponeForRateUpTimerRunning ;
UCHAR DtimCount ; // 0.. DtimPeriod-1
UCHAR DtimPeriod ; // default = 3
////////////////////////////////////////////////////////////////////////////////////////
// This is only for WHQL test.
BOOLEAN WhqlTest ;
////////////////////////////////////////////////////////////////////////////////////////
RALINK_TIMER_STRUCT WpaDisassocAndBlockAssocTimer ;
// Fast Roaming
2009-09-22 18:44:07 +00:00
BOOLEAN bAutoRoaming ; // 0:disable auto roaming by RSSI, 1:enable auto roaming by RSSI
2008-10-28 21:48:09 +00:00
CHAR dBmToRoam ; // the condition to roam when receiving Rssi less than this value. It's negative value.
BOOLEAN IEEE8021X ;
BOOLEAN IEEE8021x_required_keys ;
CIPHER_KEY DesireSharedKey [ 4 ] ; // Record user desired WEP keys
UCHAR DesireSharedKeyId ;
// 0: driver ignores wpa_supplicant
// 1: wpa_supplicant initiates scanning and AP selection
// 2: driver takes care of scanning, AP selection, and IEEE 802.11 association parameters
UCHAR WpaSupplicantUP ;
UCHAR WpaSupplicantScanCount ;
2009-09-22 18:44:07 +00:00
BOOLEAN bRSN_IE_FromWpaSupplicant ;
2008-10-28 21:48:09 +00:00
CHAR dev_name [ 16 ] ;
USHORT OriDevType ;
BOOLEAN bTGnWifiTest ;
BOOLEAN bScanReqIsFromWebUI ;
HTTRANSMIT_SETTING HTPhyMode , MaxHTPhyMode , MinHTPhyMode ; // For transmit phy setting in TXWI.
DESIRED_TRANSMIT_SETTING DesiredTransmitSetting ;
RT_HT_PHY_INFO DesiredHtPhyInfo ;
BOOLEAN bAutoTxRateSwitch ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_PCI
2008-10-28 21:48:09 +00:00
UCHAR BBPR3 ;
2009-09-22 18:44:24 +00:00
// PS Control has 2 meanings for advanced power save function.
// 1. EnablePSinIdle : When no connection, always radio off except need to do site survey.
// 2. EnableNewPS : will save more current in sleep or radio off mode.
PS_CONTROL PSControl ;
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_PCI //
BOOLEAN bAutoConnectByBssid ;
ULONG BeaconLostTime ; // seconds
BOOLEAN bForceTxBurst ; // 1: force enble TX PACKET BURST, 0: disable
2008-10-28 21:48:09 +00:00
} STA_ADMIN_CONFIG , * PSTA_ADMIN_CONFIG ;
// This data structure keep the current active BSS/IBSS's configuration that this STA
// had agreed upon joining the network. Which means these parameters are usually decided
// by the BSS/IBSS creator instead of user configuration. Data in this data structurre
// is valid only when either ADHOC_ON(pAd) or INFRA_ON(pAd) is TRUE.
// Normally, after SCAN or failed roaming attempts, we need to recover back to
// the current active settings.
typedef struct _STA_ACTIVE_CONFIG {
USHORT Aid ;
USHORT AtimWin ; // in kusec; IBSS parameter set element
USHORT CapabilityInfo ;
USHORT CfpMaxDuration ;
USHORT CfpPeriod ;
// Copy supported rate from desired AP's beacon. We are trying to match
// AP's supported and extended rate settings.
UCHAR SupRate [ MAX_LEN_OF_SUPPORTED_RATES ] ;
UCHAR ExtRate [ MAX_LEN_OF_SUPPORTED_RATES ] ;
UCHAR SupRateLen ;
UCHAR ExtRateLen ;
// Copy supported ht from desired AP's beacon. We are trying to match
RT_HT_PHY_INFO SupportedPhyInfo ;
RT_HT_CAPABILITY SupportedHtPhy ;
} STA_ACTIVE_CONFIG , * PSTA_ACTIVE_CONFIG ;
2009-04-26 14:06:25 +00:00
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
2008-10-28 21:48:09 +00:00
typedef struct _MAC_TABLE_ENTRY {
//Choose 1 from ValidAsWDS and ValidAsCLI to validize.
BOOLEAN ValidAsCLI ; // Sta mode, set this TRUE after Linkup,too.
BOOLEAN ValidAsWDS ; // This is WDS Entry. only for AP mode.
BOOLEAN ValidAsApCli ; //This is a AP-Client entry, only for AP mode which enable AP-Client functions.
BOOLEAN ValidAsMesh ;
BOOLEAN ValidAsDls ; // This is DLS Entry. only for STA mode.
BOOLEAN isCached ;
BOOLEAN bIAmBadAtheros ; // Flag if this is Atheros chip that has IOT problem. We need to turn on RTS/CTS protection.
UCHAR EnqueueEapolStartTimerRunning ; // Enqueue EAPoL-Start for triggering EAP SM
//jan for wpa
// record which entry revoke MIC Failure , if it leaves the BSS itself, AP won't update aMICFailTime MIB
UCHAR CMTimerRunning ;
UCHAR apidx ; // MBSS number
UCHAR RSNIE_Len ;
UCHAR RSN_IE [ MAX_LEN_OF_RSNIE ] ;
UCHAR ANonce [ LEN_KEY_DESC_NONCE ] ;
2009-09-22 18:44:07 +00:00
UCHAR SNonce [ LEN_KEY_DESC_NONCE ] ;
2008-10-28 21:48:09 +00:00
UCHAR R_Counter [ LEN_KEY_DESC_REPLAY ] ;
UCHAR PTK [ 64 ] ;
UCHAR ReTryCounter ;
RALINK_TIMER_STRUCT RetryTimer ;
RALINK_TIMER_STRUCT EnqueueStartForPSKTimer ; // A timer which enqueue EAPoL-Start for triggering PSK SM
NDIS_802_11_AUTHENTICATION_MODE AuthMode ; // This should match to whatever microsoft defined
NDIS_802_11_WEP_STATUS WepStatus ;
2009-09-22 18:44:07 +00:00
NDIS_802_11_WEP_STATUS GroupKeyWepStatus ;
2008-10-28 21:48:09 +00:00
AP_WPA_STATE WpaState ;
GTK_STATE GTKState ;
USHORT PortSecured ;
NDIS_802_11_PRIVACY_FILTER PrivacyFilter ; // PrivacyFilter enum for 802.1X
CIPHER_KEY PairwiseKey ;
PVOID pAd ;
INT PMKID_CacheIdx ;
UCHAR PMKID [ LEN_PMKID ] ;
UCHAR Addr [ MAC_ADDR_LEN ] ;
UCHAR PsMode ;
SST Sst ;
AUTH_STATE AuthState ; // for SHARED KEY authentication state machine used only
BOOLEAN IsReassocSta ; // Indicate whether this is a reassociation procedure
USHORT Aid ;
USHORT CapabilityInfo ;
UCHAR LastRssi ;
ULONG NoDataIdleCount ;
UINT16 StationKeepAliveCount ; // unit: second
ULONG PsQIdleCount ;
QUEUE_HEADER PsQueue ;
UINT32 StaConnectTime ; // the live time of this station since associated with AP
BOOLEAN bSendBAR ;
USHORT NoBADataCountDown ;
UINT32 CachedBuf [ 16 ] ; // UINT (4 bytes) for alignment
UINT TxBFCount ; // 3*3
UINT FIFOCount ;
UINT DebugFIFOCount ;
UINT DebugTxCount ;
BOOLEAN bDlsInit ;
//====================================================
//WDS entry needs these
2009-09-22 18:44:07 +00:00
// if ValidAsWDS==TRUE, MatchWDSTabIdx is the index in WdsTab.MacTab
2008-10-28 21:48:09 +00:00
UINT MatchWDSTabIdx ;
UCHAR MaxSupportedRate ;
UCHAR CurrTxRate ;
UCHAR CurrTxRateIndex ;
// to record the each TX rate's quality. 0 is best, the bigger the worse.
USHORT TxQuality [ MAX_STEP_OF_TX_RATE_SWITCH ] ;
2009-09-22 18:44:07 +00:00
// USHORT OneSecTxOkCount;
2008-10-28 21:48:09 +00:00
UINT32 OneSecTxNoRetryOkCount ;
UINT32 OneSecTxRetryOkCount ;
UINT32 OneSecTxFailCount ;
UINT32 ContinueTxFailCnt ;
UINT32 CurrTxRateStableTime ; // # of second in current TX rate
UCHAR TxRateUpPenalty ; // extra # of second penalty due to last unstable condition
//====================================================
BOOLEAN fNoisyEnvironment ;
BOOLEAN fLastSecAccordingRSSI ;
UCHAR LastSecTxRateChangeAction ; // 0: no change, 1:rate UP, 2:rate down
CHAR LastTimeTxRateChangeAction ; //Keep last time value of LastSecTxRateChangeAction
ULONG LastTxOkCount ;
UCHAR PER [ MAX_STEP_OF_TX_RATE_SWITCH ] ;
// a bitmap of BOOLEAN flags. each bit represent an operation status of a particular
// BOOLEAN control, either ON or OFF. These flags should always be accessed via
// CLIENT_STATUS_TEST_FLAG(), CLIENT_STATUS_SET_FLAG(), CLIENT_STATUS_CLEAR_FLAG() macros.
// see fOP_STATUS_xxx in RTMP_DEF.C for detail bit definition. fCLIENT_STATUS_AMSDU_INUSED
ULONG ClientStatusFlags ;
HTTRANSMIT_SETTING HTPhyMode , MaxHTPhyMode , MinHTPhyMode ; // For transmit phy setting in TXWI.
// HT EWC MIMO-N used parameters
USHORT RXBAbitmap ; // fill to on-chip RXWI_BA_BITMASK in 8.1.3RX attribute entry format
USHORT TXBAbitmap ; // This bitmap as originator, only keep in software used to mark AMPDU bit in TXWI
USHORT TXAutoBAbitmap ;
USHORT BADeclineBitmap ;
USHORT BARecWcidArray [ NUM_OF_TID ] ; // The mapping wcid of recipient session. if RXBAbitmap bit is masked
USHORT BAOriWcidArray [ NUM_OF_TID ] ; // The mapping wcid of originator session. if TXBAbitmap bit is masked
USHORT BAOriSequence [ NUM_OF_TID ] ; // The mapping wcid of originator session. if TXBAbitmap bit is masked
// 802.11n features.
UCHAR MpduDensity ;
UCHAR MaxRAmpduFactor ;
UCHAR AMsduSize ;
UCHAR MmpsMode ; // MIMO power save more.
HT_CAPABILITY_IE HTCapability ;
BOOLEAN bAutoTxRateSwitch ;
UCHAR RateLen ;
struct _MAC_TABLE_ENTRY * pNext ;
USHORT TxSeq [ NUM_OF_TID ] ;
USHORT NonQosDataSeq ;
RSSI_SAMPLE RssiSample ;
UINT32 TXMCSExpected [ 16 ] ;
UINT32 TXMCSSuccessful [ 16 ] ;
UINT32 TXMCSFailed [ 16 ] ;
UINT32 TXMCSAutoFallBack [ 16 ] [ 16 ] ;
2009-09-22 18:44:07 +00:00
2009-04-26 14:06:25 +00:00
ULONG LastBeaconRxTime ;
2009-09-22 18:44:07 +00:00
ULONG AssocDeadLine ;
2008-10-28 21:48:09 +00:00
} MAC_TABLE_ENTRY , * PMAC_TABLE_ENTRY ;
typedef struct _MAC_TABLE {
USHORT Size ;
MAC_TABLE_ENTRY * Hash [ HASH_TABLE_SIZE ] ;
MAC_TABLE_ENTRY Content [ MAX_LEN_OF_MAC_TABLE ] ;
QUEUE_HEADER McastPsQueue ;
ULONG PsQIdleCount ;
BOOLEAN fAnyStationInPsm ;
BOOLEAN fAnyStationBadAtheros ; // Check if any Station is atheros 802.11n Chip. We need to use RTS/CTS with Atheros 802,.11n chip.
BOOLEAN fAnyTxOPForceDisable ; // Check if it is necessary to disable BE TxOP
2009-04-26 14:06:25 +00:00
BOOLEAN fAllStationAsRalink ; // Check if all stations are ralink-chipset
2008-10-28 21:48:09 +00:00
BOOLEAN fAnyStationIsLegacy ; // Check if I use legacy rate to transmit to my BSS Station/
BOOLEAN fAnyStationNonGF ; // Check if any Station can't support GF.
BOOLEAN fAnyStation20Only ; // Check if any Station can't support GF.
BOOLEAN fAnyStationMIMOPSDynamic ; // Check if any Station is MIMO Dynamic
BOOLEAN fAnyBASession ; // Check if there is BA session. Force turn on RTS/CTS
2009-09-22 18:44:07 +00:00
//2008/10/28: KH add to support Antenna power-saving of AP<--
//2008/10/28: KH add to support Antenna power-saving of AP-->
2008-10-28 21:48:09 +00:00
} MAC_TABLE , * PMAC_TABLE ;
struct wificonf
{
BOOLEAN bShortGI ;
BOOLEAN bGreenField ;
} ;
2009-09-22 18:44:07 +00:00
typedef struct _RTMP_DEV_INFO_
2008-10-28 21:48:09 +00:00
{
2009-09-22 18:44:07 +00:00
UCHAR chipName [ 16 ] ;
RTMP_INF_TYPE infType ;
} RTMP_DEV_INFO ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
struct _RTMP_CHIP_OP_
{
/* Calibration access related callback functions */
int ( * eeinit ) ( RTMP_ADAPTER * pAd ) ; /* int (*eeinit)(RTMP_ADAPTER *pAd); */
int ( * eeread ) ( RTMP_ADAPTER * pAd , USHORT offset , PUSHORT pValue ) ; /* int (*eeread)(RTMP_ADAPTER *pAd, int offset, PUSHORT pValue); */
/* MCU related callback functions */
int ( * loadFirmware ) ( RTMP_ADAPTER * pAd ) ; /* int (*loadFirmware)(RTMP_ADAPTER *pAd); */
int ( * eraseFirmware ) ( RTMP_ADAPTER * pAd ) ; /* int (*eraseFirmware)(RTMP_ADAPTER *pAd); */
int ( * sendCommandToMcu ) ( RTMP_ADAPTER * pAd , UCHAR cmd , UCHAR token , UCHAR arg0 , UCHAR arg1 ) ; ; /* int (*sendCommandToMcu)(RTMP_ADAPTER *pAd, UCHAR cmd, UCHAR token, UCHAR arg0, UCHAR arg1); */
/* RF access related callback functions */
REG_PAIR * pRFRegTable ;
void ( * AsicRfInit ) ( RTMP_ADAPTER * pAd ) ;
void ( * AsicRfTurnOn ) ( RTMP_ADAPTER * pAd ) ;
void ( * AsicRfTurnOff ) ( RTMP_ADAPTER * pAd ) ;
void ( * AsicReverseRfFromSleepMode ) ( RTMP_ADAPTER * pAd ) ;
void ( * AsicHaltAction ) ( RTMP_ADAPTER * pAd ) ;
} ;
2008-10-28 21:48:09 +00:00
//
// The miniport adapter structure
//
2009-09-22 18:44:07 +00:00
struct _RTMP_ADAPTER
2008-10-28 21:48:09 +00:00
{
PVOID OS_Cookie ; // save specific structure relative to OS
PNET_DEV net_dev ;
ULONG VirtualIfCnt ;
2009-09-22 18:44:07 +00:00
RTMP_CHIP_OP chipOps ;
USHORT ThisTbttNumToNextWakeUp ;
# ifdef RTMP_MAC_PCI
/*****************************************************************************************/
/* PCI related parameters */
/*****************************************************************************************/
PUCHAR CSRBaseAddress ; // PCI MMIO Base Address, all access will use
unsigned int irq_num ;
2008-10-28 21:48:09 +00:00
USHORT LnkCtrlBitMask ;
USHORT RLnkCtrlConfiguration ;
USHORT RLnkCtrlOffset ;
USHORT HostLnkCtrlConfiguration ;
USHORT HostLnkCtrlOffset ;
USHORT PCIePowerSaveLevel ;
2009-09-22 18:44:24 +00:00
ULONG Rt3xxHostLinkCtrl ; // USed for 3090F chip
ULONG Rt3xxRalinkLinkCtrl ; // USed for 3090F chip
USHORT DeviceID ; // Read from PCI config
ULONG AccessBBPFailCount ;
2008-10-28 21:48:09 +00:00
BOOLEAN bPCIclkOff ; // flag that indicate if the PICE power status in Configuration SPace..
2009-09-22 18:44:07 +00:00
BOOLEAN bPCIclkOffDisableTx ; //
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:24 +00:00
BOOLEAN brt30xxBanMcuCmd ; //when = 0xff means all commands are ok to set .
BOOLEAN b3090ESpecialChip ; //3090E special chip that write EEPROM 0x24=0x9280.
ULONG CheckDmaBusyCount ; // Check Interrupt Status Register Count.
2008-10-28 21:48:09 +00:00
UINT int_enable_reg ;
UINT int_disable_mask ;
UINT int_pending ;
RTMP_DMABUF TxBufSpace [ NUM_OF_TX_RING ] ; // Shared memory of all 1st pre-allocated TxBuf associated with each TXD
RTMP_DMABUF RxDescRing ; // Shared memory for RX descriptors
RTMP_DMABUF TxDescRing [ NUM_OF_TX_RING ] ; // Shared memory for Tx descriptors
RTMP_TX_RING TxRing [ NUM_OF_TX_RING ] ; // AC0~4 + HCCA
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_PCI //
2008-10-28 21:48:09 +00:00
NDIS_SPIN_LOCK irq_lock ;
UCHAR irq_disabled ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
2009-04-26 14:06:25 +00:00
/*****************************************************************************************/
/* USB related parameters */
/*****************************************************************************************/
struct usb_config_descriptor * config ;
UINT BulkInEpAddr ; // bulk-in endpoint address
UINT BulkOutEpAddr [ 6 ] ; // bulk-out endpoint address
UINT NumberOfPipes ;
USHORT BulkOutMaxPacketSize ;
USHORT BulkInMaxPacketSize ;
//======Control Flags
LONG PendingIoCount ;
ULONG BulkFlags ;
BOOLEAN bUsbTxBulkAggre ; // Flags for bulk out data priority
//======Cmd Thread
CmdQ CmdQ ;
NDIS_SPIN_LOCK CmdQLock ; // CmdQLock spinlock
2009-09-22 18:44:07 +00:00
RTMP_OS_TASK cmdQTask ;
2009-04-26 14:06:25 +00:00
//======Semaphores (event)
2009-09-22 18:44:07 +00:00
RTMP_OS_SEM UsbVendorReq_semaphore ;
PVOID UsbVendorReqBuf ;
2009-04-26 14:06:25 +00:00
wait_queue_head_t * wait ;
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_USB //
/*****************************************************************************************/
/* RBUS related parameters */
/*****************************************************************************************/
2008-10-28 21:48:09 +00:00
/*****************************************************************************************/
2009-09-22 18:44:07 +00:00
/* Both PCI/USB related parameters */
2008-10-28 21:48:09 +00:00
/*****************************************************************************************/
2009-09-22 18:44:07 +00:00
//RTMP_DEV_INFO chipInfo;
RTMP_INF_TYPE infType ;
/*****************************************************************************************/
/* Driver Mgmt related parameters */
/*****************************************************************************************/
RTMP_OS_TASK mlmeTask ;
# ifdef RTMP_TIMER_TASK_SUPPORT
// If you want use timer task to handle the timer related jobs, enable this.
RTMP_TIMER_TASK_QUEUE TimerQ ;
NDIS_SPIN_LOCK TimerQLock ;
RTMP_OS_TASK timerTask ;
# endif // RTMP_TIMER_TASK_SUPPORT //
2008-10-28 21:48:09 +00:00
/*****************************************************************************************/
/* Tx related parameters */
/*****************************************************************************************/
BOOLEAN DeQueueRunning [ NUM_OF_TX_RING ] ; // for ensuring RTUSBDeQueuePacket get call once
NDIS_SPIN_LOCK DeQueueLock [ NUM_OF_TX_RING ] ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
2009-04-26 14:06:25 +00:00
// Data related context and AC specified, 4 AC supported
NDIS_SPIN_LOCK BulkOutLock [ 6 ] ; // BulkOut spinlock for 4 ACs
NDIS_SPIN_LOCK MLMEBulkOutLock ; // MLME BulkOut lock
HT_TX_CONTEXT TxContext [ NUM_OF_TX_RING ] ;
NDIS_SPIN_LOCK TxContextQueueLock [ NUM_OF_TX_RING ] ; // TxContextQueue spinlock
// 4 sets of Bulk Out index and pending flag
UCHAR NextBulkOutIndex [ 4 ] ; // only used for 4 EDCA bulkout pipe
BOOLEAN BulkOutPending [ 6 ] ; // used for total 6 bulkout pipe
UCHAR bulkResetPipeid ;
BOOLEAN MgmtBulkPending ;
ULONG bulkResetReq [ 6 ] ;
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_USB //
2008-10-28 21:48:09 +00:00
// resource for software backlog queues
QUEUE_HEADER TxSwQueue [ NUM_OF_TX_RING ] ; // 4 AC + 1 HCCA
NDIS_SPIN_LOCK TxSwQueueLock [ NUM_OF_TX_RING ] ; // TxSwQueue spinlock
RTMP_DMABUF MgmtDescRing ; // Shared memory for MGMT descriptors
RTMP_MGMT_RING MgmtRing ;
NDIS_SPIN_LOCK MgmtRingLock ; // Prio Ring spinlock
/*****************************************************************************************/
/* Rx related parameters */
/*****************************************************************************************/
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_PCI
2008-10-28 21:48:09 +00:00
RTMP_RX_RING RxRing ;
NDIS_SPIN_LOCK RxRingLock ; // Rx Ring spinlock
2009-09-22 18:44:24 +00:00
# ifdef RT3090
NDIS_SPIN_LOCK McuCmdLock ; //MCU Command Queue spinlock
# endif // RT3090 //
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_PCI //
# ifdef RTMP_MAC_USB
2009-04-26 14:06:25 +00:00
RX_CONTEXT RxContext [ RX_RING_SIZE ] ; // 1 for redundant multiple IRP bulk in.
NDIS_SPIN_LOCK BulkInLock ; // BulkIn spinlock for 4 ACs
2009-09-22 18:44:07 +00:00
UCHAR PendingRx ; // The Maximum pending Rx value should be RX_RING_SIZE.
2009-04-26 14:06:25 +00:00
UCHAR NextRxBulkInIndex ; // Indicate the current RxContext Index which hold by Host controller.
UCHAR NextRxBulkInReadIndex ; // Indicate the current RxContext Index which driver can read & process it.
ULONG NextRxBulkInPosition ; // Want to contatenate 2 URB buffer while 1st is bulkin failed URB. This Position is 1st URB TransferLength.
ULONG TransferBufferLength ; // current length of the packet buffer
ULONG ReadPosition ; // current read position in a packet buffer
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_USB //
2008-10-28 21:48:09 +00:00
/*****************************************************************************************/
/* ASIC related parameters */
/*****************************************************************************************/
UINT32 MACVersion ; // MAC version. Record rt2860C(0x28600100) or rt2860D (0x28600101)..
// ---------------------------
// E2PROM
// ---------------------------
ULONG EepromVersion ; // byte 0: version, byte 1: revision, byte 2~3: unused
2009-09-22 18:44:07 +00:00
ULONG FirmwareVersion ; // byte 0: Minor version, byte 1: Major version, otherwise unused.
2008-10-28 21:48:09 +00:00
USHORT EEPROMDefaultValue [ NUM_EEPROM_BBP_PARMS ] ;
2009-09-22 18:44:07 +00:00
UCHAR EEPROMAddressNum ; // 93c46=6 93c66=8
2009-04-26 14:06:25 +00:00
BOOLEAN EepromAccess ;
2009-09-22 18:44:07 +00:00
UCHAR EFuseTag ;
2008-10-28 21:48:09 +00:00
// ---------------------------
// BBP Control
// ---------------------------
UCHAR BbpWriteLatch [ 140 ] ; // record last BBP register value written via BBP_IO_WRITE/BBP_IO_WRITE_VY_REG_ID
2009-09-22 18:44:07 +00:00
CHAR BbpRssiToDbmDelta ; // change from UCHAR to CHAR for high power
2008-10-28 21:48:09 +00:00
BBP_R66_TUNING BbpTuning ;
// ----------------------------
// RFIC control
// ----------------------------
UCHAR RfIcType ; // RFIC_xxx
ULONG RfFreqOffset ; // Frequency offset for channel switching
RTMP_RF_REGS LatchRfRegs ; // latch th latest RF programming value since RF IC doesn't support READ
EEPROM_ANTENNA_STRUC Antenna ; // Since ANtenna definition is different for a & g. We need to save it for future reference.
EEPROM_NIC_CONFIG2_STRUC NicConfig2 ;
// This soft Rx Antenna Diversity mechanism is used only when user set
// RX Antenna = DIVERSITY ON
SOFT_RX_ANT_DIVERSITY RxAnt ;
UCHAR RFProgSeq ;
CHANNEL_TX_POWER TxPower [ MAX_NUM_OF_CHANNELS ] ; // Store Tx power value for all channels.
CHANNEL_TX_POWER ChannelList [ MAX_NUM_OF_CHANNELS ] ; // list all supported channels for site survey
CHANNEL_11J_TX_POWER TxPower11J [ MAX_NUM_OF_11JCHANNELS ] ; // 802.11j channel and bw
CHANNEL_11J_TX_POWER ChannelList11J [ MAX_NUM_OF_11JCHANNELS ] ; // list all supported channels for site survey
UCHAR ChannelListNum ; // number of channel in ChannelList[]
UCHAR Bbp94 ;
BOOLEAN BbpForCCK ;
ULONG Tx20MPwrCfgABand [ 5 ] ;
ULONG Tx20MPwrCfgGBand [ 5 ] ;
ULONG Tx40MPwrCfgABand [ 5 ] ;
ULONG Tx40MPwrCfgGBand [ 5 ] ;
BOOLEAN bAutoTxAgcA ; // Enable driver auto Tx Agc control
UCHAR TssiRefA ; // Store Tssi reference value as 25 temperature.
UCHAR TssiPlusBoundaryA [ 5 ] ; // Tssi boundary for increase Tx power to compensate.
UCHAR TssiMinusBoundaryA [ 5 ] ; // Tssi boundary for decrease Tx power to compensate.
UCHAR TxAgcStepA ; // Store Tx TSSI delta increment / decrement value
CHAR TxAgcCompensateA ; // Store the compensation (TxAgcStep * (idx-1))
BOOLEAN bAutoTxAgcG ; // Enable driver auto Tx Agc control
UCHAR TssiRefG ; // Store Tssi reference value as 25 temperature.
UCHAR TssiPlusBoundaryG [ 5 ] ; // Tssi boundary for increase Tx power to compensate.
UCHAR TssiMinusBoundaryG [ 5 ] ; // Tssi boundary for decrease Tx power to compensate.
UCHAR TxAgcStepG ; // Store Tx TSSI delta increment / decrement value
CHAR TxAgcCompensateG ; // Store the compensation (TxAgcStep * (idx-1))
CHAR BGRssiOffset0 ; // Store B/G RSSI#0 Offset value on EEPROM 0x46h
CHAR BGRssiOffset1 ; // Store B/G RSSI#1 Offset value
CHAR BGRssiOffset2 ; // Store B/G RSSI#2 Offset value
CHAR ARssiOffset0 ; // Store A RSSI#0 Offset value on EEPROM 0x4Ah
CHAR ARssiOffset1 ; // Store A RSSI#1 Offset value
CHAR ARssiOffset2 ; // Store A RSSI#2 Offset value
CHAR BLNAGain ; // Store B/G external LNA#0 value on EEPROM 0x44h
CHAR ALNAGain0 ; // Store A external LNA#0 value for ch36~64
CHAR ALNAGain1 ; // Store A external LNA#1 value for ch100~128
CHAR ALNAGain2 ; // Store A external LNA#2 value for ch132~165
2009-09-22 18:44:07 +00:00
# ifdef RT30xx
// for 3572
UCHAR Bbp25 ;
UCHAR Bbp26 ;
UCHAR TxMixerGain24G ; // Tx mixer gain value from EEPROM to improve Tx EVM / Tx DAC, 2.4G
UCHAR TxMixerGain5G ;
# endif // RT30xx //
2008-10-28 21:48:09 +00:00
// ----------------------------
// LED control
// ----------------------------
MCU_LEDCS_STRUC LedCntl ;
USHORT Led1 ; // read from EEPROM 0x3c
USHORT Led2 ; // EEPROM 0x3e
USHORT Led3 ; // EEPROM 0x40
2009-09-22 18:44:07 +00:00
UCHAR LedIndicatorStrength ;
2008-10-28 21:48:09 +00:00
UCHAR RssiSingalstrengthOffet ;
BOOLEAN bLedOnScanning ;
UCHAR LedStatus ;
/*****************************************************************************************/
/* 802.11 related parameters */
/*****************************************************************************************/
// outgoing BEACON frame buffer and corresponding TXD
TXWI_STRUC BeaconTxWI ;
PUCHAR BeaconBuf ;
USHORT BeaconOffset [ HW_BEACON_MAX_COUNT ] ;
// pre-build PS-POLL and NULL frame upon link up. for efficiency purpose.
PSPOLL_FRAME PsPollFrame ;
HEADER_802_11 NullFrame ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
2009-04-26 14:06:25 +00:00
TX_CONTEXT BeaconContext [ BEACON_RING_SIZE ] ;
TX_CONTEXT NullContext ;
TX_CONTEXT PsPollContext ;
TX_CONTEXT RTSContext ;
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_USB //
2009-04-26 14:06:25 +00:00
2008-10-28 21:48:09 +00:00
//=========AP===========
//=======STA===========
// -----------------------------------------------
// STA specific configuration & operation status
// used only when pAd->OpMode == OPMODE_STA
// -----------------------------------------------
STA_ADMIN_CONFIG StaCfg ; // user desired settings
STA_ACTIVE_CONFIG StaActive ; // valid only when ADHOC_ON(pAd) || INFRA_ON(pAd)
CHAR nickname [ IW_ESSID_MAX_SIZE + 1 ] ; // nickname, only used in the iwconfig i/f
NDIS_MEDIA_STATE PreMediaState ;
//=======Common===========
// OP mode: either AP or STA
UCHAR OpMode ; // OPMODE_STA, OPMODE_AP
NDIS_MEDIA_STATE IndicateMediaState ; // Base on Indication state, default is NdisMediaStateDisConnected
2009-09-22 18:44:07 +00:00
/* MAT related parameters */
2008-10-28 21:48:09 +00:00
// configuration: read from Registry & E2PROM
BOOLEAN bLocalAdminMAC ; // Use user changed MAC
UCHAR PermanentAddress [ MAC_ADDR_LEN ] ; // Factory default MAC address
UCHAR CurrentAddress [ MAC_ADDR_LEN ] ; // User changed MAC address
// ------------------------------------------------------
// common configuration to both OPMODE_STA and OPMODE_AP
// ------------------------------------------------------
COMMON_CONFIG CommonCfg ;
MLME_STRUCT Mlme ;
// AP needs those vaiables for site survey feature.
MLME_AUX MlmeAux ; // temporary settings used during MLME state machine
BSS_TABLE ScanTab ; // store the latest SCAN result
//About MacTab, the sta driver will use #0 and #1 for multicast and AP.
MAC_TABLE MacTab ; // ASIC on-chip WCID entry table. At TX, ASIC always use key according to this on-chip table.
NDIS_SPIN_LOCK MacTabLock ;
BA_TABLE BATable ;
2009-04-26 14:06:00 +00:00
2008-10-28 21:48:09 +00:00
NDIS_SPIN_LOCK BATabLock ;
RALINK_TIMER_STRUCT RECBATimer ;
// encryption/decryption KEY tables
CIPHER_KEY SharedKey [ MAX_MBSSID_NUM ] [ 4 ] ; // STA always use SharedKey[BSS0][0..3]
// RX re-assembly buffer for fragmentation
FRAGMENT_FRAME FragFrame ; // Frame storage for fragment frame
// various Counters
COUNTER_802_3 Counters8023 ; // 802.3 counters
COUNTER_802_11 WlanCounters ; // 802.11 MIB counters
COUNTER_RALINK RalinkCounters ; // Ralink propriety counters
COUNTER_DRS DrsCounters ; // counters for Dynamic TX Rate Switching
PRIVATE_STRUC PrivateInfo ; // Private information & counters
// flags, see fRTMP_ADAPTER_xxx flags
ULONG Flags ; // Represent current device status
2009-02-23 15:01:07 +00:00
ULONG PSFlags ; // Power Save operation flag.
2008-10-28 21:48:09 +00:00
// current TX sequence #
USHORT Sequence ;
// Control disconnect / connect event generation
//+++Didn't used anymore
ULONG LinkDownTime ;
//---
ULONG LastRxRate ;
ULONG LastTxRate ;
//+++Used only for Station
BOOLEAN bConfigChanged ; // Config Change flag for the same SSID setting
//---
ULONG ExtraInfo ; // Extra information for displaying status
ULONG SystemErrorBitmap ; // b0: E2PROM version error
//+++Didn't used anymore
ULONG MacIcVersion ; // MAC/BBP serial interface issue solved after ver.D
//---
// ---------------------------
// System event log
// ---------------------------
RT_802_11_EVENT_TABLE EventTab ;
BOOLEAN HTCEnable ;
/*****************************************************************************************/
/* Statistic related parameters */
/*****************************************************************************************/
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
2009-04-26 14:06:25 +00:00
ULONG BulkOutDataOneSecCount ;
ULONG BulkInDataOneSecCount ;
ULONG BulkLastOneSecCount ; // BulkOutDataOneSecCount + BulkInDataOneSecCount
ULONG watchDogRxCnt ;
ULONG watchDogRxOverFlowCnt ;
ULONG watchDogTxPendingCnt [ NUM_OF_TX_RING ] ;
2009-09-22 18:44:07 +00:00
INT TransferedLength [ NUM_OF_TX_RING ] ;
# endif // RTMP_MAC_USB //
2008-10-28 21:48:09 +00:00
BOOLEAN bUpdateBcnCntDone ;
ULONG watchDogMacDeadlock ; // prevent MAC/BBP into deadlock condition
// ----------------------------
// DEBUG paramerts
// ----------------------------
2009-09-22 18:44:07 +00:00
//ULONG DebugSetting[4];
2008-10-28 21:48:09 +00:00
BOOLEAN bBanAllBaSetup ;
BOOLEAN bPromiscuous ;
// ----------------------------
// rt2860c emulation-use Parameters
// ----------------------------
2009-09-22 18:44:07 +00:00
//ULONG rtsaccu[30];
//ULONG ctsaccu[30];
//ULONG cfendaccu[30];
//ULONG bacontent[16];
//ULONG rxint[RX_RING_SIZE+1];
//UCHAR rcvba[60];
2008-10-28 21:48:09 +00:00
BOOLEAN bLinkAdapt ;
BOOLEAN bForcePrintTX ;
BOOLEAN bForcePrintRX ;
2009-09-22 18:44:07 +00:00
//BOOLEAN bDisablescanning; //defined in RT2870 USB
2008-10-28 21:48:09 +00:00
BOOLEAN bStaFifoTest ;
BOOLEAN bProtectionTest ;
BOOLEAN bBroadComHT ;
//+++Following add from RT2870 USB.
ULONG BulkOutReq ;
ULONG BulkOutComplete ;
ULONG BulkOutCompleteOther ;
ULONG BulkOutCompleteCancel ; // seems not use now?
ULONG BulkInReq ;
ULONG BulkInComplete ;
ULONG BulkInCompleteFail ;
//---
struct wificonf WIFItestbed ;
struct reordering_mpdu_pool mpdu_blk_pool ;
ULONG OneSecondnonBEpackets ; // record non BE packets per second
2009-09-22 18:44:07 +00:00
# ifdef LINUX
2008-10-28 21:48:09 +00:00
struct iw_statistics iw_stats ;
struct net_device_stats stats ;
2009-09-22 18:44:07 +00:00
# endif // LINUX //
2008-10-28 21:48:09 +00:00
ULONG TbttTickCount ;
# ifdef PCI_MSI_SUPPORT
BOOLEAN HaveMsi ;
# endif // PCI_MSI_SUPPORT //
UCHAR is_on ;
# define TIME_BASE (1000000 / OS_HZ)
# define TIME_ONE_SECOND (1000000 / TIME_BASE)
UCHAR flg_be_adjust ;
ULONG be_adjust_last_time ;
2009-09-22 18:44:07 +00:00
UINT8 FlgCtsEnabled ;
2008-10-28 21:48:09 +00:00
UINT8 PM_FlgSuspend ;
2009-04-26 14:06:25 +00:00
2009-09-22 18:44:07 +00:00
# ifdef RT30xx
# ifdef RTMP_EFUSE_SUPPORT
2009-04-26 14:06:25 +00:00
BOOLEAN bUseEfuse ;
2009-09-22 18:44:07 +00:00
UCHAR EEPROMImage [ 1024 ] ;
# endif // RTMP_EFUSE_SUPPORT //
# endif // RT30xx //
} ;
2008-10-28 21:48:09 +00:00
# define DELAYINTMASK 0x0003fffb
# define INTMASK 0x0003fffb
# define IndMask 0x0003fffc
# define RxINT 0x00000005 // Delayed Rx or indivi rx
# define TxDataInt 0x000000fa // Delayed Tx or indivi tx
# define TxMgmtInt 0x00000102 // Delayed Tx or indivi tx
# define TxCoherent 0x00020000 // tx coherent
# define RxCoherent 0x00010000 // rx coherent
# define McuCommand 0x00000200 // mcu
# define PreTBTTInt 0x00001000 // Pre-TBTT interrupt
# define TBTTInt 0x00000800 // TBTT interrupt
# define GPTimeOutInt 0x00008000 // GPtimeout interrupt
# define AutoWakeupInt 0x00004000 // AutoWakeupInt interrupt
# define FifoStaFullInt 0x00002000 // fifo statistics full interrupt
2009-09-22 18:44:07 +00:00
/***************************************************************************
* Rx Path software control block related data structures
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-10-28 21:48:09 +00:00
typedef struct _RX_BLK_
{
2009-09-22 18:44:07 +00:00
// RXD_STRUC RxD; // sample
2008-10-28 21:48:09 +00:00
RT28XX_RXD_STRUC RxD ;
PRXWI_STRUC pRxWI ;
PHEADER_802_11 pHeader ;
PNDIS_PACKET pRxPacket ;
UCHAR * pData ;
USHORT DataSize ;
USHORT Flags ;
UCHAR UserPriority ; // for calculate TKIP MIC using
} RX_BLK ;
# define RX_BLK_SET_FLAG(_pRxBlk, _flag) (_pRxBlk->Flags |= _flag)
# define RX_BLK_TEST_FLAG(_pRxBlk, _flag) (_pRxBlk->Flags & _flag)
# define RX_BLK_CLEAR_FLAG(_pRxBlk, _flag) (_pRxBlk->Flags &= ~(_flag))
# define fRX_WDS 0x0001
# define fRX_AMSDU 0x0002
# define fRX_ARALINK 0x0004
# define fRX_HTC 0x0008
# define fRX_PAD 0x0010
# define fRX_AMPDU 0x0020
# define fRX_QOS 0x0040
# define fRX_INFRA 0x0080
# define fRX_EAP 0x0100
# define fRX_MESH 0x0200
# define fRX_APCLI 0x0400
# define fRX_DLS 0x0800
# define fRX_WPI 0x1000
# define LENGTH_AMSDU_SUBFRAMEHEAD 14
# define LENGTH_ARALINK_SUBFRAMEHEAD 14
# define LENGTH_ARALINK_HEADER_FIELD 2
2009-09-22 18:44:07 +00:00
/***************************************************************************
* Tx Path software control block related data structures
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-10-28 21:48:09 +00:00
# define TX_UNKOWN_FRAME 0x00
# define TX_MCAST_FRAME 0x01
# define TX_LEGACY_FRAME 0x02
# define TX_AMPDU_FRAME 0x04
# define TX_AMSDU_FRAME 0x08
# define TX_RALINK_FRAME 0x10
# define TX_FRAG_FRAME 0x20
// Currently the sizeof(TX_BLK) is 148 bytes.
typedef struct _TX_BLK_
{
UCHAR QueIdx ;
UCHAR TxFrameType ; // Indicate the Transmission type of the all frames in one batch
UCHAR TotalFrameNum ; // Total frame number want to send-out in one batch
USHORT TotalFragNum ; // Total frame fragments required in one batch
USHORT TotalFrameLen ; // Total length of all frames want to send-out in one batch
QUEUE_HEADER TxPacketList ;
MAC_TABLE_ENTRY * pMacEntry ; // NULL: packet with 802.11 RA field is multicast/broadcast address
HTTRANSMIT_SETTING * pTransmit ;
// Following structure used for the characteristics of a specific packet.
PNDIS_PACKET pPacket ;
PUCHAR pSrcBufHeader ; // Reference to the head of sk_buff->data
PUCHAR pSrcBufData ; // Reference to the sk_buff->data, will changed depends on hanlding progresss
UINT SrcBufLen ; // Length of packet payload which not including Layer 2 header
PUCHAR pExtraLlcSnapEncap ; // NULL means no extra LLC/SNAP is required
2009-09-22 18:44:07 +00:00
UCHAR HeaderBuf [ 128 ] ; // TempBuffer for TX_INFO + TX_WI + 802.11 Header + padding + AMSDU SubHeader + LLC/SNAP
//RT2870 2.1.0.0 uses only 80 bytes
//RT3070 2.1.1.0 uses only 96 bytes
2009-09-22 18:44:24 +00:00
//RT3090 2.1.0.0 uses only 96 bytes
2008-10-28 21:48:09 +00:00
UCHAR MpduHeaderLen ; // 802.11 header length NOT including the padding
UCHAR HdrPadLen ; // recording Header Padding Length;
UCHAR apidx ; // The interface associated to this packet
UCHAR Wcid ; // The MAC entry associated to this packet
UCHAR UserPriority ; // priority class of packet
UCHAR FrameGap ; // what kind of IFS this packet use
UCHAR MpduReqNum ; // number of fragments of this frame
UCHAR TxRate ; // TODO: Obsoleted? Should change to MCS?
UCHAR CipherAlg ; // cipher alogrithm
PCIPHER_KEY pKey ;
USHORT Flags ; //See following definitions for detail.
//YOU SHOULD NOT TOUCH IT! Following parameters are used for hardware-depended layer.
ULONG Priv ; // Hardware specific value saved in here.
} TX_BLK , * PTX_BLK ;
# define fTX_bRtsRequired 0x0001 // Indicate if need send RTS frame for protection. Not used in RT2860/RT2870.
# define fTX_bAckRequired 0x0002 // the packet need ack response
# define fTX_bPiggyBack 0x0004 // Legacy device use Piggback or not
# define fTX_bHTRate 0x0008 // allow to use HT rate
# define fTX_bForceNonQoS 0x0010 // force to transmit frame without WMM-QoS in HT mode
# define fTX_bAllowFrag 0x0020 // allow to fragment the packet, A-MPDU, A-MSDU, A-Ralink is not allowed to fragment
# define fTX_bMoreData 0x0040 // there are more data packets in PowerSave Queue
# define fTX_bWMM 0x0080 // QOS Data
# define fTX_bClearEAPFrame 0x0100
# define TX_BLK_SET_FLAG(_pTxBlk, _flag) (_pTxBlk->Flags |= _flag)
# define TX_BLK_TEST_FLAG(_pTxBlk, _flag) (((_pTxBlk->Flags & _flag) == _flag) ? 1 : 0)
# define TX_BLK_CLEAR_FLAG(_pTxBlk, _flag) (_pTxBlk->Flags &= ~(_flag))
2009-09-22 18:44:07 +00:00
/***************************************************************************
* Other static inline function definitions
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
static inline VOID ConvertMulticastIP2MAC (
IN PUCHAR pIpAddr ,
IN PUCHAR * ppMacAddr ,
IN UINT16 ProtoType )
2008-10-28 21:48:09 +00:00
{
if ( pIpAddr = = NULL )
return ;
if ( ppMacAddr = = NULL | | * ppMacAddr = = NULL )
return ;
switch ( ProtoType )
{
case ETH_P_IPV6 :
// memset(*ppMacAddr, 0, ETH_LENGTH_OF_ADDRESS);
* ( * ppMacAddr ) = 0x33 ;
* ( * ppMacAddr + 1 ) = 0x33 ;
* ( * ppMacAddr + 2 ) = pIpAddr [ 12 ] ;
* ( * ppMacAddr + 3 ) = pIpAddr [ 13 ] ;
* ( * ppMacAddr + 4 ) = pIpAddr [ 14 ] ;
* ( * ppMacAddr + 5 ) = pIpAddr [ 15 ] ;
break ;
case ETH_P_IP :
default :
// memset(*ppMacAddr, 0, ETH_LENGTH_OF_ADDRESS);
* ( * ppMacAddr ) = 0x01 ;
* ( * ppMacAddr + 1 ) = 0x00 ;
* ( * ppMacAddr + 2 ) = 0x5e ;
* ( * ppMacAddr + 3 ) = pIpAddr [ 1 ] & 0x7f ;
* ( * ppMacAddr + 4 ) = pIpAddr [ 2 ] ;
* ( * ppMacAddr + 5 ) = pIpAddr [ 3 ] ;
break ;
}
return ;
}
2009-09-22 18:44:07 +00:00
char * GetPhyMode ( int Mode ) ;
char * GetBW ( int BW ) ;
2008-10-28 21:48:09 +00:00
//
// Private routines in rtmp_init.c
//
NDIS_STATUS RTMPAllocAdapterBlock (
IN PVOID handle ,
2009-09-22 18:44:07 +00:00
OUT PRTMP_ADAPTER * ppAdapter ) ;
2008-10-28 21:48:09 +00:00
NDIS_STATUS RTMPAllocTxRxRingMemory (
2009-09-22 18:44:07 +00:00
IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
VOID RTMPFreeAdapter (
2009-09-22 18:44:07 +00:00
IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
NDIS_STATUS NICReadRegParameters (
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN NDIS_HANDLE WrapperConfigurationContext ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
# ifdef RTMP_RF_RW_SUPPORT
VOID NICInitRFRegisters (
2009-04-26 14:06:25 +00:00
IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
VOID RtmpChipOpsRFHook (
IN RTMP_ADAPTER * pAd ) ;
NDIS_STATUS RT30xxWriteRFRegister (
IN PRTMP_ADAPTER pAd ,
IN UCHAR regID ,
IN UCHAR value ) ;
NDIS_STATUS RT30xxReadRFRegister (
IN PRTMP_ADAPTER pAd ,
IN UCHAR regID ,
IN PUCHAR pValue ) ;
# endif // RTMP_RF_RW_SUPPORT //
2008-10-28 21:48:09 +00:00
VOID NICReadEEPROMParameters (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR mac_addr ) ;
VOID NICInitAsicFromEEPROM (
IN PRTMP_ADAPTER pAd ) ;
NDIS_STATUS NICInitializeAdapter (
IN PRTMP_ADAPTER pAd ,
IN BOOLEAN bHardReset ) ;
NDIS_STATUS NICInitializeAsic (
IN PRTMP_ADAPTER pAd ,
IN BOOLEAN bHardReset ) ;
2009-09-22 18:44:07 +00:00
2008-10-28 21:48:09 +00:00
VOID NICIssueReset (
IN PRTMP_ADAPTER pAd ) ;
VOID RTMPRingCleanUp (
IN PRTMP_ADAPTER pAd ,
IN UCHAR RingType ) ;
VOID UserCfgInit (
IN PRTMP_ADAPTER pAd ) ;
VOID NICResetFromError (
IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
NDIS_STATUS NICLoadFirmware (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
VOID NICEraseFirmware (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ) ;
NDIS_STATUS NICLoadRateSwitchingParams (
IN PRTMP_ADAPTER pAd ) ;
BOOLEAN NICCheckForHang (
IN PRTMP_ADAPTER pAd ) ;
VOID NICUpdateFifoStaCounters (
IN PRTMP_ADAPTER pAd ) ;
VOID NICUpdateRawCounters (
IN PRTMP_ADAPTER pAd ) ;
VOID RTMPZeroMemory (
IN PVOID pSrc ,
IN ULONG Length ) ;
ULONG RTMPCompareMemory (
IN PVOID pSrc1 ,
IN PVOID pSrc2 ,
IN ULONG Length ) ;
VOID RTMPMoveMemory (
OUT PVOID pDest ,
IN PVOID pSrc ,
IN ULONG Length ) ;
VOID AtoH (
2009-09-22 18:44:07 +00:00
PSTRING src ,
PUCHAR dest ,
2008-10-28 21:48:09 +00:00
int destlen ) ;
UCHAR BtoH (
char ch ) ;
VOID RTMPPatchMacBbpBug (
IN PRTMP_ADAPTER pAd ) ;
VOID RTMPInitTimer (
IN PRTMP_ADAPTER pAd ,
IN PRALINK_TIMER_STRUCT pTimer ,
IN PVOID pTimerFunc ,
IN PVOID pData ,
IN BOOLEAN Repeat ) ;
VOID RTMPSetTimer (
IN PRALINK_TIMER_STRUCT pTimer ,
IN ULONG Value ) ;
VOID RTMPModTimer (
IN PRALINK_TIMER_STRUCT pTimer ,
IN ULONG Value ) ;
VOID RTMPCancelTimer (
IN PRALINK_TIMER_STRUCT pTimer ,
OUT BOOLEAN * pCancelled ) ;
VOID RTMPSetLED (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Status ) ;
VOID RTMPSetSignalLED (
IN PRTMP_ADAPTER pAd ,
IN NDIS_802_11_RSSI Dbm ) ;
VOID RTMPEnableRxTx (
IN PRTMP_ADAPTER pAd ) ;
//
// prototype in action.c
//
VOID ActionStateMachineInit (
IN PRTMP_ADAPTER pAd ,
IN STATE_MACHINE * S ,
OUT STATE_MACHINE_FUNC Trans [ ] ) ;
VOID MlmeADDBAAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID MlmeDELBAAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID MlmeDLSAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID MlmeInvalidAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID MlmeQOSAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerAddBAReqAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerAddBARspAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerDelBAAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerBAAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID SendPSMPAction (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Wcid ,
IN UCHAR Psmp ) ;
VOID PeerRMAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerPublicAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerHTAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerQOSAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID RECBATimerTimeout (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
VOID ORIBATimerTimeout (
IN PRTMP_ADAPTER pAd ) ;
VOID SendRefreshBAR (
IN PRTMP_ADAPTER pAd ,
IN MAC_TABLE_ENTRY * pEntry ) ;
2009-09-22 18:44:07 +00:00
2008-10-28 21:48:09 +00:00
VOID ActHeaderInit (
IN PRTMP_ADAPTER pAd ,
IN OUT PHEADER_802_11 pHdr80211 ,
IN PUCHAR Addr1 ,
IN PUCHAR Addr2 ,
IN PUCHAR Addr3 ) ;
VOID BarHeaderInit (
IN PRTMP_ADAPTER pAd ,
IN OUT PFRAME_BAR pCntlBar ,
IN PUCHAR pDA ,
IN PUCHAR pSA ) ;
VOID InsertActField (
IN PRTMP_ADAPTER pAd ,
OUT PUCHAR pFrameBuf ,
OUT PULONG pFrameLen ,
IN UINT8 Category ,
IN UINT8 ActCode ) ;
BOOLEAN CntlEnqueueForRecv (
IN PRTMP_ADAPTER pAd ,
IN ULONG Wcid ,
IN ULONG MsgLen ,
IN PFRAME_BA_REQ pMsg ) ;
//
// Private routines in rtmp_data.c
//
BOOLEAN RTMPHandleRxDoneInterrupt (
IN PRTMP_ADAPTER pAd ) ;
BOOLEAN RTMPHandleTxRingDmaDoneInterrupt (
IN PRTMP_ADAPTER pAd ,
IN INT_SOURCE_CSR_STRUC TxRingBitmap ) ;
VOID RTMPHandleMgmtRingDmaDoneInterrupt (
IN PRTMP_ADAPTER pAd ) ;
VOID RTMPHandleTBTTInterrupt (
IN PRTMP_ADAPTER pAd ) ;
VOID RTMPHandlePreTBTTInterrupt (
IN PRTMP_ADAPTER pAd ) ;
void RTMPHandleTwakeupInterrupt (
IN PRTMP_ADAPTER pAd ) ;
VOID RTMPHandleRxCoherentInterrupt (
IN PRTMP_ADAPTER pAd ) ;
BOOLEAN TxFrameIsAggregatible (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pPrevAddr1 ,
IN PUCHAR p8023hdr ) ;
BOOLEAN PeerIsAggreOn (
IN PRTMP_ADAPTER pAd ,
IN ULONG TxRate ,
IN PMAC_TABLE_ENTRY pMacEntry ) ;
2009-09-22 18:44:07 +00:00
2008-10-28 21:48:09 +00:00
NDIS_STATUS Sniff2BytesFromNdisBuffer (
IN PNDIS_BUFFER pFirstBuffer ,
IN UCHAR DesiredOffset ,
OUT PUCHAR pByte0 ,
OUT PUCHAR pByte1 ) ;
NDIS_STATUS STASendPacket (
IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET pPacket ) ;
VOID STASendPackets (
IN NDIS_HANDLE MiniportAdapterContext ,
IN PPNDIS_PACKET ppPacketArray ,
IN UINT NumberOfPackets ) ;
VOID RTMPDeQueuePacket (
IN PRTMP_ADAPTER pAd ,
IN BOOLEAN bIntContext ,
IN UCHAR QueIdx ,
IN UCHAR Max_Tx_Packets ) ;
NDIS_STATUS RTMPHardTransmit (
IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET pPacket ,
IN UCHAR QueIdx ,
OUT PULONG pFreeTXDLeft ) ;
NDIS_STATUS STAHardTransmit (
IN PRTMP_ADAPTER pAd ,
IN TX_BLK * pTxBlk ,
IN UCHAR QueIdx ) ;
VOID STARxEAPOLFrameIndicate (
IN PRTMP_ADAPTER pAd ,
IN MAC_TABLE_ENTRY * pEntry ,
IN RX_BLK * pRxBlk ,
IN UCHAR FromWhichBSSID ) ;
NDIS_STATUS RTMPFreeTXDRequest (
IN PRTMP_ADAPTER pAd ,
IN UCHAR RingType ,
IN UCHAR NumberRequired ,
IN PUCHAR FreeNumberIs ) ;
NDIS_STATUS MlmeHardTransmit (
IN PRTMP_ADAPTER pAd ,
IN UCHAR QueIdx ,
IN PNDIS_PACKET pPacket ) ;
NDIS_STATUS MlmeHardTransmitMgmtRing (
IN PRTMP_ADAPTER pAd ,
IN UCHAR QueIdx ,
IN PNDIS_PACKET pPacket ) ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_PCI
2008-10-28 21:48:09 +00:00
NDIS_STATUS MlmeHardTransmitTxRing (
IN PRTMP_ADAPTER pAd ,
IN UCHAR QueIdx ,
IN PNDIS_PACKET pPacket ) ;
2009-09-22 18:44:07 +00:00
NDIS_STATUS MlmeDataHardTransmit (
IN PRTMP_ADAPTER pAd ,
IN UCHAR QueIdx ,
IN PNDIS_PACKET pPacket ) ;
VOID RTMPWriteTxDescriptor (
IN PRTMP_ADAPTER pAd ,
IN PTXD_STRUC pTxD ,
IN BOOLEAN bWIV ,
IN UCHAR QSEL ) ;
# endif // RTMP_MAC_PCI //
2008-10-28 21:48:09 +00:00
USHORT RTMPCalcDuration (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Rate ,
IN ULONG Size ) ;
VOID RTMPWriteTxWI (
IN PRTMP_ADAPTER pAd ,
IN PTXWI_STRUC pTxWI ,
IN BOOLEAN FRAG ,
IN BOOLEAN CFACK ,
IN BOOLEAN InsTimestamp ,
IN BOOLEAN AMPDU ,
IN BOOLEAN Ack ,
IN BOOLEAN NSeq , // HW new a sequence.
IN UCHAR BASize ,
IN UCHAR WCID ,
IN ULONG Length ,
IN UCHAR PID ,
IN UCHAR TID ,
IN UCHAR TxRate ,
IN UCHAR Txopmode ,
IN BOOLEAN CfAck ,
IN HTTRANSMIT_SETTING * pTransmit ) ;
VOID RTMPWriteTxWI_Data (
IN PRTMP_ADAPTER pAd ,
IN OUT PTXWI_STRUC pTxWI ,
IN TX_BLK * pTxBlk ) ;
VOID RTMPWriteTxWI_Cache (
IN PRTMP_ADAPTER pAd ,
IN OUT PTXWI_STRUC pTxWI ,
IN TX_BLK * pTxBlk ) ;
VOID RTMPSuspendMsduTransmission (
IN PRTMP_ADAPTER pAd ) ;
VOID RTMPResumeMsduTransmission (
IN PRTMP_ADAPTER pAd ) ;
NDIS_STATUS MiniportMMRequest (
IN PRTMP_ADAPTER pAd ,
IN UCHAR QueIdx ,
IN PUCHAR pData ,
IN UINT Length ) ;
2009-08-23 13:31:28 +00:00
2009-09-22 18:44:07 +00:00
//+++mark by shiang, now this function merge to MiniportMMRequest()
//---mark by shiang, now this function merge to MiniportMMRequest()
2008-10-28 21:48:09 +00:00
VOID RTMPSendNullFrame (
IN PRTMP_ADAPTER pAd ,
IN UCHAR TxRate ,
IN BOOLEAN bQosNull ) ;
VOID RTMPSendDisassociationFrame (
IN PRTMP_ADAPTER pAd ) ;
VOID RTMPSendRTSFrame (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pDA ,
IN unsigned int NextMpduSize ,
IN UCHAR TxRate ,
IN UCHAR RTSRate ,
IN USHORT AckDuration ,
IN UCHAR QueIdx ,
IN UCHAR FrameGap ) ;
PQUEUE_HEADER RTMPCheckTxSwQueue (
IN PRTMP_ADAPTER pAd ,
OUT UCHAR * QueIdx ) ;
VOID RTMPReportMicError (
IN PRTMP_ADAPTER pAd ,
IN PCIPHER_KEY pWpaKey ) ;
VOID WpaMicFailureReportFrame (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID WpaDisassocApAndBlockAssoc (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
2009-09-22 18:44:07 +00:00
VOID WpaStaPairwiseKeySetting (
IN PRTMP_ADAPTER pAd ) ;
VOID WpaStaGroupKeySetting (
IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
NDIS_STATUS RTMPCloneNdisPacket (
IN PRTMP_ADAPTER pAd ,
IN BOOLEAN pInsAMSDUHdr ,
IN PNDIS_PACKET pInPacket ,
OUT PNDIS_PACKET * ppOutPacket ) ;
NDIS_STATUS RTMPAllocateNdisPacket (
IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET * pPacket ,
IN PUCHAR pHeader ,
IN UINT HeaderLen ,
IN PUCHAR pData ,
IN UINT DataLen ) ;
VOID RTMPFreeNdisPacket (
IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET pPacket ) ;
BOOLEAN RTMPFreeTXDUponTxDmaDone (
IN PRTMP_ADAPTER pAd ,
IN UCHAR QueIdx ) ;
BOOLEAN RTMPCheckDHCPFrame (
IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET pPacket ) ;
BOOLEAN RTMPCheckEtherType (
IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET pPacket ) ;
//
// Private routines in rtmp_wep.c
//
VOID RTMPInitWepEngine (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pKey ,
IN UCHAR KeyId ,
IN UCHAR KeyLen ,
IN PUCHAR pDest ) ;
VOID RTMPEncryptData (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pSrc ,
IN PUCHAR pDest ,
IN UINT Len ) ;
BOOLEAN RTMPSoftDecryptWEP (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pData ,
IN ULONG DataByteCnt ,
IN PCIPHER_KEY pGroupKey ) ;
VOID RTMPSetICV (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pDest ) ;
VOID ARCFOUR_INIT (
IN PARCFOURCONTEXT Ctx ,
IN PUCHAR pKey ,
IN UINT KeyLen ) ;
UCHAR ARCFOUR_BYTE (
IN PARCFOURCONTEXT Ctx ) ;
VOID ARCFOUR_DECRYPT (
IN PARCFOURCONTEXT Ctx ,
IN PUCHAR pDest ,
IN PUCHAR pSrc ,
IN UINT Len ) ;
VOID ARCFOUR_ENCRYPT (
IN PARCFOURCONTEXT Ctx ,
IN PUCHAR pDest ,
IN PUCHAR pSrc ,
IN UINT Len ) ;
VOID WPAARCFOUR_ENCRYPT (
IN PARCFOURCONTEXT Ctx ,
IN PUCHAR pDest ,
IN PUCHAR pSrc ,
IN UINT Len ) ;
UINT RTMP_CALC_FCS32 (
IN UINT Fcs ,
IN PUCHAR Cp ,
IN INT Len ) ;
//
// MLME routines
//
// Asic/RF/BBP related functions
VOID AsicAdjustTxPower (
IN PRTMP_ADAPTER pAd ) ;
VOID AsicUpdateProtect (
IN PRTMP_ADAPTER pAd ,
IN USHORT OperaionMode ,
IN UCHAR SetMask ,
IN BOOLEAN bDisableBGProtect ,
IN BOOLEAN bNonGFExist ) ;
VOID AsicSwitchChannel (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Channel ,
IN BOOLEAN bScan ) ;
VOID AsicLockChannel (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Channel ) ;
VOID AsicRfTuningExec (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
2009-09-22 18:44:07 +00:00
VOID AsicResetBBPAgent (
IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
VOID AsicSleepThenAutoWakeup (
IN PRTMP_ADAPTER pAd ,
IN USHORT TbttNumToNextWakeUp ) ;
VOID AsicForceSleep (
IN PRTMP_ADAPTER pAd ) ;
VOID AsicForceWakeup (
IN PRTMP_ADAPTER pAd ,
2009-04-26 14:06:25 +00:00
IN BOOLEAN bFromTx ) ;
2008-10-28 21:48:09 +00:00
VOID AsicSetBssid (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pBssid ) ;
VOID AsicSetMcastWC (
IN PRTMP_ADAPTER pAd ) ;
VOID AsicDelWcidTab (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Wcid ) ;
VOID AsicEnableRDG (
IN PRTMP_ADAPTER pAd ) ;
VOID AsicDisableRDG (
IN PRTMP_ADAPTER pAd ) ;
VOID AsicDisableSync (
IN PRTMP_ADAPTER pAd ) ;
VOID AsicEnableBssSync (
IN PRTMP_ADAPTER pAd ) ;
VOID AsicEnableIbssSync (
IN PRTMP_ADAPTER pAd ) ;
VOID AsicSetEdcaParm (
IN PRTMP_ADAPTER pAd ,
IN PEDCA_PARM pEdcaParm ) ;
VOID AsicSetSlotTime (
IN PRTMP_ADAPTER pAd ,
IN BOOLEAN bUseShortSlotTime ) ;
VOID AsicAddSharedKeyEntry (
IN PRTMP_ADAPTER pAd ,
IN UCHAR BssIndex ,
IN UCHAR KeyIdx ,
IN UCHAR CipherAlg ,
IN PUCHAR pKey ,
IN PUCHAR pTxMic ,
IN PUCHAR pRxMic ) ;
VOID AsicRemoveSharedKeyEntry (
IN PRTMP_ADAPTER pAd ,
IN UCHAR BssIndex ,
IN UCHAR KeyIdx ) ;
VOID AsicUpdateWCIDAttribute (
IN PRTMP_ADAPTER pAd ,
IN USHORT WCID ,
IN UCHAR BssIndex ,
IN UCHAR CipherAlg ,
IN BOOLEAN bUsePairewiseKeyTable ) ;
VOID AsicUpdateWCIDIVEIV (
IN PRTMP_ADAPTER pAd ,
IN USHORT WCID ,
IN ULONG uIV ,
IN ULONG uEIV ) ;
VOID AsicUpdateRxWCIDTable (
IN PRTMP_ADAPTER pAd ,
IN USHORT WCID ,
IN PUCHAR pAddr ) ;
VOID AsicAddKeyEntry (
IN PRTMP_ADAPTER pAd ,
IN USHORT WCID ,
IN UCHAR BssIndex ,
IN UCHAR KeyIdx ,
IN PCIPHER_KEY pCipherKey ,
IN BOOLEAN bUsePairewiseKeyTable ,
IN BOOLEAN bTxKey ) ;
VOID AsicAddPairwiseKeyEntry (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pAddr ,
IN UCHAR WCID ,
IN CIPHER_KEY * pCipherKey ) ;
VOID AsicRemovePairwiseKeyEntry (
IN PRTMP_ADAPTER pAd ,
IN UCHAR BssIdx ,
IN UCHAR Wcid ) ;
BOOLEAN AsicSendCommandToMcu (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Command ,
IN UCHAR Token ,
IN UCHAR Arg0 ,
IN UCHAR Arg1 ) ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_PCI
2008-10-28 21:48:09 +00:00
BOOLEAN AsicCheckCommanOk (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Command ) ;
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_PCI //
2008-10-28 21:48:09 +00:00
VOID MacAddrRandomBssid (
IN PRTMP_ADAPTER pAd ,
OUT PUCHAR pAddr ) ;
VOID MgtMacHeaderInit (
IN PRTMP_ADAPTER pAd ,
IN OUT PHEADER_802_11 pHdr80211 ,
IN UCHAR SubType ,
IN UCHAR ToDs ,
IN PUCHAR pDA ,
IN PUCHAR pBssid ) ;
VOID MlmeRadioOff (
IN PRTMP_ADAPTER pAd ) ;
VOID MlmeRadioOn (
IN PRTMP_ADAPTER pAd ) ;
VOID BssTableInit (
IN BSS_TABLE * Tab ) ;
VOID BATableInit (
IN PRTMP_ADAPTER pAd ,
IN BA_TABLE * Tab ) ;
ULONG BssTableSearch (
IN BSS_TABLE * Tab ,
IN PUCHAR pBssid ,
IN UCHAR Channel ) ;
ULONG BssSsidTableSearch (
IN BSS_TABLE * Tab ,
IN PUCHAR pBssid ,
IN PUCHAR pSsid ,
IN UCHAR SsidLen ,
IN UCHAR Channel ) ;
ULONG BssTableSearchWithSSID (
IN BSS_TABLE * Tab ,
IN PUCHAR Bssid ,
IN PUCHAR pSsid ,
IN UCHAR SsidLen ,
IN UCHAR Channel ) ;
2009-09-22 18:44:07 +00:00
ULONG BssSsidTableSearchBySSID (
IN BSS_TABLE * Tab ,
IN PUCHAR pSsid ,
IN UCHAR SsidLen ) ;
2008-10-28 21:48:09 +00:00
VOID BssTableDeleteEntry (
IN OUT PBSS_TABLE pTab ,
IN PUCHAR pBssid ,
IN UCHAR Channel ) ;
VOID BATableDeleteORIEntry (
IN OUT PRTMP_ADAPTER pAd ,
IN BA_ORI_ENTRY * pBAORIEntry ) ;
VOID BssEntrySet (
IN PRTMP_ADAPTER pAd ,
OUT PBSS_ENTRY pBss ,
IN PUCHAR pBssid ,
IN CHAR Ssid [ ] ,
IN UCHAR SsidLen ,
IN UCHAR BssType ,
IN USHORT BeaconPeriod ,
IN PCF_PARM CfParm ,
IN USHORT AtimWin ,
IN USHORT CapabilityInfo ,
IN UCHAR SupRate [ ] ,
IN UCHAR SupRateLen ,
IN UCHAR ExtRate [ ] ,
IN UCHAR ExtRateLen ,
IN HT_CAPABILITY_IE * pHtCapability ,
IN ADD_HT_INFO_IE * pAddHtInfo , // AP might use this additional ht info IE
IN UCHAR HtCapabilityLen ,
IN UCHAR AddHtInfoLen ,
IN UCHAR NewExtChanOffset ,
IN UCHAR Channel ,
IN CHAR Rssi ,
IN LARGE_INTEGER TimeStamp ,
IN UCHAR CkipFlag ,
IN PEDCA_PARM pEdcaParm ,
IN PQOS_CAPABILITY_PARM pQosCapability ,
IN PQBSS_LOAD_PARM pQbssLoad ,
IN USHORT LengthVIE ,
IN PNDIS_802_11_VARIABLE_IEs pVIE ) ;
ULONG BssTableSetEntry (
IN PRTMP_ADAPTER pAd ,
OUT PBSS_TABLE pTab ,
IN PUCHAR pBssid ,
IN CHAR Ssid [ ] ,
IN UCHAR SsidLen ,
IN UCHAR BssType ,
IN USHORT BeaconPeriod ,
IN CF_PARM * CfParm ,
IN USHORT AtimWin ,
IN USHORT CapabilityInfo ,
IN UCHAR SupRate [ ] ,
IN UCHAR SupRateLen ,
IN UCHAR ExtRate [ ] ,
IN UCHAR ExtRateLen ,
IN HT_CAPABILITY_IE * pHtCapability ,
IN ADD_HT_INFO_IE * pAddHtInfo , // AP might use this additional ht info IE
IN UCHAR HtCapabilityLen ,
IN UCHAR AddHtInfoLen ,
IN UCHAR NewExtChanOffset ,
IN UCHAR Channel ,
IN CHAR Rssi ,
IN LARGE_INTEGER TimeStamp ,
IN UCHAR CkipFlag ,
IN PEDCA_PARM pEdcaParm ,
IN PQOS_CAPABILITY_PARM pQosCapability ,
IN PQBSS_LOAD_PARM pQbssLoad ,
IN USHORT LengthVIE ,
IN PNDIS_802_11_VARIABLE_IEs pVIE ) ;
VOID BATableInsertEntry (
IN PRTMP_ADAPTER pAd ,
IN USHORT Aid ,
IN USHORT TimeOutValue ,
IN USHORT StartingSeq ,
IN UCHAR TID ,
IN UCHAR BAWinSize ,
IN UCHAR OriginatorStatus ,
IN BOOLEAN IsRecipient ) ;
VOID BssTableSsidSort (
IN PRTMP_ADAPTER pAd ,
OUT BSS_TABLE * OutTab ,
IN CHAR Ssid [ ] ,
IN UCHAR SsidLen ) ;
VOID BssTableSortByRssi (
IN OUT BSS_TABLE * OutTab ) ;
VOID BssCipherParse (
IN OUT PBSS_ENTRY pBss ) ;
NDIS_STATUS MlmeQueueInit (
IN MLME_QUEUE * Queue ) ;
VOID MlmeQueueDestroy (
IN MLME_QUEUE * Queue ) ;
BOOLEAN MlmeEnqueue (
IN PRTMP_ADAPTER pAd ,
IN ULONG Machine ,
IN ULONG MsgType ,
IN ULONG MsgLen ,
IN VOID * Msg ) ;
BOOLEAN MlmeEnqueueForRecv (
IN PRTMP_ADAPTER pAd ,
IN ULONG Wcid ,
IN ULONG TimeStampHigh ,
IN ULONG TimeStampLow ,
IN UCHAR Rssi0 ,
IN UCHAR Rssi1 ,
IN UCHAR Rssi2 ,
IN ULONG MsgLen ,
IN PVOID Msg ,
IN UCHAR Signal ) ;
BOOLEAN MlmeDequeue (
IN MLME_QUEUE * Queue ,
OUT MLME_QUEUE_ELEM * * Elem ) ;
VOID MlmeRestartStateMachine (
IN PRTMP_ADAPTER pAd ) ;
BOOLEAN MlmeQueueEmpty (
IN MLME_QUEUE * Queue ) ;
BOOLEAN MlmeQueueFull (
IN MLME_QUEUE * Queue ) ;
BOOLEAN MsgTypeSubst (
IN PRTMP_ADAPTER pAd ,
IN PFRAME_802_11 pFrame ,
OUT INT * Machine ,
OUT INT * MsgType ) ;
VOID StateMachineInit (
IN STATE_MACHINE * Sm ,
IN STATE_MACHINE_FUNC Trans [ ] ,
IN ULONG StNr ,
IN ULONG MsgNr ,
IN STATE_MACHINE_FUNC DefFunc ,
IN ULONG InitState ,
IN ULONG Base ) ;
VOID StateMachineSetAction (
IN STATE_MACHINE * S ,
IN ULONG St ,
ULONG Msg ,
IN STATE_MACHINE_FUNC F ) ;
VOID StateMachinePerformAction (
IN PRTMP_ADAPTER pAd ,
IN STATE_MACHINE * S ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID Drop (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID AssocStateMachineInit (
IN PRTMP_ADAPTER pAd ,
IN STATE_MACHINE * Sm ,
OUT STATE_MACHINE_FUNC Trans [ ] ) ;
VOID ReassocTimeout (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
VOID AssocTimeout (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
VOID DisassocTimeout (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
//----------------------------------------------
VOID MlmeAssocReqAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID MlmeReassocReqAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID MlmeDisassocReqAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerAssocRspAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerReassocRspAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerDisassocAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID DisassocTimeoutAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID AssocTimeoutAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID ReassocTimeoutAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID Cls3errAction (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pAddr ) ;
VOID InvalidStateWhenAssoc (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID InvalidStateWhenReassoc (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID InvalidStateWhenDisassociate (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
2009-04-26 14:06:25 +00:00
VOID MlmeCntlConfirm (
IN PRTMP_ADAPTER pAd ,
IN ULONG MsgType ,
IN USHORT Msg ) ;
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_USB //
2008-10-28 21:48:09 +00:00
VOID ComposePsPoll (
IN PRTMP_ADAPTER pAd ) ;
VOID ComposeNullFrame (
IN PRTMP_ADAPTER pAd ) ;
VOID AssocPostProc (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pAddr2 ,
IN USHORT CapabilityInfo ,
IN USHORT Aid ,
IN UCHAR SupRate [ ] ,
IN UCHAR SupRateLen ,
IN UCHAR ExtRate [ ] ,
IN UCHAR ExtRateLen ,
IN PEDCA_PARM pEdcaParm ,
IN HT_CAPABILITY_IE * pHtCapability ,
IN UCHAR HtCapabilityLen ,
IN ADD_HT_INFO_IE * pAddHtInfo ) ;
VOID AuthStateMachineInit (
IN PRTMP_ADAPTER pAd ,
IN PSTATE_MACHINE sm ,
OUT STATE_MACHINE_FUNC Trans [ ] ) ;
VOID AuthTimeout (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
VOID MlmeAuthReqAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerAuthRspAtSeq2Action (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerAuthRspAtSeq4Action (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID AuthTimeoutAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID Cls2errAction (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pAddr ) ;
VOID MlmeDeauthReqAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID InvalidStateWhenAuth (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
//=============================================
VOID AuthRspStateMachineInit (
IN PRTMP_ADAPTER pAd ,
IN PSTATE_MACHINE Sm ,
IN STATE_MACHINE_FUNC Trans [ ] ) ;
VOID PeerDeauthAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerAuthSimpleRspGenAndSend (
IN PRTMP_ADAPTER pAd ,
IN PHEADER_802_11 pHdr80211 ,
IN USHORT Alg ,
IN USHORT Seq ,
IN USHORT Reason ,
IN USHORT Status ) ;
//
// Private routines in dls.c
//
//========================================
VOID SyncStateMachineInit (
IN PRTMP_ADAPTER pAd ,
IN STATE_MACHINE * Sm ,
OUT STATE_MACHINE_FUNC Trans [ ] ) ;
VOID BeaconTimeout (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
VOID ScanTimeout (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
VOID InvalidStateWhenScan (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID InvalidStateWhenJoin (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID InvalidStateWhenStart (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID EnqueueProbeRequest (
IN PRTMP_ADAPTER pAd ) ;
BOOLEAN ScanRunning (
IN PRTMP_ADAPTER pAd ) ;
//=========================================
VOID MlmeCntlInit (
IN PRTMP_ADAPTER pAd ,
IN STATE_MACHINE * S ,
OUT STATE_MACHINE_FUNC Trans [ ] ) ;
VOID MlmeCntlMachinePerformAction (
IN PRTMP_ADAPTER pAd ,
IN STATE_MACHINE * S ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID CntlIdleProc (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID CntlOidScanProc (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID CntlOidSsidProc (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID CntlOidRTBssidProc (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID CntlMlmeRoamingProc (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID CntlWaitDisassocProc (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID CntlWaitJoinProc (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID CntlWaitReassocProc (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID CntlWaitStartProc (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID CntlWaitAuthProc (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID CntlWaitAuthProc2 (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID CntlWaitAssocProc (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID LinkUp (
IN PRTMP_ADAPTER pAd ,
IN UCHAR BssType ) ;
VOID LinkDown (
IN PRTMP_ADAPTER pAd ,
IN BOOLEAN IsReqFromAP ) ;
VOID IterateOnBssTab (
IN PRTMP_ADAPTER pAd ) ;
VOID IterateOnBssTab2 (
IN PRTMP_ADAPTER pAd ) ; ;
VOID JoinParmFill (
IN PRTMP_ADAPTER pAd ,
IN OUT MLME_JOIN_REQ_STRUCT * JoinReq ,
IN ULONG BssIdx ) ;
VOID AssocParmFill (
IN PRTMP_ADAPTER pAd ,
IN OUT MLME_ASSOC_REQ_STRUCT * AssocReq ,
IN PUCHAR pAddr ,
IN USHORT CapabilityInfo ,
IN ULONG Timeout ,
IN USHORT ListenIntv ) ;
VOID ScanParmFill (
IN PRTMP_ADAPTER pAd ,
IN OUT MLME_SCAN_REQ_STRUCT * ScanReq ,
2009-09-22 18:44:07 +00:00
IN STRING Ssid [ ] ,
2008-10-28 21:48:09 +00:00
IN UCHAR SsidLen ,
IN UCHAR BssType ,
IN UCHAR ScanType ) ;
VOID DisassocParmFill (
IN PRTMP_ADAPTER pAd ,
IN OUT MLME_DISASSOC_REQ_STRUCT * DisassocReq ,
IN PUCHAR pAddr ,
IN USHORT Reason ) ;
VOID StartParmFill (
IN PRTMP_ADAPTER pAd ,
IN OUT MLME_START_REQ_STRUCT * StartReq ,
IN CHAR Ssid [ ] ,
IN UCHAR SsidLen ) ;
VOID AuthParmFill (
IN PRTMP_ADAPTER pAd ,
IN OUT MLME_AUTH_REQ_STRUCT * AuthReq ,
IN PUCHAR pAddr ,
IN USHORT Alg ) ;
VOID EnqueuePsPoll (
IN PRTMP_ADAPTER pAd ) ;
VOID EnqueueBeaconFrame (
IN PRTMP_ADAPTER pAd ) ;
VOID MlmeJoinReqAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID MlmeScanReqAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID MlmeStartReqAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID ScanTimeoutAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID BeaconTimeoutAtJoinAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerBeaconAtScanAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerBeaconAtJoinAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerBeacon (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerProbeReqAction (
IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
VOID ScanNextChannel (
IN PRTMP_ADAPTER pAd ) ;
ULONG MakeIbssBeacon (
IN PRTMP_ADAPTER pAd ) ;
BOOLEAN MlmeScanReqSanity (
IN PRTMP_ADAPTER pAd ,
IN VOID * Msg ,
IN ULONG MsgLen ,
OUT UCHAR * BssType ,
OUT CHAR ssid [ ] ,
OUT UCHAR * SsidLen ,
OUT UCHAR * ScanType ) ;
BOOLEAN PeerBeaconAndProbeRspSanity (
IN PRTMP_ADAPTER pAd ,
IN VOID * Msg ,
IN ULONG MsgLen ,
IN UCHAR MsgChannel ,
OUT PUCHAR pAddr2 ,
OUT PUCHAR pBssid ,
OUT CHAR Ssid [ ] ,
OUT UCHAR * pSsidLen ,
OUT UCHAR * pBssType ,
OUT USHORT * pBeaconPeriod ,
OUT UCHAR * pChannel ,
OUT UCHAR * pNewChannel ,
OUT LARGE_INTEGER * pTimestamp ,
OUT CF_PARM * pCfParm ,
OUT USHORT * pAtimWin ,
OUT USHORT * pCapabilityInfo ,
OUT UCHAR * pErp ,
OUT UCHAR * pDtimCount ,
OUT UCHAR * pDtimPeriod ,
OUT UCHAR * pBcastFlag ,
OUT UCHAR * pMessageToMe ,
OUT UCHAR SupRate [ ] ,
OUT UCHAR * pSupRateLen ,
OUT UCHAR ExtRate [ ] ,
OUT UCHAR * pExtRateLen ,
OUT UCHAR * pCkipFlag ,
OUT UCHAR * pAironetCellPowerLimit ,
OUT PEDCA_PARM pEdcaParm ,
OUT PQBSS_LOAD_PARM pQbssLoad ,
OUT PQOS_CAPABILITY_PARM pQosCapability ,
OUT ULONG * pRalinkIe ,
OUT UCHAR * pHtCapabilityLen ,
OUT UCHAR * pPreNHtCapabilityLen ,
OUT HT_CAPABILITY_IE * pHtCapability ,
OUT UCHAR * AddHtInfoLen ,
OUT ADD_HT_INFO_IE * AddHtInfo ,
OUT UCHAR * NewExtChannel ,
OUT USHORT * LengthVIE ,
OUT PNDIS_802_11_VARIABLE_IEs pVIE ) ;
BOOLEAN PeerAddBAReqActionSanity (
IN PRTMP_ADAPTER pAd ,
IN VOID * pMsg ,
IN ULONG MsgLen ,
OUT PUCHAR pAddr2 ) ;
BOOLEAN PeerAddBARspActionSanity (
IN PRTMP_ADAPTER pAd ,
IN VOID * pMsg ,
IN ULONG MsgLen ) ;
BOOLEAN PeerDelBAActionSanity (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Wcid ,
IN VOID * pMsg ,
IN ULONG MsgLen ) ;
BOOLEAN MlmeAssocReqSanity (
IN PRTMP_ADAPTER pAd ,
IN VOID * Msg ,
IN ULONG MsgLen ,
OUT PUCHAR pApAddr ,
OUT USHORT * CapabilityInfo ,
OUT ULONG * Timeout ,
OUT USHORT * ListenIntv ) ;
BOOLEAN MlmeAuthReqSanity (
IN PRTMP_ADAPTER pAd ,
IN VOID * Msg ,
IN ULONG MsgLen ,
OUT PUCHAR pAddr ,
OUT ULONG * Timeout ,
OUT USHORT * Alg ) ;
BOOLEAN MlmeStartReqSanity (
IN PRTMP_ADAPTER pAd ,
IN VOID * Msg ,
IN ULONG MsgLen ,
OUT CHAR Ssid [ ] ,
OUT UCHAR * Ssidlen ) ;
BOOLEAN PeerAuthSanity (
IN PRTMP_ADAPTER pAd ,
IN VOID * Msg ,
IN ULONG MsgLen ,
OUT PUCHAR pAddr ,
OUT USHORT * Alg ,
OUT USHORT * Seq ,
OUT USHORT * Status ,
OUT CHAR ChlgText [ ] ) ;
BOOLEAN PeerAssocRspSanity (
IN PRTMP_ADAPTER pAd ,
IN VOID * pMsg ,
IN ULONG MsgLen ,
OUT PUCHAR pAddr2 ,
OUT USHORT * pCapabilityInfo ,
OUT USHORT * pStatus ,
OUT USHORT * pAid ,
OUT UCHAR SupRate [ ] ,
OUT UCHAR * pSupRateLen ,
OUT UCHAR ExtRate [ ] ,
OUT UCHAR * pExtRateLen ,
OUT HT_CAPABILITY_IE * pHtCapability ,
OUT ADD_HT_INFO_IE * pAddHtInfo , // AP might use this additional ht info IE
OUT UCHAR * pHtCapabilityLen ,
OUT UCHAR * pAddHtInfoLen ,
OUT UCHAR * pNewExtChannelOffset ,
OUT PEDCA_PARM pEdcaParm ,
OUT UCHAR * pCkipFlag ) ;
BOOLEAN PeerDisassocSanity (
IN PRTMP_ADAPTER pAd ,
IN VOID * Msg ,
IN ULONG MsgLen ,
OUT PUCHAR pAddr2 ,
OUT USHORT * Reason ) ;
2009-09-22 18:44:07 +00:00
BOOLEAN PeerWpaMessageSanity (
IN PRTMP_ADAPTER pAd ,
IN PEAPOL_PACKET pMsg ,
IN ULONG MsgLen ,
IN UCHAR MsgType ,
IN MAC_TABLE_ENTRY * pEntry ) ;
2008-10-28 21:48:09 +00:00
BOOLEAN PeerDeauthSanity (
IN PRTMP_ADAPTER pAd ,
IN VOID * Msg ,
IN ULONG MsgLen ,
OUT PUCHAR pAddr2 ,
OUT USHORT * Reason ) ;
BOOLEAN PeerProbeReqSanity (
IN PRTMP_ADAPTER pAd ,
IN VOID * Msg ,
IN ULONG MsgLen ,
OUT PUCHAR pAddr2 ,
OUT CHAR Ssid [ ] ,
OUT UCHAR * pSsidLen ) ;
BOOLEAN GetTimBit (
IN CHAR * Ptr ,
IN USHORT Aid ,
OUT UCHAR * TimLen ,
OUT UCHAR * BcastFlag ,
OUT UCHAR * DtimCount ,
OUT UCHAR * DtimPeriod ,
OUT UCHAR * MessageToMe ) ;
UCHAR ChannelSanity (
IN PRTMP_ADAPTER pAd ,
IN UCHAR channel ) ;
NDIS_802_11_NETWORK_TYPE NetworkTypeInUseSanity (
IN PBSS_ENTRY pBss ) ;
BOOLEAN MlmeDelBAReqSanity (
IN PRTMP_ADAPTER pAd ,
IN VOID * Msg ,
IN ULONG MsgLen ) ;
BOOLEAN MlmeAddBAReqSanity (
IN PRTMP_ADAPTER pAd ,
IN VOID * Msg ,
IN ULONG MsgLen ,
OUT PUCHAR pAddr2 ) ;
ULONG MakeOutgoingFrame (
2009-09-22 18:44:07 +00:00
OUT UCHAR * Buffer ,
2008-10-28 21:48:09 +00:00
OUT ULONG * Length , . . . ) ;
VOID LfsrInit (
IN PRTMP_ADAPTER pAd ,
IN ULONG Seed ) ;
UCHAR RandomByte (
IN PRTMP_ADAPTER pAd ) ;
VOID AsicUpdateAutoFallBackTable (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pTxRate ) ;
VOID MlmePeriodicExec (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
VOID LinkDownExec (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
VOID STAMlmePeriodicExec (
PRTMP_ADAPTER pAd ) ;
VOID MlmeAutoScan (
IN PRTMP_ADAPTER pAd ) ;
VOID MlmeAutoReconnectLastSSID (
IN PRTMP_ADAPTER pAd ) ;
BOOLEAN MlmeValidateSSID (
IN PUCHAR pSsid ,
IN UCHAR SsidLen ) ;
VOID MlmeCheckForRoaming (
IN PRTMP_ADAPTER pAd ,
IN ULONG Now32 ) ;
2009-09-22 18:44:07 +00:00
BOOLEAN MlmeCheckForFastRoaming (
IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
VOID MlmeDynamicTxRateSwitching (
IN PRTMP_ADAPTER pAd ) ;
VOID MlmeSetTxRate (
IN PRTMP_ADAPTER pAd ,
IN PMAC_TABLE_ENTRY pEntry ,
IN PRTMP_TX_RATE_SWITCH pTxRate ) ;
VOID MlmeSelectTxRateTable (
IN PRTMP_ADAPTER pAd ,
IN PMAC_TABLE_ENTRY pEntry ,
IN PUCHAR * ppTable ,
IN PUCHAR pTableSize ,
IN PUCHAR pInitTxRateIdx ) ;
VOID MlmeCalculateChannelQuality (
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN PMAC_TABLE_ENTRY pMacEntry ,
2008-10-28 21:48:09 +00:00
IN ULONG Now ) ;
VOID MlmeCheckPsmChange (
IN PRTMP_ADAPTER pAd ,
IN ULONG Now32 ) ;
VOID MlmeSetPsmBit (
IN PRTMP_ADAPTER pAd ,
IN USHORT psm ) ;
VOID MlmeSetTxPreamble (
IN PRTMP_ADAPTER pAd ,
IN USHORT TxPreamble ) ;
VOID UpdateBasicRateBitmap (
IN PRTMP_ADAPTER pAd ) ;
VOID MlmeUpdateTxRates (
IN PRTMP_ADAPTER pAd ,
IN BOOLEAN bLinkUp ,
IN UCHAR apidx ) ;
VOID MlmeUpdateHtTxRates (
IN PRTMP_ADAPTER pAd ,
IN UCHAR apidx ) ;
VOID RTMPCheckRates (
IN PRTMP_ADAPTER pAd ,
IN OUT UCHAR SupRate [ ] ,
IN OUT UCHAR * SupRateLen ) ;
BOOLEAN RTMPCheckChannel (
IN PRTMP_ADAPTER pAd ,
IN UCHAR CentralChannel ,
IN UCHAR Channel ) ;
BOOLEAN RTMPCheckHt (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Wcid ,
IN OUT HT_CAPABILITY_IE * pHtCapability ,
IN OUT ADD_HT_INFO_IE * pAddHtInfo ) ;
VOID StaQuickResponeForRateUpExec (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
VOID RTMPUpdateMlmeRate (
IN PRTMP_ADAPTER pAd ) ;
CHAR RTMPMaxRssi (
IN PRTMP_ADAPTER pAd ,
IN CHAR Rssi0 ,
IN CHAR Rssi1 ,
IN CHAR Rssi2 ) ;
2009-09-22 18:44:07 +00:00
# ifdef RT30xx
2009-04-26 14:06:25 +00:00
VOID AsicSetRxAnt (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Ant ) ;
2009-09-22 18:44:07 +00:00
VOID RTMPFilterCalibration (
IN PRTMP_ADAPTER pAd ) ;
# ifdef RTMP_EFUSE_SUPPORT
//2008/09/11:KH add to support efuse<--
INT set_eFuseGetFreeBlockCount_Proc (
IN PRTMP_ADAPTER pAd ,
IN PSTRING arg ) ;
INT set_eFusedump_Proc (
IN PRTMP_ADAPTER pAd ,
IN PSTRING arg ) ;
VOID eFusePhysicalReadRegisters (
IN PRTMP_ADAPTER pAd ,
IN USHORT Offset ,
IN USHORT Length ,
OUT USHORT * pData ) ;
int RtmpEfuseSupportCheck (
IN RTMP_ADAPTER * pAd ) ;
VOID eFuseGetFreeBlockCount ( IN PRTMP_ADAPTER pAd ,
PUINT EfuseFreeBlock ) ;
INT eFuse_init (
IN PRTMP_ADAPTER pAd ) ;
//2008/09/11:KH add to support efuse-->
# endif // RTMP_EFUSE_SUPPORT //
// add by johnli, RF power sequence setup
VOID RT30xxLoadRFNormalModeSetup (
IN PRTMP_ADAPTER pAd ) ;
VOID RT30xxLoadRFSleepModeSetup (
IN PRTMP_ADAPTER pAd ) ;
VOID RT30xxReverseRFSleepModeSetup (
IN PRTMP_ADAPTER pAd ) ;
// end johnli
# ifdef RT3070
VOID NICInitRT3070RFRegisters (
IN RTMP_ADAPTER * pAd ) ;
# endif // RT3070 //
2009-09-22 18:44:24 +00:00
# ifdef RT3090
VOID NICInitRT3090RFRegisters (
IN RTMP_ADAPTER * pAd ) ;
# endif // RT3090 //
2009-09-22 18:44:07 +00:00
VOID RT30xxHaltAction (
IN PRTMP_ADAPTER pAd ) ;
VOID RT30xxSetRxAnt (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Ant ) ;
# endif // RT30xx //
2008-10-28 21:48:09 +00:00
VOID AsicEvaluateRxAnt (
IN PRTMP_ADAPTER pAd ) ;
VOID AsicRxAntEvalTimeout (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
VOID APSDPeriodicExec (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
BOOLEAN RTMPCheckEntryEnableAutoRateSwitch (
IN PRTMP_ADAPTER pAd ,
IN PMAC_TABLE_ENTRY pEntry ) ;
UCHAR RTMPStaFixedTxMode (
IN PRTMP_ADAPTER pAd ,
IN PMAC_TABLE_ENTRY pEntry ) ;
VOID RTMPUpdateLegacyTxSetting (
UCHAR fixed_tx_mode ,
PMAC_TABLE_ENTRY pEntry ) ;
BOOLEAN RTMPAutoRateSwitchCheck (
IN PRTMP_ADAPTER pAd ) ;
NDIS_STATUS MlmeInit (
IN PRTMP_ADAPTER pAd ) ;
VOID MlmeHandler (
IN PRTMP_ADAPTER pAd ) ;
VOID MlmeHalt (
IN PRTMP_ADAPTER pAd ) ;
VOID MlmeResetRalinkCounters (
IN PRTMP_ADAPTER pAd ) ;
VOID BuildChannelList (
IN PRTMP_ADAPTER pAd ) ;
UCHAR FirstChannel (
IN PRTMP_ADAPTER pAd ) ;
UCHAR NextChannel (
IN PRTMP_ADAPTER pAd ,
IN UCHAR channel ) ;
VOID ChangeToCellPowerLimit (
IN PRTMP_ADAPTER pAd ,
IN UCHAR AironetCellPowerLimit ) ;
//
// Prototypes of function definition in rtmp_tkip.c
//
VOID RTMPInitTkipEngine (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pTKey ,
IN UCHAR KeyId ,
IN PUCHAR pTA ,
IN PUCHAR pMICKey ,
IN PUCHAR pTSC ,
OUT PULONG pIV16 ,
OUT PULONG pIV32 ) ;
VOID RTMPInitMICEngine (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pKey ,
IN PUCHAR pDA ,
IN PUCHAR pSA ,
IN UCHAR UserPriority ,
IN PUCHAR pMICKey ) ;
BOOLEAN RTMPTkipCompareMICValue (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pSrc ,
IN PUCHAR pDA ,
IN PUCHAR pSA ,
IN PUCHAR pMICKey ,
IN UCHAR UserPriority ,
IN UINT Len ) ;
VOID RTMPCalculateMICValue (
IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET pPacket ,
IN PUCHAR pEncap ,
IN PCIPHER_KEY pKey ,
IN UCHAR apidx ) ;
VOID RTMPTkipAppendByte (
IN PTKIP_KEY_INFO pTkip ,
IN UCHAR uChar ) ;
VOID RTMPTkipAppend (
IN PTKIP_KEY_INFO pTkip ,
IN PUCHAR pSrc ,
IN UINT nBytes ) ;
VOID RTMPTkipGetMIC (
IN PTKIP_KEY_INFO pTkip ) ;
BOOLEAN RTMPSoftDecryptTKIP (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pData ,
IN ULONG DataByteCnt ,
IN UCHAR UserPriority ,
IN PCIPHER_KEY pWpaKey ) ;
BOOLEAN RTMPSoftDecryptAES (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pData ,
IN ULONG DataByteCnt ,
IN PCIPHER_KEY pWpaKey ) ;
2009-09-22 18:44:07 +00:00
//
// Prototypes of function definition in cmm_info.c
//
INT RT_CfgSetCountryRegion (
IN PRTMP_ADAPTER pAd ,
IN PSTRING arg ,
IN INT band ) ;
INT RT_CfgSetWirelessMode (
IN PRTMP_ADAPTER pAd ,
IN PSTRING arg ) ;
INT RT_CfgSetShortSlot (
IN PRTMP_ADAPTER pAd ,
IN PSTRING arg ) ;
INT RT_CfgSetWepKey (
IN PRTMP_ADAPTER pAd ,
IN PSTRING keyString ,
IN CIPHER_KEY * pSharedKey ,
IN INT keyIdx ) ;
INT RT_CfgSetWPAPSKKey (
IN RTMP_ADAPTER * pAd ,
IN PSTRING keyString ,
IN UCHAR * pHashStr ,
IN INT hashStrLen ,
OUT PUCHAR pPMKBuf ) ;
2008-10-28 21:48:09 +00:00
//
// Prototypes of function definition in cmm_info.c
//
VOID RTMPWPARemoveAllKeys (
IN PRTMP_ADAPTER pAd ) ;
VOID RTMPSetPhyMode (
IN PRTMP_ADAPTER pAd ,
IN ULONG phymode ) ;
VOID RTMPUpdateHTIE (
IN RT_HT_CAPABILITY * pRtHt ,
IN UCHAR * pMcsSet ,
OUT HT_CAPABILITY_IE * pHtCapability ,
OUT ADD_HT_INFO_IE * pAddHtInfo ) ;
VOID RTMPAddWcidAttributeEntry (
IN PRTMP_ADAPTER pAd ,
IN UCHAR BssIdx ,
IN UCHAR KeyIdx ,
IN UCHAR CipherAlg ,
IN MAC_TABLE_ENTRY * pEntry ) ;
2009-09-22 18:44:07 +00:00
PSTRING GetEncryptType (
2008-10-28 21:48:09 +00:00
CHAR enc ) ;
2009-09-22 18:44:07 +00:00
PSTRING GetAuthMode (
2008-10-28 21:48:09 +00:00
CHAR auth ) ;
VOID RTMPSetHT (
IN PRTMP_ADAPTER pAd ,
IN OID_SET_HT_PHYMODE * pHTPhyMode ) ;
VOID RTMPSetIndividualHT (
IN PRTMP_ADAPTER pAd ,
IN UCHAR apidx ) ;
VOID RTMPSendWirelessEvent (
IN PRTMP_ADAPTER pAd ,
IN USHORT Event_flag ,
IN PUCHAR pAddr ,
IN UCHAR BssIdx ,
IN CHAR Rssi ) ;
2009-09-22 18:44:07 +00:00
CHAR ConvertToRssi (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN CHAR Rssi ,
IN UCHAR RssiNumber ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
/*===================================
Function prototype in cmm_wpa . c
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
2008-10-28 21:48:09 +00:00
VOID RTMPToWirelessSta (
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN PMAC_TABLE_ENTRY pEntry ,
2008-10-28 21:48:09 +00:00
IN PUCHAR pHeader802_3 ,
IN UINT HdrLen ,
IN PUCHAR pData ,
IN UINT DataLen ,
2009-09-22 18:44:07 +00:00
IN BOOLEAN bClearFrame ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
VOID WpaDerivePTK (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ,
IN UCHAR * PMK ,
IN UCHAR * ANonce ,
IN UCHAR * AA ,
IN UCHAR * SNonce ,
IN UCHAR * SA ,
OUT UCHAR * output ,
IN UINT len ) ;
VOID GenRandom (
IN PRTMP_ADAPTER pAd ,
IN UCHAR * macAddr ,
OUT UCHAR * random ) ;
2009-09-22 18:44:07 +00:00
BOOLEAN RTMPCheckWPAframe (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN PMAC_TABLE_ENTRY pEntry ,
IN PUCHAR pData ,
IN ULONG DataByteCount ,
IN UCHAR FromWhichBSSID ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
VOID AES_GTK_KEY_UNWRAP (
IN UCHAR * key ,
OUT UCHAR * plaintext ,
IN UINT32 c_len ,
IN UCHAR * ciphertext ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
BOOLEAN RTMPParseEapolKeyData (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pKeyData ,
IN UCHAR KeyDataLen ,
IN UCHAR GroupKeyIndex ,
IN UCHAR MsgType ,
IN BOOLEAN bWPA2 ,
IN MAC_TABLE_ENTRY * pEntry ) ;
VOID ConstructEapolMsg (
IN PMAC_TABLE_ENTRY pEntry ,
IN UCHAR GroupKeyWepStatus ,
IN UCHAR MsgType ,
IN UCHAR DefaultKeyIdx ,
IN UCHAR * KeyNonce ,
IN UCHAR * TxRSC ,
IN UCHAR * GTK ,
IN UCHAR * RSNIE ,
IN UCHAR RSNIE_Len ,
OUT PEAPOL_PACKET pMsg ) ;
NDIS_STATUS RTMPSoftDecryptBroadCastData (
IN PRTMP_ADAPTER pAd ,
IN RX_BLK * pRxBlk ,
IN NDIS_802_11_ENCRYPTION_STATUS GroupCipher ,
IN PCIPHER_KEY pShard_key ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
VOID RTMPMakeRSNIE (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN UINT AuthMode ,
IN UINT WepStatus ,
IN UCHAR apidx ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
//
// function prototype in ap_wpa.c
//
VOID RTMPGetTxTscFromAsic (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN UCHAR apidx ,
OUT PUCHAR pTxTsc ) ;
VOID APInstallPairwiseKey (
PRTMP_ADAPTER pAd ,
PMAC_TABLE_ENTRY pEntry ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
UINT APValidateRSNIE (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN PMAC_TABLE_ENTRY pEntry ,
IN PUCHAR pRsnIe ,
IN UCHAR rsnie_len ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
VOID HandleCounterMeasure (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN MAC_TABLE_ENTRY * pEntry ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
VOID WPAStart4WayHS (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN MAC_TABLE_ENTRY * pEntry ,
IN ULONG TimeInterval ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
VOID WPAStart2WayGroupHS (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN MAC_TABLE_ENTRY * pEntry ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
VOID PeerPairMsg1Action (
IN PRTMP_ADAPTER pAd ,
IN MAC_TABLE_ENTRY * pEntry ,
IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
VOID PeerPairMsg2Action (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN MAC_TABLE_ENTRY * pEntry ,
IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
VOID PeerPairMsg3Action (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN MAC_TABLE_ENTRY * pEntry ,
IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
VOID PeerPairMsg4Action (
IN PRTMP_ADAPTER pAd ,
IN MAC_TABLE_ENTRY * pEntry ,
IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
VOID PeerGroupMsg1Action (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN PMAC_TABLE_ENTRY pEntry ,
IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
VOID PeerGroupMsg2Action (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ,
IN PMAC_TABLE_ENTRY pEntry ,
2009-09-22 18:44:07 +00:00
IN VOID * Msg ,
IN UINT MsgLen ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
VOID WpaDeriveGTK (
IN UCHAR * PMK ,
IN UCHAR * GNonce ,
IN UCHAR * AA ,
OUT UCHAR * output ,
IN UINT len ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
VOID AES_GTK_KEY_WRAP (
IN UCHAR * key ,
IN UCHAR * plaintext ,
IN UINT32 p_len ,
OUT UCHAR * ciphertext ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
//typedef void (*TIMER_FUNCTION)(unsigned long);
2008-10-28 21:48:09 +00:00
/* timeout -- ms */
VOID RTMP_SetPeriodicTimer (
IN NDIS_MINIPORT_TIMER * pTimer ,
IN unsigned long timeout ) ;
VOID RTMP_OS_Init_Timer (
IN PRTMP_ADAPTER pAd ,
IN NDIS_MINIPORT_TIMER * pTimer ,
IN TIMER_FUNCTION function ,
IN PVOID data ) ;
VOID RTMP_OS_Add_Timer (
IN NDIS_MINIPORT_TIMER * pTimer ,
IN unsigned long timeout ) ;
VOID RTMP_OS_Mod_Timer (
IN NDIS_MINIPORT_TIMER * pTimer ,
IN unsigned long timeout ) ;
VOID RTMP_OS_Del_Timer (
IN NDIS_MINIPORT_TIMER * pTimer ,
OUT BOOLEAN * pCancelled ) ;
VOID RTMP_OS_Release_Packet (
IN PRTMP_ADAPTER pAd ,
IN PQUEUE_ENTRY pEntry ) ;
VOID RTMPusecDelay (
IN ULONG usec ) ;
NDIS_STATUS os_alloc_mem (
2009-09-22 18:44:07 +00:00
IN RTMP_ADAPTER * pAd ,
OUT UCHAR * * mem ,
2008-10-28 21:48:09 +00:00
IN ULONG size ) ;
NDIS_STATUS os_free_mem (
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN PVOID mem ) ;
2008-10-28 21:48:09 +00:00
void RTMP_AllocateSharedMemory (
IN PRTMP_ADAPTER pAd ,
IN ULONG Length ,
IN BOOLEAN Cached ,
OUT PVOID * VirtualAddress ,
OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress ) ;
VOID RTMPFreeTxRxRingMemory (
IN PRTMP_ADAPTER pAd ) ;
NDIS_STATUS AdapterBlockAllocateMemory (
IN PVOID handle ,
OUT PVOID * ppAd ) ;
void RTMP_AllocateTxDescMemory (
IN PRTMP_ADAPTER pAd ,
IN UINT Index ,
IN ULONG Length ,
IN BOOLEAN Cached ,
OUT PVOID * VirtualAddress ,
OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress ) ;
void RTMP_AllocateFirstTxBuffer (
IN PRTMP_ADAPTER pAd ,
IN UINT Index ,
IN ULONG Length ,
IN BOOLEAN Cached ,
OUT PVOID * VirtualAddress ,
OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress ) ;
2009-09-22 18:44:07 +00:00
void RTMP_FreeFirstTxBuffer (
IN PRTMP_ADAPTER pAd ,
IN ULONG Length ,
IN BOOLEAN Cached ,
IN PVOID VirtualAddress ,
IN NDIS_PHYSICAL_ADDRESS PhysicalAddress ) ;
2008-10-28 21:48:09 +00:00
void RTMP_AllocateMgmtDescMemory (
IN PRTMP_ADAPTER pAd ,
IN ULONG Length ,
IN BOOLEAN Cached ,
OUT PVOID * VirtualAddress ,
OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress ) ;
void RTMP_AllocateRxDescMemory (
IN PRTMP_ADAPTER pAd ,
IN ULONG Length ,
IN BOOLEAN Cached ,
OUT PVOID * VirtualAddress ,
OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress ) ;
2009-09-22 18:44:07 +00:00
void RTMP_FreeDescMemory (
IN PRTMP_ADAPTER pAd ,
IN ULONG Length ,
IN PVOID VirtualAddress ,
IN NDIS_PHYSICAL_ADDRESS PhysicalAddress ) ;
PNDIS_PACKET RtmpOSNetPktAlloc (
IN RTMP_ADAPTER * pAd ,
IN int size ) ;
2008-10-28 21:48:09 +00:00
PNDIS_PACKET RTMP_AllocateRxPacketBuffer (
IN PRTMP_ADAPTER pAd ,
IN ULONG Length ,
IN BOOLEAN Cached ,
OUT PVOID * VirtualAddress ,
OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress ) ;
PNDIS_PACKET RTMP_AllocateTxPacketBuffer (
IN PRTMP_ADAPTER pAd ,
IN ULONG Length ,
IN BOOLEAN Cached ,
OUT PVOID * VirtualAddress ) ;
PNDIS_PACKET RTMP_AllocateFragPacketBuffer (
IN PRTMP_ADAPTER pAd ,
IN ULONG Length ) ;
void RTMP_QueryPacketInfo (
IN PNDIS_PACKET pPacket ,
OUT PACKET_INFO * pPacketInfo ,
OUT PUCHAR * pSrcBufVA ,
OUT UINT * pSrcBufLen ) ;
void RTMP_QueryNextPacketInfo (
IN PNDIS_PACKET * ppPacket ,
OUT PACKET_INFO * pPacketInfo ,
OUT PUCHAR * pSrcBufVA ,
OUT UINT * pSrcBufLen ) ;
BOOLEAN RTMP_FillTxBlkInfo (
IN RTMP_ADAPTER * pAd ,
IN TX_BLK * pTxBlk ) ;
PRTMP_SCATTER_GATHER_LIST
rt_get_sg_list_from_packet ( PNDIS_PACKET pPacket , RTMP_SCATTER_GATHER_LIST * sg ) ;
void announce_802_3_packet (
IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET pPacket ) ;
UINT BA_Reorder_AMSDU_Annnounce (
IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET pPacket ) ;
PNET_DEV get_netdev_from_bssid (
IN PRTMP_ADAPTER pAd ,
IN UCHAR FromWhichBSSID ) ;
PNDIS_PACKET duplicate_pkt (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pHeader802_3 ,
IN UINT HdrLen ,
IN PUCHAR pData ,
IN ULONG DataSize ,
IN UCHAR FromWhichBSSID ) ;
PNDIS_PACKET duplicate_pkt_with_TKIP_MIC (
IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET pOldPkt ) ;
void ba_flush_reordering_timeout_mpdus (
IN PRTMP_ADAPTER pAd ,
IN PBA_REC_ENTRY pBAEntry ,
IN ULONG Now32 ) ;
VOID BAOriSessionSetUp (
IN PRTMP_ADAPTER pAd ,
IN MAC_TABLE_ENTRY * pEntry ,
IN UCHAR TID ,
IN USHORT TimeOut ,
IN ULONG DelayTime ,
IN BOOLEAN isForced ) ;
VOID BASessionTearDownALL (
IN OUT PRTMP_ADAPTER pAd ,
IN UCHAR Wcid ) ;
BOOLEAN OS_Need_Clone_Packet ( void ) ;
VOID build_tx_packet (
IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET pPacket ,
IN PUCHAR pFrame ,
IN ULONG FrameLen ) ;
VOID BAOriSessionTearDown (
IN OUT PRTMP_ADAPTER pAd ,
IN UCHAR Wcid ,
IN UCHAR TID ,
IN BOOLEAN bPassive ,
IN BOOLEAN bForceSend ) ;
VOID BARecSessionTearDown (
IN OUT PRTMP_ADAPTER pAd ,
IN UCHAR Wcid ,
IN UCHAR TID ,
IN BOOLEAN bPassive ) ;
BOOLEAN ba_reordering_resource_init ( PRTMP_ADAPTER pAd , int num ) ;
void ba_reordering_resource_release ( PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
PSTRING rstrtok (
IN PSTRING s ,
IN const PSTRING ct ) ;
2008-10-28 21:48:09 +00:00
////////// common ioctl functions //////////
INT SetCommonHT (
IN PRTMP_ADAPTER pAd ) ;
INT WpaCheckEapCode (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pFrame ,
IN USHORT FrameLen ,
IN USHORT OffSet ) ;
VOID WpaSendMicFailureToWpaSupplicant (
IN PRTMP_ADAPTER pAd ,
IN BOOLEAN bUnicast ) ;
int wext_notify_event_assoc (
IN RTMP_ADAPTER * pAd ) ;
BOOLEAN STARxDoneInterruptHandle (
IN PRTMP_ADAPTER pAd ,
IN BOOLEAN argc ) ;
// AMPDU packet indication
VOID Indicate_AMPDU_Packet (
IN PRTMP_ADAPTER pAd ,
IN RX_BLK * pRxBlk ,
IN UCHAR FromWhichBSSID ) ;
// AMSDU packet indication
VOID Indicate_AMSDU_Packet (
IN PRTMP_ADAPTER pAd ,
IN RX_BLK * pRxBlk ,
IN UCHAR FromWhichBSSID ) ;
// Normal legacy Rx packet indication
VOID Indicate_Legacy_Packet (
IN PRTMP_ADAPTER pAd ,
IN RX_BLK * pRxBlk ,
IN UCHAR FromWhichBSSID ) ;
VOID Indicate_EAPOL_Packet (
IN PRTMP_ADAPTER pAd ,
IN RX_BLK * pRxBlk ,
IN UCHAR FromWhichBSSID ) ;
void update_os_packet_info (
IN PRTMP_ADAPTER pAd ,
IN RX_BLK * pRxBlk ,
IN UCHAR FromWhichBSSID ) ;
void wlan_802_11_to_802_3_packet (
IN PRTMP_ADAPTER pAd ,
IN RX_BLK * pRxBlk ,
IN PUCHAR pHeader802_3 ,
IN UCHAR FromWhichBSSID ) ;
// remove LLC and get 802_3 Header
# define RTMP_802_11_REMOVE_LLC_AND_CONVERT_TO_802_3(_pRxBlk, _pHeader802_3) \
{ \
PUCHAR _pRemovedLLCSNAP = NULL , _pDA , _pSA ; \
\
if ( RX_BLK_TEST_FLAG ( _pRxBlk , fRX_MESH ) ) \
{ \
_pDA = _pRxBlk - > pHeader - > Addr3 ; \
_pSA = ( PUCHAR ) _pRxBlk - > pHeader + sizeof ( HEADER_802_11 ) ; \
} \
else \
{ \
if ( RX_BLK_TEST_FLAG ( _pRxBlk , fRX_INFRA ) ) \
{ \
_pDA = _pRxBlk - > pHeader - > Addr1 ; \
if ( RX_BLK_TEST_FLAG ( _pRxBlk , fRX_DLS ) ) \
_pSA = _pRxBlk - > pHeader - > Addr2 ; \
else \
_pSA = _pRxBlk - > pHeader - > Addr3 ; \
} \
else \
{ \
_pDA = _pRxBlk - > pHeader - > Addr1 ; \
_pSA = _pRxBlk - > pHeader - > Addr2 ; \
} \
} \
\
CONVERT_TO_802_3 ( _pHeader802_3 , _pDA , _pSA , _pRxBlk - > pData , \
_pRxBlk - > DataSize , _pRemovedLLCSNAP ) ; \
}
VOID Sta_Announce_or_Forward_802_3_Packet (
IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET pPacket ,
IN UCHAR FromWhichBSSID ) ;
# define ANNOUNCE_OR_FORWARD_802_3_PACKET(_pAd, _pPacket, _FromWhichBSS)\
Sta_Announce_or_Forward_802_3_Packet ( _pAd , _pPacket , _FromWhichBSS ) ;
//announce_802_3_packet(_pAd, _pPacket);
PNDIS_PACKET DuplicatePacket (
IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET pPacket ,
IN UCHAR FromWhichBSSID ) ;
PNDIS_PACKET ClonePacket (
IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET pPacket ,
IN PUCHAR pData ,
IN ULONG DataSize ) ;
// Normal, AMPDU or AMSDU
VOID CmmRxnonRalinkFrameIndicate (
IN PRTMP_ADAPTER pAd ,
IN RX_BLK * pRxBlk ,
IN UCHAR FromWhichBSSID ) ;
VOID CmmRxRalinkFrameIndicate (
IN PRTMP_ADAPTER pAd ,
IN MAC_TABLE_ENTRY * pEntry ,
IN RX_BLK * pRxBlk ,
IN UCHAR FromWhichBSSID ) ;
VOID Update_Rssi_Sample (
IN PRTMP_ADAPTER pAd ,
IN RSSI_SAMPLE * pRssi ,
IN PRXWI_STRUC pRxWI ) ;
2009-09-22 18:44:07 +00:00
PNDIS_PACKET GetPacketFromRxRing (
IN PRTMP_ADAPTER pAd ,
OUT PRT28XX_RXD_STRUC pSaveRxD ,
OUT BOOLEAN * pbReschedule ,
IN OUT UINT32 * pRxPending ) ;
2008-10-28 21:48:09 +00:00
PNDIS_PACKET RTMPDeFragmentDataFrame (
IN PRTMP_ADAPTER pAd ,
IN RX_BLK * pRxBlk ) ;
enum {
DIDmsg_lnxind_wlansniffrm = 0x00000044 ,
DIDmsg_lnxind_wlansniffrm_hosttime = 0x00010044 ,
DIDmsg_lnxind_wlansniffrm_mactime = 0x00020044 ,
DIDmsg_lnxind_wlansniffrm_channel = 0x00030044 ,
DIDmsg_lnxind_wlansniffrm_rssi = 0x00040044 ,
DIDmsg_lnxind_wlansniffrm_sq = 0x00050044 ,
DIDmsg_lnxind_wlansniffrm_signal = 0x00060044 ,
DIDmsg_lnxind_wlansniffrm_noise = 0x00070044 ,
DIDmsg_lnxind_wlansniffrm_rate = 0x00080044 ,
DIDmsg_lnxind_wlansniffrm_istx = 0x00090044 ,
DIDmsg_lnxind_wlansniffrm_frmlen = 0x000A0044
} ;
enum {
P80211ENUM_msgitem_status_no_value = 0x00
} ;
enum {
P80211ENUM_truth_false = 0x00 ,
P80211ENUM_truth_true = 0x01
} ;
/* Definition from madwifi */
typedef struct {
UINT32 did ;
UINT16 status ;
UINT16 len ;
UINT32 data ;
} p80211item_uint32_t ;
typedef struct {
UINT32 msgcode ;
UINT32 msglen ;
# define WLAN_DEVNAMELEN_MAX 16
UINT8 devname [ WLAN_DEVNAMELEN_MAX ] ;
p80211item_uint32_t hosttime ;
p80211item_uint32_t mactime ;
p80211item_uint32_t channel ;
p80211item_uint32_t rssi ;
p80211item_uint32_t sq ;
p80211item_uint32_t signal ;
p80211item_uint32_t noise ;
p80211item_uint32_t rate ;
p80211item_uint32_t istx ;
p80211item_uint32_t frmlen ;
} wlan_ng_prism2_header ;
/* The radio capture header precedes the 802.11 header. */
typedef struct PACKED _ieee80211_radiotap_header {
UINT8 it_version ; /* Version 0. Only increases
* for drastic changes ,
* introduction of compatible
* new fields does not count .
*/
UINT8 it_pad ;
UINT16 it_len ; /* length of the whole
* header in bytes , including
* it_version , it_pad ,
* it_len , and data fields .
*/
UINT32 it_present ; /* A bitmap telling which
* fields are present . Set bit 31
* ( 0x80000000 ) to extend the
* bitmap by another 32 bits .
* Additional extensions are made
* by setting bit 31.
*/
} ieee80211_radiotap_header ;
enum ieee80211_radiotap_type {
IEEE80211_RADIOTAP_TSFT = 0 ,
IEEE80211_RADIOTAP_FLAGS = 1 ,
IEEE80211_RADIOTAP_RATE = 2 ,
IEEE80211_RADIOTAP_CHANNEL = 3 ,
IEEE80211_RADIOTAP_FHSS = 4 ,
IEEE80211_RADIOTAP_DBM_ANTSIGNAL = 5 ,
IEEE80211_RADIOTAP_DBM_ANTNOISE = 6 ,
IEEE80211_RADIOTAP_LOCK_QUALITY = 7 ,
IEEE80211_RADIOTAP_TX_ATTENUATION = 8 ,
IEEE80211_RADIOTAP_DB_TX_ATTENUATION = 9 ,
IEEE80211_RADIOTAP_DBM_TX_POWER = 10 ,
IEEE80211_RADIOTAP_ANTENNA = 11 ,
IEEE80211_RADIOTAP_DB_ANTSIGNAL = 12 ,
IEEE80211_RADIOTAP_DB_ANTNOISE = 13
} ;
# define WLAN_RADIOTAP_PRESENT ( \
( 1 < < IEEE80211_RADIOTAP_TSFT ) | \
( 1 < < IEEE80211_RADIOTAP_FLAGS ) | \
( 1 < < IEEE80211_RADIOTAP_RATE ) | \
0 )
typedef struct _wlan_radiotap_header {
ieee80211_radiotap_header wt_ihdr ;
INT64 wt_tsft ;
UINT8 wt_flags ;
UINT8 wt_rate ;
} wlan_radiotap_header ;
/* Definition from madwifi */
void send_monitor_packets (
IN PRTMP_ADAPTER pAd ,
IN RX_BLK * pRxBlk ) ;
VOID RTMPSetDesiredRates (
IN PRTMP_ADAPTER pAdapter ,
IN LONG Rates ) ;
INT Set_FixedTxMode_Proc (
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN PSTRING arg ) ;
2008-10-28 21:48:09 +00:00
BOOLEAN RT28XXChipsetCheck (
IN void * _dev_p ) ;
VOID RT28XXDMADisable (
IN RTMP_ADAPTER * pAd ) ;
VOID RT28XXDMAEnable (
IN RTMP_ADAPTER * pAd ) ;
VOID RT28xx_UpdateBeaconToAsic (
IN RTMP_ADAPTER * pAd ,
IN INT apidx ,
IN ULONG BeaconLen ,
IN ULONG UpdatePos ) ;
2009-09-22 18:44:07 +00:00
int rt28xx_init (
2008-10-28 21:48:09 +00:00
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN PSTRING pDefaultMac ,
IN PSTRING pHostName ) ;
NDIS_STATUS RtmpNetTaskInit (
IN RTMP_ADAPTER * pAd ) ;
VOID RtmpNetTaskExit (
IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
NDIS_STATUS RtmpMgmtTaskInit (
IN RTMP_ADAPTER * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
VOID RtmpMgmtTaskExit (
IN RTMP_ADAPTER * pAd ) ;
2008-10-28 21:48:09 +00:00
void tbtt_tasklet ( unsigned long data ) ;
2009-09-22 18:44:07 +00:00
PNET_DEV RtmpPhyNetDevInit (
IN RTMP_ADAPTER * pAd ,
IN RTMP_OS_NETDEV_OP_HOOK * pNetHook ) ;
BOOLEAN RtmpPhyNetDevExit (
IN RTMP_ADAPTER * pAd ,
IN PNET_DEV net_dev ) ;
INT RtmpRaDevCtrlInit (
IN RTMP_ADAPTER * pAd ,
IN RTMP_INF_TYPE infType ) ;
BOOLEAN RtmpRaDevCtrlExit (
IN RTMP_ADAPTER * pAd ) ;
# ifdef RTMP_MAC_PCI
2008-10-28 21:48:09 +00:00
//
2009-09-22 18:44:07 +00:00
// Function Prototype in cmm_data_pci.c
2008-10-28 21:48:09 +00:00
//
USHORT RtmpPCI_WriteTxResource (
IN PRTMP_ADAPTER pAd ,
IN TX_BLK * pTxBlk ,
IN BOOLEAN bIsLast ,
OUT USHORT * FreeNumber ) ;
USHORT RtmpPCI_WriteSingleTxResource (
IN PRTMP_ADAPTER pAd ,
IN TX_BLK * pTxBlk ,
IN BOOLEAN bIsLast ,
OUT USHORT * FreeNumber ) ;
USHORT RtmpPCI_WriteMultiTxResource (
IN PRTMP_ADAPTER pAd ,
IN TX_BLK * pTxBlk ,
IN UCHAR frameNum ,
OUT USHORT * FreeNumber ) ;
USHORT RtmpPCI_WriteFragTxResource (
IN PRTMP_ADAPTER pAd ,
IN TX_BLK * pTxBlk ,
IN UCHAR fragNum ,
OUT USHORT * FreeNumber ) ;
USHORT RtmpPCI_WriteSubTxResource (
IN PRTMP_ADAPTER pAd ,
IN TX_BLK * pTxBlk ,
IN BOOLEAN bIsLast ,
OUT USHORT * FreeNumber ) ;
VOID RtmpPCI_FinalWriteTxResource (
IN PRTMP_ADAPTER pAd ,
IN TX_BLK * pTxBlk ,
IN USHORT totalMPDUSize ,
IN USHORT FirstTxIdx ) ;
VOID RtmpPCIDataLastTxIdx (
IN PRTMP_ADAPTER pAd ,
IN UCHAR QueIdx ,
IN USHORT LastTxIdx ) ;
VOID RtmpPCIDataKickOut (
IN PRTMP_ADAPTER pAd ,
IN TX_BLK * pTxBlk ,
IN UCHAR QueIdx ) ;
int RtmpPCIMgmtKickOut (
IN RTMP_ADAPTER * pAd ,
IN UCHAR QueIdx ,
IN PNDIS_PACKET pPacket ,
IN PUCHAR pSrcBufVA ,
IN UINT SrcBufLen ) ;
NDIS_STATUS RTMPCheckRxError (
IN PRTMP_ADAPTER pAd ,
IN PHEADER_802_11 pHeader ,
IN PRXWI_STRUC pRxWI ,
IN PRT28XX_RXD_STRUC pRxD ) ;
2009-09-22 18:44:07 +00:00
BOOLEAN RT28xxPciAsicRadioOff (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Level ,
IN USHORT TbttNumToNextWakeUp ) ;
BOOLEAN RT28xxPciAsicRadioOn (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Level ) ;
2008-10-28 21:48:09 +00:00
VOID RTMPInitPCIeLinkCtrlValue (
IN PRTMP_ADAPTER pAd ) ;
VOID RTMPFindHostPCIDev (
IN PRTMP_ADAPTER pAd ) ;
VOID RTMPPCIeLinkCtrlValueRestore (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Level ) ;
VOID RTMPPCIeLinkCtrlSetting (
IN PRTMP_ADAPTER pAd ,
IN USHORT Max ) ;
2009-09-22 18:44:24 +00:00
VOID RTMPrt3xSetPCIePowerLinkCtrl (
IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
VOID PsPollWakeExec (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
VOID RadioOnExec (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
2009-09-22 18:44:07 +00:00
VOID RT28xxPciStaAsicForceWakeup (
2009-04-26 14:06:25 +00:00
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN BOOLEAN bFromTx ) ;
2009-04-26 14:06:25 +00:00
2009-09-22 18:44:07 +00:00
VOID RT28xxPciStaAsicSleepThenAutoWakeup (
2009-04-26 14:06:25 +00:00
IN PRTMP_ADAPTER pAd ,
2009-09-22 18:44:07 +00:00
IN USHORT TbttNumToNextWakeUp ) ;
2009-04-26 14:06:25 +00:00
2009-09-22 18:44:07 +00:00
VOID RT28xxPciMlmeRadioOn (
2009-04-26 14:06:25 +00:00
IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
VOID RT28xxPciMlmeRadioOFF (
2009-04-26 14:06:25 +00:00
IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_PCI //
2009-04-26 14:06:25 +00:00
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
2009-04-26 14:06:25 +00:00
//
// Function Prototype in rtusb_bulk.c
//
VOID RTUSBInitTxDesc (
IN PRTMP_ADAPTER pAd ,
IN PTX_CONTEXT pTxContext ,
IN UCHAR BulkOutPipeId ,
IN usb_complete_t Func ) ;
VOID RTUSBInitHTTxDesc (
IN PRTMP_ADAPTER pAd ,
IN PHT_TX_CONTEXT pTxContext ,
IN UCHAR BulkOutPipeId ,
IN ULONG BulkOutSize ,
IN usb_complete_t Func ) ;
2009-09-22 18:44:07 +00:00
VOID RTUSBInitRxDesc (
IN PRTMP_ADAPTER pAd ,
IN PRX_CONTEXT pRxContext ) ;
2009-04-26 14:06:25 +00:00
VOID RTUSBCleanUpDataBulkOutQueue (
IN PRTMP_ADAPTER pAd ) ;
VOID RTUSBCancelPendingBulkOutIRP (
IN PRTMP_ADAPTER pAd ) ;
VOID RTUSBBulkOutDataPacket (
IN PRTMP_ADAPTER pAd ,
IN UCHAR BulkOutPipeId ,
IN UCHAR Index ) ;
VOID RTUSBBulkOutNullFrame (
IN PRTMP_ADAPTER pAd ) ;
VOID RTUSBBulkOutRTSFrame (
IN PRTMP_ADAPTER pAd ) ;
VOID RTUSBCancelPendingBulkInIRP (
IN PRTMP_ADAPTER pAd ) ;
VOID RTUSBCancelPendingIRPs (
IN PRTMP_ADAPTER pAd ) ;
VOID RTUSBBulkOutMLMEPacket (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Index ) ;
VOID RTUSBBulkOutPsPoll (
IN PRTMP_ADAPTER pAd ) ;
VOID RTUSBCleanUpMLMEBulkOutQueue (
IN PRTMP_ADAPTER pAd ) ;
VOID RTUSBKickBulkOut (
IN PRTMP_ADAPTER pAd ) ;
VOID RTUSBBulkReceive (
IN PRTMP_ADAPTER pAd ) ;
VOID DoBulkIn (
IN RTMP_ADAPTER * pAd ) ;
VOID RTUSBInitRxDesc (
IN PRTMP_ADAPTER pAd ,
IN PRX_CONTEXT pRxContext ) ;
2009-09-22 18:44:07 +00:00
VOID RTUSBBulkRxHandle (
IN unsigned long data ) ;
2009-04-26 14:06:25 +00:00
//
// Function Prototype in rtusb_io.c
//
NTSTATUS RTUSBMultiRead (
IN PRTMP_ADAPTER pAd ,
IN USHORT Offset ,
OUT PUCHAR pData ,
IN USHORT length ) ;
NTSTATUS RTUSBMultiWrite (
IN PRTMP_ADAPTER pAd ,
IN USHORT Offset ,
IN PUCHAR pData ,
IN USHORT length ) ;
NTSTATUS RTUSBMultiWrite_OneByte (
IN PRTMP_ADAPTER pAd ,
IN USHORT Offset ,
IN PUCHAR pData ) ;
NTSTATUS RTUSBReadBBPRegister (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Id ,
IN PUCHAR pValue ) ;
NTSTATUS RTUSBWriteBBPRegister (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Id ,
IN UCHAR Value ) ;
NTSTATUS RTUSBWriteRFRegister (
IN PRTMP_ADAPTER pAd ,
IN UINT32 Value ) ;
NTSTATUS RTUSB_VendorRequest (
IN PRTMP_ADAPTER pAd ,
IN UINT32 TransferFlags ,
IN UCHAR ReservedBits ,
IN UCHAR Request ,
IN USHORT Value ,
IN USHORT Index ,
IN PVOID TransferBuffer ,
IN UINT32 TransferBufferLength ) ;
NTSTATUS RTUSBReadEEPROM (
IN PRTMP_ADAPTER pAd ,
IN USHORT Offset ,
OUT PUCHAR pData ,
IN USHORT length ) ;
NTSTATUS RTUSBWriteEEPROM (
IN PRTMP_ADAPTER pAd ,
IN USHORT Offset ,
IN PUCHAR pData ,
IN USHORT length ) ;
VOID RTUSBPutToSleep (
IN PRTMP_ADAPTER pAd ) ;
NTSTATUS RTUSBWakeUp (
IN PRTMP_ADAPTER pAd ) ;
VOID RTUSBInitializeCmdQ (
IN PCmdQ cmdq ) ;
NDIS_STATUS RTUSBEnqueueCmdFromNdis (
IN PRTMP_ADAPTER pAd ,
IN NDIS_OID Oid ,
IN BOOLEAN SetInformation ,
IN PVOID pInformationBuffer ,
IN UINT32 InformationBufferLength ) ;
NDIS_STATUS RTUSBEnqueueInternalCmd (
IN PRTMP_ADAPTER pAd ,
IN NDIS_OID Oid ,
IN PVOID pInformationBuffer ,
IN UINT32 InformationBufferLength ) ;
VOID RTUSBDequeueCmd (
IN PCmdQ cmdq ,
OUT PCmdQElmt * pcmdqelmt ) ;
INT RTUSBCmdThread (
IN OUT PVOID Context ) ;
2009-09-22 18:44:07 +00:00
VOID RTUSBBssBeaconExit (
2009-04-26 14:06:25 +00:00
IN RTMP_ADAPTER * pAd ) ;
2009-09-22 18:44:07 +00:00
VOID RTUSBBssBeaconStop (
2009-04-26 14:06:25 +00:00
IN RTMP_ADAPTER * pAd ) ;
2009-09-22 18:44:07 +00:00
VOID RTUSBBssBeaconStart (
2009-04-26 14:06:25 +00:00
IN RTMP_ADAPTER * pAd ) ;
2009-09-22 18:44:07 +00:00
VOID RTUSBBssBeaconInit (
2009-04-26 14:06:25 +00:00
IN RTMP_ADAPTER * pAd ) ;
2009-09-22 18:44:07 +00:00
VOID RTUSBWatchDog (
2009-04-26 14:06:25 +00:00
IN RTMP_ADAPTER * pAd ) ;
NTSTATUS RTUSBWriteMACRegister (
IN PRTMP_ADAPTER pAd ,
IN USHORT Offset ,
IN UINT32 Value ) ;
NTSTATUS RTUSBReadMACRegister (
IN PRTMP_ADAPTER pAd ,
IN USHORT Offset ,
OUT PUINT32 pValue ) ;
NTSTATUS RTUSBSingleWrite (
IN RTMP_ADAPTER * pAd ,
IN USHORT Offset ,
IN USHORT Value ) ;
NTSTATUS RTUSBFirmwareWrite (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pFwImage ,
IN ULONG FwLen ) ;
NTSTATUS RTUSBVenderReset (
IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
NDIS_STATUS RTUSBSetHardWareRegister (
IN PRTMP_ADAPTER pAdapter ,
IN PVOID pBuf ) ;
2009-04-26 14:06:25 +00:00
2009-09-22 18:44:07 +00:00
NDIS_STATUS RTUSBQueryHardWareRegister (
IN PRTMP_ADAPTER pAdapter ,
IN PVOID pBuf ) ;
2009-04-26 14:06:25 +00:00
2009-09-22 18:44:07 +00:00
VOID CMDHandler (
IN PRTMP_ADAPTER pAd ) ;
2009-04-26 14:06:25 +00:00
2009-09-22 18:44:07 +00:00
NDIS_STATUS RTUSBWriteHWMACAddress (
IN PRTMP_ADAPTER pAdapter ) ;
2009-04-26 14:06:25 +00:00
VOID MacTableInitialize (
IN PRTMP_ADAPTER pAd ) ;
VOID MlmeSetPsm (
IN PRTMP_ADAPTER pAd ,
IN USHORT psm ) ;
NDIS_STATUS RTMPWPAAddKeyProc (
IN PRTMP_ADAPTER pAd ,
IN PVOID pBuf ) ;
VOID AsicRxAntEvalAction (
IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
void append_pkt (
IN PRTMP_ADAPTER pAd ,
IN PUCHAR pHeader802_3 ,
IN UINT HdrLen ,
IN PUCHAR pData ,
IN ULONG DataSize ,
OUT PNDIS_PACKET * ppPacket ) ;
UINT deaggregate_AMSDU_announce (
IN PRTMP_ADAPTER pAd ,
PNDIS_PACKET pPacket ,
IN PUCHAR pData ,
IN ULONG DataSize ) ;
2009-04-26 14:06:25 +00:00
NDIS_STATUS RTMPCheckRxError (
IN PRTMP_ADAPTER pAd ,
IN PHEADER_802_11 pHeader ,
IN PRXWI_STRUC pRxWI ,
IN PRT28XX_RXD_STRUC pRxINFO ) ;
2009-09-22 18:44:07 +00:00
VOID RTUSBMlmeHardTransmit (
IN PRTMP_ADAPTER pAd ,
IN PMGMT_STRUC pMgmt ) ;
2009-04-26 14:06:25 +00:00
INT MlmeThread (
IN PVOID Context ) ;
//
// Function Prototype in rtusb_data.c
//
NDIS_STATUS RTUSBFreeDescriptorRequest (
IN PRTMP_ADAPTER pAd ,
IN UCHAR BulkOutPipeId ,
IN UINT32 NumberRequired ) ;
BOOLEAN RTUSBNeedQueueBackForAgg (
IN RTMP_ADAPTER * pAd ,
IN UCHAR BulkOutPipeId ) ;
VOID RTMPWriteTxInfo (
IN PRTMP_ADAPTER pAd ,
IN PTXINFO_STRUC pTxInfo ,
IN USHORT USBDMApktLen ,
IN BOOLEAN bWiv ,
IN UCHAR QueueSel ,
IN UCHAR NextValid ,
IN UCHAR TxBurst ) ;
//
2009-09-22 18:44:07 +00:00
// Function Prototype in cmm_data_usb.c
2009-04-26 14:06:25 +00:00
//
USHORT RtmpUSB_WriteSubTxResource (
IN PRTMP_ADAPTER pAd ,
IN TX_BLK * pTxBlk ,
IN BOOLEAN bIsLast ,
OUT USHORT * FreeNumber ) ;
USHORT RtmpUSB_WriteSingleTxResource (
IN PRTMP_ADAPTER pAd ,
IN TX_BLK * pTxBlk ,
IN BOOLEAN bIsLast ,
OUT USHORT * FreeNumber ) ;
USHORT RtmpUSB_WriteFragTxResource (
IN PRTMP_ADAPTER pAd ,
IN TX_BLK * pTxBlk ,
IN UCHAR fragNum ,
OUT USHORT * FreeNumber ) ;
USHORT RtmpUSB_WriteMultiTxResource (
IN PRTMP_ADAPTER pAd ,
IN TX_BLK * pTxBlk ,
IN UCHAR frameNum ,
OUT USHORT * FreeNumber ) ;
VOID RtmpUSB_FinalWriteTxResource (
IN PRTMP_ADAPTER pAd ,
IN TX_BLK * pTxBlk ,
IN USHORT totalMPDUSize ,
IN USHORT TxIdx ) ;
VOID RtmpUSBDataLastTxIdx (
IN PRTMP_ADAPTER pAd ,
IN UCHAR QueIdx ,
IN USHORT TxIdx ) ;
VOID RtmpUSBDataKickOut (
IN PRTMP_ADAPTER pAd ,
IN TX_BLK * pTxBlk ,
IN UCHAR QueIdx ) ;
int RtmpUSBMgmtKickOut (
IN RTMP_ADAPTER * pAd ,
IN UCHAR QueIdx ,
IN PNDIS_PACKET pPacket ,
IN PUCHAR pSrcBufVA ,
IN UINT SrcBufLen ) ;
VOID RtmpUSBNullFrameKickOut (
IN RTMP_ADAPTER * pAd ,
IN UCHAR QueIdx ,
IN UCHAR * pNullFrame ,
IN UINT32 frameLen ) ;
2009-09-22 18:44:07 +00:00
VOID RtmpUsbStaAsicForceWakeupTimeout (
IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
2009-04-26 14:06:25 +00:00
VOID RT28xxUsbStaAsicForceWakeup (
IN PRTMP_ADAPTER pAd ,
IN BOOLEAN bFromTx ) ;
VOID RT28xxUsbStaAsicSleepThenAutoWakeup (
IN PRTMP_ADAPTER pAd ,
IN USHORT TbttNumToNextWakeUp ) ;
VOID RT28xxUsbMlmeRadioOn (
IN PRTMP_ADAPTER pAd ) ;
VOID RT28xxUsbMlmeRadioOFF (
IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_USB //
VOID AsicTurnOffRFClk (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Channel ) ;
VOID AsicTurnOnRFClk (
IN PRTMP_ADAPTER pAd ,
IN UCHAR Channel ) ;
# ifdef RTMP_TIMER_TASK_SUPPORT
INT RtmpTimerQThread (
IN OUT PVOID Context ) ;
RTMP_TIMER_TASK_ENTRY * RtmpTimerQInsert (
IN RTMP_ADAPTER * pAd ,
IN RALINK_TIMER_STRUCT * pTimer ) ;
BOOLEAN RtmpTimerQRemove (
IN RTMP_ADAPTER * pAd ,
IN RALINK_TIMER_STRUCT * pTimer ) ;
void RtmpTimerQExit (
IN RTMP_ADAPTER * pAd ) ;
void RtmpTimerQInit (
IN RTMP_ADAPTER * pAd ) ;
# endif // RTMP_TIMER_TASK_SUPPORT //
2008-10-28 21:48:09 +00:00
VOID AsicStaBbpTuning (
IN PRTMP_ADAPTER pAd ) ;
2009-02-23 15:01:07 +00:00
2009-04-26 14:06:25 +00:00
BOOLEAN StaAddMacTableEntry (
IN PRTMP_ADAPTER pAd ,
IN PMAC_TABLE_ENTRY pEntry ,
IN UCHAR MaxSupportedRateIn500Kbps ,
IN HT_CAPABILITY_IE * pHtCapability ,
IN UCHAR HtCapabilityLen ,
2009-09-22 18:44:07 +00:00
IN ADD_HT_INFO_IE * pAddHtInfo ,
IN UCHAR AddHtInfoLen ,
2009-04-26 14:06:25 +00:00
IN USHORT CapabilityInfo ) ;
2009-09-22 18:44:07 +00:00
BOOLEAN AUTH_ReqSend (
IN PRTMP_ADAPTER pAd ,
IN PMLME_QUEUE_ELEM pElem ,
IN PRALINK_TIMER_STRUCT pAuthTimer ,
IN PSTRING pSMName ,
IN USHORT SeqNo ,
IN PUCHAR pNewElement ,
IN ULONG ElementLen ) ;
2008-10-28 21:48:09 +00:00
void RTMP_IndicateMediaState (
IN PRTMP_ADAPTER pAd ) ;
VOID ReSyncBeaconTime (
IN PRTMP_ADAPTER pAd ) ;
VOID RTMPSetAGCInitValue (
IN PRTMP_ADAPTER pAd ,
IN UCHAR BandWidth ) ;
int rt28xx_close ( IN PNET_DEV dev ) ;
int rt28xx_open ( IN PNET_DEV dev ) ;
2009-09-22 18:44:07 +00:00
# define VIRTUAL_IF_INC(__pAd) ((__pAd)->VirtualIfCnt++)
# define VIRTUAL_IF_DEC(__pAd) ((__pAd)->VirtualIfCnt--)
# define VIRTUAL_IF_NUM(__pAd) ((__pAd)->VirtualIfCnt)
# ifdef LINUX
2008-10-28 21:48:09 +00:00
__inline INT VIRTUAL_IF_UP ( PRTMP_ADAPTER pAd )
{
if ( VIRTUAL_IF_NUM ( pAd ) = = 0 )
{
if ( rt28xx_open ( pAd - > net_dev ) ! = 0 )
2009-09-22 18:44:07 +00:00
{
DBGPRINT ( RT_DEBUG_TRACE , ( " rt28xx_open return fail! \n " ) ) ;
2008-10-28 21:48:09 +00:00
return - 1 ;
}
2009-09-22 18:44:07 +00:00
}
2008-10-28 21:48:09 +00:00
else
{
}
VIRTUAL_IF_INC ( pAd ) ;
return 0 ;
}
__inline VOID VIRTUAL_IF_DOWN ( PRTMP_ADAPTER pAd )
{
VIRTUAL_IF_DEC ( pAd ) ;
if ( VIRTUAL_IF_NUM ( pAd ) = = 0 )
rt28xx_close ( pAd - > net_dev ) ;
return ;
}
2009-09-22 18:44:07 +00:00
# endif // LINUX //
/*
OS Related funciton prototype definitions .
TODO : Maybe we need to move these function prototypes to other proper place .
*/
int RtmpOSWrielessEventSend (
IN RTMP_ADAPTER * pAd ,
IN UINT32 eventType ,
IN INT flags ,
IN PUCHAR pSrcMac ,
IN PUCHAR pData ,
IN UINT32 dataLen ) ;
int RtmpOSNetDevAddrSet (
IN PNET_DEV pNetDev ,
IN PUCHAR pMacAddr ) ;
int RtmpOSNetDevAttach (
IN PNET_DEV pNetDev ,
IN RTMP_OS_NETDEV_OP_HOOK * pDevOpHook ) ;
void RtmpOSNetDevClose (
IN PNET_DEV pNetDev ) ;
void RtmpOSNetDevDetach (
IN PNET_DEV pNetDev ) ;
INT RtmpOSNetDevAlloc (
IN PNET_DEV * pNewNetDev ,
IN UINT32 privDataSize ) ;
void RtmpOSNetDevFree (
IN PNET_DEV pNetDev ) ;
PNET_DEV RtmpOSNetDevGetByName (
IN PNET_DEV pNetDev ,
IN PSTRING pDevName ) ;
void RtmpOSNetDeviceRefPut (
IN PNET_DEV pNetDev ) ;
PNET_DEV RtmpOSNetDevCreate (
IN RTMP_ADAPTER * pAd ,
IN INT devType ,
IN INT devNum ,
IN INT privMemSize ,
IN PSTRING pNamePrefix ) ;
/*
Task operation related function prototypes
*/
void RtmpOSTaskCustomize (
IN RTMP_OS_TASK * pTask ) ;
INT RtmpOSTaskNotifyToExit (
IN RTMP_OS_TASK * pTask ) ;
NDIS_STATUS RtmpOSTaskKill (
IN RTMP_OS_TASK * pTask ) ;
NDIS_STATUS RtmpOSTaskInit (
IN RTMP_OS_TASK * pTask ,
PSTRING pTaskName ,
VOID * pPriv ) ;
NDIS_STATUS RtmpOSTaskAttach (
IN RTMP_OS_TASK * pTask ,
IN int ( * fn ) ( void * ) ,
IN void * arg ) ;
/*
File operation related function prototypes
*/
RTMP_OS_FD RtmpOSFileOpen (
IN char * pPath ,
IN int flag ,
IN int mode ) ;
int RtmpOSFileClose (
IN RTMP_OS_FD osfd ) ;
void RtmpOSFileSeek (
IN RTMP_OS_FD osfd ,
IN int offset ) ;
int RtmpOSFileRead (
IN RTMP_OS_FD osfd ,
IN char * pDataPtr ,
IN int readLen ) ;
int RtmpOSFileWrite (
IN RTMP_OS_FD osfd ,
IN char * pDataPtr ,
IN int writeLen ) ;
2008-10-28 21:48:09 +00:00
# endif // __RTMP_H__