OSDN Git Service

Removed WAPI nastiness
[android-x86/external-modules-rtl8723au.git] / hal / rtl8723a_hal_init.c
old mode 100755 (executable)
new mode 100644 (file)
index 142590c..0dffc6a
 #define _HAL_INIT_C_
 
 #include <drv_types.h>
-#include <rtw_byteorder.h>
 #include <rtw_efuse.h>
 
 #include <rtl8723a_hal.h>
-#include "rtw_bt_mp.h"
 
 
-static void
+static VOID
 _FWDownloadEnable(
        IN      PADAPTER                padapter,
        IN      bool                    enable
@@ -76,9 +74,7 @@ _BlockWrite(
        u8                      *bufferPtr      = (u8*)buffer;
        u32                     i=0, offset=0;
 
-#ifdef CONFIG_USB_HCI
        blockSize_p1 = 254;
-#endif
 
        //3 Phase #1
        blockCount_p1 = buffSize / blockSize_p1;
@@ -92,11 +88,7 @@ _BlockWrite(
 
        for (i = 0; i < blockCount_p1; i++)
        {
-#ifdef CONFIG_USB_HCI
                ret = rtw_writeN(padapter, (FW_8723A_START_ADDRESS + i * blockSize_p1), blockSize_p1, (bufferPtr + i * blockSize_p1));
-#else
-               ret = rtw_write32(padapter, (FW_8723A_START_ADDRESS + i * blockSize_p1), le32_to_cpu(*((u32*)(bufferPtr + i * blockSize_p1))));
-#endif
                if(ret == _FAIL)
                        goto exit;
        }
@@ -115,14 +107,12 @@ _BlockWrite(
                                                (buffSize-offset), blockSize_p2 ,blockCount_p2, remainSize_p2));
                }
 
-#ifdef CONFIG_USB_HCI
                for (i = 0; i < blockCount_p2; i++) {
                        ret = rtw_writeN(padapter, (FW_8723A_START_ADDRESS + offset + i*blockSize_p2), blockSize_p2, (bufferPtr + offset + i*blockSize_p2));
 
                        if(ret == _FAIL)
                                goto exit;
                }
-#endif
        }
 
        //3 Phase #3
@@ -165,7 +155,7 @@ _PageWrite(
        return _BlockWrite(padapter,buffer,size);
 }
 
-static void
+static VOID
 _FillDummy(
        u8*             pFwBuf,
        u32*    pFwLen
@@ -289,8 +279,7 @@ void rtl8723a_FirmwareSelfReset(PADAPTER padapter)
                }
                RT_TRACE(_module_hal_init_c_, _drv_info_, ("-%s: 8051 reset success (%d)\n", __FUNCTION__, Delay));
 
-               if ((Delay == 0) && IS_HARDWARE_TYPE_8723AU(padapter))
-               {
+               if ((Delay == 0)) {
                        //force firmware reset
                        u1bTmp = rtw_read8(padapter, REG_SYS_FUNC_EN+1);
                        rtw_write8(padapter, REG_SYS_FUNC_EN+1, u1bTmp&(~BIT2));
@@ -298,332 +287,6 @@ void rtl8723a_FirmwareSelfReset(PADAPTER padapter)
        }
 }
 
