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:15 +00:00
/*#define DBG 1 */
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
/*#define DBG_DIAGNOSE 1 */
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
/*+++Add by shiang for merge MiniportMMRequest() and MiniportDataMMRequest() into one function */
2009-09-22 18:44:07 +00:00
# define MAX_DATAMM_RETRY 3
# define MGMT_USE_QUEUE_FLAG 0x80
2009-12-11 20:23:15 +00:00
/*---Add by shiang for merge MiniportMMRequest() and MiniportDataMMRequest() into one function */
2009-09-22 18:44:07 +00:00
# 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:15 +00:00
extern UCHAR RateIdToPlcpSignal [ 12 ] ; /* see IEEE802.11a-1999 p.14 */
2009-12-11 20:23:14 +00:00
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 {
2009-12-11 20:23:15 +00:00
CHAR LastRssi0 ; /* last received RSSI */
CHAR LastRssi1 ; /* last received RSSI */
CHAR LastRssi2 ; /* last received RSSI */
2009-12-11 20:23:14 +00:00
CHAR AvgRssi0 ;
CHAR AvgRssi1 ;
CHAR AvgRssi2 ;
SHORT AvgRssi0X8 ;
SHORT AvgRssi1X8 ;
SHORT AvgRssi2X8 ;
2008-10-28 21:48:09 +00:00
} RSSI_SAMPLE ;
2009-12-11 20:23:15 +00:00
/* */
/* 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
2009-12-11 20:23:15 +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 + + ; \
}
2009-12-11 20:23:15 +00:00
/* */
/* Macros for flag and ref count operations */
/* */
2008-10-28 21:48:09 +00:00
# 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-12-11 20:23:15 +00:00
/* Macro for power save flag. */
2009-02-23 15:01:07 +00:00
# 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 ) ; \
}
2009-12-11 20:23:15 +00:00
/* StaActive.SupportedHtPhy.MCSSet is copied from AP beacon. Don't need to update here. */
2008-10-28 21:48:09 +00:00
# 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 ) ; \
}
2009-12-11 20:23:15 +00:00
/* */
/* 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 */
/* */
/*#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 ;
2009-12-11 20:23:15 +00:00
/* */
/* Some utility macros */
/* */
2008-10-28 21:48:09 +00:00
# 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))
2009-12-11 20:23:15 +00:00
/* Check LEAP & CCKM flags */
2008-10-28 21:48:09 +00:00
# define LEAP_ON(_p) (((_p)->StaCfg.LeapAuthMode) == CISCO_AuthModeLEAP)
# define LEAP_CCKM_ON(_p) ((((_p)->StaCfg.LeapAuthMode) == CISCO_AuthModeLEAP) && ((_p)->StaCfg.LeapAuthInfo.CCKM == TRUE))
2009-12-11 20:23:15 +00:00
/* if orginal Ethernet frame contains no LLC/SNAP, then an extra LLC/SNAP encap is required */
2008-10-28 21:48:09 +00:00
# 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 ; \
} \
}
2009-12-11 20:23:15 +00:00
/* New Define for new Tx Path. */
2008-10-28 21:48:09 +00:00
# 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 ) ; \
}
2009-12-11 20:23:15 +00:00
/* 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 */
2008-10-28 21:48:09 +00:00
# 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 ) ; \
} \
}
2009-12-11 20:23:15 +00:00
/* 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-12-11 20:23:15 +00:00
# endif /* RTMP_MAC_PCI // */
2009-09-22 18:44:07 +00:00
# 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-12-11 20:23:15 +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)))
2009-12-11 20:23:15 +00:00
/* */
/* Check if it is Japan W53(ch52,56,60,64) channel. */
/* */
2008-10-28 21:48:09 +00:00
# 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
}
2009-12-11 20:23:15 +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 ;
2009-12-11 20:23:15 +00:00
PVOID AllocVa ; /* TxBuf virtual address */
NDIS_PHYSICAL_ADDRESS AllocPa ; /* TxBuf physical address */
2008-10-28 21:48:09 +00:00
} RTMP_DMABUF , * PRTMP_DMABUF ;
2009-12-11 20:23:15 +00:00
/* */
/* 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 {
2009-12-11 20:23:15 +00:00
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:15 +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 ;
2009-12-11 20:23:15 +00:00
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 ;
2009-12-11 20:23:15 +00:00
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 ;
2009-12-11 20:23:15 +00:00
UINT32 TxSwFreeIdx ; /* software next free tx index */
2008-10-28 21:48:09 +00:00
} RTMP_MGMT_RING , * PRTMP_MGMT_RING ;
2009-12-11 20:23:15 +00:00
/* */
/* Statistic counter structure */
/* */
2009-12-11 20:23:14 +00:00
typedef struct _COUNTER_802_3 {
2009-12-11 20:23:15 +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
2009-12-11 20:23:15 +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:15 +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 */
2009-12-11 20:23:14 +00:00
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 ;
2009-12-11 20:23:15 +00:00
UINT32 OneSecTransmittedByteCount ; /* both successful and failure, used to calculate TX throughput */
2009-12-11 20:23:14 +00:00
UINT32 OneSecTxNoRetryOkCount ;
UINT32 OneSecTxRetryOkCount ;
UINT32 OneSecTxFailCount ;
2009-12-11 20:23:15 +00:00
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 */
2009-12-11 20:23:14 +00:00
UINT32 OneSecBeaconSentCnt ;
2009-12-11 20:23:15 +00:00
UINT32 LastOneSecTotalTxCount ; /* OneSecTxNoRetryOkCount + OneSecTxRetryOkCount + OneSecTxFailCount */
UINT32 LastOneSecRxOkDataCnt ; /* OneSecRxOkDataCnt */
2009-12-11 20:23:14 +00:00
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 {
2009-12-11 20:23:15 +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 ] ;
UCHAR PER [ MAX_STEP_OF_TX_RATE_SWITCH ] ;
2009-12-11 20:23:15 +00:00
UCHAR TxRateUpPenalty ; /* extra # of second penalty due to last unstable condition */
ULONG CurrTxRateStableTime ; /* # of second in current TX rate */
2009-12-11 20:23:14 +00:00
BOOLEAN fNoisyEnvironment ;
BOOLEAN fLastSecAccordingRSSI ;
2009-12-11 20:23:15 +00:00
UCHAR LastSecTxRateChangeAction ; /* 0: no change, 1:rate UP, 2:rate down */
UCHAR LastTimeTxRateChangeAction ; /*Keep last time value of LastSecTxRateChangeAction */
2009-12-11 20:23:14 +00:00
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:15 +00:00
UCHAR Key [ 16 ] ; /* right now we implement 4 keys, 128 bits max */
UCHAR RxMic [ 8 ] ; /* make alignment */
2009-12-11 20:23:14 +00:00
UCHAR TxMic [ 8 ] ;
2009-12-11 20:23:15 +00:00
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 */
2009-12-11 20:23:14 +00:00
UCHAR KeyLen ;
UCHAR BssId [ 6 ] ;
2009-12-11 20:23:15 +00:00
/* 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-12-11 20:23:15 +00:00
/* structure to define WPA Group Key Rekey Interval */
2009-09-22 18:44:07 +00:00
typedef struct PACKED _RT_802_11_WPA_REKEY {
2009-12-11 20:23:15 +00:00
ULONG ReKeyMethod ; /* mechanism for rekeying: 0:disable, 1: time-based, 2: packet-based */
ULONG ReKeyInterval ; /* time-based: seconds, packet-based: kilo-packets */
2009-12-11 20:23:14 +00:00
} 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 {
2009-12-11 20:23:15 +00:00
ULONG WCID ; /* mechanism for rekeying: 0:disable, 1: time-based, 2: packet-based */
ULONG SetTid ; /* time-based: seconds, packet-based: kilo-packets */
ULONG DeleteTid ; /* time-based: seconds, packet-based: kilo-packets */
UCHAR Addr [ MAC_ADDR_LEN ] ; /* avoid in interrupt when write key */
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 {
2009-12-11 20:23:15 +00:00
ULONG WCID ; /* mechanism for rekeying: 0:disable, 1: time-based, 2: packet-based */
ULONG Cipher ; /* ASIC Cipher definition */
2009-12-11 20:23:14 +00:00
UCHAR Addr [ ETH_LENGTH_OF_ADDRESS ] ;
} RT_SET_ASIC_WCID_ATTRI , * PRT_SET_ASIC_WCID_ATTRI ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +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 ] ;
2009-12-11 20:23:15 +00:00
USHORT MacTabMatchWCID ; /* ASIC */
2009-12-11 20:23:14 +00:00
CIPHER_KEY CipherKey ;
} RT_ADD_PAIRWISE_KEY_ENTRY , * PRT_ADD_PAIRWISE_KEY_ENTRY ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* Cipher suite type for mixed mode group cipher, P802.11i-2004 */
2009-09-22 18:44:07 +00:00
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 ;
2009-12-11 20:23:15 +00:00
# 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 ] ;
2009-12-11 20:23:15 +00:00
UCHAR ErrorCode [ 2 ] ; /*00 01-Invalid authentication type */
/*00 02-Authentication timeout */
/*00 03-Challenge from AP failed */
/*00 04-Challenge to AP failed */
2009-12-11 20:23:14 +00:00
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-12-11 20:23:15 +00:00
/* */
/* Cisco IAPP format */
/* */
2009-12-11 20:23:14 +00:00
typedef struct _CISCO_IAPP_CONTENT_ {
2009-12-11 20:23:15 +00:00
USHORT Length ; /*IAPP Length */
UCHAR MessageType ; /*IAPP type */
UCHAR FunctionCode ; /*IAPP function type */
2009-12-11 20:23:14 +00:00
UCHAR DestinaionMAC [ MAC_ADDR_LEN ] ;
UCHAR SourceMAC [ MAC_ADDR_LEN ] ;
2009-12-11 20:23:15 +00:00
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 */
2009-12-11 20:23:14 +00:00
USHORT Channel ;
USHORT SsidLen ;
UCHAR Ssid [ MAX_LEN_OF_SSID ] ;
2009-12-11 20:23:15 +00:00
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 ;
2009-12-11 20:23:15 +00:00
ULONG Flags ; /* Some extra frame information. bit 0: LLC presented */
2008-10-28 21:48:09 +00:00
} FRAGMENT_FRAME , * PFRAGMENT_FRAME ;
2009-12-11 20:23:15 +00:00
/* */
/* Packet information for NdisQueryPacket */
/* */
2009-12-11 20:23:14 +00:00
typedef struct _PACKET_INFO {
2009-12-11 20:23:15 +00:00
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-12-11 20:23:15 +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 ;
2009-12-11 20:23:15 +00:00
/* */
/* Tkip Key structure which RC4 key & MIC calculation */
/* */
2009-12-11 20:23:14 +00:00
typedef struct _TKIP_KEY_INFO {
2009-12-11 20:23:15 +00:00
UINT nBytesInM ; /* # bytes in M for MICKEY */
2009-12-11 20:23:14 +00:00
ULONG IV16 ;
ULONG IV32 ;
2009-12-11 20:23:15 +00:00
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 */
2009-12-11 20:23:14 +00:00
UCHAR RC4KEY [ 16 ] ;
UCHAR MIC [ 8 ] ;
2008-10-28 21:48:09 +00:00
} TKIP_KEY_INFO , * PTKIP_KEY_INFO ;
2009-12-11 20:23:15 +00:00
/* */
/* Private / Misc data, counters for driver internal use */
/* */
2009-12-11 20:23:14 +00:00
typedef struct __PRIVATE_STRUC {
2009-12-11 20:23:15 +00:00
UINT SystemResetCnt ; /* System reset counter */
UINT TxRingFullCnt ; /* Tx ring full occurrance number */
UINT PhyRxErrCnt ; /* PHY Rx error count, for debug purpose, might move to global counter */
/* Variables for WEP encryption / decryption in rtmp_wep.c */
2009-12-11 20:23:14 +00:00
UINT FCSCRC32 ;
ARCFOURCONTEXT WEPCONTEXT ;
2009-12-11 20:23:15 +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
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2009-12-11 20:23:15 +00:00
/* structure to tune BBP R66 (BBP TUNING) */
2008-10-28 21:48:09 +00:00
typedef struct _BBP_R66_TUNING {
2009-12-11 20:23:14 +00:00
BOOLEAN bEnable ;
2009-12-11 20:23:15 +00:00
USHORT FalseCcaLowerThreshold ; /* default 100 */
USHORT FalseCcaUpperThreshold ; /* default 512 */
2009-12-11 20:23:14 +00:00
UCHAR R66Delta ;
UCHAR R66CurrentValue ;
2009-12-11 20:23:15 +00:00
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 ;
2009-12-11 20:23:15 +00:00
/* structure to store channel TX power */
2008-10-28 21:48:09 +00:00
typedef struct _CHANNEL_TX_POWER {
2009-12-11 20:23:15 +00:00
USHORT RemainingTimeForUse ; /*unit: sec */
2009-12-11 20:23:14 +00:00
UCHAR Channel ;
CHAR Power ;
CHAR Power2 ;
UCHAR MaxTxPwr ;
UCHAR DfsReq ;
2008-10-28 21:48:09 +00:00
} CHANNEL_TX_POWER , * PCHANNEL_TX_POWER ;
2009-12-11 20:23:15 +00:00
/* structure to store 802.11j channel TX power */
2008-10-28 21:48:09 +00:00
typedef struct _CHANNEL_11J_TX_POWER {
2009-12-11 20:23:14 +00:00
UCHAR Channel ;
2009-12-11 20:23:15 +00:00
UCHAR BW ; /* BW_10 or BW_20 */
2009-12-11 20:23:14 +00:00
CHAR Power ;
CHAR Power2 ;
2009-12-11 20:23:15 +00:00
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:15 +00:00
UCHAR EvaluatePeriod ; /* 0:not evalute status, 1: evaluate status, 2: switching status */
2009-12-11 20:23:14 +00:00
UCHAR EvaluateStableCnt ;
2009-12-11 20:23:15 +00:00
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 ; /* */
2009-12-11 20:23:14 +00:00
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:15 +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 */
2009-12-11 20:23:14 +00:00
UCHAR BBPR16 ;
UCHAR BBPR17 ;
UCHAR BBPR18 ;
UCHAR BBPR21 ;
UCHAR BBPR22 ;
UCHAR BBPR64 ;
2009-12-11 20:23:15 +00:00
ULONG InServiceMonitorCount ; /* unit: sec */
2009-12-11 20:23:14 +00:00
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
2009-12-11 20:23:15 +00:00
/* Power save method control */
2009-12-11 20:23:14 +00:00
typedef union _PS_CONTROL {
struct {
2009-12-11 20:23:15 +00:00
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 */
2009-12-11 20:23:14 +00:00
} field ;
ULONG word ;
} PS_CONTROL , * PPS_CONTROL ;
2009-12-11 20:23:15 +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 {
2009-12-11 20:23:15 +00:00
/* 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 ] ;
2009-12-11 20:23:15 +00:00
/* Action */
2009-12-11 20:23:14 +00:00
STATE_MACHINE ActMachine ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +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:15 +00:00
ULONG ChannelQuality ; /* 0..100, Channel Quality Indication for Roaming */
ULONG Now32 ; /* latch the value of NdisGetSystemUpTime() */
2009-12-11 20:23:14 +00:00
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 ;
2009-12-11 20:23:15 +00:00
# endif /* RTMP_MAC_PCI // */
2009-12-11 20:23:14 +00:00
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:15 +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 ;
2009-12-11 20:23:15 +00:00
# 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 ;
2009-12-11 20:23:15 +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 ;
2009-12-11 20:23:15 +00:00
UCHAR BAWinSize ; /* 7.3.1.14. each buffer is capable of holding a max AMSDU or MSDU. */
/*UCHAR NumOfRxPkt; */
/*UCHAR Curindidx; // the head in the RX reordering buffer */
2009-12-11 20:23:14 +00:00
USHORT LastIndSeq ;
2009-12-11 20:23:15 +00:00
/* USHORT LastIndSeqAtTimer; */
2009-12-11 20:23:14 +00:00
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 ;
2009-12-11 20:23:15 +00:00
/* UCHAR RxBufIdxUsed; */
/* corresponding virtual address for RX reordering packet storage. */
/*RTMP_REORDERDMABUF MAP_RXBuf[MAX_RX_REORDERBUF]; */
NDIS_SPIN_LOCK RxReRingLock ; /* Rx Ring spinlock */
/* struct _BA_REC_ENTRY *pNext; */
2009-12-11 20:23:14 +00:00
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:15 +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 */
2009-12-11 20:23:14 +00:00
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 ;
2009-12-11 20:23:15 +00:00
/*For QureyBATableOID use; */
2009-12-11 20:23:14 +00:00
typedef struct PACKED _OID_BA_REC_ENTRY {
UCHAR MACAddr [ MAC_ADDR_LEN ] ;
2009-12-11 20:23:15 +00:00
UCHAR BaBitmap ; /* if (BaBitmap&(1<<TID)), this session with{MACAddr, TID}exists, so read BufSize[TID] for BufferSize */
2009-12-11 20:23:14 +00:00
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 ;
2009-12-11 20:23:15 +00:00
/*For QureyBATableOID use; */
2009-12-11 20:23:14 +00:00
typedef struct PACKED _OID_BA_ORI_ENTRY {
UCHAR MACAddr [ MAC_ADDR_LEN ] ;
2009-12-11 20:23:15 +00:00
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 */
2009-12-11 20:23:14 +00:00
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 ] ;
2009-12-11 20:23:15 +00:00
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 ;
2009-12-11 20:23:15 +00:00
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 */
2009-12-11 20:23:14 +00:00
UINT32 MpduDensity : 3 ;
2009-12-11 20:23:15 +00:00
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. */
2009-12-11 20:23:14 +00:00
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 ;
2009-12-11 20:23:15 +00:00
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 )
2009-12-11 20:23:15 +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 ] ;
2009-12-11 20:23:15 +00:00
UCHAR ReorderTimeOutNum [ MAX_LEN_OF_BA_REC_TABLE ] ; /* compare with threshold[0] */
UCHAR RefreshNum [ MAX_LEN_OF_BA_REC_TABLE ] ; /* compare with threshold[1] */
2009-12-11 20:23:14 +00:00
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 ;
2009-12-11 20:23:15 +00:00
/* This is the registry setting for 802.11n transmit setting. Used in advanced page. */
2008-10-28 21:48:09 +00:00
typedef union _REG_TRANSMIT_SETTING {
2009-12-11 20:23:14 +00:00
struct {
2009-12-11 20:23:15 +00:00
/*UINT32 PhyMode:4; */
/*UINT32 MCS:7; // MCS */
2009-12-11 20:23:14 +00:00
UINT32 rsv0 : 10 ;
UINT32 TxBF : 1 ;
2009-12-11 20:23:15 +00:00
UINT32 BW : 1 ; /*channel bandwidth 20MHz or 40 MHz */
2009-12-11 20:23:14 +00:00
UINT32 ShortGI : 1 ;
2009-12-11 20:23:15 +00:00
UINT32 STBC : 1 ; /*SPACE */
2009-12-11 20:23:14 +00:00
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 {
2009-12-11 20:23:15 +00:00
USHORT MCS : 7 ; /* MCS */
2009-12-11 20:23:14 +00:00
USHORT PhyMode : 4 ;
2009-12-11 20:23:15 +00:00
USHORT FixedTxMode : 2 ; /* If MCS isn't AUTO, fix rate in CCK, OFDM or HT mode. */
2009-12-11 20:23:14 +00:00
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 ] ;
2009-12-11 20:23:15 +00:00
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. */
2009-12-11 20:23:14 +00:00
} BEACON_SYNC_STRUCT ;
2009-12-11 20:23:15 +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 ] ; }
2009-12-11 20:23:15 +00:00
/* configuration common to OPMODE_AP as well as OPMODE_STA */
2008-10-28 21:48:09 +00:00
typedef struct _COMMON_CONFIG {
2009-12-11 20:23:14 +00:00
BOOLEAN bCountryFlag ;
UCHAR CountryCode [ 3 ] ;
UCHAR Geography ;
2009-12-11 20:23:15 +00:00
UCHAR CountryRegion ; /* Enum of country region, 0:FCC, 1:IC, 2:ETSI, 3:SPAIN, 4:France, 5:MKK, 6:MKK1, 7:Israel */
UCHAR CountryRegionForABand ; /* Enum of country region for A band */
UCHAR PhyMode ; /* PHY_11A, PHY_11B, PHY_11BG_MIXED, PHY_ABG_MIXED */
USHORT Dsifs ; /* in units of usec */
ULONG PacketFilter ; /* Packet filter for receiving */
2009-12-11 20:23:14 +00:00
UINT8 RegulatoryClass ;
2009-12-11 20:23:15 +00:00
CHAR Ssid [ MAX_LEN_OF_SSID ] ; /* NOT NULL-terminated */
UCHAR SsidLen ; /* the actual ssid length in used */
UCHAR LastSsidLen ; /* the actual ssid length in used */
CHAR LastSsid [ MAX_LEN_OF_SSID ] ; /* NOT NULL-terminated */
2009-12-11 20:23:14 +00:00
UCHAR LastBssid [ MAC_ADDR_LEN ] ;
UCHAR Bssid [ MAC_ADDR_LEN ] ;
USHORT BeaconPeriod ;
UCHAR Channel ;
2009-12-11 20:23:15 +00:00
UCHAR CentralChannel ; /* Central Channel when using 40MHz is indicating. not real channel. */
2009-12-11 20:23:14 +00:00
UCHAR SupRate [ MAX_LEN_OF_SUPPORTED_RATES ] ;
UCHAR SupRateLen ;
UCHAR ExtRate [ MAX_LEN_OF_SUPPORTED_RATES ] ;
UCHAR ExtRateLen ;
2009-12-11 20:23:15 +00:00
UCHAR DesireRate [ MAX_LEN_OF_SUPPORTED_RATES ] ; /* OID_802_11_DESIRED_RATES */
2009-12-11 20:23:14 +00:00
UCHAR MaxDesiredRate ;
UCHAR ExpectedACKRate [ MAX_LEN_OF_SUPPORTED_RATES ] ;
2009-12-11 20:23:15 +00:00
ULONG BasicRateBitmap ; /* backup basic ratebitmap */
2009-12-11 20:23:14 +00:00
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 ;
2009-12-11 20:23:15 +00:00
BOOLEAN bAPSDForcePowerSave ; /* Force power save mode, should only use in APSD-STAUT */
2009-12-11 20:23:14 +00:00
ULONG TriggerTimerCount ;
UCHAR MaxSPLength ;
2009-12-11 20:23:15 +00:00
UCHAR BBPCurrentBW ; /* BW_10, BW_20, BW_40 */
/* move to MULTISSID_STRUCT for MBSS */
/*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. */
/*UCHAR FixedTxMode; // Fixed Tx Mode (CCK, OFDM), for HT fixed tx mode (GF, MIX) , refer to RegTransmitSetting.field.HTMode */
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 */
2009-12-11 20:23:14 +00:00
UINT8 PwrConstraint ;
2009-12-11 20:23:15 +00:00
BACAP_STRUC BACapability ; /* NO USE = 0XFF ; IMMED_BA =1 ; DELAY_BA=0 */
BACAP_STRUC REGBACapability ; /* NO USE = 0XFF ; IMMED_BA =1 ; DELAY_BA=0 */
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
IOT_STRUC IOTestParm ; /* 802.11n InterOpbility Test Parameter; */
ULONG TxPreamble ; /* Rt802_11PreambleLong, Rt802_11PreambleShort, Rt802_11PreambleAuto */
BOOLEAN bUseZeroToDisableFragment ; /* Microsoft use 0 as disable */
ULONG UseBGProtection ; /* 0: auto, 1: always use, 2: always not use */
BOOLEAN bUseShortSlotTime ; /* 0: disable, 1 - use short slot (9us) */
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 */
2009-12-11 20:23:14 +00:00
BOOLEAN bRdg ;
2009-12-11 20:23:15 +00:00
BOOLEAN bWmmCapable ; /* 0:disable WMM, 1:enable WMM */
QOS_CAPABILITY_PARM APQosCapability ; /* QOS capability of the current associated AP */
EDCA_PARM APEdcaParm ; /* EDCA parameters of the current associated AP */
QBSS_LOAD_PARM APQbssLoad ; /* QBSS load of the current associated AP */
UCHAR AckPolicy [ 4 ] ; /* ACK policy of the specified AC. see ACK_xxx */
BOOLEAN bDLSCapable ; /* 0:disable DLS, 1:enable DLS */
/* a bitmap of BOOLEAN flags. each bit represent an operation status of a particular */
/* BOOLEAN control, either ON or OFF. These flags should always be accessed via */
/* OPSTATUS_TEST_FLAG(), OPSTATUS_SET_FLAG(), OP_STATUS_CLEAR_FLAG() macros. */
/* see fOP_STATUS_xxx in RTMP_DEF.C for detail bit definition */
2009-12-11 20:23:14 +00:00
ULONG OpStatusFlags ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +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
2009-12-11 20:23:15 +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
2009-12-11 20:23:15 +00:00
/* HT */
UCHAR BASize ; /* USer desired BAWindowSize. Should not exceed our max capability */
/*RT_HT_CAPABILITY SupportedHtPhy; */
2009-12-11 20:23:14 +00:00
RT_HT_CAPABILITY DesiredHtPhy ;
HT_CAPABILITY_IE HtCapability ;
2009-12-11 20:23:15 +00:00
ADD_HT_INFO_IE AddHTInfo ; /* Useful as AP. */
/*This IE is used with channel switch announcement element when changing to a new 40MHz. */
/*This IE is included in channel switch ammouncement frames 7.4.1.5, beacons, probe Rsp. */
NEW_EXT_CHAN_IE NewExtChanOffset ; /*7.3.2.20A, 1 if extension channel is above the control channel, 3 if below, 0 if not present */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN bHTProtect ;
BOOLEAN bMIMOPSEnable ;
BOOLEAN bBADecline ;
2009-12-11 20:23:15 +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-12-11 20:23:15 +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
2009-12-11 20:23:15 +00:00
/* Enable wireless event */
2009-12-11 20:23:14 +00:00
BOOLEAN bWirelessEvent ;
2009-12-11 20:23:15 +00:00
BOOLEAN bWiFiTest ; /* Enable this parameter for WiFi test */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +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:15 +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:15 +00:00
BOOLEAN bMultipleIRP ; /* Multiple Bulk IN flag */
UCHAR NumOfBulkInIRP ; /* if bMultipleIRP == TRUE, NumOfBulkInIRP will be 4 otherwise be 1 */
2009-12-11 20:23:14 +00:00
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 ;
2009-12-11 20:23:15 +00:00
# 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:15 +00:00
BOOLEAN PSPXlink ; /* 0: Disable. 1: Enable */
2009-09-22 18:44:07 +00:00
# if defined(RT305x)||defined(RT30xx)
2009-12-11 20:23:15 +00:00
/* 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 */
2009-12-11 20:23:15 +00:00
/* STA configuration and status */
2008-10-28 21:48:09 +00:00
typedef struct _STA_ADMIN_CONFIG {
2009-12-11 20:23:15 +00:00
/* GROUP 1 - */
/* User configuration loaded from Registry, E2PROM or OID_xxx. These settings describe */
/* the user intended configuration, but not necessary fully equal to the final */
/* settings in ACTIVE BSS after negotiation/compromize with the BSS holder (either */
/* AP or IBSS holder). */
/* Once initialized, user configuration can only be changed via OID_xxx */
UCHAR BssType ; /* BSS_INFRA or BSS_ADHOC */
USHORT AtimWin ; /* used when starting a new IBSS */
/* GROUP 2 - */
/* User configuration loaded from Registry, E2PROM or OID_xxx. These settings describe */
/* the user intended configuration, and should be always applied to the final */
/* settings in ACTIVE BSS without compromising with the BSS holder. */
/* Once initialized, user configuration can only be changed via OID_xxx */
2009-12-11 20:23:14 +00:00
UCHAR RssiTrigger ;
2009-12-11 20:23:15 +00:00
UCHAR RssiTriggerMode ; /* RSSI_TRIGGERED_UPON_BELOW_THRESHOLD or RSSI_TRIGGERED_UPON_EXCCEED_THRESHOLD */
USHORT DefaultListenCount ; /* default listen count; */
ULONG WindowsPowerMode ; /* Power mode for AC power */
ULONG WindowsBatteryPowerMode ; /* Power mode for battery if exists */
BOOLEAN bWindowsACCAMEnable ; /* Enable CAM power mode when AC on */
BOOLEAN bAutoReconnect ; /* Set to TRUE when setting OID_802_11_SSID with no matching BSSID */
ULONG WindowsPowerProfile ; /* Windows power profile, for NDIS5.1 PnP */
/* MIB:ieee802dot11.dot11smt(1).dot11StationConfigTable(1) */
USHORT Psm ; /* power management mode (PWR_ACTIVE|PWR_SAVE) */
2009-12-11 20:23:14 +00:00
USHORT DisassocReason ;
UCHAR DisassocSta [ MAC_ADDR_LEN ] ;
USHORT DeauthReason ;
UCHAR DeauthSta [ MAC_ADDR_LEN ] ;
USHORT AuthFailReason ;
UCHAR AuthFailSta [ MAC_ADDR_LEN ] ;
2009-12-11 20:23:15 +00:00
NDIS_802_11_PRIVACY_FILTER PrivacyFilter ; /* PrivacyFilter enum for 802.1X */
NDIS_802_11_AUTHENTICATION_MODE AuthMode ; /* This should match to whatever microsoft defined */
2009-12-11 20:23:14 +00:00
NDIS_802_11_WEP_STATUS WepStatus ;
2009-12-11 20:23:15 +00:00
NDIS_802_11_WEP_STATUS OrigWepStatus ; /* Original wep status set from OID */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* Add to support different cipher suite for WPA2/WPA mode */
NDIS_802_11_ENCRYPTION_STATUS GroupCipher ; /* Multicast cipher suite */
NDIS_802_11_ENCRYPTION_STATUS PairCipher ; /* Unicast cipher suite */
BOOLEAN bMixCipher ; /* Indicate current Pair & Group use different cipher suites */
2009-12-11 20:23:14 +00:00
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:15 +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 */
2009-12-11 20:23:14 +00:00
BSSID_INFO SavedPMK [ PMKID_NO ] ;
2009-12-11 20:23:15 +00:00
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
2009-12-11 20:23:15 +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
2009-12-11 20:23:15 +00:00
/* For WPA countermeasures */
ULONG LastMicErrorTime ; /* record last MIC error time */
ULONG MicErrCnt ; /* Should be 0, 1, 2, then reset to zero (after disassoiciation). */
BOOLEAN bBlockAssoc ; /* Block associate attempt for 60 seconds after counter measure occurred. */
/* For WPA-PSK supplicant state */
WPA_STATE WpaState ; /* Default is SS_NOTUSE and handled by microsoft 802.1x */
2009-12-11 20:23:14 +00:00
UCHAR ReplayCounter [ 8 ] ;
2009-12-11 20:23:15 +00:00
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:15 +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:15 +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 */
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 */
/* New for WPA, windows want us to keep association information and */
/* Fixed IEs from last association response */
2009-12-11 20:23:14 +00:00
NDIS_802_11_ASSOCIATION_INFORMATION AssocInfo ;
2009-12-11 20:23:15 +00:00
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 */
2009-12-11 20:23:14 +00:00
UCHAR ResVarIEs [ MAX_VIE_LEN ] ;
UCHAR RSNIE_Len ;
2009-12-11 20:23:15 +00:00
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 */
/* Hack for channel load and noise histogram parameters */
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:15 +00:00
UCHAR DtimCount ; /* 0.. DtimPeriod-1 */
UCHAR DtimPeriod ; /* default = 3 */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/*////////////////////////////////////////////////////////////////////////////////////// */
/* This is only for WHQL test. */
2009-12-11 20:23:14 +00:00
BOOLEAN WhqlTest ;
2009-12-11 20:23:15 +00:00
/*////////////////////////////////////////////////////////////////////////////////////// */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
RALINK_TIMER_STRUCT WpaDisassocAndBlockAssocTimer ;
2009-12-11 20:23:15 +00:00
/* 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 ;
2009-12-11 20:23:15 +00:00
CIPHER_KEY DesireSharedKey [ 4 ] ; /* Record user desired WEP keys */
2009-12-11 20:23:14 +00:00
UCHAR DesireSharedKeyId ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +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 */
2009-12-11 20:23:14 +00:00
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:15 +00:00
HTTRANSMIT_SETTING HTPhyMode , MaxHTPhyMode , MinHTPhyMode ; /* For transmit phy setting in TXWI. */
2009-12-11 20:23:14 +00:00
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-12-11 20:23:15 +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 ;
2009-12-11 20:23:15 +00:00
# endif /* RTMP_MAC_PCI // */
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN bAutoConnectByBssid ;
2009-12-11 20:23:15 +00:00
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 ;
2009-12-11 20:23:15 +00:00
/* 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. */
2008-10-28 21:48:09 +00:00
typedef struct _STA_ACTIVE_CONFIG {
2009-12-11 20:23:14 +00:00
USHORT Aid ;
2009-12-11 20:23:15 +00:00
USHORT AtimWin ; /* in kusec; IBSS parameter set element */
2009-12-11 20:23:14 +00:00
USHORT CapabilityInfo ;
USHORT CfpMaxDuration ;
USHORT CfpPeriod ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +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 ;
2009-12-11 20:23:15 +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 {
2009-12-11 20:23:15 +00:00
/*Choose 1 from ValidAsWDS and ValidAsCLI to validize. */
BOOLEAN ValidAsCLI ; /* Sta mode, set this TRUE after Linkup,too. */
BOOLEAN ValidAsWDS ; /* This is WDS Entry. only for AP mode. */
BOOLEAN ValidAsApCli ; /*This is a AP-Client entry, only for AP mode which enable AP-Client functions. */
2009-12-11 20:23:14 +00:00
BOOLEAN ValidAsMesh ;
2009-12-11 20:23:15 +00:00
BOOLEAN ValidAsDls ; /* This is DLS Entry. only for STA mode. */
2009-12-11 20:23:14 +00:00
BOOLEAN isCached ;
2009-12-11 20:23:15 +00:00
BOOLEAN bIAmBadAtheros ; /* Flag if this is Atheros chip that has IOT problem. We need to turn on RTS/CTS protection. */
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
UCHAR EnqueueEapolStartTimerRunning ; /* Enqueue EAPoL-Start for triggering EAP SM */
/*jan for wpa */
/* record which entry revoke MIC Failure , if it leaves the BSS itself, AP won't update aMICFailTime MIB */
2009-12-11 20:23:14 +00:00
UCHAR CMTimerRunning ;
2009-12-11 20:23:15 +00:00
UCHAR apidx ; /* MBSS number */
2009-12-11 20:23:14 +00:00
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 ;
2009-12-11 20:23:15 +00:00
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 */
2009-12-11 20:23:14 +00:00
NDIS_802_11_WEP_STATUS WepStatus ;
NDIS_802_11_WEP_STATUS GroupKeyWepStatus ;
AP_WPA_STATE WpaState ;
GTK_STATE GTKState ;
USHORT PortSecured ;
2009-12-11 20:23:15 +00:00
NDIS_802_11_PRIVACY_FILTER PrivacyFilter ; /* PrivacyFilter enum for 802.1X */
2009-12-11 20:23:14 +00:00
CIPHER_KEY PairwiseKey ;
PVOID pAd ;
INT PMKID_CacheIdx ;
UCHAR PMKID [ LEN_PMKID ] ;
UCHAR Addr [ MAC_ADDR_LEN ] ;
UCHAR PsMode ;
SST Sst ;
2009-12-11 20:23:15 +00:00
AUTH_STATE AuthState ; /* for SHARED KEY authentication state machine used only */
BOOLEAN IsReassocSta ; /* Indicate whether this is a reassociation procedure */
2009-12-11 20:23:14 +00:00
USHORT Aid ;
USHORT CapabilityInfo ;
UCHAR LastRssi ;
ULONG NoDataIdleCount ;
2009-12-11 20:23:15 +00:00
UINT16 StationKeepAliveCount ; /* unit: second */
2009-12-11 20:23:14 +00:00
ULONG PsQIdleCount ;
QUEUE_HEADER PsQueue ;
2009-12-11 20:23:15 +00:00
UINT32 StaConnectTime ; /* the live time of this station since associated with AP */
2009-12-11 20:23:14 +00:00
BOOLEAN bSendBAR ;
USHORT NoBADataCountDown ;
2009-12-11 20:23:15 +00:00
UINT32 CachedBuf [ 16 ] ; /* UINT (4 bytes) for alignment */
UINT TxBFCount ; /* 3*3 */
2009-12-11 20:23:14 +00:00
UINT FIFOCount ;
UINT DebugFIFOCount ;
UINT DebugTxCount ;
BOOLEAN bDlsInit ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/*==================================================== */
/*WDS entry needs these */
/* 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 ;
2009-12-11 20:23:15 +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 ] ;
2009-12-11 20:23:15 +00:00
/* USHORT OneSecTxOkCount; */
2009-12-11 20:23:14 +00:00
UINT32 OneSecTxNoRetryOkCount ;
UINT32 OneSecTxRetryOkCount ;
UINT32 OneSecTxFailCount ;
UINT32 ContinueTxFailCnt ;
2009-12-11 20:23:15 +00:00
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 ;
2009-12-11 20:23:15 +00:00
UCHAR LastSecTxRateChangeAction ; /* 0: no change, 1:rate UP, 2:rate down */
CHAR LastTimeTxRateChangeAction ; /*Keep last time value of LastSecTxRateChangeAction */
2009-12-11 20:23:14 +00:00
ULONG LastTxOkCount ;
UCHAR PER [ MAX_STEP_OF_TX_RATE_SWITCH ] ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +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:15 +00:00
HTTRANSMIT_SETTING HTPhyMode , MaxHTPhyMode , MinHTPhyMode ; /* For transmit phy setting in TXWI. */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* HT EWC MIMO-N used parameters */
USHORT RXBAbitmap ; /* fill to on-chip RXWI_BA_BITMASK in 8.1.3RX attribute entry format */
USHORT TXBAbitmap ; /* This bitmap as originator, only keep in software used to mark AMPDU bit in TXWI */
2009-12-11 20:23:14 +00:00
USHORT TXAutoBAbitmap ;
USHORT BADeclineBitmap ;
2009-12-11 20:23:15 +00:00
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
2009-12-11 20:23:15 +00:00
/* 802.11n features. */
2009-12-11 20:23:14 +00:00
UCHAR MpduDensity ;
UCHAR MaxRAmpduFactor ;
UCHAR AMsduSize ;
2009-12-11 20:23:15 +00:00
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 ;
2009-12-11 20:23:15 +00:00
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 */
/*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
} ;
2009-12-11 20:23:15 +00:00
/* */
/* The miniport adapter structure */
/* */
2009-12-11 20:23:14 +00:00
struct _RTMP_ADAPTER {
2009-12-11 20:23:15 +00:00
PVOID OS_Cookie ; /* save specific structure relative to OS */
2009-12-11 20:23:14 +00:00
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:15 +00:00
PUCHAR CSRBaseAddress ; /* PCI MMIO Base Address, all access will use */
2009-12-11 20:23:14 +00:00
unsigned int irq_num ;
USHORT LnkCtrlBitMask ;
USHORT RLnkCtrlConfiguration ;
USHORT RLnkCtrlOffset ;
USHORT HostLnkCtrlConfiguration ;
USHORT HostLnkCtrlOffset ;
USHORT PCIePowerSaveLevel ;
2009-12-11 20:23:15 +00:00
ULONG Rt3xxHostLinkCtrl ; /* USed for 3090F chip */
ULONG Rt3xxRalinkLinkCtrl ; /* USed for 3090F chip */
USHORT DeviceID ; /* Read from PCI config */
2009-12-11 20:23:14 +00:00
ULONG AccessBBPFailCount ;
2009-12-11 20:23:15 +00:00
BOOLEAN bPCIclkOff ; /* flag that indicate if the PICE power status in Configuration SPace.. */
BOOLEAN bPCIclkOffDisableTx ; /* */
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
BOOLEAN brt30xxBanMcuCmd ; /*when = 0xff means all commands are ok to set . */
BOOLEAN b3090ESpecialChip ; /*3090E special chip that write EEPROM 0x24=0x9280. */
ULONG CheckDmaBusyCount ; /* Check Interrupt Status Register Count. */
2009-12-11 20:23:14 +00:00
UINT int_enable_reg ;
UINT int_disable_mask ;
UINT int_pending ;
2009-12-11 20:23:15 +00:00
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 // */
2009-12-11 20:23:14 +00:00
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 ;
2009-12-11 20:23:15 +00:00
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
2009-12-11 20:23:15 +00:00
/*======Control Flags */
2009-12-11 20:23:14 +00:00
LONG PendingIoCount ;
ULONG BulkFlags ;
2009-12-11 20:23:15 +00:00
BOOLEAN bUsbTxBulkAggre ; /* Flags for bulk out data priority */
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:15 +00:00
/*======Cmd Thread */
2009-12-11 20:23:14 +00:00
CmdQ CmdQ ;
2009-12-11 20:23:15 +00:00
NDIS_SPIN_LOCK CmdQLock ; /* CmdQLock spinlock */
2009-12-11 20:23:14 +00:00
RTMP_OS_TASK cmdQTask ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:15 +00:00
/*======Semaphores (event) */
2009-12-11 20:23:14 +00:00
RTMP_OS_SEM UsbVendorReq_semaphore ;
PVOID UsbVendorReqBuf ;
wait_queue_head_t * wait ;
2009-12-11 20:23:15 +00:00
# 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:15 +00:00
/*RTMP_DEV_INFO chipInfo; */
2009-12-11 20:23:14 +00:00
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
2009-12-11 20:23:15 +00:00
/* 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 ;
2009-12-11 20:23:15 +00:00
# endif /* RTMP_TIMER_TASK_SUPPORT // */
2008-10-28 21:48:09 +00:00
/*****************************************************************************************/
/* Tx related parameters */
/*****************************************************************************************/
2009-12-11 20:23:15 +00:00
BOOLEAN DeQueueRunning [ NUM_OF_TX_RING ] ; /* for ensuring RTUSBDeQueuePacket get call once */
2009-12-11 20:23:14 +00:00
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-12-11 20:23:15 +00:00
/* Data related context and AC specified, 4 AC supported */
NDIS_SPIN_LOCK BulkOutLock [ 6 ] ; /* BulkOut spinlock for 4 ACs */
NDIS_SPIN_LOCK MLMEBulkOutLock ; /* MLME BulkOut lock */
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:14 +00:00
HT_TX_CONTEXT TxContext [ NUM_OF_TX_RING ] ;
2009-12-11 20:23:15 +00:00
NDIS_SPIN_LOCK TxContextQueueLock [ NUM_OF_TX_RING ] ; /* TxContextQueue spinlock */
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:15 +00:00
/* 4 sets of Bulk Out index and pending flag */
UCHAR NextBulkOutIndex [ 4 ] ; /* only used for 4 EDCA bulkout pipe */
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:15 +00:00
BOOLEAN BulkOutPending [ 6 ] ; /* used for total 6 bulkout pipe */
2009-12-11 20:23:14 +00:00
UCHAR bulkResetPipeid ;
BOOLEAN MgmtBulkPending ;
ULONG bulkResetReq [ 6 ] ;
2009-12-11 20:23:15 +00:00
# endif /* RTMP_MAC_USB // */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* resource for software backlog queues */
QUEUE_HEADER TxSwQueue [ NUM_OF_TX_RING ] ; /* 4 AC + 1 HCCA */
NDIS_SPIN_LOCK TxSwQueueLock [ NUM_OF_TX_RING ] ; /* TxSwQueue spinlock */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
RTMP_DMABUF MgmtDescRing ; /* Shared memory for MGMT descriptors */
2009-12-11 20:23:14 +00:00
RTMP_MGMT_RING MgmtRing ;
2009-12-11 20:23:15 +00:00
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 ;
2009-12-11 20:23:15 +00:00
NDIS_SPIN_LOCK RxRingLock ; /* Rx Ring spinlock */
2009-09-22 18:44:24 +00:00
# ifdef RT3090
2009-12-11 20:23:15 +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:15 +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:15 +00:00
UINT32 MACVersion ; /* MAC version. Record rt2860C(0x28600100) or rt2860D (0x28600101).. */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* --------------------------- */
/* E2PROM */
/* --------------------------- */
ULONG EepromVersion ; /* byte 0: version, byte 1: revision, byte 2~3: unused */
ULONG FirmwareVersion ; /* byte 0: Minor version, byte 1: Major version, otherwise unused. */
2009-12-11 20:23:14 +00:00
USHORT EEPROMDefaultValue [ NUM_EEPROM_BBP_PARMS ] ;
2009-12-11 20:23:15 +00:00
UCHAR EEPROMAddressNum ; /* 93c46=6 93c66=8 */
2009-12-11 20:23:14 +00:00
BOOLEAN EepromAccess ;
UCHAR EFuseTag ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* --------------------------- */
/* BBP Control */
/* --------------------------- */
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 */
2009-12-11 20:23:14 +00:00
BBP_R66_TUNING BbpTuning ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* ---------------------------- */
/* RFIC control */
/* ---------------------------- */
UCHAR RfIcType ; /* RFIC_xxx */
ULONG RfFreqOffset ; /* Frequency offset for channel switching */
RTMP_RF_REGS LatchRfRegs ; /* latch th latest RF programming value since RF IC doesn't support READ */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
EEPROM_ANTENNA_STRUC Antenna ; /* Since ANtenna definition is different for a & g. We need to save it for future reference. */
2009-12-11 20:23:14 +00:00
EEPROM_NIC_CONFIG2_STRUC NicConfig2 ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +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 ;
2009-12-11 20:23:15 +00:00
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 */
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
UCHAR ChannelListNum ; /* number of channel in ChannelList[] */
2009-12-11 20:23:14 +00:00
UCHAR Bbp94 ;
BOOLEAN BbpForCCK ;
ULONG Tx20MPwrCfgABand [ 5 ] ;
ULONG Tx20MPwrCfgGBand [ 5 ] ;
ULONG Tx40MPwrCfgABand [ 5 ] ;
ULONG Tx40MPwrCfgGBand [ 5 ] ;
2009-12-11 20:23:15 +00:00
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
2009-12-11 20:23:15 +00:00
/* 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:15 +00:00
UCHAR TxMixerGain24G ; /* Tx mixer gain value from EEPROM to improve Tx EVM / Tx DAC, 2.4G */
2009-12-11 20:23:14 +00:00
UCHAR TxMixerGain5G ;
2009-12-11 20:23:15 +00:00
# endif /* RT30xx // */
/* ---------------------------- */
/* LED control */
/* ---------------------------- */
2009-12-11 20:23:14 +00:00
MCU_LEDCS_STRUC LedCntl ;
2009-12-11 20:23:15 +00:00
USHORT Led1 ; /* read from EEPROM 0x3c */
USHORT Led2 ; /* EEPROM 0x3e */
USHORT Led3 ; /* EEPROM 0x40 */
2009-12-11 20:23:14 +00:00
UCHAR LedIndicatorStrength ;
UCHAR RssiSingalstrengthOffet ;
BOOLEAN bLedOnScanning ;
UCHAR LedStatus ;
2008-10-28 21:48:09 +00:00
/*****************************************************************************************/
/* 802.11 related parameters */
/*****************************************************************************************/
2009-12-11 20:23:15 +00:00
/* 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
2009-12-11 20:23:15 +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 ;
2009-12-11 20:23:15 +00:00
# endif /* RTMP_MAC_USB // */
/*=========AP=========== */
/*=======STA=========== */
/* ----------------------------------------------- */
/* STA specific configuration & operation status */
/* used only when pAd->OpMode == OPMODE_STA */
/* ----------------------------------------------- */
STA_ADMIN_CONFIG StaCfg ; /* user desired settings */
STA_ACTIVE_CONFIG StaActive ; /* valid only when ADHOC_ON(pAd) || INFRA_ON(pAd) */
CHAR nickname [ IW_ESSID_MAX_SIZE + 1 ] ; /* nickname, only used in the iwconfig i/f */
2009-12-11 20:23:14 +00:00
NDIS_MEDIA_STATE PreMediaState ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/*=======Common=========== */
/* OP mode: either AP or STA */
UCHAR OpMode ; /* OPMODE_STA, OPMODE_AP */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +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 */
2009-12-11 20:23:15 +00:00
/* configuration: read from Registry & E2PROM */
BOOLEAN bLocalAdminMAC ; /* Use user changed MAC */
UCHAR PermanentAddress [ MAC_ADDR_LEN ] ; /* Factory default MAC address */
UCHAR CurrentAddress [ MAC_ADDR_LEN ] ; /* User changed MAC address */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +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
2009-12-11 20:23:15 +00:00
/* AP needs those vaiables for site survey feature. */
MLME_AUX MlmeAux ; /* temporary settings used during MLME state machine */
BSS_TABLE ScanTab ; /* store the latest SCAN result */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/*About MacTab, the sta driver will use #0 and #1 for multicast and AP. */
MAC_TABLE MacTab ; /* ASIC on-chip WCID entry table. At TX, ASIC always use key according to this on-chip table. */
2009-12-11 20:23:14 +00:00
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 ;
2009-12-11 20:23:15 +00:00
/* encryption/decryption KEY tables */
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:15 +00:00
/* RX re-assembly buffer for fragmentation */
FRAGMENT_FRAME FragFrame ; /* Frame storage for fragment frame */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* various Counters */
COUNTER_802_3 Counters8023 ; /* 802.3 counters */
COUNTER_802_11 WlanCounters ; /* 802.11 MIB counters */
COUNTER_RALINK RalinkCounters ; /* Ralink propriety counters */
COUNTER_DRS DrsCounters ; /* counters for Dynamic TX Rate Switching */
PRIVATE_STRUC PrivateInfo ; /* Private information & counters */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* flags, see fRTMP_ADAPTER_xxx flags */
ULONG Flags ; /* Represent current device status */
ULONG PSFlags ; /* Power Save operation flag. */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* current TX sequence # */
2009-12-11 20:23:14 +00:00
USHORT Sequence ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* Control disconnect / connect event generation */
/*+++Didn't used anymore */
2009-12-11 20:23:14 +00:00
ULONG LinkDownTime ;
2009-12-11 20:23:15 +00:00
/*--- */
2009-12-11 20:23:14 +00:00
ULONG LastRxRate ;
ULONG LastTxRate ;
2009-12-11 20:23:15 +00:00
/*+++Used only for Station */
BOOLEAN bConfigChanged ; /* Config Change flag for the same SSID setting */
/*--- */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
ULONG ExtraInfo ; /* Extra information for displaying status */
ULONG SystemErrorBitmap ; /* b0: E2PROM version error */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/*+++Didn't used anymore */
ULONG MacIcVersion ; /* MAC/BBP serial interface issue solved after ver.D */
/*--- */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +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 ;
2009-12-11 20:23:15 +00:00
ULONG BulkLastOneSecCount ; /* BulkOutDataOneSecCount + BulkInDataOneSecCount */
2009-12-11 20:23:14 +00:00
ULONG watchDogRxCnt ;
ULONG watchDogRxOverFlowCnt ;
ULONG watchDogTxPendingCnt [ NUM_OF_TX_RING ] ;
INT TransferedLength [ NUM_OF_TX_RING ] ;
2009-12-11 20:23:15 +00:00
# endif /* RTMP_MAC_USB // */
2009-12-11 20:23:14 +00:00
BOOLEAN bUpdateBcnCntDone ;
2009-12-11 20:23:15 +00:00
ULONG watchDogMacDeadlock ; /* prevent MAC/BBP into deadlock condition */
/* ---------------------------- */
/* DEBUG paramerts */
/* ---------------------------- */
/*ULONG DebugSetting[4]; */
2009-12-11 20:23:14 +00:00
BOOLEAN bBanAllBaSetup ;
BOOLEAN bPromiscuous ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* ---------------------------- */
/* rt2860c emulation-use Parameters */
/* ---------------------------- */
/*ULONG rtsaccu[30]; */
/*ULONG ctsaccu[30]; */
/*ULONG cfendaccu[30]; */
/*ULONG bacontent[16]; */
/*ULONG rxint[RX_RING_SIZE+1]; */
/*UCHAR rcvba[60]; */
2009-12-11 20:23:14 +00:00
BOOLEAN bLinkAdapt ;
BOOLEAN bForcePrintTX ;
BOOLEAN bForcePrintRX ;
2009-12-11 20:23:15 +00:00
/*BOOLEAN bDisablescanning; //defined in RT2870 USB */
2009-12-11 20:23:14 +00:00
BOOLEAN bStaFifoTest ;
BOOLEAN bProtectionTest ;
BOOLEAN bBroadComHT ;
2009-12-11 20:23:15 +00:00
/*+++Following add from RT2870 USB. */
2009-12-11 20:23:14 +00:00
ULONG BulkOutReq ;
ULONG BulkOutComplete ;
ULONG BulkOutCompleteOther ;
2009-12-11 20:23:15 +00:00
ULONG BulkOutCompleteCancel ; /* seems not use now? */
2009-12-11 20:23:14 +00:00
ULONG BulkInReq ;
ULONG BulkInComplete ;
ULONG BulkInCompleteFail ;
2009-12-11 20:23:15 +00:00
/*--- */
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:15 +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 ;
2009-12-11 20:23:15 +00:00
# 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 ;
2009-12-11 20:23:15 +00:00
# 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 ] ;
2009-12-11 20:23:15 +00:00
# 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
2009-12-11 20:23:15 +00:00
# define RxINT 0x00000005 /* Delayed Rx or indivi rx */
# define TxDataInt 0x000000fa /* Delayed Tx or indivi tx */
# define TxMgmtInt 0x00000102 /* Delayed Tx or indivi tx */
# define TxCoherent 0x00020000 /* tx coherent */
# define RxCoherent 0x00010000 /* rx coherent */
# define McuCommand 0x00000200 /* mcu */
# define PreTBTTInt 0x00001000 /* Pre-TBTT interrupt */
# define TBTTInt 0x00000800 /* TBTT interrupt */
# define GPTimeOutInt 0x00008000 /* GPtimeout interrupt */
# define AutoWakeupInt 0x00004000 /* AutoWakeupInt interrupt */
# define FifoStaFullInt 0x00002000 /* fifo statistics full interrupt */
2008-10-28 21:48:09 +00:00
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_ {
2009-12-11 20:23:15 +00:00
/* RXD_STRUC RxD; // sample */
2009-12-11 20:23:14 +00:00
RT28XX_RXD_STRUC RxD ;
PRXWI_STRUC pRxWI ;
PHEADER_802_11 pHeader ;
PNDIS_PACKET pRxPacket ;
UCHAR * pData ;
USHORT DataSize ;
USHORT Flags ;
2009-12-11 20:23:15 +00:00
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:15 +00:00
/* Currently the sizeof(TX_BLK) is 148 bytes. */
2009-12-11 20:23:14 +00:00
typedef struct _TX_BLK_ {
UCHAR QueIdx ;
2009-12-11 20:23:15 +00:00
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 ;
2009-12-11 20:23:15 +00:00
MAC_TABLE_ENTRY * pMacEntry ; /* NULL: packet with 802.11 RA field is multicast/broadcast address */
2009-12-11 20:23:14 +00:00
HTTRANSMIT_SETTING * pTransmit ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* Following structure used for the characteristics of a specific packet. */
2009-12-11 20:23:14 +00:00
PNDIS_PACKET pPacket ;
2009-12-11 20:23:15 +00:00
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 */
/*RT2870 2.1.0.0 uses only 80 bytes */
/*RT3070 2.1.1.0 uses only 96 bytes */
/*RT3090 2.1.0.0 uses only 96 bytes */
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 */
2009-12-11 20:23:14 +00:00
PCIPHER_KEY pKey ;
2009-12-11 20:23:15 +00:00
USHORT Flags ; /*See following definitions for detail. */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/*YOU SHOULD NOT TOUCH IT! Following parameters are used for hardware-depended layer. */
ULONG Priv ; /* Hardware specific value saved in here. */
2008-10-28 21:48:09 +00:00
} TX_BLK , * PTX_BLK ;
2009-12-11 20:23:15 +00:00
# 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 */
2008-10-28 21:48:09 +00:00
# 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 :
2009-12-11 20:23:15 +00:00
/* memset(*ppMacAddr, 0, ETH_LENGTH_OF_ADDRESS); */
2009-12-11 20:23:14 +00:00
* ( * 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 :
2009-12-11 20:23:15 +00:00
/* memset(*ppMacAddr, 0, ETH_LENGTH_OF_ADDRESS); */
2009-12-11 20:23:14 +00:00
* ( * 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
2009-12-11 20:23:15 +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-12-11 20:23:15 +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
2009-12-11 20:23:15 +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
2009-12-11 20:23:15 +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-12-11 20:23:15 +00:00
# endif /* RTMP_MAC_PCI // */
2009-09-22 18:44:07 +00:00
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:15 +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. */
2009-12-11 20:23:14 +00:00
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 ) ;
2009-12-11 20:23:15 +00:00
/*+++mark by shiang, now this function merge to MiniportMMRequest() */
/*---mark by shiang, now this function merge to MiniportMMRequest() */
2008-10-28 21:48:09 +00:00
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
2009-12-11 20:23:15 +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
2009-12-11 20:23:15 +00:00
/* */
/* MLME routines */
/* */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* Asic/RF/BBP related functions */
2008-10-28 21:48:09 +00:00
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-12-11 20:23:15 +00:00
# endif /* RTMP_MAC_PCI // */
2009-09-22 18:44:07 +00:00
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 ) ;
2009-12-11 20:23:15 +00:00
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 */
2009-12-11 20:23:14 +00:00
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 ) ;
2009-12-11 20:23:15 +00:00
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 */
2009-12-11 20:23:14 +00:00
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:15 +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-12-11 20:23:15 +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:15 +00:00
/*============================================= */
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
2009-12-11 20:23:15 +00:00
/* */
/* Private routines in dls.c */
/* */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/*======================================== */
2008-10-28 21:48:09 +00:00
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 ) ;
2009-12-11 20:23:15 +00:00
/*========================================= */
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 [ ] ) ;
2009-12-11 20:23:15 +00:00
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 */
2009-12-11 20:23:14 +00:00
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
2009-12-11 20:23:15 +00:00
/*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-12-11 20:23:15 +00:00
/*2008/09/11:KH add to support efuse--> */
# endif /* RTMP_EFUSE_SUPPORT // */
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
/* 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-12-11 20:23:15 +00:00
/* end johnli */
2009-09-22 18:44:07 +00:00
# ifdef RT3070
2009-12-11 20:23:14 +00:00
VOID NICInitRT3070RFRegisters ( IN RTMP_ADAPTER * pAd ) ;
2009-12-11 20:23:15 +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-12-11 20:23:15 +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-12-11 20:23:15 +00:00
# endif /* RT30xx // */
2009-09-22 18:44:07 +00:00
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
2009-12-11 20:23:15 +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
2009-12-11 20:23:15 +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
2009-12-11 20:23:15 +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-12-11 20:23:15 +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 ) ;
2009-12-11 20:23:15 +00:00
/*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
2009-12-11 20:23:15 +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
2009-12-11 20:23:15 +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
2009-12-11 20:23:15 +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
2009-12-11 20:23:15 +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
2009-12-11 20:23:15 +00:00
/* remove LLC and get 802_3 Header */
2008-10-28 21:48:09 +00:00
# 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 ) ;
2009-12-11 20:23:15 +00:00
/*announce_802_3_packet(_pAd, _pPacket); */
2008-10-28 21:48:09 +00:00
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:15 +00:00
/* Normal, AMPDU or AMSDU */
2009-12-11 20:23:14 +00:00
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
2009-12-11 20:23:15 +00:00
/* */
/* Function Prototype in cmm_data_pci.c */
/* */
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-12-11 20:23:15 +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-12-11 20:23:15 +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-12-11 20:23:15 +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
2009-12-11 20:23:15 +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-12-11 20:23:15 +00:00
/* */
/* Function Prototype in cmm_data_usb.c */
/* */
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 ) ;
2009-12-11 20:23:15 +00:00
# endif /* RTMP_MAC_USB // */
2009-12-11 20:23:14 +00:00
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-12-11 20:23:15 +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-12-11 20:23:15 +00:00
# endif /* LINUX // */
2009-09-22 18:44:07 +00:00
/*
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:15 +00:00
# endif /* __RTMP_H__ */