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-12-11 20:23:14 +00:00
typedef struct _RTMP_ADAPTER RTMP_ADAPTER ;
typedef struct _RTMP_ADAPTER * PRTMP_ADAPTER ;
2009-09-22 18:44:07 +00:00
typedef struct _RTMP_CHIP_OP_ RTMP_CHIP_OP ;
2009-12-11 20:23:14 +00:00
//#define DBG 1
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
//#define DBG_DIAGNOSE 1
2009-09-22 18:44:07 +00:00
//+++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
2009-12-11 20:23:14 +00:00
extern unsigned char SNAP_AIRONET [ ] ;
extern unsigned char CISCO_OUI [ ] ;
extern UCHAR BaSizeArray [ 4 ] ;
2008-10-28 21:48:09 +00:00
extern UCHAR BROADCAST_ADDR [ MAC_ADDR_LEN ] ;
extern UCHAR ZERO_MAC_ADDR [ MAC_ADDR_LEN ] ;
extern ULONG BIT32 [ 32 ] ;
extern UCHAR BIT8 [ 8 ] ;
2009-12-11 20:23:14 +00:00
extern char * CipherName [ ] ;
extern char * MCSToMbps [ ] ;
extern UCHAR RxwiMCSToOfdmRate [ 12 ] ;
2008-10-28 21:48:09 +00:00
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 ] ;
2009-12-11 20:23:14 +00:00
extern UCHAR RateIdToPlcpSignal [ 12 ] ; // see IEEE802.11a-1999 p.14
extern UCHAR OfdmRateToRxwiMCS [ ] ;
extern UCHAR OfdmSignalToRateId [ 16 ] ;
2008-10-28 21:48:09 +00:00
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 [ ] ;
2009-12-11 20:23:14 +00:00
extern UCHAR Phy11BNextRateDownward [ ] ;
extern UCHAR Phy11BNextRateUpward [ ] ;
extern UCHAR Phy11BGNextRateDownward [ ] ;
extern UCHAR Phy11BGNextRateUpward [ ] ;
extern UCHAR Phy11ANextRateDownward [ ] ;
extern UCHAR Phy11ANextRateUpward [ ] ;
extern CHAR RssiSafeLevelForTxRate [ ] ;
extern UCHAR RateIdToMbps [ ] ;
2008-10-28 21:48:09 +00:00
extern USHORT RateIdTo500Kbps [ ] ;
2009-12-11 20:23:14 +00:00
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 ;
extern UCHAR WapiIe ;
extern UCHAR WPA_OUI [ ] ;
extern UCHAR RSN_OUI [ ] ;
extern UCHAR WAPI_OUI [ ] ;
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 ;
2008-10-28 21:48:09 +00:00
} RSSI_SAMPLE ;
//
// Queue structure and macros
//
2009-12-11 20:23:14 +00:00
typedef struct _QUEUE_ENTRY {
struct _QUEUE_ENTRY * Next ;
} QUEUE_ENTRY , * PQUEUE_ENTRY ;
2008-10-28 21:48:09 +00:00
// Queue structure
2009-12-11 20:23:14 +00:00
typedef struct _QUEUE_HEADER {
PQUEUE_ENTRY Head ;
PQUEUE_ENTRY Tail ;
ULONG Number ;
} QUEUE_HEADER , * PQUEUE_HEADER ;
2008-10-28 21:48:09 +00:00
# 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 {
2009-12-11 20:23:14 +00:00
PVOID Address ;
ULONG Length ;
PULONG Reserved ;
2008-10-28 21:48:09 +00:00
} RTMP_SCATTER_GATHER_ELEMENT , * PRTMP_SCATTER_GATHER_ELEMENT ;
typedef struct _RTMP_SCATTER_GATHER_LIST {
2009-12-11 20:23:14 +00:00
ULONG NumberOfElements ;
PULONG Reserved ;
RTMP_SCATTER_GATHER_ELEMENT Elements [ NIC_MAX_PHYS_BUF_COUNT ] ;
2008-10-28 21:48:09 +00:00
} 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.
//
2009-12-11 20:23:14 +00:00
typedef struct _RTMP_DMABUF {
ULONG AllocSize ;
PVOID AllocVa ; // TxBuf virtual address
NDIS_PHYSICAL_ADDRESS AllocPa ; // TxBuf physical address
2008-10-28 21:48:09 +00:00
} 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.
//
2009-12-11 20:23:14 +00:00
typedef struct _RTMP_DMACB {
ULONG AllocSize ; // Control block size
PVOID AllocVa ; // Control block virtual address
NDIS_PHYSICAL_ADDRESS AllocPa ; // Control block physical address
2008-10-28 21:48:09 +00:00
PNDIS_PACKET pNdisPacket ;
PNDIS_PACKET pNextNdisPacket ;
2009-12-11 20:23:14 +00:00
RTMP_DMABUF DmaBuf ; // Associated DMA buffer structure
2008-10-28 21:48:09 +00:00
} RTMP_DMACB , * PRTMP_DMACB ;
2009-12-11 20:23:14 +00:00
typedef struct _RTMP_TX_RING {
RTMP_DMACB Cell [ TX_RING_SIZE ] ;
UINT32 TxCpuIdx ;
UINT32 TxDmaIdx ;
UINT32 TxSwFreeIdx ; // software next free tx index
2008-10-28 21:48:09 +00:00
} RTMP_TX_RING , * PRTMP_TX_RING ;
2009-12-11 20:23:14 +00:00
typedef struct _RTMP_RX_RING {
RTMP_DMACB Cell [ RX_RING_SIZE ] ;
UINT32 RxCpuIdx ;
UINT32 RxDmaIdx ;
INT32 RxSwReadIdx ; // software next read index
2008-10-28 21:48:09 +00:00
} RTMP_RX_RING , * PRTMP_RX_RING ;
2009-12-11 20:23:14 +00:00
typedef struct _RTMP_MGMT_RING {
RTMP_DMACB Cell [ MGMT_RING_SIZE ] ;
UINT32 TxCpuIdx ;
UINT32 TxDmaIdx ;
UINT32 TxSwFreeIdx ; // software next free tx index
2008-10-28 21:48:09 +00:00
} RTMP_MGMT_RING , * PRTMP_MGMT_RING ;
//
// Statistic counter structure
//
2009-12-11 20:23:14 +00:00
typedef struct _COUNTER_802_3 {
2008-10-28 21:48:09 +00:00
// General Stats
2009-12-11 20:23:14 +00:00
ULONG GoodTransmits ;
ULONG GoodReceives ;
ULONG TxErrors ;
ULONG RxErrors ;
ULONG RxNoBuffer ;
2008-10-28 21:48:09 +00:00
// Ethernet Stats
2009-12-11 20:23:14 +00:00
ULONG RcvAlignmentErrors ;
ULONG OneCollision ;
ULONG MoreCollisions ;
2008-10-28 21:48:09 +00:00
} COUNTER_802_3 , * PCOUNTER_802_3 ;
typedef struct _COUNTER_802_11 {
2009-12-11 20:23:14 +00:00
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 ;
2008-10-28 21:48:09 +00:00
} COUNTER_802_11 , * PCOUNTER_802_11 ;
typedef struct _COUNTER_RALINK {
2009-12-11 20:23:14 +00:00
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 ;
UINT32 OneSecReceivedByteCount ;
UINT32 OneSecFrameDuplicateCount ;
UINT32 OneSecTransmittedByteCount ; // both successful and failure, used to calculate TX throughput
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 ;
2008-10-28 21:48:09 +00:00
} COUNTER_RALINK , * PCOUNTER_RALINK ;
typedef struct _COUNTER_DRS {
// to record the each TX rate's quality. 0 is best, the bigger the worse.
2009-12-11 20:23:14 +00:00
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 ;
2008-10-28 21:48:09 +00:00
} 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 {
2009-12-11 20:23:14 +00:00
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
2008-10-28 21:48:09 +00:00
} 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 {
2009-12-11 20:23:14 +00:00
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 ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
/***************************************************************************
* RTUSB I / O related data structure
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2009-12-11 20:23:14 +00:00
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
2009-09-22 18:44:07 +00:00
UCHAR Addr [ MAC_ADDR_LEN ] ; // avoid in interrupt when write key
2009-12-11 20:23:14 +00:00
} RT_SET_ASIC_WCID , * PRT_SET_ASIC_WCID ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
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 ;
2009-09-22 18:44:07 +00:00
// for USB interface, avoid in interrupt when write key
2009-12-11 20:23:14 +00:00
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 {
2009-12-11 20:23:14 +00:00
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 ;
2008-10-28 21:48:09 +00:00
} ROGUEAP_ENTRY , * PROGUEAP_ENTRY ;
typedef struct {
2009-12-11 20:23:14 +00:00
UCHAR RogueApNr ;
ROGUEAP_ENTRY RogueApEntry [ MAX_LEN_OF_BSS_TABLE ] ;
2008-10-28 21:48:09 +00:00
} ROGUEAP_TABLE , * PROGUEAP_TABLE ;
//
2009-09-22 18:44:07 +00:00
// Cisco IAPP format
2008-10-28 21:48:09 +00:00
//
2009-12-11 20:23:14 +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.
2009-09-22 18:44:07 +00:00
} 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
*/
2009-12-11 20:23:14 +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
2008-10-28 21:48:09 +00:00
} FRAGMENT_FRAME , * PFRAGMENT_FRAME ;
//
// Packet information for NdisQueryPacket
//
2009-12-11 20:23:14 +00:00
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
2008-10-28 21:48:09 +00:00
} PACKET_INFO , * PPACKET_INFO ;
2009-09-22 18:44:07 +00:00
//
// Arcfour Structure Added by PaulWu
//
2009-12-11 20:23:14 +00:00
typedef struct _ARCFOUR {
UINT X ;
UINT Y ;
UCHAR STATE [ 256 ] ;
2009-09-22 18:44:07 +00:00
} ARCFOURCONTEXT , * PARCFOURCONTEXT ;
2008-10-28 21:48:09 +00:00
//
// Tkip Key structure which RC4 key & MIC calculation
//
2009-12-11 20:23:14 +00:00
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 ] ;
2008-10-28 21:48:09 +00:00
} TKIP_KEY_INFO , * PTKIP_KEY_INFO ;
//
// Private / Misc data, counters for driver internal use
//
2009-12-11 20:23:14 +00:00
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
2008-10-28 21:48:09 +00:00
// Variables for WEP encryption / decryption in rtmp_wep.c
2009-12-11 20:23:14 +00:00
UINT FCSCRC32 ;
ARCFOURCONTEXT WEPCONTEXT ;
2008-10-28 21:48:09 +00:00
// Tkip stuff
2009-12-11 20:23:14 +00:00
TKIP_KEY_INFO Tx ;
TKIP_KEY_INFO Rx ;
2008-10-28 21:48:09 +00:00
} 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 {
2009-12-11 20:23:14 +00:00
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.
2008-10-28 21:48:09 +00:00
} BBP_R66_TUNING , * PBBP_R66_TUNING ;
// structure to store channel TX power
typedef struct _CHANNEL_TX_POWER {
2009-12-11 20:23:14 +00:00
USHORT RemainingTimeForUse ; //unit: sec
UCHAR Channel ;
CHAR Power ;
CHAR Power2 ;
UCHAR MaxTxPwr ;
UCHAR DfsReq ;
2008-10-28 21:48:09 +00:00
} CHANNEL_TX_POWER , * PCHANNEL_TX_POWER ;
// structure to store 802.11j channel TX power
typedef struct _CHANNEL_11J_TX_POWER {
2009-12-11 20:23:14 +00:00
UCHAR Channel ;
UCHAR BW ; // BW_10 or BW_20
CHAR Power ;
CHAR Power2 ;
USHORT RemainingTimeForUse ; //unit: sec
2008-10-28 21:48:09 +00:00
} CHANNEL_11J_TX_POWER , * PCHANNEL_11J_TX_POWER ;
2009-09-22 18:44:07 +00:00
typedef struct _SOFT_RX_ANT_DIVERSITY_STRUCT {
2009-12-11 20:23:14 +00:00
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 ;
2009-09-22 18:44:07 +00:00
} SOFT_RX_ANT_DIVERSITY , * PSOFT_RX_ANT_DIVERSITY ;
/***************************************************************************
* structure for radar detection and channel switch
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
typedef struct _RADAR_DETECT_STRUCT {
2009-12-11 20:23:14 +00:00
//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 ;
2009-09-22 18:44:07 +00:00
} 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
2009-12-11 20:23:14 +00:00
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 ;
2009-09-22 18:44:24 +00:00
# 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
2009-12-11 20:23:14 +00:00
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 ] ;
2008-10-28 21:48:09 +00:00
// Action
2009-12-11 20:23:14 +00:00
STATE_MACHINE ActMachine ;
2009-09-22 18:44:07 +00:00
// common WPA state machine
2009-12-11 20:23:14 +00:00
STATE_MACHINE WpaMachine ;
STATE_MACHINE_FUNC WpaFunc [ WPA_FUNC_SIZE ] ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
ULONG ChannelQuality ; // 0..100, Channel Quality Indication for Roaming
ULONG Now32 ; // latch the value of NdisGetSystemUpTime()
ULONG LastSendNULLpsmTime ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN bRunning ;
NDIS_SPIN_LOCK TaskLock ;
MLME_QUEUE Queue ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
UINT ShiftReg ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
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
2009-12-11 20:23:14 +00:00
UCHAR bPsPollTimerRunning ;
RALINK_TIMER_STRUCT PsPollTimer ;
RALINK_TIMER_STRUCT RadioOnOffTimer ;
# endif // RTMP_MAC_PCI //
ULONG PeriodicRound ;
ULONG OneSecPeriodicRound ;
UCHAR RealRxPath ;
BOOLEAN bLowThroughput ;
BOOLEAN bEnableAutoAntennaCheck ;
RALINK_TIMER_STRUCT RxAntEvalTimer ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
# ifdef RT30xx
2009-04-26 14:06:25 +00:00
UCHAR CaliBW40RfR24 ;
UCHAR CaliBW20RfR24 ;
2009-12-11 20:23:14 +00:00
# endif // RT30xx //
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
2009-12-11 20:23:14 +00:00
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
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2009-12-11 20:23:14 +00:00
struct reordering_mpdu {
struct reordering_mpdu * next ;
PNDIS_PACKET pPacket ; /* coverted to 802.3 frame */
int Sequence ; /* sequence number of MPDU */
BOOLEAN bAMSDU ;
2009-09-22 18:44:07 +00:00
} ;
2009-12-11 20:23:14 +00:00
struct reordering_list {
2009-09-22 18:44:07 +00:00
struct reordering_mpdu * next ;
2009-12-11 20:23:14 +00:00
int qlen ;
2009-09-22 18:44:07 +00:00
} ;
2009-12-11 20:23:14 +00:00
struct reordering_mpdu_pool {
PVOID mem ;
NDIS_SPIN_LOCK lock ;
struct reordering_list freelist ;
2009-09-22 18:44:07 +00:00
} ;
2009-12-11 20:23:14 +00:00
typedef enum _REC_BLOCKACK_STATUS {
Recipient_NONE = 0 ,
2009-09-22 18:44:07 +00:00
Recipient_USED ,
Recipient_HandleRes ,
2009-12-11 20:23:14 +00:00
Recipient_Accept
2008-10-28 21:48:09 +00:00
} REC_BLOCKACK_STATUS , * PREC_BLOCKACK_STATUS ;
2009-12-11 20:23:14 +00:00
typedef enum _ORI_BLOCKACK_STATUS {
Originator_NONE = 0 ,
2008-10-28 21:48:09 +00:00
Originator_USED ,
2009-12-11 20:23:14 +00:00
Originator_WaitRes ,
Originator_Done
2008-10-28 21:48:09 +00:00
} ORI_BLOCKACK_STATUS , * PORI_BLOCKACK_STATUS ;
2009-12-11 20:23:14 +00:00
typedef struct _BA_ORI_ENTRY {
UCHAR Wcid ;
UCHAR TID ;
UCHAR BAWinSize ;
UCHAR Token ;
2008-10-28 21:48:09 +00:00
// Sequence is to fill every outgoing QoS DATA frame's sequence field in 802.11 header.
2009-12-11 20:23:14 +00:00
USHORT Sequence ;
USHORT TimeOutValue ;
ORI_BLOCKACK_STATUS ORI_BA_Status ;
2008-10-28 21:48:09 +00:00
RALINK_TIMER_STRUCT ORIBATimer ;
2009-12-11 20:23:14 +00:00
PVOID pAdapter ;
2008-10-28 21:48:09 +00:00
} BA_ORI_ENTRY , * PBA_ORI_ENTRY ;
typedef struct _BA_REC_ENTRY {
2009-12-11 20:23:14 +00:00
UCHAR Wcid ;
UCHAR TID ;
UCHAR BAWinSize ; // 7.3.1.14. each buffer is capable of holding a max AMSDU or MSDU.
//UCHAR NumOfRxPkt;
2009-09-22 18:44:07 +00:00
//UCHAR Curindidx; // the head in the RX reordering buffer
2009-12-11 20:23:14 +00:00
USHORT LastIndSeq ;
// USHORT LastIndSeqAtTimer;
USHORT TimeOutValue ;
2008-10-28 21:48:09 +00:00
RALINK_TIMER_STRUCT RECBATimer ;
2009-12-11 20:23:14 +00:00
ULONG LastIndSeqAtTimer ;
ULONG nDropPacket ;
ULONG rcvSeq ;
REC_BLOCKACK_STATUS REC_BA_Status ;
// UCHAR RxBufIdxUsed;
2009-09-22 18:44:07 +00:00
// corresponding virtual address for RX reordering packet storage.
//RTMP_REORDERDMABUF MAP_RXBuf[MAX_RX_REORDERBUF];
2009-12-11 20:23:14 +00:00
NDIS_SPIN_LOCK RxReRingLock ; // Rx Ring spinlock
// struct _BA_REC_ENTRY *pNext;
PVOID pAdapter ;
struct reordering_list list ;
2008-10-28 21:48:09 +00:00
} BA_REC_ENTRY , * PBA_REC_ENTRY ;
typedef struct {
2009-12-11 20:23:14 +00:00
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[]
ULONG numDoneOriginator ; // count Done Originator sessions
BA_ORI_ENTRY BAOriEntry [ MAX_LEN_OF_BA_ORI_TABLE ] ;
BA_REC_ENTRY BARecEntry [ MAX_LEN_OF_BA_REC_TABLE ] ;
2008-10-28 21:48:09 +00:00
} BA_TABLE , * PBA_TABLE ;
//For QureyBATableOID use;
2009-12-11 20:23:14 +00:00
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 ] ;
2008-10-28 21:48:09 +00:00
} OID_BA_REC_ENTRY , * POID_BA_REC_ENTRY ;
//For QureyBATableOID use;
2009-12-11 20:23:14 +00:00
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 ] ;
2008-10-28 21:48:09 +00:00
} OID_BA_ORI_ENTRY , * POID_BA_ORI_ENTRY ;
2009-12-11 20:23:14 +00:00
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
2008-10-28 21:48:09 +00:00
} QUERYBA_TABLE , * PQUERYBA_TABLE ;
2009-12-11 20:23:14 +00:00
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 ;
2008-10-28 21:48:09 +00:00
} BACAP_STRUC , * PBACAP_STRUC ;
2009-09-22 18:44:07 +00:00
typedef struct {
2009-12-11 20:23:14 +00:00
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.
2009-09-22 18:44:07 +00:00
} 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)
2009-12-11 20:23:14 +00:00
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 ;
2008-10-28 21:48:09 +00:00
} IOT_STRUC , * PIOT_STRUC ;
// This is the registry setting for 802.11n transmit setting. Used in advanced page.
typedef union _REG_TRANSMIT_SETTING {
2009-12-11 20:23:14 +00:00
struct {
//UINT32 PhyMode:4;
//UINT32 MCS:7; // MCS
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 ;
2008-10-28 21:48:09 +00:00
} REG_TRANSMIT_SETTING , * PREG_TRANSMIT_SETTING ;
2009-12-11 20:23:14 +00:00
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 ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
/***************************************************************************
* USB - based chip Beacon related data structures
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# define BEACON_BITMAP_MASK 0xff
2009-12-11 20:23:14 +00:00
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 ;
2009-09-22 18:44:07 +00:00
# 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
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2009-12-11 20:23:14 +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 */
2008-10-28 21:48:09 +00:00
/* 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 {
2009-12-11 20:23:14 +00:00
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
UINT8 RegulatoryClass ;
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
2009-12-11 20:23:14 +00:00
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 */
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
2009-12-11 20:23:14 +00:00
//HTTRANSMIT_SETTING HTPhyMode, MaxHTPhyMode, MinHTPhyMode;// For transmit phy setting in TXWI.
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
2009-12-11 20:23:14 +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
//BOOLEAN bAutoTxRateSwitch;
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
UINT8 PwrConstraint ;
BACAP_STRUC BACapability ; // NO USE = 0XFF ; IMMED_BA =1 ; DELAY_BA=0
BACAP_STRUC REGBACapability ; // NO USE = 0XFF ; IMMED_BA =1 ; DELAY_BA=0
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)
BOOLEAN bEnableTxBurst ; // 1: enble TX PACKET BURST (when BA is established or AP is not a legacy WMM AP), 0: disable TX PACKET BURST
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 ;
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
2008-10-28 21:48:09 +00:00
// 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
2009-12-11 20:23:14 +00:00
ULONG OpStatusFlags ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
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.
2008-10-28 21:48:09 +00:00
// IEEE802.11H--DFS.
2009-12-11 20:23:14 +00:00
RADAR_DETECT_STRUCT RadarDetect ;
2008-10-28 21:48:09 +00:00
// HT
2009-12-11 20:23:14 +00:00
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.
2008-10-28 21:48:09 +00:00
//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.
2009-12-11 20:23:14 +00:00
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
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
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<--
2009-12-11 20:23:14 +00:00
BOOLEAN bGreenAPEnable ;
2009-09-22 18:44:07 +00:00
//2008/11/05: KH add to support Antenna power-saving of AP-->
2009-12-11 20:23:14 +00:00
BOOLEAN bDisableReordering ;
BOOLEAN bForty_Mhz_Intolerant ;
BOOLEAN bExtChannelSwitchAnnouncement ;
BOOLEAN bRcvBSSWidthTriggerEvents ;
ULONG LastRcvBSSWidthTriggerEventsTime ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
UCHAR TxBASize ;
2008-10-28 21:48:09 +00:00
// Enable wireless event
2009-12-11 20:23:14 +00:00
BOOLEAN bWirelessEvent ;
BOOLEAN bWiFiTest ; // Enable this parameter for WiFi test
2008-10-28 21:48:09 +00:00
// Tx & Rx Stream number selection
2009-12-11 20:23:14 +00:00
UCHAR TxStream ;
UCHAR RxStream ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN bHardwareRadio ; // Hardware controlled Radio enabled
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
2009-12-11 20:23:14 +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 ;
BOOLEAN IsUpdateBeacon ;
BEACON_SYNC_STRUCT * pBeaconSync ;
RALINK_TIMER_STRUCT BeaconUpdateTimer ;
UINT32 BeaconAdjust ;
UINT32 BeaconFactor ;
UINT32 BeaconRemain ;
# endif // RTMP_MAC_USB //
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_SPIN_LOCK MeasureReqTabLock ;
PMEASURE_REQ_TAB pMeasureReqTab ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_SPIN_LOCK TpcReqTabLock ;
PTPC_REQ_TAB pTpcReqTab ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN PSPXlink ; // 0: Disable. 1: Enable
2009-09-22 18:44:07 +00:00
# if defined(RT305x)||defined(RT30xx)
// request by Gary, for High Power issue
2009-12-11 20:23:14 +00:00
UCHAR HighPowerPatchDisabled ;
2009-09-22 18:44:07 +00:00
# endif
2009-12-11 20:23:14 +00:00
BOOLEAN HT_DisallowTKIP ; /* Restrict the encryption type in 11n HT mode */
2008-10-28 21:48:09 +00:00
} COMMON_CONFIG , * PCOMMON_CONFIG ;
/* 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
2009-12-11 20:23:14 +00:00
UCHAR BssType ; // BSS_INFRA or BSS_ADHOC
USHORT AtimWin ; // used when starting a new IBSS
2008-10-28 21:48:09 +00:00
// 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
2009-12-11 20:23:14 +00:00
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
2008-10-28 21:48:09 +00:00
// MIB:ieee802dot11.dot11smt(1).dot11StationConfigTable(1)
2009-12-11 20:23:14 +00:00
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
2008-10-28 21:48:09 +00:00
// Add to support different cipher suite for WPA2/WPA mode
2009-12-11 20:23:14 +00:00
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 ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_802_11_WEP_STATUS GroupKeyWepStatus ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
UCHAR WpaPassPhrase [ 64 ] ; // WPA PSK pass phrase
UINT WpaPassPhraseLen ; // the length of WPA PSK pass phrase
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
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
UCHAR DefaultKeyId ;
2008-10-28 21:48:09 +00:00
// WPA 802.1x port control, WPA_802_1X_PORT_SECURED, WPA_802_1X_PORT_NOT_SECURED
2009-12-11 20:23:14 +00:00
UCHAR PortSecured ;
2008-10-28 21:48:09 +00:00
// For WPA countermeasures
2009-12-11 20:23:14 +00:00
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.
2008-10-28 21:48:09 +00:00
// For WPA-PSK supplicant state
2009-12-11 20:23:14 +00:00
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
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
UCHAR LastSNR0 ; // last received BEACON's SNR
UCHAR LastSNR1 ; // last received BEACON's SNR for 2nd antenna
2008-10-28 21:48:09 +00:00
RSSI_SAMPLE RssiSample ;
2009-12-11 20:23:14 +00:00
ULONG NumOfAvgRssiSample ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
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
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
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
2009-12-11 20:23:14 +00:00
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
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
2008-10-28 21:48:09 +00:00
// Hack for channel load and noise histogram parameters
2009-12-11 20:23:14 +00:00
UCHAR NHFactor ; // Parameter for Noise histogram
UCHAR CLFactor ; // Parameter for channel load
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
RALINK_TIMER_STRUCT StaQuickResponeForRateUpTimer ;
BOOLEAN StaQuickResponeForRateUpTimerRunning ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
UCHAR DtimCount ; // 0.. DtimPeriod-1
UCHAR DtimPeriod ; // default = 3
2008-10-28 21:48:09 +00:00
////////////////////////////////////////////////////////////////////////////////////////
// This is only for WHQL test.
2009-12-11 20:23:14 +00:00
BOOLEAN WhqlTest ;
2008-10-28 21:48:09 +00:00
////////////////////////////////////////////////////////////////////////////////////////
2009-12-11 20:23:14 +00:00
RALINK_TIMER_STRUCT WpaDisassocAndBlockAssocTimer ;
// Fast Roaming
BOOLEAN bAutoRoaming ; // 0:disable auto roaming by RSSI, 1:enable auto roaming by RSSI
CHAR dBmToRoam ; // the condition to roam when receiving Rssi less than this value. It's negative value.
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN IEEE8021X ;
BOOLEAN IEEE8021x_required_keys ;
CIPHER_KEY DesireSharedKey [ 4 ] ; // Record user desired WEP keys
UCHAR DesireSharedKeyId ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
// 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 ;
BOOLEAN bRSN_IE_FromWpaSupplicant ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
CHAR dev_name [ 16 ] ;
USHORT OriDevType ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN bTGnWifiTest ;
BOOLEAN bScanReqIsFromWebUI ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
HTTRANSMIT_SETTING HTPhyMode , MaxHTPhyMode , MinHTPhyMode ; // For transmit phy setting in TXWI.
DESIRED_TRANSMIT_SETTING DesiredTransmitSetting ;
RT_HT_PHY_INFO DesiredHtPhyInfo ;
BOOLEAN bAutoTxRateSwitch ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_PCI
2009-12-11 20:23:14 +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.
2009-12-11 20:23:14 +00:00
PS_CONTROL PSControl ;
# endif // RTMP_MAC_PCI //
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
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 {
2009-12-11 20:23:14 +00:00
USHORT Aid ;
USHORT AtimWin ; // in kusec; IBSS parameter set element
USHORT CapabilityInfo ;
USHORT CfpMaxDuration ;
USHORT CfpPeriod ;
2008-10-28 21:48:09 +00:00
// Copy supported rate from desired AP's beacon. We are trying to match
// AP's supported and extended rate settings.
2009-12-11 20:23:14 +00:00
UCHAR SupRate [ MAX_LEN_OF_SUPPORTED_RATES ] ;
UCHAR ExtRate [ MAX_LEN_OF_SUPPORTED_RATES ] ;
UCHAR SupRateLen ;
UCHAR ExtRateLen ;
2008-10-28 21:48:09 +00:00
// Copy supported ht from desired AP's beacon. We are trying to match
2009-12-11 20:23:14 +00:00
RT_HT_PHY_INFO SupportedPhyInfo ;
RT_HT_CAPABILITY SupportedHtPhy ;
2008-10-28 21:48:09 +00:00
} STA_ACTIVE_CONFIG , * PSTA_ACTIVE_CONFIG ;
typedef struct _MAC_TABLE_ENTRY {
//Choose 1 from ValidAsWDS and ValidAsCLI to validize.
2009-12-11 20:23:14 +00:00
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
2008-10-28 21:48:09 +00:00
//jan for wpa
// record which entry revoke MIC Failure , if it leaves the BSS itself, AP won't update aMICFailTime MIB
2009-12-11 20:23:14 +00:00
UCHAR CMTimerRunning ;
UCHAR apidx ; // MBSS number
UCHAR RSNIE_Len ;
UCHAR RSN_IE [ MAX_LEN_OF_RSNIE ] ;
UCHAR ANonce [ LEN_KEY_DESC_NONCE ] ;
UCHAR SNonce [ LEN_KEY_DESC_NONCE ] ;
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 ;
NDIS_802_11_WEP_STATUS GroupKeyWepStatus ;
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 ;
2008-10-28 21:48:09 +00:00
//====================================================
//WDS entry needs these
2009-09-22 18:44:07 +00:00
// if ValidAsWDS==TRUE, MatchWDSTabIdx is the index in WdsTab.MacTab
2009-12-11 20:23:14 +00:00
UINT MatchWDSTabIdx ;
UCHAR MaxSupportedRate ;
UCHAR CurrTxRate ;
UCHAR CurrTxRateIndex ;
2008-10-28 21:48:09 +00:00
// to record the each TX rate's quality. 0 is best, the bigger the worse.
2009-12-11 20:23:14 +00:00
USHORT TxQuality [ MAX_STEP_OF_TX_RATE_SWITCH ] ;
// USHORT OneSecTxOkCount;
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
2008-10-28 21:48:09 +00:00
//====================================================
2009-12-11 20:23:14 +00:00
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 ] ;
2008-10-28 21:48:09 +00:00
// 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
2009-12-11 20:23:14 +00:00
ULONG ClientStatusFlags ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
HTTRANSMIT_SETTING HTPhyMode , MaxHTPhyMode , MinHTPhyMode ; // For transmit phy setting in TXWI.
2008-10-28 21:48:09 +00:00
// HT EWC MIMO-N used parameters
2009-12-11 20:23:14 +00:00
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
2008-10-28 21:48:09 +00:00
// 802.11n features.
2009-12-11 20:23:14 +00:00
UCHAR MpduDensity ;
UCHAR MaxRAmpduFactor ;
UCHAR AMsduSize ;
UCHAR MmpsMode ; // MIMO power save more.
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
HT_CAPABILITY_IE HTCapability ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN bAutoTxRateSwitch ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
UCHAR RateLen ;
2008-10-28 21:48:09 +00:00
struct _MAC_TABLE_ENTRY * pNext ;
2009-12-11 20:23:14 +00:00
USHORT TxSeq [ NUM_OF_TID ] ;
USHORT NonQosDataSeq ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
RSSI_SAMPLE RssiSample ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
UINT32 TXMCSExpected [ 16 ] ;
UINT32 TXMCSSuccessful [ 16 ] ;
UINT32 TXMCSFailed [ 16 ] ;
UINT32 TXMCSAutoFallBack [ 16 ] [ 16 ] ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +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 {
2009-12-11 20:23:14 +00:00
USHORT Size ;
2008-10-28 21:48:09 +00:00
MAC_TABLE_ENTRY * Hash [ HASH_TABLE_SIZE ] ;
MAC_TABLE_ENTRY Content [ MAX_LEN_OF_MAC_TABLE ] ;
2009-12-11 20:23:14 +00:00
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
BOOLEAN fAllStationAsRalink ; // Check if all stations are ralink-chipset
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 ;
2009-12-11 20:23:14 +00:00
struct wificonf {
BOOLEAN bShortGI ;
2008-10-28 21:48:09 +00:00
BOOLEAN bGreenField ;
} ;
2009-12-11 20:23:14 +00:00
typedef struct _RTMP_DEV_INFO_ {
UCHAR chipName [ 16 ] ;
RTMP_INF_TYPE infType ;
} RTMP_DEV_INFO ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
struct _RTMP_CHIP_OP_ {
2009-09-22 18:44:07 +00:00
/* Calibration access related callback functions */
2009-12-11 20:23:14 +00:00
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); */
2009-09-22 18:44:07 +00:00
/* MCU related callback functions */
2009-12-11 20:23:14 +00:00
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); */
2009-09-22 18:44:07 +00:00
/* RF access related callback functions */
REG_PAIR * pRFRegTable ;
2009-12-11 20:23:14 +00:00
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 ) ;
2009-09-22 18:44:07 +00:00
} ;
2008-10-28 21:48:09 +00:00
//
// The miniport adapter structure
//
2009-12-11 20:23:14 +00:00
struct _RTMP_ADAPTER {
PVOID OS_Cookie ; // save specific structure relative to OS
PNET_DEV net_dev ;
ULONG VirtualIfCnt ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
RTMP_CHIP_OP chipOps ;
USHORT ThisTbttNumToNextWakeUp ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_PCI
/*****************************************************************************************/
/* PCI related parameters */
/*****************************************************************************************/
2009-12-11 20:23:14 +00:00
PUCHAR CSRBaseAddress ; // PCI MMIO Base Address, all access will use
unsigned int irq_num ;
USHORT LnkCtrlBitMask ;
USHORT RLnkCtrlConfiguration ;
USHORT RLnkCtrlOffset ;
USHORT HostLnkCtrlConfiguration ;
USHORT HostLnkCtrlOffset ;
USHORT PCIePowerSaveLevel ;
ULONG Rt3xxHostLinkCtrl ; // USed for 3090F chip
ULONG Rt3xxRalinkLinkCtrl ; // USed for 3090F chip
USHORT DeviceID ; // Read from PCI config
ULONG AccessBBPFailCount ;
BOOLEAN bPCIclkOff ; // flag that indicate if the PICE power status in Configuration SPace..
BOOLEAN bPCIclkOffDisableTx ; //
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.
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
# endif // RTMP_MAC_PCI //
NDIS_SPIN_LOCK irq_lock ;
UCHAR irq_disabled ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
2009-04-26 14:06:25 +00:00
/*****************************************************************************************/
/* USB related parameters */
/*****************************************************************************************/
2009-12-11 20:23:14 +00:00
struct usb_config_descriptor * config ;
UINT BulkInEpAddr ; // bulk-in endpoint address
UINT BulkOutEpAddr [ 6 ] ; // bulk-out endpoint address
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
UINT NumberOfPipes ;
USHORT BulkOutMaxPacketSize ;
USHORT BulkInMaxPacketSize ;
2009-04-26 14:06:25 +00:00
//======Control Flags
2009-12-11 20:23:14 +00:00
LONG PendingIoCount ;
ULONG BulkFlags ;
BOOLEAN bUsbTxBulkAggre ; // Flags for bulk out data priority
2009-04-26 14:06:25 +00:00
//======Cmd Thread
2009-12-11 20:23:14 +00:00
CmdQ CmdQ ;
NDIS_SPIN_LOCK CmdQLock ; // CmdQLock spinlock
RTMP_OS_TASK cmdQTask ;
2009-04-26 14:06:25 +00:00
//======Semaphores (event)
2009-12-11 20:23:14 +00:00
RTMP_OS_SEM UsbVendorReq_semaphore ;
PVOID UsbVendorReqBuf ;
wait_queue_head_t * wait ;
# endif // RTMP_MAC_USB //
2009-09-22 18:44:07 +00:00
/*****************************************************************************************/
/* 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-12-11 20:23:14 +00:00
//RTMP_DEV_INFO chipInfo;
RTMP_INF_TYPE infType ;
2009-09-22 18:44:07 +00:00
/*****************************************************************************************/
/* Driver Mgmt related parameters */
/*****************************************************************************************/
2009-12-11 20:23:14 +00:00
RTMP_OS_TASK mlmeTask ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_TIMER_TASK_SUPPORT
// If you want use timer task to handle the timer related jobs, enable this.
2009-12-11 20:23:14 +00:00
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 */
/*****************************************************************************************/
2009-12-11 20:23:14 +00:00
BOOLEAN DeQueueRunning [ NUM_OF_TX_RING ] ; // for ensuring RTUSBDeQueuePacket get call once
NDIS_SPIN_LOCK DeQueueLock [ NUM_OF_TX_RING ] ;
2008-10-28 21:48:09 +00:00
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
2009-12-11 20:23:14 +00:00
NDIS_SPIN_LOCK BulkOutLock [ 6 ] ; // BulkOut spinlock for 4 ACs
NDIS_SPIN_LOCK MLMEBulkOutLock ; // MLME BulkOut lock
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
HT_TX_CONTEXT TxContext [ NUM_OF_TX_RING ] ;
NDIS_SPIN_LOCK TxContextQueueLock [ NUM_OF_TX_RING ] ; // TxContextQueue spinlock
2009-04-26 14:06:25 +00:00
// 4 sets of Bulk Out index and pending flag
2009-12-11 20:23:14 +00:00
UCHAR NextBulkOutIndex [ 4 ] ; // only used for 4 EDCA bulkout pipe
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN BulkOutPending [ 6 ] ; // used for total 6 bulkout pipe
UCHAR bulkResetPipeid ;
BOOLEAN MgmtBulkPending ;
ULONG bulkResetReq [ 6 ] ;
# endif // RTMP_MAC_USB //
2008-10-28 21:48:09 +00:00
// resource for software backlog queues
2009-12-11 20:23:14 +00:00
QUEUE_HEADER TxSwQueue [ NUM_OF_TX_RING ] ; // 4 AC + 1 HCCA
NDIS_SPIN_LOCK TxSwQueueLock [ NUM_OF_TX_RING ] ; // TxSwQueue spinlock
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
RTMP_DMABUF MgmtDescRing ; // Shared memory for MGMT descriptors
RTMP_MGMT_RING MgmtRing ;
NDIS_SPIN_LOCK MgmtRingLock ; // Prio Ring spinlock
2008-10-28 21:48:09 +00:00
/*****************************************************************************************/
/* Rx related parameters */
/*****************************************************************************************/
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_PCI
2009-12-11 20:23:14 +00:00
RTMP_RX_RING RxRing ;
NDIS_SPIN_LOCK RxRingLock ; // Rx Ring spinlock
2009-09-22 18:44:24 +00:00
# ifdef RT3090
2009-12-11 20:23:14 +00:00
NDIS_SPIN_LOCK McuCmdLock ; //MCU Command Queue spinlock
# endif // RT3090 //
# endif // RTMP_MAC_PCI //
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
2009-12-11 20:23:14 +00:00
RX_CONTEXT RxContext [ RX_RING_SIZE ] ; // 1 for redundant multiple IRP bulk in.
NDIS_SPIN_LOCK BulkInLock ; // BulkIn spinlock for 4 ACs
UCHAR PendingRx ; // The Maximum pending Rx value should be RX_RING_SIZE.
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
# endif // RTMP_MAC_USB //
2008-10-28 21:48:09 +00:00
/*****************************************************************************************/
/* ASIC related parameters */
/*****************************************************************************************/
2009-12-11 20:23:14 +00:00
UINT32 MACVersion ; // MAC version. Record rt2860C(0x28600100) or rt2860D (0x28600101)..
2008-10-28 21:48:09 +00:00
// ---------------------------
// E2PROM
// ---------------------------
2009-12-11 20:23:14 +00:00
ULONG EepromVersion ; // byte 0: version, byte 1: revision, byte 2~3: unused
ULONG FirmwareVersion ; // byte 0: Minor version, byte 1: Major version, otherwise unused.
USHORT EEPROMDefaultValue [ NUM_EEPROM_BBP_PARMS ] ;
UCHAR EEPROMAddressNum ; // 93c46=6 93c66=8
BOOLEAN EepromAccess ;
UCHAR EFuseTag ;
2008-10-28 21:48:09 +00:00
// ---------------------------
// BBP Control
// ---------------------------
2009-12-11 20:23:14 +00:00
UCHAR BbpWriteLatch [ 140 ] ; // record last BBP register value written via BBP_IO_WRITE/BBP_IO_WRITE_VY_REG_ID
CHAR BbpRssiToDbmDelta ; // change from UCHAR to CHAR for high power
BBP_R66_TUNING BbpTuning ;
2008-10-28 21:48:09 +00:00
// ----------------------------
// RFIC control
// ----------------------------
2009-12-11 20:23:14 +00:00
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
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
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 ;
2008-10-28 21:48:09 +00:00
// This soft Rx Antenna Diversity mechanism is used only when user set
// RX Antenna = DIVERSITY ON
2009-12-11 20:23:14 +00:00
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
2009-12-11 20:23:14 +00:00
UCHAR Bbp25 ;
UCHAR Bbp26 ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
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
// ----------------------------
2009-12-11 20:23:14 +00:00
MCU_LEDCS_STRUC LedCntl ;
USHORT Led1 ; // read from EEPROM 0x3c
USHORT Led2 ; // EEPROM 0x3e
USHORT Led3 ; // EEPROM 0x40
UCHAR LedIndicatorStrength ;
UCHAR RssiSingalstrengthOffet ;
BOOLEAN bLedOnScanning ;
UCHAR LedStatus ;
2008-10-28 21:48:09 +00:00
/*****************************************************************************************/
/* 802.11 related parameters */
/*****************************************************************************************/
// outgoing BEACON frame buffer and corresponding TXD
2009-12-11 20:23:14 +00:00
TXWI_STRUC BeaconTxWI ;
PUCHAR BeaconBuf ;
USHORT BeaconOffset [ HW_BEACON_MAX_COUNT ] ;
2008-10-28 21:48:09 +00:00
// pre-build PS-POLL and NULL frame upon link up. for efficiency purpose.
2009-12-11 20:23:14 +00:00
PSPOLL_FRAME PsPollFrame ;
HEADER_802_11 NullFrame ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
2009-12-11 20:23:14 +00:00
TX_CONTEXT BeaconContext [ BEACON_RING_SIZE ] ;
TX_CONTEXT NullContext ;
TX_CONTEXT PsPollContext ;
TX_CONTEXT RTSContext ;
# 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
// -----------------------------------------------
2009-12-11 20:23:14 +00:00
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 ;
2008-10-28 21:48:09 +00:00
//=======Common===========
// OP mode: either AP or STA
2009-12-11 20:23:14 +00:00
UCHAR OpMode ; // OPMODE_STA, OPMODE_AP
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_MEDIA_STATE IndicateMediaState ; // Base on Indication state, default is NdisMediaStateDisConnected
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
/* MAT related parameters */
2008-10-28 21:48:09 +00:00
// configuration: read from Registry & E2PROM
2009-12-11 20:23:14 +00:00
BOOLEAN bLocalAdminMAC ; // Use user changed MAC
UCHAR PermanentAddress [ MAC_ADDR_LEN ] ; // Factory default MAC address
UCHAR CurrentAddress [ MAC_ADDR_LEN ] ; // User changed MAC address
2008-10-28 21:48:09 +00:00
// ------------------------------------------------------
// common configuration to both OPMODE_STA and OPMODE_AP
// ------------------------------------------------------
2009-12-11 20:23:14 +00:00
COMMON_CONFIG CommonCfg ;
MLME_STRUCT Mlme ;
2008-10-28 21:48:09 +00:00
// AP needs those vaiables for site survey feature.
2009-12-11 20:23:14 +00:00
MLME_AUX MlmeAux ; // temporary settings used during MLME state machine
BSS_TABLE ScanTab ; // store the latest SCAN result
2008-10-28 21:48:09 +00:00
//About MacTab, the sta driver will use #0 and #1 for multicast and AP.
2009-12-11 20:23:14 +00:00
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 ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BA_TABLE BATable ;
2009-04-26 14:06:00 +00:00
2009-12-11 20:23:14 +00:00
NDIS_SPIN_LOCK BATabLock ;
2008-10-28 21:48:09 +00:00
RALINK_TIMER_STRUCT RECBATimer ;
// encryption/decryption KEY tables
2009-12-11 20:23:14 +00:00
CIPHER_KEY SharedKey [ MAX_MBSSID_NUM ] [ 4 ] ; // STA always use SharedKey[BSS0][0..3]
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
// RX re-assembly buffer for fragmentation
FRAGMENT_FRAME FragFrame ; // Frame storage for fragment frame
2008-10-28 21:48:09 +00:00
// various Counters
2009-12-11 20:23:14 +00:00
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
2008-10-28 21:48:09 +00:00
// flags, see fRTMP_ADAPTER_xxx flags
2009-12-11 20:23:14 +00:00
ULONG Flags ; // Represent current device status
ULONG PSFlags ; // Power Save operation flag.
2008-10-28 21:48:09 +00:00
// current TX sequence #
2009-12-11 20:23:14 +00:00
USHORT Sequence ;
2008-10-28 21:48:09 +00:00
// Control disconnect / connect event generation
//+++Didn't used anymore
2009-12-11 20:23:14 +00:00
ULONG LinkDownTime ;
2008-10-28 21:48:09 +00:00
//---
2009-12-11 20:23:14 +00:00
ULONG LastRxRate ;
ULONG LastTxRate ;
2008-10-28 21:48:09 +00:00
//+++Used only for Station
2009-12-11 20:23:14 +00:00
BOOLEAN bConfigChanged ; // Config Change flag for the same SSID setting
2008-10-28 21:48:09 +00:00
//---
2009-12-11 20:23:14 +00:00
ULONG ExtraInfo ; // Extra information for displaying status
ULONG SystemErrorBitmap ; // b0: E2PROM version error
2008-10-28 21:48:09 +00:00
//+++Didn't used anymore
2009-12-11 20:23:14 +00:00
ULONG MacIcVersion ; // MAC/BBP serial interface issue solved after ver.D
2008-10-28 21:48:09 +00:00
//---
// ---------------------------
// System event log
// ---------------------------
2009-12-11 20:23:14 +00:00
RT_802_11_EVENT_TABLE EventTab ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN HTCEnable ;
2008-10-28 21:48:09 +00:00
/*****************************************************************************************/
/* Statistic related parameters */
/*****************************************************************************************/
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
2009-12-11 20:23:14 +00:00
ULONG BulkOutDataOneSecCount ;
ULONG BulkInDataOneSecCount ;
ULONG BulkLastOneSecCount ; // BulkOutDataOneSecCount + BulkInDataOneSecCount
ULONG watchDogRxCnt ;
ULONG watchDogRxOverFlowCnt ;
ULONG watchDogTxPendingCnt [ NUM_OF_TX_RING ] ;
INT TransferedLength [ NUM_OF_TX_RING ] ;
# endif // RTMP_MAC_USB //
BOOLEAN bUpdateBcnCntDone ;
ULONG watchDogMacDeadlock ; // prevent MAC/BBP into deadlock condition
2008-10-28 21:48:09 +00:00
// ----------------------------
// DEBUG paramerts
// ----------------------------
2009-12-11 20:23:14 +00:00
//ULONG DebugSetting[4];
BOOLEAN bBanAllBaSetup ;
BOOLEAN bPromiscuous ;
2008-10-28 21:48:09 +00:00
// ----------------------------
// rt2860c emulation-use Parameters
// ----------------------------
2009-12-11 20:23:14 +00:00
//ULONG rtsaccu[30];
//ULONG ctsaccu[30];
//ULONG cfendaccu[30];
//ULONG bacontent[16];
//ULONG rxint[RX_RING_SIZE+1];
//UCHAR rcvba[60];
BOOLEAN bLinkAdapt ;
BOOLEAN bForcePrintTX ;
BOOLEAN bForcePrintRX ;
//BOOLEAN bDisablescanning; //defined in RT2870 USB
BOOLEAN bStaFifoTest ;
BOOLEAN bProtectionTest ;
BOOLEAN bBroadComHT ;
2008-10-28 21:48:09 +00:00
//+++Following add from RT2870 USB.
2009-12-11 20:23:14 +00:00
ULONG BulkOutReq ;
ULONG BulkOutComplete ;
ULONG BulkOutCompleteOther ;
ULONG BulkOutCompleteCancel ; // seems not use now?
ULONG BulkInReq ;
ULONG BulkInComplete ;
ULONG BulkInCompleteFail ;
2008-10-28 21:48:09 +00:00
//---
2009-12-11 20:23:14 +00:00
struct wificonf WIFItestbed ;
2008-10-28 21:48:09 +00:00
struct reordering_mpdu_pool mpdu_blk_pool ;
2009-12-11 20:23:14 +00:00
ULONG OneSecondnonBEpackets ; // record non BE packets per second
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
# ifdef LINUX
2009-12-11 20:23:14 +00:00
struct iw_statistics iw_stats ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
struct net_device_stats stats ;
# endif // LINUX //
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
ULONG TbttTickCount ;
2008-10-28 21:48:09 +00:00
# ifdef PCI_MSI_SUPPORT
2009-12-11 20:23:14 +00:00
BOOLEAN HaveMsi ;
# endif // PCI_MSI_SUPPORT //
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
UCHAR is_on ;
2008-10-28 21:48:09 +00:00
# define TIME_BASE (1000000 / OS_HZ)
# define TIME_ONE_SECOND (1000000 / TIME_BASE)
2009-12-11 20:23:14 +00:00
UCHAR flg_be_adjust ;
ULONG be_adjust_last_time ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
UINT8 FlgCtsEnabled ;
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-12-11 20:23:14 +00:00
BOOLEAN bUseEfuse ;
UCHAR EEPROMImage [ 1024 ] ;
# endif // RTMP_EFUSE_SUPPORT //
# endif // RT30xx //
2009-09-22 18:44:07 +00:00
} ;
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
2009-12-11 20:23:14 +00:00
# define TBTTInt 0x00000800 // TBTT interrupt
# define GPTimeOutInt 0x00008000 // GPtimeout interrupt
# define AutoWakeupInt 0x00004000 // AutoWakeupInt interrupt
2008-10-28 21:48:09 +00:00
# define FifoStaFullInt 0x00002000 // fifo statistics full interrupt
2009-09-22 18:44:07 +00:00
/***************************************************************************
* Rx Path software control block related data structures
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2009-12-11 20:23:14 +00:00
typedef struct _RX_BLK_ {
// RXD_STRUC RxD; // sample
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
2008-10-28 21:48:09 +00:00
} 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
2009-12-11 20:23:14 +00:00
// 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
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
QUEUE_HEADER TxPacketList ;
MAC_TABLE_ENTRY * pMacEntry ; // NULL: packet with 802.11 RA field is multicast/broadcast address
HTTRANSMIT_SETTING * pTransmit ;
2008-10-28 21:48:09 +00:00
// Following structure used for the characteristics of a specific packet.
2009-12-11 20:23:14 +00:00
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
UCHAR HeaderBuf [ 128 ] ; // TempBuffer for TX_INFO + TX_WI + 802.11 Header + padding + AMSDU SubHeader + LLC/SNAP
2009-09-22 18:44:07 +00:00
//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
2009-12-11 20:23:14 +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.
2008-10-28 21:48:09 +00:00
//YOU SHOULD NOT TOUCH IT! Following parameters are used for hardware-depended layer.
2009-12-11 20:23:14 +00:00
ULONG Priv ; // Hardware specific value saved in here.
2008-10-28 21:48:09 +00:00
} 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
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2009-12-11 20:23:14 +00:00
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 ;
2009-12-11 20:23:14 +00:00
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 ;
2008-10-28 21:48:09 +00:00
}
return ;
}
2009-09-22 18:44:07 +00:00
char * GetPhyMode ( int Mode ) ;
2009-12-11 20:23:14 +00:00
char * GetBW ( int BW ) ;
2008-10-28 21:48:09 +00:00
//
// Private routines in rtmp_init.c
//
2009-12-11 20:23:14 +00:00
NDIS_STATUS RTMPAllocAdapterBlock ( IN PVOID handle ,
OUT PRTMP_ADAPTER * ppAdapter ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS RTMPAllocTxRxRingMemory ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPFreeAdapter ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS NICReadRegParameters ( IN PRTMP_ADAPTER pAd ,
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
2009-12-11 20:23:14 +00:00
VOID NICInitRFRegisters ( IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID RtmpChipOpsRFHook ( IN RTMP_ADAPTER * pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS RT30xxWriteRFRegister ( IN PRTMP_ADAPTER pAd ,
IN UCHAR regID , IN UCHAR value ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS RT30xxReadRFRegister ( IN PRTMP_ADAPTER pAd ,
IN UCHAR regID , IN PUCHAR pValue ) ;
2009-09-22 18:44:07 +00:00
# endif // RTMP_RF_RW_SUPPORT //
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID NICReadEEPROMParameters ( IN PRTMP_ADAPTER pAd , IN PUCHAR mac_addr ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID NICInitAsicFromEEPROM ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS NICInitializeAdapter ( IN PRTMP_ADAPTER pAd , IN BOOLEAN bHardReset ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS NICInitializeAsic ( IN PRTMP_ADAPTER pAd , IN BOOLEAN bHardReset ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID NICIssueReset ( IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPRingCleanUp ( IN PRTMP_ADAPTER pAd , IN UCHAR RingType ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID UserCfgInit ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID NICResetFromError ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS NICLoadFirmware ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID NICEraseFirmware ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS NICLoadRateSwitchingParams ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN NICCheckForHang ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID NICUpdateFifoStaCounters ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID NICUpdateRawCounters ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPZeroMemory ( IN PVOID pSrc , IN ULONG Length ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
ULONG RTMPCompareMemory ( IN PVOID pSrc1 , IN PVOID pSrc2 , IN ULONG Length ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPMoveMemory ( OUT PVOID pDest , IN PVOID pSrc , IN ULONG Length ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID AtoH ( PSTRING src , PUCHAR dest , int destlen ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
UCHAR BtoH ( char ch ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPPatchMacBbpBug ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPInitTimer ( IN PRTMP_ADAPTER pAd ,
IN PRALINK_TIMER_STRUCT pTimer ,
IN PVOID pTimerFunc , IN PVOID pData , IN BOOLEAN Repeat ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPSetTimer ( IN PRALINK_TIMER_STRUCT pTimer , IN ULONG Value ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPModTimer ( IN PRALINK_TIMER_STRUCT pTimer , IN ULONG Value ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPCancelTimer ( IN PRALINK_TIMER_STRUCT pTimer , OUT BOOLEAN * pCancelled ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPSetLED ( IN PRTMP_ADAPTER pAd , IN UCHAR Status ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPSetSignalLED ( IN PRTMP_ADAPTER pAd , IN NDIS_802_11_RSSI Dbm ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPEnableRxTx ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
//
// prototype in action.c
//
2009-12-11 20:23:14 +00:00
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 ) ;
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 ) ;
2008-10-28 21:48:09 +00:00
//
// Private routines in rtmp_data.c
//
2009-12-11 20:23:14 +00:00
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 ) ;
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 ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_PCI
2009-12-11 20:23:14 +00:00
NDIS_STATUS MlmeHardTransmitTxRing ( IN PRTMP_ADAPTER pAd ,
IN UCHAR QueIdx , IN PNDIS_PACKET pPacket ) ;
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 ) ;
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_PCI //
2009-12-11 20:23:14 +00:00
USHORT RTMPCalcDuration ( IN PRTMP_ADAPTER pAd , IN UCHAR Rate , IN ULONG Size ) ;
2009-08-23 13:31:28 +00:00
2009-12-11 20:23:14 +00:00
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 ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPWriteTxWI_Data ( IN PRTMP_ADAPTER pAd ,
IN OUT PTXWI_STRUC pTxWI , IN TX_BLK * pTxBlk ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPWriteTxWI_Cache ( IN PRTMP_ADAPTER pAd ,
IN OUT PTXWI_STRUC pTxWI , IN TX_BLK * pTxBlk ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPSuspendMsduTransmission ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPResumeMsduTransmission ( IN PRTMP_ADAPTER pAd ) ;
NDIS_STATUS MiniportMMRequest ( IN PRTMP_ADAPTER pAd ,
IN UCHAR QueIdx , IN PUCHAR pData , IN UINT Length ) ;
//+++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
2009-12-11 20:23:14 +00:00
VOID RTMPSendNullFrame ( IN PRTMP_ADAPTER pAd ,
IN UCHAR TxRate , IN BOOLEAN bQosNull ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPSendDisassociationFrame ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
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 ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
PQUEUE_HEADER RTMPCheckTxSwQueue ( IN PRTMP_ADAPTER pAd , OUT UCHAR * QueIdx ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPReportMicError ( IN PRTMP_ADAPTER pAd , IN PCIPHER_KEY pWpaKey ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID WpaMicFailureReportFrame ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID WpaDisassocApAndBlockAssoc ( IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID WpaStaPairwiseKeySetting ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID WpaStaGroupKeySetting ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS RTMPCloneNdisPacket ( IN PRTMP_ADAPTER pAd ,
IN BOOLEAN pInsAMSDUHdr ,
IN PNDIS_PACKET pInPacket ,
OUT PNDIS_PACKET * ppOutPacket ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS RTMPAllocateNdisPacket ( IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET * pPacket ,
IN PUCHAR pHeader ,
IN UINT HeaderLen ,
IN PUCHAR pData , IN UINT DataLen ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPFreeNdisPacket ( IN PRTMP_ADAPTER pAd , IN PNDIS_PACKET pPacket ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
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 ) ;
2008-10-28 21:48:09 +00:00
//
// Private routines in rtmp_wep.c
//
2009-12-11 20:23:14 +00:00
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 ) ;
2008-10-28 21:48:09 +00:00
//
// MLME routines
//
// Asic/RF/BBP related functions
2009-12-11 20:23:14 +00:00
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 ) ;
VOID AsicResetBBPAgent ( IN PRTMP_ADAPTER pAd ) ;
VOID AsicSleepThenAutoWakeup ( IN PRTMP_ADAPTER pAd ,
IN USHORT TbttNumToNextWakeUp ) ;
VOID AsicForceSleep ( IN PRTMP_ADAPTER pAd ) ;
VOID AsicForceWakeup ( IN PRTMP_ADAPTER pAd , IN BOOLEAN bFromTx ) ;
VOID AsicSetBssid ( IN PRTMP_ADAPTER pAd , IN PUCHAR pBssid ) ;
VOID AsicSetMcastWC ( IN PRTMP_ADAPTER pAd ) ;
VOID AsicDelWcidTab ( IN PRTMP_ADAPTER pAd , IN UCHAR Wcid ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
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
2009-12-11 20:23:14 +00:00
BOOLEAN AsicCheckCommanOk ( IN PRTMP_ADAPTER pAd , IN UCHAR Command ) ;
2009-09-22 18:44:07 +00:00
# endif // RTMP_MAC_PCI //
2009-12-11 20:23:14 +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 ) ;
ULONG BssSsidTableSearchBySSID ( IN BSS_TABLE * Tab ,
IN PUCHAR pSsid , IN UCHAR SsidLen ) ;
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 ) ;
2008-10-28 21:48:09 +00:00
//----------------------------------------------
2009-12-11 20:23:14 +00:00
VOID MlmeAssocReqAction ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID MlmeReassocReqAction ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID MlmeDisassocReqAction ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID PeerAssocRspAction ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID PeerReassocRspAction ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID PeerDisassocAction ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID DisassocTimeoutAction ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID AssocTimeoutAction ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID ReassocTimeoutAction ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID Cls3errAction ( IN PRTMP_ADAPTER pAd , IN PUCHAR pAddr ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID InvalidStateWhenAssoc ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID InvalidStateWhenReassoc ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID InvalidStateWhenDisassociate ( IN PRTMP_ADAPTER pAd ,
IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
2009-12-11 20:23:14 +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
2009-12-11 20:23:14 +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 ) ;
2008-10-28 21:48:09 +00:00
//=============================================
2009-12-11 20:23:14 +00:00
VOID AuthRspStateMachineInit ( IN PRTMP_ADAPTER pAd ,
IN PSTATE_MACHINE Sm ,
IN STATE_MACHINE_FUNC Trans [ ] ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID PeerDeauthAction ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID PeerAuthSimpleRspGenAndSend ( IN PRTMP_ADAPTER pAd ,
IN PHEADER_802_11 pHdr80211 ,
IN USHORT Alg ,
IN USHORT Seq ,
IN USHORT Reason , IN USHORT Status ) ;
2008-10-28 21:48:09 +00:00
//
// Private routines in dls.c
//
//========================================
2009-12-11 20:23:14 +00:00
VOID SyncStateMachineInit ( IN PRTMP_ADAPTER pAd ,
IN STATE_MACHINE * Sm ,
OUT STATE_MACHINE_FUNC Trans [ ] ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID BeaconTimeout ( IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 , IN PVOID SystemSpecific3 ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID ScanTimeout ( IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 , IN PVOID SystemSpecific3 ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID InvalidStateWhenScan ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID InvalidStateWhenJoin ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID InvalidStateWhenStart ( IN PRTMP_ADAPTER pAd , IN MLME_QUEUE_ELEM * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID EnqueueProbeRequest ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN ScanRunning ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
//=========================================
2009-12-11 20:23:14 +00:00
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 ,
IN STRING Ssid [ ] ,
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 ) ;
BOOLEAN PeerWpaMessageSanity ( IN PRTMP_ADAPTER pAd ,
IN PEAPOL_PACKET pMsg ,
IN ULONG MsgLen ,
IN UCHAR MsgType , IN MAC_TABLE_ENTRY * pEntry ) ;
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 ( OUT UCHAR * Buffer , 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 ) ;
BOOLEAN MlmeCheckForFastRoaming ( IN PRTMP_ADAPTER pAd ) ;
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 ,
IN PMAC_TABLE_ENTRY pMacEntry , 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 ) ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
# ifdef RT30xx
2009-12-11 20:23:14 +00:00
VOID AsicSetRxAnt ( IN PRTMP_ADAPTER pAd , IN UCHAR Ant ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPFilterCalibration ( IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_EFUSE_SUPPORT
//2008/09/11:KH add to support efuse<--
2009-12-11 20:23:14 +00:00
INT set_eFuseGetFreeBlockCount_Proc ( IN PRTMP_ADAPTER pAd , IN PSTRING arg ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
INT set_eFusedump_Proc ( IN PRTMP_ADAPTER pAd , IN PSTRING arg ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID eFusePhysicalReadRegisters ( IN PRTMP_ADAPTER pAd ,
IN USHORT Offset ,
IN USHORT Length , OUT USHORT * pData ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
int RtmpEfuseSupportCheck ( IN RTMP_ADAPTER * pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID eFuseGetFreeBlockCount ( IN PRTMP_ADAPTER pAd , PUINT EfuseFreeBlock ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
INT eFuse_init ( IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
//2008/09/11:KH add to support efuse-->
# endif // RTMP_EFUSE_SUPPORT //
// add by johnli, RF power sequence setup
2009-12-11 20:23:14 +00:00
VOID RT30xxLoadRFNormalModeSetup ( IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID RT30xxLoadRFSleepModeSetup ( IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID RT30xxReverseRFSleepModeSetup ( IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
// end johnli
# ifdef RT3070
2009-12-11 20:23:14 +00:00
VOID NICInitRT3070RFRegisters ( IN RTMP_ADAPTER * pAd ) ;
2009-09-22 18:44:07 +00:00
# endif // RT3070 //
2009-09-22 18:44:24 +00:00
# ifdef RT3090
2009-12-11 20:23:14 +00:00
VOID NICInitRT3090RFRegisters ( IN RTMP_ADAPTER * pAd ) ;
2009-09-22 18:44:24 +00:00
# endif // RT3090 //
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID RT30xxHaltAction ( IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID RT30xxSetRxAnt ( IN PRTMP_ADAPTER pAd , IN UCHAR Ant ) ;
2009-09-22 18:44:07 +00:00
# endif // RT30xx //
2009-12-11 20:23:14 +00:00
VOID AsicEvaluateRxAnt ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID AsicRxAntEvalTimeout ( IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 , IN PVOID SystemSpecific3 ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID APSDPeriodicExec ( IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 , IN PVOID SystemSpecific3 ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN RTMPCheckEntryEnableAutoRateSwitch ( IN PRTMP_ADAPTER pAd ,
IN PMAC_TABLE_ENTRY pEntry ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
UCHAR RTMPStaFixedTxMode ( IN PRTMP_ADAPTER pAd , IN PMAC_TABLE_ENTRY pEntry ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPUpdateLegacyTxSetting ( UCHAR fixed_tx_mode , PMAC_TABLE_ENTRY pEntry ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN RTMPAutoRateSwitchCheck ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS MlmeInit ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID MlmeHandler ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID MlmeHalt ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID MlmeResetRalinkCounters ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID BuildChannelList ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
UCHAR FirstChannel ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
UCHAR NextChannel ( IN PRTMP_ADAPTER pAd , IN UCHAR channel ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID ChangeToCellPowerLimit ( IN PRTMP_ADAPTER pAd ,
IN UCHAR AironetCellPowerLimit ) ;
2008-10-28 21:48:09 +00:00
//
// Prototypes of function definition in rtmp_tkip.c
//
2009-12-11 20:23:14 +00:00
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 ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN RTMPSoftDecryptTKIP ( IN PRTMP_ADAPTER pAd ,
IN PUCHAR pData ,
IN ULONG DataByteCnt ,
IN UCHAR UserPriority , IN PCIPHER_KEY pWpaKey ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
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
//
2009-12-11 20:23:14 +00:00
INT RT_CfgSetCountryRegion ( IN PRTMP_ADAPTER pAd , IN PSTRING arg , IN INT band ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
INT RT_CfgSetWirelessMode ( IN PRTMP_ADAPTER pAd , IN PSTRING arg ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
INT RT_CfgSetShortSlot ( IN PRTMP_ADAPTER pAd , IN PSTRING arg ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
INT RT_CfgSetWepKey ( IN PRTMP_ADAPTER pAd ,
IN PSTRING keyString ,
IN CIPHER_KEY * pSharedKey , IN INT keyIdx ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
INT RT_CfgSetWPAPSKKey ( IN RTMP_ADAPTER * pAd ,
IN PSTRING keyString ,
IN UCHAR * pHashStr ,
IN INT hashStrLen , OUT PUCHAR pPMKBuf ) ;
2009-09-22 18:44:07 +00:00
2008-10-28 21:48:09 +00:00
//
// Prototypes of function definition in cmm_info.c
//
2009-12-11 20:23:14 +00:00
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 ) ;
PSTRING GetEncryptType ( CHAR enc ) ;
PSTRING GetAuthMode ( 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 ) ;
CHAR ConvertToRssi ( IN PRTMP_ADAPTER pAd , 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
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
2009-12-11 20:23:14 +00:00
VOID RTMPToWirelessSta ( IN PRTMP_ADAPTER pAd ,
IN PMAC_TABLE_ENTRY pEntry ,
IN PUCHAR pHeader802_3 ,
IN UINT HdrLen ,
IN PUCHAR pData ,
IN UINT DataLen , IN BOOLEAN bClearFrame ) ;
VOID WpaDerivePTK ( 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 ) ;
BOOLEAN RTMPCheckWPAframe ( IN PRTMP_ADAPTER pAd ,
IN PMAC_TABLE_ENTRY pEntry ,
IN PUCHAR pData ,
IN ULONG DataByteCount , IN UCHAR FromWhichBSSID ) ;
VOID AES_GTK_KEY_UNWRAP ( IN UCHAR * key ,
OUT UCHAR * plaintext ,
IN UINT32 c_len , IN UCHAR * ciphertext ) ;
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 ) ;
VOID RTMPMakeRSNIE ( IN PRTMP_ADAPTER pAd ,
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
//
2009-12-11 20:23:14 +00:00
VOID RTMPGetTxTscFromAsic ( IN PRTMP_ADAPTER pAd ,
IN UCHAR apidx , OUT PUCHAR pTxTsc ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID APInstallPairwiseKey ( PRTMP_ADAPTER pAd , PMAC_TABLE_ENTRY pEntry ) ;
UINT APValidateRSNIE ( IN PRTMP_ADAPTER pAd ,
IN PMAC_TABLE_ENTRY pEntry ,
IN PUCHAR pRsnIe , IN UCHAR rsnie_len ) ;
VOID HandleCounterMeasure ( IN PRTMP_ADAPTER pAd , IN MAC_TABLE_ENTRY * pEntry ) ;
VOID WPAStart4WayHS ( IN PRTMP_ADAPTER pAd ,
IN MAC_TABLE_ENTRY * pEntry , IN ULONG TimeInterval ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID WPAStart2WayGroupHS ( IN PRTMP_ADAPTER pAd , IN MAC_TABLE_ENTRY * pEntry ) ;
VOID PeerPairMsg1Action ( IN PRTMP_ADAPTER pAd ,
IN MAC_TABLE_ENTRY * pEntry , IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerPairMsg2Action ( IN PRTMP_ADAPTER pAd ,
IN MAC_TABLE_ENTRY * pEntry , IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerPairMsg3Action ( IN PRTMP_ADAPTER pAd ,
IN MAC_TABLE_ENTRY * pEntry , IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerPairMsg4Action ( IN PRTMP_ADAPTER pAd ,
IN MAC_TABLE_ENTRY * pEntry , IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerGroupMsg1Action ( IN PRTMP_ADAPTER pAd ,
IN PMAC_TABLE_ENTRY pEntry , IN MLME_QUEUE_ELEM * Elem ) ;
VOID PeerGroupMsg2Action ( IN PRTMP_ADAPTER pAd ,
IN PMAC_TABLE_ENTRY pEntry ,
IN VOID * Msg , IN UINT MsgLen ) ;
VOID WpaDeriveGTK ( IN UCHAR * PMK ,
IN UCHAR * GNonce ,
IN UCHAR * AA , OUT UCHAR * output , IN UINT len ) ;
VOID AES_GTK_KEY_WRAP ( IN UCHAR * key ,
IN UCHAR * plaintext ,
IN UINT32 p_len , OUT UCHAR * ciphertext ) ;
//typedef void (*TIMER_FUNCTION)(unsigned long);
2008-10-28 21:48:09 +00:00
/* timeout -- ms */
2009-12-11 20:23:14 +00:00
VOID RTMP_SetPeriodicTimer ( IN NDIS_MINIPORT_TIMER * pTimer ,
IN unsigned long timeout ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMP_OS_Init_Timer ( IN PRTMP_ADAPTER pAd ,
IN NDIS_MINIPORT_TIMER * pTimer ,
IN TIMER_FUNCTION function , IN PVOID data ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMP_OS_Add_Timer ( IN NDIS_MINIPORT_TIMER * pTimer ,
IN unsigned long timeout ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMP_OS_Mod_Timer ( IN NDIS_MINIPORT_TIMER * pTimer ,
IN unsigned long timeout ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMP_OS_Del_Timer ( IN NDIS_MINIPORT_TIMER * pTimer ,
OUT BOOLEAN * pCancelled ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMP_OS_Release_Packet ( IN PRTMP_ADAPTER pAd , IN PQUEUE_ENTRY pEntry ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPusecDelay ( IN ULONG usec ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS os_alloc_mem ( IN RTMP_ADAPTER * pAd ,
OUT UCHAR * * mem , IN ULONG size ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS os_free_mem ( IN PRTMP_ADAPTER pAd , IN PVOID mem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
void RTMP_AllocateSharedMemory ( IN PRTMP_ADAPTER pAd ,
IN ULONG Length ,
IN BOOLEAN Cached ,
OUT PVOID * VirtualAddress ,
OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPFreeTxRxRingMemory ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS AdapterBlockAllocateMemory ( IN PVOID handle , OUT PVOID * ppAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
void RTMP_AllocateTxDescMemory ( IN PRTMP_ADAPTER pAd ,
IN UINT Index ,
IN ULONG Length ,
IN BOOLEAN Cached ,
OUT PVOID * VirtualAddress ,
OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
void RTMP_AllocateFirstTxBuffer ( IN PRTMP_ADAPTER pAd ,
IN UINT Index ,
IN ULONG Length ,
IN BOOLEAN Cached ,
OUT PVOID * VirtualAddress ,
OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +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
2009-12-11 20:23:14 +00:00
void RTMP_AllocateMgmtDescMemory ( IN PRTMP_ADAPTER pAd ,
IN ULONG Length ,
IN BOOLEAN Cached ,
OUT PVOID * VirtualAddress ,
OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
void RTMP_AllocateRxDescMemory ( IN PRTMP_ADAPTER pAd ,
IN ULONG Length ,
IN BOOLEAN Cached ,
OUT PVOID * VirtualAddress ,
OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress ) ;
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 ) ;
PNDIS_PACKET RTMP_AllocateRxPacketBuffer ( IN PRTMP_ADAPTER pAd ,
IN ULONG Length ,
IN BOOLEAN Cached ,
OUT PVOID * VirtualAddress ,
OUT PNDIS_PHYSICAL_ADDRESS
PhysicalAddress ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
PNDIS_PACKET RTMP_AllocateTxPacketBuffer ( IN PRTMP_ADAPTER pAd ,
IN ULONG Length ,
IN BOOLEAN Cached ,
OUT PVOID * VirtualAddress ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
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 ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID build_tx_packet ( IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET pPacket ,
IN PUCHAR pFrame , IN ULONG FrameLen ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID BAOriSessionTearDown ( IN OUT PRTMP_ADAPTER pAd ,
IN UCHAR Wcid ,
IN UCHAR TID ,
IN BOOLEAN bPassive , IN BOOLEAN bForceSend ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID BARecSessionTearDown ( IN OUT PRTMP_ADAPTER pAd ,
IN UCHAR Wcid , IN UCHAR TID , IN BOOLEAN bPassive ) ;
2008-10-28 21:48:09 +00:00
BOOLEAN ba_reordering_resource_init ( PRTMP_ADAPTER pAd , int num ) ;
void ba_reordering_resource_release ( PRTMP_ADAPTER pAd ) ;
2009-12-11 20:23:14 +00:00
PSTRING rstrtok ( IN PSTRING s , IN const PSTRING ct ) ;
2008-10-28 21:48:09 +00:00
////////// common ioctl functions //////////
2009-12-11 20:23:14 +00:00
INT SetCommonHT ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
INT WpaCheckEapCode ( IN PRTMP_ADAPTER pAd ,
IN PUCHAR pFrame , IN USHORT FrameLen , IN USHORT OffSet ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID WpaSendMicFailureToWpaSupplicant ( IN PRTMP_ADAPTER pAd ,
IN BOOLEAN bUnicast ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
int wext_notify_event_assoc ( IN RTMP_ADAPTER * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN STARxDoneInterruptHandle ( IN PRTMP_ADAPTER pAd , IN BOOLEAN argc ) ;
2008-10-28 21:48:09 +00:00
// AMPDU packet indication
2009-12-11 20:23:14 +00:00
VOID Indicate_AMPDU_Packet ( IN PRTMP_ADAPTER pAd ,
IN RX_BLK * pRxBlk , IN UCHAR FromWhichBSSID ) ;
2008-10-28 21:48:09 +00:00
// AMSDU packet indication
2009-12-11 20:23:14 +00:00
VOID Indicate_AMSDU_Packet ( IN PRTMP_ADAPTER pAd ,
IN RX_BLK * pRxBlk , IN UCHAR FromWhichBSSID ) ;
2008-10-28 21:48:09 +00:00
// Normal legacy Rx packet indication
2009-12-11 20:23:14 +00:00
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 ) ;
2008-10-28 21:48:09 +00:00
// 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 ) ; \
}
2009-12-11 20:23:14 +00:00
VOID Sta_Announce_or_Forward_802_3_Packet ( IN PRTMP_ADAPTER pAd ,
IN PNDIS_PACKET pPacket ,
IN UCHAR FromWhichBSSID ) ;
2008-10-28 21:48:09 +00:00
# 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);
2009-12-11 20:23:14 +00:00
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 ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
// Normal, AMPDU or AMSDU
VOID CmmRxnonRalinkFrameIndicate ( IN PRTMP_ADAPTER pAd ,
IN RX_BLK * pRxBlk , IN UCHAR FromWhichBSSID ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID CmmRxRalinkFrameIndicate ( IN PRTMP_ADAPTER pAd ,
IN MAC_TABLE_ENTRY * pEntry ,
IN RX_BLK * pRxBlk , IN UCHAR FromWhichBSSID ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID Update_Rssi_Sample ( IN PRTMP_ADAPTER pAd ,
IN RSSI_SAMPLE * pRssi , IN PRXWI_STRUC pRxWI ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
PNDIS_PACKET GetPacketFromRxRing ( IN PRTMP_ADAPTER pAd ,
OUT PRT28XX_RXD_STRUC pSaveRxD ,
OUT BOOLEAN * pbReschedule ,
IN OUT UINT32 * pRxPending ) ;
PNDIS_PACKET RTMPDeFragmentDataFrame ( IN PRTMP_ADAPTER pAd , IN RX_BLK * pRxBlk ) ;
2008-10-28 21:48:09 +00:00
enum {
2009-12-11 20:23:14 +00:00
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
2008-10-28 21:48:09 +00:00
} ;
enum {
2009-12-11 20:23:14 +00:00
P80211ENUM_msgitem_status_no_value = 0x00
2008-10-28 21:48:09 +00:00
} ;
enum {
2009-12-11 20:23:14 +00:00
P80211ENUM_truth_false = 0x00 ,
P80211ENUM_truth_true = 0x01
2008-10-28 21:48:09 +00:00
} ;
/* Definition from madwifi */
typedef struct {
2009-12-11 20:23:14 +00:00
UINT32 did ;
UINT16 status ;
UINT16 len ;
UINT32 data ;
2008-10-28 21:48:09 +00:00
} p80211item_uint32_t ;
typedef struct {
2009-12-11 20:23:14 +00:00
UINT32 msgcode ;
UINT32 msglen ;
2008-10-28 21:48:09 +00:00
# define WLAN_DEVNAMELEN_MAX 16
2009-12-11 20:23:14 +00:00
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 ;
2008-10-28 21:48:09 +00:00
} wlan_ng_prism2_header ;
/* The radio capture header precedes the 802.11 header. */
typedef struct PACKED _ieee80211_radiotap_header {
2009-12-11 20:23:14 +00:00
UINT8 it_version ; /* Version 0. Only increases
2008-10-28 21:48:09 +00:00
* for drastic changes ,
* introduction of compatible
* new fields does not count .
*/
2009-12-11 20:23:14 +00:00
UINT8 it_pad ;
UINT16 it_len ; /* length of the whole
2008-10-28 21:48:09 +00:00
* header in bytes , including
* it_version , it_pad ,
* it_len , and data fields .
*/
2009-12-11 20:23:14 +00:00
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 ;
2008-10-28 21:48:09 +00:00
enum ieee80211_radiotap_type {
2009-12-11 20:23:14 +00:00
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
2008-10-28 21:48:09 +00:00
} ;
# 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 */
2009-12-11 20:23:14 +00:00
void send_monitor_packets ( IN PRTMP_ADAPTER pAd , IN RX_BLK * pRxBlk ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPSetDesiredRates ( IN PRTMP_ADAPTER pAdapter , IN LONG Rates ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
INT Set_FixedTxMode_Proc ( IN PRTMP_ADAPTER pAd , IN PSTRING arg ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN RT28XXChipsetCheck ( IN void * _dev_p ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RT28XXDMADisable ( IN RTMP_ADAPTER * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RT28XXDMAEnable ( IN RTMP_ADAPTER * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RT28xx_UpdateBeaconToAsic ( IN RTMP_ADAPTER * pAd ,
IN INT apidx ,
IN ULONG BeaconLen , IN ULONG UpdatePos ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
int rt28xx_init ( IN PRTMP_ADAPTER pAd ,
IN PSTRING pDefaultMac , IN PSTRING pHostName ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS RtmpNetTaskInit ( IN RTMP_ADAPTER * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RtmpNetTaskExit ( IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS RtmpMgmtTaskInit ( IN RTMP_ADAPTER * pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID RtmpMgmtTaskExit ( IN RTMP_ADAPTER * pAd ) ;
2008-10-28 21:48:09 +00:00
void tbtt_tasklet ( unsigned long data ) ;
2009-12-11 20:23:14 +00:00
PNET_DEV RtmpPhyNetDevInit ( IN RTMP_ADAPTER * pAd ,
IN RTMP_OS_NETDEV_OP_HOOK * pNetHook ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN RtmpPhyNetDevExit ( IN RTMP_ADAPTER * pAd , IN PNET_DEV net_dev ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
INT RtmpRaDevCtrlInit ( IN RTMP_ADAPTER * pAd , IN RTMP_INF_TYPE infType ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN RtmpRaDevCtrlExit ( IN RTMP_ADAPTER * pAd ) ;
2009-09-22 18:44:07 +00:00
# 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
//
2009-12-11 20:23:14 +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 ) ;
BOOLEAN RT28xxPciAsicRadioOff ( IN PRTMP_ADAPTER pAd ,
IN UCHAR Level , IN USHORT TbttNumToNextWakeUp ) ;
BOOLEAN RT28xxPciAsicRadioOn ( IN PRTMP_ADAPTER pAd , IN UCHAR Level ) ;
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 ) ;
VOID RTMPrt3xSetPCIePowerLinkCtrl ( IN PRTMP_ADAPTER pAd ) ;
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 ) ;
VOID RT28xxPciStaAsicForceWakeup ( IN PRTMP_ADAPTER pAd , IN BOOLEAN bFromTx ) ;
VOID RT28xxPciStaAsicSleepThenAutoWakeup ( IN PRTMP_ADAPTER pAd ,
IN USHORT TbttNumToNextWakeUp ) ;
VOID RT28xxPciMlmeRadioOn ( IN PRTMP_ADAPTER pAd ) ;
VOID RT28xxPciMlmeRadioOFF ( 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
//
2009-12-11 20:23:14 +00:00
VOID RTUSBInitTxDesc ( IN PRTMP_ADAPTER pAd ,
IN PTX_CONTEXT pTxContext ,
IN UCHAR BulkOutPipeId , IN usb_complete_t Func ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBInitHTTxDesc ( IN PRTMP_ADAPTER pAd ,
IN PHT_TX_CONTEXT pTxContext ,
IN UCHAR BulkOutPipeId ,
IN ULONG BulkOutSize , IN usb_complete_t Func ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBInitRxDesc ( IN PRTMP_ADAPTER pAd , IN PRX_CONTEXT pRxContext ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBCleanUpDataBulkOutQueue ( IN PRTMP_ADAPTER pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBCancelPendingBulkOutIRP ( IN PRTMP_ADAPTER pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBBulkOutDataPacket ( IN PRTMP_ADAPTER pAd ,
IN UCHAR BulkOutPipeId , IN UCHAR Index ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBBulkOutNullFrame ( IN PRTMP_ADAPTER pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBBulkOutRTSFrame ( IN PRTMP_ADAPTER pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBCancelPendingBulkInIRP ( IN PRTMP_ADAPTER pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBCancelPendingIRPs ( IN PRTMP_ADAPTER pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBBulkOutMLMEPacket ( IN PRTMP_ADAPTER pAd , IN UCHAR Index ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBBulkOutPsPoll ( IN PRTMP_ADAPTER pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBCleanUpMLMEBulkOutQueue ( IN PRTMP_ADAPTER pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBKickBulkOut ( IN PRTMP_ADAPTER pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBBulkReceive ( IN PRTMP_ADAPTER pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID DoBulkIn ( IN RTMP_ADAPTER * pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBInitRxDesc ( IN PRTMP_ADAPTER pAd , IN PRX_CONTEXT pRxContext ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID RTUSBBulkRxHandle ( IN unsigned long data ) ;
2009-09-22 18:44:07 +00:00
2009-04-26 14:06:25 +00:00
//
// Function Prototype in rtusb_io.c
//
2009-12-11 20:23:14 +00:00
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 ) ;
VOID RTUSBBssBeaconExit ( IN RTMP_ADAPTER * pAd ) ;
VOID RTUSBBssBeaconStop ( IN RTMP_ADAPTER * pAd ) ;
VOID RTUSBBssBeaconStart ( IN RTMP_ADAPTER * pAd ) ;
VOID RTUSBBssBeaconInit ( IN RTMP_ADAPTER * pAd ) ;
VOID RTUSBWatchDog ( 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 ) ;
NDIS_STATUS RTUSBSetHardWareRegister ( IN PRTMP_ADAPTER pAdapter , IN PVOID pBuf ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS RTUSBQueryHardWareRegister ( IN PRTMP_ADAPTER pAdapter ,
IN PVOID pBuf ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID CMDHandler ( IN PRTMP_ADAPTER pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS RTUSBWriteHWMACAddress ( IN PRTMP_ADAPTER pAdapter ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID MacTableInitialize ( IN PRTMP_ADAPTER pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
VOID MlmeSetPsm ( IN PRTMP_ADAPTER pAd , IN USHORT psm ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS RTMPWPAAddKeyProc ( IN PRTMP_ADAPTER pAd , IN PVOID pBuf ) ;
VOID AsicRxAntEvalAction ( IN PRTMP_ADAPTER pAd ) ;
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 ) ;
NDIS_STATUS RTMPCheckRxError ( IN PRTMP_ADAPTER pAd ,
IN PHEADER_802_11 pHeader ,
IN PRXWI_STRUC pRxWI ,
IN PRT28XX_RXD_STRUC pRxINFO ) ;
VOID RTUSBMlmeHardTransmit ( IN PRTMP_ADAPTER pAd , IN PMGMT_STRUC pMgmt ) ;
INT MlmeThread ( IN PVOID Context ) ;
2009-04-26 14:06:25 +00:00
//
// Function Prototype in rtusb_data.c
//
2009-12-11 20:23:14 +00:00
NDIS_STATUS RTUSBFreeDescriptorRequest ( IN PRTMP_ADAPTER pAd ,
IN UCHAR BulkOutPipeId ,
IN UINT32 NumberRequired ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN RTUSBNeedQueueBackForAgg ( IN RTMP_ADAPTER * pAd , IN UCHAR BulkOutPipeId ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
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-04-26 14:06:25 +00:00
//
2009-09-22 18:44:07 +00:00
// Function Prototype in cmm_data_usb.c
2009-04-26 14:06:25 +00:00
//
2009-12-11 20:23:14 +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 ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
int RtmpUSBMgmtKickOut ( IN RTMP_ADAPTER * pAd ,
IN UCHAR QueIdx ,
IN PNDIS_PACKET pPacket ,
IN PUCHAR pSrcBufVA , IN UINT SrcBufLen ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID RtmpUSBNullFrameKickOut ( IN RTMP_ADAPTER * pAd ,
IN UCHAR QueIdx ,
IN UCHAR * pNullFrame , IN UINT32 frameLen ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
VOID RtmpUsbStaAsicForceWakeupTimeout ( IN PVOID SystemSpecific1 ,
IN PVOID FunctionContext ,
IN PVOID SystemSpecific2 ,
IN PVOID SystemSpecific3 ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +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 ) ;
# endif // RTMP_MAC_USB //
VOID AsicTurnOffRFClk ( IN PRTMP_ADAPTER pAd , IN UCHAR Channel ) ;
VOID AsicTurnOnRFClk ( IN PRTMP_ADAPTER pAd , IN UCHAR Channel ) ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_TIMER_TASK_SUPPORT
2009-12-11 20:23:14 +00:00
INT RtmpTimerQThread ( IN OUT PVOID Context ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
RTMP_TIMER_TASK_ENTRY * RtmpTimerQInsert ( IN RTMP_ADAPTER * pAd ,
IN RALINK_TIMER_STRUCT * pTimer ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN RtmpTimerQRemove ( IN RTMP_ADAPTER * pAd ,
IN RALINK_TIMER_STRUCT * pTimer ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
void RtmpTimerQExit ( IN RTMP_ADAPTER * pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
void RtmpTimerQInit ( IN RTMP_ADAPTER * pAd ) ;
2009-09-22 18:44:07 +00:00
# endif // RTMP_TIMER_TASK_SUPPORT //
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID AsicStaBbpTuning ( IN PRTMP_ADAPTER pAd ) ;
2009-02-23 15:01:07 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN StaAddMacTableEntry ( IN PRTMP_ADAPTER pAd ,
IN PMAC_TABLE_ENTRY pEntry ,
IN UCHAR MaxSupportedRateIn500Kbps ,
IN HT_CAPABILITY_IE * pHtCapability ,
IN UCHAR HtCapabilityLen ,
IN ADD_HT_INFO_IE * pAddHtInfo ,
IN UCHAR AddHtInfoLen , IN USHORT CapabilityInfo ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +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 ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
void RTMP_IndicateMediaState ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID ReSyncBeaconTime ( IN PRTMP_ADAPTER pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
VOID RTMPSetAGCInitValue ( IN PRTMP_ADAPTER pAd , IN UCHAR BandWidth ) ;
2008-10-28 21:48:09 +00:00
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 )
{
2009-12-11 20:23:14 +00:00
if ( VIRTUAL_IF_NUM ( pAd ) = = 0 ) {
if ( rt28xx_open ( pAd - > net_dev ) ! = 0 ) {
DBGPRINT ( RT_DEBUG_TRACE ,
( " rt28xx_open return fail! \n " ) ) ;
2008-10-28 21:48:09 +00:00
return - 1 ;
2009-12-11 20:23:14 +00:00
}
} else {
2008-10-28 21:48:09 +00:00
}
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 .
*/
2009-12-11 20:23:14 +00:00
int RtmpOSWrielessEventSend ( IN RTMP_ADAPTER * pAd ,
IN UINT32 eventType ,
IN INT flags ,
IN PUCHAR pSrcMac ,
IN PUCHAR pData , IN UINT32 dataLen ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
int RtmpOSNetDevAddrSet ( IN PNET_DEV pNetDev , IN PUCHAR pMacAddr ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
int RtmpOSNetDevAttach ( IN PNET_DEV pNetDev ,
IN RTMP_OS_NETDEV_OP_HOOK * pDevOpHook ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
void RtmpOSNetDevClose ( IN PNET_DEV pNetDev ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
void RtmpOSNetDevDetach ( IN PNET_DEV pNetDev ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
INT RtmpOSNetDevAlloc ( IN PNET_DEV * pNewNetDev , IN UINT32 privDataSize ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
void RtmpOSNetDevFree ( IN PNET_DEV pNetDev ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
PNET_DEV RtmpOSNetDevGetByName ( IN PNET_DEV pNetDev , IN PSTRING pDevName ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
void RtmpOSNetDeviceRefPut ( IN PNET_DEV pNetDev ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
PNET_DEV RtmpOSNetDevCreate ( IN RTMP_ADAPTER * pAd ,
IN INT devType ,
IN INT devNum ,
IN INT privMemSize , IN PSTRING pNamePrefix ) ;
2009-09-22 18:44:07 +00:00
/*
Task operation related function prototypes
*/
2009-12-11 20:23:14 +00:00
void RtmpOSTaskCustomize ( IN RTMP_OS_TASK * pTask ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
INT RtmpOSTaskNotifyToExit ( IN RTMP_OS_TASK * pTask ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS RtmpOSTaskKill ( IN RTMP_OS_TASK * pTask ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS RtmpOSTaskInit ( IN RTMP_OS_TASK * pTask ,
PSTRING pTaskName , VOID * pPriv ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
NDIS_STATUS RtmpOSTaskAttach ( IN RTMP_OS_TASK * pTask ,
IN int ( * fn ) ( void * ) , IN void * arg ) ;
2009-09-22 18:44:07 +00:00
/*
File operation related function prototypes
*/
2009-12-11 20:23:14 +00:00
RTMP_OS_FD RtmpOSFileOpen ( IN char * pPath , IN int flag , IN int mode ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
int RtmpOSFileClose ( IN RTMP_OS_FD osfd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
void RtmpOSFileSeek ( IN RTMP_OS_FD osfd , IN int offset ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
int RtmpOSFileRead ( IN RTMP_OS_FD osfd , IN char * pDataPtr , IN int readLen ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
int RtmpOSFileWrite ( IN RTMP_OS_FD osfd , IN char * pDataPtr , IN int writeLen ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
# endif // __RTMP_H__