]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/staging/rt2860/rtmp.h
Staging: rtxxx0: remove superfluous function prototypes
[mv-sheeva.git] / drivers / staging / rt2860 / rtmp.h
index 9bb41e241299195f7d60e7b53f0c25a7ac0ad809..5da6f93a3f54642d4a33e9fb40f449acdf10a75b 100644 (file)
 #ifndef __RTMP_H__
 #define __RTMP_H__
 
-#include "link_list.h"
 #include "spectrum_def.h"
 
 #include "aironet.h"
 
-//#define DBG_DIAGNOSE         1
-
-#if defined(CONFIG_AP_SUPPORT)
-#define IF_DEV_CONFIG_OPMODE_ON_AP(_pAd)       if(_pAd->OpMode == OPMODE_AP)
-#define IF_DEV_CONFIG_OPMODE_ON_STA(_pAd)      if(_pAd->OpMode == OPMODE_STA)
-#else
-#define IF_DEV_CONFIG_OPMODE_ON_AP(_pAd)
-#define IF_DEV_CONFIG_OPMODE_ON_STA(_pAd)
-#endif
-
 #define VIRTUAL_IF_INC(__pAd) ((__pAd)->VirtualIfCnt++)
 #define VIRTUAL_IF_DEC(__pAd) ((__pAd)->VirtualIfCnt--)
 #define VIRTUAL_IF_NUM(__pAd) ((__pAd)->VirtualIfCnt)
 
+#ifdef RT2870
+////////////////////////////////////////////////////////////////////////////
+// The TX_BUFFER structure forms the transmitted USB packet to the device
+////////////////////////////////////////////////////////////////////////////
+typedef struct __TX_BUFFER{
+       union   {
+               UCHAR                   WirelessPacket[TX_BUFFER_NORMSIZE];
+               HEADER_802_11   NullFrame;
+               PSPOLL_FRAME    PsPollPacket;
+               RTS_FRAME               RTSFrame;
+       }field;
+       UCHAR                   Aggregation[4];  //Buffer for save Aggregation size.
+} TX_BUFFER, *PTX_BUFFER;
+
+typedef struct __HTTX_BUFFER{
+       union   {
+               UCHAR                   WirelessPacket[MAX_TXBULK_SIZE];
+               HEADER_802_11   NullFrame;
+               PSPOLL_FRAME    PsPollPacket;
+               RTS_FRAME               RTSFrame;
+       }field;
+       UCHAR                   Aggregation[4];  //Buffer for save Aggregation size.
+} HTTX_BUFFER, *PHTTX_BUFFER;
+
+
+// used to track driver-generated write irps
+typedef struct _TX_CONTEXT
+{
+       PVOID                   pAd;            //Initialized in MiniportInitialize
+       PURB                    pUrb;                   //Initialized in MiniportInitialize
+       PIRP                    pIrp;                   //used to cancel pending bulk out.
+                                                                       //Initialized in MiniportInitialize
+       PTX_BUFFER              TransferBuffer; //Initialized in MiniportInitialize
+       ULONG                   BulkOutSize;
+       UCHAR                   BulkOutPipeId;
+       UCHAR                   SelfIdx;
+       BOOLEAN                 InUse;
+       BOOLEAN                 bWaitingBulkOut; // at least one packet is in this TxContext, ready for making IRP anytime.
+       BOOLEAN                 bFullForBulkOut; // all tx buffer are full , so waiting for tx bulkout.
+       BOOLEAN                 IRPPending;
+       BOOLEAN                 LastOne;
+       BOOLEAN                 bAggregatible;
+       UCHAR                   Header_802_3[LENGTH_802_3];
+       UCHAR                   Rsv[2];
+       ULONG                   DataOffset;
+       UINT                    TxRate;
+       dma_addr_t              data_dma;               // urb dma on linux
+
+}      TX_CONTEXT, *PTX_CONTEXT, **PPTX_CONTEXT;
+
+
+// used to track driver-generated write irps
+typedef struct _HT_TX_CONTEXT
+{
+       PVOID                   pAd;            //Initialized in MiniportInitialize
+       PURB                    pUrb;                   //Initialized in MiniportInitialize
+       PIRP                    pIrp;                   //used to cancel pending bulk out.
+                                                                       //Initialized in MiniportInitialize
+       PHTTX_BUFFER    TransferBuffer; //Initialized in MiniportInitialize
+       ULONG                   BulkOutSize;    // Indicate the total bulk-out size in bytes in one bulk-transmission
+       UCHAR                   BulkOutPipeId;
+       BOOLEAN                 IRPPending;
+       BOOLEAN                 LastOne;
+       BOOLEAN                 bCurWriting;
+       BOOLEAN                 bRingEmpty;
+       BOOLEAN                 bCopySavePad;
+       UCHAR                   SavedPad[8];
+       UCHAR                   Header_802_3[LENGTH_802_3];
+       ULONG                   CurWritePosition;               // Indicate the buffer offset which packet will be inserted start from.
+       ULONG                   CurWriteRealPos;                // Indicate the buffer offset which packet now are writing to.
+       ULONG                   NextBulkOutPosition;    // Indicate the buffer start offset of a bulk-transmission
+       ULONG                   ENextBulkOutPosition;   // Indicate the buffer end offset of a bulk-transmission
+       UINT                    TxRate;
+       dma_addr_t              data_dma;               // urb dma on linux
+}      HT_TX_CONTEXT, *PHT_TX_CONTEXT, **PPHT_TX_CONTEXT;
+
+
+//
+// Structure to keep track of receive packets and buffers to indicate
+// receive data to the protocol.
+//
+typedef struct _RX_CONTEXT
+{
+       PUCHAR                          TransferBuffer;
+       PVOID                           pAd;
+       PIRP                            pIrp;//used to cancel pending bulk in.
+       PURB                            pUrb;
+       //These 2 Boolean shouldn't both be 1 at the same time.
+       ULONG                           BulkInOffset;   // number of packets waiting for reordering .
+       BOOLEAN                         bRxHandling;    // Notify this packet is being process now.
+       BOOLEAN                         InUse;                  // USB Hardware Occupied. Wait for USB HW to put packet.
+       BOOLEAN                         Readable;               // Receive Complete back. OK for driver to indicate receiving packet.
+       BOOLEAN                         IRPPending;             // TODO: To be removed
+       atomic_t                        IrpLock;
+       NDIS_SPIN_LOCK          RxContextLock;
+       dma_addr_t                      data_dma;               // urb dma on linux
+}      RX_CONTEXT, *PRX_CONTEXT;
+#endif // RT2870 //
 
 
 //
@@ -133,11 +220,9 @@ extern UCHAR  SsidIe;
 extern UCHAR  SupRateIe;
 extern UCHAR  ExtRateIe;
 
-#ifdef DOT11_N_SUPPORT
 extern UCHAR  HtCapIe;
 extern UCHAR  AddHtInfoIe;
 extern UCHAR  NewExtChanIe;
-#endif // DOT11_N_SUPPORT //
 
 extern UCHAR  ErpIe;
 extern UCHAR  DsIe;
@@ -146,9 +231,15 @@ extern UCHAR  WpaIe;
 extern UCHAR  Wpa2Ie;
 extern UCHAR  IbssIe;
 extern UCHAR  Ccx2Ie;
+#ifdef RT30xx
+extern UCHAR  WapiIe;
+#endif
 
 extern UCHAR  WPA_OUI[];
 extern UCHAR  RSN_OUI[];
+#ifdef RT30xx
+extern UCHAR  WAPI_OUI[];
+#endif
 extern UCHAR  WME_INFO_ELEM[];
 extern UCHAR  WME_PARM_ELEM[];
 extern UCHAR  Ccx2QosInfo[];
@@ -162,7 +253,6 @@ extern UCHAR  RateSwitchTable11B[];
 extern UCHAR  RateSwitchTable11G[];
 extern UCHAR  RateSwitchTable11BG[];
 
-#ifdef DOT11_N_SUPPORT
 extern UCHAR  RateSwitchTable11BGN1S[];
 extern UCHAR  RateSwitchTable11BGN2S[];
 extern UCHAR  RateSwitchTable11BGN2SForABand[];
@@ -171,11 +261,9 @@ extern UCHAR  RateSwitchTable11N2S[];
 extern UCHAR  RateSwitchTable11N2SForABand[];
 
 extern UCHAR  PRE_N_HT_OUI[];
-#endif // DOT11_N_SUPPORT //
 
 #define        MAXSEQ          (0xFFF)
 
-#ifdef DOT11_N_SUPPORT
 struct reordering_mpdu
 {
        struct reordering_mpdu  *next;
@@ -196,7 +284,6 @@ struct reordering_mpdu_pool
        NDIS_SPIN_LOCK                  lock;
        struct reordering_list  freelist;
 };
