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:16 +00:00
struct rt_rtmp_adapter ;
2009-09-22 18:44:07 +00:00
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 [ ] ;
2009-12-11 20:23:15 +00:00
extern u8 BaSizeArray [ 4 ] ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
extern u8 BROADCAST_ADDR [ MAC_ADDR_LEN ] ;
extern u8 ZERO_MAC_ADDR [ MAC_ADDR_LEN ] ;
extern unsigned long BIT32 [ 32 ] ;
extern u8 BIT8 [ 8 ] ;
2009-12-11 20:23:14 +00:00
extern char * CipherName [ ] ;
extern char * MCSToMbps [ ] ;
2009-12-11 20:23:15 +00:00
extern u8 RxwiMCSToOfdmRate [ 12 ] ;
extern u8 SNAP_802_1H [ 6 ] ;
extern u8 SNAP_BRIDGE_TUNNEL [ 6 ] ;
extern u8 SNAP_AIRONET [ 8 ] ;
extern u8 CKIP_LLC_SNAP [ 8 ] ;
extern u8 EAPOL_LLC_SNAP [ 8 ] ;
extern u8 EAPOL [ 2 ] ;
extern u8 IPX [ 2 ] ;
extern u8 APPLE_TALK [ 2 ] ;
extern u8 RateIdToPlcpSignal [ 12 ] ; /* see IEEE802.11a-1999 p.14 */
extern u8 OfdmRateToRxwiMCS [ ] ;
extern u8 OfdmSignalToRateId [ 16 ] ;
extern u8 default_cwmin [ 4 ] ;
extern u8 default_cwmax [ 4 ] ;
extern u8 default_sta_aifsn [ 4 ] ;
extern u8 MapUserPriorityToAccessCategory [ 8 ] ;
extern u16 RateUpPER [ ] ;
extern u16 RateDownPER [ ] ;
extern u8 Phy11BNextRateDownward [ ] ;
extern u8 Phy11BNextRateUpward [ ] ;
extern u8 Phy11BGNextRateDownward [ ] ;
extern u8 Phy11BGNextRateUpward [ ] ;
extern u8 Phy11ANextRateDownward [ ] ;
extern u8 Phy11ANextRateUpward [ ] ;
extern char RssiSafeLevelForTxRate [ ] ;
extern u8 RateIdToMbps [ ] ;
extern u16 RateIdTo500Kbps [ ] ;
extern u8 CipherSuiteWpaNoneTkip [ ] ;
extern u8 CipherSuiteWpaNoneTkipLen ;
extern u8 CipherSuiteWpaNoneAes [ ] ;
extern u8 CipherSuiteWpaNoneAesLen ;
extern u8 SsidIe ;
extern u8 SupRateIe ;
extern u8 ExtRateIe ;
extern u8 HtCapIe ;
extern u8 AddHtInfoIe ;
extern u8 NewExtChanIe ;
extern u8 ErpIe ;
extern u8 DsIe ;
extern u8 TimIe ;
extern u8 WpaIe ;
extern u8 Wpa2Ie ;
extern u8 IbssIe ;
extern u8 Ccx2Ie ;
extern u8 WapiIe ;
extern u8 WPA_OUI [ ] ;
extern u8 RSN_OUI [ ] ;
extern u8 WAPI_OUI [ ] ;
extern u8 WME_INFO_ELEM [ ] ;
extern u8 WME_PARM_ELEM [ ] ;
extern u8 Ccx2QosInfo [ ] ;
extern u8 Ccx2IeInfo [ ] ;
extern u8 RALINK_OUI [ ] ;
extern u8 PowerConstraintIE [ ] ;
extern u8 RateSwitchTable [ ] ;
extern u8 RateSwitchTable11B [ ] ;
extern u8 RateSwitchTable11G [ ] ;
extern u8 RateSwitchTable11BG [ ] ;
extern u8 RateSwitchTable11BGN1S [ ] ;
extern u8 RateSwitchTable11BGN2S [ ] ;
extern u8 RateSwitchTable11BGN2SForABand [ ] ;
extern u8 RateSwitchTable11N1S [ ] ;
extern u8 RateSwitchTable11N2S [ ] ;
extern u8 RateSwitchTable11N2SForABand [ ] ;
extern u8 PRE_N_HT_OUI [ ] ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
struct rt_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 */
char AvgRssi0 ;
char AvgRssi1 ;
char AvgRssi2 ;
short AvgRssi0X8 ;
short AvgRssi1X8 ;
short AvgRssi2X8 ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* */
/* Queue structure and macros */
/* */
2009-12-11 20:23:16 +00:00
struct rt_queue_entry ;
struct rt_queue_entry {
struct rt_queue_entry * Next ;
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* Queue structure */
2009-12-11 20:23:16 +00:00
struct rt_queue_header {
struct rt_queue_entry * Head ;
struct rt_queue_entry * Tail ;
2009-12-11 20:23:15 +00:00
unsigned long Number ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
# define InitializeQueueHeader(QueueHeader) \
{ \
( QueueHeader ) - > Head = ( QueueHeader ) - > Tail = NULL ; \
( QueueHeader ) - > Number = 0 ; \
}
# define RemoveHeadQueue(QueueHeader) \
( QueueHeader ) - > Head ; \
{ \
2009-12-11 20:23:16 +00:00
struct rt_queue_entry * pNext ; \
2010-04-20 00:06:33 +00:00
if ( ( QueueHeader ) - > Head ! = NULL ) { \
2008-10-28 21:48:09 +00:00
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) \
{ \
2009-12-11 20:23:16 +00:00
( ( struct rt_queue_entry * ) QueueEntry ) - > Next = ( QueueHeader ) - > Head ; \
( QueueHeader ) - > Head = ( struct rt_queue_entry * ) ( QueueEntry ) ; \
2008-10-28 21:48:09 +00:00
if ( ( QueueHeader ) - > Tail = = NULL ) \
2009-12-11 20:23:16 +00:00
( QueueHeader ) - > Tail = ( struct rt_queue_entry * ) ( QueueEntry ) ; \
2008-10-28 21:48:09 +00:00
( QueueHeader ) - > Number + + ; \
}
# define InsertTailQueue(QueueHeader, QueueEntry) \
{ \
2009-12-11 20:23:16 +00:00
( ( struct rt_queue_entry * ) QueueEntry ) - > Next = NULL ; \
2008-10-28 21:48:09 +00:00
if ( ( QueueHeader ) - > Tail ) \
2009-12-11 20:23:16 +00:00
( QueueHeader ) - > Tail - > Next = ( struct rt_queue_entry * ) ( QueueEntry ) ; \
2008-10-28 21:48:09 +00:00
else \
2009-12-11 20:23:16 +00:00
( QueueHeader ) - > Head = ( struct rt_queue_entry * ) ( QueueEntry ) ; \
( QueueHeader ) - > Tail = ( struct rt_queue_entry * ) ( QueueEntry ) ; \
2008-10-28 21:48:09 +00:00
( QueueHeader ) - > Number + + ; \
}
2009-09-22 18:44:07 +00:00
# define InsertTailQueueAc(pAd, pEntry, QueueHeader, QueueEntry) \
{ \
2009-12-11 20:23:16 +00:00
( ( struct rt_queue_entry * ) QueueEntry ) - > Next = NULL ; \
2009-09-22 18:44:07 +00:00
if ( ( QueueHeader ) - > Tail ) \
2009-12-11 20:23:16 +00:00
( QueueHeader ) - > Tail - > Next = ( struct rt_queue_entry * ) ( QueueEntry ) ; \
2009-09-22 18:44:07 +00:00
else \
2009-12-11 20:23:16 +00:00
( QueueHeader ) - > Head = ( struct rt_queue_entry * ) ( QueueEntry ) ; \
( QueueHeader ) - > Tail = ( struct rt_queue_entry * ) ( QueueEntry ) ; \
2009-09-22 18:44:07 +00:00
( 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)
2010-04-20 00:06:33 +00:00
# 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)
2008-10-28 21:48:09 +00:00
# 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 ; \
2010-04-20 00:06:33 +00:00
NdisMoveMemory ( ( _pAd ) - > MacTab . Content [ BSSID_WCID ] . HTCapability . MCSSet , ( _pAd ) - > StaActive . SupportedPhyInfo . MCSSet , sizeof ( u8 ) * 16 ) ; \
2008-10-28 21:48:09 +00:00
}
# define COPY_AP_HTSETTINGS_FROM_BEACON(_pAd, _pHtCapability) \
{ \
2009-12-11 20:23:15 +00:00
_pAd - > MacTab . Content [ BSSID_WCID ] . AMsduSize = ( u8 ) ( _pHtCapability - > HtCapInfo . AMsduSize ) ; \
2010-04-20 00:06:33 +00:00
_pAd - > MacTab . Content [ BSSID_WCID ] . MmpsMode = ( u8 ) ( _pHtCapability - > HtCapInfo . MimoPs ) ; \
2009-12-11 20:23:15 +00:00
_pAd - > MacTab . Content [ BSSID_WCID ] . MaxRAmpduFactor = ( u8 ) ( _pHtCapability - > HtCapParm . MaxRAmpduFactor ) ; \
2008-10-28 21:48:09 +00:00
}
2009-12-11 20:23:15 +00:00
/* */
/* MACRO for 32-bit PCI register read / write */
/* */
/* Usage : RTMP_IO_READ32( */
2009-12-11 20:23:16 +00:00
/* struct rt_rtmp_adapter *pAd, */
2009-12-11 20:23:15 +00:00
/* unsigned long Register_Offset, */
/* unsigned long * pValue) */
2009-12-11 20:23:15 +00:00
/* */
/* RTMP_IO_WRITE32( */
2009-12-11 20:23:16 +00:00
/* struct rt_rtmp_adapter *pAd, */
2009-12-11 20:23:15 +00:00
/* unsigned long Register_Offset, */
/* unsigned long Value) */
2009-12-11 20:23:15 +00:00
/* */
/* */
/* Common fragment list structure - Identical to the scatter gather frag list structure */
/* */
2009-12-11 20:23:16 +00:00
/*#define struct rt_rtmp_sg_element SCATTER_GATHER_ELEMENT */
/*#define struct rt_rtmp_sg_element *PSCATTER_GATHER_ELEMENT */
2008-10-28 21:48:09 +00:00
# define NIC_MAX_PHYS_BUF_COUNT 8
2009-12-11 20:23:16 +00:00
struct rt_rtmp_sg_element {
2009-12-11 20:23:15 +00:00
void * Address ;
unsigned long Length ;
unsigned long * Reserved ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_rtmp_sg_list {
2009-12-11 20:23:15 +00:00
unsigned long NumberOfElements ;
unsigned long * Reserved ;
2009-12-11 20:23:16 +00:00
struct rt_rtmp_sg_element Elements [ NIC_MAX_PHYS_BUF_COUNT ] ;
} ;
2008-10-28 21:48:09 +00:00
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) \
{ \
2010-04-20 00:06:33 +00:00
if ( ( ( * ( _pBufVA + 12 ) < < 8 ) + * ( _pBufVA + 13 ) ) > 1500 ) { \
2008-10-28 21:48:09 +00:00
_pExtraLlcSnapEncap = SNAP_802_1H ; \
if ( NdisEqualMemory ( IPX , _pBufVA + 12 , 2 ) | | \
2010-04-20 00:06:33 +00:00
NdisEqualMemory ( APPLE_TALK , _pBufVA + 12 , 2 ) ) { \
2008-10-28 21:48:09 +00:00
_pExtraLlcSnapEncap = SNAP_BRIDGE_TUNNEL ; \
} \
} \
2010-04-20 00:06:33 +00:00
else { \
2008-10-28 21:48:09 +00:00
_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) \
{ \
2010-04-20 00:06:33 +00:00
if ( ( ( * ( _pBufVA ) < < 8 ) + * ( _pBufVA + 1 ) ) > 1500 ) { \
2008-10-28 21:48:09 +00:00
_pExtraLlcSnapEncap = SNAP_802_1H ; \
if ( NdisEqualMemory ( IPX , _pBufVA , 2 ) | | \
2010-04-20 00:06:33 +00:00
NdisEqualMemory ( APPLE_TALK , _pBufVA , 2 ) ) { \
2008-10-28 21:48:09 +00:00
_pExtraLlcSnapEncap = SNAP_BRIDGE_TUNNEL ; \
} \
} \
2010-04-20 00:06:33 +00:00
else { \
2008-10-28 21:48:09 +00:00
_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 ] ; \
2010-04-20 00:06:33 +00:00
\
2008-10-28 21:48:09 +00:00
_pRemovedLLCSNAP = NULL ; \
if ( NdisEqualMemory ( SNAP_802_1H , _pData , 6 ) | | \
2010-04-20 00:06:33 +00:00
NdisEqualMemory ( SNAP_BRIDGE_TUNNEL , _pData , 6 ) ) { \
u8 * pProto = _pData + 6 ; \
\
if ( ( NdisEqualMemory ( IPX , pProto , 2 ) | | NdisEqualMemory ( APPLE_TALK , pProto , 2 ) ) & & \
NdisEqualMemory ( SNAP_802_1H , _pData , 6 ) ) { \
LLC_Len [ 0 ] = ( u8 ) ( _DataSize / 256 ) ; \
LLC_Len [ 1 ] = ( u8 ) ( _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 ; \
} \
2008-10-28 21:48:09 +00:00
} \
2010-04-20 00:06:33 +00:00
else { \
LLC_Len [ 0 ] = ( u8 ) ( _DataSize / 256 ) ; \
LLC_Len [ 1 ] = ( u8 ) ( _DataSize % 256 ) ; \
MAKE_802_3_HEADER ( _p8023hdr , _pDA , _pSA , LLC_Len ) ; \
2008-10-28 21:48:09 +00:00
} \
}
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) \
{ \
2009-12-11 20:23:15 +00:00
u32 High32TSF , Low32TSF ; \
2008-10-28 21:48:09 +00:00
RTMP_IO_READ32 ( _pAd , TSF_TIMER_DW1 , & High32TSF ) ; \
RTMP_IO_READ32 ( _pAd , TSF_TIMER_DW0 , & Low32TSF ) ; \
2010-04-20 00:06:33 +00:00
MlmeEnqueueForRecv ( _pAd , Wcid , High32TSF , Low32TSF , ( u8 ) _Rssi0 , ( u8 ) _Rssi1 , ( u8 ) _Rssi2 , _FrameSize , _pFrame , ( u8 ) _PlcpSignal ) ; \
2008-10-28 21:48:09 +00:00
}
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) \
{ \
2010-04-20 00:06:33 +00:00
u32 High32TSF = 0 , Low32TSF = 0 ; \
MlmeEnqueueForRecv ( _pAd , Wcid , High32TSF , Low32TSF , ( u8 ) _Rssi0 , ( u8 ) _Rssi1 , ( u8 ) _Rssi2 , _FrameSize , _pFrame , ( u8 ) _PlcpSignal ) ; \
2009-04-26 14:06:25 +00:00
}
2009-12-11 20:23:15 +00:00
# endif /* RTMP_MAC_USB // */
2008-10-28 21:48:09 +00:00
2010-04-20 00:06:33 +00:00
# define MAC_ADDR_EQUAL(pAddr1, pAddr2) RTMPEqualMemory((void *)(pAddr1), (void *)(pAddr2), MAC_ADDR_LEN)
# define SSID_EQUAL(ssid1, len1, ssid2, len2) ((len1 == len2) && (RTMPEqualMemory(ssid1, ssid2, len1)))
2008-10-28 21:48:09 +00:00
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:16 +00:00
struct rt_rtmp_dmabuf {
2009-12-11 20:23:15 +00:00
unsigned long AllocSize ;
void * AllocVa ; /* TxBuf virtual address */
2009-12-11 20:23:15 +00:00
dma_addr_t AllocPa ; /* TxBuf physical address */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* */
/* Control block (Descriptor) for all ring descriptor DMA operation, buffer must be */
2009-12-11 20:23:15 +00:00
/* contiguous physical memory. char stored the binding Rx packet descriptor */
2009-12-11 20:23:15 +00:00
/* 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 */
2009-12-11 20:23:15 +00:00
/* to describe the packet buffer. For Tx, char stored the tx packet descriptor */
2009-12-11 20:23:15 +00:00
/* which driver should ACK upper layer when the tx is physically done or failed. */
/* */
2009-12-11 20:23:16 +00:00
struct rt_rtmp_dmacb {
2009-12-11 20:23:15 +00:00
unsigned long AllocSize ; /* Control block size */
void * AllocVa ; /* Control block virtual address */
2009-12-11 20:23:15 +00:00
dma_addr_t AllocPa ; /* Control block physical address */
void * pNdisPacket ;
void * pNextNdisPacket ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_rtmp_dmabuf DmaBuf ; /* Associated DMA buffer structure */
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_rtmp_tx_ring {
struct rt_rtmp_dmacb Cell [ TX_RING_SIZE ] ;
2009-12-11 20:23:15 +00:00
u32 TxCpuIdx ;
u32 TxDmaIdx ;
u32 TxSwFreeIdx ; /* software next free tx index */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_rtmp_rx_ring {
struct rt_rtmp_dmacb Cell [ RX_RING_SIZE ] ;
2009-12-11 20:23:15 +00:00
u32 RxCpuIdx ;
u32 RxDmaIdx ;
int RxSwReadIdx ; /* software next read index */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_rtmp_mgmt_ring {
struct rt_rtmp_dmacb Cell [ MGMT_RING_SIZE ] ;
2009-12-11 20:23:15 +00:00
u32 TxCpuIdx ;
u32 TxDmaIdx ;
u32 TxSwFreeIdx ; /* software next free tx index */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* */
/* Statistic counter structure */
/* */
2009-12-11 20:23:16 +00:00
struct rt_counter_802_3 {
2009-12-11 20:23:15 +00:00
/* General Stats */
2009-12-11 20:23:15 +00:00
unsigned long GoodTransmits ;
unsigned long GoodReceives ;
unsigned long TxErrors ;
unsigned long RxErrors ;
unsigned long RxNoBuffer ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* Ethernet Stats */
2009-12-11 20:23:15 +00:00
unsigned long RcvAlignmentErrors ;
unsigned long OneCollision ;
unsigned long MoreCollisions ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_counter_802_11 {
2009-12-11 20:23:15 +00:00
unsigned long Length ;
2009-12-11 20:23:14 +00:00
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 ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_counter_ralink {
2009-12-11 20:23:15 +00:00
unsigned long TransmittedByteCount ; /* both successful and failure, used to calculate TX throughput */
unsigned long ReceivedByteCount ; /* both CRC okay and CRC error, used to calculate RX throughput */
unsigned long BeenDisassociatedCount ;
unsigned long BadCQIAutoRecoveryCount ;
unsigned long PoorCQIRoamingCount ;
unsigned long MgmtRingFullCount ;
unsigned long RxCountSinceLastNULL ;
unsigned long RxCount ;
unsigned long RxRingErrCount ;
unsigned long KickTxCount ;
unsigned long TxRingErrCount ;
2009-12-11 20:23:14 +00:00
LARGE_INTEGER RealFcsErrCount ;
2009-12-11 20:23:15 +00:00
unsigned long PendingNdisPacketCount ;
unsigned long OneSecOsTxCount [ NUM_OF_TX_RING ] ;
unsigned long OneSecDmaDoneCount [ NUM_OF_TX_RING ] ;
u32 OneSecTxDoneCount ;
unsigned long OneSecRxCount ;
u32 OneSecTxAggregationCount ;
u32 OneSecRxAggregationCount ;
u32 OneSecReceivedByteCount ;
u32 OneSecFrameDuplicateCount ;
u32 OneSecTransmittedByteCount ; /* both successful and failure, used to calculate TX throughput */
u32 OneSecTxNoRetryOkCount ;
u32 OneSecTxRetryOkCount ;
u32 OneSecTxFailCount ;
u32 OneSecFalseCCACnt ; /* CCA error count, for debug purpose, might move to global counter */
u32 OneSecRxOkCnt ; /* RX without error */
u32 OneSecRxOkDataCnt ; /* unicast-to-me DATA frame count */
u32 OneSecRxFcsErrCnt ; /* CRC error */
u32 OneSecBeaconSentCnt ;
u32 LastOneSecTotalTxCount ; /* OneSecTxNoRetryOkCount + OneSecTxRetryOkCount + OneSecTxFailCount */
u32 LastOneSecRxOkDataCnt ; /* OneSecRxOkDataCnt */
unsigned long DuplicateRcv ;
unsigned long TxAggCount ;
unsigned long TxNonAggCount ;
unsigned long TxAgg1MPDUCount ;
unsigned long TxAgg2MPDUCount ;
unsigned long TxAgg3MPDUCount ;
unsigned long TxAgg4MPDUCount ;
unsigned long TxAgg5MPDUCount ;
unsigned long TxAgg6MPDUCount ;
unsigned long TxAgg7MPDUCount ;
unsigned long TxAgg8MPDUCount ;
unsigned long TxAgg9MPDUCount ;
unsigned long TxAgg10MPDUCount ;
unsigned long TxAgg11MPDUCount ;
unsigned long TxAgg12MPDUCount ;
unsigned long TxAgg13MPDUCount ;
unsigned long TxAgg14MPDUCount ;
unsigned long TxAgg15MPDUCount ;
unsigned long TxAgg16MPDUCount ;
2009-12-11 20:23:14 +00:00
LARGE_INTEGER TransmittedOctetsInAMSDU ;
LARGE_INTEGER TransmittedAMSDUCount ;
LARGE_INTEGER ReceivedOctesInAMSDUCount ;
LARGE_INTEGER ReceivedAMSDUCount ;
LARGE_INTEGER TransmittedAMPDUCount ;
LARGE_INTEGER TransmittedMPDUsInAMPDUCount ;
LARGE_INTEGER TransmittedOctetsInAMPDUCount ;
LARGE_INTEGER MPDUInReceivedAMPDUCount ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_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:15 +00:00
u16 TxQuality [ MAX_STEP_OF_TX_RATE_SWITCH ] ;
u8 PER [ MAX_STEP_OF_TX_RATE_SWITCH ] ;
u8 TxRateUpPenalty ; /* extra # of second penalty due to last unstable condition */
unsigned long 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
u8 LastSecTxRateChangeAction ; /* 0: no change, 1:rate UP, 2:rate down */
u8 LastTimeTxRateChangeAction ; /*Keep last time value of LastSecTxRateChangeAction */
unsigned long LastTxOkCount ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
/***************************************************************************
* security key related data structure
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2009-12-11 20:23:16 +00:00
struct rt_cipher_key {
2009-12-11 20:23:15 +00:00
u8 Key [ 16 ] ; /* right now we implement 4 keys, 128 bits max */
u8 RxMic [ 8 ] ; /* make alignment */
u8 TxMic [ 8 ] ;
u8 TxTsc [ 6 ] ; /* 48bit TSC value */
u8 RxTsc [ 6 ] ; /* 48bit TSC value */
u8 CipherAlg ; /* 0-none, 1:WEP64, 2:WEP128, 3:TKIP, 4:AES, 5:CKIP64, 6:CKIP128 */
u8 KeyLen ;
u8 BssId [ 6 ] ;
2009-12-11 20:23:15 +00:00
/* Key length for each key, 0: entry is invalid */
2009-12-11 20:23:15 +00:00
u8 Type ; /* Indicate Pairwise/Group when reporting MIC error */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* structure to define WPA Group Key Rekey Interval */
2009-12-11 20:23:16 +00:00
struct PACKED rt_802_11_wpa_rekey {
2009-12-11 20:23:15 +00:00
unsigned long ReKeyMethod ; /* mechanism for rekeying: 0:disable, 1: time-based, 2: packet-based */
unsigned long ReKeyInterval ; /* time-based: seconds, packet-based: kilo-packets */
2009-12-11 20:23:16 +00:00
} ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
/***************************************************************************
* RTUSB I / O related data structure
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2009-12-11 20:23:16 +00:00
struct rt_set_asic_wcid {
2009-12-11 20:23:15 +00:00
unsigned long WCID ; /* mechanism for rekeying: 0:disable, 1: time-based, 2: packet-based */
unsigned long SetTid ; /* time-based: seconds, packet-based: kilo-packets */
unsigned long DeleteTid ; /* time-based: seconds, packet-based: kilo-packets */
u8 Addr [ MAC_ADDR_LEN ] ; /* avoid in interrupt when write key */
2009-12-11 20:23:16 +00:00
} ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
struct rt_set_asic_wcid_attri {
2009-12-11 20:23:15 +00:00
unsigned long WCID ; /* mechanism for rekeying: 0:disable, 1: time-based, 2: packet-based */
unsigned long Cipher ; /* ASIC Cipher definition */
u8 Addr [ ETH_LENGTH_OF_ADDRESS ] ;
2009-12-11 20:23:16 +00:00
} ;
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:16 +00:00
struct rt_add_pairwise_key_entry {
2009-12-11 20:23:15 +00:00
u8 MacAddr [ 6 ] ;
u16 MacTabMatchWCID ; /* ASIC */
2009-12-11 20:23:16 +00:00
struct rt_cipher_key CipherKey ;
} ;
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
2009-12-11 20:23:16 +00:00
struct rt_rogueap_entry {
2009-12-11 20:23:15 +00:00
u8 Addr [ MAC_ADDR_LEN ] ;
u8 ErrorCode [ 2 ] ; /*00 01-Invalid authentication type */
2009-12-11 20:23:15 +00:00
/*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 ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_rogueap_table {
2009-12-11 20:23:15 +00:00
u8 RogueApNr ;
2009-12-11 20:23:16 +00:00
struct rt_rogueap_entry RogueApEntry [ MAX_LEN_OF_BSS_TABLE ] ;
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* */
/* Cisco IAPP format */
/* */
2009-12-11 20:23:16 +00:00
struct rt_cisco_iapp_content {
2009-12-11 20:23:15 +00:00
u16 Length ; /*IAPP Length */
u8 MessageType ; /*IAPP type */
u8 FunctionCode ; /*IAPP function type */
u8 DestinaionMAC [ MAC_ADDR_LEN ] ;
u8 SourceMAC [ MAC_ADDR_LEN ] ;
u16 Tag ; /*Tag(element IE) - Adjacent AP report */
u16 TagLength ; /*Length of element not including 4 byte header */
u8 OUI [ 4 ] ; /*0x00, 0x40, 0x96, 0x00 */
u8 PreviousAP [ MAC_ADDR_LEN ] ; /*MAC Address of access point */
u16 Channel ;
u16 SsidLen ;
u8 Ssid [ MAX_LEN_OF_SSID ] ;
u16 Seconds ; /*Seconds that the client has been disassociated. */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
/*
* Fragment Frame structure
*/
2009-12-11 20:23:16 +00:00
struct rt_fragment_frame {
2009-12-11 20:23:15 +00:00
void * pFragPacket ;
2009-12-11 20:23:15 +00:00
unsigned long RxSize ;
u16 Sequence ;
u16 LastFrag ;
unsigned long Flags ; /* Some extra frame information. bit 0: LLC presented */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* */
/* Packet information for NdisQueryPacket */
/* */
2009-12-11 20:23:16 +00:00
struct rt_packet_info {
2009-12-11 20:23:15 +00:00
u32 PhysicalBufferCount ; /* Physical breaks of buffer descripor chained */
u32 BufferCount ; /* Number of Buffer descriptor chained */
u32 TotalPacketLength ; /* Self explained */
2009-12-11 20:23:15 +00:00
char * pFirstBuffer ; /* Pointer to first buffer descriptor */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* */
/* Arcfour Structure Added by PaulWu */
/* */
2009-12-11 20:23:16 +00:00
struct rt_arcfourcontext {
2009-12-11 20:23:15 +00:00
u32 X ;
u32 Y ;
u8 STATE [ 256 ] ;
2009-12-11 20:23:16 +00:00
} ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
/* */
/* Tkip Key structure which RC4 key & MIC calculation */
/* */
2009-12-11 20:23:16 +00:00
struct rt_tkip_key_info {
2009-12-11 20:23:15 +00:00
u32 nBytesInM ; /* # bytes in M for MICKEY */
unsigned long IV16 ;
unsigned long IV32 ;
unsigned long K0 ; /* for MICKEY Low */
unsigned long K1 ; /* for MICKEY Hig */
unsigned long L ; /* Current state for MICKEY */
unsigned long R ; /* Current state for MICKEY */
unsigned long M ; /* Message accumulator for MICKEY */
u8 RC4KEY [ 16 ] ;
u8 MIC [ 8 ] ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* */
/* Private / Misc data, counters for driver internal use */
/* */
2009-12-11 20:23:16 +00:00
struct rt_private {
2009-12-11 20:23:15 +00:00
u32 SystemResetCnt ; /* System reset counter */
u32 TxRingFullCnt ; /* Tx ring full occurrance number */
u32 PhyRxErrCnt ; /* PHY Rx error count, for debug purpose, might move to global counter */
2009-12-11 20:23:15 +00:00
/* Variables for WEP encryption / decryption in rtmp_wep.c */
2009-12-11 20:23:15 +00:00
u32 FCSCRC32 ;
2009-12-11 20:23:16 +00:00
struct rt_arcfourcontext WEPCONTEXT ;
2009-12-11 20:23:15 +00:00
/* Tkip stuff */
2009-12-11 20:23:16 +00:00
struct rt_tkip_key_info Tx ;
struct rt_tkip_key_info Rx ;
} ;
2008-10-28 21:48:09 +00:00
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) */
2009-12-11 20:23:16 +00:00
struct rt_bbp_r66_tuning {
2009-12-11 20:23:14 +00:00
BOOLEAN bEnable ;
2009-12-11 20:23:15 +00:00
u16 FalseCcaLowerThreshold ; /* default 100 */
u16 FalseCcaUpperThreshold ; /* default 512 */
u8 R66Delta ;
u8 R66CurrentValue ;
2009-12-11 20:23:15 +00:00
BOOLEAN R66LowerUpperSelect ; /*Before LinkUp, Used LowerBound or UpperBound as R66 value. */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* structure to store channel TX power */
2009-12-11 20:23:16 +00:00
struct rt_channel_tx_power {
2009-12-11 20:23:15 +00:00
u16 RemainingTimeForUse ; /*unit: sec */
u8 Channel ;
char Power ;
char Power2 ;
u8 MaxTxPwr ;
u8 DfsReq ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* structure to store 802.11j channel TX power */
2009-12-11 20:23:16 +00:00
struct rt_channel_11j_tx_power {
2009-12-11 20:23:15 +00:00
u8 Channel ;
u8 BW ; /* BW_10 or BW_20 */
char Power ;
char Power2 ;
u16 RemainingTimeForUse ; /*unit: sec */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_soft_rx_ant_diversity {
2009-12-11 20:23:15 +00:00
u8 EvaluatePeriod ; /* 0:not evalute status, 1: evaluate status, 2: switching status */
u8 EvaluateStableCnt ;
u8 Pair1PrimaryRxAnt ; /* 0:Ant-E1, 1:Ant-E2 */
u8 Pair1SecondaryRxAnt ; /* 0:Ant-E1, 1:Ant-E2 */
u8 Pair2PrimaryRxAnt ; /* 0:Ant-E3, 1:Ant-E4 */
u8 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 ; /* */
unsigned long RcvPktNumWhenEvaluate ;
2009-12-11 20:23:14 +00:00
BOOLEAN FirstPktArrivedWhenEvaluate ;
2009-12-11 20:23:16 +00:00
struct rt_ralink_timer RxAntDiversityTimer ;
} ;
2009-09-22 18:44:07 +00:00
/***************************************************************************
* structure for radar detection and channel switch
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2009-12-11 20:23:16 +00:00
struct rt_radar_detect {
2009-12-11 20:23:15 +00:00
/*BOOLEAN IEEE80211H; // 0: disable, 1: enable IEEE802.11h */
2009-12-11 20:23:15 +00:00
u8 CSCount ; /*Channel switch counter */
u8 CSPeriod ; /*Channel switch period (beacon count) */
u8 RDCount ; /*Radar detection counter */
u8 RDMode ; /*Radar Detection mode */
u8 RDDurRegion ; /*Radar detection duration region */
u8 BBPR16 ;
u8 BBPR17 ;
u8 BBPR18 ;
u8 BBPR21 ;
u8 BBPR22 ;
u8 BBPR64 ;
unsigned long InServiceMonitorCount ; /* unit: sec */
u8 DfsSessionTime ;
2009-12-11 20:23:14 +00:00
BOOLEAN bFastDfs ;
2009-12-11 20:23:15 +00:00
u8 ChMovingTime ;
u8 LongPulseRadarTh ;
2009-12-11 20:23:16 +00:00
} ;
2009-09-22 18:44:07 +00:00
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
unsigned long EnablePSinIdle : 1 ; /* Enable radio off when not connect to AP. radio on only when sitesurvey, */
unsigned long EnableNewPS : 1 ; /* Enable new Chip power save fucntion . New method can only be applied in chip version after 2872. and PCIe. */
unsigned long rt30xxPowerMode : 2 ; /* Power Level Mode for rt30xx chip */
unsigned long rt30xxFollowHostASPM : 1 ; /* Card Follows Host's setting for rt30xx chip. */
unsigned long rt30xxForceASPMTest : 1 ; /* Force enable L1 for rt30xx chip. This has higher priority than rt30xxFollowHostASPM Mode. */
unsigned long rsv : 26 ; /* Radio Measurement Enable */
2009-12-11 20:23:14 +00:00
} field ;
2009-12-11 20:23:15 +00:00
unsigned long word ;
2009-12-11 20:23:14 +00:00
} 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
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2009-12-11 20:23:16 +00:00
struct rt_mlme {
2009-12-11 20:23:15 +00:00
/* STA state machines */
2009-12-11 20:23:16 +00:00
struct rt_state_machine CntlMachine ;
struct rt_state_machine AssocMachine ;
struct rt_state_machine AuthMachine ;
struct rt_state_machine AuthRspMachine ;
struct rt_state_machine SyncMachine ;
struct rt_state_machine WpaPskMachine ;
struct rt_state_machine LeapMachine ;
2009-12-11 20:23:14 +00:00
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:16 +00:00
struct rt_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:16 +00:00
struct rt_state_machine WpaMachine ;
2009-12-11 20:23:14 +00:00
STATE_MACHINE_FUNC WpaFunc [ WPA_FUNC_SIZE ] ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
unsigned long ChannelQuality ; /* 0..100, Channel Quality Indication for Roaming */
unsigned long Now32 ; /* latch the value of NdisGetSystemUpTime() */
unsigned long LastSendNULLpsmTime ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN bRunning ;
2009-12-11 20:23:15 +00:00
spinlock_t TaskLock ;
2009-12-11 20:23:16 +00:00
struct rt_mlme_queue Queue ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
u32 ShiftReg ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_ralink_timer PeriodicTimer ;
struct rt_ralink_timer APSDPeriodicTimer ;
struct rt_ralink_timer LinkDownTimer ;
struct rt_ralink_timer LinkUpTimer ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_PCI
2009-12-11 20:23:15 +00:00
u8 bPsPollTimerRunning ;
2009-12-11 20:23:16 +00:00
struct rt_ralink_timer PsPollTimer ;
struct rt_ralink_timer RadioOnOffTimer ;
2009-12-11 20:23:15 +00:00
# endif /* RTMP_MAC_PCI // */
2009-12-11 20:23:15 +00:00
unsigned long PeriodicRound ;
unsigned long OneSecPeriodicRound ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
u8 RealRxPath ;
2009-12-11 20:23:14 +00:00
BOOLEAN bLowThroughput ;
BOOLEAN bEnableAutoAntennaCheck ;
2009-12-11 20:23:16 +00:00
struct rt_ralink_timer RxAntEvalTimer ;
2008-10-28 21:48:09 +00:00
2009-09-22 18:44:07 +00:00
# ifdef RT30xx
2009-12-11 20:23:15 +00:00
u8 CaliBW40RfR24 ;
u8 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:16 +00:00
struct rt_ralink_timer AutoWakeupTimer ;
2009-12-11 20:23:14 +00:00
BOOLEAN AutoWakeupTimerRunning ;
2009-12-11 20:23:15 +00:00
# endif /* RTMP_MAC_USB // */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
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 ;
2009-12-11 20:23:15 +00:00
void * pPacket ; /* coverted to 802.3 frame */
2009-12-11 20:23:14 +00:00
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 {
2009-12-11 20:23:15 +00:00
void * mem ;
2009-12-11 20:23:15 +00:00
spinlock_t lock ;
2009-12-11 20:23:14 +00:00
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:16 +00:00
struct rt_ba_ori_entry {
2009-12-11 20:23:15 +00:00
u8 Wcid ;
u8 TID ;
u8 BAWinSize ;
u8 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:15 +00:00
u16 Sequence ;
u16 TimeOutValue ;
2009-12-11 20:23:14 +00:00
ORI_BLOCKACK_STATUS ORI_BA_Status ;
2009-12-11 20:23:16 +00:00
struct rt_ralink_timer ORIBATimer ;
2009-12-11 20:23:15 +00:00
void * pAdapter ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_ba_rec_entry {
2009-12-11 20:23:15 +00:00
u8 Wcid ;
u8 TID ;
u8 BAWinSize ; /* 7.3.1.14. each buffer is capable of holding a max AMSDU or MSDU. */
/*u8 NumOfRxPkt; */
/*u8 Curindidx; // the head in the RX reordering buffer */
u16 LastIndSeq ;
/* u16 LastIndSeqAtTimer; */
u16 TimeOutValue ;
2009-12-11 20:23:16 +00:00
struct rt_ralink_timer RECBATimer ;
2009-12-11 20:23:15 +00:00
unsigned long LastIndSeqAtTimer ;
unsigned long nDropPacket ;
unsigned long rcvSeq ;
2009-12-11 20:23:14 +00:00
REC_BLOCKACK_STATUS REC_BA_Status ;
2009-12-11 20:23:15 +00:00
/* u8 RxBufIdxUsed; */
2009-12-11 20:23:15 +00:00
/* corresponding virtual address for RX reordering packet storage. */
/*RTMP_REORDERDMABUF MAP_RXBuf[MAX_RX_REORDERBUF]; */
2009-12-11 20:23:15 +00:00
spinlock_t RxReRingLock ; /* Rx Ring spinlock */
2009-12-11 20:23:15 +00:00
/* struct _BA_REC_ENTRY *pNext; */
2009-12-11 20:23:15 +00:00
void * pAdapter ;
2009-12-11 20:23:14 +00:00
struct reordering_list list ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_ba_table {
2009-12-11 20:23:15 +00:00
unsigned long numAsRecipient ; /* I am recipient of numAsRecipient clients. These client are in the BARecEntry[] */
unsigned long numAsOriginator ; /* I am originator of numAsOriginator clients. These clients are in the BAOriEntry[] */
unsigned long numDoneOriginator ; /* count Done Originator sessions */
2009-12-11 20:23:16 +00:00
struct rt_ba_ori_entry BAOriEntry [ MAX_LEN_OF_BA_ORI_TABLE ] ;
struct rt_ba_rec_entry BARecEntry [ MAX_LEN_OF_BA_REC_TABLE ] ;
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/*For QureyBATableOID use; */
2009-12-11 20:23:16 +00:00
struct PACKED rt_oid_ba_rec_entry {
2009-12-11 20:23:15 +00:00
u8 MACAddr [ MAC_ADDR_LEN ] ;
u8 BaBitmap ; /* if (BaBitmap&(1<<TID)), this session with{MACAddr, TID}exists, so read BufSize[TID] for BufferSize */
u8 rsv ;
u8 BufSize [ 8 ] ;
2009-12-11 20:23:14 +00:00
REC_BLOCKACK_STATUS REC_BA_Status [ 8 ] ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/*For QureyBATableOID use; */
2009-12-11 20:23:16 +00:00
struct PACKED rt_oid_ba_ori_entry {
2009-12-11 20:23:15 +00:00
u8 MACAddr [ MAC_ADDR_LEN ] ;
u8 BaBitmap ; /* if (BaBitmap&(1<<TID)), this session with{MACAddr, TID}exists, so read BufSize[TID] for BufferSize, read ORI_BA_Status[TID] for status */
u8 rsv ;
u8 BufSize [ 8 ] ;
2009-12-11 20:23:14 +00:00
ORI_BLOCKACK_STATUS ORI_BA_Status [ 8 ] ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_queryba_table {
struct rt_oid_ba_ori_entry BAOriEntry [ 32 ] ;
struct rt_oid_ba_rec_entry BARecEntry [ 32 ] ;
2009-12-11 20:23:15 +00:00
u8 OriNum ; /* Number of below BAOriEntry */
u8 RecNum ; /* Number of below BARecEntry */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
typedef union _BACAP_STRUC {
struct {
2009-12-11 20:23:15 +00:00
u32 RxBAWinLimit : 8 ;
u32 TxBAWinLimit : 8 ;
u32 AutoBA : 1 ; /* automatically BA */
u32 Policy : 2 ; /* 0: DELAY_BA 1:IMMED_BA (//BA Policy subfiled value in ADDBA frame) 2:BA-not use */
u32 MpduDensity : 3 ;
u32 AmsduEnable : 1 ; /*Enable AMSDU transmisstion */
u32 AmsduSize : 1 ; /* 0:3839, 1:7935 bytes. u32 MSDUSizeToBytes[] = { 3839, 7935}; */
u32 MMPSmode : 2 ; /* MIMO power save more, 0:static, 1:dynamic, 2:rsv, 3:mimo enable */
u32 bHtAdhoc : 1 ; /* adhoc can use ht rate. */
u32 b2040CoexistScanSup : 1 ; /*As Sta, support do 2040 coexistence scan for AP. As Ap, support monitor trigger event to check if can use BW 40MHz. */
2010-04-20 00:06:33 +00:00
u32 : 4 ;
2009-12-11 20:23:14 +00:00
} field ;
2009-12-11 20:23:15 +00:00
u32 word ;
2008-10-28 21:48:09 +00:00
} BACAP_STRUC , * PBACAP_STRUC ;
2009-12-11 20:23:16 +00:00
struct rt_oid_add_ba_entry {
2009-12-11 20:23:14 +00:00
BOOLEAN IsRecipient ;
2009-12-11 20:23:15 +00:00
u8 MACAddr [ MAC_ADDR_LEN ] ;
u8 TID ;
u8 nMSDU ;
u16 TimeOut ;
2009-12-11 20:23:15 +00:00
BOOLEAN bAllTid ; /* If True, delete all TID for BA sessions with this MACaddr. */
2009-12-11 20:23:16 +00:00
} ;
2009-09-22 18:44:07 +00:00
# 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:16 +00:00
struct rt_iot {
2009-12-11 20:23:15 +00:00
u8 Threshold [ 2 ] ;
u8 ReorderTimeOutNum [ MAX_LEN_OF_BA_REC_TABLE ] ; /* compare with threshold[0] */
u8 RefreshNum [ MAX_LEN_OF_BA_REC_TABLE ] ; /* compare with threshold[1] */
unsigned long OneSecInWindowCount ;
unsigned long OneSecFrameDuplicateCount ;
unsigned long OneSecOutWindowCount ;
u8 DelOriAct ;
u8 DelRecAct ;
u8 RTSShortProt ;
u8 RTSLongProt ;
2009-12-11 20:23:14 +00:00
BOOLEAN bRTSLongProtOn ;
BOOLEAN bLastAtheros ;
BOOLEAN bCurrentAtheros ;
BOOLEAN bNowAtherosBurstOn ;
BOOLEAN bNextDisableRxBA ;
BOOLEAN bToggle ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
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
/*u32 PhyMode:4; */
/*u32 MCS:7; // MCS */
u32 rsv0 : 10 ;
u32 TxBF : 1 ;
u32 BW : 1 ; /*channel bandwidth 20MHz or 40 MHz */
u32 ShortGI : 1 ;
u32 STBC : 1 ; /*SPACE */
u32 TRANSNO : 2 ;
u32 HTMODE : 1 ;
u32 EXTCHA : 2 ;
u32 rsv : 13 ;
2009-12-11 20:23:14 +00:00
} field ;
2009-12-11 20:23:15 +00:00
u32 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
u16 MCS : 7 ; /* MCS */
u16 PhyMode : 4 ;
u16 FixedTxMode : 2 ; /* If MCS isn't AUTO, fix rate in CCK, OFDM or HT mode. */
u16 rsv : 3 ;
2009-12-11 20:23:14 +00:00
} field ;
2009-12-11 20:23:15 +00:00
u16 word ;
2009-12-11 20:23:14 +00:00
} 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:16 +00:00
struct rt_beacon_sync {
2009-12-11 20:23:15 +00:00
u8 BeaconBuf [ HW_BEACON_MAX_COUNT ] [ HW_BEACON_OFFSET ] ;
u8 BeaconTxWI [ HW_BEACON_MAX_COUNT ] [ TXWI_SIZE ] ;
unsigned long TimIELocationInBeacon [ HW_BEACON_MAX_COUNT ] ;
unsigned long CapabilityInfoLocationInBeacon [ HW_BEACON_MAX_COUNT ] ;
2009-12-11 20:23:15 +00:00
BOOLEAN EnableBeacon ; /* trigger to enable beacon transmission. */
2009-12-11 20:23:15 +00:00
u8 BeaconBitMap ; /* NOTE: If the MAX_MBSSID_NUM is larger than 8, this parameter need to change. */
u8 DtimBitOn ; /* NOTE: If the MAX_MBSSID_NUM is larger than 8, this parameter need to change. */
2009-12-11 20:23:16 +00:00
} ;
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) \
2009-12-11 20:23:15 +00:00
{ u8 tim_offset = wcid > > 3 ; \
u8 bit_offset = wcid & 0x7 ; \
2008-10-28 21:48:09 +00:00
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) \
2009-12-11 20:23:15 +00:00
{ u8 tim_offset = wcid > > 3 ; \
u8 bit_offset = wcid & 0x7 ; \
2008-10-28 21:48:09 +00:00
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 */
2009-12-11 20:23:16 +00:00
struct rt_common_config {
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:14 +00:00
BOOLEAN bCountryFlag ;
2009-12-11 20:23:15 +00:00
u8 CountryCode [ 3 ] ;
u8 Geography ;
u8 CountryRegion ; /* Enum of country region, 0:FCC, 1:IC, 2:ETSI, 3:SPAIN, 4:France, 5:MKK, 6:MKK1, 7:Israel */
u8 CountryRegionForABand ; /* Enum of country region for A band */
u8 PhyMode ; /* PHY_11A, PHY_11B, PHY_11BG_MIXED, PHY_ABG_MIXED */
u16 Dsifs ; /* in units of usec */
unsigned long PacketFilter ; /* Packet filter for receiving */
u8 RegulatoryClass ;
char Ssid [ MAX_LEN_OF_SSID ] ; /* NOT NULL-terminated */
u8 SsidLen ; /* the actual ssid length in used */
u8 LastSsidLen ; /* the actual ssid length in used */
char LastSsid [ MAX_LEN_OF_SSID ] ; /* NOT NULL-terminated */
u8 LastBssid [ MAC_ADDR_LEN ] ;
u8 Bssid [ MAC_ADDR_LEN ] ;
u16 BeaconPeriod ;
u8 Channel ;
u8 CentralChannel ; /* Central Channel when using 40MHz is indicating. not real channel. */
u8 SupRate [ MAX_LEN_OF_SUPPORTED_RATES ] ;
u8 SupRateLen ;
u8 ExtRate [ MAX_LEN_OF_SUPPORTED_RATES ] ;
u8 ExtRateLen ;
u8 DesireRate [ MAX_LEN_OF_SUPPORTED_RATES ] ; /* OID_802_11_DESIRED_RATES */
u8 MaxDesiredRate ;
u8 ExpectedACKRate [ MAX_LEN_OF_SUPPORTED_RATES ] ;
unsigned long 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:15 +00:00
unsigned long TriggerTimerCount ;
u8 MaxSPLength ;
u8 BBPCurrentBW ; /* BW_10, BW_20, BW_40 */
2009-12-11 20:23:15 +00:00
/* 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. */
2009-12-11 20:23:15 +00:00
/*u8 FixedTxMode; // Fixed Tx Mode (CCK, OFDM), for HT fixed tx mode (GF, MIX) , refer to RegTransmitSetting.field.HTMode */
u8 TxRate ; /* Same value to fill in TXD. TxRate is 6-bit */
u8 MaxTxRate ; /* RATE_1, RATE_2, RATE_5_5, RATE_11 */
u8 TxRateIndex ; /* Tx rate index in RateSwitchTable */
u8 TxRateTableSize ; /* Valid Tx rate table size in RateSwitchTable */
2009-12-11 20:23:15 +00:00
/*BOOLEAN bAutoTxRateSwitch; */
2009-12-11 20:23:15 +00:00
u8 MinTxRate ; /* RATE_1, RATE_2, RATE_5_5, RATE_11 */
u8 RtsRate ; /* RATE_xxx */
2009-12-11 20:23:15 +00:00
HTTRANSMIT_SETTING MlmeTransmit ; /* MGMT frame PHY rate setting when operatin at Ht rate. */
2009-12-11 20:23:15 +00:00
u8 MlmeRate ; /* RATE_xxx, used to send MLME frames */
u8 BasicMlmeRate ; /* Default Rate for sending MLME frames */
2009-12-11 20:23:15 +00:00
2009-12-11 20:23:15 +00:00
u16 RtsThreshold ; /* in unit of BYTE */
u16 FragmentThreshold ; /* in unit of BYTE */
2009-12-11 20:23:15 +00:00
2009-12-11 20:23:15 +00:00
u8 TxPower ; /* in unit of mW */
unsigned long TxPowerPercentage ; /* 0~100 % */
unsigned long TxPowerDefault ; /* keep for TxPowerPercentage */
u8 PwrConstraint ;
2009-12-11 20:23:14 +00:00
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:16 +00:00
struct rt_iot IOTestParm ; /* 802.11n InterOpbility Test Parameter; */
2009-12-11 20:23:15 +00:00
unsigned long TxPreamble ; /* Rt802_11PreambleLong, Rt802_11PreambleShort, Rt802_11PreambleAuto */
2009-12-11 20:23:15 +00:00
BOOLEAN bUseZeroToDisableFragment ; /* Microsoft use 0 as disable */
2009-12-11 20:23:15 +00:00
unsigned long UseBGProtection ; /* 0: auto, 1: always use, 2: always not use */
2009-12-11 20:23:15 +00:00
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. */
2009-12-11 20:23:15 +00:00
unsigned long 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 */
2009-12-11 20:23:16 +00:00
struct rt_qos_capability_parm APQosCapability ; /* QOS capability of the current associated AP */
struct rt_edca_parm APEdcaParm ; /* EDCA parameters of the current associated AP */
struct rt_qbss_load_parm APQbssLoad ; /* QBSS load of the current associated AP */
2009-12-11 20:23:15 +00:00
u8 AckPolicy [ 4 ] ; /* ACK policy of the specified AC. see ACK_xxx */
2009-12-11 20:23:15 +00:00
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:15 +00:00
unsigned long 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:16 +00:00
struct rt_radar_detect RadarDetect ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* HT */
2009-12-11 20:23:15 +00:00
u8 BASize ; /* USer desired BAWindowSize. Should not exceed our max capability */
2009-12-11 20:23:16 +00:00
/*struct rt_ht_capability SupportedHtPhy; */
struct rt_ht_capability DesiredHtPhy ;
struct rt_ht_capability_ie HtCapability ;
struct rt_add_ht_info_ie AddHTInfo ; /* Useful as AP. */
2009-12-11 20:23:15 +00:00
/*This IE is used with channel switch announcement element when changing to a new 40MHz. */
/*This IE is included in channel switch ammouncement frames 7.4.1.5, beacons, probe Rsp. */
2009-12-11 20:23:16 +00:00
struct rt_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 ;
2009-12-11 20:23:15 +00:00
unsigned long LastRcvBSSWidthTriggerEventsTime ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
u8 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:15 +00:00
u8 TxStream ;
u8 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 */
2009-12-11 20:23:15 +00:00
u8 NumOfBulkInIRP ; /* if bMultipleIRP == TRUE, NumOfBulkInIRP will be 4 otherwise be 1 */
2009-12-11 20:23:16 +00:00
struct rt_ht_capability SupportedHtPhy ;
2009-12-11 20:23:15 +00:00
unsigned long MaxPktOneTxBulk ;
u8 TxBulkFactor ;
u8 RxBulkFactor ;
2009-12-11 20:23:14 +00:00
BOOLEAN IsUpdateBeacon ;
2009-12-11 20:23:16 +00:00
struct rt_beacon_sync * pBeaconSync ;
struct rt_ralink_timer BeaconUpdateTimer ;
2009-12-11 20:23:15 +00:00
u32 BeaconAdjust ;
u32 BeaconFactor ;
u32 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:15 +00:00
spinlock_t MeasureReqTabLock ;
2009-12-11 20:23:16 +00:00
struct rt_measure_req_tab * pMeasureReqTab ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
spinlock_t TpcReqTabLock ;
2009-12-11 20:23:16 +00:00
struct rt_tpc_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
2010-04-20 00:06:33 +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:15 +00:00
u8 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 */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
/* Modified by Wu Xi-Kun 4/21/2006 */
2009-12-11 20:23:15 +00:00
/* STA configuration and status */
2009-12-11 20:23:16 +00:00
struct rt_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 */
2009-12-11 20:23:15 +00:00
u8 BssType ; /* BSS_INFRA or BSS_ADHOC */
u16 AtimWin ; /* used when starting a new IBSS */
2009-12-11 20:23:15 +00:00
/* GROUP 2 - */
/* User configuration loaded from Registry, E2PROM or OID_xxx. These settings describe */
/* the user intended configuration, and should be always applied to the final */
/* settings in ACTIVE BSS without compromising with the BSS holder. */
/* Once initialized, user configuration can only be changed via OID_xxx */
2009-12-11 20:23:15 +00:00
u8 RssiTrigger ;
u8 RssiTriggerMode ; /* RSSI_TRIGGERED_UPON_BELOW_THRESHOLD or RSSI_TRIGGERED_UPON_EXCCEED_THRESHOLD */
u16 DefaultListenCount ; /* default listen count; */
unsigned long WindowsPowerMode ; /* Power mode for AC power */
unsigned long WindowsBatteryPowerMode ; /* Power mode for battery if exists */
2009-12-11 20:23:15 +00:00
BOOLEAN bWindowsACCAMEnable ; /* Enable CAM power mode when AC on */
BOOLEAN bAutoReconnect ; /* Set to TRUE when setting OID_802_11_SSID with no matching BSSID */
2009-12-11 20:23:15 +00:00
unsigned long WindowsPowerProfile ; /* Windows power profile, for NDIS5.1 PnP */
2009-12-11 20:23:15 +00:00
/* MIB:ieee802dot11.dot11smt(1).dot11StationConfigTable(1) */
2009-12-11 20:23:15 +00:00
u16 Psm ; /* power management mode (PWR_ACTIVE|PWR_SAVE) */
u16 DisassocReason ;
u8 DisassocSta [ MAC_ADDR_LEN ] ;
u16 DeauthReason ;
u8 DeauthSta [ MAC_ADDR_LEN ] ;
u16 AuthFailReason ;
u8 AuthFailSta [ MAC_ADDR_LEN ] ;
2009-12-11 20:23:14 +00:00
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:15 +00:00
u16 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
u8 WpaPassPhrase [ 64 ] ; /* WPA PSK pass phrase */
u32 WpaPassPhraseLen ; /* the length of WPA PSK pass phrase */
u8 PMK [ 32 ] ; /* WPA PSK mode PMK */
u8 PTK [ 64 ] ; /* WPA PSK mode PTK */
u8 GTK [ 32 ] ; /* GTK from authenticator */
2009-12-11 20:23:16 +00:00
struct rt_bssid_info SavedPMK [ PMKID_NO ] ;
2009-12-11 20:23:15 +00:00
u32 SavedPMKNum ; /* Saved PMKID number */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
u8 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:15 +00:00
u8 PortSecured ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* For WPA countermeasures */
2009-12-11 20:23:15 +00:00
unsigned long LastMicErrorTime ; /* record last MIC error time */
unsigned long MicErrCnt ; /* Should be 0, 1, 2, then reset to zero (after disassoiciation). */
2009-12-11 20:23:15 +00:00
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:15 +00:00
u8 ReplayCounter [ 8 ] ;
u8 ANonce [ 32 ] ; /* ANonce for WPA-PSK from aurhenticator */
u8 SNonce [ 32 ] ; /* SNonce for WPA-PSK */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
u8 LastSNR0 ; /* last received BEACON's SNR */
u8 LastSNR1 ; /* last received BEACON's SNR for 2nd antenna */
2009-12-11 20:23:16 +00:00
struct rt_rssi_sample RssiSample ;
2009-12-11 20:23:15 +00:00
unsigned long NumOfAvgRssiSample ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
unsigned long LastBeaconRxTime ; /* OS's timestamp of the last BEACON RX time */
unsigned long Last11bBeaconRxTime ; /* OS's timestamp of the last 11B BEACON RX time */
unsigned long Last11gBeaconRxTime ; /* OS's timestamp of the last 11G BEACON RX time */
unsigned long Last20NBeaconRxTime ; /* OS's timestamp of the last 20MHz N BEACON RX time */
2009-12-11 20:23:15 +00:00
2009-12-11 20:23:15 +00:00
unsigned long LastScanTime ; /* Record last scan time for issue BSSID_SCAN_LIST */
unsigned long ScanCnt ; /* Scan counts since most recent SSID, BSSID, SCAN OID request */
2009-12-11 20:23:15 +00:00
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:16 +00:00
struct rt_ndis_802_11_association_information AssocInfo ;
2009-12-11 20:23:15 +00:00
u16 ReqVarIELen ; /* Length of next VIE include EID & Length */
u8 ReqVarIEs [ MAX_VIE_LEN ] ; /* The content saved here should be little-endian format. */
u16 ResVarIELen ; /* Length of next VIE include EID & Length */
u8 ResVarIEs [ MAX_VIE_LEN ] ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
u8 RSNIE_Len ;
u8 RSN_IE [ MAX_LEN_OF_RSNIE ] ; /* The content saved here should be little-endian format. */
2009-12-11 20:23:15 +00:00
2009-12-11 20:23:15 +00:00
unsigned long CLBusyBytes ; /* Save the total bytes received durning channel load scan time */
u16 RPIDensity [ 8 ] ; /* Array for RPI density collection */
2009-12-11 20:23:15 +00:00
2009-12-11 20:23:15 +00:00
u8 RMReqCnt ; /* Number of measurement request saved. */
u8 CurrentRMReqIdx ; /* Number of measurement request saved. */
2009-12-11 20:23:15 +00:00
BOOLEAN ParallelReq ; /* Parallel measurement, only one request performed, */
/* It must be the same channel with maximum duration */
2009-12-11 20:23:15 +00:00
u16 ParallelDuration ; /* Maximum duration for parallel measurement */
u8 ParallelChannel ; /* Only one channel with parallel measurement */
u16 IAPPToken ; /* IAPP dialog token */
2009-12-11 20:23:15 +00:00
/* Hack for channel load and noise histogram parameters */
2009-12-11 20:23:15 +00:00
u8 NHFactor ; /* Parameter for Noise histogram */
u8 CLFactor ; /* Parameter for channel load */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_ralink_timer StaQuickResponeForRateUpTimer ;
2009-12-11 20:23:14 +00:00
BOOLEAN StaQuickResponeForRateUpTimerRunning ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
u8 DtimCount ; /* 0.. DtimPeriod-1 */
u8 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:16 +00:00
struct rt_ralink_timer 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 */
2009-12-11 20:23:15 +00:00
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:16 +00:00
struct rt_cipher_key DesireSharedKey [ 4 ] ; /* Record user desired WEP keys */
2009-12-11 20:23:15 +00:00
u8 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:15 +00:00
u8 WpaSupplicantUP ;
u8 WpaSupplicantScanCount ;
2009-12-11 20:23:14 +00:00
BOOLEAN bRSN_IE_FromWpaSupplicant ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
char dev_name [ 16 ] ;
u16 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 ;
2009-12-11 20:23:16 +00:00
struct rt_ht_phy_info DesiredHtPhyInfo ;
2009-12-11 20:23:14 +00:00
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:15 +00:00
u8 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
unsigned long BeaconLostTime ; /* seconds */
2009-12-11 20:23:15 +00:00
BOOLEAN bForceTxBurst ; /* 1: force enble TX PACKET BURST, 0: disable */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
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. */
2009-12-11 20:23:16 +00:00
struct rt_sta_active_config {
2009-12-11 20:23:15 +00:00
u16 Aid ;
u16 AtimWin ; /* in kusec; IBSS parameter set element */
u16 CapabilityInfo ;
u16 CfpMaxDuration ;
u16 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:15 +00:00
u8 SupRate [ MAX_LEN_OF_SUPPORTED_RATES ] ;
u8 ExtRate [ MAX_LEN_OF_SUPPORTED_RATES ] ;
u8 SupRateLen ;
u8 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:16 +00:00
struct rt_ht_phy_info SupportedPhyInfo ;
struct rt_ht_capability SupportedHtPhy ;
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_mac_table_entry ;
struct rt_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
u8 EnqueueEapolStartTimerRunning ; /* Enqueue EAPoL-Start for triggering EAP SM */
2009-12-11 20:23:15 +00:00
/*jan for wpa */
/* record which entry revoke MIC Failure , if it leaves the BSS itself, AP won't update aMICFailTime MIB */
2009-12-11 20:23:15 +00:00
u8 CMTimerRunning ;
u8 apidx ; /* MBSS number */
u8 RSNIE_Len ;
u8 RSN_IE [ MAX_LEN_OF_RSNIE ] ;
u8 ANonce [ LEN_KEY_DESC_NONCE ] ;
u8 SNonce [ LEN_KEY_DESC_NONCE ] ;
u8 R_Counter [ LEN_KEY_DESC_REPLAY ] ;
u8 PTK [ 64 ] ;
u8 ReTryCounter ;
2009-12-11 20:23:16 +00:00
struct rt_ralink_timer RetryTimer ;
struct rt_ralink_timer EnqueueStartForPSKTimer ; /* A timer which enqueue EAPoL-Start for triggering PSK SM */
2009-12-11 20:23:15 +00:00
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 ;
2009-12-11 20:23:15 +00:00
u16 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:16 +00:00
struct rt_cipher_key PairwiseKey ;
2009-12-11 20:23:15 +00:00
void * pAd ;
int PMKID_CacheIdx ;
u8 PMKID [ LEN_PMKID ] ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
u8 Addr [ MAC_ADDR_LEN ] ;
u8 PsMode ;
2009-12-11 20:23:14 +00:00
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:15 +00:00
u16 Aid ;
u16 CapabilityInfo ;
u8 LastRssi ;
unsigned long NoDataIdleCount ;
u16 StationKeepAliveCount ; /* unit: second */
unsigned long PsQIdleCount ;
2009-12-11 20:23:16 +00:00
struct rt_queue_header PsQueue ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
u32 StaConnectTime ; /* the live time of this station since associated with AP */
2009-12-11 20:23:14 +00:00
BOOLEAN bSendBAR ;
2009-12-11 20:23:15 +00:00
u16 NoBADataCountDown ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
u32 CachedBuf [ 16 ] ; /* u32 (4 bytes) for alignment */
u32 TxBFCount ; /* 3*3 */
u32 FIFOCount ;
u32 DebugFIFOCount ;
u32 DebugTxCount ;
2009-12-11 20:23:14 +00:00
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:15 +00:00
u32 MatchWDSTabIdx ;
u8 MaxSupportedRate ;
u8 CurrTxRate ;
u8 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:15 +00:00
u16 TxQuality [ MAX_STEP_OF_TX_RATE_SWITCH ] ;
/* u16 OneSecTxOkCount; */
u32 OneSecTxNoRetryOkCount ;
u32 OneSecTxRetryOkCount ;
u32 OneSecTxFailCount ;
u32 ContinueTxFailCnt ;
u32 CurrTxRateStableTime ; /* # of second in current TX rate */
u8 TxRateUpPenalty ; /* extra # of second penalty due to last unstable condition */
2009-12-11 20:23:15 +00:00
/*==================================================== */
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
u8 LastSecTxRateChangeAction ; /* 0: no change, 1:rate UP, 2:rate down */
char LastTimeTxRateChangeAction ; /*Keep last time value of LastSecTxRateChangeAction */
unsigned long LastTxOkCount ;
u8 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:15 +00:00
unsigned long 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 */
2009-12-11 20:23:15 +00:00
u16 RXBAbitmap ; /* fill to on-chip RXWI_BA_BITMASK in 8.1.3RX attribute entry format */
u16 TXBAbitmap ; /* This bitmap as originator, only keep in software used to mark AMPDU bit in TXWI */
u16 TXAutoBAbitmap ;
u16 BADeclineBitmap ;
u16 BARecWcidArray [ NUM_OF_TID ] ; /* The mapping wcid of recipient session. if RXBAbitmap bit is masked */
u16 BAOriWcidArray [ NUM_OF_TID ] ; /* The mapping wcid of originator session. if TXBAbitmap bit is masked */
u16 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:15 +00:00
u8 MpduDensity ;
u8 MaxRAmpduFactor ;
u8 AMsduSize ;
u8 MmpsMode ; /* MIMO power save more. */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_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:15 +00:00
u8 RateLen ;
2009-12-11 20:23:16 +00:00
struct rt_mac_table_entry * pNext ;
2009-12-11 20:23:15 +00:00
u16 TxSeq [ NUM_OF_TID ] ;
u16 NonQosDataSeq ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_rssi_sample RssiSample ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
u32 TXMCSExpected [ 16 ] ;
u32 TXMCSSuccessful [ 16 ] ;
u32 TXMCSFailed [ 16 ] ;
u32 TXMCSAutoFallBack [ 16 ] [ 16 ] ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
unsigned long LastBeaconRxTime ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
unsigned long AssocDeadLine ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_mac_table {
2009-12-11 20:23:15 +00:00
u16 Size ;
2009-12-11 20:23:16 +00:00
struct rt_mac_table_entry * Hash [ HASH_TABLE_SIZE ] ;
struct rt_mac_table_entry Content [ MAX_LEN_OF_MAC_TABLE ] ;
struct rt_queue_header McastPsQueue ;
2009-12-11 20:23:15 +00:00
unsigned long PsQIdleCount ;
2009-12-11 20:23:14 +00:00
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--> */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
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:16 +00:00
struct rt_rtmp_dev_info {
2009-12-11 20:23:15 +00:00
u8 chipName [ 16 ] ;
2009-12-11 20:23:14 +00:00
RTMP_INF_TYPE infType ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_rtmp_chip_op {
2009-09-22 18:44:07 +00:00
/* Calibration access related callback functions */
2009-12-11 20:23:16 +00:00
int ( * eeinit ) ( struct rt_rtmp_adapter * pAd ) ; /* int (*eeinit)(struct rt_rtmp_adapter *pAd); */
int ( * eeread ) ( struct rt_rtmp_adapter * pAd , u16 offset , u16 * pValue ) ; /* int (*eeread)(struct rt_rtmp_adapter *pAd, int offset, u16 *pValue); */
2009-09-22 18:44:07 +00:00
/* MCU related callback functions */
2009-12-11 20:23:16 +00:00
int ( * loadFirmware ) ( struct rt_rtmp_adapter * pAd ) ; /* int (*loadFirmware)(struct rt_rtmp_adapter *pAd); */
int ( * eraseFirmware ) ( struct rt_rtmp_adapter * pAd ) ; /* int (*eraseFirmware)(struct rt_rtmp_adapter *pAd); */
int ( * sendCommandToMcu ) ( struct rt_rtmp_adapter * pAd , u8 cmd , u8 token , u8 arg0 , u8 arg1 ) ; ; /* int (*sendCommandToMcu)(struct rt_rtmp_adapter *pAd, u8 cmd, u8 token, u8 arg0, u8 arg1); */
2009-09-22 18:44:07 +00:00
/* RF access related callback functions */
2009-12-11 20:23:16 +00:00
struct rt_reg_pair * pRFRegTable ;
void ( * AsicRfInit ) ( struct rt_rtmp_adapter * pAd ) ;
void ( * AsicRfTurnOn ) ( struct rt_rtmp_adapter * pAd ) ;
void ( * AsicRfTurnOff ) ( struct rt_rtmp_adapter * pAd ) ;
void ( * AsicReverseRfFromSleepMode ) ( struct rt_rtmp_adapter * pAd ) ;
void ( * AsicHaltAction ) ( struct rt_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:16 +00:00
struct rt_rtmp_adapter {
2009-12-11 20:23:15 +00:00
void * OS_Cookie ; /* save specific structure relative to OS */
2009-12-11 20:23:15 +00:00
struct net_device * net_dev ;
2009-12-11 20:23:15 +00:00
unsigned long VirtualIfCnt ;
2010-01-18 03:25:56 +00:00
const struct firmware * firmware ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_rtmp_chip_op chipOps ;
2009-12-11 20:23:15 +00:00
u16 ThisTbttNumToNextWakeUp ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_PCI
/*****************************************************************************************/
/* PCI related parameters */
/*****************************************************************************************/
2009-12-11 20:23:15 +00:00
u8 * CSRBaseAddress ; /* PCI MMIO Base Address, all access will use */
2009-12-11 20:23:14 +00:00
unsigned int irq_num ;
2009-12-11 20:23:15 +00:00
u16 LnkCtrlBitMask ;
u16 RLnkCtrlConfiguration ;
u16 RLnkCtrlOffset ;
u16 HostLnkCtrlConfiguration ;
u16 HostLnkCtrlOffset ;
u16 PCIePowerSaveLevel ;
unsigned long Rt3xxHostLinkCtrl ; /* USed for 3090F chip */
unsigned long Rt3xxRalinkLinkCtrl ; /* USed for 3090F chip */
u16 DeviceID ; /* Read from PCI config */
unsigned long 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. */
2009-12-11 20:23:15 +00:00
unsigned long CheckDmaBusyCount ; /* Check Interrupt Status Register Count. */
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
u32 int_enable_reg ;
u32 int_disable_mask ;
u32 int_pending ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
struct rt_rtmp_dmabuf TxBufSpace [ NUM_OF_TX_RING ] ; /* Shared memory of all 1st pre-allocated TxBuf associated with each TXD */
struct rt_rtmp_dmabuf RxDescRing ; /* Shared memory for RX descriptors */
struct rt_rtmp_dmabuf TxDescRing [ NUM_OF_TX_RING ] ; /* Shared memory for Tx descriptors */
struct rt_rtmp_tx_ring TxRing [ NUM_OF_TX_RING ] ; /* AC0~4 + HCCA */
2009-12-11 20:23:15 +00:00
# endif /* RTMP_MAC_PCI // */
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
spinlock_t irq_lock ;
2009-12-11 20:23:15 +00:00
u8 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
u32 BulkInEpAddr ; /* bulk-in endpoint address */
u32 BulkOutEpAddr [ 6 ] ; /* bulk-out endpoint address */
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:15 +00:00
u32 NumberOfPipes ;
u16 BulkOutMaxPacketSize ;
u16 BulkInMaxPacketSize ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:15 +00:00
/*======Control Flags */
2009-12-11 20:23:15 +00:00
long PendingIoCount ;
unsigned long 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:16 +00:00
struct rt_cmdq CmdQ ;
2009-12-11 20:23:15 +00:00
spinlock_t CmdQLock ; /* CmdQLock spinlock */
2009-12-11 20:23:16 +00:00
struct rt_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:15 +00:00
struct semaphore UsbVendorReq_semaphore ;
2009-12-11 20:23:15 +00:00
void * UsbVendorReqBuf ;
2009-12-11 20:23:14 +00:00
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:16 +00:00
/*struct rt_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:16 +00:00
struct rt_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:16 +00:00
struct rt_rtmp_timer_task_queue TimerQ ;
2009-12-11 20:23:15 +00:00
spinlock_t TimerQLock ;
2009-12-11 20:23:16 +00:00
struct rt_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:15 +00:00
spinlock_t 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 */
2009-12-11 20:23:15 +00:00
spinlock_t BulkOutLock [ 6 ] ; /* BulkOut spinlock for 4 ACs */
spinlock_t MLMEBulkOutLock ; /* MLME BulkOut lock */
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
struct rt_ht_tx_context TxContext [ NUM_OF_TX_RING ] ;
2009-12-11 20:23:15 +00:00
spinlock_t 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 */
2009-12-11 20:23:15 +00:00
u8 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:15 +00:00
u8 bulkResetPipeid ;
2009-12-11 20:23:14 +00:00
BOOLEAN MgmtBulkPending ;
2009-12-11 20:23:15 +00:00
unsigned long 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 */
2009-12-11 20:23:16 +00:00
struct rt_queue_header TxSwQueue [ NUM_OF_TX_RING ] ; /* 4 AC + 1 HCCA */
2009-12-11 20:23:15 +00:00
spinlock_t TxSwQueueLock [ NUM_OF_TX_RING ] ; /* TxSwQueue spinlock */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_rtmp_dmabuf MgmtDescRing ; /* Shared memory for MGMT descriptors */
struct rt_rtmp_mgmt_ring MgmtRing ;
2009-12-11 20:23:15 +00:00
spinlock_t 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:16 +00:00
struct rt_rtmp_rx_ring RxRing ;
2009-12-11 20:23:15 +00:00
spinlock_t RxRingLock ; /* Rx Ring spinlock */
2009-09-22 18:44:24 +00:00
# ifdef RT3090
2009-12-11 20:23:15 +00:00
spinlock_t McuCmdLock ; /*MCU Command Queue spinlock */
2009-12-11 20:23:15 +00:00
# endif /* RT3090 // */
# endif /* RTMP_MAC_PCI // */
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_USB
2009-12-11 20:23:16 +00:00
struct rt_rx_context RxContext [ RX_RING_SIZE ] ; /* 1 for redundant multiple IRP bulk in. */
2009-12-11 20:23:15 +00:00
spinlock_t BulkInLock ; /* BulkIn spinlock for 4 ACs */
2009-12-11 20:23:15 +00:00
u8 PendingRx ; /* The Maximum pending Rx value should be RX_RING_SIZE. */
u8 NextRxBulkInIndex ; /* Indicate the current RxContext Index which hold by Host controller. */
u8 NextRxBulkInReadIndex ; /* Indicate the current RxContext Index which driver can read & process it. */
unsigned long NextRxBulkInPosition ; /* Want to contatenate 2 URB buffer while 1st is bulkin failed URB. This Position is 1st URB TransferLength. */
unsigned long TransferBufferLength ; /* current length of the packet buffer */
unsigned long ReadPosition ; /* current read position in a packet buffer */
2009-12-11 20:23:15 +00:00
# endif /* RTMP_MAC_USB // */
2008-10-28 21:48:09 +00:00
/*****************************************************************************************/
/* ASIC related parameters */
/*****************************************************************************************/
2009-12-11 20:23:15 +00:00
u32 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 */
/* --------------------------- */
2009-12-11 20:23:15 +00:00
unsigned long EepromVersion ; /* byte 0: version, byte 1: revision, byte 2~3: unused */
unsigned long FirmwareVersion ; /* byte 0: Minor version, byte 1: Major version, otherwise unused. */
u16 EEPROMDefaultValue [ NUM_EEPROM_BBP_PARMS ] ;
u8 EEPROMAddressNum ; /* 93c46=6 93c66=8 */
2009-12-11 20:23:14 +00:00
BOOLEAN EepromAccess ;
2009-12-11 20:23:15 +00:00
u8 EFuseTag ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* --------------------------- */
/* BBP Control */
/* --------------------------- */
2009-12-11 20:23:15 +00:00
u8 BbpWriteLatch [ 140 ] ; /* record last BBP register value written via BBP_IO_WRITE/BBP_IO_WRITE_VY_REG_ID */
char BbpRssiToDbmDelta ; /* change from u8 to char for high power */
2009-12-11 20:23:16 +00:00
struct rt_bbp_r66_tuning BbpTuning ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* ---------------------------- */
/* RFIC control */
/* ---------------------------- */
2009-12-11 20:23:15 +00:00
u8 RfIcType ; /* RFIC_xxx */
unsigned long RfFreqOffset ; /* Frequency offset for channel switching */
2009-12-11 20:23:16 +00:00
struct rt_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:16 +00:00
struct rt_soft_rx_ant_diversity RxAnt ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
u8 RFProgSeq ;
2009-12-11 20:23:16 +00:00
struct rt_channel_tx_power TxPower [ MAX_NUM_OF_CHANNELS ] ; /* Store Tx power value for all channels. */
struct rt_channel_tx_power ChannelList [ MAX_NUM_OF_CHANNELS ] ; /* list all supported channels for site survey */
struct rt_channel_11j_tx_power TxPower11J [ MAX_NUM_OF_11JCHANNELS ] ; /* 802.11j channel and bw */
struct rt_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
u8 ChannelListNum ; /* number of channel in ChannelList[] */
u8 Bbp94 ;
2009-12-11 20:23:14 +00:00
BOOLEAN BbpForCCK ;
2009-12-11 20:23:15 +00:00
unsigned long Tx20MPwrCfgABand [ 5 ] ;
unsigned long Tx20MPwrCfgGBand [ 5 ] ;
unsigned long Tx40MPwrCfgABand [ 5 ] ;
unsigned long Tx40MPwrCfgGBand [ 5 ] ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
BOOLEAN bAutoTxAgcA ; /* Enable driver auto Tx Agc control */
2009-12-11 20:23:15 +00:00
u8 TssiRefA ; /* Store Tssi reference value as 25 temperature. */
u8 TssiPlusBoundaryA [ 5 ] ; /* Tssi boundary for increase Tx power to compensate. */
u8 TssiMinusBoundaryA [ 5 ] ; /* Tssi boundary for decrease Tx power to compensate. */
u8 TxAgcStepA ; /* Store Tx TSSI delta increment / decrement value */
char TxAgcCompensateA ; /* Store the compensation (TxAgcStep * (idx-1)) */
2009-12-11 20:23:15 +00:00
BOOLEAN bAutoTxAgcG ; /* Enable driver auto Tx Agc control */
2009-12-11 20:23:15 +00:00
u8 TssiRefG ; /* Store Tssi reference value as 25 temperature. */
u8 TssiPlusBoundaryG [ 5 ] ; /* Tssi boundary for increase Tx power to compensate. */
u8 TssiMinusBoundaryG [ 5 ] ; /* Tssi boundary for decrease Tx power to compensate. */
u8 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:15 +00:00
u8 Bbp25 ;
u8 Bbp26 ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
u8 TxMixerGain24G ; /* Tx mixer gain value from EEPROM to improve Tx EVM / Tx DAC, 2.4G */
u8 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
u16 Led1 ; /* read from EEPROM 0x3c */
u16 Led2 ; /* EEPROM 0x3e */
u16 Led3 ; /* EEPROM 0x40 */
u8 LedIndicatorStrength ;
u8 RssiSingalstrengthOffet ;
2009-12-11 20:23:14 +00:00
BOOLEAN bLedOnScanning ;
2009-12-11 20:23:15 +00:00
u8 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:16 +00:00
struct rt_txwi BeaconTxWI ;
2009-12-11 20:23:15 +00:00
u8 * BeaconBuf ;
u16 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:16 +00:00
struct rt_pspoll_frame PsPollFrame ;
struct rt_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:16 +00:00
struct rt_tx_context BeaconContext [ BEACON_RING_SIZE ] ;
struct rt_tx_context NullContext ;
struct rt_tx_context PsPollContext ;
struct rt_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 */
/* ----------------------------------------------- */
2009-12-11 20:23:16 +00:00
struct rt_sta_admin_config StaCfg ; /* user desired settings */
struct rt_sta_active_config StaActive ; /* valid only when ADHOC_ON(pAd) || INFRA_ON(pAd) */
2009-12-11 20:23:15 +00:00
char nickname [ IW_ESSID_MAX_SIZE + 1 ] ; /* nickname, only used in the iwconfig i/f */
int PreMediaState ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/*=======Common=========== */
/* OP mode: either AP or STA */
2009-12-11 20:23:15 +00:00
u8 OpMode ; /* OPMODE_STA, OPMODE_AP */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
int 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 */
2009-12-11 20:23:15 +00:00
u8 PermanentAddress [ MAC_ADDR_LEN ] ; /* Factory default MAC address */
u8 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:16 +00:00
struct rt_common_config CommonCfg ;
struct rt_mlme 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. */
2009-12-11 20:23:16 +00:00
struct rt_mlme_aux MlmeAux ; /* temporary settings used during MLME state machine */
struct rt_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. */
2009-12-11 20:23:16 +00:00
struct rt_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:15 +00:00
spinlock_t MacTabLock ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_ba_table BATable ;
2009-04-26 14:06:00 +00:00
2009-12-11 20:23:15 +00:00
spinlock_t BATabLock ;
2009-12-11 20:23:16 +00:00
struct rt_ralink_timer RECBATimer ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* encryption/decryption KEY tables */
2009-12-11 20:23:16 +00:00
struct rt_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 */
2009-12-11 20:23:16 +00:00
struct rt_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 */
2009-12-11 20:23:16 +00:00
struct rt_counter_802_3 Counters8023 ; /* 802.3 counters */
struct rt_counter_802_11 WlanCounters ; /* 802.11 MIB counters */
struct rt_counter_ralink RalinkCounters ; /* Ralink propriety counters */
struct rt_counter_drs DrsCounters ; /* counters for Dynamic TX Rate Switching */
struct rt_private 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 */
2009-12-11 20:23:15 +00:00
unsigned long Flags ; /* Represent current device status */
unsigned long 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:15 +00:00
u16 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:15 +00:00
unsigned long LinkDownTime ;
2009-12-11 20:23:15 +00:00
/*--- */
2009-12-11 20:23:15 +00:00
unsigned long LastRxRate ;
unsigned long 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
unsigned long ExtraInfo ; /* Extra information for displaying status */
unsigned long 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 */
2009-12-11 20:23:15 +00:00
unsigned long MacIcVersion ; /* MAC/BBP serial interface issue solved after ver.D */
2009-12-11 20:23:15 +00:00
/*--- */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/* --------------------------- */
/* System event log */
/* --------------------------- */
2009-12-11 20:23:16 +00:00
struct 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:15 +00:00
unsigned long BulkOutDataOneSecCount ;
unsigned long BulkInDataOneSecCount ;
unsigned long BulkLastOneSecCount ; /* BulkOutDataOneSecCount + BulkInDataOneSecCount */
unsigned long watchDogRxCnt ;
unsigned long watchDogRxOverFlowCnt ;
unsigned long 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
unsigned long watchDogMacDeadlock ; /* prevent MAC/BBP into deadlock condition */
2009-12-11 20:23:15 +00:00
/* ---------------------------- */
/* DEBUG paramerts */
/* ---------------------------- */
2009-12-11 20:23:15 +00:00
/*unsigned long 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 */
/* ---------------------------- */
2009-12-11 20:23:15 +00:00
/*unsigned long rtsaccu[30]; */
/*unsigned long ctsaccu[30]; */
/*unsigned long cfendaccu[30]; */
/*unsigned long bacontent[16]; */
/*unsigned long rxint[RX_RING_SIZE+1]; */
/*u8 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:15 +00:00
unsigned long BulkOutReq ;
unsigned long BulkOutComplete ;
unsigned long BulkOutCompleteOther ;
unsigned long BulkOutCompleteCancel ; /* seems not use now? */
unsigned long BulkInReq ;
unsigned long BulkInComplete ;
unsigned long 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
unsigned long 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:15 +00:00
unsigned long 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:15 +00:00
u8 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:15 +00:00
u8 flg_be_adjust ;
unsigned long be_adjust_last_time ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
u8 FlgCtsEnabled ;
u8 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 ;
2009-12-11 20:23:15 +00:00
u8 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:16 +00:00
struct rt_rx_blk {
2009-12-11 20:23:14 +00:00
RT28XX_RXD_STRUC RxD ;
2010-04-20 00:06:33 +00:00
struct rt_rxwi * pRxWI ;
struct rt_header_802_11 * pHeader ;
2009-12-11 20:23:15 +00:00
void * pRxPacket ;
2009-12-11 20:23:15 +00:00
u8 * pData ;
u16 DataSize ;
u16 Flags ;
u8 UserPriority ; /* for calculate TKIP MIC using */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
# 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:16 +00:00
/* Currently the sizeof(struct rt_tx_blk) is 148 bytes. */
struct rt_tx_blk {
2009-12-11 20:23:15 +00:00
u8 QueIdx ;
u8 TxFrameType ; /* Indicate the Transmission type of the all frames in one batch */
u8 TotalFrameNum ; /* Total frame number want to send-out in one batch */
u16 TotalFragNum ; /* Total frame fragments required in one batch */
u16 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:16 +00:00
struct rt_queue_header TxPacketList ;
struct rt_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:15 +00:00
void * pPacket ;
2009-12-11 20:23:15 +00:00
u8 * pSrcBufHeader ; /* Reference to the head of sk_buff->data */
u8 * pSrcBufData ; /* Reference to the sk_buff->data, will changed depends on hanlding progresss */
u32 SrcBufLen ; /* Length of packet payload which not including Layer 2 header */
u8 * pExtraLlcSnapEncap ; /* NULL means no extra LLC/SNAP is required */
u8 HeaderBuf [ 128 ] ; /* TempBuffer for TX_INFO + TX_WI + 802.11 Header + padding + AMSDU SubHeader + LLC/SNAP */
2009-12-11 20:23:15 +00:00
/*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 */
2009-12-11 20:23:15 +00:00
u8 MpduHeaderLen ; /* 802.11 header length NOT including the padding */
u8 HdrPadLen ; /* recording Header Padding Length; */
u8 apidx ; /* The interface associated to this packet */
u8 Wcid ; /* The MAC entry associated to this packet */
u8 UserPriority ; /* priority class of packet */
u8 FrameGap ; /* what kind of IFS this packet use */
u8 MpduReqNum ; /* number of fragments of this frame */
u8 TxRate ; /* TODO: Obsoleted? Should change to MCS? */
u8 CipherAlg ; /* cipher alogrithm */
2009-12-11 20:23:16 +00:00
struct rt_cipher_key * pKey ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
u16 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. */
2009-12-11 20:23:15 +00:00
unsigned long Priv ; /* Hardware specific value saved in here. */
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
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:15 +00:00
static inline void ConvertMulticastIP2MAC ( u8 * pIpAddr ,
2010-04-20 00:06:33 +00:00
u8 * * ppMacAddr ,
2009-12-11 20:23:15 +00:00
u16 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:15 +00:00
int RTMPAllocAdapterBlock ( void * handle ,
2010-04-20 00:06:33 +00:00
struct rt_rtmp_adapter * * ppAdapter ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int RTMPAllocTxRxRingMemory ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPFreeAdapter ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int NICReadRegParameters ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
void * 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:16 +00:00
void NICInitRFRegisters ( struct rt_rtmp_adapter * pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void RtmpChipOpsRFHook ( struct rt_rtmp_adapter * pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RT30xxWriteRFRegister ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 regID , u8 value ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RT30xxReadRFRegister ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 regID , u8 * 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:16 +00:00
void NICReadEEPROMParameters ( struct rt_rtmp_adapter * pAd , u8 * mac_addr ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void NICInitAsicFromEEPROM ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int NICInitializeAdapter ( struct rt_rtmp_adapter * pAd , IN BOOLEAN bHardReset ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int NICInitializeAsic ( struct rt_rtmp_adapter * pAd , IN BOOLEAN bHardReset ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void NICIssueReset ( struct rt_rtmp_adapter * pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void RTMPRingCleanUp ( struct rt_rtmp_adapter * pAd , u8 RingType ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void UserCfgInit ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void NICResetFromError ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int NICLoadFirmware ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void NICEraseFirmware ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int NICLoadRateSwitchingParams ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN NICCheckForHang ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void NICUpdateFifoStaCounters ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void NICUpdateRawCounters ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
void RTMPZeroMemory ( void * pSrc , unsigned long Length ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
unsigned long RTMPCompareMemory ( void * pSrc1 , void * pSrc2 , unsigned long Length ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
void RTMPMoveMemory ( void * pDest , void * pSrc , unsigned long Length ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
void AtoH ( char * src , u8 * dest , int destlen ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPPatchMacBbpBug ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPInitTimer ( struct rt_rtmp_adapter * pAd ,
struct rt_ralink_timer * pTimer ,
2009-12-11 20:23:15 +00:00
void * pTimerFunc , void * pData , IN BOOLEAN Repeat ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPSetTimer ( struct rt_ralink_timer * pTimer , unsigned long Value ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPModTimer ( struct rt_ralink_timer * pTimer , unsigned long Value ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPCancelTimer ( struct rt_ralink_timer * pTimer , OUT BOOLEAN * pCancelled ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPSetLED ( struct rt_rtmp_adapter * pAd , u8 Status ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPSetSignalLED ( struct rt_rtmp_adapter * pAd , IN NDIS_802_11_RSSI Dbm ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPEnableRxTx ( struct rt_rtmp_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:16 +00:00
void ActionStateMachineInit ( struct rt_rtmp_adapter * pAd ,
struct rt_state_machine * S ,
2009-12-11 20:23:14 +00:00
OUT STATE_MACHINE_FUNC Trans [ ] ) ;
2009-12-11 20:23:16 +00:00
void MlmeADDBAAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeDELBAAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeDLSAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeInvalidAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeQOSAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerAddBAReqAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerAddBARspAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerDelBAAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerBAAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void SendPSMPAction ( struct rt_rtmp_adapter * pAd , u8 Wcid , u8 Psmp ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerRMAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerPublicAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerHTAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerQOSAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
void RECBATimerTimeout ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 , void * SystemSpecific3 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void ORIBATimerTimeout ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void SendRefreshBAR ( struct rt_rtmp_adapter * pAd , struct rt_mac_table_entry * pEntry ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void ActHeaderInit ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
struct rt_header_802_11 * pHdr80211 ,
2009-12-11 20:23:15 +00:00
u8 * Addr1 , u8 * Addr2 , u8 * Addr3 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void BarHeaderInit ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
struct rt_frame_bar * pCntlBar , u8 * pDA , u8 * pSA ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void InsertActField ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pFrameBuf ,
unsigned long * pFrameLen , u8 Category , u8 ActCode ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN CntlEnqueueForRecv ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
unsigned long Wcid ,
2010-04-20 00:06:33 +00:00
unsigned long MsgLen , struct rt_frame_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:16 +00:00
BOOLEAN RTMPHandleRxDoneInterrupt ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTMPHandleTxRingDmaDoneInterrupt ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
INT_SOURCE_CSR_STRUC TxRingBitmap ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPHandleMgmtRingDmaDoneInterrupt ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPHandleTBTTInterrupt ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPHandlePreTBTTInterrupt ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPHandleTwakeupInterrupt ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPHandleRxCoherentInterrupt ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN TxFrameIsAggregatible ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pPrevAddr1 , u8 * p8023hdr ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN PeerIsAggreOn ( struct rt_rtmp_adapter * pAd ,
unsigned long TxRate , struct rt_mac_table_entry * pMacEntry ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
int Sniff2BytesFromNdisBuffer ( char * pFirstBuffer ,
2009-12-11 20:23:15 +00:00
u8 DesiredOffset ,
u8 * pByte0 , u8 * pByte1 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int STASendPacket ( struct rt_rtmp_adapter * pAd , void * pPacket ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
void STASendPackets ( void * MiniportAdapterContext ,
void * * ppPacketArray , u32 NumberOfPackets ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPDeQueuePacket ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN bIntContext ,
2009-12-11 20:23:15 +00:00
u8 QueIdx , u8 Max_Tx_Packets ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTMPHardTransmit ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
void * pPacket ,
2009-12-11 20:23:15 +00:00
u8 QueIdx , unsigned long * pFreeTXDLeft ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int STAHardTransmit ( struct rt_rtmp_adapter * pAd ,
struct rt_tx_blk * pTxBlk , u8 QueIdx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void STARxEAPOLFrameIndicate ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry ,
struct rt_rx_blk * pRxBlk , u8 FromWhichBSSID ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTMPFreeTXDRequest ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 RingType ,
u8 NumberRequired , u8 * FreeNumberIs ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int MlmeHardTransmit ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 QueIdx , void * pPacket ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int MlmeHardTransmitMgmtRing ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 QueIdx , void * 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:16 +00:00
int MlmeHardTransmitTxRing ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 QueIdx , void * pPacket ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int MlmeDataHardTransmit ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 QueIdx , void * pPacket ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPWriteTxDescriptor ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
struct rt_txd * pTxD , IN BOOLEAN bWIV , u8 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:16 +00:00
u16 RTMPCalcDuration ( struct rt_rtmp_adapter * pAd , u8 Rate , unsigned long Size ) ;
2009-08-23 13:31:28 +00:00
2009-12-11 20:23:16 +00:00
void RTMPWriteTxWI ( struct rt_rtmp_adapter * pAd , struct rt_txwi * 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:15 +00:00
u8 BASize ,
u8 WCID ,
unsigned long Length ,
u8 PID ,
u8 TID ,
u8 TxRate ,
u8 Txopmode ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN CfAck , IN HTTRANSMIT_SETTING * pTransmit ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void RTMPWriteTxWI_Data ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
struct rt_txwi * pTxWI , struct rt_tx_blk * pTxBlk ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPWriteTxWI_Cache ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
struct rt_txwi * pTxWI , struct rt_tx_blk * pTxBlk ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPSuspendMsduTransmission ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPResumeMsduTransmission ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int MiniportMMRequest ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 QueIdx , u8 * pData , u32 Length ) ;
2009-12-11 20:23:14 +00:00
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:16 +00:00
void RTMPSendNullFrame ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 TxRate , IN BOOLEAN bQosNull ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPSendDisassociationFrame ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPSendRTSFrame ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pDA ,
2009-12-11 20:23:14 +00:00
IN unsigned int NextMpduSize ,
2009-12-11 20:23:15 +00:00
u8 TxRate ,
u8 RTSRate ,
u16 AckDuration ,
u8 QueIdx , u8 FrameGap ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_queue_header * RTMPCheckTxSwQueue ( struct rt_rtmp_adapter * pAd , u8 * QueIdx ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void RTMPReportMicError ( struct rt_rtmp_adapter * pAd , struct rt_cipher_key * pWpaKey ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void WpaMicFailureReportFrame ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
void WpaDisassocApAndBlockAssoc ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 ,
void * SystemSpecific3 ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void WpaStaPairwiseKeySetting ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void WpaStaGroupKeySetting ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int RTMPCloneNdisPacket ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN pInsAMSDUHdr ,
2009-12-11 20:23:15 +00:00
void * pInPacket ,
2010-04-20 00:06:33 +00:00
void * * ppOutPacket ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int RTMPAllocateNdisPacket ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
void * * pPacket ,
2009-12-11 20:23:15 +00:00
u8 * pHeader ,
u32 HeaderLen ,
u8 * pData , u32 DataLen ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPFreeNdisPacket ( struct rt_rtmp_adapter * pAd , void * pPacket ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTMPFreeTXDUponTxDmaDone ( struct rt_rtmp_adapter * pAd , u8 QueIdx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTMPCheckDHCPFrame ( struct rt_rtmp_adapter * pAd , void * pPacket ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTMPCheckEtherType ( struct rt_rtmp_adapter * pAd , void * 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:16 +00:00
void RTMPInitWepEngine ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pKey ,
u8 KeyId , u8 KeyLen , u8 * pDest ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPEncryptData ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pSrc , u8 * pDest , u32 Len ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTMPSoftDecryptWEP ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pData ,
2009-12-11 20:23:16 +00:00
unsigned long DataByteCnt , struct rt_cipher_key * pGroupKey ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPSetICV ( struct rt_rtmp_adapter * pAd , u8 * pDest ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void ARCFOUR_INIT ( struct rt_arcfourcontext * Ctx , u8 * pKey , u32 KeyLen ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
u8 ARCFOUR_BYTE ( struct rt_arcfourcontext * Ctx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void ARCFOUR_DECRYPT ( struct rt_arcfourcontext * Ctx ,
2009-12-11 20:23:15 +00:00
u8 * pDest , u8 * pSrc , u32 Len ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void ARCFOUR_ENCRYPT ( struct rt_arcfourcontext * Ctx ,
2009-12-11 20:23:15 +00:00
u8 * pDest , u8 * pSrc , u32 Len ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void WPAARCFOUR_ENCRYPT ( struct rt_arcfourcontext * Ctx ,
2009-12-11 20:23:15 +00:00
u8 * pDest , u8 * pSrc , u32 Len ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
u32 RTMP_CALC_FCS32 ( u32 Fcs , u8 * Cp , 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:16 +00:00
void AsicAdjustTxPower ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicUpdateProtect ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 OperaionMode ,
u8 SetMask ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN bDisableBGProtect , IN BOOLEAN bNonGFExist ) ;
2009-12-11 20:23:16 +00:00
void AsicSwitchChannel ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 Channel , IN BOOLEAN bScan ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicLockChannel ( struct rt_rtmp_adapter * pAd , u8 Channel ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
void AsicRfTuningExec ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 , void * SystemSpecific3 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicResetBBPAgent ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicSleepThenAutoWakeup ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 TbttNumToNextWakeUp ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicForceSleep ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicForceWakeup ( struct rt_rtmp_adapter * pAd , IN BOOLEAN bFromTx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicSetBssid ( struct rt_rtmp_adapter * pAd , u8 * pBssid ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicSetMcastWC ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicDelWcidTab ( struct rt_rtmp_adapter * pAd , u8 Wcid ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void AsicEnableRDG ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicDisableRDG ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicDisableSync ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicEnableBssSync ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicEnableIbssSync ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicSetEdcaParm ( struct rt_rtmp_adapter * pAd , struct rt_edca_parm * pEdcaParm ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicSetSlotTime ( struct rt_rtmp_adapter * pAd , IN BOOLEAN bUseShortSlotTime ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicAddSharedKeyEntry ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 BssIndex ,
u8 KeyIdx ,
u8 CipherAlg ,
u8 * pKey , u8 * pTxMic , u8 * pRxMic ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicRemoveSharedKeyEntry ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 BssIndex , u8 KeyIdx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicUpdateWCIDAttribute ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 WCID ,
u8 BssIndex ,
u8 CipherAlg ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN bUsePairewiseKeyTable ) ;
2009-12-11 20:23:16 +00:00
void AsicUpdateWCIDIVEIV ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 WCID , unsigned long uIV , unsigned long uEIV ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicUpdateRxWCIDTable ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 WCID , u8 * pAddr ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicAddKeyEntry ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 WCID ,
u8 BssIndex ,
u8 KeyIdx ,
2009-12-11 20:23:16 +00:00
struct rt_cipher_key * pCipherKey ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN bUsePairewiseKeyTable , IN BOOLEAN bTxKey ) ;
2009-12-11 20:23:16 +00:00
void AsicAddPairwiseKeyEntry ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pAddr ,
2009-12-11 20:23:16 +00:00
u8 WCID , struct rt_cipher_key * pCipherKey ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicRemovePairwiseKeyEntry ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 BssIdx , u8 Wcid ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN AsicSendCommandToMcu ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 Command ,
u8 Token , u8 Arg0 , u8 Arg1 ) ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_MAC_PCI
2009-12-11 20:23:16 +00:00
BOOLEAN AsicCheckCommanOk ( struct rt_rtmp_adapter * pAd , u8 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:16 +00:00
void MacAddrRandomBssid ( struct rt_rtmp_adapter * pAd , u8 * pAddr ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MgtMacHeaderInit ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
struct rt_header_802_11 * pHdr80211 ,
2009-12-11 20:23:15 +00:00
u8 SubType ,
u8 ToDs , u8 * pDA , u8 * pBssid ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeRadioOff ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeRadioOn ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void BssTableInit ( struct rt_bss_table * Tab ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void BATableInit ( struct rt_rtmp_adapter * pAd , struct rt_ba_table * Tab ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
unsigned long BssTableSearch ( struct rt_bss_table * Tab , u8 * pBssid , u8 Channel ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
unsigned long BssSsidTableSearch ( struct rt_bss_table * Tab ,
2009-12-11 20:23:15 +00:00
u8 * pBssid ,
u8 * pSsid , u8 SsidLen , u8 Channel ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
unsigned long BssTableSearchWithSSID ( struct rt_bss_table * Tab ,
2009-12-11 20:23:15 +00:00
u8 * Bssid ,
u8 * pSsid ,
u8 SsidLen , u8 Channel ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
unsigned long BssSsidTableSearchBySSID ( struct rt_bss_table * Tab ,
2009-12-11 20:23:15 +00:00
u8 * pSsid , u8 SsidLen ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void BssTableDeleteEntry ( struct rt_bss_table * pTab ,
2009-12-11 20:23:15 +00:00
u8 * pBssid , u8 Channel ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void BATableDeleteORIEntry ( struct rt_rtmp_adapter * pAd ,
struct rt_ba_ori_entry * pBAORIEntry ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void BssEntrySet ( struct rt_rtmp_adapter * pAd , struct rt_bss_entry * pBss , u8 * pBssid , char Ssid [ ] , u8 SsidLen , u8 BssType , u16 BeaconPeriod , struct rt_cf_parm * CfParm , u16 AtimWin , u16 CapabilityInfo , u8 SupRate [ ] , u8 SupRateLen , u8 ExtRate [ ] , u8 ExtRateLen , struct rt_ht_capability_ie * pHtCapability , struct rt_add_ht_info_ie * pAddHtInfo , /* AP might use this additional ht info IE */
2009-12-11 20:23:15 +00:00
u8 HtCapabilityLen ,
u8 AddHtInfoLen ,
u8 NewExtChanOffset ,
u8 Channel ,
char Rssi ,
2009-12-11 20:23:14 +00:00
IN LARGE_INTEGER TimeStamp ,
2009-12-11 20:23:15 +00:00
u8 CkipFlag ,
2009-12-11 20:23:16 +00:00
struct rt_edca_parm * pEdcaParm ,
struct rt_qos_capability_parm * pQosCapability ,
struct rt_qbss_load_parm * pQbssLoad ,
u16 LengthVIE , struct rt_ndis_802_11_variable_ies * pVIE ) ;
2009-12-11 20:23:15 +00:00
2009-12-11 20:23:16 +00:00
unsigned long BssTableSetEntry ( struct rt_rtmp_adapter * pAd , struct rt_bss_table * pTab , u8 * pBssid , char Ssid [ ] , u8 SsidLen , u8 BssType , u16 BeaconPeriod , struct rt_cf_parm * CfParm , u16 AtimWin , u16 CapabilityInfo , u8 SupRate [ ] , u8 SupRateLen , u8 ExtRate [ ] , u8 ExtRateLen , struct rt_ht_capability_ie * pHtCapability , struct rt_add_ht_info_ie * pAddHtInfo , /* AP might use this additional ht info IE */
2009-12-11 20:23:15 +00:00
u8 HtCapabilityLen ,
u8 AddHtInfoLen ,
u8 NewExtChanOffset ,
u8 Channel ,
char Rssi ,
2009-12-11 20:23:14 +00:00
IN LARGE_INTEGER TimeStamp ,
2009-12-11 20:23:15 +00:00
u8 CkipFlag ,
2009-12-11 20:23:16 +00:00
struct rt_edca_parm * pEdcaParm ,
struct rt_qos_capability_parm * pQosCapability ,
struct rt_qbss_load_parm * pQbssLoad ,
u16 LengthVIE , struct rt_ndis_802_11_variable_ies * pVIE ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void BATableInsertEntry ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 Aid ,
u16 TimeOutValue ,
u16 StartingSeq ,
u8 TID ,
u8 BAWinSize ,
u8 OriginatorStatus , IN BOOLEAN IsRecipient ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void BssTableSsidSort ( struct rt_rtmp_adapter * pAd ,
struct rt_bss_table * OutTab , char Ssid [ ] , u8 SsidLen ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void BssTableSortByRssi ( struct rt_bss_table * OutTab ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void BssCipherParse ( struct rt_bss_entry * pBss ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int MlmeQueueInit ( struct rt_mlme_queue * Queue ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeQueueDestroy ( struct rt_mlme_queue * Queue ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN MlmeEnqueue ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
unsigned long Machine ,
2010-04-20 00:06:33 +00:00
unsigned long MsgType , unsigned long MsgLen , void * Msg ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN MlmeEnqueueForRecv ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
unsigned long Wcid ,
unsigned long TimeStampHigh ,
unsigned long TimeStampLow ,
u8 Rssi0 ,
u8 Rssi1 ,
u8 Rssi2 ,
unsigned long MsgLen , void * Msg , u8 Signal ) ;
2009-12-11 20:23:14 +00:00
2010-04-20 00:06:33 +00:00
BOOLEAN MlmeDequeue ( struct rt_mlme_queue * Queue , struct rt_mlme_queue_elem * * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeRestartStateMachine ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN MlmeQueueEmpty ( struct rt_mlme_queue * Queue ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN MlmeQueueFull ( struct rt_mlme_queue * Queue ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN MsgTypeSubst ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
struct rt_frame_802_11 * pFrame ,
int * Machine , int * MsgType ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void StateMachineInit ( struct rt_state_machine * Sm ,
2009-12-11 20:23:14 +00:00
IN STATE_MACHINE_FUNC Trans [ ] ,
2009-12-11 20:23:15 +00:00
unsigned long StNr ,
unsigned long MsgNr ,
2009-12-11 20:23:14 +00:00
IN STATE_MACHINE_FUNC DefFunc ,
2009-12-11 20:23:15 +00:00
unsigned long InitState , unsigned long Base ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void StateMachineSetAction ( struct rt_state_machine * S ,
2009-12-11 20:23:15 +00:00
unsigned long St , unsigned long Msg , IN STATE_MACHINE_FUNC F ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void StateMachinePerformAction ( struct rt_rtmp_adapter * pAd ,
struct rt_state_machine * S , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void Drop ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AssocStateMachineInit ( struct rt_rtmp_adapter * pAd ,
struct rt_state_machine * Sm ,
2009-12-11 20:23:14 +00:00
OUT STATE_MACHINE_FUNC Trans [ ] ) ;
2009-12-11 20:23:15 +00:00
void ReassocTimeout ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 , void * SystemSpecific3 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
void AssocTimeout ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 , void * SystemSpecific3 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
void DisassocTimeout ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 , void * SystemSpecific3 ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
/*---------------------------------------------- */
2009-12-11 20:23:16 +00:00
void MlmeAssocReqAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void MlmeReassocReqAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void MlmeDisassocReqAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void PeerAssocRspAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void PeerReassocRspAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void PeerDisassocAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void DisassocTimeoutAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void AssocTimeoutAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void ReassocTimeoutAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void Cls3errAction ( struct rt_rtmp_adapter * pAd , u8 * pAddr ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void InvalidStateWhenAssoc ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void InvalidStateWhenReassoc ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void InvalidStateWhenDisassociate ( struct rt_rtmp_adapter * pAd ,
struct rt_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:16 +00:00
void MlmeCntlConfirm ( struct rt_rtmp_adapter * pAd , unsigned long MsgType , u16 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:16 +00:00
void ComposePsPoll ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void ComposeNullFrame ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AssocPostProc ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pAddr2 ,
u16 CapabilityInfo ,
u16 Aid ,
u8 SupRate [ ] ,
u8 SupRateLen ,
u8 ExtRate [ ] ,
u8 ExtRateLen ,
2009-12-11 20:23:16 +00:00
struct rt_edca_parm * pEdcaParm ,
2010-04-20 00:06:33 +00:00
struct rt_ht_capability_ie * pHtCapability ,
u8 HtCapabilityLen , struct rt_add_ht_info_ie * pAddHtInfo ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AuthStateMachineInit ( struct rt_rtmp_adapter * pAd ,
struct rt_state_machine * sm , OUT STATE_MACHINE_FUNC Trans [ ] ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
void AuthTimeout ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 , void * SystemSpecific3 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeAuthReqAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerAuthRspAtSeq2Action ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerAuthRspAtSeq4Action ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AuthTimeoutAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void Cls2errAction ( struct rt_rtmp_adapter * pAd , u8 * pAddr ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeDeauthReqAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void InvalidStateWhenAuth ( struct rt_rtmp_adapter * pAd , struct rt_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:16 +00:00
void AuthRspStateMachineInit ( struct rt_rtmp_adapter * pAd ,
struct rt_state_machine * Sm ,
2009-12-11 20:23:14 +00:00
IN STATE_MACHINE_FUNC Trans [ ] ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void PeerDeauthAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void PeerAuthSimpleRspGenAndSend ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
struct rt_header_802_11 * pHdr80211 ,
2009-12-11 20:23:15 +00:00
u16 Alg ,
u16 Seq ,
u16 Reason , u16 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:16 +00:00
void SyncStateMachineInit ( struct rt_rtmp_adapter * pAd ,
struct rt_state_machine * Sm ,
2009-12-11 20:23:14 +00:00
OUT STATE_MACHINE_FUNC Trans [ ] ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
void BeaconTimeout ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 , void * SystemSpecific3 ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
void ScanTimeout ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 , void * SystemSpecific3 ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void InvalidStateWhenScan ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void InvalidStateWhenJoin ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void InvalidStateWhenStart ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void EnqueueProbeRequest ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN ScanRunning ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:15 +00:00
/*========================================= */
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void MlmeCntlInit ( struct rt_rtmp_adapter * pAd ,
struct rt_state_machine * S , OUT STATE_MACHINE_FUNC Trans [ ] ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeCntlMachinePerformAction ( struct rt_rtmp_adapter * pAd ,
struct rt_state_machine * S ,
struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void CntlIdleProc ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void CntlOidScanProc ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void CntlOidSsidProc ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void CntlOidRTBssidProc ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void CntlMlmeRoamingProc ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void CntlWaitDisassocProc ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void CntlWaitJoinProc ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void CntlWaitReassocProc ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void CntlWaitStartProc ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void CntlWaitAuthProc ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void CntlWaitAuthProc2 ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void CntlWaitAssocProc ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void LinkUp ( struct rt_rtmp_adapter * pAd , u8 BssType ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void LinkDown ( struct rt_rtmp_adapter * pAd , IN BOOLEAN IsReqFromAP ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void IterateOnBssTab ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void IterateOnBssTab2 ( struct rt_rtmp_adapter * pAd ) ; ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void JoinParmFill ( struct rt_rtmp_adapter * pAd ,
struct rt_mlme_join_req * JoinReq , unsigned long BssIdx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AssocParmFill ( struct rt_rtmp_adapter * pAd ,
struct rt_mlme_assoc_req * AssocReq ,
2009-12-11 20:23:15 +00:00
u8 * pAddr ,
u16 CapabilityInfo ,
unsigned long Timeout , u16 ListenIntv ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void ScanParmFill ( struct rt_rtmp_adapter * pAd ,
struct rt_mlme_scan_req * ScanReq ,
2009-12-11 20:23:15 +00:00
char Ssid [ ] ,
u8 SsidLen , u8 BssType , u8 ScanType ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void DisassocParmFill ( struct rt_rtmp_adapter * pAd ,
struct rt_mlme_disassoc_req * DisassocReq ,
2009-12-11 20:23:15 +00:00
u8 * pAddr , u16 Reason ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void StartParmFill ( struct rt_rtmp_adapter * pAd ,
struct rt_mlme_start_req * StartReq ,
2009-12-11 20:23:15 +00:00
char Ssid [ ] , u8 SsidLen ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AuthParmFill ( struct rt_rtmp_adapter * pAd ,
struct rt_mlme_auth_req * AuthReq ,
2009-12-11 20:23:15 +00:00
u8 * pAddr , u16 Alg ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void EnqueuePsPoll ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void EnqueueBeaconFrame ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeJoinReqAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeScanReqAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeStartReqAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void ScanTimeoutAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void BeaconTimeoutAtJoinAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerBeaconAtScanAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerBeaconAtJoinAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerBeacon ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerProbeReqAction ( struct rt_rtmp_adapter * pAd , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void ScanNextChannel ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
unsigned long MakeIbssBeacon ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN MlmeScanReqSanity ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
void * Msg ,
2009-12-11 20:23:15 +00:00
unsigned long MsgLen ,
2010-04-20 00:06:33 +00:00
u8 * BssType ,
2009-12-11 20:23:15 +00:00
char ssid [ ] ,
2010-04-20 00:06:33 +00:00
u8 * SsidLen , u8 * ScanType ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN PeerBeaconAndProbeRspSanity ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
void * Msg ,
2009-12-11 20:23:15 +00:00
unsigned long MsgLen ,
u8 MsgChannel ,
u8 * pAddr2 ,
u8 * pBssid ,
char Ssid [ ] ,
2010-04-20 00:06:33 +00:00
u8 * pSsidLen ,
u8 * pBssType ,
u16 * pBeaconPeriod ,
u8 * pChannel ,
u8 * pNewChannel ,
2009-12-11 20:23:14 +00:00
OUT LARGE_INTEGER * pTimestamp ,
2010-04-20 00:06:33 +00:00
struct rt_cf_parm * pCfParm ,
u16 * pAtimWin ,
u16 * pCapabilityInfo ,
u8 * pErp ,
u8 * pDtimCount ,
u8 * pDtimPeriod ,
u8 * pBcastFlag ,
u8 * pMessageToMe ,
2009-12-11 20:23:15 +00:00
u8 SupRate [ ] ,
2010-04-20 00:06:33 +00:00
u8 * pSupRateLen ,
2009-12-11 20:23:15 +00:00
u8 ExtRate [ ] ,
2010-04-20 00:06:33 +00:00
u8 * pExtRateLen ,
u8 * pCkipFlag ,
u8 * pAironetCellPowerLimit ,
2009-12-11 20:23:16 +00:00
struct rt_edca_parm * pEdcaParm ,
struct rt_qbss_load_parm * pQbssLoad ,
struct rt_qos_capability_parm * pQosCapability ,
2010-04-20 00:06:33 +00:00
unsigned long * pRalinkIe ,
u8 * pHtCapabilityLen ,
u8 * pPreNHtCapabilityLen ,
struct rt_ht_capability_ie * pHtCapability ,
u8 * AddHtInfoLen ,
struct rt_add_ht_info_ie * AddHtInfo ,
u8 * NewExtChannel ,
u16 * LengthVIE ,
2009-12-11 20:23:16 +00:00
struct rt_ndis_802_11_variable_ies * pVIE ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN PeerAddBAReqActionSanity ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
void * pMsg ,
2009-12-11 20:23:15 +00:00
unsigned long MsgLen , u8 * pAddr2 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN PeerAddBARspActionSanity ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
void * pMsg , unsigned long MsgLen ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN PeerDelBAActionSanity ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
u8 Wcid , void * pMsg , unsigned long MsgLen ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN MlmeAssocReqSanity ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
void * Msg ,
2009-12-11 20:23:15 +00:00
unsigned long MsgLen ,
u8 * pApAddr ,
2010-04-20 00:06:33 +00:00
u16 * CapabilityInfo ,
unsigned long * Timeout , u16 * ListenIntv ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN MlmeAuthReqSanity ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
void * Msg ,
2009-12-11 20:23:15 +00:00
unsigned long MsgLen ,
u8 * pAddr ,
2010-04-20 00:06:33 +00:00
unsigned long * Timeout , u16 * Alg ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN MlmeStartReqSanity ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
void * Msg ,
2009-12-11 20:23:15 +00:00
unsigned long MsgLen ,
2010-04-20 00:06:33 +00:00
char Ssid [ ] , u8 * Ssidlen ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN PeerAuthSanity ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
void * Msg ,
2009-12-11 20:23:15 +00:00
unsigned long MsgLen ,
u8 * pAddr ,
2010-04-20 00:06:33 +00:00
u16 * Alg ,
u16 * Seq ,
u16 * Status , char ChlgText [ ] ) ;
2009-12-11 20:23:15 +00:00
2010-04-20 00:06:33 +00:00
BOOLEAN PeerAssocRspSanity ( struct rt_rtmp_adapter * pAd , void * pMsg , unsigned long MsgLen , u8 * pAddr2 , u16 * pCapabilityInfo , u16 * pStatus , u16 * pAid , u8 SupRate [ ] , u8 * pSupRateLen , u8 ExtRate [ ] , u8 * pExtRateLen , struct rt_ht_capability_ie * pHtCapability , struct rt_add_ht_info_ie * pAddHtInfo , /* AP might use this additional ht info IE */
u8 * pHtCapabilityLen ,
u8 * pAddHtInfoLen ,
u8 * pNewExtChannelOffset ,
struct rt_edca_parm * pEdcaParm , u8 * pCkipFlag ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN PeerDisassocSanity ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
void * Msg ,
2009-12-11 20:23:15 +00:00
unsigned long MsgLen ,
2010-04-20 00:06:33 +00:00
u8 * pAddr2 , u16 * Reason ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN PeerWpaMessageSanity ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
struct rt_eapol_packet * pMsg ,
2009-12-11 20:23:15 +00:00
unsigned long MsgLen ,
2009-12-11 20:23:16 +00:00
u8 MsgType , struct rt_mac_table_entry * pEntry ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN PeerDeauthSanity ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
void * Msg ,
2009-12-11 20:23:15 +00:00
unsigned long MsgLen ,
2010-04-20 00:06:33 +00:00
u8 * pAddr2 , u16 * Reason ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN PeerProbeReqSanity ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
void * Msg ,
2009-12-11 20:23:15 +00:00
unsigned long MsgLen ,
u8 * pAddr2 ,
2010-04-20 00:06:33 +00:00
char Ssid [ ] , u8 * pSsidLen ) ;
2009-12-11 20:23:14 +00:00
2010-04-20 00:06:33 +00:00
BOOLEAN GetTimBit ( char * Ptr ,
2009-12-11 20:23:15 +00:00
u16 Aid ,
2010-04-20 00:06:33 +00:00
u8 * TimLen ,
u8 * BcastFlag ,
u8 * DtimCount ,
u8 * DtimPeriod , u8 * MessageToMe ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
u8 ChannelSanity ( struct rt_rtmp_adapter * pAd , u8 channel ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
NDIS_802_11_NETWORK_TYPE NetworkTypeInUseSanity ( struct rt_bss_entry * pBss ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN MlmeDelBAReqSanity ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
void * Msg , unsigned long MsgLen ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN MlmeAddBAReqSanity ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
void * Msg , unsigned long MsgLen , u8 * pAddr2 ) ;
2009-12-11 20:23:14 +00:00
2010-04-20 00:06:33 +00:00
unsigned long MakeOutgoingFrame ( u8 * Buffer , unsigned long * Length , . . . ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void LfsrInit ( struct rt_rtmp_adapter * pAd , unsigned long Seed ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
u8 RandomByte ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicUpdateAutoFallBackTable ( struct rt_rtmp_adapter * pAd , u8 * pTxRate ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
void MlmePeriodicExec ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 , void * SystemSpecific3 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
void LinkDownExec ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 , void * SystemSpecific3 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void STAMlmePeriodicExec ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeAutoScan ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeAutoReconnectLastSSID ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
BOOLEAN MlmeValidateSSID ( u8 * pSsid , u8 SsidLen ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeCheckForRoaming ( struct rt_rtmp_adapter * pAd , unsigned long Now32 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN MlmeCheckForFastRoaming ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeDynamicTxRateSwitching ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeSetTxRate ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry , struct rt_rtmp_tx_rate_switch * pTxRate ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeSelectTxRateTable ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry ,
2010-04-20 00:06:33 +00:00
u8 * * ppTable ,
2009-12-11 20:23:15 +00:00
u8 * pTableSize , u8 * pInitTxRateIdx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeCalculateChannelQuality ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pMacEntry , unsigned long Now ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeCheckPsmChange ( struct rt_rtmp_adapter * pAd , unsigned long Now32 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeSetPsmBit ( struct rt_rtmp_adapter * pAd , u16 psm ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeSetTxPreamble ( struct rt_rtmp_adapter * pAd , u16 TxPreamble ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void UpdateBasicRateBitmap ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeUpdateTxRates ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
IN BOOLEAN bLinkUp , u8 apidx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void MlmeUpdateHtTxRates ( struct rt_rtmp_adapter * pAd , u8 apidx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPCheckRates ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
IN u8 SupRate [ ] , IN u8 * SupRateLen ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTMPCheckChannel ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 CentralChannel , u8 Channel ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTMPCheckHt ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 Wcid ,
2010-04-20 00:06:33 +00:00
struct rt_ht_capability_ie * pHtCapability ,
struct rt_add_ht_info_ie * pAddHtInfo ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
void StaQuickResponeForRateUpExec ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 ,
void * SystemSpecific3 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPUpdateMlmeRate ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
char RTMPMaxRssi ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
char Rssi0 , char Rssi1 , 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:16 +00:00
void AsicSetRxAnt ( struct rt_rtmp_adapter * pAd , u8 Ant ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTMPFilterCalibration ( struct rt_rtmp_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:16 +00:00
int set_eFuseGetFreeBlockCount_Proc ( struct rt_rtmp_adapter * pAd , char * arg ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int set_eFusedump_Proc ( struct rt_rtmp_adapter * pAd , char * arg ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void eFusePhysicalReadRegisters ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 Offset ,
2010-04-20 00:06:33 +00:00
u16 Length , u16 * pData ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RtmpEfuseSupportCheck ( struct rt_rtmp_adapter * pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void eFuseGetFreeBlockCount ( struct rt_rtmp_adapter * pAd , u32 * EfuseFreeBlock ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int eFuse_init ( struct rt_rtmp_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:16 +00:00
void RT30xxLoadRFNormalModeSetup ( struct rt_rtmp_adapter * pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void RT30xxLoadRFSleepModeSetup ( struct rt_rtmp_adapter * pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void RT30xxReverseRFSleepModeSetup ( struct rt_rtmp_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:16 +00:00
void NICInitRT3070RFRegisters ( struct rt_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:16 +00:00
void NICInitRT3090RFRegisters ( struct rt_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:16 +00:00
void RT30xxHaltAction ( struct rt_rtmp_adapter * pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void RT30xxSetRxAnt ( struct rt_rtmp_adapter * pAd , u8 Ant ) ;
2009-12-11 20:23:15 +00:00
# endif /* RT30xx // */
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void AsicEvaluateRxAnt ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
void AsicRxAntEvalTimeout ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 , void * SystemSpecific3 ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
void APSDPeriodicExec ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 , void * SystemSpecific3 ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTMPCheckEntryEnableAutoRateSwitch ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
u8 RTMPStaFixedTxMode ( struct rt_rtmp_adapter * pAd , struct rt_mac_table_entry * pEntry ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPUpdateLegacyTxSetting ( u8 fixed_tx_mode , struct rt_mac_table_entry * pEntry ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTMPAutoRateSwitchCheck ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int MlmeInit ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void MlmeHandler ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void MlmeHalt ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void MlmeResetRalinkCounters ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void BuildChannelList ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
u8 FirstChannel ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
u8 NextChannel ( struct rt_rtmp_adapter * pAd , u8 channel ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void ChangeToCellPowerLimit ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 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:16 +00:00
void RTMPInitTkipEngine ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pTKey ,
u8 KeyId ,
u8 * pTA ,
u8 * pMICKey ,
u8 * pTSC , unsigned long * pIV16 , unsigned long * pIV32 ) ;
2009-12-11 20:23:16 +00:00
void RTMPInitMICEngine ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pKey ,
u8 * pDA ,
u8 * pSA , u8 UserPriority , u8 * pMICKey ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTMPTkipCompareMICValue ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pSrc ,
u8 * pDA ,
u8 * pSA ,
u8 * pMICKey ,
u8 UserPriority , u32 Len ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPCalculateMICValue ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
void * pPacket ,
2009-12-11 20:23:15 +00:00
u8 * pEncap ,
2009-12-11 20:23:16 +00:00
struct rt_cipher_key * pKey , u8 apidx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPTkipAppendByte ( struct rt_tkip_key_info * pTkip , u8 uChar ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPTkipAppend ( struct rt_tkip_key_info * pTkip , u8 * pSrc , u32 nBytes ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPTkipGetMIC ( struct rt_tkip_key_info * pTkip ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTMPSoftDecryptTKIP ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pData ,
unsigned long DataByteCnt ,
2009-12-11 20:23:16 +00:00
u8 UserPriority , struct rt_cipher_key * pWpaKey ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTMPSoftDecryptAES ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pData ,
2009-12-11 20:23:16 +00:00
unsigned long DataByteCnt , struct rt_cipher_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:16 +00:00
int RT_CfgSetCountryRegion ( struct rt_rtmp_adapter * pAd , char * arg , int band ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RT_CfgSetWirelessMode ( struct rt_rtmp_adapter * pAd , char * arg ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RT_CfgSetShortSlot ( struct rt_rtmp_adapter * pAd , char * arg ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RT_CfgSetWepKey ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
char * keyString ,
2009-12-11 20:23:16 +00:00
struct rt_cipher_key * pSharedKey , int keyIdx ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RT_CfgSetWPAPSKKey ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
char * keyString ,
2010-04-20 00:06:33 +00:00
u8 * pHashStr ,
2009-12-11 20:23:15 +00:00
int hashStrLen , u8 * 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:16 +00:00
void RTMPWPARemoveAllKeys ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPSetPhyMode ( struct rt_rtmp_adapter * pAd , unsigned long phymode ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPUpdateHTIE ( struct rt_ht_capability * pRtHt ,
2010-04-20 00:06:33 +00:00
u8 * pMcsSet ,
struct rt_ht_capability_ie * pHtCapability ,
struct rt_add_ht_info_ie * pAddHtInfo ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPAddWcidAttributeEntry ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 BssIdx ,
u8 KeyIdx ,
2009-12-11 20:23:16 +00:00
u8 CipherAlg , struct rt_mac_table_entry * pEntry ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
char * GetEncryptType ( char enc ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
char * GetAuthMode ( char auth ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPSetHT ( struct rt_rtmp_adapter * pAd , struct rt_oid_set_ht_phymode * pHTPhyMode ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPSetIndividualHT ( struct rt_rtmp_adapter * pAd , u8 apidx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPSendWirelessEvent ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 Event_flag ,
u8 * pAddr , u8 BssIdx , char Rssi ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
char ConvertToRssi ( struct rt_rtmp_adapter * pAd , char Rssi , u8 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:16 +00:00
void RTMPToWirelessSta ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry ,
2009-12-11 20:23:15 +00:00
u8 * pHeader802_3 ,
u32 HdrLen ,
u8 * pData ,
u32 DataLen , IN BOOLEAN bClearFrame ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void WpaDerivePTK ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
u8 * PMK ,
u8 * ANonce ,
u8 * AA ,
u8 * SNonce ,
u8 * SA , u8 * output , u32 len ) ;
2009-12-11 20:23:14 +00:00
2010-04-20 00:06:33 +00:00
void GenRandom ( struct rt_rtmp_adapter * pAd , u8 * macAddr , u8 * random ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTMPCheckWPAframe ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry ,
2009-12-11 20:23:15 +00:00
u8 * pData ,
unsigned long DataByteCount , u8 FromWhichBSSID ) ;
2009-12-11 20:23:14 +00:00
2010-04-20 00:06:33 +00:00
void AES_GTK_KEY_UNWRAP ( u8 * key ,
u8 * plaintext ,
u32 c_len , u8 * ciphertext ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTMPParseEapolKeyData ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pKeyData ,
u8 KeyDataLen ,
u8 GroupKeyIndex ,
u8 MsgType ,
2009-12-11 20:23:16 +00:00
IN BOOLEAN bWPA2 , struct rt_mac_table_entry * pEntry ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void ConstructEapolMsg ( struct rt_mac_table_entry * pEntry ,
2009-12-11 20:23:15 +00:00
u8 GroupKeyWepStatus ,
u8 MsgType ,
u8 DefaultKeyIdx ,
2010-04-20 00:06:33 +00:00
u8 * KeyNonce ,
u8 * TxRSC ,
u8 * GTK ,
u8 * RSNIE ,
u8 RSNIE_Len , struct rt_eapol_packet * pMsg ) ;
2009-12-11 20:23:15 +00:00
2009-12-11 20:23:16 +00:00
int RTMPSoftDecryptBroadCastData ( struct rt_rtmp_adapter * pAd ,
struct rt_rx_blk * pRxBlk ,
2009-12-11 20:23:14 +00:00
IN NDIS_802_11_ENCRYPTION_STATUS
GroupCipher ,
2009-12-11 20:23:16 +00:00
struct rt_cipher_key * pShard_key ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPMakeRSNIE ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u32 AuthMode , u32 WepStatus , u8 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:16 +00:00
void RTMPGetTxTscFromAsic ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 apidx , u8 * pTxTsc ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void APInstallPairwiseKey ( struct rt_rtmp_adapter * pAd , struct rt_mac_table_entry * pEntry ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
u32 APValidateRSNIE ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry ,
2009-12-11 20:23:15 +00:00
u8 * pRsnIe , u8 rsnie_len ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void HandleCounterMeasure ( struct rt_rtmp_adapter * pAd , struct rt_mac_table_entry * pEntry ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void WPAStart4WayHS ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry , unsigned long TimeInterval ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void WPAStart2WayGroupHS ( struct rt_rtmp_adapter * pAd , struct rt_mac_table_entry * pEntry ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerPairMsg1Action ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerPairMsg2Action ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerPairMsg3Action ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerPairMsg4Action ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerGroupMsg1Action ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry , struct rt_mlme_queue_elem * Elem ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void PeerGroupMsg2Action ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry ,
2010-04-20 00:06:33 +00:00
void * Msg , u32 MsgLen ) ;
2009-12-11 20:23:14 +00:00
2010-04-20 00:06:33 +00:00
void WpaDeriveGTK ( u8 * PMK ,
u8 * GNonce ,
u8 * AA , u8 * output , u32 len ) ;
2009-12-11 20:23:14 +00:00
2010-04-20 00:06:33 +00:00
void AES_GTK_KEY_WRAP ( u8 * key ,
u8 * plaintext ,
u32 p_len , u8 * ciphertext ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
/*typedef void (*TIMER_FUNCTION)(unsigned long); */
2008-10-28 21:48:09 +00:00
/* timeout -- ms */
2010-04-20 00:06:33 +00:00
void RTMP_SetPeriodicTimer ( struct timer_list * pTimer ,
2009-12-11 20:23:14 +00:00
IN unsigned long timeout ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMP_OS_Init_Timer ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
struct timer_list * pTimer ,
2009-12-11 20:23:15 +00:00
IN TIMER_FUNCTION function , void * data ) ;
2008-10-28 21:48:09 +00:00
2010-04-20 00:06:33 +00:00
void RTMP_OS_Add_Timer ( struct timer_list * pTimer ,
2009-12-11 20:23:14 +00:00
IN unsigned long timeout ) ;
2008-10-28 21:48:09 +00:00
2010-04-20 00:06:33 +00:00
void RTMP_OS_Mod_Timer ( struct timer_list * pTimer ,
2009-12-11 20:23:14 +00:00
IN unsigned long timeout ) ;
2008-10-28 21:48:09 +00:00
2010-04-20 00:06:33 +00:00
void RTMP_OS_Del_Timer ( struct timer_list * pTimer ,
OUT BOOLEAN * pCancelled ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMP_OS_Release_Packet ( struct rt_rtmp_adapter * pAd , struct rt_queue_entry * pEntry ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
void RTMPusecDelay ( unsigned long usec ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int os_alloc_mem ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
u8 * * mem , unsigned long size ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int os_free_mem ( struct rt_rtmp_adapter * pAd , void * mem ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMP_AllocateSharedMemory ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
unsigned long Length ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN Cached ,
2010-04-20 00:06:33 +00:00
void * * VirtualAddress ,
2009-12-11 20:23:15 +00:00
dma_addr_t * PhysicalAddress ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPFreeTxRxRingMemory ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2010-04-20 00:06:33 +00:00
int AdapterBlockAllocateMemory ( void * handle , void * * ppAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMP_AllocateTxDescMemory ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u32 Index ,
unsigned long Length ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN Cached ,
2010-04-20 00:06:33 +00:00
void * * VirtualAddress ,
2009-12-11 20:23:15 +00:00
dma_addr_t * PhysicalAddress ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMP_AllocateFirstTxBuffer ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u32 Index ,
unsigned long Length ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN Cached ,
2010-04-20 00:06:33 +00:00
void * * VirtualAddress ,
2009-12-11 20:23:15 +00:00
dma_addr_t * PhysicalAddress ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMP_FreeFirstTxBuffer ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
unsigned long Length ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN Cached ,
2009-12-11 20:23:15 +00:00
void * VirtualAddress ,
2009-12-11 20:23:15 +00:00
dma_addr_t PhysicalAddress ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMP_AllocateMgmtDescMemory ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
unsigned long Length ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN Cached ,
2010-04-20 00:06:33 +00:00
void * * VirtualAddress ,
2009-12-11 20:23:15 +00:00
dma_addr_t * PhysicalAddress ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMP_AllocateRxDescMemory ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
unsigned long Length ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN Cached ,
2010-04-20 00:06:33 +00:00
void * * VirtualAddress ,
2009-12-11 20:23:15 +00:00
dma_addr_t * PhysicalAddress ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMP_FreeDescMemory ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
unsigned long Length ,
void * VirtualAddress ,
2009-12-11 20:23:15 +00:00
dma_addr_t PhysicalAddress ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void * RtmpOSNetPktAlloc ( struct rt_rtmp_adapter * pAd , IN int size ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void * RTMP_AllocateRxPacketBuffer ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
unsigned long Length ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN Cached ,
2010-04-20 00:06:33 +00:00
void * * VirtualAddress ,
OUT dma_addr_t * PhysicalAddress ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void * RTMP_AllocateTxPacketBuffer ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
unsigned long Length ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN Cached ,
2010-04-20 00:06:33 +00:00
void * * VirtualAddress ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void * RTMP_AllocateFragPacketBuffer ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
unsigned long Length ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
void RTMP_QueryPacketInfo ( void * pPacket ,
2009-12-11 20:23:16 +00:00
struct rt_packet_info * pPacketInfo ,
2010-04-20 00:06:33 +00:00
u8 * * pSrcBufVA , u32 * pSrcBufLen ) ;
2009-12-11 20:23:14 +00:00
2010-04-20 00:06:33 +00:00
void RTMP_QueryNextPacketInfo ( void * * ppPacket ,
2009-12-11 20:23:16 +00:00
struct rt_packet_info * pPacketInfo ,
2010-04-20 00:06:33 +00:00
u8 * * pSrcBufVA , u32 * pSrcBufLen ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTMP_FillTxBlkInfo ( struct rt_rtmp_adapter * pAd , struct rt_tx_blk * pTxBlk ) ;
2009-12-11 20:23:14 +00:00
2010-04-20 00:06:33 +00:00
struct rt_rtmp_sg_list * rt_get_sg_list_from_packet ( void * pPacket ,
struct rt_rtmp_sg_list * sg ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void announce_802_3_packet ( struct rt_rtmp_adapter * pAd , void * pPacket ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
u32 BA_Reorder_AMSDU_Annnounce ( struct rt_rtmp_adapter * pAd , void * pPacket ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
struct net_device * get_netdev_from_bssid ( struct rt_rtmp_adapter * pAd , u8 FromWhichBSSID ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void * duplicate_pkt ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pHeader802_3 ,
u32 HdrLen ,
u8 * pData ,
unsigned long DataSize , u8 FromWhichBSSID ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void * duplicate_pkt_with_TKIP_MIC ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
void * pOldPkt ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void ba_flush_reordering_timeout_mpdus ( struct rt_rtmp_adapter * pAd ,
struct rt_ba_rec_entry * pBAEntry ,
2009-12-11 20:23:15 +00:00
unsigned long Now32 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void BAOriSessionSetUp ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry ,
2009-12-11 20:23:15 +00:00
u8 TID ,
u16 TimeOut ,
unsigned long DelayTime , IN BOOLEAN isForced ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void BASessionTearDownALL ( struct rt_rtmp_adapter * pAd , u8 Wcid ) ;
2009-12-11 20:23:14 +00:00
BOOLEAN OS_Need_Clone_Packet ( void ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void build_tx_packet ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
void * pPacket ,
2009-12-11 20:23:15 +00:00
u8 * pFrame , unsigned long FrameLen ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void BAOriSessionTearDown ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 Wcid ,
u8 TID ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN bPassive , IN BOOLEAN bForceSend ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void BARecSessionTearDown ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 Wcid , u8 TID , IN BOOLEAN bPassive ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN ba_reordering_resource_init ( struct rt_rtmp_adapter * pAd , int num ) ;
void ba_reordering_resource_release ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
char * rstrtok ( char * s , IN const char * 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:16 +00:00
int SetCommonHT ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int WpaCheckEapCode ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pFrame , u16 FrameLen , u16 OffSet ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void WpaSendMicFailureToWpaSupplicant ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN bUnicast ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int wext_notify_event_assoc ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN STARxDoneInterruptHandle ( struct rt_rtmp_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:16 +00:00
void Indicate_AMPDU_Packet ( struct rt_rtmp_adapter * pAd ,
struct rt_rx_blk * pRxBlk , u8 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:16 +00:00
void Indicate_AMSDU_Packet ( struct rt_rtmp_adapter * pAd ,
struct rt_rx_blk * pRxBlk , u8 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:16 +00:00
void Indicate_Legacy_Packet ( struct rt_rtmp_adapter * pAd ,
struct rt_rx_blk * pRxBlk , u8 FromWhichBSSID ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void Indicate_EAPOL_Packet ( struct rt_rtmp_adapter * pAd ,
struct rt_rx_blk * pRxBlk , u8 FromWhichBSSID ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void update_os_packet_info ( struct rt_rtmp_adapter * pAd ,
struct rt_rx_blk * pRxBlk , u8 FromWhichBSSID ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void wlan_802_11_to_802_3_packet ( struct rt_rtmp_adapter * pAd ,
struct rt_rx_blk * pRxBlk ,
2009-12-11 20:23:15 +00:00
u8 * pHeader802_3 ,
u8 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) \
{ \
2009-12-11 20:23:15 +00:00
u8 * _pRemovedLLCSNAP = NULL , * _pDA , * _pSA ; \
2008-10-28 21:48:09 +00:00
\
2010-04-20 00:06:33 +00:00
if ( RX_BLK_TEST_FLAG ( _pRxBlk , fRX_MESH ) ) { \
2008-10-28 21:48:09 +00:00
_pDA = _pRxBlk - > pHeader - > Addr3 ; \
2009-12-11 20:23:16 +00:00
_pSA = ( u8 * ) _pRxBlk - > pHeader + sizeof ( struct rt_header_802_11 ) ; \
2008-10-28 21:48:09 +00:00
} \
2010-04-20 00:06:33 +00:00
else { \
if ( RX_BLK_TEST_FLAG ( _pRxBlk , fRX_INFRA ) ) { \
2008-10-28 21:48:09 +00:00
_pDA = _pRxBlk - > pHeader - > Addr1 ; \
if ( RX_BLK_TEST_FLAG ( _pRxBlk , fRX_DLS ) ) \
_pSA = _pRxBlk - > pHeader - > Addr2 ; \
else \
_pSA = _pRxBlk - > pHeader - > Addr3 ; \
} \
2010-04-20 00:06:33 +00:00
else { \
2008-10-28 21:48:09 +00:00
_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:16 +00:00
void Sta_Announce_or_Forward_802_3_Packet ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
void * pPacket ,
2009-12-11 20:23:15 +00:00
u8 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:16 +00:00
void * DuplicatePacket ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
void * pPacket , u8 FromWhichBSSID ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void * ClonePacket ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
void * pPacket ,
2009-12-11 20:23:15 +00:00
u8 * pData , unsigned long 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:16 +00:00
void CmmRxnonRalinkFrameIndicate ( struct rt_rtmp_adapter * pAd ,
struct rt_rx_blk * pRxBlk , u8 FromWhichBSSID ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void CmmRxRalinkFrameIndicate ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry ,
struct rt_rx_blk * pRxBlk , u8 FromWhichBSSID ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void Update_Rssi_Sample ( struct rt_rtmp_adapter * pAd ,
struct rt_rssi_sample * pRssi , struct rt_rxwi * pRxWI ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void * GetPacketFromRxRing ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:14 +00:00
OUT PRT28XX_RXD_STRUC pSaveRxD ,
2010-04-20 00:06:33 +00:00
OUT BOOLEAN * pbReschedule ,
IN u32 * pRxPending ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void * RTMPDeFragmentDataFrame ( struct rt_rtmp_adapter * pAd , struct rt_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 */
2009-12-11 20:23:16 +00:00
struct rt_p80211item_uint32 {
2009-12-11 20:23:15 +00:00
u32 did ;
u16 status ;
u16 len ;
u32 data ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
struct rt_wlan_ng_prism2_header {
2009-12-11 20:23:15 +00:00
u32 msgcode ;
u32 msglen ;
2008-10-28 21:48:09 +00:00
# define WLAN_DEVNAMELEN_MAX 16
2009-12-11 20:23:15 +00:00
u8 devname [ WLAN_DEVNAMELEN_MAX ] ;
2009-12-11 20:23:16 +00:00
struct rt_p80211item_uint32 hosttime ;
struct rt_p80211item_uint32 mactime ;
struct rt_p80211item_uint32 channel ;
struct rt_p80211item_uint32 rssi ;
struct rt_p80211item_uint32 sq ;
struct rt_p80211item_uint32 signal ;
struct rt_p80211item_uint32 noise ;
struct rt_p80211item_uint32 rate ;
struct rt_p80211item_uint32 istx ;
struct rt_p80211item_uint32 frmlen ;
} ;
2008-10-28 21:48:09 +00:00
/* The radio capture header precedes the 802.11 header. */
2009-12-11 20:23:16 +00:00
struct PACKED rt_ieee80211_radiotap_header {
2009-12-11 20:23:15 +00:00
u8 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:15 +00:00
u8 it_pad ;
u16 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:15 +00:00
u32 it_present ; /* A bitmap telling which
2009-12-11 20:23:14 +00:00
* fields are present . Set bit 31
* ( 0x80000000 ) to extend the
* bitmap by another 32 bits .
* Additional extensions are made
* by setting bit 31.
*/
2009-12-11 20:23:16 +00:00
} ;
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 )
2009-12-11 20:23:16 +00:00
struct rt_wlan_radiotap_header {
struct rt_ieee80211_radiotap_header wt_ihdr ;
2009-12-11 20:23:15 +00:00
long long wt_tsft ;
u8 wt_flags ;
u8 wt_rate ;
2009-12-11 20:23:16 +00:00
} ;
2008-10-28 21:48:09 +00:00
/* Definition from madwifi */
2009-12-11 20:23:16 +00:00
void send_monitor_packets ( struct rt_rtmp_adapter * pAd , struct rt_rx_blk * pRxBlk ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPSetDesiredRates ( struct rt_rtmp_adapter * pAdapter , long Rates ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int Set_FixedTxMode_Proc ( struct rt_rtmp_adapter * pAd , char * 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:16 +00:00
void RT28XXDMADisable ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RT28XXDMAEnable ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RT28xx_UpdateBeaconToAsic ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
int apidx ,
unsigned long BeaconLen , unsigned long UpdatePos ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int rt28xx_init ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
char * pDefaultMac , char * pHostName ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
int RtmpNetTaskInit ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RtmpNetTaskExit ( struct rt_rtmp_adapter * pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RtmpMgmtTaskInit ( struct rt_rtmp_adapter * pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void RtmpMgmtTaskExit ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
void tbtt_tasklet ( unsigned long data ) ;
2009-12-11 20:23:16 +00:00
struct net_device * RtmpPhyNetDevInit ( struct rt_rtmp_adapter * pAd ,
struct rt_rtmp_os_netdev_op_hook * pNetHook ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RtmpPhyNetDevExit ( struct rt_rtmp_adapter * pAd , struct net_device * net_dev ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RtmpRaDevCtrlInit ( struct rt_rtmp_adapter * pAd , IN RTMP_INF_TYPE infType ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RtmpRaDevCtrlExit ( struct rt_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:16 +00:00
u16 RtmpPCI_WriteTxResource ( struct rt_rtmp_adapter * pAd ,
struct rt_tx_blk * pTxBlk ,
2010-04-20 00:06:33 +00:00
IN BOOLEAN bIsLast , u16 * FreeNumber ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
u16 RtmpPCI_WriteSingleTxResource ( struct rt_rtmp_adapter * pAd ,
struct rt_tx_blk * pTxBlk ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN bIsLast ,
2010-04-20 00:06:33 +00:00
u16 * FreeNumber ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
u16 RtmpPCI_WriteMultiTxResource ( struct rt_rtmp_adapter * pAd ,
struct rt_tx_blk * pTxBlk ,
2010-04-20 00:06:33 +00:00
u8 frameNum , u16 * FreeNumber ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
u16 RtmpPCI_WriteFragTxResource ( struct rt_rtmp_adapter * pAd ,
struct rt_tx_blk * pTxBlk ,
2010-04-20 00:06:33 +00:00
u8 fragNum , u16 * FreeNumber ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
u16 RtmpPCI_WriteSubTxResource ( struct rt_rtmp_adapter * pAd ,
struct rt_tx_blk * pTxBlk ,
2010-04-20 00:06:33 +00:00
IN BOOLEAN bIsLast , u16 * FreeNumber ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RtmpPCI_FinalWriteTxResource ( struct rt_rtmp_adapter * pAd ,
struct rt_tx_blk * pTxBlk ,
2009-12-11 20:23:15 +00:00
u16 totalMPDUSize ,
u16 FirstTxIdx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RtmpPCIDataLastTxIdx ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 QueIdx , u16 LastTxIdx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RtmpPCIDataKickOut ( struct rt_rtmp_adapter * pAd ,
struct rt_tx_blk * pTxBlk , u8 QueIdx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RtmpPCIMgmtKickOut ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 QueIdx ,
2009-12-11 20:23:15 +00:00
void * pPacket ,
2009-12-11 20:23:15 +00:00
u8 * pSrcBufVA , u32 SrcBufLen ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTMPCheckRxError ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
struct rt_header_802_11 * pHeader ,
struct rt_rxwi * pRxWI , IN PRT28XX_RXD_STRUC pRxD ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RT28xxPciAsicRadioOff ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 Level , u16 TbttNumToNextWakeUp ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RT28xxPciAsicRadioOn ( struct rt_rtmp_adapter * pAd , u8 Level ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPInitPCIeLinkCtrlValue ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPFindHostPCIDev ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPPCIeLinkCtrlValueRestore ( struct rt_rtmp_adapter * pAd , u8 Level ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPPCIeLinkCtrlSetting ( struct rt_rtmp_adapter * pAd , u16 Max ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTMPrt3xSetPCIePowerLinkCtrl ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
void PsPollWakeExec ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 , void * SystemSpecific3 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
void RadioOnExec ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 , void * SystemSpecific3 ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RT28xxPciStaAsicForceWakeup ( struct rt_rtmp_adapter * pAd , IN BOOLEAN bFromTx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RT28xxPciStaAsicSleepThenAutoWakeup ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 TbttNumToNextWakeUp ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RT28xxPciMlmeRadioOn ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RT28xxPciMlmeRadioOFF ( struct rt_rtmp_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:16 +00:00
void RTUSBInitTxDesc ( struct rt_rtmp_adapter * pAd ,
struct rt_tx_context * pTxContext ,
2009-12-11 20:23:15 +00:00
u8 BulkOutPipeId , IN usb_complete_t Func ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBInitHTTxDesc ( struct rt_rtmp_adapter * pAd ,
struct rt_ht_tx_context * pTxContext ,
2009-12-11 20:23:15 +00:00
u8 BulkOutPipeId ,
unsigned long BulkOutSize , IN usb_complete_t Func ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBInitRxDesc ( struct rt_rtmp_adapter * pAd , struct rt_rx_context * pRxContext ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBCleanUpDataBulkOutQueue ( struct rt_rtmp_adapter * pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBCancelPendingBulkOutIRP ( struct rt_rtmp_adapter * pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBBulkOutDataPacket ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 BulkOutPipeId , u8 Index ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBBulkOutNullFrame ( struct rt_rtmp_adapter * pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBBulkOutRTSFrame ( struct rt_rtmp_adapter * pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBCancelPendingBulkInIRP ( struct rt_rtmp_adapter * pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBCancelPendingIRPs ( struct rt_rtmp_adapter * pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBBulkOutMLMEPacket ( struct rt_rtmp_adapter * pAd , u8 Index ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBBulkOutPsPoll ( struct rt_rtmp_adapter * pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBCleanUpMLMEBulkOutQueue ( struct rt_rtmp_adapter * pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBKickBulkOut ( struct rt_rtmp_adapter * pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBBulkReceive ( struct rt_rtmp_adapter * pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void DoBulkIn ( struct rt_rtmp_adapter * pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBInitRxDesc ( struct rt_rtmp_adapter * pAd , struct rt_rx_context * pRxContext ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:15 +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:16 +00:00
int RTUSBMultiRead ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 Offset , u8 * pData , u16 length ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBMultiWrite ( struct rt_rtmp_adapter * pAd ,
2010-01-18 02:50:24 +00:00
u16 Offset , const u8 * pData , u16 length ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBMultiWrite_OneByte ( struct rt_rtmp_adapter * pAd ,
2010-01-18 02:50:24 +00:00
u16 Offset , const u8 * pData ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBReadBBPRegister ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 Id , u8 * pValue ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBWriteBBPRegister ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 Id , u8 Value ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBWriteRFRegister ( struct rt_rtmp_adapter * pAd , u32 Value ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSB_VendorRequest ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u32 TransferFlags ,
u8 ReservedBits ,
u8 Request ,
u16 Value ,
u16 Index ,
void * TransferBuffer ,
u32 TransferBufferLength ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBReadEEPROM ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 Offset , u8 * pData , u16 length ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBWriteEEPROM ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 Offset , u8 * pData , u16 length ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBPutToSleep ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBWakeUp ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBInitializeCmdQ ( struct rt_cmdq * cmdq ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBEnqueueCmdFromNdis ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:14 +00:00
IN NDIS_OID Oid ,
IN BOOLEAN SetInformation ,
2009-12-11 20:23:15 +00:00
void * pInformationBuffer ,
u32 InformationBufferLength ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBEnqueueInternalCmd ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:14 +00:00
IN NDIS_OID Oid ,
2009-12-11 20:23:15 +00:00
void * pInformationBuffer ,
u32 InformationBufferLength ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBDequeueCmd ( struct rt_cmdq * cmdq , struct rt_cmdqelmt * * pcmdqelmt ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
int RTUSBCmdThread ( IN void * Context ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBBssBeaconExit ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBBssBeaconStop ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBBssBeaconStart ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBBssBeaconInit ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RTUSBWatchDog ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBWriteMACRegister ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 Offset , u32 Value ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBReadMACRegister ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 Offset , u32 * pValue ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBSingleWrite ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 Offset , u16 Value ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBFirmwareWrite ( struct rt_rtmp_adapter * pAd ,
2010-01-18 02:50:24 +00:00
const u8 * pFwImage , unsigned long FwLen ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBVenderReset ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBSetHardWareRegister ( struct rt_rtmp_adapter * pAdapter , void * pBuf ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBQueryHardWareRegister ( struct rt_rtmp_adapter * pAdapter ,
2009-12-11 20:23:15 +00:00
void * pBuf ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void CMDHandler ( struct rt_rtmp_adapter * pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RTUSBWriteHWMACAddress ( struct rt_rtmp_adapter * pAdapter ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void MacTableInitialize ( struct rt_rtmp_adapter * pAd ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void MlmeSetPsm ( struct rt_rtmp_adapter * pAd , u16 psm ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RTMPWPAAddKeyProc ( struct rt_rtmp_adapter * pAd , void * pBuf ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicRxAntEvalAction ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void append_pkt ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 * pHeader802_3 ,
u32 HdrLen ,
u8 * pData ,
2010-04-20 00:06:33 +00:00
unsigned long DataSize , void * * ppPacket ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
u32 deaggregate_AMSDU_announce ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
void * pPacket ,
2009-12-11 20:23:15 +00:00
u8 * pData , unsigned long DataSize ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
int RTMPCheckRxError ( struct rt_rtmp_adapter * pAd ,
2010-04-20 00:06:33 +00:00
struct rt_header_802_11 * pHeader ,
struct rt_rxwi * pRxWI ,
2009-12-11 20:23:14 +00:00
IN PRT28XX_RXD_STRUC pRxINFO ) ;
2009-12-11 20:23:16 +00:00
void RTUSBMlmeHardTransmit ( struct rt_rtmp_adapter * pAd , struct rt_mgmt * pMgmt ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:15 +00:00
int MlmeThread ( void * 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:16 +00:00
int RTUSBFreeDescriptorRequest ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 BulkOutPipeId ,
u32 NumberRequired ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RTUSBNeedQueueBackForAgg ( struct rt_rtmp_adapter * pAd , u8 BulkOutPipeId ) ;
2009-04-26 14:06:25 +00:00
2009-12-11 20:23:16 +00:00
void RTMPWriteTxInfo ( struct rt_rtmp_adapter * pAd ,
struct rt_txinfo * pTxInfo ,
2009-12-11 20:23:15 +00:00
u16 USBDMApktLen ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN bWiv ,
2009-12-11 20:23:15 +00:00
u8 QueueSel , u8 NextValid , u8 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:16 +00:00
u16 RtmpUSB_WriteSubTxResource ( struct rt_rtmp_adapter * pAd ,
struct rt_tx_blk * pTxBlk ,
2010-04-20 00:06:33 +00:00
IN BOOLEAN bIsLast , u16 * FreeNumber ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
u16 RtmpUSB_WriteSingleTxResource ( struct rt_rtmp_adapter * pAd ,
struct rt_tx_blk * pTxBlk ,
2009-12-11 20:23:14 +00:00
IN BOOLEAN bIsLast ,
2010-04-20 00:06:33 +00:00
u16 * FreeNumber ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
u16 RtmpUSB_WriteFragTxResource ( struct rt_rtmp_adapter * pAd ,
struct rt_tx_blk * pTxBlk ,
2010-04-20 00:06:33 +00:00
u8 fragNum , u16 * FreeNumber ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
u16 RtmpUSB_WriteMultiTxResource ( struct rt_rtmp_adapter * pAd ,
struct rt_tx_blk * pTxBlk ,
2010-04-20 00:06:33 +00:00
u8 frameNum , u16 * FreeNumber ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RtmpUSB_FinalWriteTxResource ( struct rt_rtmp_adapter * pAd ,
struct rt_tx_blk * pTxBlk ,
2009-12-11 20:23:15 +00:00
u16 totalMPDUSize , u16 TxIdx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RtmpUSBDataLastTxIdx ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 QueIdx , u16 TxIdx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RtmpUSBDataKickOut ( struct rt_rtmp_adapter * pAd ,
struct rt_tx_blk * pTxBlk , u8 QueIdx ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RtmpUSBMgmtKickOut ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 QueIdx ,
2009-12-11 20:23:15 +00:00
void * pPacket ,
2009-12-11 20:23:15 +00:00
u8 * pSrcBufVA , u32 SrcBufLen ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void RtmpUSBNullFrameKickOut ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u8 QueIdx ,
2010-04-20 00:06:33 +00:00
u8 * pNullFrame , u32 frameLen ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
void RtmpUsbStaAsicForceWakeupTimeout ( void * SystemSpecific1 ,
void * FunctionContext ,
void * SystemSpecific2 ,
void * SystemSpecific3 ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void RT28xxUsbStaAsicForceWakeup ( struct rt_rtmp_adapter * pAd , IN BOOLEAN bFromTx ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RT28xxUsbStaAsicSleepThenAutoWakeup ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u16 TbttNumToNextWakeUp ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RT28xxUsbMlmeRadioOn ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void RT28xxUsbMlmeRadioOFF ( struct rt_rtmp_adapter * pAd ) ;
2009-12-11 20:23:15 +00:00
# endif /* RTMP_MAC_USB // */
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicTurnOffRFClk ( struct rt_rtmp_adapter * pAd , u8 Channel ) ;
2009-12-11 20:23:14 +00:00
2009-12-11 20:23:16 +00:00
void AsicTurnOnRFClk ( struct rt_rtmp_adapter * pAd , u8 Channel ) ;
2009-09-22 18:44:07 +00:00
# ifdef RTMP_TIMER_TASK_SUPPORT
2009-12-11 20:23:15 +00:00
int RtmpTimerQThread ( IN void * Context ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
struct rt_rtmp_timer_task_entry * RtmpTimerQInsert ( struct rt_rtmp_adapter * pAd ,
struct rt_ralink_timer * pTimer ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN RtmpTimerQRemove ( struct rt_rtmp_adapter * pAd ,
struct rt_ralink_timer * pTimer ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void RtmpTimerQExit ( struct rt_rtmp_adapter * pAd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void RtmpTimerQInit ( struct rt_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:16 +00:00
void AsicStaBbpTuning ( struct rt_rtmp_adapter * pAd ) ;
2009-02-23 15:01:07 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN StaAddMacTableEntry ( struct rt_rtmp_adapter * pAd ,
struct rt_mac_table_entry * pEntry ,
2009-12-11 20:23:15 +00:00
u8 MaxSupportedRateIn500Kbps ,
2010-04-20 00:06:33 +00:00
struct rt_ht_capability_ie * pHtCapability ,
2009-12-11 20:23:15 +00:00
u8 HtCapabilityLen ,
2010-04-20 00:06:33 +00:00
struct rt_add_ht_info_ie * pAddHtInfo ,
2009-12-11 20:23:15 +00:00
u8 AddHtInfoLen , u16 CapabilityInfo ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
BOOLEAN AUTH_ReqSend ( struct rt_rtmp_adapter * pAd ,
struct rt_mlme_queue_elem * pElem ,
struct rt_ralink_timer * pAuthTimer ,
2009-12-11 20:23:15 +00:00
char * pSMName ,
u16 SeqNo ,
u8 * pNewElement , unsigned long ElementLen ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
void RTMP_IndicateMediaState ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void ReSyncBeaconTime ( struct rt_rtmp_adapter * pAd ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:16 +00:00
void RTMPSetAGCInitValue ( struct rt_rtmp_adapter * pAd , u8 BandWidth ) ;
2008-10-28 21:48:09 +00:00
2009-12-11 20:23:15 +00:00
int rt28xx_close ( struct net_device * dev ) ;
int rt28xx_open ( struct net_device * dev ) ;
2008-10-28 21:48:09 +00:00
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
2009-12-11 20:23:16 +00:00
__inline int VIRTUAL_IF_UP ( struct rt_rtmp_adapter * pAd )
2008-10-28 21:48:09 +00:00
{
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 ;
}
2009-12-11 20:23:16 +00:00
__inline void VIRTUAL_IF_DOWN ( struct rt_rtmp_adapter * pAd )
2008-10-28 21:48:09 +00:00
{
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:16 +00:00
int RtmpOSWrielessEventSend ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
u32 eventType ,
int flags ,
u8 * pSrcMac ,
u8 * pData , u32 dataLen ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
int RtmpOSNetDevAddrSet ( struct net_device * pNetDev , u8 * pMacAddr ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
int RtmpOSNetDevAttach ( struct net_device * pNetDev ,
2009-12-11 20:23:16 +00:00
struct rt_rtmp_os_netdev_op_hook * pDevOpHook ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
void RtmpOSNetDevClose ( struct net_device * pNetDev ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
void RtmpOSNetDevDetach ( struct net_device * pNetDev ) ;
2009-09-22 18:44:07 +00:00
2010-04-20 00:06:33 +00:00
int RtmpOSNetDevAlloc ( struct net_device * * pNewNetDev , u32 privDataSize ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
void RtmpOSNetDevFree ( struct net_device * pNetDev ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
struct net_device * RtmpOSNetDevGetByName ( struct net_device * pNetDev , char * pDevName ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
void RtmpOSNetDeviceRefPut ( struct net_device * pNetDev ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
struct net_device * RtmpOSNetDevCreate ( struct rt_rtmp_adapter * pAd ,
2009-12-11 20:23:15 +00:00
int devType ,
int devNum ,
int privMemSize , char * pNamePrefix ) ;
2009-09-22 18:44:07 +00:00
/*
Task operation related function prototypes
*/
2009-12-11 20:23:16 +00:00
void RtmpOSTaskCustomize ( struct rt_rtmp_os_task * pTask ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RtmpOSTaskNotifyToExit ( struct rt_rtmp_os_task * pTask ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RtmpOSTaskKill ( struct rt_rtmp_os_task * pTask ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RtmpOSTaskInit ( struct rt_rtmp_os_task * pTask ,
2009-12-11 20:23:15 +00:00
char * pTaskName , void * pPriv ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:16 +00:00
int RtmpOSTaskAttach ( struct rt_rtmp_os_task * pTask ,
2009-12-11 20:23:14 +00:00
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:15 +00:00
struct file * RtmpOSFileOpen ( IN char * pPath , IN int flag , IN int mode ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
int RtmpOSFileClose ( struct file * osfd ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
void RtmpOSFileSeek ( struct file * osfd , IN int offset ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
int RtmpOSFileRead ( struct file * osfd , IN char * pDataPtr , IN int readLen ) ;
2009-09-22 18:44:07 +00:00
2009-12-11 20:23:15 +00:00
int RtmpOSFileWrite ( struct file * 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__ */