]> 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 1dc6544627259625c4358acd3c87ad92d4a5c83a..5da6f93a3f54642d4a33e9fb40f449acdf10a75b 100644 (file)
 #ifndef __RTMP_H__
 #define __RTMP_H__
 
-#include "link_list.h"
 #include "spectrum_def.h"
 
-
-#ifdef CONFIG_STA_SUPPORT
 #include "aironet.h"
-#endif // CONFIG_STA_SUPPORT //
-
-//#define DBG_DIAGNOSE         1
-
-#if defined(CONFIG_AP_SUPPORT) && defined(CONFIG_STA_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 //
 
 
 //
@@ -136,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;
@@ -149,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[];
@@ -165,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[];
@@ -173,14 +260,10 @@ extern UCHAR  RateSwitchTable11N1S[];
 extern UCHAR  RateSwitchTable11N2S[];
 extern UCHAR  RateSwitchTable11N2SForABand[];
 
-#ifdef CONFIG_STA_SUPPORT
 extern UCHAR  PRE_N_HT_OUI[];
-#endif // CONFIG_STA_SUPPORT //
-#endif // DOT11_N_SUPPORT //
 
 #define        MAXSEQ          (0xFFF)
 
-#ifdef DOT11_N_SUPPORT
 struct reordering_mpdu
 {
        struct reordering_mpdu  *next;
@@ -201,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
@@ -278,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))
@@ -297,14 +381,12 @@ typedef struct  _QUEUE_HEADER   {
 #define RX_FILTER_CLEAR_FLAG(_pAd, _F)  ((_pAd)->CommonCfg.PacketFilter &= ~(_F))
 #define RX_FILTER_TEST_FLAG(_pAd, _F)   (((_pAd)->CommonCfg.PacketFilter & (_F)) != 0)
 
-#ifdef CONFIG_STA_SUPPORT
 #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)
-#endif // CONFIG_STA_SUPPORT //
 
 #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))
@@ -315,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)    \
 {                                          \
@@ -351,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)                                 \
 {                                                                                       \
@@ -375,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
@@ -397,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;                          \
@@ -560,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)                                 \
@@ -811,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;                                                          \
@@ -818,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)
@@ -830,7 +970,7 @@ typedef struct _RTMP_SCATTER_GATHER_LIST {
 //
 #define JapanChannelCheck(channel)  ((channel == 52) || (channel == 56) || (channel == 60) || (channel == 64))
 
-#ifdef CONFIG_STA_SUPPORT
+#ifdef RT2860
 #define STA_PORT_SECURED(_pAd) \
 { \
        _pAd->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED; \
@@ -839,8 +979,16 @@ typedef struct _RTMP_SCATTER_GATHER_LIST {
        _pAd->MacTab.Content[BSSID_WCID].PortSecured = _pAd->StaCfg.PortSecured; \
        NdisReleaseSpinLock(&(_pAd)->MacTabLock); \
 }
-#endif // CONFIG_STA_SUPPORT //
-
+#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
@@ -889,17 +1037,10 @@ typedef struct  _RTMP_DMABUF
 
 
 typedef        union   _HEADER_802_11_SEQ{
-#ifdef RT_BIG_ENDIAN
-    struct {
-       USHORT                  Sequence:12;
-       USHORT                  Frag:4;
-    }   field;
-#else
     struct {
        USHORT                  Frag:4;
        USHORT                  Sequence:12;
     }   field;
-#endif
     USHORT           value;
 }      HEADER_802_11_SEQ, *PHEADER_802_11_SEQ;
 
@@ -916,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;
 
 //
@@ -1015,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;
@@ -1038,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;
@@ -1111,15 +1262,6 @@ typedef struct  _ARCFOUR
 
 // MIMO Tx parameter, ShortGI, MCS, STBC, etc.  these are fields in TXWI too. just copy to TXWI.
 typedef struct  _RECEIVE_SETTING {
-#ifdef RT_BIG_ENDIAN
-       USHORT          MIMO:1;
-       USHORT          OFDM:1;
-       USHORT          rsv:3;
-       USHORT          STBC:2; //SPACE
-       USHORT          ShortGI:1;
-       USHORT          Mode:2; //channel bandwidth 20MHz or 40 MHz
-       USHORT          NumOfRX:2;                 // MIMO. WE HAVE 3R
-#else
        USHORT          NumOfRX:2;                 // MIMO. WE HAVE 3R
        USHORT          Mode:2; //channel bandwidth 20MHz or 40 MHz
        USHORT          ShortGI:1;
@@ -1127,7 +1269,6 @@ typedef struct  _RECEIVE_SETTING {
        USHORT          rsv:3;
        USHORT          OFDM:1;
        USHORT          MIMO:1;
-#endif
  } RECEIVE_SETTING, *PRECEIVE_SETTING;
 
 // Shared key data structure
@@ -1144,9 +1285,7 @@ typedef struct _CIPHER_KEY {
        UCHAR   RxTsc[6];           // 48bit TSC value
        UCHAR   CipherAlg;          // 0-none, 1:WEP64, 2:WEP128, 3:TKIP, 4:AES, 5:CKIP64, 6:CKIP128
        UCHAR   KeyLen;
-#ifdef CONFIG_STA_SUPPORT
        UCHAR   BssId[6];
-#endif // CONFIG_STA_SUPPORT //
             // Key length for each key, 0: entry is invalid
        UCHAR   Type;               // Indicate Pairwise/Group when reporting MIC error
 } CIPHER_KEY, *PCIPHER_KEY;
@@ -1162,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
@@ -1304,7 +1446,6 @@ typedef enum _ABGBAND_STATE_ {
 } ABGBAND_STATE;
 
 typedef struct _MLME_STRUCT {
-#ifdef CONFIG_STA_SUPPORT
        // STA state machines
        STATE_MACHINE           CntlMachine;
        STATE_MACHINE           AssocMachine;
@@ -1320,7 +1461,6 @@ typedef struct _MLME_STRUCT {
        STATE_MACHINE_FUNC      SyncFunc[SYNC_FUNC_SIZE];
        STATE_MACHINE_FUNC      WpaPskFunc[WPA_PSK_FUNC_SIZE];
        STATE_MACHINE_FUNC      AironetFunc[AIRONET_FUNC_SIZE];
-#endif // CONFIG_STA_SUPPORT //
        STATE_MACHINE_FUNC      ActFunc[ACT_FUNC_SIZE];
        // Action
        STATE_MACHINE           ActMachine;
@@ -1339,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;
 
@@ -1350,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
@@ -1389,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;
@@ -1453,21 +1597,6 @@ typedef struct _QUERYBA_TABLE{
 } QUERYBA_TABLE, *PQUERYBA_TABLE;
 
 typedef        union   _BACAP_STRUC    {
-#ifdef RT_BIG_ENDIAN
-       struct  {
-               UINT32     :4;
-               UINT32     b2040CoexistScanSup:1;               //As Sta, support do 2040 coexistence scan for AP. As Ap, support monitor trigger event to check if can use BW 40MHz.
-               UINT32     bHtAdhoc:1;                  // adhoc can use ht rate.
-               UINT32     MMPSmode:2;  // MIMO power save more, 0:static, 1:dynamic, 2:rsv, 3:mimo enable
-               UINT32     AmsduSize:1; // 0:3839, 1:7935 bytes. UINT  MSDUSizeToBytes[]        = { 3839, 7935};
-               UINT32     AmsduEnable:1;       //Enable AMSDU transmisstion
-               UINT32          MpduDensity:3;
-               UINT32          Policy:2;       // 0: DELAY_BA 1:IMMED_BA  (//BA Policy subfiled value in ADDBA frame)   2:BA-not use
-               UINT32          AutoBA:1;       // automatically BA
-               UINT32          TxBAWinLimit:8;
-               UINT32          RxBAWinLimit:8;
-       }       field;
-#else
        struct  {
                UINT32          RxBAWinLimit:8;
                UINT32          TxBAWinLimit:8;
@@ -1481,10 +1610,8 @@ typedef  union   _BACAP_STRUC    {
                UINT32          b2040CoexistScanSup:1;          //As Sta, support do 2040 coexistence scan for AP. As Ap, support monitor trigger event to check if can use BW 40MHz.
                UINT32          :4;
        }       field;
-#endif
        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      {
@@ -1499,30 +1626,15 @@ typedef struct  _IOT_STRUC      {
        UCHAR                   RTSShortProt;
        UCHAR                   RTSLongProt;
        BOOLEAN                 bRTSLongProtOn;
-#ifdef CONFIG_STA_SUPPORT
        BOOLEAN                 bLastAtheros;
     BOOLEAN                    bCurrentAtheros;
     BOOLEAN         bNowAtherosBurstOn;
        BOOLEAN                 bNextDisableRxBA;
     BOOLEAN                    bToggle;
-#endif // CONFIG_STA_SUPPORT //
 } IOT_STRUC, *PIOT_STRUC;
 
 // This is the registry setting for 802.11n transmit setting.  Used in advanced page.
 typedef union _REG_TRANSMIT_SETTING {
-#ifdef RT_BIG_ENDIAN
- struct {
-         UINT32  rsv:13;
-                UINT32  EXTCHA:2;
-                UINT32  HTMODE:1;
-                UINT32  TRANSNO:2;
-                UINT32  STBC:1; //SPACE
-                UINT32  ShortGI:1;
-                UINT32  BW:1; //channel bandwidth 20MHz or 40 MHz
-                UINT32  TxBF:1; // 3*3
-                UINT32  rsv0:10;
-    } field;
-#else
  struct {
                 UINT32  rsv0:10;
                 UINT32  TxBF:1;
@@ -1534,26 +1646,16 @@ typedef union _REG_TRANSMIT_SETTING {
          UINT32  EXTCHA:2;
          UINT32  rsv:13;
     } field;
-#endif
  UINT32   word;
 } REG_TRANSMIT_SETTING, *PREG_TRANSMIT_SETTING;
 
 typedef union  _DESIRED_TRANSMIT_SETTING {
-#ifdef RT_BIG_ENDIAN
-       struct  {
-                       USHORT          rsv:3;
-                       USHORT          FixedTxMode:2;                  // If MCS isn't AUTO, fix rate in CCK, OFDM or HT mode.
-                       USHORT          PhyMode:4;
-                       USHORT          MCS:7;                 // MCS
-       }       field;
-#else
        struct  {
                        USHORT          MCS:7;                  // MCS
                        USHORT          PhyMode:4;
                        USHORT          FixedTxMode:2;                  // If MCS isn't AUTO, fix rate in CCK, OFDM or HT mode.
                        USHORT          rsv:3;
        }       field;
-#endif
        USHORT          word;
  } DESIRED_TRANSMIT_SETTING, *PDESIRED_TRANSMIT_SETTING;
 
@@ -1592,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];
@@ -1760,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
@@ -1775,17 +1889,14 @@ 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
        QBSS_LOAD_PARM      APQbssLoad;         // QBSS load of the current associated AP
        UCHAR               AckPolicy[4];       // ACK policy of the specified AC. see ACK_xxx
-#ifdef CONFIG_STA_SUPPORT
        BOOLEAN                         bDLSCapable;            // 0:disable DLS, 1:enable DLS
-#endif // CONFIG_STA_SUPPORT //
        // 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.
@@ -1794,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;
@@ -1819,7 +1932,6 @@ typedef struct _COMMON_CONFIG {
        ULONG                                   LastRcvBSSWidthTriggerEventsTime;
 
        UCHAR                                   TxBASize;
-#endif // DOT11_N_SUPPORT //
 
        // Enable wireless event
        BOOLEAN                         bWirelessEvent;
@@ -1837,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;
@@ -1851,8 +1977,6 @@ typedef struct _COMMON_CONFIG {
 #endif // MCAST_RATE_SPECIFIC //
 } COMMON_CONFIG, *PCOMMON_CONFIG;
 
-
-#ifdef CONFIG_STA_SUPPORT
 /* Modified by Wu Xi-Kun 4/21/2006 */
 // STA configuration and status
 typedef struct _STA_ADMIN_CONFIG {
@@ -1940,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;
@@ -2036,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
@@ -2047,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;
@@ -2060,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
@@ -2086,7 +2210,15 @@ typedef struct _STA_ACTIVE_CONFIG {
        RT_HT_PHY_INFO          SupportedPhyInfo;
        RT_HT_CAPABILITY        SupportedHtPhy;
 } STA_ACTIVE_CONFIG, *PSTA_ACTIVE_CONFIG;
-#endif // CONFIG_STA_SUPPORT //
+
+#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
@@ -2152,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;
@@ -2196,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
@@ -2216,7 +2343,6 @@ typedef struct _MAC_TABLE_ENTRY {
        UCHAR           MmpsMode;       // MIMO power save more.
 
        HT_CAPABILITY_IE                HTCapability;
-#endif // DOT11_N_SUPPORT //
 
        BOOLEAN         bAutoTxRateSwitch;
 
@@ -2231,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 {
@@ -2242,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)
 
@@ -2260,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;
@@ -2393,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 //
 
 
 //
@@ -2441,6 +2532,7 @@ typedef struct _RTMP_ADAPTER
        PNET_DEV                                net_dev;
        ULONG                                   VirtualIfCnt;
 
+#ifdef RT2860
     USHORT                         LnkCtrlBitMask;
     USHORT                         RLnkCtrlConfiguration;
     USHORT                  RLnkCtrlOffset;
@@ -2467,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 //
 
 
 /*****************************************************************************************/
@@ -2485,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
@@ -2498,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 //
 
 
 /*****************************************************************************************/
@@ -2515,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.
 
        // ---------------------------
@@ -2607,11 +2769,19 @@ 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===========
 
 
 //=======STA===========
-#ifdef CONFIG_STA_SUPPORT
 /* Modified by Wu Xi-Kun 4/21/2006 */
        // -----------------------------------------------
        // STA specific configuration & operation status
@@ -2621,7 +2791,6 @@ typedef struct _RTMP_ADAPTER
        STA_ACTIVE_CONFIG       StaActive;         // valid only when ADHOC_ON(pAd) || INFRA_ON(pAd)
        CHAR                    nickname[IW_ESSID_MAX_SIZE+1]; // nickname, only used in the iwconfig i/f
        NDIS_MEDIA_STATE        PreMediaState;
-#endif // CONFIG_STA_SUPPORT //
 
 //=======Common===========
        // OP mode: either AP or STA
@@ -2629,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
@@ -2650,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;
 
@@ -2671,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;
@@ -2704,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
@@ -2743,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;
 
@@ -2768,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;
 
 //
@@ -2932,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.
@@ -2966,243 +3137,6 @@ __inline    VOID    NICEnableInterrupt(
        RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE);
 }
 
-#ifdef RT_BIG_ENDIAN
-static inline VOID     WriteBackToDescriptor(
-       IN  PUCHAR                      Dest,
-       IN      PUCHAR                  Src,
-    IN  BOOLEAN                        DoEncrypt,
-       IN  ULONG           DescriptorType)
-{
-       UINT32 *p1, *p2;
-
-       p1 = ((UINT32 *)Dest);
-       p2 = ((UINT32 *)Src);
-
-       *p1 = *p2;
-       *(p1+2) = *(p2+2);
-       *(p1+3) = *(p2+3);
-       *(p1+1) = *(p2+1); // Word 1; this must be written back last
-}
-
-/*
-       ========================================================================
-
-       Routine Description:
-               Endian conversion of Tx/Rx descriptor .
-
-       Arguments:
-               pAd     Pointer to our adapter
-               pData                   Pointer to Tx/Rx descriptor
-               DescriptorType  Direction of the frame
-
-       Return Value:
-               None
-
-       Note:
-               Call this function when read or update descriptor
-       ========================================================================
-*/
-static inline VOID     RTMPWIEndianChange(
-       IN      PUCHAR                  pData,
-       IN      ULONG                   DescriptorType)
-{
-       int size;
-       int i;
-
-       size = ((DescriptorType == TYPE_TXWI) ? TXWI_SIZE : RXWI_SIZE);
-
-       if(DescriptorType == TYPE_TXWI)
-       {
-               *((UINT32 *)(pData)) = SWAP32(*((UINT32 *)(pData)));            // Byte 0~3
-               *((UINT32 *)(pData + 4)) = SWAP32(*((UINT32 *)(pData+4)));      // Byte 4~7
-       }
-       else
-       {
-               for(i=0; i < size/4 ; i++)
-                       *(((UINT32 *)pData) +i) = SWAP32(*(((UINT32 *)pData)+i));
-       }
-}
-
-/*
-       ========================================================================
-
-       Routine Description:
-               Endian conversion of Tx/Rx descriptor .
-
-       Arguments:
-               pAd     Pointer to our adapter
-               pData                   Pointer to Tx/Rx descriptor
-               DescriptorType  Direction of the frame
-
-       Return Value:
-               None
-
-       Note:
-               Call this function when read or update descriptor
-       ========================================================================
-*/
-static inline VOID     RTMPDescriptorEndianChange(
-       IN      PUCHAR                  pData,
-       IN      ULONG                   DescriptorType)
-{
-       *((UINT32 *)(pData)) = SWAP32(*((UINT32 *)(pData)));            // Byte 0~3
-       *((UINT32 *)(pData + 8)) = SWAP32(*((UINT32 *)(pData+8)));      // Byte 8~11
-       *((UINT32 *)(pData +12)) = SWAP32(*((UINT32 *)(pData + 12)));   // Byte 12~15
-       *((UINT32 *)(pData + 4)) = SWAP32(*((UINT32 *)(pData + 4)));                            // Byte 4~7, this must be swapped last
-}
-
-/*
-       ========================================================================
-
-       Routine Description:
-               Endian conversion of all kinds of 802.11 frames .
-
-       Arguments:
-               pAd     Pointer to our adapter
-               pData                   Pointer to the 802.11 frame structure
-               Dir                     Direction of the frame
-               FromRxDoneInt   Caller is from RxDone interrupt
-
-       Return Value:
-               None
-
-       Note:
-               Call this function when read or update buffer data
-       ========================================================================
-*/
-static inline VOID     RTMPFrameEndianChange(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PUCHAR                  pData,
-       IN      ULONG                   Dir,
-       IN      BOOLEAN                 FromRxDoneInt)
-{
-       PHEADER_802_11 pFrame;
-       PUCHAR  pMacHdr;
-
-       // swab 16 bit fields - Frame Control field
-       if(Dir == DIR_READ)
-       {
-               *(USHORT *)pData = SWAP16(*(USHORT *)pData);
-       }
-
-       pFrame = (PHEADER_802_11) pData;
-       pMacHdr = (PUCHAR) pFrame;
-
-       // swab 16 bit fields - Duration/ID field
-       *(USHORT *)(pMacHdr + 2) = SWAP16(*(USHORT *)(pMacHdr + 2));
-
-       // swab 16 bit fields - Sequence Control field
-       *(USHORT *)(pMacHdr + 22) = SWAP16(*(USHORT *)(pMacHdr + 22));
-
-       if(pFrame->FC.Type == BTYPE_MGMT)
-       {
-               switch(pFrame->FC.SubType)
-               {
-                       case SUBTYPE_ASSOC_REQ:
-                       case SUBTYPE_REASSOC_REQ:
-                               // swab 16 bit fields - CapabilityInfo field
-                               pMacHdr += sizeof(HEADER_802_11);
-                               *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
-
-                               // swab 16 bit fields - Listen Interval field
-                               pMacHdr += 2;
-                               *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
-                               break;
-
-                       case SUBTYPE_ASSOC_RSP:
-                       case SUBTYPE_REASSOC_RSP:
-                               // swab 16 bit fields - CapabilityInfo field
-                               pMacHdr += sizeof(HEADER_802_11);
-                               *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
-
-                               // swab 16 bit fields - Status Code field
-                               pMacHdr += 2;
-                               *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
-
-                               // swab 16 bit fields - AID field
-                               pMacHdr += 2;
-                               *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
-                               break;
-
-                       case SUBTYPE_AUTH:
-                               // If from APHandleRxDoneInterrupt routine, it is still a encrypt format.
-                               // The convertion is delayed to RTMPHandleDecryptionDoneInterrupt.
-                               if(!FromRxDoneInt && pFrame->FC.Wep == 1)
-                                       break;
-                               else
-                               {
-                                       // swab 16 bit fields - Auth Alg No. field
-                                       pMacHdr += sizeof(HEADER_802_11);
-                                       *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
-
-                                       // swab 16 bit fields - Auth Seq No. field
-                                       pMacHdr += 2;
-                                       *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
-
-                                       // swab 16 bit fields - Status Code field
-                                       pMacHdr += 2;
-                                       *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
-                               }
-                               break;
-
-                       case SUBTYPE_BEACON:
-                       case SUBTYPE_PROBE_RSP:
-                               // swab 16 bit fields - BeaconInterval field
-                               pMacHdr += (sizeof(HEADER_802_11) + TIMESTAMP_LEN);
-                               *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
-
-                               // swab 16 bit fields - CapabilityInfo field
-                               pMacHdr += sizeof(USHORT);
-                               *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
-                               break;
-
-                       case SUBTYPE_DEAUTH:
-                       case SUBTYPE_DISASSOC:
-                               // swab 16 bit fields - Reason code field
-                               pMacHdr += sizeof(HEADER_802_11);
-                               *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
-                               break;
-               }
-       }
-       else if( pFrame->FC.Type == BTYPE_DATA )
-       {
-       }
-       else if(pFrame->FC.Type == BTYPE_CNTL)
-       {
-               switch(pFrame->FC.SubType)
-               {
-                       case SUBTYPE_BLOCK_ACK_REQ:
-                               {
-                                       PFRAME_BA_REQ pBAReq = (PFRAME_BA_REQ)pFrame;
-                                       *(USHORT *)(&pBAReq->BARControl) = SWAP16(*(USHORT *)(&pBAReq->BARControl));
-                                       pBAReq->BAStartingSeq.word = SWAP16(pBAReq->BAStartingSeq.word);
-                               }
-                               break;
-                       case SUBTYPE_BLOCK_ACK:
-                               // For Block Ack packet, the HT_CONTROL field is in the same offset with Addr3
-                               *(UINT32 *)(&pFrame->Addr3[0]) = SWAP32(*(UINT32 *)(&pFrame->Addr3[0]));
-                               break;
-
-                       case SUBTYPE_ACK:
-                               //For ACK packet, the HT_CONTROL field is in the same offset with Addr2
-                               *(UINT32 *)(&pFrame->Addr2[0])= SWAP32(*(UINT32 *)(&pFrame->Addr2[0]));
-                               break;
-               }
-       }
-       else
-       {
-               DBGPRINT(RT_DEBUG_ERROR,("Invalid Frame Type!!!\n"));
-       }
-
-       // swab 16 bit fields - Frame Control
-       if(Dir == DIR_WRITE)
-       {
-               *(USHORT *)pData = SWAP16(*(USHORT *)pData);
-       }
-}
-#endif // RT_BIG_ENDIAN //
-
-
 static inline VOID ConvertMulticastIP2MAC(
        IN PUCHAR pIpAddr,
        IN PUCHAR *ppMacAddr,
@@ -3240,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
@@ -3261,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
        );
@@ -3279,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,
@@ -3297,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);
 
@@ -3308,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);
 
@@ -3368,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,
@@ -3447,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);
@@ -3463,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,
@@ -3478,28 +3375,14 @@ VOID PeerPublicAction(
        IN PRTMP_ADAPTER pAd,
        IN MLME_QUEUE_ELEM *Elem);
 
-#ifdef CONFIG_STA_SUPPORT
-VOID StaPublicAction(
-       IN PRTMP_ADAPTER pAd,
-       IN UCHAR Bss2040Coexist);
-#endif // CONFIG_STA_SUPPORT //
-
-
-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,
@@ -3512,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,
@@ -3534,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);
@@ -3710,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,
@@ -3729,17 +3594,10 @@ 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);
 
-#ifdef CONFIG_STA_SUPPORT
 VOID RTMPReportMicError(
        IN  PRTMP_ADAPTER   pAd,
        IN  PCIPHER_KEY     pWpaKey);
@@ -3753,7 +3611,6 @@ VOID    WpaDisassocApAndBlockAssoc(
     IN  PVOID FunctionContext,
     IN  PVOID SystemSpecific2,
     IN  PVOID SystemSpecific3);
-#endif // CONFIG_STA_SUPPORT //
 
 NDIS_STATUS RTMPCloneNdisPacket(
        IN  PRTMP_ADAPTER   pAd,
@@ -3787,10 +3644,6 @@ BOOLEAN RTMPCheckEtherType(
        IN      PNDIS_PACKET    pPacket);
 
 
-VOID RTMPCckBbpTuning(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      UINT                    TxRate);
-
 //
 // Private routines in rtmp_wep.c
 //
@@ -3807,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,
@@ -3893,7 +3740,6 @@ VOID AsicRfTuningExec(
        IN PVOID SystemSpecific2,
        IN PVOID SystemSpecific3);
 
-#ifdef CONFIG_STA_SUPPORT
 VOID AsicSleepThenAutoWakeup(
        IN  PRTMP_ADAPTER   pAd,
        IN  USHORT TbttNumToNextWakeUp);
@@ -3903,8 +3749,12 @@ VOID AsicForceSleep(
 
 VOID AsicForceWakeup(
        IN PRTMP_ADAPTER pAd,
+#ifdef RT2860
        IN UCHAR         Level);
-#endif // CONFIG_STA_SUPPORT //
+#endif
+#ifdef RT2870
+       IN BOOLEAN    bFromTx);
+#endif
 
 VOID AsicSetBssid(
        IN  PRTMP_ADAPTER   pAd,
@@ -3998,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);
@@ -4025,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,
@@ -4055,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,
@@ -4138,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,
@@ -4148,7 +3976,6 @@ VOID BATableInsertEntry(
        IN UCHAR BAWinSize,
        IN UCHAR OriginatorStatus,
     IN BOOLEAN IsRecipient);
-#endif // DOT11_N_SUPPORT //
 
 VOID BssTableSsidSort(
        IN  PRTMP_ADAPTER   pAd,
@@ -4255,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);
@@ -4314,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);
@@ -4416,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);
@@ -4432,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);
 
@@ -4647,9 +4468,7 @@ BOOLEAN PeerBeaconAndProbeRspSanity(
        OUT PQOS_CAPABILITY_PARM pQosCapability,
        OUT ULONG *pRalinkIe,
        OUT UCHAR                *pHtCapabilityLen,
-#ifdef CONFIG_STA_SUPPORT
        OUT UCHAR                *pPreNHtCapabilityLen,
-#endif // CONFIG_STA_SUPPORT //
        OUT HT_CAPABILITY_IE *pHtCapability,
        OUT UCHAR                *AddHtInfoLen,
        OUT ADD_HT_INFO_IE *AddHtInfo,
@@ -4811,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);
 
@@ -4877,23 +4690,19 @@ 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,
        IN OUT  UCHAR           SupRate[],
        IN OUT  UCHAR           *SupRateLen);
 
-#ifdef CONFIG_STA_SUPPORT
 BOOLEAN RTMPCheckChannel(
        IN PRTMP_ADAPTER pAd,
        IN UCHAR                CentralChannel,
        IN UCHAR                Channel);
-#endif // CONFIG_STA_SUPPORT //
 
 BOOLEAN        RTMPCheckHt(
        IN              PRTMP_ADAPTER   pAd,
@@ -4907,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);
 
@@ -4922,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);
 
@@ -4978,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);
@@ -5128,21 +4910,12 @@ VOID RTMPIoctlGetMacTable(
        IN PRTMP_ADAPTER pAd,
        IN struct iwreq *wrq);
 