-#endif // DOT11_N_SUPPORT //
 
 typedef struct         _RSSI_SAMPLE {
        CHAR                    LastRssi0;             // last received RSSI
@@ -273,12 +360,14 @@ typedef struct  _QUEUE_HEADER   {
 #define RTMP_TEST_FLAG(_M, _F)      (((_M)->Flags & (_F)) != 0)
 #define RTMP_TEST_FLAGS(_M, _F)     (((_M)->Flags & (_F)) == (_F))
 
+#ifdef RT2860
 // Macro for power save flag.
 #define RTMP_SET_PSFLAG(_M, _F)       ((_M)->PSFlags |= (_F))
 #define RTMP_CLEAR_PSFLAG(_M, _F)     ((_M)->PSFlags &= ~(_F))
 #define RTMP_CLEAR_PSFLAGS(_M)        ((_M)->PSFlags = 0)
 #define RTMP_TEST_PSFLAG(_M, _F)      (((_M)->PSFlags & (_F)) != 0)
 #define RTMP_TEST_PSFLAGS(_M, _F)     (((_M)->PSFlags & (_F)) == (_F))
+#endif
 
 #define OPSTATUS_SET_FLAG(_pAd, _F)     ((_pAd)->CommonCfg.OpStatusFlags |= (_F))
 #define OPSTATUS_CLEAR_FLAG(_pAd, _F)   ((_pAd)->CommonCfg.OpStatusFlags &= ~(_F))
@@ -308,7 +397,17 @@ typedef struct  _QUEUE_HEADER   {
     (_idx) = (_idx+1) % (_RingSize);       \
 }
 
+#ifdef RT30xx
+// We will have a cost down version which mac version is 0x3090xxxx
+#define IS_RT3090(_pAd)                                ((((_pAd)->MACVersion & 0xffff0000) == 0x30710000) || (((_pAd)->MACVersion & 0xffff0000) == 0x30900000))
+#else
+#define IS_RT3090(_pAd)                                0
+#endif
 #define IS_RT3070(_pAd)                                (((_pAd)->MACVersion & 0xffff0000) == 0x30700000)
+#ifdef RT30xx
+#define IS_RT3071(_pAd)                                (((_pAd)->MACVersion & 0xffff0000) == 0x30710000)
+#define IS_RT30xx(_pAd)                                (((_pAd)->MACVersion & 0xfff00000) == 0x30700000)
+#endif
 
 #define RING_PACKET_INIT(_TxRing, _idx)    \
 {                                          \
@@ -344,7 +443,6 @@ typedef struct  _QUEUE_HEADER   {
     }                                                   \
 }
 
-#ifdef DOT11_N_SUPPORT
 // StaActive.SupportedHtPhy.MCSSet is copied from AP beacon.  Don't need to update here.
 #define COPY_HTSETTINGS_FROM_MLME_AUX_TO_ACTIVE_CFG(_pAd)                                 \
 {                                                                                       \
@@ -368,7 +466,6 @@ typedef struct  _QUEUE_HEADER   {
        _pAd->MacTab.Content[BSSID_WCID].MmpsMode= (UCHAR)(_pHtCapability->HtCapInfo.MimoPs);   \
        _pAd->MacTab.Content[BSSID_WCID].MaxRAmpduFactor = (UCHAR)(_pHtCapability->HtCapParm.MaxRAmpduFactor);  \
 }
-#endif // DOT11_N_SUPPORT //
 
 //
 // MACRO for 32-bit PCI register read / write
@@ -390,6 +487,7 @@ typedef struct  _QUEUE_HEADER   {
 //
 #define MAX_BUSY_COUNT  100         // Number of retry before failing access BBP & RF indirect register
 //
+#ifdef RT2860
 #define RTMP_RF_IO_WRITE32(_A, _V)                  \
 {                                                   \
     PHY_CSR4_STRUC  Value;                          \
@@ -553,7 +651,15 @@ typedef struct  _QUEUE_HEADER   {
     }                                                   \
     }                                                   \
 }
+#endif /* RT2860 */
+#ifdef RT2870
+#define RTMP_RF_IO_WRITE32(_A, _V)                 RTUSBWriteRFRegister(_A, _V)
+#define RTMP_BBP_IO_READ8_BY_REG_ID(_A, _I, _pV)   RTUSBReadBBPRegister(_A, _I, _pV)
+#define RTMP_BBP_IO_WRITE8_BY_REG_ID(_A, _I, _V)   RTUSBWriteBBPRegister(_A, _I, _V)
 
+#define BBP_IO_WRITE8_BY_REG_ID(_A, _I, _V)                    RTUSBWriteBBPRegister(_A, _I, _V)
+#define BBP_IO_READ8_BY_REG_ID(_A, _I, _pV)            RTUSBReadBBPRegister(_A, _I, _pV)
+#endif // RT2870 //
 
 #define     MAP_CHANNEL_ID_TO_KHZ(ch, khz)  {               \
                 switch (ch)                                 \
@@ -804,6 +910,7 @@ typedef struct _RTMP_SCATTER_GATHER_LIST {
 // 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
+#ifdef RT2860
 #define REPORT_MGMT_FRAME_TO_MLME(_pAd, Wcid, _pFrame, _FrameSize, _Rssi0, _Rssi1, _Rssi2, _PlcpSignal)        \
 {                                                                                       \
     UINT32 High32TSF, Low32TSF;                                                          \
@@ -811,6 +918,46 @@ typedef struct _RTMP_SCATTER_GATHER_LIST {
     RTMP_IO_READ32(_pAd, TSF_TIMER_DW0, &Low32TSF);                                        \
     MlmeEnqueueForRecv(_pAd, Wcid, High32TSF, Low32TSF, (UCHAR)_Rssi0, (UCHAR)_Rssi1,(UCHAR)_Rssi2,_FrameSize, _pFrame, (UCHAR)_PlcpSignal);   \
 }
+#endif
+#ifdef RT2870
+#define REPORT_MGMT_FRAME_TO_MLME(_pAd, Wcid, _pFrame, _FrameSize, _Rssi0, _Rssi1, _Rssi2, _PlcpSignal)        \
+{                                                                                       \
+    UINT32 High32TSF=0, Low32TSF=0;                                                          \
+    MlmeEnqueueForRecv(_pAd, Wcid, High32TSF, Low32TSF, (UCHAR)_Rssi0, (UCHAR)_Rssi1,(UCHAR)_Rssi2,_FrameSize, _pFrame, (UCHAR)_PlcpSignal);   \
+}
+#endif // RT2870 //
+
+//Need to collect each ant's rssi concurrently
+//rssi1 is report to pair2 Ant and rss2 is reprot to pair1 Ant when 4 Ant
+#define COLLECT_RX_ANTENNA_AVERAGE_RSSI(_pAd, _rssi1, _rssi2)                                  \
+{                                                                                                                                                              \
+       SHORT   AvgRssi;                                                                                                                        \
+       UCHAR   UsedAnt;                                                                                                                        \
+       if (_pAd->RxAnt.EvaluatePeriod == 0)                                                                    \
+       {                                                                                                                                               \
+               UsedAnt = _pAd->RxAnt.Pair1PrimaryRxAnt;                                                        \
+               AvgRssi = _pAd->RxAnt.Pair1AvgRssi[UsedAnt];                                            \
+               if (AvgRssi < 0)                                                                                                        \
+                       AvgRssi = AvgRssi - (AvgRssi >> 3) + _rssi1;                                    \
+               else                                                                                                                            \
+                       AvgRssi = _rssi1 << 3;                                                                                  \
+               _pAd->RxAnt.Pair1AvgRssi[UsedAnt] = AvgRssi;                                            \
+       }                                                                                                                                               \
+       else                                                                                                                                    \
+       {                                                                                                                                               \
+               UsedAnt = _pAd->RxAnt.Pair1SecondaryRxAnt;                                                      \
+               AvgRssi = _pAd->RxAnt.Pair1AvgRssi[UsedAnt];                                            \
+               if ((AvgRssi < 0) && (_pAd->RxAnt.FirstPktArrivedWhenEvaluate))         \
+                       AvgRssi = AvgRssi - (AvgRssi >> 3) + _rssi1;                                    \
+               else                                                                                                                            \
+               {                                                                                                                                       \
+                       _pAd->RxAnt.FirstPktArrivedWhenEvaluate = TRUE;                                 \
+                       AvgRssi = _rssi1 << 3;                                                                                  \
+               }                                                                                                                                       \
+               _pAd->RxAnt.Pair1AvgRssi[UsedAnt] = AvgRssi;                                            \
+               _pAd->RxAnt.RcvPktNumWhenEvaluate++;                                                            \
+       }                                                                                                                                               \
+}
 
 #define NDIS_QUERY_BUFFER(_NdisBuf, _ppVA, _pBufLen)                    \
     NdisQueryBuffer(_NdisBuf, _ppVA, _pBufLen)
@@ -823,6 +970,7 @@ typedef struct _RTMP_SCATTER_GATHER_LIST {
 //
 #define JapanChannelCheck(channel)  ((channel == 52) || (channel == 56) || (channel == 60) || (channel == 64))
 
+#ifdef RT2860
 #define STA_PORT_SECURED(_pAd) \
 { \
        _pAd->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED; \
@@ -831,6 +979,16 @@ typedef struct _RTMP_SCATTER_GATHER_LIST {
        _pAd->MacTab.Content[BSSID_WCID].PortSecured = _pAd->StaCfg.PortSecured; \
        NdisReleaseSpinLock(&(_pAd)->MacTabLock); \
 }
+#endif
+#ifdef RT2870
+#define STA_PORT_SECURED(_pAd) \
+{ \
+       _pAd->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED; \
+       NdisAcquireSpinLock(&_pAd->MacTabLock); \
+       _pAd->MacTab.Content[BSSID_WCID].PortSecured = _pAd->StaCfg.PortSecured; \
+       NdisReleaseSpinLock(&_pAd->MacTabLock); \
+}
+#endif
 
 //
 // Register set pair for initialzation register set definition
@@ -899,7 +1057,12 @@ typedef struct  _RTMP_REORDERBUF
        UCHAR           DataOffset;
        USHORT          Datasize;
        ULONG                   AllocSize;
+#ifdef RT2860
        NDIS_PHYSICAL_ADDRESS   AllocPa;            // TxBuf physical address
+#endif
+#ifdef RT2870
+       PUCHAR                                  AllocPa;
+#endif // RT2870 //
 }   RTMP_REORDERBUF, *PRTMP_REORDERBUF;
 
 //
@@ -998,7 +1161,9 @@ typedef struct _COUNTER_802_11 {
 
 typedef struct _COUNTER_RALINK {
        ULONG           TransmittedByteCount;   // both successful and failure, used to calculate TX throughput
+#ifdef RT2860
        ULONG           LastReceivedByteCount;
+#endif
        ULONG           ReceivedByteCount;      // both CRC okay and CRC error, used to calculate RX throughput
        ULONG           BeenDisassociatedCount;
        ULONG           BadCQIAutoRecoveryCount;
@@ -1021,6 +1186,9 @@ typedef struct _COUNTER_RALINK {
 
        UINT32                  OneSecFrameDuplicateCount;
 
+#ifdef RT2870
+       ULONG           OneSecTransmittedByteCount;   // both successful and failure, used to calculate TX throughput
+#endif // RT2870 //
 
        UINT32          OneSecTxNoRetryOkCount;
        UINT32          OneSecTxRetryOkCount;
@@ -1133,6 +1301,9 @@ typedef struct _BBP_TUNING_STRUCT {
 
 typedef struct _SOFT_RX_ANT_DIVERSITY_STRUCT {
        UCHAR     EvaluatePeriod;                // 0:not evalute status, 1: evaluate status, 2: switching status
+#ifdef RT30xx
+       UCHAR     EvaluateStableCnt;
+#endif
        UCHAR     Pair1PrimaryRxAnt;     // 0:Ant-E1, 1:Ant-E2
        UCHAR     Pair1SecondaryRxAnt;   // 0:Ant-E1, 1:Ant-E2
        UCHAR     Pair2PrimaryRxAnt;     // 0:Ant-E3, 1:Ant-E4
@@ -1308,9 +1479,11 @@ typedef struct _MLME_STRUCT {
        RALINK_TIMER_STRUCT     APSDPeriodicTimer;
        RALINK_TIMER_STRUCT     LinkDownTimer;
        RALINK_TIMER_STRUCT     LinkUpTimer;
+#ifdef RT2860
     UCHAR                   bPsPollTimerRunning;
     RALINK_TIMER_STRUCT     PsPollTimer;
        RALINK_TIMER_STRUCT     RadioOnOffTimer;
+#endif
        ULONG                   PeriodicRound;
        ULONG                   OneSecPeriodicRound;
 
@@ -1319,7 +1492,10 @@ typedef struct _MLME_STRUCT {
        BOOLEAN                                 bEnableAutoAntennaCheck;
        RALINK_TIMER_STRUCT             RxAntEvalTimer;
 
-
+#ifdef RT2870
+       UCHAR CaliBW40RfR24;
+       UCHAR CaliBW20RfR24;
+#endif // RT2870 //
 } MLME_STRUCT, *PMLME_STRUCT;
 
 // structure for radar detection and channel switch
@@ -1358,7 +1534,6 @@ typedef enum _ORI_BLOCKACK_STATUS
     Originator_Done
 } ORI_BLOCKACK_STATUS, *PORI_BLOCKACK_STATUS;
 
-#ifdef DOT11_N_SUPPORT
 typedef struct _BA_ORI_ENTRY{
        UCHAR   Wcid;
        UCHAR   TID;
@@ -1437,7 +1612,6 @@ typedef   union   _BACAP_STRUC    {
        }       field;
        UINT32                  word;
 } BACAP_STRUC, *PBACAP_STRUC;
-#endif // DOT11_N_SUPPORT //
 
 //This structure is for all 802.11n card InterOptibilityTest action. Reset all Num every n second.  (Details see MLMEPeriodic)
 typedef        struct  _IOT_STRUC      {
@@ -1520,6 +1694,19 @@ typedef struct {
                UCHAR bit_offset = wcid & 0x7; \
                ad_p->ApCfg.MBSSID[apidx].TimBitmaps[tim_offset] |= BIT8[bit_offset]; }
 
+#ifdef RT2870
+#define BEACON_BITMAP_MASK             0xff
+typedef struct _BEACON_SYNC_STRUCT_
+{
+       UCHAR                           BeaconBuf[HW_BEACON_MAX_COUNT][HW_BEACON_OFFSET];
+       UCHAR                                   BeaconTxWI[HW_BEACON_MAX_COUNT][TXWI_SIZE];
+       ULONG                                   TimIELocationInBeacon[HW_BEACON_MAX_COUNT];
+       ULONG                                   CapabilityInfoLocationInBeacon[HW_BEACON_MAX_COUNT];
+       BOOLEAN                                 EnableBeacon;           // trigger to enable beacon transmission.
+       UCHAR                                   BeaconBitMap;           // NOTE: If the MAX_MBSSID_NUM is larger than 8, this parameter need to change.
+       UCHAR                                   DtimBitOn;                      // NOTE: If the MAX_MBSSID_NUM is larger than 8, this parameter need to change.
+}BEACON_SYNC_STRUCT;
+#endif // RT2870 //
 
 typedef struct _MULTISSID_STRUCT {
        UCHAR                                                           Bssid[MAC_ADDR_LEN];
@@ -1688,10 +1875,9 @@ typedef struct _COMMON_CONFIG {
        ULONG       TxPowerPercentage;      // 0~100 %
        ULONG       TxPowerDefault;         // keep for TxPowerPercentage
 
-#ifdef DOT11_N_SUPPORT
        BACAP_STRUC        BACapability; //   NO USE = 0XFF  ;  IMMED_BA =1  ;  DELAY_BA=0
        BACAP_STRUC        REGBACapability; //   NO USE = 0XFF  ;  IMMED_BA =1  ;  DELAY_BA=0
-#endif // DOT11_N_SUPPORT //
+
        IOT_STRUC               IOTestParm;     // 802.11n InterOpbility Test Parameter;
        ULONG       TxPreamble;             // Rt802_11PreambleLong, Rt802_11PreambleShort, Rt802_11PreambleAuto
        BOOLEAN     bUseZeroToDisableFragment;     // Microsoft use 0 as disable
@@ -1703,9 +1889,8 @@ typedef struct _COMMON_CONFIG {
        BOOLEAN     bIEEE80211H;                        // 1: enable IEEE802.11h spec.
        ULONG           DisableOLBCDetect;              // 0: enable OLBC detect; 1 disable OLBC detect
 
-#ifdef DOT11_N_SUPPORT
        BOOLEAN                         bRdg;
-#endif // DOT11_N_SUPPORT //
+
        BOOLEAN             bWmmCapable;        // 0:disable WMM, 1:enable WMM
        QOS_CAPABILITY_PARM APQosCapability;    // QOS capability of the current associated AP
        EDCA_PARM           APEdcaParm;         // EDCA parameters of the current associated AP
@@ -1720,11 +1905,13 @@ typedef struct _COMMON_CONFIG {
 
        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.
+#ifdef RT30xx
+       BOOLEAN                         bRxAntDiversity; // 0:disable, 1:enable Software Rx Antenna Diversity.
+#endif
 
        // IEEE802.11H--DFS.
        RADAR_DETECT_STRUCT     RadarDetect;
 
-#ifdef DOT11_N_SUPPORT
        // HT
        UCHAR                   BASize;         // USer desired BAWindowSize. Should not exceed our max capability
        //RT_HT_CAPABILITY      SupportedHtPhy;
@@ -1745,7 +1932,6 @@ typedef struct _COMMON_CONFIG {
        ULONG                                   LastRcvBSSWidthTriggerEventsTime;
 
        UCHAR                                   TxBASize;
-#endif // DOT11_N_SUPPORT //
 
        // Enable wireless event
        BOOLEAN                         bWirelessEvent;
@@ -1763,6 +1949,20 @@ typedef struct _COMMON_CONFIG {
 
        BOOLEAN                 bHardwareRadio;     // Hardware controlled Radio enabled
 
+#ifdef RT2870
+       BOOLEAN                 bMultipleIRP;       // Multiple Bulk IN flag
+       UCHAR                   NumOfBulkInIRP;     // if bMultipleIRP == TRUE, NumOfBulkInIRP will be 4 otherwise be 1
+       RT_HT_CAPABILITY        SupportedHtPhy;
+       ULONG                           MaxPktOneTxBulk;
+       UCHAR                           TxBulkFactor;
+       UCHAR                           RxBulkFactor;
+
+       BEACON_SYNC_STRUCT      *pBeaconSync;
+       RALINK_TIMER_STRUCT     BeaconUpdateTimer;
+       UINT32                          BeaconAdjust;
+       UINT32                          BeaconFactor;
+       UINT32                          BeaconRemain;
+#endif // RT2870 //
 
 
        NDIS_SPIN_LOCK                  MeasureReqTabLock;
@@ -1864,11 +2064,11 @@ typedef struct _STA_ADMIN_CONFIG {
        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
-
+#ifdef RT2860
     BOOLEAN            AdhocBOnlyJoined;       // Indicate Adhoc B Join.
     BOOLEAN            AdhocBGJoined;          // Indicate Adhoc B/G Join.
     BOOLEAN            Adhoc20NJoined;         // Indicate Adhoc 20MHz N Join.
-
+#endif
        // New for WPA, windows want us to to keep association information and
        // Fixed IEs from last association response
        NDIS_802_11_ASSOCIATION_INFORMATION     AssocInfo;
@@ -1960,7 +2160,6 @@ typedef struct _STA_ADMIN_CONFIG {
        BOOLEAN                 bFastRoaming;       // 0:disable fast roaming, 1:enable fast roaming
        CHAR                    dBmToRoam;          // the condition to roam when receiving Rssi less than this value. It's negative value.
 
-#ifdef WPA_SUPPLICANT_SUPPORT
     BOOLEAN             IEEE8021X;
     BOOLEAN             IEEE8021x_required_keys;
     CIPHER_KEY         DesireSharedKey[4];     // Record user desired WEP keys
@@ -1971,7 +2170,6 @@ typedef struct _STA_ADMIN_CONFIG {
     // 2: driver takes care of scanning, AP selection, and IEEE 802.11 association parameters
     UCHAR               WpaSupplicantUP;
        UCHAR                           WpaSupplicantScanCount;
-#endif // WPA_SUPPLICANT_SUPPORT //
 
     CHAR                dev_name[16];
     USHORT              OriDevType;
@@ -1984,7 +2182,9 @@ typedef struct _STA_ADMIN_CONFIG {
        RT_HT_PHY_INFO                                  DesiredHtPhyInfo;
        BOOLEAN                                                 bAutoTxRateSwitch;
 
+#ifdef RT2860
     UCHAR       BBPR3;
+#endif
 } STA_ADMIN_CONFIG, *PSTA_ADMIN_CONFIG;
 
 // This data structure keep the current active BSS/IBSS's configuration that this STA
@@ -2011,6 +2211,15 @@ typedef struct _STA_ACTIVE_CONFIG {
        RT_HT_CAPABILITY        SupportedHtPhy;
 } STA_ACTIVE_CONFIG, *PSTA_ACTIVE_CONFIG;
 
+#ifdef RT2870
+// for USB interface, avoid in interrupt when write key
+typedef struct   RT_ADD_PAIRWISE_KEY_ENTRY {
+        NDIS_802_11_MAC_ADDRESS         MacAddr;
+        USHORT                          MacTabMatchWCID;        // ASIC
+        CIPHER_KEY                      CipherKey;
+} RT_ADD_PAIRWISE_KEY_ENTRY,*PRT_ADD_PAIRWISE_KEY_ENTRY;
+#endif // RT2870 //
+
 // ----------- start of AP --------------------------
 // AUTH-RSP State Machine Aux data structure
 typedef struct _AP_MLME_AUX {
@@ -2075,14 +2284,11 @@ typedef struct _MAC_TABLE_ENTRY {
 
        UINT32                  StaConnectTime;         // the live time of this station since associated with AP
 
-
-#ifdef DOT11_N_SUPPORT
        BOOLEAN                 bSendBAR;
        USHORT                  NoBADataCountDown;
 
        UINT32                  CachedBuf[16];          // UINT (4 bytes) for alignment
        UINT                    TxBFCount; // 3*3
-#endif // DOT11_N_SUPPORT //
        UINT                    FIFOCount;
        UINT                    DebugFIFOCount;
        UINT                    DebugTxCount;
@@ -2119,10 +2325,8 @@ typedef struct _MAC_TABLE_ENTRY {
        // see fOP_STATUS_xxx in RTMP_DEF.C for detail bit definition. fCLIENT_STATUS_AMSDU_INUSED
        ULONG           ClientStatusFlags;
 
-       // TODO: Shall we move that to DOT11_N_SUPPORT???
        HTTRANSMIT_SETTING      HTPhyMode, MaxHTPhyMode, MinHTPhyMode;// For transmit phy setting in TXWI.
 
-#ifdef DOT11_N_SUPPORT
        // HT EWC MIMO-N used parameters
        USHORT          RXBAbitmap;     // fill to on-chip  RXWI_BA_BITMASK in 8.1.3RX attribute entry format
        USHORT          TXBAbitmap;     // This bitmap as originator, only keep in software used to mark AMPDU bit in TXWI
@@ -2139,7 +2343,6 @@ typedef struct _MAC_TABLE_ENTRY {
        UCHAR           MmpsMode;       // MIMO power save more.
 
        HT_CAPABILITY_IE                HTCapability;
-#endif // DOT11_N_SUPPORT //
 
        BOOLEAN         bAutoTxRateSwitch;
 
@@ -2154,6 +2357,9 @@ typedef struct _MAC_TABLE_ENTRY {
        UINT32                  TXMCSSuccessful[16];
        UINT32                  TXMCSFailed[16];
        UINT32                  TXMCSAutoFallBack[16][16];
+#ifdef RT2870
+       ULONG                   LastBeaconRxTime;
+#endif
 } MAC_TABLE_ENTRY, *PMAC_TABLE_ENTRY;
 
 typedef struct _MAC_TABLE {
@@ -2165,16 +2371,16 @@ typedef struct _MAC_TABLE {
        BOOLEAN         fAnyStationInPsm;
        BOOLEAN         fAnyStationBadAtheros;  // Check if any Station is atheros 802.11n Chip.  We need to use RTS/CTS with Atheros 802,.11n chip.
        BOOLEAN                 fAnyTxOPForceDisable;   // Check if it is necessary to disable BE TxOP
-#ifdef DOT11_N_SUPPORT
+#ifdef RT2870
+       BOOLEAN                 fAllStationAsRalink;    // Check if all stations are ralink-chipset
+#endif
        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
-#endif // DOT11_N_SUPPORT //
 } MAC_TABLE, *PMAC_TABLE;
 
-#ifdef DOT11_N_SUPPORT
 #define IS_HT_STA(_pMacEntry)  \
        (_pMacEntry->MaxHTPhyMode.field.MODE >= MODE_HTMIX)
 
@@ -2183,7 +2389,6 @@ typedef struct _MAC_TABLE {
 
 #define PEER_IS_HT_RATE(_pMacEntry)    \
        (_pMacEntry->HTPhyMode.field.MODE >= MODE_HTMIX)
-#endif // DOT11_N_SUPPORT //
 
 typedef struct _WDS_ENTRY {
        BOOLEAN         Valid;
@@ -2316,43 +2521,6 @@ typedef struct _INF_USB_CONFIG
 
 }INF_USB_CONFIG;
 
-#ifdef IKANOS_VX_1X0
-       typedef void (*IkanosWlanTxCbFuncP)(void *, void *);
-
-       struct IKANOS_TX_INFO
-       {
-               struct net_device *netdev;
-               IkanosWlanTxCbFuncP *fp;
-       };
-#endif // IKANOS_VX_1X0 //
-
-#ifdef DBG_DIAGNOSE
-#define DIAGNOSE_TIME  10   // 10 sec
-typedef struct _RtmpDiagStrcut_
-{      // Diagnosis Related element
-       unsigned char           inited;
-       unsigned char   qIdx;
-       unsigned char   ArrayStartIdx;
-       unsigned char           ArrayCurIdx;
-       // Tx Related Count
-       USHORT                  TxDataCnt[DIAGNOSE_TIME];
-       USHORT                  TxFailCnt[DIAGNOSE_TIME];
-       USHORT                  TxDescCnt[DIAGNOSE_TIME][24]; // 3*3    // TxDesc queue length in scale of 0~14, >=15
-       USHORT                  TxMcsCnt[DIAGNOSE_TIME][24]; // 3*3
-       USHORT                  TxSWQueCnt[DIAGNOSE_TIME][9];           // TxSwQueue length in scale of 0, 1, 2, 3, 4, 5, 6, 7, >=8
-
-       USHORT                  TxAggCnt[DIAGNOSE_TIME];
-       USHORT                  TxNonAggCnt[DIAGNOSE_TIME];
-       USHORT                  TxAMPDUCnt[DIAGNOSE_TIME][24]; // 3*3 // 10 sec, TxDMA APMDU Aggregation count in range from 0 to 15, in setp of 1.
-       USHORT                  TxRalinkCnt[DIAGNOSE_TIME];                     // TxRalink Aggregation Count in 1 sec scale.
-       USHORT                  TxAMSDUCnt[DIAGNOSE_TIME];                      // TxAMSUD Aggregation Count in 1 sec scale.
-
-       // Rx Related Count
-       USHORT                  RxDataCnt[DIAGNOSE_TIME];                       // Rx Total Data count.
-       USHORT                  RxCrcErrCnt[DIAGNOSE_TIME];
-       USHORT                  RxMcsCnt[DIAGNOSE_TIME][24]; // 3*3
-}RtmpDiagStruct;
-#endif // DBG_DIAGNOSE //
 
 
 //
@@ -2364,6 +2532,7 @@ typedef struct _RTMP_ADAPTER
        PNET_DEV                                net_dev;
        ULONG                                   VirtualIfCnt;
 
+#ifdef RT2860
     USHORT                         LnkCtrlBitMask;
     USHORT                         RLnkCtrlConfiguration;
     USHORT                  RLnkCtrlOffset;
@@ -2390,11 +2559,51 @@ typedef struct _RTMP_ADAPTER
        RTMP_DMABUF             RxDescRing;                 // Shared memory for RX descriptors
        RTMP_DMABUF             TxDescRing[NUM_OF_TX_RING];     // Shared memory for Tx descriptors
        RTMP_TX_RING            TxRing[NUM_OF_TX_RING];         // AC0~4 + HCCA
-
+#endif
 
        NDIS_SPIN_LOCK          irq_lock;
        UCHAR                   irq_disabled;
 
+#ifdef RT2870
+/*****************************************************************************************/
+/*      USB related parameters                                                           */
+/*****************************************************************************************/
+       struct usb_config_descriptor            *config;
+       UINT                                                            BulkInEpAddr;           // bulk-in endpoint address
+       UINT                                                            BulkOutEpAddr[6];       // bulk-out endpoint address
+
+       UINT                                                            NumberOfPipes;
+       USHORT                                                          BulkOutMaxPacketSize;
+       USHORT                                                          BulkInMaxPacketSize;
+
+       //======Control Flags
+       LONG                            PendingIoCount;
+       ULONG                                           BulkFlags;
+       BOOLEAN                     bUsbTxBulkAggre;    // Flags for bulk out data priority
+
+
+       //======Timer Thread
+       RT2870_TIMER_QUEUE              TimerQ;
+       NDIS_SPIN_LOCK                  TimerQLock;
+
+
+       //======Cmd Thread
+       CmdQ                                    CmdQ;
+       NDIS_SPIN_LOCK                  CmdQLock;                               // CmdQLock spinlock
+
+       BOOLEAN                                 TimerFunc_kill;
+       BOOLEAN                                 mlme_kill;
+
+
+       //======Semaphores (event)
+       struct semaphore                        mlme_semaphore;                 /* to sleep thread on   */
+       struct semaphore                        RTUSBCmd_semaphore;             /* to sleep thread on   */
+       struct semaphore                        RTUSBTimer_semaphore;
+       struct completion                       TimerQComplete;
+       struct completion                       mlmeComplete;
+       struct completion                       CmdQComplete;
+       wait_queue_head_t                       *wait;
+#endif // RT2870 //
 
 
 /*****************************************************************************************/
@@ -2408,6 +2617,22 @@ typedef struct _RTMP_ADAPTER
        BOOLEAN                 DeQueueRunning[NUM_OF_TX_RING];  // for ensuring RTUSBDeQueuePacket get call once
        NDIS_SPIN_LOCK          DeQueueLock[NUM_OF_TX_RING];
 
+#ifdef RT2870
+       // Data related context and AC specified, 4 AC supported
+       NDIS_SPIN_LOCK                  BulkOutLock[6];                 // BulkOut spinlock for 4 ACs
+       NDIS_SPIN_LOCK                  MLMEBulkOutLock;        // MLME BulkOut lock
+
+       HT_TX_CONTEXT                   TxContext[NUM_OF_TX_RING];
+       NDIS_SPIN_LOCK                  TxContextQueueLock[NUM_OF_TX_RING];             // TxContextQueue spinlock
+
+       // 4 sets of Bulk Out index and pending flag
+       UCHAR                                   NextBulkOutIndex[4];    // only used for 4 EDCA bulkout pipe
+
+       BOOLEAN                                 BulkOutPending[6];      // used for total 6 bulkout pipe
+       UCHAR                                   bulkResetPipeid;
+       BOOLEAN                                 MgmtBulkPending;
+       ULONG                                   bulkResetReq[6];
+#endif // RT2870 //
 
        // resource for software backlog queues
        QUEUE_HEADER            TxSwQueue[NUM_OF_TX_RING];  // 4 AC + 1 HCCA
@@ -2421,10 +2646,20 @@ typedef struct _RTMP_ADAPTER
 /*****************************************************************************************/
 /*      Rx related parameters                                                           */
 /*****************************************************************************************/
-
+#ifdef RT2860
        RTMP_RX_RING            RxRing;
        NDIS_SPIN_LOCK          RxRingLock;                 // Rx Ring spinlock
-
+#endif
+#ifdef RT2870
+       RX_CONTEXT                              RxContext[RX_RING_SIZE];  // 1 for redundant multiple IRP bulk in.
+       NDIS_SPIN_LOCK                  BulkInLock;                             // BulkIn spinlock for 4 ACs
+       UCHAR                                   PendingRx;                              // The Maxima pending Rx value should be        RX_RING_SIZE.
+       UCHAR                                   NextRxBulkInIndex;              // Indicate the current RxContext Index which hold by Host controller.
+       UCHAR                                   NextRxBulkInReadIndex;  // Indicate the current RxContext Index which driver can read & process it.
+       ULONG                                   NextRxBulkInPosition;   // Want to contatenate 2 URB buffer while 1st is bulkin failed URB. This Position is 1st URB TransferLength.
+       ULONG                                   TransferBufferLength;   // current length of the packet buffer
+       ULONG                                   ReadPosition;                   // current read position in a packet buffer
+#endif // RT2870 //
 
 
 /*****************************************************************************************/
@@ -2438,6 +2673,10 @@ typedef struct _RTMP_ADAPTER
        ULONG                   EepromVersion;          // byte 0: version, byte 1: revision, byte 2~3: unused
        UCHAR                   EEPROMAddressNum;       // 93c46=6  93c66=8
        USHORT                  EEPROMDefaultValue[NUM_EEPROM_BBP_PARMS];
+#ifdef RT30xx
+       BOOLEAN                 EepromAccess;
+       UCHAR                   EFuseTag;
+#endif
        ULONG                   FirmwareVersion;        // byte 0: Minor version, byte 1: Major version, otherwise unused.
 
        // ---------------------------
@@ -2530,6 +2769,15 @@ typedef struct _RTMP_ADAPTER
        PSPOLL_FRAME                    PsPollFrame;
        HEADER_802_11                   NullFrame;
 
+#ifdef RT2870
+       TX_CONTEXT                              BeaconContext[BEACON_RING_SIZE];
+       TX_CONTEXT                              NullContext;
+       TX_CONTEXT                              PsPollContext;
+       TX_CONTEXT                              RTSContext;
+#endif // RT2870 //
+
+
+
 //=========AP===========
 
 
@@ -2550,7 +2798,6 @@ typedef struct _RTMP_ADAPTER
 
        NDIS_MEDIA_STATE        IndicateMediaState;                     // Base on Indication state, default is NdisMediaStateDisConnected
 
-       // MAT related parameters
 
        // configuration: read from Registry & E2PROM
        BOOLEAN                 bLocalAdminMAC;             // Use user changed MAC
@@ -2571,9 +2818,8 @@ typedef struct _RTMP_ADAPTER
        MAC_TABLE                 MacTab;     // ASIC on-chip WCID entry table.  At TX, ASIC always use key according to this on-chip table.
        NDIS_SPIN_LOCK          MacTabLock;
 
-#ifdef DOT11_N_SUPPORT
        BA_TABLE                        BATable;
-#endif // DOT11_N_SUPPORT //
+
        NDIS_SPIN_LOCK          BATabLock;
        RALINK_TIMER_STRUCT RECBATimer;
 
@@ -2592,7 +2838,9 @@ typedef struct _RTMP_ADAPTER
 
        // flags, see fRTMP_ADAPTER_xxx flags
        ULONG                   Flags;                      // Represent current device status
+#ifdef RT2860
        ULONG                   PSFlags;                    // Power Save operation flag.
+#endif
 
        // current TX sequence #
        USHORT                  Sequence;
@@ -2625,6 +2873,14 @@ typedef struct _RTMP_ADAPTER
        /*****************************************************************************************/
        /*      Statistic related parameters                                                     */
        /*****************************************************************************************/
+#ifdef RT2870
+       ULONG                                           BulkOutDataOneSecCount;
+       ULONG                                           BulkInDataOneSecCount;
+       ULONG                                           BulkLastOneSecCount; // BulkOutDataOneSecCount + BulkInDataOneSecCount
+       ULONG                                           watchDogRxCnt;
+       ULONG                                           watchDogRxOverFlowCnt;
+       ULONG                                           watchDogTxPendingCnt[NUM_OF_TX_RING];
+#endif // RT2870 //
 
        BOOLEAN                                         bUpdateBcnCntDone;
        ULONG                                           watchDogMacDeadlock;    // prevent MAC/BBP into deadlock condition
@@ -2664,15 +2920,11 @@ typedef struct _RTMP_ADAPTER
 
     struct wificonf                    WIFItestbed;
 
-#ifdef DOT11_N_SUPPORT
        struct reordering_mpdu_pool mpdu_blk_pool;
-#endif // DOT11_N_SUPPORT //
 
        ULONG                                   OneSecondnonBEpackets;          // record non BE packets per second
 
-#if WIRELESS_EXT >= 12
     struct iw_statistics    iw_stats;
-#endif
 
        struct net_device_stats stats;
 
@@ -2689,18 +2941,16 @@ typedef struct _RTMP_ADAPTER
        UCHAR                                   flg_be_adjust;
        ULONG                                   be_adjust_last_time;
 
-#ifdef IKANOS_VX_1X0
-       struct IKANOS_TX_INFO   IkanosTxInfo;
-       struct IKANOS_TX_INFO   IkanosRxInfo[MAX_MBSSID_NUM + MAX_WDS_ENTRY + MAX_APCLI_NUM + MAX_MESH_NUM];
-#endif // IKANOS_VX_1X0 //
 
 
-#ifdef DBG_DIAGNOSE
-       RtmpDiagStruct  DiagStruct;
-#endif // DBG_DIAGNOSE //
+       UINT8                                   PM_FlgSuspend;
 
+#ifdef RT30xx
+//======efuse
+       BOOLEAN         bUseEfuse;
+       BOOLEAN         bEEPROMFile;
+#endif // RT30xx //
 
-       UINT8                                   PM_FlgSuspend;
 } RTMP_ADAPTER, *PRTMP_ADAPTER;
 
 //
@@ -2853,7 +3103,7 @@ typedef struct _TX_BLK_
 
 //------------------------------------------------------------------------------------------
 
-
+#ifdef RT2860
 //
 // Enable & Disable NIC interrupt via writing interrupt mask register
 // Since it use ADAPTER structure, it have to be put after structure definition.
@@ -2924,14 +3174,7 @@ static inline VOID ConvertMulticastIP2MAC(
 
        return;
 }
-
-BOOLEAN RTMPCheckForHang(
-       IN  NDIS_HANDLE MiniportAdapterContext
-       );
-
-VOID  RTMPHalt(
-       IN  NDIS_HANDLE MiniportAdapterContext
-       );
+#endif /* RT2860 */
 
 //
 //  Private routines in rtmp_init.c
@@ -2945,11 +3188,6 @@ NDIS_STATUS RTMPAllocTxRxRingMemory(
        IN  PRTMP_ADAPTER   pAd
        );
 
-NDIS_STATUS RTMPFindAdapter(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  NDIS_HANDLE     WrapperConfigurationContext
-       );
-
 NDIS_STATUS    RTMPReadParametersHook(
        IN      PRTMP_ADAPTER pAd
        );
@@ -2963,6 +3201,10 @@ NDIS_STATUS NICReadRegParameters(
        IN  NDIS_HANDLE         WrapperConfigurationContext
        );
 
+#ifdef RT2870
+VOID NICInitRT30xxRFRegisters(
+       IN PRTMP_ADAPTER pAd);
+#endif // RT2870 //
 
 VOID NICReadEEPROMParameters(
        IN  PRTMP_ADAPTER       pAd,
@@ -2981,10 +3223,10 @@ NDIS_STATUS NICInitializeAdapter(
 NDIS_STATUS NICInitializeAsic(
        IN  PRTMP_ADAPTER   pAd,
        IN  BOOLEAN             bHardReset);
-
+#ifdef RT2860
 VOID NICRestoreBBPValue(
        IN PRTMP_ADAPTER pAd);
-
+#endif
 VOID NICIssueReset(
        IN  PRTMP_ADAPTER   pAd);
 
@@ -2992,13 +3234,6 @@ VOID RTMPRingCleanUp(
        IN  PRTMP_ADAPTER   pAd,
        IN  UCHAR           RingType);
 
-VOID RxTest(
-       IN  PRTMP_ADAPTER   pAd);
-
-NDIS_STATUS DbgSendPacket(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  PNDIS_PACKET    pPacket);
-
 VOID UserCfgInit(
        IN  PRTMP_ADAPTER   pAd);
 
@@ -3052,26 +3287,6 @@ UCHAR BtoH(
 VOID RTMPPatchMacBbpBug(
        IN  PRTMP_ADAPTER   pAd);
 
-VOID RTMPPatchCardBus(
-       IN      PRTMP_ADAPTER   pAdapter);
-
-VOID RTMPPatchRalinkCardBus(
-       IN      PRTMP_ADAPTER   pAdapter,
-       IN      ULONG                   Bus);
-
-ULONG RTMPReadCBConfig(
-       IN      ULONG   Bus,
-       IN      ULONG   Slot,
-       IN      ULONG   Func,
-       IN      ULONG   Offset);
-
-VOID RTMPWriteCBConfig(
-       IN      ULONG   Bus,
-       IN      ULONG   Slot,
-       IN      ULONG   Func,
-       IN      ULONG   Offset,
-       IN      ULONG   Value);
-
 VOID RTMPInitTimer(
        IN  PRTMP_ADAPTER           pAd,
        IN  PRALINK_TIMER_STRUCT    pTimer,
@@ -3131,7 +3346,6 @@ VOID MlmeQOSAction(
     IN PRTMP_ADAPTER pAd,
     IN MLME_QUEUE_ELEM *Elem);
 
-#ifdef DOT11_N_SUPPORT
 VOID PeerAddBAReqAction(
        IN PRTMP_ADAPTER pAd,
        IN MLME_QUEUE_ELEM *Elem);
@@ -3147,7 +3361,6 @@ VOID PeerDelBAAction(
 VOID PeerBAAction(
     IN PRTMP_ADAPTER pAd,
     IN MLME_QUEUE_ELEM *Elem);
-#endif // DOT11_N_SUPPORT //
 
 VOID SendPSMPAction(
        IN PRTMP_ADAPTER        pAd,
@@ -3162,25 +3375,14 @@ VOID PeerPublicAction(
        IN PRTMP_ADAPTER pAd,
        IN MLME_QUEUE_ELEM *Elem);
 
-VOID StaPublicAction(
-       IN PRTMP_ADAPTER pAd,
-       IN UCHAR Bss2040Coexist);
-
-VOID PeerBSSTranAction(
-       IN PRTMP_ADAPTER pAd,
-       IN MLME_QUEUE_ELEM *Elem);
-
-#ifdef DOT11_N_SUPPORT
 VOID PeerHTAction(
        IN PRTMP_ADAPTER pAd,
        IN MLME_QUEUE_ELEM *Elem);
-#endif // DOT11_N_SUPPORT //
 
 VOID PeerQOSAction(
     IN PRTMP_ADAPTER pAd,
     IN MLME_QUEUE_ELEM *Elem);
 
-#ifdef DOT11_N_SUPPORT
 VOID RECBATimerTimeout(
     IN PVOID SystemSpecific1,
     IN PVOID FunctionContext,
@@ -3193,7 +3395,6 @@ VOID ORIBATimerTimeout(
 VOID SendRefreshBAR(
        IN      PRTMP_ADAPTER   pAd,
        IN      MAC_TABLE_ENTRY *pEntry);
-#endif // DOT11_N_SUPPORT //
 
 VOID ActHeaderInit(
     IN PRTMP_ADAPTER   pAd,
@@ -3215,41 +3416,18 @@ VOID InsertActField(
        IN UINT8 Category,
        IN UINT8 ActCode);
 
-BOOLEAN QosBADataParse(
-       IN PRTMP_ADAPTER        pAd,
-       IN BOOLEAN bAMSDU,
-       IN PUCHAR p8023Header,
-       IN UCHAR        WCID,
-       IN UCHAR        TID,
-       IN USHORT Sequence,
-       IN UCHAR DataOffset,
-       IN USHORT Datasize,
-       IN UINT   CurRxIndex);
-
-#ifdef DOT11_N_SUPPORT
 BOOLEAN CntlEnqueueForRecv(
     IN PRTMP_ADAPTER   pAd,
        IN ULONG Wcid,
     IN ULONG MsgLen,
        IN PFRAME_BA_REQ pMsg);
 
-VOID BaAutoManSwitch(
-       IN      PRTMP_ADAPTER   pAd);
-#endif // DOT11_N_SUPPORT //
-
-VOID HTIOTCheck(
-       IN      PRTMP_ADAPTER   pAd,
-       IN    UCHAR     BatRecIdx);
-
 //
 // Private routines in rtmp_data.c
 //
 BOOLEAN RTMPHandleRxDoneInterrupt(
        IN  PRTMP_ADAPTER   pAd);
 
-VOID RTMPHandleTxDoneInterrupt(
-       IN  PRTMP_ADAPTER   pAd);
-
 BOOLEAN RTMPHandleTxRingDmaDoneInterrupt(
        IN  PRTMP_ADAPTER   pAd,
        IN  INT_SOURCE_CSR_STRUC TxRingBitmap);
@@ -3391,7 +3569,13 @@ NDIS_STATUS MiniportMMRequest(
        IN      UCHAR                   QueIdx,
        IN      PUCHAR                  pData,
        IN  UINT            Length);
-
+#ifdef RT2870
+NDIS_STATUS MiniportDataMMRequest(
+        IN  PRTMP_ADAPTER   pAd,
+        IN  UCHAR           QueIdx,
+        IN  PUCHAR          pData,
+        IN  UINT            Length);
+#endif
 VOID RTMPSendNullFrame(
        IN  PRTMP_ADAPTER   pAd,
        IN  UCHAR           TxRate,
@@ -3410,12 +3594,6 @@ VOID RTMPSendRTSFrame(
        IN  UCHAR           QueIdx,
        IN  UCHAR                       FrameGap);
 
-
-NDIS_STATUS RTMPApplyPacketFilter(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  PRT28XX_RXD_STRUC      pRxD,
-       IN  PHEADER_802_11  pHeader);
-
 PQUEUE_HEADER   RTMPCheckTxSwQueue(
        IN  PRTMP_ADAPTER   pAd,
        OUT UCHAR           *QueIdx);
@@ -3466,10 +3644,6 @@ BOOLEAN RTMPCheckEtherType(
        IN      PNDIS_PACKET    pPacket);
 
 
-VOID RTMPCckBbpTuning(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      UINT                    TxRate);
-
 //
 // Private routines in rtmp_wep.c
 //
@@ -3486,12 +3660,6 @@ VOID RTMPEncryptData(
        IN  PUCHAR          pDest,
        IN  UINT            Len);
 
-BOOLEAN        RTMPDecryptData(
-       IN      PRTMP_ADAPTER   pAdapter,
-       IN      PUCHAR                  pSrc,
-       IN      UINT                    Len,
-       IN      UINT                    idx);
-
 BOOLEAN        RTMPSoftDecryptWEP(
        IN PRTMP_ADAPTER        pAd,
        IN PUCHAR                       pData,
@@ -3581,7 +3749,12 @@ VOID AsicForceSleep(
 
 VOID AsicForceWakeup(
        IN PRTMP_ADAPTER pAd,
+#ifdef RT2860
        IN UCHAR         Level);
+#endif
+#ifdef RT2870
+       IN BOOLEAN    bFromTx);
+#endif
 
 VOID AsicSetBssid(
        IN  PRTMP_ADAPTER   pAd,
@@ -3675,11 +3848,11 @@ BOOLEAN AsicSendCommandToMcu(
        IN UCHAR         Token,
        IN UCHAR         Arg0,
        IN UCHAR         Arg1);
-
+#ifdef RT2860
 BOOLEAN AsicCheckCommanOk(
        IN PRTMP_ADAPTER pAd,
        IN UCHAR                 Command);
-
+#endif
 VOID MacAddrRandomBssid(
        IN  PRTMP_ADAPTER   pAd,
        OUT PUCHAR pAddr);
@@ -3702,11 +3875,9 @@ VOID MlmeRadioOn(
 VOID BssTableInit(
        IN BSS_TABLE *Tab);
 
-#ifdef DOT11_N_SUPPORT
 VOID BATableInit(
        IN PRTMP_ADAPTER pAd,
     IN BA_TABLE *Tab);
-#endif // DOT11_N_SUPPORT //
 
 ULONG BssTableSearch(
        IN BSS_TABLE *Tab,
@@ -3732,29 +3903,10 @@ VOID BssTableDeleteEntry(
        IN      PUCHAR pBssid,
        IN      UCHAR Channel);
 
-#ifdef DOT11_N_SUPPORT
 VOID BATableDeleteORIEntry(
        IN OUT  PRTMP_ADAPTER pAd,
        IN              BA_ORI_ENTRY    *pBAORIEntry);
 
-VOID BATableDeleteRECEntry(
-       IN OUT  PRTMP_ADAPTER pAd,
-       IN              BA_REC_ENTRY    *pBARECEntry);
-
-VOID BATableTearORIEntry(
-       IN OUT  PRTMP_ADAPTER pAd,
-       IN              UCHAR TID,
-       IN              UCHAR Wcid,
-       IN              BOOLEAN bForceDelete,
-       IN              BOOLEAN ALL);
-
-VOID BATableTearRECEntry(
-       IN OUT  PRTMP_ADAPTER pAd,
-       IN              UCHAR TID,
-       IN              UCHAR WCID,
-       IN              BOOLEAN ALL);
-#endif // DOT11_N_SUPPORT //
-
 VOID  BssEntrySet(
        IN  PRTMP_ADAPTER   pAd,
        OUT PBSS_ENTRY pBss,
@@ -3815,7 +3967,6 @@ ULONG  BssTableSetEntry(
        IN USHORT LengthVIE,
        IN PNDIS_802_11_VARIABLE_IEs pVIE);
 
-#ifdef DOT11_N_SUPPORT
 VOID BATableInsertEntry(
     IN PRTMP_ADAPTER   pAd,
        IN USHORT Aid,
@@ -3825,7 +3976,6 @@ VOID BATableInsertEntry(
        IN UCHAR BAWinSize,
        IN UCHAR OriginatorStatus,
     IN BOOLEAN IsRecipient);
-#endif // DOT11_N_SUPPORT //
 
 VOID BssTableSsidSort(
        IN  PRTMP_ADAPTER   pAd,
@@ -3932,10 +4082,6 @@ VOID DisassocTimeout(
        IN PVOID SystemSpecific3);
 
 //----------------------------------------------
-VOID MlmeDisassocReqAction(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  MLME_QUEUE_ELEM *Elem);
-
 VOID MlmeAssocReqAction(
        IN  PRTMP_ADAPTER   pAd,
        IN  MLME_QUEUE_ELEM *Elem);
@@ -3991,6 +4137,12 @@ VOID InvalidStateWhenDisassociate(
        IN  PRTMP_ADAPTER pAd,
        IN  MLME_QUEUE_ELEM *Elem);
 
+#ifdef RT2870
+VOID MlmeCntlConfirm(
+       IN PRTMP_ADAPTER pAd,
+       IN ULONG MsgType,
+       IN USHORT Msg);
+#endif // RT2870 //
 
 VOID  ComposePsPoll(
        IN  PRTMP_ADAPTER   pAd);
@@ -4093,10 +4245,6 @@ VOID ScanTimeout(
        IN PVOID SystemSpecific2,
        IN PVOID SystemSpecific3);
 
-VOID MlmeScanReqAction(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  MLME_QUEUE_ELEM *Elem);
-
 VOID InvalidStateWhenScan(
        IN  PRTMP_ADAPTER   pAd,
        IN  MLME_QUEUE_ELEM *Elem);
@@ -4109,10 +4257,6 @@ VOID InvalidStateWhenStart(
        IN  PRTMP_ADAPTER   pAd,
        IN  MLME_QUEUE_ELEM *Elem);
 
-VOID PeerBeacon(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  MLME_QUEUE_ELEM *Elem);
-
 VOID EnqueueProbeRequest(
        IN PRTMP_ADAPTER pAd);
 
@@ -4486,12 +4630,6 @@ VOID LinkDownExec(
        IN PVOID SystemSpecific2,
        IN PVOID SystemSpecific3);
 
-VOID LinkUpExec(
-       IN PVOID SystemSpecific1,
-       IN PVOID FunctionContext,
-       IN PVOID SystemSpecific2,
-       IN PVOID SystemSpecific3);
-
 VOID STAMlmePeriodicExec(
        PRTMP_ADAPTER pAd);
 
@@ -4552,11 +4690,9 @@ VOID MlmeUpdateTxRates(
        IN      BOOLEAN                 bLinkUp,
        IN      UCHAR                   apidx);
 
-#ifdef DOT11_N_SUPPORT
 VOID MlmeUpdateHtTxRates(
        IN PRTMP_ADAPTER                pAd,
        IN      UCHAR                           apidx);
-#endif // DOT11_N_SUPPORT //
 
 VOID    RTMPCheckRates(
        IN      PRTMP_ADAPTER   pAd,
@@ -4580,12 +4716,6 @@ VOID StaQuickResponeForRateUpExec(
        IN PVOID SystemSpecific2,
        IN PVOID SystemSpecific3);
 
-VOID AsicBbpTuning1(
-       IN PRTMP_ADAPTER pAd);
-
-VOID AsicBbpTuning2(
-       IN PRTMP_ADAPTER pAd);
-
 VOID RTMPUpdateMlmeRate(
        IN PRTMP_ADAPTER        pAd);
 
@@ -4595,6 +4725,10 @@ CHAR RTMPMaxRssi(
        IN CHAR                         Rssi1,
        IN CHAR                         Rssi2);
 
+VOID AsicSetRxAnt(
+       IN PRTMP_ADAPTER        pAd,
+       IN UCHAR                        Ant);
+
 VOID AsicEvaluateRxAnt(
        IN PRTMP_ADAPTER        pAd);
 
@@ -4651,31 +4785,6 @@ VOID ChangeToCellPowerLimit(
        IN PRTMP_ADAPTER pAd,
        IN UCHAR         AironetCellPowerLimit);
 
-VOID RaiseClock(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  UINT32 *x);
-
-VOID LowerClock(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  UINT32 *x);
-
-USHORT ShiftInBits(
-       IN  PRTMP_ADAPTER   pAd);
-
-VOID ShiftOutBits(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  USHORT data,
-       IN  USHORT count);
-
-VOID EEpromCleanup(
-       IN  PRTMP_ADAPTER   pAd);
-
-VOID EWDS(
-       IN  PRTMP_ADAPTER   pAd);
-
-VOID EWEN(
-       IN  PRTMP_ADAPTER   pAd);
-
 USHORT RTMP_EEPROM_READ16(
        IN  PRTMP_ADAPTER   pAd,
        IN  USHORT Offset);
@@ -4801,19 +4910,12 @@ VOID RTMPIoctlGetMacTable(
        IN PRTMP_ADAPTER pAd,
        IN struct iwreq *wrq);
 
-VOID RTMPIndicateWPA2Status(
-       IN  PRTMP_ADAPTER  pAdapter);
-
-VOID   RTMPOPModeSwitching(
-       IN      PRTMP_ADAPTER   pAd);
-
 VOID    RTMPAddBSSIDCipher(
     IN  PRTMP_ADAPTER   pAd,
        IN      UCHAR   Aid,
     IN  PNDIS_802_11_KEY    pKey,
     IN  UCHAR   CipherAlg);
 
-#ifdef DOT11_N_SUPPORT
 VOID   RTMPSetHT(
        IN      PRTMP_ADAPTER   pAd,
        IN      OID_SET_HT_PHYMODE *pHTPhyMode);
@@ -4821,7 +4923,6 @@ VOID      RTMPSetHT(
 VOID   RTMPSetIndividualHT(
        IN      PRTMP_ADAPTER           pAd,
        IN      UCHAR                           apidx);
-#endif // DOT11_N_SUPPORT //
 
 VOID RTMPSendWirelessEvent(
        IN      PRTMP_ADAPTER   pAd,
@@ -4830,11 +4931,6 @@ VOID RTMPSendWirelessEvent(
        IN  UCHAR                       BssIdx,
        IN      CHAR                    Rssi);
 
-VOID   NICUpdateCntlCounters(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PHEADER_802_11  pHeader,
-       IN    UCHAR                     SubType,
-       IN      PRXWI_STRUC     pRxWI);
 //
 // prototype in wpa.c
 //
@@ -4998,13 +5094,6 @@ CHAR    ConvertToRssi(
        IN CHAR                         Rssi,
        IN UCHAR    RssiNumber);
 
-VOID APAsicEvaluateRxAnt(
-       IN PRTMP_ADAPTER        pAd);
-
-
-VOID APAsicRxAntEvalTimeout(
-       IN PRTMP_ADAPTER        pAd);
-
 //
 // function prototype in cmm_wpa.c
 //
@@ -5089,228 +5178,56 @@ VOID RTMPMakeRSNIE(
 // function prototype in ap_wpa.c
 //
 
-BOOLEAN APWpaMsgTypeSubst(
-       IN UCHAR    EAPType,
-       OUT INT *MsgType) ;
-
-MAC_TABLE_ENTRY *PACInquiry(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  ULONG           Wcid);
-
-BOOLEAN RTMPCheckMcast(
-       IN PRTMP_ADAPTER pAd,
-       IN PEID_STRUCT      eid_ptr,
-       IN MAC_TABLE_ENTRY  *pEntry);
-
-BOOLEAN RTMPCheckUcast(
+VOID HandleCounterMeasure(
        IN PRTMP_ADAPTER pAd,
-       IN PEID_STRUCT      eid_ptr,
        IN MAC_TABLE_ENTRY  *pEntry);
 
-BOOLEAN RTMPCheckAUTH(
-       IN PRTMP_ADAPTER pAd,
-       IN PEID_STRUCT      eid_ptr,
-       IN MAC_TABLE_ENTRY  *pEntry);
+VOID AES_GTK_KEY_WRAP(
+       IN UCHAR *key,
+       IN UCHAR *plaintext,
+       IN UCHAR p_len,
+       OUT UCHAR *ciphertext);
 
-VOID WPAStart4WayHS(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  MAC_TABLE_ENTRY *pEntry,
-       IN      ULONG                   TimeInterval);
+/* timeout -- ms */
+VOID RTMP_SetPeriodicTimer(
+       IN      NDIS_MINIPORT_TIMER *pTimer,
+       IN      unsigned long timeout);
 
-VOID WPAStart2WayGroupHS(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  MAC_TABLE_ENTRY *pEntry);
+VOID RTMP_OS_Init_Timer(
+       IN      PRTMP_ADAPTER pAd,
+       IN      NDIS_MINIPORT_TIMER *pTimer,
+       IN      TIMER_FUNCTION function,
+       IN      PVOID data);
 
-VOID APWpaEAPPacketAction(
-       IN PRTMP_ADAPTER pAd,
-       IN MLME_QUEUE_ELEM *Elem);
+VOID RTMP_OS_Add_Timer(
+       IN      NDIS_MINIPORT_TIMER     *pTimer,
+       IN      unsigned long timeout);
 
-VOID APWpaEAPOLStartAction(
-       IN PRTMP_ADAPTER pAd,
-       IN MLME_QUEUE_ELEM *Elem);
+VOID RTMP_OS_Mod_Timer(
+       IN      NDIS_MINIPORT_TIMER     *pTimer,
+       IN      unsigned long timeout);
 
-VOID APWpaEAPOLLogoffAction(
-       IN PRTMP_ADAPTER pAd,
-       IN MLME_QUEUE_ELEM *Elem);
 
-VOID APWpaEAPOLKeyAction(
-       IN PRTMP_ADAPTER pAd,
-       IN MLME_QUEUE_ELEM *Elem);
+VOID RTMP_OS_Del_Timer(
+       IN      NDIS_MINIPORT_TIMER     *pTimer,
+       OUT     BOOLEAN                          *pCancelled);
 
-VOID APWpaEAPOLASFAlertAction(
-       IN  PRTMP_ADAPTER    pAd,
-       IN  MLME_QUEUE_ELEM  *Elem);
 
-VOID HandleCounterMeasure(
-       IN PRTMP_ADAPTER pAd,
-       IN MAC_TABLE_ENTRY  *pEntry);
+VOID RTMP_OS_Release_Packet(
+       IN      PRTMP_ADAPTER pAd,
+       IN      PQUEUE_ENTRY  pEntry);
 
-VOID PeerPairMsg2Action(
-       IN PRTMP_ADAPTER pAd,
-       IN MAC_TABLE_ENTRY  *pEntry,
-       IN MLME_QUEUE_ELEM *Elem);
+VOID RTMPusecDelay(
+       IN      ULONG   usec);
 
-VOID PeerPairMsg4Action(
-       IN PRTMP_ADAPTER pAd,
-       IN MAC_TABLE_ENTRY  *pEntry,
-       IN MLME_QUEUE_ELEM *Elem);
+NDIS_STATUS os_alloc_mem(
+       IN      PRTMP_ADAPTER pAd,
+       OUT     PUCHAR *mem,
+       IN      ULONG  size);
 
-VOID CMTimerExec(
-       IN PVOID SystemSpecific1,
-       IN PVOID FunctionContext,
-       IN PVOID SystemSpecific2,
-       IN PVOID SystemSpecific3);
-
-VOID WPARetryExec(
-       IN PVOID SystemSpecific1,
-       IN PVOID FunctionContext,
-       IN PVOID SystemSpecific2,
-       IN PVOID SystemSpecific3);
-
-VOID EnqueueStartForPSKExec(
-    IN PVOID SystemSpecific1,
-    IN PVOID FunctionContext,
-    IN PVOID SystemSpecific2,
-    IN PVOID SystemSpecific3);
-
-VOID RTMPHandleSTAKey(
-    IN PRTMP_ADAPTER    pAdapter,
-    IN MAC_TABLE_ENTRY  *pEntry,
-    IN MLME_QUEUE_ELEM  *Elem);
-
-VOID PeerGroupMsg2Action(
-       IN  PRTMP_ADAPTER    pAd,
-       IN  PMAC_TABLE_ENTRY pEntry,
-       IN  VOID             *Msg,
-       IN  UINT             MsgLen);
-
-VOID PairDisAssocAction(
-       IN  PRTMP_ADAPTER    pAd,
-       IN  PMAC_TABLE_ENTRY pEntry,
-       IN  USHORT           Reason);
-
-VOID MlmeDeAuthAction(
-       IN  PRTMP_ADAPTER    pAd,
-       IN  PMAC_TABLE_ENTRY pEntry,
-       IN  USHORT           Reason);
-
-VOID GREKEYPeriodicExec(
-       IN  PVOID   SystemSpecific1,
-       IN  PVOID   FunctionContext,
-       IN  PVOID   SystemSpecific2,
-       IN  PVOID   SystemSpecific3);
-
-VOID CountGTK(
-       IN  UCHAR   *PMK,
-       IN  UCHAR   *GNonce,
-       IN  UCHAR   *AA,
-       OUT UCHAR   *output,
-       IN  UINT    len);
-
-VOID    GetSmall(
-       IN  PVOID   pSrc1,
-       IN  PVOID   pSrc2,
-       OUT PUCHAR  out,
-       IN  ULONG   Length);
-
-VOID    GetLarge(
-       IN  PVOID   pSrc1,
-       IN  PVOID   pSrc2,
-       OUT PUCHAR  out,
-       IN  ULONG   Length);
-
-VOID APGenRandom(
-       IN PRTMP_ADAPTER pAd,
-       OUT UCHAR       *random);
-
-VOID AES_GTK_KEY_WRAP(
-       IN UCHAR *key,
-       IN UCHAR *plaintext,
-       IN UCHAR p_len,
-       OUT UCHAR *ciphertext);
-
-VOID    WpaSend(
-    IN  PRTMP_ADAPTER   pAdapter,
-    IN  PUCHAR          pPacket,
-    IN  ULONG           Len);
-
-VOID    APToWirelessSta(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  MAC_TABLE_ENTRY *pEntry,
-       IN  PUCHAR          pHeader802_3,
-       IN  UINT            HdrLen,
-       IN  PUCHAR          pData,
-       IN  UINT            DataLen,
-    IN BOOLEAN                 bClearFrame);
-
-VOID RTMPAddPMKIDCache(
-       IN  PRTMP_ADAPTER               pAd,
-       IN      INT                                             apidx,
-       IN      PUCHAR                          pAddr,
-       IN      UCHAR                                   *PMKID,
-       IN      UCHAR                                   *PMK);
-
-INT RTMPSearchPMKIDCache(
-       IN  PRTMP_ADAPTER   pAd,
-       IN      INT                             apidx,
-       IN      PUCHAR          pAddr);
-
-VOID RTMPDeletePMKIDCache(
-       IN  PRTMP_ADAPTER   pAd,
-       IN      INT                             apidx,
-       IN  INT                         idx);
-
-VOID RTMPMaintainPMKIDCache(
-       IN  PRTMP_ADAPTER   pAd);
-
-VOID   RTMPSendTriggerFrame(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PVOID                   pBuffer,
-       IN      ULONG                   Length,
-       IN  UCHAR           TxRate,
-       IN      BOOLEAN                 bQosNull);
-
-
-/* timeout -- ms */
-VOID RTMP_SetPeriodicTimer(
-       IN      NDIS_MINIPORT_TIMER *pTimer,
-       IN      unsigned long timeout);
-
-VOID RTMP_OS_Init_Timer(
-       IN      PRTMP_ADAPTER pAd,
-       IN      NDIS_MINIPORT_TIMER *pTimer,
-       IN      TIMER_FUNCTION function,
-       IN      PVOID data);
-
-VOID RTMP_OS_Add_Timer(
-       IN      NDIS_MINIPORT_TIMER     *pTimer,
-       IN      unsigned long timeout);
-
-VOID RTMP_OS_Mod_Timer(
-       IN      NDIS_MINIPORT_TIMER     *pTimer,
-       IN      unsigned long timeout);
-
-
-VOID RTMP_OS_Del_Timer(
-       IN      NDIS_MINIPORT_TIMER     *pTimer,
-       OUT     BOOLEAN                          *pCancelled);
-
-
-VOID RTMP_OS_Release_Packet(
-       IN      PRTMP_ADAPTER pAd,
-       IN      PQUEUE_ENTRY  pEntry);
-
-VOID RTMPusecDelay(
-       IN      ULONG   usec);
-
-NDIS_STATUS os_alloc_mem(
-       IN      PRTMP_ADAPTER pAd,
-       OUT     PUCHAR *mem,
-       IN      ULONG  size);
-
-NDIS_STATUS os_free_mem(
-       IN      PRTMP_ADAPTER pAd,
-       IN      PUCHAR mem);
+NDIS_STATUS os_free_mem(
+       IN      PRTMP_ADAPTER pAd,
+       IN      PUCHAR mem);
 
 
 void RTMP_AllocateSharedMemory(
@@ -5405,23 +5322,6 @@ UINT BA_Reorder_AMSDU_Annnounce(
        IN      PRTMP_ADAPTER   pAd,
        IN      PNDIS_PACKET    pPacket);
 
-
-UINT Handle_AMSDU_Packet(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PUCHAR                  pData,
-       IN      ULONG                   DataSize,
-       IN  UCHAR                       FromWhichBSSID);
-
-
-void convert_802_11_to_802_3_packet(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PNDIS_PACKET    pPacket,
-       IN      PUCHAR                  p8023hdr,
-       IN      PUCHAR                  pData,
-       IN      ULONG                   DataSize,
-       IN  UCHAR                       FromWhichBSSID);
-
-
 PNET_DEV get_netdev_from_bssid(
        IN      PRTMP_ADAPTER   pAd,
        IN      UCHAR                   FromWhichBSSID);
@@ -5440,28 +5340,6 @@ PNDIS_PACKET duplicate_pkt_with_TKIP_MIC(
        IN      PRTMP_ADAPTER   pAd,
        IN      PNDIS_PACKET    pOldPkt);
 
-PNDIS_PACKET duplicate_pkt_with_VLAN(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PUCHAR                  pHeader802_3,
-    IN  UINT            HdrLen,
-       IN      PUCHAR                  pData,
-       IN      ULONG                   DataSize,
-       IN      UCHAR                   FromWhichBSSID);
-
-PNDIS_PACKET duplicate_pkt_with_WPI(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PNDIS_PACKET    pPacket,
-       IN      UINT32                  ext_head_len,
-       IN      UINT32                  ext_tail_len);
-
-UCHAR VLAN_8023_Header_Copy(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PUCHAR                  pHeader802_3,
-       IN      UINT            HdrLen,
-       OUT PUCHAR                      pData,
-       IN      UCHAR                   FromWhichBSSID);
-
-#ifdef DOT11_N_SUPPORT
 void ba_flush_reordering_timeout_mpdus(
        IN PRTMP_ADAPTER        pAd,
        IN PBA_REC_ENTRY        pBAEntry,
@@ -5479,7 +5357,6 @@ VOID BAOriSessionSetUp(
 VOID BASessionTearDownALL(
        IN OUT  PRTMP_ADAPTER pAd,
        IN              UCHAR Wcid);
-#endif // DOT11_N_SUPPORT //
 
 BOOLEAN OS_Need_Clone_Packet(void);
 
@@ -5507,29 +5384,6 @@ VOID BARecSessionTearDown(
 BOOLEAN ba_reordering_resource_init(PRTMP_ADAPTER pAd, int num);
 void ba_reordering_resource_release(PRTMP_ADAPTER pAd);
 
-ULONG AutoChBssInsertEntry(
-       IN PRTMP_ADAPTER pAd,
-       IN PUCHAR pBssid,
-       IN CHAR Ssid[],
-       IN UCHAR SsidLen,
-       IN UCHAR ChannelNo,
-       IN CHAR Rssi);
-
-void AutoChBssTableInit(
-       IN PRTMP_ADAPTER pAd);
-
-void ChannelInfoInit(
-       IN PRTMP_ADAPTER pAd);
-
-void AutoChBssTableDestroy(
-       IN PRTMP_ADAPTER pAd);
-
-void ChannelInfoDestroy(
-       IN PRTMP_ADAPTER pAd);
-
-UCHAR New_ApAutoSelectChannel(
-       IN PRTMP_ADAPTER pAd);
-
 BOOLEAN rtstrmactohex(
        IN char *s1,
        IN char *s2);
@@ -5627,7 +5481,6 @@ INT       Set_ResetStatCounter_Proc(
        IN      PRTMP_ADAPTER   pAd,
        IN      PUCHAR                  arg);
 
-#ifdef DOT11_N_SUPPORT
 INT    Set_BASetup_Proc(
        IN      PRTMP_ADAPTER   pAd,
        IN      PUCHAR                  arg);
@@ -5728,21 +5581,7 @@ INT      Set_HtMIMOPSmode_Proc(
 INT    Set_HtTxBASize_Proc(
        IN      PRTMP_ADAPTER   pAd,
        IN      PUCHAR                  arg);
-#endif // DOT11_N_SUPPORT //
-
-//Dls ,        kathy
-VOID RTMPSendDLSTearDownFrame(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PUCHAR                  pDA);
-
-#ifdef DOT11_N_SUPPORT
-//Block ACK
-VOID QueryBATABLE(
-       IN  PRTMP_ADAPTER pAd,
-       OUT PQUERYBA_TABLE pBAT);
-#endif // DOT11_N_SUPPORT //
 
-#ifdef WPA_SUPPLICANT_SUPPORT
 INT        WpaCheckEapCode(
        IN  PRTMP_ADAPTER       pAd,
        IN  PUCHAR                              pFrame,
@@ -5753,33 +5592,13 @@ VOID    WpaSendMicFailureToWpaSupplicant(
     IN  PRTMP_ADAPTER       pAd,
     IN  BOOLEAN             bUnicast);
 
-VOID    SendAssocIEsToWpaSupplicant(
-    IN  PRTMP_ADAPTER       pAd);
-#endif // WPA_SUPPLICANT_SUPPORT //
-
-#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
 int wext_notify_event_assoc(
        IN  RTMP_ADAPTER *pAd);
-#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
-
-#ifdef DOT11_N_SUPPORT
-VOID Handle_BSS_Width_Trigger_Events(
-       IN PRTMP_ADAPTER pAd);
-
-void build_ext_channel_switch_ie(
-       IN PRTMP_ADAPTER pAd,
-       IN HT_EXT_CHANNEL_SWITCH_ANNOUNCEMENT_IE *pIE);
-#endif // DOT11_N_SUPPORT //
-
-
-BOOLEAN APRxDoneInterruptHandle(
-       IN      PRTMP_ADAPTER   pAd);
 
 BOOLEAN STARxDoneInterruptHandle(
        IN      PRTMP_ADAPTER   pAd,
        IN      BOOLEAN                 argc);
 
-#ifdef DOT11_N_SUPPORT
 // AMPDU packet indication
 VOID Indicate_AMPDU_Packet(
        IN      PRTMP_ADAPTER   pAd,
@@ -5791,7 +5610,6 @@ VOID Indicate_AMSDU_Packet(
        IN      PRTMP_ADAPTER   pAd,
        IN      RX_BLK                  *pRxBlk,
        IN      UCHAR                   FromWhichBSSID);
-#endif // DOT11_N_SUPPORT //
 
 // Normal legacy Rx packet indication
 VOID Indicate_Legacy_Packet(
@@ -5852,16 +5670,6 @@ UINT deaggregate_AMSDU_announce(
                _pRxBlk->DataSize, _pRemovedLLCSNAP);                                   \
 }
 
-BOOLEAN APFowardWirelessStaToWirelessSta(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PNDIS_PACKET    pPacket,
-       IN      ULONG                   FromWhichBSSID);
-
-VOID Announce_or_Forward_802_3_Packet(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PNDIS_PACKET    pPacket,
-       IN      UCHAR                   FromWhichBSSID);
-
 VOID Sta_Announce_or_Forward_802_3_Packet(
        IN      PRTMP_ADAPTER   pAd,
        IN      PNDIS_PACKET    pPacket,
@@ -5901,12 +5709,6 @@ VOID Update_Rssi_Sample(
        IN RSSI_SAMPLE          *pRssi,
        IN PRXWI_STRUC          pRxWI);
 
-PNDIS_PACKET GetPacketFromRxRing(
-       IN              PRTMP_ADAPTER   pAd,
-       OUT             PRT28XX_RXD_STRUC               pSaveRxD,
-       OUT             BOOLEAN                 *pbReschedule,
-       IN OUT  UINT32                  *pRxPending);
-
 PNDIS_PACKET RTMPDeFragmentDataFrame(
        IN      PRTMP_ADAPTER   pAd,
        IN      RX_BLK                  *pRxBlk);
@@ -6015,11 +5817,9 @@ void send_monitor_packets(
        IN      PRTMP_ADAPTER   pAd,
        IN      RX_BLK                  *pRxBlk);
 
-#if WIRELESS_EXT >= 12
 // This function will be called when query /proc
 struct iw_statistics *rt28xx_get_wireless_stats(
     IN struct net_device *net_dev);
-#endif
 
 VOID    RTMPSetDesiredRates(
     IN  PRTMP_ADAPTER   pAdapter,
@@ -6039,13 +5839,11 @@ static inline char* GetPhyMode(
 
                case MODE_OFDM:
                        return "OFDM";
-#ifdef DOT11_N_SUPPORT
                case MODE_HTMIX:
                        return "HTMIX";
 
                case MODE_HTGREENFIELD:
                        return "GREEN";
-#endif // DOT11_N_SUPPORT //
                default:
                        return "N/A";
        }
@@ -6062,10 +5860,8 @@ static inline char* GetBW(
 
                case BW_20:
                        return "20M";
-#ifdef DOT11_N_SUPPORT
                case BW_40:
                        return "40M";
-#endif // DOT11_N_SUPPORT //
                default:
                        return "N/A";
        }
@@ -6100,22 +5896,11 @@ VOID RT28xx_UpdateBeaconToAsic(
        IN ULONG BeaconLen,
        IN ULONG UpdatePos);
 
-INT rt28xx_ioctl(
-       IN      struct net_device       *net_dev,
-       IN      OUT     struct ifreq    *rq,
-       IN      INT                     cmd);
-
 INT rt28xx_sta_ioctl(
        IN      struct net_device       *net_dev,
        IN      OUT     struct ifreq    *rq,
        IN      INT                     cmd);
 
-BOOLEAN RT28XXSecurityKeyAdd(
-       IN              PRTMP_ADAPTER           pAd,
-       IN              ULONG                           apidx,
-       IN              ULONG                           KeyIdx,
-       IN              MAC_TABLE_ENTRY         *pEntry);
-
 ////////////////////////////////////////
 PNDIS_PACKET GetPacketFromRxRing(
        IN              PRTMP_ADAPTER   pAd,
@@ -6128,6 +5913,7 @@ void kill_thread_task(PRTMP_ADAPTER pAd);
 
 void tbtt_tasklet(unsigned long data);
 
+#ifdef RT2860
 //
 // Function Prototype in cmm_data_2860.c
 //
@@ -6240,6 +6026,7 @@ VOID RT28xxPciMlmeRadioOn(
 
 VOID RT28xxPciMlmeRadioOFF(
        IN PRTMP_ADAPTER pAd);
+#endif /* RT2860 */
 
 VOID AsicTurnOffRFClk(
        IN PRTMP_ADAPTER    pAd,
@@ -6249,20 +6036,434 @@ VOID AsicTurnOnRFClk(
        IN PRTMP_ADAPTER        pAd,
        IN      UCHAR                   Channel);
 
+NTSTATUS RT30xxWriteRFRegister(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      UCHAR                   RegID,
+       IN      UCHAR                   Value);
+
+NTSTATUS RT30xxReadRFRegister(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      UCHAR                   RegID,
+       IN      PUCHAR                  pValue);
 
-////////////////////////////////////////
+UCHAR eFuseReadRegisters(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      USHORT Offset,
+       IN      USHORT Length,
+       OUT     USHORT* pData);
+
+VOID eFuseReadPhysical(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      PUSHORT lpInBuffer,
+       IN      ULONG nInBufferSize,
+       OUT     PUSHORT lpOutBuffer,
+       IN      ULONG nOutBufferSize
+);
+
+NTSTATUS eFuseRead(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      USHORT                  Offset,
+       OUT     PUCHAR                  pData,
+       IN      USHORT                  Length);
+
+VOID eFusePhysicalWriteRegisters(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      USHORT Offset,
+       IN      USHORT Length,
+       OUT     USHORT* pData);
+
+NTSTATUS eFuseWriteRegisters(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      USHORT Offset,
+       IN      USHORT Length,
+       IN      USHORT* pData);
+
+VOID eFuseWritePhysical(
+       IN      PRTMP_ADAPTER   pAd,
+       PUSHORT lpInBuffer,
+       ULONG nInBufferSize,
+       PUCHAR lpOutBuffer,
+       ULONG nOutBufferSize
+);
+
+NTSTATUS eFuseWrite(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      USHORT                  Offset,
+       IN      PUCHAR                  pData,
+       IN      USHORT                  length);
+
+INT set_eFuseGetFreeBlockCount_Proc(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      PUCHAR                  arg);
+
+INT set_eFusedump_Proc(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      PUCHAR                  arg);
 
-VOID QBSS_LoadInit(
-       IN              RTMP_ADAPTER    *pAd);
+INT set_eFuseLoadFromBin_Proc(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      PUCHAR                  arg);
+
+NTSTATUS eFuseWriteRegistersFromBin(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      USHORT Offset,
+       IN      USHORT Length,
+       IN      USHORT* pData);
+
+VOID eFusePhysicalReadRegisters(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      USHORT Offset,
+       IN      USHORT Length,
+       OUT     USHORT* pData);
+
+VOID RT30xxLoadRFNormalModeSetup(
+       IN PRTMP_ADAPTER        pAd);
+
+VOID RT30xxLoadRFSleepModeSetup(
+       IN PRTMP_ADAPTER        pAd);
+
+VOID RT30xxReverseRFSleepModeSetup(
+       IN PRTMP_ADAPTER        pAd);
+
+#ifdef RT2870
+//
+// Function Prototype in rtusb_bulk.c
+//
+VOID   RTUSBInitTxDesc(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      PTX_CONTEXT             pTxContext,
+       IN      UCHAR                   BulkOutPipeId,
+       IN      usb_complete_t  Func);
+
+VOID   RTUSBInitHTTxDesc(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      PHT_TX_CONTEXT  pTxContext,
+       IN      UCHAR                   BulkOutPipeId,
+       IN      ULONG                   BulkOutSize,
+       IN      usb_complete_t  Func);
+
+VOID RTUSBCleanUpDataBulkOutQueue(
+       IN      PRTMP_ADAPTER   pAd);
+
+VOID RTUSBCancelPendingBulkOutIRP(
+       IN      PRTMP_ADAPTER   pAd);
+
+VOID RTUSBBulkOutDataPacket(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      UCHAR                   BulkOutPipeId,
+       IN      UCHAR                   Index);
+
+VOID RTUSBBulkOutNullFrame(
+       IN      PRTMP_ADAPTER   pAd);
+
+VOID RTUSBBulkOutRTSFrame(
+       IN      PRTMP_ADAPTER   pAd);
+
+VOID RTUSBCancelPendingBulkInIRP(
+       IN      PRTMP_ADAPTER   pAd);
+
+VOID RTUSBCancelPendingIRPs(
+       IN      PRTMP_ADAPTER   pAd);
+
+VOID RTUSBBulkOutMLMEPacket(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      UCHAR                   Index);
+
+VOID RTUSBBulkOutPsPoll(
+       IN      PRTMP_ADAPTER   pAd);
+
+VOID RTUSBCleanUpMLMEBulkOutQueue(
+       IN      PRTMP_ADAPTER   pAd);
+
+VOID RTUSBKickBulkOut(
+       IN      PRTMP_ADAPTER pAd);
 
-UINT32 QBSS_LoadElementAppend(
-       IN              RTMP_ADAPTER    *pAd,
-       OUT             UINT8                   *buf_p);
+VOID   RTUSBBulkReceive(
+       IN      PRTMP_ADAPTER   pAd);
+
+VOID DoBulkIn(
+       IN RTMP_ADAPTER *pAd);
+
+VOID RTUSBInitRxDesc(
+       IN      PRTMP_ADAPTER   pAd,
+       IN  PRX_CONTEXT         pRxContext);
+
+//
+// Function Prototype in rtusb_io.c
+//
+NTSTATUS RTUSBMultiRead(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      USHORT                  Offset,
+       OUT     PUCHAR                  pData,
+       IN      USHORT                  length);
+
+NTSTATUS RTUSBMultiWrite(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      USHORT                  Offset,
+       IN      PUCHAR                  pData,
+       IN      USHORT                  length);
+
+NTSTATUS RTUSBMultiWrite_OneByte(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      USHORT                  Offset,
+       IN      PUCHAR                  pData);
+
+NTSTATUS RTUSBReadBBPRegister(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      UCHAR                   Id,
+       IN      PUCHAR                  pValue);
+
+NTSTATUS RTUSBWriteBBPRegister(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      UCHAR                   Id,
+       IN      UCHAR                   Value);
+
+NTSTATUS RTUSBWriteRFRegister(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      UINT32                  Value);
+
+NTSTATUS RTUSB_VendorRequest(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      UINT32                  TransferFlags,
+       IN      UCHAR                   ReservedBits,
+       IN      UCHAR                   Request,
+       IN      USHORT                  Value,
+       IN      USHORT                  Index,
+       IN      PVOID                   TransferBuffer,
+       IN      UINT32                  TransferBufferLength);
+
+NTSTATUS RTUSBReadEEPROM(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      USHORT                  Offset,
+       OUT     PUCHAR                  pData,
+       IN      USHORT                  length);
+
+NTSTATUS RTUSBWriteEEPROM(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      USHORT                  Offset,
+       IN      PUCHAR                  pData,
+       IN      USHORT                  length);
+
+VOID RTUSBPutToSleep(
+       IN      PRTMP_ADAPTER   pAd);
+
+NTSTATUS RTUSBWakeUp(
+       IN      PRTMP_ADAPTER   pAd);
+
+VOID RTUSBInitializeCmdQ(
+       IN      PCmdQ   cmdq);
+
+NDIS_STATUS    RTUSBEnqueueCmdFromNdis(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      NDIS_OID                Oid,
+       IN      BOOLEAN                 SetInformation,
+       IN      PVOID                   pInformationBuffer,
+       IN      UINT32                  InformationBufferLength);
+
+NDIS_STATUS RTUSBEnqueueInternalCmd(
+       IN      PRTMP_ADAPTER   pAd,
+       IN NDIS_OID                     Oid,
+       IN PVOID                        pInformationBuffer,
+       IN UINT32                       InformationBufferLength);
+
+VOID RTUSBDequeueCmd(
+       IN      PCmdQ           cmdq,
+       OUT     PCmdQElmt       *pcmdqelmt);
+
+INT RTUSBCmdThread(
+       IN OUT PVOID Context);
+
+INT TimerQThread(
+       IN OUT PVOID Context);
+
+RT2870_TIMER_ENTRY *RT2870_TimerQ_Insert(
+       IN RTMP_ADAPTER *pAd,
+       IN RALINK_TIMER_STRUCT *pTimer);
+
+BOOLEAN RT2870_TimerQ_Remove(
+       IN RTMP_ADAPTER *pAd,
+       IN RALINK_TIMER_STRUCT *pTimer);
+
+void RT2870_TimerQ_Exit(
+       IN RTMP_ADAPTER *pAd);
+
+void RT2870_TimerQ_Init(
+       IN RTMP_ADAPTER *pAd);
+
+VOID RT2870_BssBeaconExit(
+       IN RTMP_ADAPTER *pAd);
+
+VOID RT2870_BssBeaconStop(
+       IN RTMP_ADAPTER *pAd);
+
+VOID RT2870_BssBeaconStart(
+       IN RTMP_ADAPTER * pAd);
+
+VOID RT2870_BssBeaconInit(
+       IN RTMP_ADAPTER *pAd);
+
+VOID RT2870_WatchDog(
+       IN RTMP_ADAPTER *pAd);
+
+NTSTATUS RTUSBWriteMACRegister(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      USHORT                  Offset,
+       IN      UINT32                  Value);
+
+NTSTATUS RTUSBReadMACRegister(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      USHORT                  Offset,
+       OUT     PUINT32                 pValue);
 
-VOID QBSS_LoadUpdate(
-       IN              RTMP_ADAPTER    *pAd);
+NTSTATUS RTUSBSingleWrite(
+       IN      RTMP_ADAPTER    *pAd,
+       IN      USHORT                  Offset,
+       IN      USHORT                  Value);
+
+NTSTATUS RTUSBFirmwareRun(
+       IN      PRTMP_ADAPTER   pAd);
+
+NTSTATUS RTUSBFirmwareWrite(
+       IN PRTMP_ADAPTER pAd,
+       IN PUCHAR               pFwImage,
+       IN ULONG                FwLen);
+
+NTSTATUS       RTUSBFirmwareOpmode(
+       IN      PRTMP_ADAPTER   pAd,
+       OUT     PUINT32                 pValue);
+
+NTSTATUS       RTUSBVenderReset(
+       IN      PRTMP_ADAPTER   pAd);
+
+VOID CMDHandler(
+    IN PRTMP_ADAPTER pAd);
+
+
+NDIS_STATUS     CreateThreads(
+       IN      struct net_device *net_dev );
+
+
+VOID MacTableInitialize(
+       IN  PRTMP_ADAPTER   pAd);
+
+VOID MlmeSetPsm(
+       IN PRTMP_ADAPTER pAd,
+       IN USHORT psm);
+
+NDIS_STATUS RTMPWPAAddKeyProc(
+       IN  PRTMP_ADAPTER   pAd,
+       IN  PVOID           pBuf);
+
+VOID AsicRxAntEvalAction(
+       IN PRTMP_ADAPTER pAd);
+
+NDIS_STATUS    RTMPCheckRxError(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      PHEADER_802_11  pHeader,
+       IN      PRXWI_STRUC     pRxWI,
+       IN      PRT28XX_RXD_STRUC       pRxINFO);
+
+INT MlmeThread(
+       IN PVOID Context);
+
+//
+// Function Prototype in rtusb_data.c
+//
+NDIS_STATUS    RTUSBFreeDescriptorRequest(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      UCHAR                   BulkOutPipeId,
+       IN      UINT32                  NumberRequired);
+
+
+BOOLEAN        RTUSBNeedQueueBackForAgg(
+       IN RTMP_ADAPTER *pAd,
+       IN UCHAR                BulkOutPipeId);
+
+
+VOID RTMPWriteTxInfo(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      PTXINFO_STRUC   pTxInfo,
+       IN        USHORT                USBDMApktLen,
+       IN        BOOLEAN               bWiv,
+       IN        UCHAR                 QueueSel,
+       IN        UCHAR                 NextValid,
+       IN        UCHAR                 TxBurst);
+
+//
+// Function Prototype in cmm_data_2870.c
+//
+USHORT RtmpUSB_WriteSubTxResource(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      TX_BLK                  *pTxBlk,
+       IN      BOOLEAN                 bIsLast,
+       OUT     USHORT                  *FreeNumber);
+
+USHORT RtmpUSB_WriteSingleTxResource(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      TX_BLK                  *pTxBlk,
+       IN      BOOLEAN                 bIsLast,
+       OUT     USHORT                  *FreeNumber);
+
+USHORT RtmpUSB_WriteFragTxResource(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      TX_BLK                  *pTxBlk,
+       IN      UCHAR                   fragNum,
+       OUT     USHORT                  *FreeNumber);
+
+USHORT RtmpUSB_WriteMultiTxResource(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      TX_BLK                  *pTxBlk,
+       IN      UCHAR                   frameNum,
+       OUT     USHORT                  *FreeNumber);
+
+VOID RtmpUSB_FinalWriteTxResource(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      TX_BLK                  *pTxBlk,
+       IN      USHORT                  totalMPDUSize,
+#ifdef RT2860
+       IN      USHORT                  FirstTxIdx);
+#endif
+       IN      USHORT                  TxIdx);
+
+VOID RtmpUSBDataLastTxIdx(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      UCHAR                   QueIdx,
+       IN      USHORT                  TxIdx);
+
+VOID RtmpUSBDataKickOut(
+       IN      PRTMP_ADAPTER   pAd,
+       IN      TX_BLK                  *pTxBlk,
+       IN      UCHAR                   QueIdx);
+
+
+int RtmpUSBMgmtKickOut(
+       IN RTMP_ADAPTER         *pAd,
+       IN UCHAR                        QueIdx,
+       IN PNDIS_PACKET         pPacket,
+       IN PUCHAR                       pSrcBufVA,
+       IN UINT                         SrcBufLen);
+
+VOID RtmpUSBNullFrameKickOut(
+       IN RTMP_ADAPTER *pAd,
+       IN UCHAR                QueIdx,
+       IN UCHAR                *pNullFrame,
+       IN UINT32               frameLen);
+
+VOID RT28xxUsbStaAsicForceWakeup(
+       IN PRTMP_ADAPTER pAd,
+       IN BOOLEAN       bFromTx);
+
+VOID RT28xxUsbStaAsicSleepThenAutoWakeup(
+       IN PRTMP_ADAPTER pAd,
+       IN USHORT TbttNumToNextWakeUp);
+
+VOID RT28xxUsbMlmeRadioOn(
+       IN PRTMP_ADAPTER pAd);
+
+VOID RT28xxUsbMlmeRadioOFF(
+       IN PRTMP_ADAPTER pAd);
+#endif // RT2870 //
 
-///////////////////////////////////////
 INT RTMPShowCfgValue(
        IN      PRTMP_ADAPTER   pAd,
        IN      PUCHAR                  pName,
@@ -6273,11 +6474,11 @@ PCHAR   RTMPGetRalinkAuthModeStr(
 
 PCHAR   RTMPGetRalinkEncryModeStr(
     IN  USHORT encryMode);
-//////////////////////////////////////
 
 VOID AsicStaBbpTuning(
        IN PRTMP_ADAPTER pAd);
 
+#ifdef RT2860
 VOID AsicResetFromDMABusy(
        IN PRTMP_ADAPTER pAd);
 
@@ -6289,6 +6490,16 @@ VOID AsicResetMAC(
 
 VOID AsicResetPBF(
        IN PRTMP_ADAPTER pAd);
+#endif
+#ifdef RT2870
+BOOLEAN StaAddMacTableEntry(
+       IN  PRTMP_ADAPTER               pAd,
+       IN  PMAC_TABLE_ENTRY    pEntry,
+       IN  UCHAR                               MaxSupportedRateIn500Kbps,
+       IN  HT_CAPABILITY_IE    *pHtCapability,
+       IN  UCHAR                               HtCapabilityLen,
+       IN  USHORT                      CapabilityInfo);
+#endif
 
 void RTMP_IndicateMediaState(
        IN      PRTMP_ADAPTER   pAd);
@@ -6305,9 +6516,6 @@ int rt28xx_open(IN PNET_DEV dev);
 
 __inline INT VIRTUAL_IF_UP(PRTMP_ADAPTER pAd)
 {
-extern VOID MeshMakeBeacon(IN PRTMP_ADAPTER pAd, IN UCHAR idx);
-extern VOID MeshUpdateBeaconFrame(IN PRTMP_ADAPTER pAd, IN UCHAR idx);
-
        if (VIRTUAL_IF_NUM(pAd) == 0)
        {
                if (rt28xx_open(pAd->net_dev) != 0)