-//
-#ifdef CONFIG_MP_INCLUDED
-
-int _WriteBTFWtoTxPktBuf8723A(
-       IN              PADAPTER                Adapter,
-       IN              void *                  buffer,
-       IN              u4Byte                  FwBufLen
-       )
-{
-       int                     rtStatus = _SUCCESS;
-       //u4Byte                                value32;
-       //u1Byte                                numHQ, numLQ, numPubQ;//, txpktbuf_bndy;
-       HAL_DATA_TYPE           *pHalData = GET_HAL_DATA(Adapter);
-       //PMGNT_INFO            pMgntInfo = &(Adapter->MgntInfo);
-       u1Byte                          BcnValidReg;
-       u1Byte                          count=0, DLBcnCount=0;
-       pu1Byte                         FwbufferPtr = (pu1Byte)buffer;
-       //PRT_TCB                       pTcb, ptempTcb;
-       //PRT_TX_LOCAL_BUFFER pBuf;
-       bool                            bRecover=false;
-       pu1Byte                         ReservedPagePacket = NULL;
-       pu1Byte                         pGenBufReservedPagePacket = NULL;
-       u4Byte                          TotalPktLen;
-       //u1Byte                                tmpReg422;
-       //u1Byte                                u1bTmp;
-       u8                      *pframe;
-       struct xmit_priv        *pxmitpriv = &(Adapter->xmitpriv);
-       struct xmit_frame       *pmgntframe;
-       struct pkt_attrib       *pattrib;
-
-#if 1//(DEV_BUS_TYPE == RT_PCI_INTERFACE)
-       TotalPktLen = FwBufLen;
-#else
-       TotalPktLen = FwBufLen+pHalData->HWDescHeadLength;
-#endif
-       pGenBufReservedPagePacket = rtw_zmalloc(TotalPktLen);//GetGenTempBuffer (Adapter, TotalPktLen);
-       if (!pGenBufReservedPagePacket)
-               return _FAIL;
-
-       ReservedPagePacket = (u1Byte *)pGenBufReservedPagePacket;
-
-       memset(ReservedPagePacket, 0, TotalPktLen);
-
-#if 1//(DEV_BUS_TYPE == RT_PCI_INTERFACE)
-       memcpy(ReservedPagePacket, FwbufferPtr, FwBufLen);
-
-#else
-       PlatformMoveMemory(ReservedPagePacket+Adapter->HWDescHeadLength , FwbufferPtr, FwBufLen);
-#endif
-
-       //---------------------------------------------------------
-       // 1. Pause BCN
-       //---------------------------------------------------------
-       //Set REG_CR bit 8. DMA beacon by SW.
-       // Remove for temparaily because of the code on v2002 is not sync to MERGE_TMEP for USB/SDIO.
-       // De not remove this part on MERGE_TEMP. by tynli.
-       //pHalData->RegCR_1 |= (BIT0);
-       //PlatformEFIOWrite1Byte(Adapter,  REG_CR+1, pHalData->RegCR_1);
-
-       // Disable Hw protection for a time which revserd for Hw sending beacon.
-       // Fix download reserved page packet fail that access collision with the protection time.
-       // 2010.05.11. Added by tynli.
-       SetBcnCtrlReg(Adapter, 0, BIT(3));
-       SetBcnCtrlReg(Adapter, BIT(4), 0);
-
-       // Set FWHW_TXQ_CTRL 0x422[6]=0 to tell Hw the packet is not a real beacon frame.
-       if(pHalData->RegFwHwTxQCtrl & BIT(6))
-               bRecover=true;
-       PlatformEFIOWrite1Byte(Adapter, REG_FWHW_TXQ_CTRL+2, (pHalData->RegFwHwTxQCtrl&( ~BIT(6))));
-       pHalData->RegFwHwTxQCtrl &= (~BIT(6));
-
-       //---------------------------------------------------------
-       // 2. Adjust LLT table to an even boundary.
-       //---------------------------------------------------------
-
-       //---------------------------------------------------------
-       // 3. Write Fw to Tx packet buffer by reseverd page.
-       //---------------------------------------------------------
-       do
-       {
-               // download rsvd page.
-               // Clear beacon valid check bit.
-               BcnValidReg = PlatformEFIORead1Byte(Adapter, REG_TDECTRL+2);
-               PlatformEFIOWrite1Byte(Adapter, REG_TDECTRL+2, BcnValidReg&(~BIT(0)));
-
-               //BT patch is big, we should set 0x209 < 0x40 suggested from Gimmy
-               RT_TRACE(_module_mp_, _drv_info_,("0x209:%x\n",
-                                       PlatformEFIORead1Byte(Adapter, REG_TDECTRL+1)));//209 < 0x40
-               PlatformEFIOWrite1Byte(Adapter, REG_TDECTRL+1, 0x30);
-               RT_TRACE(_module_mp_, _drv_info_,("0x209:%x\n",
-                                       PlatformEFIORead1Byte(Adapter, REG_TDECTRL+1)));
-
-               /*---------------------------------------------------------
-               tx reserved_page_packet
-               ----------------------------------------------------------*/
-                       if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) {
-                                               rtStatus = _FAIL;
-                                               goto exit;
-                       }
-                       //update attribute
-                       pattrib = &pmgntframe->attrib;
-                       update_mgntframe_attrib(Adapter, pattrib);
-
-                       pattrib->qsel = QSLT_BEACON;
-                       pattrib->pktlen = pattrib->last_txcmdsz = FwBufLen ;
-
-                       //memset(pmgntframe->buf_addr, 0, TotalPktLen+TXDESC_SIZE);
-                       //pmgntframe->buf_addr = ReservedPagePacket ;
-
-                       memcpy( (u8*) (pmgntframe->buf_addr + TXDESC_OFFSET), ReservedPagePacket, FwBufLen);
-                       DBG_871X("===>TotalPktLen + TXDESC_OFFSET TotalPacketLen:%d ", (FwBufLen + TXDESC_OFFSET));
-
-                       dump_mgntframe(Adapter, pmgntframe);
-
-               // check rsvd page download OK.
-               BcnValidReg = PlatformEFIORead1Byte(Adapter, REG_TDECTRL+2);
-               while(!(BcnValidReg & BIT(0)) && count <200)
-               {
-                       count++;
-                       //PlatformSleepUs(10);
-                       rtw_msleep_os(1);
-                       BcnValidReg = PlatformEFIORead1Byte(Adapter, REG_TDECTRL+2);
-                       RT_TRACE(_module_mp_, _drv_info_,("Poll 0x20A = %x\n", BcnValidReg));
-               }
-               DLBcnCount++;
-               DBG_871X("##0x208:%08x,0x210=%08x\n",PlatformEFIORead4Byte(Adapter, REG_TDECTRL),PlatformEFIORead4Byte(Adapter, 0x210));
-       }while((!(BcnValidReg&BIT(0))) && DLBcnCount<5);
-
-
-       if(DLBcnCount >=5){
-               DBG_871X(" check rsvd page download OK DLBcnCount =%d  \n",DLBcnCount);
-               rtStatus = _FAIL;
-               goto exit;
-       }
-
-       if(!(BcnValidReg&BIT(0)))
-       {
-               DBG_871X("_WriteFWtoTxPktBuf(): 1 Download RSVD page failed!\n");
-               rtStatus = _FAIL;
-               goto exit;
-       }
-
-       //---------------------------------------------------------
-       // 4. Set Tx boundary to the initial value
-       //---------------------------------------------------------
-
-
-       //---------------------------------------------------------
-       // 5. Reset beacon setting to the initial value.
-       //       After _CheckWLANFwPatchBTFwReady().
-       //---------------------------------------------------------
-
-exit:
-
-       if(pGenBufReservedPagePacket)
-       {
-               DBG_871X("_WriteBTFWtoTxPktBuf8723A => rtw_mfree pGenBufReservedPagePacket!\n");
-               rtw_mfree((u8*)pGenBufReservedPagePacket, TotalPktLen);
-               }
-       return rtStatus;
-}
-
-
-extern s32 FillH2CCmd(PADAPTER padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
-
-//
-// Description: Determine the contents of H2C BT_FW_PATCH Command sent to FW.
-// 2011.10.20 by tynli
-//
-void
-SetFwBTFwPatchCmd(
-       IN PADAPTER     Adapter,
-       IN u2Byte               FwSize
-       )
-{
-       u1Byte          u1BTFwPatchParm[H2C_BT_FW_PATCH_LEN]={0};
-
-       RT_TRACE(_module_mp_, _drv_notice_,("SetFwBTFwPatchCmd(): FwSize = %d\n", FwSize));
-
-       //bit1: 1---24k, 0----16k
-       //SET_H2CCMD_BT_FW_PATCH_ENABLE(u1BTFwPatchParm, 0x03);
-
-       SET_H2CCMD_BT_FW_PATCH_ENABLE(u1BTFwPatchParm, 1);
-
-       SET_H2CCMD_BT_FW_PATCH_SIZE(u1BTFwPatchParm, FwSize);
-
-       u1BTFwPatchParm[0]  |= BIT1;
-
-       FillH2CCmd(Adapter, H2C_BT_FW_PATCH, H2C_BT_FW_PATCH_LEN, u1BTFwPatchParm);
-
-       RT_TRACE(_module_mp_, _drv_notice_,("<----SetFwBTFwPatchCmd(): FwSize = %d \n", FwSize));
-}
-
-void
-SetFwBTPwrCmd(
-       IN PADAPTER     Adapter,
-       IN u1Byte       PwrIdx
-       )
-{
-       u1Byte          u1BTPwrIdxParm[H2C_BT_PWR_FORCE_LEN]={0};
-
-       RT_TRACE(_module_mp_, _drv_info_,("SetFwBTPwrCmd(): idx = %d\n", PwrIdx));
-       SET_H2CCMD_BT_PWR_IDX(u1BTPwrIdxParm, PwrIdx);
-
-       RT_TRACE(_module_mp_, _drv_info_,("SetFwBTPwrCmd(): %x %x %x\n",
-               u1BTPwrIdxParm[0],u1BTPwrIdxParm[1],u1BTPwrIdxParm[2]));
-
-       FillH2CCmd(Adapter, FORCE_BT_TX_PWR_EID, H2C_BT_PWR_FORCE_LEN, u1BTPwrIdxParm);
-}
-
-//
-// Description: WLAN Fw will write BT Fw to BT XRAM and signal driver.
-//
-// 2011.10.20. by tynli.
-//
-void
-_CheckWLANFwPatchBTFwReady(
-       IN      PADAPTER                        Adapter
-)
-{
-       HAL_DATA_TYPE   *pHalData = GET_HAL_DATA(Adapter);
-       u4Byte  count=0;
-       u1Byte  u1bTmp;
-
-       //---------------------------------------------------------
-       // Check if BT FW patch procedure is ready.
-       //---------------------------------------------------------
-       do{
-               u1bTmp = PlatformEFIORead1Byte(Adapter, REG_MCUFWDL+1);
-               if(u1bTmp&BIT(7))
-                       break;
-
-               count++;
-               RT_TRACE(_module_mp_, _drv_info_,("0x81=%x, wait for 50 ms (%d) times.\n",
-                                       u1bTmp, count));
-               rtw_msleep_os(50); // 50ms
-       }while(!(u1bTmp&BIT(7)) && count < 50);
-
-       RT_TRACE(_module_mp_, _drv_notice_,("_CheckWLANFwPatchBTFwReady():"
-                               " Polling ready bit 0x81[7] for %d times.\n", count));
-
-       if(count >= 50)
-       {
-               RT_TRACE(_module_mp_, _drv_notice_,("_CheckWLANFwPatchBTFwReady():"
-                               " Polling ready bit 0x81[7] FAIL!!\n"));
-       }
-
-       //---------------------------------------------------------
-       // Reset beacon setting to the initial value.
-       //---------------------------------------------------------
-       SetBcnCtrlReg(Adapter, BIT(3), 0);
-       SetBcnCtrlReg(Adapter, 0, BIT(4));
-
-       // To make sure that if there exists an adapter which would like to send beacon.
-       // If exists, the origianl value of 0x422[6] will be 1, we should check this to
-       // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause
-       // the beacon cannot be sent by HW.
-       // 2010.06.23. Added by tynli.
-       PlatformEFIOWrite1Byte(Adapter, REG_FWHW_TXQ_CTRL+2, (pHalData->RegFwHwTxQCtrl|BIT(6)));
-       pHalData->RegFwHwTxQCtrl |= BIT(6);
-
-}
-
-int
-FirmwareDownloadBT(IN PADAPTER Adapter, PRT_FIRMWARE_8723A pFirmware)
-{
-       PHAL_DATA_TYPE  pHalData = GET_HAL_DATA(Adapter);
-       int rtStatus = _SUCCESS;
-
-       // BT pacth
-       u1Byte          *BTFwImage;
-       u4Byte          BTFwImageLen;
-
-       u1Byte          *pBTFirmwareBuf;
-       u4Byte          BTFirmwareLen;
-       //
-       // Patch BT Fw. Download BT RAM code to Tx packet buffer. Added by tynli. 2011.10.
-       // Only for 8723AE for Toshiba. Suggested by SD1 Jackie.
-       //
-       if( !(IS_HARDWARE_TYPE_8723A(Adapter)) && IS_8723A_B_CUT(pHalData->VersionID))
-                       return _FAIL ; //&& (Adapter->registrypriv.bBtFwSupport)))
-
-       if (Adapter->bBTFWReady){
-               DBG_871X("BT Firmware is ready!!\n");
-               return _FAIL;
-       }
-       BTFwImage = (pu1Byte)Rtl8723EFwBTImgArray;
-       BTFwImageLen = Rtl8723EBTImgArrayLength;
-               DBG_871X("BT Firmware is size= %zu!!\n",sizeof(Rtl8723EFwBTImgArray));
-
-       // Download BT patch Fw.
-       RT_TRACE(_module_mp_, _drv_info_,("Download BT Fw (patch version) from header.\n"));
-       DBG_871X("Download BT Fw (patch version) from header.\n");
-
-#ifdef CONFIG_EMBEDDED_FWIMG
-               pFirmware->szBTFwBuffer = BTFwImage;
-               DBG_871X("CONFIG_EMBEDDED_FWIMG pFirmware->szBTFwBuffer = BTFwImage;\n");
-#else
-               DBG_871X("memcpy BTFwImage to pFirmware->szBTFwBuffer.\n");
-               memcpy(pFirmware->szBTFwBuffer, (void *)BTFwImage, BTFwImageLen);
-#endif
-       pFirmware->ulBTFwLength = BTFwImageLen;
-               RT_TRACE(_module_mp_, _drv_notice_,("Download BT Fw (patch version) from header "
-                       "pFirmware->ulBTFwLength:%d.\n", pFirmware->ulBTFwLength));
-
-       // BT FW
-       pBTFirmwareBuf = pFirmware->szBTFwBuffer;
-       BTFirmwareLen = pFirmware->ulBTFwLength;
-
-       //for h2c cam here should be set to  true
-       Adapter->bFWReady = true;
-       DBG_871X("FirmwareDownloadBT to _WriteBTFWtoTxPktBuf8723A !\n");
-       rtStatus = _WriteBTFWtoTxPktBuf8723A(Adapter, pBTFirmwareBuf, BTFirmwareLen);
-       if(rtStatus != _SUCCESS) {
-               RT_TRACE(_module_mp_, _drv_info_,("BT Firmware download to Tx packet buffer fail!\n"));
-               DBG_871X("BT Firmware download to Tx packet buffer fail!\n");
-       } else {
-               Adapter->bBTFWReady = true;
-               SetFwBTFwPatchCmd(Adapter, (u2Byte)BTFirmwareLen);
-               _CheckWLANFwPatchBTFwReady(Adapter);
-       }
-       DBG_871X("<===FirmwareDownloadBT(),return %s!\n",rtStatus?"SUCCESS":"FAIL");
-       return rtStatus;
-}
-
-#endif
 
 #ifdef CONFIG_FILE_FWIMG
 extern char *rtw_fw_file_path;
@@ -654,8 +317,10 @@ s32 rtl8723a_FirmwareDownload(PADAPTER padapter)
 
 
        RT_TRACE(_module_hal_init_c_, _drv_info_, ("+%s\n", __FUNCTION__));
-       pFirmware = (PRT_FIRMWARE_8723A)rtw_zmalloc(sizeof(RT_FIRMWARE_8723A));
-       pBTFirmware = (PRT_FIRMWARE_8723A)rtw_zmalloc(sizeof(RT_FIRMWARE_8723A));
+       pFirmware = (PRT_FIRMWARE_8723A)kzalloc(sizeof(RT_FIRMWARE_8723A),
+                                               GFP_KERNEL);
+       pBTFirmware = (PRT_FIRMWARE_8723A)kzalloc(sizeof(RT_FIRMWARE_8723A),
+                                                 GFP_KERNEL);
 
        if(!pFirmware||!pBTFirmware)
        {
@@ -663,71 +328,58 @@ s32 rtl8723a_FirmwareDownload(PADAPTER padapter)
                goto Exit;
        }
 
-       if (IS_HARDWARE_TYPE_8723A(padapter))
-       {
-               if (IS_8723A_A_CUT(pHalData->VersionID))
-               {
-                       pFwImageFileName = R8723FwImageFileName_UMC;
-                       FwImage = (u8*)Rtl8723_FwImageArray;
-                       FwImageLen = Rtl8723_ImgArrayLength;
-                       RT_TRACE(_module_hal_init_c_, _drv_info_, ("rtl8723a_FirmwareDownload: R8723FwImageArray_UMC for RTL8723A A CUT\n"));
-               }
-               else if (IS_8723A_B_CUT(pHalData->VersionID))
-               {
-                       if(padapter->registrypriv.mp_mode == 1)
-                       {
-                       FwImage = (u8*)Rtl8723_FwUMCBCutMPImageArray;
-                       FwImageLen = Rtl8723_UMCBCutMPImgArrayLength;
-                       DBG_871X(" Rtl8723_FwUMCBCutMPImageArray for RTL8723A B CUT\n");
-                       }
-                       else
-                       {
-                       // WLAN Fw.
-                       FwImage = (u8*)Rtl8723_FwUMCBCutImageArray;
-                       FwImageLen = Rtl8723_UMCBCutImgArrayLength;
-                       DBG_871X(" Rtl8723_FwUMCBCutImageArray for RTL8723A B CUT\n");
-                       }
-                       pFwImageFileName = R8723FwImageFileName_UMC_B;
-               }
-               else
-               {
-                       // <Roger_TODO> We should download proper RAM Code here  to match the ROM code.
-                       RT_TRACE(_module_hal_init_c_, _drv_err_, ("%s: unknow version!\n", __FUNCTION__));
-//                     return RT_STATUS_FAILURE;
-                       rtStatus = _FAIL;
-                       goto Exit;
+       if (IS_8723A_A_CUT(pHalData->VersionID)) {
+               pFwImageFileName = R8723FwImageFileName_UMC;
+               FwImage = (u8*)Rtl8723_FwImageArray;
+               FwImageLen = Rtl8723_ImgArrayLength;
+               RT_TRACE(_module_hal_init_c_, _drv_info_, ("rtl8723a_FirmwareDownload: R8723FwImageArray_UMC for RTL8723A A CUT\n"));
+       } else if (IS_8723A_B_CUT(pHalData->VersionID)) {
+         // WLAN Fw.
+               if (padapter->registrypriv.wifi_spec == 1) {
+                       FwImage = (u8*)Rtl8723_FwUMCBCutImageArrayWithoutBT;
+                       FwImageLen = Rtl8723_UMCBCutImgArrayWithoutBTLength;
+                       DBG_8723A(" Rtl8723_FwUMCBCutImageArrayWithoutBT for RTL8723A B CUT\n");
+               } else {
+#ifdef CONFIG_BT_COEXIST
+                       FwImage = (u8*)Rtl8723_FwUMCBCutImageArrayWithBT;
+                       FwImageLen = Rtl8723_UMCBCutImgArrayWithBTLength;
+                       DBG_8723A(" Rtl8723_FwUMCBCutImageArrayWithBT for RTL8723A B CUT\n");
+#else
+                       FwImage = (u8*)Rtl8723_FwUMCBCutImageArrayWithoutBT;
+                       FwImageLen = Rtl8723_UMCBCutImgArrayWithoutBTLength;
+                       DBG_8723A(" Rtl8723_FwUMCBCutImageArrayWithoutBT for RTL8723A B CUT\n");
+#endif
                }
-       }
-       else
-       {
-               RT_TRACE(_module_hal_init_c_, _drv_err_, ("%s: unknow chip!\n", __FUNCTION__));
+               pFwImageFileName = R8723FwImageFileName_UMC_B;
+       } else {
+               // <Roger_TODO> We should download proper RAM Code here  to match the ROM code.
+               RT_TRACE(_module_hal_init_c_, _drv_err_, ("%s: unknow version!\n", __FUNCTION__));
                rtStatus = _FAIL;
                goto Exit;
        }
 
-//     RT_TRACE(_module_hal_init_c_, _drv_err_, ("rtl8723a_FirmwareDownload: %s\n", pFwImageFileName));
 
-       #ifdef CONFIG_FILE_FWIMG
-       if(rtw_is_file_readable(rtw_fw_file_path) == true)
+#ifdef CONFIG_FILE_FWIMG
+       if(rtw_is_file_readable(rtw_fw_file_path) == _TRUE)
        {
-               DBG_871X("%s accquire FW from file:%s\n", __FUNCTION__, rtw_fw_file_path);
+               DBG_8723A("%s accquire FW from file:%s\n", __FUNCTION__, rtw_fw_file_path);
                pFirmware->eFWSource = FW_SOURCE_IMG_FILE; // We should decided by Reg.
        }
        else
-       #endif //CONFIG_FILE_FWIMG
+#endif //CONFIG_FILE_FWIMG
        {
-               DBG_871X("%s accquire FW from embedded image\n", __FUNCTION__);
+               DBG_8723A("%s accquire FW from embedded image\n", __FUNCTION__);
                pFirmware->eFWSource = FW_SOURCE_HEADER_FILE;
        }
 
        switch(pFirmware->eFWSource)
        {
                case FW_SOURCE_IMG_FILE:
-                       #ifdef CONFIG_FILE_FWIMG
+#ifdef CONFIG_FILE_FWIMG
                        rtStatus = rtw_retrive_from_file(rtw_fw_file_path, fw_buffer_8723a, FW_8723A_SIZE);
                        pFirmware->ulFwLength = rtStatus>=0?rtStatus:0;
                        pFirmware->szFwBuffer = fw_buffer_8723a;
-                       #endif //CONFIG_FILE_FWIMG
+#endif //CONFIG_FILE_FWIMG
 
                        if(pFirmware->ulFwLength <= 0)
                        {
@@ -747,12 +399,12 @@ s32 rtl8723a_FirmwareDownload(PADAPTER padapter)
                        break;
        }
 
-       #ifdef DBG_FW_STORE_FILE_PATH //used to store firmware to file...
+#ifdef DBG_FW_STORE_FILE_PATH //used to store firmware to file...
        if(pFirmware->ulFwLength > 0)
        {
                rtw_store_to_file(DBG_FW_STORE_FILE_PATH, pFirmware->szFwBuffer, pFirmware->ulFwLength);
        }
-       #endif
+#endif
 
        pFirmwareBuf = pFirmware->szFwBuffer;
        FirmwareLen = pFirmware->ulFwLength;
@@ -764,7 +416,7 @@ s32 rtl8723a_FirmwareDownload(PADAPTER padapter)
        pHalData->FirmwareSubVersion = pFwHdr->Subversion;
        pHalData->FirmwareSignature = le16_to_cpu(pFwHdr->Signature);
 
-       DBG_871X("%s: fw_ver=%d fw_subver=%d sig=0x%x\n",
+       DBG_8723A("%s: fw_ver=%d fw_subver=%d sig=0x%x\n",
                  __FUNCTION__, pHalData->FirmwareVersion, pHalData->FirmwareSubVersion, pHalData->FirmwareSignature);
 
        if (IS_FW_HEADER_EXIST(pFwHdr))
@@ -782,7 +434,7 @@ s32 rtl8723a_FirmwareDownload(PADAPTER padapter)
                rtw_write8(padapter, REG_MCUFWDL, 0x00);
        }
 
-       _FWDownloadEnable(padapter, true);
+       _FWDownloadEnable(padapter, _TRUE);
        fwdl_start_time = rtw_get_current_time();
        while(1) {
                //reset the FWDL chksum
@@ -795,14 +447,14 @@ s32 rtl8723a_FirmwareDownload(PADAPTER padapter)
                )
                        break;
 
-               DBG_871X("%s writeFW_retry:%u, time after fwdl_start_time:%ums\n", __FUNCTION__
+               DBG_8723A("%s writeFW_retry:%u, time after fwdl_start_time:%ums\n", __FUNCTION__
                        , writeFW_retry
                        , rtw_get_passing_time_ms(fwdl_start_time)
                );
        }
-       _FWDownloadEnable(padapter, false);
+       _FWDownloadEnable(padapter, _FALSE);
        if(_SUCCESS != rtStatus){
-               DBG_871X("DL Firmware failed!\n");
+               DBG_8723A("DL Firmware failed!\n");
                goto Exit;
        }
 
@@ -813,21 +465,13 @@ s32 rtl8723a_FirmwareDownload(PADAPTER padapter)
        }
        RT_TRACE(_module_hal_init_c_, _drv_info_, ("Firmware is ready to run!\n"));
 
-#ifdef CONFIG_MP_INCLUDED//BT_MP
-       if (padapter->registrypriv.mp_mode == 1)
-       {
-               DBG_871X("rtl8723a_FirmwareDownload go to FirmwareDownloadBT !\n");
-               FirmwareDownloadBT(padapter, pBTFirmware);
-       }
-#endif
-
 Exit:
-       DBG_871X("rtl8723a_FirmwareDownload Exit rtw_mfree pFirmware !\n");
+       DBG_8723A("rtl8723a_FirmwareDownload Exit kfree pFirmware !\n");
        if (pFirmware)
-               rtw_mfree((u8*)pFirmware, sizeof(RT_FIRMWARE_8723A));
-       DBG_871X("rtl8723a_FirmwareDownload Exit rtw_mfree pBTFirmware !\n");
+               kfree(pFirmware);
+       DBG_8723A("rtl8723a_FirmwareDownload Exit kmfree pBTFirmware !\n");
        if (pBTFirmware)
-               rtw_mfree((u8*)pBTFirmware, sizeof(RT_FIRMWARE_8723A));
+               kfree(pBTFirmware);
        //RT_TRACE(COMP_INIT, DBG_LOUD, (" <=== FirmwareDownload91C()\n"));
        return rtStatus;
 }
@@ -837,20 +481,20 @@ void rtl8723a_InitializeFirmwareVars(PADAPTER padapter)
        PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
 
        // Init Fw LPS related.
-       padapter->pwrctrlpriv.bFwCurrentInPSMode = false;
+       padapter->pwrctrlpriv.bFwCurrentInPSMode = _FALSE;
 
        // Init H2C counter. by tynli. 2009.12.09.
        pHalData->LastHMEBoxNum = 0;
 //     pHalData->H2CQueueHead = 0;
 //     pHalData->H2CQueueTail = 0;
-//     pHalData->H2CStopInsertQueue = false;
+//     pHalData->H2CStopInsertQueue = _FALSE;
 }
 
 static void rtl8723a_free_hal_data(PADAPTER padapter)
 {
 _func_enter_;
        if (padapter->HalData) {
-               rtw_mfree(padapter->HalData, sizeof(HAL_DATA_TYPE));
+               kfree(padapter->HalData);
                padapter->HalData = NULL;
        }
 _func_exit_;
@@ -865,7 +509,7 @@ hal_EfuseSwitchToBank(
        u8                      bank,
        u8                      bPseudoTest)
 {
-       u8 bRet = false;
+       u8 bRet = _FALSE;
        u32 value32 = 0;
 #ifdef HAL_EFUSE_MEMORY
        PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
@@ -873,7 +517,7 @@ hal_EfuseSwitchToBank(
 #endif
 
 
-       DBG_8192C("%s: Efuse switch bank to %d\n", __FUNCTION__, bank);
+       DBG_8723A("%s: Efuse switch bank to %d\n", __FUNCTION__, bank);
        if (bPseudoTest)
        {
 #ifdef HAL_EFUSE_MEMORY
@@ -881,12 +525,12 @@ hal_EfuseSwitchToBank(
 #else
                fakeEfuseBank = bank;
 #endif
-               bRet = true;
+               bRet = _TRUE;
        }
        else
        {
                value32 = rtw_read32(padapter, EFUSE_TEST);
-               bRet = true;
+               bRet = _TRUE;
                switch (bank)
                {
                        case 0:
@@ -903,7 +547,7 @@ hal_EfuseSwitchToBank(
                                break;
                        default:
                                value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_WIFI_SEL_0);
-                               bRet = false;
+                               bRet = _FALSE;
                                break;
                }
                rtw_write32(padapter, EFUSE_TEST, value32);
@@ -1028,7 +672,7 @@ Hal_EfusePowerSwitch(
        u8      tempval;
        u16     tmpV16;
 
-       if (PwrState == true)
+       if (PwrState == _TRUE)
        {
                rtw_write8(padapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_ON);
 
@@ -1052,7 +696,7 @@ Hal_EfusePowerSwitch(
                        rtw_write16(padapter, REG_SYS_CLKR, tmpV16);
                }
 
-               if (bWrite == true)
+               if (bWrite == _TRUE)
                {
                        // Enable LDO 2.5V before read/write action
                        tempval = rtw_read8(padapter, EFUSE_TEST+3);
@@ -1065,7 +709,7 @@ Hal_EfusePowerSwitch(
        {
                rtw_write8(padapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_OFF);
 
-               if (bWrite == true) {
+               if (bWrite == _TRUE) {
                        // Disable LDO 2.5V after read/write action
                        tempval = rtw_read8(padapter, EFUSE_TEST+3);
                        rtw_write8(padapter, EFUSE_TEST+3, (tempval & 0x7F));
@@ -1079,7 +723,7 @@ hal_ReadEFuse_WiFi(
        u16                     _offset,
        u16                     _size_byte,
        u8                      *pbuf,
-       bool                    bPseudoTest)
+       u8                      bPseudoTest)
 {
 #ifdef HAL_EFUSE_MEMORY
        PHAL_DATA_TYPE  pHalData = GET_HAL_DATA(padapter);
@@ -1098,14 +742,14 @@ hal_ReadEFuse_WiFi(
        //
        if ((_offset+_size_byte) > EFUSE_MAP_LEN_8723A)
        {
-               DBG_8192C("%s: Invalid offset(%#x) with read bytes(%#x)!!\n", __FUNCTION__, _offset, _size_byte);
+               DBG_8723A("%s: Invalid offset(%#x) with read bytes(%#x)!!\n", __FUNCTION__, _offset, _size_byte);
                return;
        }
 
-       efuseTbl = (u8*)rtw_malloc(EFUSE_MAP_LEN_8723A);
+       efuseTbl = (u8*)kmalloc(EFUSE_MAP_LEN_8723A, GFP_KERNEL);
        if (efuseTbl == NULL)
        {
-               DBG_8192C("%s: alloc efuseTbl fail!\n", __FUNCTION__);
+               DBG_8723A("%s: alloc efuseTbl fail!\n", __FUNCTION__);
                return;
        }
        // 0xff will be efuse default value instead of 0x00.
@@ -1119,19 +763,19 @@ hal_ReadEFuse_WiFi(
                ReadEFuseByte(padapter, eFuse_Addr++, &efuseHeader, bPseudoTest);
                if (efuseHeader == 0xFF)
                {
-                       DBG_8192C("%s: data end at address=%#x\n", __FUNCTION__, eFuse_Addr);
+                       DBG_8723A("%s: data end at address=%#x\n", __FUNCTION__, eFuse_Addr);
                        break;
                }
-//             DBG_8192C("%s: efuse[0x%X]=0x%02X\n", __FUNCTION__, eFuse_Addr-1, efuseHeader);
+//             DBG_8723A("%s: efuse[0x%X]=0x%02X\n", __FUNCTION__, eFuse_Addr-1, efuseHeader);
 
                // Check PG header for section num.
                if (EXT_HEADER(efuseHeader))            //extended header
                {
                        offset = GET_HDR_OFFSET_2_0(efuseHeader);
-//                     DBG_8192C("%s: extended header offset_2_0=0x%X\n", __FUNCTION__, offset_2_0);
+//                     DBG_8723A("%s: extended header offset_2_0=0x%X\n", __FUNCTION__, offset_2_0);
 
                        ReadEFuseByte(padapter, eFuse_Addr++, &efuseExtHdr, bPseudoTest);
-//                     DBG_8192C("%s: efuse[0x%X]=0x%02X\n", __FUNCTION__, eFuse_Addr-1, efuseExtHdr);
+//                     DBG_8723A("%s: efuse[0x%X]=0x%02X\n", __FUNCTION__, eFuse_Addr-1, efuseExtHdr);
                        if (ALL_WORDS_DISABLED(efuseExtHdr))
                        {
                                continue;
@@ -1150,7 +794,7 @@ hal_ReadEFuse_WiFi(
                {
                        u16 addr;
                        // Get word enable value from PG header
-//                     DBG_8192C("%s: Offset=%d Worden=0x%X\n", __FUNCTION__, offset, wden);
+//                     DBG_8723A("%s: Offset=%d Worden=0x%X\n", __FUNCTION__, offset, wden);
 
                        addr = offset * PGPKT_DATA_SIZE;
                        for (i=0; i<EFUSE_MAX_WORD_UNIT; i++)
@@ -1159,11 +803,11 @@ hal_ReadEFuse_WiFi(
                                if (!(wden & (0x01<<i)))
                                {
                                        ReadEFuseByte(padapter, eFuse_Addr++, &efuseData, bPseudoTest);
-//                                     DBG_8192C("%s: efuse[%#X]=0x%02X\n", __FUNCTION__, eFuse_Addr-1, efuseData);
+//                                     DBG_8723A("%s: efuse[%#X]=0x%02X\n", __FUNCTION__, eFuse_Addr-1, efuseData);
                                        efuseTbl[addr] = efuseData;
 
                                        ReadEFuseByte(padapter, eFuse_Addr++, &efuseData, bPseudoTest);
-//                                     DBG_8192C("%s: efuse[%#X]=0x%02X\n", __FUNCTION__, eFuse_Addr-1, efuseData);
+//                                     DBG_8723A("%s: efuse[%#X]=0x%02X\n", __FUNCTION__, eFuse_Addr-1, efuseData);
                                        efuseTbl[addr+1] = efuseData;
                                }
                                addr += 2;
@@ -1171,7 +815,7 @@ hal_ReadEFuse_WiFi(
                }
                else
                {
-                       DBG_8192C(KERN_ERR "%s: offset(%d) is illegal!!\n", __FUNCTION__, offset);
+                       DBG_8723A(KERN_ERR "%s: offset(%d) is illegal!!\n", __FUNCTION__, offset);
                        eFuse_Addr += Efuse_CalculateWordCnts(wden)*2;
                }
        }
@@ -1199,10 +843,10 @@ hal_ReadEFuse_WiFi(
        }
 
        if (efuseTbl)
-               rtw_mfree(efuseTbl, EFUSE_MAP_LEN_8723A);
+               kfree(efuseTbl);
 }
 
-static void
+static VOID
 hal_ReadEFuse_BT(
        PADAPTER        padapter,
        u16                     _offset,
@@ -1229,13 +873,13 @@ hal_ReadEFuse_BT(
        //
        if ((_offset+_size_byte) > EFUSE_BT_MAP_LEN)
        {
-               DBG_8192C("%s: Invalid offset(%#x) with read bytes(%#x)!!\n", __FUNCTION__, _offset, _size_byte);
+               DBG_8723A("%s: Invalid offset(%#x) with read bytes(%#x)!!\n", __FUNCTION__, _offset, _size_byte);
                return;
        }
 
-       efuseTbl = rtw_malloc(EFUSE_BT_MAP_LEN);
+       efuseTbl = kmalloc(EFUSE_BT_MAP_LEN, GFP_KERNEL);
        if (efuseTbl == NULL) {
-               DBG_8192C("%s: efuseTbl malloc fail!\n", __FUNCTION__);
+               DBG_8723A("%s: efuseTbl malloc fail!\n", __FUNCTION__);
                return;
        }
        // 0xff will be efuse default value instead of 0x00.
@@ -1245,9 +889,9 @@ hal_ReadEFuse_BT(
 
        for (bank=1; bank<EFUSE_MAX_BANK; bank++)
        {
-               if (hal_EfuseSwitchToBank(padapter, bank, bPseudoTest) == false)
+               if (hal_EfuseSwitchToBank(padapter, bank, bPseudoTest) == _FALSE)
                {
-                       DBG_8192C("%s: hal_EfuseSwitchToBank Fail!!\n", __FUNCTION__);
+                       DBG_8723A("%s: hal_EfuseSwitchToBank Fail!!\n", __FUNCTION__);
                        goto exit;
                }
 
@@ -1257,16 +901,16 @@ hal_ReadEFuse_BT(
                {
                        ReadEFuseByte(padapter, eFuse_Addr++, &efuseHeader, bPseudoTest);
                        if (efuseHeader == 0xFF) break;
-//                     DBG_8192C("%s: efuse[%#X]=0x%02x (header)\n", __FUNCTION__, (((bank-1)*EFUSE_REAL_CONTENT_LEN)+eFuse_Addr-1), efuseHeader);
+//                     DBG_8723A("%s: efuse[%#X]=0x%02x (header)\n", __FUNCTION__, (((bank-1)*EFUSE_REAL_CONTENT_LEN)+eFuse_Addr-1), efuseHeader);
 
                        // Check PG header for section num.
                        if (EXT_HEADER(efuseHeader))            //extended header
                        {
                                offset = GET_HDR_OFFSET_2_0(efuseHeader);
-//                             DBG_8192C("%s: extended header offset_2_0=0x%X\n", __FUNCTION__, offset_2_0);
+//                             DBG_8723A("%s: extended header offset_2_0=0x%X\n", __FUNCTION__, offset_2_0);
 
                                ReadEFuseByte(padapter, eFuse_Addr++, &efuseExtHdr, bPseudoTest);
-//                             DBG_8192C("%s: efuse[%#X]=0x%02x (ext header)\n", __FUNCTION__, (((bank-1)*EFUSE_REAL_CONTENT_LEN)+eFuse_Addr-1), efuseExtHdr);
+//                             DBG_8723A("%s: efuse[%#X]=0x%02x (ext header)\n", __FUNCTION__, (((bank-1)*EFUSE_REAL_CONTENT_LEN)+eFuse_Addr-1), efuseExtHdr);
                                if (ALL_WORDS_DISABLED(efuseExtHdr))
                                {
                                        continue;
@@ -1286,7 +930,7 @@ hal_ReadEFuse_BT(
                                u16 addr;
 
                                // Get word enable value from PG header
-//                             DBG_8192C("%s: Offset=%d Worden=%#X\n", __FUNCTION__, offset, wden);
+//                             DBG_8723A("%s: Offset=%d Worden=%#X\n", __FUNCTION__, offset, wden);
 
                                addr = offset * PGPKT_DATA_SIZE;
                                for (i=0; i<EFUSE_MAX_WORD_UNIT; i++)
@@ -1295,11 +939,11 @@ hal_ReadEFuse_BT(
                                        if (!(wden & (0x01<<i)))
                                        {
                                                ReadEFuseByte(padapter, eFuse_Addr++, &efuseData, bPseudoTest);
-//                                             DBG_8192C("%s: efuse[%#X]=0x%02X\n", __FUNCTION__, eFuse_Addr-1, efuseData);
+//                                             DBG_8723A("%s: efuse[%#X]=0x%02X\n", __FUNCTION__, eFuse_Addr-1, efuseData);
                                                efuseTbl[addr] = efuseData;
 
                                                ReadEFuseByte(padapter, eFuse_Addr++, &efuseData, bPseudoTest);
-//                                             DBG_8192C("%s: efuse[%#X]=0x%02X\n", __FUNCTION__, eFuse_Addr-1, efuseData);
+//                                             DBG_8723A("%s: efuse[%#X]=0x%02X\n", __FUNCTION__, eFuse_Addr-1, efuseData);
                                                efuseTbl[addr+1] = efuseData;
                                        }
                                        addr += 2;
@@ -1307,14 +951,14 @@ hal_ReadEFuse_BT(
                        }
                        else
                        {
-                               DBG_8192C(KERN_ERR "%s: offset(%d) is illegal!!\n", __FUNCTION__, offset);
+                               DBG_8723A(KERN_ERR "%s: offset(%d) is illegal!!\n", __FUNCTION__, offset);
                                eFuse_Addr += Efuse_CalculateWordCnts(wden)*2;
                        }
                }
 
                if ((eFuse_Addr-1) < total)
                {
-                       DBG_8192C("%s: bank(%d) data end at %#x\n", __FUNCTION__, bank, eFuse_Addr-1);
+                       DBG_8723A("%s: bank(%d) data end at %#x\n", __FUNCTION__, bank, eFuse_Addr-1);
                        break;
                }
        }
@@ -1348,7 +992,7 @@ hal_ReadEFuse_BT(
 
 exit:
        if (efuseTbl)
-               rtw_mfree(efuseTbl, EFUSE_BT_MAP_LEN);
+               kfree(efuseTbl);
 }
 
 static void
@@ -1369,7 +1013,7 @@ Hal_ReadEFuse(
 static u16
 hal_EfuseGetCurrentSize_WiFi(
        PADAPTER        padapter,
-       u8                      bPseudoTest)
+       bool                    bPseudoTest)
 {
 #ifdef HAL_EFUSE_MEMORY
        PHAL_DATA_TYPE  pHalData = GET_HAL_DATA(padapter);
@@ -1392,16 +1036,16 @@ hal_EfuseGetCurrentSize_WiFi(
        {
                rtw_hal_get_hwreg(padapter, HW_VAR_EFUSE_BYTES, (u8*)&efuse_addr);
        }
-       DBG_8192C("%s: start_efuse_addr=0x%X\n", __FUNCTION__, efuse_addr);
+       DBG_8723A("%s: start_efuse_addr=0x%X\n", __FUNCTION__, efuse_addr);
 
        // switch bank back to bank 0 for later BT and wifi use.
        hal_EfuseSwitchToBank(padapter, 0, bPseudoTest);
 
        while (AVAILABLE_EFUSE_ADDR(efuse_addr))
        {
-               if (efuse_OneByteRead(padapter, efuse_addr, &efuse_data, bPseudoTest) == false)
+               if (efuse_OneByteRead(padapter, efuse_addr, &efuse_data, bPseudoTest) == _FALSE)
                {
-                       DBG_8192C(KERN_ERR "%s: efuse_OneByteRead Fail! addr=0x%X !!\n", __FUNCTION__, efuse_addr);
+                       DBG_8723A(KERN_ERR "%s: efuse_OneByteRead Fail! addr=0x%X !!\n", __FUNCTION__, efuse_addr);
                        break;
                }
 
@@ -1442,7 +1086,7 @@ hal_EfuseGetCurrentSize_WiFi(
        {
                rtw_hal_set_hwreg(padapter, HW_VAR_EFUSE_BYTES, (u8*)&efuse_addr);
        }
-       DBG_8192C("%s: CurrentSize=%d\n", __FUNCTION__, efuse_addr);
+       DBG_8723A("%s: CurrentSize=%d\n", __FUNCTION__, efuse_addr);
 
        return efuse_addr;
 }
@@ -1450,7 +1094,7 @@ hal_EfuseGetCurrentSize_WiFi(
 static u16
 hal_EfuseGetCurrentSize_BT(
        PADAPTER        padapter,
-       u8                      bPseudoTest)
+       bool                    bPseudoTest)
 {
 #ifdef HAL_EFUSE_MEMORY
        PHAL_DATA_TYPE  pHalData = GET_HAL_DATA(padapter);
@@ -1479,15 +1123,15 @@ hal_EfuseGetCurrentSize_BT(
        efuse_addr = (u16)((btusedbytes%EFUSE_BT_REAL_BANK_CONTENT_LEN));
        startBank = (u8)(1+(btusedbytes/EFUSE_BT_REAL_BANK_CONTENT_LEN));
 
-       DBG_8192C("%s: start from bank=%d addr=0x%X\n", __FUNCTION__, startBank, efuse_addr);
+       DBG_8723A("%s: start from bank=%d addr=0x%X\n", __FUNCTION__, startBank, efuse_addr);
 
        EFUSE_GetEfuseDefinition(padapter, EFUSE_BT, TYPE_AVAILABLE_EFUSE_BYTES_BANK, &retU2, bPseudoTest);
 
        for (bank=startBank; bank<EFUSE_MAX_BANK; bank++)
        {
-               if (hal_EfuseSwitchToBank(padapter, bank, bPseudoTest) == false)
+               if (hal_EfuseSwitchToBank(padapter, bank, bPseudoTest) == _FALSE)
                {
-                       DBG_8192C(KERN_ERR "%s: switch bank(%d) Fail!!\n", __FUNCTION__, bank);
+                       DBG_8723A(KERN_ERR "%s: switch bank(%d) Fail!!\n", __FUNCTION__, bank);
                        bank = EFUSE_MAX_BANK;
                        break;
                }
@@ -1498,9 +1142,9 @@ hal_EfuseGetCurrentSize_BT(
 
                while (AVAILABLE_EFUSE_ADDR(efuse_addr))
                {
-                       if (efuse_OneByteRead(padapter, efuse_addr, &efuse_data, bPseudoTest) == false)
+                       if (efuse_OneByteRead(padapter, efuse_addr, &efuse_data, bPseudoTest) == _FALSE)
                        {
-                               DBG_8192C(KERN_ERR "%s: efuse_OneByteRead Fail! addr=0x%X !!\n", __FUNCTION__, efuse_addr);
+                               DBG_8723A(KERN_ERR "%s: efuse_OneByteRead Fail! addr=0x%X !!\n", __FUNCTION__, efuse_addr);
                                bank = EFUSE_MAX_BANK;
                                break;
                        }
@@ -1552,7 +1196,7 @@ hal_EfuseGetCurrentSize_BT(
                rtw_hal_set_hwreg(padapter, HW_VAR_EFUSE_BT_BYTES, (u8*)&retU2);
        }
 
-       DBG_8192C("%s: CurrentSize=%d\n", __FUNCTION__, retU2);
+       DBG_8723A("%s: CurrentSize=%d\n", __FUNCTION__, retU2);
        return retU2;
 }
 
@@ -1586,7 +1230,7 @@ Hal_EfuseWordEnableDataWrite(
        u8      tmpdata[PGPKT_DATA_SIZE];
 
 
-//     DBG_8192C("%s: efuse_addr=%#x word_en=%#x\n", __FUNCTION__, efuse_addr, word_en);
+//     DBG_8723A("%s: efuse_addr=%#x word_en=%#x\n", __FUNCTION__, efuse_addr, word_en);
        memset(tmpdata, 0xFF, PGPKT_DATA_SIZE);
 
        if (!(word_en & BIT(0)))
@@ -1648,7 +1292,7 @@ Hal_EfusePgPacketRead(
        u8                      *data,
        bool                    bPseudoTest)
 {
-       u8      bDataEmpty = true;
+       u8      bDataEmpty = _TRUE;
        u8      efuse_data, word_cnts=0;
        u16     efuse_addr=0;
        u8      hoffset=0, hworden=0;
@@ -1658,17 +1302,17 @@ Hal_EfusePgPacketRead(
 
 
        if (data == NULL)
-               return false;
+               return _FALSE;
 
        EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAX_SECTION, &max_section, bPseudoTest);
        if (offset > max_section)
        {
-               DBG_8192C("%s: Packet offset(%d) is illegal(>%d)!\n", __FUNCTION__, offset, max_section);
-               return false;
+               DBG_8723A("%s: Packet offset(%d) is illegal(>%d)!\n", __FUNCTION__, offset, max_section);
+               return _FALSE;
        }
 
        memset(data, 0xFF, PGPKT_DATA_SIZE);
-       ret = true;
+       ret = _TRUE;
 
        //
        // <Roger_TODO> Efuse has been pre-programmed dummy 5Bytes at the end of Efuse by CP.
@@ -1677,9 +1321,9 @@ Hal_EfusePgPacketRead(
        //
        while (AVAILABLE_EFUSE_ADDR(efuse_addr))
        {
-               if (efuse_OneByteRead(padapter, efuse_addr++, &efuse_data, bPseudoTest) == false)
+               if (efuse_OneByteRead(padapter, efuse_addr++, &efuse_data, bPseudoTest) == _FALSE)
                {
-                       ret = false;
+                       ret = _FALSE;
                        break;
                }
 
@@ -1691,7 +1335,7 @@ Hal_EfusePgPacketRead(
                        efuse_OneByteRead(padapter, efuse_addr++, &efuse_data, bPseudoTest);
                        if (ALL_WORDS_DISABLED(efuse_data))
                        {
-                               DBG_8192C("%s: Error!! All words disabled!\n", __FUNCTION__);
+                               DBG_8723A("%s: Error!! All words disabled!\n", __FUNCTION__);
                                continue;
                        }
 
@@ -1712,11 +1356,11 @@ Hal_EfusePgPacketRead(
                                if (!(hworden & (0x01<<i)))
                                {
                                        ReadEFuseByte(padapter, efuse_addr++, &efuse_data, bPseudoTest);
-//                                     DBG_8192C("%s: efuse[%#X]=0x%02X\n", __FUNCTION__, efuse_addr+tmpidx, efuse_data);
+//                                     DBG_8723A("%s: efuse[%#X]=0x%02X\n", __FUNCTION__, efuse_addr+tmpidx, efuse_data);
                                        data[i*2] = efuse_data;
 
                                        ReadEFuseByte(padapter, efuse_addr++, &efuse_data, bPseudoTest);
-//                                     DBG_8192C("%s: efuse[%#X]=0x%02X\n", __FUNCTION__, efuse_addr+tmpidx, efuse_data);
+//                                     DBG_8723A("%s: efuse[%#X]=0x%02X\n", __FUNCTION__, efuse_addr+tmpidx, efuse_data);
                                        data[(i*2)+1] = efuse_data;
                                }
                        }
@@ -1742,15 +1386,15 @@ hal_EfusePgCheckAvailableAddr(
 
 
        EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, &max_available, bPseudoTest);
-//     DBG_8192C("%s: max_available=%d\n", __FUNCTION__, max_available);
+//     DBG_8723A("%s: max_available=%d\n", __FUNCTION__, max_available);
 
        current_size = Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest);
        if (current_size >= max_available)
        {
-               DBG_8192C("%s: Error!! current_size(%d)>max_available(%d)\n", __FUNCTION__, current_size, max_available);
-               return false;
+               DBG_8723A("%s: Error!! current_size(%d)>max_available(%d)\n", __FUNCTION__, current_size, max_available);
+               return _FALSE;
        }
-       return true;
+       return _TRUE;
 }
 
 static void
@@ -1767,6 +1411,76 @@ hal_EfuseConstructPGPkt(
        pTargetPkt->word_cnts = Efuse_CalculateWordCnts(pTargetPkt->word_en);
 }
 
+#if 0
+static u8
+wordEnMatched(
+       PPGPKT_STRUCT   pTargetPkt,
+       PPGPKT_STRUCT   pCurPkt,
+       u8                              *pWden)
+{
+       u8      match_word_en = 0x0F;   // default all words are disabled
+       u8      i;
+
+       // check if the same words are enabled both target and current PG packet
+       if (((pTargetPkt->word_en & BIT(0)) == 0) &&
+               ((pCurPkt->word_en & BIT(0)) == 0))
+       {
+               match_word_en &= ~BIT(0);                               // enable word 0
+       }
+       if (((pTargetPkt->word_en & BIT(1)) == 0) &&
+               ((pCurPkt->word_en & BIT(1)) == 0))
+       {
+               match_word_en &= ~BIT(1);                               // enable word 1
+       }
+       if (((pTargetPkt->word_en & BIT(2)) == 0) &&
+               ((pCurPkt->word_en & BIT(2)) == 0))
+       {
+               match_word_en &= ~BIT(2);                               // enable word 2
+       }
+       if (((pTargetPkt->word_en & BIT(3)) == 0) &&
+               ((pCurPkt->word_en & BIT(3)) == 0))
+       {
+               match_word_en &= ~BIT(3);                               // enable word 3
+       }
+
+       *pWden = match_word_en;
+
+       if (match_word_en != 0xf)
+               return _TRUE;
+       else
+               return _FALSE;
+}
+
+static u8
+hal_EfuseCheckIfDatafollowed(
+       PADAPTER                pAdapter,
+       u8                              word_cnts,
+       u16                             startAddr,
+       u8                              bPseudoTest)
+{
+       u8 bRet=_FALSE;
+       u8 i, efuse_data;
+
+       for (i=0; i<(word_cnts*2); i++)
+       {
+               if (efuse_OneByteRead(pAdapter, (startAddr+i) ,&efuse_data, bPseudoTest) == _FALSE)
+               {
+                       DBG_8723A("%s: efuse_OneByteRead FAIL!!\n", __FUNCTION__);
+                       bRet = _TRUE;
+                       break;
+               }
+
+               if (efuse_data != 0xFF)
+               {
+                       bRet = _TRUE;
+                       break;
+               }
+       }
+
+       return bRet;
+}
+#endif
+
 static u8
 hal_EfusePartialWriteCheck(
        PADAPTER                padapter,
@@ -1777,9 +1491,16 @@ hal_EfusePartialWriteCheck(
 {
        PHAL_DATA_TYPE  pHalData = GET_HAL_DATA(padapter);
        PEFUSE_HAL              pEfuseHal = &pHalData->EfuseHal;
-       u8      bRet=false;
+       u8      bRet=_FALSE;
        u16     startAddr=0, efuse_max_available_len=0, efuse_max=0;
        u8      efuse_data=0;
+#if 0
+       u8      i, cur_header=0;
+       u8      new_wden=0, matched_wden=0, badworden=0;
+       PGPKT_STRUCT    curPkt;
+#endif
+
+
        EFUSE_GetEfuseDefinition(padapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, &efuse_max_available_len, bPseudoTest);
        EFUSE_GetEfuseDefinition(padapter, efuseType, TYPE_EFUSE_CONTENT_LEN_BANK, &efuse_max, bPseudoTest);
 
@@ -1814,14 +1535,14 @@ hal_EfusePartialWriteCheck(
                }
        }
        startAddr %= efuse_max;
-//     DBG_8192C("%s: startAddr=%#X\n", __FUNCTION__, startAddr);
+//     DBG_8723A("%s: startAddr=%#X\n", __FUNCTION__, startAddr);
 
        while (1)
        {
                if (startAddr >= efuse_max_available_len)
                {
-                       bRet = false;
-                       DBG_8192C("%s: startAddr(%d) >= efuse_max_available_len(%d)\n",
+                       bRet = _FALSE;
+                       DBG_8723A("%s: startAddr(%d) >= efuse_max_available_len(%d)\n",
                                __FUNCTION__, startAddr, efuse_max_available_len);
                        break;
                }
@@ -1829,8 +1550,8 @@ hal_EfusePartialWriteCheck(
                if (efuse_OneByteRead(padapter, startAddr, &efuse_data, bPseudoTest) && (efuse_data!=0xFF))
                {
 #if 1
-                       bRet = false;
-                       DBG_8192C("%s: Something Wrong! last bytes(%#X=0x%02X) is not 0xFF\n",
+                       bRet = _FALSE;
+                       DBG_8723A("%s: Something Wrong! last bytes(%#X=0x%02X) is not 0xFF\n",
                                __FUNCTION__, startAddr, efuse_data);
                        break;
 #else
@@ -1841,8 +1562,8 @@ hal_EfusePartialWriteCheck(
                                efuse_OneByteRead(padapter, startAddr, &efuse_data, bPseudoTest);
                                if (ALL_WORDS_DISABLED(efuse_data))
                                {
-                                       DBG_8192C("%s: Error condition, all words disabled!", __FUNCTION__);
-                                       bRet = false;
+                                       DBG_8723A("%s: Error condition, all words disabled!", __FUNCTION__);
+                                       bRet = _FALSE;
                                        break;
                                }
                                else
@@ -1862,10 +1583,10 @@ hal_EfusePartialWriteCheck(
                        // if same header is found but no data followed
                        // write some part of data followed by the header.
                        if ((curPkt.offset == pTargetPkt->offset) &&
-                               (hal_EfuseCheckIfDatafollowed(padapter, curPkt.word_cnts, startAddr+1, bPseudoTest) == false) &&
-                               wordEnMatched(pTargetPkt, &curPkt, &matched_wden) == true)
+                               (hal_EfuseCheckIfDatafollowed(padapter, curPkt.word_cnts, startAddr+1, bPseudoTest) == _FALSE) &&
+                               wordEnMatched(pTargetPkt, &curPkt, &matched_wden) == _TRUE)
                        {
-                               DBG_8192C("%s: Need to partial write data by the previous wrote header\n", __FUNCTION__);
+                               DBG_8723A("%s: Need to partial write data by the previous wrote header\n", __FUNCTION__);
                                // Here to write partial data
                                badworden = Efuse_WordEnableDataWrite(padapter, startAddr+1, matched_wden, pTargetPkt->data, bPseudoTest);
                                if (badworden != 0x0F)
@@ -1879,7 +1600,7 @@ hal_EfusePartialWriteCheck(
 
                                        if (!PgWriteSuccess)
                                        {
-                                               bRet = false;   // write fail, return
+                                               bRet = _FALSE;  // write fail, return
                                                break;
                                        }
                                }
@@ -1901,8 +1622,8 @@ hal_EfusePartialWriteCheck(
                {
                        // not used header, 0xff
                        *pAddr = startAddr;
-//                     DBG_8192C("%s: Started from unused header offset=%d\n", __FUNCTION__, startAddr));
-                       bRet = true;
+//                     DBG_8723A("%s: Started from unused header offset=%d\n", __FUNCTION__, startAddr));
+                       bRet = _TRUE;
                        break;
                }
        }
@@ -1918,13 +1639,13 @@ hal_EfusePgPacketWrite1ByteHeader(
        PPGPKT_STRUCT   pTargetPkt,
        u8                              bPseudoTest)
 {
-       u8      bRet=false;
+       u8      bRet=_FALSE;
        u8      pg_header=0, tmp_header=0;
        u16     efuse_addr=*pAddr;
        u8      repeatcnt=0;
 
 
-//     DBG_8192C("%s\n", __FUNCTION__);
+//     DBG_8723A("%s\n", __FUNCTION__);
        pg_header = ((pTargetPkt->offset << 4) & 0xf0) | pTargetPkt->word_en;
 
        do {
@@ -1933,20 +1654,20 @@ hal_EfusePgPacketWrite1ByteHeader(
                if (tmp_header != 0xFF) break;
                if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_)
                {
-                       DBG_8192C("%s: Repeat over limit for pg_header!!\n", __FUNCTION__);
-                       return false;
+                       DBG_8723A("%s: Repeat over limit for pg_header!!\n", __FUNCTION__);
+                       return _FALSE;
                }
        } while (1);
 
        if (tmp_header != pg_header)
        {
-               DBG_8192C(KERN_ERR "%s: PG Header Fail!!(pg=0x%02X read=0x%02X)\n", __FUNCTION__, pg_header, tmp_header);
-               return false;
+               DBG_8723A(KERN_ERR "%s: PG Header Fail!!(pg=0x%02X read=0x%02X)\n", __FUNCTION__, pg_header, tmp_header);
+               return _FALSE;
        }
 
        *pAddr = efuse_addr;
 
-       return true;
+       return _TRUE;
 }
 
 static u8
@@ -1962,18 +1683,18 @@ hal_EfusePgPacketWrite2ByteHeader(
        u8      repeatcnt=0;
 
 
-//     DBG_8192C("%s\n", __FUNCTION__);
+//     DBG_8723A("%s\n", __FUNCTION__);
        EFUSE_GetEfuseDefinition(padapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_BANK, &efuse_max_available_len, bPseudoTest);
 
        efuse_addr = *pAddr;
        if (efuse_addr >= efuse_max_available_len)
        {
-               DBG_8192C("%s: addr(%d) over avaliable(%d)!!\n", __FUNCTION__, efuse_addr, efuse_max_available_len);
-               return false;
+               DBG_8723A("%s: addr(%d) over avaliable(%d)!!\n", __FUNCTION__, efuse_addr, efuse_max_available_len);
+               return _FALSE;
        }
 
        pg_header = ((pTargetPkt->offset & 0x07) << 5) | 0x0F;
-//     DBG_8192C("%s: pg_header=0x%x\n", __FUNCTION__, pg_header);
+//     DBG_8723A("%s: pg_header=0x%x\n", __FUNCTION__, pg_header);
 
        do {
                efuse_OneByteWrite(padapter, efuse_addr, pg_header, bPseudoTest);
@@ -1981,15 +1702,15 @@ hal_EfusePgPacketWrite2ByteHeader(
                if (tmp_header != 0xFF) break;
                if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_)
                {
-                       DBG_8192C("%s: Repeat over limit for pg_header!!\n", __FUNCTION__);
-                       return false;
+                       DBG_8723A("%s: Repeat over limit for pg_header!!\n", __FUNCTION__);
+                       return _FALSE;
                }
        } while (1);
 
        if (tmp_header != pg_header)
        {
-               DBG_8192C(KERN_ERR "%s: PG Header Fail!!(pg=0x%02X read=0x%02X)\n", __FUNCTION__, pg_header, tmp_header);
-               return false;
+               DBG_8723A(KERN_ERR "%s: PG Header Fail!!(pg=0x%02X read=0x%02X)\n", __FUNCTION__, pg_header, tmp_header);
+               return _FALSE;
        }
 
        // to write ext_header
@@ -2002,20 +1723,20 @@ hal_EfusePgPacketWrite2ByteHeader(
                if (tmp_header != 0xFF) break;
                if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_)
                {
-                       DBG_8192C("%s: Repeat over limit for ext_header!!\n", __FUNCTION__);
-                       return false;
+                       DBG_8723A("%s: Repeat over limit for ext_header!!\n", __FUNCTION__);
+                       return _FALSE;
                }
        } while (1);
 
        if (tmp_header != pg_header)    //offset PG fail
        {
-               DBG_8192C(KERN_ERR "%s: PG EXT Header Fail!!(pg=0x%02X read=0x%02X)\n", __FUNCTION__, pg_header, tmp_header);
-               return false;
+               DBG_8723A(KERN_ERR "%s: PG EXT Header Fail!!(pg=0x%02X read=0x%02X)\n", __FUNCTION__, pg_header, tmp_header);
+               return _FALSE;
        }
 
        *pAddr = efuse_addr;
 
-       return true;
+       return _TRUE;
 }
 
 static u8
@@ -2026,7 +1747,7 @@ hal_EfusePgPacketWriteHeader(
        PPGPKT_STRUCT   pTargetPkt,
        u8                              bPseudoTest)
 {
-       u8 bRet=false;
+       u8 bRet=_FALSE;
 
        if (pTargetPkt->offset >= EFUSE_MAX_SECTION_BASE)
        {
@@ -2056,12 +1777,12 @@ hal_EfusePgPacketWriteData(
        badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr+1, pTargetPkt->word_en, pTargetPkt->data, bPseudoTest);
        if (badworden != 0x0F)
        {
-               DBG_8192C("%s: Fail!!\n", __FUNCTION__);
-               return false;
+               DBG_8723A("%s: Fail!!\n", __FUNCTION__);
+               return _FALSE;
        }
 
-//     DBG_8192C("%s: ok\n", __FUNCTION__);
-       return true;
+//     DBG_8723A("%s: ok\n", __FUNCTION__);
+       return _TRUE;
 }
 
 static s32
@@ -2077,25 +1798,25 @@ Hal_EfusePgPacketWrite(
        u8 efuseType=EFUSE_WIFI;
 
        if (!hal_EfusePgCheckAvailableAddr(padapter, efuseType, bPseudoTest))
-               return false;
+               return _FALSE;
 
        hal_EfuseConstructPGPkt(offset, word_en, pData, &targetPkt);
 
        if (!hal_EfusePartialWriteCheck(padapter, efuseType, &startAddr, &targetPkt, bPseudoTest))
-               return false;
+               return _FALSE;
 
        if (!hal_EfusePgPacketWriteHeader(padapter, efuseType, &startAddr, &targetPkt, bPseudoTest))
-               return false;
+               return _FALSE;
 
        if (!hal_EfusePgPacketWriteData(padapter, efuseType, &startAddr, &targetPkt, bPseudoTest))
-               return false;
+               return _FALSE;
 
-       return true;
+       return _TRUE;
 }
 
 static bool
 Hal_EfusePgPacketWrite_BT(
-       PADAPTER        pAdapter,
+       _adapter *pAdapter,
        u8                      offset,
        u8                      word_en,
        u8                      *pData,
@@ -2106,20 +1827,20 @@ Hal_EfusePgPacketWrite_BT(
        u8 efuseType=EFUSE_BT;
 
        if(!hal_EfusePgCheckAvailableAddr(pAdapter, efuseType, bPseudoTest))
-               return false;
+               return _FALSE;
 
        hal_EfuseConstructPGPkt(offset, word_en, pData, &targetPkt);
 
        if(!hal_EfusePartialWriteCheck(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest))
-               return false;
+               return _FALSE;
 
        if(!hal_EfusePgPacketWriteHeader(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest))
-               return false;
+               return _FALSE;
 
        if(!hal_EfusePgPacketWriteData(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest))
-               return false;
+               return _FALSE;
 
-       return true;
+       return _TRUE;
 }
 
 static HAL_VERSION
@@ -2167,7 +1888,7 @@ ReadChipVersion8723A(
        else
                pHalData->rf_type = RF_1T1R;
 
-       MSG_8192C("RF_Type is %x!!\n", pHalData->rf_type);
+       MSG_8723A("RF_Type is %x!!\n", pHalData->rf_type);
 
        return ChipVersion;
 }
@@ -2228,7 +1949,7 @@ void rtl8723a_InitBeaconParameters(PADAPTER padapter)
        rtw_write16(padapter, REG_TBTT_PROHIBIT, 0x6404);// ms
        // Firmware will control REG_DRVERLYINT when power saving is enable,
        // so don't set this register on STA mode.
-       if (check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE) == false)
+       if (check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE) == _FALSE)
                rtw_write8(padapter, REG_DRVERLYINT, DRIVER_EARLY_INT_TIME); // 5ms
        rtw_write8(padapter, REG_BCNDMATIM, BCN_DMA_ATIME_INT_TIME); // 2ms
 
@@ -2333,13 +2054,13 @@ static void rtl8723a_SetBeaconRelatedRegisters(PADAPTER padapter)
        rtw_write32(padapter, REG_TCR, value32);
 
        // NOTE: Fix test chip's bug (about contention windows's randomness)
-       if (check_fwstate(&padapter->mlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE|WIFI_AP_STATE) == true)
+       if (check_fwstate(&padapter->mlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE|WIFI_AP_STATE) == _TRUE)
        {
                rtw_write8(padapter, REG_RXTSF_OFFSET_CCK, 0x50);
                rtw_write8(padapter, REG_RXTSF_OFFSET_OFDM, 0x50);
        }
 
-       _BeaconFunctionEnable(padapter, true, true);
+       _BeaconFunctionEnable(padapter, _TRUE, _TRUE);
 
        ResumeTxBeacon(padapter);
        SetBcnCtrlReg(padapter, DIS_BCNQ_SUB, 0);
@@ -2382,11 +2103,11 @@ void rtl8723a_SetHalODMVar(
                                #endif
 
                                if(bSet){
-                                       DBG_8192C("Set STA_(%d) info\n",psta->mac_id);
+                                       DBG_8723A("Set STA_(%d) info\n",psta->mac_id);
                                        ODM_CmnInfoPtrArrayHook(podmpriv, ODM_CMNINFO_STA_STATUS,psta->mac_id,psta);
                                }
                                else{
-                                       DBG_8192C("Clean STA_(%d) info\n",psta->mac_id);
+                                       DBG_8723A("Clean STA_(%d) info\n",psta->mac_id);
                                        ODM_CmnInfoPtrArrayHook(podmpriv, ODM_CMNINFO_STA_STATUS,psta->mac_id,NULL);
                                }
                        }
@@ -2404,21 +2125,30 @@ void rtl8723a_SetHalODMVar(
 void hal_notch_filter_8723a(_adapter *adapter, bool enable)
 {
        if (enable) {
-               DBG_871X("Enable notch filter\n");
+               DBG_8723A("Enable notch filter\n");
                rtw_write8(adapter, rOFDM0_RxDSP+1, rtw_read8(adapter, rOFDM0_RxDSP+1) | BIT1);
        } else {
-               DBG_871X("Disable notch filter\n");
+               DBG_8723A("Disable notch filter\n");
                rtw_write8(adapter, rOFDM0_RxDSP+1, rtw_read8(adapter, rOFDM0_RxDSP+1) & ~BIT1);
        }
 }
 
+s32 c2h_id_filter_ccx_8723a(u8 id)
+{
+       s32 ret = _FALSE;
+       if (id == C2H_CCX_TX_RPT)
+               ret = _TRUE;
+
+       return ret;
+}
+
 static s32 c2h_handler_8723a(_adapter *padapter, struct c2h_evt_hdr *c2h_evt)
 {
        s32 ret = _SUCCESS;
        u8 i = 0;
 
        if (c2h_evt == NULL) {
-               DBG_8192C("%s c2h_evt is NULL\n",__FUNCTION__);
+               DBG_8723A("%s c2h_evt is NULL\n",__FUNCTION__);
                ret = _FAIL;
                goto exit;
        }
@@ -2427,6 +2157,7 @@ static s32 c2h_handler_8723a(_adapter *padapter, struct c2h_evt_hdr *c2h_evt)
        case C2H_DBG:
                RT_TRACE(_module_hal_init_c_, _drv_info_, ("C2HCommandHandler: %s\n", c2h_evt->payload));
                break;
+
        case C2H_CCX_TX_RPT:
                handle_txrpt_ccx_8723a(padapter, c2h_evt->payload);
                break;
@@ -2434,25 +2165,24 @@ static s32 c2h_handler_8723a(_adapter *padapter, struct c2h_evt_hdr *c2h_evt)
                break;
        case C2H_HW_INFO_EXCH:
                RT_TRACE(_module_hal_init_c_, _drv_info_, ("[BT], C2H_HW_INFO_EXCH\n"));
-               for (i = 0; i < c2h_evt->plen; i++)
+               for (i = 0; i < c2h_evt->plen; i++) {
                        RT_TRACE(_module_hal_init_c_, _drv_info_, ("[BT], tmpBuf[%d]=0x%x\n", i, c2h_evt->payload[i]));
+               }
                break;
+
        case C2H_C2H_H2C_TEST:
                RT_TRACE(_module_hal_init_c_, _drv_info_, ("[BT], C2H_H2C_TEST\n"));
                RT_TRACE(_module_hal_init_c_, _drv_info_, ("[BT], tmpBuf[0]/[1]/[2]/[3]/[4]=0x%x/ 0x%x/ 0x%x/ 0x%x/ 0x%x\n",
                        c2h_evt->payload[0], c2h_evt->payload[1], c2h_evt->payload[2], c2h_evt->payload[3], c2h_evt->payload[4]));
                break;
+
 #ifdef CONFIG_BT_COEXIST
        case C2H_BT_INFO:
+               DBG_8723A("%s ,  Got  C2H_BT_INFO \n",__FUNCTION__);
                BT_FwC2hBtInfo(padapter, c2h_evt->payload, c2h_evt->plen);
                break;
 #endif
-#ifdef CONFIG_MP_INCLUDED
-       case C2H_BT_MP_INFO:
-               DBG_8192C("%s ,  Got  C2H_BT_MP_INFO \n",__FUNCTION__);
-               MPTBT_FwC2hBtMpCtrl(padapter, c2h_evt->payload, c2h_evt->plen);
-               break;
-#endif
+
        default:
                ret = _FAIL;
                break;
@@ -2486,8 +2216,8 @@ void rtl8723a_set_hal_ops(struct hal_ops *pHalFunc)
        pHalFunc->cancel_thread= &rtl8723a_stop_thread;
 
 #ifdef CONFIG_ANTENNA_DIVERSITY
-       pHalFunc->AntDivBeforeLinkHandler = &AntDivBeforeLink8192C;
-       pHalFunc->AntDivCompareHandler = &AntDivCompare8192C;
+       pHalFunc->AntDivBeforeLinkHandler = &odm_AntDivBeforeLink8192C;
+       pHalFunc->AntDivCompareHandler = &odm_AntDivCompare8192C;
 #endif
 
        pHalFunc->read_bbreg = &rtl8192c_PHY_QueryBBReg;
@@ -2508,10 +2238,11 @@ void rtl8723a_set_hal_ops(struct hal_ops *pHalFunc)
 #ifdef DBG_CONFIG_ERROR_DETECT
        pHalFunc->sreset_init_value = &sreset_init_value;
        pHalFunc->sreset_reset_value = &sreset_reset_value;
-       pHalFunc->silentreset = &rtl8723a_silentreset_for_specific_platform;
+       pHalFunc->silentreset = &sreset_reset;
        pHalFunc->sreset_xmit_status_check = &rtl8723a_sreset_xmit_status_check;
        pHalFunc->sreset_linked_status_check  = &rtl8723a_sreset_linked_status_check;
        pHalFunc->sreset_get_wifi_status  = &sreset_get_wifi_status;
+       pHalFunc->sreset_inprogress= &sreset_inprogress;
 #endif
        pHalFunc->GetHalODMVarHandler = &rtl8723a_GetHalODMVar;
        pHalFunc->SetHalODMVarHandler = &rtl8723a_SetHalODMVar;
@@ -2522,6 +2253,14 @@ void rtl8723a_set_hal_ops(struct hal_ops *pHalFunc)
        pHalFunc->hal_notch_filter = &hal_notch_filter_8723a;
 
        pHalFunc->c2h_handler = c2h_handler_8723a;
+       pHalFunc->c2h_id_filter_ccx = c2h_id_filter_ccx_8723a;
+
+#if defined(CONFIG_CHECK_BT_HANG) && defined(CONFIG_BT_COEXIST)
+       pHalFunc->hal_init_checkbthang_workqueue = &rtl8723a_init_checkbthang_workqueue;
+       pHalFunc->hal_free_checkbthang_workqueue = &rtl8723a_free_checkbthang_workqueue;
+       pHalFunc->hal_cancel_checkbthang_workqueue = &rtl8723a_cancel_checkbthang_workqueue;
+       pHalFunc->hal_checke_bt_hang = &rtl8723a_hal_check_bt_hang;
+#endif
 }
 
 void rtl8723a_InitAntenna_Selection(PADAPTER padapter)
@@ -2578,16 +2317,16 @@ void rtl8723a_init_default_value(PADAPTER padapter)
        pdmpriv = &pHalData->dmpriv;
 
        // init default value
-       pHalData->fw_ractrl = false;
-       pHalData->bIQKInitialized = false;
+       pHalData->fw_ractrl = _FALSE;
+       pHalData->bIQKInitialized = _FALSE;
        if (!padapter->pwrctrlpriv.bkeepfwalive)
                pHalData->LastHMEBoxNum = 0;
 
-       pHalData->bIQKInitialized = false;
+       pHalData->bIQKInitialized = _FALSE;
 
        // init dm default value
        pdmpriv->TM_Trigger = 0;//for IQK
-//     pdmpriv->binitialized = false;
+//     pdmpriv->binitialized = _FALSE;
 //     pdmpriv->prv_traffic_idx = 3;
 //     pdmpriv->initialize = 0;
 
@@ -2625,12 +2364,11 @@ u8 GetEEPROMSize8723A(PADAPTER padapter)
        // 6: EEPROM used is 93C46, 4: boot from E-Fuse.
        size = (cr & BOOT_FROM_EEPROM) ? 6 : 4;
 
-       MSG_8192C("EEPROM type is %s\n", size==4 ? "E-FUSE" : "93C46");
+       MSG_8723A("EEPROM type is %s\n", size==4 ? "E-FUSE" : "93C46");
 
        return size;
 }
 
-#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
 //-------------------------------------------------------------------------
 //
 // LLT R/W/Init function
@@ -2727,9 +2465,7 @@ s32 InitLLTTable(PADAPTER padapter, u32 boundary)
 
        return status;
 }
-#endif
 
-#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
 void _DisableGPIO(PADAPTER     padapter)
 {
 /***************************************
@@ -2752,44 +2488,20 @@ n. LEDCFG 0x4C[15:0] = 0x8080
        value32 |= ((u4bTmp<<8) | 0x00FF0000);
        rtw_write32(padapter, REG_GPIO_PIN_CTRL, value32);
 
-       if (IS_HARDWARE_TYPE_8723AU(padapter) ||
-               IS_HARDWARE_TYPE_8723AS(padapter))
-       {
-               //
-               // <Roger_Notes> For RTL8723u multi-function configuration which was autoload from Efuse offset 0x0a and 0x0b,
-               // WLAN HW GPIO[9], GPS HW GPIO[10] and BT HW GPIO[11].
-               // Added by Roger, 2010.10.07.
-               //
-               //2. Disable GPIO[8] and GPIO[12]
-               rtw_write16(padapter, REG_GPIO_IO_SEL_2, 0x0000); // Configure all pins as input mode.
-               value32 = rtw_read32(padapter, REG_GPIO_PIN_CTRL_2) & 0xFFFF001F;
-               u4bTmp = value32 & 0x0000001F;
-//             if( IS_MULTI_FUNC_CHIP(padapter) )
-//                     value32 |= ((u4bTmp<<8) | 0x00110000); // Set pin 8 and pin 12 to output mode.
-//             else
-                       value32 |= ((u4bTmp<<8) | 0x001D0000); // Set pin 8, 10, 11 and pin 12 to output mode.
-               rtw_write32(padapter, REG_GPIO_PIN_CTRL_2, value32);
-       }
-       else
-       {
-               //2. Disable GPIO[10:8]
-               rtw_write8(padapter, REG_MAC_PINMUX_CFG, 0x00);
-               value16 = rtw_read16(padapter, REG_GPIO_IO_SEL) & 0xFF0F;
-               value8 = (u8) (value16&0x000F);
-               value16 |= ((value8<<4) | 0x0780);
-               rtw_write16(padapter, REG_GPIO_IO_SEL, value16);
-       }
+       //
+       // <Roger_Notes> For RTL8723u multi-function configuration which was autoload from Efuse offset 0x0a and 0x0b,
+       // WLAN HW GPIO[9], GPS HW GPIO[10] and BT HW GPIO[11].
+       // Added by Roger, 2010.10.07.
+       //
+       //2. Disable GPIO[8] and GPIO[12]
+       rtw_write16(padapter, REG_GPIO_IO_SEL_2, 0x0000); // Configure all pins as input mode.
+       value32 = rtw_read32(padapter, REG_GPIO_PIN_CTRL_2) & 0xFFFF001F;
+       u4bTmp = value32 & 0x0000001F;
+       value32 |= ((u4bTmp<<8) | 0x001D0000); // Set pin 8, 10, 11 and pin 12 to output mode.
+       rtw_write32(padapter, REG_GPIO_PIN_CTRL_2, value32);
 
        //3. Disable LED0 & 1
-       if(IS_HARDWARE_TYPE_8192DU(padapter))
-       {
-               rtw_write16(padapter, REG_LEDCFG0, 0x8888);
-       }
-       else
-       {
-               rtw_write16(padapter, REG_LEDCFG0, 0x8080);
-       }
-//     RT_TRACE(COMP_INIT, DBG_LOUD, ("======> Disable GPIO and LED.\n"));
+       rtw_write16(padapter, REG_LEDCFG0, 0x8080);
 } //end of _DisableGPIO()
 
 void _DisableRFAFEAndResetBB8192C(PADAPTER padapter)
@@ -2826,15 +2538,14 @@ e.      SYS_FUNC_EN 0x02[7:0] = 0x14            //reset BB state machine
 
 void _DisableRFAFEAndResetBB(PADAPTER padapter)
 {
-               _DisableRFAFEAndResetBB8192C(padapter);
+       _DisableRFAFEAndResetBB8192C(padapter);
 }
 
 void _ResetDigitalProcedure1_92C(PADAPTER padapter, bool bWithoutHWSM)
 {
        HAL_DATA_TYPE   *pHalData = GET_HAL_DATA(padapter);
 
-       if (IS_FW_81xxC(padapter) && (pHalData->FirmwareVersion <= 0x20))
-       {
+       if (IS_FW_81xxC(padapter) && (pHalData->FirmwareVersion <= 0x20)) {
                /*****************************
                f.      MCUFWDL 0x80[7:0]=0                             // reset MCU ready status
                g.      SYS_FUNC_EN 0x02[10]= 0                 // reset MCU register, (8051 reset)
@@ -2858,6 +2569,7 @@ void _ResetDigitalProcedure1_92C(PADAPTER padapter, bool bWithoutHWSM)
                // 2010/08/12 MH For USB SS, we can not stop 8051 when we are trying to
                // enter IPS/HW&SW radio off. For S3/S4/S5/Disable, we can stop 8051 because
                // we will init FW when power on again.
+               //if(!pDevice->RegUsbSS)
                {       // If we want to SS mode, we can not reset 8051.
                        if(rtw_read8(padapter, REG_MCUFWDL) & BIT1)
                        { //IF fw in RAM code, do reset
@@ -2877,7 +2589,10 @@ void _ResetDigitalProcedure1_92C(PADAPTER padapter, bool bWithoutHWSM)
                                        while( (retry_cnts++ <100) && (FEN_CPUEN &rtw_read16(padapter, REG_SYS_FUNC_EN)))
                                        {
                                                rtw_udelay_os(50);//us
+                                               // 2010/08/25 For test only We keep on reset 5051 to prevent fail.
+                                               //rtw_write8(padapter, REG_HMETFR+3, 0x20);//8051 reset by self
                                        }
+//                                     RT_ASSERT((retry_cnts < 100), ("8051 reset failed!\n"));
 
                                        if (retry_cnts >= 100)
                                        {
@@ -2889,14 +2604,25 @@ void _ResetDigitalProcedure1_92C(PADAPTER padapter, bool bWithoutHWSM)
                                                rtw_write8(padapter, REG_SYS_FUNC_EN+1, 0x50);  //Reset MAC and Enable 8051
                                                rtw_mdelay_os(10);
                                        }
+//                                     else
+//                                     RT_TRACE(COMP_INIT, DBG_LOUD, ("=====> 8051 reset success (%d) .\n",retry_cnts));
                                }
                        }
+//                     else
+//                     {
+//                             RT_TRACE(COMP_INIT, DBG_LOUD, ("=====> 8051 in ROM.\n"));
+//                     }
                        rtw_write8(padapter, REG_SYS_FUNC_EN+1, 0x54);  //Reset MAC and Enable 8051
                        rtw_write8(padapter, REG_MCUFWDL, 0);
                }
        }
 
-       if(bWithoutHWSM) {
+       //if(pDevice->RegUsbSS)
+               //bWithoutHWSM = TRUE;  // Sugest by Filen and Issau.
+
+       if(bWithoutHWSM)
+       {
+               //HAL_DATA_TYPE         *pHalData       = GET_HAL_DATA(padapter);
        /*****************************
                Without HW auto state machine
        g.      SYS_CLKR 0x08[15:0] = 0x30A3                    //disable MAC clock
@@ -2904,14 +2630,25 @@ void _ResetDigitalProcedure1_92C(PADAPTER padapter, bool bWithoutHWSM)
        i.      AFE_XTAL_CTRL 0x24[15:0] = 0x880F               //gated AFE DIG_CLOCK
        j.      SYS_ISO_CTRL 0x00[7:0] = 0xF9                   // isolated digital to PON
        ******************************/
-               rtw_write16(padapter, REG_SYS_CLKR, 0x70A3);  //modify to 0x70A3 by Scott.
+               //rtw_write16(padapter, REG_SYS_CLKR, 0x30A3);
+               //if(!pDevice->RegUsbSS)
+               // 2011/01/26 MH SD4 Scott suggest to fix UNC-B cut bug.
+               //if (IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID))
+                       //rtw_write16(padapter, REG_SYS_CLKR, (0x70A3|BIT6));  //modify to 0x70A3 by Scott.
+               //else
+                       rtw_write16(padapter, REG_SYS_CLKR, 0x70A3);  //modify to 0x70A3 by Scott.
                rtw_write8(padapter, REG_AFE_PLL_CTRL, 0x80);
                rtw_write16(padapter, REG_AFE_XTAL_CTRL, 0x880F);
-               rtw_write8(padapter, REG_SYS_ISO_CTRL, 0xF9);
-       } else {
+               //if(!pDevice->RegUsbSS)
+                       rtw_write8(padapter, REG_SYS_ISO_CTRL, 0xF9);
+       }
+       else
+       {
                // Disable all RF/BB power
                rtw_write8(padapter, REG_RF_CTRL, 0x00);
        }
+//     RT_TRACE(COMP_INIT, DBG_LOUD, ("======> Reset Digital.\n"));
+
 }
 
 void _ResetDigitalProcedure1(PADAPTER padapter, bool bWithoutHWSM)
@@ -2980,6 +2717,14 @@ void _DisableAnalog(PADAPTER padapter, bool bWithoutHWSM)
 
        rtw_write8(padapter, REG_RSV_CTRL, 0x0e);
 
+#if 0
+       //tynli_test for suspend mode.
+       if(!bWithoutHWSM){
+               rtw_write8(padapter, 0xfe10, 0x19);
+       }
+#endif
+
+//     RT_TRACE(COMP_INIT, DBG_LOUD, ("======> Disable Analog Reg0x04:0x%04x.\n",value16));
 }
 
 // HW Auto state machine
@@ -2995,13 +2740,13 @@ s32 CardDisableHWSM(PADAPTER padapter, u8 resetMCU)
        _DisableRFAFEAndResetBB(padapter);
 
        //  ==== Reset digital sequence   ======
-       _ResetDigitalProcedure1(padapter, false);
+       _ResetDigitalProcedure1(padapter, _FALSE);
 
        //  ==== Pull GPIO PIN to balance level and LED control ======
        _DisableGPIO(padapter);
 
        //  ==== Disable analog sequence ===
-       _DisableAnalog(padapter, false);
+       _DisableAnalog(padapter, _FALSE);
 
        RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("======> Card disable finished.\n"));
 
@@ -3014,14 +2759,16 @@ s32 CardDisableWithoutHWSM(PADAPTER padapter)
        s32 rtStatus = _SUCCESS;
 
 
-       if (padapter->bSurpriseRemoved)
+       //RT_TRACE(COMP_INIT, DBG_LOUD, ("======> Card Disable Without HWSM .\n"));
+       if (padapter->bSurpriseRemoved) {
                return rtStatus;
+       }
 
        //==== RF Off Sequence ====
        _DisableRFAFEAndResetBB(padapter);
 
        //  ==== Reset digital sequence   ======
-       _ResetDigitalProcedure1(padapter, true);
+       _ResetDigitalProcedure1(padapter, _TRUE);
 
        //  ==== Pull GPIO PIN to balance level and LED control ======
        _DisableGPIO(padapter);
@@ -3030,14 +2777,12 @@ s32 CardDisableWithoutHWSM(PADAPTER padapter)
        _ResetDigitalProcedure2(padapter);
 
        //  ==== Disable analog sequence ===
-       _DisableAnalog(padapter, true);
+       _DisableAnalog(padapter, _TRUE);
 
        //RT_TRACE(COMP_INIT, DBG_LOUD, ("<====== Card Disable Without HWSM .\n"));
        return rtStatus;
 }
 
-#endif
-
 void
 Hal_InitPGData(
        PADAPTER        padapter,
@@ -3048,10 +2793,10 @@ Hal_InitPGData(
        u32                     i;
        u16                     value16;
 
-       if(false == pEEPROM->bautoload_fail_flag)
+       if(_FALSE == pEEPROM->bautoload_fail_flag)
        { // autoload OK.
 //             if (IS_BOOT_FROM_EEPROM(padapter))
-               if (true == pEEPROM->EepromOrEfuse)
+               if (_TRUE == pEEPROM->EepromOrEfuse)
                {
                        // Read all Content from EEPROM or EFUSE.
                        for(i = 0; i < HWSET_MAX_SIZE; i += 2)
@@ -3063,17 +2808,17 @@ Hal_InitPGData(
                else
                {
                        // Read EFUSE real map to shadow.
-                       EFUSE_ShadowMapUpdate(padapter, EFUSE_WIFI, false);
+                       EFUSE_ShadowMapUpdate(padapter, EFUSE_WIFI, _FALSE);
                        memcpy((void*)PROMContent, (void*)pEEPROM->efuse_eeprom_data, HWSET_MAX_SIZE);
                }
        }
        else
        {//autoload fail
                RT_TRACE(_module_hci_hal_init_c_, _drv_notice_, ("AutoLoad Fail reported from CR9346!!\n"));
-//             pHalData->AutoloadFailFlag = true;
+//             pHalData->AutoloadFailFlag = _TRUE;
                //update to default value 0xFF
-               if (false == pEEPROM->EepromOrEfuse)
-                       EFUSE_ShadowMapUpdate(padapter, EFUSE_WIFI, false);
+               if (_FALSE == pEEPROM->EepromOrEfuse)
+                       EFUSE_ShadowMapUpdate(padapter, EFUSE_WIFI, _FALSE);
                memcpy((void*)PROMContent, (void*)pEEPROM->efuse_eeprom_data, HWSET_MAX_SIZE);
        }
 }
@@ -3093,12 +2838,12 @@ Hal_EfuseParseIDCode(
        EEPROMId = le16_to_cpu(*((u16*)hwinfo));
        if (EEPROMId != RTL_EEPROM_ID)
        {
-               DBG_8192C("EEPROM ID(%#x) is invalid!!\n", EEPROMId);
-               pEEPROM->bautoload_fail_flag = true;
+               DBG_8723A("EEPROM ID(%#x) is invalid!!\n", EEPROMId);
+               pEEPROM->bautoload_fail_flag = _TRUE;
        }
        else
        {
-               pEEPROM->bautoload_fail_flag = false;
+               pEEPROM->bautoload_fail_flag = _FALSE;
        }
 
        RT_TRACE(_module_hal_init_c_, _drv_info_, ("EEPROM ID=0x%04x\n", EEPROMId));
@@ -3286,7 +3031,16 @@ Hal_EfuseParseTxPowerInfo_8723A(
 #endif
        if(!AutoLoadFail)
        {
-               pHalData->EEPROMRegulatory = PROMContent[RF_OPTION1_8723A]&0x7; //bit0~2
+               struct registry_priv  *registry_par = &padapter->registrypriv;
+               if( registry_par->regulatory_tid == 0xff){
+                       if( PROMContent[RF_OPTION1_8723A] == 0xff)
+                               pHalData->EEPROMRegulatory = 0 ;
+                       else
+                               pHalData->EEPROMRegulatory = PROMContent[RF_OPTION1_8723A]&0x7; //bit0~2
+               }
+               else{
+                       pHalData->EEPROMRegulatory = registry_par->regulatory_tid;
+               }
        }
        else
        {
@@ -3295,10 +3049,10 @@ Hal_EfuseParseTxPowerInfo_8723A(
        RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("EEPROMRegulatory = 0x%x\n", pHalData->EEPROMRegulatory));
 
        if(!AutoLoadFail)
-               pHalData->bTXPowerDataReadFromEEPORM = true;
+               pHalData->bTXPowerDataReadFromEEPORM = _TRUE;
 }
 
-void
+VOID
 Hal_EfuseParseBTCoexistInfo_8723A(
        IN PADAPTER                     padapter,
        IN u8*                  hwinfo,
@@ -3338,7 +3092,7 @@ Hal_EfuseParseBTCoexistInfo_8723A(
 #endif
 }
 
-void
+VOID
 Hal_EfuseParseEEPROMVer(
        IN      PADAPTER                padapter,
        IN      u8*                     hwinfo,
@@ -3355,7 +3109,7 @@ Hal_EfuseParseEEPROMVer(
                pHalData->EEPROMVersion));
 }
 
-void
+VOID
 rtl8723a_EfuseParseChnlPlan(
        IN      PADAPTER                padapter,
        IN      u8*                     hwinfo,
@@ -3370,10 +3124,10 @@ rtl8723a_EfuseParseChnlPlan(
                , AutoLoadFail
        );
 
-       DBG_871X("mlmepriv.ChannelPlan=0x%02x\n", padapter->mlmepriv.ChannelPlan);
+       DBG_8723A("mlmepriv.ChannelPlan=0x%02x\n", padapter->mlmepriv.ChannelPlan);
 }
 
-void
+VOID
 Hal_EfuseParseCustomerID(
        IN      PADAPTER                padapter,
        IN      u8*                     hwinfo,
@@ -3396,22 +3150,86 @@ Hal_EfuseParseCustomerID(
        RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("EEPROM SubCustomer ID: 0x%02x\n", pHalData->EEPROMSubCustomerID));
 }
 
-void
+VOID
 Hal_EfuseParseAntennaDiversity(
        IN      PADAPTER                padapter,
        IN      u8*                     hwinfo,
        IN      bool                    AutoLoadFail
        )
 {
+#ifdef CONFIG_ANTENNA_DIVERSITY
+       HAL_DATA_TYPE   *pHalData = GET_HAL_DATA(padapter);
+       struct registry_priv    *registry_par = &padapter->registrypriv;
+
+
+       if(!AutoLoadFail)
+       {
+               // Antenna Diversity setting.
+               if(registry_par->antdiv_cfg == 2) // 2: From Efuse
+                       pHalData->AntDivCfg = (hwinfo[RF_OPTION1_8723A]&0x18)>>3;
+               else
+                       pHalData->AntDivCfg = registry_par->antdiv_cfg ;  // 0:OFF , 1:ON,
+
+               if(pHalData->EEPROMBluetoothCoexist!=0 && pHalData->EEPROMBluetoothAntNum==Ant_x1)
+                       pHalData->AntDivCfg = 0;
+
+               DBG_8723A("### AntDivCfg(%x) EEPROMBluetoothCoexist(%x) EEPROMBluetoothAntNum(%x)\n"
+                       ,pHalData->AntDivCfg,pHalData->EEPROMBluetoothCoexist,pHalData->EEPROMBluetoothAntNum);
+       }
+       else
+       {
+               pHalData->AntDivCfg = 0;
+       }
+
+       RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("SWAS: bHwAntDiv = %x\n", pHalData->AntDivCfg));
+#endif
 }
 
-void
+VOID
 Hal_EfuseParseRateIndicationOption(
        IN      PADAPTER                padapter,
        IN      u8*                     hwinfo,
        IN      bool                    AutoLoadFail
        )
 {
+#if 0
+       PMGNT_INFO              pMgntInfo = &(padapter->MgntInfo);
+
+       // Rate indication option
+       if(pMgntInfo->ShowRateMode == 0)
+       {
+               if(!AutoLoadFail)
+               {
+                       switch((hwinfo[RF_OPTION3_8723A] & 0x0c) >> 2)
+                       {
+                               case 1: // Rx rate
+                                       pMgntInfo->bForcedShowRxRate = TRUE;
+                                       break;
+
+                               case 2: // Max Rx rate
+                                       pMgntInfo->bForcedShowRateStill = TRUE;
+                                       pMgntInfo->bForcedShowRxRate = TRUE;
+                                       break;
+
+                               default:
+                                       break;
+                       }
+               }
+               else
+               {
+                       pMgntInfo->bForcedShowRxRate = TRUE;
+               }
+       }
+       else if(pMgntInfo->ShowRateMode == 2)
+       {
+               pMgntInfo->bForcedShowRxRate = TRUE;
+       }
+       else if(pMgntInfo->ShowRateMode == 3)
+       {
+               pMgntInfo->bForcedShowRxRate = TRUE;
+               pMgntInfo->bForcedShowRxRate = TRUE;
+       }
+#endif
 }
 
 void
@@ -3421,6 +3239,7 @@ Hal_EfuseParseXtal_8723A(
        u8                      AutoLoadFail
        )
 {
+#if 1
        PHAL_DATA_TYPE  pHalData = GET_HAL_DATA(pAdapter);
 
        if (!AutoLoadFail){
@@ -3432,6 +3251,7 @@ Hal_EfuseParseXtal_8723A(
                pHalData->CrystalCap = EEPROM_Default_CrystalCap_8723A;
        }
        RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("%s: CrystalCap=0x%2x\n", __FUNCTION__, pHalData->CrystalCap));
+#endif
 }
 
 void
@@ -3447,22 +3267,57 @@ Hal_EfuseParseThermalMeter_8723A(
        //
        // ThermalMeter from EEPROM
        //
-       if (false == AutoloadFail)
+       if (_FALSE == AutoloadFail)
                pHalData->EEPROMThermalMeter = PROMContent[EEPROM_THERMAL_METER_8723A];
        else
                pHalData->EEPROMThermalMeter = EEPROM_Default_ThermalMeter;
 
-       if ((pHalData->EEPROMThermalMeter == 0xff) || (true == AutoloadFail))
+       if ((pHalData->EEPROMThermalMeter == 0xff) || (_TRUE == AutoloadFail))
        {
-               pHalData->bAPKThermalMeterIgnore = true;
+               pHalData->bAPKThermalMeterIgnore = _TRUE;
                pHalData->EEPROMThermalMeter = EEPROM_Default_ThermalMeter;
        }
 
-       DBG_8192C("%s: ThermalMeter=0x%x\n", __FUNCTION__, pHalData->EEPROMThermalMeter);
+       DBG_8723A("%s: ThermalMeter=0x%x\n", __FUNCTION__, pHalData->EEPROMThermalMeter);
 }
 
-void Hal_InitChannelPlan(IN            PADAPTER        padapter)
+VOID
+Hal_InitChannelPlan(
+       IN              PADAPTER        padapter
+       )
 {
+#if 0
+       PMGNT_INFO              pMgntInfo = &(padapter->MgntInfo);
+       HAL_DATA_TYPE   *pHalData = GET_HAL_DATA(padapter);
+
+       if((pMgntInfo->RegChannelPlan >= RT_CHANNEL_DOMAIN_MAX) || (pHalData->EEPROMChannelPlan & EEPROM_CHANNEL_PLAN_BY_HW_MASK))
+       {
+               pMgntInfo->ChannelPlan = hal_MapChannelPlan8192C(padapter, (pHalData->EEPROMChannelPlan & (~(EEPROM_CHANNEL_PLAN_BY_HW_MASK))));
+               pMgntInfo->bChnlPlanFromHW = (pHalData->EEPROMChannelPlan & EEPROM_CHANNEL_PLAN_BY_HW_MASK) ? _TRUE : _FALSE; // User cannot change  channel plan.
+       }
+       else
+       {
+               pMgntInfo->ChannelPlan = (RT_CHANNEL_DOMAIN)pMgntInfo->RegChannelPlan;
+       }
+
+       switch(pMgntInfo->ChannelPlan)
+       {
+               case RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN:
+               {
+                       PRT_DOT11D_INFO pDot11dInfo = GET_DOT11D_INFO(pMgntInfo);
+
+                       pDot11dInfo->bEnabled = TRUE;
+               }
+                       RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("ReadAdapterInfo8187(): Enable dot11d when RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN!\n"));
+                       break;
+
+               default: //for MacOSX compiler warning.
+                       break;
+       }
+
+       RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("RegChannelPlan(%d) EEPROMChannelPlan(%d)", pMgntInfo->RegChannelPlan, pHalData->EEPROMChannelPlan));
+       RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("Mgnt ChannelPlan = %d\n" , pMgntInfo->ChannelPlan));
+#endif
 }
 
 void rtl8723a_cal_txdesc_chksum(struct tx_desc *ptxdesc)
@@ -3497,11 +3352,6 @@ static void fill_txdesc_sectype(struct pkt_attrib *pattrib, PTXDESC ptxdesc)
                                ptxdesc->sectype = 1;
                                break;
 
-#ifdef CONFIG_WAPI_SUPPORT
-                       case _SMS4_:
-                               ptxdesc->sectype = 2;
-                               break;
-#endif
                        case _AES_:
                                ptxdesc->sectype = 3;
                                break;
@@ -3515,7 +3365,7 @@ static void fill_txdesc_sectype(struct pkt_attrib *pattrib, PTXDESC ptxdesc)
 
 static void fill_txdesc_vcs(struct pkt_attrib *pattrib, PTXDESC ptxdesc)
 {
-       //DBG_8192C("cvs_mode=%d\n", pattrib->vcs_mode);
+       //DBG_8723A("cvs_mode=%d\n", pattrib->vcs_mode);
 
        switch (pattrib->vcs_mode)
        {
@@ -3565,7 +3415,7 @@ static void fill_txdesc_vcs(struct pkt_attrib *pattrib, PTXDESC ptxdesc)
 
 static void fill_txdesc_phy(struct pkt_attrib *pattrib, PTXDESC ptxdesc)
 {
-       //DBG_8192C("bwmode=%d, ch_off=%d\n", pattrib->bwmode, pattrib->ch_offset);
+       //DBG_8723A("bwmode=%d, ch_off=%d\n", pattrib->bwmode, pattrib->ch_offset);
 
        if (pattrib->ht_en)
        {
@@ -3622,7 +3472,7 @@ void rtl8723a_fill_default_txdesc(
        {
                ptxdesc->macid = pattrib->mac_id; // CAM_ID(MAC_ID)
 
-               if (pattrib->ampdu_en == true)
+               if (pattrib->ampdu_en == _TRUE)
                        ptxdesc->agg_en = 1; // AGG EN
                else
                        ptxdesc->bk = 1; // AGG BK
@@ -3650,7 +3500,17 @@ void rtl8723a_fill_default_txdesc(
                        // use REG_INIDATA_RATE_SEL value
                        ptxdesc->datarate = pdmpriv->INIDATA_RATE[pattrib->mac_id];
 
-               } else {
+#if 0
+                       ptxdesc->userate = 1; // driver uses rate
+
+                       if (pattrib->ht_en)
+                               ptxdesc->sgi = 1; // SGI
+
+                       ptxdesc->datarate = 0x13; // init rate - mcs7
+#endif
+               }
+               else
+               {
                        // EAP data packet and ARP packet.
                        // Use the 1M data rate to send the EAP/ARP packet.
                        // This will maybe make the handshake smooth.
@@ -3661,10 +3521,14 @@ void rtl8723a_fill_default_txdesc(
                                ptxdesc->data_short = 1;// DATA_SHORT
                        ptxdesc->datarate = MRateToHwRate(pmlmeext->tx_rate);
                }
-#if defined(CONFIG_USB_TX_AGGREGATION) || defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
+#if defined(CONFIG_USB_TX_AGGREGATION)
                ptxdesc->usb_txagg_num = pxmitframe->agg_num;
 #endif
-       } else if (pxmitframe->frame_tag == MGNT_FRAMETAG) {
+       }
+       else if (pxmitframe->frame_tag == MGNT_FRAMETAG)
+       {
+//             RT_TRACE(_module_hal_xmit_c_, _drv_notice_, ("%s: MGNT_FRAMETAG\n", __FUNCTION__));
+
                ptxdesc->macid = pattrib->mac_id; // CAM_ID(MAC_ID)
                ptxdesc->qsel = pattrib->qsel;
                ptxdesc->rate_id = pattrib->raid; // Rate ID
@@ -3676,13 +3540,19 @@ void rtl8723a_fill_default_txdesc(
 #ifdef CONFIG_XMIT_ACK
                //CCX-TXRPT ack for xmit mgmt frames.
                if (pxmitframe->ack_report) {
+                       #ifdef DBG_CCX
+                       static u16 ccx_sw = 0x123;
+                       txdesc_set_ccx_sw_8723a(ptxdesc, ccx_sw);
+                       DBG_8723A("%s set ccx, sw:0x%03x\n", __func__, ccx_sw);
+                       ccx_sw = (ccx_sw+1)%0xfff;
+                       #endif
                        ptxdesc->ccx = 1;
                }
 #endif //CONFIG_XMIT_ACK
 
 #ifdef CONFIG_INTEL_PROXIM
-               if((padapter->proximity.proxim_on==true)&&(pattrib->intel_proxim==true)){
-                       DBG_871X("\n %s pattrib->rate=%d\n",__FUNCTION__,pattrib->rate);
+               if((padapter->proximity.proxim_on==_TRUE)&&(pattrib->intel_proxim==_TRUE)){
+                       DBG_8723A("\n %s pattrib->rate=%d\n",__FUNCTION__,pattrib->rate);
                        ptxdesc->datarate = pattrib->rate;
                }
                else
@@ -3695,25 +3565,6 @@ void rtl8723a_fill_default_txdesc(
        {
                RT_TRACE(_module_hal_xmit_c_, _drv_warning_, ("%s: TXAGG_FRAMETAG\n", __FUNCTION__));
        }
-#ifdef CONFIG_MP_INCLUDED
-       else if (pxmitframe->frame_tag == MP_FRAMETAG)
-       {
-               struct tx_desc *pdesc;
-
-               pdesc = (struct tx_desc*)ptxdesc;
-               RT_TRACE(_module_hal_xmit_c_, _drv_notice_, ("%s: MP_FRAMETAG\n", __FUNCTION__));
-               fill_txdesc_for_mp(padapter, pdesc);
-
-               pdesc->txdw0 = le32_to_cpu(pdesc->txdw0);
-               pdesc->txdw1 = le32_to_cpu(pdesc->txdw1);
-               pdesc->txdw2 = le32_to_cpu(pdesc->txdw2);
-               pdesc->txdw3 = le32_to_cpu(pdesc->txdw3);
-               pdesc->txdw4 = le32_to_cpu(pdesc->txdw4);
-               pdesc->txdw5 = le32_to_cpu(pdesc->txdw5);
-               pdesc->txdw6 = le32_to_cpu(pdesc->txdw6);
-               pdesc->txdw7 = le32_to_cpu(pdesc->txdw7);
-       }
-#endif
        else
        {
                RT_TRACE(_module_hal_xmit_c_, _drv_warning_, ("%s: frame_tag=0x%x\n", __FUNCTION__, pxmitframe->frame_tag));
@@ -3773,7 +3624,6 @@ void rtl8723a_update_txdesc(struct xmit_frame *pxmitframe, u8 *pbuf)
        pdesc->txdw5 = cpu_to_le32(pdesc->txdw5);
        pdesc->txdw6 = cpu_to_le32(pdesc->txdw6);
        pdesc->txdw7 = cpu_to_le32(pdesc->txdw7);
-
        rtl8723a_cal_txdesc_chksum(pdesc);
 }
 
@@ -3818,7 +3668,7 @@ void rtl8723a_fill_fake_txdesc(
                ptxdesc->txdw3 |= cpu_to_le32((8 <<28)); //set bit3 to 1. Suugested by TimChen. 2009.12.29.
        }
 
-       if (true == IsBTQosNull)
+       if (_TRUE == IsBTQosNull)
        {
                ptxdesc->txdw2 |= cpu_to_le32(BIT(23)); // BT NULL
        }
@@ -3826,11 +3676,9 @@ void rtl8723a_fill_fake_txdesc(
        //offset 16
        ptxdesc->txdw4 |= cpu_to_le32(BIT(8));//driver uses rate
 
-#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI)
        // USB interface drop packet if the checksum of descriptor isn't correct.
        // Using this checksum can let hardware recovery from packet bulk out error (e.g. Cancel URC, Bulk out error.).
        rtl8723a_cal_txdesc_chksum(ptxdesc);
-#endif
 }
 
 #ifdef CONFIG_CONCURRENT_MODE
@@ -3850,7 +3698,7 @@ int reset_tsf(PADAPTER Adapter, u8 reset_port )
                reset_cnt_after = rtw_read8(Adapter, reg_reset_tsf_cnt);
        }
 
-       return(loop_cnt >= 10) ? _FAIL : true;
+       return(loop_cnt >= 10) ? _FAIL : _TRUE;
 }
 #endif
 
@@ -3955,8 +3803,8 @@ static void hw_var_set_opmode(PADAPTER padapter, u8 variable, u8 *val)
 #ifdef CONFIG_TSF_RESET_OFFLOAD
                // Reset TSF for STA+AP concurrent mode
                if ( check_buddy_fwstate(padapter, (WIFI_STATION_STATE|WIFI_ASOC_STATE)) ) {
-                       if (reset_tsf(padapter, padapter->iface_type) == false)
-                               DBG_871X("ERROR! %s()-%d: Reset port%d TSF fail\n",
+                       if (reset_tsf(padapter, padapter->iface_type) == _FALSE)
+                               DBG_8723A("ERROR! %s()-%d: Reset port%d TSF fail\n",
                                        __FUNCTION__, __LINE__,
                                        (padapter->iface_type==IFACE_PORT1)? 1 : 0);
                }
@@ -4089,12 +3937,12 @@ static void hw_var_set_correct_tsf(PADAPTER padapter, u8 variable, u8 *val)
        if ( (pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE
                        && check_buddy_fwstate(padapter, WIFI_AP_STATE) ) {
                if (padapter->iface_type == IFACE_PORT1) {
-                       if (reset_tsf(padapter, IFACE_PORT0) == false)
-                               DBG_871X("ERROR! %s()-%d: Reset port0 TSF fail\n",
+                       if (reset_tsf(padapter, IFACE_PORT0) == _FALSE)
+                               DBG_8723A("ERROR! %s()-%d: Reset port0 TSF fail\n",
                                __FUNCTION__, __LINE__);
                } else {
-                       if (reset_tsf(padapter, IFACE_PORT1) == false)
-                               DBG_871X("ERROR! %s()-%d: Reset port1 TSF fail\n",
+                       if (reset_tsf(padapter, IFACE_PORT1) == _FALSE)
+                               DBG_8723A("ERROR! %s()-%d: Reset port1 TSF fail\n",
                                __FUNCTION__, __LINE__);
                }
        }
@@ -4164,7 +4012,7 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER padapter, u8 variable, u8 *val)
                        SetBcnCtrlReg(padapter, DIS_TSF_UDT, 0);
 
                if (check_buddy_mlmeinfo_state(padapter, WIFI_FW_AP_STATE) &&
-                       (check_buddy_fwstate(padapter, _FW_LINKED) == true))
+                       (check_buddy_fwstate(padapter, _FW_LINKED) == _TRUE))
                {
                        StopTxBeacon(padapter);
                }
@@ -4183,8 +4031,18 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER padapter, u8 variable, u8 *val)
                rtw_write32(padapter, REG_RCR, v32);
 
                if (check_buddy_mlmeinfo_state(padapter, WIFI_FW_AP_STATE) &&
-                       (check_buddy_fwstate(padapter, _FW_LINKED) == true))
+                       (check_buddy_fwstate(padapter, _FW_LINKED) == _TRUE))
+               {
                        ResumeTxBeacon(padapter);
+#if 0
+                       // reset TSF 1/2 after ResumeTxBeacon
+                       if (pbuddy_adapter->iface_type == IFACE_PORT1)
+                               rtw_write8(padapter, REG_DUAL_TSF_RST, BIT(1));
+                       else
+                               rtw_write8(padapter, REG_DUAL_TSF_RST, BIT(0));
+#endif
+
+               }
        }
 }
 #endif
@@ -4203,7 +4061,7 @@ static void hw_var_set_mlme_join(PADAPTER padapter, u8 variable, u8 *val)
 
 #ifdef CONFIG_CONCURRENT_MODE
                if (check_buddy_mlmeinfo_state(padapter, WIFI_FW_AP_STATE) &&
-                       (check_buddy_fwstate(padapter, _FW_LINKED) == true))
+                       (check_buddy_fwstate(padapter, _FW_LINKED) == _TRUE))
                {
                        StopTxBeacon(padapter);
                }
@@ -4224,7 +4082,7 @@ static void hw_var_set_mlme_join(PADAPTER padapter, u8 variable, u8 *val)
                }
                rtw_write32(padapter, REG_RCR, v32);
 
-               if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == true)
+               if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE)
                        RetryLimit = (pHalData->CustomerID == RT_CID_CCX) ? 7 : 48;
                else // Ad-hoc Mode
                        RetryLimit = 0x7;
@@ -4236,7 +4094,7 @@ static void hw_var_set_mlme_join(PADAPTER padapter, u8 variable, u8 *val)
                        rtw_write16(padapter, REG_RXFLTMAP2, 0);
 
                if (check_buddy_mlmeinfo_state(padapter, WIFI_FW_AP_STATE) &&
-                       (check_buddy_fwstate(padapter, _FW_LINKED) == true))
+                       (check_buddy_fwstate(padapter, _FW_LINKED) == _TRUE))
                {
                        ResumeTxBeacon(padapter);
 
@@ -4256,7 +4114,7 @@ static void hw_var_set_mlme_join(PADAPTER padapter, u8 variable, u8 *val)
                // enable update TSF
                SetBcnCtrlReg(padapter, 0, DIS_TSF_UDT);
 
-               if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE) == true)
+               if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE) == _TRUE)
                {
                        // fixed beacon issue for 8191su...........
                        rtw_write8(padapter, 0x542, 0x02);
@@ -4265,7 +4123,7 @@ static void hw_var_set_mlme_join(PADAPTER padapter, u8 variable, u8 *val)
 
 #ifdef CONFIG_CONCURRENT_MODE
                if (check_buddy_mlmeinfo_state(padapter, WIFI_FW_AP_STATE) &&
-                       (check_buddy_fwstate(padapter, _FW_LINKED) == true))
+                       (check_buddy_fwstate(padapter, _FW_LINKED) == _TRUE))
                {
                        ResumeTxBeacon(padapter);
 
@@ -4284,133 +4142,156 @@ void SetHwReg8723A(PADAPTER padapter, u8 variable, u8 *val)
 
 _func_enter_;
 
-       switch (variable) {
-       case HW_VAR_MEDIA_STATUS:
-               {
-                       u8 val8;
+       switch (variable)
+       {
+               case HW_VAR_MEDIA_STATUS:
+                       {
+                               u8 val8;
 
-                       val8 = rtw_read8(padapter, MSR) & 0x0c;
-                       val8 |= *val;
-                       rtw_write8(padapter, MSR, val8);
-               }
-               break;
-       case HW_VAR_MEDIA_STATUS1:
-               {
-                       u8 val8;
+                               val8 = rtw_read8(padapter, MSR) & 0x0c;
+                               val8 |= *val;
+                               rtw_write8(padapter, MSR, val8);
+                       }
+                       break;
+
+               case HW_VAR_MEDIA_STATUS1:
+                       {
+                               u8 val8;
+
+                               val8 = rtw_read8(padapter, MSR) & 0x03;
+                               val8 |= *val << 2;
+                               rtw_write8(padapter, MSR, val8);
+                       }
+                       break;
+
+               case HW_VAR_SET_OPMODE:
+                       hw_var_set_opmode(padapter, variable, val);
+                       break;
+
+               case HW_VAR_MAC_ADDR:
+                       hw_var_set_macaddr(padapter, variable, val);
+                       break;
+
+               case HW_VAR_BSSID:
+                       hw_var_set_bssid(padapter, variable, val);
+                       break;
+
+               case HW_VAR_BASIC_RATE:
+                       {
+                               u16                     BrateCfg = 0;
+                               u8                      RateIndex = 0;
 
-                       val8 = rtw_read8(padapter, MSR) & 0x03;
-                       val8 |= *val << 2;
-                       rtw_write8(padapter, MSR, val8);
-               }
-               break;
-       case HW_VAR_SET_OPMODE:
-               hw_var_set_opmode(padapter, variable, val);
-               break;
-       case HW_VAR_MAC_ADDR:
-               hw_var_set_macaddr(padapter, variable, val);
-               break;
-       case HW_VAR_BSSID:
-               hw_var_set_bssid(padapter, variable, val);
-               break;
-       case HW_VAR_BASIC_RATE:
-               {
-                       u16                     BrateCfg = 0;
-                       u8                      RateIndex = 0;
                                // 2007.01.16, by Emily
-                       // Select RRSR (in Legacy-OFDM and CCK)
-                       // For 8190, we select only 24M, 12M, 6M, 11M, 5.5M, 2M, and 1M from the Basic rate.
-                       // We do not use other rates.
-                       HalSetBrateCfg(padapter, val, &BrateCfg);
+                               // Select RRSR (in Legacy-OFDM and CCK)
+                               // For 8190, we select only 24M, 12M, 6M, 11M, 5.5M, 2M, and 1M from the Basic rate.
+                               // We do not use other rates.
+                               HalSetBrateCfg(padapter, val, &BrateCfg);
+
                                //2011.03.30 add by Luke Lee
-                       //CCK 2M ACK should be disabled for some BCM and Atheros AP IOT
-                       //because CCK 2M has poor TXEVM
-                       //CCK 5.5M & 11M ACK should be enabled for better performance
+                               //CCK 2M ACK should be disabled for some BCM and Atheros AP IOT
+                               //because CCK 2M has poor TXEVM
+                               //CCK 5.5M & 11M ACK should be enabled for better performance
+
                                pHalData->BasicRateSet = BrateCfg = (BrateCfg |0xd) & 0x15d;
-                       BrateCfg |= 0x01; // default enable 1M ACK rate
-                       DBG_8192C("HW_VAR_BASIC_RATE: BrateCfg(%#x)\n", BrateCfg);
+                               BrateCfg |= 0x01; // default enable 1M ACK rate
+                               DBG_8723A("HW_VAR_BASIC_RATE: BrateCfg(%#x)\n", BrateCfg);
+
                                // Set RRSR rate table.
-                       rtw_write8(padapter, REG_RRSR, BrateCfg&0xff);
-                       rtw_write8(padapter, REG_RRSR+1, (BrateCfg>>8)&0xff);
-                       rtw_write8(padapter, REG_RRSR+2, rtw_read8(padapter, REG_RRSR+2)&0xf0);
+                               rtw_write8(padapter, REG_RRSR, BrateCfg&0xff);
+                               rtw_write8(padapter, REG_RRSR+1, (BrateCfg>>8)&0xff);
+                               rtw_write8(padapter, REG_RRSR+2, rtw_read8(padapter, REG_RRSR+2)&0xf0);
+
                                // Set RTS initial rate
-                       while (BrateCfg > 0x1)
-                       {
-                               BrateCfg = (BrateCfg >> 1);
-                               RateIndex++;
+                               while (BrateCfg > 0x1)
+                               {
+                                       BrateCfg = (BrateCfg >> 1);
+                                       RateIndex++;
+                               }
+                               // Ziv - Check
+                               rtw_write8(padapter, REG_INIRTS_RATE_SEL, RateIndex);
                        }
-                       // Ziv - Check
-                       rtw_write8(padapter, REG_INIRTS_RATE_SEL, RateIndex);
-               }
-               break;
-       case HW_VAR_TXPAUSE:
-               rtw_write8(padapter, REG_TXPAUSE, *val);
-               break;
-       case HW_VAR_BCN_FUNC:
-               if (*val)
-                       SetBcnCtrlReg(padapter, EN_BCN_FUNCTION | EN_TXBCN_RPT, 0);
-               else
-                       SetBcnCtrlReg(padapter, 0, EN_BCN_FUNCTION | EN_TXBCN_RPT);
-               break;
-       case HW_VAR_CORRECT_TSF:
-               hw_var_set_correct_tsf(padapter, variable, val);
-               break;
-       case HW_VAR_CHECK_BSSID:
-               {
-                       u32 val32;
-                       val32 = rtw_read32(padapter, REG_RCR);
+                       break;
+
+               case HW_VAR_TXPAUSE:
+                       rtw_write8(padapter, REG_TXPAUSE, *val);
+                       break;
+
+               case HW_VAR_BCN_FUNC:
                        if (*val)
-                               val32 |= RCR_CBSSID_DATA|RCR_CBSSID_BCN;
+                               SetBcnCtrlReg(padapter, EN_BCN_FUNCTION | EN_TXBCN_RPT, 0);
                        else
-                               val32 &= ~(RCR_CBSSID_DATA|RCR_CBSSID_BCN);
-                       rtw_write32(padapter, REG_RCR, val32);
-               }
-               break;
-       case HW_VAR_MLME_DISCONNECT:
-               hw_var_set_mlme_disconnect(padapter, variable, val);
-               break;
-       case HW_VAR_MLME_SITESURVEY:
-#ifdef CONFIG_CONCURRENT_MODE
-               hw_var_set_mlme_sitesurvey(padapter, variable,  val);
-#else
-               if (*val)//under sitesurvey
-               {
-                       u32 v32;
+                               SetBcnCtrlReg(padapter, 0, EN_BCN_FUNCTION | EN_TXBCN_RPT);
+                       break;
 
-                       // config RCR to receive different BSSID & not to receive data frame
-                       v32 = rtw_read32(padapter, REG_RCR);
-                       v32 &= ~(RCR_CBSSID_BCN);
-                       rtw_write32(padapter, REG_RCR, v32);
-                       // reject all data frame
-                       rtw_write16(padapter, REG_RXFLTMAP2, 0);
+               case HW_VAR_CORRECT_TSF:
+                       hw_var_set_correct_tsf(padapter, variable, val);
+                       break;
 
-                       // disable update TSF
-                       SetBcnCtrlReg(padapter, DIS_TSF_UDT, 0);
-               }
-               else//sitesurvey done
-               {
-                       struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-                       struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-                       u32 v32;
+               case HW_VAR_CHECK_BSSID:
+                       {
+                               u32 val32;
+                               val32 = rtw_read32(padapter, REG_RCR);
+                               if (*val)
+                                       val32 |= RCR_CBSSID_DATA|RCR_CBSSID_BCN;
+                               else
+                                       val32 &= ~(RCR_CBSSID_DATA|RCR_CBSSID_BCN);
+                               rtw_write32(padapter, REG_RCR, val32);
+                       }
+                       break;
+
+               case HW_VAR_MLME_DISCONNECT:
+                       hw_var_set_mlme_disconnect(padapter, variable, val);
+                       break;
 
-                       if ((is_client_associated_to_ap(padapter) == true) ||
-                               ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) ||
-                               ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE))
+               case HW_VAR_MLME_SITESURVEY:
+#ifdef CONFIG_CONCURRENT_MODE
+                       hw_var_set_mlme_sitesurvey(padapter, variable,  val);
+#else
+                       if (*val)//under sitesurvey
                        {
-                               // enable to rx data frame
-                               rtw_write16(padapter, REG_RXFLTMAP2, 0xFFFF);
+                               u32 v32;
+
+                               // config RCR to receive different BSSID & not to receive data frame
+                               v32 = rtw_read32(padapter, REG_RCR);
+                               v32 &= ~(RCR_CBSSID_BCN);
+                               rtw_write32(padapter, REG_RCR, v32);
+                               // reject all data frame
+                               rtw_write16(padapter, REG_RXFLTMAP2, 0);
 
-                               // enable update TSF
-                               SetBcnCtrlReg(padapter, 0, DIS_TSF_UDT);
+                               // disable update TSF
+                               SetBcnCtrlReg(padapter, DIS_TSF_UDT, 0);
                        }
+                       else//sitesurvey done
+                       {
+                               struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+                               struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+                               u32 v32;
 
-                       v32 = rtw_read32(padapter, REG_RCR);
-                       v32 |= RCR_CBSSID_BCN;
-                       rtw_write32(padapter, REG_RCR, v32);
-               }
+                               if ((is_client_associated_to_ap(padapter) == _TRUE) ||
+                                       ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) ||
+                                       ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE))
+                               {
+                                       // enable to rx data frame
+#if 0
+                                       v32 = rtw_read32(padapter, REG_RCR);
+                                       v32 |= RCR_ADF;
+                                       rtw_write32(padapter, REG_RCR, v32);
+#else
+                                       rtw_write16(padapter, REG_RXFLTMAP2, 0xFFFF);
+#endif
+
+                                       // enable update TSF
+                                       SetBcnCtrlReg(padapter, 0, DIS_TSF_UDT);
+                               }
+
+                               v32 = rtw_read32(padapter, REG_RCR);
+                               v32 |= RCR_CBSSID_BCN;
+                               rtw_write32(padapter, REG_RCR, v32);
+                       }
 #endif
 
 #ifdef CONFIG_BT_COEXIST
-                       BT_WifiScanNotify(padapter, *val?true:false);
+                       BT_WifiScanNotify(padapter, *val?_TRUE:_FALSE);
 #endif
                        break;
 
@@ -4418,14 +4299,15 @@ _func_enter_;
                        hw_var_set_mlme_join(padapter, variable,  val);
 
 #ifdef CONFIG_BT_COEXIST
-                       switch (*val) {
+                       switch (*val)
+                       {
                                case 0:
                                        // prepare to join
-                                       BT_WifiAssociateNotify(padapter, true);
+                                       BT_WifiAssociateNotify(padapter, _TRUE);
                                        break;
                                case 1:
                                        // joinbss_event callback when join res < 0
-                                       BT_WifiAssociateNotify(padapter, false);
+                                       BT_WifiAssociateNotify(padapter, _FALSE);
                                        break;
                                case 2:
                                        // sta add event callback
@@ -4435,6 +4317,16 @@ _func_enter_;
 #endif
                        break;
 
+               case HW_VAR_ON_RCR_AM:
+                        rtw_write32(padapter, REG_RCR, rtw_read32(padapter, REG_RCR)|RCR_AM);
+                        DBG_8723A("%s, %d, RCR= %x \n", __FUNCTION__,__LINE__, rtw_read32(padapter, REG_RCR));
+                        break;
+
+              case HW_VAR_OFF_RCR_AM:
+                        rtw_write32(padapter, REG_RCR, rtw_read32(padapter, REG_RCR)& (~RCR_AM));
+                        DBG_8723A("%s, %d, RCR= %x \n", __FUNCTION__,__LINE__, rtw_read32(padapter, REG_RCR));
+                        break;
+
                case HW_VAR_BEACON_INTERVAL:
                        rtw_write16(padapter, REG_BCN_INTERVAL, *((u16*)val));
                        break;
@@ -4466,6 +4358,20 @@ _func_enter_;
                        break;
 
                case HW_VAR_RESP_SIFS:
+#if 0
+                       // SIFS for OFDM Data ACK
+                       rtw_write8(padapter, REG_SIFS_CTX+1, val[0]);
+                       // SIFS for OFDM consecutive tx like CTS data!
+                       rtw_write8(padapter, REG_SIFS_TRX+1, val[1]);
+
+                       rtw_write8(padapter, REG_SPEC_SIFS+1, val[0]);
+                       rtw_write8(padapter, REG_MAC_SPEC_SIFS+1, val[0]);
+
+                       // 20100719 Joseph: Revise SIFS setting due to Hardware register definition change.
+                       rtw_write8(padapter, REG_R2T_SIFS+1, val[0]);
+                       rtw_write8(padapter, REG_T2T_SIFS+1, val[0]);
+
+#else
                        //SIFS_Timer = 0x0a0a0808;
                        //RESP_SIFS for CCK
                        rtw_write8(padapter, REG_R2T_SIFS, val[0]); // SIFS_T2T_CCK (0x08)
@@ -4473,6 +4379,7 @@ _func_enter_;
                        //RESP_SIFS for OFDM
                        rtw_write8(padapter, REG_T2T_SIFS, val[2]); //SIFS_T2T_OFDM (0x0a)
                        rtw_write8(padapter, REG_T2T_SIFS+1, val[3]); //SIFS_R2T_OFDM(0x0a)
+#endif
                        break;
 
                case HW_VAR_ACK_PREAMBLE:
@@ -4604,7 +4511,7 @@ _func_enter_;
                                                hwctrl |= AcmHw_VoqEn;
                                }
 
-                               DBG_8192C("[HW_VAR_ACM_CTRL] Write 0x%02X\n", hwctrl);
+                               DBG_8723A("[HW_VAR_ACM_CTRL] Write 0x%02X\n", hwctrl);
                                rtw_write8(padapter, REG_ACMHWCTRL, hwctrl);
                        }
                        break;
@@ -4655,8 +4562,8 @@ _func_enter_;
 
                                pRegToSet = RegToSet_Normal; // 0xb972a841;
 #ifdef CONFIG_BT_COEXIST
-                               if ((BT_IsBtDisabled(padapter) == false) &&
-                                       (BT_1Ant(padapter) == true))
+                               if ((BT_IsBtDisabled(padapter) == _FALSE) &&
+                                       (BT_1Ant(padapter) == _TRUE))
                                {
                                        MaxAggNum = 0x8;
                                }
@@ -4701,7 +4608,7 @@ _func_enter_;
                                // saving sequence. 2010.06.07. Added by tynli. Suggested by SD3 yschang.
                                if ((psmode != PS_MODE_ACTIVE) && (!IS_92C_SERIAL(pHalData->VersionID)))
                                {
-                                       ODM_RF_Saving(&pHalData->odmpriv, true);
+                                       ODM_RF_Saving(&pHalData->odmpriv, _TRUE);
                                }
                                rtl8723a_set_FwPwrMode_cmd(padapter, psmode);
                        }
@@ -4711,11 +4618,11 @@ _func_enter_;
                        rtl8723a_set_FwJoinBssReport_cmd(padapter, *val);
                        break;
 
-#ifdef CONFIG_P2P
+#ifdef CONFIG_P2P_PS
                case HW_VAR_H2C_FW_P2P_PS_OFFLOAD:
                        rtl8192c_set_p2p_ps_offload_cmd(padapter, *val);
                        break;
-#endif //CONFIG_P2P
+#endif //CONFIG_P2P_PS
 
                case HW_VAR_INITIAL_GAIN:
                        {
@@ -4741,7 +4648,7 @@ _func_enter_;
                        {
                                u8 Optimum_antenna = *val;
 
-                               //DBG_8192C("==> HW_VAR_ANTENNA_DIVERSITY_SELECT , Ant_(%s)\n",(Optimum_antenna==2)?"A":"B");
+                               //DBG_8723A("==> HW_VAR_ANTENNA_DIVERSITY_SELECT , Ant_(%s)\n",(Optimum_antenna==2)?"A":"B");
 
                                //PHY_SetBBReg(padapter, rFPGA0_XA_RFInterfaceOE, 0x300, Optimum_antenna);
                                ODM_SetAntenna(&pHalData->odmpriv, Optimum_antenna);
@@ -4785,7 +4692,7 @@ _func_enter_;
                                // keep sn
                                padapter->xmitpriv.nqos_ssn = rtw_read16(padapter, REG_NQOS_SEQ);
 
-                               if (pwrpriv->bkeepfwalive != true)
+                               if (pwrpriv->bkeepfwalive != _TRUE)
                                {
                                        u32 v32;
 
@@ -4798,7 +4705,7 @@ _func_enter_;
                                                if (!v32) break;
                                        } while (trycnt--);
                                        if (trycnt == 0) {
-                                               DBG_8192C("Stop RX DMA failed......\n");
+                                               DBG_8723A("Stop RX DMA failed......\n");
                                        }
 
                                        // RQPN Load 0
@@ -4824,12 +4731,12 @@ _func_enter_;
                                {
                                        if (rtw_read32(padapter, 0x200) != rtw_read32(padapter, 0x204))
                                        {
-                                               //DBG_871X("packet in tx packet buffer - 0x204=%x, 0x200=%x (%d)\n", rtw_read32(padapter, 0x204), rtw_read32(padapter, 0x200), i);
+                                               //DBG_8723A("packet in tx packet buffer - 0x204=%x, 0x200=%x (%d)\n", rtw_read32(padapter, 0x204), rtw_read32(padapter, 0x200), i);
                                                rtw_msleep_os(10);
                                        }
                                        else
                                        {
-                                               DBG_871X("no packet in tx packet buffer (%d)\n", i);
+                                               DBG_8723A("no packet in tx packet buffer (%d)\n", i);
                                                break;
                                        }
                                }
@@ -4843,8 +4750,9 @@ _func_enter_;
 
                case HW_VAR_APFM_ON_MAC:
                        pHalData->bMacPwrCtrlOn = *val;
-                       DBG_8192C("%s: bMacPwrCtrlOn=%d\n", __func__, pHalData->bMacPwrCtrlOn);
+                       DBG_8723A("%s: bMacPwrCtrlOn=%d\n", __func__, pHalData->bMacPwrCtrlOn);
                        break;
+
                case HW_VAR_NAV_UPPER:
                        {
                                u32 usNavUpper = *((u32*)val);
@@ -4861,10 +4769,12 @@ _func_enter_;
                                rtw_write8(padapter, REG_NAV_UPPER, (u8)usNavUpper);
                        }
                        break;
+
                case HW_VAR_BCN_VALID:
                        //BCN_VALID, BIT16 of REG_TDECTRL = BIT0 of REG_TDECTRL+2, write 1 to clear, Clear by sw
                        rtw_write8(padapter, REG_TDECTRL+2, rtw_read8(padapter, REG_TDECTRL+2) | BIT0);
                        break;
+
                default:
                        break;
        }
@@ -4889,7 +4799,7 @@ void GetHwReg8723A(PADAPTER padapter, u8 variable, u8 *val)
 
                case HW_VAR_BCN_VALID:
                        //BCN_VALID, BIT16 of REG_TDECTRL = BIT0 of REG_TDECTRL+2
-                       val[0] = (BIT0 & rtw_read8(padapter, REG_TDECTRL+2))?true:false;
+                       val[0] = (BIT0 & rtw_read8(padapter, REG_TDECTRL+2))?_TRUE:_FALSE;
                        break;
 
                case HW_VAR_RF_TYPE:
@@ -4908,21 +4818,21 @@ void GetHwReg8723A(PADAPTER padapter, u8 variable, u8 *val)
                                // When we halt NIC, we should check if FW LPS is leave.
                                u32 valRCR;
 
-                               if ((padapter->bSurpriseRemoved == true) ||
+                               if ((padapter->bSurpriseRemoved == _TRUE) ||
                                        (padapter->pwrctrlpriv.rf_pwrstate == rf_off))
                                {
                                        // If it is in HW/SW Radio OFF or IPS state, we do not check Fw LPS Leave,
                                        // because Fw is unload.
-                                       *val = true;
+                                       *val = _TRUE;
                                }
                                else
                                {
                                        valRCR = rtw_read32(padapter, REG_RCR);
                                        valRCR &= 0x00070000;
                                        if(valRCR)
-                                               *val = false;
+                                               *val = _FALSE;
                                        else
-                                               *val = true;
+                                               *val = _TRUE;
                                }
                        }
                        break;
@@ -4959,7 +4869,7 @@ void GetHwReg8723A(PADAPTER padapter, u8 variable, u8 *val)
                        *val = pHalData->bMacPwrCtrlOn;
                        break;
                case HW_VAR_CHK_HI_QUEUE_EMPTY:
-                       *val = ((rtw_read32(padapter, REG_HGQ_INFORMATION)&0x0000ff00)==0) ? true:false;
+                       *val = ((rtw_read32(padapter, REG_HGQ_INFORMATION)&0x0000ff00)==0) ? _TRUE:_FALSE;
                        break;
        }
 }
@@ -4984,23 +4894,22 @@ void rtl8723a_SingleDualAntennaDetection(PADAPTER padapter)
        // We should take power tracking, IQK, LCK, RCK RF read/write operation into consideration.
        // 2011.12.15.
        //
-       if (IS_HARDWARE_TYPE_8723A(padapter) && !pHalData->bAntennaDetected)
-       {
+       if (!pHalData->bAntennaDetected) {
                u8 btAntNum = BT_GetPGAntNum(padapter);
 
                // Set default antenna B status
                if (btAntNum == Ant_x2)
-                       pDM_SWAT_Table->ANTB_ON = true;
+                       pDM_SWAT_Table->ANTB_ON = _TRUE;
                else if (btAntNum == Ant_x1)
-                       pDM_SWAT_Table->ANTB_ON = false;
+                       pDM_SWAT_Table->ANTB_ON = _FALSE;
                else
-                       pDM_SWAT_Table->ANTB_ON = true;
+                       pDM_SWAT_Table->ANTB_ON = _TRUE;
 
                if (pHalData->CustomerID != RT_CID_TOSHIBA )
                {
                        for (i=0; i<MAX_ANTENNA_DETECTION_CNT; i++)
                        {
-                               if (ODM_SingleDualAntennaDetection(&pHalData->odmpriv, ANTTESTALL) == true)
+                               if (ODM_SingleDualAntennaDetection(&pHalData->odmpriv, ANTTESTALL) == _TRUE)
                                        break;
                        }
 
@@ -5008,62 +4917,20 @@ void rtl8723a_SingleDualAntennaDetection(PADAPTER padapter)
                        if (btAntNum == Ant_x2)
                                BT_SetBtCoexCurrAntNum(padapter, pDM_SWAT_Table->ANTB_ON ? 2 : 1);
                }
-               pHalData->bAntennaDetected = true;
+               pHalData->bAntennaDetected = _TRUE;
        }
 }
 #endif // CONFIG_BT_COEXIST
 
 void rtl8723a_clone_haldata(_adapter* dst_adapter, _adapter* src_adapter)
 {
-#ifdef CONFIG_SDIO_HCI
-       HAL_DATA_TYPE   *pHalData = GET_HAL_DATA(dst_adapter);
-       _sema             temp_SdioXmitSema;
-       _sema             temp_SdioXmitTerminateSema;
-       _lock                temp_SdioTxFIFOFreePageLock;
-
-       memcpy(&temp_SdioXmitSema, &(pHalData->SdioXmitSema), sizeof(_sema));
-       memcpy(&temp_SdioXmitTerminateSema, &(pHalData->SdioXmitTerminateSema), sizeof(_sema));
-       memcpy(&temp_SdioTxFIFOFreePageLock, &(pHalData->SdioTxFIFOFreePageLock), sizeof(_lock));
-
-       memcpy(dst_adapter->HalData, src_adapter->HalData, dst_adapter->hal_data_sz);
-
-       memcpy(&(pHalData->SdioXmitSema), &temp_SdioXmitSema, sizeof(_sema));
-       memcpy(&(pHalData->SdioXmitTerminateSema), &temp_SdioXmitTerminateSema, sizeof(_sema));
-       memcpy(&(pHalData->SdioTxFIFOFreePageLock), &temp_SdioTxFIFOFreePageLock, sizeof(_lock));
-
-#else
        memcpy(dst_adapter->HalData, src_adapter->HalData, dst_adapter->hal_data_sz);
-#endif
-
 }
 
 void rtl8723a_start_thread(_adapter *padapter)
 {
-#if (defined CONFIG_SDIO_HCI) || (defined CONFIG_GSPI_HCI)
-#ifndef CONFIG_SDIO_TX_TASKLET
-       HAL_DATA_TYPE   *pHalData = GET_HAL_DATA(padapter);
-
-       pHalData->SdioXmitThread = kthread_run(rtl8723as_xmit_thread, padapter, "RTWHALXT");
-       if (IS_ERR(pHalData->SdioXmitThread))
-       {
-               RT_TRACE(_module_hal_xmit_c_, _drv_err_, ("%s: start rtl8723as_xmit_thread FAIL!!\n", __FUNCTION__));
-       }
-#endif
-#endif
 }
 
 void rtl8723a_stop_thread(_adapter *padapter)
 {
-#if (defined CONFIG_SDIO_HCI) || (defined CONFIG_GSPI_HCI)
-#ifndef CONFIG_SDIO_TX_TASKLET
-       HAL_DATA_TYPE   *pHalData = GET_HAL_DATA(padapter);
-
-       // stop xmit_buf_thread
-       if (pHalData->SdioXmitThread ) {
-               _rtw_up_sema(&pHalData->SdioXmitSema);
-               _rtw_down_sema(&pHalData->SdioXmitTerminateSema);
-               pHalData->SdioXmitThread = 0;
-       }
-#endif
-#endif
 }