-VOID RTMPIndicateWPA2Status(
-       IN  PRTMP_ADAPTER  pAdapter);
-
-VOID   RTMPOPModeSwitching(
-       IN      PRTMP_ADAPTER   pAd);
-
-#ifdef CONFIG_STA_SUPPORT
 VOID    RTMPAddBSSIDCipher(
     IN  PRTMP_ADAPTER   pAd,
        IN      UCHAR   Aid,
     IN  PNDIS_802_11_KEY    pKey,
     IN  UCHAR   CipherAlg);
-#endif // CONFIG_STA_SUPPORT //
 
-#ifdef DOT11_N_SUPPORT
 VOID   RTMPSetHT(
        IN      PRTMP_ADAPTER   pAd,
        IN      OID_SET_HT_PHYMODE *pHTPhyMode);
@@ -5150,7 +4923,6 @@ VOID      RTMPSetHT(
 VOID   RTMPSetIndividualHT(
        IN      PRTMP_ADAPTER           pAd,
        IN      UCHAR                           apidx);
-#endif // DOT11_N_SUPPORT //
 
 VOID RTMPSendWirelessEvent(
        IN      PRTMP_ADAPTER   pAd,
@@ -5159,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
 //
@@ -5327,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
 //
@@ -5418,188 +5178,16 @@ 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(
-       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 WPAStart4WayHS(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  MAC_TABLE_ENTRY *pEntry,
-       IN      ULONG                   TimeInterval);
-
-VOID WPAStart2WayGroupHS(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  MAC_TABLE_ENTRY *pEntry);
-
-VOID APWpaEAPPacketAction(
-       IN PRTMP_ADAPTER pAd,
-       IN MLME_QUEUE_ELEM *Elem);
-
-VOID APWpaEAPOLStartAction(
-       IN PRTMP_ADAPTER pAd,
-       IN MLME_QUEUE_ELEM *Elem);
-
-VOID APWpaEAPOLLogoffAction(
-       IN PRTMP_ADAPTER pAd,
-       IN MLME_QUEUE_ELEM *Elem);
-
-VOID APWpaEAPOLKeyAction(
-       IN PRTMP_ADAPTER pAd,
-       IN MLME_QUEUE_ELEM *Elem);
-
-VOID APWpaEAPOLASFAlertAction(
-       IN  PRTMP_ADAPTER    pAd,
-       IN  MLME_QUEUE_ELEM  *Elem);
-
 VOID HandleCounterMeasure(
        IN PRTMP_ADAPTER pAd,
        IN MAC_TABLE_ENTRY  *pEntry);
 
-VOID PeerPairMsg2Action(
-       IN PRTMP_ADAPTER pAd,
-       IN MAC_TABLE_ENTRY  *pEntry,
-       IN MLME_QUEUE_ELEM *Elem);
-
-VOID PeerPairMsg4Action(
-       IN PRTMP_ADAPTER pAd,
-       IN MAC_TABLE_ENTRY  *pEntry,
-       IN MLME_QUEUE_ELEM *Elem);
-
-VOID 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,
@@ -5734,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);
@@ -5769,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,
@@ -5808,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);
 
@@ -5836,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);
@@ -5956,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);
@@ -6057,24 +5581,7 @@ INT      Set_HtMIMOPSmode_Proc(
 INT    Set_HtTxBASize_Proc(
        IN      PRTMP_ADAPTER   pAd,
        IN      PUCHAR                  arg);
-#endif // DOT11_N_SUPPORT //
-
-
-
-#ifdef CONFIG_STA_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,
@@ -6085,37 +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 //
-
-#endif // CONFIG_STA_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,
@@ -6127,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(
@@ -6157,8 +5639,6 @@ UINT deaggregate_AMSDU_announce(
        IN      PUCHAR                  pData,
        IN      ULONG                   DataSize);
 
-
-#ifdef CONFIG_STA_SUPPORT
 // remove LLC and get 802_3 Header
 #define  RTMP_802_11_REMOVE_LLC_AND_CONVERT_TO_802_3(_pRxBlk, _pHeader802_3)   \
 {                                                                                                                                                              \
@@ -6189,31 +5669,15 @@ UINT deaggregate_AMSDU_announce(
        CONVERT_TO_802_3(_pHeader802_3, _pDA, _pSA, _pRxBlk->pData,                             \
                _pRxBlk->DataSize, _pRemovedLLCSNAP);                                   \
 }
-#endif // CONFIG_STA_SUPPORT //
-
-
-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,
        IN      UCHAR                   FromWhichBSSID);
 
-
-#ifdef CONFIG_STA_SUPPORT
 #define ANNOUNCE_OR_FORWARD_802_3_PACKET(_pAd, _pPacket, _FromWhichBSS)\
                        Sta_Announce_or_Forward_802_3_Packet(_pAd, _pPacket, _FromWhichBSS);
                        //announce_802_3_packet(_pAd, _pPacket);
-#endif // CONFIG_STA_SUPPORT //
-
 
 PNDIS_PACKET DuplicatePacket(
        IN      PRTMP_ADAPTER   pAd,
@@ -6245,19 +5709,11 @@ 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);
 
 ////////////////////////////////////////
-
-#ifdef CONFIG_STA_SUPPORT
 enum {
        DIDmsg_lnxind_wlansniffrm               = 0x00000044,
        DIDmsg_lnxind_wlansniffrm_hosttime      = 0x00010044,
@@ -6361,16 +5817,13 @@ 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,
     IN  LONG            Rates);
-#endif // CONFIG_STA_SUPPORT //
 
 INT    Set_FixedTxMode_Proc(
        IN      PRTMP_ADAPTER   pAd,
@@ -6386,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";
        }
@@ -6409,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";
        }
@@ -6447,24 +5896,10 @@ 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);
-
-
-#ifdef CONFIG_STA_SUPPORT
 INT rt28xx_sta_ioctl(
        IN      struct net_device       *net_dev,
        IN      OUT     struct ifreq    *rq,
        IN      INT                     cmd);
-#endif // CONFIG_STA_SUPPORT //
-
-BOOLEAN RT28XXSecurityKeyAdd(
-       IN              PRTMP_ADAPTER           pAd,
-       IN              ULONG                           apidx,
-       IN              ULONG                           KeyIdx,
-       IN              MAC_TABLE_ENTRY         *pEntry);
 
 ////////////////////////////////////////
 PNDIS_PACKET GetPacketFromRxRing(
@@ -6478,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
 //
@@ -6542,7 +5978,6 @@ NDIS_STATUS RTMPCheckRxError(
        IN      PRXWI_STRUC     pRxWI,
        IN  PRT28XX_RXD_STRUC      pRxD);
 
-#ifdef CONFIG_STA_SUPPORT
 VOID RTMPInitPCIeLinkCtrlValue(
        IN      PRTMP_ADAPTER   pAd);
 
@@ -6585,13 +6020,13 @@ VOID  RadioOnExec(
        IN PVOID FunctionContext,
        IN PVOID SystemSpecific2,
        IN PVOID SystemSpecific3);
-#endif // CONFIG_STA_SUPPORT //
 
 VOID RT28xxPciMlmeRadioOn(
        IN PRTMP_ADAPTER pAd);
 
 VOID RT28xxPciMlmeRadioOFF(
        IN PRTMP_ADAPTER pAd);
+#endif /* RT2860 */
 
 VOID AsicTurnOffRFClk(
        IN PRTMP_ADAPTER    pAd,
@@ -6601,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);
+
+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 QBSS_LoadInit(
-       IN              RTMP_ADAPTER    *pAd);
+VOID RT30xxLoadRFNormalModeSetup(
+       IN PRTMP_ADAPTER        pAd);
 
-UINT32 QBSS_LoadElementAppend(
-       IN              RTMP_ADAPTER    *pAd,
-       OUT             UINT8                   *buf_p);
+VOID RT30xxLoadRFSleepModeSetup(
+       IN PRTMP_ADAPTER        pAd);
 
-VOID QBSS_LoadUpdate(
-       IN              RTMP_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);
+
+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);
+
+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,
@@ -6625,12 +6474,11 @@ PCHAR   RTMPGetRalinkAuthModeStr(
 
 PCHAR   RTMPGetRalinkEncryModeStr(
     IN  USHORT encryMode);
-//////////////////////////////////////
 
-#ifdef CONFIG_STA_SUPPORT
 VOID AsicStaBbpTuning(
        IN PRTMP_ADAPTER pAd);
 
+#ifdef RT2860
 VOID AsicResetFromDMABusy(
        IN PRTMP_ADAPTER pAd);
 
@@ -6642,7 +6490,16 @@ VOID AsicResetMAC(
 
 VOID AsicResetPBF(
        IN PRTMP_ADAPTER pAd);
-#endif // CONFIG_STA_SUPPORT //
+#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);
@@ -6659,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)