All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luka Gejak <luka.gejak@linux.dev>
To: Ping-Ke Shih <pkshih@realtek.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org,
	Luka Gejak <luka.gejak@linux.dev>,
	linux-staging@lists.linux.dev
Subject: [PATCH] staging: rtl8723bs: remove the obsolete driver
Date: Wed,  7 Oct 2026 10:28:17 +0000	[thread overview]
Message-ID: <20261007102819.19904-1-luka.gejak@linux.dev> (raw)

RTW88 now supports RTL8723B family, via rtw8723b driver which handles
RTL8723BS, so the staging driver is obsolete. Remove it together
with its Kconfig and Makefile wiring.

Signed-off-by: Luka Gejak <luka.gejak@linux.dev>
---
 drivers/staging/Kconfig                       |    2 -
 drivers/staging/Makefile                      |    1 -
 drivers/staging/rtl8723bs/Kconfig             |   13 -
 drivers/staging/rtl8723bs/Makefile            |   60 -
 drivers/staging/rtl8723bs/TODO                |    7 -
 drivers/staging/rtl8723bs/core/rtw_ap.c       | 1943 ------
 drivers/staging/rtl8723bs/core/rtw_btcoex.c   |   75 -
 drivers/staging/rtl8723bs/core/rtw_cmd.c      | 1936 ------
 drivers/staging/rtl8723bs/core/rtw_efuse.c    |  253 -
 .../staging/rtl8723bs/core/rtw_ieee80211.c    | 1199 ----
 drivers/staging/rtl8723bs/core/rtw_io.c       |  145 -
 .../staging/rtl8723bs/core/rtw_ioctl_set.c    |  494 --
 drivers/staging/rtl8723bs/core/rtw_mlme.c     | 2565 -------
 drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 5901 -----------------
 drivers/staging/rtl8723bs/core/rtw_pwrctrl.c  | 1139 ----
 drivers/staging/rtl8723bs/core/rtw_recv.c     | 2249 -------
 drivers/staging/rtl8723bs/core/rtw_security.c | 1470 ----
 drivers/staging/rtl8723bs/core/rtw_sta_mgt.c  |  549 --
 .../staging/rtl8723bs/core/rtw_wlan_util.c    | 1759 -----
 drivers/staging/rtl8723bs/core/rtw_xmit.c     | 2569 -------
 drivers/staging/rtl8723bs/hal/Hal8723BReg.h   |   65 -
 .../staging/rtl8723bs/hal/HalBtc8723b1Ant.c   | 2595 --------
 .../staging/rtl8723bs/hal/HalBtc8723b1Ant.h   |  184 -
 .../staging/rtl8723bs/hal/HalBtc8723b2Ant.c   | 2624 --------
 .../staging/rtl8723bs/hal/HalBtc8723b2Ant.h   |  146 -
 drivers/staging/rtl8723bs/hal/HalBtcOutSrc.h  |  426 --
 .../staging/rtl8723bs/hal/HalHWImg8723B_BB.c  |  556 --
 .../staging/rtl8723bs/hal/HalHWImg8723B_BB.h  |   39 -
 .../staging/rtl8723bs/hal/HalHWImg8723B_MAC.c |  237 -
 .../staging/rtl8723bs/hal/HalHWImg8723B_MAC.h |   19 -
 .../staging/rtl8723bs/hal/HalHWImg8723B_RF.c  |  554 --
 .../staging/rtl8723bs/hal/HalHWImg8723B_RF.h  |   40 -
 drivers/staging/rtl8723bs/hal/HalPhyRf.c      |  268 -
 drivers/staging/rtl8723bs/hal/HalPhyRf.h      |   39 -
 .../staging/rtl8723bs/hal/HalPhyRf_8723B.c    | 1767 -----
 .../staging/rtl8723bs/hal/HalPhyRf_8723B.h    |   66 -
 drivers/staging/rtl8723bs/hal/HalPwrSeqCmd.c  |  144 -
 drivers/staging/rtl8723bs/hal/Mp_Precomp.h    |   23 -
 drivers/staging/rtl8723bs/hal/hal_btcoex.c    | 1303 ----
 drivers/staging/rtl8723bs/hal/hal_com.c       |  767 ---
 .../staging/rtl8723bs/hal/hal_com_phycfg.c    |  973 ---
 drivers/staging/rtl8723bs/hal/hal_intf.c      |  283 -
 drivers/staging/rtl8723bs/hal/hal_pwr_seq.c   |  128 -
 drivers/staging/rtl8723bs/hal/hal_sdio.c      |  100 -
 drivers/staging/rtl8723bs/hal/odm.c           |  988 ---
 drivers/staging/rtl8723bs/hal/odm.h           | 1109 ----
 .../staging/rtl8723bs/hal/odm_CfoTracking.c   |  210 -
 .../staging/rtl8723bs/hal/odm_CfoTracking.h   |   39 -
 drivers/staging/rtl8723bs/hal/odm_DIG.c       |  799 ---
 drivers/staging/rtl8723bs/hal/odm_DIG.h       |  164 -
 .../rtl8723bs/hal/odm_DynamicBBPowerSaving.c  |   81 -
 .../rtl8723bs/hal/odm_DynamicBBPowerSaving.h  |   31 -
 .../rtl8723bs/hal/odm_DynamicTxPower.c        |   22 -
 .../rtl8723bs/hal/odm_DynamicTxPower.h        |   29 -
 .../rtl8723bs/hal/odm_EdcaTurboCheck.c        |  158 -
 .../rtl8723bs/hal/odm_EdcaTurboCheck.h        |   23 -
 drivers/staging/rtl8723bs/hal/odm_HWConfig.c  |  439 --
 drivers/staging/rtl8723bs/hal/odm_HWConfig.h  |   85 -
 .../rtl8723bs/hal/odm_RegConfig8723B.c        |  176 -
 .../rtl8723bs/hal/odm_RegConfig8723B.h        |   45 -
 .../staging/rtl8723bs/hal/odm_RegDefine11N.h  |  160 -
 drivers/staging/rtl8723bs/hal/odm_interface.h |   29 -
 drivers/staging/rtl8723bs/hal/odm_precomp.h   |   47 -
 drivers/staging/rtl8723bs/hal/odm_reg.h       |   91 -
 drivers/staging/rtl8723bs/hal/odm_types.h     |   40 -
 drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c  |  933 ---
 drivers/staging/rtl8723bs/hal/rtl8723b_dm.c   |  256 -
 .../staging/rtl8723bs/hal/rtl8723b_hal_init.c | 2826 --------
 .../staging/rtl8723bs/hal/rtl8723b_phycfg.c   |  759 ---
 .../staging/rtl8723bs/hal/rtl8723b_rf6052.c   |  135 -
 .../staging/rtl8723bs/hal/rtl8723b_rxdesc.c   |   69 -
 .../staging/rtl8723bs/hal/rtl8723bs_recv.c    |  477 --
 .../staging/rtl8723bs/hal/rtl8723bs_xmit.c    |  568 --
 drivers/staging/rtl8723bs/hal/sdio_halinit.c  | 1192 ----
 drivers/staging/rtl8723bs/hal/sdio_ops.c      |  859 ---
 .../rtl8723bs/include/Hal8192CPhyReg.h        |  232 -
 .../staging/rtl8723bs/include/HalPwrSeqCmd.h  |  111 -
 .../staging/rtl8723bs/include/basic_types.h   |  175 -
 drivers/staging/rtl8723bs/include/cmd_osdep.h |   16 -
 drivers/staging/rtl8723bs/include/drv_types.h |  431 --
 .../rtl8723bs/include/drv_types_sdio.h        |   25 -
 .../staging/rtl8723bs/include/hal_btcoex.h    |   54 -
 drivers/staging/rtl8723bs/include/hal_com.h   |  152 -
 .../staging/rtl8723bs/include/hal_com_h2c.h   |   28 -
 .../rtl8723bs/include/hal_com_phycfg.h        |  108 -
 .../staging/rtl8723bs/include/hal_com_reg.h   |  594 --
 drivers/staging/rtl8723bs/include/hal_data.h  |  276 -
 drivers/staging/rtl8723bs/include/hal_intf.h  |  250 -
 drivers/staging/rtl8723bs/include/hal_pg.h    |   63 -
 drivers/staging/rtl8723bs/include/hal_phy.h   |   73 -
 .../staging/rtl8723bs/include/hal_phy_cfg.h   |   63 -
 .../staging/rtl8723bs/include/hal_phy_reg.h   |   17 -
 .../staging/rtl8723bs/include/hal_pwr_seq.h   |  226 -
 drivers/staging/rtl8723bs/include/hal_sdio.h  |   18 -
 drivers/staging/rtl8723bs/include/ieee80211.h |  748 ---
 .../rtl8723bs/include/ioctl_cfg80211.h        |   58 -
 .../staging/rtl8723bs/include/osdep_intf.h    |   42 -
 .../staging/rtl8723bs/include/osdep_service.h |   53 -
 .../rtl8723bs/include/osdep_service_linux.h   |  118 -
 .../staging/rtl8723bs/include/rtl8192c_recv.h |   33 -
 .../staging/rtl8723bs/include/rtl8723b_cmd.h  |  182 -
 .../staging/rtl8723bs/include/rtl8723b_dm.h   |   32 -
 .../staging/rtl8723bs/include/rtl8723b_hal.h  |  246 -
 .../staging/rtl8723bs/include/rtl8723b_recv.h |   95 -
 .../staging/rtl8723bs/include/rtl8723b_rf.h   |   17 -
 .../staging/rtl8723bs/include/rtl8723b_spec.h |  237 -
 .../staging/rtl8723bs/include/rtl8723b_xmit.h |  421 --
 drivers/staging/rtl8723bs/include/rtw_ap.h    |   39 -
 .../staging/rtl8723bs/include/rtw_btcoex.h    |   27 -
 .../staging/rtl8723bs/include/rtw_byteorder.h |   16 -
 drivers/staging/rtl8723bs/include/rtw_cmd.h   |  705 --
 .../staging/rtl8723bs/include/rtw_eeprom.h    |  118 -
 drivers/staging/rtl8723bs/include/rtw_efuse.h |   78 -
 drivers/staging/rtl8723bs/include/rtw_event.h |   92 -
 drivers/staging/rtl8723bs/include/rtw_ht.h    |   83 -
 drivers/staging/rtl8723bs/include/rtw_io.h    |   58 -
 .../staging/rtl8723bs/include/rtw_ioctl_set.h |   27 -
 drivers/staging/rtl8723bs/include/rtw_mlme.h  |  397 --
 .../staging/rtl8723bs/include/rtw_mlme_ext.h  |  708 --
 .../staging/rtl8723bs/include/rtw_pwrctrl.h   |  254 -
 drivers/staging/rtl8723bs/include/rtw_qos.h   |   15 -
 drivers/staging/rtl8723bs/include/rtw_recv.h  |  457 --
 drivers/staging/rtl8723bs/include/rtw_rf.h    |  100 -
 .../staging/rtl8723bs/include/rtw_security.h  |  272 -
 .../staging/rtl8723bs/include/rtw_version.h   |    3 -
 .../staging/rtl8723bs/include/rtw_wifi_regd.h |   16 -
 drivers/staging/rtl8723bs/include/rtw_xmit.h  |  470 --
 drivers/staging/rtl8723bs/include/sdio_hal.h  |   14 -
 drivers/staging/rtl8723bs/include/sdio_ops.h  |   33 -
 .../rtl8723bs/include/sdio_ops_linux.h        |   29 -
 drivers/staging/rtl8723bs/include/sta_info.h  |  330 -
 drivers/staging/rtl8723bs/include/wifi.h      |  409 --
 .../staging/rtl8723bs/include/wlan_bssdef.h   |  195 -
 .../staging/rtl8723bs/include/xmit_osdep.h    |   43 -
 .../staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 2795 --------
 drivers/staging/rtl8723bs/os_dep/os_intfs.c   | 1189 ----
 .../staging/rtl8723bs/os_dep/osdep_service.c  |  201 -
 drivers/staging/rtl8723bs/os_dep/sdio_intf.c  |  465 --
 .../staging/rtl8723bs/os_dep/sdio_ops_linux.c |  495 --
 drivers/staging/rtl8723bs/os_dep/wifi_regd.c  |  129 -
 drivers/staging/rtl8723bs/os_dep/xmit_linux.c |  216 -
 141 files changed, 66186 deletions(-)
 delete mode 100644 drivers/staging/rtl8723bs/Kconfig
 delete mode 100644 drivers/staging/rtl8723bs/Makefile
 delete mode 100644 drivers/staging/rtl8723bs/TODO
 delete mode 100644 drivers/staging/rtl8723bs/core/rtw_ap.c
 delete mode 100644 drivers/staging/rtl8723bs/core/rtw_btcoex.c
 delete mode 100644 drivers/staging/rtl8723bs/core/rtw_cmd.c
 delete mode 100644 drivers/staging/rtl8723bs/core/rtw_efuse.c
 delete mode 100644 drivers/staging/rtl8723bs/core/rtw_ieee80211.c
 delete mode 100644 drivers/staging/rtl8723bs/core/rtw_io.c
 delete mode 100644 drivers/staging/rtl8723bs/core/rtw_ioctl_set.c
 delete mode 100644 drivers/staging/rtl8723bs/core/rtw_mlme.c
 delete mode 100644 drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
 delete mode 100644 drivers/staging/rtl8723bs/core/rtw_pwrctrl.c
 delete mode 100644 drivers/staging/rtl8723bs/core/rtw_recv.c
 delete mode 100644 drivers/staging/rtl8723bs/core/rtw_security.c
 delete mode 100644 drivers/staging/rtl8723bs/core/rtw_sta_mgt.c
 delete mode 100644 drivers/staging/rtl8723bs/core/rtw_wlan_util.c
 delete mode 100644 drivers/staging/rtl8723bs/core/rtw_xmit.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/Hal8723BReg.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalBtcOutSrc.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalHWImg8723B_BB.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalHWImg8723B_BB.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalHWImg8723B_MAC.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalHWImg8723B_MAC.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalHWImg8723B_RF.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalHWImg8723B_RF.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalPhyRf.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalPhyRf.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalPhyRf_8723B.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalPhyRf_8723B.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/HalPwrSeqCmd.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/Mp_Precomp.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/hal_btcoex.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/hal_com.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/hal_com_phycfg.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/hal_intf.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/hal_pwr_seq.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/hal_sdio.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_CfoTracking.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_CfoTracking.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_DIG.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_DIG.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_DynamicBBPowerSaving.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_DynamicBBPowerSaving.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_DynamicTxPower.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_DynamicTxPower.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_EdcaTurboCheck.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_EdcaTurboCheck.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_HWConfig.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_HWConfig.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_RegConfig8723B.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_RegConfig8723B.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_RegDefine11N.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_interface.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_precomp.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_reg.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/odm_types.h
 delete mode 100644 drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/rtl8723b_dm.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/rtl8723b_phycfg.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/rtl8723b_rf6052.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/rtl8723b_rxdesc.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/sdio_halinit.c
 delete mode 100644 drivers/staging/rtl8723bs/hal/sdio_ops.c
 delete mode 100644 drivers/staging/rtl8723bs/include/Hal8192CPhyReg.h
 delete mode 100644 drivers/staging/rtl8723bs/include/HalPwrSeqCmd.h
 delete mode 100644 drivers/staging/rtl8723bs/include/basic_types.h
 delete mode 100644 drivers/staging/rtl8723bs/include/cmd_osdep.h
 delete mode 100644 drivers/staging/rtl8723bs/include/drv_types.h
 delete mode 100644 drivers/staging/rtl8723bs/include/drv_types_sdio.h
 delete mode 100644 drivers/staging/rtl8723bs/include/hal_btcoex.h
 delete mode 100644 drivers/staging/rtl8723bs/include/hal_com.h
 delete mode 100644 drivers/staging/rtl8723bs/include/hal_com_h2c.h
 delete mode 100644 drivers/staging/rtl8723bs/include/hal_com_phycfg.h
 delete mode 100644 drivers/staging/rtl8723bs/include/hal_com_reg.h
 delete mode 100644 drivers/staging/rtl8723bs/include/hal_data.h
 delete mode 100644 drivers/staging/rtl8723bs/include/hal_intf.h
 delete mode 100644 drivers/staging/rtl8723bs/include/hal_pg.h
 delete mode 100644 drivers/staging/rtl8723bs/include/hal_phy.h
 delete mode 100644 drivers/staging/rtl8723bs/include/hal_phy_cfg.h
 delete mode 100644 drivers/staging/rtl8723bs/include/hal_phy_reg.h
 delete mode 100644 drivers/staging/rtl8723bs/include/hal_pwr_seq.h
 delete mode 100644 drivers/staging/rtl8723bs/include/hal_sdio.h
 delete mode 100644 drivers/staging/rtl8723bs/include/ieee80211.h
 delete mode 100644 drivers/staging/rtl8723bs/include/ioctl_cfg80211.h
 delete mode 100644 drivers/staging/rtl8723bs/include/osdep_intf.h
 delete mode 100644 drivers/staging/rtl8723bs/include/osdep_service.h
 delete mode 100644 drivers/staging/rtl8723bs/include/osdep_service_linux.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtl8192c_recv.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtl8723b_cmd.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtl8723b_dm.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtl8723b_hal.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtl8723b_recv.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtl8723b_rf.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtl8723b_spec.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtl8723b_xmit.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_ap.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_btcoex.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_byteorder.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_cmd.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_eeprom.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_efuse.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_event.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_ht.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_io.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_ioctl_set.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_mlme.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_mlme_ext.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_pwrctrl.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_qos.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_recv.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_rf.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_security.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_version.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_wifi_regd.h
 delete mode 100644 drivers/staging/rtl8723bs/include/rtw_xmit.h
 delete mode 100644 drivers/staging/rtl8723bs/include/sdio_hal.h
 delete mode 100644 drivers/staging/rtl8723bs/include/sdio_ops.h
 delete mode 100644 drivers/staging/rtl8723bs/include/sdio_ops_linux.h
 delete mode 100644 drivers/staging/rtl8723bs/include/sta_info.h
 delete mode 100644 drivers/staging/rtl8723bs/include/wifi.h
 delete mode 100644 drivers/staging/rtl8723bs/include/wlan_bssdef.h
 delete mode 100644 drivers/staging/rtl8723bs/include/xmit_osdep.h
 delete mode 100644 drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
 delete mode 100644 drivers/staging/rtl8723bs/os_dep/os_intfs.c
 delete mode 100644 drivers/staging/rtl8723bs/os_dep/osdep_service.c
 delete mode 100644 drivers/staging/rtl8723bs/os_dep/sdio_intf.c
 delete mode 100644 drivers/staging/rtl8723bs/os_dep/sdio_ops_linux.c
 delete mode 100644 drivers/staging/rtl8723bs/os_dep/wifi_regd.c
 delete mode 100644 drivers/staging/rtl8723bs/os_dep/xmit_linux.c

diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index 2f92cd698bef..46b460bfb436 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -24,8 +24,6 @@ menuconfig STAGING
 
 if STAGING
 
-source "drivers/staging/rtl8723bs/Kconfig"
-
 source "drivers/staging/octeon/Kconfig"
 
 source "drivers/staging/iio/Kconfig"
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index f5b8876aa536..7e2e7a7e773a 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -2,7 +2,6 @@
 # Makefile for staging directory
 
 obj-y				+= media/
-obj-$(CONFIG_RTL8723BS)		+= rtl8723bs/
 obj-$(CONFIG_OCTEON_ETHERNET)	+= octeon/
 obj-$(CONFIG_VME_BUS)		+= vme_user/
 obj-$(CONFIG_IIO)		+= iio/
diff --git a/drivers/staging/rtl8723bs/Kconfig b/drivers/staging/rtl8723bs/Kconfig
deleted file mode 100644
index 414982893b6b..000000000000
--- a/drivers/staging/rtl8723bs/Kconfig
+++ /dev/null
@@ -1,13 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-config RTL8723BS
-	tristate "Realtek RTL8723BS SDIO Wireless LAN NIC driver"
-	depends on WLAN && MMC && CFG80211
-	depends on m
-	select CRYPTO_LIB_AES
-	select CRYPTO_LIB_ARC4
-	select CRYPTO_LIB_UTILS
-	help
-	This option enables support for RTL8723BS SDIO drivers, such as
-	the wifi found on the 1st gen Intel Compute Stick, the CHIP
-	and many other Intel Atom and ARM based devices.
-	If built as a module, it will be called r8723bs.
diff --git a/drivers/staging/rtl8723bs/Makefile b/drivers/staging/rtl8723bs/Makefile
deleted file mode 100644
index 1768b8123f03..000000000000
--- a/drivers/staging/rtl8723bs/Makefile
+++ /dev/null
@@ -1,60 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-r8723bs-y = \
-		core/rtw_ap.o \
-		core/rtw_btcoex.o \
-	 	core/rtw_cmd.o \
-		core/rtw_efuse.o \
-		core/rtw_io.o \
-		core/rtw_ioctl_set.o \
-		core/rtw_ieee80211.o \
-		core/rtw_mlme.o \
-		core/rtw_mlme_ext.o \
-		core/rtw_pwrctrl.o \
-		core/rtw_recv.o \
-		core/rtw_security.o \
-		core/rtw_sta_mgt.o \
-		core/rtw_wlan_util.o \
-		core/rtw_xmit.o	\
-		hal/hal_intf.o \
-		hal/hal_com.o \
-		hal/hal_com_phycfg.o \
-		hal/hal_btcoex.o \
-		hal/hal_sdio.o \
-		hal/hal_pwr_seq.o \
-		hal/HalPhyRf.o \
-		hal/HalPwrSeqCmd.o \
-		hal/odm.o \
-		hal/odm_CfoTracking.o \
-		hal/odm_DIG.o \
-		hal/odm_DynamicBBPowerSaving.o \
-		hal/odm_DynamicTxPower.o \
-		hal/odm_EdcaTurboCheck.o \
-		hal/odm_HWConfig.o \
-		hal/odm_RegConfig8723B.o \
-		hal/rtl8723b_cmd.o \
-		hal/rtl8723b_dm.o \
-		hal/rtl8723b_hal_init.o \
-		hal/rtl8723b_phycfg.o \
-		hal/rtl8723b_rf6052.o \
-		hal/rtl8723b_rxdesc.o \
-		hal/rtl8723bs_recv.o \
-		hal/rtl8723bs_xmit.o \
-		hal/sdio_halinit.o \
-		hal/sdio_ops.o \
-		hal/HalBtc8723b1Ant.o \
-		hal/HalBtc8723b2Ant.o \
-		hal/HalHWImg8723B_BB.o \
-		hal/HalHWImg8723B_MAC.o \
-		hal/HalHWImg8723B_RF.o \
-		hal/HalPhyRf_8723B.o \
-		os_dep/ioctl_cfg80211.o \
-		os_dep/osdep_service.o \
-		os_dep/os_intfs.o \
-		os_dep/sdio_intf.o \
-		os_dep/sdio_ops_linux.o \
-		os_dep/wifi_regd.o \
-		os_dep/xmit_linux.o
-
-obj-$(CONFIG_RTL8723BS) := r8723bs.o
-
-ccflags-y += -I$(src)/include -I$(src)/hal
diff --git a/drivers/staging/rtl8723bs/TODO b/drivers/staging/rtl8723bs/TODO
deleted file mode 100644
index 34c216e6da32..000000000000
--- a/drivers/staging/rtl8723bs/TODO
+++ /dev/null
@@ -1,7 +0,0 @@
-TODO:
-- find and remove any code for other chips that is left over
-- convert any remaining unusual variable types
-- checkpatch.pl fixes - most of the remaining ones are lines too long. Many
-  of them will require refactoring
-- merge Realtek's bugfixes and new features into the driver
-- switch to use MAC80211
diff --git a/drivers/staging/rtl8723bs/core/rtw_ap.c b/drivers/staging/rtl8723bs/core/rtw_ap.c
deleted file mode 100644
index 4728f62a1557..000000000000
--- a/drivers/staging/rtl8723bs/core/rtw_ap.c
+++ /dev/null
@@ -1,1943 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <drv_types.h>
-#include <linux/unaligned.h>
-
-void init_mlme_ap_info(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;
-
-	spin_lock_init(&pmlmepriv->bcn_update_lock);
-
-	/* for ACL */
-	INIT_LIST_HEAD(&pacl_list->acl_node_q.queue);
-	spin_lock_init(&pacl_list->acl_node_q.lock);
-
-	start_ap_mode(padapter);
-}
-
-void free_mlme_ap_info(struct adapter *padapter)
-{
-	struct sta_info *psta = NULL;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	pmlmepriv->update_bcn = false;
-	pmlmeext->bstart_bss = false;
-
-	rtw_sta_flush(padapter);
-
-	pmlmeinfo->state = _HW_STATE_NOLINK_;
-
-	/* free_assoc_sta_resources */
-	rtw_free_all_stainfo(padapter);
-
-	/* free bc/mc sta_info */
-	psta = rtw_get_bcmc_stainfo(padapter);
-	rtw_free_stainfo(padapter, psta);
-}
-
-static void update_BCNTIM(struct adapter *padapter)
-{
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex *pnetwork_mlmeext = &pmlmeinfo->network;
-	unsigned char *pie = pnetwork_mlmeext->ies;
-
-	/* update TIM IE */
-	u8 *p, *dst_ie, *premainder_ie = NULL, *pbackup_remainder_ie = NULL;
-	__le16 tim_bitmap_le;
-	unsigned int offset, tmp_len, tim_ielen, tim_ie_offset, remainder_ielen;
-
-	tim_bitmap_le = cpu_to_le16(pstapriv->tim_bitmap);
-
-	p = rtw_get_ie(pie + _FIXED_IE_LENGTH_,
-		       WLAN_EID_TIM,
-		       &tim_ielen,
-		       pnetwork_mlmeext->ie_length - _FIXED_IE_LENGTH_
-	);
-	if (p && tim_ielen > 0) {
-		tim_ielen += 2;
-
-		premainder_ie = p + tim_ielen;
-
-		tim_ie_offset = (signed int)(p - pie);
-
-		remainder_ielen = pnetwork_mlmeext->ie_length - tim_ie_offset - tim_ielen;
-
-		/* append TIM IE from dst_ie offset */
-		dst_ie = p;
-	} else {
-		tim_ielen = 0;
-
-		/* calculate head_len */
-		offset = _FIXED_IE_LENGTH_;
-
-		/* get ssid_ie len */
-		p = rtw_get_ie(pie + _BEACON_IE_OFFSET_,
-			       WLAN_EID_SSID,
-			       &tmp_len,
-			       (pnetwork_mlmeext->ie_length - _BEACON_IE_OFFSET_)
-		);
-		if (p)
-			offset += tmp_len + 2;
-
-		/*  get supported rates len */
-		p = rtw_get_ie(pie + _BEACON_IE_OFFSET_,
-			       WLAN_EID_SUPP_RATES, &tmp_len,
-			       (pnetwork_mlmeext->ie_length - _BEACON_IE_OFFSET_)
-		);
-		if (p)
-			offset += tmp_len + 2;
-
-		/* DS Parameter Set IE, len =3 */
-		offset += 3;
-
-		premainder_ie = pie + offset;
-
-		remainder_ielen = pnetwork_mlmeext->ie_length - offset - tim_ielen;
-
-		/* append TIM IE from offset */
-		dst_ie = pie + offset;
-	}
-
-	if (premainder_ie && remainder_ielen)
-		pbackup_remainder_ie = kmemdup(premainder_ie, remainder_ielen, GFP_ATOMIC);
-
-	*dst_ie++ = WLAN_EID_TIM;
-
-	if ((pstapriv->tim_bitmap & 0xff00) && (pstapriv->tim_bitmap & 0x00fe))
-		tim_ielen = 5;
-	else
-		tim_ielen = 4;
-
-	*dst_ie++ = tim_ielen;
-
-	*dst_ie++ = 0;/* DTIM count */
-	*dst_ie++ = 1;/* DTIM period */
-
-	if (pstapriv->tim_bitmap & BIT(0))/* for bc/mc frames */
-		*dst_ie++ = BIT(0);/* bitmap ctrl */
-	else
-		*dst_ie++ = 0;
-
-	if (tim_ielen == 4) {
-		__le16 pvb;
-
-		if (pstapriv->tim_bitmap & 0xff00)
-			pvb = cpu_to_le16(pstapriv->tim_bitmap >> 8);
-		else
-			pvb = tim_bitmap_le;
-
-		*dst_ie++ = le16_to_cpu(pvb);
-
-	} else if (tim_ielen == 5) {
-		memcpy(dst_ie, &tim_bitmap_le, 2);
-		dst_ie += 2;
-	}
-
-	/* copy remainder IE */
-	if (pbackup_remainder_ie) {
-		memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);
-
-		kfree(pbackup_remainder_ie);
-	}
-
-	offset =  (unsigned int)(dst_ie - pie);
-	pnetwork_mlmeext->ie_length = offset + remainder_ielen;
-}
-
-static u8 chk_sta_is_alive(struct sta_info *psta)
-{
-	sta_update_last_rx_pkts(psta);
-
-	return true;
-}
-
-void expire_timeout_chk(struct adapter *padapter)
-{
-	struct list_head *phead, *plist, *tmp;
-	u8 updated = false;
-	struct sta_info *psta = NULL;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	u8 chk_alive_num = 0;
-	char chk_alive_list[NUM_STA];
-	struct sta_info *psta_tmp;
-	LIST_HEAD(free_list);
-	int i;
-
-	spin_lock_bh(&pstapriv->auth_list_lock);
-
-	phead = &pstapriv->auth_list;
-	/* check auth_queue */
-	list_for_each_safe(plist, tmp, phead) {
-		psta = list_entry(plist, struct sta_info, auth_list);
-
-		if (psta->expire_to > 0) {
-			psta->expire_to--;
-			if (psta->expire_to == 0) {
-				list_move(&psta->auth_list, &free_list);
-				pstapriv->auth_list_cnt--;
-			}
-		}
-	}
-
-	spin_unlock_bh(&pstapriv->auth_list_lock);
-
-	list_for_each_entry_safe(psta, psta_tmp, &free_list, auth_list) {
-		list_del_init(&psta->auth_list);
-		rtw_free_stainfo(padapter, psta);
-	}
-
-	psta = NULL;
-
-	spin_lock_bh(&pstapriv->asoc_list_lock);
-
-	phead = &pstapriv->asoc_list;
-	/* check asoc_queue */
-	list_for_each_safe(plist, tmp, phead) {
-		psta = list_entry(plist, struct sta_info, asoc_list);
-		if (chk_sta_is_alive(psta) || !psta->expire_to) {
-			psta->expire_to = pstapriv->expire_to;
-			psta->keep_alive_trycnt = 0;
-			psta->under_exist_checking = 0;
-		} else {
-			if (psta->expire_to > 0)
-				psta->expire_to--;
-		}
-
-		if (psta->expire_to == 0) {
-			struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-			if (padapter->registrypriv.wifi_spec == 1) {
-				psta->expire_to = pstapriv->expire_to;
-				continue;
-			}
-
-			if (psta->state & WIFI_SLEEP_STATE) {
-				if (!(psta->state & WIFI_STA_ALIVE_CHK_STATE)) {
-					/* to check if alive by another methods */
-					/* if station is at ps mode. */
-					psta->expire_to = pstapriv->expire_to;
-					psta->state |= WIFI_STA_ALIVE_CHK_STATE;
-
-					/* to update bcn with tim_bitmap for this station */
-					pstapriv->tim_bitmap |= BIT(psta->aid);
-					update_beacon(padapter, WLAN_EID_TIM, true);
-
-					if (!pmlmeext->active_keep_alive_check)
-						continue;
-				}
-			}
-			if (pmlmeext->active_keep_alive_check) {
-				int stainfo_offset;
-
-				stainfo_offset = rtw_stainfo_offset(pstapriv, psta);
-				if (stainfo_offset_valid(stainfo_offset))
-					chk_alive_list[chk_alive_num++] = stainfo_offset;
-
-				continue;
-			}
-			list_del_init(&psta->asoc_list);
-			pstapriv->asoc_list_cnt--;
-			updated = ap_free_sta(padapter, psta, false, WLAN_REASON_DEAUTH_LEAVING);
-		} else {
-			/* TODO: Aging mechanism to digest frames in sleep_q to */
-			/* avoid running out of xmitframe */
-			if (psta->sleepq_len > (NR_XMITFRAME / pstapriv->asoc_list_cnt) &&
-			    padapter->xmitpriv.free_xmitframe_cnt <
-					((NR_XMITFRAME / pstapriv->asoc_list_cnt) / 2))
-				wakeup_sta_to_xmit(padapter, psta);
-		}
-	}
-
-	spin_unlock_bh(&pstapriv->asoc_list_lock);
-
-	if (chk_alive_num) {
-		u8 backup_oper_channel = 0;
-		struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-		/* switch to correct channel of current network  before issue keep-alive frames */
-		if (rtw_get_oper_ch(padapter) != pmlmeext->cur_channel) {
-			backup_oper_channel = rtw_get_oper_ch(padapter);
-			r8723bs_select_channel(padapter, pmlmeext->cur_channel);
-		}
-
-		/* issue null data to check sta alive*/
-		for (i = 0; i < chk_alive_num; i++) {
-			int ret = _FAIL;
-
-			psta = rtw_get_stainfo_by_offset(pstapriv, chk_alive_list[i]);
-			if (!(psta->state & _FW_LINKED))
-				continue;
-
-			if (psta->state & WIFI_SLEEP_STATE)
-				ret = issue_nulldata(padapter, psta->hwaddr, 0, 1, 50);
-			else
-				ret = issue_nulldata(padapter, psta->hwaddr, 0, 3, 50);
-
-			psta->keep_alive_trycnt++;
-			if (ret == _SUCCESS) {
-				psta->expire_to = pstapriv->expire_to;
-				psta->keep_alive_trycnt = 0;
-				continue;
-			} else if (psta->keep_alive_trycnt <= 3) {
-				psta->expire_to = 1;
-				continue;
-			}
-
-			psta->keep_alive_trycnt = 0;
-			spin_lock_bh(&pstapriv->asoc_list_lock);
-			if (!list_empty(&psta->asoc_list)) {
-				list_del_init(&psta->asoc_list);
-				pstapriv->asoc_list_cnt--;
-				updated = ap_free_sta(padapter, psta, false,
-						      WLAN_REASON_DEAUTH_LEAVING);
-			}
-			spin_unlock_bh(&pstapriv->asoc_list_lock);
-		}
-
-		if (backup_oper_channel > 0) /* back to the original operation channel */
-			r8723bs_select_channel(padapter, backup_oper_channel);
-	}
-
-	associated_clients_update(padapter, updated);
-}
-
-void add_ratid(struct adapter *padapter, struct sta_info *psta, u8 rssi_level)
-{
-	unsigned char sta_band = 0, short_gi_rate = false;
-	unsigned int tx_ra_bitmap = 0;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct wlan_bssid_ex
-		*pcur_network = (struct wlan_bssid_ex *)&pmlmepriv->cur_network.network;
-
-	if (!psta)
-		return;
-
-	if (!(psta->state & _FW_LINKED))
-		return;
-
-	rtw_hal_update_sta_rate_mask(padapter, psta);
-	tx_ra_bitmap = psta->ra_mask;
-
-	short_gi_rate = query_ra_short_GI(psta);
-
-	if (pcur_network->configuration.ds_config > 14) {
-		sta_band |= WIRELESS_INVALID;
-	} else {
-		if (tx_ra_bitmap & 0xffff000)
-			sta_band |= WIRELESS_11_24N;
-
-		if (tx_ra_bitmap & 0xff0)
-			sta_band |= WIRELESS_11G;
-
-		if (tx_ra_bitmap & 0x0f)
-			sta_band |= WIRELESS_11B;
-	}
-
-	psta->wireless_mode = sta_band;
-	psta->raid = networktype_to_raid_ex(padapter, psta);
-
-	if (psta->aid < NUM_STA) {
-		u8 arg[4] = {0};
-
-		arg[0] = psta->mac_id;
-		arg[1] = psta->raid;
-		arg[2] = short_gi_rate;
-		arg[3] = psta->init_rate;
-
-		rtw_hal_add_ra_tid(padapter, tx_ra_bitmap, arg, rssi_level);
-	}
-}
-
-void update_bmc_sta(struct adapter *padapter)
-{
-	unsigned char network_type;
-	unsigned int tx_ra_bitmap = 0;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex
-		*pcur_network = (struct wlan_bssid_ex *)&pmlmepriv->cur_network.network;
-	struct sta_info *psta = rtw_get_bcmc_stainfo(padapter);
-
-	if (psta) {
-		psta->aid = 0;/* default set to 0 */
-		psta->mac_id = psta->aid + 1;/* mac_id = 1 for bc/mc stainfo */
-
-		pmlmeinfo->FW_sta_info[psta->mac_id].psta = psta;
-
-		psta->qos_option = 0;
-		psta->htpriv.ht_option = false;
-
-		psta->ieee8021x_blocked = false;
-
-		memset(&psta->sta_stats, 0, sizeof(struct stainfo_stats));
-
-		/* prepare for add_ratid */
-		network_type = rtw_check_network_type((u8 *)&pcur_network->supported_rates,
-						      pcur_network->configuration.ds_config
-		);
-		if (is_supported_tx_cck(network_type)) {
-			network_type = WIRELESS_11B;
-		} else if (network_type == WIRELESS_INVALID) { /*  error handling */
-
-			if (pcur_network->configuration.ds_config > 14)
-				network_type = WIRELESS_INVALID;
-			else
-				network_type = WIRELESS_11B;
-		}
-		update_sta_basic_rate(psta, network_type);
-		psta->wireless_mode = network_type;
-
-		rtw_hal_update_sta_rate_mask(padapter, psta);
-		tx_ra_bitmap = psta->ra_mask;
-
-		psta->raid = networktype_to_raid_ex(padapter, psta);
-
-		/* ap mode */
-		rtw_hal_set_odm_var(padapter, HAL_ODM_STA_INFO, psta, true);
-
-		/* if (pHalData->fw_ractrl == true) */
-		{
-			u8 arg[4] = {0};
-
-			arg[0] = psta->mac_id;
-			arg[1] = psta->raid;
-			arg[2] = 0;
-			arg[3] = psta->init_rate;
-
-			rtw_hal_add_ra_tid(padapter, tx_ra_bitmap, arg, 0);
-		}
-
-		rtw_sta_media_status_rpt(padapter, psta, 1);
-
-		spin_lock_bh(&psta->lock);
-		psta->state = _FW_LINKED;
-		spin_unlock_bh(&psta->lock);
-	}
-}
-
-/* notes: */
-/* AID: 1~MAX for sta and 0 for bc/mc in ap/adhoc mode */
-/* MAC_ID = AID+1 for sta in ap/adhoc mode */
-/* MAC_ID = 1 for bc/mc for sta/ap/adhoc */
-/* MAC_ID = 0 for bssid for sta/ap/adhoc */
-/* CAM_ID = 0~3 for default key, cmd_id =macid + 3, macid =aid+1; */
-
-void update_sta_info_apmode(struct adapter *padapter, struct sta_info *psta)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct ht_priv *phtpriv_ap = &pmlmepriv->htpriv;
-	struct ht_priv *phtpriv_sta = &psta->htpriv;
-	u8 cur_ldpc_cap = 0, cur_stbc_cap = 0, cur_beamform_cap = 0;
-
-	/* ap mode */
-	rtw_hal_set_odm_var(padapter, HAL_ODM_STA_INFO, psta, true);
-
-	if (psecuritypriv->dot11_auth_algrthm == dot11_auth_algrthm_8021x)
-		psta->ieee8021x_blocked = true;
-	else
-		psta->ieee8021x_blocked = false;
-
-	/* update sta's cap */
-
-	/* ERP */
-	VCS_update(padapter, psta);
-
-	/* HT related cap */
-	if (phtpriv_sta->ht_option) {
-		/* check if sta supports rx ampdu */
-		phtpriv_sta->ampdu_enable = phtpriv_ap->ampdu_enable;
-
-		phtpriv_sta->rx_ampdu_min_spacing =
-			(phtpriv_sta->ht_cap.ampdu_params_info &
-			 IEEE80211_HT_CAP_AMPDU_DENSITY) >> 2;
-
-		/*  bwmode */
-		if ((phtpriv_sta->ht_cap.cap_info &
-		     phtpriv_ap->ht_cap.cap_info) &
-		    cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH))
-			psta->bw_mode = CHANNEL_WIDTH_40;
-		else
-			psta->bw_mode = CHANNEL_WIDTH_20;
-
-		if (pmlmeext->cur_bwmode < psta->bw_mode)
-			psta->bw_mode = pmlmeext->cur_bwmode;
-
-		phtpriv_sta->ch_offset = pmlmeext->cur_ch_offset;
-
-		/* check if sta support s Short GI 20M */
-		if ((phtpriv_sta->ht_cap.cap_info &
-		     phtpriv_ap->ht_cap.cap_info) &
-		    cpu_to_le16(IEEE80211_HT_CAP_SGI_20))
-			phtpriv_sta->sgi_20m = true;
-
-		/* check if sta support s Short GI 40M */
-		if ((phtpriv_sta->ht_cap.cap_info &
-		     phtpriv_ap->ht_cap.cap_info) &
-		    cpu_to_le16(IEEE80211_HT_CAP_SGI_40)) {
-			if (psta->bw_mode == CHANNEL_WIDTH_40) /* according to psta->bw_mode */
-				phtpriv_sta->sgi_40m = true;
-			else
-				phtpriv_sta->sgi_40m = false;
-		}
-
-		psta->qos_option = true;
-
-		/*  B0 Config LDPC Coding Capability */
-		if (TEST_FLAG(phtpriv_ap->ldpc_cap, LDPC_HT_ENABLE_TX) &&
-		    GET_HT_CAPABILITY_ELE_LDPC_CAP((u8 *)(&phtpriv_sta->ht_cap)))
-			SET_FLAG(cur_ldpc_cap, (LDPC_HT_ENABLE_TX | LDPC_HT_CAP_TX));
-
-		/*  B7 B8 B9 Config STBC setting */
-		if (TEST_FLAG(phtpriv_ap->stbc_cap, STBC_HT_ENABLE_TX) &&
-		    GET_HT_CAPABILITY_ELE_RX_STBC((u8 *)(&phtpriv_sta->ht_cap)))
-			SET_FLAG(cur_stbc_cap, (STBC_HT_ENABLE_TX | STBC_HT_CAP_TX));
-	} else {
-		phtpriv_sta->ampdu_enable = false;
-
-		phtpriv_sta->sgi_20m = false;
-		phtpriv_sta->sgi_40m = false;
-		psta->bw_mode = CHANNEL_WIDTH_20;
-		phtpriv_sta->ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
-	}
-
-	phtpriv_sta->ldpc_cap = cur_ldpc_cap;
-	phtpriv_sta->stbc_cap = cur_stbc_cap;
-	phtpriv_sta->beamform_cap = cur_beamform_cap;
-
-	/* Rx AMPDU */
-	send_delba(padapter, 0, psta->hwaddr);/*  recipient */
-
-	/* TX AMPDU */
-	send_delba(padapter, 1, psta->hwaddr);/* originator */
-	phtpriv_sta->agg_enable_bitmap = 0x0;/* reset */
-	phtpriv_sta->candidate_tid_bitmap = 0x0;/* reset */
-
-	update_ldpc_stbc_cap(psta);
-
-	/* todo: init other variables */
-
-	memset(&psta->sta_stats, 0, sizeof(struct stainfo_stats));
-
-	spin_lock_bh(&psta->lock);
-	psta->state |= _FW_LINKED;
-	spin_unlock_bh(&psta->lock);
-}
-
-static void update_ap_info(struct adapter *padapter, struct sta_info *psta)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct wlan_bssid_ex
-		*pnetwork = (struct wlan_bssid_ex *)&pmlmepriv->cur_network.network;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct ht_priv *phtpriv_ap = &pmlmepriv->htpriv;
-
-	psta->wireless_mode = pmlmeext->cur_wireless_mode;
-
-	psta->bssratelen = rtw_get_rateset_len(pnetwork->supported_rates);
-	memcpy(psta->bssrateset, pnetwork->supported_rates, psta->bssratelen);
-
-	/* HT related cap */
-	if (phtpriv_ap->ht_option) {
-		/* check if sta support s Short GI 20M */
-		if ((phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SGI_20))
-			phtpriv_ap->sgi_20m = true;
-
-		/* check if sta support s Short GI 40M */
-		if ((phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SGI_40))
-			phtpriv_ap->sgi_40m = true;
-
-		psta->qos_option = true;
-	} else {
-		phtpriv_ap->ampdu_enable = false;
-
-		phtpriv_ap->sgi_20m = false;
-		phtpriv_ap->sgi_40m = false;
-	}
-
-	psta->bw_mode = pmlmeext->cur_bwmode;
-	phtpriv_ap->ch_offset = pmlmeext->cur_ch_offset;
-
-	phtpriv_ap->agg_enable_bitmap = 0x0;/* reset */
-	phtpriv_ap->candidate_tid_bitmap = 0x0;/* reset */
-
-	memcpy(&psta->htpriv, &pmlmepriv->htpriv, sizeof(struct ht_priv));
-}
-
-static void update_hw_ht_param(struct adapter *padapter)
-{
-	unsigned char max_AMPDU_len;
-	unsigned char min_MPDU_spacing;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	/* handle A-MPDU parameter field
-	 *
-	 *	AMPDU_para [1:0]:Max AMPDU Len => 0:8k , 1:16k, 2:32k, 3:64k
-	 *	AMPDU_para [4:2]:Min MPDU Start Spacing
-	 */
-	max_AMPDU_len = pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x03;
-
-	min_MPDU_spacing = (pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c) >> 2;
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_AMPDU_MIN_SPACE, (u8 *)(&min_MPDU_spacing));
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_AMPDU_FACTOR, (u8 *)(&max_AMPDU_len));
-
-	/*  */
-	/*  Config SM Power Save setting */
-	/*  */
-	pmlmeinfo->SM_PS =
-		(le16_to_cpu(pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info) &
-		 0x0C) >> 2;
-}
-
-void start_bss_network(struct adapter *padapter)
-{
-	u8 *p;
-	u8 val8, cur_channel, cur_bwmode, cur_ch_offset;
-	u16 bcn_interval;
-	u32 acparm;
-	int	ie_len;
-	struct registry_priv  *pregpriv = &padapter->registrypriv;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	struct wlan_bssid_ex
-		*pnetwork = (struct wlan_bssid_ex *)&pmlmepriv->cur_network.network;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex *pnetwork_mlmeext = &pmlmeinfo->network;
-	struct HT_info_element *pht_info = NULL;
-	u8 cbw40_enable = 0;
-
-	bcn_interval = (u16)pnetwork->configuration.beacon_period;
-	cur_channel = pnetwork->configuration.ds_config;
-	cur_bwmode = CHANNEL_WIDTH_20;
-	cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
-
-	/*
-	 * check if there is wps ie,
-	 * if there is wpsie in beacon,
-	 * the hostapd will update beacon twice when stating hostapd,
-	 * and at first time the security ie (RSN/WPA IE) will not include in beacon.
-	 */
-	if (!rtw_get_wps_ie(pnetwork->ies + _FIXED_IE_LENGTH_,
-			    pnetwork->ie_length - _FIXED_IE_LENGTH_, NULL, NULL))
-		pmlmeext->bstart_bss = true;
-
-	/* todo: update wmm, ht cap */
-	if (pmlmepriv->qospriv.qos_option)
-		pmlmeinfo->WMM_enable = true;
-	if (pmlmepriv->htpriv.ht_option) {
-		pmlmeinfo->WMM_enable = true;
-		pmlmeinfo->HT_enable = true;
-		update_hw_ht_param(padapter);
-	}
-
-	if (!pmlmepriv->cur_network.join_res) { /* setting only at  first time */
-
-		/* WEP Key will be set before this function, do not clear CAM. */
-		if ((psecuritypriv->dot11_privacy_algrthm != _WEP40_) &&
-		    (psecuritypriv->dot11_privacy_algrthm != _WEP104_))
-			flush_all_cam_entry(padapter);	/* clear CAM */
-	}
-
-	/* set MSR to AP_Mode */
-	set_msr(padapter, _HW_STATE_AP_);
-
-	/* Set BSSID REG */
-	rtw_hal_set_hwreg(padapter, HW_VAR_BSSID, pnetwork->mac_address);
-
-	/* Set EDCA param reg */
-	acparm = 0x002F3217; /*  VO */
-	rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VO, (u8 *)(&acparm));
-	acparm = 0x005E4317; /*  VI */
-	rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VI, (u8 *)(&acparm));
-	acparm = 0x005ea42b;
-	rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BE, (u8 *)(&acparm));
-	acparm = 0x0000A444; /*  BK */
-	rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BK, (u8 *)(&acparm));
-
-	/* Set Security */
-	val8 = (psecuritypriv->dot11_auth_algrthm ==
-		dot11_auth_algrthm_8021x) ? 0xcc : 0xcf;
-	rtw_hal_set_hwreg(padapter, HW_VAR_SEC_CFG, (u8 *)(&val8));
-
-	/* Beacon Control related register */
-	rtw_hal_set_hwreg(padapter, HW_VAR_BEACON_INTERVAL, (u8 *)(&bcn_interval));
-
-	if (!pmlmepriv->cur_network.join_res) { /* setting only at  first time */
-		/* turn on all dynamic functions */
-		switch_dm_func(padapter, DYNAMIC_ALL_FUNC_ENABLE, true);
-	}
-
-	/* set channel, bwmode */
-	p = rtw_get_ie((pnetwork->ies + sizeof(struct ndis_802_11_fix_ie)),
-		       WLAN_EID_HT_OPERATION,
-		       &ie_len,
-		       (pnetwork->ie_length - sizeof(struct ndis_802_11_fix_ie))
-	);
-	if (p && ie_len) {
-		pht_info = (struct HT_info_element *)(p + 2);
-
-		if ((pregpriv->bw_mode & 0x0f) > 0)
-			cbw40_enable = 1;
-
-		if ((cbw40_enable) &&	 (pht_info->infos[0] & BIT(2))) {
-			/* switch to the 40M Hz mode */
-			cur_bwmode = CHANNEL_WIDTH_40;
-			switch (pht_info->infos[0] & 0x3) {
-			case 1:
-				cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER;
-				break;
-
-			case 3:
-				cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER;
-				break;
-
-			default:
-				cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
-				break;
-			}
-		}
-	}
-
-	set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode);
-	pmlmeext->cur_channel = cur_channel;
-	pmlmeext->cur_bwmode = cur_bwmode;
-	pmlmeext->cur_ch_offset = cur_ch_offset;
-	pmlmeext->cur_wireless_mode = pmlmepriv->cur_network.network_type;
-
-	/* let pnetwork_mlmeext == pnetwork_mlme. */
-	memcpy(pnetwork_mlmeext, pnetwork, pnetwork->length);
-
-	/* update cur_wireless_mode */
-	update_wireless_mode(padapter);
-
-	/* update RRSR after set channel and bandwidth */
-	update_basic_rate_table(padapter, pnetwork->supported_rates);
-	rtw_hal_set_hwreg(padapter, HW_VAR_BASIC_RATE, pnetwork->supported_rates);
-
-	/* update capability after cur_wireless_mode updated */
-	update_capinfo(padapter,
-		       rtw_get_capability((struct wlan_bssid_ex *)pnetwork));
-
-	if (pmlmeext->bstart_bss) {
-		update_beacon(padapter, WLAN_EID_TIM, true);
-
-		/* issue beacon frame */
-		send_beacon(padapter);
-	}
-
-	/* update bc/mc sta_info */
-	update_bmc_sta(padapter);
-}
-
-int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf,  int len)
-{
-	int ret = _SUCCESS;
-	u8 *p;
-	u8 *ht_caps_ie = NULL;
-	u8 *ht_info_ie = NULL;
-	struct sta_info *psta = NULL;
-	u16 cap, ht_cap = false;
-	unsigned int ie_len = 0;
-	int group_cipher, pairwise_cipher;
-	u8 channel, network_type, support_rate[NDIS_802_11_LENGTH_RATES_EX];
-	int support_rate_num = 0;
-	u8 OUI1[] = {0x00, 0x50, 0xf2, 0x01};
-	u8 WMM_PARA_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x01, 0x01};
-	struct registry_priv *pregistrypriv = &padapter->registrypriv;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct wlan_bssid_ex
-		*pbss_network = (struct wlan_bssid_ex *)&pmlmepriv->cur_network.network;
-	u8 *ie = pbss_network->ies;
-
-	if (!check_fwstate(pmlmepriv, WIFI_AP_STATE))
-		return _FAIL;
-
-	if (len < 0 || len > MAX_IE_SZ)
-		return _FAIL;
-
-	pbss_network->ie_length = len;
-
-	memset(ie, 0, MAX_IE_SZ);
-
-	memcpy(ie, pbuf, pbss_network->ie_length);
-
-	if (pbss_network->infrastructure_mode != NL80211_IFTYPE_AP)
-		return _FAIL;
-
-	pbss_network->rssi = 0;
-
-	memcpy(pbss_network->mac_address, myid(&padapter->eeprompriv), ETH_ALEN);
-
-	/* beacon interval */
-	/* ie + 8;	8: TimeStamp, 2: Beacon Interval 2:Capability */
-	p = rtw_get_beacon_interval_from_ie(ie);
-	pbss_network->configuration.beacon_period = get_unaligned_le16(p);
-
-	/* capability */
-	cap = get_unaligned_le16(ie);
-
-	/* SSID */
-	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_,
-		       WLAN_EID_SSID,
-		       &ie_len,
-		       (pbss_network->ie_length - _BEACON_IE_OFFSET_));
-	if (p && ie_len > 0) {
-		memset(&pbss_network->ssid, 0, sizeof(struct ndis_802_11_ssid));
-		memcpy(pbss_network->ssid.ssid, (p + 2), ie_len);
-		pbss_network->ssid.ssid_length = ie_len;
-	}
-
-	/* channel */
-	channel = 0;
-	pbss_network->configuration.length = 0;
-	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_,
-		       WLAN_EID_DS_PARAMS, &ie_len,
-		       (pbss_network->ie_length - _BEACON_IE_OFFSET_));
-	if (p && ie_len > 0)
-		channel = *(p + 2);
-
-	pbss_network->configuration.ds_config = channel;
-
-	memset(support_rate, 0, NDIS_802_11_LENGTH_RATES_EX);
-	/*  get supported rates */
-	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_,
-		       WLAN_EID_SUPP_RATES,
-		       &ie_len,
-		       (pbss_network->ie_length - _BEACON_IE_OFFSET_));
-	if (p) {
-		memcpy(support_rate, p + 2, ie_len);
-		support_rate_num = ie_len;
-	}
-
-	/* get ext_supported rates */
-	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_,
-		       WLAN_EID_EXT_SUPP_RATES,
-		       &ie_len,
-		       pbss_network->ie_length - _BEACON_IE_OFFSET_);
-	if (p)
-		memcpy(support_rate + support_rate_num, p + 2, ie_len);
-
-	network_type = rtw_check_network_type(support_rate, channel);
-
-	rtw_set_supported_rate(pbss_network->supported_rates, network_type);
-
-	/* parsing ERP_IE */
-	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_,
-		       WLAN_EID_ERP_INFO,
-		       &ie_len,
-		       (pbss_network->ie_length - _BEACON_IE_OFFSET_));
-	if (p && ie_len > 0)
-		ERP_IE_handler(padapter, (struct ndis_80211_var_ie *)p);
-
-	/* update privacy/security */
-	if (cap & BIT(4))
-		pbss_network->privacy = 1;
-	else
-		pbss_network->privacy = 0;
-
-	psecuritypriv->wpa_psk = 0;
-
-	/* wpa2 */
-	group_cipher = 0; pairwise_cipher = 0;
-	psecuritypriv->wpa2_group_cipher = _NO_PRIVACY_;
-	psecuritypriv->wpa2_pairwise_cipher = _NO_PRIVACY_;
-	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_,
-		       WLAN_EID_RSN,
-		       &ie_len,
-		       (pbss_network->ie_length - _BEACON_IE_OFFSET_));
-	if (p && ie_len > 0) {
-		if (rtw_parse_wpa2_ie(p,
-				      ie_len + 2,
-				      &group_cipher,
-				      &pairwise_cipher,
-				      NULL) == _SUCCESS) {
-			psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_8021x;
-
-			psecuritypriv->dot8021xalg = 1;/* psk,  todo:802.1x */
-			psecuritypriv->wpa_psk |= BIT(1);
-
-			psecuritypriv->wpa2_group_cipher = group_cipher;
-			psecuritypriv->wpa2_pairwise_cipher = pairwise_cipher;
-		}
-	}
-
-	/* wpa */
-	ie_len = 0;
-	group_cipher = 0; pairwise_cipher = 0;
-	psecuritypriv->wpa_group_cipher = _NO_PRIVACY_;
-	psecuritypriv->wpa_pairwise_cipher = _NO_PRIVACY_;
-	for (p = ie + _BEACON_IE_OFFSET_; ; p += (ie_len + 2)) {
-		p = rtw_get_ie(p,
-			       WLAN_EID_VENDOR_SPECIFIC,
-			       &ie_len,
-			       (pbss_network->ie_length - _BEACON_IE_OFFSET_ - (ie_len + 2)));
-		if ((p) && (!memcmp(p + 2, OUI1, 4))) {
-			if (rtw_parse_wpa_ie(p,
-					     ie_len + 2,
-					     &group_cipher,
-					     &pairwise_cipher,
-					     NULL) == _SUCCESS) {
-				psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_8021x;
-
-				psecuritypriv->dot8021xalg = 1;/* psk,  todo:802.1x */
-
-				psecuritypriv->wpa_psk |= BIT(0);
-
-				psecuritypriv->wpa_group_cipher = group_cipher;
-				psecuritypriv->wpa_pairwise_cipher = pairwise_cipher;
-			}
-
-			break;
-		}
-
-		if (!p || ie_len == 0)
-			break;
-	}
-
-	/* wmm */
-	ie_len = 0;
-	pmlmepriv->qospriv.qos_option = 0;
-	if (pregistrypriv->wmm_enable) {
-		for (p = ie + _BEACON_IE_OFFSET_; ; p += (ie_len + 2)) {
-			p = rtw_get_ie(p,
-				       WLAN_EID_VENDOR_SPECIFIC,
-				       &ie_len,
-				       (pbss_network->ie_length -
-					_BEACON_IE_OFFSET_ - (ie_len + 2)));
-			if ((p) && !memcmp(p + 2, WMM_PARA_IE, 6)) {
-				pmlmepriv->qospriv.qos_option = 1;
-
-				*(p + 8) |= BIT(7);/* QoS Info, support U-APSD */
-
-				/* disable all ACM bits since the WMM admission */
-				/* control is not supported */
-				*(p + 10) &= ~BIT(4); /* BE */
-				*(p + 14) &= ~BIT(4); /* BK */
-				*(p + 18) &= ~BIT(4); /* VI */
-				*(p + 22) &= ~BIT(4); /* VO */
-
-				break;
-			}
-
-			if (!p || ie_len == 0)
-				break;
-		}
-	}
-
-	/* parsing HT_CAP_IE */
-	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_,
-		       WLAN_EID_HT_CAPABILITY,
-		       &ie_len,
-		       (pbss_network->ie_length - _BEACON_IE_OFFSET_));
-	if (p && ie_len > 0) {
-		u8 max_rx_ampdu_factor = 0;
-		struct ieee80211_ht_cap *pht_cap = (struct ieee80211_ht_cap *)(p + 2);
-
-		ht_caps_ie = p;
-
-		ht_cap = true;
-		network_type |= WIRELESS_11_24N;
-
-		rtw_ht_use_default_setting(padapter);
-
-		if (!pmlmepriv->htpriv.sgi_20m)
-			pht_cap->cap_info &= cpu_to_le16(~(IEEE80211_HT_CAP_SGI_20));
-
-		if (!pmlmepriv->htpriv.sgi_40m)
-			pht_cap->cap_info &= cpu_to_le16(~(IEEE80211_HT_CAP_SGI_40));
-
-		if (!TEST_FLAG(pmlmepriv->htpriv.ldpc_cap, LDPC_HT_ENABLE_RX))
-			pht_cap->cap_info &= cpu_to_le16(~(IEEE80211_HT_CAP_LDPC_CODING));
-
-		if (!TEST_FLAG(pmlmepriv->htpriv.stbc_cap, STBC_HT_ENABLE_TX))
-			pht_cap->cap_info &= cpu_to_le16(~(IEEE80211_HT_CAP_TX_STBC));
-
-		if (!TEST_FLAG(pmlmepriv->htpriv.stbc_cap, STBC_HT_ENABLE_RX))
-			pht_cap->cap_info &= cpu_to_le16(~(IEEE80211_HT_CAP_RX_STBC_3R));
-
-		pht_cap->ampdu_params_info &= ~(IEEE80211_HT_CAP_AMPDU_FACTOR |
-						IEEE80211_HT_CAP_AMPDU_DENSITY);
-
-		if ((psecuritypriv->wpa_pairwise_cipher & WPA_CIPHER_CCMP) ||
-		    (psecuritypriv->wpa2_pairwise_cipher & WPA_CIPHER_CCMP)) {
-			pht_cap->ampdu_params_info |= (IEEE80211_HT_CAP_AMPDU_DENSITY &
-						       (0x07 << 2));
-		} else {
-			pht_cap->ampdu_params_info |= (IEEE80211_HT_CAP_AMPDU_DENSITY &
-						       0x00);
-		}
-
-		rtw_hal_get_def_var(padapter,
-				    HW_VAR_MAX_RX_AMPDU_FACTOR,
-				    &max_rx_ampdu_factor);
-		/* set Max Rx AMPDU size to 64K */
-		pht_cap->ampdu_params_info |= (IEEE80211_HT_CAP_AMPDU_FACTOR &
-					       max_rx_ampdu_factor);
-
-		pht_cap->mcs.rx_mask[0] = 0xff;
-		pht_cap->mcs.rx_mask[1] = 0x0;
-
-		memcpy(&pmlmepriv->htpriv.ht_cap, p + 2, ie_len);
-	}
-
-	/* parsing HT_INFO_IE */
-	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_,
-		       WLAN_EID_HT_OPERATION,
-		       &ie_len,
-		       (pbss_network->ie_length - _BEACON_IE_OFFSET_));
-	if (p && ie_len > 0)
-		ht_info_ie = p;
-
-	pmlmepriv->cur_network.network_type = network_type;
-
-	pmlmepriv->htpriv.ht_option = false;
-
-	/* ht_cap */
-	if (pregistrypriv->ht_enable && ht_cap) {
-		pmlmepriv->htpriv.ht_option = true;
-		pmlmepriv->qospriv.qos_option = 1;
-
-		if (pregistrypriv->ampdu_enable == 1)
-			pmlmepriv->htpriv.ampdu_enable = true;
-
-		HT_caps_handler(padapter, (struct ndis_80211_var_ie *)ht_caps_ie);
-
-		HT_info_handler(padapter, (struct ndis_80211_var_ie *)ht_info_ie);
-	}
-
-	pbss_network->length =
-		get_wlan_bssid_ex_sz((struct wlan_bssid_ex *)pbss_network);
-
-	/* issue beacon to start bss network */
-	rtw_startbss_cmd(padapter, RTW_CMDF_WAIT_ACK);
-
-	/* alloc sta_info for ap itself */
-	psta = rtw_get_stainfo(&padapter->stapriv, pbss_network->mac_address);
-	if (!psta) {
-		psta = rtw_alloc_stainfo(&padapter->stapriv, pbss_network->mac_address);
-		if (!psta)
-			return _FAIL;
-	}
-
-	/*  update AP's sta info */
-	update_ap_info(padapter, psta);
-
-	psta->state |= WIFI_AP_STATE;
-	rtw_indicate_connect(padapter);
-
-	pmlmepriv->cur_network.join_res = true;/* for check if already set beacon */
-
-	return ret;
-}
-
-void rtw_set_macaddr_acl(struct adapter *padapter, int mode)
-{
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;
-
-	pacl_list->mode = mode;
-}
-
-int rtw_acl_add_sta(struct adapter *padapter, u8 *addr)
-{
-	struct list_head	*plist, *phead;
-	u8 added = false;
-	int i, ret = 0;
-	struct rtw_wlan_acl_node *paclnode;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;
-	struct __queue	*pacl_node_q = &pacl_list->acl_node_q;
-
-	if ((NUM_ACL - 1) < pacl_list->num)
-		return (-1);
-
-	spin_lock_bh(&pacl_node_q->lock);
-
-	phead = get_list_head(pacl_node_q);
-	list_for_each(plist, phead) {
-		paclnode = list_entry(plist, struct rtw_wlan_acl_node, list);
-
-		if (!memcmp(paclnode->addr, addr, ETH_ALEN)) {
-			if (paclnode->valid) {
-				added = true;
-				break;
-			}
-		}
-	}
-
-	spin_unlock_bh(&pacl_node_q->lock);
-
-	if (added)
-		return ret;
-
-	spin_lock_bh(&pacl_node_q->lock);
-
-	for (i = 0; i < NUM_ACL; i++) {
-		paclnode = &pacl_list->aclnode[i];
-
-		if (!paclnode->valid) {
-			INIT_LIST_HEAD(&paclnode->list);
-
-			memcpy(paclnode->addr, addr, ETH_ALEN);
-
-			paclnode->valid = true;
-
-			list_add_tail(&paclnode->list, get_list_head(pacl_node_q));
-
-			pacl_list->num++;
-
-			break;
-		}
-	}
-
-	spin_unlock_bh(&pacl_node_q->lock);
-
-	return ret;
-}
-
-void rtw_acl_remove_sta(struct adapter *padapter, u8 *addr)
-{
-	struct list_head *plist, *phead, *tmp;
-	struct rtw_wlan_acl_node *paclnode;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;
-	struct __queue	*pacl_node_q = &pacl_list->acl_node_q;
-
-	spin_lock_bh(&pacl_node_q->lock);
-
-	phead = get_list_head(pacl_node_q);
-	list_for_each_safe(plist, tmp, phead) {
-		paclnode = list_entry(plist, struct rtw_wlan_acl_node, list);
-
-		if (!memcmp(paclnode->addr, addr, ETH_ALEN) ||
-		    is_broadcast_ether_addr(addr)) {
-			if (paclnode->valid) {
-				paclnode->valid = false;
-
-				list_del_init(&paclnode->list);
-
-				pacl_list->num--;
-			}
-		}
-	}
-
-	spin_unlock_bh(&pacl_node_q->lock);
-}
-
-u8 rtw_ap_set_pairwise_key(struct adapter *padapter, struct sta_info *psta)
-{
-	struct cmd_obj *ph2c;
-	struct set_stakey_parm	*psetstakey_para;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	u8 res = _SUCCESS;
-
-	ph2c = kzalloc_obj(*ph2c);
-	if (!ph2c) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	psetstakey_para = kzalloc_obj(*psetstakey_para);
-	if (!psetstakey_para) {
-		kfree(ph2c);
-		res = _FAIL;
-		goto exit;
-	}
-
-	init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, SET_STA_KEY_CMD);
-
-	psetstakey_para->algorithm = (u8)psta->dot118021XPrivacy;
-
-	memcpy(psetstakey_para->addr, psta->hwaddr, ETH_ALEN);
-
-	memcpy(psetstakey_para->key, &psta->dot118021x_UncstKey, 16);
-
-	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-
-exit:
-
-	return res;
-}
-
-static int rtw_ap_set_key(struct adapter *padapter,
-			  u8 *key,
-			  u8 alg,
-			  int keyid,
-			  u8 set_tx)
-{
-	u8 keylen;
-	struct cmd_obj *pcmd;
-	struct setkey_parm *psetkeyparm;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	int res = _SUCCESS;
-
-	pcmd = kzalloc_obj(*pcmd);
-	if (!pcmd) {
-		res = _FAIL;
-		goto exit;
-	}
-	psetkeyparm = kzalloc_obj(*psetkeyparm);
-	if (!psetkeyparm) {
-		kfree(pcmd);
-		res = _FAIL;
-		goto exit;
-	}
-
-	psetkeyparm->keyid = (u8)keyid;
-	if (is_wep_enc(alg))
-		padapter->securitypriv.key_mask |= BIT(psetkeyparm->keyid);
-
-	psetkeyparm->algorithm = alg;
-
-	psetkeyparm->set_tx = set_tx;
-
-	switch (alg) {
-	case _WEP40_:
-		keylen = 5;
-		break;
-	case _WEP104_:
-		keylen = 13;
-		break;
-	case _TKIP_:
-	case _TKIP_WTMIC_:
-	case _AES_:
-	default:
-		keylen = 16;
-	}
-
-	memcpy(&psetkeyparm->key[0], key, keylen);
-
-	pcmd->cmdcode = SET_KEY_CMD;
-	pcmd->parmbuf = (u8 *)psetkeyparm;
-	pcmd->cmdsz =  (sizeof(struct setkey_parm));
-	pcmd->rsp = NULL;
-	pcmd->rspsz = 0;
-
-	INIT_LIST_HEAD(&pcmd->list);
-
-	res = rtw_enqueue_cmd(pcmdpriv, pcmd);
-
-exit:
-
-	return res;
-}
-
-int rtw_ap_set_group_key(struct adapter *padapter, u8 *key, u8 alg, int keyid)
-{
-	return rtw_ap_set_key(padapter, key, alg, keyid, 1);
-}
-
-int rtw_ap_set_wep_key(struct adapter *padapter,
-		       u8 *key,
-		       u8 keylen,
-		       int keyid,
-		       u8 set_tx)
-{
-	u8 alg;
-
-	switch (keylen) {
-	case 5:
-		alg = _WEP40_;
-		break;
-	case 13:
-		alg = _WEP104_;
-		break;
-	default:
-		alg = _NO_PRIVACY_;
-	}
-
-	return rtw_ap_set_key(padapter, key, alg, keyid, set_tx);
-}
-
-static void update_bcn_fixed_ie(struct adapter *padapter)
-{
-}
-
-static void update_bcn_erpinfo_ie(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network;
-	unsigned char *p, *ie = pnetwork->ies;
-	u32 len = 0;
-
-	if (!pmlmeinfo->ERP_enable)
-		return;
-
-	/* parsing ERP_IE */
-	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_,
-		       WLAN_EID_ERP_INFO,
-		       &len,
-		       (pnetwork->ie_length - _BEACON_IE_OFFSET_));
-	if (p && len > 0) {
-		struct ndis_80211_var_ie *erp_ie = (struct ndis_80211_var_ie *)p;
-
-		if (pmlmepriv->num_sta_non_erp == 1)
-			erp_ie->data[0] |= RTW_ERP_INFO_NON_ERP_PRESENT |
-					    RTW_ERP_INFO_USE_PROTECTION;
-		else
-			erp_ie->data[0] &= ~(RTW_ERP_INFO_NON_ERP_PRESENT |
-					      RTW_ERP_INFO_USE_PROTECTION);
-
-		if (pmlmepriv->num_sta_no_short_preamble > 0)
-			erp_ie->data[0] |= RTW_ERP_INFO_BARKER_PREAMBLE_MODE;
-		else
-			erp_ie->data[0] &= ~(RTW_ERP_INFO_BARKER_PREAMBLE_MODE);
-
-		ERP_IE_handler(padapter, erp_ie);
-	}
-}
-
-static void update_bcn_htcap_ie(struct adapter *padapter)
-{
-}
-
-static void update_bcn_htinfo_ie(struct adapter *padapter)
-{
-}
-
-static void update_bcn_rsn_ie(struct adapter *padapter)
-{
-}
-
-void update_beacon(struct adapter *padapter, u8 ie_id, u8 tx)
-{
-	struct mlme_priv *pmlmepriv;
-	struct mlme_ext_priv *pmlmeext;
-
-	if (!padapter)
-		return;
-
-	pmlmepriv = &padapter->mlmepriv;
-	pmlmeext = &padapter->mlmeextpriv;
-
-	if (!pmlmeext->bstart_bss)
-		return;
-
-	spin_lock_bh(&pmlmepriv->bcn_update_lock);
-
-	switch (ie_id) {
-	case 0xFF:
-
-		update_bcn_fixed_ie(padapter);/* 8: TimeStamp, 2: Beacon Interval 2:Capability */
-
-		break;
-
-	case WLAN_EID_TIM:
-
-		update_BCNTIM(padapter);
-
-		break;
-
-	case WLAN_EID_ERP_INFO:
-
-		update_bcn_erpinfo_ie(padapter);
-
-		break;
-
-	case WLAN_EID_HT_CAPABILITY:
-
-		update_bcn_htcap_ie(padapter);
-
-		break;
-
-	case WLAN_EID_RSN:
-
-		update_bcn_rsn_ie(padapter);
-
-		break;
-
-	case WLAN_EID_HT_OPERATION:
-
-		update_bcn_htinfo_ie(padapter);
-
-		break;
-
-	default:
-		break;
-	}
-
-	pmlmepriv->update_bcn = true;
-
-	spin_unlock_bh(&pmlmepriv->bcn_update_lock);
-
-	if (tx)
-		set_tx_beacon_cmd(padapter);
-}
-
-/*
- * op_mode
- * Set to 0 (HT pure) under the following conditions
- *	  - all STAs in the BSS are 20/40 MHz HT in 20/40 MHz BSS or
- *	  - all STAs in the BSS are 20 MHz HT in 20 MHz BSS
- * Set to 1 (HT non-member protection) if there may be non-HT STAs
- *	  in both the primary and the secondary channel
- * Set to 2 if only HT STAs are associated in BSS,
- *	  however and at least one 20 MHz HT STA is associated
- * Set to 3 (HT mixed mode) when one or more non-HT STAs are associated
- *	  (currently non-GF HT station is considered as non-HT STA also)
- */
-static int rtw_ht_operation_update(struct adapter *padapter)
-{
-	u16 cur_op_mode, new_op_mode;
-	int op_mode_changes = 0;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct ht_priv *phtpriv_ap = &pmlmepriv->htpriv;
-
-	if (pmlmepriv->htpriv.ht_option)
-		return 0;
-
-	if (!(pmlmepriv->ht_op_mode & IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT) &&
-	    pmlmepriv->num_sta_ht_no_gf) {
-		pmlmepriv->ht_op_mode |=
-			IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT;
-		op_mode_changes++;
-	} else if ((pmlmepriv->ht_op_mode &
-		    IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT) &&
-		   pmlmepriv->num_sta_ht_no_gf == 0) {
-		pmlmepriv->ht_op_mode &=
-			~IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT;
-		op_mode_changes++;
-	}
-
-	if (!(pmlmepriv->ht_op_mode & IEEE80211_HT_OP_MODE_NON_HT_STA_PRSNT) &&
-	    (pmlmepriv->num_sta_no_ht || pmlmepriv->olbc_ht)) {
-		pmlmepriv->ht_op_mode |= IEEE80211_HT_OP_MODE_NON_HT_STA_PRSNT;
-		op_mode_changes++;
-	} else if ((pmlmepriv->ht_op_mode &
-		    IEEE80211_HT_OP_MODE_NON_HT_STA_PRSNT) &&
-		   (pmlmepriv->num_sta_no_ht == 0 && !pmlmepriv->olbc_ht)) {
-		pmlmepriv->ht_op_mode &=
-			~IEEE80211_HT_OP_MODE_NON_HT_STA_PRSNT;
-		op_mode_changes++;
-	}
-
-	/* Note: currently we switch to the MIXED op mode if HT non-greenfield
-	 * station is associated. Probably it's a theoretical case, since
-	 * it looks like all known HT STAs support greenfield.
-	 */
-	new_op_mode = 0;
-	if (pmlmepriv->num_sta_no_ht ||
-	    (pmlmepriv->ht_op_mode & IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT))
-		new_op_mode = IEEE80211_HT_OP_MODE_PROTECTION_NONHT_MIXED;
-	else if ((le16_to_cpu(phtpriv_ap->ht_cap.cap_info) &
-		  IEEE80211_HT_CAP_SUP_WIDTH) &&
-		 pmlmepriv->num_sta_ht_20mhz)
-		new_op_mode = IEEE80211_HT_OP_MODE_PROTECTION_20MHZ;
-	else if (pmlmepriv->olbc_ht)
-		new_op_mode = IEEE80211_HT_OP_MODE_PROTECTION_NONMEMBER;
-	else
-		new_op_mode = IEEE80211_HT_OP_MODE_PROTECTION_NONE;
-
-	cur_op_mode = pmlmepriv->ht_op_mode & IEEE80211_HT_OP_MODE_PROTECTION;
-	if (cur_op_mode != new_op_mode) {
-		pmlmepriv->ht_op_mode &= ~IEEE80211_HT_OP_MODE_PROTECTION;
-		pmlmepriv->ht_op_mode |= new_op_mode;
-		op_mode_changes++;
-	}
-
-	return op_mode_changes;
-}
-
-void associated_clients_update(struct adapter *padapter, u8 updated)
-{
-	/* update associated stations cap. */
-	if (updated) {
-		struct list_head	*phead, *plist;
-		struct sta_info *psta = NULL;
-		struct sta_priv *pstapriv = &padapter->stapriv;
-
-		spin_lock_bh(&pstapriv->asoc_list_lock);
-
-		phead = &pstapriv->asoc_list;
-		/* check asoc_queue */
-		list_for_each(plist, phead) {
-			psta = list_entry(plist, struct sta_info, asoc_list);
-
-			VCS_update(padapter, psta);
-		}
-
-		spin_unlock_bh(&pstapriv->asoc_list_lock);
-	}
-}
-
-/* called > TSR LEVEL for USB or SDIO Interface*/
-void bss_cap_update_on_sta_join(struct adapter *padapter, struct sta_info *psta)
-{
-	u8 beacon_updated = false;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-	if (!(psta->flags & WLAN_STA_SHORT_PREAMBLE)) {
-		if (!psta->no_short_preamble_set) {
-			psta->no_short_preamble_set = 1;
-
-			pmlmepriv->num_sta_no_short_preamble++;
-
-			if ((pmlmeext->cur_wireless_mode > WIRELESS_11B) &&
-			    (pmlmepriv->num_sta_no_short_preamble == 1)) {
-				beacon_updated = true;
-				update_beacon(padapter, 0xFF, true);
-			}
-		}
-	} else {
-		if (psta->no_short_preamble_set) {
-			psta->no_short_preamble_set = 0;
-
-			pmlmepriv->num_sta_no_short_preamble--;
-
-			if ((pmlmeext->cur_wireless_mode > WIRELESS_11B) &&
-			    (pmlmepriv->num_sta_no_short_preamble == 0)) {
-				beacon_updated = true;
-				update_beacon(padapter, 0xFF, true);
-			}
-		}
-	}
-
-	if (psta->flags & WLAN_STA_NONERP) {
-		if (!psta->nonerp_set) {
-			psta->nonerp_set = 1;
-
-			pmlmepriv->num_sta_non_erp++;
-
-			if (pmlmepriv->num_sta_non_erp == 1) {
-				beacon_updated = true;
-				update_beacon(padapter, WLAN_EID_ERP_INFO, true);
-			}
-		}
-	} else {
-		if (psta->nonerp_set) {
-			psta->nonerp_set = 0;
-
-			pmlmepriv->num_sta_non_erp--;
-
-			if (pmlmepriv->num_sta_non_erp == 0) {
-				beacon_updated = true;
-				update_beacon(padapter, WLAN_EID_ERP_INFO, true);
-			}
-		}
-	}
-
-	if (!(psta->capability & WLAN_CAPABILITY_SHORT_SLOT_TIME)) {
-		if (!psta->no_short_slot_time_set) {
-			psta->no_short_slot_time_set = 1;
-
-			pmlmepriv->num_sta_no_short_slot_time++;
-
-			if ((pmlmeext->cur_wireless_mode > WIRELESS_11B) &&
-			    (pmlmepriv->num_sta_no_short_slot_time == 1)) {
-				beacon_updated = true;
-				update_beacon(padapter, 0xFF, true);
-			}
-		}
-	} else {
-		if (psta->no_short_slot_time_set) {
-			psta->no_short_slot_time_set = 0;
-
-			pmlmepriv->num_sta_no_short_slot_time--;
-
-			if ((pmlmeext->cur_wireless_mode > WIRELESS_11B) &&
-			    (pmlmepriv->num_sta_no_short_slot_time == 0)) {
-				beacon_updated = true;
-				update_beacon(padapter, 0xFF, true);
-			}
-		}
-	}
-
-	if (psta->flags & WLAN_STA_HT) {
-		u16 ht_capab = le16_to_cpu(psta->htpriv.ht_cap.cap_info);
-
-		if (psta->no_ht_set) {
-			psta->no_ht_set = 0;
-			pmlmepriv->num_sta_no_ht--;
-		}
-
-		if ((ht_capab & IEEE80211_HT_CAP_GRN_FLD) == 0) {
-			if (!psta->no_ht_gf_set) {
-				psta->no_ht_gf_set = 1;
-				pmlmepriv->num_sta_ht_no_gf++;
-			}
-		}
-
-		if ((ht_capab & IEEE80211_HT_CAP_SUP_WIDTH) == 0) {
-			if (!psta->ht_20mhz_set) {
-				psta->ht_20mhz_set = 1;
-				pmlmepriv->num_sta_ht_20mhz++;
-			}
-		}
-
-	} else {
-		if (!psta->no_ht_set) {
-			psta->no_ht_set = 1;
-			pmlmepriv->num_sta_no_ht++;
-		}
-	}
-
-	if (rtw_ht_operation_update(padapter) > 0) {
-		update_beacon(padapter, WLAN_EID_HT_CAPABILITY, false);
-		update_beacon(padapter, WLAN_EID_HT_OPERATION, true);
-	}
-
-	/* update associated stations cap. */
-	associated_clients_update(padapter,  beacon_updated);
-}
-
-u8 bss_cap_update_on_sta_leave(struct adapter *padapter, struct sta_info *psta)
-{
-	u8 beacon_updated = false;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-	if (!psta)
-		return beacon_updated;
-
-	if (psta->no_short_preamble_set) {
-		psta->no_short_preamble_set = 0;
-		pmlmepriv->num_sta_no_short_preamble--;
-		if (pmlmeext->cur_wireless_mode > WIRELESS_11B &&
-		    pmlmepriv->num_sta_no_short_preamble == 0){
-			beacon_updated = true;
-			update_beacon(padapter, 0xFF, true);
-		}
-	}
-
-	if (psta->nonerp_set) {
-		psta->nonerp_set = 0;
-		pmlmepriv->num_sta_non_erp--;
-		if (pmlmepriv->num_sta_non_erp == 0) {
-			beacon_updated = true;
-			update_beacon(padapter, WLAN_EID_ERP_INFO, true);
-		}
-	}
-
-	if (psta->no_short_slot_time_set) {
-		psta->no_short_slot_time_set = 0;
-		pmlmepriv->num_sta_no_short_slot_time--;
-		if (pmlmeext->cur_wireless_mode > WIRELESS_11B &&
-		    pmlmepriv->num_sta_no_short_slot_time == 0){
-			beacon_updated = true;
-			update_beacon(padapter, 0xFF, true);
-		}
-	}
-
-	if (psta->no_ht_gf_set) {
-		psta->no_ht_gf_set = 0;
-		pmlmepriv->num_sta_ht_no_gf--;
-	}
-
-	if (psta->no_ht_set) {
-		psta->no_ht_set = 0;
-		pmlmepriv->num_sta_no_ht--;
-	}
-
-	if (psta->ht_20mhz_set) {
-		psta->ht_20mhz_set = 0;
-		pmlmepriv->num_sta_ht_20mhz--;
-	}
-
-	if (rtw_ht_operation_update(padapter) > 0) {
-		update_beacon(padapter, WLAN_EID_HT_CAPABILITY, false);
-		update_beacon(padapter, WLAN_EID_HT_OPERATION, true);
-	}
-
-	return beacon_updated;
-}
-
-u8 ap_free_sta(struct adapter *padapter,
-	       struct sta_info *psta,
-	       bool active,
-	       u16 reason)
-{
-	u8 beacon_updated = false;
-
-	if (!psta)
-		return beacon_updated;
-
-	if (active) {
-		/* tear down Rx AMPDU */
-		send_delba(padapter, 0, psta->hwaddr);/*  recipient */
-
-		/* tear down TX AMPDU */
-		send_delba(padapter, 1, psta->hwaddr);/*  // originator */
-
-		issue_deauth(padapter, psta->hwaddr, reason);
-	}
-
-	psta->htpriv.agg_enable_bitmap = 0x0;/* reset */
-	psta->htpriv.candidate_tid_bitmap = 0x0;/* reset */
-
-	/* clear cam entry / key */
-	rtw_clearstakey_cmd(padapter, psta, true);
-
-	spin_lock_bh(&psta->lock);
-	psta->state &= ~_FW_LINKED;
-	spin_unlock_bh(&psta->lock);
-
-	rtw_cfg80211_indicate_sta_disassoc(padapter, psta->hwaddr, reason);
-
-	report_del_sta_event(padapter, psta->hwaddr, reason);
-
-	beacon_updated = bss_cap_update_on_sta_leave(padapter, psta);
-
-	rtw_free_stainfo(padapter, psta);
-
-	return beacon_updated;
-}
-
-void rtw_sta_flush(struct adapter *padapter)
-{
-	struct list_head *phead, *plist, *tmp;
-	struct sta_info *psta = NULL;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-
-	if ((pmlmeinfo->state & 0x03) != WIFI_FW_AP_STATE)
-		return;
-
-	spin_lock_bh(&pstapriv->asoc_list_lock);
-	phead = &pstapriv->asoc_list;
-	/* free sta asoc_queue */
-	list_for_each_safe(plist, tmp, phead) {
-		psta = list_entry(plist, struct sta_info, asoc_list);
-
-		list_del_init(&psta->asoc_list);
-		pstapriv->asoc_list_cnt--;
-
-		ap_free_sta(padapter, psta, true, WLAN_REASON_DEAUTH_LEAVING);
-	}
-	spin_unlock_bh(&pstapriv->asoc_list_lock);
-
-	issue_deauth(padapter, bc_addr, WLAN_REASON_DEAUTH_LEAVING);
-
-	associated_clients_update(padapter, true);
-}
-
-/* called > TSR LEVEL for USB or SDIO Interface*/
-void sta_info_update(struct adapter *padapter, struct sta_info *psta)
-{
-	int flags = psta->flags;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	/* update wmm cap. */
-	if (WLAN_STA_WME & flags)
-		psta->qos_option = 1;
-	else
-		psta->qos_option = 0;
-
-	if (pmlmepriv->qospriv.qos_option == 0)
-		psta->qos_option = 0;
-
-	/* update 802.11n ht cap. */
-	if (WLAN_STA_HT & flags) {
-		psta->htpriv.ht_option = true;
-		psta->qos_option = 1;
-	} else {
-		psta->htpriv.ht_option = false;
-	}
-
-	if (!pmlmepriv->htpriv.ht_option)
-		psta->htpriv.ht_option = false;
-
-	update_sta_info_apmode(padapter, psta);
-}
-
-/* called >= TSR LEVEL for USB or SDIO Interface*/
-void ap_sta_info_defer_update(struct adapter *padapter, struct sta_info *psta)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	if (psta->state & _FW_LINKED) {
-		pmlmeinfo->FW_sta_info[psta->mac_id].psta = psta;
-
-		/* add ratid */
-		add_ratid(padapter, psta, 0);/* DM_RATR_STA_INIT */
-	}
-}
-
-/* restore hw setting from sw data structures */
-void rtw_ap_restore_network(struct adapter *padapter)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct sta_info *psta;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	struct list_head	*phead, *plist;
-	u8 chk_alive_num = 0;
-	char chk_alive_list[NUM_STA];
-	int i;
-
-	rtw_setopmode_cmd(padapter, NL80211_IFTYPE_AP, false);
-
-	set_channel_bwmode(padapter,
-			   pmlmeext->cur_channel,
-			   pmlmeext->cur_ch_offset,
-			   pmlmeext->cur_bwmode);
-
-	start_bss_network(padapter);
-
-	if ((padapter->securitypriv.dot11_privacy_algrthm == _TKIP_) ||
-	    (padapter->securitypriv.dot11_privacy_algrthm == _AES_)) {
-		/* restore group key, WEP keys is restored in ips_leave() */
-		rtw_set_key(padapter,
-			    psecuritypriv,
-			    psecuritypriv->dot118021XGrpKeyid,
-			    0,
-			    false);
-	}
-
-	spin_lock_bh(&pstapriv->asoc_list_lock);
-
-	phead = &pstapriv->asoc_list;
-	list_for_each(plist, phead) {
-		int stainfo_offset;
-
-		psta = list_entry(plist, struct sta_info, asoc_list);
-
-		stainfo_offset = rtw_stainfo_offset(pstapriv, psta);
-		if (stainfo_offset_valid(stainfo_offset))
-			chk_alive_list[chk_alive_num++] = stainfo_offset;
-	}
-
-	spin_unlock_bh(&pstapriv->asoc_list_lock);
-
-	for (i = 0; i < chk_alive_num; i++) {
-		psta = rtw_get_stainfo_by_offset(pstapriv, chk_alive_list[i]);
-
-		if (!psta)
-			continue;
-
-		if (psta->state & _FW_LINKED) {
-			rtw_sta_media_status_rpt(padapter, psta, 1);
-			update_ra_entry(padapter, psta);
-			/* pairwise key */
-			/* per sta pairwise key and settings */
-			if ((psecuritypriv->dot11_privacy_algrthm == _TKIP_) ||
-			    (psecuritypriv->dot11_privacy_algrthm == _AES_)) {
-				rtw_setstakey_cmd(padapter, psta, true, false);
-			}
-		}
-	}
-}
-
-void start_ap_mode(struct adapter *padapter)
-{
-	int i;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;
-
-	pmlmepriv->update_bcn = false;
-
-	pmlmeext->bstart_bss = false;
-
-	pmlmepriv->num_sta_non_erp = 0;
-
-	pmlmepriv->num_sta_no_short_slot_time = 0;
-
-	pmlmepriv->num_sta_no_short_preamble = 0;
-
-	pmlmepriv->num_sta_ht_no_gf = 0;
-	pmlmepriv->num_sta_no_ht = 0;
-	pmlmepriv->num_sta_ht_20mhz = 0;
-
-	pmlmepriv->olbc = false;
-
-	pmlmepriv->olbc_ht = false;
-
-	pmlmepriv->ht_op_mode = 0;
-
-	for (i = 0; i < NUM_STA; i++)
-		pstapriv->sta_aid[i] = NULL;
-
-	pmlmepriv->wps_beacon_ie = NULL;
-	pmlmepriv->wps_probe_resp_ie = NULL;
-	pmlmepriv->wps_assoc_resp_ie = NULL;
-
-	pmlmepriv->p2p_beacon_ie = NULL;
-	pmlmepriv->p2p_probe_resp_ie = NULL;
-
-	/* for ACL */
-	INIT_LIST_HEAD(&pacl_list->acl_node_q.queue);
-	pacl_list->num = 0;
-	pacl_list->mode = 0;
-	for (i = 0; i < NUM_ACL; i++) {
-		INIT_LIST_HEAD(&pacl_list->aclnode[i].list);
-		pacl_list->aclnode[i].valid = false;
-	}
-}
-
-void stop_ap_mode(struct adapter *padapter)
-{
-	struct list_head *phead, *plist, *tmp;
-	struct rtw_wlan_acl_node *paclnode;
-	struct sta_info *psta = NULL;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;
-	struct __queue	*pacl_node_q = &pacl_list->acl_node_q;
-
-	pmlmepriv->update_bcn = false;
-	pmlmeext->bstart_bss = false;
-
-	/* reset and init security priv , this can refine with rtw_reset_securitypriv */
-	memset((unsigned char *)&padapter->securitypriv,
-	       0,
-	       sizeof(struct security_priv));
-	padapter->securitypriv.ndisauthtype = Ndis802_11AuthModeOpen;
-	padapter->securitypriv.ndisencryptstatus = Ndis802_11WEPDisabled;
-
-	/* for ACL */
-	spin_lock_bh(&pacl_node_q->lock);
-	phead = get_list_head(pacl_node_q);
-	list_for_each_safe(plist, tmp, phead) {
-		paclnode = list_entry(plist, struct rtw_wlan_acl_node, list);
-
-		if (paclnode->valid) {
-			paclnode->valid = false;
-
-			list_del_init(&paclnode->list);
-
-			pacl_list->num--;
-		}
-	}
-	spin_unlock_bh(&pacl_node_q->lock);
-
-	rtw_sta_flush(padapter);
-
-	/* free_assoc_sta_resources */
-	rtw_free_all_stainfo(padapter);
-
-	psta = rtw_get_bcmc_stainfo(padapter);
-	rtw_free_stainfo(padapter, psta);
-
-	rtw_init_bcmc_stainfo(padapter);
-
-	rtw_free_mlme_priv_ie_data(pmlmepriv);
-
-	rtw_btcoex_media_status_notify(padapter, 0); /* disconnect */
-}
diff --git a/drivers/staging/rtl8723bs/core/rtw_btcoex.c b/drivers/staging/rtl8723bs/core/rtw_btcoex.c
deleted file mode 100644
index 9e00424d00bd..000000000000
--- a/drivers/staging/rtl8723bs/core/rtw_btcoex.c
+++ /dev/null
@@ -1,75 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2013 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <drv_types.h>
-#include <rtw_btcoex.h>
-#include <hal_btcoex.h>
-
-void rtw_btcoex_media_status_notify(struct adapter *padapter, u8 media_status)
-{
-	if ((media_status == RT_MEDIA_CONNECT) &&
-	    check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE)) {
-		rtw_hal_set_hwreg(padapter, HW_VAR_DL_RSVD_PAGE, NULL);
-	}
-
-	hal_btcoex_MediaStatusNotify(padapter, media_status);
-}
-
-void rtw_btcoex_halt_notify(struct adapter *padapter)
-{
-	if (!padapter->bup)
-		return;
-
-	if (padapter->bSurpriseRemoved)
-		return;
-
-	hal_btcoex_HaltNotify(padapter);
-}
-
-/*  ================================================== */
-/*  Below Functions are called by BT-Coex */
-/*  ================================================== */
-void rtw_btcoex_reject_ap_aggregated_packet(struct adapter *padapter, u8 enable)
-{
-	struct mlme_ext_info *pmlmeinfo;
-	struct sta_info *psta;
-
-	pmlmeinfo = &padapter->mlmeextpriv.mlmext_info;
-	psta = rtw_get_stainfo(&padapter->stapriv, get_bssid(&padapter->mlmepriv));
-
-	if (enable) {
-		pmlmeinfo->accept_addba_req = false;
-		if (psta)
-			send_delba(padapter, 0, psta->hwaddr);
-	} else {
-		pmlmeinfo->accept_addba_req = true;
-	}
-}
-
-void rtw_btcoex_lps_enter(struct adapter *padapter)
-{
-	struct pwrctrl_priv *pwrpriv;
-	u8 lps_val;
-
-	pwrpriv = adapter_to_pwrctl(padapter);
-
-	pwrpriv->bpower_saving = true;
-	lps_val = hal_btcoex_LpsVal(padapter);
-	rtw_set_ps_mode(padapter, PS_MODE_MIN, 0, lps_val, "BTCOEX");
-}
-
-void rtw_btcoex_lps_leave(struct adapter *padapter)
-{
-	struct pwrctrl_priv *pwrpriv;
-
-	pwrpriv = adapter_to_pwrctl(padapter);
-
-	if (pwrpriv->pwr_mode != PS_MODE_ACTIVE) {
-		rtw_set_ps_mode(padapter, PS_MODE_ACTIVE, 0, 0, "BTCOEX");
-		LPS_RF_ON_check(padapter, 100);
-		pwrpriv->bpower_saving = false;
-	}
-}
diff --git a/drivers/staging/rtl8723bs/core/rtw_cmd.c b/drivers/staging/rtl8723bs/core/rtw_cmd.c
deleted file mode 100644
index ce3dfa1fee26..000000000000
--- a/drivers/staging/rtl8723bs/core/rtw_cmd.c
+++ /dev/null
@@ -1,1936 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <drv_types.h>
-#include <hal_btcoex.h>
-#include <linux/jiffies.h>
-#include <linux/align.h>
-#include <linux/delay.h>
-
-static struct _cmd_callback rtw_cmd_callback[] = {
-	{READ_MACREG_CMD, NULL}, /*0*/
-	{WRITE_MACREG_CMD, NULL},
-	{READ_BBREG_CMD, &rtw_getbbrfreg_cmdrsp_callback},
-	{WRITE_BBREG_CMD, NULL},
-	{READ_RFREG_CMD, &rtw_getbbrfreg_cmdrsp_callback},
-	{WRITE_RFREG_CMD, NULL}, /*5*/
-	{READ_EEPROM_CMD, NULL},
-	{WRITE_EEPROM_CMD, NULL},
-	{READ_EFUSE_CMD, NULL},
-	{WRITE_EFUSE_CMD, NULL},
-
-	{READ_CAM_CMD, NULL},	/*10*/
-	{WRITE_CAM_CMD, NULL},
-	{SET_BCNITV_CMD, NULL},
-	{SET_MBIDCFG_CMD, NULL},
-	{JOIN_BSS_CMD, &rtw_joinbss_cmd_callback},  /*14*/
-	{DISCONNECT_CMD, &rtw_disassoc_cmd_callback}, /*15*/
-	{CREATE_BSS_CMD, &rtw_createbss_cmd_callback},
-	{SET_OP_MODE_CMD, NULL},
-	{SITE_SURVEY_CMD, &rtw_survey_cmd_callback}, /*18*/
-	{SET_AUTH_CMD, NULL},
-
-	{SET_KEY_CMD, NULL},	/*20*/
-	{SET_STA_KEY_CMD, &rtw_setstaKey_cmdrsp_callback},
-	{SET_ASSOC_STA_CMD, &rtw_setassocsta_cmdrsp_callback},
-	{DEL_ASSOC_STA_CMD, NULL},
-	{SET_STA_PWR_STATE_CMD, NULL},
-	{SET_BASIC_RATE_CMD, NULL}, /*25*/
-	{GET_BASIC_RATE_CMD, NULL},
-	{SET_DATA_RATE_CMD, NULL},
-	{GET_DATA_RATE_CMD, NULL},
-	{SET_PHY_INFO_CMD, NULL},
-
-	{GET_PHY_INFO_CMD, NULL}, /*30*/
-	{SET_PHY_CMD, NULL},
-	{GET_PHY_CMD, NULL},
-	{READ_RSSI_CMD, NULL},
-	{READ_GAIN_CMD, NULL},
-	{SET_ATIM_CMD, NULL}, /*35*/
-	{SET_PWR_MODE_CMD, NULL},
-	{JOIN_BSS_RPT_CMD, NULL},
-	{SET_RA_TABLE_CMD, NULL},
-	{GET_RA_TABLE_CMD, NULL},
-
-	{GET_CCX_REPORT_CMD, NULL}, /*40*/
-	{GET_DTM_REPORT_CMD,	NULL},
-	{GET_TX_RATE_STATISTICS_CMD, NULL},
-	{SET_USB_SUSPEND_CMD, NULL},
-	{SET_H2C_LBK_CMD, NULL},
-	{ADD_BA_REQ_CMD, NULL}, /*45*/
-	{SET_CHANNEL_CMD, NULL},		/*46*/
-	{SET_TX_POWER_CMD, NULL},
-	{SWITCH_ANTENNA_CMD, NULL},
-	{SET_CRYSTAL_CAP_CMD, NULL},
-	{SET_SINGLE_CARRIER_TX_CMD, NULL},	/*50*/
-
-	{SET_SINGLE_TONE_TX_CMD, NULL}, /*51*/
-	{SET_CARRIER_SUPPRESSION_TX_CMD, NULL},
-	{SET_CONTINUOUS_TX_CMD, NULL},
-	{SWITCH_BANDWIDTH_CMD, NULL},		/*54*/
-	{TX_BEACON_CMD, NULL},/*55*/
-
-	{SET_MLME_EVT_CMD, NULL},/*56*/
-	{SET_DRV_EXTRA_CMD, NULL},/*57*/
-	{SET_H2C_MSG_CMD, NULL},/*58*/
-	{SET_CHANNEL_PLAN_CMD, NULL},/*59*/
-
-	{SET_CHANNEL_SWITCH_CMD, NULL},/*60*/
-	{TDLS_CMD, NULL},/*61*/
-	{CHK_BMC_SLEEPQ_CMD, NULL}, /*62*/
-
-	{RUN_IN_THREAD_CMD, NULL},/*63*/
-};
-
-static struct cmd_hdl wlancmds[] = {
-	GEN_DRV_CMD_HANDLER(0, NULL) /*0*/
-	GEN_DRV_CMD_HANDLER(0, NULL)
-	GEN_DRV_CMD_HANDLER(0, NULL)
-	GEN_DRV_CMD_HANDLER(0, NULL)
-	GEN_DRV_CMD_HANDLER(0, NULL)
-	GEN_DRV_CMD_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL) /*10*/
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(sizeof(struct joinbss_parm), join_cmd_hdl) /*14*/
-	GEN_MLME_EXT_HANDLER(sizeof(struct disconnect_parm), disconnect_hdl)
-	GEN_MLME_EXT_HANDLER(sizeof(struct createbss_parm), createbss_hdl)
-	GEN_MLME_EXT_HANDLER(sizeof(struct setopmode_parm), setopmode_hdl)
-	GEN_MLME_EXT_HANDLER(sizeof(struct sitesurvey_parm), sitesurvey_cmd_hdl) /*18*/
-	GEN_MLME_EXT_HANDLER(sizeof(struct setauth_parm), setauth_hdl)
-	GEN_MLME_EXT_HANDLER(sizeof(struct setkey_parm), setkey_hdl) /*20*/
-	GEN_MLME_EXT_HANDLER(sizeof(struct set_stakey_parm), set_stakey_hdl)
-	GEN_MLME_EXT_HANDLER(sizeof(struct set_assocsta_parm), NULL)
-	GEN_MLME_EXT_HANDLER(sizeof(struct del_assocsta_parm), NULL)
-	GEN_MLME_EXT_HANDLER(sizeof(struct setstapwrstate_parm), NULL)
-	GEN_MLME_EXT_HANDLER(sizeof(struct setbasicrate_parm), NULL)
-	GEN_MLME_EXT_HANDLER(sizeof(struct getbasicrate_parm), NULL)
-	GEN_MLME_EXT_HANDLER(sizeof(struct setdatarate_parm), NULL)
-	GEN_MLME_EXT_HANDLER(sizeof(struct getdatarate_parm), NULL)
-	GEN_MLME_EXT_HANDLER(sizeof(struct setphyinfo_parm), NULL)
-	GEN_MLME_EXT_HANDLER(sizeof(struct getphyinfo_parm), NULL)  /*30*/
-	GEN_MLME_EXT_HANDLER(sizeof(struct setphy_parm), NULL)
-	GEN_MLME_EXT_HANDLER(sizeof(struct getphy_parm), NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)	/*40*/
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(sizeof(struct addBaReq_parm), add_ba_hdl)
-	GEN_MLME_EXT_HANDLER(sizeof(struct set_ch_parm), set_ch_hdl) /* 46 */
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL) /*50*/
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(0, NULL)
-	GEN_MLME_EXT_HANDLER(sizeof(struct Tx_Beacon_param), tx_beacon_hdl) /*55*/
-
-	GEN_MLME_EXT_HANDLER(0, mlme_evt_hdl) /*56*/
-	GEN_MLME_EXT_HANDLER(0, rtw_drvextra_cmd_hdl) /*57*/
-
-	GEN_MLME_EXT_HANDLER(0, h2c_msg_hdl) /*58*/
-	GEN_MLME_EXT_HANDLER(sizeof(struct SetChannelPlan_param), set_chplan_hdl) /*59*/
-
-	GEN_MLME_EXT_HANDLER(sizeof(struct SetChannelSwitch_param), set_csa_hdl) /*60*/
-	GEN_MLME_EXT_HANDLER(sizeof(struct TDLSoption_param), tdls_hdl) /*61*/
-	GEN_MLME_EXT_HANDLER(0, chk_bmc_sleepq_hdl) /*62*/
-	GEN_MLME_EXT_HANDLER(sizeof(struct RunInThread_param), run_in_thread_hdl) /*63*/
-};
-
-/*
- * Caller and the rtw_cmd_thread can protect cmd_q by spin_lock.
- * No irqsave is necessary.
- */
-
-int rtw_init_cmd_priv(struct	cmd_priv *pcmdpriv)
-{
-	init_completion(&pcmdpriv->cmd_queue_comp);
-	init_completion(&pcmdpriv->terminate_cmdthread_comp);
-
-	INIT_LIST_HEAD(&pcmdpriv->cmd_queue.queue);
-	spin_lock_init(&pcmdpriv->cmd_queue.lock);
-
-	/* allocate DMA-able/Non-Page memory for cmd_buf and rsp_buf */
-
-	pcmdpriv->cmd_seq = 1;
-
-	pcmdpriv->cmd_allocated_buf = kzalloc(MAX_CMDSZ + CMDBUFF_ALIGN_SZ, GFP_ATOMIC);
-	if (!pcmdpriv->cmd_allocated_buf)
-		return -ENOMEM;
-
-	pcmdpriv->cmd_buf = PTR_ALIGN(pcmdpriv->cmd_allocated_buf, CMDBUFF_ALIGN_SZ);
-
-	pcmdpriv->rsp_buf = kzalloc(MAX_RSPSZ, GFP_ATOMIC);
-	if (!pcmdpriv->rsp_buf) {
-		kfree(pcmdpriv->cmd_allocated_buf);
-		return -ENOMEM;
-	}
-
-	pcmdpriv->cmd_issued_cnt = 0;
-	pcmdpriv->cmd_done_cnt = 0;
-	pcmdpriv->rsp_cnt = 0;
-
-	mutex_init(&pcmdpriv->sctx_mutex);
-
-	return 0;
-}
-
-static void c2h_wk_callback(struct work_struct *work);
-int rtw_init_evt_priv(struct evt_priv *pevtpriv)
-{
-	/* allocate DMA-able/Non-Page memory for cmd_buf and rsp_buf */
-	atomic_set(&pevtpriv->event_seq, 0);
-	pevtpriv->evt_done_cnt = 0;
-
-	_init_workitem(&pevtpriv->c2h_wk, c2h_wk_callback, NULL);
-	pevtpriv->c2h_wk_alive = false;
-	pevtpriv->c2h_queue = rtw_cbuf_alloc(C2H_QUEUE_MAX_LEN + 1);
-	if (!pevtpriv->c2h_queue)
-		return -ENOMEM;
-
-	return 0;
-}
-
-void _rtw_free_evt_priv(struct	evt_priv *pevtpriv)
-{
-	_cancel_workitem_sync(&pevtpriv->c2h_wk);
-	while (pevtpriv->c2h_wk_alive)
-		fsleep(10 * USEC_PER_MSEC);
-
-	while (!rtw_cbuf_empty(pevtpriv->c2h_queue)) {
-		void *c2h = rtw_cbuf_pop(pevtpriv->c2h_queue);
-
-		if (c2h && c2h != (void *)pevtpriv)
-			kfree(c2h);
-	}
-	kfree(pevtpriv->c2h_queue);
-}
-
-void _rtw_free_cmd_priv(struct	cmd_priv *pcmdpriv)
-{
-	if (pcmdpriv) {
-		kfree(pcmdpriv->cmd_allocated_buf);
-
-		kfree(pcmdpriv->rsp_buf);
-
-		mutex_destroy(&pcmdpriv->sctx_mutex);
-	}
-}
-
-/*
- * Calling Context:
- *
- * rtw_enqueue_cmd can only be called between kernel thread,
- * since only spin_lock is used.
- *
- * ISR/Call-Back functions can't call this sub-function.
- *
- */
-
-static int _rtw_enqueue_cmd(struct __queue *queue, struct cmd_obj *obj)
-{
-	unsigned long irqL;
-
-	if (!obj)
-		return 0;
-
-	/* spin_lock_bh(&queue->lock); */
-	spin_lock_irqsave(&queue->lock, irqL);
-
-	list_add_tail(&obj->list, &queue->queue);
-
-	/* spin_unlock_bh(&queue->lock); */
-	spin_unlock_irqrestore(&queue->lock, irqL);
-
-	return 0;
-}
-
-struct	cmd_obj	*_rtw_dequeue_cmd(struct __queue *queue)
-{
-	unsigned long irqL;
-	struct cmd_obj *obj;
-
-	/* spin_lock_bh(&(queue->lock)); */
-	spin_lock_irqsave(&queue->lock, irqL);
-	if (list_empty(&queue->queue)) {
-		obj = NULL;
-	} else {
-		obj = container_of(get_next(&queue->queue), struct cmd_obj, list);
-		list_del_init(&obj->list);
-	}
-
-	/* spin_unlock_bh(&(queue->lock)); */
-	spin_unlock_irqrestore(&queue->lock, irqL);
-
-	return obj;
-}
-
-void rtw_free_evt_priv(struct	evt_priv *pevtpriv)
-{
-	_rtw_free_evt_priv(pevtpriv);
-}
-
-void rtw_free_cmd_priv(struct	cmd_priv *pcmdpriv)
-{
-	_rtw_free_cmd_priv(pcmdpriv);
-}
-
-int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj);
-int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj)
-{
-	bool allow = false; /* set to true to allow enqueuing cmd when hw_init_completed is false */
-
-	if (cmd_obj->cmdcode == SET_CHANNEL_PLAN_CMD)
-		allow = true;
-
-	if ((!pcmdpriv->padapter->hw_init_completed && !allow) ||
-	    !atomic_read(&pcmdpriv->cmdthd_running))	/* com_thread not running */
-		return _FAIL;
-
-	return _SUCCESS;
-}
-
-int rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj)
-{
-	int res;
-	struct adapter *padapter = pcmdpriv->padapter;
-
-	if (!cmd_obj)
-		return _FAIL;
-
-	cmd_obj->padapter = padapter;
-
-	res = rtw_cmd_filter(pcmdpriv, cmd_obj);
-	if (res == _FAIL) {
-		rtw_free_cmd_obj(cmd_obj);
-		return _FAIL;
-	}
-
-	res = _rtw_enqueue_cmd(&pcmdpriv->cmd_queue, cmd_obj);
-
-	if (res == 0) {
-		complete(&pcmdpriv->cmd_queue_comp);
-		return _SUCCESS;
-	}
-
-	return _FAIL;
-}
-
-struct	cmd_obj	*rtw_dequeue_cmd(struct cmd_priv *pcmdpriv)
-{
-	return _rtw_dequeue_cmd(&pcmdpriv->cmd_queue);
-}
-
-void rtw_free_cmd_obj(struct cmd_obj *pcmd)
-{
-	if ((pcmd->cmdcode != JOIN_BSS_CMD) &&
-	    (pcmd->cmdcode != CREATE_BSS_CMD)) {
-		/* free parmbuf in cmd_obj */
-		kfree(pcmd->parmbuf);
-	}
-
-	if (pcmd->rsp) {
-		if (pcmd->rspsz != 0) {
-			/* free rsp in cmd_obj */
-			kfree(pcmd->rsp);
-		}
-	}
-
-	/* free cmd_obj */
-	kfree(pcmd);
-}
-
-void rtw_stop_cmd_thread(struct adapter *adapter)
-{
-	if (adapter->cmdThread &&
-	    atomic_read(&adapter->cmdpriv.cmdthd_running) &&
-		adapter->cmdpriv.stop_req == 0) {
-		adapter->cmdpriv.stop_req = 1;
-		complete(&adapter->cmdpriv.cmd_queue_comp);
-		wait_for_completion(&adapter->cmdpriv.terminate_cmdthread_comp);
-	}
-}
-
-int rtw_cmd_thread(void *context)
-{
-	u8 ret;
-	struct cmd_obj *pcmd;
-	u8 *pcmdbuf;
-	u8 (*cmd_hdl)(struct adapter *padapter, u8 *pbuf);
-	void (*pcmd_callback)(struct adapter *dev, struct cmd_obj *pcmd);
-	struct adapter *padapter = context;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	struct drvextra_cmd_parm *extra_parm = NULL;
-
-	allow_signal(SIGTERM);
-
-	pcmdbuf = pcmdpriv->cmd_buf;
-
-	pcmdpriv->stop_req = 0;
-	atomic_set(&pcmdpriv->cmdthd_running, true);
-	complete(&pcmdpriv->terminate_cmdthread_comp);
-
-	while (1) {
-		if (wait_for_completion_interruptible(&pcmdpriv->cmd_queue_comp)) {
-			netdev_dbg(padapter->pnetdev,
-				   FUNC_ADPT_FMT " wait_for_completion_interruptible(&pcmdpriv->cmd_queue_comp) return != 0, break\n",
-				   FUNC_ADPT_ARG(padapter));
-			break;
-		}
-
-		if (padapter->driver_stopped || padapter->bSurpriseRemoved) {
-			netdev_dbg(padapter->pnetdev,
-				   "%s: DriverStopped(%d) SurpriseRemoved(%d) break at line %d\n",
-				   __func__, padapter->driver_stopped,
-				   padapter->bSurpriseRemoved, __LINE__);
-			break;
-		}
-
-		if (pcmdpriv->stop_req) {
-			netdev_dbg(padapter->pnetdev,
-				   FUNC_ADPT_FMT " stop_req:%u, break\n",
-				   FUNC_ADPT_ARG(padapter),
-				   pcmdpriv->stop_req);
-			break;
-		}
-
-		if (list_empty(&pcmdpriv->cmd_queue.queue))
-			continue;
-
-		if (rtw_register_cmd_alive(padapter) != _SUCCESS)
-			continue;
-
-_next:
-		if (padapter->driver_stopped || padapter->bSurpriseRemoved) {
-			netdev_dbg(padapter->pnetdev,
-				   "%s: DriverStopped(%d) SurpriseRemoved(%d) break at line %d\n",
-				   __func__, padapter->driver_stopped,
-				   padapter->bSurpriseRemoved, __LINE__);
-			break;
-		}
-
-		pcmd = rtw_dequeue_cmd(pcmdpriv);
-		if (!pcmd) {
-			rtw_unregister_cmd_alive(padapter);
-			continue;
-		}
-
-		if (rtw_cmd_filter(pcmdpriv, pcmd) == _FAIL) {
-			pcmd->res = H2C_DROPPED;
-			goto post_process;
-		}
-
-		pcmdpriv->cmd_issued_cnt++;
-
-		pcmd->cmdsz = round_up((pcmd->cmdsz), 4);
-
-		memcpy(pcmdbuf, pcmd->parmbuf, pcmd->cmdsz);
-
-		if (pcmd->cmdcode < ARRAY_SIZE(wlancmds)) {
-			cmd_hdl = wlancmds[pcmd->cmdcode].h2cfuns;
-
-			if (cmd_hdl) {
-				ret = cmd_hdl(pcmd->padapter, pcmdbuf);
-				pcmd->res = ret;
-			}
-
-			pcmdpriv->cmd_seq++;
-		} else {
-			pcmd->res = H2C_PARAMETERS_ERROR;
-		}
-
-		cmd_hdl = NULL;
-
-post_process:
-
-		if (mutex_lock_interruptible(&pcmd->padapter->cmdpriv.sctx_mutex) == 0) {
-			if (pcmd->sctx) {
-				netdev_dbg(padapter->pnetdev,
-					   FUNC_ADPT_FMT " pcmd->sctx\n",
-					   FUNC_ADPT_ARG(pcmd->padapter));
-
-				if (pcmd->res == H2C_SUCCESS)
-					rtw_sctx_done(&pcmd->sctx);
-				else
-					rtw_sctx_done_err(&pcmd->sctx, RTW_SCTX_DONE_CMD_ERROR);
-			}
-			mutex_unlock(&pcmd->padapter->cmdpriv.sctx_mutex);
-		}
-
-		/* call callback function for post-processed */
-		if (pcmd->cmdcode < ARRAY_SIZE(rtw_cmd_callback)) {
-			pcmd_callback = rtw_cmd_callback[pcmd->cmdcode].callback;
-			if (!pcmd_callback) {
-				rtw_free_cmd_obj(pcmd);
-			} else {
-				/* todo: !!! fill rsp_buf to pcmd->rsp if (pcmd->rsp!= NULL) */
-				pcmd_callback(pcmd->padapter, pcmd);/* need consider that free cmd_obj in rtw_cmd_callback */
-			}
-		} else {
-			rtw_free_cmd_obj(pcmd);
-		}
-		flush_signals_thread();
-		goto _next;
-	}
-
-	/*  free all cmd_obj resources */
-	do {
-		pcmd = rtw_dequeue_cmd(pcmdpriv);
-		if (!pcmd) {
-			rtw_unregister_cmd_alive(padapter);
-			break;
-		}
-
-		if (pcmd->cmdcode == SET_DRV_EXTRA_CMD) {
-			extra_parm = (struct drvextra_cmd_parm *)pcmd->parmbuf;
-			if (extra_parm->pbuf && extra_parm->size > 0)
-				kfree(extra_parm->pbuf);
-		}
-
-		rtw_free_cmd_obj(pcmd);
-	} while (1);
-
-	complete(&pcmdpriv->terminate_cmdthread_comp);
-	atomic_set(&pcmdpriv->cmdthd_running, false);
-
-	return 0;
-}
-
-/*
- * rtw_sitesurvey_cmd(~)
- *	### NOTE:#### (!!!!)
- *	MUST TAKE CARE THAT BEFORE CALLING THIS FUNC, YOU SHOULD HAVE LOCKED pmlmepriv->lock
- */
-
-u8 rtw_sitesurvey_cmd(struct adapter  *padapter, struct ndis_802_11_ssid *ssid, int ssid_num,
-		      struct rtw_ieee80211_channel *ch, int ch_num)
-{
-	u8 res = _FAIL;
-	struct cmd_obj *ph2c;
-	struct sitesurvey_parm *survey_para;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	if (check_fwstate(pmlmepriv, _FW_LINKED))
-		rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_SCAN, 1);
-
-	ph2c = kzalloc_obj(*ph2c, GFP_ATOMIC);
-	if (!ph2c)
-		return _FAIL;
-
-	survey_para = kzalloc_obj(*survey_para, GFP_ATOMIC);
-	if (!survey_para) {
-		kfree(ph2c);
-		return _FAIL;
-	}
-
-	rtw_free_network_queue(padapter, false);
-
-	init_h2fwcmd_w_parm_no_rsp(ph2c, survey_para, SITE_SURVEY_CMD);
-
-	/* psurveyPara->bsslimit = 48; */
-	survey_para->scan_mode = pmlmepriv->scan_mode;
-
-	/* prepare ssid list */
-	if (ssid) {
-		int i;
-
-		for (i = 0; i < ssid_num && i < RTW_SSID_SCAN_AMOUNT; i++) {
-			if (ssid[i].ssid_length) {
-				memcpy(&survey_para->ssid[i], &ssid[i], sizeof(struct ndis_802_11_ssid));
-				survey_para->ssid_num++;
-			}
-		}
-	}
-
-	/* prepare channel list */
-	if (ch) {
-		int i;
-
-		for (i = 0; i < ch_num && i < RTW_CHANNEL_SCAN_AMOUNT; i++) {
-			if (ch[i].hw_value && !(ch[i].flags & RTW_IEEE80211_CHAN_DISABLED)) {
-				memcpy(&survey_para->ch[i], &ch[i], sizeof(struct rtw_ieee80211_channel));
-				survey_para->ch_num++;
-			}
-		}
-	}
-
-	set_fwstate(pmlmepriv, _FW_UNDER_SURVEY);
-
-	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-
-	if (res == _SUCCESS) {
-		pmlmepriv->scan_start_time = jiffies;
-		_set_timer(&pmlmepriv->scan_to_timer, SCANNING_TIMEOUT);
-	} else {
-		_clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY);
-	}
-	return res;
-}
-
-void rtw_getbbrfreg_cmdrsp_callback(struct adapter *padapter,  struct cmd_obj *pcmd)
-{
-	/* rtw_free_cmd_obj(pcmd); */
-	kfree(pcmd->parmbuf);
-	kfree(pcmd);
-}
-
-u8 rtw_createbss_cmd(struct adapter  *padapter)
-{
-	struct cmd_obj *pcmd;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	struct wlan_bssid_ex *pdev_network = &padapter->registrypriv.dev_network;
-	u8 res = _SUCCESS;
-
-	pcmd = kzalloc_obj(*pcmd, GFP_ATOMIC);
-	if (!pcmd) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	INIT_LIST_HEAD(&pcmd->list);
-	pcmd->cmdcode = CREATE_BSS_CMD;
-	pcmd->parmbuf = (unsigned char *)pdev_network;
-	pcmd->cmdsz = get_wlan_bssid_ex_sz((struct wlan_bssid_ex *)pdev_network);
-	pcmd->rsp = NULL;
-	pcmd->rspsz = 0;
-
-	pdev_network->length = pcmd->cmdsz;
-
-	res = rtw_enqueue_cmd(pcmdpriv, pcmd);
-
-exit:
-	return res;
-}
-
-int rtw_startbss_cmd(struct adapter  *padapter, int flags)
-{
-	struct cmd_obj *pcmd;
-	struct cmd_priv  *pcmdpriv = &padapter->cmdpriv;
-	struct submit_ctx sctx;
-	int res = _SUCCESS;
-
-	if (flags & RTW_CMDF_DIRECTLY) {
-		/* no need to enqueue, do the cmd hdl directly and free cmd parameter */
-		start_bss_network(padapter);
-	} else {
-		/* need enqueue, prepare cmd_obj and enqueue */
-		pcmd = kzalloc_obj(*pcmd);
-		if (!pcmd) {
-			res = _FAIL;
-			goto exit;
-		}
-
-		INIT_LIST_HEAD(&pcmd->list);
-		pcmd->cmdcode = CREATE_BSS_CMD;
-		pcmd->parmbuf = NULL;
-		pcmd->cmdsz =  0;
-		pcmd->rsp = NULL;
-		pcmd->rspsz = 0;
-
-		if (flags & RTW_CMDF_WAIT_ACK) {
-			pcmd->sctx = &sctx;
-			rtw_sctx_init(&sctx, 2000);
-		}
-
-		res = rtw_enqueue_cmd(pcmdpriv, pcmd);
-
-		if (res == _SUCCESS && (flags & RTW_CMDF_WAIT_ACK)) {
-			rtw_sctx_wait(&sctx);
-			if (mutex_lock_interruptible(&pcmdpriv->sctx_mutex) == 0) {
-				if (sctx.status == RTW_SCTX_SUBMITTED)
-					pcmd->sctx = NULL;
-				mutex_unlock(&pcmdpriv->sctx_mutex);
-			}
-		}
-	}
-
-exit:
-	return res;
-}
-
-u8 rtw_joinbss_cmd(struct adapter  *padapter, struct wlan_network *pnetwork)
-{
-	u8 res = _SUCCESS;
-	unsigned int t_len = 0;
-	struct wlan_bssid_ex *psecnetwork;
-	struct cmd_obj *pcmd;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct qos_priv *pqospriv = &pmlmepriv->qospriv;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	struct registry_priv *pregistrypriv = &padapter->registrypriv;
-	struct ht_priv *phtpriv = &pmlmepriv->htpriv;
-	enum nl80211_iftype ndis_network_mode = pnetwork->network.infrastructure_mode;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	u32 tmp_len;
-	u8 *ptmp = NULL;
-
-	pcmd = kzalloc_obj(*pcmd);
-	if (!pcmd) {
-		res = _FAIL;
-		goto exit;
-	}
-	/* for ies is fix buf size */
-	t_len = sizeof(struct wlan_bssid_ex);
-
-	/* for hidden ap to set fw_state here */
-	if (!check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE)) {
-		switch (ndis_network_mode) {
-		case NL80211_IFTYPE_ADHOC:
-			set_fwstate(pmlmepriv, WIFI_ADHOC_STATE);
-			break;
-
-		case NL80211_IFTYPE_STATION:
-			set_fwstate(pmlmepriv, WIFI_STATION_STATE);
-			break;
-
-		default:
-			break;
-		}
-	}
-
-	psecnetwork = (struct wlan_bssid_ex *)&psecuritypriv->sec_bss;
-
-	memset(psecnetwork, 0, t_len);
-
-	memcpy(psecnetwork, &pnetwork->network, get_wlan_bssid_ex_sz(&pnetwork->network));
-
-	psecuritypriv->authenticator_ie[0] = (unsigned char)psecnetwork->ie_length;
-
-	if ((psecnetwork->ie_length - 12) < (256 - 1))
-		memcpy(&psecuritypriv->authenticator_ie[1], &psecnetwork->ies[12], psecnetwork->ie_length - 12);
-	else
-		memcpy(&psecuritypriv->authenticator_ie[1], &psecnetwork->ies[12], (256 - 1));
-
-	psecnetwork->ie_length = 0;
-	/*  Added by Albert 2009/02/18 */
-	/*  If the driver wants to use the bssid to create the connection. */
-	/*  If not,  we have to copy the connecting AP's MAC address to it so that */
-	/*  the driver just has the bssid information for PMKIDList searching. */
-
-	if (!pmlmepriv->assoc_by_bssid)
-		memcpy(&pmlmepriv->assoc_bssid[0], &pnetwork->network.mac_address[0], ETH_ALEN);
-
-	psecnetwork->ie_length = rtw_restruct_sec_ie(padapter,
-						     &pnetwork->network.ies[0],
-						     &psecnetwork->ies[0],
-						     pnetwork->network.ie_length);
-
-	pqospriv->qos_option = 0;
-
-	if (pregistrypriv->wmm_enable) {
-		tmp_len = rtw_restruct_wmm_ie(padapter,
-					      &pnetwork->network.ies[0],
-					      &psecnetwork->ies[0],
-					      pnetwork->network.ie_length,
-					      psecnetwork->ie_length);
-
-		if (psecnetwork->ie_length != tmp_len) {
-			psecnetwork->ie_length = tmp_len;
-			pqospriv->qos_option = 1; /* There is WMM IE in this corresp. beacon */
-		} else {
-			pqospriv->qos_option = 0;/* There is no WMM IE in this corresp. beacon */
-		}
-	}
-
-	phtpriv->ht_option = false;
-	ptmp = rtw_get_ie(&pnetwork->network.ies[12], WLAN_EID_HT_CAPABILITY, &tmp_len,
-			pnetwork->network.ie_length - 12);
-
-	if (pregistrypriv->ht_enable && ptmp && tmp_len > 0) {
-		/* Added by Albert 2010/06/23 */
-		/* For the WEP mode, we will use the bg mode to do the connection to avoid some IOT issue. */
-		/* Especially for Realtek 8192u SoftAP. */
-		if ((padapter->securitypriv.dot11_privacy_algrthm != _WEP40_) &&
-		    (padapter->securitypriv.dot11_privacy_algrthm != _WEP104_) &&
-		    (padapter->securitypriv.dot11_privacy_algrthm != _TKIP_)) {
-			rtw_ht_use_default_setting(padapter);
-
-			rtw_build_wmm_ie_ht(padapter, &psecnetwork->ies[12], &psecnetwork->ie_length);
-
-			/* rtw_restructure_ht_ie */
-			rtw_restructure_ht_ie(padapter, &pnetwork->network.ies[12], &psecnetwork->ies[0],
-					      pnetwork->network.ie_length - 12, &psecnetwork->ie_length,
-					      pnetwork->network.configuration.ds_config);
-		}
-	}
-
-	rtw_append_exented_cap(padapter, &psecnetwork->ies[0], &psecnetwork->ie_length);
-
-	pmlmeinfo->assoc_AP_vendor = check_assoc_AP(pnetwork->network.ies, pnetwork->network.ie_length);
-
-	pcmd->cmdsz = get_wlan_bssid_ex_sz(psecnetwork);/* get cmdsz before endian conversion */
-
-	INIT_LIST_HEAD(&pcmd->list);
-	pcmd->cmdcode = JOIN_BSS_CMD;
-	pcmd->parmbuf = (unsigned char *)psecnetwork;
-	pcmd->rsp = NULL;
-	pcmd->rspsz = 0;
-
-	res = rtw_enqueue_cmd(pcmdpriv, pcmd);
-
-exit:
-	return res;
-}
-
-u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool enqueue) /* for sta_mode */
-{
-	struct cmd_obj *cmdobj = NULL;
-	struct disconnect_parm *param = NULL;
-	struct cmd_priv *cmdpriv = &padapter->cmdpriv;
-	u8 res = _SUCCESS;
-
-	/* prepare cmd parameter */
-	param = kzalloc_obj(*param);
-	if (!param) {
-		res = _FAIL;
-		goto exit;
-	}
-	param->deauth_timeout_ms = deauth_timeout_ms;
-
-	if (enqueue) {
-		/* need enqueue, prepare cmd_obj and enqueue */
-		cmdobj = kzalloc_obj(*cmdobj);
-		if (!cmdobj) {
-			res = _FAIL;
-			kfree(param);
-			goto exit;
-		}
-		init_h2fwcmd_w_parm_no_rsp(cmdobj, param, DISCONNECT_CMD);
-		res = rtw_enqueue_cmd(cmdpriv, cmdobj);
-	} else {
-		/* no need to enqueue, do the cmd hdl directly and free cmd parameter */
-		if (disconnect_hdl(padapter, (u8 *)param) != H2C_SUCCESS)
-			res = _FAIL;
-		kfree(param);
-	}
-
-exit:
-	return res;
-}
-
-u8 rtw_setopmode_cmd(struct adapter  *padapter, enum nl80211_iftype networktype, bool enqueue)
-{
-	struct	cmd_obj *ph2c;
-	struct	setopmode_parm *psetop;
-
-	struct	cmd_priv   *pcmdpriv = &padapter->cmdpriv;
-	u8 res = _SUCCESS;
-
-	psetop = kzalloc_obj(*psetop);
-	if (!psetop) {
-		res = _FAIL;
-		goto exit;
-	}
-	psetop->mode = (u8)networktype;
-
-	if (enqueue) {
-		ph2c = kzalloc_obj(*ph2c);
-		if (!ph2c) {
-			kfree(psetop);
-			res = _FAIL;
-			goto exit;
-		}
-
-		init_h2fwcmd_w_parm_no_rsp(ph2c, psetop, SET_OP_MODE_CMD);
-		res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-	} else {
-		setopmode_hdl(padapter, (u8 *)psetop);
-		kfree(psetop);
-	}
-exit:
-	return res;
-}
-
-u8 rtw_setstakey_cmd(struct adapter *padapter, struct sta_info *sta, u8 unicast_key, bool enqueue)
-{
-	struct cmd_obj *ph2c;
-	struct set_stakey_parm *psetstakey_para;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	struct set_stakey_rsp *psetstakey_rsp = NULL;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	u8 res = _SUCCESS;
-
-	psetstakey_para = kzalloc_obj(*psetstakey_para);
-	if (!psetstakey_para) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	memcpy(psetstakey_para->addr, sta->hwaddr, ETH_ALEN);
-
-	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE))
-		psetstakey_para->algorithm = (unsigned char)psecuritypriv->dot11_privacy_algrthm;
-	else
-		GET_ENCRY_ALGO(psecuritypriv, sta, psetstakey_para->algorithm, false);
-
-	if (unicast_key)
-		memcpy(&psetstakey_para->key, &sta->dot118021x_UncstKey, 16);
-	else
-		memcpy(&psetstakey_para->key, &psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey, 16);
-
-	/* jeff: set this because at least sw key is ready */
-	padapter->securitypriv.busetkipkey = true;
-
-	if (enqueue) {
-		ph2c = kzalloc_obj(*ph2c);
-		if (!ph2c) {
-			kfree_sensitive(psetstakey_para);
-			res = _FAIL;
-			goto exit;
-		}
-
-		psetstakey_rsp = kzalloc_obj(*psetstakey_rsp);
-		if (!psetstakey_rsp) {
-			kfree(ph2c);
-			kfree_sensitive(psetstakey_para);
-			res = _FAIL;
-			goto exit;
-		}
-
-		init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, SET_STA_KEY_CMD);
-		ph2c->rsp = (u8 *)psetstakey_rsp;
-		ph2c->rspsz = sizeof(struct set_stakey_rsp);
-		res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-	} else {
-		set_stakey_hdl(padapter, (u8 *)psetstakey_para);
-		kfree_sensitive(psetstakey_para);
-	}
-exit:
-	return res;
-}
-
-u8 rtw_clearstakey_cmd(struct adapter *padapter, struct sta_info *sta, u8 enqueue)
-{
-	struct cmd_obj *ph2c;
-	struct set_stakey_parm *psetstakey_para;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	struct set_stakey_rsp *psetstakey_rsp = NULL;
-	s16 cam_id = 0;
-	u8 res = _SUCCESS;
-
-	if (!enqueue) {
-		while ((cam_id = rtw_camid_search(padapter, sta->hwaddr, -1)) >= 0) {
-			netdev_dbg(padapter->pnetdev,
-				   "clear key for addr:%pM, camid:%d\n",
-				   sta->hwaddr, cam_id);
-			clear_cam_entry(padapter, cam_id);
-			rtw_camid_free(padapter, cam_id);
-		}
-	} else {
-		ph2c = kzalloc_obj(*ph2c);
-		if (!ph2c) {
-			res = _FAIL;
-			goto exit;
-		}
-
-		psetstakey_para = kzalloc_obj(*psetstakey_para);
-		if (!psetstakey_para) {
-			kfree(ph2c);
-			res = _FAIL;
-			goto exit;
-		}
-
-		psetstakey_rsp = kzalloc_obj(*psetstakey_rsp);
-		if (!psetstakey_rsp) {
-			kfree(ph2c);
-			kfree_sensitive(psetstakey_para);
-			res = _FAIL;
-			goto exit;
-		}
-
-		init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, SET_STA_KEY_CMD);
-		ph2c->rsp = (u8 *)psetstakey_rsp;
-		ph2c->rspsz = sizeof(struct set_stakey_rsp);
-
-		memcpy(psetstakey_para->addr, sta->hwaddr, ETH_ALEN);
-
-		psetstakey_para->algorithm = _NO_PRIVACY_;
-
-		res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-	}
-exit:
-	return res;
-}
-
-u8 rtw_addbareq_cmd(struct adapter *padapter, u8 tid, u8 *addr)
-{
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	struct cmd_obj *ph2c;
-	struct addBaReq_parm *paddbareq_parm;
-
-	u8 res = _SUCCESS;
-
-	ph2c = kzalloc_obj(*ph2c, GFP_ATOMIC);
-	if (!ph2c) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	paddbareq_parm = kzalloc_obj(*paddbareq_parm, GFP_ATOMIC);
-	if (!paddbareq_parm) {
-		kfree(ph2c);
-		res = _FAIL;
-		goto exit;
-	}
-
-	paddbareq_parm->tid = tid;
-	memcpy(paddbareq_parm->addr, addr, ETH_ALEN);
-
-	init_h2fwcmd_w_parm_no_rsp(ph2c, paddbareq_parm, ADD_BA_REQ_CMD);
-
-	/* rtw_enqueue_cmd(pcmdpriv, ph2c); */
-	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-
-exit:
-	return res;
-}
-
-u8 rtw_reset_securitypriv_cmd(struct adapter *padapter)
-{
-	struct cmd_obj *ph2c;
-	struct drvextra_cmd_parm  *pdrvextra_cmd_parm;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	u8 res = _SUCCESS;
-
-	ph2c = kzalloc_obj(*ph2c, GFP_ATOMIC);
-	if (!ph2c) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm = kzalloc_obj(*pdrvextra_cmd_parm, GFP_ATOMIC);
-	if (!pdrvextra_cmd_parm) {
-		kfree(ph2c);
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm->ec_id = RESET_SECURITYPRIV;
-	pdrvextra_cmd_parm->type = 0;
-	pdrvextra_cmd_parm->size = 0;
-	pdrvextra_cmd_parm->pbuf = NULL;
-
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, SET_DRV_EXTRA_CMD);
-
-	/* rtw_enqueue_cmd(pcmdpriv, ph2c); */
-	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-exit:
-	return res;
-}
-
-u8 rtw_free_assoc_resources_cmd(struct adapter *padapter)
-{
-	struct cmd_obj *ph2c;
-	struct drvextra_cmd_parm  *pdrvextra_cmd_parm;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	u8 res = _SUCCESS;
-
-	ph2c = kzalloc_obj(*ph2c, GFP_ATOMIC);
-	if (!ph2c) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm = kzalloc_obj(*pdrvextra_cmd_parm, GFP_ATOMIC);
-	if (!pdrvextra_cmd_parm) {
-		kfree(ph2c);
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm->ec_id = FREE_ASSOC_RESOURCES;
-	pdrvextra_cmd_parm->type = 0;
-	pdrvextra_cmd_parm->size = 0;
-	pdrvextra_cmd_parm->pbuf = NULL;
-
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, SET_DRV_EXTRA_CMD);
-
-	/* rtw_enqueue_cmd(pcmdpriv, ph2c); */
-	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-exit:
-	return res;
-}
-
-u8 rtw_dynamic_chk_wk_cmd(struct adapter *padapter)
-{
-	struct cmd_obj *ph2c;
-	struct drvextra_cmd_parm  *pdrvextra_cmd_parm;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	u8 res = _SUCCESS;
-
-	/* only  primary padapter does this cmd */
-	ph2c = kzalloc_obj(*ph2c, GFP_ATOMIC);
-	if (!ph2c) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm = kzalloc_obj(*pdrvextra_cmd_parm, GFP_ATOMIC);
-	if (!pdrvextra_cmd_parm) {
-		kfree(ph2c);
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm->ec_id = DYNAMIC_CHK_WK_CID;
-	pdrvextra_cmd_parm->type = 0;
-	pdrvextra_cmd_parm->size = 0;
-	pdrvextra_cmd_parm->pbuf = NULL;
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, SET_DRV_EXTRA_CMD);
-
-	/* rtw_enqueue_cmd(pcmdpriv, ph2c); */
-	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-exit:
-	return res;
-}
-
-static void collect_traffic_statistics(struct adapter *padapter)
-{
-	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
-
-	/*  Tx */
-	pdvobjpriv->traffic_stat.tx_bytes = padapter->xmitpriv.tx_bytes;
-	pdvobjpriv->traffic_stat.tx_pkts = padapter->xmitpriv.tx_pkts;
-	pdvobjpriv->traffic_stat.tx_drop = padapter->xmitpriv.tx_drop;
-
-	/*  Rx */
-	pdvobjpriv->traffic_stat.rx_bytes = padapter->recvpriv.rx_bytes;
-	pdvobjpriv->traffic_stat.rx_pkts = padapter->recvpriv.rx_pkts;
-	pdvobjpriv->traffic_stat.rx_drop = padapter->recvpriv.rx_drop;
-
-	/*  Calculate throughput in last interval */
-	pdvobjpriv->traffic_stat.cur_tx_bytes = pdvobjpriv->traffic_stat.tx_bytes - pdvobjpriv->traffic_stat.last_tx_bytes;
-	pdvobjpriv->traffic_stat.cur_rx_bytes = pdvobjpriv->traffic_stat.rx_bytes - pdvobjpriv->traffic_stat.last_rx_bytes;
-	pdvobjpriv->traffic_stat.last_tx_bytes = pdvobjpriv->traffic_stat.tx_bytes;
-	pdvobjpriv->traffic_stat.last_rx_bytes = pdvobjpriv->traffic_stat.rx_bytes;
-
-	pdvobjpriv->traffic_stat.cur_tx_tp = (u32)(pdvobjpriv->traffic_stat.cur_tx_bytes * 8 / 2 / 1024 / 1024);
-	pdvobjpriv->traffic_stat.cur_rx_tp = (u32)(pdvobjpriv->traffic_stat.cur_rx_bytes * 8 / 2 / 1024 / 1024);
-}
-
-bool traffic_status_watchdog(struct adapter *padapter, bool from_timer)
-{
-	bool should_enter_ps = false;
-	u16 busy_threshold_high = 25;
-	u16 busy_threshold_low = 10;
-	u16 busy_threshold = busy_threshold_high;
-	bool busy_traffic = false;
-	bool tx_busy_traffic = false;
-	bool rx_busy_traffic = false;
-	bool higher_busy_traffic = false;
-	bool higher_busy_rx_traffic = false;
-	bool higher_busy_tx_traffic = false;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	collect_traffic_statistics(padapter);
-
-	/*  */
-	/*  Determine if our traffic is busy now */
-	/*  */
-	if ((check_fwstate(pmlmepriv, _FW_LINKED))
-		/*&& !MgntInitAdapterInProgress(pMgntInfo)*/) {
-		/*  if we raise busy_traffic in last watchdog, using lower threshold. */
-		if (pmlmepriv->link_detect_info.busy_traffic)
-			busy_threshold = busy_threshold_low;
-
-		if (pmlmepriv->link_detect_info.num_rx_ok_in_period > busy_threshold ||
-		    pmlmepriv->link_detect_info.num_tx_ok_in_period > busy_threshold) {
-			busy_traffic = true;
-
-			if (pmlmepriv->link_detect_info.num_rx_ok_in_period >
-			    pmlmepriv->link_detect_info.num_tx_ok_in_period)
-				rx_busy_traffic = true;
-			else
-				tx_busy_traffic = true;
-		}
-
-		/*  Higher Tx/Rx data. */
-		if (pmlmepriv->link_detect_info.num_rx_ok_in_period > 4000 ||
-		    pmlmepriv->link_detect_info.num_tx_ok_in_period > 4000) {
-			higher_busy_traffic = true;
-
-			if (pmlmepriv->link_detect_info.num_rx_ok_in_period >
-			    pmlmepriv->link_detect_info.num_tx_ok_in_period)
-				higher_busy_rx_traffic = true;
-			else
-				higher_busy_tx_traffic = true;
-		}
-
-		/*  check traffic for  powersaving. */
-		if (((pmlmepriv->link_detect_info.num_rx_unicast_ok_in_period +
-		      pmlmepriv->link_detect_info.num_tx_ok_in_period) > 8) ||
-		    (pmlmepriv->link_detect_info.num_rx_unicast_ok_in_period > 2)) {
-			should_enter_ps = false;
-
-			if (busy_traffic) {
-				if (pmlmepriv->link_detect_info.traffic_transition_count <= 4)
-					pmlmepriv->link_detect_info.traffic_transition_count = 4;
-
-				pmlmepriv->link_detect_info.traffic_transition_count++;
-
-				if (pmlmepriv->link_detect_info.traffic_transition_count > 30)
-					pmlmepriv->link_detect_info.traffic_transition_count = 30;
-			}
-		} else {
-			if (pmlmepriv->link_detect_info.traffic_transition_count >= 2)
-				pmlmepriv->link_detect_info.traffic_transition_count -= 2;
-			else
-				pmlmepriv->link_detect_info.traffic_transition_count = 0;
-
-			if (pmlmepriv->link_detect_info.traffic_transition_count == 0)
-				should_enter_ps = true;
-		}
-
-		/*  LeisurePS only work in infra mode. */
-		if (should_enter_ps) {
-			if (!from_timer)
-				LPS_Enter(padapter, "TRAFFIC_IDLE");
-		} else {
-			if (!from_timer)
-				LPS_Leave(padapter, "TRAFFIC_BUSY");
-			else
-				rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_TRAFFIC_BUSY, 1);
-		}
-	} else {
-		struct dvobj_priv *dvobj = adapter_to_dvobj(padapter);
-		int n_assoc_iface = 0;
-
-		if (check_fwstate(&dvobj->padapters->mlmepriv, WIFI_ASOC_STATE))
-			n_assoc_iface++;
-
-		if (!from_timer && n_assoc_iface == 0)
-			LPS_Leave(padapter, "NON_LINKED");
-	}
-
-	pmlmepriv->link_detect_info.num_rx_ok_in_period = 0;
-	pmlmepriv->link_detect_info.num_tx_ok_in_period = 0;
-	pmlmepriv->link_detect_info.num_rx_unicast_ok_in_period = 0;
-	pmlmepriv->link_detect_info.busy_traffic = busy_traffic;
-	pmlmepriv->link_detect_info.tx_busy_traffic = tx_busy_traffic;
-	pmlmepriv->link_detect_info.rx_busy_traffic = rx_busy_traffic;
-	pmlmepriv->link_detect_info.higher_busy_traffic = higher_busy_traffic;
-	pmlmepriv->link_detect_info.higher_busy_rx_traffic = higher_busy_rx_traffic;
-	pmlmepriv->link_detect_info.higher_busy_tx_traffic = higher_busy_tx_traffic;
-
-	return should_enter_ps;
-}
-
-static void dynamic_chk_wk_hdl(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv;
-
-	pmlmepriv = &padapter->mlmepriv;
-
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE))
-		expire_timeout_chk(padapter);
-
-	/* for debug purpose */
-	_linked_info_dump(padapter);
-	/* if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING|_FW_UNDER_SURVEY) ==false) */
-	{
-		linked_status_chk(padapter);
-		traffic_status_watchdog(padapter, false);
-	}
-	rtw_hal_dm_watchdog(padapter);
-
-	/* check_hw_pbc(padapter, pdrvextra_cmd->pbuf, pdrvextra_cmd->type); */
-
-	/*  */
-	/*  BT-Coexist */
-	/*  */
-	hal_btcoex_Handler(padapter);
-
-	/* always call rtw_ps_processor() at last one. */
-	rtw_ps_processor(padapter);
-}
-
-void lps_ctrl_wk_hdl(struct adapter *padapter, u8 lps_ctrl_type);
-void lps_ctrl_wk_hdl(struct adapter *padapter, u8 lps_ctrl_type)
-{
-	struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	u8 mstatus;
-
-	if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) ||
-	    check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
-		return;
-	}
-
-	switch (lps_ctrl_type) {
-	case LPS_CTRL_SCAN:
-		hal_btcoex_ScanNotify(padapter, true);
-
-		if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-			/*  connect */
-			LPS_Leave(padapter, "LPS_CTRL_SCAN");
-		}
-		break;
-	case LPS_CTRL_JOINBSS:
-		LPS_Leave(padapter, "LPS_CTRL_JOINBSS");
-		break;
-	case LPS_CTRL_CONNECT:
-		mstatus = 1;/* connect */
-		/*  Reset LPS Setting */
-		pwrpriv->LpsIdleCount = 0;
-		rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_JOINBSSRPT, (u8 *)(&mstatus));
-		rtw_btcoex_media_status_notify(padapter, mstatus);
-		break;
-	case LPS_CTRL_DISCONNECT:
-		mstatus = 0;/* disconnect */
-		rtw_btcoex_media_status_notify(padapter, mstatus);
-		LPS_Leave(padapter, "LPS_CTRL_DISCONNECT");
-		rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_JOINBSSRPT, (u8 *)(&mstatus));
-		break;
-	case LPS_CTRL_SPECIAL_PACKET:
-		pwrpriv->delay_lps_last_time_stamp = jiffies;
-		hal_btcoex_SpecialPacketNotify(padapter, PACKET_DHCP);
-		LPS_Leave(padapter, "LPS_CTRL_SPECIAL_PACKET");
-		break;
-	case LPS_CTRL_LEAVE:
-		LPS_Leave(padapter, "LPS_CTRL_LEAVE");
-		break;
-	case LPS_CTRL_TRAFFIC_BUSY:
-		LPS_Leave(padapter, "LPS_CTRL_TRAFFIC_BUSY");
-		break;
-	default:
-		break;
-	}
-}
-
-u8 rtw_lps_ctrl_wk_cmd(struct adapter *padapter, u8 lps_ctrl_type, u8 enqueue)
-{
-	struct cmd_obj	*ph2c;
-	struct drvextra_cmd_parm *pdrvextra_cmd_parm;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	/* struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(padapter); */
-	u8 res = _SUCCESS;
-
-	if (enqueue) {
-		ph2c = kzalloc_obj(*ph2c, GFP_ATOMIC);
-		if (!ph2c) {
-			res = _FAIL;
-			goto exit;
-		}
-
-		pdrvextra_cmd_parm = kzalloc_obj(*pdrvextra_cmd_parm,
-						 GFP_ATOMIC);
-		if (!pdrvextra_cmd_parm) {
-			kfree(ph2c);
-			res = _FAIL;
-			goto exit;
-		}
-
-		pdrvextra_cmd_parm->ec_id = LPS_CTRL_WK_CID;
-		pdrvextra_cmd_parm->type = lps_ctrl_type;
-		pdrvextra_cmd_parm->size = 0;
-		pdrvextra_cmd_parm->pbuf = NULL;
-
-		init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, SET_DRV_EXTRA_CMD);
-
-		res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-	} else {
-		lps_ctrl_wk_hdl(padapter, lps_ctrl_type);
-	}
-
-exit:
-	return res;
-}
-
-static void rtw_dm_in_lps_hdl(struct adapter *padapter)
-{
-	rtw_hal_set_hwreg(padapter, HW_VAR_DM_IN_LPS, NULL);
-}
-
-u8 rtw_dm_in_lps_wk_cmd(struct adapter *padapter)
-{
-	struct cmd_obj	*ph2c;
-	struct drvextra_cmd_parm	*pdrvextra_cmd_parm;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	u8 res = _SUCCESS;
-
-	ph2c = kzalloc_obj(*ph2c, GFP_ATOMIC);
-	if (!ph2c) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm = kzalloc_obj(*pdrvextra_cmd_parm, GFP_ATOMIC);
-	if (!pdrvextra_cmd_parm) {
-		kfree(ph2c);
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm->ec_id = DM_IN_LPS_WK_CID;
-	pdrvextra_cmd_parm->type = 0;
-	pdrvextra_cmd_parm->size = 0;
-	pdrvextra_cmd_parm->pbuf = NULL;
-
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, SET_DRV_EXTRA_CMD);
-
-	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-
-exit:
-	return res;
-}
-
-static void rtw_lps_change_dtim_hdl(struct adapter *padapter, u8 dtim)
-{
-	struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
-
-	if (dtim <= 0 || dtim > 16)
-		return;
-
-	if (hal_btcoex_IsBtControlLps(padapter))
-		return;
-
-	mutex_lock(&pwrpriv->lock);
-
-	pwrpriv->dtim = dtim;
-
-	if (pwrpriv->fw_current_in_ps_mode && (pwrpriv->pwr_mode > PS_MODE_ACTIVE)) {
-		u8 ps_mode = pwrpriv->pwr_mode;
-
-		rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode));
-	}
-
-	mutex_unlock(&pwrpriv->lock);
-}
-
-static void rtw_dm_ra_mask_hdl(struct adapter *padapter, struct sta_info *psta)
-{
-	if (psta)
-		set_sta_rate(padapter, psta);
-}
-
-u8 rtw_dm_ra_mask_wk_cmd(struct adapter *padapter, u8 *psta)
-{
-	struct cmd_obj	*ph2c;
-	struct drvextra_cmd_parm	*pdrvextra_cmd_parm;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	u8 res = _SUCCESS;
-
-	ph2c = kzalloc_obj(*ph2c, GFP_ATOMIC);
-	if (!ph2c) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm = kzalloc_obj(*pdrvextra_cmd_parm, GFP_ATOMIC);
-	if (!pdrvextra_cmd_parm) {
-		kfree(ph2c);
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm->ec_id = DM_RA_MSK_WK_CID;
-	pdrvextra_cmd_parm->type = 0;
-	pdrvextra_cmd_parm->size = 0;
-	pdrvextra_cmd_parm->pbuf = psta;
-
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, SET_DRV_EXTRA_CMD);
-
-	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-
-exit:
-
-	return res;
-}
-
-u8 rtw_ps_cmd(struct adapter *padapter)
-{
-	struct cmd_obj		*ppscmd;
-	struct drvextra_cmd_parm	*pdrvextra_cmd_parm;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	u8 res = _SUCCESS;
-
-	ppscmd = kzalloc_obj(*ppscmd, GFP_ATOMIC);
-	if (!ppscmd) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm = kzalloc_obj(*pdrvextra_cmd_parm, GFP_ATOMIC);
-	if (!pdrvextra_cmd_parm) {
-		kfree(ppscmd);
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm->ec_id = POWER_SAVING_CTRL_WK_CID;
-	pdrvextra_cmd_parm->type = 0;
-	pdrvextra_cmd_parm->size = 0;
-	pdrvextra_cmd_parm->pbuf = NULL;
-	init_h2fwcmd_w_parm_no_rsp(ppscmd, pdrvextra_cmd_parm, SET_DRV_EXTRA_CMD);
-
-	res = rtw_enqueue_cmd(pcmdpriv, ppscmd);
-
-exit:
-	return res;
-}
-
-u32 g_wait_hiq_empty;
-
-static void rtw_chk_hi_queue_hdl(struct adapter *padapter)
-{
-	struct sta_info *psta_bmc;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	unsigned long start = jiffies;
-	u8 empty = false;
-
-	psta_bmc = rtw_get_bcmc_stainfo(padapter);
-	if (!psta_bmc)
-		return;
-
-	rtw_hal_get_hwreg(padapter, HW_VAR_CHK_HI_QUEUE_EMPTY, &empty);
-
-	while (!empty && jiffies_to_msecs(jiffies - start) < g_wait_hiq_empty) {
-		fsleep(100 * USEC_PER_MSEC);
-		rtw_hal_get_hwreg(padapter, HW_VAR_CHK_HI_QUEUE_EMPTY, &empty);
-	}
-
-	if (psta_bmc->sleepq_len == 0) {
-		if (empty == _SUCCESS) {
-			bool update_tim = false;
-
-			if (pstapriv->tim_bitmap & BIT(0))
-				update_tim = true;
-
-			pstapriv->tim_bitmap &= ~BIT(0);
-			pstapriv->sta_dz_bitmap &= ~BIT(0);
-
-			if (update_tim)
-				update_beacon(padapter, WLAN_EID_TIM, true);
-		} else {/* re check again */
-			rtw_chk_hi_queue_cmd(padapter);
-		}
-	}
-}
-
-u8 rtw_chk_hi_queue_cmd(struct adapter *padapter)
-{
-	struct cmd_obj	*ph2c;
-	struct drvextra_cmd_parm	*pdrvextra_cmd_parm;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	u8 res = _SUCCESS;
-
-	ph2c = kzalloc_obj(*ph2c, GFP_ATOMIC);
-	if (!ph2c) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm = kzalloc_obj(*pdrvextra_cmd_parm, GFP_ATOMIC);
-	if (!pdrvextra_cmd_parm) {
-		kfree(ph2c);
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm->ec_id = CHECK_HIQ_WK_CID;
-	pdrvextra_cmd_parm->type = 0;
-	pdrvextra_cmd_parm->size = 0;
-	pdrvextra_cmd_parm->pbuf = NULL;
-
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, SET_DRV_EXTRA_CMD);
-
-	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-
-exit:
-	return res;
-}
-
-struct btinfo {
-	u8 cid;
-	u8 len;
-
-	u8 bConnection:1;
-	u8 bSCOeSCO:1;
-	u8 bInQPage:1;
-	u8 bACLBusy:1;
-	u8 bSCOBusy:1;
-	u8 bHID:1;
-	u8 bA2DP:1;
-	u8 bFTP:1;
-
-	u8 retry_cnt:4;
-	u8 rsvd_34:1;
-	u8 rsvd_35:1;
-	u8 rsvd_36:1;
-	u8 rsvd_37:1;
-
-	u8 rssi;
-
-	u8 rsvd_50:1;
-	u8 rsvd_51:1;
-	u8 rsvd_52:1;
-	u8 rsvd_53:1;
-	u8 rsvd_54:1;
-	u8 rsvd_55:1;
-	u8 eSCO_SCO:1;
-	u8 Master_Slave:1;
-
-	u8 rsvd_6;
-	u8 rsvd_7;
-};
-
-static void rtw_btinfo_hdl(struct adapter *adapter, u8 *buf, u16 buf_len)
-{
-	#define BTINFO_WIFI_FETCH 0x23
-	#define BTINFO_BT_AUTO_RPT 0x27
-	struct btinfo *info = (struct btinfo *)buf;
-	u8 cmd_idx;
-	u8 len;
-
-	cmd_idx = info->cid;
-
-	if (info->len > buf_len - 2) {
-		WARN_ON(1);
-		len = buf_len - 2;
-	} else {
-		len = info->len;
-	}
-
-	/* transform BT-FW btinfo to WiFI-FW C2H format and notify */
-	if (cmd_idx == BTINFO_WIFI_FETCH)
-		buf[1] = 0;
-	else if (cmd_idx == BTINFO_BT_AUTO_RPT)
-		buf[1] = 2;
-	hal_btcoex_BtInfoNotify(adapter, len + 1, &buf[1]);
-}
-
-u8 rtw_c2h_packet_wk_cmd(struct adapter *padapter, u8 *pbuf, u16 length)
-{
-	struct cmd_obj *ph2c;
-	struct drvextra_cmd_parm *pdrvextra_cmd_parm;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	u8 res = _SUCCESS;
-
-	ph2c = kzalloc_obj(*ph2c, GFP_ATOMIC);
-	if (!ph2c) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm = kzalloc_obj(*pdrvextra_cmd_parm, GFP_ATOMIC);
-	if (!pdrvextra_cmd_parm) {
-		kfree(ph2c);
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm->ec_id = C2H_WK_CID;
-	pdrvextra_cmd_parm->type = 0;
-	pdrvextra_cmd_parm->size = length;
-	pdrvextra_cmd_parm->pbuf = pbuf;
-
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, SET_DRV_EXTRA_CMD);
-
-	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-
-exit:
-	return res;
-}
-
-/* do not call R/W in this function, because SDIO interrupt have claim host */
-/* or deadlock will happen and cause special-systemserver-died in android */
-u8 rtw_c2h_wk_cmd(struct adapter *padapter, u8 *c2h_evt)
-{
-	struct cmd_obj *ph2c;
-	struct drvextra_cmd_parm *pdrvextra_cmd_parm;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	u8 res = _SUCCESS;
-
-	ph2c = kzalloc_obj(*ph2c);
-	if (!ph2c) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm = kzalloc_obj(*pdrvextra_cmd_parm);
-	if (!pdrvextra_cmd_parm) {
-		kfree(ph2c);
-		res = _FAIL;
-		goto exit;
-	}
-
-	pdrvextra_cmd_parm->ec_id = C2H_WK_CID;
-	pdrvextra_cmd_parm->type = 0;
-	pdrvextra_cmd_parm->size =  c2h_evt ? 16 : 0;
-	pdrvextra_cmd_parm->pbuf = c2h_evt;
-
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, SET_DRV_EXTRA_CMD);
-
-	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-
-exit:
-
-	return res;
-}
-
-static void c2h_wk_callback(struct work_struct *work)
-{
-	struct evt_priv *evtpriv = container_of(work, struct evt_priv, c2h_wk);
-	struct adapter *adapter = container_of(evtpriv, struct adapter, evtpriv);
-	u8 *c2h_evt;
-	c2h_id_filter ccx_id_filter = rtw_hal_c2h_id_filter_ccx(adapter);
-
-	evtpriv->c2h_wk_alive = true;
-
-	while (!rtw_cbuf_empty(evtpriv->c2h_queue)) {
-		c2h_evt = (u8 *)rtw_cbuf_pop(evtpriv->c2h_queue);
-		if (c2h_evt) {
-			/* This C2H event is read, clear it */
-			c2h_evt_clear(adapter);
-		} else {
-			c2h_evt = kmalloc(16, GFP_ATOMIC);
-			if (c2h_evt) {
-				/* This C2H event is not read, read & clear now */
-				if (c2h_evt_read_88xx(adapter, c2h_evt) != _SUCCESS) {
-					kfree(c2h_evt);
-					continue;
-				}
-			} else {
-				continue;
-			}
-		}
-
-		/* Special pointer to trigger c2h_evt_clear only */
-		if ((void *)c2h_evt == (void *)evtpriv)
-			continue;
-
-		if (!rtw_hal_c2h_valid(adapter, c2h_evt)) {
-			kfree(c2h_evt);
-			continue;
-		}
-
-		if (ccx_id_filter(c2h_evt)) {
-			/* Handle CCX report here */
-			rtw_hal_c2h_handler(adapter, c2h_evt);
-			kfree(c2h_evt);
-		} else {
-			/* Enqueue into cmd_thread for others */
-			rtw_c2h_wk_cmd(adapter, c2h_evt);
-		}
-	}
-
-	evtpriv->c2h_wk_alive = false;
-}
-
-u8 rtw_drvextra_cmd_hdl(struct adapter *padapter, unsigned char *pbuf)
-{
-	struct drvextra_cmd_parm *pdrvextra_cmd;
-
-	if (!pbuf)
-		return H2C_PARAMETERS_ERROR;
-
-	pdrvextra_cmd = (struct drvextra_cmd_parm *)pbuf;
-
-	switch (pdrvextra_cmd->ec_id) {
-	case DYNAMIC_CHK_WK_CID:/* only  primary padapter go to this cmd, but execute dynamic_chk_wk_hdl() for two interfaces */
-		dynamic_chk_wk_hdl(padapter);
-		break;
-	case POWER_SAVING_CTRL_WK_CID:
-		rtw_ps_processor(padapter);
-		break;
-	case LPS_CTRL_WK_CID:
-		lps_ctrl_wk_hdl(padapter, (u8)pdrvextra_cmd->type);
-		break;
-	case DM_IN_LPS_WK_CID:
-		rtw_dm_in_lps_hdl(padapter);
-		break;
-	case LPS_CHANGE_DTIM_CID:
-		rtw_lps_change_dtim_hdl(padapter, (u8)pdrvextra_cmd->type);
-		break;
-	case CHECK_HIQ_WK_CID:
-		rtw_chk_hi_queue_hdl(padapter);
-		break;
-	case RESET_SECURITYPRIV:
-		rtw_reset_securitypriv(padapter);
-		break;
-	case FREE_ASSOC_RESOURCES:
-		rtw_free_assoc_resources(padapter, 1);
-		break;
-	case C2H_WK_CID:
-		rtw_hal_set_hwreg_with_buf(padapter, HW_VAR_C2H_HANDLE,
-					   pdrvextra_cmd->pbuf, pdrvextra_cmd->size);
-		break;
-	case DM_RA_MSK_WK_CID:
-		rtw_dm_ra_mask_hdl(padapter, (struct sta_info *)pdrvextra_cmd->pbuf);
-		break;
-	case BTINFO_WK_CID:
-		rtw_btinfo_hdl(padapter, pdrvextra_cmd->pbuf, pdrvextra_cmd->size);
-		break;
-	default:
-		break;
-	}
-
-	if (pdrvextra_cmd->pbuf && pdrvextra_cmd->size > 0)
-		kfree(pdrvextra_cmd->pbuf);
-
-	return H2C_SUCCESS;
-}
-
-void rtw_survey_cmd_callback(struct adapter *padapter,  struct cmd_obj *pcmd)
-{
-	struct	mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	if (pcmd->res != H2C_SUCCESS) {
-		/* TODO: cancel timer and do timeout handler directly... */
-		_set_timer(&pmlmepriv->scan_to_timer, 1);
-	}
-
-	/*  free cmd */
-	rtw_free_cmd_obj(pcmd);
-}
-
-void rtw_disassoc_cmd_callback(struct adapter *padapter,  struct cmd_obj *pcmd)
-{
-	struct	mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	if (pcmd->res != H2C_SUCCESS) {
-		spin_lock_bh(&pmlmepriv->lock);
-		set_fwstate(pmlmepriv, _FW_LINKED);
-		spin_unlock_bh(&pmlmepriv->lock);
-
-		return;
-	}
-	/*  free cmd */
-	rtw_free_cmd_obj(pcmd);
-}
-
-void rtw_joinbss_cmd_callback(struct adapter *padapter,  struct cmd_obj *pcmd)
-{
-	struct	mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	if (pcmd->res != H2C_SUCCESS) {
-		/* TODO: cancel timer and do timeout handler directly... */
-		_set_timer(&pmlmepriv->assoc_timer, 1);
-	}
-
-	rtw_free_cmd_obj(pcmd);
-}
-
-void rtw_createbss_cmd_callback(struct adapter *padapter, struct cmd_obj *pcmd)
-{
-	struct sta_info *psta = NULL;
-	struct wlan_network *pwlan = NULL;
-	struct	mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct wlan_bssid_ex *pnetwork = (struct wlan_bssid_ex *)pcmd->parmbuf;
-	struct wlan_network *tgt_network = &pmlmepriv->cur_network;
-
-	if (!pcmd->parmbuf)
-		goto exit;
-
-	if (pcmd->res != H2C_SUCCESS)
-		_set_timer(&pmlmepriv->assoc_timer, 1);
-
-	timer_delete_sync(&pmlmepriv->assoc_timer);
-
-	spin_lock_bh(&pmlmepriv->lock);
-
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		psta = rtw_get_stainfo(&padapter->stapriv, pnetwork->mac_address);
-		if (!psta) {
-			psta = rtw_alloc_stainfo(&padapter->stapriv, pnetwork->mac_address);
-			if (!psta)
-				goto createbss_cmd_fail;
-		}
-
-		rtw_indicate_connect(padapter);
-	} else {
-		pwlan = rtw_alloc_network(pmlmepriv);
-		spin_lock_bh(&pmlmepriv->scanned_queue.lock);
-		if (!pwlan) {
-			pwlan = rtw_get_oldest_wlan_network(&pmlmepriv->scanned_queue);
-			if (!pwlan) {
-				spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
-				goto createbss_cmd_fail;
-			}
-			pwlan->last_scanned = jiffies;
-		} else {
-			list_add_tail(&pwlan->list, &pmlmepriv->scanned_queue.queue);
-		}
-
-		pnetwork->length = get_wlan_bssid_ex_sz(pnetwork);
-		memcpy(&pwlan->network, pnetwork, pnetwork->length);
-		/* pwlan->fixed = true; */
-
-		/* list_add_tail(&(pwlan->list), &pmlmepriv->scanned_queue.queue); */
-
-		/*  copy pdev_network information to	pmlmepriv->cur_network */
-		memcpy(&tgt_network->network, pnetwork, (get_wlan_bssid_ex_sz(pnetwork)));
-
-		_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
-
-		spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
-		/*  we will set _FW_LINKED when there is one more sat to join us (rtw_stassoc_event_callback) */
-	}
-
-createbss_cmd_fail:
-
-	spin_unlock_bh(&pmlmepriv->lock);
-exit:
-	rtw_free_cmd_obj(pcmd);
-}
-
-void rtw_setstaKey_cmdrsp_callback(struct adapter *padapter,  struct cmd_obj *pcmd)
-{
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct set_stakey_rsp *psetstakey_rsp = (struct set_stakey_rsp *)(pcmd->rsp);
-	struct sta_info *psta = rtw_get_stainfo(pstapriv, psetstakey_rsp->addr);
-
-	if (!psta)
-		goto exit;
-
-exit:
-	rtw_free_cmd_obj(pcmd);
-}
-
-void rtw_setassocsta_cmdrsp_callback(struct adapter *padapter,  struct cmd_obj *pcmd)
-{
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct set_assocsta_parm *passocsta_parm = (struct set_assocsta_parm *)(pcmd->parmbuf);
-	struct set_assocsta_rsp *passocsta_rsp = (struct set_assocsta_rsp *)(pcmd->rsp);
-	struct sta_info *psta = rtw_get_stainfo(pstapriv, passocsta_parm->addr);
-
-	if (!psta)
-		goto exit;
-
-	psta->aid = passocsta_rsp->cam_id;
-	psta->mac_id = passocsta_rsp->cam_id;
-
-	spin_lock_bh(&pmlmepriv->lock);
-
-	if (check_fwstate(pmlmepriv, WIFI_MP_STATE) && check_fwstate(pmlmepriv, _FW_UNDER_LINKING))
-		_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
-
-	set_fwstate(pmlmepriv, _FW_LINKED);
-	spin_unlock_bh(&pmlmepriv->lock);
-
-exit:
-	rtw_free_cmd_obj(pcmd);
-}
diff --git a/drivers/staging/rtl8723bs/core/rtw_efuse.c b/drivers/staging/rtl8723bs/core/rtw_efuse.c
deleted file mode 100644
index 168ecb7a998f..000000000000
--- a/drivers/staging/rtl8723bs/core/rtw_efuse.c
+++ /dev/null
@@ -1,253 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <drv_types.h>
-#include <hal_data.h>
-#include <linux/jiffies.h>
-
-/*  11/16/2008 MH Add description. Get current efuse area enabled word!!. */
-u8
-rtw_efuse_calculate_word_counts(u8 word_en)
-{
-	u8 word_cnts = 0;
-
-	if (!(word_en & BIT(0)))
-		word_cnts++; /*  0 : write enable */
-	if (!(word_en & BIT(1)))
-		word_cnts++;
-	if (!(word_en & BIT(2)))
-		word_cnts++;
-	if (!(word_en & BIT(3)))
-		word_cnts++;
-	return word_cnts;
-}
-
-/*-----------------------------------------------------------------------------
- * Function:	rtw_efuse_read_1_byte
- *
- * Overview:	Copy from WMAC fot EFUSE read 1 byte.
- *
- * Input:       NONE
- *
- * Output:      NONE
- *
- * Return:      NONE
- *
- * Revised History:
- * When			Who		Remark
- * 09/23/2008	MHC		Copy from WMAC.
- *
- */
-u8 rtw_efuse_read_1_byte(struct adapter *Adapter, u16 Address)
-{
-	u8 Bytetemp = {0x00};
-	u8 temp = {0x00};
-	u32 k = 0;
-	u16 contentLen = 0;
-
-	Hal_GetEfuseDefinition(Adapter, EFUSE_WIFI, TYPE_EFUSE_REAL_CONTENT_LEN, &contentLen);
-
-	if (Address < contentLen) {/* E-fuse 512Byte */
-		/* Write E-fuse Register address bit0~7 */
-		temp = Address & 0xFF;
-		rtw_write8(Adapter, EFUSE_CTRL + 1, temp);
-		Bytetemp = rtw_read8(Adapter, EFUSE_CTRL + 2);
-		/* Write E-fuse Register address bit8~9 */
-		temp = ((Address >> 8) & 0x03) | (Bytetemp & 0xFC);
-		rtw_write8(Adapter, EFUSE_CTRL + 2, temp);
-
-		/* Write 0x30[31]= 0 */
-		Bytetemp = rtw_read8(Adapter, EFUSE_CTRL + 3);
-		temp = Bytetemp & 0x7F;
-		rtw_write8(Adapter, EFUSE_CTRL + 3, temp);
-
-		/* Wait Write-ready (0x30[31]= 1) */
-		Bytetemp = rtw_read8(Adapter, EFUSE_CTRL + 3);
-		while (!(Bytetemp & 0x80)) {
-			Bytetemp = rtw_read8(Adapter, EFUSE_CTRL + 3);
-			k++;
-			if (k == 1000)
-				break;
-		}
-		return rtw_read8(Adapter, EFUSE_CTRL);
-	} else {
-		return 0xFF;
-	}
-} /* rtw_efuse_read_1_byte */
-
-/*  11/16/2008 MH Read one byte from real Efuse. */
-u8 rtw_efuse_one_byte_read(struct adapter *padapter, u16 addr, u8 *data)
-{
-	u32 tmpidx = 0;
-	u8 bResult;
-	u8 readbyte;
-
-	/*  <20130121, Kordan> For SMIC EFUSE specificatoin. */
-	/* 0x34[11]: SW force PGMEN input of efuse to high. (for the bank selected by 0x34[9:8]) */
-	/* PHY_SetMacReg(padapter, 0x34, BIT11, 0); */
-	rtw_write16(padapter, 0x34, rtw_read16(padapter, 0x34) & (~BIT(11)));
-
-	/*  -----------------e-fuse reg ctrl --------------------------------- */
-	/* address */
-	rtw_write8(padapter, EFUSE_CTRL + 1, (u8)(addr & 0xff));
-	rtw_write8(padapter, EFUSE_CTRL + 2, ((u8)((addr >> 8) & 0x03)) |
-	(rtw_read8(padapter, EFUSE_CTRL + 2) & 0xFC));
-
-	/* rtw_write8(padapter, EFUSE_CTRL+3,  0x72); read cmd */
-	/* Write bit 32 0 */
-	readbyte = rtw_read8(padapter, EFUSE_CTRL + 3);
-	rtw_write8(padapter, EFUSE_CTRL + 3, (readbyte & 0x7f));
-
-	while (!(0x80 & rtw_read8(padapter, EFUSE_CTRL + 3)) && (tmpidx < 1000)) {
-		mdelay(1);
-		tmpidx++;
-	}
-	if (tmpidx < 100) {
-		*data = rtw_read8(padapter, EFUSE_CTRL);
-		bResult = true;
-	} else {
-		*data = 0xff;
-		bResult = false;
-	}
-
-	return bResult;
-}
-
-/*-----------------------------------------------------------------------------
- * Function:	Efuse_ReadAllMap
- *
- * Overview:	Read All Efuse content
- *
- * Input:       NONE
- *
- * Output:      NONE
- *
- * Return:      NONE
- *
- * Revised History:
- * When			Who		Remark
- * 11/11/2008	MHC		Create Version 0.
- *
- */
-static void Efuse_ReadAllMap(struct adapter *padapter, u8 efuseType, u8 *Efuse)
-{
-	u16 mapLen = 0;
-
-	Hal_EfusePowerSwitch(padapter, true);
-
-	Hal_GetEfuseDefinition(padapter, efuseType, TYPE_EFUSE_MAP_LEN, &mapLen);
-
-	Hal_ReadEFuse(padapter, efuseType, 0, mapLen, Efuse);
-
-	Hal_EfusePowerSwitch(padapter, false);
-}
-
-/*-----------------------------------------------------------------------------
- * Function:	efuse_ShadowRead1Byte
- *		efuse_ShadowRead2Byte
- *		efuse_ShadowRead4Byte
- *
- * Overview:	Read from efuse init map by one/two/four bytes !!!!!
- *
- * Input:       NONE
- *
- * Output:      NONE
- *
- * Return:      NONE
- *
- * Revised History:
- * When			Who		Remark
- * 11/12/2008	MHC		Create Version 0.
- *
- */
-static void efuse_ShadowRead1Byte(struct adapter *padapter, u16 Offset, u8 *Value)
-{
-	struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
-
-	*Value = pEEPROM->efuse_eeprom_data[Offset];
-
-}	/*  EFUSE_ShadowRead1Byte */
-
-/* Read Two Bytes */
-static void efuse_ShadowRead2Byte(struct adapter *padapter, u16 Offset, u16 *Value)
-{
-	struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
-
-	*Value = pEEPROM->efuse_eeprom_data[Offset];
-	*Value |= pEEPROM->efuse_eeprom_data[Offset + 1] << 8;
-
-}	/*  EFUSE_ShadowRead2Byte */
-
-/* Read Four Bytes */
-static void efuse_ShadowRead4Byte(struct adapter *padapter, u16 Offset, u32 *Value)
-{
-	struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
-
-	*Value = pEEPROM->efuse_eeprom_data[Offset];
-	*Value |= pEEPROM->efuse_eeprom_data[Offset + 1] << 8;
-	*Value |= pEEPROM->efuse_eeprom_data[Offset + 2] << 16;
-	*Value |= pEEPROM->efuse_eeprom_data[Offset + 3] << 24;
-
-}	/*  efuse_ShadowRead4Byte */
-
-/*-----------------------------------------------------------------------------
- * Function:	rtw_efuse_shadow_map_update
- *
- * Overview:	Transfer current EFUSE content to shadow init and modify map.
- *
- * Input:       NONE
- *
- * Output:      NONE
- *
- * Return:      NONE
- *
- * Revised History:
- * When			Who		Remark
- * 11/13/2008	MHC		Create Version 0.
- *
- */
-void rtw_efuse_shadow_map_update(struct adapter *padapter, u8 efuseType)
-{
-	struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
-	u16 mapLen = 0;
-
-	Hal_GetEfuseDefinition(padapter, efuseType, TYPE_EFUSE_MAP_LEN, &mapLen);
-
-	if (pEEPROM->bautoload_fail_flag)
-		memset(pEEPROM->efuse_eeprom_data, 0xFF, mapLen);
-	else
-		Efuse_ReadAllMap(padapter, efuseType, pEEPROM->efuse_eeprom_data);
-
-	/* PlatformMoveMemory((void *)&pHalData->EfuseMap[EFUSE_MODIFY_MAP][0], */
-	/* void *)&pHalData->EfuseMap[EFUSE_INIT_MAP][0], mapLen); */
-} /*  rtw_efuse_shadow_map_update */
-
-/*-----------------------------------------------------------------------------
- * Function:	rtw_efuse_shadow_read
- *
- * Overview:	Read from efuse init map !!!!!
- *
- * Input:       NONE
- *
- * Output:      NONE
- *
- * Return:      NONE
- *
- * Revised History:
- * When			Who		Remark
- * 11/12/2008	MHC		Create Version 0.
- *
- */
-void rtw_efuse_shadow_read(struct adapter *padapter, u8 Type, u16 Offset, u32 *Value)
-{
-	if (Type == 1)
-		efuse_ShadowRead1Byte(padapter, Offset, (u8 *)Value);
-	else if (Type == 2)
-		efuse_ShadowRead2Byte(padapter, Offset, (u16 *)Value);
-	else if (Type == 4)
-		efuse_ShadowRead4Byte(padapter, Offset, (u32 *)Value);
-
-} /* rtw_efuse_shadow_read*/
diff --git a/drivers/staging/rtl8723bs/core/rtw_ieee80211.c b/drivers/staging/rtl8723bs/core/rtw_ieee80211.c
deleted file mode 100644
index 66f476a46aad..000000000000
--- a/drivers/staging/rtl8723bs/core/rtw_ieee80211.c
+++ /dev/null
@@ -1,1199 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <drv_types.h>
-#include <linux/hex.h>
-#include <linux/of.h>
-#include <linux/unaligned.h>
-
-u8 RTW_WPA_OUI_TYPE[] = { 0x00, 0x50, 0xf2, 1 };
-u16 RTW_WPA_VERSION = 1;
-u8 WPA_AUTH_KEY_MGMT_NONE[] = { 0x00, 0x50, 0xf2, 0 };
-u8 WPA_AUTH_KEY_MGMT_UNSPEC_802_1X[] = { 0x00, 0x50, 0xf2, 1 };
-u8 WPA_AUTH_KEY_MGMT_PSK_OVER_802_1X[] = { 0x00, 0x50, 0xf2, 2 };
-u8 WPA_CIPHER_SUITE_NONE[] = { 0x00, 0x50, 0xf2, 0 };
-u8 WPA_CIPHER_SUITE_WEP40[] = { 0x00, 0x50, 0xf2, 1 };
-u8 WPA_CIPHER_SUITE_TKIP[] = { 0x00, 0x50, 0xf2, 2 };
-u8 WPA_CIPHER_SUITE_WRAP[] = { 0x00, 0x50, 0xf2, 3 };
-u8 WPA_CIPHER_SUITE_CCMP[] = { 0x00, 0x50, 0xf2, 4 };
-u8 WPA_CIPHER_SUITE_WEP104[] = { 0x00, 0x50, 0xf2, 5 };
-
-u16 RSN_VERSION_BSD = 1;
-u8 RSN_AUTH_KEY_MGMT_UNSPEC_802_1X[] = { 0x00, 0x0f, 0xac, 1 };
-u8 RSN_AUTH_KEY_MGMT_PSK_OVER_802_1X[] = { 0x00, 0x0f, 0xac, 2 };
-u8 RSN_CIPHER_SUITE_NONE[] = { 0x00, 0x0f, 0xac, 0 };
-u8 RSN_CIPHER_SUITE_WEP40[] = { 0x00, 0x0f, 0xac, 1 };
-u8 RSN_CIPHER_SUITE_TKIP[] = { 0x00, 0x0f, 0xac, 2 };
-u8 RSN_CIPHER_SUITE_WRAP[] = { 0x00, 0x0f, 0xac, 3 };
-u8 RSN_CIPHER_SUITE_CCMP[] = { 0x00, 0x0f, 0xac, 4 };
-u8 RSN_CIPHER_SUITE_WEP104[] = { 0x00, 0x0f, 0xac, 5 };
-/*  */
-/*  for adhoc-master to generate ie and provide supported-rate to fw */
-/*  */
-
-static u8 WIFI_CCKRATES[] = {
-		(IEEE80211_CCK_RATE_1MB | IEEE80211_BASIC_RATE_MASK),
-		(IEEE80211_CCK_RATE_2MB | IEEE80211_BASIC_RATE_MASK),
-		(IEEE80211_CCK_RATE_5MB | IEEE80211_BASIC_RATE_MASK),
-		(IEEE80211_CCK_RATE_11MB | IEEE80211_BASIC_RATE_MASK)
-};
-
-static u8 WIFI_OFDMRATES[] = {
-		(IEEE80211_OFDM_RATE_6MB),
-		(IEEE80211_OFDM_RATE_9MB),
-		(IEEE80211_OFDM_RATE_12MB),
-		(IEEE80211_OFDM_RATE_18MB),
-		(IEEE80211_OFDM_RATE_24MB),
-		IEEE80211_OFDM_RATE_36MB,
-		IEEE80211_OFDM_RATE_48MB,
-		IEEE80211_OFDM_RATE_54MB
-};
-
-int rtw_get_bit_value_from_ieee_value(u8 val)
-{
-	static const unsigned char dot11_rate_table[] = {
-		2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108, 0
-	}; /*  last element must be zero!! */
-	int i = 0;
-
-	while (dot11_rate_table[i] != 0) {
-		if (dot11_rate_table[i] == val)
-			return BIT(i);
-		i++;
-	}
-	return 0;
-}
-
-bool rtw_is_cckrates_included(u8 *rate)
-{
-	while (*rate) {
-		u8 r = *rate & 0x7f;
-
-		if (r == 2 || r == 4 || r == 11 || r == 22)
-			return true;
-		rate++;
-	}
-
-	return false;
-}
-
-bool rtw_is_cckratesonly_included(u8 *rate)
-{
-	while (*rate) {
-		u8 r = *rate & 0x7f;
-
-		if (r != 2 && r != 4 && r != 11 && r != 22)
-			return false;
-		rate++;
-	}
-
-	return true;
-}
-
-int rtw_check_network_type(unsigned char *rate, int channel)
-{
-	if (channel > 14)
-		return WIRELESS_INVALID;
-	/* could be pure B, pure G, or B/G */
-	if (rtw_is_cckratesonly_included(rate))
-		return WIRELESS_11B;
-	if (rtw_is_cckrates_included(rate))
-		return WIRELESS_11BG;
-	return WIRELESS_11G;
-}
-
-u8 *rtw_set_fixed_ie(unsigned char *pbuf, unsigned int len, unsigned char *source,
-				unsigned int *frlen)
-{
-	memcpy(pbuf, source, len);
-	*frlen = *frlen + len;
-	return pbuf + len;
-}
-
-/*  rtw_set_ie will update frame length */
-u8 *rtw_set_ie(u8 *pbuf,
-	       signed int index,
-	       uint len,
-	       u8 *source,
-	       uint *frlen) /* frame length */
-{
-	*pbuf = (u8)index;
-
-	*(pbuf + 1) = (u8)len;
-
-	if (len > 0)
-		memcpy(pbuf + 2, source, len);
-
-	*frlen = *frlen + (len + 2);
-
-	return pbuf + len + 2;
-}
-
-/* index: the information element id index, limit is the limit for search */
-u8 *rtw_get_ie(u8 *pbuf, signed int index, signed int *len, signed int limit)
-{
-	signed int tmp, i;
-	u8 *p;
-
-	if (limit < 2)
-		return NULL;
-
-	p = pbuf;
-	i = 0;
-	*len = 0;
-	while (i + 2 <= limit) {
-		tmp = *(p + 1);
-		if (i + 2 + tmp > limit)
-			break;
-
-		if (*p == index) {
-			*len = tmp;
-			return p;
-		}
-
-		p += (tmp + 2);
-		i += (tmp + 2);
-	}
-	return NULL;
-}
-
-/**
- * rtw_get_ie_ex - Search specific IE from a series of IEs
- * @in_ie: Address of IEs to search
- * @in_len: Length limit from in_ie
- * @eid: Element ID to match
- * @oui: OUI to match
- * @oui_len: OUI length
- * @ie: If not NULL and the specific IE is found, the IE will be copied to the buf starting from the specific IE
- * @ielen: If not NULL and the specific IE is found, will set to the length of the entire IE
- *
- * Returns: The address of the specific IE found, or NULL
- */
-u8 *rtw_get_ie_ex(u8 *in_ie, uint in_len, u8 eid, u8 *oui, u8 oui_len, u8 *ie, uint *ielen)
-{
-	uint cnt;
-	u8 *target_ie = NULL;
-
-	if (ielen)
-		*ielen = 0;
-
-	if (!in_ie || in_len <= 0)
-		return target_ie;
-
-	cnt = 0;
-
-	while (cnt + 2 <= in_len) {
-		u8 ie_len = in_ie[cnt + 1];
-
-		if (cnt + 2 + ie_len > in_len)
-			break;
-
-		if (eid == in_ie[cnt] &&
-		    (!oui || (ie_len >= oui_len && !memcmp(&in_ie[cnt + 2], oui, oui_len)))) {
-			target_ie = &in_ie[cnt];
-
-			if (ie)
-				memcpy(ie, &in_ie[cnt], ie_len + 2);
-
-			if (ielen)
-				*ielen = ie_len + 2;
-
-			break;
-		}
-		cnt += ie_len + 2; /* goto next */
-	}
-
-	return target_ie;
-}
-
-/**
- * rtw_ies_remove_ie - Find matching IEs and remove
- * @ies: Address of IEs to search
- * @ies_len: Pointer of length of ies, will update to new length
- * @offset: The offset to start search
- * @eid: Element ID to match
- * @oui: OUI to match
- * @oui_len: OUI length
- *
- * Returns: _SUCCESS: ies is updated, _FAIL: not updated
- */
-int rtw_ies_remove_ie(u8 *ies, uint *ies_len, uint offset, u8 eid, u8 *oui, u8 oui_len)
-{
-	int ret = _FAIL;
-	u8 *target_ie;
-	u32 target_ielen;
-	u8 *start;
-	uint search_len;
-
-	if (!ies || !ies_len || *ies_len <= offset)
-		goto exit;
-
-	start = ies + offset;
-	search_len = *ies_len - offset;
-
-	while (1) {
-		target_ie = rtw_get_ie_ex(start, search_len, eid, oui, oui_len, NULL, &target_ielen);
-		if (target_ie && target_ielen) {
-			u8 *remain_ies = target_ie + target_ielen;
-			uint remain_len = search_len - (remain_ies - start);
-
-			memcpy(target_ie, remain_ies, remain_len);
-			*ies_len = *ies_len - target_ielen;
-			ret = _SUCCESS;
-
-			start = target_ie;
-			search_len = remain_len;
-		} else {
-			break;
-		}
-	}
-exit:
-	return ret;
-}
-
-void rtw_set_supported_rate(u8 *supported_rates, uint mode)
-{
-	memset(supported_rates, 0, NDIS_802_11_LENGTH_RATES_EX);
-
-	switch (mode) {
-	case WIRELESS_11B:
-		memcpy(supported_rates, WIFI_CCKRATES, IEEE80211_CCK_RATE_LEN);
-		break;
-
-	case WIRELESS_11G:
-		memcpy(supported_rates, WIFI_OFDMRATES, IEEE80211_NUM_OFDM_RATESLEN);
-		break;
-
-	case WIRELESS_11BG:
-	case WIRELESS_11G_24N:
-	case WIRELESS_11_24N:
-	case WIRELESS_11BG_24N:
-		memcpy(supported_rates, WIFI_CCKRATES, IEEE80211_CCK_RATE_LEN);
-		memcpy(supported_rates + IEEE80211_CCK_RATE_LEN, WIFI_OFDMRATES, IEEE80211_NUM_OFDM_RATESLEN);
-		break;
-	}
-}
-
-uint rtw_get_rateset_len(u8 *rateset)
-{
-	uint i;
-
-	for (i = 0; i < 13; i++)
-		if (rateset[i] == 0)
-			break;
-	return i;
-}
-
-int rtw_generate_ie(struct registry_priv *pregistrypriv)
-{
-	u8 wireless_mode;
-	int	sz = 0, rate_len;
-	struct wlan_bssid_ex *pdev_network = &pregistrypriv->dev_network;
-	u8 *ie = pdev_network->ies;
-
-	/* timestamp will be inserted by hardware */
-	sz += 8;
-	ie += sz;
-
-	/* beacon interval : 2bytes */
-	*(__le16 *)ie = cpu_to_le16((u16)pdev_network->configuration.beacon_period);/* BCN_INTERVAL; */
-	sz += 2;
-	ie += 2;
-
-	/* capability info */
-	*(u16 *)ie = 0;
-
-	*(__le16 *)ie |= cpu_to_le16(WLAN_CAPABILITY_IBSS);
-
-	if (pregistrypriv->preamble == PREAMBLE_SHORT)
-		*(__le16 *)ie |= cpu_to_le16(WLAN_CAPABILITY_SHORT_PREAMBLE);
-
-	if (pdev_network->privacy)
-		*(__le16 *)ie |= cpu_to_le16(WLAN_CAPABILITY_PRIVACY);
-
-	sz += 2;
-	ie += 2;
-
-	/* SSID */
-	ie = rtw_set_ie(ie, WLAN_EID_SSID, pdev_network->ssid.ssid_length, pdev_network->ssid.ssid, &sz);
-
-	/* supported rates */
-	wireless_mode = pregistrypriv->wireless_mode;
-
-	rtw_set_supported_rate(pdev_network->supported_rates, wireless_mode);
-
-	rate_len = rtw_get_rateset_len(pdev_network->supported_rates);
-
-	if (rate_len > 8) {
-		ie = rtw_set_ie(ie, WLAN_EID_SUPP_RATES, 8, pdev_network->supported_rates, &sz);
-		/* ie = rtw_set_ie(ie, WLAN_EID_EXT_SUPP_RATES, (rate_len - 8), (pdev_network->supported_rates + 8), &sz); */
-	} else {
-		ie = rtw_set_ie(ie, WLAN_EID_SUPP_RATES, rate_len, pdev_network->supported_rates, &sz);
-	}
-
-	/* DS parameter set */
-	ie = rtw_set_ie(ie, WLAN_EID_DS_PARAMS, 1, (u8 *)&(pdev_network->configuration.ds_config), &sz);
-
-	/* IBSS Parameter Set */
-
-	ie = rtw_set_ie(ie, WLAN_EID_IBSS_PARAMS, 2, (u8 *)&(pdev_network->configuration.atim_window), &sz);
-
-	if (rate_len > 8)
-		ie = rtw_set_ie(ie, WLAN_EID_EXT_SUPP_RATES, (rate_len - 8), (pdev_network->supported_rates + 8), &sz);
-
-	/* HT Cap. */
-	if ((pregistrypriv->wireless_mode & WIRELESS_11_24N) &&
-	    pregistrypriv->ht_enable) {
-		/* todo: */
-	}
-
-	/* pdev_network->ie_length =  sz; update ie_length */
-
-	/* return _SUCCESS; */
-
-	return sz;
-}
-
-unsigned char *rtw_get_wpa_ie(unsigned char *pie, int *wpa_ie_len, int limit)
-{
-	int len;
-	u16 val16;
-	unsigned char wpa_oui_type[] = {0x00, 0x50, 0xf2, 0x01};
-	u8 *pbuf = pie;
-	int limit_new = limit;
-	__le16 le_tmp;
-
-	while (1) {
-		pbuf = rtw_get_ie(pbuf, WLAN_EID_VENDOR_SPECIFIC, &len, limit_new);
-
-		if (pbuf) {
-			if (len < 6)
-				goto check_next_ie;
-
-			/* check if oui matches... */
-			if (memcmp((pbuf + 2), wpa_oui_type, sizeof(wpa_oui_type)))
-				goto check_next_ie;
-
-			/* check version... */
-			memcpy((u8 *)&le_tmp, (pbuf + 6), sizeof(val16));
-
-			val16 = le16_to_cpu(le_tmp);
-			if (val16 != 0x0001)
-				goto check_next_ie;
-
-			*wpa_ie_len = *(pbuf + 1);
-
-			return pbuf;
-
-		} else {
-			*wpa_ie_len = 0;
-			return NULL;
-		}
-
-check_next_ie:
-
-		limit_new = limit - (pbuf - pie) - 2 - len;
-
-		if (limit_new <= 0)
-			break;
-
-		pbuf += (2 + len);
-	}
-
-	*wpa_ie_len = 0;
-
-	return NULL;
-}
-
-unsigned char *rtw_get_wpa2_ie(unsigned char *pie, int *rsn_ie_len, int limit)
-{
-	return rtw_get_ie(pie, WLAN_EID_RSN, rsn_ie_len, limit);
-}
-
-int rtw_get_wpa_cipher_suite(u8 *s)
-{
-	if (!memcmp(s, WPA_CIPHER_SUITE_NONE, WPA_SELECTOR_LEN))
-		return WPA_CIPHER_NONE;
-	if (!memcmp(s, WPA_CIPHER_SUITE_WEP40, WPA_SELECTOR_LEN))
-		return WPA_CIPHER_WEP40;
-	if (!memcmp(s, WPA_CIPHER_SUITE_TKIP, WPA_SELECTOR_LEN))
-		return WPA_CIPHER_TKIP;
-	if (!memcmp(s, WPA_CIPHER_SUITE_CCMP, WPA_SELECTOR_LEN))
-		return WPA_CIPHER_CCMP;
-	if (!memcmp(s, WPA_CIPHER_SUITE_WEP104, WPA_SELECTOR_LEN))
-		return WPA_CIPHER_WEP104;
-
-	return 0;
-}
-
-int rtw_get_wpa2_cipher_suite(u8 *s)
-{
-	if (!memcmp(s, RSN_CIPHER_SUITE_NONE, RSN_SELECTOR_LEN))
-		return WPA_CIPHER_NONE;
-	if (!memcmp(s, RSN_CIPHER_SUITE_WEP40, RSN_SELECTOR_LEN))
-		return WPA_CIPHER_WEP40;
-	if (!memcmp(s, RSN_CIPHER_SUITE_TKIP, RSN_SELECTOR_LEN))
-		return WPA_CIPHER_TKIP;
-	if (!memcmp(s, RSN_CIPHER_SUITE_CCMP, RSN_SELECTOR_LEN))
-		return WPA_CIPHER_CCMP;
-	if (!memcmp(s, RSN_CIPHER_SUITE_WEP104, RSN_SELECTOR_LEN))
-		return WPA_CIPHER_WEP104;
-
-	return 0;
-}
-
-int rtw_parse_wpa_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x)
-{
-	int i, ret = _SUCCESS;
-	int left, count;
-	u8 *pos;
-	u8 SUITE_1X[4] = {0x00, 0x50, 0xf2, 1};
-
-	if (wpa_ie_len <= 0) {
-		/* No WPA IE - fail silently */
-		return _FAIL;
-	}
-
-	if ((*wpa_ie != WLAN_EID_VENDOR_SPECIFIC) ||
-	    (*(wpa_ie + 1) != (u8)(wpa_ie_len - 2)) ||
-	    (memcmp(wpa_ie + 2, RTW_WPA_OUI_TYPE, WPA_SELECTOR_LEN)))
-		return _FAIL;
-
-	pos = wpa_ie;
-
-	pos += 8;
-	left = wpa_ie_len - 8;
-
-	/* group_cipher */
-	if (left >= WPA_SELECTOR_LEN) {
-		*group_cipher = rtw_get_wpa_cipher_suite(pos);
-
-		pos += WPA_SELECTOR_LEN;
-		left -= WPA_SELECTOR_LEN;
-
-	} else if (left > 0) {
-		return _FAIL;
-	}
-
-	/* pairwise_cipher */
-	if (left >= 2) {
-		/* count = le16_to_cpu(*(u16*)pos); */
-		count = get_unaligned_le16(pos);
-		pos += 2;
-		left -= 2;
-
-		if (count == 0 || left < count * WPA_SELECTOR_LEN)
-			return _FAIL;
-
-		for (i = 0; i < count; i++) {
-			*pairwise_cipher |= rtw_get_wpa_cipher_suite(pos);
-
-			pos += WPA_SELECTOR_LEN;
-			left -= WPA_SELECTOR_LEN;
-		}
-
-	} else if (left == 1) {
-		return _FAIL;
-	}
-
-	if (is_8021x) {
-		if (left >= 6) {
-			pos += 2;
-			if (!memcmp(pos, SUITE_1X, 4))
-				*is_8021x = 1;
-		}
-	}
-
-	return ret;
-}
-
-int rtw_parse_wpa2_ie(u8 *rsn_ie, int rsn_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x)
-{
-	int i, ret = _SUCCESS;
-	int left, count;
-	u8 *pos;
-	u8 SUITE_1X[4] = {0x00, 0x0f, 0xac, 0x01};
-
-	if (rsn_ie_len <= 0) {
-		/* No RSN IE - fail silently */
-		return _FAIL;
-	}
-
-	if ((*rsn_ie != WLAN_EID_RSN) || (*(rsn_ie + 1) != (u8)(rsn_ie_len - 2)))
-		return _FAIL;
-
-	pos = rsn_ie;
-	pos += 4;
-	left = rsn_ie_len - 4;
-
-	/* group_cipher */
-	if (left >= RSN_SELECTOR_LEN) {
-		*group_cipher = rtw_get_wpa2_cipher_suite(pos);
-
-		pos += RSN_SELECTOR_LEN;
-		left -= RSN_SELECTOR_LEN;
-
-	} else if (left > 0) {
-		return _FAIL;
-	}
-
-	/* pairwise_cipher */
-	if (left >= 2) {
-	  /* count = le16_to_cpu(*(u16*)pos); */
-		count = get_unaligned_le16(pos);
-		pos += 2;
-		left -= 2;
-
-		if (count == 0 || left < count * RSN_SELECTOR_LEN)
-			return _FAIL;
-
-		for (i = 0; i < count; i++) {
-			*pairwise_cipher |= rtw_get_wpa2_cipher_suite(pos);
-
-			pos += RSN_SELECTOR_LEN;
-			left -= RSN_SELECTOR_LEN;
-		}
-
-	} else if (left == 1) {
-		return _FAIL;
-	}
-
-	if (is_8021x) {
-		if (left >= 6) {
-			pos += 2;
-			if (!memcmp(pos, SUITE_1X, 4))
-				*is_8021x = 1;
-		}
-	}
-
-	return ret;
-}
-
-int rtw_get_wapi_ie(u8 *in_ie, uint in_len, u8 *wapi_ie, u16 *wapi_len)
-{
-	int len = 0;
-	u8 authmode;
-	uint	cnt;
-	u8 wapi_oui1[4] = {0x0, 0x14, 0x72, 0x01};
-	u8 wapi_oui2[4] = {0x0, 0x14, 0x72, 0x02};
-
-	if (wapi_len)
-		*wapi_len = 0;
-
-	if (!in_ie || in_len <= 0)
-		return len;
-
-	cnt = (_TIMESTAMP_ + _BEACON_ITERVAL_ + _CAPABILITY_);
-
-	while (cnt < in_len) {
-		if (cnt + 2 > in_len)
-			break;
-		if (cnt + 2 + in_ie[cnt + 1] > in_len)
-			break;
-		authmode = in_ie[cnt];
-
-		if (authmode == WLAN_EID_BSS_AC_ACCESS_DELAY &&
-		    in_ie[cnt + 1] >= 8 &&
-		    (!memcmp(&in_ie[cnt + 6], wapi_oui1, 4) ||
-		     !memcmp(&in_ie[cnt + 6], wapi_oui2, 4))) {
-			if (wapi_ie)
-				memcpy(wapi_ie, &in_ie[cnt], in_ie[cnt + 1] + 2);
-
-			if (wapi_len)
-				*wapi_len = in_ie[cnt + 1] + 2;
-		}
-
-		cnt += in_ie[cnt + 1] + 2;   /* get next */
-	}
-
-	if (wapi_len)
-		len = *wapi_len;
-
-	return len;
-}
-
-void rtw_get_sec_ie(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len, u8 *wpa_ie, u16 *wpa_len)
-{
-	u8 authmode;
-	u8 wpa_oui[4] = {0x0, 0x50, 0xf2, 0x01};
-	uint	cnt;
-
-	/* Search required WPA or WPA2 IE and copy to sec_ie[ ] */
-
-	cnt = (_TIMESTAMP_ + _BEACON_ITERVAL_ + _CAPABILITY_);
-
-	while (cnt < in_len) {
-		if (cnt + 2 > in_len)
-			break;
-		if (cnt + 2 + in_ie[cnt + 1] > in_len)
-			break;
-		authmode = in_ie[cnt];
-
-		if ((authmode == WLAN_EID_VENDOR_SPECIFIC) &&
-		    in_ie[cnt + 1] >= 4 &&
-		    (!memcmp(&in_ie[cnt + 2], &wpa_oui[0], 4))) {
-			if (wpa_ie)
-				memcpy(wpa_ie, &in_ie[cnt], in_ie[cnt + 1] + 2);
-
-			*wpa_len = in_ie[cnt + 1] + 2;
-		} else if (authmode == WLAN_EID_RSN) {
-			if (rsn_ie)
-				memcpy(rsn_ie, &in_ie[cnt], in_ie[cnt + 1] + 2);
-
-			*rsn_len = in_ie[cnt + 1] + 2;
-		}
-
-		cnt += in_ie[cnt + 1] + 2;   /* get next */
-	}
-}
-
-/**
- * rtw_get_wps_ie - Search WPS IE from a series of IEs
- * @in_ie: Address of IEs to search
- * @in_len: Length limit from in_ie
- * @wps_ie: If not NULL and WPS IE is found, WPS IE will be copied to the buf starting from wps_ie
- * @wps_ielen: If not NULL and WPS IE is found, will set to the length of the entire WPS IE
- *
- * Returns: The address of the WPS IE found, or NULL
- */
-u8 *rtw_get_wps_ie(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen)
-{
-	uint cnt;
-	u8 *wpsie_ptr = NULL;
-	u8 eid, wps_oui[4] = {0x0, 0x50, 0xf2, 0x04};
-
-	if (wps_ielen)
-		*wps_ielen = 0;
-
-	if (!in_ie || in_len <= 0)
-		return wpsie_ptr;
-
-	cnt = 0;
-
-	while (cnt < in_len) {
-		eid = in_ie[cnt];
-
-		if (cnt + 2 > in_len)
-			break;
-
-		if (in_ie[cnt + 1] + 2 > in_len - cnt)
-			break;
-
-		if ((eid == WLAN_EID_VENDOR_SPECIFIC) && (in_ie[cnt + 1] >= 4) &&
-		    (!memcmp(&in_ie[cnt + 2], wps_oui, 4))) {
-			wpsie_ptr = &in_ie[cnt];
-
-			if (wps_ie)
-				memcpy(wps_ie, &in_ie[cnt], in_ie[cnt + 1] + 2);
-
-			if (wps_ielen)
-				*wps_ielen = in_ie[cnt + 1] + 2;
-
-			cnt += in_ie[cnt + 1] + 2;
-
-			break;
-		}
-		cnt += in_ie[cnt + 1] + 2; /* goto next */
-	}
-
-	return wpsie_ptr;
-}
-
-/**
- * rtw_get_wps_attr - Search a specific WPS attribute from a given WPS IE
- * @wps_ie: Address of WPS IE to search
- * @wps_ielen: Length limit from wps_ie
- * @target_attr_id: The attribute ID of WPS attribute to search
- * @buf_attr: If not NULL and the WPS attribute is found, WPS attribute will be copied to the buf starting from buf_attr
- * @len_attr: If not NULL and the WPS attribute is found, will set to the length of the entire WPS attribute
- *
- * Returns: the address of the specific WPS attribute found, or NULL
- */
-u8 *rtw_get_wps_attr(u8 *wps_ie, uint wps_ielen, u16 target_attr_id, u8 *buf_attr, u32 *len_attr)
-{
-	u8 *attr_ptr = NULL;
-	u8 *target_attr_ptr = NULL;
-	u8 wps_oui[4] = {0x00, 0x50, 0xF2, 0x04};
-
-	if (len_attr)
-		*len_attr = 0;
-
-	if (wps_ielen < 6)
-		return attr_ptr;
-
-	if ((wps_ie[0] != WLAN_EID_VENDOR_SPECIFIC) ||
-		(memcmp(wps_ie + 2, wps_oui, 4))) {
-		return attr_ptr;
-	}
-
-	/*  6 = 1(Element ID) + 1(Length) + 4(WPS OUI) */
-	attr_ptr = wps_ie + 6; /* goto first attr */
-
-	while (attr_ptr - wps_ie < wps_ielen) {
-		/*  4 = 2(Attribute ID) + 2(Length) */
-		if (attr_ptr + 4 > wps_ie + wps_ielen)
-			break;
-		u16 attr_id = get_unaligned_be16(attr_ptr);
-		u16 attr_data_len = get_unaligned_be16(attr_ptr + 2);
-		u16 attr_len = attr_data_len + 4;
-
-		if (attr_id == target_attr_id) {
-			target_attr_ptr = attr_ptr;
-
-			if (buf_attr)
-				memcpy(buf_attr, attr_ptr, attr_len);
-
-			if (len_attr)
-				*len_attr = attr_len;
-
-			break;
-		}
-		attr_ptr += attr_len; /* goto next */
-	}
-
-	return target_attr_ptr;
-}
-
-/**
- * rtw_get_wps_attr_content - Search a specific WPS attribute content from a given WPS IE
- * @wps_ie: Address of WPS IE to search
- * @wps_ielen: Length limit from wps_ie
- * @target_attr_id: The attribute ID of WPS attribute to search
- * @buf_content: If not NULL and the WPS attribute is found, WPS attribute content will be copied to the buf starting from buf_content
- * @len_content: If not NULL and the WPS attribute is found, will set to the length of the WPS attribute content
- *
- * Returns: the address of the specific WPS attribute content found, or NULL
- */
-u8 *rtw_get_wps_attr_content(u8 *wps_ie, uint wps_ielen, u16 target_attr_id, u8 *buf_content, uint *len_content)
-{
-	u8 *attr_ptr;
-	u32 attr_len;
-
-	if (len_content)
-		*len_content = 0;
-
-	attr_ptr = rtw_get_wps_attr(wps_ie, wps_ielen, target_attr_id, NULL, &attr_len);
-
-	if (attr_ptr && attr_len) {
-		if (buf_content)
-			memcpy(buf_content, attr_ptr + 4, attr_len - 4);
-
-		if (len_content)
-			*len_content = attr_len - 4;
-
-		return attr_ptr + 4;
-	}
-
-	return NULL;
-}
-
-static int rtw_ieee802_11_parse_vendor_specific(u8 *pos, uint elen,
-					    struct rtw_ieee802_11_elems *elems,
-					    int show_errors)
-{
-	unsigned int oui;
-
-	/*
-	 * first 3 bytes in vendor specific information element are the IEEE
-	 * OUI of the vendor. The following byte is used a vendor specific
-	 * sub-type.
-	 */
-	if (elen < 4)
-		return -1;
-
-	oui = get_unaligned_be24(pos);
-	switch (oui) {
-	case OUI_MICROSOFT:
-		/*
-		 * Microsoft/Wi-Fi information elements are further typed and
-		 * subtyped
-		 */
-		switch (pos[3]) {
-		case 1:
-			/*
-			 * Microsoft OUI (00:50:F2) with OUI Type 1:
-			 * real WPA information element
-			 */
-			elems->wpa_ie = pos;
-			elems->wpa_ie_len = elen;
-			break;
-		case WME_OUI_TYPE: /* this is a Wi-Fi WME info. element */
-			if (elen < 5)
-				return -1;
-
-			switch (pos[4]) {
-			case WME_OUI_SUBTYPE_INFORMATION_ELEMENT:
-			case WME_OUI_SUBTYPE_PARAMETER_ELEMENT:
-				elems->wme = pos;
-				elems->wme_len = elen;
-				break;
-			case WME_OUI_SUBTYPE_TSPEC_ELEMENT:
-				elems->wme_tspec = pos;
-				elems->wme_tspec_len = elen;
-				break;
-			default:
-				return -1;
-			}
-			break;
-		case 4:
-			/* Wi-Fi Protected Setup (WPS) IE */
-			elems->wps_ie = pos;
-			elems->wps_ie_len = elen;
-			break;
-		default:
-			return -1;
-		}
-		break;
-
-	case OUI_BROADCOM:
-		switch (pos[3]) {
-		case VENDOR_HT_CAPAB_OUI_TYPE:
-			elems->vendor_ht_cap = pos;
-			elems->vendor_ht_cap_len = elen;
-			break;
-		default:
-			return -1;
-		}
-		break;
-
-	default:
-		return -1;
-	}
-
-	return 0;
-}
-
-/**
- * rtw_ieee802_11_parse_elems - Parse information elements in management frames
- * @start: Pointer to the start of IEs
- * @len: Length of IE buffer in octets
- * @elems: Data structure for parsed elements
- * @show_errors: Whether to show parsing errors in debug log
- * Returns: Parsing result
- */
-enum parse_result rtw_ieee802_11_parse_elems(u8 *start, uint len,
-					     struct rtw_ieee802_11_elems *elems,
-					     int show_errors)
-{
-	uint left = len;
-	u8 *pos = start;
-	int unknown = 0;
-
-	memset(elems, 0, sizeof(*elems));
-
-	while (left >= 2) {
-		u8 id, elen;
-
-		id = *pos++;
-		elen = *pos++;
-		left -= 2;
-
-		if (elen > left)
-			return PARSE_FAILED;
-
-		switch (id) {
-		case WLAN_EID_SSID:
-			elems->ssid = pos;
-			elems->ssid_len = elen;
-			break;
-		case WLAN_EID_SUPP_RATES:
-			elems->supp_rates = pos;
-			elems->supp_rates_len = elen;
-			break;
-		case WLAN_EID_FH_PARAMS:
-			elems->fh_params = pos;
-			elems->fh_params_len = elen;
-			break;
-		case WLAN_EID_DS_PARAMS:
-			elems->ds_params = pos;
-			elems->ds_params_len = elen;
-			break;
-		case WLAN_EID_CF_PARAMS:
-			elems->cf_params = pos;
-			elems->cf_params_len = elen;
-			break;
-		case WLAN_EID_TIM:
-			elems->tim = pos;
-			elems->tim_len = elen;
-			break;
-		case WLAN_EID_IBSS_PARAMS:
-			elems->ibss_params = pos;
-			elems->ibss_params_len = elen;
-			break;
-		case WLAN_EID_CHALLENGE:
-			elems->challenge = pos;
-			elems->challenge_len = elen;
-			break;
-		case WLAN_EID_ERP_INFO:
-			elems->erp_info = pos;
-			elems->erp_info_len = elen;
-			break;
-		case WLAN_EID_EXT_SUPP_RATES:
-			elems->ext_supp_rates = pos;
-			elems->ext_supp_rates_len = elen;
-			break;
-		case WLAN_EID_VENDOR_SPECIFIC:
-			if (rtw_ieee802_11_parse_vendor_specific(pos, elen,
-							     elems,
-							     show_errors))
-				unknown++;
-			break;
-		case WLAN_EID_RSN:
-			elems->rsn_ie = pos;
-			elems->rsn_ie_len = elen;
-			break;
-		case WLAN_EID_PWR_CAPABILITY:
-			elems->power_cap = pos;
-			elems->power_cap_len = elen;
-			break;
-		case WLAN_EID_SUPPORTED_CHANNELS:
-			elems->supp_channels = pos;
-			elems->supp_channels_len = elen;
-			break;
-		case WLAN_EID_MOBILITY_DOMAIN:
-			elems->mdie = pos;
-			elems->mdie_len = elen;
-			break;
-		case WLAN_EID_FAST_BSS_TRANSITION:
-			elems->ftie = pos;
-			elems->ftie_len = elen;
-			break;
-		case WLAN_EID_TIMEOUT_INTERVAL:
-			elems->timeout_int = pos;
-			elems->timeout_int_len = elen;
-			break;
-		case WLAN_EID_HT_CAPABILITY:
-			elems->ht_capabilities = pos;
-			elems->ht_capabilities_len = elen;
-			break;
-		case WLAN_EID_HT_OPERATION:
-			elems->ht_operation = pos;
-			elems->ht_operation_len = elen;
-			break;
-		case WLAN_EID_VHT_CAPABILITY:
-			elems->vht_capabilities = pos;
-			elems->vht_capabilities_len = elen;
-			break;
-		case WLAN_EID_VHT_OPERATION:
-			elems->vht_operation = pos;
-			elems->vht_operation_len = elen;
-			break;
-		case WLAN_EID_OPMODE_NOTIF:
-			elems->vht_op_mode_notify = pos;
-			elems->vht_op_mode_notify_len = elen;
-			break;
-		default:
-			unknown++;
-			break;
-		}
-
-		left -= elen;
-		pos += elen;
-	}
-
-	if (left)
-		return PARSE_FAILED;
-
-	return unknown ? PARSE_UNKNOWN : PARSE_OK;
-}
-
-void rtw_macaddr_cfg(struct device *dev, u8 *mac_addr)
-{
-	u8 mac[ETH_ALEN];
-	struct device_node *np = dev->of_node;
-	const unsigned char *addr;
-	int len;
-
-	if (!mac_addr)
-		return;
-
-	if (rtw_initmac && mac_pton(rtw_initmac, mac)) {
-		/* Users specify the mac address */
-		ether_addr_copy(mac_addr, mac);
-	} else {
-		/* Use the mac address stored in the Efuse */
-		ether_addr_copy(mac, mac_addr);
-	}
-
-	if (is_broadcast_ether_addr(mac) || is_zero_ether_addr(mac)) {
-		addr = of_get_property(np, "local-mac-address", &len);
-
-		if (addr && len == ETH_ALEN)
-			ether_addr_copy(mac_addr, addr);
-		else
-			eth_random_addr(mac_addr);
-	}
-}
-
-static int rtw_get_cipher_info(struct wlan_network *pnetwork)
-{
-	u32 wpa_ielen;
-	unsigned char *pbuf;
-	int group_cipher = 0, pairwise_cipher = 0, is8021x = 0;
-	int ret = _FAIL;
-
-	pbuf = rtw_get_wpa_ie(&pnetwork->network.ies[12],
-			      &wpa_ielen,
-			      pnetwork->network.ie_length - 12);
-
-	if (pbuf && (wpa_ielen > 0)) {
-		if (rtw_parse_wpa_ie(pbuf, wpa_ielen + 2, &group_cipher,
-				     &pairwise_cipher, &is8021x) == _SUCCESS) {
-			pnetwork->bcn_info.pairwise_cipher = pairwise_cipher;
-			pnetwork->bcn_info.group_cipher = group_cipher;
-			pnetwork->bcn_info.is_8021x = is8021x;
-			ret = _SUCCESS;
-		}
-	} else {
-		pbuf = rtw_get_wpa2_ie(&pnetwork->network.ies[12], &wpa_ielen,
-				       pnetwork->network.ie_length - 12);
-
-		if (pbuf && (wpa_ielen > 0)) {
-			if (rtw_parse_wpa2_ie(pbuf, wpa_ielen + 2, &group_cipher,
-					      &pairwise_cipher, &is8021x) == _SUCCESS) {
-				pnetwork->bcn_info.pairwise_cipher = pairwise_cipher;
-				pnetwork->bcn_info.group_cipher = group_cipher;
-				pnetwork->bcn_info.is_8021x = is8021x;
-				ret = _SUCCESS;
-			}
-		}
-	}
-
-	return ret;
-}
-
-void rtw_get_bcn_info(struct wlan_network *pnetwork)
-{
-	unsigned short cap = 0;
-	u8 bencrypt = 0;
-	/* u8 wpa_ie[255], rsn_ie[255]; */
-	u16 wpa_len = 0, rsn_len = 0;
-	struct HT_info_element *pht_info = NULL;
-	struct ieee80211_ht_cap *pht_cap = NULL;
-	unsigned int len;
-	unsigned char *p;
-	__le16 le_cap;
-
-	memcpy((u8 *)&le_cap, rtw_get_capability_from_ie(pnetwork->network.ies), 2);
-	cap = le16_to_cpu(le_cap);
-	if (cap & WLAN_CAPABILITY_PRIVACY) {
-		bencrypt = 1;
-		pnetwork->network.privacy = 1;
-	} else {
-		pnetwork->bcn_info.encryp_protocol = ENCRYP_PROTOCOL_OPENSYS;
-	}
-	rtw_get_sec_ie(pnetwork->network.ies, pnetwork->network.ie_length, NULL, &rsn_len, NULL, &wpa_len);
-
-	if (rsn_len > 0) {
-		pnetwork->bcn_info.encryp_protocol = ENCRYP_PROTOCOL_WPA2;
-	} else if (wpa_len > 0) {
-		pnetwork->bcn_info.encryp_protocol = ENCRYP_PROTOCOL_WPA;
-	} else {
-		if (bencrypt)
-			pnetwork->bcn_info.encryp_protocol = ENCRYP_PROTOCOL_WEP;
-	}
-	rtw_get_cipher_info(pnetwork);
-
-	/* get bwmode and ch_offset */
-	/* parsing HT_CAP_IE */
-	p = rtw_get_ie(pnetwork->network.ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_CAPABILITY, &len, pnetwork->network.ie_length - _FIXED_IE_LENGTH_);
-	if (p && len > 0) {
-		pht_cap = (struct ieee80211_ht_cap *)(p + 2);
-		pnetwork->bcn_info.ht_cap_info = le16_to_cpu(pht_cap->cap_info);
-	} else {
-		pnetwork->bcn_info.ht_cap_info = 0;
-	}
-	/* parsing HT_INFO_IE */
-	p = rtw_get_ie(pnetwork->network.ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_OPERATION, &len, pnetwork->network.ie_length - _FIXED_IE_LENGTH_);
-	if (p && len > 0) {
-		pht_info = (struct HT_info_element *)(p + 2);
-		pnetwork->bcn_info.ht_info_infos_0 = pht_info->infos[0];
-	} else {
-		pnetwork->bcn_info.ht_info_infos_0 = 0;
-	}
-}
-
-/* show MCS rate, unit: 100Kbps */
-u16 rtw_mcs_rate(u8 bw_40MHz, u8 short_GI, unsigned char *MCS_rate)
-{
-	u16 max_rate = 0;
-
-	if (MCS_rate[0] & BIT(7))
-		max_rate = (bw_40MHz) ? ((short_GI) ? 1500 : 1350) : ((short_GI) ? 722 : 650);
-	else if (MCS_rate[0] & BIT(6))
-		max_rate = (bw_40MHz) ? ((short_GI) ? 1350 : 1215) : ((short_GI) ? 650 : 585);
-	else if (MCS_rate[0] & BIT(5))
-		max_rate = (bw_40MHz) ? ((short_GI) ? 1200 : 1080) : ((short_GI) ? 578 : 520);
-	else if (MCS_rate[0] & BIT(4))
-		max_rate = (bw_40MHz) ? ((short_GI) ? 900 : 810) : ((short_GI) ? 433 : 390);
-	else if (MCS_rate[0] & BIT(3))
-		max_rate = (bw_40MHz) ? ((short_GI) ? 600 : 540) : ((short_GI) ? 289 : 260);
-	else if (MCS_rate[0] & BIT(2))
-		max_rate = (bw_40MHz) ? ((short_GI) ? 450 : 405) : ((short_GI) ? 217 : 195);
-	else if (MCS_rate[0] & BIT(1))
-		max_rate = (bw_40MHz) ? ((short_GI) ? 300 : 270) : ((short_GI) ? 144 : 130);
-	else if (MCS_rate[0] & BIT(0))
-		max_rate = (bw_40MHz) ? ((short_GI) ? 150 : 135) : ((short_GI) ? 72 : 65);
-
-	return max_rate;
-}
-
-int rtw_action_frame_parse(const u8 *frame, u32 frame_len, u8 *category, u8 *action)
-{
-	const u8 *frame_body = frame + sizeof(struct ieee80211_hdr_3addr);
-	u16 fc;
-	u8 c;
-	u8 a = ACT_PUBLIC_MAX;
-
-	fc = le16_to_cpu(((struct ieee80211_hdr_3addr *)frame)->frame_control);
-
-	if ((fc & (IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) !=
-	    (IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION))
-		return false;
-
-	c = frame_body[0];
-
-	switch (c) {
-	case RTW_WLAN_CATEGORY_P2P: /* vendor-specific */
-		break;
-	default:
-		a = frame_body[1];
-	}
-
-	if (category)
-		*category = c;
-	if (action)
-		*action = a;
-
-	return true;
-}
-
-static const char * const _action_public_str[] = {
-	"ACT_PUB_BSSCOEXIST",
-	"ACT_PUB_DSE_ENABLE",
-	"ACT_PUB_DSE_DEENABLE",
-	"ACT_PUB_DSE_REG_LOCATION",
-	"ACT_PUB_EXT_CHL_SWITCH",
-	"ACT_PUB_DSE_MSR_REQ",
-	"ACT_PUB_DSE_MSR_RPRT",
-	"ACT_PUB_MP",
-	"ACT_PUB_DSE_PWR_CONSTRAINT",
-	"ACT_PUB_VENDOR",
-	"ACT_PUB_GAS_INITIAL_REQ",
-	"ACT_PUB_GAS_INITIAL_RSP",
-	"ACT_PUB_GAS_COMEBACK_REQ",
-	"ACT_PUB_GAS_COMEBACK_RSP",
-	"ACT_PUB_TDLS_DISCOVERY_RSP",
-	"ACT_PUB_LOCATION_TRACK",
-	"ACT_PUB_RSVD",
-};
-
-const char *action_public_str(u8 action)
-{
-	action = (action >= ACT_PUBLIC_MAX) ? ACT_PUBLIC_MAX : action;
-	return _action_public_str[action];
-}
diff --git a/drivers/staging/rtl8723bs/core/rtw_io.c b/drivers/staging/rtl8723bs/core/rtw_io.c
deleted file mode 100644
index 49c9e4cb8bf6..000000000000
--- a/drivers/staging/rtl8723bs/core/rtw_io.c
+++ /dev/null
@@ -1,145 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-/*
- * The purpose of rtw_io.c
- *
- * a. provides the API
- *
- * b. provides the protocol engine
- *
- * c. provides the software interface between caller and the hardware interface
- *
- *  jackson@realtek.com.tw
- */
-
-#include <drv_types.h>
-
-u8 rtw_read8(struct adapter *adapter, u32 addr)
-{
-	struct io_priv *pio_priv = &adapter->iopriv;
-	struct intf_hdl *pintfhdl = &pio_priv->intf;
-	u8 (*_read8)(struct intf_hdl *pintfhdl, u32 addr);
-
-	_read8 = pintfhdl->io_ops._read8;
-
-	return _read8(pintfhdl, addr);
-}
-
-u16 rtw_read16(struct adapter *adapter, u32 addr)
-{
-	struct io_priv *pio_priv = &adapter->iopriv;
-	struct intf_hdl *pintfhdl = &pio_priv->intf;
-	u16 (*_read16)(struct intf_hdl *pintfhdl, u32 addr);
-
-	_read16 = pintfhdl->io_ops._read16;
-
-	return _read16(pintfhdl, addr);
-}
-
-u32 rtw_read32(struct adapter *adapter, u32 addr)
-{
-	struct io_priv *pio_priv = &adapter->iopriv;
-	struct intf_hdl *pintfhdl = &pio_priv->intf;
-	u32 (*_read32)(struct intf_hdl *pintfhdl, u32 addr);
-
-	_read32 = pintfhdl->io_ops._read32;
-
-	return _read32(pintfhdl, addr);
-}
-
-int rtw_write8(struct adapter *adapter, u32 addr, u8 val)
-{
-	struct io_priv *pio_priv = &adapter->iopriv;
-	struct intf_hdl *pintfhdl = &pio_priv->intf;
-	int (*_write8)(struct intf_hdl *pintfhdl, u32 addr, u8 val);
-	int ret;
-
-	_write8 = pintfhdl->io_ops._write8;
-
-	ret = _write8(pintfhdl, addr, val);
-
-	return RTW_STATUS_CODE(ret);
-}
-
-int rtw_write16(struct adapter *adapter, u32 addr, u16 val)
-{
-	struct io_priv *pio_priv = &adapter->iopriv;
-	struct intf_hdl *pintfhdl = &pio_priv->intf;
-	int (*_write16)(struct intf_hdl *pintfhdl, u32 addr, u16 val);
-	int ret;
-
-	_write16 = pintfhdl->io_ops._write16;
-
-	ret = _write16(pintfhdl, addr, val);
-	return RTW_STATUS_CODE(ret);
-}
-
-int rtw_write32(struct adapter *adapter, u32 addr, u32 val)
-{
-	struct io_priv *pio_priv = &adapter->iopriv;
-	struct intf_hdl *pintfhdl = &pio_priv->intf;
-	int (*_write32)(struct intf_hdl *pintfhdl, u32 addr, u32 val);
-	int ret;
-
-	_write32 = pintfhdl->io_ops._write32;
-
-	ret = _write32(pintfhdl, addr, val);
-
-	return RTW_STATUS_CODE(ret);
-}
-
-u32 rtw_write_port(struct adapter *adapter, u32 addr, u32 cnt, u8 *pmem)
-{
-	u32 (*_write_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem);
-	struct io_priv *pio_priv = &adapter->iopriv;
-	struct intf_hdl *pintfhdl = &pio_priv->intf;
-
-	_write_port = pintfhdl->io_ops._write_port;
-
-	return _write_port(pintfhdl, addr, cnt, pmem);
-}
-
-int rtw_init_io_priv(struct adapter *padapter,
-		     void (*set_intf_ops)(struct adapter *padapter,
-					  struct _io_ops *pops))
-{
-	struct io_priv *piopriv = &padapter->iopriv;
-	struct intf_hdl *pintf = &piopriv->intf;
-
-	if (!set_intf_ops)
-		return _FAIL;
-
-	piopriv->padapter = padapter;
-	pintf->padapter = padapter;
-	pintf->pintf_dev = adapter_to_dvobj(padapter);
-
-	set_intf_ops(padapter, &pintf->io_ops);
-
-	return _SUCCESS;
-}
-
-/*
- * Increase and check if the continual_io_error of this @param dvobjprive
- * is larger than MAX_CONTINUAL_IO_ERR
- * @return true:
- * @return false:
- */
-int rtw_inc_and_chk_continual_io_error(struct dvobj_priv *dvobj)
-{
-	int error_count = atomic_inc_return(&dvobj->continual_io_error);
-
-	if (error_count > MAX_CONTINUAL_IO_ERR)
-		return true;
-
-	return false;
-}
-
-/* Set the continual_io_error of this @param dvobjprive to 0 */
-void rtw_reset_continual_io_error(struct dvobj_priv *dvobj)
-{
-	atomic_set(&dvobj->continual_io_error, 0);
-}
diff --git a/drivers/staging/rtl8723bs/core/rtw_ioctl_set.c b/drivers/staging/rtl8723bs/core/rtw_ioctl_set.c
deleted file mode 100644
index 2739d0e99098..000000000000
--- a/drivers/staging/rtl8723bs/core/rtw_ioctl_set.c
+++ /dev/null
@@ -1,494 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <drv_types.h>
-
-u8 rtw_validate_bssid(u8 *bssid)
-{
-	u8 ret = true;
-
-	if (is_zero_ether_addr(bssid) ||
-	    is_broadcast_ether_addr(bssid) ||
-	    is_multicast_ether_addr(bssid))
-		ret = false;
-
-	return ret;
-}
-
-u8 rtw_validate_ssid(struct ndis_802_11_ssid *ssid)
-{
-	u8 ret = true;
-
-	if (ssid->ssid_length > 32) {
-		ret = false;
-		goto exit;
-	}
-
-exit:
-	return ret;
-}
-
-u8 rtw_do_join(struct adapter *padapter)
-{
-	struct list_head	*plist, *phead;
-	u8 *pibss = NULL;
-	struct	mlme_priv *pmlmepriv = &(padapter->mlmepriv);
-	struct __queue	*queue	= &(pmlmepriv->scanned_queue);
-	u8 ret = _SUCCESS;
-
-	spin_lock_bh(&(pmlmepriv->scanned_queue.lock));
-	phead = get_list_head(queue);
-	plist = get_next(phead);
-
-	pmlmepriv->cur_network.join_res = -2;
-
-	set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
-
-	pmlmepriv->pscanned = plist;
-
-	pmlmepriv->to_join = true;
-
-	if (list_empty(&queue->queue)) {
-		spin_unlock_bh(&(pmlmepriv->scanned_queue.lock));
-		_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
-
-		/* when set_ssid/set_bssid for rtw_do_join(), but scanning queue is empty */
-		/* we try to issue sitesurvey firstly */
-
-		if (!pmlmepriv->link_detect_info.busy_traffic || rtw_to_roam(padapter) > 0) {
-			/*  submit site_survey_cmd */
-			ret = rtw_sitesurvey_cmd(padapter, &pmlmepriv->assoc_ssid, 1, NULL, 0);
-			if (ret != _SUCCESS)
-				pmlmepriv->to_join = false;
-
-		} else {
-			pmlmepriv->to_join = false;
-			ret = _FAIL;
-		}
-
-		goto exit;
-	} else {
-		int select_ret;
-
-		spin_unlock_bh(&(pmlmepriv->scanned_queue.lock));
-		select_ret = rtw_select_and_join_from_scanned_queue(pmlmepriv);
-		if (select_ret == _SUCCESS) {
-			pmlmepriv->to_join = false;
-			_set_timer(&pmlmepriv->assoc_timer, MAX_JOIN_TIMEOUT);
-		} else {
-			if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
-				/*  submit createbss_cmd to change to a ADHOC_MASTER */
-
-				/* pmlmepriv->lock has been acquired by caller... */
-				struct wlan_bssid_ex    *pdev_network = &(padapter->registrypriv.dev_network);
-
-				pmlmepriv->fw_state = WIFI_ADHOC_MASTER_STATE;
-
-				pibss = padapter->registrypriv.dev_network.mac_address;
-
-				memcpy(&pdev_network->ssid, &pmlmepriv->assoc_ssid, sizeof(struct ndis_802_11_ssid));
-
-				rtw_update_registrypriv_dev_network(padapter);
-
-				rtw_generate_random_ibss(pibss);
-
-				if (rtw_createbss_cmd(padapter) != _SUCCESS) {
-					ret =  false;
-					goto exit;
-				}
-
-				pmlmepriv->to_join = false;
-
-			} else {
-				/*  can't associate ; reset under-linking */
-				_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
-
-				/* when set_ssid/set_bssid for rtw_do_join(), but there are no desired bss in scanning queue */
-				/* we try to issue sitesurvey firstly */
-				if (!pmlmepriv->link_detect_info.busy_traffic ||
-				    rtw_to_roam(padapter) > 0) {
-					ret = rtw_sitesurvey_cmd(padapter, &pmlmepriv->assoc_ssid, 1, NULL, 0);
-					if (ret != _SUCCESS)
-						pmlmepriv->to_join = false;
-
-				} else {
-					ret = _FAIL;
-					pmlmepriv->to_join = false;
-				}
-			}
-		}
-	}
-
-exit:
-	return ret;
-}
-
-u8 rtw_set_802_11_ssid(struct adapter *padapter, struct ndis_802_11_ssid *ssid)
-{
-	u8 status = _SUCCESS;
-
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct wlan_network *pnetwork = &pmlmepriv->cur_network;
-
-	netdev_dbg(padapter->pnetdev, "set ssid [%s] fw_state = 0x%08x\n",
-		   ssid->ssid, get_fwstate(pmlmepriv));
-
-	if (!padapter->hw_init_completed) {
-		status = _FAIL;
-		goto exit;
-	}
-
-	spin_lock_bh(&pmlmepriv->lock);
-
-	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
-		goto handle_tkip_countermeasure;
-	else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING))
-		goto release_mlme_lock;
-
-	if (check_fwstate(pmlmepriv, _FW_LINKED | WIFI_ADHOC_MASTER_STATE)) {
-		if ((pmlmepriv->assoc_ssid.ssid_length == ssid->ssid_length) &&
-		    (!memcmp(&pmlmepriv->assoc_ssid.ssid, ssid->ssid, ssid->ssid_length))) {
-			if (!check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
-				if (!rtw_is_same_ibss(padapter, pnetwork)) {
-					/* if in WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE, create bss or rejoin again */
-					rtw_disassoc_cmd(padapter, 0, true);
-
-					if (check_fwstate(pmlmepriv, _FW_LINKED))
-						rtw_indicate_disconnect(padapter);
-
-					rtw_free_assoc_resources(padapter, 1);
-
-					if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
-						_clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE);
-						set_fwstate(pmlmepriv, WIFI_ADHOC_STATE);
-					}
-				} else {
-					goto release_mlme_lock;/* it means driver is in WIFI_ADHOC_MASTER_STATE, we needn't create bss again. */
-				}
-			} else {
-				rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_JOINBSS, 1);
-			}
-		} else {
-			rtw_disassoc_cmd(padapter, 0, true);
-
-			if (check_fwstate(pmlmepriv, _FW_LINKED))
-				rtw_indicate_disconnect(padapter);
-
-			rtw_free_assoc_resources(padapter, 1);
-
-			if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
-				_clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE);
-				set_fwstate(pmlmepriv, WIFI_ADHOC_STATE);
-			}
-		}
-	}
-
-handle_tkip_countermeasure:
-	if (rtw_handle_tkip_countermeasure(padapter, __func__) == _FAIL) {
-		status = _FAIL;
-		goto release_mlme_lock;
-	}
-
-	if (!rtw_validate_ssid(ssid)) {
-		status = _FAIL;
-		goto release_mlme_lock;
-	}
-
-	memcpy(&pmlmepriv->assoc_ssid, ssid, sizeof(struct ndis_802_11_ssid));
-	pmlmepriv->assoc_by_bssid = false;
-
-	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
-		pmlmepriv->to_join = true;
-	else
-		status = rtw_do_join(padapter);
-
-release_mlme_lock:
-	spin_unlock_bh(&pmlmepriv->lock);
-
-exit:
-
-	return status;
-}
-
-u8 rtw_set_802_11_connect(struct adapter *padapter, u8 *bssid, struct ndis_802_11_ssid *ssid)
-{
-	u8 status = _SUCCESS;
-	bool bssid_valid = true;
-	bool ssid_valid = true;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	if (!ssid || !rtw_validate_ssid(ssid))
-		ssid_valid = false;
-
-	if (!bssid || !rtw_validate_bssid(bssid))
-		bssid_valid = false;
-
-	if (!ssid_valid && !bssid_valid) {
-		status = _FAIL;
-		goto exit;
-	}
-
-	if (!padapter->hw_init_completed) {
-		status = _FAIL;
-		goto exit;
-	}
-
-	spin_lock_bh(&pmlmepriv->lock);
-
-	netdev_dbg(padapter->pnetdev, FUNC_ADPT_FMT "  fw_state = 0x%08x\n",
-		   FUNC_ADPT_ARG(padapter), get_fwstate(pmlmepriv));
-
-	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
-		goto handle_tkip_countermeasure;
-	else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING))
-		goto release_mlme_lock;
-
-handle_tkip_countermeasure:
-	if (rtw_handle_tkip_countermeasure(padapter, __func__) == _FAIL) {
-		status = _FAIL;
-		goto release_mlme_lock;
-	}
-
-	if (ssid && ssid_valid)
-		memcpy(&pmlmepriv->assoc_ssid, ssid, sizeof(struct ndis_802_11_ssid));
-	else
-		memset(&pmlmepriv->assoc_ssid, 0, sizeof(struct ndis_802_11_ssid));
-
-	if (bssid && bssid_valid) {
-		memcpy(&pmlmepriv->assoc_bssid, bssid, ETH_ALEN);
-		pmlmepriv->assoc_by_bssid = true;
-	} else {
-		pmlmepriv->assoc_by_bssid = false;
-	}
-
-	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
-		pmlmepriv->to_join = true;
-	else
-		status = rtw_do_join(padapter);
-
-release_mlme_lock:
-	spin_unlock_bh(&pmlmepriv->lock);
-
-exit:
-	return status;
-}
-
-u8 rtw_set_802_11_infrastructure_mode(struct adapter *padapter,
-	enum nl80211_iftype networktype)
-{
-	struct	mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct	wlan_network	*cur_network = &pmlmepriv->cur_network;
-	enum nl80211_iftype *pold_state = &(cur_network->network.infrastructure_mode);
-
-	if (*pold_state != networktype) {
-		if (*pold_state == NL80211_IFTYPE_AP) {
-			/* change to other mode from AP mode */
-			cur_network->join_res = -1;
-
-			stop_ap_mode(padapter);
-		}
-
-		spin_lock_bh(&pmlmepriv->lock);
-
-		if (check_fwstate(pmlmepriv, _FW_LINKED) || (*pold_state == NL80211_IFTYPE_ADHOC))
-			rtw_disassoc_cmd(padapter, 0, true);
-
-		if (check_fwstate(pmlmepriv, _FW_LINKED) ||
-		    check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE))
-			rtw_free_assoc_resources(padapter, 1);
-
-		if ((*pold_state == NL80211_IFTYPE_STATION) || (*pold_state == NL80211_IFTYPE_ADHOC)) {
-			if (check_fwstate(pmlmepriv, _FW_LINKED))
-				rtw_indicate_disconnect(padapter); /* will clr Linked_state; before this function, we must have checked whether issue dis-assoc_cmd or not */
-		}
-
-		*pold_state = networktype;
-
-		_clr_fwstate_(pmlmepriv, ~WIFI_NULL_STATE);
-
-		switch (networktype) {
-		case NL80211_IFTYPE_ADHOC:
-			set_fwstate(pmlmepriv, WIFI_ADHOC_STATE);
-			break;
-
-		case NL80211_IFTYPE_STATION:
-			set_fwstate(pmlmepriv, WIFI_STATION_STATE);
-			break;
-
-		case NL80211_IFTYPE_AP:
-			set_fwstate(pmlmepriv, WIFI_AP_STATE);
-			start_ap_mode(padapter);
-			/* rtw_indicate_connect(padapter); */
-
-			break;
-
-		default:
-			break;
-		}
-
-		/* SecClearAllKeys(adapter); */
-
-		spin_unlock_bh(&pmlmepriv->lock);
-	}
-	return true;
-}
-
-u8 rtw_set_802_11_disassociate(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	spin_lock_bh(&pmlmepriv->lock);
-
-	if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-		rtw_disassoc_cmd(padapter, 0, true);
-		rtw_indicate_disconnect(padapter);
-		rtw_free_assoc_resources_cmd(padapter);
-		rtw_pwr_wakeup(padapter);
-	}
-
-	spin_unlock_bh(&pmlmepriv->lock);
-
-	return true;
-}
-
-u8 rtw_set_802_11_bssid_list_scan(struct adapter *padapter, struct ndis_802_11_ssid *pssid, int ssid_max_num)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	u8 res = true;
-
-	if (!padapter) {
-		res = false;
-		goto exit;
-	}
-	if (!padapter->hw_init_completed) {
-		res = false;
-		goto exit;
-	}
-
-	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY | _FW_UNDER_LINKING) ||
-	    pmlmepriv->link_detect_info.busy_traffic) {
-		/*  Scan or linking is in progress, do nothing. */
-		res = true;
-
-	} else {
-		if (rtw_is_scan_deny(padapter))
-			return _SUCCESS;
-
-		spin_lock_bh(&pmlmepriv->lock);
-
-		res = rtw_sitesurvey_cmd(padapter, pssid, ssid_max_num, NULL, 0);
-
-		spin_unlock_bh(&pmlmepriv->lock);
-	}
-exit:
-
-	return res;
-}
-
-u8 rtw_set_802_11_authentication_mode(struct adapter *padapter, enum ndis_802_11_authentication_mode authmode)
-{
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	int res;
-	u8 ret;
-
-	psecuritypriv->ndisauthtype = authmode;
-
-	if (psecuritypriv->ndisauthtype > 3)
-		psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_8021x;
-
-	res = rtw_set_auth(padapter, psecuritypriv);
-
-	if (res == _SUCCESS)
-		ret = true;
-	else
-		ret = false;
-
-	return ret;
-}
-
-u8 rtw_set_802_11_add_wep(struct adapter *padapter, struct ndis_802_11_wep *wep)
-{
-	signed int		keyid, res;
-	struct security_priv *psecuritypriv = &(padapter->securitypriv);
-	u8 ret = _SUCCESS;
-
-	keyid = wep->key_index & 0x3fffffff;
-
-	if (keyid >= 4) {
-		ret = false;
-		goto exit;
-	}
-
-	switch (wep->key_length) {
-	case 5:
-		psecuritypriv->dot11_privacy_algrthm = _WEP40_;
-		break;
-	case 13:
-		psecuritypriv->dot11_privacy_algrthm = _WEP104_;
-		break;
-	default:
-		psecuritypriv->dot11_privacy_algrthm = _NO_PRIVACY_;
-		break;
-	}
-
-	memcpy(&(psecuritypriv->dot11DefKey[keyid].skey[0]), &(wep->key_material), wep->key_length);
-
-	psecuritypriv->dot11DefKeylen[keyid] = wep->key_length;
-
-	psecuritypriv->dot11PrivacyKeyIndex = keyid;
-
-	res = rtw_set_key(padapter, psecuritypriv, keyid, 1, true);
-
-	if (res == _FAIL)
-		ret = false;
-exit:
-
-	return ret;
-}
-
-/*
- * rtw_get_cur_max_rate -
- * @adapter: pointer to struct adapter structure
- *
- * Return 0 or 100Kbps
- */
-u16 rtw_get_cur_max_rate(struct adapter *adapter)
-{
-	int	i = 0;
-	u16 rate = 0, max_rate = 0;
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	struct wlan_bssid_ex	*pcur_bss = &pmlmepriv->cur_network.network;
-	struct sta_info *psta = NULL;
-	u8 short_GI = 0;
-
-	if (!check_fwstate(pmlmepriv, _FW_LINKED) &&
-	    !check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE))
-		return 0;
-
-	psta = rtw_get_stainfo(&adapter->stapriv, get_bssid(pmlmepriv));
-	if (!psta)
-		return 0;
-
-	short_GI = query_ra_short_GI(psta);
-
-	if (is_supported_ht(psta->wireless_mode)) {
-		max_rate = rtw_mcs_rate(psta->bw_mode == CHANNEL_WIDTH_40 ? 1 : 0,
-					short_GI,
-					psta->htpriv.ht_cap.mcs.rx_mask);
-	} else {
-		while ((pcur_bss->supported_rates[i] != 0) && (pcur_bss->supported_rates[i] != 0xFF)) {
-			rate = pcur_bss->supported_rates[i]&0x7F;
-			if (rate > max_rate)
-				max_rate = rate;
-			i++;
-		}
-
-		max_rate = max_rate*10/2;
-	}
-
-	return max_rate;
-}
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme.c b/drivers/staging/rtl8723bs/core/rtw_mlme.c
deleted file mode 100644
index fc46b33b836a..000000000000
--- a/drivers/staging/rtl8723bs/core/rtw_mlme.c
+++ /dev/null
@@ -1,2565 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <linux/etherdevice.h>
-#include <drv_types.h>
-#include <hal_btcoex.h>
-#include <linux/jiffies.h>
-
-static void _dynamic_check_timer_handler(struct timer_list *t)
-{
-	struct adapter *adapter =
-		timer_container_of(adapter, t, mlmepriv.dynamic_chk_timer);
-
-	rtw_dynamic_check_timer_handler(adapter);
-
-	_set_timer(&adapter->mlmepriv.dynamic_chk_timer, 2000);
-}
-
-static void _rtw_set_scan_deny_timer_hdl(struct timer_list *t)
-{
-	struct adapter *adapter =
-		timer_container_of(adapter, t, mlmepriv.set_scan_deny_timer);
-
-	rtw_clear_scan_deny(adapter);
-}
-
-static void rtw_init_mlme_timer(struct adapter *padapter)
-{
-	struct	mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	timer_setup(&pmlmepriv->assoc_timer, _rtw_join_timeout_handler, 0);
-	timer_setup(&pmlmepriv->scan_to_timer, rtw_scan_timeout_handler, 0);
-	timer_setup(&pmlmepriv->dynamic_chk_timer,
-		    _dynamic_check_timer_handler, 0);
-	timer_setup(&pmlmepriv->set_scan_deny_timer,
-		    _rtw_set_scan_deny_timer_hdl, 0);
-}
-
-int rtw_init_mlme_priv(struct adapter *padapter)
-{
-	int i;
-	u8 *pbuf;
-	struct wlan_network *pnetwork;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	int res = _SUCCESS;
-
-	pmlmepriv->nic_hdl = (u8 *)padapter;
-
-	pmlmepriv->pscanned = NULL;
-	pmlmepriv->fw_state = WIFI_STATION_STATE; /*  Must sync with rtw_wdev_alloc() */
-	pmlmepriv->cur_network.network.infrastructure_mode = NL80211_IFTYPE_UNSPECIFIED;
-	pmlmepriv->scan_mode = SCAN_ACTIVE;/*  1: active, 0: passive. Maybe someday we should rename this variable to "active_mode" (Jeff) */
-
-	spin_lock_init(&pmlmepriv->lock);
-	INIT_LIST_HEAD(&pmlmepriv->free_bss_pool.queue);
-	spin_lock_init(&pmlmepriv->free_bss_pool.lock);
-	INIT_LIST_HEAD(&pmlmepriv->scanned_queue.queue);
-	spin_lock_init(&pmlmepriv->scanned_queue.lock);
-
-	memset(&pmlmepriv->assoc_ssid, 0, sizeof(struct ndis_802_11_ssid));
-
-	pbuf = vzalloc(array_size(MAX_BSS_CNT, sizeof(struct wlan_network)));
-
-	if (!pbuf) {
-		res = _FAIL;
-		goto exit;
-	}
-	pmlmepriv->free_bss_buf = pbuf;
-
-	pnetwork = (struct wlan_network *)pbuf;
-
-	for (i = 0; i < MAX_BSS_CNT; i++) {
-		INIT_LIST_HEAD(&pnetwork->list);
-
-		list_add_tail(&pnetwork->list, &pmlmepriv->free_bss_pool.queue);
-
-		pnetwork++;
-	}
-
-	/* allocate DMA-able/Non-Page memory for cmd_buf and rsp_buf */
-
-	rtw_clear_scan_deny(padapter);
-
-	#define RTW_ROAM_SCAN_RESULT_EXP_MS 5000
-	#define RTW_ROAM_RSSI_DIFF_TH 10
-	#define RTW_ROAM_SCAN_INTERVAL_MS 10000
-
-	pmlmepriv->roam_flags = 0
-		| RTW_ROAM_ON_EXPIRED
-		| RTW_ROAM_ON_RESUME
-		;
-
-	pmlmepriv->roam_scanr_exp_ms = RTW_ROAM_SCAN_RESULT_EXP_MS;
-	pmlmepriv->roam_rssi_diff_th = RTW_ROAM_RSSI_DIFF_TH;
-	pmlmepriv->roam_scan_int_ms = RTW_ROAM_SCAN_INTERVAL_MS;
-
-	rtw_init_mlme_timer(padapter);
-
-exit:
-
-	return res;
-}
-
-static void rtw_free_mlme_ie_data(u8 **ppie, u32 *plen)
-{
-	if (*ppie) {
-		kfree(*ppie);
-		*plen = 0;
-		*ppie = NULL;
-	}
-}
-
-void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv)
-{
-	rtw_buf_free(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len);
-	rtw_buf_free(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len);
-	rtw_free_mlme_ie_data(&pmlmepriv->wps_beacon_ie, &pmlmepriv->wps_beacon_ie_len);
-	rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_req_ie, &pmlmepriv->wps_probe_req_ie_len);
-	rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_resp_ie, &pmlmepriv->wps_probe_resp_ie_len);
-	rtw_free_mlme_ie_data(&pmlmepriv->wps_assoc_resp_ie, &pmlmepriv->wps_assoc_resp_ie_len);
-
-	rtw_free_mlme_ie_data(&pmlmepriv->p2p_beacon_ie, &pmlmepriv->p2p_beacon_ie_len);
-	rtw_free_mlme_ie_data(&pmlmepriv->p2p_probe_req_ie, &pmlmepriv->p2p_probe_req_ie_len);
-	rtw_free_mlme_ie_data(&pmlmepriv->p2p_probe_resp_ie, &pmlmepriv->p2p_probe_resp_ie_len);
-	rtw_free_mlme_ie_data(&pmlmepriv->p2p_go_probe_resp_ie, &pmlmepriv->p2p_go_probe_resp_ie_len);
-	rtw_free_mlme_ie_data(&pmlmepriv->p2p_assoc_req_ie, &pmlmepriv->p2p_assoc_req_ie_len);
-}
-
-void _rtw_free_mlme_priv(struct mlme_priv *pmlmepriv)
-{
-	if (pmlmepriv) {
-		rtw_free_mlme_priv_ie_data(pmlmepriv);
-		vfree(pmlmepriv->free_bss_buf);
-	}
-}
-
-struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv)
-{
-	struct wlan_network *pnetwork;
-	struct __queue *free_queue = &pmlmepriv->free_bss_pool;
-	struct list_head *plist = NULL;
-
-	spin_lock_bh(&free_queue->lock);
-
-	if (list_empty(&free_queue->queue)) {
-		pnetwork = NULL;
-		goto exit;
-	}
-	plist = get_next(&free_queue->queue);
-
-	pnetwork = container_of(plist, struct wlan_network, list);
-
-	list_del_init(&pnetwork->list);
-
-	pnetwork->network_type = 0;
-	pnetwork->fixed = false;
-	pnetwork->last_scanned = jiffies;
-	pnetwork->aid = 0;
-	pnetwork->join_res = 0;
-
-exit:
-	spin_unlock_bh(&free_queue->lock);
-
-	return pnetwork;
-}
-
-void _rtw_free_network(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork, u8 isfreeall)
-{
-	unsigned int delta_time;
-	u32 lifetime = SCANQUEUE_LIFETIME;
-	struct __queue *free_queue = &pmlmepriv->free_bss_pool;
-
-	if (!pnetwork)
-		return;
-
-	if (pnetwork->fixed)
-		return;
-
-	if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) ||
-	    check_fwstate(pmlmepriv, WIFI_ADHOC_STATE))
-		lifetime = 1;
-
-	if (!isfreeall) {
-		delta_time = jiffies_to_msecs(jiffies - pnetwork->last_scanned);
-		if (delta_time < lifetime)/*  unit:msec */
-			return;
-	}
-
-	spin_lock_bh(&free_queue->lock);
-
-	list_del_init(&pnetwork->list);
-
-	list_add_tail(&pnetwork->list, &free_queue->queue);
-
-	spin_unlock_bh(&free_queue->lock);
-}
-
-void _rtw_free_network_nolock(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork)
-{
-	struct __queue *free_queue = &pmlmepriv->free_bss_pool;
-
-	if (!pnetwork)
-		return;
-
-	if (pnetwork->fixed)
-		return;
-
-	list_del_init(&pnetwork->list);
-
-	list_add_tail(&pnetwork->list, get_list_head(free_queue));
-}
-
-/*
- * return the wlan_network with the matching addr
- *
- * Shall be called under atomic context... to avoid possible racing condition...
- */
-struct wlan_network *_rtw_find_network(struct __queue *scanned_queue, u8 *addr)
-{
-	struct list_head *phead, *plist;
-	struct wlan_network *pnetwork = NULL;
-
-	if (is_zero_ether_addr(addr)) {
-		pnetwork = NULL;
-		goto exit;
-	}
-
-	phead = get_list_head(scanned_queue);
-	list_for_each(plist, phead) {
-		pnetwork = list_entry(plist, struct wlan_network, list);
-
-		if (!memcmp(addr, pnetwork->network.mac_address, ETH_ALEN))
-			break;
-	}
-
-	if (plist == phead)
-		pnetwork = NULL;
-
-exit:
-	return pnetwork;
-}
-
-void rtw_free_network_queue(struct adapter *padapter, u8 isfreeall)
-{
-	struct list_head *phead, *plist, *tmp;
-	struct wlan_network *pnetwork;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct __queue *scanned_queue = &pmlmepriv->scanned_queue;
-
-	spin_lock_bh(&scanned_queue->lock);
-
-	phead = get_list_head(scanned_queue);
-	list_for_each_safe(plist, tmp, phead) {
-		pnetwork = list_entry(plist, struct wlan_network, list);
-
-		_rtw_free_network(pmlmepriv, pnetwork, isfreeall);
-	}
-
-	spin_unlock_bh(&scanned_queue->lock);
-}
-
-bool rtw_if_up(struct adapter *padapter)
-{
-	if (padapter->driver_stopped || padapter->bSurpriseRemoved ||
-	    !check_fwstate(&padapter->mlmepriv, _FW_LINKED))
-		return false;
-
-	return true;
-}
-
-void rtw_generate_random_ibss(u8 *pibss)
-{
-	unsigned long curtime = jiffies;
-
-	pibss[0] = 0x02;  /* in ad-hoc mode bit1 must set to 1 */
-	pibss[1] = 0x11;
-	pibss[2] = 0x87;
-	pibss[3] = (u8)(curtime & 0xff) ;/* p[0]; */
-	pibss[4] = (u8)((curtime >> 8) & 0xff) ;/* p[1]; */
-	pibss[5] = (u8)((curtime >> 16) & 0xff) ;/* p[2]; */
-}
-
-u8 *rtw_get_capability_from_ie(u8 *ie)
-{
-	return ie + 8 + 2;
-}
-
-u16 rtw_get_capability(struct wlan_bssid_ex *bss)
-{
-	__le16	val;
-
-	memcpy((u8 *)&val, rtw_get_capability_from_ie(bss->ies), 2);
-
-	return le16_to_cpu(val);
-}
-
-u8 *rtw_get_beacon_interval_from_ie(u8 *ie)
-{
-	return ie + 8;
-}
-
-void rtw_free_mlme_priv(struct mlme_priv *pmlmepriv)
-{
-	_rtw_free_mlme_priv(pmlmepriv);
-}
-
-void rtw_free_network_nolock(struct adapter *padapter, struct wlan_network *pnetwork);
-void rtw_free_network_nolock(struct adapter *padapter, struct wlan_network *pnetwork)
-{
-	_rtw_free_network_nolock(&padapter->mlmepriv, pnetwork);
-	rtw_cfg80211_unlink_bss(padapter, pnetwork);
-}
-
-/*
- * return the wlan_network with the matching addr
- *
- * Shall be called under atomic context... to avoid possible racing condition...
- */
-struct wlan_network *rtw_find_network(struct __queue *scanned_queue, u8 *addr)
-{
-	struct wlan_network *pnetwork = _rtw_find_network(scanned_queue, addr);
-
-	return pnetwork;
-}
-
-bool rtw_is_same_ibss(struct adapter *adapter, struct wlan_network *pnetwork)
-{
-	struct security_priv *psecuritypriv = &adapter->securitypriv;
-
-	if ((psecuritypriv->dot11_privacy_algrthm != _NO_PRIVACY_) &&
-	    (pnetwork->network.privacy == 0))
-		return false;
-	else if ((psecuritypriv->dot11_privacy_algrthm == _NO_PRIVACY_) &&
-		 (pnetwork->network.privacy == 1))
-		return false;
-
-	return true;
-}
-
-inline int is_same_ess(struct wlan_bssid_ex *a, struct wlan_bssid_ex *b)
-{
-	return (a->ssid.ssid_length == b->ssid.ssid_length) &&
-		!memcmp(a->ssid.ssid, b->ssid.ssid, a->ssid.ssid_length);
-}
-
-int is_same_network(struct wlan_bssid_ex *src, struct wlan_bssid_ex *dst, u8 feature)
-{
-	u16 s_cap, d_cap;
-	__le16 tmps, tmpd;
-
-	memcpy((u8 *)&tmps, rtw_get_capability_from_ie(src->ies), 2);
-	memcpy((u8 *)&tmpd, rtw_get_capability_from_ie(dst->ies), 2);
-
-	s_cap = le16_to_cpu(tmps);
-	d_cap = le16_to_cpu(tmpd);
-
-	return (src->ssid.ssid_length == dst->ssid.ssid_length) &&
-			((!memcmp(src->mac_address, dst->mac_address, ETH_ALEN))) &&
-			((!memcmp(src->ssid.ssid, dst->ssid.ssid, src->ssid.ssid_length))) &&
-			((s_cap & WLAN_CAPABILITY_IBSS) ==
-			(d_cap & WLAN_CAPABILITY_IBSS)) &&
-			((s_cap & WLAN_CAPABILITY_ESS) ==
-			(d_cap & WLAN_CAPABILITY_ESS));
-}
-
-struct wlan_network *_rtw_find_same_network(struct __queue *scanned_queue, struct wlan_network *network)
-{
-	struct list_head *phead, *plist;
-	struct wlan_network *found = NULL;
-
-	phead = get_list_head(scanned_queue);
-	list_for_each(plist, phead) {
-		found = list_entry(plist, struct wlan_network, list);
-
-		if (is_same_network(&network->network, &found->network, 0))
-			break;
-	}
-
-	if (plist == phead)
-		found = NULL;
-
-	return found;
-}
-
-struct wlan_network *rtw_get_oldest_wlan_network(struct __queue *scanned_queue)
-{
-	struct list_head *plist, *phead;
-
-	struct	wlan_network *pwlan = NULL;
-	struct	wlan_network *oldest = NULL;
-
-	phead = get_list_head(scanned_queue);
-
-	list_for_each(plist, phead) {
-		pwlan = list_entry(plist, struct wlan_network, list);
-
-		if (!pwlan->fixed) {
-			if (!oldest || time_after(oldest->last_scanned, pwlan->last_scanned))
-				oldest = pwlan;
-		}
-	}
-	return oldest;
-}
-
-void update_network(struct wlan_bssid_ex *dst, struct wlan_bssid_ex *src,
-		    struct adapter *padapter, bool update_ie)
-{
-	long rssi_ori = dst->rssi;
-
-	u8 sq_smp = src->phy_info.signal_quality;
-
-	u8 ss_final;
-	u8 sq_final;
-	long rssi_final;
-
-	/* The rule below is 1/5 for sample value, 4/5 for history value */
-	if (check_fwstate(&padapter->mlmepriv, _FW_LINKED) && is_same_network(&padapter->mlmepriv.cur_network.network, src, 0)) {
-		/* Take the recvpriv's value for the connected AP*/
-		ss_final = padapter->recvpriv.signal_strength;
-		sq_final = padapter->recvpriv.signal_qual;
-		/* the rssi value here is undecorated, and will be used for antenna diversity */
-		if (sq_smp != 101) /* from the right channel */
-			rssi_final = (src->rssi + dst->rssi * 4) / 5;
-		else
-			rssi_final = rssi_ori;
-	} else {
-		if (sq_smp != 101) { /* from the right channel */
-			ss_final = ((u32)(src->phy_info.signal_strength) + (u32)(dst->phy_info.signal_strength) * 4) / 5;
-			sq_final = ((u32)(src->phy_info.signal_quality) + (u32)(dst->phy_info.signal_quality) * 4) / 5;
-			rssi_final = (src->rssi + dst->rssi * 4) / 5;
-		} else {
-			/* bss info not receiving from the right channel, use the original RX signal infos */
-			ss_final = dst->phy_info.signal_strength;
-			sq_final = dst->phy_info.signal_quality;
-			rssi_final = dst->rssi;
-		}
-	}
-
-	if (update_ie) {
-		dst->reserved[0] = src->reserved[0];
-		dst->reserved[1] = src->reserved[1];
-		memcpy((u8 *)dst, (u8 *)src, get_wlan_bssid_ex_sz(src));
-	}
-
-	dst->phy_info.signal_strength = ss_final;
-	dst->phy_info.signal_quality = sq_final;
-	dst->rssi = rssi_final;
-}
-
-static void update_current_network(struct adapter *adapter, struct wlan_bssid_ex *pnetwork)
-{
-	struct	mlme_priv *pmlmepriv = &adapter->mlmepriv;
-
-	if (check_fwstate(pmlmepriv, _FW_LINKED) && (is_same_network(&pmlmepriv->cur_network.network, pnetwork, 0))) {
-		update_network(&pmlmepriv->cur_network.network, pnetwork, adapter, true);
-		if (pmlmepriv->cur_network.network.ie_length < sizeof(struct ndis_802_11_fix_ie))
-			return;
-
-		rtw_update_protection(adapter, (pmlmepriv->cur_network.network.ies) + sizeof(struct ndis_802_11_fix_ie),
-								pmlmepriv->cur_network.network.ie_length - sizeof(struct ndis_802_11_fix_ie));
-	}
-}
-
-/* Caller must hold pmlmepriv->lock first. */
-void rtw_update_scanned_network(struct adapter *adapter, struct wlan_bssid_ex *target)
-{
-	struct list_head *plist, *phead;
-	u32 bssid_ex_sz;
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	struct __queue *queue = &pmlmepriv->scanned_queue;
-	struct wlan_network *pnetwork = NULL;
-	struct wlan_network *oldest = NULL;
-	int target_find = 0;
-	u8 feature = 0;
-
-	spin_lock_bh(&queue->lock);
-	phead = get_list_head(queue);
-	list_for_each(plist, phead) {
-		pnetwork = list_entry(plist, struct wlan_network, list);
-
-		if (is_same_network(&pnetwork->network, target, feature)) {
-			target_find = 1;
-			break;
-		}
-
-		if (rtw_roam_flags(adapter)) {
-			/* TODO: don't select network in the same ess as oldest if it's new enough*/
-		}
-
-		if (!oldest || time_after(oldest->last_scanned, pnetwork->last_scanned))
-			oldest = pnetwork;
-	}
-
-	/*
-	 * If we didn't find a match, then get a new network slot to initialize
-	 * with this beacon's information
-	 */
-	if (!target_find) {
-		if (list_empty(&pmlmepriv->free_bss_pool.queue)) {
-			/* If there are no more slots, expire the oldest */
-			/* list_del_init(&oldest->list); */
-			pnetwork = oldest;
-			if (!pnetwork)
-				goto exit;
-
-			memcpy(&pnetwork->network, target,  get_wlan_bssid_ex_sz(target));
-			/*  variable initialize */
-			pnetwork->fixed = false;
-			pnetwork->last_scanned = jiffies;
-
-			pnetwork->network_type = 0;
-			pnetwork->aid = 0;
-			pnetwork->join_res = 0;
-
-			/* bss info not receiving from the right channel */
-			if (pnetwork->network.phy_info.signal_quality == 101)
-				pnetwork->network.phy_info.signal_quality = 0;
-		} else {
-			/* Otherwise just pull from the free list */
-
-			pnetwork = rtw_alloc_network(pmlmepriv); /*  will update scan_time */
-
-			if (!pnetwork)
-				goto exit;
-
-			bssid_ex_sz = get_wlan_bssid_ex_sz(target);
-			target->length = bssid_ex_sz;
-			memcpy(&pnetwork->network, target, bssid_ex_sz);
-
-			pnetwork->last_scanned = jiffies;
-
-			/* bss info not receiving from the right channel */
-			if (pnetwork->network.phy_info.signal_quality == 101)
-				pnetwork->network.phy_info.signal_quality = 0;
-
-			list_add_tail(&pnetwork->list, &queue->queue);
-		}
-	} else {
-		/* we have an entry and we are going to update it. But this entry may
-		 * be already expired. In this case we do the same as we found a new
-		 * net and call the new_net handler
-		 */
-		bool update_ie = true;
-
-		pnetwork->last_scanned = jiffies;
-
-		/* target.reserved[0]== 1, means that scanned network is a bcn frame. */
-		if (pnetwork->network.ie_length > target->ie_length && target->reserved[0] == 1)
-			update_ie = false;
-
-		/*  probe resp(3) > beacon(1) > probe req(2) */
-		if (target->reserved[0] != 2 &&
-		    target->reserved[0] >= pnetwork->network.reserved[0]) {
-			update_ie = true;
-		} else {
-			update_ie = false;
-		}
-
-		update_network(&pnetwork->network, target, adapter, update_ie);
-	}
-
-exit:
-	spin_unlock_bh(&queue->lock);
-}
-
-static void rtw_add_network(struct adapter *adapter, struct wlan_bssid_ex *pnetwork)
-{
-	update_current_network(adapter, pnetwork);
-	rtw_update_scanned_network(adapter, pnetwork);
-}
-
-/* select the desired network based on the capability of the (i)bss.
- * check items:
- * (1) security
- * (2) network_type
- * (3) WMM
- * (4) HT
- * (5) others
- */
-static bool rtw_is_desired_network(struct adapter *adapter, struct wlan_network *pnetwork)
-{
-	struct security_priv *psecuritypriv = &adapter->securitypriv;
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	u32 desired_encmode;
-	u32 privacy;
-	uint wps_ielen;
-	bool bselected = true;
-
-	desired_encmode = psecuritypriv->ndisencryptstatus;
-	privacy = pnetwork->network.privacy;
-
-	if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) {
-		if (pnetwork->network.ie_length < _FIXED_IE_LENGTH_)
-			return false;
-		if (rtw_get_wps_ie(pnetwork->network.ies + _FIXED_IE_LENGTH_, pnetwork->network.ie_length - _FIXED_IE_LENGTH_, NULL, &wps_ielen))
-			return true;
-		else
-			return false;
-	}
-
-	if (adapter->registrypriv.wifi_spec == 1) { /* for  correct flow of 8021X  to do.... */
-		u8 *p = NULL;
-		uint ie_len = 0;
-
-		if ((desired_encmode == Ndis802_11EncryptionDisabled) && (privacy != 0))
-			bselected = false;
-
-		if (psecuritypriv->ndisauthtype == Ndis802_11AuthModeWPA2PSK) {
-			if (pnetwork->network.ie_length < _BEACON_IE_OFFSET_) {
-				bselected = false;
-			} else {
-				p = rtw_get_ie(pnetwork->network.ies + _BEACON_IE_OFFSET_, WLAN_EID_RSN, &ie_len, (pnetwork->network.ie_length - _BEACON_IE_OFFSET_));
-				if (p && ie_len > 0)
-					bselected = true;
-				else
-					bselected = false;
-			}
-		}
-	}
-
-	if ((desired_encmode != Ndis802_11EncryptionDisabled) && (privacy == 0))
-		bselected = false;
-
-	if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
-		if (pnetwork->network.infrastructure_mode != pmlmepriv->cur_network.network.infrastructure_mode)
-			bselected = false;
-	}
-
-	return bselected;
-}
-
-void rtw_survey_event_callback(struct adapter *adapter, u8 *pbuf)
-{
-	u32 len;
-	struct wlan_bssid_ex *pnetwork;
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-
-	pnetwork = (struct wlan_bssid_ex *)pbuf;
-
-	len = get_wlan_bssid_ex_sz(pnetwork);
-	if (len > (sizeof(struct wlan_bssid_ex)))
-		return;
-
-	spin_lock_bh(&pmlmepriv->lock);
-
-	/*  update IBSS_network 's timestamp */
-	if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
-		if (!memcmp(&pmlmepriv->cur_network.network.mac_address, pnetwork->mac_address, ETH_ALEN)) {
-			struct wlan_network *ibss_wlan = NULL;
-
-			memcpy(pmlmepriv->cur_network.network.ies, pnetwork->ies, 8);
-			spin_lock_bh(&pmlmepriv->scanned_queue.lock);
-			ibss_wlan = rtw_find_network(&pmlmepriv->scanned_queue,  pnetwork->mac_address);
-			if (ibss_wlan) {
-				memcpy(ibss_wlan->network.ies, pnetwork->ies, 8);
-				spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
-				goto exit;
-			}
-			spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
-		}
-	}
-
-	/*  lock pmlmepriv->lock when you accessing network_q */
-	if (!check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) {
-		if (pnetwork->ssid.ssid[0] == 0)
-			pnetwork->ssid.ssid_length = 0;
-		rtw_add_network(adapter, pnetwork);
-	}
-
-exit:
-
-	spin_unlock_bh(&pmlmepriv->lock);
-}
-
-void rtw_surveydone_event_callback(struct adapter *adapter, u8 *pbuf)
-{
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-
-	spin_lock_bh(&pmlmepriv->lock);
-	if (pmlmepriv->wps_probe_req_ie) {
-		pmlmepriv->wps_probe_req_ie_len = 0;
-		kfree(pmlmepriv->wps_probe_req_ie);
-		pmlmepriv->wps_probe_req_ie = NULL;
-	}
-
-	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) {
-		spin_unlock_bh(&pmlmepriv->lock);
-		timer_delete_sync(&pmlmepriv->scan_to_timer);
-		spin_lock_bh(&pmlmepriv->lock);
-		_clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY);
-	}
-
-	rtw_set_signal_stat_timer(&adapter->recvpriv);
-
-	if (pmlmepriv->to_join) {
-		if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
-			if (!check_fwstate(pmlmepriv, _FW_LINKED)) {
-				set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
-
-				if (rtw_select_and_join_from_scanned_queue(pmlmepriv) == _SUCCESS) {
-					_set_timer(&pmlmepriv->assoc_timer, MAX_JOIN_TIMEOUT);
-				} else {
-					u8 ret = _SUCCESS;
-					struct wlan_bssid_ex *pdev_network =
-						&adapter->registrypriv.dev_network;
-
-					u8 *pibss = adapter->registrypriv.dev_network.mac_address;
-
-					/* pmlmepriv->fw_state ^= _FW_UNDER_SURVEY;because don't set assoc_timer */
-					_clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY);
-
-					memcpy(&pdev_network->ssid, &pmlmepriv->assoc_ssid,
-					       sizeof(struct ndis_802_11_ssid));
-
-					rtw_update_registrypriv_dev_network(adapter);
-					rtw_generate_random_ibss(pibss);
-
-					pmlmepriv->fw_state = WIFI_ADHOC_MASTER_STATE;
-
-					pmlmepriv->to_join = false;
-
-					ret = rtw_createbss_cmd(adapter);
-					if (ret != _SUCCESS)
-						goto unlock;
-				}
-			}
-		} else {
-			int s_ret;
-
-			set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
-			pmlmepriv->to_join = false;
-			s_ret = rtw_select_and_join_from_scanned_queue(pmlmepriv);
-			if (s_ret == _SUCCESS) {
-				_set_timer(&pmlmepriv->assoc_timer, MAX_JOIN_TIMEOUT);
-			} else if (s_ret == 2) {/* there is no need to wait for join */
-				_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
-				rtw_indicate_connect(adapter);
-			} else {
-				if (rtw_to_roam(adapter) != 0) {
-					if (rtw_dec_to_roam(adapter) == 0 ||
-					    rtw_sitesurvey_cmd(adapter, &pmlmepriv->assoc_ssid,
-							       1, NULL, 0) != _SUCCESS) {
-						rtw_set_to_roam(adapter, 0);
-						rtw_free_assoc_resources(adapter, 1);
-						rtw_indicate_disconnect(adapter);
-					} else {
-						pmlmepriv->to_join = true;
-					}
-				} else {
-					rtw_indicate_disconnect(adapter);
-				}
-				_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
-			}
-		}
-	} else {
-		if (rtw_chk_roam_flags(adapter, RTW_ROAM_ACTIVE)) {
-			if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) &&
-			    check_fwstate(pmlmepriv, _FW_LINKED)) {
-				if (rtw_select_roaming_candidate(pmlmepriv) == _SUCCESS) {
-					receive_disconnect(adapter, pmlmepriv->cur_network.network.mac_address
-						, WLAN_REASON_ACTIVE_ROAM);
-				}
-			}
-		}
-	}
-
-unlock:
-	spin_unlock_bh(&pmlmepriv->lock);
-
-	rtw_os_xmit_schedule(adapter);
-
-	rtw_cfg80211_surveydone_event_callback(adapter);
-
-	rtw_indicate_scan_done(adapter, false);
-}
-
-void rtw_dummy_event_callback(struct adapter *adapter, u8 *pbuf)
-{
-}
-
-void rtw_fwdbg_event_callback(struct adapter *adapter, u8 *pbuf)
-{
-}
-
-static void free_scanqueue(struct mlme_priv *pmlmepriv)
-{
-	struct __queue *free_queue = &pmlmepriv->free_bss_pool;
-	struct __queue *scan_queue = &pmlmepriv->scanned_queue;
-	struct list_head *plist, *phead, *ptemp;
-
-	spin_lock_bh(&scan_queue->lock);
-	spin_lock_bh(&free_queue->lock);
-
-	phead = get_list_head(scan_queue);
-	plist = get_next(phead);
-
-	while (plist != phead) {
-		ptemp = get_next(plist);
-		list_del_init(plist);
-		list_add_tail(plist, &free_queue->queue);
-		plist = ptemp;
-	}
-
-	spin_unlock_bh(&free_queue->lock);
-	spin_unlock_bh(&scan_queue->lock);
-}
-
-static void find_network(struct adapter *adapter)
-{
-	struct wlan_network *pwlan = NULL;
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	struct wlan_network *tgt_network = &pmlmepriv->cur_network;
-
-	pwlan = rtw_find_network(&pmlmepriv->scanned_queue, tgt_network->network.mac_address);
-	if (!pwlan)
-		return;
-
-	pwlan->fixed = false;
-
-	if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) &&
-	    (adapter->stapriv.asoc_sta_count == 1))
-		rtw_free_network_nolock(adapter, pwlan);
-}
-
-/* rtw_free_assoc_resources: the caller has to lock pmlmepriv->lock */
-void rtw_free_assoc_resources(struct adapter *adapter, int lock_scanned_queue)
-{
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	struct wlan_network *tgt_network = &pmlmepriv->cur_network;
-
-	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_AP_STATE)) {
-		struct sta_info *psta;
-
-		psta = rtw_get_stainfo(&adapter->stapriv, tgt_network->network.mac_address);
-		rtw_free_stainfo(adapter, psta);
-	}
-
-	if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE | WIFI_ADHOC_MASTER_STATE | WIFI_AP_STATE)) {
-		struct sta_info *psta;
-
-		rtw_free_all_stainfo(adapter);
-
-		psta = rtw_get_bcmc_stainfo(adapter);
-		rtw_free_stainfo(adapter, psta);
-
-		rtw_init_bcmc_stainfo(adapter);
-	}
-
-	find_network(adapter);
-
-	if (lock_scanned_queue)
-		adapter->securitypriv.key_mask = 0;
-}
-
-/* rtw_indicate_connect: the caller has to lock pmlmepriv->lock */
-void rtw_indicate_connect(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	pmlmepriv->to_join = false;
-
-	if (!check_fwstate(&padapter->mlmepriv, _FW_LINKED)) {
-		set_fwstate(pmlmepriv, _FW_LINKED);
-
-		if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) ||
-		    check_fwstate(pmlmepriv, WIFI_ADHOC_STATE))
-			rtw_cfg80211_ibss_indicate_connect(padapter);
-		else
-			rtw_cfg80211_indicate_connect(padapter);
-
-		netif_carrier_on(padapter->pnetdev);
-
-		if (padapter->pid[2] != 0)
-			rtw_signal_process(padapter->pid[2], SIGALRM);
-	}
-
-	rtw_set_to_roam(padapter, 0);
-	rtw_set_scan_deny(padapter, 3000);
-}
-
-/* rtw_indicate_disconnect: the caller has to lock pmlmepriv->lock */
-void rtw_indicate_disconnect(struct adapter *padapter)
-{
-	struct	mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING | WIFI_UNDER_WPS);
-
-	if (rtw_to_roam(padapter) > 0)
-		_clr_fwstate_(pmlmepriv, _FW_LINKED);
-
-	if (check_fwstate(&padapter->mlmepriv, _FW_LINKED) || rtw_to_roam(padapter) <= 0) {
-		/*  Do it first for tx broadcast pkt after disconnection issue! */
-		netif_carrier_off(padapter->pnetdev);
-
-		rtw_cfg80211_indicate_disconnect(padapter);
-
-		rtw_reset_securitypriv_cmd(padapter);
-
-		/* set ips_deny_time to avoid enter IPS before LPS leave */
-		rtw_set_ips_deny(padapter, 3000);
-
-		_clr_fwstate_(pmlmepriv, _FW_LINKED);
-
-		rtw_clear_scan_deny(padapter);
-	}
-
-	rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_DISCONNECT, 1);
-}
-
-inline void rtw_indicate_scan_done(struct adapter *padapter, bool aborted)
-{
-	rtw_cfg80211_indicate_scan_done(padapter, aborted);
-
-	if ((!adapter_to_pwrctl(padapter)->bInSuspend) &&
-	    (!check_fwstate(&padapter->mlmepriv,
-			    WIFI_ASOC_STATE | WIFI_UNDER_LINKING))) {
-		rtw_set_ips_deny(padapter, 0);
-		_set_timer(&padapter->mlmepriv.dynamic_chk_timer, 1);
-	}
-}
-
-void rtw_scan_abort(struct adapter *adapter)
-{
-	unsigned long start;
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv;
-
-	start = jiffies;
-	pmlmeext->scan_abort = true;
-	while (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)
-	       && jiffies_to_msecs(start) <= 200) {
-		if (adapter->driver_stopped || adapter->bSurpriseRemoved)
-			break;
-
-		msleep(20);
-	}
-
-	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
-		rtw_indicate_scan_done(adapter, true);
-
-	pmlmeext->scan_abort = false;
-}
-
-static struct sta_info *rtw_joinbss_update_stainfo(struct adapter *padapter, struct wlan_network *pnetwork)
-{
-	int i;
-	struct sta_info *bmc_sta, *psta = NULL;
-	struct recv_reorder_ctrl *preorder_ctrl;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-	psta = rtw_get_stainfo(pstapriv, pnetwork->network.mac_address);
-	if (!psta)
-		psta = rtw_alloc_stainfo(pstapriv, pnetwork->network.mac_address);
-
-	if (psta) { /* update ptarget_sta */
-
-		psta->aid = pnetwork->join_res;
-
-		update_sta_info(padapter, psta);
-
-		/* update station supportRate */
-		psta->bssratelen = rtw_get_rateset_len(pnetwork->network.supported_rates);
-		memcpy(psta->bssrateset, pnetwork->network.supported_rates, psta->bssratelen);
-		rtw_hal_update_sta_rate_mask(padapter, psta);
-
-		psta->wireless_mode = pmlmeext->cur_wireless_mode;
-		psta->raid = networktype_to_raid_ex(padapter, psta);
-
-		/* sta mode */
-		rtw_hal_set_odm_var(padapter, HAL_ODM_STA_INFO, psta, true);
-
-		/* security related */
-		if (padapter->securitypriv.dot11_auth_algrthm == dot11_auth_algrthm_8021x) {
-			padapter->securitypriv.binstallGrpkey = false;
-			padapter->securitypriv.busetkipkey = false;
-			padapter->securitypriv.bgrpkey_handshake = false;
-
-			psta->ieee8021x_blocked = true;
-			psta->dot118021XPrivacy = padapter->securitypriv.dot11_privacy_algrthm;
-
-			memset((u8 *)&psta->dot118021x_UncstKey, 0, sizeof(union Keytype));
-
-			memset((u8 *)&psta->dot11tkiprxmickey, 0, sizeof(union Keytype));
-			memset((u8 *)&psta->dot11tkiptxmickey, 0, sizeof(union Keytype));
-
-			memset((u8 *)&psta->dot11txpn, 0, sizeof(union pn48));
-			psta->dot11txpn.val = psta->dot11txpn.val + 1;
-			memset((u8 *)&psta->dot11wtxpn, 0, sizeof(union pn48));
-			memset((u8 *)&psta->dot11rxpn, 0, sizeof(union pn48));
-		}
-
-		/* When doing the WPS, the wps_ie_len won't equal to 0 */
-		/* And the Wi-Fi driver shouldn't allow the data packet to be transmitted. */
-		if (padapter->securitypriv.wps_ie_len != 0) {
-			psta->ieee8021x_blocked = true;
-			padapter->securitypriv.wps_ie_len = 0;
-		}
-
-		/* for A-MPDU Rx reordering buffer control for bmc_sta & sta_info */
-		/* if A-MPDU Rx is enabled, resetting  rx_ordering_ctrl wstart_b(indicate_seq) to default value = 0xffff */
-		/* todo: check if AP can send A-MPDU packets */
-		for (i = 0; i < 16 ; i++) {
-			preorder_ctrl = &psta->recvreorder_ctrl[i];
-			preorder_ctrl->enable = false;
-			preorder_ctrl->indicate_seq = 0xffff;
-			preorder_ctrl->wend_b = 0xffff;
-			preorder_ctrl->wsize_b = 64;/* max_ampdu_sz;ex. 32(kbytes) -> wsize_b =32 */
-		}
-
-		bmc_sta = rtw_get_bcmc_stainfo(padapter);
-		if (bmc_sta) {
-			for (i = 0; i < 16 ; i++) {
-				preorder_ctrl = &bmc_sta->recvreorder_ctrl[i];
-				preorder_ctrl->enable = false;
-				preorder_ctrl->indicate_seq = 0xffff;
-				preorder_ctrl->wend_b = 0xffff;
-				preorder_ctrl->wsize_b = 64;/* max_ampdu_sz;ex. 32(kbytes) -> wsize_b =32 */
-			}
-		}
-	}
-
-	return psta;
-}
-
-/* pnetwork : returns from rtw_joinbss_event_callback */
-/* ptarget_wlan: found from scanned_queue */
-static void rtw_joinbss_update_network(struct adapter *padapter, struct wlan_network *ptarget_wlan,
-				       struct wlan_network *pnetwork)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct wlan_network *cur_network = &pmlmepriv->cur_network;
-
-	/*  why not use ptarget_wlan?? */
-	memcpy(&cur_network->network, &pnetwork->network, pnetwork->network.length);
-	/*  some ies in pnetwork is wrong, so we should use ptarget_wlan ies */
-	cur_network->network.ie_length = ptarget_wlan->network.ie_length;
-	memcpy(&cur_network->network.ies[0], &ptarget_wlan->network.ies[0], MAX_IE_SZ);
-
-	cur_network->aid = pnetwork->join_res;
-
-	rtw_set_signal_stat_timer(&padapter->recvpriv);
-
-	padapter->recvpriv.signal_strength = ptarget_wlan->network.phy_info.signal_strength;
-	padapter->recvpriv.signal_qual = ptarget_wlan->network.phy_info.signal_quality;
-	/* the ptarget_wlan->network.rssi is raw data, we use ptarget_wlan->network.phy_info.signal_strength instead (has scaled) */
-	padapter->recvpriv.rssi = translate_percentage_to_dbm(ptarget_wlan->network.phy_info.signal_strength);
-
-	rtw_set_signal_stat_timer(&padapter->recvpriv);
-
-	/* update fw_state will clr _FW_UNDER_LINKING here indirectly */
-	switch (pnetwork->network.infrastructure_mode) {
-	case NL80211_IFTYPE_STATION:
-
-			if (pmlmepriv->fw_state & WIFI_UNDER_WPS)
-				pmlmepriv->fw_state = WIFI_STATION_STATE | WIFI_UNDER_WPS;
-			else
-				pmlmepriv->fw_state = WIFI_STATION_STATE;
-
-			break;
-	case NL80211_IFTYPE_ADHOC:
-			pmlmepriv->fw_state = WIFI_ADHOC_STATE;
-			break;
-	default:
-			pmlmepriv->fw_state = WIFI_NULL_STATE;
-			break;
-	}
-
-	if (cur_network->network.ie_length < sizeof(struct ndis_802_11_fix_ie))
-		return;
-
-	rtw_update_protection(padapter, (cur_network->network.ies) + sizeof(struct ndis_802_11_fix_ie),
-									(cur_network->network.ie_length - sizeof(struct ndis_802_11_fix_ie)));
-
-	rtw_update_ht_cap(padapter, cur_network->network.ies, cur_network->network.ie_length, (u8) cur_network->network.configuration.ds_config);
-}
-
-static struct rt_pmkid_list backupPMKIDList[NUM_PMKID_CACHE];
-void rtw_reset_securitypriv(struct adapter *adapter)
-{
-	u8 backupPMKIDIndex = 0;
-	u8 backupTKIPCountermeasure = 0x00;
-	u32 backupTKIPcountermeasure_time = 0;
-	struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv;
-
-	spin_lock_bh(&adapter->security_key_mutex);
-
-	if (adapter->securitypriv.dot11_auth_algrthm == dot11_auth_algrthm_8021x) {
-		/* 802.1x */
-		/*  Added by Albert 2009/02/18 */
-		/*  We have to backup the PMK information for WiFi PMK Caching test item. */
-		/*  */
-		/*  Backup the btkip_countermeasure information. */
-		/*  When the countermeasure is trigger, the driver have to disconnect with AP for 60 seconds. */
-
-		memcpy(&backupPMKIDList[0], &adapter->securitypriv.PMKIDList[0], sizeof(struct rt_pmkid_list) * NUM_PMKID_CACHE);
-		backupPMKIDIndex = adapter->securitypriv.PMKIDIndex;
-		backupTKIPCountermeasure = adapter->securitypriv.btkip_countermeasure;
-		backupTKIPcountermeasure_time = adapter->securitypriv.btkip_countermeasure_time;
-
-		/* reset RX BIP packet number */
-		pmlmeext->mgnt_80211w_IPN_rx = 0;
-
-		memset((unsigned char *)&adapter->securitypriv, 0, sizeof(struct security_priv));
-
-		/*  Added by Albert 2009/02/18 */
-		/*  Restore the PMK information to securitypriv structure for the following connection. */
-		memcpy(&adapter->securitypriv.PMKIDList[0], &backupPMKIDList[0], sizeof(struct rt_pmkid_list) * NUM_PMKID_CACHE);
-		adapter->securitypriv.PMKIDIndex = backupPMKIDIndex;
-		adapter->securitypriv.btkip_countermeasure = backupTKIPCountermeasure;
-		adapter->securitypriv.btkip_countermeasure_time = backupTKIPcountermeasure_time;
-
-		adapter->securitypriv.ndisauthtype = Ndis802_11AuthModeOpen;
-		adapter->securitypriv.ndisencryptstatus = Ndis802_11WEPDisabled;
-
-	} else {
-		/* reset values in securitypriv */
-		/* if (adapter->mlmepriv.fw_state & WIFI_STATION_STATE) */
-		/*  */
-		struct security_priv *psec_priv = &adapter->securitypriv;
-
-		psec_priv->dot11_auth_algrthm = dot11_auth_algrthm_open;  /* open system */
-		psec_priv->dot11_privacy_algrthm = _NO_PRIVACY_;
-		psec_priv->dot11PrivacyKeyIndex = 0;
-
-		psec_priv->dot118021XGrpPrivacy = _NO_PRIVACY_;
-		psec_priv->dot118021XGrpKeyid = 1;
-
-		psec_priv->ndisauthtype = Ndis802_11AuthModeOpen;
-		psec_priv->ndisencryptstatus = Ndis802_11WEPDisabled;
-		/*  */
-	}
-	spin_unlock_bh(&adapter->security_key_mutex);
-}
-
-/* Notes: the function could be > passive_level (the same context as Rx tasklet) */
-/* pnetwork : returns from rtw_joinbss_event_callback */
-/* ptarget_wlan: found from scanned_queue */
-/* if join_res > 0, for (fw_state ==WIFI_STATION_STATE), we check if  "ptarget_sta" & "ptarget_wlan" exist. */
-/* if join_res > 0, for (fw_state ==WIFI_ADHOC_STATE), we only check if "ptarget_wlan" exist. */
-/* if join_res > 0, update "cur_network->network" from "pnetwork->network" if (ptarget_wlan != NULL). */
-/*  */
-void rtw_joinbss_event_prehandle(struct adapter *adapter, u8 *pbuf)
-{
-	struct sta_info *ptarget_sta = NULL, *pcur_sta = NULL;
-	struct sta_priv *pstapriv = &adapter->stapriv;
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	struct wlan_network *pnetwork = (struct wlan_network *)pbuf;
-	struct wlan_network *cur_network = &pmlmepriv->cur_network;
-	struct wlan_network *pcur_wlan = NULL, *ptarget_wlan = NULL;
-	unsigned int the_same_macaddr = false;
-
-	the_same_macaddr = !memcmp(pnetwork->network.mac_address, cur_network->network.mac_address, ETH_ALEN);
-
-	pnetwork->network.length = get_wlan_bssid_ex_sz(&pnetwork->network);
-	if (pnetwork->network.length > sizeof(struct wlan_bssid_ex))
-		return;
-
-	spin_lock_bh(&pmlmepriv->lock);
-
-	pmlmepriv->link_detect_info.traffic_transition_count = 0;
-	pmlmepriv->link_detect_info.low_power_transition_count = 0;
-
-	if (pnetwork->join_res == -4) {
-		rtw_reset_securitypriv(adapter);
-		_set_timer(&pmlmepriv->assoc_timer, 1);
-
-		if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING))
-			_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
-
-		spin_unlock_bh(&pmlmepriv->lock);
-		return;
-	}
-
-	if (pnetwork->join_res <= 0) { /* if join_res < 0 (join fails), then try again */
-		_set_timer(&pmlmepriv->assoc_timer, 1);
-		_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
-		spin_unlock_bh(&pmlmepriv->lock);
-		return;
-	}
-
-	spin_lock_bh(&pmlmepriv->scanned_queue.lock);
-
-	if (!check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) {
-		spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
-		spin_unlock_bh(&pmlmepriv->lock);
-		return;
-	}
-
-	/* s1. find ptarget_wlan */
-	if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-		if (the_same_macaddr) {
-			ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, cur_network->network.mac_address);
-		} else {
-			pcur_wlan = rtw_find_network(&pmlmepriv->scanned_queue, cur_network->network.mac_address);
-			if (pcur_wlan)
-				pcur_wlan->fixed = false;
-
-			pcur_sta = rtw_get_stainfo(pstapriv, cur_network->network.mac_address);
-			if (pcur_sta)
-				rtw_free_stainfo(adapter, pcur_sta);
-
-			ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, pnetwork->network.mac_address);
-			if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
-				if (ptarget_wlan)
-					ptarget_wlan->fixed = true;
-			}
-		}
-	} else {
-		ptarget_wlan = _rtw_find_same_network(&pmlmepriv->scanned_queue, pnetwork);
-		if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
-			if (ptarget_wlan)
-				ptarget_wlan->fixed = true;
-		}
-	}
-
-	/* s2. update cur_network */
-	if (!ptarget_wlan) {
-		netdev_dbg(adapter->pnetdev,
-			   "Can't find ptarget_wlan when joinbss_event callback\n");
-		spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
-		spin_unlock_bh(&pmlmepriv->lock);
-		return;
-	}
-
-	rtw_joinbss_update_network(adapter, ptarget_wlan, pnetwork);
-
-	/* s3. find ptarget_sta & update ptarget_sta after update cur_network only for station mode */
-	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
-		ptarget_sta = rtw_joinbss_update_stainfo(adapter, pnetwork);
-		if (!ptarget_sta) {
-			spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
-			spin_unlock_bh(&pmlmepriv->lock);
-			return;
-		}
-	}
-
-	/* s4. indicate connect */
-	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
-		pmlmepriv->cur_network_scanned = ptarget_wlan;
-		rtw_indicate_connect(adapter);
-	}
-
-	spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
-
-	spin_unlock_bh(&pmlmepriv->lock);
-	/* s5. Cancel assoc_timer */
-	timer_delete_sync(&pmlmepriv->assoc_timer);
-}
-
-void rtw_joinbss_event_callback(struct adapter *adapter, u8 *pbuf)
-{
-	struct wlan_network *pnetwork = (struct wlan_network *)pbuf;
-
-	mlmeext_joinbss_event_callback(adapter, pnetwork->join_res);
-
-	rtw_os_xmit_schedule(adapter);
-}
-
-/* FOR STA, AP , AD-HOC mode */
-void rtw_sta_media_status_rpt(struct adapter *adapter, struct sta_info *psta, u32 mstatus)
-{
-	u16 media_status_rpt;
-
-	if (!psta)
-		return;
-
-	media_status_rpt = (u16)((psta->mac_id << 8) | mstatus); /*   MACID|OPMODE:1 connect */
-	rtw_hal_set_hwreg(adapter, HW_VAR_H2C_MEDIA_STATUS_RPT, (u8 *)&media_status_rpt);
-}
-
-void rtw_stassoc_event_callback(struct adapter *adapter, u8 *pbuf)
-{
-	struct sta_info *psta;
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	struct stassoc_event *pstassoc = (struct stassoc_event *)pbuf;
-	struct wlan_network *cur_network = &pmlmepriv->cur_network;
-	struct wlan_network *ptarget_wlan = NULL;
-
-	if (!rtw_access_ctrl(adapter, pstassoc->macaddr))
-		return;
-
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		psta = rtw_get_stainfo(&adapter->stapriv, pstassoc->macaddr);
-		if (psta) {
-			u8 *passoc_req = NULL;
-			u32 assoc_req_len = 0;
-
-			rtw_sta_media_status_rpt(adapter, psta, 1);
-
-			ap_sta_info_defer_update(adapter, psta);
-
-			/* report to upper layer */
-			spin_lock_bh(&psta->lock);
-			if (psta->passoc_req && psta->assoc_req_len > 0) {
-				passoc_req = kmemdup(psta->passoc_req, psta->assoc_req_len, GFP_ATOMIC);
-				if (passoc_req) {
-					assoc_req_len = psta->assoc_req_len;
-
-					kfree(psta->passoc_req);
-					psta->passoc_req = NULL;
-					psta->assoc_req_len = 0;
-				}
-			}
-			spin_unlock_bh(&psta->lock);
-
-			if (passoc_req && assoc_req_len > 0) {
-				rtw_cfg80211_indicate_sta_assoc(adapter, passoc_req, assoc_req_len);
-
-				kfree(passoc_req);
-			}
-		}
-		return;
-	}
-
-	/* for AD-HOC mode */
-	psta = rtw_get_stainfo(&adapter->stapriv, pstassoc->macaddr);
-	if (psta) {
-		/* the sta have been in sta_info_queue => do nothing */
-
-		return; /* between drv has received this event before and  fw have not yet to set key to CAM_ENTRY) */
-	}
-
-	psta = rtw_alloc_stainfo(&adapter->stapriv, pstassoc->macaddr);
-	if (!psta)
-		return;
-
-	/* to do : init sta_info variable */
-	psta->qos_option = 0;
-	psta->mac_id = (uint)pstassoc->cam_id;
-
-	/* for ad-hoc mode */
-	rtw_hal_set_odm_var(adapter, HAL_ODM_STA_INFO, psta, true);
-
-	rtw_sta_media_status_rpt(adapter, psta, 1);
-
-	if (adapter->securitypriv.dot11_auth_algrthm == dot11_auth_algrthm_8021x)
-		psta->dot118021XPrivacy = adapter->securitypriv.dot11_privacy_algrthm;
-
-	psta->ieee8021x_blocked = false;
-
-	spin_lock_bh(&pmlmepriv->lock);
-
-	if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) ||
-	    check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
-		if (adapter->stapriv.asoc_sta_count == 2) {
-			spin_lock_bh(&pmlmepriv->scanned_queue.lock);
-			ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, cur_network->network.mac_address);
-			pmlmepriv->cur_network_scanned = ptarget_wlan;
-			if (ptarget_wlan)
-				ptarget_wlan->fixed = true;
-			spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
-			/*  a sta + bc/mc_stainfo (not Ibss_stainfo) */
-			rtw_indicate_connect(adapter);
-		}
-	}
-
-	spin_unlock_bh(&pmlmepriv->lock);
-
-	mlmeext_sta_add_event_callback(adapter, psta);
-}
-
-void rtw_stadel_event_callback(struct adapter *adapter, u8 *pbuf)
-{
-	int mac_id = (-1);
-	struct sta_info *psta;
-	struct wlan_network *pwlan = NULL;
-	struct wlan_bssid_ex    *pdev_network = NULL;
-	u8 *pibss = NULL;
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	struct stadel_event *pstadel = (struct stadel_event *)pbuf;
-	struct wlan_network *tgt_network = &pmlmepriv->cur_network;
-	struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	psta = rtw_get_stainfo(&adapter->stapriv, pstadel->macaddr);
-	if (psta)
-		mac_id = psta->mac_id;
-	else
-		mac_id = pstadel->mac_id;
-
-	if (mac_id >= 0) {
-		u16 media_status;
-
-		media_status = (mac_id << 8) | 0; /*   MACID|OPMODE:0 means disconnect */
-		/* for STA, AP, ADHOC mode, report disconnect status to FW */
-		rtw_hal_set_hwreg(adapter, HW_VAR_H2C_MEDIA_STATUS_RPT, (u8 *)&media_status);
-	}
-
-	/* if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) */
-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE)
-		return;
-
-	mlmeext_sta_del_event_callback(adapter);
-
-	spin_lock_bh(&pmlmepriv->lock);
-
-	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
-		u16 reason = *((unsigned short *)(pstadel->rsvd));
-		bool roam = false;
-		struct wlan_network *roam_target = NULL;
-
-		if (adapter->registrypriv.wifi_spec == 1) {
-			roam = false;
-		} else if (reason == WLAN_REASON_EXPIRATION_CHK && rtw_chk_roam_flags(adapter, RTW_ROAM_ON_EXPIRED)) {
-			roam = true;
-		} else if (reason == WLAN_REASON_ACTIVE_ROAM && rtw_chk_roam_flags(adapter, RTW_ROAM_ACTIVE)) {
-			roam = true;
-			roam_target = pmlmepriv->roam_network;
-		}
-
-		if (roam) {
-			if (rtw_to_roam(adapter) > 0)
-				rtw_dec_to_roam(adapter); /* this stadel_event is caused by roaming, decrease to_roam */
-			else if (rtw_to_roam(adapter) == 0)
-				rtw_set_to_roam(adapter, adapter->registrypriv.max_roaming_times);
-		} else {
-			rtw_set_to_roam(adapter, 0);
-		}
-
-		rtw_free_uc_swdec_pending_queue(adapter);
-
-		rtw_free_assoc_resources(adapter, 1);
-		rtw_indicate_disconnect(adapter);
-
-		spin_lock_bh(&pmlmepriv->scanned_queue.lock);
-		/*  remove the network entry in scanned_queue */
-		pwlan = rtw_find_network(&pmlmepriv->scanned_queue, tgt_network->network.mac_address);
-		if (pwlan) {
-			pwlan->fixed = false;
-			rtw_free_network_nolock(adapter, pwlan);
-		}
-		spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
-
-		_rtw_roaming(adapter, roam_target);
-	}
-
-	if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) ||
-	    check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
-		rtw_free_stainfo(adapter, psta);
-
-		if (adapter->stapriv.asoc_sta_count == 1) {/* a sta + bc/mc_stainfo (not Ibss_stainfo) */
-			u8 ret = _SUCCESS;
-
-			spin_lock_bh(&pmlmepriv->scanned_queue.lock);
-			/* free old ibss network */
-			pwlan = rtw_find_network(&pmlmepriv->scanned_queue, tgt_network->network.mac_address);
-			if (pwlan) {
-				pwlan->fixed = false;
-				rtw_free_network_nolock(adapter, pwlan);
-			}
-			spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
-			/* re-create ibss */
-			pdev_network = &adapter->registrypriv.dev_network;
-			pibss = adapter->registrypriv.dev_network.mac_address;
-
-			memcpy(pdev_network, &tgt_network->network, get_wlan_bssid_ex_sz(&tgt_network->network));
-
-			memcpy(&pdev_network->ssid, &pmlmepriv->assoc_ssid, sizeof(struct ndis_802_11_ssid));
-
-			rtw_update_registrypriv_dev_network(adapter);
-
-			rtw_generate_random_ibss(pibss);
-
-			if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
-				set_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE);
-				_clr_fwstate_(pmlmepriv, WIFI_ADHOC_STATE);
-			}
-
-			ret = rtw_createbss_cmd(adapter);
-			if (ret != _SUCCESS)
-				goto unlock;
-		}
-	}
-
-unlock:
-	spin_unlock_bh(&pmlmepriv->lock);
-}
-
-void rtw_cpwm_event_callback(struct adapter *padapter, u8 *pbuf)
-{
-	struct reportpwrstate_parm *preportpwrstate;
-
-	preportpwrstate = (struct reportpwrstate_parm *)pbuf;
-	preportpwrstate->state |= (u8)(adapter_to_pwrctl(padapter)->cpwm_tog + 0x80);
-	cpwm_int_hdl(padapter, preportpwrstate);
-}
-
-void rtw_wmm_event_callback(struct adapter *padapter, u8 *pbuf)
-{
-	WMMOnAssocRsp(padapter);
-}
-
-/*
- * _rtw_join_timeout_handler - Timeout/failure handler for CMD JoinBss
- * @adapter: pointer to struct adapter structure
- */
-void _rtw_join_timeout_handler(struct timer_list *t)
-{
-	struct adapter *adapter = timer_container_of(adapter, t,
-						     mlmepriv.assoc_timer);
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-
-	if (adapter->driver_stopped || adapter->bSurpriseRemoved)
-		return;
-
-	spin_lock_bh(&pmlmepriv->lock);
-
-	if (rtw_to_roam(adapter) > 0) { /* join timeout caused by roaming */
-		while (1) {
-			rtw_dec_to_roam(adapter);
-			if (rtw_to_roam(adapter) != 0) { /* try another */
-				int do_join_r;
-
-				do_join_r = rtw_do_join(adapter);
-				if (do_join_r != _SUCCESS)
-					continue;
-
-				break;
-			}
-
-			rtw_indicate_disconnect(adapter);
-			break;
-		}
-
-	} else {
-		rtw_indicate_disconnect(adapter);
-		free_scanqueue(pmlmepriv);/*  */
-
-		/* indicate disconnect for the case that join_timeout and check_fwstate != FW_LINKED */
-		rtw_cfg80211_indicate_disconnect(adapter);
-	}
-
-	spin_unlock_bh(&pmlmepriv->lock);
-}
-
-/*
- * rtw_scan_timeout_handler - Timeout/Failure handler for CMD SiteSurvey
- * @adapter: pointer to struct adapter structure
- */
-void rtw_scan_timeout_handler(struct timer_list *t)
-{
-	struct adapter *adapter = timer_container_of(adapter, t,
-						     mlmepriv.scan_to_timer);
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-
-	spin_lock_bh(&pmlmepriv->lock);
-
-	_clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY);
-
-	spin_unlock_bh(&pmlmepriv->lock);
-
-	rtw_indicate_scan_done(adapter, true);
-}
-
-void rtw_mlme_reset_auto_scan_int(struct adapter *adapter)
-{
-	struct mlme_priv *mlme = &adapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	if (pmlmeinfo->VHT_enable) {
-		/* disable auto scan when connect to 11AC AP */
-		mlme->auto_scan_int_ms = 0;
-	} else if (adapter->registrypriv.wifi_spec && is_client_associated_to_ap(adapter)) {
-		mlme->auto_scan_int_ms = 60 * 1000;
-	} else if (rtw_chk_roam_flags(adapter, RTW_ROAM_ACTIVE)) {
-		if (check_fwstate(mlme, WIFI_STATION_STATE) && check_fwstate(mlme, _FW_LINKED))
-			mlme->auto_scan_int_ms = mlme->roam_scan_int_ms;
-	} else {
-		mlme->auto_scan_int_ms = 0; /* disabled */
-	}
-}
-
-static void rtw_auto_scan_handler(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	rtw_mlme_reset_auto_scan_int(padapter);
-
-	if (pmlmepriv->auto_scan_int_ms != 0 &&
-	    jiffies_to_msecs(jiffies - pmlmepriv->scan_start_time) > pmlmepriv->auto_scan_int_ms) {
-		if (!padapter->registrypriv.wifi_spec) {
-			if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY | _FW_UNDER_LINKING))
-				goto exit;
-
-			if (pmlmepriv->link_detect_info.busy_traffic)
-				goto exit;
-		}
-
-		rtw_set_802_11_bssid_list_scan(padapter, NULL, 0);
-	}
-
-exit:
-	return;
-}
-
-void rtw_dynamic_check_timer_handler(struct adapter *adapter)
-{
-	if (!adapter)
-		return;
-
-	if (!adapter->hw_init_completed)
-		return;
-
-	if (adapter->driver_stopped || adapter->bSurpriseRemoved)
-		return;
-
-	if (adapter->net_closed)
-		return;
-
-	if ((adapter_to_pwrctl(adapter)->fw_current_in_ps_mode) &&
-	    !(hal_btcoex_IsBtControlLps(adapter))
-		) {
-		bool should_enter_ps;
-
-		linked_status_chk(adapter);
-
-		should_enter_ps = traffic_status_watchdog(adapter, true);
-		if (should_enter_ps) {
-			/* rtw_lps_ctrl_wk_cmd(adapter, LPS_CTRL_ENTER, 1); */
-			rtw_hal_dm_watchdog_in_lps(adapter);
-		} else {
-			/* call rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_LEAVE, 1) in traffic_status_watchdog() */
-		}
-
-	} else {
-		rtw_dynamic_chk_wk_cmd(adapter);
-	}
-
-	/* auto site survey */
-	rtw_auto_scan_handler(adapter);
-}
-
-inline bool rtw_is_scan_deny(struct adapter *adapter)
-{
-	struct mlme_priv *mlmepriv = &adapter->mlmepriv;
-
-	return (atomic_read(&mlmepriv->set_scan_deny) != 0) ? true : false;
-}
-
-inline void rtw_clear_scan_deny(struct adapter *adapter)
-{
-	struct mlme_priv *mlmepriv = &adapter->mlmepriv;
-
-	atomic_set(&mlmepriv->set_scan_deny, 0);
-}
-
-void rtw_set_scan_deny(struct adapter *adapter, u32 ms)
-{
-	struct mlme_priv *mlmepriv = &adapter->mlmepriv;
-
-	atomic_set(&mlmepriv->set_scan_deny, 1);
-	_set_timer(&mlmepriv->set_scan_deny_timer, ms);
-}
-
-/*
- * Select a new roaming candidate from the original @param candidate and @param competitor
- * @return true: candidate is updated
- * @return false: candidate is not updated
- */
-static int rtw_check_roaming_candidate(struct mlme_priv *mlme
-	, struct wlan_network **candidate, struct wlan_network *competitor)
-{
-	int updated = false;
-	struct adapter *adapter = container_of(mlme, struct adapter, mlmepriv);
-
-	if (!is_same_ess(&competitor->network, &mlme->cur_network.network))
-		goto exit;
-
-	if (!rtw_is_desired_network(adapter, competitor))
-		goto exit;
-
-	/* got specific addr to roam */
-	if (!is_zero_ether_addr(mlme->roam_tgt_addr)) {
-		if (!memcmp(mlme->roam_tgt_addr, competitor->network.mac_address, ETH_ALEN))
-			goto update;
-		else
-			goto exit;
-	}
-	if (jiffies_to_msecs(jiffies - competitor->last_scanned) >= mlme->roam_scanr_exp_ms)
-		goto exit;
-
-	if (competitor->network.rssi - mlme->cur_network_scanned->network.rssi < mlme->roam_rssi_diff_th)
-		goto exit;
-
-	if (*candidate && (*candidate)->network.rssi >= competitor->network.rssi)
-		goto exit;
-
-update:
-	*candidate = competitor;
-	updated = true;
-
-exit:
-	return updated;
-}
-
-int rtw_select_roaming_candidate(struct mlme_priv *mlme)
-{
-	int ret = _FAIL;
-	struct list_head *phead;
-	struct __queue *queue = &mlme->scanned_queue;
-	struct wlan_network *pnetwork = NULL;
-	struct wlan_network *candidate = NULL;
-
-	if (!mlme->cur_network_scanned) {
-		WARN_ON(1);
-		return ret;
-	}
-
-	spin_lock_bh(&mlme->scanned_queue.lock);
-	phead = get_list_head(queue);
-
-	list_for_each(mlme->pscanned, phead) {
-		pnetwork = list_entry(mlme->pscanned, struct wlan_network,
-				      list);
-
-		rtw_check_roaming_candidate(mlme, &candidate, pnetwork);
-	}
-
-	if (!candidate) {
-		ret = _FAIL;
-		goto exit;
-	} else {
-		mlme->roam_network = candidate;
-
-		if (!memcmp(candidate->network.mac_address, mlme->roam_tgt_addr, ETH_ALEN))
-			eth_zero_addr(mlme->roam_tgt_addr);
-	}
-
-	ret = _SUCCESS;
-exit:
-	spin_unlock_bh(&mlme->scanned_queue.lock);
-
-	return ret;
-}
-
-/*
- * Select a new join candidate from the original @param candidate and @param competitor
- * @return true: candidate is updated
- * @return false: candidate is not updated
- */
-static int rtw_check_join_candidate(struct mlme_priv *mlme
-	, struct wlan_network **candidate, struct wlan_network *competitor)
-{
-	int updated = false;
-	struct adapter *adapter = container_of(mlme, struct adapter, mlmepriv);
-
-	/* check bssid, if needed */
-	if (mlme->assoc_by_bssid) {
-		if (memcmp(competitor->network.mac_address, mlme->assoc_bssid, ETH_ALEN))
-			goto exit;
-	}
-
-	/* check ssid, if needed */
-	if (mlme->assoc_ssid.ssid[0] && mlme->assoc_ssid.ssid_length) {
-		if (competitor->network.ssid.ssid_length != mlme->assoc_ssid.ssid_length ||
-		    memcmp(competitor->network.ssid.ssid, mlme->assoc_ssid.ssid, mlme->assoc_ssid.ssid_length)
-		)
-			goto exit;
-	}
-
-	if (!rtw_is_desired_network(adapter, competitor))
-		goto exit;
-
-	if (rtw_to_roam(adapter) > 0) {
-		if (jiffies_to_msecs(jiffies - competitor->last_scanned) >=
-		    mlme->roam_scanr_exp_ms ||
-		    !is_same_ess(&competitor->network, &mlme->cur_network.network))
-			goto exit;
-	}
-
-	if (!*candidate || (*candidate)->network.rssi < competitor->network.rssi) {
-		*candidate = competitor;
-		updated = true;
-	}
-
-exit:
-	return updated;
-}
-
-/*
- * Calling context:
- * The caller of the sub-routine will be in critical section...
- * The caller must hold the following spinlock
- * pmlmepriv->lock
- */
-
-int rtw_select_and_join_from_scanned_queue(struct mlme_priv *pmlmepriv)
-{
-	int ret;
-	struct list_head *phead;
-	struct adapter *adapter;
-	struct __queue *queue = &pmlmepriv->scanned_queue;
-	struct wlan_network *pnetwork = NULL;
-	struct wlan_network *candidate = NULL;
-
-	adapter = (struct adapter *)pmlmepriv->nic_hdl;
-
-	spin_lock_bh(&pmlmepriv->scanned_queue.lock);
-
-	if (pmlmepriv->roam_network) {
-		candidate = pmlmepriv->roam_network;
-		pmlmepriv->roam_network = NULL;
-		goto candidate_exist;
-	}
-
-	phead = get_list_head(queue);
-	list_for_each(pmlmepriv->pscanned, phead) {
-		pnetwork = list_entry(pmlmepriv->pscanned,
-				      struct wlan_network, list);
-
-		rtw_check_join_candidate(pmlmepriv, &candidate, pnetwork);
-	}
-
-	if (!candidate) {
-		ret = _FAIL;
-		goto exit;
-	} else {
-		goto candidate_exist;
-	}
-
-candidate_exist:
-
-	/*  check for situation of  _FW_LINKED */
-	if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-		rtw_disassoc_cmd(adapter, 0, true);
-		rtw_indicate_disconnect(adapter);
-		rtw_free_assoc_resources(adapter, 0);
-	}
-
-	set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
-	ret = rtw_joinbss_cmd(adapter, candidate);
-
-exit:
-	spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
-	return ret;
-}
-
-signed int rtw_set_auth(struct adapter *adapter, struct security_priv *psecuritypriv)
-{
-	struct cmd_obj *pcmd;
-	struct setauth_parm *psetauthparm;
-	struct cmd_priv *pcmdpriv = &adapter->cmdpriv;
-	signed int res = _SUCCESS;
-
-	pcmd = kzalloc_obj(*pcmd);
-	if (!pcmd) {
-		res = _FAIL;  /* try again */
-		goto exit;
-	}
-
-	psetauthparm = kzalloc_obj(*psetauthparm);
-	if (!psetauthparm) {
-		kfree(pcmd);
-		res = _FAIL;
-		goto exit;
-	}
-
-	psetauthparm->mode = (unsigned char)psecuritypriv->dot11_auth_algrthm;
-
-	pcmd->cmdcode = SET_AUTH_CMD;
-	pcmd->parmbuf = (unsigned char *)psetauthparm;
-	pcmd->cmdsz = (sizeof(struct setauth_parm));
-	pcmd->rsp = NULL;
-	pcmd->rspsz = 0;
-
-	INIT_LIST_HEAD(&pcmd->list);
-
-	res = rtw_enqueue_cmd(pcmdpriv, pcmd);
-
-exit:
-	return res;
-}
-
-signed int rtw_set_key(struct adapter *adapter, struct security_priv *psecuritypriv, signed int keyid, u8 set_tx, bool enqueue)
-{
-	u8 keylen;
-	struct cmd_obj *pcmd;
-	struct setkey_parm *psetkeyparm;
-	struct cmd_priv *pcmdpriv = &adapter->cmdpriv;
-	signed int res = _SUCCESS;
-
-	psetkeyparm = kzalloc_obj(*psetkeyparm);
-	if (!psetkeyparm) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	if (psecuritypriv->dot11_auth_algrthm == dot11_auth_algrthm_8021x)
-		psetkeyparm->algorithm = (unsigned char)psecuritypriv->dot118021XGrpPrivacy;
-	else
-		psetkeyparm->algorithm = (u8)psecuritypriv->dot11_privacy_algrthm;
-
-	psetkeyparm->keyid = (u8)keyid;/* 0~3 */
-	psetkeyparm->set_tx = set_tx;
-	if (is_wep_enc(psetkeyparm->algorithm))
-		adapter->securitypriv.key_mask |= BIT(psetkeyparm->keyid);
-
-	switch (psetkeyparm->algorithm) {
-	case _WEP40_:
-		keylen = 5;
-		memcpy(&psetkeyparm->key[0], &psecuritypriv->dot11DefKey[keyid].skey[0], keylen);
-		break;
-	case _WEP104_:
-		keylen = 13;
-		memcpy(&psetkeyparm->key[0], &psecuritypriv->dot11DefKey[keyid].skey[0], keylen);
-		break;
-	case _TKIP_:
-		keylen = 16;
-		memcpy(&psetkeyparm->key, &psecuritypriv->dot118021XGrpKey[keyid], keylen);
-		psetkeyparm->grpkey = 1;
-		break;
-	case _AES_:
-		keylen = 16;
-		memcpy(&psetkeyparm->key, &psecuritypriv->dot118021XGrpKey[keyid], keylen);
-		psetkeyparm->grpkey = 1;
-		break;
-	default:
-		res = _FAIL;
-		kfree(psetkeyparm);
-		goto exit;
-	}
-
-	if (enqueue) {
-		pcmd = kzalloc_obj(*pcmd);
-		if (!pcmd) {
-			kfree(psetkeyparm);
-			res = _FAIL;  /* try again */
-			goto exit;
-		}
-
-		pcmd->cmdcode = SET_KEY_CMD;
-		pcmd->parmbuf = (u8 *)psetkeyparm;
-		pcmd->cmdsz = (sizeof(struct setkey_parm));
-		pcmd->rsp = NULL;
-		pcmd->rspsz = 0;
-
-		INIT_LIST_HEAD(&pcmd->list);
-
-		res = rtw_enqueue_cmd(pcmdpriv, pcmd);
-	} else {
-		setkey_hdl(adapter, (u8 *)psetkeyparm);
-		kfree(psetkeyparm);
-	}
-exit:
-	return res;
-}
-
-/* adjust ies for rtw_joinbss_cmd in WMM */
-int rtw_restruct_wmm_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie, uint in_len, uint initial_out_len)
-{
-	unsigned int ielength = 0;
-	unsigned int i, j;
-
-	i = 12; /* after the fixed IE */
-	while (i < in_len) {
-		ielength = initial_out_len;
-
-		if (i + 5 < in_len &&
-		    in_ie[i] == 0xDD && in_ie[i + 2] == 0x00 &&
-		    in_ie[i + 3] == 0x50 && in_ie[i + 4] == 0xF2 &&
-		    in_ie[i + 5] == 0x02) {
-			for (j = i; j < i + 9; j++) {
-				out_ie[ielength] = in_ie[j];
-				ielength++;
-			}
-			out_ie[initial_out_len + 1] = 0x07;
-			out_ie[initial_out_len + 6] = 0x00;
-			out_ie[initial_out_len + 8] = 0x00;
-
-			break;
-		}
-
-		i += (in_ie[i + 1] + 2); /*  to the next IE element */
-	}
-
-	return ielength;
-}
-
-/* Ported from 8185: IsInPreAuthKeyList().
- * (Renamed from SecIsInPreAuthKeyList(), 2006-10-13.)
- * Added by Annie, 2006-05-07.
- *
- * Search by BSSID,
- *
- * Return Value:
- * -1: if there is no pre-auth key in the  table
- * >=0: if there is pre-auth key, and return the entry id
- */
-static int SecIsInPMKIDList(struct adapter *Adapter, u8 *bssid)
-{
-	struct security_priv *p = &Adapter->securitypriv;
-	int i;
-
-	for (i = 0; i < NUM_PMKID_CACHE; i++)
-		if ((p->PMKIDList[i].bUsed) &&
-		    (!memcmp(p->PMKIDList[i].Bssid, bssid, ETH_ALEN)))
-			return i;
-	return -1;
-}
-
-/*  */
-/*  Check the RSN IE length */
-/*  If the RSN IE length <= 20, the RSN IE didn't include the PMKID information */
-/*  0-11th element in the array are the fixed IE */
-/*  12th element in the array is the IE */
-/*  13th element in the array is the IE length */
-/*  */
-
-static int rtw_append_pmkid(struct adapter *Adapter, int iEntry, u8 *ie, uint ie_len)
-{
-	struct security_priv *psecuritypriv = &Adapter->securitypriv;
-
-	if (ie[13] <= 20) {
-		/*  The RSN IE didn't include the PMK ID, append the PMK information */
-		ie[ie_len] = 1;
-		ie_len++;
-		ie[ie_len] = 0;	/* PMKID count = 0x0100 */
-		ie_len++;
-		memcpy(&ie[ie_len], &psecuritypriv->PMKIDList[iEntry].PMKID, 16);
-		ie_len += 16;
-		ie[13] += 18;/* PMKID length = 2+16 */
-	}
-	return ie_len;
-}
-
-static void rtw_report_sec_ie(struct adapter *adapter, u8 authmode, u8 *sec_ie)
-{
-	uint len;
-	u8 *buff, *p;
-	union iwreq_data wrqu;
-
-	buff = NULL;
-	if (authmode == WLAN_EID_VENDOR_SPECIFIC) {
-		buff = kzalloc(IW_CUSTOM_MAX, GFP_ATOMIC);
-		if (!buff)
-			return;
-
-		p = buff;
-
-		p += scnprintf(p, IW_CUSTOM_MAX - (p - buff), "ASSOCINFO(ReqIEs =");
-
-		len = sec_ie[1] + 2;
-		len = (len < IW_CUSTOM_MAX) ? len : IW_CUSTOM_MAX;
-
-		p += scnprintf(p, IW_CUSTOM_MAX - (p - buff), " %*ph", len, sec_ie);
-
-		p += scnprintf(p, IW_CUSTOM_MAX - (p - buff), ")");
-
-		memset(&wrqu, 0, sizeof(wrqu));
-
-		wrqu.data.length = p - buff;
-
-		wrqu.data.length = (wrqu.data.length < IW_CUSTOM_MAX) ? wrqu.data.length : IW_CUSTOM_MAX;
-
-		kfree(buff);
-	}
-}
-
-signed int rtw_restruct_sec_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie, uint in_len)
-{
-	u8 authmode = 0x0;
-	uint ielength;
-	int iEntry;
-
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	struct security_priv *psecuritypriv = &adapter->securitypriv;
-	uint ndisauthmode = psecuritypriv->ndisauthtype;
-
-	/* copy fixed ie only */
-	memcpy(out_ie, in_ie, 12);
-	ielength = 12;
-	if ((ndisauthmode == Ndis802_11AuthModeWPA) || (ndisauthmode == Ndis802_11AuthModeWPAPSK))
-		authmode = WLAN_EID_VENDOR_SPECIFIC;
-	if ((ndisauthmode == Ndis802_11AuthModeWPA2) || (ndisauthmode == Ndis802_11AuthModeWPA2PSK))
-		authmode = WLAN_EID_RSN;
-
-	if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) {
-		memcpy(out_ie + ielength, psecuritypriv->wps_ie, psecuritypriv->wps_ie_len);
-
-		ielength += psecuritypriv->wps_ie_len;
-	} else if ((authmode == WLAN_EID_VENDOR_SPECIFIC) || (authmode == WLAN_EID_RSN)) {
-		/* copy RSN or SSN */
-		memcpy(&out_ie[ielength], &psecuritypriv->supplicant_ie[0], psecuritypriv->supplicant_ie[1] + 2);
-		ielength += psecuritypriv->supplicant_ie[1] + 2;
-		rtw_report_sec_ie(adapter, authmode, psecuritypriv->supplicant_ie);
-	}
-
-	iEntry = SecIsInPMKIDList(adapter, pmlmepriv->assoc_bssid);
-	if (iEntry < 0)
-		return ielength;
-
-	if (authmode == WLAN_EID_RSN)
-		ielength = rtw_append_pmkid(adapter, iEntry, out_ie, ielength);
-
-	return ielength;
-}
-
-void rtw_init_registrypriv_dev_network(struct adapter *adapter)
-{
-	struct registry_priv *pregistrypriv = &adapter->registrypriv;
-	struct eeprom_priv *peepriv = &adapter->eeprompriv;
-	struct wlan_bssid_ex *pdev_network = &pregistrypriv->dev_network;
-	u8 *myhwaddr = myid(peepriv);
-
-	memcpy(pdev_network->mac_address, myhwaddr, ETH_ALEN);
-
-	memcpy(&pdev_network->ssid, &pregistrypriv->ssid, sizeof(struct ndis_802_11_ssid));
-
-	pdev_network->configuration.length = sizeof(struct ndis_802_11_conf);
-	pdev_network->configuration.beacon_period = 100;
-}
-
-void rtw_update_registrypriv_dev_network(struct adapter *adapter)
-{
-	int sz = 0;
-	struct registry_priv *pregistrypriv = &adapter->registrypriv;
-	struct wlan_bssid_ex *pdev_network = &pregistrypriv->dev_network;
-	struct security_priv *psecuritypriv = &adapter->securitypriv;
-	struct wlan_network *cur_network = &adapter->mlmepriv.cur_network;
-
-	pdev_network->privacy = (psecuritypriv->dot11_privacy_algrthm > 0 ? 1 : 0) ; /*  adhoc no 802.1x */
-
-	pdev_network->rssi = 0;
-
-	pdev_network->configuration.ds_config = (pregistrypriv->channel);
-
-	if (cur_network->network.infrastructure_mode == NL80211_IFTYPE_ADHOC)
-		pdev_network->configuration.atim_window = (0);
-
-	pdev_network->infrastructure_mode = (cur_network->network.infrastructure_mode);
-
-	/*  1. Supported rates */
-	/*  2. IE */
-
-	/* rtw_set_supported_rate(pdev_network->supported_rates, pregistrypriv->wireless_mode) ;  will be called in rtw_generate_ie */
-	sz = rtw_generate_ie(pregistrypriv);
-
-	pdev_network->ie_length = sz;
-
-	pdev_network->length = get_wlan_bssid_ex_sz((struct wlan_bssid_ex *)pdev_network);
-
-	/* notes: translate ie_length & length after assign the length to cmdsz in createbss_cmd(); */
-	/* pdev_network->ie_length = cpu_to_le32(sz); */
-}
-
-/* the function is at passive_level */
-void rtw_joinbss_reset(struct adapter *padapter)
-{
-	u8 threshold;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	struct ht_priv *phtpriv = &pmlmepriv->htpriv;
-
-	/* todo: if you want to do something io/reg/hw setting before join_bss, please add code here */
-
-	pmlmepriv->num_FortyMHzIntolerant = 0;
-
-	pmlmepriv->num_sta_no_ht = 0;
-
-	phtpriv->ampdu_enable = false;/* reset to disabled */
-
-	/*  TH = 1 => means that invalidate usb rx aggregation */
-	/*  TH = 0 => means that validate usb rx aggregation, use init value. */
-	if (phtpriv->ht_option) {
-		if (padapter->registrypriv.wifi_spec == 1)
-			threshold = 1;
-		else
-			threshold = 0;
-		rtw_hal_set_hwreg(padapter, HW_VAR_RXDMA_AGG_PG_TH, (u8 *)(&threshold));
-	} else {
-		threshold = 1;
-		rtw_hal_set_hwreg(padapter, HW_VAR_RXDMA_AGG_PG_TH, (u8 *)(&threshold));
-	}
-}
-
-void rtw_ht_use_default_setting(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct ht_priv *phtpriv = &pmlmepriv->htpriv;
-	struct registry_priv *pregistrypriv = &padapter->registrypriv;
-	bool bHwLDPCSupport = false, bHwSTBCSupport = false;
-	bool bHwSupportBeamformer = false, bHwSupportBeamformee = false;
-
-	if (pregistrypriv->wifi_spec)
-		phtpriv->bss_coexist = 1;
-	else
-		phtpriv->bss_coexist = 0;
-
-	phtpriv->sgi_40m = TEST_FLAG(pregistrypriv->short_gi, BIT(1)) ? true : false;
-	phtpriv->sgi_20m = TEST_FLAG(pregistrypriv->short_gi, BIT(0)) ? true : false;
-
-	/*  LDPC support */
-	rtw_hal_get_def_var(padapter, HAL_DEF_RX_LDPC, (u8 *)&bHwLDPCSupport);
-	CLEAR_FLAGS(phtpriv->ldpc_cap);
-	if (bHwLDPCSupport) {
-		if (TEST_FLAG(pregistrypriv->ldpc_cap, BIT(4)))
-			SET_FLAG(phtpriv->ldpc_cap, LDPC_HT_ENABLE_RX);
-	}
-	rtw_hal_get_def_var(padapter, HAL_DEF_TX_LDPC, (u8 *)&bHwLDPCSupport);
-	if (bHwLDPCSupport) {
-		if (TEST_FLAG(pregistrypriv->ldpc_cap, BIT(5)))
-			SET_FLAG(phtpriv->ldpc_cap, LDPC_HT_ENABLE_TX);
-	}
-
-	/*  STBC */
-	rtw_hal_get_def_var(padapter, HAL_DEF_TX_STBC, (u8 *)&bHwSTBCSupport);
-	CLEAR_FLAGS(phtpriv->stbc_cap);
-	if (bHwSTBCSupport) {
-		if (TEST_FLAG(pregistrypriv->stbc_cap, BIT(5)))
-			SET_FLAG(phtpriv->stbc_cap, STBC_HT_ENABLE_TX);
-	}
-	rtw_hal_get_def_var(padapter, HAL_DEF_RX_STBC, (u8 *)&bHwSTBCSupport);
-	if (bHwSTBCSupport) {
-		if (TEST_FLAG(pregistrypriv->stbc_cap, BIT(4)))
-			SET_FLAG(phtpriv->stbc_cap, STBC_HT_ENABLE_RX);
-	}
-
-	/*  Beamforming setting */
-	rtw_hal_get_def_var(padapter, HAL_DEF_EXPLICIT_BEAMFORMER, (u8 *)&bHwSupportBeamformer);
-	rtw_hal_get_def_var(padapter, HAL_DEF_EXPLICIT_BEAMFORMEE, (u8 *)&bHwSupportBeamformee);
-	CLEAR_FLAGS(phtpriv->beamform_cap);
-	if (TEST_FLAG(pregistrypriv->beamform_cap, BIT(4)) && bHwSupportBeamformer)
-		SET_FLAG(phtpriv->beamform_cap, BEAMFORMING_HT_BEAMFORMER_ENABLE);
-
-	if (TEST_FLAG(pregistrypriv->beamform_cap, BIT(5)) && bHwSupportBeamformee)
-		SET_FLAG(phtpriv->beamform_cap, BEAMFORMING_HT_BEAMFORMEE_ENABLE);
-}
-
-void rtw_build_wmm_ie_ht(struct adapter *padapter, u8 *out_ie, uint *pout_len)
-{
-	unsigned char WMM_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00};
-	int out_len;
-
-	if (padapter->mlmepriv.qospriv.qos_option == 0) {
-		out_len = *pout_len;
-		rtw_set_ie(out_ie + out_len, WLAN_EID_VENDOR_SPECIFIC,
-			   _WMM_IE_Length_, WMM_IE, pout_len);
-
-		padapter->mlmepriv.qospriv.qos_option = 1;
-	}
-}
-
-/* the function is >= passive_level */
-unsigned int rtw_restructure_ht_ie(struct adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, u8 channel)
-{
-	u32 ielen, out_len;
-	enum ieee80211_max_ampdu_length_exp max_rx_ampdu_factor;
-	unsigned char *p;
-	struct ieee80211_ht_cap ht_capie;
-	u8 cbw40_enable = 0, stbc_rx_enable = 0, operation_bw = 0;
-	struct registry_priv *pregistrypriv = &padapter->registrypriv;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct ht_priv *phtpriv = &pmlmepriv->htpriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-	phtpriv->ht_option = false;
-
-	out_len = *pout_len;
-
-	memset(&ht_capie, 0, sizeof(struct ieee80211_ht_cap));
-
-	ht_capie.cap_info = cpu_to_le16(IEEE80211_HT_CAP_DSSSCCK40);
-
-	if (phtpriv->sgi_20m)
-		ht_capie.cap_info |= cpu_to_le16(IEEE80211_HT_CAP_SGI_20);
-
-	/* Get HT BW */
-	if (!in_ie) {
-		/* TDLS: TODO 20/40 issue */
-		if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
-			operation_bw = padapter->mlmeextpriv.cur_bwmode;
-			if (operation_bw > CHANNEL_WIDTH_40)
-				operation_bw = CHANNEL_WIDTH_40;
-		} else {
-			/* TDLS: TODO 40? */
-			operation_bw = CHANNEL_WIDTH_40;
-		}
-	} else {
-		p = rtw_get_ie(in_ie, WLAN_EID_HT_OPERATION, &ielen, in_len);
-		if (p && (ielen == sizeof(struct ieee80211_ht_addt_info))) {
-			struct HT_info_element *pht_info = (struct HT_info_element *)(p + 2);
-
-			if (pht_info->infos[0] & BIT(2)) {
-				switch (pht_info->infos[0] & 0x3) {
-				case 1:
-				case 3:
-					operation_bw = CHANNEL_WIDTH_40;
-					break;
-				default:
-					operation_bw = CHANNEL_WIDTH_20;
-					break;
-				}
-			} else {
-				operation_bw = CHANNEL_WIDTH_20;
-			}
-		}
-	}
-
-	/* to disable 40M Hz support while gd_bw_40MHz_en = 0 */
-	if ((pregistrypriv->bw_mode & 0x0f) > 0)
-		cbw40_enable = 1;
-
-	if ((cbw40_enable == 1) && (operation_bw == CHANNEL_WIDTH_40)) {
-		ht_capie.cap_info |= cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH);
-		if (phtpriv->sgi_40m)
-			ht_capie.cap_info |= cpu_to_le16(IEEE80211_HT_CAP_SGI_40);
-	}
-
-	if (TEST_FLAG(phtpriv->stbc_cap, STBC_HT_ENABLE_TX))
-		ht_capie.cap_info |= cpu_to_le16(IEEE80211_HT_CAP_TX_STBC);
-
-	/* todo: disable SM power save mode */
-	ht_capie.cap_info |= cpu_to_le16(IEEE80211_HT_CAP_SM_PS);
-
-	if (TEST_FLAG(phtpriv->stbc_cap, STBC_HT_ENABLE_RX)) {
-		if ((channel <= 14 && pregistrypriv->rx_stbc == 0x1) ||	/* enable for 2.4GHz */
-			(pregistrypriv->wifi_spec == 1))
-			stbc_rx_enable = 1;
-	}
-
-	/* fill default supported_mcs_set */
-	memcpy(&ht_capie.mcs, pmlmeext->default_supported_mcs_set, 16);
-
-	/* update default supported_mcs_set */
-	if (stbc_rx_enable)
-		ht_capie.cap_info |= cpu_to_le16(IEEE80211_HT_CAP_RX_STBC_1R);/* RX STBC One spatial stream */
-
-	set_mcs_rate_by_mask(ht_capie.mcs.rx_mask, MCS_RATE_1R);
-
-	{
-		u32 rx_packet_offset, max_recvbuf_sz;
-
-		rtw_hal_get_def_var(padapter, HAL_DEF_RX_PACKET_OFFSET, &rx_packet_offset);
-		rtw_hal_get_def_var(padapter, HAL_DEF_MAX_RECVBUF_SZ, &max_recvbuf_sz);
-	}
-
-	if (padapter->driver_rx_ampdu_factor != 0xFF)
-		max_rx_ampdu_factor =
-		  (enum ieee80211_max_ampdu_length_exp)padapter->driver_rx_ampdu_factor;
-	else
-		rtw_hal_get_def_var(padapter, HW_VAR_MAX_RX_AMPDU_FACTOR,
-				    &max_rx_ampdu_factor);
-
-	ht_capie.ampdu_params_info = (max_rx_ampdu_factor & 0x03);
-
-	if (padapter->securitypriv.dot11_privacy_algrthm == _AES_)
-		ht_capie.ampdu_params_info |= (IEEE80211_HT_CAP_AMPDU_DENSITY & (0x07 << 2));
-	else
-		ht_capie.ampdu_params_info |= (IEEE80211_HT_CAP_AMPDU_DENSITY & 0x00);
-
-	rtw_set_ie(out_ie + out_len, WLAN_EID_HT_CAPABILITY,
-		   sizeof(struct ieee80211_ht_cap), (unsigned char *)&ht_capie, pout_len);
-
-	phtpriv->ht_option = true;
-
-	if (in_ie) {
-		p = rtw_get_ie(in_ie, WLAN_EID_HT_OPERATION, &ielen, in_len);
-		if (p && (ielen == sizeof(struct ieee80211_ht_addt_info))) {
-			out_len = *pout_len;
-			rtw_set_ie(out_ie + out_len, WLAN_EID_HT_OPERATION, ielen, p + 2, pout_len);
-		}
-	}
-
-	return phtpriv->ht_option;
-}
-
-/* the function is > passive_level (in critical_section) */
-void rtw_update_ht_cap(struct adapter *padapter, u8 *pie, uint ie_len, u8 channel)
-{
-	u8 *p, max_ampdu_sz;
-	int len;
-	struct ieee80211_ht_cap *pht_capie;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct ht_priv *phtpriv = &pmlmepriv->htpriv;
-	struct registry_priv *pregistrypriv = &padapter->registrypriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	u8 cbw40_enable = 0;
-
-	if (!phtpriv->ht_option)
-		return;
-
-	if ((!pmlmeinfo->HT_info_enable) || (!pmlmeinfo->HT_caps_enable))
-		return;
-
-	/* maybe needs check if ap supports rx ampdu. */
-	if (!(phtpriv->ampdu_enable) && pregistrypriv->ampdu_enable == 1)
-		phtpriv->ampdu_enable = true;
-
-	/* check Max Rx A-MPDU Size */
-	len = 0;
-	p = rtw_get_ie(pie + sizeof(struct ndis_802_11_fix_ie), WLAN_EID_HT_CAPABILITY, &len, ie_len - sizeof(struct ndis_802_11_fix_ie));
-	if (p && len > 0) {
-		pht_capie = (struct ieee80211_ht_cap *)(p + 2);
-		max_ampdu_sz = (pht_capie->ampdu_params_info & IEEE80211_HT_CAP_AMPDU_FACTOR);
-		max_ampdu_sz = 1 << (max_ampdu_sz + 3); /*  max_ampdu_sz (kbytes); */
-
-		phtpriv->rx_ampdu_maxlen = max_ampdu_sz;
-	}
-
-	len = 0;
-	p = rtw_get_ie(pie + sizeof(struct ndis_802_11_fix_ie), WLAN_EID_HT_OPERATION, &len, ie_len - sizeof(struct ndis_802_11_fix_ie));
-	if (p && len > 0) {
-		/* todo: */
-	}
-
-	if ((pregistrypriv->bw_mode & 0x0f) > 0)
-		cbw40_enable = 1;
-
-	/* update cur_bwmode & cur_ch_offset */
-	if ((cbw40_enable) &&
-	    (le16_to_cpu(pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info) &
-	      BIT(1)) && (pmlmeinfo->HT_info.infos[0] & BIT(2))) {
-		int i;
-
-		/* update the MCS set */
-		for (i = 0; i < 16; i++)
-			pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= pmlmeext->default_supported_mcs_set[i];
-
-		/* update the MCS rates */
-		set_mcs_rate_by_mask(pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate, MCS_RATE_1R);
-
-		/* switch to the 40M Hz mode according to the AP */
-		/* pmlmeext->cur_bwmode = CHANNEL_WIDTH_40; */
-		switch ((pmlmeinfo->HT_info.infos[0] & 0x3)) {
-		case EXTCHNL_OFFSET_UPPER:
-			pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER;
-			break;
-
-		case EXTCHNL_OFFSET_LOWER:
-			pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER;
-			break;
-
-		default:
-			pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
-			break;
-		}
-	}
-
-	/*  */
-	/*  Config SM Power Save setting */
-	/*  */
-	pmlmeinfo->SM_PS =
-		(le16_to_cpu(pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info) &
-		 0x0C) >> 2;
-
-	/*  */
-	/*  Config current HT Protection mode. */
-	/*  */
-	pmlmeinfo->HT_protection = pmlmeinfo->HT_info.infos[1] & 0x3;
-}
-
-void rtw_issue_addbareq_cmd(struct adapter *padapter, struct xmit_frame *pxmitframe)
-{
-	u8 issued;
-	int priority;
-	struct sta_info *psta;
-	struct ht_priv *phtpriv;
-	struct pkt_attrib *pattrib = &pxmitframe->attrib;
-	s32 bmcst = is_multicast_ether_addr(pattrib->ra);
-
-	if (bmcst || (padapter->mlmepriv.link_detect_info.num_tx_ok_in_period < 100))
-		return;
-
-	priority = pattrib->priority;
-
-	psta = rtw_get_stainfo(&padapter->stapriv, pattrib->ra);
-	if (pattrib->psta != psta)
-		return;
-
-	if (!psta)
-		return;
-
-	if (!(psta->state & _FW_LINKED))
-		return;
-
-	phtpriv = &psta->htpriv;
-
-	if (phtpriv->ht_option && phtpriv->ampdu_enable) {
-		issued = (phtpriv->agg_enable_bitmap >> priority) & 0x1;
-		issued |= (phtpriv->candidate_tid_bitmap >> priority) & 0x1;
-
-		if (issued == 0) {
-			psta->htpriv.candidate_tid_bitmap |= BIT((u8)priority);
-			rtw_addbareq_cmd(padapter, (u8) priority, pattrib->ra);
-		}
-	}
-}
-
-void rtw_append_exented_cap(struct adapter *padapter, u8 *out_ie, uint *pout_len)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct ht_priv *phtpriv = &pmlmepriv->htpriv;
-	u8 cap_content[8] = {0};
-
-	if (phtpriv->bss_coexist)
-		SET_EXT_CAPABILITY_ELE_BSS_COEXIST(cap_content, 1);
-
-	rtw_set_ie(out_ie + *pout_len, WLAN_EID_EXT_CAPABILITY, 8, cap_content, pout_len);
-}
-
-inline void rtw_set_to_roam(struct adapter *adapter, u8 to_roam)
-{
-	if (to_roam == 0)
-		adapter->mlmepriv.to_join = false;
-	adapter->mlmepriv.to_roam = to_roam;
-}
-
-inline u8 rtw_dec_to_roam(struct adapter *adapter)
-{
-	adapter->mlmepriv.to_roam--;
-	return adapter->mlmepriv.to_roam;
-}
-
-inline u8 rtw_to_roam(struct adapter *adapter)
-{
-	return adapter->mlmepriv.to_roam;
-}
-
-void rtw_roaming(struct adapter *padapter, struct wlan_network *tgt_network)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	spin_lock_bh(&pmlmepriv->lock);
-	_rtw_roaming(padapter, tgt_network);
-	spin_unlock_bh(&pmlmepriv->lock);
-}
-
-void _rtw_roaming(struct adapter *padapter, struct wlan_network *tgt_network)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct wlan_network *cur_network = &pmlmepriv->cur_network;
-
-	if (rtw_to_roam(padapter) > 0) {
-		memcpy(&pmlmepriv->assoc_ssid, &cur_network->network.ssid, sizeof(struct ndis_802_11_ssid));
-
-		pmlmepriv->assoc_by_bssid = false;
-
-		while (rtw_do_join(padapter) != _SUCCESS) {
-			rtw_dec_to_roam(padapter);
-			if (rtw_to_roam(padapter) <= 0) {
-				rtw_indicate_disconnect(padapter);
-				break;
-			}
-		}
-	}
-}
-
-bool rtw_linked_check(struct adapter *padapter)
-{
-	if (check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE) ||
-	    check_fwstate(&padapter->mlmepriv, WIFI_ADHOC_STATE | WIFI_ADHOC_MASTER_STATE)) {
-		if (padapter->stapriv.asoc_sta_count > 2)
-			return true;
-	} else {	/* Station mode */
-		if (check_fwstate(&padapter->mlmepriv, _FW_LINKED))
-			return true;
-	}
-	return false;
-}
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
deleted file mode 100644
index e965133d94ab..000000000000
--- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
+++ /dev/null
@@ -1,5901 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <drv_types.h>
-#include <rtw_wifi_regd.h>
-#include <hal_btcoex.h>
-#include <linux/kernel.h>
-#include <linux/minmax.h>
-#include <linux/unaligned.h>
-
-static struct mlme_handler mlme_sta_tbl[] = {
-	{WIFI_ASSOCREQ,		"OnAssocReq",	&OnAssocReq},
-	{WIFI_ASSOCRSP,		"OnAssocRsp",	&OnAssocRsp},
-	{WIFI_REASSOCREQ,	"OnReAssocReq",	&OnAssocReq},
-	{WIFI_REASSOCRSP,	"OnReAssocRsp",	&OnAssocRsp},
-	{WIFI_PROBEREQ,		"OnProbeReq",	&OnProbeReq},
-	{WIFI_PROBERSP,		"OnProbeRsp",		&OnProbeRsp},
-
-	/* below 2 are reserved */
-	{0,					"DoReserved",		&DoReserved},
-	{0,					"DoReserved",		&DoReserved},
-	{WIFI_BEACON,		"OnBeacon",		&OnBeacon},
-	{WIFI_ATIM,			"OnATIM",		&OnAtim},
-	{WIFI_DISASSOC,		"OnDisassoc",		&OnDisassoc},
-	{WIFI_AUTH,			"OnAuth",		&OnAuthClient},
-	{WIFI_DEAUTH,		"OnDeAuth",		&OnDeAuth},
-	{WIFI_ACTION,		"OnAction",		&OnAction},
-	{WIFI_ACTION_NOACK, "OnActionNoAck",	&OnAction},
-};
-
-static struct action_handler OnAction_tbl[] = {
-	{RTW_WLAN_CATEGORY_SPECTRUM_MGMT,	 "ACTION_SPECTRUM_MGMT", on_action_spct},
-	{RTW_WLAN_CATEGORY_QOS, "ACTION_QOS", &DoReserved},
-	{RTW_WLAN_CATEGORY_DLS, "ACTION_DLS", &DoReserved},
-	{RTW_WLAN_CATEGORY_BACK, "ACTION_BACK", &OnAction_back},
-	{RTW_WLAN_CATEGORY_PUBLIC, "ACTION_PUBLIC", on_action_public},
-	{RTW_WLAN_CATEGORY_RADIO_MEASUREMENT, "ACTION_RADIO_MEASUREMENT", &DoReserved},
-	{RTW_WLAN_CATEGORY_FT, "ACTION_FT",	&DoReserved},
-	{RTW_WLAN_CATEGORY_HT,	"ACTION_HT",	&OnAction_ht},
-	{RTW_WLAN_CATEGORY_SA_QUERY, "ACTION_SA_QUERY", &OnAction_sa_query},
-	{RTW_WLAN_CATEGORY_UNPROTECTED_WNM, "ACTION_UNPROTECTED_WNM", &DoReserved},
-	{RTW_WLAN_CATEGORY_SELF_PROTECTED, "ACTION_SELF_PROTECTED", &DoReserved},
-	{RTW_WLAN_CATEGORY_WMM, "ACTION_WMM", &DoReserved},
-	{RTW_WLAN_CATEGORY_P2P, "ACTION_P2P", &DoReserved},
-};
-
-static u8 null_addr[ETH_ALEN] = {0, 0, 0, 0, 0, 0};
-
-/* OUI definitions for the vendor specific IE */
-unsigned char RTW_WPA_OUI[] = {0x00, 0x50, 0xf2, 0x01};
-unsigned char WMM_OUI[] = {0x00, 0x50, 0xf2, 0x02};
-unsigned char WPS_OUI[] = {0x00, 0x50, 0xf2, 0x04};
-unsigned char P2P_OUI[] = {0x50, 0x6F, 0x9A, 0x09};
-unsigned char WFD_OUI[] = {0x50, 0x6F, 0x9A, 0x0A};
-
-unsigned char WMM_INFO_OUI[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01};
-unsigned char WMM_PARA_OUI[] = {0x00, 0x50, 0xf2, 0x02, 0x01, 0x01};
-
-static unsigned char REALTEK_96B_IE[] = {0x00, 0xe0, 0x4c, 0x02, 0x01, 0x20};
-
-/* ChannelPlan definitions */
-static struct rt_channel_plan_2g	RTW_ChannelPlan2G[RT_CHANNEL_DOMAIN_2G_MAX] = {
-	{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13},		/*  0x00, RT_CHANNEL_DOMAIN_2G_WORLD , Passive scan CH 12, 13 */
-	{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13},		/*  0x01, RT_CHANNEL_DOMAIN_2G_ETSI1 */
-	{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 11},			/*  0x02, RT_CHANNEL_DOMAIN_2G_FCC1 */
-	{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}, 14},	/*  0x03, RT_CHANNEL_DOMAIN_2G_MIKK1 */
-	{{10, 11, 12, 13}, 4},						/*  0x04, RT_CHANNEL_DOMAIN_2G_ETSI2 */
-	{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}, 14},	/*  0x05, RT_CHANNEL_DOMAIN_2G_GLOBAL , Passive scan CH 12, 13, 14 */
-	{{}, 0},								/*  0x06, RT_CHANNEL_DOMAIN_2G_NULL */
-};
-
-static struct rt_channel_plan_map	RTW_ChannelPlanMap[RT_CHANNEL_DOMAIN_MAX] = {
-	/*  0x00 ~ 0x1F , Old Define ===== */
-	{0x02},	/* 0x00, RT_CHANNEL_DOMAIN_FCC */
-	{0x02},	/* 0x01, RT_CHANNEL_DOMAIN_IC */
-	{0x01},	/* 0x02, RT_CHANNEL_DOMAIN_ETSI */
-	{0x01},	/* 0x03, RT_CHANNEL_DOMAIN_SPAIN */
-	{0x01},	/* 0x04, RT_CHANNEL_DOMAIN_FRANCE */
-	{0x03},	/* 0x05, RT_CHANNEL_DOMAIN_MKK */
-	{0x03},	/* 0x06, RT_CHANNEL_DOMAIN_MKK1 */
-	{0x01},	/* 0x07, RT_CHANNEL_DOMAIN_ISRAEL */
-	{0x03},	/* 0x08, RT_CHANNEL_DOMAIN_TELEC */
-	{0x03},	/* 0x09, RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN */
-	{0x00},	/* 0x0A, RT_CHANNEL_DOMAIN_WORLD_WIDE_13 */
-	{0x02},	/* 0x0B, RT_CHANNEL_DOMAIN_TAIWAN */
-	{0x01},	/* 0x0C, RT_CHANNEL_DOMAIN_CHINA */
-	{0x02},	/* 0x0D, RT_CHANNEL_DOMAIN_SINGAPORE_INDIA_MEXICO */
-	{0x02},	/* 0x0E, RT_CHANNEL_DOMAIN_KOREA */
-	{0x02},	/* 0x0F, RT_CHANNEL_DOMAIN_TURKEY */
-	{0x01},	/* 0x10, RT_CHANNEL_DOMAIN_JAPAN */
-	{0x02},	/* 0x11, RT_CHANNEL_DOMAIN_FCC_NO_DFS */
-	{0x01},	/* 0x12, RT_CHANNEL_DOMAIN_JAPAN_NO_DFS */
-	{0x00},	/* 0x13, RT_CHANNEL_DOMAIN_WORLD_WIDE_5G */
-	{0x02},	/* 0x14, RT_CHANNEL_DOMAIN_TAIWAN_NO_DFS */
-	{0x00},	/* 0x15, RT_CHANNEL_DOMAIN_ETSI_NO_DFS */
-	{0x00},	/* 0x16, RT_CHANNEL_DOMAIN_KOREA_NO_DFS */
-	{0x03},	/* 0x17, RT_CHANNEL_DOMAIN_JAPAN_NO_DFS */
-	{0x06},	/* 0x18, RT_CHANNEL_DOMAIN_PAKISTAN_NO_DFS */
-	{0x02},	/* 0x19, RT_CHANNEL_DOMAIN_TAIWAN2_NO_DFS */
-	{0x00},	/* 0x1A, */
-	{0x00},	/* 0x1B, */
-	{0x00},	/* 0x1C, */
-	{0x00},	/* 0x1D, */
-	{0x00},	/* 0x1E, */
-	{0x06},	/* 0x1F, RT_CHANNEL_DOMAIN_WORLD_WIDE_ONLY_5G */
-	/*  0x20 ~ 0x7F , New Define ===== */
-	{0x00},	/* 0x20, RT_CHANNEL_DOMAIN_WORLD_NULL */
-	{0x01},	/* 0x21, RT_CHANNEL_DOMAIN_ETSI1_NULL */
-	{0x02},	/* 0x22, RT_CHANNEL_DOMAIN_FCC1_NULL */
-	{0x03},	/* 0x23, RT_CHANNEL_DOMAIN_MKK1_NULL */
-	{0x04},	/* 0x24, RT_CHANNEL_DOMAIN_ETSI2_NULL */
-	{0x02},	/* 0x25, RT_CHANNEL_DOMAIN_FCC1_FCC1 */
-	{0x00},	/* 0x26, RT_CHANNEL_DOMAIN_WORLD_ETSI1 */
-	{0x03},	/* 0x27, RT_CHANNEL_DOMAIN_MKK1_MKK1 */
-	{0x00},	/* 0x28, RT_CHANNEL_DOMAIN_WORLD_KCC1 */
-	{0x00},	/* 0x29, RT_CHANNEL_DOMAIN_WORLD_FCC2 */
-	{0x00},	/* 0x2A, */
-	{0x00},	/* 0x2B, */
-	{0x00},	/* 0x2C, */
-	{0x00},	/* 0x2D, */
-	{0x00},	/* 0x2E, */
-	{0x00},	/* 0x2F, */
-	{0x00},	/* 0x30, RT_CHANNEL_DOMAIN_WORLD_FCC3 */
-	{0x00},	/* 0x31, RT_CHANNEL_DOMAIN_WORLD_FCC4 */
-	{0x00},	/* 0x32, RT_CHANNEL_DOMAIN_WORLD_FCC5 */
-	{0x00},	/* 0x33, RT_CHANNEL_DOMAIN_WORLD_FCC6 */
-	{0x02},	/* 0x34, RT_CHANNEL_DOMAIN_FCC1_FCC7 */
-	{0x00},	/* 0x35, RT_CHANNEL_DOMAIN_WORLD_ETSI2 */
-	{0x00},	/* 0x36, RT_CHANNEL_DOMAIN_WORLD_ETSI3 */
-	{0x03},	/* 0x37, RT_CHANNEL_DOMAIN_MKK1_MKK2 */
-	{0x03},	/* 0x38, RT_CHANNEL_DOMAIN_MKK1_MKK3 */
-	{0x02},	/* 0x39, RT_CHANNEL_DOMAIN_FCC1_NCC1 */
-	{0x00},	/* 0x3A, */
-	{0x00},	/* 0x3B, */
-	{0x00},	/* 0x3C, */
-	{0x00},	/* 0x3D, */
-	{0x00},	/* 0x3E, */
-	{0x00},	/* 0x3F, */
-	{0x02},	/* 0x40, RT_CHANNEL_DOMAIN_FCC1_NCC2 */
-	{0x05},	/* 0x41, RT_CHANNEL_DOMAIN_GLOBAL_NULL */
-	{0x01},	/* 0x42, RT_CHANNEL_DOMAIN_ETSI1_ETSI4 */
-	{0x02},	/* 0x43, RT_CHANNEL_DOMAIN_FCC1_FCC2 */
-	{0x02},	/* 0x44, RT_CHANNEL_DOMAIN_FCC1_NCC3 */
-	{0x00},	/* 0x45, RT_CHANNEL_DOMAIN_WORLD_ETSI5 */
-	{0x02},	/* 0x46, RT_CHANNEL_DOMAIN_FCC1_FCC8 */
-	{0x00},	/* 0x47, RT_CHANNEL_DOMAIN_WORLD_ETSI6 */
-	{0x00},	/* 0x48, RT_CHANNEL_DOMAIN_WORLD_ETSI7 */
-	{0x00},	/* 0x49, RT_CHANNEL_DOMAIN_WORLD_ETSI8 */
-	{0x00},	/* 0x50, RT_CHANNEL_DOMAIN_WORLD_ETSI9 */
-	{0x00},	/* 0x51, RT_CHANNEL_DOMAIN_WORLD_ETSI10 */
-	{0x00},	/* 0x52, RT_CHANNEL_DOMAIN_WORLD_ETSI11 */
-	{0x02},	/* 0x53, RT_CHANNEL_DOMAIN_FCC1_NCC4 */
-	{0x00},	/* 0x54, RT_CHANNEL_DOMAIN_WORLD_ETSI12 */
-	{0x02},	/* 0x55, RT_CHANNEL_DOMAIN_FCC1_FCC9 */
-	{0x00},	/* 0x56, RT_CHANNEL_DOMAIN_WORLD_ETSI13 */
-	{0x02},	/* 0x57, RT_CHANNEL_DOMAIN_FCC1_FCC10 */
-};
-
- /* use the combination for max channel numbers */
-static struct rt_channel_plan_map RTW_CHANNEL_PLAN_MAP_REALTEK_DEFINE = {0x03};
-
-/* Search the @param ch in given @param ch_set
- * @ch_set: the given channel set
- * @ch: the given channel number
- *
- * return the index of channel_num in channel_set, -1 if not found
- */
-int rtw_ch_set_search_ch(struct rt_channel_info *ch_set, const u32 ch)
-{
-	int i;
-
-	for (i = 0; ch_set[i].channel_num != 0; i++) {
-		if (ch == ch_set[i].channel_num)
-			break;
-	}
-
-	if (i >= ch_set[i].channel_num)
-		return -1;
-	return i;
-}
-
-/* Following are the initialization functions for WiFi MLME */
-
-void init_hw_mlme_ext(struct adapter *padapter)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-	set_channel_bwmode(padapter, pmlmeext->cur_channel,
-			   pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode);
-}
-
-void init_mlme_default_rate_set(struct adapter *padapter)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-	unsigned char mixed_datarate[NumRates] = {_1M_RATE_, _2M_RATE_, _5M_RATE_, _11M_RATE_, _6M_RATE_, _9M_RATE_, _12M_RATE_, _18M_RATE_, _24M_RATE_, _36M_RATE_, _48M_RATE_, _54M_RATE_, 0xff};
-	unsigned char mixed_basicrate[NumRates] = {_1M_RATE_, _2M_RATE_, _5M_RATE_, _11M_RATE_, _6M_RATE_, _12M_RATE_, _24M_RATE_, 0xff,};
-	unsigned char supported_mcs_set[16] = {0xff, 0xff, 0x00, 0x00, 0x01, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
-
-	memcpy(pmlmeext->datarate, mixed_datarate, NumRates);
-	memcpy(pmlmeext->basicrate, mixed_basicrate, NumRates);
-
-	memcpy(pmlmeext->default_supported_mcs_set, supported_mcs_set, sizeof(pmlmeext->default_supported_mcs_set));
-}
-
-static void init_mlme_ext_priv_value(struct adapter *padapter)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	atomic_set(&pmlmeext->event_seq, 0);
-	pmlmeext->mgnt_seq = 0;/* reset to zero when disconnect at client mode */
-	pmlmeext->sa_query_seq = 0;
-	pmlmeext->mgnt_80211w_IPN = 0;
-	pmlmeext->mgnt_80211w_IPN_rx = 0;
-	pmlmeext->cur_channel = padapter->registrypriv.channel;
-	pmlmeext->cur_bwmode = CHANNEL_WIDTH_20;
-	pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
-
-	pmlmeext->retry = 0;
-
-	pmlmeext->cur_wireless_mode = padapter->registrypriv.wireless_mode;
-
-	init_mlme_default_rate_set(padapter);
-
-	pmlmeext->tx_rate = IEEE80211_CCK_RATE_1MB;
-	pmlmeext->sitesurvey_res.state = SCAN_DISABLE;
-	pmlmeext->sitesurvey_res.channel_idx = 0;
-	pmlmeext->sitesurvey_res.bss_cnt = 0;
-	pmlmeext->scan_abort = false;
-
-	pmlmeinfo->state = WIFI_FW_NULL_STATE;
-	pmlmeinfo->reauth_count = 0;
-	pmlmeinfo->reassoc_count = 0;
-	pmlmeinfo->link_count = 0;
-	pmlmeinfo->auth_seq = 0;
-	pmlmeinfo->auth_algo = dot11_auth_algrthm_open;
-	pmlmeinfo->key_index = 0;
-	pmlmeinfo->iv = 0;
-
-	pmlmeinfo->enc_algo = _NO_PRIVACY_;
-	pmlmeinfo->authModeToggle = 0;
-
-	memset(pmlmeinfo->chg_txt, 0, 128);
-
-	pmlmeinfo->slotTime = SHORT_SLOT_TIME;
-	pmlmeinfo->preamble_mode = PREAMBLE_AUTO;
-
-	pmlmeinfo->dialogToken = 0;
-
-	pmlmeext->action_public_rxseq = 0xffff;
-	pmlmeext->action_public_dialog_token = 0xff;
-}
-
-static int has_channel(struct rt_channel_info *channel_set,
-					   u8 chanset_size,
-					   u8 chan)
-{
-	int i;
-
-	for (i = 0; i < chanset_size; i++)
-		if (channel_set[i].channel_num == chan)
-			return 1;
-
-	return 0;
-}
-
-static void init_channel_list(struct adapter *padapter, struct rt_channel_info *channel_set,
-							  u8 chanset_size,
-							  struct p2p_channels *channel_list)
-{
-	static const struct p2p_oper_class_map op_class[] = {
-		{ IEEE80211G,  81,   1,  13,  1, BW20 },
-		{ IEEE80211G,  82,  14,  14,  1, BW20 },
-		{ IEEE80211A, 115,  36,  48,  4, BW20 },
-		{ IEEE80211A, 116,  36,  44,  8, BW40PLUS },
-		{ IEEE80211A, 117,  40,  48,  8, BW40MINUS },
-		{ IEEE80211A, 124, 149, 161,  4, BW20 },
-		{ IEEE80211A, 125, 149, 169,  4, BW20 },
-		{ IEEE80211A, 126, 149, 157,  8, BW40PLUS },
-		{ IEEE80211A, 127, 153, 161,  8, BW40MINUS },
-		{ -1, 0, 0, 0, 0, BW20 }
-	};
-
-	int cla, op;
-
-	cla = 0;
-
-	for (op = 0; op_class[op].op_class; op++) {
-		u8 ch;
-		const struct p2p_oper_class_map *o = &op_class[op];
-		struct p2p_reg_class *reg = NULL;
-
-		for (ch = o->min_chan; ch <= o->max_chan; ch += o->inc) {
-			if (!has_channel(channel_set, chanset_size, ch))
-				continue;
-
-			if ((padapter->registrypriv.ht_enable == 0) && (o->inc == 8))
-				continue;
-
-			if ((0 < (padapter->registrypriv.bw_mode & 0xf0)) &&
-				((o->bw == BW40MINUS) || (o->bw == BW40PLUS)))
-				continue;
-
-			if (!reg) {
-				reg = &channel_list->reg_class[cla];
-				cla++;
-				reg->reg_class = o->op_class;
-				reg->channels = 0;
-			}
-			reg->channel[reg->channels] = ch;
-			reg->channels++;
-		}
-	}
-	channel_list->reg_classes = cla;
-}
-
-static u8 init_channel_set(struct adapter *padapter, u8 ChannelPlan, struct rt_channel_info *channel_set)
-{
-	u8 index, chanset_size = 0;
-	u8 b2_4GBand = false;
-	u8 Index2G = 0;
-
-	memset(channel_set, 0, sizeof(struct rt_channel_info) * MAX_CHANNEL_NUM);
-
-	if (ChannelPlan >= RT_CHANNEL_DOMAIN_MAX && ChannelPlan != RT_CHANNEL_DOMAIN_REALTEK_DEFINE)
-		return chanset_size;
-
-	if (is_supported_24g(padapter->registrypriv.wireless_mode)) {
-		b2_4GBand = true;
-		if (ChannelPlan == RT_CHANNEL_DOMAIN_REALTEK_DEFINE)
-			Index2G = RTW_CHANNEL_PLAN_MAP_REALTEK_DEFINE.Index2G;
-		else
-			Index2G = RTW_ChannelPlanMap[ChannelPlan].Index2G;
-	}
-
-	if (b2_4GBand) {
-		for (index = 0; index < RTW_ChannelPlan2G[Index2G].Len; index++) {
-			channel_set[chanset_size].channel_num =
-				RTW_ChannelPlan2G[Index2G].Channel[index];
-
-			if ((ChannelPlan == RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN) ||/* Channel 1~11 is active, and 12~14 is passive */
-				(ChannelPlan == RT_CHANNEL_DOMAIN_GLOBAL_NULL)) {
-				if (channel_set[chanset_size].channel_num >= 1 &&
-				    channel_set[chanset_size].channel_num <= 11)
-					channel_set[chanset_size].scan_type = SCAN_ACTIVE;
-				else if (channel_set[chanset_size].channel_num  >= 12 &&
-					 channel_set[chanset_size].channel_num  <= 14)
-					channel_set[chanset_size].scan_type  = SCAN_PASSIVE;
-			} else if (ChannelPlan == RT_CHANNEL_DOMAIN_WORLD_WIDE_13 ||
-				 Index2G == RT_CHANNEL_DOMAIN_2G_WORLD) { /*  channel 12~13, passive scan */
-				if (channel_set[chanset_size].channel_num <= 11)
-					channel_set[chanset_size].scan_type = SCAN_ACTIVE;
-				else
-					channel_set[chanset_size].scan_type = SCAN_PASSIVE;
-			} else
-				channel_set[chanset_size].scan_type = SCAN_ACTIVE;
-
-			chanset_size++;
-		}
-	}
-
-	return chanset_size;
-}
-
-static void init_mlme_ext_timer(struct adapter *padapter)
-{
-	struct	mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-	timer_setup(&pmlmeext->survey_timer, survey_timer_hdl, 0);
-	timer_setup(&pmlmeext->link_timer, link_timer_hdl, 0);
-	timer_setup(&pmlmeext->sa_query_timer, sa_query_timer_hdl, 0);
-}
-
-void init_mlme_ext_priv(struct adapter *padapter)
-{
-	struct registry_priv *pregistrypriv = &padapter->registrypriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	pmlmeext->padapter = padapter;
-
-	/* fill_fwpriv(padapter, &(pmlmeext->fwpriv)); */
-
-	init_mlme_ext_priv_value(padapter);
-	pmlmeinfo->accept_addba_req = pregistrypriv->accept_addba_req;
-
-	init_mlme_ext_timer(padapter);
-
-	init_mlme_ap_info(padapter);
-
-	pmlmeext->max_chan_nums = init_channel_set(padapter, pmlmepriv->ChannelPlan, pmlmeext->channel_set);
-	init_channel_list(padapter, pmlmeext->channel_set, pmlmeext->max_chan_nums, &pmlmeext->channel_list);
-	pmlmeext->last_scan_time = 0;
-	pmlmeext->chan_scan_time = SURVEY_TO;
-	pmlmeext->mlmeext_init = true;
-	pmlmeext->active_keep_alive_check = true;
-}
-
-void free_mlme_ext_priv(struct mlme_ext_priv *pmlmeext)
-{
-	struct adapter *padapter = pmlmeext->padapter;
-
-	if (!padapter)
-		return;
-
-	if (padapter->driver_stopped) {
-		timer_delete_sync(&pmlmeext->survey_timer);
-		timer_delete_sync(&pmlmeext->link_timer);
-		/* timer_delete_sync(&pmlmeext->ADDBA_timer); */
-	}
-}
-
-static void _mgt_dispatcher(struct adapter *padapter, struct mlme_handler *ptable, union recv_frame *precv_frame)
-{
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-
-	if (ptable->func) {
-		/* receive the frames that ra(a1) is my address or ra(a1) is bc address. */
-		if (memcmp(GetAddr1Ptr(pframe), myid(&padapter->eeprompriv), ETH_ALEN) &&
-		    !is_broadcast_ether_addr(GetAddr1Ptr(pframe)))
-			return;
-
-		ptable->func(padapter, precv_frame);
-	}
-}
-
-void mgt_dispatcher(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	int index;
-	struct mlme_handler *ptable;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	struct sta_info *psta = rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr(pframe));
-
-	if (GetFrameType(pframe) != WIFI_MGT_TYPE)
-		return;
-
-	/* receive the frames that ra(a1) is my address or ra(a1) is bc address. */
-	if (memcmp(GetAddr1Ptr(pframe), myid(&padapter->eeprompriv), ETH_ALEN) &&
-	    !is_broadcast_ether_addr(GetAddr1Ptr(pframe))) {
-		return;
-	}
-
-	ptable = mlme_sta_tbl;
-
-	index = GetFrameSubType(pframe) >> 4;
-
-	if (index >= ARRAY_SIZE(mlme_sta_tbl))
-		return;
-
-	ptable += index;
-
-	if (psta) {
-		if (GetRetry(pframe)) {
-			if (precv_frame->u.hdr.attrib.seq_num == psta->rx_mgmt_frame_seq_num) {
-				/* drop the duplicate management frame */
-				return;
-			}
-		}
-		psta->rx_mgmt_frame_seq_num = precv_frame->u.hdr.attrib.seq_num;
-	}
-
-	switch (GetFrameSubType(pframe)) {
-	case WIFI_AUTH:
-		if (check_fwstate(pmlmepriv, WIFI_AP_STATE))
-			ptable->func = &OnAuth;
-		else
-			ptable->func = &OnAuthClient;
-		fallthrough;
-	case WIFI_ASSOCREQ:
-	case WIFI_REASSOCREQ:
-		_mgt_dispatcher(padapter, ptable, precv_frame);
-		break;
-	case WIFI_PROBEREQ:
-		_mgt_dispatcher(padapter, ptable, precv_frame);
-		break;
-	case WIFI_BEACON:
-		_mgt_dispatcher(padapter, ptable, precv_frame);
-		break;
-	case WIFI_ACTION:
-		/* if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == true) */
-		_mgt_dispatcher(padapter, ptable, precv_frame);
-		break;
-	default:
-		_mgt_dispatcher(padapter, ptable, precv_frame);
-		break;
-	}
-}
-
-/* Following are the callback functions for each subtype of the management frames */
-
-unsigned int OnProbeReq(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	unsigned int	ielen;
-	unsigned char *p;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex	*cur = &pmlmeinfo->network;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	uint len = precv_frame->u.hdr.len;
-	u8 is_valid_p2p_probereq = false;
-
-	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE))
-		return _SUCCESS;
-
-	if (!check_fwstate(pmlmepriv, _FW_LINKED) &&
-	    !check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE | WIFI_AP_STATE)) {
-		return _SUCCESS;
-	}
-
-	p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + _PROBEREQ_IE_OFFSET_, WLAN_EID_SSID, (int *)&ielen,
-			len - WLAN_HDR_A3_LEN - _PROBEREQ_IE_OFFSET_);
-
-	/* check (wildcard) SSID */
-	if (p) {
-		if (is_valid_p2p_probereq)
-			goto _issue_probersp;
-
-		if ((ielen != 0 && false == !memcmp((p + 2), cur->ssid.ssid, cur->ssid.ssid_length))
-			|| (ielen == 0 && pmlmeinfo->hidden_ssid_mode)
-		)
-			return _SUCCESS;
-
-_issue_probersp:
-		if ((check_fwstate(pmlmepriv, _FW_LINKED) &&
-		     pmlmepriv->cur_network.join_res) ||
-		    check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE))
-			issue_probersp(padapter, get_sa(pframe), is_valid_p2p_probereq);
-	}
-
-	return _SUCCESS;
-}
-
-unsigned int OnProbeRsp(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-	if (pmlmeext->sitesurvey_res.state == SCAN_PROCESS) {
-		report_survey_event(padapter, precv_frame);
-		return _SUCCESS;
-	}
-
-	return _SUCCESS;
-}
-
-unsigned int OnBeacon(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	int cam_idx;
-	struct sta_info *psta;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	uint len = precv_frame->u.hdr.len;
-	struct wlan_bssid_ex *pbss;
-	int ret = _SUCCESS;
-	u8 *p = NULL;
-	u32 ielen = 0;
-
-	p = rtw_get_ie(pframe + sizeof(struct ieee80211_hdr_3addr) + _BEACON_IE_OFFSET_, WLAN_EID_EXT_SUPP_RATES, &ielen, precv_frame->u.hdr.len - sizeof(struct ieee80211_hdr_3addr) - _BEACON_IE_OFFSET_);
-	if (p && ielen > 0) {
-		if (p + 2 + ielen < pframe + len) {
-			if ((*(p + 1 + ielen) == 0x2D) && (*(p + 2 + ielen) != 0x2D))
-				/* Invalid value 0x2D is detected in Extended Supported Rates (ESR) IE. Try to fix the IE length to avoid failed Beacon parsing. */
-				*(p + 1) = ielen - 1;
-		}
-	}
-
-	if (pmlmeext->sitesurvey_res.state == SCAN_PROCESS) {
-		report_survey_event(padapter, precv_frame);
-		return _SUCCESS;
-	}
-
-	if (!memcmp(GetAddr3Ptr(pframe), get_my_bssid(&pmlmeinfo->network), ETH_ALEN)) {
-		if (pmlmeinfo->state & WIFI_FW_AUTH_NULL) {
-			/* we should update current network before auth, or some IE is wrong */
-			pbss = kmalloc_obj(*pbss, GFP_ATOMIC);
-			if (pbss) {
-				if (collect_bss_info(padapter, precv_frame, pbss) == _SUCCESS) {
-					update_network(&(pmlmepriv->cur_network.network), pbss, padapter, true);
-					rtw_get_bcn_info(&(pmlmepriv->cur_network));
-				}
-				kfree(pbss);
-			}
-
-			/* check the vendor of the assoc AP */
-			pmlmeinfo->assoc_AP_vendor =
-				check_assoc_AP(pframe + sizeof(struct ieee80211_hdr_3addr),
-					       len - sizeof(struct ieee80211_hdr_3addr));
-
-			/* update TSF Value */
-			update_TSF(pmlmeext, pframe, len);
-
-			/* reset for adaptive_early_32k */
-			pmlmeext->adaptive_tsf_done = false;
-			pmlmeext->DrvBcnEarly = 0xff;
-			pmlmeext->DrvBcnTimeOut = 0xff;
-			pmlmeext->bcn_cnt = 0;
-			memset(pmlmeext->bcn_delay_cnt, 0, sizeof(pmlmeext->bcn_delay_cnt));
-			memset(pmlmeext->bcn_delay_ratio, 0, sizeof(pmlmeext->bcn_delay_ratio));
-
-			/* start auth */
-			start_clnt_auth(padapter);
-
-			return _SUCCESS;
-		}
-
-		if (((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE) &&
-		    (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) {
-			psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));
-			if (psta) {
-				ret = rtw_check_bcn_info(padapter, pframe, len);
-				if (!ret) {
-					netdev_dbg(padapter->pnetdev,
-						   "ap has changed, disconnect now\n");
-					receive_disconnect(padapter,
-							   pmlmeinfo->network.mac_address, 0);
-					return _SUCCESS;
-				}
-				/* update WMM, ERP in the beacon */
-				/* todo: the timer is used instead of the number of the beacon received */
-				if ((sta_rx_pkts(psta) & 0xf) == 0)
-					update_beacon_info(padapter, pframe, len, psta);
-
-				adaptive_early_32k(pmlmeext, pframe, len);
-			}
-		} else if ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) {
-			psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));
-			if (psta) {
-				/* update WMM, ERP in the beacon */
-				/* todo: the timer is used instead of the number of the beacon received */
-				if ((sta_rx_pkts(psta) & 0xf) == 0)
-					update_beacon_info(padapter, pframe, len, psta);
-			} else {
-				/* allocate a new CAM entry for IBSS station */
-				cam_idx = allocate_fw_sta_entry(padapter);
-				if (cam_idx == NUM_STA)
-					goto _END_ONBEACON_;
-
-				/* get supported rate */
-				if (update_sta_support_rate(padapter, (pframe + WLAN_HDR_A3_LEN + _BEACON_IE_OFFSET_), (len - WLAN_HDR_A3_LEN - _BEACON_IE_OFFSET_), cam_idx) == _FAIL) {
-					pmlmeinfo->FW_sta_info[cam_idx].status = 0;
-					goto _END_ONBEACON_;
-				}
-
-				/* update TSF Value */
-				update_TSF(pmlmeext, pframe, len);
-
-				/* report sta add event */
-				report_add_sta_event(padapter, GetAddr2Ptr(pframe), cam_idx);
-			}
-		}
-	}
-
-_END_ONBEACON_:
-
-	return _SUCCESS;
-}
-
-unsigned int OnAuth(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	unsigned int	auth_mode, seq, ie_len;
-	unsigned char *sa, *p;
-	u16 algorithm;
-	int	status;
-	static struct sta_info stat;
-	struct	sta_info *pstat = NULL;
-	struct	sta_priv *pstapriv = &padapter->stapriv;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	uint len = precv_frame->u.hdr.len;
-	u8 offset = 0;
-
-	if ((pmlmeinfo->state & 0x03) != WIFI_FW_AP_STATE)
-		return _FAIL;
-
-	if (len < WLAN_HDR_A3_LEN)
-		return _FAIL;
-
-	sa = GetAddr2Ptr(pframe);
-
-	auth_mode = psecuritypriv->dot11_auth_algrthm;
-
-	if (GetPrivacy(pframe)) {
-		u8 *iv;
-		struct rx_pkt_attrib	 *prxattrib = &(precv_frame->u.hdr.attrib);
-
-		prxattrib->hdrlen = WLAN_HDR_A3_LEN;
-		prxattrib->encrypt = _WEP40_;
-
-		if (len < WLAN_HDR_A3_LEN + 8)
-			return _FAIL;
-
-		iv = pframe + prxattrib->hdrlen;
-		prxattrib->key_index = ((iv[3] >> 6) & 0x3);
-
-		prxattrib->iv_len = 4;
-		prxattrib->icv_len = 4;
-
-		rtw_wep_decrypt(padapter, (u8 *)precv_frame);
-
-		offset = 4;
-	}
-
-	algorithm = le16_to_cpu(*(__le16 *)((SIZE_PTR)pframe + WLAN_HDR_A3_LEN + offset));
-	seq	= le16_to_cpu(*(__le16 *)((SIZE_PTR)pframe + WLAN_HDR_A3_LEN + offset + 2));
-
-	if (auth_mode == 2 &&
-			psecuritypriv->dot11_privacy_algrthm != _WEP40_ &&
-			psecuritypriv->dot11_privacy_algrthm != _WEP104_)
-		auth_mode = 0;
-
-	if ((algorithm > 0 && auth_mode == 0) ||	/*  rx a shared-key auth but shared not enabled */
-		(algorithm == 0 && auth_mode == 1)) {	/*  rx a open-system auth but shared-key is enabled */
-
-		status = WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG;
-
-		goto auth_fail;
-	}
-
-	if (!rtw_access_ctrl(padapter, sa)) {
-		status = WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA;
-		goto auth_fail;
-	}
-
-	pstat = rtw_get_stainfo(pstapriv, sa);
-	if (!pstat) {
-		/*  allocate a new one */
-		pstat = rtw_alloc_stainfo(pstapriv, sa);
-		if (!pstat) {
-			status = WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA;
-			goto auth_fail;
-		}
-
-		pstat->state = WIFI_FW_AUTH_NULL;
-		pstat->auth_seq = 0;
-
-		/* pstat->flags = 0; */
-		/* pstat->capability = 0; */
-	} else {
-		spin_lock_bh(&pstapriv->asoc_list_lock);
-		if (!list_empty(&pstat->asoc_list)) {
-			list_del_init(&pstat->asoc_list);
-			pstapriv->asoc_list_cnt--;
-			if (pstat->expire_to > 0) {
-				/* TODO: STA re_auth within expire_to */
-			}
-		}
-		spin_unlock_bh(&pstapriv->asoc_list_lock);
-
-		if (seq == 1) {
-			/* TODO: STA re_auth and auth timeout */
-		}
-	}
-
-	spin_lock_bh(&pstapriv->auth_list_lock);
-	if (list_empty(&pstat->auth_list)) {
-		list_add_tail(&pstat->auth_list, &pstapriv->auth_list);
-		pstapriv->auth_list_cnt++;
-	}
-	spin_unlock_bh(&pstapriv->auth_list_lock);
-
-	if (pstat->auth_seq == 0)
-		pstat->expire_to = pstapriv->auth_to;
-
-	if ((pstat->auth_seq + 1) != seq) {
-		status = WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION;
-		goto auth_fail;
-	}
-
-	if (algorithm == 0 && (auth_mode == 0 || auth_mode == 2 || auth_mode == 3)) {
-		if (seq == 1) {
-			pstat->state &= ~WIFI_FW_AUTH_NULL;
-			pstat->state |= WIFI_FW_AUTH_SUCCESS;
-			pstat->expire_to = pstapriv->assoc_to;
-			pstat->authalg = algorithm;
-		} else {
-			status = WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION;
-			goto auth_fail;
-		}
-	} else { /*  shared system or auto authentication */
-		if (seq == 1) {
-			/* prepare for the challenging txt... */
-			memset(pstat->chg_txt, 78, 128);
-
-			pstat->state &= ~WIFI_FW_AUTH_NULL;
-			pstat->state |= WIFI_FW_AUTH_STATE;
-			pstat->authalg = algorithm;
-		} else if (seq == 3) {
-			p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + 4 + _AUTH_IE_OFFSET_, WLAN_EID_CHALLENGE, (int *)&ie_len,
-					len - WLAN_HDR_A3_LEN - _AUTH_IE_OFFSET_ - 4);
-
-			if (!p || ie_len != 128) {
-				status = WLAN_STATUS_CHALLENGE_FAIL;
-				goto auth_fail;
-			}
-
-			if (!memcmp((p + 2), pstat->chg_txt, 128)) {
-				pstat->state &= (~WIFI_FW_AUTH_STATE);
-				pstat->state |= WIFI_FW_AUTH_SUCCESS;
-				/*  challenging txt is correct... */
-				pstat->expire_to =  pstapriv->assoc_to;
-			} else {
-				status = WLAN_STATUS_CHALLENGE_FAIL;
-				goto auth_fail;
-			}
-		} else {
-			status = WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION;
-			goto auth_fail;
-		}
-	}
-
-	/*  Now, we are going to issue_auth... */
-	pstat->auth_seq = seq + 1;
-
-	issue_auth(padapter, pstat, (unsigned short)(WLAN_STATUS_SUCCESS));
-
-	if (pstat->state & WIFI_FW_AUTH_SUCCESS)
-		pstat->auth_seq = 0;
-
-	return _SUCCESS;
-
-auth_fail:
-
-	if (pstat)
-		rtw_free_stainfo(padapter, pstat);
-
-	pstat = &stat;
-	memset((char *)pstat, '\0', sizeof(stat));
-	pstat->auth_seq = 2;
-	memcpy(pstat->hwaddr, sa, 6);
-
-	issue_auth(padapter, pstat, (unsigned short)status);
-
-	return _FAIL;
-}
-
-unsigned int OnAuthClient(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	unsigned int	seq, len, status, offset;
-	unsigned char *p;
-	unsigned int	go2asoc = 0;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	uint pkt_len = precv_frame->u.hdr.len;
-
-	/* check A1 matches or not */
-	if (memcmp(myid(&(padapter->eeprompriv)), get_da(pframe), ETH_ALEN))
-		return _SUCCESS;
-
-	if (!(pmlmeinfo->state & WIFI_FW_AUTH_STATE))
-		return _SUCCESS;
-
-	offset = (GetPrivacy(pframe)) ? 4 : 0;
-
-	seq	= le16_to_cpu(*(__le16 *)((SIZE_PTR)pframe + WLAN_HDR_A3_LEN + offset + 2));
-	status	= le16_to_cpu(*(__le16 *)((SIZE_PTR)pframe + WLAN_HDR_A3_LEN + offset + 4));
-
-	if (status != 0) {
-		if (status == 13) { /*  pmlmeinfo->auth_algo == dot11_auth_algrthm_auto) */
-			if (pmlmeinfo->auth_algo == dot11_auth_algrthm_shared)
-				pmlmeinfo->auth_algo = dot11_auth_algrthm_open;
-			else
-				pmlmeinfo->auth_algo = dot11_auth_algrthm_shared;
-			/* pmlmeinfo->reauth_count = 0; */
-		}
-
-		set_link_timer(pmlmeext, 1);
-		goto authclnt_fail;
-	}
-
-	if (seq == 2) {
-		if (pmlmeinfo->auth_algo == dot11_auth_algrthm_shared) {
-			 /*  legendary shared system */
-			p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + _AUTH_IE_OFFSET_, WLAN_EID_CHALLENGE, (int *)&len,
-				pkt_len - WLAN_HDR_A3_LEN - _AUTH_IE_OFFSET_);
-
-			if (!p || len != WLAN_AUTH_CHALLENGE_LEN)
-				goto authclnt_fail;
-
-			memcpy(pmlmeinfo->chg_txt, p + 2, len);
-			pmlmeinfo->auth_seq = 3;
-			issue_auth(padapter, NULL, 0);
-			set_link_timer(pmlmeext, REAUTH_TO);
-
-			return _SUCCESS;
-		}
-		/* open system */
-		go2asoc = 1;
-	} else if (seq == 4) {
-		if (pmlmeinfo->auth_algo == dot11_auth_algrthm_shared)
-			go2asoc = 1;
-		else
-			goto authclnt_fail;
-	} else {
-		/*  this is also illegal */
-		goto authclnt_fail;
-	}
-
-	if (go2asoc) {
-		netdev_dbg(padapter->pnetdev, "auth success, start assoc\n");
-		start_clnt_assoc(padapter);
-		return _SUCCESS;
-	}
-
-authclnt_fail:
-
-	/* pmlmeinfo->state &= ~(WIFI_FW_AUTH_STATE); */
-
-	return _FAIL;
-}
-
-unsigned int OnAssocReq(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	u16 capab_info;
-	struct rtw_ieee802_11_elems elems;
-	struct sta_info *pstat;
-	unsigned char *p, *pos, *wpa_ie;
-	unsigned char WMM_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01};
-	int		i, ie_len, left;
-	u8 wpa_ie_len;
-	unsigned char supportRate[16];
-	int					support_rate_num;
-	unsigned short		status = WLAN_STATUS_SUCCESS;
-	unsigned short		frame_type, ie_offset = 0;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex	*cur = &(pmlmeinfo->network);
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	uint pkt_len = precv_frame->u.hdr.len;
-
-	if ((pmlmeinfo->state & 0x03) != WIFI_FW_AP_STATE)
-		return _FAIL;
-
-	frame_type = GetFrameSubType(pframe);
-	if (frame_type == WIFI_ASSOCREQ)
-		ie_offset = _ASOCREQ_IE_OFFSET_;
-	else /*  WIFI_REASSOCREQ */
-		ie_offset = _REASOCREQ_IE_OFFSET_;
-
-	if (pkt_len < sizeof(struct ieee80211_hdr_3addr) + ie_offset)
-		return _FAIL;
-
-	pstat = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));
-	if (!pstat) {
-		status = WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA;
-		goto asoc_class2_error;
-	}
-
-	capab_info = get_unaligned_le16(pframe + WLAN_HDR_A3_LEN);
-	/* capab_info = le16_to_cpu(*(unsigned short *)(pframe + WLAN_HDR_A3_LEN)); */
-
-	left = pkt_len - (sizeof(struct ieee80211_hdr_3addr) + ie_offset);
-	pos = pframe + (sizeof(struct ieee80211_hdr_3addr) + ie_offset);
-
-	/*  check if this stat has been successfully authenticated/associated */
-	if (!((pstat->state) & WIFI_FW_AUTH_SUCCESS)) {
-		if (!((pstat->state) & WIFI_FW_ASSOC_SUCCESS)) {
-			status = WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA;
-			goto asoc_class2_error;
-		} else {
-			pstat->state &= (~WIFI_FW_ASSOC_SUCCESS);
-			pstat->state |= WIFI_FW_ASSOC_STATE;
-		}
-	} else {
-		pstat->state &= (~WIFI_FW_AUTH_SUCCESS);
-		pstat->state |= WIFI_FW_ASSOC_STATE;
-	}
-
-	pstat->capability = capab_info;
-
-	/* now parse all ieee802_11 ie to point to elems */
-	if (rtw_ieee802_11_parse_elems(pos, left, &elems, 1) == PARSE_FAILED ||
-	    !elems.ssid) {
-		status = WLAN_STATUS_CHALLENGE_FAIL;
-		goto OnAssocReqFail;
-	}
-
-	/*  now we should check all the fields... */
-	/*  checking SSID */
-	p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, WLAN_EID_SSID, &ie_len,
-		pkt_len - WLAN_HDR_A3_LEN - ie_offset);
-
-	if (!p || ie_len == 0) {
-		/*  broadcast ssid, however it is not allowed in assocreq */
-		status = WLAN_STATUS_CHALLENGE_FAIL;
-		goto OnAssocReqFail;
-	} else {
-		/*  check if ssid match */
-		if (memcmp(p + 2, cur->ssid.ssid, cur->ssid.ssid_length))
-			status = WLAN_STATUS_CHALLENGE_FAIL;
-
-		if (ie_len != cur->ssid.ssid_length)
-			status = WLAN_STATUS_CHALLENGE_FAIL;
-	}
-
-	if (status != WLAN_STATUS_SUCCESS)
-		goto OnAssocReqFail;
-
-	/*  check if the supported rate is ok */
-	p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, WLAN_EID_SUPP_RATES, &ie_len, pkt_len - WLAN_HDR_A3_LEN - ie_offset);
-	if (!p) {
-		/*  use our own rate set as statoin used */
-		/* memcpy(supportRate, AP_BSSRATE, AP_BSSRATE_LEN); */
-		/* support_rate_num = AP_BSSRATE_LEN; */
-
-		status = WLAN_STATUS_CHALLENGE_FAIL;
-		goto OnAssocReqFail;
-	} else {
-		if (ie_len > sizeof(supportRate))
-			ie_len = sizeof(supportRate);
-
-		memcpy(supportRate, p + 2, ie_len);
-		support_rate_num = ie_len;
-
-		p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, WLAN_EID_EXT_SUPP_RATES, &ie_len,
-				pkt_len - WLAN_HDR_A3_LEN - ie_offset);
-		if (p) {
-			if (support_rate_num + ie_len <= sizeof(supportRate)) {
-				memcpy(supportRate + support_rate_num, p + 2, ie_len);
-				support_rate_num += ie_len;
-			}
-		}
-	}
-
-	/* todo: mask supportRate between AP & STA -> move to update raid */
-	/* get_matched_rate(pmlmeext, supportRate, &support_rate_num, 0); */
-
-	/* update station supportRate */
-	pstat->bssratelen = support_rate_num;
-	memcpy(pstat->bssrateset, supportRate, support_rate_num);
-	update_basic_rate_table_soft_ap(pstat->bssrateset, pstat->bssratelen);
-
-	/* check RSN/WPA/WPS */
-	pstat->dot8021xalg = 0;
-	pstat->wpa_psk = 0;
-	pstat->wpa_group_cipher = 0;
-	pstat->wpa2_group_cipher = 0;
-	pstat->wpa_pairwise_cipher = 0;
-	pstat->wpa2_pairwise_cipher = 0;
-	memset(pstat->wpa_ie, 0, sizeof(pstat->wpa_ie));
-	if ((psecuritypriv->wpa_psk & BIT(1)) && elems.rsn_ie) {
-		int group_cipher = 0, pairwise_cipher = 0;
-
-		wpa_ie = elems.rsn_ie;
-		wpa_ie_len = elems.rsn_ie_len;
-
-		if (rtw_parse_wpa2_ie(wpa_ie - 2, wpa_ie_len + 2, &group_cipher,
-				      &pairwise_cipher, NULL) == _SUCCESS) {
-			pstat->dot8021xalg = 1;/* psk,  todo:802.1x */
-			pstat->wpa_psk |= BIT(1);
-
-			pstat->wpa2_group_cipher = group_cipher & psecuritypriv->wpa2_group_cipher;
-			pstat->wpa2_pairwise_cipher = pairwise_cipher &
-				psecuritypriv->wpa2_pairwise_cipher;
-
-			if (!pstat->wpa2_group_cipher)
-				status = WLAN_STATUS_INVALID_GROUP_CIPHER;
-
-			if (!pstat->wpa2_pairwise_cipher)
-				status = WLAN_STATUS_INVALID_PAIRWISE_CIPHER;
-		} else {
-			status = WLAN_STATUS_INVALID_IE;
-		}
-
-	} else if ((psecuritypriv->wpa_psk & BIT(0)) && elems.wpa_ie) {
-		int group_cipher = 0, pairwise_cipher = 0;
-
-		wpa_ie = elems.wpa_ie;
-		wpa_ie_len = elems.wpa_ie_len;
-
-		if (rtw_parse_wpa_ie(wpa_ie - 2, wpa_ie_len + 2, &group_cipher,
-				     &pairwise_cipher, NULL) == _SUCCESS) {
-			pstat->dot8021xalg = 1;/* psk,  todo:802.1x */
-			pstat->wpa_psk |= BIT(0);
-
-			pstat->wpa_group_cipher = group_cipher & psecuritypriv->wpa_group_cipher;
-			pstat->wpa_pairwise_cipher = pairwise_cipher &
-				psecuritypriv->wpa_pairwise_cipher;
-
-			if (!pstat->wpa_group_cipher)
-				status = WLAN_STATUS_INVALID_GROUP_CIPHER;
-
-			if (!pstat->wpa_pairwise_cipher)
-				status = WLAN_STATUS_INVALID_PAIRWISE_CIPHER;
-
-		} else {
-			status = WLAN_STATUS_INVALID_IE;
-		}
-
-	} else {
-		wpa_ie = NULL;
-		wpa_ie_len = 0;
-	}
-
-	if (status != WLAN_STATUS_SUCCESS)
-		goto OnAssocReqFail;
-
-	pstat->flags &= ~(WLAN_STA_WPS | WLAN_STA_MAYBE_WPS);
-	if (!wpa_ie) {
-		if (elems.wps_ie)
-			pstat->flags |= WLAN_STA_WPS;
-		else
-			pstat->flags |= WLAN_STA_MAYBE_WPS;
-
-		/*  AP support WPA/RSN, and sta is going to do WPS, but AP is not ready */
-		/*  that the selected registrar of AP is _FLASE */
-		if ((psecuritypriv->wpa_psk > 0) &&
-		    (pstat->flags & (WLAN_STA_WPS | WLAN_STA_MAYBE_WPS))) {
-			if (pmlmepriv->wps_beacon_ie) {
-				u8 selected_registrar = 0;
-
-				rtw_get_wps_attr_content(pmlmepriv->wps_beacon_ie, pmlmepriv->wps_beacon_ie_len, WPS_ATTR_SELECTED_REGISTRAR, &selected_registrar, NULL);
-
-				if (!selected_registrar) {
-					status = WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA;
-
-					goto OnAssocReqFail;
-				}
-			}
-		}
-
-	} else {
-		int copy_len;
-
-		if (psecuritypriv->wpa_psk == 0) {
-			status = WLAN_STATUS_INVALID_IE;
-
-			goto OnAssocReqFail;
-		}
-
-		if (elems.wps_ie) {
-			pstat->flags |= WLAN_STA_WPS;
-			copy_len = 0;
-		} else {
-			copy_len = min(sizeof(pstat->wpa_ie), wpa_ie_len + 2u);
-		}
-
-		if (copy_len > 0)
-			memcpy(pstat->wpa_ie, wpa_ie - 2, copy_len);
-	}
-
-	/*  check if there is WMM IE & support WWM-PS */
-	pstat->flags &= ~WLAN_STA_WME;
-	pstat->qos_option = 0;
-	pstat->qos_info = 0;
-	pstat->has_legacy_ac = true;
-	pstat->uapsd_vo = 0;
-	pstat->uapsd_vi = 0;
-	pstat->uapsd_be = 0;
-	pstat->uapsd_bk = 0;
-	if (pmlmepriv->qospriv.qos_option) {
-		p = pframe + WLAN_HDR_A3_LEN + ie_offset; ie_len = 0;
-		for (;;) {
-			p = rtw_get_ie(p, WLAN_EID_VENDOR_SPECIFIC, &ie_len, pkt_len - WLAN_HDR_A3_LEN - ie_offset);
-			if (!p)
-				break;
-
-			if (memcmp(p + 2, WMM_IE, 6)) {
-				p = p + ie_len + 2;
-				continue;
-			}
-
-			pstat->flags |= WLAN_STA_WME;
-
-			pstat->qos_option = 1;
-			pstat->qos_info = *(p + 8);
-
-			pstat->max_sp_len = (pstat->qos_info >> 5) & 0x3;
-
-			if ((pstat->qos_info & 0xf) != 0xf)
-				pstat->has_legacy_ac = true;
-			else
-				pstat->has_legacy_ac = false;
-
-			if (pstat->qos_info & 0xf) {
-				if (pstat->qos_info & BIT(0))
-					pstat->uapsd_vo = BIT(0) | BIT(1);
-				else
-					pstat->uapsd_vo = 0;
-
-				if (pstat->qos_info & BIT(1))
-					pstat->uapsd_vi = BIT(0) | BIT(1);
-				else
-					pstat->uapsd_vi = 0;
-
-				if (pstat->qos_info & BIT(2))
-					pstat->uapsd_bk = BIT(0) | BIT(1);
-				else
-					pstat->uapsd_bk = 0;
-
-				if (pstat->qos_info & BIT(3))
-					pstat->uapsd_be = BIT(0) | BIT(1);
-				else
-					pstat->uapsd_be = 0;
-			}
-
-			break;
-		}
-	}
-
-	/* save HT capabilities in the sta object */
-	memset(&pstat->htpriv.ht_cap, 0, sizeof(struct ieee80211_ht_cap));
-	if (elems.ht_capabilities && elems.ht_capabilities_len >= sizeof(struct ieee80211_ht_cap)) {
-		pstat->flags |= WLAN_STA_HT;
-
-		pstat->flags |= WLAN_STA_WME;
-
-		memcpy(&pstat->htpriv.ht_cap, elems.ht_capabilities, sizeof(struct ieee80211_ht_cap));
-
-	} else
-		pstat->flags &= ~WLAN_STA_HT;
-
-	if (!pmlmepriv->htpriv.ht_option && (pstat->flags & WLAN_STA_HT)) {
-		status = WLAN_STATUS_CHALLENGE_FAIL;
-		goto OnAssocReqFail;
-	}
-
-	if ((pstat->flags & WLAN_STA_HT) &&
-		    ((pstat->wpa2_pairwise_cipher & WPA_CIPHER_TKIP) ||
-		      (pstat->wpa_pairwise_cipher & WPA_CIPHER_TKIP))) {
-		/* status = WLAN_STATUS_CIPHER_SUITE_REJECTED; */
-		/* goto OnAssocReqFail; */
-	}
-	pstat->flags |= WLAN_STA_NONERP;
-	for (i = 0; i < pstat->bssratelen; i++) {
-		if ((pstat->bssrateset[i] & 0x7f) > 22) {
-			pstat->flags &= ~WLAN_STA_NONERP;
-			break;
-		}
-	}
-
-	if (pstat->capability & WLAN_CAPABILITY_SHORT_PREAMBLE)
-		pstat->flags |= WLAN_STA_SHORT_PREAMBLE;
-	else
-		pstat->flags &= ~WLAN_STA_SHORT_PREAMBLE;
-
-	/* TODO: identify_proprietary_vendor_ie(); */
-	/*  Realtek proprietary IE */
-	/*  identify if this is Broadcom sta */
-	/*  identify if this is ralink sta */
-	/*  Customer proprietary IE */
-
-	/* get a unique AID */
-	if (pstat->aid == 0) {
-		for (pstat->aid = 1; pstat->aid <= NUM_STA; pstat->aid++)
-			if (!pstapriv->sta_aid[pstat->aid - 1])
-				break;
-
-		/* if (pstat->aid > NUM_STA) { */
-		if (pstat->aid > pstapriv->max_num_sta) {
-			pstat->aid = 0;
-
-			status = WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA;
-
-			goto OnAssocReqFail;
-
-		} else {
-			pstapriv->sta_aid[pstat->aid - 1] = pstat;
-		}
-	}
-
-	pstat->state &= (~WIFI_FW_ASSOC_STATE);
-	pstat->state |= WIFI_FW_ASSOC_SUCCESS;
-
-	spin_lock_bh(&pstapriv->auth_list_lock);
-	if (!list_empty(&pstat->auth_list)) {
-		list_del_init(&pstat->auth_list);
-		pstapriv->auth_list_cnt--;
-	}
-	spin_unlock_bh(&pstapriv->auth_list_lock);
-
-	spin_lock_bh(&pstapriv->asoc_list_lock);
-	if (list_empty(&pstat->asoc_list)) {
-		pstat->expire_to = pstapriv->expire_to;
-		list_add_tail(&pstat->asoc_list, &pstapriv->asoc_list);
-		pstapriv->asoc_list_cnt++;
-	}
-	spin_unlock_bh(&pstapriv->asoc_list_lock);
-
-	/*  now the station is qualified to join our BSS... */
-	if (pstat && (pstat->state & WIFI_FW_ASSOC_SUCCESS) && (status == WLAN_STATUS_SUCCESS)) {
-		/* 1 bss_cap_update & sta_info_update */
-		bss_cap_update_on_sta_join(padapter, pstat);
-		sta_info_update(padapter, pstat);
-
-		/* 2 issue assoc rsp before notify station join event. */
-		if (frame_type == WIFI_ASSOCREQ)
-			issue_asocrsp(padapter, status, pstat, WIFI_ASSOCRSP);
-		else
-			issue_asocrsp(padapter, status, pstat, WIFI_REASSOCRSP);
-
-		spin_lock_bh(&pstat->lock);
-		kfree(pstat->passoc_req);
-		pstat->assoc_req_len = 0;
-		pstat->passoc_req = kmemdup(pframe, pkt_len, GFP_ATOMIC);
-		if (pstat->passoc_req)
-			pstat->assoc_req_len = pkt_len;
-
-		spin_unlock_bh(&pstat->lock);
-
-		/* 3-(1) report sta add event */
-		report_add_sta_event(padapter, pstat->hwaddr, pstat->aid);
-	}
-
-	return _SUCCESS;
-
-asoc_class2_error:
-
-	issue_deauth(padapter, GetAddr2Ptr(pframe), status);
-
-	return _FAIL;
-
-OnAssocReqFail:
-
-	pstat->aid = 0;
-	if (frame_type == WIFI_ASSOCREQ)
-		issue_asocrsp(padapter, status, pstat, WIFI_ASSOCRSP);
-	else
-		issue_asocrsp(padapter, status, pstat, WIFI_REASSOCRSP);
-
-	return _FAIL;
-}
-
-unsigned int OnAssocRsp(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	uint i;
-	int res;
-	unsigned short	status;
-	struct ndis_80211_var_ie *pIE;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	/* struct wlan_bssid_ex			*cur_network = &(pmlmeinfo->network); */
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	uint pkt_len = precv_frame->u.hdr.len;
-
-	/* check A1 matches or not */
-	if (memcmp(myid(&(padapter->eeprompriv)), get_da(pframe), ETH_ALEN))
-		return _SUCCESS;
-
-	if (!(pmlmeinfo->state & (WIFI_FW_AUTH_SUCCESS | WIFI_FW_ASSOC_STATE)))
-		return _SUCCESS;
-
-	if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)
-		return _SUCCESS;
-
-	timer_delete_sync(&pmlmeext->link_timer);
-
-	/* status */
-	status = le16_to_cpu(*(__le16 *)(pframe + WLAN_HDR_A3_LEN + 2));
-	if (status > 0) {
-		pmlmeinfo->state = WIFI_FW_NULL_STATE;
-		res = -4;
-		goto report_assoc_result;
-	}
-
-	/* get capabilities */
-	pmlmeinfo->capability = le16_to_cpu(*(__le16 *)(pframe + WLAN_HDR_A3_LEN));
-
-	/* set slot time */
-	pmlmeinfo->slotTime = (pmlmeinfo->capability & BIT(10)) ? 9 : 20;
-
-	/* AID */
-	pmlmeinfo->aid = (int)(le16_to_cpu(*(__le16 *)(pframe + WLAN_HDR_A3_LEN + 4)) & 0x3fff);
-	res = pmlmeinfo->aid;
-
-	/* following are moved to join event callback function */
-	/* to handle HT, WMM, rate adaptive, update MAC reg */
-	/* for not to handle the synchronous IO in the tasklet */
-	for (i = (6 + WLAN_HDR_A3_LEN); i < pkt_len;) {
-		if (i + sizeof(*pIE) > pkt_len)
-			break;
-		pIE = (struct ndis_80211_var_ie *)(pframe + i);
-		if (i + sizeof(*pIE) + pIE->length > pkt_len)
-			break;
-
-		switch (pIE->element_id) {
-		case WLAN_EID_VENDOR_SPECIFIC:
-			if (!memcmp(pIE->data, WMM_PARA_OUI, 6))	/* WMM */
-				WMM_param_handler(padapter, pIE);
-			break;
-
-		case WLAN_EID_HT_CAPABILITY:	/* HT caps */
-			HT_caps_handler(padapter, pIE);
-			break;
-
-		case WLAN_EID_HT_OPERATION:	/* HT info */
-			HT_info_handler(padapter, pIE);
-			break;
-
-		case WLAN_EID_ERP_INFO:
-			ERP_IE_handler(padapter, pIE);
-			break;
-
-		default:
-			break;
-		}
-
-		i += (pIE->length + 2);
-	}
-
-	pmlmeinfo->state &= (~WIFI_FW_ASSOC_STATE);
-	pmlmeinfo->state |= WIFI_FW_ASSOC_SUCCESS;
-
-	/* Update Basic Rate Table for spec, 2010-12-28 , by thomas */
-	update_basic_rate_table(padapter, pmlmeinfo->network.supported_rates);
-
-report_assoc_result:
-	if (res > 0)
-		rtw_buf_update(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len, pframe, pkt_len);
-	else
-		rtw_buf_free(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len);
-
-	report_join_res(padapter, res);
-
-	return _SUCCESS;
-}
-
-unsigned int OnDeAuth(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	unsigned short	reason;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	int ignore_received_deauth = 0;
-
-	/* check A3 */
-	if (memcmp(GetAddr3Ptr(pframe), get_my_bssid(&pmlmeinfo->network), ETH_ALEN))
-		return _SUCCESS;
-
-	reason = le16_to_cpu(*(__le16 *)(pframe + WLAN_HDR_A3_LEN));
-
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		struct sta_info *psta;
-		struct sta_priv *pstapriv = &padapter->stapriv;
-
-		/* rtw_free_stainfo(padapter, psta); */
-
-		netdev_dbg(padapter->pnetdev,
-			   "ap recv deauth reason code(%d) sta:%pM\n", reason,
-			   GetAddr2Ptr(pframe));
-
-		psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));
-		if (psta) {
-			u8 updated = false;
-
-			spin_lock_bh(&pstapriv->asoc_list_lock);
-			if (!list_empty(&psta->asoc_list)) {
-				list_del_init(&psta->asoc_list);
-				pstapriv->asoc_list_cnt--;
-				updated = ap_free_sta(padapter, psta, false, reason);
-			}
-			spin_unlock_bh(&pstapriv->asoc_list_lock);
-
-			associated_clients_update(padapter, updated);
-		}
-
-		return _SUCCESS;
-	}
-
-	/* Commented by Albert 20130604
-	 * Before sending the auth frame to start the STA/GC mode connection with AP/GO,
-	 * we will send the deauth first.
-	 * However, the Win8.1 with BRCM Wi-Fi will send the deauth with reason code 6 to us after receieving our deauth.
-	 * Added the following code to avoid this case.
-	 */
-	if ((pmlmeinfo->state & WIFI_FW_AUTH_STATE) ||
-	    (pmlmeinfo->state & WIFI_FW_ASSOC_STATE)) {
-		if (reason == WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA) {
-			ignore_received_deauth = 1;
-		} else if (reason == WLAN_REASON_PREV_AUTH_NOT_VALID) {
-			/*  TODO: 802.11r */
-			ignore_received_deauth = 1;
-		}
-	}
-
-	netdev_dbg(padapter->pnetdev,
-		   "sta recv deauth reason code(%d) sta:%pM, ignore = %d\n",
-		   reason, GetAddr3Ptr(pframe),
-		   ignore_received_deauth);
-
-	if (ignore_received_deauth == 0)
-		receive_disconnect(padapter, GetAddr3Ptr(pframe), reason);
-
-	pmlmepriv->link_detect_info.busy_traffic = false;
-	return _SUCCESS;
-}
-
-unsigned int OnDisassoc(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	unsigned short	reason;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-
-	/* check A3 */
-	if (memcmp(GetAddr3Ptr(pframe), get_my_bssid(&pmlmeinfo->network), ETH_ALEN))
-		return _SUCCESS;
-
-	reason = le16_to_cpu(*(__le16 *)(pframe + WLAN_HDR_A3_LEN));
-
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		struct sta_info *psta;
-		struct sta_priv *pstapriv = &padapter->stapriv;
-
-		/* rtw_free_stainfo(padapter, psta); */
-
-		netdev_dbg(padapter->pnetdev,
-			   "ap recv disassoc reason code(%d) sta:%pM\n",
-			   reason, GetAddr2Ptr(pframe));
-
-		psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));
-		if (psta) {
-			u8 updated = false;
-
-			spin_lock_bh(&pstapriv->asoc_list_lock);
-			if (!list_empty(&psta->asoc_list)) {
-				list_del_init(&psta->asoc_list);
-				pstapriv->asoc_list_cnt--;
-				updated = ap_free_sta(padapter, psta, false, reason);
-			}
-			spin_unlock_bh(&pstapriv->asoc_list_lock);
-
-			associated_clients_update(padapter, updated);
-		}
-
-		return _SUCCESS;
-	}
-	netdev_dbg(padapter->pnetdev,
-		   "sta recv disassoc reason code(%d) sta:%pM\n",
-		   reason, GetAddr3Ptr(pframe));
-
-	receive_disconnect(padapter, GetAddr3Ptr(pframe), reason);
-
-	pmlmepriv->link_detect_info.busy_traffic = false;
-	return _SUCCESS;
-}
-
-unsigned int OnAtim(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	return _SUCCESS;
-}
-
-unsigned int on_action_spct(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	struct sta_info *psta = NULL;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	u8 *frame_body = (u8 *)(pframe + sizeof(struct ieee80211_hdr_3addr));
-	u8 category;
-	u8 action;
-
-	psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));
-
-	if (!psta)
-		goto exit;
-
-	category = frame_body[0];
-	if (category != RTW_WLAN_CATEGORY_SPECTRUM_MGMT)
-		goto exit;
-
-	action = frame_body[1];
-	switch (action) {
-	case WLAN_ACTION_SPCT_MSR_REQ:
-	case WLAN_ACTION_SPCT_MSR_RPRT:
-	case WLAN_ACTION_SPCT_TPC_REQ:
-	case WLAN_ACTION_SPCT_TPC_RPRT:
-	case WLAN_ACTION_SPCT_CHL_SWITCH:
-		break;
-	default:
-		break;
-	}
-
-exit:
-	return _FAIL;
-}
-
-unsigned int OnAction_back(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	u8 *addr;
-	struct sta_info *psta = NULL;
-	struct recv_reorder_ctrl *preorder_ctrl;
-	unsigned char *frame_body;
-	unsigned char category, action;
-	unsigned short	tid, status;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-
-	/* check RA matches or not */
-	if (memcmp(myid(&(padapter->eeprompriv)), GetAddr1Ptr(pframe), ETH_ALEN))/* for if1, sta/ap mode */
-		return _SUCCESS;
-
-	if ((pmlmeinfo->state & 0x03) != WIFI_FW_AP_STATE)
-		if (!(pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS))
-			return _SUCCESS;
-
-	addr = GetAddr2Ptr(pframe);
-	psta = rtw_get_stainfo(pstapriv, addr);
-
-	if (!psta)
-		return _SUCCESS;
-
-	frame_body = (unsigned char *)(pframe + sizeof(struct ieee80211_hdr_3addr));
-
-	category = frame_body[0];
-	if (category == RTW_WLAN_CATEGORY_BACK) {/*  representing Block Ack */
-		if (!pmlmeinfo->HT_enable)
-			return _SUCCESS;
-
-		action = frame_body[1];
-		switch (action) {
-		case WLAN_ACTION_ADDBA_REQ: /* ADDBA request */
-
-			memcpy(&(pmlmeinfo->ADDBA_req), &(frame_body[2]), sizeof(struct ADDBA_request));
-			/* process_addba_req(padapter, (u8 *)&(pmlmeinfo->ADDBA_req), GetAddr3Ptr(pframe)); */
-			process_addba_req(padapter, (u8 *)&(pmlmeinfo->ADDBA_req), addr);
-
-			if (pmlmeinfo->accept_addba_req)
-				issue_action_BA(padapter, addr, WLAN_ACTION_ADDBA_RESP, 0);
-			else
-				issue_action_BA(padapter, addr, WLAN_ACTION_ADDBA_RESP, 37);/* reject ADDBA Req */
-
-			break;
-
-		case WLAN_ACTION_ADDBA_RESP: /* ADDBA response */
-			status = get_unaligned_le16(&frame_body[3]);
-			tid = ((frame_body[5] >> 2) & 0x7);
-
-			if (status == 0) {
-				/* successful */
-				psta->htpriv.agg_enable_bitmap |= BIT(tid);
-				psta->htpriv.candidate_tid_bitmap &= ~BIT(tid);
-			} else {
-				psta->htpriv.agg_enable_bitmap &= ~BIT(tid);
-			}
-
-			if (psta->state & WIFI_STA_ALIVE_CHK_STATE) {
-				psta->htpriv.agg_enable_bitmap &= ~BIT(tid);
-				psta->expire_to = pstapriv->expire_to;
-				psta->state ^= WIFI_STA_ALIVE_CHK_STATE;
-			}
-
-			break;
-
-		case WLAN_ACTION_DELBA: /* DELBA */
-			if ((frame_body[3] & BIT(3)) == 0) {
-				psta->htpriv.agg_enable_bitmap &=
-					~BIT((frame_body[3] >> 4) & 0xf);
-				psta->htpriv.candidate_tid_bitmap &=
-					~BIT((frame_body[3] >> 4) & 0xf);
-			} else if ((frame_body[3] & BIT(3)) == BIT(3)) {
-				tid = (frame_body[3] >> 4) & 0x0F;
-
-				preorder_ctrl =  &psta->recvreorder_ctrl[tid];
-				preorder_ctrl->enable = false;
-				preorder_ctrl->indicate_seq = 0xffff;
-			}
-			/* todo: how to notify the host while receiving DELETE BA */
-			break;
-
-		default:
-			break;
-		}
-	}
-	return _SUCCESS;
-}
-
-static s32 rtw_action_public_decache(union recv_frame *recv_frame, s32 token)
-{
-	struct adapter *adapter = recv_frame->u.hdr.adapter;
-	struct mlme_ext_priv *mlmeext = &(adapter->mlmeextpriv);
-	u8 *frame = recv_frame->u.hdr.rx_data;
-	u16 seq_ctrl = ((recv_frame->u.hdr.attrib.seq_num & 0xffff) << 4) |
-		(recv_frame->u.hdr.attrib.frag_num & 0xf);
-
-	if (GetRetry(frame)) {
-		if (token >= 0) {
-			if ((seq_ctrl == mlmeext->action_public_rxseq)
-				&& (token == mlmeext->action_public_dialog_token))
-				return _FAIL;
-		} else {
-			if (seq_ctrl == mlmeext->action_public_rxseq)
-				return _FAIL;
-		}
-	}
-
-	mlmeext->action_public_rxseq = seq_ctrl;
-
-	if (token >= 0)
-		mlmeext->action_public_dialog_token = token;
-
-	return _SUCCESS;
-}
-
-static unsigned int on_action_public_p2p(union recv_frame *precv_frame)
-{
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	u8 *frame_body;
-	u8 dialogToken = 0;
-
-	frame_body = (unsigned char *)(pframe + sizeof(struct ieee80211_hdr_3addr));
-
-	dialogToken = frame_body[7];
-
-	if (rtw_action_public_decache(precv_frame, dialogToken) == _FAIL)
-		return _FAIL;
-
-	return _SUCCESS;
-}
-
-static unsigned int on_action_public_vendor(union recv_frame *precv_frame)
-{
-	unsigned int ret = _FAIL;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr);
-
-	if (!memcmp(frame_body + 2, P2P_OUI, 4))
-		ret = on_action_public_p2p(precv_frame);
-
-	return ret;
-}
-
-static unsigned int on_action_public_default(union recv_frame *precv_frame, u8 action)
-{
-	unsigned int ret = _FAIL;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	uint frame_len = precv_frame->u.hdr.len;
-	u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr);
-	u8 token;
-	struct adapter *adapter = precv_frame->u.hdr.adapter;
-	char msg[64];
-
-	token = frame_body[2];
-
-	if (rtw_action_public_decache(precv_frame, token) == _FAIL)
-		goto exit;
-
-	scnprintf(msg, sizeof(msg), "%s(token:%u)", action_public_str(action), token);
-	rtw_cfg80211_rx_action(adapter, pframe, frame_len, msg);
-
-	ret = _SUCCESS;
-
-exit:
-	return ret;
-}
-
-unsigned int on_action_public(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	unsigned int ret = _FAIL;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr);
-	u8 category, action;
-
-	/* check RA matches or not */
-	if (memcmp(myid(&(padapter->eeprompriv)), GetAddr1Ptr(pframe), ETH_ALEN))
-		goto exit;
-
-	category = frame_body[0];
-	if (category != RTW_WLAN_CATEGORY_PUBLIC)
-		goto exit;
-
-	action = frame_body[1];
-	switch (action) {
-	case ACT_PUBLIC_VENDOR:
-		ret = on_action_public_vendor(precv_frame);
-		break;
-	default:
-		ret = on_action_public_default(precv_frame, action);
-		break;
-	}
-
-exit:
-	return ret;
-}
-
-unsigned int OnAction_ht(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr);
-	u8 category, action;
-
-	/* check RA matches or not */
-	if (memcmp(myid(&(padapter->eeprompriv)), GetAddr1Ptr(pframe), ETH_ALEN))
-		goto exit;
-
-	category = frame_body[0];
-	if (category != RTW_WLAN_CATEGORY_HT)
-		goto exit;
-
-	action = frame_body[1];
-	switch (action) {
-	case WLAN_HT_ACTION_COMPRESSED_BF:
-		break;
-	default:
-		break;
-	}
-
-exit:
-
-	return _SUCCESS;
-}
-
-unsigned int OnAction_sa_query(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-	unsigned short tid;
-
-	switch (pframe[WLAN_HDR_A3_LEN + 1]) {
-	case 0: /* SA Query req */
-		memcpy(&tid, &pframe[WLAN_HDR_A3_LEN + 2], sizeof(unsigned short));
-		issue_action_SA_Query(padapter, GetAddr2Ptr(pframe), 1, tid);
-		break;
-
-	case 1: /* SA Query rsp */
-		timer_delete_sync(&pmlmeext->sa_query_timer);
-		break;
-	default:
-		break;
-	}
-
-	return _SUCCESS;
-}
-
-unsigned int OnAction(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	int i;
-	unsigned char category;
-	struct action_handler *ptable;
-	unsigned char *frame_body;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-
-	frame_body = (unsigned char *)(pframe + sizeof(struct ieee80211_hdr_3addr));
-
-	category = frame_body[0];
-
-	for (i = 0; i < ARRAY_SIZE(OnAction_tbl); i++) {
-		ptable = &OnAction_tbl[i];
-
-		if (category == ptable->num)
-			ptable->func(padapter, precv_frame);
-	}
-
-	return _SUCCESS;
-}
-
-unsigned int DoReserved(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	return _SUCCESS;
-}
-
-static struct xmit_frame *_alloc_mgtxmitframe(struct xmit_priv *pxmitpriv, bool once)
-{
-	struct xmit_frame *pmgntframe;
-	struct xmit_buf *pxmitbuf;
-
-	if (once)
-		pmgntframe = rtw_alloc_xmitframe_once(pxmitpriv);
-	else
-		pmgntframe = rtw_alloc_xmitframe_ext(pxmitpriv);
-
-	if (!pmgntframe)
-		goto exit;
-
-	pxmitbuf = rtw_alloc_xmitbuf_ext(pxmitpriv);
-	if (!pxmitbuf) {
-		rtw_free_xmitframe(pxmitpriv, pmgntframe);
-		pmgntframe = NULL;
-		goto exit;
-	}
-
-	pmgntframe->frame_tag = MGNT_FRAMETAG;
-	pmgntframe->pxmitbuf = pxmitbuf;
-	pmgntframe->buf_addr = pxmitbuf->pbuf;
-	pxmitbuf->priv_data = pmgntframe;
-
-exit:
-	return pmgntframe;
-}
-
-inline struct xmit_frame *alloc_mgtxmitframe(struct xmit_priv *pxmitpriv)
-{
-	return _alloc_mgtxmitframe(pxmitpriv, false);
-}
-
-/* Following are some TX functions for WiFi MLME */
-
-void update_mgnt_tx_rate(struct adapter *padapter, u8 rate)
-{
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-
-	pmlmeext->tx_rate = rate;
-}
-
-void update_mgntframe_attrib(struct adapter *padapter, struct pkt_attrib *pattrib)
-{
-	u8 wireless_mode;
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-
-	/* memset((u8 *)(pattrib), 0, sizeof(struct pkt_attrib)); */
-
-	pattrib->hdrlen = 24;
-	pattrib->nr_frags = 1;
-	pattrib->priority = 7;
-	pattrib->mac_id = 0;
-	pattrib->qsel = 0x12;
-
-	pattrib->pktlen = 0;
-
-	if (pmlmeext->tx_rate == IEEE80211_CCK_RATE_1MB)
-		wireless_mode = WIRELESS_11B;
-	else
-		wireless_mode = WIRELESS_11G;
-	pattrib->raid =  rtw_get_mgntframe_raid(padapter, wireless_mode);
-	pattrib->rate = pmlmeext->tx_rate;
-
-	pattrib->encrypt = _NO_PRIVACY_;
-	pattrib->bswenc = false;
-
-	pattrib->qos_en = false;
-	pattrib->ht_en = false;
-	pattrib->bwmode = CHANNEL_WIDTH_20;
-	pattrib->ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
-	pattrib->sgi = false;
-
-	pattrib->seqnum = pmlmeext->mgnt_seq;
-
-	pattrib->retry_ctrl = true;
-
-	pattrib->mbssid = 0;
-}
-
-void update_mgntframe_attrib_addr(struct adapter *padapter, struct xmit_frame *pmgntframe)
-{
-	u8 *pframe;
-	struct pkt_attrib	*pattrib = &pmgntframe->attrib;
-
-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-
-	memcpy(pattrib->ra, GetAddr1Ptr(pframe), ETH_ALEN);
-	memcpy(pattrib->ta, GetAddr2Ptr(pframe), ETH_ALEN);
-}
-
-void dump_mgntframe(struct adapter *padapter, struct xmit_frame *pmgntframe)
-{
-	if (padapter->bSurpriseRemoved ||
-		padapter->driver_stopped) {
-		rtw_free_xmitbuf(&padapter->xmitpriv, pmgntframe->pxmitbuf);
-		rtw_free_xmitframe(&padapter->xmitpriv, pmgntframe);
-		return;
-	}
-
-	rtw_hal_mgnt_xmit(padapter, pmgntframe);
-}
-
-s32 dump_mgntframe_and_wait(struct adapter *padapter, struct xmit_frame *pmgntframe, int timeout_ms)
-{
-	s32 ret = _FAIL;
-	unsigned long irqL;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct xmit_buf *pxmitbuf = pmgntframe->pxmitbuf;
-	struct submit_ctx sctx;
-
-	if (padapter->bSurpriseRemoved ||
-		padapter->driver_stopped) {
-		rtw_free_xmitbuf(&padapter->xmitpriv, pmgntframe->pxmitbuf);
-		rtw_free_xmitframe(&padapter->xmitpriv, pmgntframe);
-		return ret;
-	}
-
-	rtw_sctx_init(&sctx, timeout_ms);
-	pxmitbuf->sctx = &sctx;
-
-	ret = rtw_hal_mgnt_xmit(padapter, pmgntframe);
-
-	if (ret == _SUCCESS)
-		ret = rtw_sctx_wait(&sctx);
-
-	spin_lock_irqsave(&pxmitpriv->lock_sctx, irqL);
-	pxmitbuf->sctx = NULL;
-	spin_unlock_irqrestore(&pxmitpriv->lock_sctx, irqL);
-
-	return ret;
-}
-
-s32 dump_mgntframe_and_wait_ack(struct adapter *padapter, struct xmit_frame *pmgntframe)
-{
-	static u8 seq_no;
-	s32 ret = _FAIL;
-	u32 timeout_ms = 500;/*   500ms */
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-	if (padapter->bSurpriseRemoved ||
-		padapter->driver_stopped) {
-		rtw_free_xmitbuf(&padapter->xmitpriv, pmgntframe->pxmitbuf);
-		rtw_free_xmitframe(&padapter->xmitpriv, pmgntframe);
-		return -1;
-	}
-
-	if (mutex_lock_interruptible(&pxmitpriv->ack_tx_mutex) == 0) {
-		pxmitpriv->ack_tx = true;
-		pxmitpriv->seq_no = seq_no++;
-		pmgntframe->ack_report = 1;
-		if (rtw_hal_mgnt_xmit(padapter, pmgntframe) == _SUCCESS)
-			ret = rtw_ack_tx_wait(pxmitpriv, timeout_ms);
-
-		pxmitpriv->ack_tx = false;
-		mutex_unlock(&pxmitpriv->ack_tx_mutex);
-	}
-
-	return ret;
-}
-
-static int update_hidden_ssid(u8 *ies, u32 ies_len, u8 hidden_ssid_mode)
-{
-	u8 *ssid_ie;
-	signed int ssid_len_ori;
-	int len_diff = 0;
-
-	ssid_ie = rtw_get_ie(ies,  WLAN_EID_SSID, &ssid_len_ori, ies_len);
-
-	if (ssid_ie && ssid_len_ori > 0) {
-		switch (hidden_ssid_mode) {
-		case 1:
-		{
-			u8 *next_ie = ssid_ie + 2 + ssid_len_ori;
-			u32 remain_len = 0;
-
-			remain_len = ies_len - (next_ie - ies);
-
-			ssid_ie[1] = 0;
-			memcpy(ssid_ie + 2, next_ie, remain_len);
-			len_diff -= ssid_len_ori;
-
-			break;
-		}
-		case 2:
-			memset(&ssid_ie[2], 0, ssid_len_ori);
-			break;
-		default:
-			break;
-	}
-	}
-
-	return len_diff;
-}
-
-void issue_beacon(struct adapter *padapter, int timeout_ms)
-{
-	struct xmit_frame	*pmgntframe;
-	struct pkt_attrib	*pattrib;
-	unsigned char *pframe;
-	struct ieee80211_hdr *pwlanhdr;
-	__le16 *fctrl;
-	unsigned int	rate_len;
-	struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
-	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex		*cur_network = &(pmlmeinfo->network);
-
-	pmgntframe = alloc_mgtxmitframe(pxmitpriv);
-	if (!pmgntframe)
-		return;
-
-	spin_lock_bh(&pmlmepriv->bcn_update_lock);
-
-	/* update attribute */
-	pattrib = &pmgntframe->attrib;
-	update_mgntframe_attrib(padapter, pattrib);
-	pattrib->qsel = 0x10;
-
-	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
-
-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	fctrl = &(pwlanhdr->frame_control);
-	*(fctrl) = 0;
-
-	eth_broadcast_addr(pwlanhdr->addr1);
-	memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN);
-	memcpy(pwlanhdr->addr3, get_my_bssid(cur_network), ETH_ALEN);
-
-	SetSeqNum(pwlanhdr, 0/*pmlmeext->mgnt_seq*/);
-	/* pmlmeext->mgnt_seq++; */
-	SetFrameSubType(pframe, WIFI_BEACON);
-
-	pframe += sizeof(struct ieee80211_hdr_3addr);
-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
-
-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) {
-		{
-			int len_diff;
-
-			memcpy(pframe, cur_network->ies, cur_network->ie_length);
-			len_diff = update_hidden_ssid(pframe + _BEACON_IE_OFFSET_,
-						      cur_network->ie_length - _BEACON_IE_OFFSET_,
-						      pmlmeinfo->hidden_ssid_mode);
-			pframe += (cur_network->ie_length + len_diff);
-			pattrib->pktlen += (cur_network->ie_length + len_diff);
-		}
-
-		{
-			u8 *wps_ie;
-			uint wps_ielen;
-			u8 sr = 0;
-
-			wps_ie = rtw_get_wps_ie(pmgntframe->buf_addr + TXDESC_OFFSET +
-						sizeof(struct ieee80211_hdr_3addr) +
-						_BEACON_IE_OFFSET_,
-						pattrib->pktlen -
-						sizeof(struct ieee80211_hdr_3addr) -
-						_BEACON_IE_OFFSET_, NULL, &wps_ielen);
-			if (wps_ie && wps_ielen > 0)
-				rtw_get_wps_attr_content(wps_ie,  wps_ielen, WPS_ATTR_SELECTED_REGISTRAR, (u8 *)(&sr), NULL);
-			if (sr != 0)
-				set_fwstate(pmlmepriv, WIFI_UNDER_WPS);
-			else
-				_clr_fwstate_(pmlmepriv, WIFI_UNDER_WPS);
-		}
-
-		goto _issue_bcn;
-	}
-
-	/* below for ad-hoc mode */
-
-	/* timestamp will be inserted by hardware */
-	pframe += 8;
-	pattrib->pktlen += 8;
-
-	/*  beacon interval: 2 bytes */
-
-	memcpy(pframe, (unsigned char *)(rtw_get_beacon_interval_from_ie(cur_network->ies)), 2);
-
-	pframe += 2;
-	pattrib->pktlen += 2;
-
-	/*  capability info: 2 bytes */
-
-	memcpy(pframe, (unsigned char *)(rtw_get_capability_from_ie(cur_network->ies)), 2);
-
-	pframe += 2;
-	pattrib->pktlen += 2;
-
-	/*  SSID */
-	pframe = rtw_set_ie(pframe, WLAN_EID_SSID, cur_network->ssid.ssid_length, cur_network->ssid.ssid, &pattrib->pktlen);
-
-	/*  supported rates... */
-	rate_len = rtw_get_rateset_len(cur_network->supported_rates);
-	pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, ((rate_len > 8) ? 8 : rate_len), cur_network->supported_rates, &pattrib->pktlen);
-
-	/*  DS parameter set */
-	pframe = rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, (unsigned char *)&(cur_network->configuration.ds_config), &pattrib->pktlen);
-
-	/* if ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) */
-	{
-		u8 erpinfo = 0;
-		u32 ATIMWindow;
-		/*  IBSS Parameter Set... */
-		/* ATIMWindow = cur->configuration.ATIMWindow; */
-		ATIMWindow = 0;
-		pframe = rtw_set_ie(pframe, WLAN_EID_IBSS_PARAMS, 2, (unsigned char *)(&ATIMWindow), &pattrib->pktlen);
-
-		/* ERP IE */
-		pframe = rtw_set_ie(pframe, WLAN_EID_ERP_INFO, 1, &erpinfo, &pattrib->pktlen);
-	}
-
-	/*  EXTERNDED SUPPORTED RATE */
-	if (rate_len > 8)
-		pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (rate_len - 8), (cur_network->supported_rates + 8), &pattrib->pktlen);
-
-	/* todo:HT for adhoc */
-
-_issue_bcn:
-
-	pmlmepriv->update_bcn = false;
-
-	spin_unlock_bh(&pmlmepriv->bcn_update_lock);
-
-	if ((pattrib->pktlen + TXDESC_SIZE) > 512) {
-		rtw_free_xmitbuf(pxmitpriv, pmgntframe->pxmitbuf);
-		rtw_free_xmitframe(pxmitpriv, pmgntframe);
-		return;
-	}
-
-	pattrib->last_txcmdsz = pattrib->pktlen;
-
-	if (timeout_ms > 0)
-		dump_mgntframe_and_wait(padapter, pmgntframe, timeout_ms);
-	else
-		dump_mgntframe(padapter, pmgntframe);
-}
-
-void issue_probersp(struct adapter *padapter, unsigned char *da, u8 is_valid_p2p_probereq)
-{
-	struct xmit_frame			*pmgntframe;
-	struct pkt_attrib			*pattrib;
-	unsigned char *pframe;
-	struct ieee80211_hdr	*pwlanhdr;
-	__le16 *fctrl;
-	unsigned char *mac, *bssid;
-	struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
-
-	u8 *pwps_ie;
-	uint wps_ielen;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex		*cur_network = &(pmlmeinfo->network);
-	unsigned int	rate_len;
-
-	if (!da)
-		return;
-
-	pmgntframe = alloc_mgtxmitframe(pxmitpriv);
-	if (!pmgntframe)
-		return;
-
-	/* update attribute */
-	pattrib = &pmgntframe->attrib;
-	update_mgntframe_attrib(padapter, pattrib);
-
-	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
-
-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	mac = myid(&(padapter->eeprompriv));
-	bssid = cur_network->mac_address;
-
-	fctrl = &(pwlanhdr->frame_control);
-	*(fctrl) = 0;
-	memcpy(pwlanhdr->addr1, da, ETH_ALEN);
-	memcpy(pwlanhdr->addr2, mac, ETH_ALEN);
-	memcpy(pwlanhdr->addr3, bssid, ETH_ALEN);
-
-	SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
-	pmlmeext->mgnt_seq++;
-	SetFrameSubType(fctrl, WIFI_PROBERSP);
-
-	pattrib->hdrlen = sizeof(struct ieee80211_hdr_3addr);
-	pattrib->pktlen = pattrib->hdrlen;
-	pframe += pattrib->hdrlen;
-
-	if (cur_network->ie_length > MAX_IE_SZ) {
-		rtw_free_xmitbuf(pxmitpriv, pmgntframe->pxmitbuf);
-		rtw_free_xmitframe(pxmitpriv, pmgntframe);
-		return;
-	}
-
-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) {
-		pwps_ie = rtw_get_wps_ie(cur_network->ies + _FIXED_IE_LENGTH_,
-					 cur_network->ie_length - _FIXED_IE_LENGTH_,
-					 NULL, &wps_ielen);
-
-		/* inerset & update wps_probe_resp_ie */
-		if (pmlmepriv->wps_probe_resp_ie && pwps_ie && wps_ielen > 0) {
-			uint wps_offset, remainder_ielen;
-			u8 *premainder_ie;
-
-			wps_offset = (uint)(pwps_ie - cur_network->ies);
-
-			premainder_ie = pwps_ie + wps_ielen;
-
-			remainder_ielen = cur_network->ie_length - wps_offset - wps_ielen;
-
-			memcpy(pframe, cur_network->ies, wps_offset);
-			pframe += wps_offset;
-			pattrib->pktlen += wps_offset;
-
-			wps_ielen = (uint)pmlmepriv->wps_probe_resp_ie[1];/* to get ie data len */
-			if ((wps_offset + wps_ielen + 2) <= MAX_IE_SZ) {
-				memcpy(pframe, pmlmepriv->wps_probe_resp_ie, wps_ielen + 2);
-				pframe += wps_ielen + 2;
-				pattrib->pktlen += wps_ielen + 2;
-			}
-
-			if ((wps_offset + wps_ielen + 2 + remainder_ielen) <= MAX_IE_SZ) {
-				memcpy(pframe, premainder_ie, remainder_ielen);
-				pframe += remainder_ielen;
-				pattrib->pktlen += remainder_ielen;
-			}
-		} else {
-			memcpy(pframe, cur_network->ies, cur_network->ie_length);
-			pframe += cur_network->ie_length;
-			pattrib->pktlen += cur_network->ie_length;
-		}
-
-		/* retrieve SSID IE from cur_network->ssid */
-		{
-			u8 *ssid_ie;
-			signed int ssid_ielen;
-			signed int ssid_ielen_diff;
-			u8 *buf;
-			u8 *ies = pmgntframe->buf_addr + TXDESC_OFFSET +
-				sizeof(struct ieee80211_hdr_3addr);
-
-			buf = kzalloc(MAX_IE_SZ, GFP_ATOMIC);
-			if (!buf) {
-				rtw_free_xmitbuf(pxmitpriv, pmgntframe->pxmitbuf);
-				rtw_free_xmitframe(pxmitpriv, pmgntframe);
-				return;
-			}
-
-			ssid_ie = rtw_get_ie(ies + _FIXED_IE_LENGTH_, WLAN_EID_SSID, &ssid_ielen,
-					     (pframe - ies) - _FIXED_IE_LENGTH_);
-
-			ssid_ielen_diff = cur_network->ssid.ssid_length - ssid_ielen;
-
-			if (ssid_ie &&  cur_network->ssid.ssid_length) {
-				uint remainder_ielen;
-				u8 *remainder_ie;
-
-				remainder_ie = ssid_ie + 2;
-				remainder_ielen = (pframe - remainder_ie);
-
-				if (remainder_ielen > MAX_IE_SZ) {
-					netdev_warn(padapter->pnetdev,
-						    FUNC_ADPT_FMT " remainder_ielen > MAX_IE_SZ\n",
-						    FUNC_ADPT_ARG(padapter));
-					remainder_ielen = MAX_IE_SZ;
-				}
-
-				memcpy(buf, remainder_ie, remainder_ielen);
-				memcpy(remainder_ie + ssid_ielen_diff, buf, remainder_ielen);
-				*(ssid_ie + 1) = cur_network->ssid.ssid_length;
-				memcpy(ssid_ie + 2, cur_network->ssid.ssid,
-				       cur_network->ssid.ssid_length);
-
-				pframe += ssid_ielen_diff;
-				pattrib->pktlen += ssid_ielen_diff;
-			}
-			kfree(buf);
-		}
-	} else {
-		/* timestamp will be inserted by hardware */
-		pframe += 8;
-		pattrib->pktlen += 8;
-
-		/*  beacon interval: 2 bytes */
-
-		memcpy(pframe, (unsigned char *)(rtw_get_beacon_interval_from_ie(cur_network->ies)), 2);
-
-		pframe += 2;
-		pattrib->pktlen += 2;
-
-		/*  capability info: 2 bytes */
-
-		memcpy(pframe, (unsigned char *)(rtw_get_capability_from_ie(cur_network->ies)), 2);
-
-		pframe += 2;
-		pattrib->pktlen += 2;
-
-		/* below for ad-hoc mode */
-
-		/*  SSID */
-		pframe = rtw_set_ie(pframe, WLAN_EID_SSID, cur_network->ssid.ssid_length, cur_network->ssid.ssid, &pattrib->pktlen);
-
-		/*  supported rates... */
-		rate_len = rtw_get_rateset_len(cur_network->supported_rates);
-		pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, ((rate_len > 8) ? 8 : rate_len), cur_network->supported_rates, &pattrib->pktlen);
-
-		/*  DS parameter set */
-		pframe = rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, (unsigned char *)&(cur_network->configuration.ds_config), &pattrib->pktlen);
-
-		if ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) {
-			u8 erpinfo = 0;
-			u32 ATIMWindow;
-			/*  IBSS Parameter Set... */
-			/* ATIMWindow = cur->configuration.ATIMWindow; */
-			ATIMWindow = 0;
-			pframe = rtw_set_ie(pframe, WLAN_EID_IBSS_PARAMS, 2, (unsigned char *)(&ATIMWindow), &pattrib->pktlen);
-
-			/* ERP IE */
-			pframe = rtw_set_ie(pframe, WLAN_EID_ERP_INFO, 1, &erpinfo, &pattrib->pktlen);
-		}
-
-		/*  EXTERNDED SUPPORTED RATE */
-		if (rate_len > 8)
-			pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (rate_len - 8), (cur_network->supported_rates + 8), &pattrib->pktlen);
-
-		/* todo:HT for adhoc */
-	}
-
-	pattrib->last_txcmdsz = pattrib->pktlen;
-
-	dump_mgntframe(padapter, pmgntframe);
-}
-
-static int _issue_probereq(struct adapter *padapter,
-			   struct ndis_802_11_ssid *pssid,
-			   u8 *da, u8 ch, bool append_wps, bool wait_ack)
-{
-	int ret = _FAIL;
-	struct xmit_frame		*pmgntframe;
-	struct pkt_attrib		*pattrib;
-	unsigned char *pframe;
-	struct ieee80211_hdr	*pwlanhdr;
-	__le16 *fctrl;
-	unsigned char *mac;
-	unsigned char bssrate[NumRates];
-	struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
-	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-	int	bssrate_len = 0;
-
-	pmgntframe = alloc_mgtxmitframe(pxmitpriv);
-	if (!pmgntframe)
-		goto exit;
-
-	/* update attribute */
-	pattrib = &pmgntframe->attrib;
-	update_mgntframe_attrib(padapter, pattrib);
-
-	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
-
-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	mac = myid(&(padapter->eeprompriv));
-
-	fctrl = &(pwlanhdr->frame_control);
-	*(fctrl) = 0;
-
-	if (da) {
-		/* unicast probe request frame */
-		memcpy(pwlanhdr->addr1, da, ETH_ALEN);
-		memcpy(pwlanhdr->addr3, da, ETH_ALEN);
-	} else {
-		/* broadcast probe request frame */
-		eth_broadcast_addr(pwlanhdr->addr1);
-		eth_broadcast_addr(pwlanhdr->addr3);
-	}
-
-	memcpy(pwlanhdr->addr2, mac, ETH_ALEN);
-
-	SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
-	pmlmeext->mgnt_seq++;
-	SetFrameSubType(pframe, WIFI_PROBEREQ);
-
-	pframe += sizeof(struct ieee80211_hdr_3addr);
-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
-
-	if (pssid)
-		pframe = rtw_set_ie(pframe, WLAN_EID_SSID, pssid->ssid_length, pssid->ssid, &(pattrib->pktlen));
-	else
-		pframe = rtw_set_ie(pframe, WLAN_EID_SSID, 0, NULL, &(pattrib->pktlen));
-
-	get_rate_set(padapter, bssrate, &bssrate_len);
-
-	if (bssrate_len > 8) {
-		pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, 8, bssrate, &(pattrib->pktlen));
-		pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (bssrate_len - 8), (bssrate + 8), &(pattrib->pktlen));
-	} else {
-		pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, bssrate_len, bssrate, &(pattrib->pktlen));
-	}
-
-	if (ch)
-		pframe = rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, &ch, &pattrib->pktlen);
-
-	if (append_wps) {
-		/* add wps_ie for wps2.0 */
-		if (pmlmepriv->wps_probe_req_ie_len > 0 && pmlmepriv->wps_probe_req_ie) {
-			memcpy(pframe, pmlmepriv->wps_probe_req_ie, pmlmepriv->wps_probe_req_ie_len);
-			pframe += pmlmepriv->wps_probe_req_ie_len;
-			pattrib->pktlen += pmlmepriv->wps_probe_req_ie_len;
-		}
-	}
-
-	pattrib->last_txcmdsz = pattrib->pktlen;
-
-	if (wait_ack) {
-		ret = dump_mgntframe_and_wait_ack(padapter, pmgntframe);
-	} else {
-		dump_mgntframe(padapter, pmgntframe);
-		ret = _SUCCESS;
-	}
-
-exit:
-	return ret;
-}
-
-inline void issue_probereq(struct adapter *padapter, struct ndis_802_11_ssid *pssid, u8 *da)
-{
-	_issue_probereq(padapter, pssid, da, 0, 1, false);
-}
-
-int issue_probereq_ex(struct adapter *padapter, struct ndis_802_11_ssid *pssid, u8 *da, u8 ch, bool append_wps,
-	int try_cnt, int wait_ms)
-{
-	int ret;
-	int i = 0;
-
-	do {
-		ret = _issue_probereq(padapter, pssid, da, ch, append_wps,
-				      wait_ms > 0);
-
-		i++;
-
-		if (padapter->driver_stopped || padapter->bSurpriseRemoved)
-			break;
-
-		if (i < try_cnt && wait_ms > 0 && ret == _FAIL)
-			msleep(wait_ms);
-
-	} while ((i < try_cnt) && ((ret == _FAIL) || (wait_ms == 0)));
-
-	if (ret != _FAIL) {
-		ret = _SUCCESS;
-		#ifndef DBG_XMIT_ACK
-		goto exit;
-		#endif
-	}
-
-exit:
-	return ret;
-}
-
-/*  if psta == NULL, indicate we are station(client) now... */
-void issue_auth(struct adapter *padapter, struct sta_info *psta, unsigned short status)
-{
-	struct xmit_frame			*pmgntframe;
-	struct pkt_attrib			*pattrib;
-	unsigned char *pframe;
-	struct ieee80211_hdr	*pwlanhdr;
-	__le16 *fctrl;
-	unsigned int					val32;
-	unsigned short				val16;
-	int use_shared_key = 0;
-	struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	__le16 le_tmp;
-
-	pmgntframe = alloc_mgtxmitframe(pxmitpriv);
-	if (!pmgntframe)
-		return;
-
-	/* update attribute */
-	pattrib = &pmgntframe->attrib;
-	update_mgntframe_attrib(padapter, pattrib);
-
-	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
-
-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	fctrl = &(pwlanhdr->frame_control);
-	*(fctrl) = 0;
-
-	SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
-	pmlmeext->mgnt_seq++;
-	SetFrameSubType(pframe, WIFI_AUTH);
-
-	pframe += sizeof(struct ieee80211_hdr_3addr);
-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
-
-	if (psta) { /*  for AP mode */
-		memcpy(pwlanhdr->addr1, psta->hwaddr, ETH_ALEN);
-		memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN);
-		memcpy(pwlanhdr->addr3, myid(&(padapter->eeprompriv)), ETH_ALEN);
-
-		/*  setting auth algo number */
-		val16 = (u16)psta->authalg;
-
-		if (status != WLAN_STATUS_SUCCESS)
-			val16 = 0;
-
-		if (val16)
-			use_shared_key = 1;
-
-		le_tmp = cpu_to_le16(val16);
-
-		pframe = rtw_set_fixed_ie(pframe, _AUTH_ALGM_NUM_, (unsigned char *)&le_tmp, &(pattrib->pktlen));
-
-		/*  setting auth seq number */
-		val16 = (u16)psta->auth_seq;
-		le_tmp = cpu_to_le16(val16);
-		pframe = rtw_set_fixed_ie(pframe, _AUTH_SEQ_NUM_, (unsigned char *)&le_tmp, &(pattrib->pktlen));
-
-		/*  setting status code... */
-		val16 = status;
-		le_tmp = cpu_to_le16(val16);
-		pframe = rtw_set_fixed_ie(pframe, _STATUS_CODE_, (unsigned char *)&le_tmp, &(pattrib->pktlen));
-
-		/*  added challenging text... */
-		if ((psta->auth_seq == 2) && (psta->state & WIFI_FW_AUTH_STATE) && (use_shared_key == 1))
-			pframe = rtw_set_ie(pframe, WLAN_EID_CHALLENGE, 128, psta->chg_txt, &(pattrib->pktlen));
-
-	} else {
-		memcpy(pwlanhdr->addr1, get_my_bssid(&pmlmeinfo->network), ETH_ALEN);
-		memcpy(pwlanhdr->addr2, myid(&padapter->eeprompriv), ETH_ALEN);
-		memcpy(pwlanhdr->addr3, get_my_bssid(&pmlmeinfo->network), ETH_ALEN);
-
-		/*  setting auth algo number */
-		val16 = (pmlmeinfo->auth_algo == dot11_auth_algrthm_shared) ? 1 : 0;/*  0:OPEN System, 1:Shared key */
-		if (val16)
-			use_shared_key = 1;
-		le_tmp = cpu_to_le16(val16);
-
-		/* setting IV for auth seq #3 */
-		if ((pmlmeinfo->auth_seq == 3) && (pmlmeinfo->state & WIFI_FW_AUTH_STATE) && (use_shared_key == 1)) {
-			__le32 le_tmp32;
-
-			val32 = ((pmlmeinfo->iv++) | (pmlmeinfo->key_index << 30));
-			le_tmp32 = cpu_to_le32(val32);
-			pframe = rtw_set_fixed_ie(pframe, 4, (unsigned char *)&le_tmp32, &(pattrib->pktlen));
-
-			pattrib->iv_len = 4;
-		}
-
-		pframe = rtw_set_fixed_ie(pframe, _AUTH_ALGM_NUM_, (unsigned char *)&le_tmp, &(pattrib->pktlen));
-
-		/*  setting auth seq number */
-		le_tmp = cpu_to_le16(pmlmeinfo->auth_seq);
-		pframe = rtw_set_fixed_ie(pframe, _AUTH_SEQ_NUM_, (unsigned char *)&le_tmp, &(pattrib->pktlen));
-
-		/*  setting status code... */
-		le_tmp = cpu_to_le16(status);
-		pframe = rtw_set_fixed_ie(pframe, _STATUS_CODE_, (unsigned char *)&le_tmp, &(pattrib->pktlen));
-
-		/*  then checking to see if sending challenging text... */
-		if ((pmlmeinfo->auth_seq == 3) && (pmlmeinfo->state & WIFI_FW_AUTH_STATE) && (use_shared_key == 1)) {
-			pframe = rtw_set_ie(pframe, WLAN_EID_CHALLENGE, 128, pmlmeinfo->chg_txt, &(pattrib->pktlen));
-
-			SetPrivacy(fctrl);
-
-			pattrib->hdrlen = sizeof(struct ieee80211_hdr_3addr);
-
-			pattrib->encrypt = _WEP40_;
-
-			pattrib->icv_len = 4;
-
-			pattrib->pktlen += pattrib->icv_len;
-		}
-	}
-
-	pattrib->last_txcmdsz = pattrib->pktlen;
-
-	rtw_wep_encrypt(padapter, (u8 *)pmgntframe);
-	dump_mgntframe(padapter, pmgntframe);
-}
-
-void issue_asocrsp(struct adapter *padapter, unsigned short status, struct sta_info *pstat, int pkt_type)
-{
-	struct xmit_frame	*pmgntframe;
-	struct ieee80211_hdr	*pwlanhdr;
-	struct pkt_attrib *pattrib;
-	unsigned char *pbuf, *pframe;
-	unsigned short val;
-	__le16 *fctrl;
-	struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
-	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex *pnetwork = &(pmlmeinfo->network);
-	u8 *ie = pnetwork->ies;
-	__le16 lestatus, le_tmp;
-
-	pmgntframe = alloc_mgtxmitframe(pxmitpriv);
-	if (!pmgntframe)
-		return;
-
-	/* update attribute */
-	pattrib = &pmgntframe->attrib;
-	update_mgntframe_attrib(padapter, pattrib);
-
-	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
-
-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	fctrl = &(pwlanhdr->frame_control);
-	*(fctrl) = 0;
-
-	memcpy(GetAddr1Ptr(pwlanhdr), pstat->hwaddr, ETH_ALEN);
-	memcpy(GetAddr2Ptr(pwlanhdr), myid(&(padapter->eeprompriv)), ETH_ALEN);
-	memcpy(GetAddr3Ptr(pwlanhdr), get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN);
-
-	SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
-	pmlmeext->mgnt_seq++;
-	if ((pkt_type == WIFI_ASSOCRSP) || (pkt_type == WIFI_REASSOCRSP)) {
-		SetFrameSubType(pwlanhdr, pkt_type);
-	} else {
-		rtw_free_xmitbuf(pxmitpriv, pmgntframe->pxmitbuf);
-		rtw_free_xmitframe(pxmitpriv, pmgntframe);
-		return;
-	}
-
-	pattrib->hdrlen = sizeof(struct ieee80211_hdr_3addr);
-	pattrib->pktlen += pattrib->hdrlen;
-	pframe += pattrib->hdrlen;
-
-	/* capability */
-	val = *(unsigned short *)rtw_get_capability_from_ie(ie);
-
-	pframe = rtw_set_fixed_ie(pframe, _CAPABILITY_, (unsigned char *)&val, &(pattrib->pktlen));
-
-	lestatus = cpu_to_le16(status);
-	pframe = rtw_set_fixed_ie(pframe, _STATUS_CODE_, (unsigned char *)&lestatus, &(pattrib->pktlen));
-
-	le_tmp = cpu_to_le16(pstat->aid | BIT(14) | BIT(15));
-	pframe = rtw_set_fixed_ie(pframe, _ASOC_ID_, (unsigned char *)&le_tmp, &(pattrib->pktlen));
-
-	if (pstat->bssratelen <= 8) {
-		pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, pstat->bssratelen, pstat->bssrateset, &(pattrib->pktlen));
-	} else {
-		pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, 8, pstat->bssrateset, &(pattrib->pktlen));
-		pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (pstat->bssratelen - 8),
-				    pstat->bssrateset + 8, &pattrib->pktlen);
-	}
-
-	if ((pstat->flags & WLAN_STA_HT) && (pmlmepriv->htpriv.ht_option)) {
-		uint ie_len = 0;
-
-		/* FILL HT CAP INFO IE */
-		/* p = hostapd_eid_ht_capabilities_info(hapd, p); */
-		pbuf = rtw_get_ie(ie + _BEACON_IE_OFFSET_, WLAN_EID_HT_CAPABILITY, &ie_len, (pnetwork->ie_length - _BEACON_IE_OFFSET_));
-		if (pbuf && ie_len > 0) {
-			memcpy(pframe, pbuf, ie_len + 2);
-			pframe += (ie_len + 2);
-			pattrib->pktlen += (ie_len + 2);
-		}
-
-		/* FILL HT ADD INFO IE */
-		/* p = hostapd_eid_ht_operation(hapd, p); */
-		pbuf = rtw_get_ie(ie + _BEACON_IE_OFFSET_, WLAN_EID_HT_OPERATION, &ie_len, (pnetwork->ie_length - _BEACON_IE_OFFSET_));
-		if (pbuf && ie_len > 0) {
-			memcpy(pframe, pbuf, ie_len + 2);
-			pframe += (ie_len + 2);
-			pattrib->pktlen += (ie_len + 2);
-		}
-	}
-
-	/* FILL WMM IE */
-	if ((pstat->flags & WLAN_STA_WME) && (pmlmepriv->qospriv.qos_option)) {
-		uint ie_len = 0;
-		unsigned char WMM_PARA_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x01, 0x01};
-
-		for (pbuf = ie + _BEACON_IE_OFFSET_; ; pbuf += (ie_len + 2)) {
-			pbuf = rtw_get_ie(pbuf, WLAN_EID_VENDOR_SPECIFIC, &ie_len, (pnetwork->ie_length - _BEACON_IE_OFFSET_ - (ie_len + 2)));
-			if (pbuf && !memcmp(pbuf + 2, WMM_PARA_IE, 6)) {
-				memcpy(pframe, pbuf, ie_len + 2);
-				pframe += (ie_len + 2);
-				pattrib->pktlen += (ie_len + 2);
-
-				break;
-			}
-
-			if (!pbuf || ie_len == 0)
-				break;
-		}
-	}
-
-	if (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK)
-		pframe = rtw_set_ie(pframe, WLAN_EID_VENDOR_SPECIFIC, 6, REALTEK_96B_IE, &(pattrib->pktlen));
-
-	/* add WPS IE ie for wps 2.0 */
-	if (pmlmepriv->wps_assoc_resp_ie && pmlmepriv->wps_assoc_resp_ie_len > 0) {
-		memcpy(pframe, pmlmepriv->wps_assoc_resp_ie, pmlmepriv->wps_assoc_resp_ie_len);
-
-		pframe += pmlmepriv->wps_assoc_resp_ie_len;
-		pattrib->pktlen += pmlmepriv->wps_assoc_resp_ie_len;
-	}
-
-	pattrib->last_txcmdsz = pattrib->pktlen;
-
-	dump_mgntframe(padapter, pmgntframe);
-}
-
-void issue_assocreq(struct adapter *padapter)
-{
-	int ret = _FAIL;
-	struct xmit_frame				*pmgntframe;
-	struct pkt_attrib				*pattrib;
-	unsigned char *pframe;
-	struct ieee80211_hdr			*pwlanhdr;
-	__le16 *fctrl;
-	__le16 val16;
-	unsigned int					i, j, index = 0;
-	unsigned char bssrate[NumRates], sta_bssrate[NumRates];
-	struct ndis_80211_var_ie *pIE;
-	struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
-	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	int	bssrate_len = 0, sta_bssrate_len = 0;
-	u8 vs_ie_length = 0;
-
-	pmgntframe = alloc_mgtxmitframe(pxmitpriv);
-	if (!pmgntframe)
-		goto exit;
-
-	/* update attribute */
-	pattrib = &pmgntframe->attrib;
-	update_mgntframe_attrib(padapter, pattrib);
-
-	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
-
-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	fctrl = &(pwlanhdr->frame_control);
-	*(fctrl) = 0;
-	memcpy(pwlanhdr->addr1, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN);
-	memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN);
-	memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN);
-
-	SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
-	pmlmeext->mgnt_seq++;
-	SetFrameSubType(pframe, WIFI_ASSOCREQ);
-
-	pframe += sizeof(struct ieee80211_hdr_3addr);
-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
-
-	/* caps */
-	memcpy(pframe, rtw_get_capability_from_ie(pmlmeinfo->network.ies), 2);
-
-	pframe += 2;
-	pattrib->pktlen += 2;
-
-	/* listen interval */
-	/* todo: listen interval for power saving */
-	val16 = cpu_to_le16(3);
-	memcpy(pframe, (unsigned char *)&val16, 2);
-	pframe += 2;
-	pattrib->pktlen += 2;
-
-	/* SSID */
-	pframe = rtw_set_ie(pframe, WLAN_EID_SSID,  pmlmeinfo->network.ssid.ssid_length, pmlmeinfo->network.ssid.ssid, &(pattrib->pktlen));
-
-	/* supported rate & extended supported rate */
-
-	/*  Check if the AP's supported rates are also supported by STA. */
-	get_rate_set(padapter, sta_bssrate, &sta_bssrate_len);
-
-	if (pmlmeext->cur_channel == 14) /*  for JAPAN, channel 14 can only uses B Mode(CCK) */
-		sta_bssrate_len = 4;
-
-	/* for (i = 0; i < sta_bssrate_len; i++) { */
-	/*  */
-
-	for (i = 0; i < NDIS_802_11_LENGTH_RATES_EX; i++) {
-		if (pmlmeinfo->network.supported_rates[i] == 0)
-			break;
-	}
-
-	for (i = 0; i < NDIS_802_11_LENGTH_RATES_EX; i++) {
-		if (pmlmeinfo->network.supported_rates[i] == 0)
-			break;
-
-		/*  Check if the AP's supported rates are also supported by STA. */
-		for (j = 0; j < sta_bssrate_len; j++) {
-			 /*  Avoid the proprietary data rate (22Mbps) of Handlink WSG-4000 AP */
-			if ((pmlmeinfo->network.supported_rates[i] | IEEE80211_BASIC_RATE_MASK)
-					== (sta_bssrate[j] | IEEE80211_BASIC_RATE_MASK))
-				break;
-		}
-
-		if (j != sta_bssrate_len)
-			/*  the rate is supported by STA */
-			bssrate[index++] = pmlmeinfo->network.supported_rates[i];
-	}
-
-	bssrate_len = index;
-
-	if (bssrate_len == 0) {
-		rtw_free_xmitbuf(pxmitpriv, pmgntframe->pxmitbuf);
-		rtw_free_xmitframe(pxmitpriv, pmgntframe);
-		goto exit; /* don't connect to AP if no joint supported rate */
-	}
-
-	if (bssrate_len > 8) {
-		pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, 8, bssrate, &(pattrib->pktlen));
-		pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (bssrate_len - 8), (bssrate + 8), &(pattrib->pktlen));
-	} else
-		pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, bssrate_len, bssrate, &(pattrib->pktlen));
-
-	/* vendor specific IE, such as WPA, WMM, WPS */
-	for (i = sizeof(struct ndis_802_11_fix_ie); i < pmlmeinfo->network.ie_length;) {
-		if (i + sizeof(*pIE) > pmlmeinfo->network.ie_length)
-			break;
-		pIE = (struct ndis_80211_var_ie *)(pmlmeinfo->network.ies + i);
-		if (i + sizeof(*pIE) + pIE->length > pmlmeinfo->network.ie_length)
-			break;
-
-		switch (pIE->element_id) {
-		case WLAN_EID_VENDOR_SPECIFIC:
-			if ((!memcmp(pIE->data, RTW_WPA_OUI, 4)) ||
-					(!memcmp(pIE->data, WMM_OUI, 4)) ||
-					(!memcmp(pIE->data, WPS_OUI, 4))) {
-				vs_ie_length = pIE->length;
-				if ((!padapter->registrypriv.wifi_spec) && (!memcmp(pIE->data, WPS_OUI, 4))) {
-					/* Commented by Kurt 20110629
-					 * In some older APs, WPS handshake
-					 * would be fail if we append vendor
-					 * extensions information to AP
-					 */
-
-					vs_ie_length = 14;
-				}
-
-				pframe = rtw_set_ie(pframe, WLAN_EID_VENDOR_SPECIFIC, vs_ie_length, pIE->data, &(pattrib->pktlen));
-			}
-			break;
-
-		case WLAN_EID_RSN:
-			pframe = rtw_set_ie(pframe, WLAN_EID_RSN, pIE->length, pIE->data, &(pattrib->pktlen));
-			break;
-		case WLAN_EID_HT_CAPABILITY:
-			if (padapter->mlmepriv.htpriv.ht_option) {
-				if (!(is_ap_in_tkip(padapter))) {
-					memcpy(&(pmlmeinfo->HT_caps), pIE->data, sizeof(struct HT_caps_element));
-					pframe = rtw_set_ie(pframe, WLAN_EID_HT_CAPABILITY, pIE->length, (u8 *)(&(pmlmeinfo->HT_caps)), &(pattrib->pktlen));
-				}
-			}
-			break;
-
-		case WLAN_EID_EXT_CAPABILITY:
-			if (padapter->mlmepriv.htpriv.ht_option)
-				pframe = rtw_set_ie(pframe, WLAN_EID_EXT_CAPABILITY, pIE->length, pIE->data, &(pattrib->pktlen));
-			break;
-		default:
-			break;
-		}
-
-		i += (pIE->length + 2);
-	}
-
-	if (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK)
-		pframe = rtw_set_ie(pframe, WLAN_EID_VENDOR_SPECIFIC, 6, REALTEK_96B_IE, &(pattrib->pktlen));
-
-	pattrib->last_txcmdsz = pattrib->pktlen;
-	dump_mgntframe(padapter, pmgntframe);
-
-	ret = _SUCCESS;
-
-exit:
-	if (ret == _SUCCESS)
-		rtw_buf_update(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len, (u8 *)pwlanhdr, pattrib->pktlen);
-	else
-		rtw_buf_free(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len);
-}
-
-/* when wait_ack is true, this function should be called at process context */
-static int _issue_nulldata(struct adapter *padapter, unsigned char *da,
-			   unsigned int power_mode, bool wait_ack)
-{
-	int ret = _FAIL;
-	struct xmit_frame			*pmgntframe;
-	struct pkt_attrib			*pattrib;
-	unsigned char *pframe;
-	struct ieee80211_hdr	*pwlanhdr;
-	__le16 *fctrl;
-	struct xmit_priv *pxmitpriv;
-	struct mlme_ext_priv *pmlmeext;
-	struct mlme_ext_info *pmlmeinfo;
-
-	if (!padapter)
-		goto exit;
-
-	pxmitpriv = &(padapter->xmitpriv);
-	pmlmeext = &(padapter->mlmeextpriv);
-	pmlmeinfo = &pmlmeext->mlmext_info;
-
-	pmgntframe = alloc_mgtxmitframe(pxmitpriv);
-	if (!pmgntframe)
-		goto exit;
-
-	/* update attribute */
-	pattrib = &pmgntframe->attrib;
-	update_mgntframe_attrib(padapter, pattrib);
-	pattrib->retry_ctrl = false;
-
-	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
-
-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	fctrl = &(pwlanhdr->frame_control);
-	*(fctrl) = 0;
-
-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE)
-		SetFrDs(fctrl);
-	else if ((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE)
-		SetToDs(fctrl);
-
-	if (power_mode)
-		SetPwrMgt(fctrl);
-
-	memcpy(pwlanhdr->addr1, da, ETH_ALEN);
-	memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN);
-	memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN);
-
-	SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
-	pmlmeext->mgnt_seq++;
-	SetFrameSubType(pframe, WIFI_DATA_NULL);
-
-	pframe += sizeof(struct ieee80211_hdr_3addr);
-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
-
-	pattrib->last_txcmdsz = pattrib->pktlen;
-
-	if (wait_ack) {
-		ret = dump_mgntframe_and_wait_ack(padapter, pmgntframe);
-	} else {
-		dump_mgntframe(padapter, pmgntframe);
-		ret = _SUCCESS;
-	}
-
-exit:
-	return ret;
-}
-
-/*
- * [IMPORTANT] Don't call this function in interrupt context
- *
- * When wait_ms > 0, this function should be called at process context
- * da == NULL for station mode
- */
-int issue_nulldata(struct adapter *padapter, unsigned char *da, unsigned int power_mode, int try_cnt, int wait_ms)
-{
-	int ret;
-	int i = 0;
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct sta_info *psta;
-
-	/* da == NULL, assume it's null data for sta to ap*/
-	if (!da)
-		da = get_my_bssid(&(pmlmeinfo->network));
-
-	psta = rtw_get_stainfo(&padapter->stapriv, da);
-	if (psta) {
-		if (power_mode)
-			rtw_hal_macid_sleep(padapter, psta->mac_id);
-		else
-			rtw_hal_macid_wakeup(padapter, psta->mac_id);
-	} else {
-		WARN_ON(1);
-	}
-
-	do {
-		ret = _issue_nulldata(padapter, da, power_mode, wait_ms > 0);
-
-		i++;
-
-		if (padapter->driver_stopped || padapter->bSurpriseRemoved)
-			break;
-
-		if (i < try_cnt && wait_ms > 0 && ret == _FAIL)
-			msleep(wait_ms);
-
-	} while ((i < try_cnt) && ((ret == _FAIL) || (wait_ms == 0)));
-
-	if (ret != _FAIL) {
-		ret = _SUCCESS;
-		#ifndef DBG_XMIT_ACK
-		goto exit;
-		#endif
-	}
-
-exit:
-	return ret;
-}
-
-/*
- * [IMPORTANT] This function run in interrupt context
- *
- * The null data packet would be sent without power bit,
- * and not guarantee success.
- */
-s32 issue_nulldata_in_interrupt(struct adapter *padapter, u8 *da)
-{
-	struct mlme_ext_priv *pmlmeext;
-	struct mlme_ext_info *pmlmeinfo;
-
-	pmlmeext = &padapter->mlmeextpriv;
-	pmlmeinfo = &pmlmeext->mlmext_info;
-
-	/* da == NULL, assume it's null data for sta to ap*/
-	if (!da)
-		da = get_my_bssid(&(pmlmeinfo->network));
-
-	return _issue_nulldata(padapter, da, 0, false);
-}
-
-/* when wait_ack is true, this function should be called at process context */
-static int _issue_qos_nulldata(struct adapter *padapter, unsigned char *da,
-			       u16 tid, bool wait_ack)
-{
-	int ret = _FAIL;
-	struct xmit_frame			*pmgntframe;
-	struct pkt_attrib			*pattrib;
-	unsigned char *pframe;
-	struct ieee80211_hdr	*pwlanhdr;
-	__le16 *fctrl;
-	u16 *qc;
-	struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	pmgntframe = alloc_mgtxmitframe(pxmitpriv);
-	if (!pmgntframe)
-		goto exit;
-
-	/* update attribute */
-	pattrib = &pmgntframe->attrib;
-	update_mgntframe_attrib(padapter, pattrib);
-
-	pattrib->hdrlen += 2;
-	pattrib->qos_en = true;
-	pattrib->eosp = 1;
-	pattrib->ack_policy = 0;
-	pattrib->mdata = 0;
-
-	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
-
-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	fctrl = &(pwlanhdr->frame_control);
-	*(fctrl) = 0;
-
-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE)
-		SetFrDs(fctrl);
-	else if ((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE)
-		SetToDs(fctrl);
-
-	qc = (unsigned short *)(pframe + pattrib->hdrlen - 2);
-
-	SetPriority(qc, tid);
-
-	SetEOSP(qc, pattrib->eosp);
-
-	SetAckpolicy(qc, pattrib->ack_policy);
-
-	memcpy(pwlanhdr->addr1, da, ETH_ALEN);
-	memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN);
-	memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN);
-
-	SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
-	pmlmeext->mgnt_seq++;
-	SetFrameSubType(pframe, WIFI_QOS_DATA_NULL);
-
-	pframe += sizeof(struct ieee80211_qos_hdr);
-	pattrib->pktlen = sizeof(struct ieee80211_qos_hdr);
-
-	pattrib->last_txcmdsz = pattrib->pktlen;
-
-	if (wait_ack) {
-		ret = dump_mgntframe_and_wait_ack(padapter, pmgntframe);
-	} else {
-		dump_mgntframe(padapter, pmgntframe);
-		ret = _SUCCESS;
-	}
-
-exit:
-	return ret;
-}
-
-/* when wait_ms >0 , this function should be called at process context */
-/* da == NULL for station mode */
-int issue_qos_nulldata(struct adapter *padapter, unsigned char *da, u16 tid, int try_cnt, int wait_ms)
-{
-	int ret;
-	int i = 0;
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	/* da == NULL, assume it's null data for sta to ap*/
-	if (!da)
-		da = get_my_bssid(&(pmlmeinfo->network));
-
-	do {
-		ret = _issue_qos_nulldata(padapter, da, tid, wait_ms > 0);
-
-		i++;
-
-		if (padapter->driver_stopped || padapter->bSurpriseRemoved)
-			break;
-
-		if (i < try_cnt && wait_ms > 0 && ret == _FAIL)
-			msleep(wait_ms);
-
-	} while ((i < try_cnt) && ((ret == _FAIL) || (wait_ms == 0)));
-
-	if (ret != _FAIL) {
-		ret = _SUCCESS;
-		#ifndef DBG_XMIT_ACK
-		goto exit;
-		#endif
-	}
-
-exit:
-	return ret;
-}
-
-static int _issue_deauth(struct adapter *padapter, unsigned char *da,
-			 unsigned short reason, bool wait_ack)
-{
-	struct xmit_frame			*pmgntframe;
-	struct pkt_attrib			*pattrib;
-	unsigned char *pframe;
-	struct ieee80211_hdr	*pwlanhdr;
-	__le16 *fctrl;
-	struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	int ret = _FAIL;
-	__le16 le_tmp;
-
-	pmgntframe = alloc_mgtxmitframe(pxmitpriv);
-	if (!pmgntframe)
-		goto exit;
-
-	/* update attribute */
-	pattrib = &pmgntframe->attrib;
-	update_mgntframe_attrib(padapter, pattrib);
-	pattrib->retry_ctrl = false;
-
-	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
-
-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	fctrl = &(pwlanhdr->frame_control);
-	*(fctrl) = 0;
-
-	memcpy(pwlanhdr->addr1, da, ETH_ALEN);
-	memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN);
-	memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN);
-
-	SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
-	pmlmeext->mgnt_seq++;
-	SetFrameSubType(pframe, WIFI_DEAUTH);
-
-	pframe += sizeof(struct ieee80211_hdr_3addr);
-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
-
-	le_tmp = cpu_to_le16(reason);
-	pframe = rtw_set_fixed_ie(pframe, _RSON_CODE_, (unsigned char *)&le_tmp, &(pattrib->pktlen));
-
-	pattrib->last_txcmdsz = pattrib->pktlen;
-
-	if (wait_ack) {
-		ret = dump_mgntframe_and_wait_ack(padapter, pmgntframe);
-	} else {
-		dump_mgntframe(padapter, pmgntframe);
-		ret = _SUCCESS;
-	}
-
-exit:
-	return ret;
-}
-
-int issue_deauth(struct adapter *padapter, unsigned char *da, unsigned short reason)
-{
-	return _issue_deauth(padapter, da, reason, false);
-}
-
-int issue_deauth_ex(struct adapter *padapter, u8 *da, unsigned short reason, int try_cnt,
-	int wait_ms)
-{
-	int ret;
-	int i = 0;
-
-	do {
-		ret = _issue_deauth(padapter, da, reason, wait_ms > 0);
-
-		i++;
-
-		if (padapter->driver_stopped || padapter->bSurpriseRemoved)
-			break;
-
-		if (i < try_cnt && wait_ms > 0 && ret == _FAIL)
-			mdelay(wait_ms);
-
-	} while ((i < try_cnt) && ((ret == _FAIL) || (wait_ms == 0)));
-
-	if (ret != _FAIL) {
-		ret = _SUCCESS;
-		#ifndef DBG_XMIT_ACK
-		goto exit;
-		#endif
-	}
-
-exit:
-	return ret;
-}
-
-void issue_action_SA_Query(struct adapter *padapter, unsigned char *raddr, unsigned char action, unsigned short tid)
-{
-	u8 category = RTW_WLAN_CATEGORY_SA_QUERY;
-	struct xmit_frame		*pmgntframe;
-	struct pkt_attrib		*pattrib;
-	u8 *pframe;
-	struct ieee80211_hdr	*pwlanhdr;
-	__le16 *fctrl;
-	struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	__le16 le_tmp;
-
-	pmgntframe = alloc_mgtxmitframe(pxmitpriv);
-	if (!pmgntframe)
-		return;
-
-	/* update attribute */
-	pattrib = &pmgntframe->attrib;
-	update_mgntframe_attrib(padapter, pattrib);
-
-	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
-
-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	fctrl = &(pwlanhdr->frame_control);
-	*(fctrl) = 0;
-
-	if (raddr)
-		memcpy(pwlanhdr->addr1, raddr, ETH_ALEN);
-	else
-		memcpy(pwlanhdr->addr1, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN);
-	memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN);
-	memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN);
-
-	SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
-	pmlmeext->mgnt_seq++;
-	SetFrameSubType(pframe, WIFI_ACTION);
-
-	pframe += sizeof(struct ieee80211_hdr_3addr);
-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
-
-	pframe = rtw_set_fixed_ie(pframe, 1, &category, &pattrib->pktlen);
-	pframe = rtw_set_fixed_ie(pframe, 1, &action, &pattrib->pktlen);
-
-	switch (action) {
-	case 0: /* SA Query req */
-		pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)&pmlmeext->sa_query_seq, &pattrib->pktlen);
-		pmlmeext->sa_query_seq++;
-		/* send sa query request to AP, AP should reply sa query response in 1 second */
-		set_sa_query_timer(pmlmeext, 1000);
-		break;
-
-	case 1: /* SA Query rsp */
-		le_tmp = cpu_to_le16(tid);
-		pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)&le_tmp, &pattrib->pktlen);
-		break;
-	default:
-		break;
-	}
-
-	pattrib->last_txcmdsz = pattrib->pktlen;
-
-	dump_mgntframe(padapter, pmgntframe);
-}
-
-void issue_action_BA(struct adapter *padapter, unsigned char *raddr, unsigned char action, unsigned short status)
-{
-	u8 category = RTW_WLAN_CATEGORY_BACK;
-	u16 start_seq;
-	u16 BA_para_set;
-	u16 reason_code;
-	u16 BA_timeout_value;
-	u16 BA_starting_seqctrl = 0;
-	enum ieee80211_max_ampdu_length_exp max_rx_ampdu_factor;
-	struct xmit_frame		*pmgntframe;
-	struct pkt_attrib		*pattrib;
-	u8 *pframe;
-	struct ieee80211_hdr	*pwlanhdr;
-	__le16 *fctrl;
-	struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct sta_info *psta;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct registry_priv *pregpriv = &padapter->registrypriv;
-	__le16 le_tmp;
-
-	pmgntframe = alloc_mgtxmitframe(pxmitpriv);
-	if (!pmgntframe)
-		return;
-
-	/* update attribute */
-	pattrib = &pmgntframe->attrib;
-	update_mgntframe_attrib(padapter, pattrib);
-
-	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
-
-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	fctrl = &(pwlanhdr->frame_control);
-	*(fctrl) = 0;
-
-	/* memcpy(pwlanhdr->addr1, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); */
-	memcpy(pwlanhdr->addr1, raddr, ETH_ALEN);
-	memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN);
-	memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN);
-
-	SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
-	pmlmeext->mgnt_seq++;
-	SetFrameSubType(pframe, WIFI_ACTION);
-
-	pframe += sizeof(struct ieee80211_hdr_3addr);
-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
-
-	pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen));
-	pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen));
-
-	if (category == 3) {
-		switch (action) {
-		case 0: /* ADDBA req */
-			do {
-				pmlmeinfo->dialogToken++;
-			} while (pmlmeinfo->dialogToken == 0);
-			pframe = rtw_set_fixed_ie(pframe, 1, &(pmlmeinfo->dialogToken), &(pattrib->pktlen));
-
-			if (hal_btcoex_IsBTCoexCtrlAMPDUSize(padapter)) {
-				/*  A-MSDU NOT Supported */
-				BA_para_set = 0;
-				/*  immediate Block Ack */
-				BA_para_set |= BIT(1) & IEEE80211_ADDBA_PARAM_POLICY_MASK;
-				/*  TID */
-				BA_para_set |= (status << 2) & IEEE80211_ADDBA_PARAM_TID_MASK;
-				/*  max buffer size is 8 MSDU */
-				BA_para_set |= (8 << 6) & IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK;
-			} else {
-				BA_para_set = (0x1002 | ((status & 0xf) << 2)); /* immediate ack & 64 buffer size */
-			}
-			le_tmp = cpu_to_le16(BA_para_set);
-			pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(le_tmp)), &(pattrib->pktlen));
-
-			BA_timeout_value = 5000;/*  5ms */
-			le_tmp = cpu_to_le16(BA_timeout_value);
-			pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(le_tmp)), &(pattrib->pktlen));
-
-			/* if ((psta = rtw_get_stainfo(pstapriv, pmlmeinfo->network.mac_address)) != NULL) */
-			psta = rtw_get_stainfo(pstapriv, raddr);
-			if (psta) {
-				start_seq = (psta->sta_xmitpriv.txseq_tid[status & 0x07] % 4096u) + 1;
-
-				psta->BA_starting_seqctrl[status & 0x07] = start_seq;
-
-				BA_starting_seqctrl = start_seq << 4;
-			}
-
-			le_tmp = cpu_to_le16(BA_starting_seqctrl);
-			pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(le_tmp)), &(pattrib->pktlen));
-			break;
-
-		case 1: /* ADDBA rsp */
-			pframe = rtw_set_fixed_ie(pframe, 1, &(pmlmeinfo->ADDBA_req.dialog_token), &(pattrib->pktlen));
-			pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&status), &(pattrib->pktlen));
-			if (padapter->driver_rx_ampdu_factor != 0xFF)
-				max_rx_ampdu_factor =
-				  (enum ieee80211_max_ampdu_length_exp)padapter->driver_rx_ampdu_factor;
-			else
-				rtw_hal_get_def_var(padapter,
-						    HW_VAR_MAX_RX_AMPDU_FACTOR, &max_rx_ampdu_factor);
-
-			if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_64K)
-				BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x1000); /* 64 buffer size */
-			else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_32K)
-				BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x0800); /* 32 buffer size */
-			else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_16K)
-				BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x0400); /* 16 buffer size */
-			else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_8K)
-				BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x0200); /* 8 buffer size */
-			else
-				BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x1000); /* 64 buffer size */
-
-			if (hal_btcoex_IsBTCoexCtrlAMPDUSize(padapter) &&
-			    padapter->driver_rx_ampdu_factor == 0xFF) {
-				/*  max buffer size is 8 MSDU */
-				BA_para_set &= ~IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK;
-				BA_para_set |= (8 << 6) & IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK;
-			}
-
-			if (pregpriv->ampdu_amsdu == 0)/* disabled */
-				le_tmp = cpu_to_le16(BA_para_set & ~BIT(0));
-			else if (pregpriv->ampdu_amsdu == 1)/* enabled */
-				le_tmp = cpu_to_le16(BA_para_set | BIT(0));
-			else /* auto */
-				le_tmp = cpu_to_le16(BA_para_set);
-
-			pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(le_tmp)), &(pattrib->pktlen));
-			pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(pmlmeinfo->ADDBA_req.BA_timeout_value)), &(pattrib->pktlen));
-			break;
-		case 2:/* DELBA */
-			BA_para_set = (status & 0x1F) << 3;
-			le_tmp = cpu_to_le16(BA_para_set);
-			pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(le_tmp)), &(pattrib->pktlen));
-
-			reason_code = 37;
-			le_tmp = cpu_to_le16(reason_code);
-			pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(le_tmp)), &(pattrib->pktlen));
-			break;
-		default:
-			break;
-		}
-	}
-
-	pattrib->last_txcmdsz = pattrib->pktlen;
-
-	dump_mgntframe(padapter, pmgntframe);
-}
-
-static void issue_action_BSSCoexistPacket(struct adapter *padapter)
-{
-	struct list_head		*plist, *phead;
-	unsigned char category, action;
-	struct xmit_frame			*pmgntframe;
-	struct pkt_attrib			*pattrib;
-	unsigned char *pframe;
-	struct ieee80211_hdr	*pwlanhdr;
-	__le16 *fctrl;
-	struct	wlan_network	*pnetwork = NULL;
-	struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct __queue		*queue	= &(pmlmepriv->scanned_queue);
-	u8 InfoContent[16] = {0};
-	u8 ICS[8][15];
-
-	if ((pmlmepriv->num_FortyMHzIntolerant == 0) || (pmlmepriv->num_sta_no_ht == 0))
-		return;
-
-	if (true == pmlmeinfo->bwmode_updated)
-		return;
-
-	category = RTW_WLAN_CATEGORY_PUBLIC;
-	action = ACT_PUBLIC_BSSCOEXIST;
-
-	pmgntframe = alloc_mgtxmitframe(pxmitpriv);
-	if (!pmgntframe)
-		return;
-
-	/* update attribute */
-	pattrib = &pmgntframe->attrib;
-	update_mgntframe_attrib(padapter, pattrib);
-
-	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
-
-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	fctrl = &(pwlanhdr->frame_control);
-	*(fctrl) = 0;
-
-	memcpy(pwlanhdr->addr1, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN);
-	memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN);
-	memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN);
-
-	SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
-	pmlmeext->mgnt_seq++;
-	SetFrameSubType(pframe, WIFI_ACTION);
-
-	pframe += sizeof(struct ieee80211_hdr_3addr);
-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
-
-	pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen));
-	pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen));
-
-	/*  */
-	if (pmlmepriv->num_FortyMHzIntolerant > 0) {
-		u8 iedata = 0;
-
-		iedata |= BIT(2);/* 20 MHz BSS Width Request */
-
-		pframe = rtw_set_ie(pframe, WLAN_EID_BSS_COEX_2040,  1, &iedata, &(pattrib->pktlen));
-	}
-
-	/*  */
-	memset(ICS, 0, sizeof(ICS));
-	if (pmlmepriv->num_sta_no_ht > 0) {
-		int i;
-
-		spin_lock_bh(&(pmlmepriv->scanned_queue.lock));
-
-		phead = get_list_head(queue);
-		plist = get_next(phead);
-
-		while (1) {
-			int len;
-			u8 *p;
-			struct wlan_bssid_ex *pbss_network;
-
-			if (phead == plist)
-				break;
-
-			pnetwork = container_of(plist, struct wlan_network, list);
-
-			plist = get_next(plist);
-
-			pbss_network = (struct wlan_bssid_ex *)&pnetwork->network;
-
-			p = rtw_get_ie(pbss_network->ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_CAPABILITY, &len, pbss_network->ie_length - _FIXED_IE_LENGTH_);
-			if (!p || len == 0) {/* non-HT */
-
-				if (pbss_network->configuration.ds_config <= 0)
-					continue;
-
-				ICS[0][pbss_network->configuration.ds_config] = 1;
-
-				if (ICS[0][0] == 0)
-					ICS[0][0] = 1;
-			}
-		}
-
-		spin_unlock_bh(&(pmlmepriv->scanned_queue.lock));
-
-		for (i = 0; i < 8; i++) {
-			int j, k = 0;
-
-			if (ICS[i][0] != 1)
-				continue;
-
-			InfoContent[k] = i;
-			/* SET_BSS_INTOLERANT_ELE_REG_CLASS(InfoContent, i); */
-			k++;
-
-			for (j = 1; j <= 14; j++) {
-				if (ICS[i][j] != 1)
-					continue;
-
-				if (k < 16) {
-					InfoContent[k] = j; /* channel number */
-					/* SET_BSS_INTOLERANT_ELE_CHANNEL(InfoContent+k, j); */
-					k++;
-				}
-			}
-
-			pframe = rtw_set_ie(pframe, WLAN_EID_BSS_INTOLERANT_CHL_REPORT, k, InfoContent, &(pattrib->pktlen));
-		}
-	}
-
-	pattrib->last_txcmdsz = pattrib->pktlen;
-
-	dump_mgntframe(padapter, pmgntframe);
-}
-
-unsigned int send_delba(struct adapter *padapter, u8 initiator, u8 *addr)
-{
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct sta_info *psta = NULL;
-	/* struct recv_reorder_ctrl *preorder_ctrl; */
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	u16 tid;
-
-	if ((pmlmeinfo->state & 0x03) != WIFI_FW_AP_STATE)
-		if (!(pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS))
-			return _SUCCESS;
-
-	psta = rtw_get_stainfo(pstapriv, addr);
-	if (!psta)
-		return _SUCCESS;
-
-	if (initiator == 0) {/*  recipient */
-		for (tid = 0; tid < MAXTID; tid++) {
-			if (psta->recvreorder_ctrl[tid].enable) {
-				issue_action_BA(padapter, addr, WLAN_ACTION_DELBA,
-						(((tid << 1) | initiator) & 0x1F));
-				psta->recvreorder_ctrl[tid].enable = false;
-				psta->recvreorder_ctrl[tid].indicate_seq = 0xffff;
-			}
-		}
-	} else if (initiator == 1) {/*  originator */
-		for (tid = 0; tid < MAXTID; tid++) {
-			if (psta->htpriv.agg_enable_bitmap & BIT(tid)) {
-				issue_action_BA(padapter, addr, WLAN_ACTION_DELBA,
-						(((tid << 1) | initiator) & 0x1F));
-				psta->htpriv.agg_enable_bitmap &= ~BIT(tid);
-				psta->htpriv.candidate_tid_bitmap &= ~BIT(tid);
-			}
-		}
-	}
-
-	return _SUCCESS;
-}
-
-unsigned int send_beacon(struct adapter *padapter)
-{
-	u8 bxmitok = false;
-	int	issue = 0;
-	int poll = 0;
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_BCN_VALID, NULL);
-	rtw_hal_set_hwreg(padapter, HW_VAR_DL_BCN_SEL, NULL);
-	do {
-		issue_beacon(padapter, 100);
-		issue++;
-		do {
-			cond_resched();
-			rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, (u8 *)(&bxmitok));
-			poll++;
-		} while ((poll % 10) != 0 && !bxmitok &&
-			 !padapter->bSurpriseRemoved &&
-			 !padapter->driver_stopped);
-
-	} while (false == bxmitok && issue < 100 && !padapter->bSurpriseRemoved &&
-		 !padapter->driver_stopped);
-
-	if (padapter->bSurpriseRemoved || padapter->driver_stopped)
-		return _FAIL;
-
-	if (!bxmitok)
-		return _FAIL;
-	else
-		return _SUCCESS;
-}
-
-/* Following are some utility functions for WiFi MLME */
-
-void site_survey(struct adapter *padapter)
-{
-	unsigned char survey_channel = 0, val8;
-	enum rt_scan_type	scan_type = SCAN_PASSIVE;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	u32 initialgain = 0;
-	u32 channel_scan_time_ms = 0;
-
-	{
-		struct rtw_ieee80211_channel *ch;
-
-		if (pmlmeext->sitesurvey_res.channel_idx < pmlmeext->sitesurvey_res.ch_num) {
-			ch = &pmlmeext->sitesurvey_res.ch[pmlmeext->sitesurvey_res.channel_idx];
-			survey_channel = ch->hw_value;
-			scan_type = (ch->flags & RTW_IEEE80211_CHAN_PASSIVE_SCAN) ?
-				SCAN_PASSIVE : SCAN_ACTIVE;
-		}
-	}
-
-	if (survey_channel != 0) {
-		if (pmlmeext->sitesurvey_res.channel_idx == 0)
-			set_channel_bwmode(padapter, survey_channel,
-					   HAL_PRIME_CHNL_OFFSET_DONT_CARE, CHANNEL_WIDTH_20);
-		else
-			r8723bs_select_channel(padapter, survey_channel);
-
-		if (scan_type == SCAN_ACTIVE) { /* obey the channel plan setting... */
-			{
-				int i;
-
-				for (i = 0; i < RTW_SSID_SCAN_AMOUNT; i++) {
-					if (!pmlmeext->sitesurvey_res.ssid[i].ssid_length)
-						continue;
-
-					/* IOT issue, When wifi_spec is not set, send one probe req without WPS IE. */
-					if (padapter->registrypriv.wifi_spec)
-						issue_probereq(padapter, &(pmlmeext->sitesurvey_res.ssid[i]), NULL);
-					else
-						issue_probereq_ex(padapter, &(pmlmeext->sitesurvey_res.ssid[i]), NULL, 0, 0, 0, 0);
-
-					issue_probereq(padapter, &(pmlmeext->sitesurvey_res.ssid[i]), NULL);
-				}
-
-				if (pmlmeext->sitesurvey_res.scan_mode == SCAN_ACTIVE) {
-					/* IOT issue, When wifi_spec is not set, send one probe req without WPS IE. */
-					if (padapter->registrypriv.wifi_spec)
-						issue_probereq(padapter, NULL, NULL);
-					else
-						issue_probereq_ex(padapter, NULL, NULL, 0, 0, 0, 0);
-					issue_probereq(padapter, NULL, NULL);
-				}
-			}
-		}
-
-		channel_scan_time_ms = pmlmeext->chan_scan_time;
-
-		set_survey_timer(pmlmeext, channel_scan_time_ms);
-	} else {
-		/* channel number is 0 or this channel is not valid. */
-
-		{
-			pmlmeext->sitesurvey_res.state = SCAN_COMPLETE;
-
-			/* switch back to the original channel */
-			/* SelectChannel(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset); */
-
-			set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode);
-
-			/* flush 4-AC Queue after site_survey */
-			/* val8 = 0; */
-			/* rtw_hal_set_hwreg(padapter, HW_VAR_TXPAUSE, (u8 *)(&val8)); */
-
-			/* config MSR */
-			set_msr(padapter, (pmlmeinfo->state & 0x3));
-
-			initialgain = 0xff; /* restore RX GAIN */
-			rtw_hal_set_hwreg(padapter, HW_VAR_INITIAL_GAIN, (u8 *)(&initialgain));
-			/* turn on dynamic functions */
-			restore_dm_func_flag(padapter);
-			/* switch_dm_func(padapter, DYNAMIC_ALL_FUNC_ENABLE, true); */
-
-			if (is_client_associated_to_ap(padapter))
-				issue_nulldata(padapter, NULL, 0, 3, 500);
-
-			val8 = 0; /* survey done */
-			rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8));
-
-			report_surveydone_event(padapter);
-
-			pmlmeext->chan_scan_time = SURVEY_TO;
-			pmlmeext->sitesurvey_res.state = SCAN_DISABLE;
-
-			issue_action_BSSCoexistPacket(padapter);
-			issue_action_BSSCoexistPacket(padapter);
-			issue_action_BSSCoexistPacket(padapter);
-		}
-	}
-}
-
-/* collect bss info from Beacon and Probe request/response frames. */
-u8 collect_bss_info(struct adapter *padapter, union recv_frame *precv_frame, struct wlan_bssid_ex *bssid)
-{
-	int	i;
-	u32 len;
-	u8 *p;
-	u16 val16, subtype;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	u32 packet_len = precv_frame->u.hdr.len;
-	u8 ie_offset;
-	struct registry_priv *pregistrypriv = &padapter->registrypriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	__le32 le32_tmp;
-
-	len = packet_len - sizeof(struct ieee80211_hdr_3addr);
-
-	if (len > MAX_IE_SZ)
-		return _FAIL;
-
-	memset(bssid, 0, sizeof(struct wlan_bssid_ex));
-
-	subtype = GetFrameSubType(pframe);
-
-	if (subtype == WIFI_BEACON) {
-		bssid->reserved[0] = 1;
-		ie_offset = _BEACON_IE_OFFSET_;
-	} else {
-		/*  FIXME : more type */
-		if (subtype == WIFI_PROBERSP) {
-			ie_offset = _PROBERSP_IE_OFFSET_;
-			bssid->reserved[0] = 3;
-		} else if (subtype == WIFI_PROBEREQ) {
-			ie_offset = _PROBEREQ_IE_OFFSET_;
-			bssid->reserved[0] = 2;
-		} else {
-			bssid->reserved[0] = 0;
-			ie_offset = _FIXED_IE_LENGTH_;
-		}
-	}
-
-	bssid->length = sizeof(struct wlan_bssid_ex) - MAX_IE_SZ + len;
-
-	/* below is to copy the information element */
-	bssid->ie_length = len;
-	memcpy(bssid->ies, (pframe + sizeof(struct ieee80211_hdr_3addr)), bssid->ie_length);
-
-	/* get the signal strength */
-	bssid->rssi = precv_frame->u.hdr.attrib.phy_info.RecvSignalPower; /*  in dBM.raw data */
-	bssid->phy_info.signal_quality = precv_frame->u.hdr.attrib.phy_info.SignalQuality;/* in percentage */
-	bssid->phy_info.signal_strength = precv_frame->u.hdr.attrib.phy_info.SignalStrength;/* in percentage */
-
-	/*  checking SSID */
-	p = rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_SSID, &len, bssid->ie_length - ie_offset);
-	if (!p)
-		return _FAIL;
-
-	if (*(p + 1)) {
-		if (len > NDIS_802_11_LENGTH_SSID)
-			return _FAIL;
-
-		memcpy(bssid->ssid.ssid, (p + 2), *(p + 1));
-		bssid->ssid.ssid_length = *(p + 1);
-	} else
-		bssid->ssid.ssid_length = 0;
-
-	memset(bssid->supported_rates, 0, NDIS_802_11_LENGTH_RATES_EX);
-
-	/* checking rate info... */
-	i = 0;
-	p = rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_SUPP_RATES, &len, bssid->ie_length - ie_offset);
-	if (p) {
-		if (len > NDIS_802_11_LENGTH_RATES_EX)
-			return _FAIL;
-
-		memcpy(bssid->supported_rates, (p + 2), len);
-		i = len;
-	}
-
-	p = rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_EXT_SUPP_RATES, &len, bssid->ie_length - ie_offset);
-	if (p) {
-		if (len > (NDIS_802_11_LENGTH_RATES_EX - i))
-			return _FAIL;
-
-		memcpy(bssid->supported_rates + i, (p + 2), len);
-	}
-
-	if (bssid->ie_length < 12)
-		return _FAIL;
-
-	/*  Checking for ds_config */
-	p = rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_DS_PARAMS, &len, bssid->ie_length - ie_offset);
-
-	bssid->configuration.ds_config = 0;
-	bssid->configuration.length = 0;
-
-	if (p) {
-		bssid->configuration.ds_config = *(p + 2);
-	} else {
-		/*  In 5G, some ap do not have DSSET IE */
-		/*  checking HT info for channel */
-		p = rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_HT_OPERATION, &len, bssid->ie_length - ie_offset);
-		if (p) {
-			struct HT_info_element *HT_info = (struct HT_info_element *)(p + 2);
-
-			bssid->configuration.ds_config = HT_info->primary_channel;
-		} else { /*  use current channel */
-			bssid->configuration.ds_config = rtw_get_oper_ch(padapter);
-		}
-	}
-
-	memcpy(&le32_tmp, rtw_get_beacon_interval_from_ie(bssid->ies), 2);
-	bssid->configuration.beacon_period = le32_to_cpu(le32_tmp);
-
-	val16 = rtw_get_capability((struct wlan_bssid_ex *)bssid);
-
-	if (val16 & BIT(0)) {
-		bssid->infrastructure_mode = NL80211_IFTYPE_STATION;
-		memcpy(bssid->mac_address, GetAddr2Ptr(pframe), ETH_ALEN);
-	} else {
-		bssid->infrastructure_mode = NL80211_IFTYPE_ADHOC;
-		memcpy(bssid->mac_address, GetAddr3Ptr(pframe), ETH_ALEN);
-	}
-
-	if (val16 & BIT(4))
-		bssid->privacy = 1;
-	else
-		bssid->privacy = 0;
-
-	bssid->configuration.atim_window = 0;
-
-	/* 20/40 BSS Coexistence check */
-	if ((pregistrypriv->wifi_spec == 1) && (false == pmlmeinfo->bwmode_updated)) {
-		struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-		p = rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_HT_CAPABILITY, &len, bssid->ie_length - ie_offset);
-		if (p && len > 0) {
-			struct HT_caps_element	*pHT_caps;
-
-			pHT_caps = (struct HT_caps_element	*)(p + 2);
-
-			if (le16_to_cpu(pHT_caps->u.HT_cap_element.HT_caps_info) & BIT(14))
-				pmlmepriv->num_FortyMHzIntolerant++;
-		} else
-			pmlmepriv->num_sta_no_ht++;
-	}
-
-	/*  mark bss info receiving from nearby channel as signal_quality 101 */
-	if (bssid->configuration.ds_config != rtw_get_oper_ch(padapter))
-		bssid->phy_info.signal_quality = 101;
-
-	return _SUCCESS;
-}
-
-void start_create_ibss(struct adapter *padapter)
-{
-	unsigned short	caps;
-	u8 val8;
-	u8 join_type;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex		*pnetwork = (struct wlan_bssid_ex *)(&(pmlmeinfo->network));
-
-	pmlmeext->cur_channel = (u8)pnetwork->configuration.ds_config;
-	pmlmeinfo->bcn_interval = get_beacon_interval(pnetwork);
-
-	/* update wireless mode */
-	update_wireless_mode(padapter);
-
-	/* update capability */
-	caps = rtw_get_capability((struct wlan_bssid_ex *)pnetwork);
-	update_capinfo(padapter, caps);
-	if (caps & WLAN_CAPABILITY_IBSS) {/* adhoc master */
-		val8 = 0xcf;
-		rtw_hal_set_hwreg(padapter, HW_VAR_SEC_CFG, (u8 *)(&val8));
-
-		/* switch channel */
-		/* SelectChannel(padapter, pmlmeext->cur_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE); */
-		set_channel_bwmode(padapter, pmlmeext->cur_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, CHANNEL_WIDTH_20);
-
-		beacon_timing_control(padapter);
-
-		/* set msr to WIFI_FW_ADHOC_STATE */
-		pmlmeinfo->state = WIFI_FW_ADHOC_STATE;
-		set_msr(padapter, (pmlmeinfo->state & 0x3));
-
-		/* issue beacon */
-		if (send_beacon(padapter) == _FAIL) {
-			report_join_res(padapter, -1);
-			pmlmeinfo->state = WIFI_FW_NULL_STATE;
-		} else {
-			rtw_hal_set_hwreg(padapter, HW_VAR_BSSID, padapter->registrypriv.dev_network.mac_address);
-			join_type = 0;
-			rtw_hal_set_hwreg(padapter, HW_VAR_MLME_JOIN, (u8 *)(&join_type));
-
-			report_join_res(padapter, 1);
-			pmlmeinfo->state |= WIFI_FW_ASSOC_SUCCESS;
-			rtw_indicate_connect(padapter);
-		}
-	} else {
-		return;
-	}
-	/* update bc/mc sta_info */
-	update_bmc_sta(padapter);
-}
-
-void start_clnt_join(struct adapter *padapter)
-{
-	unsigned short	caps;
-	u8 val8;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex		*pnetwork = (struct wlan_bssid_ex *)(&(pmlmeinfo->network));
-	int beacon_timeout;
-
-	/* update wireless mode */
-	update_wireless_mode(padapter);
-
-	/* update capability */
-	caps = rtw_get_capability((struct wlan_bssid_ex *)pnetwork);
-	update_capinfo(padapter, caps);
-	if (caps & WLAN_CAPABILITY_ESS) {
-		set_msr(padapter, WIFI_FW_STATION_STATE);
-
-		val8 = (pmlmeinfo->auth_algo == dot11_auth_algrthm_8021x) ? 0xcc : 0xcf;
-
-		rtw_hal_set_hwreg(padapter, HW_VAR_SEC_CFG, (u8 *)(&val8));
-
-		/* Because of AP's not receiving deauth before
-		 * AP may: 1)not response auth or 2)deauth us after link is complete
-		 * issue deauth before issuing auth to deal with the situation
-		 *
-		 * Commented by Albert 2012/07/21
-		 * For the Win8 P2P connection, it will be hard to have a successful connection if this Wi-Fi doesn't connect to it.
-		 */
-		{
-				/* To avoid connecting to AP fail during resume process, change retry count from 5 to 1 */
-				issue_deauth_ex(padapter, pnetwork->mac_address, WLAN_REASON_DEAUTH_LEAVING, 1, 100);
-		}
-
-		/* here wait for receiving the beacon to start auth */
-		/* and enable a timer */
-		beacon_timeout = decide_wait_for_beacon_timeout(pmlmeinfo->bcn_interval);
-		set_link_timer(pmlmeext, beacon_timeout);
-		_set_timer(&padapter->mlmepriv.assoc_timer,
-			(REAUTH_TO * REAUTH_LIMIT) + (REASSOC_TO * REASSOC_LIMIT) + beacon_timeout);
-
-		pmlmeinfo->state = WIFI_FW_AUTH_NULL | WIFI_FW_STATION_STATE;
-	} else if (caps & WLAN_CAPABILITY_IBSS) { /* adhoc client */
-		set_msr(padapter, WIFI_FW_ADHOC_STATE);
-
-		val8 = 0xcf;
-		rtw_hal_set_hwreg(padapter, HW_VAR_SEC_CFG, (u8 *)(&val8));
-
-		beacon_timing_control(padapter);
-
-		pmlmeinfo->state = WIFI_FW_ADHOC_STATE;
-
-		report_join_res(padapter, 1);
-	} else {
-		return;
-	}
-}
-
-void start_clnt_auth(struct adapter *padapter)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	timer_delete_sync(&pmlmeext->link_timer);
-
-	pmlmeinfo->state &= (~WIFI_FW_AUTH_NULL);
-	pmlmeinfo->state |= WIFI_FW_AUTH_STATE;
-
-	pmlmeinfo->auth_seq = 1;
-	pmlmeinfo->reauth_count = 0;
-	pmlmeinfo->reassoc_count = 0;
-	pmlmeinfo->link_count = 0;
-	pmlmeext->retry = 0;
-
-	netdev_dbg(padapter->pnetdev, "start auth\n");
-	issue_auth(padapter, NULL, 0);
-
-	set_link_timer(pmlmeext, REAUTH_TO);
-}
-
-void start_clnt_assoc(struct adapter *padapter)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	timer_delete_sync(&pmlmeext->link_timer);
-
-	pmlmeinfo->state &= (~(WIFI_FW_AUTH_NULL | WIFI_FW_AUTH_STATE));
-	pmlmeinfo->state |= (WIFI_FW_AUTH_SUCCESS | WIFI_FW_ASSOC_STATE);
-
-	issue_assocreq(padapter);
-
-	set_link_timer(pmlmeext, REASSOC_TO);
-}
-
-unsigned int receive_disconnect(struct adapter *padapter, unsigned char *MacAddr, unsigned short reason)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	/* check A3 */
-	if (!(!memcmp(MacAddr, get_my_bssid(&pmlmeinfo->network), ETH_ALEN)))
-		return _SUCCESS;
-
-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE) {
-		if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) {
-			pmlmeinfo->state = WIFI_FW_NULL_STATE;
-			report_del_sta_event(padapter, MacAddr, reason);
-
-		} else if (pmlmeinfo->state & WIFI_FW_LINKING_STATE) {
-			pmlmeinfo->state = WIFI_FW_NULL_STATE;
-			report_join_res(padapter, -2);
-		}
-	}
-
-	return _SUCCESS;
-}
-
-static void process_80211d(struct adapter *padapter, struct wlan_bssid_ex *bssid)
-{
-	struct registry_priv *pregistrypriv;
-	struct mlme_ext_priv *pmlmeext;
-	struct rt_channel_info *chplan_new;
-	u8 channel;
-	u8 i;
-
-	pregistrypriv = &padapter->registrypriv;
-	pmlmeext = &padapter->mlmeextpriv;
-
-	/*  Adjust channel plan by AP Country IE */
-	if (pregistrypriv->enable80211d &&
-		(!pmlmeext->update_channel_plan_by_ap_done)) {
-		u8 *ie, *p;
-		u32 len;
-		struct rt_channel_plan chplan_ap;
-		struct rt_channel_info chplan_sta[MAX_CHANNEL_NUM];
-		u8 country[4];
-		u8 fcn; /*  first channel number */
-		u8 noc; /*  number of channel */
-		u8 j, k;
-
-		ie = rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_COUNTRY, &len, bssid->ie_length - _FIXED_IE_LENGTH_);
-		if (!ie)
-			return;
-		if (len < 6)
-			return;
-
-		ie += 2;
-		p = ie;
-		ie += len;
-
-		memset(country, 0, 4);
-		memcpy(country, p, 3);
-		p += 3;
-
-		i = 0;
-		while ((ie - p) >= 3) {
-			fcn = *(p++);
-			noc = *(p++);
-			p++;
-
-			for (j = 0; j < noc; j++) {
-				if (fcn <= 14)
-					channel = fcn + j; /*  2.4 GHz */
-				else
-					channel = fcn + j * 4; /*  5 GHz */
-
-				chplan_ap.Channel[i++] = channel;
-			}
-		}
-		chplan_ap.Len = i;
-
-		memcpy(chplan_sta, pmlmeext->channel_set, sizeof(chplan_sta));
-
-		memset(pmlmeext->channel_set, 0, sizeof(pmlmeext->channel_set));
-		chplan_new = pmlmeext->channel_set;
-
-		i = j = k = 0;
-		if (pregistrypriv->wireless_mode & WIRELESS_11G) {
-			do {
-				if ((i == MAX_CHANNEL_NUM) ||
-					(chplan_sta[i].channel_num == 0) ||
-					(chplan_sta[i].channel_num > 14))
-					break;
-
-				if ((j == chplan_ap.Len) || (chplan_ap.Channel[j] > 14))
-					break;
-
-				if (chplan_sta[i].channel_num == chplan_ap.Channel[j]) {
-					chplan_new[k].channel_num = chplan_ap.Channel[j];
-					chplan_new[k].scan_type = SCAN_ACTIVE;
-					i++;
-					j++;
-					k++;
-				} else if (chplan_sta[i].channel_num < chplan_ap.Channel[j]) {
-					chplan_new[k].channel_num = chplan_sta[i].channel_num;
-					chplan_new[k].scan_type = SCAN_PASSIVE;
-					i++;
-					k++;
-				} else if (chplan_sta[i].channel_num > chplan_ap.Channel[j]) {
-					chplan_new[k].channel_num = chplan_ap.Channel[j];
-					chplan_new[k].scan_type = SCAN_ACTIVE;
-					j++;
-					k++;
-				}
-			} while (1);
-
-			/*  change AP not support channel to Passive scan */
-			while ((i < MAX_CHANNEL_NUM) &&
-				(chplan_sta[i].channel_num != 0) &&
-				(chplan_sta[i].channel_num <= 14)) {
-				chplan_new[k].channel_num = chplan_sta[i].channel_num;
-				chplan_new[k].scan_type = SCAN_PASSIVE;
-				i++;
-				k++;
-			}
-
-			/*  add channel AP supported */
-			while ((j < chplan_ap.Len) && (chplan_ap.Channel[j] <= 14)) {
-				chplan_new[k].channel_num = chplan_ap.Channel[j];
-				chplan_new[k].scan_type = SCAN_ACTIVE;
-				j++;
-				k++;
-			}
-		} else {
-			/*  keep original STA 2.4G channel plan */
-			while ((i < MAX_CHANNEL_NUM) &&
-				(chplan_sta[i].channel_num != 0) &&
-				(chplan_sta[i].channel_num <= 14)) {
-				chplan_new[k].channel_num = chplan_sta[i].channel_num;
-				chplan_new[k].scan_type = chplan_sta[i].scan_type;
-				i++;
-				k++;
-			}
-
-			/*  skip AP 2.4G channel plan */
-			while ((j < chplan_ap.Len) && (chplan_ap.Channel[j] <= 14))
-				j++;
-		}
-
-		pmlmeext->update_channel_plan_by_ap_done = 1;
-	}
-
-	/*  If channel is used by AP, set channel scan type to active */
-	channel = bssid->configuration.ds_config;
-	chplan_new = pmlmeext->channel_set;
-	i = 0;
-	while ((i < MAX_CHANNEL_NUM) && (chplan_new[i].channel_num != 0)) {
-		if (chplan_new[i].channel_num == channel) {
-			if (chplan_new[i].scan_type == SCAN_PASSIVE)
-				chplan_new[i].scan_type = SCAN_ACTIVE;
-			break;
-		}
-		i++;
-	}
-}
-
-/* Following are the functions to report events */
-
-void report_survey_event(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	struct cmd_obj *pcmd_obj;
-	u8 *pevtcmd;
-	u32 cmdsz;
-	struct survey_event	*psurvey_evt;
-	struct C2HEvent_Header *pc2h_evt_hdr;
-	struct mlme_ext_priv *pmlmeext;
-	struct cmd_priv *pcmdpriv;
-	/* u8 *pframe = precv_frame->u.hdr.rx_data; */
-	/* uint len = precv_frame->u.hdr.len; */
-
-	if (!padapter)
-		return;
-
-	pmlmeext = &padapter->mlmeextpriv;
-	pcmdpriv = &padapter->cmdpriv;
-
-	pcmd_obj = kzalloc_obj(*pcmd_obj, GFP_ATOMIC);
-	if (!pcmd_obj)
-		return;
-
-	cmdsz = (sizeof(struct survey_event) + sizeof(struct C2HEvent_Header));
-	pevtcmd = kzalloc(cmdsz, GFP_ATOMIC);
-	if (!pevtcmd) {
-		kfree(pcmd_obj);
-		return;
-	}
-
-	INIT_LIST_HEAD(&pcmd_obj->list);
-
-	pcmd_obj->cmdcode = SET_MLME_EVT_CMD;
-	pcmd_obj->cmdsz = cmdsz;
-	pcmd_obj->parmbuf = pevtcmd;
-
-	pcmd_obj->rsp = NULL;
-	pcmd_obj->rspsz  = 0;
-
-	pc2h_evt_hdr = (struct C2HEvent_Header *)(pevtcmd);
-	pc2h_evt_hdr->len = sizeof(struct survey_event);
-	pc2h_evt_hdr->ID = SURVEY_EVENT;
-	pc2h_evt_hdr->seq = atomic_inc_return(&pmlmeext->event_seq);
-
-	psurvey_evt = (struct survey_event *)(pevtcmd + sizeof(struct C2HEvent_Header));
-
-	if (collect_bss_info(padapter, precv_frame, (struct wlan_bssid_ex *)&psurvey_evt->bss) == _FAIL) {
-		kfree(pcmd_obj);
-		kfree(pevtcmd);
-		return;
-	}
-
-	process_80211d(padapter, &psurvey_evt->bss);
-
-	rtw_enqueue_cmd(pcmdpriv, pcmd_obj);
-
-	pmlmeext->sitesurvey_res.bss_cnt++;
-}
-
-void report_surveydone_event(struct adapter *padapter)
-{
-	struct cmd_obj *pcmd_obj;
-	u8 *pevtcmd;
-	u32 cmdsz;
-	struct surveydone_event *psurveydone_evt;
-	struct C2HEvent_Header	*pc2h_evt_hdr;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-
-	pcmd_obj = kzalloc_obj(*pcmd_obj, GFP_ATOMIC);
-	if (!pcmd_obj)
-		return;
-
-	cmdsz = (sizeof(struct surveydone_event) + sizeof(struct C2HEvent_Header));
-	pevtcmd = kzalloc(cmdsz, GFP_ATOMIC);
-	if (!pevtcmd) {
-		kfree(pcmd_obj);
-		return;
-	}
-
-	INIT_LIST_HEAD(&pcmd_obj->list);
-
-	pcmd_obj->cmdcode = SET_MLME_EVT_CMD;
-	pcmd_obj->cmdsz = cmdsz;
-	pcmd_obj->parmbuf = pevtcmd;
-
-	pcmd_obj->rsp = NULL;
-	pcmd_obj->rspsz  = 0;
-
-	pc2h_evt_hdr = (struct C2HEvent_Header *)(pevtcmd);
-	pc2h_evt_hdr->len = sizeof(struct surveydone_event);
-	pc2h_evt_hdr->ID = SURVEY_DONE_EVENT;
-	pc2h_evt_hdr->seq = atomic_inc_return(&pmlmeext->event_seq);
-
-	psurveydone_evt = (struct surveydone_event *)(pevtcmd + sizeof(struct C2HEvent_Header));
-	psurveydone_evt->bss_cnt = pmlmeext->sitesurvey_res.bss_cnt;
-
-	rtw_enqueue_cmd(pcmdpriv, pcmd_obj);
-}
-
-void report_join_res(struct adapter *padapter, int res)
-{
-	struct cmd_obj *pcmd_obj;
-	u8 *pevtcmd;
-	u32 cmdsz;
-	struct joinbss_event		*pjoinbss_evt;
-	struct C2HEvent_Header	*pc2h_evt_hdr;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-
-	pcmd_obj = kzalloc_obj(*pcmd_obj, GFP_ATOMIC);
-	if (!pcmd_obj)
-		return;
-
-	cmdsz = (sizeof(struct joinbss_event) + sizeof(struct C2HEvent_Header));
-	pevtcmd = kzalloc(cmdsz, GFP_ATOMIC);
-	if (!pevtcmd) {
-		kfree(pcmd_obj);
-		return;
-	}
-
-	INIT_LIST_HEAD(&pcmd_obj->list);
-
-	pcmd_obj->cmdcode = SET_MLME_EVT_CMD;
-	pcmd_obj->cmdsz = cmdsz;
-	pcmd_obj->parmbuf = pevtcmd;
-
-	pcmd_obj->rsp = NULL;
-	pcmd_obj->rspsz  = 0;
-
-	pc2h_evt_hdr = (struct C2HEvent_Header *)(pevtcmd);
-	pc2h_evt_hdr->len = sizeof(struct joinbss_event);
-	pc2h_evt_hdr->ID = JOIN_BSS_EVENT;
-	pc2h_evt_hdr->seq = atomic_inc_return(&pmlmeext->event_seq);
-
-	pjoinbss_evt = (struct joinbss_event *)(pevtcmd + sizeof(struct C2HEvent_Header));
-	memcpy((unsigned char *)(&(pjoinbss_evt->network.network)), &(pmlmeinfo->network), sizeof(struct wlan_bssid_ex));
-	pjoinbss_evt->network.join_res	= pjoinbss_evt->network.aid = res;
-
-	rtw_joinbss_event_prehandle(padapter, (u8 *)&pjoinbss_evt->network);
-
-	rtw_enqueue_cmd(pcmdpriv, pcmd_obj);
-}
-
-void report_wmm_edca_update(struct adapter *padapter)
-{
-	struct cmd_obj *pcmd_obj;
-	u8 *pevtcmd;
-	u32 cmdsz;
-	struct wmm_event		*pwmm_event;
-	struct C2HEvent_Header	*pc2h_evt_hdr;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-
-	pcmd_obj = kzalloc_obj(*pcmd_obj, GFP_ATOMIC);
-	if (!pcmd_obj)
-		return;
-
-	cmdsz = (sizeof(struct wmm_event) + sizeof(struct C2HEvent_Header));
-	pevtcmd = kzalloc(cmdsz, GFP_ATOMIC);
-	if (!pevtcmd) {
-		kfree(pcmd_obj);
-		return;
-	}
-
-	INIT_LIST_HEAD(&pcmd_obj->list);
-
-	pcmd_obj->cmdcode = SET_MLME_EVT_CMD;
-	pcmd_obj->cmdsz = cmdsz;
-	pcmd_obj->parmbuf = pevtcmd;
-
-	pcmd_obj->rsp = NULL;
-	pcmd_obj->rspsz  = 0;
-
-	pc2h_evt_hdr = (struct C2HEvent_Header *)(pevtcmd);
-	pc2h_evt_hdr->len = sizeof(struct wmm_event);
-	pc2h_evt_hdr->ID = WMM_EVENT;
-	pc2h_evt_hdr->seq = atomic_inc_return(&pmlmeext->event_seq);
-
-	pwmm_event = (struct wmm_event *)(pevtcmd + sizeof(struct C2HEvent_Header));
-	pwmm_event->wmm = 0;
-
-	rtw_enqueue_cmd(pcmdpriv, pcmd_obj);
-}
-
-void report_del_sta_event(struct adapter *padapter, unsigned char *MacAddr, unsigned short reason)
-{
-	struct cmd_obj *pcmd_obj;
-	u8 *pevtcmd;
-	u32 cmdsz;
-	struct sta_info *psta;
-	int	mac_id;
-	struct stadel_event			*pdel_sta_evt;
-	struct C2HEvent_Header	*pc2h_evt_hdr;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-
-	pcmd_obj = kzalloc_obj(*pcmd_obj, GFP_ATOMIC);
-	if (!pcmd_obj)
-		return;
-
-	cmdsz = (sizeof(struct stadel_event) + sizeof(struct C2HEvent_Header));
-	pevtcmd = kzalloc(cmdsz, GFP_ATOMIC);
-	if (!pevtcmd) {
-		kfree(pcmd_obj);
-		return;
-	}
-
-	INIT_LIST_HEAD(&pcmd_obj->list);
-
-	pcmd_obj->cmdcode = SET_MLME_EVT_CMD;
-	pcmd_obj->cmdsz = cmdsz;
-	pcmd_obj->parmbuf = pevtcmd;
-
-	pcmd_obj->rsp = NULL;
-	pcmd_obj->rspsz  = 0;
-
-	pc2h_evt_hdr = (struct C2HEvent_Header *)(pevtcmd);
-	pc2h_evt_hdr->len = sizeof(struct stadel_event);
-	pc2h_evt_hdr->ID = DEL_STA_EVENT;
-	pc2h_evt_hdr->seq = atomic_inc_return(&pmlmeext->event_seq);
-
-	pdel_sta_evt = (struct stadel_event *)(pevtcmd + sizeof(struct C2HEvent_Header));
-	memcpy((unsigned char *)(&(pdel_sta_evt->macaddr)), MacAddr, ETH_ALEN);
-	memcpy((unsigned char *)(pdel_sta_evt->rsvd), (unsigned char *)(&reason), 2);
-
-	psta = rtw_get_stainfo(&padapter->stapriv, MacAddr);
-	if (psta)
-		mac_id = (int)psta->mac_id;
-	else
-		mac_id = (-1);
-
-	pdel_sta_evt->mac_id = mac_id;
-
-	rtw_enqueue_cmd(pcmdpriv, pcmd_obj);
-}
-
-void report_add_sta_event(struct adapter *padapter, unsigned char *MacAddr, int cam_idx)
-{
-	struct cmd_obj *pcmd_obj;
-	u8 *pevtcmd;
-	u32 cmdsz;
-	struct stassoc_event		*padd_sta_evt;
-	struct C2HEvent_Header	*pc2h_evt_hdr;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-
-	pcmd_obj = kzalloc_obj(*pcmd_obj, GFP_ATOMIC);
-	if (!pcmd_obj)
-		return;
-
-	cmdsz = (sizeof(struct stassoc_event) + sizeof(struct C2HEvent_Header));
-	pevtcmd = kzalloc(cmdsz, GFP_ATOMIC);
-	if (!pevtcmd) {
-		kfree(pcmd_obj);
-		return;
-	}
-
-	INIT_LIST_HEAD(&pcmd_obj->list);
-
-	pcmd_obj->cmdcode = SET_MLME_EVT_CMD;
-	pcmd_obj->cmdsz = cmdsz;
-	pcmd_obj->parmbuf = pevtcmd;
-
-	pcmd_obj->rsp = NULL;
-	pcmd_obj->rspsz  = 0;
-
-	pc2h_evt_hdr = (struct C2HEvent_Header *)(pevtcmd);
-	pc2h_evt_hdr->len = sizeof(struct stassoc_event);
-	pc2h_evt_hdr->ID = ADD_STA_EVENT;
-	pc2h_evt_hdr->seq = atomic_inc_return(&pmlmeext->event_seq);
-
-	padd_sta_evt = (struct stassoc_event *)(pevtcmd + sizeof(struct C2HEvent_Header));
-	memcpy((unsigned char *)(&(padd_sta_evt->macaddr)), MacAddr, ETH_ALEN);
-	padd_sta_evt->cam_id = cam_idx;
-
-	rtw_enqueue_cmd(pcmdpriv, pcmd_obj);
-}
-
-/* Following are the event callback functions */
-
-/* for sta/adhoc mode */
-void update_sta_info(struct adapter *padapter, struct sta_info *psta)
-{
-	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	/* ERP */
-	VCS_update(padapter, psta);
-
-	/* HT */
-	if (pmlmepriv->htpriv.ht_option) {
-		psta->htpriv.ht_option = true;
-
-		psta->htpriv.ampdu_enable = pmlmepriv->htpriv.ampdu_enable;
-
-		psta->htpriv.rx_ampdu_min_spacing =
-			(pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para &
-			 IEEE80211_HT_CAP_AMPDU_DENSITY) >> 2;
-
-		if (support_short_GI(padapter, &(pmlmeinfo->HT_caps), CHANNEL_WIDTH_20))
-			psta->htpriv.sgi_20m = true;
-
-		if (support_short_GI(padapter, &(pmlmeinfo->HT_caps), CHANNEL_WIDTH_40))
-			psta->htpriv.sgi_40m = true;
-
-		psta->qos_option = true;
-
-		psta->htpriv.ldpc_cap = pmlmepriv->htpriv.ldpc_cap;
-		psta->htpriv.stbc_cap = pmlmepriv->htpriv.stbc_cap;
-		psta->htpriv.beamform_cap = pmlmepriv->htpriv.beamform_cap;
-
-		memcpy(&psta->htpriv.ht_cap, &pmlmeinfo->HT_caps, sizeof(struct ieee80211_ht_cap));
-	} else {
-		psta->htpriv.ht_option = false;
-
-		psta->htpriv.ampdu_enable = false;
-
-		psta->htpriv.sgi_20m = false;
-		psta->htpriv.sgi_40m = false;
-		psta->qos_option = false;
-	}
-
-	psta->htpriv.ch_offset = pmlmeext->cur_ch_offset;
-
-	psta->htpriv.agg_enable_bitmap = 0x0;/* reset */
-	psta->htpriv.candidate_tid_bitmap = 0x0;/* reset */
-
-	psta->bw_mode = pmlmeext->cur_bwmode;
-
-	/* QoS */
-	if (pmlmepriv->qospriv.qos_option)
-		psta->qos_option = true;
-
-	update_ldpc_stbc_cap(psta);
-
-	spin_lock_bh(&psta->lock);
-	psta->state = _FW_LINKED;
-	spin_unlock_bh(&psta->lock);
-}
-
-static void rtw_mlmeext_disconnect(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex		*pnetwork = (struct wlan_bssid_ex *)(&(pmlmeinfo->network));
-
-	/* set_opmode_cmd(padapter, infra_client_with_mlme); */
-
-	/* For safety, prevent from keeping macid sleep.
-	 * If we can sure all power mode enter/leave are paired,
-	 * this check can be removed.
-	 * Lucas@20131113
-	 */
-	/* wakeup macid after disconnect. */
-	{
-		struct sta_info *psta;
-
-		psta = rtw_get_stainfo(&padapter->stapriv, get_my_bssid(pnetwork));
-		if (psta)
-			rtw_hal_macid_wakeup(padapter, psta->mac_id);
-	}
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_MLME_DISCONNECT, NULL);
-	rtw_hal_set_hwreg(padapter, HW_VAR_BSSID, null_addr);
-
-	/* set MSR to no link state -> infra. mode */
-	set_msr(padapter, _HW_STATE_STATION_);
-
-	pmlmeinfo->state = WIFI_FW_NULL_STATE;
-
-	/* switch to the 20M Hz mode after disconnect */
-	pmlmeext->cur_bwmode = CHANNEL_WIDTH_20;
-	pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
-
-	set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode);
-
-	flush_all_cam_entry(padapter);
-
-	timer_delete_sync(&pmlmeext->link_timer);
-
-	pmlmepriv->link_detect_info.traffic_transition_count = 0;
-	pmlmepriv->link_detect_info.low_power_transition_count = 0;
-}
-
-void mlmeext_joinbss_event_callback(struct adapter *padapter, int join_res)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex		*cur_network = &(pmlmeinfo->network);
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	u8 join_type;
-	struct sta_info *psta;
-
-	if (join_res < 0) {
-		join_type = 1;
-		rtw_hal_set_hwreg(padapter, HW_VAR_MLME_JOIN, (u8 *)(&join_type));
-		rtw_hal_set_hwreg(padapter, HW_VAR_BSSID, null_addr);
-
-		return;
-	}
-
-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE)
-		/* update bc/mc sta_info */
-		update_bmc_sta(padapter);
-
-	/* turn on dynamic functions */
-	switch_dm_func(padapter, DYNAMIC_ALL_FUNC_ENABLE, true);
-
-	/*  update IOT-related issue */
-	update_IOT_info(padapter);
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_BASIC_RATE, cur_network->supported_rates);
-
-	/* BCN interval */
-	rtw_hal_set_hwreg(padapter, HW_VAR_BEACON_INTERVAL, (u8 *)(&pmlmeinfo->bcn_interval));
-
-	/* update capability */
-	update_capinfo(padapter, pmlmeinfo->capability);
-
-	/* WMM, Update EDCA param */
-	WMMOnAssocRsp(padapter);
-
-	/* HT */
-	HTOnAssocRsp(padapter);
-
-	/* Set cur_channel&cur_bwmode&cur_ch_offset */
-	set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode);
-
-	psta = rtw_get_stainfo(pstapriv, cur_network->mac_address);
-	if (psta) { /* only for infra. mode */
-
-		pmlmeinfo->FW_sta_info[psta->mac_id].psta = psta;
-
-		psta->wireless_mode = pmlmeext->cur_wireless_mode;
-
-		/* set per sta rate after updating HT cap. */
-		set_sta_rate(padapter, psta);
-
-		rtw_sta_media_status_rpt(padapter, psta, 1);
-
-		/*
-		 * wakeup macid after join bss successfully to ensure
-		 * the subsequent data frames can be sent out normally
-		 */
-		rtw_hal_macid_wakeup(padapter, psta->mac_id);
-	}
-
-	join_type = 2;
-	rtw_hal_set_hwreg(padapter, HW_VAR_MLME_JOIN, (u8 *)(&join_type));
-
-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE) {
-		/*  correcting TSF */
-		correct_TSF(padapter, pmlmeext);
-
-		/* set_link_timer(pmlmeext, DISCONNECT_TO); */
-	}
-
-	rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_CONNECT, 0);
-}
-
-/* currently only adhoc mode will go here */
-void mlmeext_sta_add_event_callback(struct adapter *padapter, struct sta_info *psta)
-{
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	u8 join_type;
-
-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) {
-		if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) { /* adhoc master or sta_count>1 */
-
-			/* nothing to do */
-		} else { /* adhoc client */
-			/* update TSF Value */
-			/* update_TSF(pmlmeext, pframe, len); */
-
-			/*  correcting TSF */
-			correct_TSF(padapter, pmlmeext);
-
-			/* start beacon */
-			if (send_beacon(padapter) == _FAIL) {
-				pmlmeinfo->FW_sta_info[psta->mac_id].status = 0;
-
-				pmlmeinfo->state ^= WIFI_FW_ADHOC_STATE;
-
-				return;
-			}
-
-			pmlmeinfo->state |= WIFI_FW_ASSOC_SUCCESS;
-		}
-
-		join_type = 2;
-		rtw_hal_set_hwreg(padapter, HW_VAR_MLME_JOIN, (u8 *)(&join_type));
-	}
-
-	pmlmeinfo->FW_sta_info[psta->mac_id].psta = psta;
-
-	psta->bssratelen = rtw_get_rateset_len(pmlmeinfo->FW_sta_info[psta->mac_id].SupportedRates);
-	memcpy(psta->bssrateset, pmlmeinfo->FW_sta_info[psta->mac_id].SupportedRates, psta->bssratelen);
-
-	/* update adhoc sta_info */
-	update_sta_info(padapter, psta);
-
-	rtw_hal_update_sta_rate_mask(padapter, psta);
-
-	/*  ToDo: HT for Ad-hoc */
-	psta->wireless_mode = rtw_check_network_type(psta->bssrateset, pmlmeext->cur_channel);
-	psta->raid = networktype_to_raid_ex(padapter, psta);
-
-	/* rate radaptive */
-	update_ra_entry(padapter, psta);
-}
-
-void mlmeext_sta_del_event_callback(struct adapter *padapter)
-{
-	if (is_client_associated_to_ap(padapter) || is_IBSS_empty(padapter))
-		rtw_mlmeext_disconnect(padapter);
-}
-
-/* Following are the functions for the timer handlers */
-
-void _linked_info_dump(struct adapter *padapter)
-{
-	int i;
-	struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info    *pmlmeinfo = &pmlmeext->mlmext_info;
-	int UndecoratedSmoothedPWDB;
-	struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter);
-
-	if (padapter->bLinkInfoDump) {
-		if ((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE)
-			rtw_hal_get_def_var(padapter,
-					    HAL_DEF_UNDERCORATEDSMOOTHEDPWDB,
-					    &UndecoratedSmoothedPWDB);
-
-		for (i = 0; i < NUM_STA; i++) {
-			if (pdvobj->macid[i]) {
-				if (i != 1) /* skip bc/mc sta */
-					/*   tx info ============ */
-					rtw_hal_get_def_var(padapter, HW_DEF_RA_INFO_DUMP, &i);
-			}
-		}
-	}
-}
-
-static u8 chk_ap_is_alive(struct adapter *padapter, struct sta_info *psta)
-{
-	u8 ret = false;
-
-	if ((sta_rx_data_pkts(psta) == sta_last_rx_data_pkts(psta))
-		&& sta_rx_beacon_pkts(psta) == sta_last_rx_beacon_pkts(psta)
-		&& sta_rx_probersp_pkts(psta) == sta_last_rx_probersp_pkts(psta)
-	) {
-		ret = false;
-	} else {
-		ret = true;
-	}
-
-	sta_update_last_rx_pkts(psta);
-
-	return ret;
-}
-
-void linked_status_chk(struct adapter *padapter)
-{
-	u32 i;
-	struct sta_info *psta;
-	struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-
-	if (is_client_associated_to_ap(padapter)) {
-		/* linked infrastructure client mode */
-
-		int tx_chk = _SUCCESS, rx_chk = _SUCCESS;
-		int rx_chk_limit;
-		int link_count_limit;
-
-		#if defined(DBG_ROAMING_TEST)
-		rx_chk_limit = 1;
-		#else
-		rx_chk_limit = 8;
-		#endif
-		link_count_limit = 7; /*  16 sec */
-
-		/*  Marked by Kurt 20130715 */
-		/*  For WiDi 3.5 and latered on, they don't ask WiDi sink to do roaming, */
-		/* so we could not check rx limit that strictly. */
-		/*  todo: To check why we under miracast session, rx_chk would be false */
-		psta = rtw_get_stainfo(pstapriv, pmlmeinfo->network.mac_address);
-		if (psta) {
-			if (!chk_ap_is_alive(padapter, psta))
-				rx_chk = _FAIL;
-
-			if (pxmitpriv->last_tx_pkts == pxmitpriv->tx_pkts)
-				tx_chk = _FAIL;
-
-			{
-				if (rx_chk != _SUCCESS) {
-					if (pmlmeext->retry == 0) {
-						issue_probereq_ex(padapter,
-								  &pmlmeinfo->network.ssid,
-								  pmlmeinfo->network.mac_address,
-								  0, 0, 0, 0);
-						issue_probereq_ex(padapter,
-								  &pmlmeinfo->network.ssid,
-								  pmlmeinfo->network.mac_address,
-								  0, 0, 0, 0);
-						issue_probereq_ex(padapter,
-								  &pmlmeinfo->network.ssid,
-								  pmlmeinfo->network.mac_address,
-								  0, 0, 0, 0);
-					}
-				}
-
-				if (tx_chk != _SUCCESS &&
-				    pmlmeinfo->link_count++ == link_count_limit)
-					tx_chk = issue_nulldata_in_interrupt(padapter, NULL);
-			}
-
-			if (rx_chk == _FAIL) {
-				pmlmeext->retry++;
-				if (pmlmeext->retry > rx_chk_limit) {
-					netdev_dbg(padapter->pnetdev,
-						   FUNC_ADPT_FMT " disconnect or roaming\n",
-						   FUNC_ADPT_ARG(padapter));
-					receive_disconnect(padapter, pmlmeinfo->network.mac_address
-						, WLAN_REASON_EXPIRATION_CHK);
-					return;
-				}
-			} else {
-				pmlmeext->retry = 0;
-			}
-
-			if (tx_chk == _FAIL) {
-				pmlmeinfo->link_count %= (link_count_limit + 1);
-			} else {
-				pxmitpriv->last_tx_pkts = pxmitpriv->tx_pkts;
-				pmlmeinfo->link_count = 0;
-			}
-
-		} /* end of if ((psta = rtw_get_stainfo(pstapriv, passoc_res->network.mac_address)) != NULL) */
-	} else if (is_client_associated_to_ibss(padapter)) {
-		/* linked IBSS mode */
-		/* for each assoc list entry to check the rx pkt counter */
-		for (i = IBSS_START_MAC_ID; i < NUM_STA; i++) {
-			if (pmlmeinfo->FW_sta_info[i].status == 1) {
-				psta = pmlmeinfo->FW_sta_info[i].psta;
-
-				if (!psta)
-					continue;
-
-				if (pmlmeinfo->FW_sta_info[i].rx_pkt == sta_rx_pkts(psta)) {
-					if (pmlmeinfo->FW_sta_info[i].retry < 3) {
-						pmlmeinfo->FW_sta_info[i].retry++;
-					} else {
-						pmlmeinfo->FW_sta_info[i].retry = 0;
-						pmlmeinfo->FW_sta_info[i].status = 0;
-						report_del_sta_event(padapter, psta->hwaddr
-							, 65535/*  indicate disconnect caused by no rx */
-						);
-					}
-				} else {
-					pmlmeinfo->FW_sta_info[i].retry = 0;
-					pmlmeinfo->FW_sta_info[i].rx_pkt = (u32)sta_rx_pkts(psta);
-				}
-			}
-		}
-
-		/* set_link_timer(pmlmeext, DISCONNECT_TO); */
-	}
-}
-
-void survey_timer_hdl(struct timer_list *t)
-{
-	struct adapter *padapter =
-		timer_container_of(padapter, t, mlmeextpriv.survey_timer);
-	struct cmd_obj	*ph2c;
-	struct sitesurvey_parm	*psurveyPara;
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-	/* issue rtw_sitesurvey_cmd */
-	if (pmlmeext->sitesurvey_res.state > SCAN_START) {
-		if (pmlmeext->sitesurvey_res.state ==  SCAN_PROCESS)
-			pmlmeext->sitesurvey_res.channel_idx++;
-
-		if (pmlmeext->scan_abort) {
-			pmlmeext->sitesurvey_res.channel_idx = pmlmeext->sitesurvey_res.ch_num;
-
-			pmlmeext->scan_abort = false;/* reset */
-		}
-
-		ph2c = kzalloc_obj(*ph2c, GFP_ATOMIC);
-		if (!ph2c)
-			return;
-
-		psurveyPara = kzalloc_obj(*psurveyPara, GFP_ATOMIC);
-		if (!psurveyPara) {
-			kfree(ph2c);
-			return;
-		}
-
-		init_h2fwcmd_w_parm_no_rsp(ph2c, psurveyPara, SITE_SURVEY_CMD);
-		rtw_enqueue_cmd(pcmdpriv, ph2c);
-	}
-}
-
-void link_timer_hdl(struct timer_list *t)
-{
-	struct adapter *padapter =
-		timer_container_of(padapter, t, mlmeextpriv.link_timer);
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	if (pmlmeinfo->state & WIFI_FW_AUTH_NULL) {
-		pmlmeinfo->state = WIFI_FW_NULL_STATE;
-		report_join_res(padapter, -3);
-	} else if (pmlmeinfo->state & WIFI_FW_AUTH_STATE) {
-		/* re-auth timer */
-		if (++pmlmeinfo->reauth_count > REAUTH_LIMIT) {
-			pmlmeinfo->state = 0;
-			report_join_res(padapter, -1);
-			return;
-		}
-
-		pmlmeinfo->auth_seq = 1;
-		issue_auth(padapter, NULL, 0);
-		set_link_timer(pmlmeext, REAUTH_TO);
-	} else if (pmlmeinfo->state & WIFI_FW_ASSOC_STATE) {
-		/* re-assoc timer */
-		if (++pmlmeinfo->reassoc_count > REASSOC_LIMIT) {
-			pmlmeinfo->state = WIFI_FW_NULL_STATE;
-			report_join_res(padapter, -2);
-			return;
-		}
-
-		issue_assocreq(padapter);
-		set_link_timer(pmlmeext, REASSOC_TO);
-	}
-}
-
-void addba_timer_hdl(struct timer_list *t)
-{
-	struct sta_info *psta = timer_container_of(psta, t, addba_retry_timer);
-	struct ht_priv *phtpriv;
-
-	if (!psta)
-		return;
-
-	phtpriv = &psta->htpriv;
-
-	if (phtpriv->ht_option && phtpriv->ampdu_enable) {
-		if (phtpriv->candidate_tid_bitmap)
-			phtpriv->candidate_tid_bitmap = 0x0;
-	}
-}
-
-void sa_query_timer_hdl(struct timer_list *t)
-{
-	struct adapter *padapter =
-		timer_container_of(padapter, t, mlmeextpriv.sa_query_timer);
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	/* disconnect */
-	spin_lock_bh(&pmlmepriv->lock);
-
-	if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-		rtw_disassoc_cmd(padapter, 0, true);
-		rtw_indicate_disconnect(padapter);
-		rtw_free_assoc_resources(padapter, 1);
-	}
-
-	spin_unlock_bh(&pmlmepriv->lock);
-}
-
-u8 NULL_hdl(struct adapter *padapter, u8 *pbuf)
-{
-	return H2C_SUCCESS;
-}
-
-u8 setopmode_hdl(struct adapter *padapter, u8 *pbuf)
-{
-	u8 type;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct setopmode_parm *psetop = (struct setopmode_parm *)pbuf;
-
-	if (psetop->mode == NL80211_IFTYPE_AP) {
-		pmlmeinfo->state = WIFI_FW_AP_STATE;
-		type = _HW_STATE_AP_;
-		/* start_ap_mode(padapter); */
-	} else if (psetop->mode == NL80211_IFTYPE_STATION) {
-		pmlmeinfo->state &= ~(BIT(0) | BIT(1));/*  clear state */
-		pmlmeinfo->state |= WIFI_FW_STATION_STATE;/* set to	STATION_STATE */
-		type = _HW_STATE_STATION_;
-	} else if (psetop->mode == NL80211_IFTYPE_ADHOC) {
-		type = _HW_STATE_ADHOC_;
-	} else {
-		type = _HW_STATE_NOLINK_;
-	}
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_SET_OPMODE, (u8 *)(&type));
-	/* set_msr(padapter, type); */
-
-	if (psetop->mode == NL80211_IFTYPE_AP) {
-		/*  Do this after port switch to */
-		/*  prevent from downloading rsvd page to wrong port */
-		rtw_btcoex_media_status_notify(padapter, 1); /* connect */
-	}
-
-	return H2C_SUCCESS;
-}
-
-u8 createbss_hdl(struct adapter *padapter, u8 *pbuf)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex	*pnetwork = (struct wlan_bssid_ex *)(&(pmlmeinfo->network));
-	struct joinbss_parm *pparm = (struct joinbss_parm *)pbuf;
-	/* u32 initialgain; */
-
-	if (pmlmeinfo->state == WIFI_FW_AP_STATE) {
-		start_bss_network(padapter);
-		return H2C_SUCCESS;
-	}
-
-	/* below is for ad-hoc master */
-	if (pparm->network.infrastructure_mode == NL80211_IFTYPE_ADHOC) {
-		rtw_joinbss_reset(padapter);
-
-		pmlmeext->cur_bwmode = CHANNEL_WIDTH_20;
-		pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
-		pmlmeinfo->ERP_enable = 0;
-		pmlmeinfo->WMM_enable = 0;
-		pmlmeinfo->HT_enable = 0;
-		pmlmeinfo->HT_caps_enable = 0;
-		pmlmeinfo->HT_info_enable = 0;
-		pmlmeinfo->agg_enable_bitmap = 0;
-		pmlmeinfo->candidate_tid_bitmap = 0;
-
-		/* disable dynamic functions, such as high power, DIG */
-		save_dm_func_flag(padapter);
-		switch_dm_func(padapter, DYNAMIC_FUNC_DISABLE, false);
-
-		/* config the initial gain under linking, need to write the BB registers */
-		/* initialgain = 0x1E; */
-		/* rtw_hal_set_hwreg(padapter, HW_VAR_INITIAL_GAIN, (u8 *)(&initialgain)); */
-
-		/* cancel link timer */
-		timer_delete_sync(&pmlmeext->link_timer);
-
-		/* clear CAM */
-		flush_all_cam_entry(padapter);
-
-		memcpy(pnetwork, pbuf, offsetof(struct wlan_bssid_ex, ie_length));
-		pnetwork->ie_length = ((struct wlan_bssid_ex *)pbuf)->ie_length;
-
-		if (pnetwork->ie_length > MAX_IE_SZ)/* Check pbuf->ie_length */
-			return H2C_PARAMETERS_ERROR;
-
-		memcpy(pnetwork->ies, ((struct wlan_bssid_ex *)pbuf)->ies, pnetwork->ie_length);
-
-		start_create_ibss(padapter);
-	}
-
-	return H2C_SUCCESS;
-}
-
-u8 join_cmd_hdl(struct adapter *padapter, u8 *pbuf)
-{
-	u8 join_type;
-	struct ndis_80211_var_ie *pIE;
-	struct registry_priv *pregpriv = &padapter->registrypriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex		*pnetwork = (struct wlan_bssid_ex *)(&(pmlmeinfo->network));
-	u32 i;
-	u8 cbw40_enable = 0;
-	/* u32 initialgain; */
-	/* u32 acparm; */
-	u8 ch, bw, offset;
-
-	/* check already connecting to AP or not */
-	if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) {
-		if (pmlmeinfo->state & WIFI_FW_STATION_STATE)
-			issue_deauth_ex(padapter, pnetwork->mac_address, WLAN_REASON_DEAUTH_LEAVING, 1, 100);
-		pmlmeinfo->state = WIFI_FW_NULL_STATE;
-
-		/* clear CAM */
-		flush_all_cam_entry(padapter);
-
-		timer_delete_sync(&pmlmeext->link_timer);
-
-		/* set MSR to nolink -> infra. mode */
-		/* set_msr(padapter, _HW_STATE_NOLINK_); */
-		set_msr(padapter, _HW_STATE_STATION_);
-
-		rtw_hal_set_hwreg(padapter, HW_VAR_MLME_DISCONNECT, NULL);
-	}
-
-	rtw_joinbss_reset(padapter);
-
-	pmlmeext->cur_bwmode = CHANNEL_WIDTH_20;
-	pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
-	pmlmeinfo->ERP_enable = 0;
-	pmlmeinfo->WMM_enable = 0;
-	pmlmeinfo->HT_enable = 0;
-	pmlmeinfo->HT_caps_enable = 0;
-	pmlmeinfo->HT_info_enable = 0;
-	pmlmeinfo->agg_enable_bitmap = 0;
-	pmlmeinfo->candidate_tid_bitmap = 0;
-	pmlmeinfo->bwmode_updated = false;
-	/* pmlmeinfo->assoc_AP_vendor = HT_IOT_PEER_MAX; */
-	pmlmeinfo->VHT_enable = 0;
-
-	memcpy(pnetwork, pbuf, offsetof(struct wlan_bssid_ex, ie_length));
-	pnetwork->ie_length = ((struct wlan_bssid_ex *)pbuf)->ie_length;
-
-	if (pnetwork->ie_length > MAX_IE_SZ)/* Check pbuf->ie_length */
-		return H2C_PARAMETERS_ERROR;
-
-	memcpy(pnetwork->ies, ((struct wlan_bssid_ex *)pbuf)->ies, pnetwork->ie_length);
-
-	pmlmeext->cur_channel = (u8)pnetwork->configuration.ds_config;
-	pmlmeinfo->bcn_interval = get_beacon_interval(pnetwork);
-
-	/* Check AP vendor to move rtw_joinbss_cmd() */
-	/* pmlmeinfo->assoc_AP_vendor = check_assoc_AP(pnetwork->ies, pnetwork->ie_length); */
-
-	/* sizeof(struct ndis_802_11_fix_ie) */
-	for (i = _FIXED_IE_LENGTH_; i < pnetwork->ie_length;) {
-		if (i + sizeof(*pIE) > pnetwork->ie_length)
-			break;
-		pIE = (struct ndis_80211_var_ie *)(pnetwork->ies + i);
-		if (i + sizeof(*pIE) + pIE->length > pnetwork->ie_length)
-			break;
-
-		switch (pIE->element_id) {
-		case WLAN_EID_VENDOR_SPECIFIC:/* Get WMM IE. */
-			if (!memcmp(pIE->data, WMM_OUI, 4))
-				WMM_param_handler(padapter, pIE);
-			break;
-
-		case WLAN_EID_HT_CAPABILITY:	/* Get HT Cap IE. */
-			pmlmeinfo->HT_caps_enable = 1;
-			break;
-
-		case WLAN_EID_HT_OPERATION:	/* Get HT Info IE. */
-			pmlmeinfo->HT_info_enable = 1;
-
-			/* spec case only for cisco's ap because cisco's ap issue assoc rsp using mcs rate @40MHz or @20MHz */
-			{
-				struct HT_info_element *pht_info = (struct HT_info_element *)(pIE->data);
-
-				if (pnetwork->configuration.ds_config <= 14) {
-					if ((pregpriv->bw_mode & 0x0f) > CHANNEL_WIDTH_20)
-						cbw40_enable = 1;
-				}
-
-				if ((cbw40_enable) && (pht_info->infos[0] & BIT(2))) {
-					/* switch to the 40M Hz mode according to the AP */
-					pmlmeext->cur_bwmode = CHANNEL_WIDTH_40;
-					switch (pht_info->infos[0] & 0x3) {
-					case 1:
-						pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER;
-						break;
-
-					case 3:
-						pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER;
-						break;
-
-					default:
-						pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
-						pmlmeext->cur_bwmode = CHANNEL_WIDTH_20;
-						break;
-					}
-				}
-			}
-			break;
-		default:
-			break;
-		}
-
-		i += (pIE->length + 2);
-	}
-
-	/* check channel, bandwidth, offset and switch */
-	if (rtw_chk_start_clnt_join(padapter, &ch, &bw, &offset) == _FAIL) {
-		report_join_res(padapter, (-4));
-		return H2C_SUCCESS;
-	}
-
-	/* disable dynamic functions, such as high power, DIG */
-	/* switch_dm_func(padapter, DYNAMIC_FUNC_DISABLE, false); */
-
-	/* config the initial gain under linking, need to write the BB registers */
-	/* initialgain = 0x1E; */
-	/* rtw_hal_set_hwreg(padapter, HW_VAR_INITIAL_GAIN, (u8 *)(&initialgain)); */
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_BSSID, pmlmeinfo->network.mac_address);
-	join_type = 0;
-	rtw_hal_set_hwreg(padapter, HW_VAR_MLME_JOIN, (u8 *)(&join_type));
-
-	set_channel_bwmode(padapter, ch, offset, bw);
-
-	/* cancel link timer */
-	timer_delete_sync(&pmlmeext->link_timer);
-
-	start_clnt_join(padapter);
-
-	return H2C_SUCCESS;
-}
-
-u8 disconnect_hdl(struct adapter *padapter, unsigned char *pbuf)
-{
-	struct disconnect_parm *param = (struct disconnect_parm *)pbuf;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex		*pnetwork = (struct wlan_bssid_ex *)(&(pmlmeinfo->network));
-	u8 val8;
-
-	if (is_client_associated_to_ap(padapter))
-		issue_deauth_ex(padapter, pnetwork->mac_address, WLAN_REASON_DEAUTH_LEAVING,
-				param->deauth_timeout_ms / 100, 100);
-
-	if (((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) ||
-	    ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE)) {
-		/* Stop BCN */
-		val8 = 0;
-		rtw_hal_set_hwreg(padapter, HW_VAR_BCN_FUNC, (u8 *)(&val8));
-	}
-
-	rtw_mlmeext_disconnect(padapter);
-
-	rtw_free_uc_swdec_pending_queue(padapter);
-
-	return	H2C_SUCCESS;
-}
-
-static int rtw_scan_ch_decision(struct adapter *padapter, struct rtw_ieee80211_channel *out,
-	u32 out_num, struct rtw_ieee80211_channel *in, u32 in_num)
-{
-	int i, j;
-	int set_idx;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-	/* clear first */
-	memset(out, 0, sizeof(struct rtw_ieee80211_channel) * out_num);
-
-	/* acquire channels from in */
-	j = 0;
-	for (i = 0; i < in_num; i++) {
-		set_idx = rtw_ch_set_search_ch(pmlmeext->channel_set, in[i].hw_value);
-		if (in[i].hw_value && !(in[i].flags & RTW_IEEE80211_CHAN_DISABLED)
-			&& set_idx >= 0
-		) {
-			if (j >= out_num) {
-				netdev_dbg(padapter->pnetdev,
-					   FUNC_ADPT_FMT " out_num:%u not enough\n",
-					   FUNC_ADPT_ARG(padapter), out_num);
-				break;
-			}
-
-			memcpy(&out[j], &in[i], sizeof(struct rtw_ieee80211_channel));
-
-			if (pmlmeext->channel_set[set_idx].scan_type == SCAN_PASSIVE)
-				out[j].flags |= RTW_IEEE80211_CHAN_PASSIVE_SCAN;
-
-			j++;
-		}
-		if (j >= out_num)
-			break;
-	}
-
-	/* if out is empty, use channel_set as default */
-	if (j == 0) {
-		for (i = 0; i < pmlmeext->max_chan_nums; i++) {
-			if (j >= out_num) {
-				netdev_dbg(padapter->pnetdev,
-					   FUNC_ADPT_FMT " out_num:%u not enough\n",
-					   FUNC_ADPT_ARG(padapter),
-					   out_num);
-				break;
-			}
-
-			out[j].hw_value = pmlmeext->channel_set[i].channel_num;
-
-			if (pmlmeext->channel_set[i].scan_type == SCAN_PASSIVE)
-				out[j].flags |= RTW_IEEE80211_CHAN_PASSIVE_SCAN;
-
-			j++;
-		}
-	}
-
-	return j;
-}
-
-u8 sitesurvey_cmd_hdl(struct adapter *padapter, u8 *pbuf)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct sitesurvey_parm	*pparm = (struct sitesurvey_parm *)pbuf;
-	u8 bdelayscan = false;
-	u8 val8;
-	u32 initialgain;
-	u32 i;
-
-	if (pmlmeext->sitesurvey_res.state == SCAN_DISABLE) {
-		pmlmeext->sitesurvey_res.state = SCAN_START;
-		pmlmeext->sitesurvey_res.bss_cnt = 0;
-		pmlmeext->sitesurvey_res.channel_idx = 0;
-
-		for (i = 0; i < RTW_SSID_SCAN_AMOUNT; i++) {
-			if (pparm->ssid[i].ssid_length) {
-				memcpy(pmlmeext->sitesurvey_res.ssid[i].ssid,
-				       pparm->ssid[i].ssid,
-				       IW_ESSID_MAX_SIZE);
-				pmlmeext->sitesurvey_res.ssid[i].ssid_length =
-					pparm->ssid[i].ssid_length;
-			} else {
-				pmlmeext->sitesurvey_res.ssid[i].ssid_length = 0;
-			}
-		}
-
-		pmlmeext->sitesurvey_res.ch_num = rtw_scan_ch_decision(padapter
-			, pmlmeext->sitesurvey_res.ch, RTW_CHANNEL_SCAN_AMOUNT
-			, pparm->ch, pparm->ch_num
-		);
-
-		pmlmeext->sitesurvey_res.scan_mode = pparm->scan_mode;
-
-		/* issue null data if associating to the AP */
-		if (is_client_associated_to_ap(padapter)) {
-			pmlmeext->sitesurvey_res.state = SCAN_TXNULL;
-
-			issue_nulldata(padapter, NULL, 1, 3, 500);
-
-			bdelayscan = true;
-		}
-		if (bdelayscan) {
-			/* delay 50ms to protect nulldata(1). */
-			set_survey_timer(pmlmeext, 50);
-			return H2C_SUCCESS;
-		}
-	}
-
-	if ((pmlmeext->sitesurvey_res.state == SCAN_START) ||
-	    (pmlmeext->sitesurvey_res.state == SCAN_TXNULL)) {
-		/* disable dynamic functions, such as high power, DIG */
-		save_dm_func_flag(padapter);
-		switch_dm_func(padapter, DYNAMIC_FUNC_DISABLE, false);
-
-		/* config the initial gain under scanning, need to write the BB
-		 * registers
-		 */
-		initialgain = 0x1e;
-
-		rtw_hal_set_hwreg(padapter, HW_VAR_INITIAL_GAIN, (u8 *)(&initialgain));
-
-		/* set MSR to no link state */
-		set_msr(padapter, _HW_STATE_NOLINK_);
-
-		val8 = 1; /* under site survey */
-		rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8));
-
-		pmlmeext->sitesurvey_res.state = SCAN_PROCESS;
-	}
-
-	site_survey(padapter);
-
-	return H2C_SUCCESS;
-}
-
-u8 setauth_hdl(struct adapter *padapter, unsigned char *pbuf)
-{
-	struct setauth_parm		*pparm = (struct setauth_parm *)pbuf;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	if (pparm->mode < 4)
-		pmlmeinfo->auth_algo = pparm->mode;
-
-	return	H2C_SUCCESS;
-}
-
-u8 setkey_hdl(struct adapter *padapter, u8 *pbuf)
-{
-	u16 ctrl = 0;
-	s16 cam_id = 0;
-	struct setkey_parm		*pparm = (struct setkey_parm *)pbuf;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	unsigned char null_addr[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-	u8 *addr;
-
-	/* main tx key for wep. */
-	if (pparm->set_tx)
-		pmlmeinfo->key_index = pparm->keyid;
-
-	cam_id = rtw_camid_alloc(padapter, NULL, pparm->keyid);
-
-	if (cam_id < 0) {
-	} else {
-		if (cam_id > 3) /* not default key, searched by A2 */
-			addr = get_bssid(&padapter->mlmepriv);
-		else
-			addr = null_addr;
-
-		ctrl = BIT(15) | BIT(6) | ((pparm->algorithm) << 2) | pparm->keyid;
-		write_cam(padapter, cam_id, ctrl, addr, pparm->key);
-		netdev_dbg(padapter->pnetdev,
-			   "set group key camid:%d, addr:%pM, kid:%d, type:%s\n",
-			   cam_id, addr, pparm->keyid,
-			   security_type_str(pparm->algorithm));
-	}
-
-	if (cam_id >= 0 && cam_id <= 3)
-		rtw_hal_set_hwreg(padapter, HW_VAR_SEC_DK_CFG, (u8 *)true);
-
-	/* allow multicast packets to driver */
-	SetHwReg8723BS(padapter, HW_VAR_ON_RCR_AM, null_addr);
-
-	return H2C_SUCCESS;
-}
-
-u8 set_stakey_hdl(struct adapter *padapter, u8 *pbuf)
-{
-	u16 ctrl = 0;
-	s16 cam_id = 0;
-	u8 ret = H2C_SUCCESS;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct set_stakey_parm	*pparm = (struct set_stakey_parm *)pbuf;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct sta_info *psta;
-
-	if (pparm->algorithm == _NO_PRIVACY_)
-		goto write_to_cam;
-
-	psta = rtw_get_stainfo(pstapriv, pparm->addr);
-	if (!psta) {
-		netdev_dbg(padapter->pnetdev, "%s sta:%pM not found\n",
-			   __func__, pparm->addr);
-		ret = H2C_REJECTED;
-		goto exit;
-	}
-
-	pmlmeinfo->enc_algo = pparm->algorithm;
-	cam_id = rtw_camid_alloc(padapter, psta, 0);
-	if (cam_id < 0)
-		goto exit;
-
-write_to_cam:
-	if (pparm->algorithm == _NO_PRIVACY_) {
-		while ((cam_id = rtw_camid_search(padapter, pparm->addr, -1)) >= 0) {
-			netdev_dbg(padapter->pnetdev,
-				   "clear key for addr:%pM, camid:%d\n",
-				   pparm->addr, cam_id);
-			clear_cam_entry(padapter, cam_id);
-			rtw_camid_free(padapter, cam_id);
-		}
-	} else {
-		netdev_dbg(padapter->pnetdev,
-			   "set pairwise key camid:%d, addr:%pM, kid:%d, type:%s\n",
-			   cam_id, pparm->addr, pparm->keyid,
-			   security_type_str(pparm->algorithm));
-		ctrl = BIT(15) | ((pparm->algorithm) << 2) | pparm->keyid;
-		write_cam(padapter, cam_id, ctrl, pparm->addr, pparm->key);
-	}
-	ret = H2C_SUCCESS_RSP;
-
-exit:
-	return ret;
-}
-
-u8 add_ba_hdl(struct adapter *padapter, unsigned char *pbuf)
-{
-	struct addBaReq_parm	*pparm = (struct addBaReq_parm *)pbuf;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	struct sta_info *psta = rtw_get_stainfo(&padapter->stapriv, pparm->addr);
-
-	if (!psta)
-		return	H2C_SUCCESS;
-
-	if (((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && (pmlmeinfo->HT_enable)) ||
-		((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE)) {
-		/* pmlmeinfo->ADDBA_retry_count = 0; */
-		/* pmlmeinfo->candidate_tid_bitmap |= (0x1 << pparm->tid); */
-		/* psta->htpriv.candidate_tid_bitmap |= BIT(pparm->tid); */
-		issue_action_BA(padapter, pparm->addr, WLAN_ACTION_ADDBA_REQ, (u16)pparm->tid);
-		/* _set_timer(&pmlmeext->ADDBA_timer, ADDBA_TO); */
-		_set_timer(&psta->addba_retry_timer, ADDBA_TO);
-	} else {
-		psta->htpriv.candidate_tid_bitmap &= ~BIT(pparm->tid);
-	}
-	return	H2C_SUCCESS;
-}
-
-u8 chk_bmc_sleepq_cmd(struct adapter *padapter)
-{
-	struct cmd_obj *ph2c;
-	struct cmd_priv *pcmdpriv = &(padapter->cmdpriv);
-	u8 res = _SUCCESS;
-
-	ph2c = kzalloc_obj(*ph2c, GFP_ATOMIC);
-	if (!ph2c) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	init_h2fwcmd_w_parm_no_parm_rsp(ph2c, CHK_BMC_SLEEPQ_CMD);
-
-	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-
-exit:
-	return res;
-}
-
-u8 set_tx_beacon_cmd(struct adapter *padapter)
-{
-	struct cmd_obj	*ph2c;
-	struct Tx_Beacon_param	*ptxBeacon_parm;
-	struct cmd_priv *pcmdpriv = &(padapter->cmdpriv);
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	u8 res = _SUCCESS;
-	int len_diff = 0;
-
-	ph2c = kzalloc_obj(*ph2c, GFP_ATOMIC);
-	if (!ph2c) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	ptxBeacon_parm = kzalloc_obj(*ptxBeacon_parm, GFP_ATOMIC);
-	if (!ptxBeacon_parm) {
-		kfree(ph2c);
-		res = _FAIL;
-		goto exit;
-	}
-
-	memcpy(&(ptxBeacon_parm->network), &(pmlmeinfo->network), sizeof(struct wlan_bssid_ex));
-
-	len_diff = update_hidden_ssid(ptxBeacon_parm->network.ies + _BEACON_IE_OFFSET_,
-				      ptxBeacon_parm->network.ie_length - _BEACON_IE_OFFSET_,
-				      pmlmeinfo->hidden_ssid_mode);
-	ptxBeacon_parm->network.ie_length += len_diff;
-
-	init_h2fwcmd_w_parm_no_rsp(ph2c, ptxBeacon_parm, TX_BEACON_CMD);
-
-	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
-
-exit:
-	return res;
-}
-
-static struct fwevent wlanevents[] = {
-	{0, rtw_dummy_event_callback},						/*  0 */
-	{0, NULL},								/*  1 */
-	{0, NULL},								/*  2 */
-	{0, NULL},								/*  3 */
-	{0, NULL},								/*  4 */
-	{0, NULL},								/*  5 */
-	{0, NULL},								/*  6 */
-	{0, NULL},								/*  7 */
-	{0, rtw_survey_event_callback},						/*  8 */
-	{sizeof(struct surveydone_event), rtw_surveydone_event_callback},	/*  9 */
-	{0, rtw_joinbss_event_callback},					/* 10 */
-	{sizeof(struct stassoc_event), rtw_stassoc_event_callback},		/* 11 */
-	{sizeof(struct stadel_event), rtw_stadel_event_callback},		/* 12 */
-	{0, rtw_dummy_event_callback},						/* 13 */
-	{0, rtw_dummy_event_callback},						/* 14 */
-	{0, NULL},								/* 15 */
-	{0, NULL},								/* 16 */
-	{0, NULL},								/* 17 */
-	{0, NULL},								/* 18 */
-	{0, rtw_fwdbg_event_callback},						/* 19 */
-	{0, NULL},								/* 20 */
-	{0, NULL},								/* 21 */
-	{0, NULL},								/* 22 */
-	{0, rtw_cpwm_event_callback},						/* 23 */
-	{0, NULL},								/* 24 */
-	{0, rtw_wmm_event_callback},						/* 25 */
-};
-
-u8 mlme_evt_hdl(struct adapter *padapter, unsigned char *pbuf)
-{
-	u8 evt_code;
-	u16 evt_sz;
-	uint	*peventbuf;
-	void (*event_callback)(struct adapter *dev, u8 *pbuf);
-	struct evt_priv *pevt_priv = &(padapter->evtpriv);
-
-	if (!pbuf)
-		goto _abort_event_;
-
-	peventbuf = (uint *)pbuf;
-	evt_sz = (u16)(*peventbuf & 0xffff);
-	evt_code = (u8)((*peventbuf >> 16) & 0xff);
-
-	/*  checking if event code is valid */
-	if (evt_code >= MAX_C2HEVT)
-		goto _abort_event_;
-
-	/*  checking if event size match the event parm size */
-	if ((wlanevents[evt_code].parmsize != 0) &&
-	    (wlanevents[evt_code].parmsize != evt_sz))
-		goto _abort_event_;
-
-	atomic_inc(&pevt_priv->event_seq);
-
-	peventbuf += 2;
-
-	if (peventbuf) {
-		event_callback = wlanevents[evt_code].event_callback;
-		event_callback(padapter, (u8 *)peventbuf);
-
-		pevt_priv->evt_done_cnt++;
-	}
-
-_abort_event_:
-	return H2C_SUCCESS;
-}
-
-u8 h2c_msg_hdl(struct adapter *padapter, unsigned char *pbuf)
-{
-	if (!pbuf)
-		return H2C_PARAMETERS_ERROR;
-
-	return H2C_SUCCESS;
-}
-
-u8 chk_bmc_sleepq_hdl(struct adapter *padapter, unsigned char *pbuf)
-{
-	struct sta_info *psta_bmc;
-	struct list_head *xmitframe_plist, *xmitframe_phead, *tmp;
-	struct xmit_frame *pxmitframe = NULL;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct sta_priv  *pstapriv = &padapter->stapriv;
-
-	/* for BC/MC Frames */
-	psta_bmc = rtw_get_bcmc_stainfo(padapter);
-	if (!psta_bmc)
-		return H2C_SUCCESS;
-
-	if ((pstapriv->tim_bitmap & BIT(0)) && (psta_bmc->sleepq_len > 0)) {
-		msleep(10);/*  10ms, ATIM(HIQ) Windows */
-
-		/* spin_lock_bh(&psta_bmc->sleep_q.lock); */
-		spin_lock_bh(&pxmitpriv->lock);
-
-		xmitframe_phead = get_list_head(&psta_bmc->sleep_q);
-		list_for_each_safe(xmitframe_plist, tmp, xmitframe_phead) {
-			pxmitframe = list_entry(xmitframe_plist,
-						struct xmit_frame, list);
-
-			list_del_init(&pxmitframe->list);
-
-			psta_bmc->sleepq_len--;
-			if (psta_bmc->sleepq_len > 0)
-				pxmitframe->attrib.mdata = 1;
-			else
-				pxmitframe->attrib.mdata = 0;
-
-			pxmitframe->attrib.triggered = 1;
-
-			if (xmitframe_hiq_filter(pxmitframe))
-				pxmitframe->attrib.qsel = 0x11;/* HIQ */
-
-			rtw_hal_xmitframe_enqueue(padapter, pxmitframe);
-		}
-
-		/* spin_unlock_bh(&psta_bmc->sleep_q.lock); */
-		spin_unlock_bh(&pxmitpriv->lock);
-
-		/* check hi queue and bmc_sleepq */
-		rtw_chk_hi_queue_cmd(padapter);
-	}
-
-	return H2C_SUCCESS;
-}
-
-u8 tx_beacon_hdl(struct adapter *padapter, unsigned char *pbuf)
-{
-	if (send_beacon(padapter) == _FAIL)
-		return H2C_PARAMETERS_ERROR;
-
-	/* tx bc/mc frames after update TIM */
-	chk_bmc_sleepq_hdl(padapter, NULL);
-
-	return H2C_SUCCESS;
-}
-
-int rtw_chk_start_clnt_join(struct adapter *padapter, u8 *ch, u8 *bw, u8 *offset)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	unsigned char cur_ch = pmlmeext->cur_channel;
-	unsigned char cur_bw = pmlmeext->cur_bwmode;
-	unsigned char cur_ch_offset = pmlmeext->cur_ch_offset;
-	bool connect_allow = true;
-
-	if (!ch || !bw || !offset) {
-		WARN_ON(1);
-		connect_allow = false;
-	}
-
-	if (connect_allow) {
-		*ch = cur_ch;
-		*bw = cur_bw;
-		*offset = cur_ch_offset;
-	}
-
-	return connect_allow ? _SUCCESS : _FAIL;
-}
-
-u8 set_ch_hdl(struct adapter *padapter, u8 *pbuf)
-{
-	struct set_ch_parm *set_ch_parm;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-	if (!pbuf)
-		return H2C_PARAMETERS_ERROR;
-
-	set_ch_parm = (struct set_ch_parm *)pbuf;
-
-	pmlmeext->cur_channel = set_ch_parm->ch;
-	pmlmeext->cur_ch_offset = set_ch_parm->ch_offset;
-	pmlmeext->cur_bwmode = set_ch_parm->bw;
-
-	set_channel_bwmode(padapter, set_ch_parm->ch, set_ch_parm->ch_offset, set_ch_parm->bw);
-
-	return	H2C_SUCCESS;
-}
-
-u8 set_chplan_hdl(struct adapter *padapter, unsigned char *pbuf)
-{
-	struct SetChannelPlan_param *setChannelPlan_param;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-	if (!pbuf)
-		return H2C_PARAMETERS_ERROR;
-
-	setChannelPlan_param = (struct SetChannelPlan_param *)pbuf;
-
-	pmlmeext->max_chan_nums = init_channel_set(padapter,
-						   setChannelPlan_param->channel_plan,
-						   pmlmeext->channel_set);
-	init_channel_list(padapter,
-			  pmlmeext->channel_set,
-			  pmlmeext->max_chan_nums,
-			  &pmlmeext->channel_list);
-
-	if (padapter->rtw_wdev && padapter->rtw_wdev->wiphy) {
-		struct regulatory_request request;
-
-		request.initiator = NL80211_REGDOM_SET_BY_DRIVER;
-		rtw_reg_notifier(padapter->rtw_wdev->wiphy, &request);
-	}
-
-	return	H2C_SUCCESS;
-}
-
-u8 set_csa_hdl(struct adapter *padapter, unsigned char *pbuf)
-{
-	return	H2C_REJECTED;
-}
-
-/*  TDLS_ESTABLISHED	: write RCR DATA BIT */
-/*  TDLS_CS_OFF		: go back to the channel linked with AP, terminating channel switch procedure */
-/*  TDLS_INIT_CH_SEN	: init channel sensing, receive all data and mgnt frame */
-/*  TDLS_DONE_CH_SEN	: channel sensing and report candidate channel */
-/*  TDLS_OFF_CH		: first time set channel to off channel */
-/*  TDLS_BASE_CH	: go back tp the channel linked with AP when set */
-/*			  base channel as target channel */
-/*  TDLS_P_OFF_CH	: periodically go to off channel */
-/*  TDLS_P_BASE_CH	: periodically go back to base channel */
-/*  TDLS_RS_RCR		: restore RCR */
-/*  TDLS_TEAR_STA	: free tdls sta */
-u8 tdls_hdl(struct adapter *padapter, unsigned char *pbuf)
-{
-	return H2C_REJECTED;
-}
-
-u8 run_in_thread_hdl(struct adapter *padapter, u8 *pbuf)
-{
-	struct RunInThread_param *p;
-
-	if (!pbuf)
-		return H2C_PARAMETERS_ERROR;
-	p = (struct RunInThread_param *)pbuf;
-
-	if (p->func)
-		p->func(p->context);
-
-	return H2C_SUCCESS;
-}
diff --git a/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c b/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c
deleted file mode 100644
index 448611ad8237..000000000000
--- a/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c
+++ /dev/null
@@ -1,1139 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <drv_types.h>
-#include <hal_data.h>
-#include <linux/jiffies.h>
-
-void _ips_enter(struct adapter *padapter)
-{
-	struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
-
-	pwrpriv->bips_processing = true;
-
-	/*  syn ips_mode with request */
-	pwrpriv->ips_mode = pwrpriv->ips_mode_req;
-
-	pwrpriv->ips_enter_cnts++;
-
-	if (rf_off == pwrpriv->change_rfpwrstate) {
-		pwrpriv->bpower_saving = true;
-
-		if (pwrpriv->ips_mode == IPS_LEVEL_2)
-			pwrpriv->bkeepfwalive = true;
-
-		rtw_ips_pwr_down(padapter);
-		pwrpriv->rf_pwrstate = rf_off;
-	}
-	pwrpriv->bips_processing = false;
-}
-
-void ips_enter(struct adapter *padapter)
-{
-	struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
-
-	hal_btcoex_IpsNotify(padapter, pwrpriv->ips_mode_req);
-
-	mutex_lock(&pwrpriv->lock);
-	_ips_enter(padapter);
-	mutex_unlock(&pwrpriv->lock);
-}
-
-int _ips_leave(struct adapter *padapter)
-{
-	struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
-	int result = _SUCCESS;
-
-	if ((pwrpriv->rf_pwrstate == rf_off) && (!pwrpriv->bips_processing)) {
-		pwrpriv->bips_processing = true;
-		pwrpriv->change_rfpwrstate = rf_on;
-		pwrpriv->ips_leave_cnts++;
-
-		result = rtw_ips_pwr_up(padapter);
-		if (result == _SUCCESS)
-			pwrpriv->rf_pwrstate = rf_on;
-		pwrpriv->bips_processing = false;
-
-		pwrpriv->bkeepfwalive = false;
-		pwrpriv->bpower_saving = false;
-	}
-
-	return result;
-}
-
-int ips_leave(struct adapter *padapter)
-{
-	struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
-	int ret;
-
-	mutex_lock(&pwrpriv->lock);
-	ret = _ips_leave(padapter);
-	mutex_unlock(&pwrpriv->lock);
-
-	if (ret == _SUCCESS)
-		hal_btcoex_IpsNotify(padapter, IPS_NONE);
-
-	return ret;
-}
-
-static bool rtw_pwr_unassociated_idle(struct adapter *adapter)
-{
-	struct adapter *buddy = adapter->pbuddy_adapter;
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	struct xmit_priv *pxmit_priv = &adapter->xmitpriv;
-
-	bool ret = false;
-
-	if (adapter_to_pwrctl(adapter)->bpower_saving)
-		goto exit;
-
-	if (time_before(jiffies, adapter_to_pwrctl(adapter)->ips_deny_time))
-		goto exit;
-
-	if (check_fwstate(pmlmepriv, WIFI_ASOC_STATE | WIFI_SITE_MONITOR) ||
-	    check_fwstate(pmlmepriv, WIFI_UNDER_LINKING | WIFI_UNDER_WPS) ||
-	    check_fwstate(pmlmepriv, WIFI_AP_STATE) ||
-	    check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE)
-	)
-		goto exit;
-
-	/* consider buddy, if exist */
-	if (buddy) {
-		struct mlme_priv *b_pmlmepriv = &buddy->mlmepriv;
-
-		if (check_fwstate(b_pmlmepriv, WIFI_ASOC_STATE | WIFI_SITE_MONITOR) ||
-		    check_fwstate(b_pmlmepriv, WIFI_UNDER_LINKING | WIFI_UNDER_WPS) ||
-		    check_fwstate(b_pmlmepriv, WIFI_AP_STATE) ||
-		    check_fwstate(b_pmlmepriv, WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE)
-		)
-			goto exit;
-	}
-
-	if (pxmit_priv->free_xmitbuf_cnt != NR_XMITBUFF ||
-	    pxmit_priv->free_xmit_extbuf_cnt != NR_XMIT_EXTBUFF) {
-		netdev_dbg(adapter->pnetdev,
-			   "There are some pkts to transmit\n");
-		netdev_dbg(adapter->pnetdev,
-			   "free_xmitbuf_cnt: %d, free_xmit_extbuf_cnt: %d\n",
-			   pxmit_priv->free_xmitbuf_cnt,
-			   pxmit_priv->free_xmit_extbuf_cnt);
-		goto exit;
-	}
-
-	ret = true;
-
-exit:
-	return ret;
-}
-
-/*
- * ATTENTION:
- *rtw_ps_processor() doesn't handle LPS.
- */
-void rtw_ps_processor(struct adapter *padapter)
-{
-	struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
-	u32 ps_deny = 0;
-
-	mutex_lock(&adapter_to_pwrctl(padapter)->lock);
-	ps_deny = rtw_ps_deny_get(padapter);
-	mutex_unlock(&adapter_to_pwrctl(padapter)->lock);
-	if (ps_deny != 0)
-		goto exit;
-
-	if (pwrpriv->bInSuspend) /* system suspend or autosuspend */
-		return;
-
-	pwrpriv->ps_processing = true;
-
-	if (pwrpriv->ips_mode_req == IPS_NONE)
-		goto exit;
-
-	if (!rtw_pwr_unassociated_idle(padapter))
-		goto exit;
-
-	if ((pwrpriv->rf_pwrstate == rf_on) && ((pwrpriv->pwr_state_check_cnts % 4) == 0)) {
-		pwrpriv->change_rfpwrstate = rf_off;
-		{
-			ips_enter(padapter);
-		}
-	}
-exit:
-	pwrpriv->ps_processing = false;
-}
-
-static void pwr_state_check_handler(struct timer_list *t)
-{
-	struct pwrctrl_priv *pwrctrlpriv =
-		timer_container_of(pwrctrlpriv, t, pwr_state_check_timer);
-	struct adapter *padapter = pwrctrlpriv->adapter;
-
-	rtw_ps_cmd(padapter);
-}
-
-void traffic_check_for_leave_lps(struct adapter *padapter, u8 tx, u32 tx_packets)
-{
-	static unsigned long start_time;
-	static u32 xmit_cnt;
-	u8 bLeaveLPS = false;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	if (tx) { /* from tx */
-		xmit_cnt += tx_packets;
-
-		if (start_time == 0)
-			start_time = jiffies;
-
-		if (jiffies_to_msecs(jiffies - start_time) > 2000) { /*  2 sec == watch dog timer */
-			if (xmit_cnt > 8) {
-				if (adapter_to_pwrctl(padapter)->bLeisurePs &&
-				    (adapter_to_pwrctl(padapter)->pwr_mode != PS_MODE_ACTIVE) &&
-				    !(hal_btcoex_IsBtControlLps(padapter))) {
-					bLeaveLPS = true;
-				}
-			}
-
-			start_time = jiffies;
-			xmit_cnt = 0;
-		}
-
-	} else { /*  from rx path */
-		if (pmlmepriv->link_detect_info.num_rx_unicast_ok_in_period > 4) {
-			if (adapter_to_pwrctl(padapter)->bLeisurePs &&
-			    (adapter_to_pwrctl(padapter)->pwr_mode != PS_MODE_ACTIVE) &&
-			    !(hal_btcoex_IsBtControlLps(padapter)))
-				bLeaveLPS = true;
-		}
-	}
-
-	if (bLeaveLPS)
-		/* rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_LEAVE, 1); */
-		rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_LEAVE, tx ? 0 : 1);
-}
-
-/*
- * Description:
- *This function MUST be called under power lock protect
- *
- * Parameters
- *padapter
- *pslv			power state level, only could be PS_STATE_S0 ~ PS_STATE_S4
- *
- */
-void rtw_set_rpwm(struct adapter *padapter, u8 pslv)
-{
-	u8 rpwm;
-	struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
-	u8 cpwm_orig;
-
-	pslv = PS_STATE(pslv);
-
-	if (!pwrpriv->brpwmtimeout) {
-		if (pwrpriv->rpwm == pslv ||
-		    (pwrpriv->rpwm >= PS_STATE_S2 && pslv >= PS_STATE_S2))
-			return;
-	}
-
-	if ((padapter->bSurpriseRemoved) || !(padapter->hw_init_completed)) {
-		pwrpriv->cpwm = PS_STATE_S4;
-		return;
-	}
-
-	if (padapter->driver_stopped) {
-		if (pslv < PS_STATE_S2)
-			return;
-	}
-
-	rpwm = pslv | pwrpriv->tog;
-	/*  only when from PS_STATE S0/S1 to S2 and higher needs ACK */
-	if ((pwrpriv->cpwm < PS_STATE_S2) && (pslv >= PS_STATE_S2))
-		rpwm |= PS_ACK;
-
-	pwrpriv->rpwm = pslv;
-
-	cpwm_orig = 0;
-	if (rpwm & PS_ACK)
-		rtw_hal_get_hwreg(padapter, HW_VAR_CPWM, &cpwm_orig);
-
-	if (rpwm & PS_ACK)
-		_set_timer(&pwrpriv->pwr_rpwm_timer, LPS_RPWM_WAIT_MS);
-	rtw_hal_set_hwreg(padapter, HW_VAR_SET_RPWM, (u8 *)(&rpwm));
-
-	pwrpriv->tog += 0x80;
-
-	/*  No LPS 32K, No Ack */
-	if (rpwm & PS_ACK) {
-		unsigned long start_time;
-		u8 cpwm_now;
-
-		start_time = jiffies;
-
-		/*  polling cpwm */
-		do {
-			mdelay(1);
-			rtw_hal_get_hwreg(padapter, HW_VAR_CPWM, &cpwm_now);
-			if ((cpwm_orig ^ cpwm_now) & 0x80) {
-				pwrpriv->cpwm = PS_STATE_S4;
-				pwrpriv->cpwm_tog = cpwm_now & PS_TOGGLE;
-				break;
-			}
-
-			if (jiffies_to_msecs(jiffies - start_time) > LPS_RPWM_WAIT_MS) {
-				_set_timer(&pwrpriv->pwr_rpwm_timer, 1);
-				break;
-			}
-		} while (1);
-	} else {
-		pwrpriv->cpwm = pslv;
-	}
-}
-
-static u8 PS_RDY_CHECK(struct adapter *padapter)
-{
-	unsigned long curr_time, delta_time;
-	struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	if (pwrpriv->bInSuspend)
-		return false;
-
-	curr_time = jiffies;
-
-	delta_time = curr_time - pwrpriv->delay_lps_last_time_stamp;
-
-	if (delta_time < LPS_DELAY_TIME)
-		return false;
-
-	if (check_fwstate(pmlmepriv, WIFI_SITE_MONITOR) ||
-	    check_fwstate(pmlmepriv, WIFI_UNDER_LINKING | WIFI_UNDER_WPS) ||
-	    check_fwstate(pmlmepriv, WIFI_AP_STATE) ||
-	    check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE) ||
-	    rtw_is_scan_deny(padapter)
-	)
-		return false;
-
-	if (padapter->securitypriv.dot11_auth_algrthm == dot11_auth_algrthm_8021x &&
-	    !padapter->securitypriv.binstallGrpkey)
-		return false;
-
-	if (!rtw_cfg80211_pwr_mgmt(padapter))
-		return false;
-
-	return true;
-}
-
-void rtw_set_ps_mode(struct adapter *padapter, u8 ps_mode,
-		     u8 smart_ps, u8 bcn_ant_mode, const char *msg)
-{
-	struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
-
-	if (ps_mode > PM_Card_Disable)
-		return;
-
-	if (pwrpriv->pwr_mode == ps_mode)
-		if (ps_mode == PS_MODE_ACTIVE)
-			return;
-
-	mutex_lock(&pwrpriv->lock);
-
-	/* if (pwrpriv->pwr_mode == PS_MODE_ACTIVE) */
-	if (ps_mode == PS_MODE_ACTIVE) {
-		if (!(hal_btcoex_IsBtControlLps(padapter)) ||
-		    (hal_btcoex_IsBtControlLps(padapter) &&
-		    !(hal_btcoex_IsLpsOn(padapter)))) {
-			pwrpriv->pwr_mode = ps_mode;
-			rtw_set_rpwm(padapter, PS_STATE_S4);
-
-			rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode));
-			pwrpriv->fw_current_in_ps_mode = false;
-
-			hal_btcoex_LpsNotify(padapter, ps_mode);
-		}
-	} else {
-		if ((PS_RDY_CHECK(padapter) &&
-		     check_fwstate(&padapter->mlmepriv, WIFI_ASOC_STATE)) ||
-		    ((hal_btcoex_IsBtControlLps(padapter)) && (hal_btcoex_IsLpsOn(padapter)))
-			) {
-			u8 pslv;
-
-			hal_btcoex_LpsNotify(padapter, ps_mode);
-
-			pwrpriv->fw_current_in_ps_mode = true;
-			pwrpriv->pwr_mode = ps_mode;
-			pwrpriv->smart_ps = smart_ps;
-			pwrpriv->bcn_ant_mode = bcn_ant_mode;
-			rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode));
-
-			pslv = PS_STATE_S2;
-			if (pwrpriv->alives == 0)
-				pslv = PS_STATE_S0;
-
-			if (!(hal_btcoex_IsBtDisabled(padapter)) &&
-			    (hal_btcoex_IsBtControlLps(padapter))) {
-				u8 val8;
-
-				val8 = hal_btcoex_LpsVal(padapter);
-				if (val8 & BIT(4))
-					pslv = PS_STATE_S2;
-			}
-
-			rtw_set_rpwm(padapter, pslv);
-		}
-	}
-
-	mutex_unlock(&pwrpriv->lock);
-}
-
-/*
- * Return:
- * 0:           Leave OK
- * -ETIMEDOUT:  Timeout
- * -ENODEV:     Other error
- */
-int LPS_RF_ON_check(struct adapter *padapter, u32 delay_ms)
-{
-	unsigned long start_time;
-	u8 bAwake = false;
-
-	start_time = jiffies;
-	while (1) {
-		rtw_hal_get_hwreg(padapter, HW_VAR_FWLPS_RF_ON, &bAwake);
-		if (bAwake)
-			return 0;
-
-		if (padapter->bSurpriseRemoved)
-			return -ENODEV;
-
-		if (jiffies_to_msecs(jiffies - start_time) > delay_ms)
-			return -ETIMEDOUT;
-
-		msleep(1);
-	}
-}
-
-/* Description: Enter the leisure power save mode. */
-void LPS_Enter(struct adapter *padapter, const char *msg)
-{
-	struct dvobj_priv *dvobj = adapter_to_dvobj(padapter);
-	struct pwrctrl_priv *pwrpriv = dvobj_to_pwrctl(dvobj);
-	int n_assoc_iface = 0;
-	char buf[32] = {0};
-
-	if (hal_btcoex_IsBtControlLps(padapter))
-		return;
-
-	/* Skip lps enter request if number of associated adapters is not 1 */
-	if (check_fwstate(&dvobj->padapters->mlmepriv, WIFI_ASOC_STATE))
-		n_assoc_iface++;
-	if (n_assoc_iface != 1)
-		return;
-
-	if (!PS_RDY_CHECK(dvobj->padapters))
-		return;
-
-	if (pwrpriv->bLeisurePs) {
-		/*  Idle for a while if we connect to AP a while ago. */
-		if (pwrpriv->LpsIdleCount >= 2) { /*   4 Sec */
-			if (pwrpriv->pwr_mode == PS_MODE_ACTIVE) {
-				scnprintf(buf, sizeof(buf), "WIFI-%s", msg);
-				pwrpriv->bpower_saving = true;
-				rtw_set_ps_mode(padapter, pwrpriv->power_mgnt,
-						padapter->registrypriv.smart_ps, 0, buf);
-			}
-		} else {
-			pwrpriv->LpsIdleCount++;
-		}
-	}
-}
-
-/* Description: Leave the leisure power save mode. */
-void LPS_Leave(struct adapter *padapter, const char *msg)
-{
-#define LPS_LEAVE_TIMEOUT_MS 100
-
-	struct dvobj_priv *dvobj = adapter_to_dvobj(padapter);
-	struct pwrctrl_priv *pwrpriv = dvobj_to_pwrctl(dvobj);
-	char buf[32] = {0};
-
-	if (hal_btcoex_IsBtControlLps(padapter))
-		return;
-
-	if (pwrpriv->bLeisurePs) {
-		if (pwrpriv->pwr_mode != PS_MODE_ACTIVE) {
-			scnprintf(buf, sizeof(buf), "WIFI-%s", msg);
-			rtw_set_ps_mode(padapter, PS_MODE_ACTIVE, 0, 0, buf);
-
-			if (pwrpriv->pwr_mode == PS_MODE_ACTIVE)
-				LPS_RF_ON_check(padapter, LPS_LEAVE_TIMEOUT_MS);
-		}
-	}
-
-	pwrpriv->bpower_saving = false;
-}
-
-void LeaveAllPowerSaveModeDirect(struct adapter *Adapter)
-{
-	struct adapter *pri_padapter = GET_PRIMARY_ADAPTER(Adapter);
-	struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
-	struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(Adapter);
-
-	if (Adapter->bSurpriseRemoved)
-		return;
-
-	if (check_fwstate(pmlmepriv, _FW_LINKED)) { /* connect */
-
-		if (pwrpriv->pwr_mode == PS_MODE_ACTIVE)
-			return;
-
-		mutex_lock(&pwrpriv->lock);
-
-		rtw_set_rpwm(Adapter, PS_STATE_S4);
-
-		mutex_unlock(&pwrpriv->lock);
-
-		rtw_lps_ctrl_wk_cmd(pri_padapter, LPS_CTRL_LEAVE, 0);
-	} else {
-		if (pwrpriv->rf_pwrstate == rf_off)
-			ips_leave(pri_padapter);
-	}
-}
-
-/*  */
-/*  Description: Leave all power save mode: LPS, FwLPS, IPS if needed. */
-/*  Move code to function by tynli. 2010.03.26. */
-/*  */
-void LeaveAllPowerSaveMode(struct adapter *Adapter)
-{
-	struct dvobj_priv *dvobj = adapter_to_dvobj(Adapter);
-	u8 enqueue = 0;
-	int n_assoc_iface = 0;
-
-	if (!Adapter->bup)
-		return;
-
-	if (Adapter->bSurpriseRemoved)
-		return;
-
-	if (check_fwstate(&dvobj->padapters->mlmepriv, WIFI_ASOC_STATE))
-		n_assoc_iface++;
-
-	if (n_assoc_iface) { /* connect */
-		enqueue = 1;
-
-		rtw_lps_ctrl_wk_cmd(Adapter, LPS_CTRL_LEAVE, enqueue);
-
-		LPS_Leave_check(Adapter);
-	} else {
-		if (adapter_to_pwrctl(Adapter)->rf_pwrstate == rf_off)
-			ips_leave(Adapter);
-	}
-}
-
-void LPS_Leave_check(struct adapter *padapter)
-{
-	struct pwrctrl_priv *pwrpriv;
-	unsigned long	start_time;
-	u8 bReady;
-
-	pwrpriv = adapter_to_pwrctl(padapter);
-
-	bReady = false;
-	start_time = jiffies;
-
-	cond_resched();
-
-	while (1) {
-		mutex_lock(&pwrpriv->lock);
-
-		if (padapter->bSurpriseRemoved ||
-		    !(padapter->hw_init_completed) ||
-		    (pwrpriv->pwr_mode == PS_MODE_ACTIVE))
-			bReady = true;
-
-		mutex_unlock(&pwrpriv->lock);
-
-		if (bReady)
-			break;
-
-		if (jiffies_to_msecs(jiffies - start_time) > 100)
-			break;
-
-		msleep(1);
-	}
-}
-
-/*
- * Caller:ISR handler...
- *
- * This will be called when CPWM interrupt is up.
- *
- * using to update cpwn of drv; and drv will make a decision to up or down pwr level
- */
-void cpwm_int_hdl(struct adapter *padapter, struct reportpwrstate_parm *preportpwrstate)
-{
-	struct pwrctrl_priv *pwrpriv;
-
-	pwrpriv = adapter_to_pwrctl(padapter);
-
-	mutex_lock(&pwrpriv->lock);
-
-	if (pwrpriv->rpwm < PS_STATE_S2)
-		goto exit;
-
-	pwrpriv->cpwm = PS_STATE(preportpwrstate->state);
-	pwrpriv->cpwm_tog = preportpwrstate->state & PS_TOGGLE;
-
-	if (pwrpriv->cpwm >= PS_STATE_S2) {
-		if (pwrpriv->alives & CMD_ALIVE)
-			complete(&padapter->cmdpriv.cmd_queue_comp);
-
-		if (pwrpriv->alives & XMIT_ALIVE)
-			complete(&padapter->xmitpriv.xmit_comp);
-	}
-
-exit:
-	mutex_unlock(&pwrpriv->lock);
-}
-
-static void cpwm_event_callback(struct work_struct *work)
-{
-	struct pwrctrl_priv *pwrpriv = container_of(work, struct pwrctrl_priv, cpwm_event);
-	struct dvobj_priv *dvobj = pwrctl_to_dvobj(pwrpriv);
-	struct adapter *adapter = dvobj->if1;
-	struct reportpwrstate_parm report;
-
-	report.state = PS_STATE_S2;
-	cpwm_int_hdl(adapter, &report);
-}
-
-static void rpwmtimeout_workitem_callback(struct work_struct *work)
-{
-	struct adapter *padapter;
-	struct dvobj_priv *dvobj;
-	struct pwrctrl_priv *pwrpriv;
-
-	pwrpriv = container_of(work, struct pwrctrl_priv, rpwmtimeoutwi);
-	dvobj = pwrctl_to_dvobj(pwrpriv);
-	padapter = dvobj->if1;
-
-	mutex_lock(&pwrpriv->lock);
-	if ((pwrpriv->rpwm == pwrpriv->cpwm) || (pwrpriv->cpwm >= PS_STATE_S2))
-		goto exit;
-
-	mutex_unlock(&pwrpriv->lock);
-
-	if (rtw_read8(padapter, 0x100) != 0xEA) {
-		struct reportpwrstate_parm report;
-
-		report.state = PS_STATE_S2;
-		cpwm_int_hdl(padapter, &report);
-
-		return;
-	}
-
-	mutex_lock(&pwrpriv->lock);
-
-	if ((pwrpriv->rpwm == pwrpriv->cpwm) || (pwrpriv->cpwm >= PS_STATE_S2))
-		goto exit;
-
-	pwrpriv->brpwmtimeout = true;
-	rtw_set_rpwm(padapter, pwrpriv->rpwm);
-	pwrpriv->brpwmtimeout = false;
-
-exit:
-	mutex_unlock(&pwrpriv->lock);
-}
-
-/*
- * This function is a timer handler, can't do any IO in it.
- */
-static void pwr_rpwm_timeout_handler(struct timer_list *t)
-{
-	struct pwrctrl_priv *pwrpriv = timer_container_of(pwrpriv, t,
-							  pwr_rpwm_timer);
-
-	if ((pwrpriv->rpwm == pwrpriv->cpwm) || (pwrpriv->cpwm >= PS_STATE_S2))
-		return;
-
-	_set_workitem(&pwrpriv->rpwmtimeoutwi);
-}
-
-static inline void register_task_alive(struct pwrctrl_priv *pwrctrl, u32 tag)
-{
-	pwrctrl->alives |= tag;
-}
-
-static inline void unregister_task_alive(struct pwrctrl_priv *pwrctrl, u32 tag)
-{
-	pwrctrl->alives &= ~tag;
-}
-
-/*
- * Description:
- *Check if the fw_pwrstate is okay for I/O.
- *If not (cpwm is less than S2), then the sub-routine
- *will raise the cpwm to be greater than or equal to S2.
- *
- *Calling Context: Passive
- *
- *Constraint:
- *	1. this function will request pwrctrl->lock
- *
- * Return Value:
- *_SUCCESS	hardware is ready for I/O
- *_FAIL		can't I/O right now
- */
-s32 rtw_register_task_alive(struct adapter *padapter, u32 task)
-{
-	s32 res;
-	struct pwrctrl_priv *pwrctrl;
-	u8 pslv;
-
-	res = _SUCCESS;
-	pwrctrl = adapter_to_pwrctl(padapter);
-	pslv = PS_STATE_S2;
-
-	mutex_lock(&pwrctrl->lock);
-
-	register_task_alive(pwrctrl, task);
-
-	if (pwrctrl->fw_current_in_ps_mode) {
-		if (pwrctrl->cpwm < pslv) {
-			if (pwrctrl->cpwm < PS_STATE_S2)
-				res = _FAIL;
-			if (pwrctrl->rpwm < pslv)
-				rtw_set_rpwm(padapter, pslv);
-		}
-	}
-
-	mutex_unlock(&pwrctrl->lock);
-
-	if (res == _FAIL)
-		if (pwrctrl->cpwm >= PS_STATE_S2)
-			res = _SUCCESS;
-
-	return res;
-}
-
-/*
- * Description:
- *If task is done, call this func. to power down firmware again.
- *
- *Constraint:
- *	1. this function will request pwrctrl->lock
- *
- * Return Value:
- *none
- */
-void rtw_unregister_task_alive(struct adapter *padapter, u32 task)
-{
-	struct pwrctrl_priv *pwrctrl;
-	u8 pslv;
-
-	pwrctrl = adapter_to_pwrctl(padapter);
-	pslv = PS_STATE_S0;
-
-	if (!(hal_btcoex_IsBtDisabled(padapter)) && hal_btcoex_IsBtControlLps(padapter)) {
-		u8 val8;
-
-		val8 = hal_btcoex_LpsVal(padapter);
-		if (val8 & BIT(4))
-			pslv = PS_STATE_S2;
-	}
-
-	mutex_lock(&pwrctrl->lock);
-
-	unregister_task_alive(pwrctrl, task);
-
-	if ((pwrctrl->pwr_mode != PS_MODE_ACTIVE) && pwrctrl->fw_current_in_ps_mode) {
-		if (pwrctrl->cpwm > pslv) {
-			if ((pslv >= PS_STATE_S2) || (pwrctrl->alives == 0))
-				rtw_set_rpwm(padapter, pslv);
-		}
-	}
-
-	mutex_unlock(&pwrctrl->lock);
-}
-
-/*
- * Caller: rtw_xmit_thread
- *
- * Check if the fw_pwrstate is okay for xmit.
- * If not (cpwm is less than S3), then the sub-routine
- * will raise the cpwm to be greater than or equal to S3.
- *
- * Calling Context: Passive
- *
- * Return Value:
- * _SUCCESS	rtw_xmit_thread can write fifo/txcmd afterwards.
- * _FAIL		rtw_xmit_thread can not do anything.
- */
-s32 rtw_register_tx_alive(struct adapter *padapter)
-{
-	s32 res;
-	struct pwrctrl_priv *pwrctrl;
-	u8 pslv;
-
-	res = _SUCCESS;
-	pwrctrl = adapter_to_pwrctl(padapter);
-	pslv = PS_STATE_S2;
-
-	mutex_lock(&pwrctrl->lock);
-
-	register_task_alive(pwrctrl, XMIT_ALIVE);
-
-	if (pwrctrl->fw_current_in_ps_mode) {
-		if (pwrctrl->cpwm < pslv) {
-			if (pwrctrl->cpwm < PS_STATE_S2)
-				res = _FAIL;
-			if (pwrctrl->rpwm < pslv)
-				rtw_set_rpwm(padapter, pslv);
-		}
-	}
-
-	mutex_unlock(&pwrctrl->lock);
-
-	if (res == _FAIL)
-		if (pwrctrl->cpwm >= PS_STATE_S2)
-			res = _SUCCESS;
-
-	return res;
-}
-
-/*
- * Caller: rtw_cmd_thread
- *
- * Check if the fw_pwrstate is okay for issuing cmd.
- * If not (cpwm should be is less than S2), then the sub-routine
- * will raise the cpwm to be greater than or equal to S2.
- *
- * Calling Context: Passive
- *
- * Return Value:
- *_SUCCESS	rtw_cmd_thread can issue cmds to firmware afterwards.
- *_FAIL		rtw_cmd_thread can not do anything.
- */
-s32 rtw_register_cmd_alive(struct adapter *padapter)
-{
-	s32 res;
-	struct pwrctrl_priv *pwrctrl;
-	u8 pslv;
-
-	res = _SUCCESS;
-	pwrctrl = adapter_to_pwrctl(padapter);
-	pslv = PS_STATE_S2;
-
-	mutex_lock(&pwrctrl->lock);
-
-	register_task_alive(pwrctrl, CMD_ALIVE);
-
-	if (pwrctrl->fw_current_in_ps_mode) {
-		if (pwrctrl->cpwm < pslv) {
-			if (pwrctrl->cpwm < PS_STATE_S2)
-				res = _FAIL;
-			if (pwrctrl->rpwm < pslv)
-				rtw_set_rpwm(padapter, pslv);
-		}
-	}
-
-	mutex_unlock(&pwrctrl->lock);
-
-	if (res == _FAIL)
-		if (pwrctrl->cpwm >= PS_STATE_S2)
-			res = _SUCCESS;
-
-	return res;
-}
-
-/*
- * Caller: ISR
- *
- * If ISR's txdone,
- * No more pkts for TX,
- * Then driver shall call this fun. to power down firmware again.
- */
-void rtw_unregister_tx_alive(struct adapter *padapter)
-{
-	struct pwrctrl_priv *pwrctrl;
-	u8 pslv;
-
-	pwrctrl = adapter_to_pwrctl(padapter);
-	pslv = PS_STATE_S0;
-
-	if (!(hal_btcoex_IsBtDisabled(padapter)) && hal_btcoex_IsBtControlLps(padapter)) {
-		u8 val8;
-
-		val8 = hal_btcoex_LpsVal(padapter);
-		if (val8 & BIT(4))
-			pslv = PS_STATE_S2;
-	}
-
-	mutex_lock(&pwrctrl->lock);
-
-	unregister_task_alive(pwrctrl, XMIT_ALIVE);
-
-	if ((pwrctrl->pwr_mode != PS_MODE_ACTIVE) && pwrctrl->fw_current_in_ps_mode) {
-		if (pwrctrl->cpwm > pslv)
-			if ((pslv >= PS_STATE_S2) || (pwrctrl->alives == 0))
-				rtw_set_rpwm(padapter, pslv);
-	}
-
-	mutex_unlock(&pwrctrl->lock);
-}
-
-/*
- * Caller: ISR
- *
- * If all commands have been done,
- * and no more command to do,
- * then driver shall call this fun. to power down firmware again.
- */
-void rtw_unregister_cmd_alive(struct adapter *padapter)
-{
-	struct pwrctrl_priv *pwrctrl;
-	u8 pslv;
-
-	pwrctrl = adapter_to_pwrctl(padapter);
-	pslv = PS_STATE_S0;
-
-	if (!(hal_btcoex_IsBtDisabled(padapter)) && hal_btcoex_IsBtControlLps(padapter)) {
-		u8 val8;
-
-		val8 = hal_btcoex_LpsVal(padapter);
-		if (val8 & BIT(4))
-			pslv = PS_STATE_S2;
-	}
-
-	mutex_lock(&pwrctrl->lock);
-
-	unregister_task_alive(pwrctrl, CMD_ALIVE);
-
-	if ((pwrctrl->pwr_mode != PS_MODE_ACTIVE) && pwrctrl->fw_current_in_ps_mode) {
-		if (pwrctrl->cpwm > pslv) {
-			if ((pslv >= PS_STATE_S2) || (pwrctrl->alives == 0))
-				rtw_set_rpwm(padapter, pslv);
-		}
-	}
-
-	mutex_unlock(&pwrctrl->lock);
-}
-
-void rtw_init_pwrctrl_priv(struct adapter *padapter)
-{
-	struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(padapter);
-
-	mutex_init(&pwrctrlpriv->lock);
-	pwrctrlpriv->rf_pwrstate = rf_on;
-	pwrctrlpriv->ips_enter_cnts = 0;
-	pwrctrlpriv->ips_leave_cnts = 0;
-	pwrctrlpriv->bips_processing = false;
-
-	pwrctrlpriv->ips_mode = padapter->registrypriv.ips_mode;
-	pwrctrlpriv->ips_mode_req = padapter->registrypriv.ips_mode;
-
-	pwrctrlpriv->pwr_state_check_interval = RTW_PWR_STATE_CHK_INTERVAL;
-	pwrctrlpriv->pwr_state_check_cnts = 0;
-	pwrctrlpriv->bInternalAutoSuspend = false;
-	pwrctrlpriv->bInSuspend = false;
-	pwrctrlpriv->bkeepfwalive = false;
-
-	pwrctrlpriv->LpsIdleCount = 0;
-	pwrctrlpriv->power_mgnt = padapter->registrypriv.power_mgnt;/*  PS_MODE_MIN; */
-	pwrctrlpriv->bLeisurePs = pwrctrlpriv->power_mgnt != PS_MODE_ACTIVE;
-
-	pwrctrlpriv->fw_current_in_ps_mode = false;
-
-	pwrctrlpriv->rpwm = 0;
-	pwrctrlpriv->cpwm = PS_STATE_S4;
-
-	pwrctrlpriv->pwr_mode = PS_MODE_ACTIVE;
-	pwrctrlpriv->smart_ps = padapter->registrypriv.smart_ps;
-	pwrctrlpriv->bcn_ant_mode = 0;
-	pwrctrlpriv->dtim = 0;
-
-	pwrctrlpriv->tog = 0x80;
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_SET_RPWM, (u8 *)(&pwrctrlpriv->rpwm));
-
-	_init_workitem(&pwrctrlpriv->cpwm_event, cpwm_event_callback, NULL);
-
-	pwrctrlpriv->brpwmtimeout = false;
-	pwrctrlpriv->adapter = padapter;
-	_init_workitem(&pwrctrlpriv->rpwmtimeoutwi, rpwmtimeout_workitem_callback, NULL);
-	timer_setup(&pwrctrlpriv->pwr_rpwm_timer, pwr_rpwm_timeout_handler, 0);
-	timer_setup(&pwrctrlpriv->pwr_state_check_timer,
-		    pwr_state_check_handler, 0);
-
-	pwrctrlpriv->wowlan_mode = false;
-	pwrctrlpriv->wowlan_ap_mode = false;
-}
-
-void rtw_free_pwrctrl_priv(struct adapter *adapter)
-{
-}
-
-inline void rtw_set_ips_deny(struct adapter *padapter, u32 ms)
-{
-	struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
-
-	pwrpriv->ips_deny_time = jiffies + msecs_to_jiffies(ms);
-}
-
-/*
- * rtw_pwr_wakeup - Wake the NIC up from: 1)IPS. 2)USB autosuspend
- * @adapter: pointer to struct adapter structure
- * @ips_deffer_ms: the ms will prevent from falling into IPS after wakeup
- * Return _SUCCESS or _FAIL
- */
-
-int _rtw_pwr_wakeup(struct adapter *padapter, u32 ips_deffer_ms, const char *caller)
-{
-	struct dvobj_priv *dvobj = adapter_to_dvobj(padapter);
-	struct pwrctrl_priv *pwrpriv = dvobj_to_pwrctl(dvobj);
-	struct mlme_priv *pmlmepriv;
-	int ret = _SUCCESS;
-	unsigned long start = jiffies;
-	unsigned long deny_time = jiffies + msecs_to_jiffies(ips_deffer_ms);
-
-	/* for LPS */
-	LeaveAllPowerSaveMode(padapter);
-
-	/* IPS still bound with primary adapter */
-	padapter = GET_PRIMARY_ADAPTER(padapter);
-	pmlmepriv = &padapter->mlmepriv;
-
-	if (time_before(pwrpriv->ips_deny_time, deny_time))
-		pwrpriv->ips_deny_time = deny_time;
-
-	if (pwrpriv->ps_processing)
-		while (pwrpriv->ps_processing && jiffies_to_msecs(jiffies - start) <= 3000)
-			mdelay(10);
-
-	if (!(pwrpriv->bInternalAutoSuspend) && pwrpriv->bInSuspend)
-		while (pwrpriv->bInSuspend && jiffies_to_msecs(jiffies - start) <= 3000
-		)
-			mdelay(10);
-
-	/* System suspend is not allowed to wakeup */
-	if (!(pwrpriv->bInternalAutoSuspend) && pwrpriv->bInSuspend) {
-		ret = _FAIL;
-		goto exit;
-	}
-
-	/* block??? */
-	if (pwrpriv->bInternalAutoSuspend  && padapter->net_closed) {
-		ret = _FAIL;
-		goto exit;
-	}
-
-	/* I think this should be check in IPS, LPS, autosuspend functions... */
-	if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-		ret = _SUCCESS;
-		goto exit;
-	}
-
-	if (rf_off == pwrpriv->rf_pwrstate) {
-		{
-			if (ips_leave(padapter) == _FAIL) {
-				ret = _FAIL;
-				goto exit;
-			}
-		}
-	}
-
-	/* TODO: the following checking need to be merged... */
-	if (padapter->driver_stopped || !padapter->bup || !padapter->hw_init_completed) {
-		ret = false;
-		goto exit;
-	}
-
-exit:
-	deny_time = jiffies + msecs_to_jiffies(ips_deffer_ms);
-	if (time_before(pwrpriv->ips_deny_time, deny_time))
-		pwrpriv->ips_deny_time = deny_time;
-	return ret;
-}
-
-int rtw_pm_set_lps(struct adapter *padapter, u8 mode)
-{
-	int	ret = 0;
-	struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(padapter);
-
-	if (mode < PS_MODE_NUM) {
-		if (pwrctrlpriv->power_mgnt != mode) {
-			if (mode == PS_MODE_ACTIVE)
-				LeaveAllPowerSaveMode(padapter);
-			else
-				pwrctrlpriv->LpsIdleCount = 2;
-
-			pwrctrlpriv->power_mgnt = mode;
-			pwrctrlpriv->bLeisurePs =
-				pwrctrlpriv->power_mgnt != PS_MODE_ACTIVE;
-		}
-	} else {
-		ret = -EINVAL;
-	}
-
-	return ret;
-}
-
-int rtw_pm_set_ips(struct adapter *padapter, u8 mode)
-{
-	struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(padapter);
-
-	if (mode == IPS_NORMAL || mode == IPS_LEVEL_2) {
-		rtw_ips_mode_req(pwrctrlpriv, mode);
-		return 0;
-	} else if (mode == IPS_NONE) {
-		rtw_ips_mode_req(pwrctrlpriv, mode);
-		if ((padapter->bSurpriseRemoved == 0) && (rtw_pwr_wakeup(padapter) == _FAIL))
-			return -EFAULT;
-	} else {
-		return -EINVAL;
-	}
-
-	return 0;
-}
-
-/*
- * ATTENTION:
- *This function will request pwrctrl LOCK!
- */
-void rtw_ps_deny(struct adapter *padapter, enum ps_deny_reason reason)
-{
-	struct pwrctrl_priv *pwrpriv;
-
-	pwrpriv = adapter_to_pwrctl(padapter);
-
-	mutex_lock(&pwrpriv->lock);
-	pwrpriv->ps_deny |= BIT(reason);
-	mutex_unlock(&pwrpriv->lock);
-}
-
-/*
- * ATTENTION:
- *This function will request pwrctrl LOCK!
- */
-void rtw_ps_deny_cancel(struct adapter *padapter, enum ps_deny_reason reason)
-{
-	struct pwrctrl_priv *pwrpriv;
-
-	pwrpriv = adapter_to_pwrctl(padapter);
-
-	mutex_lock(&pwrpriv->lock);
-	pwrpriv->ps_deny &= ~BIT(reason);
-	mutex_unlock(&pwrpriv->lock);
-}
-
-/*
- * ATTENTION:
- *Before calling this function pwrctrl lock should be occupied already,
- *otherwise it may return incorrect value.
- */
-u32 rtw_ps_deny_get(struct adapter *padapter)
-{
-	return adapter_to_pwrctl(padapter)->ps_deny;
-}
diff --git a/drivers/staging/rtl8723bs/core/rtw_recv.c b/drivers/staging/rtl8723bs/core/rtw_recv.c
deleted file mode 100644
index 7568fc514d7c..000000000000
--- a/drivers/staging/rtl8723bs/core/rtw_recv.c
+++ /dev/null
@@ -1,2249 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <drv_types.h>
-#include <linux/jiffies.h>
-#include <rtw_recv.h>
-#include <net/cfg80211.h>
-#include <linux/unaligned.h>
-
-static u8 SNAP_ETH_TYPE_IPX[2] = {0x81, 0x37};
-static u8 SNAP_ETH_TYPE_APPLETALK_AARP[2] = {0x80, 0xf3};
-
-static void rtw_signal_stat_timer_hdl(struct timer_list *t);
-
-void _rtw_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv)
-{
-	memset((u8 *)psta_recvpriv, 0, sizeof(struct sta_recv_priv));
-
-	spin_lock_init(&psta_recvpriv->lock);
-
-	INIT_LIST_HEAD(&psta_recvpriv->defrag_q.queue);
-	spin_lock_init(&psta_recvpriv->defrag_q.lock);
-}
-
-signed int _rtw_init_recv_priv(struct recv_priv *precvpriv, struct adapter *padapter)
-{
-	signed int i;
-	union recv_frame *precvframe;
-	signed int	res = _SUCCESS;
-
-	spin_lock_init(&precvpriv->lock);
-
-	INIT_LIST_HEAD(&precvpriv->free_recv_queue.queue);
-	spin_lock_init(&precvpriv->free_recv_queue.lock);
-	INIT_LIST_HEAD(&precvpriv->recv_pending_queue.queue);
-	spin_lock_init(&precvpriv->recv_pending_queue.lock);
-	INIT_LIST_HEAD(&precvpriv->uc_swdec_pending_queue.queue);
-	spin_lock_init(&precvpriv->uc_swdec_pending_queue.lock);
-
-	precvpriv->adapter = padapter;
-
-	precvpriv->free_recvframe_cnt = NR_RECVFRAME;
-
-	precvpriv->pallocated_frame_buf = vzalloc(NR_RECVFRAME * sizeof(union recv_frame)
-						 + RXFRAME_ALIGN_SZ);
-
-	if (!precvpriv->pallocated_frame_buf) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	precvpriv->precv_frame_buf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(precvpriv->pallocated_frame_buf), RXFRAME_ALIGN_SZ);
-	/* precvpriv->precv_frame_buf = precvpriv->pallocated_frame_buf + RXFRAME_ALIGN_SZ - */
-	/* ((SIZE_PTR) (precvpriv->pallocated_frame_buf) &(RXFRAME_ALIGN_SZ-1)); */
-
-	precvframe = (union recv_frame *)precvpriv->precv_frame_buf;
-
-	for (i = 0; i < NR_RECVFRAME; i++) {
-		INIT_LIST_HEAD(&(precvframe->u.list));
-
-		list_add_tail(&(precvframe->u.list), &(precvpriv->free_recv_queue.queue));
-
-		precvframe->u.hdr.pkt_newalloc = NULL;
-		precvframe->u.hdr.pkt = NULL;
-
-		precvframe->u.hdr.len = 0;
-
-		precvframe->u.hdr.adapter = padapter;
-		precvframe++;
-	}
-
-	res = rtw_hal_init_recv_priv(padapter);
-
-	timer_setup(&precvpriv->signal_stat_timer, rtw_signal_stat_timer_hdl,
-		    0);
-
-	precvpriv->signal_stat_sampling_interval = 2000; /* ms */
-
-	rtw_set_signal_stat_timer(precvpriv);
-
-exit:
-	return res;
-}
-
-void _rtw_free_recv_priv(struct recv_priv *precvpriv)
-{
-	signed int i;
-	union recv_frame *precvframe;
-	struct adapter	*padapter = precvpriv->adapter;
-
-	rtw_free_uc_swdec_pending_queue(padapter);
-
-	precvframe = (union recv_frame *)precvpriv->precv_frame_buf;
-
-	for (i = 0; i < NR_RECVFRAME; i++) {
-		if (precvframe->u.hdr.pkt) {
-			/* free skb by driver */
-			dev_kfree_skb_any(precvframe->u.hdr.pkt);
-			precvframe->u.hdr.pkt = NULL;
-		}
-		precvframe++;
-	}
-
-	vfree(precvpriv->pallocated_frame_buf);
-
-	rtw_hal_free_recv_priv(padapter);
-}
-
-union recv_frame *_rtw_alloc_recvframe(struct __queue *pfree_recv_queue)
-{
-	union recv_frame  *precvframe;
-	struct list_head	*plist, *phead;
-	struct adapter *padapter;
-	struct recv_priv *precvpriv;
-
-	if (list_empty(&pfree_recv_queue->queue)) {
-		precvframe = NULL;
-	} else {
-		phead = get_list_head(pfree_recv_queue);
-
-		plist = get_next(phead);
-
-		precvframe = (union recv_frame *)plist;
-
-		list_del_init(&precvframe->u.hdr.list);
-		padapter = precvframe->u.hdr.adapter;
-		if (padapter) {
-			precvpriv = &padapter->recvpriv;
-			if (pfree_recv_queue == &precvpriv->free_recv_queue)
-				precvpriv->free_recvframe_cnt--;
-		}
-	}
-	return precvframe;
-}
-
-union recv_frame *rtw_alloc_recvframe(struct __queue *pfree_recv_queue)
-{
-	union recv_frame  *precvframe;
-
-	spin_lock_bh(&pfree_recv_queue->lock);
-
-	precvframe = _rtw_alloc_recvframe(pfree_recv_queue);
-
-	spin_unlock_bh(&pfree_recv_queue->lock);
-
-	return precvframe;
-}
-
-int rtw_free_recvframe(union recv_frame *precvframe, struct __queue *pfree_recv_queue)
-{
-	struct adapter *padapter = precvframe->u.hdr.adapter;
-	struct recv_priv *precvpriv = &padapter->recvpriv;
-
-	if (precvframe->u.hdr.pkt) {
-		dev_kfree_skb_any(precvframe->u.hdr.pkt);/* free skb by driver */
-		precvframe->u.hdr.pkt = NULL;
-	}
-
-	spin_lock_bh(&pfree_recv_queue->lock);
-
-	list_del_init(&(precvframe->u.hdr.list));
-
-	precvframe->u.hdr.len = 0;
-
-	list_add_tail(&(precvframe->u.hdr.list), get_list_head(pfree_recv_queue));
-
-	if (padapter) {
-		if (pfree_recv_queue == &precvpriv->free_recv_queue)
-			precvpriv->free_recvframe_cnt++;
-	}
-	spin_unlock_bh(&pfree_recv_queue->lock);
-	return _SUCCESS;
-}
-
-signed int _rtw_enqueue_recvframe(union recv_frame *precvframe, struct __queue *queue)
-{
-	struct adapter *padapter = precvframe->u.hdr.adapter;
-	struct recv_priv *precvpriv = &padapter->recvpriv;
-
-	/* INIT_LIST_HEAD(&(precvframe->u.hdr.list)); */
-	list_del_init(&(precvframe->u.hdr.list));
-
-	list_add_tail(&(precvframe->u.hdr.list), get_list_head(queue));
-
-	if (padapter)
-		if (queue == &precvpriv->free_recv_queue)
-			precvpriv->free_recvframe_cnt++;
-
-	return _SUCCESS;
-}
-
-signed int rtw_enqueue_recvframe(union recv_frame *precvframe, struct __queue *queue)
-{
-	signed int ret;
-
-	/* _spinlock(&pfree_recv_queue->lock); */
-	spin_lock_bh(&queue->lock);
-	ret = _rtw_enqueue_recvframe(precvframe, queue);
-	/* spin_unlock(&pfree_recv_queue->lock); */
-	spin_unlock_bh(&queue->lock);
-
-	return ret;
-}
-
-/*
- * caller : defrag ; recvframe_chk_defrag in recv_thread  (passive)
- * pframequeue: defrag_queue : will be accessed in recv_thread  (passive)
- *
- * using spinlock to protect
- *
- */
-
-void rtw_free_recvframe_queue(struct __queue *pframequeue,  struct __queue *pfree_recv_queue)
-{
-	union	recv_frame	*precvframe;
-	struct list_head	*plist, *phead;
-
-	spin_lock(&pframequeue->lock);
-
-	phead = get_list_head(pframequeue);
-	plist = get_next(phead);
-
-	while (phead != plist) {
-		precvframe = (union recv_frame *)plist;
-
-		plist = get_next(plist);
-
-		rtw_free_recvframe(precvframe, pfree_recv_queue);
-	}
-
-	spin_unlock(&pframequeue->lock);
-}
-
-u32 rtw_free_uc_swdec_pending_queue(struct adapter *adapter)
-{
-	u32 cnt = 0;
-	union recv_frame *pending_frame;
-
-	while ((pending_frame = rtw_alloc_recvframe(&adapter->recvpriv.uc_swdec_pending_queue))) {
-		rtw_free_recvframe(pending_frame, &adapter->recvpriv.free_recv_queue);
-		cnt++;
-	}
-
-	return cnt;
-}
-
-signed int rtw_enqueue_recvbuf_to_head(struct recv_buf *precvbuf, struct __queue *queue)
-{
-	spin_lock_bh(&queue->lock);
-
-	list_del_init(&precvbuf->list);
-	list_add(&precvbuf->list, get_list_head(queue));
-
-	spin_unlock_bh(&queue->lock);
-
-	return _SUCCESS;
-}
-
-signed int rtw_enqueue_recvbuf(struct recv_buf *precvbuf, struct __queue *queue)
-{
-	spin_lock_bh(&queue->lock);
-
-	list_del_init(&precvbuf->list);
-
-	list_add_tail(&precvbuf->list, get_list_head(queue));
-	spin_unlock_bh(&queue->lock);
-	return _SUCCESS;
-}
-
-struct recv_buf *rtw_dequeue_recvbuf(struct __queue *queue)
-{
-	struct recv_buf *precvbuf;
-	struct list_head	*plist, *phead;
-
-	spin_lock_bh(&queue->lock);
-
-	if (list_empty(&queue->queue)) {
-		precvbuf = NULL;
-	} else {
-		phead = get_list_head(queue);
-
-		plist = get_next(phead);
-
-		precvbuf = container_of(plist, struct recv_buf, list);
-
-		list_del_init(&precvbuf->list);
-	}
-
-	spin_unlock_bh(&queue->lock);
-
-	return precvbuf;
-}
-
-static void rtw_handle_tkip_mic_err(struct adapter *padapter, u8 bgroup)
-{
-	enum nl80211_key_type key_type = 0;
-	union iwreq_data wrqu;
-	struct iw_michaelmicfailure    ev;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	unsigned long cur_time = 0;
-
-	if (psecuritypriv->last_mic_err_time == 0) {
-		psecuritypriv->last_mic_err_time = jiffies;
-	} else {
-		cur_time = jiffies;
-
-		if (cur_time - psecuritypriv->last_mic_err_time < 60 * HZ) {
-			psecuritypriv->btkip_countermeasure = true;
-			psecuritypriv->last_mic_err_time = 0;
-			psecuritypriv->btkip_countermeasure_time = cur_time;
-		} else {
-			psecuritypriv->last_mic_err_time = jiffies;
-		}
-	}
-
-	if (bgroup)
-		key_type |= NL80211_KEYTYPE_GROUP;
-	else
-		key_type |= NL80211_KEYTYPE_PAIRWISE;
-
-	cfg80211_michael_mic_failure(padapter->pnetdev, (u8 *)&pmlmepriv->assoc_bssid[0], key_type, -1,
-		NULL, GFP_ATOMIC);
-
-	memset(&ev, 0x00, sizeof(ev));
-	if (bgroup)
-		ev.flags |= IW_MICFAILURE_GROUP;
-	else
-		ev.flags |= IW_MICFAILURE_PAIRWISE;
-
-	ev.src_addr.sa_family = ARPHRD_ETHER;
-	memcpy(ev.src_addr.sa_data, &pmlmepriv->assoc_bssid[0], ETH_ALEN);
-
-	memset(&wrqu, 0x00, sizeof(wrqu));
-	wrqu.data.length = sizeof(ev);
-}
-
-static signed int recvframe_chkmic(struct adapter *adapter,  union recv_frame *precvframe)
-{
-	signed int	i, res = _SUCCESS;
-	u32 datalen;
-	u8 miccode[8];
-	u8 bmic_err = false, brpt_micerror = true;
-	u8 *pframe, *payload, *pframemic;
-	u8 *mickey;
-	/* u8 *iv, rxdata_key_idx = 0; */
-	struct sta_info *stainfo;
-	struct rx_pkt_attrib *prxattrib = &precvframe->u.hdr.attrib;
-	struct security_priv *psecuritypriv = &adapter->securitypriv;
-
-	struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
-
-	stainfo = rtw_get_stainfo(&adapter->stapriv, &prxattrib->ta[0]);
-
-	if (prxattrib->encrypt == _TKIP_) {
-		/* calculate mic code */
-		if (stainfo) {
-			if (is_multicast_ether_addr(prxattrib->ra)) {
-				/* mickey =&psecuritypriv->dot118021XGrprxmickey.skey[0]; */
-				/* iv = precvframe->u.hdr.rx_data+prxattrib->hdrlen; */
-				/* rxdata_key_idx =(((iv[3])>>6)&0x3) ; */
-				mickey = &psecuritypriv->dot118021XGrprxmickey[prxattrib->key_index].skey[0];
-
-				/* psecuritypriv->dot118021XGrpKeyid, pmlmeinfo->key_index, rxdata_key_idx); */
-
-				if (!psecuritypriv->binstallGrpkey) {
-					res = _FAIL;
-					goto exit;
-				}
-			} else {
-				mickey = &stainfo->dot11tkiprxmickey.skey[0];
-			}
-
-			datalen = precvframe->u.hdr.len - prxattrib->hdrlen - prxattrib->iv_len - prxattrib->icv_len - 8;/* icv_len included the mic code */
-			pframe = precvframe->u.hdr.rx_data;
-			payload = pframe + prxattrib->hdrlen + prxattrib->iv_len;
-
-			rtw_seccalctkipmic(mickey, pframe, payload, datalen, &miccode[0], (unsigned char)prxattrib->priority); /* care the length of the data */
-
-			pframemic = payload + datalen;
-
-			bmic_err = false;
-
-			for (i = 0; i < 8; i++) {
-				if (miccode[i] != *(pframemic + i))
-					bmic_err = true;
-			}
-
-			if (bmic_err) {
-				/*  double check key_index for some timing issue , */
-				/*  cannot compare with psecuritypriv->dot118021XGrpKeyid also cause timing issue */
-				if (is_multicast_ether_addr(prxattrib->ra) &&
-				    (prxattrib->key_index != pmlmeinfo->key_index))
-					brpt_micerror = false;
-
-				if (prxattrib->bdecrypted && brpt_micerror)
-					rtw_handle_tkip_mic_err(adapter, (u8)is_multicast_ether_addr(prxattrib->ra));
-
-				res = _FAIL;
-
-			} else {
-				/* mic checked ok */
-				if (!psecuritypriv->bcheck_grpkey &&
-				    is_multicast_ether_addr(prxattrib->ra))
-					psecuritypriv->bcheck_grpkey = true;
-			}
-		}
-
-		recvframe_pull_tail(precvframe, 8);
-	}
-
-exit:
-	return res;
-}
-
-/* decrypt and set the ivlen, icvlen of the recv_frame */
-static union recv_frame *decryptor(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	struct rx_pkt_attrib *prxattrib = &precv_frame->u.hdr.attrib;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	union recv_frame *return_packet = precv_frame;
-	u32  res = _SUCCESS;
-
-	if (prxattrib->encrypt > 0) {
-		u8 *iv = precv_frame->u.hdr.rx_data + prxattrib->hdrlen;
-
-		prxattrib->key_index = (((iv[3]) >> 6) & 0x3);
-
-		if (prxattrib->key_index > WEP_KEYS) {
-			switch (prxattrib->encrypt) {
-			case _WEP40_:
-			case _WEP104_:
-				prxattrib->key_index = psecuritypriv->dot11PrivacyKeyIndex;
-				break;
-			case _TKIP_:
-			case _AES_:
-			default:
-				prxattrib->key_index = psecuritypriv->dot118021XGrpKeyid;
-				break;
-			}
-		}
-	}
-
-	if ((prxattrib->encrypt > 0) && ((prxattrib->bdecrypted == 0) || psecuritypriv->sw_decrypt)) {
-		psecuritypriv->hw_decrypted = false;
-
-		switch (prxattrib->encrypt) {
-		case _WEP40_:
-		case _WEP104_:
-			rtw_wep_decrypt(padapter, (u8 *)precv_frame);
-			break;
-		case _TKIP_:
-			res = rtw_tkip_decrypt(padapter, (u8 *)precv_frame);
-			break;
-		case _AES_:
-			res = rtw_aes_decrypt(padapter, (u8 *)precv_frame);
-			break;
-		default:
-				break;
-		}
-	} else if (prxattrib->bdecrypted == 1 && prxattrib->encrypt > 0 &&
-		   (psecuritypriv->busetkipkey == 1 || prxattrib->encrypt != _TKIP_)
-		) {
-		psecuritypriv->hw_decrypted = true;
-	} else {
-	}
-
-	if (res == _FAIL) {
-		rtw_free_recvframe(return_packet, &padapter->recvpriv.free_recv_queue);
-		return_packet = NULL;
-	} else {
-		prxattrib->bdecrypted = true;
-	}
-
-	return return_packet;
-}
-
-/* set the security information in the recv_frame */
-static union recv_frame *portctrl(struct adapter *adapter, union recv_frame *precv_frame)
-{
-	u8 *psta_addr = NULL;
-	u8 *ptr;
-	unsigned int auth_alg;
-	struct recv_frame_hdr *pfhdr;
-	struct sta_info *psta;
-	struct sta_priv *pstapriv;
-	union recv_frame *prtnframe;
-	u16 ether_type = 0;
-	u16  eapol_type = 0x888e;/* for Funia BD's WPA issue */
-	struct rx_pkt_attrib *pattrib;
-
-	pstapriv = &adapter->stapriv;
-
-	auth_alg = adapter->securitypriv.dot11_auth_algrthm;
-
-	ptr = precv_frame->u.hdr.rx_data;
-	pfhdr = &precv_frame->u.hdr;
-	pattrib = &pfhdr->attrib;
-	psta_addr = pattrib->ta;
-
-	prtnframe = NULL;
-
-	psta = rtw_get_stainfo(pstapriv, psta_addr);
-
-	if (auth_alg == 2) {
-		if ((psta) && (psta->ieee8021x_blocked)) {
-			__be16 be_tmp;
-
-			/* blocked */
-			/* only accept EAPOL frame */
-
-			prtnframe = precv_frame;
-
-			/* get ether_type */
-			ptr = ptr + pfhdr->attrib.hdrlen + pfhdr->attrib.iv_len + LLC_HEADER_LENGTH;
-			memcpy(&be_tmp, ptr, 2);
-			ether_type = ntohs(be_tmp);
-
-			if (ether_type == eapol_type) {
-				prtnframe = precv_frame;
-			} else {
-				/* free this frame */
-				rtw_free_recvframe(precv_frame, &adapter->recvpriv.free_recv_queue);
-				prtnframe = NULL;
-			}
-		} else {
-			/* allowed */
-			/* check decryption status, and decrypt the frame if needed */
-
-			prtnframe = precv_frame;
-			/* check is the EAPOL frame or not (Rekey) */
-			/* if (ether_type == eapol_type) { */
-				/* check Rekey */
-
-			/* prtnframe =precv_frame; */
-			/*  */
-			/* else { */
-			/*  */
-		}
-	} else {
-		prtnframe = precv_frame;
-	}
-
-	return prtnframe;
-}
-
-static signed int recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo_rxcache *prxcache)
-{
-	signed int tid = precv_frame->u.hdr.attrib.priority;
-
-	u16 seq_ctrl = ((precv_frame->u.hdr.attrib.seq_num & 0xffff) << 4) |
-		(precv_frame->u.hdr.attrib.frag_num & 0xf);
-
-	if (tid > 15)
-		return _FAIL;
-
-	if (1) { /* if (bretry) */
-		if (seq_ctrl == prxcache->tid_rxseq[tid])
-			return _FAIL;
-	}
-
-	prxcache->tid_rxseq[tid] = seq_ctrl;
-
-	return _SUCCESS;
-}
-
-static void process_pwrbit_data(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	unsigned char pwrbit;
-	u8 *ptr = precv_frame->u.hdr.rx_data;
-	struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct sta_info *psta = NULL;
-
-	psta = rtw_get_stainfo(pstapriv, pattrib->src);
-
-	pwrbit = GetPwrMgt(ptr);
-
-	if (psta) {
-		if (pwrbit) {
-			if (!(psta->state & WIFI_SLEEP_STATE)) {
-				/* psta->state |= WIFI_SLEEP_STATE; */
-				/* pstapriv->sta_dz_bitmap |= BIT(psta->aid); */
-
-				stop_sta_xmit(padapter, psta);
-			}
-		} else {
-			if (psta->state & WIFI_SLEEP_STATE) {
-				/* psta->state ^= WIFI_SLEEP_STATE; */
-				/* pstapriv->sta_dz_bitmap &= ~BIT(psta->aid); */
-
-				wakeup_sta_to_xmit(padapter, psta);
-			}
-		}
-	}
-}
-
-static void process_wmmps_data(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct sta_info *psta = NULL;
-
-	psta = rtw_get_stainfo(pstapriv, pattrib->src);
-
-	if (!psta)
-		return;
-
-	if (!psta->qos_option)
-		return;
-
-	if (!(psta->qos_info & 0xf))
-		return;
-
-	if (psta->state & WIFI_SLEEP_STATE) {
-		u8 wmmps_ac = 0;
-
-		switch (pattrib->priority) {
-		case 1:
-		case 2:
-			wmmps_ac = psta->uapsd_bk & BIT(1);
-			break;
-		case 4:
-		case 5:
-			wmmps_ac = psta->uapsd_vi & BIT(1);
-			break;
-		case 6:
-		case 7:
-			wmmps_ac = psta->uapsd_vo & BIT(1);
-			break;
-		case 0:
-		case 3:
-		default:
-			wmmps_ac = psta->uapsd_be & BIT(1);
-			break;
-		}
-
-		if (wmmps_ac) {
-			if (psta->sleepq_ac_len > 0)
-				/* process received triggered frame */
-				xmit_delivery_enabled_frames(padapter, psta);
-			else
-				/* issue one qos null frame with More data bit = 0 and the EOSP bit set (= 1) */
-				issue_qos_nulldata(padapter, psta->hwaddr, (u16)pattrib->priority, 0, 0);
-		}
-	}
-}
-
-static void count_rx_stats(struct adapter *padapter, union recv_frame *prframe, struct sta_info *sta)
-{
-	int sz;
-	struct sta_info *psta = NULL;
-	struct stainfo_stats *pstats = NULL;
-	struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib;
-	struct recv_priv *precvpriv = &padapter->recvpriv;
-
-	sz = get_recvframe_len(prframe);
-	precvpriv->rx_bytes += sz;
-
-	padapter->mlmepriv.link_detect_info.num_rx_ok_in_period++;
-
-	if ((!is_broadcast_ether_addr(pattrib->dst)) && (!is_multicast_ether_addr(pattrib->dst)))
-		padapter->mlmepriv.link_detect_info.num_rx_unicast_ok_in_period++;
-
-	if (sta)
-		psta = sta;
-	else
-		psta = prframe->u.hdr.psta;
-
-	if (psta) {
-		pstats = &psta->sta_stats;
-
-		pstats->rx_data_pkts++;
-		pstats->rx_bytes += sz;
-	}
-
-	traffic_check_for_leave_lps(padapter, false, 0);
-}
-
-static signed int sta2sta_data_frame(struct adapter *adapter, union recv_frame *precv_frame,
-			struct sta_info **psta)
-{
-	u8 *ptr = precv_frame->u.hdr.rx_data;
-	signed int ret = _SUCCESS;
-	struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
-	struct sta_priv *pstapriv = &adapter->stapriv;
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	u8 *mybssid  = get_bssid(pmlmepriv);
-	u8 *myhwaddr = myid(&adapter->eeprompriv);
-	u8 *sta_addr = NULL;
-	signed int bmcast = is_multicast_ether_addr(pattrib->dst);
-
-	if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) ||
-	    check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
-		/*  filter packets that SA is myself or multicast or broadcast */
-		if (!memcmp(myhwaddr, pattrib->src, ETH_ALEN)) {
-			ret = _FAIL;
-			goto exit;
-		}
-
-		if ((memcmp(myhwaddr, pattrib->dst, ETH_ALEN))	&& (!bmcast)) {
-			ret = _FAIL;
-			goto exit;
-		}
-
-		if (is_zero_ether_addr(pattrib->bssid) ||
-		    is_zero_ether_addr(mybssid) ||
-		    (memcmp(pattrib->bssid, mybssid, ETH_ALEN))) {
-			ret = _FAIL;
-			goto exit;
-		}
-
-		sta_addr = pattrib->src;
-
-	} else if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
-		/*  For Station mode, sa and bssid should always be BSSID, and DA is my mac-address */
-		if (memcmp(pattrib->bssid, pattrib->src, ETH_ALEN)) {
-			ret = _FAIL;
-			goto exit;
-		}
-
-		sta_addr = pattrib->bssid;
-	} else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		if (bmcast) {
-			/*  For AP mode, if DA == MCAST, then BSSID should be also MCAST */
-			if (!is_multicast_ether_addr(pattrib->bssid)) {
-				ret = _FAIL;
-				goto exit;
-			}
-		} else { /*  not mc-frame */
-			/*  For AP mode, if DA is non-MCAST, then it must be BSSID, and bssid == BSSID */
-			if (memcmp(pattrib->bssid, pattrib->dst, ETH_ALEN)) {
-				ret = _FAIL;
-				goto exit;
-			}
-
-			sta_addr = pattrib->src;
-		}
-
-	} else if (check_fwstate(pmlmepriv, WIFI_MP_STATE)) {
-		memcpy(pattrib->dst, GetAddr1Ptr(ptr), ETH_ALEN);
-		memcpy(pattrib->src, GetAddr2Ptr(ptr), ETH_ALEN);
-		memcpy(pattrib->bssid, GetAddr3Ptr(ptr), ETH_ALEN);
-		memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
-		memcpy(pattrib->ta, pattrib->src, ETH_ALEN);
-
-		sta_addr = mybssid;
-	} else {
-		ret  = _FAIL;
-	}
-
-	if (bmcast)
-		*psta = rtw_get_bcmc_stainfo(adapter);
-	else
-		*psta = rtw_get_stainfo(pstapriv, sta_addr); /*  get ap_info */
-
-	if (!*psta) {
-		ret = _FAIL;
-		goto exit;
-	}
-
-exit:
-	return ret;
-}
-
-static signed int ap2sta_data_frame(struct adapter *adapter, union recv_frame *precv_frame,
-		       struct sta_info **psta)
-{
-	u8 *ptr = precv_frame->u.hdr.rx_data;
-	struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
-	signed int ret = _SUCCESS;
-	struct sta_priv *pstapriv = &adapter->stapriv;
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	u8 *mybssid  = get_bssid(pmlmepriv);
-	u8 *myhwaddr = myid(&adapter->eeprompriv);
-	signed int bmcast = is_multicast_ether_addr(pattrib->dst);
-
-	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) &&
-	    (check_fwstate(pmlmepriv, _FW_LINKED) ||
-	     check_fwstate(pmlmepriv, _FW_UNDER_LINKING))) {
-		/*  filter packets that SA is myself or multicast or broadcast */
-		if (!memcmp(myhwaddr, pattrib->src, ETH_ALEN)) {
-			ret = _FAIL;
-			goto exit;
-		}
-
-		/*  da should be for me */
-		if ((memcmp(myhwaddr, pattrib->dst, ETH_ALEN)) && (!bmcast)) {
-			ret = _FAIL;
-			goto exit;
-		}
-
-		/*  check BSSID */
-		if (is_zero_ether_addr(pattrib->bssid) ||
-		    is_zero_ether_addr(mybssid) ||
-		    (memcmp(pattrib->bssid, mybssid, ETH_ALEN))) {
-			if (!bmcast)
-				issue_deauth(adapter, pattrib->bssid, WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA);
-
-			ret = _FAIL;
-			goto exit;
-		}
-
-		if (bmcast)
-			*psta = rtw_get_bcmc_stainfo(adapter);
-		else
-			*psta = rtw_get_stainfo(pstapriv, pattrib->bssid); /*  get ap_info */
-
-		if (!*psta) {
-			ret = _FAIL;
-			goto exit;
-		}
-
-		if (GetFrameSubType(ptr) & BIT(6)) {
-			/* No data, will not indicate to upper layer, temporarily count it here */
-			count_rx_stats(adapter, precv_frame, *psta);
-			ret = RTW_RX_HANDLED;
-			goto exit;
-		}
-
-	} else if (check_fwstate(pmlmepriv, WIFI_MP_STATE) &&
-		   check_fwstate(pmlmepriv, _FW_LINKED)) {
-		memcpy(pattrib->dst, GetAddr1Ptr(ptr), ETH_ALEN);
-		memcpy(pattrib->src, GetAddr2Ptr(ptr), ETH_ALEN);
-		memcpy(pattrib->bssid, GetAddr3Ptr(ptr), ETH_ALEN);
-		memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
-		memcpy(pattrib->ta, pattrib->src, ETH_ALEN);
-
-		/*  */
-		memcpy(pattrib->bssid,  mybssid, ETH_ALEN);
-
-		*psta = rtw_get_stainfo(pstapriv, pattrib->bssid); /*  get sta_info */
-		if (!*psta) {
-			ret = _FAIL;
-			goto exit;
-		}
-
-	} else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		/* Special case */
-		ret = RTW_RX_HANDLED;
-		goto exit;
-	} else {
-		if (!memcmp(myhwaddr, pattrib->dst, ETH_ALEN) && (!bmcast)) {
-			*psta = rtw_get_stainfo(pstapriv, pattrib->bssid); /*  get sta_info */
-			if (!*psta) {
-				/* for AP multicast issue , modify by yiwei */
-				static unsigned long send_issue_deauth_time;
-
-				if (jiffies_to_msecs(jiffies - send_issue_deauth_time) > 10000 || send_issue_deauth_time == 0) {
-					send_issue_deauth_time = jiffies;
-
-					issue_deauth(adapter, pattrib->bssid, WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA);
-				}
-			}
-		}
-
-		ret = _FAIL;
-	}
-
-exit:
-	return ret;
-}
-
-static signed int sta2ap_data_frame(struct adapter *adapter, union recv_frame *precv_frame,
-		       struct sta_info **psta)
-{
-	u8 *ptr = precv_frame->u.hdr.rx_data;
-	struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
-	struct sta_priv *pstapriv = &adapter->stapriv;
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	unsigned char *mybssid  = get_bssid(pmlmepriv);
-	signed int ret = _SUCCESS;
-
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		/* For AP mode, RA =BSSID, TX =STA(SRC_ADDR), A3 =DST_ADDR */
-		if (memcmp(pattrib->bssid, mybssid, ETH_ALEN)) {
-			ret = _FAIL;
-			goto exit;
-		}
-
-		*psta = rtw_get_stainfo(pstapriv, pattrib->src);
-		if (!*psta) {
-			issue_deauth(adapter, pattrib->src, WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA);
-
-			ret = RTW_RX_HANDLED;
-			goto exit;
-		}
-
-		process_pwrbit_data(adapter, precv_frame);
-
-		if ((GetFrameSubType(ptr) & WIFI_QOS_DATA_TYPE) == WIFI_QOS_DATA_TYPE)
-			process_wmmps_data(adapter, precv_frame);
-
-		if (GetFrameSubType(ptr) & BIT(6)) {
-			/* No data, will not indicate to upper layer, temporarily count it here */
-			count_rx_stats(adapter, precv_frame, *psta);
-			ret = RTW_RX_HANDLED;
-			goto exit;
-		}
-	} else {
-		u8 *myhwaddr = myid(&adapter->eeprompriv);
-
-		if (memcmp(pattrib->ra, myhwaddr, ETH_ALEN)) {
-			ret = RTW_RX_HANDLED;
-			goto exit;
-		}
-		issue_deauth(adapter, pattrib->src, WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA);
-		ret = RTW_RX_HANDLED;
-		goto exit;
-	}
-
-exit:
-	return ret;
-}
-
-static signed int validate_recv_ctrl_frame(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	u8 *pframe = precv_frame->u.hdr.rx_data;
-	struct sta_info *psta = NULL;
-	/* uint len = precv_frame->u.hdr.len; */
-
-	if (GetFrameType(pframe) != WIFI_CTRL_TYPE)
-		return _FAIL;
-
-	/* receive the frames that ra(a1) is my address */
-	if (memcmp(GetAddr1Ptr(pframe), myid(&padapter->eeprompriv), ETH_ALEN))
-		return _FAIL;
-
-	psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));
-	if (!psta)
-		return _FAIL;
-
-	/* for rx pkt statistics */
-	psta->sta_stats.rx_ctrl_pkts++;
-
-	/* only handle ps-poll */
-	if (GetFrameSubType(pframe) == WIFI_PSPOLL) {
-		u16 aid;
-		u8 wmmps_ac = 0;
-
-		aid = GetAid(pframe);
-		if (psta->aid != aid)
-			return _FAIL;
-
-		switch (pattrib->priority) {
-		case 1:
-		case 2:
-			wmmps_ac = psta->uapsd_bk & BIT(0);
-			break;
-		case 4:
-		case 5:
-			wmmps_ac = psta->uapsd_vi & BIT(0);
-			break;
-		case 6:
-		case 7:
-			wmmps_ac = psta->uapsd_vo & BIT(0);
-			break;
-		case 0:
-		case 3:
-		default:
-			wmmps_ac = psta->uapsd_be & BIT(0);
-			break;
-		}
-
-		if (wmmps_ac)
-			return _FAIL;
-
-		if (psta->state & WIFI_STA_ALIVE_CHK_STATE) {
-			psta->expire_to = pstapriv->expire_to;
-			psta->state ^= WIFI_STA_ALIVE_CHK_STATE;
-		}
-
-		if ((psta->state & WIFI_SLEEP_STATE) && (pstapriv->sta_dz_bitmap & BIT(psta->aid))) {
-			struct list_head	*xmitframe_plist, *xmitframe_phead;
-			struct xmit_frame *pxmitframe = NULL;
-			struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-			/* spin_lock_bh(&psta->sleep_q.lock); */
-			spin_lock_bh(&pxmitpriv->lock);
-
-			xmitframe_phead = get_list_head(&psta->sleep_q);
-			xmitframe_plist = get_next(xmitframe_phead);
-
-			if (xmitframe_phead != xmitframe_plist) {
-				pxmitframe = container_of(xmitframe_plist, struct xmit_frame, list);
-
-				xmitframe_plist = get_next(xmitframe_plist);
-
-				list_del_init(&pxmitframe->list);
-
-				psta->sleepq_len--;
-
-				if (psta->sleepq_len > 0)
-					pxmitframe->attrib.mdata = 1;
-				else
-					pxmitframe->attrib.mdata = 0;
-
-				pxmitframe->attrib.triggered = 1;
-
-				rtw_hal_xmitframe_enqueue(padapter, pxmitframe);
-
-				if (psta->sleepq_len == 0) {
-					pstapriv->tim_bitmap &= ~BIT(psta->aid);
-
-					/* update BCN for TIM IE */
-					/* update_BCNTIM(padapter); */
-					update_beacon(padapter, WLAN_EID_TIM, true);
-				}
-
-				/* spin_unlock_bh(&psta->sleep_q.lock); */
-				spin_unlock_bh(&pxmitpriv->lock);
-
-			} else {
-				/* spin_unlock_bh(&psta->sleep_q.lock); */
-				spin_unlock_bh(&pxmitpriv->lock);
-
-				if (pstapriv->tim_bitmap & BIT(psta->aid)) {
-					if (psta->sleepq_len == 0) {
-						/* issue nulldata with More data bit = 0 to indicate we have no buffered packets */
-						issue_nulldata_in_interrupt(padapter, psta->hwaddr);
-					} else {
-						psta->sleepq_len = 0;
-					}
-
-					pstapriv->tim_bitmap &= ~BIT(psta->aid);
-
-					/* update BCN for TIM IE */
-					/* update_BCNTIM(padapter); */
-					update_beacon(padapter, WLAN_EID_TIM, true);
-				}
-			}
-		}
-	}
-
-	return _FAIL;
-}
-
-/* perform defrag */
-static union recv_frame *recvframe_defrag(struct adapter *adapter,
-					  struct __queue *defrag_q)
-{
-	struct list_head	 *plist, *phead;
-	u8  wlanhdr_offset;
-	u8 curfragnum;
-	struct recv_frame_hdr *pfhdr, *pnfhdr;
-	union recv_frame *prframe, *pnextrframe;
-	struct __queue	*pfree_recv_queue;
-
-	curfragnum = 0;
-	pfree_recv_queue = &adapter->recvpriv.free_recv_queue;
-
-	phead = get_list_head(defrag_q);
-	plist = get_next(phead);
-	prframe = (union recv_frame *)plist;
-	pfhdr = &prframe->u.hdr;
-	list_del_init(&(prframe->u.list));
-
-	if (curfragnum != pfhdr->attrib.frag_num) {
-		/* the first fragment number must be 0 */
-		/* free the whole queue */
-		rtw_free_recvframe(prframe, pfree_recv_queue);
-		rtw_free_recvframe_queue(defrag_q, pfree_recv_queue);
-
-		return NULL;
-	}
-
-	curfragnum++;
-
-	plist = get_list_head(defrag_q);
-
-	plist = get_next(plist);
-
-	while (phead != plist) {
-		pnextrframe = (union recv_frame *)plist;
-		pnfhdr = &pnextrframe->u.hdr;
-
-		/* check the fragment sequence  (2nd ~n fragment frame) */
-
-		if (curfragnum != pnfhdr->attrib.frag_num) {
-			/* the fragment number must be increasing  (after decache) */
-			/* release the defrag_q & prframe */
-			rtw_free_recvframe(prframe, pfree_recv_queue);
-			rtw_free_recvframe_queue(defrag_q, pfree_recv_queue);
-			return NULL;
-		}
-
-		curfragnum++;
-
-		/* copy the 2nd~n fragment frame's payload to the first fragment */
-		/* get the 2nd~last fragment frame's payload */
-
-		wlanhdr_offset = pnfhdr->attrib.hdrlen + pnfhdr->attrib.iv_len;
-
-		recvframe_pull(pnextrframe, wlanhdr_offset);
-
-		/* append  to first fragment frame's tail (if privacy frame, pull the ICV) */
-		recvframe_pull_tail(prframe, pfhdr->attrib.icv_len);
-
-		/* memcpy */
-		memcpy(pfhdr->rx_tail, pnfhdr->rx_data, pnfhdr->len);
-
-		recvframe_put(prframe, pnfhdr->len);
-
-		pfhdr->attrib.icv_len = pnfhdr->attrib.icv_len;
-		plist = get_next(plist);
-	}
-
-	/* free the defrag_q queue and return the prframe */
-	rtw_free_recvframe_queue(defrag_q, pfree_recv_queue);
-
-	return prframe;
-}
-
-/* check if need to defrag, if needed queue the frame to defrag_q */
-static union recv_frame *recvframe_chk_defrag(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	u8 ismfrag;
-	u8 fragnum;
-	u8 *psta_addr;
-	struct recv_frame_hdr *pfhdr;
-	struct sta_info *psta;
-	struct sta_priv *pstapriv;
-	struct list_head *phead;
-	union recv_frame *prtnframe = NULL;
-	struct __queue *pfree_recv_queue, *pdefrag_q;
-
-	pstapriv = &padapter->stapriv;
-
-	pfhdr = &precv_frame->u.hdr;
-
-	pfree_recv_queue = &padapter->recvpriv.free_recv_queue;
-
-	/* need to define struct of wlan header frame ctrl */
-	ismfrag = pfhdr->attrib.mfrag;
-	fragnum = pfhdr->attrib.frag_num;
-
-	psta_addr = pfhdr->attrib.ta;
-	psta = rtw_get_stainfo(pstapriv, psta_addr);
-	if (!psta) {
-		u8 type = GetFrameType(pfhdr->rx_data);
-
-		if (type != WIFI_DATA_TYPE) {
-			psta = rtw_get_bcmc_stainfo(padapter);
-			pdefrag_q = &psta->sta_recvpriv.defrag_q;
-		} else {
-			pdefrag_q = NULL;
-		}
-	} else {
-		pdefrag_q = &psta->sta_recvpriv.defrag_q;
-	}
-
-	if ((ismfrag == 0) && (fragnum == 0))
-		prtnframe = precv_frame;/* isn't a fragment frame */
-
-	if (ismfrag == 1) {
-		/* 0~(n-1) fragment frame */
-		/* enqueue to defraf_g */
-		if (pdefrag_q) {
-			if (fragnum == 0)
-				/* the first fragment */
-				if (!list_empty(&pdefrag_q->queue))
-					/* free current defrag_q */
-					rtw_free_recvframe_queue(pdefrag_q, pfree_recv_queue);
-
-			/* Then enqueue the 0~(n-1) fragment into the defrag_q */
-
-			/* spin_lock(&pdefrag_q->lock); */
-			phead = get_list_head(pdefrag_q);
-			list_add_tail(&pfhdr->list, phead);
-			/* spin_unlock(&pdefrag_q->lock); */
-
-			prtnframe = NULL;
-
-		} else {
-			/* can't find this ta's defrag_queue, so free this recv_frame */
-			rtw_free_recvframe(precv_frame, pfree_recv_queue);
-			prtnframe = NULL;
-		}
-	}
-
-	if ((ismfrag == 0) && (fragnum != 0)) {
-		/* the last fragment frame */
-		/* enqueue the last fragment */
-		if (pdefrag_q) {
-			/* spin_lock(&pdefrag_q->lock); */
-			phead = get_list_head(pdefrag_q);
-			list_add_tail(&pfhdr->list, phead);
-			/* spin_unlock(&pdefrag_q->lock); */
-
-			/* call recvframe_defrag to defrag */
-			precv_frame = recvframe_defrag(padapter, pdefrag_q);
-			prtnframe = precv_frame;
-
-		} else {
-			/* can't find this ta's defrag_queue, so free this recv_frame */
-			rtw_free_recvframe(precv_frame, pfree_recv_queue);
-			prtnframe = NULL;
-		}
-	}
-
-	if ((prtnframe) && (prtnframe->u.hdr.attrib.privacy)) {
-		/* after defrag we must check tkip mic code */
-		if (recvframe_chkmic(padapter,  prtnframe) == _FAIL) {
-			rtw_free_recvframe(prtnframe, pfree_recv_queue);
-			prtnframe = NULL;
-		}
-	}
-	return prtnframe;
-}
-
-static signed int validate_recv_mgnt_frame(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	struct sta_info *psta;
-
-	precv_frame = recvframe_chk_defrag(padapter, precv_frame);
-	if (!precv_frame)
-		return _SUCCESS;
-
-	/* for rx pkt statistics */
-	psta = rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr(precv_frame->u.hdr.rx_data));
-	if (!psta)
-		goto exit;
-
-	psta->sta_stats.rx_mgnt_pkts++;
-
-	switch (GetFrameSubType(precv_frame->u.hdr.rx_data)) {
-	case WIFI_BEACON:
-		psta->sta_stats.rx_beacon_pkts++;
-		break;
-	case WIFI_PROBEREQ:
-		psta->sta_stats.rx_probereq_pkts++;
-		break;
-	case WIFI_PROBERSP:
-		if (!memcmp(padapter->eeprompriv.mac_addr,
-			    GetAddr1Ptr(precv_frame->u.hdr.rx_data),
-			    ETH_ALEN))
-			psta->sta_stats.rx_probersp_pkts++;
-		else if (is_broadcast_ether_addr(GetAddr1Ptr(precv_frame->u.hdr.rx_data)) ||
-			 is_multicast_ether_addr(GetAddr1Ptr(precv_frame->u.hdr.rx_data)))
-			psta->sta_stats.rx_probersp_bm_pkts++;
-		else
-			psta->sta_stats.rx_probersp_uo_pkts++;
-
-		break;
-	}
-
-exit:
-	mgt_dispatcher(padapter, precv_frame);
-
-	return _SUCCESS;
-}
-
-static signed int validate_recv_data_frame(struct adapter *adapter, union recv_frame *precv_frame)
-{
-	u8 bretry;
-	u8 *psa, *pda, *pbssid;
-	struct sta_info *psta = NULL;
-	u8 *ptr = precv_frame->u.hdr.rx_data;
-	struct rx_pkt_attrib	*pattrib = &precv_frame->u.hdr.attrib;
-	struct security_priv *psecuritypriv = &adapter->securitypriv;
-	signed int ret = _SUCCESS;
-
-	bretry = GetRetry(ptr);
-	pda = get_da(ptr);
-	psa = get_sa(ptr);
-	pbssid = get_hdr_bssid(ptr);
-
-	if (!pbssid) {
-		ret = _FAIL;
-		goto exit;
-	}
-
-	memcpy(pattrib->dst, pda, ETH_ALEN);
-	memcpy(pattrib->src, psa, ETH_ALEN);
-
-	memcpy(pattrib->bssid, pbssid, ETH_ALEN);
-
-	switch (pattrib->to_fr_ds) {
-	case 0:
-		memcpy(pattrib->ra, pda, ETH_ALEN);
-		memcpy(pattrib->ta, psa, ETH_ALEN);
-		ret = sta2sta_data_frame(adapter, precv_frame, &psta);
-		break;
-
-	case 1:
-		memcpy(pattrib->ra, pda, ETH_ALEN);
-		memcpy(pattrib->ta, pbssid, ETH_ALEN);
-		ret = ap2sta_data_frame(adapter, precv_frame, &psta);
-		break;
-
-	case 2:
-		memcpy(pattrib->ra, pbssid, ETH_ALEN);
-		memcpy(pattrib->ta, psa, ETH_ALEN);
-		ret = sta2ap_data_frame(adapter, precv_frame, &psta);
-		break;
-
-	case 3:
-		memcpy(pattrib->ra, GetAddr1Ptr(ptr), ETH_ALEN);
-		memcpy(pattrib->ta, GetAddr2Ptr(ptr), ETH_ALEN);
-		ret = _FAIL;
-		break;
-
-	default:
-		ret = _FAIL;
-		break;
-	}
-
-	if (ret == _FAIL || ret == RTW_RX_HANDLED)
-		goto exit;
-
-	if (!psta) {
-		ret = _FAIL;
-		goto exit;
-	}
-
-	/* psta->rssi = prxcmd->rssi; */
-	/* psta->signal_quality = prxcmd->sq; */
-	precv_frame->u.hdr.psta = psta;
-
-	pattrib->amsdu = 0;
-	pattrib->ack_policy = 0;
-	/* parsing QC field */
-	if (pattrib->qos == 1) {
-		pattrib->priority = GetPriority((ptr + 24));
-		pattrib->ack_policy = GetAckpolicy((ptr + 24));
-		pattrib->amsdu = GetAMsdu((ptr + 24));
-		pattrib->hdrlen = pattrib->to_fr_ds == 3 ? 32 : 26;
-
-		if (pattrib->priority != 0 && pattrib->priority != 3)
-			adapter->recvpriv.bIsAnyNonBEPkts = true;
-
-	} else {
-		pattrib->priority = 0;
-		pattrib->hdrlen = pattrib->to_fr_ds == 3 ? 30 : 24;
-	}
-
-	if (pattrib->order)/* HT-CTRL 11n */
-		pattrib->hdrlen += 4;
-
-	precv_frame->u.hdr.preorder_ctrl = &psta->recvreorder_ctrl[pattrib->priority];
-
-	/*  decache, drop duplicate recv packets */
-	if (recv_decache(precv_frame, bretry, &psta->sta_recvpriv.rxcache) == _FAIL) {
-		ret = _FAIL;
-		goto exit;
-	}
-
-	if (pattrib->privacy) {
-		GET_ENCRY_ALGO(psecuritypriv, psta, pattrib->encrypt, is_multicast_ether_addr(pattrib->ra));
-
-		SET_ICE_IV_LEN(pattrib->iv_len, pattrib->icv_len, pattrib->encrypt);
-	} else {
-		pattrib->encrypt = 0;
-		pattrib->iv_len = pattrib->icv_len = 0;
-	}
-
-exit:
-	return ret;
-}
-
-static signed int validate_80211w_mgmt(struct adapter *adapter, union recv_frame *precv_frame)
-{
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
-	u8 *ptr = precv_frame->u.hdr.rx_data;
-	u8 subtype;
-
-	subtype = GetFrameSubType(ptr); /* bit(7)~bit(2) */
-
-	/* only support station mode */
-	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) && check_fwstate(pmlmepriv, _FW_LINKED) &&
-	    adapter->securitypriv.binstallBIPkey) {
-		/* unicast management frame decrypt */
-		if (pattrib->privacy && !(is_multicast_ether_addr(GetAddr1Ptr(ptr))) &&
-			(subtype == WIFI_DEAUTH || subtype == WIFI_DISASSOC || subtype == WIFI_ACTION)) {
-			u8 *mgmt_DATA;
-			u32 data_len = 0;
-
-			pattrib->bdecrypted = 0;
-			pattrib->encrypt = _AES_;
-			pattrib->hdrlen = sizeof(struct ieee80211_hdr_3addr);
-			/* set iv and icv length */
-			SET_ICE_IV_LEN(pattrib->iv_len, pattrib->icv_len, pattrib->encrypt);
-			memcpy(pattrib->ra, GetAddr1Ptr(ptr), ETH_ALEN);
-			memcpy(pattrib->ta, GetAddr2Ptr(ptr), ETH_ALEN);
-			/* actual management data frame body */
-			data_len = pattrib->pkt_len - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len;
-			mgmt_DATA = kzalloc(data_len, GFP_ATOMIC);
-			if (!mgmt_DATA)
-				goto validate_80211w_fail;
-			precv_frame = decryptor(adapter, precv_frame);
-			/* save actual management data frame body */
-			memcpy(mgmt_DATA, ptr + pattrib->hdrlen + pattrib->iv_len, data_len);
-			/* overwrite the iv field */
-			memcpy(ptr + pattrib->hdrlen, mgmt_DATA, data_len);
-			/* remove the iv and icv length */
-			pattrib->pkt_len = pattrib->pkt_len - pattrib->iv_len - pattrib->icv_len;
-			kfree(mgmt_DATA);
-			if (!precv_frame)
-				goto validate_80211w_fail;
-		} else if (is_multicast_ether_addr(GetAddr1Ptr(ptr)) &&
-			(subtype == WIFI_DEAUTH || subtype == WIFI_DISASSOC)) {
-			signed int BIP_ret = _SUCCESS;
-			/* verify BIP MME IE of broadcast/multicast de-auth/disassoc packet */
-			BIP_ret = rtw_BIP_verify(adapter, (u8 *)precv_frame);
-			if (BIP_ret == _FAIL) {
-				goto validate_80211w_fail;
-			} else if (BIP_ret == RTW_RX_HANDLED) {
-				/* issue sa query request */
-				issue_action_SA_Query(adapter, NULL, 0, 0);
-				goto validate_80211w_fail;
-			}
-		} else { /* 802.11w protect */
-			if (subtype == WIFI_ACTION) {
-				/* according 802.11-2012 standard, these five types are not robust types */
-				if (ptr[WLAN_HDR_A3_LEN] != RTW_WLAN_CATEGORY_PUBLIC          &&
-					ptr[WLAN_HDR_A3_LEN] != RTW_WLAN_CATEGORY_HT              &&
-					ptr[WLAN_HDR_A3_LEN] != RTW_WLAN_CATEGORY_UNPROTECTED_WNM &&
-					ptr[WLAN_HDR_A3_LEN] != RTW_WLAN_CATEGORY_SELF_PROTECTED  &&
-					ptr[WLAN_HDR_A3_LEN] != RTW_WLAN_CATEGORY_P2P) {
-					goto validate_80211w_fail;
-				}
-			} else if (subtype == WIFI_DEAUTH || subtype == WIFI_DISASSOC) {
-				/* issue sa query request */
-				issue_action_SA_Query(adapter, NULL, 0, 0);
-				goto validate_80211w_fail;
-			}
-		}
-	}
-	return _SUCCESS;
-
-validate_80211w_fail:
-	return _FAIL;
-}
-
-static signed int validate_recv_frame(struct adapter *adapter, union recv_frame *precv_frame)
-{
-	/* shall check frame subtype, to / from ds, da, bssid */
-
-	/* then call check if rx seq/frag. duplicated. */
-
-	u8 type;
-	u8 subtype;
-	signed int retval = _SUCCESS;
-
-	struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
-
-	u8 *ptr = precv_frame->u.hdr.rx_data;
-	u8  ver = (unsigned char) (*ptr) & 0x3;
-
-	/* add version chk */
-	if (ver != 0) {
-		retval = _FAIL;
-		goto exit;
-	}
-
-	type =  GetFrameType(ptr);
-	subtype = GetFrameSubType(ptr); /* bit(7)~bit(2) */
-
-	pattrib->to_fr_ds = get_tofr_ds(ptr);
-
-	pattrib->frag_num = GetFragNum(ptr);
-	pattrib->seq_num = GetSequence(ptr);
-
-	pattrib->pw_save = GetPwrMgt(ptr);
-	pattrib->mfrag = GetMFrag(ptr);
-	pattrib->mdata = GetMData(ptr);
-	pattrib->privacy = GetPrivacy(ptr);
-	pattrib->order = GetOrder(ptr);
-
-	switch (type) {
-	case WIFI_MGT_TYPE: /* mgnt */
-		if (validate_80211w_mgmt(adapter, precv_frame) == _FAIL) {
-			retval = _FAIL;
-			break;
-		}
-
-		retval = validate_recv_mgnt_frame(adapter, precv_frame);
-		retval = _FAIL; /*  only data frame return _SUCCESS */
-		break;
-	case WIFI_CTRL_TYPE: /* ctrl */
-		retval = validate_recv_ctrl_frame(adapter, precv_frame);
-		retval = _FAIL; /*  only data frame return _SUCCESS */
-		break;
-	case WIFI_DATA_TYPE: /* data */
-		pattrib->qos = (subtype & BIT(7)) ? 1 : 0;
-		retval = validate_recv_data_frame(adapter, precv_frame);
-		if (retval == _FAIL) {
-			struct recv_priv *precvpriv = &adapter->recvpriv;
-
-			precvpriv->rx_drop++;
-		}
-		break;
-	default:
-		retval = _FAIL;
-		break;
-	}
-
-exit:
-	return retval;
-}
-
-/* remove the wlanhdr and add the eth_hdr */
-static signed int wlanhdr_to_ethhdr(union recv_frame *precvframe)
-{
-	signed int	rmv_len;
-	u16 eth_type, len;
-	u8 bsnaphdr;
-	u8 *psnap_type;
-	struct ieee80211_snap_hdr	*psnap;
-	__be16 be_tmp;
-	struct adapter			*adapter = precvframe->u.hdr.adapter;
-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-	u8 *ptr = precvframe->u.hdr.rx_data; /*  point to frame_ctrl field */
-	struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib;
-
-	if (pattrib->encrypt)
-		recvframe_pull_tail(precvframe, pattrib->icv_len);
-
-	psnap = (struct ieee80211_snap_hdr	*)(ptr + pattrib->hdrlen + pattrib->iv_len);
-	psnap_type = ptr + pattrib->hdrlen + pattrib->iv_len + SNAP_SIZE;
-	/* convert hdr + possible LLC headers into Ethernet header */
-	/* eth_type = (psnap_type[0] << 8) | psnap_type[1]; */
-	if ((!memcmp(psnap, rfc1042_header, SNAP_SIZE) &&
-		(memcmp(psnap_type, SNAP_ETH_TYPE_IPX, 2)) &&
-		(memcmp(psnap_type, SNAP_ETH_TYPE_APPLETALK_AARP, 2))) ||
-		/* eth_type != ETH_P_AARP && eth_type != ETH_P_IPX) || */
-		 !memcmp(psnap, bridge_tunnel_header, SNAP_SIZE)) {
-		/* remove RFC1042 or Bridge-Tunnel encapsulation and replace EtherType */
-		bsnaphdr = true;
-	} else {
-		/* Leave Ethernet header part of hdr and full payload */
-		bsnaphdr = false;
-	}
-
-	rmv_len = pattrib->hdrlen + pattrib->iv_len + (bsnaphdr ? SNAP_SIZE : 0);
-	len = precvframe->u.hdr.len - rmv_len;
-
-	memcpy(&be_tmp, ptr + rmv_len, 2);
-	eth_type = ntohs(be_tmp); /* pattrib->ether_type */
-	pattrib->eth_type = eth_type;
-
-	if (check_fwstate(pmlmepriv, WIFI_MP_STATE)) {
-		ptr += rmv_len;
-		*ptr = 0x87;
-		*(ptr + 1) = 0x12;
-
-		eth_type = 0x8712;
-		/*  append rx status for mp test packets */
-		ptr = recvframe_pull(precvframe, (rmv_len - sizeof(struct ethhdr) + 2) - 24);
-		if (!ptr)
-			return _FAIL;
-		memcpy(ptr, get_rxmem(precvframe), 24);
-		ptr += 24;
-	} else {
-		ptr = recvframe_pull(precvframe, (rmv_len - sizeof(struct ethhdr) + (bsnaphdr ? 2 : 0)));
-		if (!ptr)
-			return _FAIL;
-	}
-
-	memcpy(ptr, pattrib->dst, ETH_ALEN);
-	memcpy(ptr + ETH_ALEN, pattrib->src, ETH_ALEN);
-
-	if (!bsnaphdr) {
-		be_tmp = htons(len);
-		memcpy(ptr + 12, &be_tmp, 2);
-	}
-
-	return _SUCCESS;
-}
-
-static struct sk_buff *rtw_alloc_msdu_pkt(union recv_frame *prframe, u16 subframe_len, u8 *pdata)
-{
-	u16 eth_type;
-	struct sk_buff *sub_skb;
-	struct rx_pkt_attrib *pattrib;
-
-	pattrib = &prframe->u.hdr.attrib;
-
-	sub_skb = __dev_alloc_skb(subframe_len + 12, GFP_ATOMIC);
-	if (!sub_skb)
-		return NULL;
-
-	skb_reserve(sub_skb, 12);
-	skb_put_data(sub_skb, (pdata + ETH_HLEN), subframe_len);
-
-	eth_type = get_unaligned_be16(&sub_skb->data[6]);
-
-	if (sub_skb->len >= 8 &&
-		((!memcmp(sub_skb->data, rfc1042_header, SNAP_SIZE) &&
-		eth_type != ETH_P_AARP && eth_type != ETH_P_IPX) ||
-		!memcmp(sub_skb->data, bridge_tunnel_header, SNAP_SIZE))) {
-		/*
-		 * remove RFC1042 or Bridge-Tunnel encapsulation and replace
-		 * EtherType
-		 */
-		skb_pull(sub_skb, SNAP_SIZE);
-		memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN);
-		memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN);
-	} else {
-		__be16 len;
-		/* Leave Ethernet header part of hdr and full payload */
-		len = htons(sub_skb->len);
-		memcpy(skb_push(sub_skb, 2), &len, 2);
-		memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN);
-		memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN);
-	}
-
-	return sub_skb;
-}
-
-static void rtw_recv_indicate_pkt(struct adapter *padapter, struct sk_buff *pkt, struct rx_pkt_attrib *pattrib)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	/* Indicate the packets to upper layer */
-	if (pkt) {
-		if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-			struct sk_buff *pskb2 = NULL;
-			struct sta_info *psta = NULL;
-			struct sta_priv *pstapriv = &padapter->stapriv;
-			int bmcast = is_multicast_ether_addr(pattrib->dst);
-
-			if (memcmp(pattrib->dst, myid(&padapter->eeprompriv), ETH_ALEN)) {
-				if (bmcast) {
-					psta = rtw_get_bcmc_stainfo(padapter);
-					pskb2 = skb_clone(pkt, GFP_ATOMIC);
-				} else {
-					psta = rtw_get_stainfo(pstapriv, pattrib->dst);
-				}
-
-				if (psta) {
-					struct net_device *pnetdev = (struct net_device *)padapter->pnetdev;
-					/* skb->ip_summed = CHECKSUM_NONE; */
-					pkt->dev = pnetdev;
-					skb_set_queue_mapping(pkt, rtw_recv_select_queue(pkt));
-
-					_rtw_xmit_entry(pkt, pnetdev);
-
-					if (bmcast && pskb2)
-						pkt = pskb2;
-					else
-						return;
-				}
-			} else {
-				/*  to APself */
-			}
-		}
-
-		pkt->protocol = eth_type_trans(pkt, padapter->pnetdev);
-		pkt->dev = padapter->pnetdev;
-
-		pkt->ip_summed = CHECKSUM_NONE;
-
-		rtw_netif_rx(padapter->pnetdev, pkt);
-	}
-}
-
-static int amsdu_to_msdu(struct adapter *padapter, union recv_frame *prframe)
-{
-	int	a_len, padding_len;
-	u16 subframe_len;
-	u8 nr_subframes, i;
-	u8 *pdata;
-	struct sk_buff *sub_pkt, *subframes[MAX_SUBFRAME_COUNT];
-	struct recv_priv *precvpriv = &padapter->recvpriv;
-	struct __queue *pfree_recv_queue = &(precvpriv->free_recv_queue);
-
-	nr_subframes = 0;
-
-	recvframe_pull(prframe, prframe->u.hdr.attrib.hdrlen);
-
-	if (prframe->u.hdr.attrib.iv_len > 0)
-		recvframe_pull(prframe, prframe->u.hdr.attrib.iv_len);
-
-	a_len = prframe->u.hdr.len;
-
-	pdata = prframe->u.hdr.rx_data;
-
-	while (a_len > ETH_HLEN) {
-		/* Offset 12 denote 2 mac address */
-		subframe_len = get_unaligned_be16(pdata + 12);
-
-		if (a_len < ETH_HLEN + subframe_len)
-			break;
-
-		sub_pkt = rtw_alloc_msdu_pkt(prframe, subframe_len, pdata);
-		if (!sub_pkt)
-			break;
-
-		/* move the data point to data content */
-		pdata += ETH_HLEN;
-		a_len -= ETH_HLEN;
-
-		subframes[nr_subframes++] = sub_pkt;
-
-		if (nr_subframes >= MAX_SUBFRAME_COUNT)
-			break;
-
-		pdata += subframe_len;
-		a_len -= subframe_len;
-		if (a_len != 0) {
-			padding_len = 4 - ((subframe_len + ETH_HLEN) & (4 - 1));
-			if (padding_len == 4)
-				padding_len = 0;
-
-			if (a_len < padding_len)
-				break;
-
-			pdata += padding_len;
-			a_len -= padding_len;
-		}
-	}
-
-	for (i = 0; i < nr_subframes; i++) {
-		sub_pkt = subframes[i];
-
-		/* Indicate the packets to upper layer */
-		if (sub_pkt)
-			rtw_recv_indicate_pkt(padapter, sub_pkt, &prframe->u.hdr.attrib);
-	}
-
-	prframe->u.hdr.len = 0;
-	rtw_free_recvframe(prframe, pfree_recv_queue);/* free this recv_frame */
-
-	return  _SUCCESS;
-}
-
-static int check_indicate_seq(struct recv_reorder_ctrl *preorder_ctrl, u16 seq_num)
-{
-	u8 wsize = preorder_ctrl->wsize_b;
-	u16 wend = (preorder_ctrl->indicate_seq + wsize - 1) % 4096u;
-
-	/*  Rx Reorder initialize condition. */
-	if (preorder_ctrl->indicate_seq == 0xFFFF)
-		preorder_ctrl->indicate_seq = seq_num;
-
-	/*  Drop out the packet which SeqNum is smaller than WinStart */
-	if (SN_LESS(seq_num, preorder_ctrl->indicate_seq))
-		return false;
-
-	/*  */
-	/*  Sliding window manipulation. Conditions includes: */
-	/*  1. Incoming SeqNum is equal to WinStart =>Window shift 1 */
-	/*  2. Incoming SeqNum is larger than the WinEnd => Window shift N */
-	/*  */
-	if (SN_EQUAL(seq_num, preorder_ctrl->indicate_seq)) {
-		preorder_ctrl->indicate_seq = (preorder_ctrl->indicate_seq + 1) % 4096u;
-
-	} else if (SN_LESS(wend, seq_num)) {
-		/*  boundary situation, when seq_num cross 0xFFF */
-		if (seq_num >= (wsize - 1))
-			preorder_ctrl->indicate_seq = seq_num + 1 - wsize;
-		else
-			preorder_ctrl->indicate_seq = 0xFFF - (wsize - (seq_num + 1)) + 1;
-	}
-
-	return true;
-}
-
-static int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, union recv_frame *prframe)
-{
-	struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib;
-	struct __queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue;
-	struct list_head	*phead, *plist;
-	union recv_frame *pnextrframe;
-	struct rx_pkt_attrib *pnextattrib;
-
-	/* spin_lock_irqsave(&ppending_recvframe_queue->lock, irql); */
-	/* spin_lock(&ppending_recvframe_queue->lock); */
-
-	phead = get_list_head(ppending_recvframe_queue);
-	plist = get_next(phead);
-
-	while (phead != plist) {
-		pnextrframe = (union recv_frame *)plist;
-		pnextattrib = &pnextrframe->u.hdr.attrib;
-
-		if (SN_LESS(pnextattrib->seq_num, pattrib->seq_num))
-			plist = get_next(plist);
-		else if (SN_EQUAL(pnextattrib->seq_num, pattrib->seq_num))
-			/* Duplicate entry is found!! Do not insert current entry. */
-			/* spin_unlock_irqrestore(&ppending_recvframe_queue->lock, irql); */
-			return false;
-		else
-			break;
-	}
-
-	/* spin_lock_irqsave(&ppending_recvframe_queue->lock, irql); */
-	/* spin_lock(&ppending_recvframe_queue->lock); */
-
-	list_del_init(&(prframe->u.hdr.list));
-
-	list_add_tail(&(prframe->u.hdr.list), plist);
-
-	/* spin_unlock(&ppending_recvframe_queue->lock); */
-	/* spin_unlock_irqrestore(&ppending_recvframe_queue->lock, irql); */
-
-	return true;
-}
-
-static int rtw_recv_indicatepkt(struct adapter *padapter, union recv_frame *precv_frame)
-{
-	struct recv_priv *precvpriv;
-	struct __queue	*pfree_recv_queue;
-	struct sk_buff *skb;
-	struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
-
-	precvpriv = &(padapter->recvpriv);
-	pfree_recv_queue = &(precvpriv->free_recv_queue);
-
-	skb = precv_frame->u.hdr.pkt;
-	if (!skb)
-		goto _recv_indicatepkt_drop;
-
-	skb->data = precv_frame->u.hdr.rx_data;
-
-	skb_set_tail_pointer(skb, precv_frame->u.hdr.len);
-
-	skb->len = precv_frame->u.hdr.len;
-
-	rtw_recv_indicate_pkt(padapter, skb, pattrib);
-
-	/* pointers to NULL before rtw_free_recvframe() */
-	precv_frame->u.hdr.pkt = NULL;
-
-	rtw_free_recvframe(precv_frame, pfree_recv_queue);
-
-	return _SUCCESS;
-
-_recv_indicatepkt_drop:
-
-	/* enqueue back to free_recv_queue */
-	rtw_free_recvframe(precv_frame, pfree_recv_queue);
-
-	return _FAIL;
-}
-
-static int recv_indicatepkts_in_order(struct adapter *padapter, struct recv_reorder_ctrl *preorder_ctrl, int bforced)
-{
-	struct list_head	*phead, *plist;
-	union recv_frame *prframe;
-	struct rx_pkt_attrib *pattrib;
-	/* u8 index = 0; */
-	int bPktInBuf = false;
-	struct recv_priv *precvpriv = &padapter->recvpriv;
-	struct __queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue;
-
-	/* spin_lock_irqsave(&ppending_recvframe_queue->lock, irql); */
-	/* spin_lock(&ppending_recvframe_queue->lock); */
-
-	phead =		get_list_head(ppending_recvframe_queue);
-	plist = get_next(phead);
-
-	/*  Handling some condition for forced indicate case. */
-	if (bforced) {
-		if (list_empty(phead)) {
-			/*  spin_unlock_irqrestore(&ppending_recvframe_queue->lock, irql); */
-			/* spin_unlock(&ppending_recvframe_queue->lock); */
-			return true;
-		}
-
-		prframe = (union recv_frame *)plist;
-		pattrib = &prframe->u.hdr.attrib;
-
-		preorder_ctrl->indicate_seq = pattrib->seq_num;
-	}
-
-	/*  Prepare indication list and indication. */
-	/*  Check if there is any packet need indicate. */
-	while (!list_empty(phead)) {
-		prframe = (union recv_frame *)plist;
-		pattrib = &prframe->u.hdr.attrib;
-
-		if (!SN_LESS(preorder_ctrl->indicate_seq, pattrib->seq_num)) {
-			plist = get_next(plist);
-			list_del_init(&(prframe->u.hdr.list));
-
-			if (SN_EQUAL(preorder_ctrl->indicate_seq, pattrib->seq_num))
-				preorder_ctrl->indicate_seq = (preorder_ctrl->indicate_seq + 1) % 4096u;
-
-			/* Set this as a lock to make sure that only one thread is indicating packet. */
-			/* pTS->RxIndicateState = RXTS_INDICATE_PROCESSING; */
-
-			/*  Indicate packets */
-
-			/* indicate this recv_frame */
-			if (!pattrib->amsdu) {
-				if (!padapter->driver_stopped &&
-				    !padapter->bSurpriseRemoved)
-					rtw_recv_indicatepkt(padapter, prframe);/* indicate this recv_frame */
-
-			} else if (pattrib->amsdu == 1) {
-				if (amsdu_to_msdu(padapter, prframe) != _SUCCESS)
-					rtw_free_recvframe(prframe, &precvpriv->free_recv_queue);
-
-			} else {
-				/* error condition; */
-			}
-
-			/* Update local variables. */
-			bPktInBuf = false;
-
-		} else {
-			bPktInBuf = true;
-			break;
-		}
-	}
-
-	/* spin_unlock(&ppending_recvframe_queue->lock); */
-	/* spin_unlock_irqrestore(&ppending_recvframe_queue->lock, irql); */
-
-	return bPktInBuf;
-}
-
-static int recv_indicatepkt_reorder(struct adapter *padapter, union recv_frame *prframe)
-{
-	int retval = _SUCCESS;
-	struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib;
-	struct recv_reorder_ctrl *preorder_ctrl = prframe->u.hdr.preorder_ctrl;
-	struct __queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue;
-
-	if (!pattrib->amsdu) {
-		/* s1. */
-		wlanhdr_to_ethhdr(prframe);
-
-		if (pattrib->qos != 1) {
-			if (!padapter->driver_stopped &&
-			    !padapter->bSurpriseRemoved) {
-				rtw_recv_indicatepkt(padapter, prframe);
-				return _SUCCESS;
-			}
-
-			return _FAIL;
-		}
-
-		if (!preorder_ctrl->enable) {
-			/* indicate this recv_frame */
-			preorder_ctrl->indicate_seq = pattrib->seq_num;
-
-			rtw_recv_indicatepkt(padapter, prframe);
-
-			preorder_ctrl->indicate_seq = (preorder_ctrl->indicate_seq + 1) % 4096;
-
-			return _SUCCESS;
-		}
-	} else if (pattrib->amsdu == 1) { /* temp filter -> means didn't support A-MSDUs in a A-MPDU */
-		if (!preorder_ctrl->enable) {
-			preorder_ctrl->indicate_seq = pattrib->seq_num;
-
-			retval = amsdu_to_msdu(padapter, prframe);
-
-			preorder_ctrl->indicate_seq = (preorder_ctrl->indicate_seq + 1) % 4096;
-
-			return retval;
-		}
-	}
-
-	spin_lock_bh(&ppending_recvframe_queue->lock);
-
-	/* s2. check if winstart_b(indicate_seq) needs to been updated */
-	if (!check_indicate_seq(preorder_ctrl, pattrib->seq_num))
-		goto _err_exit;
-
-	/* s3. Insert all packet into Reorder Queue to maintain its ordering. */
-	if (!enqueue_reorder_recvframe(preorder_ctrl, prframe)) {
-		/* spin_unlock_irqrestore(&ppending_recvframe_queue->lock, irql); */
-		/* return _FAIL; */
-		goto _err_exit;
-	}
-
-	/* s4. */
-	/*  Indication process. */
-	/*  After Packet dropping and Sliding Window shifting as above, we can now just indicate the packets */
-	/*  with the SeqNum smaller than latest WinStart and buffer other packets. */
-	/*  */
-	/*  For Rx Reorder condition: */
-	/*  1. All packets with SeqNum smaller than WinStart => Indicate */
-	/*  2. All packets with SeqNum larger than or equal to WinStart => Buffer it. */
-	/*  */
-
-	/* recv_indicatepkts_in_order(padapter, preorder_ctrl, true); */
-	if (recv_indicatepkts_in_order(padapter, preorder_ctrl, false)) {
-		_set_timer(&preorder_ctrl->reordering_ctrl_timer, REORDER_WAIT_TIME);
-		spin_unlock_bh(&ppending_recvframe_queue->lock);
-	} else {
-		spin_unlock_bh(&ppending_recvframe_queue->lock);
-		timer_delete_sync(&preorder_ctrl->reordering_ctrl_timer);
-	}
-
-	return _SUCCESS;
-
-_err_exit:
-	spin_unlock_bh(&ppending_recvframe_queue->lock);
-
-	return _FAIL;
-}
-
-void rtw_reordering_ctrl_timeout_handler(struct timer_list *t)
-{
-	struct recv_reorder_ctrl *preorder_ctrl =
-		timer_container_of(preorder_ctrl, t, reordering_ctrl_timer);
-	struct adapter *padapter = preorder_ctrl->padapter;
-	struct __queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue;
-
-	if (padapter->driver_stopped || padapter->bSurpriseRemoved)
-		return;
-
-	spin_lock_bh(&ppending_recvframe_queue->lock);
-
-	if (recv_indicatepkts_in_order(padapter, preorder_ctrl, true))
-		_set_timer(&preorder_ctrl->reordering_ctrl_timer, REORDER_WAIT_TIME);
-
-	spin_unlock_bh(&ppending_recvframe_queue->lock);
-}
-
-static int process_recv_indicatepkts(struct adapter *padapter, union recv_frame *prframe)
-{
-	int retval = _SUCCESS;
-	/* struct recv_priv *precvpriv = &padapter->recvpriv; */
-	/* struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib; */
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct ht_priv *phtpriv = &pmlmepriv->htpriv;
-
-	if (phtpriv->ht_option) { /* B/G/N Mode */
-		/* prframe->u.hdr.preorder_ctrl = &precvpriv->recvreorder_ctrl[pattrib->priority]; */
-
-		if (recv_indicatepkt_reorder(padapter, prframe) != _SUCCESS) { /*  including perform A-MPDU Rx Ordering Buffer Control */
-
-			if (!padapter->driver_stopped &&
-			    !padapter->bSurpriseRemoved) {
-				retval = _FAIL;
-				return retval;
-			}
-		}
-	} else { /* B/G mode */
-		retval = wlanhdr_to_ethhdr(prframe);
-		if (retval != _SUCCESS)
-			return retval;
-
-		if (!padapter->driver_stopped && !padapter->bSurpriseRemoved) {
-			/* indicate this recv_frame */
-			rtw_recv_indicatepkt(padapter, prframe);
-		} else {
-			retval = _FAIL;
-			return retval;
-		}
-	}
-
-	return retval;
-}
-
-static int recv_func_prehandle(struct adapter *padapter, union recv_frame *rframe)
-{
-	int ret = _SUCCESS;
-	struct __queue *pfree_recv_queue = &padapter->recvpriv.free_recv_queue;
-
-	/* check the frame crtl field and decache */
-	ret = validate_recv_frame(padapter, rframe);
-	if (ret != _SUCCESS) {
-		rtw_free_recvframe(rframe, pfree_recv_queue);/* free this recv_frame */
-		goto exit;
-	}
-
-exit:
-	return ret;
-}
-
-static int recv_func_posthandle(struct adapter *padapter, union recv_frame *prframe)
-{
-	int ret = _SUCCESS;
-	union recv_frame *orig_prframe = prframe;
-	struct recv_priv *precvpriv = &padapter->recvpriv;
-	struct __queue *pfree_recv_queue = &padapter->recvpriv.free_recv_queue;
-
-	prframe = decryptor(padapter, prframe);
-	if (!prframe) {
-		ret = _FAIL;
-		goto _recv_data_drop;
-	}
-
-	prframe = recvframe_chk_defrag(padapter, prframe);
-	if (!prframe)
-		goto _recv_data_drop;
-
-	prframe = portctrl(padapter, prframe);
-	if (!prframe) {
-		ret = _FAIL;
-		goto _recv_data_drop;
-	}
-
-	count_rx_stats(padapter, prframe, NULL);
-
-	ret = process_recv_indicatepkts(padapter, prframe);
-	if (ret != _SUCCESS) {
-		rtw_free_recvframe(orig_prframe, pfree_recv_queue);/* free this recv_frame */
-		goto _recv_data_drop;
-	}
-
-_recv_data_drop:
-	precvpriv->rx_drop++;
-	return ret;
-}
-
-static int recv_func(struct adapter *padapter, union recv_frame *rframe)
-{
-	int ret;
-	struct rx_pkt_attrib *prxattrib = &rframe->u.hdr.attrib;
-	struct recv_priv *recvpriv = &padapter->recvpriv;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	struct mlme_priv *mlmepriv = &padapter->mlmepriv;
-
-	/* check if need to handle uc_swdec_pending_queue*/
-	if (check_fwstate(mlmepriv, WIFI_STATION_STATE) && psecuritypriv->busetkipkey) {
-		union recv_frame *pending_frame;
-
-		while ((pending_frame = rtw_alloc_recvframe(&padapter->recvpriv.uc_swdec_pending_queue)))
-			recv_func_posthandle(padapter, pending_frame);
-	}
-
-	ret = recv_func_prehandle(padapter, rframe);
-
-	if (ret == _SUCCESS) {
-		/* check if need to enqueue into uc_swdec_pending_queue*/
-		if (check_fwstate(mlmepriv, WIFI_STATION_STATE) &&
-		    !is_multicast_ether_addr(prxattrib->ra) &&
-		    prxattrib->encrypt > 0 &&
-		    (prxattrib->bdecrypted == 0 || psecuritypriv->sw_decrypt) &&
-		    psecuritypriv->ndisauthtype == Ndis802_11AuthModeWPAPSK &&
-		    !psecuritypriv->busetkipkey) {
-			rtw_enqueue_recvframe(rframe, &padapter->recvpriv.uc_swdec_pending_queue);
-
-			if (recvpriv->free_recvframe_cnt < NR_RECVFRAME / 4) {
-				/* to prevent from recvframe starvation, get recvframe from uc_swdec_pending_queue to free_recvframe_cnt  */
-				rframe = rtw_alloc_recvframe(&padapter->recvpriv.uc_swdec_pending_queue);
-				if (rframe)
-					goto do_posthandle;
-			}
-			goto exit;
-		}
-
-do_posthandle:
-		ret = recv_func_posthandle(padapter, rframe);
-	}
-
-exit:
-	return ret;
-}
-
-s32 rtw_recv_entry(union recv_frame *precvframe)
-{
-	struct adapter *padapter;
-	struct recv_priv *precvpriv;
-	s32 ret = _SUCCESS;
-
-	padapter = precvframe->u.hdr.adapter;
-
-	precvpriv = &padapter->recvpriv;
-
-	ret = recv_func(padapter, precvframe);
-	if (ret == _FAIL)
-		goto _recv_entry_drop;
-
-	precvpriv->rx_pkts++;
-
-	return ret;
-
-_recv_entry_drop:
-
-	return ret;
-}
-
-static void rtw_signal_stat_timer_hdl(struct timer_list *t)
-{
-	struct adapter *adapter =
-		timer_container_of(adapter, t, recvpriv.signal_stat_timer);
-	struct recv_priv *recvpriv = &adapter->recvpriv;
-
-	u32 tmp_s, tmp_q;
-	u8 avg_signal_strength = 0;
-	u8 avg_signal_qual = 0;
-	u32 num_signal_strength = 0;
-	u32 __maybe_unused num_signal_qual = 0;
-	u8 _alpha = 5; /*  this value is based on converging_constant = 5000 and sampling_interval = 1000 */
-
-	if (adapter->recvpriv.is_signal_dbg) {
-		/* update the user specific value, signal_strength_dbg, to signal_strength, rssi */
-		adapter->recvpriv.signal_strength = adapter->recvpriv.signal_strength_dbg;
-		adapter->recvpriv.rssi = (s8)translate_percentage_to_dbm((u8)adapter->recvpriv.signal_strength_dbg);
-	} else {
-		if (recvpriv->signal_strength_data.update_req == 0) {/*  update_req is clear, means we got rx */
-			avg_signal_strength = recvpriv->signal_strength_data.avg_val;
-			num_signal_strength = recvpriv->signal_strength_data.total_num;
-			/*  after avg_vals are acquired, we can re-stat the signal values */
-			recvpriv->signal_strength_data.update_req = 1;
-		}
-
-		if (recvpriv->signal_qual_data.update_req == 0) {/*  update_req is clear, means we got rx */
-			avg_signal_qual = recvpriv->signal_qual_data.avg_val;
-			num_signal_qual = recvpriv->signal_qual_data.total_num;
-			/*  after avg_vals are acquired, we can re-stat the signal values */
-			recvpriv->signal_qual_data.update_req = 1;
-		}
-
-		if (num_signal_strength == 0) {
-			if (rtw_get_on_cur_ch_time(adapter) == 0 ||
-			    jiffies_to_msecs(jiffies - rtw_get_on_cur_ch_time(adapter)) < 2 * adapter->mlmeextpriv.mlmext_info.bcn_interval
-			) {
-				goto set_timer;
-			}
-		}
-
-		if (check_fwstate(&adapter->mlmepriv, _FW_UNDER_SURVEY) ||
-		    !check_fwstate(&adapter->mlmepriv, _FW_LINKED)
-		) {
-			goto set_timer;
-		}
-
-		/* update value of signal_strength, rssi, signal_qual */
-		tmp_s = (avg_signal_strength + (_alpha - 1) * recvpriv->signal_strength);
-		if (tmp_s % _alpha)
-			tmp_s = tmp_s / _alpha + 1;
-		else
-			tmp_s = tmp_s / _alpha;
-		if (tmp_s > 100)
-			tmp_s = 100;
-
-		tmp_q = (avg_signal_qual + (_alpha - 1) * recvpriv->signal_qual);
-		if (tmp_q % _alpha)
-			tmp_q = tmp_q / _alpha + 1;
-		else
-			tmp_q = tmp_q / _alpha;
-		if (tmp_q > 100)
-			tmp_q = 100;
-
-		recvpriv->signal_strength = tmp_s;
-		recvpriv->rssi = (s8)translate_percentage_to_dbm(tmp_s);
-		recvpriv->signal_qual = tmp_q;
-	}
-
-set_timer:
-	rtw_set_signal_stat_timer(recvpriv);
-}
diff --git a/drivers/staging/rtl8723bs/core/rtw_security.c b/drivers/staging/rtl8723bs/core/rtw_security.c
deleted file mode 100644
index 2217cffac5f2..000000000000
--- a/drivers/staging/rtl8723bs/core/rtw_security.c
+++ /dev/null
@@ -1,1470 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <linux/crc32.h>
-#include <linux/unaligned.h>
-#include <linux/bitops.h>
-#include <drv_types.h>
-#include <crypto/aes.h>
-#include <crypto/utils.h>
-
-static const char * const _security_type_str[] = {
-	"N/A",
-	"WEP40",
-	"TKIP",
-	"TKIP_WM",
-	"AES",
-	"WEP104",
-	"SMS4",
-	"WEP_WPA",
-	"BIP",
-};
-
-const char *security_type_str(u8 value)
-{
-	if (value <= _BIP_)
-		return _security_type_str[value];
-	return NULL;
-}
-
-/* WEP related ===== */
-
-/* Need to consider the fragment  situation */
-void rtw_wep_encrypt(struct adapter *padapter, u8 *pxmitframe)
-{																	/*  exclude ICV */
-	union {
-		__le32 f0;
-		unsigned char f1[4];
-	} crc;
-
-	signed int	curfragnum, length;
-	u32 keylength;
-
-	u8 *pframe, *payload, *iv;    /* wepkey */
-	u8 wepkey[16];
-	u8 hw_hdr_offset = 0;
-	struct pkt_attrib *pattrib = &((struct xmit_frame *)pxmitframe)->attrib;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct arc4_ctx *ctx = &psecuritypriv->xmit_arc4_ctx;
-
-	if (!((struct xmit_frame *)pxmitframe)->buf_addr)
-		return;
-
-	hw_hdr_offset = TXDESC_OFFSET;
-	pframe = ((struct xmit_frame *)pxmitframe)->buf_addr + hw_hdr_offset;
-
-	/* start to encrypt each fragment */
-	if ((pattrib->encrypt == _WEP40_) || (pattrib->encrypt == _WEP104_)) {
-		keylength = psecuritypriv->dot11DefKeylen[psecuritypriv->dot11PrivacyKeyIndex];
-
-		for (curfragnum = 0; curfragnum < pattrib->nr_frags; curfragnum++) {
-			iv = pframe + pattrib->hdrlen;
-			memcpy(&wepkey[0], iv, 3);
-			memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[psecuritypriv->dot11PrivacyKeyIndex].skey[0], keylength);
-			payload = pframe + pattrib->iv_len + pattrib->hdrlen;
-
-			if ((curfragnum + 1) == pattrib->nr_frags) {	/* the last fragment */
-
-				length = pattrib->last_txcmdsz - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len;
-
-				crc.f0 = cpu_to_le32(~crc32_le(~0, payload, length));
-
-				arc4_setkey(ctx, wepkey, 3 + keylength);
-				arc4_crypt(ctx, payload, payload, length);
-				arc4_crypt(ctx, payload + length, crc.f1, 4);
-
-			} else {
-				length = pxmitpriv->frag_len - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len;
-				crc.f0 = cpu_to_le32(~crc32_le(~0, payload, length));
-				arc4_setkey(ctx, wepkey, 3 + keylength);
-				arc4_crypt(ctx, payload, payload, length);
-				arc4_crypt(ctx, payload + length, crc.f1, 4);
-
-				pframe += pxmitpriv->frag_len;
-				pframe = (u8 *)round_up((SIZE_PTR)(pframe), 4);
-			}
-		}
-	}
-}
-
-void rtw_wep_decrypt(struct adapter  *padapter, u8 *precvframe)
-{
-	/*  exclude ICV */
-	u8 crc[4];
-	signed int	length;
-	u32 keylength;
-	u8 *pframe, *payload, *iv, wepkey[16];
-	u8  keyindex;
-	struct	rx_pkt_attrib	 *prxattrib = &(((union recv_frame *)precvframe)->u.hdr.attrib);
-	struct	security_priv *psecuritypriv = &padapter->securitypriv;
-	struct arc4_ctx *ctx = &psecuritypriv->recv_arc4_ctx;
-
-	pframe = (unsigned char *)((union recv_frame *)precvframe)->u.hdr.rx_data;
-
-	/* start to decrypt recvframe */
-	if ((prxattrib->encrypt == _WEP40_) || (prxattrib->encrypt == _WEP104_)) {
-		iv = pframe + prxattrib->hdrlen;
-		/* keyindex =(iv[3]&0x3); */
-		keyindex = prxattrib->key_index;
-		keylength = psecuritypriv->dot11DefKeylen[keyindex];
-		memcpy(&wepkey[0], iv, 3);
-		/* memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[psecuritypriv->dot11PrivacyKeyIndex].skey[0], keylength); */
-		memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[keyindex].skey[0], keylength);
-		length = ((union recv_frame *)precvframe)->u.hdr.len - prxattrib->hdrlen - prxattrib->iv_len;
-
-		payload = pframe + prxattrib->iv_len + prxattrib->hdrlen;
-
-		/* decrypt payload include icv */
-		arc4_setkey(ctx, wepkey, 3 + keylength);
-		arc4_crypt(ctx, payload, payload,  length);
-
-		/* calculate icv and compare the icv */
-		*((u32 *)crc) = ~crc32_le(~0, payload, length - 4);
-	}
-}
-
-/* 3		=====TKIP related ===== */
-
-static void secmicclear(struct mic_data *pmicdata)
-{
-/*  Reset the state to the empty message. */
-	pmicdata->L = pmicdata->K0;
-	pmicdata->R = pmicdata->K1;
-	pmicdata->nBytesInM = 0;
-	pmicdata->M = 0;
-}
-
-void rtw_secmicsetkey(struct mic_data *pmicdata, u8 *key)
-{
-	/*  Set the key */
-	pmicdata->K0 = get_unaligned_le32(key);
-	pmicdata->K1 = get_unaligned_le32(key + 4);
-	/*  and reset the message */
-	secmicclear(pmicdata);
-}
-
-void rtw_secmicappendbyte(struct mic_data *pmicdata, u8 b)
-{
-	/*  Append the byte to our word-sized buffer */
-	pmicdata->M |= ((unsigned long)b) << (8 * pmicdata->nBytesInM);
-	pmicdata->nBytesInM++;
-	/*  Process the word if it is full. */
-	if (pmicdata->nBytesInM >= 4) {
-		pmicdata->L ^= pmicdata->M;
-		pmicdata->R ^= ROL32(pmicdata->L, 17);
-		pmicdata->L += pmicdata->R;
-		pmicdata->R ^= ((pmicdata->L & 0xff00ff00) >> 8) | ((pmicdata->L & 0x00ff00ff) << 8);
-		pmicdata->L += pmicdata->R;
-		pmicdata->R ^= ROL32(pmicdata->L, 3);
-		pmicdata->L += pmicdata->R;
-		pmicdata->R ^= ROR32(pmicdata->L, 2);
-		pmicdata->L += pmicdata->R;
-		/*  Clear the buffer */
-		pmicdata->M = 0;
-		pmicdata->nBytesInM = 0;
-	}
-}
-
-void rtw_secmicappend(struct mic_data *pmicdata, u8 *src, u32 nbytes)
-{
-	/*  This is simple */
-	while (nbytes > 0) {
-		rtw_secmicappendbyte(pmicdata, *src++);
-		nbytes--;
-	}
-}
-
-void rtw_secgetmic(struct mic_data *pmicdata, u8 *dst)
-{
-	/*  Append the minimum padding */
-	rtw_secmicappendbyte(pmicdata, 0x5a);
-	rtw_secmicappendbyte(pmicdata, 0);
-	rtw_secmicappendbyte(pmicdata, 0);
-	rtw_secmicappendbyte(pmicdata, 0);
-	rtw_secmicappendbyte(pmicdata, 0);
-	/*  and then zeroes until the length is a multiple of 4 */
-	while (pmicdata->nBytesInM != 0)
-		rtw_secmicappendbyte(pmicdata, 0);
-	/*  The appendByte function has already computed the result. */
-	put_unaligned_le32(pmicdata->L, dst);
-	put_unaligned_le32(pmicdata->R, dst + 4);
-	/*  Reset to the empty message. */
-	secmicclear(pmicdata);
-}
-
-void rtw_seccalctkipmic(u8 *key, u8 *header, u8 *data, u32 data_len, u8 *mic_code, u8 pri)
-{
-	struct mic_data	micdata;
-	u8 priority[4] = {0x0, 0x0, 0x0, 0x0};
-
-	rtw_secmicsetkey(&micdata, key);
-	priority[0] = pri;
-
-	/* Michael MIC pseudo header: DA, SA, 3 x 0, Priority */
-	if (header[1] & 1) {   /* ToDS == 1 */
-		rtw_secmicappend(&micdata, &header[16], 6);  /* DA */
-		if (header[1] & 2)  /* From Ds == 1 */
-			rtw_secmicappend(&micdata, &header[24], 6);
-		else
-			rtw_secmicappend(&micdata, &header[10], 6);
-	} else {	/* ToDS == 0 */
-		rtw_secmicappend(&micdata, &header[4], 6);   /* DA */
-		if (header[1] & 2)  /* From Ds == 1 */
-			rtw_secmicappend(&micdata, &header[16], 6);
-		else
-			rtw_secmicappend(&micdata, &header[10], 6);
-	}
-	rtw_secmicappend(&micdata, &priority[0], 4);
-
-	rtw_secmicappend(&micdata, data, data_len);
-
-	rtw_secgetmic(&micdata, mic_code);
-}
-
-/* macros for extraction/creation of unsigned char/unsigned short values  */
-#define   Lo8(v16)   ((u8)((v16)       & 0x00FF))
-#define   Hi8(v16)   ((u8)(((v16) >> 8) & 0x00FF))
-#define  Lo16(v32)   ((u16)((v32)       & 0xFFFF))
-#define  Hi16(v32)   ((u16)(((v32) >> 16) & 0xFFFF))
-#define  Mk16(hi, lo) ((lo) ^ (((u16)(hi)) << 8))
-
-/* select the Nth 16-bit word of the temporal key unsigned char array TK[]   */
-#define  TK16(N)     Mk16(tk[2 * (N) + 1], tk[2 * (N)])
-
-/* S-box lookup: 16 bits --> 16 bits */
-#define _S_(v16)     (Sbox1[0][Lo8(v16)] ^ Sbox1[1][Hi8(v16)])
-
-/* fixed algorithm "parameters" */
-#define PHASE1_LOOP_CNT   8    /* this needs to be "big enough"     */
-
-/* 2-unsigned char by 2-unsigned char subset of the full AES S-box table */
-static const unsigned short Sbox1[2][256] = {      /* Sbox for hash (can be in ROM)     */
-{
-	 0xC6A5, 0xF884, 0xEE99, 0xF68D, 0xFF0D, 0xD6BD, 0xDEB1, 0x9154,
-	 0x6050, 0x0203, 0xCEA9, 0x567D, 0xE719, 0xB562, 0x4DE6, 0xEC9A,
-	 0x8F45, 0x1F9D, 0x8940, 0xFA87, 0xEF15, 0xB2EB, 0x8EC9, 0xFB0B,
-	 0x41EC, 0xB367, 0x5FFD, 0x45EA, 0x23BF, 0x53F7, 0xE496, 0x9B5B,
-	 0x75C2, 0xE11C, 0x3DAE, 0x4C6A, 0x6C5A, 0x7E41, 0xF502, 0x834F,
-	 0x685C, 0x51F4, 0xD134, 0xF908, 0xE293, 0xAB73, 0x6253, 0x2A3F,
-	 0x080C, 0x9552, 0x4665, 0x9D5E, 0x3028, 0x37A1, 0x0A0F, 0x2FB5,
-	 0x0E09, 0x2436, 0x1B9B, 0xDF3D, 0xCD26, 0x4E69, 0x7FCD, 0xEA9F,
-	 0x121B, 0x1D9E, 0x5874, 0x342E, 0x362D, 0xDCB2, 0xB4EE, 0x5BFB,
-	 0xA4F6, 0x764D, 0xB761, 0x7DCE, 0x527B, 0xDD3E, 0x5E71, 0x1397,
-	 0xA6F5, 0xB968, 0x0000, 0xC12C, 0x4060, 0xE31F, 0x79C8, 0xB6ED,
-	 0xD4BE, 0x8D46, 0x67D9, 0x724B, 0x94DE, 0x98D4, 0xB0E8, 0x854A,
-	 0xBB6B, 0xC52A, 0x4FE5, 0xED16, 0x86C5, 0x9AD7, 0x6655, 0x1194,
-	 0x8ACF, 0xE910, 0x0406, 0xFE81, 0xA0F0, 0x7844, 0x25BA, 0x4BE3,
-	 0xA2F3, 0x5DFE, 0x80C0, 0x058A, 0x3FAD, 0x21BC, 0x7048, 0xF104,
-	 0x63DF, 0x77C1, 0xAF75, 0x4263, 0x2030, 0xE51A, 0xFD0E, 0xBF6D,
-	 0x814C, 0x1814, 0x2635, 0xC32F, 0xBEE1, 0x35A2, 0x88CC, 0x2E39,
-	 0x9357, 0x55F2, 0xFC82, 0x7A47, 0xC8AC, 0xBAE7, 0x322B, 0xE695,
-	 0xC0A0, 0x1998, 0x9ED1, 0xA37F, 0x4466, 0x547E, 0x3BAB, 0x0B83,
-	 0x8CCA, 0xC729, 0x6BD3, 0x283C, 0xA779, 0xBCE2, 0x161D, 0xAD76,
-	 0xDB3B, 0x6456, 0x744E, 0x141E, 0x92DB, 0x0C0A, 0x486C, 0xB8E4,
-	 0x9F5D, 0xBD6E, 0x43EF, 0xC4A6, 0x39A8, 0x31A4, 0xD337, 0xF28B,
-	 0xD532, 0x8B43, 0x6E59, 0xDAB7, 0x018C, 0xB164, 0x9CD2, 0x49E0,
-	 0xD8B4, 0xACFA, 0xF307, 0xCF25, 0xCAAF, 0xF48E, 0x47E9, 0x1018,
-	 0x6FD5, 0xF088, 0x4A6F, 0x5C72, 0x3824, 0x57F1, 0x73C7, 0x9751,
-	 0xCB23, 0xA17C, 0xE89C, 0x3E21, 0x96DD, 0x61DC, 0x0D86, 0x0F85,
-	 0xE090, 0x7C42, 0x71C4, 0xCCAA, 0x90D8, 0x0605, 0xF701, 0x1C12,
-	 0xC2A3, 0x6A5F, 0xAEF9, 0x69D0, 0x1791, 0x9958, 0x3A27, 0x27B9,
-	 0xD938, 0xEB13, 0x2BB3, 0x2233, 0xD2BB, 0xA970, 0x0789, 0x33A7,
-	 0x2DB6, 0x3C22, 0x1592, 0xC920, 0x8749, 0xAAFF, 0x5078, 0xA57A,
-	 0x038F, 0x59F8, 0x0980, 0x1A17, 0x65DA, 0xD731, 0x84C6, 0xD0B8,
-	 0x82C3, 0x29B0, 0x5A77, 0x1E11, 0x7BCB, 0xA8FC, 0x6DD6, 0x2C3A,
-	},
-
-	{  /* second half of table is unsigned char-reversed version of first! */
-	 0xA5C6, 0x84F8, 0x99EE, 0x8DF6, 0x0DFF, 0xBDD6, 0xB1DE, 0x5491,
-	 0x5060, 0x0302, 0xA9CE, 0x7D56, 0x19E7, 0x62B5, 0xE64D, 0x9AEC,
-	 0x458F, 0x9D1F, 0x4089, 0x87FA, 0x15EF, 0xEBB2, 0xC98E, 0x0BFB,
-	 0xEC41, 0x67B3, 0xFD5F, 0xEA45, 0xBF23, 0xF753, 0x96E4, 0x5B9B,
-	 0xC275, 0x1CE1, 0xAE3D, 0x6A4C, 0x5A6C, 0x417E, 0x02F5, 0x4F83,
-	 0x5C68, 0xF451, 0x34D1, 0x08F9, 0x93E2, 0x73AB, 0x5362, 0x3F2A,
-	 0x0C08, 0x5295, 0x6546, 0x5E9D, 0x2830, 0xA137, 0x0F0A, 0xB52F,
-	 0x090E, 0x3624, 0x9B1B, 0x3DDF, 0x26CD, 0x694E, 0xCD7F, 0x9FEA,
-	 0x1B12, 0x9E1D, 0x7458, 0x2E34, 0x2D36, 0xB2DC, 0xEEB4, 0xFB5B,
-	 0xF6A4, 0x4D76, 0x61B7, 0xCE7D, 0x7B52, 0x3EDD, 0x715E, 0x9713,
-	 0xF5A6, 0x68B9, 0x0000, 0x2CC1, 0x6040, 0x1FE3, 0xC879, 0xEDB6,
-	 0xBED4, 0x468D, 0xD967, 0x4B72, 0xDE94, 0xD498, 0xE8B0, 0x4A85,
-	 0x6BBB, 0x2AC5, 0xE54F, 0x16ED, 0xC586, 0xD79A, 0x5566, 0x9411,
-	 0xCF8A, 0x10E9, 0x0604, 0x81FE, 0xF0A0, 0x4478, 0xBA25, 0xE34B,
-	 0xF3A2, 0xFE5D, 0xC080, 0x8A05, 0xAD3F, 0xBC21, 0x4870, 0x04F1,
-	 0xDF63, 0xC177, 0x75AF, 0x6342, 0x3020, 0x1AE5, 0x0EFD, 0x6DBF,
-	 0x4C81, 0x1418, 0x3526, 0x2FC3, 0xE1BE, 0xA235, 0xCC88, 0x392E,
-	 0x5793, 0xF255, 0x82FC, 0x477A, 0xACC8, 0xE7BA, 0x2B32, 0x95E6,
-	 0xA0C0, 0x9819, 0xD19E, 0x7FA3, 0x6644, 0x7E54, 0xAB3B, 0x830B,
-	 0xCA8C, 0x29C7, 0xD36B, 0x3C28, 0x79A7, 0xE2BC, 0x1D16, 0x76AD,
-	 0x3BDB, 0x5664, 0x4E74, 0x1E14, 0xDB92, 0x0A0C, 0x6C48, 0xE4B8,
-	 0x5D9F, 0x6EBD, 0xEF43, 0xA6C4, 0xA839, 0xA431, 0x37D3, 0x8BF2,
-	 0x32D5, 0x438B, 0x596E, 0xB7DA, 0x8C01, 0x64B1, 0xD29C, 0xE049,
-	 0xB4D8, 0xFAAC, 0x07F3, 0x25CF, 0xAFCA, 0x8EF4, 0xE947, 0x1810,
-	 0xD56F, 0x88F0, 0x6F4A, 0x725C, 0x2438, 0xF157, 0xC773, 0x5197,
-	 0x23CB, 0x7CA1, 0x9CE8, 0x213E, 0xDD96, 0xDC61, 0x860D, 0x850F,
-	 0x90E0, 0x427C, 0xC471, 0xAACC, 0xD890, 0x0506, 0x01F7, 0x121C,
-	 0xA3C2, 0x5F6A, 0xF9AE, 0xD069, 0x9117, 0x5899, 0x273A, 0xB927,
-	 0x38D9, 0x13EB, 0xB32B, 0x3322, 0xBBD2, 0x70A9, 0x8907, 0xA733,
-	 0xB62D, 0x223C, 0x9215, 0x20C9, 0x4987, 0xFFAA, 0x7850, 0x7AA5,
-	 0x8F03, 0xF859, 0x8009, 0x171A, 0xDA65, 0x31D7, 0xC684, 0xB8D0,
-	 0xC382, 0xB029, 0x775A, 0x111E, 0xCB7B, 0xFCA8, 0xD66D, 0x3A2C,
-	}
-};
-
-/*
- * Routine: Phase 1 -- generate P1K, given TA, TK, IV32
- *
- * Inputs:
- *     tk[]      = temporal key                         [128 bits]
- *     ta[]      = transmitter's MAC address            [ 48 bits]
- *     iv32      = upper 32 bits of IV                  [ 32 bits]
- * Output:
- *     p1k[]     = Phase 1 key                          [ 80 bits]
- *
- * Note:
- *     This function only needs to be called every 2**16 packets,
- *     although in theory it could be called every packet.
- */
-static void phase1(u16 *p1k, const u8 *tk, const u8 *ta, u32 iv32)
-{
-	signed int  i;
-
-	/* Initialize the 80 bits of P1K[] from IV32 and TA[0..5]     */
-	p1k[0]      = Lo16(iv32);
-	p1k[1]      = Hi16(iv32);
-	p1k[2]      = Mk16(ta[1], ta[0]); /* use TA[] as little-endian */
-	p1k[3]      = Mk16(ta[3], ta[2]);
-	p1k[4]      = Mk16(ta[5], ta[4]);
-
-	/* Now compute an unbalanced Feistel cipher with 80-bit block */
-	/* size on the 80-bit block P1K[], using the 128-bit key TK[] */
-	for (i = 0; i < PHASE1_LOOP_CNT; i++) {
-		/* Each add operation here is mod 2**16 */
-		p1k[0] += _S_(p1k[4] ^ TK16((i & 1) + 0));
-		p1k[1] += _S_(p1k[0] ^ TK16((i & 1) + 2));
-		p1k[2] += _S_(p1k[1] ^ TK16((i & 1) + 4));
-		p1k[3] += _S_(p1k[2] ^ TK16((i & 1) + 6));
-		p1k[4] += _S_(p1k[3] ^ TK16((i & 1) + 0));
-		p1k[4] +=  (unsigned short)i;          /* avoid "slide attacks" */
-	}
-}
-
-/*
- * Routine: Phase 2 -- generate RC4KEY, given TK, P1K, IV16
- *
- * Inputs:
- *     tk[]      = Temporal key                         [128 bits]
- *     p1k[]     = Phase 1 output key                   [ 80 bits]
- *     iv16      = low 16 bits of IV counter            [ 16 bits]
- * Output:
- *     rc4key[]  = the key used to encrypt the packet   [128 bits]
- *
- * Note:
- *     The value {TA, IV32, IV16} for Phase1/Phase2 must be unique
- *     across all packets using the same key TK value. Then, for a
- *     given value of TK[], this TKIP48 construction guarantees that
- *     the final RC4KEY value is unique across all packets.
- *
- * Suggested implementation optimization: if PPK[] is "overlaid"
- *     appropriately on RC4KEY[], there is no need for the final
- *     for loop below that copies the PPK[] result into RC4KEY[].
- */
-static void phase2(u8 *rc4key, const u8 *tk, const u16 *p1k, u16 iv16)
-{
-	signed int  i;
-	u16 PPK[6];                          /* temporary key for mixing    */
-
-	/* Note: all adds in the PPK[] equations below are mod 2**16         */
-	for (i = 0; i < 5; i++)
-		PPK[i] = p1k[i];      /* first, copy P1K to PPK      */
-
-	PPK[5]  =  p1k[4] + iv16;             /* next,  add in IV16          */
-
-	/* Bijective non-linear mixing of the 96 bits of PPK[0..5]           */
-	PPK[0] +=    _S_(PPK[5] ^ TK16(0));   /* Mix key in each "round"     */
-	PPK[1] +=    _S_(PPK[0] ^ TK16(1));
-	PPK[2] +=    _S_(PPK[1] ^ TK16(2));
-	PPK[3] +=    _S_(PPK[2] ^ TK16(3));
-	PPK[4] +=    _S_(PPK[3] ^ TK16(4));
-	PPK[5] +=    _S_(PPK[4] ^ TK16(5));   /* Total # S-box lookups == 6  */
-
-	/* Final sweep: bijective, "linear". Rotates kill LSB correlations   */
-	PPK[0] +=  ror16(PPK[5] ^ TK16(6), 1);
-	PPK[1] +=  ror16(PPK[0] ^ TK16(7), 1);   /* Use all of TK[] in Phase2   */
-	PPK[2] +=  ror16(PPK[1], 1);
-	PPK[3] +=  ror16(PPK[2], 1);
-	PPK[4] +=  ror16(PPK[3], 1);
-	PPK[5] +=  ror16(PPK[4], 1);
-	/* Note: At this point, for a given key TK[0..15], the 96-bit output */
-	/*       value PPK[0..5] is guaranteed to be unique, as a function   */
-	/*       of the 96-bit "input" value   {TA, IV32, IV16}. That is, P1K  */
-	/*       is now a keyed permutation of {TA, IV32, IV16}.               */
-
-	/* Set RC4KEY[0..3], which includes "cleartext" portion of RC4 key   */
-	rc4key[0] = Hi8(iv16);                /* RC4KEY[0..2] is the WEP IV  */
-	rc4key[1] = (Hi8(iv16) | 0x20) & 0x7F; /* Help avoid weak (FMS) keys  */
-	rc4key[2] = Lo8(iv16);
-	rc4key[3] = Lo8((PPK[5] ^ TK16(0)) >> 1);
-
-	/* Copy 96 bits of PPK[0..5] to RC4KEY[4..15]  (little-endian)       */
-	for (i = 0; i < 6; i++) {
-		rc4key[4 + 2 * i] = Lo8(PPK[i]);
-		rc4key[5 + 2 * i] = Hi8(PPK[i]);
-	}
-}
-
-/* The hlen isn't include the IV */
-u32 rtw_tkip_encrypt(struct adapter *padapter, u8 *pxmitframe)
-{																	/*  exclude ICV */
-	u16 pnl;
-	u32 pnh;
-	u8 rc4key[16];
-	u8   ttkey[16];
-	union {
-		__le32 f0;
-		u8 f1[4];
-	} crc;
-	u8   hw_hdr_offset = 0;
-	signed int			curfragnum, length;
-
-	u8 *pframe, *payload, *iv, *prwskey;
-	union pn48 dot11txpn;
-	struct pkt_attrib *pattrib = &((struct xmit_frame *)pxmitframe)->attrib;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct arc4_ctx *ctx = &psecuritypriv->xmit_arc4_ctx;
-	u32 res = _SUCCESS;
-
-	if (!((struct xmit_frame *)pxmitframe)->buf_addr)
-		return _FAIL;
-
-	hw_hdr_offset = TXDESC_OFFSET;
-	pframe = ((struct xmit_frame *)pxmitframe)->buf_addr + hw_hdr_offset;
-
-	/* 4 start to encrypt each fragment */
-	if (pattrib->encrypt != _TKIP_)
-		return _SUCCESS;
-
-	if (is_multicast_ether_addr(pattrib->ra))
-		prwskey = psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey;
-	else
-		prwskey = pattrib->dot118021x_UncstKey.skey;
-
-	for (curfragnum = 0; curfragnum < pattrib->nr_frags; curfragnum++) {
-		iv = pframe + pattrib->hdrlen;
-		payload = pframe + pattrib->iv_len + pattrib->hdrlen;
-
-		GET_TKIP_PN(iv, dot11txpn);
-
-		pnl = (u16)(dot11txpn.val);
-		pnh = (u32)(dot11txpn.val >> 16);
-
-		phase1((u16 *)&ttkey[0], prwskey, &pattrib->ta[0], pnh);
-
-		phase2(&rc4key[0], prwskey, (u16 *)&ttkey[0], pnl);
-
-		if ((curfragnum + 1) == pattrib->nr_frags) {	/* 4 the last fragment */
-			length = pattrib->last_txcmdsz - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len;
-			crc.f0 = cpu_to_le32(~crc32_le(~0, payload, length));
-
-			arc4_setkey(ctx, rc4key, 16);
-			arc4_crypt(ctx, payload, payload, length);
-			arc4_crypt(ctx, payload + length, crc.f1, 4);
-
-		} else {
-			length = pxmitpriv->frag_len - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len;
-			crc.f0 = cpu_to_le32(~crc32_le(~0, payload, length));
-
-			arc4_setkey(ctx, rc4key, 16);
-			arc4_crypt(ctx, payload, payload, length);
-			arc4_crypt(ctx, payload + length, crc.f1, 4);
-
-			pframe += pxmitpriv->frag_len;
-			pframe = (u8 *)round_up((SIZE_PTR)(pframe), 4);
-		}
-	}
-	return res;
-}
-
-/* The hlen isn't include the IV */
-u32 rtw_tkip_decrypt(struct adapter *padapter, u8 *precvframe)
-{																	/*  exclude ICV */
-	u16 pnl;
-	u32 pnh;
-	u8   rc4key[16];
-	u8   ttkey[16];
-	u8 crc[4];
-	signed int			length;
-
-	u8 *pframe, *payload, *iv, *prwskey;
-	union pn48 dot11txpn;
-	struct sta_info *stainfo;
-	struct rx_pkt_attrib *prxattrib = &((union recv_frame *)precvframe)->u.hdr.attrib;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	struct arc4_ctx *ctx = &psecuritypriv->recv_arc4_ctx;
-	u32 res = _SUCCESS;
-
-	pframe = (unsigned char *)((union recv_frame *)precvframe)->u.hdr.rx_data;
-
-	/* 4 start to decrypt recvframe */
-	if (prxattrib->encrypt != _TKIP_)
-		return _SUCCESS;
-
-	stainfo = rtw_get_stainfo(&padapter->stapriv, &prxattrib->ta[0]);
-	if (!stainfo)
-		return _FAIL;
-
-	if (is_multicast_ether_addr(prxattrib->ra)) {
-		static unsigned long start;
-		static u32 no_gkey_bc_cnt;
-		static u32 no_gkey_mc_cnt;
-
-		if (!psecuritypriv->binstallGrpkey) {
-			res = _FAIL;
-
-			if (start == 0)
-				start = jiffies;
-
-			if (is_broadcast_ether_addr(prxattrib->ra))
-				no_gkey_bc_cnt++;
-			else
-				no_gkey_mc_cnt++;
-
-			if (jiffies_to_msecs(jiffies - start) > 1000) {
-				if (no_gkey_bc_cnt || no_gkey_mc_cnt) {
-					netdev_dbg(padapter->pnetdev,
-						   FUNC_ADPT_FMT " no_gkey_bc_cnt:%u, no_gkey_mc_cnt:%u\n",
-						   FUNC_ADPT_ARG(padapter),
-						   no_gkey_bc_cnt,
-						   no_gkey_mc_cnt);
-				}
-				start = jiffies;
-				no_gkey_bc_cnt = 0;
-				no_gkey_mc_cnt = 0;
-			}
-			goto exit;
-		}
-
-		if (no_gkey_bc_cnt || no_gkey_mc_cnt) {
-			netdev_dbg(padapter->pnetdev,
-				   FUNC_ADPT_FMT " gkey installed. no_gkey_bc_cnt:%u, no_gkey_mc_cnt:%u\n",
-				   FUNC_ADPT_ARG(padapter),
-				   no_gkey_bc_cnt,
-				   no_gkey_mc_cnt);
-		}
-		start = 0;
-		no_gkey_bc_cnt = 0;
-		no_gkey_mc_cnt = 0;
-
-		prwskey = psecuritypriv->dot118021XGrpKey[prxattrib->key_index].skey;
-	} else {
-		prwskey = &stainfo->dot118021x_UncstKey.skey[0];
-	}
-
-	iv = pframe + prxattrib->hdrlen;
-	payload = pframe + prxattrib->iv_len + prxattrib->hdrlen;
-	length = ((union recv_frame *)precvframe)->u.hdr.len - prxattrib->hdrlen - prxattrib->iv_len;
-
-	GET_TKIP_PN(iv, dot11txpn);
-
-	pnl = (u16)(dot11txpn.val);
-	pnh = (u32)(dot11txpn.val >> 16);
-
-	phase1((u16 *)&ttkey[0], prwskey, &prxattrib->ta[0], pnh);
-	phase2(&rc4key[0], prwskey, (unsigned short *)&ttkey[0], pnl);
-
-	/* 4 decrypt payload include icv */
-
-	arc4_setkey(ctx, rc4key, 16);
-	arc4_crypt(ctx, payload, payload, length);
-
-	*((u32 *)crc) = ~crc32_le(~0, payload, length - 4);
-
-	if (crc[3] != payload[length - 1] || crc[2] != payload[length - 2] ||
-	    crc[1] != payload[length - 3] || crc[0] != payload[length - 4])
-		res = _FAIL;
-exit:
-	return res;
-}
-
-/* 3			=====AES related ===== */
-
-#define MAX_MSG_SIZE	2048
-
-/****************************************/
-/* aes128k128d()                        */
-/* Performs a 128 bit AES encrypt with  */
-/* 128 bit data.                        */
-/****************************************/
-static void aes128k128d(u8 *key, u8 *data, u8 *ciphertext)
-{
-	struct aes_enckey aes;
-
-	aes_prepareenckey(&aes, key, 16);
-	aes_encrypt(&aes, ciphertext, data);
-	memzero_explicit(&aes, sizeof(aes));
-}
-
-/************************************************/
-/* construct_mic_iv()                           */
-/* Builds the MIC IV from header fields and PN  */
-/* Baron think the function is construct CCM    */
-/* nonce                                        */
-/************************************************/
-static void construct_mic_iv(u8 *mic_iv,
-			     signed int qc_exists,
-			     signed int a4_exists,
-			     u8 *mpdu,
-			     uint payload_length,
-			     u8 *pn_vector,
-			     uint frtype)
-{
-		signed int i;
-
-		mic_iv[0] = 0x59;
-
-		if (qc_exists && a4_exists)
-			mic_iv[1] = mpdu[30] & 0x0f;    /* QoS_TC           */
-
-		if (qc_exists && !a4_exists)
-			mic_iv[1] = mpdu[24] & 0x0f;   /* mute bits 7-4    */
-
-		if (!qc_exists)
-			mic_iv[1] = 0x00;
-
-		/* 802.11w management frame should set management bit(4) */
-		if (frtype == WIFI_MGT_TYPE)
-			mic_iv[1] |= BIT(4);
-
-		for (i = 2; i < 8; i++)
-			mic_iv[i] = mpdu[i + 8];   /* mic_iv[2:7] = A2[0:5] = mpdu[10:15] */
-		for (i = 8; i < 14; i++)
-			mic_iv[i] = pn_vector[13 - i];          /* mic_iv[8:13] = PN[5:0] */
-		mic_iv[14] = (unsigned char)(payload_length / 256);
-		mic_iv[15] = (unsigned char)(payload_length % 256);
-}
-
-/************************************************/
-/* construct_mic_header1()                      */
-/* Builds the first MIC header block from       */
-/* header fields.                               */
-/* Build AAD SC, A1, A2                           */
-/************************************************/
-static void construct_mic_header1(u8 *mic_header1,
-				  signed int header_length,
-				  u8 *mpdu,
-				  uint frtype)
-{
-		mic_header1[0] = (u8)((header_length - 2) / 256);
-		mic_header1[1] = (u8)((header_length - 2) % 256);
-
-		/* 802.11w management frame don't AND subtype bits 4, 5, 6 of frame control field */
-		if (frtype == WIFI_MGT_TYPE)
-			mic_header1[2] = mpdu[0];
-		else
-			mic_header1[2] = mpdu[0] & 0xcf;    /* Mute CF poll & CF ack bits */
-
-		mic_header1[3] = mpdu[1] & 0xc7;    /* Mute retry, more data and pwr mgt bits */
-		mic_header1[4] = mpdu[4];       /* A1 */
-		mic_header1[5] = mpdu[5];
-		mic_header1[6] = mpdu[6];
-		mic_header1[7] = mpdu[7];
-		mic_header1[8] = mpdu[8];
-		mic_header1[9] = mpdu[9];
-		mic_header1[10] = mpdu[10];     /* A2 */
-		mic_header1[11] = mpdu[11];
-		mic_header1[12] = mpdu[12];
-		mic_header1[13] = mpdu[13];
-		mic_header1[14] = mpdu[14];
-		mic_header1[15] = mpdu[15];
-}
-
-/************************************************/
-/* construct_mic_header2()                      */
-/* Builds the last MIC header block from        */
-/* header fields.                               */
-/************************************************/
-static void construct_mic_header2(u8 *mic_header2,
-				  u8 *mpdu,
-				  signed int a4_exists,
-				  signed int qc_exists)
-{
-		signed int i;
-
-		for (i = 0; i < 16; i++)
-			mic_header2[i] = 0x00;
-
-		mic_header2[0] = mpdu[16];    /* A3 */
-		mic_header2[1] = mpdu[17];
-		mic_header2[2] = mpdu[18];
-		mic_header2[3] = mpdu[19];
-		mic_header2[4] = mpdu[20];
-		mic_header2[5] = mpdu[21];
-
-		mic_header2[6] = 0x00;
-		mic_header2[7] = 0x00; /* mpdu[23]; */
-
-		if (!qc_exists && a4_exists) {
-			for (i = 0; i < 6; i++)
-				mic_header2[8 + i] = mpdu[24 + i];   /* A4 */
-		}
-
-		if (qc_exists && !a4_exists) {
-			mic_header2[8] = mpdu[24] & 0x0f; /* mute bits 15 - 4 */
-			mic_header2[9] = mpdu[25] & 0x00;
-		}
-
-		if (qc_exists && a4_exists) {
-			for (i = 0; i < 6; i++)
-				mic_header2[8 + i] = mpdu[24 + i];   /* A4 */
-
-			mic_header2[14] = mpdu[30] & 0x0f;
-			mic_header2[15] = mpdu[31] & 0x00;
-		}
-}
-
-/************************************************/
-/* construct_mic_header2()                      */
-/* Builds the last MIC header block from        */
-/* header fields.                               */
-/* Baron think the function is construct CCM    */
-/* nonce                                        */
-/************************************************/
-static void construct_ctr_preload(u8 *ctr_preload,
-				  signed int a4_exists,
-				  signed int qc_exists,
-				  u8 *mpdu,
-				  u8 *pn_vector,
-				  signed int c,
-				  uint frtype)
-{
-	signed int i = 0;
-
-	for (i = 0; i < 16; i++)
-		ctr_preload[i] = 0x00;
-	i = 0;
-
-	ctr_preload[0] = 0x01;                                  /* flag */
-	if (qc_exists && a4_exists)
-		ctr_preload[1] = mpdu[30] & 0x0f;   /* QoC_Control */
-	if (qc_exists && !a4_exists)
-		ctr_preload[1] = mpdu[24] & 0x0f;
-
-	/* 802.11w management frame should set management bit(4) */
-	if (frtype == WIFI_MGT_TYPE)
-		ctr_preload[1] |= BIT(4);
-
-	for (i = 2; i < 8; i++)
-		ctr_preload[i] = mpdu[i + 8];                       /* ctr_preload[2:7] = A2[0:5] = mpdu[10:15] */
-	for (i = 8; i < 14; i++)
-		ctr_preload[i] =    pn_vector[13 - i];          /* ctr_preload[8:13] = PN[5:0] */
-	ctr_preload[14] = (unsigned char)(c / 256); /* Ctr */
-	ctr_preload[15] = (unsigned char)(c % 256);
-}
-
-static signed int aes_cipher(u8 *key, uint	hdrlen,
-			u8 *pframe, uint plen)
-{
-	uint	qc_exists, a4_exists, i, j, payload_remainder,
-		num_blocks, payload_index;
-
-	u8 pn_vector[6];
-	u8 mic_iv[16] = {};
-	u8 mic_header1[16] = {};
-	u8 mic_header2[16] = {};
-	u8 ctr_preload[16] = {};
-
-	/* Intermediate Buffers */
-	u8 chain_buffer[16] = {};
-	u8 aes_out[16] = {};
-	u8 padded_buffer[16] = {};
-	u8 mic[8];
-	uint	frtype  = GetFrameType(pframe);
-	uint	frsubtype  = GetFrameSubType(pframe);
-
-	frsubtype = frsubtype >> 4;
-
-	if ((hdrlen == WLAN_HDR_A3_LEN) || (hdrlen ==  WLAN_HDR_A3_QOS_LEN))
-		a4_exists = 0;
-	else
-		a4_exists = 1;
-
-	if (((frtype | frsubtype) == WIFI_DATA_CFACK) ||
-	    ((frtype | frsubtype) == WIFI_DATA_CFPOLL) ||
-	    ((frtype | frsubtype) == WIFI_DATA_CFACKPOLL)) {
-		qc_exists = 1;
-		if (hdrlen !=  WLAN_HDR_A3_QOS_LEN)
-			hdrlen += 2;
-
-	} else if ((frtype == WIFI_DATA) &&
-		   ((frsubtype == 0x08) ||
-		   (frsubtype == 0x09) ||
-		   (frsubtype == 0x0a) ||
-		   (frsubtype == 0x0b))) {
-		if (hdrlen !=  WLAN_HDR_A3_QOS_LEN)
-			hdrlen += 2;
-
-		qc_exists = 1;
-	} else {
-		qc_exists = 0;
-	}
-
-	pn_vector[0] = pframe[hdrlen];
-	pn_vector[1] = pframe[hdrlen + 1];
-	pn_vector[2] = pframe[hdrlen + 4];
-	pn_vector[3] = pframe[hdrlen + 5];
-	pn_vector[4] = pframe[hdrlen + 6];
-	pn_vector[5] = pframe[hdrlen + 7];
-
-	construct_mic_iv(mic_iv,
-			 qc_exists,
-			 a4_exists,
-			 pframe,	 /* message, */
-			 plen,
-			 pn_vector,
-			 frtype);
-
-	construct_mic_header1(mic_header1,
-			      hdrlen,
-			      pframe,	/* message */
-			      frtype);
-
-	construct_mic_header2(mic_header2,
-			      pframe,	/* message, */
-			      a4_exists,
-			      qc_exists);
-
-	payload_remainder = plen % 16;
-	num_blocks = plen / 16;
-
-	/* Find start of payload */
-	payload_index = (hdrlen + 8);
-
-	/* Calculate MIC */
-	aes128k128d(key, mic_iv, aes_out);
-	crypto_xor_cpy(chain_buffer, aes_out, mic_header1, 16);
-	aes128k128d(key, chain_buffer, aes_out);
-	crypto_xor_cpy(chain_buffer, aes_out, mic_header2, 16);
-	aes128k128d(key, chain_buffer, aes_out);
-
-	for (i = 0; i < num_blocks; i++) {
-		crypto_xor_cpy(chain_buffer, aes_out, &pframe[payload_index], 16);
-
-		payload_index += 16;
-		aes128k128d(key, chain_buffer, aes_out);
-	}
-
-	/* Add on the final payload block if it needs padding */
-	if (payload_remainder > 0) {
-		for (j = 0; j < 16; j++)
-			padded_buffer[j] = 0x00;
-		for (j = 0; j < payload_remainder; j++)
-			padded_buffer[j] = pframe[payload_index++];
-
-		crypto_xor_cpy(chain_buffer, aes_out, padded_buffer, 16);
-		aes128k128d(key, chain_buffer, aes_out);
-	}
-
-	for (j = 0 ; j < 8; j++)
-		mic[j] = aes_out[j];
-
-	/* Insert MIC into payload */
-	for (j = 0; j < 8; j++)
-		pframe[payload_index + j] = mic[j];
-
-	payload_index = hdrlen + 8;
-	for (i = 0; i < num_blocks; i++) {
-		construct_ctr_preload(ctr_preload, a4_exists, qc_exists, pframe, /* message, */
-				      pn_vector, i + 1, frtype);
-		aes128k128d(key, ctr_preload, aes_out);
-		crypto_xor_cpy(chain_buffer, aes_out, &pframe[payload_index], 16);
-		for (j = 0; j < 16; j++)
-			pframe[payload_index++] = chain_buffer[j];
-	}
-
-	if (payload_remainder > 0) {
-		/* If there is a short final block, then pad it,*/
-		/* encrypt it and copy the unpadded part back   */
-		construct_ctr_preload(ctr_preload, a4_exists, qc_exists, pframe, /* message, */
-				      pn_vector, num_blocks + 1, frtype);
-
-		for (j = 0; j < 16; j++)
-			padded_buffer[j] = 0x00;
-		for (j = 0; j < payload_remainder; j++)
-			padded_buffer[j] = pframe[payload_index + j];
-
-		aes128k128d(key, ctr_preload, aes_out);
-		crypto_xor_cpy(chain_buffer, aes_out, padded_buffer, 16);
-		for (j = 0; j < payload_remainder; j++)
-			pframe[payload_index++] = chain_buffer[j];
-	}
-
-	/* Encrypt the MIC */
-	construct_ctr_preload(ctr_preload, a4_exists, qc_exists, pframe, /* message, */
-			      pn_vector, 0, frtype);
-
-	for (j = 0; j < 16; j++)
-		padded_buffer[j] = 0x00;
-	for (j = 0; j < 8; j++)
-		padded_buffer[j] = pframe[j + hdrlen + 8 + plen];
-
-	aes128k128d(key, ctr_preload, aes_out);
-	crypto_xor_cpy(chain_buffer, aes_out, padded_buffer, 16);
-	for (j = 0; j < 8; j++)
-		pframe[payload_index++] = chain_buffer[j];
-
-	return _SUCCESS;
-}
-
-u32 rtw_aes_encrypt(struct adapter *padapter, u8 *pxmitframe)
-{	/*  exclude ICV */
-
-	/*static*/
-	/* unsigned char message[MAX_MSG_SIZE]; */
-
-	/* Intermediate Buffers */
-	signed int curfragnum, length;
-	u8 *pframe, *prwskey;	/*  *payload,*iv */
-	u8 hw_hdr_offset = 0;
-	struct pkt_attrib *pattrib = &((struct xmit_frame *)pxmitframe)->attrib;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-	u32 res = _SUCCESS;
-
-	if (!((struct xmit_frame *)pxmitframe)->buf_addr)
-		return _FAIL;
-
-	hw_hdr_offset = TXDESC_OFFSET;
-	pframe = ((struct xmit_frame *)pxmitframe)->buf_addr + hw_hdr_offset;
-
-	/* 4 start to encrypt each fragment */
-	if (pattrib->encrypt != _AES_)
-		return _SUCCESS;
-
-	if (is_multicast_ether_addr(pattrib->ra))
-		prwskey = psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey;
-	else
-		prwskey = pattrib->dot118021x_UncstKey.skey;
-
-	for (curfragnum = 0; curfragnum < pattrib->nr_frags; curfragnum++) {
-		if ((curfragnum + 1) == pattrib->nr_frags) {	/* 4 the last fragment */
-			length = pattrib->last_txcmdsz - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len;
-
-			aes_cipher(prwskey, pattrib->hdrlen, pframe, length);
-		} else {
-			length = pxmitpriv->frag_len - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len;
-
-			aes_cipher(prwskey, pattrib->hdrlen, pframe, length);
-			pframe += pxmitpriv->frag_len;
-			pframe = (u8 *)round_up((SIZE_PTR)(pframe), 4);
-		}
-	}
-	return res;
-}
-
-static signed int aes_decipher(u8 *key, uint	hdrlen,
-			 u8 *pframe, uint plen)
-{
-	static u8 message[MAX_MSG_SIZE];
-	uint qc_exists, a4_exists, i, j, payload_remainder,
-			num_blocks, payload_index;
-	signed int res = _SUCCESS;
-	u8 pn_vector[6];
-	u8 mic_iv[16] = {};
-	u8 mic_header1[16] = {};
-	u8 mic_header2[16] = {};
-	u8 ctr_preload[16] = {};
-
-		/* Intermediate Buffers */
-	u8 chain_buffer[16] = {};
-	u8 aes_out[16] = {};
-	u8 padded_buffer[16] = {};
-	u8 mic[8];
-
-	uint frtype  = GetFrameType(pframe);
-	uint frsubtype  = GetFrameSubType(pframe);
-
-	frsubtype = frsubtype >> 4;
-
-	/* start to decrypt the payload */
-
-	num_blocks = (plen - 8) / 16; /* plen including LLC, payload_length and mic) */
-
-	payload_remainder = (plen - 8) % 16;
-
-	pn_vector[0]  = pframe[hdrlen];
-	pn_vector[1]  = pframe[hdrlen + 1];
-	pn_vector[2]  = pframe[hdrlen + 4];
-	pn_vector[3]  = pframe[hdrlen + 5];
-	pn_vector[4]  = pframe[hdrlen + 6];
-	pn_vector[5]  = pframe[hdrlen + 7];
-
-	if ((hdrlen == WLAN_HDR_A3_LEN) || (hdrlen ==  WLAN_HDR_A3_QOS_LEN))
-		a4_exists = 0;
-	else
-		a4_exists = 1;
-
-	if (((frtype | frsubtype) == WIFI_DATA_CFACK) ||
-	    ((frtype | frsubtype) == WIFI_DATA_CFPOLL) ||
-	    ((frtype | frsubtype) == WIFI_DATA_CFACKPOLL)) {
-		qc_exists = 1;
-		if (hdrlen !=  WLAN_HDR_A3_QOS_LEN)
-			hdrlen += 2;
-
-	} else if ((frtype == WIFI_DATA) &&
-		   ((frsubtype == 0x08) ||
-		   (frsubtype == 0x09) ||
-		   (frsubtype == 0x0a) ||
-		   (frsubtype == 0x0b))) {
-		if (hdrlen !=  WLAN_HDR_A3_QOS_LEN)
-			hdrlen += 2;
-
-		qc_exists = 1;
-	} else {
-		qc_exists = 0;
-	}
-
-	/*  now, decrypt pframe with hdrlen offset and plen long */
-
-	payload_index = hdrlen + 8; /*  8 is for extiv */
-
-	for (i = 0; i < num_blocks; i++) {
-		construct_ctr_preload(ctr_preload, a4_exists,
-				      qc_exists, pframe,
-				      pn_vector, i + 1,
-				      frtype);
-
-		aes128k128d(key, ctr_preload, aes_out);
-		crypto_xor_cpy(chain_buffer, aes_out, &pframe[payload_index], 16);
-
-		for (j = 0; j < 16; j++)
-			pframe[payload_index++] = chain_buffer[j];
-	}
-
-	if (payload_remainder > 0) {
-		/* If there is a short final block, then pad it,*/
-		/* encrypt it and copy the unpadded part back   */
-		construct_ctr_preload(ctr_preload, a4_exists, qc_exists, pframe, pn_vector,
-				      num_blocks + 1, frtype);
-
-		for (j = 0; j < 16; j++)
-			padded_buffer[j] = 0x00;
-		for (j = 0; j < payload_remainder; j++)
-			padded_buffer[j] = pframe[payload_index + j];
-
-		aes128k128d(key, ctr_preload, aes_out);
-		crypto_xor_cpy(chain_buffer, aes_out, padded_buffer, 16);
-		for (j = 0; j < payload_remainder; j++)
-			pframe[payload_index++] = chain_buffer[j];
-	}
-
-	/* start to calculate the mic */
-	if ((hdrlen + plen + 8) <= MAX_MSG_SIZE)
-		memcpy(message, pframe, (hdrlen + plen + 8)); /* 8 is for ext iv len */
-
-	pn_vector[0] = pframe[hdrlen];
-	pn_vector[1] = pframe[hdrlen + 1];
-	pn_vector[2] = pframe[hdrlen + 4];
-	pn_vector[3] = pframe[hdrlen + 5];
-	pn_vector[4] = pframe[hdrlen + 6];
-	pn_vector[5] = pframe[hdrlen + 7];
-
-	construct_mic_iv(mic_iv, qc_exists, a4_exists, message, plen - 8, pn_vector, frtype);
-
-	construct_mic_header1(mic_header1, hdrlen, message, frtype);
-	construct_mic_header2(mic_header2, message, a4_exists, qc_exists);
-
-	payload_remainder = (plen - 8) % 16;
-	num_blocks = (plen - 8) / 16;
-
-	/* Find start of payload */
-	payload_index = (hdrlen + 8);
-
-	/* Calculate MIC */
-	aes128k128d(key, mic_iv, aes_out);
-	crypto_xor_cpy(chain_buffer, aes_out, mic_header1, 16);
-	aes128k128d(key, chain_buffer, aes_out);
-	crypto_xor_cpy(chain_buffer, aes_out, mic_header2, 16);
-	aes128k128d(key, chain_buffer, aes_out);
-
-	for (i = 0; i < num_blocks; i++) {
-		crypto_xor_cpy(chain_buffer, aes_out, &message[payload_index], 16);
-
-		payload_index += 16;
-		aes128k128d(key, chain_buffer, aes_out);
-	}
-
-	/* Add on the final payload block if it needs padding */
-	if (payload_remainder > 0) {
-		for (j = 0; j < 16; j++)
-			padded_buffer[j] = 0x00;
-		for (j = 0; j < payload_remainder; j++)
-			padded_buffer[j] = message[payload_index++];
-
-		crypto_xor_cpy(chain_buffer, aes_out, padded_buffer, 16);
-		aes128k128d(key, chain_buffer, aes_out);
-	}
-
-	for (j = 0; j < 8; j++)
-		mic[j] = aes_out[j];
-
-	/* Insert MIC into payload */
-	for (j = 0; j < 8; j++)
-		message[payload_index + j] = mic[j];
-
-	payload_index = hdrlen + 8;
-	for (i = 0; i < num_blocks; i++) {
-		construct_ctr_preload(ctr_preload, a4_exists, qc_exists, message, pn_vector, i + 1,
-				      frtype);
-		aes128k128d(key, ctr_preload, aes_out);
-		crypto_xor_cpy(chain_buffer, aes_out, &message[payload_index], 16);
-		for (j = 0; j < 16; j++)
-			message[payload_index++] = chain_buffer[j];
-	}
-
-	if (payload_remainder > 0) {
-		/* If there is a short final block, then pad it,*/
-		/* encrypt it and copy the unpadded part back   */
-		construct_ctr_preload(ctr_preload, a4_exists, qc_exists, message, pn_vector,
-				      num_blocks + 1, frtype);
-
-		for (j = 0; j < 16; j++)
-			padded_buffer[j] = 0x00;
-		for (j = 0; j < payload_remainder; j++)
-			padded_buffer[j] = message[payload_index + j];
-
-		aes128k128d(key, ctr_preload, aes_out);
-		crypto_xor_cpy(chain_buffer, aes_out, padded_buffer, 16);
-		for (j = 0; j < payload_remainder; j++)
-			message[payload_index++] = chain_buffer[j];
-	}
-
-	/* Encrypt the MIC */
-	construct_ctr_preload(ctr_preload, a4_exists, qc_exists, message, pn_vector, 0, frtype);
-
-	for (j = 0; j < 16; j++)
-		padded_buffer[j] = 0x00;
-	for (j = 0; j < 8; j++)
-		padded_buffer[j] = message[j + hdrlen + 8 + plen - 8];
-
-	aes128k128d(key, ctr_preload, aes_out);
-	crypto_xor_cpy(chain_buffer, aes_out, padded_buffer, 16);
-	for (j = 0; j < 8; j++)
-		message[payload_index++] = chain_buffer[j];
-
-	/* compare the mic */
-	for (i = 0; i < 8; i++) {
-		if (pframe[hdrlen + 8 + plen - 8 + i] != message[hdrlen + 8 + plen - 8 + i])
-			res = _FAIL;
-	}
-	return res;
-}
-
-u32 rtw_aes_decrypt(struct adapter *padapter, u8 *precvframe)
-{	/*  exclude ICV */
-
-	/*static*/
-	/* unsigned char message[MAX_MSG_SIZE]; */
-
-	/* Intermediate Buffers */
-
-	signed int length;
-	u8 *pframe, *prwskey;	/*  *payload,*iv */
-	struct sta_info *stainfo;
-	struct rx_pkt_attrib *prxattrib = &((union recv_frame *)precvframe)->u.hdr.attrib;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	u32 res = _SUCCESS;
-
-	pframe = (unsigned char *)((union recv_frame *)precvframe)->u.hdr.rx_data;
-	/* 4 start to encrypt each fragment */
-	if (prxattrib->encrypt != _AES_)
-		return _SUCCESS;
-	stainfo = rtw_get_stainfo(&padapter->stapriv, &prxattrib->ta[0]);
-	if (!stainfo)
-		return _FAIL;
-	if (is_multicast_ether_addr(prxattrib->ra)) {
-		static unsigned long start;
-		static u32 no_gkey_bc_cnt;
-		static u32 no_gkey_mc_cnt;
-
-		if (!psecuritypriv->binstallGrpkey) {
-			res = _FAIL;
-
-			if (start == 0)
-				start = jiffies;
-
-			if (is_broadcast_ether_addr(prxattrib->ra))
-				no_gkey_bc_cnt++;
-			else
-				no_gkey_mc_cnt++;
-
-			if (jiffies_to_msecs(jiffies - start) > 1000) {
-				if (no_gkey_bc_cnt || no_gkey_mc_cnt) {
-					netdev_dbg(padapter->pnetdev,
-						   FUNC_ADPT_FMT " no_gkey_bc_cnt:%u, no_gkey_mc_cnt:%u\n",
-						   FUNC_ADPT_ARG(padapter),
-						   no_gkey_bc_cnt,
-						   no_gkey_mc_cnt);
-				}
-				start = jiffies;
-				no_gkey_bc_cnt = 0;
-				no_gkey_mc_cnt = 0;
-			}
-
-			goto exit;
-		}
-
-		if (no_gkey_bc_cnt || no_gkey_mc_cnt) {
-			netdev_dbg(padapter->pnetdev,
-				   FUNC_ADPT_FMT " gkey installed. no_gkey_bc_cnt:%u, no_gkey_mc_cnt:%u\n",
-				   FUNC_ADPT_ARG(padapter),
-				   no_gkey_bc_cnt,
-				   no_gkey_mc_cnt);
-		}
-		start = 0;
-		no_gkey_bc_cnt = 0;
-		no_gkey_mc_cnt = 0;
-
-		prwskey = psecuritypriv->dot118021XGrpKey[prxattrib->key_index].skey;
-		if (psecuritypriv->dot118021XGrpKeyid != prxattrib->key_index) {
-			res = _FAIL;
-			goto exit;
-		}
-	} else {
-		prwskey = &stainfo->dot118021x_UncstKey.skey[0];
-	}
-
-	length = ((union recv_frame *)precvframe)->u.hdr.len - prxattrib->hdrlen - prxattrib->iv_len;
-
-	res = aes_decipher(prwskey, prxattrib->hdrlen, pframe, length);
-
-exit:
-	return res;
-}
-
-u32 rtw_BIP_verify(struct adapter *padapter, u8 *precvframe)
-{
-	struct rx_pkt_attrib *pattrib = &((union recv_frame *)precvframe)->u.hdr.attrib;
-	u8 *pframe;
-	u8 *BIP_AAD, *p;
-	u32 res = _FAIL;
-	uint len, ori_len;
-	struct ieee80211_hdr *pwlanhdr;
-	u8 mic[16];
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	__le16 le_tmp;
-	__le64 le_tmp64 = 0;
-
-	ori_len = pattrib->pkt_len - WLAN_HDR_A3_LEN + BIP_AAD_SIZE;
-	BIP_AAD = kzalloc(ori_len, GFP_KERNEL);
-	if (!BIP_AAD)
-		return _FAIL;
-
-	/* PKT start */
-	pframe = (unsigned char *)((union recv_frame *)precvframe)->u.hdr.rx_data;
-	/* mapping to wlan header */
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-	/* save the frame body + MME */
-	memcpy(BIP_AAD + BIP_AAD_SIZE, pframe + WLAN_HDR_A3_LEN, pattrib->pkt_len - WLAN_HDR_A3_LEN);
-	/* find MME IE pointer */
-	p = rtw_get_ie(BIP_AAD + BIP_AAD_SIZE, WLAN_EID_MMIE, &len, pattrib->pkt_len - WLAN_HDR_A3_LEN);
-	/* Baron */
-	if (p) {
-		u16 keyid = 0;
-		u64 temp_ipn = 0;
-		/* save packet number */
-		memcpy(&le_tmp64, p + 4, 6);
-		temp_ipn = le64_to_cpu(le_tmp64);
-		/* BIP packet number should bigger than previous BIP packet */
-		if (temp_ipn <= pmlmeext->mgnt_80211w_IPN_rx)
-			goto BIP_exit;
-
-		/* copy key index */
-		memcpy(&le_tmp, p + 2, 2);
-		keyid = le16_to_cpu(le_tmp);
-		if (keyid != padapter->securitypriv.dot11wBIPKeyid)
-			goto BIP_exit;
-
-		/* clear the MIC field of MME to zero */
-		memset(p + 2 + len - 8, 0, 8);
-
-		/* conscruct AAD, copy frame control field */
-		memcpy(BIP_AAD, &pwlanhdr->frame_control, 2);
-		ClearRetry(BIP_AAD);
-		ClearPwrMgt(BIP_AAD);
-		ClearMData(BIP_AAD);
-		/* conscruct AAD, copy address 1 to address 3 */
-		memcpy(BIP_AAD + 2, &pwlanhdr->addrs, sizeof(pwlanhdr->addrs));
-
-		if (omac1_aes_128(padapter->securitypriv.dot11wBIPKey[padapter->securitypriv.dot11wBIPKeyid].skey
-			, BIP_AAD, ori_len, mic))
-			goto BIP_exit;
-
-		/* MIC field should be last 8 bytes of packet (packet without FCS) */
-		if (!memcmp(mic, pframe + pattrib->pkt_len - 8, 8)) {
-			pmlmeext->mgnt_80211w_IPN_rx = temp_ipn;
-			res = _SUCCESS;
-		} else {
-		}
-
-	} else {
-		res = RTW_RX_HANDLED;
-	}
-BIP_exit:
-
-	kfree(BIP_AAD);
-	return res;
-}
-
-static void gf_mulx(u8 *pad)
-{
-	int i, carry;
-
-	carry = pad[0] & 0x80;
-	for (i = 0; i < AES_BLOCK_SIZE - 1; i++)
-		pad[i] = (pad[i] << 1) | (pad[i + 1] >> 7);
-
-	pad[AES_BLOCK_SIZE - 1] <<= 1;
-	if (carry)
-		pad[AES_BLOCK_SIZE - 1] ^= 0x87;
-}
-
-/**
- * omac1_aes_128_vector - One-Key CBC MAC (OMAC1) hash with AES-128
- * @key: 128-bit key for the hash operation
- * @num_elem: Number of elements in the data vector
- * @addr: Pointers to the data areas
- * @len: Lengths of the data blocks
- * @mac: Buffer for MAC (128 bits, i.e., 16 bytes)
- * Returns: 0 on success, -1 on failure
- *
- * This is a mode for using block cipher (AES in this case) for authentication.
- * OMAC1 was standardized with the name CMAC by NIST in a Special Publication
- * (SP) 800-38B.
- */
-static int omac1_aes_128_vector(u8 *key, size_t num_elem,
-				u8 *addr[], size_t *len, u8 *mac)
-{
-	struct aes_enckey aes;
-	u8 cbc[AES_BLOCK_SIZE], pad[AES_BLOCK_SIZE];
-	u8 *pos, *end;
-	size_t i, e, left, total_len;
-	int ret;
-
-	ret = aes_prepareenckey(&aes, key, 16);
-	if (ret)
-		return -1;
-	memset(cbc, 0, AES_BLOCK_SIZE);
-
-	total_len = 0;
-	for (e = 0; e < num_elem; e++)
-		total_len += len[e];
-	left = total_len;
-
-	e = 0;
-	pos = addr[0];
-	end = pos + len[0];
-
-	while (left >= AES_BLOCK_SIZE) {
-		for (i = 0; i < AES_BLOCK_SIZE; i++) {
-			cbc[i] ^= *pos++;
-			if (pos >= end) {
-				e++;
-				pos = addr[e];
-				end = pos + len[e];
-			}
-		}
-		if (left > AES_BLOCK_SIZE)
-			aes_encrypt(&aes, cbc, cbc);
-		left -= AES_BLOCK_SIZE;
-	}
-
-	memset(pad, 0, AES_BLOCK_SIZE);
-	aes_encrypt(&aes, pad, pad);
-	gf_mulx(pad);
-
-	if (left || total_len == 0) {
-		for (i = 0; i < left; i++) {
-			cbc[i] ^= *pos++;
-			if (pos >= end) {
-				e++;
-				pos = addr[e];
-				end = pos + len[e];
-			}
-		}
-		cbc[left] ^= 0x80;
-		gf_mulx(pad);
-	}
-
-	for (i = 0; i < AES_BLOCK_SIZE; i++)
-		pad[i] ^= cbc[i];
-	aes_encrypt(&aes, pad, mac);
-	memzero_explicit(&aes, sizeof(aes));
-	return 0;
-}
-
-/**
- * omac1_aes_128 - One-Key CBC MAC (OMAC1) hash with AES-128 (aka AES-CMAC)
- * @key: 128-bit key for the hash operation
- * @data: Data buffer for which a MAC is determined
- * @data_len: Length of data buffer in bytes
- * @mac: Buffer for MAC (128 bits, i.e., 16 bytes)
- * Returns: 0 on success, -1 on failure
- *
- * This is a mode for using block cipher (AES in this case) for authentication.
- * OMAC1 was standardized with the name CMAC by NIST in a Special Publication
- * (SP) 800-38B.
- */
-int omac1_aes_128(u8 *key, u8 *data, size_t data_len, u8 *mac)
-{
-	return omac1_aes_128_vector(key, 1, &data, &data_len, mac);
-}
-
-/* Restore HW wep key setting according to key_mask */
-void rtw_sec_restore_wep_key(struct adapter *adapter)
-{
-	struct security_priv *securitypriv = &adapter->securitypriv;
-	signed int keyid;
-
-	if ((securitypriv->dot11_privacy_algrthm == _WEP40_) || (securitypriv->dot11_privacy_algrthm == _WEP104_)) {
-		for (keyid = 0; keyid < 4; keyid++) {
-			if (securitypriv->key_mask & BIT(keyid)) {
-				if (keyid == securitypriv->dot11PrivacyKeyIndex)
-					rtw_set_key(adapter, securitypriv, keyid, 1, false);
-				else
-					rtw_set_key(adapter, securitypriv, keyid, 0, false);
-			}
-		}
-	}
-}
-
-u8 rtw_handle_tkip_countermeasure(struct adapter *adapter, const char *caller)
-{
-	struct security_priv *securitypriv = &adapter->securitypriv;
-	u8 status = _SUCCESS;
-
-	if (securitypriv->btkip_countermeasure) {
-		unsigned long passing_ms = jiffies_to_msecs(jiffies - securitypriv->btkip_countermeasure_time);
-
-		if (passing_ms > 60 * 1000) {
-			netdev_dbg(adapter->pnetdev,
-				   "%s(%s) countermeasure time:%lus > 60s\n",
-				   caller, ADPT_ARG(adapter),
-				   passing_ms / 1000);
-			securitypriv->btkip_countermeasure = false;
-			securitypriv->btkip_countermeasure_time = 0;
-		} else {
-			netdev_dbg(adapter->pnetdev,
-				   "%s(%s) countermeasure time:%lus < 60s\n",
-				   caller, ADPT_ARG(adapter),
-				   passing_ms / 1000);
-			status = _FAIL;
-		}
-	}
-
-	return status;
-}
diff --git a/drivers/staging/rtl8723bs/core/rtw_sta_mgt.c b/drivers/staging/rtl8723bs/core/rtw_sta_mgt.c
deleted file mode 100644
index 6d014bf8fa96..000000000000
--- a/drivers/staging/rtl8723bs/core/rtw_sta_mgt.c
+++ /dev/null
@@ -1,549 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <drv_types.h>
-
-void _rtw_init_stainfo(struct sta_info *psta);
-void _rtw_init_stainfo(struct sta_info *psta)
-{
-	memset((u8 *)psta, 0, sizeof(struct sta_info));
-
-	spin_lock_init(&psta->lock);
-	INIT_LIST_HEAD(&psta->list);
-	INIT_LIST_HEAD(&psta->hash_list);
-	/* INIT_LIST_HEAD(&psta->asoc_list); */
-	/* INIT_LIST_HEAD(&psta->sleep_list); */
-	/* INIT_LIST_HEAD(&psta->wakeup_list); */
-
-	INIT_LIST_HEAD(&psta->sleep_q.queue);
-	spin_lock_init(&psta->sleep_q.lock);
-	psta->sleepq_len = 0;
-
-	_rtw_init_sta_xmit_priv(&psta->sta_xmitpriv);
-	_rtw_init_sta_recv_priv(&psta->sta_recvpriv);
-
-	INIT_LIST_HEAD(&psta->asoc_list);
-
-	INIT_LIST_HEAD(&psta->auth_list);
-
-	psta->expire_to = 0;
-
-	psta->flags = 0;
-
-	psta->capability = 0;
-
-	psta->bpairwise_key_installed = false;
-
-	psta->nonerp_set = 0;
-	psta->no_short_slot_time_set = 0;
-	psta->no_short_preamble_set = 0;
-	psta->no_ht_gf_set = 0;
-	psta->no_ht_set = 0;
-	psta->ht_20mhz_set = 0;
-
-	psta->under_exist_checking = 0;
-
-	psta->keep_alive_trycnt = 0;
-}
-
-u32 _rtw_init_sta_priv(struct	sta_priv *pstapriv)
-{
-	struct sta_info *psta;
-	s32 i;
-
-	pstapriv->pallocated_stainfo_buf = vzalloc(sizeof(struct sta_info) * NUM_STA + 4);
-
-	if (!pstapriv->pallocated_stainfo_buf)
-		return _FAIL;
-
-	pstapriv->pstainfo_buf = pstapriv->pallocated_stainfo_buf + 4 -
-		((SIZE_PTR)(pstapriv->pallocated_stainfo_buf) & 3);
-
-	INIT_LIST_HEAD(&pstapriv->free_sta_queue.queue);
-	spin_lock_init(&pstapriv->free_sta_queue.lock);
-
-	spin_lock_init(&pstapriv->sta_hash_lock);
-
-	pstapriv->asoc_sta_count = 0;
-	INIT_LIST_HEAD(&pstapriv->sleep_q.queue);
-	spin_lock_init(&pstapriv->sleep_q.lock);
-	INIT_LIST_HEAD(&pstapriv->wakeup_q.queue);
-	spin_lock_init(&pstapriv->wakeup_q.lock);
-
-	psta = (struct sta_info *)(pstapriv->pstainfo_buf);
-
-	for (i = 0; i < NUM_STA; i++) {
-		_rtw_init_stainfo(psta);
-
-		INIT_LIST_HEAD(&pstapriv->sta_hash[i]);
-
-		list_add_tail(&psta->list, get_list_head(&pstapriv->free_sta_queue));
-
-		psta++;
-	}
-
-	pstapriv->sta_dz_bitmap = 0;
-	pstapriv->tim_bitmap = 0;
-
-	INIT_LIST_HEAD(&pstapriv->asoc_list);
-	INIT_LIST_HEAD(&pstapriv->auth_list);
-	spin_lock_init(&pstapriv->asoc_list_lock);
-	spin_lock_init(&pstapriv->auth_list_lock);
-	pstapriv->asoc_list_cnt = 0;
-	pstapriv->auth_list_cnt = 0;
-
-	pstapriv->auth_to = 3; /*  3*2 = 6 sec */
-	pstapriv->assoc_to = 3;
-	pstapriv->expire_to = 3; /*  3*2 = 6 sec */
-	pstapriv->max_num_sta = NUM_STA;
-	return _SUCCESS;
-}
-
-inline int rtw_stainfo_offset(struct sta_priv *stapriv, struct sta_info *sta)
-{
-	int offset = (((u8 *)sta) - stapriv->pstainfo_buf) / sizeof(struct sta_info);
-
-	return offset;
-}
-
-inline struct sta_info *rtw_get_stainfo_by_offset(struct sta_priv *stapriv, int offset)
-{
-	return (struct sta_info *)(stapriv->pstainfo_buf + offset * sizeof(struct sta_info));
-}
-
-/*  this function is used to free the memory of lock || sema for all stainfos */
-void kfree_all_stainfo(struct sta_priv *pstapriv);
-void kfree_all_stainfo(struct sta_priv *pstapriv)
-{
-	struct list_head	*plist, *phead;
-
-	spin_lock_bh(&pstapriv->sta_hash_lock);
-
-	phead = get_list_head(&pstapriv->free_sta_queue);
-	plist = get_next(phead);
-
-	while (phead != plist)
-		plist = get_next(plist);
-
-	spin_unlock_bh(&pstapriv->sta_hash_lock);
-}
-
-void kfree_sta_priv_lock(struct	sta_priv *pstapriv);
-void kfree_sta_priv_lock(struct	sta_priv *pstapriv)
-{
-	 kfree_all_stainfo(pstapriv); /* be done before free sta_hash_lock */
-}
-
-u32 _rtw_free_sta_priv(struct	sta_priv *pstapriv)
-{
-	struct list_head	*phead, *plist;
-	struct sta_info *psta = NULL;
-	struct recv_reorder_ctrl *preorder_ctrl;
-	int	index;
-
-	if (pstapriv) {
-		/*delete all reordering_ctrl_timer		*/
-		spin_lock_bh(&pstapriv->sta_hash_lock);
-		for (index = 0; index < NUM_STA; index++) {
-			phead = &pstapriv->sta_hash[index];
-			list_for_each(plist, phead) {
-				int i;
-
-				psta = list_entry(plist, struct sta_info,
-						  hash_list);
-
-				for (i = 0; i < 16 ; i++) {
-					preorder_ctrl = &psta->recvreorder_ctrl[i];
-					timer_delete_sync(&preorder_ctrl->reordering_ctrl_timer);
-				}
-			}
-		}
-		spin_unlock_bh(&pstapriv->sta_hash_lock);
-		/*===============================*/
-
-		kfree_sta_priv_lock(pstapriv);
-
-		vfree(pstapriv->pallocated_stainfo_buf);
-	}
-	return _SUCCESS;
-}
-
-/* struct	sta_info *rtw_alloc_stainfo(_queue *pfree_sta_queue, unsigned char *hwaddr) */
-struct	sta_info *rtw_alloc_stainfo(struct	sta_priv *pstapriv, u8 *hwaddr)
-{
-	s32	index;
-	struct list_head	*phash_list;
-	struct sta_info *psta;
-	struct __queue *pfree_sta_queue;
-	struct recv_reorder_ctrl *preorder_ctrl;
-	int i = 0;
-	u16  wRxSeqInitialValue = 0xffff;
-
-	pfree_sta_queue = &pstapriv->free_sta_queue;
-
-	/* spin_lock_bh(&(pfree_sta_queue->lock)); */
-	spin_lock_bh(&pstapriv->sta_hash_lock);
-	if (list_empty(&pfree_sta_queue->queue)) {
-		/* spin_unlock_bh(&(pfree_sta_queue->lock)); */
-		spin_unlock_bh(&pstapriv->sta_hash_lock);
-		return NULL;
-	}
-	psta = container_of(get_next(&pfree_sta_queue->queue), struct sta_info, list);
-
-	list_del_init(&psta->list);
-
-	/* spin_unlock_bh(&(pfree_sta_queue->lock)); */
-
-	_rtw_init_stainfo(psta);
-
-	psta->padapter = pstapriv->padapter;
-
-	memcpy(psta->hwaddr, hwaddr, ETH_ALEN);
-
-	index = wifi_mac_hash(hwaddr);
-
-	if (index >= NUM_STA) {
-		spin_unlock_bh(&pstapriv->sta_hash_lock);
-		psta = NULL;
-		goto exit;
-	}
-	phash_list = &pstapriv->sta_hash[index];
-
-	/* spin_lock_bh(&(pstapriv->sta_hash_lock)); */
-
-	list_add_tail(&psta->hash_list, phash_list);
-
-	pstapriv->asoc_sta_count++;
-
-	/* spin_unlock_bh(&(pstapriv->sta_hash_lock)); */
-
-	/*  Commented by Albert 2009/08/13 */
-	/*  For the SMC router, the sequence number of first packet of WPS handshake will be 0. */
-	/*  In this case, this packet will be dropped by recv_decache function if we use the 0x00 as the default value for tid_rxseq variable. */
-	/*  So, we initialize the tid_rxseq variable as the 0xffff. */
-
-	for (i = 0; i < 16; i++)
-		memcpy(&psta->sta_recvpriv.rxcache.tid_rxseq[i], &wRxSeqInitialValue, 2);
-
-	timer_setup(&psta->addba_retry_timer, addba_timer_hdl, 0);
-
-	/* for A-MPDU Rx reordering buffer control */
-	for (i = 0; i < 16 ; i++) {
-		preorder_ctrl = &psta->recvreorder_ctrl[i];
-
-		preorder_ctrl->padapter = pstapriv->padapter;
-
-		preorder_ctrl->enable = false;
-
-		preorder_ctrl->indicate_seq = 0xffff;
-		preorder_ctrl->wend_b = 0xffff;
-		/* preorder_ctrl->wsize_b = (NR_RECVBUFF-2); */
-		preorder_ctrl->wsize_b = 64;/* 64; */
-
-		INIT_LIST_HEAD(&preorder_ctrl->pending_recvframe_queue.queue);
-		spin_lock_init(&preorder_ctrl->pending_recvframe_queue.lock);
-
-		/* init recv timer */
-		timer_setup(&preorder_ctrl->reordering_ctrl_timer,
-			    rtw_reordering_ctrl_timeout_handler, 0);
-	}
-
-	/* init for DM */
-	psta->rssi_stat.UndecoratedSmoothedPWDB = (-1);
-	psta->rssi_stat.UndecoratedSmoothedCCK = (-1);
-
-	/* init for the sequence number of received management frame */
-	psta->rx_mgmt_frame_seq_num = 0xffff;
-	spin_unlock_bh(&pstapriv->sta_hash_lock);
-	/* alloc mac id for non-bc/mc station, */
-	rtw_alloc_macid(pstapriv->padapter, psta);
-
-exit:
-
-	return psta;
-}
-
-u32 rtw_free_stainfo(struct adapter *padapter, struct sta_info *psta)
-{
-	int i;
-	struct __queue *pfree_sta_queue;
-	struct recv_reorder_ctrl *preorder_ctrl;
-	struct	sta_xmit_priv *pstaxmitpriv;
-	struct	xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct	sta_priv *pstapriv = &padapter->stapriv;
-	struct hw_xmit *phwxmit;
-
-	if (!psta)
-		goto exit;
-
-	spin_lock_bh(&psta->lock);
-	psta->state &= ~_FW_LINKED;
-	spin_unlock_bh(&psta->lock);
-
-	pfree_sta_queue = &pstapriv->free_sta_queue;
-
-	pstaxmitpriv = &psta->sta_xmitpriv;
-
-	/* list_del_init(&psta->sleep_list); */
-
-	/* list_del_init(&psta->wakeup_list); */
-
-	spin_lock_bh(&pxmitpriv->lock);
-
-	rtw_free_xmitframe_queue(pxmitpriv, &psta->sleep_q);
-	psta->sleepq_len = 0;
-
-	/* vo */
-	/* spin_lock_bh(&(pxmitpriv->vo_pending.lock)); */
-	rtw_free_xmitframe_queue(pxmitpriv, &pstaxmitpriv->vo_q.sta_pending);
-	list_del_init(&pstaxmitpriv->vo_q.tx_pending);
-	phwxmit = pxmitpriv->hwxmits;
-	phwxmit->accnt -= pstaxmitpriv->vo_q.qcnt;
-	pstaxmitpriv->vo_q.qcnt = 0;
-	/* spin_unlock_bh(&(pxmitpriv->vo_pending.lock)); */
-
-	/* vi */
-	/* spin_lock_bh(&(pxmitpriv->vi_pending.lock)); */
-	rtw_free_xmitframe_queue(pxmitpriv, &pstaxmitpriv->vi_q.sta_pending);
-	list_del_init(&pstaxmitpriv->vi_q.tx_pending);
-	phwxmit = pxmitpriv->hwxmits + 1;
-	phwxmit->accnt -= pstaxmitpriv->vi_q.qcnt;
-	pstaxmitpriv->vi_q.qcnt = 0;
-	/* spin_unlock_bh(&(pxmitpriv->vi_pending.lock)); */
-
-	/* be */
-	/* spin_lock_bh(&(pxmitpriv->be_pending.lock)); */
-	rtw_free_xmitframe_queue(pxmitpriv, &pstaxmitpriv->be_q.sta_pending);
-	list_del_init(&pstaxmitpriv->be_q.tx_pending);
-	phwxmit = pxmitpriv->hwxmits + 2;
-	phwxmit->accnt -= pstaxmitpriv->be_q.qcnt;
-	pstaxmitpriv->be_q.qcnt = 0;
-	/* spin_unlock_bh(&(pxmitpriv->be_pending.lock)); */
-
-	/* bk */
-	/* spin_lock_bh(&(pxmitpriv->bk_pending.lock)); */
-	rtw_free_xmitframe_queue(pxmitpriv, &pstaxmitpriv->bk_q.sta_pending);
-	list_del_init(&pstaxmitpriv->bk_q.tx_pending);
-	phwxmit = pxmitpriv->hwxmits + 3;
-	phwxmit->accnt -= pstaxmitpriv->bk_q.qcnt;
-	pstaxmitpriv->bk_q.qcnt = 0;
-	/* spin_unlock_bh(&(pxmitpriv->bk_pending.lock)); */
-
-	spin_unlock_bh(&pxmitpriv->lock);
-
-	spin_lock_bh(&pstapriv->sta_hash_lock);
-	list_del_init(&psta->hash_list);
-	pstapriv->asoc_sta_count--;
-	spin_unlock_bh(&pstapriv->sta_hash_lock);
-
-	/*  re-init sta_info; 20061114 will be init in alloc_stainfo */
-	/* _rtw_init_sta_xmit_priv(&psta->sta_xmitpriv); */
-	/* _rtw_init_sta_recv_priv(&psta->sta_recvpriv); */
-
-	timer_delete_sync(&psta->addba_retry_timer);
-
-	/* for A-MPDU Rx reordering buffer control, cancel reordering_ctrl_timer */
-	for (i = 0; i < 16 ; i++) {
-		struct list_head	*phead, *plist;
-		union recv_frame *prframe;
-		struct __queue *ppending_recvframe_queue;
-		struct __queue *pfree_recv_queue = &padapter->recvpriv.free_recv_queue;
-
-		preorder_ctrl = &psta->recvreorder_ctrl[i];
-
-		timer_delete_sync(&preorder_ctrl->reordering_ctrl_timer);
-
-		ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue;
-
-		spin_lock_bh(&ppending_recvframe_queue->lock);
-
-		phead =		get_list_head(ppending_recvframe_queue);
-		plist = get_next(phead);
-
-		while (!list_empty(phead)) {
-			prframe = (union recv_frame *)plist;
-
-			plist = get_next(plist);
-
-			list_del_init(&prframe->u.hdr.list);
-
-			rtw_free_recvframe(prframe, pfree_recv_queue);
-		}
-
-		spin_unlock_bh(&ppending_recvframe_queue->lock);
-	}
-
-	if (!(psta->state & WIFI_AP_STATE))
-		rtw_hal_set_odm_var(padapter, HAL_ODM_STA_INFO, psta, false);
-
-	/* release mac id for non-bc/mc station, */
-	rtw_release_macid(pstapriv->padapter, psta);
-	spin_lock_bh(&pstapriv->auth_list_lock);
-	if (!list_empty(&psta->auth_list)) {
-		list_del_init(&psta->auth_list);
-		pstapriv->auth_list_cnt--;
-	}
-	spin_unlock_bh(&pstapriv->auth_list_lock);
-
-	psta->expire_to = 0;
-	psta->sleepq_ac_len = 0;
-	psta->qos_info = 0;
-
-	psta->max_sp_len = 0;
-	psta->uapsd_bk = 0;
-	psta->uapsd_be = 0;
-	psta->uapsd_vi = 0;
-	psta->uapsd_vo = 0;
-
-	psta->has_legacy_ac = 0;
-
-	pstapriv->sta_dz_bitmap &= ~BIT(psta->aid);
-	pstapriv->tim_bitmap &= ~BIT(psta->aid);
-
-	if ((psta->aid > 0) && (pstapriv->sta_aid[psta->aid - 1] == psta)) {
-		pstapriv->sta_aid[psta->aid - 1] = NULL;
-		psta->aid = 0;
-	}
-
-	psta->under_exist_checking = 0;
-
-	/* spin_lock_bh(&(pfree_sta_queue->lock)); */
-	list_add_tail(&psta->list, get_list_head(pfree_sta_queue));
-	/* spin_unlock_bh(&(pfree_sta_queue->lock)); */
-
-exit:
-	return _SUCCESS;
-}
-
-/*  free all stainfo which in sta_hash[all] */
-void rtw_free_all_stainfo(struct adapter *padapter)
-{
-	struct list_head *plist, *phead, *tmp;
-	s32	index;
-	struct sta_info *psta = NULL;
-	struct	sta_priv *pstapriv = &padapter->stapriv;
-	struct sta_info *pbcmc_stainfo = rtw_get_bcmc_stainfo(padapter);
-	LIST_HEAD(stainfo_free_list);
-
-	if (pstapriv->asoc_sta_count == 1)
-		return;
-
-	spin_lock_bh(&pstapriv->sta_hash_lock);
-
-	for (index = 0; index < NUM_STA; index++) {
-		phead = &pstapriv->sta_hash[index];
-		list_for_each_safe(plist, tmp, phead) {
-			psta = list_entry(plist, struct sta_info, hash_list);
-
-			if (pbcmc_stainfo != psta)
-				list_move(&psta->hash_list, &stainfo_free_list);
-		}
-	}
-
-	spin_unlock_bh(&pstapriv->sta_hash_lock);
-
-	list_for_each_safe(plist, tmp, &stainfo_free_list) {
-		psta = list_entry(plist, struct sta_info, hash_list);
-		rtw_free_stainfo(padapter, psta);
-	}
-}
-
-/* any station allocated can be searched by hash list */
-struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, u8 *hwaddr)
-{
-	struct list_head *plist, *phead;
-	struct sta_info *psta = NULL;
-	u32 index;
-	u8 *addr;
-	u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-
-	if (!hwaddr)
-		return NULL;
-
-	if (is_multicast_ether_addr(hwaddr))
-		addr = bc_addr;
-	else
-		addr = hwaddr;
-
-	index = wifi_mac_hash(addr);
-
-	spin_lock_bh(&pstapriv->sta_hash_lock);
-
-	phead = &pstapriv->sta_hash[index];
-	list_for_each(plist, phead) {
-		psta = list_entry(plist, struct sta_info, hash_list);
-
-		if ((!memcmp(psta->hwaddr, addr, ETH_ALEN)))
-		 /*  if found the matched address */
-			break;
-
-		psta = NULL;
-	}
-
-	spin_unlock_bh(&pstapriv->sta_hash_lock);
-	return psta;
-}
-
-u32 rtw_init_bcmc_stainfo(struct adapter *padapter)
-{
-	struct sta_info *psta;
-	u8 bcast_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-
-	struct	sta_priv *pstapriv = &padapter->stapriv;
-	/* struct __queue	*pstapending = &padapter->xmitpriv.bm_pending; */
-
-	psta = rtw_alloc_stainfo(pstapriv, bcast_addr);
-
-	if (!psta)
-		return _FAIL;
-
-	/*  default broadcast & multicast use macid 1 */
-	psta->mac_id = 1;
-
-	return _SUCCESS;
-}
-
-struct sta_info *rtw_get_bcmc_stainfo(struct adapter *padapter)
-{
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-
-	return rtw_get_stainfo(pstapriv, bc_addr);
-}
-
-u8 rtw_access_ctrl(struct adapter *padapter, u8 *mac_addr)
-{
-	bool res = true;
-	struct list_head	*plist, *phead;
-	struct rtw_wlan_acl_node *paclnode;
-	bool match = false;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;
-	struct __queue	*pacl_node_q = &pacl_list->acl_node_q;
-
-	spin_lock_bh(&pacl_node_q->lock);
-	phead = get_list_head(pacl_node_q);
-	list_for_each(plist, phead) {
-		paclnode = list_entry(plist, struct rtw_wlan_acl_node, list);
-
-		if (!memcmp(paclnode->addr, mac_addr, ETH_ALEN))
-			if (paclnode->valid) {
-				match = true;
-				break;
-			}
-	}
-	spin_unlock_bh(&pacl_node_q->lock);
-
-	if (pacl_list->mode == 1) /* accept unless in deny list */
-		res = !match;
-
-	else if (pacl_list->mode == 2)/* deny unless in accept list */
-		res = match;
-	else
-		res = true;
-
-	return res;
-}
diff --git a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c b/drivers/staging/rtl8723bs/core/rtw_wlan_util.c
deleted file mode 100644
index 8c1f4670679b..000000000000
--- a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c
+++ /dev/null
@@ -1,1759 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <drv_types.h>
-#include <hal_com_h2c.h>
-
-static unsigned char ARTHEROS_OUI1[] = {0x00, 0x03, 0x7f};
-static unsigned char ARTHEROS_OUI2[] = {0x00, 0x13, 0x74};
-
-static unsigned char BROADCOM_OUI1[] = {0x00, 0x10, 0x18};
-static unsigned char BROADCOM_OUI2[] = {0x00, 0x0a, 0xf7};
-static unsigned char BROADCOM_OUI3[] = {0x00, 0x05, 0xb5};
-
-static unsigned char CISCO_OUI[] = {0x00, 0x40, 0x96};
-static unsigned char MARVELL_OUI[] = {0x00, 0x50, 0x43};
-static unsigned char RALINK_OUI[] = {0x00, 0x0c, 0x43};
-static unsigned char REALTEK_OUI[] = {0x00, 0xe0, 0x4c};
-static unsigned char AIRGOCAP_OUI[] = {0x00, 0x0a, 0xf5};
-static unsigned char RSN_TKIP_CIPHER[4] = {0x00, 0x0f, 0xac, 0x02};
-static unsigned char WPA_TKIP_CIPHER[4] = {0x00, 0x50, 0xf2, 0x02};
-
-/* define WAIT_FOR_BCN_TO_MIN	(3000) */
-#define WAIT_FOR_BCN_TO_MIN	(6000)
-#define WAIT_FOR_BCN_TO_MAX	(20000)
-
-#define DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIOD_IN_MS 1000
-#define DISCONNECT_BY_CHK_BCN_FAIL_THRESHOLD 3
-
-static u8 rtw_basic_rate_cck[4] = {
-	IEEE80211_CCK_RATE_1MB | IEEE80211_BASIC_RATE_MASK,
-	IEEE80211_CCK_RATE_2MB | IEEE80211_BASIC_RATE_MASK,
-	IEEE80211_CCK_RATE_5MB | IEEE80211_BASIC_RATE_MASK,
-	IEEE80211_CCK_RATE_11MB | IEEE80211_BASIC_RATE_MASK
-};
-
-static u8 rtw_basic_rate_ofdm[3] = {
-	IEEE80211_OFDM_RATE_6MB | IEEE80211_BASIC_RATE_MASK,
-	IEEE80211_OFDM_RATE_12MB | IEEE80211_BASIC_RATE_MASK,
-	IEEE80211_OFDM_RATE_24MB | IEEE80211_BASIC_RATE_MASK
-};
-
-u8 networktype_to_raid_ex(struct adapter *adapter, struct sta_info *psta)
-{
-	u8 raid;
-
-	switch (psta->wireless_mode) {
-	case WIRELESS_11B:
-		raid = RATEID_IDX_B;
-		break;
-	case WIRELESS_11G:
-		raid = RATEID_IDX_G;
-		break;
-	case WIRELESS_11BG:
-		raid = RATEID_IDX_BG;
-		break;
-	case WIRELESS_11_24N:
-	case WIRELESS_11G_24N:
-		raid = RATEID_IDX_GN_N1SS;
-		break;
-	case WIRELESS_11B_24N:
-	case WIRELESS_11BG_24N:
-		if (psta->bw_mode == CHANNEL_WIDTH_20)
-			raid = RATEID_IDX_BGN_20M_1SS_BN;
-		else
-			raid = RATEID_IDX_BGN_40M_1SS;
-		break;
-	default:
-		raid = RATEID_IDX_BGN_40M_2SS;
-		break;
-	}
-	return raid;
-}
-
-unsigned char ratetbl_val_2wifirate(unsigned char rate);
-unsigned char ratetbl_val_2wifirate(unsigned char rate)
-{
-	switch (rate & 0x7f) {
-	case 0:
-		return IEEE80211_CCK_RATE_1MB;
-	case 1:
-		return IEEE80211_CCK_RATE_2MB;
-	case 2:
-		return IEEE80211_CCK_RATE_5MB;
-	case 3:
-		return IEEE80211_CCK_RATE_11MB;
-	case 4:
-		return IEEE80211_OFDM_RATE_6MB;
-	case 5:
-		return IEEE80211_OFDM_RATE_9MB;
-	case 6:
-		return IEEE80211_OFDM_RATE_12MB;
-	case 7:
-		return IEEE80211_OFDM_RATE_18MB;
-	case 8:
-		return IEEE80211_OFDM_RATE_24MB;
-	case 9:
-		return IEEE80211_OFDM_RATE_36MB;
-	case 10:
-		return IEEE80211_OFDM_RATE_48MB;
-	case 11:
-		return IEEE80211_OFDM_RATE_54MB;
-	default:
-		return 0;
-	}
-}
-
-int is_basicrate(struct adapter *padapter, unsigned char rate);
-int is_basicrate(struct adapter *padapter, unsigned char rate)
-{
-	int i;
-	unsigned char val;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-	for (i = 0; i < NumRates; i++) {
-		val = pmlmeext->basicrate[i];
-
-		if ((val != 0xff) && (val != 0xfe))
-			if (rate == ratetbl_val_2wifirate(val))
-				return true;
-	}
-
-	return false;
-}
-
-unsigned int ratetbl2rateset(struct adapter *padapter, unsigned char *rateset);
-unsigned int ratetbl2rateset(struct adapter *padapter, unsigned char *rateset)
-{
-	int i;
-	unsigned char rate;
-	unsigned int	len = 0;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
-	for (i = 0; i < NumRates; i++) {
-		rate = pmlmeext->datarate[i];
-
-		switch (rate) {
-		case 0xff:
-			return len;
-
-		case 0xfe:
-			continue;
-
-		default:
-			rate = ratetbl_val_2wifirate(rate);
-
-			if (is_basicrate(padapter, rate))
-				rate |= IEEE80211_BASIC_RATE_MASK;
-
-			rateset[len] = rate;
-			len++;
-			break;
-		}
-	}
-	return len;
-}
-
-void get_rate_set(struct adapter *padapter, unsigned char *pbssrate, int *bssrate_len)
-{
-	unsigned char supportedrates[NumRates];
-
-	memset(supportedrates, 0, NumRates);
-	*bssrate_len = ratetbl2rateset(padapter, supportedrates);
-	memcpy(pbssrate, supportedrates, *bssrate_len);
-}
-
-void set_mcs_rate_by_mask(u8 *mcs_set, u32 mask)
-{
-	u8 mcs_rate_1r = (u8)(mask & 0xff);
-	u8 mcs_rate_2r = (u8)((mask >> 8) & 0xff);
-	u8 mcs_rate_3r = (u8)((mask >> 16) & 0xff);
-	u8 mcs_rate_4r = (u8)((mask >> 24) & 0xff);
-
-	mcs_set[0] &= mcs_rate_1r;
-	mcs_set[1] &= mcs_rate_2r;
-	mcs_set[2] &= mcs_rate_3r;
-	mcs_set[3] &= mcs_rate_4r;
-}
-
-void update_basic_rate_table(struct adapter *Adapter, u8 *mBratesOS)
-{
-	u8 i;
-	u8 rate;
-
-	/*  1M, 2M, 5.5M, 11M, 6M, 12M, 24M are mandatory. */
-	for (i = 0; i < NDIS_802_11_LENGTH_RATES_EX; i++) {
-		rate = mBratesOS[i] & 0x7f;
-		switch (rate) {
-		case IEEE80211_CCK_RATE_1MB:
-		case IEEE80211_CCK_RATE_2MB:
-		case IEEE80211_CCK_RATE_5MB:
-		case IEEE80211_CCK_RATE_11MB:
-		case IEEE80211_OFDM_RATE_6MB:
-		case IEEE80211_OFDM_RATE_12MB:
-		case IEEE80211_OFDM_RATE_24MB:
-			mBratesOS[i] |= IEEE80211_BASIC_RATE_MASK;
-			break;
-		}
-	}
-}
-
-void update_basic_rate_table_soft_ap(u8 *bssrateset, u32 bssratelen)
-{
-	u8 i;
-	u8 rate;
-
-	for (i = 0; i < bssratelen; i++) {
-		rate = bssrateset[i] & 0x7f;
-		switch (rate) {
-		case IEEE80211_CCK_RATE_1MB:
-		case IEEE80211_CCK_RATE_2MB:
-		case IEEE80211_CCK_RATE_5MB:
-		case IEEE80211_CCK_RATE_11MB:
-			bssrateset[i] |= IEEE80211_BASIC_RATE_MASK;
-			break;
-		}
-	}
-}
-
-void save_dm_func_flag(struct adapter *padapter)
-{
-	u8 bSaveFlag = true;
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_DM_FUNC_OP, (u8 *)(&bSaveFlag));
-}
-
-void restore_dm_func_flag(struct adapter *padapter)
-{
-	u8 bSaveFlag = false;
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_DM_FUNC_OP, (u8 *)(&bSaveFlag));
-}
-
-void switch_dm_func(struct adapter *padapter, u32 mode, u8 enable)
-{
-	if (enable)
-		rtw_hal_set_hwreg(padapter, HW_VAR_DM_FUNC_SET, (u8 *)(&mode));
-	else
-		rtw_hal_set_hwreg(padapter, HW_VAR_DM_FUNC_CLR, (u8 *)(&mode));
-}
-
-void set_msr(struct adapter *padapter, u8 type)
-{
-	rtw_hal_set_hwreg(padapter, HW_VAR_MEDIA_STATUS, (u8 *)(&type));
-}
-
-inline u8 rtw_get_oper_ch(struct adapter *adapter)
-{
-	return adapter_to_dvobj(adapter)->oper_channel;
-}
-
-inline void rtw_set_oper_ch(struct adapter *adapter, u8 ch)
-{
-	struct dvobj_priv *dvobj = adapter_to_dvobj(adapter);
-
-	if (dvobj->oper_channel != ch)
-		dvobj->on_oper_ch_time = jiffies;
-
-	dvobj->oper_channel = ch;
-}
-
-inline void rtw_set_oper_bw(struct adapter *adapter, u8 bw)
-{
-	adapter_to_dvobj(adapter)->oper_bwmode = bw;
-}
-
-inline void rtw_set_oper_choffset(struct adapter *adapter, u8 offset)
-{
-	adapter_to_dvobj(adapter)->oper_ch_offset = offset;
-}
-
-u8 rtw_get_center_ch(u8 channel, u8 chnl_bw, u8 chnl_offset)
-{
-	u8 center_ch = channel;
-
-	if (chnl_bw == CHANNEL_WIDTH_40) {
-		if (chnl_offset == HAL_PRIME_CHNL_OFFSET_LOWER)
-			center_ch = channel + 2;
-		else
-			center_ch = channel - 2;
-	}
-
-	return center_ch;
-}
-
-inline unsigned long rtw_get_on_cur_ch_time(struct adapter *adapter)
-{
-	if (adapter->mlmeextpriv.cur_channel == adapter_to_dvobj(adapter)->oper_channel)
-		return adapter_to_dvobj(adapter)->on_oper_ch_time;
-	else
-		return 0;
-}
-
-void r8723bs_select_channel(struct adapter *padapter, unsigned char channel)
-{
-	if (mutex_lock_interruptible(&(adapter_to_dvobj(padapter)->setch_mutex)))
-		return;
-
-	/* saved channel info */
-	rtw_set_oper_ch(padapter, channel);
-
-	rtw_hal_set_chan(padapter, channel);
-
-	mutex_unlock(&(adapter_to_dvobj(padapter)->setch_mutex));
-}
-
-void set_channel_bwmode(struct adapter *padapter, unsigned char channel, unsigned char channel_offset, unsigned short bwmode)
-{
-	u8 center_ch, chnl_offset80 = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
-
-	center_ch = rtw_get_center_ch(channel, bwmode, channel_offset);
-
-	/* set Channel */
-	if (mutex_lock_interruptible(&(adapter_to_dvobj(padapter)->setch_mutex)))
-		return;
-
-	/* saved channel/bw info */
-	rtw_set_oper_ch(padapter, channel);
-	rtw_set_oper_bw(padapter, bwmode);
-	rtw_set_oper_choffset(padapter, channel_offset);
-
-	rtw_hal_set_chnl_bw(padapter, center_ch, bwmode, channel_offset, chnl_offset80); /*  set center channel */
-
-	mutex_unlock(&(adapter_to_dvobj(padapter)->setch_mutex));
-}
-
-inline u8 *get_my_bssid(struct wlan_bssid_ex *pnetwork)
-{
-	return pnetwork->mac_address;
-}
-
-u16 get_beacon_interval(struct wlan_bssid_ex *bss)
-{
-	__le16 val;
-
-	memcpy((unsigned char *)&val, rtw_get_beacon_interval_from_ie(bss->ies), 2);
-
-	return le16_to_cpu(val);
-}
-
-int is_client_associated_to_ap(struct adapter *padapter)
-{
-	struct mlme_ext_priv *pmlmeext;
-	struct mlme_ext_info *pmlmeinfo;
-
-	if (!padapter)
-		return _FAIL;
-
-	pmlmeext = &padapter->mlmeextpriv;
-	pmlmeinfo = &pmlmeext->mlmext_info;
-
-	if ((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && ((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE))
-		return true;
-	else
-		return _FAIL;
-}
-
-int is_client_associated_to_ibss(struct adapter *padapter)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	if ((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE))
-		return true;
-	else
-		return _FAIL;
-}
-
-int is_IBSS_empty(struct adapter *padapter)
-{
-	unsigned int i;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	for (i = IBSS_START_MAC_ID; i < NUM_STA; i++) {
-		if (pmlmeinfo->FW_sta_info[i].status == 1)
-			return _FAIL;
-	}
-
-	return true;
-}
-
-unsigned int decide_wait_for_beacon_timeout(unsigned int bcn_interval)
-{
-	if ((bcn_interval << 2) < WAIT_FOR_BCN_TO_MIN)
-		return WAIT_FOR_BCN_TO_MIN;
-	else if ((bcn_interval << 2) > WAIT_FOR_BCN_TO_MAX)
-		return WAIT_FOR_BCN_TO_MAX;
-	else
-		return bcn_interval << 2;
-}
-
-void invalidate_cam_all(struct adapter *padapter)
-{
-	struct dvobj_priv *dvobj = adapter_to_dvobj(padapter);
-	struct cam_ctl_t *cam_ctl = &dvobj->cam_ctl;
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_CAM_INVALID_ALL, NULL);
-
-	spin_lock_bh(&cam_ctl->lock);
-	cam_ctl->bitmap = 0;
-	memset(dvobj->cam_cache, 0, sizeof(struct cam_entry_cache) * TOTAL_CAM_ENTRY);
-	spin_unlock_bh(&cam_ctl->lock);
-}
-
-void _write_cam(struct adapter *padapter, u8 entry, u16 ctrl, u8 *mac, u8 *key)
-{
-	unsigned int i, val, addr;
-	int j;
-	u32 cam_val[2];
-
-	addr = entry << 3;
-
-	for (j = 5; j >= 0; j--) {
-		switch (j) {
-		case 0:
-			val = (ctrl | (mac[0] << 16) | (mac[1] << 24));
-			break;
-		case 1:
-			val = (mac[2] | (mac[3] << 8) | (mac[4] << 16) | (mac[5] << 24));
-			break;
-		default:
-			i = (j - 2) << 2;
-			val = (key[i] | (key[i + 1] << 8) | (key[i + 2] << 16) | (key[i + 3] << 24));
-			break;
-		}
-
-		cam_val[0] = val;
-		cam_val[1] = addr + (unsigned int)j;
-
-		rtw_hal_set_hwreg(padapter, HW_VAR_CAM_WRITE, (u8 *)cam_val);
-	}
-}
-
-void _clear_cam_entry(struct adapter *padapter, u8 entry)
-{
-	unsigned char null_sta[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-	unsigned char null_key[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-	_write_cam(padapter, entry, 0, null_sta, null_key);
-}
-
-inline void write_cam(struct adapter *adapter, u8 id, u16 ctrl, u8 *mac, u8 *key)
-{
-	_write_cam(adapter, id, ctrl, mac, key);
-	write_cam_cache(adapter, id, ctrl, mac, key);
-}
-
-inline void clear_cam_entry(struct adapter *adapter, u8 id)
-{
-	_clear_cam_entry(adapter, id);
-	clear_cam_cache(adapter, id);
-}
-
-void write_cam_cache(struct adapter *adapter, u8 id, u16 ctrl, u8 *mac, u8 *key)
-{
-	struct dvobj_priv *dvobj = adapter_to_dvobj(adapter);
-	struct cam_ctl_t *cam_ctl = &dvobj->cam_ctl;
-
-	spin_lock_bh(&cam_ctl->lock);
-
-	dvobj->cam_cache[id].ctrl = ctrl;
-	memcpy(dvobj->cam_cache[id].mac, mac, ETH_ALEN);
-	memcpy(dvobj->cam_cache[id].key, key, 16);
-
-	spin_unlock_bh(&cam_ctl->lock);
-}
-
-void clear_cam_cache(struct adapter *adapter, u8 id)
-{
-	struct dvobj_priv *dvobj = adapter_to_dvobj(adapter);
-	struct cam_ctl_t *cam_ctl = &dvobj->cam_ctl;
-
-	spin_lock_bh(&cam_ctl->lock);
-
-	memset(&dvobj->cam_cache[id], 0, sizeof(struct cam_entry_cache));
-
-	spin_unlock_bh(&cam_ctl->lock);
-}
-
-static bool _rtw_camid_is_gk(struct adapter *adapter, u8 cam_id)
-{
-	struct dvobj_priv *dvobj = adapter_to_dvobj(adapter);
-	struct cam_ctl_t *cam_ctl = &dvobj->cam_ctl;
-	bool ret = false;
-
-	if (cam_id >= TOTAL_CAM_ENTRY)
-		goto exit;
-
-	if (!(cam_ctl->bitmap & BIT(cam_id)))
-		goto exit;
-
-	ret = (dvobj->cam_cache[cam_id].ctrl & BIT(6)) ? true : false;
-
-exit:
-	return ret;
-}
-
-static s16 _rtw_camid_search(struct adapter *adapter, u8 *addr, s16 kid)
-{
-	struct dvobj_priv *dvobj = adapter_to_dvobj(adapter);
-	int i;
-	s16 cam_id = -1;
-
-	for (i = 0; i < TOTAL_CAM_ENTRY; i++) {
-		if (addr && memcmp(dvobj->cam_cache[i].mac, addr, ETH_ALEN))
-			continue;
-		if (kid >= 0 && kid != (dvobj->cam_cache[i].ctrl & 0x03))
-			continue;
-
-		cam_id = i;
-		break;
-	}
-
-	return cam_id;
-}
-
-s16 rtw_camid_search(struct adapter *adapter, u8 *addr, s16 kid)
-{
-	struct dvobj_priv *dvobj = adapter_to_dvobj(adapter);
-	struct cam_ctl_t *cam_ctl = &dvobj->cam_ctl;
-	s16 cam_id = -1;
-
-	spin_lock_bh(&cam_ctl->lock);
-	cam_id = _rtw_camid_search(adapter, addr, kid);
-	spin_unlock_bh(&cam_ctl->lock);
-
-	return cam_id;
-}
-
-s16 rtw_camid_alloc(struct adapter *adapter, struct sta_info *sta, u8 kid)
-{
-	struct dvobj_priv *dvobj = adapter_to_dvobj(adapter);
-	struct cam_ctl_t *cam_ctl = &dvobj->cam_ctl;
-	s16 cam_id = -1;
-	struct mlme_ext_info *mlmeinfo;
-
-	spin_lock_bh(&cam_ctl->lock);
-
-	mlmeinfo = &adapter->mlmeextpriv.mlmext_info;
-
-	if ((((mlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) || ((mlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE))
-		&& !sta) {
-		/* AP/Ad-hoc mode group key: static allocation to default key by key ID */
-		if (kid > 3) {
-			netdev_dbg(adapter->pnetdev,
-				   FUNC_ADPT_FMT " group key with invalid key id:%u\n",
-				   FUNC_ADPT_ARG(adapter), kid);
-			WARN_ON(1);
-			goto bitmap_handle;
-		}
-
-		cam_id = kid;
-	} else {
-		int i;
-		u8 *addr = sta ? sta->hwaddr : NULL;
-
-		if (!sta) {
-			if (!(mlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) {
-				/* bypass STA mode group key setting before connected(ex:WEP) because bssid is not ready */
-				goto bitmap_handle;
-			}
-
-			addr = get_bssid(&adapter->mlmepriv);
-		}
-
-		i = _rtw_camid_search(adapter, addr, kid);
-		if (i >= 0) {
-			/* Fix issue that pairwise and group key have same key id.
-			 * Pairwise key first, group key can overwrite group only(ex: rekey)
-			 */
-			if (sta || _rtw_camid_is_gk(adapter, i))
-				cam_id = i;
-			else
-				netdev_dbg(adapter->pnetdev,
-					   FUNC_ADPT_FMT " group key id:%u the same key id as pairwise key\n",
-					   FUNC_ADPT_ARG(adapter), kid);
-			goto bitmap_handle;
-		}
-
-		for (i = 4; i < TOTAL_CAM_ENTRY; i++)
-			if (!(cam_ctl->bitmap & BIT(i)))
-				break;
-
-		if (i == TOTAL_CAM_ENTRY) {
-			if (sta)
-				netdev_dbg(adapter->pnetdev,
-					   FUNC_ADPT_FMT " pairwise key with %pM id:%u no room\n",
-					   FUNC_ADPT_ARG(adapter),
-					   sta->hwaddr, kid);
-			else
-				netdev_dbg(adapter->pnetdev,
-					   FUNC_ADPT_FMT " group key id:%u no room\n",
-					   FUNC_ADPT_ARG(adapter), kid);
-			WARN_ON(1);
-			goto bitmap_handle;
-		}
-
-		cam_id = i;
-	}
-
-bitmap_handle:
-	if (cam_id >= 0 && cam_id < 32)
-		cam_ctl->bitmap |= BIT(cam_id);
-
-	spin_unlock_bh(&cam_ctl->lock);
-
-	return cam_id;
-}
-
-void rtw_camid_free(struct adapter *adapter, u8 cam_id)
-{
-	struct dvobj_priv *dvobj = adapter_to_dvobj(adapter);
-	struct cam_ctl_t *cam_ctl = &dvobj->cam_ctl;
-
-	spin_lock_bh(&cam_ctl->lock);
-
-	if (cam_id < TOTAL_CAM_ENTRY)
-		cam_ctl->bitmap &= ~(BIT(cam_id));
-
-	spin_unlock_bh(&cam_ctl->lock);
-}
-
-int allocate_fw_sta_entry(struct adapter *padapter)
-{
-	unsigned int mac_id;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	for (mac_id = IBSS_START_MAC_ID; mac_id < NUM_STA; mac_id++) {
-		if (pmlmeinfo->FW_sta_info[mac_id].status == 0) {
-			pmlmeinfo->FW_sta_info[mac_id].status = 1;
-			pmlmeinfo->FW_sta_info[mac_id].retry = 0;
-			break;
-		}
-	}
-
-	return mac_id;
-}
-
-void flush_all_cam_entry(struct adapter *padapter)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	invalidate_cam_all(padapter);
-	/* clear default key related key search setting */
-	rtw_hal_set_hwreg(padapter, HW_VAR_SEC_DK_CFG, (u8 *)false);
-
-	memset((u8 *)(pmlmeinfo->FW_sta_info), 0, sizeof(pmlmeinfo->FW_sta_info));
-}
-
-int WMM_param_handler(struct adapter *padapter, struct ndis_80211_var_ie *pIE)
-{
-	/* struct registry_priv *pregpriv = &padapter->registrypriv; */
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	if (pmlmepriv->qospriv.qos_option == 0) {
-		pmlmeinfo->WMM_enable = 0;
-		return false;
-	}
-
-	if (pIE->length != WLAN_WMM_LEN)
-		return false;
-
-	if (!memcmp(&pmlmeinfo->WMM_param, (pIE->data + 6), sizeof(struct WMM_para_element)))
-		return false;
-
-	memcpy(&pmlmeinfo->WMM_param, (pIE->data + 6), sizeof(struct WMM_para_element));
-
-	pmlmeinfo->WMM_enable = 1;
-	return true;
-}
-
-static void sort_wmm_ac_params(u32 *inx, u32 *edca)
-{
-	u32 i, j, change_inx = false;
-
-	/* entry index: 0->vo, 1->vi, 2->be, 3->bk. */
-	for (i = 0; i < 4; i++) {
-		for (j = i + 1; j < 4; j++) {
-			/* compare CW and AIFS */
-			if ((edca[j] & 0xFFFF) < (edca[i] & 0xFFFF)) {
-				change_inx = true;
-			} else if ((edca[j] & 0xFFFF) == (edca[i] & 0xFFFF)) {
-				/* compare TXOP */
-				if ((edca[j] >> 16) > (edca[i] >> 16))
-					change_inx = true;
-			}
-
-			if (change_inx) {
-				swap(edca[i], edca[j]);
-				swap(inx[i], inx[j]);
-
-				change_inx = false;
-			}
-		}
-	}
-}
-
-void WMMOnAssocRsp(struct adapter *padapter)
-{
-	u8 ACI, ACM, AIFS, ECWMin, ECWMax, aSifsTime;
-	u8 acm_mask;
-	u16 TXOP;
-	u32 acParm, i;
-	u32 edca[4], inx[4];
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct registry_priv *pregpriv = &padapter->registrypriv;
-
-	acm_mask = 0;
-
-	if (pmlmeext->cur_wireless_mode & WIRELESS_11_24N)
-		aSifsTime = 16;
-	else
-		aSifsTime = 10;
-
-	if (pmlmeinfo->WMM_enable == 0) {
-		padapter->mlmepriv.acm_mask = 0;
-
-		AIFS = aSifsTime + (2 * pmlmeinfo->slotTime);
-
-		if (pmlmeext->cur_wireless_mode & WIRELESS_11G) {
-			ECWMin = 4;
-			ECWMax = 10;
-		} else if (pmlmeext->cur_wireless_mode & WIRELESS_11B) {
-			ECWMin = 5;
-			ECWMax = 10;
-		} else {
-			ECWMin = 4;
-			ECWMax = 10;
-		}
-
-		TXOP = 0;
-		acParm = AIFS | (ECWMin << 8) | (ECWMax << 12) | (TXOP << 16);
-		rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BE, (u8 *)(&acParm));
-		rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BK, (u8 *)(&acParm));
-		rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VI, (u8 *)(&acParm));
-
-		ECWMin = 2;
-		ECWMax = 3;
-		TXOP = 0x2f;
-		acParm = AIFS | (ECWMin << 8) | (ECWMax << 12) | (TXOP << 16);
-		rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VO, (u8 *)(&acParm));
-	} else {
-		edca[0] = edca[1] = edca[2] = edca[3] = 0;
-
-		for (i = 0; i < 4; i++) {
-			ACI = (pmlmeinfo->WMM_param.ac_param[i].ACI_AIFSN >> 5) & 0x03;
-			ACM = (pmlmeinfo->WMM_param.ac_param[i].ACI_AIFSN >> 4) & 0x01;
-
-			/* AIFS = AIFSN * slot time + SIFS - r2t phy delay */
-			AIFS = (pmlmeinfo->WMM_param.ac_param[i].ACI_AIFSN & 0x0f) * pmlmeinfo->slotTime + aSifsTime;
-
-			ECWMin = (pmlmeinfo->WMM_param.ac_param[i].CW & 0x0f);
-			ECWMax = (pmlmeinfo->WMM_param.ac_param[i].CW & 0xf0) >> 4;
-			TXOP = le16_to_cpu(pmlmeinfo->WMM_param.ac_param[i].TXOP_limit);
-
-			acParm = AIFS | (ECWMin << 8) | (ECWMax << 12) | (TXOP << 16);
-
-			switch (ACI) {
-			case 0x0:
-				rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BE, (u8 *)(&acParm));
-				acm_mask |= (ACM ? BIT(1) : 0);
-				edca[XMIT_BE_QUEUE] = acParm;
-				break;
-
-			case 0x1:
-				rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BK, (u8 *)(&acParm));
-				/* acm_mask |= (ACM? BIT(0):0); */
-				edca[XMIT_BK_QUEUE] = acParm;
-				break;
-
-			case 0x2:
-				rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VI, (u8 *)(&acParm));
-				acm_mask |= (ACM ? BIT(2) : 0);
-				edca[XMIT_VI_QUEUE] = acParm;
-				break;
-
-			case 0x3:
-				rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VO, (u8 *)(&acParm));
-				acm_mask |= (ACM ? BIT(3) : 0);
-				edca[XMIT_VO_QUEUE] = acParm;
-				break;
-			}
-		}
-
-		if (padapter->registrypriv.acm_method == 1)
-			rtw_hal_set_hwreg(padapter, HW_VAR_ACM_CTRL, (u8 *)(&acm_mask));
-		else
-			padapter->mlmepriv.acm_mask = acm_mask;
-
-		inx[0] = 0; inx[1] = 1; inx[2] = 2; inx[3] = 3;
-
-		if (pregpriv->wifi_spec == 1)
-			sort_wmm_ac_params(inx, edca);
-
-		for (i = 0; i < 4; i++)
-			pxmitpriv->wmm_para_seq[i] = inx[i];
-	}
-}
-
-static void bwmode_update_check(struct adapter *padapter, struct ndis_80211_var_ie *pIE)
-{
-	unsigned char  new_bwmode;
-	unsigned char  new_ch_offset;
-	struct HT_info_element	 *pHT_info;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct registry_priv *pregistrypriv = &padapter->registrypriv;
-	struct ht_priv *phtpriv = &pmlmepriv->htpriv;
-	u8 cbw40_enable = 0;
-
-	if (!pIE)
-		return;
-
-	if (!phtpriv->ht_option)
-		return;
-
-	if (pIE->length > sizeof(struct HT_info_element))
-		return;
-
-	pHT_info = (struct HT_info_element *)pIE->data;
-
-	if ((pregistrypriv->bw_mode & 0x0f) > 0)
-		cbw40_enable = 1;
-
-	if ((pHT_info->infos[0] & BIT(2)) && cbw40_enable) {
-		new_bwmode = CHANNEL_WIDTH_40;
-
-		switch (pHT_info->infos[0] & 0x3) {
-		case 1:
-			new_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER;
-			break;
-
-		case 3:
-			new_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER;
-			break;
-
-		default:
-			new_bwmode = CHANNEL_WIDTH_20;
-			new_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
-			break;
-		}
-	} else {
-		new_bwmode = CHANNEL_WIDTH_20;
-		new_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
-	}
-
-	if ((new_bwmode != pmlmeext->cur_bwmode) || (new_ch_offset != pmlmeext->cur_ch_offset)) {
-		pmlmeinfo->bwmode_updated = true;
-
-		pmlmeext->cur_bwmode = new_bwmode;
-		pmlmeext->cur_ch_offset = new_ch_offset;
-
-		/* update HT info also */
-		HT_info_handler(padapter, pIE);
-	} else {
-		pmlmeinfo->bwmode_updated = false;
-	}
-
-	if (true == pmlmeinfo->bwmode_updated) {
-		struct sta_info *psta;
-		struct wlan_bssid_ex	*cur_network = &pmlmeinfo->network;
-		struct sta_priv *pstapriv = &padapter->stapriv;
-
-		/* set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); */
-
-		/* update ap's stainfo */
-		psta = rtw_get_stainfo(pstapriv, cur_network->mac_address);
-		if (psta) {
-			struct ht_priv *phtpriv_sta = &psta->htpriv;
-
-			if (phtpriv_sta->ht_option) {
-				/*  bwmode */
-				psta->bw_mode = pmlmeext->cur_bwmode;
-				phtpriv_sta->ch_offset = pmlmeext->cur_ch_offset;
-			} else {
-				psta->bw_mode = CHANNEL_WIDTH_20;
-				phtpriv_sta->ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
-			}
-
-			rtw_dm_ra_mask_wk_cmd(padapter, (u8 *)psta);
-		}
-	}
-}
-
-void HT_caps_handler(struct adapter *padapter, struct ndis_80211_var_ie *pIE)
-{
-	unsigned int	i;
-	u8 max_AMPDU_len, min_MPDU_spacing;
-	u8 cur_ldpc_cap = 0, cur_stbc_cap = 0;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct ht_priv *phtpriv = &pmlmepriv->htpriv;
-
-	if (!pIE)
-		return;
-
-	if (!phtpriv->ht_option)
-		return;
-
-	pmlmeinfo->HT_caps_enable = 1;
-
-	for (i = 0; i < umin(pIE->length,
-			     sizeof(pmlmeinfo->HT_caps.u.HT_cap)); i++) {
-		if (i != 2) {
-			/* Commented by Albert 2010/07/12 */
-			/* Got the endian issue here. */
-			pmlmeinfo->HT_caps.u.HT_cap[i] &= (pIE->data[i]);
-		} else {
-			/* modify from  fw by Thomas 2010/11/17 */
-			max_AMPDU_len = min(pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x3,
-					    pIE->data[i] & 0x3);
-
-			min_MPDU_spacing = max(pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c,
-					       pIE->data[i] & 0x1c);
-
-			pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para = max_AMPDU_len | min_MPDU_spacing;
-		}
-	}
-
-	/* update the MCS set */
-	for (i = 0; i < 16; i++)
-		pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= pmlmeext->default_supported_mcs_set[i];
-
-	/* update the MCS rates */
-	set_mcs_rate_by_mask(pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate, MCS_RATE_1R);
-
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		/*  Config STBC setting */
-		if (TEST_FLAG(phtpriv->stbc_cap, STBC_HT_ENABLE_TX) &&
-		    GET_HT_CAPABILITY_ELE_TX_STBC(pIE->data))
-			SET_FLAG(cur_stbc_cap, STBC_HT_ENABLE_TX);
-
-		phtpriv->stbc_cap = cur_stbc_cap;
-	} else {
-		/*  Config LDPC Coding Capability */
-		if (TEST_FLAG(phtpriv->ldpc_cap, LDPC_HT_ENABLE_TX) &&
-		    GET_HT_CAPABILITY_ELE_LDPC_CAP(pIE->data))
-			SET_FLAG(cur_ldpc_cap, (LDPC_HT_ENABLE_TX | LDPC_HT_CAP_TX));
-
-		phtpriv->ldpc_cap = cur_ldpc_cap;
-
-		/*  Config STBC setting */
-		if (TEST_FLAG(phtpriv->stbc_cap, STBC_HT_ENABLE_TX) &&
-		    GET_HT_CAPABILITY_ELE_RX_STBC(pIE->data))
-			SET_FLAG(cur_stbc_cap, (STBC_HT_ENABLE_TX | STBC_HT_CAP_TX));
-
-		phtpriv->stbc_cap = cur_stbc_cap;
-	}
-}
-
-void HT_info_handler(struct adapter *padapter, struct ndis_80211_var_ie *pIE)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct ht_priv *phtpriv = &pmlmepriv->htpriv;
-
-	if (!pIE)
-		return;
-
-	if (!phtpriv->ht_option)
-		return;
-
-	if (pIE->length > sizeof(struct HT_info_element))
-		return;
-
-	pmlmeinfo->HT_info_enable = 1;
-	memcpy(&pmlmeinfo->HT_info, pIE->data, pIE->length);
-}
-
-void HTOnAssocRsp(struct adapter *padapter)
-{
-	unsigned char max_AMPDU_len;
-	unsigned char min_MPDU_spacing;
-	/* struct registry_priv  *pregpriv = &padapter->registrypriv; */
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	if ((pmlmeinfo->HT_info_enable) && (pmlmeinfo->HT_caps_enable)) {
-		pmlmeinfo->HT_enable = 1;
-	} else {
-		pmlmeinfo->HT_enable = 0;
-		/* set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); */
-		return;
-	}
-
-	/* handle A-MPDU parameter field */
-	/*
-	 * AMPDU_para [1:0]:Max AMPDU Len => 0:8k , 1:16k, 2:32k, 3:64k
-	 * AMPDU_para [4:2]:Min MPDU Start Spacing
-	 */
-	max_AMPDU_len = pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x03;
-
-	min_MPDU_spacing = (pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c) >> 2;
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_AMPDU_MIN_SPACE, (u8 *)(&min_MPDU_spacing));
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_AMPDU_FACTOR, (u8 *)(&max_AMPDU_len));
-}
-
-void ERP_IE_handler(struct adapter *padapter, struct ndis_80211_var_ie *pIE)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	if (pIE->length > 1)
-		return;
-
-	pmlmeinfo->ERP_enable = 1;
-	memcpy(&pmlmeinfo->ERP_IE, pIE->data, pIE->length);
-}
-
-void VCS_update(struct adapter *padapter, struct sta_info *psta)
-{
-	struct registry_priv  *pregpriv = &padapter->registrypriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	switch (pregpriv->vrtl_carrier_sense) {/* 0:off 1:on 2:auto */
-	case 0: /* off */
-		psta->rtsen = 0;
-		psta->cts2self = 0;
-		break;
-
-	case 1: /* on */
-		if (pregpriv->vcs_type == 1) { /* 1:RTS/CTS 2:CTS to self */
-			psta->rtsen = 1;
-			psta->cts2self = 0;
-		} else {
-			psta->rtsen = 0;
-			psta->cts2self = 1;
-		}
-		break;
-
-	case 2: /* auto */
-	default:
-		if ((pmlmeinfo->ERP_enable) && (pmlmeinfo->ERP_IE & BIT(1))) {
-			if (pregpriv->vcs_type == 1) {
-				psta->rtsen = 1;
-				psta->cts2self = 0;
-			} else {
-				psta->rtsen = 0;
-				psta->cts2self = 1;
-			}
-		} else {
-			psta->rtsen = 0;
-			psta->cts2self = 0;
-		}
-		break;
-	}
-}
-
-void update_ldpc_stbc_cap(struct sta_info *psta)
-{
-	if (psta->htpriv.ht_option) {
-		if (TEST_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_ENABLE_TX))
-			psta->ldpc = 1;
-
-		if (TEST_FLAG(psta->htpriv.stbc_cap, STBC_HT_ENABLE_TX))
-			psta->stbc = 1;
-	} else {
-		psta->ldpc = 0;
-		psta->stbc = 0;
-	}
-}
-
-int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
-{
-	unsigned int len;
-	unsigned char *p;
-	unsigned short	val16, subtype;
-	struct wlan_network *cur_network = &Adapter->mlmepriv.cur_network;
-	/* u8 wpa_ie[255], rsn_ie[255]; */
-	u16 wpa_len = 0, rsn_len = 0;
-	u8 encryp_protocol = 0;
-	struct wlan_bssid_ex *bssid;
-	int group_cipher = 0, pairwise_cipher = 0, is_8021x = 0;
-	unsigned char *pbuf;
-	u32 wpa_ielen = 0;
-	u8 *pbssid = GetAddr3Ptr(pframe);
-	struct HT_info_element *pht_info = NULL;
-	struct ieee80211_ht_cap *pht_cap = NULL;
-	u32 bcn_channel;
-	unsigned short	ht_cap_info;
-	unsigned char ht_info_infos_0;
-	struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
-	int ssid_len;
-
-	if (!is_client_associated_to_ap(Adapter))
-		return true;
-
-	len = packet_len - sizeof(struct ieee80211_hdr_3addr);
-
-	if (len > MAX_IE_SZ)
-		return _FAIL;
-
-	if (memcmp(cur_network->network.mac_address, pbssid, 6))
-		return true;
-
-	bssid = kzalloc_obj(*bssid);
-	if (!bssid)
-		return true;
-
-	if ((pmlmepriv->timeBcnInfoChkStart != 0) && (jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart) > DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIOD_IN_MS)) {
-		pmlmepriv->timeBcnInfoChkStart = 0;
-		pmlmepriv->NumOfBcnInfoChkFail = 0;
-	}
-
-	subtype = GetFrameSubType(pframe) >> 4;
-
-	if (subtype == WIFI_BEACON)
-		bssid->reserved[0] = 1;
-
-	bssid->length = sizeof(struct wlan_bssid_ex) - MAX_IE_SZ + len;
-
-	/* below is to copy the information element */
-	bssid->ie_length = len;
-	memcpy(bssid->ies, (pframe + sizeof(struct ieee80211_hdr_3addr)), bssid->ie_length);
-
-	/* check bw and channel offset */
-	/* parsing HT_CAP_IE */
-	p = rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_CAPABILITY, &len, bssid->ie_length - _FIXED_IE_LENGTH_);
-	if (p && len > 0) {
-		pht_cap = (struct ieee80211_ht_cap *)(p + 2);
-		ht_cap_info = le16_to_cpu(pht_cap->cap_info);
-	} else {
-		ht_cap_info = 0;
-	}
-	/* parsing HT_INFO_IE */
-	p = rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_OPERATION, &len, bssid->ie_length - _FIXED_IE_LENGTH_);
-	if (p && len > 0) {
-		pht_info = (struct HT_info_element *)(p + 2);
-		ht_info_infos_0 = pht_info->infos[0];
-	} else {
-		ht_info_infos_0 = 0;
-	}
-	if (ht_cap_info != cur_network->bcn_info.ht_cap_info ||
-	    ((ht_info_infos_0 & 0x03) != (cur_network->bcn_info.ht_info_infos_0 & 0x03))) {
-		{
-			/* bcn_info_update */
-			cur_network->bcn_info.ht_cap_info = ht_cap_info;
-			cur_network->bcn_info.ht_info_infos_0 = ht_info_infos_0;
-			/* to do : need to check that whether modify related register of BB or not */
-		}
-		/* goto _mismatch; */
-	}
-
-	/* Checking for channel */
-	p = rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_DS_PARAMS, &len, bssid->ie_length - _FIXED_IE_LENGTH_);
-	if (p) {
-		bcn_channel = *(p + 2);
-	} else {/* In 5G, some ap do not have DSSET IE checking HT info for channel */
-		rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_OPERATION,
-			   &len, bssid->ie_length - _FIXED_IE_LENGTH_);
-		if (pht_info)
-			bcn_channel = pht_info->primary_channel;
-		else /* we don't find channel IE, so don't check it */
-			bcn_channel = Adapter->mlmeextpriv.cur_channel;
-	}
-
-	if (bcn_channel != Adapter->mlmeextpriv.cur_channel)
-		goto _mismatch;
-
-	/* checking SSID */
-	ssid_len = 0;
-	p = rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_SSID, &len, bssid->ie_length - _FIXED_IE_LENGTH_);
-	if (p) {
-		ssid_len = *(p + 1);
-		if (ssid_len > NDIS_802_11_LENGTH_SSID)
-			ssid_len = 0;
-		memcpy(bssid->ssid.ssid, (p + 2), ssid_len);
-	}
-	bssid->ssid.ssid_length = ssid_len;
-
-	if (memcmp(bssid->ssid.ssid, cur_network->network.ssid.ssid, 32) ||
-			bssid->ssid.ssid_length != cur_network->network.ssid.ssid_length)
-		if (bssid->ssid.ssid[0] != '\0' &&
-		    bssid->ssid.ssid_length != 0) /* not hidden ssid */
-			goto _mismatch;
-
-	/* check encryption info */
-	val16 = rtw_get_capability((struct wlan_bssid_ex *)bssid);
-
-	if (val16 & BIT(4))
-		bssid->privacy = 1;
-	else
-		bssid->privacy = 0;
-
-	if (cur_network->network.privacy != bssid->privacy)
-		goto _mismatch;
-
-	rtw_get_sec_ie(bssid->ies, bssid->ie_length, NULL, &rsn_len, NULL, &wpa_len);
-
-	if (rsn_len > 0)
-		encryp_protocol = ENCRYP_PROTOCOL_WPA2;
-	else if (wpa_len > 0)
-		encryp_protocol = ENCRYP_PROTOCOL_WPA;
-	else
-		if (bssid->privacy)
-			encryp_protocol = ENCRYP_PROTOCOL_WEP;
-
-	if (cur_network->bcn_info.encryp_protocol != encryp_protocol)
-		goto _mismatch;
-
-	if (encryp_protocol == ENCRYP_PROTOCOL_WPA || encryp_protocol == ENCRYP_PROTOCOL_WPA2) {
-		pbuf = rtw_get_wpa_ie(&bssid->ies[12], &wpa_ielen, bssid->ie_length - 12);
-		if (pbuf && (wpa_ielen > 0)) {
-			rtw_parse_wpa_ie(pbuf, wpa_ielen + 2, &group_cipher,
-					 &pairwise_cipher, &is_8021x);
-		} else {
-			pbuf = rtw_get_wpa2_ie(&bssid->ies[12], &wpa_ielen, bssid->ie_length - 12);
-
-			if (pbuf && (wpa_ielen > 0))
-				rtw_parse_wpa2_ie(pbuf, wpa_ielen + 2, &group_cipher,
-						  &pairwise_cipher, &is_8021x);
-		}
-
-		if (pairwise_cipher != cur_network->bcn_info.pairwise_cipher ||
-		    group_cipher != cur_network->bcn_info.group_cipher)
-			goto _mismatch;
-
-		if (is_8021x != cur_network->bcn_info.is_8021x)
-			goto _mismatch;
-	}
-
-	kfree(bssid);
-	return _SUCCESS;
-
-_mismatch:
-	kfree(bssid);
-
-	if (pmlmepriv->NumOfBcnInfoChkFail == 0)
-		pmlmepriv->timeBcnInfoChkStart = jiffies;
-
-	pmlmepriv->NumOfBcnInfoChkFail++;
-
-	if ((pmlmepriv->timeBcnInfoChkStart != 0) && (jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart) <= DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIOD_IN_MS)
-		&& (pmlmepriv->NumOfBcnInfoChkFail >= DISCONNECT_BY_CHK_BCN_FAIL_THRESHOLD)) {
-		pmlmepriv->timeBcnInfoChkStart = 0;
-		pmlmepriv->NumOfBcnInfoChkFail = 0;
-		return _FAIL;
-	}
-
-	return _SUCCESS;
-}
-
-void update_beacon_info(struct adapter *padapter, u8 *pframe, uint pkt_len, struct sta_info *psta)
-{
-	unsigned int i;
-	unsigned int len;
-	struct ndis_80211_var_ie *pIE;
-
-	len = pkt_len - (_BEACON_IE_OFFSET_ + WLAN_HDR_A3_LEN);
-
-	for (i = 0; i < len;) {
-		if (i + sizeof(*pIE) > len)
-			break;
-		pIE = (struct ndis_80211_var_ie *)(pframe + (_BEACON_IE_OFFSET_ + WLAN_HDR_A3_LEN) + i);
-		if (i + sizeof(*pIE) + pIE->length > len)
-			break;
-
-		switch (pIE->element_id) {
-		case WLAN_EID_VENDOR_SPECIFIC:
-			/* to update WMM parameter set while receiving beacon */
-			if (!memcmp(pIE->data, WMM_PARA_OUI, 6) && pIE->length == WLAN_WMM_LEN)	/* WMM */
-				if (WMM_param_handler(padapter, pIE))
-					report_wmm_edca_update(padapter);
-
-			break;
-
-		case WLAN_EID_HT_OPERATION:	/* HT info */
-			/* HT_info_handler(padapter, pIE); */
-			bwmode_update_check(padapter, pIE);
-			break;
-
-		case WLAN_EID_ERP_INFO:
-			ERP_IE_handler(padapter, pIE);
-			VCS_update(padapter, psta);
-			break;
-
-		default:
-			break;
-		}
-
-		i += sizeof(*pIE) + pIE->length;
-	}
-}
-
-unsigned int is_ap_in_tkip(struct adapter *padapter)
-{
-	u32 i;
-	struct ndis_80211_var_ie *pIE;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex		*cur_network = &pmlmeinfo->network;
-
-	if (rtw_get_capability((struct wlan_bssid_ex *)cur_network) & WLAN_CAPABILITY_PRIVACY) {
-		for (i = sizeof(struct ndis_802_11_fix_ie); i < pmlmeinfo->network.ie_length;) {
-			pIE = (struct ndis_80211_var_ie *)(pmlmeinfo->network.ies + i);
-
-			if (i + sizeof(*pIE) > pmlmeinfo->network.ie_length)
-				break;
-			if (i + sizeof(*pIE) + pIE->length > pmlmeinfo->network.ie_length)
-				break;
-
-			switch (pIE->element_id) {
-			case WLAN_EID_VENDOR_SPECIFIC:
-				if (pIE->length >= 16 &&
-				    !memcmp(pIE->data, RTW_WPA_OUI, 4) &&
-				    !memcmp((pIE->data + 12), WPA_TKIP_CIPHER, 4))
-					return true;
-
-				break;
-
-			case WLAN_EID_RSN:
-				if (pIE->length >= 12 &&
-				    !memcmp((pIE->data + 8), RSN_TKIP_CIPHER, 4))
-					return true;
-				break;
-
-			default:
-				break;
-			}
-
-			i += sizeof(*pIE) + pIE->length;
-		}
-
-		return false;
-	} else {
-		return false;
-	}
-}
-
-int support_short_GI(struct adapter *padapter, struct HT_caps_element *pHT_caps, u8 bwmode)
-{
-	unsigned char bit_offset;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	if (!(pmlmeinfo->HT_enable))
-		return _FAIL;
-
-	bit_offset = (bwmode & CHANNEL_WIDTH_40) ? 6 : 5;
-
-	if (le16_to_cpu(pHT_caps->u.HT_cap_element.HT_caps_info) & (0x1 << bit_offset))
-		return _SUCCESS;
-	else
-		return _FAIL;
-}
-
-unsigned char get_highest_rate_idx(u32 mask)
-{
-	int i;
-	unsigned char rate_idx = 0;
-
-	for (i = 31; i >= 0; i--) {
-		if (mask & BIT(i)) {
-			rate_idx = i;
-			break;
-		}
-	}
-
-	return rate_idx;
-}
-
-void update_ra_entry(struct adapter *padapter, struct sta_info *psta)
-{
-	rtw_hal_update_ra_mask(psta, 0);
-}
-
-void set_sta_rate(struct adapter *padapter, struct sta_info *psta)
-{
-	/* rate adaptive */
-	update_ra_entry(padapter, psta);
-}
-
-static u32 get_realtek_assoc_AP_vender(struct ndis_80211_var_ie *pIE)
-{
-	u32 Vender = HT_IOT_PEER_REALTEK;
-
-	if (pIE->length >= 5) {
-		if (pIE->data[4] == 1)
-			/* if (pIE->data[5] & RT_HT_CAP_USE_LONG_PREAMBLE) */
-			/* bssDesc->BssHT.RT2RT_HT_Mode |= RT_HT_CAP_USE_LONG_PREAMBLE; */
-			if (pIE->data[5] & RT_HT_CAP_USE_92SE)
-				/* bssDesc->BssHT.RT2RT_HT_Mode |= RT_HT_CAP_USE_92SE; */
-				Vender = HT_IOT_PEER_REALTEK_92SE;
-
-		if (pIE->data[5] & RT_HT_CAP_USE_SOFTAP)
-			Vender = HT_IOT_PEER_REALTEK_SOFTAP;
-
-		if (pIE->data[4] == 2) {
-			if (pIE->data[6] & RT_HT_CAP_USE_JAGUAR_BCUT)
-				Vender = HT_IOT_PEER_REALTEK_JAGUAR_BCUTAP;
-
-			if (pIE->data[6] & RT_HT_CAP_USE_JAGUAR_CCUT)
-				Vender = HT_IOT_PEER_REALTEK_JAGUAR_CCUTAP;
-		}
-	}
-
-	return Vender;
-}
-
-unsigned char check_assoc_AP(u8 *pframe, uint len)
-{
-	unsigned int	i;
-	struct ndis_80211_var_ie *pIE;
-
-	for (i = sizeof(struct ndis_802_11_fix_ie); i < len;) {
-		pIE = (struct ndis_80211_var_ie *)(pframe + i);
-
-		switch (pIE->element_id) {
-		case WLAN_EID_VENDOR_SPECIFIC:
-			if ((!memcmp(pIE->data, ARTHEROS_OUI1, 3)) || (!memcmp(pIE->data, ARTHEROS_OUI2, 3)))
-				return HT_IOT_PEER_ATHEROS;
-			else if ((!memcmp(pIE->data, BROADCOM_OUI1, 3)) ||
-				 (!memcmp(pIE->data, BROADCOM_OUI2, 3)) ||
-				 (!memcmp(pIE->data, BROADCOM_OUI3, 3)))
-				return HT_IOT_PEER_BROADCOM;
-			else if (!memcmp(pIE->data, MARVELL_OUI, 3))
-				return HT_IOT_PEER_MARVELL;
-			else if (!memcmp(pIE->data, RALINK_OUI, 3))
-				return HT_IOT_PEER_RALINK;
-			else if (!memcmp(pIE->data, CISCO_OUI, 3))
-				return HT_IOT_PEER_CISCO;
-			else if (!memcmp(pIE->data, REALTEK_OUI, 3))
-				return get_realtek_assoc_AP_vender(pIE);
-			else if (!memcmp(pIE->data, AIRGOCAP_OUI, 3))
-				return HT_IOT_PEER_AIRGO;
-			break;
-		default:
-			break;
-		}
-
-		i += (pIE->length + 2);
-	}
-
-	return HT_IOT_PEER_UNKNOWN;
-}
-
-void update_IOT_info(struct adapter *padapter)
-{
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	switch (pmlmeinfo->assoc_AP_vendor) {
-	case HT_IOT_PEER_MARVELL:
-		pmlmeinfo->turboMode_cts2self = 1;
-		pmlmeinfo->turboMode_rtsen = 0;
-		break;
-
-	case HT_IOT_PEER_RALINK:
-		pmlmeinfo->turboMode_cts2self = 0;
-		pmlmeinfo->turboMode_rtsen = 1;
-		/* disable high power */
-		switch_dm_func(padapter, ((u32)(~DYNAMIC_BB_DYNAMIC_TXPWR)), false);
-		break;
-	case HT_IOT_PEER_REALTEK:
-		/* rtw_write16(padapter, 0x4cc, 0xffff); */
-		/* rtw_write16(padapter, 0x546, 0x01c0); */
-		/* disable high power */
-		switch_dm_func(padapter, ((u32)(~DYNAMIC_BB_DYNAMIC_TXPWR)), false);
-		break;
-	default:
-		pmlmeinfo->turboMode_cts2self = 0;
-		pmlmeinfo->turboMode_rtsen = 1;
-		break;
-	}
-}
-
-void update_capinfo(struct adapter *Adapter, u16 updateCap)
-{
-	struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	bool		ShortPreamble;
-
-	/*  Check preamble mode, 2005.01.06, by rcnjko. */
-	/*  Mark to update preamble value forever, 2008.03.18 by lanhsin */
-	/* if (pMgntInfo->RegPreambleMode == PREAMBLE_AUTO) */
-	{
-		if (updateCap & cShortPreamble) {
-			/*  Short Preamble */
-			if (pmlmeinfo->preamble_mode != PREAMBLE_SHORT) { /*  PREAMBLE_LONG or PREAMBLE_AUTO */
-				ShortPreamble = true;
-				pmlmeinfo->preamble_mode = PREAMBLE_SHORT;
-				rtw_hal_set_hwreg(Adapter, HW_VAR_ACK_PREAMBLE, (u8 *)&ShortPreamble);
-			}
-		} else {
-			/*  Long Preamble */
-			if (pmlmeinfo->preamble_mode != PREAMBLE_LONG) { /*  PREAMBLE_SHORT or PREAMBLE_AUTO */
-				ShortPreamble = false;
-				pmlmeinfo->preamble_mode = PREAMBLE_LONG;
-				rtw_hal_set_hwreg(Adapter, HW_VAR_ACK_PREAMBLE, (u8 *)&ShortPreamble);
-			}
-		}
-	}
-
-	if (updateCap & cIBSS) {
-		/* Filen: See 802.11-2007 p.91 */
-		pmlmeinfo->slotTime = NON_SHORT_SLOT_TIME;
-	} else {
-		/* Filen: See 802.11-2007 p.90 */
-		if (pmlmeext->cur_wireless_mode & (WIRELESS_11_24N)) {
-			pmlmeinfo->slotTime = SHORT_SLOT_TIME;
-		} else if (pmlmeext->cur_wireless_mode & (WIRELESS_11G)) {
-			if ((updateCap & cShortSlotTime) /* && (!(pMgntInfo->pHTInfo->RT2RT_HT_Mode & RT_HT_CAP_USE_LONG_PREAMBLE)) */)
-				/*  Short Slot Time */
-				pmlmeinfo->slotTime = SHORT_SLOT_TIME;
-			else
-				/*  Long Slot Time */
-				pmlmeinfo->slotTime = NON_SHORT_SLOT_TIME;
-		} else {
-			/* B Mode */
-			pmlmeinfo->slotTime = NON_SHORT_SLOT_TIME;
-		}
-	}
-
-	rtw_hal_set_hwreg(Adapter, HW_VAR_SLOT_TIME, &pmlmeinfo->slotTime);
-}
-
-void update_wireless_mode(struct adapter *padapter)
-{
-	int network_type = 0;
-	u32 SIFS_Timer;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex *cur_network = &pmlmeinfo->network;
-	unsigned char *rate = cur_network->supported_rates;
-
-	if ((pmlmeinfo->HT_info_enable) && (pmlmeinfo->HT_caps_enable))
-		pmlmeinfo->HT_enable = 1;
-
-	if (pmlmeinfo->HT_enable)
-		network_type = WIRELESS_11_24N;
-
-	if (rtw_is_cckratesonly_included(rate))
-		network_type |= WIRELESS_11B;
-	else if (rtw_is_cckrates_included(rate))
-		network_type |= WIRELESS_11BG;
-	else
-		network_type |= WIRELESS_11G;
-
-	pmlmeext->cur_wireless_mode = network_type & padapter->registrypriv.wireless_mode;
-
-	SIFS_Timer = 0x0a0a0808; /* 0x0808 -> for CCK, 0x0a0a -> for OFDM */
-													/* change this value if having IOT issues. */
-
-	SetHwReg8723BS(padapter, HW_VAR_RESP_SIFS,  (u8 *)&SIFS_Timer);
-
-	SetHwReg8723BS(padapter, HW_VAR_WIRELESS_MODE,  (u8 *)&pmlmeext->cur_wireless_mode);
-
-	if (pmlmeext->cur_wireless_mode & WIRELESS_11B)
-		update_mgnt_tx_rate(padapter, IEEE80211_CCK_RATE_1MB);
-	else
-		update_mgnt_tx_rate(padapter, IEEE80211_OFDM_RATE_6MB);
-}
-
-void update_sta_basic_rate(struct sta_info *psta, u8 wireless_mode)
-{
-	if (is_supported_tx_cck(wireless_mode)) {
-		/*  Only B, B/G, and B/G/N AP could use CCK rate */
-		memcpy(psta->bssrateset, rtw_basic_rate_cck, 4);
-		psta->bssratelen = 4;
-	} else {
-		memcpy(psta->bssrateset, rtw_basic_rate_ofdm, 3);
-		psta->bssratelen = 3;
-	}
-}
-
-int update_sta_support_rate(struct adapter *padapter, u8 *pvar_ie, uint var_ie_len, int cam_idx)
-{
-	unsigned int	ie_len;
-	struct ndis_80211_var_ie *pIE;
-	int	support_rate_num = 0;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	pIE = (struct ndis_80211_var_ie *)rtw_get_ie(pvar_ie, WLAN_EID_SUPP_RATES, &ie_len, var_ie_len);
-	if (!pIE)
-		return _FAIL;
-	if (ie_len > sizeof(pmlmeinfo->FW_sta_info[cam_idx].SupportedRates))
-		return _FAIL;
-
-	memcpy(pmlmeinfo->FW_sta_info[cam_idx].SupportedRates, pIE->data, ie_len);
-	support_rate_num = ie_len;
-
-	pIE = (struct ndis_80211_var_ie *)rtw_get_ie(pvar_ie, WLAN_EID_EXT_SUPP_RATES, &ie_len, var_ie_len);
-	if (pIE && (ie_len <= sizeof(pmlmeinfo->FW_sta_info[cam_idx].SupportedRates) - support_rate_num))
-		memcpy((pmlmeinfo->FW_sta_info[cam_idx].SupportedRates + support_rate_num), pIE->data, ie_len);
-
-	return _SUCCESS;
-}
-
-void process_addba_req(struct adapter *padapter, u8 *paddba_req, u8 *addr)
-{
-	struct sta_info *psta;
-	u16 tid, param;
-	struct recv_reorder_ctrl *preorder_ctrl;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct ADDBA_request *preq = (struct ADDBA_request *)paddba_req;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	psta = rtw_get_stainfo(pstapriv, addr);
-
-	if (psta) {
-		param = le16_to_cpu(preq->BA_para_set);
-		tid = (param >> 2) & 0x0f;
-
-		preorder_ctrl = &psta->recvreorder_ctrl[tid];
-
-		preorder_ctrl->indicate_seq = 0xffff;
-
-		preorder_ctrl->enable = pmlmeinfo->accept_addba_req;
-	}
-}
-
-void update_TSF(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint len)
-{
-	u8 *pIE;
-	__le32 *pbuf;
-
-	pIE = pframe + sizeof(struct ieee80211_hdr_3addr);
-	pbuf = (__le32 *)pIE;
-
-	pmlmeext->TSFValue = le32_to_cpu(*(pbuf + 1));
-
-	pmlmeext->TSFValue = pmlmeext->TSFValue << 32;
-
-	pmlmeext->TSFValue |= le32_to_cpu(*pbuf);
-}
-
-void correct_TSF(struct adapter *padapter, struct mlme_ext_priv *pmlmeext)
-{
-	rtw_hal_set_hwreg(padapter, HW_VAR_CORRECT_TSF, NULL);
-}
-
-void adaptive_early_32k(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint len)
-{
-	int i;
-	u8 *pIE;
-	__le32 *pbuf;
-	u64 tsf = 0;
-	u32 delay_ms;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	pmlmeext->bcn_cnt++;
-
-	pIE = pframe + sizeof(struct ieee80211_hdr_3addr);
-	pbuf = (__le32 *)pIE;
-
-	tsf = le32_to_cpu(*(pbuf + 1));
-	tsf = tsf << 32;
-	tsf |= le32_to_cpu(*pbuf);
-
-	/* delay = (timestamp mod 1024*100)/1000 (unit: ms) */
-	/* delay_ms = do_div(tsf, (pmlmeinfo->bcn_interval*1024))/1000; */
-	delay_ms = do_div(tsf, (pmlmeinfo->bcn_interval * 1024));
-	delay_ms = delay_ms / 1000;
-
-	if (delay_ms >= 8)
-		pmlmeext->bcn_delay_cnt[8]++;
-		/* pmlmeext->bcn_delay_ratio[8] = (pmlmeext->bcn_delay_cnt[8] * 100) /pmlmeext->bcn_cnt; */
-	else
-		pmlmeext->bcn_delay_cnt[delay_ms]++;
-		/* pmlmeext->bcn_delay_ratio[delay_ms] = (pmlmeext->bcn_delay_cnt[delay_ms] * 100) /pmlmeext->bcn_cnt; */
-	/* dump for  adaptive_early_32k */
-	if (pmlmeext->bcn_cnt > 100 && pmlmeext->adaptive_tsf_done) {
-		u8 ratio_20_delay, ratio_80_delay;
-		u8 DrvBcnEarly, DrvBcnTimeOut;
-
-		ratio_20_delay = 0;
-		ratio_80_delay = 0;
-		DrvBcnEarly = 0xff;
-		DrvBcnTimeOut = 0xff;
-
-		for (i = 0; i < 9; i++) {
-			pmlmeext->bcn_delay_ratio[i] = (pmlmeext->bcn_delay_cnt[i] * 100) / pmlmeext->bcn_cnt;
-
-			ratio_20_delay += pmlmeext->bcn_delay_ratio[i];
-			ratio_80_delay += pmlmeext->bcn_delay_ratio[i];
-
-			if (ratio_20_delay > 20 && DrvBcnEarly == 0xff)
-				DrvBcnEarly = i;
-
-			if (ratio_80_delay > 80 && DrvBcnTimeOut == 0xff)
-				DrvBcnTimeOut = i;
-
-			/* reset adaptive_early_32k cnt */
-			pmlmeext->bcn_delay_cnt[i] = 0;
-			pmlmeext->bcn_delay_ratio[i] = 0;
-		}
-
-		pmlmeext->DrvBcnEarly = DrvBcnEarly;
-		pmlmeext->DrvBcnTimeOut = DrvBcnTimeOut;
-
-		pmlmeext->bcn_cnt = 0;
-	}
-}
-
-void rtw_alloc_macid(struct adapter *padapter, struct sta_info *psta)
-{
-	int i;
-	struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter);
-
-	if (is_broadcast_ether_addr(psta->hwaddr))
-		return;
-
-	if (!memcmp(psta->hwaddr, myid(&padapter->eeprompriv), ETH_ALEN)) {
-		psta->mac_id = NUM_STA;
-		return;
-	}
-
-	spin_lock_bh(&pdvobj->lock);
-	for (i = 0; i < NUM_STA; i++) {
-		if (!pdvobj->macid[i]) {
-			pdvobj->macid[i]  = true;
-			break;
-		}
-	}
-	spin_unlock_bh(&pdvobj->lock);
-
-	if (i > (NUM_STA - 1))
-		psta->mac_id = NUM_STA;
-	else
-		psta->mac_id = i;
-}
-
-void rtw_release_macid(struct adapter *padapter, struct sta_info *psta)
-{
-	struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter);
-
-	if (is_broadcast_ether_addr(psta->hwaddr))
-		return;
-
-	if (!memcmp(psta->hwaddr, myid(&padapter->eeprompriv), ETH_ALEN))
-		return;
-
-	spin_lock_bh(&pdvobj->lock);
-	if (psta->mac_id < NUM_STA && psta->mac_id != 1) {
-		if (pdvobj->macid[psta->mac_id]) {
-			pdvobj->macid[psta->mac_id] = false;
-			psta->mac_id = NUM_STA;
-		}
-	}
-	spin_unlock_bh(&pdvobj->lock);
-}
diff --git a/drivers/staging/rtl8723bs/core/rtw_xmit.c b/drivers/staging/rtl8723bs/core/rtw_xmit.c
deleted file mode 100644
index 81d9e713fc12..000000000000
--- a/drivers/staging/rtl8723bs/core/rtw_xmit.c
+++ /dev/null
@@ -1,2569 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <drv_types.h>
-#include <linux/delay.h>
-#include <linux/if_ether.h>
-
-static u8 P802_1H_OUI[P80211_OUI_LEN] = { 0x00, 0x00, 0xf8 };
-static u8 RFC1042_OUI[P80211_OUI_LEN] = { 0x00, 0x00, 0x00 };
-
-static void _init_txservq(struct tx_servq *ptxservq)
-{
-	INIT_LIST_HEAD(&ptxservq->tx_pending);
-	INIT_LIST_HEAD(&ptxservq->sta_pending.queue);
-	spin_lock_init(&ptxservq->sta_pending.lock);
-	ptxservq->qcnt = 0;
-}
-
-void _rtw_init_sta_xmit_priv(struct sta_xmit_priv *psta_xmitpriv)
-{
-	memset((unsigned char *)psta_xmitpriv, 0, sizeof(struct sta_xmit_priv));
-
-	spin_lock_init(&psta_xmitpriv->lock);
-
-	_init_txservq(&psta_xmitpriv->be_q);
-	_init_txservq(&psta_xmitpriv->bk_q);
-	_init_txservq(&psta_xmitpriv->vi_q);
-	_init_txservq(&psta_xmitpriv->vo_q);
-	INIT_LIST_HEAD(&psta_xmitpriv->legacy_dz);
-	INIT_LIST_HEAD(&psta_xmitpriv->apsd);
-}
-
-static s32 rtw_alloc_hwxmits(struct adapter *padapter)
-{
-	struct hw_xmit *hwxmits;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-	pxmitpriv->hwxmit_entry = HWXMIT_ENTRY;
-
-	pxmitpriv->hwxmits = NULL;
-
-	pxmitpriv->hwxmits = kzalloc_objs(*hwxmits, pxmitpriv->hwxmit_entry,
-					  GFP_ATOMIC);
-	if (!pxmitpriv->hwxmits)
-		return -ENOMEM;
-
-	hwxmits = pxmitpriv->hwxmits;
-
-	if (pxmitpriv->hwxmit_entry == 5) {
-		hwxmits[0] .sta_queue = &pxmitpriv->bm_pending;
-
-		hwxmits[1] .sta_queue = &pxmitpriv->vo_pending;
-
-		hwxmits[2] .sta_queue = &pxmitpriv->vi_pending;
-
-		hwxmits[3] .sta_queue = &pxmitpriv->bk_pending;
-
-		hwxmits[4] .sta_queue = &pxmitpriv->be_pending;
-	} else if (pxmitpriv->hwxmit_entry == 4) {
-		hwxmits[0] .sta_queue = &pxmitpriv->vo_pending;
-
-		hwxmits[1] .sta_queue = &pxmitpriv->vi_pending;
-
-		hwxmits[2] .sta_queue = &pxmitpriv->be_pending;
-
-		hwxmits[3] .sta_queue = &pxmitpriv->bk_pending;
-	} else {
-	}
-
-	return 0;
-}
-
-static int rtw_os_xmit_resource_alloc(struct adapter *padapter, struct xmit_buf *pxmitbuf, u32 alloc_sz, u8 flag)
-{
-	if (alloc_sz > 0) {
-		pxmitbuf->pallocated_buf = kzalloc(alloc_sz, GFP_KERNEL);
-		if (!pxmitbuf->pallocated_buf)
-			return -ENOMEM;
-
-		pxmitbuf->pbuf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(pxmitbuf->pallocated_buf), XMITBUF_ALIGN_SZ);
-	}
-
-	return 0;
-}
-
-s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter)
-{
-	int i;
-	struct xmit_buf *pxmitbuf;
-	struct xmit_frame *pxframe;
-	int res;
-
-	spin_lock_init(&pxmitpriv->lock);
-	spin_lock_init(&pxmitpriv->lock_sctx);
-	init_completion(&pxmitpriv->xmit_comp);
-	init_completion(&pxmitpriv->terminate_xmitthread_comp);
-
-	pxmitpriv->adapter = padapter;
-
-	INIT_LIST_HEAD(&pxmitpriv->be_pending.queue);
-	spin_lock_init(&pxmitpriv->be_pending.lock);
-	INIT_LIST_HEAD(&pxmitpriv->bk_pending.queue);
-	spin_lock_init(&pxmitpriv->bk_pending.lock);
-	INIT_LIST_HEAD(&pxmitpriv->vi_pending.queue);
-	spin_lock_init(&pxmitpriv->vi_pending.lock);
-	INIT_LIST_HEAD(&pxmitpriv->vo_pending.queue);
-	spin_lock_init(&pxmitpriv->vo_pending.lock);
-	INIT_LIST_HEAD(&pxmitpriv->bm_pending.queue);
-	spin_lock_init(&pxmitpriv->bm_pending.lock);
-
-	INIT_LIST_HEAD(&pxmitpriv->free_xmit_queue.queue);
-	spin_lock_init(&pxmitpriv->free_xmit_queue.lock);
-
-	/*
-	 * Please allocate memory with the sz = (struct xmit_frame) * NR_XMITFRAME,
-	 * and initialize free_xmit_frame below.
-	 * Please also apply  free_txobj to link_up all the xmit_frames...
-	 */
-
-	pxmitpriv->pallocated_frame_buf = vzalloc(NR_XMITFRAME * sizeof(struct xmit_frame) + 4);
-
-	if (!pxmitpriv->pallocated_frame_buf) {
-		pxmitpriv->pxmit_frame_buf = NULL;
-		return -ENOMEM;
-	}
-	pxmitpriv->pxmit_frame_buf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(pxmitpriv->pallocated_frame_buf), 4);
-
-	pxframe = (struct xmit_frame *)pxmitpriv->pxmit_frame_buf;
-
-	for (i = 0; i < NR_XMITFRAME; i++) {
-		INIT_LIST_HEAD(&pxframe->list);
-
-		pxframe->padapter = padapter;
-		pxframe->frame_tag = NULL_FRAMETAG;
-
-		pxframe->pkt = NULL;
-
-		pxframe->buf_addr = NULL;
-		pxframe->pxmitbuf = NULL;
-
-		list_add_tail(&pxframe->list,
-			      &pxmitpriv->free_xmit_queue.queue);
-
-		pxframe++;
-	}
-
-	pxmitpriv->free_xmitframe_cnt = NR_XMITFRAME;
-
-	pxmitpriv->frag_len = MAX_FRAG_THRESHOLD;
-
-	/* init xmit_buf */
-	INIT_LIST_HEAD(&pxmitpriv->free_xmitbuf_queue.queue);
-	spin_lock_init(&pxmitpriv->free_xmitbuf_queue.lock);
-	INIT_LIST_HEAD(&pxmitpriv->pending_xmitbuf_queue.queue);
-	spin_lock_init(&pxmitpriv->pending_xmitbuf_queue.lock);
-
-	pxmitpriv->pallocated_xmitbuf = vzalloc(NR_XMITBUFF * sizeof(struct xmit_buf) + 4);
-
-	if (!pxmitpriv->pallocated_xmitbuf)
-		return -ENOMEM;
-
-	pxmitpriv->pxmitbuf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(pxmitpriv->pallocated_xmitbuf), 4);
-
-	pxmitbuf = (struct xmit_buf *)pxmitpriv->pxmitbuf;
-
-	for (i = 0; i < NR_XMITBUFF; i++) {
-		INIT_LIST_HEAD(&pxmitbuf->list);
-
-		pxmitbuf->priv_data = NULL;
-		pxmitbuf->padapter = padapter;
-		pxmitbuf->buf_tag = XMITBUF_DATA;
-
-		/* Tx buf allocation may fail sometimes, so sleep and retry. */
-		res = rtw_os_xmit_resource_alloc(padapter, pxmitbuf, (MAX_XMITBUF_SZ + XMITBUF_ALIGN_SZ), true);
-		if (res) {
-			fsleep(10 * USEC_PER_MSEC);
-			res = rtw_os_xmit_resource_alloc(padapter, pxmitbuf, (MAX_XMITBUF_SZ + XMITBUF_ALIGN_SZ), true);
-			if (res)
-				return res;
-		}
-
-		pxmitbuf->phead = pxmitbuf->pbuf;
-		pxmitbuf->pend = pxmitbuf->pbuf + MAX_XMITBUF_SZ;
-		pxmitbuf->len = 0;
-		pxmitbuf->pdata = pxmitbuf->phead;
-		pxmitbuf->ptail = pxmitbuf->phead;
-
-		pxmitbuf->flags = XMIT_VO_QUEUE;
-
-		list_add_tail(&pxmitbuf->list,
-			      &pxmitpriv->free_xmitbuf_queue.queue);
-		pxmitbuf++;
-	}
-
-	pxmitpriv->free_xmitbuf_cnt = NR_XMITBUFF;
-
-	/* init xframe_ext queue,  the same count as extbuf  */
-	INIT_LIST_HEAD(&pxmitpriv->free_xframe_ext_queue.queue);
-	spin_lock_init(&pxmitpriv->free_xframe_ext_queue.lock);
-
-	pxmitpriv->xframe_ext_alloc_addr = vzalloc(NR_XMIT_EXTBUFF * sizeof(struct xmit_frame) + 4);
-
-	if (!pxmitpriv->xframe_ext_alloc_addr) {
-		pxmitpriv->xframe_ext = NULL;
-		return -ENOMEM;
-	}
-	pxmitpriv->xframe_ext = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(pxmitpriv->xframe_ext_alloc_addr), 4);
-	pxframe = (struct xmit_frame *)pxmitpriv->xframe_ext;
-
-	for (i = 0; i < NR_XMIT_EXTBUFF; i++) {
-		INIT_LIST_HEAD(&pxframe->list);
-
-		pxframe->padapter = padapter;
-		pxframe->frame_tag = NULL_FRAMETAG;
-
-		pxframe->pkt = NULL;
-
-		pxframe->buf_addr = NULL;
-		pxframe->pxmitbuf = NULL;
-
-		pxframe->ext_tag = 1;
-
-		list_add_tail(&pxframe->list,
-			      &pxmitpriv->free_xframe_ext_queue.queue);
-
-		pxframe++;
-	}
-	pxmitpriv->free_xframe_ext_cnt = NR_XMIT_EXTBUFF;
-
-	/*  Init xmit extension buff */
-	INIT_LIST_HEAD(&pxmitpriv->free_xmit_extbuf_queue.queue);
-	spin_lock_init(&pxmitpriv->free_xmit_extbuf_queue.lock);
-
-	pxmitpriv->pallocated_xmit_extbuf = vzalloc(NR_XMIT_EXTBUFF * sizeof(struct xmit_buf) + 4);
-
-	if (!pxmitpriv->pallocated_xmit_extbuf)
-		return -ENOMEM;
-
-	pxmitpriv->pxmit_extbuf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(pxmitpriv->pallocated_xmit_extbuf), 4);
-
-	pxmitbuf = (struct xmit_buf *)pxmitpriv->pxmit_extbuf;
-
-	for (i = 0; i < NR_XMIT_EXTBUFF; i++) {
-		INIT_LIST_HEAD(&pxmitbuf->list);
-
-		pxmitbuf->priv_data = NULL;
-		pxmitbuf->padapter = padapter;
-		pxmitbuf->buf_tag = XMITBUF_MGNT;
-
-		res = rtw_os_xmit_resource_alloc(padapter, pxmitbuf, MAX_XMIT_EXTBUF_SZ + XMITBUF_ALIGN_SZ, true);
-		if (res)
-			return res;
-
-		pxmitbuf->phead = pxmitbuf->pbuf;
-		pxmitbuf->pend = pxmitbuf->pbuf + MAX_XMIT_EXTBUF_SZ;
-		pxmitbuf->len = 0;
-		pxmitbuf->pdata = pxmitbuf->ptail = pxmitbuf->phead;
-
-		list_add_tail(&pxmitbuf->list,
-			      &pxmitpriv->free_xmit_extbuf_queue.queue);
-		pxmitbuf++;
-	}
-
-	pxmitpriv->free_xmit_extbuf_cnt = NR_XMIT_EXTBUFF;
-
-	for (i = 0; i < CMDBUF_MAX; i++) {
-		pxmitbuf = &pxmitpriv->pcmd_xmitbuf[i];
-		if (pxmitbuf) {
-			INIT_LIST_HEAD(&pxmitbuf->list);
-
-			pxmitbuf->priv_data = NULL;
-			pxmitbuf->padapter = padapter;
-			pxmitbuf->buf_tag = XMITBUF_CMD;
-
-			res = rtw_os_xmit_resource_alloc(padapter, pxmitbuf,
-							 MAX_CMDBUF_SZ + XMITBUF_ALIGN_SZ,
-							 true);
-			if (res)
-				return res;
-
-			pxmitbuf->phead = pxmitbuf->pbuf;
-			pxmitbuf->pend = pxmitbuf->pbuf + MAX_CMDBUF_SZ;
-			pxmitbuf->len = 0;
-			pxmitbuf->pdata = pxmitbuf->ptail = pxmitbuf->phead;
-			pxmitbuf->alloc_sz = MAX_CMDBUF_SZ + XMITBUF_ALIGN_SZ;
-		}
-	}
-
-	res = rtw_alloc_hwxmits(padapter);
-	if (res)
-		return res;
-	rtw_init_hwxmits(pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry);
-
-	for (i = 0; i < 4; i++)
-		pxmitpriv->wmm_para_seq[i] = i;
-
-	pxmitpriv->ack_tx = false;
-	mutex_init(&pxmitpriv->ack_tx_mutex);
-	rtw_sctx_init(&pxmitpriv->ack_tx_ops, 0);
-
-	rtw_hal_init_xmit_priv(padapter);
-
-	return 0;
-}
-
-void _rtw_free_xmit_priv(struct xmit_priv *pxmitpriv)
-{
-	int i;
-	struct adapter *padapter = pxmitpriv->adapter;
-	struct xmit_frame	*pxmitframe = (struct xmit_frame *)pxmitpriv->pxmit_frame_buf;
-	struct xmit_buf *pxmitbuf = (struct xmit_buf *)pxmitpriv->pxmitbuf;
-
-	rtw_hal_free_xmit_priv(padapter);
-
-	if (!pxmitpriv->pxmit_frame_buf)
-		return;
-
-	for (i = 0; i < NR_XMITFRAME; i++) {
-		rtw_os_xmit_complete(padapter, pxmitframe);
-
-		pxmitframe++;
-	}
-
-	for (i = 0; i < NR_XMITBUFF; i++) {
-		rtw_os_xmit_resource_free(padapter, pxmitbuf, (MAX_XMITBUF_SZ + XMITBUF_ALIGN_SZ), true);
-
-		pxmitbuf++;
-	}
-
-	vfree(pxmitpriv->pallocated_frame_buf);
-	vfree(pxmitpriv->pallocated_xmitbuf);
-
-	/* free xframe_ext queue,  the same count as extbuf  */
-	pxmitframe = (struct xmit_frame *)pxmitpriv->xframe_ext;
-	if (pxmitframe) {
-		for (i = 0; i < NR_XMIT_EXTBUFF; i++) {
-			rtw_os_xmit_complete(padapter, pxmitframe);
-			pxmitframe++;
-		}
-	}
-
-	vfree(pxmitpriv->xframe_ext_alloc_addr);
-
-	/*  free xmit extension buff */
-	pxmitbuf = (struct xmit_buf *)pxmitpriv->pxmit_extbuf;
-	for (i = 0; i < NR_XMIT_EXTBUFF; i++) {
-		rtw_os_xmit_resource_free(padapter, pxmitbuf, (MAX_XMIT_EXTBUF_SZ + XMITBUF_ALIGN_SZ), true);
-
-		pxmitbuf++;
-	}
-
-	vfree(pxmitpriv->pallocated_xmit_extbuf);
-
-	for (i = 0; i < CMDBUF_MAX; i++) {
-		pxmitbuf = &pxmitpriv->pcmd_xmitbuf[i];
-		if (pxmitbuf)
-			rtw_os_xmit_resource_free(padapter, pxmitbuf,
-						  MAX_CMDBUF_SZ + XMITBUF_ALIGN_SZ,
-						  true);
-	}
-
-	rtw_free_hwxmits(padapter);
-
-	mutex_destroy(&pxmitpriv->ack_tx_mutex);
-}
-
-u8 query_ra_short_GI(struct sta_info *psta)
-{
-	u8 sgi = false, sgi_20m = false, sgi_40m = false;
-
-	sgi_20m = psta->htpriv.sgi_20m;
-	sgi_40m = psta->htpriv.sgi_40m;
-
-	switch (psta->bw_mode) {
-	case CHANNEL_WIDTH_40:
-		sgi = sgi_40m;
-		break;
-	case CHANNEL_WIDTH_20:
-	default:
-		sgi = sgi_20m;
-		break;
-	}
-
-	return sgi;
-}
-
-static void update_attrib_vcs_info(struct adapter *padapter, struct xmit_frame *pxmitframe)
-{
-	u32 sz;
-	struct pkt_attrib	*pattrib = &pxmitframe->attrib;
-	/* struct sta_info *psta = pattrib->psta; */
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	if (pattrib->nr_frags != 1)
-		sz = padapter->xmitpriv.frag_len;
-	else /* no frag */
-		sz = pattrib->last_txcmdsz;
-
-	/*  (1) RTS_Threshold is compared to the MPDU, not MSDU. */
-	/*  (2) If there are more than one frag in  this MSDU, only the first frag uses protection frame. */
-	/* Other fragments are protected by previous fragment. */
-	/* So we only need to check the length of first fragment. */
-	if (pmlmeext->cur_wireless_mode < WIRELESS_11_24N  || padapter->registrypriv.wifi_spec) {
-		if (sz > padapter->registrypriv.rts_thresh) {
-			pattrib->vcs_mode = RTS_CTS;
-		} else {
-			if (pattrib->rtsen)
-				pattrib->vcs_mode = RTS_CTS;
-			else if (pattrib->cts2self)
-				pattrib->vcs_mode = CTS_TO_SELF;
-			else
-				pattrib->vcs_mode = NONE_VCS;
-		}
-	} else {
-		while (true) {
-			/* IOT action */
-			if ((pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_ATHEROS) &&
-			    pattrib->ampdu_en &&
-			    (padapter->securitypriv.dot11_privacy_algrthm == _AES_)) {
-				pattrib->vcs_mode = CTS_TO_SELF;
-				break;
-			}
-
-			/* check ERP protection */
-			if (pattrib->rtsen || pattrib->cts2self) {
-				if (pattrib->rtsen)
-					pattrib->vcs_mode = RTS_CTS;
-				else if (pattrib->cts2self)
-					pattrib->vcs_mode = CTS_TO_SELF;
-
-				break;
-			}
-
-			/* check HT op mode */
-			if (pattrib->ht_en) {
-				u8 HTOpMode = pmlmeinfo->HT_protection;
-
-				if ((pmlmeext->cur_bwmode && (HTOpMode == 2 || HTOpMode == 3)) ||
-					(!pmlmeext->cur_bwmode && HTOpMode == 3)) {
-					pattrib->vcs_mode = RTS_CTS;
-					break;
-				}
-			}
-
-			/* check rts */
-			if (sz > padapter->registrypriv.rts_thresh) {
-				pattrib->vcs_mode = RTS_CTS;
-				break;
-			}
-
-			/* to do list: check MIMO power save condition. */
-
-			/* check AMPDU aggregation for TXOP */
-			if (pattrib->ampdu_en) {
-				pattrib->vcs_mode = RTS_CTS;
-				break;
-			}
-
-			pattrib->vcs_mode = NONE_VCS;
-			break;
-		}
-	}
-
-	/* for debug : force driver control vrtl_carrier_sense. */
-	if (padapter->driver_vcs_en == 1)
-		pattrib->vcs_mode = padapter->driver_vcs_type;
-}
-
-static void update_attrib_phy_info(struct adapter *padapter, struct pkt_attrib *pattrib, struct sta_info *psta)
-{
-	struct mlme_ext_priv *mlmeext = &padapter->mlmeextpriv;
-
-	pattrib->rtsen = psta->rtsen;
-	pattrib->cts2self = psta->cts2self;
-
-	pattrib->mdata = 0;
-	pattrib->eosp = 0;
-	pattrib->triggered = 0;
-	pattrib->ampdu_spacing = 0;
-
-	/* qos_en, ht_en, init rate, , bw, ch_offset, sgi */
-	pattrib->qos_en = psta->qos_option;
-
-	pattrib->raid = psta->raid;
-
-	pattrib->bwmode = min(mlmeext->cur_bwmode, psta->bw_mode);
-
-	pattrib->sgi = query_ra_short_GI(psta);
-
-	pattrib->ldpc = psta->ldpc;
-	pattrib->stbc = psta->stbc;
-
-	pattrib->ht_en = psta->htpriv.ht_option;
-	pattrib->ch_offset = psta->htpriv.ch_offset;
-	pattrib->ampdu_en = false;
-
-	if (padapter->driver_ampdu_spacing != 0xFF) /* driver control AMPDU Density for peer sta's rx */
-		pattrib->ampdu_spacing = padapter->driver_ampdu_spacing;
-	else
-		pattrib->ampdu_spacing = psta->htpriv.rx_ampdu_min_spacing;
-
-	pattrib->retry_ctrl = false;
-}
-
-static int update_attrib_sec_info(struct adapter *padapter, struct pkt_attrib *pattrib, struct sta_info *psta)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	signed int bmcast = is_multicast_ether_addr(pattrib->ra);
-
-	memset(pattrib->dot118021x_UncstKey.skey,  0, 16);
-	memset(pattrib->dot11tkiptxmickey.skey,  0, 16);
-	pattrib->mac_id = psta->mac_id;
-
-	if (psta->ieee8021x_blocked) {
-		pattrib->encrypt = 0;
-
-		if ((pattrib->ether_type != 0x888e) && !check_fwstate(pmlmepriv, WIFI_MP_STATE))
-			return -EINVAL;
-	} else {
-		GET_ENCRY_ALGO(psecuritypriv, psta, pattrib->encrypt, bmcast);
-
-		switch (psecuritypriv->dot11_auth_algrthm) {
-		case dot11_auth_algrthm_open:
-		case dot11_auth_algrthm_shared:
-		case dot11_auth_algrthm_auto:
-			pattrib->key_idx = (u8)psecuritypriv->dot11PrivacyKeyIndex;
-			break;
-		case dot11_auth_algrthm_8021x:
-			if (bmcast)
-				pattrib->key_idx = (u8)psecuritypriv->dot118021XGrpKeyid;
-			else
-				pattrib->key_idx = 0;
-			break;
-		default:
-			pattrib->key_idx = 0;
-			break;
-		}
-
-		/* For WPS 1.0 WEP, driver should not encrypt EAPOL Packet for WPS handshake. */
-		if (((pattrib->encrypt == _WEP40_) || (pattrib->encrypt == _WEP104_)) && (pattrib->ether_type == 0x888e))
-			pattrib->encrypt = _NO_PRIVACY_;
-	}
-
-	switch (pattrib->encrypt) {
-	case _WEP40_:
-	case _WEP104_:
-		pattrib->iv_len = 4;
-		pattrib->icv_len = 4;
-		WEP_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx);
-		break;
-
-	case _TKIP_:
-		pattrib->iv_len = 8;
-		pattrib->icv_len = 4;
-
-		if (psecuritypriv->busetkipkey == _FAIL)
-			return -EINVAL;
-
-		if (bmcast)
-			TKIP_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx);
-		else
-			TKIP_IV(pattrib->iv, psta->dot11txpn, 0);
-
-		memcpy(pattrib->dot11tkiptxmickey.skey, psta->dot11tkiptxmickey.skey, 16);
-
-		break;
-
-	case _AES_:
-
-		pattrib->iv_len = 8;
-		pattrib->icv_len = 8;
-
-		if (bmcast)
-			AES_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx);
-		else
-			AES_IV(pattrib->iv, psta->dot11txpn, 0);
-
-		break;
-
-	default:
-		pattrib->iv_len = 0;
-		pattrib->icv_len = 0;
-		break;
-	}
-
-	if (pattrib->encrypt > 0)
-		memcpy(pattrib->dot118021x_UncstKey.skey, psta->dot118021x_UncstKey.skey, 16);
-
-	if (pattrib->encrypt &&
-		((padapter->securitypriv.sw_encrypt) || (!psecuritypriv->hw_decrypted)))
-		pattrib->bswenc = true;
-	else
-		pattrib->bswenc = false;
-
-	return 0;
-}
-
-u8 qos_acm(u8 acm_mask, u8 priority)
-{
-	switch (priority) {
-	case 0:
-	case 3:
-		if (acm_mask & BIT(1))
-			priority = 1;
-		break;
-	case 1:
-	case 2:
-		break;
-	case 4:
-	case 5:
-		if (acm_mask & BIT(2))
-			priority = 0;
-		break;
-	case 6:
-	case 7:
-		if (acm_mask & BIT(3))
-			priority = 5;
-		break;
-	default:
-		break;
-	}
-
-	return priority;
-}
-
-static int set_qos(struct pkt_file *ppktfile, struct pkt_attrib *pattrib)
-{
-	struct ethhdr etherhdr;
-	struct iphdr ip_hdr;
-	s32 UserPriority = 0;
-	int ret;
-
-	_rtw_open_pktfile(ppktfile->pkt, ppktfile);
-	ret = _rtw_pktfile_read(ppktfile, (unsigned char *)&etherhdr, ETH_HLEN);
-	if (ret < 0)
-		return ret;
-
-	/*  get UserPriority from IP hdr */
-	if (pattrib->ether_type == 0x0800) {
-		ret = _rtw_pktfile_read(ppktfile, (u8 *)&ip_hdr, sizeof(ip_hdr));
-		if (ret < 0)
-			return ret;
-
-		UserPriority = ip_hdr.tos >> 5;
-	}
-	pattrib->priority = UserPriority;
-	pattrib->hdrlen = WLAN_HDR_A3_QOS_LEN;
-	pattrib->subtype = WIFI_QOS_DATA_TYPE;
-
-	return 0;
-}
-
-static int update_attrib(struct adapter *padapter, struct sk_buff *pkt, struct pkt_attrib *pattrib)
-{
-	struct pkt_file pktfile;
-	struct sta_info *psta = NULL;
-	struct ethhdr etherhdr;
-
-	signed int bmcast;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct qos_priv *pqospriv = &pmlmepriv->qospriv;
-	int ret;
-
-	_rtw_open_pktfile(pkt, &pktfile);
-	ret = _rtw_pktfile_read(&pktfile, (u8 *)&etherhdr, ETH_HLEN);
-	if (ret < 0)
-		return ret;
-
-	pattrib->ether_type = ntohs(etherhdr.h_proto);
-
-	memcpy(pattrib->dst, &etherhdr.h_dest, ETH_ALEN);
-	memcpy(pattrib->src, &etherhdr.h_source, ETH_ALEN);
-
-	if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) ||
-	    check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
-		memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
-		memcpy(pattrib->ta, pattrib->src, ETH_ALEN);
-	} else if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
-		memcpy(pattrib->ra, get_bssid(pmlmepriv), ETH_ALEN);
-		memcpy(pattrib->ta, pattrib->src, ETH_ALEN);
-	} else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
-		memcpy(pattrib->ta, get_bssid(pmlmepriv), ETH_ALEN);
-	}
-
-	pattrib->pktlen = pktfile.pkt_len;
-
-	if (pattrib->ether_type == ETH_P_IP) {
-		/*  The following is for DHCP and ARP packet, we use cck1M to tx these packets and let LPS awake some time */
-		/*  to prevent DHCP protocol fail */
-
-		u8 tmp[24];
-
-		ret = _rtw_pktfile_read(&pktfile, &tmp[0], 24);
-		if (ret < 0)
-			return ret;
-
-		pattrib->dhcp_pkt = 0;
-		if (pktfile.pkt_len > 282) {/* MINIMUM_DHCP_PACKET_SIZE) { */
-			if (pattrib->ether_type == ETH_P_IP) {/*  IP header */
-				if (((tmp[21] == 68) && (tmp[23] == 67)) ||
-					((tmp[21] == 67) && (tmp[23] == 68))) {
-					/*  68 : UDP BOOTP client */
-					/*  67 : UDP BOOTP server */
-					pattrib->dhcp_pkt = 1;
-				}
-			}
-		}
-
-		/* for parsing ICMP packets */
-		{
-			struct iphdr *piphdr = (struct iphdr *)tmp;
-
-			pattrib->icmp_pkt = 0;
-			if (piphdr->protocol == 0x1) /*  protocol type in ip header 0x1 is ICMP */
-				pattrib->icmp_pkt = 1;
-		}
-	} else if (pattrib->ether_type == 0x888e) {
-		netdev_dbg(padapter->pnetdev, "send eapol packet\n");
-	}
-
-	if ((pattrib->ether_type == 0x888e) || (pattrib->dhcp_pkt == 1))
-		rtw_set_scan_deny(padapter, 3000);
-
-	/*  If EAPOL , ARP , OR DHCP packet, driver must be in active mode. */
-	if (pattrib->icmp_pkt == 1)
-		rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_LEAVE, 1);
-	else if (pattrib->dhcp_pkt == 1)
-		rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_SPECIAL_PACKET, 1);
-
-	bmcast = is_multicast_ether_addr(pattrib->ra);
-
-	/*  get sta_info */
-	if (bmcast) {
-		psta = rtw_get_bcmc_stainfo(padapter);
-	} else {
-		psta = rtw_get_stainfo(pstapriv, pattrib->ra);
-		if (!psta)	/*  if we cannot get psta => drop the pkt */
-			return -EINVAL;
-		else if (check_fwstate(pmlmepriv, WIFI_AP_STATE) && !(psta->state & _FW_LINKED))
-			return -EINVAL;
-	}
-
-	if (!psta) {
-		/*  if we cannot get psta => drop the pkt */
-		return -EINVAL;
-	}
-
-	if (!(psta->state & _FW_LINKED))
-		return -EINVAL;
-
-	spin_lock_bh(&psta->lock);
-	ret = update_attrib_sec_info(padapter, pattrib, psta);
-	if (ret) {
-		spin_unlock_bh(&psta->lock);
-		return ret;
-	}
-
-	update_attrib_phy_info(padapter, pattrib, psta);
-
-	pattrib->psta = psta;
-	spin_unlock_bh(&psta->lock);
-
-	pattrib->pctrl = 0;
-
-	pattrib->ack_policy = 0;
-	/*  get ether_hdr_len */
-	pattrib->pkt_hdrlen = ETH_HLEN;/* pattrib->ether_type == 0x8100) ? (14 + 4): 14; vlan tag */
-
-	pattrib->hdrlen = WLAN_HDR_A3_LEN;
-	pattrib->subtype = WIFI_DATA_TYPE;
-	pattrib->priority = 0;
-
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE | WIFI_ADHOC_STATE | WIFI_ADHOC_MASTER_STATE)) {
-		if (pattrib->qos_en) {
-			ret = set_qos(&pktfile, pattrib);
-			if (ret < 0)
-				return ret;
-		}
-	} else {
-		if (pqospriv->qos_option) {
-			ret = set_qos(&pktfile, pattrib);
-			if (ret < 0)
-				return ret;
-
-			if (pmlmepriv->acm_mask != 0)
-				pattrib->priority = qos_acm(pmlmepriv->acm_mask, pattrib->priority);
-		}
-	}
-
-	/* pattrib->priority = 5; force to used VI queue, for testing */
-	return 0;
-}
-
-static int xmitframe_addmic(struct adapter *padapter, struct xmit_frame *pxmitframe)
-{
-	signed int			curfragnum, length;
-	u8 *pframe, *payload, mic[8];
-	struct mic_data micdata;
-	struct pkt_attrib *pattrib = &pxmitframe->attrib;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	u8 priority[4] = {0x0, 0x0, 0x0, 0x0};
-	u8 hw_hdr_offset = 0;
-	signed int bmcst = is_multicast_ether_addr(pattrib->ra);
-
-	hw_hdr_offset = TXDESC_OFFSET;
-
-	if (pattrib->encrypt == _TKIP_) {
-		/* encode mic code */
-		{
-			u8 null_key[16] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
-
-			pframe = pxmitframe->buf_addr + hw_hdr_offset;
-
-			if (bmcst) {
-				if (!memcmp(psecuritypriv->dot118021XGrptxmickey[psecuritypriv->dot118021XGrpKeyid].skey, null_key, 16))
-					return -EINVAL;
-				/* start to calculate the mic code */
-				rtw_secmicsetkey(&micdata, psecuritypriv->dot118021XGrptxmickey[psecuritypriv->dot118021XGrpKeyid].skey);
-			} else {
-				if (!memcmp(&pattrib->dot11tkiptxmickey.skey[0], null_key, 16))
-					return -EINVAL;
-				/* start to calculate the mic code */
-				rtw_secmicsetkey(&micdata, &pattrib->dot11tkiptxmickey.skey[0]);
-			}
-
-			if (pframe[1] & 1) {   /* ToDS == 1 */
-				rtw_secmicappend(&micdata, &pframe[16], 6);  /* DA */
-				if (pframe[1] & 2)  /* From Ds == 1 */
-					rtw_secmicappend(&micdata, &pframe[24], 6);
-				else
-					rtw_secmicappend(&micdata, &pframe[10], 6);
-			} else {	/* ToDS == 0 */
-				rtw_secmicappend(&micdata, &pframe[4], 6);   /* DA */
-				if (pframe[1] & 2)  /* From Ds == 1 */
-					rtw_secmicappend(&micdata, &pframe[16], 6);
-				else
-					rtw_secmicappend(&micdata, &pframe[10], 6);
-			}
-
-			if (pattrib->qos_en)
-				priority[0] = (u8)pxmitframe->attrib.priority;
-
-			rtw_secmicappend(&micdata, &priority[0], 4);
-
-			payload = pframe;
-
-			for (curfragnum = 0; curfragnum < pattrib->nr_frags; curfragnum++) {
-				payload = (u8 *)round_up((SIZE_PTR)(payload), 4);
-				payload = payload + pattrib->hdrlen + pattrib->iv_len;
-
-				if ((curfragnum + 1) == pattrib->nr_frags) {
-					length = pattrib->last_txcmdsz - pattrib->hdrlen -
-						 pattrib->iv_len -
-						 ((pattrib->bswenc) ? pattrib->icv_len : 0);
-					rtw_secmicappend(&micdata, payload, length);
-					payload = payload + length;
-				} else {
-					length = pxmitpriv->frag_len - pattrib->hdrlen -
-						 pattrib->iv_len -
-						 ((pattrib->bswenc) ? pattrib->icv_len : 0);
-					rtw_secmicappend(&micdata, payload, length);
-					payload = payload + length + pattrib->icv_len;
-				}
-			}
-			rtw_secgetmic(&micdata, &mic[0]);
-			/* add mic code  and add the mic code length in last_txcmdsz */
-
-			memcpy(payload, &mic[0], 8);
-			pattrib->last_txcmdsz += 8;
-			}
-	}
-	return 0;
-}
-
-static s32 xmitframe_swencrypt(struct adapter *padapter, struct xmit_frame *pxmitframe)
-{
-	struct	pkt_attrib	 *pattrib = &pxmitframe->attrib;
-
-	if (pattrib->bswenc) {
-		switch (pattrib->encrypt) {
-		case _WEP40_:
-		case _WEP104_:
-			rtw_wep_encrypt(padapter, (u8 *)pxmitframe);
-			break;
-		case _TKIP_:
-			rtw_tkip_encrypt(padapter, (u8 *)pxmitframe);
-			break;
-		case _AES_:
-			rtw_aes_encrypt(padapter, (u8 *)pxmitframe);
-			break;
-		default:
-				break;
-		}
-	}
-
-	return _SUCCESS;
-}
-
-int rtw_make_wlanhdr(struct adapter *padapter, u8 *hdr, struct pkt_attrib *pattrib)
-{
-	u16 *qc;
-
-	struct ieee80211_hdr *pwlanhdr = (struct ieee80211_hdr *)hdr;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct qos_priv *pqospriv = &pmlmepriv->qospriv;
-	u8 qos_option = false;
-	__le16 *fctrl = &pwlanhdr->frame_control;
-
-	memset(hdr, 0, WLANHDR_OFFSET);
-
-	SetFrameSubType(fctrl, pattrib->subtype);
-
-	if (pattrib->subtype & WIFI_DATA_TYPE) {
-		if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
-			/* to_ds = 1, fr_ds = 0; */
-
-			{
-				/*  1.Data transfer to AP */
-				/*  2.Arp pkt will relayed by AP */
-				SetToDs(fctrl);
-				memcpy(pwlanhdr->addr1, get_bssid(pmlmepriv), ETH_ALEN);
-				memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN);
-				memcpy(pwlanhdr->addr3, pattrib->dst, ETH_ALEN);
-			}
-
-			if (pqospriv->qos_option)
-				qos_option = true;
-		} else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-			/* to_ds = 0, fr_ds = 1; */
-			SetFrDs(fctrl);
-			memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN);
-			memcpy(pwlanhdr->addr2, get_bssid(pmlmepriv), ETH_ALEN);
-			memcpy(pwlanhdr->addr3, pattrib->src, ETH_ALEN);
-
-			if (pattrib->qos_en)
-				qos_option = true;
-		} else if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) ||
-			   check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
-			memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN);
-			memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN);
-			memcpy(pwlanhdr->addr3, get_bssid(pmlmepriv), ETH_ALEN);
-
-			if (pattrib->qos_en)
-				qos_option = true;
-		} else {
-			return -EINVAL;
-		}
-
-		if (pattrib->mdata)
-			SetMData(fctrl);
-
-		if (pattrib->encrypt)
-			SetPrivacy(fctrl);
-
-		if (qos_option) {
-			qc = (unsigned short *)(hdr + pattrib->hdrlen - 2);
-
-			if (pattrib->priority)
-				SetPriority(qc, pattrib->priority);
-
-			SetEOSP(qc, pattrib->eosp);
-
-			SetAckpolicy(qc, pattrib->ack_policy);
-		}
-
-		/* TODO: fill HT Control Field */
-
-		/* Update Seq Num will be handled by f/w */
-		{
-			struct sta_info *psta;
-
-			psta = rtw_get_stainfo(&padapter->stapriv, pattrib->ra);
-			if (pattrib->psta != psta)
-				return -EINVAL;
-
-			if (!psta)
-				return -ENOENT;
-
-			if (!(psta->state & _FW_LINKED))
-				return -ENOLINK;
-
-			if (psta) {
-				psta->sta_xmitpriv.txseq_tid[pattrib->priority]++;
-				psta->sta_xmitpriv.txseq_tid[pattrib->priority] %= 4096u;
-				pattrib->seqnum = psta->sta_xmitpriv.txseq_tid[pattrib->priority];
-
-				SetSeqNum(hdr, pattrib->seqnum);
-
-				/* check if enable ampdu */
-				if (pattrib->ht_en && psta->htpriv.ampdu_enable)
-					if (psta->htpriv.agg_enable_bitmap & BIT(pattrib->priority))
-						pattrib->ampdu_en = true;
-
-				/* re-check if enable ampdu by BA_starting_seqctrl */
-				if (pattrib->ampdu_en) {
-					u16 tx_seq;
-
-					tx_seq = psta->BA_starting_seqctrl[pattrib->priority & 0x0f];
-
-					/* check BA_starting_seqctrl */
-					if (SN_LESS(pattrib->seqnum, tx_seq)) {
-						pattrib->ampdu_en = false;/* AGG BK */
-					} else if (SN_EQUAL(pattrib->seqnum, tx_seq)) {
-						psta->BA_starting_seqctrl[pattrib->priority & 0x0f] =
-							(tx_seq + 1) % 4096u;
-
-						pattrib->ampdu_en = true;/* AGG EN */
-					} else {
-						psta->BA_starting_seqctrl[pattrib->priority & 0x0f] =
-							(pattrib->seqnum + 1) % 4096u;
-
-						pattrib->ampdu_en = true;/* AGG EN */
-					}
-				}
-			}
-		}
-	} else {
-	}
-
-	return 0;
-}
-
-s32 rtw_txframes_pending(struct adapter *padapter)
-{
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-	return ((!list_empty(&pxmitpriv->be_pending.queue)) ||
-			 (!list_empty(&pxmitpriv->bk_pending.queue)) ||
-			 (!list_empty(&pxmitpriv->vi_pending.queue)) ||
-			 (!list_empty(&pxmitpriv->vo_pending.queue)));
-}
-
-/*
- * Calculate wlan 802.11 packet MAX size from pkt_attrib
- * This function doesn't consider fragment case
- */
-u32 rtw_calculate_wlan_pkt_size_by_attribue(struct pkt_attrib *pattrib)
-{
-	u32 len = 0;
-
-	len = pattrib->hdrlen + pattrib->iv_len; /*  WLAN Header and IV */
-	len += SNAP_SIZE + sizeof(u16); /*  LLC */
-	len += pattrib->pktlen;
-	if (pattrib->encrypt == _TKIP_)
-		len += 8; /*  MIC */
-	len += ((pattrib->bswenc) ? pattrib->icv_len : 0); /*  ICV */
-
-	return len;
-}
-
-/*
- * This sub-routine will perform all the following:
- * 1. remove 802.3 header.
- * 2. create wlan_header, based on the info in pxmitframe
- * 3. append sta's iv/ext-iv
- * 4. append LLC
- * 5. move frag chunk from pframe to pxmitframe->mem
- * 6. apply sw-encrypt, if necessary.
- */
-int rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct xmit_frame *pxmitframe)
-{
-	struct pkt_file pktfile;
-
-	s32 frg_inx, frg_len, mpdu_len, llc_sz, mem_sz;
-
-	SIZE_PTR addr;
-
-	u8 *pframe, *mem_start;
-	u8 hw_hdr_offset;
-
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-	struct pkt_attrib	*pattrib = &pxmitframe->attrib;
-
-	u8 *pbuf_start;
-
-	s32 bmcst = is_multicast_ether_addr(pattrib->ra);
-	int ret;
-
-	if (!pxmitframe->buf_addr)
-		return -EINVAL;
-
-	pbuf_start = pxmitframe->buf_addr;
-
-	hw_hdr_offset = TXDESC_OFFSET;
-	mem_start = pbuf_start +	hw_hdr_offset;
-
-	ret = rtw_make_wlanhdr(padapter, mem_start, pattrib);
-	if (ret)
-		return ret;
-
-	_rtw_open_pktfile(pkt, &pktfile);
-	ret = _rtw_pktfile_read(&pktfile, NULL, pattrib->pkt_hdrlen);
-	if (ret < 0)
-		return ret;
-
-	frg_inx = 0;
-	frg_len = pxmitpriv->frag_len - 4;/* 2346-4 = 2342 */
-
-	while (1) {
-		llc_sz = 0;
-
-		mpdu_len = frg_len;
-
-		pframe = mem_start;
-
-		SetMFrag(mem_start);
-
-		pframe += pattrib->hdrlen;
-		mpdu_len -= pattrib->hdrlen;
-
-		/* adding icv, if necessary... */
-		if (pattrib->iv_len) {
-			memcpy(pframe, pattrib->iv, pattrib->iv_len);
-
-			pframe += pattrib->iv_len;
-
-			mpdu_len -= pattrib->iv_len;
-		}
-
-		if (frg_inx == 0) {
-			llc_sz = rtw_put_snap(pframe, pattrib->ether_type);
-			pframe += llc_sz;
-			mpdu_len -= llc_sz;
-		}
-
-		if ((pattrib->icv_len > 0) && (pattrib->bswenc))
-			mpdu_len -= pattrib->icv_len;
-
-		if (bmcst) {
-			/*  don't do fragment to broadcast/multicast packets */
-			mem_sz = _rtw_pktfile_read(&pktfile, pframe, pattrib->pktlen);
-		} else {
-			mem_sz = _rtw_pktfile_read(&pktfile, pframe, mpdu_len);
-		}
-
-		if (mem_sz < 0)
-			return mem_sz;
-
-		pframe += mem_sz;
-
-		if ((pattrib->icv_len > 0) && (pattrib->bswenc)) {
-			memcpy(pframe, pattrib->icv, pattrib->icv_len);
-			pframe += pattrib->icv_len;
-		}
-
-		frg_inx++;
-
-		if (bmcst || rtw_endofpktfile(&pktfile)) {
-			pattrib->nr_frags = frg_inx;
-
-			pattrib->last_txcmdsz = pattrib->hdrlen + pattrib->iv_len +
-						((pattrib->nr_frags == 1) ? llc_sz : 0) +
-						((pattrib->bswenc) ? pattrib->icv_len : 0) +
-						mem_sz;
-
-			ClearMFrag(mem_start);
-
-			break;
-		}
-
-		addr = (SIZE_PTR)(pframe);
-
-		mem_start = (unsigned char *)round_up(addr, 4) + hw_hdr_offset;
-		memcpy(mem_start, pbuf_start + hw_hdr_offset, pattrib->hdrlen);
-	}
-
-	ret = xmitframe_addmic(padapter, pxmitframe);
-	if (ret)
-		return ret;
-
-	xmitframe_swencrypt(padapter, pxmitframe);
-
-	if (!bmcst)
-		update_attrib_vcs_info(padapter, pxmitframe);
-	else
-		pattrib->vcs_mode = NONE_VCS;
-
-	return 0;
-}
-
-/* broadcast or multicast management pkt use BIP, unicast management pkt use CCMP encryption */
-s32 rtw_mgmt_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct xmit_frame *pxmitframe)
-{
-	u8 *pframe, *mem_start = NULL, *tmp_buf = NULL;
-	u8 subtype;
-	struct sta_info *psta = NULL;
-	struct pkt_attrib *pattrib = &pxmitframe->attrib;
-	s32 bmcst = is_multicast_ether_addr(pattrib->ra);
-	u8 *BIP_AAD = NULL;
-	u8 *MGMT_body = NULL;
-
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct ieee80211_hdr	*pwlanhdr;
-	u8 MME[_MME_IE_LENGTH_];
-	u32 ori_len;
-
-	mem_start = pframe = (u8 *)(pxmitframe->buf_addr) + TXDESC_OFFSET;
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	ori_len = BIP_AAD_SIZE + pattrib->pktlen;
-	BIP_AAD = kzalloc(ori_len, GFP_ATOMIC);
-
-	if (!BIP_AAD)
-		return _FAIL;
-
-	tmp_buf = BIP_AAD;
-	subtype = GetFrameSubType(pframe); /* bit(7)~bit(2) */
-	spin_lock_bh(&padapter->security_key_mutex);
-
-	/* only support station mode */
-	if (!check_fwstate(pmlmepriv, WIFI_STATION_STATE) || !check_fwstate(pmlmepriv, _FW_LINKED))
-		goto xmitframe_coalesce_success;
-
-	/* IGTK key is not install, it may not support 802.11w */
-	if (!padapter->securitypriv.binstallBIPkey)
-		goto xmitframe_coalesce_success;
-
-	/* station mode doesn't need TX BIP, just ready the code */
-	if (bmcst) {
-		int frame_body_len;
-		u8 mic[16];
-
-		memset(MME, 0, 18);
-
-		/* other types doesn't need the BIP */
-		if (GetFrameSubType(pframe) != WIFI_DEAUTH && GetFrameSubType(pframe) != WIFI_DISASSOC)
-			goto xmitframe_coalesce_fail;
-
-		MGMT_body = pframe + sizeof(struct ieee80211_hdr_3addr);
-		pframe += pattrib->pktlen;
-
-		/* octent 0 and 1 is key index , BIP keyid is 4 or 5, LSB only need octent 0 */
-		MME[0] = padapter->securitypriv.dot11wBIPKeyid;
-		/* copy packet number */
-		memcpy(&MME[2], &pmlmeext->mgnt_80211w_IPN, 6);
-		/* increase the packet number */
-		pmlmeext->mgnt_80211w_IPN++;
-
-		/* add MME IE with MIC all zero, MME string doesn't include element id and length */
-		pframe = rtw_set_ie(pframe, WLAN_EID_MMIE, 16,
-				    MME, &pattrib->pktlen);
-		pattrib->last_txcmdsz = pattrib->pktlen;
-		/*  total frame length - header length */
-		frame_body_len = pattrib->pktlen - sizeof(struct ieee80211_hdr_3addr);
-
-		/* conscruct AAD, copy frame control field */
-		memcpy(BIP_AAD, &pwlanhdr->frame_control, 2);
-		ClearRetry(BIP_AAD);
-		ClearPwrMgt(BIP_AAD);
-		ClearMData(BIP_AAD);
-		/* conscruct AAD, copy address 1 to address 3 */
-		memcpy(BIP_AAD + 2, &pwlanhdr->addrs, sizeof(pwlanhdr->addrs));
-		/* copy management fram body */
-		memcpy(BIP_AAD + BIP_AAD_SIZE, MGMT_body, frame_body_len);
-		/* calculate mic */
-		if (omac1_aes_128(padapter->securitypriv.dot11wBIPKey[padapter->securitypriv.dot11wBIPKeyid].skey
-			, BIP_AAD, BIP_AAD_SIZE + frame_body_len, mic))
-			goto xmitframe_coalesce_fail;
-
-		/* copy right BIP mic value, total is 128bits, we use the 0~63 bits */
-		memcpy(pframe - 8, mic, 8);
-	} else { /* unicast mgmt frame TX */
-		/* start to encrypt mgmt frame */
-		if (subtype == WIFI_DEAUTH || subtype == WIFI_DISASSOC ||
-			subtype == WIFI_REASSOCREQ || subtype == WIFI_ACTION) {
-			if (pattrib->psta)
-				psta = pattrib->psta;
-			else
-				psta = rtw_get_stainfo(&padapter->stapriv, pattrib->ra);
-
-			if (!psta)
-				goto xmitframe_coalesce_fail;
-
-			if (!(psta->state & _FW_LINKED) || !pxmitframe->buf_addr)
-				goto xmitframe_coalesce_fail;
-
-			/* according 802.11-2012 standard, these five types are not robust types */
-			if (subtype == WIFI_ACTION &&
-			(pframe[WLAN_HDR_A3_LEN] == RTW_WLAN_CATEGORY_PUBLIC ||
-			pframe[WLAN_HDR_A3_LEN] == RTW_WLAN_CATEGORY_HT ||
-			pframe[WLAN_HDR_A3_LEN] == RTW_WLAN_CATEGORY_UNPROTECTED_WNM ||
-			pframe[WLAN_HDR_A3_LEN] == RTW_WLAN_CATEGORY_SELF_PROTECTED  ||
-			pframe[WLAN_HDR_A3_LEN] == RTW_WLAN_CATEGORY_P2P))
-				goto xmitframe_coalesce_fail;
-			/* before encrypt dump the management packet content */
-			if (pattrib->encrypt > 0)
-				memcpy(pattrib->dot118021x_UncstKey.skey, psta->dot118021x_UncstKey.skey, 16);
-			/* bakeup original management packet */
-			memcpy(tmp_buf, pframe, pattrib->pktlen);
-			/* move to data portion */
-			pframe += pattrib->hdrlen;
-
-			/* 802.11w unicast management packet must be _AES_ */
-			pattrib->iv_len = 8;
-			/* it's MIC of AES */
-			pattrib->icv_len = 8;
-
-			switch (pattrib->encrypt) {
-			case _AES_:
-					/* set AES IV header */
-					AES_IV(pattrib->iv, psta->dot11wtxpn, 0);
-				break;
-			default:
-				goto xmitframe_coalesce_fail;
-			}
-			/* insert iv header into management frame */
-			memcpy(pframe, pattrib->iv, pattrib->iv_len);
-			pframe += pattrib->iv_len;
-			/* copy mgmt data portion after CCMP header */
-			memcpy(pframe, tmp_buf + pattrib->hdrlen,
-			       pattrib->pktlen - pattrib->hdrlen);
-			/* move pframe to end of mgmt pkt */
-			pframe += pattrib->pktlen - pattrib->hdrlen;
-			/* add 8 bytes CCMP IV header to length */
-			pattrib->pktlen += pattrib->iv_len;
-			if ((pattrib->icv_len > 0) && (pattrib->bswenc)) {
-				memcpy(pframe, pattrib->icv, pattrib->icv_len);
-				pframe += pattrib->icv_len;
-			}
-			/* add 8 bytes MIC */
-			pattrib->pktlen += pattrib->icv_len;
-			/* set final tx command size */
-			pattrib->last_txcmdsz = pattrib->pktlen;
-
-			/* set protected bit must be before SW encrypt */
-			SetPrivacy(mem_start);
-			/* software encrypt */
-			xmitframe_swencrypt(padapter, pxmitframe);
-		}
-	}
-
-xmitframe_coalesce_success:
-	spin_unlock_bh(&padapter->security_key_mutex);
-	kfree(BIP_AAD);
-	return _SUCCESS;
-
-xmitframe_coalesce_fail:
-	spin_unlock_bh(&padapter->security_key_mutex);
-	kfree(BIP_AAD);
-	return _FAIL;
-}
-
-/* Logical Link Control(LLC) SubNetwork Attachment Point(SNAP) header
- * IEEE LLC/SNAP header contains 8 octets
- * First 3 octets comprise the LLC portion
- * SNAP portion, 5 octets, is divided into two fields:
- *Organizationally Unique Identifier(OUI), 3 octets,
- *type, defined by that organization, 2 octets.
- */
-s32 rtw_put_snap(u8 *data, u16 h_proto)
-{
-	struct ieee80211_snap_hdr *snap;
-	u8 *oui;
-
-	snap = (struct ieee80211_snap_hdr *)data;
-	snap->dsap = 0xaa;
-	snap->ssap = 0xaa;
-	snap->ctrl = 0x03;
-
-	if (h_proto == 0x8137 || h_proto == 0x80f3)
-		oui = P802_1H_OUI;
-	else
-		oui = RFC1042_OUI;
-
-	snap->oui[0] = oui[0];
-	snap->oui[1] = oui[1];
-	snap->oui[2] = oui[2];
-
-	*(__be16 *)(data + SNAP_SIZE) = htons(h_proto);
-
-	return SNAP_SIZE + sizeof(u16);
-}
-
-void rtw_update_protection(struct adapter *padapter, u8 *ie, uint ie_len)
-{
-	uint	protection;
-	u8 *perp;
-	signed int	 erp_len;
-	struct	xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct	registry_priv *pregistrypriv = &padapter->registrypriv;
-
-	switch (pxmitpriv->vcs_setting) {
-	case DISABLE_VCS:
-		pxmitpriv->vcs = NONE_VCS;
-		break;
-
-	case ENABLE_VCS:
-		break;
-
-	case AUTO_VCS:
-	default:
-		perp = rtw_get_ie(ie, WLAN_EID_ERP_INFO, &erp_len, ie_len);
-		if (!perp) {
-			pxmitpriv->vcs = NONE_VCS;
-		} else {
-			protection = (*(perp + 2)) & BIT(1);
-			if (protection) {
-				if (pregistrypriv->vcs_type == RTS_CTS)
-					pxmitpriv->vcs = RTS_CTS;
-				else
-					pxmitpriv->vcs = CTS_TO_SELF;
-			} else {
-				pxmitpriv->vcs = NONE_VCS;
-			}
-		}
-
-		break;
-	}
-}
-
-void rtw_count_tx_stats(struct adapter *padapter, struct xmit_frame *pxmitframe, int sz)
-{
-	struct sta_info *psta = NULL;
-	struct stainfo_stats *pstats = NULL;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	u8 pkt_num = 1;
-
-	if ((pxmitframe->frame_tag & 0x0f) == DATA_FRAMETAG) {
-		pkt_num = pxmitframe->agg_num;
-
-		pmlmepriv->link_detect_info.num_tx_ok_in_period += pkt_num;
-
-		pxmitpriv->tx_pkts += pkt_num;
-
-		pxmitpriv->tx_bytes += sz;
-
-		psta = pxmitframe->attrib.psta;
-		if (psta) {
-			pstats = &psta->sta_stats;
-
-			pstats->tx_pkts += pkt_num;
-
-			pstats->tx_bytes += sz;
-		}
-	}
-}
-
-static struct xmit_buf *__rtw_alloc_cmd_xmitbuf(struct xmit_priv *pxmitpriv,
-		enum cmdbuf_type buf_type)
-{
-	struct xmit_buf *pxmitbuf =  NULL;
-
-	pxmitbuf = &pxmitpriv->pcmd_xmitbuf[buf_type];
-	if (pxmitbuf) {
-		pxmitbuf->priv_data = NULL;
-
-		pxmitbuf->len = 0;
-		pxmitbuf->pdata = pxmitbuf->ptail = pxmitbuf->phead;
-		pxmitbuf->agg_num = 0;
-		pxmitbuf->pg_num = 0;
-
-		if (pxmitbuf->sctx)
-			rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_BUF_ALLOC);
-	}
-
-	return pxmitbuf;
-}
-
-struct xmit_frame *__rtw_alloc_cmdxmitframe(struct xmit_priv *pxmitpriv,
-		enum cmdbuf_type buf_type)
-{
-	struct xmit_frame		*pcmdframe;
-	struct xmit_buf		*pxmitbuf;
-
-	pcmdframe = rtw_alloc_xmitframe(pxmitpriv);
-	if (!pcmdframe)
-		return NULL;
-
-	pxmitbuf = __rtw_alloc_cmd_xmitbuf(pxmitpriv, buf_type);
-	if (!pxmitbuf) {
-		rtw_free_xmitframe(pxmitpriv, pcmdframe);
-		return NULL;
-	}
-
-	pcmdframe->frame_tag = MGNT_FRAMETAG;
-
-	pcmdframe->pxmitbuf = pxmitbuf;
-
-	pcmdframe->buf_addr = pxmitbuf->pbuf;
-
-	pxmitbuf->priv_data = pcmdframe;
-
-	return pcmdframe;
-}
-
-struct xmit_buf *rtw_alloc_xmitbuf_ext(struct xmit_priv *pxmitpriv)
-{
-	unsigned long irqL;
-	struct xmit_buf *pxmitbuf =  NULL;
-	struct list_head *plist, *phead;
-	struct __queue *pfree_queue = &pxmitpriv->free_xmit_extbuf_queue;
-
-	spin_lock_irqsave(&pfree_queue->lock, irqL);
-
-	if (list_empty(&pfree_queue->queue)) {
-		pxmitbuf = NULL;
-	} else {
-		phead = get_list_head(pfree_queue);
-
-		plist = get_next(phead);
-
-		pxmitbuf = container_of(plist, struct xmit_buf, list);
-
-		list_del_init(&pxmitbuf->list);
-	}
-
-	if (pxmitbuf) {
-		pxmitpriv->free_xmit_extbuf_cnt--;
-
-		pxmitbuf->priv_data = NULL;
-
-		pxmitbuf->len = 0;
-		pxmitbuf->pdata = pxmitbuf->phead;
-		pxmitbuf->ptail = pxmitbuf->phead;
-		pxmitbuf->agg_num = 1;
-
-		if (pxmitbuf->sctx)
-			rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_BUF_ALLOC);
-	}
-
-	spin_unlock_irqrestore(&pfree_queue->lock, irqL);
-
-	return pxmitbuf;
-}
-
-s32 rtw_free_xmitbuf_ext(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf)
-{
-	unsigned long irqL;
-	struct __queue *pfree_queue = &pxmitpriv->free_xmit_extbuf_queue;
-
-	if (!pxmitbuf)
-		return _FAIL;
-
-	spin_lock_irqsave(&pfree_queue->lock, irqL);
-
-	list_del_init(&pxmitbuf->list);
-
-	list_add_tail(&pxmitbuf->list, get_list_head(pfree_queue));
-	pxmitpriv->free_xmit_extbuf_cnt++;
-
-	spin_unlock_irqrestore(&pfree_queue->lock, irqL);
-
-	return _SUCCESS;
-}
-
-struct xmit_buf *rtw_alloc_xmitbuf(struct xmit_priv *pxmitpriv)
-{
-	unsigned long irqL;
-	struct xmit_buf *pxmitbuf =  NULL;
-	struct list_head *plist, *phead;
-	struct __queue *pfree_xmitbuf_queue = &pxmitpriv->free_xmitbuf_queue;
-
-	spin_lock_irqsave(&pfree_xmitbuf_queue->lock, irqL);
-
-	if (list_empty(&pfree_xmitbuf_queue->queue)) {
-		pxmitbuf = NULL;
-	} else {
-		phead = get_list_head(pfree_xmitbuf_queue);
-
-		plist = get_next(phead);
-
-		pxmitbuf = container_of(plist, struct xmit_buf, list);
-
-		list_del_init(&pxmitbuf->list);
-	}
-
-	if (pxmitbuf) {
-		pxmitpriv->free_xmitbuf_cnt--;
-
-		pxmitbuf->priv_data = NULL;
-
-		pxmitbuf->len = 0;
-		pxmitbuf->pdata = pxmitbuf->phead;
-		pxmitbuf->ptail = pxmitbuf->phead;
-		pxmitbuf->agg_num = 0;
-		pxmitbuf->pg_num = 0;
-
-		if (pxmitbuf->sctx)
-			rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_BUF_ALLOC);
-	}
-
-	spin_unlock_irqrestore(&pfree_xmitbuf_queue->lock, irqL);
-
-	return pxmitbuf;
-}
-
-s32 rtw_free_xmitbuf(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf)
-{
-	unsigned long irqL;
-	struct __queue *pfree_xmitbuf_queue = &pxmitpriv->free_xmitbuf_queue;
-
-	if (!pxmitbuf)
-		return _FAIL;
-
-	if (pxmitbuf->sctx)
-		rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_BUF_FREE);
-
-	if (pxmitbuf->buf_tag == XMITBUF_CMD) {
-	} else if (pxmitbuf->buf_tag == XMITBUF_MGNT) {
-		rtw_free_xmitbuf_ext(pxmitpriv, pxmitbuf);
-	} else {
-		spin_lock_irqsave(&pfree_xmitbuf_queue->lock, irqL);
-
-		list_del_init(&pxmitbuf->list);
-
-		list_add_tail(&pxmitbuf->list,
-			      get_list_head(pfree_xmitbuf_queue));
-
-		pxmitpriv->free_xmitbuf_cnt++;
-		spin_unlock_irqrestore(&pfree_xmitbuf_queue->lock, irqL);
-	}
-	return _SUCCESS;
-}
-
-static void rtw_init_xmitframe(struct xmit_frame *pxframe)
-{
-	if (pxframe) { /* default value setting */
-		pxframe->buf_addr = NULL;
-		pxframe->pxmitbuf = NULL;
-
-		memset(&pxframe->attrib, 0, sizeof(struct pkt_attrib));
-
-		pxframe->frame_tag = DATA_FRAMETAG;
-
-		pxframe->pg_num = 1;
-		pxframe->agg_num = 1;
-		pxframe->ack_report = 0;
-	}
-}
-
-/*
- * Calling context:
- * 1. OS_TXENTRY
- * 2. RXENTRY (rx_thread or RX_ISR/RX_CallBack)
- *
- * If we turn on USE_RXTHREAD, then, no need for critical section.
- * Otherwise, we must use _enter/_exit critical to protect free_xmit_queue...
- *
- * Must be very, very cautious...
- */
-struct xmit_frame *rtw_alloc_xmitframe(struct xmit_priv *pxmitpriv)/* _queue *pfree_xmit_queue) */
-{
-	/*
-	 *	Please remember to use all the osdep_service api,
-	 *	and lock/unlock or _enter/_exit critical to protect
-	 *	pfree_xmit_queue
-	 */
-
-	struct xmit_frame *pxframe = NULL;
-	struct list_head *plist, *phead;
-	struct __queue *pfree_xmit_queue = &pxmitpriv->free_xmit_queue;
-
-	spin_lock_bh(&pfree_xmit_queue->lock);
-
-	if (list_empty(&pfree_xmit_queue->queue)) {
-		pxframe =  NULL;
-	} else {
-		phead = get_list_head(pfree_xmit_queue);
-
-		plist = get_next(phead);
-
-		pxframe = container_of(plist, struct xmit_frame, list);
-
-		list_del_init(&pxframe->list);
-		pxmitpriv->free_xmitframe_cnt--;
-	}
-
-	spin_unlock_bh(&pfree_xmit_queue->lock);
-
-	rtw_init_xmitframe(pxframe);
-	return pxframe;
-}
-
-struct xmit_frame *rtw_alloc_xmitframe_ext(struct xmit_priv *pxmitpriv)
-{
-	struct xmit_frame *pxframe = NULL;
-	struct list_head *plist, *phead;
-	struct __queue *queue = &pxmitpriv->free_xframe_ext_queue;
-
-	spin_lock_bh(&queue->lock);
-
-	if (list_empty(&queue->queue)) {
-		pxframe =  NULL;
-	} else {
-		phead = get_list_head(queue);
-		plist = get_next(phead);
-		pxframe = container_of(plist, struct xmit_frame, list);
-
-		list_del_init(&pxframe->list);
-		pxmitpriv->free_xframe_ext_cnt--;
-	}
-
-	spin_unlock_bh(&queue->lock);
-
-	rtw_init_xmitframe(pxframe);
-
-	return pxframe;
-}
-
-struct xmit_frame *rtw_alloc_xmitframe_once(struct xmit_priv *pxmitpriv)
-{
-	struct xmit_frame *pxframe = NULL;
-	u8 *alloc_addr;
-
-	alloc_addr = kzalloc(sizeof(*pxframe) + 4, GFP_ATOMIC);
-	if (!alloc_addr)
-		goto exit;
-
-	pxframe = (struct xmit_frame *)N_BYTE_ALIGMENT((SIZE_PTR)(alloc_addr), 4);
-	pxframe->alloc_addr = alloc_addr;
-
-	pxframe->padapter = pxmitpriv->adapter;
-	pxframe->frame_tag = NULL_FRAMETAG;
-
-	pxframe->pkt = NULL;
-
-	pxframe->buf_addr = NULL;
-	pxframe->pxmitbuf = NULL;
-
-	rtw_init_xmitframe(pxframe);
-
-exit:
-	return pxframe;
-}
-
-s32 rtw_free_xmitframe(struct xmit_priv *pxmitpriv, struct xmit_frame *pxmitframe)
-{
-	struct __queue *queue = NULL;
-	struct adapter *padapter = pxmitpriv->adapter;
-	struct sk_buff *pndis_pkt = NULL;
-
-	if (!pxmitframe)
-		return _SUCCESS;
-
-	if (pxmitframe->pkt) {
-		pndis_pkt = pxmitframe->pkt;
-		pxmitframe->pkt = NULL;
-	}
-
-	if (pxmitframe->alloc_addr) {
-		kfree(pxmitframe->alloc_addr);
-		goto check_pkt_complete;
-	}
-
-	if (pxmitframe->ext_tag == 0)
-		queue = &pxmitpriv->free_xmit_queue;
-	else if (pxmitframe->ext_tag == 1)
-		queue = &pxmitpriv->free_xframe_ext_queue;
-
-	spin_lock_bh(&queue->lock);
-
-	list_del_init(&pxmitframe->list);
-	list_add_tail(&pxmitframe->list, get_list_head(queue));
-	if (pxmitframe->ext_tag == 0)
-		pxmitpriv->free_xmitframe_cnt++;
-	else if (pxmitframe->ext_tag == 1)
-		pxmitpriv->free_xframe_ext_cnt++;
-
-	spin_unlock_bh(&queue->lock);
-
-check_pkt_complete:
-
-	if (pndis_pkt)
-		rtw_os_pkt_complete(padapter, pndis_pkt);
-
-	return _SUCCESS;
-}
-
-void rtw_free_xmitframe_queue(struct xmit_priv *pxmitpriv, struct __queue *pframequeue)
-{
-	struct list_head *plist, *phead, *tmp;
-	struct	xmit_frame	*pxmitframe;
-
-	spin_lock_bh(&pframequeue->lock);
-
-	phead = get_list_head(pframequeue);
-	list_for_each_safe(plist, tmp, phead) {
-		pxmitframe = list_entry(plist, struct xmit_frame, list);
-
-		rtw_free_xmitframe(pxmitpriv, pxmitframe);
-	}
-	spin_unlock_bh(&pframequeue->lock);
-}
-
-/*
- * Will enqueue pxmitframe to the proper queue,
- * and indicate it to xx_pending list.....
- */
-static int rtw_xmit_classifier(struct adapter *padapter, struct xmit_frame *pxmitframe)
-{
-	u8 ac_index;
-	struct sta_info *psta;
-	struct tx_servq	*ptxservq;
-	struct pkt_attrib	*pattrib = &pxmitframe->attrib;
-	struct hw_xmit	*phwxmits =  padapter->xmitpriv.hwxmits;
-
-	psta = rtw_get_stainfo(&padapter->stapriv, pattrib->ra);
-	if (pattrib->psta != psta)
-		return -ENODEV;
-
-	if (!psta)
-		return -EINVAL;
-
-	if (!(psta->state & _FW_LINKED))
-		return -ENETDOWN;
-
-	ptxservq = rtw_get_sta_pending(padapter, psta, pattrib->priority, (u8 *)(&ac_index));
-
-	if (list_empty(&ptxservq->tx_pending))
-		list_add_tail(&ptxservq->tx_pending, get_list_head(phwxmits[ac_index].sta_queue));
-
-	list_add_tail(&pxmitframe->list, get_list_head(&ptxservq->sta_pending));
-	ptxservq->qcnt++;
-	phwxmits[ac_index].accnt++;
-
-	return 0;
-}
-
-int rtw_xmitframe_enqueue(struct adapter *padapter, struct xmit_frame *pxmitframe)
-{
-	int res;
-
-	res = rtw_xmit_classifier(padapter, pxmitframe);
-	if (res)
-		return res;
-
-	return 0;
-}
-
-struct tx_servq *rtw_get_sta_pending(struct adapter *padapter, struct sta_info *psta, signed int up, u8 *ac)
-{
-	struct tx_servq *ptxservq = NULL;
-
-	switch (up) {
-	case 1:
-	case 2:
-		ptxservq = &psta->sta_xmitpriv.bk_q;
-		*(ac) = 3;
-		break;
-
-	case 4:
-	case 5:
-		ptxservq = &psta->sta_xmitpriv.vi_q;
-		*(ac) = 1;
-		break;
-
-	case 6:
-	case 7:
-		ptxservq = &psta->sta_xmitpriv.vo_q;
-		*(ac) = 0;
-		break;
-
-	case 0:
-	case 3:
-	default:
-		ptxservq = &psta->sta_xmitpriv.be_q;
-		*(ac) = 2;
-	break;
-	}
-
-	return ptxservq;
-}
-
-void rtw_free_hwxmits(struct adapter *padapter)
-{
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-	kfree(pxmitpriv->hwxmits);
-}
-
-void rtw_init_hwxmits(struct hw_xmit *phwxmit, signed int entry)
-{
-	signed int i;
-
-	for (i = 0; i < entry; i++, phwxmit++)
-		phwxmit->accnt = 0;
-}
-
-u32 rtw_get_ff_hwaddr(struct xmit_frame *pxmitframe)
-{
-	u32 addr;
-	struct pkt_attrib *pattrib = &pxmitframe->attrib;
-
-	switch (pattrib->qsel) {
-	case 0:
-	case 3:
-		addr = BE_QUEUE_INX;
-		break;
-	case 1:
-	case 2:
-		addr = BK_QUEUE_INX;
-		break;
-	case 4:
-	case 5:
-		addr = VI_QUEUE_INX;
-		break;
-	case 6:
-	case 7:
-		addr = VO_QUEUE_INX;
-		break;
-	case 0x10:
-		addr = BCN_QUEUE_INX;
-		break;
-	case 0x11:/* BC/MC in PS (HIQ) */
-		addr = HIGH_QUEUE_INX;
-		break;
-	case 0x12:
-	default:
-		addr = MGT_QUEUE_INX;
-		break;
-	}
-
-	return addr;
-}
-
-static void do_queue_select(struct adapter	*padapter, struct pkt_attrib *pattrib)
-{
-	u8 qsel;
-
-	qsel = pattrib->priority;
-
-	pattrib->qsel = qsel;
-}
-
-/*
- * The main transmit(tx) entry
- *
- * Return
- *1	enqueue
- *0	success, hardware will handle this xmit frame(packet)
- *<0	fail
- */
-s32 rtw_xmit(struct adapter *padapter, struct sk_buff **ppkt)
-{
-	static unsigned long start;
-
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct xmit_frame *pxmitframe = NULL;
-
-	int ret;
-
-	if (start == 0)
-		start = jiffies;
-
-	pxmitframe = rtw_alloc_xmitframe(pxmitpriv);
-
-	if (jiffies_to_msecs(jiffies - start) > 2000)
-		start = jiffies;
-
-	if (!pxmitframe)
-		return -1;
-
-	ret = update_attrib(padapter, *ppkt, &pxmitframe->attrib);
-	if (ret) {
-		rtw_free_xmitframe(pxmitpriv, pxmitframe);
-		return -1;
-	}
-	pxmitframe->pkt = *ppkt;
-
-	do_queue_select(padapter, &pxmitframe->attrib);
-
-	spin_lock_bh(&pxmitpriv->lock);
-	if (xmitframe_enqueue_for_sleeping_sta(padapter, pxmitframe)) {
-		spin_unlock_bh(&pxmitpriv->lock);
-		return 1;
-	}
-	spin_unlock_bh(&pxmitpriv->lock);
-
-	/* pre_xmitframe */
-	if (!rtw_hal_xmit(padapter, pxmitframe))
-		return 1;
-
-	return 0;
-}
-
-#define RTW_HIQ_FILTER_ALLOW_ALL 0
-#define RTW_HIQ_FILTER_ALLOW_SPECIAL 1
-#define RTW_HIQ_FILTER_DENY_ALL 2
-
-inline bool xmitframe_hiq_filter(struct xmit_frame *xmitframe)
-{
-	bool allow = false;
-	struct adapter *adapter = xmitframe->padapter;
-	struct registry_priv *registry = &adapter->registrypriv;
-
-	if (registry->hiq_filter == RTW_HIQ_FILTER_ALLOW_SPECIAL) {
-		struct pkt_attrib *attrib = &xmitframe->attrib;
-
-		if (attrib->ether_type == ETH_P_ARP ||
-		    attrib->ether_type == ETH_P_PAE ||
-		    attrib->dhcp_pkt
-		)
-			allow = true;
-
-	} else if (registry->hiq_filter == RTW_HIQ_FILTER_ALLOW_ALL)
-		allow = true;
-	else if (registry->hiq_filter == RTW_HIQ_FILTER_DENY_ALL) {
-	} else {
-		WARN_ON(1);
-	}
-
-	return allow;
-}
-
-signed int xmitframe_enqueue_for_sleeping_sta(struct adapter *padapter, struct xmit_frame *pxmitframe)
-{
-	signed int ret = false;
-	struct sta_info *psta = NULL;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct pkt_attrib *pattrib = &pxmitframe->attrib;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	signed int bmcst = is_multicast_ether_addr(pattrib->ra);
-	bool update_tim = false;
-
-	if (!check_fwstate(pmlmepriv, WIFI_AP_STATE))
-		return ret;
-	psta = rtw_get_stainfo(&padapter->stapriv, pattrib->ra);
-	if (pattrib->psta != psta)
-		return false;
-
-	if (!psta)
-		return false;
-
-	if (!(psta->state & _FW_LINKED))
-		return false;
-
-	if (pattrib->triggered == 1) {
-		if (bmcst && xmitframe_hiq_filter(pxmitframe))
-			pattrib->qsel = 0x11;/* HIQ */
-
-		return ret;
-	}
-
-	if (bmcst) {
-		spin_lock_bh(&psta->sleep_q.lock);
-
-		if (pstapriv->sta_dz_bitmap) { /* if anyone sta is in ps mode */
-			/* pattrib->qsel = 0x11;HIQ */
-
-			list_del_init(&pxmitframe->list);
-
-			list_add_tail(&pxmitframe->list, get_list_head(&psta->sleep_q));
-
-			psta->sleepq_len++;
-
-			if (!(pstapriv->tim_bitmap & BIT(0)))
-				update_tim = true;
-
-			pstapriv->tim_bitmap |= BIT(0);
-			pstapriv->sta_dz_bitmap |= BIT(0);
-
-			if (update_tim)
-				update_beacon(padapter, WLAN_EID_TIM, true);
-			else
-				chk_bmc_sleepq_cmd(padapter);
-
-			ret = true;
-		}
-
-		spin_unlock_bh(&psta->sleep_q.lock);
-
-		return ret;
-	}
-
-	spin_lock_bh(&psta->sleep_q.lock);
-
-	if (psta->state & WIFI_SLEEP_STATE) {
-		u8 wmmps_ac = 0;
-
-		if (pstapriv->sta_dz_bitmap & BIT(psta->aid)) {
-			list_del_init(&pxmitframe->list);
-
-			list_add_tail(&pxmitframe->list, get_list_head(&psta->sleep_q));
-
-			psta->sleepq_len++;
-
-			switch (pattrib->priority) {
-			case 1:
-			case 2:
-				wmmps_ac = psta->uapsd_bk & BIT(0);
-				break;
-			case 4:
-			case 5:
-				wmmps_ac = psta->uapsd_vi & BIT(0);
-				break;
-			case 6:
-			case 7:
-				wmmps_ac = psta->uapsd_vo & BIT(0);
-				break;
-			case 0:
-			case 3:
-			default:
-				wmmps_ac = psta->uapsd_be & BIT(0);
-				break;
-			}
-
-			if (wmmps_ac)
-				psta->sleepq_ac_len++;
-
-			if (((psta->has_legacy_ac) && (!wmmps_ac)) || ((!psta->has_legacy_ac) && (wmmps_ac))) {
-				if (!(pstapriv->tim_bitmap & BIT(psta->aid)))
-					update_tim = true;
-
-				pstapriv->tim_bitmap |= BIT(psta->aid);
-
-				if (update_tim)
-					/* update BCN for TIM IE */
-					update_beacon(padapter, WLAN_EID_TIM, true);
-			}
-
-			ret = true;
-		}
-	}
-
-	spin_unlock_bh(&psta->sleep_q.lock);
-
-	return ret;
-}
-
-static void dequeue_xmitframes_to_sleeping_queue(struct adapter *padapter,
-						 struct sta_info *psta,
-						 struct __queue *pframequeue)
-{
-	signed int ret;
-	struct list_head *plist, *phead, *tmp;
-	u8 ac_index;
-	struct tx_servq	*ptxservq;
-	struct pkt_attrib	*pattrib;
-	struct xmit_frame	*pxmitframe;
-	struct hw_xmit *phwxmits =  padapter->xmitpriv.hwxmits;
-
-	phead = get_list_head(pframequeue);
-	list_for_each_safe(plist, tmp, phead) {
-		pxmitframe = list_entry(plist, struct xmit_frame, list);
-
-		pattrib = &pxmitframe->attrib;
-
-		pattrib->triggered = 0;
-
-		ret = xmitframe_enqueue_for_sleeping_sta(padapter, pxmitframe);
-
-		if (true == ret) {
-			ptxservq = rtw_get_sta_pending(padapter, psta, pattrib->priority, (u8 *)(&ac_index));
-
-			ptxservq->qcnt--;
-			phwxmits[ac_index].accnt--;
-		} else {
-		}
-	}
-}
-
-void stop_sta_xmit(struct adapter *padapter, struct sta_info *psta)
-{
-	struct sta_info *psta_bmc;
-	struct sta_xmit_priv *pstaxmitpriv;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-	pstaxmitpriv = &psta->sta_xmitpriv;
-
-	/* for BC/MC Frames */
-	psta_bmc = rtw_get_bcmc_stainfo(padapter);
-
-	spin_lock_bh(&pxmitpriv->lock);
-
-	psta->state |= WIFI_SLEEP_STATE;
-
-	pstapriv->sta_dz_bitmap |= BIT(psta->aid);
-
-	dequeue_xmitframes_to_sleeping_queue(padapter, psta, &pstaxmitpriv->vo_q.sta_pending);
-	list_del_init(&pstaxmitpriv->vo_q.tx_pending);
-
-	dequeue_xmitframes_to_sleeping_queue(padapter, psta, &pstaxmitpriv->vi_q.sta_pending);
-	list_del_init(&pstaxmitpriv->vi_q.tx_pending);
-
-	dequeue_xmitframes_to_sleeping_queue(padapter, psta, &pstaxmitpriv->be_q.sta_pending);
-	list_del_init(&pstaxmitpriv->be_q.tx_pending);
-
-	dequeue_xmitframes_to_sleeping_queue(padapter, psta, &pstaxmitpriv->bk_q.sta_pending);
-	list_del_init(&pstaxmitpriv->bk_q.tx_pending);
-
-	/* for BC/MC Frames */
-	pstaxmitpriv = &psta_bmc->sta_xmitpriv;
-	dequeue_xmitframes_to_sleeping_queue(padapter, psta_bmc, &pstaxmitpriv->be_q.sta_pending);
-	list_del_init(&pstaxmitpriv->be_q.tx_pending);
-
-	spin_unlock_bh(&pxmitpriv->lock);
-}
-
-void wakeup_sta_to_xmit(struct adapter *padapter, struct sta_info *psta)
-{
-	u8 update_mask = 0, wmmps_ac = 0;
-	struct sta_info *psta_bmc;
-	struct list_head *xmitframe_plist, *xmitframe_phead, *tmp;
-	struct xmit_frame *pxmitframe = NULL;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-	psta_bmc = rtw_get_bcmc_stainfo(padapter);
-
-	spin_lock_bh(&pxmitpriv->lock);
-
-	xmitframe_phead = get_list_head(&psta->sleep_q);
-	list_for_each_safe(xmitframe_plist, tmp, xmitframe_phead) {
-		pxmitframe = list_entry(xmitframe_plist, struct xmit_frame,
-					list);
-
-		list_del_init(&pxmitframe->list);
-
-		switch (pxmitframe->attrib.priority) {
-		case 1:
-		case 2:
-			wmmps_ac = psta->uapsd_bk & BIT(1);
-			break;
-		case 4:
-		case 5:
-			wmmps_ac = psta->uapsd_vi & BIT(1);
-			break;
-		case 6:
-		case 7:
-			wmmps_ac = psta->uapsd_vo & BIT(1);
-			break;
-		case 0:
-		case 3:
-		default:
-			wmmps_ac = psta->uapsd_be & BIT(1);
-			break;
-		}
-
-		psta->sleepq_len--;
-		if (psta->sleepq_len > 0)
-			pxmitframe->attrib.mdata = 1;
-		else
-			pxmitframe->attrib.mdata = 0;
-
-		if (wmmps_ac) {
-			psta->sleepq_ac_len--;
-			if (psta->sleepq_ac_len > 0) {
-				pxmitframe->attrib.mdata = 1;
-				pxmitframe->attrib.eosp = 0;
-			} else {
-				pxmitframe->attrib.mdata = 0;
-				pxmitframe->attrib.eosp = 1;
-			}
-		}
-
-		pxmitframe->attrib.triggered = 1;
-
-		rtw_hal_xmitframe_enqueue(padapter, pxmitframe);
-	}
-
-	if (psta->sleepq_len == 0) {
-		if (pstapriv->tim_bitmap & BIT(psta->aid))
-			update_mask = BIT(0);
-
-		pstapriv->tim_bitmap &= ~BIT(psta->aid);
-
-		if (psta->state & WIFI_SLEEP_STATE)
-			psta->state ^= WIFI_SLEEP_STATE;
-
-		if (psta->state & WIFI_STA_ALIVE_CHK_STATE) {
-			psta->expire_to = pstapriv->expire_to;
-			psta->state ^= WIFI_STA_ALIVE_CHK_STATE;
-		}
-
-		pstapriv->sta_dz_bitmap &= ~BIT(psta->aid);
-	}
-
-	/* for BC/MC Frames */
-	if (!psta_bmc)
-		goto _exit;
-
-	if ((pstapriv->sta_dz_bitmap & 0xfffe) == 0x0) { /* no any sta in ps mode */
-		xmitframe_phead = get_list_head(&psta_bmc->sleep_q);
-		list_for_each_safe(xmitframe_plist, tmp, xmitframe_phead) {
-			pxmitframe = list_entry(xmitframe_plist,
-						struct xmit_frame, list);
-
-			list_del_init(&pxmitframe->list);
-
-			psta_bmc->sleepq_len--;
-			if (psta_bmc->sleepq_len > 0)
-				pxmitframe->attrib.mdata = 1;
-			else
-				pxmitframe->attrib.mdata = 0;
-
-			pxmitframe->attrib.triggered = 1;
-			rtw_hal_xmitframe_enqueue(padapter, pxmitframe);
-		}
-
-		if (psta_bmc->sleepq_len == 0) {
-			if (pstapriv->tim_bitmap & BIT(0))
-				update_mask |= BIT(1);
-
-			pstapriv->tim_bitmap &= ~BIT(0);
-			pstapriv->sta_dz_bitmap &= ~BIT(0);
-		}
-	}
-
-_exit:
-
-	spin_unlock_bh(&pxmitpriv->lock);
-
-	if (update_mask)
-		update_beacon(padapter, WLAN_EID_TIM, true);
-}
-
-void xmit_delivery_enabled_frames(struct adapter *padapter, struct sta_info *psta)
-{
-	u8 wmmps_ac = 0;
-	struct list_head *xmitframe_plist, *xmitframe_phead, *tmp;
-	struct xmit_frame *pxmitframe = NULL;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-	spin_lock_bh(&pxmitpriv->lock);
-
-	xmitframe_phead = get_list_head(&psta->sleep_q);
-	list_for_each_safe(xmitframe_plist, tmp, xmitframe_phead) {
-		pxmitframe = list_entry(xmitframe_plist, struct xmit_frame,
-					list);
-
-		switch (pxmitframe->attrib.priority) {
-		case 1:
-		case 2:
-			wmmps_ac = psta->uapsd_bk & BIT(1);
-			break;
-		case 4:
-		case 5:
-			wmmps_ac = psta->uapsd_vi & BIT(1);
-			break;
-		case 6:
-		case 7:
-			wmmps_ac = psta->uapsd_vo & BIT(1);
-			break;
-		case 0:
-		case 3:
-		default:
-			wmmps_ac = psta->uapsd_be & BIT(1);
-			break;
-		}
-
-		if (!wmmps_ac)
-			continue;
-
-		list_del_init(&pxmitframe->list);
-
-		psta->sleepq_len--;
-		psta->sleepq_ac_len--;
-
-		if (psta->sleepq_ac_len > 0) {
-			pxmitframe->attrib.mdata = 1;
-			pxmitframe->attrib.eosp = 0;
-		} else {
-			pxmitframe->attrib.mdata = 0;
-			pxmitframe->attrib.eosp = 1;
-		}
-
-		pxmitframe->attrib.triggered = 1;
-		rtw_hal_xmitframe_enqueue(padapter, pxmitframe);
-
-		if ((psta->sleepq_ac_len == 0) && (!psta->has_legacy_ac) && (wmmps_ac)) {
-			pstapriv->tim_bitmap &= ~BIT(psta->aid);
-
-			update_beacon(padapter, WLAN_EID_TIM, true);
-		}
-	}
-
-	spin_unlock_bh(&pxmitpriv->lock);
-}
-
-void enqueue_pending_xmitbuf(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf)
-{
-	struct __queue *pqueue;
-	struct adapter *pri_adapter = pxmitpriv->adapter;
-
-	pqueue = &pxmitpriv->pending_xmitbuf_queue;
-
-	spin_lock_bh(&pqueue->lock);
-	list_del_init(&pxmitbuf->list);
-	list_add_tail(&pxmitbuf->list, get_list_head(pqueue));
-	spin_unlock_bh(&pqueue->lock);
-
-	complete(&pri_adapter->xmitpriv.xmit_comp);
-}
-
-void enqueue_pending_xmitbuf_to_head(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf)
-{
-	struct __queue *pqueue;
-
-	pqueue = &pxmitpriv->pending_xmitbuf_queue;
-
-	spin_lock_bh(&pqueue->lock);
-	list_del_init(&pxmitbuf->list);
-	list_add(&pxmitbuf->list, get_list_head(pqueue));
-	spin_unlock_bh(&pqueue->lock);
-}
-
-struct xmit_buf *dequeue_pending_xmitbuf(struct xmit_priv *pxmitpriv)
-{
-	struct xmit_buf *pxmitbuf;
-	struct __queue *pqueue;
-
-	pxmitbuf = NULL;
-	pqueue = &pxmitpriv->pending_xmitbuf_queue;
-
-	spin_lock_bh(&pqueue->lock);
-
-	if (!list_empty(&pqueue->queue)) {
-		struct list_head *plist, *phead;
-
-		phead = get_list_head(pqueue);
-		plist = get_next(phead);
-		pxmitbuf = container_of(plist, struct xmit_buf, list);
-		list_del_init(&pxmitbuf->list);
-	}
-
-	spin_unlock_bh(&pqueue->lock);
-
-	return pxmitbuf;
-}
-
-struct xmit_buf *dequeue_pending_xmitbuf_under_survey(struct xmit_priv *pxmitpriv)
-{
-	struct xmit_buf *pxmitbuf;
-	struct __queue *pqueue;
-
-	pxmitbuf = NULL;
-	pqueue = &pxmitpriv->pending_xmitbuf_queue;
-
-	spin_lock_bh(&pqueue->lock);
-
-	if (!list_empty(&pqueue->queue)) {
-		struct list_head *plist, *phead;
-		u8 type;
-
-		phead = get_list_head(pqueue);
-		plist = phead;
-		do {
-			plist = get_next(plist);
-			if (plist == phead)
-				break;
-
-			pxmitbuf = container_of(plist, struct xmit_buf, list);
-
-			type = GetFrameSubType(pxmitbuf->pbuf + TXDESC_OFFSET);
-
-			if ((type == WIFI_PROBEREQ) ||
-				(type == WIFI_DATA_NULL) ||
-				(type == WIFI_QOS_DATA_NULL)) {
-				list_del_init(&pxmitbuf->list);
-				break;
-			}
-			pxmitbuf = NULL;
-		} while (1);
-	}
-
-	spin_unlock_bh(&pqueue->lock);
-
-	return pxmitbuf;
-}
-
-signed int check_pending_xmitbuf(struct xmit_priv *pxmitpriv)
-{
-	struct __queue *pqueue;
-	signed int	ret = false;
-
-	pqueue = &pxmitpriv->pending_xmitbuf_queue;
-
-	spin_lock_bh(&pqueue->lock);
-
-	if (!list_empty(&pqueue->queue))
-		ret = true;
-
-	spin_unlock_bh(&pqueue->lock);
-
-	return ret;
-}
-
-int rtw_xmit_thread(void *context)
-{
-	s32 err;
-	struct adapter *padapter;
-
-	err = _SUCCESS;
-	padapter = context;
-
-	allow_signal(SIGTERM);
-
-	do {
-		err = rtw_hal_xmit_thread_handler(padapter);
-		flush_signals_thread();
-	} while (err == _SUCCESS);
-
-	complete(&padapter->xmitpriv.terminate_xmitthread_comp);
-
-	return 0;
-}
-
-void rtw_sctx_init(struct submit_ctx *sctx, int timeout_ms)
-{
-	sctx->timeout_ms = timeout_ms;
-	sctx->submit_time = jiffies;
-	init_completion(&sctx->done);
-	sctx->status = RTW_SCTX_SUBMITTED;
-}
-
-int rtw_sctx_wait(struct submit_ctx *sctx)
-{
-	int ret = _FAIL;
-	unsigned long expire;
-	int status = 0;
-
-	expire = sctx->timeout_ms ? msecs_to_jiffies(sctx->timeout_ms) : MAX_SCHEDULE_TIMEOUT;
-	if (!wait_for_completion_timeout(&sctx->done, expire))
-		/* timeout, do something?? */
-		status = RTW_SCTX_DONE_TIMEOUT;
-	else
-		status = sctx->status;
-
-	if (status == RTW_SCTX_DONE_SUCCESS)
-		ret = _SUCCESS;
-
-	return ret;
-}
-
-void rtw_sctx_done_err(struct submit_ctx **sctx, int status)
-{
-	if (*sctx) {
-		(*sctx)->status = status;
-		complete(&((*sctx)->done));
-		*sctx = NULL;
-	}
-}
-
-void rtw_sctx_done(struct submit_ctx **sctx)
-{
-	rtw_sctx_done_err(sctx, RTW_SCTX_DONE_SUCCESS);
-}
-
-int rtw_ack_tx_wait(struct xmit_priv *pxmitpriv, u32 timeout_ms)
-{
-	struct submit_ctx *pack_tx_ops = &pxmitpriv->ack_tx_ops;
-
-	pack_tx_ops->submit_time = jiffies;
-	pack_tx_ops->timeout_ms = timeout_ms;
-	pack_tx_ops->status = RTW_SCTX_SUBMITTED;
-
-	return rtw_sctx_wait(pack_tx_ops);
-}
-
-void rtw_ack_tx_done(struct xmit_priv *pxmitpriv, int status)
-{
-	struct submit_ctx *pack_tx_ops = &pxmitpriv->ack_tx_ops;
-
-	if (pxmitpriv->ack_tx)
-		rtw_sctx_done_err(&pack_tx_ops, status);
-}
diff --git a/drivers/staging/rtl8723bs/hal/Hal8723BReg.h b/drivers/staging/rtl8723bs/hal/Hal8723BReg.h
deleted file mode 100644
index 0b327a70aa15..000000000000
--- a/drivers/staging/rtl8723bs/hal/Hal8723BReg.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*****************************************************************************
- *Copyright(c) 2009,  RealTEK Technology Inc. All Right Reserved.
- *
- * Module:	__INC_HAL8723BREG_H
- *
- *
- * Note:	1. Define Mac register address and corresponding bit mask map
- *
- *
- * Export:	Constants, macro, functions(API), global variables(None).
- *
- * Abbrev:
- *
- * History:
- *	Data		Who		Remark
- *
- *****************************************************************************/
-#ifndef __INC_HAL8723BREG_H
-#define __INC_HAL8723BREG_H
-
-/*  */
-/*  */
-/*	0x0100h ~ 0x01FFh	MACTOP General Configuration */
-/*  */
-/*  */
-#define REG_C2HEVT_CMD_SEQ_88XX			0x01A1
-#define REG_C2HEVT_CMD_LEN_88XX			0x01AE
-
-/*  */
-/*  */
-/*	0x0200h ~ 0x027Fh	TXDMA Configuration */
-/*  */
-/*  */
-#define REG_DWBCN1_CTRL_8723B			0x0228
-
-/*  spec version 11 */
-/*  */
-/*  */
-/*	0x0400h ~ 0x047Fh	Protocol Configuration */
-/*  */
-/*  */
-#define REG_FWHW_TXQ_CTRL_8723B			0x0420
-#define REG_ARFR0_8723B				0x0444
-#define REG_ARFR1_8723B				0x044C
-#define REG_CCK_CHECK_8723B			0x0454
-#define REG_AMPDU_MAX_TIME_8723B		0x0456
-
-#define REG_AMPDU_MAX_LENGTH_8723B		0x0458
-#define REG_DATA_SC_8723B			0x0483
-#define REG_MAX_AGGR_NUM_8723B			0x04CA
-
-/*  */
-/*  */
-/*	0x0500h ~ 0x05FFh	EDCA Configuration */
-/*  */
-/*  */
-#define REG_PIFS_8723B				0x0512
-
-/*	0x0600h ~ 0x07FFh	WMAC Configuration */
-#define REG_RX_PKT_LIMIT_8723B			0x060C
-
-#define REG_TRXPTCL_CTL_8723B			0x0668
-
-#endif /*  #ifndef __INC_HAL8723BREG_H */
diff --git a/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.c b/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.c
deleted file mode 100644
index 0613beaa3752..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.c
+++ /dev/null
@@ -1,2595 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include "Mp_Precomp.h"
-
-/*  Global variables, these are static variables */
-static struct coex_dm_8723b_1ant GLCoexDm8723b1Ant;
-static struct coex_dm_8723b_1ant *pCoexDm = &GLCoexDm8723b1Ant;
-static struct coex_sta_8723b_1ant GLCoexSta8723b1Ant;
-static struct coex_sta_8723b_1ant *pCoexSta = &GLCoexSta8723b1Ant;
-
-/*  local function proto type if needed */
-/*  local function start with halbtc8723b1ant_ */
-static u8 halbtc8723b1ant_BtRssiState(
-	u8 levelNum, u8 rssiThresh, u8 rssiThresh1
-)
-{
-	s32 btRssi = 0;
-	u8 btRssiState = pCoexSta->preBtRssiState;
-
-	btRssi = pCoexSta->btRssi;
-
-	if (levelNum == 2) {
-		if (
-			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_LOW) ||
-			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_LOW)
-		) {
-			if (btRssi >= (rssiThresh + BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT))
-
-				btRssiState = BTC_RSSI_STATE_HIGH;
-			else
-				btRssiState = BTC_RSSI_STATE_STAY_LOW;
-		} else {
-			if (btRssi < rssiThresh)
-				btRssiState = BTC_RSSI_STATE_LOW;
-			else
-				btRssiState = BTC_RSSI_STATE_STAY_HIGH;
-		}
-	} else if (levelNum == 3) {
-		if (rssiThresh > rssiThresh1)
-			return pCoexSta->preBtRssiState;
-
-		if (
-			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_LOW) ||
-			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_LOW)
-		) {
-			if (btRssi >= (rssiThresh + BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT))
-				btRssiState = BTC_RSSI_STATE_MEDIUM;
-			else
-				btRssiState = BTC_RSSI_STATE_STAY_LOW;
-		} else if (
-			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_MEDIUM) ||
-			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_MEDIUM)
-		) {
-			if (btRssi >= (rssiThresh1 + BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT))
-				btRssiState = BTC_RSSI_STATE_HIGH;
-			else if (btRssi < rssiThresh)
-				btRssiState = BTC_RSSI_STATE_LOW;
-			else
-				btRssiState = BTC_RSSI_STATE_STAY_MEDIUM;
-		} else {
-			if (btRssi < rssiThresh1)
-				btRssiState = BTC_RSSI_STATE_MEDIUM;
-			else
-				btRssiState = BTC_RSSI_STATE_STAY_HIGH;
-		}
-	}
-
-	pCoexSta->preBtRssiState = btRssiState;
-
-	return btRssiState;
-}
-
-static void halbtc8723b1ant_UpdateRaMask(
-	struct btc_coexist *pBtCoexist, bool bForceExec, u32 disRateMask
-)
-{
-	pCoexDm->curRaMask = disRateMask;
-
-	if (bForceExec || (pCoexDm->preRaMask != pCoexDm->curRaMask))
-		pBtCoexist->fBtcSet(
-			pBtCoexist,
-			BTC_SET_ACT_UPDATE_RAMASK,
-			&pCoexDm->curRaMask
-		);
-	pCoexDm->preRaMask = pCoexDm->curRaMask;
-}
-
-static void halbtc8723b1ant_AutoRateFallbackRetry(
-	struct btc_coexist *pBtCoexist, bool bForceExec, u8 type
-)
-{
-	bool bWifiUnderBMode = false;
-
-	pCoexDm->curArfrType = type;
-
-	if (bForceExec || (pCoexDm->preArfrType != pCoexDm->curArfrType)) {
-		switch (pCoexDm->curArfrType) {
-		case 0:	/*  normal mode */
-			pBtCoexist->fBtcWrite4Byte(
-				pBtCoexist, 0x430, pCoexDm->backupArfrCnt1
-			);
-			pBtCoexist->fBtcWrite4Byte(
-				pBtCoexist, 0x434, pCoexDm->backupArfrCnt2
-			);
-			break;
-		case 1:
-			pBtCoexist->fBtcGet(
-				pBtCoexist, BTC_GET_BL_WIFI_UNDER_B_MODE, &bWifiUnderBMode
-			);
-			if (bWifiUnderBMode) {
-				pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x430, 0x0);
-				pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x434, 0x01010101);
-			} else {
-				pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x430, 0x0);
-				pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x434, 0x04030201);
-			}
-			break;
-		default:
-			break;
-		}
-	}
-
-	pCoexDm->preArfrType = pCoexDm->curArfrType;
-}
-
-static void halbtc8723b1ant_RetryLimit(
-	struct btc_coexist *pBtCoexist, bool bForceExec, u8 type
-)
-{
-	pCoexDm->curRetryLimitType = type;
-
-	if (
-		bForceExec ||
-		(pCoexDm->preRetryLimitType != pCoexDm->curRetryLimitType)
-	) {
-		switch (pCoexDm->curRetryLimitType) {
-		case 0:	/*  normal mode */
-			pBtCoexist->fBtcWrite2Byte(
-				pBtCoexist, 0x42a, pCoexDm->backupRetryLimit
-			);
-			break;
-		case 1:	/*  retry limit =8 */
-			pBtCoexist->fBtcWrite2Byte(pBtCoexist, 0x42a, 0x0808);
-			break;
-		default:
-			break;
-		}
-	}
-
-	pCoexDm->preRetryLimitType = pCoexDm->curRetryLimitType;
-}
-
-static void halbtc8723b1ant_AmpduMaxTime(
-	struct btc_coexist *pBtCoexist, bool bForceExec, u8 type
-)
-{
-	pCoexDm->curAmpduTimeType = type;
-
-	if (
-		bForceExec || (pCoexDm->preAmpduTimeType != pCoexDm->curAmpduTimeType)
-	) {
-		switch (pCoexDm->curAmpduTimeType) {
-		case 0:	/*  normal mode */
-			pBtCoexist->fBtcWrite1Byte(
-				pBtCoexist, 0x456, pCoexDm->backupAmpduMaxTime
-			);
-			break;
-		case 1:	/*  AMPDU timw = 0x38 * 32us */
-			pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x456, 0x38);
-			break;
-		default:
-			break;
-		}
-	}
-
-	pCoexDm->preAmpduTimeType = pCoexDm->curAmpduTimeType;
-}
-
-static void halbtc8723b1ant_LimitedTx(
-	struct btc_coexist *pBtCoexist,
-	bool bForceExec,
-	u8 raMaskType,
-	u8 arfrType,
-	u8 retryLimitType,
-	u8 ampduTimeType
-)
-{
-	switch (raMaskType) {
-	case 0:	/*  normal mode */
-		halbtc8723b1ant_UpdateRaMask(pBtCoexist, bForceExec, 0x0);
-		break;
-	case 1:	/*  disable cck 1/2 */
-		halbtc8723b1ant_UpdateRaMask(pBtCoexist, bForceExec, 0x00000003);
-		break;
-	case 2:	/*  disable cck 1/2/5.5, ofdm 6/9/12/18/24, mcs 0/1/2/3/4 */
-		halbtc8723b1ant_UpdateRaMask(pBtCoexist, bForceExec, 0x0001f1f7);
-		break;
-	default:
-		break;
-	}
-
-	halbtc8723b1ant_AutoRateFallbackRetry(pBtCoexist, bForceExec, arfrType);
-	halbtc8723b1ant_RetryLimit(pBtCoexist, bForceExec, retryLimitType);
-	halbtc8723b1ant_AmpduMaxTime(pBtCoexist, bForceExec, ampduTimeType);
-}
-
-static void halbtc8723b1ant_LimitedRx(
-	struct btc_coexist *pBtCoexist,
-	bool bForceExec,
-	bool bRejApAggPkt,
-	bool bBtCtrlAggBufSize,
-	u8 aggBufSize
-)
-{
-	bool bRejectRxAgg = bRejApAggPkt;
-	bool bBtCtrlRxAggSize = bBtCtrlAggBufSize;
-	u8 rxAggSize = aggBufSize;
-
-	/*  */
-	/*	Rx Aggregation related setting */
-	/*  */
-	pBtCoexist->fBtcSet(
-		pBtCoexist, BTC_SET_BL_TO_REJ_AP_AGG_PKT, &bRejectRxAgg
-	);
-	/*  decide BT control aggregation buf size or not */
-	pBtCoexist->fBtcSet(
-		pBtCoexist, BTC_SET_BL_BT_CTRL_AGG_SIZE, &bBtCtrlRxAggSize
-	);
-	/*  aggregation buf size, only work when BT control Rx aggregation size. */
-	pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_U1_AGG_BUF_SIZE, &rxAggSize);
-	/*  real update aggregation setting */
-	pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_AGGREGATE_CTRL, NULL);
-}
-
-static void halbtc8723b1ant_QueryBtInfo(struct btc_coexist *pBtCoexist)
-{
-	u8 H2C_Parameter[1] = {0};
-
-	pCoexSta->bC2hBtInfoReqSent = true;
-
-	H2C_Parameter[0] |= BIT(0);	/*  trigger */
-
-	pBtCoexist->fBtcFillH2c(pBtCoexist, 0x61, 1, H2C_Parameter);
-}
-
-static void halbtc8723b1ant_MonitorBtCtr(struct btc_coexist *pBtCoexist)
-{
-	u32 regHPTxRx, regLPTxRx, u4Tmp;
-	u32 regHPTx = 0, regHPRx = 0, regLPTx = 0, regLPRx = 0;
-	static u8 NumOfBtCounterChk;
-
-       /* to avoid 0x76e[3] = 1 (WLAN_Act control by PTA) during IPS */
-	/* if (! (pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x76e) & 0x8)) */
-
-	if (pCoexSta->bUnderIps) {
-		pCoexSta->highPriorityTx = 65535;
-		pCoexSta->highPriorityRx = 65535;
-		pCoexSta->lowPriorityTx = 65535;
-		pCoexSta->lowPriorityRx = 65535;
-		return;
-	}
-
-	regHPTxRx = 0x770;
-	regLPTxRx = 0x774;
-
-	u4Tmp = pBtCoexist->fBtcRead4Byte(pBtCoexist, regHPTxRx);
-	regHPTx = u4Tmp & bMaskLWord;
-	regHPRx = (u4Tmp & bMaskHWord) >> 16;
-
-	u4Tmp = pBtCoexist->fBtcRead4Byte(pBtCoexist, regLPTxRx);
-	regLPTx = u4Tmp & bMaskLWord;
-	regLPRx = (u4Tmp & bMaskHWord) >> 16;
-
-	pCoexSta->highPriorityTx = regHPTx;
-	pCoexSta->highPriorityRx = regHPRx;
-	pCoexSta->lowPriorityTx = regLPTx;
-	pCoexSta->lowPriorityRx = regLPRx;
-
-	if ((pCoexSta->lowPriorityTx >= 1050) && (!pCoexSta->bC2hBtInquiryPage))
-		pCoexSta->popEventCnt++;
-
-	/*  reset counter */
-	pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0xc);
-
-	if ((regHPTx == 0) && (regHPRx == 0) && (regLPTx == 0) && (regLPRx == 0)) {
-		NumOfBtCounterChk++;
-		if (NumOfBtCounterChk >= 3) {
-			halbtc8723b1ant_QueryBtInfo(pBtCoexist);
-			NumOfBtCounterChk = 0;
-		}
-	}
-}
-
-static void halbtc8723b1ant_MonitorWiFiCtr(struct btc_coexist *pBtCoexist)
-{
-	s32	wifiRssi = 0;
-	bool bWifiBusy = false, bWifiUnderBMode = false;
-	static u8 nCCKLockCounter;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_S4_WIFI_RSSI, &wifiRssi);
-	pBtCoexist->fBtcGet(
-		pBtCoexist, BTC_GET_BL_WIFI_UNDER_B_MODE, &bWifiUnderBMode
-	);
-
-	if (pCoexSta->bUnderIps) {
-		pCoexSta->nCRCOK_CCK = 0;
-		pCoexSta->nCRCOK_11g = 0;
-		pCoexSta->nCRCOK_11n = 0;
-		pCoexSta->nCRCOK_11nAgg = 0;
-
-		pCoexSta->nCRCErr_CCK = 0;
-		pCoexSta->nCRCErr_11g = 0;
-		pCoexSta->nCRCErr_11n = 0;
-		pCoexSta->nCRCErr_11nAgg = 0;
-	} else {
-		pCoexSta->nCRCOK_CCK	= pBtCoexist->fBtcRead4Byte(pBtCoexist, 0xf88);
-		pCoexSta->nCRCOK_11g	= pBtCoexist->fBtcRead2Byte(pBtCoexist, 0xf94);
-		pCoexSta->nCRCOK_11n	= pBtCoexist->fBtcRead2Byte(pBtCoexist, 0xf90);
-		pCoexSta->nCRCOK_11nAgg = pBtCoexist->fBtcRead2Byte(pBtCoexist, 0xfb8);
-
-		pCoexSta->nCRCErr_CCK	 = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0xf84);
-		pCoexSta->nCRCErr_11g	 = pBtCoexist->fBtcRead2Byte(pBtCoexist, 0xf96);
-		pCoexSta->nCRCErr_11n	 = pBtCoexist->fBtcRead2Byte(pBtCoexist, 0xf92);
-		pCoexSta->nCRCErr_11nAgg = pBtCoexist->fBtcRead2Byte(pBtCoexist, 0xfba);
-	}
-
-	/* reset counter */
-	pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0xf16, 0x1, 0x1);
-	pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0xf16, 0x1, 0x0);
-
-	if (bWifiBusy && (wifiRssi >= 30) && !bWifiUnderBMode) {
-		if (
-			(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_ACL_BUSY) ||
-			(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY) ||
-			(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_SCO_BUSY)
-		) {
-			if (
-				pCoexSta->nCRCOK_CCK > (
-					pCoexSta->nCRCOK_11g +
-					pCoexSta->nCRCOK_11n +
-					pCoexSta->nCRCOK_11nAgg
-				)
-			) {
-				if (nCCKLockCounter < 5)
-					nCCKLockCounter++;
-			} else {
-				if (nCCKLockCounter > 0)
-					nCCKLockCounter--;
-			}
-
-		} else {
-			if (nCCKLockCounter > 0)
-				nCCKLockCounter--;
-		}
-	} else {
-		if (nCCKLockCounter > 0)
-			nCCKLockCounter--;
-	}
-
-	if (!pCoexSta->bPreCCKLock) {
-
-		if (nCCKLockCounter >= 5)
-			pCoexSta->bCCKLock = true;
-		else
-			pCoexSta->bCCKLock = false;
-	} else {
-		if (nCCKLockCounter == 0)
-			pCoexSta->bCCKLock = false;
-		else
-			pCoexSta->bCCKLock = true;
-	}
-
-	pCoexSta->bPreCCKLock =  pCoexSta->bCCKLock;
-}
-
-static bool halbtc8723b1ant_IsWifiStatusChanged(struct btc_coexist *pBtCoexist)
-{
-	static bool	bPreWifiBusy, bPreUnder4way, bPreBtHsOn;
-	bool bWifiBusy = false, bUnder4way = false, bBtHsOn = false;
-	bool bWifiConnected = false;
-
-	pBtCoexist->fBtcGet(
-		pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected
-	);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
-	pBtCoexist->fBtcGet(
-		pBtCoexist, BTC_GET_BL_WIFI_4_WAY_PROGRESS, &bUnder4way
-	);
-
-	if (bWifiConnected) {
-		if (bWifiBusy != bPreWifiBusy) {
-			bPreWifiBusy = bWifiBusy;
-			return true;
-		}
-
-		if (bUnder4way != bPreUnder4way) {
-			bPreUnder4way = bUnder4way;
-			return true;
-		}
-
-		if (bBtHsOn != bPreBtHsOn) {
-			bPreBtHsOn = bBtHsOn;
-			return true;
-		}
-	}
-
-	return false;
-}
-
-static void halbtc8723b1ant_UpdateBtLinkInfo(struct btc_coexist *pBtCoexist)
-{
-	struct btc_bt_link_info *pBtLinkInfo = &pBtCoexist->btLinkInfo;
-	bool bBtHsOn = false;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
-
-	pBtLinkInfo->bBtLinkExist = pCoexSta->bBtLinkExist;
-	pBtLinkInfo->bScoExist = pCoexSta->bScoExist;
-	pBtLinkInfo->bA2dpExist = pCoexSta->bA2dpExist;
-	pBtLinkInfo->bPanExist = pCoexSta->bPanExist;
-	pBtLinkInfo->bHidExist = pCoexSta->bHidExist;
-
-	/*  work around for HS mode. */
-	if (bBtHsOn) {
-		pBtLinkInfo->bPanExist = true;
-		pBtLinkInfo->bBtLinkExist = true;
-	}
-
-	/*  check if Sco only */
-	if (
-		pBtLinkInfo->bScoExist &&
-		!pBtLinkInfo->bA2dpExist &&
-		!pBtLinkInfo->bPanExist &&
-		!pBtLinkInfo->bHidExist
-	)
-		pBtLinkInfo->bScoOnly = true;
-	else
-		pBtLinkInfo->bScoOnly = false;
-
-	/*  check if A2dp only */
-	if (
-		!pBtLinkInfo->bScoExist &&
-		pBtLinkInfo->bA2dpExist &&
-		!pBtLinkInfo->bPanExist &&
-		!pBtLinkInfo->bHidExist
-	)
-		pBtLinkInfo->bA2dpOnly = true;
-	else
-		pBtLinkInfo->bA2dpOnly = false;
-
-	/*  check if Pan only */
-	if (
-		!pBtLinkInfo->bScoExist &&
-		!pBtLinkInfo->bA2dpExist &&
-		pBtLinkInfo->bPanExist &&
-		!pBtLinkInfo->bHidExist
-	)
-		pBtLinkInfo->bPanOnly = true;
-	else
-		pBtLinkInfo->bPanOnly = false;
-
-	/*  check if Hid only */
-	if (
-		!pBtLinkInfo->bScoExist &&
-		!pBtLinkInfo->bA2dpExist &&
-		!pBtLinkInfo->bPanExist &&
-		pBtLinkInfo->bHidExist
-	)
-		pBtLinkInfo->bHidOnly = true;
-	else
-		pBtLinkInfo->bHidOnly = false;
-}
-
-static u8 halbtc8723b1ant_ActionAlgorithm(struct btc_coexist *pBtCoexist)
-{
-	struct btc_bt_link_info *pBtLinkInfo = &pBtCoexist->btLinkInfo;
-	bool bBtHsOn = false;
-	u8 algorithm = BT_8723B_1ANT_COEX_ALGO_UNDEFINED;
-	u8 numOfDiffProfile = 0;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
-
-	if (!pBtLinkInfo->bBtLinkExist)
-		return algorithm;
-
-	if (pBtLinkInfo->bScoExist)
-		numOfDiffProfile++;
-	if (pBtLinkInfo->bHidExist)
-		numOfDiffProfile++;
-	if (pBtLinkInfo->bPanExist)
-		numOfDiffProfile++;
-	if (pBtLinkInfo->bA2dpExist)
-		numOfDiffProfile++;
-
-	if (numOfDiffProfile == 1) {
-		if (pBtLinkInfo->bScoExist) {
-			algorithm = BT_8723B_1ANT_COEX_ALGO_SCO;
-		} else {
-			if (pBtLinkInfo->bHidExist) {
-				algorithm = BT_8723B_1ANT_COEX_ALGO_HID;
-			} else if (pBtLinkInfo->bA2dpExist) {
-				algorithm = BT_8723B_1ANT_COEX_ALGO_A2DP;
-			} else if (pBtLinkInfo->bPanExist) {
-				if (bBtHsOn)
-					algorithm = BT_8723B_1ANT_COEX_ALGO_PANHS;
-				else
-					algorithm = BT_8723B_1ANT_COEX_ALGO_PANEDR;
-			}
-		}
-	} else if (numOfDiffProfile == 2) {
-		if (pBtLinkInfo->bScoExist) {
-			if (pBtLinkInfo->bHidExist) {
-				algorithm = BT_8723B_1ANT_COEX_ALGO_HID;
-			} else if (pBtLinkInfo->bA2dpExist) {
-				algorithm = BT_8723B_1ANT_COEX_ALGO_SCO;
-			} else if (pBtLinkInfo->bPanExist) {
-				if (bBtHsOn)
-					algorithm = BT_8723B_1ANT_COEX_ALGO_SCO;
-				else
-					algorithm = BT_8723B_1ANT_COEX_ALGO_PANEDR_HID;
-			}
-		} else {
-			if (pBtLinkInfo->bHidExist && pBtLinkInfo->bA2dpExist) {
-				algorithm = BT_8723B_1ANT_COEX_ALGO_HID_A2DP;
-			} else if (pBtLinkInfo->bHidExist && pBtLinkInfo->bPanExist) {
-				if (bBtHsOn)
-					algorithm = BT_8723B_1ANT_COEX_ALGO_HID_A2DP;
-				else
-					algorithm = BT_8723B_1ANT_COEX_ALGO_PANEDR_HID;
-			} else if (pBtLinkInfo->bPanExist && pBtLinkInfo->bA2dpExist) {
-				if (bBtHsOn)
-					algorithm = BT_8723B_1ANT_COEX_ALGO_A2DP_PANHS;
-				else
-					algorithm = BT_8723B_1ANT_COEX_ALGO_PANEDR_A2DP;
-			}
-		}
-	} else if (numOfDiffProfile == 3) {
-		if (pBtLinkInfo->bScoExist) {
-			if (pBtLinkInfo->bHidExist && pBtLinkInfo->bA2dpExist) {
-				algorithm = BT_8723B_1ANT_COEX_ALGO_HID;
-			} else if (
-				pBtLinkInfo->bHidExist && pBtLinkInfo->bPanExist
-			) {
-				if (bBtHsOn)
-					algorithm = BT_8723B_1ANT_COEX_ALGO_HID_A2DP;
-				else
-					algorithm = BT_8723B_1ANT_COEX_ALGO_PANEDR_HID;
-			} else if (pBtLinkInfo->bPanExist && pBtLinkInfo->bA2dpExist) {
-				if (bBtHsOn)
-					algorithm = BT_8723B_1ANT_COEX_ALGO_SCO;
-				else
-					algorithm = BT_8723B_1ANT_COEX_ALGO_PANEDR_HID;
-			}
-		} else {
-			if (
-				pBtLinkInfo->bHidExist &&
-				pBtLinkInfo->bPanExist &&
-				pBtLinkInfo->bA2dpExist
-			) {
-				if (bBtHsOn)
-					algorithm = BT_8723B_1ANT_COEX_ALGO_HID_A2DP;
-				else
-					algorithm = BT_8723B_1ANT_COEX_ALGO_HID_A2DP_PANEDR;
-			}
-		}
-	} else if (numOfDiffProfile >= 3) {
-		if (pBtLinkInfo->bScoExist) {
-			if (
-				pBtLinkInfo->bHidExist &&
-				pBtLinkInfo->bPanExist &&
-				pBtLinkInfo->bA2dpExist
-			) {
-				if (!bBtHsOn)
-					algorithm = BT_8723B_1ANT_COEX_ALGO_PANEDR_HID;
-
-			}
-		}
-	}
-
-	return algorithm;
-}
-
-static void halbtc8723b1ant_SetSwPenaltyTxRateAdaptive(
-	struct btc_coexist *pBtCoexist, bool bLowPenaltyRa
-)
-{
-	u8 H2C_Parameter[6] = {0};
-
-	H2C_Parameter[0] = 0x6;	/*  opCode, 0x6 = Retry_Penalty */
-
-	if (bLowPenaltyRa) {
-		H2C_Parameter[1] |= BIT(0);
-		H2C_Parameter[2] = 0x00;  /* normal rate except MCS7/6/5, OFDM54/48/36 */
-		H2C_Parameter[3] = 0xf7;  /* MCS7 or OFDM54 */
-		H2C_Parameter[4] = 0xf8;  /* MCS6 or OFDM48 */
-		H2C_Parameter[5] = 0xf9;	/* MCS5 or OFDM36 */
-	}
-
-	pBtCoexist->fBtcFillH2c(pBtCoexist, 0x69, 6, H2C_Parameter);
-}
-
-static void halbtc8723b1ant_LowPenaltyRa(
-	struct btc_coexist *pBtCoexist, bool bForceExec, bool bLowPenaltyRa
-)
-{
-	pCoexDm->bCurLowPenaltyRa = bLowPenaltyRa;
-
-	if (!bForceExec) {
-		if (pCoexDm->bPreLowPenaltyRa == pCoexDm->bCurLowPenaltyRa)
-			return;
-	}
-	halbtc8723b1ant_SetSwPenaltyTxRateAdaptive(
-		pBtCoexist, pCoexDm->bCurLowPenaltyRa
-	);
-
-	pCoexDm->bPreLowPenaltyRa = pCoexDm->bCurLowPenaltyRa;
-}
-
-static void halbtc8723b1ant_SetCoexTable(
-	struct btc_coexist *pBtCoexist,
-	u32 val0x6c0,
-	u32 val0x6c4,
-	u32 val0x6c8,
-	u8 val0x6cc
-)
-{
-	pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x6c0, val0x6c0);
-
-	pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x6c4, val0x6c4);
-
-	pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x6c8, val0x6c8);
-
-	pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x6cc, val0x6cc);
-}
-
-static void halbtc8723b1ant_CoexTable(
-	struct btc_coexist *pBtCoexist,
-	bool bForceExec,
-	u32 val0x6c0,
-	u32 val0x6c4,
-	u32 val0x6c8,
-	u8 val0x6cc
-)
-{
-	pCoexDm->curVal0x6c0 = val0x6c0;
-	pCoexDm->curVal0x6c4 = val0x6c4;
-	pCoexDm->curVal0x6c8 = val0x6c8;
-	pCoexDm->curVal0x6cc = val0x6cc;
-
-	if (!bForceExec) {
-		if (
-			(pCoexDm->preVal0x6c0 == pCoexDm->curVal0x6c0) &&
-		    (pCoexDm->preVal0x6c4 == pCoexDm->curVal0x6c4) &&
-		    (pCoexDm->preVal0x6c8 == pCoexDm->curVal0x6c8) &&
-		    (pCoexDm->preVal0x6cc == pCoexDm->curVal0x6cc)
-		)
-			return;
-	}
-
-	halbtc8723b1ant_SetCoexTable(
-		pBtCoexist, val0x6c0, val0x6c4, val0x6c8, val0x6cc
-	);
-
-	pCoexDm->preVal0x6c0 = pCoexDm->curVal0x6c0;
-	pCoexDm->preVal0x6c4 = pCoexDm->curVal0x6c4;
-	pCoexDm->preVal0x6c8 = pCoexDm->curVal0x6c8;
-	pCoexDm->preVal0x6cc = pCoexDm->curVal0x6cc;
-}
-
-static void halbtc8723b1ant_CoexTableWithType(
-	struct btc_coexist *pBtCoexist, bool bForceExec, u8 type
-)
-{
-	static const u32 table[8][2] = {
-		{0x55555555, 0x55555555},
-		{0x55555555, 0x5a5a5a5a},
-		{0x5a5a5a5a, 0x5a5a5a5a},
-		{0xaaaa5555, 0xaaaa5a5a},
-		{0x55555555, 0xaaaa5a5a},
-		{0x5a5a5a5a, 0xaaaa5a5a},
-		{0x55555555, 0xaaaaaaaa},
-		{0xaaaaaaaa, 0xaaaaaaaa}
-	};
-
-	pCoexSta->nCoexTableType = type;
-
-	if (type < 8)
-		halbtc8723b1ant_CoexTable(pBtCoexist, bForceExec, table[type][0],
-					  table[type][1], 0xffffff, 0x3);
-}
-
-static void halbtc8723b1ant_SetFwIgnoreWlanAct(
-	struct btc_coexist *pBtCoexist, bool bEnable
-)
-{
-	u8 H2C_Parameter[1] = {0};
-
-	if (bEnable)
-		H2C_Parameter[0] |= BIT(0); /* function enable */
-
-	pBtCoexist->fBtcFillH2c(pBtCoexist, 0x63, 1, H2C_Parameter);
-}
-
-static void halbtc8723b1ant_IgnoreWlanAct(
-	struct btc_coexist *pBtCoexist, bool bForceExec, bool bEnable
-)
-{
-	pCoexDm->bCurIgnoreWlanAct = bEnable;
-
-	if (!bForceExec) {
-		if (pCoexDm->bPreIgnoreWlanAct == pCoexDm->bCurIgnoreWlanAct)
-			return;
-	}
-	halbtc8723b1ant_SetFwIgnoreWlanAct(pBtCoexist, bEnable);
-
-	pCoexDm->bPreIgnoreWlanAct = pCoexDm->bCurIgnoreWlanAct;
-}
-
-static void halbtc8723b1ant_SetLpsRpwm(
-	struct btc_coexist *pBtCoexist, u8 lpsVal, u8 rpwmVal
-)
-{
-	u8 lps = lpsVal;
-	u8 rpwm = rpwmVal;
-
-	pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_U1_LPS_VAL, &lps);
-	pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_U1_RPWM_VAL, &rpwm);
-}
-
-static void halbtc8723b1ant_LpsRpwm(
-	struct btc_coexist *pBtCoexist, bool bForceExec, u8 lpsVal, u8 rpwmVal
-)
-{
-	pCoexDm->curLps = lpsVal;
-	pCoexDm->curRpwm = rpwmVal;
-
-	if (!bForceExec) {
-		if (
-			(pCoexDm->preLps == pCoexDm->curLps) &&
-			(pCoexDm->preRpwm == pCoexDm->curRpwm)
-		) {
-			return;
-		}
-	}
-	halbtc8723b1ant_SetLpsRpwm(pBtCoexist, lpsVal, rpwmVal);
-
-	pCoexDm->preLps = pCoexDm->curLps;
-	pCoexDm->preRpwm = pCoexDm->curRpwm;
-}
-
-static void halbtc8723b1ant_SwMechanism(
-	struct btc_coexist *pBtCoexist, bool bLowPenaltyRA
-)
-{
-	halbtc8723b1ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, bLowPenaltyRA);
-}
-
-static void halbtc8723b1ant_SetAntPath(
-	struct btc_coexist *pBtCoexist, u8 antPosType, bool bInitHwCfg, bool bWifiOff
-)
-{
-	struct btc_board_info *pBoardInfo = &pBtCoexist->boardInfo;
-	u32 fwVer = 0, u4Tmp = 0, cntBtCalChk = 0;
-	bool bPgExtSwitch = false;
-	bool bUseExtSwitch = false;
-	bool bIsInMpMode = false;
-	u8 H2C_Parameter[2] = {0}, u1Tmp = 0;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_EXT_SWITCH, &bPgExtSwitch);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer); /*  [31:16]=fw ver, [15:0]=fw sub ver */
-
-	if ((fwVer > 0 && fwVer < 0xc0000) || bPgExtSwitch)
-		bUseExtSwitch = true;
-
-	if (bInitHwCfg) {
-		pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x780); /* WiFi TRx Mask on */
-		pBtCoexist->fBtcSetBtReg(pBtCoexist, BTC_BT_REG_RF, 0x3c, 0x15); /* BT TRx Mask on */
-
-		if (fwVer >= 0x180000) {
-			/* Use H2C to set GNT_BT to HIGH */
-			H2C_Parameter[0] = 1;
-			pBtCoexist->fBtcFillH2c(pBtCoexist, 0x6E, 1, H2C_Parameter);
-		} else { /*  set grant_bt to high */
-			pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x765, 0x18);
-		}
-
-		/* set wlan_act control by PTA */
-		pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0x4);
-
-		pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1); /* BT select s0/s1 is controlled by WiFi */
-
-		pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x39, 0x8, 0x1);
-		pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x974, 0xff);
-		pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x944, 0x3, 0x3);
-		pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x930, 0x77);
-	} else if (bWifiOff) {
-		if (fwVer >= 0x180000) {
-			/* Use H2C to set GNT_BT to HIGH */
-			H2C_Parameter[0] = 1;
-			pBtCoexist->fBtcFillH2c(pBtCoexist, 0x6E, 1, H2C_Parameter);
-		} else { /*  set grant_bt to high */
-			pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x765, 0x18);
-		}
-
-		/* set wlan_act to always low */
-		pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0x4);
-
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_IS_IN_MP_MODE, &bIsInMpMode);
-		if (!bIsInMpMode)
-			pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x0); /* BT select s0/s1 is controlled by BT */
-		else
-			pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1); /* BT select s0/s1 is controlled by WiFi */
-
-		/*  0x4c[24:23]= 00, Set Antenna control by BT_RFE_CTRL	BT Vendor 0xac = 0xf002 */
-		u4Tmp = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x4c);
-		u4Tmp &= ~BIT(23);
-		u4Tmp &= ~BIT(24);
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x4c, u4Tmp);
-	} else {
-		/* Use H2C to set GNT_BT to LOW */
-		if (fwVer >= 0x180000) {
-			if (pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x765) != 0) {
-				H2C_Parameter[0] = 0;
-				pBtCoexist->fBtcFillH2c(pBtCoexist, 0x6E, 1, H2C_Parameter);
-			}
-		} else {
-			/*  BT calibration check */
-			while (cntBtCalChk <= 20) {
-				u1Tmp = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x49d);
-				cntBtCalChk++;
-
-				if (u1Tmp & BIT(0))
-					mdelay(50);
-				else
-					break;
-			}
-
-			/*  set grant_bt to PTA */
-			pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x765, 0x0);
-		}
-
-		if (pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x76e) != 0xc)
-			/* set wlan_act control by PTA */
-			pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0xc);
-	}
-
-	if (bUseExtSwitch) {
-		if (bInitHwCfg) {
-			/*  0x4c[23]= 0, 0x4c[24]= 1  Antenna control by WL/BT */
-			u4Tmp = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x4c);
-			u4Tmp &= ~BIT(23);
-			u4Tmp |= BIT(24);
-			pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x4c, u4Tmp);
-
-			pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0); /*  fixed internal switch S1->WiFi, S0->BT */
-
-			if (pBoardInfo->btdmAntPos == BTC_ANTENNA_AT_MAIN_PORT) {
-				/* tell firmware "no antenna inverse" */
-				H2C_Parameter[0] = 0;
-				H2C_Parameter[1] = 1;  /* ext switch type */
-				pBtCoexist->fBtcFillH2c(pBtCoexist, 0x65, 2, H2C_Parameter);
-			} else {
-				/* tell firmware "antenna inverse" */
-				H2C_Parameter[0] = 1;
-				H2C_Parameter[1] = 1;  /* ext switch type */
-				pBtCoexist->fBtcFillH2c(pBtCoexist, 0x65, 2, H2C_Parameter);
-			}
-		}
-
-		/*  ext switch setting */
-		switch (antPosType) {
-		case BTC_ANT_PATH_WIFI:
-			if (pBoardInfo->btdmAntPos == BTC_ANTENNA_AT_MAIN_PORT)
-				pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x92c, 0x3, 0x1);
-			else
-				pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x92c, 0x3, 0x2);
-			break;
-		case BTC_ANT_PATH_BT:
-			if (pBoardInfo->btdmAntPos == BTC_ANTENNA_AT_MAIN_PORT)
-				pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x92c, 0x3, 0x2);
-			else
-				pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x92c, 0x3, 0x1);
-			break;
-		default:
-		case BTC_ANT_PATH_PTA:
-			if (pBoardInfo->btdmAntPos == BTC_ANTENNA_AT_MAIN_PORT)
-				pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x92c, 0x3, 0x1);
-			else
-				pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x92c, 0x3, 0x2);
-			break;
-		}
-
-	} else {
-		if (bInitHwCfg) {
-			/*  0x4c[23]= 1, 0x4c[24]= 0  Antenna control by 0x64 */
-			u4Tmp = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x4c);
-			u4Tmp |= BIT(23);
-			u4Tmp &= ~BIT(24);
-			pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x4c, u4Tmp);
-
-			/* Fix Ext switch Main->S1, Aux->S0 */
-			pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x64, 0x1, 0x0);
-
-			if (pBoardInfo->btdmAntPos == BTC_ANTENNA_AT_MAIN_PORT) {
-
-				/* tell firmware "no antenna inverse" */
-				H2C_Parameter[0] = 0;
-				H2C_Parameter[1] = 0;  /* internal switch type */
-				pBtCoexist->fBtcFillH2c(pBtCoexist, 0x65, 2, H2C_Parameter);
-			} else {
-
-				/* tell firmware "antenna inverse" */
-				H2C_Parameter[0] = 1;
-				H2C_Parameter[1] = 0;  /* internal switch type */
-				pBtCoexist->fBtcFillH2c(pBtCoexist, 0x65, 2, H2C_Parameter);
-			}
-		}
-
-		/*  internal switch setting */
-		switch (antPosType) {
-		case BTC_ANT_PATH_WIFI:
-			if (pBoardInfo->btdmAntPos == BTC_ANTENNA_AT_MAIN_PORT)
-				pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0);
-			else
-				pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x280);
-			break;
-		case BTC_ANT_PATH_BT:
-			if (pBoardInfo->btdmAntPos == BTC_ANTENNA_AT_MAIN_PORT)
-				pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x280);
-			else
-				pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0);
-			break;
-		default:
-		case BTC_ANT_PATH_PTA:
-			if (pBoardInfo->btdmAntPos == BTC_ANTENNA_AT_MAIN_PORT)
-				pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x200);
-			else
-				pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x80);
-			break;
-		}
-	}
-}
-
-static void halbtc8723b1ant_SetFwPstdma(
-	struct btc_coexist *pBtCoexist, u8 byte1, u8 byte2, u8 byte3, u8 byte4, u8 byte5
-)
-{
-	u8 H2C_Parameter[5] = {0};
-	u8 realByte1 = byte1, realByte5 = byte5;
-	bool bApEnable = false;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_AP_MODE_ENABLE, &bApEnable);
-
-	if (bApEnable) {
-		if (byte1 & BIT(4) && !(byte1 & BIT(5))) {
-			realByte1 &= ~BIT(4);
-			realByte1 |= BIT(5);
-
-			realByte5 |= BIT(5);
-			realByte5 &= ~BIT(6);
-		}
-	}
-
-	H2C_Parameter[0] = realByte1;
-	H2C_Parameter[1] = byte2;
-	H2C_Parameter[2] = byte3;
-	H2C_Parameter[3] = byte4;
-	H2C_Parameter[4] = realByte5;
-
-	pCoexDm->psTdmaPara[0] = realByte1;
-	pCoexDm->psTdmaPara[1] = byte2;
-	pCoexDm->psTdmaPara[2] = byte3;
-	pCoexDm->psTdmaPara[3] = byte4;
-	pCoexDm->psTdmaPara[4] = realByte5;
-
-	pBtCoexist->fBtcFillH2c(pBtCoexist, 0x60, 5, H2C_Parameter);
-}
-
-static void halbtc8723b1ant_PsTdma(
-	struct btc_coexist *pBtCoexist, bool bForceExec, bool bTurnOn, u8 type
-)
-{
-	struct btc_bt_link_info *pBtLinkInfo = &pBtCoexist->btLinkInfo;
-	bool bWifiBusy = false;
-	u8 rssiAdjustVal = 0;
-	u8 psTdmaByte4Val = 0x50, psTdmaByte0Val = 0x51, psTdmaByte3Val =  0x10;
-	s8 nWiFiDurationAdjust = 0x0;
-	/* u32 fwVer = 0; */
-
-	pCoexDm->bCurPsTdmaOn = bTurnOn;
-	pCoexDm->curPsTdma = type;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy);
-
-	if (!bForceExec) {
-		if (
-			(pCoexDm->bPrePsTdmaOn == pCoexDm->bCurPsTdmaOn) &&
-			(pCoexDm->prePsTdma == pCoexDm->curPsTdma)
-		)
-			return;
-	}
-
-	if (pCoexSta->nScanAPNum <= 5)
-		nWiFiDurationAdjust = 5;
-	else if  (pCoexSta->nScanAPNum >= 40)
-		nWiFiDurationAdjust = -15;
-	else if  (pCoexSta->nScanAPNum >= 20)
-		nWiFiDurationAdjust = -10;
-
-	if (!pCoexSta->bForceLpsOn) { /* only for A2DP-only case 1/2/9/11 */
-		psTdmaByte0Val = 0x61;  /* no null-pkt */
-		psTdmaByte3Val = 0x11; /*  no tx-pause at BT-slot */
-		psTdmaByte4Val = 0x10; /*  0x778 = d/1 toggle */
-	}
-
-	if (bTurnOn) {
-		if (pBtLinkInfo->bSlaveRole)
-			psTdmaByte4Val = psTdmaByte4Val | 0x1;  /* 0x778 = 0x1 at wifi slot (no blocking BT Low-Pri pkts) */
-
-		switch (type) {
-		default:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x51, 0x1a, 0x1a, 0x0, psTdmaByte4Val
-			);
-			break;
-		case 1:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist,
-				psTdmaByte0Val,
-				0x3a + nWiFiDurationAdjust,
-				0x03,
-				psTdmaByte3Val,
-				psTdmaByte4Val
-			);
-			break;
-		case 2:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist,
-				psTdmaByte0Val,
-				0x2d + nWiFiDurationAdjust,
-				0x03,
-				psTdmaByte3Val,
-				psTdmaByte4Val
-			);
-			break;
-		case 3:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x51, 0x1d, 0x1d, 0x0, 0x10
-			);
-			break;
-		case 4:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x93, 0x15, 0x3, 0x14, 0x0
-			);
-			break;
-		case 5:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x61, 0x15, 0x3, 0x11, 0x10
-			);
-			break;
-		case 6:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x61, 0x20, 0x3, 0x11, 0x11
-			);
-			break;
-		case 7:
-			halbtc8723b1ant_SetFwPstdma(pBtCoexist, 0x13, 0xc, 0x5, 0x0, 0x0);
-			break;
-		case 8:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x93, 0x25, 0x3, 0x10, 0x0
-			);
-			break;
-		case 9:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist,
-				psTdmaByte0Val,
-				0x21,
-				0x3,
-				psTdmaByte3Val,
-				psTdmaByte4Val
-			);
-			break;
-		case 10:
-			halbtc8723b1ant_SetFwPstdma(pBtCoexist, 0x13, 0xa, 0xa, 0x0, 0x40);
-			break;
-		case 11:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist,
-				psTdmaByte0Val,
-				0x21,
-				0x03,
-				psTdmaByte3Val,
-				psTdmaByte4Val
-			);
-			break;
-		case 12:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x51, 0x0a, 0x0a, 0x0, 0x50
-			);
-			break;
-		case 13:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x51, 0x12, 0x12, 0x0, 0x10
-			);
-			break;
-		case 14:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x51, 0x21, 0x3, 0x10, psTdmaByte4Val
-			);
-			break;
-		case 15:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x13, 0xa, 0x3, 0x8, 0x0
-			);
-			break;
-		case 16:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x93, 0x15, 0x3, 0x10, 0x0
-			);
-			break;
-		case 18:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x93, 0x25, 0x3, 0x10, 0x0
-			);
-			break;
-		case 20:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x61, 0x3f, 0x03, 0x11, 0x10
-
-			);
-			break;
-		case 21:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x61, 0x25, 0x03, 0x11, 0x11
-			);
-			break;
-		case 22:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x61, 0x25, 0x03, 0x11, 0x10
-			);
-			break;
-		case 23:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0xe3, 0x25, 0x3, 0x31, 0x18
-			);
-			break;
-		case 24:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0xe3, 0x15, 0x3, 0x31, 0x18
-			);
-			break;
-		case 25:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0xe3, 0xa, 0x3, 0x31, 0x18
-			);
-			break;
-		case 26:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0xe3, 0xa, 0x3, 0x31, 0x18
-			);
-			break;
-		case 27:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0xe3, 0x25, 0x3, 0x31, 0x98
-			);
-			break;
-		case 28:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x69, 0x25, 0x3, 0x31, 0x0
-			);
-			break;
-		case 29:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0xab, 0x1a, 0x1a, 0x1, 0x10
-			);
-			break;
-		case 30:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x51, 0x30, 0x3, 0x10, 0x10
-			);
-			break;
-		case 31:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0xd3, 0x1a, 0x1a, 0x0, 0x58
-			);
-			break;
-		case 32:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x61, 0x35, 0x3, 0x11, 0x11
-			);
-			break;
-		case 33:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0xa3, 0x25, 0x3, 0x30, 0x90
-			);
-			break;
-		case 34:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x53, 0x1a, 0x1a, 0x0, 0x10
-			);
-			break;
-		case 35:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x63, 0x1a, 0x1a, 0x0, 0x10
-			);
-			break;
-		case 36:
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0xd3, 0x12, 0x3, 0x14, 0x50
-			);
-			break;
-		case 40: /*  SoftAP only with no sta associated, BT disable , TDMA mode for power saving */
-			/* here softap mode screen off will cost 70-80mA for phone */
-			halbtc8723b1ant_SetFwPstdma(
-				pBtCoexist, 0x23, 0x18, 0x00, 0x10, 0x24
-			);
-			break;
-		}
-	} else {
-
-		/*  disable PS tdma */
-		switch (type) {
-		case 8: /* PTA Control */
-			halbtc8723b1ant_SetFwPstdma(pBtCoexist, 0x8, 0x0, 0x0, 0x0, 0x0);
-			halbtc8723b1ant_SetAntPath(
-				pBtCoexist, BTC_ANT_PATH_PTA, false, false
-			);
-			break;
-		case 0:
-		default:  /* Software control, Antenna at BT side */
-			halbtc8723b1ant_SetFwPstdma(pBtCoexist, 0x0, 0x0, 0x0, 0x0, 0x0);
-			halbtc8723b1ant_SetAntPath(
-				pBtCoexist, BTC_ANT_PATH_BT, false, false
-			);
-			break;
-		case 9:   /* Software control, Antenna at WiFi side */
-			halbtc8723b1ant_SetFwPstdma(pBtCoexist, 0x0, 0x0, 0x0, 0x0, 0x0);
-			halbtc8723b1ant_SetAntPath(
-				pBtCoexist, BTC_ANT_PATH_WIFI, false, false
-			);
-			break;
-		}
-	}
-
-	rssiAdjustVal = 0;
-	pBtCoexist->fBtcSet(
-		pBtCoexist, BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE, &rssiAdjustVal
-	);
-
-	/*  update pre state */
-	pCoexDm->bPrePsTdmaOn = pCoexDm->bCurPsTdmaOn;
-	pCoexDm->prePsTdma = pCoexDm->curPsTdma;
-}
-
-static bool halbtc8723b1ant_IsCommonAction(struct btc_coexist *pBtCoexist)
-{
-	bool bCommon = false, bWifiConnected = false, bWifiBusy = false;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy);
-
-	if (
-		!bWifiConnected &&
-		pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE
-	) {
-		/* halbtc8723b1ant_SwMechanism(pBtCoexist, false); */
-
-		bCommon = true;
-	} else if (
-		bWifiConnected &&
-		(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE)
-	) {
-		/* halbtc8723b1ant_SwMechanism(pBtCoexist, false); */
-
-		bCommon = true;
-	} else if (
-		!bWifiConnected &&
-		(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE)
-	) {
-		/* halbtc8723b1ant_SwMechanism(pBtCoexist, false); */
-
-		bCommon = true;
-	} else if (
-		bWifiConnected &&
-		(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE)
-	) {
-		/* halbtc8723b1ant_SwMechanism(pBtCoexist, false); */
-
-		bCommon = true;
-	} else if (
-		!bWifiConnected &&
-		(pCoexDm->btStatus != BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE)
-	) {
-		/* halbtc8723b1ant_SwMechanism(pBtCoexist, false); */
-
-		bCommon = true;
-	} else {
-		bCommon = false;
-	}
-
-	return bCommon;
-}
-
-static void halbtc8723b1ant_TdmaDurationAdjustForAcl(
-	struct btc_coexist *pBtCoexist, u8 wifiStatus
-)
-{
-	static s32 up, dn, m, n, WaitCount;
-	s32 result;   /* 0: no change, +1: increase WiFi duration, -1: decrease WiFi duration */
-	u8 retryCount = 0, btInfoExt;
-
-	if (
-		(wifiStatus == BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN) ||
-		(wifiStatus == BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SCAN) ||
-		(wifiStatus == BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT)
-	) {
-		if (
-			pCoexDm->curPsTdma != 1 &&
-			pCoexDm->curPsTdma != 2 &&
-			pCoexDm->curPsTdma != 3 &&
-			pCoexDm->curPsTdma != 9
-		) {
-			halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9);
-			pCoexDm->psTdmaDuAdjType = 9;
-
-			up = 0;
-			dn = 0;
-			m = 1;
-			n = 3;
-			result = 0;
-			WaitCount = 0;
-		}
-		return;
-	}
-
-	if (!pCoexDm->bAutoTdmaAdjust) {
-		pCoexDm->bAutoTdmaAdjust = true;
-
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2);
-		pCoexDm->psTdmaDuAdjType = 2;
-		/*  */
-		up = 0;
-		dn = 0;
-		m = 1;
-		n = 3;
-		result = 0;
-		WaitCount = 0;
-	} else {
-		/* acquire the BT TRx retry count from BT_Info byte2 */
-		retryCount = pCoexSta->btRetryCnt;
-		btInfoExt = pCoexSta->btInfoExt;
-
-		if (pCoexSta->lowPriorityTx > 1050 || pCoexSta->lowPriorityRx > 1250)
-			retryCount++;
-
-		result = 0;
-		WaitCount++;
-
-		if (retryCount == 0) { /*  no retry in the last 2-second duration */
-			up++;
-			dn--;
-
-			if (dn <= 0)
-				dn = 0;
-
-			if (up >= n) { /*  if 連續 n 個2秒 retry count為0, 則調寬WiFi duration */
-				WaitCount = 0;
-				n = 3;
-				up = 0;
-				dn = 0;
-				result = 1;
-			}
-		} else if (retryCount <= 3) { /*  <=3 retry in the last 2-second duration */
-			up--;
-			dn++;
-
-			if (up <= 0)
-				up = 0;
-
-			if (dn == 2) { /*  if 連續 2 個2秒 retry count< 3, 則調窄WiFi duration */
-				if (WaitCount <= 2)
-					m++; /*  避免一直在兩個level中來回 */
-				else
-					m = 1;
-
-				if (m >= 20) /* m 最大值 = 20 ' 最大120秒 recheck是否調整 WiFi duration. */
-					m = 20;
-
-				n = 3 * m;
-				up = 0;
-				dn = 0;
-				WaitCount = 0;
-				result = -1;
-			}
-		} else { /* retry count > 3, 只要1次 retry count > 3, 則調窄WiFi duration */
-			if (WaitCount == 1)
-				m++; /*  避免一直在兩個level中來回 */
-			else
-				m = 1;
-
-			if (m >= 20) /* m 最大值 = 20 ' 最大120秒 recheck是否調整 WiFi duration. */
-				m = 20;
-
-			n = 3 * m;
-			up = 0;
-			dn = 0;
-			WaitCount = 0;
-			result = -1;
-		}
-
-		if (result == -1) {
-			if (
-				BT_INFO_8723B_1ANT_A2DP_BASIC_RATE(btInfoExt) &&
-				((pCoexDm->curPsTdma == 1) || (pCoexDm->curPsTdma == 2))
-			) {
-				halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9);
-				pCoexDm->psTdmaDuAdjType = 9;
-			} else if (pCoexDm->curPsTdma == 1) {
-				halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2);
-				pCoexDm->psTdmaDuAdjType = 2;
-			} else if (pCoexDm->curPsTdma == 2) {
-				halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9);
-				pCoexDm->psTdmaDuAdjType = 9;
-			} else if (pCoexDm->curPsTdma == 9) {
-				halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 11);
-				pCoexDm->psTdmaDuAdjType = 11;
-			}
-		} else if (result == 1) {
-			if (
-				BT_INFO_8723B_1ANT_A2DP_BASIC_RATE(btInfoExt) &&
-				((pCoexDm->curPsTdma == 1) || (pCoexDm->curPsTdma == 2))
-			) {
-				halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9);
-				pCoexDm->psTdmaDuAdjType = 9;
-			} else if (pCoexDm->curPsTdma == 11) {
-				halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9);
-				pCoexDm->psTdmaDuAdjType = 9;
-			} else if (pCoexDm->curPsTdma == 9) {
-				halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 2);
-				pCoexDm->psTdmaDuAdjType = 2;
-			} else if (pCoexDm->curPsTdma == 2) {
-				halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 1);
-				pCoexDm->psTdmaDuAdjType = 1;
-			}
-		}
-
-		if (
-			pCoexDm->curPsTdma != 1 &&
-			pCoexDm->curPsTdma != 2 &&
-			pCoexDm->curPsTdma != 9 &&
-			pCoexDm->curPsTdma != 11
-		) /*  recover to previous adjust type */
-			halbtc8723b1ant_PsTdma(
-				pBtCoexist, NORMAL_EXEC, true, pCoexDm->psTdmaDuAdjType
-			);
-	}
-}
-
-static void halbtc8723b1ant_PsTdmaCheckForPowerSaveState(
-	struct btc_coexist *pBtCoexist, bool bNewPsState
-)
-{
-	u8 lpsMode = 0x0;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U1_LPS_MODE, &lpsMode);
-
-	if (lpsMode) {	/*  already under LPS state */
-		if (bNewPsState) {
-			/*  keep state under LPS, do nothing. */
-		} else { /*  will leave LPS state, turn off psTdma first */
-			halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 0);
-		}
-	} else {						/*  NO PS state */
-		if (bNewPsState) { /*  will enter LPS state, turn off psTdma first */
-			halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 0);
-		} else {
-			/*  keep state under NO PS state, do nothing. */
-		}
-	}
-}
-
-static void halbtc8723b1ant_PowerSaveState(
-	struct btc_coexist *pBtCoexist, u8 psType, u8 lpsVal, u8 rpwmVal
-)
-{
-	bool bLowPwrDisable = false;
-
-	switch (psType) {
-	case BTC_PS_WIFI_NATIVE:
-		/*  recover to original 32k low power setting */
-		bLowPwrDisable = false;
-		pBtCoexist->fBtcSet(
-			pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable
-		);
-		pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_NORMAL_LPS, NULL);
-		pCoexSta->bForceLpsOn = false;
-		break;
-	case BTC_PS_LPS_ON:
-		halbtc8723b1ant_PsTdmaCheckForPowerSaveState(pBtCoexist, true);
-		halbtc8723b1ant_LpsRpwm(pBtCoexist, NORMAL_EXEC, lpsVal, rpwmVal);
-		/*  when coex force to enter LPS, do not enter 32k low power. */
-		bLowPwrDisable = true;
-		pBtCoexist->fBtcSet(
-			pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable
-		);
-		/*  power save must executed before psTdma. */
-		pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_ENTER_LPS, NULL);
-		pCoexSta->bForceLpsOn = true;
-		break;
-	case BTC_PS_LPS_OFF:
-		halbtc8723b1ant_PsTdmaCheckForPowerSaveState(pBtCoexist, false);
-		pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_LEAVE_LPS, NULL);
-		pCoexSta->bForceLpsOn = false;
-		break;
-	default:
-		break;
-	}
-}
-
-/*  */
-/*  */
-/*	Software Coex Mechanism start */
-/*  */
-/*  */
-
-/*  */
-/*  */
-/*	Non-Software Coex Mechanism start */
-/*  */
-/*  */
-static void halbtc8723b1ant_ActionWifiMultiPort(struct btc_coexist *pBtCoexist)
-{
-	halbtc8723b1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
-
-	halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 8);
-	halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
-}
-
-static void halbtc8723b1ant_ActionHs(struct btc_coexist *pBtCoexist)
-{
-	halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 5);
-	halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
-}
-
-static void halbtc8723b1ant_ActionBtInquiry(struct btc_coexist *pBtCoexist)
-{
-	struct btc_bt_link_info *pBtLinkInfo = &pBtCoexist->btLinkInfo;
-	bool bWifiConnected = false;
-	bool bApEnable = false;
-	bool bWifiBusy = false;
-	bool bBtBusy = false;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_AP_MODE_ENABLE, &bApEnable);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy);
-	pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_TRAFFIC_BUSY, &bBtBusy);
-
-	if (!bWifiConnected && !pCoexSta->bWiFiIsHighPriTask) {
-		halbtc8723b1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 8);
-
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
-	} else if (
-		pBtLinkInfo->bScoExist ||
-		pBtLinkInfo->bHidExist ||
-		pBtLinkInfo->bA2dpExist
-	) {
-		/*  SCO/HID/A2DP busy */
-		halbtc8723b1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 32);
-
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-	} else if (pBtLinkInfo->bPanExist || bWifiBusy) {
-		halbtc8723b1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 20);
-
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-	} else {
-		halbtc8723b1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 8);
-
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
-	}
-}
-
-static void halbtc8723b1ant_ActionBtScoHidOnlyBusy(
-	struct btc_coexist *pBtCoexist, u8 wifiStatus
-)
-{
-	struct btc_bt_link_info *pBtLinkInfo = &pBtCoexist->btLinkInfo;
-	bool bWifiConnected = false;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
-
-	/*  tdma and coex table */
-
-	if (pBtLinkInfo->bScoExist) {
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 5);
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 5);
-	} else { /* HID */
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 6);
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 5);
-	}
-}
-
-static void halbtc8723b1ant_ActionWifiConnectedBtAclBusy(
-	struct btc_coexist *pBtCoexist, u8 wifiStatus
-)
-{
-	struct btc_bt_link_info *pBtLinkInfo = &pBtCoexist->btLinkInfo;
-
-	halbtc8723b1ant_BtRssiState(2, 28, 0);
-
-	if ((pCoexSta->lowPriorityRx >= 1000) && (pCoexSta->lowPriorityRx != 65535))
-		pBtLinkInfo->bSlaveRole = true;
-	else
-		pBtLinkInfo->bSlaveRole = false;
-
-	if (pBtLinkInfo->bHidOnly) { /* HID */
-		halbtc8723b1ant_ActionBtScoHidOnlyBusy(pBtCoexist, wifiStatus);
-		pCoexDm->bAutoTdmaAdjust = false;
-		return;
-	} else if (pBtLinkInfo->bA2dpOnly) { /* A2DP */
-		if (wifiStatus == BT_8723B_1ANT_WIFI_STATUS_CONNECTED_IDLE) {
-			halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 32);
-			halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-			pCoexDm->bAutoTdmaAdjust = false;
-		} else {
-			halbtc8723b1ant_TdmaDurationAdjustForAcl(pBtCoexist, wifiStatus);
-			halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-			pCoexDm->bAutoTdmaAdjust = true;
-		}
-	} else if (pBtLinkInfo->bHidExist && pBtLinkInfo->bA2dpExist) { /* HID+A2DP */
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 14);
-		pCoexDm->bAutoTdmaAdjust = false;
-
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-	} else if (
-		pBtLinkInfo->bPanOnly ||
-		(pBtLinkInfo->bHidExist && pBtLinkInfo->bPanExist)
-	) { /* PAN(OPP, FTP), HID+PAN(OPP, FTP) */
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3);
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-		pCoexDm->bAutoTdmaAdjust = false;
-	} else if (
-		(pBtLinkInfo->bA2dpExist && pBtLinkInfo->bPanExist) ||
-		(pBtLinkInfo->bHidExist && pBtLinkInfo->bA2dpExist && pBtLinkInfo->bPanExist)
-	) { /* A2DP+PAN(OPP, FTP), HID+A2DP+PAN(OPP, FTP) */
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 13);
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-		pCoexDm->bAutoTdmaAdjust = false;
-	} else {
-		/* BT no-profile busy (0x9) */
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 32);
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-		pCoexDm->bAutoTdmaAdjust = false;
-	}
-}
-
-static void halbtc8723b1ant_ActionWifiNotConnected(struct btc_coexist *pBtCoexist)
-{
-	/*  power save state */
-	halbtc8723b1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
-
-	/*  tdma and coex table */
-	halbtc8723b1ant_PsTdma(pBtCoexist, FORCE_EXEC, false, 8);
-	halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
-}
-
-static void halbtc8723b1ant_ActionWifiNotConnectedScan(
-	struct btc_coexist *pBtCoexist
-)
-{
-	struct btc_bt_link_info *pBtLinkInfo = &pBtCoexist->btLinkInfo;
-
-	halbtc8723b1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
-
-	/*  tdma and coex table */
-	if (pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_ACL_BUSY) {
-		if (pBtLinkInfo->bA2dpExist) {
-			halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 32);
-			halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-		} else if (pBtLinkInfo->bA2dpExist && pBtLinkInfo->bPanExist) {
-			halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 22);
-			halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-		} else {
-			halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 20);
-			halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-		}
-	} else if (
-		(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_SCO_BUSY) ||
-		(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY)
-	) {
-		halbtc8723b1ant_ActionBtScoHidOnlyBusy(
-			pBtCoexist, BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SCAN
-		);
-	} else {
-		/* Bryant Add */
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 8);
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
-	}
-}
-
-static void halbtc8723b1ant_ActionWifiNotConnectedAssoAuth(
-	struct btc_coexist *pBtCoexist
-)
-{
-	struct btc_bt_link_info *pBtLinkInfo = &pBtCoexist->btLinkInfo;
-
-	halbtc8723b1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
-
-	/*  tdma and coex table */
-	if (
-		(pBtLinkInfo->bScoExist) ||
-		(pBtLinkInfo->bHidExist) ||
-		(pBtLinkInfo->bA2dpExist)
-	) {
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 32);
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-	} else if (pBtLinkInfo->bPanExist) {
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 20);
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-	} else {
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 8);
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
-	}
-}
-
-static void halbtc8723b1ant_ActionWifiConnectedScan(struct btc_coexist *pBtCoexist)
-{
-	struct btc_bt_link_info *pBtLinkInfo = &pBtCoexist->btLinkInfo;
-
-	halbtc8723b1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
-
-	/*  tdma and coex table */
-	if (pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_ACL_BUSY) {
-		if (pBtLinkInfo->bA2dpExist) {
-			halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 32);
-			halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-		} else if (pBtLinkInfo->bA2dpExist && pBtLinkInfo->bPanExist) {
-			halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 22);
-			halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-		} else {
-			halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 20);
-			halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-		}
-	} else if (
-		(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_SCO_BUSY) ||
-		(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY)
-	) {
-		halbtc8723b1ant_ActionBtScoHidOnlyBusy(
-			pBtCoexist, BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SCAN
-		);
-	} else {
-		/* Bryant Add */
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 8);
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
-	}
-}
-
-static void halbtc8723b1ant_ActionWifiConnectedSpecialPacket(
-	struct btc_coexist *pBtCoexist
-)
-{
-	struct btc_bt_link_info *pBtLinkInfo = &pBtCoexist->btLinkInfo;
-
-	halbtc8723b1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
-
-	/*  tdma and coex table */
-	if (
-		(pBtLinkInfo->bScoExist) ||
-		(pBtLinkInfo->bHidExist) ||
-		(pBtLinkInfo->bA2dpExist)
-	) {
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 32);
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-	} else if (pBtLinkInfo->bPanExist) {
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 20);
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 4);
-	} else {
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 8);
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
-	}
-}
-
-static void halbtc8723b1ant_ActionWifiConnected(struct btc_coexist *pBtCoexist)
-{
-	bool bWifiBusy = false;
-	bool bScan = false, bLink = false, bRoam = false;
-	bool bUnder4way = false, bApEnable = false;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_4_WAY_PROGRESS, &bUnder4way);
-	if (bUnder4way) {
-		halbtc8723b1ant_ActionWifiConnectedSpecialPacket(pBtCoexist);
-		return;
-	}
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_SCAN, &bScan);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_LINK, &bLink);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_ROAM, &bRoam);
-	if (bScan || bLink || bRoam) {
-		if (bScan)
-			halbtc8723b1ant_ActionWifiConnectedScan(pBtCoexist);
-		else
-			halbtc8723b1ant_ActionWifiConnectedSpecialPacket(pBtCoexist);
-		return;
-	}
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_AP_MODE_ENABLE, &bApEnable);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy);
-
-	/*  power save state */
-	if (
-		!bApEnable &&
-		pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_ACL_BUSY &&
-		!pBtCoexist->btLinkInfo.bHidOnly
-	) {
-		if (pBtCoexist->btLinkInfo.bA2dpOnly) { /* A2DP */
-			if (!bWifiBusy)
-				halbtc8723b1ant_PowerSaveState(
-					pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0
-				);
-			else { /* busy */
-				if  (pCoexSta->nScanAPNum >= BT_8723B_1ANT_WIFI_NOISY_THRESH)  /* no force LPS, no PS-TDMA, use pure TDMA */
-					halbtc8723b1ant_PowerSaveState(
-						pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0
-					);
-				else
-					halbtc8723b1ant_PowerSaveState(
-						pBtCoexist, BTC_PS_LPS_ON, 0x50, 0x4
-					);
-			}
-		} else if (
-			(!pCoexSta->bPanExist) &&
-			(!pCoexSta->bA2dpExist) &&
-			(!pCoexSta->bHidExist)
-		)
-			halbtc8723b1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
-		else
-			halbtc8723b1ant_PowerSaveState(pBtCoexist, BTC_PS_LPS_ON, 0x50, 0x4);
-	} else {
-		halbtc8723b1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
-	}
-
-	/*  tdma and coex table */
-	if (!bWifiBusy) {
-		if (pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_ACL_BUSY) {
-			halbtc8723b1ant_ActionWifiConnectedBtAclBusy(
-				pBtCoexist,
-				BT_8723B_1ANT_WIFI_STATUS_CONNECTED_IDLE
-			);
-		} else if (
-			(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_SCO_BUSY) ||
-			(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY)
-		) {
-			halbtc8723b1ant_ActionBtScoHidOnlyBusy(pBtCoexist,
-				BT_8723B_1ANT_WIFI_STATUS_CONNECTED_IDLE);
-		} else {
-			halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 8);
-
-			if ((pCoexSta->highPriorityTx) + (pCoexSta->highPriorityRx) <= 60)
-				halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
-			else
-				halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
-		}
-	} else {
-		if (pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_ACL_BUSY) {
-			halbtc8723b1ant_ActionWifiConnectedBtAclBusy(
-				pBtCoexist,
-				BT_8723B_1ANT_WIFI_STATUS_CONNECTED_BUSY
-			);
-		} else if (
-			(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_SCO_BUSY) ||
-			(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY)
-		) {
-			halbtc8723b1ant_ActionBtScoHidOnlyBusy(
-				pBtCoexist,
-				BT_8723B_1ANT_WIFI_STATUS_CONNECTED_BUSY
-			);
-		} else {
-			halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 8);
-
-			if ((pCoexSta->highPriorityTx) + (pCoexSta->highPriorityRx) <= 60)
-				halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
-			else
-				halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
-		}
-	}
-}
-
-static void halbtc8723b1ant_RunSwCoexistMechanism(struct btc_coexist *pBtCoexist)
-{
-	u8 algorithm = 0;
-
-	algorithm = halbtc8723b1ant_ActionAlgorithm(pBtCoexist);
-	pCoexDm->curAlgorithm = algorithm;
-
-	if (halbtc8723b1ant_IsCommonAction(pBtCoexist)) {
-
-	} else {
-		pCoexDm->preAlgorithm = pCoexDm->curAlgorithm;
-	}
-}
-
-static void halbtc8723b1ant_RunCoexistMechanism(struct btc_coexist *pBtCoexist)
-{
-	struct btc_bt_link_info *pBtLinkInfo = &pBtCoexist->btLinkInfo;
-	bool bWifiConnected = false, bBtHsOn = false;
-	bool bIncreaseScanDevNum = false;
-	bool bBtCtrlAggBufSize = false;
-	u8 aggBufSize = 5;
-	u32 wifiLinkStatus = 0;
-	u32 numOfWifiLink = 0;
-
-	if (pBtCoexist->bManualControl)
-		return;
-
-	if (pBtCoexist->bStopCoexDm)
-		return;
-
-	if (pCoexSta->bUnderIps)
-		return;
-
-	if (
-		(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_ACL_BUSY) ||
-		(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_SCO_BUSY) ||
-		(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY)
-	){
-		bIncreaseScanDevNum = true;
-	}
-
-	pBtCoexist->fBtcSet(
-		pBtCoexist,
-		BTC_SET_BL_INC_SCAN_DEV_NUM,
-		&bIncreaseScanDevNum
-	);
-	pBtCoexist->fBtcGet(
-		pBtCoexist,
-		BTC_GET_BL_WIFI_CONNECTED,
-		&bWifiConnected
-	);
-
-	pBtCoexist->fBtcGet(
-		pBtCoexist,
-		BTC_GET_U4_WIFI_LINK_STATUS,
-		&wifiLinkStatus
-	);
-	numOfWifiLink = wifiLinkStatus >> 16;
-
-	if ((numOfWifiLink >= 2) || (wifiLinkStatus & WIFI_P2P_GO_CONNECTED)) {
-		halbtc8723b1ant_LimitedTx(pBtCoexist, NORMAL_EXEC, 0, 0, 0, 0);
-		halbtc8723b1ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, bBtCtrlAggBufSize, aggBufSize);
-
-		if ((pBtLinkInfo->bA2dpExist) && (pCoexSta->bC2hBtInquiryPage))
-			halbtc8723b1ant_ActionBtInquiry(pBtCoexist);
-		else
-			halbtc8723b1ant_ActionWifiMultiPort(pBtCoexist);
-
-		return;
-	}
-
-	if ((pBtLinkInfo->bBtLinkExist) && (bWifiConnected)) {
-		halbtc8723b1ant_LimitedTx(pBtCoexist, NORMAL_EXEC, 1, 1, 0, 1);
-
-		if (pBtLinkInfo->bScoExist)
-			halbtc8723b1ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, true, 0x5);
-		else
-			halbtc8723b1ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, true, 0x8);
-
-		halbtc8723b1ant_SwMechanism(pBtCoexist, true);
-		halbtc8723b1ant_RunSwCoexistMechanism(pBtCoexist);  /* just print debug message */
-	} else {
-		halbtc8723b1ant_LimitedTx(pBtCoexist, NORMAL_EXEC, 0, 0, 0, 0);
-
-		halbtc8723b1ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x5);
-
-		halbtc8723b1ant_SwMechanism(pBtCoexist, false);
-		halbtc8723b1ant_RunSwCoexistMechanism(pBtCoexist); /* just print debug message */
-	}
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
-	if (pCoexSta->bC2hBtInquiryPage) {
-		halbtc8723b1ant_ActionBtInquiry(pBtCoexist);
-		return;
-	} else if (bBtHsOn) {
-		halbtc8723b1ant_ActionHs(pBtCoexist);
-		return;
-	}
-
-	if (!bWifiConnected) {
-		bool bScan = false, bLink = false, bRoam = false;
-
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_SCAN, &bScan);
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_LINK, &bLink);
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_ROAM, &bRoam);
-
-		if (bScan || bLink || bRoam) {
-			if (bScan)
-				halbtc8723b1ant_ActionWifiNotConnectedScan(pBtCoexist);
-			else
-				halbtc8723b1ant_ActionWifiNotConnectedAssoAuth(pBtCoexist);
-		} else
-			halbtc8723b1ant_ActionWifiNotConnected(pBtCoexist);
-	} else { /*  wifi LPS/Busy */
-		halbtc8723b1ant_ActionWifiConnected(pBtCoexist);
-	}
-}
-
-static void halbtc8723b1ant_InitCoexDm(struct btc_coexist *pBtCoexist)
-{
-	/*  force to reset coex mechanism */
-
-	/*  sw all off */
-	halbtc8723b1ant_SwMechanism(pBtCoexist, false);
-
-	/* halbtc8723b1ant_PsTdma(pBtCoexist, FORCE_EXEC, false, 8); */
-	halbtc8723b1ant_CoexTableWithType(pBtCoexist, FORCE_EXEC, 0);
-
-	pCoexSta->popEventCnt = 0;
-}
-
-static void halbtc8723b1ant_InitHwConfig(
-	struct btc_coexist *pBtCoexist,
-	bool bBackUp,
-	bool bWifiOnly
-)
-{
-	pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x550, 0x8, 0x1);  /* enable TBTT nterrupt */
-
-	/*  0x790[5:0]= 0x5 */
-	pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x790, 0x5);
-
-	/*  Enable counter statistics */
-	pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x778, 0x1);
-	pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x40, 0x20, 0x1);
-
-	/* Antenna config */
-	if (bWifiOnly) {
-		halbtc8723b1ant_SetAntPath(pBtCoexist, BTC_ANT_PATH_WIFI, true, false);
-		halbtc8723b1ant_PsTdma(pBtCoexist, FORCE_EXEC, false, 9);
-	} else {
-		halbtc8723b1ant_SetAntPath(pBtCoexist, BTC_ANT_PATH_BT, true, false);
-	}
-
-	/*  PTA parameter */
-	halbtc8723b1ant_CoexTableWithType(pBtCoexist, FORCE_EXEC, 0);
-
-	pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x948);
-	pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x765);
-	pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x67);
-}
-
-/*  */
-/*  work around function start with wa_halbtc8723b1ant_ */
-/*  */
-/*  */
-/*  extern function start with EXhalbtc8723b1ant_ */
-/*  */
-void EXhalbtc8723b1ant_PowerOnSetting(struct btc_coexist *pBtCoexist)
-{
-	struct btc_board_info *pBoardInfo = &pBtCoexist->boardInfo;
-	u8 u1Tmp = 0x0;
-	u16 u2Tmp = 0x0;
-
-	pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x67, 0x20);
-
-	/*  enable BB, REG_SYS_FUNC_EN such that we can write 0x948 correctly. */
-	u2Tmp = pBtCoexist->fBtcRead2Byte(pBtCoexist, 0x2);
-	pBtCoexist->fBtcWrite2Byte(pBtCoexist, 0x2, u2Tmp | BIT(0) | BIT(1));
-
-	/*  set GRAN_BT = 1 */
-	pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x765, 0x18);
-	/*  set WLAN_ACT = 0 */
-	pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0x4);
-
-	/*  */
-	/*  S0 or S1 setting and Local register setting(By the setting fw can get ant number, S0/S1, ... info) */
-	/*  Local setting bit define */
-	/*	BIT0: "0" for no antenna inverse; "1" for antenna inverse */
-	/*	BIT1: "0" for internal switch; "1" for external switch */
-	/*	BIT2: "0" for one antenna; "1" for two antenna */
-	/*  NOTE: here default all internal switch and 1-antenna ==> BIT1 = 0 and BIT2 = 0 */
-	if (pBtCoexist->chipInterface == BTC_INTF_USB) {
-		/*  fixed at S0 for USB interface */
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0);
-
-		u1Tmp |= 0x1;	/*  antenna inverse */
-		pBtCoexist->fBtcWriteLocalReg1Byte(pBtCoexist, 0xfe08, u1Tmp);
-
-		pBoardInfo->btdmAntPos = BTC_ANTENNA_AT_AUX_PORT;
-	} else {
-		/*  for PCIE and SDIO interface, we check efuse 0xc3[6] */
-		if (pBoardInfo->singleAntPath == 0) {
-			/*  set to S1 */
-			pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x280);
-			pBoardInfo->btdmAntPos = BTC_ANTENNA_AT_MAIN_PORT;
-		} else if (pBoardInfo->singleAntPath == 1) {
-			/*  set to S0 */
-			pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0);
-			u1Tmp |= 0x1;	/*  antenna inverse */
-			pBoardInfo->btdmAntPos = BTC_ANTENNA_AT_AUX_PORT;
-		}
-
-		if (pBtCoexist->chipInterface == BTC_INTF_PCI)
-			pBtCoexist->fBtcWriteLocalReg1Byte(pBtCoexist, 0x384, u1Tmp);
-		else if (pBtCoexist->chipInterface == BTC_INTF_SDIO)
-			pBtCoexist->fBtcWriteLocalReg1Byte(pBtCoexist, 0x60, u1Tmp);
-	}
-}
-
-void EXhalbtc8723b1ant_InitHwConfig(struct btc_coexist *pBtCoexist, bool bWifiOnly)
-{
-	halbtc8723b1ant_InitHwConfig(pBtCoexist, true, bWifiOnly);
-}
-
-void EXhalbtc8723b1ant_InitCoexDm(struct btc_coexist *pBtCoexist)
-{
-	pBtCoexist->bStopCoexDm = false;
-
-	halbtc8723b1ant_InitCoexDm(pBtCoexist);
-
-	halbtc8723b1ant_QueryBtInfo(pBtCoexist);
-}
-
-void EXhalbtc8723b1ant_IpsNotify(struct btc_coexist *pBtCoexist, u8 type)
-{
-	if (pBtCoexist->bManualControl ||	pBtCoexist->bStopCoexDm)
-		return;
-
-	if (type == BTC_IPS_ENTER) {
-		pCoexSta->bUnderIps = true;
-
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 0);
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
-		halbtc8723b1ant_SetAntPath(pBtCoexist, BTC_ANT_PATH_BT, false, true);
-	} else if (type == BTC_IPS_LEAVE) {
-		pCoexSta->bUnderIps = false;
-
-		halbtc8723b1ant_InitHwConfig(pBtCoexist, false, false);
-		halbtc8723b1ant_InitCoexDm(pBtCoexist);
-		halbtc8723b1ant_QueryBtInfo(pBtCoexist);
-	}
-}
-
-void EXhalbtc8723b1ant_LpsNotify(struct btc_coexist *pBtCoexist, u8 type)
-{
-	if (pBtCoexist->bManualControl || pBtCoexist->bStopCoexDm)
-		return;
-
-	if (type == BTC_LPS_ENABLE)
-		pCoexSta->bUnderLps = true;
-	else if (type == BTC_LPS_DISABLE)
-		pCoexSta->bUnderLps = false;
-}
-
-void EXhalbtc8723b1ant_ScanNotify(struct btc_coexist *pBtCoexist, u8 type)
-{
-	bool bWifiConnected = false, bBtHsOn = false;
-	u32 wifiLinkStatus = 0;
-	u32 numOfWifiLink = 0;
-	bool bBtCtrlAggBufSize = false;
-	u8 aggBufSize = 5;
-
-	if (pBtCoexist->bManualControl || pBtCoexist->bStopCoexDm)
-		return;
-
-	if (type == BTC_SCAN_START) {
-		pCoexSta->bWiFiIsHighPriTask = true;
-
-		halbtc8723b1ant_PsTdma(pBtCoexist, FORCE_EXEC, false, 8);  /* Force antenna setup for no scan result issue */
-		pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x948);
-		pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x765);
-		pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x67);
-	} else {
-		pCoexSta->bWiFiIsHighPriTask = false;
-
-		pBtCoexist->fBtcGet(
-			pBtCoexist, BTC_GET_U1_AP_NUM, &pCoexSta->nScanAPNum
-		);
-	}
-
-	if (pBtCoexist->btInfo.bBtDisabled)
-		return;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
-
-	halbtc8723b1ant_QueryBtInfo(pBtCoexist);
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_LINK_STATUS, &wifiLinkStatus);
-	numOfWifiLink = wifiLinkStatus >> 16;
-
-	if (numOfWifiLink >= 2) {
-		halbtc8723b1ant_LimitedTx(pBtCoexist, NORMAL_EXEC, 0, 0, 0, 0);
-		halbtc8723b1ant_LimitedRx(
-			pBtCoexist, NORMAL_EXEC, false, bBtCtrlAggBufSize, aggBufSize
-		);
-		halbtc8723b1ant_ActionWifiMultiPort(pBtCoexist);
-		return;
-	}
-
-	if (pCoexSta->bC2hBtInquiryPage) {
-		halbtc8723b1ant_ActionBtInquiry(pBtCoexist);
-		return;
-	} else if (bBtHsOn) {
-		halbtc8723b1ant_ActionHs(pBtCoexist);
-		return;
-	}
-
-	if (type == BTC_SCAN_START) {
-		if (!bWifiConnected)	/*  non-connected scan */
-			halbtc8723b1ant_ActionWifiNotConnectedScan(pBtCoexist);
-		else	/*  wifi is connected */
-			halbtc8723b1ant_ActionWifiConnectedScan(pBtCoexist);
-	} else if (type == BTC_SCAN_FINISH) {
-		if (!bWifiConnected)	/*  non-connected scan */
-			halbtc8723b1ant_ActionWifiNotConnected(pBtCoexist);
-		else
-			halbtc8723b1ant_ActionWifiConnected(pBtCoexist);
-	}
-}
-
-void EXhalbtc8723b1ant_ConnectNotify(struct btc_coexist *pBtCoexist, u8 type)
-{
-	bool bWifiConnected = false, bBtHsOn = false;
-	u32 wifiLinkStatus = 0;
-	u32 numOfWifiLink = 0;
-	bool bBtCtrlAggBufSize = false;
-	u8 aggBufSize = 5;
-
-	if (
-		pBtCoexist->bManualControl ||
-		pBtCoexist->bStopCoexDm ||
-		pBtCoexist->btInfo.bBtDisabled
-	)
-		return;
-
-	if (type == BTC_ASSOCIATE_START) {
-		pCoexSta->bWiFiIsHighPriTask = true;
-		pCoexDm->nArpCnt = 0;
-	} else {
-		pCoexSta->bWiFiIsHighPriTask = false;
-		/* pCoexDm->nArpCnt = 0; */
-	}
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_LINK_STATUS, &wifiLinkStatus);
-	numOfWifiLink = wifiLinkStatus >> 16;
-	if (numOfWifiLink >= 2) {
-		halbtc8723b1ant_LimitedTx(pBtCoexist, NORMAL_EXEC, 0, 0, 0, 0);
-		halbtc8723b1ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, bBtCtrlAggBufSize, aggBufSize);
-		halbtc8723b1ant_ActionWifiMultiPort(pBtCoexist);
-		return;
-	}
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
-	if (pCoexSta->bC2hBtInquiryPage) {
-		halbtc8723b1ant_ActionBtInquiry(pBtCoexist);
-		return;
-	} else if (bBtHsOn) {
-		halbtc8723b1ant_ActionHs(pBtCoexist);
-		return;
-	}
-
-	if (type == BTC_ASSOCIATE_START) {
-		halbtc8723b1ant_ActionWifiNotConnectedAssoAuth(pBtCoexist);
-	} else if (type == BTC_ASSOCIATE_FINISH) {
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
-		if (!bWifiConnected) /*  non-connected scan */
-			halbtc8723b1ant_ActionWifiNotConnected(pBtCoexist);
-		else
-			halbtc8723b1ant_ActionWifiConnected(pBtCoexist);
-	}
-}
-
-void EXhalbtc8723b1ant_MediaStatusNotify(struct btc_coexist *pBtCoexist, u8 type)
-{
-	u8 H2C_Parameter[3] = {0};
-	u32 wifiBw;
-	u8 wifiCentralChnl;
-	bool bWifiUnderBMode = false;
-
-	if (
-		pBtCoexist->bManualControl ||
-		pBtCoexist->bStopCoexDm ||
-		pBtCoexist->btInfo.bBtDisabled
-	)
-		return;
-
-	if (type == BTC_MEDIA_CONNECT) {
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_UNDER_B_MODE, &bWifiUnderBMode);
-
-		/* Set CCK Tx/Rx high Pri except 11b mode */
-		if (bWifiUnderBMode) {
-			pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x6cd, 0x00); /* CCK Tx */
-			pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x6cf, 0x00); /* CCK Rx */
-		} else {
-			pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x6cd, 0x10); /* CCK Tx */
-			pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x6cf, 0x10); /* CCK Rx */
-		}
-
-		pCoexDm->backupArfrCnt1 = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x430);
-		pCoexDm->backupArfrCnt2 = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x434);
-		pCoexDm->backupRetryLimit = pBtCoexist->fBtcRead2Byte(pBtCoexist, 0x42a);
-		pCoexDm->backupAmpduMaxTime = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x456);
-	} else {
-		pCoexDm->nArpCnt = 0;
-
-		pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x6cd, 0x0); /* CCK Tx */
-		pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x6cf, 0x0); /* CCK Rx */
-	}
-
-	/*  only 2.4G we need to inform bt the chnl mask */
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U1_WIFI_CENTRAL_CHNL, &wifiCentralChnl);
-	if ((type == BTC_MEDIA_CONNECT) && (wifiCentralChnl <= 14)) {
-		/* H2C_Parameter[0] = 0x1; */
-		H2C_Parameter[0] = 0x0;
-		H2C_Parameter[1] = wifiCentralChnl;
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
-
-		if (wifiBw == BTC_WIFI_BW_HT40)
-			H2C_Parameter[2] = 0x30;
-		else
-			H2C_Parameter[2] = 0x20;
-	}
-
-	pCoexDm->wifiChnlInfo[0] = H2C_Parameter[0];
-	pCoexDm->wifiChnlInfo[1] = H2C_Parameter[1];
-	pCoexDm->wifiChnlInfo[2] = H2C_Parameter[2];
-
-	pBtCoexist->fBtcFillH2c(pBtCoexist, 0x66, 3, H2C_Parameter);
-}
-
-void EXhalbtc8723b1ant_SpecialPacketNotify(struct btc_coexist *pBtCoexist, u8 type)
-{
-	bool bBtHsOn = false;
-	u32 wifiLinkStatus = 0;
-	u32 numOfWifiLink = 0;
-	bool bBtCtrlAggBufSize = false;
-	u8 aggBufSize = 5;
-
-	if (
-		pBtCoexist->bManualControl ||
-		pBtCoexist->bStopCoexDm ||
-		pBtCoexist->btInfo.bBtDisabled
-	)
-		return;
-
-	if (
-		type == BTC_PACKET_DHCP ||
-		type == BTC_PACKET_EAPOL ||
-		type == BTC_PACKET_ARP
-	) {
-		if (type == BTC_PACKET_ARP) {
-			pCoexDm->nArpCnt++;
-
-			if (pCoexDm->nArpCnt >= 10) /*  if APR PKT > 10 after connect, do not go to ActionWifiConnectedSpecialPacket(pBtCoexist) */
-				pCoexSta->bWiFiIsHighPriTask = false;
-			else
-				pCoexSta->bWiFiIsHighPriTask = true;
-		} else {
-			pCoexSta->bWiFiIsHighPriTask = true;
-		}
-	} else {
-		pCoexSta->bWiFiIsHighPriTask = false;
-	}
-
-	pCoexSta->specialPktPeriodCnt = 0;
-
-	pBtCoexist->fBtcGet(
-		pBtCoexist, BTC_GET_U4_WIFI_LINK_STATUS, &wifiLinkStatus
-	);
-	numOfWifiLink = wifiLinkStatus >> 16;
-
-	if (numOfWifiLink >= 2) {
-		halbtc8723b1ant_LimitedTx(pBtCoexist, NORMAL_EXEC, 0, 0, 0, 0);
-		halbtc8723b1ant_LimitedRx(
-			pBtCoexist, NORMAL_EXEC, false, bBtCtrlAggBufSize, aggBufSize
-		);
-		halbtc8723b1ant_ActionWifiMultiPort(pBtCoexist);
-		return;
-	}
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
-	if (pCoexSta->bC2hBtInquiryPage) {
-		halbtc8723b1ant_ActionBtInquiry(pBtCoexist);
-		return;
-	} else if (bBtHsOn) {
-		halbtc8723b1ant_ActionHs(pBtCoexist);
-		return;
-	}
-
-	if (
-		type == BTC_PACKET_DHCP ||
-		type == BTC_PACKET_EAPOL ||
-		((type == BTC_PACKET_ARP) && (pCoexSta->bWiFiIsHighPriTask))
-	)
-		halbtc8723b1ant_ActionWifiConnectedSpecialPacket(pBtCoexist);
-}
-
-void EXhalbtc8723b1ant_BtInfoNotify(
-	struct btc_coexist *pBtCoexist, u8 *tmpBuf, u8 length
-)
-{
-	u8 btInfo = 0;
-	u8 i, rspSource = 0;
-	bool bWifiConnected = false;
-	bool bBtBusy = false;
-
-	pCoexSta->bC2hBtInfoReqSent = false;
-
-	rspSource = tmpBuf[0] & 0xf;
-	if (rspSource >= BT_INFO_SRC_8723B_1ANT_MAX)
-		rspSource = BT_INFO_SRC_8723B_1ANT_WIFI_FW;
-	pCoexSta->btInfoC2hCnt[rspSource]++;
-
-	for (i = 0; i < length; i++) {
-		pCoexSta->btInfoC2h[rspSource][i] = tmpBuf[i];
-		if (i == 1)
-			btInfo = tmpBuf[i];
-	}
-
-	if (rspSource != BT_INFO_SRC_8723B_1ANT_WIFI_FW) {
-		pCoexSta->btRetryCnt = pCoexSta->btInfoC2h[rspSource][2] & 0xf;
-
-		if (pCoexSta->btRetryCnt >= 1)
-			pCoexSta->popEventCnt++;
-
-		if (pCoexSta->btInfoC2h[rspSource][2] & 0x20)
-			pCoexSta->bC2hBtPage = true;
-		else
-			pCoexSta->bC2hBtPage = false;
-
-		pCoexSta->btRssi = pCoexSta->btInfoC2h[rspSource][3] * 2 - 90;
-		/* pCoexSta->btInfoC2h[rspSource][3]*2+10; */
-
-		pCoexSta->btInfoExt = pCoexSta->btInfoC2h[rspSource][4];
-
-		pCoexSta->bBtTxRxMask = (pCoexSta->btInfoC2h[rspSource][2] & 0x40);
-		pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_TX_RX_MASK, &pCoexSta->bBtTxRxMask);
-
-		if (!pCoexSta->bBtTxRxMask) {
-			/* BT into is responded by BT FW and BT RF REG 0x3C != 0x15 => Need to switch BT TRx Mask */
-			pBtCoexist->fBtcSetBtReg(pBtCoexist, BTC_BT_REG_RF, 0x3c, 0x15);
-		}
-
-		/*  Here we need to resend some wifi info to BT */
-		/*  because bt is reset and loss of the info. */
-		if (pCoexSta->btInfoExt & BIT(1)) {
-			pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
-			if (bWifiConnected)
-				EXhalbtc8723b1ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_CONNECT);
-			else
-				EXhalbtc8723b1ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_DISCONNECT);
-		}
-
-		if (pCoexSta->btInfoExt & BIT(3)) {
-			if (!pBtCoexist->bManualControl && !pBtCoexist->bStopCoexDm)
-				halbtc8723b1ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, false);
-		} else {
-			/*  BT already NOT ignore Wlan active, do nothing here. */
-		}
-	}
-
-	/*  check BIT2 first ==> check if bt is under inquiry or page scan */
-	if (btInfo & BT_INFO_8723B_1ANT_B_INQ_PAGE)
-		pCoexSta->bC2hBtInquiryPage = true;
-	else
-		pCoexSta->bC2hBtInquiryPage = false;
-
-	/*  set link exist status */
-	if (!(btInfo & BT_INFO_8723B_1ANT_B_CONNECTION)) {
-		pCoexSta->bBtLinkExist = false;
-		pCoexSta->bPanExist = false;
-		pCoexSta->bA2dpExist = false;
-		pCoexSta->bHidExist = false;
-		pCoexSta->bScoExist = false;
-	} else {	/*  connection exists */
-		pCoexSta->bBtLinkExist = true;
-		if (btInfo & BT_INFO_8723B_1ANT_B_FTP)
-			pCoexSta->bPanExist = true;
-		else
-			pCoexSta->bPanExist = false;
-
-		if (btInfo & BT_INFO_8723B_1ANT_B_A2DP)
-			pCoexSta->bA2dpExist = true;
-		else
-			pCoexSta->bA2dpExist = false;
-
-		if (btInfo & BT_INFO_8723B_1ANT_B_HID)
-			pCoexSta->bHidExist = true;
-		else
-			pCoexSta->bHidExist = false;
-
-		if (btInfo & BT_INFO_8723B_1ANT_B_SCO_ESCO)
-			pCoexSta->bScoExist = true;
-		else
-			pCoexSta->bScoExist = false;
-	}
-
-	halbtc8723b1ant_UpdateBtLinkInfo(pBtCoexist);
-
-	btInfo = btInfo & 0x1f;  /* mask profile bit for connect-ilde identification (for CSR case: A2DP idle --> 0x41) */
-
-	if (!(btInfo & BT_INFO_8723B_1ANT_B_CONNECTION)) {
-		pCoexDm->btStatus = BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE;
-	} else if (btInfo == BT_INFO_8723B_1ANT_B_CONNECTION)	{
-		/*  connection exists but no busy */
-		pCoexDm->btStatus = BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE;
-	} else if (
-		(btInfo & BT_INFO_8723B_1ANT_B_SCO_ESCO) ||
-		(btInfo & BT_INFO_8723B_1ANT_B_SCO_BUSY)
-	) {
-		pCoexDm->btStatus = BT_8723B_1ANT_BT_STATUS_SCO_BUSY;
-	} else if (btInfo & BT_INFO_8723B_1ANT_B_ACL_BUSY) {
-		if (pCoexDm->btStatus != BT_8723B_1ANT_BT_STATUS_ACL_BUSY)
-			pCoexDm->bAutoTdmaAdjust = false;
-
-		pCoexDm->btStatus = BT_8723B_1ANT_BT_STATUS_ACL_BUSY;
-	} else {
-		pCoexDm->btStatus = BT_8723B_1ANT_BT_STATUS_MAX;
-	}
-
-	if (
-		(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_ACL_BUSY) ||
-		(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_SCO_BUSY) ||
-		(pCoexDm->btStatus == BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY)
-	)
-		bBtBusy = true;
-	else
-		bBtBusy = false;
-	pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_TRAFFIC_BUSY, &bBtBusy);
-
-	halbtc8723b1ant_RunCoexistMechanism(pBtCoexist);
-}
-
-void EXhalbtc8723b1ant_HaltNotify(struct btc_coexist *pBtCoexist)
-{
-	halbtc8723b1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
-	halbtc8723b1ant_PsTdma(pBtCoexist, FORCE_EXEC, false, 0);
-	halbtc8723b1ant_SetAntPath(pBtCoexist, BTC_ANT_PATH_BT, false, true);
-
-	halbtc8723b1ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, true);
-
-	EXhalbtc8723b1ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_DISCONNECT);
-
-	pBtCoexist->bStopCoexDm = true;
-}
-
-void EXhalbtc8723b1ant_PnpNotify(struct btc_coexist *pBtCoexist, u8 pnpState)
-{
-	if (pnpState == BTC_WIFI_PNP_SLEEP) {
-		halbtc8723b1ant_PowerSaveState(pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
-		halbtc8723b1ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 0);
-		halbtc8723b1ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
-		halbtc8723b1ant_SetAntPath(pBtCoexist, BTC_ANT_PATH_BT, false, true);
-
-		pBtCoexist->bStopCoexDm = true;
-	} else if (pnpState == BTC_WIFI_PNP_WAKE_UP) {
-		pBtCoexist->bStopCoexDm = false;
-		halbtc8723b1ant_InitHwConfig(pBtCoexist, false, false);
-		halbtc8723b1ant_InitCoexDm(pBtCoexist);
-		halbtc8723b1ant_QueryBtInfo(pBtCoexist);
-	}
-}
-
-void EXhalbtc8723b1ant_Periodical(struct btc_coexist *pBtCoexist)
-{
-	static u8 disVerInfoCnt;
-	u32 fwVer = 0, btPatchVer = 0;
-
-	if (disVerInfoCnt <= 5) {
-		disVerInfoCnt += 1;
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_BT_PATCH_VER, &btPatchVer);
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer);
-	}
-
-	halbtc8723b1ant_MonitorBtCtr(pBtCoexist);
-	halbtc8723b1ant_MonitorWiFiCtr(pBtCoexist);
-
-	if (
-		halbtc8723b1ant_IsWifiStatusChanged(pBtCoexist) ||
-		pCoexDm->bAutoTdmaAdjust
-	)
-		halbtc8723b1ant_RunCoexistMechanism(pBtCoexist);
-
-	pCoexSta->specialPktPeriodCnt++;
-}
diff --git a/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.h b/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.h
deleted file mode 100644
index 7a12d92da0a9..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-/*  The following is for 8723B 1ANT BT Co-exist definition */
-#define	BT_INFO_8723B_1ANT_B_FTP		BIT(7)
-#define	BT_INFO_8723B_1ANT_B_A2DP		BIT(6)
-#define	BT_INFO_8723B_1ANT_B_HID		BIT(5)
-#define	BT_INFO_8723B_1ANT_B_SCO_BUSY		BIT(4)
-#define	BT_INFO_8723B_1ANT_B_ACL_BUSY		BIT(3)
-#define	BT_INFO_8723B_1ANT_B_INQ_PAGE		BIT(2)
-#define	BT_INFO_8723B_1ANT_B_SCO_ESCO		BIT(1)
-#define	BT_INFO_8723B_1ANT_B_CONNECTION		BIT(0)
-
-#define	BT_INFO_8723B_1ANT_A2DP_BASIC_RATE(_BT_INFO_EXT_)	\
-		(((_BT_INFO_EXT_ & BIT(0))) ? true : false)
-
-#define	BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT 2
-
-#define  BT_8723B_1ANT_WIFI_NOISY_THRESH 30   /* max: 255 */
-
-enum {
-	BT_INFO_SRC_8723B_1ANT_WIFI_FW			= 0x0,
-	BT_INFO_SRC_8723B_1ANT_BT_RSP				= 0x1,
-	BT_INFO_SRC_8723B_1ANT_BT_ACTIVE_SEND		= 0x2,
-	BT_INFO_SRC_8723B_1ANT_MAX
-};
-
-enum {
-	BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE	= 0x0,
-	BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE		= 0x1,
-	BT_8723B_1ANT_BT_STATUS_INQ_PAGE				= 0x2,
-	BT_8723B_1ANT_BT_STATUS_ACL_BUSY				= 0x3,
-	BT_8723B_1ANT_BT_STATUS_SCO_BUSY				= 0x4,
-	BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY			= 0x5,
-	BT_8723B_1ANT_BT_STATUS_MAX
-};
-
-enum {
-	BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_IDLE           = 0x0,
-	BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN = 0x1,
-	BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SCAN               = 0x2,
-	BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT        = 0x3,
-	BT_8723B_1ANT_WIFI_STATUS_CONNECTED_IDLE               = 0x4,
-	BT_8723B_1ANT_WIFI_STATUS_CONNECTED_BUSY               = 0x5,
-	BT_8723B_1ANT_WIFI_STATUS_MAX
-};
-
-enum {
-	BT_8723B_1ANT_COEX_ALGO_UNDEFINED		= 0x0,
-	BT_8723B_1ANT_COEX_ALGO_SCO				= 0x1,
-	BT_8723B_1ANT_COEX_ALGO_HID				= 0x2,
-	BT_8723B_1ANT_COEX_ALGO_A2DP			= 0x3,
-	BT_8723B_1ANT_COEX_ALGO_A2DP_PANHS		= 0x4,
-	BT_8723B_1ANT_COEX_ALGO_PANEDR			= 0x5,
-	BT_8723B_1ANT_COEX_ALGO_PANHS			= 0x6,
-	BT_8723B_1ANT_COEX_ALGO_PANEDR_A2DP		= 0x7,
-	BT_8723B_1ANT_COEX_ALGO_PANEDR_HID		= 0x8,
-	BT_8723B_1ANT_COEX_ALGO_HID_A2DP_PANEDR	= 0x9,
-	BT_8723B_1ANT_COEX_ALGO_HID_A2DP		= 0xa,
-	BT_8723B_1ANT_COEX_ALGO_MAX				= 0xb,
-};
-
-struct coex_dm_8723b_1ant {
-	/*  fw mechanism */
-	bool bCurIgnoreWlanAct;
-	bool bPreIgnoreWlanAct;
-	u8 prePsTdma;
-	u8 curPsTdma;
-	u8 psTdmaPara[5];
-	u8 psTdmaDuAdjType;
-	bool bAutoTdmaAdjust;
-	bool bPrePsTdmaOn;
-	bool bCurPsTdmaOn;
-	bool bPreBtAutoReport;
-	bool bCurBtAutoReport;
-	u8 preLps;
-	u8 curLps;
-	u8 preRpwm;
-	u8 curRpwm;
-
-	/*  sw mechanism */
-	bool bPreLowPenaltyRa;
-	bool bCurLowPenaltyRa;
-	u32 preVal0x6c0;
-	u32 curVal0x6c0;
-	u32 preVal0x6c4;
-	u32 curVal0x6c4;
-	u32 preVal0x6c8;
-	u32 curVal0x6c8;
-	u8 preVal0x6cc;
-	u8 curVal0x6cc;
-	bool bLimitedDig;
-
-	u32 backupArfrCnt1;	/*  Auto Rate Fallback Retry cnt */
-	u32 backupArfrCnt2;	/*  Auto Rate Fallback Retry cnt */
-	u16 backupRetryLimit;
-	u8 backupAmpduMaxTime;
-
-	/*  algorithm related */
-	u8 preAlgorithm;
-	u8 curAlgorithm;
-	u8 btStatus;
-	u8 wifiChnlInfo[3];
-
-	u32 preRaMask;
-	u32 curRaMask;
-	u8 preArfrType;
-	u8 curArfrType;
-	u8 preRetryLimitType;
-	u8 curRetryLimitType;
-	u8 preAmpduTimeType;
-	u8 curAmpduTimeType;
-	u32 nArpCnt;
-
-	u8 errorCondition;
-};
-
-struct coex_sta_8723b_1ant {
-	bool bBtLinkExist;
-	bool bScoExist;
-	bool bA2dpExist;
-	bool bHidExist;
-	bool bPanExist;
-
-	bool bUnderLps;
-	bool bUnderIps;
-	u32 specialPktPeriodCnt;
-	u32 highPriorityTx;
-	u32 highPriorityRx;
-	u32 lowPriorityTx;
-	u32 lowPriorityRx;
-	s8 btRssi;
-	bool bBtTxRxMask;
-	u8 preBtRssiState;
-	u8 preWifiRssiState[4];
-	bool bC2hBtInfoReqSent;
-	u8 btInfoC2h[BT_INFO_SRC_8723B_1ANT_MAX][10];
-	u32 btInfoC2hCnt[BT_INFO_SRC_8723B_1ANT_MAX];
-	bool bC2hBtInquiryPage;
-	bool bC2hBtPage; /* Add for win8.1 page out issue */
-	bool bWiFiIsHighPriTask; /* Add for win8.1 page out issue */
-	u8 btRetryCnt;
-	u8 btInfoExt;
-	u32 popEventCnt;
-	u8 nScanAPNum;
-
-	u32 nCRCOK_CCK;
-	u32 nCRCOK_11g;
-	u32 nCRCOK_11n;
-	u32 nCRCOK_11nAgg;
-
-	u32 nCRCErr_CCK;
-	u32 nCRCErr_11g;
-	u32 nCRCErr_11n;
-	u32 nCRCErr_11nAgg;
-
-	bool bCCKLock;
-	bool bPreCCKLock;
-	u8 nCoexTableType;
-
-	bool bForceLpsOn;
-};
-
-/*  */
-/*  The following is interface which will notify coex module. */
-/*  */
-void EXhalbtc8723b1ant_PowerOnSetting(struct btc_coexist *pBtCoexist);
-void EXhalbtc8723b1ant_InitHwConfig(struct btc_coexist *pBtCoexist, bool bWifiOnly);
-void EXhalbtc8723b1ant_InitCoexDm(struct btc_coexist *pBtCoexist);
-void EXhalbtc8723b1ant_IpsNotify(struct btc_coexist *pBtCoexist, u8 type);
-void EXhalbtc8723b1ant_LpsNotify(struct btc_coexist *pBtCoexist, u8 type);
-void EXhalbtc8723b1ant_ScanNotify(struct btc_coexist *pBtCoexist, u8 type);
-void EXhalbtc8723b1ant_ConnectNotify(struct btc_coexist *pBtCoexist, u8 type);
-void EXhalbtc8723b1ant_MediaStatusNotify(struct btc_coexist *pBtCoexist, u8 type);
-void EXhalbtc8723b1ant_SpecialPacketNotify(struct btc_coexist *pBtCoexist, u8 type);
-void EXhalbtc8723b1ant_BtInfoNotify(
-	struct btc_coexist *pBtCoexist, u8 *tmpBuf, u8 length
-);
-void EXhalbtc8723b1ant_HaltNotify(struct btc_coexist *pBtCoexist);
-void EXhalbtc8723b1ant_PnpNotify(struct btc_coexist *pBtCoexist, u8 pnpState);
-void EXhalbtc8723b1ant_Periodical(struct btc_coexist *pBtCoexist);
diff --git a/drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c b/drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c
deleted file mode 100644
index 0220bacee181..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c
+++ /dev/null
@@ -1,2624 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include "Mp_Precomp.h"
-
-/* defines */
-#define HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(val)			      \
-do {									      \
-	halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, val);           \
-	pCoexDm->psTdmaDuAdjType = val;                                       \
-} while (0)
-
-/*  Global variables, these are static variables */
-static struct coex_dm_8723b_2ant GLCoexDm8723b2Ant;
-static struct coex_dm_8723b_2ant *pCoexDm = &GLCoexDm8723b2Ant;
-static struct coex_sta_8723b_2ant GLCoexSta8723b2Ant;
-static struct coex_sta_8723b_2ant *pCoexSta = &GLCoexSta8723b2Ant;
-
-/*  local function start with halbtc8723b2ant_ */
-static u8 halbtc8723b2ant_BtRssiState(
-	u8 levelNum, u8 rssiThresh, u8 rssiThresh1
-)
-{
-	s32 btRssi = 0;
-	u8 btRssiState = pCoexSta->preBtRssiState;
-
-	btRssi = pCoexSta->btRssi;
-
-	if (levelNum == 2) {
-		if (
-			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_LOW) ||
-			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_LOW)
-		) {
-			if (btRssi >= (rssiThresh + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT)) {
-				btRssiState = BTC_RSSI_STATE_HIGH;
-			} else {
-				btRssiState = BTC_RSSI_STATE_STAY_LOW;
-			}
-		} else {
-			if (btRssi < rssiThresh) {
-				btRssiState = BTC_RSSI_STATE_LOW;
-			} else {
-				btRssiState = BTC_RSSI_STATE_STAY_HIGH;
-			}
-		}
-	} else if (levelNum == 3) {
-		if (rssiThresh > rssiThresh1) {
-			return pCoexSta->preBtRssiState;
-		}
-
-		if (
-			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_LOW) ||
-			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_LOW)
-		) {
-			if (btRssi >= (rssiThresh + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT)) {
-				btRssiState = BTC_RSSI_STATE_MEDIUM;
-			} else {
-				btRssiState = BTC_RSSI_STATE_STAY_LOW;
-			}
-		} else if (
-			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_MEDIUM) ||
-			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_MEDIUM)
-		) {
-			if (btRssi >= (rssiThresh1 + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT)) {
-				btRssiState = BTC_RSSI_STATE_HIGH;
-			} else if (btRssi < rssiThresh) {
-				btRssiState = BTC_RSSI_STATE_LOW;
-			} else {
-				btRssiState = BTC_RSSI_STATE_STAY_MEDIUM;
-			}
-		} else {
-			if (btRssi < rssiThresh1) {
-				btRssiState = BTC_RSSI_STATE_MEDIUM;
-			} else {
-				btRssiState = BTC_RSSI_STATE_STAY_HIGH;
-			}
-		}
-	}
-
-	pCoexSta->preBtRssiState = btRssiState;
-
-	return btRssiState;
-}
-
-static u8 halbtc8723b2ant_WifiRssiState(
-	struct btc_coexist *pBtCoexist,
-	u8 index,
-	u8 levelNum,
-	u8 rssiThresh,
-	u8 rssiThresh1
-)
-{
-	s32 wifiRssi = 0;
-	u8 wifiRssiState = pCoexSta->preWifiRssiState[index];
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_S4_WIFI_RSSI, &wifiRssi);
-
-	if (levelNum == 2) {
-		if (
-			(pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_LOW) ||
-			(pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_STAY_LOW)
-		) {
-			if (wifiRssi >= (rssiThresh + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT)) {
-				wifiRssiState = BTC_RSSI_STATE_HIGH;
-			} else {
-				wifiRssiState = BTC_RSSI_STATE_STAY_LOW;
-			}
-		} else {
-			if (wifiRssi < rssiThresh) {
-				wifiRssiState = BTC_RSSI_STATE_LOW;
-			} else {
-				wifiRssiState = BTC_RSSI_STATE_STAY_HIGH;
-			}
-		}
-	} else if (levelNum == 3) {
-		if (rssiThresh > rssiThresh1) {
-			return pCoexSta->preWifiRssiState[index];
-		}
-
-		if (
-			(pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_LOW) ||
-			(pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_STAY_LOW)
-		) {
-			if (wifiRssi >= (rssiThresh + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT)) {
-				wifiRssiState = BTC_RSSI_STATE_MEDIUM;
-			} else {
-				wifiRssiState = BTC_RSSI_STATE_STAY_LOW;
-			}
-		} else if (
-			(pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_MEDIUM) ||
-			(pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_STAY_MEDIUM)
-		) {
-			if (wifiRssi >= (rssiThresh1 + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT)) {
-				wifiRssiState = BTC_RSSI_STATE_HIGH;
-			} else if (wifiRssi < rssiThresh) {
-				wifiRssiState = BTC_RSSI_STATE_LOW;
-			} else {
-				wifiRssiState = BTC_RSSI_STATE_STAY_MEDIUM;
-			}
-		} else {
-			if (wifiRssi < rssiThresh1) {
-				wifiRssiState = BTC_RSSI_STATE_MEDIUM;
-			} else {
-				wifiRssiState = BTC_RSSI_STATE_STAY_HIGH;
-			}
-		}
-	}
-
-	pCoexSta->preWifiRssiState[index] = wifiRssiState;
-
-	return wifiRssiState;
-}
-
-static void halbtc8723b2ant_LimitedRx(
-	struct btc_coexist *pBtCoexist,
-	bool bForceExec,
-	bool bRejApAggPkt,
-	bool bBtCtrlAggBufSize,
-	u8 aggBufSize
-)
-{
-	bool bRejectRxAgg = bRejApAggPkt;
-	bool bBtCtrlRxAggSize = bBtCtrlAggBufSize;
-	u8 rxAggSize = aggBufSize;
-
-	/*  */
-	/*	Rx Aggregation related setting */
-	/*  */
-	pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_TO_REJ_AP_AGG_PKT, &bRejectRxAgg);
-	/*  decide BT control aggregation buf size or not */
-	pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_CTRL_AGG_SIZE, &bBtCtrlRxAggSize);
-	/*  aggregation buf size, only work when BT control Rx aggregation size. */
-	pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_U1_AGG_BUF_SIZE, &rxAggSize);
-	/*  real update aggregation setting */
-	pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_AGGREGATE_CTRL, NULL);
-}
-
-static void halbtc8723b2ant_QueryBtInfo(struct btc_coexist *pBtCoexist)
-{
-	u8	H2C_Parameter[1] = {0};
-
-	pCoexSta->bC2hBtInfoReqSent = true;
-
-	H2C_Parameter[0] |= BIT(0);	/*  trigger */
-
-	pBtCoexist->fBtcFillH2c(pBtCoexist, 0x61, 1, H2C_Parameter);
-}
-
-static bool halbtc8723b2ant_IsWifiStatusChanged(struct btc_coexist *pBtCoexist)
-{
-	static bool	bPreWifiBusy, bPreUnder4way, bPreBtHsOn;
-	bool bWifiBusy = false, bUnder4way = false, bBtHsOn = false;
-	bool bWifiConnected = false;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_4_WAY_PROGRESS, &bUnder4way);
-
-	if (bWifiConnected) {
-		if (bWifiBusy != bPreWifiBusy) {
-			bPreWifiBusy = bWifiBusy;
-			return true;
-		}
-
-		if (bUnder4way != bPreUnder4way) {
-			bPreUnder4way = bUnder4way;
-			return true;
-		}
-
-		if (bBtHsOn != bPreBtHsOn) {
-			bPreBtHsOn = bBtHsOn;
-			return true;
-		}
-	}
-
-	return false;
-}
-
-static void halbtc8723b2ant_UpdateBtLinkInfo(struct btc_coexist *pBtCoexist)
-{
-	struct btc_bt_link_info *pBtLinkInfo = &pBtCoexist->btLinkInfo;
-	bool bBtHsOn = false;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
-
-	pBtLinkInfo->bBtLinkExist = pCoexSta->bBtLinkExist;
-	pBtLinkInfo->bScoExist = pCoexSta->bScoExist;
-	pBtLinkInfo->bA2dpExist = pCoexSta->bA2dpExist;
-	pBtLinkInfo->bPanExist = pCoexSta->bPanExist;
-	pBtLinkInfo->bHidExist = pCoexSta->bHidExist;
-
-	/*  work around for HS mode. */
-	if (bBtHsOn) {
-		pBtLinkInfo->bPanExist = true;
-		pBtLinkInfo->bBtLinkExist = true;
-	}
-
-	/*  check if Sco only */
-	if (
-		pBtLinkInfo->bScoExist &&
-		!pBtLinkInfo->bA2dpExist &&
-		!pBtLinkInfo->bPanExist &&
-		!pBtLinkInfo->bHidExist
-	)
-		pBtLinkInfo->bScoOnly = true;
-	else
-		pBtLinkInfo->bScoOnly = false;
-
-	/*  check if A2dp only */
-	if (
-		!pBtLinkInfo->bScoExist &&
-		pBtLinkInfo->bA2dpExist &&
-		!pBtLinkInfo->bPanExist &&
-		!pBtLinkInfo->bHidExist
-	)
-		pBtLinkInfo->bA2dpOnly = true;
-	else
-		pBtLinkInfo->bA2dpOnly = false;
-
-	/*  check if Pan only */
-	if (
-		!pBtLinkInfo->bScoExist &&
-		!pBtLinkInfo->bA2dpExist &&
-		pBtLinkInfo->bPanExist &&
-		!pBtLinkInfo->bHidExist
-	)
-		pBtLinkInfo->bPanOnly = true;
-	else
-		pBtLinkInfo->bPanOnly = false;
-
-	/*  check if Hid only */
-	if (
-		!pBtLinkInfo->bScoExist &&
-		!pBtLinkInfo->bA2dpExist &&
-		!pBtLinkInfo->bPanExist &&
-		pBtLinkInfo->bHidExist
-	)
-		pBtLinkInfo->bHidOnly = true;
-	else
-		pBtLinkInfo->bHidOnly = false;
-}
-
-static u8 halbtc8723b2ant_ActionAlgorithm(struct btc_coexist *pBtCoexist)
-{
-	struct btc_bt_link_info *pBtLinkInfo = &pBtCoexist->btLinkInfo;
-	bool bBtHsOn = false;
-	u8 algorithm = BT_8723B_2ANT_COEX_ALGO_UNDEFINED;
-	u8 numOfDiffProfile = 0;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
-
-	if (!pBtLinkInfo->bBtLinkExist)
-		return algorithm;
-
-	if (pBtLinkInfo->bScoExist)
-		numOfDiffProfile++;
-
-	if (pBtLinkInfo->bHidExist)
-		numOfDiffProfile++;
-
-	if (pBtLinkInfo->bPanExist)
-		numOfDiffProfile++;
-
-	if (pBtLinkInfo->bA2dpExist)
-		numOfDiffProfile++;
-
-	if (numOfDiffProfile == 1) {
-		if (pBtLinkInfo->bScoExist) {
-			algorithm = BT_8723B_2ANT_COEX_ALGO_SCO;
-		} else {
-			if (pBtLinkInfo->bHidExist) {
-				algorithm = BT_8723B_2ANT_COEX_ALGO_HID;
-			} else if (pBtLinkInfo->bA2dpExist) {
-				algorithm = BT_8723B_2ANT_COEX_ALGO_A2DP;
-			} else if (pBtLinkInfo->bPanExist) {
-				if (bBtHsOn) {
-					algorithm = BT_8723B_2ANT_COEX_ALGO_PANHS;
-				} else {
-					algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR;
-				}
-			}
-		}
-	} else if (numOfDiffProfile == 2) {
-		if (pBtLinkInfo->bScoExist) {
-			if (pBtLinkInfo->bHidExist) {
-				algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR_HID;
-			} else if (pBtLinkInfo->bA2dpExist) {
-				algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR_HID;
-			} else if (pBtLinkInfo->bPanExist) {
-				if (bBtHsOn) {
-					algorithm = BT_8723B_2ANT_COEX_ALGO_SCO;
-				} else {
-					algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR_HID;
-				}
-			}
-		} else {
-			if (
-				pBtLinkInfo->bHidExist &&
-				pBtLinkInfo->bA2dpExist
-			) {
-				algorithm = BT_8723B_2ANT_COEX_ALGO_HID_A2DP;
-			} else if (
-				pBtLinkInfo->bHidExist &&
-				pBtLinkInfo->bPanExist
-			) {
-				if (bBtHsOn) {
-					algorithm = BT_8723B_2ANT_COEX_ALGO_HID;
-				} else {
-					algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR_HID;
-				}
-			} else if (
-				pBtLinkInfo->bPanExist &&
-				pBtLinkInfo->bA2dpExist
-			) {
-				if (bBtHsOn) {
-					algorithm = BT_8723B_2ANT_COEX_ALGO_A2DP_PANHS;
-				} else {
-					algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR_A2DP;
-				}
-			}
-		}
-	} else if (numOfDiffProfile == 3) {
-		if (pBtLinkInfo->bScoExist) {
-			if (
-				pBtLinkInfo->bHidExist &&
-				pBtLinkInfo->bA2dpExist
-			) {
-				algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR_HID;
-			} else if (
-				pBtLinkInfo->bHidExist &&
-				pBtLinkInfo->bPanExist
-			) {
-				algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR_HID;
-			} else if (
-				pBtLinkInfo->bPanExist &&
-				pBtLinkInfo->bA2dpExist
-			) {
-				algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR_HID;
-			}
-		} else {
-			if (
-				pBtLinkInfo->bHidExist &&
-				pBtLinkInfo->bPanExist &&
-				pBtLinkInfo->bA2dpExist
-			) {
-				if (bBtHsOn) {
-					algorithm = BT_8723B_2ANT_COEX_ALGO_HID_A2DP;
-				} else {
-					algorithm = BT_8723B_2ANT_COEX_ALGO_HID_A2DP_PANEDR;
-				}
-			}
-		}
-	} else if (numOfDiffProfile >= 3) {
-		if (pBtLinkInfo->bScoExist) {
-			if (
-				pBtLinkInfo->bHidExist &&
-				pBtLinkInfo->bPanExist &&
-				pBtLinkInfo->bA2dpExist
-			) {
-				if (bBtHsOn) {
-				} else {
-					algorithm = BT_8723B_2ANT_COEX_ALGO_PANEDR_HID;
-				}
-			}
-		}
-	}
-
-	return algorithm;
-}
-
-static void halbtc8723b2ant_SetFwDacSwingLevel(
-	struct btc_coexist *pBtCoexist, u8 dacSwingLvl
-)
-{
-	u8	H2C_Parameter[1] = {0};
-
-	/*  There are several type of dacswing */
-	/*  0x18/ 0x10/ 0xc/ 0x8/ 0x4/ 0x6 */
-	H2C_Parameter[0] = dacSwingLvl;
-
-	pBtCoexist->fBtcFillH2c(pBtCoexist, 0x64, 1, H2C_Parameter);
-}
-
-static void halbtc8723b2ant_SetFwDecBtPwr(
-	struct btc_coexist *pBtCoexist, u8 decBtPwrLvl
-)
-{
-	u8	H2C_Parameter[1] = {0};
-
-	H2C_Parameter[0] = decBtPwrLvl;
-
-	pBtCoexist->fBtcFillH2c(pBtCoexist, 0x62, 1, H2C_Parameter);
-}
-
-static void halbtc8723b2ant_DecBtPwr(
-	struct btc_coexist *pBtCoexist, bool bForceExec, u8 decBtPwrLvl
-)
-{
-	pCoexDm->curBtDecPwrLvl = decBtPwrLvl;
-
-	if (!bForceExec) {
-		if (pCoexDm->preBtDecPwrLvl == pCoexDm->curBtDecPwrLvl)
-			return;
-	}
-	halbtc8723b2ant_SetFwDecBtPwr(pBtCoexist, pCoexDm->curBtDecPwrLvl);
-
-	pCoexDm->preBtDecPwrLvl = pCoexDm->curBtDecPwrLvl;
-}
-
-static void halbtc8723b2ant_FwDacSwingLvl(
-	struct btc_coexist *pBtCoexist, bool bForceExec, u8 fwDacSwingLvl
-)
-{
-	pCoexDm->curFwDacSwingLvl = fwDacSwingLvl;
-
-	if (!bForceExec) {
-		if (pCoexDm->preFwDacSwingLvl == pCoexDm->curFwDacSwingLvl)
-			return;
-	}
-
-	halbtc8723b2ant_SetFwDacSwingLevel(pBtCoexist, pCoexDm->curFwDacSwingLvl);
-
-	pCoexDm->preFwDacSwingLvl = pCoexDm->curFwDacSwingLvl;
-}
-
-static void halbtc8723b2ant_SetSwRfRxLpfCorner(
-	struct btc_coexist *pBtCoexist,
-	bool bRxRfShrinkOn
-)
-{
-	if (bRxRfShrinkOn) {
-		/* Shrink RF Rx LPF corner */
-		pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff, 0xffffc);
-	} else {
-		/* Resume RF Rx LPF corner */
-		/*  After initialized, we can use pCoexDm->btRf0x1eBackup */
-		if (pBtCoexist->bInitilized) {
-			pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff, pCoexDm->btRf0x1eBackup);
-		}
-	}
-}
-
-static void halbtc8723b2ant_RfShrink(
-	struct btc_coexist *pBtCoexist, bool bForceExec, bool bRxRfShrinkOn
-)
-{
-	pCoexDm->bCurRfRxLpfShrink = bRxRfShrinkOn;
-
-	if (!bForceExec) {
-		if (pCoexDm->bPreRfRxLpfShrink == pCoexDm->bCurRfRxLpfShrink)
-			return;
-	}
-	halbtc8723b2ant_SetSwRfRxLpfCorner(pBtCoexist, pCoexDm->bCurRfRxLpfShrink);
-
-	pCoexDm->bPreRfRxLpfShrink = pCoexDm->bCurRfRxLpfShrink;
-}
-
-static void halbtc8723b2ant_SetSwPenaltyTxRateAdaptive(
-	struct btc_coexist *pBtCoexist, bool bLowPenaltyRa
-)
-{
-	u8	H2C_Parameter[6] = {0};
-
-	H2C_Parameter[0] = 0x6;	/*  opCode, 0x6 = Retry_Penalty */
-
-	if (bLowPenaltyRa) {
-		H2C_Parameter[1] |= BIT(0);
-		H2C_Parameter[2] = 0x00;  /* normal rate except MCS7/6/5, OFDM54/48/36 */
-		H2C_Parameter[3] = 0xf7;  /* MCS7 or OFDM54 */
-		H2C_Parameter[4] = 0xf8;  /* MCS6 or OFDM48 */
-		H2C_Parameter[5] = 0xf9;	/* MCS5 or OFDM36 */
-	}
-
-	pBtCoexist->fBtcFillH2c(pBtCoexist, 0x69, 6, H2C_Parameter);
-}
-
-static void halbtc8723b2ant_LowPenaltyRa(
-	struct btc_coexist *pBtCoexist, bool bForceExec, bool bLowPenaltyRa
-)
-{
-	/* return; */
-	pCoexDm->bCurLowPenaltyRa = bLowPenaltyRa;
-
-	if (!bForceExec) {
-		if (pCoexDm->bPreLowPenaltyRa == pCoexDm->bCurLowPenaltyRa)
-			return;
-	}
-	halbtc8723b2ant_SetSwPenaltyTxRateAdaptive(pBtCoexist, pCoexDm->bCurLowPenaltyRa);
-
-	pCoexDm->bPreLowPenaltyRa = pCoexDm->bCurLowPenaltyRa;
-}
-
-static void halbtc8723b2ant_SetDacSwingReg(struct btc_coexist *pBtCoexist, u32 level)
-{
-	u8 val = (u8)level;
-
-	pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x883, 0x3e, val);
-}
-
-static void halbtc8723b2ant_SetSwFullTimeDacSwing(
-	struct btc_coexist *pBtCoexist, bool bSwDacSwingOn, u32 swDacSwingLvl
-)
-{
-	if (bSwDacSwingOn)
-		halbtc8723b2ant_SetDacSwingReg(pBtCoexist, swDacSwingLvl);
-	else
-		halbtc8723b2ant_SetDacSwingReg(pBtCoexist, 0x18);
-}
-
-static void halbtc8723b2ant_DacSwing(
-	struct btc_coexist *pBtCoexist,
-	bool bForceExec,
-	bool bDacSwingOn,
-	u32 dacSwingLvl
-)
-{
-	pCoexDm->bCurDacSwingOn = bDacSwingOn;
-	pCoexDm->curDacSwingLvl = dacSwingLvl;
-
-	if (!bForceExec) {
-		if ((pCoexDm->bPreDacSwingOn == pCoexDm->bCurDacSwingOn) &&
-			(pCoexDm->preDacSwingLvl == pCoexDm->curDacSwingLvl))
-			return;
-	}
-	mdelay(30);
-	halbtc8723b2ant_SetSwFullTimeDacSwing(pBtCoexist, bDacSwingOn, dacSwingLvl);
-
-	pCoexDm->bPreDacSwingOn = pCoexDm->bCurDacSwingOn;
-	pCoexDm->preDacSwingLvl = pCoexDm->curDacSwingLvl;
-}
-
-static void halbtc8723b2ant_SetAgcTable(
-	struct btc_coexist *pBtCoexist, bool bAgcTableEn
-)
-{
-	u8 rssiAdjustVal = 0;
-
-	/* BB AGC Gain Table */
-	if (bAgcTableEn) {
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x6e1A0001);
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x6d1B0001);
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x6c1C0001);
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x6b1D0001);
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x6a1E0001);
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x691F0001);
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0x68200001);
-	} else {
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xaa1A0001);
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa91B0001);
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa81C0001);
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa71D0001);
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa61E0001);
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa51F0001);
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0xc78, 0xa4200001);
-	}
-
-	/* RF Gain */
-	pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0xef, 0xfffff, 0x02000);
-	if (bAgcTableEn) {
-		pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x38fff);
-		pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x38ffe);
-	} else {
-		pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x380c3);
-		pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x3b, 0xfffff, 0x28ce6);
-	}
-	pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0xef, 0xfffff, 0x0);
-
-	pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0xed, 0xfffff, 0x1);
-	if (bAgcTableEn) {
-		pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x40, 0xfffff, 0x38fff);
-		pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x40, 0xfffff, 0x38ffe);
-	} else {
-		pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x40, 0xfffff, 0x380c3);
-		pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x40, 0xfffff, 0x28ce6);
-	}
-	pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0xed, 0xfffff, 0x0);
-
-	/*  set rssiAdjustVal for wifi module. */
-	if (bAgcTableEn)
-		rssiAdjustVal = 8;
-
-	pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON, &rssiAdjustVal);
-}
-
-static void halbtc8723b2ant_AgcTable(
-	struct btc_coexist *pBtCoexist, bool bForceExec, bool bAgcTableEn
-)
-{
-	pCoexDm->bCurAgcTableEn = bAgcTableEn;
-
-	if (!bForceExec) {
-		if (pCoexDm->bPreAgcTableEn == pCoexDm->bCurAgcTableEn)
-			return;
-	}
-	halbtc8723b2ant_SetAgcTable(pBtCoexist, bAgcTableEn);
-
-	pCoexDm->bPreAgcTableEn = pCoexDm->bCurAgcTableEn;
-}
-
-static void halbtc8723b2ant_SetCoexTable(
-	struct btc_coexist *pBtCoexist,
-	u32 val0x6c0,
-	u32 val0x6c4,
-	u32 val0x6c8,
-	u8 val0x6cc
-)
-{
-	pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x6c0, val0x6c0);
-
-	pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x6c4, val0x6c4);
-
-	pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x6c8, val0x6c8);
-
-	pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x6cc, val0x6cc);
-}
-
-static void halbtc8723b2ant_CoexTable(
-	struct btc_coexist *pBtCoexist,
-	bool bForceExec,
-	u32 val0x6c0,
-	u32 val0x6c4,
-	u32 val0x6c8,
-	u8 val0x6cc
-)
-{
-	pCoexDm->curVal0x6c0 = val0x6c0;
-	pCoexDm->curVal0x6c4 = val0x6c4;
-	pCoexDm->curVal0x6c8 = val0x6c8;
-	pCoexDm->curVal0x6cc = val0x6cc;
-
-	if (!bForceExec) {
-		if (
-			(pCoexDm->preVal0x6c0 == pCoexDm->curVal0x6c0) &&
-			(pCoexDm->preVal0x6c4 == pCoexDm->curVal0x6c4) &&
-			(pCoexDm->preVal0x6c8 == pCoexDm->curVal0x6c8) &&
-			(pCoexDm->preVal0x6cc == pCoexDm->curVal0x6cc)
-		)
-			return;
-	}
-	halbtc8723b2ant_SetCoexTable(pBtCoexist, val0x6c0, val0x6c4, val0x6c8, val0x6cc);
-
-	pCoexDm->preVal0x6c0 = pCoexDm->curVal0x6c0;
-	pCoexDm->preVal0x6c4 = pCoexDm->curVal0x6c4;
-	pCoexDm->preVal0x6c8 = pCoexDm->curVal0x6c8;
-	pCoexDm->preVal0x6cc = pCoexDm->curVal0x6cc;
-}
-
-static void halbtc8723b2ant_CoexTableWithType(
-	struct btc_coexist *pBtCoexist, bool bForceExec, u8 type
-)
-{
-	switch (type) {
-	case 0:
-		halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55555555, 0x55555555, 0xffff, 0x3);
-		break;
-	case 1:
-		halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55555555, 0x5afa5afa, 0xffff, 0x3);
-		break;
-	case 2:
-		halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x5a5a5a5a, 0x5a5a5a5a, 0xffff, 0x3);
-		break;
-	case 3:
-		halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0xaaaaaaaa, 0xaaaaaaaa, 0xffff, 0x3);
-		break;
-	case 4:
-		halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0xffffffff, 0xffffffff, 0xffff, 0x3);
-		break;
-	case 5:
-		halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x5fff5fff, 0x5fff5fff, 0xffff, 0x3);
-		break;
-	case 6:
-		halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55ff55ff, 0x5a5a5a5a, 0xffff, 0x3);
-		break;
-	case 7:
-		halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55ff55ff, 0xfafafafa, 0xffff, 0x3);
-		break;
-	case 8:
-		halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x5aea5aea, 0x5aea5aea, 0xffff, 0x3);
-		break;
-	case 9:
-		halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55ff55ff, 0x5aea5aea, 0xffff, 0x3);
-		break;
-	case 10:
-		halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55ff55ff, 0x5aff5aff, 0xffff, 0x3);
-		break;
-	case 11:
-		halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55ff55ff, 0x5a5f5a5f, 0xffff, 0x3);
-		break;
-	case 12:
-		halbtc8723b2ant_CoexTable(pBtCoexist, bForceExec, 0x55ff55ff, 0x5f5f5f5f, 0xffff, 0x3);
-		break;
-	default:
-		break;
-	}
-}
-
-static void halbtc8723b2ant_SetFwIgnoreWlanAct(
-	struct btc_coexist *pBtCoexist, bool bEnable
-)
-{
-	u8	H2C_Parameter[1] = {0};
-
-	if (bEnable)
-		H2C_Parameter[0] |= BIT(0);		/*  function enable */
-
-	pBtCoexist->fBtcFillH2c(pBtCoexist, 0x63, 1, H2C_Parameter);
-}
-
-static void halbtc8723b2ant_IgnoreWlanAct(
-	struct btc_coexist *pBtCoexist, bool bForceExec, bool bEnable
-)
-{
-	pCoexDm->bCurIgnoreWlanAct = bEnable;
-
-	if (!bForceExec) {
-		if (pCoexDm->bPreIgnoreWlanAct == pCoexDm->bCurIgnoreWlanAct)
-			return;
-	}
-	halbtc8723b2ant_SetFwIgnoreWlanAct(pBtCoexist, bEnable);
-
-	pCoexDm->bPreIgnoreWlanAct = pCoexDm->bCurIgnoreWlanAct;
-}
-
-static void halbtc8723b2ant_SetFwPstdma(
-	struct btc_coexist *pBtCoexist,
-	u8 byte1,
-	u8 byte2,
-	u8 byte3,
-	u8 byte4,
-	u8 byte5
-)
-{
-	u8	H2C_Parameter[5] = {0};
-
-	H2C_Parameter[0] = byte1;
-	H2C_Parameter[1] = byte2;
-	H2C_Parameter[2] = byte3;
-	H2C_Parameter[3] = byte4;
-	H2C_Parameter[4] = byte5;
-
-	pCoexDm->psTdmaPara[0] = byte1;
-	pCoexDm->psTdmaPara[1] = byte2;
-	pCoexDm->psTdmaPara[2] = byte3;
-	pCoexDm->psTdmaPara[3] = byte4;
-	pCoexDm->psTdmaPara[4] = byte5;
-
-	pBtCoexist->fBtcFillH2c(pBtCoexist, 0x60, 5, H2C_Parameter);
-}
-
-static void halbtc8723b2ant_SwMechanism1(
-	struct btc_coexist *pBtCoexist,
-	bool bShrinkRxLPF,
-	bool bLowPenaltyRA,
-	bool bLimitedDIG,
-	bool bBTLNAConstrain
-)
-{
-	halbtc8723b2ant_RfShrink(pBtCoexist, NORMAL_EXEC, bShrinkRxLPF);
-	halbtc8723b2ant_LowPenaltyRa(pBtCoexist, NORMAL_EXEC, bLowPenaltyRA);
-}
-
-static void halbtc8723b2ant_SwMechanism2(
-	struct btc_coexist *pBtCoexist,
-	bool bAGCTableShift,
-	bool bADCBackOff,
-	bool bSWDACSwing,
-	u32 dacSwingLvl
-)
-{
-	halbtc8723b2ant_AgcTable(pBtCoexist, NORMAL_EXEC, bAGCTableShift);
-	halbtc8723b2ant_DacSwing(pBtCoexist, NORMAL_EXEC, bSWDACSwing, dacSwingLvl);
-}
-
-static void halbtc8723b2ant_SetAntPath(
-	struct btc_coexist *pBtCoexist, u8 antPosType, bool bInitHwCfg, bool bWifiOff
-)
-{
-	struct btc_board_info *pBoardInfo = &pBtCoexist->boardInfo;
-	u32 fwVer = 0, u4Tmp = 0;
-	bool bPgExtSwitch = false;
-	bool bUseExtSwitch = false;
-	u8	H2C_Parameter[2] = {0};
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_EXT_SWITCH, &bPgExtSwitch);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer);	/*  [31:16]=fw ver, [15:0]=fw sub ver */
-
-	if ((fwVer > 0 && fwVer < 0xc0000) || bPgExtSwitch)
-		bUseExtSwitch = true;
-
-	if (bInitHwCfg) {
-		pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x39, 0x8, 0x1);
-		pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x974, 0xff);
-		pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x944, 0x3, 0x3);
-		pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x930, 0x77);
-		pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1);
-
-		if (fwVer >= 0x180000) {
-			/* Use H2C to set GNT_BT to LOW */
-			H2C_Parameter[0] = 0;
-			pBtCoexist->fBtcFillH2c(pBtCoexist, 0x6E, 1, H2C_Parameter);
-		} else {
-			pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x765, 0x0);
-		}
-
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0);
-
-		pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); /* WiFi TRx Mask off */
-		pBtCoexist->fBtcSetBtReg(pBtCoexist, BTC_BT_REG_RF, 0x3c, 0x01); /* BT TRx Mask off */
-
-		if (pBoardInfo->btdmAntPos == BTC_ANTENNA_AT_MAIN_PORT) {
-			/* tell firmware "no antenna inverse" */
-			H2C_Parameter[0] = 0;
-		} else {
-			/* tell firmware "antenna inverse" */
-			H2C_Parameter[0] = 1;
-		}
-
-		if (bUseExtSwitch) {
-			/* ext switch type */
-			H2C_Parameter[1] = 1;
-		} else {
-			/* int switch type */
-			H2C_Parameter[1] = 0;
-		}
-		pBtCoexist->fBtcFillH2c(pBtCoexist, 0x65, 2, H2C_Parameter);
-	}
-
-	/*  ext switch setting */
-	if (bUseExtSwitch) {
-		if (bInitHwCfg) {
-			/*  0x4c[23]= 0, 0x4c[24]= 1  Antenna control by WL/BT */
-			u4Tmp = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x4c);
-			u4Tmp &= ~BIT(23);
-			u4Tmp |= BIT(24);
-			pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x4c, u4Tmp);
-		}
-
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0); /*  fixed internal switch S1->WiFi, S0->BT */
-		switch (antPosType) {
-		case BTC_ANT_WIFI_AT_MAIN:
-			pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x92c, 0x3, 0x1);	/*  ext switch main at wifi */
-			break;
-		case BTC_ANT_WIFI_AT_AUX:
-			pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x92c, 0x3, 0x2);	/*  ext switch aux at wifi */
-			break;
-		}
-	} else { /*  internal switch */
-		if (bInitHwCfg) {
-			/*  0x4c[23]= 0, 0x4c[24]= 1  Antenna control by WL/BT */
-			u4Tmp = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x4c);
-			u4Tmp |= BIT(23);
-			u4Tmp &= ~BIT(24);
-			pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x4c, u4Tmp);
-		}
-
-		pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x64, 0x1, 0x0); /* fixed external switch S1->Main, S0->Aux */
-		switch (antPosType) {
-		case BTC_ANT_WIFI_AT_MAIN:
-			pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0); /*  fixed internal switch S1->WiFi, S0->BT */
-			break;
-		case BTC_ANT_WIFI_AT_AUX:
-			pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x280); /*  fixed internal switch S0->WiFi, S1->BT */
-			break;
-		}
-	}
-}
-
-static void halbtc8723b2ant_PsTdma(
-	struct btc_coexist *pBtCoexist, bool bForceExec, bool bTurnOn, u8 type
-)
-{
-	pCoexDm->bCurPsTdmaOn = bTurnOn;
-	pCoexDm->curPsTdma = type;
-
-	if (!bForceExec) {
-		if (
-			(pCoexDm->bPrePsTdmaOn == pCoexDm->bCurPsTdmaOn) &&
-			(pCoexDm->prePsTdma == pCoexDm->curPsTdma)
-		)
-			return;
-	}
-
-	if (bTurnOn) {
-		switch (type) {
-		case 1:
-		default:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0xe1, 0x90);
-			break;
-		case 2:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0xe1, 0x90);
-			break;
-		case 3:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1c, 0x3, 0xf1, 0x90);
-			break;
-		case 4:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x10, 0x03, 0xf1, 0x90);
-			break;
-		case 5:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0x60, 0x90);
-			break;
-		case 6:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0x60, 0x90);
-			break;
-		case 7:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1c, 0x3, 0x70, 0x90);
-			break;
-		case 8:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xa3, 0x10, 0x3, 0x70, 0x90);
-			break;
-		case 9:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0xe1, 0x90);
-			break;
-		case 10:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0xe1, 0x90);
-			break;
-		case 11:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0xa, 0xa, 0xe1, 0x90);
-			break;
-		case 12:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x5, 0x5, 0xe1, 0x90);
-			break;
-		case 13:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0x60, 0x90);
-			break;
-		case 14:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x12, 0x12, 0x60, 0x90);
-			break;
-		case 15:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0xa, 0xa, 0x60, 0x90);
-			break;
-		case 16:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x5, 0x5, 0x60, 0x90);
-			break;
-		case 17:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xa3, 0x2f, 0x2f, 0x60, 0x90);
-			break;
-		case 18:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x5, 0x5, 0xe1, 0x90);
-			break;
-		case 19:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x25, 0x25, 0xe1, 0x90);
-			break;
-		case 20:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x25, 0x25, 0x60, 0x90);
-			break;
-		case 21:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x15, 0x03, 0x70, 0x90);
-			break;
-		case 71:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0xe3, 0x1a, 0x1a, 0xe1, 0x90);
-			break;
-		}
-	} else {
-		/*  disable PS tdma */
-		switch (type) {
-		case 0:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0x0, 0x0, 0x0, 0x40, 0x0);
-			break;
-		case 1:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0x0, 0x0, 0x0, 0x48, 0x0);
-			break;
-		default:
-			halbtc8723b2ant_SetFwPstdma(pBtCoexist, 0x0, 0x0, 0x0, 0x40, 0x0);
-			break;
-		}
-	}
-
-	/*  update pre state */
-	pCoexDm->bPrePsTdmaOn = pCoexDm->bCurPsTdmaOn;
-	pCoexDm->prePsTdma = pCoexDm->curPsTdma;
-}
-
-static void halbtc8723b2ant_CoexAllOff(struct btc_coexist *pBtCoexist)
-{
-	/*  fw all off */
-	halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 1);
-	halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
-	halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-
-	/*  sw all off */
-	halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-	halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-
-	/*  hw all off */
-	/* pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0); */
-	halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
-}
-
-static void halbtc8723b2ant_InitCoexDm(struct btc_coexist *pBtCoexist)
-{
-	/*  force to reset coex mechanism */
-
-	halbtc8723b2ant_PsTdma(pBtCoexist, FORCE_EXEC, false, 1);
-	halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, FORCE_EXEC, 6);
-	halbtc8723b2ant_DecBtPwr(pBtCoexist, FORCE_EXEC, 0);
-
-	halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-	halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-}
-
-static void halbtc8723b2ant_ActionBtInquiry(struct btc_coexist *pBtCoexist)
-{
-	bool bWifiConnected = false;
-	bool bLowPwrDisable = true;
-
-	pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
-
-	if (bWifiConnected) {
-		halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
-		halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 3);
-	} else {
-		halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
-		halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 1);
-	}
-
-	halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, FORCE_EXEC, 6);
-	halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-
-	halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-	halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-
-	pCoexDm->bNeedRecover0x948 = true;
-	pCoexDm->backup0x948 = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x948);
-
-	halbtc8723b2ant_SetAntPath(pBtCoexist, BTC_ANT_WIFI_AT_AUX, false, false);
-}
-
-static bool halbtc8723b2ant_IsCommonAction(struct btc_coexist *pBtCoexist)
-{
-	u8 btRssiState = BTC_RSSI_STATE_HIGH;
-	bool bCommon = false, bWifiConnected = false, bWifiBusy = false;
-	bool bBtHsOn = false, bLowPwrDisable = false;
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_HS_OPERATION, &bBtHsOn);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_BUSY, &bWifiBusy);
-
-	if (!bWifiConnected) {
-		bLowPwrDisable = false;
-		pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable);
-		halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
-
-		pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-		halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
-		halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 1);
-		halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-
-		halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-		halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-
-		bCommon = true;
-	} else {
-		if (pCoexDm->btStatus == BT_8723B_2ANT_BT_STATUS_NON_CONNECTED_IDLE) {
-			bLowPwrDisable = false;
-			pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable);
-			halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
-
-			pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-			halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
-			halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 1);
-			halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 0xb);
-			halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-
-			bCommon = true;
-		} else if (pCoexDm->btStatus == BT_8723B_2ANT_BT_STATUS_CONNECTED_IDLE) {
-			bLowPwrDisable = true;
-			pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable);
-
-			if (bBtHsOn)
-				return false;
-
-			halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
-
-			pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-			halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
-			halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 1);
-			halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 0xb);
-			halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-
-			bCommon = true;
-		} else {
-			bLowPwrDisable = true;
-			pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_ACT_DISABLE_LOW_POWER, &bLowPwrDisable);
-
-			if (bWifiBusy) {
-				bCommon = false;
-			} else {
-				if (bBtHsOn)
-					return false;
-
-				btRssiState = halbtc8723b2ant_BtRssiState(2, 29, 0);
-				halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
-
-				pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-				halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
-				halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 21);
-				halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 0xb);
-
-				if (BTC_RSSI_HIGH(btRssiState))
-					halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
-				else
-					halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-
-				halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-				halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-				bCommon = true;
-			}
-		}
-	}
-
-	return bCommon;
-}
-
-static void halbtc8723b2ant_TdmaDurationAdjust(
-	struct btc_coexist *pBtCoexist, bool bScoHid, bool bTxPause, u8 maxInterval
-)
-{
-	static s32 up, dn, m, n, WaitCount;
-	s32 result;   /* 0: no change, +1: increase WiFi duration, -1: decrease WiFi duration */
-	u8 retryCount = 0;
-
-	if (!pCoexDm->bAutoTdmaAdjust) {
-		pCoexDm->bAutoTdmaAdjust = true;
-		{
-			if (bScoHid) {
-				if (bTxPause) {
-					if (maxInterval == 1)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(13);
-					else if (maxInterval == 2)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(14);
-					else
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(15);
-				} else {
-					if (maxInterval == 1)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(9);
-					else if (maxInterval == 2)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(10);
-					else
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(11);
-				}
-			} else {
-				if (bTxPause) {
-					if (maxInterval == 1)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(5);
-					else if (maxInterval == 2)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(6);
-					else
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(7);
-				} else {
-					if (maxInterval == 1)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(1);
-					else if (maxInterval == 2)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(2);
-					else
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(3);
-				}
-			}
-		}
-		/*  */
-		up = 0;
-		dn = 0;
-		m = 1;
-		n = 3;
-		result = 0;
-		WaitCount = 0;
-	} else {
-		/* acquire the BT TRx retry count from BT_Info byte2 */
-		retryCount = pCoexSta->btRetryCnt;
-		result = 0;
-		WaitCount++;
-
-		if (retryCount == 0) { /*  no retry in the last 2-second duration */
-			up++;
-			dn--;
-
-			if (dn <= 0)
-				dn = 0;
-
-			if (up >= n) { /*  if 連續 n 個2秒 retry count為0, 則調寬WiFi duration */
-				WaitCount = 0;
-				n = 3;
-				up = 0;
-				dn = 0;
-				result = 1;
-			}
-		} else if (retryCount <= 3) { /*  <=3 retry in the last 2-second duration */
-			up--;
-			dn++;
-
-			if (up <= 0)
-				up = 0;
-
-			if (dn == 2) { /*  if 連續 2 個2秒 retry count< 3, 則調窄WiFi duration */
-				if (WaitCount <= 2)
-					m++; /*  避免一直在兩個level中來回 */
-				else
-					m = 1;
-
-				if (m >= 20) /* m 最大值 = 20 ' 最大120秒 recheck是否調整 WiFi duration. */
-					m = 20;
-
-				n = 3 * m;
-				up = 0;
-				dn = 0;
-				WaitCount = 0;
-				result = -1;
-			}
-		} else { /* retry count > 3, 只要1次 retry count > 3, 則調窄WiFi duration */
-			if (WaitCount == 1)
-				m++; /*  避免一直在兩個level中來回 */
-			else
-				m = 1;
-
-			if (m >= 20) /* m 最大值 = 20 ' 最大120秒 recheck是否調整 WiFi duration. */
-				m = 20;
-
-			n = 3 * m;
-			up = 0;
-			dn = 0;
-			WaitCount = 0;
-			result = -1;
-		}
-
-		if (maxInterval == 1) {
-			if (bTxPause) {
-				if (pCoexDm->curPsTdma == 71)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(5);
-				else if (pCoexDm->curPsTdma == 1)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(5);
-				else if (pCoexDm->curPsTdma == 2)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(6);
-				else if (pCoexDm->curPsTdma == 3)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(7);
-				else if (pCoexDm->curPsTdma == 4)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(8);
-
-				if (pCoexDm->curPsTdma == 9)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(13);
-				else if (pCoexDm->curPsTdma == 10)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(14);
-				else if (pCoexDm->curPsTdma == 11)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(15);
-				else if (pCoexDm->curPsTdma == 12)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(16);
-
-				if (result == -1) {
-					if (pCoexDm->curPsTdma == 5)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(6);
-					else if (pCoexDm->curPsTdma == 6)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(7);
-					else if (pCoexDm->curPsTdma == 7)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(8);
-					else if (pCoexDm->curPsTdma == 13)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(14);
-					else if (pCoexDm->curPsTdma == 14)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(15);
-					else if (pCoexDm->curPsTdma == 15)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(16);
-				} else if (result == 1) {
-					if (pCoexDm->curPsTdma == 8)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(7);
-					else if (pCoexDm->curPsTdma == 7)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(6);
-					else if (pCoexDm->curPsTdma == 6)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(5);
-					else if (pCoexDm->curPsTdma == 16)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(15);
-					else if (pCoexDm->curPsTdma == 15)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(14);
-					else if (pCoexDm->curPsTdma == 14)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(13);
-				}
-			} else {
-				if (pCoexDm->curPsTdma == 5)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(71);
-				else if (pCoexDm->curPsTdma == 6)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(2);
-				else if (pCoexDm->curPsTdma == 7)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(3);
-				else if (pCoexDm->curPsTdma == 8)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(4);
-
-				if (pCoexDm->curPsTdma == 13)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(9);
-				else if (pCoexDm->curPsTdma == 14)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(10);
-				else if (pCoexDm->curPsTdma == 15)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(11);
-				else if (pCoexDm->curPsTdma == 16)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(12);
-
-				if (result == -1) {
-					if (pCoexDm->curPsTdma == 71)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(1);
-					else if (pCoexDm->curPsTdma == 1)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(2);
-					else if (pCoexDm->curPsTdma == 2)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(3);
-					else if (pCoexDm->curPsTdma == 3)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(4);
-					else if (pCoexDm->curPsTdma == 9)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(10);
-					else if (pCoexDm->curPsTdma == 10)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(11);
-					else if (pCoexDm->curPsTdma == 11)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(12);
-				} else if (result == 1) {
-					if (pCoexDm->curPsTdma == 4)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(3);
-					else if (pCoexDm->curPsTdma == 3)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(2);
-					else if (pCoexDm->curPsTdma == 2)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(1);
-					else if (pCoexDm->curPsTdma == 1)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(71);
-					else if (pCoexDm->curPsTdma == 12)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(11);
-					else if (pCoexDm->curPsTdma == 11)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(10);
-					else if (pCoexDm->curPsTdma == 10)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(9);
-				}
-			}
-		} else if (maxInterval == 2) {
-			if (bTxPause) {
-				if (pCoexDm->curPsTdma == 1)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(6);
-				else if (pCoexDm->curPsTdma == 2)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(6);
-				else if (pCoexDm->curPsTdma == 3)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(7);
-				else if (pCoexDm->curPsTdma == 4)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(8);
-
-				if (pCoexDm->curPsTdma == 9)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(14);
-				else if (pCoexDm->curPsTdma == 10)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(14);
-				else if (pCoexDm->curPsTdma == 11)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(15);
-				else if (pCoexDm->curPsTdma == 12)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(16);
-
-				if (result == -1) {
-					if (pCoexDm->curPsTdma == 5)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(6);
-					else if (pCoexDm->curPsTdma == 6)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(7);
-					else if (pCoexDm->curPsTdma == 7)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(8);
-					else if (pCoexDm->curPsTdma == 13)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(14);
-					else if (pCoexDm->curPsTdma == 14)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(15);
-					else if (pCoexDm->curPsTdma == 15)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(16);
-				} else if (result == 1) {
-					if (pCoexDm->curPsTdma == 8)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(7);
-					else if (pCoexDm->curPsTdma == 7)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(6);
-					else if (pCoexDm->curPsTdma == 6)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(6);
-					else if (pCoexDm->curPsTdma == 16)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(15);
-					else if (pCoexDm->curPsTdma == 15)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(14);
-					else if (pCoexDm->curPsTdma == 14)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(14);
-				}
-			} else {
-				if (pCoexDm->curPsTdma == 5)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(2);
-				else if (pCoexDm->curPsTdma == 6)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(2);
-				else if (pCoexDm->curPsTdma == 7)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(3);
-				else if (pCoexDm->curPsTdma == 8)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(4);
-
-				if (pCoexDm->curPsTdma == 13)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(10);
-				else if (pCoexDm->curPsTdma == 14)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(10);
-				else if (pCoexDm->curPsTdma == 15)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(11);
-				else if (pCoexDm->curPsTdma == 16)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(12);
-
-				if (result == -1) {
-					if (pCoexDm->curPsTdma == 1)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(2);
-					else if (pCoexDm->curPsTdma == 2)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(3);
-					else if (pCoexDm->curPsTdma == 3)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(4);
-					else if (pCoexDm->curPsTdma == 9)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(10);
-					else if (pCoexDm->curPsTdma == 10)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(11);
-					else if (pCoexDm->curPsTdma == 11)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(12);
-				} else if (result == 1) {
-					if (pCoexDm->curPsTdma == 4)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(3);
-					else if (pCoexDm->curPsTdma == 3)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(2);
-					else if (pCoexDm->curPsTdma == 2)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(2);
-					else if (pCoexDm->curPsTdma == 12)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(11);
-					else if (pCoexDm->curPsTdma == 11)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(10);
-					else if (pCoexDm->curPsTdma == 10)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(10);
-				}
-			}
-		} else if (maxInterval == 3) {
-			if (bTxPause) {
-				if (pCoexDm->curPsTdma == 1)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(7);
-				else if (pCoexDm->curPsTdma == 2)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(7);
-				else if (pCoexDm->curPsTdma == 3)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(7);
-				else if (pCoexDm->curPsTdma == 4)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(8);
-
-				if (pCoexDm->curPsTdma == 9)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(15);
-				else if (pCoexDm->curPsTdma == 10)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(15);
-				else if (pCoexDm->curPsTdma == 11)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(15);
-				else if (pCoexDm->curPsTdma == 12)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(16);
-
-				if (result == -1) {
-					if (pCoexDm->curPsTdma == 5)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(7);
-					else if (pCoexDm->curPsTdma == 6)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(7);
-					else if (pCoexDm->curPsTdma == 7)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(8);
-					else if (pCoexDm->curPsTdma == 13)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(15);
-					else if (pCoexDm->curPsTdma == 14)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(15);
-					else if (pCoexDm->curPsTdma == 15)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(16);
-				} else if (result == 1) {
-					if (pCoexDm->curPsTdma == 8)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(7);
-					else if (pCoexDm->curPsTdma == 7)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(7);
-					else if (pCoexDm->curPsTdma == 6)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(7);
-					else if (pCoexDm->curPsTdma == 16)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(15);
-					else if (pCoexDm->curPsTdma == 15)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(15);
-					else if (pCoexDm->curPsTdma == 14)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(15);
-				}
-			} else {
-				if (pCoexDm->curPsTdma == 5)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(3);
-				else if (pCoexDm->curPsTdma == 6)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(3);
-				else if (pCoexDm->curPsTdma == 7)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(3);
-				else if (pCoexDm->curPsTdma == 8)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(4);
-
-				if (pCoexDm->curPsTdma == 13)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(11);
-				else if (pCoexDm->curPsTdma == 14)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(11);
-				else if (pCoexDm->curPsTdma == 15)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(11);
-				else if (pCoexDm->curPsTdma == 16)
-					HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(12);
-
-				if (result == -1) {
-					if (pCoexDm->curPsTdma == 1)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(3);
-					else if (pCoexDm->curPsTdma == 2)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(3);
-					else if (pCoexDm->curPsTdma == 3)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(4);
-					else if (pCoexDm->curPsTdma == 9)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(11);
-					else if (pCoexDm->curPsTdma == 10)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(11);
-					else if (pCoexDm->curPsTdma == 11)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(12);
-				} else if (result == 1) {
-					if (pCoexDm->curPsTdma == 4)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(3);
-					else if (pCoexDm->curPsTdma == 3)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(3);
-					else if (pCoexDm->curPsTdma == 2)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(3);
-					else if (pCoexDm->curPsTdma == 12)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(11);
-					else if (pCoexDm->curPsTdma == 11)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(11);
-					else if (pCoexDm->curPsTdma == 10)
-						HAL_BTC8723B2ANT_DMA_DURATION_ADJUST(11);
-				}
-			}
-		}
-	}
-
-	/*  if current PsTdma not match with the recorded one (when scan, dhcp...), */
-	/*  then we have to adjust it back to the previous record one. */
-	if (pCoexDm->curPsTdma != pCoexDm->psTdmaDuAdjType) {
-		bool bScan = false, bLink = false, bRoam = false;
-
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_SCAN, &bScan);
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_LINK, &bLink);
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_ROAM, &bRoam);
-
-		if (!bScan && !bLink && !bRoam)
-			halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, pCoexDm->psTdmaDuAdjType);
-
-	}
-}
-
-/*  SCO only or SCO+PAN(HS) */
-static void halbtc8723b2ant_ActionSco(struct btc_coexist *pBtCoexist)
-{
-	u8 wifiRssiState, btRssiState;
-	u32 wifiBw;
-
-	wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
-	btRssiState = halbtc8723b2ant_BtRssiState(2, 29, 0);
-
-	pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-
-	halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
-
-	halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 4);
-
-	if (BTC_RSSI_HIGH(btRssiState))
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
-	else
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
-
-	if (wifiBw == BTC_WIFI_BW_LEGACY) /* for SCO quality at 11b/g mode */
-		halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 2);
-	else  /* for SCO quality & wifi performance balance at 11n mode */
-		halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 8);
-
-	halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 0); /* for voice quality */
-
-	/*  sw mechanism */
-	if (wifiBw == BTC_WIFI_BW_HT40) {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, true, 0x4);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, true, 0x4);
-		}
-	} else {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, true, 0x4);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, true, 0x4);
-		}
-	}
-}
-
-static void halbtc8723b2ant_ActionHid(struct btc_coexist *pBtCoexist)
-{
-	u8 wifiRssiState, btRssiState;
-	u32 wifiBw;
-
-	wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
-	btRssiState = halbtc8723b2ant_BtRssiState(2, 29, 0);
-
-	pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-
-	halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
-
-	halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
-
-	if (BTC_RSSI_HIGH(btRssiState))
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
-	else
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
-
-	if (wifiBw == BTC_WIFI_BW_LEGACY) /* for HID at 11b/g mode */
-		halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
-	else  /* for HID quality & wifi performance balance at 11n mode */
-		halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 9);
-
-	if (
-		(btRssiState == BTC_RSSI_STATE_HIGH) ||
-		(btRssiState == BTC_RSSI_STATE_STAY_HIGH)
-	)
-		halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 9);
-	else
-		halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 13);
-
-	/*  sw mechanism */
-	if (wifiBw == BTC_WIFI_BW_HT40) {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	} else {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	}
-}
-
-/* A2DP only / PAN(EDR) only/ A2DP+PAN(HS) */
-static void halbtc8723b2ant_ActionA2dp(struct btc_coexist *pBtCoexist)
-{
-	u8 wifiRssiState, wifiRssiState1, btRssiState;
-	u32 wifiBw;
-	u8 apNum = 0;
-
-	wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
-	wifiRssiState1 = halbtc8723b2ant_WifiRssiState(pBtCoexist, 1, 2, 40, 0);
-	btRssiState = halbtc8723b2ant_BtRssiState(2, 29, 0);
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U1_AP_NUM, &apNum);
-
-	/*  define the office environment */
-	if (apNum >= 10 && BTC_RSSI_HIGH(wifiRssiState1)) {
-		pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-		halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
-		halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-		halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 0);
-		halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 1);
-
-		/*  sw mechanism */
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
-		if (wifiBw == BTC_WIFI_BW_HT40) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, true, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, true, 0x18);
-		}
-		return;
-	}
-
-	pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-	halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
-
-	halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
-
-	if (BTC_RSSI_HIGH(btRssiState))
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
-	else
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-
-	halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
-
-	if (
-		(btRssiState == BTC_RSSI_STATE_HIGH) ||
-		(btRssiState == BTC_RSSI_STATE_STAY_HIGH)
-	)
-		halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, false, false, 1);
-	else
-		halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, false, true, 1);
-
-	/*  sw mechanism */
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
-	if (wifiBw == BTC_WIFI_BW_HT40) {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	} else {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	}
-}
-
-static void halbtc8723b2ant_ActionA2dpPanHs(struct btc_coexist *pBtCoexist)
-{
-	u8 wifiRssiState, btRssiState;
-	u32 wifiBw;
-
-	wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
-	btRssiState = halbtc8723b2ant_BtRssiState(2, 29, 0);
-
-	pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-
-	halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
-
-	halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
-
-	if (BTC_RSSI_HIGH(btRssiState))
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
-	else
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-
-	halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
-
-	halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, false, true, 2);
-
-	/*  sw mechanism */
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
-	if (wifiBw == BTC_WIFI_BW_HT40) {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	} else {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	}
-}
-
-static void halbtc8723b2ant_ActionPanEdr(struct btc_coexist *pBtCoexist)
-{
-	u8 wifiRssiState, btRssiState;
-	u32 wifiBw;
-
-	wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
-	btRssiState = halbtc8723b2ant_BtRssiState(2, 29, 0);
-
-	pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-
-	halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
-
-	halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
-
-	if (BTC_RSSI_HIGH(btRssiState))
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
-	else
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-
-	halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 10);
-
-	if (
-		(btRssiState == BTC_RSSI_STATE_HIGH) ||
-		(btRssiState == BTC_RSSI_STATE_STAY_HIGH)
-	)
-		halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 1);
-	else
-		halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, true, 5);
-
-	/*  sw mechanism */
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
-	if (wifiBw == BTC_WIFI_BW_HT40) {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	} else {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	}
-}
-
-/* PAN(HS) only */
-static void halbtc8723b2ant_ActionPanHs(struct btc_coexist *pBtCoexist)
-{
-	u8 wifiRssiState, btRssiState;
-	u32 wifiBw;
-
-	wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
-	btRssiState = halbtc8723b2ant_BtRssiState(2, 29, 0);
-
-	pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-
-	halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
-
-	halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
-
-	if (BTC_RSSI_HIGH(btRssiState))
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
-	else
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-
-	halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
-
-	halbtc8723b2ant_PsTdma(pBtCoexist, NORMAL_EXEC, false, 1);
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
-	if (wifiBw == BTC_WIFI_BW_HT40) {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	} else {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	}
-}
-
-/* PAN(EDR)+A2DP */
-static void halbtc8723b2ant_ActionPanEdrA2dp(struct btc_coexist *pBtCoexist)
-{
-	u8 wifiRssiState, btRssiState;
-	u32 wifiBw;
-
-	wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
-	btRssiState = halbtc8723b2ant_BtRssiState(2, 29, 0);
-
-	pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-
-	halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
-
-	halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
-
-	if (BTC_RSSI_HIGH(btRssiState))
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
-	else
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
-
-	if (
-		(btRssiState == BTC_RSSI_STATE_HIGH) ||
-		(btRssiState == BTC_RSSI_STATE_STAY_HIGH)
-	) {
-		halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 12);
-		if (wifiBw == BTC_WIFI_BW_HT40)
-			halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, false, true, 3);
-		else
-			halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, false, false, 3);
-	} else {
-		halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
-		halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, false, true, 3);
-	}
-
-	/*  sw mechanism */
-	if (wifiBw == BTC_WIFI_BW_HT40) {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	} else {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, false, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	}
-}
-
-static void halbtc8723b2ant_ActionPanEdrHid(struct btc_coexist *pBtCoexist)
-{
-	u8 wifiRssiState, btRssiState;
-	u32 wifiBw;
-
-	wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
-	btRssiState = halbtc8723b2ant_BtRssiState(2, 29, 0);
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
-
-	halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
-
-	if (BTC_RSSI_HIGH(btRssiState))
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
-	else
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-
-	if (
-		(btRssiState == BTC_RSSI_STATE_HIGH) ||
-		(btRssiState == BTC_RSSI_STATE_STAY_HIGH)
-	) {
-		if (wifiBw == BTC_WIFI_BW_HT40) {
-			halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 3);
-			halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 11);
-			pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x780);
-		} else {
-			halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
-			halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
-			pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-		}
-		halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, true, false, 2);
-	} else {
-		halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
-		halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 11);
-		pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-		halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, true, true, 2);
-	}
-
-	/*  sw mechanism */
-	if (wifiBw == BTC_WIFI_BW_HT40) {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	} else {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	}
-}
-
-/*  HID+A2DP+PAN(EDR) */
-static void halbtc8723b2ant_ActionHidA2dpPanEdr(struct btc_coexist *pBtCoexist)
-{
-	u8 wifiRssiState, btRssiState;
-	u32 wifiBw;
-
-	wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
-	btRssiState = halbtc8723b2ant_BtRssiState(2, 29, 0);
-
-	pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-
-	halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, false, 0x8);
-
-	halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
-
-	if (BTC_RSSI_HIGH(btRssiState))
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
-	else
-		halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
-
-	halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
-
-	if (
-		(btRssiState == BTC_RSSI_STATE_HIGH) ||
-		(btRssiState == BTC_RSSI_STATE_STAY_HIGH)
-	) {
-		if (wifiBw == BTC_WIFI_BW_HT40)
-			halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, true, true, 2);
-		else
-			halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, true, false, 3);
-	} else
-		halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, true, true, 3);
-
-	/*  sw mechanism */
-	if (wifiBw == BTC_WIFI_BW_HT40) {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	} else {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	}
-}
-
-static void halbtc8723b2ant_ActionHidA2dp(struct btc_coexist *pBtCoexist)
-{
-	u8 wifiRssiState, btRssiState;
-	u32 wifiBw;
-	u8 apNum = 0;
-
-	wifiRssiState = halbtc8723b2ant_WifiRssiState(pBtCoexist, 0, 2, 15, 0);
-	/* btRssiState = halbtc8723b2ant_BtRssiState(2, 29, 0); */
-	btRssiState = halbtc8723b2ant_BtRssiState(3, 29, 37);
-
-	pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
-
-	halbtc8723b2ant_LimitedRx(pBtCoexist, NORMAL_EXEC, false, true, 0x5);
-
-	halbtc8723b2ant_FwDacSwingLvl(pBtCoexist, NORMAL_EXEC, 6);
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
-	if (wifiBw == BTC_WIFI_BW_LEGACY) {
-		if (BTC_RSSI_HIGH(btRssiState))
-			halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
-		else if (BTC_RSSI_MEDIUM(btRssiState))
-			halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
-		else
-			halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-	} else {
-		/*  only 802.11N mode we have to dec bt power to 4 degree */
-		if (BTC_RSSI_HIGH(btRssiState)) {
-			pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U1_AP_NUM, &apNum);
-			/*  need to check ap Number of Not */
-			if (apNum < 10)
-				halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 4);
-			else
-				halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
-		} else if (BTC_RSSI_MEDIUM(btRssiState))
-			halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 2);
-		else
-			halbtc8723b2ant_DecBtPwr(pBtCoexist, NORMAL_EXEC, 0);
-	}
-
-	halbtc8723b2ant_CoexTableWithType(pBtCoexist, NORMAL_EXEC, 7);
-
-	if (
-		(btRssiState == BTC_RSSI_STATE_HIGH) ||
-		(btRssiState == BTC_RSSI_STATE_STAY_HIGH)
-	)
-		halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, true, false, 2);
-	else
-		halbtc8723b2ant_TdmaDurationAdjust(pBtCoexist, true, true, 2);
-
-	/*  sw mechanism */
-	if (wifiBw == BTC_WIFI_BW_HT40) {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, true, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	} else {
-		if (
-			(wifiRssiState == BTC_RSSI_STATE_HIGH) ||
-			(wifiRssiState == BTC_RSSI_STATE_STAY_HIGH)
-		) {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, true, false, false, 0x18);
-		} else {
-			halbtc8723b2ant_SwMechanism1(pBtCoexist, false, true, false, false);
-			halbtc8723b2ant_SwMechanism2(pBtCoexist, false, false, false, 0x18);
-		}
-	}
-}
-
-static void halbtc8723b2ant_RunCoexistMechanism(struct btc_coexist *pBtCoexist)
-{
-	u8 algorithm = 0;
-
-	if (pBtCoexist->bManualControl) {
-		return;
-	}
-
-	if (pCoexSta->bUnderIps) {
-		return;
-	}
-
-	algorithm = halbtc8723b2ant_ActionAlgorithm(pBtCoexist);
-	if (pCoexSta->bC2hBtInquiryPage && (algorithm != BT_8723B_2ANT_COEX_ALGO_PANHS)) {
-		halbtc8723b2ant_ActionBtInquiry(pBtCoexist);
-		return;
-	} else {
-		if (pCoexDm->bNeedRecover0x948) {
-			pCoexDm->bNeedRecover0x948 = false;
-			pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, pCoexDm->backup0x948);
-		}
-	}
-
-	pCoexDm->curAlgorithm = algorithm;
-
-	if (halbtc8723b2ant_IsCommonAction(pBtCoexist)) {
-		pCoexDm->bAutoTdmaAdjust = false;
-	} else {
-		if (pCoexDm->curAlgorithm != pCoexDm->preAlgorithm) {
-			pCoexDm->bAutoTdmaAdjust = false;
-		}
-
-		switch (pCoexDm->curAlgorithm) {
-		case BT_8723B_2ANT_COEX_ALGO_SCO:
-			halbtc8723b2ant_ActionSco(pBtCoexist);
-			break;
-		case BT_8723B_2ANT_COEX_ALGO_HID:
-			halbtc8723b2ant_ActionHid(pBtCoexist);
-			break;
-		case BT_8723B_2ANT_COEX_ALGO_A2DP:
-			halbtc8723b2ant_ActionA2dp(pBtCoexist);
-			break;
-		case BT_8723B_2ANT_COEX_ALGO_A2DP_PANHS:
-			halbtc8723b2ant_ActionA2dpPanHs(pBtCoexist);
-			break;
-		case BT_8723B_2ANT_COEX_ALGO_PANEDR:
-			halbtc8723b2ant_ActionPanEdr(pBtCoexist);
-			break;
-		case BT_8723B_2ANT_COEX_ALGO_PANHS:
-			halbtc8723b2ant_ActionPanHs(pBtCoexist);
-			break;
-		case BT_8723B_2ANT_COEX_ALGO_PANEDR_A2DP:
-			halbtc8723b2ant_ActionPanEdrA2dp(pBtCoexist);
-			break;
-		case BT_8723B_2ANT_COEX_ALGO_PANEDR_HID:
-			halbtc8723b2ant_ActionPanEdrHid(pBtCoexist);
-			break;
-		case BT_8723B_2ANT_COEX_ALGO_HID_A2DP_PANEDR:
-			halbtc8723b2ant_ActionHidA2dpPanEdr(pBtCoexist);
-			break;
-		case BT_8723B_2ANT_COEX_ALGO_HID_A2DP:
-			halbtc8723b2ant_ActionHidA2dp(pBtCoexist);
-			break;
-		default:
-			halbtc8723b2ant_CoexAllOff(pBtCoexist);
-			break;
-		}
-		pCoexDm->preAlgorithm = pCoexDm->curAlgorithm;
-	}
-}
-
-static void halbtc8723b2ant_WifiOffHwCfg(struct btc_coexist *pBtCoexist)
-{
-	bool bIsInMpMode = false;
-	u8 H2C_Parameter[2] = {0};
-	u32 fwVer = 0;
-
-	/*  set wlan_act to low */
-	pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0x4);
-
-	pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x780); /* WiFi goto standby while GNT_BT 0-->1 */
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer);
-	if (fwVer >= 0x180000) {
-		/* Use H2C to set GNT_BT to HIGH */
-		H2C_Parameter[0] = 1;
-		pBtCoexist->fBtcFillH2c(pBtCoexist, 0x6E, 1, H2C_Parameter);
-	} else
-		pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x765, 0x18);
-
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_IS_IN_MP_MODE, &bIsInMpMode);
-	if (!bIsInMpMode)
-		pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x0); /* BT select s0/s1 is controlled by BT */
-	else
-		pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1); /* BT select s0/s1 is controlled by WiFi */
-}
-
-static void halbtc8723b2ant_InitHwConfig(struct btc_coexist *pBtCoexist, bool bBackUp)
-{
-	u8 u1Tmp = 0;
-
-	/*  backup rf 0x1e value */
-	pCoexDm->btRf0x1eBackup =
-		pBtCoexist->fBtcGetRfReg(pBtCoexist, BTC_RF_A, 0x1e, 0xfffff);
-
-	/*  0x790[5:0]= 0x5 */
-	u1Tmp = pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x790);
-	u1Tmp &= 0xc0;
-	u1Tmp |= 0x5;
-	pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x790, u1Tmp);
-
-	/* Antenna config */
-	halbtc8723b2ant_SetAntPath(pBtCoexist, BTC_ANT_WIFI_AT_MAIN, true, false);
-
-	/*  PTA parameter */
-	halbtc8723b2ant_CoexTableWithType(pBtCoexist, FORCE_EXEC, 0);
-
-	/*  Enable counter statistics */
-	pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0xc); /* 0x76e[3] = 1, WLAN_Act control by PTA */
-	pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x778, 0x3);
-	pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x40, 0x20, 0x1);
-}
-
-/*  */
-/*  work around function start with wa_halbtc8723b2ant_ */
-/*  */
-/*  */
-/*  extern function start with EXhalbtc8723b2ant_ */
-/*  */
-void EXhalbtc8723b2ant_PowerOnSetting(struct btc_coexist *pBtCoexist)
-{
-	struct btc_board_info *pBoardInfo = &pBtCoexist->boardInfo;
-	u8 u1Tmp = 0x4; /* Set BIT2 by default since it's 2ant case */
-	u16 u2Tmp = 0x0;
-
-	pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x67, 0x20);
-
-	/*  enable BB, REG_SYS_FUNC_EN such that we can write 0x948 correctly. */
-	u2Tmp = pBtCoexist->fBtcRead2Byte(pBtCoexist, 0x2);
-	pBtCoexist->fBtcWrite2Byte(pBtCoexist, 0x2, u2Tmp | BIT(0) | BIT(1));
-
-	/*  set GRAN_BT = 1 */
-	pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x765, 0x18);
-	/*  set WLAN_ACT = 0 */
-	pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0x4);
-
-	/*  */
-	/*  S0 or S1 setting and Local register setting(By the setting fw can get ant number, S0/S1, ... info) */
-	/*  Local setting bit define */
-	/*	BIT0: "0" for no antenna inverse; "1" for antenna inverse */
-	/*	BIT1: "0" for internal switch; "1" for external switch */
-	/*	BIT2: "0" for one antenna; "1" for two antenna */
-	/*  NOTE: here default all internal switch and 1-antenna ==> BIT1 = 0 and BIT2 = 0 */
-	if (pBtCoexist->chipInterface == BTC_INTF_USB) {
-		/*  fixed at S0 for USB interface */
-		pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0);
-
-		u1Tmp |= 0x1;	/*  antenna inverse */
-		pBtCoexist->fBtcWriteLocalReg1Byte(pBtCoexist, 0xfe08, u1Tmp);
-
-		pBoardInfo->btdmAntPos = BTC_ANTENNA_AT_AUX_PORT;
-	} else {
-		/*  for PCIE and SDIO interface, we check efuse 0xc3[6] */
-		if (pBoardInfo->singleAntPath == 0) {
-			/*  set to S1 */
-			pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x280);
-			pBoardInfo->btdmAntPos = BTC_ANTENNA_AT_MAIN_PORT;
-		} else if (pBoardInfo->singleAntPath == 1) {
-			/*  set to S0 */
-			pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0);
-			u1Tmp |= 0x1;	/*  antenna inverse */
-			pBoardInfo->btdmAntPos = BTC_ANTENNA_AT_AUX_PORT;
-		}
-
-		if (pBtCoexist->chipInterface == BTC_INTF_PCI)
-			pBtCoexist->fBtcWriteLocalReg1Byte(pBtCoexist, 0x384, u1Tmp);
-		else if (pBtCoexist->chipInterface == BTC_INTF_SDIO)
-			pBtCoexist->fBtcWriteLocalReg1Byte(pBtCoexist, 0x60, u1Tmp);
-	}
-}
-
-void EXhalbtc8723b2ant_InitHwConfig(struct btc_coexist *pBtCoexist, bool bWifiOnly)
-{
-	halbtc8723b2ant_InitHwConfig(pBtCoexist, true);
-}
-
-void EXhalbtc8723b2ant_InitCoexDm(struct btc_coexist *pBtCoexist)
-{
-	halbtc8723b2ant_InitCoexDm(pBtCoexist);
-}
-
-void EXhalbtc8723b2ant_IpsNotify(struct btc_coexist *pBtCoexist, u8 type)
-{
-	if (type == BTC_IPS_ENTER) {
-		pCoexSta->bUnderIps = true;
-		halbtc8723b2ant_WifiOffHwCfg(pBtCoexist);
-		halbtc8723b2ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, true);
-		halbtc8723b2ant_CoexAllOff(pBtCoexist);
-	} else if (type == BTC_IPS_LEAVE) {
-		pCoexSta->bUnderIps = false;
-		halbtc8723b2ant_InitHwConfig(pBtCoexist, false);
-		halbtc8723b2ant_InitCoexDm(pBtCoexist);
-		halbtc8723b2ant_QueryBtInfo(pBtCoexist);
-	}
-}
-
-void EXhalbtc8723b2ant_LpsNotify(struct btc_coexist *pBtCoexist, u8 type)
-{
-	if (type == BTC_LPS_ENABLE) {
-		pCoexSta->bUnderLps = true;
-	} else if (type == BTC_LPS_DISABLE) {
-		pCoexSta->bUnderLps = false;
-	}
-}
-
-void EXhalbtc8723b2ant_ScanNotify(struct btc_coexist *pBtCoexist, u8 type)
-{
-	if (type == BTC_SCAN_START) {
-	} else if (type == BTC_SCAN_FINISH) {
-	}
-}
-
-void EXhalbtc8723b2ant_ConnectNotify(struct btc_coexist *pBtCoexist, u8 type)
-{
-	if (type == BTC_ASSOCIATE_START) {
-	} else if (type == BTC_ASSOCIATE_FINISH) {
-	}
-}
-
-void EXhalbtc8723b2ant_MediaStatusNotify(struct btc_coexist *pBtCoexist, u8 type)
-{
-	u8 H2C_Parameter[3] = {0};
-	u32 wifiBw;
-	u8 wifiCentralChnl;
-	u8 apNum = 0;
-
-	/*  only 2.4G we need to inform bt the chnl mask */
-	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U1_WIFI_CENTRAL_CHNL, &wifiCentralChnl);
-	if ((type == BTC_MEDIA_CONNECT) && (wifiCentralChnl <= 14)) {
-		H2C_Parameter[0] = 0x1;
-		H2C_Parameter[1] = wifiCentralChnl;
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_BW, &wifiBw);
-		if (wifiBw == BTC_WIFI_BW_HT40)
-			H2C_Parameter[2] = 0x30;
-		else {
-			pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U1_AP_NUM, &apNum);
-			if (apNum < 10)
-				H2C_Parameter[2] = 0x30;
-			else
-				H2C_Parameter[2] = 0x20;
-		}
-	}
-
-	pCoexDm->wifiChnlInfo[0] = H2C_Parameter[0];
-	pCoexDm->wifiChnlInfo[1] = H2C_Parameter[1];
-	pCoexDm->wifiChnlInfo[2] = H2C_Parameter[2];
-
-	pBtCoexist->fBtcFillH2c(pBtCoexist, 0x66, 3, H2C_Parameter);
-}
-
-void EXhalbtc8723b2ant_SpecialPacketNotify(struct btc_coexist *pBtCoexist, u8 type)
-{
-}
-
-void EXhalbtc8723b2ant_BtInfoNotify(
-	struct btc_coexist *pBtCoexist, u8 *tmpBuf, u8 length
-)
-{
-	u8	btInfo = 0;
-	u8	i, rspSource = 0;
-	bool bBtBusy = false, bLimitedDig = false;
-	bool bWifiConnected = false;
-
-	pCoexSta->bC2hBtInfoReqSent = false;
-
-	rspSource = tmpBuf[0] & 0xf;
-	if (rspSource >= BT_INFO_SRC_8723B_2ANT_MAX)
-		rspSource = BT_INFO_SRC_8723B_2ANT_WIFI_FW;
-
-	pCoexSta->btInfoC2hCnt[rspSource]++;
-
-	for (i = 0; i < length; i++) {
-		pCoexSta->btInfoC2h[rspSource][i] = tmpBuf[i];
-		if (i == 1)
-			btInfo = tmpBuf[i];
-
-	}
-
-	if (pBtCoexist->bManualControl) {
-		return;
-	}
-
-	if (rspSource != BT_INFO_SRC_8723B_2ANT_WIFI_FW) {
-		pCoexSta->btRetryCnt = pCoexSta->btInfoC2h[rspSource][2] & 0xf; /* [3:0] */
-
-		pCoexSta->btRssi = pCoexSta->btInfoC2h[rspSource][3] * 2 + 10;
-
-		pCoexSta->btInfoExt = pCoexSta->btInfoC2h[rspSource][4];
-
-		pCoexSta->bBtTxRxMask = (pCoexSta->btInfoC2h[rspSource][2] & 0x40);
-		pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_TX_RX_MASK, &pCoexSta->bBtTxRxMask);
-		if (pCoexSta->bBtTxRxMask) {
-			/* BT into is responded by BT FW and BT RF REG 0x3C != 0x01 => Need to switch BT TRx Mask */
-			pBtCoexist->fBtcSetBtReg(pBtCoexist, BTC_BT_REG_RF, 0x3c, 0x01);
-		}
-
-		/*  Here we need to resend some wifi info to BT */
-		/*  because bt is reset and loss of the info. */
-		if ((pCoexSta->btInfoExt & BIT(1))) {
-			pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_CONNECTED, &bWifiConnected);
-
-			if (bWifiConnected)
-				EXhalbtc8723b2ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_CONNECT);
-			else
-				EXhalbtc8723b2ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_DISCONNECT);
-		}
-
-		if ((pCoexSta->btInfoExt & BIT(3))) {
-			halbtc8723b2ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, false);
-		} else {
-			/*  BT already NOT ignore Wlan active, do nothing here. */
-		}
-	}
-
-	/*  check BIT2 first ==> check if bt is under inquiry or page scan */
-	if (btInfo & BT_INFO_8723B_2ANT_B_INQ_PAGE)
-		pCoexSta->bC2hBtInquiryPage = true;
-	else
-		pCoexSta->bC2hBtInquiryPage = false;
-
-	/*  set link exist status */
-	if (!(btInfo & BT_INFO_8723B_2ANT_B_CONNECTION)) {
-		pCoexSta->bBtLinkExist = false;
-		pCoexSta->bPanExist = false;
-		pCoexSta->bA2dpExist = false;
-		pCoexSta->bHidExist = false;
-		pCoexSta->bScoExist = false;
-	} else { /*  connection exists */
-		pCoexSta->bBtLinkExist = true;
-		if (btInfo & BT_INFO_8723B_2ANT_B_FTP)
-			pCoexSta->bPanExist = true;
-		else
-			pCoexSta->bPanExist = false;
-		if (btInfo & BT_INFO_8723B_2ANT_B_A2DP)
-			pCoexSta->bA2dpExist = true;
-		else
-			pCoexSta->bA2dpExist = false;
-		if (btInfo & BT_INFO_8723B_2ANT_B_HID)
-			pCoexSta->bHidExist = true;
-		else
-			pCoexSta->bHidExist = false;
-		if (btInfo & BT_INFO_8723B_2ANT_B_SCO_ESCO)
-			pCoexSta->bScoExist = true;
-		else
-			pCoexSta->bScoExist = false;
-	}
-
-	halbtc8723b2ant_UpdateBtLinkInfo(pBtCoexist);
-
-	if (!(btInfo & BT_INFO_8723B_2ANT_B_CONNECTION)) {
-		pCoexDm->btStatus = BT_8723B_2ANT_BT_STATUS_NON_CONNECTED_IDLE;
-	} else if (btInfo == BT_INFO_8723B_2ANT_B_CONNECTION)	{ /*  connection exists but no busy */
-		pCoexDm->btStatus = BT_8723B_2ANT_BT_STATUS_CONNECTED_IDLE;
-	} else if (
-		(btInfo & BT_INFO_8723B_2ANT_B_SCO_ESCO) ||
-		(btInfo & BT_INFO_8723B_2ANT_B_SCO_BUSY)
-	) {
-		pCoexDm->btStatus = BT_8723B_2ANT_BT_STATUS_SCO_BUSY;
-	} else if (btInfo & BT_INFO_8723B_2ANT_B_ACL_BUSY) {
-		pCoexDm->btStatus = BT_8723B_2ANT_BT_STATUS_ACL_BUSY;
-	} else {
-		pCoexDm->btStatus = BT_8723B_2ANT_BT_STATUS_MAX;
-	}
-
-	if (
-		(pCoexDm->btStatus == BT_8723B_2ANT_BT_STATUS_ACL_BUSY) ||
-		(pCoexDm->btStatus == BT_8723B_2ANT_BT_STATUS_SCO_BUSY) ||
-		(pCoexDm->btStatus == BT_8723B_2ANT_BT_STATUS_ACL_SCO_BUSY)
-	) {
-		bBtBusy = true;
-		bLimitedDig = true;
-	} else {
-		bBtBusy = false;
-		bLimitedDig = false;
-	}
-
-	pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_TRAFFIC_BUSY, &bBtBusy);
-
-	pCoexDm->bLimitedDig = bLimitedDig;
-	pBtCoexist->fBtcSet(pBtCoexist, BTC_SET_BL_BT_LIMITED_DIG, &bLimitedDig);
-
-	halbtc8723b2ant_RunCoexistMechanism(pBtCoexist);
-}
-
-void EXhalbtc8723b2ant_HaltNotify(struct btc_coexist *pBtCoexist)
-{
-	halbtc8723b2ant_WifiOffHwCfg(pBtCoexist);
-	pBtCoexist->fBtcSetBtReg(pBtCoexist, BTC_BT_REG_RF, 0x3c, 0x15); /* BT goto standby while GNT_BT 1-->0 */
-	halbtc8723b2ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, true);
-
-	EXhalbtc8723b2ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_DISCONNECT);
-}
-
-void EXhalbtc8723b2ant_PnpNotify(struct btc_coexist *pBtCoexist, u8 pnpState)
-{
-	if (pnpState == BTC_WIFI_PNP_SLEEP) {
-	} else if (pnpState == BTC_WIFI_PNP_WAKE_UP) {
-		halbtc8723b2ant_InitHwConfig(pBtCoexist, false);
-		halbtc8723b2ant_InitCoexDm(pBtCoexist);
-		halbtc8723b2ant_QueryBtInfo(pBtCoexist);
-	}
-}
-
-void EXhalbtc8723b2ant_Periodical(struct btc_coexist *pBtCoexist)
-{
-	static u8 disVerInfoCnt;
-	u32 fwVer = 0, btPatchVer = 0;
-
-	if (disVerInfoCnt <= 5) {
-		disVerInfoCnt += 1;
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_BT_PATCH_VER, &btPatchVer);
-		pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer);
-	}
-
-	if (
-		halbtc8723b2ant_IsWifiStatusChanged(pBtCoexist) ||
-		pCoexDm->bAutoTdmaAdjust
-	)
-		halbtc8723b2ant_RunCoexistMechanism(pBtCoexist);
-}
diff --git a/drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.h b/drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.h
deleted file mode 100644
index ebc47f65e8d2..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-/*  The following is for 8723B 2Ant BT Co-exist definition */
-#define	BT_INFO_8723B_2ANT_B_FTP		BIT(7)
-#define	BT_INFO_8723B_2ANT_B_A2DP		BIT(6)
-#define	BT_INFO_8723B_2ANT_B_HID		BIT(5)
-#define	BT_INFO_8723B_2ANT_B_SCO_BUSY		BIT(4)
-#define	BT_INFO_8723B_2ANT_B_ACL_BUSY		BIT(3)
-#define	BT_INFO_8723B_2ANT_B_INQ_PAGE		BIT(2)
-#define	BT_INFO_8723B_2ANT_B_SCO_ESCO		BIT(1)
-#define	BT_INFO_8723B_2ANT_B_CONNECTION		BIT(0)
-
-#define		BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT		2
-
-enum {
-	BT_INFO_SRC_8723B_2ANT_WIFI_FW        = 0x0,
-	BT_INFO_SRC_8723B_2ANT_BT_RSP         = 0x1,
-	BT_INFO_SRC_8723B_2ANT_BT_ACTIVE_SEND = 0x2,
-	BT_INFO_SRC_8723B_2ANT_MAX
-};
-
-enum {
-	BT_8723B_2ANT_BT_STATUS_NON_CONNECTED_IDLE = 0x0,
-	BT_8723B_2ANT_BT_STATUS_CONNECTED_IDLE     = 0x1,
-	BT_8723B_2ANT_BT_STATUS_INQ_PAGE           = 0x2,
-	BT_8723B_2ANT_BT_STATUS_ACL_BUSY           = 0x3,
-	BT_8723B_2ANT_BT_STATUS_SCO_BUSY           = 0x4,
-	BT_8723B_2ANT_BT_STATUS_ACL_SCO_BUSY       = 0x5,
-	BT_8723B_2ANT_BT_STATUS_MAX
-};
-
-enum {
-	BT_8723B_2ANT_COEX_ALGO_UNDEFINED       = 0x0,
-	BT_8723B_2ANT_COEX_ALGO_SCO             = 0x1,
-	BT_8723B_2ANT_COEX_ALGO_HID             = 0x2,
-	BT_8723B_2ANT_COEX_ALGO_A2DP            = 0x3,
-	BT_8723B_2ANT_COEX_ALGO_A2DP_PANHS      = 0x4,
-	BT_8723B_2ANT_COEX_ALGO_PANEDR          = 0x5,
-	BT_8723B_2ANT_COEX_ALGO_PANHS           = 0x6,
-	BT_8723B_2ANT_COEX_ALGO_PANEDR_A2DP     = 0x7,
-	BT_8723B_2ANT_COEX_ALGO_PANEDR_HID      = 0x8,
-	BT_8723B_2ANT_COEX_ALGO_HID_A2DP_PANEDR	= 0x9,
-	BT_8723B_2ANT_COEX_ALGO_HID_A2DP        = 0xa,
-	BT_8723B_2ANT_COEX_ALGO_MAX             = 0xb,
-};
-
-struct coex_dm_8723b_2ant {
-	/*  fw mechanism */
-	u8 preBtDecPwrLvl;
-	u8 curBtDecPwrLvl;
-	u8 preFwDacSwingLvl;
-	u8 curFwDacSwingLvl;
-	bool bCurIgnoreWlanAct;
-	bool bPreIgnoreWlanAct;
-	u8 prePsTdma;
-	u8 curPsTdma;
-	u8 psTdmaPara[5];
-	u8 psTdmaDuAdjType;
-	bool bResetTdmaAdjust;
-	bool bAutoTdmaAdjust;
-	bool bPrePsTdmaOn;
-	bool bCurPsTdmaOn;
-	bool bPreBtAutoReport;
-	bool bCurBtAutoReport;
-
-	/*  sw mechanism */
-	bool bPreRfRxLpfShrink;
-	bool bCurRfRxLpfShrink;
-	u32 btRf0x1eBackup;
-	bool bPreLowPenaltyRa;
-	bool bCurLowPenaltyRa;
-	bool bPreDacSwingOn;
-	u32  preDacSwingLvl;
-	bool bCurDacSwingOn;
-	u32  curDacSwingLvl;
-	bool bPreAdcBackOff;
-	bool bCurAdcBackOff;
-	bool bPreAgcTableEn;
-	bool bCurAgcTableEn;
-	u32 preVal0x6c0;
-	u32 curVal0x6c0;
-	u32 preVal0x6c4;
-	u32 curVal0x6c4;
-	u32 preVal0x6c8;
-	u32 curVal0x6c8;
-	u8 preVal0x6cc;
-	u8 curVal0x6cc;
-	bool bLimitedDig;
-
-	/*  algorithm related */
-	u8 preAlgorithm;
-	u8 curAlgorithm;
-	u8 btStatus;
-	u8 wifiChnlInfo[3];
-
-	bool bNeedRecover0x948;
-	u32 backup0x948;
-};
-
-struct coex_sta_8723b_2ant {
-	bool bBtLinkExist;
-	bool bScoExist;
-	bool bA2dpExist;
-	bool bHidExist;
-	bool bPanExist;
-
-	bool bUnderLps;
-	bool bUnderIps;
-	u32 highPriorityTx;
-	u32 highPriorityRx;
-	u32 lowPriorityTx;
-	u32 lowPriorityRx;
-	u8 btRssi;
-	bool bBtTxRxMask;
-	u8 preBtRssiState;
-	u8 preWifiRssiState[4];
-	bool bC2hBtInfoReqSent;
-	u8 btInfoC2h[BT_INFO_SRC_8723B_2ANT_MAX][10];
-	u32 btInfoC2hCnt[BT_INFO_SRC_8723B_2ANT_MAX];
-	bool bC2hBtInquiryPage;
-	u8 btRetryCnt;
-	u8 btInfoExt;
-};
-
-/*  */
-/*  The following is interface which will notify coex module. */
-/*  */
-void EXhalbtc8723b2ant_PowerOnSetting(struct btc_coexist *pBtCoexist);
-void EXhalbtc8723b2ant_InitHwConfig(struct btc_coexist *pBtCoexist, bool bWifiOnly);
-void EXhalbtc8723b2ant_InitCoexDm(struct btc_coexist *pBtCoexist);
-void EXhalbtc8723b2ant_IpsNotify(struct btc_coexist *pBtCoexist, u8 type);
-void EXhalbtc8723b2ant_LpsNotify(struct btc_coexist *pBtCoexist, u8 type);
-void EXhalbtc8723b2ant_ScanNotify(struct btc_coexist *pBtCoexist, u8 type);
-void EXhalbtc8723b2ant_ConnectNotify(struct btc_coexist *pBtCoexist, u8 type);
-void EXhalbtc8723b2ant_MediaStatusNotify(struct btc_coexist *pBtCoexist, u8 type);
-void EXhalbtc8723b2ant_SpecialPacketNotify(struct btc_coexist *pBtCoexist, u8 type);
-void EXhalbtc8723b2ant_BtInfoNotify(
-	struct btc_coexist *pBtCoexist, u8 *tmpBuf, u8 length
-);
-void EXhalbtc8723b2ant_HaltNotify(struct btc_coexist *pBtCoexist);
-void EXhalbtc8723b2ant_PnpNotify(struct btc_coexist *pBtCoexist, u8 pnpState);
-void EXhalbtc8723b2ant_Periodical(struct btc_coexist *pBtCoexist);
diff --git a/drivers/staging/rtl8723bs/hal/HalBtcOutSrc.h b/drivers/staging/rtl8723bs/hal/HalBtcOutSrc.h
deleted file mode 100644
index 36b0f429dd4c..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalBtcOutSrc.h
+++ /dev/null
@@ -1,426 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef	__HALBTC_OUT_SRC_H__
-#define __HALBTC_OUT_SRC_H__
-
-#define NORMAL_EXEC		false
-#define FORCE_EXEC		true
-
-#define BTC_RF_OFF		0x0
-#define BTC_RF_ON		0x1
-
-#define BTC_RF_A		0x0
-#define BTC_RF_B		0x1
-#define BTC_RF_C		0x2
-#define BTC_RF_D		0x3
-
-#define BTC_SMSP		SINGLEMAC_SINGLEPHY
-#define BTC_DMDP		DUALMAC_DUALPHY
-#define BTC_DMSP		DUALMAC_SINGLEPHY
-#define BTC_MP_UNKNOWN		0xff
-
-#define BT_COEX_ANT_TYPE_PG	0
-#define BT_COEX_ANT_TYPE_ANTDIV		1
-#define BT_COEX_ANT_TYPE_DETECTED	2
-
-#define BTC_MIMO_PS_STATIC	0	/*  1ss */
-#define BTC_MIMO_PS_DYNAMIC	1	/*  2ss */
-
-#define BTC_RATE_DISABLE	0
-#define BTC_RATE_ENABLE		1
-
-/*  single Antenna definition */
-#define BTC_ANT_PATH_WIFI	0
-#define BTC_ANT_PATH_BT		1
-#define BTC_ANT_PATH_PTA	2
-/*  dual Antenna definition */
-#define BTC_ANT_WIFI_AT_MAIN	0
-#define BTC_ANT_WIFI_AT_AUX	1
-/*  coupler Antenna definition */
-#define BTC_ANT_WIFI_AT_CPL_MAIN	0
-#define BTC_ANT_WIFI_AT_CPL_AUX		1
-
-enum {
-	BTC_PS_WIFI_NATIVE	= 0,	/*  wifi original power save behavior */
-	BTC_PS_LPS_ON		= 1,
-	BTC_PS_LPS_OFF		= 2,
-	BTC_PS_MAX
-};
-
-enum {
-	BTC_BT_REG_RF		= 0,
-	BTC_BT_REG_MODEM	= 1,
-	BTC_BT_REG_BLUEWIZE	= 2,
-	BTC_BT_REG_VENDOR	= 3,
-	BTC_BT_REG_LE		= 4,
-	BTC_BT_REG_MAX
-};
-
-enum btc_chip_interface {
-	BTC_INTF_UNKNOWN	= 0,
-	BTC_INTF_PCI		= 1,
-	BTC_INTF_USB		= 2,
-	BTC_INTF_SDIO		= 3,
-	BTC_INTF_MAX
-};
-
-/*  following is for wifi link status */
-#define WIFI_STA_CONNECTED				BIT(0)
-#define WIFI_AP_CONNECTED				BIT(1)
-#define WIFI_HS_CONNECTED				BIT(2)
-#define WIFI_P2P_GO_CONNECTED			BIT(3)
-#define WIFI_P2P_GC_CONNECTED			BIT(4)
-
-struct btc_board_info {
-	/*  The following is some board information */
-	u8 pgAntNum;	/*  pg ant number */
-	u8 btdmAntNum;	/*  ant number for btdm */
-	u8 btdmAntPos;		/* Bryant Add to indicate Antenna Position for (pgAntNum = 2) && (btdmAntNum = 1)  (DPDT+1Ant case) */
-	u8 singleAntPath;	/*  current used for 8723b only, 1 =>s0,  0 =>s1 */
-	/* bool				bBtExist; */
-};
-
-enum {
-	BTC_RSSI_STATE_HIGH			    = 0x0,
-	BTC_RSSI_STATE_MEDIUM			= 0x1,
-	BTC_RSSI_STATE_LOW			    = 0x2,
-	BTC_RSSI_STATE_STAY_HIGH		= 0x3,
-	BTC_RSSI_STATE_STAY_MEDIUM		= 0x4,
-	BTC_RSSI_STATE_STAY_LOW			= 0x5,
-	BTC_RSSI_MAX
-};
-#define BTC_RSSI_HIGH(_rssi_)	((_rssi_ == BTC_RSSI_STATE_HIGH || _rssi_ == BTC_RSSI_STATE_STAY_HIGH) ? true : false)
-#define BTC_RSSI_MEDIUM(_rssi_)	((_rssi_ == BTC_RSSI_STATE_MEDIUM || _rssi_ == BTC_RSSI_STATE_STAY_MEDIUM) ? true : false)
-#define BTC_RSSI_LOW(_rssi_)	((_rssi_ == BTC_RSSI_STATE_LOW || _rssi_ == BTC_RSSI_STATE_STAY_LOW) ? true : false)
-
-enum {
-	BTC_WIFI_BW_LEGACY			= 0x0,
-	BTC_WIFI_BW_HT20			= 0x1,
-	BTC_WIFI_BW_HT40			= 0x2,
-	BTC_WIFI_BW_MAX
-};
-
-enum {
-	BTC_WIFI_TRAFFIC_TX			= 0x0,
-	BTC_WIFI_TRAFFIC_RX			= 0x1,
-	BTC_WIFI_TRAFFIC_MAX
-};
-
-enum {
-	BTC_WIFI_PNP_WAKE_UP		= 0x0,
-	BTC_WIFI_PNP_SLEEP			= 0x1,
-	BTC_WIFI_PNP_MAX
-};
-
-/*  defined for BFP_BTC_GET */
-enum {
-	/*  type bool */
-	BTC_GET_BL_HS_OPERATION,
-	BTC_GET_BL_HS_CONNECTING,
-	BTC_GET_BL_WIFI_CONNECTED,
-	BTC_GET_BL_WIFI_BUSY,
-	BTC_GET_BL_WIFI_SCAN,
-	BTC_GET_BL_WIFI_LINK,
-	BTC_GET_BL_WIFI_ROAM,
-	BTC_GET_BL_WIFI_4_WAY_PROGRESS,
-	BTC_GET_BL_WIFI_AP_MODE_ENABLE,
-	BTC_GET_BL_WIFI_ENABLE_ENCRYPTION,
-	BTC_GET_BL_WIFI_UNDER_B_MODE,
-	BTC_GET_BL_EXT_SWITCH,
-	BTC_GET_BL_WIFI_IS_IN_MP_MODE,
-
-	/*  type s32 */
-	BTC_GET_S4_WIFI_RSSI,
-	BTC_GET_S4_HS_RSSI,
-
-	/*  type u32 */
-	BTC_GET_U4_WIFI_BW,
-	BTC_GET_U4_WIFI_TRAFFIC_DIRECTION,
-	BTC_GET_U4_WIFI_FW_VER,
-	BTC_GET_U4_WIFI_LINK_STATUS,
-	BTC_GET_U4_BT_PATCH_VER,
-
-	/*  type u8 */
-	BTC_GET_U1_WIFI_DOT11_CHNL,
-	BTC_GET_U1_WIFI_CENTRAL_CHNL,
-	BTC_GET_U1_WIFI_HS_CHNL,
-	BTC_GET_U1_MAC_PHY_MODE,
-	BTC_GET_U1_AP_NUM,
-
-	/*  for 1Ant ====== */
-	BTC_GET_U1_LPS_MODE,
-
-	BTC_GET_MAX
-};
-
-/*  defined for BFP_BTC_SET */
-enum {
-	/*  type bool */
-	BTC_SET_BL_BT_DISABLE,
-	BTC_SET_BL_BT_TRAFFIC_BUSY,
-	BTC_SET_BL_BT_LIMITED_DIG,
-	BTC_SET_BL_FORCE_TO_ROAM,
-	BTC_SET_BL_TO_REJ_AP_AGG_PKT,
-	BTC_SET_BL_BT_CTRL_AGG_SIZE,
-	BTC_SET_BL_INC_SCAN_DEV_NUM,
-	BTC_SET_BL_BT_TX_RX_MASK,
-
-	/*  type u8 */
-	BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON,
-	BTC_SET_U1_AGG_BUF_SIZE,
-
-	/*  type trigger some action */
-	BTC_SET_ACT_GET_BT_RSSI,
-	BTC_SET_ACT_AGGREGATE_CTRL,
-	/*  for 1Ant ====== */
-	/*  type bool */
-
-	/*  type u8 */
-	BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE,
-	BTC_SET_U1_LPS_VAL,
-	BTC_SET_U1_RPWM_VAL,
-	/*  type trigger some action */
-	BTC_SET_ACT_LEAVE_LPS,
-	BTC_SET_ACT_ENTER_LPS,
-	BTC_SET_ACT_NORMAL_LPS,
-	BTC_SET_ACT_DISABLE_LOW_POWER,
-	BTC_SET_ACT_UPDATE_RAMASK,
-	BTC_SET_ACT_SEND_MIMO_PS,
-	/*  BT Coex related */
-	BTC_SET_ACT_CTRL_BT_INFO,
-	BTC_SET_ACT_CTRL_BT_COEX,
-	BTC_SET_ACT_CTRL_8723B_ANT,
-	/*  */
-	BTC_SET_MAX
-};
-
-enum {
-	BTC_DBG_DISP_COEX_STATISTICS		= 0x0,
-	BTC_DBG_DISP_BT_LINK_INFO			= 0x1,
-	BTC_DBG_DISP_FW_PWR_MODE_CMD		= 0x2,
-	BTC_DBG_DISP_MAX
-};
-
-enum {
-	BTC_IPS_LEAVE						= 0x0,
-	BTC_IPS_ENTER						= 0x1,
-	BTC_IPS_MAX
-};
-
-enum {
-	BTC_LPS_DISABLE						= 0x0,
-	BTC_LPS_ENABLE						= 0x1,
-	BTC_LPS_MAX
-};
-
-enum {
-	BTC_SCAN_FINISH						= 0x0,
-	BTC_SCAN_START						= 0x1,
-	BTC_SCAN_MAX
-};
-
-enum {
-	BTC_ASSOCIATE_FINISH				= 0x0,
-	BTC_ASSOCIATE_START					= 0x1,
-	BTC_ASSOCIATE_MAX
-};
-
-enum {
-	BTC_MEDIA_DISCONNECT				= 0x0,
-	BTC_MEDIA_CONNECT					= 0x1,
-	BTC_MEDIA_MAX
-};
-
-enum {
-	BTC_PACKET_UNKNOWN					= 0x0,
-	BTC_PACKET_DHCP						= 0x1,
-	BTC_PACKET_ARP						= 0x2,
-	BTC_PACKET_EAPOL					= 0x3,
-	BTC_PACKET_MAX
-};
-
-/* Bryant Add */
-enum {
-	BTC_ANTENNA_AT_MAIN_PORT = 0x1,
-	BTC_ANTENNA_AT_AUX_PORT  = 0x2,
-};
-
-typedef u8 (*BFP_BTC_R1)(void *pBtcContext, u32 RegAddr);
-typedef u16(*BFP_BTC_R2)(void *pBtcContext, u32 RegAddr);
-typedef u32 (*BFP_BTC_R4)(void *pBtcContext, u32 RegAddr);
-typedef void (*BFP_BTC_W1)(void *pBtcContext, u32 RegAddr, u8 Data);
-typedef void(*BFP_BTC_W1_BIT_MASK)(
-	void *pBtcContext, u32 regAddr, u8 bitMask, u8 data1b
-);
-typedef void (*BFP_BTC_W2)(void *pBtcContext, u32 RegAddr, u16 Data);
-typedef void (*BFP_BTC_W4)(void *pBtcContext, u32 RegAddr, u32 Data);
-typedef void (*BFP_BTC_LOCAL_REG_W1)(void *pBtcContext, u32 RegAddr, u8 Data);
-typedef void (*BFP_BTC_SET_BB_REG)(
-	void *pBtcContext, u32 RegAddr, u32 BitMask, u32 Data
-);
-typedef u32 (*BFP_BTC_GET_BB_REG)(void *pBtcContext, u32 RegAddr, u32 BitMask);
-typedef void (*BFP_BTC_SET_RF_REG)(
-	void *pBtcContext, u8 eRFPath, u32 RegAddr, u32 BitMask, u32 Data
-);
-typedef u32 (*BFP_BTC_GET_RF_REG)(
-	void *pBtcContext, u8 eRFPath, u32 RegAddr, u32 BitMask
-);
-typedef void (*BFP_BTC_FILL_H2C)(
-	void *pBtcContext, u8 elementId, u32 cmdLen, u8 *pCmdBuffer
-);
-
-typedef	u8 (*BFP_BTC_GET)(void *pBtCoexist, u8 getType, void *pOutBuf);
-
-typedef	u8 (*BFP_BTC_SET)(void *pBtCoexist, u8 setType, void *pInBuf);
-typedef void (*BFP_BTC_SET_BT_REG)(
-	void *pBtcContext, u8 regType, u32 offset, u32 value
-);
-typedef u32 (*BFP_BTC_GET_BT_REG)(void *pBtcContext, u8 regType, u32 offset);
-typedef void (*BFP_BTC_DISP_DBG_MSG)(void *pBtCoexist, u8 dispType);
-
-struct btc_bt_info {
-	bool bBtDisabled;
-	u8 rssiAdjustForAgcTableOn;
-	u8 rssiAdjustFor1AntCoexType;
-	bool bPreBtCtrlAggBufSize;
-	bool bBtCtrlAggBufSize;
-	bool bRejectAggPkt;
-	bool bIncreaseScanDevNum;
-	bool bBtTxRxMask;
-	u8 preAggBufSize;
-	u8 aggBufSize;
-	bool bBtBusy;
-	bool bLimitedDig;
-	u16 btHciVer;
-	u16 btRealFwVer;
-	u8 btFwVer;
-	u32 getBtFwVerCnt;
-
-	bool bBtDisableLowPwr;
-
-	bool bBtCtrlLps;
-	bool bBtLpsOn;
-	bool bForceToRoam;	/*  for 1Ant solution */
-	u8 lpsVal;
-	u8 rpwmVal;
-	u32 raMask;
-};
-
-struct btc_stack_info {
-	bool bProfileNotified;
-	u16 hciVersion;	/*  stack hci version */
-	u8 numOfLink;
-	bool bBtLinkExist;
-	bool bScoExist;
-	bool bAclExist;
-	bool bA2dpExist;
-	bool bHidExist;
-	u8 numOfHid;
-	bool bPanExist;
-	bool bUnknownAclExist;
-	s8 minBtRssi;
-};
-
-struct btc_bt_link_info {
-	bool bBtLinkExist;
-	bool bScoExist;
-	bool bScoOnly;
-	bool bA2dpExist;
-	bool bA2dpOnly;
-	bool bHidExist;
-	bool bHidOnly;
-	bool bPanExist;
-	bool bPanOnly;
-	bool bSlaveRole;
-};
-
-struct btc_statistics {
-	u32 cntBind;
-	u32 cntPowerOn;
-	u32 cntInitHwConfig;
-	u32 cntInitCoexDm;
-	u32 cntIpsNotify;
-	u32 cntLpsNotify;
-	u32 cntScanNotify;
-	u32 cntConnectNotify;
-	u32 cntMediaStatusNotify;
-	u32 cntSpecialPacketNotify;
-	u32 cntBtInfoNotify;
-	u32 cntRfStatusNotify;
-	u32 cntPeriodical;
-	u32 cntCoexDmSwitch;
-	u32 cntStackOperationNotify;
-	u32 cntDbgCtrl;
-};
-
-struct btc_coexist {
-	bool bBinded;		/*  make sure only one adapter can bind the data context */
-	void *Adapter;		/*  default adapter */
-	struct btc_board_info boardInfo;
-	struct btc_bt_info btInfo;		/*  some bt info referenced by non-bt module */
-	struct btc_stack_info stackInfo;
-	struct btc_bt_link_info btLinkInfo;
-	enum btc_chip_interface chipInterface;
-
-	bool bInitilized;
-	bool bStopCoexDm;
-	bool bManualControl;
-	struct btc_statistics statistics;
-	u8 pwrModeVal[10];
-
-	/*  function pointers */
-	/*  io related */
-	BFP_BTC_R1 fBtcRead1Byte;
-	BFP_BTC_W1 fBtcWrite1Byte;
-	BFP_BTC_W1_BIT_MASK fBtcWrite1ByteBitMask;
-	BFP_BTC_R2 fBtcRead2Byte;
-	BFP_BTC_W2 fBtcWrite2Byte;
-	BFP_BTC_R4 fBtcRead4Byte;
-	BFP_BTC_W4 fBtcWrite4Byte;
-	BFP_BTC_LOCAL_REG_W1 fBtcWriteLocalReg1Byte;
-	/*  read/write bb related */
-	BFP_BTC_SET_BB_REG fBtcSetBbReg;
-	BFP_BTC_GET_BB_REG fBtcGetBbReg;
-
-	/*  read/write rf related */
-	BFP_BTC_SET_RF_REG fBtcSetRfReg;
-	BFP_BTC_GET_RF_REG fBtcGetRfReg;
-
-	/*  fill h2c related */
-	BFP_BTC_FILL_H2C fBtcFillH2c;
-	/*  normal get/set related */
-	BFP_BTC_GET fBtcGet;
-	BFP_BTC_SET fBtcSet;
-
-	BFP_BTC_GET_BT_REG fBtcGetBtReg;
-	BFP_BTC_SET_BT_REG fBtcSetBtReg;
-};
-
-extern struct btc_coexist GLBtCoexist;
-
-void EXhalbtcoutsrc_PowerOnSetting(struct btc_coexist *pBtCoexist);
-void EXhalbtcoutsrc_InitHwConfig(struct btc_coexist *pBtCoexist, u8 bWifiOnly);
-void EXhalbtcoutsrc_InitCoexDm(struct btc_coexist *pBtCoexist);
-void EXhalbtcoutsrc_IpsNotify(struct btc_coexist *pBtCoexist, u8 type);
-void EXhalbtcoutsrc_LpsNotify(struct btc_coexist *pBtCoexist, u8 type);
-void EXhalbtcoutsrc_ScanNotify(struct btc_coexist *pBtCoexist, u8 type);
-void EXhalbtcoutsrc_ConnectNotify(struct btc_coexist *pBtCoexist, u8 action);
-void EXhalbtcoutsrc_MediaStatusNotify(
-	struct btc_coexist *pBtCoexist, enum rt_media_status mediaStatus
-);
-void EXhalbtcoutsrc_SpecialPacketNotify(struct btc_coexist *pBtCoexist, u8 pktType);
-void EXhalbtcoutsrc_BtInfoNotify(
-	struct btc_coexist *pBtCoexist, u8 *tmpBuf, u8 length
-);
-void EXhalbtcoutsrc_HaltNotify(struct btc_coexist *pBtCoexist);
-void EXhalbtcoutsrc_PnpNotify(struct btc_coexist *pBtCoexist, u8 pnpState);
-void EXhalbtcoutsrc_Periodical(struct btc_coexist *pBtCoexist);
-void EXhalbtcoutsrc_SetChipType(u8 chipType);
-void EXhalbtcoutsrc_SetAntNum(u8 type, u8 antNum);
-void EXhalbtcoutsrc_SetSingleAntPath(u8 singleAntPath);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_BB.c b/drivers/staging/rtl8723bs/hal/HalHWImg8723B_BB.c
deleted file mode 100644
index afdde3980ec3..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_BB.c
+++ /dev/null
@@ -1,556 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <linux/kernel.h>
-#include "odm_precomp.h"
-
-static bool CheckPositive(struct dm_odm_t *pDM_Odm, const u32 Condition1, const u32 Condition2)
-{
-	u8 _BoardType =
-		((pDM_Odm->BoardType & BIT(4)) >> 4) << 0 | /* _GLNA */
-		((pDM_Odm->BoardType & BIT(3)) >> 3) << 1 | /* _GPA */
-		((pDM_Odm->BoardType & BIT(7)) >> 7) << 2 | /* _ALNA */
-		((pDM_Odm->BoardType & BIT(6)) >> 6) << 3 | /* _APA */
-		((pDM_Odm->BoardType & BIT(2)) >> 2) << 4;  /* _BT */
-
-	u32 cond1 = Condition1, cond2 = Condition2;
-	u32 driver1 =
-		pDM_Odm->CutVersion << 24 |
-		pDM_Odm->SupportPlatform << 16 |
-		pDM_Odm->PackageType << 12 |
-		pDM_Odm->SupportInterface << 8  |
-		_BoardType;
-
-	u32 driver2 =
-		pDM_Odm->TypeGLNA << 0 |
-		pDM_Odm->TypeGPA << 8 |
-		pDM_Odm->TypeALNA << 16 |
-		pDM_Odm->TypeAPA << 24;
-
-	/* Value Defined Check =============== */
-	/* QFN Type [15:12] and Cut Version [27:24] need to do value check */
-
-	if (((cond1 & 0x0000F000) != 0) && ((cond1 & 0x0000F000) != (driver1 & 0x0000F000)))
-		return false;
-	if (((cond1 & 0x0F000000) != 0) && ((cond1 & 0x0F000000) != (driver1 & 0x0F000000)))
-		return false;
-
-	/* Bit Defined Check ================ */
-	/* We don't care [31:28] and [23:20] */
-	/* */
-	cond1   &= 0x000F0FFF;
-	driver1 &= 0x000F0FFF;
-
-	if ((cond1 & driver1) == cond1) {
-		u32 bitMask = 0;
-
-		if ((cond1 & 0x0F) == 0) /* BoardType is DONTCARE */
-			return true;
-
-		if ((cond1 & BIT(0)) != 0) /* GLNA */
-			bitMask |= 0x000000FF;
-		if ((cond1 & BIT(1)) != 0) /* GPA */
-			bitMask |= 0x0000FF00;
-		if ((cond1 & BIT(2)) != 0) /* ALNA */
-			bitMask |= 0x00FF0000;
-		if ((cond1 & BIT(3)) != 0) /* APA */
-			bitMask |= 0xFF000000;
-
-		/* BoardType of each RF path is matched */
-		if ((cond2 & bitMask) == (driver2 & bitMask))
-			return true;
-	}
-	return false;
-}
-
-/******************************************************************************
- *                           AGC_TAB.TXT
- ******************************************************************************/
-
-static u32 Array_MP_8723B_AGC_TAB[] = {
-		0xC78, 0xFD000001,
-		0xC78, 0xFC010001,
-		0xC78, 0xFB020001,
-		0xC78, 0xFA030001,
-		0xC78, 0xF9040001,
-		0xC78, 0xF8050001,
-		0xC78, 0xF7060001,
-		0xC78, 0xF6070001,
-		0xC78, 0xF5080001,
-		0xC78, 0xF4090001,
-		0xC78, 0xF30A0001,
-		0xC78, 0xF20B0001,
-		0xC78, 0xF10C0001,
-		0xC78, 0xF00D0001,
-		0xC78, 0xEF0E0001,
-		0xC78, 0xEE0F0001,
-		0xC78, 0xED100001,
-		0xC78, 0xEC110001,
-		0xC78, 0xEB120001,
-		0xC78, 0xEA130001,
-		0xC78, 0xE9140001,
-		0xC78, 0xE8150001,
-		0xC78, 0xE7160001,
-		0xC78, 0xE6170001,
-		0xC78, 0xE5180001,
-		0xC78, 0xE4190001,
-		0xC78, 0xE31A0001,
-		0xC78, 0xA51B0001,
-		0xC78, 0xA41C0001,
-		0xC78, 0xA31D0001,
-		0xC78, 0x671E0001,
-		0xC78, 0x661F0001,
-		0xC78, 0x65200001,
-		0xC78, 0x64210001,
-		0xC78, 0x63220001,
-		0xC78, 0x4A230001,
-		0xC78, 0x49240001,
-		0xC78, 0x48250001,
-		0xC78, 0x47260001,
-		0xC78, 0x46270001,
-		0xC78, 0x45280001,
-		0xC78, 0x44290001,
-		0xC78, 0x432A0001,
-		0xC78, 0x422B0001,
-		0xC78, 0x292C0001,
-		0xC78, 0x282D0001,
-		0xC78, 0x272E0001,
-		0xC78, 0x262F0001,
-		0xC78, 0x0A300001,
-		0xC78, 0x09310001,
-		0xC78, 0x08320001,
-		0xC78, 0x07330001,
-		0xC78, 0x06340001,
-		0xC78, 0x05350001,
-		0xC78, 0x04360001,
-		0xC78, 0x03370001,
-		0xC78, 0x02380001,
-		0xC78, 0x01390001,
-		0xC78, 0x013A0001,
-		0xC78, 0x013B0001,
-		0xC78, 0x013C0001,
-		0xC78, 0x013D0001,
-		0xC78, 0x013E0001,
-		0xC78, 0x013F0001,
-		0xC78, 0xFC400001,
-		0xC78, 0xFB410001,
-		0xC78, 0xFA420001,
-		0xC78, 0xF9430001,
-		0xC78, 0xF8440001,
-		0xC78, 0xF7450001,
-		0xC78, 0xF6460001,
-		0xC78, 0xF5470001,
-		0xC78, 0xF4480001,
-		0xC78, 0xF3490001,
-		0xC78, 0xF24A0001,
-		0xC78, 0xF14B0001,
-		0xC78, 0xF04C0001,
-		0xC78, 0xEF4D0001,
-		0xC78, 0xEE4E0001,
-		0xC78, 0xED4F0001,
-		0xC78, 0xEC500001,
-		0xC78, 0xEB510001,
-		0xC78, 0xEA520001,
-		0xC78, 0xE9530001,
-		0xC78, 0xE8540001,
-		0xC78, 0xE7550001,
-		0xC78, 0xE6560001,
-		0xC78, 0xE5570001,
-		0xC78, 0xE4580001,
-		0xC78, 0xE3590001,
-		0xC78, 0xA65A0001,
-		0xC78, 0xA55B0001,
-		0xC78, 0xA45C0001,
-		0xC78, 0xA35D0001,
-		0xC78, 0x675E0001,
-		0xC78, 0x665F0001,
-		0xC78, 0x65600001,
-		0xC78, 0x64610001,
-		0xC78, 0x63620001,
-		0xC78, 0x62630001,
-		0xC78, 0x61640001,
-		0xC78, 0x48650001,
-		0xC78, 0x47660001,
-		0xC78, 0x46670001,
-		0xC78, 0x45680001,
-		0xC78, 0x44690001,
-		0xC78, 0x436A0001,
-		0xC78, 0x426B0001,
-		0xC78, 0x286C0001,
-		0xC78, 0x276D0001,
-		0xC78, 0x266E0001,
-		0xC78, 0x256F0001,
-		0xC78, 0x24700001,
-		0xC78, 0x09710001,
-		0xC78, 0x08720001,
-		0xC78, 0x07730001,
-		0xC78, 0x06740001,
-		0xC78, 0x05750001,
-		0xC78, 0x04760001,
-		0xC78, 0x03770001,
-		0xC78, 0x02780001,
-		0xC78, 0x01790001,
-		0xC78, 0x017A0001,
-		0xC78, 0x017B0001,
-		0xC78, 0x017C0001,
-		0xC78, 0x017D0001,
-		0xC78, 0x017E0001,
-		0xC78, 0x017F0001,
-		0xC50, 0x69553422,
-		0xC50, 0x69553420,
-		0x824, 0x00390204,
-
-};
-
-void ODM_ReadAndConfig_MP_8723B_AGC_TAB(struct dm_odm_t *pDM_Odm)
-{
-	u32 i = 0;
-	u32 ArrayLen = ARRAY_SIZE(Array_MP_8723B_AGC_TAB);
-	u32 *Array = Array_MP_8723B_AGC_TAB;
-
-	for (i = 0; i < ArrayLen; i += 2) {
-		u32 v1 = Array[i];
-		u32 v2 = Array[i + 1];
-
-		/* This (offset, data) pair doesn't care the condition. */
-		if (v1 < 0x40000000) {
-			odm_ConfigBB_AGC_8723B(pDM_Odm, v1, bMaskDWord, v2);
-			continue;
-		} else {
-			/* This line is the beginning of branch. */
-			bool bMatched = true;
-			u8  cCond  = (u8)((v1 & (BIT(29) | BIT(28))) >> 28);
-
-			if (cCond == COND_ELSE) { /* ELSE, ENDIF */
-				bMatched = true;
-				READ_NEXT_PAIR(v1, v2, i);
-			} else if (!CheckPositive(pDM_Odm, v1, v2)) {
-				bMatched = false;
-				READ_NEXT_PAIR(v1, v2, i);
-				READ_NEXT_PAIR(v1, v2, i);
-			} else {
-				READ_NEXT_PAIR(v1, v2, i);
-				bMatched = true;
-				READ_NEXT_PAIR(v1, v2, i);
-			}
-
-			if (!bMatched) {
-				/*
-				 * Condition isn't matched.
-				 * Discard the following (offset, data) pairs.
-				 */
-				while (v1 < 0x40000000 && i < ArrayLen - 2)
-					READ_NEXT_PAIR(v1, v2, i);
-
-				i -= 2; /* prevent from for-loop += 2 */
-			} else {
-				/* Configure matched pairs and skip to end of if-else. */
-				while (v1 < 0x40000000 && i < ArrayLen - 2) {
-					odm_ConfigBB_AGC_8723B(pDM_Odm, v1, bMaskDWord, v2);
-					READ_NEXT_PAIR(v1, v2, i);
-				}
-
-				/* Keeps reading until ENDIF. */
-				cCond = (u8)((v1 & (BIT(29) | BIT(28))) >> 28);
-				while (cCond != COND_ENDIF && i < ArrayLen - 2) {
-					READ_NEXT_PAIR(v1, v2, i);
-					cCond = (u8)((v1 & (BIT(29) | BIT(28))) >> 28);
-				}
-			}
-		}
-	}
-}
-
-/******************************************************************************
- *                           PHY_REG.TXT
- ******************************************************************************/
-
-static u32 Array_MP_8723B_PHY_REG[] = {
-		0x800, 0x80040000,
-		0x804, 0x00000003,
-		0x808, 0x0000FC00,
-		0x80C, 0x0000000A,
-		0x810, 0x10001331,
-		0x814, 0x020C3D10,
-		0x818, 0x02200385,
-		0x81C, 0x00000000,
-		0x820, 0x01000100,
-		0x824, 0x00190204,
-		0x828, 0x00000000,
-		0x82C, 0x00000000,
-		0x830, 0x00000000,
-		0x834, 0x00000000,
-		0x838, 0x00000000,
-		0x83C, 0x00000000,
-		0x840, 0x00010000,
-		0x844, 0x00000000,
-		0x848, 0x00000000,
-		0x84C, 0x00000000,
-		0x850, 0x00000000,
-		0x854, 0x00000000,
-		0x858, 0x569A11A9,
-		0x85C, 0x01000014,
-		0x860, 0x66F60110,
-		0x864, 0x061F0649,
-		0x868, 0x00000000,
-		0x86C, 0x27272700,
-		0x870, 0x07000760,
-		0x874, 0x25004000,
-		0x878, 0x00000808,
-		0x87C, 0x00000000,
-		0x880, 0xB0000C1C,
-		0x884, 0x00000001,
-		0x888, 0x00000000,
-		0x88C, 0xCCC000C0,
-		0x890, 0x00000800,
-		0x894, 0xFFFFFFFE,
-		0x898, 0x40302010,
-		0x89C, 0x00706050,
-		0x900, 0x00000000,
-		0x904, 0x00000023,
-		0x908, 0x00000000,
-		0x90C, 0x81121111,
-		0x910, 0x00000002,
-		0x914, 0x00000201,
-		0xA00, 0x00D047C8,
-		0xA04, 0x80FF800C,
-		0xA08, 0x8C838300,
-		0xA0C, 0x2E7F120F,
-		0xA10, 0x9500BB78,
-		0xA14, 0x1114D028,
-		0xA18, 0x00881117,
-		0xA1C, 0x89140F00,
-		0xA20, 0x1A1B0000,
-		0xA24, 0x090E1317,
-		0xA28, 0x00000204,
-		0xA2C, 0x00D30000,
-		0xA70, 0x101FBF00,
-		0xA74, 0x00000007,
-		0xA78, 0x00000900,
-		0xA7C, 0x225B0606,
-		0xA80, 0x21806490,
-		0xB2C, 0x00000000,
-		0xC00, 0x48071D40,
-		0xC04, 0x03A05611,
-		0xC08, 0x000000E4,
-		0xC0C, 0x6C6C6C6C,
-		0xC10, 0x08800000,
-		0xC14, 0x40000100,
-		0xC18, 0x08800000,
-		0xC1C, 0x40000100,
-		0xC20, 0x00000000,
-		0xC24, 0x00000000,
-		0xC28, 0x00000000,
-		0xC2C, 0x00000000,
-		0xC30, 0x69E9AC44,
-		0xC34, 0x469652AF,
-		0xC38, 0x49795994,
-		0xC3C, 0x0A97971C,
-		0xC40, 0x1F7C403F,
-		0xC44, 0x000100B7,
-		0xC48, 0xEC020107,
-		0xC4C, 0x007F037F,
-		0xC50, 0x69553420,
-		0xC54, 0x43BC0094,
-		0xC58, 0x00013149,
-		0xC5C, 0x00250492,
-		0xC60, 0x00000000,
-		0xC64, 0x7112848B,
-		0xC68, 0x47C00BFF,
-		0xC6C, 0x00000036,
-		0xC70, 0x2C7F000D,
-		0xC74, 0x020610DB,
-		0xC78, 0x0000001F,
-		0xC7C, 0x00B91612,
-		0xC80, 0x390000E4,
-		0xC84, 0x20F60000,
-		0xC88, 0x40000100,
-		0xC8C, 0x20200000,
-		0xC90, 0x00020E1A,
-		0xC94, 0x00000000,
-		0xC98, 0x00020E1A,
-		0xC9C, 0x00007F7F,
-		0xCA0, 0x00000000,
-		0xCA4, 0x000300A0,
-		0xCA8, 0x00000000,
-		0xCAC, 0x00000000,
-		0xCB0, 0x00000000,
-		0xCB4, 0x00000000,
-		0xCB8, 0x00000000,
-		0xCBC, 0x28000000,
-		0xCC0, 0x00000000,
-		0xCC4, 0x00000000,
-		0xCC8, 0x00000000,
-		0xCCC, 0x00000000,
-		0xCD0, 0x00000000,
-		0xCD4, 0x00000000,
-		0xCD8, 0x64B22427,
-		0xCDC, 0x00766932,
-		0xCE0, 0x00222222,
-		0xCE4, 0x00000000,
-		0xCE8, 0x37644302,
-		0xCEC, 0x2F97D40C,
-		0xD00, 0x00000740,
-		0xD04, 0x40020401,
-		0xD08, 0x0000907F,
-		0xD0C, 0x20010201,
-		0xD10, 0xA0633333,
-		0xD14, 0x3333BC53,
-		0xD18, 0x7A8F5B6F,
-		0xD2C, 0xCC979975,
-		0xD30, 0x00000000,
-		0xD34, 0x80608000,
-		0xD38, 0x00000000,
-		0xD3C, 0x00127353,
-		0xD40, 0x00000000,
-		0xD44, 0x00000000,
-		0xD48, 0x00000000,
-		0xD4C, 0x00000000,
-		0xD50, 0x6437140A,
-		0xD54, 0x00000000,
-		0xD58, 0x00000282,
-		0xD5C, 0x30032064,
-		0xD60, 0x4653DE68,
-		0xD64, 0x04518A3C,
-		0xD68, 0x00002101,
-		0xD6C, 0x2A201C16,
-		0xD70, 0x1812362E,
-		0xD74, 0x322C2220,
-		0xD78, 0x000E3C24,
-		0xE00, 0x2D2D2D2D,
-		0xE04, 0x2D2D2D2D,
-		0xE08, 0x0390272D,
-		0xE10, 0x2D2D2D2D,
-		0xE14, 0x2D2D2D2D,
-		0xE18, 0x2D2D2D2D,
-		0xE1C, 0x2D2D2D2D,
-		0xE28, 0x00000000,
-		0xE30, 0x1000DC1F,
-		0xE34, 0x10008C1F,
-		0xE38, 0x02140102,
-		0xE3C, 0x681604C2,
-		0xE40, 0x01007C00,
-		0xE44, 0x01004800,
-		0xE48, 0xFB000000,
-		0xE4C, 0x000028D1,
-		0xE50, 0x1000DC1F,
-		0xE54, 0x10008C1F,
-		0xE58, 0x02140102,
-		0xE5C, 0x28160D05,
-		0xE60, 0x00000008,
-		0xE68, 0x001B2556,
-		0xE6C, 0x00C00096,
-		0xE70, 0x00C00096,
-		0xE74, 0x01000056,
-		0xE78, 0x01000014,
-		0xE7C, 0x01000056,
-		0xE80, 0x01000014,
-		0xE84, 0x00C00096,
-		0xE88, 0x01000056,
-		0xE8C, 0x00C00096,
-		0xED0, 0x00C00096,
-		0xED4, 0x00C00096,
-		0xED8, 0x00C00096,
-		0xEDC, 0x000000D6,
-		0xEE0, 0x000000D6,
-		0xEEC, 0x01C00016,
-		0xF14, 0x00000003,
-		0xF4C, 0x00000000,
-		0xF00, 0x00000300,
-		0x820, 0x01000100,
-		0x800, 0x83040000,
-
-};
-
-void ODM_ReadAndConfig_MP_8723B_PHY_REG(struct dm_odm_t *pDM_Odm)
-{
-	u32 i = 0;
-	u32 ArrayLen = ARRAY_SIZE(Array_MP_8723B_PHY_REG);
-	u32 *Array = Array_MP_8723B_PHY_REG;
-
-	for (i = 0; i < ArrayLen; i += 2) {
-		u32 v1 = Array[i];
-		u32 v2 = Array[i + 1];
-
-		/* This (offset, data) pair doesn't care the condition. */
-		if (v1 < 0x40000000) {
-			odm_ConfigBB_PHY_8723B(pDM_Odm, v1, bMaskDWord, v2);
-			continue;
-		} else {
-			/* This line is the beginning of branch. */
-			bool bMatched = true;
-			u8  cCond  = (u8)((v1 & (BIT(29) | BIT(28))) >> 28);
-
-			if (cCond == COND_ELSE) { /* ELSE, ENDIF */
-				bMatched = true;
-				READ_NEXT_PAIR(v1, v2, i);
-			} else if (!CheckPositive(pDM_Odm, v1, v2)) {
-				bMatched = false;
-				READ_NEXT_PAIR(v1, v2, i);
-				READ_NEXT_PAIR(v1, v2, i);
-			} else {
-				READ_NEXT_PAIR(v1, v2, i);
-				bMatched = true;
-				READ_NEXT_PAIR(v1, v2, i);
-			}
-
-			if (!bMatched) {
-				/*
-				 * Condition isn't matched.
-				 * Discard the following (offset, data) pairs.
-				 */
-				while (v1 < 0x40000000 && i < ArrayLen - 2)
-					READ_NEXT_PAIR(v1, v2, i);
-
-				i -= 2; /* prevent from for-loop += 2 */
-			} else { /* Configure matched pairs and skip to end of if-else. */
-				while (v1 < 0x40000000 && i < ArrayLen - 2) {
-					odm_ConfigBB_PHY_8723B(pDM_Odm, v1, bMaskDWord, v2);
-					READ_NEXT_PAIR(v1, v2, i);
-				}
-
-				/* Keeps reading until ENDIF. */
-				cCond = (u8)((v1 & (BIT(29) | BIT(28))) >> 28);
-				while (cCond != COND_ENDIF && i < ArrayLen - 2) {
-					READ_NEXT_PAIR(v1, v2, i);
-					cCond = (u8)((v1 & (BIT(29) | BIT(28))) >> 28);
-				}
-			}
-		}
-	}
-}
-
-/******************************************************************************
- *                           PHY_REG_PG.TXT
- ******************************************************************************/
-
-static u32 Array_MP_8723B_PHY_REG_PG[] = {
-	0, 0x00000e08, 0x0000ff00, 0x00003800,
-	0, 0x0000086c, 0xffffff00, 0x32343600,
-	0, 0x00000e00, 0xffffffff, 0x40424444,
-	0, 0x00000e04, 0xffffffff, 0x28323638,
-	0, 0x00000e10, 0xffffffff, 0x38404244,
-	0, 0x00000e14, 0xffffffff, 0x26303436
-};
-
-void ODM_ReadAndConfig_MP_8723B_PHY_REG_PG(struct dm_odm_t *pDM_Odm)
-{
-	u32 i = 0;
-	u32 *Array = Array_MP_8723B_PHY_REG_PG;
-
-	pDM_Odm->PhyRegPgVersion = 1;
-	pDM_Odm->PhyRegPgValueType = PHY_REG_PG_EXACT_VALUE;
-
-	for (i = 0; i < ARRAY_SIZE(Array_MP_8723B_PHY_REG_PG); i += 4) {
-		u32 v1 = Array[i];
-		u32 v2 = Array[i + 1];
-		u32 v3 = Array[i + 2];
-		u32 v4 = Array[i + 3];
-
-		odm_ConfigBB_PHY_REG_PG_8723B(pDM_Odm, v1, v2, v3, v4);
-	}
-}
diff --git a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_BB.h b/drivers/staging/rtl8723bs/hal/HalHWImg8723B_BB.h
deleted file mode 100644
index 054acfe231b4..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_BB.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef __INC_MP_BB_HW_IMG_8723B_H
-#define __INC_MP_BB_HW_IMG_8723B_H
-
-/******************************************************************************
- *                           AGC_TAB.TXT
- ******************************************************************************/
-
-void
-ODM_ReadAndConfig_MP_8723B_AGC_TAB(/*  TC: Test Chip, MP: MP Chip */
-	struct dm_odm_t *pDM_Odm
-);
-
-/******************************************************************************
- *                           PHY_REG.TXT
- ******************************************************************************/
-
-void
-ODM_ReadAndConfig_MP_8723B_PHY_REG(/*  TC: Test Chip, MP: MP Chip */
-	struct dm_odm_t *pDM_Odm
-);
-
-/******************************************************************************
- *                           PHY_REG_PG.TXT
- ******************************************************************************/
-
-void
-ODM_ReadAndConfig_MP_8723B_PHY_REG_PG(/*  TC: Test Chip, MP: MP Chip */
-	struct dm_odm_t *pDM_Odm
-);
-u32 ODM_GetVersion_MP_8723B_PHY_REG_PG(void);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_MAC.c b/drivers/staging/rtl8723bs/hal/HalHWImg8723B_MAC.c
deleted file mode 100644
index 0e098bd2d9f6..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_MAC.c
+++ /dev/null
@@ -1,237 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <linux/kernel.h>
-#include "odm_precomp.h"
-
-static bool CheckPositive(struct dm_odm_t *pDM_Odm, const u32 Condition1, const u32 Condition2)
-{
-	u8 _BoardType =
-		((pDM_Odm->BoardType & BIT(4)) >> 4) << 0 | /* _GLNA */
-		((pDM_Odm->BoardType & BIT(3)) >> 3) << 1 | /* _GPA */
-		((pDM_Odm->BoardType & BIT(7)) >> 7) << 2 | /* _ALNA */
-		((pDM_Odm->BoardType & BIT(6)) >> 6) << 3 | /* _APA */
-		((pDM_Odm->BoardType & BIT(2)) >> 2) << 4;  /* _BT */
-
-	u32   cond1   = Condition1, cond2 = Condition2;
-	u32    driver1 =
-		pDM_Odm->CutVersion       << 24 |
-		pDM_Odm->SupportPlatform  << 16 |
-		pDM_Odm->PackageType      << 12 |
-		pDM_Odm->SupportInterface << 8  |
-		_BoardType;
-
-	u32 driver2 =
-		pDM_Odm->TypeGLNA <<  0 |
-		pDM_Odm->TypeGPA  <<  8 |
-		pDM_Odm->TypeALNA << 16 |
-		pDM_Odm->TypeAPA  << 24;
-
-	/* Value Defined Check =============== */
-	/* QFN Type [15:12] and Cut Version [27:24] need to do value check */
-
-	if (((cond1 & 0x0000F000) != 0) && ((cond1 & 0x0000F000) != (driver1 & 0x0000F000)))
-		return false;
-	if (((cond1 & 0x0F000000) != 0) && ((cond1 & 0x0F000000) != (driver1 & 0x0F000000)))
-		return false;
-
-	/* Bit Defined Check ================ */
-	/* We don't care [31:28] and [23:20] */
-	/* */
-	cond1   &= 0x000F0FFF;
-	driver1 &= 0x000F0FFF;
-
-	if ((cond1 & driver1) == cond1) {
-		u32 bitMask = 0;
-
-		if ((cond1 & 0x0F) == 0) /* BoardType is DONTCARE */
-			return true;
-
-		if ((cond1 & BIT(0)) != 0) /* GLNA */
-			bitMask |= 0x000000FF;
-		if ((cond1 & BIT(1)) != 0) /* GPA */
-			bitMask |= 0x0000FF00;
-		if ((cond1 & BIT(2)) != 0) /* ALNA */
-			bitMask |= 0x00FF0000;
-		if ((cond1 & BIT(3)) != 0) /* APA */
-			bitMask |= 0xFF000000;
-
-		/* BoardType of each RF path is matched */
-		if ((cond2 & bitMask) == (driver2 & bitMask))
-			return true;
-	}
-	return false;
-}
-
-/******************************************************************************
- *                           MAC_REG.TXT
- ******************************************************************************/
-
-static u32 Array_MP_8723B_MAC_REG[] = {
-		0x02F, 0x00000030,
-		0x035, 0x00000000,
-		0x039, 0x00000008,
-		0x04E, 0x000000E0,
-		0x064, 0x00000000,
-		0x067, 0x00000020,
-		0x428, 0x0000000A,
-		0x429, 0x00000010,
-		0x430, 0x00000000,
-		0x431, 0x00000000,
-		0x432, 0x00000000,
-		0x433, 0x00000001,
-		0x434, 0x00000004,
-		0x435, 0x00000005,
-		0x436, 0x00000007,
-		0x437, 0x00000008,
-		0x43C, 0x00000004,
-		0x43D, 0x00000005,
-		0x43E, 0x00000007,
-		0x43F, 0x00000008,
-		0x440, 0x0000005D,
-		0x441, 0x00000001,
-		0x442, 0x00000000,
-		0x444, 0x00000010,
-		0x445, 0x00000000,
-		0x446, 0x00000000,
-		0x447, 0x00000000,
-		0x448, 0x00000000,
-		0x449, 0x000000F0,
-		0x44A, 0x0000000F,
-		0x44B, 0x0000003E,
-		0x44C, 0x00000010,
-		0x44D, 0x00000000,
-		0x44E, 0x00000000,
-		0x44F, 0x00000000,
-		0x450, 0x00000000,
-		0x451, 0x000000F0,
-		0x452, 0x0000000F,
-		0x453, 0x00000000,
-		0x456, 0x0000005E,
-		0x460, 0x00000066,
-		0x461, 0x00000066,
-		0x4C8, 0x000000FF,
-		0x4C9, 0x00000008,
-		0x4CC, 0x000000FF,
-		0x4CD, 0x000000FF,
-		0x4CE, 0x00000001,
-		0x500, 0x00000026,
-		0x501, 0x000000A2,
-		0x502, 0x0000002F,
-		0x503, 0x00000000,
-		0x504, 0x00000028,
-		0x505, 0x000000A3,
-		0x506, 0x0000005E,
-		0x507, 0x00000000,
-		0x508, 0x0000002B,
-		0x509, 0x000000A4,
-		0x50A, 0x0000005E,
-		0x50B, 0x00000000,
-		0x50C, 0x0000004F,
-		0x50D, 0x000000A4,
-		0x50E, 0x00000000,
-		0x50F, 0x00000000,
-		0x512, 0x0000001C,
-		0x514, 0x0000000A,
-		0x516, 0x0000000A,
-		0x525, 0x0000004F,
-		0x550, 0x00000010,
-		0x551, 0x00000010,
-		0x559, 0x00000002,
-		0x55C, 0x00000050,
-		0x55D, 0x000000FF,
-		0x605, 0x00000030,
-		0x608, 0x0000000E,
-		0x609, 0x0000002A,
-		0x620, 0x000000FF,
-		0x621, 0x000000FF,
-		0x622, 0x000000FF,
-		0x623, 0x000000FF,
-		0x624, 0x000000FF,
-		0x625, 0x000000FF,
-		0x626, 0x000000FF,
-		0x627, 0x000000FF,
-		0x638, 0x00000050,
-		0x63C, 0x0000000A,
-		0x63D, 0x0000000A,
-		0x63E, 0x0000000E,
-		0x63F, 0x0000000E,
-		0x640, 0x00000040,
-		0x642, 0x00000040,
-		0x643, 0x00000000,
-		0x652, 0x000000C8,
-		0x66E, 0x00000005,
-		0x700, 0x00000021,
-		0x701, 0x00000043,
-		0x702, 0x00000065,
-		0x703, 0x00000087,
-		0x708, 0x00000021,
-		0x709, 0x00000043,
-		0x70A, 0x00000065,
-		0x70B, 0x00000087,
-		0x765, 0x00000018,
-		0x76E, 0x00000004,
-
-};
-
-void ODM_ReadAndConfig_MP_8723B_MAC_REG(struct dm_odm_t *pDM_Odm)
-{
-	u32 i = 0;
-	u32 ArrayLen = ARRAY_SIZE(Array_MP_8723B_MAC_REG);
-	u32 *Array = Array_MP_8723B_MAC_REG;
-
-	for (i = 0; i < ArrayLen; i += 2) {
-		u32 v1 = Array[i];
-		u32 v2 = Array[i + 1];
-
-		/* This (offset, data) pair doesn't care the condition. */
-		if (v1 < 0x40000000) {
-			odm_ConfigMAC_8723B(pDM_Odm, v1, (u8)v2);
-			continue;
-		} else {
-			/* This line is the beginning of branch. */
-			bool bMatched = true;
-			u8  cCond  = (u8)((v1 & (BIT(29) | BIT(28))) >> 28);
-
-			if (cCond == COND_ELSE) { /* ELSE, ENDIF */
-				bMatched = true;
-				READ_NEXT_PAIR(v1, v2, i);
-			} else if (!CheckPositive(pDM_Odm, v1, v2)) {
-				bMatched = false;
-				READ_NEXT_PAIR(v1, v2, i);
-				READ_NEXT_PAIR(v1, v2, i);
-			} else {
-				READ_NEXT_PAIR(v1, v2, i);
-				bMatched = true;
-				READ_NEXT_PAIR(v1, v2, i);
-			}
-
-			if (!bMatched) {
-				/*
-				 * Condition isn't matched.
-				 * Discard the following (offset, data) pairs.
-				 */
-				while (v1 < 0x40000000 && i < ArrayLen - 2)
-					READ_NEXT_PAIR(v1, v2, i);
-
-				i -= 2; /* prevent from for-loop += 2 */
-			} else { /* Configure matched pairs and skip to end of if-else. */
-				while (v1 < 0x40000000 && i < ArrayLen - 2) {
-					odm_ConfigMAC_8723B(pDM_Odm, v1, (u8)v2);
-					READ_NEXT_PAIR(v1, v2, i);
-				}
-
-				/* Keeps reading until ENDIF. */
-				cCond = (u8)((v1 & (BIT(29) | BIT(28))) >> 28);
-				while (cCond != COND_ENDIF && i < ArrayLen - 2) {
-					READ_NEXT_PAIR(v1, v2, i);
-					cCond = (u8)((v1 & (BIT(29) | BIT(28))) >> 28);
-				}
-			}
-		}
-	}
-}
diff --git a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_MAC.h b/drivers/staging/rtl8723bs/hal/HalHWImg8723B_MAC.h
deleted file mode 100644
index 250861325919..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_MAC.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef __INC_MP_MAC_HW_IMG_8723B_H
-#define __INC_MP_MAC_HW_IMG_8723B_H
-
-/******************************************************************************
- *                           MAC_REG.TXT
- ******************************************************************************/
-
-void
-ODM_ReadAndConfig_MP_8723B_MAC_REG(/*  TC: Test Chip, MP: MP Chip */
-	struct dm_odm_t *pDM_Odm
-);
-#endif
diff --git a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_RF.c b/drivers/staging/rtl8723bs/hal/HalHWImg8723B_RF.c
deleted file mode 100644
index 30c8624bba25..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_RF.c
+++ /dev/null
@@ -1,554 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <linux/kernel.h>
-#include "odm_precomp.h"
-
-static bool CheckPositive(
-	struct dm_odm_t *pDM_Odm, const u32 Condition1, const u32 Condition2
-)
-{
-	u8 _BoardType =
-			((pDM_Odm->BoardType & BIT(4)) >> 4) << 0 | /*  _GLNA */
-			((pDM_Odm->BoardType & BIT(3)) >> 3) << 1 | /*  _GPA */
-			((pDM_Odm->BoardType & BIT(7)) >> 7) << 2 | /*  _ALNA */
-			((pDM_Odm->BoardType & BIT(6)) >> 6) << 3 | /*  _APA */
-			((pDM_Odm->BoardType & BIT(2)) >> 2) << 4;  /*  _BT */
-
-	u32 cond1 = Condition1, cond2 = Condition2;
-	u32 driver1 =
-		pDM_Odm->CutVersion << 24 |
-		pDM_Odm->SupportPlatform << 16 |
-		pDM_Odm->PackageType << 12 |
-		pDM_Odm->SupportInterface << 8 |
-		_BoardType;
-
-	u32 driver2 =
-		pDM_Odm->TypeGLNA <<  0 |
-		pDM_Odm->TypeGPA  <<  8 |
-		pDM_Odm->TypeALNA << 16 |
-		pDM_Odm->TypeAPA  << 24;
-
-	/*  Value Defined Check =============== */
-	/* QFN Type [15:12] and Cut Version [27:24] need to do value check */
-
-	if (
-		((cond1 & 0x0000F000) != 0) &&
-		((cond1 & 0x0000F000) != (driver1 & 0x0000F000))
-	)
-		return false;
-
-	if (
-		((cond1 & 0x0F000000) != 0) &&
-		((cond1 & 0x0F000000) != (driver1 & 0x0F000000))
-	)
-		return false;
-
-	/*  Bit Defined Check ================ */
-	/*  We don't care [31:28] and [23:20] */
-	cond1   &= 0x000F0FFF;
-	driver1 &= 0x000F0FFF;
-
-	if ((cond1 & driver1) == cond1) {
-		u32 bitMask = 0;
-
-		if ((cond1 & 0x0F) == 0) /*  BoardType is DONTCARE */
-			return true;
-
-		if ((cond1 & BIT(0)) != 0) /* GLNA */
-			bitMask |= 0x000000FF;
-		if ((cond1 & BIT(1)) != 0) /* GPA */
-			bitMask |= 0x0000FF00;
-		if ((cond1 & BIT(2)) != 0) /* ALNA */
-			bitMask |= 0x00FF0000;
-		if ((cond1 & BIT(3)) != 0) /* APA */
-			bitMask |= 0xFF000000;
-
-		/*  BoardType of each RF path is matched */
-		if ((cond2 & bitMask) == (driver2 & bitMask))
-			return true;
-
-		return false;
-	}
-
-	return false;
-}
-
-/******************************************************************************
- *                           RadioA.TXT
- ******************************************************************************/
-
-static u32 Array_MP_8723B_RadioA[] = {
-		0x000, 0x00010000,
-		0x0B0, 0x000DFFE0,
-		0x0FE, 0x00000000,
-		0x0FE, 0x00000000,
-		0x0FE, 0x00000000,
-		0x0B1, 0x00000018,
-		0x0FE, 0x00000000,
-		0x0FE, 0x00000000,
-		0x0FE, 0x00000000,
-		0x0B2, 0x00084C00,
-		0x0B5, 0x0000D2CC,
-		0x0B6, 0x000925AA,
-		0x0B7, 0x00000010,
-		0x0B8, 0x0000907F,
-		0x05C, 0x00000002,
-		0x07C, 0x00000002,
-		0x07E, 0x00000005,
-		0x08B, 0x0006FC00,
-		0x0B0, 0x000FF9F0,
-		0x01C, 0x000739D2,
-		0x01E, 0x00000000,
-		0x0DF, 0x00000780,
-		0x050, 0x00067435,
-	0x80002000, 0x00000000, 0x40000000, 0x00000000,
-		0x051, 0x0006B10E,
-	0x90003000, 0x00000000, 0x40000000, 0x00000000,
-		0x051, 0x0006B10E,
-	0x90004000, 0x00000000, 0x40000000, 0x00000000,
-		0x051, 0x0006B10E,
-	0xA0000000, 0x00000000,
-		0x051, 0x0006B04E,
-	0xB0000000, 0x00000000,
-		0x052, 0x000007D2,
-		0x053, 0x00000000,
-		0x054, 0x00050400,
-		0x055, 0x0004026E,
-		0x0DD, 0x0000004C,
-		0x070, 0x00067435,
-	0x80002000, 0x00000000, 0x40000000, 0x00000000,
-		0x071, 0x0006B10E,
-	0x90003000, 0x00000000, 0x40000000, 0x00000000,
-		0x071, 0x0006B10E,
-	0x90004000, 0x00000000, 0x40000000, 0x00000000,
-		0x071, 0x0006B10E,
-	0xA0000000, 0x00000000,
-		0x071, 0x0006B04E,
-	0xB0000000, 0x00000000,
-		0x072, 0x000007D2,
-		0x073, 0x00000000,
-		0x074, 0x00050400,
-		0x075, 0x0004026E,
-		0x0EF, 0x00000100,
-		0x034, 0x0000ADD7,
-		0x035, 0x00005C00,
-		0x034, 0x00009DD4,
-		0x035, 0x00005000,
-		0x034, 0x00008DD1,
-		0x035, 0x00004400,
-		0x034, 0x00007DCE,
-		0x035, 0x00003800,
-		0x034, 0x00006CD1,
-		0x035, 0x00004400,
-		0x034, 0x00005CCE,
-		0x035, 0x00003800,
-		0x034, 0x000048CE,
-		0x035, 0x00004400,
-		0x034, 0x000034CE,
-		0x035, 0x00003800,
-		0x034, 0x00002451,
-		0x035, 0x00004400,
-		0x034, 0x0000144E,
-		0x035, 0x00003800,
-		0x034, 0x00000051,
-		0x035, 0x00004400,
-		0x0EF, 0x00000000,
-		0x0EF, 0x00000100,
-		0x0ED, 0x00000010,
-		0x044, 0x0000ADD7,
-		0x044, 0x00009DD4,
-		0x044, 0x00008DD1,
-		0x044, 0x00007DCE,
-		0x044, 0x00006CC1,
-		0x044, 0x00005CCE,
-		0x044, 0x000044D1,
-		0x044, 0x000034CE,
-		0x044, 0x00002451,
-		0x044, 0x0000144E,
-		0x044, 0x00000051,
-		0x0EF, 0x00000000,
-		0x0ED, 0x00000000,
-		0x07F, 0x00020080,
-		0x0EF, 0x00002000,
-		0x03B, 0x000380EF,
-		0x03B, 0x000302FE,
-		0x03B, 0x00028CE6,
-		0x03B, 0x000200BC,
-		0x03B, 0x000188A5,
-		0x03B, 0x00010FBC,
-		0x03B, 0x00008F71,
-		0x03B, 0x00000900,
-		0x0EF, 0x00000000,
-		0x0ED, 0x00000001,
-		0x040, 0x000380EF,
-		0x040, 0x000302FE,
-		0x040, 0x00028CE6,
-		0x040, 0x000200BC,
-		0x040, 0x000188A5,
-		0x040, 0x00010FBC,
-		0x040, 0x00008F71,
-		0x040, 0x00000900,
-		0x0ED, 0x00000000,
-		0x082, 0x00080000,
-		0x083, 0x00008000,
-		0x084, 0x00048D80,
-		0x085, 0x00068000,
-		0x0A2, 0x00080000,
-		0x0A3, 0x00008000,
-		0x0A4, 0x00048D80,
-		0x0A5, 0x00068000,
-		0x0ED, 0x00000002,
-		0x0EF, 0x00000002,
-		0x056, 0x00000032,
-		0x076, 0x00000032,
-		0x001, 0x00000780,
-
-};
-
-void ODM_ReadAndConfig_MP_8723B_RadioA(struct dm_odm_t *pDM_Odm)
-{
-	u32 i = 0;
-	u32 ArrayLen = ARRAY_SIZE(Array_MP_8723B_RadioA);
-	u32 *Array = Array_MP_8723B_RadioA;
-
-	for (i = 0; i < ArrayLen; i += 2) {
-		u32 v1 = Array[i];
-		u32 v2 = Array[i+1];
-
-		/*  This (offset, data) pair doesn't care the condition. */
-		if (v1 < 0x40000000) {
-			odm_ConfigRF_RadioA_8723B(pDM_Odm, v1, v2);
-			continue;
-		} else {
-			/*  This line is the beginning of branch. */
-			bool bMatched = true;
-			u8  cCond  = (u8)((v1 & (BIT(29)|BIT(28))) >> 28);
-
-			if (cCond == COND_ELSE) { /*  ELSE, ENDIF */
-				bMatched = true;
-				READ_NEXT_PAIR(v1, v2, i);
-			} else if (!CheckPositive(pDM_Odm, v1, v2)) {
-				bMatched = false;
-				READ_NEXT_PAIR(v1, v2, i);
-				READ_NEXT_PAIR(v1, v2, i);
-			} else {
-				READ_NEXT_PAIR(v1, v2, i);
-				bMatched = true;
-				READ_NEXT_PAIR(v1, v2, i);
-			}
-
-			if (!bMatched) {
-				/*
-				 *  Condition isn't matched.
-				 *  Discard the following (offset, data) pairs.
-				 */
-				while (v1 < 0x40000000 && i < ArrayLen-2)
-					READ_NEXT_PAIR(v1, v2, i);
-
-				i -= 2; /*  prevent from for-loop += 2 */
-			} else {
-				/*  Configure matched pairs and skip to end of if-else. */
-				while (v1 < 0x40000000 && i < ArrayLen-2) {
-					odm_ConfigRF_RadioA_8723B(pDM_Odm, v1, v2);
-					READ_NEXT_PAIR(v1, v2, i);
-				}
-
-				/*  Keeps reading until ENDIF. */
-				cCond = (u8)((v1 & (BIT(29)|BIT(28))) >> 28);
-				while (cCond != COND_ENDIF && i < ArrayLen-2) {
-					READ_NEXT_PAIR(v1, v2, i);
-					cCond = (u8)((v1 & (BIT(29)|BIT(28))) >> 28);
-				}
-			}
-		}
-	}
-}
-
-/******************************************************************************
- *                           TxPowerTrack_SDIO.TXT
- ******************************************************************************/
-
-static u8 gDeltaSwingTableIdx_MP_2GB_N_TxPowerTrack_SDIO_8723B[] = {
-	0, 0, 1, 2, 2, 2, 3, 3, 3, 4,  5,  5,  6,  6, 6,  6,
-	7,  7,  7, 8,  8,  9,  9, 10, 10, 11, 12, 13, 14, 15
-};
-static u8 gDeltaSwingTableIdx_MP_2GB_P_TxPowerTrack_SDIO_8723B[] = {
-	0, 0, 1, 2, 2, 3, 3, 4, 5, 5,  6,  6,  7,  7,  8,  8,
-	9,  9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 14, 15, 15
-};
-static u8 gDeltaSwingTableIdx_MP_2GA_N_TxPowerTrack_SDIO_8723B[] = {
-	0, 0, 1, 2, 2, 2, 3, 3, 3, 4,  5,  5,  6,  6,  6,  6,
-	7,  7,  7,  8,  8,  9,  9, 10, 10, 11, 12, 13, 14, 15
-};
-static u8 gDeltaSwingTableIdx_MP_2GA_P_TxPowerTrack_SDIO_8723B[] = {
-	0, 0, 1, 2, 2, 3, 3, 4, 5, 5,  6,  6,  7,  7,  8,  8,
-	9,  9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 14, 15, 15
-};
-static u8 gDeltaSwingTableIdx_MP_2GCCKB_N_TxPowerTrack_SDIO_8723B[] = {
-	0, 0, 1, 2, 2, 3, 3, 4, 4, 5,  6,  6,  7,  7,  7,  8,
-	8,  8,  9,  9,  9, 10, 10, 11, 11, 12, 12, 13, 14, 15
-};
-static u8 gDeltaSwingTableIdx_MP_2GCCKB_P_TxPowerTrack_SDIO_8723B[] = {
-	0, 0, 1, 2, 2, 2, 3, 3, 3, 4,  5,  5,  6,  6,  7,  7,
-	8,  8,  9,  9,  9, 10, 10, 11, 11, 12, 12, 13, 14, 15
-};
-static u8 gDeltaSwingTableIdx_MP_2GCCKA_N_TxPowerTrack_SDIO_8723B[] = {
-	0, 0, 1, 2, 2, 3, 3, 4, 4, 5,  6,  6,  7,  7,  7,  8,
-	8,  8,  9,  9,  9, 10, 10, 11, 11, 12, 12, 13, 14, 15
-};
-static u8 gDeltaSwingTableIdx_MP_2GCCKA_P_TxPowerTrack_SDIO_8723B[] = {
-	0, 0, 1, 2, 2, 2, 3, 3, 3, 4,  5,  5,  6,  6,  7,  7,
-	8,  8,  9,  9,  9, 10, 10, 11, 11, 12, 12, 13, 14, 15
-};
-
-void ODM_ReadAndConfig_MP_8723B_TxPowerTrack_SDIO(struct dm_odm_t *pDM_Odm)
-{
-	struct odm_rf_cal_t *pRFCalibrateInfo = &pDM_Odm->RFCalibrateInfo;
-
-	memcpy(
-		pRFCalibrateInfo->DeltaSwingTableIdx_2GA_P,
-		gDeltaSwingTableIdx_MP_2GA_P_TxPowerTrack_SDIO_8723B,
-		DELTA_SWINGIDX_SIZE
-	);
-	memcpy(
-		pRFCalibrateInfo->DeltaSwingTableIdx_2GA_N,
-		gDeltaSwingTableIdx_MP_2GA_N_TxPowerTrack_SDIO_8723B,
-		DELTA_SWINGIDX_SIZE
-	);
-	memcpy(
-		pRFCalibrateInfo->DeltaSwingTableIdx_2GB_P,
-		gDeltaSwingTableIdx_MP_2GB_P_TxPowerTrack_SDIO_8723B,
-		DELTA_SWINGIDX_SIZE
-	);
-	memcpy(
-		pRFCalibrateInfo->DeltaSwingTableIdx_2GB_N,
-		gDeltaSwingTableIdx_MP_2GB_N_TxPowerTrack_SDIO_8723B,
-		DELTA_SWINGIDX_SIZE
-	);
-
-	memcpy(
-		pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKA_P,
-		gDeltaSwingTableIdx_MP_2GCCKA_P_TxPowerTrack_SDIO_8723B,
-		DELTA_SWINGIDX_SIZE
-	);
-	memcpy(
-		pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKA_N,
-		gDeltaSwingTableIdx_MP_2GCCKA_N_TxPowerTrack_SDIO_8723B,
-		DELTA_SWINGIDX_SIZE
-	);
-	memcpy(
-		pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKB_P,
-		gDeltaSwingTableIdx_MP_2GCCKB_P_TxPowerTrack_SDIO_8723B,
-		DELTA_SWINGIDX_SIZE
-	);
-	memcpy(
-		pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKB_N,
-		gDeltaSwingTableIdx_MP_2GCCKB_N_TxPowerTrack_SDIO_8723B,
-		DELTA_SWINGIDX_SIZE
-	);
-}
-
-/******************************************************************************
- *                           TXPWR_LMT.TXT
- ******************************************************************************/
-
-static u8 *Array_MP_8723B_TXPWR_LMT[] = {
-	"FCC", "20M", "CCK", "1T", "01", "32",
-	"ETSI", "20M", "CCK", "1T", "01", "32",
-	"MKK", "20M", "CCK", "1T", "01", "32",
-	"FCC", "20M", "CCK", "1T", "02", "32",
-	"ETSI", "20M", "CCK", "1T", "02", "32",
-	"MKK", "20M", "CCK", "1T", "02", "32",
-	"FCC", "20M", "CCK", "1T", "03", "32",
-	"ETSI", "20M", "CCK", "1T", "03", "32",
-	"MKK", "20M", "CCK", "1T", "03", "32",
-	"FCC", "20M", "CCK", "1T", "04", "32",
-	"ETSI", "20M", "CCK", "1T", "04", "32",
-	"MKK", "20M", "CCK", "1T", "04", "32",
-	"FCC", "20M", "CCK", "1T", "05", "32",
-	"ETSI", "20M", "CCK", "1T", "05", "32",
-	"MKK", "20M", "CCK", "1T", "05", "32",
-	"FCC", "20M", "CCK", "1T", "06", "32",
-	"ETSI", "20M", "CCK", "1T", "06", "32",
-	"MKK", "20M", "CCK", "1T", "06", "32",
-	"FCC", "20M", "CCK", "1T", "07", "32",
-	"ETSI", "20M", "CCK", "1T", "07", "32",
-	"MKK", "20M", "CCK", "1T", "07", "32",
-	"FCC", "20M", "CCK", "1T", "08", "32",
-	"ETSI", "20M", "CCK", "1T", "08", "32",
-	"MKK", "20M", "CCK", "1T", "08", "32",
-	"FCC", "20M", "CCK", "1T", "09", "32",
-	"ETSI", "20M", "CCK", "1T", "09", "32",
-	"MKK", "20M", "CCK", "1T", "09", "32",
-	"FCC", "20M", "CCK", "1T", "10", "32",
-	"ETSI", "20M", "CCK", "1T", "10", "32",
-	"MKK", "20M", "CCK", "1T", "10", "32",
-	"FCC", "20M", "CCK", "1T", "11", "32",
-	"ETSI", "20M", "CCK", "1T", "11", "32",
-	"MKK", "20M", "CCK", "1T", "11", "32",
-	"FCC", "20M", "CCK", "1T", "12", "63",
-	"ETSI", "20M", "CCK", "1T", "12", "32",
-	"MKK", "20M", "CCK", "1T", "12", "32",
-	"FCC", "20M", "CCK", "1T", "13", "63",
-	"ETSI", "20M", "CCK", "1T", "13", "32",
-	"MKK", "20M", "CCK", "1T", "13", "32",
-	"FCC", "20M", "CCK", "1T", "14", "63",
-	"ETSI", "20M", "CCK", "1T", "14", "63",
-	"MKK", "20M", "CCK", "1T", "14", "32",
-	"FCC", "20M", "OFDM", "1T", "01", "28",
-	"ETSI", "20M", "OFDM", "1T", "01", "32",
-	"MKK", "20M", "OFDM", "1T", "01", "32",
-	"FCC", "20M", "OFDM", "1T", "02", "28",
-	"ETSI", "20M", "OFDM", "1T", "02", "32",
-	"MKK", "20M", "OFDM", "1T", "02", "32",
-	"FCC", "20M", "OFDM", "1T", "03", "32",
-	"ETSI", "20M", "OFDM", "1T", "03", "32",
-	"MKK", "20M", "OFDM", "1T", "03", "32",
-	"FCC", "20M", "OFDM", "1T", "04", "32",
-	"ETSI", "20M", "OFDM", "1T", "04", "32",
-	"MKK", "20M", "OFDM", "1T", "04", "32",
-	"FCC", "20M", "OFDM", "1T", "05", "32",
-	"ETSI", "20M", "OFDM", "1T", "05", "32",
-	"MKK", "20M", "OFDM", "1T", "05", "32",
-	"FCC", "20M", "OFDM", "1T", "06", "32",
-	"ETSI", "20M", "OFDM", "1T", "06", "32",
-	"MKK", "20M", "OFDM", "1T", "06", "32",
-	"FCC", "20M", "OFDM", "1T", "07", "32",
-	"ETSI", "20M", "OFDM", "1T", "07", "32",
-	"MKK", "20M", "OFDM", "1T", "07", "32",
-	"FCC", "20M", "OFDM", "1T", "08", "32",
-	"ETSI", "20M", "OFDM", "1T", "08", "32",
-	"MKK", "20M", "OFDM", "1T", "08", "32",
-	"FCC", "20M", "OFDM", "1T", "09", "32",
-	"ETSI", "20M", "OFDM", "1T", "09", "32",
-	"MKK", "20M", "OFDM", "1T", "09", "32",
-	"FCC", "20M", "OFDM", "1T", "10", "28",
-	"ETSI", "20M", "OFDM", "1T", "10", "32",
-	"MKK", "20M", "OFDM", "1T", "10", "32",
-	"FCC", "20M", "OFDM", "1T", "11", "28",
-	"ETSI", "20M", "OFDM", "1T", "11", "32",
-	"MKK", "20M", "OFDM", "1T", "11", "32",
-	"FCC", "20M", "OFDM", "1T", "12", "63",
-	"ETSI", "20M", "OFDM", "1T", "12", "32",
-	"MKK", "20M", "OFDM", "1T", "12", "32",
-	"FCC", "20M", "OFDM", "1T", "13", "63",
-	"ETSI", "20M", "OFDM", "1T", "13", "32",
-	"MKK", "20M", "OFDM", "1T", "13", "32",
-	"FCC", "20M", "OFDM", "1T", "14", "63",
-	"ETSI", "20M", "OFDM", "1T", "14", "63",
-	"MKK", "20M", "OFDM", "1T", "14", "63",
-	"FCC", "20M", "HT", "1T", "01", "26",
-	"ETSI", "20M", "HT", "1T", "01", "32",
-	"MKK", "20M", "HT", "1T", "01", "32",
-	"FCC", "20M", "HT", "1T", "02", "26",
-	"ETSI", "20M", "HT", "1T", "02", "32",
-	"MKK", "20M", "HT", "1T", "02", "32",
-	"FCC", "20M", "HT", "1T", "03", "32",
-	"ETSI", "20M", "HT", "1T", "03", "32",
-	"MKK", "20M", "HT", "1T", "03", "32",
-	"FCC", "20M", "HT", "1T", "04", "32",
-	"ETSI", "20M", "HT", "1T", "04", "32",
-	"MKK", "20M", "HT", "1T", "04", "32",
-	"FCC", "20M", "HT", "1T", "05", "32",
-	"ETSI", "20M", "HT", "1T", "05", "32",
-	"MKK", "20M", "HT", "1T", "05", "32",
-	"FCC", "20M", "HT", "1T", "06", "32",
-	"ETSI", "20M", "HT", "1T", "06", "32",
-	"MKK", "20M", "HT", "1T", "06", "32",
-	"FCC", "20M", "HT", "1T", "07", "32",
-	"ETSI", "20M", "HT", "1T", "07", "32",
-	"MKK", "20M", "HT", "1T", "07", "32",
-	"FCC", "20M", "HT", "1T", "08", "32",
-	"ETSI", "20M", "HT", "1T", "08", "32",
-	"MKK", "20M", "HT", "1T", "08", "32",
-	"FCC", "20M", "HT", "1T", "09", "32",
-	"ETSI", "20M", "HT", "1T", "09", "32",
-	"MKK", "20M", "HT", "1T", "09", "32",
-	"FCC", "20M", "HT", "1T", "10", "26",
-	"ETSI", "20M", "HT", "1T", "10", "32",
-	"MKK", "20M", "HT", "1T", "10", "32",
-	"FCC", "20M", "HT", "1T", "11", "26",
-	"ETSI", "20M", "HT", "1T", "11", "32",
-	"MKK", "20M", "HT", "1T", "11", "32",
-	"FCC", "20M", "HT", "1T", "12", "63",
-	"ETSI", "20M", "HT", "1T", "12", "32",
-	"MKK", "20M", "HT", "1T", "12", "32",
-	"FCC", "20M", "HT", "1T", "13", "63",
-	"ETSI", "20M", "HT", "1T", "13", "32",
-	"MKK", "20M", "HT", "1T", "13", "32",
-	"FCC", "20M", "HT", "1T", "14", "63",
-	"ETSI", "20M", "HT", "1T", "14", "63",
-	"MKK", "20M", "HT", "1T", "14", "63",
-	"FCC", "40M", "HT", "1T", "01", "63",
-	"ETSI", "40M", "HT", "1T", "01", "63",
-	"MKK", "40M", "HT", "1T", "01", "63",
-	"FCC", "40M", "HT", "1T", "02", "63",
-	"ETSI", "40M", "HT", "1T", "02", "63",
-	"MKK", "40M", "HT", "1T", "02", "63",
-	"FCC", "40M", "HT", "1T", "03", "26",
-	"ETSI", "40M", "HT", "1T", "03", "32",
-	"MKK", "40M", "HT", "1T", "03", "32",
-	"FCC", "40M", "HT", "1T", "04", "26",
-	"ETSI", "40M", "HT", "1T", "04", "32",
-	"MKK", "40M", "HT", "1T", "04", "32",
-	"FCC", "40M", "HT", "1T", "05", "32",
-	"ETSI", "40M", "HT", "1T", "05", "32",
-	"MKK", "40M", "HT", "1T", "05", "32",
-	"FCC", "40M", "HT", "1T", "06", "32",
-	"ETSI", "40M", "HT", "1T", "06", "32",
-	"MKK", "40M", "HT", "1T", "06", "32",
-	"FCC", "40M", "HT", "1T", "07", "32",
-	"ETSI", "40M", "HT", "1T", "07", "32",
-	"MKK", "40M", "HT", "1T", "07", "32",
-	"FCC", "40M", "HT", "1T", "08", "26",
-	"ETSI", "40M", "HT", "1T", "08", "32",
-	"MKK", "40M", "HT", "1T", "08", "32",
-	"FCC", "40M", "HT", "1T", "09", "26",
-	"ETSI", "40M", "HT", "1T", "09", "32",
-	"MKK", "40M", "HT", "1T", "09", "32",
-	"FCC", "40M", "HT", "1T", "10", "26",
-	"ETSI", "40M", "HT", "1T", "10", "32",
-	"MKK", "40M", "HT", "1T", "10", "32",
-	"FCC", "40M", "HT", "1T", "11", "26",
-	"ETSI", "40M", "HT", "1T", "11", "32",
-	"MKK", "40M", "HT", "1T", "11", "32",
-	"FCC", "40M", "HT", "1T", "12", "63",
-	"ETSI", "40M", "HT", "1T", "12", "32",
-	"MKK", "40M", "HT", "1T", "12", "32",
-	"FCC", "40M", "HT", "1T", "13", "63",
-	"ETSI", "40M", "HT", "1T", "13", "32",
-	"MKK", "40M", "HT", "1T", "13", "32",
-	"FCC", "40M", "HT", "1T", "14", "63",
-	"ETSI", "40M", "HT", "1T", "14", "63",
-	"MKK", "40M", "HT", "1T", "14", "63"
-};
-
-void ODM_ReadAndConfig_MP_8723B_TXPWR_LMT(struct dm_odm_t *pDM_Odm)
-{
-	u32 i = 0;
-	u8 **Array = Array_MP_8723B_TXPWR_LMT;
-
-	for (i = 0; i < ARRAY_SIZE(Array_MP_8723B_TXPWR_LMT); i += 6) {
-		u8 *regulation = Array[i];
-		u8 *bandwidth = Array[i+1];
-		u8 *rate = Array[i+2];
-		u8 *rfPath = Array[i+3];
-		u8 *chnl = Array[i+4];
-		u8 *val = Array[i+5];
-
-		odm_ConfigBB_TXPWR_LMT_8723B(
-			pDM_Odm,
-			regulation,
-			bandwidth,
-			rate,
-			rfPath,
-			chnl,
-			val
-		);
-	}
-}
diff --git a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_RF.h b/drivers/staging/rtl8723bs/hal/HalHWImg8723B_RF.h
deleted file mode 100644
index 7b4f399fcdff..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_RF.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef __INC_MP_RF_HW_IMG_8723B_H
-#define __INC_MP_RF_HW_IMG_8723B_H
-
-/******************************************************************************
- *                           RadioA.TXT
- ******************************************************************************/
-
-void
-ODM_ReadAndConfig_MP_8723B_RadioA(/*  TC: Test Chip, MP: MP Chip */
-	struct dm_odm_t *pDM_Odm
-);
-
-/******************************************************************************
- *                           TxPowerTrack_SDIO.TXT
- ******************************************************************************/
-
-void
-ODM_ReadAndConfig_MP_8723B_TxPowerTrack_SDIO(/*  TC: Test Chip, MP: MP Chip */
-	struct dm_odm_t *pDM_Odm
-);
-u32 ODM_GetVersion_MP_8723B_TxPowerTrack_SDIO(void);
-
-/******************************************************************************
- *                           TXPWR_LMT.TXT
- ******************************************************************************/
-
-void
-ODM_ReadAndConfig_MP_8723B_TXPWR_LMT(/*  TC: Test Chip, MP: MP Chip */
-	struct dm_odm_t *pDM_Odm
-);
-u32 ODM_GetVersion_MP_8723B_TXPWR_LMT(void);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/hal/HalPhyRf.c b/drivers/staging/rtl8723bs/hal/HalPhyRf.c
deleted file mode 100644
index bf44c1050be5..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalPhyRf.c
+++ /dev/null
@@ -1,268 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-/* include "Mp_Precomp.h" */
-#include "odm_precomp.h"
-
-void ConfigureTxpowerTrack(struct dm_odm_t *pDM_Odm, struct txpwrtrack_cfg *pConfig)
-{
-	ConfigureTxpowerTrack_8723B(pConfig);
-}
-
-/*  */
-/*  <20121113, Kordan> This function should be called when TxAGC changed. */
-/*  Otherwise the previous compensation is gone, because we record the */
-/*  delta of temperature between two TxPowerTracking watch dogs. */
-/*  */
-/*  NOTE: If Tx BB swing or Tx scaling is varified during run-time, still */
-/*        need to call this function. */
-/*  */
-void ODM_ClearTxPowerTrackingState(struct dm_odm_t *pDM_Odm)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(pDM_Odm->Adapter);
-	u8 p = 0;
-
-	pDM_Odm->BbSwingIdxCckBase = pDM_Odm->DefaultCckIndex;
-	pDM_Odm->BbSwingIdxCck = pDM_Odm->DefaultCckIndex;
-	pDM_Odm->RFCalibrateInfo.CCK_index = 0;
-
-	for (p = RF_PATH_A; p < MAX_RF_PATH; ++p) {
-		pDM_Odm->BbSwingIdxOfdmBase[p] = pDM_Odm->DefaultOfdmIndex;
-		pDM_Odm->BbSwingIdxOfdm[p] = pDM_Odm->DefaultOfdmIndex;
-		pDM_Odm->RFCalibrateInfo.OFDM_index[p] = pDM_Odm->DefaultOfdmIndex;
-
-		pDM_Odm->RFCalibrateInfo.PowerIndexOffset[p] = 0;
-		pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[p] = 0;
-		pDM_Odm->RFCalibrateInfo.DeltaPowerIndexLast[p] = 0;
-		pDM_Odm->RFCalibrateInfo.PowerIndexOffset[p] = 0;
-
-		/*  Initial Mix mode power tracking */
-		pDM_Odm->Absolute_OFDMSwingIdx[p] = 0;
-		pDM_Odm->Remnant_OFDMSwingIdx[p] = 0;
-	}
-
-	/* Initial at Modify Tx Scaling Mode */
-	pDM_Odm->Modify_TxAGC_Flag_PathA = false;
-	/* Initial at Modify Tx Scaling Mode */
-	pDM_Odm->Modify_TxAGC_Flag_PathB = false;
-	pDM_Odm->Remnant_CCKSwingIdx = 0;
-	pDM_Odm->RFCalibrateInfo.ThermalValue = pHalData->EEPROMThermalMeter;
-	pDM_Odm->RFCalibrateInfo.ThermalValue_IQK = pHalData->EEPROMThermalMeter;
-	pDM_Odm->RFCalibrateInfo.ThermalValue_LCK = pHalData->EEPROMThermalMeter;
-}
-
-void ODM_TXPowerTrackingCallback_ThermalMeter(struct adapter *Adapter)
-{
-
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	u8 ThermalValue = 0, delta, delta_LCK, p = 0, i = 0;
-	u8 ThermalValue_AVG_count = 0;
-	u32 ThermalValue_AVG = 0;
-
-	u8 OFDM_min_index = 0;  /*  OFDM BB Swing should be less than +3.0dB, which is required by Arthur */
-	u8 Indexforchannel = 0; /*  GetRightChnlPlaceforIQK(pHalData->CurrentChannel) */
-
-	struct txpwrtrack_cfg c;
-
-	/* 4 1. The following TWO tables decide the final index of OFDM/CCK swing table. */
-	u8 *deltaSwingTableIdx_TUP_A;
-	u8 *deltaSwingTableIdx_TDOWN_A;
-	u8 *deltaSwingTableIdx_TUP_B;
-	u8 *deltaSwingTableIdx_TDOWN_B;
-
-	/* 4 2. Initialization (7 steps in total) */
-
-	ConfigureTxpowerTrack(pDM_Odm, &c);
-
-	(*c.GetDeltaSwingTable)(
-		pDM_Odm,
-		(u8 **)&deltaSwingTableIdx_TUP_A,
-		(u8 **)&deltaSwingTableIdx_TDOWN_A,
-		(u8 **)&deltaSwingTableIdx_TUP_B,
-		(u8 **)&deltaSwingTableIdx_TDOWN_B
-	);
-
-	/* cosa add for debug */
-	pDM_Odm->RFCalibrateInfo.TXPowerTrackingCallbackCnt++;
-	pDM_Odm->RFCalibrateInfo.bTXPowerTrackingInit = true;
-
-	ThermalValue = (u8)PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH_A, c.ThermalRegAddr, 0xfc00);	/* 0x42: RF Reg[15:10] 88E */
-	if (
-		!pDM_Odm->RFCalibrateInfo.TxPowerTrackControl ||
-		pHalData->EEPROMThermalMeter == 0 ||
-		pHalData->EEPROMThermalMeter == 0xFF
-	)
-		return;
-
-	/* 4 3. Initialize ThermalValues of RFCalibrateInfo */
-
-	/* 4 4. Calculate average thermal meter */
-
-	pDM_Odm->RFCalibrateInfo.ThermalValue_AVG[pDM_Odm->RFCalibrateInfo.ThermalValue_AVG_index] = ThermalValue;
-	pDM_Odm->RFCalibrateInfo.ThermalValue_AVG_index++;
-	if (pDM_Odm->RFCalibrateInfo.ThermalValue_AVG_index == c.AverageThermalNum)   /* Average times =  c.AverageThermalNum */
-		pDM_Odm->RFCalibrateInfo.ThermalValue_AVG_index = 0;
-
-	for (i = 0; i < c.AverageThermalNum; i++) {
-		if (pDM_Odm->RFCalibrateInfo.ThermalValue_AVG[i]) {
-			ThermalValue_AVG += pDM_Odm->RFCalibrateInfo.ThermalValue_AVG[i];
-			ThermalValue_AVG_count++;
-		}
-	}
-
-	/* Calculate Average ThermalValue after average enough times */
-	if (ThermalValue_AVG_count) {
-		ThermalValue = (u8)(ThermalValue_AVG / ThermalValue_AVG_count);
-	}
-
-	/* 4 5. Calculate delta, delta_LCK */
-	/* delta" here is used to determine whether thermal value changes or not. */
-	delta =
-		(ThermalValue > pDM_Odm->RFCalibrateInfo.ThermalValue) ?
-		(ThermalValue - pDM_Odm->RFCalibrateInfo.ThermalValue) :
-		(pDM_Odm->RFCalibrateInfo.ThermalValue - ThermalValue);
-	delta_LCK =
-		(ThermalValue > pDM_Odm->RFCalibrateInfo.ThermalValue_LCK) ?
-		(ThermalValue - pDM_Odm->RFCalibrateInfo.ThermalValue_LCK) :
-		(pDM_Odm->RFCalibrateInfo.ThermalValue_LCK - ThermalValue);
-
-	/* 4 6. If necessary, do LCK. */
-	/*  Delta temperature is equal to or larger than 20 centigrade. */
-	if (delta_LCK >= c.Threshold_IQK) {
-		pDM_Odm->RFCalibrateInfo.ThermalValue_LCK = ThermalValue;
-		if (c.PHY_LCCalibrate)
-			(*c.PHY_LCCalibrate)(pDM_Odm);
-	}
-
-	/* 3 7. If necessary, move the index of swing table to adjust Tx power. */
-	if (delta > 0 && pDM_Odm->RFCalibrateInfo.TxPowerTrackControl) {
-		/* delta" here is used to record the absolute value of difference. */
-		delta =
-			ThermalValue > pHalData->EEPROMThermalMeter ?
-			(ThermalValue - pHalData->EEPROMThermalMeter) :
-			(pHalData->EEPROMThermalMeter - ThermalValue);
-
-		if (delta >= TXPWR_TRACK_TABLE_SIZE)
-			delta = TXPWR_TRACK_TABLE_SIZE - 1;
-
-		/* 4 7.1 The Final Power Index = BaseIndex + PowerIndexOffset */
-		if (ThermalValue > pHalData->EEPROMThermalMeter) {
-			pDM_Odm->RFCalibrateInfo.DeltaPowerIndexLast[RF_PATH_A] =
-				pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[RF_PATH_A];
-			pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[RF_PATH_A] =
-				deltaSwingTableIdx_TUP_A[delta];
-
-			/*  Record delta swing for mix mode power tracking */
-			pDM_Odm->Absolute_OFDMSwingIdx[RF_PATH_A] =
-				deltaSwingTableIdx_TUP_A[delta];
-
-			if (c.RfPathCount > 1) {
-				pDM_Odm->RFCalibrateInfo.DeltaPowerIndexLast[RF_PATH_B] =
-					pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[RF_PATH_B];
-				pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[RF_PATH_B] =
-					deltaSwingTableIdx_TUP_B[delta];
-
-				/*  Record delta swing for mix mode power tracking */
-				pDM_Odm->Absolute_OFDMSwingIdx[RF_PATH_B] =
-					deltaSwingTableIdx_TUP_B[delta];
-			}
-
-		} else {
-			pDM_Odm->RFCalibrateInfo.DeltaPowerIndexLast[RF_PATH_A] =
-				pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[RF_PATH_A];
-			pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[RF_PATH_A] =
-				-1 * deltaSwingTableIdx_TDOWN_A[delta];
-
-			/*  Record delta swing for mix mode power tracking */
-			pDM_Odm->Absolute_OFDMSwingIdx[RF_PATH_A] =
-				-1 * deltaSwingTableIdx_TDOWN_A[delta];
-
-			if (c.RfPathCount > 1) {
-				pDM_Odm->RFCalibrateInfo.DeltaPowerIndexLast[RF_PATH_B] =
-					pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[RF_PATH_B];
-				pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[RF_PATH_B] =
-					-1 * deltaSwingTableIdx_TDOWN_B[delta];
-
-				 /*  Record delta swing for mix mode power tracking */
-				pDM_Odm->Absolute_OFDMSwingIdx[RF_PATH_B] =
-					-1 * deltaSwingTableIdx_TDOWN_B[delta];
-			}
-		}
-
-		for (p = RF_PATH_A; p < c.RfPathCount; p++) {
-			if (
-				pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[p] ==
-				pDM_Odm->RFCalibrateInfo.DeltaPowerIndexLast[p]
-			) /*  If Thermal value changes but lookup table value still the same */
-				pDM_Odm->RFCalibrateInfo.PowerIndexOffset[p] = 0;
-			else
-				pDM_Odm->RFCalibrateInfo.PowerIndexOffset[p] = pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[p] - pDM_Odm->RFCalibrateInfo.DeltaPowerIndexLast[p];      /*  Power Index Diff between 2 times Power Tracking */
-
-			pDM_Odm->RFCalibrateInfo.OFDM_index[p] =
-				pDM_Odm->BbSwingIdxOfdmBase[p] +
-				pDM_Odm->RFCalibrateInfo.PowerIndexOffset[p];
-
-			pDM_Odm->RFCalibrateInfo.CCK_index =
-				pDM_Odm->BbSwingIdxCckBase +
-				pDM_Odm->RFCalibrateInfo.PowerIndexOffset[p];
-
-			pDM_Odm->BbSwingIdxCck =
-				pDM_Odm->RFCalibrateInfo.CCK_index;
-
-			pDM_Odm->BbSwingIdxOfdm[p] =
-				pDM_Odm->RFCalibrateInfo.OFDM_index[p];
-
-			/* 4 7.1 Handle boundary conditions of index. */
-			if (pDM_Odm->RFCalibrateInfo.OFDM_index[p] > c.SwingTableSize_OFDM - 1)
-				pDM_Odm->RFCalibrateInfo.OFDM_index[p] = c.SwingTableSize_OFDM - 1;
-			else if (pDM_Odm->RFCalibrateInfo.OFDM_index[p] < OFDM_min_index)
-				pDM_Odm->RFCalibrateInfo.OFDM_index[p] = OFDM_min_index;
-		}
-		if (pDM_Odm->RFCalibrateInfo.CCK_index > c.SwingTableSize_CCK - 1)
-			pDM_Odm->RFCalibrateInfo.CCK_index = c.SwingTableSize_CCK - 1;
-		/* else if (pDM_Odm->RFCalibrateInfo.CCK_index < 0) */
-			/* pDM_Odm->RFCalibrateInfo.CCK_index = 0; */
-	} else {
-			for (p = RF_PATH_A; p < c.RfPathCount; p++)
-				pDM_Odm->RFCalibrateInfo.PowerIndexOffset[p] = 0;
-	}
-
-	if (
-		(pDM_Odm->RFCalibrateInfo.PowerIndexOffset[RF_PATH_A] != 0 ||
-		 pDM_Odm->RFCalibrateInfo.PowerIndexOffset[RF_PATH_B] != 0) &&
-		 pDM_Odm->RFCalibrateInfo.TxPowerTrackControl
-	 ) {
-		/* 4 7.2 Configure the Swing Table to adjust Tx Power. */
-
-		pDM_Odm->RFCalibrateInfo.bTxPowerChanged = true; /*  Always true after Tx Power is adjusted by power tracking. */
-		/*  */
-		/*  2012/04/23 MH According to Luke's suggestion, we can not write BB digital */
-		/*  to increase TX power. Otherwise, EVM will be bad. */
-		/*  */
-		/*  2012/04/25 MH Add for tx power tracking to set tx power in tx agc for 88E. */
-
-		if (ThermalValue > pHalData->EEPROMThermalMeter) {
-			for (p = RF_PATH_A; p < c.RfPathCount; p++)
-					(*c.ODM_TxPwrTrackSetPwr)(pDM_Odm, MIX_MODE, p, 0);
-		} else {
-			for (p = RF_PATH_A; p < c.RfPathCount; p++)
-				(*c.ODM_TxPwrTrackSetPwr)(pDM_Odm, MIX_MODE, p, Indexforchannel);
-		}
-
-		/*  Record last time Power Tracking result as base. */
-		pDM_Odm->BbSwingIdxCckBase = pDM_Odm->BbSwingIdxCck;
-		for (p = RF_PATH_A; p < c.RfPathCount; p++)
-			pDM_Odm->BbSwingIdxOfdmBase[p] = pDM_Odm->BbSwingIdxOfdm[p];
-
-		/* Record last Power Tracking Thermal Value */
-		pDM_Odm->RFCalibrateInfo.ThermalValue = ThermalValue;
-	}
-
-	pDM_Odm->RFCalibrateInfo.TXPowercount = 0;
-}
diff --git a/drivers/staging/rtl8723bs/hal/HalPhyRf.h b/drivers/staging/rtl8723bs/hal/HalPhyRf.h
deleted file mode 100644
index bd9430db968f..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalPhyRf.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
- #ifndef __HAL_PHY_RF_H__
- #define __HAL_PHY_RF_H__
-
-enum pwrtrack_method {
-	BBSWING,
-	TXAGC,
-	MIX_MODE
-};
-
-typedef void (*FuncSetPwr)(struct dm_odm_t *, enum pwrtrack_method, u8, u8);
-typedef void (*FuncLCK)(struct dm_odm_t *);
-typedef void (*FuncSwing)(struct dm_odm_t *, u8 **, u8 **, u8 **, u8 **);
-
-struct txpwrtrack_cfg {
-	u8 SwingTableSize_CCK;
-	u8 SwingTableSize_OFDM;
-	u8 Threshold_IQK;
-	u8 AverageThermalNum;
-	u8 RfPathCount;
-	u32 ThermalRegAddr;
-	FuncSetPwr ODM_TxPwrTrackSetPwr;
-	FuncLCK PHY_LCCalibrate;
-	FuncSwing GetDeltaSwingTable;
-};
-
-void ConfigureTxpowerTrack(struct dm_odm_t *pDM_Odm, struct txpwrtrack_cfg *pConfig);
-
-void ODM_ClearTxPowerTrackingState(struct dm_odm_t *pDM_Odm);
-
-void ODM_TXPowerTrackingCallback_ThermalMeter(struct adapter *Adapter);
-
-#endif	/*  #ifndef __HAL_PHY_RF_H__ */
diff --git a/drivers/staging/rtl8723bs/hal/HalPhyRf_8723B.c b/drivers/staging/rtl8723bs/hal/HalPhyRf_8723B.c
deleted file mode 100644
index 6c5f56d5a1f4..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalPhyRf_8723B.c
+++ /dev/null
@@ -1,1767 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*****************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <drv_types.h>
-#include "odm_precomp.h"
-
-/*  MACRO definition for pRFCalibrateInfo->TxIQC_8723B[0] */
-#define		PATH_S0							1 /*  RF_PATH_B */
-#define		IDX_0xC94						0
-#define		IDX_0xC80						1
-#define		IDX_0xC14						0
-#define		IDX_0xCA0						1
-#define		KEY							0
-#define		VAL							1
-
-/*  MACRO definition for pRFCalibrateInfo->TxIQC_8723B[1] */
-#define		PATH_S1							0 /*  RF_PATH_A */
-#define		IDX_0xC4C						2
-
-/*---------------------------Define Local Constant---------------------------*/
-
-/* In the case that we fail to read TxPowerTrack.txt, we use the table for
- * 88E as the default table.
- */
-static u8 DeltaSwingTableIdx_2GA_N_8188E[] = {
-	0, 0, 0, 2, 2, 3, 3, 4,  4,  4,  4,  5,  5,  6,  6,
-	7, 7, 7, 7, 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11
-};
-static u8 DeltaSwingTableIdx_2GA_P_8188E[] = {
-	0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4,
-	4, 4, 4, 5, 5, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9
-};
-
-/* 3 ============================================================ */
-/* 3 Tx Power Tracking */
-/* 3 ============================================================ */
-
-static void setIqkMatrix_8723B(
-	struct dm_odm_t *pDM_Odm,
-	u8 OFDM_index,
-	u8 RFPath,
-	s32 IqkResult_X,
-	s32 IqkResult_Y
-)
-{
-	s32 ele_A = 0, ele_D, ele_C = 0, value32;
-
-	if (OFDM_index >= OFDM_TABLE_SIZE)
-		OFDM_index = OFDM_TABLE_SIZE-1;
-
-	ele_D = (OFDMSwingTable_New[OFDM_index] & 0xFFC00000)>>22;
-
-	/* new element A = element D x X */
-	if (IqkResult_X != 0) {
-		if ((IqkResult_X & 0x00000200) != 0)	/* consider minus */
-			IqkResult_X = IqkResult_X | 0xFFFFFC00;
-		ele_A = ((IqkResult_X * ele_D)>>8)&0x000003FF;
-
-		/* new element C = element D x Y */
-		if ((IqkResult_Y & 0x00000200) != 0)
-			IqkResult_Y = IqkResult_Y | 0xFFFFFC00;
-		ele_C = ((IqkResult_Y * ele_D)>>8)&0x000003FF;
-
-		/* if (RFPath == RF_PATH_A) */
-		switch (RFPath) {
-		case RF_PATH_A:
-			/* write new elements A, C, D to regC80 and regC94,
-			 * element B is always 0
-			 */
-			value32 = (ele_D<<22)|((ele_C&0x3F)<<16)|ele_A;
-			PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance, bMaskDWord, value32);
-
-			value32 = (ele_C&0x000003C0)>>6;
-			PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XCTxAFE, bMaskH4Bits, value32);
-
-			value32 = ((IqkResult_X * ele_D)>>7)&0x01;
-			PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT(24), value32);
-			break;
-		case RF_PATH_B:
-			/* write new elements A, C, D to regC88 and regC9C,
-			 * element B is always 0
-			 */
-			value32 = (ele_D<<22)|((ele_C&0x3F)<<16)|ele_A;
-			PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance, bMaskDWord, value32);
-
-			value32 = (ele_C&0x000003C0)>>6;
-			PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XDTxAFE, bMaskH4Bits, value32);
-
-			value32 = ((IqkResult_X * ele_D)>>7)&0x01;
-			PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT(28), value32);
-
-			break;
-		default:
-			break;
-		}
-	} else {
-		switch (RFPath) {
-		case RF_PATH_A:
-			PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance, bMaskDWord, OFDMSwingTable_New[OFDM_index]);
-			PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XCTxAFE, bMaskH4Bits, 0x00);
-			PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT(24), 0x00);
-			break;
-
-		case RF_PATH_B:
-			PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance, bMaskDWord, OFDMSwingTable_New[OFDM_index]);
-			PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XDTxAFE, bMaskH4Bits, 0x00);
-			PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT(28), 0x00);
-			break;
-
-		default:
-			break;
-		}
-	}
-}
-
-static void setCCKFilterCoefficient(struct dm_odm_t *pDM_Odm, u8 CCKSwingIndex)
-{
-	u8 (*swingtable)[8];
-
-	if (!pDM_Odm->RFCalibrateInfo.bCCKinCH14)
-		swingtable = CCKSwingTable_Ch1_Ch13_New;
-	else
-		swingtable = CCKSwingTable_Ch14_New;
-
-	for (int i = 0; i < 8; i++)
-		rtw_write8(pDM_Odm->Adapter, 0xa22 + i, swingtable[CCKSwingIndex][i]);
-}
-
-/*-----------------------------------------------------------------------------
- * Function:	odm_TxPwrTrackSetPwr88E()
- *
- * Overview:	88E change all channel tx power according to flag.
- *			OFDM & CCK are all different.
- *
- * Input:		NONE
- *
- * Output:		NONE
- *
- * Return:		NONE
- *
- * Revised History:
- *When		Who	Remark
- *04/23/2012	MHC	Create Version 0.
- *
- *---------------------------------------------------------------------------
- */
-void ODM_TxPwrTrackSetPwr_8723B(
-	struct dm_odm_t *pDM_Odm,
-	enum pwrtrack_method Method,
-	u8 RFPath,
-	u8 ChannelMappedIndex
-)
-{
-	struct adapter *Adapter = pDM_Odm->Adapter;
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-	u8 PwrTrackingLimit_OFDM = 34; /* 0dB */
-	u8 PwrTrackingLimit_CCK = 28; /* 2dB */
-	u8 TxRate = 0xFF;
-	u8 Final_OFDM_Swing_Index = 0;
-	u8 Final_CCK_Swing_Index = 0;
-
-	{
-		u16 rate = *(pDM_Odm->pForcedDataRate);
-
-		if (!rate) { /* auto rate */
-			if (pDM_Odm->TxRate != 0xFF)
-				TxRate = HwRateToMRate(pDM_Odm->TxRate);
-		} else /* force rate */
-			TxRate = (u8)rate;
-
-	}
-
-	if (TxRate != 0xFF) {
-		/* 2 CCK */
-		if ((TxRate >= MGN_1M) && (TxRate <= MGN_11M))
-			PwrTrackingLimit_CCK = 28;	/* 2dB */
-		/* 2 OFDM */
-		else if ((TxRate >= MGN_6M) && (TxRate <= MGN_48M))
-			PwrTrackingLimit_OFDM = 36; /* 3dB */
-		else if (TxRate == MGN_54M)
-			PwrTrackingLimit_OFDM = 34; /* 2dB */
-
-		/* 2 HT */
-		else if ((TxRate >= MGN_MCS0) && (TxRate <= MGN_MCS2)) /* QPSK/BPSK */
-			PwrTrackingLimit_OFDM = 38; /* 4dB */
-		else if ((TxRate >= MGN_MCS3) && (TxRate <= MGN_MCS4)) /* 16QAM */
-			PwrTrackingLimit_OFDM = 36; /* 3dB */
-		else if ((TxRate >= MGN_MCS5) && (TxRate <= MGN_MCS7)) /* 64QAM */
-			PwrTrackingLimit_OFDM = 34; /* 2dB */
-
-		else
-			PwrTrackingLimit_OFDM =  pDM_Odm->DefaultOfdmIndex;   /* Default OFDM index = 30 */
-	}
-
-	if (Method == TXAGC) {
-		pDM_Odm->Remnant_OFDMSwingIdx[RFPath] = pDM_Odm->Absolute_OFDMSwingIdx[RFPath];
-
-		pDM_Odm->Modify_TxAGC_Flag_PathA = true;
-		pDM_Odm->Modify_TxAGC_Flag_PathA_CCK = true;
-
-		PHY_SetTxPowerIndexByRateSection(Adapter, RFPath, pHalData->CurrentChannel, CCK);
-		PHY_SetTxPowerIndexByRateSection(Adapter, RFPath, pHalData->CurrentChannel, OFDM);
-		PHY_SetTxPowerIndexByRateSection(Adapter, RFPath, pHalData->CurrentChannel, HT_MCS0_MCS7);
-	} else if (Method == BBSWING) {
-		Final_OFDM_Swing_Index = pDM_Odm->DefaultOfdmIndex + pDM_Odm->Absolute_OFDMSwingIdx[RFPath];
-		Final_CCK_Swing_Index = pDM_Odm->DefaultCckIndex + pDM_Odm->Absolute_OFDMSwingIdx[RFPath];
-
-		/*  Adjust BB swing by OFDM IQ matrix */
-		if (Final_OFDM_Swing_Index >= PwrTrackingLimit_OFDM)
-			Final_OFDM_Swing_Index = PwrTrackingLimit_OFDM;
-		else if (Final_OFDM_Swing_Index <= 0)
-			Final_OFDM_Swing_Index = 0;
-
-		if (Final_CCK_Swing_Index >= CCK_TABLE_SIZE)
-			Final_CCK_Swing_Index = CCK_TABLE_SIZE-1;
-		else if (pDM_Odm->BbSwingIdxCck <= 0)
-			Final_CCK_Swing_Index = 0;
-
-		setIqkMatrix_8723B(pDM_Odm, Final_OFDM_Swing_Index, RFPath,
-			pDM_Odm->RFCalibrateInfo.iqk_matrix_regs_setting_value[ChannelMappedIndex][0],
-			pDM_Odm->RFCalibrateInfo.iqk_matrix_regs_setting_value[ChannelMappedIndex][1]);
-
-		setCCKFilterCoefficient(pDM_Odm, Final_CCK_Swing_Index);
-
-	} else if (Method == MIX_MODE) {
-		Final_OFDM_Swing_Index = pDM_Odm->DefaultOfdmIndex + pDM_Odm->Absolute_OFDMSwingIdx[RFPath];
-		Final_CCK_Swing_Index = pDM_Odm->DefaultCckIndex + pDM_Odm->Absolute_OFDMSwingIdx[RFPath];
-
-		if (Final_OFDM_Swing_Index > PwrTrackingLimit_OFDM) { /* BBSwing higher then Limit */
-			pDM_Odm->Remnant_OFDMSwingIdx[RFPath] = Final_OFDM_Swing_Index - PwrTrackingLimit_OFDM;
-
-			setIqkMatrix_8723B(pDM_Odm, PwrTrackingLimit_OFDM, RFPath,
-				pDM_Odm->RFCalibrateInfo.iqk_matrix_regs_setting_value[ChannelMappedIndex][0],
-				pDM_Odm->RFCalibrateInfo.iqk_matrix_regs_setting_value[ChannelMappedIndex][1]);
-
-			pDM_Odm->Modify_TxAGC_Flag_PathA = true;
-			PHY_SetTxPowerIndexByRateSection(Adapter, RFPath, pHalData->CurrentChannel, OFDM);
-			PHY_SetTxPowerIndexByRateSection(Adapter, RFPath, pHalData->CurrentChannel, HT_MCS0_MCS7);
-		} else if (Final_OFDM_Swing_Index <= 0) {
-			pDM_Odm->Remnant_OFDMSwingIdx[RFPath] = Final_OFDM_Swing_Index;
-
-			setIqkMatrix_8723B(pDM_Odm, 0, RFPath,
-				pDM_Odm->RFCalibrateInfo.iqk_matrix_regs_setting_value[ChannelMappedIndex][0],
-				pDM_Odm->RFCalibrateInfo.iqk_matrix_regs_setting_value[ChannelMappedIndex][1]);
-
-			pDM_Odm->Modify_TxAGC_Flag_PathA = true;
-			PHY_SetTxPowerIndexByRateSection(Adapter, RFPath, pHalData->CurrentChannel, OFDM);
-			PHY_SetTxPowerIndexByRateSection(Adapter, RFPath, pHalData->CurrentChannel, HT_MCS0_MCS7);
-		} else {
-			setIqkMatrix_8723B(pDM_Odm, Final_OFDM_Swing_Index, RFPath,
-				pDM_Odm->RFCalibrateInfo.iqk_matrix_regs_setting_value[ChannelMappedIndex][0],
-				pDM_Odm->RFCalibrateInfo.iqk_matrix_regs_setting_value[ChannelMappedIndex][1]);
-
-			if (pDM_Odm->Modify_TxAGC_Flag_PathA) { /* If TxAGC has changed, reset TxAGC again */
-				pDM_Odm->Remnant_OFDMSwingIdx[RFPath] = 0;
-				PHY_SetTxPowerIndexByRateSection(Adapter, RFPath, pHalData->CurrentChannel, OFDM);
-				PHY_SetTxPowerIndexByRateSection(Adapter, RFPath, pHalData->CurrentChannel, HT_MCS0_MCS7);
-				pDM_Odm->Modify_TxAGC_Flag_PathA = false;
-			}
-		}
-
-		if (Final_CCK_Swing_Index > PwrTrackingLimit_CCK) {
-			pDM_Odm->Remnant_CCKSwingIdx = Final_CCK_Swing_Index - PwrTrackingLimit_CCK;
-			setCCKFilterCoefficient(pDM_Odm, PwrTrackingLimit_CCK);
-			pDM_Odm->Modify_TxAGC_Flag_PathA_CCK = true;
-			PHY_SetTxPowerIndexByRateSection(Adapter, RFPath, pHalData->CurrentChannel, CCK);
-		} else if (Final_CCK_Swing_Index <= 0) { /*  Lowest CCK Index = 0 */
-			pDM_Odm->Remnant_CCKSwingIdx = Final_CCK_Swing_Index;
-			setCCKFilterCoefficient(pDM_Odm, 0);
-			pDM_Odm->Modify_TxAGC_Flag_PathA_CCK = true;
-			PHY_SetTxPowerIndexByRateSection(Adapter, RFPath, pHalData->CurrentChannel, CCK);
-		} else {
-			setCCKFilterCoefficient(pDM_Odm, Final_CCK_Swing_Index);
-
-			if (pDM_Odm->Modify_TxAGC_Flag_PathA_CCK) { /* If TxAGC has changed, reset TxAGC again */
-				pDM_Odm->Remnant_CCKSwingIdx = 0;
-				PHY_SetTxPowerIndexByRateSection(Adapter, RFPath, pHalData->CurrentChannel, CCK);
-				pDM_Odm->Modify_TxAGC_Flag_PathA_CCK = false;
-			}
-		}
-	} else
-		return; /*  This method is not supported. */
-}
-
-static void GetDeltaSwingTable_8723B(
-	struct dm_odm_t *pDM_Odm,
-	u8 **TemperatureUP_A,
-	u8 **TemperatureDOWN_A,
-	u8 **TemperatureUP_B,
-	u8 **TemperatureDOWN_B
-)
-{
-	struct adapter *Adapter = pDM_Odm->Adapter;
-	struct odm_rf_cal_t *pRFCalibrateInfo = &pDM_Odm->RFCalibrateInfo;
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-	u16 rate = *(pDM_Odm->pForcedDataRate);
-	u8 channel = pHalData->CurrentChannel;
-
-	if (channel >= 1 && channel <= 14) {
-		if (IS_CCK_RATE(rate)) {
-			*TemperatureUP_A   = pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKA_P;
-			*TemperatureDOWN_A = pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKA_N;
-			*TemperatureUP_B   = pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKB_P;
-			*TemperatureDOWN_B = pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKB_N;
-		} else {
-			*TemperatureUP_A   = pRFCalibrateInfo->DeltaSwingTableIdx_2GA_P;
-			*TemperatureDOWN_A = pRFCalibrateInfo->DeltaSwingTableIdx_2GA_N;
-			*TemperatureUP_B   = pRFCalibrateInfo->DeltaSwingTableIdx_2GB_P;
-			*TemperatureDOWN_B = pRFCalibrateInfo->DeltaSwingTableIdx_2GB_N;
-		}
-	} else {
-		*TemperatureUP_A   = (u8 *)DeltaSwingTableIdx_2GA_P_8188E;
-		*TemperatureDOWN_A = (u8 *)DeltaSwingTableIdx_2GA_N_8188E;
-		*TemperatureUP_B   = (u8 *)DeltaSwingTableIdx_2GA_P_8188E;
-		*TemperatureDOWN_B = (u8 *)DeltaSwingTableIdx_2GA_N_8188E;
-	}
-}
-
-void ConfigureTxpowerTrack_8723B(struct txpwrtrack_cfg *pConfig)
-{
-	pConfig->SwingTableSize_CCK = CCK_TABLE_SIZE;
-	pConfig->SwingTableSize_OFDM = OFDM_TABLE_SIZE;
-	pConfig->Threshold_IQK = IQK_THRESHOLD;
-	pConfig->AverageThermalNum = AVG_THERMAL_NUM_8723B;
-	pConfig->RfPathCount = MAX_PATH_NUM_8723B;
-	pConfig->ThermalRegAddr = RF_T_METER_8723B;
-
-	pConfig->ODM_TxPwrTrackSetPwr = ODM_TxPwrTrackSetPwr_8723B;
-	pConfig->PHY_LCCalibrate = PHY_LCCalibrate_8723B;
-	pConfig->GetDeltaSwingTable = GetDeltaSwingTable_8723B;
-}
-
-/* 1 7. IQK */
-#define MAX_TOLERANCE		5
-
-/* bit0 = 1 => Tx OK, bit1 = 1 => Rx OK */
-static u8 phy_PathA_IQK_8723B(
-	struct adapter *padapter, bool configPathB, u8 RF_Path
-)
-{
-	u32 regEAC, regE94, regE9C, tmp, Path_SEL_BB /*, regEA4*/;
-	u8 result = 0x00;
-
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	/*  Save RF Path */
-	Path_SEL_BB = PHY_QueryBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord);
-
-	/* leave IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-
-	/*	enable path A PA in TXIQK mode */
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_WE_LUT, 0x80000, 0x1);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_RCK_OS, bRFRegOffsetMask, 0x18000);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G1, bRFRegOffsetMask, 0x0003f);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G2, bRFRegOffsetMask, 0xc7f87);
-	/*	disable path B PA in TXIQK mode */
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xed, bRFRegOffsetMask, 0x00020); */
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0x43, bRFRegOffsetMask, 0x40ec1); */
-
-	/* 1 Tx IQK */
-	/* IQK setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK, bMaskDWord, 0x01007c00);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK, bMaskDWord, 0x01004800);
-	/* path-A IQK setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_Tone_A, bMaskDWord, 0x18008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_Tone_A, bMaskDWord, 0x38008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_Tone_B, bMaskDWord, 0x38008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_Tone_B, bMaskDWord, 0x38008c1c);
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_A, bMaskDWord, 0x8214010a); */
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_A, bMaskDWord, 0x821303ea);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_PI_A, bMaskDWord, 0x28110000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_B, bMaskDWord, 0x82110000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_PI_B, bMaskDWord, 0x28110000);
-
-	/* LO calibration setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Rsp, bMaskDWord, 0x00462911);
-
-	/* enter IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x808000);
-
-	/* Ant switch */
-	if (configPathB || (RF_Path == 0))
-		/*  wifi switch to S1 */
-		PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, 0x00000000);
-	else
-		/*  wifi switch to S0 */
-		PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, 0x00000280);
-
-	/* GNT_BT = 0 */
-	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord, 0x00000800);
-
-	/* One shot, path A LOK & IQK */
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Pts, bMaskDWord, 0xf9000000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Pts, bMaskDWord, 0xf8000000);
-
-	/*  delay x ms */
-	/* PlatformStallExecution(IQK_DELAY_TIME_8723B*1000); */
-	mdelay(IQK_DELAY_TIME_8723B);
-
-	/* restore Ant Path */
-	PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, Path_SEL_BB);
-	/* GNT_BT = 1 */
-	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord, 0x00001800);
-
-	/* leave IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-
-	/*  Check failed */
-	regEAC = PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_After_IQK_A_2, bMaskDWord);
-	regE94 = PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before_IQK_A, bMaskDWord);
-	regE9C = PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_IQK_A, bMaskDWord);
-
-	/* Allen 20131125 */
-	tmp = (regE9C & 0x03FF0000)>>16;
-	if ((tmp & 0x200) > 0)
-		tmp = 0x400 - tmp;
-
-	if (
-		!(regEAC & BIT(28)) &&
-		(((regE94 & 0x03FF0000)>>16) != 0x142) &&
-		(((regE9C & 0x03FF0000)>>16) != 0x42) &&
-		(((regE94 & 0x03FF0000)>>16) < 0x110) &&
-		(((regE94 & 0x03FF0000)>>16) > 0xf0) &&
-		(tmp < 0xf)
-	)
-		result |= 0x01;
-	else					/* if Tx not OK, ignore Rx */
-		return result;
-
-	return result;
-}
-
-/* bit0 = 1 => Tx OK, bit1 = 1 => Rx OK */
-static u8 phy_PathA_RxIQK8723B(
-	struct adapter *padapter, bool configPathB, u8 RF_Path
-)
-{
-	u32 regEAC, regE94, regE9C, regEA4, u4tmp, tmp, Path_SEL_BB;
-	u8 result = 0x00;
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	/*  Save RF Path */
-	Path_SEL_BB = PHY_QueryBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord);
-
-	/* leave IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-	/* 1 Get TXIMR setting */
-	/* modify RXIQK mode table */
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_WE_LUT, 0x80000, 0x1);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_RCK_OS, bRFRegOffsetMask, 0x18000);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G1, bRFRegOffsetMask, 0x0001f);
-	/* LNA2 off, PA on for Dcut */
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G2, bRFRegOffsetMask, 0xf7fb7);
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_WE_LUT, 0x80000, 0x0); */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x808000);
-
-	/* IQK setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK, bMaskDWord, 0x01007c00);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK, bMaskDWord, 0x01004800);
-
-	/* path-A IQK setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_Tone_A, bMaskDWord, 0x18008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_Tone_A, bMaskDWord, 0x38008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_Tone_B, bMaskDWord, 0x38008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_Tone_B, bMaskDWord, 0x38008c1c);
-
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_A, bMaskDWord, 0x82160c1f); */
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_A, bMaskDWord, 0x82130ff0);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_PI_A, bMaskDWord, 0x28110000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_B, bMaskDWord, 0x82110000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_PI_B, bMaskDWord, 0x28110000);
-
-	/* LO calibration setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Rsp, bMaskDWord, 0x0046a911);
-
-	/* enter IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x808000);
-
-	/* Ant switch */
-	if (configPathB || (RF_Path == 0))
-		/*  wifi switch to S1 */
-		PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, 0x00000000);
-	else
-		/*  wifi switch to S0 */
-		PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, 0x00000280);
-
-	/* GNT_BT = 0 */
-	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord, 0x00000800);
-
-	/* One shot, path A LOK & IQK */
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Pts, bMaskDWord, 0xf9000000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Pts, bMaskDWord, 0xf8000000);
-
-	/*  delay x ms */
-	/* PlatformStallExecution(IQK_DELAY_TIME_8723B*1000); */
-	mdelay(IQK_DELAY_TIME_8723B);
-
-	/* restore Ant Path */
-	PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, Path_SEL_BB);
-	/* GNT_BT = 1 */
-	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord, 0x00001800);
-
-	/* leave IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-
-	/*  Check failed */
-	regEAC = PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_After_IQK_A_2, bMaskDWord);
-	regE94 = PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before_IQK_A, bMaskDWord);
-	regE9C = PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_IQK_A, bMaskDWord);
-
-	/* Allen 20131125 */
-	tmp = (regE9C & 0x03FF0000)>>16;
-	if ((tmp & 0x200) > 0)
-		tmp = 0x400 - tmp;
-
-	if (
-		!(regEAC & BIT(28)) &&
-		(((regE94 & 0x03FF0000)>>16) != 0x142) &&
-		(((regE9C & 0x03FF0000)>>16) != 0x42) &&
-		(((regE94 & 0x03FF0000)>>16) < 0x110) &&
-		(((regE94 & 0x03FF0000)>>16) > 0xf0) &&
-		(tmp < 0xf)
-	)
-		result |= 0x01;
-	else				/* if Tx not OK, ignore Rx */
-		return result;
-
-	u4tmp = 0x80007C00 | (regE94&0x3FF0000) | ((regE9C&0x3FF0000) >> 16);
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK, bMaskDWord, u4tmp);
-
-	/* modify RXIQK mode table */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_WE_LUT, 0x80000, 0x1);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_RCK_OS, bRFRegOffsetMask, 0x18000);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G1, bRFRegOffsetMask, 0x0001f);
-	/* LAN2 on, PA off for Dcut */
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G2, bRFRegOffsetMask, 0xf7d77);
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_WE_LUT, 0x80000, 0x0); */
-
-	/* PA, PAD setting */
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xdf, bRFRegOffsetMask, 0xf80);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0x55, bRFRegOffsetMask, 0x4021f);
-
-	/* IQK setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK, bMaskDWord, 0x01004800);
-
-	/* path-A IQK setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_Tone_A, bMaskDWord, 0x38008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_Tone_A, bMaskDWord, 0x18008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_Tone_B, bMaskDWord, 0x38008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_Tone_B, bMaskDWord, 0x38008c1c);
-
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_A, bMaskDWord, 0x82110000);
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_PI_A, bMaskDWord, 0x281604c2); */
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_PI_A, bMaskDWord, 0x2813001f);
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_B, bMaskDWord, 0x82110000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_PI_B, bMaskDWord, 0x28110000);
-
-	/* LO calibration setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Rsp, bMaskDWord, 0x0046a8d1);
-
-	/* enter IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x808000);
-
-	/* Ant switch */
-	if (configPathB || (RF_Path == 0))
-		/*  wifi switch to S1 */
-		PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, 0x00000000);
-	else
-		/*  wifi switch to S0 */
-		PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, 0x00000280);
-
-	/* GNT_BT = 0 */
-	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord, 0x00000800);
-
-	/* One shot, path A LOK & IQK */
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Pts, bMaskDWord, 0xf9000000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Pts, bMaskDWord, 0xf8000000);
-
-	/*  delay x ms */
-	/* PlatformStallExecution(IQK_DELAY_TIME_8723B*1000); */
-	mdelay(IQK_DELAY_TIME_8723B);
-
-	/* restore Ant Path */
-	PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, Path_SEL_BB);
-	/* GNT_BT = 1 */
-	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord, 0x00001800);
-
-    /* leave IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-
-	/*  Check failed */
-	regEAC = PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_After_IQK_A_2, bMaskDWord);
-	regEA4 = PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_Before_IQK_A_2, bMaskDWord);
-
-	/*	PA/PAD controlled by 0x0 */
-	/* leave IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xdf, bRFRegOffsetMask, 0x780);
-
-	/* Allen 20131125 */
-	tmp = (regEAC & 0x03FF0000)>>16;
-	if ((tmp & 0x200) > 0)
-		tmp = 0x400 - tmp;
-
-	if (
-		!(regEAC & BIT(27)) && /* if Tx is OK, check whether Rx is OK */
-		(((regEA4 & 0x03FF0000)>>16) != 0x132) &&
-		(((regEAC & 0x03FF0000)>>16) != 0x36) &&
-		(((regEA4 & 0x03FF0000)>>16) < 0x110) &&
-		(((regEA4 & 0x03FF0000)>>16) > 0xf0) &&
-		(tmp < 0xf)
-	)
-		result |= 0x02;
-
-	return result;
-}
-
-/* bit0 = 1 => Tx OK, bit1 = 1 => Rx OK */
-static u8 phy_PathB_IQK_8723B(struct adapter *padapter)
-{
-	u32 regEAC, regE94, regE9C, tmp, Path_SEL_BB/*, regEC4, regECC, Path_SEL_BB*/;
-	u8 result = 0x00;
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	/*  Save RF Path */
-	Path_SEL_BB = PHY_QueryBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord);
-
-    /* leave IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-
-	/*	in TXIQK mode */
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_WE_LUT, 0x80000, 0x1); */
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_RCK_OS, bRFRegOffsetMask, 0x20000); */
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G1, bRFRegOffsetMask, 0x0003f); */
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G2, bRFRegOffsetMask, 0xc7f87); */
-	/*	enable path B PA in TXIQK mode */
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xed, 0x20, 0x1);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0x43, bRFRegOffsetMask, 0x30fc1);
-
-	/* 1 Tx IQK */
-	/* IQK setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK, bMaskDWord, 0x01007c00);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK, bMaskDWord, 0x01004800);
-	/* path-A IQK setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_Tone_A, bMaskDWord, 0x18008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_Tone_A, bMaskDWord, 0x38008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_Tone_B, bMaskDWord, 0x38008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_Tone_B, bMaskDWord, 0x38008c1c);
-
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_A, bMaskDWord, 0x82140114); */
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_A, bMaskDWord, 0x821303ea);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_PI_A, bMaskDWord, 0x28110000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_B, bMaskDWord, 0x82110000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_PI_B, bMaskDWord, 0x28110000);
-
-	/* LO calibration setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Rsp, bMaskDWord, 0x00462911);
-
-	/* enter IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x808000);
-
-	/* switch to path B */
-	PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, 0x00000280);
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xb0, bRFRegOffsetMask, 0xeffe0); */
-
-	/* GNT_BT = 0 */
-	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord, 0x00000800);
-
-	/* One shot, path B LOK & IQK */
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Pts, bMaskDWord, 0xf9000000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Pts, bMaskDWord, 0xf8000000);
-
-	/*  delay x ms */
-	/* PlatformStallExecution(IQK_DELAY_TIME_88E*1000); */
-	mdelay(IQK_DELAY_TIME_8723B);
-
-	/* restore Ant Path */
-	PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, Path_SEL_BB);
-	/* GNT_BT = 1 */
-	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord, 0x00001800);
-
-    /* leave IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-
-	/*  Check failed */
-	regEAC = PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_After_IQK_A_2, bMaskDWord);
-	regE94 = PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before_IQK_A, bMaskDWord);
-	regE9C = PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_IQK_A, bMaskDWord);
-
-	/* Allen 20131125 */
-	tmp = (regE9C & 0x03FF0000)>>16;
-	if ((tmp & 0x200) > 0)
-		tmp = 0x400 - tmp;
-
-	if (
-		!(regEAC & BIT(28)) &&
-		(((regE94 & 0x03FF0000)>>16) != 0x142) &&
-		(((regE9C & 0x03FF0000)>>16) != 0x42) &&
-		(((regE94 & 0x03FF0000)>>16) < 0x110) &&
-		(((regE94 & 0x03FF0000)>>16) > 0xf0) &&
-		(tmp < 0xf)
-	)
-		result |= 0x01;
-
-	return result;
-}
-
-/* bit0 = 1 => Tx OK, bit1 = 1 => Rx OK */
-static u8 phy_PathB_RxIQK8723B(struct adapter *padapter, bool configPathB)
-{
-	u32 regE94, regE9C, regEA4, regEAC, u4tmp, tmp, Path_SEL_BB;
-	u8 result = 0x00;
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	/*  Save RF Path */
-	Path_SEL_BB = PHY_QueryBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord);
-    /* leave IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-
-	/* switch to path B */
-	PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, 0x00000280);
-	/* modify RXIQK mode table */
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_WE_LUT, 0x80000, 0x1);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_RCK_OS, bRFRegOffsetMask, 0x18000);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G1, bRFRegOffsetMask, 0x0001f);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G2, bRFRegOffsetMask, 0xf7fb7);
-	/* open PA S1 & SMIXER */
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xed, 0x20, 0x1);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0x43, bRFRegOffsetMask, 0x30fcd);
-
-	/* IQK setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK, bMaskDWord, 0x01007c00);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK, bMaskDWord, 0x01004800);
-
-	/* path-B IQK setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_Tone_A, bMaskDWord, 0x18008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_Tone_A, bMaskDWord, 0x38008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_Tone_B, bMaskDWord, 0x38008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_Tone_B, bMaskDWord, 0x38008c1c);
-
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_A, bMaskDWord, 0x82160c1f); */
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_A, bMaskDWord, 0x82130ff0);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_PI_A, bMaskDWord, 0x28110000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_B, bMaskDWord, 0x82110000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_PI_B, bMaskDWord, 0x28110000);
-
-	/* LO calibration setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Rsp, bMaskDWord, 0x0046a911);
-
-    /* enter IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x808000);
-
-	/* switch to path B */
-	PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, 0x00000280);
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xb0, bRFRegOffsetMask, 0xeffe0); */
-
-	/* GNT_BT = 0 */
-	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord, 0x00000800);
-
-	/* One shot, path B TXIQK @ RXIQK */
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Pts, bMaskDWord, 0xf9000000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Pts, bMaskDWord, 0xf8000000);
-
-	/*  delay x ms */
-	/* PlatformStallExecution(IQK_DELAY_TIME_88E*1000); */
-	mdelay(IQK_DELAY_TIME_8723B);
-
-	/* restore Ant Path */
-	PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, Path_SEL_BB);
-	/* GNT_BT = 1 */
-	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord, 0x00001800);
-
-    /* leave IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-
-	/*  Check failed */
-	regEAC = PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_After_IQK_A_2, bMaskDWord);
-	regE94 = PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before_IQK_A, bMaskDWord);
-	regE9C = PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_IQK_A, bMaskDWord);
-
-	/* Allen 20131125 */
-	tmp = (regE9C & 0x03FF0000)>>16;
-	if ((tmp & 0x200) > 0)
-		tmp = 0x400 - tmp;
-
-	if (
-		!(regEAC & BIT(28)) &&
-		(((regE94 & 0x03FF0000)>>16) != 0x142) &&
-		(((regE9C & 0x03FF0000)>>16) != 0x42)  &&
-		(((regE94 & 0x03FF0000)>>16) < 0x110) &&
-		(((regE94 & 0x03FF0000)>>16) > 0xf0) &&
-		(tmp < 0xf)
-	)
-			result |= 0x01;
-	else	/* if Tx not OK, ignore Rx */
-		return result;
-
-	u4tmp = 0x80007C00 | (regE94&0x3FF0000)  | ((regE9C&0x3FF0000) >> 16);
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK, bMaskDWord, u4tmp);
-
-	/* modify RXIQK mode table */
-	/* 20121009, Kordan> RF Mode = 3 */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_WE_LUT, 0x80000, 0x1);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_RCK_OS, bRFRegOffsetMask, 0x18000);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G1, bRFRegOffsetMask, 0x0001f);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G2, bRFRegOffsetMask, 0xf7d77);
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_WE_LUT, 0x80000, 0x0); */
-
-	/* open PA S1 & close SMIXER */
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xed, 0x20, 0x1);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0x43, bRFRegOffsetMask, 0x30ebd);
-
-	/* PA, PAD setting */
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xdf, bRFRegOffsetMask, 0xf80); */
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0x56, bRFRegOffsetMask, 0x51000); */
-
-	/* IQK setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK, bMaskDWord, 0x01004800);
-
-	/* path-B IQK setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_Tone_A, bMaskDWord, 0x38008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_Tone_A, bMaskDWord, 0x18008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_Tone_B, bMaskDWord, 0x38008c1c);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_Tone_B, bMaskDWord, 0x38008c1c);
-
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_A, bMaskDWord, 0x82110000);
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_PI_A, bMaskDWord, 0x281604c2); */
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_PI_A, bMaskDWord, 0x2813001f);
-	PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_PI_B, bMaskDWord, 0x82110000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_PI_B, bMaskDWord, 0x28110000);
-
-	/* LO calibration setting */
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Rsp, bMaskDWord, 0x0046a8d1);
-
-    /* enter IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x808000);
-
-	/* switch to path B */
-	PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, 0x00000280);
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xb0, bRFRegOffsetMask, 0xeffe0); */
-
-	/* GNT_BT = 0 */
-	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord, 0x00000800);
-
-	/* One shot, path B LOK & IQK */
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Pts, bMaskDWord, 0xf9000000);
-	PHY_SetBBReg(pDM_Odm->Adapter, rIQK_AGC_Pts, bMaskDWord, 0xf8000000);
-
-	/*  delay x ms */
-	/* PlatformStallExecution(IQK_DELAY_TIME_88E*1000); */
-	mdelay(IQK_DELAY_TIME_8723B);
-
-	/* restore Ant Path */
-	PHY_SetBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskDWord, Path_SEL_BB);
-	/* GNT_BT = 1 */
-	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord, 0x00001800);
-
-    /* leave IQK mode */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-
-	/*  Check failed */
-	regEAC = PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_After_IQK_A_2, bMaskDWord);
-	regEA4 = PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_Before_IQK_A_2, bMaskDWord);
-
-	/*	PA/PAD controlled by 0x0 */
-	/* leave IQK mode */
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, 0xffffff00, 0x00000000); */
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_B, 0xdf, bRFRegOffsetMask, 0x180); */
-
-	/* Allen 20131125 */
-	tmp = (regEAC & 0x03FF0000)>>16;
-	if ((tmp & 0x200) > 0)
-		tmp = 0x400 - tmp;
-
-	if (
-		!(regEAC & BIT(27)) && /* if Tx is OK, check whether Rx is OK */
-		(((regEA4 & 0x03FF0000)>>16) != 0x132) &&
-		(((regEAC & 0x03FF0000)>>16) != 0x36) &&
-		(((regEA4 & 0x03FF0000)>>16) < 0x110) &&
-		(((regEA4 & 0x03FF0000)>>16) > 0xf0) &&
-		(tmp < 0xf)
-	)
-		result |= 0x02;
-
-	return result;
-}
-
-static void _PHY_PathAFillIQKMatrix8723B(
-	struct adapter *padapter,
-	bool bIQKOK,
-	s32 result[][8],
-	u8 final_candidate,
-	bool bTxOnly
-)
-{
-	u32 Oldval_0, X, TX0_A, reg;
-	s32 Y, TX0_C;
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	struct odm_rf_cal_t *pRFCalibrateInfo = &pDM_Odm->RFCalibrateInfo;
-
-	if (final_candidate == 0xFF)
-		return;
-
-	else if (bIQKOK) {
-		Oldval_0 = (PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance, bMaskDWord) >> 22) & 0x3FF;
-
-		X = result[final_candidate][0];
-		if ((X & 0x00000200) != 0)
-			X = X | 0xFFFFFC00;
-		TX0_A = (X * Oldval_0) >> 8;
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance, 0x3FF, TX0_A);
-
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT(31), ((X*Oldval_0>>7) & 0x1));
-
-		Y = result[final_candidate][1];
-		if ((Y & 0x00000200) != 0)
-			Y = Y | 0xFFFFFC00;
-
-		/* 2 Tx IQC */
-		TX0_C = (Y * Oldval_0) >> 8;
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XCTxAFE, 0xF0000000, ((TX0_C&0x3C0)>>6));
-		pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC94][KEY] = rOFDM0_XCTxAFE;
-		pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC94][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XCTxAFE, bMaskDWord);
-
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance, 0x003F0000, (TX0_C&0x3F));
-		pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC80][KEY] = rOFDM0_XATxIQImbalance;
-		pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC80][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance, bMaskDWord);
-
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT(29), ((Y*Oldval_0>>7) & 0x1));
-		pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC4C][KEY] = rOFDM0_ECCAThreshold;
-		pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC4C][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskDWord);
-
-		if (bTxOnly) {
-			/*  <20130226, Kordan> Saving RxIQC, otherwise not initialized. */
-			pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][KEY] = rOFDM0_RxIQExtAnta;
-			pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][VAL] = 0xfffffff & PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord);
-			pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][KEY] = rOFDM0_XARxIQImbalance;
-/* 			pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XARxIQImbalance, bMaskDWord); */
-			pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][VAL] = 0x40000100;
-			return;
-		}
-
-		reg = result[final_candidate][2];
-
-		/* 2 Rx IQC */
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XARxIQImbalance, 0x3FF, reg);
-		reg = result[final_candidate][3] & 0x3F;
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XARxIQImbalance, 0xFC00, reg);
-		pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][KEY] = rOFDM0_XARxIQImbalance;
-		pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XARxIQImbalance, bMaskDWord);
-
-		reg = (result[final_candidate][3] >> 6) & 0xF;
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, 0xF0000000, reg);
-		pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][KEY] = rOFDM0_RxIQExtAnta;
-		pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord);
-
-	}
-}
-
-static void _PHY_PathBFillIQKMatrix8723B(
-	struct adapter *padapter,
-	bool bIQKOK,
-	s32 result[][8],
-	u8 final_candidate,
-	bool bTxOnly /* do Tx only */
-)
-{
-	u32 Oldval_1, X, TX1_A, reg;
-	s32	Y, TX1_C;
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	struct odm_rf_cal_t *pRFCalibrateInfo = &pDM_Odm->RFCalibrateInfo;
-
-	if (final_candidate == 0xFF)
-		return;
-
-	else if (bIQKOK) {
-		Oldval_1 = (PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance, bMaskDWord) >> 22) & 0x3FF;
-
-		X = result[final_candidate][4];
-		if ((X & 0x00000200) != 0)
-			X = X | 0xFFFFFC00;
-		TX1_A = (X * Oldval_1) >> 8;
-
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance, 0x3FF, TX1_A);
-
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT(27), ((X*Oldval_1>>7) & 0x1));
-
-		Y = result[final_candidate][5];
-		if ((Y & 0x00000200) != 0)
-			Y = Y | 0xFFFFFC00;
-
-		TX1_C = (Y * Oldval_1) >> 8;
-
-		/* 2 Tx IQC */
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XDTxAFE, 0xF0000000, ((TX1_C&0x3C0)>>6));
-/* 		pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC9C][KEY] = rOFDM0_XDTxAFE; */
-/* 		pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC9C][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XDTxAFE, bMaskDWord); */
-		pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC94][KEY] = rOFDM0_XCTxAFE;
-		pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC94][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XDTxAFE, bMaskDWord);
-
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance, 0x003F0000, (TX1_C&0x3F));
-		pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC80][KEY] = rOFDM0_XATxIQImbalance;
-		pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC80][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance, bMaskDWord);
-
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT(25), ((Y*Oldval_1>>7) & 0x1));
-		pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC4C][KEY] = rOFDM0_ECCAThreshold;
-		pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC4C][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskDWord);
-
-		if (bTxOnly) {
-			pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][KEY] = rOFDM0_XARxIQImbalance;
-/* 			pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XARxIQImbalance, bMaskDWord); */
-			pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][VAL] = 0x40000100;
-			pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][KEY] = rOFDM0_RxIQExtAnta;
-			pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][VAL] = 0x0fffffff & PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord);
-			return;
-		}
-
-		/* 2 Rx IQC */
-		reg = result[final_candidate][6];
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XBRxIQImbalance, 0x3FF, reg);
-		reg = result[final_candidate][7] & 0x3F;
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XBRxIQImbalance, 0xFC00, reg);
-		pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][KEY] = rOFDM0_XARxIQImbalance;
-		pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XBRxIQImbalance, bMaskDWord);
-
-		reg = (result[final_candidate][7] >> 6) & 0xF;
-/* 		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_AGCRSSITable, 0x0000F000, reg); */
-		pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][KEY] = rOFDM0_RxIQExtAnta;
-		pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][VAL] = (reg << 28)|(PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord)&0x0fffffff);
-	}
-}
-
-/*  */
-/*  2011/07/26 MH Add an API for testing IQK fail case. */
-/*  */
-/*  MP Already declare in odm.c */
-
-void ODM_SetIQCbyRFpath(struct dm_odm_t *pDM_Odm, u32 RFpath)
-{
-
-	struct odm_rf_cal_t *pRFCalibrateInfo = &pDM_Odm->RFCalibrateInfo;
-	u8 path;
-
-	if (
-		(pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC80][VAL] != 0x0) &&
-		(pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][VAL] != 0x0) &&
-		(pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC80][VAL] != 0x0) &&
-		(pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][VAL] != 0x0)
-	) {
-		if (RFpath)
-			path = PATH_S0;
-		else
-			path = PATH_S1;
-
-		/* TX IQC */
-		PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->TxIQC_8723B[path][IDX_0xC94][KEY], bMaskDWord, pRFCalibrateInfo->TxIQC_8723B[path][IDX_0xC94][VAL]);
-		PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->TxIQC_8723B[path][IDX_0xC80][KEY], bMaskDWord, pRFCalibrateInfo->TxIQC_8723B[path][IDX_0xC80][VAL]);
-		PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->TxIQC_8723B[path][IDX_0xC4C][KEY], bMaskDWord, pRFCalibrateInfo->TxIQC_8723B[path][IDX_0xC4C][VAL]);
-		/* RX IQC */
-		PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->RxIQC_8723B[path][IDX_0xC14][KEY], bMaskDWord, pRFCalibrateInfo->RxIQC_8723B[path][IDX_0xC14][VAL]);
-		PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->RxIQC_8723B[path][IDX_0xCA0][KEY], bMaskDWord, pRFCalibrateInfo->RxIQC_8723B[path][IDX_0xCA0][VAL]);
-	}
-}
-
-static bool ODM_CheckPowerStatus(struct adapter *Adapter)
-{
-	return true;
-}
-
-static void _PHY_SaveADDARegisters8723B(
-	struct adapter *padapter,
-	u32 *ADDAReg,
-	u32 *ADDABackup,
-	u32 RegisterNum
-)
-{
-	u32 i;
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	if (!ODM_CheckPowerStatus(padapter))
-		return;
-
-	for (i = 0 ; i < RegisterNum ; i++) {
-		ADDABackup[i] = PHY_QueryBBReg(pDM_Odm->Adapter, ADDAReg[i], bMaskDWord);
-	}
-}
-
-static void _PHY_SaveMACRegisters8723B(
-	struct adapter *padapter, u32 *MACReg, u32 *MACBackup
-)
-{
-	u32 i;
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	for (i = 0 ; i < (IQK_MAC_REG_NUM - 1); i++) {
-		MACBackup[i] = rtw_read8(pDM_Odm->Adapter, MACReg[i]);
-	}
-	MACBackup[i] = rtw_read32(pDM_Odm->Adapter, MACReg[i]);
-
-}
-
-static void _PHY_ReloadADDARegisters8723B(
-	struct adapter *padapter,
-	u32 *ADDAReg,
-	u32 *ADDABackup,
-	u32 RegiesterNum
-)
-{
-	u32 i;
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	for (i = 0 ; i < RegiesterNum; i++) {
-		PHY_SetBBReg(pDM_Odm->Adapter, ADDAReg[i], bMaskDWord, ADDABackup[i]);
-	}
-}
-
-static void _PHY_ReloadMACRegisters8723B(
-	struct adapter *padapter, u32 *MACReg, u32 *MACBackup
-)
-{
-	u32 i;
-
-	for (i = 0 ; i < (IQK_MAC_REG_NUM - 1); i++) {
-		rtw_write8(padapter, MACReg[i], (u8)MACBackup[i]);
-	}
-	rtw_write32(padapter, MACReg[i], MACBackup[i]);
-}
-
-static void _PHY_PathADDAOn8723B(
-	struct adapter *padapter,
-	u32 *ADDAReg,
-	bool is2T
-)
-{
-	u32 pathOn;
-	u32 i;
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	pathOn = 0x01c00014;
-	if (!is2T) {
-		pathOn = 0x01c00014;
-		PHY_SetBBReg(pDM_Odm->Adapter, ADDAReg[0], bMaskDWord, 0x01c00014);
-	} else {
-		PHY_SetBBReg(pDM_Odm->Adapter, ADDAReg[0], bMaskDWord, pathOn);
-	}
-
-	for (i = 1 ; i < IQK_ADDA_REG_NUM ; i++) {
-		PHY_SetBBReg(pDM_Odm->Adapter, ADDAReg[i], bMaskDWord, pathOn);
-	}
-
-}
-
-static void _PHY_MACSettingCalibration8723B(
-	struct adapter *padapter, u32 *MACReg, u32 *MACBackup
-)
-{
-	u32 i = 0;
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	rtw_write8(pDM_Odm->Adapter, MACReg[i], 0x3F);
-
-	for (i = 1 ; i < (IQK_MAC_REG_NUM - 1); i++) {
-		rtw_write8(pDM_Odm->Adapter, MACReg[i], (u8)(MACBackup[i]&(~BIT(3))));
-	}
-	rtw_write8(pDM_Odm->Adapter, MACReg[i], (u8)(MACBackup[i]&(~BIT(5))));
-
-}
-
-static bool phy_SimularityCompare_8723B(
-	struct adapter *padapter,
-	s32 result[][8],
-	u8  c1,
-	u8  c2
-)
-{
-	u32 i, j, diff, SimularityBitMap, bound = 0;
-	u8 final_candidate[2] = {0xFF, 0xFF}; /* for path A and path B */
-	bool bResult = true;
-	s32 tmp1 = 0, tmp2 = 0;
-
-	bound = 8;
-	SimularityBitMap = 0;
-
-	for (i = 0; i < bound; i++) {
-
-		if ((i == 1) || (i == 3) || (i == 5) || (i == 7)) {
-			if ((result[c1][i] & 0x00000200) != 0)
-				tmp1 = result[c1][i] | 0xFFFFFC00;
-			else
-				tmp1 = result[c1][i];
-
-			if ((result[c2][i] & 0x00000200) != 0)
-				tmp2 = result[c2][i] | 0xFFFFFC00;
-			else
-				tmp2 = result[c2][i];
-		} else {
-			tmp1 = result[c1][i];
-			tmp2 = result[c2][i];
-		}
-
-		diff = (tmp1 > tmp2) ? (tmp1 - tmp2) : (tmp2 - tmp1);
-
-		if (diff > MAX_TOLERANCE) {
-			if ((i == 2 || i == 6) && !SimularityBitMap) {
-				if (result[c1][i]+result[c1][i+1] == 0)
-					final_candidate[(i/4)] = c2;
-				else if (result[c2][i]+result[c2][i+1] == 0)
-					final_candidate[(i/4)] = c1;
-				else
-					SimularityBitMap = SimularityBitMap|(1<<i);
-			} else
-				SimularityBitMap = SimularityBitMap|(1<<i);
-		}
-	}
-
-	if (SimularityBitMap == 0) {
-		for (i = 0; i < (bound/4); i++) {
-			if (final_candidate[i] != 0xFF) {
-				for (j = i*4; j < (i+1)*4-2; j++)
-					result[3][j] = result[final_candidate[i]][j];
-				bResult = false;
-			}
-		}
-		return bResult;
-	} else {
-
-		if (!(SimularityBitMap & 0x03)) { /* path A TX OK */
-			for (i = 0; i < 2; i++)
-				result[3][i] = result[c1][i];
-		}
-
-		if (!(SimularityBitMap & 0x0c)) { /* path A RX OK */
-			for (i = 2; i < 4; i++)
-				result[3][i] = result[c1][i];
-		}
-
-		if (!(SimularityBitMap & 0x30)) { /* path B TX OK */
-			for (i = 4; i < 6; i++)
-				result[3][i] = result[c1][i];
-		}
-
-		if (!(SimularityBitMap & 0xc0)) { /* path B RX OK */
-			for (i = 6; i < 8; i++)
-				result[3][i] = result[c1][i];
-		}
-		return false;
-	}
-}
-
-static void phy_IQCalibrate_8723B(
-	struct adapter *padapter,
-	s32 result[][8],
-	u8 t,
-	bool is2T,
-	u8 RF_Path
-)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	u32 i;
-	u8 PathAOK, PathBOK;
-	u8 tmp0xc50 = (u8)PHY_QueryBBReg(pDM_Odm->Adapter, 0xC50, bMaskByte0);
-	u8 tmp0xc58 = (u8)PHY_QueryBBReg(pDM_Odm->Adapter, 0xC58, bMaskByte0);
-	u32 ADDA_REG[IQK_ADDA_REG_NUM] = {
-		rFPGA0_XCD_SwitchControl,
-		rBlue_Tooth,
-		rRx_Wait_CCA,
-		rTx_CCK_RFON,
-		rTx_CCK_BBON,
-		rTx_OFDM_RFON,
-		rTx_OFDM_BBON,
-		rTx_To_Rx,
-		rTx_To_Tx,
-		rRx_CCK,
-		rRx_OFDM,
-		rRx_Wait_RIFS,
-		rRx_TO_Rx,
-		rStandby,
-		rSleep,
-		rPMPD_ANAEN
-	};
-	u32 IQK_MAC_REG[IQK_MAC_REG_NUM] = {
-		REG_TXPAUSE,
-		REG_BCN_CTRL,
-		REG_BCN_CTRL_1,
-		REG_GPIO_MUXCFG
-	};
-
-	/* since 92C & 92D have the different define in IQK_BB_REG */
-	u32 IQK_BB_REG_92C[IQK_BB_REG_NUM] = {
-		rOFDM0_TRxPathEnable,
-		rOFDM0_TRMuxPar,
-		rFPGA0_XCD_RFInterfaceSW,
-		rConfig_AntA,
-		rConfig_AntB,
-		rFPGA0_XAB_RFInterfaceSW,
-		rFPGA0_XA_RFInterfaceOE,
-		rFPGA0_XB_RFInterfaceOE,
-		rCCK0_AFESetting
-	};
-	const u32 retryCount = 2;
-
-	/*  Note: IQ calibration must be performed after loading */
-	/*		PHY_REG.txt , and radio_a, radio_b.txt */
-
-	/* u32 bbvalue; */
-
-	if (t == 0) {
-
-		/*  Save ADDA parameters, turn Path A ADDA on */
-		_PHY_SaveADDARegisters8723B(padapter, ADDA_REG, pDM_Odm->RFCalibrateInfo.ADDA_backup, IQK_ADDA_REG_NUM);
-		_PHY_SaveMACRegisters8723B(padapter, IQK_MAC_REG, pDM_Odm->RFCalibrateInfo.IQK_MAC_backup);
-		_PHY_SaveADDARegisters8723B(padapter, IQK_BB_REG_92C, pDM_Odm->RFCalibrateInfo.IQK_BB_backup, IQK_BB_REG_NUM);
-	}
-
-	_PHY_PathADDAOn8723B(padapter, ADDA_REG, is2T);
-
-/* no serial mode */
-
-	/* save RF path for 8723B */
-/* 	Path_SEL_BB = PHY_QueryBBReg(pDM_Odm->Adapter, 0x948, bMaskDWord); */
-/* 	Path_SEL_RF = PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xb0, 0xfffff); */
-
-	/* MAC settings */
-	_PHY_MACSettingCalibration8723B(padapter, IQK_MAC_REG, pDM_Odm->RFCalibrateInfo.IQK_MAC_backup);
-
-	/* BB setting */
-	/* PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_RFMOD, BIT24, 0x00); */
-	PHY_SetBBReg(pDM_Odm->Adapter, rCCK0_AFESetting, 0x0f000000, 0xf);
-	PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_TRxPathEnable, bMaskDWord, 0x03a05600);
-	PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_TRMuxPar, bMaskDWord, 0x000800e4);
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_XCD_RFInterfaceSW, bMaskDWord, 0x22204000);
-
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_XAB_RFInterfaceSW, BIT10, 0x01); */
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_XAB_RFInterfaceSW, BIT26, 0x01); */
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_XA_RFInterfaceOE, BIT10, 0x00); */
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_XB_RFInterfaceOE, BIT10, 0x00); */
-
-/* RX IQ calibration setting for 8723B D cut large current issue when leaving IPS */
-
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_WE_LUT, 0x80000, 0x1);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_RCK_OS, bRFRegOffsetMask, 0x30000);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G1, bRFRegOffsetMask, 0x0001f);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G2, bRFRegOffsetMask, 0xf7fb7);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xed, 0x20, 0x1);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0x43, bRFRegOffsetMask, 0x60fbd);
-
-/* path A TX IQK */
-	for (i = 0 ; i < retryCount ; i++) {
-		PathAOK = phy_PathA_IQK_8723B(padapter, is2T, RF_Path);
-/* 		if (PathAOK == 0x03) { */
-		if (PathAOK == 0x01) {
-			/*  Path A Tx IQK Success */
-			PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-			pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_A] = PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH_A, 0x8, bRFRegOffsetMask);
-
-			result[t][0] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before_IQK_A,
-						       bMaskDWord) & 0x3FF0000) >> 16;
-			result[t][1] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_IQK_A,
-						       bMaskDWord) & 0x3FF0000) >> 16;
-			break;
-		}
-	}
-
-/* path A RXIQK */
-	for (i = 0 ; i < retryCount ; i++) {
-		PathAOK = phy_PathA_RxIQK8723B(padapter, is2T, RF_Path);
-		if (PathAOK == 0x03) {
-/* 				result[t][0] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before_IQK_A, bMaskDWord)&0x3FF0000)>>16; */
-/* 				result[t][1] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_IQK_A, bMaskDWord)&0x3FF0000)>>16; */
-				result[t][2] = (PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_Before_IQK_A_2, bMaskDWord)&0x3FF0000)>>16;
-				result[t][3] = (PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_After_IQK_A_2, bMaskDWord)&0x3FF0000)>>16;
-			break;
-		}
-	}
-
-/* path B IQK */
-	if (is2T) {
-
-		/* path B TX IQK */
-		for (i = 0 ; i < retryCount ; i++) {
-			PathBOK = phy_PathB_IQK_8723B(padapter);
-			if (PathBOK == 0x01) {
-				/*  Path B Tx IQK Success */
-				PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
-				pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_B] = PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH_B, 0x8, bRFRegOffsetMask);
-
-				result[t][4] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before_IQK_A, bMaskDWord)&0x3FF0000)>>16;
-				result[t][5] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_IQK_A, bMaskDWord)&0x3FF0000)>>16;
-				break;
-			}
-		}
-
-/* path B RX IQK */
-		for (i = 0 ; i < retryCount ; i++) {
-			PathBOK = phy_PathB_RxIQK8723B(padapter, is2T);
-			if (PathBOK == 0x03) {
-/* 				result[t][0] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before_IQK_A, bMaskDWord)&0x3FF0000)>>16; */
-/* 				result[t][1] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_IQK_A, bMaskDWord)&0x3FF0000)>>16; */
-				result[t][6] = (PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_Before_IQK_A_2, bMaskDWord)&0x3FF0000)>>16;
-				result[t][7] = (PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_After_IQK_A_2, bMaskDWord)&0x3FF0000)>>16;
-				break;
-			}
-		}
-
-/* Allen end */
-	}
-
-	/* Back to BB mode, load original value */
-	PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0);
-
-	if (t != 0) {
-		/*  Reload ADDA power saving parameters */
-		_PHY_ReloadADDARegisters8723B(padapter, ADDA_REG, pDM_Odm->RFCalibrateInfo.ADDA_backup, IQK_ADDA_REG_NUM);
-
-		/*  Reload MAC parameters */
-		_PHY_ReloadMACRegisters8723B(padapter, IQK_MAC_REG, pDM_Odm->RFCalibrateInfo.IQK_MAC_backup);
-
-		_PHY_ReloadADDARegisters8723B(padapter, IQK_BB_REG_92C, pDM_Odm->RFCalibrateInfo.IQK_BB_backup, IQK_BB_REG_NUM);
-
-		/* Reload RF path */
-/* 		PHY_SetBBReg(pDM_Odm->Adapter, 0x948, bMaskDWord, Path_SEL_BB); */
-/* 		PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xb0, 0xfffff, Path_SEL_RF); */
-
-		/* Allen initial gain 0xc50 */
-		/*  Restore RX initial gain */
-		PHY_SetBBReg(pDM_Odm->Adapter, 0xc50, bMaskByte0, 0x50);
-		PHY_SetBBReg(pDM_Odm->Adapter, 0xc50, bMaskByte0, tmp0xc50);
-		if (is2T) {
-			PHY_SetBBReg(pDM_Odm->Adapter, 0xc58, bMaskByte0, 0x50);
-			PHY_SetBBReg(pDM_Odm->Adapter, 0xc58, bMaskByte0, tmp0xc58);
-		}
-
-		/* load 0xe30 IQC default value */
-		PHY_SetBBReg(pDM_Odm->Adapter, rTx_IQK_Tone_A, bMaskDWord, 0x01008c00);
-		PHY_SetBBReg(pDM_Odm->Adapter, rRx_IQK_Tone_A, bMaskDWord, 0x01008c00);
-
-	}
-
-}
-
-static void phy_LCCalibrate_8723B(struct dm_odm_t *pDM_Odm, bool is2T)
-{
-	u8 tmpReg;
-	u32 RF_Amode = 0, RF_Bmode = 0, LC_Cal;
-	struct adapter *padapter = pDM_Odm->Adapter;
-
-	/* Check continuous TX and Packet TX */
-	tmpReg = rtw_read8(pDM_Odm->Adapter, 0xd03);
-
-	if ((tmpReg&0x70) != 0)			/* Deal with contisuous TX case */
-		rtw_write8(pDM_Odm->Adapter, 0xd03, tmpReg&0x8F);	/* disable all continuous TX */
-	else							/*  Deal with Packet TX case */
-		rtw_write8(pDM_Odm->Adapter, REG_TXPAUSE, 0xFF);		/*  block all queues */
-
-	if ((tmpReg&0x70) != 0) {
-		/* 1. Read original RF mode */
-		/* Path-A */
-		RF_Amode = PHY_QueryRFReg(padapter, RF_PATH_A, RF_AC, bMask12Bits);
-
-		/* Path-B */
-		if (is2T)
-			RF_Bmode = PHY_QueryRFReg(padapter, RF_PATH_B, RF_AC, bMask12Bits);
-
-		/* 2. Set RF mode = standby mode */
-		/* Path-A */
-		PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_AC, bMask12Bits, (RF_Amode&0x8FFFF)|0x10000);
-
-		/* Path-B */
-		if (is2T)
-			PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_B, RF_AC, bMask12Bits, (RF_Bmode&0x8FFFF)|0x10000);
-	}
-
-	/* 3. Read RF reg18 */
-	LC_Cal = PHY_QueryRFReg(padapter, RF_PATH_A, RF_CHNLBW, bMask12Bits);
-
-	/* 4. Set LC calibration begin	bit15 */
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xB0, bRFRegOffsetMask, 0xDFBE0); /*  LDO ON */
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_CHNLBW, bMask12Bits, LC_Cal|0x08000);
-
-	mdelay(100);
-
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xB0, bRFRegOffsetMask, 0xDFFE0); /*  LDO OFF */
-
-	/*  Channel 10 LC calibration issue for 8723bs with 26M xtal */
-	if (pDM_Odm->SupportInterface == ODM_ITRF_SDIO && pDM_Odm->PackageType >= 0x2) {
-		PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_CHNLBW, bMask12Bits, LC_Cal);
-	}
-
-	/* Restore original situation */
-	if ((tmpReg&0x70) != 0) { /* Deal with contisuous TX case */
-		/* Path-A */
-		rtw_write8(pDM_Odm->Adapter, 0xd03, tmpReg);
-		PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_AC, bMask12Bits, RF_Amode);
-
-		/* Path-B */
-		if (is2T)
-			PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_B, RF_AC, bMask12Bits, RF_Bmode);
-	} else /*  Deal with Packet TX case */
-		rtw_write8(pDM_Odm->Adapter, REG_TXPAUSE, 0x00);
-}
-
-/* IQK version:V2.5    20140123 */
-/* IQK is controlled by Is2ant, RF path */
-void PHY_IQCalibrate_8723B(
-	struct adapter *padapter,
-	bool bReCovery,
-	bool bRestore,
-	bool Is2ant,	/* false:1ant, true:2-ant */
-	u8 RF_Path	/* 0:S1, 1:S0 */
-)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	s32 result[4][8];	/* last is final result */
-	u8 i, final_candidate;
-	bool bPathAOK, bPathBOK;
-	s32 RegE94, RegE9C, RegEA4, RegEB4, RegEBC, RegEC4, RegTmp = 0;
-	bool is12simular, is13simular, is23simular;
-	bool bSingleTone = false, bCarrierSuppression = false;
-	u32 IQK_BB_REG_92C[IQK_BB_REG_NUM] = {
-		rOFDM0_XARxIQImbalance,
-		rOFDM0_XBRxIQImbalance,
-		rOFDM0_ECCAThreshold,
-		rOFDM0_AGCRSSITable,
-		rOFDM0_XATxIQImbalance,
-		rOFDM0_XBTxIQImbalance,
-		rOFDM0_XCTxAFE,
-		rOFDM0_XDTxAFE,
-		rOFDM0_RxIQExtAnta
-	};
-/* 	u32 		Path_SEL_BB = 0; */
-	u32		GNT_BT_default;
-
-	if (!ODM_CheckPowerStatus(padapter))
-		return;
-
-	if (!(pDM_Odm->SupportAbility & ODM_RF_CALIBRATION))
-		return;
-
-	/*  20120213<Kordan> Turn on when continuous Tx to pass lab testing. (required by Edlu) */
-	if (bSingleTone || bCarrierSuppression)
-		return;
-
-	if (pDM_Odm->RFCalibrateInfo.bIQKInProgress)
-		return;
-
-	pDM_Odm->RFCalibrateInfo.bIQKInProgress = true;
-
-	if (bRestore) {
-		u32 offset, data;
-		u8 path, bResult = SUCCESS;
-		struct odm_rf_cal_t *pRFCalibrateInfo = &pDM_Odm->RFCalibrateInfo;
-
-		path = (PHY_QueryBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskByte0) == 0x00) ? RF_PATH_A : RF_PATH_B;
-
-		/*  Restore TX IQK */
-		for (i = 0; i < 3; ++i) {
-			offset = pRFCalibrateInfo->TxIQC_8723B[path][i][0];
-			data = pRFCalibrateInfo->TxIQC_8723B[path][i][1];
-			if ((offset == 0) || (data == 0)) {
-				bResult = FAIL;
-				break;
-			}
-			PHY_SetBBReg(pDM_Odm->Adapter, offset, bMaskDWord, data);
-		}
-
-		/*  Restore RX IQK */
-		for (i = 0; i < 2; ++i) {
-			offset = pRFCalibrateInfo->RxIQC_8723B[path][i][0];
-			data = pRFCalibrateInfo->RxIQC_8723B[path][i][1];
-			if ((offset == 0) || (data == 0)) {
-				bResult = FAIL;
-				break;
-			}
-			PHY_SetBBReg(pDM_Odm->Adapter, offset, bMaskDWord, data);
-		}
-
-		if (pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_A] == 0) {
-			bResult = FAIL;
-		} else {
-			PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXM_IDAC, bRFRegOffsetMask, pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_A]);
-			PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_B, RF_TXM_IDAC, bRFRegOffsetMask, pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_B]);
-		}
-
-		if (bResult == SUCCESS)
-			return;
-	}
-
-	if (bReCovery) {
-		_PHY_ReloadADDARegisters8723B(padapter, IQK_BB_REG_92C, pDM_Odm->RFCalibrateInfo.IQK_BB_backup_recover, 9);
-		return;
-	}
-
-	/* save default GNT_BT */
-	GNT_BT_default = PHY_QueryBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord);
-	/*  Save RF Path */
-/* 	Path_SEL_BB = PHY_QueryBBReg(pDM_Odm->Adapter, 0x948, bMaskDWord); */
-/* 	Path_SEL_RF = PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xb0, 0xfffff); */
-
-    /* set GNT_BT = 0, pause BT traffic */
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, BIT12, 0x0); */
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, BIT11, 0x1); */
-
-	for (i = 0; i < 8; i++) {
-		result[0][i] = 0;
-		result[1][i] = 0;
-		result[2][i] = 0;
-		result[3][i] = 0;
-	}
-
-	final_candidate = 0xff;
-	bPathAOK = false;
-	bPathBOK = false;
-	is12simular = false;
-	is23simular = false;
-	is13simular = false;
-
-	for (i = 0; i < 3; i++) {
-		phy_IQCalibrate_8723B(padapter, result, i, Is2ant, RF_Path);
-
-		if (i == 1) {
-			is12simular = phy_SimularityCompare_8723B(padapter, result, 0, 1);
-			if (is12simular) {
-				final_candidate = 0;
-				break;
-			}
-		}
-
-		if (i == 2) {
-			is13simular = phy_SimularityCompare_8723B(padapter, result, 0, 2);
-			if (is13simular) {
-				final_candidate = 0;
-
-				break;
-			}
-
-			is23simular = phy_SimularityCompare_8723B(padapter, result, 1, 2);
-			if (is23simular) {
-				final_candidate = 1;
-			} else {
-				for (i = 0; i < 8; i++)
-					RegTmp += result[3][i];
-
-				if (RegTmp != 0)
-					final_candidate = 3;
-				else
-					final_candidate = 0xFF;
-			}
-		}
-	}
-
-	for (i = 0; i < 4; i++) {
-		RegE94 = result[i][0];
-		RegE9C = result[i][1];
-		RegEA4 = result[i][2];
-		RegEB4 = result[i][4];
-		RegEBC = result[i][5];
-		RegEC4 = result[i][6];
-	}
-
-	if (final_candidate != 0xff) {
-		pDM_Odm->RFCalibrateInfo.RegE94 = RegE94 = result[final_candidate][0];
-		pDM_Odm->RFCalibrateInfo.RegE9C = RegE9C = result[final_candidate][1];
-		RegEA4 = result[final_candidate][2];
-		pDM_Odm->RFCalibrateInfo.RegEB4 = RegEB4 = result[final_candidate][4];
-		pDM_Odm->RFCalibrateInfo.RegEBC = RegEBC = result[final_candidate][5];
-		RegEC4 = result[final_candidate][6];
-		bPathAOK = bPathBOK = true;
-	} else {
-		pDM_Odm->RFCalibrateInfo.RegE94 = pDM_Odm->RFCalibrateInfo.RegEB4 = 0x100;	/* X default value */
-		pDM_Odm->RFCalibrateInfo.RegE9C = pDM_Odm->RFCalibrateInfo.RegEBC = 0x0;		/* Y default value */
-	}
-
-	{
-		if (RegE94 != 0)
-			_PHY_PathAFillIQKMatrix8723B(padapter, bPathAOK, result, final_candidate, (RegEA4 == 0));
-	}
-	{
-		if (RegEB4 != 0)
-			_PHY_PathBFillIQKMatrix8723B(padapter, bPathBOK, result, final_candidate, (RegEC4 == 0));
-	}
-
-/* To Fix BSOD when final_candidate is 0xff */
-/* by sherry 20120321 */
-	if (final_candidate < 4) {
-		for (i = 0; i < IQK_MATRIX_REG_NUM; i++)
-			pDM_Odm->RFCalibrateInfo.iqk_matrix_regs_setting_value[0][i] = result[final_candidate][i];
-	}
-
-	_PHY_SaveADDARegisters8723B(padapter, IQK_BB_REG_92C, pDM_Odm->RFCalibrateInfo.IQK_BB_backup_recover, 9);
-
-	/* restore GNT_BT */
-	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord, GNT_BT_default);
-	/*  Restore RF Path */
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, 0x948, bMaskDWord, Path_SEL_BB); */
-/* 	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xb0, 0xfffff, Path_SEL_RF); */
-
-	/* Resotr RX mode table parameter */
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_WE_LUT, 0x80000, 0x1);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_RCK_OS, bRFRegOffsetMask, 0x18000);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G1, bRFRegOffsetMask, 0x0001f);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXPA_G2, bRFRegOffsetMask, 0xe6177);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0xed, 0x20, 0x1);
-	PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, 0x43, bRFRegOffsetMask, 0x300bd);
-
-	/* set GNT_BT = HW control */
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, BIT12, 0x0); */
-/* 	PHY_SetBBReg(pDM_Odm->Adapter, 0x764, BIT11, 0x0); */
-
-	if (Is2ant) {
-		if (RF_Path == 0x0)	/* S1 */
-			ODM_SetIQCbyRFpath(pDM_Odm, 0);
-		else	/* S0 */
-			ODM_SetIQCbyRFpath(pDM_Odm, 1);
-	}
-
-	pDM_Odm->RFCalibrateInfo.bIQKInProgress = false;
-}
-
-void PHY_LCCalibrate_8723B(struct dm_odm_t *pDM_Odm)
-{
-	bool		bSingleTone = false, bCarrierSuppression = false;
-	u32		timeout = 2000, timecount = 0;
-
-	if (!(pDM_Odm->SupportAbility & ODM_RF_CALIBRATION))
-		return;
-
-	/*  20120213<Kordan> Turn on when continuous Tx to pass lab testing. (required by Edlu) */
-	if (bSingleTone || bCarrierSuppression)
-		return;
-
-	while (*(pDM_Odm->pbScanInProcess) && timecount < timeout) {
-		mdelay(50);
-		timecount += 50;
-	}
-
-	pDM_Odm->RFCalibrateInfo.bLCKInProgress = true;
-
-	phy_LCCalibrate_8723B(pDM_Odm, false);
-
-	pDM_Odm->RFCalibrateInfo.bLCKInProgress = false;
-}
diff --git a/drivers/staging/rtl8723bs/hal/HalPhyRf_8723B.h b/drivers/staging/rtl8723bs/hal/HalPhyRf_8723B.h
deleted file mode 100644
index 14b328378b8b..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalPhyRf_8723B.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef __HAL_PHY_RF_8723B_H__
-#define __HAL_PHY_RF_8723B_H__
-
-/*--------------------------Define Parameters-------------------------------*/
-#define	IQK_DELAY_TIME_8723B		20		/* ms */
-#define IQK_DEFERRED_TIME_8723B		4
-#define	index_mapping_NUM_8723B		15
-#define AVG_THERMAL_NUM_8723B		4
-#define	RF_T_METER_8723B					0x42	/*  */
-
-void ConfigureTxpowerTrack_8723B(struct txpwrtrack_cfg *pConfig);
-
-void ODM_TxPwrTrackSetPwr_8723B(
-	struct dm_odm_t *pDM_Odm,
-	enum pwrtrack_method Method,
-	u8 RFPath,
-	u8 ChannelMappedIndex
-);
-
-/* 1 7. IQK */
-void PHY_IQCalibrate_8723B(
-	struct adapter *Adapter,
-	bool bReCovery,
-	bool bRestore,
-	bool Is2ant,
-	u8 RF_Path
-);
-
-void ODM_SetIQCbyRFpath(struct dm_odm_t *pDM_Odm, u32 RFpath);
-
-/*  */
-/*  LC calibrate */
-/*  */
-void PHY_LCCalibrate_8723B(struct dm_odm_t *pDM_Odm);
-
-/*  */
-/*  AP calibrate */
-/*  */
-void PHY_DigitalPredistortion_8723B(struct adapter *padapter);
-
-void _PHY_SaveADDARegisters_8723B(
-	struct adapter *padapter,
-	u32 *ADDAReg,
-	u32 *ADDABackup,
-	u32 RegisterNum
-);
-
-void _PHY_PathADDAOn_8723B(
-	struct adapter *padapter,
-	u32 *ADDAReg,
-	bool isPathAOn,
-	bool is2T
-);
-
-void _PHY_MACSettingCalibration_8723B(
-	struct adapter *padapter, u32 *MACReg, u32 *MACBackup
-);
-
-#endif /*  #ifndef __HAL_PHY_RF_8188E_H__ */
diff --git a/drivers/staging/rtl8723bs/hal/HalPwrSeqCmd.c b/drivers/staging/rtl8723bs/hal/HalPwrSeqCmd.c
deleted file mode 100644
index c254e3481cc2..000000000000
--- a/drivers/staging/rtl8723bs/hal/HalPwrSeqCmd.c
+++ /dev/null
@@ -1,144 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-/*
- * Copyright (c) Realtek Semiconductor Corp. All rights reserved.
- *
- * Module Name:
- *  HalPwrSeqCmd.c
- *
- * Abstract:
- *  Implement HW Power sequence configuration CMD handling routine for Realtek devices.
- *
- * Major Change History:
- *	When       Who               What
- *	---------- ---------------   -------------------------------
- *	2011-10-26 Lucas            Modify to be compatible with SD4-CE driver.
- *	2011-07-07 Roger            Create.
- *
- */
-#include <drv_types.h>
-#include <HalPwrSeqCmd.h>
-
-/*  */
-/*  Description: */
-/*  This routine deal with the Power Configuration CMDs parsing for RTL8723/RTL8188E Series IC. */
-/*  */
-/*  Assumption: */
-/*  We should follow specific format which was released from HW SD. */
-/*  */
-/*  2011.07.07, added by Roger. */
-/*  */
-u8 HalPwrSeqCmdParsing(
-	struct adapter *padapter,
-	u8 CutVersion,
-	u8 FabVersion,
-	u8 InterfaceType,
-	struct wlan_pwr_cfg PwrSeqCmd[]
-)
-{
-	struct wlan_pwr_cfg PwrCfgCmd;
-	u8 bPollingBit = false;
-	u32 AryIdx = 0;
-	u8 value = 0;
-	u32 offset = 0;
-	u32 pollingCount = 0; /*  polling autoload done. */
-	u32 maxPollingCnt = 5000;
-
-	do {
-		PwrCfgCmd = PwrSeqCmd[AryIdx];
-
-		/* 2 Only Handle the command whose FAB, CUT, and Interface are matched */
-		if (
-			(GET_PWR_CFG_FAB_MASK(PwrCfgCmd) & FabVersion) &&
-			(GET_PWR_CFG_CUT_MASK(PwrCfgCmd) & CutVersion) &&
-			(GET_PWR_CFG_INTF_MASK(PwrCfgCmd) & InterfaceType)
-		) {
-			switch (GET_PWR_CFG_CMD(PwrCfgCmd)) {
-			case PWR_CMD_READ:
-				break;
-
-			case PWR_CMD_WRITE:
-				offset = GET_PWR_CFG_OFFSET(PwrCfgCmd);
-
-				/*  */
-				/*  <Roger_Notes> We should deal with interface specific address mapping for some interfaces, e.g., SDIO interface */
-				/*  2011.07.07. */
-				/*  */
-				if (GET_PWR_CFG_BASE(PwrCfgCmd) == PWR_BASEADDR_SDIO) {
-					/*  Read Back SDIO Local value */
-					value = SdioLocalCmd52Read1Byte(padapter, offset);
-
-					value &= ~(GET_PWR_CFG_MASK(PwrCfgCmd));
-					value |= (
-						GET_PWR_CFG_VALUE(PwrCfgCmd) &
-						GET_PWR_CFG_MASK(PwrCfgCmd)
-					);
-
-					/*  Write Back SDIO Local value */
-					SdioLocalCmd52Write1Byte(padapter, offset, value);
-				} else {
-					/*  Read the value from system register */
-					value = rtw_read8(padapter, offset);
-
-					value &= (~(GET_PWR_CFG_MASK(PwrCfgCmd)));
-					value |= (
-						GET_PWR_CFG_VALUE(PwrCfgCmd)
-						 & GET_PWR_CFG_MASK(PwrCfgCmd)
-					);
-
-					/*  Write the value back to system register */
-					rtw_write8(padapter, offset, value);
-				}
-				break;
-
-			case PWR_CMD_POLLING:
-
-				bPollingBit = false;
-				offset = GET_PWR_CFG_OFFSET(PwrCfgCmd);
-				do {
-					if (GET_PWR_CFG_BASE(PwrCfgCmd) == PWR_BASEADDR_SDIO)
-						value = SdioLocalCmd52Read1Byte(padapter, offset);
-					else
-						value = rtw_read8(padapter, offset);
-
-					value = value & GET_PWR_CFG_MASK(PwrCfgCmd);
-					if (
-						value == (GET_PWR_CFG_VALUE(PwrCfgCmd) &
-						GET_PWR_CFG_MASK(PwrCfgCmd))
-					)
-						bPollingBit = true;
-					else
-						udelay(10);
-
-					if (pollingCount++ > maxPollingCnt)
-						return false;
-
-				} while (!bPollingBit);
-
-				break;
-
-			case PWR_CMD_DELAY:
-				if (GET_PWR_CFG_VALUE(PwrCfgCmd) == PWRSEQ_DELAY_US)
-					udelay(GET_PWR_CFG_OFFSET(PwrCfgCmd));
-				else
-					udelay(GET_PWR_CFG_OFFSET(PwrCfgCmd) * 1000);
-				break;
-
-			case PWR_CMD_END:
-				/*  When this command is parsed, end the process */
-				return true;
-
-			default:
-				break;
-			}
-		}
-
-		AryIdx++;/* Add Array Index */
-	} while (1);
-
-	return true;
-}
diff --git a/drivers/staging/rtl8723bs/hal/Mp_Precomp.h b/drivers/staging/rtl8723bs/hal/Mp_Precomp.h
deleted file mode 100644
index f08823a8dd7b..000000000000
--- a/drivers/staging/rtl8723bs/hal/Mp_Precomp.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2013 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __MP_PRECOMP_H__
-#define __MP_PRECOMP_H__
-
-#include <drv_types.h>
-#include <hal_data.h>
-
-#define BT_TMP_BUF_SIZE	100
-
-#ifdef bEnable
-#undef bEnable
-#endif
-
-#include "HalBtcOutSrc.h"
-#include "HalBtc8723b1Ant.h"
-#include "HalBtc8723b2Ant.h"
-
-#endif /*  __MP_PRECOMP_H__ */
diff --git a/drivers/staging/rtl8723bs/hal/hal_btcoex.c b/drivers/staging/rtl8723bs/hal/hal_btcoex.c
deleted file mode 100644
index 61cdc27a64ac..000000000000
--- a/drivers/staging/rtl8723bs/hal/hal_btcoex.c
+++ /dev/null
@@ -1,1303 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2013 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <hal_data.h>
-#include <hal_btcoex.h>
-#include <Mp_Precomp.h>
-
-/*		Global variables */
-
-struct btc_coexist GLBtCoexist;
-static u8 GLBtcWiFiInScanState;
-static u8 GLBtcWiFiInIQKState;
-
-/*  */
-/*		Debug related function */
-/*  */
-static u8 halbtcoutsrc_IsBtCoexistAvailable(struct btc_coexist *pBtCoexist)
-{
-	if (!pBtCoexist->bBinded || !pBtCoexist->Adapter)
-		return false;
-
-	return true;
-}
-
-static void halbtcoutsrc_LeaveLps(struct btc_coexist *pBtCoexist)
-{
-	struct adapter *padapter;
-
-	padapter = pBtCoexist->Adapter;
-
-	pBtCoexist->btInfo.bBtCtrlLps = true;
-	pBtCoexist->btInfo.bBtLpsOn = false;
-
-	rtw_btcoex_lps_leave(padapter);
-}
-
-static void halbtcoutsrc_EnterLps(struct btc_coexist *pBtCoexist)
-{
-	struct adapter *padapter;
-
-	padapter = pBtCoexist->Adapter;
-
-	pBtCoexist->btInfo.bBtCtrlLps = true;
-	pBtCoexist->btInfo.bBtLpsOn = true;
-
-	rtw_btcoex_lps_enter(padapter);
-}
-
-static void halbtcoutsrc_NormalLps(struct btc_coexist *pBtCoexist)
-{
-	struct adapter *padapter;
-
-	padapter = pBtCoexist->Adapter;
-
-	if (pBtCoexist->btInfo.bBtCtrlLps) {
-		pBtCoexist->btInfo.bBtLpsOn = false;
-		rtw_btcoex_lps_leave(padapter);
-		pBtCoexist->btInfo.bBtCtrlLps = false;
-
-		/*  recover the LPS state to the original */
-	}
-}
-
-/*
- *  Constraint:
- *   1. this function will request pwrctrl->lock
- */
-static void halbtcoutsrc_LeaveLowPower(struct btc_coexist *pBtCoexist)
-{
-	struct adapter *padapter;
-	s32 ready;
-	unsigned long stime;
-	unsigned long utime;
-	u32 timeout; /*  unit: ms */
-
-	padapter = pBtCoexist->Adapter;
-	ready = _FAIL;
-#ifdef LPS_RPWM_WAIT_MS
-	timeout = LPS_RPWM_WAIT_MS;
-#else /*  !LPS_RPWM_WAIT_MS */
-	timeout = 30;
-#endif /*  !LPS_RPWM_WAIT_MS */
-
-	stime = jiffies;
-	do {
-		ready = rtw_register_task_alive(padapter, BTCOEX_ALIVE);
-		if (ready == _SUCCESS)
-			break;
-
-		utime = jiffies_to_msecs(jiffies - stime);
-		if (utime > timeout)
-			break;
-
-		msleep(1);
-	} while (1);
-}
-
-/*
- *  Constraint:
- *   1. this function will request pwrctrl->lock
- */
-static void halbtcoutsrc_NormalLowPower(struct btc_coexist *pBtCoexist)
-{
-	struct adapter *padapter;
-
-	padapter = pBtCoexist->Adapter;
-	rtw_unregister_task_alive(padapter, BTCOEX_ALIVE);
-}
-
-static void halbtcoutsrc_DisableLowPower(struct btc_coexist *pBtCoexist, u8 bLowPwrDisable)
-{
-	pBtCoexist->btInfo.bBtDisableLowPwr = bLowPwrDisable;
-	if (bLowPwrDisable)
-		halbtcoutsrc_LeaveLowPower(pBtCoexist);		/*  leave 32k low power. */
-	else
-		halbtcoutsrc_NormalLowPower(pBtCoexist);	/*  original 32k low power behavior. */
-}
-
-static void halbtcoutsrc_AggregationCheck(struct btc_coexist *pBtCoexist)
-{
-	struct adapter *padapter;
-	bool bNeedToAct;
-
-	padapter = pBtCoexist->Adapter;
-	bNeedToAct = false;
-
-	if (pBtCoexist->btInfo.bRejectAggPkt) {
-		rtw_btcoex_reject_ap_aggregated_packet(padapter, true);
-	} else {
-		if (pBtCoexist->btInfo.bPreBtCtrlAggBufSize !=
-			pBtCoexist->btInfo.bBtCtrlAggBufSize) {
-			bNeedToAct = true;
-			pBtCoexist->btInfo.bPreBtCtrlAggBufSize = pBtCoexist->btInfo.bBtCtrlAggBufSize;
-		}
-
-		if (pBtCoexist->btInfo.bBtCtrlAggBufSize) {
-			if (pBtCoexist->btInfo.preAggBufSize !=
-				pBtCoexist->btInfo.aggBufSize){
-				bNeedToAct = true;
-			}
-			pBtCoexist->btInfo.preAggBufSize = pBtCoexist->btInfo.aggBufSize;
-		}
-
-		if (bNeedToAct) {
-			rtw_btcoex_reject_ap_aggregated_packet(padapter, true);
-			rtw_btcoex_reject_ap_aggregated_packet(padapter, false);
-		}
-	}
-}
-
-static u8 halbtcoutsrc_IsWifiBusy(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv;
-
-	pmlmepriv = &padapter->mlmepriv;
-
-	if (check_fwstate(pmlmepriv, WIFI_ASOC_STATE)) {
-		if (check_fwstate(pmlmepriv, WIFI_AP_STATE))
-			return true;
-		if (pmlmepriv->link_detect_info.busy_traffic)
-			return true;
-	}
-
-	return false;
-}
-
-static u32 _halbtcoutsrc_GetWifiLinkStatus(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv;
-	u8 bp2p;
-	u32 portConnectedStatus;
-
-	pmlmepriv = &padapter->mlmepriv;
-	bp2p = false;
-	portConnectedStatus = 0;
-
-	if (check_fwstate(pmlmepriv, WIFI_ASOC_STATE)) {
-		if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-			if (bp2p)
-				portConnectedStatus |= WIFI_P2P_GO_CONNECTED;
-			else
-				portConnectedStatus |= WIFI_AP_CONNECTED;
-		} else {
-			if (bp2p)
-				portConnectedStatus |= WIFI_P2P_GC_CONNECTED;
-			else
-				portConnectedStatus |= WIFI_STA_CONNECTED;
-		}
-	}
-
-	return portConnectedStatus;
-}
-
-static u32 halbtcoutsrc_GetWifiLinkStatus(struct btc_coexist *pBtCoexist)
-{
-	/*  */
-	/*  return value: */
-	/*  [31:16]=> connected port number */
-	/*  [15:0]=> port connected bit define */
-	/*  */
-
-	struct adapter *padapter;
-	u32 retVal;
-	u32 portConnectedStatus, numOfConnectedPort;
-
-	padapter = pBtCoexist->Adapter;
-	portConnectedStatus = 0;
-	numOfConnectedPort = 0;
-
-	retVal = _halbtcoutsrc_GetWifiLinkStatus(padapter);
-	if (retVal) {
-		portConnectedStatus |= retVal;
-		numOfConnectedPort++;
-	}
-
-	retVal = (numOfConnectedPort << 16) | portConnectedStatus;
-
-	return retVal;
-}
-
-static u32 halbtcoutsrc_GetBtPatchVer(struct btc_coexist *pBtCoexist)
-{
-	return pBtCoexist->btInfo.btRealFwVer;
-}
-
-static s32 halbtcoutsrc_GetWifiRssi(struct adapter *padapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-
-	return pHalData->dmpriv.EntryMinUndecoratedSmoothedPWDB;
-}
-
-static u8 halbtcoutsrc_GetWifiScanAPNum(struct adapter *padapter)
-{
-	struct mlme_ext_priv *pmlmeext;
-	static u8 scan_AP_num;
-
-	pmlmeext = &padapter->mlmeextpriv;
-
-	if (!GLBtcWiFiInScanState) {
-		if (pmlmeext->sitesurvey_res.bss_cnt > 0xFF)
-			scan_AP_num = 0xFF;
-		else
-			scan_AP_num = (u8)pmlmeext->sitesurvey_res.bss_cnt;
-	}
-
-	return scan_AP_num;
-}
-
-static u8 halbtcoutsrc_Get(void *pBtcContext, u8 getType, void *pOutBuf)
-{
-	struct btc_coexist *pBtCoexist;
-	struct adapter *padapter;
-	struct hal_com_data *pHalData;
-	struct mlme_ext_priv *mlmeext;
-	u8 *pu8;
-	s32 *pS4Tmp;
-	u32 *pU4Tmp;
-	u8 ret;
-
-	pBtCoexist = (struct btc_coexist *)pBtcContext;
-	if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist))
-		return false;
-
-	padapter = pBtCoexist->Adapter;
-	pHalData = GET_HAL_DATA(padapter);
-	mlmeext = &padapter->mlmeextpriv;
-	pu8 = pOutBuf;
-	pS4Tmp = pOutBuf;
-	pU4Tmp = pOutBuf;
-	ret = true;
-
-	switch (getType) {
-	case BTC_GET_BL_HS_OPERATION:
-		*pu8 = false;
-		ret = false;
-		break;
-
-	case BTC_GET_BL_HS_CONNECTING:
-		*pu8 = false;
-		ret = false;
-		break;
-
-	case BTC_GET_BL_WIFI_CONNECTED:
-		*pu8 = check_fwstate(&padapter->mlmepriv, WIFI_ASOC_STATE);
-		break;
-
-	case BTC_GET_BL_WIFI_BUSY:
-		*pu8 = halbtcoutsrc_IsWifiBusy(padapter);
-		break;
-
-	case BTC_GET_BL_WIFI_SCAN:
-		/* Use the value of the new variable GLBtcWiFiInScanState to judge whether WiFi is in scan state or not, since the originally used flag
-			WIFI_SITE_MONITOR in fwstate may not be cleared in time */
-		*pu8 = GLBtcWiFiInScanState;
-		break;
-
-	case BTC_GET_BL_WIFI_LINK:
-		*pu8 = check_fwstate(&padapter->mlmepriv, WIFI_UNDER_LINKING);
-		break;
-
-	case BTC_GET_BL_WIFI_ROAM:
-		*pu8 = check_fwstate(&padapter->mlmepriv, WIFI_UNDER_LINKING);
-		break;
-
-	case BTC_GET_BL_WIFI_4_WAY_PROGRESS:
-		*pu8 = false;
-		break;
-
-	case BTC_GET_BL_WIFI_AP_MODE_ENABLE:
-		*pu8 = check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE);
-		break;
-
-	case BTC_GET_BL_WIFI_ENABLE_ENCRYPTION:
-		*pu8 = padapter->securitypriv.dot11_privacy_algrthm != 0;
-		break;
-
-	case BTC_GET_BL_WIFI_UNDER_B_MODE:
-		if (mlmeext->cur_wireless_mode == WIRELESS_11B)
-			*pu8 = true;
-		else
-			*pu8 = false;
-		break;
-
-	case BTC_GET_BL_WIFI_IS_IN_MP_MODE:
-		*pu8 = false;
-		break;
-
-	case BTC_GET_BL_EXT_SWITCH:
-		*pu8 = false;
-		break;
-
-	case BTC_GET_S4_WIFI_RSSI:
-		*pS4Tmp = halbtcoutsrc_GetWifiRssi(padapter);
-		break;
-
-	case BTC_GET_S4_HS_RSSI:
-		*pS4Tmp = 0;
-		ret = false;
-		break;
-
-	case BTC_GET_U4_WIFI_BW:
-		if (is_legacy_only(mlmeext->cur_wireless_mode))
-			*pU4Tmp = BTC_WIFI_BW_LEGACY;
-		else if (pHalData->CurrentChannelBW == CHANNEL_WIDTH_20)
-			*pU4Tmp = BTC_WIFI_BW_HT20;
-		else
-			*pU4Tmp = BTC_WIFI_BW_HT40;
-		break;
-
-	case BTC_GET_U4_WIFI_TRAFFIC_DIRECTION:
-		{
-			struct rt_link_detect_t *plinkinfo;
-
-			plinkinfo = &padapter->mlmepriv.link_detect_info;
-
-			if (plinkinfo->num_tx_ok_in_period > plinkinfo->num_rx_ok_in_period)
-				*pU4Tmp = BTC_WIFI_TRAFFIC_TX;
-			else
-				*pU4Tmp = BTC_WIFI_TRAFFIC_RX;
-		}
-		break;
-
-	case BTC_GET_U4_WIFI_FW_VER:
-		*pU4Tmp = pHalData->FirmwareVersion << 16;
-		*pU4Tmp |= pHalData->FirmwareSubVersion;
-		break;
-
-	case BTC_GET_U4_WIFI_LINK_STATUS:
-		*pU4Tmp = halbtcoutsrc_GetWifiLinkStatus(pBtCoexist);
-		break;
-
-	case BTC_GET_U4_BT_PATCH_VER:
-		*pU4Tmp = halbtcoutsrc_GetBtPatchVer(pBtCoexist);
-		break;
-
-	case BTC_GET_U1_WIFI_DOT11_CHNL:
-		*pu8 = padapter->mlmeextpriv.cur_channel;
-		break;
-
-	case BTC_GET_U1_WIFI_CENTRAL_CHNL:
-		*pu8 = pHalData->CurrentChannel;
-		break;
-
-	case BTC_GET_U1_WIFI_HS_CHNL:
-		*pu8 = 0;
-		ret = false;
-		break;
-
-	case BTC_GET_U1_MAC_PHY_MODE:
-		*pu8 = BTC_SMSP;
-		break;
-
-	case BTC_GET_U1_AP_NUM:
-		*pu8 = halbtcoutsrc_GetWifiScanAPNum(padapter);
-		break;
-
-	/* 1Ant =========== */
-	case BTC_GET_U1_LPS_MODE:
-		*pu8 = padapter->dvobj->pwrctl_priv.pwr_mode;
-		break;
-
-	default:
-		ret = false;
-		break;
-	}
-
-	return ret;
-}
-
-static u8 halbtcoutsrc_Set(void *pBtcContext, u8 setType, void *pInBuf)
-{
-	struct btc_coexist *pBtCoexist;
-	struct adapter *padapter;
-	u8 *pu8;
-	u32 *pU4Tmp;
-	u8 ret;
-
-	pBtCoexist = (struct btc_coexist *)pBtcContext;
-	padapter = pBtCoexist->Adapter;
-	pu8 = pInBuf;
-	pU4Tmp = pInBuf;
-	ret = true;
-
-	if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist))
-		return false;
-
-	switch (setType) {
-	/*  set some u8 type variables. */
-	case BTC_SET_BL_BT_DISABLE:
-		pBtCoexist->btInfo.bBtDisabled = *pu8;
-		break;
-
-	case BTC_SET_BL_BT_TRAFFIC_BUSY:
-		pBtCoexist->btInfo.bBtBusy = *pu8;
-		break;
-
-	case BTC_SET_BL_BT_LIMITED_DIG:
-		pBtCoexist->btInfo.bLimitedDig = *pu8;
-		break;
-
-	case BTC_SET_BL_FORCE_TO_ROAM:
-		pBtCoexist->btInfo.bForceToRoam = *pu8;
-		break;
-
-	case BTC_SET_BL_TO_REJ_AP_AGG_PKT:
-		pBtCoexist->btInfo.bRejectAggPkt = *pu8;
-		break;
-
-	case BTC_SET_BL_BT_CTRL_AGG_SIZE:
-		pBtCoexist->btInfo.bBtCtrlAggBufSize = *pu8;
-		break;
-
-	case BTC_SET_BL_INC_SCAN_DEV_NUM:
-		pBtCoexist->btInfo.bIncreaseScanDevNum = *pu8;
-		break;
-
-	case BTC_SET_BL_BT_TX_RX_MASK:
-		pBtCoexist->btInfo.bBtTxRxMask = *pu8;
-		break;
-
-	/*  set some u8 type variables. */
-	case BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON:
-		pBtCoexist->btInfo.rssiAdjustForAgcTableOn = *pu8;
-		break;
-
-	case BTC_SET_U1_AGG_BUF_SIZE:
-		pBtCoexist->btInfo.aggBufSize = *pu8;
-		break;
-
-	/*  the following are some action which will be triggered */
-	case BTC_SET_ACT_GET_BT_RSSI:
-		ret = false;
-		break;
-
-	case BTC_SET_ACT_AGGREGATE_CTRL:
-		halbtcoutsrc_AggregationCheck(pBtCoexist);
-		break;
-
-	/* 1Ant =========== */
-	/*  set some u8 type variables. */
-	case BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE:
-		pBtCoexist->btInfo.rssiAdjustFor1AntCoexType = *pu8;
-		break;
-
-	case BTC_SET_U1_LPS_VAL:
-		pBtCoexist->btInfo.lpsVal = *pu8;
-		break;
-
-	case BTC_SET_U1_RPWM_VAL:
-		pBtCoexist->btInfo.rpwmVal = *pu8;
-		break;
-
-	/*  the following are some action which will be triggered */
-	case BTC_SET_ACT_LEAVE_LPS:
-		halbtcoutsrc_LeaveLps(pBtCoexist);
-		break;
-
-	case BTC_SET_ACT_ENTER_LPS:
-		halbtcoutsrc_EnterLps(pBtCoexist);
-		break;
-
-	case BTC_SET_ACT_NORMAL_LPS:
-		halbtcoutsrc_NormalLps(pBtCoexist);
-		break;
-
-	case BTC_SET_ACT_DISABLE_LOW_POWER:
-		halbtcoutsrc_DisableLowPower(pBtCoexist, *pu8);
-		break;
-
-	case BTC_SET_ACT_UPDATE_RAMASK:
-		pBtCoexist->btInfo.raMask = *pU4Tmp;
-
-		if (check_fwstate(&padapter->mlmepriv, WIFI_ASOC_STATE)) {
-			struct sta_info *psta;
-			struct wlan_bssid_ex *cur_network;
-
-			cur_network = &padapter->mlmeextpriv.mlmext_info.network;
-			psta = rtw_get_stainfo(&padapter->stapriv, cur_network->mac_address);
-			rtw_hal_update_ra_mask(psta, 0);
-		}
-		break;
-
-	case BTC_SET_ACT_SEND_MIMO_PS:
-		ret = false;
-		break;
-
-	case BTC_SET_ACT_CTRL_BT_INFO:
-		ret = false;
-		break;
-
-	case BTC_SET_ACT_CTRL_BT_COEX:
-		ret = false;
-		break;
-	case BTC_SET_ACT_CTRL_8723B_ANT:
-		ret = false;
-		break;
-	/*  */
-	default:
-		ret = false;
-		break;
-	}
-
-	return ret;
-}
-
-/*  */
-/*		IO related function */
-/*  */
-static u8 halbtcoutsrc_Read1Byte(void *pBtcContext, u32 RegAddr)
-{
-	struct btc_coexist *pBtCoexist;
-	struct adapter *padapter;
-
-	pBtCoexist = (struct btc_coexist *)pBtcContext;
-	padapter = pBtCoexist->Adapter;
-
-	return rtw_read8(padapter, RegAddr);
-}
-
-static u16 halbtcoutsrc_Read2Byte(void *pBtcContext, u32 RegAddr)
-{
-	struct btc_coexist *pBtCoexist;
-	struct adapter *padapter;
-
-	pBtCoexist = (struct btc_coexist *)pBtcContext;
-	padapter = pBtCoexist->Adapter;
-
-	return	rtw_read16(padapter, RegAddr);
-}
-
-static u32 halbtcoutsrc_Read4Byte(void *pBtcContext, u32 RegAddr)
-{
-	struct btc_coexist *pBtCoexist;
-	struct adapter *padapter;
-
-	pBtCoexist = (struct btc_coexist *)pBtcContext;
-	padapter = pBtCoexist->Adapter;
-
-	return	rtw_read32(padapter, RegAddr);
-}
-
-static void halbtcoutsrc_Write1Byte(void *pBtcContext, u32 RegAddr, u8 Data)
-{
-	struct btc_coexist *pBtCoexist;
-	struct adapter *padapter;
-
-	pBtCoexist = (struct btc_coexist *)pBtcContext;
-	padapter = pBtCoexist->Adapter;
-
-	rtw_write8(padapter, RegAddr, Data);
-}
-
-static void halbtcoutsrc_BitMaskWrite1Byte(void *pBtcContext, u32 regAddr, u8 bitMask, u8 data1b)
-{
-	struct btc_coexist *pBtCoexist;
-	struct adapter *padapter;
-	u8 originalValue, bitShift;
-	u8 i;
-
-	pBtCoexist = (struct btc_coexist *)pBtcContext;
-	padapter = pBtCoexist->Adapter;
-	originalValue = 0;
-	bitShift = 0;
-
-	if (bitMask != 0xFF) {
-		originalValue = rtw_read8(padapter, regAddr);
-
-		for (i = 0; i <= 7; i++) {
-			if ((bitMask >> i) & 0x1)
-				break;
-		}
-		bitShift = i;
-
-		data1b = (originalValue & ~bitMask) | ((data1b << bitShift) & bitMask);
-	}
-
-	rtw_write8(padapter, regAddr, data1b);
-}
-
-static void halbtcoutsrc_Write2Byte(void *pBtcContext, u32 RegAddr, u16 Data)
-{
-	struct btc_coexist *pBtCoexist;
-	struct adapter *padapter;
-
-	pBtCoexist = (struct btc_coexist *)pBtcContext;
-	padapter = pBtCoexist->Adapter;
-
-	rtw_write16(padapter, RegAddr, Data);
-}
-
-static void halbtcoutsrc_Write4Byte(void *pBtcContext, u32 RegAddr, u32 Data)
-{
-	struct btc_coexist *pBtCoexist;
-	struct adapter *padapter;
-
-	pBtCoexist = (struct btc_coexist *)pBtcContext;
-	padapter = pBtCoexist->Adapter;
-
-	rtw_write32(padapter, RegAddr, Data);
-}
-
-static void halbtcoutsrc_WriteLocalReg1Byte(void *pBtcContext, u32 RegAddr, u8 Data)
-{
-	struct btc_coexist *pBtCoexist = (struct btc_coexist *)pBtcContext;
-	struct adapter *Adapter = pBtCoexist->Adapter;
-
-	if (pBtCoexist->chipInterface == BTC_INTF_SDIO)
-		rtw_write8(Adapter, SDIO_LOCAL_BASE | RegAddr, Data);
-	else
-		rtw_write8(Adapter, RegAddr, Data);
-}
-
-static void halbtcoutsrc_SetBbReg(void *pBtcContext, u32 RegAddr, u32 BitMask, u32 Data)
-{
-	struct btc_coexist *pBtCoexist;
-	struct adapter *padapter;
-
-	pBtCoexist = (struct btc_coexist *)pBtcContext;
-	padapter = pBtCoexist->Adapter;
-
-	PHY_SetBBReg(padapter, RegAddr, BitMask, Data);
-}
-
-static u32 halbtcoutsrc_GetBbReg(void *pBtcContext, u32 RegAddr, u32 BitMask)
-{
-	struct btc_coexist *pBtCoexist;
-	struct adapter *padapter;
-
-	pBtCoexist = (struct btc_coexist *)pBtcContext;
-	padapter = pBtCoexist->Adapter;
-
-	return PHY_QueryBBReg(padapter, RegAddr, BitMask);
-}
-
-static void halbtcoutsrc_SetRfReg(void *pBtcContext, u8 eRFPath, u32 RegAddr, u32 BitMask, u32 Data)
-{
-	struct btc_coexist *pBtCoexist;
-	struct adapter *padapter;
-
-	pBtCoexist = (struct btc_coexist *)pBtcContext;
-	padapter = pBtCoexist->Adapter;
-
-	PHY_SetRFReg(padapter, eRFPath, RegAddr, BitMask, Data);
-}
-
-static u32 halbtcoutsrc_GetRfReg(void *pBtcContext, u8 eRFPath, u32 RegAddr, u32 BitMask)
-{
-	struct btc_coexist *pBtCoexist;
-	struct adapter *padapter;
-
-	pBtCoexist = (struct btc_coexist *)pBtcContext;
-	padapter = pBtCoexist->Adapter;
-
-	return PHY_QueryRFReg(padapter, eRFPath, RegAddr, BitMask);
-}
-
-static void halbtcoutsrc_SetBtReg(void *pBtcContext, u8 RegType, u32 RegAddr, u32 Data)
-{
-	struct btc_coexist *pBtCoexist;
-	struct adapter *padapter;
-	u8 CmdBuffer1[4] = {0};
-	u8 CmdBuffer2[4] = {0};
-	u8 *AddrToSet = (u8 *)&RegAddr;
-	u8 *ValueToSet = (u8 *)&Data;
-	u8 OperVer = 0;
-	u8 ReqNum = 0;
-
-	pBtCoexist = (struct btc_coexist *)pBtcContext;
-	padapter = pBtCoexist->Adapter;
-
-	CmdBuffer1[0] |= (OperVer & 0x0f);						/* Set OperVer */
-	CmdBuffer1[0] |= ((ReqNum << 4) & 0xf0);				/* Set ReqNum */
-	CmdBuffer1[1] = 0x0d;									/* Set OpCode to BT_LO_OP_WRITE_REG_VALUE */
-	CmdBuffer1[2] = ValueToSet[0];							/* Set WriteRegValue */
-	rtw_hal_fill_h2c_cmd(padapter, 0x67, 4, &(CmdBuffer1[0]));
-
-	msleep(200);
-	ReqNum++;
-
-	CmdBuffer2[0] |= (OperVer & 0x0f);						/* Set OperVer */
-	CmdBuffer2[0] |= ((ReqNum << 4) & 0xf0);				/* Set ReqNum */
-	CmdBuffer2[1] = 0x0c;									/* Set OpCode of BT_LO_OP_WRITE_REG_ADDR */
-	CmdBuffer2[3] = AddrToSet[0];							/* Set WriteRegAddr */
-	rtw_hal_fill_h2c_cmd(padapter, 0x67, 4, &(CmdBuffer2[0]));
-}
-
-static u32 halbtcoutsrc_GetBtReg(void *pBtcContext, u8 RegType, u32 RegAddr)
-{
-	/* To be implemented. Always return 0 temporarily */
-	return 0;
-}
-
-static void halbtcoutsrc_FillH2cCmd(void *pBtcContext, u8 elementId, u32 cmdLen, u8 *pCmdBuffer)
-{
-	struct btc_coexist *pBtCoexist;
-	struct adapter *padapter;
-
-	pBtCoexist = (struct btc_coexist *)pBtcContext;
-	padapter = pBtCoexist->Adapter;
-
-	rtw_hal_fill_h2c_cmd(padapter, elementId, cmdLen, pCmdBuffer);
-}
-
-/*  */
-/*		Extern functions called by other module */
-/*  */
-static u8 EXhalbtcoutsrc_BindBtCoexWithAdapter(void *padapter)
-{
-	struct btc_coexist *pBtCoexist = &GLBtCoexist;
-
-	if (pBtCoexist->bBinded)
-		return false;
-	else
-		pBtCoexist->bBinded = true;
-
-	pBtCoexist->statistics.cntBind++;
-
-	pBtCoexist->Adapter = padapter;
-
-	pBtCoexist->stackInfo.bProfileNotified = false;
-
-	pBtCoexist->btInfo.bBtCtrlAggBufSize = false;
-	pBtCoexist->btInfo.aggBufSize = 5;
-
-	pBtCoexist->btInfo.bIncreaseScanDevNum = false;
-
-	/*  set default antenna position to main  port */
-	pBtCoexist->boardInfo.btdmAntPos = BTC_ANTENNA_AT_MAIN_PORT;
-
-	return true;
-}
-
-void hal_btcoex_Initialize(void *padapter)
-{
-	struct btc_coexist *pBtCoexist;
-
-	memset(&GLBtCoexist, 0, sizeof(GLBtCoexist));
-
-	pBtCoexist = &GLBtCoexist;
-
-	/* pBtCoexist->statistics.cntBind++; */
-
-	pBtCoexist->chipInterface = BTC_INTF_SDIO;
-
-	EXhalbtcoutsrc_BindBtCoexWithAdapter(padapter);
-
-	pBtCoexist->fBtcRead1Byte = halbtcoutsrc_Read1Byte;
-	pBtCoexist->fBtcWrite1Byte = halbtcoutsrc_Write1Byte;
-	pBtCoexist->fBtcWrite1ByteBitMask = halbtcoutsrc_BitMaskWrite1Byte;
-	pBtCoexist->fBtcRead2Byte = halbtcoutsrc_Read2Byte;
-	pBtCoexist->fBtcWrite2Byte = halbtcoutsrc_Write2Byte;
-	pBtCoexist->fBtcRead4Byte = halbtcoutsrc_Read4Byte;
-	pBtCoexist->fBtcWrite4Byte = halbtcoutsrc_Write4Byte;
-	pBtCoexist->fBtcWriteLocalReg1Byte = halbtcoutsrc_WriteLocalReg1Byte;
-
-	pBtCoexist->fBtcSetBbReg = halbtcoutsrc_SetBbReg;
-	pBtCoexist->fBtcGetBbReg = halbtcoutsrc_GetBbReg;
-
-	pBtCoexist->fBtcSetRfReg = halbtcoutsrc_SetRfReg;
-	pBtCoexist->fBtcGetRfReg = halbtcoutsrc_GetRfReg;
-
-	pBtCoexist->fBtcFillH2c = halbtcoutsrc_FillH2cCmd;
-
-	pBtCoexist->fBtcGet = halbtcoutsrc_Get;
-	pBtCoexist->fBtcSet = halbtcoutsrc_Set;
-	pBtCoexist->fBtcGetBtReg = halbtcoutsrc_GetBtReg;
-	pBtCoexist->fBtcSetBtReg = halbtcoutsrc_SetBtReg;
-
-	pBtCoexist->boardInfo.singleAntPath = 0;
-
-	GLBtcWiFiInScanState = false;
-
-	GLBtcWiFiInIQKState = false;
-}
-
-void EXhalbtcoutsrc_PowerOnSetting(struct btc_coexist *pBtCoexist)
-{
-	if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist))
-		return;
-
-	/* Power on setting function is only added in 8723B currently */
-	if (pBtCoexist->boardInfo.btdmAntNum == 2)
-		EXhalbtc8723b2ant_PowerOnSetting(pBtCoexist);
-	else if (pBtCoexist->boardInfo.btdmAntNum == 1)
-		EXhalbtc8723b1ant_PowerOnSetting(pBtCoexist);
-}
-
-void EXhalbtcoutsrc_InitHwConfig(struct btc_coexist *pBtCoexist, u8 bWifiOnly)
-{
-	if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist))
-		return;
-
-	pBtCoexist->statistics.cntInitHwConfig++;
-
-	if (pBtCoexist->boardInfo.btdmAntNum == 2)
-		EXhalbtc8723b2ant_InitHwConfig(pBtCoexist, bWifiOnly);
-	else if (pBtCoexist->boardInfo.btdmAntNum == 1)
-		EXhalbtc8723b1ant_InitHwConfig(pBtCoexist, bWifiOnly);
-}
-
-void EXhalbtcoutsrc_InitCoexDm(struct btc_coexist *pBtCoexist)
-{
-	if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist))
-		return;
-
-	pBtCoexist->statistics.cntInitCoexDm++;
-
-	if (pBtCoexist->boardInfo.btdmAntNum == 2)
-		EXhalbtc8723b2ant_InitCoexDm(pBtCoexist);
-	else if (pBtCoexist->boardInfo.btdmAntNum == 1)
-		EXhalbtc8723b1ant_InitCoexDm(pBtCoexist);
-
-	pBtCoexist->bInitilized = true;
-}
-
-void EXhalbtcoutsrc_IpsNotify(struct btc_coexist *pBtCoexist, u8 type)
-{
-	u8 ipsType;
-
-	if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist))
-		return;
-
-	pBtCoexist->statistics.cntIpsNotify++;
-	if (pBtCoexist->bManualControl)
-		return;
-
-	if (type == IPS_NONE)
-		ipsType = BTC_IPS_LEAVE;
-	else
-		ipsType = BTC_IPS_ENTER;
-
-	/*  All notify is called in cmd thread, don't need to leave low power again */
-/* 	halbtcoutsrc_LeaveLowPower(pBtCoexist); */
-
-	if (pBtCoexist->boardInfo.btdmAntNum == 2)
-		EXhalbtc8723b2ant_IpsNotify(pBtCoexist, ipsType);
-	else if (pBtCoexist->boardInfo.btdmAntNum == 1)
-		EXhalbtc8723b1ant_IpsNotify(pBtCoexist, ipsType);
-
-/* 	halbtcoutsrc_NormalLowPower(pBtCoexist); */
-}
-
-void EXhalbtcoutsrc_LpsNotify(struct btc_coexist *pBtCoexist, u8 type)
-{
-	u8 lpsType;
-
-	if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist))
-		return;
-
-	pBtCoexist->statistics.cntLpsNotify++;
-	if (pBtCoexist->bManualControl)
-		return;
-
-	if (type == PS_MODE_ACTIVE)
-		lpsType = BTC_LPS_DISABLE;
-	else
-		lpsType = BTC_LPS_ENABLE;
-
-	if (pBtCoexist->boardInfo.btdmAntNum == 2)
-		EXhalbtc8723b2ant_LpsNotify(pBtCoexist, lpsType);
-	else if (pBtCoexist->boardInfo.btdmAntNum == 1)
-		EXhalbtc8723b1ant_LpsNotify(pBtCoexist, lpsType);
-}
-
-void EXhalbtcoutsrc_ScanNotify(struct btc_coexist *pBtCoexist, u8 type)
-{
-	u8 scanType;
-
-	if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist))
-		return;
-	pBtCoexist->statistics.cntScanNotify++;
-	if (pBtCoexist->bManualControl)
-		return;
-
-	if (type) {
-		scanType = BTC_SCAN_START;
-		GLBtcWiFiInScanState = true;
-	} else {
-		scanType = BTC_SCAN_FINISH;
-		GLBtcWiFiInScanState = false;
-	}
-
-	/*  All notify is called in cmd thread, don't need to leave low power again */
-/* 	halbtcoutsrc_LeaveLowPower(pBtCoexist); */
-
-	if (pBtCoexist->boardInfo.btdmAntNum == 2)
-		EXhalbtc8723b2ant_ScanNotify(pBtCoexist, scanType);
-	else if (pBtCoexist->boardInfo.btdmAntNum == 1)
-		EXhalbtc8723b1ant_ScanNotify(pBtCoexist, scanType);
-
-/* 	halbtcoutsrc_NormalLowPower(pBtCoexist); */
-}
-
-void EXhalbtcoutsrc_ConnectNotify(struct btc_coexist *pBtCoexist, u8 action)
-{
-	u8 assoType;
-
-	if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist))
-		return;
-	pBtCoexist->statistics.cntConnectNotify++;
-	if (pBtCoexist->bManualControl)
-		return;
-
-	if (action)
-		assoType = BTC_ASSOCIATE_START;
-	else
-		assoType = BTC_ASSOCIATE_FINISH;
-
-	/*  All notify is called in cmd thread, don't need to leave low power again */
-/* 	halbtcoutsrc_LeaveLowPower(pBtCoexist); */
-
-	if (pBtCoexist->boardInfo.btdmAntNum == 2)
-		EXhalbtc8723b2ant_ConnectNotify(pBtCoexist, assoType);
-	else if (pBtCoexist->boardInfo.btdmAntNum == 1)
-		EXhalbtc8723b1ant_ConnectNotify(pBtCoexist, assoType);
-
-/* 	halbtcoutsrc_NormalLowPower(pBtCoexist); */
-}
-
-void EXhalbtcoutsrc_MediaStatusNotify(struct btc_coexist *pBtCoexist, enum
-	rt_media_status mediaStatus)
-{
-	u8 mStatus;
-
-	if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist))
-		return;
-
-	pBtCoexist->statistics.cntMediaStatusNotify++;
-	if (pBtCoexist->bManualControl)
-		return;
-
-	if (mediaStatus == RT_MEDIA_CONNECT)
-		mStatus = BTC_MEDIA_CONNECT;
-	else
-		mStatus = BTC_MEDIA_DISCONNECT;
-
-	/*  All notify is called in cmd thread, don't need to leave low power again */
-/* 	halbtcoutsrc_LeaveLowPower(pBtCoexist); */
-
-	if (pBtCoexist->boardInfo.btdmAntNum == 2)
-		EXhalbtc8723b2ant_MediaStatusNotify(pBtCoexist, mStatus);
-	else if (pBtCoexist->boardInfo.btdmAntNum == 1)
-		EXhalbtc8723b1ant_MediaStatusNotify(pBtCoexist, mStatus);
-
-/* 	halbtcoutsrc_NormalLowPower(pBtCoexist); */
-}
-
-void EXhalbtcoutsrc_SpecialPacketNotify(struct btc_coexist *pBtCoexist, u8 pktType)
-{
-	u8 packetType;
-
-	if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist))
-		return;
-	pBtCoexist->statistics.cntSpecialPacketNotify++;
-	if (pBtCoexist->bManualControl)
-		return;
-
-	if (pktType == PACKET_DHCP) {
-		packetType = BTC_PACKET_DHCP;
-	} else if (pktType == PACKET_EAPOL) {
-		packetType = BTC_PACKET_EAPOL;
-	} else if (pktType == PACKET_ARP) {
-		packetType = BTC_PACKET_ARP;
-	} else {
-		return;
-	}
-
-	/*  All notify is called in cmd thread, don't need to leave low power again */
-/* 	halbtcoutsrc_LeaveLowPower(pBtCoexist); */
-
-	if (pBtCoexist->boardInfo.btdmAntNum == 2)
-		EXhalbtc8723b2ant_SpecialPacketNotify(pBtCoexist, packetType);
-	else if (pBtCoexist->boardInfo.btdmAntNum == 1)
-		EXhalbtc8723b1ant_SpecialPacketNotify(pBtCoexist, packetType);
-
-/* 	halbtcoutsrc_NormalLowPower(pBtCoexist); */
-}
-
-void EXhalbtcoutsrc_BtInfoNotify(struct btc_coexist *pBtCoexist, u8 *tmpBuf, u8 length)
-{
-	if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist))
-		return;
-
-	pBtCoexist->statistics.cntBtInfoNotify++;
-
-	/*  All notify is called in cmd thread, don't need to leave low power again */
-/* 	halbtcoutsrc_LeaveLowPower(pBtCoexist); */
-
-	if (pBtCoexist->boardInfo.btdmAntNum == 2)
-		EXhalbtc8723b2ant_BtInfoNotify(pBtCoexist, tmpBuf, length);
-	else if (pBtCoexist->boardInfo.btdmAntNum == 1)
-		EXhalbtc8723b1ant_BtInfoNotify(pBtCoexist, tmpBuf, length);
-
-/* 	halbtcoutsrc_NormalLowPower(pBtCoexist); */
-}
-
-void EXhalbtcoutsrc_HaltNotify(struct btc_coexist *pBtCoexist)
-{
-	if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist))
-		return;
-
-	if (pBtCoexist->boardInfo.btdmAntNum == 2)
-		EXhalbtc8723b2ant_HaltNotify(pBtCoexist);
-	else if (pBtCoexist->boardInfo.btdmAntNum == 1)
-		EXhalbtc8723b1ant_HaltNotify(pBtCoexist);
-
-	pBtCoexist->bBinded = false;
-}
-
-void EXhalbtcoutsrc_PnpNotify(struct btc_coexist *pBtCoexist, u8 pnpState)
-{
-	if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist))
-		return;
-
-	/*  */
-	/*  currently only 1ant we have to do the notification, */
-	/*  once pnp is notified to sleep state, we have to leave LPS that we can sleep normally. */
-	/*  */
-
-	if (pBtCoexist->boardInfo.btdmAntNum == 1)
-		EXhalbtc8723b1ant_PnpNotify(pBtCoexist, pnpState);
-	else if (pBtCoexist->boardInfo.btdmAntNum == 2)
-		EXhalbtc8723b2ant_PnpNotify(pBtCoexist, pnpState);
-}
-
-void EXhalbtcoutsrc_Periodical(struct btc_coexist *pBtCoexist)
-{
-	if (!halbtcoutsrc_IsBtCoexistAvailable(pBtCoexist))
-		return;
-	pBtCoexist->statistics.cntPeriodical++;
-
-	/*  Periodical should be called in cmd thread, */
-	/*  don't need to leave low power again */
-/* 	halbtcoutsrc_LeaveLowPower(pBtCoexist); */
-
-	if (pBtCoexist->boardInfo.btdmAntNum == 2)
-		EXhalbtc8723b2ant_Periodical(pBtCoexist);
-	else if (pBtCoexist->boardInfo.btdmAntNum == 1)
-		EXhalbtc8723b1ant_Periodical(pBtCoexist);
-
-/* 	halbtcoutsrc_NormalLowPower(pBtCoexist); */
-}
-
-void EXhalbtcoutsrc_SetAntNum(u8 type, u8 antNum)
-{
-	if (type == BT_COEX_ANT_TYPE_PG) {
-		GLBtCoexist.boardInfo.pgAntNum = antNum;
-		GLBtCoexist.boardInfo.btdmAntNum = antNum;
-	} else if (type == BT_COEX_ANT_TYPE_ANTDIV) {
-		GLBtCoexist.boardInfo.btdmAntNum = antNum;
-		/* GLBtCoexist.boardInfo.btdmAntPos = BTC_ANTENNA_AT_MAIN_PORT; */
-	} else if (type == BT_COEX_ANT_TYPE_DETECTED) {
-		GLBtCoexist.boardInfo.btdmAntNum = antNum;
-		/* GLBtCoexist.boardInfo.btdmAntPos = BTC_ANTENNA_AT_MAIN_PORT; */
-	}
-}
-
-/*  */
-/*  Currently used by 8723b only, S0 or S1 */
-/*  */
-void EXhalbtcoutsrc_SetSingleAntPath(u8 singleAntPath)
-{
-	GLBtCoexist.boardInfo.singleAntPath = singleAntPath;
-}
-
-/*
- * Description:
- *Run BT-Coexist mechanism or not
- *
- */
-void hal_btcoex_SetBTCoexist(struct adapter *padapter, u8 bBtExist)
-{
-	struct hal_com_data *pHalData;
-
-	pHalData = GET_HAL_DATA(padapter);
-	pHalData->bt_coexist.bBtExist = bBtExist;
-}
-
-/*
- * Dewcription:
- *Check is co-exist mechanism enabled or not
- *
- * Return:
- *true	Enable BT co-exist mechanism
- *false	Disable BT co-exist mechanism
- */
-bool hal_btcoex_IsBtExist(struct adapter *padapter)
-{
-	struct hal_com_data *pHalData;
-
-	pHalData = GET_HAL_DATA(padapter);
-	return pHalData->bt_coexist.bBtExist;
-}
-
-bool hal_btcoex_IsBtDisabled(struct adapter *padapter)
-{
-	if (!hal_btcoex_IsBtExist(padapter))
-		return true;
-
-	if (GLBtCoexist.btInfo.bBtDisabled)
-		return true;
-	else
-		return false;
-}
-
-void hal_btcoex_SetPgAntNum(struct adapter *padapter, u8 antNum)
-{
-	struct hal_com_data *pHalData;
-
-	pHalData = GET_HAL_DATA(padapter);
-
-	pHalData->bt_coexist.btTotalAntNum = antNum;
-	EXhalbtcoutsrc_SetAntNum(BT_COEX_ANT_TYPE_PG, antNum);
-}
-
-void hal_btcoex_SetSingleAntPath(struct adapter *padapter, u8 singleAntPath)
-{
-	EXhalbtcoutsrc_SetSingleAntPath(singleAntPath);
-}
-
-void hal_btcoex_PowerOnSetting(struct adapter *padapter)
-{
-	EXhalbtcoutsrc_PowerOnSetting(&GLBtCoexist);
-}
-
-void hal_btcoex_InitHwConfig(struct adapter *padapter, u8 bWifiOnly)
-{
-	if (!hal_btcoex_IsBtExist(padapter))
-		return;
-
-	EXhalbtcoutsrc_InitHwConfig(&GLBtCoexist, bWifiOnly);
-	EXhalbtcoutsrc_InitCoexDm(&GLBtCoexist);
-}
-
-void hal_btcoex_IpsNotify(struct adapter *padapter, u8 type)
-{
-	EXhalbtcoutsrc_IpsNotify(&GLBtCoexist, type);
-}
-
-void hal_btcoex_LpsNotify(struct adapter *padapter, u8 type)
-{
-	EXhalbtcoutsrc_LpsNotify(&GLBtCoexist, type);
-}
-
-void hal_btcoex_ScanNotify(struct adapter *padapter, u8 type)
-{
-	EXhalbtcoutsrc_ScanNotify(&GLBtCoexist, type);
-}
-
-void hal_btcoex_ConnectNotify(struct adapter *padapter, u8 action)
-{
-	EXhalbtcoutsrc_ConnectNotify(&GLBtCoexist, action);
-}
-
-void hal_btcoex_MediaStatusNotify(struct adapter *padapter, u8 mediaStatus)
-{
-	EXhalbtcoutsrc_MediaStatusNotify(&GLBtCoexist, mediaStatus);
-}
-
-void hal_btcoex_SpecialPacketNotify(struct adapter *padapter, u8 pktType)
-{
-	EXhalbtcoutsrc_SpecialPacketNotify(&GLBtCoexist, pktType);
-}
-
-void hal_btcoex_IQKNotify(struct adapter *padapter, u8 state)
-{
-	GLBtcWiFiInIQKState = state;
-}
-
-void hal_btcoex_BtInfoNotify(struct adapter *padapter, u8 length, u8 *tmpBuf)
-{
-	if (GLBtcWiFiInIQKState)
-		return;
-
-	EXhalbtcoutsrc_BtInfoNotify(&GLBtCoexist, tmpBuf, length);
-}
-
-void hal_btcoex_SuspendNotify(struct adapter *padapter, u8 state)
-{
-	if (state == 1)
-		state = BTC_WIFI_PNP_SLEEP;
-	else
-		state = BTC_WIFI_PNP_WAKE_UP;
-
-	EXhalbtcoutsrc_PnpNotify(&GLBtCoexist, state);
-}
-
-void hal_btcoex_HaltNotify(struct adapter *padapter)
-{
-	EXhalbtcoutsrc_HaltNotify(&GLBtCoexist);
-}
-
-void hal_btcoex_Handler(struct adapter *padapter)
-{
-	EXhalbtcoutsrc_Periodical(&GLBtCoexist);
-}
-
-s32 hal_btcoex_IsBTCoexCtrlAMPDUSize(struct adapter *padapter)
-{
-	return (s32)GLBtCoexist.btInfo.bBtCtrlAggBufSize;
-}
-
-bool hal_btcoex_IsBtControlLps(struct adapter *padapter)
-{
-	if (!hal_btcoex_IsBtExist(padapter))
-		return false;
-
-	if (GLBtCoexist.btInfo.bBtDisabled)
-		return false;
-
-	if (GLBtCoexist.btInfo.bBtCtrlLps)
-		return true;
-
-	return false;
-}
-
-bool hal_btcoex_IsLpsOn(struct adapter *padapter)
-{
-	if (!hal_btcoex_IsBtExist(padapter))
-		return false;
-
-	if (GLBtCoexist.btInfo.bBtDisabled)
-		return false;
-
-	if (GLBtCoexist.btInfo.bBtLpsOn)
-		return true;
-
-	return false;
-}
-
-u8 hal_btcoex_RpwmVal(struct adapter *padapter)
-{
-	return GLBtCoexist.btInfo.rpwmVal;
-}
-
-u8 hal_btcoex_LpsVal(struct adapter *padapter)
-{
-	return GLBtCoexist.btInfo.lpsVal;
-}
-
-u32 hal_btcoex_GetRaMask(struct adapter *padapter)
-{
-	if (!hal_btcoex_IsBtExist(padapter))
-		return 0;
-
-	if (GLBtCoexist.btInfo.bBtDisabled)
-		return 0;
-
-	if (GLBtCoexist.boardInfo.btdmAntNum != 1)
-		return 0;
-
-	return GLBtCoexist.btInfo.raMask;
-}
-
-void hal_btcoex_RecordPwrMode(struct adapter *padapter, u8 *pCmdBuf, u8 cmdLen)
-{
-	memcpy(GLBtCoexist.pwrModeVal, pCmdBuf, cmdLen);
-}
diff --git a/drivers/staging/rtl8723bs/hal/hal_com.c b/drivers/staging/rtl8723bs/hal/hal_com.c
deleted file mode 100644
index 2c856a2721b2..000000000000
--- a/drivers/staging/rtl8723bs/hal/hal_com.c
+++ /dev/null
@@ -1,767 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <linux/kernel.h>
-#include <drv_types.h>
-#include "hal_com_h2c.h"
-
-#include "odm_precomp.h"
-
-u8 rtw_hal_data_init(struct adapter *padapter)
-{
-	padapter->hal_data_sz = sizeof(struct hal_com_data);
-	padapter->HalData = vzalloc(padapter->hal_data_sz);
-	if (!padapter->HalData)
-		return _FAIL;
-
-	return _SUCCESS;
-}
-
-void rtw_hal_data_deinit(struct adapter *padapter)
-{
-	if (padapter->HalData) {
-		vfree(padapter->HalData);
-		padapter->HalData = NULL;
-		padapter->hal_data_sz = 0;
-	}
-}
-
-#define	EEPROM_CHANNEL_PLAN_BY_HW_MASK	0x80
-
-/*
- * Description:
- *Use hardware(efuse), driver parameter(registry) and default channel plan
- *to decide which one should be used.
- *
- * Parameters:
- *padapter			pointer of adapter
- *hw_channel_plan		channel plan from HW (efuse/eeprom)
- *					BIT[7] software configure mode; 0:Enable, 1:disable
- *					BIT[6:0] Channel Plan
- *sw_channel_plan		channel plan from SW (registry/module param)
- *def_channel_plan	channel plan used when HW/SW both invalid
- *auto_load_fail		efuse autoload fail or not
- *
- * Return:
- *Final channel plan decision
- *
- */
-u8 hal_com_config_channel_plan(
-	struct adapter *padapter,
-	u8 hw_channel_plan,
-	u8 sw_channel_plan,
-	u8 def_channel_plan,
-	bool auto_load_fail
-)
-{
-	struct hal_com_data *pHalData;
-	u8 chnlPlan;
-
-	pHalData = GET_HAL_DATA(padapter);
-	pHalData->bDisableSWChannelPlan = false;
-	chnlPlan = def_channel_plan;
-
-	if (hw_channel_plan == 0xFF)
-		auto_load_fail = true;
-
-	if (!auto_load_fail) {
-		u8 hw_chnlPlan;
-
-		hw_chnlPlan = hw_channel_plan & (~EEPROM_CHANNEL_PLAN_BY_HW_MASK);
-		if (rtw_is_channel_plan_valid(hw_chnlPlan)) {
-			if (hw_channel_plan & EEPROM_CHANNEL_PLAN_BY_HW_MASK)
-				pHalData->bDisableSWChannelPlan = true;
-
-			chnlPlan = hw_chnlPlan;
-		}
-	}
-
-	if (
-		(false == pHalData->bDisableSWChannelPlan) &&
-		rtw_is_channel_plan_valid(sw_channel_plan)
-	)
-		chnlPlan = sw_channel_plan;
-
-	return chnlPlan;
-}
-
-bool HAL_IsLegalChannel(struct adapter *adapter, u32 Channel)
-{
-	bool bLegalChannel = true;
-
-	if ((Channel <= 14) && (Channel >= 1)) {
-		if (!is_supported_24g(adapter->registrypriv.wireless_mode))
-			bLegalChannel = false;
-	} else {
-		bLegalChannel = false;
-	}
-
-	return bLegalChannel;
-}
-
-u8 MRateToHwRate(u8 rate)
-{
-	u8 ret = DESC_RATE1M;
-
-	switch (rate) {
-	case MGN_1M:
-		ret = DESC_RATE1M;
-		break;
-	case MGN_2M:
-		ret = DESC_RATE2M;
-		break;
-	case MGN_5_5M:
-		ret = DESC_RATE5_5M;
-		break;
-	case MGN_11M:
-		ret = DESC_RATE11M;
-		break;
-	case MGN_6M:
-		ret = DESC_RATE6M;
-		break;
-	case MGN_9M:
-		ret = DESC_RATE9M;
-		break;
-	case MGN_12M:
-		ret = DESC_RATE12M;
-		break;
-	case MGN_18M:
-		ret = DESC_RATE18M;
-		break;
-	case MGN_24M:
-		ret = DESC_RATE24M;
-		break;
-	case MGN_36M:
-		ret = DESC_RATE36M;
-		break;
-	case MGN_48M:
-		ret = DESC_RATE48M;
-		break;
-	case MGN_54M:
-		ret = DESC_RATE54M;
-		break;
-	case MGN_MCS0:
-		ret = DESC_RATEMCS0;
-		break;
-	case MGN_MCS1:
-		ret = DESC_RATEMCS1;
-		break;
-	case MGN_MCS2:
-		ret = DESC_RATEMCS2;
-		break;
-	case MGN_MCS3:
-		ret = DESC_RATEMCS3;
-		break;
-	case MGN_MCS4:
-		ret = DESC_RATEMCS4;
-		break;
-	case MGN_MCS5:
-		ret = DESC_RATEMCS5;
-		break;
-	case MGN_MCS6:
-		ret = DESC_RATEMCS6;
-		break;
-	case MGN_MCS7:
-		ret = DESC_RATEMCS7;
-		break;
-	default:
-		break;
-	}
-
-	return ret;
-}
-
-u8 HwRateToMRate(u8 rate)
-{
-	u8 ret_rate = MGN_1M;
-
-	switch (rate) {
-	case DESC_RATE1M:
-		ret_rate = MGN_1M;
-		break;
-	case DESC_RATE2M:
-		ret_rate = MGN_2M;
-		break;
-	case DESC_RATE5_5M:
-		ret_rate = MGN_5_5M;
-		break;
-	case DESC_RATE11M:
-		ret_rate = MGN_11M;
-		break;
-	case DESC_RATE6M:
-		ret_rate = MGN_6M;
-		break;
-	case DESC_RATE9M:
-		ret_rate = MGN_9M;
-		break;
-	case DESC_RATE12M:
-		ret_rate = MGN_12M;
-		break;
-	case DESC_RATE18M:
-		ret_rate = MGN_18M;
-		break;
-	case DESC_RATE24M:
-		ret_rate = MGN_24M;
-		break;
-	case DESC_RATE36M:
-		ret_rate = MGN_36M;
-		break;
-	case DESC_RATE48M:
-		ret_rate = MGN_48M;
-		break;
-	case DESC_RATE54M:
-		ret_rate = MGN_54M;
-		break;
-	case DESC_RATEMCS0:
-		ret_rate = MGN_MCS0;
-		break;
-	case DESC_RATEMCS1:
-		ret_rate = MGN_MCS1;
-		break;
-	case DESC_RATEMCS2:
-		ret_rate = MGN_MCS2;
-		break;
-	case DESC_RATEMCS3:
-		ret_rate = MGN_MCS3;
-		break;
-	case DESC_RATEMCS4:
-		ret_rate = MGN_MCS4;
-		break;
-	case DESC_RATEMCS5:
-		ret_rate = MGN_MCS5;
-		break;
-	case DESC_RATEMCS6:
-		ret_rate = MGN_MCS6;
-		break;
-	case DESC_RATEMCS7:
-		ret_rate = MGN_MCS7;
-		break;
-	default:
-		break;
-	}
-
-	return ret_rate;
-}
-
-void HalSetBrateCfg(struct adapter *Adapter, u8 *mBratesOS, u16 *pBrateCfg)
-{
-	u8 i, is_brate, brate;
-
-	for (i = 0; i < NDIS_802_11_LENGTH_RATES_EX; i++) {
-		is_brate = mBratesOS[i] & IEEE80211_BASIC_RATE_MASK;
-		brate = mBratesOS[i] & 0x7f;
-
-		if (is_brate) {
-			switch (brate) {
-			case IEEE80211_CCK_RATE_1MB:
-				*pBrateCfg |= RATE_1M;
-				break;
-			case IEEE80211_CCK_RATE_2MB:
-				*pBrateCfg |= RATE_2M;
-				break;
-			case IEEE80211_CCK_RATE_5MB:
-				*pBrateCfg |= RATE_5_5M;
-				break;
-			case IEEE80211_CCK_RATE_11MB:
-				*pBrateCfg |= RATE_11M;
-				break;
-			case IEEE80211_OFDM_RATE_6MB:
-				*pBrateCfg |= RATE_6M;
-				break;
-			case IEEE80211_OFDM_RATE_9MB:
-				*pBrateCfg |= RATE_9M;
-				break;
-			case IEEE80211_OFDM_RATE_12MB:
-				*pBrateCfg |= RATE_12M;
-				break;
-			case IEEE80211_OFDM_RATE_18MB:
-				*pBrateCfg |= RATE_18M;
-				break;
-			case IEEE80211_OFDM_RATE_24MB:
-				*pBrateCfg |= RATE_24M;
-				break;
-			case IEEE80211_OFDM_RATE_36MB:
-				*pBrateCfg |= RATE_36M;
-				break;
-			case IEEE80211_OFDM_RATE_48MB:
-				*pBrateCfg |= RATE_48M;
-				break;
-			case IEEE80211_OFDM_RATE_54MB:
-				*pBrateCfg |= RATE_54M;
-				break;
-			}
-		}
-	}
-}
-
-static void _OneOutPipeMapping(struct adapter *padapter)
-{
-	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
-
-	pdvobjpriv->Queue2Pipe[0] = pdvobjpriv->RtOutPipe[0];/* VO */
-	pdvobjpriv->Queue2Pipe[1] = pdvobjpriv->RtOutPipe[0];/* VI */
-	pdvobjpriv->Queue2Pipe[2] = pdvobjpriv->RtOutPipe[0];/* BE */
-	pdvobjpriv->Queue2Pipe[3] = pdvobjpriv->RtOutPipe[0];/* BK */
-
-	pdvobjpriv->Queue2Pipe[4] = pdvobjpriv->RtOutPipe[0];/* BCN */
-	pdvobjpriv->Queue2Pipe[5] = pdvobjpriv->RtOutPipe[0];/* MGT */
-	pdvobjpriv->Queue2Pipe[6] = pdvobjpriv->RtOutPipe[0];/* HIGH */
-	pdvobjpriv->Queue2Pipe[7] = pdvobjpriv->RtOutPipe[0];/* TXCMD */
-}
-
-static void _TwoOutPipeMapping(struct adapter *padapter, bool bWIFICfg)
-{
-	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
-
-	if (bWIFICfg) { /* WMM */
-
-		/*	BK,	BE,	VI,	VO,	BCN,	CMD, MGT, HIGH, HCCA */
-		/*   0,		1,	0,	1,	0,	0,	0,	0,		0	}; */
-		/* 0:ep_0 num, 1:ep_1 num */
-
-		pdvobjpriv->Queue2Pipe[0] = pdvobjpriv->RtOutPipe[1];/* VO */
-		pdvobjpriv->Queue2Pipe[1] = pdvobjpriv->RtOutPipe[0];/* VI */
-		pdvobjpriv->Queue2Pipe[2] = pdvobjpriv->RtOutPipe[1];/* BE */
-		pdvobjpriv->Queue2Pipe[3] = pdvobjpriv->RtOutPipe[0];/* BK */
-
-		pdvobjpriv->Queue2Pipe[4] = pdvobjpriv->RtOutPipe[0];/* BCN */
-		pdvobjpriv->Queue2Pipe[5] = pdvobjpriv->RtOutPipe[0];/* MGT */
-		pdvobjpriv->Queue2Pipe[6] = pdvobjpriv->RtOutPipe[0];/* HIGH */
-		pdvobjpriv->Queue2Pipe[7] = pdvobjpriv->RtOutPipe[0];/* TXCMD */
-
-	} else { /* typical setting */
-
-		/* BK,	BE,	VI,	VO,	BCN,	CMD, MGT, HIGH, HCCA */
-		/*   1,		1,	0,	0,	0,	0,	0,	0,		0	}; */
-		/* 0:ep_0 num, 1:ep_1 num */
-
-		pdvobjpriv->Queue2Pipe[0] = pdvobjpriv->RtOutPipe[0];/* VO */
-		pdvobjpriv->Queue2Pipe[1] = pdvobjpriv->RtOutPipe[0];/* VI */
-		pdvobjpriv->Queue2Pipe[2] = pdvobjpriv->RtOutPipe[1];/* BE */
-		pdvobjpriv->Queue2Pipe[3] = pdvobjpriv->RtOutPipe[1];/* BK */
-
-		pdvobjpriv->Queue2Pipe[4] = pdvobjpriv->RtOutPipe[0];/* BCN */
-		pdvobjpriv->Queue2Pipe[5] = pdvobjpriv->RtOutPipe[0];/* MGT */
-		pdvobjpriv->Queue2Pipe[6] = pdvobjpriv->RtOutPipe[0];/* HIGH */
-		pdvobjpriv->Queue2Pipe[7] = pdvobjpriv->RtOutPipe[0];/* TXCMD */
-
-	}
-
-}
-
-static void _ThreeOutPipeMapping(struct adapter *padapter, bool bWIFICfg)
-{
-	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
-
-	if (bWIFICfg) { /* for WMM */
-
-		/*	BK,	BE,	VI,	VO,	BCN,	CMD, MGT, HIGH, HCCA */
-		/*   1,		2,	1,	0,	0,	0,	0,	0,		0	}; */
-		/* 0:H, 1:N, 2:L */
-
-		pdvobjpriv->Queue2Pipe[0] = pdvobjpriv->RtOutPipe[0];/* VO */
-		pdvobjpriv->Queue2Pipe[1] = pdvobjpriv->RtOutPipe[1];/* VI */
-		pdvobjpriv->Queue2Pipe[2] = pdvobjpriv->RtOutPipe[2];/* BE */
-		pdvobjpriv->Queue2Pipe[3] = pdvobjpriv->RtOutPipe[1];/* BK */
-
-		pdvobjpriv->Queue2Pipe[4] = pdvobjpriv->RtOutPipe[0];/* BCN */
-		pdvobjpriv->Queue2Pipe[5] = pdvobjpriv->RtOutPipe[0];/* MGT */
-		pdvobjpriv->Queue2Pipe[6] = pdvobjpriv->RtOutPipe[0];/* HIGH */
-		pdvobjpriv->Queue2Pipe[7] = pdvobjpriv->RtOutPipe[0];/* TXCMD */
-
-	} else { /* typical setting */
-
-		/*	BK,	BE,	VI,	VO,	BCN,	CMD, MGT, HIGH, HCCA */
-		/*   2,		2,	1,	0,	0,	0,	0,	0,		0	}; */
-		/* 0:H, 1:N, 2:L */
-
-		pdvobjpriv->Queue2Pipe[0] = pdvobjpriv->RtOutPipe[0];/* VO */
-		pdvobjpriv->Queue2Pipe[1] = pdvobjpriv->RtOutPipe[1];/* VI */
-		pdvobjpriv->Queue2Pipe[2] = pdvobjpriv->RtOutPipe[2];/* BE */
-		pdvobjpriv->Queue2Pipe[3] = pdvobjpriv->RtOutPipe[2];/* BK */
-
-		pdvobjpriv->Queue2Pipe[4] = pdvobjpriv->RtOutPipe[0];/* BCN */
-		pdvobjpriv->Queue2Pipe[5] = pdvobjpriv->RtOutPipe[0];/* MGT */
-		pdvobjpriv->Queue2Pipe[6] = pdvobjpriv->RtOutPipe[0];/* HIGH */
-		pdvobjpriv->Queue2Pipe[7] = pdvobjpriv->RtOutPipe[0];/* TXCMD */
-	}
-
-}
-
-bool Hal_MappingOutPipe(struct adapter *padapter, u8 NumOutPipe)
-{
-	struct registry_priv *pregistrypriv = &padapter->registrypriv;
-
-	bool bWIFICfg = (pregistrypriv->wifi_spec) ? true : false;
-
-	bool result = true;
-
-	switch (NumOutPipe) {
-	case 2:
-		_TwoOutPipeMapping(padapter, bWIFICfg);
-		break;
-	case 3:
-	case 4:
-		_ThreeOutPipeMapping(padapter, bWIFICfg);
-		break;
-	case 1:
-		_OneOutPipeMapping(padapter);
-		break;
-	default:
-		result = false;
-		break;
-	}
-
-	return result;
-
-}
-
-void hal_init_macaddr(struct adapter *adapter)
-{
-	rtw_hal_set_hwreg(adapter, HW_VAR_MAC_ADDR, adapter->eeprompriv.mac_addr);
-}
-
-void rtw_init_hal_com_default_value(struct adapter *Adapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	pHalData->AntDetection = 1;
-}
-
-/*
- * C2H event format:
- * Field	 TRIGGER		CONTENT	   CMD_SEQ	CMD_LEN		 CMD_ID
- * BITS	 [127:120]	[119:16]      [15:8]		  [7:4]		   [3:0]
- */
-
-void c2h_evt_clear(struct adapter *adapter)
-{
-	rtw_write8(adapter, REG_C2HEVT_CLEAR, C2H_EVT_HOST_CLOSE);
-}
-
-/*
- * C2H event format:
- * Field    TRIGGER    CMD_LEN    CONTENT    CMD_SEQ    CMD_ID
- * BITS    [127:120]   [119:112]    [111:16]	     [15:8]         [7:0]
- */
-s32 c2h_evt_read_88xx(struct adapter *adapter, u8 *buf)
-{
-	s32 ret = _FAIL;
-	struct c2h_evt_hdr_88xx *c2h_evt;
-	int i;
-	u8 trigger;
-
-	if (!buf)
-		goto exit;
-
-	trigger = rtw_read8(adapter, REG_C2HEVT_CLEAR);
-
-	if (trigger == C2H_EVT_HOST_CLOSE)
-		goto exit; /* Not ready */
-	else if (trigger != C2H_EVT_FW_CLOSE)
-		goto clear_evt; /* Not a valid value */
-
-	c2h_evt = (struct c2h_evt_hdr_88xx *)buf;
-
-	memset(c2h_evt, 0, 16);
-
-	c2h_evt->id = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL);
-	c2h_evt->seq = rtw_read8(adapter, REG_C2HEVT_CMD_SEQ_88XX);
-	c2h_evt->plen = rtw_read8(adapter, REG_C2HEVT_CMD_LEN_88XX);
-
-	/* Read the content */
-	for (i = 0; i < c2h_evt->plen; i++)
-		c2h_evt->payload[i] = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL + 2 + i);
-
-	ret = _SUCCESS;
-
-clear_evt:
-	/*
-	 * Clear event to notify FW we have read the command.
-	 * If this field isn't clear, the FW won't update the next command message.
-	 */
-	c2h_evt_clear(adapter);
-exit:
-	return ret;
-}
-
-u8 rtw_get_mgntframe_raid(struct adapter *adapter, unsigned char network_type)
-{
-	return (network_type & WIRELESS_11B) ? RATEID_IDX_B : RATEID_IDX_G;
-}
-
-void rtw_hal_update_sta_rate_mask(struct adapter *padapter, struct sta_info *psta)
-{
-	u8 i, limit;
-	u32 tx_ra_bitmap;
-
-	if (!psta)
-		return;
-
-	tx_ra_bitmap = 0;
-
-	/* b/g mode ra_bitmap */
-	for (i = 0; i < sizeof(psta->bssrateset); i++) {
-		if (psta->bssrateset[i])
-			tx_ra_bitmap |= rtw_get_bit_value_from_ieee_value(psta->bssrateset[i]&0x7f);
-	}
-
-	/* n mode ra_bitmap */
-	if (psta->htpriv.ht_option) {
-		limit = 8; /*   1R */
-
-		for (i = 0; i < limit; i++) {
-			if (psta->htpriv.ht_cap.mcs.rx_mask[i/8] & BIT(i%8))
-				tx_ra_bitmap |= BIT(i+12);
-		}
-	}
-
-	psta->ra_mask = tx_ra_bitmap;
-	psta->init_rate = get_highest_rate_idx(tx_ra_bitmap)&0x3f;
-}
-
-void SetHwReg(struct adapter *adapter, u8 variable, u8 *val)
-{
-	struct hal_com_data *hal_data = GET_HAL_DATA(adapter);
-	struct dm_odm_t *odm = &(hal_data->odmpriv);
-
-	switch (variable) {
-	case HW_VAR_INIT_RTS_RATE:
-		WARN_ON(1);
-		break;
-	case HW_VAR_SEC_CFG:
-	{
-		u16 reg_scr;
-
-		reg_scr = rtw_read16(adapter, REG_SECCFG);
-		rtw_write16(adapter, REG_SECCFG, reg_scr|SCR_CHK_KEYID|SCR_RxDecEnable|SCR_TxEncEnable);
-	}
-		break;
-	case HW_VAR_SEC_DK_CFG:
-	{
-		struct security_priv *sec = &adapter->securitypriv;
-		u8 reg_scr = rtw_read8(adapter, REG_SECCFG);
-
-		if (val) { /* Enable default key related setting */
-			reg_scr |= SCR_TXBCUSEDK;
-			if (sec->dot11_auth_algrthm != dot11_auth_algrthm_8021x)
-				reg_scr |= (SCR_RxUseDK|SCR_TxUseDK);
-		} else /* Disable default key related setting */
-			reg_scr &= ~(SCR_RXBCUSEDK|SCR_TXBCUSEDK|SCR_RxUseDK|SCR_TxUseDK);
-
-		rtw_write8(adapter, REG_SECCFG, reg_scr);
-	}
-		break;
-	case HW_VAR_DM_FLAG:
-		odm->SupportAbility = *((u32 *)val);
-		break;
-	case HW_VAR_DM_FUNC_OP:
-		if (*((u8 *)val)) {
-			/* save dm flag */
-			odm->BK_SupportAbility = odm->SupportAbility;
-		} else {
-			/* restore dm flag */
-			odm->SupportAbility = odm->BK_SupportAbility;
-		}
-		break;
-	case HW_VAR_DM_FUNC_SET:
-		if (*((u32 *)val) == DYNAMIC_ALL_FUNC_ENABLE) {
-			struct dm_priv *dm = &hal_data->dmpriv;
-
-			dm->DMFlag = dm->InitDMFlag;
-			odm->SupportAbility = dm->InitODMFlag;
-		} else {
-			odm->SupportAbility |= *((u32 *)val);
-		}
-		break;
-	case HW_VAR_DM_FUNC_CLR:
-		/*
-		 * input is already a mask to clear function
-		 * don't invert it again! George, Lucas@20130513
-		 */
-		odm->SupportAbility &= *((u32 *)val);
-		break;
-	case HW_VAR_AMPDU_MIN_SPACE:
-		/* TODO - Is something needed here? */
-		break;
-	case HW_VAR_WIRELESS_MODE:
-		/* TODO - Is something needed here? */
-		break;
-	default:
-		netdev_dbg(adapter->pnetdev,
-			   FUNC_ADPT_FMT " variable(%d) not defined!\n",
-			   FUNC_ADPT_ARG(adapter), variable);
-		break;
-	}
-}
-
-void GetHwReg(struct adapter *adapter, u8 variable, u8 *val)
-{
-	struct hal_com_data *hal_data = GET_HAL_DATA(adapter);
-	struct dm_odm_t *odm = &(hal_data->odmpriv);
-
-	switch (variable) {
-	case HW_VAR_BASIC_RATE:
-		*((u16 *)val) = hal_data->BasicRateSet;
-		break;
-	case HW_VAR_DM_FLAG:
-		*((u32 *)val) = odm->SupportAbility;
-		break;
-	default:
-		netdev_dbg(adapter->pnetdev,
-			   FUNC_ADPT_FMT " variable(%d) not defined!\n",
-			   FUNC_ADPT_ARG(adapter), variable);
-		break;
-	}
-}
-
-u8 GetHalDefVar(
-	struct adapter *adapter, enum hal_def_variable variable, void *value
-)
-{
-	struct hal_com_data *hal_data = GET_HAL_DATA(adapter);
-	u8 bResult = _SUCCESS;
-
-	switch (variable) {
-	case HAL_DEF_UNDERCORATEDSMOOTHEDPWDB:
-		{
-			struct mlme_priv *pmlmepriv;
-			struct sta_priv *pstapriv;
-			struct sta_info *psta;
-
-			pmlmepriv = &adapter->mlmepriv;
-			pstapriv = &adapter->stapriv;
-			psta = rtw_get_stainfo(pstapriv, pmlmepriv->cur_network.network.mac_address);
-			if (psta)
-				*((int *)value) = psta->rssi_stat.UndecoratedSmoothedPWDB;
-		}
-		break;
-	case HAL_DEF_DBG_DM_FUNC:
-		*((u32 *)value) = hal_data->odmpriv.SupportAbility;
-		break;
-	case HAL_DEF_ANT_DETECT:
-		*((u8 *)value) = hal_data->AntDetection;
-		break;
-	case HAL_DEF_MACID_SLEEP:
-		*(u8 *)value = false;
-		break;
-	case HAL_DEF_TX_PAGE_SIZE:
-		*((u32 *)value) = PAGE_SIZE_128;
-		break;
-	default:
-		netdev_dbg(adapter->pnetdev,
-			   "%s: [WARNING] HAL_DEF_VARIABLE(%d) not defined!\n",
-			   __func__, variable);
-		bResult = _FAIL;
-		break;
-	}
-
-	return bResult;
-}
-
-void SetHalODMVar(
-	struct adapter *Adapter,
-	enum hal_odm_variable eVariable,
-	void *pValue1,
-	bool bSet
-)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(Adapter);
-	struct dm_odm_t *podmpriv = &pHalData->odmpriv;
-	/* _irqL irqL; */
-	switch (eVariable) {
-	case HAL_ODM_STA_INFO:
-		{
-			struct sta_info *psta = pValue1;
-
-			if (bSet) {
-				ODM_CmnInfoPtrArrayHook(podmpriv, ODM_CMNINFO_STA_STATUS, psta->mac_id, psta);
-			} else {
-				/* spin_lock_bh(&pHalData->odm_stainfo_lock); */
-				ODM_CmnInfoPtrArrayHook(podmpriv, ODM_CMNINFO_STA_STATUS, psta->mac_id, NULL);
-
-				/* spin_unlock_bh(&pHalData->odm_stainfo_lock); */
-		    }
-		}
-		break;
-	case HAL_ODM_P2P_STATE:
-			ODM_CmnInfoUpdate(podmpriv, ODM_CMNINFO_WIFI_DIRECT, bSet);
-		break;
-	case HAL_ODM_WIFI_DISPLAY_STATE:
-			ODM_CmnInfoUpdate(podmpriv, ODM_CMNINFO_WIFI_DISPLAY, bSet);
-		break;
-
-	default:
-		break;
-	}
-}
-
-bool GetU1ByteIntegerFromStringInDecimal(char *Str, u8 *pInt)
-{
-	u16 i = 0;
-	*pInt = 0;
-
-	while (Str[i] != '\0') {
-		if (Str[i] >= '0' && Str[i] <= '9') {
-			*pInt *= 10;
-			*pInt += (Str[i] - '0');
-		} else
-			return false;
-
-		++i;
-	}
-
-	return true;
-}
-
-void rtw_hal_check_rxfifo_full(struct adapter *adapter)
-{
-	/* switch counter to RX fifo */
-	rtw_write8(adapter, REG_RXERR_RPT+3, rtw_read8(adapter, REG_RXERR_RPT+3)|0xf0);
-}
-
-static u32 Array_kfreemap[] = {
-	0xf8, 0xe,
-	0xf6, 0xc,
-	0xf4, 0xa,
-	0xf2, 0x8,
-	0xf0, 0x6,
-	0xf3, 0x4,
-	0xf5, 0x2,
-	0xf7, 0x0,
-	0xf9, 0x0,
-	0xfc, 0x0,
-};
-
-#define		REG_RF_BB_GAIN_OFFSET	0x7f
-//#define		RF_GAIN_OFFSET_MASK	0xfffff
-
-void rtw_bb_rf_gain_offset(struct adapter *padapter)
-{
-	u8 value = padapter->eeprompriv.EEPROMRFGainOffset;
-	u32 *Array = Array_kfreemap;
-	u32 v1 = 0, v2 = 0, target = 0;
-	u32 i = 0;
-
-	if (value & BIT(4)) {
-		if (padapter->eeprompriv.EEPROMRFGainVal != 0xff) {
-			rtw_hal_read_rfreg(padapter, RF_PATH_A, 0x7f, 0xffffffff);
-
-			for (i = 0; i < ARRAY_SIZE(Array_kfreemap); i += 2) {
-				v1 = Array[i];
-				v2 = Array[i+1];
-				if (v1 == padapter->eeprompriv.EEPROMRFGainVal) {
-					target = v2;
-					break;
-				}
-			}
-			PHY_SetRFReg(padapter, RF_PATH_A, REG_RF_BB_GAIN_OFFSET, BIT(18)|BIT(17)|BIT(16)|BIT(15), target);
-
-			rtw_hal_read_rfreg(padapter, RF_PATH_A, 0x7f, 0xffffffff);
-		}
-	}
-}
diff --git a/drivers/staging/rtl8723bs/hal/hal_com_phycfg.c b/drivers/staging/rtl8723bs/hal/hal_com_phycfg.c
deleted file mode 100644
index df0eaff4c841..000000000000
--- a/drivers/staging/rtl8723bs/hal/hal_com_phycfg.c
+++ /dev/null
@@ -1,973 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <drv_types.h>
-#include <hal_data.h>
-#include <linux/kernel.h>
-#include <linux/string.h>
-
-u8 PHY_GetTxPowerByRateBase(struct adapter *Adapter, u8 RfPath,
-			    enum rate_section RateSection)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(Adapter);
-	u8	value = 0;
-
-	if (RfPath >= RF_PATH_MAX)
-		return 0;
-
-	switch (RateSection) {
-	case CCK:
-		value = pHalData->TxPwrByRateBase2_4G[RfPath][0];
-		break;
-	case OFDM:
-		value = pHalData->TxPwrByRateBase2_4G[RfPath][1];
-		break;
-	case HT_MCS0_MCS7:
-		value = pHalData->TxPwrByRateBase2_4G[RfPath][2];
-		break;
-	default:
-		break;
-	}
-
-	return value;
-}
-
-static void
-phy_SetTxPowerByRateBase(struct adapter *Adapter, u8 RfPath,
-			 enum rate_section RateSection, u8 Value)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(Adapter);
-
-	if (RfPath >= RF_PATH_MAX)
-		return;
-
-	switch (RateSection) {
-	case CCK:
-		pHalData->TxPwrByRateBase2_4G[RfPath][0] = Value;
-		break;
-	case OFDM:
-		pHalData->TxPwrByRateBase2_4G[RfPath][1] = Value;
-		break;
-	case HT_MCS0_MCS7:
-		pHalData->TxPwrByRateBase2_4G[RfPath][2] = Value;
-		break;
-	default:
-		break;
-	}
-}
-
-static void phy_StoreTxPowerByRateBase(struct adapter *padapter)
-{
-	u8 path, base;
-
-	for (path = RF_PATH_A; path <= RF_PATH_B; ++path) {
-		base = PHY_GetTxPowerByRate(padapter, path, MGN_11M);
-		phy_SetTxPowerByRateBase(padapter, path, CCK, base);
-
-		base = PHY_GetTxPowerByRate(padapter, path, MGN_54M);
-		phy_SetTxPowerByRateBase(padapter, path, OFDM, base);
-
-		base = PHY_GetTxPowerByRate(padapter, path, MGN_MCS7);
-		phy_SetTxPowerByRateBase(padapter, path, HT_MCS0_MCS7, base);
-	}
-}
-
-u8 PHY_GetRateSectionIndexOfTxPowerByRate(
-	struct adapter *padapter, u32 RegAddr, u32 BitMask
-)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-	u8	index = 0;
-
-	if (pDM_Odm->PhyRegPgVersion == 0) {
-		switch (RegAddr) {
-		case rTxAGC_A_Rate18_06:
-			index = 0;
-			break;
-		case rTxAGC_A_Rate54_24:
-			index = 1;
-			break;
-		case rTxAGC_A_CCK1_Mcs32:
-			index = 6;
-			break;
-		case rTxAGC_B_CCK11_A_CCK2_11:
-			if (BitMask == bMaskH3Bytes)
-				index = 7;
-			else if (BitMask == 0x000000ff)
-				index = 15;
-			break;
-
-		case rTxAGC_A_Mcs03_Mcs00:
-			index = 2;
-			break;
-		case rTxAGC_A_Mcs07_Mcs04:
-			index = 3;
-			break;
-		case rTxAGC_B_Rate18_06:
-			index = 8;
-			break;
-		case rTxAGC_B_Rate54_24:
-			index = 9;
-			break;
-		case rTxAGC_B_CCK1_55_Mcs32:
-			index = 14;
-			break;
-		case rTxAGC_B_Mcs03_Mcs00:
-			index = 10;
-			break;
-		case rTxAGC_B_Mcs07_Mcs04:
-			index = 11;
-			break;
-		default:
-			break;
-		}
-	}
-
-	return index;
-}
-
-void
-PHY_GetRateValuesOfTxPowerByRate(
-	struct adapter *padapter,
-	u32	RegAddr,
-	u32	BitMask,
-	u32	Value,
-	u8 *RateIndex,
-	s8 *PwrByRateVal,
-	u8 *RateNum
-)
-{
-	u8 i = 0;
-
-	switch (RegAddr) {
-	case rTxAGC_A_Rate18_06:
-	case rTxAGC_B_Rate18_06:
-		RateIndex[0] = PHY_GetRateIndexOfTxPowerByRate(MGN_6M);
-		RateIndex[1] = PHY_GetRateIndexOfTxPowerByRate(MGN_9M);
-		RateIndex[2] = PHY_GetRateIndexOfTxPowerByRate(MGN_12M);
-		RateIndex[3] = PHY_GetRateIndexOfTxPowerByRate(MGN_18M);
-		for (i = 0; i < 4; ++i) {
-			PwrByRateVal[i] = (s8) ((((Value >> (i * 8 + 4)) & 0xF)) * 10 +
-											((Value >> (i * 8)) & 0xF));
-		}
-		*RateNum = 4;
-		break;
-
-	case rTxAGC_A_Rate54_24:
-	case rTxAGC_B_Rate54_24:
-		RateIndex[0] = PHY_GetRateIndexOfTxPowerByRate(MGN_24M);
-		RateIndex[1] = PHY_GetRateIndexOfTxPowerByRate(MGN_36M);
-		RateIndex[2] = PHY_GetRateIndexOfTxPowerByRate(MGN_48M);
-		RateIndex[3] = PHY_GetRateIndexOfTxPowerByRate(MGN_54M);
-		for (i = 0; i < 4; ++i) {
-			PwrByRateVal[i] = (s8) ((((Value >> (i * 8 + 4)) & 0xF)) * 10 +
-											((Value >> (i * 8)) & 0xF));
-		}
-		*RateNum = 4;
-		break;
-
-	case rTxAGC_A_CCK1_Mcs32:
-		RateIndex[0] = PHY_GetRateIndexOfTxPowerByRate(MGN_1M);
-		PwrByRateVal[0] = (s8) ((((Value >> (8 + 4)) & 0xF)) * 10 +
-										((Value >> 8) & 0xF));
-		*RateNum = 1;
-		break;
-
-	case rTxAGC_B_CCK11_A_CCK2_11:
-		if (BitMask == 0xffffff00) {
-			RateIndex[0] = PHY_GetRateIndexOfTxPowerByRate(MGN_2M);
-			RateIndex[1] = PHY_GetRateIndexOfTxPowerByRate(MGN_5_5M);
-			RateIndex[2] = PHY_GetRateIndexOfTxPowerByRate(MGN_11M);
-			for (i = 1; i < 4; ++i) {
-				PwrByRateVal[i - 1] = (s8) ((((Value >> (i * 8 + 4)) & 0xF)) * 10 +
-												((Value >> (i * 8)) & 0xF));
-			}
-			*RateNum = 3;
-		} else if (BitMask == 0x000000ff) {
-			RateIndex[0] = PHY_GetRateIndexOfTxPowerByRate(MGN_11M);
-			PwrByRateVal[0] = (s8) ((((Value >> 4) & 0xF)) * 10 + (Value & 0xF));
-			*RateNum = 1;
-		}
-		break;
-
-	case rTxAGC_A_Mcs03_Mcs00:
-	case rTxAGC_B_Mcs03_Mcs00:
-		RateIndex[0] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS0);
-		RateIndex[1] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS1);
-		RateIndex[2] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS2);
-		RateIndex[3] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS3);
-		for (i = 0; i < 4; ++i) {
-			PwrByRateVal[i] = (s8) ((((Value >> (i * 8 + 4)) & 0xF)) * 10 +
-											((Value >> (i * 8)) & 0xF));
-		}
-		*RateNum = 4;
-		break;
-
-	case rTxAGC_A_Mcs07_Mcs04:
-	case rTxAGC_B_Mcs07_Mcs04:
-		RateIndex[0] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS4);
-		RateIndex[1] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS5);
-		RateIndex[2] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS6);
-		RateIndex[3] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS7);
-		for (i = 0; i < 4; ++i) {
-			PwrByRateVal[i] = (s8) ((((Value >> (i * 8 + 4)) & 0xF)) * 10 +
-											((Value >> (i * 8)) & 0xF));
-		}
-		*RateNum = 4;
-		break;
-
-	case rTxAGC_B_CCK1_55_Mcs32:
-		RateIndex[0] = PHY_GetRateIndexOfTxPowerByRate(MGN_1M);
-		RateIndex[1] = PHY_GetRateIndexOfTxPowerByRate(MGN_2M);
-		RateIndex[2] = PHY_GetRateIndexOfTxPowerByRate(MGN_5_5M);
-		for (i = 1; i < 4; ++i) {
-			PwrByRateVal[i - 1] = (s8) ((((Value >> (i * 8 + 4)) & 0xF)) * 10 +
-											((Value >> (i * 8)) & 0xF));
-		}
-		*RateNum = 3;
-		break;
-
-	case 0xC20:
-	case 0xE20:
-	case 0x1820:
-	case 0x1a20:
-		RateIndex[0] = PHY_GetRateIndexOfTxPowerByRate(MGN_1M);
-		RateIndex[1] = PHY_GetRateIndexOfTxPowerByRate(MGN_2M);
-		RateIndex[2] = PHY_GetRateIndexOfTxPowerByRate(MGN_5_5M);
-		RateIndex[3] = PHY_GetRateIndexOfTxPowerByRate(MGN_11M);
-		for (i = 0; i < 4; ++i) {
-			PwrByRateVal[i] = (s8) ((((Value >> (i * 8 + 4)) & 0xF)) * 10 +
-											((Value >> (i * 8)) & 0xF));
-		}
-		*RateNum = 4;
-		break;
-
-	case 0xC24:
-	case 0xE24:
-	case 0x1824:
-	case 0x1a24:
-		RateIndex[0] = PHY_GetRateIndexOfTxPowerByRate(MGN_6M);
-		RateIndex[1] = PHY_GetRateIndexOfTxPowerByRate(MGN_9M);
-		RateIndex[2] = PHY_GetRateIndexOfTxPowerByRate(MGN_12M);
-		RateIndex[3] = PHY_GetRateIndexOfTxPowerByRate(MGN_18M);
-		for (i = 0; i < 4; ++i) {
-			PwrByRateVal[i] = (s8) ((((Value >> (i * 8 + 4)) & 0xF)) * 10 +
-											((Value >> (i * 8)) & 0xF));
-		}
-		*RateNum = 4;
-		break;
-
-	case 0xC28:
-	case 0xE28:
-	case 0x1828:
-	case 0x1a28:
-		RateIndex[0] = PHY_GetRateIndexOfTxPowerByRate(MGN_24M);
-		RateIndex[1] = PHY_GetRateIndexOfTxPowerByRate(MGN_36M);
-		RateIndex[2] = PHY_GetRateIndexOfTxPowerByRate(MGN_48M);
-		RateIndex[3] = PHY_GetRateIndexOfTxPowerByRate(MGN_54M);
-		for (i = 0; i < 4; ++i) {
-			PwrByRateVal[i] = (s8) ((((Value >> (i * 8 + 4)) & 0xF)) * 10 +
-											((Value >> (i * 8)) & 0xF));
-		}
-		*RateNum = 4;
-		break;
-
-	case 0xC2C:
-	case 0xE2C:
-	case 0x182C:
-	case 0x1a2C:
-		RateIndex[0] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS0);
-		RateIndex[1] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS1);
-		RateIndex[2] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS2);
-		RateIndex[3] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS3);
-		for (i = 0; i < 4; ++i) {
-			PwrByRateVal[i] = (s8) ((((Value >> (i * 8 + 4)) & 0xF)) * 10 +
-											((Value >> (i * 8)) & 0xF));
-		}
-		*RateNum = 4;
-		break;
-
-	case 0xC30:
-	case 0xE30:
-	case 0x1830:
-	case 0x1a30:
-		RateIndex[0] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS4);
-		RateIndex[1] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS5);
-		RateIndex[2] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS6);
-		RateIndex[3] = PHY_GetRateIndexOfTxPowerByRate(MGN_MCS7);
-		for (i = 0; i < 4; ++i) {
-			PwrByRateVal[i] = (s8) ((((Value >> (i * 8 + 4)) & 0xF)) * 10 +
-											((Value >> (i * 8)) & 0xF));
-		}
-		*RateNum = 4;
-		break;
-
-	default:
-		break;
-	}
-}
-
-static void PHY_StoreTxPowerByRateNew(struct adapter *padapter,	u32 RfPath,
-				      u32 RegAddr, u32 BitMask, u32 Data)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	u8 i = 0, rateIndex[4] = {0}, rateNum = 0;
-	s8	PwrByRateVal[4] = {0};
-
-	PHY_GetRateValuesOfTxPowerByRate(padapter, RegAddr, BitMask, Data, rateIndex, PwrByRateVal, &rateNum);
-
-	if (RfPath >= RF_PATH_MAX)
-		return;
-
-	for (i = 0; i < rateNum; ++i) {
-		pHalData->TxPwrByRateOffset[RfPath][rateIndex[i]] = PwrByRateVal[i];
-	}
-}
-
-void PHY_InitTxPowerByRate(struct adapter *padapter)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	u8 rfPath, rate;
-
-	for (rfPath = RF_PATH_A; rfPath < MAX_RF_PATH_NUM; ++rfPath)
-		for (rate = 0; rate < TX_PWR_BY_RATE_NUM_RATE; ++rate)
-			pHalData->TxPwrByRateOffset[rfPath][rate] = 0;
-}
-
-void PHY_StoreTxPowerByRate(
-	struct adapter *padapter,
-	u32	RfPath,
-	u32	RegAddr,
-	u32	BitMask,
-	u32	Data
-)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	if (pDM_Odm->PhyRegPgVersion > 0)
-		PHY_StoreTxPowerByRateNew(padapter, RfPath, RegAddr, BitMask, Data);
-}
-
-static void
-phy_ConvertTxPowerByRateInDbmToRelativeValues(
-struct adapter *padapter
-	)
-{
-	u8	base = 0, i = 0, value = 0, path = 0;
-	u8	cckRates[4] = {
-		MGN_1M, MGN_2M, MGN_5_5M, MGN_11M
-	};
-	u8	ofdmRates[8] = {
-		MGN_6M, MGN_9M, MGN_12M, MGN_18M, MGN_24M, MGN_36M, MGN_48M, MGN_54M
-	};
-	u8 mcs0_7Rates[8] = {
-		MGN_MCS0, MGN_MCS1, MGN_MCS2, MGN_MCS3, MGN_MCS4, MGN_MCS5, MGN_MCS6, MGN_MCS7
-	};
-	for (path = RF_PATH_A; path < RF_PATH_MAX; ++path) {
-		/*  CCK */
-		base = PHY_GetTxPowerByRate(padapter, path, MGN_11M);
-		for (i = 0; i < ARRAY_SIZE(cckRates); ++i) {
-			value = PHY_GetTxPowerByRate(padapter, path, cckRates[i]);
-			PHY_SetTxPowerByRate(padapter, path, cckRates[i], value - base);
-		}
-
-		/*  OFDM */
-		base = PHY_GetTxPowerByRate(padapter, path, MGN_54M);
-		for (i = 0; i < sizeof(ofdmRates); ++i) {
-			value = PHY_GetTxPowerByRate(padapter, path, ofdmRates[i]);
-			PHY_SetTxPowerByRate(padapter, path, ofdmRates[i], value - base);
-		}
-
-		/*  HT MCS0~7 */
-		base = PHY_GetTxPowerByRate(padapter, path, MGN_MCS7);
-		for (i = 0; i < sizeof(mcs0_7Rates); ++i) {
-			value = PHY_GetTxPowerByRate(padapter, path, mcs0_7Rates[i]);
-			PHY_SetTxPowerByRate(padapter, path, mcs0_7Rates[i], value - base);
-		}
-	}
-}
-
-/*
- * This function must be called if the value in the PHY_REG_PG.txt(or header)
- * is exact dBm values
- */
-void PHY_TxPowerByRateConfiguration(struct adapter *padapter)
-{
-	phy_StoreTxPowerByRateBase(padapter);
-	phy_ConvertTxPowerByRateInDbmToRelativeValues(padapter);
-}
-
-void PHY_SetTxPowerIndexByRateSection(
-	struct adapter *padapter, u8 RFPath, u8 Channel, u8 RateSection
-)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-
-	if (RateSection == CCK) {
-		u8 cckRates[]   = {MGN_1M, MGN_2M, MGN_5_5M, MGN_11M};
-
-		PHY_SetTxPowerIndexByRateArray(padapter, RFPath,
-					     pHalData->CurrentChannelBW,
-					     Channel, cckRates,
-					     ARRAY_SIZE(cckRates));
-
-	} else if (RateSection == OFDM) {
-		u8 ofdmRates[]  = {MGN_6M, MGN_9M, MGN_12M, MGN_18M, MGN_24M, MGN_36M, MGN_48M, MGN_54M};
-
-		PHY_SetTxPowerIndexByRateArray(padapter, RFPath,
-					       pHalData->CurrentChannelBW,
-					       Channel, ofdmRates,
-					       ARRAY_SIZE(ofdmRates));
-
-	} else if (RateSection == HT_MCS0_MCS7) {
-		u8 htRates1T[]  = {MGN_MCS0, MGN_MCS1, MGN_MCS2, MGN_MCS3, MGN_MCS4, MGN_MCS5, MGN_MCS6, MGN_MCS7};
-
-		PHY_SetTxPowerIndexByRateArray(padapter, RFPath,
-					       pHalData->CurrentChannelBW,
-					       Channel, htRates1T,
-					       ARRAY_SIZE(htRates1T));
-
-	}
-}
-
-u8 PHY_GetTxPowerIndexBase(
-	struct adapter *padapter,
-	u8 RFPath,
-	u8 Rate,
-	enum channel_width	BandWidth,
-	u8 Channel
-)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	u8 txPower = 0;
-	u8 chnlIdx = (Channel - 1);
-
-	if (!HAL_IsLegalChannel(padapter, Channel))
-		chnlIdx = 0;
-
-	if (IS_CCK_RATE(Rate))
-		txPower = pHalData->Index24G_CCK_Base[RFPath][chnlIdx];
-	else if (Rate >= MGN_6M)
-		txPower = pHalData->Index24G_BW40_Base[RFPath][chnlIdx];
-
-	/*  OFDM-1T */
-	if ((Rate >= MGN_6M && Rate <= MGN_54M) && !IS_CCK_RATE(Rate))
-		txPower += pHalData->OFDM_24G_Diff[RFPath][TX_1S];
-
-	if (Rate >= MGN_MCS0 && Rate <= MGN_MCS7) {
-		if (BandWidth == CHANNEL_WIDTH_20) /*  BW20-1S, BW20-2S */
-			txPower += pHalData->BW20_24G_Diff[RFPath][TX_1S];
-		else if (BandWidth == CHANNEL_WIDTH_40) /*  BW40-1S, BW40-2S */
-			txPower += pHalData->BW40_24G_Diff[RFPath][TX_1S];
-	}
-
-	return txPower;
-}
-
-s8 PHY_GetTxPowerTrackingOffset(struct adapter *padapter, u8 RFPath, u8 Rate)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-	s8 offset = 0;
-
-	if (!pDM_Odm->RFCalibrateInfo.TxPowerTrackControl)
-		return offset;
-
-	if ((Rate == MGN_1M) || (Rate == MGN_2M) || (Rate == MGN_5_5M) || (Rate == MGN_11M))
-		offset = pDM_Odm->Remnant_CCKSwingIdx;
-	else
-		offset = pDM_Odm->Remnant_OFDMSwingIdx[RFPath];
-
-	return offset;
-}
-
-u8 PHY_GetRateIndexOfTxPowerByRate(u8 Rate)
-{
-	u8 index = 0;
-
-	switch (Rate) {
-	case MGN_1M:
-		index = 0;
-		break;
-	case MGN_2M:
-		index = 1;
-		break;
-	case MGN_5_5M:
-		index = 2;
-		break;
-	case MGN_11M:
-		index = 3;
-		break;
-	case MGN_6M:
-		index = 4;
-		break;
-	case MGN_9M:
-		index = 5;
-		break;
-	case MGN_12M:
-		index = 6;
-		break;
-	case MGN_18M:
-		index = 7;
-		break;
-	case MGN_24M:
-		index = 8;
-		break;
-	case MGN_36M:
-		index = 9;
-		break;
-	case MGN_48M:
-		index = 10;
-		break;
-	case MGN_54M:
-		index = 11;
-		break;
-	case MGN_MCS0:
-		index = 12;
-		break;
-	case MGN_MCS1:
-		index = 13;
-		break;
-	case MGN_MCS2:
-		index = 14;
-		break;
-	case MGN_MCS3:
-		index = 15;
-		break;
-	case MGN_MCS4:
-		index = 16;
-		break;
-	case MGN_MCS5:
-		index = 17;
-		break;
-	case MGN_MCS6:
-		index = 18;
-		break;
-	case MGN_MCS7:
-		index = 19;
-		break;
-	default:
-		break;
-	}
-	return index;
-}
-
-s8 PHY_GetTxPowerByRate(struct adapter *padapter, u8 RFPath, u8 Rate)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	s8 value = 0;
-	u8 rateIndex = PHY_GetRateIndexOfTxPowerByRate(Rate);
-
-	if ((padapter->registrypriv.reg_enable_tx_power_by_rate == 2 &&
-	     pHalData->EEPROMRegulatory == 2) ||
-	   padapter->registrypriv.reg_enable_tx_power_by_rate == 0)
-		return 0;
-
-	if (RFPath >= RF_PATH_MAX)
-		return value;
-
-	if (rateIndex >= TX_PWR_BY_RATE_NUM_RATE)
-		return value;
-
-	return pHalData->TxPwrByRateOffset[RFPath][rateIndex];
-
-}
-
-void PHY_SetTxPowerByRate(
-	struct adapter *padapter,
-	u8 RFPath,
-	u8 Rate,
-	s8 Value
-)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	u8 rateIndex = PHY_GetRateIndexOfTxPowerByRate(Rate);
-
-	if (RFPath >= RF_PATH_MAX)
-		return;
-
-	if (rateIndex >= TX_PWR_BY_RATE_NUM_RATE)
-		return;
-
-	pHalData->TxPwrByRateOffset[RFPath][rateIndex] = Value;
-}
-
-void PHY_SetTxPowerLevelByPath(struct adapter *Adapter, u8 channel, u8 path)
-{
-	PHY_SetTxPowerIndexByRateSection(Adapter, path, channel, CCK);
-
-	PHY_SetTxPowerIndexByRateSection(Adapter, path, channel, OFDM);
-	PHY_SetTxPowerIndexByRateSection(Adapter, path, channel, HT_MCS0_MCS7);
-}
-
-void PHY_SetTxPowerIndexByRateArray(
-	struct adapter *padapter,
-	u8 RFPath,
-	enum channel_width BandWidth,
-	u8 Channel,
-	u8 *Rates,
-	u8 RateArraySize
-)
-{
-	u32 powerIndex = 0;
-	int	i = 0;
-
-	for (i = 0; i < RateArraySize; ++i) {
-		powerIndex = PHY_GetTxPowerIndex(padapter, RFPath, Rates[i], BandWidth, Channel);
-		PHY_SetTxPowerIndex(padapter, powerIndex, RFPath, Rates[i]);
-	}
-}
-
-static s8 phy_GetWorldWideLimit(s8 *LimitTable)
-{
-	s8	min = LimitTable[0];
-	u8 i = 0;
-
-	for (i = 0; i < MAX_REGULATION_NUM; ++i) {
-		if (LimitTable[i] < min)
-			min = LimitTable[i];
-	}
-
-	return min;
-}
-
-static s8 phy_GetChannelIndexOfTxPowerLimit(u8 Channel)
-{
-	return Channel - 1;
-}
-
-static s16 get_bandwidth_idx(const enum channel_width bandwidth)
-{
-	switch (bandwidth) {
-	case CHANNEL_WIDTH_20:
-		return 0;
-	case CHANNEL_WIDTH_40:
-		return 1;
-	default:
-		return -1;
-	}
-}
-
-static s16 get_rate_sctn_idx(const u8 rate)
-{
-	switch (rate) {
-	case MGN_1M: case MGN_2M: case MGN_5_5M: case MGN_11M:
-		return 0;
-	case MGN_6M: case MGN_9M: case MGN_12M: case MGN_18M:
-	case MGN_24M: case MGN_36M: case MGN_48M: case MGN_54M:
-		return 1;
-	case MGN_MCS0: case MGN_MCS1: case MGN_MCS2: case MGN_MCS3:
-	case MGN_MCS4: case MGN_MCS5: case MGN_MCS6: case MGN_MCS7:
-		return 2;
-	default:
-		return -1;
-	}
-}
-
-s8 phy_get_tx_pwr_lmt(struct adapter *adapter, u32 reg_pwr_tbl_sel,
-		      enum channel_width bandwidth,
-		      u8 rf_path, u8 data_rate, u8 channel)
-{
-	s16 idx_regulation = -1;
-	s16 idx_bandwidth  = -1;
-	s16 idx_rate_sctn  = -1;
-	s16 idx_channel    = -1;
-	s8 pwr_lmt = MAX_POWER_INDEX;
-	struct hal_com_data *hal_data = GET_HAL_DATA(adapter);
-	s8 limits[10] = {0}; u8 i = 0;
-
-	if (((adapter->registrypriv.reg_enable_tx_power_limit == 2) &&
-	     (hal_data->EEPROMRegulatory != 1)) ||
-	    (adapter->registrypriv.reg_enable_tx_power_limit == 0))
-		return MAX_POWER_INDEX;
-
-	switch (adapter->registrypriv.reg_pwr_tbl_sel) {
-	case 1:
-		idx_regulation = TXPWR_LMT_ETSI;
-		break;
-	case 2:
-		idx_regulation = TXPWR_LMT_MKK;
-		break;
-	case 3:
-		idx_regulation = TXPWR_LMT_FCC;
-		break;
-	case 4:
-		idx_regulation = TXPWR_LMT_WW;
-		break;
-	default:
-		idx_regulation = hal_data->Regulation2_4G;
-		break;
-	}
-
-	idx_bandwidth = get_bandwidth_idx(bandwidth);
-	idx_rate_sctn = get_rate_sctn_idx(data_rate);
-
-	/*  workaround for wrong index combination to obtain tx power limit, */
-	/*  OFDM only exists in BW 20M */
-	/*  CCK table will only be given in BW 20M */
-	/*  HT on 80M will reference to HT on 40M */
-	if (idx_rate_sctn == 0 || idx_rate_sctn == 1)
-		idx_bandwidth = 0;
-
-	channel = phy_GetChannelIndexOfTxPowerLimit(channel);
-
-	if (idx_regulation == -1 || idx_bandwidth == -1 ||
-	    idx_rate_sctn == -1 || idx_channel == -1)
-		return MAX_POWER_INDEX;
-
-	for (i = 0; i < MAX_REGULATION_NUM; i++)
-		limits[i] = hal_data->TxPwrLimit_2_4G[i]
-						     [idx_bandwidth]
-						     [idx_rate_sctn]
-						     [idx_channel]
-						     [rf_path];
-
-	pwr_lmt = (idx_regulation == TXPWR_LMT_WW) ?
-		phy_GetWorldWideLimit(limits) :
-		hal_data->TxPwrLimit_2_4G[idx_regulation]
-					 [idx_bandwidth]
-					 [idx_rate_sctn]
-					 [idx_channel]
-					 [rf_path];
-
-	return pwr_lmt;
-}
-
-void PHY_ConvertTxPowerLimitToPowerIndex(struct adapter *Adapter)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(Adapter);
-	struct registry_priv *r = &Adapter->registrypriv;
-	u8 BW40PwrBasedBm2_4G = 0x2E;
-	u8 regulation, bw, channel, rateSection;
-	s8 tempValue = 0, tempPwrLmt = 0;
-	u8 rfPath = 0;
-
-	for (regulation = 0; regulation < MAX_REGULATION_NUM; ++regulation) {
-		for (bw = 0; bw < MAX_2_4G_BANDWIDTH_NUM; ++bw) {
-			for (channel = 0; channel < CHANNEL_MAX_NUMBER_2G; ++channel) {
-				for (rateSection = 0; rateSection < MAX_RATE_SECTION_NUM; ++rateSection) {
-					tempPwrLmt = pHalData->TxPwrLimit_2_4G[regulation][bw][rateSection][channel][RF_PATH_A];
-
-					for (rfPath = RF_PATH_A; rfPath < MAX_RF_PATH_NUM; ++rfPath) {
-						if (pHalData->odmpriv.PhyRegPgValueType == PHY_REG_PG_EXACT_VALUE) {
-							if (rateSection == 2) /*  HT 1T */
-								BW40PwrBasedBm2_4G = PHY_GetTxPowerByRateBase(Adapter, rfPath, HT_MCS0_MCS7);
-							else if (rateSection == 1) /*  OFDM */
-								BW40PwrBasedBm2_4G = PHY_GetTxPowerByRateBase(Adapter, rfPath, OFDM);
-							else if (rateSection == 0) /*  CCK */
-								BW40PwrBasedBm2_4G = PHY_GetTxPowerByRateBase(Adapter, rfPath, CCK);
-						} else
-							BW40PwrBasedBm2_4G = r->reg_power_base * 2;
-
-						if (tempPwrLmt != MAX_POWER_INDEX) {
-							tempValue = tempPwrLmt - BW40PwrBasedBm2_4G;
-							pHalData->TxPwrLimit_2_4G[regulation][bw][rateSection][channel][rfPath] = tempValue;
-						}
-					}
-				}
-			}
-		}
-	}
-}
-
-void PHY_InitTxPowerLimit(struct adapter *Adapter)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(Adapter);
-	u8 i, j, k, l, m;
-
-	for (i = 0; i < MAX_REGULATION_NUM; ++i) {
-		for (j = 0; j < MAX_2_4G_BANDWIDTH_NUM; ++j)
-			for (k = 0; k < MAX_RATE_SECTION_NUM; ++k)
-				for (m = 0; m < CHANNEL_MAX_NUMBER_2G; ++m)
-					for (l = 0; l < MAX_RF_PATH_NUM; ++l)
-						pHalData->TxPwrLimit_2_4G[i][j][k][m][l] = MAX_POWER_INDEX;
-	}
-}
-
-void PHY_SetTxPowerLimit(
-	struct adapter *Adapter,
-	u8 *Regulation,
-	u8 *Bandwidth,
-	u8 *RateSection,
-	u8 *RfPath,
-	u8 *Channel,
-	u8 *PowerLimit
-)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(Adapter);
-	u8 regulation = 0, bandwidth = 0, rateSection = 0, channel;
-	s8 powerLimit = 0, prevPowerLimit, channelIndex;
-
-	GetU1ByteIntegerFromStringInDecimal((s8 *)Channel, &channel);
-	GetU1ByteIntegerFromStringInDecimal((s8 *)PowerLimit, &powerLimit);
-
-	powerLimit = powerLimit > MAX_POWER_INDEX ? MAX_POWER_INDEX : powerLimit;
-
-	if (strcmp(Regulation, "FCC") == 0)
-		regulation = 0;
-	else if (strcmp(Regulation, "MKK") == 0)
-		regulation = 1;
-	else if (strcmp(Regulation, "ETSI") == 0)
-		regulation = 2;
-	else if (strcmp(Regulation, "WW13") == 0)
-		regulation = 3;
-
-	if (strcmp(RateSection, "CCK") == 0 && strcmp(RfPath, "1T") == 0)
-		rateSection = 0;
-	else if (strcmp(RateSection, "OFDM") == 0 && strcmp(RfPath, "1T") == 0)
-		rateSection = 1;
-	else if (strcmp(RateSection, "HT") == 0 && strcmp(RfPath, "1T") == 0)
-		rateSection = 2;
-	else
-		return;
-
-	if (strcmp(Bandwidth, "20M") == 0)
-		bandwidth = 0;
-	else if (strcmp(Bandwidth, "40M") == 0)
-		bandwidth = 1;
-
-	channelIndex = phy_GetChannelIndexOfTxPowerLimit(channel);
-
-	if (channelIndex == -1)
-		return;
-
-	prevPowerLimit = pHalData->TxPwrLimit_2_4G[regulation][bandwidth][rateSection][channelIndex][RF_PATH_A];
-
-	if (powerLimit < prevPowerLimit)
-		pHalData->TxPwrLimit_2_4G[regulation][bandwidth][rateSection][channelIndex][RF_PATH_A] = powerLimit;
-}
-
-void Hal_ChannelPlanToRegulation(struct adapter *Adapter, u16 ChannelPlan)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	pHalData->Regulation2_4G = TXPWR_LMT_WW;
-
-	switch (ChannelPlan) {
-	case RT_CHANNEL_DOMAIN_WORLD_NULL:
-		pHalData->Regulation2_4G = TXPWR_LMT_WW;
-		break;
-	case RT_CHANNEL_DOMAIN_ETSI1_NULL:
-		pHalData->Regulation2_4G = TXPWR_LMT_ETSI;
-		break;
-	case RT_CHANNEL_DOMAIN_FCC1_NULL:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_MKK1_NULL:
-		pHalData->Regulation2_4G = TXPWR_LMT_MKK;
-		break;
-	case RT_CHANNEL_DOMAIN_ETSI2_NULL:
-		pHalData->Regulation2_4G = TXPWR_LMT_ETSI;
-		break;
-	case RT_CHANNEL_DOMAIN_FCC1_FCC1:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_ETSI1:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_MKK1_MKK1:
-		pHalData->Regulation2_4G = TXPWR_LMT_MKK;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_KCC1:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_FCC2:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_FCC3:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_FCC4:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_FCC5:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_FCC6:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_FCC1_FCC7:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_ETSI2:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_ETSI3:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_MKK1_MKK2:
-		pHalData->Regulation2_4G = TXPWR_LMT_MKK;
-		break;
-	case RT_CHANNEL_DOMAIN_MKK1_MKK3:
-		pHalData->Regulation2_4G = TXPWR_LMT_MKK;
-		break;
-	case RT_CHANNEL_DOMAIN_FCC1_NCC1:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_FCC1_NCC2:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_GLOBAL_NULL:
-		pHalData->Regulation2_4G = TXPWR_LMT_WW;
-		break;
-	case RT_CHANNEL_DOMAIN_ETSI1_ETSI4:
-		pHalData->Regulation2_4G = TXPWR_LMT_ETSI;
-		break;
-	case RT_CHANNEL_DOMAIN_FCC1_FCC2:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_FCC1_NCC3:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_ETSI5:
-		pHalData->Regulation2_4G = TXPWR_LMT_ETSI;
-		break;
-	case RT_CHANNEL_DOMAIN_FCC1_FCC8:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_ETSI6:
-		pHalData->Regulation2_4G = TXPWR_LMT_ETSI;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_ETSI7:
-		pHalData->Regulation2_4G = TXPWR_LMT_ETSI;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_ETSI8:
-		pHalData->Regulation2_4G = TXPWR_LMT_ETSI;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_ETSI9:
-		pHalData->Regulation2_4G = TXPWR_LMT_ETSI;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_ETSI10:
-		pHalData->Regulation2_4G = TXPWR_LMT_ETSI;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_ETSI11:
-		pHalData->Regulation2_4G = TXPWR_LMT_ETSI;
-		break;
-	case RT_CHANNEL_DOMAIN_FCC1_NCC4:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_ETSI12:
-		pHalData->Regulation2_4G = TXPWR_LMT_ETSI;
-		break;
-	case RT_CHANNEL_DOMAIN_FCC1_FCC9:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_WORLD_ETSI13:
-		pHalData->Regulation2_4G = TXPWR_LMT_ETSI;
-		break;
-	case RT_CHANNEL_DOMAIN_FCC1_FCC10:
-		pHalData->Regulation2_4G = TXPWR_LMT_FCC;
-		break;
-	case RT_CHANNEL_DOMAIN_REALTEK_DEFINE: /* Realtek Reserve */
-		pHalData->Regulation2_4G = TXPWR_LMT_WW;
-		break;
-	default:
-		break;
-	}
-}
diff --git a/drivers/staging/rtl8723bs/hal/hal_intf.c b/drivers/staging/rtl8723bs/hal/hal_intf.c
deleted file mode 100644
index 2caade1a8bdd..000000000000
--- a/drivers/staging/rtl8723bs/hal/hal_intf.c
+++ /dev/null
@@ -1,283 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <drv_types.h>
-#include <hal_data.h>
-
-static void rtw_hal_init_opmode(struct adapter *padapter)
-{
-	enum nl80211_iftype networkType = NL80211_IFTYPE_UNSPECIFIED;
-	struct  mlme_priv *pmlmepriv = &(padapter->mlmepriv);
-	signed int fw_state;
-
-	fw_state = get_fwstate(pmlmepriv);
-
-	if (fw_state & WIFI_ADHOC_STATE)
-		networkType = NL80211_IFTYPE_ADHOC;
-	else if (fw_state & WIFI_STATION_STATE)
-		networkType = NL80211_IFTYPE_STATION;
-	else if (fw_state & WIFI_AP_STATE)
-		networkType = NL80211_IFTYPE_AP;
-	else
-		return;
-
-	rtw_setopmode_cmd(padapter, networkType, false);
-}
-
-uint rtw_hal_init(struct adapter *padapter)
-{
-	uint status;
-	struct dvobj_priv *dvobj = adapter_to_dvobj(padapter);
-
-	status = rtl8723bs_hal_init(padapter);
-
-	if (status == _SUCCESS) {
-		rtw_hal_init_opmode(padapter);
-
-		dvobj->padapters->hw_init_completed = true;
-
-		if (padapter->registrypriv.notch_filter == 1)
-			rtw_hal_notch_filter(padapter, 1);
-
-		rtw_sec_restore_wep_key(dvobj->padapters);
-
-		init_hw_mlme_ext(padapter);
-
-		rtw_bb_rf_gain_offset(padapter);
-	} else {
-		dvobj->padapters->hw_init_completed = false;
-	}
-
-	return status;
-}
-
-uint rtw_hal_deinit(struct adapter *padapter)
-{
-	uint status = _SUCCESS;
-	struct dvobj_priv *dvobj = adapter_to_dvobj(padapter);
-
-	status = rtl8723bs_hal_deinit(padapter);
-
-	if (status == _SUCCESS) {
-		padapter = dvobj->padapters;
-		padapter->hw_init_completed = false;
-	}
-
-	return status;
-}
-
-void rtw_hal_set_hwreg(struct adapter *padapter, u8 variable, u8 *val)
-{
-	SetHwReg8723BS(padapter, variable, val);
-}
-
-void rtw_hal_get_hwreg(struct adapter *padapter, u8 variable, u8 *val)
-{
-	GetHwReg8723BS(padapter, variable, val);
-}
-
-void rtw_hal_set_hwreg_with_buf(struct adapter *padapter, u8 variable, u8 *pbuf, int len)
-{
-	SetHwRegWithBuf8723B(padapter, variable, pbuf, len);
-}
-
-u8 rtw_hal_get_def_var(struct adapter *padapter, enum hal_def_variable eVariable, void *pValue)
-{
-	return GetHalDefVar8723BSDIO(padapter, eVariable, pValue);
-}
-
-void rtw_hal_set_odm_var(struct adapter *padapter, enum hal_odm_variable eVariable, void *pValue1, bool bSet)
-{
-	SetHalODMVar(padapter, eVariable, pValue1, bSet);
-}
-
-u8 rtw_hal_check_ips_status(struct adapter *padapter)
-{
-	return CheckIPSStatus(padapter);
-}
-
-int rtw_hal_xmitframe_enqueue(struct adapter *padapter, struct xmit_frame *pxmitframe)
-{
-	return rtl8723bs_hal_xmitframe_enqueue(padapter, pxmitframe);
-}
-
-s32	rtw_hal_xmit(struct adapter *padapter, struct xmit_frame *pxmitframe)
-{
-	if (rtl8723bs_hal_xmit(padapter, pxmitframe))
-		return _FAIL;
-
-	return _SUCCESS;
-}
-
-/*
- * [IMPORTANT] This function would be run in interrupt context.
- */
-s32	rtw_hal_mgnt_xmit(struct adapter *padapter, struct xmit_frame *pmgntframe)
-{
-	update_mgntframe_attrib_addr(padapter, pmgntframe);
-	/* pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; */
-	/* pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; */
-	/* memcpy(pmgntframe->attrib.ra, pwlanhdr->addr1, ETH_ALEN); */
-
-	if (padapter->securitypriv.binstallBIPkey) {
-		if (is_multicast_ether_addr(pmgntframe->attrib.ra)) {
-			pmgntframe->attrib.encrypt = _BIP_;
-			/* pmgntframe->attrib.bswenc = true; */
-		} else {
-			pmgntframe->attrib.encrypt = _AES_;
-			pmgntframe->attrib.bswenc = true;
-		}
-		rtw_mgmt_xmitframe_coalesce(padapter, pmgntframe->pkt, pmgntframe);
-	}
-
-	return rtl8723bs_mgnt_xmit(padapter, pmgntframe);
-}
-
-s32	rtw_hal_init_xmit_priv(struct adapter *padapter)
-{
-	return rtl8723bs_init_xmit_priv(padapter);
-}
-
-void rtw_hal_free_xmit_priv(struct adapter *padapter)
-{
-	rtl8723bs_free_xmit_priv(padapter);
-}
-
-s32	rtw_hal_init_recv_priv(struct adapter *padapter)
-{
-	return rtl8723bs_init_recv_priv(padapter);
-}
-
-void rtw_hal_free_recv_priv(struct adapter *padapter)
-{
-	rtl8723bs_free_recv_priv(padapter);
-}
-
-void rtw_hal_update_ra_mask(struct sta_info *psta, u8 rssi_level)
-{
-	struct adapter *padapter;
-	struct mlme_priv *pmlmepriv;
-
-	if (!psta)
-		return;
-
-	padapter = psta->padapter;
-
-	pmlmepriv = &(padapter->mlmepriv);
-
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE))
-		add_ratid(padapter, psta, rssi_level);
-	else
-		UpdateHalRAMask8723B(padapter, psta->mac_id, rssi_level);
-}
-
-void rtw_hal_add_ra_tid(struct adapter *padapter, u32 bitmap, u8 *arg, u8 rssi_level)
-{
-	rtl8723b_Add_RateATid(padapter, bitmap, arg, rssi_level);
-}
-
-u32 rtw_hal_read_bbreg(struct adapter *padapter, u32 RegAddr, u32 BitMask)
-{
-	return PHY_QueryBBReg_8723B(padapter, RegAddr, BitMask);
-}
-void rtw_hal_write_bbreg(struct adapter *padapter, u32 RegAddr, u32 BitMask, u32 Data)
-{
-	PHY_SetBBReg_8723B(padapter, RegAddr, BitMask, Data);
-}
-
-u32 rtw_hal_read_rfreg(struct adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask)
-{
-	return PHY_QueryRFReg_8723B(padapter, eRFPath, RegAddr, BitMask);
-}
-void rtw_hal_write_rfreg(struct adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask, u32 Data)
-{
-	PHY_SetRFReg_8723B(padapter, eRFPath, RegAddr, BitMask, Data);
-}
-
-void rtw_hal_set_chan(struct adapter *padapter, u8 channel)
-{
-	PHY_SwChnl8723B(padapter, channel);
-}
-
-void rtw_hal_set_chnl_bw(struct adapter *padapter, u8 channel,
-			 enum channel_width Bandwidth, u8 Offset40, u8 Offset80)
-{
-	PHY_SetSwChnlBWMode8723B(padapter, channel, Bandwidth, Offset40, Offset80);
-}
-
-void rtw_hal_dm_watchdog(struct adapter *padapter)
-{
-	rtl8723b_HalDmWatchDog(padapter);
-}
-
-void rtw_hal_dm_watchdog_in_lps(struct adapter *padapter)
-{
-	if (adapter_to_pwrctl(padapter)->fw_current_in_ps_mode)
-		rtl8723b_HalDmWatchDog_in_LPS(padapter); /* this function caller is in interrupt context */
-}
-
-void beacon_timing_control(struct adapter *padapter)
-{
-	rtl8723b_SetBeaconRelatedRegisters(padapter);
-}
-
-s32 rtw_hal_xmit_thread_handler(struct adapter *padapter)
-{
-	return rtl8723bs_xmit_buf_handler(padapter);
-}
-
-void rtw_hal_notch_filter(struct adapter *adapter, bool enable)
-{
-	hal_notch_filter_8723b(adapter, enable);
-}
-
-bool rtw_hal_c2h_valid(struct adapter *adapter, u8 *buf)
-{
-	return c2h_evt_valid((struct c2h_evt_hdr_88xx *)buf);
-}
-
-s32 rtw_hal_c2h_handler(struct adapter *adapter, u8 *c2h_evt)
-{
-	return c2h_handler_8723b(adapter, c2h_evt);
-}
-
-c2h_id_filter rtw_hal_c2h_id_filter_ccx(struct adapter *adapter)
-{
-	return c2h_id_filter_ccx_8723b;
-}
-
-s32 rtw_hal_macid_sleep(struct adapter *padapter, u32 macid)
-{
-	u8 support;
-
-	support = false;
-	rtw_hal_get_def_var(padapter, HAL_DEF_MACID_SLEEP, &support);
-	if (false == support)
-		return _FAIL;
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_MACID_SLEEP, (u8 *)&macid);
-
-	return _SUCCESS;
-}
-
-s32 rtw_hal_macid_wakeup(struct adapter *padapter, u32 macid)
-{
-	u8 support;
-
-	support = false;
-	rtw_hal_get_def_var(padapter, HAL_DEF_MACID_SLEEP, &support);
-	if (false == support)
-		return _FAIL;
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_MACID_WAKEUP, (u8 *)&macid);
-
-	return _SUCCESS;
-}
-
-s32 rtw_hal_fill_h2c_cmd(struct adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer)
-{
-	return FillH2CCmd8723B(padapter, ElementID, CmdLen, pCmdBuffer);
-}
diff --git a/drivers/staging/rtl8723bs/hal/hal_pwr_seq.c b/drivers/staging/rtl8723bs/hal/hal_pwr_seq.c
deleted file mode 100644
index 0b60eba128af..000000000000
--- a/drivers/staging/rtl8723bs/hal/hal_pwr_seq.c
+++ /dev/null
@@ -1,128 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-/*
- * This file includes all kinds of Power Action event for RTL8723B
- * and corresponding hardware configurations which are released from HW SD.
- *
- * Major Change History:
- *	When       Who               What
- *	---------- ---------------   -------------------------------
- *	2011-08-08 Roger            Create.
- */
-
-#include "hal_pwr_seq.h"
-
-/* drivers should parse below arrays and do the corresponding actions */
-/* 3 Power on  Array */
-struct wlan_pwr_cfg rtl8723B_power_on_flow[
-	RTL8723B_TRANS_CARDEMU_TO_ACT_STEPS+
-	RTL8723B_TRANS_END_STEPS
-] = {
-	RTL8723B_TRANS_CARDEMU_TO_ACT
-	RTL8723B_TRANS_END
-};
-
-/* 3Radio off GPIO Array */
-struct wlan_pwr_cfg rtl8723B_radio_off_flow[
-	RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+
-	RTL8723B_TRANS_END_STEPS
-] = {
-	RTL8723B_TRANS_ACT_TO_CARDEMU
-	RTL8723B_TRANS_END
-};
-
-/* 3Card Disable Array */
-struct wlan_pwr_cfg rtl8723B_card_disable_flow[
-	RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+
-	RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS+
-	RTL8723B_TRANS_END_STEPS
-] = {
-	RTL8723B_TRANS_ACT_TO_CARDEMU
-	RTL8723B_TRANS_CARDEMU_TO_CARDDIS
-	RTL8723B_TRANS_END
-};
-
-/* 3 Card Enable Array */
-struct wlan_pwr_cfg rtl8723B_card_enable_flow[
-	RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+
-	RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS+
-	RTL8723B_TRANS_END_STEPS
-] = {
-	RTL8723B_TRANS_CARDDIS_TO_CARDEMU
-	RTL8723B_TRANS_CARDEMU_TO_ACT
-	RTL8723B_TRANS_END
-};
-
-/* 3Suspend Array */
-struct wlan_pwr_cfg rtl8723B_suspend_flow[
-	RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+
-	RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS+
-	RTL8723B_TRANS_END_STEPS
-] = {
-	RTL8723B_TRANS_ACT_TO_CARDEMU
-	RTL8723B_TRANS_CARDEMU_TO_SUS
-	RTL8723B_TRANS_END
-};
-
-/* 3 Resume Array */
-struct wlan_pwr_cfg rtl8723B_resume_flow[
-	RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+
-	RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS+
-	RTL8723B_TRANS_END_STEPS
-] = {
-	RTL8723B_TRANS_SUS_TO_CARDEMU
-	RTL8723B_TRANS_CARDEMU_TO_ACT
-	RTL8723B_TRANS_END
-};
-
-/* 3HWPDN Array */
-struct wlan_pwr_cfg rtl8723B_hwpdn_flow[
-	RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+
-	RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS+
-	RTL8723B_TRANS_END_STEPS
-] = {
-	RTL8723B_TRANS_ACT_TO_CARDEMU
-	RTL8723B_TRANS_CARDEMU_TO_PDN
-	RTL8723B_TRANS_END
-};
-
-/* 3 Enter LPS */
-struct wlan_pwr_cfg rtl8723B_enter_lps_flow[
-	RTL8723B_TRANS_ACT_TO_LPS_STEPS+RTL8723B_TRANS_END_STEPS
-] = {
-	/* FW behavior */
-	RTL8723B_TRANS_ACT_TO_LPS
-	RTL8723B_TRANS_END
-};
-
-/* 3 Leave LPS */
-struct wlan_pwr_cfg rtl8723B_leave_lps_flow[
-	RTL8723B_TRANS_LPS_TO_ACT_STEPS+RTL8723B_TRANS_END_STEPS
-] = {
-	/* FW behavior */
-	RTL8723B_TRANS_LPS_TO_ACT
-	RTL8723B_TRANS_END
-};
-
-/* 3 Enter SW LPS */
-struct wlan_pwr_cfg rtl8723B_enter_swlps_flow[
-	RTL8723B_TRANS_ACT_TO_SWLPS_STEPS+RTL8723B_TRANS_END_STEPS
-] = {
-	/* SW behavior */
-	RTL8723B_TRANS_ACT_TO_SWLPS
-	RTL8723B_TRANS_END
-};
-
-/* 3 Leave SW LPS */
-struct wlan_pwr_cfg rtl8723B_leave_swlps_flow[
-	RTL8723B_TRANS_SWLPS_TO_ACT_STEPS+RTL8723B_TRANS_END_STEPS
-] = {
-	/* SW behavior */
-	RTL8723B_TRANS_SWLPS_TO_ACT
-	RTL8723B_TRANS_END
-};
diff --git a/drivers/staging/rtl8723bs/hal/hal_sdio.c b/drivers/staging/rtl8723bs/hal/hal_sdio.c
deleted file mode 100644
index 7cead9664c99..000000000000
--- a/drivers/staging/rtl8723bs/hal/hal_sdio.c
+++ /dev/null
@@ -1,100 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <drv_types.h>
-#include <hal_data.h>
-
-u8 rtw_hal_sdio_max_txoqt_free_space(struct adapter *padapter)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-
-	if (pHalData->SdioTxOQTMaxFreeSpace < 8)
-		pHalData->SdioTxOQTMaxFreeSpace = 8;
-
-	return pHalData->SdioTxOQTMaxFreeSpace;
-}
-
-u8 rtw_hal_sdio_query_tx_freepage(
-	struct adapter *padapter, u8 PageIdx, u8 RequiredPageNum
-)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-
-	if ((pHalData->SdioTxFIFOFreePage[PageIdx] + pHalData->SdioTxFIFOFreePage[PUBLIC_QUEUE_IDX]) >= (RequiredPageNum))
-		return true;
-	else
-		return false;
-}
-
-void rtw_hal_sdio_update_tx_freepage(
-	struct adapter *padapter, u8 PageIdx, u8 RequiredPageNum
-)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	u8 DedicatedPgNum = 0;
-	u8 RequiredPublicFreePgNum = 0;
-	/* _irqL irql; */
-
-	DedicatedPgNum = pHalData->SdioTxFIFOFreePage[PageIdx];
-	if (RequiredPageNum <= DedicatedPgNum) {
-		pHalData->SdioTxFIFOFreePage[PageIdx] -= RequiredPageNum;
-	} else {
-		pHalData->SdioTxFIFOFreePage[PageIdx] = 0;
-		RequiredPublicFreePgNum = RequiredPageNum - DedicatedPgNum;
-		pHalData->SdioTxFIFOFreePage[PUBLIC_QUEUE_IDX] -= RequiredPublicFreePgNum;
-	}
-}
-
-void rtw_hal_set_sdio_tx_max_length(
-	struct adapter *padapter, u8 numHQ, u8 numNQ, u8 numLQ, u8 numPubQ
-)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	u32 page_size;
-	u32 lenHQ, lenNQ, lenLQ;
-
-	rtw_hal_get_def_var(padapter, HAL_DEF_TX_PAGE_SIZE, &page_size);
-
-	lenHQ = ((numHQ + numPubQ) >> 1) * page_size;
-	lenNQ = ((numNQ + numPubQ) >> 1) * page_size;
-	lenLQ = ((numLQ + numPubQ) >> 1) * page_size;
-
-	pHalData->sdio_tx_max_len[HI_QUEUE_IDX] =
-		(lenHQ > MAX_XMITBUF_SZ) ? MAX_XMITBUF_SZ : lenHQ;
-	pHalData->sdio_tx_max_len[MID_QUEUE_IDX] =
-		(lenNQ > MAX_XMITBUF_SZ) ? MAX_XMITBUF_SZ : lenNQ;
-	pHalData->sdio_tx_max_len[LOW_QUEUE_IDX] =
-		(lenLQ > MAX_XMITBUF_SZ) ? MAX_XMITBUF_SZ : lenLQ;
-}
-
-u32 rtw_hal_get_sdio_tx_max_length(struct adapter *padapter, u8 queue_idx)
-{
-	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	u32 deviceId, max_len;
-
-	deviceId = ffaddr2deviceId(pdvobjpriv, queue_idx);
-	switch (deviceId) {
-	case WLAN_TX_HIQ_DEVICE_ID:
-		max_len = pHalData->sdio_tx_max_len[HI_QUEUE_IDX];
-		break;
-
-	case WLAN_TX_MIQ_DEVICE_ID:
-		max_len = pHalData->sdio_tx_max_len[MID_QUEUE_IDX];
-		break;
-
-	case WLAN_TX_LOQ_DEVICE_ID:
-		max_len = pHalData->sdio_tx_max_len[LOW_QUEUE_IDX];
-		break;
-
-	default:
-		max_len = pHalData->sdio_tx_max_len[MID_QUEUE_IDX];
-		break;
-	}
-
-	return max_len;
-}
diff --git a/drivers/staging/rtl8723bs/hal/odm.c b/drivers/staging/rtl8723bs/hal/odm.c
deleted file mode 100644
index d18df407e365..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm.c
+++ /dev/null
@@ -1,988 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include "odm_precomp.h"
-
-/*  Global var */
-
-u32 OFDMSwingTable_New[OFDM_TABLE_SIZE] = {
-	0x0b40002d, /*  0,  -15.0dB */
-	0x0c000030, /*  1,  -14.5dB */
-	0x0cc00033, /*  2,  -14.0dB */
-	0x0d800036, /*  3,  -13.5dB */
-	0x0e400039, /*  4,  -13.0dB */
-	0x0f00003c, /*  5,  -12.5dB */
-	0x10000040, /*  6,  -12.0dB */
-	0x11000044, /*  7,  -11.5dB */
-	0x12000048, /*  8,  -11.0dB */
-	0x1300004c, /*  9,  -10.5dB */
-	0x14400051, /*  10, -10.0dB */
-	0x15800056, /*  11, -9.5dB */
-	0x16c0005b, /*  12, -9.0dB */
-	0x18000060, /*  13, -8.5dB */
-	0x19800066, /*  14, -8.0dB */
-	0x1b00006c, /*  15, -7.5dB */
-	0x1c800072, /*  16, -7.0dB */
-	0x1e400079, /*  17, -6.5dB */
-	0x20000080, /*  18, -6.0dB */
-	0x22000088, /*  19, -5.5dB */
-	0x24000090, /*  20, -5.0dB */
-	0x26000098, /*  21, -4.5dB */
-	0x288000a2, /*  22, -4.0dB */
-	0x2ac000ab, /*  23, -3.5dB */
-	0x2d4000b5, /*  24, -3.0dB */
-	0x300000c0, /*  25, -2.5dB */
-	0x32c000cb, /*  26, -2.0dB */
-	0x35c000d7, /*  27, -1.5dB */
-	0x390000e4, /*  28, -1.0dB */
-	0x3c8000f2, /*  29, -0.5dB */
-	0x40000100, /*  30, +0dB */
-	0x43c0010f, /*  31, +0.5dB */
-	0x47c0011f, /*  32, +1.0dB */
-	0x4c000130, /*  33, +1.5dB */
-	0x50800142, /*  34, +2.0dB */
-	0x55400155, /*  35, +2.5dB */
-	0x5a400169, /*  36, +3.0dB */
-	0x5fc0017f, /*  37, +3.5dB */
-	0x65400195, /*  38, +4.0dB */
-	0x6b8001ae, /*  39, +4.5dB */
-	0x71c001c7, /*  40, +5.0dB */
-	0x788001e2, /*  41, +5.5dB */
-	0x7f8001fe  /*  42, +6.0dB */
-};
-
-u8 CCKSwingTable_Ch1_Ch13_New[CCK_TABLE_SIZE][8] = {
-	{0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01}, /*   0, -16.0dB */
-	{0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, /*   1, -15.5dB */
-	{0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, /*   2, -15.0dB */
-	{0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, /*   3, -14.5dB */
-	{0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, /*   4, -14.0dB */
-	{0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, /*   5, -13.5dB */
-	{0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, /*   6, -13.0dB */
-	{0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, /*   7, -12.5dB */
-	{0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, /*   8, -12.0dB */
-	{0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, /*   9, -11.5dB */
-	{0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, /*  10, -11.0dB */
-	{0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, /*  11, -10.5dB */
-	{0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /*  12, -10.0dB */
-	{0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /*  13, -9.5dB */
-	{0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, /*  14, -9.0dB */
-	{0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, /*  15, -8.5dB */
-	{0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, /*  16, -8.0dB */
-	{0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, /*  17, -7.5dB */
-	{0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, /*  18, -7.0dB */
-	{0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, /*  19, -6.5dB */
-	{0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 0x02}, /*  20, -6.0dB */
-	{0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, /*  21, -5.5dB */
-	{0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, /*  22, -5.0dB */
-	{0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, /*  23, -4.5dB */
-	{0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, /*  24, -4.0dB */
-	{0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, /*  25, -3.5dB */
-	{0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, /*  26, -3.0dB */
-	{0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, /*  27, -2.5dB */
-	{0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, /*  28, -2.0dB */
-	{0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, /*  29, -1.5dB */
-	{0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, /*  30, -1.0dB */
-	{0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, /*  31, -0.5dB */
-	{0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04}	/*  32, +0dB */
-};
-
-u8 CCKSwingTable_Ch14_New[CCK_TABLE_SIZE][8] = {
-	{0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00}, /*   0, -16.0dB */
-	{0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /*   1, -15.5dB */
-	{0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /*   2, -15.0dB */
-	{0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /*   3, -14.5dB */
-	{0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /*   4, -14.0dB */
-	{0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /*   5, -13.5dB */
-	{0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /*   6, -13.0dB */
-	{0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, /*   7, -12.5dB */
-	{0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /*   8, -12.0dB */
-	{0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /*   9, -11.5dB */
-	{0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, /*  10, -11.0dB */
-	{0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, /*  11, -10.5dB */
-	{0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /*  12, -10.0dB */
-	{0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /*  13, -9.5dB */
-	{0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, /*  14, -9.0dB */
-	{0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, /*  15, -8.5dB */
-	{0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, /*  16, -8.0dB */
-	{0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, /*  17, -7.5dB */
-	{0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, /*  18, -7.0dB */
-	{0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, /*  19, -6.5dB */
-	{0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x00}, /*  20, -6.0dB */
-	{0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /*  21, -5.5dB */
-	{0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, /*  22, -5.0dB */
-	{0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, /*  23, -4.5dB */
-	{0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, /*  24, -4.0dB */
-	{0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, /*  25, -3.5dB */
-	{0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, /*  26, -3.0dB */
-	{0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, /*  27, -2.5dB */
-	{0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, /*  28, -2.0dB */
-	{0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, /*  29, -1.5dB */
-	{0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, /*  30, -1.0dB */
-	{0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, /*  31, -0.5dB */
-	{0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00}	/*  32, +0dB */
-};
-
-/* Remove Edca by Yu Chen */
-
-static void odm_CommonInfoSelfInit(struct dm_odm_t *pDM_Odm)
-{
-	pDM_Odm->bCckHighPower = (bool) PHY_QueryBBReg(pDM_Odm->Adapter, ODM_REG(CCK_RPT_FORMAT), ODM_BIT(CCK_RPT_FORMAT));
-	pDM_Odm->RFPathRxEnable = (u8) PHY_QueryBBReg(pDM_Odm->Adapter, ODM_REG(BB_RX_PATH), ODM_BIT(BB_RX_PATH));
-
-	pDM_Odm->TxRate = 0xFF;
-}
-
-static void odm_CommonInfoSelfUpdate(struct dm_odm_t *pDM_Odm)
-{
-	u8 EntryCnt = 0;
-	u8 i;
-	PSTA_INFO_T	pEntry;
-
-	if (*(pDM_Odm->pBandWidth) == ODM_BW40M) {
-		if (*(pDM_Odm->pSecChOffset) == 1)
-			pDM_Odm->ControlChannel = *(pDM_Odm->pChannel)-2;
-		else if (*(pDM_Odm->pSecChOffset) == 2)
-			pDM_Odm->ControlChannel = *(pDM_Odm->pChannel)+2;
-	} else
-		pDM_Odm->ControlChannel = *(pDM_Odm->pChannel);
-
-	for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) {
-		pEntry = pDM_Odm->pODM_StaInfo[i];
-		if (IS_STA_VALID(pEntry))
-			EntryCnt++;
-	}
-
-	if (EntryCnt == 1)
-		pDM_Odm->bOneEntryOnly = true;
-	else
-		pDM_Odm->bOneEntryOnly = false;
-}
-
-/* 3 ============================================================ */
-/* 3 RATR MASK */
-/* 3 ============================================================ */
-/* 3 ============================================================ */
-/* 3 Rate Adaptive */
-/* 3 ============================================================ */
-
-static void odm_RateAdaptiveMaskInit(struct dm_odm_t *pDM_Odm)
-{
-	struct odm_rate_adaptive *pOdmRA = &pDM_Odm->RateAdaptive;
-
-	pOdmRA->Type = DM_Type_ByDriver;
-	if (pOdmRA->Type == DM_Type_ByDriver)
-		pDM_Odm->bUseRAMask = true;
-	else
-		pDM_Odm->bUseRAMask = false;
-
-	pOdmRA->RATRState = DM_RATR_STA_INIT;
-	pOdmRA->LdpcThres = 35;
-	pOdmRA->bUseLdpc = false;
-	pOdmRA->HighRSSIThresh = 50;
-	pOdmRA->LowRSSIThresh = 20;
-}
-
-u32 ODM_Get_Rate_Bitmap(
-	struct dm_odm_t *pDM_Odm,
-	u32 macid,
-	u32 ra_mask,
-	u8 rssi_level
-)
-{
-	PSTA_INFO_T	pEntry;
-	u32 rate_bitmap = 0;
-	u8 WirelessMode;
-
-	pEntry = pDM_Odm->pODM_StaInfo[macid];
-	if (!IS_STA_VALID(pEntry))
-		return ra_mask;
-
-	WirelessMode = pEntry->wireless_mode;
-
-	switch (WirelessMode) {
-	case ODM_WM_B:
-		if (ra_mask & 0x0000000c)		/* 11M or 5.5M enable */
-			rate_bitmap = 0x0000000d;
-		else
-			rate_bitmap = 0x0000000f;
-		break;
-
-	case (ODM_WM_G):
-		if (rssi_level == DM_RATR_STA_HIGH)
-			rate_bitmap = 0x00000f00;
-		else
-			rate_bitmap = 0x00000ff0;
-		break;
-
-	case (ODM_WM_B|ODM_WM_G):
-		if (rssi_level == DM_RATR_STA_HIGH)
-			rate_bitmap = 0x00000f00;
-		else if (rssi_level == DM_RATR_STA_MIDDLE)
-			rate_bitmap = 0x00000ff0;
-		else
-			rate_bitmap = 0x00000ff5;
-		break;
-
-	case (ODM_WM_B|ODM_WM_G|ODM_WM_N24G):
-	case (ODM_WM_B|ODM_WM_N24G):
-	case (ODM_WM_G|ODM_WM_N24G):
-		if (rssi_level == DM_RATR_STA_HIGH)
-			rate_bitmap = 0x000f0000;
-		else if (rssi_level == DM_RATR_STA_MIDDLE)
-			rate_bitmap = 0x000ff000;
-		else {
-			if (*(pDM_Odm->pBandWidth) == ODM_BW40M)
-				rate_bitmap = 0x000ff015;
-			else
-				rate_bitmap = 0x000ff005;
-		}
-		break;
-
-	default:
-		rate_bitmap = 0x0fffffff;
-		break;
-	}
-
-	return ra_mask & rate_bitmap;
-
-}
-
-static void odm_RefreshRateAdaptiveMaskCE(struct dm_odm_t *pDM_Odm)
-{
-	u8 i;
-	struct adapter *padapter =  pDM_Odm->Adapter;
-
-	if (padapter->driver_stopped)
-		return;
-
-	if (!pDM_Odm->bUseRAMask)
-		return;
-
-	for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) {
-		PSTA_INFO_T pstat = pDM_Odm->pODM_StaInfo[i];
-
-		if (IS_STA_VALID(pstat)) {
-			if (is_multicast_ether_addr(pstat->hwaddr))  /* if (psta->mac_id == 1) */
-				continue;
-
-			if (true == ODM_RAStateCheck(pDM_Odm, pstat->rssi_stat.UndecoratedSmoothedPWDB, false, &pstat->rssi_level)) {
-				rtw_hal_update_ra_mask(pstat, pstat->rssi_level);
-			}
-
-		}
-	}
-}
-
-/*-----------------------------------------------------------------------------
- * Function:	odm_RefreshRateAdaptiveMask()
- *
- * Overview:	Update rate table mask according to rssi
- *
- * Input:		NONE
- *
- * Output:		NONE
- *
- * Return:		NONE
- *
- * Revised History:
- *When		Who		Remark
- *05/27/2009	hpfan	Create Version 0.
- *
- * --------------------------------------------------------------------------
- */
-static void odm_RefreshRateAdaptiveMask(struct dm_odm_t *pDM_Odm)
-{
-
-	if (!(pDM_Odm->SupportAbility & ODM_BB_RA_MASK))
-		return;
-
-	odm_RefreshRateAdaptiveMaskCE(pDM_Odm);
-}
-
-/*  Return Value: bool */
-/*  - true: RATRState is changed. */
-bool ODM_RAStateCheck(
-	struct dm_odm_t *pDM_Odm,
-	s32 RSSI,
-	bool bForceUpdate,
-	u8 *pRATRState
-)
-{
-	struct odm_rate_adaptive *pRA = &pDM_Odm->RateAdaptive;
-	const u8 GoUpGap = 5;
-	u8 HighRSSIThreshForRA = pRA->HighRSSIThresh;
-	u8 LowRSSIThreshForRA = pRA->LowRSSIThresh;
-	u8 RATRState;
-
-	/*  Threshold Adjustment: */
-	/*  when RSSI state trends to go up one or two levels, make sure RSSI is high enough. */
-	/*  Here GoUpGap is added to solve the boundary's level alternation issue. */
-	switch (*pRATRState) {
-	case DM_RATR_STA_INIT:
-	case DM_RATR_STA_HIGH:
-		break;
-
-	case DM_RATR_STA_MIDDLE:
-		HighRSSIThreshForRA += GoUpGap;
-		break;
-
-	case DM_RATR_STA_LOW:
-		HighRSSIThreshForRA += GoUpGap;
-		LowRSSIThreshForRA += GoUpGap;
-		break;
-
-	default:
-		netdev_dbg(pDM_Odm->Adapter->pnetdev,
-			   "wrong rssi level setting %d !", *pRATRState);
-		break;
-	}
-
-	/*  Decide RATRState by RSSI. */
-	if (RSSI > HighRSSIThreshForRA)
-		RATRState = DM_RATR_STA_HIGH;
-	else if (RSSI > LowRSSIThreshForRA)
-		RATRState = DM_RATR_STA_MIDDLE;
-	else
-		RATRState = DM_RATR_STA_LOW;
-
-	if (*pRATRState != RATRState || bForceUpdate) {
-		*pRATRState = RATRState;
-		return true;
-	}
-
-	return false;
-}
-
-/*  */
-
-/* 3 ============================================================ */
-/* 3 RSSI Monitor */
-/* 3 ============================================================ */
-
-static void odm_RSSIMonitorInit(struct dm_odm_t *pDM_Odm)
-{
-	struct ra_t *pRA_Table = &pDM_Odm->DM_RA_Table;
-
-	pRA_Table->firstconnect = false;
-
-}
-
-static void FindMinimumRSSI(struct adapter *padapter)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	struct dm_priv *pdmpriv = &pHalData->dmpriv;
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	/* 1 1.Determine the minimum RSSI */
-
-	if (!pDM_Odm->bLinked && (pdmpriv->EntryMinUndecoratedSmoothedPWDB == 0))
-		pdmpriv->MinUndecoratedPWDBForDM = 0;
-	else
-		pdmpriv->MinUndecoratedPWDBForDM = pdmpriv->EntryMinUndecoratedSmoothedPWDB;
-}
-
-static void odm_RSSIMonitorCheckCE(struct dm_odm_t *pDM_Odm)
-{
-	struct adapter *Adapter = pDM_Odm->Adapter;
-	struct hal_com_data	*pHalData = GET_HAL_DATA(Adapter);
-	struct dm_priv *pdmpriv = &pHalData->dmpriv;
-	int i;
-	int tmpEntryMaxPWDB = 0, tmpEntryMinPWDB = 0xff;
-	u8 sta_cnt = 0;
-	u32 PWDB_rssi[NUM_STA] = {0};/* 0~15]:MACID, [16~31]:PWDB_rssi */
-	struct ra_t *pRA_Table = &pDM_Odm->DM_RA_Table;
-
-	if (!pDM_Odm->bLinked)
-		return;
-
-	pRA_Table->firstconnect = pDM_Odm->bLinked;
-
-	/* if (check_fwstate(&Adapter->mlmepriv, WIFI_AP_STATE|WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE) == true) */
-	{
-		struct sta_info *psta;
-
-		for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) {
-			psta = pDM_Odm->pODM_StaInfo[i];
-			if (IS_STA_VALID(psta)) {
-				if (is_multicast_ether_addr(psta->hwaddr))  /* if (psta->mac_id == 1) */
-					continue;
-
-				if (psta->rssi_stat.UndecoratedSmoothedPWDB == (-1))
-					continue;
-
-				if (psta->rssi_stat.UndecoratedSmoothedPWDB < tmpEntryMinPWDB)
-					tmpEntryMinPWDB = psta->rssi_stat.UndecoratedSmoothedPWDB;
-
-				if (psta->rssi_stat.UndecoratedSmoothedPWDB > tmpEntryMaxPWDB)
-					tmpEntryMaxPWDB = psta->rssi_stat.UndecoratedSmoothedPWDB;
-
-				if (psta->rssi_stat.UndecoratedSmoothedPWDB != (-1))
-					PWDB_rssi[sta_cnt++] = (psta->mac_id | (psta->rssi_stat.UndecoratedSmoothedPWDB<<16));
-			}
-		}
-
-		for (i = 0; i < sta_cnt; i++) {
-			if (PWDB_rssi[i] != (0)) {
-				if (pHalData->fw_ractrl)/*  Report every sta's RSSI to FW */
-					rtl8723b_set_rssi_cmd(Adapter, (u8 *)(&PWDB_rssi[i]));
-			}
-		}
-	}
-
-	if (tmpEntryMaxPWDB != 0)	/*  If associated entry is found */
-		pdmpriv->EntryMaxUndecoratedSmoothedPWDB = tmpEntryMaxPWDB;
-	else
-		pdmpriv->EntryMaxUndecoratedSmoothedPWDB = 0;
-
-	if (tmpEntryMinPWDB != 0xff) /*  If associated entry is found */
-		pdmpriv->EntryMinUndecoratedSmoothedPWDB = tmpEntryMinPWDB;
-	else
-		pdmpriv->EntryMinUndecoratedSmoothedPWDB = 0;
-
-	FindMinimumRSSI(Adapter);/* get pdmpriv->MinUndecoratedPWDBForDM */
-
-	pDM_Odm->RSSI_Min = pdmpriv->MinUndecoratedPWDBForDM;
-	/* ODM_CmnInfoUpdate(&pHalData->odmpriv , ODM_CMNINFO_RSSI_MIN, pdmpriv->MinUndecoratedPWDBForDM); */
-}
-
-static void odm_RSSIMonitorCheck(struct dm_odm_t *pDM_Odm)
-{
-	if (!(pDM_Odm->SupportAbility & ODM_BB_RSSI_MONITOR))
-		return;
-
-	odm_RSSIMonitorCheckCE(pDM_Odm);
-
-}	/*  odm_RSSIMonitorCheck */
-
-/* 3 ============================================================ */
-/* 3 SW Antenna Diversity */
-/* 3 ============================================================ */
-static void odm_SwAntDetectInit(struct dm_odm_t *pDM_Odm)
-{
-	struct swat_t *pDM_SWAT_Table = &pDM_Odm->DM_SWAT_Table;
-
-	pDM_SWAT_Table->SWAS_NoLink_BK_Reg92c = rtw_read32(pDM_Odm->Adapter, rDPDT_control);
-	pDM_SWAT_Table->PreAntenna = MAIN_ANT;
-	pDM_SWAT_Table->CurAntenna = MAIN_ANT;
-	pDM_SWAT_Table->SWAS_NoLink_State = 0;
-}
-
-/* 3 ============================================================ */
-/* 3 Tx Power Tracking */
-/* 3 ============================================================ */
-
-static u8 getSwingIndex(struct dm_odm_t *pDM_Odm)
-{
-	struct adapter *Adapter = pDM_Odm->Adapter;
-	u8 i = 0;
-	u32 bbSwing;
-	u32 swingTableSize;
-	u32 *pSwingTable;
-
-	bbSwing = PHY_QueryBBReg(Adapter, rOFDM0_XATxIQImbalance, 0xFFC00000);
-
-	pSwingTable = OFDMSwingTable_New;
-	swingTableSize = OFDM_TABLE_SIZE;
-
-	for (i = 0; i < swingTableSize; ++i) {
-		u32 tableValue = pSwingTable[i];
-
-		if (tableValue >= 0x100000)
-			tableValue >>= 22;
-		if (bbSwing == tableValue)
-			break;
-	}
-	return i;
-}
-
-void odm_TXPowerTrackingInit(struct dm_odm_t *pDM_Odm)
-{
-	u8 defaultSwingIndex = getSwingIndex(pDM_Odm);
-	u8 p = 0;
-	struct adapter *Adapter = pDM_Odm->Adapter;
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	struct dm_priv *pdmpriv = &pHalData->dmpriv;
-
-	pdmpriv->bTXPowerTracking = true;
-	pdmpriv->TXPowercount = 0;
-	pdmpriv->bTXPowerTrackingInit = false;
-
-	if (*(pDM_Odm->mp_mode) != 1)
-		pdmpriv->TxPowerTrackControl = true;
-	else
-		pdmpriv->TxPowerTrackControl = false;
-
-	/* pDM_Odm->RFCalibrateInfo.TxPowerTrackControl = true; */
-	pDM_Odm->RFCalibrateInfo.ThermalValue = pHalData->EEPROMThermalMeter;
-	pDM_Odm->RFCalibrateInfo.ThermalValue_IQK = pHalData->EEPROMThermalMeter;
-	pDM_Odm->RFCalibrateInfo.ThermalValue_LCK = pHalData->EEPROMThermalMeter;
-
-	/*  The index of "0 dB" in SwingTable. */
-	pDM_Odm->DefaultOfdmIndex = (defaultSwingIndex >= OFDM_TABLE_SIZE) ? 30 : defaultSwingIndex;
-	pDM_Odm->DefaultCckIndex = 20;
-
-	pDM_Odm->BbSwingIdxCckBase = pDM_Odm->DefaultCckIndex;
-	pDM_Odm->RFCalibrateInfo.CCK_index = pDM_Odm->DefaultCckIndex;
-
-	for (p = RF_PATH_A; p < MAX_RF_PATH; ++p) {
-		pDM_Odm->BbSwingIdxOfdmBase[p] = pDM_Odm->DefaultOfdmIndex;
-		pDM_Odm->RFCalibrateInfo.OFDM_index[p] = pDM_Odm->DefaultOfdmIndex;
-		pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[p] = 0;
-		pDM_Odm->RFCalibrateInfo.DeltaPowerIndexLast[p] = 0;
-		pDM_Odm->RFCalibrateInfo.PowerIndexOffset[p] = 0;
-	}
-
-}
-
-void ODM_TXPowerTrackingCheck(struct dm_odm_t *pDM_Odm)
-{
-	struct adapter *Adapter = pDM_Odm->Adapter;
-
-	if (!(pDM_Odm->SupportAbility & ODM_RF_TX_PWR_TRACK))
-		return;
-
-	if (!pDM_Odm->RFCalibrateInfo.TM_Trigger) { /* at least delay 1 sec */
-		PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_T_METER_NEW, (BIT(17) | BIT(16)), 0x03);
-
-		pDM_Odm->RFCalibrateInfo.TM_Trigger = 1;
-		return;
-	} else {
-		ODM_TXPowerTrackingCallback_ThermalMeter(Adapter);
-		pDM_Odm->RFCalibrateInfo.TM_Trigger = 0;
-	}
-}
-
-/*  */
-/* 3 Export Interface */
-/*  */
-
-/*  */
-/*  2011/09/21 MH Add to describe different team necessary resource allocate?? */
-/*  */
-void ODM_DMInit(struct dm_odm_t *pDM_Odm)
-{
-
-	odm_CommonInfoSelfInit(pDM_Odm);
-	odm_DIGInit(pDM_Odm);
-	odm_NHMCounterStatisticsInit(pDM_Odm);
-	odm_AdaptivityInit(pDM_Odm);
-	odm_RateAdaptiveMaskInit(pDM_Odm);
-	ODM_CfoTrackingInit(pDM_Odm);
-	ODM_EdcaTurboInit(pDM_Odm);
-	odm_RSSIMonitorInit(pDM_Odm);
-	odm_TXPowerTrackingInit(pDM_Odm);
-
-	ODM_ClearTxPowerTrackingState(pDM_Odm);
-
-	odm_DynamicBBPowerSavingInit(pDM_Odm);
-	odm_DynamicTxPowerInit(pDM_Odm);
-
-	odm_SwAntDetectInit(pDM_Odm);
-}
-
-/*  */
-/*  2011/09/20 MH This is the entry pointer for all team to execute HW out source DM. */
-/*  You can not add any dummy function here, be care, you can only use DM structure */
-/*  to perform any new ODM_DM. */
-/*  */
-void ODM_DMWatchdog(struct dm_odm_t *pDM_Odm)
-{
-	odm_CommonInfoSelfUpdate(pDM_Odm);
-	odm_FalseAlarmCounterStatistics(pDM_Odm);
-	odm_NHMCounterStatistics(pDM_Odm);
-
-	odm_RSSIMonitorCheck(pDM_Odm);
-
-	/* For CE Platform(SPRD or Tablet) */
-	/* 8723A or 8189ES platform */
-	/* NeilChen--2012--08--24-- */
-	/* Fix Leave LPS issue */
-	if (adapter_to_pwrctl(pDM_Odm->Adapter)->pwr_mode != PS_MODE_ACTIVE) {
-		/* in LPS mode */
-		odm_DIGbyRSSI_LPS(pDM_Odm);
-	} else {
-		odm_DIG(pDM_Odm);
-	}
-
-	{
-		struct dig_t *pDM_DigTable = &pDM_Odm->DM_DigTable;
-
-		odm_Adaptivity(pDM_Odm, pDM_DigTable->CurIGValue);
-	}
-	odm_CCKPacketDetectionThresh(pDM_Odm);
-
-	if (*pDM_Odm->pbPowerSaving)
-		return;
-
-	odm_RefreshRateAdaptiveMask(pDM_Odm);
-	odm_EdcaTurboCheck(pDM_Odm);
-	ODM_CfoTracking(pDM_Odm);
-
-	ODM_TXPowerTrackingCheck(pDM_Odm);
-
-	/* odm_EdcaTurboCheck(pDM_Odm); */
-
-	/* 2010.05.30 LukeLee: For CE platform, files in IC subfolders may not be included to be compiled, */
-	/*  so compile flags must be left here to prevent from compile errors */
-	pDM_Odm->PhyDbgInfo.NumQryBeaconPkt = 0;
-}
-
-/*  */
-/*  Init /.. Fixed HW value. Only init time. */
-/*  */
-void ODM_CmnInfoInit(struct dm_odm_t *pDM_Odm, enum odm_cmninfo_e CmnInfo, u32 Value)
-{
-	/*  */
-	/*  This section is used for init value */
-	/*  */
-	switch (CmnInfo) {
-	/*  */
-	/*  Fixed ODM value. */
-	/*  */
-	case ODM_CMNINFO_ABILITY:
-		pDM_Odm->SupportAbility = (u32)Value;
-		break;
-
-	case ODM_CMNINFO_PLATFORM:
-		pDM_Odm->SupportPlatform = (u8)Value;
-		break;
-
-	case ODM_CMNINFO_INTERFACE:
-		pDM_Odm->SupportInterface = (u8)Value;
-		break;
-
-	case ODM_CMNINFO_IC_TYPE:
-		pDM_Odm->SupportICType = Value;
-		break;
-
-	case ODM_CMNINFO_CUT_VER:
-		pDM_Odm->CutVersion = (u8)Value;
-		break;
-
-	case ODM_CMNINFO_FAB_VER:
-		pDM_Odm->FabVersion = (u8)Value;
-		break;
-
-	case ODM_CMNINFO_RFE_TYPE:
-		pDM_Odm->RFEType = (u8)Value;
-		break;
-
-	case    ODM_CMNINFO_RF_ANTENNA_TYPE:
-		pDM_Odm->AntDivType = (u8)Value;
-		break;
-
-	case ODM_CMNINFO_PACKAGE_TYPE:
-		pDM_Odm->PackageType = (u8)Value;
-		break;
-
-	case ODM_CMNINFO_EXT_LNA:
-		pDM_Odm->ExtLNA = (u8)Value;
-		break;
-
-	case ODM_CMNINFO_EXT_PA:
-		pDM_Odm->ExtPA = (u8)Value;
-		break;
-
-	case ODM_CMNINFO_GPA:
-		pDM_Odm->TypeGPA = (enum odm_type_gpa_e)Value;
-		break;
-	case ODM_CMNINFO_APA:
-		pDM_Odm->TypeAPA = (enum odm_type_apa_e)Value;
-		break;
-	case ODM_CMNINFO_GLNA:
-		pDM_Odm->TypeGLNA = (enum odm_type_glna_e)Value;
-		break;
-	case ODM_CMNINFO_ALNA:
-		pDM_Odm->TypeALNA = (enum odm_type_alna_e)Value;
-		break;
-
-	case ODM_CMNINFO_EXT_TRSW:
-		pDM_Odm->ExtTRSW = (u8)Value;
-		break;
-	case ODM_CMNINFO_PATCH_ID:
-		pDM_Odm->PatchID = (u8)Value;
-		break;
-	case ODM_CMNINFO_BINHCT_TEST:
-		pDM_Odm->bInHctTest = (bool)Value;
-		break;
-	case ODM_CMNINFO_BWIFI_TEST:
-		pDM_Odm->bWIFITest = (bool)Value;
-		break;
-
-	case ODM_CMNINFO_SMART_CONCURRENT:
-		pDM_Odm->bDualMacSmartConcurrent = (bool)Value;
-		break;
-
-	/* To remove the compiler warning, must add an empty default statement to handle the other values. */
-	default:
-		/* do nothing */
-		break;
-	}
-
-}
-
-void ODM_CmnInfoHook(struct dm_odm_t *pDM_Odm, enum odm_cmninfo_e CmnInfo, void *pValue)
-{
-	/*  */
-	/*  Hook call by reference pointer. */
-	/*  */
-	switch (CmnInfo) {
-	/*  */
-	/*  Dynamic call by reference pointer. */
-	/*  */
-	case ODM_CMNINFO_MAC_PHY_MODE:
-		pDM_Odm->pMacPhyMode = pValue;
-		break;
-
-	case ODM_CMNINFO_TX_UNI:
-		pDM_Odm->pNumTxBytesUnicast = pValue;
-		break;
-
-	case ODM_CMNINFO_RX_UNI:
-		pDM_Odm->pNumRxBytesUnicast = pValue;
-		break;
-
-	case ODM_CMNINFO_WM_MODE:
-		pDM_Odm->pwirelessmode = pValue;
-		break;
-
-	case ODM_CMNINFO_SEC_CHNL_OFFSET:
-		pDM_Odm->pSecChOffset = pValue;
-		break;
-
-	case ODM_CMNINFO_SEC_MODE:
-		pDM_Odm->pSecurity = pValue;
-		break;
-
-	case ODM_CMNINFO_BW:
-		pDM_Odm->pBandWidth = pValue;
-		break;
-
-	case ODM_CMNINFO_CHNL:
-		pDM_Odm->pChannel = pValue;
-		break;
-
-	case ODM_CMNINFO_DMSP_GET_VALUE:
-		pDM_Odm->pbGetValueFromOtherMac = pValue;
-		break;
-
-	case ODM_CMNINFO_BUDDY_ADAPTOR:
-		pDM_Odm->pBuddyAdapter = pValue;
-		break;
-
-	case ODM_CMNINFO_DMSP_IS_MASTER:
-		pDM_Odm->pbMasterOfDMSP = pValue;
-		break;
-
-	case ODM_CMNINFO_SCAN:
-		pDM_Odm->pbScanInProcess = pValue;
-		break;
-
-	case ODM_CMNINFO_POWER_SAVING:
-		pDM_Odm->pbPowerSaving = pValue;
-		break;
-
-	case ODM_CMNINFO_ONE_PATH_CCA:
-		pDM_Odm->pOnePathCCA = pValue;
-		break;
-
-	case ODM_CMNINFO_DRV_STOP:
-		pDM_Odm->pbDriverStopped =  pValue;
-		break;
-
-	case ODM_CMNINFO_PNP_IN:
-		pDM_Odm->pbDriverIsGoingToPnpSetPowerSleep =  pValue;
-		break;
-
-	case ODM_CMNINFO_INIT_ON:
-		pDM_Odm->pinit_adpt_in_progress =  pValue;
-		break;
-
-	case ODM_CMNINFO_ANT_TEST:
-		pDM_Odm->pAntennaTest =  pValue;
-		break;
-
-	case ODM_CMNINFO_NET_CLOSED:
-		pDM_Odm->pbNet_closed = pValue;
-		break;
-
-	case ODM_CMNINFO_FORCED_RATE:
-		pDM_Odm->pForcedDataRate = pValue;
-		break;
-
-	case ODM_CMNINFO_FORCED_IGI_LB:
-		pDM_Odm->pu1ForcedIgiLb = pValue;
-		break;
-
-	case ODM_CMNINFO_MP_MODE:
-		pDM_Odm->mp_mode = pValue;
-		break;
-
-	/* case ODM_CMNINFO_RTSTA_AID: */
-	/* pDM_Odm->pAidMap =  (u8 *)pValue; */
-	/* break; */
-
-	/* case ODM_CMNINFO_BT_COEXIST: */
-	/* pDM_Odm->BTCoexist = (bool *)pValue; */
-
-	/* case ODM_CMNINFO_STA_STATUS: */
-	/* pDM_Odm->pODM_StaInfo[] = (PSTA_INFO_T)pValue; */
-	/* break; */
-
-	/* case ODM_CMNINFO_PHY_STATUS: */
-	/* pDM_Odm->pPhyInfo = (ODM_PHY_INFO *)pValue; */
-	/* break; */
-
-	/* case ODM_CMNINFO_MAC_STATUS: */
-	/* pDM_Odm->pMacInfo = (struct odm_mac_status_info *)pValue; */
-	/* break; */
-	/* To remove the compiler warning, must add an empty default statement to handle the other values. */
-	default:
-		/* do nothing */
-		break;
-	}
-
-}
-
-void ODM_CmnInfoPtrArrayHook(
-	struct dm_odm_t *pDM_Odm,
-	enum odm_cmninfo_e CmnInfo,
-	u16 Index,
-	void *pValue
-)
-{
-	/*  */
-	/*  Hook call by reference pointer. */
-	/*  */
-	switch (CmnInfo) {
-	/*  */
-	/*  Dynamic call by reference pointer. */
-	/*  */
-	case ODM_CMNINFO_STA_STATUS:
-		pDM_Odm->pODM_StaInfo[Index] = (PSTA_INFO_T)pValue;
-		break;
-	/* To remove the compiler warning, must add an empty default statement to handle the other values. */
-	default:
-		/* do nothing */
-		break;
-	}
-
-}
-
-/*  */
-/*  Update Band/CHannel/.. The values are dynamic but non-per-packet. */
-/*  */
-void ODM_CmnInfoUpdate(struct dm_odm_t *pDM_Odm, u32 CmnInfo, u64 Value)
-{
-	/*  */
-	/*  This init variable may be changed in run time. */
-	/*  */
-	switch (CmnInfo) {
-	case ODM_CMNINFO_LINK_IN_PROGRESS:
-		pDM_Odm->bLinkInProcess = (bool)Value;
-		break;
-
-	case ODM_CMNINFO_ABILITY:
-		pDM_Odm->SupportAbility = (u32)Value;
-		break;
-
-	case ODM_CMNINFO_WIFI_DIRECT:
-		pDM_Odm->bWIFI_Direct = (bool)Value;
-		break;
-
-	case ODM_CMNINFO_WIFI_DISPLAY:
-		pDM_Odm->bWIFI_Display = (bool)Value;
-		break;
-
-	case ODM_CMNINFO_LINK:
-		pDM_Odm->bLinked = (bool)Value;
-		break;
-
-	case ODM_CMNINFO_STATION_STATE:
-		pDM_Odm->bsta_state = (bool)Value;
-		break;
-
-	case ODM_CMNINFO_RSSI_MIN:
-		pDM_Odm->RSSI_Min = (u8)Value;
-		break;
-
-	case ODM_CMNINFO_RA_THRESHOLD_HIGH:
-		pDM_Odm->RateAdaptive.HighRSSIThresh = (u8)Value;
-		break;
-
-	case ODM_CMNINFO_RA_THRESHOLD_LOW:
-		pDM_Odm->RateAdaptive.LowRSSIThresh = (u8)Value;
-		break;
-	/*  The following is for BT HS mode and BT coexist mechanism. */
-	case ODM_CMNINFO_BT_ENABLED:
-		pDM_Odm->bBtEnabled = (bool)Value;
-		break;
-
-	case ODM_CMNINFO_BT_HS_CONNECT_PROCESS:
-		pDM_Odm->bBtConnectProcess = (bool)Value;
-		break;
-
-	case ODM_CMNINFO_BT_HS_RSSI:
-		pDM_Odm->btHsRssi = (u8)Value;
-		break;
-
-	case ODM_CMNINFO_BT_OPERATION:
-		pDM_Odm->bBtHsOperation = (bool)Value;
-		break;
-
-	case ODM_CMNINFO_BT_LIMITED_DIG:
-		pDM_Odm->bBtLimitedDig = (bool)Value;
-		break;
-
-	case ODM_CMNINFO_BT_DISABLE_EDCA:
-		pDM_Odm->bBtDisableEdcaTurbo = (bool)Value;
-		break;
-
-	default:
-		/* do nothing */
-		break;
-	}
-}
-
-/* 3 ============================================================ */
-/* 3 DIG */
-/* 3 ============================================================ */
-/*-----------------------------------------------------------------------------
- * Function:	odm_DIGInit()
- *
- * Overview:	Set DIG scheme init value.
- *
- * Input:		NONE
- *
- * Output:		NONE
- *
- * Return:		NONE
- *
- * Revised History:
- *When		Who		Remark
- *
- *---------------------------------------------------------------------------
- */
-
-/* Remove DIG by yuchen */
-
-/* Remove DIG and FA check by Yu Chen */
-
-/* 3 ============================================================ */
-/* 3 BB Power Save */
-/* 3 ============================================================ */
-
-/* Remove BB power saving by Yuchen */
-
-/* 3 ============================================================ */
-/* 3 Dynamic Tx Power */
-/* 3 ============================================================ */
-
-/* Remove BY YuChen */
-
diff --git a/drivers/staging/rtl8723bs/hal/odm.h b/drivers/staging/rtl8723bs/hal/odm.h
deleted file mode 100644
index a20b48660e63..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm.h
+++ /dev/null
@@ -1,1109 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef	__HALDMOUTSRC_H__
-#define __HALDMOUTSRC_H__
-
-#include "odm_EdcaTurboCheck.h"
-#include "odm_DIG.h"
-#include "odm_DynamicBBPowerSaving.h"
-#include "odm_DynamicTxPower.h"
-#include "odm_CfoTracking.h"
-
-#define	TP_MODE		0
-#define	RSSI_MODE		1
-#define	TRAFFIC_LOW	0
-#define	TRAFFIC_HIGH	1
-#define	NONE			0
-
-/* 3 Tx Power Tracking */
-/* 3 ============================================================ */
-#define		DPK_DELTA_MAPPING_NUM	13
-#define		index_mapping_HP_NUM	15
-#define	OFDM_TABLE_SIZE		43
-#define	CCK_TABLE_SIZE			33
-#define TXSCALE_TABLE_SIZE		37
-#define TXPWR_TRACK_TABLE_SIZE	30
-#define DELTA_SWINGIDX_SIZE     30
-#define BAND_NUM				4
-
-/* 3 PSD Handler */
-/* 3 ============================================================ */
-
-#define	AFH_PSD		1	/* 0:normal PSD scan, 1: only do 20 pts PSD */
-#define	MODE_40M		0	/* 0:20M, 1:40M */
-#define	PSD_TH2		3
-#define	PSD_CHMIN		20   /*  Minimum channel number for BT AFH */
-#define	SIR_STEP_SIZE	3
-#define   Smooth_Size_1		5
-#define	Smooth_TH_1	3
-#define   Smooth_Size_2		10
-#define	Smooth_TH_2	4
-#define   Smooth_Size_3		20
-#define	Smooth_TH_3	4
-#define   Smooth_Step_Size 5
-#define	Adaptive_SIR	1
-#define	PSD_RESCAN		4
-#define	PSD_SCAN_INTERVAL	700 /* ms */
-
-/* 8723A High Power IGI Setting */
-#define		DM_DIG_HIGH_PWR_IGI_LOWER_BOUND	0x22
-#define			DM_DIG_Gmode_HIGH_PWR_IGI_LOWER_BOUND 0x28
-#define		DM_DIG_HIGH_PWR_THRESHOLD	0x3a
-#define		DM_DIG_LOW_PWR_THRESHOLD	0x14
-
-/* ANT Test */
-#define			ANTTESTALL		0x00		/* Ant A or B will be Testing */
-#define		ANTTESTA		0x01		/* Ant A will be Testing */
-#define		ANTTESTB		0x02		/* Ant B will be testing */
-
-#define	PS_MODE_ACTIVE 0x01
-
-/* for 8723A Ant Definition--2012--06--07 due to different IC may be different ANT define */
-#define		MAIN_ANT		1		/* Ant A or Ant Main */
-#define		AUX_ANT		2		/* AntB or Ant Aux */
-#define		MAX_ANT		3		/*  3 for AP using */
-
-/* Antenna Diversity Type */
-#define	SW_ANTDIV	0
-#define	HW_ANTDIV	1
-/*  structure and define */
-
-/* Remove DIG by Yuchen */
-
-/* Remove BB power saving by Yuchn */
-
-/* Remove DIG by yuchen */
-
-struct dynamic_primary_CCA {
-	u8 PriCCA_flag;
-	u8 intf_flag;
-	u8 intf_type;
-	u8 DupRTS_flag;
-	u8 Monitor_flag;
-	u8 CH_offset;
-	u8 MF_state;
-};
-
-struct ra_t {
-	u8 firstconnect;
-};
-
-struct rxhp_t {
-	u8 RXHP_flag;
-	u8 PSD_func_trigger;
-	u8 PSD_bitmap_RXHP[80];
-	u8 Pre_IGI;
-	u8 Cur_IGI;
-	u8 Pre_pw_th;
-	u8 Cur_pw_th;
-	bool First_time_enter;
-	bool RXHP_enable;
-	u8 TP_Mode;
-	struct timer_list PSDTimer;
-};
-
-#define ASSOCIATE_ENTRY_NUM					32 /*  Max size of AsocEntry[]. */
-#define	ODM_ASSOCIATE_ENTRY_NUM				ASSOCIATE_ENTRY_NUM
-
-/*  This indicates two different the steps. */
-/*  In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air. */
-/*  In SWAW_STEP_DETERMINE, driver just compares the signal captured in SWAW_STEP_PEAK */
-/*  with original RSSI to determine if it is necessary to switch antenna. */
-#define SWAW_STEP_PEAK		0
-#define SWAW_STEP_DETERMINE	1
-
-#define	TP_MODE		0
-#define	RSSI_MODE		1
-#define	TRAFFIC_LOW	0
-#define	TRAFFIC_HIGH	1
-#define	TRAFFIC_UltraLOW	2
-
-struct swat_t { /* _SW_Antenna_Switch_ */
-	u8 Double_chk_flag;
-	u8 try_flag;
-	s32 PreRSSI;
-	u8 CurAntenna;
-	u8 PreAntenna;
-	u8 RSSI_Trying;
-	u8 TestMode;
-	u8 bTriggerAntennaSwitch;
-	u8 SelectAntennaMap;
-	u8 RSSI_target;
-	u8 reset_idx;
-	u16 Single_Ant_Counter;
-	u16 Dual_Ant_Counter;
-	u16 Aux_FailDetec_Counter;
-	u16 Retry_Counter;
-
-	/*  Before link Antenna Switch check */
-	u8 SWAS_NoLink_State;
-	u32 SWAS_NoLink_BK_Reg860;
-	u32 SWAS_NoLink_BK_Reg92c;
-	u32 SWAS_NoLink_BK_Reg948;
-	bool ANTA_ON;	/* To indicate Ant A is or not */
-	bool ANTB_ON;	/* To indicate Ant B is on or not */
-	bool Pre_Aux_FailDetec;
-	bool RSSI_AntDect_bResult;
-	u8 Ant2G;
-
-	s32 RSSI_sum_A;
-	s32 RSSI_sum_B;
-	s32 RSSI_cnt_A;
-	s32 RSSI_cnt_B;
-
-	u64 lastTxOkCnt;
-	u64 lastRxOkCnt;
-	u64 TXByteCnt_A;
-	u64 TXByteCnt_B;
-	u64 RXByteCnt_A;
-	u64 RXByteCnt_B;
-	u8 TrafficLoad;
-	u8 Train_time;
-	u8 Train_time_flag;
-	struct timer_list SwAntennaSwitchTimer;
-	struct timer_list SwAntennaSwitchTimer_8723B;
-	u32 PktCnt_SWAntDivByCtrlFrame;
-	bool bSWAntDivByCtrlFrame;
-};
-
-/* Remove Edca by YuChen */
-
-struct odm_rate_adaptive {
-	u8 Type;				/*  DM_Type_ByFW/DM_Type_ByDriver */
-	u8 LdpcThres;			/*  if RSSI > LdpcThres => switch from LPDC to BCC */
-	bool bUseLdpc;
-	bool bLowerRtsRate;
-	u8 HighRSSIThresh;		/*  if RSSI > HighRSSIThresh	=> RATRState is DM_RATR_STA_HIGH */
-	u8 LowRSSIThresh;		/*  if RSSI <= LowRSSIThresh	=> RATRState is DM_RATR_STA_LOW */
-	u8 RATRState;			/*  Current RSSI level, DM_RATR_STA_HIGH/DM_RATR_STA_MIDDLE/DM_RATR_STA_LOW */
-
-};
-
-#define IQK_MAC_REG_NUM		4
-#define IQK_ADDA_REG_NUM		16
-#define IQK_BB_REG_NUM_MAX	10
-#define IQK_BB_REG_NUM		9
-#define HP_THERMAL_NUM		8
-
-#define AVG_THERMAL_NUM		8
-#define IQK_MATRIX_REG_NUM	8
-#define IQK_MATRIX_SETTINGS_NUM	14 /* Channels_2_4G_NUM */
-
-#define		DM_Type_ByFW			0
-#define		DM_Type_ByDriver		1
-
-/*  */
-/*  Declare for common info */
-/*  */
-#define MAX_PATH_NUM_8723B		1
-
-#define IQK_THRESHOLD			8
-#define DPK_THRESHOLD			4
-
-struct odm_phy_info {
-	/*
-	 *  Be care, if you want to add any element, please insert it between
-	 *  rx_pwd_ball and signal_strength.
-	 */
-	u8 rx_pwd_ba11;
-
-	u8 signal_quality;             /* in 0-100 index. */
-	s8 rx_mimo_signal_quality[4];  /* per-path's EVM */
-	u8 rx_mimo_evm_dbm[4];         /* per-path's EVM dbm */
-
-	u8 rx_mimo_signal_strength[4]; /* in 0~100 index */
-
-	u16 cfo_short[4];              /* per-path's Cfo_short */
-	u16 cfo_tail[4];               /* per-path's Cfo_tail */
-
-	s8 rx_power;                   /* in dBm Translate from PWdB */
-
-	/*
-	 * Real power in dBm for this packet, no beautification and
-	 * aggregation. Keep this raw info to be used for the other procedures.
-	 */
-	s8 recv_signal_power;
-	u8 bt_rx_rssi_percentage;
-	u8 signal_strength;	       /* in 0-100 index. */
-
-	s8 rx_pwr[4];                  /* per-path's pwdb */
-
-	u8 rx_snr[4];                  /* per-path's SNR */
-	u8 band_width;
-	u8 bt_coex_pwr_adjust;
-};
-
-struct odm_packet_info {
-	u8 data_rate;
-	u8 station_id;
-	bool bssid_match;
-	bool to_self;
-	bool is_beacon;
-};
-
-struct odm_phy_dbg_info {
-	/* ODM Write, debug info */
-	s8 RxSNRdB[4];
-	u32 NumQryPhyStatus;
-	u32 NumQryPhyStatusCCK;
-	u32 NumQryPhyStatusOFDM;
-	u8 NumQryBeaconPkt;
-	/* Others */
-	s32 RxEVM[4];
-
-};
-
-struct odm_mac_status_info {
-	u8 test;
-};
-
-/*  */
-/*  2011/10/20 MH Define Common info enum for all team. */
-/*  */
-enum odm_cmninfo_e {
-	/*  Fixed value: */
-
-	/* HOOK BEFORE REG INIT----------- */
-	ODM_CMNINFO_PLATFORM = 0,
-	ODM_CMNINFO_ABILITY,					/*  ODM_ABILITY_E */
-	ODM_CMNINFO_INTERFACE,				/*  ODM_INTERFACE_E */
-	ODM_CMNINFO_IC_TYPE,					/*  ODM_IC_TYPE_E */
-	ODM_CMNINFO_CUT_VER,					/*  ODM_CUT_VERSION_E */
-	ODM_CMNINFO_FAB_VER,					/*  ODM_FAB_E */
-	ODM_CMNINFO_RFE_TYPE,
-	ODM_CMNINFO_PACKAGE_TYPE,
-	ODM_CMNINFO_EXT_LNA,					/*  true */
-	ODM_CMNINFO_EXT_PA,
-	ODM_CMNINFO_GPA,
-	ODM_CMNINFO_APA,
-	ODM_CMNINFO_GLNA,
-	ODM_CMNINFO_ALNA,
-	ODM_CMNINFO_EXT_TRSW,
-	ODM_CMNINFO_PATCH_ID,				/* CUSTOMER ID */
-	ODM_CMNINFO_BINHCT_TEST,
-	ODM_CMNINFO_BWIFI_TEST,
-	ODM_CMNINFO_SMART_CONCURRENT,
-	/* HOOK BEFORE REG INIT----------- */
-
-	/*  Dynamic value: */
-/*  POINTER REFERENCE----------- */
-	ODM_CMNINFO_MAC_PHY_MODE,	/*  ODM_MAC_PHY_MODE_E */
-	ODM_CMNINFO_TX_UNI,
-	ODM_CMNINFO_RX_UNI,
-	ODM_CMNINFO_WM_MODE,		/*  ODM_WIRELESS_MODE_E */
-	ODM_CMNINFO_SEC_CHNL_OFFSET,	/*  ODM_SEC_CHNL_OFFSET_E */
-	ODM_CMNINFO_SEC_MODE,		/*  ODM_SECURITY_E */
-	ODM_CMNINFO_BW,			/*  ODM_BW_E */
-	ODM_CMNINFO_CHNL,
-	ODM_CMNINFO_FORCED_RATE,
-
-	ODM_CMNINFO_DMSP_GET_VALUE,
-	ODM_CMNINFO_BUDDY_ADAPTOR,
-	ODM_CMNINFO_DMSP_IS_MASTER,
-	ODM_CMNINFO_SCAN,
-	ODM_CMNINFO_POWER_SAVING,
-	ODM_CMNINFO_ONE_PATH_CCA,	/*  ODM_CCA_PATH_E */
-	ODM_CMNINFO_DRV_STOP,
-	ODM_CMNINFO_PNP_IN,
-	ODM_CMNINFO_INIT_ON,
-	ODM_CMNINFO_ANT_TEST,
-	ODM_CMNINFO_NET_CLOSED,
-	ODM_CMNINFO_MP_MODE,
-	/* ODM_CMNINFO_RTSTA_AID,	 For win driver only? */
-	ODM_CMNINFO_FORCED_IGI_LB,
-	ODM_CMNINFO_IS1ANTENNA,
-	ODM_CMNINFO_RFDEFAULTPATH,
-/*  POINTER REFERENCE----------- */
-
-/* CALL BY VALUE------------- */
-	ODM_CMNINFO_WIFI_DIRECT,
-	ODM_CMNINFO_WIFI_DISPLAY,
-	ODM_CMNINFO_LINK_IN_PROGRESS,
-	ODM_CMNINFO_LINK,
-	ODM_CMNINFO_STATION_STATE,
-	ODM_CMNINFO_RSSI_MIN,
-	ODM_CMNINFO_DBG_COMP,			/*  u64 */
-	ODM_CMNINFO_DBG_LEVEL,			/*  u32 */
-	ODM_CMNINFO_RA_THRESHOLD_HIGH,		/*  u8 */
-	ODM_CMNINFO_RA_THRESHOLD_LOW,		/*  u8 */
-	ODM_CMNINFO_RF_ANTENNA_TYPE,		/*  u8 */
-	ODM_CMNINFO_BT_ENABLED,
-	ODM_CMNINFO_BT_HS_CONNECT_PROCESS,
-	ODM_CMNINFO_BT_HS_RSSI,
-	ODM_CMNINFO_BT_OPERATION,
-	ODM_CMNINFO_BT_LIMITED_DIG,		/* Need to Limited Dig or not */
-	ODM_CMNINFO_BT_DISABLE_EDCA,
-/* CALL BY VALUE------------- */
-
-	/*  Dynamic ptr array hook itms. */
-	ODM_CMNINFO_STA_STATUS,
-	ODM_CMNINFO_PHY_STATUS,
-	ODM_CMNINFO_MAC_STATUS,
-
-	ODM_CMNINFO_MAX,
-};
-
-/*  2011/10/20 MH Define ODM support ability.  ODM_CMNINFO_ABILITY */
-enum { /* _ODM_Support_Ability_Definition */
-	/*  */
-	/*  BB ODM section BIT 0-15 */
-	/*  */
-	ODM_BB_DIG			= BIT(0),
-	ODM_BB_RA_MASK			= BIT(1),
-	ODM_BB_DYNAMIC_TXPWR		= BIT(2),
-	ODM_BB_FA_CNT			= BIT(3),
-	ODM_BB_RSSI_MONITOR		= BIT(4),
-	ODM_BB_CCK_PD			= BIT(5),
-	ODM_BB_ANT_DIV			= BIT(6),
-	ODM_BB_PWR_SAVE			= BIT(7),
-	ODM_BB_PWR_TRAIN		= BIT(8),
-	ODM_BB_RATE_ADAPTIVE		= BIT(9),
-	ODM_BB_PATH_DIV			= BIT(10),
-	ODM_BB_PSD			= BIT(11),
-	ODM_BB_RXHP			= BIT(12),
-	ODM_BB_ADAPTIVITY		= BIT(13),
-	ODM_BB_CFO_TRACKING		= BIT(14),
-
-	/*  MAC DM section BIT 16-23 */
-	ODM_MAC_EDCA_TURBO		= BIT(16),
-	ODM_MAC_EARLY_MODE		= BIT(17),
-
-	/*  RF ODM section BIT 24-31 */
-	ODM_RF_TX_PWR_TRACK		= BIT(24),
-	ODM_RF_RX_GAIN_TRACK	= BIT(25),
-	ODM_RF_CALIBRATION		= BIT(26),
-};
-
-/* 	ODM_CMNINFO_INTERFACE */
-enum { /* tag_ODM_Support_Interface_Definition */
-	ODM_ITRF_SDIO	=	0x4,
-	ODM_ITRF_ALL	=	0x7,
-};
-
-/*  ODM_CMNINFO_IC_TYPE */
-enum { /* tag_ODM_Support_IC_Type_Definition */
-	ODM_RTL8723B	=	BIT(8),
-};
-
-/* ODM_CMNINFO_CUT_VER */
-enum { /* tag_ODM_Cut_Version_Definition */
-	ODM_CUT_A		=	0,
-	ODM_CUT_B		=	1,
-	ODM_CUT_C		=	2,
-	ODM_CUT_D		=	3,
-	ODM_CUT_E		=	4,
-	ODM_CUT_F		=	5,
-
-	ODM_CUT_I		=	8,
-	ODM_CUT_J		=	9,
-	ODM_CUT_K		=	10,
-	ODM_CUT_TEST	=	15,
-};
-
-/*  ODM_CMNINFO_FAB_VER */
-enum { /* tag_ODM_Fab_Version_Definition */
-	ODM_TSMC	=	0,
-	ODM_UMC		=	1,
-};
-
-/*  */
-/*  For example 1T2R (A+AB = BIT0|BIT4|BIT5) */
-/*  */
-enum { /* tag_ODM_RF_Type_Definition */
-	ODM_1T1R	=	0,
-	ODM_1T2R	=	1,
-	ODM_2T2R	=	2,
-	ODM_2T3R	=	3,
-	ODM_2T4R	=	4,
-	ODM_3T3R	=	5,
-	ODM_3T4R	=	6,
-	ODM_4T4R	=	7,
-};
-
-/*  */
-/*  ODM Dynamic common info value definition */
-/*  */
-
-/*  ODM_CMNINFO_WM_MODE */
-enum { /* tag_Wireless_Mode_Definition */
-	ODM_WM_UNKNOWN    = 0x0,
-	ODM_WM_B          = BIT(0),
-	ODM_WM_G          = BIT(1),
-	ODM_WM_N24G       = BIT(3),
-	ODM_WM_AUTO       = BIT(5),
-};
-
-/*  ODM_CMNINFO_BW */
-enum { /* tag_Bandwidth_Definition */
-	ODM_BW20M		= 0,
-	ODM_BW40M		= 1,
-};
-
-/*  For AC-series IC, external PA & LNA can be individually added on 2.4G */
-
-enum odm_type_gpa_e { /* tag_ODM_TYPE_GPA_Definition */
-	TYPE_GPA0 = 0,
-	TYPE_GPA1 = BIT(1)|BIT(0)
-};
-
-enum odm_type_apa_e { /* tag_ODM_TYPE_APA_Definition */
-	TYPE_APA0 = 0,
-	TYPE_APA1 = BIT(1)|BIT(0)
-};
-
-enum odm_type_glna_e { /* tag_ODM_TYPE_GLNA_Definition */
-	TYPE_GLNA0 = 0,
-	TYPE_GLNA1 = BIT(2)|BIT(0),
-	TYPE_GLNA2 = BIT(3)|BIT(1),
-	TYPE_GLNA3 = BIT(3)|BIT(2)|BIT(1)|BIT(0)
-};
-
-enum odm_type_alna_e { /* tag_ODM_TYPE_ALNA_Definition */
-	TYPE_ALNA0 = 0,
-	TYPE_ALNA1 = BIT(2)|BIT(0),
-	TYPE_ALNA2 = BIT(3)|BIT(1),
-	TYPE_ALNA3 = BIT(3)|BIT(2)|BIT(1)|BIT(0)
-};
-
-/* Remove PATHDIV_PARA struct to odm_PathDiv.h */
-
-struct odm_rf_cal_t { /* ODM_RF_Calibration_Structure */
-	/* for tx power tracking */
-
-	u32 RegA24; /*  for TempCCK */
-	s32 RegE94;
-	s32 RegE9C;
-	s32 RegEB4;
-	s32 RegEBC;
-
-	u8 TXPowercount;
-	bool bTXPowerTrackingInit;
-	bool bTXPowerTracking;
-	u8 TxPowerTrackControl; /* for mp mode, turn off txpwrtracking as default */
-	u8 TM_Trigger;
-
-	u8 ThermalMeter[2];    /*  ThermalMeter, index 0 for RFIC0, and 1 for RFIC1 */
-	u8 ThermalValue;
-	u8 ThermalValue_LCK;
-	u8 ThermalValue_IQK;
-	u8 ThermalValue_DPK;
-	u8 ThermalValue_AVG[AVG_THERMAL_NUM];
-	u8 ThermalValue_AVG_index;
-	u8 ThermalValue_RxGain;
-	u8 ThermalValue_Crystal;
-	u8 ThermalValue_DPKstore;
-	u8 ThermalValue_DPKtrack;
-	bool TxPowerTrackingInProgress;
-
-	bool bReloadtxpowerindex;
-	u8 bRfPiEnable;
-	u32 TXPowerTrackingCallbackCnt; /* cosa add for debug */
-
-	/*  Tx power Tracking ------------------------- */
-	u8 bCCKinCH14;
-	u8 CCK_index;
-	u8 OFDM_index[MAX_RF_PATH];
-	s8 PowerIndexOffset[MAX_RF_PATH];
-	s8 DeltaPowerIndex[MAX_RF_PATH];
-	s8 DeltaPowerIndexLast[MAX_RF_PATH];
-	bool bTxPowerChanged;
-
-	u8 ThermalValue_HP[HP_THERMAL_NUM];
-	u8 ThermalValue_HP_index;
-	s32 iqk_matrix_regs_setting_value[IQK_MATRIX_SETTINGS_NUM][IQK_MATRIX_REG_NUM];
-	bool bNeedIQK;
-	bool bIQKInProgress;
-	u8 Delta_IQK;
-	u8 Delta_LCK;
-	s8 BBSwingDiff2G; /*  Unit: dB */
-	u8 DeltaSwingTableIdx_2GCCKA_P[DELTA_SWINGIDX_SIZE];
-	u8 DeltaSwingTableIdx_2GCCKA_N[DELTA_SWINGIDX_SIZE];
-	u8 DeltaSwingTableIdx_2GCCKB_P[DELTA_SWINGIDX_SIZE];
-	u8 DeltaSwingTableIdx_2GCCKB_N[DELTA_SWINGIDX_SIZE];
-	u8 DeltaSwingTableIdx_2GA_P[DELTA_SWINGIDX_SIZE];
-	u8 DeltaSwingTableIdx_2GA_N[DELTA_SWINGIDX_SIZE];
-	u8 DeltaSwingTableIdx_2GB_P[DELTA_SWINGIDX_SIZE];
-	u8 DeltaSwingTableIdx_2GB_N[DELTA_SWINGIDX_SIZE];
-	u8 DeltaSwingTableIdx_2GA_P_8188E[DELTA_SWINGIDX_SIZE];
-	u8 DeltaSwingTableIdx_2GA_N_8188E[DELTA_SWINGIDX_SIZE];
-
-	/*  */
-
-	/* for IQK */
-	u32 RegC04;
-	u32 Reg874;
-	u32 RegC08;
-	u32 RegB68;
-	u32 RegB6C;
-	u32 Reg870;
-	u32 Reg860;
-	u32 Reg864;
-
-	bool bIQKInitialized;
-	bool bLCKInProgress;
-	bool bAntennaDetected;
-	u32 ADDA_backup[IQK_ADDA_REG_NUM];
-	u32 IQK_MAC_backup[IQK_MAC_REG_NUM];
-	u32 IQK_BB_backup_recover[9];
-	u32 IQK_BB_backup[IQK_BB_REG_NUM];
-	u32 TxIQC_8723B[2][3][2]; /*  { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}} */
-	u32 RxIQC_8723B[2][2][2]; /*  { {S1: 0xc14, 0xca0} ,           {S0: 0xc14, 0xca0}} */
-
-	/* for APK */
-	u32 APKoutput[2][2]; /* path A/B; output1_1a/output1_2a */
-	u8 bAPKdone;
-	u8 bAPKThermalMeterIgnore;
-
-	/*  DPK */
-	bool bDPKFail;
-	u8 bDPdone;
-	u8 bDPPathAOK;
-	u8 bDPPathBOK;
-
-	u32 TxLOK[2];
-
-};
-/*  */
-/*  ODM Dynamic common info value definition */
-/*  */
-
-struct fat_t { /* _FAST_ANTENNA_TRAINNING_ */
-	u8 Bssid[6];
-	u8 antsel_rx_keep_0;
-	u8 antsel_rx_keep_1;
-	u8 antsel_rx_keep_2;
-	u8 antsel_rx_keep_3;
-	u32 antSumRSSI[7];
-	u32 antRSSIcnt[7];
-	u32 antAveRSSI[7];
-	u8 FAT_State;
-	u32 TrainIdx;
-	u8 antsel_a[ODM_ASSOCIATE_ENTRY_NUM];
-	u8 antsel_b[ODM_ASSOCIATE_ENTRY_NUM];
-	u8 antsel_c[ODM_ASSOCIATE_ENTRY_NUM];
-	u32 MainAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM];
-	u32 AuxAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM];
-	u32 MainAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
-	u32 AuxAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
-	u8 RxIdleAnt;
-	bool	bBecomeLinked;
-	u32 MinMaxRSSI;
-	u8 idx_AntDiv_counter_2G;
-	u32 CCK_counter_main;
-	u32 CCK_counter_aux;
-	u32 OFDM_counter_main;
-	u32 OFDM_counter_aux;
-
-	u32 CCK_CtrlFrame_Cnt_main;
-	u32 CCK_CtrlFrame_Cnt_aux;
-	u32 OFDM_CtrlFrame_Cnt_main;
-	u32 OFDM_CtrlFrame_Cnt_aux;
-	u32 MainAnt_CtrlFrame_Sum;
-	u32 AuxAnt_CtrlFrame_Sum;
-	u32 MainAnt_CtrlFrame_Cnt;
-	u32 AuxAnt_CtrlFrame_Cnt;
-
-};
-
-enum {
-	NO_ANTDIV			= 0xFF,
-	CG_TRX_HW_ANTDIV		= 0x01,
-	CGCS_RX_HW_ANTDIV	= 0x02,
-	FIXED_HW_ANTDIV		= 0x03,
-	CG_TRX_SMART_ANTDIV	= 0x04,
-	CGCS_RX_SW_ANTDIV	= 0x05,
-	S0S1_SW_ANTDIV          = 0x06 /* 8723B intrnal switch S0 S1 */
-};
-
-struct pathdiv_t { /* _ODM_PATH_DIVERSITY_ */
-	u8 RespTxPath;
-	u8 PathSel[ODM_ASSOCIATE_ENTRY_NUM];
-	u32 PathA_Sum[ODM_ASSOCIATE_ENTRY_NUM];
-	u32 PathB_Sum[ODM_ASSOCIATE_ENTRY_NUM];
-	u32 PathA_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
-	u32 PathB_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
-};
-
-enum phy_reg_pg_type { /* _BASEBAND_CONFIG_PHY_REG_PG_VALUE_TYPE */
-	PHY_REG_PG_RELATIVE_VALUE = 0,
-	PHY_REG_PG_EXACT_VALUE = 1
-};
-
-/*  */
-/*  Antenna detection information from single tone mechanism, added by Roger, 2012.11.27. */
-/*  */
-struct ant_detected_info {
-	bool bAntDetected;
-	u32 dBForAntA;
-	u32 dBForAntB;
-	u32 dBForAntO;
-};
-
-/*  */
-/*  2011/09/22 MH Copy from SD4 defined structure. We use to support PHY DM integration. */
-/*  */
-struct dm_odm_t { /* DM_Out_Source_Dynamic_Mechanism_Structure */
-	struct adapter *Adapter;		/*  For CE/NIC team */
-	/*  WHen you use Adapter or priv pointer, you must make sure the pointer is ready. */
-	bool odm_ready;
-
-	enum phy_reg_pg_type PhyRegPgValueType;
-	u8 PhyRegPgVersion;
-
-	u32 NumQryPhyStatusAll;	/* CCK + OFDM */
-	u32 LastNumQryPhyStatusAll;
-	u32 RxPWDBAve;
-	bool MPDIG_2G;		/* off MPDIG */
-	u8 Times_2G;
-
-/*  ODM HANDLE, DRIVER NEEDS NOT TO HOOK------ */
-	bool bCckHighPower;
-	u8 RFPathRxEnable;		/*  ODM_CMNINFO_RFPATH_ENABLE */
-	u8 ControlChannel;
-/*  ODM HANDLE, DRIVER NEEDS NOT TO HOOK------ */
-
-/* 1  COMMON INFORMATION */
-
-	/*  */
-	/*  Init Value */
-	/*  */
-/* HOOK BEFORE REG INIT----------- */
-	/*  ODM Platform info AP/ADSL/CE/MP = 1/2/3/4 */
-	u8 SupportPlatform;
-	/*  ODM Support Ability DIG/RATR/TX_PWR_TRACK/... = 1/2/3/... */
-	u32 SupportAbility;
-	/*  ODM PCIE/USB/SDIO = 1/2/3 */
-	u8 SupportInterface;
-	/*  ODM composite or independent. Bit oriented/ 92C+92D+ .... or any other type = 1/2/3/... */
-	u32 SupportICType;
-	/*  Cut Version TestChip/A-cut/B-cut... = 0/1/2/3/... */
-	u8 CutVersion;
-	/*  Fab Version TSMC/UMC = 0/1 */
-	u8 FabVersion;
-	/*  RF Type 4T4R/3T3R/2T2R/1T2R/1T1R/... */
-	u8 RFEType;
-	/*  Board Type Normal/HighPower/MiniCard/SLIM/Combo/... = 0/1/2/3/4/... */
-	u8 BoardType;
-	u8 PackageType;
-	u8 TypeGLNA;
-	u8 TypeGPA;
-	u8 TypeALNA;
-	u8 TypeAPA;
-	/*  with external LNA  NO/Yes = 0/1 */
-	u8 ExtLNA;
-	/*  with external PA  NO/Yes = 0/1 */
-	u8 ExtPA;
-	/*  with external TRSW  NO/Yes = 0/1 */
-	u8 ExtTRSW;
-	u8 PatchID; /* Customer ID */
-	bool bInHctTest;
-	bool bWIFITest;
-
-	bool bDualMacSmartConcurrent;
-	u32 BK_SupportAbility;
-	u8 AntDivType;
-/* HOOK BEFORE REG INIT----------- */
-
-	/*  */
-	/*  Dynamic Value */
-	/*  */
-/*  POINTER REFERENCE----------- */
-
-	u8 u8_temp;
-	bool bool_temp;
-	struct adapter *adapter_temp;
-
-	/*  MAC PHY Mode SMSP/DMSP/DMDP = 0/1/2 */
-	u8 *pMacPhyMode;
-	/* TX Unicast byte count */
-	u64 *pNumTxBytesUnicast;
-	/* RX Unicast byte count */
-	u64 *pNumRxBytesUnicast;
-	/*  Wireless mode B/G/A/N = BIT0/BIT1/BIT2/BIT3 */
-	u8 *pwirelessmode; /* ODM_WIRELESS_MODE_E */
-	/*  Secondary channel offset don't_care/below/above = 0/1/2 */
-	u8 *pSecChOffset;
-	/*  Security mode Open/WEP/AES/TKIP = 0/1/2/3 */
-	u8 *pSecurity;
-	/*  BW info 20M/40M/80M = 0/1/2 */
-	u8 *pBandWidth;
-	/*  Central channel location Ch1/Ch2/.... */
-	u8 *pChannel; /* central channel number */
-	bool DPK_Done;
-	/*  Common info for 92D DMSP */
-
-	bool *pbGetValueFromOtherMac;
-	struct adapter **pBuddyAdapter;
-	bool *pbMasterOfDMSP; /* MAC0: master, MAC1: slave */
-	/*  Common info for Status */
-	bool *pbScanInProcess;
-	bool *pbPowerSaving;
-	/*  CCA Path 2-path/path-A/path-B = 0/1/2; using ODM_CCA_PATH_E. */
-	u8 *pOnePathCCA;
-	/* pMgntInfo->AntennaTest */
-	u8 *pAntennaTest;
-	bool *pbNet_closed;
-	u8 *mp_mode;
-	u8 *pu1ForcedIgiLb;
-/*  For 8723B IQK----------- */
-	bool *pIs1Antenna;
-	u8 *pRFDefaultPath;
-	/*  0:S1, 1:S0 */
-
-/*  POINTER REFERENCE----------- */
-	u16 *pForcedDataRate;
-/* CALL BY VALUE------------- */
-	bool bLinkInProcess;
-	bool bWIFI_Direct;
-	bool bWIFI_Display;
-	bool bLinked;
-
-	bool bsta_state;
-	u8 RSSI_Min;
-	u8 InterfaceIndex; /*  Add for 92D  dual MAC: 0--Mac0 1--Mac1 */
-	bool bOneEntryOnly;
-	/*  Common info for BTDM */
-	bool bBtEnabled;			/*  BT is disabled */
-	bool bBtConnectProcess;	/*  BT HS is under connection progress. */
-	u8 btHsRssi;				/*  BT HS mode wifi rssi value. */
-	bool bBtHsOperation;		/*  BT HS mode is under progress */
-	bool bBtDisableEdcaTurbo;	/*  Under some condition, don't enable the EDCA Turbo */
-	bool bBtLimitedDig;			/*  BT is busy. */
-/* CALL BY VALUE------------- */
-	u8 RSSI_A;
-	u8 RSSI_B;
-	u64 RSSI_TRSW;
-	u64 RSSI_TRSW_H;
-	u64 RSSI_TRSW_L;
-	u64 RSSI_TRSW_iso;
-
-	u8 RxRate;
-	bool bNoisyState;
-	u8 TxRate;
-	u8 LinkedInterval;
-	u8 preChannel;
-	u32 TxagcOffsetValueA;
-	bool IsTxagcOffsetPositiveA;
-	u32 TxagcOffsetValueB;
-	bool IsTxagcOffsetPositiveB;
-	u64	lastTxOkCnt;
-	u64	lastRxOkCnt;
-	u32 BbSwingOffsetA;
-	bool IsBbSwingOffsetPositiveA;
-	u32 BbSwingOffsetB;
-	bool IsBbSwingOffsetPositiveB;
-	s8 TH_L2H_ini;
-	s8 TH_EDCCA_HL_diff;
-	s8 IGI_Base;
-	u8 IGI_target;
-	bool ForceEDCCA;
-	u8 AdapEn_RSSI;
-	s8 Force_TH_H;
-	s8 Force_TH_L;
-	u8 IGI_LowerBound;
-	u8 antdiv_rssi;
-	u8 AntType;
-	u8 pre_AntType;
-	u8 antdiv_period;
-	u8 antdiv_select;
-	u8 NdpaPeriod;
-	bool H2C_RARpt_connect;
-
-	/*  add by Yu Cehn for adaptivtiy */
-	bool adaptivity_flag;
-	bool NHM_disable;
-	bool TxHangFlg;
-	bool Carrier_Sense_enable;
-	u8 tolerance_cnt;
-	u64 NHMCurTxOkcnt;
-	u64 NHMCurRxOkcnt;
-	u64 NHMLastTxOkcnt;
-	u64 NHMLastRxOkcnt;
-	u8 txEdcca1;
-	u8 txEdcca0;
-	s8 H2L_lb;
-	s8 L2H_lb;
-	u8 Adaptivity_IGI_upper;
-	u8 NHM_cnt_0;
-
-	/*  */
-	/* 2 Define STA info. */
-	/*  _ODM_STA_INFO */
-	/*  2012/01/12 MH For MP, we need to reduce one array pointer for default port.?? */
-	PSTA_INFO_T pODM_StaInfo[ODM_ASSOCIATE_ENTRY_NUM];
-
-	/*  */
-	/*  2012/02/14 MH Add to share 88E ra with other SW team. */
-	/*  We need to colelct all support abilit to a proper area. */
-	/*  */
-	bool RaSupport88E;
-
-	/*  Define ........... */
-
-	/*  Latest packet phy info (ODM write) */
-	struct odm_phy_dbg_info PhyDbgInfo;
-
-	/*  Latest packet phy info (ODM write) */
-	struct odm_mac_status_info *pMacInfo;
-
-	/*  */
-	/* ODM Structure */
-	/*  */
-	struct fat_t DM_FatTable;
-	struct dig_t DM_DigTable;
-	struct ps_t DM_PSTable;
-	struct dynamic_primary_CCA DM_PriCCA;
-	struct rxhp_t dM_RXHP_Table;
-	struct ra_t DM_RA_Table;
-	struct false_ALARM_STATISTICS FalseAlmCnt;
-	struct false_ALARM_STATISTICS FlaseAlmCntBuddyAdapter;
-	struct swat_t DM_SWAT_Table;
-	bool RSSI_test;
-	struct cfo_tracking DM_CfoTrack;
-
-	struct edca_t DM_EDCA_Table;
-	u32 WMMEDCA_BE;
-	struct pathdiv_t DM_PathDiv;
-	/*  Copy from SD4 structure */
-	/*  */
-	/*  ================================================== */
-	/*  */
-
-	/* common */
-
-	bool *pbDriverStopped;
-	bool *pbDriverIsGoingToPnpSetPowerSleep;
-	bool *pinit_adpt_in_progress;
-
-	/* PSD */
-	bool bUserAssignLevel;
-	struct timer_list PSDTimer;
-	u8 RSSI_BT;			/* come from BT */
-	bool bPSDinProcess;
-	bool bPSDactive;
-	bool bDMInitialGainEnable;
-
-	/* MPT DIG */
-	struct timer_list MPT_DIGTimer;
-
-	/* for rate adaptive, in fact,  88c/92c fw will handle this */
-	u8 bUseRAMask;
-
-	struct odm_rate_adaptive RateAdaptive;
-
-	struct ant_detected_info AntDetectedInfo; /*  Antenna detected information for RSSI tool */
-
-	struct odm_rf_cal_t RFCalibrateInfo;
-
-	/*  */
-	/*  TX power tracking */
-	/*  */
-	u8 BbSwingIdxOfdm[MAX_RF_PATH];
-	u8 BbSwingIdxOfdmCurrent;
-	u8 BbSwingIdxOfdmBase[MAX_RF_PATH];
-	bool BbSwingFlagOfdm;
-	u8 BbSwingIdxCck;
-	u8 BbSwingIdxCckCurrent;
-	u8 BbSwingIdxCckBase;
-	u8 DefaultOfdmIndex;
-	u8 DefaultCckIndex;
-	bool BbSwingFlagCck;
-
-	s8 Absolute_OFDMSwingIdx[MAX_RF_PATH];
-	s8 Remnant_OFDMSwingIdx[MAX_RF_PATH];
-	s8 Remnant_CCKSwingIdx;
-	s8 Modify_TxAGC_Value;       /* Remnat compensate value at TxAGC */
-	bool Modify_TxAGC_Flag_PathA;
-	bool Modify_TxAGC_Flag_PathB;
-	bool Modify_TxAGC_Flag_PathC;
-	bool Modify_TxAGC_Flag_PathD;
-	bool Modify_TxAGC_Flag_PathA_CCK;
-
-	s8 KfreeOffset[MAX_RF_PATH];
-	/*  */
-	/*  ODM system resource. */
-	/*  */
-
-	/*  ODM relative time. */
-	struct timer_list PathDivSwitchTimer;
-	/* 2011.09.27 add for Path Diversity */
-	struct timer_list CCKPathDiversityTimer;
-	struct timer_list FastAntTrainingTimer;
-
-	/*  ODM relative workitem. */
-
-	#if (BEAMFORMING_SUPPORT == 1)
-	RT_BEAMFORMING_INFO BeamformingInfo;
-	#endif
-};
-
-enum ODM_BB_Config_Type {
-	CONFIG_BB_PHY_REG,
-	CONFIG_BB_AGC_TAB,
-	CONFIG_BB_AGC_TAB_2G,
-	CONFIG_BB_PHY_REG_PG,
-	CONFIG_BB_PHY_REG_MP,
-	CONFIG_BB_AGC_TAB_DIFF,
-};
-
-enum ODM_RF_Config_Type {
-	CONFIG_RF_RADIO,
-	CONFIG_RF_TXPWR_LMT,
-};
-
-enum ODM_FW_Config_Type {
-	CONFIG_FW_NIC,
-	CONFIG_FW_NIC_2,
-	CONFIG_FW_AP,
-	CONFIG_FW_WoWLAN,
-	CONFIG_FW_WoWLAN_2,
-	CONFIG_FW_AP_WoWLAN,
-	CONFIG_FW_BT,
-};
-
-/* include "odm_function.h" */
-
-/* 3 =========================================================== */
-/* 3 DIG */
-/* 3 =========================================================== */
-
-/* Remove DIG by Yuchen */
-
-/* 3 =========================================================== */
-/* 3 AGC RX High Power Mode */
-/* 3 =========================================================== */
-#define          LNA_Low_Gain_1                      0x64
-#define          LNA_Low_Gain_2                      0x5A
-#define          LNA_Low_Gain_3                      0x58
-
-#define          FA_RXHP_TH1                           5000
-#define          FA_RXHP_TH2                           1500
-#define          FA_RXHP_TH3                             800
-#define          FA_RXHP_TH4                             600
-#define          FA_RXHP_TH5                             500
-
-/* 3 =========================================================== */
-/* 3 EDCA */
-/* 3 =========================================================== */
-
-/* 3 =========================================================== */
-/* 3 Dynamic Tx Power */
-/* 3 =========================================================== */
-/* Dynamic Tx Power Control Threshold */
-
-/* 3 =========================================================== */
-/* 3 Rate Adaptive */
-/* 3 =========================================================== */
-#define		DM_RATR_STA_INIT			0
-#define		DM_RATR_STA_HIGH			1
-#define		DM_RATR_STA_MIDDLE			2
-#define		DM_RATR_STA_LOW				3
-
-/* 3 =========================================================== */
-/* 3 BB Power Save */
-/* 3 =========================================================== */
-
-enum { /* tag_1R_CCA_Type_Definition */
-	CCA_1R = 0,
-	CCA_2R = 1,
-	CCA_MAX = 2,
-};
-
-enum { /* tag_RF_Type_Definition */
-	RF_Save = 0,
-	RF_Normal = 1,
-	RF_MAX = 2,
-};
-
-/*  Maximal number of antenna detection mechanism needs to perform, added by Roger, 2011.12.28. */
-#define	MAX_ANTENNA_DETECTION_CNT	10
-
-/*  */
-/*  Extern Global Variables. */
-/*  */
-extern	u32 OFDMSwingTable_New[OFDM_TABLE_SIZE];
-extern	u8 CCKSwingTable_Ch1_Ch13_New[CCK_TABLE_SIZE][8];
-extern	u8 CCKSwingTable_Ch14_New[CCK_TABLE_SIZE][8];
-
-/*  */
-/*  check Sta pointer valid or not */
-/*  */
-#define IS_STA_VALID(pSta)		(pSta)
-/*  20100514 Joseph: Add definition for antenna switching test after link. */
-/*  This indicates two different the steps. */
-/*  In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air. */
-/*  In SWAW_STEP_DETERMINE, driver just compares the signal captured in SWAW_STEP_PEAK */
-/*  with original RSSI to determine if it is necessary to switch antenna. */
-#define SWAW_STEP_PEAK		0
-#define SWAW_STEP_DETERMINE	1
-
-/* Remove BB power saving by Yuchen */
-
-#define dm_CheckTXPowerTracking ODM_TXPowerTrackingCheck
-void ODM_TXPowerTrackingCheck(struct dm_odm_t *pDM_Odm);
-
-bool ODM_RAStateCheck(
-	struct dm_odm_t *pDM_Odm,
-	s32	RSSI,
-	bool bForceUpdate,
-	u8 *pRATRState
-);
-
-#define dm_SWAW_RSSI_Check	ODM_SwAntDivChkPerPktRssi
-void ODM_SwAntDivChkPerPktRssi(
-	struct dm_odm_t *pDM_Odm,
-	u8 StationID,
-	struct odm_phy_info *pPhyInfo
-);
-
-u32 ODM_Get_Rate_Bitmap(
-	struct dm_odm_t *pDM_Odm,
-	u32 macid,
-	u32 ra_mask,
-	u8 rssi_level
-);
-
-#if (BEAMFORMING_SUPPORT == 1)
-BEAMFORMING_CAP Beamforming_GetEntryBeamCapByMacId(PMGNT_INFO pMgntInfo, u8 MacId);
-#endif
-
-void odm_TXPowerTrackingInit(struct dm_odm_t *pDM_Odm);
-
-void ODM_DMInit(struct dm_odm_t *pDM_Odm);
-
-void ODM_DMWatchdog(struct dm_odm_t *pDM_Odm); /*  For common use in the future */
-
-void ODM_CmnInfoInit(struct dm_odm_t *pDM_Odm, enum odm_cmninfo_e CmnInfo, u32 Value);
-
-void ODM_CmnInfoHook(struct dm_odm_t *pDM_Odm, enum odm_cmninfo_e CmnInfo, void *pValue);
-
-void ODM_CmnInfoPtrArrayHook(
-	struct dm_odm_t *pDM_Odm,
-	enum odm_cmninfo_e CmnInfo,
-	u16 Index,
-	void *pValue
-);
-
-void ODM_CmnInfoUpdate(struct dm_odm_t *pDM_Odm, u32 CmnInfo, u64 Value);
-
-void ODM_InitAllTimers(struct dm_odm_t *pDM_Odm);
-
-void ODM_CancelAllTimers(struct dm_odm_t *pDM_Odm);
-
-void ODM_ReleaseAllTimers(struct dm_odm_t *pDM_Odm);
-
-void ODM_AntselStatistics_88C(
-	struct dm_odm_t *pDM_Odm,
-	u8 MacId,
-	u32 PWDBAll,
-	bool isCCKrate
-);
-
-void ODM_DynamicARFBSelect(struct dm_odm_t *pDM_Odm, u8 rate, bool Collision_State);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/hal/odm_CfoTracking.c b/drivers/staging/rtl8723bs/hal/odm_CfoTracking.c
deleted file mode 100644
index 7e6b49399abb..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_CfoTracking.c
+++ /dev/null
@@ -1,210 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include "odm_precomp.h"
-
-static void odm_SetCrystalCap(void *pDM_VOID, u8 CrystalCap)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct cfo_tracking *pCfoTrack = &pDM_Odm->DM_CfoTrack;
-
-	if (pCfoTrack->CrystalCap == CrystalCap)
-		return;
-
-	pCfoTrack->CrystalCap = CrystalCap;
-
-	/*  0x2C[23:18] = 0x2C[17:12] = CrystalCap */
-	CrystalCap = CrystalCap & 0x3F;
-	PHY_SetBBReg(
-		pDM_Odm->Adapter,
-		REG_MAC_PHY_CTRL,
-		0x00FFF000,
-		(CrystalCap | (CrystalCap << 6))
-	);
-}
-
-static u8 odm_GetDefaultCrytaltalCap(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-
-	struct adapter *Adapter = pDM_Odm->Adapter;
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	return pHalData->CrystalCap & 0x3f;
-}
-
-static void odm_SetATCStatus(void *pDM_VOID, bool ATCStatus)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct cfo_tracking *pCfoTrack = &pDM_Odm->DM_CfoTrack;
-
-	if (pCfoTrack->bATCStatus == ATCStatus)
-		return;
-
-	PHY_SetBBReg(
-		pDM_Odm->Adapter,
-		ODM_REG(BB_ATC),
-		ODM_BIT(BB_ATC),
-		ATCStatus
-	);
-	pCfoTrack->bATCStatus = ATCStatus;
-}
-
-static bool odm_GetATCStatus(void *pDM_VOID)
-{
-	bool ATCStatus;
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-
-	ATCStatus = (bool)PHY_QueryBBReg(
-		pDM_Odm->Adapter,
-		ODM_REG(BB_ATC),
-		ODM_BIT(BB_ATC)
-	);
-	return ATCStatus;
-}
-
-void ODM_CfoTrackingReset(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct cfo_tracking *pCfoTrack = &pDM_Odm->DM_CfoTrack;
-
-	pCfoTrack->DefXCap = odm_GetDefaultCrytaltalCap(pDM_Odm);
-	pCfoTrack->bAdjust = true;
-
-	odm_SetCrystalCap(pDM_Odm, pCfoTrack->DefXCap);
-	odm_SetATCStatus(pDM_Odm, true);
-}
-
-void ODM_CfoTrackingInit(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct cfo_tracking *pCfoTrack = &pDM_Odm->DM_CfoTrack;
-
-	pCfoTrack->DefXCap =
-		pCfoTrack->CrystalCap = odm_GetDefaultCrytaltalCap(pDM_Odm);
-	pCfoTrack->bATCStatus = odm_GetATCStatus(pDM_Odm);
-	pCfoTrack->bAdjust = true;
-}
-
-void ODM_CfoTracking(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct cfo_tracking *pCfoTrack = &pDM_Odm->DM_CfoTrack;
-	int CFO_kHz_A, CFO_ave = 0;
-	int CFO_ave_diff;
-	int CrystalCap = (int)pCfoTrack->CrystalCap;
-	u8 Adjust_Xtal = 1;
-
-	/* 4 Support ability */
-	if (!(pDM_Odm->SupportAbility & ODM_BB_CFO_TRACKING))
-		return;
-
-	if (!pDM_Odm->bLinked || !pDM_Odm->bOneEntryOnly) {
-		/* 4 No link or more than one entry */
-		ODM_CfoTrackingReset(pDM_Odm);
-	} else {
-		/* 3 1. CFO Tracking */
-		/* 4 1.1 No new packet */
-		if (pCfoTrack->packetCount == pCfoTrack->packetCount_pre)
-			return;
-
-		pCfoTrack->packetCount_pre = pCfoTrack->packetCount;
-
-		/* 4 1.2 Calculate CFO */
-		CFO_kHz_A =  (int)(pCfoTrack->CFO_tail[0] * 3125)  / 1280;
-
-		CFO_ave = CFO_kHz_A;
-
-		/* 4 1.3 Avoid abnormal large CFO */
-		CFO_ave_diff =
-			(pCfoTrack->CFO_ave_pre >= CFO_ave) ?
-			(pCfoTrack->CFO_ave_pre-CFO_ave) :
-			(CFO_ave-pCfoTrack->CFO_ave_pre);
-
-		if (
-			CFO_ave_diff > 20 &&
-			pCfoTrack->largeCFOHit == 0 &&
-			!pCfoTrack->bAdjust
-		) {
-			pCfoTrack->largeCFOHit = 1;
-			return;
-		}
-
-		pCfoTrack->largeCFOHit = 0;
-		pCfoTrack->CFO_ave_pre = CFO_ave;
-
-		/* 4 1.4 Dynamic Xtal threshold */
-		if (!pCfoTrack->bAdjust) {
-			if (CFO_ave > CFO_TH_XTAL_HIGH || CFO_ave < (-CFO_TH_XTAL_HIGH))
-				pCfoTrack->bAdjust = true;
-		} else {
-			if (CFO_ave < CFO_TH_XTAL_LOW && CFO_ave > (-CFO_TH_XTAL_LOW))
-				pCfoTrack->bAdjust = false;
-		}
-
-		/* 4 1.5 BT case: Disable CFO tracking */
-		if (pDM_Odm->bBtEnabled) {
-			pCfoTrack->bAdjust = false;
-			odm_SetCrystalCap(pDM_Odm, pCfoTrack->DefXCap);
-		}
-
-		/* 4 1.6 Big jump */
-		if (pCfoTrack->bAdjust) {
-			if (CFO_ave > CFO_TH_XTAL_LOW)
-				Adjust_Xtal = Adjust_Xtal + ((CFO_ave - CFO_TH_XTAL_LOW) >> 2);
-			else if (CFO_ave < (-CFO_TH_XTAL_LOW))
-				Adjust_Xtal = Adjust_Xtal + ((CFO_TH_XTAL_LOW - CFO_ave) >> 2);
-		}
-
-		/* 4 1.7 Adjust Crystal Cap. */
-		if (pCfoTrack->bAdjust) {
-			if (CFO_ave > CFO_TH_XTAL_LOW)
-				CrystalCap = CrystalCap + Adjust_Xtal;
-			else if (CFO_ave < (-CFO_TH_XTAL_LOW))
-				CrystalCap = CrystalCap - Adjust_Xtal;
-
-			if (CrystalCap > 0x3f)
-				CrystalCap = 0x3f;
-			else if (CrystalCap < 0)
-				CrystalCap = 0;
-
-			odm_SetCrystalCap(pDM_Odm, (u8)CrystalCap);
-		}
-
-		/* 3 2. Dynamic ATC switch */
-		if (CFO_ave < CFO_TH_ATC && CFO_ave > -CFO_TH_ATC)
-			odm_SetATCStatus(pDM_Odm, false);
-		else
-			odm_SetATCStatus(pDM_Odm, true);
-	}
-}
-
-void odm_parsing_cfo(void *dm_void, void *pkt_info_void, s8 *cfotail)
-{
-	struct dm_odm_t *dm_odm = (struct dm_odm_t *)dm_void;
-	struct odm_packet_info *pkt_info = pkt_info_void;
-	struct cfo_tracking *cfo_track = &dm_odm->DM_CfoTrack;
-	u8 i;
-
-	if (!(dm_odm->SupportAbility & ODM_BB_CFO_TRACKING))
-		return;
-
-	if (pkt_info->station_id != 0) {
-		/*
-		 * 3 Update CFO report for path-A & path-B
-		 * Only paht-A and path-B have CFO tail and short CFO
-		 */
-		for (i = RF_PATH_A; i <= RF_PATH_B; i++)
-			cfo_track->CFO_tail[i] = (int)cfotail[i];
-
-		/* 3 Update packet counter */
-		if (cfo_track->packetCount == 0xffffffff)
-			cfo_track->packetCount = 0;
-		else
-			cfo_track->packetCount++;
-	}
-}
diff --git a/drivers/staging/rtl8723bs/hal/odm_CfoTracking.h b/drivers/staging/rtl8723bs/hal/odm_CfoTracking.h
deleted file mode 100644
index 8fa6d9ec5880..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_CfoTracking.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef	__ODMCFOTRACK_H__
-#define    __ODMCFOTRACK_H__
-
-#define		CFO_TH_XTAL_HIGH		20		/*  kHz */
-#define		CFO_TH_XTAL_LOW			10		/*  kHz */
-#define		CFO_TH_ATC			80		/*  kHz */
-
-struct cfo_tracking {
-	bool bATCStatus;
-	bool largeCFOHit;
-	bool bAdjust;
-	u8 CrystalCap;
-	u8 DefXCap;
-	int CFO_tail[2];
-	int CFO_ave_pre;
-	u32 packetCount;
-	u32 packetCount_pre;
-
-	bool bForceXtalCap;
-	bool bReset;
-};
-
-void ODM_CfoTrackingReset(void *pDM_VOID
-);
-
-void ODM_CfoTrackingInit(void *pDM_VOID);
-
-void ODM_CfoTracking(void *pDM_VOID);
-
-void odm_parsing_cfo(void *pDM_VOID, void *pPktinfo_VOID, s8 *pcfotail);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/hal/odm_DIG.c b/drivers/staging/rtl8723bs/hal/odm_DIG.c
deleted file mode 100644
index c862c86b7695..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_DIG.c
+++ /dev/null
@@ -1,799 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include "odm_precomp.h"
-
-void odm_NHMCounterStatisticsInit(void *pDM_VOID)
-{
-	struct dm_odm_t	*pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-
-	/* PHY parameters initialize for n series */
-	rtw_write16(pDM_Odm->Adapter, ODM_REG_NHM_TIMER_11N+2, 0x2710);	/* 0x894[31:16]= 0x2710	Time duration for NHM unit: 4us, 0x2710 =40ms */
-	/* rtw_write16(pDM_Odm->Adapter, ODM_REG_NHM_TIMER_11N+2, 0x4e20);	0x894[31:16]= 0x4e20	Time duration for NHM unit: 4us, 0x4e20 =80ms */
-	rtw_write16(pDM_Odm->Adapter, ODM_REG_NHM_TH9_TH10_11N+2, 0xffff);	/* 0x890[31:16]= 0xffff	th_9, th_10 */
-	/* rtw_write32(pDM_Odm->Adapter, ODM_REG_NHM_TH3_TO_TH0_11N, 0xffffff5c);	0x898 = 0xffffff5c		th_3, th_2, th_1, th_0 */
-	rtw_write32(pDM_Odm->Adapter, ODM_REG_NHM_TH3_TO_TH0_11N, 0xffffff52);	/* 0x898 = 0xffffff52		th_3, th_2, th_1, th_0 */
-	rtw_write32(pDM_Odm->Adapter, ODM_REG_NHM_TH7_TO_TH4_11N, 0xffffffff);	/* 0x89c = 0xffffffff		th_7, th_6, th_5, th_4 */
-	PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_FPGA0_IQK_11N, bMaskByte0, 0xff);		/* 0xe28[7:0]= 0xff		th_8 */
-	PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_NHM_TH9_TH10_11N, BIT(10)|BIT(9)|BIT(8), 0x7);	/* 0x890[9:8]=3			enable CCX */
-	PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_OFDM_FA_RSTC_11N, BIT(7), 0x1);		/* 0xc0c[7]= 1			max power among all RX ants */
-}
-
-void odm_NHMCounterStatistics(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-
-	/*  Get NHM report */
-	odm_GetNHMCounterStatistics(pDM_Odm);
-
-	/*  Reset NHM counter */
-	odm_NHMCounterStatisticsReset(pDM_Odm);
-}
-
-void odm_GetNHMCounterStatistics(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	u32 value32 = 0;
-
-	value32 = PHY_QueryBBReg(pDM_Odm->Adapter, ODM_REG_NHM_CNT_11N, bMaskDWord);
-
-	pDM_Odm->NHM_cnt_0 = (u8)(value32 & bMaskByte0);
-}
-
-void odm_NHMCounterStatisticsReset(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-
-	PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_NHM_TH9_TH10_11N, BIT(1), 0);
-	PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_NHM_TH9_TH10_11N, BIT(1), 1);
-}
-
-void odm_NHMBBInit(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-
-	pDM_Odm->adaptivity_flag = false;
-	pDM_Odm->tolerance_cnt = 3;
-	pDM_Odm->NHMLastTxOkcnt = 0;
-	pDM_Odm->NHMLastRxOkcnt = 0;
-	pDM_Odm->NHMCurTxOkcnt = 0;
-	pDM_Odm->NHMCurRxOkcnt = 0;
-}
-
-/*  */
-void odm_NHMBB(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	/* u8 test_status; */
-	/* struct false_ALARM_STATISTICS *pFalseAlmCnt = &pDM_Odm->FalseAlmCnt; */
-
-	pDM_Odm->NHMCurTxOkcnt =
-		*(pDM_Odm->pNumTxBytesUnicast)-pDM_Odm->NHMLastTxOkcnt;
-	pDM_Odm->NHMCurRxOkcnt =
-		*(pDM_Odm->pNumRxBytesUnicast)-pDM_Odm->NHMLastRxOkcnt;
-	pDM_Odm->NHMLastTxOkcnt =
-		*(pDM_Odm->pNumTxBytesUnicast);
-	pDM_Odm->NHMLastRxOkcnt =
-		*(pDM_Odm->pNumRxBytesUnicast);
-
-	if ((pDM_Odm->NHMCurTxOkcnt) + 1 > (u64)(pDM_Odm->NHMCurRxOkcnt<<2) + 1) { /* Tx > 4*Rx possible for adaptivity test */
-		if (pDM_Odm->NHM_cnt_0 >= 190 || pDM_Odm->adaptivity_flag) {
-			/* Enable EDCCA since it is possible running Adaptivity testing */
-			/* test_status = 1; */
-			pDM_Odm->adaptivity_flag = true;
-			pDM_Odm->tolerance_cnt = 0;
-		} else {
-			if (pDM_Odm->tolerance_cnt < 3)
-				pDM_Odm->tolerance_cnt = pDM_Odm->tolerance_cnt + 1;
-			else
-				pDM_Odm->tolerance_cnt = 4;
-			/* test_status = 5; */
-			if (pDM_Odm->tolerance_cnt > 3) {
-				/* test_status = 3; */
-				pDM_Odm->adaptivity_flag = false;
-			}
-		}
-	} else { /*  TX<RX */
-		if (pDM_Odm->adaptivity_flag && pDM_Odm->NHM_cnt_0 <= 200) {
-			/* test_status = 2; */
-			pDM_Odm->tolerance_cnt = 0;
-		} else {
-			if (pDM_Odm->tolerance_cnt < 3)
-				pDM_Odm->tolerance_cnt = pDM_Odm->tolerance_cnt + 1;
-			else
-				pDM_Odm->tolerance_cnt = 4;
-			/* test_status = 5; */
-			if (pDM_Odm->tolerance_cnt > 3) {
-				/* test_status = 4; */
-				pDM_Odm->adaptivity_flag = false;
-			}
-		}
-	}
-}
-
-void odm_SearchPwdBLowerBound(void *pDM_VOID, u8 IGI_target)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	u32 value32 = 0;
-	u8 cnt, IGI;
-	bool bAdjust = true;
-	s8 TH_L2H_dmc, TH_H2L_dmc;
-	s8 Diff;
-
-	IGI = 0x50; /*  find H2L, L2H lower bound */
-	ODM_Write_DIG(pDM_Odm, IGI);
-
-	Diff = IGI_target-(s8)IGI;
-	TH_L2H_dmc = pDM_Odm->TH_L2H_ini + Diff;
-	if (TH_L2H_dmc > 10)
-		TH_L2H_dmc = 10;
-	TH_H2L_dmc = TH_L2H_dmc - pDM_Odm->TH_EDCCA_HL_diff;
-	PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskByte0, (u8)TH_L2H_dmc);
-	PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskByte2, (u8)TH_H2L_dmc);
-
-	mdelay(5);
-
-	while (bAdjust) {
-		for (cnt = 0; cnt < 20; cnt++) {
-			value32 = PHY_QueryBBReg(pDM_Odm->Adapter, ODM_REG_RPT_11N, bMaskDWord);
-
-			if (value32 & BIT(30))
-				pDM_Odm->txEdcca1 = pDM_Odm->txEdcca1 + 1;
-			else if (value32 & BIT(29))
-				pDM_Odm->txEdcca1 = pDM_Odm->txEdcca1 + 1;
-			else
-				pDM_Odm->txEdcca0 = pDM_Odm->txEdcca0 + 1;
-		}
-
-		if (pDM_Odm->txEdcca1 > 5) {
-			IGI = IGI-1;
-			TH_L2H_dmc = TH_L2H_dmc + 1;
-			if (TH_L2H_dmc > 10)
-				TH_L2H_dmc = 10;
-			TH_H2L_dmc = TH_L2H_dmc - pDM_Odm->TH_EDCCA_HL_diff;
-			PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskByte0, (u8)TH_L2H_dmc);
-			PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskByte2, (u8)TH_H2L_dmc);
-
-			pDM_Odm->TxHangFlg = true;
-			pDM_Odm->txEdcca1 = 0;
-			pDM_Odm->txEdcca0 = 0;
-
-			if (TH_L2H_dmc == 10) {
-				bAdjust = false;
-				pDM_Odm->TxHangFlg = false;
-				pDM_Odm->txEdcca1 = 0;
-				pDM_Odm->txEdcca0 = 0;
-				pDM_Odm->H2L_lb = TH_H2L_dmc;
-				pDM_Odm->L2H_lb = TH_L2H_dmc;
-				pDM_Odm->Adaptivity_IGI_upper = IGI;
-			}
-		} else {
-			bAdjust = false;
-			pDM_Odm->TxHangFlg = false;
-			pDM_Odm->txEdcca1 = 0;
-			pDM_Odm->txEdcca0 = 0;
-			pDM_Odm->H2L_lb = TH_H2L_dmc;
-			pDM_Odm->L2H_lb = TH_L2H_dmc;
-			pDM_Odm->Adaptivity_IGI_upper = IGI;
-		}
-	}
-}
-
-void odm_AdaptivityInit(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-
-	if (!pDM_Odm->Carrier_Sense_enable)
-		pDM_Odm->TH_L2H_ini = 0xf7; /*  -7 */
-	else
-		pDM_Odm->TH_L2H_ini = 0xa;
-
-	pDM_Odm->AdapEn_RSSI = 20;
-	pDM_Odm->TH_EDCCA_HL_diff = 7;
-
-	pDM_Odm->IGI_Base = 0x32;
-	pDM_Odm->IGI_target = 0x1c;
-	pDM_Odm->ForceEDCCA = 0;
-	pDM_Odm->NHM_disable = false;
-	pDM_Odm->TxHangFlg = true;
-	pDM_Odm->txEdcca0 = 0;
-	pDM_Odm->txEdcca1 = 0;
-	pDM_Odm->H2L_lb = 0;
-	pDM_Odm->L2H_lb = 0;
-	pDM_Odm->Adaptivity_IGI_upper = 0;
-	odm_NHMBBInit(pDM_Odm);
-
-	PHY_SetBBReg(pDM_Odm->Adapter, REG_RD_CTRL, BIT(11), 1); /*  stop counting if EDCCA is asserted */
-}
-
-void odm_Adaptivity(void *pDM_VOID, u8 IGI)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	s8 TH_L2H_dmc, TH_H2L_dmc;
-	s8 Diff, IGI_target;
-	bool EDCCA_State = false;
-
-	if (!(pDM_Odm->SupportAbility & ODM_BB_ADAPTIVITY))
-		return;
-
-	if (*pDM_Odm->pBandWidth == ODM_BW20M) /* CHANNEL_WIDTH_20 */
-		IGI_target = pDM_Odm->IGI_Base;
-	else if (*pDM_Odm->pBandWidth == ODM_BW40M)
-		IGI_target = pDM_Odm->IGI_Base + 2;
-	else
-		IGI_target = pDM_Odm->IGI_Base;
-	pDM_Odm->IGI_target = (u8) IGI_target;
-
-	/* Search pwdB lower bound */
-	if (pDM_Odm->TxHangFlg) {
-		PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_DBG_RPT_11N, bMaskDWord, 0x208);
-		odm_SearchPwdBLowerBound(pDM_Odm, pDM_Odm->IGI_target);
-	}
-
-	if ((!pDM_Odm->bLinked) || (*pDM_Odm->pChannel > 149)) { /*  Band4 doesn't need adaptivity */
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskByte0, 0x7f);
-		PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskByte2, 0x7f);
-		return;
-	}
-
-	if (!pDM_Odm->ForceEDCCA) {
-		if (pDM_Odm->RSSI_Min > pDM_Odm->AdapEn_RSSI)
-			EDCCA_State = true;
-		else if (pDM_Odm->RSSI_Min < (pDM_Odm->AdapEn_RSSI - 5))
-			EDCCA_State = false;
-	} else
-		EDCCA_State = true;
-
-	if (pDM_Odm->bLinked &&
-	    !pDM_Odm->Carrier_Sense_enable &&
-	    !pDM_Odm->NHM_disable &&
-	    !pDM_Odm->TxHangFlg)
-		odm_NHMBB(pDM_Odm);
-
-	if (EDCCA_State) {
-		Diff = IGI_target-(s8)IGI;
-		TH_L2H_dmc = pDM_Odm->TH_L2H_ini + Diff;
-		if (TH_L2H_dmc > 10)
-			TH_L2H_dmc = 10;
-
-		TH_H2L_dmc = TH_L2H_dmc - pDM_Odm->TH_EDCCA_HL_diff;
-
-		/* replace lower bound to prevent EDCCA always equal  */
-		if (TH_H2L_dmc < pDM_Odm->H2L_lb)
-			TH_H2L_dmc = pDM_Odm->H2L_lb;
-		if (TH_L2H_dmc < pDM_Odm->L2H_lb)
-			TH_L2H_dmc = pDM_Odm->L2H_lb;
-	} else {
-		TH_L2H_dmc = 0x7f;
-		TH_H2L_dmc = 0x7f;
-	}
-	PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskByte0, (u8)TH_L2H_dmc);
-	PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskByte2, (u8)TH_H2L_dmc);
-}
-
-void ODM_Write_DIG(void *pDM_VOID, u8 CurrentIGI)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct dig_t *pDM_DigTable = &pDM_Odm->DM_DigTable;
-
-	if (pDM_DigTable->bStopDIG)
-		return;
-
-	if (pDM_DigTable->CurIGValue != CurrentIGI) {
-		/* 1 Check initial gain by upper bound */
-		if (!pDM_DigTable->bPSDInProgress) {
-			if (CurrentIGI > pDM_DigTable->rx_gain_range_max)
-				CurrentIGI = pDM_DigTable->rx_gain_range_max;
-
-		}
-
-		/* 1 Set IGI value */
-		PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG(IGI_A), ODM_BIT(IGI), CurrentIGI);
-
-		PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG(IGI_B), ODM_BIT(IGI), CurrentIGI);
-
-		pDM_DigTable->CurIGValue = CurrentIGI;
-	}
-
-}
-
-bool odm_DigAbort(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-
-	/* SupportAbility */
-	if (!(pDM_Odm->SupportAbility & ODM_BB_FA_CNT))
-		return	true;
-
-	/* SupportAbility */
-	if (!(pDM_Odm->SupportAbility & ODM_BB_DIG))
-		return	true;
-
-	/* ScanInProcess */
-	if (*(pDM_Odm->pbScanInProcess))
-		return	true;
-
-	/* add by Neil Chen to avoid PSD is processing */
-	if (!pDM_Odm->bDMInitialGainEnable)
-		return	true;
-
-	return	false;
-}
-
-void odm_DIGInit(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct dig_t *pDM_DigTable = &pDM_Odm->DM_DigTable;
-
-	pDM_DigTable->bStopDIG = false;
-	pDM_DigTable->bPSDInProgress = false;
-	pDM_DigTable->CurIGValue = (u8) PHY_QueryBBReg(pDM_Odm->Adapter, ODM_REG(IGI_A), ODM_BIT(IGI));
-	pDM_DigTable->RssiLowThresh	= DM_DIG_THRESH_LOW;
-	pDM_DigTable->RssiHighThresh	= DM_DIG_THRESH_HIGH;
-	pDM_DigTable->FALowThresh	= DMfalseALARM_THRESH_LOW;
-	pDM_DigTable->FAHighThresh	= DMfalseALARM_THRESH_HIGH;
-	pDM_DigTable->BackoffVal = DM_DIG_BACKOFF_DEFAULT;
-	pDM_DigTable->BackoffVal_range_max = DM_DIG_BACKOFF_MAX;
-	pDM_DigTable->BackoffVal_range_min = DM_DIG_BACKOFF_MIN;
-	pDM_DigTable->PreCCK_CCAThres = 0xFF;
-	pDM_DigTable->CurCCK_CCAThres = 0x83;
-	pDM_DigTable->ForbiddenIGI = DM_DIG_MIN_NIC;
-	pDM_DigTable->LargeFAHit = 0;
-	pDM_DigTable->Recover_cnt = 0;
-	pDM_DigTable->bMediaConnect_0 = false;
-	pDM_DigTable->bMediaConnect_1 = false;
-
-	/* To Initialize pDM_Odm->bDMInitialGainEnable == false to avoid DIG error */
-	pDM_Odm->bDMInitialGainEnable = true;
-
-	pDM_DigTable->DIG_Dynamic_MIN_0 = DM_DIG_MIN_NIC;
-	pDM_DigTable->DIG_Dynamic_MIN_1 = DM_DIG_MIN_NIC;
-
-	/* To Initi BT30 IGI */
-	pDM_DigTable->BT30_CurIGI = 0x32;
-
-	pDM_DigTable->rx_gain_range_max = DM_DIG_MAX_NIC;
-	pDM_DigTable->rx_gain_range_min = DM_DIG_MIN_NIC;
-}
-
-void odm_DIG(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-
-	/*  Common parameters */
-	struct dig_t *pDM_DigTable = &pDM_Odm->DM_DigTable;
-	struct false_ALARM_STATISTICS *pFalseAlmCnt = &pDM_Odm->FalseAlmCnt;
-	bool FirstConnect, FirstDisConnect;
-	u8 DIG_MaxOfMin, DIG_Dynamic_MIN;
-	u8 dm_dig_max, dm_dig_min;
-	u8 CurrentIGI = pDM_DigTable->CurIGValue;
-	u8 offset;
-	u32 dm_FA_thres[3];
-	u8 Adap_IGI_Upper = 0;
-	u32 TxTp = 0, RxTp = 0;
-	bool bDFSBand = false;
-	bool bPerformance = true, bFirstTpTarget = false, bFirstCoverage = false;
-
-	if (odm_DigAbort(pDM_Odm))
-		return;
-
-	if (pDM_Odm->adaptivity_flag)
-		Adap_IGI_Upper = pDM_Odm->Adaptivity_IGI_upper;
-
-	/* 1 Update status */
-	DIG_Dynamic_MIN = pDM_DigTable->DIG_Dynamic_MIN_0;
-	FirstConnect = (pDM_Odm->bLinked) && !pDM_DigTable->bMediaConnect_0;
-	FirstDisConnect = (!pDM_Odm->bLinked) && pDM_DigTable->bMediaConnect_0;
-
-	/* 1 Boundary Decision */
-	/* 2 For WIN\CE */
-	dm_dig_max = 0x5A;
-	dm_dig_min = DM_DIG_MIN_NIC;
-	DIG_MaxOfMin = DM_DIG_MAX_AP;
-
-	/* 1 Adjust boundary by RSSI */
-	if (pDM_Odm->bLinked && bPerformance) {
-		/* 2 Modify DIG upper bound */
-		/* 4 Modify DIG upper bound for 92E, 8723A\B, 8821 & 8812 BT */
-		if (pDM_Odm->bBtLimitedDig == 1)
-			offset = 10;
-		else
-			offset = 15;
-
-		if ((pDM_Odm->RSSI_Min + offset) > dm_dig_max)
-			pDM_DigTable->rx_gain_range_max = dm_dig_max;
-		else if ((pDM_Odm->RSSI_Min + offset) < dm_dig_min)
-			pDM_DigTable->rx_gain_range_max = dm_dig_min;
-		else
-			pDM_DigTable->rx_gain_range_max = pDM_Odm->RSSI_Min + offset;
-
-		/* 2 Modify DIG lower bound */
-		/* if (pDM_Odm->bOneEntryOnly) */
-		{
-			if (pDM_Odm->RSSI_Min < dm_dig_min)
-				DIG_Dynamic_MIN = dm_dig_min;
-			else if (pDM_Odm->RSSI_Min > DIG_MaxOfMin)
-				DIG_Dynamic_MIN = DIG_MaxOfMin;
-			else
-				DIG_Dynamic_MIN = pDM_Odm->RSSI_Min;
-		}
-	} else {
-		pDM_DigTable->rx_gain_range_max = dm_dig_max;
-		DIG_Dynamic_MIN = dm_dig_min;
-	}
-
-	/* 1 Force Lower Bound for AntDiv */
-	if (pDM_Odm->bLinked && !pDM_Odm->bOneEntryOnly) {
-		if (pDM_Odm->SupportAbility & ODM_BB_ANT_DIV) {
-			if (
-				pDM_Odm->AntDivType == CG_TRX_HW_ANTDIV ||
-				pDM_Odm->AntDivType == CG_TRX_SMART_ANTDIV ||
-				pDM_Odm->AntDivType == S0S1_SW_ANTDIV
-			) {
-				if (pDM_DigTable->AntDiv_RSSI_max > DIG_MaxOfMin)
-					DIG_Dynamic_MIN = DIG_MaxOfMin;
-				else
-					DIG_Dynamic_MIN = (u8) pDM_DigTable->AntDiv_RSSI_max;
-			}
-		}
-	}
-
-	/* 1 Modify DIG lower bound, deal with abnormal case */
-	/* 2 Abnormal false alarm case */
-	if (FirstDisConnect) {
-		pDM_DigTable->rx_gain_range_min = DIG_Dynamic_MIN;
-		pDM_DigTable->ForbiddenIGI = DIG_Dynamic_MIN;
-	} else
-		pDM_DigTable->rx_gain_range_min =
-			odm_ForbiddenIGICheck(pDM_Odm, DIG_Dynamic_MIN, CurrentIGI);
-
-	if (pDM_Odm->bLinked && !FirstConnect) {
-		if (
-			(pDM_Odm->PhyDbgInfo.NumQryBeaconPkt < 5) &&
-			pDM_Odm->bsta_state
-		) {
-			pDM_DigTable->rx_gain_range_min = dm_dig_min;
-		}
-	}
-
-	/* 2 Abnormal lower bound case */
-	if (pDM_DigTable->rx_gain_range_min > pDM_DigTable->rx_gain_range_max)
-		pDM_DigTable->rx_gain_range_min = pDM_DigTable->rx_gain_range_max;
-
-	/* 1 False alarm threshold decision */
-	odm_FAThresholdCheck(pDM_Odm, bDFSBand, bPerformance, RxTp, TxTp, dm_FA_thres);
-
-	/* 1 Adjust initial gain by false alarm */
-	if (pDM_Odm->bLinked && bPerformance) {
-
-		if (bFirstTpTarget || FirstConnect) {
-			pDM_DigTable->LargeFAHit = 0;
-
-			if (pDM_Odm->RSSI_Min < DIG_MaxOfMin) {
-				if (CurrentIGI < pDM_Odm->RSSI_Min)
-					CurrentIGI = pDM_Odm->RSSI_Min;
-			} else {
-				if (CurrentIGI < DIG_MaxOfMin)
-					CurrentIGI = DIG_MaxOfMin;
-			}
-
-		} else {
-			if (pFalseAlmCnt->Cnt_all > dm_FA_thres[2])
-				CurrentIGI = CurrentIGI + 4;
-			else if (pFalseAlmCnt->Cnt_all > dm_FA_thres[1])
-				CurrentIGI = CurrentIGI + 2;
-			else if (pFalseAlmCnt->Cnt_all < dm_FA_thres[0])
-				CurrentIGI = CurrentIGI - 2;
-
-			if (
-				(pDM_Odm->PhyDbgInfo.NumQryBeaconPkt < 5) &&
-				(pFalseAlmCnt->Cnt_all < DM_DIG_FA_TH1) &&
-				(pDM_Odm->bsta_state)
-			) {
-				CurrentIGI = pDM_DigTable->rx_gain_range_min;
-			}
-		}
-	} else {
-
-		if (FirstDisConnect || bFirstCoverage) {
-			CurrentIGI = dm_dig_min;
-		} else {
-			if (pFalseAlmCnt->Cnt_all > dm_FA_thres[2])
-				CurrentIGI = CurrentIGI + 4;
-			else if (pFalseAlmCnt->Cnt_all > dm_FA_thres[1])
-				CurrentIGI = CurrentIGI + 2;
-			else if (pFalseAlmCnt->Cnt_all < dm_FA_thres[0])
-				CurrentIGI = CurrentIGI - 2;
-		}
-	}
-
-	/* 1 Check initial gain by upper/lower bound */
-	if (CurrentIGI < pDM_DigTable->rx_gain_range_min)
-		CurrentIGI = pDM_DigTable->rx_gain_range_min;
-
-	if (CurrentIGI > pDM_DigTable->rx_gain_range_max)
-		CurrentIGI = pDM_DigTable->rx_gain_range_max;
-
-	/* 1 Force upper bound and lower bound for adaptivity */
-	if (pDM_Odm->SupportAbility & ODM_BB_ADAPTIVITY &&
-	    pDM_Odm->adaptivity_flag) {
-		if (CurrentIGI > Adap_IGI_Upper)
-			CurrentIGI = Adap_IGI_Upper;
-
-		if (pDM_Odm->IGI_LowerBound != 0) {
-			if (CurrentIGI < pDM_Odm->IGI_LowerBound)
-				CurrentIGI = pDM_Odm->IGI_LowerBound;
-		}
-	}
-
-	/* 1 Update status */
-	if (pDM_Odm->bBtHsOperation) {
-		if (pDM_Odm->bLinked) {
-			if (pDM_DigTable->BT30_CurIGI > (CurrentIGI))
-				ODM_Write_DIG(pDM_Odm, CurrentIGI);
-			else
-				ODM_Write_DIG(pDM_Odm, pDM_DigTable->BT30_CurIGI);
-
-			pDM_DigTable->bMediaConnect_0 = pDM_Odm->bLinked;
-			pDM_DigTable->DIG_Dynamic_MIN_0 = DIG_Dynamic_MIN;
-		} else {
-			if (pDM_Odm->bLinkInProcess)
-				ODM_Write_DIG(pDM_Odm, 0x1c);
-			else if (pDM_Odm->bBtConnectProcess)
-				ODM_Write_DIG(pDM_Odm, 0x28);
-			else
-				ODM_Write_DIG(pDM_Odm, pDM_DigTable->BT30_CurIGI);/* ODM_Write_DIG(pDM_Odm, pDM_DigTable->CurIGValue); */
-		}
-	} else { /*  BT is not using */
-		ODM_Write_DIG(pDM_Odm, CurrentIGI);/* ODM_Write_DIG(pDM_Odm, pDM_DigTable->CurIGValue); */
-		pDM_DigTable->bMediaConnect_0 = pDM_Odm->bLinked;
-		pDM_DigTable->DIG_Dynamic_MIN_0 = DIG_Dynamic_MIN;
-	}
-}
-
-void odm_DIGbyRSSI_LPS(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct false_ALARM_STATISTICS *pFalseAlmCnt = &pDM_Odm->FalseAlmCnt;
-
-	u8 RSSI_Lower = DM_DIG_MIN_NIC;   /* 0x1E or 0x1C */
-	u8 CurrentIGI = pDM_Odm->RSSI_Min;
-
-	CurrentIGI = CurrentIGI+RSSI_OFFSET_DIG;
-
-	/*  Using FW PS mode to make IGI */
-	/* Adjust by  FA in LPS MODE */
-	if (pFalseAlmCnt->Cnt_all > DM_DIG_FA_TH2_LPS)
-		CurrentIGI = CurrentIGI+4;
-	else if (pFalseAlmCnt->Cnt_all > DM_DIG_FA_TH1_LPS)
-		CurrentIGI = CurrentIGI+2;
-	else if (pFalseAlmCnt->Cnt_all < DM_DIG_FA_TH0_LPS)
-		CurrentIGI = CurrentIGI-2;
-
-	/* Lower bound checking */
-
-	/* RSSI Lower bound check */
-	RSSI_Lower = max(pDM_Odm->RSSI_Min - 10, DM_DIG_MIN_NIC);
-
-	/* Upper and Lower Bound checking */
-	if (CurrentIGI > DM_DIG_MAX_NIC)
-		CurrentIGI = DM_DIG_MAX_NIC;
-	else if (CurrentIGI < RSSI_Lower)
-		CurrentIGI = RSSI_Lower;
-
-	ODM_Write_DIG(pDM_Odm, CurrentIGI);
-	/* ODM_Write_DIG(pDM_Odm, pDM_DigTable->CurIGValue); */
-}
-
-/* 3 ============================================================ */
-/* 3 FALSE ALARM CHECK */
-/* 3 ============================================================ */
-
-void odm_FalseAlarmCounterStatistics(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct false_ALARM_STATISTICS *FalseAlmCnt = &pDM_Odm->FalseAlmCnt;
-	u32 ret_value;
-
-	if (!(pDM_Odm->SupportAbility & ODM_BB_FA_CNT))
-		return;
-
-	/* hold ofdm counter */
-	/* hold page C counter */
-	PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_OFDM_FA_HOLDC_11N, BIT(31), 1);
-	/* hold page D counter */
-	PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_OFDM_FA_RSTD_11N, BIT(31), 1);
-
-	ret_value = PHY_QueryBBReg(
-		pDM_Odm->Adapter, ODM_REG_OFDM_FA_TYPE1_11N, bMaskDWord
-	);
-	FalseAlmCnt->Cnt_Fast_Fsync = (ret_value&0xffff);
-	FalseAlmCnt->Cnt_SB_Search_fail = ((ret_value&0xffff0000)>>16);
-
-	ret_value = PHY_QueryBBReg(
-		pDM_Odm->Adapter, ODM_REG_OFDM_FA_TYPE2_11N, bMaskDWord
-	);
-	FalseAlmCnt->Cnt_OFDM_CCA = (ret_value&0xffff);
-	FalseAlmCnt->Cnt_Parity_Fail = ((ret_value&0xffff0000)>>16);
-
-	ret_value = PHY_QueryBBReg(
-		pDM_Odm->Adapter, ODM_REG_OFDM_FA_TYPE3_11N, bMaskDWord
-	);
-	FalseAlmCnt->Cnt_Rate_Illegal = (ret_value&0xffff);
-	FalseAlmCnt->Cnt_Crc8_fail = ((ret_value&0xffff0000)>>16);
-
-	ret_value = PHY_QueryBBReg(
-		pDM_Odm->Adapter, ODM_REG_OFDM_FA_TYPE4_11N, bMaskDWord
-	);
-	FalseAlmCnt->Cnt_Mcs_fail = (ret_value&0xffff);
-
-	FalseAlmCnt->Cnt_Ofdm_fail =
-		FalseAlmCnt->Cnt_Parity_Fail +
-		FalseAlmCnt->Cnt_Rate_Illegal +
-		FalseAlmCnt->Cnt_Crc8_fail +
-		FalseAlmCnt->Cnt_Mcs_fail +
-		FalseAlmCnt->Cnt_Fast_Fsync +
-		FalseAlmCnt->Cnt_SB_Search_fail;
-
-	{
-		/* hold cck counter */
-		PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_CCK_FA_RST_11N, BIT(12), 1);
-		PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_CCK_FA_RST_11N, BIT(14), 1);
-
-		ret_value = PHY_QueryBBReg(
-			pDM_Odm->Adapter, ODM_REG_CCK_FA_LSB_11N, bMaskByte0
-		);
-		FalseAlmCnt->Cnt_Cck_fail = ret_value;
-
-		ret_value = PHY_QueryBBReg(
-			pDM_Odm->Adapter, ODM_REG_CCK_FA_MSB_11N, bMaskByte3
-		);
-		FalseAlmCnt->Cnt_Cck_fail += (ret_value&0xff)<<8;
-
-		ret_value = PHY_QueryBBReg(
-			pDM_Odm->Adapter, ODM_REG_CCK_CCA_CNT_11N, bMaskDWord
-		);
-		FalseAlmCnt->Cnt_CCK_CCA =
-			((ret_value&0xFF)<<8) | ((ret_value&0xFF00)>>8);
-	}
-
-	FalseAlmCnt->Cnt_all = (
-		FalseAlmCnt->Cnt_Fast_Fsync +
-		FalseAlmCnt->Cnt_SB_Search_fail +
-		FalseAlmCnt->Cnt_Parity_Fail +
-		FalseAlmCnt->Cnt_Rate_Illegal +
-		FalseAlmCnt->Cnt_Crc8_fail +
-		FalseAlmCnt->Cnt_Mcs_fail +
-		FalseAlmCnt->Cnt_Cck_fail
-	);
-
-	FalseAlmCnt->Cnt_CCA_all =
-		FalseAlmCnt->Cnt_OFDM_CCA + FalseAlmCnt->Cnt_CCK_CCA;
-}
-
-void odm_FAThresholdCheck(
-	void *pDM_VOID,
-	bool bDFSBand,
-	bool bPerformance,
-	u32 RxTp,
-	u32 TxTp,
-	u32 *dm_FA_thres
-)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-
-	if (pDM_Odm->bLinked && (bPerformance || bDFSBand)) {
-		/*  For NIC */
-		dm_FA_thres[0] = DM_DIG_FA_TH0;
-		dm_FA_thres[1] = DM_DIG_FA_TH1;
-		dm_FA_thres[2] = DM_DIG_FA_TH2;
-	} else {
-		dm_FA_thres[0] = 2000;
-		dm_FA_thres[1] = 4000;
-		dm_FA_thres[2] = 5000;
-	}
-}
-
-u8 odm_ForbiddenIGICheck(void *pDM_VOID, u8 DIG_Dynamic_MIN, u8 CurrentIGI)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct dig_t *pDM_DigTable = &pDM_Odm->DM_DigTable;
-	struct false_ALARM_STATISTICS *pFalseAlmCnt = &pDM_Odm->FalseAlmCnt;
-	u8 rx_gain_range_min = pDM_DigTable->rx_gain_range_min;
-
-	if (pFalseAlmCnt->Cnt_all > 10000) {
-		if (pDM_DigTable->LargeFAHit != 3)
-			pDM_DigTable->LargeFAHit++;
-
-		/* if (pDM_DigTable->ForbiddenIGI < pDM_DigTable->CurIGValue) */
-		if (pDM_DigTable->ForbiddenIGI < CurrentIGI) {
-			pDM_DigTable->ForbiddenIGI = CurrentIGI;
-			/* pDM_DigTable->ForbiddenIGI = pDM_DigTable->CurIGValue; */
-			pDM_DigTable->LargeFAHit = 1;
-		}
-
-		if (pDM_DigTable->LargeFAHit >= 3) {
-			if ((pDM_DigTable->ForbiddenIGI + 2) > pDM_DigTable->rx_gain_range_max)
-				rx_gain_range_min = pDM_DigTable->rx_gain_range_max;
-			else
-				rx_gain_range_min = (pDM_DigTable->ForbiddenIGI + 2);
-			pDM_DigTable->Recover_cnt = 1800;
-		}
-	} else {
-		if (pDM_DigTable->Recover_cnt != 0) {
-			pDM_DigTable->Recover_cnt--;
-		} else {
-			if (pDM_DigTable->LargeFAHit < 3) {
-				if ((pDM_DigTable->ForbiddenIGI - 2) < DIG_Dynamic_MIN) { /* DM_DIG_MIN) */
-					pDM_DigTable->ForbiddenIGI = DIG_Dynamic_MIN; /* DM_DIG_MIN; */
-					rx_gain_range_min = DIG_Dynamic_MIN; /* DM_DIG_MIN; */
-				} else {
-					pDM_DigTable->ForbiddenIGI -= 2;
-					rx_gain_range_min = (pDM_DigTable->ForbiddenIGI + 2);
-				}
-			} else
-				pDM_DigTable->LargeFAHit = 0;
-		}
-	}
-
-	return rx_gain_range_min;
-
-}
-
-/* 3 ============================================================ */
-/* 3 CCK Packet Detect Threshold */
-/* 3 ============================================================ */
-
-void odm_CCKPacketDetectionThresh(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct false_ALARM_STATISTICS *FalseAlmCnt = &pDM_Odm->FalseAlmCnt;
-	u8 CurCCK_CCAThres;
-
-	if (
-		!(pDM_Odm->SupportAbility & ODM_BB_CCK_PD) ||
-		!(pDM_Odm->SupportAbility & ODM_BB_FA_CNT)
-	) {
-		return;
-	}
-
-	if (pDM_Odm->ExtLNA)
-		return;
-
-	if (pDM_Odm->bLinked) {
-		if (pDM_Odm->RSSI_Min > 25)
-			CurCCK_CCAThres = 0xcd;
-		else if ((pDM_Odm->RSSI_Min <= 25) && (pDM_Odm->RSSI_Min > 10))
-			CurCCK_CCAThres = 0x83;
-		else {
-			if (FalseAlmCnt->Cnt_Cck_fail > 1000)
-				CurCCK_CCAThres = 0x83;
-			else
-				CurCCK_CCAThres = 0x40;
-		}
-	} else {
-		if (FalseAlmCnt->Cnt_Cck_fail > 1000)
-			CurCCK_CCAThres = 0x83;
-		else
-			CurCCK_CCAThres = 0x40;
-	}
-
-	ODM_Write_CCK_CCA_Thres(pDM_Odm, CurCCK_CCAThres);
-}
-
-void ODM_Write_CCK_CCA_Thres(void *pDM_VOID, u8 CurCCK_CCAThres)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct dig_t *pDM_DigTable = &pDM_Odm->DM_DigTable;
-
-	/* modify by Guo.Mingzhi 2012-01-03 */
-	if (pDM_DigTable->CurCCK_CCAThres != CurCCK_CCAThres)
-		rtw_write8(pDM_Odm->Adapter, ODM_REG(CCK_CCA), CurCCK_CCAThres);
-
-	pDM_DigTable->PreCCK_CCAThres = pDM_DigTable->CurCCK_CCAThres;
-	pDM_DigTable->CurCCK_CCAThres = CurCCK_CCAThres;
-}
diff --git a/drivers/staging/rtl8723bs/hal/odm_DIG.h b/drivers/staging/rtl8723bs/hal/odm_DIG.h
deleted file mode 100644
index 5517ef79bdf5..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_DIG.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef __ODMDIG_H__
-#define __ODMDIG_H__
-
-struct dig_t { /* _Dynamic_Initial_Gain_Threshold_ */
-	bool bStopDIG;
-	bool bPSDInProgress;
-
-	u8 Dig_Enable_Flag;
-	u8 Dig_Ext_Port_Stage;
-
-	int RssiLowThresh;
-	int RssiHighThresh;
-
-	u32 FALowThresh;
-	u32 FAHighThresh;
-
-	u8 CurSTAConnectState;
-	u8 PreSTAConnectState;
-	u8 CurMultiSTAConnectState;
-
-	u8 PreIGValue;
-	u8 CurIGValue;
-	u8 BackupIGValue;		/* MP DIG */
-	u8 BT30_CurIGI;
-	u8 IGIBackup;
-
-	s8 BackoffVal;
-	s8 BackoffVal_range_max;
-	s8 BackoffVal_range_min;
-	u8 rx_gain_range_max;
-	u8 rx_gain_range_min;
-	u8 Rssi_val_min;
-
-	u8 PreCCK_CCAThres;
-	u8 CurCCK_CCAThres;
-	u8 PreCCKPDState;
-	u8 CurCCKPDState;
-	u8 CCKPDBackup;
-
-	u8 LargeFAHit;
-	u8 ForbiddenIGI;
-	u32 Recover_cnt;
-
-	u8 DIG_Dynamic_MIN_0;
-	u8 DIG_Dynamic_MIN_1;
-	bool bMediaConnect_0;
-	bool bMediaConnect_1;
-
-	u32 AntDiv_RSSI_max;
-	u32 RSSI_max;
-
-	u8 *pbP2pLinkInProgress;
-};
-
-struct  false_ALARM_STATISTICS {
-	u32 Cnt_Parity_Fail;
-	u32 Cnt_Rate_Illegal;
-	u32 Cnt_Crc8_fail;
-	u32 Cnt_Mcs_fail;
-	u32 Cnt_Ofdm_fail;
-	u32 Cnt_Ofdm_fail_pre; /* For RTL8881A */
-	u32 Cnt_Cck_fail;
-	u32 Cnt_all;
-	u32 Cnt_Fast_Fsync;
-	u32 Cnt_SB_Search_fail;
-	u32 Cnt_OFDM_CCA;
-	u32 Cnt_CCK_CCA;
-	u32 Cnt_CCA_all;
-	u32 Cnt_BW_USC; /* Gary */
-	u32 Cnt_BW_LSC; /* Gary */
-};
-
-#define		DM_DIG_THRESH_HIGH			40
-#define		DM_DIG_THRESH_LOW			35
-
-#define		DMfalseALARM_THRESH_LOW	400
-#define		DMfalseALARM_THRESH_HIGH	1000
-
-#define		DM_DIG_MAX_NIC				0x3e
-#define		DM_DIG_MIN_NIC				0x1e /* 0x22//0x1c */
-#define		DM_DIG_MAX_OF_MIN_NIC		0x3e
-
-#define		DM_DIG_MAX_AP					0x3e
-#define		DM_DIG_MIN_AP					0x1c
-#define		DM_DIG_MAX_OF_MIN			0x2A	/* 0x32 */
-#define		DM_DIG_MIN_AP_DFS				0x20
-
-#define		DM_DIG_MAX_NIC_HP			0x46
-#define		DM_DIG_MIN_NIC_HP				0x2e
-
-#define		DM_DIG_MAX_AP_HP				0x42
-#define		DM_DIG_MIN_AP_HP				0x30
-
-#define		DM_DIG_FA_TH0				0x200/* 0x20 */
-
-#define		DM_DIG_FA_TH1					0x300
-#define		DM_DIG_FA_TH2					0x400
-/* this is for 92d */
-#define		DM_DIG_FA_TH0_92D				0x100
-#define		DM_DIG_FA_TH1_92D				0x400
-#define		DM_DIG_FA_TH2_92D				0x600
-
-#define		DM_DIG_BACKOFF_MAX			12
-#define		DM_DIG_BACKOFF_MIN			-4
-#define		DM_DIG_BACKOFF_DEFAULT		10
-
-#define			DM_DIG_FA_TH0_LPS				4 /*  4 in lps */
-#define			DM_DIG_FA_TH1_LPS				15 /*  15 lps */
-#define			DM_DIG_FA_TH2_LPS				30 /*  30 lps */
-#define			RSSI_OFFSET_DIG				0x05
-
-void odm_NHMCounterStatisticsInit(void *pDM_VOID);
-
-void odm_NHMCounterStatistics(void *pDM_VOID);
-
-void odm_NHMBBInit(void *pDM_VOID);
-
-void odm_NHMBB(void *pDM_VOID);
-
-void odm_NHMCounterStatisticsReset(void *pDM_VOID);
-
-void odm_GetNHMCounterStatistics(void *pDM_VOID);
-
-void odm_SearchPwdBLowerBound(void *pDM_VOID, u8 IGI_target);
-
-void odm_AdaptivityInit(void *pDM_VOID);
-
-void odm_Adaptivity(void *pDM_VOID, u8 IGI);
-
-void ODM_Write_DIG(void *pDM_VOID, u8 CurrentIGI);
-
-void odm_DIGInit(void *pDM_VOID);
-
-void odm_DIG(void *pDM_VOID);
-
-void odm_DIGbyRSSI_LPS(void *pDM_VOID);
-
-void odm_FalseAlarmCounterStatistics(void *pDM_VOID);
-
-void odm_FAThresholdCheck(
-	void *pDM_VOID,
-	bool bDFSBand,
-	bool bPerformance,
-	u32 RxTp,
-	u32 TxTp,
-	u32 *dm_FA_thres
-);
-
-u8 odm_ForbiddenIGICheck(void *pDM_VOID, u8 DIG_Dynamic_MIN, u8 CurrentIGI);
-
-bool odm_DigAbort(void *pDM_VOID);
-
-void odm_CCKPacketDetectionThresh(void *pDM_VOID);
-
-void ODM_Write_CCK_CCA_Thres(void *pDM_VOID, u8 CurCCK_CCAThres);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/hal/odm_DynamicBBPowerSaving.c b/drivers/staging/rtl8723bs/hal/odm_DynamicBBPowerSaving.c
deleted file mode 100644
index ba6357c6a7ed..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_DynamicBBPowerSaving.c
+++ /dev/null
@@ -1,81 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include "odm_precomp.h"
-
-void odm_DynamicBBPowerSavingInit(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct ps_t *pDM_PSTable = &pDM_Odm->DM_PSTable;
-
-	pDM_PSTable->PreCCAState = CCA_MAX;
-	pDM_PSTable->CurCCAState = CCA_MAX;
-	pDM_PSTable->PreRFState = RF_MAX;
-	pDM_PSTable->CurRFState = RF_MAX;
-	pDM_PSTable->Rssi_val_min = 0;
-	pDM_PSTable->initialize = 0;
-}
-
-void ODM_RF_Saving(void *pDM_VOID, u8 bForceInNormal)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct ps_t *pDM_PSTable = &pDM_Odm->DM_PSTable;
-	u8 Rssi_Up_bound = 30;
-	u8 Rssi_Low_bound = 25;
-
-	if (pDM_Odm->PatchID == 40) { /* RT_CID_819x_FUNAI_TV */
-		Rssi_Up_bound = 50;
-		Rssi_Low_bound = 45;
-	}
-
-	if (pDM_PSTable->initialize == 0) {
-
-		pDM_PSTable->Reg874 = (PHY_QueryBBReg(pDM_Odm->Adapter, 0x874, bMaskDWord)&0x1CC000)>>14;
-		pDM_PSTable->RegC70 = (PHY_QueryBBReg(pDM_Odm->Adapter, 0xc70, bMaskDWord)&BIT(3))>>3;
-		pDM_PSTable->Reg85C = (PHY_QueryBBReg(pDM_Odm->Adapter, 0x85c, bMaskDWord)&0xFF000000)>>24;
-		pDM_PSTable->RegA74 = (PHY_QueryBBReg(pDM_Odm->Adapter, 0xa74, bMaskDWord)&0xF000)>>12;
-		/* Reg818 = PHY_QueryBBReg(padapter, 0x818, bMaskDWord); */
-		pDM_PSTable->initialize = 1;
-	}
-
-	if (!bForceInNormal) {
-		if (pDM_Odm->RSSI_Min != 0xFF) {
-			if (pDM_PSTable->PreRFState == RF_Normal) {
-				if (pDM_Odm->RSSI_Min >= Rssi_Up_bound)
-					pDM_PSTable->CurRFState = RF_Save;
-				else
-					pDM_PSTable->CurRFState = RF_Normal;
-			} else {
-				if (pDM_Odm->RSSI_Min <= Rssi_Low_bound)
-					pDM_PSTable->CurRFState = RF_Normal;
-				else
-					pDM_PSTable->CurRFState = RF_Save;
-			}
-		} else
-			pDM_PSTable->CurRFState = RF_MAX;
-	} else
-		pDM_PSTable->CurRFState = RF_Normal;
-
-	if (pDM_PSTable->PreRFState != pDM_PSTable->CurRFState) {
-		if (pDM_PSTable->CurRFState == RF_Save) {
-			PHY_SetBBReg(pDM_Odm->Adapter, 0x874, 0x1C0000, 0x2); /* Reg874[20:18]=3'b010 */
-			PHY_SetBBReg(pDM_Odm->Adapter, 0xc70, BIT(3), 0); /* RegC70[3]= 1'b0 */
-			PHY_SetBBReg(pDM_Odm->Adapter, 0x85c, 0xFF000000, 0x63); /* Reg85C[31:24]= 0x63 */
-			PHY_SetBBReg(pDM_Odm->Adapter, 0x874, 0xC000, 0x2); /* Reg874[15:14]=2'b10 */
-			PHY_SetBBReg(pDM_Odm->Adapter, 0xa74, 0xF000, 0x3); /* RegA75[7:4]= 0x3 */
-			PHY_SetBBReg(pDM_Odm->Adapter, 0x818, BIT(28), 0x0); /* Reg818[28]= 1'b0 */
-			PHY_SetBBReg(pDM_Odm->Adapter, 0x818, BIT(28), 0x1); /* Reg818[28]= 1'b1 */
-		} else {
-			PHY_SetBBReg(pDM_Odm->Adapter, 0x874, 0x1CC000, pDM_PSTable->Reg874);
-			PHY_SetBBReg(pDM_Odm->Adapter, 0xc70, BIT(3), pDM_PSTable->RegC70);
-			PHY_SetBBReg(pDM_Odm->Adapter, 0x85c, 0xFF000000, pDM_PSTable->Reg85C);
-			PHY_SetBBReg(pDM_Odm->Adapter, 0xa74, 0xF000, pDM_PSTable->RegA74);
-			PHY_SetBBReg(pDM_Odm->Adapter, 0x818, BIT(28), 0x0);
-		}
-		pDM_PSTable->PreRFState = pDM_PSTable->CurRFState;
-	}
-}
diff --git a/drivers/staging/rtl8723bs/hal/odm_DynamicBBPowerSaving.h b/drivers/staging/rtl8723bs/hal/odm_DynamicBBPowerSaving.h
deleted file mode 100644
index 3ebbbfd1dd1f..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_DynamicBBPowerSaving.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef	__ODMDYNAMICBBPOWERSAVING_H__
-#define    __ODMDYNAMICBBPOWERSAVING_H__
-
-struct ps_t { /* _Dynamic_Power_Saving_ */
-	u8 PreCCAState;
-	u8 CurCCAState;
-
-	u8 PreRFState;
-	u8 CurRFState;
-
-	int Rssi_val_min;
-
-	u8 initialize;
-	u32 Reg874, RegC70, Reg85C, RegA74;
-
-};
-
-#define dm_RF_Saving ODM_RF_Saving
-
-void ODM_RF_Saving(void *pDM_VOID, u8 bForceInNormal);
-
-void odm_DynamicBBPowerSavingInit(void *pDM_VOID);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/hal/odm_DynamicTxPower.c b/drivers/staging/rtl8723bs/hal/odm_DynamicTxPower.c
deleted file mode 100644
index 398dfa13449d..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_DynamicTxPower.c
+++ /dev/null
@@ -1,22 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include "odm_precomp.h"
-
-void odm_DynamicTxPowerInit(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-
-	struct adapter *Adapter = pDM_Odm->Adapter;
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-	struct dm_priv *pdmpriv = &pHalData->dmpriv;
-
-	pdmpriv->bDynamicTxPowerEnable = false;
-
-	pdmpriv->LastDTPLvl = TxHighPwrLevel_Normal;
-	pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
-}
diff --git a/drivers/staging/rtl8723bs/hal/odm_DynamicTxPower.h b/drivers/staging/rtl8723bs/hal/odm_DynamicTxPower.h
deleted file mode 100644
index e2d244324ebe..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_DynamicTxPower.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef	__ODMDYNAMICTXPOWER_H__
-#define    __ODMDYNAMICTXPOWER_H__
-
-#define		TX_POWER_NEAR_FIELD_THRESH_LVL2	74
-#define		TX_POWER_NEAR_FIELD_THRESH_LVL1	67
-#define		TX_POWER_NEAR_FIELD_THRESH_AP		0x3F
-#define		TX_POWER_NEAR_FIELD_THRESH_8812	60
-
-#define		TxHighPwrLevel_Normal		0
-#define		TxHighPwrLevel_Level1		1
-#define		TxHighPwrLevel_Level2		2
-#define		TxHighPwrLevel_BT1			3
-#define		TxHighPwrLevel_BT2			4
-#define		TxHighPwrLevel_15			5
-#define		TxHighPwrLevel_35			6
-#define		TxHighPwrLevel_50			7
-#define		TxHighPwrLevel_70			8
-#define		TxHighPwrLevel_100			9
-
-void odm_DynamicTxPowerInit(void *pDM_VOID);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/hal/odm_EdcaTurboCheck.c b/drivers/staging/rtl8723bs/hal/odm_EdcaTurboCheck.c
deleted file mode 100644
index 9baca2aea80e..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_EdcaTurboCheck.c
+++ /dev/null
@@ -1,158 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include "odm_precomp.h"
-
-static u32 edca_setting_DL_GMode[HT_IOT_PEER_MAX] = {
-/*UNKNOWN, REALTEK_90, ALTEK_92SE	BROADCOM, LINK	ATHEROS,
- *CISCO, MERU, MARVELL, 92U_AP, SELF_AP
- */
-	0x4322, 0xa44f, 0x5e4322, 0xa42b, 0x5e4322, 0x4322,
-	0xa42b, 0x5ea42b, 0xa44f, 0x5e4322, 0x5ea42b
-};
-
-static u32 edca_setting_UL[HT_IOT_PEER_MAX] = {
-/*UNKNOWN, REALTEK_90, REALTEK_92SE, BROADCOM, RALINK, ATHEROS,
- *CISCO, MERU, MARVELL, 92U_AP, SELF_AP(DownLink/Tx)
- */
-	0x5e4322, 0xa44f, 0x5e4322, 0x5ea32b, 0x5ea422,	0x5ea322,
-	0x3ea430, 0x5ea42b, 0x5ea44f, 0x5e4322, 0x5e4322};
-
-static u32 edca_setting_DL[HT_IOT_PEER_MAX] = {
-/*UNKNOWN, REALTEK_90, REALTEK_92SE, BROADCOM, RALINK, ATHEROS,
- *CISCO, MERU, MARVELL, 92U_AP, SELF_AP(UpLink/Rx)
- */
-	0xa44f, 0x5ea44f, 0x5e4322, 0x5ea42b, 0xa44f, 0xa630,
-	0x5ea630, 0x5ea42b, 0xa44f, 0xa42b, 0xa42b};
-
-void ODM_EdcaTurboInit(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct adapter *Adapter = pDM_Odm->Adapter;
-
-	pDM_Odm->DM_EDCA_Table.bCurrentTurboEDCA = false;
-	pDM_Odm->DM_EDCA_Table.bIsCurRDLState = false;
-	Adapter->recvpriv.bIsAnyNonBEPkts = false;
-}	/*  ODM_InitEdcaTurbo */
-
-void odm_EdcaTurboCheck(void *pDM_VOID)
-{
-	/*  In HW integration first stage, we provide 4 different handles to
-	 *  operate at the same time. In stage2/3, we need to prove universal
-	 *  interface and merge all HW dynamic mechanism.
-	 */
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-
-	if (!(pDM_Odm->SupportAbility & ODM_MAC_EDCA_TURBO))
-		return;
-
-	odm_EdcaTurboCheckCE(pDM_Odm);
-}	/*  odm_CheckEdcaTurbo */
-
-void odm_EdcaTurboCheckCE(void *pDM_VOID)
-{
-	struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
-	struct adapter *Adapter = pDM_Odm->Adapter;
-	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(Adapter);
-	struct recv_priv *precvpriv = &(Adapter->recvpriv);
-	struct registry_priv *pregpriv = &Adapter->registrypriv;
-	struct mlme_ext_priv *pmlmeext = &(Adapter->mlmeextpriv);
-	struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
-	u32 EDCA_BE_UL = 0x5ea42b;
-	u32 EDCA_BE_DL = 0x5ea42b;
-	u32 iot_peer = 0;
-	u8 wirelessmode = 0xFF;		/* invalid value */
-	u32 trafficIndex;
-	u32 edca_param;
-	u64	cur_tx_bytes = 0;
-	u64	cur_rx_bytes = 0;
-	u8 bbtchange = false;
-	u8 biasonrx = false;
-	struct hal_com_data	*pHalData = GET_HAL_DATA(Adapter);
-
-	if (!pDM_Odm->bLinked) {
-		precvpriv->bIsAnyNonBEPkts = false;
-		return;
-	}
-
-	if (pregpriv->wifi_spec == 1) {
-		precvpriv->bIsAnyNonBEPkts = false;
-		return;
-	}
-
-	if (pDM_Odm->pwirelessmode)
-		wirelessmode = *(pDM_Odm->pwirelessmode);
-
-	iot_peer = pmlmeinfo->assoc_AP_vendor;
-
-	if (iot_peer >=  HT_IOT_PEER_MAX) {
-		precvpriv->bIsAnyNonBEPkts = false;
-		return;
-	}
-
-	/*  Check if the status needs to be changed. */
-	if ((bbtchange) || (!precvpriv->bIsAnyNonBEPkts)) {
-		cur_tx_bytes = pdvobjpriv->traffic_stat.cur_tx_bytes;
-		cur_rx_bytes = pdvobjpriv->traffic_stat.cur_rx_bytes;
-
-		/* traffic, TX or RX */
-		if (biasonrx) {
-			if (cur_tx_bytes > (cur_rx_bytes << 2)) {
-				/*  Uplink TP is present. */
-				trafficIndex = UP_LINK;
-			} else { /*  Balance TP is present. */
-				trafficIndex = DOWN_LINK;
-			}
-		} else {
-			if (cur_rx_bytes > (cur_tx_bytes << 2)) {
-				/*  Downlink TP is present. */
-				trafficIndex = DOWN_LINK;
-			} else { /*  Balance TP is present. */
-				trafficIndex = UP_LINK;
-			}
-		}
-
-		/* 92D txop can't be set to 0x3e for cisco1250 */
-		if ((iot_peer == HT_IOT_PEER_CISCO) &&
-		    (wirelessmode == ODM_WM_N24G)) {
-			EDCA_BE_DL = edca_setting_DL[iot_peer];
-			EDCA_BE_UL = edca_setting_UL[iot_peer];
-		} else if ((iot_peer == HT_IOT_PEER_CISCO) &&
-			   ((wirelessmode == ODM_WM_G) ||
-			    (wirelessmode == (ODM_WM_B | ODM_WM_G)) ||
-			    (wirelessmode == ODM_WM_B))) {
-			EDCA_BE_DL = edca_setting_DL_GMode[iot_peer];
-		} else if ((iot_peer == HT_IOT_PEER_AIRGO) &&
-			   (wirelessmode == ODM_WM_G)) {
-			EDCA_BE_DL = 0xa630;
-		} else if (iot_peer == HT_IOT_PEER_MARVELL) {
-			EDCA_BE_DL = edca_setting_DL[iot_peer];
-			EDCA_BE_UL = edca_setting_UL[iot_peer];
-		} else if (iot_peer == HT_IOT_PEER_ATHEROS) {
-			/*  Set DL EDCA for Atheros peer to 0x3ea42b. */
-			EDCA_BE_DL = edca_setting_DL[iot_peer];
-		}
-
-		if (trafficIndex == DOWN_LINK)
-			edca_param = EDCA_BE_DL;
-		else
-			edca_param = EDCA_BE_UL;
-
-		rtw_write32(Adapter, REG_EDCA_BE_PARAM, edca_param);
-
-		pDM_Odm->DM_EDCA_Table.prv_traffic_idx = trafficIndex;
-
-		pDM_Odm->DM_EDCA_Table.bCurrentTurboEDCA = true;
-	} else {
-		/*  Turn Off EDCA turbo here. */
-		/*  Restore original EDCA according to the declaration of AP. */
-		if (pDM_Odm->DM_EDCA_Table.bCurrentTurboEDCA) {
-			rtw_write32(Adapter, REG_EDCA_BE_PARAM, pHalData->AcParam_BE);
-			pDM_Odm->DM_EDCA_Table.bCurrentTurboEDCA = false;
-		}
-	}
-}
diff --git a/drivers/staging/rtl8723bs/hal/odm_EdcaTurboCheck.h b/drivers/staging/rtl8723bs/hal/odm_EdcaTurboCheck.h
deleted file mode 100644
index e9f9f07221f2..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_EdcaTurboCheck.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef __ODMEDCATURBOCHECK_H__
-#define __ODMEDCATURBOCHECK_H__
-
-struct edca_t { /* _EDCA_TURBO_ */
-	bool bCurrentTurboEDCA;
-	bool bIsCurRDLState;
-
-	u32 prv_traffic_idx; /*  edca turbo */
-};
-
-void odm_EdcaTurboCheck(void *pDM_VOID);
-void ODM_EdcaTurboInit(void *pDM_VOID);
-
-void odm_EdcaTurboCheckCE(void *pDM_VOID);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/hal/odm_HWConfig.c b/drivers/staging/rtl8723bs/hal/odm_HWConfig.c
deleted file mode 100644
index 1716252641d3..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_HWConfig.c
+++ /dev/null
@@ -1,439 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include "odm_precomp.h"
-
-static u8 odm_query_rx_pwr_percentage(s8 ant_power)
-{
-	if ((ant_power <= -100) || (ant_power >= 20))
-		return	0;
-	else if (ant_power >= 0)
-		return	100;
-	else
-		return 100 + ant_power;
-
-}
-
-s32 odm_signal_scale_mapping(struct dm_odm_t *dm_odm, s32 curr_sig)
-{
-	s32 ret_sig = 0;
-
-	if (dm_odm->SupportInterface  == ODM_ITRF_SDIO) {
-		if (curr_sig >= 51 && curr_sig <= 100)
-			ret_sig = 100;
-		else if (curr_sig >= 41 && curr_sig <= 50)
-			ret_sig = 80 + ((curr_sig - 40)*2);
-		else if (curr_sig >= 31 && curr_sig <= 40)
-			ret_sig = 66 + (curr_sig - 30);
-		else if (curr_sig >= 21 && curr_sig <= 30)
-			ret_sig = 54 + (curr_sig - 20);
-		else if (curr_sig >= 10 && curr_sig <= 20)
-			ret_sig = 42 + (((curr_sig - 10) * 2) / 3);
-		else if (curr_sig >= 5 && curr_sig <= 9)
-			ret_sig = 22 + (((curr_sig - 5) * 3) / 2);
-		else if (curr_sig >= 1 && curr_sig <= 4)
-			ret_sig = 6 + (((curr_sig - 1) * 3) / 2);
-		else
-			ret_sig = curr_sig;
-	}
-
-	return ret_sig;
-}
-
-static u8 odm_evm_db_to_percentage(s8 value)
-{
-	/*  */
-	/*  -33dB~0dB to 0%~99% */
-	/*  */
-	s8 ret_val;
-
-	ret_val = value;
-	ret_val /= 2;
-
-	if (ret_val >= 0)
-		ret_val = 0;
-	if (ret_val <= -33)
-		ret_val = -33;
-
-	ret_val = 0 - ret_val;
-	ret_val *= 3;
-
-	if (ret_val == 99)
-		ret_val = 100;
-
-	return ret_val;
-}
-
-static s8 odm_cck_rssi(u8 lna_idx, u8 vga_idx)
-{
-	s8 rx_pwr_all = 0x00;
-
-	switch (lna_idx) {
-	/* 46  53 73 95 201301231630 */
-	/*  46 53 77 99 201301241630 */
-
-	case 6:
-		rx_pwr_all = -34 - (2 * vga_idx);
-		break;
-	case 4:
-		rx_pwr_all = -14 - (2 * vga_idx);
-		break;
-	case 1:
-		rx_pwr_all = 6 - (2 * vga_idx);
-		break;
-	case 0:
-		rx_pwr_all = 16 - (2 * vga_idx);
-		break;
-	default:
-		/* rx_pwr_all = -53+(2*(31-VGA_idx)); */
-		break;
-	}
-	return rx_pwr_all;
-}
-
-static void odm_rx_phy_status_parsing(struct dm_odm_t *dm_odm,
-				      struct odm_phy_info *phy_info,
-				      u8 *phy_status,
-				      struct odm_packet_info *pkt_info)
-{
-	u8 i;
-	s8 rx_pwr[4], rx_pwr_all = 0;
-	u8 evm, pwdb_all = 0, pwdb_all_bt;
-	u8 rssi, total_rssi = 0;
-	bool is_cck_rate = false;
-	u8 rf_rx_num = 0;
-	u8 lna_idx, vga_idx;
-	struct phy_status_rpt_8192cd_t *phy_sta_rpt = (struct phy_status_rpt_8192cd_t *)phy_status;
-
-	is_cck_rate = pkt_info->data_rate <= DESC_RATE11M;
-	phy_info->rx_mimo_signal_quality[RF_PATH_A] = -1;
-	phy_info->rx_mimo_signal_quality[RF_PATH_B] = -1;
-
-	if (is_cck_rate) {
-		u8 cck_agc_rpt;
-
-		dm_odm->PhyDbgInfo.NumQryPhyStatusCCK++;
-
-		/*
-		 * (1)Hardware does not provide RSSI for CCK/
-		 * (2)PWDB, Average PWDB calculated by
-		 *    hardware (for rate adaptive)
-		 */
-
-		cck_agc_rpt = phy_sta_rpt->cck_agc_rpt_ofdm_cfosho_a;
-
-		/*
-		 * 2011.11.28 LukeLee: 88E use different LNA & VGA gain table
-		 * The RSSI formula should be modified according to the gain table
-		 */
-		lna_idx = ((cck_agc_rpt & 0xE0)>>5);
-		vga_idx = (cck_agc_rpt & 0x1F);
-		rx_pwr_all = odm_cck_rssi(lna_idx, vga_idx);
-		pwdb_all = odm_query_rx_pwr_percentage(rx_pwr_all);
-		if (pwdb_all > 100)
-			pwdb_all = 100;
-
-		phy_info->rx_pwd_ba11 = pwdb_all;
-		phy_info->bt_rx_rssi_percentage = pwdb_all;
-		phy_info->recv_signal_power = rx_pwr_all;
-
-		/*  (3) Get Signal Quality (EVM) */
-
-		/* if (pPktinfo->bPacketMatchBSSID) */
-		{
-			u8 sq, sq_rpt;
-
-			if (phy_info->rx_pwd_ba11 > 40 && !dm_odm->bInHctTest)
-				sq = 100;
-			else {
-				sq_rpt = phy_sta_rpt->cck_sig_qual_ofdm_pwdb_all;
-
-				if (sq_rpt > 64)
-					sq = 0;
-				else if (sq_rpt < 20)
-					sq = 100;
-				else
-					sq = ((64-sq_rpt) * 100) / 44;
-
-			}
-
-			phy_info->signal_quality = sq;
-			phy_info->rx_mimo_signal_quality[RF_PATH_A] = sq;
-			phy_info->rx_mimo_signal_quality[RF_PATH_B] = -1;
-		}
-	} else { /* is OFDM rate */
-		dm_odm->PhyDbgInfo.NumQryPhyStatusOFDM++;
-
-		/*
-		 * (1)Get RSSI for HT rate
-		 */
-
-		for (i = RF_PATH_A; i < RF_PATH_MAX; i++) {
-			/*  2008/01/30 MH we will judge RF RX path now. */
-			if (dm_odm->RFPathRxEnable & BIT(i))
-				rf_rx_num++;
-			/* else */
-				/* continue; */
-
-			rx_pwr[i] = ((phy_sta_rpt->path_agc[i].gain & 0x3F) * 2) - 110;
-
-			phy_info->rx_pwr[i] = rx_pwr[i];
-
-			/* Translate DBM to percentage. */
-			rssi = odm_query_rx_pwr_percentage(rx_pwr[i]);
-			total_rssi += rssi;
-
-			phy_info->rx_mimo_signal_strength[i] = (u8)rssi;
-
-			/* Get Rx snr value in DB */
-			phy_info->rx_snr[i] = dm_odm->PhyDbgInfo.RxSNRdB[i] = (s32)(phy_sta_rpt->path_rxsnr[i]/2);
-		}
-
-		/*
-		 * (2)PWDB, Average PWDB calculated by hardware (for rate adaptive)
-		 */
-		rx_pwr_all = ((phy_sta_rpt->cck_sig_qual_ofdm_pwdb_all >> 1) & 0x7f) - 110;
-
-		pwdb_all_bt = pwdb_all = odm_query_rx_pwr_percentage(rx_pwr_all);
-
-		phy_info->rx_pwd_ba11 = pwdb_all;
-		phy_info->bt_rx_rssi_percentage = pwdb_all_bt;
-		phy_info->rx_power = rx_pwr_all;
-		phy_info->recv_signal_power = rx_pwr_all;
-
-		/*
-		 * (3)EVM of HT rate
-		 *
-		 * Only spatial stream 1 makes sense
-		 *
-		 * Do not use shift operation like "rx_evmX >>= 1"
-		 * because the compiler of free build environment
-		 * fill most significant bit to "zero" when doing
-		 * shifting operation which may change a negative
-		 * value to positive one, then the dbm value (which
-		 * is supposed to be negative) is not correct
-		 * anymore.
-		 */
-		evm = odm_evm_db_to_percentage(phy_sta_rpt->stream_rxevm[0]); /* dbm */
-
-		/*  Fill value in RFD, Get the first spatial stream only */
-		phy_info->signal_quality = (u8)(evm & 0xff);
-
-		phy_info->rx_mimo_signal_quality[RF_PATH_A] = (u8)(evm & 0xff);
-
-		odm_parsing_cfo(dm_odm, pkt_info, phy_sta_rpt->path_cfotail);
-	}
-
-	/*
-	 * UI BSS List signal strength(in percentage), make it good
-	 * looking, from 0~100.
-	 * It is assigned to the BSS List in GetValueFromBeaconOrProbeRsp().
-	 */
-	if (is_cck_rate) {
-		phy_info->signal_strength = (u8)(odm_signal_scale_mapping(dm_odm, pwdb_all));
-	} else {
-		if (rf_rx_num != 0)
-			phy_info->signal_strength = (u8)(odm_signal_scale_mapping(dm_odm, total_rssi /= rf_rx_num));
-	}
-}
-
-static void odm_Process_RSSIForDM(
-	struct dm_odm_t *pDM_Odm, struct odm_phy_info *pPhyInfo, struct odm_packet_info *pPktinfo
-)
-{
-
-	s32 UndecoratedSmoothedPWDB, UndecoratedSmoothedCCK, UndecoratedSmoothedOFDM, RSSI_Ave;
-	u8 isCCKrate = 0;
-	u8 RSSI_max, RSSI_min, i;
-	u32 OFDM_pkt = 0;
-	u32 Weighting = 0;
-	PSTA_INFO_T pEntry;
-
-	if (pPktinfo->station_id == 0xFF)
-		return;
-
-	pEntry = pDM_Odm->pODM_StaInfo[pPktinfo->station_id];
-
-	if (!IS_STA_VALID(pEntry))
-		return;
-
-	if ((!pPktinfo->bssid_match))
-		return;
-
-	if (pPktinfo->is_beacon)
-		pDM_Odm->PhyDbgInfo.NumQryBeaconPkt++;
-
-	isCCKrate = ((pPktinfo->data_rate <= DESC_RATE11M)) ? true : false;
-	pDM_Odm->RxRate = pPktinfo->data_rate;
-
-	/* Statistic for antenna/path diversity------------------ */
-	if (pDM_Odm->SupportAbility & ODM_BB_ANT_DIV) {
-
-	}
-
-	/* Smart Antenna Debug Message------------------ */
-
-	UndecoratedSmoothedCCK = pEntry->rssi_stat.UndecoratedSmoothedCCK;
-	UndecoratedSmoothedOFDM = pEntry->rssi_stat.UndecoratedSmoothedOFDM;
-	UndecoratedSmoothedPWDB = pEntry->rssi_stat.UndecoratedSmoothedPWDB;
-
-	if (pPktinfo->to_self || pPktinfo->is_beacon) {
-
-		if (!isCCKrate) { /* ofdm rate */
-			if (pPhyInfo->rx_mimo_signal_strength[RF_PATH_B] == 0) {
-				RSSI_Ave = pPhyInfo->rx_mimo_signal_strength[RF_PATH_A];
-				pDM_Odm->RSSI_A = pPhyInfo->rx_mimo_signal_strength[RF_PATH_A];
-				pDM_Odm->RSSI_B = 0;
-			} else {
-				pDM_Odm->RSSI_A =  pPhyInfo->rx_mimo_signal_strength[RF_PATH_A];
-				pDM_Odm->RSSI_B = pPhyInfo->rx_mimo_signal_strength[RF_PATH_B];
-
-				if (
-					pPhyInfo->rx_mimo_signal_strength[RF_PATH_A] >
-					pPhyInfo->rx_mimo_signal_strength[RF_PATH_B]
-				) {
-					RSSI_max = pPhyInfo->rx_mimo_signal_strength[RF_PATH_A];
-					RSSI_min = pPhyInfo->rx_mimo_signal_strength[RF_PATH_B];
-				} else {
-					RSSI_max = pPhyInfo->rx_mimo_signal_strength[RF_PATH_B];
-					RSSI_min = pPhyInfo->rx_mimo_signal_strength[RF_PATH_A];
-				}
-
-				if ((RSSI_max-RSSI_min) < 3)
-					RSSI_Ave = RSSI_max;
-				else if ((RSSI_max-RSSI_min) < 6)
-					RSSI_Ave = RSSI_max - 1;
-				else if ((RSSI_max-RSSI_min) < 10)
-					RSSI_Ave = RSSI_max - 2;
-				else
-					RSSI_Ave = RSSI_max - 3;
-			}
-
-			/* 1 Process OFDM RSSI */
-			if (UndecoratedSmoothedOFDM <= 0)	/*  initialize */
-				UndecoratedSmoothedOFDM = pPhyInfo->rx_pwd_ba11;
-			else {
-				if (pPhyInfo->rx_pwd_ba11 > (u32)UndecoratedSmoothedOFDM) {
-					UndecoratedSmoothedOFDM =
-							((UndecoratedSmoothedOFDM*(Rx_Smooth_Factor-1)) +
-							RSSI_Ave)/Rx_Smooth_Factor;
-					UndecoratedSmoothedOFDM = UndecoratedSmoothedOFDM + 1;
-				} else {
-					UndecoratedSmoothedOFDM =
-							((UndecoratedSmoothedOFDM*(Rx_Smooth_Factor-1)) +
-							RSSI_Ave)/Rx_Smooth_Factor;
-				}
-			}
-
-			pEntry->rssi_stat.PacketMap = (pEntry->rssi_stat.PacketMap<<1) | BIT(0);
-
-		} else {
-			RSSI_Ave = pPhyInfo->rx_pwd_ba11;
-			pDM_Odm->RSSI_A = (u8) pPhyInfo->rx_pwd_ba11;
-			pDM_Odm->RSSI_B = 0;
-
-			/* 1 Process CCK RSSI */
-			if (UndecoratedSmoothedCCK <= 0)	/*  initialize */
-				UndecoratedSmoothedCCK = pPhyInfo->rx_pwd_ba11;
-			else {
-				if (pPhyInfo->rx_pwd_ba11 > (u32)UndecoratedSmoothedCCK) {
-					UndecoratedSmoothedCCK =
-							((UndecoratedSmoothedCCK*(Rx_Smooth_Factor-1)) +
-							pPhyInfo->rx_pwd_ba11)/Rx_Smooth_Factor;
-					UndecoratedSmoothedCCK = UndecoratedSmoothedCCK + 1;
-				} else {
-					UndecoratedSmoothedCCK =
-							((UndecoratedSmoothedCCK*(Rx_Smooth_Factor-1)) +
-							pPhyInfo->rx_pwd_ba11)/Rx_Smooth_Factor;
-				}
-			}
-			pEntry->rssi_stat.PacketMap = pEntry->rssi_stat.PacketMap<<1;
-		}
-
-		/* if (pEntry) */
-		{
-			/* 2011.07.28 LukeLee: modified to prevent unstable CCK RSSI */
-			if (pEntry->rssi_stat.ValidBit >= 64)
-				pEntry->rssi_stat.ValidBit = 64;
-			else
-				pEntry->rssi_stat.ValidBit++;
-
-			for (i = 0; i < pEntry->rssi_stat.ValidBit; i++)
-				OFDM_pkt += (u8)(pEntry->rssi_stat.PacketMap>>i)&BIT(0);
-
-			if (pEntry->rssi_stat.ValidBit == 64) {
-				Weighting = ((OFDM_pkt<<4) > 64)?64:(OFDM_pkt<<4);
-				UndecoratedSmoothedPWDB = (Weighting*UndecoratedSmoothedOFDM+(64-Weighting)*UndecoratedSmoothedCCK)>>6;
-			} else {
-				if (pEntry->rssi_stat.ValidBit != 0)
-					UndecoratedSmoothedPWDB = (OFDM_pkt*UndecoratedSmoothedOFDM+(pEntry->rssi_stat.ValidBit-OFDM_pkt)*UndecoratedSmoothedCCK)/pEntry->rssi_stat.ValidBit;
-				else
-					UndecoratedSmoothedPWDB = 0;
-			}
-
-			pEntry->rssi_stat.UndecoratedSmoothedCCK = UndecoratedSmoothedCCK;
-			pEntry->rssi_stat.UndecoratedSmoothedOFDM = UndecoratedSmoothedOFDM;
-			pEntry->rssi_stat.UndecoratedSmoothedPWDB = UndecoratedSmoothedPWDB;
-		}
-
-	}
-}
-
-/*  */
-/*  Endianness before calling this API */
-/*  */
-void odm_phy_status_query(struct dm_odm_t *dm_odm, struct odm_phy_info *phy_info,
-			  u8 *phy_status, struct odm_packet_info *pkt_info)
-{
-
-	odm_rx_phy_status_parsing(dm_odm, phy_info, phy_status, pkt_info);
-
-	if (!dm_odm->RSSI_test)
-		odm_Process_RSSIForDM(dm_odm, phy_info, pkt_info);
-}
-
-/*  */
-/*  If you want to add a new IC, Please follow below template and generate a new one. */
-/*  */
-/*  */
-
-enum hal_status ODM_ConfigRFWithHeaderFile(
-	struct dm_odm_t *pDM_Odm,
-	enum ODM_RF_Config_Type ConfigType,
-	enum rf_path eRFPath
-)
-{
-	if (ConfigType == CONFIG_RF_RADIO)
-		ODM_ReadAndConfig_MP_8723B_RadioA(pDM_Odm);
-	else if (ConfigType == CONFIG_RF_TXPWR_LMT)
-		ODM_ReadAndConfig_MP_8723B_TXPWR_LMT(pDM_Odm);
-
-	return HAL_STATUS_SUCCESS;
-}
-
-enum hal_status ODM_ConfigRFWithTxPwrTrackHeaderFile(struct dm_odm_t *pDM_Odm)
-{
-	if (pDM_Odm->SupportInterface == ODM_ITRF_SDIO)
-		ODM_ReadAndConfig_MP_8723B_TxPowerTrack_SDIO(pDM_Odm);
-
-	return HAL_STATUS_SUCCESS;
-}
-
-enum hal_status ODM_ConfigBBWithHeaderFile(
-	struct dm_odm_t *pDM_Odm, enum ODM_BB_Config_Type ConfigType
-)
-{
-	if (ConfigType == CONFIG_BB_PHY_REG)
-		ODM_ReadAndConfig_MP_8723B_PHY_REG(pDM_Odm);
-	else if (ConfigType == CONFIG_BB_AGC_TAB)
-		ODM_ReadAndConfig_MP_8723B_AGC_TAB(pDM_Odm);
-	else if (ConfigType == CONFIG_BB_PHY_REG_PG)
-		ODM_ReadAndConfig_MP_8723B_PHY_REG_PG(pDM_Odm);
-
-	return HAL_STATUS_SUCCESS;
-}
-
diff --git a/drivers/staging/rtl8723bs/hal/odm_HWConfig.h b/drivers/staging/rtl8723bs/hal/odm_HWConfig.h
deleted file mode 100644
index 615145812ed2..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_HWConfig.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef __HALHWOUTSRC_H__
-#define __HALHWOUTSRC_H__
-
-/*  */
-/*  structure and define */
-/*  */
-
-struct phy_rx_agc_info_t {
-	#if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
-		u8 gain:7, trsw:1;
-	#else
-		u8 trsw:1, gain:7;
-	#endif
-};
-
-struct phy_status_rpt_8192cd_t {
-	struct phy_rx_agc_info_t path_agc[2];
-	u8 ch_corr[2];
-	u8 cck_sig_qual_ofdm_pwdb_all;
-	u8 cck_agc_rpt_ofdm_cfosho_a;
-	u8 cck_rpt_b_ofdm_cfosho_b;
-	u8 rsvd_1;/* ch_corr_msb; */
-	u8 noise_power_db_msb;
-	s8 path_cfotail[2];
-	u8 pcts_mask[2];
-	s8 stream_rxevm[2];
-	u8 path_rxsnr[2];
-	u8 noise_power_db_lsb;
-	u8 rsvd_2[3];
-	u8 stream_csi[2];
-	u8 stream_target_csi[2];
-	s8	sig_evm;
-	u8 rsvd_3;
-
-#if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
-	u8 antsel_rx_keep_2:1;	/* ex_intf_flg:1; */
-	u8 sgi_en:1;
-	u8 rxsc:2;
-	u8 idle_long:1;
-	u8 r_ant_train_en:1;
-	u8 ant_sel_b:1;
-	u8 ant_sel:1;
-#else	/*  _BIG_ENDIAN_ */
-	u8 ant_sel:1;
-	u8 ant_sel_b:1;
-	u8 r_ant_train_en:1;
-	u8 idle_long:1;
-	u8 rxsc:2;
-	u8 sgi_en:1;
-	u8 antsel_rx_keep_2:1;	/* ex_intf_flg:1; */
-#endif
-};
-
-void odm_phy_status_query(struct dm_odm_t *dm_odm, struct odm_phy_info *phy_info,
-			  u8 *phy_status, struct odm_packet_info *pkt_info);
-
-enum hal_status ODM_ConfigRFWithTxPwrTrackHeaderFile(struct dm_odm_t *pDM_Odm);
-
-enum hal_status ODM_ConfigRFWithHeaderFile(
-	struct dm_odm_t *pDM_Odm,
-	enum ODM_RF_Config_Type ConfigType,
-	enum rf_path eRFPath
-);
-
-enum hal_status ODM_ConfigBBWithHeaderFile(
-	struct dm_odm_t *pDM_Odm, enum ODM_BB_Config_Type ConfigType
-);
-
-enum hal_status ODM_ConfigFWWithHeaderFile(
-	struct dm_odm_t *pDM_Odm,
-	enum ODM_FW_Config_Type ConfigType,
-	u8 *pFirmware,
-	u32 *pSize
-);
-
-s32 odm_signal_scale_mapping(struct dm_odm_t *pDM_Odm, s32 CurrSig);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/hal/odm_RegConfig8723B.c b/drivers/staging/rtl8723bs/hal/odm_RegConfig8723B.c
deleted file mode 100644
index 6514a711e6bd..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_RegConfig8723B.c
+++ /dev/null
@@ -1,176 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include "odm_precomp.h"
-
-void odm_ConfigRFReg_8723B(
-	struct dm_odm_t *pDM_Odm,
-	u32 Addr,
-	u32 Data,
-	enum rf_path RF_PATH,
-	u32 RegAddr
-)
-{
-	if (Addr == 0xfe || Addr == 0xffe)
-		msleep(50);
-	else {
-		PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH, RegAddr, bRFRegOffsetMask, Data);
-		/*  Add 1us delay between BB/RF register setting. */
-		udelay(1);
-
-		/* For disable/enable test in high temperature, the B6 value will fail to fill. Suggestion by BB Stanley, 2013.06.25. */
-		if (Addr == 0xb6) {
-			u32 getvalue = 0;
-			u8 count = 0;
-
-			getvalue = PHY_QueryRFReg(
-				pDM_Odm->Adapter, RF_PATH, Addr, bMaskDWord
-			);
-
-			udelay(1);
-
-			while ((getvalue>>8) != (Data>>8)) {
-				count++;
-				PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH, RegAddr, bRFRegOffsetMask, Data);
-				udelay(1);
-				getvalue = PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH, Addr, bMaskDWord);
-				if (count > 5)
-					break;
-			}
-		}
-
-		if (Addr == 0xb2) {
-			u32 getvalue = 0;
-			u8 count = 0;
-
-			getvalue = PHY_QueryRFReg(
-				pDM_Odm->Adapter, RF_PATH, Addr, bMaskDWord
-			);
-
-			udelay(1);
-
-			while (getvalue != Data) {
-				count++;
-				PHY_SetRFReg(
-					pDM_Odm->Adapter,
-					RF_PATH,
-					RegAddr,
-					bRFRegOffsetMask,
-					Data
-				);
-				udelay(1);
-				/* Do LCK againg */
-				PHY_SetRFReg(
-					pDM_Odm->Adapter,
-					RF_PATH,
-					0x18,
-					bRFRegOffsetMask,
-					0x0fc07
-				);
-				udelay(1);
-				getvalue = PHY_QueryRFReg(
-					pDM_Odm->Adapter, RF_PATH, Addr, bMaskDWord
-				);
-
-				if (count > 5)
-					break;
-			}
-		}
-	}
-}
-
-void odm_ConfigRF_RadioA_8723B(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data)
-{
-	u32  content = 0x1000; /*  RF_Content: radioa_txt */
-	u32 maskforPhySet = (u32)(content&0xE000);
-
-	odm_ConfigRFReg_8723B(
-		pDM_Odm,
-		Addr,
-		Data,
-		RF_PATH_A,
-		Addr|maskforPhySet
-	);
-}
-
-void odm_ConfigMAC_8723B(struct dm_odm_t *pDM_Odm, u32 Addr, u8 Data)
-{
-	rtw_write8(pDM_Odm->Adapter, Addr, Data);
-}
-
-void odm_ConfigBB_AGC_8723B(
-	struct dm_odm_t *pDM_Odm,
-	u32 Addr,
-	u32 Bitmask,
-	u32 Data
-)
-{
-	PHY_SetBBReg(pDM_Odm->Adapter, Addr, Bitmask, Data);
-	/*  Add 1us delay between BB/RF register setting. */
-	udelay(1);
-}
-
-void odm_ConfigBB_PHY_REG_PG_8723B(
-	struct dm_odm_t *pDM_Odm,
-	u32 RfPath,
-	u32 Addr,
-	u32 Bitmask,
-	u32 Data
-)
-{
-	if (Addr == 0xfe || Addr == 0xffe)
-		msleep(50);
-	else
-		PHY_StoreTxPowerByRate(pDM_Odm->Adapter, RfPath, Addr, Bitmask, Data);
-}
-
-void odm_ConfigBB_PHY_8723B(
-	struct dm_odm_t *pDM_Odm,
-	u32 Addr,
-	u32 Bitmask,
-	u32 Data
-)
-{
-	if (Addr == 0xfe)
-		msleep(50);
-	else if (Addr == 0xfd)
-		mdelay(5);
-	else if (Addr == 0xfc)
-		mdelay(1);
-	else if (Addr == 0xfb)
-		udelay(50);
-	else if (Addr == 0xfa)
-		udelay(5);
-	else if (Addr == 0xf9)
-		udelay(1);
-	else
-		PHY_SetBBReg(pDM_Odm->Adapter, Addr, Bitmask, Data);
-
-	/*  Add 1us delay between BB/RF register setting. */
-	udelay(1);
-}
-
-void odm_ConfigBB_TXPWR_LMT_8723B(
-	struct dm_odm_t *pDM_Odm,
-	u8 *Regulation,
-	u8 *Bandwidth,
-	u8 *RateSection,
-	u8 *RfPath,
-	u8 *Channel,
-	u8 *PowerLimit
-)
-{
-	PHY_SetTxPowerLimit(
-		pDM_Odm->Adapter,
-		Regulation,
-		Bandwidth,
-		RateSection,
-		RfPath,
-		Channel,
-		PowerLimit
-	);
-}
diff --git a/drivers/staging/rtl8723bs/hal/odm_RegConfig8723B.h b/drivers/staging/rtl8723bs/hal/odm_RegConfig8723B.h
deleted file mode 100644
index fba7053ee3e1..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_RegConfig8723B.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __INC_ODM_REGCONFIG_H_8723B
-#define __INC_ODM_REGCONFIG_H_8723B
-
-void odm_ConfigRFReg_8723B(struct dm_odm_t *pDM_Odm,
-			   u32 Addr,
-			   u32 Data,
-			   enum rf_path RF_PATH,
-			   u32 RegAddr
-);
-
-void odm_ConfigRF_RadioA_8723B(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data);
-
-void odm_ConfigMAC_8723B(struct dm_odm_t *pDM_Odm, u32 Addr, u8 Data);
-
-void odm_ConfigBB_AGC_8723B(struct dm_odm_t *pDM_Odm,
-			    u32 Addr,
-			    u32 Bitmask,
-			    u32 Data
-);
-
-void odm_ConfigBB_PHY_REG_PG_8723B(struct dm_odm_t *pDM_Odm, u32 RfPath, u32 Addr,
-				   u32 Bitmask, u32 Data);
-
-void odm_ConfigBB_PHY_8723B(struct dm_odm_t *pDM_Odm,
-			    u32 Addr,
-			    u32 Bitmask,
-			    u32 Data
-);
-
-void odm_ConfigBB_TXPWR_LMT_8723B(struct dm_odm_t *pDM_Odm,
-				  u8 *Regulation,
-				  u8 *Bandwidth,
-				  u8 *RateSection,
-				  u8 *RfPath,
-				  u8 *Channel,
-				  u8 *PowerLimit
-);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/hal/odm_RegDefine11N.h b/drivers/staging/rtl8723bs/hal/odm_RegDefine11N.h
deleted file mode 100644
index 9ba8e06e5ad5..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_RegDefine11N.h
+++ /dev/null
@@ -1,160 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef	__ODM_REGDEFINE11N_H__
-#define __ODM_REGDEFINE11N_H__
-
-/* 2 RF REG LIST */
-#define	ODM_REG_RF_MODE_11N				0x00
-#define	ODM_REG_RF_0B_11N				0x0B
-#define	ODM_REG_CHNBW_11N				0x18
-#define	ODM_REG_T_METER_11N				0x24
-#define	ODM_REG_RF_25_11N				0x25
-#define	ODM_REG_RF_26_11N				0x26
-#define	ODM_REG_RF_27_11N				0x27
-#define	ODM_REG_RF_2B_11N				0x2B
-#define	ODM_REG_RF_2C_11N				0x2C
-#define	ODM_REG_RXRF_A3_11N				0x3C
-#define	ODM_REG_T_METER_92D_11N			0x42
-#define	ODM_REG_T_METER_88E_11N			0x42
-
-/* 2 BB REG LIST */
-/* PAGE 8 */
-#define	ODM_REG_BB_CTRL_11N				0x800
-#define	ODM_REG_RF_PIN_11N				0x804
-#define	ODM_REG_PSD_CTRL_11N				0x808
-#define	ODM_REG_TX_ANT_CTRL_11N			0x80C
-#define	ODM_REG_BB_PWR_SAV5_11N		0x818
-#define	ODM_REG_CCK_RPT_FORMAT_11N		0x824
-#define	ODM_REG_RX_DEFAULT_A_11N		0x858
-#define	ODM_REG_RX_DEFAULT_B_11N		0x85A
-#define	ODM_REG_BB_PWR_SAV3_11N		0x85C
-#define	ODM_REG_ANTSEL_CTRL_11N			0x860
-#define	ODM_REG_RX_ANT_CTRL_11N			0x864
-#define	ODM_REG_PIN_CTRL_11N				0x870
-#define	ODM_REG_BB_PWR_SAV1_11N		0x874
-#define	ODM_REG_ANTSEL_PATH_11N			0x878
-#define	ODM_REG_BB_3WIRE_11N			0x88C
-#define	ODM_REG_SC_CNT_11N				0x8C4
-#define	ODM_REG_PSD_DATA_11N				0x8B4
-#define	ODM_REG_PSD_DATA_11N				0x8B4
-#define	ODM_REG_NHM_TIMER_11N			0x894
-#define	ODM_REG_NHM_TH9_TH10_11N		0x890
-#define	ODM_REG_NHM_TH3_TO_TH0_11N		0x898
-#define	ODM_REG_NHM_TH7_TO_TH4_11N		0x89c
-#define	ODM_REG_NHM_CNT_11N				0x8d8
-/* PAGE 9 */
-#define	ODM_REG_DBG_RPT_11N				0x908
-#define	ODM_REG_ANT_MAPPING1_11N		0x914
-#define	ODM_REG_ANT_MAPPING2_11N		0x918
-/* PAGE A */
-#define	ODM_REG_CCK_ANTDIV_PARA1_11N	0xA00
-#define	ODM_REG_CCK_CCA_11N				0xA0A
-#define	ODM_REG_CCK_ANTDIV_PARA2_11N	0xA0C
-#define	ODM_REG_CCK_ANTDIV_PARA3_11N	0xA10
-#define	ODM_REG_CCK_ANTDIV_PARA4_11N	0xA14
-#define	ODM_REG_CCK_FILTER_PARA1_11N	0xA22
-#define	ODM_REG_CCK_FILTER_PARA2_11N	0xA23
-#define	ODM_REG_CCK_FILTER_PARA3_11N	0xA24
-#define	ODM_REG_CCK_FILTER_PARA4_11N	0xA25
-#define	ODM_REG_CCK_FILTER_PARA5_11N	0xA26
-#define	ODM_REG_CCK_FILTER_PARA6_11N	0xA27
-#define	ODM_REG_CCK_FILTER_PARA7_11N	0xA28
-#define	ODM_REG_CCK_FILTER_PARA8_11N	0xA29
-#define	ODM_REG_CCK_FA_RST_11N			0xA2C
-#define	ODM_REG_CCK_FA_MSB_11N			0xA58
-#define	ODM_REG_CCK_FA_LSB_11N			0xA5C
-#define	ODM_REG_CCK_CCA_CNT_11N			0xA60
-#define	ODM_REG_BB_PWR_SAV4_11N		0xA74
-/* PAGE B */
-#define	ODM_REG_LNA_SWITCH_11N			0xB2C
-#define	ODM_REG_PATH_SWITCH_11N			0xB30
-#define	ODM_REG_RSSI_CTRL_11N			0xB38
-#define	ODM_REG_CONFIG_ANTA_11N			0xB68
-#define	ODM_REG_RSSI_BT_11N				0xB9C
-/* PAGE C */
-#define	ODM_REG_OFDM_FA_HOLDC_11N		0xC00
-#define	ODM_REG_BB_RX_PATH_11N			0xC04
-#define	ODM_REG_TRMUX_11N				0xC08
-#define	ODM_REG_OFDM_FA_RSTC_11N		0xC0C
-#define	ODM_REG_RXIQI_MATRIX_11N			0xC14
-#define	ODM_REG_TXIQK_MATRIX_LSB1_11N	0xC4C
-#define	ODM_REG_IGI_A_11N					0xC50
-#define	ODM_REG_ANTDIV_PARA2_11N		0xC54
-#define	ODM_REG_IGI_B_11N					0xC58
-#define	ODM_REG_ANTDIV_PARA3_11N		0xC5C
-#define   ODM_REG_L1SBD_PD_CH_11N			0XC6C
-#define	ODM_REG_BB_PWR_SAV2_11N		0xC70
-#define	ODM_REG_RX_OFF_11N				0xC7C
-#define	ODM_REG_TXIQK_MATRIXA_11N		0xC80
-#define	ODM_REG_TXIQK_MATRIXB_11N		0xC88
-#define	ODM_REG_TXIQK_MATRIXA_LSB2_11N	0xC94
-#define	ODM_REG_TXIQK_MATRIXB_LSB2_11N	0xC9C
-#define	ODM_REG_RXIQK_MATRIX_LSB_11N	0xCA0
-#define	ODM_REG_ANTDIV_PARA1_11N		0xCA4
-#define	ODM_REG_OFDM_FA_TYPE1_11N		0xCF0
-/* PAGE D */
-#define	ODM_REG_OFDM_FA_RSTD_11N		0xD00
-#define	ODM_REG_BB_ATC_11N				0xD2C
-#define	ODM_REG_OFDM_FA_TYPE2_11N		0xDA0
-#define	ODM_REG_OFDM_FA_TYPE3_11N		0xDA4
-#define	ODM_REG_OFDM_FA_TYPE4_11N		0xDA8
-#define	ODM_REG_RPT_11N					0xDF4
-/* PAGE E */
-#define	ODM_REG_TXAGC_A_6_18_11N		0xE00
-#define	ODM_REG_TXAGC_A_24_54_11N		0xE04
-#define	ODM_REG_TXAGC_A_1_MCS32_11N	0xE08
-#define	ODM_REG_TXAGC_A_MCS0_3_11N		0xE10
-#define	ODM_REG_TXAGC_A_MCS4_7_11N		0xE14
-#define	ODM_REG_FPGA0_IQK_11N			0xE28
-#define	ODM_REG_TXIQK_TONE_A_11N		0xE30
-#define	ODM_REG_RXIQK_TONE_A_11N		0xE34
-#define	ODM_REG_TXIQK_PI_A_11N			0xE38
-#define	ODM_REG_RXIQK_PI_A_11N			0xE3C
-#define	ODM_REG_TXIQK_11N				0xE40
-#define	ODM_REG_RXIQK_11N				0xE44
-#define	ODM_REG_IQK_AGC_PTS_11N			0xE48
-#define	ODM_REG_IQK_AGC_RSP_11N			0xE4C
-#define	ODM_REG_BLUETOOTH_11N			0xE6C
-#define	ODM_REG_RX_WAIT_CCA_11N			0xE70
-#define	ODM_REG_TX_CCK_RFON_11N			0xE74
-#define	ODM_REG_TX_CCK_BBON_11N			0xE78
-#define	ODM_REG_OFDM_RFON_11N			0xE7C
-#define	ODM_REG_OFDM_BBON_11N			0xE80
-#define		ODM_REG_TX2RX_11N				0xE84
-#define	ODM_REG_TX2TX_11N				0xE88
-#define	ODM_REG_RX_CCK_11N				0xE8C
-#define	ODM_REG_RX_OFDM_11N				0xED0
-#define	ODM_REG_RX_WAIT_RIFS_11N		0xED4
-#define	ODM_REG_RX2RX_11N				0xED8
-#define	ODM_REG_STANDBY_11N				0xEDC
-#define	ODM_REG_SLEEP_11N				0xEE0
-#define	ODM_REG_PMPD_ANAEN_11N			0xEEC
-#define	ODM_REG_IGI_C_11N					0xF84
-#define	ODM_REG_IGI_D_11N					0xF88
-
-/* 2 MAC REG LIST */
-#define	ODM_REG_BB_RST_11N				0x02
-#define	ODM_REG_ANTSEL_PIN_11N			0x4C
-#define	ODM_REG_EARLY_MODE_11N			0x4D0
-#define	ODM_REG_RSSI_MONITOR_11N		0x4FE
-#define	ODM_REG_EDCA_VO_11N				0x500
-#define	ODM_REG_EDCA_VI_11N				0x504
-#define	ODM_REG_EDCA_BE_11N				0x508
-#define	ODM_REG_EDCA_BK_11N				0x50C
-#define	ODM_REG_TXPAUSE_11N				0x522
-#define	ODM_REG_RESP_TX_11N				0x6D8
-#define	ODM_REG_ANT_TRAIN_PARA1_11N		0x7b0
-#define	ODM_REG_ANT_TRAIN_PARA2_11N		0x7b4
-
-/* DIG Related */
-#define	ODM_BIT_IGI_11N					0x0000007F
-#define	ODM_BIT_CCK_RPT_FORMAT_11N		BIT(9)
-#define	ODM_BIT_BB_RX_PATH_11N			0xF
-#define	ODM_BIT_BB_ATC_11N				BIT(11)
-
-#endif
diff --git a/drivers/staging/rtl8723bs/hal/odm_interface.h b/drivers/staging/rtl8723bs/hal/odm_interface.h
deleted file mode 100644
index f79c3d57edff..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_interface.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef	__ODM_INTERFACE_H__
-#define __ODM_INTERFACE_H__
-
-/*  =========== Macro Define */
-
-#define _reg_all(_name)			ODM_##_name
-#define _reg_ic(_name, _ic)		ODM_##_name##_ic
-#define _bit_all(_name)			BIT_##_name
-#define _bit_ic(_name, _ic)		BIT_##_name##_ic
-
-#define _reg_11N(_name)			ODM_REG_##_name##_11N
-#define _bit_11N(_name)			ODM_BIT_##_name##_11N
-
-#define _cat(_name, _func) _func##_11N(_name)
-
-/*  _name: name of register or bit. */
-/*  Example: "ODM_REG(R_A_AGC_CORE1)" */
-/*         gets "ODM_R_A_AGC_CORE1" or "ODM_R_A_AGC_CORE1_8192C". */
-#define ODM_REG(_name)	_cat(_name, _reg)
-#define ODM_BIT(_name)	_cat(_name, _bit)
-
-#endif	/*  __ODM_INTERFACE_H__ */
diff --git a/drivers/staging/rtl8723bs/hal/odm_precomp.h b/drivers/staging/rtl8723bs/hal/odm_precomp.h
deleted file mode 100644
index 2987857a8761..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_precomp.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef	__ODM_PRECOMP_H__
-#define __ODM_PRECOMP_H__
-
-#include "odm_types.h"
-
-#define		TEST_FALG___		1
-
-/* 2 Config Flags and Structs - defined by each ODM Type */
-
-	/* include <basic_types.h> */
-	/* include <osdep_service.h> */
-	/* include <drv_types.h> */
-	/* include <rtw_byteorder.h> */
-	/* include <hal_intf.h> */
-#define BEAMFORMING_SUPPORT 0
-
-/* 2 Hardware Parameter Files */
-
-/* 2 OutSrc Header Files */
-
-#include "odm.h"
-#include "odm_HWConfig.h"
-#include "odm_RegDefine11N.h"
-#include "odm_EdcaTurboCheck.h"
-#include "odm_DIG.h"
-#include "odm_DynamicBBPowerSaving.h"
-#include "odm_DynamicTxPower.h"
-#include "odm_CfoTracking.h"
-#include "HalPhyRf.h"
-#include "HalPhyRf_8723B.h"/* for IQK, LCK, Power-tracking */
-#include "rtl8723b_hal.h"
-#include "odm_interface.h"
-#include "odm_reg.h"
-#include "HalHWImg8723B_MAC.h"
-#include "HalHWImg8723B_RF.h"
-#include "HalHWImg8723B_BB.h"
-#include "Hal8723BReg.h"
-#include "odm_RegConfig8723B.h"
-
-#endif	/*  __ODM_PRECOMP_H__ */
diff --git a/drivers/staging/rtl8723bs/hal/odm_reg.h b/drivers/staging/rtl8723bs/hal/odm_reg.h
deleted file mode 100644
index a3b1f673774c..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_reg.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-/*  File Name: odm_reg.h */
-/*  Description: */
-/*  This file is for general register definition. */
-#ifndef	__HAL_ODM_REG_H__
-#define __HAL_ODM_REG_H__
-
-/*  Register Definition */
-
-/* MAC REG */
-#define	ODM_BB_RESET				0x002
-#define	ODM_DUMMY				0x4fe
-#define	RF_T_METER_OLD				0x24
-#define	RF_T_METER_NEW				0x42
-
-#define	ODM_EDCA_VO_PARAM			0x500
-#define	ODM_EDCA_VI_PARAM			0x504
-#define	ODM_EDCA_BE_PARAM			0x508
-#define	ODM_EDCA_BK_PARAM			0x50C
-#define	ODM_TXPAUSE				0x522
-
-/* BB REG */
-#define	ODM_FPGA_PHY0_PAGE8			0x800
-#define	ODM_PSD_SETTING				0x808
-#define	ODM_AFE_SETTING				0x818
-#define	ODM_TXAGC_B_24_54			0x834
-#define	ODM_TXAGC_B_MCS32_5			0x838
-#define	ODM_TXAGC_B_MCS0_MCS3			0x83c
-#define	ODM_TXAGC_B_MCS4_MCS7			0x848
-#define	ODM_ANALOG_REGISTER			0x85c
-#define	ODM_RF_INTERFACE_OUTPUT			0x860
-#define	ODM_TXAGC_B_11_A_2_11			0x86c
-#define	ODM_AD_DA_LSB_MASK			0x874
-#define	ODM_ENABLE_3_WIRE			0x88c
-#define	ODM_PSD_REPORT				0x8b4
-#define	ODM_R_ANT_SELECT			0x90c
-#define	ODM_CCK_ANT_SELECT			0xa07
-#define	ODM_CCK_PD_THRESH			0xa0a
-#define	ODM_CCK_RF_REG1				0xa11
-#define	ODM_CCK_MATCH_FILTER			0xa20
-#define	ODM_CCK_RAKE_MAC			0xa2e
-#define	ODM_CCK_CNT_RESET			0xa2d
-#define	ODM_CCK_TX_DIVERSITY			0xa2f
-#define	ODM_CCK_FA_CNT_MSB			0xa5b
-#define	ODM_CCK_FA_CNT_LSB			0xa5c
-#define	ODM_CCK_NEW_FUNCTION			0xa75
-#define	ODM_OFDM_PHY0_PAGE_C			0xc00
-#define	ODM_OFDM_RX_ANT				0xc04
-#define	ODM_R_A_RXIQI				0xc14
-#define	ODM_R_A_AGC_CORE1			0xc50
-#define	ODM_R_A_AGC_CORE2			0xc54
-#define	ODM_R_B_AGC_CORE1			0xc58
-#define	ODM_R_AGC_PAR				0xc70
-#define	ODM_R_HTSTF_AGC_PAR			0xc7c
-#define	ODM_TX_PWR_TRAINING_A			0xc90
-#define	ODM_TX_PWR_TRAINING_B			0xc98
-#define	ODM_OFDM_FA_CNT1			0xcf0
-#define	ODM_OFDM_PHY0_PAGE_D			0xd00
-#define	ODM_OFDM_FA_CNT2			0xda0
-#define	ODM_OFDM_FA_CNT3			0xda4
-#define	ODM_OFDM_FA_CNT4			0xda8
-#define	ODM_TXAGC_A_6_18			0xe00
-#define	ODM_TXAGC_A_24_54			0xe04
-#define	ODM_TXAGC_A_1_MCS32			0xe08
-#define	ODM_TXAGC_A_MCS0_MCS3			0xe10
-#define	ODM_TXAGC_A_MCS4_MCS7			0xe14
-
-/* RF REG */
-#define	ODM_GAIN_SETTING			0x00
-#define	ODM_CHANNEL				0x18
-
-/* Ant Detect Reg */
-#define	ODM_DPDT				0x300
-
-/* PSD Init */
-#define	ODM_PSDREG				0x808
-
-/* 92D Path Div */
-#define	PATHDIV_REG				0xB30
-#define	PATHDIV_TRI				0xBA0
-
-/*  Bitmap Definition */
-
-#define	BIT_FA_RESET				BIT0
-
-#endif
diff --git a/drivers/staging/rtl8723bs/hal/odm_types.h b/drivers/staging/rtl8723bs/hal/odm_types.h
deleted file mode 100644
index 25f0edd716cc..000000000000
--- a/drivers/staging/rtl8723bs/hal/odm_types.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __ODM_TYPES_H__
-#define __ODM_TYPES_H__
-
-#include <drv_types.h>
-
-/*  Deifne HW endian support */
-#define	ODM_ENDIAN_BIG	0
-#define	ODM_ENDIAN_LITTLE	1
-
-#define GET_ODM(__padapter)	((PDM_ODM_T)(&((GET_HAL_DATA(__padapter))->odmpriv)))
-
-enum hal_status {
-	HAL_STATUS_SUCCESS,
-	HAL_STATUS_FAILURE,
-};
-
-	#if defined(__LITTLE_ENDIAN)
-		#define	ODM_ENDIAN_TYPE			ODM_ENDIAN_LITTLE
-	#else
-		#define	ODM_ENDIAN_TYPE			ODM_ENDIAN_BIG
-	#endif
-
-	#define	STA_INFO_T			struct sta_info
-	#define	PSTA_INFO_T		struct sta_info *
-
-	/* define useless flag to avoid compile warning */
-	#define	USE_WORKITEM 0
-	#define   FPGA_TWO_MAC_VERIFICATION	0
-
-#define READ_NEXT_PAIR(v1, v2, i) do { if (i+2 >= ArrayLen) break; i += 2; v1 = Array[i]; v2 = Array[i+1]; } while (0)
-#define COND_ELSE  2
-#define COND_ENDIF 3
-
-#endif /*  __ODM_TYPES_H__ */
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c b/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c
deleted file mode 100644
index d2b44ad60a4c..000000000000
--- a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c
+++ /dev/null
@@ -1,933 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <drv_types.h>
-#include <rtl8723b_hal.h>
-#include <linux/etherdevice.h>
-#include <linux/iopoll.h>
-#include "hal_com_h2c.h"
-
-#define MAX_H2C_BOX_NUMS	4
-#define MESSAGE_BOX_SIZE	4
-
-#define RTL8723B_MAX_CMD_LEN	7
-#define RTL8723B_EX_MESSAGE_BOX_SIZE	4
-
-static u8 _is_fw_read_cmd_down(struct adapter *padapter, u8 msgbox_num)
-{
-	u8 valid;
-	int ret;
-
-	ret = read_poll_timeout_atomic(rtw_read8,
-				       valid, !(valid & BIT(msgbox_num)),
-				       0, 500, false,
-				       padapter, REG_HMETFR);
-
-	return !ret;
-}
-
-/*****************************************
- * H2C Msg format :
- *| 31 - 8		|7-5	| 4 - 0	|
- *| h2c_msg	|Class	|CMD_ID	|
- *| 31-0						|
- *| Ext msg					|
- *
- ******************************************/
-s32 FillH2CCmd8723B(struct adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer)
-{
-	u8 h2c_box_num;
-	u32 msgbox_addr;
-	u32 msgbox_ex_addr = 0;
-	struct hal_com_data *pHalData;
-	u32 h2c_cmd = 0;
-	u32 h2c_cmd_ex = 0;
-	s32 ret = _FAIL;
-
-	padapter = GET_PRIMARY_ADAPTER(padapter);
-	pHalData = GET_HAL_DATA(padapter);
-	if (mutex_lock_interruptible(&(adapter_to_dvobj(padapter)->h2c_fwcmd_mutex)))
-		return ret;
-
-	if (!pCmdBuffer)
-		goto exit;
-
-	if (CmdLen > RTL8723B_MAX_CMD_LEN)
-		goto exit;
-
-	if (padapter->bSurpriseRemoved)
-		goto exit;
-
-	/* pay attention to if  race condition happened in  H2C cmd setting. */
-	do {
-		h2c_box_num = pHalData->LastHMEBoxNum;
-
-		if (!_is_fw_read_cmd_down(padapter, h2c_box_num))
-			goto exit;
-
-		if (CmdLen <= 3) {
-			memcpy((u8 *)(&h2c_cmd) + 1, pCmdBuffer, CmdLen);
-		} else {
-			memcpy((u8 *)(&h2c_cmd) + 1, pCmdBuffer, 3);
-			memcpy((u8 *)(&h2c_cmd_ex), pCmdBuffer + 3, CmdLen - 3);
-		}
-
-		*(u8 *)(&h2c_cmd) |= ElementID;
-
-		if (CmdLen > 3) {
-			msgbox_ex_addr = REG_HMEBOX_EXT0_8723B + (h2c_box_num * RTL8723B_EX_MESSAGE_BOX_SIZE);
-			rtw_write32(padapter, msgbox_ex_addr, h2c_cmd_ex);
-		}
-		msgbox_addr = REG_HMEBOX_0 + (h2c_box_num * MESSAGE_BOX_SIZE);
-		rtw_write32(padapter, msgbox_addr, h2c_cmd);
-
-		pHalData->LastHMEBoxNum = (h2c_box_num + 1) % MAX_H2C_BOX_NUMS;
-
-	} while (0);
-
-	ret = _SUCCESS;
-
-exit:
-
-	mutex_unlock(&(adapter_to_dvobj(padapter)->h2c_fwcmd_mutex));
-	return ret;
-}
-
-static void ConstructBeacon(struct adapter *padapter, u8 *pframe, u32 *pLength)
-{
-	struct ieee80211_hdr *pwlanhdr;
-	__le16 *fctrl;
-	u32 rate_len, pktlen;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct wlan_bssid_ex *cur_network = &pmlmeinfo->network;
-
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	fctrl = &pwlanhdr->frame_control;
-	*(fctrl) = 0;
-
-	eth_broadcast_addr(pwlanhdr->addr1);
-	ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
-	ether_addr_copy(pwlanhdr->addr3, get_my_bssid(cur_network));
-
-	SetSeqNum(pwlanhdr, 0);
-	SetFrameSubType(pframe, WIFI_BEACON);
-
-	pframe += sizeof(struct ieee80211_hdr_3addr);
-	pktlen = sizeof(struct ieee80211_hdr_3addr);
-
-	/* timestamp will be inserted by hardware */
-	pframe += 8;
-	pktlen += 8;
-
-	/*  beacon interval: 2 bytes */
-	memcpy(pframe, (unsigned char *)(rtw_get_beacon_interval_from_ie(cur_network->ies)), 2);
-
-	pframe += 2;
-	pktlen += 2;
-
-	/*  capability info: 2 bytes */
-	memcpy(pframe, (unsigned char *)(rtw_get_capability_from_ie(cur_network->ies)), 2);
-
-	pframe += 2;
-	pktlen += 2;
-
-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) {
-		pktlen += cur_network->ie_length - sizeof(struct ndis_802_11_fix_ie);
-		memcpy(pframe, cur_network->ies + sizeof(struct ndis_802_11_fix_ie), pktlen);
-
-		goto _ConstructBeacon;
-	}
-
-	/* below for ad-hoc mode */
-
-	/*  SSID */
-	pframe = rtw_set_ie(pframe, WLAN_EID_SSID, cur_network->ssid.ssid_length, cur_network->ssid.ssid, &pktlen);
-
-	/*  supported rates... */
-	rate_len = rtw_get_rateset_len(cur_network->supported_rates);
-	pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, ((rate_len > 8) ? 8 : rate_len), cur_network->supported_rates, &pktlen);
-
-	/*  DS parameter set */
-	pframe = rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, (unsigned char *)&cur_network->configuration.ds_config, &pktlen);
-
-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) {
-		u32 ATIMWindow;
-		/*  IBSS Parameter Set... */
-		ATIMWindow = 0;
-		pframe = rtw_set_ie(pframe, WLAN_EID_IBSS_PARAMS, 2, (unsigned char *)(&ATIMWindow), &pktlen);
-	}
-
-	/* todo: ERP IE */
-
-	/*  EXTERNDED SUPPORTED RATE */
-	if (rate_len > 8)
-		pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (rate_len - 8), (cur_network->supported_rates + 8), &pktlen);
-
-	/* todo:HT for adhoc */
-
-_ConstructBeacon:
-
-	if ((pktlen + TXDESC_SIZE) > 512)
-		return;
-
-	*pLength = pktlen;
-
-}
-
-static void ConstructPSPoll(struct adapter *padapter, u8 *pframe, u32 *pLength)
-{
-	struct ieee80211_hdr *pwlanhdr;
-	__le16 *fctrl;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	/*  Frame control. */
-	fctrl = &pwlanhdr->frame_control;
-	*(fctrl) = 0;
-	SetPwrMgt(fctrl);
-	SetFrameSubType(pframe, WIFI_PSPOLL);
-
-	/*  AID. */
-	SetDuration(pframe, (pmlmeinfo->aid | 0xc000));
-
-	/*  BSSID. */
-	ether_addr_copy(pwlanhdr->addr1, get_my_bssid(&pmlmeinfo->network));
-
-	/*  TA. */
-	ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
-
-	*pLength = 16;
-}
-
-static void ConstructNullFunctionData(struct adapter *padapter,
-				      u8 *pframe,
-				      u32 *pLength,
-				      u8 *StaAddr,
-				      u8 bQoS,
-				      u8 AC,
-				      u8 bEosp,
-				      u8 bForcePowerSave)
-{
-	struct ieee80211_hdr *pwlanhdr;
-	__le16 *fctrl;
-	u32 pktlen;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct wlan_network *cur_network = &pmlmepriv->cur_network;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	fctrl = &pwlanhdr->frame_control;
-	*(fctrl) = 0;
-	if (bForcePowerSave)
-		SetPwrMgt(fctrl);
-
-	switch (cur_network->network.infrastructure_mode) {
-	case NL80211_IFTYPE_STATION:
-		SetToDs(fctrl);
-		ether_addr_copy(pwlanhdr->addr1, get_my_bssid(&(pmlmeinfo->network)));
-		ether_addr_copy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)));
-		ether_addr_copy(pwlanhdr->addr3, StaAddr);
-		break;
-	case NL80211_IFTYPE_AP:
-		SetFrDs(fctrl);
-		ether_addr_copy(pwlanhdr->addr1, StaAddr);
-		ether_addr_copy(pwlanhdr->addr2, get_my_bssid(&(pmlmeinfo->network)));
-		ether_addr_copy(pwlanhdr->addr3, myid(&(padapter->eeprompriv)));
-		break;
-	case NL80211_IFTYPE_ADHOC:
-	default:
-		ether_addr_copy(pwlanhdr->addr1, StaAddr);
-		ether_addr_copy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)));
-		ether_addr_copy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)));
-		break;
-	}
-
-	SetSeqNum(pwlanhdr, 0);
-
-	if (bQoS) {
-		struct ieee80211_qos_hdr *pwlanqoshdr;
-
-		SetFrameSubType(pframe, WIFI_QOS_DATA_NULL);
-
-		pwlanqoshdr = (struct ieee80211_qos_hdr *)pframe;
-		SetPriority(&pwlanqoshdr->qos_ctrl, AC);
-		SetEOSP(&pwlanqoshdr->qos_ctrl, bEosp);
-
-		pktlen = sizeof(struct ieee80211_qos_hdr);
-	} else {
-		SetFrameSubType(pframe, WIFI_DATA_NULL);
-
-		pktlen = sizeof(struct ieee80211_hdr_3addr);
-	}
-
-	*pLength = pktlen;
-}
-
-static void rtl8723b_set_FwRsvdPage_cmd(struct adapter *padapter, struct rsvdpage_loc *rsvdpageloc)
-{
-	u8 u1H2CRsvdPageParm[H2C_RSVDPAGE_LOC_LEN] = {0};
-
-	SET_8723B_H2CCMD_RSVDPAGE_LOC_PROBE_RSP(u1H2CRsvdPageParm, rsvdpageloc->LocProbeRsp);
-	SET_8723B_H2CCMD_RSVDPAGE_LOC_PSPOLL(u1H2CRsvdPageParm, rsvdpageloc->LocPsPoll);
-	SET_8723B_H2CCMD_RSVDPAGE_LOC_NULL_DATA(u1H2CRsvdPageParm, rsvdpageloc->LocNullData);
-	SET_8723B_H2CCMD_RSVDPAGE_LOC_QOS_NULL_DATA(u1H2CRsvdPageParm, rsvdpageloc->LocQosNull);
-	SET_8723B_H2CCMD_RSVDPAGE_LOC_BT_QOS_NULL_DATA(u1H2CRsvdPageParm, rsvdpageloc->LocBTQosNull);
-
-	FillH2CCmd8723B(padapter, H2C_8723B_RSVD_PAGE, H2C_RSVDPAGE_LOC_LEN, u1H2CRsvdPageParm);
-}
-
-void rtl8723b_set_FwMediaStatusRpt_cmd(struct adapter *padapter, u8 mstatus, u8 macid)
-{
-	u8 u1H2CMediaStatusRptParm[H2C_MEDIA_STATUS_RPT_LEN] = {0};
-	u8 macid_end = 0;
-
-	SET_8723B_H2CCMD_MSRRPT_PARM_OPMODE(u1H2CMediaStatusRptParm, mstatus);
-	SET_8723B_H2CCMD_MSRRPT_PARM_MACID_IND(u1H2CMediaStatusRptParm, 0);
-	SET_8723B_H2CCMD_MSRRPT_PARM_MACID(u1H2CMediaStatusRptParm, macid);
-	SET_8723B_H2CCMD_MSRRPT_PARM_MACID_END(u1H2CMediaStatusRptParm, macid_end);
-
-	FillH2CCmd8723B(padapter, H2C_8723B_MEDIA_STATUS_RPT, H2C_MEDIA_STATUS_RPT_LEN, u1H2CMediaStatusRptParm);
-}
-
-void rtl8723b_set_FwMacIdConfig_cmd(struct adapter *padapter, u8 mac_id, u8 raid, u8 bw, u8 sgi, u32 mask)
-{
-	u8 u1H2CMacIdConfigParm[H2C_MACID_CFG_LEN] = {0};
-
-	SET_8723B_H2CCMD_MACID_CFG_MACID(u1H2CMacIdConfigParm, mac_id);
-	SET_8723B_H2CCMD_MACID_CFG_RAID(u1H2CMacIdConfigParm, raid);
-	SET_8723B_H2CCMD_MACID_CFG_SGI_EN(u1H2CMacIdConfigParm, sgi ? 1 : 0);
-	SET_8723B_H2CCMD_MACID_CFG_BW(u1H2CMacIdConfigParm, bw);
-	SET_8723B_H2CCMD_MACID_CFG_RATE_MASK0(u1H2CMacIdConfigParm, (u8)(mask & 0x000000ff));
-	SET_8723B_H2CCMD_MACID_CFG_RATE_MASK1(u1H2CMacIdConfigParm, (u8)((mask & 0x0000ff00) >> 8));
-	SET_8723B_H2CCMD_MACID_CFG_RATE_MASK2(u1H2CMacIdConfigParm, (u8)((mask & 0x00ff0000) >> 16));
-	SET_8723B_H2CCMD_MACID_CFG_RATE_MASK3(u1H2CMacIdConfigParm, (u8)((mask & 0xff000000) >> 24));
-
-	FillH2CCmd8723B(padapter, H2C_8723B_MACID_CFG, H2C_MACID_CFG_LEN, u1H2CMacIdConfigParm);
-}
-
-void rtl8723b_set_rssi_cmd(struct adapter *padapter, u8 *param)
-{
-	u8 u1H2CRssiSettingParm[H2C_RSSI_SETTING_LEN] = {0};
-	u8 mac_id = *param;
-	u8 rssi = *(param + 2);
-	u8 uldl_state = 0;
-
-	SET_8723B_H2CCMD_RSSI_SETTING_MACID(u1H2CRssiSettingParm, mac_id);
-	SET_8723B_H2CCMD_RSSI_SETTING_RSSI(u1H2CRssiSettingParm, rssi);
-	SET_8723B_H2CCMD_RSSI_SETTING_ULDL_STATE(u1H2CRssiSettingParm, uldl_state);
-
-	FillH2CCmd8723B(padapter, H2C_8723B_RSSI_SETTING, H2C_RSSI_SETTING_LEN, u1H2CRssiSettingParm);
-}
-
-void rtl8723b_set_FwPwrMode_cmd(struct adapter *padapter, u8 psmode)
-{
-	int i;
-	struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	u8 u1H2CPwrModeParm[H2C_PWRMODE_LEN] = {0};
-	u8 PowerState = 0, awake_intvl = 1, byte5 = 0, rlbm = 0;
-
-	if (pwrpriv->dtim > 0 && pwrpriv->dtim < 16)
-		awake_intvl = pwrpriv->dtim + 1;
-	else
-		awake_intvl = 3;
-
-	rlbm = 2;
-
-	if (padapter->registrypriv.wifi_spec == 1) {
-		awake_intvl = 2;
-		rlbm = 2;
-	}
-
-	if (psmode > 0) {
-		if (hal_btcoex_IsBtControlLps(padapter)) {
-			PowerState = hal_btcoex_RpwmVal(padapter);
-			byte5 = hal_btcoex_LpsVal(padapter);
-
-			if ((rlbm == 2) && (byte5 & BIT(4))) {
-				/*  Keep awake interval to 1 to prevent from */
-				/*  decreasing coex performance */
-				awake_intvl = 2;
-				rlbm = 2;
-			}
-		} else {
-			PowerState = 0x00;/*  AllON(0x0C), RFON(0x04), RFOFF(0x00) */
-			byte5 = 0x40;
-		}
-	} else {
-		PowerState = 0x0C;/*  AllON(0x0C), RFON(0x04), RFOFF(0x00) */
-		byte5 = 0x40;
-	}
-
-	SET_8723B_H2CCMD_PWRMODE_PARM_MODE(u1H2CPwrModeParm, (psmode > 0) ? 1 : 0);
-	SET_8723B_H2CCMD_PWRMODE_PARM_SMART_PS(u1H2CPwrModeParm, pwrpriv->smart_ps);
-	SET_8723B_H2CCMD_PWRMODE_PARM_RLBM(u1H2CPwrModeParm, rlbm);
-	SET_8723B_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(u1H2CPwrModeParm, awake_intvl);
-	SET_8723B_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(u1H2CPwrModeParm, padapter->registrypriv.uapsd_enable);
-	SET_8723B_H2CCMD_PWRMODE_PARM_PWR_STATE(u1H2CPwrModeParm, PowerState);
-	SET_8723B_H2CCMD_PWRMODE_PARM_BYTE5(u1H2CPwrModeParm, byte5);
-	if (psmode != PS_MODE_ACTIVE) {
-		if (!pmlmeext->adaptive_tsf_done && pmlmeext->bcn_cnt > 0) {
-			u8 ratio_20_delay, ratio_80_delay;
-
-			/* byte 6 for adaptive_early_32k */
-			/* 0:3] = DrvBcnEarly  (ms) , [4:7] = DrvBcnTimeOut  (ms) */
-			/*  20% for DrvBcnEarly, 80% for DrvBcnTimeOut */
-			ratio_20_delay = 0;
-			ratio_80_delay = 0;
-			pmlmeext->DrvBcnEarly = 0xff;
-			pmlmeext->DrvBcnTimeOut = 0xff;
-
-			for (i = 0; i < 9; i++) {
-				pmlmeext->bcn_delay_ratio[i] = (pmlmeext->bcn_delay_cnt[i] * 100) / pmlmeext->bcn_cnt;
-
-				ratio_20_delay += pmlmeext->bcn_delay_ratio[i];
-				ratio_80_delay += pmlmeext->bcn_delay_ratio[i];
-
-				if (ratio_20_delay > 20 && pmlmeext->DrvBcnEarly == 0xff)
-					pmlmeext->DrvBcnEarly = i;
-
-				if (ratio_80_delay > 80 && pmlmeext->DrvBcnTimeOut == 0xff)
-					pmlmeext->DrvBcnTimeOut = i;
-
-				/* reset adaptive_early_32k cnt */
-				pmlmeext->bcn_delay_cnt[i] = 0;
-				pmlmeext->bcn_delay_ratio[i] = 0;
-
-			}
-
-			pmlmeext->bcn_cnt = 0;
-			pmlmeext->adaptive_tsf_done = true;
-
-		}
-
-	}
-
-	hal_btcoex_RecordPwrMode(padapter, u1H2CPwrModeParm, H2C_PWRMODE_LEN);
-
-	FillH2CCmd8723B(padapter, H2C_8723B_SET_PWR_MODE, H2C_PWRMODE_LEN, u1H2CPwrModeParm);
-}
-
-void rtl8723b_set_FwPsTuneParam_cmd(struct adapter *padapter)
-{
-	u8 u1H2CPsTuneParm[H2C_PSTUNEPARAM_LEN] = {0};
-	u8 bcn_to_limit = 10; /* 10 * 100 * awakeinterval (ms) */
-	u8 dtim_timeout = 5; /* ms wait broadcast data timer */
-	u8 ps_timeout = 20;  /* ms Keep awake when tx */
-	u8 dtim_period = 3;
-
-	SET_8723B_H2CCMD_PSTUNE_PARM_BCN_TO_LIMIT(u1H2CPsTuneParm, bcn_to_limit);
-	SET_8723B_H2CCMD_PSTUNE_PARM_DTIM_TIMEOUT(u1H2CPsTuneParm, dtim_timeout);
-	SET_8723B_H2CCMD_PSTUNE_PARM_PS_TIMEOUT(u1H2CPsTuneParm, ps_timeout);
-	SET_8723B_H2CCMD_PSTUNE_PARM_ADOPT(u1H2CPsTuneParm, 1);
-	SET_8723B_H2CCMD_PSTUNE_PARM_DTIM_PERIOD(u1H2CPsTuneParm, dtim_period);
-
-	FillH2CCmd8723B(padapter, H2C_8723B_PS_TUNING_PARA, H2C_PSTUNEPARAM_LEN, u1H2CPsTuneParm);
-}
-
-void rtl8723b_set_FwPwrModeInIPS_cmd(struct adapter *padapter, u8 cmd_param)
-{
-
-	FillH2CCmd8723B(padapter, H2C_8723B_FWLPS_IN_IPS_, 1, &cmd_param);
-}
-
-/*
- * Description: Fill the reserved packets that FW will use to RSVD page.
- * Now we just send 4 types packet to rsvd page.
- * (1)Beacon, (2)Ps-poll, (3)Null data, (4)ProbeRsp.
- *
- * Input:
- *
- * bDLFinished - false: At the first time we will send all the packets as
- * a large packet to Hw, so we need to set the packet length to total length.
- *
- * true: At the second time, we should send the first packet (default:beacon)
- * to Hw again and set the length in descriptor to the real beacon length.
- */
-/* 2009.10.15 by tynli. */
-static void rtl8723b_set_FwRsvdPagePkt(struct adapter *padapter, bool bDLFinished)
-{
-	struct xmit_frame *pcmdframe;
-	struct pkt_attrib *pattrib;
-	struct xmit_priv *pxmitpriv;
-	struct mlme_ext_priv *pmlmeext;
-	struct mlme_ext_info *pmlmeinfo;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	u32 BeaconLength = 0, PSPollLength = 0;
-	u32 NullDataLength = 0, QosNullLength = 0, BTQosNullLength = 0;
-	u8 *ReservedPagePacket;
-	u8 TxDescLen = TXDESC_SIZE, TxDescOffset = TXDESC_OFFSET;
-	u8 TotalPageNum = 0, CurtPktPageNum = 0, RsvdPageNum = 0;
-	u16 BufIndex, PageSize = 128;
-	u32 TotalPacketLen, MaxRsvdPageBufSize = 0;
-
-	struct rsvdpage_loc RsvdPageLoc;
-
-	pxmitpriv = &padapter->xmitpriv;
-	pmlmeext = &padapter->mlmeextpriv;
-	pmlmeinfo = &pmlmeext->mlmext_info;
-
-	RsvdPageNum = BCNQ_PAGE_NUM_8723B + WOWLAN_PAGE_NUM_8723B;
-	MaxRsvdPageBufSize = RsvdPageNum * PageSize;
-
-	pcmdframe = rtw_alloc_cmdxmitframe(pxmitpriv);
-	if (!pcmdframe)
-		return;
-
-	ReservedPagePacket = pcmdframe->buf_addr;
-	memset(&RsvdPageLoc, 0, sizeof(struct rsvdpage_loc));
-
-	/* 3 (1) beacon */
-	BufIndex = TxDescOffset;
-	ConstructBeacon(padapter, &ReservedPagePacket[BufIndex], &BeaconLength);
-
-	/*  When we count the first page size, we need to reserve description size for the RSVD */
-	/*  packet, it will be filled in front of the packet in TXPKTBUF. */
-	CurtPktPageNum = (u8)PageNum_128(TxDescLen + BeaconLength);
-	/* If we don't add 1 more page, the WOWLAN function has a problem. Baron thinks it's a bug of firmware */
-	if (CurtPktPageNum == 1)
-		CurtPktPageNum += 1;
-
-	TotalPageNum += CurtPktPageNum;
-
-	BufIndex += (CurtPktPageNum * PageSize);
-
-	/* 3 (2) ps-poll */
-	RsvdPageLoc.LocPsPoll = TotalPageNum;
-	ConstructPSPoll(padapter, &ReservedPagePacket[BufIndex], &PSPollLength);
-	rtl8723b_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex - TxDescLen], PSPollLength, true, false, false);
-
-	CurtPktPageNum = (u8)PageNum_128(TxDescLen + PSPollLength);
-
-	TotalPageNum += CurtPktPageNum;
-
-	BufIndex += (CurtPktPageNum * PageSize);
-
-	/* 3 (3) null data */
-	RsvdPageLoc.LocNullData = TotalPageNum;
-	ConstructNullFunctionData(padapter,
-				  &ReservedPagePacket[BufIndex],
-				  &NullDataLength,
-				  get_my_bssid(&pmlmeinfo->network),
-				  false, 0, 0, false);
-
-	rtl8723b_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex - TxDescLen], NullDataLength, false, false, false);
-
-	CurtPktPageNum = (u8)PageNum_128(TxDescLen + NullDataLength);
-
-	TotalPageNum += CurtPktPageNum;
-
-	BufIndex += (CurtPktPageNum * PageSize);
-
-	/* 3 (5) Qos null data */
-	RsvdPageLoc.LocQosNull = TotalPageNum;
-	ConstructNullFunctionData(padapter,
-				  &ReservedPagePacket[BufIndex],
-				  &QosNullLength,
-				  get_my_bssid(&pmlmeinfo->network),
-				  true, 0, 0, false);
-
-	rtl8723b_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex - TxDescLen], QosNullLength, false, false, false);
-
-	CurtPktPageNum = (u8)PageNum_128(TxDescLen + QosNullLength);
-
-	TotalPageNum += CurtPktPageNum;
-
-	BufIndex += (CurtPktPageNum * PageSize);
-
-	/* 3 (6) BT Qos null data */
-	RsvdPageLoc.LocBTQosNull = TotalPageNum;
-	ConstructNullFunctionData(padapter,
-				  &ReservedPagePacket[BufIndex],
-				  &BTQosNullLength,
-				  get_my_bssid(&pmlmeinfo->network),
-				  true, 0, 0, false);
-
-	rtl8723b_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex - TxDescLen], BTQosNullLength, false, true, false);
-
-	CurtPktPageNum = (u8)PageNum_128(TxDescLen + BTQosNullLength);
-
-	TotalPageNum += CurtPktPageNum;
-
-	BufIndex += (CurtPktPageNum * PageSize);
-
-	TotalPacketLen = BufIndex + BTQosNullLength;
-
-	if (TotalPacketLen > MaxRsvdPageBufSize) {
-		goto error;
-	} else {
-		/*  update attribute */
-		pattrib = &pcmdframe->attrib;
-		update_mgntframe_attrib(padapter, pattrib);
-		pattrib->qsel = 0x10;
-		pattrib->pktlen = pattrib->last_txcmdsz = TotalPacketLen - TxDescOffset;
-		dump_mgntframe_and_wait(padapter, pcmdframe, 100);
-	}
-
-	if (check_fwstate(pmlmepriv, _FW_LINKED))
-		rtl8723b_set_FwRsvdPage_cmd(padapter, &RsvdPageLoc);
-
-	return;
-
-error:
-
-	rtw_free_xmitframe(pxmitpriv, pcmdframe);
-}
-
-void rtl8723b_download_rsvd_page(struct adapter *padapter, u8 mstatus)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	bool bcn_valid = false;
-	u8 DLBcnCount = 0;
-	u32 poll = 0;
-	u8 val8;
-
-	if (mstatus == RT_MEDIA_CONNECT) {
-		bool bRecover = false;
-		u8 v8;
-
-		/*  We should set AID, correct TSF, HW seq enable before set JoinBssReport to Fw in 88/92C. */
-		/*  Suggested by filen. Added by tynli. */
-		rtw_write16(padapter, REG_BCN_PSR_RPT, (0xC000 | pmlmeinfo->aid));
-
-		/*  set REG_CR bit 8 */
-		v8 = rtw_read8(padapter, REG_CR + 1);
-		v8 |= BIT(0); /*  ENSWBCN */
-		rtw_write8(padapter, REG_CR + 1, v8);
-
-		/*  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. */
-		val8 = rtw_read8(padapter, REG_BCN_CTRL);
-		val8 &= ~EN_BCN_FUNCTION;
-		val8 |= DIS_TSF_UDT;
-		rtw_write8(padapter, REG_BCN_CTRL, val8);
-
-		/*  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;
-
-		/*  To tell Hw the packet is not a real beacon frame. */
-		rtw_write8(padapter, REG_FWHW_TXQ_CTRL + 2, pHalData->RegFwHwTxQCtrl & ~BIT(6));
-		pHalData->RegFwHwTxQCtrl &= ~BIT(6);
-
-		/*  Clear beacon valid check bit. */
-		rtw_hal_set_hwreg(padapter, HW_VAR_BCN_VALID, NULL);
-		rtw_hal_set_hwreg(padapter, HW_VAR_DL_BCN_SEL, NULL);
-
-		DLBcnCount = 0;
-		poll = 0;
-		do {
-			/*  download rsvd page. */
-			rtl8723b_set_FwRsvdPagePkt(padapter, 0);
-			DLBcnCount++;
-			do {
-				yield();
-				/* mdelay(10); */
-				/*  check rsvd page download OK. */
-				rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, (u8 *)(&bcn_valid));
-				poll++;
-			} while (!bcn_valid && (poll % 10) != 0 && !padapter->bSurpriseRemoved &&
-				 !padapter->driver_stopped);
-
-		} while (!bcn_valid && DLBcnCount <= 100 && !padapter->bSurpriseRemoved &&
-			 !padapter->driver_stopped);
-
-		if (padapter->bSurpriseRemoved || padapter->driver_stopped) {
-		} else {
-			struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter);
-
-			pwrctl->fw_psmode_iface_id = padapter->iface_id;
-		}
-
-		/*  2010.05.11. Added by tynli. */
-		val8 = rtw_read8(padapter, REG_BCN_CTRL);
-		val8 |= EN_BCN_FUNCTION;
-		val8 &= ~DIS_TSF_UDT;
-		rtw_write8(padapter, REG_BCN_CTRL, val8);
-
-		/*  To make sure that if there exists an adapter which would like to send beacon. */
-		/*  If exists, the original 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. */
-		if (bRecover) {
-			rtw_write8(padapter, REG_FWHW_TXQ_CTRL + 2, pHalData->RegFwHwTxQCtrl | BIT(6));
-			pHalData->RegFwHwTxQCtrl |= BIT(6);
-		}
-
-		/*  Clear CR[8] or beacon packet will not be send to TxBuf anymore. */
-		v8 = rtw_read8(padapter, REG_CR + 1);
-		v8 &= ~BIT(0); /*  ~ENSWBCN */
-		rtw_write8(padapter, REG_CR + 1, v8);
-	}
-}
-
-void rtl8723b_set_FwJoinBssRpt_cmd(struct adapter *padapter, u8 mstatus)
-{
-	if (mstatus == 1)
-		rtl8723b_download_rsvd_page(padapter, RT_MEDIA_CONNECT);
-}
-
-/* arg[0] = macid */
-/* arg[1] = raid */
-/* arg[2] = shortGIrate */
-/* arg[3] = init_rate */
-void rtl8723b_Add_RateATid(struct adapter *padapter, u32 bitmap, u8 *arg, u8 rssi_level)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	struct sta_info *psta;
-	u8 mac_id = arg[0];
-	u8 raid = arg[1];
-	u8 shortGI = arg[2];
-	u8 bw;
-	u32 mask = bitmap & 0x0FFFFFFF;
-
-	psta = pmlmeinfo->FW_sta_info[mac_id].psta;
-	if (!psta)
-		return;
-
-	bw = psta->bw_mode;
-
-	if (rssi_level != DM_RATR_STA_INIT)
-		mask = ODM_Get_Rate_Bitmap(&pHalData->odmpriv, mac_id, mask, rssi_level);
-
-	rtl8723b_set_FwMacIdConfig_cmd(padapter, mac_id, raid, bw, shortGI, mask);
-}
-
-static void ConstructBtNullFunctionData(struct adapter *padapter,
-					u8 *pframe,
-					u32 *pLength,
-					u8 *StaAddr,
-					u8 bQoS,
-					u8 AC,
-					u8 bEosp,
-					u8 bForcePowerSave)
-{
-	struct ieee80211_hdr *pwlanhdr;
-	__le16 *fctrl;
-	u32 pktlen;
-	u8 bssid[ETH_ALEN];
-
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-
-	if (!StaAddr) {
-		memcpy(bssid, myid(&padapter->eeprompriv), ETH_ALEN);
-		StaAddr = bssid;
-	}
-
-	fctrl = &pwlanhdr->frame_control;
-	*fctrl = 0;
-	if (bForcePowerSave)
-		SetPwrMgt(fctrl);
-
-	SetFrDs(fctrl);
-	ether_addr_copy(pwlanhdr->addr1, StaAddr);
-	ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
-	ether_addr_copy(pwlanhdr->addr3, myid(&padapter->eeprompriv));
-
-	SetDuration(pwlanhdr, 0);
-	SetSeqNum(pwlanhdr, 0);
-
-	if (bQoS) {
-		struct ieee80211_qos_hdr *pwlanqoshdr;
-
-		SetFrameSubType(pframe, WIFI_QOS_DATA_NULL);
-
-		pwlanqoshdr = (struct ieee80211_qos_hdr *)pframe;
-		SetPriority(&pwlanqoshdr->qos_ctrl, AC);
-		SetEOSP(&pwlanqoshdr->qos_ctrl, bEosp);
-
-		pktlen = sizeof(struct ieee80211_qos_hdr);
-	} else {
-		SetFrameSubType(pframe, WIFI_DATA_NULL);
-
-		pktlen = sizeof(struct ieee80211_hdr_3addr);
-	}
-
-	*pLength = pktlen;
-}
-
-static void SetFwRsvdPagePkt_BTCoex(struct adapter *padapter)
-{
-	struct xmit_frame *pcmdframe;
-	struct pkt_attrib *pattrib;
-	struct xmit_priv *pxmitpriv;
-	u32 BeaconLength = 0;
-	u32 BTQosNullLength = 0;
-	u8 *ReservedPagePacket;
-	u8 TxDescLen, TxDescOffset;
-	u8 TotalPageNum = 0, CurtPktPageNum = 0, RsvdPageNum = 0;
-	u16 BufIndex, PageSize;
-	u32 TotalPacketLen, MaxRsvdPageBufSize = 0;
-	struct rsvdpage_loc RsvdPageLoc;
-
-	pxmitpriv = &padapter->xmitpriv;
-	TxDescLen = TXDESC_SIZE;
-	TxDescOffset = TXDESC_OFFSET;
-	PageSize = PAGE_SIZE_TX_8723B;
-
-	RsvdPageNum = BCNQ_PAGE_NUM_8723B;
-	MaxRsvdPageBufSize = RsvdPageNum * PageSize;
-
-	pcmdframe = rtw_alloc_cmdxmitframe(pxmitpriv);
-	if (!pcmdframe)
-		return;
-
-	ReservedPagePacket = pcmdframe->buf_addr;
-	memset(&RsvdPageLoc, 0, sizeof(struct rsvdpage_loc));
-
-	/* 3 (1) beacon */
-	BufIndex = TxDescOffset;
-	ConstructBeacon(padapter, &ReservedPagePacket[BufIndex], &BeaconLength);
-
-	/*  When we count the first page size, we need to reserve description size for the RSVD */
-	/*  packet, it will be filled in front of the packet in TXPKTBUF. */
-	CurtPktPageNum = (u8)PageNum_128(TxDescLen + BeaconLength);
-	/* If we don't add 1 more page, the WOWLAN function has a problem. Baron thinks it's a bug of firmware */
-	if (CurtPktPageNum == 1)
-		CurtPktPageNum += 1;
-	TotalPageNum += CurtPktPageNum;
-
-	BufIndex += (CurtPktPageNum * PageSize);
-
-	/*  Jump to lastest page */
-	if (BufIndex < (MaxRsvdPageBufSize - PageSize)) {
-		BufIndex = TxDescOffset + (MaxRsvdPageBufSize - PageSize);
-		TotalPageNum = BCNQ_PAGE_NUM_8723B - 1;
-	}
-
-	/* 3 (6) BT Qos null data */
-	RsvdPageLoc.LocBTQosNull = TotalPageNum;
-	ConstructBtNullFunctionData(padapter,
-				    &ReservedPagePacket[BufIndex],
-				    &BTQosNullLength,
-				    NULL,
-				    true, 0, 0, false);
-
-	rtl8723b_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex - TxDescLen], BTQosNullLength, false, true, false);
-
-	CurtPktPageNum = (u8)PageNum_128(TxDescLen + BTQosNullLength);
-
-	TotalPageNum += CurtPktPageNum;
-
-	TotalPacketLen = BufIndex + BTQosNullLength;
-	if (TotalPacketLen > MaxRsvdPageBufSize)
-		goto error;
-
-	/*  update attribute */
-	pattrib = &pcmdframe->attrib;
-	update_mgntframe_attrib(padapter, pattrib);
-	pattrib->qsel = 0x10;
-	pattrib->pktlen = pattrib->last_txcmdsz = TotalPacketLen - TxDescOffset;
-	dump_mgntframe_and_wait(padapter, pcmdframe, 100);
-
-	rtl8723b_set_FwRsvdPage_cmd(padapter, &RsvdPageLoc);
-
-	return;
-
-error:
-	rtw_free_xmitframe(pxmitpriv, pcmdframe);
-}
-
-void rtl8723b_download_BTCoex_AP_mode_rsvd_page(struct adapter *padapter)
-{
-	struct hal_com_data *pHalData;
-	struct mlme_ext_priv *pmlmeext;
-	struct mlme_ext_info *pmlmeinfo;
-	u8 bRecover = false;
-	u8 bcn_valid = false;
-	u8 DLBcnCount = 0;
-	u32 poll = 0;
-	u8 val8;
-
-	pHalData = GET_HAL_DATA(padapter);
-	pmlmeext = &padapter->mlmeextpriv;
-	pmlmeinfo = &pmlmeext->mlmext_info;
-
-	/*  We should set AID, correct TSF, HW seq enable before set JoinBssReport to Fw in 88/92C. */
-	/*  Suggested by filen. Added by tynli. */
-	rtw_write16(padapter, REG_BCN_PSR_RPT, (0xC000 | pmlmeinfo->aid));
-
-	/*  set REG_CR bit 8 */
-	val8 = rtw_read8(padapter, REG_CR + 1);
-	val8 |= BIT(0); /*  ENSWBCN */
-	rtw_write8(padapter,  REG_CR + 1, val8);
-
-	/*  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. */
-	val8 = rtw_read8(padapter, REG_BCN_CTRL);
-	val8 &= ~EN_BCN_FUNCTION;
-	val8 |= DIS_TSF_UDT;
-	rtw_write8(padapter, REG_BCN_CTRL, val8);
-
-	/*  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;
-
-	/*  To tell Hw the packet is not a real beacon frame. */
-	pHalData->RegFwHwTxQCtrl &= ~BIT(6);
-	rtw_write8(padapter, REG_FWHW_TXQ_CTRL + 2, pHalData->RegFwHwTxQCtrl);
-
-	/*  Clear beacon valid check bit. */
-	rtw_hal_set_hwreg(padapter, HW_VAR_BCN_VALID, NULL);
-	rtw_hal_set_hwreg(padapter, HW_VAR_DL_BCN_SEL, NULL);
-
-	DLBcnCount = 0;
-	poll = 0;
-	do {
-		SetFwRsvdPagePkt_BTCoex(padapter);
-		DLBcnCount++;
-		do {
-			yield();
-/* 			mdelay(10); */
-			/*  check rsvd page download OK. */
-			rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, &bcn_valid);
-			poll++;
-		} while (!bcn_valid && (poll % 10) != 0 && !padapter->bSurpriseRemoved &&
-			 !padapter->driver_stopped);
-	} while (!bcn_valid && (DLBcnCount <= 100) && !padapter->bSurpriseRemoved &&
-		 !padapter->driver_stopped);
-
-	if (bcn_valid) {
-		struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter);
-
-		pwrctl->fw_psmode_iface_id = padapter->iface_id;
-	}
-
-	/*  2010.05.11. Added by tynli. */
-	val8 = rtw_read8(padapter, REG_BCN_CTRL);
-	val8 |= EN_BCN_FUNCTION;
-	val8 &= ~DIS_TSF_UDT;
-	rtw_write8(padapter, REG_BCN_CTRL, val8);
-
-	/*  To make sure that if there exists an adapter which would like to send beacon. */
-	/*  If exists, the original 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. */
-	if (bRecover) {
-		pHalData->RegFwHwTxQCtrl |= BIT(6);
-		rtw_write8(padapter, REG_FWHW_TXQ_CTRL + 2, pHalData->RegFwHwTxQCtrl);
-	}
-
-	/*  Clear CR[8] or beacon packet will not be send to TxBuf anymore. */
-	val8 = rtw_read8(padapter, REG_CR + 1);
-	val8 &= ~BIT(0); /*  ~ENSWBCN */
-	rtw_write8(padapter, REG_CR + 1, val8);
-}
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_dm.c b/drivers/staging/rtl8723bs/hal/rtl8723b_dm.c
deleted file mode 100644
index 13efbfa5b58a..000000000000
--- a/drivers/staging/rtl8723bs/hal/rtl8723b_dm.c
+++ /dev/null
@@ -1,256 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-/*  Description: */
-/*  This file is for 92CE/92CU dynamic mechanism only */
-
-#include <drv_types.h>
-#include <rtl8723b_hal.h>
-
-/*  Global var */
-
-/*  */
-/*  functions */
-/*  */
-static void Init_ODM_ComInfo_8723b(struct adapter *Adapter)
-{
-
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-	struct dm_priv *pdmpriv = &pHalData->dmpriv;
-	u8 cut_ver, fab_ver;
-
-	/*  */
-	/*  Init Value */
-	/*  */
-	memset(pDM_Odm, 0, sizeof(*pDM_Odm));
-
-	pDM_Odm->Adapter = Adapter;
-#define ODM_CE 0x04
-	ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_PLATFORM, ODM_CE);
-	ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_INTERFACE, RTW_SDIO);
-	ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_PACKAGE_TYPE, pHalData->PackageType);
-	ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_IC_TYPE, ODM_RTL8723B);
-
-	fab_ver = ODM_TSMC;
-	cut_ver = ODM_CUT_A;
-
-	ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_FAB_VER, fab_ver);
-	ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_CUT_VER, cut_ver);
-
-	ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_PATCH_ID, pHalData->CustomerID);
-	/* ODM_CMNINFO_BINHCT_TEST only for MP Team */
-	ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_BWIFI_TEST, Adapter->registrypriv.wifi_spec);
-
-	pdmpriv->InitODMFlag = ODM_RF_CALIBRATION|ODM_RF_TX_PWR_TRACK;
-
-	ODM_CmnInfoUpdate(pDM_Odm, ODM_CMNINFO_ABILITY, pdmpriv->InitODMFlag);
-}
-
-static void Update_ODM_ComInfo_8723b(struct adapter *Adapter)
-{
-	struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv;
-	struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
-	struct dvobj_priv *dvobj = adapter_to_dvobj(Adapter);
-	struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(Adapter);
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-	struct dm_priv *pdmpriv = &pHalData->dmpriv;
-	int i;
-	u8 zero = 0;
-
-	pdmpriv->InitODMFlag = 0
-		| ODM_BB_DIG
-		| ODM_BB_RA_MASK
-		| ODM_BB_DYNAMIC_TXPWR
-		| ODM_BB_FA_CNT
-		| ODM_BB_RSSI_MONITOR
-		| ODM_BB_CCK_PD
-		| ODM_BB_PWR_SAVE
-		| ODM_BB_CFO_TRACKING
-		| ODM_MAC_EDCA_TURBO
-		| ODM_RF_TX_PWR_TRACK
-		| ODM_RF_CALIBRATION
-		;
-
-	/*  */
-	/*  Pointer reference */
-	/*  */
-	/* ODM_CMNINFO_MAC_PHY_MODE pHalData->MacPhyMode92D */
-	/* ODM_CmnInfoHook(pDM_Odm, ODM_CMNINFO_MAC_PHY_MODE,&(pDM_Odm->u8_temp)); */
-
-	ODM_CmnInfoUpdate(pDM_Odm, ODM_CMNINFO_ABILITY, pdmpriv->InitODMFlag);
-
-	ODM_CmnInfoHook(pDM_Odm, ODM_CMNINFO_TX_UNI, &(dvobj->traffic_stat.tx_bytes));
-	ODM_CmnInfoHook(pDM_Odm, ODM_CMNINFO_RX_UNI, &(dvobj->traffic_stat.rx_bytes));
-	ODM_CmnInfoHook(pDM_Odm, ODM_CMNINFO_WM_MODE, &(pmlmeext->cur_wireless_mode));
-	ODM_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_CHNL_OFFSET, &(pHalData->nCur40MhzPrimeSC));
-	ODM_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_MODE, &(Adapter->securitypriv.dot11_privacy_algrthm));
-	ODM_CmnInfoHook(pDM_Odm, ODM_CMNINFO_BW, &(pHalData->CurrentChannelBW));
-	ODM_CmnInfoHook(pDM_Odm, ODM_CMNINFO_CHNL, &(pHalData->CurrentChannel));
-	ODM_CmnInfoHook(pDM_Odm, ODM_CMNINFO_NET_CLOSED, &(Adapter->net_closed));
-	ODM_CmnInfoHook(pDM_Odm, ODM_CMNINFO_MP_MODE, &zero);
-	ODM_CmnInfoHook(pDM_Odm, ODM_CMNINFO_FORCED_IGI_LB, &(pHalData->u1ForcedIgiLb));
-
-	ODM_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SCAN, &(pmlmepriv->bScanInProcess));
-	ODM_CmnInfoHook(pDM_Odm, ODM_CMNINFO_POWER_SAVING, &(pwrctrlpriv->bpower_saving));
-
-	for (i = 0; i < NUM_STA; i++)
-		ODM_CmnInfoPtrArrayHook(pDM_Odm, ODM_CMNINFO_STA_STATUS, i, NULL);
-}
-
-void rtl8723b_InitHalDm(struct adapter *Adapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-	struct dm_priv *pdmpriv = &pHalData->dmpriv;
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-
-	pdmpriv->DM_Type = DM_Type_ByDriver;
-	pdmpriv->DMFlag = DYNAMIC_FUNC_DISABLE;
-
-	pdmpriv->DMFlag |= DYNAMIC_FUNC_BT;
-
-	pdmpriv->InitDMFlag = pdmpriv->DMFlag;
-
-	Update_ODM_ComInfo_8723b(Adapter);
-
-	ODM_DMInit(pDM_Odm);
-}
-
-void rtl8723b_HalDmWatchDog(struct adapter *Adapter)
-{
-	bool fw_current_in_ps_mode = false;
-	bool bFwPSAwake = true;
-	u8 hw_init_completed = false;
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	hw_init_completed = Adapter->hw_init_completed;
-
-	if (!hw_init_completed)
-		goto skip_dm;
-
-	fw_current_in_ps_mode = adapter_to_pwrctl(Adapter)->fw_current_in_ps_mode;
-	rtw_hal_get_hwreg(Adapter, HW_VAR_FWLPS_RF_ON, (u8 *)(&bFwPSAwake));
-
-	if (hw_init_completed &&
-	    (!fw_current_in_ps_mode && bFwPSAwake)) {
-		rtw_hal_check_rxfifo_full(Adapter);
-	}
-
-	/* ODM */
-	if (hw_init_completed) {
-		u8 bLinked = false;
-		u8 bsta_state = false;
-		bool bBtDisabled = true;
-
-		if (rtw_linked_check(Adapter)) {
-			bLinked = true;
-			if (check_fwstate(&Adapter->mlmepriv, WIFI_STATION_STATE))
-				bsta_state = true;
-		}
-
-		ODM_CmnInfoUpdate(&pHalData->odmpriv, ODM_CMNINFO_LINK, bLinked);
-		ODM_CmnInfoUpdate(&pHalData->odmpriv, ODM_CMNINFO_STATION_STATE, bsta_state);
-
-		/* ODM_CmnInfoUpdate(&pHalData->odmpriv , ODM_CMNINFO_RSSI_MIN, pdmpriv->MinUndecoratedPWDBForDM); */
-
-		bBtDisabled = hal_btcoex_IsBtDisabled(Adapter);
-
-		ODM_CmnInfoUpdate(&pHalData->odmpriv, ODM_CMNINFO_BT_ENABLED,
-				  !bBtDisabled);
-
-		ODM_DMWatchdog(&pHalData->odmpriv);
-	}
-
-skip_dm:
-	return;
-}
-
-void rtl8723b_hal_dm_in_lps(struct adapter *padapter)
-{
-	u32 PWDB_rssi = 0;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct sta_info *psta = NULL;
-
-	/* update IGI */
-	ODM_Write_DIG(pDM_Odm, pDM_Odm->RSSI_Min);
-
-	/* set rssi to fw */
-	psta = rtw_get_stainfo(pstapriv, get_bssid(pmlmepriv));
-	if (psta && (psta->rssi_stat.UndecoratedSmoothedPWDB > 0)) {
-		PWDB_rssi = (psta->mac_id | (psta->rssi_stat.UndecoratedSmoothedPWDB<<16));
-
-		rtl8723b_set_rssi_cmd(padapter, (u8 *)&PWDB_rssi);
-	}
-
-}
-
-void rtl8723b_HalDmWatchDog_in_LPS(struct adapter *Adapter)
-{
-	u8 bLinked = false;
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-	struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
-	struct dm_priv *pdmpriv = &pHalData->dmpriv;
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-	struct dig_t *pDM_DigTable = &pDM_Odm->DM_DigTable;
-	struct sta_priv *pstapriv = &Adapter->stapriv;
-	struct sta_info *psta = NULL;
-
-	if (!Adapter->hw_init_completed)
-		goto skip_lps_dm;
-
-	if (rtw_linked_check(Adapter))
-		bLinked = true;
-
-	ODM_CmnInfoUpdate(&pHalData->odmpriv, ODM_CMNINFO_LINK, bLinked);
-
-	if (!bLinked)
-		goto skip_lps_dm;
-
-	if (!(pDM_Odm->SupportAbility & ODM_BB_RSSI_MONITOR))
-		goto skip_lps_dm;
-
-	/* ODM_DMWatchdog(&pHalData->odmpriv); */
-	/* Do DIG by RSSI In LPS-32K */
-
-      /* 1 Find MIN-RSSI */
-	psta = rtw_get_stainfo(pstapriv, get_bssid(pmlmepriv));
-	if (!psta)
-		goto skip_lps_dm;
-
-	pdmpriv->EntryMinUndecoratedSmoothedPWDB = psta->rssi_stat.UndecoratedSmoothedPWDB;
-
-	if (pdmpriv->EntryMinUndecoratedSmoothedPWDB <= 0)
-		goto skip_lps_dm;
-
-	pdmpriv->MinUndecoratedPWDBForDM = pdmpriv->EntryMinUndecoratedSmoothedPWDB;
-
-	pDM_Odm->RSSI_Min = pdmpriv->MinUndecoratedPWDBForDM;
-
-	/* if (pDM_DigTable->CurIGValue != pDM_Odm->RSSI_Min) */
-	if (
-		(pDM_DigTable->CurIGValue > pDM_Odm->RSSI_Min + 5) ||
-		(pDM_DigTable->CurIGValue < pDM_Odm->RSSI_Min - 5)
-	)
-		rtw_dm_in_lps_wk_cmd(Adapter);
-
-skip_lps_dm:
-
-	return;
-
-}
-
-void rtl8723b_init_dm_priv(struct adapter *Adapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-	struct dm_priv *pdmpriv = &pHalData->dmpriv;
-
-	memset(pdmpriv, 0, sizeof(struct dm_priv));
-	Init_ODM_ComInfo_8723b(Adapter);
-}
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c b/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c
deleted file mode 100644
index 6a4a13544ca1..000000000000
--- a/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c
+++ /dev/null
@@ -1,2826 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2013 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <linux/firmware.h>
-#include <linux/slab.h>
-#include <drv_types.h>
-#include <rtl8723b_hal.h>
-#include "hal_com_h2c.h"
-
-static void _FWDownloadEnable(struct adapter *padapter, bool enable)
-{
-	u8 tmp, count = 0;
-
-	if (enable) {
-		/*  8051 enable */
-		tmp = rtw_read8(padapter, REG_SYS_FUNC_EN + 1);
-		rtw_write8(padapter, REG_SYS_FUNC_EN + 1, tmp | 0x04);
-
-		tmp = rtw_read8(padapter, REG_MCUFWDL);
-		rtw_write8(padapter, REG_MCUFWDL, tmp|0x01);
-
-		do {
-			tmp = rtw_read8(padapter, REG_MCUFWDL);
-			if (tmp & 0x01)
-				break;
-			rtw_write8(padapter, REG_MCUFWDL, tmp|0x01);
-			msleep(1);
-		} while (count++ < 100);
-
-		/*  8051 reset */
-		tmp = rtw_read8(padapter, REG_MCUFWDL+2);
-		rtw_write8(padapter, REG_MCUFWDL+2, tmp&0xf7);
-	} else {
-		/*  MCU firmware download disable. */
-		tmp = rtw_read8(padapter, REG_MCUFWDL);
-		rtw_write8(padapter, REG_MCUFWDL, tmp&0xfe);
-	}
-}
-
-static int _BlockWrite(struct adapter *padapter, void *buffer, u32 buffSize)
-{
-	int ret = _SUCCESS;
-
-	u32 blockSize_p1 = 4; /*  (Default) Phase #1 : PCI muse use 4-byte write to download FW */
-	u32 blockSize_p2 = 8; /*  Phase #2 : Use 8-byte, if Phase#1 use big size to write FW. */
-	u32 blockSize_p3 = 1; /*  Phase #3 : Use 1-byte, the remnant of FW image. */
-	u32 blockCount_p1 = 0, blockCount_p2 = 0, blockCount_p3 = 0;
-	u32 remainSize_p1 = 0, remainSize_p2 = 0;
-	u8 *bufferPtr = buffer;
-	u32 i = 0, offset = 0;
-
-	/* 3 Phase #1 */
-	blockCount_p1 = buffSize / blockSize_p1;
-	remainSize_p1 = buffSize % blockSize_p1;
-
-	for (i = 0; i < blockCount_p1; i++) {
-		ret = rtw_write32(padapter, (FW_8723B_START_ADDRESS + i * blockSize_p1), *((u32 *)(bufferPtr + i * blockSize_p1)));
-		if (ret == _FAIL) {
-			netdev_dbg(padapter->pnetdev, "write failed at %s %d, block:%d\n",
-				   __func__, __LINE__, i);
-			goto exit;
-		}
-	}
-
-	/* 3 Phase #2 */
-	if (remainSize_p1) {
-		blockCount_p2 = remainSize_p1/blockSize_p2;
-		remainSize_p2 = remainSize_p1%blockSize_p2;
-	}
-
-	/* 3 Phase #3 */
-	if (remainSize_p2) {
-		offset = (blockCount_p1 * blockSize_p1) + (blockCount_p2 * blockSize_p2);
-
-		blockCount_p3 = remainSize_p2 / blockSize_p3;
-
-		for (i = 0; i < blockCount_p3; i++) {
-			ret = rtw_write8(padapter, (FW_8723B_START_ADDRESS + offset + i), *(bufferPtr + offset + i));
-
-			if (ret == _FAIL) {
-				netdev_dbg(padapter->pnetdev, "write failed at %s %d, block:%d\n",
-					   __func__, __LINE__, i);
-				goto exit;
-			}
-		}
-	}
-exit:
-	return ret;
-}
-
-static int _PageWrite(
-	struct adapter *padapter,
-	u32 page,
-	void *buffer,
-	u32 size
-)
-{
-	u8 value8;
-	u8 u8Page = (u8) (page & 0x07);
-
-	value8 = (rtw_read8(padapter, REG_MCUFWDL+2) & 0xF8) | u8Page;
-	rtw_write8(padapter, REG_MCUFWDL+2, value8);
-
-	return _BlockWrite(padapter, buffer, size);
-}
-
-static int _WriteFW(struct adapter *padapter, void *buffer, u32 size)
-{
-	/*  Since we need dynamic decide method of dwonload fw, so we call this function to get chip version. */
-	/*  We can remove _ReadChipVersion from ReadpadapterInfo8192C later. */
-	int ret = _SUCCESS;
-	u32 pageNums, remainSize;
-	u32 page, offset;
-	u8 *bufferPtr = buffer;
-
-	pageNums = size / MAX_DLFW_PAGE_SIZE;
-	remainSize = size % MAX_DLFW_PAGE_SIZE;
-
-	for (page = 0; page < pageNums; page++) {
-		offset = page * MAX_DLFW_PAGE_SIZE;
-		ret = _PageWrite(padapter, page, bufferPtr+offset, MAX_DLFW_PAGE_SIZE);
-
-		if (ret == _FAIL) {
-			netdev_dbg(padapter->pnetdev, "page write failed at %s %d\n",
-				   __func__, __LINE__);
-			goto exit;
-		}
-	}
-
-	if (remainSize) {
-		offset = pageNums * MAX_DLFW_PAGE_SIZE;
-		page = pageNums;
-		ret = _PageWrite(padapter, page, bufferPtr+offset, remainSize);
-
-		if (ret == _FAIL) {
-			netdev_dbg(padapter->pnetdev, "remaining page write failed at %s %d\n",
-				   __func__, __LINE__);
-			goto exit;
-		}
-	}
-
-exit:
-	return ret;
-}
-
-void _8051Reset8723(struct adapter *padapter)
-{
-	u8 cpu_rst;
-	u8 io_rst;
-
-	/*  Reset 8051(WLMCU) IO wrapper */
-	/*  0x1c[8] = 0 */
-	/*  Suggested by Isaac@SD1 and Gimmy@SD1, coding by Lucas@20130624 */
-	io_rst = rtw_read8(padapter, REG_RSV_CTRL + 1);
-	io_rst &= ~BIT(0);
-	rtw_write8(padapter, REG_RSV_CTRL + 1, io_rst);
-
-	cpu_rst = rtw_read8(padapter, REG_SYS_FUNC_EN + 1);
-	cpu_rst &= ~BIT(2);
-	rtw_write8(padapter, REG_SYS_FUNC_EN + 1, cpu_rst);
-
-	/*  Enable 8051 IO wrapper */
-	/*  0x1c[8] = 1 */
-	io_rst = rtw_read8(padapter, REG_RSV_CTRL + 1);
-	io_rst |= BIT(0);
-	rtw_write8(padapter, REG_RSV_CTRL + 1, io_rst);
-
-	cpu_rst = rtw_read8(padapter, REG_SYS_FUNC_EN + 1);
-	cpu_rst |= BIT(2);
-	rtw_write8(padapter, REG_SYS_FUNC_EN + 1, cpu_rst);
-}
-
-u8 g_fwdl_chksum_fail;
-
-static s32 polling_fwdl_chksum(
-	struct adapter *adapter, u32 min_cnt, u32 timeout_ms
-)
-{
-	s32 ret = _FAIL;
-	u32 value32;
-	unsigned long start = jiffies;
-	u32 cnt = 0;
-
-	/* polling CheckSum report */
-	do {
-		cnt++;
-		value32 = rtw_read32(adapter, REG_MCUFWDL);
-		if (value32 & FWDL_ChkSum_rpt || adapter->bSurpriseRemoved ||
-		    adapter->driver_stopped)
-			break;
-		yield();
-	} while (jiffies_to_msecs(jiffies-start) < timeout_ms || cnt < min_cnt);
-
-	if (!(value32 & FWDL_ChkSum_rpt))
-		goto exit;
-
-	if (g_fwdl_chksum_fail) {
-		g_fwdl_chksum_fail--;
-		goto exit;
-	}
-
-	ret = _SUCCESS;
-
-exit:
-
-	return ret;
-}
-
-u8 g_fwdl_wintint_rdy_fail;
-
-static s32 _FWFreeToGo(struct adapter *adapter, u32 min_cnt, u32 timeout_ms)
-{
-	s32 ret = _FAIL;
-	u32 value32;
-	unsigned long start = jiffies;
-	u32 cnt = 0;
-
-	value32 = rtw_read32(adapter, REG_MCUFWDL);
-	value32 |= MCUFWDL_RDY;
-	value32 &= ~WINTINI_RDY;
-	rtw_write32(adapter, REG_MCUFWDL, value32);
-
-	_8051Reset8723(adapter);
-
-	/*  polling for FW ready */
-	do {
-		cnt++;
-		value32 = rtw_read32(adapter, REG_MCUFWDL);
-		if (value32 & WINTINI_RDY || adapter->bSurpriseRemoved || adapter->driver_stopped)
-			break;
-		yield();
-	} while (jiffies_to_msecs(jiffies - start) < timeout_ms || cnt < min_cnt);
-
-	if (!(value32 & WINTINI_RDY))
-		goto exit;
-
-	if (g_fwdl_wintint_rdy_fail) {
-		g_fwdl_wintint_rdy_fail--;
-		goto exit;
-	}
-
-	ret = _SUCCESS;
-
-exit:
-
-	return ret;
-}
-
-#define IS_FW_81xxC(padapter)	(((GET_HAL_DATA(padapter))->FirmwareSignature & 0xFFF0) == 0x88C0)
-
-void rtl8723b_FirmwareSelfReset(struct adapter *padapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	u8 val;
-	u8 Delay = 100;
-
-	if (
-		!(IS_FW_81xxC(padapter) && ((pHalData->FirmwareVersion < 0x21) || (pHalData->FirmwareVersion == 0x21 && pHalData->FirmwareSubVersion < 0x01)))
-	) { /*  after 88C Fw v33.1 */
-		/* 0x1cf = 0x20. Inform 8051 to reset. 2009.12.25. tynli_test */
-		rtw_write8(padapter, REG_HMETFR+3, 0x20);
-
-		val = rtw_read8(padapter, REG_SYS_FUNC_EN + 1);
-		while (val & BIT(2)) {
-			Delay--;
-			if (Delay == 0)
-				break;
-			udelay(50);
-			val = rtw_read8(padapter, REG_SYS_FUNC_EN + 1);
-		}
-
-		if (Delay == 0) {
-			/* force firmware reset */
-			val = rtw_read8(padapter, REG_SYS_FUNC_EN + 1);
-			rtw_write8(padapter, REG_SYS_FUNC_EN + 1, val & (~BIT(2)));
-		}
-	}
-}
-
-/*  */
-/*	Description: */
-/*		Download 8192C firmware code. */
-/*  */
-/*  */
-s32 rtl8723b_FirmwareDownload(struct adapter *padapter, bool  bUsedWoWLANFw)
-{
-	s32 rtStatus = _SUCCESS;
-	u8 write_fw = 0;
-	unsigned long fwdl_start_time;
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	struct rt_firmware *pFirmware;
-	struct rt_firmware *pBTFirmware;
-	struct rt_firmware_hdr *pFwHdr = NULL;
-	u8 *pFirmwareBuf;
-	u32 FirmwareLen;
-	const struct firmware *fw;
-	struct device *device = dvobj_to_dev(padapter->dvobj);
-	u8 *fwfilepath;
-	u8 tmp_ps;
-
-	pFirmware = kzalloc_obj(struct rt_firmware);
-	if (!pFirmware)
-		return _FAIL;
-	pBTFirmware = kzalloc_obj(struct rt_firmware);
-	if (!pBTFirmware) {
-		kfree(pFirmware);
-		return _FAIL;
-	}
-	tmp_ps = rtw_read8(padapter, 0xa3);
-	tmp_ps &= 0xf8;
-	tmp_ps |= 0x02;
-	/* 1. write 0xA3[:2:0] = 3b'010 */
-	rtw_write8(padapter, 0xa3, tmp_ps);
-	/* 2. read power_state = 0xA0[1:0] */
-	tmp_ps = rtw_read8(padapter, 0xa0);
-	tmp_ps &= 0x03;
-
-	fwfilepath = "rtlwifi/rtl8723bs_nic.bin";
-
-	pr_info("rtl8723bs: acquire FW from file:%s\n", fwfilepath);
-
-	rtStatus = request_firmware(&fw, fwfilepath, device);
-	if (rtStatus) {
-		pr_err("Request firmware failed with error 0x%x\n", rtStatus);
-		rtStatus = _FAIL;
-		goto exit;
-	}
-
-	if (!fw) {
-		pr_err("Firmware %s not available\n", fwfilepath);
-		rtStatus = _FAIL;
-		goto exit;
-	}
-
-	if (fw->size > FW_8723B_SIZE) {
-		rtStatus = _FAIL;
-		release_firmware(fw);
-		goto exit;
-	}
-
-	pFirmware->fw_buffer_sz = kmemdup(fw->data, fw->size, GFP_KERNEL);
-	if (!pFirmware->fw_buffer_sz) {
-		rtStatus = _FAIL;
-		release_firmware(fw);
-		goto exit;
-	}
-
-	pFirmware->fw_length = fw->size;
-	release_firmware(fw);
-	if (pFirmware->fw_length > FW_8723B_SIZE) {
-		rtStatus = _FAIL;
-		netdev_emerg(padapter->pnetdev,
-			     "Firmware size:%u exceed %u\n",
-			     pFirmware->fw_length, FW_8723B_SIZE);
-		goto release_fw1;
-	}
-
-	pFirmwareBuf = pFirmware->fw_buffer_sz;
-	FirmwareLen = pFirmware->fw_length;
-
-	/*  To Check Fw header. Added by tynli. 2009.12.04. */
-	pFwHdr = (struct rt_firmware_hdr *)pFirmwareBuf;
-
-	pHalData->FirmwareVersion =  le16_to_cpu(pFwHdr->version);
-	pHalData->FirmwareSubVersion = le16_to_cpu(pFwHdr->subversion);
-	pHalData->FirmwareSignature = le16_to_cpu(pFwHdr->signature);
-
-	if (IS_FW_HEADER_EXIST_8723B(pFwHdr)) {
-		/*  Shift 32 bytes for FW header */
-		pFirmwareBuf = pFirmwareBuf + 32;
-		FirmwareLen = FirmwareLen - 32;
-	}
-
-	/*  Suggested by Filen. If 8051 is running in RAM code, driver should inform Fw to reset by itself, */
-	/*  or it will cause download Fw fail. 2010.02.01. by tynli. */
-	if (rtw_read8(padapter, REG_MCUFWDL) & RAM_DL_SEL) { /* 8051 RAM code */
-		rtw_write8(padapter, REG_MCUFWDL, 0x00);
-		rtl8723b_FirmwareSelfReset(padapter);
-	}
-
-	_FWDownloadEnable(padapter, true);
-	fwdl_start_time = jiffies;
-	while (
-		!padapter->driver_stopped &&
-		!padapter->bSurpriseRemoved &&
-		(write_fw++ < 3 || jiffies_to_msecs(jiffies - fwdl_start_time) < 500)
-	) {
-		/* reset FWDL chksum */
-		rtw_write8(padapter, REG_MCUFWDL, rtw_read8(padapter, REG_MCUFWDL)|FWDL_ChkSum_rpt);
-
-		rtStatus = _WriteFW(padapter, pFirmwareBuf, FirmwareLen);
-		if (rtStatus != _SUCCESS)
-			continue;
-
-		rtStatus = polling_fwdl_chksum(padapter, 5, 50);
-		if (rtStatus == _SUCCESS)
-			break;
-	}
-	_FWDownloadEnable(padapter, false);
-	if (rtStatus != _SUCCESS)
-		goto fwdl_stat;
-
-	rtStatus = _FWFreeToGo(padapter, 10, 200);
-	if (rtStatus != _SUCCESS)
-		goto fwdl_stat;
-
-fwdl_stat:
-
-exit:
-	kfree(pFirmware->fw_buffer_sz);
-	kfree(pFirmware);
-release_fw1:
-	kfree(pBTFirmware);
-	return rtStatus;
-}
-
-void rtl8723b_InitializeFirmwareVars(struct adapter *padapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-
-	/*  Init Fw LPS related. */
-	adapter_to_pwrctl(padapter)->fw_current_in_ps_mode = false;
-
-	/* Init H2C cmd. */
-	rtw_write8(padapter, REG_HMETFR, 0x0f);
-
-	/*  Init H2C counter. by tynli. 2009.12.09. */
-	pHalData->LastHMEBoxNum = 0;
-/* pHalData->H2CQueueHead = 0; */
-/* pHalData->H2CQueueTail = 0; */
-/* pHalData->H2CStopInsertQueue = false; */
-}
-
-/*  */
-/*				Efuse related code */
-/*  */
-static u8 hal_EfuseSwitchToBank(
-	struct adapter *padapter, u8 bank
-)
-{
-	u8 bRet = true;
-	u32 value32 = rtw_read32(padapter, EFUSE_TEST);
-
-	switch (bank) {
-	case 0:
-		value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_WIFI_SEL_0);
-		break;
-	case 1:
-		value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_0);
-		break;
-	case 2:
-		value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_1);
-		break;
-	case 3:
-		value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_2);
-		break;
-	default:
-		value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_WIFI_SEL_0);
-		bRet = false;
-		break;
-	}
-	rtw_write32(padapter, EFUSE_TEST, value32);
-
-	return bRet;
-}
-
-void Hal_GetEfuseDefinition(
-	struct adapter *padapter,
-	u8 efuseType,
-	u8 type,
-	void *pOut
-)
-{
-	switch (type) {
-	case TYPE_EFUSE_MAX_SECTION:
-		{
-			u8 *pMax_section = pOut;
-
-			if (efuseType == EFUSE_WIFI)
-				*pMax_section = EFUSE_MAX_SECTION_8723B;
-			else
-				*pMax_section = EFUSE_BT_MAX_SECTION;
-		}
-		break;
-
-	case TYPE_EFUSE_REAL_CONTENT_LEN:
-		{
-			u16 *pu2Tmp = pOut;
-
-			if (efuseType == EFUSE_WIFI)
-				*pu2Tmp = EFUSE_REAL_CONTENT_LEN_8723B;
-			else
-				*pu2Tmp = EFUSE_BT_REAL_CONTENT_LEN;
-		}
-		break;
-
-	case TYPE_AVAILABLE_EFUSE_BYTES_BANK:
-		{
-			u16 *pu2Tmp = pOut;
-
-			if (efuseType == EFUSE_WIFI)
-				*pu2Tmp = (EFUSE_REAL_CONTENT_LEN_8723B-EFUSE_OOB_PROTECT_BYTES);
-			else
-				*pu2Tmp = (EFUSE_BT_REAL_BANK_CONTENT_LEN-EFUSE_PROTECT_BYTES_BANK);
-		}
-		break;
-
-	case TYPE_AVAILABLE_EFUSE_BYTES_TOTAL:
-		{
-			u16 *pu2Tmp = pOut;
-
-			if (efuseType == EFUSE_WIFI)
-				*pu2Tmp = (EFUSE_REAL_CONTENT_LEN_8723B-EFUSE_OOB_PROTECT_BYTES);
-			else
-				*pu2Tmp = (EFUSE_BT_REAL_CONTENT_LEN-(EFUSE_PROTECT_BYTES_BANK*3));
-		}
-		break;
-
-	case TYPE_EFUSE_MAP_LEN:
-		{
-			u16 *pu2Tmp = pOut;
-
-			if (efuseType == EFUSE_WIFI)
-				*pu2Tmp = EFUSE_MAX_MAP_LEN;
-			else
-				*pu2Tmp = EFUSE_BT_MAP_LEN;
-		}
-		break;
-
-	case TYPE_EFUSE_PROTECT_BYTES_BANK:
-		{
-			u8 *pu1Tmp = pOut;
-
-			if (efuseType == EFUSE_WIFI)
-				*pu1Tmp = EFUSE_OOB_PROTECT_BYTES;
-			else
-				*pu1Tmp = EFUSE_PROTECT_BYTES_BANK;
-		}
-		break;
-
-	case TYPE_EFUSE_CONTENT_LEN_BANK:
-		{
-			u16 *pu2Tmp = pOut;
-
-			if (efuseType == EFUSE_WIFI)
-				*pu2Tmp = EFUSE_REAL_CONTENT_LEN_8723B;
-			else
-				*pu2Tmp = EFUSE_BT_REAL_BANK_CONTENT_LEN;
-		}
-		break;
-
-	default:
-		{
-			u8 *pu1Tmp = pOut;
-			*pu1Tmp = 0;
-		}
-		break;
-	}
-}
-
-void Hal_EfusePowerSwitch(
-	struct adapter *padapter, u8 PwrState
-)
-{
-	u8 tempval;
-	u16 tmpV16;
-
-	if (PwrState) {
-		/*  To avoid cannot access efuse registers after disable/enable several times during DTM test. */
-		/*  Suggested by SD1 IsaacHsu. 2013.07.08, added by tynli. */
-		tempval = rtw_read8(padapter, SDIO_LOCAL_BASE|SDIO_REG_HSUS_CTRL);
-		if (tempval & BIT(0)) { /*  SDIO local register is suspend */
-			u8 count = 0;
-
-			tempval &= ~BIT(0);
-			rtw_write8(padapter, SDIO_LOCAL_BASE|SDIO_REG_HSUS_CTRL, tempval);
-
-			/*  check 0x86[1:0]= 10'2h, wait power state to leave suspend */
-			do {
-				tempval = rtw_read8(padapter, SDIO_LOCAL_BASE|SDIO_REG_HSUS_CTRL);
-				tempval &= 0x3;
-				if (tempval == 0x02)
-					break;
-
-				count++;
-				if (count >= 100)
-					break;
-
-				mdelay(10);
-			} while (1);
-		}
-
-		rtw_write8(padapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_ON);
-
-		/*  Reset: 0x0000h[28], default valid */
-		tmpV16 =  rtw_read16(padapter, REG_SYS_FUNC_EN);
-		if (!(tmpV16 & FEN_ELDR)) {
-			tmpV16 |= FEN_ELDR;
-			rtw_write16(padapter, REG_SYS_FUNC_EN, tmpV16);
-		}
-
-		/*  Clock: Gated(0x0008h[5]) 8M(0x0008h[1]) clock from ANA, default valid */
-		tmpV16 = rtw_read16(padapter, REG_SYS_CLKR);
-		if ((!(tmpV16 & LOADER_CLK_EN))  || (!(tmpV16 & ANA8M))) {
-			tmpV16 |= (LOADER_CLK_EN | ANA8M);
-			rtw_write16(padapter, REG_SYS_CLKR, tmpV16);
-		}
-	} else {
-		rtw_write8(padapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_OFF);
-	}
-}
-
-static void hal_ReadEFuse_WiFi(
-	struct adapter *padapter,
-	u16 _offset,
-	u16 _size_byte,
-	u8 *pbuf
-)
-{
-	u8 *efuseTbl = NULL;
-	u16 eFuse_Addr = 0;
-	u8 offset, wden;
-	u8 efuseHeader, efuseExtHdr, efuseData;
-	u16 i, total, used;
-	u8 efuse_usage = 0;
-
-	/*  */
-	/*  Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. */
-	/*  */
-	if ((_offset + _size_byte) > EFUSE_MAX_MAP_LEN)
-		return;
-
-	efuseTbl = kmalloc(EFUSE_MAX_MAP_LEN, GFP_ATOMIC);
-	if (!efuseTbl)
-		return;
-
-	/*  0xff will be efuse default value instead of 0x00. */
-	memset(efuseTbl, 0xFF, EFUSE_MAX_MAP_LEN);
-
-	/*  switch bank back to bank 0 for later BT and wifi use. */
-	hal_EfuseSwitchToBank(padapter, 0);
-
-	while (AVAILABLE_EFUSE_ADDR(eFuse_Addr)) {
-		rtw_efuse_one_byte_read(padapter, eFuse_Addr++, &efuseHeader);
-		if (efuseHeader == 0xFF)
-			break;
-
-		/*  Check PG header for section num. */
-		if (EXT_HEADER(efuseHeader)) { /* extended header */
-			offset = GET_HDR_OFFSET_2_0(efuseHeader);
-
-			rtw_efuse_one_byte_read(padapter, eFuse_Addr++, &efuseExtHdr);
-			if (ALL_WORDS_DISABLED(efuseExtHdr))
-				continue;
-
-			offset |= ((efuseExtHdr & 0xF0) >> 1);
-			wden = (efuseExtHdr & 0x0F);
-		} else {
-			offset = ((efuseHeader >> 4) & 0x0f);
-			wden = (efuseHeader & 0x0f);
-		}
-
-		if (offset < EFUSE_MAX_SECTION_8723B) {
-			u16 addr;
-			/*  Get word enable value from PG header */
-
-			addr = offset * PGPKT_DATA_SIZE;
-			for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) {
-				/*  Check word enable condition in the section */
-				if (!(wden & (0x01<<i))) {
-					rtw_efuse_one_byte_read(padapter, eFuse_Addr++,
-								&efuseData);
-					efuseTbl[addr] = efuseData;
-
-					rtw_efuse_one_byte_read(padapter, eFuse_Addr++,
-								&efuseData);
-					efuseTbl[addr+1] = efuseData;
-				}
-				addr += 2;
-			}
-		} else {
-			eFuse_Addr += rtw_efuse_calculate_word_counts(wden)*2;
-		}
-	}
-
-	/*  Copy from Efuse map to output pointer memory!!! */
-	for (i = 0; i < _size_byte; i++)
-		pbuf[i] = efuseTbl[_offset+i];
-
-	/*  Calculate Efuse utilization */
-	Hal_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, &total);
-	used = eFuse_Addr - 1;
-	efuse_usage = (u8)((used*100)/total);
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_EFUSE_BYTES, (u8 *)&used);
-	rtw_hal_set_hwreg(padapter, HW_VAR_EFUSE_USAGE, (u8 *)&efuse_usage);
-
-	kfree(efuseTbl);
-}
-
-static void hal_ReadEFuse_BT(
-	struct adapter *padapter,
-	u16 _offset,
-	u16 _size_byte,
-	u8 *pbuf
-)
-{
-	u8 *efuseTbl;
-	u8 bank;
-	u16 eFuse_Addr;
-	u8 efuseHeader, efuseExtHdr, efuseData;
-	u8 offset, wden;
-	u16 i, total, used;
-	u8 efuse_usage;
-
-	/*  */
-	/*  Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. */
-	/*  */
-	if ((_offset + _size_byte) > EFUSE_BT_MAP_LEN)
-		return;
-
-	efuseTbl = kmalloc(EFUSE_BT_MAP_LEN, GFP_ATOMIC);
-	if (!efuseTbl)
-		return;
-
-	/*  0xff will be efuse default value instead of 0x00. */
-	memset(efuseTbl, 0xFF, EFUSE_BT_MAP_LEN);
-
-	Hal_GetEfuseDefinition(padapter, EFUSE_BT, TYPE_AVAILABLE_EFUSE_BYTES_BANK, &total);
-
-	for (bank = 1; bank < 3; bank++) { /*  8723b Max bake 0~2 */
-		if (!hal_EfuseSwitchToBank(padapter, bank))
-			goto exit;
-
-		eFuse_Addr = 0;
-
-		while (AVAILABLE_EFUSE_ADDR(eFuse_Addr)) {
-			rtw_efuse_one_byte_read(padapter, eFuse_Addr++, &efuseHeader);
-			if (efuseHeader == 0xFF)
-				break;
-
-			/*  Check PG header for section num. */
-			if (EXT_HEADER(efuseHeader)) { /* extended header */
-				offset = GET_HDR_OFFSET_2_0(efuseHeader);
-
-				rtw_efuse_one_byte_read(padapter, eFuse_Addr++, &efuseExtHdr);
-				if (ALL_WORDS_DISABLED(efuseExtHdr))
-					continue;
-
-				offset |= ((efuseExtHdr & 0xF0) >> 1);
-				wden = (efuseExtHdr & 0x0F);
-			} else {
-				offset = ((efuseHeader >> 4) & 0x0f);
-				wden = (efuseHeader & 0x0f);
-			}
-
-			if (offset < EFUSE_BT_MAX_SECTION) {
-				u16 addr = offset * PGPKT_DATA_SIZE;
-
-				for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) {
-					/*  Check word enable condition in the section */
-					if (!(wden & (0x01<<i))) {
-						rtw_efuse_one_byte_read(padapter, eFuse_Addr++,
-									&efuseData);
-						efuseTbl[addr] = efuseData;
-
-						rtw_efuse_one_byte_read(padapter, eFuse_Addr++,
-									&efuseData);
-						efuseTbl[addr+1] = efuseData;
-					}
-					addr += 2;
-				}
-			} else {
-				eFuse_Addr += rtw_efuse_calculate_word_counts(wden)*2;
-			}
-		}
-
-		if ((eFuse_Addr - 1) < total)
-			break;
-
-	}
-
-	/*  switch bank back to bank 0 for later BT and wifi use. */
-	hal_EfuseSwitchToBank(padapter, 0);
-
-	/*  Copy from Efuse map to output pointer memory!!! */
-	for (i = 0; i < _size_byte; i++)
-		pbuf[i] = efuseTbl[_offset+i];
-
-	/*  */
-	/*  Calculate Efuse utilization. */
-	/*  */
-	Hal_GetEfuseDefinition(padapter, EFUSE_BT, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, &total);
-	used = (EFUSE_BT_REAL_BANK_CONTENT_LEN*(bank-1)) + eFuse_Addr - 1;
-	efuse_usage = (u8)((used*100)/total);
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_EFUSE_BT_BYTES, (u8 *)&used);
-	rtw_hal_set_hwreg(padapter, HW_VAR_EFUSE_BT_USAGE, (u8 *)&efuse_usage);
-
-exit:
-	kfree(efuseTbl);
-}
-
-void Hal_ReadEFuse(
-	struct adapter *padapter,
-	u8 efuseType,
-	u16 _offset,
-	u16 _size_byte,
-	u8 *pbuf
-)
-{
-	if (efuseType == EFUSE_WIFI)
-		hal_ReadEFuse_WiFi(padapter, _offset, _size_byte, pbuf);
-	else
-		hal_ReadEFuse_BT(padapter, _offset, _size_byte, pbuf);
-}
-
-void rtl8723b_read_chip_version(struct adapter *padapter)
-{
-	u32 value32;
-	struct hal_com_data *pHalData;
-
-/* YJ, TODO, move read chip type here */
-	pHalData = GET_HAL_DATA(padapter);
-
-	value32 = rtw_read32(padapter, REG_SYS_CFG);
-	pHalData->chip_normal = ((value32 & RTL_ID) ? false : true);
-}
-
-void rtl8723b_InitBeaconParameters(struct adapter *padapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	u16 val16;
-	u8 val8 = DIS_TSF_UDT;
-
-	val16 = val8 | (val8 << 8); /*  port0 and port1 */
-
-	/*  Enable prot0 beacon function for PSTDMA */
-	val16 |= EN_BCN_FUNCTION;
-
-	rtw_write16(padapter, REG_BCN_CTRL, val16);
-
-	rtw_write16(padapter, REG_TBTT_PROHIBIT, TBTT_PROHIBIT_TIME_8723B);
-	/*  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))
-		rtw_write8(padapter, REG_DRVERLYINT, DRIVER_EARLY_INT_TIME_8723B); /*  5ms */
-	rtw_write8(padapter, REG_BCNDMATIM, BCN_DMA_ATIME_INT_TIME_8723B); /*  2ms */
-
-	/*  Suggested by designer timchen. Change beacon AIFS to the largest number */
-	/*  because test chip does not contension before sending beacon. by tynli. 2009.11.03 */
-	rtw_write16(padapter, REG_BCNTCFG, BCNTCFG_8723B);
-
-	pHalData->RegFwHwTxQCtrl = rtw_read8(padapter, REG_FWHW_TXQ_CTRL+2);
-	pHalData->RegReg542 = rtw_read8(padapter, REG_TBTT_PROHIBIT+2);
-}
-
-void _InitBurstPktLen_8723BS(struct adapter *Adapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	rtw_write8(Adapter, 0x4c7, rtw_read8(Adapter, 0x4c7)|BIT(7)); /* enable single pkt ampdu */
-	rtw_write8(Adapter, REG_RX_PKT_LIMIT_8723B, 0x18);		/* for VHT packet length 11K */
-	rtw_write8(Adapter, REG_MAX_AGGR_NUM_8723B, 0x1F);
-	rtw_write8(Adapter, REG_PIFS_8723B, 0x00);
-	rtw_write8(Adapter, REG_FWHW_TXQ_CTRL_8723B, rtw_read8(Adapter, REG_FWHW_TXQ_CTRL)&(~BIT(7)));
-	if (pHalData->AMPDUBurstMode)
-		rtw_write8(Adapter, REG_AMPDU_BURST_MODE_8723B,  0x5F);
-	rtw_write8(Adapter, REG_AMPDU_MAX_TIME_8723B, 0x70);
-
-	/*  ARFB table 9 for 11ac 5G 2SS */
-	rtw_write32(Adapter, REG_ARFR0_8723B, 0x00000010);
-	if (pHalData->chip_normal)
-		rtw_write32(Adapter, REG_ARFR0_8723B+4, 0xfffff000);
-	else
-		rtw_write32(Adapter, REG_ARFR0_8723B+4, 0x3e0ff000);
-
-	/*  ARFB table 10 for 11ac 5G 1SS */
-	rtw_write32(Adapter, REG_ARFR1_8723B, 0x00000010);
-	rtw_write32(Adapter, REG_ARFR1_8723B+4, 0x003ff000);
-}
-
-static void ResumeTxBeacon(struct adapter *padapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-
-	pHalData->RegFwHwTxQCtrl |= BIT(6);
-	rtw_write8(padapter, REG_FWHW_TXQ_CTRL+2, pHalData->RegFwHwTxQCtrl);
-	rtw_write8(padapter, REG_TBTT_PROHIBIT+1, 0xff);
-	pHalData->RegReg542 |= BIT(0);
-	rtw_write8(padapter, REG_TBTT_PROHIBIT+2, pHalData->RegReg542);
-}
-
-static void StopTxBeacon(struct adapter *padapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-
-	pHalData->RegFwHwTxQCtrl &= ~BIT(6);
-	rtw_write8(padapter, REG_FWHW_TXQ_CTRL+2, pHalData->RegFwHwTxQCtrl);
-	rtw_write8(padapter, REG_TBTT_PROHIBIT+1, 0x64);
-	pHalData->RegReg542 &= ~BIT(0);
-	rtw_write8(padapter, REG_TBTT_PROHIBIT+2, pHalData->RegReg542);
-}
-
-static void _BeaconFunctionEnable(struct adapter *padapter, u8 Enable, u8 Linked)
-{
-	rtw_write8(padapter, REG_BCN_CTRL, DIS_TSF_UDT | EN_BCN_FUNCTION | DIS_BCNQ_SUB);
-	rtw_write8(padapter, REG_RD_CTRL+1, 0x6F);
-}
-
-void rtl8723b_SetBeaconRelatedRegisters(struct adapter *padapter)
-{
-	u8 val8;
-	u32 value32;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-	u32 bcn_ctrl_reg;
-
-	/* reset TSF, enable update TSF, correcting TSF On Beacon */
-
-	/* REG_BCN_INTERVAL */
-	/* REG_BCNDMATIM */
-	/* REG_ATIMWND */
-	/* REG_TBTT_PROHIBIT */
-	/* REG_DRVERLYINT */
-	/* REG_BCN_MAX_ERR */
-	/* REG_BCNTCFG (0x510) */
-	/* REG_DUAL_TSF_RST */
-	/* REG_BCN_CTRL (0x550) */
-
-	bcn_ctrl_reg = REG_BCN_CTRL;
-
-	/*  */
-	/*  ATIM window */
-	/*  */
-	rtw_write16(padapter, REG_ATIMWND, 2);
-
-	/*  */
-	/*  Beacon interval (in unit of TU). */
-	/*  */
-	rtw_write16(padapter, REG_BCN_INTERVAL, pmlmeinfo->bcn_interval);
-
-	rtl8723b_InitBeaconParameters(padapter);
-
-	rtw_write8(padapter, REG_SLOT, 0x09);
-
-	/*  */
-	/*  Reset TSF Timer to zero, added by Roger. 2008.06.24 */
-	/*  */
-	value32 = rtw_read32(padapter, REG_TCR);
-	value32 &= ~TSFRST;
-	rtw_write32(padapter, REG_TCR, value32);
-
-	value32 |= TSFRST;
-	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)) {
-		rtw_write8(padapter, REG_RXTSF_OFFSET_CCK, 0x50);
-		rtw_write8(padapter, REG_RXTSF_OFFSET_OFDM, 0x50);
-	}
-
-	_BeaconFunctionEnable(padapter, true, true);
-
-	ResumeTxBeacon(padapter);
-	val8 = rtw_read8(padapter, bcn_ctrl_reg);
-	val8 |= DIS_BCNQ_SUB;
-	rtw_write8(padapter, bcn_ctrl_reg, val8);
-}
-
-void hal_notch_filter_8723b(struct adapter *adapter, bool enable)
-{
-	if (enable)
-		rtw_write8(adapter, rOFDM0_RxDSP+1, rtw_read8(adapter, rOFDM0_RxDSP+1) | BIT(1));
-	else
-		rtw_write8(adapter, rOFDM0_RxDSP+1, rtw_read8(adapter, rOFDM0_RxDSP+1) & ~BIT(1));
-}
-
-void UpdateHalRAMask8723B(struct adapter *padapter, u32 mac_id, u8 rssi_level)
-{
-	u32 mask, rate_bitmap;
-	u8 short_gi_rate = false;
-	struct sta_info *psta;
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	struct dm_priv *pdmpriv = &pHalData->dmpriv;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
-
-	if (mac_id >= NUM_STA) /* CAM_SIZE */
-		return;
-
-	psta = pmlmeinfo->FW_sta_info[mac_id].psta;
-	if (!psta)
-		return;
-
-	short_gi_rate = query_ra_short_GI(psta);
-
-	mask = psta->ra_mask;
-
-	rate_bitmap = 0xffffffff;
-	rate_bitmap = ODM_Get_Rate_Bitmap(&pHalData->odmpriv, mac_id, mask, rssi_level);
-
-	mask &= rate_bitmap;
-
-	rate_bitmap = hal_btcoex_GetRaMask(padapter);
-	mask &= ~rate_bitmap;
-
-	if (pHalData->fw_ractrl)
-		rtl8723b_set_FwMacIdConfig_cmd(padapter, mac_id, psta->raid, psta->bw_mode, short_gi_rate, mask);
-
-	/* set correct initial date rate for each mac_id */
-	pdmpriv->INIDATA_RATE[mac_id] = psta->init_rate;
-}
-
-void rtl8723b_InitAntenna_Selection(struct adapter *padapter)
-{
-	u8 val;
-
-	val = rtw_read8(padapter, REG_LEDCFG2);
-	/*  Let 8051 take control antenna setting */
-	val |= BIT(7); /*  DPDT_SEL_EN, 0x4C[23] */
-	rtw_write8(padapter, REG_LEDCFG2, val);
-}
-
-void rtl8723b_init_default_value(struct adapter *padapter)
-{
-	struct hal_com_data *pHalData;
-	struct dm_priv *pdmpriv;
-	u8 i;
-
-	pHalData = GET_HAL_DATA(padapter);
-	pdmpriv = &pHalData->dmpriv;
-
-	padapter->registrypriv.wireless_mode = WIRELESS_11BG_24N;
-
-	/*  init default value */
-	pHalData->fw_ractrl = false;
-	if (!adapter_to_pwrctl(padapter)->bkeepfwalive)
-		pHalData->LastHMEBoxNum = 0;
-
-	/*  init dm default value */
-	pdmpriv->TM_Trigger = 0;/* for IQK */
-/* 	pdmpriv->binitialized = false; */
-/* 	pdmpriv->prv_traffic_idx = 3; */
-/* 	pdmpriv->initialize = 0; */
-
-	pdmpriv->ThermalValue_HP_index = 0;
-	for (i = 0; i < HP_THERMAL_NUM; i++)
-		pdmpriv->ThermalValue_HP[i] = 0;
-
-	/*  init Efuse variables */
-	pHalData->EfuseUsedBytes = 0;
-	pHalData->EfuseUsedPercentage = 0;
-#ifdef HAL_EFUSE_MEMORY
-	pHalData->EfuseHal.fakeEfuseBank = 0;
-	pHalData->EfuseHal.fakeEfuseUsedBytes = 0;
-	memset(pHalData->EfuseHal.fakeEfuseContent, 0xFF, EFUSE_MAX_HW_SIZE);
-	memset(pHalData->EfuseHal.fakeEfuseInitMap, 0xFF, EFUSE_MAX_MAP_LEN);
-	memset(pHalData->EfuseHal.fakeEfuseModifiedMap, 0xFF, EFUSE_MAX_MAP_LEN);
-	pHalData->EfuseHal.BTEfuseUsedBytes = 0;
-	pHalData->EfuseHal.BTEfuseUsedPercentage = 0;
-	memset(pHalData->EfuseHal.BTEfuseContent, 0xFF, EFUSE_MAX_BT_BANK*EFUSE_MAX_HW_SIZE);
-	memset(pHalData->EfuseHal.BTEfuseInitMap, 0xFF, EFUSE_BT_MAX_MAP_LEN);
-	memset(pHalData->EfuseHal.BTEfuseModifiedMap, 0xFF, EFUSE_BT_MAX_MAP_LEN);
-	pHalData->EfuseHal.fakeBTEfuseUsedBytes = 0;
-	memset(pHalData->EfuseHal.fakeBTEfuseContent, 0xFF, EFUSE_MAX_BT_BANK*EFUSE_MAX_HW_SIZE);
-	memset(pHalData->EfuseHal.fakeBTEfuseInitMap, 0xFF, EFUSE_BT_MAX_MAP_LEN);
-	memset(pHalData->EfuseHal.fakeBTEfuseModifiedMap, 0xFF, EFUSE_BT_MAX_MAP_LEN);
-#endif
-}
-
-u8 GetEEPROMSize8723B(struct adapter *padapter)
-{
-	u8 size = 0;
-	u32 cr;
-
-	cr = rtw_read16(padapter, REG_9346CR);
-	/*  6: EEPROM used is 93C46, 4: boot from E-Fuse. */
-	size = (cr & BOOT_FROM_EEPROM) ? 6 : 4;
-
-	return size;
-}
-
-/*  */
-/*  */
-/*  LLT R/W/Init function */
-/*  */
-/*  */
-s32 rtl8723b_InitLLTTable(struct adapter *padapter)
-{
-	unsigned long start, passing_time;
-	u32 val32;
-	s32 ret = _FAIL;
-
-	val32 = rtw_read32(padapter, REG_AUTO_LLT);
-	val32 |= BIT_AUTO_INIT_LLT;
-	rtw_write32(padapter, REG_AUTO_LLT, val32);
-
-	start = jiffies;
-
-	do {
-		val32 = rtw_read32(padapter, REG_AUTO_LLT);
-		if (!(val32 & BIT_AUTO_INIT_LLT)) {
-			ret = _SUCCESS;
-			break;
-		}
-
-		passing_time = jiffies_to_msecs(jiffies - start);
-		if (passing_time > 1000)
-			break;
-
-		msleep(1);
-	} while (1);
-
-	return ret;
-}
-
-static void hal_get_chnl_group_8723b(u8 channel, u8 *group)
-{
-	if (channel >= 1 && channel <= 2)
-		*group = 0;
-	else if (channel >= 3 && channel <= 5)
-		*group = 1;
-	else if (channel >= 6 && channel <= 8)
-		*group = 2;
-	else if (channel >= 9 && channel <= 11)
-		*group = 3;
-	else if (channel >= 12 && channel <= 14)
-		*group = 4;
-}
-
-void Hal_InitPGData(struct adapter *padapter, u8 *PROMContent)
-{
-	struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
-
-	if (!pEEPROM->bautoload_fail_flag) { /*  autoload OK. */
-		if (!pEEPROM->EepromOrEfuse) {
-			/*  Read EFUSE real map to shadow. */
-			rtw_efuse_shadow_map_update(padapter, EFUSE_WIFI);
-			memcpy(PROMContent, pEEPROM->efuse_eeprom_data, HWSET_MAX_SIZE_8723B);
-		}
-	} else {/* autoload fail */
-		if (!pEEPROM->EepromOrEfuse)
-			rtw_efuse_shadow_map_update(padapter, EFUSE_WIFI);
-		memcpy(PROMContent, pEEPROM->efuse_eeprom_data, HWSET_MAX_SIZE_8723B);
-	}
-}
-
-void Hal_EfuseParseIDCode(struct adapter *padapter, u8 *hwinfo)
-{
-	struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
-/* 	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter); */
-	u16 EEPROMId;
-
-	/*  Check 0x8129 again for making sure autoload status!! */
-	EEPROMId = le16_to_cpu(*((__le16 *)hwinfo));
-	if (EEPROMId != RTL_EEPROM_ID) {
-		pEEPROM->bautoload_fail_flag = true;
-	} else
-		pEEPROM->bautoload_fail_flag = false;
-}
-
-static void Hal_ReadPowerValueFromPROM_8723B(
-	struct adapter *Adapter,
-	struct TxPowerInfo24G *pwrInfo24G,
-	u8 *PROMContent,
-	bool AutoLoadFail
-)
-{
-	u32 rfPath, eeAddr = EEPROM_TX_PWR_INX_8723B, group, TxCount = 0;
-
-	memset(pwrInfo24G, 0, sizeof(struct TxPowerInfo24G));
-
-	if (PROMContent[eeAddr+1] == 0xFF)
-		AutoLoadFail = true;
-
-	if (AutoLoadFail) {
-		for (rfPath = 0; rfPath < MAX_RF_PATH; rfPath++) {
-			/* 2.4G default value */
-			for (group = 0; group < MAX_CHNL_GROUP_24G; group++) {
-				pwrInfo24G->IndexCCK_Base[rfPath][group] = EEPROM_DEFAULT_24G_INDEX;
-				pwrInfo24G->IndexBW40_Base[rfPath][group] = EEPROM_DEFAULT_24G_INDEX;
-			}
-
-			for (TxCount = 0; TxCount < MAX_TX_COUNT; TxCount++) {
-				if (TxCount == 0) {
-					pwrInfo24G->BW20_Diff[rfPath][0] = EEPROM_DEFAULT_24G_HT20_DIFF;
-					pwrInfo24G->OFDM_Diff[rfPath][0] = EEPROM_DEFAULT_24G_OFDM_DIFF;
-				} else {
-					pwrInfo24G->BW20_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF;
-					pwrInfo24G->BW40_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF;
-					pwrInfo24G->CCK_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF;
-					pwrInfo24G->OFDM_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF;
-				}
-			}
-		}
-
-		return;
-	}
-
-	for (rfPath = 0; rfPath < MAX_RF_PATH; rfPath++) {
-		/* 2 2.4G default value */
-		for (group = 0; group < MAX_CHNL_GROUP_24G; group++) {
-			pwrInfo24G->IndexCCK_Base[rfPath][group] =	PROMContent[eeAddr++];
-			if (pwrInfo24G->IndexCCK_Base[rfPath][group] == 0xFF)
-				pwrInfo24G->IndexCCK_Base[rfPath][group] = EEPROM_DEFAULT_24G_INDEX;
-		}
-
-		for (group = 0; group < MAX_CHNL_GROUP_24G-1; group++) {
-			pwrInfo24G->IndexBW40_Base[rfPath][group] =	PROMContent[eeAddr++];
-			if (pwrInfo24G->IndexBW40_Base[rfPath][group] == 0xFF)
-				pwrInfo24G->IndexBW40_Base[rfPath][group] =	EEPROM_DEFAULT_24G_INDEX;
-		}
-
-		for (TxCount = 0; TxCount < MAX_TX_COUNT; TxCount++) {
-			if (TxCount == 0) {
-				pwrInfo24G->BW40_Diff[rfPath][TxCount] = 0;
-				if (PROMContent[eeAddr] == 0xFF)
-					pwrInfo24G->BW20_Diff[rfPath][TxCount] =	EEPROM_DEFAULT_24G_HT20_DIFF;
-				else {
-					pwrInfo24G->BW20_Diff[rfPath][TxCount] =	(PROMContent[eeAddr]&0xf0)>>4;
-					if (pwrInfo24G->BW20_Diff[rfPath][TxCount] & BIT(3))		/* 4bit sign number to 8 bit sign number */
-						pwrInfo24G->BW20_Diff[rfPath][TxCount] |= 0xF0;
-				}
-
-				if (PROMContent[eeAddr] == 0xFF)
-					pwrInfo24G->OFDM_Diff[rfPath][TxCount] = EEPROM_DEFAULT_24G_OFDM_DIFF;
-				else {
-					pwrInfo24G->OFDM_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f);
-					if (pwrInfo24G->OFDM_Diff[rfPath][TxCount] & BIT(3))		/* 4bit sign number to 8 bit sign number */
-						pwrInfo24G->OFDM_Diff[rfPath][TxCount] |= 0xF0;
-				}
-				pwrInfo24G->CCK_Diff[rfPath][TxCount] = 0;
-				eeAddr++;
-			} else {
-				if (PROMContent[eeAddr] == 0xFF)
-					pwrInfo24G->BW40_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF;
-				else {
-					pwrInfo24G->BW40_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4;
-					if (pwrInfo24G->BW40_Diff[rfPath][TxCount] & BIT(3))		/* 4bit sign number to 8 bit sign number */
-						pwrInfo24G->BW40_Diff[rfPath][TxCount] |= 0xF0;
-				}
-
-				if (PROMContent[eeAddr] == 0xFF)
-					pwrInfo24G->BW20_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF;
-				else {
-					pwrInfo24G->BW20_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f);
-					if (pwrInfo24G->BW20_Diff[rfPath][TxCount] & BIT(3))		/* 4bit sign number to 8 bit sign number */
-						pwrInfo24G->BW20_Diff[rfPath][TxCount] |= 0xF0;
-				}
-				eeAddr++;
-
-				if (PROMContent[eeAddr] == 0xFF)
-					pwrInfo24G->OFDM_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF;
-				else {
-					pwrInfo24G->OFDM_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4;
-					if (pwrInfo24G->OFDM_Diff[rfPath][TxCount] & BIT(3))		/* 4bit sign number to 8 bit sign number */
-						pwrInfo24G->OFDM_Diff[rfPath][TxCount] |= 0xF0;
-				}
-
-				if (PROMContent[eeAddr] == 0xFF)
-					pwrInfo24G->CCK_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF;
-				else {
-					pwrInfo24G->CCK_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f);
-					if (pwrInfo24G->CCK_Diff[rfPath][TxCount] & BIT(3))		/* 4bit sign number to 8 bit sign number */
-						pwrInfo24G->CCK_Diff[rfPath][TxCount] |= 0xF0;
-				}
-				eeAddr++;
-			}
-		}
-	}
-}
-
-void Hal_EfuseParseTxPowerInfo_8723B(
-	struct adapter *padapter, u8 *PROMContent, bool AutoLoadFail
-)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-	struct TxPowerInfo24G	pwrInfo24G;
-	u8	rfPath, ch, TxCount = 1;
-
-	Hal_ReadPowerValueFromPROM_8723B(padapter, &pwrInfo24G, PROMContent, AutoLoadFail);
-	for (rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) {
-		for (ch = 0 ; ch < CHANNEL_MAX_NUMBER; ch++) {
-			u8 group = 0;
-
-			hal_get_chnl_group_8723b(ch + 1, &group);
-
-			if (ch == 14-1) {
-				pHalData->Index24G_CCK_Base[rfPath][ch] = pwrInfo24G.IndexCCK_Base[rfPath][5];
-				pHalData->Index24G_BW40_Base[rfPath][ch] = pwrInfo24G.IndexBW40_Base[rfPath][group];
-			} else {
-				pHalData->Index24G_CCK_Base[rfPath][ch] = pwrInfo24G.IndexCCK_Base[rfPath][group];
-				pHalData->Index24G_BW40_Base[rfPath][ch] = pwrInfo24G.IndexBW40_Base[rfPath][group];
-			}
-		}
-
-		for (TxCount = 0; TxCount < MAX_TX_COUNT; TxCount++) {
-			pHalData->OFDM_24G_Diff[rfPath][TxCount] = pwrInfo24G.OFDM_Diff[rfPath][TxCount];
-			pHalData->BW20_24G_Diff[rfPath][TxCount] = pwrInfo24G.BW20_Diff[rfPath][TxCount];
-			pHalData->BW40_24G_Diff[rfPath][TxCount] = pwrInfo24G.BW40_Diff[rfPath][TxCount];
-		}
-	}
-
-	/*  2010/10/19 MH Add Regulator recognize for CU. */
-	if (!AutoLoadFail) {
-		pHalData->EEPROMRegulatory = (PROMContent[EEPROM_RF_BOARD_OPTION_8723B]&0x7);	/* bit0~2 */
-		if (PROMContent[EEPROM_RF_BOARD_OPTION_8723B] == 0xFF)
-			pHalData->EEPROMRegulatory = (EEPROM_DEFAULT_BOARD_OPTION&0x7);	/* bit0~2 */
-	} else
-		pHalData->EEPROMRegulatory = 0;
-}
-
-void Hal_EfuseParseBTCoexistInfo_8723B(
-	struct adapter *padapter, u8 *hwinfo, bool AutoLoadFail
-)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	u8 tempval;
-	u32 tmpu4;
-
-	if (!AutoLoadFail) {
-		tmpu4 = rtw_read32(padapter, REG_MULTI_FUNC_CTRL);
-		if (tmpu4 & BT_FUNC_EN)
-			pHalData->EEPROMBluetoothCoexist = true;
-		else
-			pHalData->EEPROMBluetoothCoexist = false;
-
-		tempval = hwinfo[EEPROM_RF_BT_SETTING_8723B];
-		if (tempval != 0xFF) {
-			pHalData->EEPROMBluetoothAntNum = tempval & BIT(0);
-			/*  EFUSE_0xC3[6] == 0, S1(Main)-RF_PATH_A; */
-			/*  EFUSE_0xC3[6] == 1, S0(Aux)-RF_PATH_B */
-			if (tempval & BIT(6))
-				pHalData->ant_path = RF_PATH_B;
-			else
-				pHalData->ant_path = RF_PATH_A;
-		} else {
-			pHalData->EEPROMBluetoothAntNum = Ant_x1;
-			if (pHalData->PackageType == PACKAGE_QFN68)
-				pHalData->ant_path = RF_PATH_B;
-			else
-				pHalData->ant_path = RF_PATH_A;
-		}
-	} else {
-		pHalData->EEPROMBluetoothCoexist = false;
-		pHalData->EEPROMBluetoothAntNum = Ant_x1;
-		pHalData->ant_path = RF_PATH_A;
-	}
-
-	if (padapter->registrypriv.ant_num > 0) {
-		switch (padapter->registrypriv.ant_num) {
-		case 1:
-			pHalData->EEPROMBluetoothAntNum = Ant_x1;
-			break;
-		case 2:
-			pHalData->EEPROMBluetoothAntNum = Ant_x2;
-			break;
-		default:
-			break;
-		}
-	}
-
-	hal_btcoex_SetBTCoexist(padapter, pHalData->EEPROMBluetoothCoexist);
-	hal_btcoex_SetPgAntNum(padapter, pHalData->EEPROMBluetoothAntNum == Ant_x2 ? 2 : 1);
-	if (pHalData->EEPROMBluetoothAntNum == Ant_x1)
-		hal_btcoex_SetSingleAntPath(padapter, pHalData->ant_path);
-}
-
-void Hal_EfuseParsePackageType_8723B(
-	struct adapter *padapter, u8 *hwinfo, bool AutoLoadFail
-)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	u8 package;
-	u8 efuseContent;
-
-	Hal_EfusePowerSwitch(padapter, true);
-	rtw_efuse_one_byte_read(padapter, 0x1FB, &efuseContent);
-	Hal_EfusePowerSwitch(padapter, false);
-
-	package = efuseContent & 0x7;
-	switch (package) {
-	case 0x4:
-		pHalData->PackageType = PACKAGE_TFBGA79;
-		break;
-	case 0x5:
-		pHalData->PackageType = PACKAGE_TFBGA90;
-		break;
-	case 0x6:
-		pHalData->PackageType = PACKAGE_QFN68;
-		break;
-	case 0x7:
-		pHalData->PackageType = PACKAGE_TFBGA80;
-		break;
-
-	default:
-		pHalData->PackageType = PACKAGE_DEFAULT;
-		break;
-	}
-}
-
-void Hal_EfuseParseVoltage_8723B(
-	struct adapter *padapter, u8 *hwinfo, bool AutoLoadFail
-)
-{
-	struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
-
-	/* memcpy(pEEPROM->adjuseVoltageVal, &hwinfo[EEPROM_Voltage_ADDR_8723B], 1); */
-	pEEPROM->adjuseVoltageVal = (hwinfo[EEPROM_Voltage_ADDR_8723B] & 0xf0) >> 4;
-}
-
-void Hal_EfuseParseChnlPlan_8723B(
-	struct adapter *padapter, u8 *hwinfo, bool AutoLoadFail
-)
-{
-	padapter->mlmepriv.ChannelPlan = hal_com_config_channel_plan(
-		padapter,
-		hwinfo ? hwinfo[EEPROM_ChannelPlan_8723B] : 0xFF,
-		padapter->registrypriv.channel_plan,
-		RT_CHANNEL_DOMAIN_WORLD_NULL,
-		AutoLoadFail
-	);
-
-	Hal_ChannelPlanToRegulation(padapter, padapter->mlmepriv.ChannelPlan);
-}
-
-void Hal_EfuseParseXtal_8723B(
-	struct adapter *padapter, u8 *hwinfo, bool AutoLoadFail
-)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(padapter);
-
-	if (!AutoLoadFail) {
-		pHalData->CrystalCap = hwinfo[EEPROM_XTAL_8723B];
-		if (pHalData->CrystalCap == 0xFF)
-			pHalData->CrystalCap = EEPROM_Default_CrystalCap_8723B;	   /* what value should 8812 set? */
-	} else
-		pHalData->CrystalCap = EEPROM_Default_CrystalCap_8723B;
-}
-
-void Hal_EfuseParseThermalMeter_8723B(
-	struct adapter *padapter, u8 *PROMContent, u8 AutoLoadFail
-)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-
-	/*  */
-	/*  ThermalMeter from EEPROM */
-	/*  */
-	if (!AutoLoadFail)
-		pHalData->EEPROMThermalMeter = PROMContent[EEPROM_THERMAL_METER_8723B];
-	else
-		pHalData->EEPROMThermalMeter = EEPROM_Default_ThermalMeter_8723B;
-
-	if ((pHalData->EEPROMThermalMeter == 0xff) || AutoLoadFail)
-		pHalData->EEPROMThermalMeter = EEPROM_Default_ThermalMeter_8723B;
-}
-
-void Hal_ReadRFGainOffset(
-	struct adapter *Adapter, u8 *PROMContent, bool AutoloadFail
-)
-{
-	/*  */
-	/*  BB_RF Gain Offset from EEPROM */
-	/*  */
-
-	if (!AutoloadFail) {
-		Adapter->eeprompriv.EEPROMRFGainOffset = PROMContent[EEPROM_RF_GAIN_OFFSET];
-		Adapter->eeprompriv.EEPROMRFGainVal = rtw_efuse_read_1_byte(Adapter,
-									    EEPROM_RF_GAIN_VAL);
-	} else {
-		Adapter->eeprompriv.EEPROMRFGainOffset = 0;
-		Adapter->eeprompriv.EEPROMRFGainVal = 0xFF;
-	}
-}
-
-u8 BWMapping_8723B(struct adapter *Adapter, struct pkt_attrib *pattrib)
-{
-	u8 BWSettingOfDesc = 0;
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	if (pHalData->CurrentChannelBW == CHANNEL_WIDTH_40) {
-		if (pattrib->bwmode == CHANNEL_WIDTH_40)
-			BWSettingOfDesc = 1;
-		else
-			BWSettingOfDesc = 0;
-	} else
-		BWSettingOfDesc = 0;
-
-	/* if (pTcb->bBTTxPacket) */
-	/* 	BWSettingOfDesc = 0; */
-
-	return BWSettingOfDesc;
-}
-
-u8 SCMapping_8723B(struct adapter *Adapter, struct pkt_attrib *pattrib)
-{
-	u8 SCSettingOfDesc = 0;
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	if (pHalData->CurrentChannelBW == CHANNEL_WIDTH_40) {
-		if (pattrib->bwmode == CHANNEL_WIDTH_40) {
-			SCSettingOfDesc = HT_DATA_SC_DONOT_CARE;
-		} else if (pattrib->bwmode == CHANNEL_WIDTH_20) {
-			if (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) {
-				SCSettingOfDesc = HT_DATA_SC_20_UPPER_OF_40MHZ;
-			} else if (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) {
-				SCSettingOfDesc = HT_DATA_SC_20_LOWER_OF_40MHZ;
-			} else {
-				SCSettingOfDesc = HT_DATA_SC_DONOT_CARE;
-			}
-		}
-	} else {
-		SCSettingOfDesc = HT_DATA_SC_DONOT_CARE;
-	}
-
-	return SCSettingOfDesc;
-}
-
-static void rtl8723b_cal_txdesc_chksum(struct tx_desc *ptxdesc)
-{
-	u16 *usPtr = (u16 *)ptxdesc;
-	u32 count;
-	u32 index;
-	u16 checksum = 0;
-
-	/*  Clear first */
-	ptxdesc->txdw7 &= cpu_to_le32(0xffff0000);
-
-	/*  checksum is always calculated by first 32 bytes, */
-	/*  and it doesn't depend on TX DESC length. */
-	/*  Thomas, Lucas@SD4, 20130515 */
-	count = 16;
-
-	for (index = 0; index < count; index++)
-		checksum |= le16_to_cpu(*(__le16 *)(usPtr + index));
-
-	ptxdesc->txdw7 |= cpu_to_le32(checksum & 0x0000ffff);
-}
-
-static u8 fill_txdesc_sectype(struct pkt_attrib *pattrib)
-{
-	u8 sectype = 0;
-
-	if ((pattrib->encrypt > 0) && !pattrib->bswenc) {
-		switch (pattrib->encrypt) {
-		/*  SEC_TYPE */
-		case _WEP40_:
-		case _WEP104_:
-		case _TKIP_:
-		case _TKIP_WTMIC_:
-			sectype = 1;
-			break;
-
-		case _AES_:
-			sectype = 3;
-			break;
-
-		case _NO_PRIVACY_:
-		default:
-			break;
-		}
-	}
-	return sectype;
-}
-
-static void fill_txdesc_vcs_8723b(struct adapter *padapter, struct pkt_attrib *pattrib, struct txdesc_8723b *ptxdesc)
-{
-	if (pattrib->vcs_mode) {
-		switch (pattrib->vcs_mode) {
-		case RTS_CTS:
-			ptxdesc->rtsen = 1;
-			/*  ENABLE HW RTS */
-			ptxdesc->hw_rts_en = 1;
-			break;
-
-		case CTS_TO_SELF:
-			ptxdesc->cts2self = 1;
-			break;
-
-		case NONE_VCS:
-		default:
-			break;
-		}
-
-		ptxdesc->rtsrate = 8; /*  RTS Rate =24M */
-		ptxdesc->rts_ratefb_lmt = 0xF;
-
-		if (padapter->mlmeextpriv.mlmext_info.preamble_mode == PREAMBLE_SHORT)
-			ptxdesc->rts_short = 1;
-
-		/*  Set RTS BW */
-		if (pattrib->ht_en)
-			ptxdesc->rts_sc = SCMapping_8723B(padapter, pattrib);
-	}
-}
-
-static void fill_txdesc_phy_8723b(struct adapter *padapter, struct pkt_attrib *pattrib, struct txdesc_8723b *ptxdesc)
-{
-	if (pattrib->ht_en) {
-		ptxdesc->data_bw = BWMapping_8723B(padapter, pattrib);
-
-		ptxdesc->data_sc = SCMapping_8723B(padapter, pattrib);
-	}
-}
-
-static void rtl8723b_fill_default_txdesc(
-	struct xmit_frame *pxmitframe, u8 *pbuf
-)
-{
-	struct adapter *padapter;
-	struct hal_com_data *pHalData;
-	struct mlme_ext_priv *pmlmeext;
-	struct mlme_ext_info *pmlmeinfo;
-	struct pkt_attrib *pattrib;
-	struct txdesc_8723b *ptxdesc;
-	s32 bmcst;
-
-	memset(pbuf, 0, TXDESC_SIZE);
-
-	padapter = pxmitframe->padapter;
-	pHalData = GET_HAL_DATA(padapter);
-	pmlmeext = &padapter->mlmeextpriv;
-	pmlmeinfo = &(pmlmeext->mlmext_info);
-
-	pattrib = &pxmitframe->attrib;
-	bmcst = is_multicast_ether_addr(pattrib->ra);
-
-	ptxdesc = (struct txdesc_8723b *)pbuf;
-
-	if (pxmitframe->frame_tag == DATA_FRAMETAG) {
-		u8 drv_userate = 0;
-
-		ptxdesc->macid = pattrib->mac_id; /*  CAM_ID(MAC_ID) */
-		ptxdesc->rate_id = pattrib->raid;
-		ptxdesc->qsel = pattrib->qsel;
-		ptxdesc->seq = pattrib->seqnum;
-
-		ptxdesc->sectype = fill_txdesc_sectype(pattrib);
-		fill_txdesc_vcs_8723b(padapter, pattrib, ptxdesc);
-
-		if (pattrib->icmp_pkt == 1 && padapter->registrypriv.wifi_spec == 1)
-			drv_userate = 1;
-
-		if (
-			(pattrib->ether_type != 0x888e) &&
-			(pattrib->ether_type != 0x0806) &&
-			(pattrib->ether_type != 0x88B4) &&
-			(pattrib->dhcp_pkt != 1) &&
-			(drv_userate != 1)
-		) {
-			/*  Non EAP & ARP & DHCP type data packet */
-
-			if (pattrib->ampdu_en) {
-				ptxdesc->agg_en = 1; /*  AGG EN */
-				ptxdesc->max_agg_num = 0x1f;
-				ptxdesc->ampdu_density = pattrib->ampdu_spacing;
-			} else
-				ptxdesc->bk = 1; /*  AGG BK */
-
-			fill_txdesc_phy_8723b(padapter, pattrib, ptxdesc);
-
-			ptxdesc->data_ratefb_lmt = 0x1F;
-
-			if (!pHalData->fw_ractrl) {
-				ptxdesc->userate = 1;
-
-				if (pHalData->dmpriv.INIDATA_RATE[pattrib->mac_id] & BIT(7))
-					ptxdesc->data_short = 1;
-
-				ptxdesc->datarate = pHalData->dmpriv.INIDATA_RATE[pattrib->mac_id] & 0x7F;
-			}
-
-			if (padapter->fix_rate != 0xFF) { /*  modify data rate by iwpriv */
-				ptxdesc->userate = 1;
-				if (padapter->fix_rate & BIT(7))
-					ptxdesc->data_short = 1;
-
-				ptxdesc->datarate = (padapter->fix_rate & 0x7F);
-				ptxdesc->disdatafb = 1;
-			}
-
-			if (pattrib->ldpc)
-				ptxdesc->data_ldpc = 1;
-			if (pattrib->stbc)
-				ptxdesc->data_stbc = 1;
-		} 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. */
-
-			ptxdesc->bk = 1; /*  AGG BK */
-			ptxdesc->userate = 1; /*  driver uses rate */
-			if (pmlmeinfo->preamble_mode == PREAMBLE_SHORT)
-				ptxdesc->data_short = 1;/*  DATA_SHORT */
-			ptxdesc->datarate = MRateToHwRate(pmlmeext->tx_rate);
-		}
-
-		ptxdesc->usb_txagg_num = pxmitframe->agg_num;
-	} else if (pxmitframe->frame_tag == MGNT_FRAMETAG) {
-		ptxdesc->macid = pattrib->mac_id; /*  CAM_ID(MAC_ID) */
-		ptxdesc->qsel = pattrib->qsel;
-		ptxdesc->rate_id = pattrib->raid; /*  Rate ID */
-		ptxdesc->seq = pattrib->seqnum;
-		ptxdesc->userate = 1; /*  driver uses rate, 1M */
-
-		ptxdesc->mbssid = pattrib->mbssid & 0xF;
-
-		ptxdesc->rty_lmt_en = 1; /*  retry limit enable */
-		if (pattrib->retry_ctrl) {
-			ptxdesc->data_rt_lmt = 6;
-		} else {
-			ptxdesc->data_rt_lmt = 12;
-		}
-
-		ptxdesc->datarate = MRateToHwRate(pmlmeext->tx_rate);
-
-		/*  CCX-TXRPT ack for xmit mgmt frames. */
-		if (pxmitframe->ack_report) {
-			ptxdesc->spe_rpt = 1;
-			ptxdesc->sw_define = (u8)(GET_PRIMARY_ADAPTER(padapter)->xmitpriv.seq_no);
-		}
-	} else {
-		ptxdesc->macid = pattrib->mac_id; /*  CAM_ID(MAC_ID) */
-		ptxdesc->rate_id = pattrib->raid; /*  Rate ID */
-		ptxdesc->qsel = pattrib->qsel;
-		ptxdesc->seq = pattrib->seqnum;
-		ptxdesc->userate = 1; /*  driver uses rate */
-		ptxdesc->datarate = MRateToHwRate(pmlmeext->tx_rate);
-	}
-
-	ptxdesc->pktlen = pattrib->last_txcmdsz;
-	ptxdesc->offset = TXDESC_SIZE + OFFSET_SZ;
-
-	if (bmcst)
-		ptxdesc->bmc = 1;
-
-	/* 2009.11.05. tynli_test. Suggested by SD4 Filen for FW LPS.
-	 * (1) The sequence number of each non-Qos frame / broadcast /
-	 * multicast / mgnt frame should be controlled by Hw because Fw
-	 * will also send null data which we cannot control when Fw LPS
-	 * enable.
-	 * --> default enable non-Qos data sequence number. 2010.06.23.
-	 * by tynli.
-	 * (2) Enable HW SEQ control for beacon packet, because we use
-	 * Hw beacon.
-	 * (3) Use HW Qos SEQ to control the seq num of Ext port non-Qos
-	 * packets.
-	 * 2010.06.23. Added by tynli.
-	 */
-	if (!pattrib->qos_en) /*  Hw set sequence number */
-		ptxdesc->en_hwseq = 1; /*  HWSEQ_EN */
-}
-
-/* Description:
- *
- * Parameters:
- *	pxmitframe	xmitframe
- *	pbuf		where to fill tx desc
- */
-void rtl8723b_update_txdesc(struct xmit_frame *pxmitframe, u8 *pbuf)
-{
-	struct tx_desc *pdesc;
-
-	rtl8723b_fill_default_txdesc(pxmitframe, pbuf);
-	pdesc = (struct tx_desc *)pbuf;
-	rtl8723b_cal_txdesc_chksum(pdesc);
-}
-
-/*  */
-/*  Description: In normal chip, we should send some packet to Hw which will be used by Fw */
-/*			in FW LPS mode. The function is to fill the Tx descriptor of this packets, then */
-/*			Fw can tell Hw to send these packet derectly. */
-/*  Added by tynli. 2009.10.15. */
-/*  */
-/* type1:pspoll, type2:null */
-void rtl8723b_fill_fake_txdesc(
-	struct adapter *padapter,
-	u8 *pDesc,
-	u32 BufferLen,
-	u8 IsPsPoll,
-	u8 IsBTQosNull,
-	u8 bDataFrame
-)
-{
-	/*  Clear all status */
-	memset(pDesc, 0, TXDESC_SIZE);
-
-	SET_TX_DESC_FIRST_SEG_8723B(pDesc, 1); /* bFirstSeg; */
-	SET_TX_DESC_LAST_SEG_8723B(pDesc, 1); /* bLastSeg; */
-
-	SET_TX_DESC_OFFSET_8723B(pDesc, 0x28); /*  Offset = 32 */
-
-	SET_TX_DESC_PKT_SIZE_8723B(pDesc, BufferLen); /*  Buffer size + command header */
-	SET_TX_DESC_QUEUE_SEL_8723B(pDesc, QSLT_MGNT); /*  Fixed queue of Mgnt queue */
-
-	/*  Set NAVUSEHDR to prevent Ps-poll AId filed to be changed to error value by Hw. */
-	if (IsPsPoll) {
-		SET_TX_DESC_NAV_USE_HDR_8723B(pDesc, 1);
-	} else {
-		SET_TX_DESC_HWSEQ_EN_8723B(pDesc, 1); /*  Hw set sequence number */
-		SET_TX_DESC_HWSEQ_SEL_8723B(pDesc, 0);
-	}
-
-	if (IsBTQosNull)
-		SET_TX_DESC_BT_INT_8723B(pDesc, 1);
-
-	SET_TX_DESC_USE_RATE_8723B(pDesc, 1); /*  use data rate which is set by Sw */
-	SET_TX_DESC_OWN_8723B((u8 *)pDesc, 1);
-
-	SET_TX_DESC_TX_RATE_8723B(pDesc, DESC8723B_RATE1M);
-
-	/*  */
-	/*  Encrypt the data frame if under security mode excepct null data. Suggested by CCW. */
-	/*  */
-	if (bDataFrame) {
-		u32 EncAlg = padapter->securitypriv.dot11_privacy_algrthm;
-
-		switch (EncAlg) {
-		case _NO_PRIVACY_:
-			SET_TX_DESC_SEC_TYPE_8723B(pDesc, 0x0);
-			break;
-		case _WEP40_:
-		case _WEP104_:
-		case _TKIP_:
-			SET_TX_DESC_SEC_TYPE_8723B(pDesc, 0x1);
-			break;
-		case _SMS4_:
-			SET_TX_DESC_SEC_TYPE_8723B(pDesc, 0x2);
-			break;
-		case _AES_:
-			SET_TX_DESC_SEC_TYPE_8723B(pDesc, 0x3);
-			break;
-		default:
-			SET_TX_DESC_SEC_TYPE_8723B(pDesc, 0x0);
-			break;
-		}
-	}
-
-	/*  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.). */
-	rtl8723b_cal_txdesc_chksum((struct tx_desc *)pDesc);
-}
-
-static void hw_var_set_opmode(struct adapter *padapter, u8 variable, u8 *val)
-{
-	u8 val8;
-	u8 mode = *((u8 *)val);
-
-	{
-		/*  disable Port0 TSF update */
-		val8 = rtw_read8(padapter, REG_BCN_CTRL);
-		val8 |= DIS_TSF_UDT;
-		rtw_write8(padapter, REG_BCN_CTRL, val8);
-
-		/*  set net_type */
-		set_msr(padapter, mode);
-
-		if ((mode == _HW_STATE_STATION_) || (mode == _HW_STATE_NOLINK_)) {
-			{
-				StopTxBeacon(padapter);
-			}
-
-			/*  disable atim wnd */
-			rtw_write8(padapter, REG_BCN_CTRL, DIS_TSF_UDT|EN_BCN_FUNCTION|DIS_ATIM);
-			/* rtw_write8(padapter, REG_BCN_CTRL, 0x18); */
-		} else if (mode == _HW_STATE_ADHOC_) {
-			ResumeTxBeacon(padapter);
-			rtw_write8(padapter, REG_BCN_CTRL, DIS_TSF_UDT|EN_BCN_FUNCTION|DIS_BCNQ_SUB);
-		} else if (mode == _HW_STATE_AP_) {
-
-			ResumeTxBeacon(padapter);
-
-			rtw_write8(padapter, REG_BCN_CTRL, DIS_TSF_UDT|DIS_BCNQ_SUB);
-
-			/* Set RCR */
-			rtw_write32(padapter, REG_RCR, 0x7000208e);/* CBSSID_DATA must set to 0, reject ICV_ERR packet */
-			/* enable to rx data frame */
-			rtw_write16(padapter, REG_RXFLTMAP2, 0xFFFF);
-			/* enable to rx ps-poll */
-			rtw_write16(padapter, REG_RXFLTMAP1, 0x0400);
-
-			/* Beacon Control related register for first time */
-			rtw_write8(padapter, REG_BCNDMATIM, 0x02); /*  2ms */
-
-			/* rtw_write8(padapter, REG_BCN_MAX_ERR, 0xFF); */
-			rtw_write8(padapter, REG_ATIMWND, 0x0a); /*  10ms */
-			rtw_write16(padapter, REG_BCNTCFG, 0x00);
-			rtw_write16(padapter, REG_TBTT_PROHIBIT, 0xff04);
-			rtw_write16(padapter, REG_TSFTR_SYN_OFFSET, 0x7fff);/*  +32767 (~32ms) */
-
-			/* reset TSF */
-			rtw_write8(padapter, REG_DUAL_TSF_RST, BIT(0));
-
-			/* enable BCN0 Function for if1 */
-			/* don't enable update TSF0 for if1 (due to TSF update when beacon/probe rsp are received) */
-			rtw_write8(padapter, REG_BCN_CTRL, (DIS_TSF_UDT|EN_BCN_FUNCTION|EN_TXBCN_RPT|DIS_BCNQ_SUB));
-
-			/* SW_BCN_SEL - Port0 */
-			/* rtw_write8(Adapter, REG_DWBCN1_CTRL_8192E+2, rtw_read8(Adapter, REG_DWBCN1_CTRL_8192E+2) & ~BIT4); */
-			rtw_hal_set_hwreg(padapter, HW_VAR_DL_BCN_SEL, NULL);
-
-			/*  select BCN on port 0 */
-			rtw_write8(
-				padapter,
-				REG_CCK_CHECK_8723B,
-				(rtw_read8(padapter, REG_CCK_CHECK_8723B)&~BIT_BCN_PORT_SEL)
-			);
-
-			/*  dis BCN1 ATIM  WND if if2 is station */
-			val8 = rtw_read8(padapter, REG_BCN_CTRL_1);
-			val8 |= DIS_ATIM;
-			rtw_write8(padapter, REG_BCN_CTRL_1, val8);
-		}
-	}
-}
-
-static void hw_var_set_macaddr(struct adapter *padapter, u8 variable, u8 *val)
-{
-	u8 idx = 0;
-	u32 reg_macid = REG_MACID;
-
-	for (idx = 0 ; idx < 6; idx++)
-		rtw_write8(GET_PRIMARY_ADAPTER(padapter), (reg_macid+idx), val[idx]);
-}
-
-static void hw_var_set_bssid(struct adapter *padapter, u8 variable, u8 *val)
-{
-	u8 idx = 0;
-	u32 reg_bssid = REG_BSSID;
-
-	for (idx = 0 ; idx < 6; idx++)
-		rtw_write8(padapter, (reg_bssid+idx), val[idx]);
-}
-
-static void hw_var_set_bcn_func(struct adapter *padapter, u8 variable, u8 *val)
-{
-	u32 bcn_ctrl_reg = REG_BCN_CTRL;
-
-	if (*(u8 *)val)
-		rtw_write8(padapter, bcn_ctrl_reg, (EN_BCN_FUNCTION | EN_TXBCN_RPT));
-	else {
-		u8 val8;
-
-		val8 = rtw_read8(padapter, bcn_ctrl_reg);
-		val8 &= ~(EN_BCN_FUNCTION | EN_TXBCN_RPT);
-
-		/*  Always enable port0 beacon function for PSTDMA */
-		if (bcn_ctrl_reg == REG_BCN_CTRL)
-			val8 |= EN_BCN_FUNCTION;
-
-		rtw_write8(padapter, bcn_ctrl_reg, val8);
-	}
-}
-
-static void hw_var_set_correct_tsf(struct adapter *padapter, u8 variable, u8 *val)
-{
-	u8 val8;
-	u64 tsf;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-
-	tsf = pmlmeext->TSFValue-do_div(pmlmeext->TSFValue, (pmlmeinfo->bcn_interval*1024))-1024; /* us */
-
-	if (
-		((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) ||
-		((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)
-	)
-		StopTxBeacon(padapter);
-
-	{
-		/*  disable related TSF function */
-		val8 = rtw_read8(padapter, REG_BCN_CTRL);
-		val8 &= ~EN_BCN_FUNCTION;
-		rtw_write8(padapter, REG_BCN_CTRL, val8);
-
-		rtw_write32(padapter, REG_TSFTR, tsf);
-		rtw_write32(padapter, REG_TSFTR+4, tsf>>32);
-
-		/*  enable related TSF function */
-		val8 = rtw_read8(padapter, REG_BCN_CTRL);
-		val8 |= EN_BCN_FUNCTION;
-		rtw_write8(padapter, REG_BCN_CTRL, val8);
-	}
-
-	if (
-		((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) ||
-		((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)
-	)
-		ResumeTxBeacon(padapter);
-}
-
-static void hw_var_set_mlme_disconnect(struct adapter *padapter, u8 variable, u8 *val)
-{
-	u8 val8;
-
-	/*  Set RCR to not to receive data frame when NO LINK state */
-	/* rtw_write32(padapter, REG_RCR, rtw_read32(padapter, REG_RCR) & ~RCR_ADF); */
-	/*  reject all data frames */
-	rtw_write16(padapter, REG_RXFLTMAP2, 0);
-
-	/*  reset TSF */
-	rtw_write8(padapter, REG_DUAL_TSF_RST, BIT(0));
-
-	/*  disable update TSF */
-	val8 = rtw_read8(padapter, REG_BCN_CTRL);
-	val8 |= DIS_TSF_UDT;
-	rtw_write8(padapter, REG_BCN_CTRL, val8);
-}
-
-static void hw_var_set_mlme_sitesurvey(struct adapter *padapter, u8 variable, u8 *val)
-{
-	u32 value_rcr, rcr_clear_bit, reg_bcn_ctl;
-	u16 value_rxfltmap2;
-	u8 val8;
-	struct hal_com_data *pHalData;
-	struct mlme_priv *pmlmepriv;
-
-	pHalData = GET_HAL_DATA(padapter);
-	pmlmepriv = &padapter->mlmepriv;
-
-	reg_bcn_ctl = REG_BCN_CTRL;
-
-	rcr_clear_bit = RCR_CBSSID_BCN;
-
-	/*  config RCR to receive different BSSID & not to receive data frame */
-	value_rxfltmap2 = 0;
-
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE))
-		rcr_clear_bit = RCR_CBSSID_BCN;
-
-	value_rcr = rtw_read32(padapter, REG_RCR);
-
-	if (*((u8 *)val)) {
-		/*  under sitesurvey */
-		value_rcr &= ~(rcr_clear_bit);
-		rtw_write32(padapter, REG_RCR, value_rcr);
-
-		rtw_write16(padapter, REG_RXFLTMAP2, value_rxfltmap2);
-
-		if (check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE | WIFI_ADHOC_MASTER_STATE)) {
-			/*  disable update TSF */
-			val8 = rtw_read8(padapter, reg_bcn_ctl);
-			val8 |= DIS_TSF_UDT;
-			rtw_write8(padapter, reg_bcn_ctl, val8);
-		}
-
-		/*  Save original RRSR setting. */
-		pHalData->RegRRSR = rtw_read16(padapter, REG_RRSR);
-	} else {
-		/*  sitesurvey done */
-		if (check_fwstate(pmlmepriv, (_FW_LINKED|WIFI_AP_STATE)))
-			/*  enable to rx data frame */
-			rtw_write16(padapter, REG_RXFLTMAP2, 0xFFFF);
-
-		if (check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE | WIFI_ADHOC_MASTER_STATE)) {
-			/*  enable update TSF */
-			val8 = rtw_read8(padapter, reg_bcn_ctl);
-			val8 &= ~DIS_TSF_UDT;
-			rtw_write8(padapter, reg_bcn_ctl, val8);
-		}
-
-		value_rcr |= rcr_clear_bit;
-		rtw_write32(padapter, REG_RCR, value_rcr);
-
-		/*  Restore original RRSR setting. */
-		rtw_write16(padapter, REG_RRSR, pHalData->RegRRSR);
-	}
-}
-
-static void hw_var_set_mlme_join(struct adapter *padapter, u8 variable, u8 *val)
-{
-	u8 val8;
-	u16 val16;
-	u32 val32;
-	u8 RetryLimit = 0x30;
-	u8 type = *(u8 *)val;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct eeprom_priv *pEEPROM;
-
-	pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
-
-	if (type == 0) { /*  prepare to join */
-		/* enable to rx data frame.Accept all data frame */
-		/* rtw_write32(padapter, REG_RCR, rtw_read32(padapter, REG_RCR)|RCR_ADF); */
-		rtw_write16(padapter, REG_RXFLTMAP2, 0xFFFF);
-
-		val32 = rtw_read32(padapter, REG_RCR);
-		if (padapter->in_cta_test)
-			val32 &= ~(RCR_CBSSID_DATA | RCR_CBSSID_BCN);/*  RCR_ADF */
-		else
-			val32 |= RCR_CBSSID_DATA|RCR_CBSSID_BCN;
-		rtw_write32(padapter, REG_RCR, val32);
-
-		if (check_fwstate(pmlmepriv, WIFI_STATION_STATE))
-			RetryLimit = (pEEPROM->CustomerID == RT_CID_CCX) ? 7 : 48;
-		else /*  Ad-hoc Mode */
-			RetryLimit = 0x7;
-	} else if (type == 1) /* joinbss_event call back when join res < 0 */
-		rtw_write16(padapter, REG_RXFLTMAP2, 0x00);
-	else if (type == 2) { /* sta add event call back */
-		/* enable update TSF */
-		val8 = rtw_read8(padapter, REG_BCN_CTRL);
-		val8 &= ~DIS_TSF_UDT;
-		rtw_write8(padapter, REG_BCN_CTRL, val8);
-
-		if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE))
-			RetryLimit = 0x7;
-	}
-
-	val16 = (RetryLimit << RETRY_LIMIT_SHORT_SHIFT) | (RetryLimit << RETRY_LIMIT_LONG_SHIFT);
-	rtw_write16(padapter, REG_RL, val16);
-}
-
-void CCX_FwC2HTxRpt_8723b(struct adapter *padapter, u8 *pdata, u8 len)
-{
-
-#define	GET_8723B_C2H_TX_RPT_LIFE_TIME_OVER(_Header)	LE_BITS_TO_1BYTE((_Header + 0), 6, 1)
-#define	GET_8723B_C2H_TX_RPT_RETRY_OVER(_Header)	LE_BITS_TO_1BYTE((_Header + 0), 7, 1)
-
-	if (GET_8723B_C2H_TX_RPT_RETRY_OVER(pdata) | GET_8723B_C2H_TX_RPT_LIFE_TIME_OVER(pdata))
-		rtw_ack_tx_done(&padapter->xmitpriv, RTW_SCTX_DONE_CCX_PKT_FAIL);
-
-/*
-	else if (seq_no != padapter->xmitpriv.seq_no) {
-		rtw_ack_tx_done(&padapter->xmitpriv, RTW_SCTX_DONE_CCX_PKT_FAIL);
-	}
-*/
-	else
-		rtw_ack_tx_done(&padapter->xmitpriv, RTW_SCTX_DONE_SUCCESS);
-}
-
-s32 c2h_id_filter_ccx_8723b(u8 *buf)
-{
-	struct c2h_evt_hdr_88xx *c2h_evt = (struct c2h_evt_hdr_88xx *)buf;
-	s32 ret = false;
-
-	if (c2h_evt->id == C2H_CCX_TX_RPT)
-		ret = true;
-
-	return ret;
-}
-
-s32 c2h_handler_8723b(struct adapter *padapter, u8 *buf)
-{
-	struct c2h_evt_hdr_88xx *pC2hEvent = (struct c2h_evt_hdr_88xx *)buf;
-	s32 ret = _SUCCESS;
-
-	if (!pC2hEvent) {
-		ret = _FAIL;
-		goto exit;
-	}
-
-	switch (pC2hEvent->id) {
-	case C2H_AP_RPT_RSP:
-		break;
-	case C2H_DBG:
-		{
-		}
-		break;
-
-	case C2H_CCX_TX_RPT:
-/* 			CCX_FwC2HTxRpt(padapter, QueueID, pC2hEvent->payload); */
-		break;
-
-	case C2H_EXT_RA_RPT:
-/* 			C2HExtRaRptHandler(padapter, pC2hEvent->payload, C2hEvent.CmdLen); */
-		break;
-
-	case C2H_HW_INFO_EXCH:
-		break;
-
-	case C2H_8723B_BT_INFO:
-		hal_btcoex_BtInfoNotify(padapter, pC2hEvent->plen, pC2hEvent->payload);
-		break;
-
-	default:
-		break;
-	}
-
-	/*  Clear event to notify FW we have read the command. */
-	/*  Note: */
-	/*	If this field isn't clear, the FW won't update the next command message. */
-/* 	rtw_write8(padapter, REG_C2HEVT_CLEAR, C2H_EVT_HOST_CLOSE); */
-exit:
-	return ret;
-}
-
-static void process_c2h_event(struct adapter *padapter, struct c2h_evt_hdr_t *pC2hEvent, u8 *c2hBuf)
-{
-	if (!c2hBuf)
-		return;
-
-	switch (pC2hEvent->CmdID) {
-	case C2H_AP_RPT_RSP:
-		break;
-	case C2H_DBG:
-		{
-		}
-		break;
-
-	case C2H_CCX_TX_RPT:
-/* 			CCX_FwC2HTxRpt(padapter, QueueID, tmpBuf); */
-		break;
-
-	case C2H_EXT_RA_RPT:
-/* 			C2HExtRaRptHandler(padapter, tmpBuf, C2hEvent.CmdLen); */
-		break;
-
-	case C2H_HW_INFO_EXCH:
-		break;
-
-	case C2H_8723B_BT_INFO:
-		hal_btcoex_BtInfoNotify(padapter, pC2hEvent->CmdLen, c2hBuf);
-		break;
-
-	default:
-		break;
-	}
-}
-
-void C2HPacketHandler_8723B(struct adapter *padapter, u8 *pbuffer, u16 length)
-{
-	struct c2h_evt_hdr_t	C2hEvent;
-	u8 *tmpBuf = NULL;
-
-	C2hEvent.CmdID = pbuffer[0];
-	C2hEvent.CmdSeq = pbuffer[1];
-	C2hEvent.CmdLen = length-2;
-	tmpBuf = pbuffer+2;
-
-	process_c2h_event(padapter, &C2hEvent, tmpBuf);
-	/* c2h_handler_8723b(padapter,&C2hEvent); */
-}
-
-void SetHwReg8723B(struct adapter *padapter, u8 variable, u8 *val)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	u8 val8;
-	u32 val32;
-
-	switch (variable) {
-	case HW_VAR_MEDIA_STATUS:
-		val8 = rtw_read8(padapter, MSR) & 0x0c;
-		val8 |= *val;
-		rtw_write8(padapter, MSR, val8);
-		break;
-
-	case HW_VAR_MEDIA_STATUS1:
-		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:
-	{
-		struct mlme_ext_info *mlmext_info = &padapter->mlmeextpriv.mlmext_info;
-		u16 BrateCfg = 0;
-		u16 rrsr_2g_force_mask = (RRSR_11M|RRSR_5_5M|RRSR_1M);
-		u16 rrsr_2g_allow_mask = (RRSR_24M|RRSR_12M|RRSR_6M|RRSR_CCK_RATES);
-
-		HalSetBrateCfg(padapter, val, &BrateCfg);
-
-		/* apply force and allow mask */
-		BrateCfg |= rrsr_2g_force_mask;
-		BrateCfg &= rrsr_2g_allow_mask;
-
-		/* IOT consideration */
-		if (mlmext_info->assoc_AP_vendor == HT_IOT_PEER_CISCO) {
-			/* if peer is cisco and didn't use ofdm rate, we enable 6M ack */
-			if ((BrateCfg & (RRSR_24M|RRSR_12M|RRSR_6M)) == 0)
-				BrateCfg |= RRSR_6M;
-		}
-
-		pHalData->BasicRateSet = BrateCfg;
-
-		/*  Set RRSR rate table. */
-		rtw_write16(padapter, REG_RRSR, BrateCfg);
-		rtw_write8(padapter, REG_RRSR+2, rtw_read8(padapter, REG_RRSR+2)&0xf0);
-	}
-		break;
-
-	case HW_VAR_TXPAUSE:
-		rtw_write8(padapter, REG_TXPAUSE, *val);
-		break;
-
-	case HW_VAR_BCN_FUNC:
-		hw_var_set_bcn_func(padapter, variable, val);
-		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);
-			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;
-
-	case HW_VAR_MLME_SITESURVEY:
-		hw_var_set_mlme_sitesurvey(padapter, variable,  val);
-
-		hal_btcoex_ScanNotify(padapter, *val?true:false);
-		break;
-
-	case HW_VAR_MLME_JOIN:
-		hw_var_set_mlme_join(padapter, variable, val);
-
-		switch (*val) {
-		case 0:
-			/*  prepare to join */
-			hal_btcoex_ConnectNotify(padapter, true);
-			break;
-		case 1:
-			/*  joinbss_event callback when join res < 0 */
-			hal_btcoex_ConnectNotify(padapter, false);
-			break;
-		case 2:
-			/*  sta add event callback */
-/* 				rtw_btcoex_MediaStatusNotify(padapter, RT_MEDIA_CONNECT); */
-			break;
-		}
-		break;
-
-	case HW_VAR_ON_RCR_AM:
-		val32 = rtw_read32(padapter, REG_RCR);
-		val32 |= RCR_AM;
-		rtw_write32(padapter, REG_RCR, val32);
-		break;
-
-	case HW_VAR_OFF_RCR_AM:
-		val32 = rtw_read32(padapter, REG_RCR);
-		val32 &= ~RCR_AM;
-		rtw_write32(padapter, REG_RCR, val32);
-		break;
-
-	case HW_VAR_BEACON_INTERVAL:
-		rtw_write16(padapter, REG_BCN_INTERVAL, *((u16 *)val));
-		break;
-
-	case HW_VAR_SLOT_TIME:
-		rtw_write8(padapter, REG_SLOT, *val);
-		break;
-
-	case HW_VAR_RESP_SIFS:
-		/* SIFS_Timer = 0x0a0a0808; */
-		/* RESP_SIFS for CCK */
-		rtw_write8(padapter, REG_RESP_SIFS_CCK, val[0]); /*  SIFS_T2T_CCK (0x08) */
-		rtw_write8(padapter, REG_RESP_SIFS_CCK+1, val[1]); /* SIFS_R2T_CCK(0x08) */
-		/* RESP_SIFS for OFDM */
-		rtw_write8(padapter, REG_RESP_SIFS_OFDM, val[2]); /* SIFS_T2T_OFDM (0x0a) */
-		rtw_write8(padapter, REG_RESP_SIFS_OFDM+1, val[3]); /* SIFS_R2T_OFDM(0x0a) */
-		break;
-
-	case HW_VAR_ACK_PREAMBLE:
-		{
-			u8 regTmp = 0;
-			u8 bShortPreamble = *val;
-
-			/*  Joseph marked out for Netgear 3500 TKIP channel 7 issue.(Temporarily) */
-			/* regTmp = (pHalData->nCur40MhzPrimeSC)<<5; */
-			if (bShortPreamble)
-				regTmp |= 0x80;
-			rtw_write8(padapter, REG_RRSR+2, regTmp);
-		}
-		break;
-
-	case HW_VAR_CAM_EMPTY_ENTRY:
-		{
-			u8 ucIndex = *val;
-			u8 i;
-			u32 ulCommand = 0;
-			u32 ulContent = 0;
-			u32 ulEncAlgo = CAM_AES;
-
-			for (i = 0; i < CAM_CONTENT_COUNT; i++) {
-				/*  filled id in CAM config 2 byte */
-				if (i == 0) {
-					ulContent |= (ucIndex & 0x03) | ((u16)(ulEncAlgo)<<2);
-					/* ulContent |= CAM_VALID; */
-				} else
-					ulContent = 0;
-
-				/*  polling bit, and No Write enable, and address */
-				ulCommand = CAM_CONTENT_COUNT*ucIndex+i;
-				ulCommand = ulCommand | CAM_POLLINIG | CAM_WRITE;
-				/*  write content 0 is equal to mark as invalid */
-				rtw_write32(padapter, WCAMI, ulContent);  /* mdelay(40); */
-				rtw_write32(padapter, RWCAM, ulCommand);  /* mdelay(40); */
-			}
-		}
-		break;
-
-	case HW_VAR_CAM_INVALID_ALL:
-		rtw_write32(padapter, RWCAM, BIT(31)|BIT(30));
-		break;
-
-	case HW_VAR_CAM_WRITE:
-		{
-			u32 cmd;
-			u32 *cam_val = (u32 *)val;
-
-			rtw_write32(padapter, WCAMI, cam_val[0]);
-
-			cmd = CAM_POLLINIG | CAM_WRITE | cam_val[1];
-			rtw_write32(padapter, RWCAM, cmd);
-		}
-		break;
-
-	case HW_VAR_AC_PARAM_VO:
-		rtw_write32(padapter, REG_EDCA_VO_PARAM, *((u32 *)val));
-		break;
-
-	case HW_VAR_AC_PARAM_VI:
-		rtw_write32(padapter, REG_EDCA_VI_PARAM, *((u32 *)val));
-		break;
-
-	case HW_VAR_AC_PARAM_BE:
-		pHalData->AcParam_BE = ((u32 *)(val))[0];
-		rtw_write32(padapter, REG_EDCA_BE_PARAM, *((u32 *)val));
-		break;
-
-	case HW_VAR_AC_PARAM_BK:
-		rtw_write32(padapter, REG_EDCA_BK_PARAM, *((u32 *)val));
-		break;
-
-	case HW_VAR_ACM_CTRL:
-		{
-			u8 ctrl = *((u8 *)val);
-			u8 hwctrl = 0;
-
-			if (ctrl != 0) {
-				hwctrl |= AcmHw_HwEn;
-
-				if (ctrl & BIT(1)) /*  BE */
-					hwctrl |= AcmHw_BeqEn;
-
-				if (ctrl & BIT(2)) /*  VI */
-					hwctrl |= AcmHw_ViqEn;
-
-				if (ctrl & BIT(3)) /*  VO */
-					hwctrl |= AcmHw_VoqEn;
-			}
-
-			rtw_write8(padapter, REG_ACMHWCTRL, hwctrl);
-		}
-		break;
-
-	case HW_VAR_AMPDU_FACTOR:
-		{
-			u32 AMPDULen =  (*((u8 *)val));
-
-			if (AMPDULen < HT_AGG_SIZE_32K)
-				AMPDULen = (0x2000 << (*((u8 *)val)))-1;
-			else
-				AMPDULen = 0x7fff;
-
-			rtw_write32(padapter, REG_AMPDU_MAX_LENGTH_8723B, AMPDULen);
-		}
-		break;
-
-	case HW_VAR_H2C_FW_PWRMODE:
-		{
-			u8 psmode = *val;
-
-			/*  Forece leave RF low power mode for 1T1R to prevent conficting setting in Fw power */
-			/*  saving sequence. 2010.06.07. Added by tynli. Suggested by SD3 yschang. */
-			if (psmode != PS_MODE_ACTIVE)
-				ODM_RF_Saving(&pHalData->odmpriv, true);
-
-			/* if (psmode != PS_MODE_ACTIVE)	{ */
-			/* 	rtl8723b_set_lowpwr_lps_cmd(padapter, true); */
-			/*  else { */
-			/* 	rtl8723b_set_lowpwr_lps_cmd(padapter, false); */
-			/*  */
-			rtl8723b_set_FwPwrMode_cmd(padapter, psmode);
-		}
-		break;
-	case HW_VAR_H2C_PS_TUNE_PARAM:
-		rtl8723b_set_FwPsTuneParam_cmd(padapter);
-		break;
-
-	case HW_VAR_H2C_FW_JOINBSSRPT:
-		rtl8723b_set_FwJoinBssRpt_cmd(padapter, *val);
-		break;
-
-	case HW_VAR_INITIAL_GAIN:
-		{
-			struct dig_t *pDigTable = &pHalData->odmpriv.DM_DigTable;
-			u32 rx_gain = *(u32 *)val;
-
-			if (rx_gain == 0xff) {/* restore rx gain */
-				ODM_Write_DIG(&pHalData->odmpriv, pDigTable->BackupIGValue);
-			} else {
-				pDigTable->BackupIGValue = pDigTable->CurIGValue;
-				ODM_Write_DIG(&pHalData->odmpriv, rx_gain);
-			}
-		}
-		break;
-
-	case HW_VAR_EFUSE_USAGE:
-		pHalData->EfuseUsedPercentage = *val;
-		break;
-
-	case HW_VAR_EFUSE_BYTES:
-		pHalData->EfuseUsedBytes = *((u16 *)val);
-		break;
-
-	case HW_VAR_EFUSE_BT_USAGE:
-#ifdef HAL_EFUSE_MEMORY
-		pHalData->EfuseHal.BTEfuseUsedPercentage = *val;
-#endif
-		break;
-
-	case HW_VAR_EFUSE_BT_BYTES:
-#ifdef HAL_EFUSE_MEMORY
-		pHalData->EfuseHal.BTEfuseUsedBytes = *((u16 *)val);
-#else
-		BTEfuseUsedBytes = *((u16 *)val);
-#endif
-		break;
-
-	case HW_VAR_FIFO_CLEARN_UP:
-		{
-			#define RW_RELEASE_EN		BIT(18)
-			#define RXDMA_IDLE			BIT(17)
-
-			struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
-			u8 trycnt = 100;
-
-			/*  pause tx */
-			rtw_write8(padapter, REG_TXPAUSE, 0xff);
-
-			/*  keep sn */
-			padapter->xmitpriv.nqos_ssn = rtw_read16(padapter, REG_NQOS_SEQ);
-
-			if (!pwrpriv->bkeepfwalive) {
-				/* RX DMA stop */
-				val32 = rtw_read32(padapter, REG_RXPKT_NUM);
-				val32 |= RW_RELEASE_EN;
-				rtw_write32(padapter, REG_RXPKT_NUM, val32);
-				do {
-					val32 = rtw_read32(padapter, REG_RXPKT_NUM);
-					val32 &= RXDMA_IDLE;
-					if (val32)
-						break;
-				} while (--trycnt);
-
-				/*  RQPN Load 0 */
-				rtw_write16(padapter, REG_RQPN_NPQ, 0);
-				rtw_write32(padapter, REG_RQPN, 0x80000000);
-				mdelay(2);
-			}
-		}
-		break;
-
-	case HW_VAR_APFM_ON_MAC:
-		pHalData->bMacPwrCtrlOn = *val;
-		break;
-
-	case HW_VAR_NAV_UPPER:
-		{
-			u32 usNavUpper = *((u32 *)val);
-
-			if (usNavUpper > HAL_NAV_UPPER_UNIT_8723B * 0xFF)
-				break;
-
-			usNavUpper = DIV_ROUND_UP(usNavUpper,
-						  HAL_NAV_UPPER_UNIT_8723B);
-			rtw_write8(padapter, REG_NAV_UPPER, (u8)usNavUpper);
-		}
-		break;
-
-	case HW_VAR_H2C_MEDIA_STATUS_RPT:
-		{
-			u16 mstatus_rpt = (*(u16 *)val);
-			u8 mstatus, macId;
-
-			mstatus = (u8) (mstatus_rpt & 0xFF);
-			macId = (u8)(mstatus_rpt >> 8);
-			rtl8723b_set_FwMediaStatusRpt_cmd(padapter, mstatus, macId);
-		}
-		break;
-	case HW_VAR_BCN_VALID:
-		{
-			/*  BCN_VALID, BIT16 of REG_TDECTRL = BIT0 of REG_TDECTRL+2, write 1 to clear, Clear by sw */
-			val8 = rtw_read8(padapter, REG_TDECTRL+2);
-			val8 |= BIT(0);
-			rtw_write8(padapter, REG_TDECTRL+2, val8);
-		}
-		break;
-
-	case HW_VAR_DL_BCN_SEL:
-		{
-			/*  SW_BCN_SEL - Port0 */
-			val8 = rtw_read8(padapter, REG_DWBCN1_CTRL_8723B+2);
-			val8 &= ~BIT(4);
-			rtw_write8(padapter, REG_DWBCN1_CTRL_8723B+2, val8);
-		}
-		break;
-
-	case HW_VAR_DL_RSVD_PAGE:
-		if (check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE))
-			rtl8723b_download_BTCoex_AP_mode_rsvd_page(padapter);
-		else
-			rtl8723b_download_rsvd_page(padapter, RT_MEDIA_CONNECT);
-		break;
-
-	case HW_VAR_MACID_SLEEP:
-		/*  Input is MACID */
-		val32 = *(u32 *)val;
-		if (val32 > 31)
-			break;
-
-		val8 = (u8)val32; /*  macid is between 0~31 */
-
-		val32 = rtw_read32(padapter, REG_MACID_SLEEP);
-		if (val32 & BIT(val8))
-			break;
-		val32 |= BIT(val8);
-		rtw_write32(padapter, REG_MACID_SLEEP, val32);
-		break;
-
-	case HW_VAR_MACID_WAKEUP:
-		/*  Input is MACID */
-		val32 = *(u32 *)val;
-		if (val32 > 31)
-			break;
-
-		val8 = (u8)val32; /*  macid is between 0~31 */
-
-		val32 = rtw_read32(padapter, REG_MACID_SLEEP);
-		if (!(val32 & BIT(val8)))
-			break;
-		val32 &= ~BIT(val8);
-		rtw_write32(padapter, REG_MACID_SLEEP, val32);
-		break;
-
-	default:
-		SetHwReg(padapter, variable, val);
-		break;
-	}
-}
-
-void GetHwReg8723B(struct adapter *padapter, u8 variable, u8 *val)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	u8 val8;
-	u16 val16;
-
-	switch (variable) {
-	case HW_VAR_TXPAUSE:
-		*val = rtw_read8(padapter, REG_TXPAUSE);
-		break;
-
-	case HW_VAR_BCN_VALID:
-		{
-			/*  BCN_VALID, BIT16 of REG_TDECTRL = BIT0 of REG_TDECTRL+2 */
-			val8 = rtw_read8(padapter, REG_TDECTRL+2);
-			*val = (BIT(0) & val8) ? true : false;
-		}
-		break;
-
-	case HW_VAR_FWLPS_RF_ON:
-		{
-			/*  When we halt NIC, we should check if FW LPS is leave. */
-			u32 valRCR;
-
-			if (
-				padapter->bSurpriseRemoved  ||
-				(adapter_to_pwrctl(padapter)->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;
-			} else {
-				valRCR = rtw_read32(padapter, REG_RCR);
-				valRCR &= 0x00070000;
-				if (valRCR)
-					*val = false;
-				else
-					*val = true;
-			}
-		}
-		break;
-
-	case HW_VAR_EFUSE_USAGE:
-		*val = pHalData->EfuseUsedPercentage;
-		break;
-
-	case HW_VAR_EFUSE_BYTES:
-		*((u16 *)val) = pHalData->EfuseUsedBytes;
-		break;
-
-	case HW_VAR_EFUSE_BT_USAGE:
-#ifdef HAL_EFUSE_MEMORY
-		*val = pHalData->EfuseHal.BTEfuseUsedPercentage;
-#endif
-		break;
-
-	case HW_VAR_EFUSE_BT_BYTES:
-#ifdef HAL_EFUSE_MEMORY
-		*((u16 *)val) = pHalData->EfuseHal.BTEfuseUsedBytes;
-#else
-		*((u16 *)val) = BTEfuseUsedBytes;
-#endif
-		break;
-
-	case HW_VAR_APFM_ON_MAC:
-		*val = pHalData->bMacPwrCtrlOn;
-		break;
-	case HW_VAR_CHK_HI_QUEUE_EMPTY:
-		val16 = rtw_read16(padapter, REG_TXPKT_EMPTY);
-		*val = (val16 & BIT(10)) ? true : false;
-		break;
-	default:
-		GetHwReg(padapter, variable, val);
-		break;
-	}
-}
-
-/* Description:
- *	Query setting of specified variable.
- */
-u8 GetHalDefVar8723B(struct adapter *padapter, enum hal_def_variable variable, void *pval)
-{
-	u8 bResult = _SUCCESS;
-
-	switch (variable) {
-	case HAL_DEF_MAX_RECVBUF_SZ:
-		*((u32 *)pval) = MAX_RECVBUF_SZ;
-		break;
-
-	case HAL_DEF_RX_PACKET_OFFSET:
-		*((u32 *)pval) = RXDESC_SIZE + DRVINFO_SZ*8;
-		break;
-
-	case HW_VAR_MAX_RX_AMPDU_FACTOR:
-		/*  Stanley@BB.SD3 suggests 16K can get stable performance */
-		/*  The experiment was done on SDIO interface */
-		/*  coding by Lucas@20130730 */
-		*(u32 *)pval = IEEE80211_HT_MAX_AMPDU_16K;
-		break;
-	case HAL_DEF_TX_LDPC:
-	case HAL_DEF_RX_LDPC:
-		*((u8 *)pval) = false;
-		break;
-	case HAL_DEF_TX_STBC:
-		*((u8 *)pval) = 0;
-		break;
-	case HAL_DEF_RX_STBC:
-		*((u8 *)pval) = 1;
-		break;
-	case HAL_DEF_EXPLICIT_BEAMFORMER:
-	case HAL_DEF_EXPLICIT_BEAMFORMEE:
-		*((u8 *)pval) = false;
-		break;
-
-	case HW_DEF_RA_INFO_DUMP:
-		{
-			u8 mac_id = *(u8 *)pval;
-			u32 cmd = 0x40000100 | mac_id;
-
-			rtw_write32(padapter, REG_HMEBOX_DBG_2_8723B, cmd);
-			msleep(10);
-			rtw_read32(padapter, 0x2F0);	// info 1
-
-			cmd = 0x40000400 | mac_id;
-			rtw_write32(padapter, REG_HMEBOX_DBG_2_8723B, cmd);
-			msleep(10);
-			rtw_read32(padapter, 0x2F0);	// info 1
-			rtw_read32(padapter, 0x2F4);	// info 2
-			rtw_read32(padapter, 0x2F8);	// rate mask 1
-			rtw_read32(padapter, 0x2FC);	// rate mask 2
-		}
-		break;
-
-	case HAL_DEF_TX_PAGE_BOUNDARY:
-		if (!padapter->registrypriv.wifi_spec) {
-			*(u8 *)pval = TX_PAGE_BOUNDARY_8723B;
-		} else {
-			*(u8 *)pval = WMM_NORMAL_TX_PAGE_BOUNDARY_8723B;
-		}
-		break;
-
-	case HAL_DEF_MACID_SLEEP:
-		*(u8 *)pval = true; /*  support macid sleep */
-		break;
-
-	default:
-		bResult = GetHalDefVar(padapter, variable, pval);
-		break;
-	}
-
-	return bResult;
-}
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_phycfg.c b/drivers/staging/rtl8723bs/hal/rtl8723b_phycfg.c
deleted file mode 100644
index 737e2a818c18..000000000000
--- a/drivers/staging/rtl8723bs/hal/rtl8723b_phycfg.c
+++ /dev/null
@@ -1,759 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <drv_types.h>
-#include <rtl8723b_hal.h>
-
-/**
- * phy_CalculateBitShift - Get shifted position of the BitMask.
- * @BitMask: Bitmask.
- *
- * Return:	Return the shift bit position of the mask
- */
-static	u32 phy_CalculateBitShift(u32 BitMask)
-{
-	u32 i;
-
-	for (i = 0; i <= 31; i++) {
-		if (((BitMask >> i) &  0x1) == 1)
-			break;
-	}
-	return i;
-}
-
-/**
- * PHY_QueryBBReg_8723B - Read "specific bits" from BB register.
- * @Adapter:
- * @RegAddr:	The target address to be readback
- * @BitMask:	The target bit position in the target address
- *				to be readback
- *
- * Return:	The readback register value
- *
- * .. Note::	This function is equal to "GetRegSetting" in PHY programming
- *			guide
- */
-u32 PHY_QueryBBReg_8723B(struct adapter *Adapter, u32 RegAddr, u32 BitMask)
-{
-	u32 OriginalValue, BitShift;
-
-	OriginalValue = rtw_read32(Adapter, RegAddr);
-	BitShift = phy_CalculateBitShift(BitMask);
-
-	return (OriginalValue & BitMask) >> BitShift;
-}
-
-/**
- * PHY_SetBBReg_8723B - Write "Specific bits" to BB register (page 8~).
- * @Adapter:
- * @RegAddr:	The target address to be modified
- * @BitMask:	The target bit position in the target address
- *				to be modified
- * @Data:		The new register value in the target bit position
- *				of the target address
- *
- * .. Note::	This function is equal to "PutRegSetting" in PHY programming
- *			guide
- */
-
-void PHY_SetBBReg_8723B(
-	struct adapter *Adapter,
-	u32 RegAddr,
-	u32 BitMask,
-	u32 Data
-)
-{
-	/* u16 BBWaitCounter	= 0; */
-	u32 OriginalValue, BitShift;
-
-	if (BitMask != bMaskDWord) { /* if not "double word" write */
-		OriginalValue = rtw_read32(Adapter, RegAddr);
-		BitShift = phy_CalculateBitShift(BitMask);
-		Data = ((OriginalValue & (~BitMask)) | ((Data << BitShift) & BitMask));
-	}
-
-	rtw_write32(Adapter, RegAddr, Data);
-}
-
-/*  */
-/*  2. RF register R/W API */
-/*  */
-
-static u32 phy_RFSerialRead_8723B(
-	struct adapter *Adapter, enum rf_path eRFPath, u32 Offset
-)
-{
-	u32 retValue = 0;
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-	struct bb_register_def *pPhyReg = &pHalData->PHYRegDef[eRFPath];
-	u32 NewOffset;
-	u32 tmplong2;
-	u8 RfPiEnable = 0;
-	u32 MaskforPhySet = 0;
-	int i = 0;
-
-	/*  */
-	/*  Make sure RF register offset is correct */
-	/*  */
-	Offset &= 0xff;
-
-	NewOffset = Offset;
-
-	if (eRFPath == RF_PATH_A) {
-		tmplong2 = PHY_QueryBBReg(Adapter, rFPGA0_XA_HSSIParameter2 | MaskforPhySet, bMaskDWord);
-		tmplong2 = (tmplong2 & (~bLSSIReadAddress)) | (NewOffset << 23) | bLSSIReadEdge;	/* T65 RF */
-		PHY_SetBBReg(Adapter, rFPGA0_XA_HSSIParameter2 | MaskforPhySet, bMaskDWord, tmplong2 & (~bLSSIReadEdge));
-	} else {
-		tmplong2 = PHY_QueryBBReg(Adapter, rFPGA0_XB_HSSIParameter2 | MaskforPhySet, bMaskDWord);
-		tmplong2 = (tmplong2 & (~bLSSIReadAddress)) | (NewOffset << 23) | bLSSIReadEdge;	/* T65 RF */
-		PHY_SetBBReg(Adapter, rFPGA0_XB_HSSIParameter2 | MaskforPhySet, bMaskDWord, tmplong2 & (~bLSSIReadEdge));
-	}
-
-	tmplong2 = PHY_QueryBBReg(Adapter, rFPGA0_XA_HSSIParameter2 | MaskforPhySet, bMaskDWord);
-	PHY_SetBBReg(Adapter, rFPGA0_XA_HSSIParameter2 | MaskforPhySet, bMaskDWord, tmplong2 & (~bLSSIReadEdge));
-	PHY_SetBBReg(Adapter, rFPGA0_XA_HSSIParameter2 | MaskforPhySet, bMaskDWord, tmplong2 | bLSSIReadEdge);
-
-	udelay(10);
-
-	for (i = 0; i < 2; i++)
-		udelay(MAX_STALL_TIME);
-	udelay(10);
-
-	if (eRFPath == RF_PATH_A)
-		RfPiEnable = (u8)PHY_QueryBBReg(Adapter, rFPGA0_XA_HSSIParameter1 | MaskforPhySet, BIT(8));
-	else if (eRFPath == RF_PATH_B)
-		RfPiEnable = (u8)PHY_QueryBBReg(Adapter, rFPGA0_XB_HSSIParameter1 | MaskforPhySet, BIT(8));
-
-	if (RfPiEnable) {
-		/*  Read from BBreg8b8, 12 bits for 8190, 20bits for T65 RF */
-		retValue = PHY_QueryBBReg(Adapter, pPhyReg->rfLSSIReadBackPi | MaskforPhySet, bLSSIReadBackData);
-	} else {
-		/* Read from BBreg8a0, 12 bits for 8190, 20 bits for T65 RF */
-		retValue = PHY_QueryBBReg(Adapter, pPhyReg->rfLSSIReadBack | MaskforPhySet, bLSSIReadBackData);
-	}
-	return retValue;
-}
-
-/**
- * phy_RFSerialWrite_8723B - Write data to RF register (page 8~).
- * @Adapter:
- * @eRFPath:	Radio path of A/B/C/D
- * @Offset:	The target address to be read
- * @Data:	The new register Data in the target bit position
- *			of the target to be read
- *
- * .. Note::	There are three types of serial operations:
- *		1. Software serial write
- *		2. Hardware LSSI-Low Speed Serial Interface
- *		3. Hardware HSSI-High speed
- *		serial write. Driver need to implement (1) and (2).
- *		This function is equal to the combination of RF_ReadReg() and  RFLSSIRead()
- *
- * .. Note::		  For RF8256 only
- *		 The total count of RTL8256(Zebra4) register is around 36 bit it only employs
- *		 4-bit RF address. RTL8256 uses "register mode control bit" (Reg00[12], Reg00[10])
- *		 to access register address bigger than 0xf. See "Appendix-4 in PHY Configuration
- *		 programming guide" for more details.
- *		 Thus, we define a sub-finction for RTL8526 register address conversion
- *	       ===========================================================
- *		 Register Mode		RegCTL[1]		RegCTL[0]		Note
- *							(Reg00[12])		(Reg00[10])
- *	       ===========================================================
- *		 Reg_Mode0				0				x			Reg 0 ~15(0x0 ~ 0xf)
- *	       ------------------------------------------------------------------
- *		 Reg_Mode1				1				0			Reg 16 ~30(0x1 ~ 0xf)
- *	       ------------------------------------------------------------------
- *		 Reg_Mode2				1				1			Reg 31 ~ 45(0x1 ~ 0xf)
- *	       ------------------------------------------------------------------
- *
- *2008/09/02	MH	Add 92S RF definition
- *
- *
- *
- */
-static void phy_RFSerialWrite_8723B(
-	struct adapter *Adapter,
-	enum rf_path eRFPath,
-	u32 Offset,
-	u32 Data
-)
-{
-	u32 DataAndAddr = 0;
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-	struct bb_register_def *pPhyReg = &pHalData->PHYRegDef[eRFPath];
-	u32 NewOffset;
-
-	Offset &= 0xff;
-
-	/*  */
-	/*  Switch page for 8256 RF IC */
-	/*  */
-	NewOffset = Offset;
-
-	/*  */
-	/*  Put write addr in [5:0]  and write data in [31:16] */
-	/*  */
-	DataAndAddr = ((NewOffset << 20) | (Data & 0x000fffff)) & 0x0fffffff;	/*  T65 RF */
-	/*  */
-	/*  Write Operation */
-	/*  */
-	PHY_SetBBReg(Adapter, pPhyReg->rf3wireOffset, bMaskDWord, DataAndAddr);
-}
-
-/**
- * PHY_QueryRFReg_8723B - Query "Specific bits" to RF register (page 8~).
- * @Adapter:
- * @eRFPath:	Radio path of A/B/C/D
- * @RegAddr:	The target address to be read
- * @BitMask:	The target bit position in the target address
- *				to be read
- *
- * Return:	Readback value
- *
- * .. Note::	This function is equal to "GetRFRegSetting" in PHY
- *			programming guide
- */
-u32 PHY_QueryRFReg_8723B(
-	struct adapter *Adapter,
-	u8 eRFPath,
-	u32 RegAddr,
-	u32 BitMask
-)
-{
-	u32 Original_Value, BitShift;
-
-	Original_Value = phy_RFSerialRead_8723B(Adapter, eRFPath, RegAddr);
-	BitShift =  phy_CalculateBitShift(BitMask);
-
-	return (Original_Value & BitMask) >> BitShift;
-}
-
-/**
- * PHY_SetRFReg_8723B - Write "Specific bits" to RF register (page 8~).
- * @Adapter:
- * @eRFPath:	Radio path of A/B/C/D
- * @RegAddr:	The target address to be modified
- * @BitMask:	The target bit position in the target address
- *				to be modified
- * @Data:	The new register Data in the target bit position
- *								of the target address
- *
- * .. Note::	This function is equal to "PutRFRegSetting" in PHY
- *			programming guide.
- */
-void PHY_SetRFReg_8723B(
-	struct adapter *Adapter,
-	u8 eRFPath,
-	u32 RegAddr,
-	u32 BitMask,
-	u32 Data
-)
-{
-	u32 Original_Value, BitShift;
-
-	/*  RF data is 12 bits only */
-	if (BitMask != bRFRegOffsetMask) {
-		Original_Value = phy_RFSerialRead_8723B(Adapter, eRFPath, RegAddr);
-		BitShift =  phy_CalculateBitShift(BitMask);
-		Data = ((Original_Value & (~BitMask)) | (Data << BitShift));
-	}
-
-	phy_RFSerialWrite_8723B(Adapter, eRFPath, RegAddr, Data);
-}
-
-/*  */
-/*  3. Initial MAC/BB/RF config by reading MAC/BB/RF txt. */
-/*  */
-
-/*-----------------------------------------------------------------------------
- * PHY_MACConfig8192C - Config MAC by header file or parameter file.
- *
- * Revised History:
- *  When		Who		Remark
- *  08/12/2008	MHC		Create Version 0.
- *
- *---------------------------------------------------------------------------
- */
-s32 PHY_MACConfig8723B(struct adapter *Adapter)
-{
-	struct hal_com_data	*pHalData = GET_HAL_DATA(Adapter);
-
-	ODM_ReadAndConfig_MP_8723B_MAC_REG(&pHalData->odmpriv);
-	return _SUCCESS;
-}
-
-/**
- * phy_InitBBRFRegisterDefinition - Initialize Register definition offset for
- *									Radio Path A/B/C/D
- * @Adapter:
- *
- * .. Note::		The initialization value is constant and it should never be changes
- */
-static void phy_InitBBRFRegisterDefinition(struct adapter *Adapter)
-{
-	struct hal_com_data		*pHalData = GET_HAL_DATA(Adapter);
-
-	/*  RF Interface Sowrtware Control */
-	pHalData->PHYRegDef[RF_PATH_A].rfintfs = rFPGA0_XAB_RFInterfaceSW; /*  16 LSBs if read 32-bit from 0x870 */
-	pHalData->PHYRegDef[RF_PATH_B].rfintfs = rFPGA0_XAB_RFInterfaceSW; /*  16 MSBs if read 32-bit from 0x870 (16-bit for 0x872) */
-
-	/*  RF Interface Output (and Enable) */
-	pHalData->PHYRegDef[RF_PATH_A].rfintfo = rFPGA0_XA_RFInterfaceOE; /*  16 LSBs if read 32-bit from 0x860 */
-	pHalData->PHYRegDef[RF_PATH_B].rfintfo = rFPGA0_XB_RFInterfaceOE; /*  16 LSBs if read 32-bit from 0x864 */
-
-	/*  RF Interface (Output and)  Enable */
-	pHalData->PHYRegDef[RF_PATH_A].rfintfe = rFPGA0_XA_RFInterfaceOE; /*  16 MSBs if read 32-bit from 0x860 (16-bit for 0x862) */
-	pHalData->PHYRegDef[RF_PATH_B].rfintfe = rFPGA0_XB_RFInterfaceOE; /*  16 MSBs if read 32-bit from 0x864 (16-bit for 0x866) */
-
-	pHalData->PHYRegDef[RF_PATH_A].rf3wireOffset = rFPGA0_XA_LSSIParameter; /* LSSI Parameter */
-	pHalData->PHYRegDef[RF_PATH_B].rf3wireOffset = rFPGA0_XB_LSSIParameter;
-
-	pHalData->PHYRegDef[RF_PATH_A].rfHSSIPara2 = rFPGA0_XA_HSSIParameter2;  /* wire control parameter2 */
-	pHalData->PHYRegDef[RF_PATH_B].rfHSSIPara2 = rFPGA0_XB_HSSIParameter2;  /* wire control parameter2 */
-
-	/*  Transceiver Readback LSSI/HSPI mode */
-	pHalData->PHYRegDef[RF_PATH_A].rfLSSIReadBack = rFPGA0_XA_LSSIReadBack;
-	pHalData->PHYRegDef[RF_PATH_B].rfLSSIReadBack = rFPGA0_XB_LSSIReadBack;
-	pHalData->PHYRegDef[RF_PATH_A].rfLSSIReadBackPi = TransceiverA_HSPI_Readback;
-	pHalData->PHYRegDef[RF_PATH_B].rfLSSIReadBackPi = TransceiverB_HSPI_Readback;
-}
-
-static int phy_BB8723b_Config_ParaFile(struct adapter *Adapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	/*  Read Tx Power Limit File */
-	PHY_InitTxPowerLimit(Adapter);
-	if (Adapter->registrypriv.reg_enable_tx_power_limit == 1 ||
-	    (Adapter->registrypriv.reg_enable_tx_power_limit == 2 &&
-	   pHalData->EEPROMRegulatory == 1))
-		ODM_ConfigRFWithHeaderFile(&pHalData->odmpriv, CONFIG_RF_TXPWR_LMT, 0);
-
-	/*  */
-	/*  1. Read PHY_REG.TXT BB INIT!! */
-	/*  */
-	ODM_ConfigBBWithHeaderFile(&pHalData->odmpriv, CONFIG_BB_PHY_REG);
-
-	/*  If EEPROM or EFUSE autoload OK, We must config by PHY_REG_PG.txt */
-	PHY_InitTxPowerByRate(Adapter);
-
-	if (Adapter->registrypriv.reg_enable_tx_power_by_rate == 1 ||
-	    (Adapter->registrypriv.reg_enable_tx_power_by_rate == 2 &&
-	   pHalData->EEPROMRegulatory != 2)) {
-		ODM_ConfigBBWithHeaderFile(&pHalData->odmpriv, CONFIG_BB_PHY_REG_PG);
-
-		if (pHalData->odmpriv.PhyRegPgValueType == PHY_REG_PG_EXACT_VALUE)
-			PHY_TxPowerByRateConfiguration(Adapter);
-
-		if (Adapter->registrypriv.reg_enable_tx_power_limit == 1 ||
-		    (Adapter->registrypriv.reg_enable_tx_power_limit == 2 &&
-		   pHalData->EEPROMRegulatory == 1))
-			PHY_ConvertTxPowerLimitToPowerIndex(Adapter);
-	}
-
-	/*  */
-	/*  2. Read BB AGC table Initialization */
-	/*  */
-	ODM_ConfigBBWithHeaderFile(&pHalData->odmpriv, CONFIG_BB_AGC_TAB);
-
-	return _SUCCESS;
-}
-
-int PHY_BBConfig8723B(struct adapter *Adapter)
-{
-	int	rtStatus = _SUCCESS;
-	struct hal_com_data	*pHalData = GET_HAL_DATA(Adapter);
-	u32 RegVal;
-	u8 CrystalCap;
-
-	phy_InitBBRFRegisterDefinition(Adapter);
-
-	/*  Enable BB and RF */
-	RegVal = rtw_read16(Adapter, REG_SYS_FUNC_EN);
-	rtw_write16(Adapter, REG_SYS_FUNC_EN, (u16)(RegVal | BIT(13) | BIT(0) | BIT(1)));
-
-	rtw_write32(Adapter, rS0S1_PathSwitch, 0x280);	/*  Others use Antenna S1 */
-
-	rtw_write8(Adapter, REG_RF_CTRL, RF_EN | RF_RSTB | RF_SDMRSTB);
-
-	msleep(1);
-
-	PHY_SetRFReg(Adapter, RF_PATH_A, 0x1, 0xfffff, 0x780);
-
-	rtw_write8(Adapter, REG_SYS_FUNC_EN,
-		   FEN_PPLL | FEN_PCIEA | FEN_DIO_PCIE | FEN_BB_GLB_RSTn | FEN_BBRSTB);
-
-	rtw_write8(Adapter, REG_AFE_XTAL_CTRL + 1, 0x80);
-
-	/*  */
-	/*  Config BB and AGC */
-	/*  */
-	rtStatus = phy_BB8723b_Config_ParaFile(Adapter);
-
-	/*  0x2C[23:18] = 0x2C[17:12] = CrystalCap */
-	CrystalCap = pHalData->CrystalCap & 0x3F;
-	PHY_SetBBReg(Adapter, REG_MAC_PHY_CTRL, 0xFFF000, (CrystalCap | (CrystalCap << 6)));
-
-	return rtStatus;
-}
-
-static void phy_LCK_8723B(struct adapter *Adapter)
-{
-	PHY_SetRFReg(Adapter, RF_PATH_A, 0xB0, bRFRegOffsetMask, 0xDFBE0);
-	PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW, bRFRegOffsetMask, 0x8C01);
-	mdelay(200);
-	PHY_SetRFReg(Adapter, RF_PATH_A, 0xB0, bRFRegOffsetMask, 0xDFFE0);
-}
-
-int PHY_RFConfig8723B(struct adapter *Adapter)
-{
-	int rtStatus = _SUCCESS;
-
-	/*  */
-	/*  RF config */
-	/*  */
-	rtStatus = PHY_RF6052_Config8723B(Adapter);
-
-	phy_LCK_8723B(Adapter);
-
-	return rtStatus;
-}
-
-/**************************************************************************************************************
- *   Description:
- *       The low-level interface to set TxAGC , called by both MP and Normal Driver.
- *
- *                                                                                    <20120830, Kordan>
- **************************************************************************************************************/
-
-void PHY_SetTxPowerIndex(
-	struct adapter *Adapter,
-	u32 PowerIndex,
-	u8 RFPath,
-	u8 Rate
-)
-{
-	if (RFPath == RF_PATH_A || RFPath == RF_PATH_B) {
-		switch (Rate) {
-		case MGN_1M:
-			PHY_SetBBReg(Adapter, rTxAGC_A_CCK1_Mcs32, bMaskByte1, PowerIndex);
-			break;
-		case MGN_2M:
-			PHY_SetBBReg(Adapter, rTxAGC_B_CCK11_A_CCK2_11, bMaskByte1, PowerIndex);
-			break;
-		case MGN_5_5M:
-			PHY_SetBBReg(Adapter, rTxAGC_B_CCK11_A_CCK2_11, bMaskByte2, PowerIndex);
-			break;
-		case MGN_11M:
-			PHY_SetBBReg(Adapter, rTxAGC_B_CCK11_A_CCK2_11, bMaskByte3, PowerIndex);
-			break;
-
-		case MGN_6M:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Rate18_06, bMaskByte0, PowerIndex);
-			break;
-		case MGN_9M:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Rate18_06, bMaskByte1, PowerIndex);
-			break;
-		case MGN_12M:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Rate18_06, bMaskByte2, PowerIndex);
-			break;
-		case MGN_18M:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Rate18_06, bMaskByte3, PowerIndex);
-			break;
-
-		case MGN_24M:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Rate54_24, bMaskByte0, PowerIndex);
-			break;
-		case MGN_36M:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Rate54_24, bMaskByte1, PowerIndex);
-			break;
-		case MGN_48M:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Rate54_24, bMaskByte2, PowerIndex);
-			break;
-		case MGN_54M:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Rate54_24, bMaskByte3, PowerIndex);
-			break;
-
-		case MGN_MCS0:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Mcs03_Mcs00, bMaskByte0, PowerIndex);
-			break;
-		case MGN_MCS1:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Mcs03_Mcs00, bMaskByte1, PowerIndex);
-			break;
-		case MGN_MCS2:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Mcs03_Mcs00, bMaskByte2, PowerIndex);
-			break;
-		case MGN_MCS3:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Mcs03_Mcs00, bMaskByte3, PowerIndex);
-			break;
-
-		case MGN_MCS4:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Mcs07_Mcs04, bMaskByte0, PowerIndex);
-			break;
-		case MGN_MCS5:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Mcs07_Mcs04, bMaskByte1, PowerIndex);
-			break;
-		case MGN_MCS6:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Mcs07_Mcs04, bMaskByte2, PowerIndex);
-			break;
-		case MGN_MCS7:
-			PHY_SetBBReg(Adapter, rTxAGC_A_Mcs07_Mcs04, bMaskByte3, PowerIndex);
-			break;
-
-		default:
-			break;
-		}
-	}
-}
-
-u8 PHY_GetTxPowerIndex(
-	struct adapter *padapter,
-	u8 RFPath,
-	u8 Rate,
-	enum channel_width BandWidth,
-	u8 Channel
-)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	s8 txPower = 0, powerDiffByRate = 0, limit = 0;
-
-	txPower = (s8)PHY_GetTxPowerIndexBase(padapter, RFPath, Rate, BandWidth, Channel);
-	powerDiffByRate = PHY_GetTxPowerByRate(padapter, RF_PATH_A, Rate);
-
-	limit = phy_get_tx_pwr_lmt(
-		padapter,
-		padapter->registrypriv.reg_pwr_tbl_sel,
-		pHalData->CurrentChannelBW,
-		RFPath,
-		Rate,
-		pHalData->CurrentChannel
-	);
-
-	powerDiffByRate = powerDiffByRate > limit ? limit : powerDiffByRate;
-	txPower += powerDiffByRate;
-
-	txPower += PHY_GetTxPowerTrackingOffset(padapter, RFPath, Rate);
-
-	if (txPower > MAX_POWER_INDEX)
-		txPower = MAX_POWER_INDEX;
-
-	return (u8)txPower;
-}
-
-void PHY_SetTxPowerLevel8723B(struct adapter *Adapter, u8 Channel)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
-	struct fat_t *pDM_FatTable = &pDM_Odm->DM_FatTable;
-	u8 RFPath = RF_PATH_A;
-
-	if (pHalData->AntDivCfg) {/*  antenna diversity Enable */
-		RFPath = ((pDM_FatTable->RxIdleAnt == MAIN_ANT) ? RF_PATH_A : RF_PATH_B);
-	} else { /*  antenna diversity disable */
-		RFPath = pHalData->ant_path;
-	}
-
-	PHY_SetTxPowerLevelByPath(Adapter, Channel, RFPath);
-}
-
-static void phy_SetRegBW_8723B(
-	struct adapter *Adapter, enum channel_width CurrentBW
-)
-{
-	u16 RegRfMod_BW, u2tmp = 0;
-
-	RegRfMod_BW = rtw_read16(Adapter, REG_TRXPTCL_CTL_8723B);
-
-	switch (CurrentBW) {
-	case CHANNEL_WIDTH_20:
-		rtw_write16(Adapter, REG_TRXPTCL_CTL_8723B, (RegRfMod_BW & 0xFE7F)); /*  BIT 7 = 0, BIT 8 = 0 */
-		break;
-
-	case CHANNEL_WIDTH_40:
-		u2tmp = RegRfMod_BW | BIT(7);
-		rtw_write16(Adapter, REG_TRXPTCL_CTL_8723B, (u2tmp & 0xFEFF)); /*  BIT 7 = 1, BIT 8 = 0 */
-		break;
-
-	default:
-		break;
-	}
-}
-
-static u8 phy_GetSecondaryChnl_8723B(struct adapter *Adapter)
-{
-	u8 SCSettingOf40 = 0, SCSettingOf20 = 0;
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	if (pHalData->CurrentChannelBW == CHANNEL_WIDTH_40) {
-		if (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)
-			SCSettingOf20 = HT_DATA_SC_20_UPPER_OF_40MHZ;
-		else if (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)
-			SCSettingOf20 = HT_DATA_SC_20_LOWER_OF_40MHZ;
-	}
-
-	return  (SCSettingOf40 << 4) | SCSettingOf20;
-}
-
-static void phy_PostSetBwMode8723B(struct adapter *Adapter)
-{
-	u8 SubChnlNum = 0;
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	/* 3 Set Reg668 Reg440 BW */
-	phy_SetRegBW_8723B(Adapter, pHalData->CurrentChannelBW);
-
-	/* 3 Set Reg483 */
-	SubChnlNum = phy_GetSecondaryChnl_8723B(Adapter);
-	rtw_write8(Adapter, REG_DATA_SC_8723B, SubChnlNum);
-
-	/* 3 */
-	/* 3<2>Set PHY related register */
-	/* 3 */
-	switch (pHalData->CurrentChannelBW) {
-	/* 20 MHz channel*/
-	case CHANNEL_WIDTH_20:
-		PHY_SetBBReg(Adapter, rFPGA0_RFMOD, bRFMOD, 0x0);
-
-		PHY_SetBBReg(Adapter, rFPGA1_RFMOD, bRFMOD, 0x0);
-
-		PHY_SetBBReg(Adapter, rOFDM0_TxPseudoNoiseWgt, (BIT(31) | BIT(30)), 0x0);
-		break;
-
-	/* 40 MHz channel*/
-	case CHANNEL_WIDTH_40:
-		PHY_SetBBReg(Adapter, rFPGA0_RFMOD, bRFMOD, 0x1);
-
-		PHY_SetBBReg(Adapter, rFPGA1_RFMOD, bRFMOD, 0x1);
-
-		/*  Set Control channel to upper or lower. These settings are required only for 40MHz */
-		PHY_SetBBReg(Adapter, rCCK0_System, bCCKSideBand, (pHalData->nCur40MhzPrimeSC >> 1));
-
-		PHY_SetBBReg(Adapter, rOFDM1_LSTF, 0xC00, pHalData->nCur40MhzPrimeSC);
-
-		PHY_SetBBReg(Adapter, 0x818, (BIT(26) | BIT(27)), (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) ? 2 : 1);
-		break;
-	default:
-		break;
-	}
-
-	/* 3<3>Set RF related register */
-	PHY_RF6052SetBandwidth8723B(Adapter, pHalData->CurrentChannelBW);
-}
-
-static void phy_SwChnl8723B(struct adapter *padapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	u8 channelToSW = pHalData->CurrentChannel;
-
-	pHalData->RfRegChnlVal[0] = ((pHalData->RfRegChnlVal[0] & 0xfffff00) | channelToSW);
-	PHY_SetRFReg(padapter, RF_PATH_A, RF_CHNLBW, 0x3FF, pHalData->RfRegChnlVal[0]);
-	PHY_SetRFReg(padapter, RF_PATH_B, RF_CHNLBW, 0x3FF, pHalData->RfRegChnlVal[0]);
-}
-
-static void phy_SwChnlAndSetBwMode8723B(struct adapter *Adapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	if (Adapter->driver_stopped || Adapter->bSurpriseRemoved)
-		return;
-
-	if (pHalData->bSwChnl) {
-		phy_SwChnl8723B(Adapter);
-		pHalData->bSwChnl = false;
-	}
-
-	if (pHalData->bSetChnlBW) {
-		phy_PostSetBwMode8723B(Adapter);
-		pHalData->bSetChnlBW = false;
-	}
-
-	PHY_SetTxPowerLevel8723B(Adapter, pHalData->CurrentChannel);
-}
-
-static void PHY_HandleSwChnlAndSetBW8723B(
-	struct adapter *Adapter,
-	bool bSwitchChannel,
-	bool bSetBandWidth,
-	u8 ChannelNum,
-	enum channel_width ChnlWidth,
-	enum extchnl_offset ExtChnlOffsetOf40MHz,
-	enum extchnl_offset ExtChnlOffsetOf80MHz,
-	u8 CenterFrequencyIndex1
-)
-{
-	/* static bool		bInitialzed = false; */
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-	u8 tmpChannel = pHalData->CurrentChannel;
-	enum channel_width tmpBW = pHalData->CurrentChannelBW;
-	u8 tmpnCur40MhzPrimeSC = pHalData->nCur40MhzPrimeSC;
-	u8 tmpnCur80MhzPrimeSC = pHalData->nCur80MhzPrimeSC;
-	u8 tmpCenterFrequencyIndex1 = pHalData->CurrentCenterFrequencyIndex1;
-
-	/* check is swchnl or setbw */
-	if (!bSwitchChannel && !bSetBandWidth)
-		return;
-
-	/* skip change for channel or bandwidth is the same */
-	if (bSwitchChannel) {
-		{
-			if (HAL_IsLegalChannel(Adapter, ChannelNum))
-				pHalData->bSwChnl = true;
-		}
-	}
-
-	if (bSetBandWidth)
-		pHalData->bSetChnlBW = true;
-
-	if (!pHalData->bSetChnlBW && !pHalData->bSwChnl)
-		return;
-
-	if (pHalData->bSwChnl) {
-		pHalData->CurrentChannel = ChannelNum;
-		pHalData->CurrentCenterFrequencyIndex1 = ChannelNum;
-	}
-
-	if (pHalData->bSetChnlBW) {
-		pHalData->CurrentChannelBW = ChnlWidth;
-		pHalData->nCur40MhzPrimeSC = ExtChnlOffsetOf40MHz;
-		pHalData->nCur80MhzPrimeSC = ExtChnlOffsetOf80MHz;
-		pHalData->CurrentCenterFrequencyIndex1 = CenterFrequencyIndex1;
-	}
-
-	/* Switch workitem or set timer to do switch channel or setbandwidth operation */
-	if ((!Adapter->driver_stopped) && (!Adapter->bSurpriseRemoved)) {
-		phy_SwChnlAndSetBwMode8723B(Adapter);
-	} else {
-		if (pHalData->bSwChnl) {
-			pHalData->CurrentChannel = tmpChannel;
-			pHalData->CurrentCenterFrequencyIndex1 = tmpChannel;
-		}
-
-		if (pHalData->bSetChnlBW) {
-			pHalData->CurrentChannelBW = tmpBW;
-			pHalData->nCur40MhzPrimeSC = tmpnCur40MhzPrimeSC;
-			pHalData->nCur80MhzPrimeSC = tmpnCur80MhzPrimeSC;
-			pHalData->CurrentCenterFrequencyIndex1 = tmpCenterFrequencyIndex1;
-		}
-	}
-}
-
-/*  Call after initialization */
-void PHY_SwChnl8723B(struct adapter *Adapter, u8 channel)
-{
-	PHY_HandleSwChnlAndSetBW8723B(Adapter, true, false, channel, 0, 0, 0, channel);
-}
-
-void PHY_SetSwChnlBWMode8723B(
-	struct adapter *Adapter,
-	u8 channel,
-	enum channel_width Bandwidth,
-	u8 Offset40,
-	u8 Offset80
-)
-{
-	PHY_HandleSwChnlAndSetBW8723B(Adapter, true, true, channel, Bandwidth, Offset40, Offset80, channel);
-}
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_rf6052.c b/drivers/staging/rtl8723bs/hal/rtl8723b_rf6052.c
deleted file mode 100644
index fac1270853de..000000000000
--- a/drivers/staging/rtl8723bs/hal/rtl8723b_rf6052.c
+++ /dev/null
@@ -1,135 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-/******************************************************************************
- *
- *
- * Module:	rtl8192c_rf6052.c	(Source C File)
- *
- * Note:	Provide RF 6052 series relative API.
- *
- * Function:
- *
- * Export:
- *
- * Abbrev:
- *
- * History:
- * Data			Who		Remark
- *
- * 09/25/2008	MHC		Create initial version.
- * 11/05/2008	MHC		Add API for tw power setting.
- *
- *
- ******************************************************************************/
-
-#include <rtl8723b_hal.h>
-
-/*---------------------------Define Local Constant---------------------------*/
-/*---------------------------Define Local Constant---------------------------*/
-
-/*------------------------Define global variable-----------------------------*/
-/*------------------------Define global variable-----------------------------*/
-
-/*------------------------Define local variable------------------------------*/
-/*  2008/11/20 MH For Debug only, RF */
-/*------------------------Define local variable------------------------------*/
-
-/*-----------------------------------------------------------------------------
- * Function:    PHY_RF6052SetBandwidth()
- *
- * Overview:    This function is called by SetBWModeCallback8190Pci() only
- *
- * Input:       struct adapter *			Adapter
- *		WIRELESS_BANDWIDTH_E	Bandwidth	20M or 40M
- *
- * Output:      NONE
- *
- * Return:      NONE
- *
- * Note:		For RF type 0222D
- *---------------------------------------------------------------------------
- */
-void PHY_RF6052SetBandwidth8723B(
-	struct adapter *Adapter, enum channel_width Bandwidth
-) /* 20M or 40M */
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	switch (Bandwidth) {
-	case CHANNEL_WIDTH_20:
-		pHalData->RfRegChnlVal[0] = ((pHalData->RfRegChnlVal[0] & 0xfffff3ff) | BIT(10) | BIT(11));
-		PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW, bRFRegOffsetMask, pHalData->RfRegChnlVal[0]);
-		PHY_SetRFReg(Adapter, RF_PATH_B, RF_CHNLBW, bRFRegOffsetMask, pHalData->RfRegChnlVal[0]);
-		break;
-
-	case CHANNEL_WIDTH_40:
-		pHalData->RfRegChnlVal[0] = ((pHalData->RfRegChnlVal[0] & 0xfffff3ff) | BIT(10));
-		PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW, bRFRegOffsetMask, pHalData->RfRegChnlVal[0]);
-		PHY_SetRFReg(Adapter, RF_PATH_B, RF_CHNLBW, bRFRegOffsetMask, pHalData->RfRegChnlVal[0]);
-		break;
-
-	default:
-		break;
-	}
-
-}
-
-static int phy_RF6052_Config_ParaFile(struct adapter *Adapter)
-{
-	u32 u4RegValue = 0;
-	struct bb_register_def *pPhyReg;
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	/* 3----------------------------------------------------------------- */
-	/* 3 <2> Initialize RF */
-	/* 3----------------------------------------------------------------- */
-
-	pPhyReg = &pHalData->PHYRegDef[RF_PATH_A];
-
-	/*----Store original RFENV control type----*/
-	u4RegValue = PHY_QueryBBReg(Adapter, pPhyReg->rfintfs, bRFSI_RFENV);
-
-	/*----Set RF_ENV enable----*/
-	PHY_SetBBReg(Adapter, pPhyReg->rfintfe, bRFSI_RFENV << 16, 0x1);
-	udelay(1);/* PlatformStallExecution(1); */
-
-	/*----Set RF_ENV output high----*/
-	PHY_SetBBReg(Adapter, pPhyReg->rfintfo, bRFSI_RFENV, 0x1);
-	udelay(1);/* PlatformStallExecution(1); */
-
-	/* Set bit number of Address and Data for RF register */
-	PHY_SetBBReg(Adapter, pPhyReg->rfHSSIPara2, b3WireAddressLength, 0x0);	/*  Set 1 to 4 bits for 8255 */
-	udelay(1);/* PlatformStallExecution(1); */
-
-	PHY_SetBBReg(Adapter, pPhyReg->rfHSSIPara2, b3WireDataLength, 0x0);	/*  Set 0 to 12  bits for 8255 */
-	udelay(1);/* PlatformStallExecution(1); */
-
-	/*----Initialize RF fom connfiguration file----*/
-	ODM_ConfigRFWithHeaderFile(&pHalData->odmpriv, CONFIG_RF_RADIO, RF_PATH_A);
-
-	/*----Restore RFENV control type----*/
-	PHY_SetBBReg(Adapter, pPhyReg->rfintfs, bRFSI_RFENV, u4RegValue);
-
-	/* 3 ----------------------------------------------------------------- */
-	/* 3 Configuration of Tx Power Tracking */
-	/* 3 ----------------------------------------------------------------- */
-
-	ODM_ConfigRFWithTxPwrTrackHeaderFile(&pHalData->odmpriv);
-
-	return _SUCCESS;
-}
-
-int PHY_RF6052_Config8723B(struct adapter *Adapter)
-{
-	/*  */
-	/*  Config BB and RF */
-	/*  */
-	return phy_RF6052_Config_ParaFile(Adapter);
-
-}
-
-/* End of HalRf6052.c */
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_rxdesc.c b/drivers/staging/rtl8723bs/hal/rtl8723b_rxdesc.c
deleted file mode 100644
index ac1249676794..000000000000
--- a/drivers/staging/rtl8723bs/hal/rtl8723b_rxdesc.c
+++ /dev/null
@@ -1,69 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <rtl8723b_hal.h>
-
-static void process_rssi(struct adapter *padapter, union recv_frame *prframe)
-{
-	struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib;
-	struct signal_stat *signal_stat = &padapter->recvpriv.signal_strength_data;
-
-	/* if (pRfd->Status.bPacketToSelf || pRfd->Status.bPacketBeacon) */
-	{
-		if (signal_stat->update_req) {
-			signal_stat->total_num = 0;
-			signal_stat->total_val = 0;
-			signal_stat->update_req = 0;
-		}
-
-		signal_stat->total_num++;
-		signal_stat->total_val  += pattrib->phy_info.SignalStrength;
-		signal_stat->avg_val = signal_stat->total_val / signal_stat->total_num;
-	}
-
-} /*  Process_UI_RSSI_8192C */
-
-static void process_link_qual(struct adapter *padapter, union recv_frame *prframe)
-{
-	struct rx_pkt_attrib *pattrib;
-	struct signal_stat *signal_stat;
-
-	if (!prframe || !padapter)
-		return;
-
-	pattrib = &prframe->u.hdr.attrib;
-	signal_stat = &padapter->recvpriv.signal_qual_data;
-
-	if (signal_stat->update_req) {
-		signal_stat->total_num = 0;
-		signal_stat->total_val = 0;
-		signal_stat->update_req = 0;
-	}
-
-	signal_stat->total_num++;
-	signal_stat->total_val  += pattrib->phy_info.SignalQuality;
-	signal_stat->avg_val = signal_stat->total_val / signal_stat->total_num;
-} /*  Process_UiLinkQuality8192S */
-
-void rtl8723b_process_phy_info(struct adapter *padapter, void *prframe)
-{
-	union recv_frame *precvframe = prframe;
-	/*  */
-	/*  Check RSSI */
-	/*  */
-	process_rssi(padapter, precvframe);
-	/*  */
-	/*  Check PWDB. */
-	/*  */
-	/* process_PWDB(padapter, precvframe); */
-
-	/* UpdateRxSignalStatistics8192C(Adapter, pRfd); */
-	/*  */
-	/*  Check EVM */
-	/*  */
-	process_link_qual(padapter,  precvframe);
-}
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
deleted file mode 100644
index e943c304950e..000000000000
--- a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
+++ /dev/null
@@ -1,477 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <drv_types.h>
-#include <rtl8723b_hal.h>
-
-static void initrecvbuf(struct recv_buf *precvbuf, struct adapter *padapter)
-{
-	INIT_LIST_HEAD(&precvbuf->list);
-	spin_lock_init(&precvbuf->recvbuf_lock);
-
-	precvbuf->adapter = padapter;
-}
-
-static void update_recvframe_attrib(struct adapter *padapter,
-				    union recv_frame *precvframe,
-				    struct recv_stat *prxstat)
-{
-	struct rx_pkt_attrib *pattrib;
-	struct recv_stat report;
-	struct rxreport_8723b *prxreport = (struct rxreport_8723b *)&report;
-
-	report.rxdw0 = prxstat->rxdw0;
-	report.rxdw1 = prxstat->rxdw1;
-	report.rxdw2 = prxstat->rxdw2;
-	report.rxdw3 = prxstat->rxdw3;
-	report.rxdw4 = prxstat->rxdw4;
-	report.rxdw5 = prxstat->rxdw5;
-
-	pattrib = &precvframe->u.hdr.attrib;
-	memset(pattrib, 0, sizeof(struct rx_pkt_attrib));
-
-	/*  update rx report to recv_frame attribute */
-	pattrib->pkt_rpt_type = prxreport->c2h_ind ? C2H_PACKET : NORMAL_RX;
-
-	if (pattrib->pkt_rpt_type == NORMAL_RX) {
-		/*  Normal rx packet */
-		/*  update rx report to recv_frame attribute */
-		pattrib->pkt_len = (u16)prxreport->pktlen;
-		pattrib->drvinfo_sz = (u8)(prxreport->drvinfosize << 3);
-		pattrib->physt = (u8)prxreport->physt;
-
-		pattrib->crc_err = (u8)prxreport->crc32;
-		pattrib->icv_err = (u8)prxreport->icverr;
-
-		pattrib->bdecrypted = (u8)(prxreport->swdec ? 0 : 1);
-		pattrib->encrypt = (u8)prxreport->security;
-
-		pattrib->qos = (u8)prxreport->qos;
-		pattrib->priority = (u8)prxreport->tid;
-
-		pattrib->amsdu = (u8)prxreport->amsdu;
-
-		pattrib->seq_num = (u16)prxreport->seq;
-		pattrib->frag_num = (u8)prxreport->frag;
-		pattrib->mfrag = (u8)prxreport->mf;
-		pattrib->mdata = (u8)prxreport->md;
-
-		pattrib->data_rate = (u8)prxreport->rx_rate;
-	} else {
-		pattrib->pkt_len = (u16)prxreport->pktlen;
-	}
-}
-
-/*
- * Notice:
- *Before calling this function,
- *precvframe->u.hdr.rx_data should be ready!
- */
-static void update_recvframe_phyinfo(union recv_frame *precvframe,
-				     struct phy_stat *pphy_status)
-{
-	struct adapter *padapter = precvframe->u.hdr.adapter;
-	struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib;
-	struct hal_com_data *p_hal_data = GET_HAL_DATA(padapter);
-	struct odm_phy_info *p_phy_info =
-		(struct odm_phy_info *)(&pattrib->phy_info);
-
-	u8 *wlanhdr = precvframe->u.hdr.rx_data;
-	u8 *my_bssid;
-	u8 *rx_bssid;
-	u8 *rx_ra;
-	u8 *my_hwaddr;
-	u8 *sa = NULL;
-
-	struct odm_packet_info pkt_info = {
-		.data_rate   = 0x00,
-		.station_id  = 0x00,
-		.bssid_match = false,
-		.to_self     = false,
-		.is_beacon   = false,
-	};
-
-	/* unsigned long		irqL; */
-	struct sta_priv *pstapriv;
-	struct sta_info *psta;
-
-	my_bssid = get_bssid(&padapter->mlmepriv);
-	rx_bssid = get_hdr_bssid(wlanhdr);
-	pkt_info.bssid_match = ((!IsFrameTypeCtrl(wlanhdr)) &&
-				!pattrib->icv_err && !pattrib->crc_err &&
-				ether_addr_equal(rx_bssid, my_bssid));
-
-	rx_ra = rtl8723bs_get_ra(wlanhdr);
-	my_hwaddr = myid(&padapter->eeprompriv);
-	pkt_info.to_self = pkt_info.bssid_match &&
-		ether_addr_equal(rx_ra, my_hwaddr);
-
-	pkt_info.is_beacon = pkt_info.bssid_match &&
-		(GetFrameSubType(wlanhdr) == WIFI_BEACON);
-
-	sa = get_ta(wlanhdr);
-
-	pkt_info.station_id = 0xFF;
-
-	pstapriv = &padapter->stapriv;
-	psta = rtw_get_stainfo(pstapriv, sa);
-	if (psta)
-		pkt_info.station_id = psta->mac_id;
-
-	pkt_info.data_rate = pattrib->data_rate;
-
-	/* rtl8723b_query_rx_phy_status(precvframe, pphy_status); */
-	/* spin_lock_bh(&p_hal_data->odm_stainfo_lock); */
-	odm_phy_status_query(&p_hal_data->odmpriv, p_phy_info,
-			   (u8 *)pphy_status, &(pkt_info));
-	if (psta)
-		psta->rssi = pattrib->phy_info.RecvSignalPower;
-	/* spin_unlock_bh(&p_hal_data->odm_stainfo_lock); */
-	precvframe->u.hdr.psta = NULL;
-	if (
-		pkt_info.bssid_match &&
-		(check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE))
-	) {
-		if (psta) {
-			precvframe->u.hdr.psta = psta;
-			rtl8723b_process_phy_info(padapter, precvframe);
-		}
-	} else if (pkt_info.to_self || pkt_info.is_beacon) {
-		u32 adhoc_state = WIFI_ADHOC_STATE | WIFI_ADHOC_MASTER_STATE;
-
-		if (check_fwstate(&padapter->mlmepriv, adhoc_state))
-			if (psta)
-				precvframe->u.hdr.psta = psta;
-		rtl8723b_process_phy_info(padapter, precvframe);
-	}
-}
-
-static void rtl8723bs_c2h_packet_handler(struct adapter *padapter,
-					 u8 *pbuf, u16 length)
-{
-	u8 *tmp = NULL;
-	u8 res = false;
-
-	if (length == 0)
-		return;
-
-	tmp = kmemdup(pbuf, length, GFP_ATOMIC);
-	if (!tmp)
-		return;
-
-	res = rtw_c2h_packet_wk_cmd(padapter, tmp, length);
-
-	if (!res)
-		kfree(tmp);
-}
-
-static inline union recv_frame *try_alloc_recvframe(struct recv_priv *precvpriv,
-						    struct recv_buf *precvbuf)
-{
-	union recv_frame *precvframe;
-
-	precvframe = rtw_alloc_recvframe(&precvpriv->free_recv_queue);
-	if (!precvframe) {
-		rtw_enqueue_recvbuf_to_head(precvbuf,
-					    &precvpriv->recv_buf_pending_queue);
-
-		/*  The case of can't allocate recvframe should be temporary, */
-		/*  schedule again and hope recvframe is available next time. */
-		tasklet_schedule(&precvpriv->recv_tasklet);
-	}
-
-	return precvframe;
-}
-
-static inline bool rx_crc_err(struct recv_priv *precvpriv,
-			      struct hal_com_data *p_hal_data,
-			      struct rx_pkt_attrib *pattrib,
-			      union recv_frame *precvframe)
-{
-	/*  fix Hardware RX data error, drop whole recv_buffer */
-	if ((!(p_hal_data->ReceiveConfig & RCR_ACRC32)) && pattrib->crc_err) {
-		rtw_free_recvframe(precvframe, &precvpriv->free_recv_queue);
-		return true;
-	}
-
-	return false;
-}
-
-static inline bool pkt_exceeds_tail(struct recv_priv *precvpriv,
-				    u8 *end, u8 *tail,
-				    union recv_frame *precvframe)
-{
-	if (end > tail) {
-		rtw_free_recvframe(precvframe, &precvpriv->free_recv_queue);
-		return true;
-	}
-
-	return false;
-}
-
-static void rtl8723bs_recv_tasklet(struct tasklet_struct *t)
-{
-	struct adapter *padapter = from_tasklet(padapter, t,
-						recvpriv.recv_tasklet);
-	struct hal_com_data *p_hal_data;
-	struct recv_priv *precvpriv;
-	struct recv_buf *precvbuf;
-	union recv_frame *precvframe;
-	struct rx_pkt_attrib *pattrib;
-	struct __queue *recv_buf_queue;
-	u8 *ptr;
-	u32 pkt_offset, skb_len, alloc_sz;
-	struct sk_buff *pkt_copy = NULL;
-	u8 shift_sz = 0, rx_report_sz = 0;
-
-	p_hal_data = GET_HAL_DATA(padapter);
-	precvpriv = &padapter->recvpriv;
-	recv_buf_queue = &precvpriv->recv_buf_pending_queue;
-
-	do {
-		precvbuf = rtw_dequeue_recvbuf(recv_buf_queue);
-		if (!precvbuf)
-			break;
-
-		ptr = precvbuf->pdata;
-
-		while (ptr < precvbuf->ptail) {
-			precvframe = try_alloc_recvframe(precvpriv, precvbuf);
-			if (!precvframe)
-				return;
-
-			/* rx desc parsing */
-			update_recvframe_attrib(padapter, precvframe,
-						(struct recv_stat *)ptr);
-
-			pattrib = &precvframe->u.hdr.attrib;
-
-			if (rx_crc_err(precvpriv, p_hal_data,
-				       pattrib, precvframe))
-				break;
-
-			rx_report_sz = RXDESC_SIZE + pattrib->drvinfo_sz;
-			pkt_offset = rx_report_sz +
-				pattrib->shift_sz +
-				pattrib->pkt_len;
-
-			if (pkt_exceeds_tail(precvpriv, ptr + pkt_offset,
-					     precvbuf->ptail, precvframe))
-				break;
-
-			if ((pattrib->crc_err) || (pattrib->icv_err)) {
-				rtw_free_recvframe(precvframe,
-						   &precvpriv->free_recv_queue);
-			} else {
-				/*	Modified by Albert 20101213 */
-				/*	For 8 bytes IP header alignment. */
-				if (pattrib->qos)	/*	Qos data, wireless lan header length is 26 */
-					shift_sz = 6;
-				else
-					shift_sz = 0;
-
-				skb_len = pattrib->pkt_len;
-
-				/*  for first fragment packet, driver need allocate 1536+drvinfo_sz+RXDESC_SIZE to defrag packet. */
-				/*  modify alloc_sz for recvive crc error packet by thomas 2011-06-02 */
-				if ((pattrib->mfrag == 1) && (pattrib->frag_num == 0)) {
-					if (skb_len <= 1650)
-						alloc_sz = 1664;
-					else
-						alloc_sz = skb_len + 14;
-				} else {
-					alloc_sz = skb_len;
-					/*	6 is for IP header 8 bytes alignment in QoS packet case. */
-					/*	8 is for skb->data 4 bytes alignment. */
-					alloc_sz += 14;
-				}
-
-				pkt_copy = __dev_alloc_skb(alloc_sz, GFP_ATOMIC);
-				if (!pkt_copy) {
-					rtw_free_recvframe(precvframe, &precvpriv->free_recv_queue);
-					break;
-				}
-
-				pkt_copy->dev = padapter->pnetdev;
-				precvframe->u.hdr.pkt = pkt_copy;
-				skb_reserve(pkt_copy, 8 - ((SIZE_PTR)(pkt_copy->data) & 7));/* force pkt_copy->data at 8-byte alignment address */
-				skb_reserve(pkt_copy, shift_sz);/* force ip_hdr at 8-byte alignment address according to shift_sz. */
-				memcpy(pkt_copy->data, (ptr + rx_report_sz + pattrib->shift_sz), skb_len);
-				precvframe->u.hdr.rx_head = pkt_copy->head;
-				precvframe->u.hdr.rx_data = precvframe->u.hdr.rx_tail = pkt_copy->data;
-				precvframe->u.hdr.rx_end = skb_end_pointer(pkt_copy);
-
-				recvframe_put(precvframe, skb_len);
-				/* recvframe_pull(precvframe, drvinfo_sz + RXDESC_SIZE); */
-
-				if (p_hal_data->ReceiveConfig & RCR_APPFCS)
-					recvframe_pull_tail(precvframe, IEEE80211_FCS_LEN);
-
-				/*  move to drv info position */
-				ptr += RXDESC_SIZE;
-
-				/*  update drv info */
-				if (p_hal_data->ReceiveConfig & RCR_APP_BA_SSN) {
-					/* rtl8723s_update_bassn(padapter, pdrvinfo); */
-					ptr += 4;
-				}
-
-				if (pattrib->pkt_rpt_type == NORMAL_RX) { /* Normal rx packet */
-					if (pattrib->physt)
-						update_recvframe_phyinfo(precvframe, (struct phy_stat *)ptr);
-
-					rtw_recv_entry(precvframe);
-				} else if (pattrib->pkt_rpt_type == C2H_PACKET) {
-					struct c2h_evt_hdr_t	C2hEvent;
-
-					u16 len_c2h = pattrib->pkt_len;
-					u8 *pbuf_c2h = precvframe->u.hdr.rx_data;
-					u8 *pdata_c2h;
-
-					C2hEvent.CmdID = pbuf_c2h[0];
-					C2hEvent.CmdSeq = pbuf_c2h[1];
-					C2hEvent.CmdLen = (len_c2h-2);
-					pdata_c2h = pbuf_c2h+2;
-
-					if (C2hEvent.CmdID == C2H_CCX_TX_RPT)
-						CCX_FwC2HTxRpt_8723b(padapter, pdata_c2h, C2hEvent.CmdLen);
-					else
-						rtl8723bs_c2h_packet_handler(padapter, precvframe->u.hdr.rx_data, pattrib->pkt_len);
-
-					rtw_free_recvframe(precvframe, &precvpriv->free_recv_queue);
-				}
-			}
-
-			pkt_offset = round_up(pkt_offset, 8);
-			precvbuf->pdata += pkt_offset;
-			ptr = precvbuf->pdata;
-			precvframe = NULL;
-			pkt_copy = NULL;
-		}
-
-		rtw_enqueue_recvbuf(precvbuf, &precvpriv->free_recv_buf_queue);
-	} while (1);
-}
-
-/*
- * Initialize recv private variable for hardware dependent
- * 1. recv buf
- * 2. recv tasklet
- *
- */
-s32 rtl8723bs_init_recv_priv(struct adapter *padapter)
-{
-	s32 res;
-	u32 i, n;
-	struct recv_priv *precvpriv;
-	struct recv_buf *precvbuf;
-
-	res = _SUCCESS;
-	precvpriv = &padapter->recvpriv;
-
-	/* 3 1. init recv buffer */
-	INIT_LIST_HEAD(&precvpriv->free_recv_buf_queue.queue);
-	spin_lock_init(&precvpriv->free_recv_buf_queue.lock);
-	INIT_LIST_HEAD(&precvpriv->recv_buf_pending_queue.queue);
-	spin_lock_init(&precvpriv->recv_buf_pending_queue.lock);
-
-	n = NR_RECVBUFF * sizeof(struct recv_buf) + 4;
-	precvpriv->pallocated_recv_buf = kzalloc(n, GFP_KERNEL);
-	if (!precvpriv->pallocated_recv_buf) {
-		res = _FAIL;
-		goto exit;
-	}
-
-	precvpriv->precv_buf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(precvpriv->pallocated_recv_buf), 4);
-
-	/*  init each recv buffer */
-	precvbuf = (struct recv_buf *)precvpriv->precv_buf;
-	for (i = 0; i < NR_RECVBUFF; i++) {
-		initrecvbuf(precvbuf, padapter);
-
-		if (!precvbuf->pskb) {
-			SIZE_PTR tmpaddr = 0;
-			SIZE_PTR alignment = 0;
-
-			precvbuf->pskb = __dev_alloc_skb(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ, GFP_ATOMIC);
-			if (precvbuf->pskb) {
-				precvbuf->pskb->dev = padapter->pnetdev;
-
-				tmpaddr = (SIZE_PTR)precvbuf->pskb->data;
-				alignment = tmpaddr & (RECVBUFF_ALIGN_SZ-1);
-				skb_reserve(precvbuf->pskb, (RECVBUFF_ALIGN_SZ - alignment));
-			}
-		}
-
-		list_add_tail(&precvbuf->list, &precvpriv->free_recv_buf_queue.queue);
-
-		precvbuf++;
-	}
-	precvpriv->free_recv_buf_queue_cnt = i;
-
-	if (res == _FAIL)
-		goto initbuferror;
-
-	/* 3 2. init tasklet */
-	tasklet_setup(&precvpriv->recv_tasklet, rtl8723bs_recv_tasklet);
-
-	goto exit;
-
-initbuferror:
-	precvbuf = (struct recv_buf *)precvpriv->precv_buf;
-	if (precvbuf) {
-		n = precvpriv->free_recv_buf_queue_cnt;
-		precvpriv->free_recv_buf_queue_cnt = 0;
-		for (i = 0; i < n ; i++) {
-			list_del_init(&precvbuf->list);
-			if (precvbuf->pskb)
-				dev_kfree_skb_any(precvbuf->pskb);
-			precvbuf++;
-		}
-		precvpriv->precv_buf = NULL;
-	}
-
-	kfree(precvpriv->pallocated_recv_buf);
-	precvpriv->pallocated_recv_buf = NULL;
-
-exit:
-	return res;
-}
-
-/*
- * Free recv private variable of hardware dependent
- * 1. recv buf
- * 2. recv tasklet
- *
- */
-void rtl8723bs_free_recv_priv(struct adapter *padapter)
-{
-	u32 i;
-	struct recv_priv *precvpriv;
-	struct recv_buf *precvbuf;
-
-	precvpriv = &padapter->recvpriv;
-
-	/* 3 1. kill tasklet */
-	tasklet_kill(&precvpriv->recv_tasklet);
-
-	/* 3 2. free all recv buffers */
-	precvbuf = (struct recv_buf *)precvpriv->precv_buf;
-	if (precvbuf) {
-		precvpriv->free_recv_buf_queue_cnt = 0;
-		for (i = 0; i < NR_RECVBUFF; i++) {
-			list_del_init(&precvbuf->list);
-			if (precvbuf->pskb)
-				dev_kfree_skb_any(precvbuf->pskb);
-			precvbuf++;
-		}
-		precvpriv->precv_buf = NULL;
-	}
-
-	kfree(precvpriv->pallocated_recv_buf);
-	precvpriv->pallocated_recv_buf = NULL;
-}
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c b/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c
deleted file mode 100644
index 7f55448d544e..000000000000
--- a/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c
+++ /dev/null
@@ -1,568 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <drv_types.h>
-#include <rtl8723b_hal.h>
-
-static u8 rtw_sdio_wait_enough_TxOQT_space(struct adapter *padapter, u8 agg_num)
-{
-	u32 n = 0;
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-
-	while (pHalData->SdioTxOQTFreeSpace < agg_num) {
-		if (
-			(padapter->bSurpriseRemoved) ||
-			(padapter->driver_stopped)
-		)
-			return false;
-
-		HalQueryTxOQTBufferStatus8723BSdio(padapter);
-
-		if ((++n % 60) == 0) {
-			msleep(1);
-			/* yield(); */
-		}
-	}
-
-	pHalData->SdioTxOQTFreeSpace -= agg_num;
-
-	return true;
-}
-
-static s32 rtl8723_dequeue_writeport(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
-	struct xmit_buf *pxmitbuf;
-	struct adapter *pri_padapter = padapter;
-	s32 ret = 0;
-	u8 PageIdx = 0;
-	u32 deviceId;
-	u8 bUpdatePageNum = false;
-
-	ret = ret || check_fwstate(pmlmepriv, _FW_UNDER_SURVEY);
-
-	if (ret)
-		pxmitbuf = dequeue_pending_xmitbuf_under_survey(pxmitpriv);
-	else
-		pxmitbuf = dequeue_pending_xmitbuf(pxmitpriv);
-
-	if (!pxmitbuf)
-		return true;
-
-	deviceId = ffaddr2deviceId(pdvobjpriv, pxmitbuf->ff_hwaddr);
-
-	/*  translate fifo addr to queue index */
-	switch (deviceId) {
-	case WLAN_TX_HIQ_DEVICE_ID:
-		PageIdx = HI_QUEUE_IDX;
-		break;
-
-	case WLAN_TX_MIQ_DEVICE_ID:
-		PageIdx = MID_QUEUE_IDX;
-		break;
-
-	case WLAN_TX_LOQ_DEVICE_ID:
-		PageIdx = LOW_QUEUE_IDX;
-		break;
-	}
-
-query_free_page:
-	/*  check if hardware tx fifo page is enough */
-	if (!rtw_hal_sdio_query_tx_freepage(pri_padapter, PageIdx, pxmitbuf->pg_num)) {
-		if (!bUpdatePageNum) {
-			/* Total page count is not available, so update current FIFO status */
-			HalQueryTxBufferStatus8723BSdio(padapter);
-			bUpdatePageNum = true;
-			goto query_free_page;
-		} else {
-			bUpdatePageNum = false;
-			enqueue_pending_xmitbuf_to_head(pxmitpriv, pxmitbuf);
-			return true;
-		}
-	}
-
-	if (
-		(padapter->bSurpriseRemoved) ||
-		(padapter->driver_stopped)
-	)
-		goto free_xmitbuf;
-
-	if (!rtw_sdio_wait_enough_TxOQT_space(padapter, pxmitbuf->agg_num))
-		goto free_xmitbuf;
-
-	traffic_check_for_leave_lps(padapter, true, pxmitbuf->agg_num);
-
-	rtw_write_port(padapter, deviceId, pxmitbuf->len, (u8 *)pxmitbuf);
-
-	rtw_hal_sdio_update_tx_freepage(pri_padapter, PageIdx, pxmitbuf->pg_num);
-
-free_xmitbuf:
-	/* rtw_free_xmitframe(pxmitpriv, pframe); */
-	/* pxmitbuf->priv_data = NULL; */
-	rtw_free_xmitbuf(pxmitpriv, pxmitbuf);
-
-	return _FAIL;
-}
-
-/*
- * Description
- *Transmit xmitbuf to hardware tx fifo
- *
- * Return
- *_SUCCESS	ok
- *_FAIL		something error
- */
-s32 rtl8723bs_xmit_buf_handler(struct adapter *padapter)
-{
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	u8 queue_empty, queue_pending;
-	s32 ret;
-
-	if (wait_for_completion_interruptible(&pxmitpriv->xmit_comp)) {
-		netdev_emerg(padapter->pnetdev,
-			     "%s: down SdioXmitBufSema fail!\n", __func__);
-		return _FAIL;
-	}
-
-	ret = (padapter->driver_stopped) || (padapter->bSurpriseRemoved);
-	if (ret)
-		return _FAIL;
-
-	queue_pending = check_pending_xmitbuf(pxmitpriv);
-
-	if (!queue_pending)
-		return _SUCCESS;
-
-	ret = rtw_register_tx_alive(padapter);
-	if (ret != _SUCCESS) {
-		return _SUCCESS;
-	}
-
-	do {
-		queue_empty = rtl8723_dequeue_writeport(padapter);
-/*	dump secondary adapter xmitbuf */
-	} while (!queue_empty);
-
-	rtw_unregister_tx_alive(padapter);
-
-	return _SUCCESS;
-}
-
-/*
- * Description:
- *Aggregation packets and send to hardware
- *
- * Return:
- *0	Success
- *-1	Hardware resource(TX FIFO) not ready
- *-2	Software resource(xmitbuf) not ready
- */
-static s32 xmit_xmitframes(struct adapter *padapter, struct xmit_priv *pxmitpriv)
-{
-	s32 err, ret;
-	u32 k = 0;
-	struct hw_xmit *hwxmits, *phwxmit;
-	u8 idx, hwentry;
-	struct tx_servq *ptxservq;
-	struct list_head *sta_plist, *sta_phead, *frame_plist, *frame_phead, *tmp;
-	struct xmit_frame *pxmitframe;
-	struct __queue *pframe_queue;
-	struct xmit_buf *pxmitbuf;
-	u32 txlen, max_xmit_len;
-	u8 txdesc_size = TXDESC_SIZE;
-	int inx[4];
-
-	err = 0;
-	hwxmits = pxmitpriv->hwxmits;
-	hwentry = pxmitpriv->hwxmit_entry;
-	ptxservq = NULL;
-	pxmitframe = NULL;
-	pframe_queue = NULL;
-	pxmitbuf = NULL;
-
-	if (padapter->registrypriv.wifi_spec == 1) {
-		for (idx = 0; idx < 4; idx++)
-			inx[idx] = pxmitpriv->wmm_para_seq[idx];
-	} else {
-		inx[0] = 0;
-		inx[1] = 1;
-		inx[2] = 2;
-		inx[3] = 3;
-	}
-
-	/*  0(VO), 1(VI), 2(BE), 3(BK) */
-	for (idx = 0; idx < hwentry; idx++) {
-		phwxmit = hwxmits + inx[idx];
-
-		if (
-			(check_pending_xmitbuf(pxmitpriv)) &&
-			(padapter->mlmepriv.link_detect_info.higher_busy_tx_traffic)
-		) {
-			if ((phwxmit->accnt > 0) && (phwxmit->accnt < 5)) {
-				err = -2;
-				break;
-			}
-		}
-
-		max_xmit_len = rtw_hal_get_sdio_tx_max_length(padapter, inx[idx]);
-
-		spin_lock_bh(&pxmitpriv->lock);
-
-		sta_phead = get_list_head(phwxmit->sta_queue);
-		/* because stop_sta_xmit may delete sta_plist at any time */
-		/* so we should add lock here, or while loop can not exit */
-		list_for_each_safe(sta_plist, tmp, sta_phead) {
-			ptxservq = list_entry(sta_plist, struct tx_servq,
-					      tx_pending);
-
-			pframe_queue = &ptxservq->sta_pending;
-
-			frame_phead = get_list_head(pframe_queue);
-
-			while (!list_empty(frame_phead)) {
-				frame_plist = get_next(frame_phead);
-				pxmitframe = container_of(frame_plist, struct xmit_frame, list);
-
-				/*  check xmit_buf size enough or not */
-				txlen = txdesc_size + rtw_wlan_pkt_size(pxmitframe);
-				if (!pxmitbuf ||
-					((_RND(pxmitbuf->len, 8) + txlen) > max_xmit_len) ||
-					(k >= (rtw_hal_sdio_max_txoqt_free_space(padapter) - 1))
-				) {
-					if (pxmitbuf) {
-						/* pxmitbuf->priv_data will be NULL, and will crash here */
-						if (pxmitbuf->len > 0 &&
-						    pxmitbuf->priv_data) {
-							struct xmit_frame *pframe;
-
-							pframe = (struct xmit_frame *)pxmitbuf->priv_data;
-							pframe->agg_num = k;
-							pxmitbuf->agg_num = k;
-							rtl8723b_update_txdesc(pframe, pframe->buf_addr);
-							rtw_free_xmitframe(pxmitpriv, pframe);
-							pxmitbuf->priv_data = NULL;
-							enqueue_pending_xmitbuf(pxmitpriv, pxmitbuf);
-							/* can not yield under lock */
-							/* yield(); */
-						} else
-							rtw_free_xmitbuf(pxmitpriv, pxmitbuf);
-					}
-
-					pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv);
-					if (!pxmitbuf) {
-						err = -2;
-						complete(&(pxmitpriv->xmit_comp));
-						break;
-					}
-					k = 0;
-				}
-
-				/*  ok to send, remove frame from queue */
-				if (check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE))
-					if (
-						(pxmitframe->attrib.psta->state & WIFI_SLEEP_STATE) &&
-						(pxmitframe->attrib.triggered == 0)
-					)
-						break;
-
-				list_del_init(&pxmitframe->list);
-				ptxservq->qcnt--;
-				phwxmit->accnt--;
-
-				if (k == 0) {
-					pxmitbuf->ff_hwaddr = rtw_get_ff_hwaddr(pxmitframe);
-					pxmitbuf->priv_data = (u8 *)pxmitframe;
-				}
-
-				/*  coalesce the xmitframe to xmitbuf */
-				pxmitframe->pxmitbuf = pxmitbuf;
-				pxmitframe->buf_addr = pxmitbuf->ptail;
-
-				ret = rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe);
-				if (ret) {
-					netdev_err(padapter->pnetdev,
-						   "%s: coalesce failed with error %d\n",
-						   __func__, ret);
-					/*  Todo: error handler */
-				} else {
-					k++;
-					if (k != 1)
-						rtl8723b_update_txdesc(pxmitframe, pxmitframe->buf_addr);
-					rtw_count_tx_stats(padapter, pxmitframe, pxmitframe->attrib.last_txcmdsz);
-
-					txlen = txdesc_size + pxmitframe->attrib.last_txcmdsz;
-					pxmitframe->pg_num = (txlen + 127) / 128;
-					pxmitbuf->pg_num += (txlen + 127) / 128;
-					pxmitbuf->ptail += _RND(txlen, 8); /*  round to 8 bytes alignment */
-					pxmitbuf->len = _RND(pxmitbuf->len, 8) + txlen;
-				}
-
-				if (k != 1)
-					rtw_free_xmitframe(pxmitpriv, pxmitframe);
-				pxmitframe = NULL;
-			}
-
-			if (list_empty(&pframe_queue->queue))
-				list_del_init(&ptxservq->tx_pending);
-
-			if (err)
-				break;
-		}
-		spin_unlock_bh(&pxmitpriv->lock);
-
-		/*  dump xmit_buf to hw tx fifo */
-		if (pxmitbuf) {
-			if (pxmitbuf->len > 0) {
-				struct xmit_frame *pframe;
-
-				pframe = (struct xmit_frame *)pxmitbuf->priv_data;
-				pframe->agg_num = k;
-				pxmitbuf->agg_num = k;
-				rtl8723b_update_txdesc(pframe, pframe->buf_addr);
-				rtw_free_xmitframe(pxmitpriv, pframe);
-				pxmitbuf->priv_data = NULL;
-				enqueue_pending_xmitbuf(pxmitpriv, pxmitbuf);
-				yield();
-			} else
-				rtw_free_xmitbuf(pxmitpriv, pxmitbuf);
-			pxmitbuf = NULL;
-		}
-
-		if (err)
-			break;
-	}
-
-	return err;
-}
-
-/*
- * Description
- *Transmit xmitframe from queue
- *
- * Return
- *_SUCCESS	ok
- *_FAIL		something error
- */
-static s32 rtl8723bs_xmit_handler(struct adapter *padapter)
-{
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	s32 ret;
-
-	if (wait_for_completion_interruptible(&pxmitpriv->SdioXmitStart)) {
-		netdev_emerg(padapter->pnetdev, "%s: SdioXmitStart fail!\n",
-			     __func__);
-		return _FAIL;
-	}
-
-next:
-	if (
-		(padapter->driver_stopped) ||
-		(padapter->bSurpriseRemoved)
-	)
-		return _FAIL;
-
-	spin_lock_bh(&pxmitpriv->lock);
-	ret = rtw_txframes_pending(padapter);
-	spin_unlock_bh(&pxmitpriv->lock);
-	if (ret == 0) {
-		return _SUCCESS;
-	}
-
-	/*  dequeue frame and write to hardware */
-
-	ret = xmit_xmitframes(padapter, pxmitpriv);
-	if (ret == -2) {
-		/* here sleep 1ms will cause big TP loss of TX */
-		/* from 50+ to 40+ */
-		if (padapter->registrypriv.wifi_spec)
-			msleep(1);
-		else
-			yield();
-		goto next;
-	}
-
-	spin_lock_bh(&pxmitpriv->lock);
-	ret = rtw_txframes_pending(padapter);
-	spin_unlock_bh(&pxmitpriv->lock);
-	if (ret == 1)
-		goto next;
-
-	return _SUCCESS;
-}
-
-int rtl8723bs_xmit_thread(void *context)
-{
-	s32 ret = _SUCCESS;
-	struct adapter *padapter = context;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-	allow_signal(SIGTERM);
-
-	do {
-		ret = rtl8723bs_xmit_handler(padapter);
-		if (signal_pending(current)) {
-			flush_signals(current);
-		}
-	} while (ret == _SUCCESS);
-
-	complete(&pxmitpriv->SdioXmitTerminate);
-
-	return 0;
-}
-
-s32 rtl8723bs_mgnt_xmit(
-	struct adapter *padapter, struct xmit_frame *pmgntframe
-)
-{
-	s32 ret = _SUCCESS;
-	struct pkt_attrib *pattrib = &pmgntframe->attrib;
-	struct xmit_buf *pxmitbuf = pmgntframe->pxmitbuf;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
-	u8 *pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-	u8 txdesc_size = TXDESC_SIZE;
-
-	rtl8723b_update_txdesc(pmgntframe, pmgntframe->buf_addr);
-
-	pxmitbuf->len = txdesc_size + pattrib->last_txcmdsz;
-	pxmitbuf->pg_num = (pxmitbuf->len + 127) / 128; /*  128 is tx page size */
-	pxmitbuf->ptail = pmgntframe->buf_addr + pxmitbuf->len;
-	pxmitbuf->ff_hwaddr = rtw_get_ff_hwaddr(pmgntframe);
-
-	rtw_count_tx_stats(padapter, pmgntframe, pattrib->last_txcmdsz);
-
-	rtw_free_xmitframe(pxmitpriv, pmgntframe);
-
-	pxmitbuf->priv_data = NULL;
-
-	if (GetFrameSubType(pframe) == WIFI_BEACON) { /* dump beacon directly */
-		ret = rtw_write_port(padapter, pdvobjpriv->Queue2Pipe[pxmitbuf->ff_hwaddr], pxmitbuf->len, (u8 *)pxmitbuf);
-		if (ret != _SUCCESS)
-			rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_WRITE_PORT_ERR);
-
-		rtw_free_xmitbuf(pxmitpriv, pxmitbuf);
-	} else
-		enqueue_pending_xmitbuf(pxmitpriv, pxmitbuf);
-
-	return ret;
-}
-
-/*
- * Description:
- *Handle xmitframe(packet) come from rtw_xmit()
- *
- * Return:
- * true      dump packet directly ok
- * false     enqueue, temporary can't transmit packets to hardware
- */
-s32 rtl8723bs_hal_xmit(
-	struct adapter *padapter, struct xmit_frame *pxmitframe
-)
-{
-	struct xmit_priv *pxmitpriv;
-	s32 err;
-
-	pxmitframe->attrib.qsel = pxmitframe->attrib.priority;
-	pxmitpriv = &padapter->xmitpriv;
-
-	if (
-		(pxmitframe->frame_tag == DATA_FRAMETAG) &&
-		(pxmitframe->attrib.ether_type != 0x0806) &&
-		(pxmitframe->attrib.ether_type != 0x888e) &&
-		(pxmitframe->attrib.dhcp_pkt != 1)
-	) {
-		if (padapter->mlmepriv.link_detect_info.busy_traffic)
-			rtw_issue_addbareq_cmd(padapter, pxmitframe);
-	}
-
-	spin_lock_bh(&pxmitpriv->lock);
-	err = rtw_xmitframe_enqueue(padapter, pxmitframe);
-	spin_unlock_bh(&pxmitpriv->lock);
-	if (err) {
-		rtw_free_xmitframe(pxmitpriv, pxmitframe);
-
-		pxmitpriv->tx_drop++;
-		return true;
-	}
-
-	complete(&pxmitpriv->SdioXmitStart);
-
-	return false;
-}
-
-s32	rtl8723bs_hal_xmitframe_enqueue(
-	struct adapter *padapter, struct xmit_frame *pxmitframe
-)
-{
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	s32 err;
-
-	err = rtw_xmitframe_enqueue(padapter, pxmitframe);
-	if (err) {
-		rtw_free_xmitframe(pxmitpriv, pxmitframe);
-
-		pxmitpriv->tx_drop++;
-	} else {
-		complete(&pxmitpriv->SdioXmitStart);
-	}
-
-	return err;
-
-}
-
-/*
- * Return
- *_SUCCESS	start thread ok
- *_FAIL		start thread fail
- *
- */
-s32 rtl8723bs_init_xmit_priv(struct adapter *padapter)
-{
-	struct xmit_priv *xmitpriv = &padapter->xmitpriv;
-	struct hal_com_data *phal;
-
-	phal = GET_HAL_DATA(padapter);
-
-	init_completion(&xmitpriv->SdioXmitStart);
-	init_completion(&xmitpriv->SdioXmitTerminate);
-
-	return _SUCCESS;
-}
-
-void rtl8723bs_free_xmit_priv(struct adapter *padapter)
-{
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct xmit_buf *pxmitbuf;
-	struct __queue *pqueue = &pxmitpriv->pending_xmitbuf_queue;
-	struct list_head *plist, *phead;
-	struct list_head tmplist;
-
-	phead = get_list_head(pqueue);
-	INIT_LIST_HEAD(&tmplist);
-
-	spin_lock_bh(&pqueue->lock);
-	if (!list_empty(&pqueue->queue)) {
-		/*  Insert tmplist to end of queue, and delete phead */
-		/*  then tmplist become head of queue. */
-		list_add_tail(&tmplist, phead);
-		list_del_init(phead);
-	}
-	spin_unlock_bh(&pqueue->lock);
-
-	phead = &tmplist;
-	while (!list_empty(phead)) {
-		plist = get_next(phead);
-		list_del_init(plist);
-
-		pxmitbuf = container_of(plist, struct xmit_buf, list);
-		rtw_free_xmitframe(pxmitpriv, (struct xmit_frame *)pxmitbuf->priv_data);
-		pxmitbuf->priv_data = NULL;
-		rtw_free_xmitbuf(pxmitpriv, pxmitbuf);
-	}
-}
diff --git a/drivers/staging/rtl8723bs/hal/sdio_halinit.c b/drivers/staging/rtl8723bs/hal/sdio_halinit.c
deleted file mode 100644
index 57d2925642e7..000000000000
--- a/drivers/staging/rtl8723bs/hal/sdio_halinit.c
+++ /dev/null
@@ -1,1192 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <drv_types.h>
-#include <rtl8723b_hal.h>
-
-#include "hal_com_h2c.h"
-/*
- * Description:
- *Call power on sequence to enable card
- *
- * Return:
- *_SUCCESS	enable success
- *_FAIL		enable fail
- */
-static u8 CardEnable(struct adapter *padapter)
-{
-	u8 bMacPwrCtrlOn;
-	u8 ret = _FAIL;
-
-	rtw_hal_get_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
-	if (!bMacPwrCtrlOn) {
-		/*  RSV_CTRL 0x1C[7:0] = 0x00 */
-		/*  unlock ISO/CLK/Power control register */
-		rtw_write8(padapter, REG_RSV_CTRL, 0x0);
-
-		ret = HalPwrSeqCmdParsing(padapter,
-					  PWR_CUT_ALL_MSK,
-					  PWR_FAB_ALL_MSK,
-					  PWR_INTF_SDIO_MSK,
-					  rtl8723B_card_enable_flow);
-		if (ret == _SUCCESS) {
-			bMacPwrCtrlOn = true;
-			rtw_hal_set_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
-		}
-	} else {
-		ret = _SUCCESS;
-	}
-
-	return ret;
-}
-
-static
-u8 _InitPowerOn_8723BS(struct adapter *padapter)
-{
-	u8 value8;
-	u16 value16;
-	u32 value32;
-	u8 ret;
-
-	/*  all of these MUST be configured before power on */
-
-	/*  only cmd52 can be used before power on(card enable) */
-	ret = CardEnable(padapter);
-	if (!ret)
-		return _FAIL;
-
-	/*  Radio-Off Pin Trigger */
-	value8 = rtw_read8(padapter, REG_GPIO_INTM + 1);
-	value8 |= BIT(1); /*  Enable falling edge triggering interrupt */
-	rtw_write8(padapter, REG_GPIO_INTM + 1, value8);
-	value8 = rtw_read8(padapter, REG_GPIO_IO_SEL_2 + 1);
-	value8 |= BIT(1);
-	rtw_write8(padapter, REG_GPIO_IO_SEL_2 + 1, value8);
-
-	/*  Enable power down and GPIO interrupt */
-	value16 = rtw_read16(padapter, REG_APS_FSMCO);
-	value16 |= EnPDN; /*  Enable HW power down and RF on */
-	rtw_write16(padapter, REG_APS_FSMCO, value16);
-
-	rtw_write8(padapter, REG_CR, 0x00);
-	/*  Enable MAC DMA/WMAC/SCHEDULE/SEC block */
-	value16 = rtw_read16(padapter, REG_CR);
-	value16 |= (
-		HCI_TXDMA_EN |
-		HCI_RXDMA_EN |
-		TXDMA_EN |
-		RXDMA_EN |
-		PROTOCOL_EN |
-		SCHEDULE_EN |
-		ENSEC |
-		CALTMR_EN
-	);
-	rtw_write16(padapter, REG_CR, value16);
-
-	hal_btcoex_PowerOnSetting(padapter);
-
-	/*  external switch to S1 */
-	/*  0x38[11] = 0x1 */
-	/*  0x4c[23] = 0x1 */
-	/*  0x64[0] = 0 */
-	value16 = rtw_read16(padapter, REG_PWR_DATA);
-	/*  Switch the control of EESK, EECS to RFC for DPDT or Antenna switch */
-	value16 |= BIT(11); /*  BIT_EEPRPAD_RFE_CTRL_EN */
-	rtw_write16(padapter, REG_PWR_DATA, value16);
-
-	value32 = rtw_read32(padapter, REG_LEDCFG0);
-	value32 |= BIT(23); /*  DPDT_SEL_EN, 1 for SW control */
-	rtw_write32(padapter, REG_LEDCFG0, value32);
-
-	value8 = rtw_read8(padapter, REG_PAD_CTRL1_8723B);
-	value8 &= ~BIT(0); /*  BIT_SW_DPDT_SEL_DATA, DPDT_SEL default configuration */
-	rtw_write8(padapter, REG_PAD_CTRL1_8723B, value8);
-
-	return _SUCCESS;
-}
-
-/* Tx Page FIFO threshold */
-static void _init_available_page_threshold(struct adapter *padapter,
-					   u8 numHQ,
-					   u8 numNQ,
-					   u8 numLQ,
-					   u8 numPubQ)
-{
-	u16 HQ_threshold, NQ_threshold, LQ_threshold;
-
-	HQ_threshold = (numPubQ + numHQ + 1) >> 1;
-	HQ_threshold |= (HQ_threshold << 8);
-
-	NQ_threshold = (numPubQ + numNQ + 1) >> 1;
-	NQ_threshold |= (NQ_threshold << 8);
-
-	LQ_threshold = (numPubQ + numLQ + 1) >> 1;
-	LQ_threshold |= (LQ_threshold << 8);
-
-	rtw_write16(padapter, 0x218, HQ_threshold);
-	rtw_write16(padapter, 0x21A, NQ_threshold);
-	rtw_write16(padapter, 0x21C, LQ_threshold);
-}
-
-static void _InitQueueReservedPage(struct adapter *padapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	struct registry_priv *pregistrypriv = &padapter->registrypriv;
-	u32 numHQ = 0;
-	u32 numLQ = 0;
-	u32 numNQ = 0;
-	u32 numPubQ;
-	u32 value32;
-	u8 value8;
-	bool bWiFiConfig	= pregistrypriv->wifi_spec;
-
-	if (pHalData->OutEpQueueSel & TX_SELE_HQ)
-		numHQ = bWiFiConfig ? WMM_NORMAL_PAGE_NUM_HPQ_8723B : NORMAL_PAGE_NUM_HPQ_8723B;
-
-	if (pHalData->OutEpQueueSel & TX_SELE_LQ)
-		numLQ = bWiFiConfig ? WMM_NORMAL_PAGE_NUM_LPQ_8723B : NORMAL_PAGE_NUM_LPQ_8723B;
-
-	/*  NOTE: This step shall be proceed before writing REG_RQPN. */
-	if (pHalData->OutEpQueueSel & TX_SELE_NQ)
-		numNQ = bWiFiConfig ? WMM_NORMAL_PAGE_NUM_NPQ_8723B : NORMAL_PAGE_NUM_NPQ_8723B;
-
-	numPubQ = TX_TOTAL_PAGE_NUMBER_8723B - numHQ - numLQ - numNQ;
-
-	value8 = (u8)_NPQ(numNQ);
-	rtw_write8(padapter, REG_RQPN_NPQ, value8);
-
-	/*  TX DMA */
-	value32 = _HPQ(numHQ) | _LPQ(numLQ) | _PUBQ(numPubQ) | LD_RQPN;
-	rtw_write32(padapter, REG_RQPN, value32);
-
-	rtw_hal_set_sdio_tx_max_length(padapter, numHQ, numNQ, numLQ, numPubQ);
-
-	_init_available_page_threshold(padapter, numHQ, numNQ, numLQ, numPubQ);
-}
-
-static void _InitTxBufferBoundary(struct adapter *padapter)
-{
-	struct registry_priv *pregistrypriv = &padapter->registrypriv;
-
-	/* u16 txdmactrl; */
-	u8 txpktbuf_bndy;
-
-	if (!pregistrypriv->wifi_spec) {
-		txpktbuf_bndy = TX_PAGE_BOUNDARY_8723B;
-	} else {
-		/* for WMM */
-		txpktbuf_bndy = WMM_NORMAL_TX_PAGE_BOUNDARY_8723B;
-	}
-
-	rtw_write8(padapter, REG_TXPKTBUF_BCNQ_BDNY_8723B, txpktbuf_bndy);
-	rtw_write8(padapter, REG_TXPKTBUF_MGQ_BDNY_8723B, txpktbuf_bndy);
-	rtw_write8(padapter, REG_TXPKTBUF_WMAC_LBK_BF_HD_8723B, txpktbuf_bndy);
-	rtw_write8(padapter, REG_TRXFF_BNDY, txpktbuf_bndy);
-	rtw_write8(padapter, REG_TDECTRL + 1, txpktbuf_bndy);
-}
-
-static void _InitNormalChipRegPriority(
-	struct adapter *Adapter,
-	u16 beQ,
-	u16 bkQ,
-	u16 viQ,
-	u16 voQ,
-	u16 mgtQ,
-	u16 hiQ
-)
-{
-	u16 value16 = (rtw_read16(Adapter, REG_TRXDMA_CTRL) & 0x7);
-
-	value16 |=
-		_TXDMA_BEQ_MAP(beQ)  |
-		_TXDMA_BKQ_MAP(bkQ)  |
-		_TXDMA_VIQ_MAP(viQ)  |
-		_TXDMA_VOQ_MAP(voQ)  |
-		_TXDMA_MGQ_MAP(mgtQ) |
-		_TXDMA_HIQ_MAP(hiQ);
-
-	rtw_write16(Adapter, REG_TRXDMA_CTRL, value16);
-}
-
-static void _InitNormalChipOneOutEpPriority(struct adapter *Adapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	u16 value = 0;
-
-	switch (pHalData->OutEpQueueSel) {
-	case TX_SELE_HQ:
-		value = QUEUE_HIGH;
-		break;
-	case TX_SELE_LQ:
-		value = QUEUE_LOW;
-		break;
-	case TX_SELE_NQ:
-		value = QUEUE_NORMAL;
-		break;
-	default:
-		break;
-	}
-
-	_InitNormalChipRegPriority(
-		Adapter, value, value, value, value, value, value
-	);
-
-}
-
-static void _InitNormalChipTwoOutEpPriority(struct adapter *Adapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-	struct registry_priv *pregistrypriv = &Adapter->registrypriv;
-	u16 beQ, bkQ, viQ, voQ, mgtQ, hiQ;
-
-	u16 valueHi = 0;
-	u16 valueLow = 0;
-
-	switch (pHalData->OutEpQueueSel) {
-	case (TX_SELE_HQ | TX_SELE_LQ):
-		valueHi = QUEUE_HIGH;
-		valueLow = QUEUE_LOW;
-		break;
-	case (TX_SELE_NQ | TX_SELE_LQ):
-		valueHi = QUEUE_NORMAL;
-		valueLow = QUEUE_LOW;
-		break;
-	case (TX_SELE_HQ | TX_SELE_NQ):
-		valueHi = QUEUE_HIGH;
-		valueLow = QUEUE_NORMAL;
-		break;
-	default:
-		break;
-	}
-
-	if (!pregistrypriv->wifi_spec) {
-		beQ = valueLow;
-		bkQ = valueLow;
-		viQ = valueHi;
-		voQ = valueHi;
-		mgtQ = valueHi;
-		hiQ = valueHi;
-	} else {
-		/* for WMM , CONFIG_OUT_EP_WIFI_MODE */
-		beQ = valueLow;
-		bkQ = valueHi;
-		viQ = valueHi;
-		voQ = valueLow;
-		mgtQ = valueHi;
-		hiQ = valueHi;
-	}
-
-	_InitNormalChipRegPriority(Adapter, beQ, bkQ, viQ, voQ, mgtQ, hiQ);
-
-}
-
-static void _InitNormalChipThreeOutEpPriority(struct adapter *padapter)
-{
-	struct registry_priv *pregistrypriv = &padapter->registrypriv;
-	u16 beQ, bkQ, viQ, voQ, mgtQ, hiQ;
-
-	if (!pregistrypriv->wifi_spec) {
-		/*  typical setting */
-		beQ = QUEUE_LOW;
-		bkQ = QUEUE_LOW;
-		viQ = QUEUE_NORMAL;
-		voQ = QUEUE_HIGH;
-		mgtQ = QUEUE_HIGH;
-		hiQ = QUEUE_HIGH;
-	} else {
-		/*  for WMM */
-		beQ = QUEUE_LOW;
-		bkQ = QUEUE_NORMAL;
-		viQ = QUEUE_NORMAL;
-		voQ = QUEUE_HIGH;
-		mgtQ = QUEUE_HIGH;
-		hiQ = QUEUE_HIGH;
-	}
-	_InitNormalChipRegPriority(padapter, beQ, bkQ, viQ, voQ, mgtQ, hiQ);
-}
-
-static void _InitQueuePriority(struct adapter *Adapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-
-	switch (pHalData->OutEpNumber) {
-	case 1:
-		_InitNormalChipOneOutEpPriority(Adapter);
-		break;
-	case 2:
-		_InitNormalChipTwoOutEpPriority(Adapter);
-		break;
-	case 3:
-		_InitNormalChipThreeOutEpPriority(Adapter);
-		break;
-	default:
-		break;
-	}
-}
-
-static void _InitPageBoundary(struct adapter *padapter)
-{
-	/*  RX Page Boundary */
-	u16 rxff_bndy = RX_DMA_BOUNDARY_8723B;
-
-	rtw_write16(padapter, (REG_TRXFF_BNDY + 2), rxff_bndy);
-}
-
-static void _InitTransferPageSize(struct adapter *padapter)
-{
-	/*  Tx page size is always 128. */
-
-	u8 value8;
-
-	value8 = _PSRX(PBP_128) | _PSTX(PBP_128);
-	rtw_write8(padapter, REG_PBP, value8);
-}
-
-static void _InitDriverInfoSize(struct adapter *padapter, u8 drvInfoSize)
-{
-	rtw_write8(padapter, REG_RX_DRVINFO_SZ, drvInfoSize);
-}
-
-static void _InitNetworkType(struct adapter *padapter)
-{
-	u32 value32;
-
-	value32 = rtw_read32(padapter, REG_CR);
-
-	/*  TODO: use the other function to set network type */
-	value32 = (value32 & ~MASK_NETTYPE) | _NETTYPE(NT_LINK_AP);
-
-	rtw_write32(padapter, REG_CR, value32);
-}
-
-static void _InitWMACSetting(struct adapter *padapter)
-{
-	struct hal_com_data *pHalData;
-	u16 value16;
-
-	pHalData = GET_HAL_DATA(padapter);
-
-	pHalData->ReceiveConfig = 0;
-	pHalData->ReceiveConfig |= RCR_APM | RCR_AM | RCR_AB;
-	pHalData->ReceiveConfig |= RCR_CBSSID_DATA | RCR_CBSSID_BCN | RCR_AMF;
-	pHalData->ReceiveConfig |= RCR_HTC_LOC_CTRL;
-	pHalData->ReceiveConfig |= RCR_APP_PHYST_RXFF | RCR_APP_ICV | RCR_APP_MIC;
-	rtw_write32(padapter, REG_RCR, pHalData->ReceiveConfig);
-
-	/*  Accept all multicast address */
-	rtw_write32(padapter, REG_MAR, 0xFFFFFFFF);	/* Offset 0x0620-0x0623 */
-	rtw_write32(padapter, REG_MAR + 4, 0xFFFFFFFF);	/* Offset 0x0624-0x0627 */
-
-	/*  Accept all data frames */
-	value16 = 0xFFFF;
-	rtw_write16(padapter, REG_RXFLTMAP2, value16);
-
-	/*  2010.09.08 hpfan */
-	/*  Since ADF is removed from RCR, ps-poll will not be indicate to driver, */
-	/*  RxFilterMap should mask ps-poll to guarantee AP mode can rx ps-poll. */
-	value16 = 0x400;
-	rtw_write16(padapter, REG_RXFLTMAP1, value16);
-
-	/*  Accept all management frames */
-	value16 = 0xFFFF;
-	rtw_write16(padapter, REG_RXFLTMAP0, value16);
-}
-
-static void _InitAdaptiveCtrl(struct adapter *padapter)
-{
-	u16 value16;
-	u32 value32;
-
-	/*  Response Rate Set */
-	value32 = rtw_read32(padapter, REG_RRSR);
-	value32 &= ~RATE_BITMAP_ALL;
-	value32 |= RATE_RRSR_CCK_ONLY_1M;
-	rtw_write32(padapter, REG_RRSR, value32);
-
-	/*  SIFS (used in NAV) */
-	value16 = _SPEC_SIFS_CCK(0x10) | _SPEC_SIFS_OFDM(0x10);
-	rtw_write16(padapter, REG_SPEC_SIFS, value16);
-
-	/*  Retry Limit */
-	value16 = _LRL(0x30) | _SRL(0x30);
-	rtw_write16(padapter, REG_RL, value16);
-}
-
-static void _InitEDCA(struct adapter *padapter)
-{
-	/*  Set Spec SIFS (used in NAV) */
-	rtw_write16(padapter, REG_SPEC_SIFS, 0x100a);
-	rtw_write16(padapter, REG_MAC_SPEC_SIFS, 0x100a);
-
-	/*  Set SIFS for CCK */
-	rtw_write16(padapter, REG_SIFS_CTX, 0x100a);
-
-	/*  Set SIFS for OFDM */
-	rtw_write16(padapter, REG_SIFS_TRX, 0x100a);
-
-	/*  TXOP */
-	rtw_write32(padapter, REG_EDCA_BE_PARAM, 0x005EA42B);
-	rtw_write32(padapter, REG_EDCA_BK_PARAM, 0x0000A44F);
-	rtw_write32(padapter, REG_EDCA_VI_PARAM, 0x005EA324);
-	rtw_write32(padapter, REG_EDCA_VO_PARAM, 0x002FA226);
-}
-
-static void _InitRetryFunction(struct adapter *padapter)
-{
-	u8 value8;
-
-	value8 = rtw_read8(padapter, REG_FWHW_TXQ_CTRL);
-	value8 |= EN_AMPDU_RTY_NEW;
-	rtw_write8(padapter, REG_FWHW_TXQ_CTRL, value8);
-
-	/*  Set ACK timeout */
-	rtw_write8(padapter, REG_ACKTO, 0x40);
-}
-
-static void HalRxAggr8723BSdio(struct adapter *padapter)
-{
-	u8 valueDMATimeout;
-	u8 valueDMAPageCount;
-
-	valueDMATimeout = 0x06;
-	valueDMAPageCount = 0x06;
-
-	rtw_write8(padapter, REG_RXDMA_AGG_PG_TH + 1, valueDMATimeout);
-	rtw_write8(padapter, REG_RXDMA_AGG_PG_TH, valueDMAPageCount);
-}
-
-static void sdio_AggSettingRxUpdate(struct adapter *padapter)
-{
-	u8 valueDMA;
-	u8 valueRxAggCtrl = 0;
-	u8 aggBurstNum = 3;  /* 0:1, 1:2, 2:3, 3:4 */
-	u8 aggBurstSize = 0;  /* 0:1K, 1:512Byte, 2:256Byte... */
-
-	valueDMA = rtw_read8(padapter, REG_TRXDMA_CTRL);
-	valueDMA |= RXDMA_AGG_EN;
-	rtw_write8(padapter, REG_TRXDMA_CTRL, valueDMA);
-
-	valueRxAggCtrl |= RXDMA_AGG_MODE_EN;
-	valueRxAggCtrl |= ((aggBurstNum << 2) & 0x0C);
-	valueRxAggCtrl |= ((aggBurstSize << 4) & 0x30);
-	rtw_write8(padapter, REG_RXDMA_MODE_CTRL_8723B, valueRxAggCtrl);/* RxAggLowThresh = 4*1K */
-}
-
-static void _initSdioAggregationSetting(struct adapter *padapter)
-{
-	/*  Rx aggregation setting */
-	HalRxAggr8723BSdio(padapter);
-
-	sdio_AggSettingRxUpdate(padapter);
-}
-
-static void _InitOperationMode(struct adapter *padapter)
-{
-	struct mlme_ext_priv *pmlmeext;
-	u8 regBwOpMode = 0;
-
-	pmlmeext = &padapter->mlmeextpriv;
-
-	/* 1 This part need to modified according to the rate set we filtered!! */
-	/*  */
-	/*  Set RRSR, RATR, and REG_BWOPMODE registers */
-	/*  */
-	switch (pmlmeext->cur_wireless_mode) {
-	case WIRELESS_MODE_B:
-		regBwOpMode = BW_OPMODE_20MHZ;
-		break;
-	case WIRELESS_MODE_G:
-		regBwOpMode = BW_OPMODE_20MHZ;
-		break;
-	case WIRELESS_MODE_AUTO:
-		regBwOpMode = BW_OPMODE_20MHZ;
-		break;
-	case WIRELESS_MODE_N_24G:
-		/*  It support CCK rate by default. */
-		/*  CCK rate will be filtered out only when associated AP does not support it. */
-		regBwOpMode = BW_OPMODE_20MHZ;
-		break;
-
-	default: /* for MacOSX compiler warning. */
-		break;
-	}
-
-	rtw_write8(padapter, REG_BWOPMODE, regBwOpMode);
-
-}
-
-static void _InitInterrupt(struct adapter *padapter)
-{
-	/*  HISR - turn all off */
-	rtw_write32(padapter, REG_HISR, 0);
-
-	/*  HIMR - turn all off */
-	rtw_write32(padapter, REG_HIMR, 0);
-
-	/*  */
-	/*  Initialize and enable SDIO Host Interrupt. */
-	/*  */
-	InitInterrupt8723BSdio(padapter);
-}
-
-static void _RfPowerSave(struct adapter *padapter)
-{
-/* YJ, TODO */
-}
-
-/*  */
-/*  2010/08/09 MH Add for power down check. */
-/*  */
-static bool HalDetectPwrDownMode(struct adapter *Adapter)
-{
-	u8 tmpvalue;
-	struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
-	struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(Adapter);
-
-	rtw_efuse_shadow_read(Adapter, 1, 0x7B/*EEPROM_RF_OPT3_92C*/, (u32 *)&tmpvalue);
-
-	/*  2010/08/25 MH INF priority > PDN Efuse value. */
-	if (tmpvalue & BIT(4) && pwrctrlpriv->reg_pdnmode)
-		pHalData->pwrdown = true;
-	else
-		pHalData->pwrdown = false;
-
-	return pHalData->pwrdown;
-}	/*  HalDetectPwrDownMode */
-
-u32 rtl8723bs_hal_init(struct adapter *padapter)
-{
-	s32 ret;
-	struct hal_com_data *pHalData;
-	struct pwrctrl_priv *pwrctrlpriv;
-	u32 NavUpper = WiFiNavUpperUs;
-	u8 val;
-
-	pHalData = GET_HAL_DATA(padapter);
-	pwrctrlpriv = adapter_to_pwrctl(padapter);
-
-	if (adapter_to_pwrctl(padapter)->bips_processing &&
-	    adapter_to_pwrctl(padapter)->pre_ips_type == 0) {
-		unsigned long start_time;
-		u8 cpwm_orig, cpwm_now;
-		u8 val8, bMacPwrCtrlOn = true;
-
-		/* for polling cpwm */
-		cpwm_orig = 0;
-		rtw_hal_get_hwreg(padapter, HW_VAR_CPWM, &cpwm_orig);
-
-		/* set rpwm */
-		val8 = rtw_read8(padapter, SDIO_LOCAL_BASE | SDIO_REG_HRPWM1);
-		val8 &= 0x80;
-		val8 += 0x80;
-		val8 |= BIT(6);
-		rtw_write8(padapter, SDIO_LOCAL_BASE | SDIO_REG_HRPWM1, val8);
-		adapter_to_pwrctl(padapter)->tog = (val8 + 0x80) & 0x80;
-
-		/* do polling cpwm */
-		start_time = jiffies;
-		do {
-
-			mdelay(1);
-
-			rtw_hal_get_hwreg(padapter, HW_VAR_CPWM, &cpwm_now);
-			if ((cpwm_orig ^ cpwm_now) & 0x80)
-				break;
-
-			if (jiffies_to_msecs(jiffies - start_time) > 100)
-				break;
-
-		} while (1);
-
-		rtl8723b_set_FwPwrModeInIPS_cmd(padapter, 0);
-
-		rtw_hal_set_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
-
-		hal_btcoex_InitHwConfig(padapter, false);
-
-		return _SUCCESS;
-	}
-
-	ret = _InitPowerOn_8723BS(padapter);
-	if (ret == _FAIL)
-		return _FAIL;
-
-	rtw_write8(padapter, REG_EARLY_MODE_CONTROL, 0);
-
-	ret = rtl8723b_FirmwareDownload(padapter, false);
-	if (ret != _SUCCESS) {
-		padapter->bFWReady = false;
-		pHalData->fw_ractrl = false;
-		return ret;
-	}
-
-	padapter->bFWReady = true;
-	pHalData->fw_ractrl = true;
-
-	rtl8723b_InitializeFirmwareVars(padapter);
-
-	if (pwrctrlpriv->reg_rfoff)
-		pwrctrlpriv->rf_pwrstate = rf_off;
-
-	/*  2010/08/09 MH We need to check if we need to turnon or off RF after detecting */
-	/*  HW GPIO pin. Before PHY_RFConfig8192C. */
-	HalDetectPwrDownMode(padapter);
-
-	/*  Save target channel */
-	/*  <Roger_Notes> Current Channel will be updated again later. */
-	pHalData->CurrentChannel = 6;
-
-	ret = PHY_MACConfig8723B(padapter);
-	if (ret != _SUCCESS)
-		return ret;
-	/*  */
-	/* d. Initialize BB related configurations. */
-	/*  */
-	ret = PHY_BBConfig8723B(padapter);
-	if (ret != _SUCCESS)
-		return ret;
-
-	/*  If RF is on, we need to init RF. Otherwise, skip the procedure. */
-	/*  We need to follow SU method to change the RF cfg.txt. Default disable RF TX/RX mode. */
-	/* if (pHalData->eRFPowerState == eRfOn) */
-	{
-		ret = PHY_RFConfig8723B(padapter);
-		if (ret != _SUCCESS)
-			return ret;
-	}
-
-	/*  */
-	/*  Joseph Note: Keep RfRegChnlVal for later use. */
-	/*  */
-	pHalData->RfRegChnlVal[0] =
-		PHY_QueryRFReg(padapter, (enum rf_path)0, RF_CHNLBW, bRFRegOffsetMask);
-	pHalData->RfRegChnlVal[1] =
-		PHY_QueryRFReg(padapter, (enum rf_path)1, RF_CHNLBW, bRFRegOffsetMask);
-
-	_InitQueueReservedPage(padapter);
-	_InitTxBufferBoundary(padapter);
-
-	/*  init LLT after tx buffer boundary is defined */
-	ret = rtl8723b_InitLLTTable(padapter);
-	if (ret != _SUCCESS)
-		return _FAIL;
-
-	/*  */
-	_InitQueuePriority(padapter);
-	_InitPageBoundary(padapter);
-	_InitTransferPageSize(padapter);
-
-	/*  Get Rx PHY status in order to report RSSI and others. */
-	_InitDriverInfoSize(padapter, DRVINFO_SZ);
-	hal_init_macaddr(padapter);
-	_InitNetworkType(padapter);
-	_InitWMACSetting(padapter);
-	_InitAdaptiveCtrl(padapter);
-	_InitEDCA(padapter);
-	_InitRetryFunction(padapter);
-	_initSdioAggregationSetting(padapter);
-	_InitOperationMode(padapter);
-	rtl8723b_InitBeaconParameters(padapter);
-	_InitInterrupt(padapter);
-	_InitBurstPktLen_8723BS(padapter);
-
-	/* YJ, TODO */
-	rtw_write8(padapter, REG_SECONDARY_CCA_CTRL_8723B, 0x3);	/*  CCA */
-	rtw_write8(padapter, 0x976, 0);	/*  hpfan_todo: 2nd CCA related */
-
-	rtw_write16(padapter, REG_PKT_VO_VI_LIFE_TIME, 0x0400);	/*  unit: 256us. 256ms */
-	rtw_write16(padapter, REG_PKT_BE_BK_LIFE_TIME, 0x0400);	/*  unit: 256us. 256ms */
-
-	invalidate_cam_all(padapter);
-
-	rtw_hal_set_chnl_bw(padapter, padapter->registrypriv.channel,
-		CHANNEL_WIDTH_20, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HAL_PRIME_CHNL_OFFSET_DONT_CARE);
-
-	rtl8723b_InitAntenna_Selection(padapter);
-
-	/*  */
-	/*  Disable BAR, suggested by Scott */
-	/*  2010.04.09 add by hpfan */
-	/*  */
-	rtw_write32(padapter, REG_BAR_MODE_CTRL, 0x0201ffff);
-
-	/*  HW SEQ CTRL */
-	/*  set 0x0 to 0xFF by tynli. Default enable HW SEQ NUM. */
-	rtw_write8(padapter, REG_HWSEQ_CTRL, 0xFF);
-
-	/*  */
-	/*  Configure SDIO TxRx Control to enable Rx DMA timer masking. */
-	/*  2010.02.24. */
-	/*  */
-	rtw_write32(padapter, SDIO_LOCAL_BASE | SDIO_REG_TX_CTRL, 0);
-
-	_RfPowerSave(padapter);
-
-	rtl8723b_InitHalDm(padapter);
-
-	/*  */
-	/*  Update current Tx FIFO page status. */
-	/*  */
-	HalQueryTxBufferStatus8723BSdio(padapter);
-	HalQueryTxOQTBufferStatus8723BSdio(padapter);
-	pHalData->SdioTxOQTMaxFreeSpace = pHalData->SdioTxOQTFreeSpace;
-
-	/*  Enable MACTXEN/MACRXEN block */
-	val = rtw_read8(padapter, REG_CR);
-	val |= (MACTXEN | MACRXEN);
-	rtw_write8(padapter, REG_CR, val);
-
-	rtw_hal_set_hwreg(padapter, HW_VAR_NAV_UPPER, (u8 *)&NavUpper);
-
-	/* ack for xmit mgmt frames. */
-	rtw_write32(padapter, REG_FWHW_TXQ_CTRL, rtw_read32(padapter, REG_FWHW_TXQ_CTRL) | BIT(12));
-
-	{
-		pwrctrlpriv->rf_pwrstate = rf_on;
-
-		if (pwrctrlpriv->rf_pwrstate == rf_on) {
-			struct pwrctrl_priv *pwrpriv;
-			unsigned long start_time;
-			u8 restore_iqk_rst;
-			u8 b2Ant;
-			u8 h2cCmdBuf;
-
-			pwrpriv = adapter_to_pwrctl(padapter);
-
-			PHY_LCCalibrate_8723B(&pHalData->odmpriv);
-
-			/* Inform WiFi FW that it is the beginning of IQK */
-			h2cCmdBuf = 1;
-			FillH2CCmd8723B(padapter, H2C_8723B_BT_WLAN_CALIBRATION, 1, &h2cCmdBuf);
-
-			start_time = jiffies;
-			do {
-				if (rtw_read8(padapter, 0x1e7) & 0x01)
-					break;
-
-				msleep(50);
-			} while (jiffies_to_msecs(jiffies - start_time) <= 400);
-
-			hal_btcoex_IQKNotify(padapter, true);
-
-			restore_iqk_rst = pwrpriv->bips_processing;
-			b2Ant = pHalData->EEPROMBluetoothAntNum == Ant_x2;
-			PHY_IQCalibrate_8723B(padapter,
-					      false,
-					      restore_iqk_rst,
-					      b2Ant,
-					      pHalData->ant_path);
-			pHalData->odmpriv.RFCalibrateInfo.bIQKInitialized = true;
-
-			hal_btcoex_IQKNotify(padapter, false);
-
-			/* Inform WiFi FW that it is the finish of IQK */
-			h2cCmdBuf = 0;
-			FillH2CCmd8723B(padapter, H2C_8723B_BT_WLAN_CALIBRATION, 1, &h2cCmdBuf);
-
-			ODM_TXPowerTrackingCheck(&pHalData->odmpriv);
-		}
-	}
-
-	/*  Init BT hw config. */
-	hal_btcoex_InitHwConfig(padapter, false);
-
-	return _SUCCESS;
-}
-
-/*  */
-/*  Description: */
-/*	RTL8723e card disable power sequence v003 which suggested by Scott. */
-/*  */
-/*  First created by tynli. 2011.01.28. */
-/*  */
-static void CardDisableRTL8723BSdio(struct adapter *padapter)
-{
-	u8 val;
-	u8 bMacPwrCtrlOn;
-
-	/*  Run LPS WL RFOFF flow */
-	HalPwrSeqCmdParsing(padapter,
-			    PWR_CUT_ALL_MSK,
-			    PWR_FAB_ALL_MSK,
-			    PWR_INTF_SDIO_MSK,
-			    rtl8723B_enter_lps_flow);
-
-	/*	==== Reset digital sequence   ====== */
-
-	val = rtw_read8(padapter, REG_MCUFWDL);
-	if ((val & RAM_DL_SEL) && padapter->bFWReady) /* 8051 RAM code */
-		rtl8723b_FirmwareSelfReset(padapter);
-
-	/*  Reset MCU 0x2[10]= 0. Suggested by Filen. 2011.01.26. by tynli. */
-	val = rtw_read8(padapter, REG_SYS_FUNC_EN + 1);
-	val &= ~BIT(2);	/*  0x2[10], FEN_CPUEN */
-	rtw_write8(padapter, REG_SYS_FUNC_EN + 1, val);
-
-	/*  MCUFWDL 0x80[1:0]= 0 */
-	/*  reset MCU ready status */
-	rtw_write8(padapter, REG_MCUFWDL, 0);
-
-	/*  Reset MCU IO Wrapper, added by Roger, 2011.08.30 */
-	val = rtw_read8(padapter, REG_RSV_CTRL + 1);
-	val &= ~BIT(0);
-	rtw_write8(padapter, REG_RSV_CTRL + 1, val);
-	val = rtw_read8(padapter, REG_RSV_CTRL + 1);
-	val |= BIT(0);
-	rtw_write8(padapter, REG_RSV_CTRL + 1, val);
-
-	/*	==== Reset digital sequence end ====== */
-
-	bMacPwrCtrlOn = false;	/*  Disable CMD53 R/W */
-	rtw_hal_set_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
-	HalPwrSeqCmdParsing(padapter,
-			    PWR_CUT_ALL_MSK,
-			    PWR_FAB_ALL_MSK,
-			    PWR_INTF_SDIO_MSK,
-			    rtl8723B_card_disable_flow);
-}
-
-u32 rtl8723bs_hal_deinit(struct adapter *padapter)
-{
-	if (padapter->hw_init_completed) {
-		if (adapter_to_pwrctl(padapter)->bips_processing) {
-			if (padapter->netif_up) {
-				int cnt = 0;
-				u8 val8 = 0;
-
-				rtl8723b_set_FwPwrModeInIPS_cmd(padapter, 0x3);
-				/*
-				 * poll 0x1cc to make sure H2C command already finished by FW;
-				 * MAC_0x1cc = 0 means H2C done by FW.
-				 */
-				do {
-					val8 = rtw_read8(padapter, REG_HMETFR);
-					cnt++;
-					mdelay(10);
-				} while (cnt < 100 && (val8 != 0));
-				/* H2C done, enter 32k */
-				if (val8 == 0) {
-					/* set rpwm to enter 32k */
-					val8 = rtw_read8(padapter,
-							 SDIO_LOCAL_BASE | SDIO_REG_HRPWM1);
-					val8 += 0x80;
-					val8 |= BIT(0);
-					rtw_write8(padapter,
-						   SDIO_LOCAL_BASE | SDIO_REG_HRPWM1,
-						   val8);
-					adapter_to_pwrctl(padapter)->tog = (val8 + 0x80) & 0x80;
-					cnt = val8 = 0;
-					do {
-						val8 = rtw_read8(padapter, REG_CR);
-						cnt++;
-						mdelay(10);
-					} while (cnt < 100 && (val8 != 0xEA));
-				}
-
-				adapter_to_pwrctl(padapter)->pre_ips_type = 0;
-
-			} else {
-				CardDisableRTL8723BSdio(padapter);
-
-				adapter_to_pwrctl(padapter)->pre_ips_type = 1;
-			}
-
-		} else {
-			CardDisableRTL8723BSdio(padapter);
-		}
-	}
-
-	return _SUCCESS;
-}
-
-void rtl8723bs_init_default_value(struct adapter *padapter)
-{
-	struct hal_com_data *pHalData;
-
-	pHalData = GET_HAL_DATA(padapter);
-
-	rtl8723b_init_default_value(padapter);
-
-	/*  interface related variable */
-	pHalData->SdioRxFIFOCnt = 0;
-}
-
-void rtl8723bs_interface_configure(struct adapter *padapter)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
-	struct registry_priv *pregistrypriv = &padapter->registrypriv;
-	bool bWiFiConfig = pregistrypriv->wifi_spec;
-
-	pdvobjpriv->RtOutPipe[0] = WLAN_TX_HIQ_DEVICE_ID;
-	pdvobjpriv->RtOutPipe[1] = WLAN_TX_MIQ_DEVICE_ID;
-	pdvobjpriv->RtOutPipe[2] = WLAN_TX_LOQ_DEVICE_ID;
-
-	if (bWiFiConfig)
-		pHalData->OutEpNumber = 2;
-	else
-		pHalData->OutEpNumber = SDIO_MAX_TX_QUEUE;
-
-	switch (pHalData->OutEpNumber) {
-	case 3:
-		pHalData->OutEpQueueSel = TX_SELE_HQ | TX_SELE_LQ | TX_SELE_NQ;
-		break;
-	case 2:
-		pHalData->OutEpQueueSel = TX_SELE_HQ | TX_SELE_NQ;
-		break;
-	case 1:
-		pHalData->OutEpQueueSel = TX_SELE_HQ;
-		break;
-	default:
-		break;
-	}
-
-	Hal_MappingOutPipe(padapter, pHalData->OutEpNumber);
-}
-
-/*  */
-/*	Description: */
-/*		We should set Efuse cell selection to WiFi cell in default. */
-/*  */
-/*	Assumption: */
-/*		PASSIVE_LEVEL */
-/*  */
-/*	Added by Roger, 2010.11.23. */
-/*  */
-static void _EfuseCellSel(struct adapter *padapter)
-{
-	u32 value32;
-
-	value32 = rtw_read32(padapter, EFUSE_TEST);
-	value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_WIFI_SEL_0);
-	rtw_write32(padapter, EFUSE_TEST, value32);
-}
-
-static void Hal_EfuseParseMACAddr_8723BS(
-	struct adapter *padapter, u8 *hwinfo, bool AutoLoadFail
-)
-{
-	struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
-
-	if (AutoLoadFail) {
-		eth_random_addr(pEEPROM->mac_addr);
-	} else {
-		/* Read Permanent MAC address */
-		memcpy(pEEPROM->mac_addr, &hwinfo[EEPROM_MAC_ADDR_8723BS], ETH_ALEN);
-	}
-}
-
-static void Hal_EfuseParseBoardType_8723BS(
-	struct adapter *padapter, u8 *hwinfo, bool AutoLoadFail
-)
-{
-	struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
-
-	if (!AutoLoadFail) {
-		pHalData->BoardType = (hwinfo[EEPROM_RF_BOARD_OPTION_8723B] & 0xE0) >> 5;
-		if (pHalData->BoardType == 0xFF)
-			pHalData->BoardType = (EEPROM_DEFAULT_BOARD_OPTION & 0xE0) >> 5;
-	} else {
-		pHalData->BoardType = 0;
-	}
-}
-
-static void _ReadEfuseInfo8723BS(struct adapter *padapter)
-{
-	struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
-	u8 *hwinfo = NULL;
-
-	/*  */
-	/*  This part read and parse the eeprom/efuse content */
-	/*  */
-
-	hwinfo = pEEPROM->efuse_eeprom_data;
-
-	Hal_InitPGData(padapter, hwinfo);
-
-	Hal_EfuseParseIDCode(padapter, hwinfo);
-
-	Hal_EfuseParseMACAddr_8723BS(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
-
-	Hal_EfuseParseTxPowerInfo_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
-	Hal_EfuseParseBoardType_8723BS(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
-
-	/*  */
-	/*  Read Bluetooth co-exist and initialize */
-	/*  */
-	Hal_EfuseParsePackageType_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
-	Hal_EfuseParseBTCoexistInfo_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
-	Hal_EfuseParseChnlPlan_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
-	Hal_EfuseParseXtal_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
-	Hal_EfuseParseThermalMeter_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
-
-	Hal_EfuseParseVoltage_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
-
-	Hal_ReadRFGainOffset(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
-}
-
-static void _ReadPROMContent(struct adapter *padapter)
-{
-	struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
-	u8 eeValue;
-
-	eeValue = rtw_read8(padapter, REG_9346CR);
-	/*  To check system boot selection. */
-	pEEPROM->EepromOrEfuse = (eeValue & BOOT_FROM_EEPROM) ? true : false;
-	pEEPROM->bautoload_fail_flag = (eeValue & EEPROM_EN) ? false : true;
-
-	_ReadEfuseInfo8723BS(padapter);
-}
-
-/*  */
-/*	Description: */
-/*		Read HW adapter information by E-Fuse or EEPROM according CR9346 reported. */
-/*  */
-/*	Assumption: */
-/*		PASSIVE_LEVEL (SDIO interface) */
-/*  */
-/*  */
-static s32 _ReadAdapterInfo8723BS(struct adapter *padapter)
-{
-	u8 val8;
-
-	/*  before access eFuse, make sure card enable has been called */
-	if (!padapter->hw_init_completed)
-		_InitPowerOn_8723BS(padapter);
-
-	val8 = rtw_read8(padapter, 0x4e);
-	val8 |= BIT(6);
-	rtw_write8(padapter, 0x4e, val8);
-
-	_EfuseCellSel(padapter);
-	_ReadPROMContent(padapter);
-
-	if (!padapter->hw_init_completed) {
-		/*  for BT, Switch Ant control to BT */
-		rtw_write8(padapter, 0x67, 0x00);
-
-		/*
-		 * for the power consumption issue, wifi ko module is loaded during booting,
-		 * but wifi GUI is off
-		 */
-		CardDisableRTL8723BSdio(padapter);
-	}
-
-	return _SUCCESS;
-}
-
-void rtw_read_adapter_info(struct adapter *padapter)
-{
-	/*  Read EEPROM size before call any EEPROM function */
-	padapter->EepromAddressSize = GetEEPROMSize8723B(padapter);
-
-	_ReadAdapterInfo8723BS(padapter);
-}
-
-/*
- * If variable not handled here,
- * some variables will be processed in SetHwReg8723B()
- */
-void SetHwReg8723BS(struct adapter *padapter, u8 variable, u8 *val)
-{
-	u8 val8;
-
-	switch (variable) {
-	case HW_VAR_SET_RPWM:
-		/*  rpwm value only use BIT0(clock bit) , BIT6(Ack bit), and BIT7(Toggle bit) */
-		/*  BIT0 value - 1: 32k, 0:40MHz. */
-		/*  BIT6 value - 1: report cpwm value after success set, 0:do not report. */
-		/*  BIT7 value - Toggle bit change. */
-		{
-			val8 = *val;
-			val8 &= 0xC1;
-			rtw_write8(padapter, SDIO_LOCAL_BASE | SDIO_REG_HRPWM1, val8);
-		}
-		break;
-	case HW_VAR_SET_REQ_FW_PS:
-		{
-			u8 req_fw_ps = 0;
-
-			req_fw_ps = rtw_read8(padapter, 0x8f);
-			req_fw_ps |= 0x10;
-			rtw_write8(padapter, 0x8f, req_fw_ps);
-		}
-		break;
-	case HW_VAR_RXDMA_AGG_PG_TH:
-		val8 = *val;
-		break;
-
-	case HW_VAR_DM_IN_LPS:
-		rtl8723b_hal_dm_in_lps(padapter);
-		break;
-	default:
-		SetHwReg8723B(padapter, variable, val);
-		break;
-	}
-}
-
-/*
- * If variable not handled here,
- * some variables will be processed in GetHwReg8723B()
- */
-void GetHwReg8723BS(struct adapter *padapter, u8 variable, u8 *val)
-{
-	switch (variable) {
-	case HW_VAR_CPWM:
-		*val = rtw_read8(padapter, SDIO_LOCAL_BASE | SDIO_REG_HCPWM1_8723B);
-		break;
-
-	case HW_VAR_FW_PS_STATE:
-		{
-			/* 3. read dword 0x88               driver read fw ps state */
-			*((u16 *)val) = rtw_read16(padapter, 0x88);
-		}
-		break;
-	default:
-		GetHwReg8723B(padapter, variable, val);
-		break;
-	}
-}
-
-void SetHwRegWithBuf8723B(struct adapter *padapter, u8 variable, u8 *pbuf, int len)
-{
-	switch (variable) {
-	case HW_VAR_C2H_HANDLE:
-		C2HPacketHandler_8723B(padapter, pbuf, len);
-		break;
-	default:
-		break;
-	}
-}
-
-/*  */
-/*	Description: */
-/*		Query setting of specified variable. */
-/*  */
-u8 GetHalDefVar8723BSDIO(
-	struct adapter *Adapter, enum hal_def_variable eVariable, void *pValue
-)
-{
-	u8 bResult = _SUCCESS;
-
-	switch (eVariable) {
-	case HAL_DEF_IS_SUPPORT_ANT_DIV:
-		break;
-	case HAL_DEF_CURRENT_ANTENNA:
-		break;
-	case HW_VAR_MAX_RX_AMPDU_FACTOR:
-		/*  Stanley@BB.SD3 suggests 16K can get stable performance */
-		/*  coding by Lucas@20130730 */
-		*(u32 *)pValue = IEEE80211_HT_MAX_AMPDU_16K;
-		break;
-	default:
-		bResult = GetHalDefVar8723B(Adapter, eVariable, pValue);
-		break;
-	}
-
-	return bResult;
-}
diff --git a/drivers/staging/rtl8723bs/hal/sdio_ops.c b/drivers/staging/rtl8723bs/hal/sdio_ops.c
deleted file mode 100644
index da2d9088ab5a..000000000000
--- a/drivers/staging/rtl8723bs/hal/sdio_ops.c
+++ /dev/null
@@ -1,859 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- *******************************************************************************/
-#include <drv_types.h>
-#include <rtl8723b_hal.h>
-
-/*  */
-/*  Description: */
-/*	The following mapping is for SDIO host local register space. */
-/*  */
-/*  Creadted by Roger, 2011.01.31. */
-/*  */
-static void hal_sdio_get_cmd_addr_8723b(struct adapter *adapter, u8 device_id,
-					u32 addr, u32 *cmdaddr)
-{
-	switch (device_id) {
-	case SDIO_LOCAL_DEVICE_ID:
-		*cmdaddr = ((SDIO_LOCAL_DEVICE_ID << 13) | (addr & SDIO_LOCAL_MSK));
-		break;
-
-	case WLAN_IOREG_DEVICE_ID:
-		*cmdaddr = ((WLAN_IOREG_DEVICE_ID << 13) | (addr & WLAN_IOREG_MSK));
-		break;
-
-	case WLAN_TX_HIQ_DEVICE_ID:
-		*cmdaddr = ((WLAN_TX_HIQ_DEVICE_ID << 13) | (addr & WLAN_FIFO_MSK));
-		break;
-
-	case WLAN_TX_MIQ_DEVICE_ID:
-		*cmdaddr = ((WLAN_TX_MIQ_DEVICE_ID << 13) | (addr & WLAN_FIFO_MSK));
-		break;
-
-	case WLAN_TX_LOQ_DEVICE_ID:
-		*cmdaddr = ((WLAN_TX_LOQ_DEVICE_ID << 13) | (addr & WLAN_FIFO_MSK));
-		break;
-
-	case WLAN_RX0FF_DEVICE_ID:
-		*cmdaddr = ((WLAN_RX0FF_DEVICE_ID << 13) | (addr & WLAN_RX0FF_MSK));
-		break;
-
-	default:
-		break;
-	}
-}
-
-static u8 get_deviceid(u32 addr)
-{
-	u8 devide_id;
-	u16 pseudo_id;
-
-	pseudo_id = (u16)(addr >> 16);
-	switch (pseudo_id) {
-	case 0x1025:
-		devide_id = SDIO_LOCAL_DEVICE_ID;
-		break;
-
-	case 0x1026:
-		devide_id = WLAN_IOREG_DEVICE_ID;
-		break;
-
-	case 0x1031:
-		devide_id = WLAN_TX_HIQ_DEVICE_ID;
-		break;
-
-	case 0x1032:
-		devide_id = WLAN_TX_MIQ_DEVICE_ID;
-		break;
-
-	case 0x1033:
-		devide_id = WLAN_TX_LOQ_DEVICE_ID;
-		break;
-
-	case 0x1034:
-		devide_id = WLAN_RX0FF_DEVICE_ID;
-		break;
-
-	default:
-		devide_id = WLAN_IOREG_DEVICE_ID;
-		break;
-	}
-
-	return devide_id;
-}
-
-static u32 _cvrt2ftaddr(const u32 addr, u8 *pdevice_id, u16 *poffset)
-{
-	u8 device_id;
-	u16 offset;
-	u32 ftaddr;
-
-	device_id = get_deviceid(addr);
-	offset = 0;
-
-	switch (device_id) {
-	case SDIO_LOCAL_DEVICE_ID:
-		offset = addr & SDIO_LOCAL_MSK;
-		break;
-
-	case WLAN_TX_HIQ_DEVICE_ID:
-	case WLAN_TX_MIQ_DEVICE_ID:
-	case WLAN_TX_LOQ_DEVICE_ID:
-		offset = addr & WLAN_FIFO_MSK;
-		break;
-
-	case WLAN_RX0FF_DEVICE_ID:
-		offset = addr & WLAN_RX0FF_MSK;
-		break;
-
-	case WLAN_IOREG_DEVICE_ID:
-	default:
-		device_id = WLAN_IOREG_DEVICE_ID;
-		offset = addr & WLAN_IOREG_MSK;
-		break;
-	}
-	ftaddr = (device_id << 13) | offset;
-
-	if (pdevice_id)
-		*pdevice_id = device_id;
-	if (poffset)
-		*poffset = offset;
-
-	return ftaddr;
-}
-
-static u8 sdio_read8(struct intf_hdl *intfhdl, u32 addr)
-{
-	u32 ftaddr;
-
-	ftaddr = _cvrt2ftaddr(addr, NULL, NULL);
-
-	return sd_read8(intfhdl, ftaddr, NULL);
-}
-
-static u16 sdio_read16(struct intf_hdl *intfhdl, u32 addr)
-{
-	u32 ftaddr;
-	__le16 le_tmp;
-
-	ftaddr = _cvrt2ftaddr(addr, NULL, NULL);
-	sd_cmd52_read(intfhdl, ftaddr, 2, (u8 *)&le_tmp);
-
-	return le16_to_cpu(le_tmp);
-}
-
-static u32 sdio_read32(struct intf_hdl *intfhdl, u32 addr)
-{
-	struct adapter *adapter;
-	u8 mac_pwr_ctrl_on;
-	u8 device_id;
-	u16 offset;
-	u32 ftaddr;
-	u8 shift;
-	u32 val;
-	s32 __maybe_unused err;
-	__le32 le_tmp;
-
-	adapter = intfhdl->padapter;
-	ftaddr = _cvrt2ftaddr(addr, &device_id, &offset);
-
-	rtw_hal_get_hwreg(adapter, HW_VAR_APFM_ON_MAC, &mac_pwr_ctrl_on);
-	if (
-		((device_id == WLAN_IOREG_DEVICE_ID) && (offset < 0x100)) ||
-		(!mac_pwr_ctrl_on) ||
-		(adapter_to_pwrctl(adapter)->fw_current_in_ps_mode)
-	) {
-		err = sd_cmd52_read(intfhdl, ftaddr, 4, (u8 *)&le_tmp);
-		return le32_to_cpu(le_tmp);
-	}
-
-	/*  4 bytes alignment */
-	shift = ftaddr & 0x3;
-	if (shift == 0) {
-		val = sd_read32(intfhdl, ftaddr, NULL);
-	} else {
-		u8 *tmpbuf;
-
-		tmpbuf = kmalloc(8, GFP_ATOMIC);
-		if (!tmpbuf)
-			return SDIO_ERR_VAL32;
-
-		ftaddr &= ~(u16)0x3;
-		sd_read(intfhdl, ftaddr, 8, tmpbuf);
-		memcpy(&le_tmp, tmpbuf + shift, 4);
-		val = le32_to_cpu(le_tmp);
-
-		kfree(tmpbuf);
-	}
-	return val;
-}
-
-static s32 sdio_write8(struct intf_hdl *intfhdl, u32 addr, u8 val)
-{
-	u32 ftaddr;
-	s32 err;
-
-	ftaddr = _cvrt2ftaddr(addr, NULL, NULL);
-	sd_write8(intfhdl, ftaddr, val, &err);
-
-	return err;
-}
-
-static s32 sdio_write16(struct intf_hdl *intfhdl, u32 addr, u16 val)
-{
-	u32 ftaddr;
-	__le16 le_tmp;
-
-	ftaddr = _cvrt2ftaddr(addr, NULL, NULL);
-	le_tmp = cpu_to_le16(val);
-	return sd_cmd52_write(intfhdl, ftaddr, 2, (u8 *)&le_tmp);
-}
-
-static s32 sdio_write32(struct intf_hdl *intfhdl, u32 addr, u32 val)
-{
-	struct adapter *adapter;
-	u8 mac_pwr_ctrl_on;
-	u8 device_id;
-	u16 offset;
-	u32 ftaddr;
-	u8 shift;
-	s32 err;
-	__le32 le_tmp;
-
-	adapter = intfhdl->padapter;
-	err = 0;
-
-	ftaddr = _cvrt2ftaddr(addr, &device_id, &offset);
-
-	rtw_hal_get_hwreg(adapter, HW_VAR_APFM_ON_MAC, &mac_pwr_ctrl_on);
-	if (
-		((device_id == WLAN_IOREG_DEVICE_ID) && (offset < 0x100)) ||
-		(!mac_pwr_ctrl_on) ||
-		(adapter_to_pwrctl(adapter)->fw_current_in_ps_mode)
-	) {
-		le_tmp = cpu_to_le32(val);
-
-		return sd_cmd52_write(intfhdl, ftaddr, 4, (u8 *)&le_tmp);
-	}
-
-	/*  4 bytes alignment */
-	shift = ftaddr & 0x3;
-	if (shift == 0) {
-		sd_write32(intfhdl, ftaddr, val, &err);
-	} else {
-		le_tmp = cpu_to_le32(val);
-		err = sd_cmd52_write(intfhdl, ftaddr, 4, (u8 *)&le_tmp);
-	}
-	return err;
-}
-
-/*
- * Description:
- *Read from RX FIFO
- *Round read size to block size,
- *and make sure data transfer will be done in one command.
- *
- * Parameters:
- *intfhdl	a pointer of intf_hdl
- *addr		port ID
- *cnt			size to read
- *rmem		address to put data
- *
- * Return:
- *_SUCCESS(1)		Success
- *_FAIL(0)		Fail
- */
-static u32 sdio_read_port(
-	struct intf_hdl *intfhdl,
-	u32 addr,
-	u32 cnt,
-	u8 *mem
-)
-{
-	struct adapter *adapter;
-	struct sdio_data *psdio;
-	struct hal_com_data *hal;
-	s32 err;
-
-	adapter = intfhdl->padapter;
-	psdio = &adapter_to_dvobj(adapter)->intf_data;
-	hal = GET_HAL_DATA(adapter);
-
-	hal_sdio_get_cmd_addr_8723b(adapter, addr, hal->SdioRxFIFOCnt++, &addr);
-
-	if (cnt > psdio->block_transfer_len)
-		cnt = _RND(cnt, psdio->block_transfer_len);
-
-	err = _sd_read(intfhdl, addr, cnt, mem);
-
-	if (err)
-		return _FAIL;
-	return _SUCCESS;
-}
-
-/*
- * Description:
- *Write to TX FIFO
- *Align write size block size,
- *and make sure data could be written in one command.
- *
- * Parameters:
- *intfhdl	a pointer of intf_hdl
- *addr		port ID
- *cnt			size to write
- *wmem		data pointer to write
- *
- * Return:
- *_SUCCESS(1)		Success
- *_FAIL(0)		Fail
- */
-static u32 sdio_write_port(
-	struct intf_hdl *intfhdl,
-	u32 addr,
-	u32 cnt,
-	u8 *mem
-)
-{
-	struct adapter *adapter;
-	struct sdio_data *psdio;
-	s32 err;
-	struct xmit_buf *xmitbuf = (struct xmit_buf *)mem;
-
-	adapter = intfhdl->padapter;
-	psdio = &adapter_to_dvobj(adapter)->intf_data;
-
-	if (!adapter->hw_init_completed)
-		return _FAIL;
-
-	cnt = round_up(cnt, 4);
-	hal_sdio_get_cmd_addr_8723b(adapter, addr, cnt >> 2, &addr);
-
-	if (cnt > psdio->block_transfer_len)
-		cnt = _RND(cnt, psdio->block_transfer_len);
-
-	err = sd_write(intfhdl, addr, cnt, xmitbuf->pdata);
-
-	rtw_sctx_done_err(
-		&xmitbuf->sctx,
-		err ? RTW_SCTX_DONE_WRITE_PORT_ERR : RTW_SCTX_DONE_SUCCESS
-	);
-
-	if (err)
-		return _FAIL;
-	return _SUCCESS;
-}
-
-void sdio_set_intf_ops(struct adapter *adapter, struct _io_ops *ops)
-{
-	ops->_read8 = &sdio_read8;
-	ops->_read16 = &sdio_read16;
-	ops->_read32 = &sdio_read32;
-
-	ops->_write8 = &sdio_write8;
-	ops->_write16 = &sdio_write16;
-	ops->_write32 = &sdio_write32;
-	ops->_write_port = &sdio_write_port;
-}
-
-/*
- * Todo: align address to 4 bytes.
- */
-static s32 _sdio_local_read(
-	struct adapter *adapter,
-	u32 addr,
-	u32 cnt,
-	u8 *buf
-)
-{
-	struct intf_hdl *intfhdl;
-	u8 mac_pwr_ctrl_on;
-	s32 err;
-	u8 *tmpbuf;
-	u32 n;
-
-	intfhdl = &adapter->iopriv.intf;
-
-	hal_sdio_get_cmd_addr_8723b(adapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
-
-	rtw_hal_get_hwreg(adapter, HW_VAR_APFM_ON_MAC, &mac_pwr_ctrl_on);
-	if (!mac_pwr_ctrl_on)
-		return _sd_cmd52_read(intfhdl, addr, cnt, buf);
-
-	n = round_up(cnt, 4);
-	tmpbuf = kmalloc(n, GFP_ATOMIC);
-	if (!tmpbuf)
-		return -ENOMEM;
-
-	err = _sd_read(intfhdl, addr, n, tmpbuf);
-	if (!err)
-		memcpy(buf, tmpbuf, cnt);
-
-	kfree(tmpbuf);
-
-	return err;
-}
-
-/*
- * Todo: align address to 4 bytes.
- */
-s32 sdio_local_read(
-	struct adapter *adapter,
-	u32 addr,
-	u32 cnt,
-	u8 *buf
-)
-{
-	struct intf_hdl *intfhdl;
-	u8 mac_pwr_ctrl_on;
-	s32 err;
-	u8 *tmpbuf;
-	u32 n;
-
-	intfhdl = &adapter->iopriv.intf;
-
-	hal_sdio_get_cmd_addr_8723b(adapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
-
-	rtw_hal_get_hwreg(adapter, HW_VAR_APFM_ON_MAC, &mac_pwr_ctrl_on);
-	if (
-		(!mac_pwr_ctrl_on) ||
-		(adapter_to_pwrctl(adapter)->fw_current_in_ps_mode)
-	)
-		return sd_cmd52_read(intfhdl, addr, cnt, buf);
-
-	n = round_up(cnt, 4);
-	tmpbuf = kmalloc(n, GFP_ATOMIC);
-	if (!tmpbuf)
-		return -ENOMEM;
-
-	err = sd_read(intfhdl, addr, n, tmpbuf);
-	if (!err)
-		memcpy(buf, tmpbuf, cnt);
-
-	kfree(tmpbuf);
-
-	return err;
-}
-
-/*
- * Todo: align address to 4 bytes.
- */
-s32 sdio_local_write(
-	struct adapter *adapter,
-	u32 addr,
-	u32 cnt,
-	u8 *buf
-)
-{
-	struct intf_hdl *intfhdl;
-	u8 mac_pwr_ctrl_on;
-	s32 err;
-	u8 *tmpbuf;
-
-	intfhdl = &adapter->iopriv.intf;
-
-	hal_sdio_get_cmd_addr_8723b(adapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
-
-	rtw_hal_get_hwreg(adapter, HW_VAR_APFM_ON_MAC, &mac_pwr_ctrl_on);
-	if (
-		(!mac_pwr_ctrl_on) ||
-		(adapter_to_pwrctl(adapter)->fw_current_in_ps_mode)
-	)
-		return sd_cmd52_write(intfhdl, addr, cnt, buf);
-
-	tmpbuf = kmemdup(buf, cnt, GFP_ATOMIC);
-	if (!tmpbuf)
-		return -ENOMEM;
-
-	err = sd_write(intfhdl, addr, cnt, tmpbuf);
-
-	kfree(tmpbuf);
-
-	return err;
-}
-
-u8 SdioLocalCmd52Read1Byte(struct adapter *adapter, u32 addr)
-{
-	u8 val = 0;
-	struct intf_hdl *intfhdl = &adapter->iopriv.intf;
-
-	hal_sdio_get_cmd_addr_8723b(adapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
-	sd_cmd52_read(intfhdl, addr, 1, &val);
-
-	return val;
-}
-
-static u16 sdio_local_cmd52_read2byte(struct adapter *adapter, u32 addr)
-{
-	__le16 val = 0;
-	struct intf_hdl *intfhdl = &adapter->iopriv.intf;
-
-	hal_sdio_get_cmd_addr_8723b(adapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
-	sd_cmd52_read(intfhdl, addr, 2, (u8 *)&val);
-
-	return le16_to_cpu(val);
-}
-
-static u32 sdio_local_cmd53_read4byte(struct adapter *adapter, u32 addr)
-{
-
-	u8 mac_pwr_ctrl_on;
-	u32 val = 0;
-	struct intf_hdl *intfhdl = &adapter->iopriv.intf;
-	__le32 le_tmp;
-
-	hal_sdio_get_cmd_addr_8723b(adapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
-	rtw_hal_get_hwreg(adapter, HW_VAR_APFM_ON_MAC, &mac_pwr_ctrl_on);
-	if (!mac_pwr_ctrl_on || adapter_to_pwrctl(adapter)->fw_current_in_ps_mode) {
-		sd_cmd52_read(intfhdl, addr, 4, (u8 *)&le_tmp);
-		val = le32_to_cpu(le_tmp);
-	} else {
-		val = sd_read32(intfhdl, addr, NULL);
-	}
-	return val;
-}
-
-void SdioLocalCmd52Write1Byte(struct adapter *adapter, u32 addr, u8 v)
-{
-	struct intf_hdl *intfhdl = &adapter->iopriv.intf;
-
-	hal_sdio_get_cmd_addr_8723b(adapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
-	sd_cmd52_write(intfhdl, addr, 1, &v);
-}
-
-static void sdio_local_cmd52_write4byte(struct adapter *adapter, u32 addr, u32 v)
-{
-	struct intf_hdl *intfhdl = &adapter->iopriv.intf;
-	__le32 le_tmp;
-
-	hal_sdio_get_cmd_addr_8723b(adapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
-	le_tmp = cpu_to_le32(v);
-	sd_cmd52_write(intfhdl, addr, 4, (u8 *)&le_tmp);
-}
-
-static s32 read_interrupt_8723b_sdio(struct adapter *adapter, u32 *phisr)
-{
-	u32 hisr, himr;
-	u8 val8, hisr_len;
-
-	if (!phisr)
-		return false;
-
-	himr = GET_HAL_DATA(adapter)->sdio_himr;
-
-	/*  decide how many bytes need to be read */
-	hisr_len = 0;
-	while (himr) {
-		hisr_len++;
-		himr >>= 8;
-	}
-
-	hisr = 0;
-	while (hisr_len != 0) {
-		hisr_len--;
-		val8 = SdioLocalCmd52Read1Byte(adapter, SDIO_REG_HISR + hisr_len);
-		hisr |= (val8 << (8 * hisr_len));
-	}
-
-	*phisr = hisr;
-
-	return true;
-}
-
-/*  */
-/*	Description: */
-/*		Initialize SDIO Host Interrupt Mask configuration variables for future use. */
-/*  */
-/*	Assumption: */
-/*		Using SDIO Local register ONLY for configuration. */
-/*  */
-/*	Created by Roger, 2011.02.11. */
-/*  */
-void InitInterrupt8723BSdio(struct adapter *adapter)
-{
-	struct hal_com_data *haldata;
-
-	haldata = GET_HAL_DATA(adapter);
-	haldata->sdio_himr = (u32)(SDIO_HIMR_RX_REQUEST_MSK	|
-				   SDIO_HIMR_AVAL_MSK		|
-				   0);
-}
-
-/*
- * Enable SDIO Host Interrupt Mask configuration on SDIO local domain.
- *
- * Assumption:
- *	1. Using SDIO Local register ONLY for configuration.
- *	2. PASSIVE LEVEL
- */
-void rtw_sdio_enable_interrupt(struct adapter *adapter)
-{
-	struct hal_com_data *haldata;
-	__le32 himr;
-
-	haldata = GET_HAL_DATA(adapter);
-
-	himr = cpu_to_le32(haldata->sdio_himr);
-	sdio_local_write(adapter, SDIO_REG_HIMR, 4, (u8 *)&himr);
-
-	/*  */
-	/*  <Roger_Notes> There are some C2H CMDs have been sent before system interrupt is enabled, e.g., C2H, CPWM. */
-	/*  So we need to clear all C2H events that FW has notified, otherwise FW won't schedule any commands anymore. */
-	/*  2011.10.19. */
-	/*  */
-	rtw_write8(adapter, REG_C2HEVT_CLEAR, C2H_EVT_HOST_CLOSE);
-}
-
-/*
- * Disable SDIO Host IMR configuration to mask unnecessary interrupt service.
- *
- * Assumption:
- *	Using SDIO Local register ONLY for configuration.
- */
-void rtw_sdio_disable_interrupt(struct adapter *adapter)
-{
-	__le32 himr;
-
-	himr = cpu_to_le32(SDIO_HIMR_DISABLED);
-	sdio_local_write(adapter, SDIO_REG_HIMR, 4, (u8 *)&himr);
-}
-
-/*  */
-/*	Description: */
-/*		Using 0x100 to check the power status of FW. */
-/*  */
-/*	Assumption: */
-/*		Using SDIO Local register ONLY for configuration. */
-/*  */
-/*	Created by Isaac, 2013.09.10. */
-/*  */
-u8 CheckIPSStatus(struct adapter *adapter)
-{
-	if (rtw_read8(adapter, 0x100) == 0xEA)
-		return true;
-	else
-		return false;
-}
-
-static struct recv_buf *sd_recv_rxfifo(struct adapter *adapter, u32 size)
-{
-	u32 readsize, ret;
-	u8 *readbuf;
-	struct recv_priv *recv_priv;
-	struct recv_buf	*recvbuf;
-
-	/*  Patch for some SDIO Host 4 bytes issue */
-	/*  ex. RK3188 */
-	readsize = round_up(size, 4);
-
-	/* 3 1. alloc recvbuf */
-	recv_priv = &adapter->recvpriv;
-	recvbuf = rtw_dequeue_recvbuf(&recv_priv->free_recv_buf_queue);
-	if (!recvbuf) {
-		netdev_err(adapter->pnetdev, "%s: alloc recvbuf FAIL!\n",
-			   __func__);
-		return NULL;
-	}
-
-	/* 3 2. alloc skb */
-	if (!recvbuf->pskb) {
-		SIZE_PTR tmpaddr = 0;
-		SIZE_PTR alignment = 0;
-
-		recvbuf->pskb = __dev_alloc_skb(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ, GFP_ATOMIC);
-		if (!recvbuf->pskb)
-			return NULL;
-
-		recvbuf->pskb->dev = adapter->pnetdev;
-
-		tmpaddr = (SIZE_PTR)recvbuf->pskb->data;
-		alignment = tmpaddr & (RECVBUFF_ALIGN_SZ - 1);
-		skb_reserve(recvbuf->pskb, (RECVBUFF_ALIGN_SZ - alignment));
-	}
-
-	/* 3 3. read data from rxfifo */
-	readbuf = recvbuf->pskb->data;
-	ret = sdio_read_port(&adapter->iopriv.intf, WLAN_RX0FF_DEVICE_ID, readsize, readbuf);
-	if (ret == _FAIL)
-		return NULL;
-
-	/* 3 4. init recvbuf */
-	recvbuf->len = size;
-	recvbuf->phead = recvbuf->pskb->head;
-	recvbuf->pdata = recvbuf->pskb->data;
-	skb_set_tail_pointer(recvbuf->pskb, size);
-	recvbuf->ptail = skb_tail_pointer(recvbuf->pskb);
-	recvbuf->pend = skb_end_pointer(recvbuf->pskb);
-
-	return recvbuf;
-}
-
-static void sd_rxhandler(struct adapter *adapter, struct recv_buf *recvbuf)
-{
-	struct recv_priv *recv_priv;
-	struct __queue *pending_queue;
-
-	recv_priv = &adapter->recvpriv;
-	pending_queue = &recv_priv->recv_buf_pending_queue;
-
-	/* 3 1. enqueue recvbuf */
-	rtw_enqueue_recvbuf(recvbuf, pending_queue);
-
-	/* 3 2. schedule tasklet */
-	tasklet_schedule(&recv_priv->recv_tasklet);
-}
-
-void sd_int_dpc(struct adapter *adapter)
-{
-	struct hal_com_data *hal;
-	struct dvobj_priv *dvobj;
-	struct intf_hdl *intfhdl = &adapter->iopriv.intf;
-	struct pwrctrl_priv *pwrctl;
-
-	hal = GET_HAL_DATA(adapter);
-	dvobj = adapter_to_dvobj(adapter);
-	pwrctl = dvobj_to_pwrctl(dvobj);
-
-	if (hal->sdio_hisr & SDIO_HISR_AVAL) {
-		u8 freepage[4];
-
-		_sdio_local_read(adapter, SDIO_REG_FREE_TXPG, 4, freepage);
-		complete(&(adapter->xmitpriv.xmit_comp));
-	}
-
-	if (hal->sdio_hisr & SDIO_HISR_CPWM1) {
-		timer_delete_sync(&(pwrctl->pwr_rpwm_timer));
-
-		SdioLocalCmd52Read1Byte(adapter, SDIO_REG_HCPWM1_8723B);
-
-		_set_workitem(&(pwrctl->cpwm_event));
-	}
-
-	if (hal->sdio_hisr & SDIO_HISR_TXERR) {
-		u8 *status;
-		u32 addr;
-
-		status = kmalloc(4, GFP_ATOMIC);
-		if (status) {
-			addr = REG_TXDMA_STATUS;
-			hal_sdio_get_cmd_addr_8723b(adapter, WLAN_IOREG_DEVICE_ID, addr, &addr);
-			_sd_read(intfhdl, addr, 4, status);
-			_sd_write(intfhdl, addr, 4, status);
-			kfree(status);
-		}
-	}
-
-	if (hal->sdio_hisr & SDIO_HISR_C2HCMD) {
-		struct c2h_evt_hdr_88xx *c2h_evt;
-
-		c2h_evt = kzalloc(16, GFP_ATOMIC);
-		if (c2h_evt) {
-			if (c2h_evt_read_88xx(adapter, (u8 *)c2h_evt) == _SUCCESS) {
-				if (c2h_id_filter_ccx_8723b((u8 *)c2h_evt)) {
-					/* Handle CCX report here */
-					rtw_hal_c2h_handler(adapter, (u8 *)c2h_evt);
-					kfree(c2h_evt);
-				} else {
-					rtw_c2h_wk_cmd(adapter, (u8 *)c2h_evt);
-				}
-			} else {
-				kfree(c2h_evt);
-			}
-		} else {
-			/* Error handling for malloc fail */
-			rtw_cbuf_push(adapter->evtpriv.c2h_queue, NULL);
-			_set_workitem(&adapter->evtpriv.c2h_wk);
-		}
-	}
-
-	if (hal->sdio_hisr & SDIO_HISR_RX_REQUEST) {
-		struct recv_buf *recvbuf;
-		int alloc_fail_time = 0;
-		u32 hisr;
-
-		hal->sdio_hisr ^= SDIO_HISR_RX_REQUEST;
-		do {
-			hal->SdioRxFIFOSize = sdio_local_cmd52_read2byte(adapter, SDIO_REG_RX0_REQ_LEN);
-			if (hal->SdioRxFIFOSize != 0) {
-				recvbuf = sd_recv_rxfifo(adapter, hal->SdioRxFIFOSize);
-				if (recvbuf)
-					sd_rxhandler(adapter, recvbuf);
-				else {
-					alloc_fail_time++;
-					if (alloc_fail_time >= 10)
-						break;
-				}
-				hal->SdioRxFIFOSize = 0;
-			} else
-				break;
-
-			hisr = 0;
-			read_interrupt_8723b_sdio(adapter, &hisr);
-			hisr &= SDIO_HISR_RX_REQUEST;
-			if (!hisr)
-				break;
-		} while (1);
-	}
-}
-
-void sd_int_hdl(struct adapter *adapter)
-{
-	struct hal_com_data *hal;
-
-	if (
-		(adapter->driver_stopped) || (adapter->bSurpriseRemoved)
-	)
-		return;
-
-	hal = GET_HAL_DATA(adapter);
-
-	hal->sdio_hisr = 0;
-	read_interrupt_8723b_sdio(adapter, &hal->sdio_hisr);
-
-	if (hal->sdio_hisr & hal->sdio_himr) {
-		u32 v32;
-
-		hal->sdio_hisr &= hal->sdio_himr;
-
-		/*  clear HISR */
-		v32 = hal->sdio_hisr & MASK_SDIO_HISR_CLEAR;
-		if (v32)
-			sdio_local_cmd52_write4byte(adapter, SDIO_REG_HISR, v32);
-
-		sd_int_dpc(adapter);
-	}
-}
-
-/*  */
-/*	Description: */
-/*		Query SDIO Local register to query current the number of Free TxPacketBuffer page. */
-/*  */
-/*	Assumption: */
-/*		1. Running at PASSIVE_LEVEL */
-/*		2. RT_TX_SPINLOCK is NOT acquired. */
-/*  */
-/*	Created by Roger, 2011.01.28. */
-/*  */
-u8 HalQueryTxBufferStatus8723BSdio(struct adapter *adapter)
-{
-	struct hal_com_data *hal;
-	u32 numof_free_page;
-
-	hal = GET_HAL_DATA(adapter);
-
-	numof_free_page = sdio_local_cmd53_read4byte(adapter, SDIO_REG_FREE_TXPG);
-
-	memcpy(hal->SdioTxFIFOFreePage, &numof_free_page, 4);
-
-	return true;
-}
-
-/* Read the TX OQT free page count from the SDIO local register. */
-void HalQueryTxOQTBufferStatus8723BSdio(struct adapter *adapter)
-{
-	struct hal_com_data *haldata = GET_HAL_DATA(adapter);
-
-	haldata->SdioTxOQTFreeSpace = SdioLocalCmd52Read1Byte(adapter, SDIO_REG_OQT_FREE_PG);
-}
diff --git a/drivers/staging/rtl8723bs/include/Hal8192CPhyReg.h b/drivers/staging/rtl8723bs/include/Hal8192CPhyReg.h
deleted file mode 100644
index f8cf2aee5157..000000000000
--- a/drivers/staging/rtl8723bs/include/Hal8192CPhyReg.h
+++ /dev/null
@@ -1,232 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-/*****************************************************************************
- *
- * Module:	__INC_HAL8192CPHYREG_H
- *
- *
- * Note:	1. Define PMAC/BB register map
- *		2. Define RF register map
- *		3. PMAC/BB register bit mask.
- *		4. RF reg bit mask.
- *		5. Other BB/RF relative definition.
- *
- *
- * Export:	Constants, macro, functions(API), global variables(None).
- *
- * Abbrev:
- *
- * History:
- *	Data		Who		Remark
- *      08/07/2007  MHC		1. Porting from 9x series PHYCFG.h.
- *						2. Reorganize code architecture.
- *09/25/2008	MH		1. Add RL6052 register definition
- *
- *****************************************************************************/
-#ifndef __INC_HAL8192CPHYREG_H
-#define __INC_HAL8192CPHYREG_H
-
-
-/*--------------------------Define Parameters-------------------------------*/
-
-/*  */
-/*        8192S Register offset definition */
-/*  */
-
-/*  */
-/*  BB-PHY register PMAC 0x100 PHY 0x800 - 0xEFF */
-/*  1. PMAC duplicate register due to connection: RF_Mode, TRxRN, NumOf L-STF */
-/*  2. 0x800/0x900/0xA00/0xC00/0xD00/0xE00 */
-/*  3. RF register 0x00-2E */
-/*  4. Bit Mask for BB/RF register */
-/*  5. Other definition for BB/RF R/W */
-/*  */
-
-/*  */
-/*  3. Page8(0x800) */
-/*  */
-#define		rFPGA0_RFMOD				0x800	/* RF mode & CCK TxSC  RF BW Setting?? */
-
-#define		rFPGA0_XA_HSSIParameter1		0x820	/*  RF 3 wire register */
-#define		rFPGA0_XA_HSSIParameter2		0x824
-#define		rFPGA0_XB_HSSIParameter1		0x828
-#define		rFPGA0_XB_HSSIParameter2		0x82c
-#define		rTxAGC_B_Rate18_06				0x830
-#define		rTxAGC_B_Rate54_24				0x834
-#define		rTxAGC_B_CCK1_55_Mcs32		0x838
-#define		rTxAGC_B_Mcs03_Mcs00			0x83c
-
-#define		rTxAGC_B_Mcs07_Mcs04			0x848
-
-#define		rFPGA0_XA_LSSIParameter		0x840
-#define		rFPGA0_XB_LSSIParameter		0x844
-
-#define		rFPGA0_XCD_SwitchControl		0x85c
-
-#define		rFPGA0_XA_RFInterfaceOE		0x860	/*  RF Channel switch */
-#define		rFPGA0_XB_RFInterfaceOE		0x864
-
-#define		rTxAGC_B_CCK11_A_CCK2_11		0x86c
-
-#define		rFPGA0_XAB_RFInterfaceSW		0x870	/*  RF Interface Software Control */
-#define		rFPGA0_XCD_RFInterfaceSW		0x874
-
-#define		rFPGA0_XA_LSSIReadBack		0x8a0	/*  Transceiver LSSI Readback */
-#define		rFPGA0_XB_LSSIReadBack		0x8a4
-
-#define		TransceiverA_HSPI_Readback	0x8b8	/*  Transceiver A HSPI Readback */
-#define		TransceiverB_HSPI_Readback	0x8bc	/*  Transceiver B HSPI Readback */
-
-/*  */
-/*  4. Page9(0x900) */
-/*  */
-#define		rFPGA1_RFMOD				0x900	/* RF mode & OFDM TxSC  RF BW Setting?? */
-
-#define		rS0S1_PathSwitch			0x948
-
-/*  */
-/*  5. PageA(0xA00) */
-/*  */
-/*  Set Control channel to upper or lower. These settings are required only for 40MHz */
-#define		rCCK0_System				0xa00
-
-#define		rCCK0_AFESetting			0xa04	/*  Disable init gain now Select RX path by RSSI */
-
-/*  */
-/*  PageB(0xB00) */
-/*  */
-#define		rConfig_AntA				0xb68
-#define		rConfig_AntB				0xb6c
-
-/*  */
-/*  6. PageC(0xC00) */
-/*  */
-#define		rOFDM0_TRxPathEnable		0xc04
-#define		rOFDM0_TRMuxPar			0xc08
-
-#define		rOFDM0_XARxIQImbalance		0xc14  /* RxIQ imbalance matrix */
-#define		rOFDM0_XBRxIQImbalance		0xc1c
-
-#define		rOFDM0_RxDSP				0xc40  /* Rx Sync Path */
-#define		rOFDM0_ECCAThreshold		0xc4c /*  energy CCA */
-
-#define		rOFDM0_AGCRSSITable			0xc78
-
-#define		rOFDM0_XATxIQImbalance		0xc80	/*  TX PWR TRACK and DIG */
-#define		rOFDM0_XBTxIQImbalance		0xc88
-#define		rOFDM0_XCTxAFE					0xc94
-#define		rOFDM0_XDTxAFE				0xc9c
-
-#define		rOFDM0_RxIQExtAnta			0xca0
-#define		rOFDM0_TxPseudoNoiseWgt		0xce4
-
-/*  */
-/*  7. PageD(0xD00) */
-/*  */
-#define		rOFDM1_LSTF					0xd00
-
-/*  */
-/*  8. PageE(0xE00) */
-/*  */
-#define		rTxAGC_A_Rate18_06			0xe00
-#define		rTxAGC_A_Rate54_24			0xe04
-#define		rTxAGC_A_CCK1_Mcs32			0xe08
-#define		rTxAGC_A_Mcs03_Mcs00			0xe10
-#define		rTxAGC_A_Mcs07_Mcs04			0xe14
-
-#define		rFPGA0_IQK					0xe28
-#define		rTx_IQK_Tone_A				0xe30
-#define		rRx_IQK_Tone_A				0xe34
-#define		rTx_IQK_PI_A					0xe38
-#define		rRx_IQK_PI_A					0xe3c
-
-#define		rTx_IQK							0xe40
-#define		rRx_IQK						0xe44
-#define		rIQK_AGC_Pts					0xe48
-#define		rIQK_AGC_Rsp					0xe4c
-#define		rTx_IQK_Tone_B				0xe50
-#define		rRx_IQK_Tone_B				0xe54
-#define		rTx_IQK_PI_B					0xe58
-#define		rRx_IQK_PI_B					0xe5c
-
-#define		rBlue_Tooth					0xe6c
-#define		rRx_Wait_CCA					0xe70
-#define		rTx_CCK_RFON					0xe74
-#define		rTx_CCK_BBON				0xe78
-#define		rTx_OFDM_RFON				0xe7c
-#define		rTx_OFDM_BBON				0xe80
-#define		rTx_To_Rx					0xe84
-#define		rTx_To_Tx					0xe88
-#define		rRx_CCK						0xe8c
-
-#define		rTx_Power_Before_IQK_A		0xe94
-#define		rTx_Power_After_IQK_A			0xe9c
-
-#define		rRx_Power_Before_IQK_A_2		0xea4
-#define		rRx_Power_After_IQK_A_2		0xeac
-
-#define		rRx_OFDM					0xed0
-#define		rRx_Wait_RIFS				0xed4
-#define		rRx_TO_Rx					0xed8
-#define		rStandby						0xedc
-#define		rSleep						0xee0
-#define		rPMPD_ANAEN				0xeec
-
-/*  */
-/*  RL6052 Register definition */
-/*  */
-#define		RF_AC						0x00	/*  */
-
-#define		RF_TXM_IDAC				0x08	/*  */
-
-#define		RF_CHNLBW					0x18	/*  RF channel and BW switch */
-
-#define		RF_RCK_OS					0x30	/*  RF TX PA control */
-
-#define		RF_TXPA_G1					0x31	/*  RF TX PA control */
-#define		RF_TXPA_G2					0x32	/*  RF TX PA control */
-
-#define		RF_WE_LUT					0xEF
-
-/*  2. Page8(0x800) */
-#define		bRFMOD							0x1	/*  Reg 0x800 rFPGA0_RFMOD */
-
-#define		b3WireDataLength			0x800	/*  Reg 0x820~84f rFPGA0_XA_HSSIParameter1 */
-#define		b3WireAddressLength			0x400
-
-#define		bRFSI_RFENV				0x10	/*  Reg 0x870 rFPGA0_XAB_RFInterfaceSW */
-
-#define		bLSSIReadAddress			0x7f800000   /*  T65 RF */
-
-#define		bLSSIReadEdge				0x80000000   /* LSSI "Read" edge signal */
-
-#define		bLSSIReadBackData			0xfffff		/*  T65 RF */
-
-/*  4. PageA(0xA00) */
-#define		bCCKSideBand			0x10	/*  Reg 0xa00 rCCK0_System 20/40 switch */
-
-/*  */
-/*  Other Definition */
-/*  */
-
-/* for PutRegsetting & GetRegSetting BitMask */
-#define		bMaskByte0			0xff	/*  Reg 0xc50 rOFDM0_XAAGCCore~0xC6f */
-#define		bMaskByte1			0xff00
-#define		bMaskByte2			0xff0000
-#define		bMaskByte3			0xff000000
-#define		bMaskHWord		0xffff0000
-#define		bMaskLWord			0x0000ffff
-#define		bMaskDWord		0xffffffff
-#define		bMaskH3Bytes		0xffffff00
-#define		bMask12Bits			0xfff
-#define		bMaskH4Bits			0xf0000000
-
-#define		bEnable			0x1	/*  Useless */
-
-#define rDPDT_control				0x92c
-
-#endif	/* __INC_HAL8192SPHYREG_H */
diff --git a/drivers/staging/rtl8723bs/include/HalPwrSeqCmd.h b/drivers/staging/rtl8723bs/include/HalPwrSeqCmd.h
deleted file mode 100644
index b81252d374ef..000000000000
--- a/drivers/staging/rtl8723bs/include/HalPwrSeqCmd.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __HALPWRSEQCMD_H__
-#define __HALPWRSEQCMD_H__
-
-#include <drv_types.h>
-
-/*---------------------------------------------*/
-/* 3 The value of cmd: 4 bits */
-/*---------------------------------------------*/
-#define PWR_CMD_READ			0x00
-     /*  offset: the read register offset */
-     /*  msk: the mask of the read value */
-     /*  value: N/A, left by 0 */
-     /*  note: dirver shall implement this function by read & msk */
-
-#define PWR_CMD_WRITE			0x01
-     /*  offset: the read register offset */
-     /*  msk: the mask of the write bits */
-     /*  value: write value */
-     /*  note: driver shall implement this cmd by read & msk after write */
-
-#define PWR_CMD_POLLING			0x02
-     /*  offset: the read register offset */
-     /*  msk: the mask of the polled value */
-     /*  value: the value to be polled, masked by the msd field. */
-     /*  note: driver shall implement this cmd by */
-     /*  do{ */
-     /*  if ((Read(offset) & msk) == (value & msk)) */
-     /*  break; */
-     /*  } while (not timeout); */
-
-#define PWR_CMD_DELAY			0x03
-     /*  offset: the value to delay */
-     /*  msk: N/A */
-     /*  value: the unit of delay, 0: us, 1: ms */
-
-#define PWR_CMD_END				0x04
-     /*  offset: N/A */
-     /*  msk: N/A */
-     /*  value: N/A */
-
-/*---------------------------------------------*/
-/* 3 The value of base: 4 bits */
-/*---------------------------------------------*/
-   /*  define the base address of each block */
-#define PWR_BASEADDR_MAC		0x00
-#define PWR_BASEADDR_SDIO		0x03
-
-/*---------------------------------------------*/
-/* 3 The value of interface_msk: 4 bits */
-/*---------------------------------------------*/
-#define	PWR_INTF_SDIO_MSK		BIT(0)
-#define	PWR_INTF_USB_MSK		BIT(1)
-#define	PWR_INTF_PCI_MSK		BIT(2)
-#define	PWR_INTF_ALL_MSK		(BIT(0)|BIT(1)|BIT(2)|BIT(3))
-
-/*---------------------------------------------*/
-/* 3 The value of fab_msk: 4 bits */
-/*---------------------------------------------*/
-#define	PWR_FAB_ALL_MSK			(BIT(0)|BIT(1)|BIT(2)|BIT(3))
-
-/*---------------------------------------------*/
-/* 3 The value of cut_msk: 8 bits */
-/*---------------------------------------------*/
-#define	PWR_CUT_TESTCHIP_MSK	BIT(0)
-#define	PWR_CUT_ALL_MSK			0xFF
-
-
-enum {
-	PWRSEQ_DELAY_US,
-	PWRSEQ_DELAY_MS,
-};
-
-struct wlan_pwr_cfg {
-	u16 offset;
-	u8 cut_msk;
-	u8 fab_msk:4;
-	u8 interface_msk:4;
-	u8 base:4;
-	u8 cmd:4;
-	u8 msk;
-	u8 value;
-};
-
-
-#define GET_PWR_CFG_OFFSET(__PWR_CMD)		__PWR_CMD.offset
-#define GET_PWR_CFG_CUT_MASK(__PWR_CMD)		__PWR_CMD.cut_msk
-#define GET_PWR_CFG_FAB_MASK(__PWR_CMD)		__PWR_CMD.fab_msk
-#define GET_PWR_CFG_INTF_MASK(__PWR_CMD)	__PWR_CMD.interface_msk
-#define GET_PWR_CFG_BASE(__PWR_CMD)			__PWR_CMD.base
-#define GET_PWR_CFG_CMD(__PWR_CMD)			__PWR_CMD.cmd
-#define GET_PWR_CFG_MASK(__PWR_CMD)			__PWR_CMD.msk
-#define GET_PWR_CFG_VALUE(__PWR_CMD)		__PWR_CMD.value
-
-
-/*  */
-/* 	Prototype of protected function. */
-/*  */
-u8 HalPwrSeqCmdParsing(
-	struct adapter *padapter,
-	u8 		CutVersion,
-	u8 		FabVersion,
-	u8 		InterfaceType,
-	struct wlan_pwr_cfg	PwrCfgCmd[]);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/basic_types.h b/drivers/staging/rtl8723bs/include/basic_types.h
deleted file mode 100644
index b6b1afaa9ab8..000000000000
--- a/drivers/staging/rtl8723bs/include/basic_types.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __BASIC_TYPES_H__
-#define __BASIC_TYPES_H__
-
-#define SUCCESS	0
-#define FAIL	(-1)
-
-#include <linux/types.h>
-#include <linux/stddef.h>
-
-#define SIZE_PTR __kernel_size_t
-#define SSIZE_PTR __kernel_ssize_t
-
-/* port from fw by thomas */
-/*  TODO: Belows are Sync from SD7-Driver. It is necessary to check correctness */
-
-/*
- * Call endian free function when
- *	1. Read/write packet content.
- *	2. Before write integer to IO.
- *	3. After read integer from IO.
- */
-
-/*  */
-/*  Byte Swapping routine. */
-/*  */
-#define EF1Byte	(u8)
-#define EF2Byte		le16_to_cpu
-#define EF4Byte	le32_to_cpu
-
-/* Convert little data endian to host ordering */
-#define EF1BYTE(_val)		\
-	((u8)(_val))
-#define EF2BYTE(_val)		\
-	(le16_to_cpu(_val))
-#define EF4BYTE(_val)		\
-	(le32_to_cpu(_val))
-
-/*
- * Create a bit mask
- * Examples:
- * BIT_LEN_MASK_32(0) => 0x00000000
- * BIT_LEN_MASK_32(1) => 0x00000001
- * BIT_LEN_MASK_32(2) => 0x00000003
- * BIT_LEN_MASK_32(32) => 0xFFFFFFFF
- */
-#define BIT_LEN_MASK_32(__bitlen)	 \
-	(0xFFFFFFFF >> (32 - (__bitlen)))
-#define BIT_LEN_MASK_16(__bitlen)	 \
-	(0xFFFF >> (16 - (__bitlen)))
-#define BIT_LEN_MASK_8(__bitlen) \
-	(0xFF >> (8 - (__bitlen)))
-
-/*
- * Create an offset bit mask
- * Examples:
- * BIT_OFFSET_LEN_MASK_32(0, 2) => 0x00000003
- * BIT_OFFSET_LEN_MASK_32(16, 2) => 0x00030000
- */
-#define BIT_OFFSET_LEN_MASK_32(__bitoffset, __bitlen) \
-	(BIT_LEN_MASK_32(__bitlen) << (__bitoffset))
-#define BIT_OFFSET_LEN_MASK_16(__bitoffset, __bitlen) \
-	(BIT_LEN_MASK_16(__bitlen) << (__bitoffset))
-#define BIT_OFFSET_LEN_MASK_8(__bitoffset, __bitlen) \
-	(BIT_LEN_MASK_8(__bitlen) << (__bitoffset))
-
-/*
- * Description:
- * Return 4-byte value in host byte ordering from
- * 4-byte pointer in little-endian system.
- */
-#define LE_P4BYTE_TO_HOST_4BYTE(__pstart) \
-	(EF4BYTE(*((__le32 *)(__pstart))))
-#define LE_P2BYTE_TO_HOST_2BYTE(__pstart) \
-	(EF2BYTE(*((__le16 *)(__pstart))))
-#define LE_P1BYTE_TO_HOST_1BYTE(__pstart) \
-	(EF1BYTE(*((u8 *)(__pstart))))
-
-/*
- * Description:
- * Translate subfield (continuous bits in little-endian) of 4-byte value in
- * little byte to 4-byte value in host byte ordering.
- */
-#define LE_BITS_TO_4BYTE(__pstart, __bitoffset, __bitlen) \
-	(\
-		(LE_P4BYTE_TO_HOST_4BYTE(__pstart) >> (__bitoffset))  & \
-		BIT_LEN_MASK_32(__bitlen) \
-	)
-#define LE_BITS_TO_2BYTE(__pstart, __bitoffset, __bitlen) \
-	(\
-		(LE_P2BYTE_TO_HOST_2BYTE(__pstart) >> (__bitoffset)) & \
-		BIT_LEN_MASK_16(__bitlen) \
-	)
-#define LE_BITS_TO_1BYTE(__pstart, __bitoffset, __bitlen) \
-	(\
-		(LE_P1BYTE_TO_HOST_1BYTE(__pstart) >> (__bitoffset)) & \
-		BIT_LEN_MASK_8(__bitlen) \
-	)
-
-/*
- * Description:
- * Mask subfield (continuous bits in little-endian) of 4-byte value in little
- * byte ordering and return the result in 4-byte value in host byte ordering.
- */
-#define LE_BITS_CLEARED_TO_4BYTE(__pstart, __bitoffset, __bitlen) \
-	(\
-		LE_P4BYTE_TO_HOST_4BYTE(__pstart)  & \
-		(~BIT_OFFSET_LEN_MASK_32(__bitoffset, __bitlen)) \
-	)
-#define LE_BITS_CLEARED_TO_2BYTE(__pstart, __bitoffset, __bitlen) \
-	(\
-		LE_P2BYTE_TO_HOST_2BYTE(__pstart) & \
-		(~BIT_OFFSET_LEN_MASK_16(__bitoffset, __bitlen)) \
-	)
-#define LE_BITS_CLEARED_TO_1BYTE(__pstart, __bitoffset, __bitlen) \
-	(\
-		LE_P1BYTE_TO_HOST_1BYTE(__pstart) & \
-		(~BIT_OFFSET_LEN_MASK_8(__bitoffset, __bitlen)) \
-	)
-
-/*
- * Description:
- * Set subfield of little-endian 4-byte value to specified value.
- */
-#define SET_BITS_TO_LE_4BYTE(__pstart, __bitoffset, __bitlen, __val) \
-		(*((u32 *)(__pstart)) =				\
-		(						\
-		LE_BITS_CLEARED_TO_4BYTE(__pstart, __bitoffset, __bitlen) | \
-		((((u32)__val) & BIT_LEN_MASK_32(__bitlen)) << (__bitoffset)) \
-		))
-
-#define SET_BITS_TO_LE_2BYTE(__pstart, __bitoffset, __bitlen, __val) \
-		(*((u16 *)(__pstart)) =				\
-		(					\
-		LE_BITS_CLEARED_TO_2BYTE(__pstart, __bitoffset, __bitlen) | \
-		((((u16)__val) & BIT_LEN_MASK_16(__bitlen)) << (__bitoffset)) \
-		))
-
-#define SET_BITS_TO_LE_1BYTE(__pstart, __bitoffset, __bitlen, __val) \
-		(*((u8 *)(__pstart)) = EF1BYTE			\
-		(					\
-		LE_BITS_CLEARED_TO_1BYTE(__pstart, __bitoffset, __bitlen) | \
-		((((u8)__val) & BIT_LEN_MASK_8(__bitlen)) << (__bitoffset)) \
-		))
-
-#define LE_BITS_CLEARED_TO_1BYTE_8BIT(__pStart, __BitOffset, __BitLen) \
-	(\
-		LE_P1BYTE_TO_HOST_1BYTE(__pStart) \
-	)
-
-#define SET_BITS_TO_LE_1BYTE_8BIT(__pStart, __BitOffset, __BitLen, __Value) \
-{ \
-	*((u8 *)(__pStart)) = \
-		EF1Byte(\
-			LE_BITS_CLEARED_TO_1BYTE_8BIT(__pStart, __BitOffset, __BitLen) \
-			| \
-			((u8)__Value) \
-		); \
-}
-
-/*  Get the N-bytes alignent offset from the current length */
-#define N_BYTE_ALIGMENT(__Value, __Aligment) ((__Aligment == 1) ? (__Value) : (((__Value + __Aligment - 1) / __Aligment) * __Aligment))
-
-#define TEST_FLAG(__Flag, __testFlag)		(((__Flag) & (__testFlag)) != 0)
-#define SET_FLAG(__Flag, __setFlag)			((__Flag) |= __setFlag)
-#define CLEAR_FLAG(__Flag, __clearFlag)		((__Flag) &= ~(__clearFlag))
-#define CLEAR_FLAGS(__Flag)					((__Flag) = 0)
-#define TEST_FLAGS(__Flag, __testFlags)		(((__Flag) & (__testFlags)) == (__testFlags))
-
-#endif /* __BASIC_TYPES_H__ */
diff --git a/drivers/staging/rtl8723bs/include/cmd_osdep.h b/drivers/staging/rtl8723bs/include/cmd_osdep.h
deleted file mode 100644
index 91d933d71945..000000000000
--- a/drivers/staging/rtl8723bs/include/cmd_osdep.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __CMD_OSDEP_H_
-#define __CMD_OSDEP_H_
-
-int rtw_init_cmd_priv(struct	cmd_priv *pcmdpriv);
-int rtw_init_evt_priv(struct evt_priv *pevtpriv);
-extern void _rtw_free_evt_priv(struct	evt_priv *pevtpriv);
-extern void _rtw_free_cmd_priv(struct	cmd_priv *pcmdpriv);
-extern struct	cmd_obj	*_rtw_dequeue_cmd(struct __queue *queue);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/drv_types.h b/drivers/staging/rtl8723bs/include/drv_types.h
deleted file mode 100644
index 20265770ed77..000000000000
--- a/drivers/staging/rtl8723bs/include/drv_types.h
+++ /dev/null
@@ -1,431 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-/*-------------------------------------------------------------------------------
-
-	For type defines and data structure defines
-
---------------------------------------------------------------------------------*/
-
-
-#ifndef __DRV_TYPES_H__
-#define __DRV_TYPES_H__
-
-#include <linux/sched/signal.h>
-#include <basic_types.h>
-#include <osdep_service.h>
-#include <rtw_byteorder.h>
-#include <wlan_bssdef.h>
-#include <wifi.h>
-#include <ieee80211.h>
-
-#include <rtw_rf.h>
-
-#include <rtw_ht.h>
-
-#include <rtw_cmd.h>
-#include <cmd_osdep.h>
-#include <rtw_security.h>
-#include <rtw_xmit.h>
-#include <xmit_osdep.h>
-#include <rtw_recv.h>
-
-#include <rtw_efuse.h>
-#include <hal_intf.h>
-#include <hal_com.h>
-#include <rtw_qos.h>
-#include <rtw_pwrctrl.h>
-#include <rtw_mlme.h>
-#include <rtw_io.h>
-#include <rtw_ioctl_set.h>
-#include <osdep_intf.h>
-#include <rtw_eeprom.h>
-#include <sta_info.h>
-#include <rtw_event.h>
-#include <rtw_mlme_ext.h>
-#include <rtw_ap.h>
-#include <rtw_version.h>
-
-#include "ioctl_cfg80211.h"
-
-#include <linux/ip.h>
-#include <linux/if_ether.h>
-
-#define SPEC_DEV_ID_NONE BIT(0)
-#define SPEC_DEV_ID_DISABLE_HT BIT(1)
-#define SPEC_DEV_ID_ENABLE_PS BIT(2)
-#define SPEC_DEV_ID_RF_CONFIG_1T1R BIT(3)
-#define SPEC_DEV_ID_RF_CONFIG_2T2R BIT(4)
-#define SPEC_DEV_ID_ASSIGN_IFNAME BIT(5)
-
-struct registry_priv {
-	u8 chip_version;
-	u8 rfintfs;
-	u8 lbkmode;
-	u8 hci;
-	struct ndis_802_11_ssid	ssid;
-	u8 network_mode;	/* infra, ad-hoc, auto */
-	u8 channel;/* ad-hoc support requirement */
-	u8 wireless_mode;/* A, B, G, auto */
-	u8 scan_mode;/* active, passive */
-	u8 radio_enable;
-	u8 preamble;/* long, short, auto */
-	u8 vrtl_carrier_sense;/* Enable, Disable, Auto */
-	u8 vcs_type;/* RTS/CTS, CTS-to-self */
-	u16 rts_thresh;
-	u16  frag_thresh;
-	u8 adhoc_tx_pwr;
-	u8 soft_ap;
-	u8 power_mgnt;
-	u8 ips_mode;
-	u8 smart_ps;
-	u8   usb_rxagg_mode;
-	u8 long_retry_lmt;
-	u8 short_retry_lmt;
-	u16 busy_thresh;
-	u8 ack_policy;
-	u8  mp_dm;
-	u8 software_encrypt;
-	u8 software_decrypt;
-	u8 acm_method;
-	  /* UAPSD */
-	u8 wmm_enable;
-	u8 uapsd_enable;
-	u8 uapsd_max_sp;
-	u8 uapsd_acbk_en;
-	u8 uapsd_acbe_en;
-	u8 uapsd_acvi_en;
-	u8 uapsd_acvo_en;
-
-	struct wlan_bssid_ex    dev_network;
-
-	u8 ht_enable;
-	/*
-	 * 0: 20 MHz, 1: 40 MHz
-	 * 2.4G use bit 0 ~ 3
-	 * 0x01 means enable 2.4G 40MHz
-	 */
-	u8 bw_mode;
-	u8 ampdu_enable;/* for tx */
-	u8 rx_stbc;
-	u8 ampdu_amsdu;/* A-MPDU Supports A-MSDU is permitted */
-	/*  Short GI support Bit Map */
-	/*  BIT0 - 20MHz, 1: support, 0: non-support */
-	/*  BIT1 - 40MHz, 1: support, 0: non-support */
-	/*  BIT2 - 80MHz, 1: support, 0: non-support */
-	/*  BIT3 - 160MHz, 1: support, 0: non-support */
-	u8 short_gi;
-	/*  BIT0: Enable VHT LDPC Rx, BIT1: Enable VHT LDPC Tx, BIT4: Enable HT LDPC Rx, BIT5: Enable HT LDPC Tx */
-	u8 ldpc_cap;
-	/*  BIT0: Enable VHT STBC Rx, BIT1: Enable VHT STBC Tx, BIT4: Enable HT STBC Rx, BIT5: Enable HT STBC Tx */
-	u8 stbc_cap;
-	/*  BIT0: Enable VHT Beamformer, BIT1: Enable VHT Beamformee, BIT4: Enable HT Beamformer, BIT5: Enable HT Beamformee */
-	u8 beamform_cap;
-
-	u8 lowrate_two_xmit;
-
-	u8 low_power;
-
-	u8 wifi_spec;/*  !turbo_mode */
-
-	u8 channel_plan;
-
-	s8	ant_num;
-
-	/* false:Reject AP's Add BA req, true:accept AP's Add BA req */
-	bool	accept_addba_req;
-
-	u8 antdiv_cfg;
-	u8 antdiv_type;
-
-	u8 usbss_enable;/* 0:disable, 1:enable */
-	u8 hwpdn_mode;/* 0:disable, 1:enable, 2:decide by EFUSE config */
-	u8 hwpwrp_detect;/* 0:disable, 1:enable */
-
-	u8 hw_wps_pbc;/* 0:disable, 1:enable */
-
-	u8 max_roaming_times; /*  the max number driver will try to roaming */
-
-	u8 enable80211d;
-
-	u8 ifname[16];
-
-	u8 notch_filter;
-
-	/* define for tx power adjust */
-	u8 reg_enable_tx_power_limit;
-	u8 reg_enable_tx_power_by_rate;
-	u8 reg_power_base;
-	u8 reg_pwr_tbl_sel;
-	u8  check_fw_ps;
-
-	u8 qos_opt_enable;
-
-	u8 hiq_filter;
-};
-
-#include <drv_types_sdio.h>
-
-#define GET_PRIMARY_ADAPTER(padapter) (((struct adapter *)padapter)->dvobj->if1)
-#define GET_IFACE_NUMS(padapter) (((struct adapter *)padapter)->dvobj->iface_nums)
-#define GET_ADAPTER(padapter, iface_id) (((struct adapter *)padapter)->dvobj->padapters[iface_id])
-
-struct rtw_traffic_statistics {
-	/*  tx statistics */
-	u64	tx_bytes;
-	u64	tx_pkts;
-	u64	tx_drop;
-	u64	cur_tx_bytes;
-	u64	last_tx_bytes;
-	u32 cur_tx_tp; /*  Tx throughput in MBps. */
-
-	/*  rx statistics */
-	u64	rx_bytes;
-	u64	rx_pkts;
-	u64	rx_drop;
-	u64	cur_rx_bytes;
-	u64	last_rx_bytes;
-	u32 cur_rx_tp; /*  Rx throughput in MBps. */
-};
-
-struct cam_ctl_t {
-	spinlock_t lock;
-	u64 bitmap;
-};
-
-struct cam_entry_cache {
-	u16 ctrl;
-	u8 mac[ETH_ALEN];
-	u8 key[16];
-};
-
-struct dvobj_priv {
-	/*-------- below is common data --------*/
-	struct adapter *if1; /* PRIMARY_ADAPTER */
-
-	s32	processing_dev_remove;
-
-	/* for local/global synchronization */
-	/*  */
-	spinlock_t	lock;
-	int macid[NUM_STA];
-
-	struct mutex hw_init_mutex;
-	struct mutex h2c_fwcmd_mutex;
-	struct mutex setch_mutex;
-	struct mutex setbw_mutex;
-
-	unsigned char oper_channel; /* saved channel info when call set_channel_bw */
-	unsigned char oper_bwmode;
-	unsigned char oper_ch_offset;/* PRIME_CHNL_OFFSET */
-	unsigned long on_oper_ch_time;
-
-	struct adapter *padapters;
-
-	struct cam_ctl_t cam_ctl;
-	struct cam_entry_cache cam_cache[TOTAL_CAM_ENTRY];
-
-	/* In /Out Pipe information */
-	int	RtInPipe[2];
-	int	RtOutPipe[4];
-	u8 Queue2Pipe[HW_QUEUE_ENTRY];/* for out pipe mapping */
-
-	u8 irq_alloc;
-	atomic_t continual_io_error;
-
-	atomic_t disable_func;
-
-	struct pwrctrl_priv pwrctl_priv;
-
-	struct rtw_traffic_statistics	traffic_stat;
-
-/*-------- below is for SDIO INTERFACE --------*/
-
-struct sdio_data intf_data;
-
-};
-
-#define dvobj_to_pwrctl(dvobj) (&(dvobj->pwrctl_priv))
-
-static inline struct dvobj_priv *pwrctl_to_dvobj(struct pwrctrl_priv *pwrctl_priv)
-{
-	return container_of(pwrctl_priv, struct dvobj_priv, pwrctl_priv);
-}
-
-static inline struct device *dvobj_to_dev(struct dvobj_priv *dvobj)
-{
-	/* todo: get interface type from dvobj and the return the dev accordingly */
-	return &dvobj->intf_data.func->dev;
-}
-
-enum {
-	DRIVER_NORMAL = 0,
-	DRIVER_DISAPPEAR = 1,
-	DRIVER_REPLACE_DONGLE = 2,
-};
-
-struct adapter {
-	int	DriverState;/*  for disable driver using module, use dongle to replace module. */
-	int	pid[3];/* process id from UI, 0:wps, 1:hostapd, 2:dhcpcd */
-	int	bDongle;/* build-in module or external dongle */
-
-	struct dvobj_priv *dvobj;
-	struct	mlme_priv mlmepriv;
-	struct	mlme_ext_priv mlmeextpriv;
-	struct	cmd_priv cmdpriv;
-	struct	evt_priv evtpriv;
-	/* struct	io_queue	*pio_queue; */
-	struct	io_priv iopriv;
-	struct	xmit_priv xmitpriv;
-	struct	recv_priv recvpriv;
-	struct	sta_priv stapriv;
-	struct	security_priv securitypriv;
-	spinlock_t   security_key_mutex;
-	struct	registry_priv registrypriv;
-	struct	eeprom_priv eeprompriv;
-
-	struct	hostapd_priv *phostapdpriv;
-
-	u32 setband;
-
-	void *HalData;
-	u32 hal_data_sz;
-
-	bool driver_stopped;
-	s32	bSurpriseRemoved;
-	s32  bCardDisableWOHSM;
-
-	u32 IsrContent;
-	u32 ImrContent;
-
-	u8 EepromAddressSize;
-	u8 hw_init_completed;
-	u8 bDriverIsGoingToUnload;
-	u8 init_adpt_in_progress;
-	u8 bHaltInProgress;
-
-	void *cmdThread;
-	void *evtThread;
-	void *xmitThread;
-	void *recvThread;
-
-	u32 (*intf_init)(struct dvobj_priv *dvobj);
-	void (*intf_deinit)(struct dvobj_priv *dvobj);
-	int (*intf_alloc_irq)(struct dvobj_priv *dvobj);
-	void (*intf_free_irq)(struct dvobj_priv *dvobj);
-
-
-	void (*intf_start)(struct adapter *adapter);
-	void (*intf_stop)(struct adapter *adapter);
-
-	struct net_device *pnetdev;
-	char old_ifname[IFNAMSIZ];
-
-	/*  used by rtw_rereg_nd_name related function */
-	struct rereg_nd_name_data {
-		struct net_device *old_pnetdev;
-		char old_ifname[IFNAMSIZ];
-		u8 old_bRegUseLed;
-	} rereg_nd_name_priv;
-
-	int bup;
-	struct net_device_stats stats;
-	struct iw_statistics iwstats;
-
-	struct wireless_dev *rtw_wdev;
-	struct rtw_wdev_priv wdev_data;
-
-	int net_closed;
-
-	u8 netif_up;
-
-	u8 bFWReady;
-	u8 bBTFWReady;
-	u8 bLinkInfoDump;
-	u8 bRxRSSIDisplay;
-	/* 	Added by Albert 2012/10/26 */
-	/* 	The driver will show up the desired channel number when this flag is 1. */
-	u8 bNotifyChannelChange;
-
-	/* pbuddystruct adapter is used only in two interface case, (iface_nums =2 in struct dvobj_priv) */
-	/* PRIMARY ADAPTER's buddy is SECONDARY_ADAPTER */
-	/* SECONDARY_ADAPTER's buddy is PRIMARY_ADAPTER */
-	/* for iface_id > SECONDARY_ADAPTER(IFACE_ID1), refer to padapters[iface_id]  in struct dvobj_priv */
-	/* and their pbuddystruct adapter is PRIMARY_ADAPTER. */
-	/* for PRIMARY_ADAPTER(IFACE_ID0) can directly refer to if1 in struct dvobj_priv */
-	struct adapter *pbuddy_adapter;
-
-	/* extend to support multi interface */
-       /* IFACE_ID0 is equals to PRIMARY_ADAPTER */
-       /* IFACE_ID1 is equals to SECONDARY_ADAPTER */
-	u8 iface_id;
-
-	/* for debug purpose */
-	u8 fix_rate;
-	u8 driver_vcs_en; /* Enable = 1, Disable = 0 driver control vrtl_carrier_sense for tx */
-	u8 driver_vcs_type;/* force 0:disable VCS, 1:RTS-CTS, 2:CTS-to-self when vcs_en = 1. */
-	u8 driver_ampdu_spacing;/* driver control AMPDU Density for peer sta's rx */
-	u8 driver_rx_ampdu_factor;/* 0xff: disable drv ctrl, 0:8k, 1:16k, 2:32k, 3:64k; */
-
-	unsigned char     in_cta_test;
-};
-
-#define adapter_to_dvobj(adapter) (adapter->dvobj)
-#define adapter_to_pwrctl(adapter) (dvobj_to_pwrctl(adapter->dvobj))
-#define adapter_wdev_data(adapter) (&((adapter)->wdev_data))
-
-/*  */
-/*  Function disabled. */
-/*  */
-#define DF_TX_BIT		BIT(0)
-#define DF_RX_BIT		BIT(1)
-#define DF_IO_BIT		BIT(2)
-
-/* define RTW_ENABLE_FUNC(padapter, func) (atomic_sub(&adapter_to_dvobj(padapter)->disable_func, (func))) */
-
-static inline void RTW_ENABLE_FUNC(struct adapter *padapter, int func_bit)
-{
-	int	df = atomic_read(&adapter_to_dvobj(padapter)->disable_func);
-
-	df &= ~(func_bit);
-	atomic_set(&adapter_to_dvobj(padapter)->disable_func, df);
-}
-
-#define RTW_IS_FUNC_DISABLED(padapter, func_bit) (atomic_read(&adapter_to_dvobj(padapter)->disable_func) & (func_bit))
-
-#define RTW_CANNOT_IO(padapter) \
-			((padapter)->bSurpriseRemoved || \
-			 RTW_IS_FUNC_DISABLED((padapter), DF_IO_BIT))
-
-#define RTW_CANNOT_RX(padapter) \
-			((padapter)->driver_stopped || \
-			 (padapter)->bSurpriseRemoved || \
-			 RTW_IS_FUNC_DISABLED((padapter), DF_RX_BIT))
-
-#define RTW_CANNOT_TX(padapter) \
-			((padapter)->driver_stopped || \
-			 (padapter)->bSurpriseRemoved || \
-			 RTW_IS_FUNC_DISABLED((padapter), DF_TX_BIT))
-
-static inline u8 *myid(struct eeprom_priv *peepriv)
-{
-	return peepriv->mac_addr;
-}
-
-/*  HCI Related header file */
-#include <sdio_ops.h>
-#include <sdio_hal.h>
-
-#include <rtw_btcoex.h>
-
-extern char *rtw_initmac;
-extern int rtw_mc2u_disable;
-extern int rtw_ht_enable;
-extern u32 g_wait_hiq_empty;
-extern u8 g_fwdl_wintint_rdy_fail;
-extern u8 g_fwdl_chksum_fail;
-
-#endif /* __DRV_TYPES_H__ */
diff --git a/drivers/staging/rtl8723bs/include/drv_types_sdio.h b/drivers/staging/rtl8723bs/include/drv_types_sdio.h
deleted file mode 100644
index 25b3c3a39ee4..000000000000
--- a/drivers/staging/rtl8723bs/include/drv_types_sdio.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __DRV_TYPES_SDIO_H__
-#define __DRV_TYPES_SDIO_H__
-
-/*  SDIO Header Files */
-	#include <linux/mmc/sdio_func.h>
-	#include <linux/mmc/sdio_ids.h>
-
-struct sdio_data {
-	u8  func_number;
-
-	u8  tx_block_mode;
-	u8  rx_block_mode;
-	u32 block_transfer_len;
-
-	struct sdio_func	 *func;
-	void *sys_sdio_irq_thd;
-};
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/hal_btcoex.h b/drivers/staging/rtl8723bs/include/hal_btcoex.h
deleted file mode 100644
index 525cce3574fe..000000000000
--- a/drivers/staging/rtl8723bs/include/hal_btcoex.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2013 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __HAL_BTCOEX_H__
-#define __HAL_BTCOEX_H__
-
-#include <drv_types.h>
-
-#define LPS_RPWM_WAIT_MS	300
-
-/*  Some variables can't get from outsrc BT-Coex, */
-/*  so we need to save here */
-struct bt_coexist {
-	u8 bBtExist;
-	u8 btTotalAntNum;
-	u8 btChipType;
-	u8 bInitlized;
-};
-
-void hal_btcoex_SetBTCoexist(struct adapter *padapter, u8 bBtExist);
-bool hal_btcoex_IsBtExist(struct adapter *padapter);
-bool hal_btcoex_IsBtDisabled(struct adapter *);
-void hal_btcoex_SetPgAntNum(struct adapter *padapter, u8 antNum);
-void hal_btcoex_SetSingleAntPath(struct adapter *padapter, u8 singleAntPath);
-
-void hal_btcoex_Initialize(void *padapter);
-void hal_btcoex_PowerOnSetting(struct adapter *padapter);
-void hal_btcoex_InitHwConfig(struct adapter *padapter, u8 bWifiOnly);
-
-void hal_btcoex_IpsNotify(struct adapter *padapter, u8 type);
-void hal_btcoex_LpsNotify(struct adapter *padapter, u8 type);
-void hal_btcoex_ScanNotify(struct adapter *padapter, u8 type);
-void hal_btcoex_ConnectNotify(struct adapter *padapter, u8 action);
-void hal_btcoex_MediaStatusNotify(struct adapter *padapter, u8 mediaStatus);
-void hal_btcoex_SpecialPacketNotify(struct adapter *padapter, u8 pktType);
-void hal_btcoex_IQKNotify(struct adapter *padapter, u8 state);
-void hal_btcoex_BtInfoNotify(struct adapter *padapter, u8 length, u8 *tmpBuf);
-void hal_btcoex_SuspendNotify(struct adapter *padapter, u8 state);
-void hal_btcoex_HaltNotify(struct adapter *padapter);
-
-void hal_btcoex_Handler(struct adapter *padapter);
-
-s32 hal_btcoex_IsBTCoexCtrlAMPDUSize(struct adapter *padapter);
-bool hal_btcoex_IsBtControlLps(struct adapter *padapter);
-bool hal_btcoex_IsLpsOn(struct adapter *padapter);
-u8 hal_btcoex_RpwmVal(struct adapter *);
-u8 hal_btcoex_LpsVal(struct adapter *);
-u32 hal_btcoex_GetRaMask(struct adapter *);
-void hal_btcoex_RecordPwrMode(struct adapter *padapter, u8 *pCmdBuf, u8 cmdLen);
-
-#endif /*  !__HAL_BTCOEX_H__ */
diff --git a/drivers/staging/rtl8723bs/include/hal_com.h b/drivers/staging/rtl8723bs/include/hal_com.h
deleted file mode 100644
index 7bbf62cfd825..000000000000
--- a/drivers/staging/rtl8723bs/include/hal_com.h
+++ /dev/null
@@ -1,152 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __HAL_COMMON_H__
-#define __HAL_COMMON_H__
-
-#include "hal_pg.h"
-#include "hal_phy.h"
-#include "hal_phy_reg.h"
-#include "hal_com_reg.h"
-#include "hal_com_phycfg.h"
-
-/*------------------------------ Tx Desc definition Macro ------------------------*/
-/* pragma mark -- Tx Desc related definition. -- */
-/*  */
-/*  */
-/* 	Rate */
-/*  */
-/*  CCK Rates, TxHT = 0 */
-#define DESC_RATE1M					0x00
-#define DESC_RATE2M					0x01
-#define DESC_RATE5_5M				0x02
-#define DESC_RATE11M				0x03
-
-/*  OFDM Rates, TxHT = 0 */
-#define DESC_RATE6M					0x04
-#define DESC_RATE9M					0x05
-#define DESC_RATE12M				0x06
-#define DESC_RATE18M				0x07
-#define DESC_RATE24M				0x08
-#define DESC_RATE36M				0x09
-#define DESC_RATE48M				0x0a
-#define DESC_RATE54M				0x0b
-
-/*  MCS Rates, TxHT = 1 */
-#define DESC_RATEMCS0				0x0c
-#define DESC_RATEMCS1				0x0d
-#define DESC_RATEMCS2				0x0e
-#define DESC_RATEMCS3				0x0f
-#define DESC_RATEMCS4				0x10
-#define DESC_RATEMCS5				0x11
-#define DESC_RATEMCS6				0x12
-#define DESC_RATEMCS7				0x13
-
-#define HDATA_RATE(rate)\
-(rate == DESC_RATE1M) ? "CCK_1M" : \
-(rate == DESC_RATE2M) ? "CCK_2M" : \
-(rate == DESC_RATE5_5M) ? "CCK5_5M" : \
-(rate == DESC_RATE11M) ? "CCK_11M" : \
-(rate == DESC_RATE6M) ? "OFDM_6M" : \
-(rate == DESC_RATE9M) ? "OFDM_9M" : \
-(rate == DESC_RATE12M) ? "OFDM_12M" : \
-(rate == DESC_RATE18M) ? "OFDM_18M" : \
-(rate == DESC_RATE24M) ? "OFDM_24M" : \
-(rate == DESC_RATE36M) ? "OFDM_36M" : \
-(rate == DESC_RATE48M) ? "OFDM_48M" : \
-(rate == DESC_RATE54M) ? "OFDM_54M" : \
-(rate == DESC_RATEMCS0) ? "MCS0" : \
-(rate == DESC_RATEMCS1) ? "MCS1" : \
-(rate == DESC_RATEMCS2) ? "MCS2" : \
-(rate == DESC_RATEMCS3) ? "MCS3" : \
-(rate == DESC_RATEMCS4) ? "MCS4" : \
-(rate == DESC_RATEMCS5) ? "MCS5" : \
-(rate == DESC_RATEMCS6) ? "MCS6" : \
-(rate == DESC_RATEMCS7) ? "MCS7" : "UNKNOWN"
-
-enum{
-	UP_LINK,
-	DOWN_LINK,
-};
-enum rt_media_status {
-	RT_MEDIA_DISCONNECT = 0,
-	RT_MEDIA_CONNECT       = 1
-};
-
-#define MAX_DLFW_PAGE_SIZE			4096	/*  @ page : 4k bytes */
-
-/*  BK, BE, VI, VO, HCCA, MANAGEMENT, COMMAND, HIGH, BEACON. */
-/* define MAX_TX_QUEUE		9 */
-
-#define TX_SELE_HQ			BIT(0)		/*  High Queue */
-#define TX_SELE_LQ			BIT(1)		/*  Low Queue */
-#define TX_SELE_NQ			BIT(2)		/*  Normal Queue */
-#define TX_SELE_EQ			BIT(3)		/*  Extern Queue */
-
-#define PageNum_128(_Len)		((u32)(((_Len) >> 7) + ((_Len) & 0x7F ? 1 : 0)))
-
-u8 rtw_hal_data_init(struct adapter *padapter);
-void rtw_hal_data_deinit(struct adapter *padapter);
-
-u8 /* return the final channel plan decision */
-hal_com_config_channel_plan(
-struct adapter *padapter,
-u8 	hw_channel_plan,	/* channel plan from HW (efuse/eeprom) */
-u8 	sw_channel_plan,	/* channel plan from SW (registry/module param) */
-u8 	def_channel_plan,	/* channel plan used when the former two is invalid */
-bool		AutoLoadFail
-	);
-
-bool
-HAL_IsLegalChannel(
-struct adapter *Adapter,
-u32 		Channel
-	);
-
-u8 MRateToHwRate(u8 rate);
-
-u8 HwRateToMRate(u8 rate);
-
-void HalSetBrateCfg(
-	struct adapter *Adapter,
-	u8 *mBratesOS,
-	u16	*pBrateCfg);
-
-bool
-Hal_MappingOutPipe(
-struct adapter *padapter,
-u8 NumOutPipe
-	);
-
-void hal_init_macaddr(struct adapter *adapter);
-
-void rtw_init_hal_com_default_value(struct adapter *Adapter);
-
-void c2h_evt_clear(struct adapter *adapter);
-s32 c2h_evt_read_88xx(struct adapter *adapter, u8 *buf);
-
-u8 rtw_get_mgntframe_raid(struct adapter *adapter, unsigned char network_type);
-void rtw_hal_update_sta_rate_mask(struct adapter *padapter, struct sta_info *psta);
-
-void SetHwReg(struct adapter *padapter, u8 variable, u8 *val);
-void GetHwReg(struct adapter *padapter, u8 variable, u8 *val);
-void rtw_hal_check_rxfifo_full(struct adapter *adapter);
-
-u8 GetHalDefVar(struct adapter *adapter, enum hal_def_variable variable,
-		void *value);
-
-bool GetU1ByteIntegerFromStringInDecimal(char *str, u8 *in);
-
-#define		HWSET_MAX_SIZE			512
-
-void rtw_bb_rf_gain_offset(struct adapter *padapter);
-
-void SetHalODMVar(
-	struct adapter *Adapter,
-	enum hal_odm_variable		eVariable,
-	void *pValue1,
-	bool					bSet);
-#endif /* __HAL_COMMON_H__ */
diff --git a/drivers/staging/rtl8723bs/include/hal_com_h2c.h b/drivers/staging/rtl8723bs/include/hal_com_h2c.h
deleted file mode 100644
index a59d13090565..000000000000
--- a/drivers/staging/rtl8723bs/include/hal_com_h2c.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __COMMON_H2C_H__
-#define __COMMON_H2C_H__
-
-#define H2C_RSVDPAGE_LOC_LEN		5
-#define H2C_MEDIA_STATUS_RPT_LEN		3
-#define H2C_PWRMODE_LEN			7
-#define H2C_PSTUNEPARAM_LEN			4
-#define H2C_MACID_CFG_LEN		7
-#define H2C_RSSI_SETTING_LEN		4
-
-/*  */
-/*     Structure    -------------------------------------------------- */
-/*  */
-struct rsvdpage_loc {
-	u8 LocProbeRsp;
-	u8 LocPsPoll;
-	u8 LocNullData;
-	u8 LocQosNull;
-	u8 LocBTQosNull;
-};
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/hal_com_phycfg.h b/drivers/staging/rtl8723bs/include/hal_com_phycfg.h
deleted file mode 100644
index cb7c7ed74146..000000000000
--- a/drivers/staging/rtl8723bs/include/hal_com_phycfg.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __HAL_COM_PHYCFG_H__
-#define __HAL_COM_PHYCFG_H__
-
-#define		PathA		0x0	/*  Useless */
-#define		PathB		0x1
-#define		PathC		0x2
-#define		PathD		0x3
-
-enum rate_section {
-	CCK = 0,
-	OFDM,
-	HT_MCS0_MCS7,
-};
-
-#define MAX_POWER_INDEX			0x3F
-
-enum {
-	TXPWR_LMT_FCC = 0,
-	TXPWR_LMT_MKK,
-	TXPWR_LMT_ETSI,
-	TXPWR_LMT_WW,
-	TXPWR_LMT_MAX_REGULATION_NUM,
-};
-
-/*------------------------------Define structure----------------------------*/
-struct bb_register_def {
-	u32 rfintfs;			/*  set software control: */
-					/* 	0x870~0x877[8 bytes] */
-
-	u32 rfintfo;			/*  output data: */
-					/* 	0x860~0x86f [16 bytes] */
-
-	u32 rfintfe;			/*  output enable: */
-					/* 	0x860~0x86f [16 bytes] */
-
-	u32 rf3wireOffset;		/*  LSSI data: */
-					/* 	0x840~0x84f [16 bytes] */
-
-	u32 rfHSSIPara2;		/*  wire parameter control2 : */
-					/* 	0x824~0x827, 0x82c~0x82f,
-					 *	0x834~0x837, 0x83c~0x83f
-					 */
-	u32 rfLSSIReadBack;		/* LSSI RF readback data SI mode */
-					/* 	0x8a0~0x8af [16 bytes] */
-
-	u32 rfLSSIReadBackPi;		/* LSSI RF readback data PI mode
-					 *	0x8b8-8bc for Path A and B */
-
-};
-
-u8 PHY_GetTxPowerByRateBase(struct adapter *Adapter, u8 RfPath,
-			    enum rate_section RateSection);
-
-u8 PHY_GetRateSectionIndexOfTxPowerByRate(struct adapter *padapter, u32	RegAddr,
-					  u32 BitMask);
-
-void PHY_GetRateValuesOfTxPowerByRate(struct adapter *padapter, u32 RegAddr,
-				      u32 BitMask, u32 Value, u8 *RateIndex,
-				      s8 *PwrByRateVal, u8 *RateNum);
-
-u8 PHY_GetRateIndexOfTxPowerByRate(u8 Rate);
-
-void PHY_SetTxPowerIndexByRateSection(struct adapter *padapter, u8 RFPath, u8 Channel,
-				      u8 RateSection);
-
-s8 PHY_GetTxPowerByRate(struct adapter *padapter, u8 RFPath, u8 RateIndex);
-
-void PHY_SetTxPowerByRate(struct adapter *padapter, u8 RFPath, u8 Rate,
-			  s8 Value);
-
-void PHY_SetTxPowerLevelByPath(struct adapter *Adapter, u8 channel, u8 path);
-
-void PHY_SetTxPowerIndexByRateArray(struct adapter *padapter, u8 RFPath,
-				    enum channel_width BandWidth, u8 Channel,
-				    u8 *Rates, u8 RateArraySize);
-
-void PHY_InitTxPowerByRate(struct adapter *padapter);
-
-void PHY_StoreTxPowerByRate(struct adapter *padapter, u32 RfPath,
-			    u32	RegAddr, u32 BitMask, u32 Data);
-
-void PHY_TxPowerByRateConfiguration(struct adapter *padapter);
-
-u8 PHY_GetTxPowerIndexBase(struct adapter *padapter, u8 RFPath, u8 Rate,
-			   enum channel_width BandWidth, u8 Channel);
-
-s8 phy_get_tx_pwr_lmt(struct adapter *adapter, u32 RegPwrTblSel,
-		      enum channel_width Bandwidth, u8 RfPath, u8 DataRate,
-		      u8 Channel);
-
-void PHY_SetTxPowerLimit(struct adapter *Adapter, u8 *Regulation, u8 *Bandwidth,
-			 u8 *RateSection, u8 *RfPath, u8 *Channel, u8 *PowerLimit);
-
-void PHY_ConvertTxPowerLimitToPowerIndex(struct adapter *Adapter);
-
-void PHY_InitTxPowerLimit(struct adapter *Adapter);
-
-s8 PHY_GetTxPowerTrackingOffset(struct adapter *padapter, u8 Rate, u8 RFPath);
-
-void Hal_ChannelPlanToRegulation(struct adapter *Adapter, u16 ChannelPlan);
-
-#endif /* __HAL_COMMON_H__ */
diff --git a/drivers/staging/rtl8723bs/include/hal_com_reg.h b/drivers/staging/rtl8723bs/include/hal_com_reg.h
deleted file mode 100644
index 4671fdfff916..000000000000
--- a/drivers/staging/rtl8723bs/include/hal_com_reg.h
+++ /dev/null
@@ -1,594 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __HAL_COMMON_REG_H__
-#define __HAL_COMMON_REG_H__
-
-/*  */
-/*  */
-/* 	0x0000h ~ 0x00FFh	System Configuration */
-/*  */
-/*  */
-#define REG_SYS_FUNC_EN				0x0002
-#define REG_APS_FSMCO					0x0004
-#define REG_SYS_CLKR					0x0008
-#define REG_9346CR						0x000A
-#define REG_SYS_EEPROM_CTRL			0x000A
-#define REG_RSV_CTRL					0x001C
-#define REG_RF_CTRL						0x001F
-#define REG_AFE_XTAL_CTRL				0x0024
-#define REG_MAC_PHY_CTRL				0x002c /* for 92d, DMDP, SMSP, DMSP control */
-#define REG_EFUSE_CTRL					0x0030
-#define REG_EFUSE_TEST					0x0034
-#define REG_PWR_DATA					0x0038
-#define REG_GPIO_MUXCFG				0x0040
-#define REG_GPIO_INTM					0x0048
-#define REG_LEDCFG0						0x004C
-#define REG_LEDCFG2						0x004E
-#define REG_HSIMR						0x0058
-#define REG_GPIO_IO_SEL_2				0x0062 /*  RTL8723 WIFI/BT/GPS Multi-Function GPIO Select. */
-#define REG_MULTI_FUNC_CTRL			0x0068 /*  RTL8723 WIFI/BT/GPS Multi-Function control source. */
-#define REG_MCUFWDL					0x0080
-#define REG_EFUSE_ACCESS				0x00CF	/*  Efuse access protection for RTL8723 */
-#define REG_SYS_CFG						0x00F0
-#define REG_GPIO_OUTSTS				0x00F4	/*  For RTL8723 only. */
-
-/*  */
-/*  */
-/* 	0x0100h ~ 0x01FFh	MACTOP General Configuration */
-/*  */
-/*  */
-#define REG_CR							0x0100
-#define REG_PBP							0x0104
-#define REG_TRXDMA_CTRL				0x010C
-#define REG_TRXFF_BNDY					0x0114
-#define REG_HIMR						0x0120
-#define REG_HISR						0x0124
-
-#define REG_C2HEVT_MSG_NORMAL		0x01A0
-#define REG_C2HEVT_CLEAR				0x01AF
-#define REG_HMETFR						0x01CC
-#define REG_HMEBOX_0					0x01D0
-
-/*  */
-/*  */
-/* 	0x0200h ~ 0x027Fh	TXDMA Configuration */
-/*  */
-/*  */
-#define REG_RQPN						0x0200
-#define REG_TDECTRL						0x0208
-#define REG_TXDMA_STATUS				0x0210
-#define REG_RQPN_NPQ					0x0214
-#define REG_AUTO_LLT					0x0224
-
-
-/*  */
-/*  */
-/* 	0x0280h ~ 0x02FFh	RXDMA Configuration */
-/*  */
-/*  */
-#define REG_RXDMA_AGG_PG_TH			0x0280
-#define REG_RXPKT_NUM					0x0284
-
-/*  */
-/*  */
-/* 	0x0400h ~ 0x047Fh	Protocol Configuration */
-/*  */
-/*  */
-#define REG_TXPKT_EMPTY				0x041A
-#define REG_FWHW_TXQ_CTRL				0x0420
-#define REG_HWSEQ_CTRL					0x0423
-#define REG_SPEC_SIFS					0x0428
-#define REG_RL							0x042A
-#define REG_RRSR						0x0440
-
-#define REG_PKT_VO_VI_LIFE_TIME		0x04C0
-#define REG_PKT_BE_BK_LIFE_TIME		0x04C2
-#define REG_BAR_MODE_CTRL				0x04CC
-#define REG_EARLY_MODE_CONTROL		0x04D0
-#define REG_MACID_SLEEP				0x04D4
-#define REG_NQOS_SEQ					0x04DC
-
-/*  */
-/*  */
-/* 	0x0500h ~ 0x05FFh	EDCA Configuration */
-/*  */
-/*  */
-#define REG_EDCA_VO_PARAM				0x0500
-#define REG_EDCA_VI_PARAM				0x0504
-#define REG_EDCA_BE_PARAM				0x0508
-#define REG_EDCA_BK_PARAM				0x050C
-#define REG_BCNTCFG						0x0510
-#define REG_SIFS_CTX					0x0514
-#define REG_SIFS_TRX					0x0516
-#define REG_TSFTR_SYN_OFFSET			0x0518
-#define REG_SLOT						0x051B
-#define REG_TXPAUSE						0x0522
-#define REG_RD_CTRL						0x0524
-/*  */
-/*  Format for offset 540h-542h: */
-/* 	[3:0]:   TBTT prohibit setup in unit of 32us. The time for HW getting beacon content before TBTT. */
-/* 	[7:4]:   Reserved. */
-/* 	[19:8]:  TBTT prohibit hold in unit of 32us. The time for HW holding to send the beacon packet. */
-/* 	[23:20]: Reserved */
-/*  Description: */
-/* 	              | */
-/*      |<--Setup--|--Hold------------>| */
-/* 	--------------|---------------------- */
-/*                 | */
-/*                TBTT */
-/*  Note: We cannot update beacon content to HW or send any AC packets during the time between Setup and Hold. */
-/*  Described by Designer Tim and Bruce, 2011-01-14. */
-/*  */
-#define REG_TBTT_PROHIBIT				0x0540
-#define REG_BCN_CTRL					0x0550
-#define REG_BCN_CTRL_1					0x0551
-#define REG_DUAL_TSF_RST				0x0553
-#define REG_BCN_INTERVAL				0x0554	/*  The same as REG_MBSSID_BCN_SPACE */
-#define REG_DRVERLYINT					0x0558
-#define REG_BCNDMATIM					0x0559
-#define REG_ATIMWND					0x055A
-#define REG_BCN_MAX_ERR				0x055D
-#define REG_RXTSF_OFFSET_CCK			0x055E
-#define REG_RXTSF_OFFSET_OFDM			0x055F
-#define REG_TSFTR						0x0560
-#define REG_ACMHWCTRL					0x05C0
-
-/*  */
-/*  */
-/* 	0x0600h ~ 0x07FFh	WMAC Configuration */
-/*  */
-/*  */
-#define REG_BWOPMODE					0x0603
-#define REG_TCR							0x0604
-#define REG_RCR							0x0608
-#define REG_RX_DRVINFO_SZ				0x060F
-
-#define REG_MACID						0x0610
-#define REG_BSSID						0x0618
-#define REG_MAR							0x0620
-
-#define REG_MAC_SPEC_SIFS				0x063A
-/*  20100719 Joseph: Hardware register definition change. (HW datasheet v54) */
-#define REG_RESP_SIFS_CCK				0x063C	/*  [15:8]SIFS_R2T_OFDM, [7:0]SIFS_R2T_CCK */
-#define REG_RESP_SIFS_OFDM                    0x063E	/*  [15:8]SIFS_T2T_OFDM, [7:0]SIFS_T2T_CCK */
-
-#define REG_ACKTO						0x0640
-
-/*  */
-/*  Note: */
-/* 	The NAV upper value is very important to WiFi 11n 5.2.3 NAV test. The default value is */
-/* 	always too small, but the WiFi TestPlan test by 25, 000 microseconds of NAV through sending */
-/* 	CTS in the air. We must update this value greater than 25, 000 microseconds to pass the item. */
-/* 	The offset of NAV_UPPER in 8192C Spec is incorrect, and the offset should be 0x0652. Commented */
-/* 	by SD1 Scott. */
-/*  By Bruce, 2011-07-18. */
-/*  */
-#define REG_NAV_UPPER					0x0652	/*  unit of 128 */
-
-/* WMA, BA, CCX */
-#define REG_RXERR_RPT					0x0664
-
-/*  Security */
-#define REG_CAMCMD						0x0670
-#define REG_CAMWRITE					0x0674
-#define REG_CAMREAD					0x0678
-#define REG_SECCFG						0x0680
-
-/*  Power */
-#define REG_RXFLTMAP0					0x06A0
-#define REG_RXFLTMAP1					0x06A2
-#define REG_RXFLTMAP2					0x06A4
-#define REG_BCN_PSR_RPT				0x06A8
-
-/*  */
-/*  */
-/* 	Redefine 8192C register definition for compatibility */
-/*  */
-/*  */
-#define EFUSE_CTRL				REG_EFUSE_CTRL		/*  E-Fuse Control. */
-#define EFUSE_TEST				REG_EFUSE_TEST		/*  E-Fuse Test. */
-#define MSR						(REG_CR + 2)		/*  Media Status register */
-
-#define PBP						REG_PBP
-
-/*  */
-/*  9. Security Control Registers	(Offset:) */
-/*  */
-#define RWCAM					REG_CAMCMD		/* IN 8190 Data Sheet is called CAMcmd */
-#define WCAMI					REG_CAMWRITE	/*  Software write CAM input content */
-
-/*  */
-/*        8723/8188E Host System Interrupt Status Register (offset 0x5C, 32 byte) */
-/*  */
-#define HSISR_GPIO12_0_INT				BIT(0)
-#define HSISR_SPS_OCP_INT				BIT(5)
-#define HSISR_RON_INT					BIT(6)
-#define HSISR_PDNINT					BIT(7)
-#define HSISR_GPIO9_INT					BIT(25)
-
-/*  */
-/*        Response Rate Set Register	(offset 0x440, 24bits) */
-/*  */
-#define RRSR_1M					BIT(0)
-#define RRSR_2M					BIT(1)
-#define RRSR_5_5M				BIT(2)
-#define RRSR_11M				BIT(3)
-#define RRSR_6M					BIT(4)
-#define RRSR_12M				BIT(6)
-#define RRSR_24M				BIT(8)
-
-#define RRSR_CCK_RATES (RRSR_11M|RRSR_5_5M|RRSR_2M|RRSR_1M)
-
-/*  */
-/*        Rate Definition */
-/*  */
-/* CCK */
-#define RATE_1M					BIT(0)
-#define RATE_2M					BIT(1)
-#define RATE_5_5M				BIT(2)
-#define RATE_11M				BIT(3)
-/* OFDM */
-#define RATE_6M					BIT(4)
-#define RATE_9M					BIT(5)
-#define RATE_12M				BIT(6)
-#define RATE_18M				BIT(7)
-#define RATE_24M				BIT(8)
-#define RATE_36M				BIT(9)
-#define RATE_48M				BIT(10)
-#define RATE_54M				BIT(11)
-
-/*  ALL CCK Rate */
-#define RATE_BITMAP_ALL			0xFFFFF
-
-/*  Only use CCK 1M rate for ACK */
-#define RATE_RRSR_CCK_ONLY_1M		0xFFFF1
-
-/*  */
-/*        BW_OPMODE bits				(Offset 0x603, 8bit) */
-/*  */
-#define BW_OPMODE_20MHZ			BIT(2)
-
-/*  */
-/*        CAM Config Setting (offset 0x680, 1 byte) */
-/*  */
-#define CAM_VALID				BIT(15)
-
-#define CAM_CONTENT_COUNT	8
-
-#define CAM_AES					0x04
-
-#define TOTAL_CAM_ENTRY		32
-
-#define CAM_WRITE				BIT(16)
-#define CAM_POLLINIG			BIT(31)
-
-/*  */
-/*  12. Host Interrupt Status Registers */
-/*  */
-
-/*  */
-/*        8192C (RCR) Receive Configuration Register	(Offset 0x608, 32 bits) */
-/*  */
-#define RCR_APPFCS				BIT(31)	/*  WMAC append FCS after payload */
-#define RCR_APP_MIC				BIT(30)	/*  MACRX will retain the MIC at the bottom of the packet. */
-#define RCR_APP_ICV				BIT(29)	/*  MACRX will retain the ICV at the bottom of the packet. */
-#define RCR_APP_PHYST_RXFF		BIT(28)	/*  PHY Status is appended before RX packet in RXFF */
-#define RCR_APP_BA_SSN			BIT(27)	/*  SSN of previous TXBA is appended as after original RXDESC as the 4-th DW of RXDESC. */
-#define RCR_HTC_LOC_CTRL		BIT(14)	/*  MFC<--HTC = 1 MFC-->HTC = 0 */
-#define RCR_AMF					BIT(13)	/*  Accept management type frame */
-#define RCR_ADF					BIT(11)	/*  Accept data type frame. This bit also regulates BA, BAR, and PS-Poll (AP mode only). */
-#define RCR_ACRC32				BIT(8)		/*  Accept CRC32 error packet */
-#define RCR_CBSSID_BCN			BIT(7)		/*  Accept BSSID match packet (Rx beacon, probe rsp) */
-#define RCR_CBSSID_DATA		BIT(6)		/*  Accept BSSID match packet (Data) */
-#define RCR_AB					BIT(3)		/*  Accept broadcast packet */
-#define RCR_AM					BIT(2)		/*  Accept multicast packet */
-#define RCR_APM					BIT(1)		/*  Accept physical match packet */
-
-
-/*  */
-/*  */
-/* 	0x0000h ~ 0x00FFh	System Configuration */
-/*  */
-/*  */
-
-/* 2 SYS_FUNC_EN */
-#define FEN_BBRSTB				BIT(0)
-#define FEN_BB_GLB_RSTn		BIT(1)
-#define FEN_DIO_PCIE			BIT(5)
-#define FEN_PCIEA				BIT(6)
-#define FEN_PPLL					BIT(7)
-#define FEN_CPUEN				BIT(10)
-#define FEN_ELDR				BIT(12)
-
-/* 2 APS_FSMCO */
-#define EnPDN					BIT(4)
-
-/* 2 SYS_CLKR */
-#define ANA8M					BIT(1)
-#define LOADER_CLK_EN			BIT(5)
-
-
-/* 2 9346CR /REG_SYS_EEPROM_CTRL */
-#define BOOT_FROM_EEPROM		BIT(4)
-#define EEPROM_EN				BIT(5)
-
-
-/* 2 RF_CTRL */
-#define RF_EN					BIT(0)
-#define RF_RSTB					BIT(1)
-#define RF_SDMRSTB				BIT(2)
-
-/* 2 EFUSE_TEST (For RTL8723 partially) */
-#define EFUSE_SEL(x)				(((x) & 0x3) << 8)
-#define EFUSE_SEL_MASK			0x300
-#define EFUSE_WIFI_SEL_0		0x0
-#define EFUSE_BT_SEL_0			0x1
-#define EFUSE_BT_SEL_1			0x2
-#define EFUSE_BT_SEL_2			0x3
-
-
-/* 2 8051FWDL */
-/* 2 MCUFWDL */
-#define MCUFWDL_RDY			BIT(1)
-#define FWDL_ChkSum_rpt		BIT(2)
-#define WINTINI_RDY				BIT(6)
-#define RAM_DL_SEL				BIT(7)
-
-/* 2 REG_SYS_CFG */
-#define VENDOR_ID				BIT(19)
-
-#define RTL_ID					BIT(23) /*  TestChip ID, 1:Test(RLE); 0:MP(RL) */
-
-
-#define CHIP_VER_RTL_MASK		0xF000	/* Bit 12 ~ 15 */
-#define CHIP_VER_RTL_SHIFT		12
-
-/* 2 REG_GPIO_OUTSTS (For RTL8723 only) */
-#define RF_RL_ID					(BIT(31)|BIT(30)|BIT(29)|BIT(28))
-
-/*  */
-/*  */
-/* 	0x0100h ~ 0x01FFh	MACTOP General Configuration */
-/*  */
-/*  */
-
-/* 2 Function Enable Registers */
-/* 2 CR */
-#define HCI_TXDMA_EN			BIT(0)
-#define HCI_RXDMA_EN			BIT(1)
-#define TXDMA_EN				BIT(2)
-#define RXDMA_EN				BIT(3)
-#define PROTOCOL_EN				BIT(4)
-#define SCHEDULE_EN				BIT(5)
-#define MACTXEN					BIT(6)
-#define MACRXEN					BIT(7)
-#define ENSWBCN					BIT(8)
-#define ENSEC					BIT(9)
-#define CALTMR_EN				BIT(10)	/*  32k CAL TMR enable */
-
-/*  Network type */
-#define _NETTYPE(x)				(((x) & 0x3) << 16)
-#define MASK_NETTYPE			0x30000
-#define NT_LINK_AD_HOC			0x1
-#define NT_LINK_AP				0x2
-
-/* 2 PBP - Page Size Register */
-#define _PSRX(x)				(x)
-#define _PSTX(x)				((x) << 4)
-
-#define PBP_128					0x1
-
-/* 2 TX/RXDMA */
-#define RXDMA_AGG_EN			BIT(2)
-
-/*  For normal driver, 0x10C */
-#define _TXDMA_HIQ_MAP(x)			(((x)&0x3) << 14)
-#define _TXDMA_MGQ_MAP(x)			(((x)&0x3) << 12)
-#define _TXDMA_BKQ_MAP(x)			(((x)&0x3) << 10)
-#define _TXDMA_BEQ_MAP(x)			(((x)&0x3) << 8)
-#define _TXDMA_VIQ_MAP(x)			(((x)&0x3) << 6)
-#define _TXDMA_VOQ_MAP(x)			(((x)&0x3) << 4)
-
-#define QUEUE_LOW				1
-#define QUEUE_NORMAL			2
-#define QUEUE_HIGH				3
-
-/*  */
-/*  */
-/* 	0x0200h ~ 0x027Fh	TXDMA Configuration */
-/*  */
-/*  */
-/* 2 RQPN */
-#define _HPQ(x)					((x) & 0xFF)
-#define _LPQ(x)					(((x) & 0xFF) << 8)
-#define _PUBQ(x)					(((x) & 0xFF) << 16)
-#define _NPQ(x)					((x) & 0xFF)			/*  NOTE: in RQPN_NPQ register */
-
-#define LD_RQPN					BIT(31)
-
-/* 2 AUTO_LLT */
-#define BIT_AUTO_INIT_LLT BIT(16)
-
-/*  */
-/*  */
-/* 	0x0280h ~ 0x028Bh	RX DMA Configuration */
-/*  */
-/*  */
-
-/* 2 REG_RXDMA_CONTROL, 0x0286h */
-/*  Write only. When this bit is set, RXDMA will decrease RX PKT counter by one. Before */
-/*  this bit is polled, FW shall update RXFF_RD_PTR first. This register is write pulse and auto clear. */
-/* define RXPKT_RELEASE_POLL			BIT(0) */
-/*  Read only. When RXMA finishes on-going DMA operation, RXMDA will report idle state in */
-/*  this bit. FW can start releasing packets after RXDMA entering idle mode. */
-/* define RXDMA_IDLE					BIT(1) */
-/*  When this bit is set, RXDMA will enter this mode after on-going RXDMA packet to host */
-/*  completed, and stop DMA packet to host. RXDMA will then report Default: 0; */
-/* define RW_RELEASE_EN				BIT(2) */
-
-/* 2 REG_RXPKT_NUM, 0x0284 */
-#define		RXPKT_RELEASE_POLL	BIT(16)
-#define	RXDMA_IDLE				BIT(17)
-#define	RW_RELEASE_EN			BIT(18)
-
-/*  */
-/*  */
-/* 	0x0400h ~ 0x047Fh	Protocol Configuration */
-/*  */
-/*  */
-/* 2 FWHW_TXQ_CTRL */
-#define EN_AMPDU_RTY_NEW			BIT(7)
-
-
-/* 2 SPEC SIFS */
-#define _SPEC_SIFS_CCK(x)			((x) & 0xFF)
-#define _SPEC_SIFS_OFDM(x)			(((x) & 0xFF) << 8)
-
-/* 2 RL */
-#define	RETRY_LIMIT_SHORT_SHIFT			8
-#define	RETRY_LIMIT_LONG_SHIFT			0
-
-/*  */
-/*  */
-/* 	0x0500h ~ 0x05FFh	EDCA Configuration */
-/*  */
-/*  */
-
-#define _LRL(x)					((x) & 0x3F)
-#define _SRL(x)					(((x) & 0x3F) << 8)
-
-
-/* 2 BCN_CTRL */
-#define EN_TXBCN_RPT			BIT(2)
-#define EN_BCN_FUNCTION		BIT(3)
-
-#define DIS_ATIM					BIT(0)
-#define DIS_BCNQ_SUB			BIT(1)
-#define DIS_TSF_UDT				BIT(4)
-
-/* 2 ACMHWCTRL */
-#define AcmHw_HwEn				BIT(0)
-#define AcmHw_BeqEn			BIT(1)
-#define AcmHw_ViqEn				BIT(2)
-#define AcmHw_VoqEn			BIT(3)
-
-/*  */
-/*  */
-/* 	0x0600h ~ 0x07FFh	WMAC Configuration */
-/*  */
-/*  */
-
-/* 2 TCR */
-#define TSFRST					BIT(0)
-
-/* 2 RCR */
-#define AB						BIT(3)
-
-/* 2 SECCFG */
-#define SCR_TxUseDK				BIT(0)			/* Force Tx Use Default Key */
-#define SCR_RxUseDK				BIT(1)			/* Force Rx Use Default Key */
-#define SCR_TxEncEnable			BIT(2)			/* Enable Tx Encryption */
-#define SCR_RxDecEnable			BIT(3)			/* Enable Rx Decryption */
-#define SCR_TXBCUSEDK			BIT(6)			/*  Force Tx Broadcast packets Use Default Key */
-#define SCR_RXBCUSEDK			BIT(7)			/*  Force Rx Broadcast packets Use Default Key */
-#define SCR_CHK_KEYID			BIT(8)
-
-/*  */
-/*  */
-/* 	SDIO Bus Specification */
-/*  */
-/*  */
-
-/*  I/O bus domain address mapping */
-#define SDIO_LOCAL_BASE		0x10250000
-
-/* SDIO host local register space mapping. */
-#define SDIO_LOCAL_MSK				0x0FFF
-#define WLAN_IOREG_MSK			0x7FFF
-#define WLAN_FIFO_MSK				0x1FFF	/*  Aggregation Length[12:0] */
-#define WLAN_RX0FF_MSK				0x0003
-
-#define SDIO_LOCAL_DEVICE_ID			0	/*  0b[16], 000b[15:13] */
-#define WLAN_TX_HIQ_DEVICE_ID			4	/*  0b[16], 100b[15:13] */
-#define WLAN_TX_MIQ_DEVICE_ID		5	/*  0b[16], 101b[15:13] */
-#define WLAN_TX_LOQ_DEVICE_ID		6	/*  0b[16], 110b[15:13] */
-#define WLAN_RX0FF_DEVICE_ID			7	/*  0b[16], 111b[15:13] */
-#define WLAN_IOREG_DEVICE_ID			8	/*  1b[16] */
-
-/* SDIO Tx Free Page Index */
-#define HI_QUEUE_IDX				0
-#define MID_QUEUE_IDX				1
-#define LOW_QUEUE_IDX				2
-#define PUBLIC_QUEUE_IDX			3
-
-#define SDIO_MAX_TX_QUEUE			3		/*  HIQ, MIQ and LOQ */
-
-#define SDIO_REG_TX_CTRL			0x0000 /*  SDIO Tx Control */
-#define SDIO_REG_HIMR				0x0014 /*  SDIO Host Interrupt Mask */
-#define SDIO_REG_HISR				0x0018 /*  SDIO Host Interrupt Service Routine */
-#define SDIO_REG_RX0_REQ_LEN		0x001C /*  RXDMA Request Length */
-#define SDIO_REG_OQT_FREE_PG		0x001E /*  OQT Free Page */
-#define SDIO_REG_FREE_TXPG			0x0020 /*  Free Tx Buffer Page */
-#define SDIO_REG_HRPWM1			0x0080 /*  HCI Request Power Mode 1 */
-#define SDIO_REG_HSUS_CTRL			0x0086 /*  SDIO HCI Suspend Control */
-
-#define SDIO_HIMR_DISABLED			0
-
-/*  RTL8723/RTL8188E SDIO Host Interrupt Mask Register */
-#define SDIO_HIMR_RX_REQUEST_MSK		BIT(0)
-#define SDIO_HIMR_AVAL_MSK			BIT(1)
-
-/*  SDIO Host Interrupt Service Routine */
-#define SDIO_HISR_RX_REQUEST			BIT(0)
-#define SDIO_HISR_AVAL					BIT(1)
-#define SDIO_HISR_TXERR					BIT(2)
-#define SDIO_HISR_RXERR					BIT(3)
-#define SDIO_HISR_TXFOVW				BIT(4)
-#define SDIO_HISR_RXFOVW				BIT(5)
-#define SDIO_HISR_TXBCNOK				BIT(6)
-#define SDIO_HISR_TXBCNERR				BIT(7)
-#define SDIO_HISR_C2HCMD				BIT(17)
-#define SDIO_HISR_CPWM1				BIT(18)
-#define SDIO_HISR_CPWM2				BIT(19)
-#define SDIO_HISR_HSISR_IND			BIT(20)
-#define SDIO_HISR_GTINT3_IND			BIT(21)
-#define SDIO_HISR_GTINT4_IND			BIT(22)
-#define SDIO_HISR_PSTIMEOUT			BIT(23)
-#define SDIO_HISR_OCPINT				BIT(24)
-
-#define MASK_SDIO_HISR_CLEAR		(SDIO_HISR_TXERR |\
-									SDIO_HISR_RXERR |\
-									SDIO_HISR_TXFOVW |\
-									SDIO_HISR_RXFOVW |\
-									SDIO_HISR_TXBCNOK |\
-									SDIO_HISR_TXBCNERR |\
-									SDIO_HISR_C2HCMD |\
-									SDIO_HISR_CPWM1 |\
-									SDIO_HISR_CPWM2 |\
-									SDIO_HISR_HSISR_IND |\
-									SDIO_HISR_GTINT3_IND |\
-									SDIO_HISR_GTINT4_IND |\
-									SDIO_HISR_PSTIMEOUT |\
-									SDIO_HISR_OCPINT)
-
-/*  SDIO Tx FIFO related */
-#define SDIO_TX_FREE_PG_QUEUE			4	/*  The number of Tx FIFO free page */
-
-/*  */
-/*  */
-/* 	0xFE00h ~ 0xFE55h	USB Configuration */
-/*  */
-/*  */
-
-/* 2REG_C2HEVT_CLEAR */
-#define C2H_EVT_HOST_CLOSE		0x00	/*  Set by driver and notify FW that the driver has read the C2H command message */
-#define C2H_EVT_FW_CLOSE		0xFF	/*  Set by FW indicating that FW had set the C2H command message and it's not yet read by driver. */
-
-/* 2REG_MULTI_FUNC_CTRL(For RTL8723 Only) */
-#define BT_FUNC_EN				BIT(18)	/*  BT function enable */
-
-#endif /* __HAL_COMMON_H__ */
diff --git a/drivers/staging/rtl8723bs/include/hal_data.h b/drivers/staging/rtl8723bs/include/hal_data.h
deleted file mode 100644
index f67ca496902a..000000000000
--- a/drivers/staging/rtl8723bs/include/hal_data.h
+++ /dev/null
@@ -1,276 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __HAL_DATA_H__
-#define __HAL_DATA_H__
-
-#include "odm_precomp.h"
-#include <hal_btcoex.h>
-
-#include <hal_sdio.h>
-
-enum rt_ampdu_burst {
-	RT_AMPDU_BURST_NONE	= 0,
-	RT_AMPDU_BURST_92D	= 1,
-	RT_AMPDU_BURST_88E	= 2,
-	RT_AMPDU_BURST_8812_4	= 3,
-	RT_AMPDU_BURST_8812_8	= 4,
-	RT_AMPDU_BURST_8812_12	= 5,
-	RT_AMPDU_BURST_8812_15	= 6,
-	RT_AMPDU_BURST_8723B	= 7,
-};
-
-#define CHANNEL_MAX_NUMBER		(14)	/*  14 is the max channel number */
-#define CHANNEL_MAX_NUMBER_2G		14
-#define MAX_PG_GROUP			13
-
-/*  Tx Power Limit Table Size */
-#define MAX_REGULATION_NUM			4
-#define MAX_2_4G_BANDWIDTH_NUM			2
-#define MAX_RATE_SECTION_NUM			3 /* CCK:1, OFDM:1, HT:1 */
-
-/*  duplicate code, will move to ODM ######### */
-/* define IQK_MAC_REG_NUM		4 */
-/* define IQK_ADDA_REG_NUM		16 */
-
-/* define IQK_BB_REG_NUM			10 */
-
-/* define HP_THERMAL_NUM		8 */
-/*  duplicate code, will move to ODM ######### */
-
-enum {
-	SINGLEMAC_SINGLEPHY,	/* SMSP */
-	DUALMAC_DUALPHY,		/* DMDP */
-	DUALMAC_SINGLEPHY,	/* DMSP */
-};
-
-#define PAGE_SIZE_128	128
-#define PAGE_SIZE_256	256
-#define PAGE_SIZE_512	512
-
-struct dm_priv {
-	u8 DM_Type;
-
-#define DYNAMIC_FUNC_BT BIT(0)
-
-	u8 DMFlag;
-	u8 InitDMFlag;
-	/* u8   RSVD_1; */
-
-	u32 InitODMFlag;
-	/*  Upper and Lower Signal threshold for Rate Adaptive */
-	int	UndecoratedSmoothedPWDB;
-	int	UndecoratedSmoothedCCK;
-	int	EntryMinUndecoratedSmoothedPWDB;
-	int	EntryMaxUndecoratedSmoothedPWDB;
-	int	MinUndecoratedPWDBForDM;
-	int	LastMinUndecoratedPWDBForDM;
-
-	s32	UndecoratedSmoothedBeacon;
-
-/*  duplicate code, will move to ODM ######### */
-	/* for High Power */
-	u8 bDynamicTxPowerEnable;
-	u8 LastDTPLvl;
-	u8 DynamicTxHighPowerLvl;/* Add by Jacken Tx Power Control for Near/Far Range 2008/03/06 */
-
-	/* for tx power tracking */
-	u8 bTXPowerTracking;
-	u8 TXPowercount;
-	u8 bTXPowerTrackingInit;
-	u8 TxPowerTrackControl;	/* for mp mode, turn off txpwrtracking as default */
-	u8 TM_Trigger;
-
-	u8 ThermalMeter[2];				/*  ThermalMeter, index 0 for RFIC0, and 1 for RFIC1 */
-	u8 ThermalValue;
-	u8 ThermalValue_LCK;
-	u8 ThermalValue_IQK;
-	u8 ThermalValue_DPK;
-	u8 bRfPiEnable;
-	/* u8   RSVD_2; */
-
-	/* for APK */
-	u32 APKoutput[2][2];	/* path A/B; output1_1a/output1_2a */
-	u8 bAPKdone;
-	u8 bAPKThermalMeterIgnore;
-	u8 bDPdone;
-	u8 bDPPathAOK;
-	u8 bDPPathBOK;
-	/* u8   RSVD_3; */
-	/* u8   RSVD_4; */
-	/* u8   RSVD_5; */
-
-	/* for IQK */
-	u32 ADDA_backup[IQK_ADDA_REG_NUM];
-	u32 IQK_MAC_backup[IQK_MAC_REG_NUM];
-	u32 IQK_BB_backup_recover[9];
-	u32 IQK_BB_backup[IQK_BB_REG_NUM];
-
-	u8 PowerIndex_backup[6];
-	u8 OFDM_index[2];
-
-	u8 bCCKinCH14;
-	u8 CCK_index;
-	u8 bDoneTxpower;
-	u8 CCK_index_HP;
-
-	u8 OFDM_index_HP[2];
-	u8 ThermalValue_HP[HP_THERMAL_NUM];
-	u8 ThermalValue_HP_index;
-	/* u8   RSVD_6; */
-
-	/* for TxPwrTracking2 */
-	s32	RegE94;
-	s32  RegE9C;
-	s32	RegEB4;
-	s32	RegEBC;
-
-	u32 TXPowerTrackingCallbackCnt;	/* cosa add for debug */
-
-	u32 prv_traffic_idx; /*  edca turbo */
-/*  duplicate code, will move to ODM ######### */
-
-	/*  Add for Reading Initial Data Rate SEL Register 0x484 during watchdog. Using for fill tx desc. 2011.3.21 by Thomas */
-	u8 INIDATA_RATE[32];
-};
-
-
-struct hal_com_data {
-	u16 FirmwareVersion;
-	u16 FirmwareVersionRev;
-	u16 FirmwareSubVersion;
-	u16 FirmwareSignature;
-
-	/* current WIFI_PHY values */
-	enum wireless_mode CurrentWirelessMode;
-	enum channel_width CurrentChannelBW;
-	u8 CurrentChannel;
-	u8 CurrentCenterFrequencyIndex1;
-	u8 nCur40MhzPrimeSC;/*  Control channel sub-carrier */
-	u8 nCur80MhzPrimeSC;   /* used for primary 40MHz of 80MHz mode */
-
-	u16 CustomerID;
-	u16 BasicRateSet;
-	u32 ReceiveConfig;
-
-	/* rf_ctrl */
-	u8 PackageType;
-
-	/*  EEPROM setting. */
-	u8 EEPROMRegulatory;
-	u8 EEPROMThermalMeter;
-	u8 EEPROMBluetoothCoexist;
-	u8 EEPROMBluetoothAntNum;
-	u8 bDisableSWChannelPlan; /*  flag of disable software change channel plan */
-
-	bool		EepromOrEfuse;
-	u8 		EfuseUsedPercentage;
-	u16 			EfuseUsedBytes;
-	struct efuse_hal		EfuseHal;
-
-	/* 3 [2.4G] */
-	u8 Index24G_CCK_Base[MAX_RF_PATH][CHANNEL_MAX_NUMBER];
-	u8 Index24G_BW40_Base[MAX_RF_PATH][CHANNEL_MAX_NUMBER];
-	/* If only one tx, only BW20 and OFDM are used. */
-	s8	OFDM_24G_Diff[MAX_RF_PATH][MAX_TX_COUNT];
-	s8	BW20_24G_Diff[MAX_RF_PATH][MAX_TX_COUNT];
-	s8	BW40_24G_Diff[MAX_RF_PATH][MAX_TX_COUNT];
-
-	u8 Regulation2_4G;
-
-	/*  TX power by rate table */
-	/*  RF: at most 2 = AB = 0/1 */
-	/*  CCK = 0 OFDM = 1 HT-MCS 0-7 = 2 */
-	s8 TxPwrByRateOffset[MAX_RF_PATH_NUM][TX_PWR_BY_RATE_NUM_RATE];
-	/*  */
-
-	/*  Power Limit Table for 2.4G */
-	s8	TxPwrLimit_2_4G[MAX_REGULATION_NUM]
-						[MAX_2_4G_BANDWIDTH_NUM]
-	                                [MAX_RATE_SECTION_NUM]
-	                                [CHANNEL_MAX_NUMBER_2G]
-						[MAX_RF_PATH_NUM];
-
-	/*  Store the original power by rate value of the base of each rate section of rf path A & B */
-	u8 TxPwrByRateBase2_4G[MAX_RF_PATH_NUM][MAX_RATE_SECTION_NUM];
-
-	u8 CrystalCap;
-
-	u8 TypeGLNA;
-	u8 TypeGPA;
-	u8 TypeALNA;
-	u8 TypeAPA;
-	u8 RFEType;
-	u8 BoardType;
-	bool		bLCKInProgress;
-
-	bool		bSwChnl;
-	bool		bSetChnlBW;
-
-	u8 TxPowerTrackControl; /* for mp mode, turn off txpwrtracking as default */
-
-	u32 AcParam_BE; /* Original parameter for BE, use for EDCA turbo. */
-
-	struct bb_register_def PHYRegDef[4];	/* Radio A/B/C/D */
-
-	u32 RfRegChnlVal[2];
-
-	/* for host message to fw */
-	u8 LastHMEBoxNum;
-
-	u8 fw_ractrl;
-	/*  Beacon function related global variable. */
-	u8 RegFwHwTxQCtrl;
-	u8 RegReg542;
-	u16 RegRRSR;
-
-	u8 CurAntenna;
-	u8 AntDivCfg;
-	u8 AntDetection;
-	u8 ant_path; /* for 8723B s0/s1 selection */
-
-	u8 u1ForcedIgiLb;			/*  forced IGI lower bound */
-
-	/*  2010/08/09 MH Add CU power down mode. */
-	bool		pwrdown;
-
-	u8 OutEpQueueSel;
-	u8 OutEpNumber;
-
-	/*  Auto FSM to Turn On, include clock, isolation, power control for MAC only */
-	u8 bMacPwrCtrlOn;
-
-	enum rt_ampdu_burst	AMPDUBurstMode; /* 92C maybe not use, but for compile successfully */
-
-	u32 		sdio_himr;
-	u32 		sdio_hisr;
-
-	/*  SDIO Tx FIFO related. */
-	/*  HIQ, MID, LOW, PUB free pages; padapter->xmitpriv.free_txpg */
-	u8 	SdioTxFIFOFreePage[SDIO_TX_FREE_PG_QUEUE];
-	u8 	SdioTxOQTMaxFreeSpace;
-	u8 	SdioTxOQTFreeSpace;
-
-
-	/*  SDIO Rx FIFO related. */
-	u8 	SdioRxFIFOCnt;
-	u16 		SdioRxFIFOSize;
-
-	u32 		sdio_tx_max_len[SDIO_MAX_TX_QUEUE];/*  H, N, L, used for sdio tx aggregation max length per queue */
-
-	struct dm_priv dmpriv;
-	struct dm_odm_t		odmpriv;
-
-	/*  For bluetooth co-existence */
-	struct bt_coexist		bt_coexist;
-
-	/* Chip version information */
-	bool chip_normal;	/* true - normal chip, false - test chip */
-};
-
-#define GET_HAL_DATA(__padapter)	((struct hal_com_data *)((__padapter)->HalData))
-
-#endif /* __HAL_DATA_H__ */
diff --git a/drivers/staging/rtl8723bs/include/hal_intf.h b/drivers/staging/rtl8723bs/include/hal_intf.h
deleted file mode 100644
index a7ae8c006f0c..000000000000
--- a/drivers/staging/rtl8723bs/include/hal_intf.h
+++ /dev/null
@@ -1,250 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __HAL_INTF_H__
-#define __HAL_INTF_H__
-
-
-enum {
-	RTW_PCIE	= BIT(0),
-	RTW_USB		= BIT(1),
-	RTW_SDIO	= BIT(2),
-	RTW_GSPI	= BIT(3),
-};
-
-enum {
-	HW_VAR_MEDIA_STATUS,
-	HW_VAR_MEDIA_STATUS1,
-	HW_VAR_SET_OPMODE,
-	HW_VAR_MAC_ADDR,
-	HW_VAR_BSSID,
-	HW_VAR_INIT_RTS_RATE,
-	HW_VAR_BASIC_RATE,
-	HW_VAR_TXPAUSE,
-	HW_VAR_BCN_FUNC,
-	HW_VAR_CORRECT_TSF,
-	HW_VAR_CHECK_BSSID,
-	HW_VAR_MLME_DISCONNECT,
-	HW_VAR_MLME_SITESURVEY,
-	HW_VAR_MLME_JOIN,
-	HW_VAR_ON_RCR_AM,
-	HW_VAR_OFF_RCR_AM,
-	HW_VAR_BEACON_INTERVAL,
-	HW_VAR_SLOT_TIME,
-	HW_VAR_RESP_SIFS,
-	HW_VAR_ACK_PREAMBLE,
-	HW_VAR_SEC_CFG,
-	HW_VAR_SEC_DK_CFG,
-	HW_VAR_BCN_VALID,
-	HW_VAR_RF_TYPE,
-	HW_VAR_DM_FLAG,
-	HW_VAR_DM_FUNC_OP,
-	HW_VAR_DM_FUNC_SET,
-	HW_VAR_DM_FUNC_CLR,
-	HW_VAR_CAM_EMPTY_ENTRY,
-	HW_VAR_CAM_INVALID_ALL,
-	HW_VAR_CAM_WRITE,
-	HW_VAR_CAM_READ,
-	HW_VAR_AC_PARAM_VO,
-	HW_VAR_AC_PARAM_VI,
-	HW_VAR_AC_PARAM_BE,
-	HW_VAR_AC_PARAM_BK,
-	HW_VAR_ACM_CTRL,
-	HW_VAR_AMPDU_MIN_SPACE,
-	HW_VAR_AMPDU_FACTOR,
-	HW_VAR_RXDMA_AGG_PG_TH,
-	HW_VAR_SET_RPWM,
-	HW_VAR_CPWM,
-	HW_VAR_H2C_FW_PWRMODE,
-	HW_VAR_H2C_PS_TUNE_PARAM,
-	HW_VAR_H2C_FW_JOINBSSRPT,
-	HW_VAR_FWLPS_RF_ON,
-	HW_VAR_H2C_FW_P2P_PS_OFFLOAD,
-	HW_VAR_TDLS_WRCR,
-	HW_VAR_TDLS_INIT_CH_SEN,
-	HW_VAR_TDLS_RS_RCR,
-	HW_VAR_TDLS_DONE_CH_SEN,
-	HW_VAR_INITIAL_GAIN,
-	HW_VAR_TRIGGER_GPIO_0,
-	HW_VAR_BT_SET_COEXIST,
-	HW_VAR_BT_ISSUE_DELBA,
-	HW_VAR_CURRENT_ANTENNA,
-	HW_VAR_ANTENNA_DIVERSITY_LINK,
-	HW_VAR_ANTENNA_DIVERSITY_SELECT,
-	HW_VAR_SWITCH_EPHY_WoWLAN,
-	HW_VAR_EFUSE_USAGE,
-	HW_VAR_EFUSE_BYTES,
-	HW_VAR_EFUSE_BT_USAGE,
-	HW_VAR_EFUSE_BT_BYTES,
-	HW_VAR_FIFO_CLEARN_UP,
-	HW_VAR_CHECK_TXBUF,
-	HW_VAR_PCIE_STOP_TX_DMA,
-	HW_VAR_APFM_ON_MAC, /* Auto FSM to Turn On, include clock, isolation, power control for MAC only */
-	/*  The valid upper nav range for the HW updating, if the true value is larger than the upper range, the HW won't update it. */
-	/*  Unit in microsecond. 0 means disable this function. */
-	HW_VAR_SYS_CLKR,
-	HW_VAR_NAV_UPPER,
-	HW_VAR_C2H_HANDLE,
-	HW_VAR_RPT_TIMER_SETTING,
-	HW_VAR_TX_RPT_MAX_MACID,
-	HW_VAR_H2C_MEDIA_STATUS_RPT,
-	HW_VAR_CHK_HI_QUEUE_EMPTY,
-	HW_VAR_DL_BCN_SEL,
-	HW_VAR_AMPDU_MAX_TIME,
-	HW_VAR_WIRELESS_MODE,
-	HW_VAR_USB_MODE,
-	HW_VAR_PORT_SWITCH,
-	HW_VAR_DM_IN_LPS,
-	HW_VAR_SET_REQ_FW_PS,
-	HW_VAR_FW_PS_STATE,
-	HW_VAR_SOUNDING_ENTER,
-	HW_VAR_SOUNDING_LEAVE,
-	HW_VAR_SOUNDING_RATE,
-	HW_VAR_SOUNDING_STATUS,
-	HW_VAR_SOUNDING_FW_NDPA,
-	HW_VAR_SOUNDING_CLK,
-	HW_VAR_DL_RSVD_PAGE,
-	HW_VAR_MACID_SLEEP,
-	HW_VAR_MACID_WAKEUP,
-};
-
-enum hal_def_variable {
-	HAL_DEF_UNDERCORATEDSMOOTHEDPWDB,
-	HAL_DEF_IS_SUPPORT_ANT_DIV,
-	HAL_DEF_CURRENT_ANTENNA,
-	HAL_DEF_DRVINFO_SZ,
-	HAL_DEF_MAX_RECVBUF_SZ,
-	HAL_DEF_RX_PACKET_OFFSET,
-	HAL_DEF_DBG_DUMP_RXPKT,/* for dbg */
-	HAL_DEF_DBG_DM_FUNC,/* for dbg */
-	HAL_DEF_RA_DECISION_RATE,
-	HAL_DEF_RA_SGI,
-	HAL_DEF_PT_PWR_STATUS,
-	HAL_DEF_TX_LDPC,				/*  LDPC support */
-	HAL_DEF_RX_LDPC,				/*  LDPC support */
-	HAL_DEF_TX_STBC,				/*  TX STBC support */
-	HAL_DEF_RX_STBC,				/*  RX STBC support */
-	HAL_DEF_EXPLICIT_BEAMFORMER,/*  Explicit  Compressed Steering Capable */
-	HAL_DEF_EXPLICIT_BEAMFORMEE,/*  Explicit Compressed Beamforming Feedback Capable */
-	HW_VAR_MAX_RX_AMPDU_FACTOR,
-	HW_DEF_RA_INFO_DUMP,
-	HAL_DEF_DBG_DUMP_TXPKT,
-	HW_DEF_FA_CNT_DUMP,
-	HW_DEF_ODM_DBG_FLAG,
-	HW_DEF_ODM_DBG_LEVEL,
-	HAL_DEF_TX_PAGE_SIZE,
-	HAL_DEF_TX_PAGE_BOUNDARY,
-	HAL_DEF_TX_PAGE_BOUNDARY_WOWLAN,
-	HAL_DEF_ANT_DETECT,/* to do for 8723a */
-	HAL_DEF_PCI_SUUPORT_L1_BACKDOOR, /*  Determine if the L1 Backdoor setting is turned on. */
-	HAL_DEF_PCI_AMD_L1_SUPPORT,
-	HAL_DEF_PCI_ASPM_OSC, /*  Support for ASPM OSC, added by Roger, 2013.03.27. */
-	HAL_DEF_MACID_SLEEP, /*  Support for MACID sleep */
-};
-
-enum hal_odm_variable {
-	HAL_ODM_STA_INFO,
-	HAL_ODM_P2P_STATE,
-	HAL_ODM_WIFI_DISPLAY_STATE,
-	HAL_ODM_NOISE_MONITOR,
-};
-
-typedef s32 (*c2h_id_filter)(u8 *c2h_evt);
-
-#define RF_CHANGE_BY_INIT	0
-#define RF_CHANGE_BY_IPS	BIT(28)
-#define RF_CHANGE_BY_PS		BIT(29)
-#define RF_CHANGE_BY_HW		BIT(30)
-#define RF_CHANGE_BY_SW		BIT(31)
-
-#define GET_EEPROM_EFUSE_PRIV(adapter) (&adapter->eeprompriv)
-#define is_boot_from_eeprom(adapter) (adapter->eeprompriv.EepromOrEfuse)
-
-#define Rx_Pairwisekey			0x01
-#define Rx_GTK					0x02
-#define Rx_DisAssoc				0x04
-#define Rx_DeAuth				0x08
-#define Rx_ARPReq				0x09
-#define FWDecisionDisconnect	0x10
-#define Rx_MagicPkt				0x21
-#define Rx_UnicastPkt			0x22
-#define Rx_PatternPkt			0x23
-#define	RX_PNOWakeUp			0x55
-#define	AP_WakeUp			0x66
-
-uint rtw_hal_init(struct adapter *padapter);
-uint rtw_hal_deinit(struct adapter *padapter);
-void rtw_hal_stop(struct adapter *padapter);
-void rtw_hal_set_hwreg(struct adapter *padapter, u8 variable, u8 *val);
-void rtw_hal_get_hwreg(struct adapter *padapter, u8 variable, u8 *val);
-
-void rtw_hal_set_hwreg_with_buf(struct adapter *padapter, u8 variable, u8 *pbuf, int len);
-
-u8 rtw_hal_get_def_var(struct adapter *padapter, enum hal_def_variable eVariable, void *pValue);
-
-void rtw_hal_set_odm_var(struct adapter *padapter, enum hal_odm_variable eVariable, void *pValue1, bool bSet);
-
-u8 rtw_hal_check_ips_status(struct adapter *padapter);
-
-int rtw_hal_xmitframe_enqueue(struct adapter *padapter, struct xmit_frame *pxmitframe);
-s32	rtw_hal_xmit(struct adapter *padapter, struct xmit_frame *pxmitframe);
-s32	rtw_hal_mgnt_xmit(struct adapter *padapter, struct xmit_frame *pmgntframe);
-
-s32	rtw_hal_init_xmit_priv(struct adapter *padapter);
-void rtw_hal_free_xmit_priv(struct adapter *padapter);
-
-s32	rtw_hal_init_recv_priv(struct adapter *padapter);
-void rtw_hal_free_recv_priv(struct adapter *padapter);
-
-void rtw_hal_update_ra_mask(struct sta_info *psta, u8 rssi_level);
-void rtw_hal_add_ra_tid(struct adapter *padapter, u32 bitmap, u8 *arg, u8 rssi_level);
-
-void beacon_timing_control(struct adapter *padapter);
-
-u32 rtw_hal_read_bbreg(struct adapter *padapter, u32 RegAddr, u32 BitMask);
-void rtw_hal_write_bbreg(struct adapter *padapter, u32 RegAddr, u32 BitMask, u32 Data);
-u32 rtw_hal_read_rfreg(struct adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask);
-void rtw_hal_write_rfreg(struct adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask, u32 Data);
-
-#define PHY_QueryBBReg(Adapter, RegAddr, BitMask) rtw_hal_read_bbreg((Adapter), (RegAddr), (BitMask))
-#define PHY_SetBBReg(Adapter, RegAddr, BitMask, Data) rtw_hal_write_bbreg((Adapter), (RegAddr), (BitMask), (Data))
-#define PHY_QueryRFReg(Adapter, eRFPath, RegAddr, BitMask) rtw_hal_read_rfreg((Adapter), (eRFPath), (RegAddr), (BitMask))
-#define PHY_SetRFReg(Adapter, eRFPath, RegAddr, BitMask, Data) rtw_hal_write_rfreg((Adapter), (eRFPath), (RegAddr), (BitMask), (Data))
-
-#define PHY_SetMacReg	PHY_SetBBReg
-#define PHY_QueryMacReg PHY_QueryBBReg
-
-void rtw_hal_set_chan(struct adapter *padapter, u8 channel);
-void rtw_hal_set_chnl_bw(struct adapter *padapter, u8 channel, enum channel_width Bandwidth, u8 Offset40, u8 Offset80);
-void rtw_hal_dm_watchdog(struct adapter *padapter);
-void rtw_hal_dm_watchdog_in_lps(struct adapter *padapter);
-
-s32 rtw_hal_xmit_thread_handler(struct adapter *padapter);
-
-void rtw_hal_notch_filter(struct adapter *adapter, bool enable);
-
-bool rtw_hal_c2h_valid(struct adapter *adapter, u8 *buf);
-s32 rtw_hal_c2h_handler(struct adapter *adapter, u8 *c2h_evt);
-c2h_id_filter rtw_hal_c2h_id_filter_ccx(struct adapter *adapter);
-
-s32 rtw_hal_macid_sleep(struct adapter *padapter, u32 macid);
-s32 rtw_hal_macid_wakeup(struct adapter *padapter, u32 macid);
-
-s32 rtw_hal_fill_h2c_cmd(struct adapter *adapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
-
-void SetHwReg8723BS(struct adapter *padapter, u8 variable, u8 *val);
-void GetHwReg8723BS(struct adapter *padapter, u8 variable, u8 *val);
-void SetHwRegWithBuf8723B(struct adapter *padapter, u8 variable, u8 *pbuf, int len);
-u8 GetHalDefVar8723BSDIO(struct adapter *Adapter, enum hal_def_variable eVariable, void *pValue);
-void UpdateHalRAMask8723B(struct adapter *padapter, u32 mac_id, u8 rssi_level);
-void rtl8723b_SetBeaconRelatedRegisters(struct adapter *padapter);
-void Hal_EfusePowerSwitch(struct adapter *padapter, u8 PwrState);
-void Hal_ReadEFuse(struct adapter *padapter, u8 efuseType, u16 _offset,
-		   u16 _size_byte, u8 *pbuf);
-void Hal_GetEfuseDefinition(struct adapter *padapter, u8 efuseType, u8 type,
-			    void *pOut);
-void hal_notch_filter_8723b(struct adapter *adapter, bool enable);
-#endif /* __HAL_INTF_H__ */
diff --git a/drivers/staging/rtl8723bs/include/hal_pg.h b/drivers/staging/rtl8723bs/include/hal_pg.h
deleted file mode 100644
index 32e66fe451b0..000000000000
--- a/drivers/staging/rtl8723bs/include/hal_pg.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef __HAL_PG_H__
-#define __HAL_PG_H__
-
-#define	MAX_RF_PATH				4
-/* MAX_TX_COUNT must always be set to 4, otherwise the read efuse table
- * sequence will be wrong.
- */
-#define MAX_TX_COUNT				4
-
-/*  TX power by rate table. */
-/*  RF: = AB = 0/1 */
-/*  CCK = 0 OFDM = 1 HT-MCS 0-7 = 2 */
-#define TX_PWR_BY_RATE_NUM_RATE			84
-#define MAX_RF_PATH_NUM				2
-#define	MAX_CHNL_GROUP_24G			6
-#define EEPROM_DEFAULT_BOARD_OPTION		0x00
-
-/* EEPROM/Efuse PG Offset for 8723BE/8723BU/8723BS */
-/*  0x10 ~ 0x63 = TX power area. */
-#define	EEPROM_TX_PWR_INX_8723B			0x10
-/* New EFUSE default value */
-#define EEPROM_DEFAULT_24G_INDEX		0x2D
-#define EEPROM_DEFAULT_24G_HT20_DIFF		0X02
-#define EEPROM_DEFAULT_24G_OFDM_DIFF		0X04
-#define	EEPROM_Default_ThermalMeter_8723B	0x18
-#define EEPROM_Default_CrystalCap_8723B		0x20
-
-#define	EEPROM_ChannelPlan_8723B		0xB8
-#define	EEPROM_XTAL_8723B			0xB9
-#define	EEPROM_THERMAL_METER_8723B		0xBA
-
-#define	EEPROM_RF_BOARD_OPTION_8723B		0xC1
-#define	EEPROM_RF_BT_SETTING_8723B		0xC3
-#define EEPROM_DEFAULT_DIFF			0XFE
-
-/* RTL8723BS */
-#define	EEPROM_MAC_ADDR_8723BS			0x11A
-#define EEPROM_Voltage_ADDR_8723B		0x8
-#define RTL_EEPROM_ID				0x8129
-
-struct TxPowerInfo24G {
-	u8 IndexCCK_Base[MAX_RF_PATH][MAX_CHNL_GROUP_24G];
-	u8 IndexBW40_Base[MAX_RF_PATH][MAX_CHNL_GROUP_24G];
-	/* If only one tx, only BW20 and OFDM are used. */
-	s8 CCK_Diff[MAX_RF_PATH][MAX_TX_COUNT];
-	s8 OFDM_Diff[MAX_RF_PATH][MAX_TX_COUNT];
-	s8 BW20_Diff[MAX_RF_PATH][MAX_TX_COUNT];
-	s8 BW40_Diff[MAX_RF_PATH][MAX_TX_COUNT];
-};
-
-enum {
-	Ant_x2	= 0,
-	Ant_x1	= 1
-};
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/hal_phy.h b/drivers/staging/rtl8723bs/include/hal_phy.h
deleted file mode 100644
index abc0f27fdaa4..000000000000
--- a/drivers/staging/rtl8723bs/include/hal_phy.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __HAL_PHY_H__
-#define __HAL_PHY_H__
-/*  */
-/*  Antenna detection method, i.e., using single tone detection or RSSI reported from each antenna detected. */
-/*  Added by Roger, 2013.05.22. */
-/*  */
-#define ANT_DETECT_BY_SINGLE_TONE	BIT(0)
-#define ANT_DETECT_BY_RSSI				BIT(1)
-#define IS_ANT_DETECT_SUPPORT_SINGLE_TONE(__Adapter)		((GET_HAL_DATA(__Adapter)->AntDetection) & ANT_DETECT_BY_SINGLE_TONE)
-#define IS_ANT_DETECT_SUPPORT_RSSI(__Adapter)		((GET_HAL_DATA(__Adapter)->AntDetection) & ANT_DETECT_BY_RSSI)
-
-
-/*--------------------------Define Parameters-------------------------------*/
-enum {
-	RF_TYPE_MIN = 0,	/*  0 */
-	RF_8225 = 1,		/*  1 11b/g RF for verification only */
-	RF_8256 = 2,		/*  2 11b/g/n */
-	RF_8258 = 3,		/*  3 11a/b/g/n RF */
-	RF_6052 = 4,		/*  4 11b/g/n RF */
-	RF_PSEUDO_11N = 5,	/*  5, It is a temporality RF. */
-	RF_TYPE_MAX
-};
-
-enum rf_path {
-	RF_PATH_A = 0,
-	RF_PATH_B,
-	RF_PATH_MAX
-};
-
-#define	TX_1S			0
-#define	TX_2S			1
-#define	TX_3S			2
-#define	TX_4S			3
-
-#define	RF_PATH_MAX_92C_88E		2
-#define	RF_PATH_MAX_90_8812		4	/* Max RF number 90 support */
-
-enum wireless_mode {
-	WIRELESS_MODE_UNKNOWN = 0x00,
-	WIRELESS_MODE_B = 0x02,
-	WIRELESS_MODE_G = 0x04,
-	WIRELESS_MODE_AUTO = 0x08,
-	WIRELESS_MODE_N_24G = 0x10,
-	WIRELESS_MODE_AC_24G  = 0x80,
-	WIRELESS_MODE_AC_ONLY  = 0x100,
-};
-
-enum SwChnlCmdID {
-	CmdID_End,
-	CmdID_SetTxPowerLevel,
-	CmdID_BBRegWrite10,
-	CmdID_WritePortUlong,
-	CmdID_WritePortUshort,
-	CmdID_WritePortUchar,
-	CmdID_RF_WriteReg,
-};
-
-struct SwChnlCmd {
-	enum SwChnlCmdID	CmdID;
-	u32 			Para1;
-	u32 			Para2;
-	u32 			msDelay;
-};
-
-/*--------------------------Exported Function prototype---------------------*/
-
-#endif /* __HAL_COMMON_H__ */
diff --git a/drivers/staging/rtl8723bs/include/hal_phy_cfg.h b/drivers/staging/rtl8723bs/include/hal_phy_cfg.h
deleted file mode 100644
index 07bf0a8d019a..000000000000
--- a/drivers/staging/rtl8723bs/include/hal_phy_cfg.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __INC_HAL8723BPHYCFG_H__
-#define __INC_HAL8723BPHYCFG_H__
-
-/*--------------------------Define Parameters-------------------------------*/
-#define LOOP_LIMIT		5
-#define MAX_STALL_TIME		50	/* us */
-#define AntennaDiversityValue	0x80	/* Adapter->bSoftwareAntennaDiversity ? 0x00:0x80) */
-#define MAX_TXPWR_IDX_NMODE_92S	63
-#define Reset_Cnt_Limit		3
-
-#define MAX_AGGR_NUM	0x07
-
-
-/*--------------------------Define Parameters End-------------------------------*/
-
-
-/*------------------------------Define structure----------------------------*/
-
-/*------------------------------Define structure End----------------------------*/
-
-/*--------------------------Exported Function prototype---------------------*/
-u32 PHY_QueryBBReg_8723B(struct adapter *Adapter, u32 RegAddr, u32 BitMask);
-
-void PHY_SetBBReg_8723B(struct adapter *Adapter, u32 RegAddr,
-			u32 BitMask, u32 Data);
-
-u32 PHY_QueryRFReg_8723B(struct adapter *Adapter, u8 eRFPath,
-			 u32 RegAddr, u32 BitMask);
-
-void PHY_SetRFReg_8723B(struct adapter *Adapter, u8 eRFPath,
-			u32 RegAddr, u32 BitMask, u32 Data);
-
-/* MAC/BB/RF HAL config */
-int PHY_BBConfig8723B(struct adapter *Adapter);
-
-int PHY_RFConfig8723B(struct adapter *Adapter);
-
-s32 PHY_MACConfig8723B(struct adapter *padapter);
-
-void PHY_SetTxPowerIndex(struct adapter *Adapter, u32 PowerIndex,
-			 u8 RFPath, u8 Rate);
-
-u8 PHY_GetTxPowerIndex(struct adapter *padapter, u8 RFPath, u8 Rate,
-			enum channel_width BandWidth, u8 Channel);
-
-void PHY_SetTxPowerLevel8723B(struct adapter *Adapter, u8 channel);
-
-/*  Call after initialization */
-void PHY_SwChnl8723B(struct adapter *Adapter, u8 channel);
-
-void PHY_SetSwChnlBWMode8723B(struct adapter *Adapter, u8 channel,
-				enum channel_width Bandwidth,
-				u8 Offset40, u8 Offset80);
-
-/*--------------------------Exported Function prototype End---------------------*/
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/hal_phy_reg.h b/drivers/staging/rtl8723bs/include/hal_phy_reg.h
deleted file mode 100644
index 682cdd6655ab..000000000000
--- a/drivers/staging/rtl8723bs/include/hal_phy_reg.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __HAL_PHY_REG_H__
-#define __HAL_PHY_REG_H__
-
-/* for PutRFRegsetting & GetRFRegSetting BitMask */
-/* if (RTL92SE_FPGA_VERIFY == 1) */
-/* define		bRFRegOffsetMask	0xfff */
-/* else */
-#define			bRFRegOffsetMask	0xfffff
-/* endif */
-
-#endif /* __HAL_PHY_REG_H__ */
diff --git a/drivers/staging/rtl8723bs/include/hal_pwr_seq.h b/drivers/staging/rtl8723bs/include/hal_pwr_seq.h
deleted file mode 100644
index 9639eef8a51d..000000000000
--- a/drivers/staging/rtl8723bs/include/hal_pwr_seq.h
+++ /dev/null
@@ -1,226 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef REALTEK_POWER_SEQUENCE_8723B
-#define REALTEK_POWER_SEQUENCE_8723B
-
-#include "HalPwrSeqCmd.h"
-
-/*
-	Check document WM-20130815-JackieLau-RTL8723B_Power_Architecture v08.vsd
-	There are 6 HW Power States:
-	0: POFF--Power Off
-	1: PDN--Power Down
-	2: CARDEMU--Card Emulation
-	3: ACT--Active Mode
-	4: LPS--Low Power State
-	5: SUS--Suspend
-
-	The transition from different states are defined below
-	TRANS_CARDEMU_TO_ACT
-	TRANS_ACT_TO_CARDEMU
-	TRANS_CARDEMU_TO_SUS
-	TRANS_SUS_TO_CARDEMU
-	TRANS_CARDEMU_TO_PDN
-	TRANS_ACT_TO_LPS
-	TRANS_LPS_TO_ACT
-
-	TRANS_END
-*/
-#define	RTL8723B_TRANS_CARDEMU_TO_ACT_STEPS	26
-#define	RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS	15
-#define	RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS	15
-#define	RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS	15
-#define	RTL8723B_TRANS_ACT_TO_LPS_STEPS		15
-#define	RTL8723B_TRANS_LPS_TO_ACT_STEPS		15
-#define	RTL8723B_TRANS_ACT_TO_SWLPS_STEPS		22
-#define	RTL8723B_TRANS_SWLPS_TO_ACT_STEPS		15
-#define	RTL8723B_TRANS_END_STEPS		1
-
-
-#define RTL8723B_TRANS_CARDEMU_TO_ACT														\
-	/* format */																\
-	/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },  comments here*/								\
-	{0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)}, /*0x20[0] = 1b'1 enable LDOA12 MACRO block for all interface*/   \
-	{0x0067, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), 0}, /*0x67[0] = 0 to disable BT_GPS_SEL pins*/	\
-	{0x0001, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_DELAY, 1, PWRSEQ_DELAY_MS},/*Delay 1ms*/   \
-	{0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(5), 0}, /*0x00[5] = 1b'0 release analog Ips to digital , 1:isolation*/   \
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, (BIT(4)|BIT(3)|BIT(2)), 0},/* disable SW LPS 0x04[10]= 0 and WLSUS_EN 0x04[11]= 0*/	\
-	{0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)},/* Disable USB suspend */	\
-	{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(1), BIT(1)},/* wait till 0x04[17] = 1    power ready*/	\
-	{0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), (0)},/* Enable USB suspend */	\
-	{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)},/* release WLON reset  0x04[16]= 1*/	\
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(7), 0},/* disable HWPDN 0x04[15]= 0*/	\
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, (BIT(4)|BIT(3)), 0},/* disable WL suspend*/	\
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)},/* polling until return 0*/	\
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(0), 0},/**/	\
-	{0x0010, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(6), BIT(6)},/* Enable WL control XTAL setting*/	\
-	{0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)},/*Enable falling edge triggering interrupt*/\
-	{0x0063, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)},/*Enable GPIO9 interrupt mode*/\
-	{0x0062, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), 0},/*Enable GPIO9 input mode*/\
-	{0x0058, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)},/*Enable HSISR GPIO[C:0] interrupt*/\
-	{0x005A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)},/*Enable HSISR GPIO9 interrupt*/\
-	{0x0068, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3), BIT(3)},/*For GPIO9 internal pull high setting by test chip*/\
-	{0x0069, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(6), BIT(6)},/*For GPIO9 internal pull high setting*/\
-
-
-#define RTL8723B_TRANS_ACT_TO_CARDEMU													\
-	/* format */																\
-	/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },  comments here*/								\
-	{0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0},/*0x1F[7:0] = 0 turn off RF*/	\
-	{0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), 0},/*Enable rising edge triggering interrupt*/ \
-	{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)},/* release WLON reset  0x04[16]= 1*/	\
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)}, /*0x04[9] = 1 turn off MAC by HW state machine*/	\
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(1), 0}, /*wait till 0x04[9] = 0 polling until return 0 to disable*/	\
-	{0x0010, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(6), 0},/* Enable BT control XTAL setting*/\
-	{0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(5), BIT(5)}, /*0x00[5] = 1b'1 analog Ips to digital , 1:isolation*/   \
-	{0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0}, /*0x20[0] = 1b'0 disable LDOA12 MACRO block*/\
-
-
-#define RTL8723B_TRANS_CARDEMU_TO_SUS													\
-	/* format */																\
-	/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },  comments here*/								\
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4)|BIT(3), (BIT(4)|BIT(3))}, /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/	\
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3)|BIT(4), BIT(3)}, /*0x04[12:11] = 2b'01 enable WL suspend*/	\
-	{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), BIT(4)}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/   \
-	{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07[7:0] = 0x20 SDIO SOP option to disable BG/MB/ACK/SWR*/   \
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3)|BIT(4), BIT(3)|BIT(4)}, /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/	\
-	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT(0), BIT(0)}, /*Set SDIO suspend local register*/	\
-	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT(1), 0}, /*wait power state to suspend*/
-
-#define RTL8723B_TRANS_SUS_TO_CARDEMU													\
-	/* format */																\
-	/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },  comments here*/								\
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3) | BIT(7), 0}, /*clear suspend enable and power down enable*/	\
-	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT(0), 0}, /*Set SDIO suspend local register*/	\
-	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT(1), BIT(1)}, /*wait power state to suspend*/\
-	{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), 0}, /*0x23[4] = 1b'0 12H LDO enter normal mode*/   \
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3)|BIT(4), 0}, /*0x04[12:11] = 2b'01enable WL suspend*/
-
-#define RTL8723B_TRANS_CARDEMU_TO_CARDDIS													\
-	/* format */																\
-	/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, omments here*/								\
-	{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07 = 0x20 , SOP option to disable BG/MB*/	\
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3)|BIT(4), BIT(3)}, /*0x04[12:11] = 2b'01 enable WL suspend*/	\
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(2), BIT(2)}, /*0x04[10] = 1, enable SW LPS*/	\
-	{0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 1}, /*0x48[16] = 1 to enable GPIO9 as EXT WAKEUP*/   \
-	{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), BIT(4)}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/   \
-	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT(0), BIT(0)}, /*Set SDIO suspend local register*/	\
-	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT(1), 0}, /*wait power state to suspend*/
-
-#define RTL8723B_TRANS_CARDDIS_TO_CARDEMU													\
-	/* format */																\
-	/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, comments here*/								\
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3) | BIT(7), 0}, /*clear suspend enable and power down enable*/	\
-	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT(0), 0}, /*Set SDIO suspend local register*/	\
-	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT(1), BIT(1)}, /*wait power state to suspend*/\
-	    {0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0}, /*0x48[16] = 0 to disable GPIO9 as EXT WAKEUP*/   \
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3)|BIT(4), 0}, /*0x04[12:11] = 2b'01enable WL suspend*/\
-	{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), 0}, /*0x23[4] = 1b'0 12H LDO enter normal mode*/   \
-	{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0},/*PCIe DMA start*/
-
-
-#define RTL8723B_TRANS_CARDEMU_TO_PDN												\
-	/* format */																\
-	/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, comments here*/								\
-	{0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), BIT(4)}, /*0x23[4] = 1b'1 12H LDO enter sleep mode*/   \
-	{0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK|PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20}, /*0x07[7:0] = 0x20 SOP option to disable BG/MB/ACK/SWR*/   \
-	{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0},/* 0x04[16] = 0*/\
-	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(7), BIT(7)},/* 0x04[15] = 1*/
-
-#define RTL8723B_TRANS_ACT_TO_LPS														\
-	/* format */																\
-	/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, comments here*/								\
-	{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF},/*PCIe DMA stop*/	\
-	{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF},/*Tx Pause*/	\
-	{0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/	\
-	{0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/	\
-	{0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/	\
-	{0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0},/*Should be zero if no packet is transmitting*/	\
-	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0},/*CCK and OFDM are disabled, and clock are gated*/	\
-	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/	\
-	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), 0},/*Whole BB is reset*/	\
-	{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x03},/*Reset MAC TRX*/	\
-	{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), 0},/*check if removed later*/	\
-	{0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00},/*When driver enter Sus/ Disable, enable LOP for BT*/	\
-	{0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(5), BIT(5)},/*Respond TxOK to scheduler*/	\
-
-
-#define RTL8723B_TRANS_LPS_TO_ACT															\
-	/* format */																\
-	/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, comments here*/								\
-	{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO, PWR_CMD_WRITE, 0xFF, 0x84}, /*SDIO RPWM*/\
-	{0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84}, /*USB RPWM*/\
-	{0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84}, /*PCIe RPWM*/\
-	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, /*Delay*/\
-	{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), 0}, /*.	0x08[4] = 0		 switch TSF to 40M*/\
-	{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(7), 0}, /*Polling 0x109[7]= 0  TSF in 40M*/\
-	{0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(6)|BIT(7), 0}, /*.	0x29[7:6] = 2b'00	 enable BB clock*/\
-	{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)}, /*.	0x101[1] = 1*/\
-	{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF}, /*.	0x100[7:0] = 0xFF	 enable WMAC TRX*/\
-	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1)|BIT(0), BIT(1)|BIT(0)}, /*.	0x02[1:0] = 2b'11	 enable BB macro*/\
-	{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0}, /*.	0x522 = 0*/
-
-
- #define RTL8723B_TRANS_ACT_TO_SWLPS														\
-	/* format */																\
-	/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, comments here*/								\
-	{0x0194, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)},/*enable 32 K source*/	\
-	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0},/*CCK and OFDM are disabled, and clock are gated*/	\
-	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 1},/*CCK and OFDM are enable*/	\
-	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0},/*CCK and OFDM are disabled, and clock are gated*/	\
-	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 1},/*CCK and OFDM are enable*/	\
-	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0},/*CCK and OFDM are disabled, and clock are gated*/	\
-	{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x3F},/*Reset MAC TRX*/	\
-	{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), 0},/*disable security engine*/	\
-	{0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x40},/*When driver enter Sus/ Disable, enable LOP for BT*/	\
-	{0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(5), BIT(5)},/*reset dual TSF*/	\
-	{0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(2), 0},/*Reset CPU*/	\
-	{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0},/*Reset MCUFWDL register*/	\
-	{0x001D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0},/*Reset CPU IO Wrapper*/	\
-	{0x001D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 1},/*Reset CPU IO Wrapper*/	\
-	{0x0287, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0},/*polling RXFF packet number = 0 */	\
-	{0x0286, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(1), BIT(1)},/*polling RXDMA idle */	\
-	{0x013D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)},/*Clear FW RPWM interrupt */\
-	{0x0139, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)},/*Set FW RPWM interrupt source*/\
-	{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), BIT(4)},/*switch TSF to 32K*/\
-	{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(7), BIT(7)},/*polling TSF stable*/\
-	{0x0090, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)},/*Set FW LPS*/	\
-	{0x0090, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(0), 0},/*polling FW LPS ready */
-
-
-#define RTL8723B_TRANS_SWLPS_TO_ACT															\
-	/* format */																\
-	/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, comments here*/								\
-	{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), 0},/*switch TSF to 32K*/\
-	{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(7), 0},/*polling TSF stable*/\
-	{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)}, /*.	0x101[1] = 1, enable security engine*/\
-	{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF}, /*.	0x100[7:0] = 0xFF	 enable WMAC TRX*/\
-	{0x06B7, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x09}, /*.	reset MAC rx state machine*/\
-	{0x06B4, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x86}, /*.	reset MAC rx state machine*/\
-	{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)},/* set CPU RAM code ready*/	\
-	{0x001D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0},/*Reset CPU IO Wrapper*/	\
-	{0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(2), 0},/* Enable CPU*/	\
-	{0x001D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)},/*enable CPU IO Wrapper*/	\
-	{0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(2), BIT(2)},/* Enable CPU*/	\
-	{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(7), BIT(7)},/*polling FW init ready */	\
-	{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(6), BIT(6)},/*polling FW init ready */	\
-	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)}, /*.	0x02[1:0] = 2b'11	 enable BB macro*/\
-	{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0}, /*.	0x522 = 0*/
-
-#define RTL8723B_TRANS_END															\
-	/* format */																\
-	/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, comments here*/								\
-	{0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, 0, PWR_CMD_END, 0, 0},
-
-
-extern struct wlan_pwr_cfg rtl8723B_power_on_flow[RTL8723B_TRANS_CARDEMU_TO_ACT_STEPS+RTL8723B_TRANS_END_STEPS];
-extern struct wlan_pwr_cfg rtl8723B_radio_off_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723B_TRANS_END_STEPS];
-extern struct wlan_pwr_cfg rtl8723B_card_disable_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS+RTL8723B_TRANS_END_STEPS];
-extern struct wlan_pwr_cfg rtl8723B_card_enable_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS+RTL8723B_TRANS_END_STEPS];
-extern struct wlan_pwr_cfg rtl8723B_suspend_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS+RTL8723B_TRANS_END_STEPS];
-extern struct wlan_pwr_cfg rtl8723B_resume_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS+RTL8723B_TRANS_END_STEPS];
-extern struct wlan_pwr_cfg rtl8723B_hwpdn_flow[RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS+RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS+RTL8723B_TRANS_END_STEPS];
-extern struct wlan_pwr_cfg rtl8723B_enter_lps_flow[RTL8723B_TRANS_ACT_TO_LPS_STEPS+RTL8723B_TRANS_END_STEPS];
-extern struct wlan_pwr_cfg rtl8723B_leave_lps_flow[RTL8723B_TRANS_LPS_TO_ACT_STEPS+RTL8723B_TRANS_END_STEPS];
-extern struct wlan_pwr_cfg rtl8723B_enter_swlps_flow[RTL8723B_TRANS_ACT_TO_SWLPS_STEPS+RTL8723B_TRANS_END_STEPS];
-extern struct wlan_pwr_cfg rtl8723B_leave_swlps_flow[RTL8723B_TRANS_SWLPS_TO_ACT_STEPS+RTL8723B_TRANS_END_STEPS];
-#endif
diff --git a/drivers/staging/rtl8723bs/include/hal_sdio.h b/drivers/staging/rtl8723bs/include/hal_sdio.h
deleted file mode 100644
index 3fc8acb430e5..000000000000
--- a/drivers/staging/rtl8723bs/include/hal_sdio.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __HAL_SDIO_H_
-#define __HAL_SDIO_H_
-
-#define ffaddr2deviceId(pdvobj, addr)	(pdvobj->Queue2Pipe[addr])
-
-u8 rtw_hal_sdio_max_txoqt_free_space(struct adapter *padapter);
-u8 rtw_hal_sdio_query_tx_freepage(struct adapter *padapter, u8 PageIdx, u8 RequiredPageNum);
-void rtw_hal_sdio_update_tx_freepage(struct adapter *padapter, u8 PageIdx, u8 RequiredPageNum);
-void rtw_hal_set_sdio_tx_max_length(struct adapter *padapter, u8 numHQ, u8 numNQ, u8 numLQ, u8 numPubQ);
-u32 rtw_hal_get_sdio_tx_max_length(struct adapter *padapter, u8 queue_idx);
-
-#endif /* __RTW_LED_H_ */
diff --git a/drivers/staging/rtl8723bs/include/ieee80211.h b/drivers/staging/rtl8723bs/include/ieee80211.h
deleted file mode 100644
index 9f421e4875b7..000000000000
--- a/drivers/staging/rtl8723bs/include/ieee80211.h
+++ /dev/null
@@ -1,748 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __IEEE80211_H
-#define __IEEE80211_H
-
-#include <linux/ieee80211.h>
-
-#define MGMT_QUEUE_NUM 5
-
-#define ETH_TYPE_LEN		2
-#define PAYLOAD_TYPE_LEN	1
-
-#define RTL_IOCTL_HOSTAPD (SIOCIWFIRSTPRIV + 28)
-
-/* RTL871X_IOCTL_HOSTAPD ioctl() cmd: */
-enum {
-	RTL871X_HOSTAPD_FLUSH = 1,
-	RTL871X_HOSTAPD_ADD_STA = 2,
-	RTL871X_HOSTAPD_REMOVE_STA = 3,
-	RTL871X_HOSTAPD_GET_INFO_STA = 4,
-	/* REMOVED: PRISM2_HOSTAPD_RESET_TXEXC_STA = 5, */
-	RTL871X_HOSTAPD_GET_WPAIE_STA = 5,
-	RTL871X_SET_ENCRYPTION = 6,
-	RTL871X_GET_ENCRYPTION = 7,
-	RTL871X_HOSTAPD_SET_FLAGS_STA = 8,
-	RTL871X_HOSTAPD_GET_RID = 9,
-	RTL871X_HOSTAPD_SET_RID = 10,
-	RTL871X_HOSTAPD_SET_ASSOC_AP_ADDR = 11,
-	RTL871X_HOSTAPD_SET_GENERIC_ELEMENT = 12,
-	RTL871X_HOSTAPD_MLME = 13,
-	RTL871X_HOSTAPD_SCAN_REQ = 14,
-	RTL871X_HOSTAPD_STA_CLEAR_STATS = 15,
-	RTL871X_HOSTAPD_SET_BEACON = 16,
-	RTL871X_HOSTAPD_SET_WPS_BEACON = 17,
-	RTL871X_HOSTAPD_SET_WPS_PROBE_RESP = 18,
-	RTL871X_HOSTAPD_SET_WPS_ASSOC_RESP = 19,
-	RTL871X_HOSTAPD_SET_HIDDEN_SSID = 20,
-	RTL871X_HOSTAPD_SET_MACADDR_ACL = 21,
-	RTL871X_HOSTAPD_ACL_ADD_STA = 22,
-	RTL871X_HOSTAPD_ACL_REMOVE_STA = 23,
-};
-
-/* STA flags */
-#define WLAN_STA_AUTH BIT(0)
-#define WLAN_STA_ASSOC BIT(1)
-#define WLAN_STA_PS BIT(2)
-#define WLAN_STA_TIM BIT(3)
-#define WLAN_STA_PERM BIT(4)
-#define WLAN_STA_AUTHORIZED BIT(5)
-#define WLAN_STA_PENDING_POLL BIT(6) /* pending activity poll not ACKed */
-#define WLAN_STA_SHORT_PREAMBLE BIT(7)
-#define WLAN_STA_PREAUTH BIT(8)
-#define WLAN_STA_WME BIT(9)
-#define WLAN_STA_MFP BIT(10)
-#define WLAN_STA_HT BIT(11)
-#define WLAN_STA_WPS BIT(12)
-#define WLAN_STA_MAYBE_WPS BIT(13)
-#define WLAN_STA_NONERP BIT(31)
-
-#define IEEE_CMD_SET_WPA_PARAM			1
-#define IEEE_CMD_SET_WPA_IE				2
-#define IEEE_CMD_SET_ENCRYPTION			3
-#define IEEE_CMD_MLME						4
-
-#define IEEE_PARAM_WPA_ENABLED				1
-#define IEEE_PARAM_TKIP_COUNTERMEASURES		2
-#define IEEE_PARAM_DROP_UNENCRYPTED			3
-#define IEEE_PARAM_PRIVACY_INVOKED			4
-#define IEEE_PARAM_AUTH_ALGS					5
-#define IEEE_PARAM_IEEE_802_1X				6
-#define IEEE_PARAM_WPAX_SELECT				7
-
-#define IEEE_MLME_STA_DEAUTH				1
-#define IEEE_MLME_STA_DISASSOC			2
-
-#define IEEE_CRYPT_ERR_UNKNOWN_ALG			2
-#define IEEE_CRYPT_ERR_UNKNOWN_ADDR			3
-#define IEEE_CRYPT_ERR_CRYPT_INIT_FAILED		4
-#define IEEE_CRYPT_ERR_KEY_SET_FAILED			5
-#define IEEE_CRYPT_ERR_TX_KEY_SET_FAILED		6
-#define IEEE_CRYPT_ERR_CARD_CONF_FAILED		7
-
-
-#define	IEEE_CRYPT_ALG_NAME_LEN			16
-
-#define WPA_CIPHER_NONE		BIT(0)
-#define WPA_CIPHER_WEP40	BIT(1)
-#define WPA_CIPHER_WEP104 BIT(2)
-#define WPA_CIPHER_TKIP		BIT(3)
-#define WPA_CIPHER_CCMP		BIT(4)
-
-
-
-#define WPA_SELECTOR_LEN 4
-extern u8 RTW_WPA_OUI_TYPE[];
-extern u16 RTW_WPA_VERSION;
-extern u8 WPA_AUTH_KEY_MGMT_NONE[];
-extern u8 WPA_AUTH_KEY_MGMT_UNSPEC_802_1X[];
-extern u8 WPA_AUTH_KEY_MGMT_PSK_OVER_802_1X[];
-extern u8 WPA_CIPHER_SUITE_NONE[];
-extern u8 WPA_CIPHER_SUITE_WEP40[];
-extern u8 WPA_CIPHER_SUITE_TKIP[];
-extern u8 WPA_CIPHER_SUITE_WRAP[];
-extern u8 WPA_CIPHER_SUITE_CCMP[];
-extern u8 WPA_CIPHER_SUITE_WEP104[];
-
-
-#define RSN_HEADER_LEN 4
-#define RSN_SELECTOR_LEN 4
-
-extern u16 RSN_VERSION_BSD;
-extern u8 RSN_AUTH_KEY_MGMT_UNSPEC_802_1X[];
-extern u8 RSN_AUTH_KEY_MGMT_PSK_OVER_802_1X[];
-extern u8 RSN_CIPHER_SUITE_NONE[];
-extern u8 RSN_CIPHER_SUITE_WEP40[];
-extern u8 RSN_CIPHER_SUITE_TKIP[];
-extern u8 RSN_CIPHER_SUITE_WRAP[];
-extern u8 RSN_CIPHER_SUITE_CCMP[];
-extern u8 RSN_CIPHER_SUITE_WEP104[];
-
-
-enum {
-	RATEID_IDX_BGN_40M_2SS = 0,
-	RATEID_IDX_BGN_40M_1SS = 1,
-	RATEID_IDX_BGN_20M_2SS_BN = 2,
-	RATEID_IDX_BGN_20M_1SS_BN = 3,
-	RATEID_IDX_GN_N2SS = 4,
-	RATEID_IDX_GN_N1SS = 5,
-	RATEID_IDX_BG = 6,
-	RATEID_IDX_G = 7,
-	RATEID_IDX_B = 8,
-};
-
-enum network_type {
-	WIRELESS_INVALID = 0,
-	/* Sub-Element */
-	WIRELESS_11B = BIT(0), /*  tx: cck only , rx: cck only, hw: cck */
-	WIRELESS_11G = BIT(1), /*  tx: ofdm only, rx: ofdm & cck, hw: cck & ofdm */
-	WIRELESS_11_24N = BIT(3), /*  tx: MCS only, rx: MCS & cck, hw: MCS & cck */
-	WIRELESS_AUTO = BIT(5),
-
-	/* Combination */
-	/* Type for current wireless mode */
-	WIRELESS_11BG = (WIRELESS_11B|WIRELESS_11G), /*  tx: cck & ofdm, rx: cck & ofdm & MCS, hw: cck & ofdm */
-	WIRELESS_11G_24N = (WIRELESS_11G|WIRELESS_11_24N), /*  tx: ofdm & MCS, rx: ofdm & cck & MCS, hw: cck & ofdm */
-	WIRELESS_11B_24N = (WIRELESS_11B|WIRELESS_11_24N), /*  tx: ofdm & cck & MCS, rx: ofdm & cck & MCS, hw: ofdm & cck */
-	WIRELESS_11BG_24N = (WIRELESS_11B|WIRELESS_11G|WIRELESS_11_24N), /*  tx: ofdm & cck & MCS, rx: ofdm & cck & MCS, hw: ofdm & cck */
-};
-
-#define SUPPORTED_24G_NETTYPE_MSK (WIRELESS_11B | WIRELESS_11G | WIRELESS_11_24N)
-
-#define is_legacy_only(net_type)  ((net_type) == ((net_type) & (WIRELESS_11BG)))
-
-#define is_supported_24g(net_type) ((net_type) & SUPPORTED_24G_NETTYPE_MSK ? true : false)
-
-#define is_supported_tx_cck(net_type) (((net_type) & (WIRELESS_11B)) ? true : false)
-#define is_supported_ht(net_type) (((net_type) & (WIRELESS_11_24N)) ? true : false)
-
-struct ieee_param {
-	u32 cmd;
-	u8 sta_addr[ETH_ALEN];
-	union {
-		struct {
-			u8 name;
-			u32 value;
-		} wpa_param;
-		struct {
-			u32 len;
-			u8 reserved[32];
-			u8 data[];
-		} wpa_ie;
-		struct{
-			int command;
-			int reason_code;
-		} mlme;
-		struct {
-			u8 alg[IEEE_CRYPT_ALG_NAME_LEN];
-			u8 set_tx;
-			u32 err;
-			u8 idx;
-			u8 seq[8]; /* sequence counter (set: RX, get: TX) */
-			u16 key_len;
-			u8 key[];
-		} crypt;
-		struct {
-			u16 aid;
-			u16 capability;
-			int flags;
-			u8 tx_supp_rates[16];
-			struct ieee80211_ht_cap ht_cap;
-		} add_sta;
-		struct {
-			u8 reserved[2];/* for set max_num_sta */
-			u8 buf[];
-		} bcn_ie;
-	} u;
-};
-
-struct ieee_param_ex {
-	u32 cmd;
-	u8 sta_addr[ETH_ALEN];
-	u8 data[];
-};
-
-struct sta_data {
-	u16 aid;
-	u16 capability;
-	int flags;
-	u32 sta_set;
-	u8 tx_supp_rates[16];
-	u32 tx_supp_rates_len;
-	struct ieee80211_ht_cap ht_cap;
-	u64	rx_pkts;
-	u64	rx_bytes;
-	u64	rx_drops;
-	u64	tx_pkts;
-	u64	tx_bytes;
-	u64	tx_drops;
-};
-
-/* this is stolen from ipw2200 driver */
-#define IEEE_IBSS_MAC_HASH_SIZE 31
-
-struct eapol {
-	u8 snap[6];
-	u16 ethertype;
-	u8 version;
-	u8 type;
-	u16 length;
-} __packed;
-
-#define IEEE80211_FCS_LEN    4
-
-#define MIN_FRAG_THRESHOLD     256U
-#define	MAX_FRAG_THRESHOLD     2346U
-
-/* sequence control field */
-#define RTW_IEEE80211_SCTL_FRAG	0x000F
-#define RTW_IEEE80211_SCTL_SEQ	0xFFF0
-
-
-#define RTW_ERP_INFO_NON_ERP_PRESENT BIT(0)
-#define RTW_ERP_INFO_USE_PROTECTION BIT(1)
-#define RTW_ERP_INFO_BARKER_PREAMBLE_MODE BIT(2)
-
-/* QoS, QOS */
-#define NORMAL_ACK			0
-#define NO_ACK				1
-#define NON_EXPLICIT_ACK	2
-#define BLOCK_ACK			3
-
-#ifndef ETH_P_PAE
-#define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */
-#endif /* ETH_P_PAE */
-
-#define ETH_P_PREAUTH 0x88C7 /* IEEE 802.11i pre-authentication */
-
-#define ETH_P_ECONET	0x0018
-
-#ifndef ETH_P_80211_RAW
-#define ETH_P_80211_RAW (ETH_P_ECONET + 1)
-#endif
-
-/* IEEE 802.11 defines */
-
-#define P80211_OUI_LEN 3
-
-struct ieee80211_snap_hdr {
-	u8    dsap;   /* always 0xAA */
-	u8    ssap;   /* always 0xAA */
-	u8    ctrl;   /* always 0x03 */
-	u8    oui[P80211_OUI_LEN];    /* organizational universal id */
-} __packed;
-
-#define SNAP_SIZE sizeof(struct ieee80211_snap_hdr)
-
-#define WLAN_FC_GET_TYPE(fc) ((fc) & IEEE80211_FCTL_FTYPE)
-#define WLAN_FC_GET_STYPE(fc) ((fc) & IEEE80211_FCTL_STYPE)
-
-#define WLAN_QC_GET_TID(qc) ((qc) & 0x0f)
-
-#define WLAN_GET_SEQ_FRAG(seq) ((seq) & RTW_IEEE80211_SCTL_FRAG)
-#define WLAN_GET_SEQ_SEQ(seq)  ((seq) & RTW_IEEE80211_SCTL_SEQ)
-
-/* Reason codes */
-#define WLAN_REASON_ACTIVE_ROAM 65533
-#define WLAN_REASON_JOIN_WRONG_CHANNEL       65534
-#define WLAN_REASON_EXPIRATION_CHK 65535
-
-#define IEEE80211_MGMT_HDR_LEN 24
-#define IEEE80211_DATA_HDR3_LEN 24
-#define IEEE80211_DATA_HDR4_LEN 30
-
-
-#define IEEE80211_STATMASK_SIGNAL (1<<0)
-#define IEEE80211_STATMASK_RSSI (1<<1)
-#define IEEE80211_STATMASK_NOISE (1<<2)
-#define IEEE80211_STATMASK_RATE (1<<3)
-#define IEEE80211_STATMASK_WEMASK 0x7
-
-
-#define IEEE80211_CCK_MODULATION    (1<<0)
-#define IEEE80211_OFDM_MODULATION   (1<<1)
-
-#define IEEE80211_24GHZ_BAND     (1<<0)
-#define IEEE80211_52GHZ_BAND     (1<<1)
-
-#define IEEE80211_CCK_RATE_LEN			4
-#define IEEE80211_NUM_OFDM_RATESLEN	8
-
-
-#define IEEE80211_CCK_RATE_1MB		        0x02
-#define IEEE80211_CCK_RATE_2MB		        0x04
-#define IEEE80211_CCK_RATE_5MB		        0x0B
-#define IEEE80211_CCK_RATE_11MB		        0x16
-#define IEEE80211_OFDM_RATE_LEN			8
-#define IEEE80211_OFDM_RATE_6MB		        0x0C
-#define IEEE80211_OFDM_RATE_9MB		        0x12
-#define IEEE80211_OFDM_RATE_12MB		0x18
-#define IEEE80211_OFDM_RATE_18MB		0x24
-#define IEEE80211_OFDM_RATE_24MB		0x30
-#define IEEE80211_OFDM_RATE_36MB		0x48
-#define IEEE80211_OFDM_RATE_48MB		0x60
-#define IEEE80211_OFDM_RATE_54MB		0x6C
-#define IEEE80211_BASIC_RATE_MASK		0x80
-
-#define IEEE80211_CCK_RATE_1MB_MASK		(1<<0)
-#define IEEE80211_CCK_RATE_2MB_MASK		(1<<1)
-#define IEEE80211_CCK_RATE_5MB_MASK		(1<<2)
-#define IEEE80211_CCK_RATE_11MB_MASK		(1<<3)
-#define IEEE80211_OFDM_RATE_6MB_MASK		(1<<4)
-#define IEEE80211_OFDM_RATE_9MB_MASK		(1<<5)
-#define IEEE80211_OFDM_RATE_12MB_MASK		(1<<6)
-#define IEEE80211_OFDM_RATE_18MB_MASK		(1<<7)
-#define IEEE80211_OFDM_RATE_24MB_MASK		(1<<8)
-#define IEEE80211_OFDM_RATE_36MB_MASK		(1<<9)
-#define IEEE80211_OFDM_RATE_48MB_MASK		(1<<10)
-#define IEEE80211_OFDM_RATE_54MB_MASK		(1<<11)
-
-#define IEEE80211_CCK_RATES_MASK		0x0000000F
-#define IEEE80211_CCK_BASIC_RATES_MASK	(IEEE80211_CCK_RATE_1MB_MASK | \
-	IEEE80211_CCK_RATE_2MB_MASK)
-#define IEEE80211_CCK_DEFAULT_RATES_MASK	\
-	(IEEE80211_CCK_BASIC_RATES_MASK |	\
-	 IEEE80211_CCK_RATE_5MB_MASK |		\
-	 IEEE80211_CCK_RATE_11MB_MASK)
-
-#define IEEE80211_OFDM_RATES_MASK		0x00000FF0
-#define IEEE80211_OFDM_BASIC_RATES_MASK	(IEEE80211_OFDM_RATE_6MB_MASK | \
-	IEEE80211_OFDM_RATE_12MB_MASK | \
-	IEEE80211_OFDM_RATE_24MB_MASK)
-#define IEEE80211_OFDM_DEFAULT_RATES_MASK	(IEEE80211_OFDM_BASIC_RATES_MASK | \
-	IEEE80211_OFDM_RATE_9MB_MASK  | \
-	IEEE80211_OFDM_RATE_18MB_MASK | \
-	IEEE80211_OFDM_RATE_36MB_MASK | \
-	IEEE80211_OFDM_RATE_48MB_MASK | \
-	IEEE80211_OFDM_RATE_54MB_MASK)
-#define IEEE80211_DEFAULT_RATES_MASK		\
-	(IEEE80211_OFDM_DEFAULT_RATES_MASK |	\
-	 IEEE80211_CCK_DEFAULT_RATES_MASK)
-
-#define IEEE80211_NUM_OFDM_RATES	    8
-#define IEEE80211_NUM_CCK_RATES	            4
-#define IEEE80211_OFDM_SHIFT_MASK_A         4
-
-
-enum {
-	MGN_1M		= 0x02,
-	MGN_2M		= 0x04,
-	MGN_5_5M	= 0x0B,
-	MGN_6M		= 0x0C,
-	MGN_9M		= 0x12,
-	MGN_11M		= 0x16,
-	MGN_12M	= 0x18,
-	MGN_18M	= 0x24,
-	MGN_24M	= 0x30,
-	MGN_36M	= 0x48,
-	MGN_48M	= 0x60,
-	MGN_54M	= 0x6C,
-	MGN_MCS32	= 0x7F,
-	MGN_MCS0,
-	MGN_MCS1,
-	MGN_MCS2,
-	MGN_MCS3,
-	MGN_MCS4,
-	MGN_MCS5,
-	MGN_MCS6,
-	MGN_MCS7,
-	MGN_UNKNOWN
-};
-
-#define IS_HT_RATE(_rate)				(_rate >= MGN_MCS0 && _rate <= MGN_MCS31)
-#define IS_CCK_RATE(_rate)				(_rate == MGN_1M || _rate == MGN_2M || _rate == MGN_5_5M || _rate == MGN_11M)
-#define IS_OFDM_RATE(_rate)				(_rate >= MGN_6M && _rate <= MGN_54M  && _rate != MGN_11M)
-
-
-/* NOTE: This data is for statistical purposes; not all hardware provides this
- *       information for frames received.  Not setting these will not cause
- *       any adverse affects.
- */
-
-/* IEEE 802.11 requires that STA supports concurrent reception of at least
- * three fragmented frames. This define can be increased to support more
- * concurrent frames, but it should be noted that each entry can consume about
- * 2 kB of RAM and increasing cache size will slow down frame reassembly.
- */
-#define IEEE80211_FRAG_CACHE_LEN 4
-
-#define SEC_KEY_1         (1<<0)
-#define SEC_KEY_2         (1<<1)
-#define SEC_KEY_3         (1<<2)
-#define SEC_KEY_4         (1<<3)
-#define SEC_ACTIVE_KEY    (1<<4)
-#define SEC_AUTH_MODE     (1<<5)
-#define SEC_UNICAST_GROUP (1<<6)
-#define SEC_LEVEL         (1<<7)
-#define SEC_ENABLED       (1<<8)
-
-#define SEC_LEVEL_0      0 /* None */
-#define SEC_LEVEL_1      1 /* WEP 40 and 104 bit */
-#define SEC_LEVEL_2      2 /* Level 1 + TKIP */
-#define SEC_LEVEL_2_CKIP 3 /* Level 1 + CKIP */
-#define SEC_LEVEL_3      4 /* Level 2 + CCMP */
-
-#define WEP_KEYS 4
-#define WEP_KEY_LEN 13
-
-#define BIP_MAX_KEYID 5
-#define BIP_AAD_SIZE  20
-
-/*
- * 802.11 data frame from AP
- *
- *       ,-------------------------------------------------------------------.
- * Bytes |  2   |  2   |    6    |    6    |    6    |  2   | 0..2312 |   4  |
- *       |------|------|---------|---------|---------|------|---------|------|
- * Desc. | ctrl | dura |  DA/RA  |   TA    |    SA   | Sequ |  frame  |  fcs |
- *       |      | tion | (BSSID) |         |         | ence |  data   |      |
- *       `-------------------------------------------------------------------'
- *
- * Total: 28-2340 bytes
- */
-
-#define BEACON_PROBE_SSID_ID_POSITION 12
-
-/* Management Frame Information Element Types */
-#define MFIE_TYPE_SSID       0
-#define MFIE_TYPE_RATES      1
-#define MFIE_TYPE_FH_SET     2
-#define MFIE_TYPE_DS_SET     3
-#define MFIE_TYPE_CF_SET     4
-#define MFIE_TYPE_TIM        5
-#define MFIE_TYPE_IBSS_SET   6
-#define MFIE_TYPE_CHALLENGE  16
-#define MFIE_TYPE_ERP        42
-#define MFIE_TYPE_RSN	     48
-#define MFIE_TYPE_RATES_EX   50
-#define MFIE_TYPE_GENERIC    221
-
-/* SWEEP TABLE ENTRIES NUMBER*/
-#define MAX_SWEEP_TAB_ENTRIES		  42
-#define MAX_SWEEP_TAB_ENTRIES_PER_PACKET  7
-/* MAX_RATES_LENGTH needs to be 12.  The spec says 8, and many APs
- * only use 8, and then use extended rates for the remaining supported
- * rates.  Other APs, however, stick all of their supported rates on the
- * main rates information element...
- */
-#define MAX_RATES_LENGTH                  ((u8)12)
-#define MAX_RATES_EX_LENGTH               ((u8)16)
-#define MAX_NETWORK_COUNT                  128
-#define MAX_CHANNEL_NUMBER                 161
-#define IEEE80211_SOFTMAC_SCAN_TIME	  400
-/* HZ / 2) */
-#define IEEE80211_SOFTMAC_ASSOC_RETRY_TIME (HZ * 2)
-
-#define CRC_LENGTH                 4U
-
-#define MAX_WPA_IE_LEN (256)
-#define MAX_WPS_IE_LEN (512)
-#define MAX_P2P_IE_LEN (256)
-#define MAX_WFD_IE_LEN (128)
-
-#define NETWORK_EMPTY_ESSID (1<<0)
-#define NETWORK_HAS_OFDM    (1<<1)
-#define NETWORK_HAS_CCK     (1<<2)
-
-#define IEEE80211_DTIM_MBCAST 4
-#define IEEE80211_DTIM_UCAST 2
-#define IEEE80211_DTIM_VALID 1
-#define IEEE80211_DTIM_INVALID 0
-
-#define IEEE80211_PS_DISABLED 0
-#define IEEE80211_PS_UNICAST IEEE80211_DTIM_UCAST
-#define IEEE80211_PS_MBCAST IEEE80211_DTIM_MBCAST
-#define IW_ESSID_MAX_SIZE 32
-/*
- * join_res:
- * -1: authentication fail
- * -2: association fail
- * > 0: TID
- */
-
-#define DEFAULT_MAX_SCAN_AGE (15 * HZ)
-#define DEFAULT_FTS 2346
-#define IP_ARG(x) (x)
-
-#define CFG_IEEE80211_RESERVE_FCS (1<<0)
-#define CFG_IEEE80211_COMPUTE_FCS (1<<1)
-
-#define MAXTID	16
-
-#define IEEE_A            (1<<0)
-#define IEEE_B            (1<<1)
-#define IEEE_G            (1<<2)
-#define IEEE_MODE_MASK    (IEEE_A|IEEE_B|IEEE_G)
-
-/* Action category code */
-enum {
-	RTW_WLAN_CATEGORY_SPECTRUM_MGMT = 0,
-	RTW_WLAN_CATEGORY_QOS = 1,
-	RTW_WLAN_CATEGORY_DLS = 2,
-	RTW_WLAN_CATEGORY_BACK = 3,
-	RTW_WLAN_CATEGORY_PUBLIC = 4, /* IEEE 802.11 public action frames */
-	RTW_WLAN_CATEGORY_RADIO_MEASUREMENT  = 5,
-	RTW_WLAN_CATEGORY_FT = 6,
-	RTW_WLAN_CATEGORY_HT = 7,
-	RTW_WLAN_CATEGORY_SA_QUERY = 8,
-	RTW_WLAN_CATEGORY_UNPROTECTED_WNM = 11,
-	RTW_WLAN_CATEGORY_TDLS = 12,
-	RTW_WLAN_CATEGORY_SELF_PROTECTED = 15,
-	RTW_WLAN_CATEGORY_WMM = 17,
-	RTW_WLAN_CATEGORY_P2P = 0x7f,/* P2P action frames */
-};
-
-enum {
-	ACT_PUBLIC_BSSCOEXIST = 0, /*  20/40 BSS Coexistence */
-	ACT_PUBLIC_DSE_ENABLE = 1,
-	ACT_PUBLIC_DSE_DEENABLE = 2,
-	ACT_PUBLIC_DSE_REG_LOCATION = 3,
-	ACT_PUBLIC_EXT_CHL_SWITCH = 4,
-	ACT_PUBLIC_DSE_MSR_REQ = 5,
-	ACT_PUBLIC_DSE_MSR_RPRT = 6,
-	ACT_PUBLIC_MP = 7, /*  Measurement Pilot */
-	ACT_PUBLIC_DSE_PWR_CONSTRAINT = 8,
-	ACT_PUBLIC_VENDOR = 9, /*  for WIFI_DIRECT */
-	ACT_PUBLIC_GAS_INITIAL_REQ = 10,
-	ACT_PUBLIC_GAS_INITIAL_RSP = 11,
-	ACT_PUBLIC_GAS_COMEBACK_REQ = 12,
-	ACT_PUBLIC_GAS_COMEBACK_RSP = 13,
-	ACT_PUBLIC_TDLS_DISCOVERY_RSP = 14,
-	ACT_PUBLIC_LOCATION_TRACK = 15,
-	ACT_PUBLIC_MAX
-};
-
-#define OUI_MICROSOFT 0x0050f2 /* Microsoft OUI (also used in Wi-Fi specs) */
-#define WME_OUI_TYPE 2
-#define WME_OUI_SUBTYPE_INFORMATION_ELEMENT 0
-#define WME_OUI_SUBTYPE_PARAMETER_ELEMENT 1
-#define WME_OUI_SUBTYPE_TSPEC_ELEMENT 2
-#define WME_VERSION 1
-
-#define WME_ACTION_CODE_SETUP_REQUEST 0
-#define WME_ACTION_CODE_SETUP_RESPONSE 1
-#define WME_ACTION_CODE_TEARDOWN 2
-
-#define WME_SETUP_RESPONSE_STATUS_ADMISSION_ACCEPTED 0
-#define WME_SETUP_RESPONSE_STATUS_INVALID_PARAMETERS 1
-#define WME_SETUP_RESPONSE_STATUS_REFUSED 3
-
-#define WME_TSPEC_DIRECTION_UPLINK 0
-#define WME_TSPEC_DIRECTION_DOWNLINK 1
-#define WME_TSPEC_DIRECTION_BI_DIRECTIONAL 3
-
-
-#define OUI_BROADCOM 0x00904c /* Broadcom (Epigram) */
-
-#define VENDOR_HT_CAPAB_OUI_TYPE 0x33 /* 00-90-4c:0x33 */
-
-/**
- * enum rtw_ieee80211_channel_flags - channel flags
- *
- * Channel flags set by the regulatory control code.
- *
- * @RTW_IEEE80211_CHAN_DISABLED: This channel is disabled.
- * @RTW_IEEE80211_CHAN_PASSIVE_SCAN: Only passive scanning is permitted
- *      on this channel.
- * @RTW_IEEE80211_CHAN_NO_IBSS: IBSS is not allowed on this channel.
- * @RTW_IEEE80211_CHAN_RADAR: Radar detection is required on this channel.
- * @RTW_IEEE80211_CHAN_NO_HT40PLUS: extension channel above this channel
- *      is not permitted.
- * @RTW_IEEE80211_CHAN_NO_HT40MINUS: extension channel below this channel
- *      is not permitted.
- */
-enum rtw_ieee80211_channel_flags {
-	RTW_IEEE80211_CHAN_DISABLED         = 1<<0,
-	RTW_IEEE80211_CHAN_PASSIVE_SCAN     = 1<<1,
-	RTW_IEEE80211_CHAN_NO_IBSS          = 1<<2,
-	RTW_IEEE80211_CHAN_RADAR            = 1<<3,
-	RTW_IEEE80211_CHAN_NO_HT40PLUS      = 1<<4,
-	RTW_IEEE80211_CHAN_NO_HT40MINUS     = 1<<5,
-};
-
-#define RTW_IEEE80211_CHAN_NO_HT40	  \
-	(RTW_IEEE80211_CHAN_NO_HT40PLUS | \
-	 RTW_IEEE80211_CHAN_NO_HT40MINUS)
-
-/* Represent channel details, subset of ieee80211_channel */
-struct rtw_ieee80211_channel {
-	/* enum nl80211_band band; */
-	/* u16 center_freq; */
-	u16 hw_value;
-	u32 flags;
-	/* int max_antenna_gain; */
-	/* int max_power; */
-	/* int max_reg_power; */
-	/* bool beacon_found; */
-	/* u32 orig_flags; */
-	/* int orig_mag; */
-	/* int orig_mpwr; */
-};
-
-/* Parsed Information Elements */
-struct rtw_ieee802_11_elems {
-	u8 *ssid;
-	u8 ssid_len;
-	u8 *supp_rates;
-	u8 supp_rates_len;
-	u8 *fh_params;
-	u8 fh_params_len;
-	u8 *ds_params;
-	u8 ds_params_len;
-	u8 *cf_params;
-	u8 cf_params_len;
-	u8 *tim;
-	u8 tim_len;
-	u8 *ibss_params;
-	u8 ibss_params_len;
-	u8 *challenge;
-	u8 challenge_len;
-	u8 *erp_info;
-	u8 erp_info_len;
-	u8 *ext_supp_rates;
-	u8 ext_supp_rates_len;
-	u8 *wpa_ie;
-	u8 wpa_ie_len;
-	u8 *rsn_ie;
-	u8 rsn_ie_len;
-	u8 *wme;
-	u8 wme_len;
-	u8 *wme_tspec;
-	u8 wme_tspec_len;
-	u8 *wps_ie;
-	u8 wps_ie_len;
-	u8 *power_cap;
-	u8 power_cap_len;
-	u8 *supp_channels;
-	u8 supp_channels_len;
-	u8 *mdie;
-	u8 mdie_len;
-	u8 *ftie;
-	u8 ftie_len;
-	u8 *timeout_int;
-	u8 timeout_int_len;
-	u8 *ht_capabilities;
-	u8 ht_capabilities_len;
-	u8 *ht_operation;
-	u8 ht_operation_len;
-	u8 *vendor_ht_cap;
-	u8 vendor_ht_cap_len;
-	u8 *vht_capabilities;
-	u8 vht_capabilities_len;
-	u8 *vht_operation;
-	u8 vht_operation_len;
-	u8 *vht_op_mode_notify;
-	u8 vht_op_mode_notify_len;
-};
-
-enum parse_result {
-	PARSE_OK = 0,
-	PARSE_UNKNOWN = 1,
-	PARSE_FAILED = -1
-};
-
-enum parse_result rtw_ieee802_11_parse_elems(u8 *start, uint len,
-					     struct rtw_ieee802_11_elems *elems,
-					     int show_errors);
-
-u8 *rtw_set_fixed_ie(unsigned char *pbuf, unsigned int len, unsigned char *source, unsigned int *frlen);
-u8 *rtw_set_ie(u8 *pbuf, signed int index, uint len, u8 *source, uint *frlen);
-
-u8 *rtw_get_ie(u8 *pbuf, signed int index, signed int *len, signed int limit);
-u8 *rtw_get_ie_ex(u8 *in_ie, uint in_len, u8 eid, u8 *oui, u8 oui_len, u8 *ie, uint *ielen);
-int rtw_ies_remove_ie(u8 *ies, uint *ies_len, uint offset, u8 eid, u8 *oui, u8 oui_len);
-
-void rtw_set_supported_rate(u8 *SupportedRates, uint mode);
-
-unsigned char *rtw_get_wpa_ie(unsigned char *pie, int *wpa_ie_len, int limit);
-unsigned char *rtw_get_wpa2_ie(unsigned char *pie, int *rsn_ie_len, int limit);
-int rtw_get_wpa_cipher_suite(u8 *s);
-int rtw_get_wpa2_cipher_suite(u8 *s);
-int rtw_get_wapi_ie(u8 *in_ie, uint in_len, u8 *wapi_ie, u16 *wapi_len);
-int rtw_parse_wpa_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x);
-int rtw_parse_wpa2_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x);
-
-void rtw_get_sec_ie(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len, u8 *wpa_ie, u16 *wpa_len);
-
-u8 *rtw_get_wps_ie(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen);
-u8 *rtw_get_wps_attr(u8 *wps_ie, uint wps_ielen, u16 target_attr_id, u8 *buf_attr, u32 *len_attr);
-u8 *rtw_get_wps_attr_content(u8 *wps_ie, uint wps_ielen, u16 target_attr_id, u8 *buf_content, uint *len_content);
-
-/**
- * for_each_ie - iterate over continuous IEs
- * @ie:
- * @buf:
- * @buf_len:
- */
-#define for_each_ie(ie, buf, buf_len) \
-	for (ie = (void *)buf; (((u8 *)ie) - ((u8 *)buf) + 1) < buf_len; \
-		ie = (void *)(((u8 *)ie) + *(((u8 *)ie) + 1) + 2))
-
-uint	rtw_get_rateset_len(u8 *rateset);
-
-struct registry_priv;
-int rtw_generate_ie(struct registry_priv *pregistrypriv);
-
-
-int rtw_get_bit_value_from_ieee_value(u8 val);
-
-bool rtw_is_cckrates_included(u8 *rate);
-
-bool rtw_is_cckratesonly_included(u8 *rate);
-
-int rtw_check_network_type(unsigned char *rate, int channel);
-
-void rtw_get_bcn_info(struct wlan_network *pnetwork);
-
-void rtw_macaddr_cfg(struct device *dev, u8 *mac_addr);
-
-u16 rtw_mcs_rate(u8 bw_40MHz, u8 short_GI, unsigned char *MCS_rate);
-
-int rtw_action_frame_parse(const u8 *frame, u32 frame_len, u8 *category, u8 *action);
-const char *action_public_str(u8 action);
-
-#endif /* IEEE80211_H */
diff --git a/drivers/staging/rtl8723bs/include/ioctl_cfg80211.h b/drivers/staging/rtl8723bs/include/ioctl_cfg80211.h
deleted file mode 100644
index a1fc18cd247b..000000000000
--- a/drivers/staging/rtl8723bs/include/ioctl_cfg80211.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __IOCTL_CFG80211_H__
-#define __IOCTL_CFG80211_H__
-
-struct rtw_wdev_priv {
-	struct wireless_dev *rtw_wdev;
-
-	struct adapter *padapter;
-
-	struct cfg80211_scan_request *scan_request;
-	spinlock_t scan_req_lock;
-
-	struct net_device *pmon_ndev;/* for monitor interface */
-	char ifname_mon[IFNAMSIZ + 1]; /* interface name for monitor interface */
-
-	bool block;
-	bool power_mgmt;
-};
-
-#define wiphy_to_adapter(x) (*((struct adapter **)wiphy_priv(x)))
-
-#define wdev_to_ndev(w) ((w)->netdev)
-
-int rtw_wdev_alloc(struct adapter *padapter, struct device *dev);
-void rtw_wdev_free(struct wireless_dev *wdev);
-void rtw_wdev_unregister(struct wireless_dev *wdev);
-
-void rtw_cfg80211_init_wiphy(struct adapter *padapter);
-
-void rtw_cfg80211_unlink_bss(struct adapter *padapter, struct wlan_network *pnetwork);
-void rtw_cfg80211_surveydone_event_callback(struct adapter *padapter);
-int rtw_ieee80211_channel_to_frequency(int chan);
-struct cfg80211_bss *rtw_cfg80211_inform_bss(struct adapter *padapter, struct wlan_network *pnetwork);
-int rtw_cfg80211_check_bss(struct adapter *padapter);
-void rtw_cfg80211_ibss_indicate_connect(struct adapter *padapter);
-void rtw_cfg80211_indicate_connect(struct adapter *padapter);
-void rtw_cfg80211_indicate_disconnect(struct adapter *padapter);
-void rtw_cfg80211_indicate_scan_done(struct adapter *adapter, bool aborted);
-
-void rtw_cfg80211_indicate_sta_assoc(struct adapter *padapter, u8 *pmgmt_frame, unsigned int frame_len);
-void rtw_cfg80211_indicate_sta_disassoc(struct adapter *padapter, unsigned char *da, unsigned short reason);
-
-void rtw_cfg80211_rx_action(struct adapter *adapter, u8 *frame, unsigned int frame_len, const char *msg);
-
-bool rtw_cfg80211_pwr_mgmt(struct adapter *adapter);
-
-#define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) cfg80211_rx_mgmt((adapter)->rtw_wdev, freq, sig_dbm, buf, len, 0)
-#define rtw_cfg80211_send_rx_assoc(adapter, bss, buf, len) cfg80211_send_rx_assoc((adapter)->pnetdev, bss, buf, len)
-#define rtw_cfg80211_mgmt_tx_status(adapter, cookie, buf, len, ack, gfp) cfg80211_mgmt_tx_status((adapter)->rtw_wdev, cookie, buf, len, ack, gfp)
-#define rtw_cfg80211_ready_on_channel(adapter, cookie, chan, channel_type, duration, gfp)  cfg80211_ready_on_channel((adapter)->rtw_wdev, cookie, chan, duration, gfp)
-#define rtw_cfg80211_remain_on_channel_expired(adapter, cookie, chan, chan_type, gfp) cfg80211_remain_on_channel_expired((adapter)->rtw_wdev, cookie, chan, gfp)
-
-#endif /* __IOCTL_CFG80211_H__ */
diff --git a/drivers/staging/rtl8723bs/include/osdep_intf.h b/drivers/staging/rtl8723bs/include/osdep_intf.h
deleted file mode 100644
index 83a25598e962..000000000000
--- a/drivers/staging/rtl8723bs/include/osdep_intf.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef __OSDEP_INTF_H_
-#define __OSDEP_INTF_H_
-
-struct dvobj_priv *devobj_init(void);
-void devobj_deinit(struct dvobj_priv *pdvobj);
-
-u8 rtw_init_drv_sw(struct adapter *padapter);
-u8 rtw_free_drv_sw(struct adapter *padapter);
-void rtw_reset_drv_sw(struct adapter *padapter);
-void rtw_dev_unload(struct adapter *padapter);
-
-u32 rtw_start_drv_threads(struct adapter *padapter);
-void rtw_stop_drv_threads(struct adapter *padapter);
-void rtw_cancel_all_timer(struct adapter *padapter);
-
-int rtw_init_netdev_name(struct net_device *pnetdev, const char *ifname);
-struct net_device *rtw_init_netdev(struct adapter *padapter);
-void rtw_unregister_netdevs(struct dvobj_priv *dvobj);
-
-u16 rtw_recv_select_queue(struct sk_buff *skb);
-
-void rtw_ips_dev_unload(struct adapter *padapter);
-
-int rtw_ips_pwr_up(struct adapter *padapter);
-void rtw_ips_pwr_down(struct adapter *padapter);
-
-int rtw_drv_register_netdev(struct adapter *padapter);
-void rtw_ndev_destructor(struct net_device *ndev);
-
-void rtw_suspend_common(struct adapter *padapter);
-int rtw_resume_common(struct adapter *padapter);
-
-int netdev_open(struct net_device *pnetdev);
-
-#endif	/* _OSDEP_INTF_H_ */
diff --git a/drivers/staging/rtl8723bs/include/osdep_service.h b/drivers/staging/rtl8723bs/include/osdep_service.h
deleted file mode 100644
index 2f5011a8210c..000000000000
--- a/drivers/staging/rtl8723bs/include/osdep_service.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2013 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __OSDEP_SERVICE_H_
-#define __OSDEP_SERVICE_H_
-
-
-#define _FAIL		0
-#define _SUCCESS	1
-#define RTW_RX_HANDLED 2
-
-#include <osdep_service_linux.h>
-
-
-extern int RTW_STATUS_CODE(int error_code);
-
-int _rtw_netif_rx(struct net_device *ndev, struct sk_buff *skb);
-
-#define rtw_netif_rx(ndev, skb) _rtw_netif_rx(ndev, skb)
-
-static inline void flush_signals_thread(void)
-{
-	if (signal_pending(current))
-		flush_signals(current);
-}
-
-#define _RND(sz, r) ((((sz)+((r)-1))/(r))*(r))
-
-extern void rtw_free_netdev(struct net_device *netdev);
-
-/* Macros for handling unaligned memory accesses */
-
-void rtw_buf_free(u8 **buf, u32 *buf_len);
-void rtw_buf_update(u8 **buf, u32 *buf_len, u8 *src, u32 src_len);
-
-struct rtw_cbuf {
-	u32 write;
-	u32 read;
-	u32 size;
-	void *bufs[];
-};
-
-bool rtw_cbuf_full(struct rtw_cbuf *cbuf);
-bool rtw_cbuf_empty(struct rtw_cbuf *cbuf);
-bool rtw_cbuf_push(struct rtw_cbuf *cbuf, void *buf);
-void *rtw_cbuf_pop(struct rtw_cbuf *cbuf);
-struct rtw_cbuf *rtw_cbuf_alloc(u32 size);
-
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/osdep_service_linux.h b/drivers/staging/rtl8723bs/include/osdep_service_linux.h
deleted file mode 100644
index c8274da940ff..000000000000
--- a/drivers/staging/rtl8723bs/include/osdep_service_linux.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2013 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __OSDEP_LINUX_SERVICE_H_
-#define __OSDEP_LINUX_SERVICE_H_
-
-#include <linux/spinlock.h>
-#include <linux/compiler.h>
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/init.h>
-#include <linux/slab.h>
-#include <linux/module.h>
-#include <linux/kref.h>
-#include <linux/netdevice.h>
-#include <linux/skbuff.h>
-#include <linux/uaccess.h>
-#include <asm/byteorder.h>
-#include <linux/atomic.h>
-#include <linux/io.h>
-#include <linux/sem.h>
-#include <linux/sched.h>
-#include <linux/etherdevice.h>
-#include <linux/wireless.h>
-#include <net/iw_handler.h>
-#include <linux/if_arp.h>
-#include <linux/rtnetlink.h>
-#include <linux/delay.h>
-#include <linux/interrupt.h>	/*  for struct tasklet_struct */
-#include <linux/ip.h>
-#include <linux/kthread.h>
-#include <linux/list.h>
-#include <linux/vmalloc.h>
-
-#include <net/ieee80211_radiotap.h>
-#include <net/cfg80211.h>
-
-struct	__queue	{
-	struct	list_head	queue;
-	spinlock_t	lock;
-};
-
-static inline struct list_head *get_next(struct list_head	*list)
-{
-	return list->next;
-}
-
-static inline struct list_head	*get_list_head(struct __queue	*queue)
-{
-	return (&(queue->queue));
-}
-
-static inline void _set_timer(struct timer_list *ptimer, u32 delay_time)
-{
-	mod_timer(ptimer, (jiffies + (delay_time * HZ / 1000)));
-}
-
-static inline void _init_workitem(struct work_struct *pwork, void *pfunc, void *cntx)
-{
-	INIT_WORK(pwork, pfunc);
-}
-
-static inline void _set_workitem(struct work_struct *pwork)
-{
-	schedule_work(pwork);
-}
-
-static inline void _cancel_workitem_sync(struct work_struct *pwork)
-{
-	cancel_work_sync(pwork);
-}
-
-static inline int rtw_netif_queue_stopped(struct net_device *pnetdev)
-{
-	return (netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev, 0)) &&
-		netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev, 1)) &&
-		netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev, 2)) &&
-		netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev, 3)));
-}
-
-static inline void rtw_netif_wake_queue(struct net_device *pnetdev)
-{
-	netif_tx_wake_all_queues(pnetdev);
-}
-
-static inline void rtw_netif_start_queue(struct net_device *pnetdev)
-{
-	netif_tx_start_all_queues(pnetdev);
-}
-
-static inline void rtw_netif_stop_queue(struct net_device *pnetdev)
-{
-	netif_tx_stop_all_queues(pnetdev);
-}
-
-#define rtw_signal_process(pid, sig) kill_pid(find_vpid((pid)), (sig), 1)
-
-#define ADPT_ARG(adapter) adapter->pnetdev->name
-#define FUNC_ADPT_FMT "%s(%s)"
-#define FUNC_ADPT_ARG(adapter) __func__, adapter->pnetdev->name
-
-struct rtw_netdev_priv_indicator {
-	void *priv;
-	u32 sizeof_priv;
-};
-
-static inline struct adapter *rtw_netdev_priv(struct net_device *netdev)
-{
-	return ((struct rtw_netdev_priv_indicator *)netdev_priv(netdev))->priv;
-}
-
-struct net_device *rtw_alloc_etherdev_with_old_priv(int sizeof_priv, void *old_priv);
-extern struct net_device *rtw_alloc_etherdev(int sizeof_priv);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/rtl8192c_recv.h b/drivers/staging/rtl8723bs/include/rtl8192c_recv.h
deleted file mode 100644
index b63625ab4e45..000000000000
--- a/drivers/staging/rtl8723bs/include/rtl8192c_recv.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef _RTL8192C_RECV_H_
-#define _RTL8192C_RECV_H_
-
-#define MAX_RECVBUF_SZ (10240)
-
-struct phy_stat {
-	unsigned int phydw0;
-
-	unsigned int phydw1;
-
-	unsigned int phydw2;
-
-	unsigned int phydw3;
-
-	unsigned int phydw4;
-
-	unsigned int phydw5;
-
-	unsigned int phydw6;
-
-	unsigned int phydw7;
-};
-
-/*  Rx smooth factor */
-#define	Rx_Smooth_Factor (20)
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/rtl8723b_cmd.h b/drivers/staging/rtl8723bs/include/rtl8723b_cmd.h
deleted file mode 100644
index 6b2d79e19088..000000000000
--- a/drivers/staging/rtl8723bs/include/rtl8723b_cmd.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8723B_CMD_H__
-#define __RTL8723B_CMD_H__
-
-/*  */
-/*     H2C CMD DEFINITION    ------------------------------------------------ */
-/*  */
-
-enum {
-	/* Common Class: 000 */
-	H2C_8723B_RSVD_PAGE = 0x00,
-	H2C_8723B_MEDIA_STATUS_RPT = 0x01,
-	H2C_8723B_SCAN_ENABLE = 0x02,
-	H2C_8723B_KEEP_ALIVE = 0x03,
-	H2C_8723B_DISCON_DECISION = 0x04,
-	H2C_8723B_PSD_OFFLOAD = 0x05,
-	H2C_8723B_AP_OFFLOAD = 0x08,
-	H2C_8723B_BCN_RSVDPAGE = 0x09,
-	H2C_8723B_PROBERSP_RSVDPAGE = 0x0A,
-	H2C_8723B_FCS_RSVDPAGE = 0x10,
-	H2C_8723B_FCS_INFO = 0x11,
-	H2C_8723B_AP_WOW_GPIO_CTRL = 0x13,
-
-	/* PoweSave Class: 001 */
-	H2C_8723B_SET_PWR_MODE = 0x20,
-	H2C_8723B_PS_TUNING_PARA = 0x21,
-	H2C_8723B_PS_TUNING_PARA2 = 0x22,
-	H2C_8723B_P2P_LPS_PARAM = 0x23,
-	H2C_8723B_P2P_PS_OFFLOAD = 0x24,
-	H2C_8723B_PS_SCAN_ENABLE = 0x25,
-	H2C_8723B_SAP_PS_ = 0x26,
-	H2C_8723B_INACTIVE_PS_ = 0x27, /* Inactive_PS */
-	H2C_8723B_FWLPS_IN_IPS_ = 0x28,
-
-	/* Dynamic Mechanism Class: 010 */
-	H2C_8723B_MACID_CFG = 0x40,
-	H2C_8723B_TXBF = 0x41,
-	H2C_8723B_RSSI_SETTING = 0x42,
-	H2C_8723B_AP_REQ_TXRPT = 0x43,
-	H2C_8723B_INIT_RATE_COLLECT = 0x44,
-
-	/* BT Class: 011 */
-	H2C_8723B_B_TYPE_TDMA = 0x60,
-	H2C_8723B_BT_INFO = 0x61,
-	H2C_8723B_FORCE_BT_TXPWR = 0x62,
-	H2C_8723B_BT_IGNORE_WLANACT = 0x63,
-	H2C_8723B_DAC_SWING_VALUE = 0x64,
-	H2C_8723B_ANT_SEL_RSV = 0x65,
-	H2C_8723B_WL_OPMODE = 0x66,
-	H2C_8723B_BT_MP_OPER = 0x67,
-	H2C_8723B_BT_CONTROL = 0x68,
-	H2C_8723B_BT_WIFI_CTRL = 0x69,
-	H2C_8723B_BT_FW_PATCH = 0x6A,
-	H2C_8723B_BT_WLAN_CALIBRATION = 0x6D,
-
-	/* WOWLAN Class: 100 */
-	H2C_8723B_WOWLAN = 0x80,
-	H2C_8723B_REMOTE_WAKE_CTRL = 0x81,
-	H2C_8723B_AOAC_GLOBAL_INFO = 0x82,
-	H2C_8723B_AOAC_RSVD_PAGE = 0x83,
-	H2C_8723B_AOAC_RSVD_PAGE2 = 0x84,
-	H2C_8723B_D0_SCAN_OFFLOAD_CTRL = 0x85,
-	H2C_8723B_D0_SCAN_OFFLOAD_INFO = 0x86,
-	H2C_8723B_CHNL_SWITCH_OFFLOAD = 0x87,
-
-	H2C_8723B_RESET_TSF = 0xC0,
-	H2C_8723B_MAXID,
-};
-/*  */
-/*     H2C CMD CONTENT    -------------------------------------------------- */
-/*  */
-/* _RSVDPAGE_LOC_CMD_0x00 */
-#define SET_8723B_H2CCMD_RSVDPAGE_LOC_PROBE_RSP(__pH2CCmd, __Value)			SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd, 0, 8, __Value)
-#define SET_8723B_H2CCMD_RSVDPAGE_LOC_PSPOLL(__pH2CCmd, __Value)				SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+1, 0, 8, __Value)
-#define SET_8723B_H2CCMD_RSVDPAGE_LOC_NULL_DATA(__pH2CCmd, __Value)			SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+2, 0, 8, __Value)
-#define SET_8723B_H2CCMD_RSVDPAGE_LOC_QOS_NULL_DATA(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+3, 0, 8, __Value)
-#define SET_8723B_H2CCMD_RSVDPAGE_LOC_BT_QOS_NULL_DATA(__pH2CCmd, __Value)	SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+4, 0, 8, __Value)
-
-/* _MEDIA_STATUS_RPT_PARM_CMD_0x01 */
-#define SET_8723B_H2CCMD_MSRRPT_PARM_OPMODE(__pH2CCmd, __Value)				SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value)
-#define SET_8723B_H2CCMD_MSRRPT_PARM_MACID_IND(__pH2CCmd, __Value)			SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value)
-#define SET_8723B_H2CCMD_MSRRPT_PARM_MACID(__pH2CCmd, __Value)				SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd+1, 0, 8, __Value)
-#define SET_8723B_H2CCMD_MSRRPT_PARM_MACID_END(__pH2CCmd, __Value)			SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd+2, 0, 8, __Value)
-
-/* _KEEP_ALIVE_CMD_0x03 */
-#define SET_8723B_H2CCMD_KEEPALIVE_PARM_ENABLE(__pH2CCmd, __Value)			SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value)
-#define SET_8723B_H2CCMD_KEEPALIVE_PARM_ADOPT(__pH2CCmd, __Value)				SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value)
-#define SET_8723B_H2CCMD_KEEPALIVE_PARM_PKT_TYPE(__pH2CCmd, __Value)			SET_BITS_TO_LE_1BYTE(__pH2CCmd, 2, 1, __Value)
-#define SET_8723B_H2CCMD_KEEPALIVE_PARM_CHECK_PERIOD(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd+1, 0, 8, __Value)
-
-/* _DISCONNECT_DECISION_CMD_0x04 */
-#define SET_8723B_H2CCMD_DISCONDECISION_PARM_ENABLE(__pH2CCmd, __Value)			SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value)
-#define SET_8723B_H2CCMD_DISCONDECISION_PARM_ADOPT(__pH2CCmd, __Value)			SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value)
-#define SET_8723B_H2CCMD_DISCONDECISION_PARM_CHECK_PERIOD(__pH2CCmd, __Value)	SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd+1, 0, 8, __Value)
-#define SET_8723B_H2CCMD_DISCONDECISION_PARM_TRY_PKT_NUM(__pH2CCmd, __Value)	SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd+2, 0, 8, __Value)
-
-/*  _PWR_MOD_CMD_0x20 */
-#define SET_8723B_H2CCMD_PWRMODE_PARM_MODE(__pH2CCmd, __Value)				SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd, 0, 8, __Value)
-#define SET_8723B_H2CCMD_PWRMODE_PARM_RLBM(__pH2CCmd, __Value)				SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 4, __Value)
-#define SET_8723B_H2CCMD_PWRMODE_PARM_SMART_PS(__pH2CCmd, __Value)			SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 4, 4, __Value)
-#define SET_8723B_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+2, 0, 8, __Value)
-#define SET_8723B_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(__pH2CCmd, __Value)	SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+3, 0, 8, __Value)
-#define SET_8723B_H2CCMD_PWRMODE_PARM_PWR_STATE(__pH2CCmd, __Value)			SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+4, 0, 8, __Value)
-#define SET_8723B_H2CCMD_PWRMODE_PARM_BYTE5(__pH2CCmd, __Value)				SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+5, 0, 8, __Value)
-
-#define GET_8723B_H2CCMD_PWRMODE_PARM_MODE(__pH2CCmd)					LE_BITS_TO_1BYTE(__pH2CCmd, 0, 8)
-
-/*  _PS_TUNE_PARAM_CMD_0x21 */
-#define SET_8723B_H2CCMD_PSTUNE_PARM_BCN_TO_LIMIT(__pH2CCmd, __Value)			SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
-#define SET_8723B_H2CCMD_PSTUNE_PARM_DTIM_TIMEOUT(__pH2CCmd, __Value)			SET_BITS_TO_LE_1BYTE(__pH2CCmd+1, 0, 8, __Value)
-#define SET_8723B_H2CCMD_PSTUNE_PARM_ADOPT(__pH2CCmd, __Value)			SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 0, 1, __Value)
-#define SET_8723B_H2CCMD_PSTUNE_PARM_PS_TIMEOUT(__pH2CCmd, __Value)			SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 1, 7, __Value)
-#define SET_8723B_H2CCMD_PSTUNE_PARM_DTIM_PERIOD(__pH2CCmd, __Value)			SET_BITS_TO_LE_1BYTE(__pH2CCmd+3, 0, 8, __Value)
-
-/* _MACID_CFG_CMD_0x40 */
-#define SET_8723B_H2CCMD_MACID_CFG_MACID(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
-#define SET_8723B_H2CCMD_MACID_CFG_RAID(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd+1, 0, 5, __Value)
-#define SET_8723B_H2CCMD_MACID_CFG_SGI_EN(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd+1, 7, 1, __Value)
-#define SET_8723B_H2CCMD_MACID_CFG_BW(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 0, 2, __Value)
-#define SET_8723B_H2CCMD_MACID_CFG_NO_UPDATE(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 3, 1, __Value)
-#define SET_8723B_H2CCMD_MACID_CFG_VHT_EN(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 4, 2, __Value)
-#define SET_8723B_H2CCMD_MACID_CFG_DISPT(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 6, 1, __Value)
-#define SET_8723B_H2CCMD_MACID_CFG_DISRA(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 7, 1, __Value)
-#define SET_8723B_H2CCMD_MACID_CFG_RATE_MASK0(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd+3, 0, 8, __Value)
-#define SET_8723B_H2CCMD_MACID_CFG_RATE_MASK1(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd+4, 0, 8, __Value)
-#define SET_8723B_H2CCMD_MACID_CFG_RATE_MASK2(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd+5, 0, 8, __Value)
-#define SET_8723B_H2CCMD_MACID_CFG_RATE_MASK3(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd+6, 0, 8, __Value)
-
-/* _RSSI_SETTING_CMD_0x42 */
-#define SET_8723B_H2CCMD_RSSI_SETTING_MACID(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
-#define SET_8723B_H2CCMD_RSSI_SETTING_RSSI(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 0, 7, __Value)
-#define SET_8723B_H2CCMD_RSSI_SETTING_ULDL_STATE(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd+3, 0, 8, __Value)
-
-/*  _AP_REQ_TXRPT_CMD_0x43 */
-#define SET_8723B_H2CCMD_APREQRPT_PARM_MACID1(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
-#define SET_8723B_H2CCMD_APREQRPT_PARM_MACID2(__pH2CCmd, __Value)		SET_BITS_TO_LE_1BYTE(__pH2CCmd+1, 0, 8, __Value)
-
-/*  _FORCE_BT_TXPWR_CMD_0x62 */
-#define SET_8723B_H2CCMD_BT_PWR_IDX(__pH2CCmd, __Value)							SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd, 0, 8, __Value)
-
-/*  _FORCE_BT_MP_OPER_CMD_0x67 */
-#define SET_8723B_H2CCMD_BT_MPOPER_VER(__pH2CCmd, __Value)							SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 4, __Value)
-#define SET_8723B_H2CCMD_BT_MPOPER_REQNUM(__pH2CCmd, __Value)							SET_BITS_TO_LE_1BYTE(__pH2CCmd, 4, 4, __Value)
-#define SET_8723B_H2CCMD_BT_MPOPER_IDX(__pH2CCmd, __Value)							SET_BITS_TO_LE_1BYTE(__pH2CCmd+1, 0, 8, __Value)
-#define SET_8723B_H2CCMD_BT_MPOPER_PARAM1(__pH2CCmd, __Value)							SET_BITS_TO_LE_1BYTE(__pH2CCmd+2, 0, 8, __Value)
-#define SET_8723B_H2CCMD_BT_MPOPER_PARAM2(__pH2CCmd, __Value)							SET_BITS_TO_LE_1BYTE(__pH2CCmd+3, 0, 8, __Value)
-#define SET_8723B_H2CCMD_BT_MPOPER_PARAM3(__pH2CCmd, __Value)							SET_BITS_TO_LE_1BYTE(__pH2CCmd+4, 0, 8, __Value)
-
-/*  _BT_FW_PATCH_0x6A */
-#define SET_8723B_H2CCMD_BT_FW_PATCH_SIZE(__pH2CCmd, __Value)					SET_BITS_TO_LE_2BYTE((u8 *)(__pH2CCmd), 0, 16, __Value)
-#define SET_8723B_H2CCMD_BT_FW_PATCH_ADDR0(__pH2CCmd, __Value)					SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value)
-#define SET_8723B_H2CCMD_BT_FW_PATCH_ADDR1(__pH2CCmd, __Value)					SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value)
-#define SET_8723B_H2CCMD_BT_FW_PATCH_ADDR2(__pH2CCmd, __Value)					SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 0, 8, __Value)
-#define SET_8723B_H2CCMD_BT_FW_PATCH_ADDR3(__pH2CCmd, __Value)					SET_BITS_TO_LE_1BYTE((__pH2CCmd)+5, 0, 8, __Value)
-
-/*  */
-/*     Function Statement     -------------------------------------------------- */
-/*  */
-
-/*  host message to firmware cmd */
-void rtl8723b_set_FwPwrMode_cmd(struct adapter *padapter, u8 Mode);
-void rtl8723b_set_FwJoinBssRpt_cmd(struct adapter *padapter, u8 mstatus);
-void rtl8723b_set_rssi_cmd(struct adapter *padapter, u8 *param);
-void rtl8723b_Add_RateATid(struct adapter *padapter, u32 bitmap, u8 *arg, u8 rssi_level);
-void rtl8723b_fw_try_ap_cmd(struct adapter *padapter, u32 need_ack);
-/* s32 rtl8723b_set_lowpwr_lps_cmd(struct adapter *padapter, u8 enable); */
-void rtl8723b_set_FwPsTuneParam_cmd(struct adapter *padapter);
-void rtl8723b_set_FwMacIdConfig_cmd(struct adapter *padapter, u8 mac_id, u8 raid, u8 bw, u8 sgi, u32 mask);
-void rtl8723b_set_FwMediaStatusRpt_cmd(struct adapter *padapter, u8 mstatus, u8 macid);
-void rtl8723b_download_rsvd_page(struct adapter *padapter, u8 mstatus);
-void rtl8723b_download_BTCoex_AP_mode_rsvd_page(struct adapter *padapter);
-
-void rtl8723b_set_FwPwrModeInIPS_cmd(struct adapter *padapter, u8 cmd_param);
-
-s32 FillH2CCmd8723B(struct adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/rtl8723b_dm.h b/drivers/staging/rtl8723bs/include/rtl8723b_dm.h
deleted file mode 100644
index 50ab7aed079e..000000000000
--- a/drivers/staging/rtl8723bs/include/rtl8723b_dm.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8723B_DM_H__
-#define __RTL8723B_DM_H__
-/*  */
-/*  Description: */
-/*  */
-/*  This file is for 8723B dynamic mechanism only */
-/*  */
-/*  */
-/*  */
-
-/*  */
-/*  structure and define */
-/*  */
-
-/*  */
-/*  function prototype */
-/*  */
-
-void rtl8723b_init_dm_priv(struct adapter *padapter);
-
-void rtl8723b_InitHalDm(struct adapter *padapter);
-void rtl8723b_HalDmWatchDog(struct adapter *padapter);
-void rtl8723b_HalDmWatchDog_in_LPS(struct adapter *padapter);
-void rtl8723b_hal_dm_in_lps(struct adapter *padapter);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/rtl8723b_hal.h b/drivers/staging/rtl8723bs/include/rtl8723b_hal.h
deleted file mode 100644
index c442f01aa585..000000000000
--- a/drivers/staging/rtl8723bs/include/rtl8723b_hal.h
+++ /dev/null
@@ -1,246 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8723B_HAL_H__
-#define __RTL8723B_HAL_H__
-
-#include "hal_data.h"
-
-#include "rtl8723b_spec.h"
-#include "rtl8723b_rf.h"
-#include "rtl8723b_dm.h"
-#include "rtl8723b_recv.h"
-#include "rtl8723b_xmit.h"
-#include "rtl8723b_cmd.h"
-#include "hal_pwr_seq.h"
-#include "Hal8192CPhyReg.h"
-#include "hal_phy_cfg.h"
-
-/*  */
-/* RTL8723B From header */
-/*  */
-
-#define FW_8723B_SIZE          0x8000
-#define FW_8723B_START_ADDRESS 0x1000
-#define FW_8723B_END_ADDRESS   0x1FFF /* 0x5FFF */
-
-#define IS_FW_HEADER_EXIST_8723B(fw_hdr) \
-	((le16_to_cpu(fw_hdr->signature) & 0xFFF0) == 0x5300)
-
-struct rt_firmware {
-	u32 fw_length;
-	u8 *fw_buffer_sz;
-};
-
-/* This structure must be carefully byte-ordered. */
-struct rt_firmware_hdr {
-	/*  8-byte alignment required */
-
-	/*  LONG WORD 0 ---- */
-	__le16 signature;  /* 92C0: test chip; 92C, 88C0: test chip;
-			    * 88C1: MP A-cut; 92C1: MP A-cut
-			    */
-	u8 category;	   /* AP/NIC and USB/PCI */
-	u8 function;	   /* Reserved for different FW function indications,
-			    * for further use when driver needs to download
-			    * different FW in different conditions.
-			    */
-	__le16 version;    /* FW Version */
-	__le16 subversion; /* FW Subversion, default 0x00 */
-
-	/*  LONG WORD 1 ---- */
-	u8 month;  /* Release time Month field */
-	u8 date;   /* Release time Date field */
-	u8 hour;   /* Release time Hour field */
-	u8 minute; /* Release time Minute field */
-
-	__le16 ram_code_size; /* The size of RAM code */
-	__le16 rsvd2;
-
-	/*  LONG WORD 2 ---- */
-	__le32 svn_idx;	/* The SVN entry index */
-	__le32 rsvd3;
-
-	/*  LONG WORD 3 ---- */
-	__le32 rsvd4;
-	__le32 rsvd5;
-};
-
-#define DRIVER_EARLY_INT_TIME_8723B  0x05
-#define BCN_DMA_ATIME_INT_TIME_8723B 0x02
-
-/* REG_TBTT_PROHIBIT (0x0540) - TBTT prohibit hold/setup in 32us units */
-#define TBTT_PROHIBIT_SETUP_8723B 0x04
-#define TBTT_PROHIBIT_HOLD_8723B  0x64
-#define TBTT_PROHIBIT_TIME_8723B \
-	((TBTT_PROHIBIT_HOLD_8723B << 8) | TBTT_PROHIBIT_SETUP_8723B)
-
-/* REG_BCNTCFG (0x0510) - beacon AIFS, CWmin, CWmax (EDCA-like layout) */
-#define BCN_AIFS_8723B   0x0F
-#define BCN_CW_MIN_8723B 0x06
-#define BCN_CW_MAX_8723B 0x06
-#define BCNTCFG_8723B \
-	((BCN_CW_MAX_8723B << 12) | (BCN_CW_MIN_8723B << 8) | BCN_AIFS_8723B)
-
-/* for 8723B */
-/* TX 32K, RX 16K, Page size 128B for TX, 8B for RX */
-#define PAGE_SIZE_TX_8723B 128
-#define PAGE_SIZE_RX_8723B 8
-
-#define RX_DMA_SIZE_8723B          0x4000 /* 16K */
-#define RX_DMA_RESERVED_SIZE_8723B 0x80   /* 128B, reserved for tx report */
-#define RX_DMA_BOUNDARY_8723B \
-	(RX_DMA_SIZE_8723B - RX_DMA_RESERVED_SIZE_8723B - 1)
-
-/* Note: We will divide number of pages equally for each queue other than the
- * public queue!
- */
-
-/* For General Reserved Page Number(Beacon Queue is reserved page) */
-/* Beacon:2, PS-Poll:1, Null Data:1, Qos Null Data:1, BT Qos Null Data:1 */
-#define BCNQ_PAGE_NUM_8723B  0x08
-#define BCNQ1_PAGE_NUM_8723B 0x00
-
-#define MAX_RX_DMA_BUFFER_SIZE_8723B 0x2800 /* RX 10K */
-
-/* For WoWLan, more reserved page */
-/* ARP Rsp:1, RWC:1, GTK Info:1, GTK RSP:2, GTK EXT MEM:2, PNO: 6 */
-#define WOWLAN_PAGE_NUM_8723B 0x00
-
-#define TX_TOTAL_PAGE_NUMBER_8723B     \
-	(0xFF - BCNQ_PAGE_NUM_8723B  - \
-		BCNQ1_PAGE_NUM_8723B - \
-		WOWLAN_PAGE_NUM_8723B)
-#define TX_PAGE_BOUNDARY_8723B (TX_TOTAL_PAGE_NUMBER_8723B + 1)
-
-#define WMM_NORMAL_TX_TOTAL_PAGE_NUMBER_8723B TX_TOTAL_PAGE_NUMBER_8723B
-#define WMM_NORMAL_TX_PAGE_BOUNDARY_8723B \
-	(WMM_NORMAL_TX_TOTAL_PAGE_NUMBER_8723B + 1)
-
-/* For Normal Chip Setting */
-/* (HPQ + LPQ + NPQ + PUBQ) shall be TX_TOTAL_PAGE_NUMBER_8723B */
-#define NORMAL_PAGE_NUM_HPQ_8723B 0x0C
-#define NORMAL_PAGE_NUM_LPQ_8723B 0x02
-#define NORMAL_PAGE_NUM_NPQ_8723B 0x02
-
-/*  Note: For Normal Chip Setting, modify later */
-#define WMM_NORMAL_PAGE_NUM_HPQ_8723B 0x30
-#define WMM_NORMAL_PAGE_NUM_LPQ_8723B 0x20
-#define WMM_NORMAL_PAGE_NUM_NPQ_8723B 0x20
-
-#include "hal_com.h"
-
-#define EFUSE_OOB_PROTECT_BYTES 15
-
-#define HAL_EFUSE_MEMORY
-
-#define HWSET_MAX_SIZE_8723B         512
-#define EFUSE_REAL_CONTENT_LEN_8723B 512
-#define EFUSE_MAP_LEN_8723B          512
-#define EFUSE_MAX_SECTION_8723B      64
-
-#define EFUSE_IC_ID_OFFSET 506 /* For some inferiority IC purpose.
-				* Added by Roger, 2009.09.02.
-				*/
-#define AVAILABLE_EFUSE_ADDR(addr) (addr < EFUSE_REAL_CONTENT_LEN_8723B)
-
-#define EFUSE_ACCESS_ON  0x69 /* For RTL8723 only. */
-#define EFUSE_ACCESS_OFF 0x00 /* For RTL8723 only. */
-
-/*  */
-/* EFUSE for BT definition */
-/*  */
-#define EFUSE_BT_REAL_BANK_CONTENT_LEN 512
-#define EFUSE_BT_REAL_CONTENT_LEN      1536 /* 512*3 */
-#define EFUSE_BT_MAP_LEN               1024 /* 1k bytes */
-#define EFUSE_BT_MAX_SECTION           128  /* 1024/8 */
-
-#define EFUSE_PROTECT_BYTES_BANK 16
-
-/* Description: Determine the types of C2H events that are the same in driver
- * and FW; First constructed by tynli. 2009.10.09.
- */
-enum {
-	C2H_DBG = 0,
-	C2H_TSF = 1,
-	C2H_AP_RPT_RSP = 2,
-	C2H_CCX_TX_RPT = 3, /* The FW notify the report
-			     * of the specific tx packet.
-			     */
-	C2H_BT_RSSI = 4,
-	C2H_BT_OP_MODE = 5,
-	C2H_EXT_RA_RPT = 6,
-	C2H_8723B_BT_INFO = 9,
-	C2H_HW_INFO_EXCH = 10,
-	C2H_8723B_BT_MP_INFO = 11,
-	MAX_C2HEVENT
-};
-
-struct c2h_evt_hdr_t {
-	u8 CmdID;
-	u8 CmdLen;
-	u8 CmdSeq;
-} __packed;
-
-enum { /* tag_Package_Definition */
-	PACKAGE_DEFAULT,
-	PACKAGE_QFN68,
-	PACKAGE_TFBGA90,
-	PACKAGE_TFBGA80,
-	PACKAGE_TFBGA79
-};
-
-/*  rtl8723a_hal_init.c */
-s32 rtl8723b_FirmwareDownload(struct adapter *padapter, bool  bUsedWoWLANFw);
-void rtl8723b_FirmwareSelfReset(struct adapter *padapter);
-void rtl8723b_InitializeFirmwareVars(struct adapter *padapter);
-
-void rtl8723b_InitAntenna_Selection(struct adapter *padapter);
-void rtl8723b_init_default_value(struct adapter *padapter);
-
-s32 rtl8723b_InitLLTTable(struct adapter *padapter);
-
-/*  EFuse */
-u8 GetEEPROMSize8723B(struct adapter *padapter);
-void Hal_InitPGData(struct adapter *padapter, u8 *PROMContent);
-void Hal_EfuseParseIDCode(struct adapter *padapter, u8 *hwinfo);
-void Hal_EfuseParseTxPowerInfo_8723B(struct adapter *padapter, u8 *PROMContent,
-				     bool AutoLoadFail);
-void Hal_EfuseParseBTCoexistInfo_8723B(struct adapter *padapter, u8 *hwinfo,
-				       bool AutoLoadFail);
-void Hal_EfuseParseChnlPlan_8723B(struct adapter *padapter, u8 *hwinfo,
-				  bool AutoLoadFail);
-void Hal_EfuseParseXtal_8723B(struct adapter *padapter, u8 *hwinfo,
-			      bool AutoLoadFail);
-void Hal_EfuseParseThermalMeter_8723B(struct adapter *padapter, u8 *hwinfo,
-				      u8 AutoLoadFail);
-void Hal_EfuseParsePackageType_8723B(struct adapter *padapter, u8 *hwinfo,
-				     bool AutoLoadFail);
-void Hal_EfuseParseVoltage_8723B(struct adapter *padapter, u8 *hwinfo,
-				 bool AutoLoadFail);
-
-void C2HPacketHandler_8723B(struct adapter *padapter, u8 *pbuffer, u16 length);
-
-void SetHwReg8723B(struct adapter *padapter, u8 variable, u8 *val);
-void GetHwReg8723B(struct adapter *padapter, u8 variable, u8 *val);
-u8 GetHalDefVar8723B(struct adapter *padapter, enum hal_def_variable variable,
-		     void *pval);
-
-/*  register */
-void rtl8723b_InitBeaconParameters(struct adapter *padapter);
-void _InitBurstPktLen_8723BS(struct adapter *adapter);
-void _8051Reset8723(struct adapter *padapter);
-
-int FirmwareDownloadBT(struct adapter *adapter, struct rt_firmware *firmware);
-
-void CCX_FwC2HTxRpt_8723b(struct adapter *padapter, u8 *pdata, u8 len);
-s32 c2h_id_filter_ccx_8723b(u8 *buf);
-s32 c2h_handler_8723b(struct adapter *padapter, u8 *pC2hEvent);
-
-void Hal_ReadRFGainOffset(struct adapter *padapter, u8 *hwinfo,
-			  bool AutoLoadFail);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/rtl8723b_recv.h b/drivers/staging/rtl8723bs/include/rtl8723b_recv.h
deleted file mode 100644
index e9ebecb224a6..000000000000
--- a/drivers/staging/rtl8723bs/include/rtl8723b_recv.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8723B_RECV_H__
-#define __RTL8723B_RECV_H__
-
-#include <rtl8192c_recv.h>
-
-struct rxreport_8723b {
-	/* DWORD 0 */
-	u32 pktlen:14;
-	u32 crc32:1;
-	u32 icverr:1;
-	u32 drvinfosize:4;
-	u32 security:3;
-	u32 qos:1;
-	u32 shift:2;
-	u32 physt:1;
-	u32 swdec:1;
-	u32 rsvd0028:2;
-	u32 eor:1;
-	u32 rsvd0031:1;
-
-	/* DWORD 1 */
-	u32 macid:7;
-	u32 rsvd0407:1;
-	u32 tid:4;
-	u32 macid_vld:1;
-	u32 amsdu:1;
-	u32 rxid_match:1;
-	u32 paggr:1;
-	u32 a1fit:4;
-	u32 chkerr:1;  /* 20 */
-	u32 rx_ipv:1;
-	u32 rx_is_tcp_udp:1;
-	u32 chk_vld:1;   /* 23 */
-	u32 pam:1;
-	u32 pwr:1;
-	u32 md:1;
-	u32 mf:1;
-	u32 type:2;
-	u32 mc:1;
-	u32 bc:1;
-
-	/* DWORD 2 */
-	u32 seq:12;
-	u32 frag:4;
-	u32 rx_is_qos:1;
-	u32 rsvd0817:1;
-	u32 wlanhd_iv_len:6;
-	u32 hwrsvd0824:4;
-	u32 c2h_ind:1;
-	u32 rsvd0829:2;
-	u32 fcs_ok:1;
-
-	/* DWORD 3 */
-	u32 rx_rate:7;
-	u32 rsvd1207:3;
-	u32 htc:1;
-	u32 esop:1;
-	u32 bssid_fit:2;
-	u32 rsvd1214:2;
-	u32 dma_agg_num:8;
-	u32 rsvd1224:5;
-	u32 patternmatch:1;
-	u32 unicastwake:1;
-	u32 magicwake:1;
-
-	/* DWORD 4 */
-	u32 splcp:1;	/* Ofdm sgi or cck_splcp */
-	u32 ldpc:1;
-	u32 stbc:1;
-	u32 not_sounding:1;
-	u32 bw:2;
-	u32 rsvd1606:26;
-
-	/* DWORD 5 */
-	u32 tsfl;
-};
-
-s32 rtl8723bs_init_recv_priv(struct adapter *padapter);
-void rtl8723bs_free_recv_priv(struct adapter *padapter);
-
-void rtl8723b_query_rx_phy_status(union recv_frame *prframe, struct phy_stat *pphy_stat);
-void rtl8723b_process_phy_info(struct adapter *padapter, void *prframe);
-
-void rtl8723b_read_chip_version(struct adapter *padapter);
-void rtl8723bs_init_default_value(struct adapter *padapter);
-void rtl8723bs_interface_configure(struct adapter *padapter);
-void rtw_read_adapter_info(struct adapter *padapter);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/rtl8723b_rf.h b/drivers/staging/rtl8723bs/include/rtl8723b_rf.h
deleted file mode 100644
index 525eb2facca0..000000000000
--- a/drivers/staging/rtl8723bs/include/rtl8723b_rf.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8723B_RF_H__
-#define __RTL8723B_RF_H__
-
-
-int	PHY_RF6052_Config8723B(struct adapter *Adapter);
-
-void
-PHY_RF6052SetBandwidth8723B(struct adapter *Adapter,
-	enum channel_width		Bandwidth);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/rtl8723b_spec.h b/drivers/staging/rtl8723bs/include/rtl8723b_spec.h
deleted file mode 100644
index 7f749e32a5b9..000000000000
--- a/drivers/staging/rtl8723bs/include/rtl8723b_spec.h
+++ /dev/null
@@ -1,237 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- *******************************************************************************/
-#ifndef __RTL8723B_SPEC_H__
-#define __RTL8723B_SPEC_H__
-
-#define HAL_NAV_UPPER_UNIT_8723B		128		/*  micro-second */
-
-/*  */
-/*  */
-/*	0x0000h ~ 0x00FFh	System Configuration */
-/*  */
-/*  */
-#define REG_RSV_CTRL_8723B				0x001C	/*  3 Byte */
-#define REG_BT_WIFI_ANTENNA_SWITCH_8723B	0x0038
-#define REG_HSISR_8723B					0x005c
-#define REG_PAD_CTRL1_8723B		0x0064
-#define REG_AFE_CTRL_4_8723B		0x0078
-#define REG_HMEBOX_DBG_0_8723B	0x0088
-#define REG_HMEBOX_DBG_1_8723B	0x008A
-#define REG_HMEBOX_DBG_2_8723B	0x008C
-#define REG_HMEBOX_DBG_3_8723B	0x008E
-#define REG_HIMR0_8723B					0x00B0
-#define REG_HISR0_8723B					0x00B4
-#define REG_HIMR1_8723B					0x00B8
-#define REG_HISR1_8723B					0x00BC
-#define REG_PMC_DBG_CTRL2_8723B			0x00CC
-
-/*  */
-/*  */
-/*	0x0100h ~ 0x01FFh	MACTOP General Configuration */
-/*  */
-/*  */
-#define REG_C2HEVT_CMD_ID_8723B	0x01A0
-#define REG_C2HEVT_CMD_LEN_8723B	0x01AE
-#define REG_WOWLAN_WAKE_REASON 0x01C7
-#define REG_WOWLAN_GTK_DBG1	0x630
-#define REG_WOWLAN_GTK_DBG2	0x634
-
-#define REG_HMEBOX_EXT0_8723B			0x01F0
-#define REG_HMEBOX_EXT1_8723B			0x01F4
-#define REG_HMEBOX_EXT2_8723B			0x01F8
-#define REG_HMEBOX_EXT3_8723B			0x01FC
-
-/*  */
-/*  */
-/*	0x0200h ~ 0x027Fh	TXDMA Configuration */
-/*  */
-/*  */
-
-/*  */
-/*  */
-/*	0x0280h ~ 0x02FFh	RXDMA Configuration */
-/*  */
-/*  */
-#define REG_RXDMA_CONTROL_8723B		0x0286 /*  Control the RX DMA. */
-#define REG_RXDMA_MODE_CTRL_8723B		0x0290
-
-/*  */
-/*  */
-/*	0x0300h ~ 0x03FFh	PCIe */
-/*  */
-/*  */
-#define	REG_PCIE_CTRL_REG_8723B		0x0300
-#define	REG_INT_MIG_8723B				0x0304	/*  Interrupt Migration */
-#define	REG_BCNQ_DESA_8723B			0x0308	/*  TX Beacon Descriptor Address */
-#define	REG_HQ_DESA_8723B				0x0310	/*  TX High Queue Descriptor Address */
-#define	REG_MGQ_DESA_8723B			0x0318	/*  TX Manage Queue Descriptor Address */
-#define	REG_VOQ_DESA_8723B			0x0320	/*  TX VO Queue Descriptor Address */
-#define	REG_VIQ_DESA_8723B				0x0328	/*  TX VI Queue Descriptor Address */
-#define	REG_BEQ_DESA_8723B			0x0330	/*  TX BE Queue Descriptor Address */
-#define	REG_BKQ_DESA_8723B			0x0338	/*  TX BK Queue Descriptor Address */
-#define	REG_RX_DESA_8723B				0x0340	/*  RX Queue	Descriptor Address */
-#define	REG_DBI_WDATA_8723B			0x0348	/*  DBI Write Data */
-#define	REG_DBI_RDATA_8723B			0x034C	/*  DBI Read Data */
-#define	REG_DBI_ADDR_8723B				0x0350	/*  DBI Address */
-#define	REG_DBI_FLAG_8723B				0x0352	/*  DBI Read/Write Flag */
-#define	REG_MDIO_WDATA_8723B		0x0354	/*  MDIO for Write PCIE PHY */
-#define	REG_MDIO_RDATA_8723B			0x0356	/*  MDIO for Reads PCIE PHY */
-#define	REG_MDIO_CTL_8723B			0x0358	/*  MDIO for Control */
-#define	REG_DBG_SEL_8723B				0x0360	/*  Debug Selection Register */
-#define	REG_PCIE_HRPWM_8723B			0x0361	/* PCIe RPWM */
-#define	REG_PCIE_HCPWM_8723B			0x0363	/* PCIe CPWM */
-#define	REG_PCIE_MULTIFET_CTRL_8723B	0x036A	/* PCIE Multi-Fethc Control */
-
-/*  */
-/*  */
-/*	0x0400h ~ 0x047Fh	Protocol Configuration */
-/*  */
-/*  */
-#define REG_TXPKTBUF_BCNQ_BDNY_8723B	0x0424
-#define REG_TXPKTBUF_MGQ_BDNY_8723B	0x0425
-#define REG_TXPKTBUF_WMAC_LBK_BF_HD_8723B	0x045D
-#define REG_AMPDU_BURST_MODE_8723B	0x04BC
-
-/*  */
-/*  */
-/*	0x0500h ~ 0x05FFh	EDCA Configuration */
-/*  */
-/*  */
-#define REG_SECONDARY_CCA_CTRL_8723B	0x0577
-
-/*  */
-/*  */
-/*	0x0600h ~ 0x07FFh	WMAC Configuration */
-/*  */
-/*  */
-
-/*  */
-/*  SDIO Bus Specification */
-/*  */
-
-/*  */
-/*  SDIO CMD Address Mapping */
-/*  */
-
-/*  */
-/*  I/O bus domain (Host) */
-/*  */
-
-/*  */
-/*  SDIO register */
-/*  */
-#define SDIO_REG_HCPWM1_8723B	0x025 /*  HCI Current Power Mode 1 */
-
-/*  */
-/*	8723 Register Bit and Content definition */
-/*  */
-
-/* 2 HSISR */
-/*  interrupt mask which needs to clear */
-#define MASK_HSISR_CLEAR		(HSISR_GPIO12_0_INT |\
-								HSISR_SPS_OCP_INT |\
-								HSISR_RON_INT |\
-								HSISR_PDNINT |\
-								HSISR_GPIO9_INT)
-
-/*  */
-/*  */
-/*	0x0100h ~ 0x01FFh	MACTOP General Configuration */
-/*  */
-/*  */
-
-/*  */
-/*  */
-/*	0x0200h ~ 0x027Fh	TXDMA Configuration */
-/*  */
-/*  */
-
-/*  */
-/*  */
-/*	0x0280h ~ 0x02FFh	RXDMA Configuration */
-/*  */
-/*  */
-#define BIT_USB_RXDMA_AGG_EN	BIT(31)
-#define RXDMA_AGG_MODE_EN		BIT(1)
-
-/*  */
-/*  */
-/*	0x0400h ~ 0x047Fh	Protocol Configuration */
-/*  */
-/*  */
-
-/*  */
-/*        8723B REG_CCK_CHECK						(offset 0x454) */
-/*  */
-#define BIT_BCN_PORT_SEL		BIT(5)
-
-/*  */
-/*  */
-/*	0x0500h ~ 0x05FFh	EDCA Configuration */
-/*  */
-/*  */
-
-/*  */
-/*  */
-/*	0x0600h ~ 0x07FFh	WMAC Configuration */
-/*  */
-/*  */
-#define EEPROM_RF_GAIN_OFFSET			0xC1
-#define EEPROM_RF_GAIN_VAL			0x1F6
-
-/*  */
-/*        8195 IMR/ISR bits						(offset 0xB0,  8bits) */
-/*  */
-#define	IMR_DISABLED_8723B					0
-/*  IMR DW0(0x00B0-00B3) Bit 0-31 */
-#define	IMR_TIMER2_8723B					BIT(31)		/*  Timeout interrupt 2 */
-#define	IMR_TIMER1_8723B					BIT(30)		/*  Timeout interrupt 1 */
-#define	IMR_PSTIMEOUT_8723B				BIT(29)		/*  Power Save Time Out Interrupt */
-#define	IMR_GTINT4_8723B					BIT(28)		/*  When GTIMER4 expires, this bit is set to 1 */
-#define	IMR_GTINT3_8723B					BIT(27)		/*  When GTIMER3 expires, this bit is set to 1 */
-#define	IMR_TXBCN0ERR_8723B				BIT(26)		/*  Transmit Beacon0 Error */
-#define	IMR_TXBCN0OK_8723B				BIT(25)		/*  Transmit Beacon0 OK */
-#define	IMR_TSF_BIT32_TOGGLE_8723B		BIT(24)		/*  TSF Timer BIT32 toggle indication interrupt */
-#define	IMR_BCNDMAINT0_8723B				BIT(20)		/*  Beacon DMA Interrupt 0 */
-#define	IMR_BCNDERR0_8723B				BIT(16)		/*  Beacon Queue DMA OK0 */
-#define	IMR_HSISR_IND_ON_INT_8723B		BIT(15)		/*  HSISR Indicator (HSIMR & HSISR is true, this bit is set to 1) */
-#define	IMR_BCNDMAINT_E_8723B			BIT(14)		/*  Beacon DMA Interrupt Extension for Win7 */
-#define	IMR_ATIMEND_8723B				BIT(12)		/*  CTWidnow End or ATIM Window End */
-#define	IMR_C2HCMD_8723B					BIT(10)		/*  CPU to Host Command INT Status, Write 1 clear */
-#define	IMR_CPWM2_8723B					BIT(9)			/*  CPU power Mode exchange INT Status, Write 1 clear */
-#define	IMR_CPWM_8723B					BIT(8)			/*  CPU power Mode exchange INT Status, Write 1 clear */
-#define	IMR_HIGHDOK_8723B				BIT(7)			/*  High Queue DMA OK */
-#define	IMR_MGNTDOK_8723B				BIT(6)			/*  Management Queue DMA OK */
-#define	IMR_BKDOK_8723B					BIT(5)			/*  AC_BK DMA OK */
-#define	IMR_BEDOK_8723B					BIT(4)			/*  AC_BE DMA OK */
-#define	IMR_VIDOK_8723B					BIT(3)			/*  AC_VI DMA OK */
-#define	IMR_VODOK_8723B					BIT(2)			/*  AC_VO DMA OK */
-#define	IMR_RDU_8723B					BIT(1)			/*  Rx Descriptor Unavailable */
-#define	IMR_ROK_8723B					BIT(0)			/*  Receive DMA OK */
-
-/*  IMR DW1(0x00B4-00B7) Bit 0-31 */
-#define	IMR_BCNDMAINT7_8723B				BIT(27)		/*  Beacon DMA Interrupt 7 */
-#define	IMR_BCNDMAINT6_8723B				BIT(26)		/*  Beacon DMA Interrupt 6 */
-#define	IMR_BCNDMAINT5_8723B				BIT(25)		/*  Beacon DMA Interrupt 5 */
-#define	IMR_BCNDMAINT4_8723B				BIT(24)		/*  Beacon DMA Interrupt 4 */
-#define	IMR_BCNDMAINT3_8723B				BIT(23)		/*  Beacon DMA Interrupt 3 */
-#define	IMR_BCNDMAINT2_8723B				BIT(22)		/*  Beacon DMA Interrupt 2 */
-#define	IMR_BCNDMAINT1_8723B				BIT(21)		/*  Beacon DMA Interrupt 1 */
-#define	IMR_BCNDOK7_8723B					BIT(20)		/*  Beacon Queue DMA OK Interrupt 7 */
-#define	IMR_BCNDOK6_8723B					BIT(19)		/*  Beacon Queue DMA OK Interrupt 6 */
-#define	IMR_BCNDOK5_8723B					BIT(18)		/*  Beacon Queue DMA OK Interrupt 5 */
-#define	IMR_BCNDOK4_8723B					BIT(17)		/*  Beacon Queue DMA OK Interrupt 4 */
-#define	IMR_BCNDOK3_8723B					BIT(16)		/*  Beacon Queue DMA OK Interrupt 3 */
-#define	IMR_BCNDOK2_8723B					BIT(15)		/*  Beacon Queue DMA OK Interrupt 2 */
-#define	IMR_BCNDOK1_8723B					BIT(14)		/*  Beacon Queue DMA OK Interrupt 1 */
-#define	IMR_ATIMEND_E_8723B				BIT(13)		/*  ATIM Window End Extension for Win7 */
-#define	IMR_TXERR_8723B					BIT(11)		/*  Tx Error Flag Interrupt Status, write 1 clear. */
-#define	IMR_RXERR_8723B					BIT(10)		/*  Rx Error Flag INT Status, Write 1 clear */
-#define	IMR_TXFOVW_8723B					BIT(9)			/*  Transmit FIFO Overflow */
-#define	IMR_RXFOVW_8723B					BIT(8)			/*  Receive FIFO Overflow */
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/rtl8723b_xmit.h b/drivers/staging/rtl8723bs/include/rtl8723b_xmit.h
deleted file mode 100644
index ddf868c7899b..000000000000
--- a/drivers/staging/rtl8723bs/include/rtl8723b_xmit.h
+++ /dev/null
@@ -1,421 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8723B_XMIT_H__
-#define __RTL8723B_XMIT_H__
-
-/*  */
-/*  Queue Select Value in TxDesc */
-/*  */
-#define QSLT_BK							0x2/* 0x01 */
-#define QSLT_BE							0x0
-#define QSLT_VI							0x5/* 0x4 */
-#define QSLT_VO							0x7/* 0x6 */
-#define QSLT_BEACON						0x10
-#define QSLT_HIGH						0x11
-#define QSLT_MGNT						0x12
-#define QSLT_CMD						0x13
-
-#define MAX_TID (15)
-
-/* OFFSET 0 */
-#define OFFSET_SZ	0
-#define OFFSET_SHT	16
-#define BMC		BIT(24)
-#define LSG		BIT(26)
-#define FSG		BIT(27)
-#define OWN		BIT(31)
-
-
-/* OFFSET 4 */
-#define PKT_OFFSET_SZ	0
-#define BK		BIT(6)
-#define QSEL_SHT	8
-#define Rate_ID_SHT	16
-#define NAVUSEHDR	BIT(20)
-#define PKT_OFFSET_SHT	26
-#define HWPC		BIT(31)
-
-/* OFFSET 8 */
-#define AGG_EN		BIT(29)
-
-/* OFFSET 12 */
-#define SEQ_SHT		16
-
-/* OFFSET 16 */
-#define QoS		BIT(6)
-#define HW_SEQ_EN	BIT(7)
-#define USERATE		BIT(8)
-#define DISDATAFB	BIT(10)
-#define DATA_SHORT	BIT(24)
-#define DATA_BW		BIT(25)
-
-/* OFFSET 20 */
-#define SGI		BIT(6)
-
-/*  */
-/* defined for TX DESC Operation */
-/*  */
-struct txdesc_8723b {
-	/*  Offset 0 */
-	u32 pktlen:16;
-	u32 offset:8;
-	u32 bmc:1;
-	u32 htc:1;
-	u32 rsvd0026:1;
-	u32 rsvd0027:1;
-	u32 linip:1;
-	u32 noacm:1;
-	u32 gf:1;
-	u32 rsvd0031:1;
-
-	/*  Offset 4 */
-	u32 macid:7;
-	u32 rsvd0407:1;
-	u32 qsel:5;
-	u32 rdg_nav_ext:1;
-	u32 lsig_txop_en:1;
-	u32 pifs:1;
-	u32 rate_id:5;
-	u32 en_desc_id:1;
-	u32 sectype:2;
-	u32 pkt_offset:5; /*  unit: 8 bytes */
-	u32 moredata:1;
-	u32 txop_ps_cap:1;
-	u32 txop_ps_mode:1;
-
-	/*  Offset 8 */
-	u32 p_aid:9;
-	u32 rsvd0809:1;
-	u32 cca_rts:2;
-	u32 agg_en:1;
-	u32 rdg_en:1;
-	u32 null_0:1;
-	u32 null_1:1;
-	u32 bk:1;
-	u32 morefrag:1;
-	u32 raw:1;
-	u32 spe_rpt:1;
-	u32 ampdu_density:3;
-	u32 bt_null:1;
-	u32 g_id:6;
-	u32 rsvd0830:2;
-
-	/*  Offset 12 */
-	u32 wheader_len:4;
-	u32 chk_en:1;
-	u32 early_rate:1;
-	u32 hw_ssn_sel:2;
-	u32 userate:1;
-	u32 disrtsfb:1;
-	u32 disdatafb:1;
-	u32 cts2self:1;
-	u32 rtsen:1;
-	u32 hw_rts_en:1;
-	u32 port_id:1;
-	u32 navusehdr:1;
-	u32 use_max_len:1;
-	u32 max_agg_num:5;
-	u32 ndpa:2;
-	u32 ampdu_max_time:8;
-
-	/*  Offset 16 */
-	u32 datarate:7;
-	u32 try_rate:1;
-	u32 data_ratefb_lmt:5;
-	u32 rts_ratefb_lmt:4;
-	u32 rty_lmt_en:1;
-	u32 data_rt_lmt:6;
-	u32 rtsrate:5;
-	u32 pcts_en:1;
-	u32 pcts_mask_idx:2;
-
-	/*  Offset 20 */
-	u32 data_sc:4;
-	u32 data_short:1;
-	u32 data_bw:2;
-	u32 data_ldpc:1;
-	u32 data_stbc:2;
-	u32 vcs_stbc:2;
-	u32 rts_short:1;
-	u32 rts_sc:4;
-	u32 rsvd2016:7;
-	u32 tx_ant:4;
-	u32 txpwr_offset:3;
-	u32 rsvd2031:1;
-
-	/*  Offset 24 */
-	u32 sw_define:12;
-	u32 mbssid:4;
-	u32 antsel_A:3;
-	u32 antsel_B:3;
-	u32 antsel_C:3;
-	u32 antsel_D:3;
-	u32 rsvd2428:4;
-
-	/*  Offset 28 */
-	u32 checksum:16;
-	u32 rsvd2816:8;
-	u32 usb_txagg_num:8;
-
-	/*  Offset 32 */
-	u32 rts_rc:6;
-	u32 bar_rty_th:2;
-	u32 data_rc:6;
-	u32 rsvd3214:1;
-	u32 en_hwseq:1;
-	u32 nextneadpage:8;
-	u32 tailpage:8;
-
-	/*  Offset 36 */
-	u32 padding_len:11;
-	u32 txbf_path:1;
-	u32 seq:12;
-	u32 final_data_rate:8;
-};
-
-#ifndef __INC_HAL8723BDESC_H
-#define __INC_HAL8723BDESC_H
-
-#define RX_STATUS_DESC_SIZE_8723B		24
-#define RX_DRV_INFO_SIZE_UNIT_8723B 8
-
-
-/* DWORD 0 */
-#define SET_RX_STATUS_DESC_PKT_LEN_8723B(__pRxStatusDesc, __Value)		SET_BITS_TO_LE_4BYTE(__pRxStatusDesc, 0, 14, __Value)
-#define SET_RX_STATUS_DESC_EOR_8723B(__pRxStatusDesc, __Value)		SET_BITS_TO_LE_4BYTE(__pRxStatusDesc, 30, 1, __Value)
-#define SET_RX_STATUS_DESC_OWN_8723B(__pRxStatusDesc, __Value)		SET_BITS_TO_LE_4BYTE(__pRxStatusDesc, 31, 1, __Value)
-
-#define GET_RX_STATUS_DESC_PKT_LEN_8723B(__pRxStatusDesc)			LE_BITS_TO_4BYTE(__pRxStatusDesc, 0, 14)
-#define GET_RX_STATUS_DESC_CRC32_8723B(__pRxStatusDesc)			LE_BITS_TO_4BYTE(__pRxStatusDesc, 14, 1)
-#define GET_RX_STATUS_DESC_ICV_8723B(__pRxStatusDesc)				LE_BITS_TO_4BYTE(__pRxStatusDesc, 15, 1)
-#define GET_RX_STATUS_DESC_DRVINFO_SIZE_8723B(__pRxStatusDesc)		LE_BITS_TO_4BYTE(__pRxStatusDesc, 16, 4)
-#define GET_RX_STATUS_DESC_SECURITY_8723B(__pRxStatusDesc)			LE_BITS_TO_4BYTE(__pRxStatusDesc, 20, 3)
-#define GET_RX_STATUS_DESC_QOS_8723B(__pRxStatusDesc)				LE_BITS_TO_4BYTE(__pRxStatusDesc, 23, 1)
-#define GET_RX_STATUS_DESC_SHIFT_8723B(__pRxStatusDesc)			LE_BITS_TO_4BYTE(__pRxStatusDesc, 24, 2)
-#define GET_RX_STATUS_DESC_PHY_STATUS_8723B(__pRxStatusDesc)			LE_BITS_TO_4BYTE(__pRxStatusDesc, 26, 1)
-#define GET_RX_STATUS_DESC_SWDEC_8723B(__pRxStatusDesc)			LE_BITS_TO_4BYTE(__pRxStatusDesc, 27, 1)
-#define GET_RX_STATUS_DESC_LAST_SEG_8723B(__pRxStatusDesc)			LE_BITS_TO_4BYTE(__pRxStatusDesc, 28, 1)
-#define GET_RX_STATUS_DESC_FIRST_SEG_8723B(__pRxStatusDesc)		LE_BITS_TO_4BYTE(__pRxStatusDesc, 29, 1)
-#define GET_RX_STATUS_DESC_EOR_8723B(__pRxStatusDesc)				LE_BITS_TO_4BYTE(__pRxStatusDesc, 30, 1)
-#define GET_RX_STATUS_DESC_OWN_8723B(__pRxStatusDesc)				LE_BITS_TO_4BYTE(__pRxStatusDesc, 31, 1)
-
-/* DWORD 1 */
-#define GET_RX_STATUS_DESC_MACID_8723B(__pRxDesc)					LE_BITS_TO_4BYTE(__pRxDesc+4, 0, 7)
-#define GET_RX_STATUS_DESC_TID_8723B(__pRxDesc)						LE_BITS_TO_4BYTE(__pRxDesc+4, 8, 4)
-#define GET_RX_STATUS_DESC_AMSDU_8723B(__pRxDesc)					LE_BITS_TO_4BYTE(__pRxDesc+4, 13, 1)
-#define GET_RX_STATUS_DESC_RXID_MATCH_8723B(__pRxDesc)		LE_BITS_TO_4BYTE(__pRxDesc+4, 14, 1)
-#define GET_RX_STATUS_DESC_PAGGR_8723B(__pRxDesc)				LE_BITS_TO_4BYTE(__pRxDesc+4, 15, 1)
-#define GET_RX_STATUS_DESC_A1_FIT_8723B(__pRxDesc)				LE_BITS_TO_4BYTE(__pRxDesc+4, 16, 4)
-#define GET_RX_STATUS_DESC_CHKERR_8723B(__pRxDesc)				LE_BITS_TO_4BYTE(__pRxDesc+4, 20, 1)
-#define GET_RX_STATUS_DESC_IPVER_8723B(__pRxDesc)			LE_BITS_TO_4BYTE(__pRxDesc+4, 21, 1)
-#define GET_RX_STATUS_DESC_IS_TCPUDP__8723B(__pRxDesc)		LE_BITS_TO_4BYTE(__pRxDesc+4, 22, 1)
-#define GET_RX_STATUS_DESC_CHK_VLD_8723B(__pRxDesc)	LE_BITS_TO_4BYTE(__pRxDesc+4, 23, 1)
-#define GET_RX_STATUS_DESC_PAM_8723B(__pRxDesc)				LE_BITS_TO_4BYTE(__pRxDesc+4, 24, 1)
-#define GET_RX_STATUS_DESC_PWR_8723B(__pRxDesc)				LE_BITS_TO_4BYTE(__pRxDesc+4, 25, 1)
-#define GET_RX_STATUS_DESC_MORE_DATA_8723B(__pRxDesc)			LE_BITS_TO_4BYTE(__pRxDesc+4, 26, 1)
-#define GET_RX_STATUS_DESC_MORE_FRAG_8723B(__pRxDesc)			LE_BITS_TO_4BYTE(__pRxDesc+4, 27, 1)
-#define GET_RX_STATUS_DESC_TYPE_8723B(__pRxDesc)			LE_BITS_TO_4BYTE(__pRxDesc+4, 28, 2)
-#define GET_RX_STATUS_DESC_MC_8723B(__pRxDesc)				LE_BITS_TO_4BYTE(__pRxDesc+4, 30, 1)
-#define GET_RX_STATUS_DESC_BC_8723B(__pRxDesc)				LE_BITS_TO_4BYTE(__pRxDesc+4, 31, 1)
-
-/* DWORD 2 */
-#define GET_RX_STATUS_DESC_SEQ_8723B(__pRxStatusDesc)					LE_BITS_TO_4BYTE(__pRxStatusDesc+8, 0, 12)
-#define GET_RX_STATUS_DESC_FRAG_8723B(__pRxStatusDesc)				LE_BITS_TO_4BYTE(__pRxStatusDesc+8, 12, 4)
-#define GET_RX_STATUS_DESC_RX_IS_QOS_8723B(__pRxStatusDesc)		LE_BITS_TO_4BYTE(__pRxStatusDesc+8, 16, 1)
-#define GET_RX_STATUS_DESC_WLANHD_IV_LEN_8723B(__pRxStatusDesc)		LE_BITS_TO_4BYTE(__pRxStatusDesc+8, 18, 6)
-#define GET_RX_STATUS_DESC_RPT_SEL_8723B(__pRxStatusDesc)			LE_BITS_TO_4BYTE(__pRxStatusDesc+8, 28, 1)
-
-/* DWORD 3 */
-#define GET_RX_STATUS_DESC_RX_RATE_8723B(__pRxStatusDesc)				LE_BITS_TO_4BYTE(__pRxStatusDesc+12, 0, 7)
-#define GET_RX_STATUS_DESC_HTC_8723B(__pRxStatusDesc)					LE_BITS_TO_4BYTE(__pRxStatusDesc+12, 10, 1)
-#define GET_RX_STATUS_DESC_EOSP_8723B(__pRxStatusDesc)					LE_BITS_TO_4BYTE(__pRxStatusDesc+12, 11, 1)
-#define GET_RX_STATUS_DESC_BSSID_FIT_8723B(__pRxStatusDesc)		LE_BITS_TO_4BYTE(__pRxStatusDesc+12, 12, 2)
-#define GET_RX_STATUS_DESC_PATTERN_MATCH_8723B(__pRxDesc)			LE_BITS_TO_4BYTE(__pRxDesc+12, 29, 1)
-#define GET_RX_STATUS_DESC_UNICAST_MATCH_8723B(__pRxDesc)			LE_BITS_TO_4BYTE(__pRxDesc+12, 30, 1)
-#define GET_RX_STATUS_DESC_MAGIC_MATCH_8723B(__pRxDesc)			LE_BITS_TO_4BYTE(__pRxDesc+12, 31, 1)
-
-/* DWORD 6 */
-#define GET_RX_STATUS_DESC_SPLCP_8723B(__pRxDesc)			LE_BITS_TO_4BYTE(__pRxDesc+16, 0, 1)
-#define GET_RX_STATUS_DESC_LDPC_8723B(__pRxDesc)			LE_BITS_TO_4BYTE(__pRxDesc+16, 1, 1)
-#define GET_RX_STATUS_DESC_STBC_8723B(__pRxDesc)			LE_BITS_TO_4BYTE(__pRxDesc+16, 2, 1)
-#define GET_RX_STATUS_DESC_BW_8723B(__pRxDesc)			LE_BITS_TO_4BYTE(__pRxDesc+16, 4, 2)
-
-/* DWORD 5 */
-#define GET_RX_STATUS_DESC_TSFL_8723B(__pRxStatusDesc)				LE_BITS_TO_4BYTE(__pRxStatusDesc+20, 0, 32)
-
-#define GET_RX_STATUS_DESC_BUFF_ADDR_8723B(__pRxDesc)		LE_BITS_TO_4BYTE(__pRxDesc+24, 0, 32)
-#define GET_RX_STATUS_DESC_BUFF_ADDR64_8723B(__pRxDesc)			LE_BITS_TO_4BYTE(__pRxDesc+28, 0, 32)
-
-#define SET_RX_STATUS_DESC_BUFF_ADDR_8723B(__pRxDesc, __Value)	SET_BITS_TO_LE_4BYTE(__pRxDesc+24, 0, 32, __Value)
-
-
-/*  Dword 0 */
-#define GET_TX_DESC_OWN_8723B(__pTxDesc)				LE_BITS_TO_4BYTE(__pTxDesc, 31, 1)
-
-#define SET_TX_DESC_PKT_SIZE_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 0, 16, __Value)
-#define SET_TX_DESC_OFFSET_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 16, 8, __Value)
-#define SET_TX_DESC_BMC_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 24, 1, __Value)
-#define SET_TX_DESC_HTC_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 25, 1, __Value)
-#define SET_TX_DESC_LAST_SEG_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 26, 1, __Value)
-#define SET_TX_DESC_FIRST_SEG_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 27, 1, __Value)
-#define SET_TX_DESC_LINIP_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 28, 1, __Value)
-#define SET_TX_DESC_NO_ACM_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 29, 1, __Value)
-#define SET_TX_DESC_GF_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 30, 1, __Value)
-#define SET_TX_DESC_OWN_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc, 31, 1, __Value)
-
-/*  Dword 1 */
-#define SET_TX_DESC_MACID_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 0, 7, __Value)
-#define SET_TX_DESC_QUEUE_SEL_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 8, 5, __Value)
-#define SET_TX_DESC_RDG_NAV_EXT_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 13, 1, __Value)
-#define SET_TX_DESC_LSIG_TXOP_EN_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 14, 1, __Value)
-#define SET_TX_DESC_PIFS_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 15, 1, __Value)
-#define SET_TX_DESC_RATE_ID_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 16, 5, __Value)
-#define SET_TX_DESC_EN_DESC_ID_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 21, 1, __Value)
-#define SET_TX_DESC_SEC_TYPE_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 22, 2, __Value)
-#define SET_TX_DESC_PKT_OFFSET_8723B(__pTxDesc, __Value)		SET_BITS_TO_LE_4BYTE(__pTxDesc+4, 24, 5, __Value)
-
-
-/*  Dword 2 */
-#define SET_TX_DESC_PAID_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 0,  9, __Value)
-#define SET_TX_DESC_CCA_RTS_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 10, 2, __Value)
-#define SET_TX_DESC_AGG_ENABLE_8723B(__pTxDesc, __Value)		SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 12, 1, __Value)
-#define SET_TX_DESC_RDG_ENABLE_8723B(__pTxDesc, __Value)		SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 13, 1, __Value)
-#define SET_TX_DESC_AGG_BREAK_8723B(__pTxDesc, __Value)					SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 16, 1, __Value)
-#define SET_TX_DESC_MORE_FRAG_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 17, 1, __Value)
-#define SET_TX_DESC_RAW_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 18, 1, __Value)
-#define SET_TX_DESC_SPE_RPT_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 19, 1, __Value)
-#define SET_TX_DESC_AMPDU_DENSITY_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 20, 3, __Value)
-#define SET_TX_DESC_BT_INT_8723B(__pTxDesc, __Value)			SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 23, 1, __Value)
-#define SET_TX_DESC_GID_8723B(__pTxDesc, __Value)			SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 24, 6, __Value)
-
-
-/*  Dword 3 */
-#define SET_TX_DESC_WHEADER_LEN_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 0, 4, __Value)
-#define SET_TX_DESC_CHK_EN_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 4, 1, __Value)
-#define SET_TX_DESC_EARLY_MODE_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 5, 1, __Value)
-#define SET_TX_DESC_HWSEQ_SEL_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 6, 2, __Value)
-#define SET_TX_DESC_USE_RATE_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 8, 1, __Value)
-#define SET_TX_DESC_DISABLE_RTS_FB_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 9, 1, __Value)
-#define SET_TX_DESC_DISABLE_FB_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 10, 1, __Value)
-#define SET_TX_DESC_CTS2SELF_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 11, 1, __Value)
-#define SET_TX_DESC_RTS_ENABLE_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 12, 1, __Value)
-#define SET_TX_DESC_HW_RTS_ENABLE_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 13, 1, __Value)
-#define SET_TX_DESC_NAV_USE_HDR_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 15, 1, __Value)
-#define SET_TX_DESC_USE_MAX_LEN_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 16, 1, __Value)
-#define SET_TX_DESC_MAX_AGG_NUM_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 17, 5, __Value)
-#define SET_TX_DESC_NDPA_8723B(__pTxDesc, __Value)		SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 22, 2, __Value)
-#define SET_TX_DESC_AMPDU_MAX_TIME_8723B(__pTxDesc, __Value)		SET_BITS_TO_LE_4BYTE(__pTxDesc+12, 24, 8, __Value)
-
-/*  Dword 4 */
-#define SET_TX_DESC_TX_RATE_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 0, 7, __Value)
-#define SET_TX_DESC_DATA_RATE_FB_LIMIT_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 8, 5, __Value)
-#define SET_TX_DESC_RTS_RATE_FB_LIMIT_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 13, 4, __Value)
-#define SET_TX_DESC_RETRY_LIMIT_ENABLE_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 17, 1, __Value)
-#define SET_TX_DESC_DATA_RETRY_LIMIT_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 18, 6, __Value)
-#define SET_TX_DESC_RTS_RATE_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+16, 24, 5, __Value)
-
-
-/*  Dword 5 */
-#define SET_TX_DESC_DATA_SC_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 0, 4, __Value)
-#define SET_TX_DESC_DATA_SHORT_8723B(__pTxDesc, __Value)	SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 4, 1, __Value)
-#define SET_TX_DESC_DATA_BW_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 5, 2, __Value)
-#define SET_TX_DESC_DATA_LDPC_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 7, 1, __Value)
-#define SET_TX_DESC_DATA_STBC_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 8, 2, __Value)
-#define SET_TX_DESC_CTROL_STBC_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 10, 2, __Value)
-#define SET_TX_DESC_RTS_SHORT_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 12, 1, __Value)
-#define SET_TX_DESC_RTS_SC_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+20, 13, 4, __Value)
-
-
-/*  Dword 6 */
-#define SET_TX_DESC_SW_DEFINE_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 0, 12, __Value)
-#define SET_TX_DESC_ANTSEL_A_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 16, 3, __Value)
-#define SET_TX_DESC_ANTSEL_B_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 19, 3, __Value)
-#define SET_TX_DESC_ANTSEL_C_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 22, 3, __Value)
-#define SET_TX_DESC_ANTSEL_D_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+24, 25, 3, __Value)
-
-/*  Dword 7 */
-#define SET_TX_DESC_TX_DESC_CHECKSUM_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+28, 0, 16, __Value)
-#define SET_TX_DESC_USB_TXAGG_NUM_8723B(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+28, 24, 8, __Value)
-#define SET_TX_DESC_SDIO_TXSEQ_8723B(__pTxDesc, __Value)			SET_BITS_TO_LE_4BYTE(__pTxDesc+28, 16, 8, __Value)
-
-/*  Dword 8 */
-#define SET_TX_DESC_HWSEQ_EN_8723B(__pTxDesc, __Value)			SET_BITS_TO_LE_4BYTE(__pTxDesc+32, 15, 1, __Value)
-
-/*  Dword 9 */
-#define SET_TX_DESC_SEQ_8723B(__pTxDesc, __Value)					SET_BITS_TO_LE_4BYTE(__pTxDesc+36, 12, 12, __Value)
-
-/*  Dword 10 */
-#define SET_TX_DESC_TX_BUFFER_ADDRESS_8723B(__pTxDesc, __Value)		SET_BITS_TO_LE_4BYTE(__pTxDesc+40, 0, 32, __Value)
-#define GET_TX_DESC_TX_BUFFER_ADDRESS_8723B(__pTxDesc)	LE_BITS_TO_4BYTE(__pTxDesc+40, 0, 32)
-
-/*  Dword 11 */
-#define SET_TX_DESC_NEXT_DESC_ADDRESS_8723B(__pTxDesc, __Value)		SET_BITS_TO_LE_4BYTE(__pTxDesc+48, 0, 32, __Value)
-
-
-#define SET_EARLYMODE_PKTNUM_8723B(__pAddr, __Value)					SET_BITS_TO_LE_4BYTE(__pAddr, 0, 4, __Value)
-#define SET_EARLYMODE_LEN0_8723B(__pAddr, __Value)					SET_BITS_TO_LE_4BYTE(__pAddr, 4, 15, __Value)
-#define SET_EARLYMODE_LEN1_1_8723B(__pAddr, __Value)					SET_BITS_TO_LE_4BYTE(__pAddr, 19, 13, __Value)
-#define SET_EARLYMODE_LEN1_2_8723B(__pAddr, __Value)					SET_BITS_TO_LE_4BYTE(__pAddr+4, 0, 2, __Value)
-#define SET_EARLYMODE_LEN2_8723B(__pAddr, __Value)					SET_BITS_TO_LE_4BYTE(__pAddr+4, 2, 15,	__Value)
-#define SET_EARLYMODE_LEN3_8723B(__pAddr, __Value)					SET_BITS_TO_LE_4BYTE(__pAddr+4, 17, 15, __Value)
-
-#endif
-/*  */
-/*  */
-/* 	Rate */
-/*  */
-/*  */
-/*  CCK Rates, TxHT = 0 */
-#define DESC8723B_RATE1M				0x00
-#define DESC8723B_RATE2M				0x01
-#define DESC8723B_RATE5_5M				0x02
-#define DESC8723B_RATE11M				0x03
-
-/*  OFDM Rates, TxHT = 0 */
-#define DESC8723B_RATE6M				0x04
-#define DESC8723B_RATE9M				0x05
-#define DESC8723B_RATE12M				0x06
-#define DESC8723B_RATE18M				0x07
-#define DESC8723B_RATE24M				0x08
-#define DESC8723B_RATE36M				0x09
-#define DESC8723B_RATE48M				0x0a
-#define DESC8723B_RATE54M				0x0b
-
-/*  MCS Rates, TxHT = 1 */
-#define DESC8723B_RATEMCS0				0x0c
-#define DESC8723B_RATEMCS1				0x0d
-#define DESC8723B_RATEMCS2				0x0e
-#define DESC8723B_RATEMCS3				0x0f
-#define DESC8723B_RATEMCS4				0x10
-#define DESC8723B_RATEMCS5				0x11
-#define DESC8723B_RATEMCS6				0x12
-#define DESC8723B_RATEMCS7				0x13
-
-#define		RX_HAL_IS_CCK_RATE_8723B(pDesc)\
-			(GET_RX_STATUS_DESC_RX_RATE_8723B(pDesc) == DESC8723B_RATE1M ||\
-			GET_RX_STATUS_DESC_RX_RATE_8723B(pDesc) == DESC8723B_RATE2M ||\
-			GET_RX_STATUS_DESC_RX_RATE_8723B(pDesc) == DESC8723B_RATE5_5M ||\
-			GET_RX_STATUS_DESC_RX_RATE_8723B(pDesc) == DESC8723B_RATE11M)
-
-
-void rtl8723b_update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem);
-void rtl8723b_fill_fake_txdesc(struct adapter *padapter, u8 *pDesc, u32 BufferLen, u8 IsPsPoll, u8 IsBTQosNull, u8 bDataFrame);
-
-u32 rtl8723bs_hal_init(struct adapter *padapter);
-u32 rtl8723bs_hal_deinit(struct adapter *padapter);
-s32 rtl8723bs_init_xmit_priv(struct adapter *padapter);
-void rtl8723bs_free_xmit_priv(struct adapter *padapter);
-s32 rtl8723bs_hal_xmit(struct adapter *padapter, struct xmit_frame *pxmitframe);
-s32 rtl8723bs_mgnt_xmit(struct adapter *padapter, struct xmit_frame *pmgntframe);
-s32	rtl8723bs_hal_xmitframe_enqueue(struct adapter *padapter, struct xmit_frame *pxmitframe);
-s32 rtl8723bs_xmit_buf_handler(struct adapter *padapter);
-int rtl8723bs_xmit_thread(void *context);
-
-u8 BWMapping_8723B(struct adapter *Adapter, struct pkt_attrib *pattrib);
-u8 SCMapping_8723B(struct adapter *Adapter, struct pkt_attrib *pattrib);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/rtw_ap.h b/drivers/staging/rtl8723bs/include/rtw_ap.h
deleted file mode 100644
index 866aa8386931..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_ap.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTW_AP_H_
-#define __RTW_AP_H_
-
-void init_mlme_ap_info(struct adapter *padapter);
-void free_mlme_ap_info(struct adapter *padapter);
-/* void update_BCNTIM(struct adapter *padapter); */
-void update_beacon(struct adapter *padapter, u8 ie_id, u8 tx);
-void add_ratid(struct adapter *padapter, struct sta_info *psta, u8 rssi_level);
-void expire_timeout_chk(struct adapter *padapter);
-void update_sta_info_apmode(struct adapter *padapter, struct sta_info *psta);
-void start_bss_network(struct adapter *padapter);
-int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf,  int len);
-void rtw_ap_restore_network(struct adapter *padapter);
-void rtw_set_macaddr_acl(struct adapter *padapter, int mode);
-int rtw_acl_add_sta(struct adapter *padapter, u8 *addr);
-void rtw_acl_remove_sta(struct adapter *padapter, u8 *addr);
-
-u8 rtw_ap_set_pairwise_key(struct adapter *padapter, struct sta_info *psta);
-int rtw_ap_set_group_key(struct adapter *padapter, u8 *key, u8 alg, int keyid);
-int rtw_ap_set_wep_key(struct adapter *padapter, u8 *key, u8 keylen, int keyid, u8 set_tx);
-
-void associated_clients_update(struct adapter *padapter, u8 updated);
-void bss_cap_update_on_sta_join(struct adapter *padapter, struct sta_info *psta);
-u8 bss_cap_update_on_sta_leave(struct adapter *padapter, struct sta_info *psta);
-void sta_info_update(struct adapter *padapter, struct sta_info *psta);
-void ap_sta_info_defer_update(struct adapter *padapter, struct sta_info *psta);
-u8 ap_free_sta(struct adapter *padapter, struct sta_info *psta, bool active, u16 reason);
-void rtw_sta_flush(struct adapter *padapter);
-void start_ap_mode(struct adapter *padapter);
-void stop_ap_mode(struct adapter *padapter);
-
-#endif
-void update_bmc_sta(struct adapter *padapter);
diff --git a/drivers/staging/rtl8723bs/include/rtw_btcoex.h b/drivers/staging/rtl8723bs/include/rtw_btcoex.h
deleted file mode 100644
index 765103498789..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_btcoex.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2013 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTW_BTCOEX_H__
-#define __RTW_BTCOEX_H__
-
-#include <drv_types.h>
-
-#define	PACKET_NORMAL			0
-#define	PACKET_DHCP				1
-#define	PACKET_ARP				2
-#define	PACKET_EAPOL			3
-
-void rtw_btcoex_media_status_notify(struct adapter *padapter, u8 media_status);
-void rtw_btcoex_halt_notify(struct adapter *padapter);
-
-/*  ================================================== */
-/*  Below Functions are called by BT-Coex */
-/*  ================================================== */
-void rtw_btcoex_reject_ap_aggregated_packet(struct adapter *padapter, u8 enable);
-void rtw_btcoex_lps_enter(struct adapter *padapter);
-void rtw_btcoex_lps_leave(struct adapter *padapter);
-
-#endif /*  __RTW_BTCOEX_H__ */
diff --git a/drivers/staging/rtl8723bs/include/rtw_byteorder.h b/drivers/staging/rtl8723bs/include/rtw_byteorder.h
deleted file mode 100644
index c3a65f971793..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_byteorder.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef _RTL871X_BYTEORDER_H_
-#define _RTL871X_BYTEORDER_H_
-
-#if defined(__LITTLE_ENDIAN)
-#include <linux/byteorder/little_endian.h>
-#else
-#  include <linux/byteorder/big_endian.h>
-#endif
-
-#endif /* _RTL871X_BYTEORDER_H_ */
diff --git a/drivers/staging/rtl8723bs/include/rtw_cmd.h b/drivers/staging/rtl8723bs/include/rtw_cmd.h
deleted file mode 100644
index 2e791da7e815..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_cmd.h
+++ /dev/null
@@ -1,705 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTW_CMD_H_
-#define __RTW_CMD_H_
-
-#include <linux/completion.h>
-
-#define C2H_MEM_SZ (16*1024)
-
-	#define FREE_CMDOBJ_SZ	128
-
-	#define MAX_CMDSZ	1024
-	#define MAX_RSPSZ	512
-	#define MAX_EVTSZ	1024
-
-	#define CMDBUFF_ALIGN_SZ 512
-
-	struct cmd_obj {
-		struct adapter *padapter;
-		u16 cmdcode;
-		u8 res;
-		u8 *parmbuf;
-		u32 cmdsz;
-		u8 *rsp;
-		u32 rspsz;
-		struct submit_ctx *sctx;
-		struct list_head	list;
-	};
-
-	/* cmd flags */
-	enum {
-		RTW_CMDF_DIRECTLY = BIT(0),
-		RTW_CMDF_WAIT_ACK = BIT(1),
-	};
-
-	struct cmd_priv {
-		struct completion cmd_queue_comp;
-		struct completion terminate_cmdthread_comp;
-		struct __queue	cmd_queue;
-		u8 cmd_seq;
-		u8 *cmd_buf;	/* shall be non-paged, and 4 bytes aligned */
-		u8 *cmd_allocated_buf;
-		u8 *rsp_buf;	/* shall be non-paged, and 4 bytes aligned */
-		u32 cmd_issued_cnt;
-		u32 cmd_done_cnt;
-		u32 rsp_cnt;
-		atomic_t cmdthd_running;
-		/* u8 cmdthd_running; */
-		u8 stop_req;
-		struct adapter *padapter;
-		struct mutex sctx_mutex;
-	};
-
-	struct	evt_priv {
-		struct work_struct c2h_wk;
-		bool c2h_wk_alive;
-		struct rtw_cbuf *c2h_queue;
-		#define C2H_QUEUE_MAX_LEN 10
-
-		atomic_t event_seq;
-		u8 *evt_buf;	/* shall be non-paged, and 4 bytes aligned */
-		u8 *evt_allocated_buf;
-		u32 evt_done_cnt;
-		u8 *c2h_mem;
-		u8 *allocated_c2h_mem;
-	};
-
-#define init_h2fwcmd_w_parm_no_rsp(pcmd, pparm, code) \
-do {\
-	INIT_LIST_HEAD(&pcmd->list);\
-	pcmd->cmdcode = code;\
-	pcmd->parmbuf = (u8 *)(pparm);\
-	pcmd->cmdsz = sizeof(*pparm);\
-	pcmd->rsp = NULL;\
-	pcmd->rspsz = 0;\
-} while (0)
-
-#define init_h2fwcmd_w_parm_no_parm_rsp(pcmd, code) \
-do {\
-	INIT_LIST_HEAD(&pcmd->list);\
-	pcmd->cmdcode = code;\
-	pcmd->parmbuf = NULL;\
-	pcmd->cmdsz = 0;\
-	pcmd->rsp = NULL;\
-	pcmd->rspsz = 0;\
-} while (0)
-
-struct c2h_evt_hdr {
-	u8 id:4;
-	u8 plen:4;
-	u8 seq;
-	u8 payload[];
-};
-
-struct c2h_evt_hdr_88xx {
-	u8 id;
-	u8 seq;
-	u8 payload[12];
-	u8 plen;
-	u8 trigger;
-};
-
-#define c2h_evt_valid(c2h_evt) ((c2h_evt)->id || (c2h_evt)->plen)
-
-int rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *obj);
-extern struct cmd_obj *rtw_dequeue_cmd(struct cmd_priv *pcmdpriv);
-extern void rtw_free_cmd_obj(struct cmd_obj *pcmd);
-
-void rtw_stop_cmd_thread(struct adapter *adapter);
-int rtw_cmd_thread(void *context);
-
-extern void rtw_free_cmd_priv(struct cmd_priv *pcmdpriv);
-
-extern void rtw_free_evt_priv(struct evt_priv *pevtpriv);
-extern void rtw_evt_notify_isr(struct evt_priv *pevtpriv);
-
-enum {
-	NONE_WK_CID,
-	DYNAMIC_CHK_WK_CID,
-	DM_CTRL_WK_CID,
-	PBC_POLLING_WK_CID,
-	POWER_SAVING_CTRL_WK_CID,/* IPS, AUTOSuspend */
-	LPS_CTRL_WK_CID,
-	ANT_SELECT_WK_CID,
-	P2P_PS_WK_CID,
-	P2P_PROTO_WK_CID,
-	CHECK_HIQ_WK_CID,/* for softap mode, check hi queue if empty */
-	INTEl_WIDI_WK_CID,
-	C2H_WK_CID,
-	RTP_TIMER_CFG_WK_CID,
-	RESET_SECURITYPRIV,
-	FREE_ASSOC_RESOURCES,
-	DM_IN_LPS_WK_CID,
-	DM_RA_MSK_WK_CID, /* add for STA update RAMask when bandwidth change. */
-	BEAMFORMING_WK_CID,
-	LPS_CHANGE_DTIM_CID,
-	BTINFO_WK_CID,
-	MAX_WK_CID
-};
-
-enum {
-	LPS_CTRL_SCAN = 0,
-	LPS_CTRL_JOINBSS = 1,
-	LPS_CTRL_CONNECT = 2,
-	LPS_CTRL_DISCONNECT = 3,
-	LPS_CTRL_SPECIAL_PACKET = 4,
-	LPS_CTRL_LEAVE = 5,
-	LPS_CTRL_TRAFFIC_BUSY = 6,
-};
-
-enum {
-	SWSI,
-	HWSI,
-	HWPI,
-};
-
-/*
-Caller Mode: Infra, Ad-HoC
-
-Notes: To join a known BSS.
-
-Command-Event Mode
-
-*/
-
-/*
-Caller Mode: Infra, Ad-Hoc
-
-Notes: To join the specified bss
-
-Command Event Mode
-
-*/
-struct joinbss_parm {
-	struct wlan_bssid_ex network;
-};
-
-/*
-Caller Mode: Infra, Ad-HoC(C)
-
-Notes: To disconnect the current associated BSS
-
-Command Mode
-
-*/
-struct disconnect_parm {
-	u32 deauth_timeout_ms;
-};
-
-/*
-Caller Mode: AP, Ad-HoC(M)
-
-Notes: To create a BSS
-
-Command Mode
-*/
-struct createbss_parm {
-	struct wlan_bssid_ex network;
-};
-
-/*
-Caller Mode: AP, Ad-HoC, Infra
-
-Notes: To set the NIC mode of RTL8711
-
-Command Mode
-
-The definition of mode:
-
-#define IW_MODE_AUTO	0	 Let the driver decides which AP to join
-#define IW_MODE_ADHOC	1	 Single cell network (Ad-Hoc Clients)
-#define IW_MODE_INFRA	2	 Multi cell network, roaming, ..
-#define IW_MODE_MASTER	3	 Synchronisation master or Access Point
-#define IW_MODE_REPEAT	4	 Wireless Repeater (forwarder)
-#define IW_MODE_SECOND	5	 Secondary master/repeater (backup)
-#define IW_MODE_MONITOR	6	 Passive monitor (listen only)
-
-*/
-struct	setopmode_parm {
-	u8 mode;
-	u8 rsvd[3];
-};
-
-/*
-Caller Mode: AP, Ad-HoC, Infra
-
-Notes: To ask RTL8711 performing site-survey
-
-Command-Event Mode
-
-*/
-
-#define RTW_SSID_SCAN_AMOUNT 9 /*  for WEXT_CSCAN_AMOUNT 9 */
-#define RTW_CHANNEL_SCAN_AMOUNT (14+37)
-struct sitesurvey_parm {
-	signed int scan_mode;	/* active: 1, passive: 0 */
-	u8 ssid_num;
-	u8 ch_num;
-	struct ndis_802_11_ssid ssid[RTW_SSID_SCAN_AMOUNT];
-	struct rtw_ieee80211_channel ch[RTW_CHANNEL_SCAN_AMOUNT];
-};
-
-/*
-Caller Mode: Any
-
-Notes: To set the auth type of RTL8711. open/shared/802.1x
-
-Command Mode
-
-*/
-struct setauth_parm {
-	u8 mode;  /* 0: legacy open, 1: legacy shared 2: 802.1x */
-	u8 _1x;   /* 0: PSK, 1: TLS */
-	u8 rsvd[2];
-};
-
-/*
-Caller Mode: Infra
-
-a. algorithm: wep40, wep104, tkip & aes
-b. keytype: grp key/unicast key
-c. key contents
-
-when shared key ==> keyid is the camid
-when 802.1x ==> keyid [0:1] ==> grp key
-when 802.1x ==> keyid > 2 ==> unicast key
-
-*/
-struct setkey_parm {
-	u8 algorithm;	/*  encryption algorithm, could be none, wep40, TKIP, CCMP, wep104 */
-	u8 keyid;
-	u8 grpkey;		/*  1: this is the grpkey for 802.1x. 0: this is the unicast key for 802.1x */
-	u8 set_tx;		/*  1: main tx key for wep. 0: other key. */
-	u8 key[16];	/*  this could be 40 or 104 */
-};
-
-/*
-When in AP or Ad-Hoc mode, this is used to
-allocate an sw/hw entry for a newly associated sta.
-
-Command
-
-when shared key ==> algorithm/keyid
-
-*/
-struct set_stakey_parm {
-	u8 addr[ETH_ALEN];
-	u8 algorithm;
-	u8 keyid;
-	u8 key[16];
-};
-
-struct set_stakey_rsp {
-	u8 addr[ETH_ALEN];
-	u8 keyid;
-	u8 rsvd;
-};
-
-/*
-Caller Ad-Hoc/AP
-
-Command -Rsp(AID == CAMID) mode
-
-This is to force fw to add an sta_data entry per driver's request.
-
-FW will write an cam entry associated with it.
-
-*/
-struct set_assocsta_parm {
-	u8 addr[ETH_ALEN];
-};
-
-struct set_assocsta_rsp {
-	u8 cam_id;
-	u8 rsvd[3];
-};
-
-/*
-	Caller Ad-Hoc/AP
-
-	Command mode
-
-	This is to force fw to del an sta_data entry per driver's request
-
-	FW will invalidate the cam entry associated with it.
-
-*/
-struct del_assocsta_parm {
-	u8 addr[ETH_ALEN];
-};
-
-/*
-Caller Mode: AP/Ad-HoC(M)
-
-Notes: To notify fw that given staid has changed its power state
-
-Command Mode
-
-*/
-struct setstapwrstate_parm {
-	u8 staid;
-	u8 status;
-	u8 hwaddr[6];
-};
-
-/*
-Caller Mode: Any
-
-Notes: To setup the basic rate of RTL8711
-
-Command Mode
-
-*/
-struct	setbasicrate_parm {
-	u8 basicrates[NumRates];
-};
-
-/*
-Caller Mode: Any
-
-Notes: To read the current basic rate
-
-Command-Rsp Mode
-
-*/
-struct getbasicrate_parm {
-	u32 rsvd;
-};
-
-/*
-Caller Mode: Any
-
-Notes: To setup the data rate of RTL8711
-
-Command Mode
-
-*/
-struct setdatarate_parm {
-	u8 mac_id;
-	u8 datarates[NumRates];
-};
-
-/*
-Caller Mode: Any
-
-Notes: To read the current data rate
-
-Command-Rsp Mode
-
-*/
-struct getdatarate_parm {
-	u32 rsvd;
-
-};
-
-/*
-Caller Mode: Any
-AP: AP can use the info for the contents of beacon frame
-Infra: STA can use the info when sitesurveying
-Ad-HoC(M): Like AP
-Ad-HoC(C): Like STA
-
-
-Notes: To set the phy capability of the NIC
-
-Command Mode
-
-*/
-
-struct	setphyinfo_parm {
-	struct regulatory_class class_sets[NUM_REGULATORYS];
-	u8 status;
-};
-
-struct	getphyinfo_parm {
-	u32 rsvd;
-};
-
-/*
-Caller Mode: Any
-
-Notes: To set the channel/modem/band
-This command will be used when channel/modem/band is changed.
-
-Command Mode
-
-*/
-struct	setphy_parm {
-	u8 rfchannel;
-	u8 modem;
-};
-
-/*
-Caller Mode: Any
-
-Notes: To get the current setting of channel/modem/band
-
-Command-Rsp Mode
-
-*/
-struct	getphy_parm {
-	u32 rsvd;
-
-};
-
-struct Tx_Beacon_param {
-	struct wlan_bssid_ex network;
-};
-
-/*
-	Notes: This command is used for H2C/C2H loopback testing
-
-	mac[0] == 0
-	==> CMD mode, return H2C_SUCCESS.
-	The following condition must be true under CMD mode
-		mac[1] == mac[4], mac[2] == mac[3], mac[0]=mac[5]= 0;
-		s0 == 0x1234, s1 == 0xabcd, w0 == 0x78563412, w1 == 0x5aa5def7;
-		s2 == (b1 << 8 | b0);
-
-	mac[0] == 1
-	==> CMD_RSP mode, return H2C_SUCCESS_RSP
-
-	The rsp layout shall be:
-	rsp:			parm:
-		mac[0]  =   mac[5];
-		mac[1]  =   mac[4];
-		mac[2]  =   mac[3];
-		mac[3]  =   mac[2];
-		mac[4]  =   mac[1];
-		mac[5]  =   mac[0];
-		s0		=   s1;
-		s1		=   swap16(s0);
-		w0		=	swap32(w1);
-		b0		=	b1
-		s2		=	s0 + s1
-		b1		=	b0
-		w1		=	w0
-
-	mac[0] ==	2
-	==> CMD_EVENT mode, return	H2C_SUCCESS
-	The event layout shall be:
-	event:			parm:
-		mac[0]  =   mac[5];
-		mac[1]  =   mac[4];
-		mac[2]  =   event's sequence number, starting from 1 to parm's marc[3]
-		mac[3]  =   mac[2];
-		mac[4]  =   mac[1];
-		mac[5]  =   mac[0];
-		s0		=   swap16(s0) - event.mac[2];
-		s1		=   s1 + event.mac[2];
-		w0		=	swap32(w0);
-		b0		=	b1
-		s2		=	s0 + event.mac[2]
-		b1		=	b0
-		w1		=	swap32(w1) - event.mac[2];
-
-		parm->mac[3] is the total event counts that host requested.
-
-
-	event will be the same with the cmd's param.
-
-*/
-
-/*  CMD param Formart for driver extra cmd handler */
-struct drvextra_cmd_parm {
-	int ec_id; /* extra cmd id */
-	int type; /*  Can use this field as the type id or command size */
-	int size; /* buffer size */
-	unsigned char *pbuf;
-};
-
-/*------------------- Below are used for RF/BB tuning ---------------------*/
-
-struct addBaReq_parm {
-	unsigned int tid;
-	u8 addr[ETH_ALEN];
-};
-
-/*H2C Handler index: 46 */
-struct set_ch_parm {
-	u8 ch;
-	u8 bw;
-	u8 ch_offset;
-};
-
-/*H2C Handler index: 59 */
-struct SetChannelPlan_param {
-	u8 channel_plan;
-};
-
-/*H2C Handler index: 61 */
-struct SetChannelSwitch_param {
-	u8 new_ch_no;
-};
-
-/*H2C Handler index: 62 */
-struct TDLSoption_param {
-	u8 addr[ETH_ALEN];
-	u8 option;
-};
-
-/*H2C Handler index: 64 */
-struct RunInThread_param {
-	void (*func)(void *);
-	void *context;
-};
-
-
-/*
-
-Result:
-0x00: success
-0x01: success, and check Response.
-0x02: cmd ignored due to duplicated sequence number
-0x03: cmd dropped due to invalid cmd code
-0x04: reserved.
-
-*/
-
-#define H2C_RSP_OFFSET			512
-
-#define H2C_SUCCESS			0x00
-#define H2C_SUCCESS_RSP			0x01
-#define H2C_DUPLICATED			0x02
-#define H2C_DROPPED			0x03
-#define H2C_PARAMETERS_ERROR		0x04
-#define H2C_REJECTED			0x05
-#define H2C_CMD_OVERFLOW		0x06
-#define H2C_RESERVED			0x07
-
-u8 rtw_sitesurvey_cmd(struct adapter  *padapter, struct ndis_802_11_ssid *ssid, int ssid_num, struct rtw_ieee80211_channel *ch, int ch_num);
-extern u8 rtw_createbss_cmd(struct adapter  *padapter);
-int rtw_startbss_cmd(struct adapter  *padapter, int flags);
-
-struct sta_info;
-extern u8 rtw_setstakey_cmd(struct adapter  *padapter, struct sta_info *sta, u8 unicast_key, bool enqueue);
-extern u8 rtw_clearstakey_cmd(struct adapter *padapter, struct sta_info *sta, u8 enqueue);
-
-extern u8 rtw_joinbss_cmd(struct adapter *padapter, struct wlan_network *pnetwork);
-u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool enqueue);
-extern u8 rtw_setopmode_cmd(struct adapter  *padapter, enum nl80211_iftype networktype, bool enqueue);
-extern u8 rtw_setrfintfs_cmd(struct adapter  *padapter, u8 mode);
-
-extern u8 rtw_gettssi_cmd(struct adapter  *padapter, u8 offset, u8 *pval);
-extern u8 rtw_setfwdig_cmd(struct adapter *padapter, u8 type);
-extern u8 rtw_setfwra_cmd(struct adapter *padapter, u8 type);
-
-extern u8 rtw_addbareq_cmd(struct adapter *padapter, u8 tid, u8 *addr);
-extern u8 rtw_reset_securitypriv_cmd(struct adapter *padapter);
-extern u8 rtw_free_assoc_resources_cmd(struct adapter *padapter);
-extern u8 rtw_dynamic_chk_wk_cmd(struct adapter *adapter);
-
-u8 rtw_lps_ctrl_wk_cmd(struct adapter *padapter, u8 lps_ctrl_type, u8 enqueue);
-u8 rtw_dm_in_lps_wk_cmd(struct adapter *padapter);
-
-u8 rtw_dm_ra_mask_wk_cmd(struct adapter *padapter, u8 *psta);
-
-extern u8 rtw_ps_cmd(struct adapter *padapter);
-
-u8 rtw_chk_hi_queue_cmd(struct adapter *padapter);
-
-extern u8 rtw_c2h_packet_wk_cmd(struct adapter *padapter, u8 *pbuf, u16 length);
-extern u8 rtw_c2h_wk_cmd(struct adapter *padapter, u8 *c2h_evt);
-
-u8 rtw_drvextra_cmd_hdl(struct adapter *padapter, unsigned char *pbuf);
-
-extern void rtw_survey_cmd_callback(struct adapter  *padapter, struct cmd_obj *pcmd);
-extern void rtw_disassoc_cmd_callback(struct adapter  *padapter, struct cmd_obj *pcmd);
-extern void rtw_joinbss_cmd_callback(struct adapter  *padapter, struct cmd_obj *pcmd);
-extern void rtw_createbss_cmd_callback(struct adapter  *padapter, struct cmd_obj *pcmd);
-extern void rtw_getbbrfreg_cmdrsp_callback(struct adapter  *padapter, struct cmd_obj *pcmd);
-
-extern void rtw_setstaKey_cmdrsp_callback(struct adapter  *padapter,  struct cmd_obj *pcmd);
-extern void rtw_setassocsta_cmdrsp_callback(struct adapter  *padapter,  struct cmd_obj *pcmd);
-extern void rtw_getrttbl_cmdrsp_callback(struct adapter  *padapter,  struct cmd_obj *pcmd);
-
-
-struct _cmd_callback {
-	u32 cmd_code;
-	void (*callback)(struct adapter  *padapter, struct cmd_obj *cmd);
-};
-
-enum {
-	READ_MACREG_CMD,	/*0*/
-	WRITE_MACREG_CMD,
-	READ_BBREG_CMD,
-	WRITE_BBREG_CMD,
-	READ_RFREG_CMD,
-	WRITE_RFREG_CMD, /*5*/
-	READ_EEPROM_CMD,
-	WRITE_EEPROM_CMD,
-	READ_EFUSE_CMD,
-	WRITE_EFUSE_CMD,
-
-	READ_CAM_CMD,	/*10*/
-	WRITE_CAM_CMD,
-	SET_BCNITV_CMD,
-	SET_MBIDCFG_CMD,
-	JOIN_BSS_CMD,   /*14*/
-	DISCONNECT_CMD, /*15*/
-	CREATE_BSS_CMD,
-	SET_OP_MODE_CMD,
-	SITE_SURVEY_CMD,  /*18*/
-	SET_AUTH_CMD,
-
-	SET_KEY_CMD,	/*20*/
-	SET_STA_KEY_CMD,
-	SET_ASSOC_STA_CMD,
-	DEL_ASSOC_STA_CMD,
-	SET_STA_PWR_STATE_CMD,
-	SET_BASIC_RATE_CMD, /*25*/
-	GET_BASIC_RATE_CMD,
-	SET_DATA_RATE_CMD,
-	GET_DATA_RATE_CMD,
-	SET_PHY_INFO_CMD,
-
-	GET_PHY_INFO_CMD,	/*30*/
-	SET_PHY_CMD,
-	GET_PHY_CMD,
-	READ_RSSI_CMD,
-	READ_GAIN_CMD,
-	SET_ATIM_CMD, /*35*/
-	SET_PWR_MODE_CMD,
-	JOIN_BSS_RPT_CMD,
-	SET_RA_TABLE_CMD,
-	GET_RA_TABLE_CMD,
-
-	GET_CCX_REPORT_CMD, /*40*/
-	GET_DTM_REPORT_CMD,
-	GET_TX_RATE_STATISTICS_CMD,
-	SET_USB_SUSPEND_CMD,
-	SET_H2C_LBK_CMD,
-	ADD_BA_REQ_CMD, /*45*/
-	SET_CHANNEL_CMD, /*46*/
-	SET_TX_POWER_CMD,
-	SWITCH_ANTENNA_CMD,
-	SET_CRYSTAL_CAP_CMD,
-	SET_SINGLE_CARRIER_TX_CMD, /*50*/
-
-	SET_SINGLE_TONE_TX_CMD, /*51*/
-	SET_CARRIER_SUPPRESSION_TX_CMD,
-	SET_CONTINUOUS_TX_CMD,
-	SWITCH_BANDWIDTH_CMD, /*54*/
-	TX_BEACON_CMD, /*55*/
-
-	SET_MLME_EVT_CMD, /*56*/
-	SET_DRV_EXTRA_CMD, /*57*/
-	SET_H2C_MSG_CMD, /*58*/
-
-	SET_CHANNEL_PLAN_CMD, /*59*/
-
-	SET_CHANNEL_SWITCH_CMD, /*60*/
-	TDLS_CMD, /*61*/
-	CHK_BMC_SLEEPQ_CMD, /*62*/
-
-	RUN_IN_THREAD_CMD, /*63*/
-
-	MAX_H2CCMD
-};
-
-#endif /* __RTW_CMD_H_ */
diff --git a/drivers/staging/rtl8723bs/include/rtw_eeprom.h b/drivers/staging/rtl8723bs/include/rtw_eeprom.h
deleted file mode 100644
index 9b84105af816..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_eeprom.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTW_EEPROM_H__
-#define __RTW_EEPROM_H__
-
-
-#define	RTL8712_EEPROM_ID			0x8712
-/* define	EEPROM_MAX_SIZE			256 */
-
-#define	HWSET_MAX_SIZE_128		128
-#define	HWSET_MAX_SIZE_256		256
-#define	HWSET_MAX_SIZE_512		512
-
-#define	EEPROM_MAX_SIZE			HWSET_MAX_SIZE_512
-
-#define	CLOCK_RATE					50			/* 100us */
-
-/*  EEPROM opcodes */
-#define EEPROM_READ_OPCODE		06
-#define EEPROM_WRITE_OPCODE		05
-#define EEPROM_ERASE_OPCODE		07
-#define EEPROM_EWEN_OPCODE		19      /*  Erase/write enable */
-#define EEPROM_EWDS_OPCODE		16      /*  Erase/write disable */
-
-/* Country codes */
-#define USA							0x555320
-#define EUROPE						0x1 /* temp, should be provided later */
-#define JAPAN						0x2 /* temp, should be provided later */
-
-#define eeprom_cis0_sz	17
-#define eeprom_cis1_sz	50
-
-/*  */
-/*  Customer ID, note that: */
-/*  This variable is initiailzed through EEPROM or registry, */
-/*  however, its definition may be different with that in EEPROM for */
-/*  EEPROM size consideration. So, we have to perform proper translation between them. */
-/*  Besides, CustomerID of registry has precedence of that of EEPROM. */
-/*  defined below. 060703, by rcnjko. */
-/*  */
-enum {
-	RT_CID_DEFAULT = 0,
-	RT_CID_8187_ALPHA0 = 1,
-	RT_CID_8187_SERCOMM_PS = 2,
-	RT_CID_8187_HW_LED = 3,
-	RT_CID_8187_NETGEAR = 4,
-	RT_CID_WHQL = 5,
-	RT_CID_819x_CAMEO  = 6,
-	RT_CID_819x_RUNTOP = 7,
-	RT_CID_819x_Senao = 8,
-	RT_CID_TOSHIBA = 9,	/*  Merge by Jacken, 2008/01/31. */
-	RT_CID_819x_Netcore = 10,
-	RT_CID_Nettronix = 11,
-	RT_CID_DLINK = 12,
-	RT_CID_PRONET = 13,
-	RT_CID_COREGA = 14,
-	RT_CID_CHINA_MOBILE = 15,
-	RT_CID_819x_ALPHA = 16,
-	RT_CID_819x_Sitecom = 17,
-	RT_CID_CCX = 18, /*  It's set under CCX logo test and isn't demanded for CCX functions, but for test behavior like retry limit and tx report. By Bruce, 2009-02-17. */
-	RT_CID_819x_Lenovo = 19,
-	RT_CID_819x_QMI = 20,
-	RT_CID_819x_Edimax_Belkin = 21,
-	RT_CID_819x_Sercomm_Belkin = 22,
-	RT_CID_819x_CAMEO1 = 23,
-	RT_CID_819x_MSI = 24,
-	RT_CID_819x_Acer = 25,
-	RT_CID_819x_AzWave_ASUS = 26,
-	RT_CID_819x_AzWave = 27, /*  For AzWave in PCIe, The ID is AzWave use and not only Asus */
-	RT_CID_819x_HP = 28,
-	RT_CID_819x_WNC_COREGA = 29,
-	RT_CID_819x_Arcadyan_Belkin = 30,
-	RT_CID_819x_SAMSUNG = 31,
-	RT_CID_819x_CLEVO = 32,
-	RT_CID_819x_DELL = 33,
-	RT_CID_819x_PRONETS = 34,
-	RT_CID_819x_Edimax_ASUS = 35,
-	RT_CID_NETGEAR = 36,
-	RT_CID_PLANEX = 37,
-	RT_CID_CC_C = 38,
-	RT_CID_819x_Xavi = 39,
-	RT_CID_LENOVO_CHINA = 40,
-	RT_CID_INTEL_CHINA = 41,
-	RT_CID_TPLINK_HPWR = 42,
-	RT_CID_819x_Sercomm_Netgear = 43,
-	RT_CID_819x_ALPHA_Dlink = 44,/* add by ylb 20121012 for customer led for alpha */
-	RT_CID_WNC_NEC = 45,/* add by page for NEC */
-	RT_CID_DNI_BUFFALO = 46,/* add by page for NEC */
-};
-
-struct eeprom_priv {
-	u8 bautoload_fail_flag;
-	u8 bloadfile_fail_flag;
-	u8 bloadmac_fail_flag;
-	u8 EepromOrEfuse;
-
-	u8 mac_addr[6];	/* PermanentAddress */
-
-	u16 	channel_plan;
-	u16 	CustomerID;
-
-	u8 efuse_eeprom_data[EEPROM_MAX_SIZE]; /* 92C:256bytes, 88E:512bytes, we use union set (512bytes) */
-	u8 adjuseVoltageVal;
-
-	u8 EEPROMRFGainOffset;
-	u8 EEPROMRFGainVal;
-
-	u8 sdio_setting;
-	u32 	ocr;
-	u8 cis0[eeprom_cis0_sz];
-	u8 cis1[eeprom_cis1_sz];
-};
-
-#endif  /* __RTL871X_EEPROM_H__ */
diff --git a/drivers/staging/rtl8723bs/include/rtw_efuse.h b/drivers/staging/rtl8723bs/include/rtw_efuse.h
deleted file mode 100644
index 808ba94a5998..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_efuse.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. */
-
-#ifndef __RTW_EFUSE_H__
-#define __RTW_EFUSE_H__
-
-#define	PGPKT_DATA_SIZE		8
-
-#define	EFUSE_WIFI				0
-#define	EFUSE_BT				1
-
-enum {
-	TYPE_EFUSE_MAX_SECTION				= 0,
-	TYPE_EFUSE_REAL_CONTENT_LEN			= 1,
-	TYPE_AVAILABLE_EFUSE_BYTES_BANK		= 2,
-	TYPE_AVAILABLE_EFUSE_BYTES_TOTAL	= 3,
-	TYPE_EFUSE_MAP_LEN					= 4,
-	TYPE_EFUSE_PROTECT_BYTES_BANK		= 5,
-	TYPE_EFUSE_CONTENT_LEN_BANK			= 6,
-};
-
-#define		EFUSE_MAX_MAP_LEN		512
-
-#define		EFUSE_MAX_HW_SIZE		512
-#define		EFUSE_MAX_SECTION_BASE	16
-
-#define EXT_HEADER(header) ((header & 0x1F) == 0x0F)
-#define ALL_WORDS_DISABLED(wde)	((wde & 0x0F) == 0x0F)
-#define GET_HDR_OFFSET_2_0(header) ((header & 0xE0) >> 5)
-
-#define		EFUSE_REPEAT_THRESHOLD_			3
-
-/*  */
-/*	The following is for BT Efuse definition */
-/*  */
-#define		EFUSE_BT_MAX_MAP_LEN		1024
-#define		EFUSE_MAX_BANK			4
-#define		EFUSE_MAX_BT_BANK		(EFUSE_MAX_BANK-1)
-/*  */
-/*--------------------------Define Parameters-------------------------------*/
-#define		EFUSE_MAX_WORD_UNIT			4
-
-/*------------------------------Define structure----------------------------*/
-struct pgpkt_struct {
-	u8 offset;
-	u8 word_en;
-	u8 data[8];
-	u8 word_cnts;
-};
-
-/*------------------------------Define structure----------------------------*/
-struct efuse_hal {
-	u8 fakeEfuseBank;
-	u32 fakeEfuseUsedBytes;
-	u8 fakeEfuseContent[EFUSE_MAX_HW_SIZE];
-	u8 fakeEfuseInitMap[EFUSE_MAX_MAP_LEN];
-	u8 fakeEfuseModifiedMap[EFUSE_MAX_MAP_LEN];
-
-	u16 BTEfuseUsedBytes;
-	u8 BTEfuseUsedPercentage;
-	u8 BTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE];
-	u8 BTEfuseInitMap[EFUSE_BT_MAX_MAP_LEN];
-	u8 BTEfuseModifiedMap[EFUSE_BT_MAX_MAP_LEN];
-
-	u16 fakeBTEfuseUsedBytes;
-	u8 fakeBTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE];
-	u8 fakeBTEfuseInitMap[EFUSE_BT_MAX_MAP_LEN];
-	u8 fakeBTEfuseModifiedMap[EFUSE_BT_MAX_MAP_LEN];
-};
-
-u8 rtw_efuse_calculate_word_counts(u8 word_en);
-u8 rtw_efuse_one_byte_read(struct adapter *padapter, u16 addr, u8 *data);
-
-u8 rtw_efuse_read_1_byte(struct adapter *padapter, u16 Address);
-void rtw_efuse_shadow_map_update(struct adapter *padapter, u8 efuseType);
-void rtw_efuse_shadow_read(struct adapter *padapter, u8 Type, u16 Offset, u32 *Value);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/rtw_event.h b/drivers/staging/rtl8723bs/include/rtw_event.h
deleted file mode 100644
index e5cb46c2a731..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_event.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef _RTW_EVENT_H_
-#define _RTW_EVENT_H_
-
-/*
-Used to report a bss has been scanned
-
-*/
-struct survey_event	{
-	struct wlan_bssid_ex bss;
-};
-
-/*
-Used to report that the requested site survey has been done.
-
-bss_cnt indicates the number of bss that has been reported.
-
-
-*/
-struct surveydone_event {
-	unsigned int	bss_cnt;
-
-};
-
-/*
-Used to report the link result of joining the given bss
-
-
-join_res:
--1: authentication fail
--2: association fail
-> 0: TID
-
-*/
-struct joinbss_event {
-	struct	wlan_network	network;
-};
-
-/*
-Used to report a given STA has joinned the created BSS.
-It is used in AP/Ad-HoC(M) mode.
-
-
-*/
-struct stassoc_event {
-	unsigned char macaddr[6];
-	unsigned char rsvd[2];
-	int    cam_id;
-
-};
-
-struct stadel_event {
- unsigned char macaddr[6];
- unsigned char rsvd[2]; /* for reason */
- int mac_id;
-};
-
-struct wmm_event {
-	unsigned char wmm;
-};
-
-struct fwevent {
-	u32 parmsize;
-	void (*event_callback)(struct adapter *dev, u8 *pbuf);
-};
-
-
-#define C2HEVENT_SZ			32
-
-struct event_node {
-	unsigned char *node;
-	unsigned char evt_code;
-	unsigned short evt_sz;
-	volatile int	*caller_ff_tail;
-	int	caller_ff_sz;
-};
-
-#define NETWORK_QUEUE_SZ	4
-
-struct network_queue {
-	volatile int	head;
-	volatile int	tail;
-	struct wlan_bssid_ex networks[NETWORK_QUEUE_SZ];
-};
-
-
-#endif /*  _WLANEVENT_H_ */
diff --git a/drivers/staging/rtl8723bs/include/rtw_ht.h b/drivers/staging/rtl8723bs/include/rtw_ht.h
deleted file mode 100644
index da3efba7112a..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_ht.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef _RTW_HT_H_
-#define _RTW_HT_H_
-
-
-struct ht_priv {
-	u8 ht_option;
-	u8 ampdu_enable;/* for enable Tx A-MPDU */
-	u8 tx_amsdu_enable;/* for enable Tx A-MSDU */
-	u8 bss_coexist;/* for 20/40 Bss coexist */
-
-	/* u8 baddbareq_issued[16]; */
-	u32 tx_amsdu_maxlen; /*  1: 8k, 0:4k ; default:8k, for tx */
-	u32 rx_ampdu_maxlen; /* for rx reordering ctrl win_sz, updated when join_callback. */
-
-	u8 rx_ampdu_min_spacing;
-
-	u8 ch_offset;/* PRIME_CHNL_OFFSET */
-	u8 sgi_20m;
-	u8 sgi_40m;
-
-	/* for processing Tx A-MPDU */
-	u8 agg_enable_bitmap;
-	/* u8 ADDBA_retry_count; */
-	u8 candidate_tid_bitmap;
-
-	u8 ldpc_cap;
-	u8 stbc_cap;
-	u8 beamform_cap;
-
-	struct ieee80211_ht_cap ht_cap;
-
-};
-
-enum {
-	HT_AGG_SIZE_8K = 0,
-	HT_AGG_SIZE_16K = 1,
-	HT_AGG_SIZE_32K = 2,
-	HT_AGG_SIZE_64K = 3,
-};
-
-enum {
-	RT_HT_CAP_USE_TURBO_AGGR = 0x01,
-	RT_HT_CAP_USE_LONG_PREAMBLE = 0x02,
-	RT_HT_CAP_USE_AMPDU = 0x04,
-	RT_HT_CAP_USE_WOW = 0x8,
-	RT_HT_CAP_USE_SOFTAP = 0x10,
-	RT_HT_CAP_USE_92SE = 0x20,
-	RT_HT_CAP_USE_88C_92C = 0x40,
-	RT_HT_CAP_USE_AP_CLIENT_MODE = 0x80,	/*  AP team request to reserve this bit, by Emily */
-};
-
-enum {
-	RT_HT_CAP_USE_VIDEO_CLIENT = 0x01,
-	RT_HT_CAP_USE_JAGUAR_BCUT = 0x02,
-	RT_HT_CAP_USE_JAGUAR_CCUT = 0x04,
-};
-
-#define	LDPC_HT_ENABLE_RX			BIT(0)
-#define	LDPC_HT_ENABLE_TX			BIT(1)
-#define	LDPC_HT_CAP_TX				BIT(3)
-
-#define	STBC_HT_ENABLE_RX			BIT(0)
-#define	STBC_HT_ENABLE_TX			BIT(1)
-#define	STBC_HT_CAP_TX				BIT(3)
-
-#define	BEAMFORMING_HT_BEAMFORMER_ENABLE	BIT(0)	/*  Declare our NIC supports beamformer */
-#define	BEAMFORMING_HT_BEAMFORMEE_ENABLE	BIT(1)	/*  Declare our NIC supports beamformee */
-
-/*  20/40 BSS Coexist */
-#define SET_EXT_CAPABILITY_ELE_BSS_COEXIST(_pEleStart, _val)			SET_BITS_TO_LE_1BYTE((_pEleStart), 0, 1, _val)
-
-#define GET_HT_CAPABILITY_ELE_LDPC_CAP(_pEleStart)				LE_BITS_TO_1BYTE(_pEleStart, 0, 1)
-#define GET_HT_CAPABILITY_ELE_TX_STBC(_pEleStart)					LE_BITS_TO_1BYTE(_pEleStart, 7, 1)
-
-#define GET_HT_CAPABILITY_ELE_RX_STBC(_pEleStart)					LE_BITS_TO_1BYTE((_pEleStart)+1, 0, 2)
-
-#endif	/* _RTL871X_HT_H_ */
diff --git a/drivers/staging/rtl8723bs/include/rtw_io.h b/drivers/staging/rtl8723bs/include/rtw_io.h
deleted file mode 100644
index 3c99a2bc19bd..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_io.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef _RTW_IO_H_
-#define _RTW_IO_H_
-
-struct intf_hdl;
-
-struct _io_ops {
-		u8 (*_read8)(struct intf_hdl *pintfhdl, u32 addr);
-		u16 (*_read16)(struct intf_hdl *pintfhdl, u32 addr);
-		u32 (*_read32)(struct intf_hdl *pintfhdl, u32 addr);
-
-		int (*_write8)(struct intf_hdl *pintfhdl, u32 addr, u8 val);
-		int (*_write16)(struct intf_hdl *pintfhdl, u32 addr, u16 val);
-		int (*_write32)(struct intf_hdl *pintfhdl, u32 addr, u32 val);
-
-		u32 (*_write_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem);
-};
-
-struct	intf_hdl {
-	struct adapter *padapter;
-	struct dvobj_priv *pintf_dev;/* 	pointer to &(padapter->dvobjpriv); */
-
-	struct _io_ops	io_ops;
-};
-
-#define SD_IO_TRY_CNT (8)
-#define MAX_CONTINUAL_IO_ERR SD_IO_TRY_CNT
-
-int rtw_inc_and_chk_continual_io_error(struct dvobj_priv *dvobj);
-void rtw_reset_continual_io_error(struct dvobj_priv *dvobj);
-
-struct io_priv {
-
-	struct adapter *padapter;
-
-	struct intf_hdl intf;
-
-};
-
-extern u8 rtw_read8(struct adapter *adapter, u32 addr);
-extern u16 rtw_read16(struct adapter *adapter, u32 addr);
-extern u32 rtw_read32(struct adapter *adapter, u32 addr);
-
-extern int rtw_write8(struct adapter *adapter, u32 addr, u8 val);
-extern int rtw_write16(struct adapter *adapter, u32 addr, u16 val);
-extern int rtw_write32(struct adapter *adapter, u32 addr, u32 val);
-
-extern u32 rtw_write_port(struct adapter *adapter, u32 addr, u32 cnt, u8 *pmem);
-
-int rtw_init_io_priv(struct adapter *padapter, void (*set_intf_ops)(struct adapter *padapter, struct _io_ops *pops));
-
-#endif	/* _RTL8711_IO_H_ */
diff --git a/drivers/staging/rtl8723bs/include/rtw_ioctl_set.h b/drivers/staging/rtl8723bs/include/rtw_ioctl_set.h
deleted file mode 100644
index 768e4868ecfd..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_ioctl_set.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTW_IOCTL_SET_H_
-#define __RTW_IOCTL_SET_H_
-
-typedef u8 NDIS_802_11_PMKID_VALUE[16];
-
-u8 rtw_set_802_11_authentication_mode(struct adapter *pdapter, enum ndis_802_11_authentication_mode authmode);
-u8 rtw_set_802_11_add_wep(struct adapter *padapter, struct ndis_802_11_wep *wep);
-u8 rtw_set_802_11_disassociate(struct adapter *padapter);
-u8 rtw_set_802_11_bssid_list_scan(struct adapter *padapter, struct ndis_802_11_ssid *pssid, int ssid_max_num);
-u8 rtw_set_802_11_infrastructure_mode(struct adapter *padapter, enum nl80211_iftype networktype);
-u8 rtw_set_802_11_ssid(struct adapter *padapter, struct ndis_802_11_ssid *ssid);
-u8 rtw_set_802_11_connect(struct adapter *padapter, u8 *bssid, struct ndis_802_11_ssid *ssid);
-
-u8 rtw_validate_bssid(u8 *bssid);
-u8 rtw_validate_ssid(struct ndis_802_11_ssid *ssid);
-
-u8 rtw_do_join(struct adapter *padapter);
-
-u16 rtw_get_cur_max_rate(struct adapter *adapter);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/rtw_mlme.h b/drivers/staging/rtl8723bs/include/rtw_mlme.h
deleted file mode 100644
index 6faa13535b62..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_mlme.h
+++ /dev/null
@@ -1,397 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTW_MLME_H_
-#define __RTW_MLME_H_
-
-
-#define	MAX_BSS_CNT	128
-/* define   MAX_JOIN_TIMEOUT	2000 */
-/* define   MAX_JOIN_TIMEOUT	2500 */
-#define   MAX_JOIN_TIMEOUT	6500
-
-/* Commented by Albert 20101105 */
-/* Increase the scanning timeout because of increasing the SURVEY_TO value. */
-
-#define		SCANNING_TIMEOUT	8000
-
-#define	SCANQUEUE_LIFETIME 20000 /*  20sec, unit:msec */
-
-#define WIFI_NULL_STATE		0x00000000
-#define WIFI_ASOC_STATE		0x00000001		/*  Under Linked state... */
-#define WIFI_SLEEP_STATE	0x00000004
-#define WIFI_STATION_STATE	0x00000008
-#define	WIFI_AP_STATE			0x00000010
-#define	WIFI_ADHOC_STATE		0x00000020
-#define WIFI_ADHOC_MASTER_STATE	0x00000040
-#define WIFI_UNDER_LINKING	0x00000080
-
-#define WIFI_UNDER_WPS			0x00000100
-#define	WIFI_STA_ALIVE_CHK_STATE	0x00000400
-#define	WIFI_SITE_MONITOR			0x00000800		/* to indicate the station is under site surveying */
-
-/* ifdef UNDER_MPTEST */
-#define	WIFI_MP_STATE							0x00010000
-/* endif */
-
-/* define _FW_UNDER_CMD		WIFI_UNDER_CMD */
-#define _FW_UNDER_LINKING	WIFI_UNDER_LINKING
-#define _FW_LINKED			WIFI_ASOC_STATE
-#define _FW_UNDER_SURVEY	WIFI_SITE_MONITOR
-
-
-enum {
-	dot11_auth_algrthm_open = 0,
-	dot11_auth_algrthm_shared,
-	dot11_auth_algrthm_8021x,
-	dot11_auth_algrthm_auto,
-	dot11_auth_algrthm_wapi,
-	dot11_auth_algrthm_maxnum
-};
-
-/* Scan type including active and passive scan. */
-enum rt_scan_type {
-	SCAN_PASSIVE,
-	SCAN_ACTIVE,
-	SCAN_MIX,
-};
-
-enum {
-	GHZ24_50 = 0,
-	GHZ_50,
-	GHZ_24,
-	GHZ_MAX,
-};
-
-/*
- * There are several "locks" in mlme_priv,
- * since mlme_priv is a shared resource between many threads,
- * like ISR/Call-Back functions, the OID handlers, and even timer functions.
- *
- * Each struct __queue has its own locks, already.
- * Other items in mlme_priv are protected by mlme_priv.lock, while items in
- * xmit_priv are protected by xmit_priv.lock.
- *
- * To avoid possible dead lock, any thread trying to modifying mlme_priv
- * SHALL not lock up more than one locks at a time!
- *
- * The only exception is that queue functions which take the __queue.lock
- * may be called with the xmit_priv.lock held. In this case the order
- * MUST always be first lock xmit_priv.lock and then call any queue functions
- * which take __queue.lock.
- */
-
-struct sitesurvey_ctrl {
-	u64	last_tx_pkts;
-	uint	last_rx_pkts;
-	signed int	traffic_busy;
-	struct timer_list	sitesurvey_ctrl_timer;
-};
-
-struct rt_link_detect_t {
-	u32			num_tx_ok_in_period;
-	u32			num_rx_ok_in_period;
-	u32			num_rx_unicast_ok_in_period;
-	bool			busy_traffic;
-	bool			tx_busy_traffic;
-	bool			rx_busy_traffic;
-	/* For interrupt migration purpose. */
-	bool			higher_busy_traffic;
-	/* We may disable Tx interrupt according as Rx traffic. */
-	bool			higher_busy_rx_traffic;
-	/* We may disable Tx interrupt according as Tx traffic. */
-	bool			higher_busy_tx_traffic;
-	u8			traffic_transition_count;
-	u32			low_power_transition_count;
-};
-
-/* used for mlme_priv.roam_flags */
-enum {
-	RTW_ROAM_ON_EXPIRED = BIT(0),
-	RTW_ROAM_ON_RESUME = BIT(1),
-	RTW_ROAM_ACTIVE = BIT(2),
-};
-
-struct mlme_priv {
-
-	spinlock_t	lock;
-	signed int	fw_state;	/* shall we protect this variable? maybe not necessarily... */
-	u8 bScanInProcess;
-	u8 to_join; /* flag */
-
-	u8 to_roam; /* roaming trying times */
-	struct wlan_network *roam_network; /* the target of active roam */
-	u8 roam_flags;
-	u8 roam_rssi_diff_th; /* rssi difference threshold for active scan candidate selection */
-	u32 roam_scan_int_ms; /* scan interval for active roam */
-	u32 roam_scanr_exp_ms; /* scan result expire time in ms  for roam */
-	u8 roam_tgt_addr[ETH_ALEN]; /* request to roam to specific target without other consideration */
-
-	u8 *nic_hdl;
-
-	u8 not_indic_disco;
-	struct list_head		*pscanned;
-	struct __queue	free_bss_pool;
-	struct __queue	scanned_queue;
-	u8 *free_bss_buf;
-
-	struct ndis_802_11_ssid	assoc_ssid;
-	u8 assoc_bssid[6];
-
-	struct wlan_network	cur_network;
-	struct wlan_network *cur_network_scanned;
-
-	/* uint wireless_mode; no used, remove it */
-
-	u32 auto_scan_int_ms;
-
-	struct timer_list assoc_timer;
-
-	uint assoc_by_bssid;
-	uint assoc_by_rssi;
-
-	struct timer_list scan_to_timer; /*  driver itself handles scan_timeout status. */
-	unsigned long scan_start_time; /*  used to evaluate the time spent in scanning */
-
-	struct timer_list set_scan_deny_timer;
-	atomic_t set_scan_deny; /* 0: allowed, 1: deny */
-
-	struct qos_priv qospriv;
-
-	/* Number of non-HT AP/stations */
-	int num_sta_no_ht;
-
-	/* Number of HT AP/stations 20 MHz */
-	/* int num_sta_ht_20mhz; */
-
-
-	int num_FortyMHzIntolerant;
-
-	struct ht_priv htpriv;
-
-	struct rt_link_detect_t	link_detect_info;
-	struct timer_list	dynamic_chk_timer; /* dynamic/periodic check timer */
-
-	u8 acm_mask; /*  for wmm acm mask */
-	u8 ChannelPlan;
-	enum rt_scan_type	scan_mode; /*  active: 1, passive: 0 */
-
-	u8 *wps_probe_req_ie;
-	u32 wps_probe_req_ie_len;
-
-	/* Number of associated Non-ERP stations (i.e., stations using 802.11b
-	 * in 802.11g BSS)
-	 */
-	int num_sta_non_erp;
-
-	/* Number of associated stations that do not support Short Slot Time */
-	int num_sta_no_short_slot_time;
-
-	/* Number of associated stations that do not support Short Preamble */
-	int num_sta_no_short_preamble;
-
-	int olbc; /* Overlapping Legacy BSS Condition */
-
-	/* Number of HT associated stations that do not support greenfield */
-	int num_sta_ht_no_gf;
-
-	/* Number of associated non-HT stations */
-	/* int num_sta_no_ht; */
-
-	/* Number of HT associated stations 20 MHz */
-	int num_sta_ht_20mhz;
-
-	/* Overlapping BSS information */
-	int olbc_ht;
-
-	u16 ht_op_mode;
-
-	u8 *assoc_req;
-	u32 assoc_req_len;
-	u8 *assoc_rsp;
-	u32 assoc_rsp_len;
-
-	u8 *wps_beacon_ie;
-	/* u8 *wps_probe_req_ie; */
-	u8 *wps_probe_resp_ie;
-	u8 *wps_assoc_resp_ie; /* this IE could include p2p ie / wfd ie */
-
-	u32 wps_beacon_ie_len;
-	/* u32 wps_probe_req_ie_len; */
-	u32 wps_probe_resp_ie_len;
-	u32 wps_assoc_resp_ie_len; /* this IE len could include p2p ie / wfd ie */
-
-	u8 *p2p_beacon_ie;
-	u8 *p2p_probe_req_ie;
-	u8 *p2p_probe_resp_ie;
-	u8 *p2p_go_probe_resp_ie; /* for GO */
-	u8 *p2p_assoc_req_ie;
-
-	u32 p2p_beacon_ie_len;
-	u32 p2p_probe_req_ie_len;
-	u32 p2p_probe_resp_ie_len;
-	u32 p2p_go_probe_resp_ie_len; /* for GO */
-	u32 p2p_assoc_req_ie_len;
-
-	spinlock_t	bcn_update_lock;
-	u8 update_bcn;
-
-	u8 NumOfBcnInfoChkFail;
-	unsigned long	timeBcnInfoChkStart;
-};
-
-void rtw_mlme_reset_auto_scan_int(struct adapter *adapter);
-
-struct hostapd_priv {
-	struct adapter *padapter;
-};
-
-extern int hostapd_mode_init(struct adapter *padapter);
-extern void hostapd_mode_unload(struct adapter *padapter);
-
-extern void rtw_joinbss_event_prehandle(struct adapter *adapter, u8 *pbuf);
-extern void rtw_survey_event_callback(struct adapter *adapter, u8 *pbuf);
-extern void rtw_surveydone_event_callback(struct adapter *adapter, u8 *pbuf);
-extern void rtw_joinbss_event_callback(struct adapter *adapter, u8 *pbuf);
-extern void rtw_stassoc_event_callback(struct adapter *adapter, u8 *pbuf);
-extern void rtw_stadel_event_callback(struct adapter *adapter, u8 *pbuf);
-extern void rtw_cpwm_event_callback(struct adapter *adapter, u8 *pbuf);
-extern void rtw_wmm_event_callback(struct adapter *padapter, u8 *pbuf);
-
-extern void rtw_join_timeout_handler(struct timer_list *t);
-extern void _rtw_scan_timeout_handler(struct timer_list *t);
-
-int event_thread(void *context);
-
-extern void rtw_free_network_queue(struct adapter *adapter, u8 isfreeall);
-extern int rtw_init_mlme_priv(struct adapter *adapter);/*  (struct mlme_priv *pmlmepriv); */
-
-extern void rtw_free_mlme_priv(struct mlme_priv *pmlmepriv);
-
-
-extern signed int rtw_select_and_join_from_scanned_queue(struct mlme_priv *pmlmepriv);
-extern signed int rtw_set_key(struct adapter *adapter, struct security_priv *psecuritypriv, signed int keyid, u8 set_tx, bool enqueue);
-extern signed int rtw_set_auth(struct adapter *adapter, struct security_priv *psecuritypriv);
-
-static inline u8 *get_bssid(struct mlme_priv *pmlmepriv)
-{	/* if sta_mode:pmlmepriv->cur_network.network.mac_address => bssid */
-	/* if adhoc_mode:pmlmepriv->cur_network.network.mac_address => ibss mac address */
-	return pmlmepriv->cur_network.network.mac_address;
-}
-
-static inline signed int check_fwstate(struct mlme_priv *pmlmepriv, signed int state)
-{
-	if (pmlmepriv->fw_state & state)
-		return true;
-
-	return false;
-}
-
-static inline signed int get_fwstate(struct mlme_priv *pmlmepriv)
-{
-	return pmlmepriv->fw_state;
-}
-
-/*
- * No Limit on the calling context,
- * therefore set it to be the critical section...
- *
- * ### NOTE:#### (!!!!)
- * MUST TAKE CARE THAT BEFORE CALLING THIS FUNC, YOU SHOULD HAVE LOCKED pmlmepriv->lock
- */
-static inline void set_fwstate(struct mlme_priv *pmlmepriv, signed int state)
-{
-	pmlmepriv->fw_state |= state;
-	/* FOR HW integration */
-	if (state == _FW_UNDER_SURVEY)
-		pmlmepriv->bScanInProcess = true;
-}
-
-static inline void _clr_fwstate_(struct mlme_priv *pmlmepriv, signed int state)
-{
-	pmlmepriv->fw_state &= ~state;
-	/* FOR HW integration */
-	if (state == _FW_UNDER_SURVEY)
-		pmlmepriv->bScanInProcess = false;
-}
-
-extern u16 rtw_get_capability(struct wlan_bssid_ex *bss);
-extern void rtw_update_scanned_network(struct adapter *adapter, struct wlan_bssid_ex *target);
-extern void rtw_disconnect_hdl_under_linked(struct adapter *adapter, struct sta_info *psta, u8 free_assoc);
-extern void rtw_generate_random_ibss(u8 *pibss);
-extern struct wlan_network *rtw_find_network(struct __queue *scanned_queue, u8 *addr);
-extern struct wlan_network *rtw_get_oldest_wlan_network(struct __queue *scanned_queue);
-struct wlan_network *_rtw_find_same_network(struct __queue *scanned_queue, struct wlan_network *network);
-
-extern void rtw_free_assoc_resources(struct adapter *adapter, int lock_scanned_queue);
-extern void rtw_indicate_disconnect(struct adapter *adapter);
-extern void rtw_indicate_connect(struct adapter *adapter);
-void rtw_indicate_scan_done(struct adapter *padapter, bool aborted);
-void rtw_scan_abort(struct adapter *adapter);
-
-extern int rtw_restruct_sec_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie, uint in_len);
-extern int rtw_restruct_wmm_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie, uint in_len, uint initial_out_len);
-extern void rtw_init_registrypriv_dev_network(struct adapter *adapter);
-
-extern void rtw_update_registrypriv_dev_network(struct adapter *adapter);
-
-extern void _rtw_join_timeout_handler(struct timer_list *t);
-extern void rtw_scan_timeout_handler(struct timer_list *t);
-
-extern void rtw_dynamic_check_timer_handler(struct adapter *adapter);
-bool rtw_is_scan_deny(struct adapter *adapter);
-void rtw_clear_scan_deny(struct adapter *adapter);
-void rtw_set_scan_deny(struct adapter *adapter, u32 ms);
-
-void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv);
-
-extern void _rtw_free_mlme_priv(struct mlme_priv *pmlmepriv);
-
-/* extern struct wlan_network* _rtw_dequeue_network(struct __queue *queue); */
-
-extern struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv);
-
-
-extern void _rtw_free_network(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork, u8 isfreeall);
-extern void _rtw_free_network_nolock(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork);
-
-
-extern struct wlan_network *_rtw_find_network(struct __queue *scanned_queue, u8 *addr);
-
-bool rtw_if_up(struct adapter *padapter);
-
-bool rtw_linked_check(struct adapter *padapter);
-
-u8 *rtw_get_capability_from_ie(u8 *ie);
-u8 *rtw_get_beacon_interval_from_ie(u8 *ie);
-
-
-void rtw_joinbss_reset(struct adapter *padapter);
-
-void rtw_ht_use_default_setting(struct adapter *padapter);
-void rtw_build_wmm_ie_ht(struct adapter *padapter, u8 *out_ie, uint *pout_len);
-unsigned int rtw_restructure_ht_ie(struct adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, u8 channel);
-void rtw_update_ht_cap(struct adapter *padapter, u8 *pie, uint ie_len, u8 channel);
-void rtw_issue_addbareq_cmd(struct adapter *padapter, struct xmit_frame *pxmitframe);
-void rtw_append_exented_cap(struct adapter *padapter, u8 *out_ie, uint *pout_len);
-
-bool rtw_is_same_ibss(struct adapter *adapter, struct wlan_network *pnetwork);
-int is_same_network(struct wlan_bssid_ex *src, struct wlan_bssid_ex *dst, u8 feature);
-
-#define rtw_roam_flags(adapter) ((adapter)->mlmepriv.roam_flags)
-#define rtw_chk_roam_flags(adapter, flags) ((adapter)->mlmepriv.roam_flags & flags)
-
-void _rtw_roaming(struct adapter *adapter, struct wlan_network *tgt_network);
-void rtw_roaming(struct adapter *adapter, struct wlan_network *tgt_network);
-void rtw_set_to_roam(struct adapter *adapter, u8 to_roam);
-u8 rtw_dec_to_roam(struct adapter *adapter);
-u8 rtw_to_roam(struct adapter *adapter);
-int rtw_select_roaming_candidate(struct mlme_priv *pmlmepriv);
-
-void rtw_sta_media_status_rpt(struct adapter *adapter, struct sta_info *psta, u32 mstatus);
-void rtw_reset_securitypriv(struct adapter *adapter);
-
-#endif /* __RTL871X_MLME_H_ */
diff --git a/drivers/staging/rtl8723bs/include/rtw_mlme_ext.h b/drivers/staging/rtl8723bs/include/rtw_mlme_ext.h
deleted file mode 100644
index 179fae4d8fcc..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_mlme_ext.h
+++ /dev/null
@@ -1,708 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTW_MLME_EXT_H_
-#define __RTW_MLME_EXT_H_
-
-
-/* 	Commented by Albert 20101105 */
-/* 	Increase the SURVEY_TO value from 100 to 150  (100ms to 150ms) */
-/* 	The Realtek 8188CE SoftAP will spend around 100ms to send the probe response after receiving the probe request. */
-/* 	So, this driver tried to extend the dwell time for each scanning channel. */
-/* 	This will increase the chance to receive the probe response from SoftAP. */
-
-#define SURVEY_TO		(100)
-#define REAUTH_TO		(300) /* 50) */
-#define REASSOC_TO		(300) /* 50) */
-/* define DISCONNECT_TO	(3000) */
-#define ADDBA_TO			(2000)
-
-#define REAUTH_LIMIT	(4)
-#define REASSOC_LIMIT	(4)
-
-#define DYNAMIC_FUNC_DISABLE		(0x0)
-
-/*  ====== ODM_ABILITY_E ======== */
-/*  BB ODM section BIT 0-15 */
-#define DYNAMIC_BB_DIG				BIT(0) /* ODM_BB_DIG */
-#define DYNAMIC_BB_DYNAMIC_TXPWR	BIT(2) /* ODM_BB_DYNAMIC_TXPWR */
-#define DYNAMIC_BB_ANT_DIV			BIT(6) /* ODM_BB_ANT_DIV */
-
-/*  RF ODM section BIT 24-31 */
-#define DYNAMIC_RF_CALIBRATION		BIT(26)/* ODM_RF_CALIBRATION */
-
-#define DYNAMIC_ALL_FUNC_ENABLE		0xFFFFFFF
-
-#define _HW_STATE_NOLINK_		0x00
-#define _HW_STATE_ADHOC_		0x01
-#define _HW_STATE_STATION_	0x02
-#define _HW_STATE_AP_			0x03
-
-
-#define		_1M_RATE_	0
-#define		_2M_RATE_	1
-#define		_5M_RATE_	2
-#define		_11M_RATE_	3
-#define		_6M_RATE_	4
-#define		_9M_RATE_	5
-#define		_12M_RATE_	6
-#define		_18M_RATE_	7
-#define		_24M_RATE_	8
-#define		_36M_RATE_	9
-#define		_48M_RATE_	10
-#define		_54M_RATE_	11
-
-/********************************************************
-MCS rate definitions
-*********************************************************/
-#define MCS_RATE_1R	(0x000000ff)
-
-extern unsigned char RTW_WPA_OUI[];
-extern unsigned char WMM_OUI[];
-extern unsigned char WPS_OUI[];
-extern unsigned char WFD_OUI[];
-extern unsigned char P2P_OUI[];
-
-extern unsigned char WMM_INFO_OUI[];
-extern unsigned char WMM_PARA_OUI[];
-
-
-/*  */
-/*  Channel Plan Type. */
-/*  Note: */
-/* 	We just add new channel plan when the new channel plan is different from any of the following */
-/* 	channel plan. */
-/* 	If you just want to customize the actions(scan period or join actions) about one of the channel plan, */
-/* 	customize them in rt_channel_info in the RT_CHANNEL_LIST. */
-/*  */
-enum {
-	/*  old channel plan mapping ===== */
-	RT_CHANNEL_DOMAIN_FCC = 0x00,
-	RT_CHANNEL_DOMAIN_IC = 0x01,
-	RT_CHANNEL_DOMAIN_ETSI = 0x02,
-	RT_CHANNEL_DOMAIN_SPAIN = 0x03,
-	RT_CHANNEL_DOMAIN_FRANCE = 0x04,
-	RT_CHANNEL_DOMAIN_MKK = 0x05,
-	RT_CHANNEL_DOMAIN_MKK1 = 0x06,
-	RT_CHANNEL_DOMAIN_ISRAEL = 0x07,
-	RT_CHANNEL_DOMAIN_TELEC = 0x08,
-	RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN = 0x09,
-	RT_CHANNEL_DOMAIN_WORLD_WIDE_13 = 0x0A,
-	RT_CHANNEL_DOMAIN_TAIWAN = 0x0B,
-	RT_CHANNEL_DOMAIN_CHINA = 0x0C,
-	RT_CHANNEL_DOMAIN_SINGAPORE_INDIA_MEXICO = 0x0D,
-	RT_CHANNEL_DOMAIN_KOREA = 0x0E,
-	RT_CHANNEL_DOMAIN_TURKEY = 0x0F,
-	RT_CHANNEL_DOMAIN_JAPAN = 0x10,
-	RT_CHANNEL_DOMAIN_FCC_NO_DFS = 0x11,
-	RT_CHANNEL_DOMAIN_JAPAN_NO_DFS = 0x12,
-	RT_CHANNEL_DOMAIN_WORLD_WIDE_5G = 0x13,
-	RT_CHANNEL_DOMAIN_TAIWAN_NO_DFS = 0x14,
-
-	/*  new channel plan mapping, (2GDOMAIN_5GDOMAIN) ===== */
-	RT_CHANNEL_DOMAIN_WORLD_NULL = 0x20,
-	RT_CHANNEL_DOMAIN_ETSI1_NULL = 0x21,
-	RT_CHANNEL_DOMAIN_FCC1_NULL = 0x22,
-	RT_CHANNEL_DOMAIN_MKK1_NULL = 0x23,
-	RT_CHANNEL_DOMAIN_ETSI2_NULL = 0x24,
-	RT_CHANNEL_DOMAIN_FCC1_FCC1 = 0x25,
-	RT_CHANNEL_DOMAIN_WORLD_ETSI1 = 0x26,
-	RT_CHANNEL_DOMAIN_MKK1_MKK1 = 0x27,
-	RT_CHANNEL_DOMAIN_WORLD_KCC1 = 0x28,
-	RT_CHANNEL_DOMAIN_WORLD_FCC2 = 0x29,
-	RT_CHANNEL_DOMAIN_WORLD_FCC3 = 0x30,
-	RT_CHANNEL_DOMAIN_WORLD_FCC4 = 0x31,
-	RT_CHANNEL_DOMAIN_WORLD_FCC5 = 0x32,
-	RT_CHANNEL_DOMAIN_WORLD_FCC6 = 0x33,
-	RT_CHANNEL_DOMAIN_FCC1_FCC7 = 0x34,
-	RT_CHANNEL_DOMAIN_WORLD_ETSI2 = 0x35,
-	RT_CHANNEL_DOMAIN_WORLD_ETSI3 = 0x36,
-	RT_CHANNEL_DOMAIN_MKK1_MKK2 = 0x37,
-	RT_CHANNEL_DOMAIN_MKK1_MKK3 = 0x38,
-	RT_CHANNEL_DOMAIN_FCC1_NCC1 = 0x39,
-	RT_CHANNEL_DOMAIN_FCC1_NCC2 = 0x40,
-	RT_CHANNEL_DOMAIN_GLOBAL_NULL = 0x41,
-	RT_CHANNEL_DOMAIN_ETSI1_ETSI4 = 0x42,
-	RT_CHANNEL_DOMAIN_FCC1_FCC2 = 0x43,
-	RT_CHANNEL_DOMAIN_FCC1_NCC3 = 0x44,
-	RT_CHANNEL_DOMAIN_WORLD_ETSI5 = 0x45,
-	RT_CHANNEL_DOMAIN_FCC1_FCC8 = 0x46,
-	RT_CHANNEL_DOMAIN_WORLD_ETSI6 = 0x47,
-	RT_CHANNEL_DOMAIN_WORLD_ETSI7 = 0x48,
-	RT_CHANNEL_DOMAIN_WORLD_ETSI8 = 0x49,
-	RT_CHANNEL_DOMAIN_WORLD_ETSI9 = 0x50,
-	RT_CHANNEL_DOMAIN_WORLD_ETSI10 = 0x51,
-	RT_CHANNEL_DOMAIN_WORLD_ETSI11 = 0x52,
-	RT_CHANNEL_DOMAIN_FCC1_NCC4 = 0x53,
-	RT_CHANNEL_DOMAIN_WORLD_ETSI12 = 0x54,
-	RT_CHANNEL_DOMAIN_FCC1_FCC9 = 0x55,
-	RT_CHANNEL_DOMAIN_WORLD_ETSI13 = 0x56,
-	RT_CHANNEL_DOMAIN_FCC1_FCC10 = 0x57,
-	/*  Add new channel plan above this line =============== */
-	RT_CHANNEL_DOMAIN_MAX,
-	RT_CHANNEL_DOMAIN_REALTEK_DEFINE = 0x7F,
-};
-
-enum {
-	RT_CHANNEL_DOMAIN_2G_WORLD = 0x00,		/* Worldwird 13 */
-	RT_CHANNEL_DOMAIN_2G_ETSI1 = 0x01,		/* Europe */
-	RT_CHANNEL_DOMAIN_2G_FCC1 = 0x02,		/* US */
-	RT_CHANNEL_DOMAIN_2G_MKK1 = 0x03,		/* Japan */
-	RT_CHANNEL_DOMAIN_2G_ETSI2 = 0x04,		/* France */
-	RT_CHANNEL_DOMAIN_2G_GLOBAL = 0x05,		/* Global domain */
-	RT_CHANNEL_DOMAIN_2G_NULL = 0x06,
-	/*  Add new channel plan above this line =============== */
-	RT_CHANNEL_DOMAIN_2G_MAX,
-};
-
-#define rtw_is_channel_plan_valid(chplan) (chplan < RT_CHANNEL_DOMAIN_MAX || chplan == RT_CHANNEL_DOMAIN_REALTEK_DEFINE)
-
-struct rt_channel_plan {
-	unsigned char Channel[MAX_CHANNEL_NUM];
-	unsigned char Len;
-};
-
-struct rt_channel_plan_2g {
-	unsigned char Channel[MAX_CHANNEL_NUM_2G];
-	unsigned char Len;
-};
-
-struct rt_channel_plan_map {
-	unsigned char Index2G;
-};
-
-enum {
-	HT_IOT_PEER_UNKNOWN			= 0,
-	HT_IOT_PEER_REALTEK			= 1,
-	HT_IOT_PEER_REALTEK_92SE		= 2,
-	HT_IOT_PEER_BROADCOM		= 3,
-	HT_IOT_PEER_RALINK			= 4,
-	HT_IOT_PEER_ATHEROS			= 5,
-	HT_IOT_PEER_CISCO				= 6,
-	HT_IOT_PEER_MERU				= 7,
-	HT_IOT_PEER_MARVELL			= 8,
-	HT_IOT_PEER_REALTEK_SOFTAP	= 9,/*  peer is RealTek SOFT_AP, by Bohn, 2009.12.17 */
-	HT_IOT_PEER_SELF_SOFTAP			= 10, /*  Self is SoftAP */
-	HT_IOT_PEER_AIRGO				= 11,
-	HT_IOT_PEER_INTEL				= 12,
-	HT_IOT_PEER_RTK_APCLIENT		= 13,
-	HT_IOT_PEER_REALTEK_81XX		= 14,
-	HT_IOT_PEER_REALTEK_WOW			= 15,
-	HT_IOT_PEER_REALTEK_JAGUAR_BCUTAP = 16,
-	HT_IOT_PEER_REALTEK_JAGUAR_CCUTAP = 17,
-	HT_IOT_PEER_MAX					= 18
-};
-
-
-enum {
-	SCAN_DISABLE = 0,
-	SCAN_START = 1,
-	SCAN_TXNULL = 2,
-	SCAN_PROCESS = 3,
-	SCAN_COMPLETE = 4,
-	SCAN_STATE_MAX,
-};
-
-struct mlme_handler {
-	unsigned int   num;
-	char *str;
-	unsigned int (*func)(struct adapter *padapter, union recv_frame *precv_frame);
-};
-
-struct action_handler {
-	unsigned int   num;
-	char *str;
-	unsigned int (*func)(struct adapter *padapter, union recv_frame *precv_frame);
-};
-
-struct	ss_res {
-	int	state;
-	int	bss_cnt;
-	int	channel_idx;
-	int	scan_mode;
-	u8 ssid_num;
-	u8 ch_num;
-	struct ndis_802_11_ssid ssid[RTW_SSID_SCAN_AMOUNT];
-	struct rtw_ieee80211_channel ch[RTW_CHANNEL_SCAN_AMOUNT];
-};
-
-/* define AP_MODE				0x0C */
-/* define STATION_MODE	0x08 */
-/* define AD_HOC_MODE		0x04 */
-/* define NO_LINK_MODE	0x00 */
-
-#define		WIFI_FW_NULL_STATE			_HW_STATE_NOLINK_
-#define	WIFI_FW_STATION_STATE		_HW_STATE_STATION_
-#define	WIFI_FW_AP_STATE				_HW_STATE_AP_
-#define	WIFI_FW_ADHOC_STATE			_HW_STATE_ADHOC_
-
-#define	WIFI_FW_AUTH_NULL			0x00000100
-#define	WIFI_FW_AUTH_STATE			0x00000200
-#define	WIFI_FW_AUTH_SUCCESS			0x00000400
-
-#define	WIFI_FW_ASSOC_STATE			0x00002000
-#define	WIFI_FW_ASSOC_SUCCESS		0x00004000
-
-#define	WIFI_FW_LINKING_STATE		(WIFI_FW_AUTH_NULL | WIFI_FW_AUTH_STATE | WIFI_FW_AUTH_SUCCESS | WIFI_FW_ASSOC_STATE)
-
-struct FW_Sta_Info {
-	struct sta_info *psta;
-	u32 status;
-	u32 rx_pkt;
-	u32 retry;
-	NDIS_802_11_RATES_EX  SupportedRates;
-};
-
-/*
- * Usage:
- * When one iface acted as AP mode and the other iface is STA mode and scanning,
- * it should switch back to AP's operating channel periodically.
- * Parameters info:
- * When the driver scanned RTW_SCAN_NUM_OF_CH channels, it would switch back to AP's operating channel for
- * RTW_STAY_AP_CH_MILLISECOND * SURVEY_TO milliseconds.
- * Example:
- * For chip supports 2.4G and AP mode is operating in channel 1,
- * RTW_SCAN_NUM_OF_CH is 8, RTW_STAY_AP_CH_MILLISECOND is 3 and SURVEY_TO is 100.
- * When it's STA mode gets set_scan command,
- * it would
- * 1. Doing the scan on channel 1.2.3.4.5.6.7.8
- * 2. Back to channel 1 for 300 milliseconds
- * 3. Go through doing site survey on channel 9.10.11
- * 4. Back to channel 1 for 300 milliseconds
- * 5. ... and so on, till survey done.
- */
-struct mlme_ext_info {
-	u32 state;
-	u32 reauth_count;
-	u32 reassoc_count;
-	u32 link_count;
-	u32 auth_seq;
-	u32 auth_algo;	/*  802.11 auth, could be open, shared, auto */
-	u32 authModeToggle;
-	u32 enc_algo;/* encrypt algorithm; */
-	u32 key_index;	/*  this is only valid for legendary wep, 0~3 for key id. */
-	u32 iv;
-	u8 chg_txt[128];
-	u16 aid;
-	u16 bcn_interval;
-	u16 capability;
-	u8 assoc_AP_vendor;
-	u8 slotTime;
-	u8 preamble_mode;
-	u8 WMM_enable;
-	u8 ERP_enable;
-	u8 ERP_IE;
-	u8 HT_enable;
-	u8 HT_caps_enable;
-	u8 HT_info_enable;
-	u8 HT_protection;
-	u8 turboMode_cts2self;
-	u8 turboMode_rtsen;
-	u8 SM_PS;
-	u8 agg_enable_bitmap;
-	u8 ADDBA_retry_count;
-	u8 candidate_tid_bitmap;
-	u8 dialogToken;
-	/*  Accept ADDBA Request */
-	bool accept_addba_req;
-	u8 bwmode_updated;
-	u8 hidden_ssid_mode;
-	u8 VHT_enable;
-
-	struct ADDBA_request		ADDBA_req;
-	struct WMM_para_element	WMM_param;
-	struct HT_caps_element	HT_caps;
-	struct HT_info_element		HT_info;
-	struct wlan_bssid_ex			network;/* join network or bss_network, if in ap mode, it is the same to cur_network.network */
-	struct FW_Sta_Info		FW_sta_info[NUM_STA];
-};
-
-/*  The channel information about this channel including joining, scanning, and power constraints. */
-struct rt_channel_info {
-	u8 channel_num;		/*  The channel number. */
-	enum rt_scan_type scan_type;		/*  Scan type such as passive or active scan. */
-};
-
-int rtw_ch_set_search_ch(struct rt_channel_info *ch_set, const u32 ch);
-
-/*  P2P_MAX_REG_CLASSES - Maximum number of regulatory classes */
-#define P2P_MAX_REG_CLASSES 10
-
-/*  P2P_MAX_REG_CLASS_CHANNELS - Maximum number of channels per regulatory class */
-#define P2P_MAX_REG_CLASS_CHANNELS 20
-
-/*   struct p2p_channels - List of supported channels */
-struct p2p_channels {
-	/*  struct p2p_reg_class - Supported regulatory class */
-	struct p2p_reg_class {
-		/*  reg_class - Regulatory class (IEEE 802.11-2007, Annex J) */
-		u8 reg_class;
-
-		/*  channel - Supported channels */
-		u8 channel[P2P_MAX_REG_CLASS_CHANNELS];
-
-		/*  channels - Number of channel entries in use */
-		size_t channels;
-	} reg_class[P2P_MAX_REG_CLASSES];
-
-	/*  reg_classes - Number of reg_class entries in use */
-	size_t reg_classes;
-};
-
-struct p2p_oper_class_map {
-	enum hw_mode {IEEE80211G, IEEE80211A} mode;
-	u8 op_class;
-	u8 min_chan;
-	u8 max_chan;
-	u8 inc;
-	enum { BW20, BW40PLUS, BW40MINUS } bw;
-};
-
-struct mlme_ext_priv {
-	struct adapter	*padapter;
-	u8 mlmeext_init;
-	atomic_t		event_seq;
-	u16 mgnt_seq;
-	u16 sa_query_seq;
-	u64 mgnt_80211w_IPN;
-	u64 mgnt_80211w_IPN_rx;
-	/* struct fw_priv fwpriv; */
-
-	unsigned char cur_channel;
-	unsigned char cur_bwmode;
-	unsigned char cur_ch_offset;/* PRIME_CHNL_OFFSET */
-	unsigned char cur_wireless_mode;	/*  NETWORK_TYPE */
-
-	unsigned char max_chan_nums;
-	struct rt_channel_info		channel_set[MAX_CHANNEL_NUM];
-	struct p2p_channels channel_list;
-	unsigned char basicrate[NumRates];
-	unsigned char datarate[NumRates];
-	unsigned char default_supported_mcs_set[16];
-
-	struct ss_res		sitesurvey_res;
-	struct mlme_ext_info mlmext_info;	/* for sta/adhoc mode, including current scanning/connecting/connected related info. */
-						/* for ap mode, network includes ap's cap_info */
-	struct timer_list		survey_timer;
-	struct timer_list		link_timer;
-	struct timer_list		sa_query_timer;
-	/* struct timer_list		ADDBA_timer; */
-	u16 		chan_scan_time;
-	unsigned long last_scan_time;
-	u8 scan_abort;
-	u8 tx_rate; /*  TXRATE when USERATE is set. */
-
-	u32 retry; /* retry for issue probereq */
-
-	u64 TSFValue;
-
-	/* for LPS-32K to adaptive bcn early and timeout */
-	u8 adaptive_tsf_done;
-	u32 bcn_delay_cnt[9];
-	u32 bcn_delay_ratio[9];
-	u32 bcn_cnt;
-	u8 DrvBcnEarly;
-	u8 DrvBcnTimeOut;
-
-	unsigned char bstart_bss;
-
-	u8 update_channel_plan_by_ap_done;
-
-	/* recv_decache check for Action_public frame */
-	u8 action_public_dialog_token;
-	u16  action_public_rxseq;
-
-	u8 active_keep_alive_check;
-};
-
-void init_mlme_default_rate_set(struct adapter *padapter);
-void init_mlme_ext_priv(struct adapter *padapter);
-void init_hw_mlme_ext(struct adapter *padapter);
-void free_mlme_ext_priv(struct mlme_ext_priv *pmlmeext);
-extern struct xmit_frame *alloc_mgtxmitframe(struct xmit_priv *pxmitpriv);
-
-/* void fill_fwpriv(struct adapter *padapter, struct fw_priv *pfwpriv); */
-
-u8 networktype_to_raid_ex(struct adapter *adapter, struct sta_info *psta);
-
-void get_rate_set(struct adapter *padapter, unsigned char *pbssrate, int *bssrate_len);
-void set_mcs_rate_by_mask(u8 *mcs_set, u32 mask);
-void update_basic_rate_table(struct adapter *padapter, u8 *mBratesOS);
-void update_basic_rate_table_soft_ap(u8 *bssrateset, u32 bssratelen);
-
-void save_dm_func_flag(struct adapter *padapter);
-void restore_dm_func_flag(struct adapter *padapter);
-void switch_dm_func(struct adapter *padapter, u32 mode, u8 enable);
-
-void set_msr(struct adapter *padapter, u8 type);
-
-u8 rtw_get_oper_ch(struct adapter *adapter);
-void rtw_set_oper_ch(struct adapter *adapter, u8 ch);
-void rtw_set_oper_bw(struct adapter *adapter, u8 bw);
-void rtw_set_oper_choffset(struct adapter *adapter, u8 offset);
-u8 rtw_get_center_ch(u8 channel, u8 chnl_bw, u8 chnl_offset);
-unsigned long rtw_get_on_cur_ch_time(struct adapter *adapter);
-
-void set_channel_bwmode(struct adapter *padapter, unsigned char channel, unsigned char channel_offset, unsigned short bwmode);
-void r8723bs_select_channel(struct adapter *padapter, unsigned char channel);
-
-unsigned int decide_wait_for_beacon_timeout(unsigned int bcn_interval);
-
-/* modify HW only */
-void _write_cam(struct adapter *padapter, u8 entry, u16 ctrl, u8 *mac, u8 *key);
-void _clear_cam_entry(struct adapter *padapter, u8 entry);
-
-/* modify both HW and cache */
-void write_cam(struct adapter *padapter, u8 id, u16 ctrl, u8 *mac, u8 *key);
-void clear_cam_entry(struct adapter *padapter, u8 id);
-
-/* modify cache only */
-void write_cam_cache(struct adapter *adapter, u8 id, u16 ctrl, u8 *mac, u8 *key);
-void clear_cam_cache(struct adapter *adapter, u8 id);
-
-void invalidate_cam_all(struct adapter *padapter);
-
-
-int allocate_fw_sta_entry(struct adapter *padapter);
-void flush_all_cam_entry(struct adapter *padapter);
-
-void site_survey(struct adapter *padapter);
-u8 collect_bss_info(struct adapter *padapter, union recv_frame *precv_frame, struct wlan_bssid_ex *bssid);
-void update_network(struct wlan_bssid_ex *dst, struct wlan_bssid_ex *src, struct adapter *padapter, bool update_ie);
-
-u8 *get_my_bssid(struct wlan_bssid_ex *pnetwork);
-u16 get_beacon_interval(struct wlan_bssid_ex *bss);
-
-int is_client_associated_to_ap(struct adapter *padapter);
-int is_client_associated_to_ibss(struct adapter *padapter);
-int is_IBSS_empty(struct adapter *padapter);
-
-unsigned char check_assoc_AP(u8 *pframe, uint len);
-
-int WMM_param_handler(struct adapter *padapter, struct ndis_80211_var_ie *pIE);
-void WMMOnAssocRsp(struct adapter *padapter);
-
-void HT_caps_handler(struct adapter *padapter, struct ndis_80211_var_ie *pIE);
-void HT_info_handler(struct adapter *padapter, struct ndis_80211_var_ie *pIE);
-void HTOnAssocRsp(struct adapter *padapter);
-
-void ERP_IE_handler(struct adapter *padapter, struct ndis_80211_var_ie *pIE);
-void VCS_update(struct adapter *padapter, struct sta_info *psta);
-void update_ldpc_stbc_cap(struct sta_info *psta);
-
-void update_beacon_info(struct adapter *padapter, u8 *pframe, uint len, struct sta_info *psta);
-int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len);
-void update_IOT_info(struct adapter *padapter);
-void update_capinfo(struct adapter *Adapter, u16 updateCap);
-void update_wireless_mode(struct adapter *padapter);
-void update_sta_basic_rate(struct sta_info *psta, u8 wireless_mode);
-int update_sta_support_rate(struct adapter *padapter, u8 *pvar_ie, uint var_ie_len, int cam_idx);
-
-/* for sta/adhoc mode */
-void update_sta_info(struct adapter *padapter, struct sta_info *psta);
-void update_ra_entry(struct adapter *padapter, struct sta_info *psta);
-void set_sta_rate(struct adapter *padapter, struct sta_info *psta);
-
-unsigned int receive_disconnect(struct adapter *padapter, unsigned char *MacAddr, unsigned short reason);
-
-unsigned char get_highest_rate_idx(u32 mask);
-int support_short_GI(struct adapter *padapter, struct HT_caps_element *pHT_caps, u8 bwmode);
-unsigned int is_ap_in_tkip(struct adapter *padapter);
-
-s16 rtw_camid_search(struct adapter *adapter, u8 *addr, s16 kid);
-s16 rtw_camid_alloc(struct adapter *adapter, struct sta_info *sta, u8 kid);
-void rtw_camid_free(struct adapter *adapter, u8 cam_id);
-
-extern void rtw_alloc_macid(struct adapter *padapter, struct sta_info *psta);
-extern void rtw_release_macid(struct adapter *padapter, struct sta_info *psta);
-
-void report_join_res(struct adapter *padapter, int res);
-void report_survey_event(struct adapter *padapter, union recv_frame *precv_frame);
-void report_surveydone_event(struct adapter *padapter);
-void report_del_sta_event(struct adapter *padapter, unsigned char *MacAddr, unsigned short reason);
-void report_add_sta_event(struct adapter *padapter, unsigned char *MacAddr, int cam_idx);
-void report_wmm_edca_update(struct adapter *padapter);
-
-u8 chk_bmc_sleepq_cmd(struct adapter *padapter);
-extern u8 set_tx_beacon_cmd(struct adapter *padapter);
-unsigned int setup_beacon_frame(struct adapter *padapter, unsigned char *beacon_frame);
-void update_mgnt_tx_rate(struct adapter *padapter, u8 rate);
-void update_mgntframe_attrib(struct adapter *padapter, struct pkt_attrib *pattrib);
-void update_mgntframe_attrib_addr(struct adapter *padapter, struct xmit_frame *pmgntframe);
-void dump_mgntframe(struct adapter *padapter, struct xmit_frame *pmgntframe);
-s32 dump_mgntframe_and_wait(struct adapter *padapter, struct xmit_frame *pmgntframe, int timeout_ms);
-s32 dump_mgntframe_and_wait_ack(struct adapter *padapter, struct xmit_frame *pmgntframe);
-
-void issue_beacon(struct adapter *padapter, int timeout_ms);
-void issue_probersp(struct adapter *padapter, unsigned char *da, u8 is_valid_p2p_probereq);
-void issue_assocreq(struct adapter *padapter);
-void issue_asocrsp(struct adapter *padapter, unsigned short status, struct sta_info *pstat, int pkt_type);
-void issue_auth(struct adapter *padapter, struct sta_info *psta, unsigned short status);
-void issue_probereq(struct adapter *padapter, struct ndis_802_11_ssid *pssid, u8 *da);
-s32 issue_probereq_ex(struct adapter *padapter, struct ndis_802_11_ssid *pssid, u8 *da, u8 ch, bool append_wps, int try_cnt, int wait_ms);
-int issue_nulldata(struct adapter *padapter, unsigned char *da, unsigned int power_mode, int try_cnt, int wait_ms);
-s32 issue_nulldata_in_interrupt(struct adapter *padapter, u8 *da);
-int issue_qos_nulldata(struct adapter *padapter, unsigned char *da, u16 tid, int try_cnt, int wait_ms);
-int issue_deauth(struct adapter *padapter, unsigned char *da, unsigned short reason);
-int issue_deauth_ex(struct adapter *padapter, u8 *da, unsigned short reason, int try_cnt, int wait_ms);
-void issue_action_BA(struct adapter *padapter, unsigned char *raddr, unsigned char action, unsigned short status);
-void issue_action_SA_Query(struct adapter *padapter, unsigned char *raddr, unsigned char action, unsigned short tid);
-unsigned int send_delba(struct adapter *padapter, u8 initiator, u8 *addr);
-unsigned int send_beacon(struct adapter *padapter);
-
-void start_clnt_assoc(struct adapter *padapter);
-void start_clnt_auth(struct adapter *padapter);
-void start_clnt_join(struct adapter *padapter);
-void start_create_ibss(struct adapter *padapter);
-
-unsigned int OnAssocReq(struct adapter *padapter, union recv_frame *precv_frame);
-unsigned int OnAssocRsp(struct adapter *padapter, union recv_frame *precv_frame);
-unsigned int OnProbeReq(struct adapter *padapter, union recv_frame *precv_frame);
-unsigned int OnProbeRsp(struct adapter *padapter, union recv_frame *precv_frame);
-unsigned int DoReserved(struct adapter *padapter, union recv_frame *precv_frame);
-unsigned int OnBeacon(struct adapter *padapter, union recv_frame *precv_frame);
-unsigned int OnAtim(struct adapter *padapter, union recv_frame *precv_frame);
-unsigned int OnDisassoc(struct adapter *padapter, union recv_frame *precv_frame);
-unsigned int OnAuth(struct adapter *padapter, union recv_frame *precv_frame);
-unsigned int OnAuthClient(struct adapter *padapter, union recv_frame *precv_frame);
-unsigned int OnDeAuth(struct adapter *padapter, union recv_frame *precv_frame);
-unsigned int OnAction(struct adapter *padapter, union recv_frame *precv_frame);
-
-unsigned int on_action_spct(struct adapter *padapter, union recv_frame *precv_frame);
-unsigned int OnAction_back(struct adapter *padapter, union recv_frame *precv_frame);
-unsigned int on_action_public(struct adapter *padapter, union recv_frame *precv_frame);
-unsigned int OnAction_ht(struct adapter *padapter, union recv_frame *precv_frame);
-unsigned int OnAction_sa_query(struct adapter *padapter, union recv_frame *precv_frame);
-
-void mlmeext_joinbss_event_callback(struct adapter *padapter, int join_res);
-void mlmeext_sta_del_event_callback(struct adapter *padapter);
-void mlmeext_sta_add_event_callback(struct adapter *padapter, struct sta_info *psta);
-
-void linked_status_chk(struct adapter *padapter);
-
-void _linked_info_dump(struct adapter *padapter);
-
-void survey_timer_hdl(struct timer_list *t);
-void link_timer_hdl(struct timer_list *t);
-void addba_timer_hdl(struct timer_list *t);
-void sa_query_timer_hdl(struct timer_list *t);
-/* void reauth_timer_hdl(struct adapter *padapter); */
-/* void reassoc_timer_hdl(struct adapter *padapter); */
-
-#define set_survey_timer(mlmeext, ms) \
-	do { \
-		_set_timer(&(mlmeext)->survey_timer, (ms)); \
-	} while (0)
-
-#define set_link_timer(mlmeext, ms) \
-	do { \
-		_set_timer(&(mlmeext)->link_timer, (ms)); \
-	} while (0)
-#define set_sa_query_timer(mlmeext, ms) \
-	do { \
-		_set_timer(&(mlmeext)->sa_query_timer, (ms)); \
-	} while (0)
-
-extern void process_addba_req(struct adapter *padapter, u8 *paddba_req, u8 *addr);
-
-extern void update_TSF(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint len);
-extern void correct_TSF(struct adapter *padapter, struct mlme_ext_priv *pmlmeext);
-extern void adaptive_early_32k(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint len);
-extern bool traffic_status_watchdog(struct adapter *padapter, bool from_timer);
-
-int rtw_chk_start_clnt_join(struct adapter *padapter, u8 *ch, u8 *bw, u8 *offset);
-
-struct cmd_hdl {
-	uint	parmsize;
-	u8 (*h2cfuns)(struct adapter *padapter, u8 *pbuf);
-};
-
-
-u8 read_macreg_hdl(struct adapter *padapter, u8 *pbuf);
-u8 write_macreg_hdl(struct adapter *padapter, u8 *pbuf);
-u8 read_bbreg_hdl(struct adapter *padapter, u8 *pbuf);
-u8 write_bbreg_hdl(struct adapter *padapter, u8 *pbuf);
-u8 read_rfreg_hdl(struct adapter *padapter, u8 *pbuf);
-u8 write_rfreg_hdl(struct adapter *padapter, u8 *pbuf);
-
-
-u8 NULL_hdl(struct adapter *padapter, u8 *pbuf);
-u8 join_cmd_hdl(struct adapter *padapter, u8 *pbuf);
-u8 disconnect_hdl(struct adapter *padapter, u8 *pbuf);
-u8 createbss_hdl(struct adapter *padapter, u8 *pbuf);
-u8 setopmode_hdl(struct adapter *padapter, u8 *pbuf);
-u8 sitesurvey_cmd_hdl(struct adapter *padapter, u8 *pbuf);
-u8 setauth_hdl(struct adapter *padapter, u8 *pbuf);
-u8 setkey_hdl(struct adapter *padapter, u8 *pbuf);
-u8 set_stakey_hdl(struct adapter *padapter, u8 *pbuf);
-u8 set_assocsta_hdl(struct adapter *padapter, u8 *pbuf);
-u8 del_assocsta_hdl(struct adapter *padapter, u8 *pbuf);
-u8 add_ba_hdl(struct adapter *padapter, unsigned char *pbuf);
-
-u8 mlme_evt_hdl(struct adapter *padapter, unsigned char *pbuf);
-u8 h2c_msg_hdl(struct adapter *padapter, unsigned char *pbuf);
-u8 chk_bmc_sleepq_hdl(struct adapter *padapter, unsigned char *pbuf);
-u8 tx_beacon_hdl(struct adapter *padapter, unsigned char *pbuf);
-u8 set_ch_hdl(struct adapter *padapter, u8 *pbuf);
-u8 set_chplan_hdl(struct adapter *padapter, unsigned char *pbuf);
-u8 set_csa_hdl(struct adapter *padapter, unsigned char *pbuf);	/* Kurt: Handling DFS channel switch announcement ie. */
-u8 tdls_hdl(struct adapter *padapter, unsigned char *pbuf);
-u8 run_in_thread_hdl(struct adapter *padapter, u8 *pbuf);
-
-
-#define GEN_DRV_CMD_HANDLER(size, cmd)	{size, &cmd ## _hdl},
-#define GEN_MLME_EXT_HANDLER(size, cmd)	{size, cmd},
-
-struct C2HEvent_Header {
-
-#ifdef __LITTLE_ENDIAN
-
-	unsigned int len:16;
-	unsigned int ID:8;
-	unsigned int seq:8;
-#else
-	unsigned int seq:8;
-	unsigned int ID:8;
-	unsigned int len:16;
-#endif
-	unsigned int rsvd;
-};
-
-void rtw_dummy_event_callback(struct adapter *adapter, u8 *pbuf);
-void rtw_fwdbg_event_callback(struct adapter *adapter, u8 *pbuf);
-
-enum {
-	READ_MACREG_EVENT = 0,		/*0*/
-	READ_BBREG_EVENT,
-	READ_RFREG_EVENT,
-	READ_EEPROM_EVENT,
-	READ_EFUSE_EVENT,
-	READ_CAM_EVENT,			/*5*/
-	GET_BASICRATE_EVENT,
-	GET_DATARATE_EVENT,
-	SURVEY_EVENT,			/*8*/
-	SURVEY_DONE_EVENT,		/*9*/
-
-	JOIN_BSS_EVENT,			/*10*/
-	ADD_STA_EVENT,
-	DEL_STA_EVENT,
-	ATIM_DONE_EVENT,
-	TX_REPORT_EVENT,
-	CCX_REPORT_EVENT,		/*15*/
-	DTM_REPORT_EVENT,
-	TX_RATE_STATISTICS_EVENT,
-	C2HLBK_EVENT,
-	FWDBG_EVENT,
-	C2HFEEDBACK_EVENT,		/*20*/
-	ADDBA_EVENT,
-	C2HBCN_EVENT,
-	REPORT_PWR_STATE_EVENT,		/* filen: only for PCIE, USB */
-	CLOSE_RF_EVENT,			/* filen: only for PCIE, work around ASPM */
-	WMM_EVENT,			/*25*/
-	MAX_C2HEVT
-};
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/rtw_pwrctrl.h b/drivers/staging/rtl8723bs/include/rtw_pwrctrl.h
deleted file mode 100644
index 182b8c88ccc8..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_pwrctrl.h
+++ /dev/null
@@ -1,254 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTW_PWRCTRL_H_
-#define __RTW_PWRCTRL_H_
-
-#include <linux/mutex.h>
-
-#define XMIT_ALIVE	BIT(0)
-#define CMD_ALIVE	BIT(2)
-#define BTCOEX_ALIVE	BIT(4)
-
-
-enum {
-	PS_MODE_ACTIVE	= 0,
-	PS_MODE_MIN,
-	PS_MODE_MAX,
-	PS_MODE_DTIM,	/* PS_MODE_SELF_DEFINED */
-	PS_MODE_VOIP,
-	PS_MODE_UAPSD_WMM,
-	PS_MODE_UAPSD,
-	PS_MODE_IBSS,
-	PS_MODE_WWLAN,
-	PM_Radio_Off,
-	PM_Card_Disable,
-	PS_MODE_NUM,
-};
-
-/*
-	BIT[2:0] = HW state
-	BIT[3] = Protocol PS state,   0: register active state , 1: register sleep state
-	BIT[4] = sub-state
-*/
-
-#define PS_DPS				BIT(0)
-#define PS_LCLK				(PS_DPS)
-#define PS_RF_OFF			BIT(1)
-#define PS_ALL_ON			BIT(2)
-#define PS_ST_ACTIVE		BIT(3)
-
-#define PS_ACK				BIT(6)
-#define PS_TOGGLE			BIT(7)
-
-#define PS_STATE_MASK		(0x0F)
-
-#define PS_STATE(x)		(PS_STATE_MASK & (x))
-
-#define PS_STATE_S0		(PS_DPS)
-#define PS_STATE_S2		(PS_RF_OFF)
-#define PS_STATE_S4		((PS_ST_ACTIVE) | (PS_ALL_ON))
-
-struct reportpwrstate_parm {
-	unsigned char mode;
-	unsigned char state; /* the CPWM value */
-	unsigned short rsvd;
-};
-
-#define LPS_DELAY_TIME	(1 * HZ) /*  1 sec */
-
-/*  RF state. */
-enum rt_rf_power_state {
-	rf_on,		/*  RF is on after RFSleep or RFOff */
-	rf_sleep,	/*  802.11 Power Save mode */
-	rf_off,		/*  HW/SW Radio OFF or Inactive Power Save */
-	/* Add the new RF state above this line ===== */
-	rf_max
-};
-
-/*  RF Off Level for IPS or HW/SW radio off */
-#define	RT_RF_OFF_LEVL_ASPM			BIT(0)	/*  PCI ASPM */
-#define	RT_RF_OFF_LEVL_CLK_REQ		BIT(1)	/*  PCI clock request */
-#define	RT_RF_OFF_LEVL_PCI_D3			BIT(2)	/*  PCI D3 mode */
-#define	RT_RF_OFF_LEVL_HALT_NIC		BIT(3)	/*  NIC halt, re-initialize hw parameters */
-#define	RT_RF_OFF_LEVL_FREE_FW		BIT(4)	/*  FW free, re-download the FW */
-#define	RT_RF_OFF_LEVL_FW_32K		BIT(5)	/*  FW in 32k */
-#define	RT_RF_PS_LEVEL_ALWAYS_ASPM	BIT(6)	/*  Always enable ASPM and Clock Req in initialization. */
-#define	RT_RF_LPS_DISALBE_2R			BIT(30)	/*  When LPS is on, disable 2R if no packet is received or transmitted. */
-#define	RT_RF_LPS_LEVEL_ASPM			BIT(31)	/*  LPS with ASPM */
-
-#define	RT_IN_PS_LEVEL(ppsc, _PS_FLAG)		((ppsc->cur_ps_level & _PS_FLAG) ? true : false)
-#define	RT_CLEAR_PS_LEVEL(ppsc, _PS_FLAG)	(ppsc->cur_ps_level &= (~(_PS_FLAG)))
-#define	RT_SET_PS_LEVEL(ppsc, _PS_FLAG)		(ppsc->cur_ps_level |= _PS_FLAG)
-
-/*  ASPM OSC Control bit, added by Roger, 2013.03.29. */
-#define	RT_PCI_ASPM_OSC_IGNORE		0	 /*  PCI ASPM ignore OSC control in default */
-#define	RT_PCI_ASPM_OSC_ENABLE		BIT(0) /*  PCI ASPM controlled by OS according to ACPI Spec 5.0 */
-#define	RT_PCI_ASPM_OSC_DISABLE		BIT(1) /*  PCI ASPM controlled by driver or BIOS, i.e., force enable ASPM */
-
-enum {
-	PSBBREG_RF0 = 0,
-	PSBBREG_RF1,
-	PSBBREG_RF2,
-	PSBBREG_AFE0,
-	PSBBREG_TOTALCNT
-};
-
-enum { /*  for ips_mode */
-	IPS_NONE = 0,
-	IPS_NORMAL,
-	IPS_LEVEL_2,
-	IPS_NUM
-};
-
-/*  Design for pwrctrl_priv.ips_deny, 32 bits for 32 reasons at most */
-enum ps_deny_reason {
-	PS_DENY_DRV_INITIAL = 0,
-	PS_DENY_SCAN,
-	PS_DENY_JOIN,
-	PS_DENY_DISCONNECT,
-	PS_DENY_SUSPEND,
-	PS_DENY_IOCTL,
-	PS_DENY_MGNT_TX,
-	PS_DENY_DRV_REMOVE = 30,
-	PS_DENY_OTHERS = 31
-};
-
-struct pwrctrl_priv {
-	struct mutex lock;
-	volatile u8 rpwm; /*  requested power state for fw */
-	volatile u8 cpwm; /*  fw current power state. updated when 1. read from HCPWM 2. driver lowers power level */
-	volatile u8 tog; /*  toggling */
-	volatile u8 cpwm_tog; /*  toggling */
-
-	u8 pwr_mode;
-	u8 smart_ps;
-	u8 bcn_ant_mode;
-	u8 dtim;
-
-	u32 alives;
-	struct work_struct cpwm_event;
-	u8 brpwmtimeout;
-	struct work_struct rpwmtimeoutwi;
-	struct timer_list pwr_rpwm_timer;
-	u8 bpower_saving; /* for LPS/IPS */
-
-	u8 b_hw_radio_off;
-	u8 reg_rfoff;
-	u8 reg_pdnmode; /* powerdown mode */
-	u32 rfoff_reason;
-
-	/* RF OFF Level */
-	u32 cur_ps_level;
-	u32 reg_rfps_level;
-
-	uint	ips_enter_cnts;
-	uint	ips_leave_cnts;
-
-	u8 ips_mode;
-	u8 ips_org_mode;
-	u8 ips_mode_req; /*  used to accept the mode setting request, will update to ipsmode later */
-	bool bips_processing;
-	unsigned long ips_deny_time; /* will deny IPS when system time is smaller than this */
-	u8 pre_ips_type;/*  0: default flow, 1: carddisbale flow */
-
-	/*  ps_deny: if 0, power save is free to go; otherwise deny all kinds of power save. */
-	/*  Use enum ps_deny_reason to decide reason. */
-	/*  Don't access this variable directly without control function, */
-	/*  and this variable should be protected by lock. */
-	u32 ps_deny;
-
-	u8 ps_processing; /* temporarily used to mark whether in rtw_ps_processor */
-
-	u8 fw_psmode_iface_id;
-	u8 bLeisurePs;
-	u8 LpsIdleCount;
-	u8 power_mgnt;
-	u8 org_power_mgnt;
-	bool fw_current_in_ps_mode;
-	unsigned long	delay_lps_last_time_stamp;
-	s32		pnp_current_pwr_state;
-	u8 pnp_bstop_trx;
-
-
-	u8 bInternalAutoSuspend;
-	u8 bInSuspend;
-
-	u8 bAutoResume;
-	u8 autopm_cnt;
-
-	u8 bSupportRemoteWakeup;
-	u8 wowlan_wake_reason;
-	u8 wowlan_ap_mode;
-	u8 wowlan_mode;
-	struct timer_list	pwr_state_check_timer;
-	struct adapter *adapter;
-	int		pwr_state_check_interval;
-	u8 pwr_state_check_cnts;
-
-	int		ps_flag; /* used by autosuspend */
-
-	enum rt_rf_power_state	rf_pwrstate;/* cur power state, only for IPS */
-	/* rt_rf_power_state	current_rfpwrstate; */
-	enum rt_rf_power_state	change_rfpwrstate;
-
-	u8 bHWPowerdown; /* power down mode selection. 0:radio off, 1:power down */
-	u8 bHWPwrPindetect; /* come from registrypriv.hwpwrp_detect. enable power down function. 0:disable, 1:enable */
-	u8 bkeepfwalive;
-	u8 brfoffbyhw;
-	unsigned long PS_BBRegBackup[PSBBREG_TOTALCNT];
-};
-
-#define rtw_ips_mode_req(pwrctl, ips_mode) \
-	((pwrctl)->ips_mode_req = (ips_mode))
-
-#define RTW_PWR_STATE_CHK_INTERVAL 2000
-
-#define _rtw_set_pwr_state_check_timer(pwrctl, ms) \
-	do { \
-		_set_timer(&(pwrctl)->pwr_state_check_timer, (ms)); \
-	} while (0)
-
-extern void rtw_init_pwrctrl_priv(struct adapter *adapter);
-extern void rtw_free_pwrctrl_priv(struct adapter *adapter);
-
-s32 rtw_register_task_alive(struct adapter *adapter, u32 task);
-void rtw_unregister_task_alive(struct adapter *adapter, u32 task);
-extern s32 rtw_register_tx_alive(struct adapter *padapter);
-extern void rtw_unregister_tx_alive(struct adapter *padapter);
-extern s32 rtw_register_cmd_alive(struct adapter *padapter);
-extern void rtw_unregister_cmd_alive(struct adapter *padapter);
-extern void cpwm_int_hdl(struct adapter *padapter, struct reportpwrstate_parm *preportpwrstate);
-extern void LPS_Leave_check(struct adapter *padapter);
-
-extern void LeaveAllPowerSaveMode(struct adapter *Adapter);
-extern void LeaveAllPowerSaveModeDirect(struct adapter *Adapter);
-void _ips_enter(struct adapter *padapter);
-void ips_enter(struct adapter *padapter);
-int _ips_leave(struct adapter *padapter);
-int ips_leave(struct adapter *padapter);
-
-void rtw_ps_processor(struct adapter *padapter);
-
-int LPS_RF_ON_check(struct adapter *padapter, u32 delay_ms);
-void LPS_Enter(struct adapter *padapter, const char *msg);
-void LPS_Leave(struct adapter *padapter, const char *msg);
-void traffic_check_for_leave_lps(struct adapter *padapter, u8 tx, u32 tx_packets);
-void rtw_set_ps_mode(struct adapter *padapter, u8 ps_mode, u8 smart_ps, u8 bcn_ant_mode, const char *msg);
-void rtw_set_rpwm(struct adapter *padapter, u8 val8);
-
-void rtw_set_ips_deny(struct adapter *padapter, u32 ms);
-int _rtw_pwr_wakeup(struct adapter *padapter, u32 ips_deffer_ms, const char *caller);
-#define rtw_pwr_wakeup(adapter) _rtw_pwr_wakeup(adapter, RTW_PWR_STATE_CHK_INTERVAL, __func__)
-#define rtw_pwr_wakeup_ex(adapter, ips_deffer_ms) _rtw_pwr_wakeup(adapter, ips_deffer_ms, __func__)
-int rtw_pm_set_ips(struct adapter *padapter, u8 mode);
-int rtw_pm_set_lps(struct adapter *padapter, u8 mode);
-
-void rtw_ps_deny(struct adapter *padapter, enum ps_deny_reason reason);
-void rtw_ps_deny_cancel(struct adapter *padapter, enum ps_deny_reason reason);
-u32 rtw_ps_deny_get(struct adapter *padapter);
-
-#endif  /* __RTL871X_PWRCTRL_H_ */
diff --git a/drivers/staging/rtl8723bs/include/rtw_qos.h b/drivers/staging/rtl8723bs/include/rtw_qos.h
deleted file mode 100644
index 733bfacef0b9..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_qos.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef _RTW_QOS_H_
-#define _RTW_QOS_H_
-
-struct	qos_priv {
-	unsigned int	  qos_option;	/* bit mask option: u-apsd, s-apsd, ts, block ack... */
-};
-
-#endif	/* _RTL871X_QOS_H_ */
diff --git a/drivers/staging/rtl8723bs/include/rtw_recv.h b/drivers/staging/rtl8723bs/include/rtw_recv.h
deleted file mode 100644
index 9c32d480a20a..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_recv.h
+++ /dev/null
@@ -1,457 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef _RTW_RECV_H_
-#define _RTW_RECV_H_
-
-#define NR_RECVBUFF (8)
-
-#define NR_RECVFRAME 256
-
-#define RXFRAME_ALIGN	8
-#define RXFRAME_ALIGN_SZ	(1<<RXFRAME_ALIGN)
-
-#define DRVINFO_SZ	4 /*  unit is 8bytes */
-
-#define MAX_RX_NUMBLKS		(32)
-#define RECVFRAME_HDR_ALIGN 128
-
-#define SNAP_SIZE sizeof(struct ieee80211_snap_hdr)
-
-#define MAX_SUBFRAME_COUNT	64
-
-#define LLC_HEADER_LENGTH	6
-
-/* for Rx reordering buffer control */
-struct recv_reorder_ctrl {
-	struct adapter	*padapter;
-	u8 enable;
-	u16 indicate_seq;/* wstart_b, init_value = 0xffff */
-	u16 wend_b;
-	u8 wsize_b;
-	struct __queue pending_recvframe_queue;
-	struct timer_list reordering_ctrl_timer;
-};
-
-struct	stainfo_rxcache	{
-	u16 tid_rxseq[16];
-/*
-	unsigned short	tid0_rxseq;
-	unsigned short	tid1_rxseq;
-	unsigned short	tid2_rxseq;
-	unsigned short	tid3_rxseq;
-	unsigned short	tid4_rxseq;
-	unsigned short	tid5_rxseq;
-	unsigned short	tid6_rxseq;
-	unsigned short	tid7_rxseq;
-	unsigned short	tid8_rxseq;
-	unsigned short	tid9_rxseq;
-	unsigned short	tid10_rxseq;
-	unsigned short	tid11_rxseq;
-	unsigned short	tid12_rxseq;
-	unsigned short	tid13_rxseq;
-	unsigned short	tid14_rxseq;
-	unsigned short	tid15_rxseq;
-*/
-};
-
-
-struct signal_stat {
-	u8 update_req;		/* used to indicate */
-	u8 avg_val;		/* avg of valid elements */
-	u32 total_num;		/* num of valid elements */
-	u32 total_val;		/* sum of valid elements */
-};
-
-struct phy_info {
-	u8 rx_pwd_ba11;
-
-	u8 SignalQuality;	 /*  in 0-100 index. */
-	s8		rx_mimo_signal_quality[4];	/* per-path's EVM */
-	u8 RxMIMOEVMdbm[4];		/* per-path's EVM dbm */
-
-	u8 rx_mimo_signal_strength[4];/*  in 0~100 index */
-
-	u16 	Cfo_short[4];			/*  per-path's Cfo_short */
-	u16 	Cfo_tail[4];			/*  per-path's Cfo_tail */
-
-	s8		RxPower; /*  in dBm Translate from PWdB */
-	s8		RecvSignalPower;/*  Real power in dBm for this packet, no beautification and aggregation. Keep this raw info to be used for the other procedures. */
-	u8 bt_rx_rssi_percentage;
-	u8 SignalStrength; /*  in 0-100 index. */
-
-	s8		RxPwr[4];				/* per-path's pwdb */
-	u8 RxSNR[4];				/* per-path's SNR */
-	u8 BandWidth;
-	u8 btCoexPwrAdjust;
-};
-
-struct rx_pkt_attrib	{
-	u16 pkt_len;
-	u8 physt;
-	u8 drvinfo_sz;
-	u8 shift_sz;
-	u8 hdrlen; /* the WLAN Header Len */
-	u8 to_fr_ds;
-	u8 amsdu;
-	u8 qos;
-	u8 priority;
-	u8 pw_save;
-	u8 mdata;
-	u16 seq_num;
-	u8 frag_num;
-	u8 mfrag;
-	u8 order;
-	u8 privacy; /* in frame_ctrl field */
-	u8 bdecrypted;
-	u8 encrypt; /* when 0 indicates no encryption; when non-zero, indicates the encryption algorithm */
-	u8 iv_len;
-	u8 icv_len;
-	u8 crc_err;
-	u8 icv_err;
-
-	u16 eth_type;
-
-	u8 dst[ETH_ALEN];
-	u8 src[ETH_ALEN];
-	u8 ta[ETH_ALEN];
-	u8 ra[ETH_ALEN];
-	u8 bssid[ETH_ALEN];
-
-	u8 ack_policy;
-
-	u8 key_index;
-
-	u8 data_rate;
-	u8 sgi;
-	u8 pkt_rpt_type;
-	u32 MacIDValidEntry[2];	/*  64 bits present 64 entry. */
-
-/*
-	u8 signal_qual;
-	s8	rx_mimo_signal_qual[2];
-	u8 signal_strength;
-	u32 rx_pwd_ba11;
-	s32	RecvSignalPower;
-*/
-	struct phy_info phy_info;
-};
-
-
-/* These definition is used for Rx packet reordering. */
-#define SN_LESS(a, b)		(((a - b) & 0x800) != 0)
-#define SN_EQUAL(a, b)	(a == b)
-/* define REORDER_WIN_SIZE	128 */
-/* define REORDER_ENTRY_NUM	128 */
-#define REORDER_WAIT_TIME	(50) /*  (ms) */
-
-#define RECVBUFF_ALIGN_SZ 8
-
-#define RXDESC_SIZE	24
-
-struct recv_stat {
-	__le32 rxdw0;
-	__le32 rxdw1;
-	__le32 rxdw2;
-	__le32 rxdw3;
-#ifndef BUF_DESC_ARCH
-	__le32 rxdw4;
-	__le32 rxdw5;
-#endif /* if BUF_DESC_ARCH is defined, rx_buf_desc occupy 4 double words */
-};
-
-/*
-accesser of recv_priv: rtw_recv_entry(dispatch / passive level); recv_thread(passive) ; returnpkt(dispatch)
-; halt(passive) ;
-
-using enter_critical section to protect
-*/
-struct recv_priv {
-	spinlock_t	lock;
-	struct __queue	free_recv_queue;
-	struct __queue	recv_pending_queue;
-	struct __queue	uc_swdec_pending_queue;
-	u8 *pallocated_frame_buf;
-	u8 *precv_frame_buf;
-	uint free_recvframe_cnt;
-	struct adapter	*adapter;
-	u32 bIsAnyNonBEPkts;
-	u64	rx_bytes;
-	u64	rx_pkts;
-	u64	rx_drop;
-	uint  rx_icv_err;
-	uint  rx_largepacket_crcerr;
-	uint  rx_smallpacket_crcerr;
-	uint  rx_middlepacket_crcerr;
-
-	struct tasklet_struct irq_prepare_beacon_tasklet;
-	struct tasklet_struct recv_tasklet;
-	struct sk_buff_head free_recv_skb_queue;
-	struct sk_buff_head rx_skb_queue;
-
-	u8 *pallocated_recv_buf;
-	u8 *precv_buf;    /*  4 alignment */
-	struct __queue	free_recv_buf_queue;
-	u32 free_recv_buf_queue_cnt;
-
-	struct __queue	recv_buf_pending_queue;
-
-	/* For display the phy information */
-	u8 is_signal_dbg;	/*  for debug */
-	u8 signal_strength_dbg;	/*  for debug */
-
-	u8 signal_strength;
-	u8 signal_qual;
-	s8 rssi;	/* translate_percentage_to_dbm(ptarget_wlan->network.PhyInfo.SignalStrength); */
-	/* s8 rxpwdb; */
-	s16 noise;
-	/* int RxSNRdB[2]; */
-	/* s8 RxRssi[2]; */
-	/* int FalseAlmCnt_all; */
-
-
-	struct timer_list signal_stat_timer;
-	u32 signal_stat_sampling_interval;
-	/* u32 signal_stat_converging_constant; */
-	struct signal_stat signal_qual_data;
-	struct signal_stat signal_strength_data;
-};
-
-#define rtw_set_signal_stat_timer(recvpriv) _set_timer(&(recvpriv)->signal_stat_timer, (recvpriv)->signal_stat_sampling_interval)
-
-struct sta_recv_priv {
-
-	spinlock_t	lock;
-	signed int	option;
-
-	/* struct __queue	blk_strms[MAX_RX_NUMBLKS]; */
-	struct __queue defrag_q;	 /* keeping the fragment frame until defrag */
-
-	struct	stainfo_rxcache rxcache;
-
-	/* uint	sta_rx_bytes; */
-	/* uint	sta_rx_pkts; */
-	/* uint	sta_rx_fail; */
-
-};
-
-
-struct recv_buf {
-	struct list_head list;
-
-	spinlock_t recvbuf_lock;
-
-	u32 ref_cnt;
-
-	struct adapter *adapter;
-
-	u8 *pbuf;
-	u8 *pallocated_buf;
-
-	u32 len;
-	u8 *phead;
-	u8 *pdata;
-	u8 *ptail;
-	u8 *pend;
-
-	struct sk_buff	*pskb;
-	u8 reuse;
-};
-
-
-/*
-	head  ----->
-
-		data  ----->
-
-			payload
-
-		tail  ----->
-
-
-	end   ----->
-
-	len = (unsigned int)(tail - data);
-
-*/
-struct recv_frame_hdr {
-	struct list_head	list;
-	struct sk_buff	 *pkt;
-	struct sk_buff	 *pkt_newalloc;
-
-	struct adapter  *adapter;
-
-	u8 fragcnt;
-
-	int frame_tag;
-
-	struct rx_pkt_attrib attrib;
-
-	uint  len;
-	u8 *rx_head;
-	u8 *rx_data;
-	u8 *rx_tail;
-	u8 *rx_end;
-
-	void *precvbuf;
-
-
-	/*  */
-	struct sta_info *psta;
-
-	/* for A-MPDU Rx reordering buffer control */
-	struct recv_reorder_ctrl *preorder_ctrl;
-};
-
-
-union recv_frame {
-	union{
-		struct list_head list;
-		struct recv_frame_hdr hdr;
-		uint mem[RECVFRAME_HDR_ALIGN>>2];
-	} u;
-
-	/* uint mem[MAX_RXSZ>>2]; */
-
-};
-
-enum {
-	NORMAL_RX,/* Normal rx packet */
-	TX_REPORT1,/* CCX */
-	TX_REPORT2,/* TX RPT */
-	HIS_REPORT,/*  USB HISR RPT */
-	C2H_PACKET
-};
-
-extern union recv_frame *_rtw_alloc_recvframe(struct __queue *pfree_recv_queue);  /* get a free recv_frame from pfree_recv_queue */
-extern union recv_frame *rtw_alloc_recvframe(struct __queue *pfree_recv_queue);  /* get a free recv_frame from pfree_recv_queue */
-extern int	 rtw_free_recvframe(union recv_frame *precvframe, struct __queue *pfree_recv_queue);
-
-extern int _rtw_enqueue_recvframe(union recv_frame *precvframe, struct __queue *queue);
-extern int rtw_enqueue_recvframe(union recv_frame *precvframe, struct __queue *queue);
-
-extern void rtw_free_recvframe_queue(struct __queue *pframequeue,  struct __queue *pfree_recv_queue);
-u32 rtw_free_uc_swdec_pending_queue(struct adapter *adapter);
-
-signed int rtw_enqueue_recvbuf_to_head(struct recv_buf *precvbuf, struct __queue *queue);
-signed int rtw_enqueue_recvbuf(struct recv_buf *precvbuf, struct __queue *queue);
-struct recv_buf *rtw_dequeue_recvbuf(struct __queue *queue);
-
-void rtw_reordering_ctrl_timeout_handler(struct timer_list *t);
-
-signed int _rtw_init_recv_priv(struct recv_priv *precvpriv, struct adapter *padapter);
-void _rtw_free_recv_priv(struct recv_priv *precvpriv);
-s32  rtw_recv_entry(union recv_frame *precv_frame);
-
-static inline u8 *get_rxmem(union recv_frame *precvframe)
-{
-	/* always return rx_head... */
-	if (!precvframe)
-		return NULL;
-
-	return precvframe->u.hdr.rx_head;
-}
-
-static inline u8 *recvframe_pull(union recv_frame *precvframe, signed int sz)
-{
-	/*  rx_data += sz; move rx_data sz bytes  hereafter */
-
-	/* used for extract sz bytes from rx_data, update rx_data and return the updated rx_data to the caller */
-
-
-	if (!precvframe)
-		return NULL;
-
-
-	precvframe->u.hdr.rx_data += sz;
-
-	if (precvframe->u.hdr.rx_data > precvframe->u.hdr.rx_tail) {
-		precvframe->u.hdr.rx_data -= sz;
-		return NULL;
-	}
-
-	precvframe->u.hdr.len -= sz;
-
-	return precvframe->u.hdr.rx_data;
-
-}
-
-static inline u8 *recvframe_put(union recv_frame *precvframe, signed int sz)
-{
-	/*  rx_tai += sz; move rx_tail sz bytes  hereafter */
-
-	/* used for append sz bytes from ptr to rx_tail, update rx_tail and return the updated rx_tail to the caller */
-	/* after putting, rx_tail must be still larger than rx_end. */
-	unsigned char *prev_rx_tail;
-
-	if (!precvframe)
-		return NULL;
-
-	prev_rx_tail = precvframe->u.hdr.rx_tail;
-
-	precvframe->u.hdr.rx_tail += sz;
-
-	if (precvframe->u.hdr.rx_tail > precvframe->u.hdr.rx_end) {
-		precvframe->u.hdr.rx_tail = prev_rx_tail;
-		return NULL;
-	}
-
-	precvframe->u.hdr.len += sz;
-
-	return precvframe->u.hdr.rx_tail;
-
-}
-
-
-
-static inline u8 *recvframe_pull_tail(union recv_frame *precvframe, signed int sz)
-{
-	/*  rmv data from rx_tail (by yitsen) */
-
-	/* used for extract sz bytes from rx_end, update rx_end and return the updated rx_end to the caller */
-	/* after pulling, rx_end must be still larger than rx_data. */
-
-	if (!precvframe)
-		return NULL;
-
-	precvframe->u.hdr.rx_tail -= sz;
-
-	if (precvframe->u.hdr.rx_tail < precvframe->u.hdr.rx_data) {
-		precvframe->u.hdr.rx_tail += sz;
-		return NULL;
-	}
-
-	precvframe->u.hdr.len -= sz;
-
-	return precvframe->u.hdr.rx_tail;
-
-}
-
-static inline signed int get_recvframe_len(union recv_frame *precvframe)
-{
-	return precvframe->u.hdr.len;
-}
-
-
-static inline s32 translate_percentage_to_dbm(u32 SignalStrengthIndex)
-{
-	s32	SignalPower; /*  in dBm. */
-
-	/*  Translate to dBm (x = 0.5y-95). */
-	SignalPower = (s32)((SignalStrengthIndex + 1) >> 1);
-	SignalPower -= 95;
-
-	return SignalPower;
-}
-
-
-struct sta_info;
-
-extern void _rtw_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv);
-
-extern void  mgt_dispatcher(struct adapter *padapter, union recv_frame *precv_frame);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/rtw_rf.h b/drivers/staging/rtl8723bs/include/rtw_rf.h
deleted file mode 100644
index 9f98b3f5a2e3..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_rf.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef	__RTW_RF_H_
-#define __RTW_RF_H_
-
-
-#define OFDM_PHY		1
-#define MIXED_PHY		2
-#define CCK_PHY			3
-
-#define NumRates		13
-
-/*  slot time for 11g */
-#define SHORT_SLOT_TIME		9
-#define NON_SHORT_SLOT_TIME	20
-
-#define RTL8711_RF_MAX_SENS	 6
-#define RTL8711_RF_DEF_SENS	 4
-
-/*
- * We now define the following channels as the max channels in each channel plan.
- * 2G, total 14 chnls
- * {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}
- */
-#define	MAX_CHANNEL_NUM_2G	14
-#define	MAX_CHANNEL_NUM		14
-
-#define NUM_REGULATORYS	1
-
-/* Country codes */
-#define USA			0x555320
-#define EUROPE			0x1 /* temp, should be provided later */
-#define JAPAN			0x2 /* temp, should be provided later */
-
-struct	regulatory_class {
-	u32 starting_freq;			/* MHz, */
-	u8 channel_set[MAX_CHANNEL_NUM];
-	u8 channel_cck_power[MAX_CHANNEL_NUM];/* dbm */
-	u8 channel_ofdm_power[MAX_CHANNEL_NUM];/* dbm */
-	u8 txpower_limit;			/* dbm */
-	u8 channel_spacing;			/* MHz */
-	u8 modem;
-};
-
-enum {
-	cESS			= 0x0001,
-	cIBSS			= 0x0002,
-	cPollable		= 0x0004,
-	cPollReq		= 0x0008,
-	cPrivacy		= 0x0010,
-	cShortPreamble		= 0x0020,
-	cPBCC			= 0x0040,
-	cChannelAgility		= 0x0080,
-	cSpectrumMgnt		= 0x0100,
-	cQos			= 0x0200,	/*  For HCCA, use with CF-Pollable and CF-PollReq */
-	cShortSlotTime		= 0x0400,
-	cAPSD			= 0x0800,
-	cRM			= 0x1000,	/*  RRM (Radio Request Measurement) */
-	cDSSS_OFDM		= 0x2000,
-	cDelayedBA		= 0x4000,
-	cImmediateBA		= 0x8000,
-};
-
-enum {
-	PREAMBLE_LONG	= 1,
-	PREAMBLE_AUTO	= 2,
-	PREAMBLE_SHORT	= 3,
-};
-
-/*  Bandwidth Offset */
-#define HAL_PRIME_CHNL_OFFSET_DONT_CARE	0
-#define HAL_PRIME_CHNL_OFFSET_LOWER	1
-#define HAL_PRIME_CHNL_OFFSET_UPPER	2
-
-/*  Represent Channel Width in HT Capabilities */
-enum channel_width {
-	CHANNEL_WIDTH_20 = 0,
-	CHANNEL_WIDTH_40 = 1,
-};
-
-/*  Represent Extension Channel Offset in HT Capabilities */
-/*  This is available only in 40Mhz mode. */
-enum extchnl_offset {
-	EXTCHNL_OFFSET_NO_EXT = 0,
-	EXTCHNL_OFFSET_UPPER = 1,
-	EXTCHNL_OFFSET_NO_DEF = 2,
-	EXTCHNL_OFFSET_LOWER = 3,
-};
-
-enum {
-	HT_DATA_SC_DONOT_CARE = 0,
-	HT_DATA_SC_20_UPPER_OF_40MHZ = 1,
-	HT_DATA_SC_20_LOWER_OF_40MHZ = 2,
-};
-
-#endif /* _RTL8711_RF_H_ */
diff --git a/drivers/staging/rtl8723bs/include/rtw_security.h b/drivers/staging/rtl8723bs/include/rtw_security.h
deleted file mode 100644
index a3bbc605e2ba..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_security.h
+++ /dev/null
@@ -1,272 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTW_SECURITY_H_
-#define __RTW_SECURITY_H_
-
-#include <crypto/arc4.h>
-
-#define _NO_PRIVACY_		0x0
-#define _WEP40_				0x1
-#define _TKIP_				0x2
-#define _TKIP_WTMIC_		0x3
-#define _AES_				0x4
-#define _WEP104_			0x5
-#define _WEP_WPA_MIXED_	0x07  /*  WEP + WPA */
-#define _SMS4_				0x06
-#define _BIP_				0x8
-#define is_wep_enc(alg) (((alg) == _WEP40_) || ((alg) == _WEP104_))
-
-const char *security_type_str(u8 value);
-
-#define AES_BLOCK_SIZE 16
-#define AES_PRIV_SIZE (4 * 44)
-
-enum {
-	ENCRYP_PROTOCOL_OPENSYS,   /* open system */
-	ENCRYP_PROTOCOL_WEP,       /* WEP */
-	ENCRYP_PROTOCOL_WPA,       /* WPA */
-	ENCRYP_PROTOCOL_WPA2,      /* WPA2 */
-	ENCRYP_PROTOCOL_WAPI,      /* WAPI: Not support in this version */
-	ENCRYP_PROTOCOL_MAX
-};
-
-
-#ifndef Ndis802_11AuthModeWPA2
-#define Ndis802_11AuthModeWPA2 (Ndis802_11AuthModeWPANone + 1)
-#endif
-
-#ifndef Ndis802_11AuthModeWPA2PSK
-#define Ndis802_11AuthModeWPA2PSK (Ndis802_11AuthModeWPANone + 2)
-#endif
-
-union pn48	{
-
-	u64	val;
-
-#ifdef __LITTLE_ENDIAN
-
-struct {
-	u8 TSC0;
-	u8 TSC1;
-	u8 TSC2;
-	u8 TSC3;
-	u8 TSC4;
-	u8 TSC5;
-	u8 TSC6;
-	u8 TSC7;
-} _byte_;
-#else
-struct {
-	u8 TSC7;
-	u8 TSC6;
-	u8 TSC5;
-	u8 TSC4;
-	u8 TSC3;
-	u8 TSC2;
-	u8 TSC1;
-	u8 TSC0;
-} _byte_;
-#endif
-
-};
-
-union Keytype {
-	u8   skey[16];
-	u32    lkey[4];
-};
-
-
-struct rt_pmkid_list {
-	u8				bUsed;
-	u8				Bssid[6];
-	u8				PMKID[16];
-	u8				SsidBuf[33];
-	u8 *ssid_octet;
-	u16					ssid_length;
-};
-
-
-struct security_priv {
-	u32   dot11_auth_algrthm;	/*  802.11 auth, could be open, shared, 8021x and authswitch */
-	u32   dot11_privacy_algrthm;	/*  This specify the privacy for shared auth. algorithm. */
-
-	/* WEP */
-	u32   dot11PrivacyKeyIndex;	/*  this is only valid for legendary wep, 0~3 for key id. (tx key index) */
-	union Keytype dot11DefKey[4];	/*  this is only valid for def. key */
-	u32 dot11DefKeylen[4];
-	u8 key_mask; /* use to restore wep key after hal_init */
-
-	u32 dot118021XGrpPrivacy;	/*  This specify the privacy algthm. used for Grp key */
-	u32 dot118021XGrpKeyid;		/*  key id used for Grp Key (tx key index) */
-	union Keytype	dot118021XGrpKey[BIP_MAX_KEYID + 1];	/*  802.1x Group Key, for inx0 and inx1 */
-	union Keytype	dot118021XGrptxmickey[BIP_MAX_KEYID + 1];
-	union Keytype	dot118021XGrprxmickey[BIP_MAX_KEYID + 1];
-	union pn48		dot11Grptxpn;			/*  PN48 used for Grp Key xmit. */
-	union pn48		dot11Grprxpn;			/*  PN48 used for Grp Key recv. */
-	u32 dot11wBIPKeyid;						/*  key id used for BIP Key (tx key index) */
-	union Keytype	dot11wBIPKey[BIP_MAX_KEYID + 1];	/*  BIP Key, for index4 and index5 */
-	union pn48		dot11wBIPtxpn;			/*  PN48 used for Grp Key xmit. */
-	union pn48		dot11wBIPrxpn;			/*  PN48 used for Grp Key recv. */
-
-	/* extend security capabilities for AP_MODE */
-	unsigned int dot8021xalg;/* 0:disable, 1:psk, 2:802.1x */
-	unsigned int wpa_psk;/* 0:disable, bit(0): WPA, bit(1):WPA2 */
-	unsigned int wpa_group_cipher;
-	unsigned int wpa2_group_cipher;
-	unsigned int wpa_pairwise_cipher;
-	unsigned int wpa2_pairwise_cipher;
-
-	u8 wps_ie[MAX_WPS_IE_LEN];/* added in assoc req */
-	int wps_ie_len;
-
-	struct arc4_ctx xmit_arc4_ctx;
-	struct arc4_ctx recv_arc4_ctx;
-
-	u8 binstallGrpkey;
-	u8 binstallBIPkey;
-	u8 busetkipkey;
-	/* _timer tkip_timer; */
-	u8 bcheck_grpkey;
-	u8 bgrpkey_handshake;
-
-	s32	sw_encrypt;/* from registry_priv */
-	s32	sw_decrypt;/* from registry_priv */
-
-	s32	hw_decrypted;/* if the rx packets is hw_decrypted ==false, it means the hw has not been ready. */
-
-
-	/* keeps the auth_type & enc_status from upper layer ioctl(wpa_supplicant or wzc) */
-	u32 ndisauthtype;	/*  enum ndis_802_11_authentication_mode */
-	u32 ndisencryptstatus;	/*  NDIS_802_11_ENCRYPTION_STATUS */
-
-	struct wlan_bssid_ex sec_bss;  /* for joinbss (h2c buffer) usage */
-
-	struct ndis_802_11_wep ndiswep;
-
-	u8 assoc_info[600];
-	u8 szofcapability[256]; /* for wpa2 usage */
-	u8 oidassociation[512]; /* for wpa/wpa2 usage */
-	u8 authenticator_ie[256];  /* store ap security information element */
-	u8 supplicant_ie[256];  /* store sta security information element */
-
-
-	/* for tkip countermeasure */
-	unsigned long last_mic_err_time;
-	u8 btkip_countermeasure;
-	u8 btkip_wait_report;
-	u32 btkip_countermeasure_time;
-
-	/*  For WPA2 Pre-Authentication. */
-	struct rt_pmkid_list		PMKIDList[NUM_PMKID_CACHE];	/*  Renamed from PreAuthKey[NUM_PRE_AUTH_KEY]. Annie, 2006-10-13. */
-	u8		PMKIDIndex;
-
-	u8 bWepDefaultKeyIdxSet;
-
-};
-
-#define GET_ENCRY_ALGO(psecuritypriv, psta, encry_algo, bmcst)\
-do {\
-	switch (psecuritypriv->dot11_auth_algrthm) {\
-	case dot11_auth_algrthm_open:\
-	case dot11_auth_algrthm_shared:\
-	case dot11_auth_algrthm_auto:\
-		encry_algo = (u8)psecuritypriv->dot11_privacy_algrthm;\
-		break;\
-	case dot11_auth_algrthm_8021x:\
-		if (bmcst)\
-			encry_algo = (u8)psecuritypriv->dot118021XGrpPrivacy;\
-		else\
-			encry_algo = (u8)psta->dot118021XPrivacy;\
-		break;\
-	case dot11_auth_algrthm_wapi:\
-		encry_algo = (u8)psecuritypriv->dot11_privacy_algrthm;\
-		break;\
-	} \
-} while (0)
-
-#define SET_ICE_IV_LEN(iv_len, icv_len, encrypt)\
-do {\
-	switch (encrypt) {\
-	case _WEP40_:\
-	case _WEP104_:\
-		iv_len = 4;\
-		icv_len = 4;\
-		break;\
-	case _TKIP_:\
-		iv_len = 8;\
-		icv_len = 4;\
-		break;\
-	case _AES_:\
-		iv_len = 8;\
-		icv_len = 8;\
-		break;\
-	case _SMS4_:\
-		iv_len = 18;\
-		icv_len = 16;\
-		break;\
-	default:\
-		iv_len = 0;\
-		icv_len = 0;\
-		break;\
-	} \
-} while (0)
-
-
-#define GET_TKIP_PN(iv, dot11txpn)\
-do {\
-	dot11txpn._byte_.TSC0 = iv[2];\
-	dot11txpn._byte_.TSC1 = iv[0];\
-	dot11txpn._byte_.TSC2 = iv[4];\
-	dot11txpn._byte_.TSC3 = iv[5];\
-	dot11txpn._byte_.TSC4 = iv[6];\
-	dot11txpn._byte_.TSC5 = iv[7];\
-} while (0)
-
-
-#define ROL32(A, n)	(((A) << (n)) | (((A)>>(32-(n)))  & ((1UL << (n)) - 1)))
-#define ROR32(A, n)	ROL32((A), 32-(n))
-
-struct mic_data {
-	u32  K0, K1;         /*  Key */
-	u32  L, R;           /*  Current state */
-	u32  M;              /*  Message accumulator (single word) */
-	u32     nBytesInM;      /*  # bytes in M */
-};
-
-/* ===== start - public domain SHA256 implementation ===== */
-
-/* This is based on SHA256 implementation in LibTomCrypt that was released into
- * public domain by Tom St Denis.
- */
-
-int omac1_aes_128(u8 *key, u8 *data, size_t data_len, u8 *mac);
-void rtw_secmicsetkey(struct mic_data *pmicdata, u8 *key);
-void rtw_secmicappendbyte(struct mic_data *pmicdata, u8 b);
-void rtw_secmicappend(struct mic_data *pmicdata, u8 *src, u32 nBytes);
-void rtw_secgetmic(struct mic_data *pmicdata, u8 *dst);
-
-void rtw_seccalctkipmic(
-	u8 *key,
-	u8 *header,
-	u8 *data,
-	u32 data_len,
-	u8 *Miccode,
-	u8   priority);
-
-u32 rtw_aes_encrypt(struct adapter *padapter, u8 *pxmitframe);
-u32 rtw_tkip_encrypt(struct adapter *padapter, u8 *pxmitframe);
-void rtw_wep_encrypt(struct adapter *padapter, u8  *pxmitframe);
-
-u32 rtw_aes_decrypt(struct adapter *padapter, u8  *precvframe);
-u32 rtw_tkip_decrypt(struct adapter *padapter, u8  *precvframe);
-void rtw_wep_decrypt(struct adapter *padapter, u8  *precvframe);
-u32 rtw_BIP_verify(struct adapter *padapter, u8 *precvframe);
-
-void rtw_sec_restore_wep_key(struct adapter *adapter);
-u8 rtw_handle_tkip_countermeasure(struct adapter *adapter, const char *caller);
-
-#endif	/* __RTL871X_SECURITY_H_ */
diff --git a/drivers/staging/rtl8723bs/include/rtw_version.h b/drivers/staging/rtl8723bs/include/rtw_version.h
deleted file mode 100644
index 55e907b097ae..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_version.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#define DRIVERVERSION	"v4.3.5.5_12290.20140916_BTCOEX20140507-4E40"
-#define BTCOEXVERSION	"BTCOEX20140507-4E40"
diff --git a/drivers/staging/rtl8723bs/include/rtw_wifi_regd.h b/drivers/staging/rtl8723bs/include/rtw_wifi_regd.h
deleted file mode 100644
index e4d8fe9bf68d..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_wifi_regd.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2009-2010  Realtek Corporation.
- *
- *****************************************************************************/
-
-#ifndef __RTW_WIFI_REGD_H__
-#define __RTW_WIFI_REGD_H__
-
-void rtw_regd_init(struct wiphy *wiphy,
-		   void (*reg_notifier)(struct wiphy *wiphy,
-					struct regulatory_request *request));
-void rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request);
-
-#endif
diff --git a/drivers/staging/rtl8723bs/include/rtw_xmit.h b/drivers/staging/rtl8723bs/include/rtw_xmit.h
deleted file mode 100644
index 917e846e9ce2..000000000000
--- a/drivers/staging/rtl8723bs/include/rtw_xmit.h
+++ /dev/null
@@ -1,470 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef _RTW_XMIT_H_
-#define _RTW_XMIT_H_
-
-#include <linux/completion.h>
-
-#define MAX_XMITBUF_SZ	(20480)	/*  20k */
-
-#define NR_XMITBUFF	(16)
-
-#define XMITBUF_ALIGN_SZ 512
-
-/*  xmit extension buff definition */
-#define MAX_XMIT_EXTBUF_SZ	(1536)
-#define NR_XMIT_EXTBUFF	(32)
-
-#define MAX_CMDBUF_SZ	(5120)	/* 4096) */
-
-#define MAX_NUMBLKS		(1)
-
-#define XMIT_VO_QUEUE (0)
-#define XMIT_VI_QUEUE (1)
-#define XMIT_BE_QUEUE (2)
-#define XMIT_BK_QUEUE (3)
-
-#define VO_QUEUE_INX		0
-#define VI_QUEUE_INX		1
-#define BE_QUEUE_INX		2
-#define BK_QUEUE_INX		3
-#define BCN_QUEUE_INX		4
-#define MGT_QUEUE_INX		5
-#define HIGH_QUEUE_INX		6
-
-#define HW_QUEUE_ENTRY	8
-
-#define WEP_IV(pattrib_iv, dot11txpn, keyidx)\
-do {\
-	pattrib_iv[0] = dot11txpn._byte_.TSC0;\
-	pattrib_iv[1] = dot11txpn._byte_.TSC1;\
-	pattrib_iv[2] = dot11txpn._byte_.TSC2;\
-	pattrib_iv[3] = ((keyidx & 0x3)<<6);\
-	dot11txpn.val = (dot11txpn.val == 0xffffff) ? 0 : (dot11txpn.val + 1);\
-} while (0)
-
-
-#define TKIP_IV(pattrib_iv, dot11txpn, keyidx)\
-do {\
-	pattrib_iv[0] = dot11txpn._byte_.TSC1;\
-	pattrib_iv[1] = (dot11txpn._byte_.TSC1 | 0x20) & 0x7f;\
-	pattrib_iv[2] = dot11txpn._byte_.TSC0;\
-	pattrib_iv[3] = BIT(5) | ((keyidx & 0x3)<<6);\
-	pattrib_iv[4] = dot11txpn._byte_.TSC2;\
-	pattrib_iv[5] = dot11txpn._byte_.TSC3;\
-	pattrib_iv[6] = dot11txpn._byte_.TSC4;\
-	pattrib_iv[7] = dot11txpn._byte_.TSC5;\
-	dot11txpn.val = dot11txpn.val == 0xffffffffffffULL ? 0 : (dot11txpn.val + 1);\
-} while (0)
-
-#define AES_IV(pattrib_iv, dot11txpn, keyidx)\
-do {\
-	pattrib_iv[0] = dot11txpn._byte_.TSC0;\
-	pattrib_iv[1] = dot11txpn._byte_.TSC1;\
-	pattrib_iv[2] = 0;\
-	pattrib_iv[3] = BIT(5) | ((keyidx & 0x3)<<6);\
-	pattrib_iv[4] = dot11txpn._byte_.TSC2;\
-	pattrib_iv[5] = dot11txpn._byte_.TSC3;\
-	pattrib_iv[6] = dot11txpn._byte_.TSC4;\
-	pattrib_iv[7] = dot11txpn._byte_.TSC5;\
-	dot11txpn.val = dot11txpn.val == 0xffffffffffffULL ? 0 : (dot11txpn.val + 1);\
-} while (0)
-
-
-#define HWXMIT_ENTRY	4
-
-/*  For Buffer Descriptor ring architecture */
-#define TXDESC_SIZE 40
-
-#define TXDESC_OFFSET TXDESC_SIZE
-
-#define TXDESC_40_BYTES
-
-struct tx_desc {
-	__le32 txdw0;
-	__le32 txdw1;
-	__le32 txdw2;
-	__le32 txdw3;
-	__le32 txdw4;
-	__le32 txdw5;
-	__le32 txdw6;
-	__le32 txdw7;
-
-#ifdef TXDESC_40_BYTES
-	__le32 txdw8;
-	__le32 txdw9;
-#endif
-};
-
-union txdesc {
-	struct tx_desc txdesc;
-	unsigned int value[TXDESC_SIZE>>2];
-};
-
-struct	hw_xmit	{
-	/* spinlock_t xmit_lock; */
-	/* struct list_head	pending; */
-	struct __queue *sta_queue;
-	/* struct hw_txqueue *phwtxqueue; */
-	/* signed int	txcmdcnt; */
-	int	accnt;
-};
-
-/* reduce size */
-struct pkt_attrib {
-	u8 type;
-	u8 subtype;
-	u8 bswenc;
-	u8 dhcp_pkt;
-	u16 ether_type;
-	u16 seqnum;
-	u16 pkt_hdrlen;	/* the original 802.3 pkt header len */
-	u16 hdrlen;		/* the WLAN Header Len */
-	u32 pktlen;		/* the original 802.3 pkt raw_data len (not include ether_hdr data) */
-	u32 last_txcmdsz;
-	u8 nr_frags;
-	u8 encrypt;	/* when 0 indicates no encryption; when non-zero, indicates the encryption algorithm */
-	u8 iv_len;
-	u8 icv_len;
-	u8 iv[18];
-	u8 icv[16];
-	u8 priority;
-	u8 ack_policy;
-	u8 mac_id;
-	u8 vcs_mode;	/* virtual carrier sense method */
-	u8 dst[ETH_ALEN];
-	u8 src[ETH_ALEN];
-	u8 ta[ETH_ALEN];
-	u8 ra[ETH_ALEN];
-	u8 key_idx;
-	u8 qos_en;
-	u8 ht_en;
-	u8 raid;/* rate adpative id */
-	u8 bwmode;
-	u8 ch_offset;/* PRIME_CHNL_OFFSET */
-	u8 sgi;/* short GI */
-	u8 ampdu_en;/* tx ampdu enable */
-	u8 ampdu_spacing; /* ampdu_min_spacing for peer sta's rx */
-	u8 mdata;/* more data bit */
-	u8 pctrl;/* per packet txdesc control enable */
-	u8 triggered;/* for ap mode handling Power Saving sta */
-	u8 qsel;
-	u8 order;/* order bit */
-	u8 eosp;
-	u8 rate;
-	u8 intel_proxim;
-	u8 retry_ctrl;
-	u8   mbssid;
-	u8 ldpc;
-	u8 stbc;
-	struct sta_info *psta;
-
-	u8 rtsen;
-	u8 cts2self;
-	union Keytype	dot11tkiptxmickey;
-	/* union Keytype	dot11tkiprxmickey; */
-	union Keytype	dot118021x_UncstKey;
-
-	u8 icmp_pkt;
-
-};
-
-#define WLANHDR_OFFSET	64
-
-#define NULL_FRAMETAG		(0x0)
-#define DATA_FRAMETAG		0x01
-#define MGNT_FRAMETAG		0x03
-
-enum {
-	XMITBUF_DATA = 0,
-	XMITBUF_MGNT = 1,
-	XMITBUF_CMD = 2,
-};
-
-struct  submit_ctx {
-	unsigned long submit_time; /* */
-	u32 timeout_ms; /* <0: not synchronous, 0: wait forever, >0: up to ms waiting */
-	int status; /* status for operation */
-	struct completion done;
-};
-
-enum {
-	RTW_SCTX_SUBMITTED = -1,
-	RTW_SCTX_DONE_SUCCESS = 0,
-	RTW_SCTX_DONE_UNKNOWN,
-	RTW_SCTX_DONE_TIMEOUT,
-	RTW_SCTX_DONE_BUF_ALLOC,
-	RTW_SCTX_DONE_BUF_FREE,
-	RTW_SCTX_DONE_WRITE_PORT_ERR,
-	RTW_SCTX_DONE_TX_DESC_NA,
-	RTW_SCTX_DONE_TX_DENY,
-	RTW_SCTX_DONE_CCX_PKT_FAIL,
-	RTW_SCTX_DONE_DRV_STOP,
-	RTW_SCTX_DONE_DEV_REMOVE,
-	RTW_SCTX_DONE_CMD_ERROR,
-};
-
-
-void rtw_sctx_init(struct submit_ctx *sctx, int timeout_ms);
-int rtw_sctx_wait(struct submit_ctx *sctx);
-void rtw_sctx_done_err(struct submit_ctx **sctx, int status);
-void rtw_sctx_done(struct submit_ctx **sctx);
-
-struct xmit_buf {
-	struct list_head	list;
-
-	struct adapter *padapter;
-
-	u8 *pallocated_buf;
-
-	u8 *pbuf;
-
-	void *priv_data;
-
-	u16 buf_tag; /*  0: Normal xmitbuf, 1: extension xmitbuf, 2:cmd xmitbuf */
-	u16 flags;
-	u32 alloc_sz;
-
-	u32  len;
-
-	struct submit_ctx *sctx;
-
-	u8 *phead;
-	u8 *pdata;
-	u8 *ptail;
-	u8 *pend;
-	u32 ff_hwaddr;
-	u8 pg_num;
-	u8 agg_num;
-};
-
-
-struct xmit_frame {
-	struct list_head	list;
-
-	struct pkt_attrib attrib;
-
-	struct sk_buff *pkt;
-
-	int	frame_tag;
-
-	struct adapter *padapter;
-
-	u8 *buf_addr;
-
-	struct xmit_buf *pxmitbuf;
-
-	u8 pg_num;
-	u8 agg_num;
-
-	u8 ack_report;
-
-	u8 *alloc_addr; /* the actual address this xmitframe allocated */
-	u8 ext_tag; /* 0:data, 1:mgmt */
-
-};
-
-struct tx_servq {
-	struct list_head	tx_pending;
-	struct __queue	sta_pending;
-	int qcnt;
-};
-
-
-struct sta_xmit_priv {
-	spinlock_t	lock;
-	signed int	option;
-	signed int	apsd_setting;	/* When bit mask is on, the associated edca queue supports APSD. */
-
-
-	/* struct tx_servq blk_q[MAX_NUMBLKS]; */
-	struct tx_servq	be_q;			/* priority == 0, 3 */
-	struct tx_servq	bk_q;			/* priority == 1, 2 */
-	struct tx_servq	vi_q;			/* priority == 4, 5 */
-	struct tx_servq	vo_q;			/* priority == 6, 7 */
-	struct list_head	legacy_dz;
-	struct list_head  apsd;
-
-	u16 txseq_tid[16];
-
-	/* uint	sta_tx_bytes; */
-	/* u64	sta_tx_pkts; */
-	/* uint	sta_tx_fail; */
-
-
-};
-
-
-struct	hw_txqueue	{
-	volatile signed int	head;
-	volatile signed int	tail;
-	volatile signed int	free_sz;	/* in units of 64 bytes */
-	volatile signed int      free_cmdsz;
-	volatile signed int	 txsz[8];
-	uint	ff_hwaddr;
-	uint	cmd_hwaddr;
-	signed int	ac_tag;
-};
-
-enum cmdbuf_type {
-	CMDBUF_BEACON = 0x00,
-	CMDBUF_RSVD,
-	CMDBUF_MAX
-};
-
-struct	xmit_priv {
-
-	spinlock_t	lock;
-
-	struct completion xmit_comp;
-	struct completion terminate_xmitthread_comp;
-
-	/* struct __queue	blk_strms[MAX_NUMBLKS]; */
-	struct __queue	be_pending;
-	struct __queue	bk_pending;
-	struct __queue	vi_pending;
-	struct __queue	vo_pending;
-	struct __queue	bm_pending;
-
-	/* struct __queue	legacy_dz_queue; */
-	/* struct __queue	apsd_queue; */
-
-	u8 *pallocated_frame_buf;
-	u8 *pxmit_frame_buf;
-	uint free_xmitframe_cnt;
-	struct __queue	free_xmit_queue;
-
-	/* uint mapping_addr; */
-	/* uint pkt_sz; */
-
-	u8 *xframe_ext_alloc_addr;
-	u8 *xframe_ext;
-	uint free_xframe_ext_cnt;
-	struct __queue free_xframe_ext_queue;
-
-	/* struct	hw_txqueue	be_txqueue; */
-	/* struct	hw_txqueue	bk_txqueue; */
-	/* struct	hw_txqueue	vi_txqueue; */
-	/* struct	hw_txqueue	vo_txqueue; */
-	/* struct	hw_txqueue	bmc_txqueue; */
-
-	uint	frag_len;
-
-	struct adapter	*adapter;
-
-	u8   vcs_setting;
-	u8 vcs;
-	u8 vcs_type;
-	/* u16  rts_thresh; */
-
-	u64	tx_bytes;
-	u64	tx_pkts;
-	u64	tx_drop;
-	u64	last_tx_pkts;
-
-	struct hw_xmit *hwxmits;
-	u8 hwxmit_entry;
-
-	u8 wmm_para_seq[4];/* sequence for wmm ac parameter strength from large to small. it's value is 0->vo, 1->vi, 2->be, 3->bk. */
-
-	void *SdioXmitThread;
-	struct completion SdioXmitStart;
-	struct completion SdioXmitTerminate;
-
-	struct __queue free_xmitbuf_queue;
-	struct __queue pending_xmitbuf_queue;
-	u8 *pallocated_xmitbuf;
-	u8 *pxmitbuf;
-	uint free_xmitbuf_cnt;
-
-	struct __queue free_xmit_extbuf_queue;
-	u8 *pallocated_xmit_extbuf;
-	u8 *pxmit_extbuf;
-	uint free_xmit_extbuf_cnt;
-
-	struct xmit_buf	pcmd_xmitbuf[CMDBUF_MAX];
-
-	u16 nqos_ssn;
-
-	int	ack_tx;
-	struct mutex ack_tx_mutex;
-	struct submit_ctx ack_tx_ops;
-	u8 seq_no;
-	spinlock_t lock_sctx;
-};
-
-extern struct xmit_frame *__rtw_alloc_cmdxmitframe(struct xmit_priv *pxmitpriv,
-		enum cmdbuf_type buf_type);
-#define rtw_alloc_cmdxmitframe(p) __rtw_alloc_cmdxmitframe(p, CMDBUF_RSVD)
-#define rtw_alloc_bcnxmitframe(p) __rtw_alloc_cmdxmitframe(p, CMDBUF_BEACON)
-
-extern struct xmit_buf *rtw_alloc_xmitbuf_ext(struct xmit_priv *pxmitpriv);
-extern s32 rtw_free_xmitbuf_ext(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf);
-
-extern struct xmit_buf *rtw_alloc_xmitbuf(struct xmit_priv *pxmitpriv);
-extern s32 rtw_free_xmitbuf(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf);
-
-void rtw_count_tx_stats(struct adapter *padapter, struct xmit_frame *pxmitframe, int sz);
-extern void rtw_update_protection(struct adapter *padapter, u8 *ie, uint ie_len);
-extern int rtw_make_wlanhdr(struct adapter *padapter, u8 *hdr, struct pkt_attrib *pattrib);
-extern s32 rtw_put_snap(u8 *data, u16 h_proto);
-
-extern struct xmit_frame *rtw_alloc_xmitframe(struct xmit_priv *pxmitpriv);
-struct xmit_frame *rtw_alloc_xmitframe_ext(struct xmit_priv *pxmitpriv);
-struct xmit_frame *rtw_alloc_xmitframe_once(struct xmit_priv *pxmitpriv);
-extern s32 rtw_free_xmitframe(struct xmit_priv *pxmitpriv, struct xmit_frame *pxmitframe);
-extern void rtw_free_xmitframe_queue(struct xmit_priv *pxmitpriv, struct __queue *pframequeue);
-struct tx_servq *rtw_get_sta_pending(struct adapter *padapter, struct sta_info *psta, signed int up, u8 *ac);
-int rtw_xmitframe_enqueue(struct adapter *padapter, struct xmit_frame *pxmitframe);
-
-extern u32 rtw_calculate_wlan_pkt_size_by_attribue(struct pkt_attrib *pattrib);
-#define rtw_wlan_pkt_size(f) rtw_calculate_wlan_pkt_size_by_attribue(&f->attrib)
-extern int rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct xmit_frame *pxmitframe);
-extern s32 rtw_mgmt_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct xmit_frame *pxmitframe);
-s32 _rtw_init_hw_txqueue(struct hw_txqueue *phw_txqueue, u8 ac_tag);
-void _rtw_init_sta_xmit_priv(struct sta_xmit_priv *psta_xmitpriv);
-
-
-s32 rtw_txframes_pending(struct adapter *padapter);
-void rtw_init_hwxmits(struct hw_xmit *phwxmit, signed int entry);
-
-
-s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter);
-void _rtw_free_xmit_priv(struct xmit_priv *pxmitpriv);
-
-
-void rtw_free_hwxmits(struct adapter *padapter);
-
-
-s32 rtw_xmit(struct adapter *padapter, struct sk_buff **pkt);
-bool xmitframe_hiq_filter(struct xmit_frame *xmitframe);
-
-signed int xmitframe_enqueue_for_sleeping_sta(struct adapter *padapter, struct xmit_frame *pxmitframe);
-void stop_sta_xmit(struct adapter *padapter, struct sta_info *psta);
-void wakeup_sta_to_xmit(struct adapter *padapter, struct sta_info *psta);
-void xmit_delivery_enabled_frames(struct adapter *padapter, struct sta_info *psta);
-
-u8 query_ra_short_GI(struct sta_info *psta);
-
-u8 qos_acm(u8 acm_mask, u8 priority);
-
-void enqueue_pending_xmitbuf(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf);
-void enqueue_pending_xmitbuf_to_head(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf);
-struct xmit_buf *dequeue_pending_xmitbuf(struct xmit_priv *pxmitpriv);
-struct xmit_buf *dequeue_pending_xmitbuf_under_survey(struct xmit_priv *pxmitpriv);
-signed int	check_pending_xmitbuf(struct xmit_priv *pxmitpriv);
-int	rtw_xmit_thread(void *context);
-
-u32 rtw_get_ff_hwaddr(struct xmit_frame	*pxmitframe);
-
-int rtw_ack_tx_wait(struct xmit_priv *pxmitpriv, u32 timeout_ms);
-void rtw_ack_tx_done(struct xmit_priv *pxmitpriv, int status);
-
-/* include after declaring struct xmit_buf, in order to avoid warning */
-#include <xmit_osdep.h>
-
-#endif	/* _RTL871X_XMIT_H_ */
diff --git a/drivers/staging/rtl8723bs/include/sdio_hal.h b/drivers/staging/rtl8723bs/include/sdio_hal.h
deleted file mode 100644
index 6538253765f1..000000000000
--- a/drivers/staging/rtl8723bs/include/sdio_hal.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __SDIO_HAL_H__
-#define __SDIO_HAL_H__
-
-u8 sd_int_isr(struct adapter *padapter);
-void sd_int_dpc(struct adapter *padapter);
-void rtw_set_hal_ops(struct adapter *padapter);
-
-#endif /* __SDIO_HAL_H__ */
diff --git a/drivers/staging/rtl8723bs/include/sdio_ops.h b/drivers/staging/rtl8723bs/include/sdio_ops.h
deleted file mode 100644
index 252b0e1646e5..000000000000
--- a/drivers/staging/rtl8723bs/include/sdio_ops.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __SDIO_OPS_H__
-#define __SDIO_OPS_H__
-
-
-#include <sdio_ops_linux.h>
-
-extern void sdio_set_intf_ops(struct adapter *padapter, struct _io_ops *pops);
-
-/* extern void sdio_func1cmd52_read(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *rmem); */
-/* extern void sdio_func1cmd52_write(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *wmem); */
-extern u8 SdioLocalCmd52Read1Byte(struct adapter *padapter, u32 addr);
-extern void SdioLocalCmd52Write1Byte(struct adapter *padapter, u32 addr, u8 v);
-extern s32 sdio_local_read(struct adapter *padapter, u32 addr, u32 cnt, u8 *pbuf);
-extern s32 sdio_local_write(struct adapter *padapter, u32 addr, u32 cnt, u8 *pbuf);
-
-u32 _sdio_read32(struct adapter *padapter, u32 addr);
-s32 _sdio_write32(struct adapter *padapter, u32 addr, u32 val);
-
-extern void sd_int_hdl(struct adapter *padapter);
-extern u8 CheckIPSStatus(struct adapter *padapter);
-
-extern void InitInterrupt8723BSdio(struct adapter *padapter);
-void rtw_sdio_enable_interrupt(struct adapter *padapter);
-void rtw_sdio_disable_interrupt(struct adapter *padapter);
-extern u8 HalQueryTxBufferStatus8723BSdio(struct adapter *padapter);
-extern void HalQueryTxOQTBufferStatus8723BSdio(struct adapter *padapter);
-#endif /*  !__SDIO_OPS_H__ */
diff --git a/drivers/staging/rtl8723bs/include/sdio_ops_linux.h b/drivers/staging/rtl8723bs/include/sdio_ops_linux.h
deleted file mode 100644
index cd67a7201065..000000000000
--- a/drivers/staging/rtl8723bs/include/sdio_ops_linux.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __SDIO_OPS_LINUX_H__
-#define __SDIO_OPS_LINUX_H__
-
-#define SDIO_ERR_VAL8	0xEA
-#define SDIO_ERR_VAL16	0xEAEA
-#define SDIO_ERR_VAL32	0xEAEAEAEA
-
-s32 _sd_cmd52_read(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pdata);
-s32 _sd_cmd52_write(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pdata);
-s32 sd_cmd52_read(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pdata);
-s32 sd_cmd52_write(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pdata);
-
-u8 sd_read8(struct intf_hdl *pintfhdl, u32 addr, s32 *err);
-u32 sd_read32(struct intf_hdl *pintfhdl, u32 addr, s32 *err);
-s32 _sd_read(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, void *pdata);
-s32 sd_read(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, void *pdata);
-void sd_write8(struct intf_hdl *pintfhdl, u32 addr, u8 v, s32 *err);
-void sd_write32(struct intf_hdl *pintfhdl, u32 addr, u32 v, s32 *err);
-s32 _sd_write(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, void *pdata);
-s32 sd_write(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, void *pdata);
-
-void rtw_sdio_set_irq_thd(struct dvobj_priv *dvobj, void *thd_hdl);
-#endif
diff --git a/drivers/staging/rtl8723bs/include/sta_info.h b/drivers/staging/rtl8723bs/include/sta_info.h
deleted file mode 100644
index 0f53e77c110c..000000000000
--- a/drivers/staging/rtl8723bs/include/sta_info.h
+++ /dev/null
@@ -1,330 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __STA_INFO_H_
-#define __STA_INFO_H_
-
-
-#define IBSS_START_MAC_ID	2
-#define NUM_STA 32
-#define NUM_ACL 16
-
-
-/* if mode == 0, then the sta is allowed once the addr is hit. */
-/* if mode == 1, then the sta is rejected once the addr is non-hit. */
-struct rtw_wlan_acl_node {
-	struct list_head list;
-	u8		 addr[ETH_ALEN];
-	u8		 valid;
-};
-
-/* mode = 0, disable */
-/* mode = 1, accept unless in deny list */
-/* mode =2, deny unless in accept list */
-struct wlan_acl_pool {
-	int mode;
-	int num;
-	struct rtw_wlan_acl_node aclnode[NUM_ACL];
-	struct __queue	acl_node_q;
-};
-
-struct rssi_sta {
-	s32	UndecoratedSmoothedPWDB;
-	s32	UndecoratedSmoothedCCK;
-	s32	UndecoratedSmoothedOFDM;
-	u64	PacketMap;
-	u8 ValidBit;
-};
-
-struct	stainfo_stats	{
-
-	u64 rx_mgnt_pkts;
-		u64 rx_beacon_pkts;
-		u64 rx_probereq_pkts;
-		u64 rx_probersp_pkts;
-		u64 rx_probersp_bm_pkts;
-		u64 rx_probersp_uo_pkts;
-	u64 rx_ctrl_pkts;
-	u64 rx_data_pkts;
-
-	u64	last_rx_mgnt_pkts;
-		u64 last_rx_beacon_pkts;
-		u64 last_rx_probereq_pkts;
-		u64 last_rx_probersp_pkts;
-		u64 last_rx_probersp_bm_pkts;
-		u64 last_rx_probersp_uo_pkts;
-	u64	last_rx_ctrl_pkts;
-	u64	last_rx_data_pkts;
-
-	u64	rx_bytes;
-	u64	rx_drops;
-
-	u64	tx_pkts;
-	u64	tx_bytes;
-	u64  tx_drops;
-};
-
-struct sta_info {
-
-	spinlock_t	lock;
-	struct list_head	list; /* free_sta_queue */
-	struct list_head	hash_list; /* sta_hash */
-	struct adapter *padapter;
-
-	struct sta_xmit_priv sta_xmitpriv;
-	struct sta_recv_priv sta_recvpriv;
-
-	struct __queue sleep_q;
-	unsigned int sleepq_len;
-
-	uint state;
-	uint aid;
-	uint mac_id;
-	uint qos_option;
-	u8 hwaddr[ETH_ALEN];
-
-	bool ieee8021x_blocked;
-	uint	dot118021XPrivacy; /* aes, tkip... */
-	union Keytype	dot11tkiptxmickey;
-	union Keytype	dot11tkiprxmickey;
-	union Keytype	dot118021x_UncstKey;
-	union pn48		dot11txpn;			/*  PN48 used for Unicast xmit */
-	union pn48		dot11wtxpn;			/*  PN48 used for Unicast mgmt xmit. */
-	union pn48		dot11rxpn;			/*  PN48 used for Unicast recv. */
-
-
-	u8 bssrateset[16];
-	u32 bssratelen;
-	s32  rssi;
-	s32	signal_quality;
-
-	u8 cts2self;
-	u8 rtsen;
-
-	u8 raid;
-	u8 init_rate;
-	u32 ra_mask;
-	u8 wireless_mode;	/*  NETWORK_TYPE */
-	u8 bw_mode;
-
-	u8 ldpc;
-	u8 stbc;
-
-	struct stainfo_stats sta_stats;
-
-	/* for A-MPDU TX, ADDBA timeout check */
-	struct timer_list addba_retry_timer;
-
-	/* for A-MPDU Rx reordering buffer control */
-	struct recv_reorder_ctrl recvreorder_ctrl[16];
-
-	/* for A-MPDU Tx */
-	/* unsigned char 	ampdu_txen_bitmap; */
-	u16 BA_starting_seqctrl[16];
-
-
-	struct ht_priv htpriv;
-
-	/* Notes: */
-	/* STA_Mode: */
-	/* curr_network(mlme_priv/security_priv/qos/ht) + sta_info: (STA & AP) CAP/INFO */
-	/* scan_q: AP CAP/INFO */
-
-	/* AP_Mode: */
-	/* curr_network(mlme_priv/security_priv/qos/ht) : AP CAP/INFO */
-	/* sta_info: (AP & STA) CAP/INFO */
-
-	struct list_head asoc_list;
-	struct list_head auth_list;
-
-	unsigned int expire_to;
-	unsigned int auth_seq;
-	unsigned int authalg;
-	unsigned char chg_txt[128];
-
-	u16 capability;
-	int flags;
-
-	int dot8021xalg;/* 0:disable, 1:psk, 2:802.1x */
-	int wpa_psk;/* 0:disable, bit(0): WPA, bit(1):WPA2 */
-	int wpa_group_cipher;
-	int wpa2_group_cipher;
-	int wpa_pairwise_cipher;
-	int wpa2_pairwise_cipher;
-
-	u8 bpairwise_key_installed;
-
-	u8 wpa_ie[32];
-
-	u8 nonerp_set;
-	u8 no_short_slot_time_set;
-	u8 no_short_preamble_set;
-	u8 no_ht_gf_set;
-	u8 no_ht_set;
-	u8 ht_20mhz_set;
-
-	unsigned int tx_ra_bitmap;
-	u8 qos_info;
-
-	u8 max_sp_len;
-	u8 uapsd_bk;/* BIT(0): Delivery enabled, BIT(1): Trigger enabled */
-	u8 uapsd_be;
-	u8 uapsd_vi;
-	u8 uapsd_vo;
-
-	u8 has_legacy_ac;
-	unsigned int sleepq_ac_len;
-
-	u8 under_exist_checking;
-
-	u8 keep_alive_trycnt;
-
-	u8 *passoc_req;
-	u32 assoc_req_len;
-
-	/* for DM */
-	struct rssi_sta	 rssi_stat;
-
-	/* ODM_STA_INFO_T */
-	/*  ================ODM Relative Info ======================= */
-	/*  Please be care, dont declare too much structure here. It will cost memory * STA support num. */
-	/*  */
-	/*  */
-	/*  2011/10/20 MH Add for ODM STA info. */
-	/*  */
-	/*  Driver Write */
-	u8 bValid;				/*  record the sta status link or not? */
-	u8 IOTPeer;			/*  Enum value.	HT_IOT_PEER_E */
-	/*  ODM Write */
-	/* 1 PHY_STATUS_INFO */
-	u8 RSSI_Path[4];		/*  */
-	u8 RSSI_Ave;
-	u8 RXEVM[4];
-	u8 RXSNR[4];
-
-	u8 rssi_level;			/* for Refresh RA mask */
-	/*  ODM Write */
-	/* 1 TX_INFO (may changed by IC) */
-	/* TX_INFO_T		pTxInfo;		 Define in IC folder. Move lower layer. */
-	/*  */
-	/*  ================ODM Relative Info ======================= */
-	/*  */
-
-	/* To store the sequence number of received management frame */
-	u16 rx_mgmt_frame_seq_num;
-};
-
-#define sta_rx_pkts(sta) \
-	(sta->sta_stats.rx_mgnt_pkts \
-	+ sta->sta_stats.rx_ctrl_pkts \
-	+ sta->sta_stats.rx_data_pkts)
-
-#define sta_rx_data_pkts(sta) \
-	(sta->sta_stats.rx_data_pkts)
-
-#define sta_last_rx_data_pkts(sta) \
-	(sta->sta_stats.last_rx_data_pkts)
-
-#define sta_rx_beacon_pkts(sta) \
-	(sta->sta_stats.rx_beacon_pkts)
-
-#define sta_last_rx_beacon_pkts(sta) \
-	(sta->sta_stats.last_rx_beacon_pkts)
-
-#define sta_rx_probersp_pkts(sta) \
-	(sta->sta_stats.rx_probersp_pkts)
-
-#define sta_last_rx_probersp_pkts(sta) \
-	(sta->sta_stats.last_rx_probersp_pkts)
-
-#define sta_update_last_rx_pkts(sta) \
-	do { \
-		sta->sta_stats.last_rx_mgnt_pkts = sta->sta_stats.rx_mgnt_pkts; \
-		sta->sta_stats.last_rx_beacon_pkts = sta->sta_stats.rx_beacon_pkts; \
-		sta->sta_stats.last_rx_probereq_pkts = sta->sta_stats.rx_probereq_pkts; \
-		sta->sta_stats.last_rx_probersp_pkts = sta->sta_stats.rx_probersp_pkts; \
-		sta->sta_stats.last_rx_probersp_bm_pkts = sta->sta_stats.rx_probersp_bm_pkts; \
-		sta->sta_stats.last_rx_probersp_uo_pkts = sta->sta_stats.rx_probersp_uo_pkts; \
-		sta->sta_stats.last_rx_ctrl_pkts = sta->sta_stats.rx_ctrl_pkts; \
-		sta->sta_stats.last_rx_data_pkts = sta->sta_stats.rx_data_pkts; \
-	} while (0)
-
-#define STA_PKTS_FMT "(m:%llu, c:%llu, d:%llu)"
-
-struct	sta_priv {
-
-	u8 *pallocated_stainfo_buf;
-	u8 *pstainfo_buf;
-	struct __queue	free_sta_queue;
-
-	spinlock_t sta_hash_lock;
-	struct list_head   sta_hash[NUM_STA];
-	int asoc_sta_count;
-	struct __queue sleep_q;
-	struct __queue wakeup_q;
-
-	struct adapter *padapter;
-
-	struct list_head asoc_list;
-	struct list_head auth_list;
-	spinlock_t asoc_list_lock;
-	spinlock_t auth_list_lock;
-	u8 asoc_list_cnt;
-	u8 auth_list_cnt;
-
-	unsigned int auth_to;  /* sec, time to expire in authenticating. */
-	unsigned int assoc_to; /* sec, time to expire before associating. */
-	unsigned int expire_to; /* sec , time to expire after associated. */
-
-	/* pointers to STA info; based on allocated AID or NULL if AID free
-	 * AID is in the range 1-2007, so sta_aid[0] corresponders to AID 1
-	 * and so on
-	 */
-	struct sta_info *sta_aid[NUM_STA];
-
-	u16 sta_dz_bitmap;/* only support for 15 stations, aid bitmap for sleeping stations. */
-	u16 tim_bitmap;/* only support 15 stations, aid = 0~15 mapping bit0~bit15 */
-
-	u16 max_num_sta;
-
-	struct wlan_acl_pool acl_list;
-};
-
-
-static inline u32 wifi_mac_hash(u8 *mac)
-{
-	u32 x;
-
-	x = mac[0];
-	x = (x << 2) ^ mac[1];
-	x = (x << 2) ^ mac[2];
-	x = (x << 2) ^ mac[3];
-	x = (x << 2) ^ mac[4];
-	x = (x << 2) ^ mac[5];
-
-	x ^= x >> 8;
-	x  = x & (NUM_STA - 1);
-
-	return x;
-}
-
-
-extern u32 _rtw_init_sta_priv(struct sta_priv *pstapriv);
-extern u32 _rtw_free_sta_priv(struct sta_priv *pstapriv);
-
-#define stainfo_offset_valid(offset) (offset < NUM_STA && offset >= 0)
-int rtw_stainfo_offset(struct sta_priv *stapriv, struct sta_info *sta);
-struct sta_info *rtw_get_stainfo_by_offset(struct sta_priv *stapriv, int offset);
-
-extern struct sta_info *rtw_alloc_stainfo(struct	sta_priv *pstapriv, u8 *hwaddr);
-extern u32 rtw_free_stainfo(struct adapter *padapter, struct sta_info *psta);
-extern void rtw_free_all_stainfo(struct adapter *padapter);
-extern struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, u8 *hwaddr);
-extern u32 rtw_init_bcmc_stainfo(struct adapter *padapter);
-extern struct sta_info *rtw_get_bcmc_stainfo(struct adapter *padapter);
-extern u8 rtw_access_ctrl(struct adapter *padapter, u8 *mac_addr);
-
-#endif /* _STA_INFO_H_ */
diff --git a/drivers/staging/rtl8723bs/include/wifi.h b/drivers/staging/rtl8723bs/include/wifi.h
deleted file mode 100644
index 93cb83488d5d..000000000000
--- a/drivers/staging/rtl8723bs/include/wifi.h
+++ /dev/null
@@ -1,409 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef _WIFI_H_
-#define _WIFI_H_
-
-#define WLAN_HDR_A3_LEN		24
-#define WLAN_HDR_A3_QOS_LEN	26
-
-#define WLAN_WMM_LEN		24
-
-/*  This value is tested by WiFi 11n Test Plan 5.2.3. */
-/*  This test verifies the WLAN NIC can update the NAV through sending the CTS with large duration. */
-#define	WiFiNavUpperUs				30000	/*  30 ms */
-
-enum {
-	WIFI_MGT_TYPE  =	(0),
-	WIFI_CTRL_TYPE =	(BIT(2)),
-	WIFI_DATA_TYPE =	(BIT(3)),
-	WIFI_QOS_DATA_TYPE	= (BIT(7)|BIT(3)),	/*  QoS Data */
-};
-
-enum {
-
-    /*  below is for mgt frame */
-    WIFI_ASSOCREQ       = (0 | WIFI_MGT_TYPE),
-    WIFI_ASSOCRSP       = (BIT(4) | WIFI_MGT_TYPE),
-    WIFI_REASSOCREQ     = (BIT(5) | WIFI_MGT_TYPE),
-    WIFI_REASSOCRSP     = (BIT(5) | BIT(4) | WIFI_MGT_TYPE),
-    WIFI_PROBEREQ       = (BIT(6) | WIFI_MGT_TYPE),
-    WIFI_PROBERSP       = (BIT(6) | BIT(4) | WIFI_MGT_TYPE),
-    WIFI_BEACON         = (BIT(7) | WIFI_MGT_TYPE),
-    WIFI_ATIM           = (BIT(7) | BIT(4) | WIFI_MGT_TYPE),
-    WIFI_DISASSOC       = (BIT(7) | BIT(5) | WIFI_MGT_TYPE),
-    WIFI_AUTH           = (BIT(7) | BIT(5) | BIT(4) | WIFI_MGT_TYPE),
-    WIFI_DEAUTH         = (BIT(7) | BIT(6) | WIFI_MGT_TYPE),
-    WIFI_ACTION         = (BIT(7) | BIT(6) | BIT(4) | WIFI_MGT_TYPE),
-    WIFI_ACTION_NOACK = (BIT(7) | BIT(6) | BIT(5) | WIFI_MGT_TYPE),
-
-    /*  below is for control frame */
-    WIFI_NDPA         = (BIT(6) | BIT(4) | WIFI_CTRL_TYPE),
-    WIFI_PSPOLL         = (BIT(7) | BIT(5) | WIFI_CTRL_TYPE),
-    WIFI_RTS            = (BIT(7) | BIT(5) | BIT(4) | WIFI_CTRL_TYPE),
-    WIFI_CTS            = (BIT(7) | BIT(6) | WIFI_CTRL_TYPE),
-    WIFI_ACK            = (BIT(7) | BIT(6) | BIT(4) | WIFI_CTRL_TYPE),
-    WIFI_CFEND          = (BIT(7) | BIT(6) | BIT(5) | WIFI_CTRL_TYPE),
-    WIFI_CFEND_CFACK    = (BIT(7) | BIT(6) | BIT(5) | BIT(4) | WIFI_CTRL_TYPE),
-
-    /*  below is for data frame */
-    WIFI_DATA           = (0 | WIFI_DATA_TYPE),
-    WIFI_DATA_CFACK     = (BIT(4) | WIFI_DATA_TYPE),
-    WIFI_DATA_CFPOLL    = (BIT(5) | WIFI_DATA_TYPE),
-    WIFI_DATA_CFACKPOLL = (BIT(5) | BIT(4) | WIFI_DATA_TYPE),
-    WIFI_DATA_NULL      = (BIT(6) | WIFI_DATA_TYPE),
-    WIFI_CF_ACK         = (BIT(6) | BIT(4) | WIFI_DATA_TYPE),
-    WIFI_CF_POLL        = (BIT(6) | BIT(5) | WIFI_DATA_TYPE),
-    WIFI_CF_ACKPOLL     = (BIT(6) | BIT(5) | BIT(4) | WIFI_DATA_TYPE),
-    WIFI_QOS_DATA_NULL	= (BIT(6) | WIFI_QOS_DATA_TYPE),
-};
-
-#define _TO_DS_		BIT(8)
-#define _FROM_DS_	BIT(9)
-#define _MORE_FRAG_	BIT(10)
-#define _RETRY_		BIT(11)
-#define _PWRMGT_	BIT(12)
-#define _MORE_DATA_	BIT(13)
-#define _PRIVACY_	BIT(14)
-#define _ORDER_			BIT(15)
-
-#define SetToDs(pbuf)	\
-	(*(__le16 *)(pbuf) |= cpu_to_le16(_TO_DS_))
-
-#define GetToDs(pbuf)	(((*(__le16 *)(pbuf)) & cpu_to_le16(_TO_DS_)) != 0)
-
-#define SetFrDs(pbuf)	\
-	(*(__le16 *)(pbuf) |= cpu_to_le16(_FROM_DS_))
-
-#define GetFrDs(pbuf)	(((*(__le16 *)(pbuf)) & cpu_to_le16(_FROM_DS_)) != 0)
-
-#define get_tofr_ds(pframe)	((GetToDs(pframe) << 1) | GetFrDs(pframe))
-
-#define SetMFrag(pbuf)	\
-	(*(__le16 *)(pbuf) |= cpu_to_le16(_MORE_FRAG_))
-
-#define GetMFrag(pbuf)	(((*(__le16 *)(pbuf)) & cpu_to_le16(_MORE_FRAG_)) != 0)
-
-#define ClearMFrag(pbuf)	\
-	(*(__le16 *)(pbuf) &= (~cpu_to_le16(_MORE_FRAG_)))
-
-#define GetRetry(pbuf)	(((*(__le16 *)(pbuf)) & cpu_to_le16(_RETRY_)) != 0)
-
-#define ClearRetry(pbuf)	\
-	(*(__le16 *)(pbuf) &= (~cpu_to_le16(_RETRY_)))
-
-#define SetPwrMgt(pbuf)	\
-	(*(__le16 *)(pbuf) |= cpu_to_le16(_PWRMGT_))
-
-#define GetPwrMgt(pbuf)	(((*(__le16 *)(pbuf)) & cpu_to_le16(_PWRMGT_)) != 0)
-
-#define ClearPwrMgt(pbuf)	\
-	(*(__le16 *)(pbuf) &= (~cpu_to_le16(_PWRMGT_)))
-
-#define SetMData(pbuf)	\
-	(*(__le16 *)(pbuf) |= cpu_to_le16(_MORE_DATA_))
-
-#define GetMData(pbuf)	(((*(__le16 *)(pbuf)) & cpu_to_le16(_MORE_DATA_)) != 0)
-
-#define ClearMData(pbuf)	\
-	(*(__le16 *)(pbuf) &= (~cpu_to_le16(_MORE_DATA_)))
-
-#define SetPrivacy(pbuf)	\
-	(*(__le16 *)(pbuf) |= cpu_to_le16(_PRIVACY_))
-
-#define GetPrivacy(pbuf)					\
-	(((*(__le16 *)(pbuf)) & cpu_to_le16(_PRIVACY_)) != 0)
-
-#define GetOrder(pbuf)					\
-	(((*(__le16 *)(pbuf)) & cpu_to_le16(_ORDER_)) != 0)
-
-#define GetFrameType(pbuf)				\
-	(le16_to_cpu(*(__le16 *)(pbuf)) & (BIT(3) | BIT(2)))
-
-#define SetFrameType(pbuf, type)	\
-	do {	\
-		*(unsigned short *)(pbuf) &= cpu_to_le16(~(BIT(3) | BIT(2))); \
-		*(unsigned short *)(pbuf) |= cpu_to_le16(type); \
-	} while (0)
-
-#define GetFrameSubType(pbuf)	(le16_to_cpu(*(__le16 *)(pbuf)) & (BIT(7) |\
-	 BIT(6) | BIT(5) | BIT(4) | BIT(3) | BIT(2)))
-
-#define SetFrameSubType(pbuf, type) \
-	do {    \
-		*(__le16 *)(pbuf) &= cpu_to_le16(~(BIT(7) | BIT(6) |	\
-		 BIT(5) | BIT(4) | BIT(3) | BIT(2))); \
-		*(__le16 *)(pbuf) |= cpu_to_le16(type); \
-	} while (0)
-
-#define GetSequence(pbuf)			\
-	(le16_to_cpu(*(__le16 *)((size_t)(pbuf) + 22)) >> 4)
-
-#define GetFragNum(pbuf)			\
-	(le16_to_cpu(*(__le16 *)((size_t)(pbuf) + 22)) & 0x0f)
-
-#define SetFragNum(pbuf, num) \
-	do {    \
-		*(unsigned short *)((size_t)(pbuf) + 22) = \
-			((*(unsigned short *)((size_t)(pbuf) + 22)) &	\
-			le16_to_cpu(~(0x000f))) | \
-			cpu_to_le16(0x0f & (num));     \
-	} while (0)
-
-#define SetSeqNum(pbuf, num) \
-	do {    \
-		*(__le16 *)((size_t)(pbuf) + 22) = \
-			((*(__le16 *)((size_t)(pbuf) + 22)) & cpu_to_le16((unsigned short)0x000f)) | \
-			cpu_to_le16((unsigned short)(0xfff0 & (num << 4))); \
-	} while (0)
-
-#define SetDuration(pbuf, dur) \
-	(*(__le16 *)((size_t)(pbuf) + 2) = cpu_to_le16(0xffff & (dur)))
-
-#define SetPriority(pbuf, tid)	\
-	(*(__le16 *)(pbuf) |= cpu_to_le16(tid & 0xf))
-
-#define GetPriority(pbuf)	((le16_to_cpu(*(__le16 *)(pbuf))) & 0xf)
-
-#define SetEOSP(pbuf, eosp)	\
-		(*(__le16 *)(pbuf) |= cpu_to_le16((eosp & 1) << 4))
-
-#define SetAckpolicy(pbuf, ack)	\
-	(*(__le16 *)(pbuf) |= cpu_to_le16((ack & 3) << 5))
-
-#define GetAckpolicy(pbuf) (((le16_to_cpu(*(__le16 *)pbuf)) >> 5) & 0x3)
-
-#define GetAMsdu(pbuf) (((le16_to_cpu(*(__le16 *)pbuf)) >> 7) & 0x1)
-
-#define GetAid(pbuf)	(le16_to_cpu(*(__le16 *)((size_t)(pbuf) + 2)) & 0x3fff)
-
-#define GetAddr1Ptr(pbuf)	((unsigned char *)((size_t)(pbuf) + 4))
-
-#define GetAddr2Ptr(pbuf)	((unsigned char *)((size_t)(pbuf) + 10))
-
-#define GetAddr3Ptr(pbuf)	((unsigned char *)((size_t)(pbuf) + 16))
-
-#define GetAddr4Ptr(pbuf)	((unsigned char *)((size_t)(pbuf) + 24))
-
-static inline unsigned char *rtl8723bs_get_ra(unsigned char *pframe)
-{
-	unsigned char *ra;
-
-	ra = GetAddr1Ptr(pframe);
-	return ra;
-}
-
-static inline unsigned char *get_ta(unsigned char *pframe)
-{
-	unsigned char *ta;
-
-	ta = GetAddr2Ptr(pframe);
-	return ta;
-}
-
-static inline unsigned char *get_da(unsigned char *pframe)
-{
-	unsigned char *da;
-	unsigned int	to_fr_ds	= (GetToDs(pframe) << 1) | GetFrDs(pframe);
-
-	switch (to_fr_ds) {
-	case 0x00:	/*  ToDs = 0, FromDs = 0 */
-		da = GetAddr1Ptr(pframe);
-		break;
-	case 0x01:	/*  ToDs = 0, FromDs = 1 */
-		da = GetAddr1Ptr(pframe);
-		break;
-	case 0x02:	/*  ToDs = 1, FromDs = 0 */
-		da = GetAddr3Ptr(pframe);
-		break;
-	default:	/*  ToDs = 1, FromDs = 1 */
-		da = GetAddr3Ptr(pframe);
-		break;
-	}
-
-	return da;
-}
-
-static inline unsigned char *get_sa(unsigned char *pframe)
-{
-	unsigned char *sa;
-	unsigned int	to_fr_ds	= (GetToDs(pframe) << 1) | GetFrDs(pframe);
-
-	switch (to_fr_ds) {
-	case 0x00:	/*  ToDs = 0, FromDs = 0 */
-		sa = GetAddr2Ptr(pframe);
-		break;
-	case 0x01:	/*  ToDs = 0, FromDs = 1 */
-		sa = GetAddr3Ptr(pframe);
-		break;
-	case 0x02:	/*  ToDs = 1, FromDs = 0 */
-		sa = GetAddr2Ptr(pframe);
-		break;
-	default:	/*  ToDs = 1, FromDs = 1 */
-		sa = GetAddr4Ptr(pframe);
-		break;
-	}
-
-	return sa;
-}
-
-static inline unsigned char *get_hdr_bssid(unsigned char *pframe)
-{
-	unsigned char *sa = NULL;
-	unsigned int	to_fr_ds	= (GetToDs(pframe) << 1) | GetFrDs(pframe);
-
-	switch (to_fr_ds) {
-	case 0x00:	/*  ToDs = 0, FromDs = 0 */
-		sa = GetAddr3Ptr(pframe);
-		break;
-	case 0x01:	/*  ToDs = 0, FromDs = 1 */
-		sa = GetAddr2Ptr(pframe);
-		break;
-	case 0x02:	/*  ToDs = 1, FromDs = 0 */
-		sa = GetAddr1Ptr(pframe);
-		break;
-	case 0x03:	/*  ToDs = 1, FromDs = 1 */
-		sa = GetAddr1Ptr(pframe);
-		break;
-	}
-
-	return sa;
-}
-
-static inline int IsFrameTypeCtrl(unsigned char *pframe)
-{
-	return GetFrameType(pframe) == WIFI_CTRL_TYPE;
-}
-
-/*-----------------------------------------------------------------------------
-			Below is for the security related definition
-------------------------------------------------------------------------------*/
-
-#define _ASOCREQ_IE_OFFSET_		4	/*  excluding wlan_hdr */
-#define _REASOCREQ_IE_OFFSET_	10
-#define _PROBEREQ_IE_OFFSET_	0
-#define	_PROBERSP_IE_OFFSET_	12
-#define _AUTH_IE_OFFSET_		6
-#define _BEACON_IE_OFFSET_		12
-
-#define _FIXED_IE_LENGTH_			_BEACON_IE_OFFSET_
-
-/* ---------------------------------------------------------------------------
-					Below is the fixed elements...
------------------------------------------------------------------------------*/
-#define _AUTH_ALGM_NUM_			2
-#define _AUTH_SEQ_NUM_			2
-#define _BEACON_ITERVAL_		2
-#define _CAPABILITY_			2
-#define _RSON_CODE_				2
-#define _ASOC_ID_				2
-#define _STATUS_CODE_			2
-#define _TIMESTAMP_				8
-
-/*-----------------------------------------------------------------------------
-				Below is the definition for 802.11i / 802.1x
-------------------------------------------------------------------------------*/
-#define _IEEE8021X_MGT_			1		/*  WPA */
-#define _IEEE8021X_PSK_			2		/*  WPA with pre-shared key */
-
-#define _MME_IE_LENGTH_  18
-/*-----------------------------------------------------------------------------
-				Below is the definition for WMM
-------------------------------------------------------------------------------*/
-#define _WMM_IE_Length_				7  /*  for WMM STA */
-
-/*-----------------------------------------------------------------------------
-				Below is the definition for 802.11n
-------------------------------------------------------------------------------*/
-#define GetOrderBit(pbuf)	(((*(unsigned short *)(pbuf)) & cpu_to_le16(_ORDER_)) != 0)
-
-#define ACT_CAT_VENDOR				0x7F/* 127 */
-
-/**
- * struct rtw_ieee80211_ht_cap - HT additional information
- *
- * This structure refers to "HT information element" as
- * described in 802.11n draft section 7.3.2.53
- */
-struct ieee80211_ht_addt_info {
-	unsigned char control_chan;
-	unsigned char ht_param;
-	__le16 operation_mode;
-	__le16 stbc_param;
-	unsigned char basic_set[16];
-} __packed;
-
-struct HT_caps_element {
-	union {
-		struct {
-			__le16 HT_caps_info;
-			unsigned char AMPDU_para;
-			unsigned char MCS_rate[16];
-			__le16 HT_ext_caps;
-			__le16 Beamforming_caps;
-			unsigned char ASEL_caps;
-		} HT_cap_element;
-		unsigned char HT_cap[26];
-	} u;
-} __packed;
-
-struct HT_info_element {
-	unsigned char primary_channel;
-	unsigned char infos[5];
-	unsigned char MCS_rate[16];
-} __packed;
-
-struct AC_param {
-	unsigned char ACI_AIFSN;
-	unsigned char CW;
-	__le16 TXOP_limit;
-} __packed;
-
-struct WMM_para_element {
-	unsigned char QoS_info;
-	unsigned char reserved;
-	struct AC_param ac_param[4];
-} __packed;
-
-struct ADDBA_request {
-	unsigned char dialog_token;
-	__le16 BA_para_set;
-	__le16 BA_timeout_value;
-	__le16 BA_starting_seqctrl;
-} __packed;
-
-/* 802.11n HT capabilities masks */
-#define IEEE80211_HT_CAP_LDPC_CODING		0x0001
-#define IEEE80211_HT_CAP_SUP_WIDTH		0x0002
-#define IEEE80211_HT_CAP_SM_PS			0x000C
-#define IEEE80211_HT_CAP_GRN_FLD		0x0010
-#define IEEE80211_HT_CAP_SGI_20			0x0020
-#define IEEE80211_HT_CAP_SGI_40			0x0040
-#define IEEE80211_HT_CAP_TX_STBC			0x0080
-#define IEEE80211_HT_CAP_RX_STBC_1R		0x0100
-#define IEEE80211_HT_CAP_RX_STBC_3R		0x0300
-#define IEEE80211_HT_CAP_MAX_AMSDU		0x0800
-#define IEEE80211_HT_CAP_DSSSCCK40		0x1000
-/* 802.11n HT capability AMPDU settings */
-#define IEEE80211_HT_CAP_AMPDU_FACTOR		0x03
-#define IEEE80211_HT_CAP_AMPDU_DENSITY		0x1C
-
-/* endif */
-
-/* 	===============WPS Section =============== */
-/* 	WPS attribute ID */
-#define WPS_ATTR_SELECTED_REGISTRAR	0x1041
-
-#define IP_MCAST_MAC(mac)		((mac[0] == 0x01) && (mac[1] == 0x00) && (mac[2] == 0x5e))
-#define ICMPV6_MCAST_MAC(mac)	((mac[0] == 0x33) && (mac[1] == 0x33) && (mac[2] != 0xff))
-
-/* Regulatroy Domain */
-struct regd_pair_mapping {
-	u16 reg_dmnenum;
-	u16 reg_2ghz_ctl;
-};
-
-#endif /*  _WIFI_H_ */
diff --git a/drivers/staging/rtl8723bs/include/wlan_bssdef.h b/drivers/staging/rtl8723bs/include/wlan_bssdef.h
deleted file mode 100644
index f4c1456f1476..000000000000
--- a/drivers/staging/rtl8723bs/include/wlan_bssdef.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __WLAN_BSSDEF_H__
-#define __WLAN_BSSDEF_H__
-
-
-#define MAX_IE_SZ	768
-
-
-#define NDIS_802_11_LENGTH_SSID         32
-#define NDIS_802_11_LENGTH_RATES        8
-#define NDIS_802_11_LENGTH_RATES_EX     16
-
-typedef unsigned char   NDIS_802_11_RATES[NDIS_802_11_LENGTH_RATES];        /*  Set of 8 data rates */
-typedef unsigned char   NDIS_802_11_RATES_EX[NDIS_802_11_LENGTH_RATES_EX];  /*  Set of 16 data rates */
-
-struct ndis_802_11_ssid {
-	u32 ssid_length;
-	u8 ssid[32];
-};
-
-/*
- * FW will only save the channel number in DSConfig.
- * ODI Handler will convert the channel number to freq. number.
- */
-struct ndis_802_11_conf {
-	u32 length;             /*  Length of structure */
-	u32 beacon_period;       /*  units are Kusec */
-	u32 atim_window;         /*  units are Kusec */
-	u32 ds_config;           /*  Frequency, units are kHz */
-};
-
-struct ndis_802_11_fix_ie {
-	u8 time_stamp[8];
-	u16 beacon_interval;
-	u16 capabilities;
-};
-
-struct ndis_80211_var_ie {
-	u8 element_id;
-	u8 length;
-	u8 data[];
-};
-
-/* Length is the 4 bytes multiples of the sum of
- * ETH_ALEN + 2 +
- * sizeof (struct ndis_802_11_ssid) + sizeof (u32) +
- * sizeof (long) +
- * sizeof (struct ndis_802_11_conf) + sizeof (NDIS_802_11_RATES_EX) + ie_length
- *
- * Except for ie_length, all other fields are fixed length. Therefore, we can
- * define a macro to present the partial sum.
- */
-enum ndis_802_11_authentication_mode {
-	Ndis802_11AuthModeOpen,
-	Ndis802_11AuthModeShared,
-	Ndis802_11AuthModeAutoSwitch,
-	Ndis802_11AuthModeWPA,
-	Ndis802_11AuthModeWPAPSK,
-	Ndis802_11AuthModeWPANone,
-	Ndis802_11AuthModeWAPI,
-	Ndis802_11AuthModeMax   /*  Not a real mode, defined as upper bound */
-};
-
-enum {
-	Ndis802_11WEPEnabled,
-	Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
-	Ndis802_11WEPDisabled,
-	Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
-	Ndis802_11WEPKeyAbsent,
-	Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
-	Ndis802_11WEPNotSupported,
-	Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
-	Ndis802_11Encryption2Enabled,
-	Ndis802_11Encryption2KeyAbsent,
-	Ndis802_11Encryption3Enabled,
-	Ndis802_11Encryption3KeyAbsent,
-	Ndis802_11_EncrypteionWAPI
-};
-
-#define NDIS_802_11_AI_REQFI_CAPABILITIES      1
-#define NDIS_802_11_AI_REQFI_LISTENINTERVAL    2
-#define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS  4
-
-#define NDIS_802_11_AI_RESFI_CAPABILITIES      1
-#define NDIS_802_11_AI_RESFI_STATUSCODE        2
-#define NDIS_802_11_AI_RESFI_ASSOCIATIONID     4
-
-/*  Key mapping keys require a BSSID */
-
-struct ndis_802_11_wep {
-	u32 length;        /*  Length of this structure */
-	u32 key_index;      /*  0 is the per-client key, 1-N are the global keys */
-	u32 key_length;     /*  length of key in bytes */
-	u8 key_material[16];/*  variable length depending on above field */
-};
-
-/*  mask for authentication/integrity fields */
-#define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS        0x0f
-#define NDIS_802_11_AUTH_REQUEST_REAUTH			0x01
-#define NDIS_802_11_AUTH_REQUEST_KEYUPDATE		0x02
-#define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR		0x06
-#define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR		0x0E
-
-/*  MIC check time, 60 seconds. */
-#define MIC_CHECK_TIME	60000000
-
-struct wlan_phy_info {
-	u8 signal_strength;/* in percentage) */
-	u8 signal_quality;/* in percentage) */
-	u8 optimum_antenna;  /* for Antenna diversity */
-	u8 reserved_0;
-};
-
-struct wlan_bcn_info {
-	/* these infor get from rtw_get_encrypt_info when
-	 * translate scan to UI
-	 */
-	u8 encryp_protocol;/* ENCRYP_PROTOCOL_E: OPEN/WEP/WPA/WPA2/WAPI */
-	int group_cipher; /* WPA/WPA2 group cipher */
-	int pairwise_cipher;/* WPA/WPA2/WEP pairwise cipher */
-	int is_8021x;
-
-	/* bwmode 20/40 and ch_offset UP/LOW */
-	unsigned short ht_cap_info;
-	unsigned char ht_info_infos_0;
-};
-
-/* temporally add #pragma pack for structure alignment issue of
- * struct wlan_bssid_ex and get_wlan_bssid_ex_sz()
- */
-struct wlan_bssid_ex {
-	u32 length;
-	u8 mac_address[ETH_ALEN];
-	u8 reserved[2];/* 0]: IS beacon frame */
-	struct ndis_802_11_ssid ssid;
-	u32 privacy;
-	long rssi;/* in dBM, raw data , get from PHY) */
-	struct ndis_802_11_conf configuration;
-	enum nl80211_iftype infrastructure_mode;
-	NDIS_802_11_RATES_EX supported_rates;
-	struct wlan_phy_info phy_info;
-	u32 ie_length;
-	u8 ies[MAX_IE_SZ];	/* timestamp, beacon interval, and capability information) */
-} __packed;
-
-static inline uint get_wlan_bssid_ex_sz(struct wlan_bssid_ex *bss)
-{
-	return (sizeof(struct wlan_bssid_ex) - MAX_IE_SZ + bss->ie_length);
-}
-
-struct wlan_network {
-	struct list_head list;
-	int network_type;	/* refer to ieee80211.h for WIRELESS_11A/B/G */
-	int fixed;			/*  set to fixed when not to be removed as site-surveying */
-	unsigned long last_scanned; /* timestamp for the network */
-	int aid;			/* will only be valid when a BSS is joinned. */
-	int join_res;
-	struct wlan_bssid_ex network; /* must be the last item */
-	struct wlan_bcn_info bcn_info;
-};
-
-enum {
-	DISABLE_VCS,
-	ENABLE_VCS,
-	AUTO_VCS
-};
-
-enum {
-	NONE_VCS,
-	RTS_CTS,
-	CTS_TO_SELF
-};
-
-#define PWR_CAM 0
-#define PWR_MINPS 1
-#define PWR_MAXPS 2
-#define PWR_UAPSD 3
-#define PWR_VOIP 4
-
-enum {
-	NO_LIMIT,
-	TWO_MSDU,
-	FOUR_MSDU,
-	SIX_MSDU
-};
-
-#define NUM_PRE_AUTH_KEY 16
-#define NUM_PMKID_CACHE NUM_PRE_AUTH_KEY
-
-#endif /* ifndef WLAN_BSSDEF_H_ */
diff --git a/drivers/staging/rtl8723bs/include/xmit_osdep.h b/drivers/staging/rtl8723bs/include/xmit_osdep.h
deleted file mode 100644
index ee6616880d41..000000000000
--- a/drivers/staging/rtl8723bs/include/xmit_osdep.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __XMIT_OSDEP_H_
-#define __XMIT_OSDEP_H_
-
-
-struct pkt_file {
-	struct sk_buff *pkt;
-	__kernel_size_t pkt_len;	 /* the remainder length of the open_file */
-	unsigned char *cur_buffer;
-	u8 *buf_start;
-	u8 *cur_addr;
-	__kernel_size_t buf_len;
-};
-
-#define NR_XMITFRAME	256
-
-struct xmit_priv;
-struct pkt_attrib;
-struct sta_xmit_priv;
-struct xmit_frame;
-struct xmit_buf;
-
-extern void _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev);
-extern netdev_tx_t rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev);
-
-void rtw_os_xmit_schedule(struct adapter *padapter);
-
-void rtw_os_xmit_resource_free(struct adapter *padapter, struct xmit_buf *pxmitbuf, u32 free_sz, u8 flag);
-
-extern unsigned int rtw_remainder_len(struct pkt_file *pfile);
-extern void _rtw_open_pktfile(struct sk_buff *pkt, struct pkt_file *pfile);
-int _rtw_pktfile_read(struct pkt_file *pfile, u8 *rmem, unsigned int rlen);
-extern signed int rtw_endofpktfile(struct pkt_file *pfile);
-
-extern void rtw_os_pkt_complete(struct adapter *padapter, struct sk_buff *pkt);
-extern void rtw_os_xmit_complete(struct adapter *padapter, struct xmit_frame *pxframe);
-
-#endif /* __XMIT_OSDEP_H_ */
diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
deleted file mode 100644
index 3468d4114f60..000000000000
--- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
+++ /dev/null
@@ -1,2795 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#include <linux/etherdevice.h>
-#include <drv_types.h>
-#include <linux/jiffies.h>
-
-#include <rtw_wifi_regd.h>
-
-#define RTW_MAX_MGMT_TX_CNT (8)
-
-#define RTW_SCAN_IE_LEN_MAX      2304
-#define RTW_MAX_REMAIN_ON_CHANNEL_DURATION 5000 /* ms */
-#define RTW_MAX_NUM_PMKIDS 4
-
-static const u32 rtw_cipher_suites[] = {
-	WLAN_CIPHER_SUITE_WEP40,
-	WLAN_CIPHER_SUITE_WEP104,
-	WLAN_CIPHER_SUITE_TKIP,
-	WLAN_CIPHER_SUITE_CCMP,
-	WLAN_CIPHER_SUITE_AES_CMAC,
-};
-
-#define RATETAB_ENT(_rate, _rateid, _flags) \
-	{								\
-		.bitrate	= (_rate),				\
-		.hw_value	= (_rateid),				\
-		.flags		= (_flags),				\
-	}
-
-#define CHAN2G(_channel, _freq, _flags) {			\
-	.band			= NL80211_BAND_2GHZ,		\
-	.center_freq		= (_freq),			\
-	.hw_value		= (_channel),			\
-	.flags			= (_flags),			\
-	.max_antenna_gain	= 0,				\
-	.max_power		= 30,				\
-}
-
-/* if wowlan is not supported, kernel generate a disconnect at each suspend
- * cf: /net/wireless/sysfs.c, so register a stub wowlan.
- * Moreover wowlan has to be enabled via a the nl80211_set_wowlan callback.
- * (from user space, e.g. iw phy0 wowlan enable)
- */
-static __maybe_unused const struct wiphy_wowlan_support wowlan_stub = {
-	.flags = WIPHY_WOWLAN_ANY,
-	.n_patterns = 0,
-	.pattern_max_len = 0,
-	.pattern_min_len = 0,
-	.max_pkt_offset = 0,
-};
-
-static struct ieee80211_rate rtw_rates[] = {
-	RATETAB_ENT(10,  0x1,   0),
-	RATETAB_ENT(20,  0x2,   0),
-	RATETAB_ENT(55,  0x4,   0),
-	RATETAB_ENT(110, 0x8,   0),
-	RATETAB_ENT(60,  0x10,  0),
-	RATETAB_ENT(90,  0x20,  0),
-	RATETAB_ENT(120, 0x40,  0),
-	RATETAB_ENT(180, 0x80,  0),
-	RATETAB_ENT(240, 0x100, 0),
-	RATETAB_ENT(360, 0x200, 0),
-	RATETAB_ENT(480, 0x400, 0),
-	RATETAB_ENT(540, 0x800, 0),
-};
-
-#define rtw_g_rates		(rtw_rates + 0)
-#define RTW_G_RATES_NUM	12
-
-#define RTW_2G_CHANNELS_NUM 14
-
-static struct ieee80211_channel rtw_2ghz_channels[] = {
-	CHAN2G(1, 2412, 0),
-	CHAN2G(2, 2417, 0),
-	CHAN2G(3, 2422, 0),
-	CHAN2G(4, 2427, 0),
-	CHAN2G(5, 2432, 0),
-	CHAN2G(6, 2437, 0),
-	CHAN2G(7, 2442, 0),
-	CHAN2G(8, 2447, 0),
-	CHAN2G(9, 2452, 0),
-	CHAN2G(10, 2457, 0),
-	CHAN2G(11, 2462, 0),
-	CHAN2G(12, 2467, 0),
-	CHAN2G(13, 2472, 0),
-	CHAN2G(14, 2484, 0),
-};
-
-static void rtw_2g_channels_init(struct ieee80211_channel *channels)
-{
-	memcpy(channels, rtw_2ghz_channels,
-	       sizeof(struct ieee80211_channel) * RTW_2G_CHANNELS_NUM
-	);
-}
-
-static void rtw_2g_rates_init(struct ieee80211_rate *rates)
-{
-	memcpy(rates, rtw_g_rates,
-	       sizeof(struct ieee80211_rate) * RTW_G_RATES_NUM
-	);
-}
-
-static struct ieee80211_supported_band *rtw_spt_band_alloc(
-	enum nl80211_band band
-	)
-{
-	struct ieee80211_supported_band *spt_band = NULL;
-	size_t channels_sz, bitrate_size;
-
-	if (band != NL80211_BAND_2GHZ)
-		goto exit;
-
-	channels_sz = array_size(RTW_2G_CHANNELS_NUM, sizeof(struct ieee80211_channel));
-	bitrate_size = array_size(RTW_G_RATES_NUM, sizeof(struct ieee80211_rate));
-
-	spt_band = kzalloc(sizeof(*spt_band) + channels_sz + bitrate_size, GFP_KERNEL);
-	if (!spt_band)
-		goto exit;
-
-	spt_band->channels = (void *)spt_band + sizeof(*spt_band);
-	spt_band->bitrates = (void *)spt_band + sizeof(*spt_band) + channels_sz;
-	spt_band->band = band;
-	spt_band->n_channels = RTW_2G_CHANNELS_NUM;
-	spt_band->n_bitrates = RTW_G_RATES_NUM;
-
-	rtw_2g_channels_init(spt_band->channels);
-	rtw_2g_rates_init(spt_band->bitrates);
-
-	/* spt_band.ht_cap */
-
-exit:
-
-	return spt_band;
-}
-
-static const struct ieee80211_txrx_stypes
-rtw_cfg80211_default_mgmt_stypes[NUM_NL80211_IFTYPES] = {
-	[NL80211_IFTYPE_ADHOC] = {
-		.tx = 0xffff,
-		.rx = BIT(IEEE80211_STYPE_ACTION >> 4)
-	},
-	[NL80211_IFTYPE_STATION] = {
-		.tx = 0xffff,
-		.rx = BIT(IEEE80211_STYPE_ACTION >> 4) |
-		BIT(IEEE80211_STYPE_PROBE_REQ >> 4)
-	},
-	[NL80211_IFTYPE_AP] = {
-		.tx = 0xffff,
-		.rx = BIT(IEEE80211_STYPE_ASSOC_REQ >> 4) |
-		BIT(IEEE80211_STYPE_REASSOC_REQ >> 4) |
-		BIT(IEEE80211_STYPE_PROBE_REQ >> 4) |
-		BIT(IEEE80211_STYPE_DISASSOC >> 4) |
-		BIT(IEEE80211_STYPE_AUTH >> 4) |
-		BIT(IEEE80211_STYPE_DEAUTH >> 4) |
-		BIT(IEEE80211_STYPE_ACTION >> 4)
-	},
-	[NL80211_IFTYPE_AP_VLAN] = {
-		/* copy AP */
-		.tx = 0xffff,
-		.rx = BIT(IEEE80211_STYPE_ASSOC_REQ >> 4) |
-		BIT(IEEE80211_STYPE_REASSOC_REQ >> 4) |
-		BIT(IEEE80211_STYPE_PROBE_REQ >> 4) |
-		BIT(IEEE80211_STYPE_DISASSOC >> 4) |
-		BIT(IEEE80211_STYPE_AUTH >> 4) |
-		BIT(IEEE80211_STYPE_DEAUTH >> 4) |
-		BIT(IEEE80211_STYPE_ACTION >> 4)
-	},
-	[NL80211_IFTYPE_P2P_CLIENT] = {
-		.tx = 0xffff,
-		.rx = BIT(IEEE80211_STYPE_ACTION >> 4) |
-		BIT(IEEE80211_STYPE_PROBE_REQ >> 4)
-	},
-	[NL80211_IFTYPE_P2P_GO] = {
-		.tx = 0xffff,
-		.rx = BIT(IEEE80211_STYPE_ASSOC_REQ >> 4) |
-		BIT(IEEE80211_STYPE_REASSOC_REQ >> 4) |
-		BIT(IEEE80211_STYPE_PROBE_REQ >> 4) |
-		BIT(IEEE80211_STYPE_DISASSOC >> 4) |
-		BIT(IEEE80211_STYPE_AUTH >> 4) |
-		BIT(IEEE80211_STYPE_DEAUTH >> 4) |
-		BIT(IEEE80211_STYPE_ACTION >> 4)
-	},
-};
-
-int rtw_ieee80211_channel_to_frequency(int chan)
-{
-	/* NL80211_BAND_2GHZ */
-	if (chan == 14)
-		return 2484;
-
-	if (chan < 14)
-		return 2407 + chan * 5;
-
-	return 0; /* not supported */
-}
-
-#define MAX_BSSINFO_LEN 1000
-struct cfg80211_bss *rtw_cfg80211_inform_bss(struct adapter *padapter, struct wlan_network *pnetwork)
-{
-	struct ieee80211_channel *notify_channel;
-	struct cfg80211_bss *bss = NULL;
-	/* struct ieee80211_supported_band *band; */
-	u16 channel;
-	u32 freq;
-	u64 notify_timestamp;
-	s32 notify_signal;
-	u8 *buf = NULL, *pbuf;
-	size_t len, bssinf_len = 0;
-	struct ieee80211_hdr *pwlanhdr;
-	__le16 *fctrl;
-
-	struct wireless_dev *wdev = padapter->rtw_wdev;
-	struct wiphy *wiphy = wdev->wiphy;
-	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
-
-	bssinf_len = pnetwork->network.ie_length + sizeof(struct ieee80211_hdr_3addr);
-	if (bssinf_len > MAX_BSSINFO_LEN)
-		goto exit;
-
-	{
-		u16 wapi_len = 0;
-
-		if (rtw_get_wapi_ie(pnetwork->network.ies, pnetwork->network.ie_length, NULL, &wapi_len) > 0) {
-			if (wapi_len > 0)
-				goto exit;
-		}
-	}
-
-	/* To reduce PBC Overlap rate */
-	/* spin_lock_bh(&pwdev_priv->scan_req_lock); */
-	if (adapter_wdev_data(padapter)->scan_request) {
-		u8 *psr = NULL, sr = 0;
-		struct ndis_802_11_ssid *pssid = &pnetwork->network.ssid;
-		struct cfg80211_scan_request *request = adapter_wdev_data(padapter)->scan_request;
-		struct cfg80211_ssid *ssids = request->ssids;
-		u32 wpsielen = 0;
-		u8 *wpsie = NULL;
-
-		wpsie = rtw_get_wps_ie(pnetwork->network.ies + _FIXED_IE_LENGTH_, pnetwork->network.ie_length - _FIXED_IE_LENGTH_, NULL, &wpsielen);
-
-		if (wpsie && wpsielen > 0)
-			psr = rtw_get_wps_attr_content(wpsie, wpsielen, WPS_ATTR_SELECTED_REGISTRAR, (u8 *)(&sr), NULL);
-
-		if (sr != 0) {
-			/* it means under processing WPS */
-			if (request->n_ssids == 1 && request->n_channels == 1) {
-				if (ssids[0].ssid_len != 0 &&
-				    (pssid->ssid_length != ssids[0].ssid_len ||
-				     memcmp(pssid->ssid, ssids[0].ssid, ssids[0].ssid_len))) {
-					if (psr)
-						*psr = 0; /* clear sr */
-				}
-			}
-		}
-	}
-	/* spin_unlock_bh(&pwdev_priv->scan_req_lock); */
-
-	channel = pnetwork->network.configuration.ds_config;
-	freq = rtw_ieee80211_channel_to_frequency(channel);
-
-	notify_channel = ieee80211_get_channel(wiphy, freq);
-
-	notify_timestamp = ktime_to_us(ktime_get_boottime());
-
-	/* We've set wiphy's signal_type as CFG80211_SIGNAL_TYPE_MBM: signal strength in mBm (100*dBm) */
-	if (check_fwstate(pmlmepriv, _FW_LINKED) &&
-	    is_same_network(&pmlmepriv->cur_network.network, &pnetwork->network, 0)) {
-		notify_signal = 100 * translate_percentage_to_dbm(padapter->recvpriv.signal_strength);/* dbm */
-	} else {
-		notify_signal = 100 * translate_percentage_to_dbm(pnetwork->network.phy_info.signal_strength);/* dbm */
-	}
-
-	buf = kzalloc(MAX_BSSINFO_LEN, GFP_ATOMIC);
-	if (!buf)
-		goto exit;
-	pbuf = buf;
-
-	pwlanhdr = (struct ieee80211_hdr *)pbuf;
-	fctrl = &(pwlanhdr->frame_control);
-	*(fctrl) = 0;
-
-	SetSeqNum(pwlanhdr, 0/*pmlmeext->mgnt_seq*/);
-	/* pmlmeext->mgnt_seq++; */
-
-	if (pnetwork->network.reserved[0] == 1) { /*  WIFI_BEACON */
-		eth_broadcast_addr(pwlanhdr->addr1);
-		SetFrameSubType(pbuf, WIFI_BEACON);
-	} else {
-		memcpy(pwlanhdr->addr1, myid(&(padapter->eeprompriv)), ETH_ALEN);
-		SetFrameSubType(pbuf, WIFI_PROBERSP);
-	}
-
-	memcpy(pwlanhdr->addr2, pnetwork->network.mac_address, ETH_ALEN);
-	memcpy(pwlanhdr->addr3, pnetwork->network.mac_address, ETH_ALEN);
-
-	pbuf += sizeof(struct ieee80211_hdr_3addr);
-	len = sizeof(struct ieee80211_hdr_3addr);
-
-	memcpy(pbuf, pnetwork->network.ies, pnetwork->network.ie_length);
-	len += pnetwork->network.ie_length;
-
-	*((__le64 *)pbuf) = cpu_to_le64(notify_timestamp);
-
-	bss = cfg80211_inform_bss_frame(wiphy, notify_channel, (struct ieee80211_mgmt *)buf,
-					len, notify_signal, GFP_ATOMIC);
-
-	if (unlikely(!bss))
-		goto free_buf;
-
-	cfg80211_put_bss(wiphy, bss);
-free_buf:
-	kfree(buf);
-
-exit:
-	return bss;
-}
-
-/*
- *	Check the given bss is valid by kernel API cfg80211_get_bss()
- *	@padapter : the given adapter
- *
- *	return true if bss is valid,  false for not found.
- */
-int rtw_cfg80211_check_bss(struct adapter *padapter)
-{
-	struct wlan_bssid_ex  *pnetwork = &(padapter->mlmeextpriv.mlmext_info.network);
-	struct cfg80211_bss *bss = NULL;
-	struct ieee80211_channel *notify_channel = NULL;
-	u32 freq;
-
-	if (!(pnetwork) || !(padapter->rtw_wdev))
-		return false;
-
-	freq = rtw_ieee80211_channel_to_frequency(pnetwork->configuration.ds_config);
-
-	notify_channel = ieee80211_get_channel(padapter->rtw_wdev->wiphy, freq);
-	bss = cfg80211_get_bss(padapter->rtw_wdev->wiphy, notify_channel,
-			       pnetwork->mac_address, pnetwork->ssid.ssid,
-			       pnetwork->ssid.ssid_length,
-			       IEEE80211_BSS_TYPE_ANY, IEEE80211_PRIVACY_ANY);
-
-	cfg80211_put_bss(padapter->rtw_wdev->wiphy, bss);
-
-	return	(bss != NULL);
-}
-
-void rtw_cfg80211_ibss_indicate_connect(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct wlan_network  *cur_network = &(pmlmepriv->cur_network);
-	struct wireless_dev *pwdev = padapter->rtw_wdev;
-	struct wiphy *wiphy = pwdev->wiphy;
-	int freq = (int)cur_network->network.configuration.ds_config;
-	struct ieee80211_channel *chan;
-
-	if (pwdev->iftype != NL80211_IFTYPE_ADHOC)
-		return;
-
-	if (!rtw_cfg80211_check_bss(padapter)) {
-		struct wlan_bssid_ex  *pnetwork = &(padapter->mlmeextpriv.mlmext_info.network);
-		struct wlan_network *scanned = pmlmepriv->cur_network_scanned;
-
-		if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
-			memcpy(&cur_network->network, pnetwork, sizeof(struct wlan_bssid_ex));
-			rtw_cfg80211_inform_bss(padapter, cur_network);
-		} else {
-			if (!scanned) {
-				WARN_ON(1);
-				return;
-			}
-			if (!memcmp(&scanned->network.ssid, &pnetwork->ssid,
-				    sizeof(struct ndis_802_11_ssid)) &&
-			    !memcmp(scanned->network.mac_address, pnetwork->mac_address, ETH_ALEN))
-				rtw_cfg80211_inform_bss(padapter, scanned);
-			else
-				WARN_ON(1);
-		}
-
-		if (!rtw_cfg80211_check_bss(padapter))
-			netdev_dbg(padapter->pnetdev,
-				   FUNC_ADPT_FMT " BSS not found !!\n",
-				   FUNC_ADPT_ARG(padapter));
-	}
-	/* notify cfg80211 that device joined an IBSS */
-	chan = ieee80211_get_channel(wiphy, freq);
-	cfg80211_ibss_joined(padapter->pnetdev, cur_network->network.mac_address, chan, GFP_ATOMIC);
-}
-
-void rtw_cfg80211_indicate_connect(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct wlan_network  *cur_network = &(pmlmepriv->cur_network);
-	struct wireless_dev *pwdev = padapter->rtw_wdev;
-
-	if (pwdev->iftype != NL80211_IFTYPE_STATION
-		&& pwdev->iftype != NL80211_IFTYPE_P2P_CLIENT
-	) {
-		return;
-	}
-
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE))
-		return;
-
-	{
-		struct wlan_bssid_ex  *pnetwork = &(padapter->mlmeextpriv.mlmext_info.network);
-		struct wlan_network *scanned = pmlmepriv->cur_network_scanned;
-
-		if (!scanned) {
-			WARN_ON(1);
-			goto check_bss;
-		}
-
-		if (!memcmp(scanned->network.mac_address, pnetwork->mac_address, ETH_ALEN) &&
-		    !memcmp(&scanned->network.ssid, &pnetwork->ssid,
-			    sizeof(struct ndis_802_11_ssid)))
-			rtw_cfg80211_inform_bss(padapter, scanned);
-		else
-			WARN_ON(1);
-	}
-
-check_bss:
-	if (!rtw_cfg80211_check_bss(padapter))
-		netdev_dbg(padapter->pnetdev,
-			   FUNC_ADPT_FMT " BSS not found !!\n",
-			   FUNC_ADPT_ARG(padapter));
-
-	if (rtw_to_roam(padapter) > 0) {
-		struct wiphy *wiphy = pwdev->wiphy;
-		struct ieee80211_channel *notify_channel;
-		u32 freq;
-		u16 channel = cur_network->network.configuration.ds_config;
-		struct cfg80211_roam_info roam_info = {};
-
-		freq = rtw_ieee80211_channel_to_frequency(channel);
-
-		notify_channel = ieee80211_get_channel(wiphy, freq);
-
-		roam_info.links[0].channel = notify_channel;
-		roam_info.links[0].bssid = cur_network->network.mac_address;
-		roam_info.req_ie =
-			pmlmepriv->assoc_req + sizeof(struct ieee80211_hdr_3addr) + 2;
-		roam_info.req_ie_len =
-			pmlmepriv->assoc_req_len - sizeof(struct ieee80211_hdr_3addr) - 2;
-		roam_info.resp_ie =
-			pmlmepriv->assoc_rsp + sizeof(struct ieee80211_hdr_3addr) + 6;
-		roam_info.resp_ie_len =
-			pmlmepriv->assoc_rsp_len - sizeof(struct ieee80211_hdr_3addr) - 6;
-		cfg80211_roamed(padapter->pnetdev, &roam_info, GFP_ATOMIC);
-	} else {
-		cfg80211_connect_result(padapter->pnetdev, cur_network->network.mac_address
-			, pmlmepriv->assoc_req + sizeof(struct ieee80211_hdr_3addr) + 2
-			, pmlmepriv->assoc_req_len - sizeof(struct ieee80211_hdr_3addr) - 2
-			, pmlmepriv->assoc_rsp + sizeof(struct ieee80211_hdr_3addr) + 6
-			, pmlmepriv->assoc_rsp_len - sizeof(struct ieee80211_hdr_3addr) - 6
-			, WLAN_STATUS_SUCCESS, GFP_ATOMIC);
-	}
-}
-
-void rtw_cfg80211_indicate_disconnect(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct wireless_dev *pwdev = padapter->rtw_wdev;
-
-	if (pwdev->iftype != NL80211_IFTYPE_STATION
-		&& pwdev->iftype != NL80211_IFTYPE_P2P_CLIENT
-	) {
-		return;
-	}
-
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE))
-		return;
-
-	if (!padapter->mlmepriv.not_indic_disco) {
-		if (check_fwstate(&padapter->mlmepriv, _FW_LINKED)) {
-			cfg80211_disconnected(padapter->pnetdev, 0,
-					      NULL, 0, true, GFP_ATOMIC);
-		} else {
-			cfg80211_connect_result(padapter->pnetdev, NULL, NULL, 0, NULL, 0,
-						WLAN_STATUS_UNSPECIFIED_FAILURE, GFP_ATOMIC/*GFP_KERNEL*/);
-		}
-	}
-}
-
-static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_param *param, u32 param_len)
-{
-	int ret = 0;
-	u32 wep_key_idx, wep_key_len;
-	struct sta_info *psta = NULL, *pbcmc_sta = NULL;
-	struct adapter *padapter = rtw_netdev_priv(dev);
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct security_priv *psecuritypriv =  &(padapter->securitypriv);
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	char *grpkey = padapter->securitypriv.dot118021XGrpKey[param->u.crypt.idx].skey;
-	char *txkey = padapter->securitypriv.dot118021XGrptxmickey[param->u.crypt.idx].skey;
-	char *rxkey = padapter->securitypriv.dot118021XGrprxmickey[param->u.crypt.idx].skey;
-
-	param->u.crypt.err = 0;
-	param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0';
-
-	if (param_len !=  sizeof(struct ieee_param) + param->u.crypt.key_len) {
-		ret =  -EINVAL;
-		goto exit;
-	}
-
-	if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff &&
-	    param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff &&
-	    param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) {
-		if (param->u.crypt.idx >= WEP_KEYS) {
-			ret = -EINVAL;
-			goto exit;
-		}
-	} else {
-		psta = rtw_get_stainfo(pstapriv, param->sta_addr);
-		if (!psta)
-			/* ret = -EINVAL; */
-			goto exit;
-	}
-
-	if (strcmp(param->u.crypt.alg, "none") == 0 && !psta)
-		goto exit;
-
-	if (strcmp(param->u.crypt.alg, "WEP") == 0 && !psta) {
-		wep_key_idx = param->u.crypt.idx;
-		wep_key_len = param->u.crypt.key_len;
-
-		if ((wep_key_idx >= WEP_KEYS) || (wep_key_len <= 0)) {
-			ret = -EINVAL;
-			goto exit;
-		}
-
-		if (wep_key_len > 0)
-			wep_key_len = wep_key_len <= 5 ? 5 : 13;
-
-		if (psecuritypriv->bWepDefaultKeyIdxSet == 0) {
-			/* wep default key has not been set, so use this key index as default key. */
-
-			psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_auto;
-			psecuritypriv->ndisencryptstatus = Ndis802_11Encryption1Enabled;
-			psecuritypriv->dot11_privacy_algrthm = _WEP40_;
-			psecuritypriv->dot118021XGrpPrivacy = _WEP40_;
-
-			if (wep_key_len == 13) {
-				psecuritypriv->dot11_privacy_algrthm = _WEP104_;
-				psecuritypriv->dot118021XGrpPrivacy = _WEP104_;
-			}
-
-			psecuritypriv->dot11PrivacyKeyIndex = wep_key_idx;
-		}
-
-		memcpy(&(psecuritypriv->dot11DefKey[wep_key_idx].skey[0]), param->u.crypt.key, wep_key_len);
-
-		psecuritypriv->dot11DefKeylen[wep_key_idx] = wep_key_len;
-
-		rtw_ap_set_wep_key(padapter, param->u.crypt.key, wep_key_len, wep_key_idx, 1);
-
-		goto exit;
-	}
-
-	/* group key */
-	if (!psta && check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		/* group key */
-		if (param->u.crypt.set_tx == 0) {
-			if (strcmp(param->u.crypt.alg, "WEP") == 0) {
-				memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
-
-				psecuritypriv->dot118021XGrpPrivacy = _WEP40_;
-				if (param->u.crypt.key_len == 13)
-					psecuritypriv->dot118021XGrpPrivacy = _WEP104_;
-
-			} else if (strcmp(param->u.crypt.alg, "TKIP") == 0) {
-				psecuritypriv->dot118021XGrpPrivacy = _TKIP_;
-
-				memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
-
-				/* set mic key */
-				memcpy(txkey, &(param->u.crypt.key[16]), 8);
-				memcpy(rxkey, &(param->u.crypt.key[24]), 8);
-
-				psecuritypriv->busetkipkey = true;
-
-			} else if (strcmp(param->u.crypt.alg, "CCMP") == 0) {
-				psecuritypriv->dot118021XGrpPrivacy = _AES_;
-
-				memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
-			} else {
-				psecuritypriv->dot118021XGrpPrivacy = _NO_PRIVACY_;
-			}
-
-			psecuritypriv->dot118021XGrpKeyid = param->u.crypt.idx;
-
-			psecuritypriv->binstallGrpkey = true;
-
-			psecuritypriv->dot11_privacy_algrthm = psecuritypriv->dot118021XGrpPrivacy;/*  */
-
-			rtw_ap_set_group_key(padapter, param->u.crypt.key, psecuritypriv->dot118021XGrpPrivacy, param->u.crypt.idx);
-
-			pbcmc_sta = rtw_get_bcmc_stainfo(padapter);
-			if (pbcmc_sta) {
-				pbcmc_sta->ieee8021x_blocked = false;
-				pbcmc_sta->dot118021XPrivacy = psecuritypriv->dot118021XGrpPrivacy;/* rx will use bmc_sta's dot118021XPrivacy */
-			}
-		}
-
-		goto exit;
-	}
-
-	if (psecuritypriv->dot11_auth_algrthm == dot11_auth_algrthm_8021x && psta) {/* psk/802_1x */
-		if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-			if (param->u.crypt.set_tx == 1) { /* pairwise key */
-				memcpy(psta->dot118021x_UncstKey.skey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
-
-				if (strcmp(param->u.crypt.alg, "WEP") == 0) {
-					psta->dot118021XPrivacy = _WEP40_;
-					if (param->u.crypt.key_len == 13)
-						psta->dot118021XPrivacy = _WEP104_;
-				} else if (strcmp(param->u.crypt.alg, "TKIP") == 0) {
-					psta->dot118021XPrivacy = _TKIP_;
-
-					/* set mic key */
-					memcpy(psta->dot11tkiptxmickey.skey, &(param->u.crypt.key[16]), 8);
-					memcpy(psta->dot11tkiprxmickey.skey, &(param->u.crypt.key[24]), 8);
-
-					psecuritypriv->busetkipkey = true;
-
-				} else if (strcmp(param->u.crypt.alg, "CCMP") == 0) {
-					psta->dot118021XPrivacy = _AES_;
-				} else {
-					psta->dot118021XPrivacy = _NO_PRIVACY_;
-				}
-
-				rtw_ap_set_pairwise_key(padapter, psta);
-
-				psta->ieee8021x_blocked = false;
-
-				psta->bpairwise_key_installed = true;
-
-			} else { /* group key??? */
-				if (strcmp(param->u.crypt.alg, "WEP") == 0) {
-					memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
-
-					psecuritypriv->dot118021XGrpPrivacy = _WEP40_;
-					if (param->u.crypt.key_len == 13)
-						psecuritypriv->dot118021XGrpPrivacy = _WEP104_;
-				} else if (strcmp(param->u.crypt.alg, "TKIP") == 0) {
-					psecuritypriv->dot118021XGrpPrivacy = _TKIP_;
-
-					memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
-
-					/* set mic key */
-					memcpy(txkey, &(param->u.crypt.key[16]), 8);
-					memcpy(rxkey, &(param->u.crypt.key[24]), 8);
-
-					psecuritypriv->busetkipkey = true;
-
-				} else if (strcmp(param->u.crypt.alg, "CCMP") == 0) {
-					psecuritypriv->dot118021XGrpPrivacy = _AES_;
-
-					memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
-				} else {
-					psecuritypriv->dot118021XGrpPrivacy = _NO_PRIVACY_;
-				}
-
-				psecuritypriv->dot118021XGrpKeyid = param->u.crypt.idx;
-
-				psecuritypriv->binstallGrpkey = true;
-
-				psecuritypriv->dot11_privacy_algrthm = psecuritypriv->dot118021XGrpPrivacy;/*  */
-
-				rtw_ap_set_group_key(padapter, param->u.crypt.key, psecuritypriv->dot118021XGrpPrivacy, param->u.crypt.idx);
-
-				pbcmc_sta = rtw_get_bcmc_stainfo(padapter);
-				if (pbcmc_sta) {
-					pbcmc_sta->ieee8021x_blocked = false;
-					pbcmc_sta->dot118021XPrivacy = psecuritypriv->dot118021XGrpPrivacy;/* rx will use bmc_sta's dot118021XPrivacy */
-				}
-			}
-		}
-	}
-
-exit:
-
-	return ret;
-}
-
-static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param *param, u32 param_len)
-{
-	int ret = 0;
-	u8 max_idx;
-	u32 wep_key_idx, wep_key_len;
-	struct adapter *padapter = rtw_netdev_priv(dev);
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-
-	param->u.crypt.err = 0;
-	param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0';
-
-	if (param_len < (u32)((u8 *)param->u.crypt.key - (u8 *)param) + param->u.crypt.key_len) {
-		ret =  -EINVAL;
-		goto exit;
-	}
-
-	if (param->sta_addr[0] != 0xff || param->sta_addr[1] != 0xff ||
-	    param->sta_addr[2] != 0xff || param->sta_addr[3] != 0xff ||
-	    param->sta_addr[4] != 0xff || param->sta_addr[5] != 0xff) {
-		ret = -EINVAL;
-		goto exit;
-	}
-
-	if (strcmp(param->u.crypt.alg, "WEP") == 0)
-		max_idx = WEP_KEYS - 1;
-	else
-		max_idx = BIP_MAX_KEYID;
-
-	if (param->u.crypt.idx > max_idx) {
-		netdev_err(dev, "Error crypt.idx %d > %d\n", param->u.crypt.idx, max_idx);
-		ret = -EINVAL;
-		goto exit;
-	}
-
-	if (strcmp(param->u.crypt.alg, "WEP") == 0) {
-		wep_key_idx = param->u.crypt.idx;
-		wep_key_len = param->u.crypt.key_len;
-
-		if (wep_key_len <= 0) {
-			ret = -EINVAL;
-			goto exit;
-		}
-
-		if (psecuritypriv->bWepDefaultKeyIdxSet == 0) {
-			/* wep default key has not been set, so use this key index as default key. */
-
-			wep_key_len = wep_key_len <= 5 ? 5 : 13;
-
-			psecuritypriv->ndisencryptstatus = Ndis802_11Encryption1Enabled;
-			psecuritypriv->dot11_privacy_algrthm = _WEP40_;
-			psecuritypriv->dot118021XGrpPrivacy = _WEP40_;
-
-			if (wep_key_len == 13) {
-				psecuritypriv->dot11_privacy_algrthm = _WEP104_;
-				psecuritypriv->dot118021XGrpPrivacy = _WEP104_;
-			}
-
-			psecuritypriv->dot11PrivacyKeyIndex = wep_key_idx;
-		}
-
-		memcpy(&(psecuritypriv->dot11DefKey[wep_key_idx].skey[0]), param->u.crypt.key, wep_key_len);
-
-		psecuritypriv->dot11DefKeylen[wep_key_idx] = wep_key_len;
-
-		rtw_set_key(padapter, psecuritypriv, wep_key_idx, 0, true);
-
-		goto exit;
-	}
-
-	if (padapter->securitypriv.dot11_auth_algrthm == dot11_auth_algrthm_8021x) { /*  802_1x */
-		struct sta_info *psta, *pbcmc_sta;
-		struct sta_priv *pstapriv = &padapter->stapriv;
-
-		if (check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_MP_STATE)) { /* sta mode */
-			psta = rtw_get_stainfo(pstapriv, get_bssid(pmlmepriv));
-			if (psta) {
-				/* Jeff: don't disable ieee8021x_blocked while clearing key */
-				if (strcmp(param->u.crypt.alg, "none") != 0)
-					psta->ieee8021x_blocked = false;
-
-				if ((padapter->securitypriv.ndisencryptstatus == Ndis802_11Encryption2Enabled) ||
-				    (padapter->securitypriv.ndisencryptstatus ==  Ndis802_11Encryption3Enabled)) {
-					psta->dot118021XPrivacy = padapter->securitypriv.dot11_privacy_algrthm;
-				}
-
-				if (param->u.crypt.set_tx == 1) { /* pairwise key */
-
-					memcpy(psta->dot118021x_UncstKey.skey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
-
-					if (strcmp(param->u.crypt.alg, "TKIP") == 0) { /* set mic key */
-						memcpy(psta->dot11tkiptxmickey.skey, &(param->u.crypt.key[16]), 8);
-						memcpy(psta->dot11tkiprxmickey.skey, &(param->u.crypt.key[24]), 8);
-
-						padapter->securitypriv.busetkipkey = false;
-						/* _set_timer(&padapter->securitypriv.tkip_timer, 50); */
-					}
-
-					rtw_setstakey_cmd(padapter, psta, true, true);
-				} else { /* group key */
-					if (strcmp(param->u.crypt.alg, "TKIP") == 0 || strcmp(param->u.crypt.alg, "CCMP") == 0) {
-						memcpy(padapter->securitypriv.dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
-						memcpy(padapter->securitypriv.dot118021XGrptxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[16]), 8);
-						memcpy(padapter->securitypriv.dot118021XGrprxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[24]), 8);
-						padapter->securitypriv.binstallGrpkey = true;
-
-						padapter->securitypriv.dot118021XGrpKeyid = param->u.crypt.idx;
-						rtw_set_key(padapter, &padapter->securitypriv, param->u.crypt.idx, 1, true);
-					} else if (strcmp(param->u.crypt.alg, "BIP") == 0) {
-						/* save the IGTK key, length 16 bytes */
-						memcpy(padapter->securitypriv.dot11wBIPKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
-						padapter->securitypriv.dot11wBIPKeyid = param->u.crypt.idx;
-						padapter->securitypriv.binstallBIPkey = true;
-					}
-				}
-			}
-
-			pbcmc_sta = rtw_get_bcmc_stainfo(padapter);
-			if (pbcmc_sta) {
-				/* Jeff: don't disable ieee8021x_blocked while clearing key */
-				if (strcmp(param->u.crypt.alg, "none") != 0)
-					pbcmc_sta->ieee8021x_blocked = false;
-
-				if ((padapter->securitypriv.ndisencryptstatus == Ndis802_11Encryption2Enabled) ||
-				    (padapter->securitypriv.ndisencryptstatus ==  Ndis802_11Encryption3Enabled)) {
-					pbcmc_sta->dot118021XPrivacy = padapter->securitypriv.dot11_privacy_algrthm;
-				}
-			}
-		} else if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) { /* adhoc mode */
-		}
-	}
-
-exit:
-
-	return ret;
-}
-
-static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct wireless_dev *wdev,
-				int link_id, u8 key_index, bool pairwise,
-				const u8 *mac_addr, struct key_params *params)
-{
-	char *alg_name;
-	u32 param_len;
-	struct ieee_param *param = NULL;
-	int ret = 0;
-	struct net_device *ndev = wdev->netdev;
-	struct adapter *padapter = rtw_netdev_priv(ndev);
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	param_len = sizeof(struct ieee_param) + params->key_len;
-	param = kzalloc(param_len, GFP_KERNEL);
-	if (!param)
-		return -ENOMEM;
-
-	param->cmd = IEEE_CMD_SET_ENCRYPTION;
-	eth_broadcast_addr(param->sta_addr);
-
-	switch (params->cipher) {
-	case IW_AUTH_CIPHER_NONE:
-		/* todo: remove key */
-		/* remove = 1; */
-		alg_name = "none";
-		break;
-	case WLAN_CIPHER_SUITE_WEP40:
-	case WLAN_CIPHER_SUITE_WEP104:
-		alg_name = "WEP";
-		break;
-	case WLAN_CIPHER_SUITE_TKIP:
-		alg_name = "TKIP";
-		break;
-	case WLAN_CIPHER_SUITE_CCMP:
-		alg_name = "CCMP";
-		break;
-	case WLAN_CIPHER_SUITE_AES_CMAC:
-		alg_name = "BIP";
-		break;
-	default:
-		ret = -ENOTSUPP;
-		goto addkey_end;
-	}
-
-	strscpy(param->u.crypt.alg, alg_name);
-
-	if (!mac_addr || is_broadcast_ether_addr(mac_addr))
-		param->u.crypt.set_tx = 0; /* for wpa/wpa2 group key */
-	else
-		param->u.crypt.set_tx = 1; /* for wpa/wpa2 pairwise key */
-
-	param->u.crypt.idx = key_index;
-
-	if (params->seq_len && params->seq)
-		memcpy(param->u.crypt.seq, (u8 *)params->seq, params->seq_len);
-
-	if (params->key_len && params->key) {
-		param->u.crypt.key_len = params->key_len;
-		memcpy(param->u.crypt.key, (u8 *)params->key, params->key_len);
-	}
-
-	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
-		ret =  rtw_cfg80211_set_encryption(ndev, param, param_len);
-	} else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		if (mac_addr)
-			memcpy(param->sta_addr, mac_addr, ETH_ALEN);
-
-		ret = rtw_cfg80211_ap_set_encryption(ndev, param, param_len);
-	} else if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) ||
-		   check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
-		ret =  rtw_cfg80211_set_encryption(ndev, param, param_len);
-	}
-
-addkey_end:
-	kfree(param);
-
-	return ret;
-}
-
-static int cfg80211_rtw_get_key(struct wiphy *wiphy, struct wireless_dev *wdev,
-				int link_id, u8 key_index, bool pairwise,
-				const u8 *mac_addr, void *cookie,
-				void (*callback)(void *cookie,
-						 struct key_params*))
-{
-	return 0;
-}
-
-static int cfg80211_rtw_del_key(struct wiphy *wiphy, struct wireless_dev *wdev,
-				int link_id, u8 key_index, bool pairwise,
-				const u8 *mac_addr)
-{
-	struct adapter *padapter = rtw_netdev_priv(wdev->netdev);
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-
-	if (key_index == psecuritypriv->dot11PrivacyKeyIndex) {
-		/* clear the flag of wep default key set. */
-		psecuritypriv->bWepDefaultKeyIdxSet = 0;
-	}
-
-	return 0;
-}
-
-static int cfg80211_rtw_set_default_key(struct wiphy *wiphy,
-					struct net_device *ndev, int link_id,
-					u8 key_index, bool unicast,
-					bool multicast)
-{
-	struct adapter *padapter = rtw_netdev_priv(ndev);
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-
-	if ((key_index < WEP_KEYS) && ((psecuritypriv->dot11_privacy_algrthm == _WEP40_) || (psecuritypriv->dot11_privacy_algrthm == _WEP104_))) { /* set wep default key */
-		psecuritypriv->ndisencryptstatus = Ndis802_11Encryption1Enabled;
-
-		psecuritypriv->dot11PrivacyKeyIndex = key_index;
-
-		psecuritypriv->dot11_privacy_algrthm = _WEP40_;
-		psecuritypriv->dot118021XGrpPrivacy = _WEP40_;
-		if (psecuritypriv->dot11DefKeylen[key_index] == 13) {
-			psecuritypriv->dot11_privacy_algrthm = _WEP104_;
-			psecuritypriv->dot118021XGrpPrivacy = _WEP104_;
-		}
-
-		psecuritypriv->bWepDefaultKeyIdxSet = 1; /* set the flag to represent that wep default key has been set */
-	}
-
-	return 0;
-}
-
-static int cfg80211_rtw_get_station(struct wiphy *wiphy,
-				    struct wireless_dev *wdev,
-				const u8 *mac,
-				struct station_info *sinfo)
-{
-	int ret = 0;
-	struct net_device *ndev = wdev_to_ndev(wdev);
-	struct adapter *padapter = rtw_netdev_priv(ndev);
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct sta_info *psta = NULL;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-
-	sinfo->filled = 0;
-
-	if (!mac) {
-		ret = -ENOENT;
-		goto exit;
-	}
-
-	psta = rtw_get_stainfo(pstapriv, (u8 *)mac);
-	if (!psta) {
-		ret = -ENOENT;
-		goto exit;
-	}
-
-	/* for infra./P2PClient mode */
-	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)
-		&& check_fwstate(pmlmepriv, _FW_LINKED)) {
-		struct wlan_network  *cur_network = &(pmlmepriv->cur_network);
-
-		if (memcmp((u8 *)mac, cur_network->network.mac_address, ETH_ALEN)) {
-			ret = -ENOENT;
-			goto exit;
-		}
-
-		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL);
-		sinfo->signal = translate_percentage_to_dbm(padapter->recvpriv.signal_strength);
-
-		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BITRATE);
-		sinfo->txrate.legacy = rtw_get_cur_max_rate(padapter);
-
-		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_PACKETS);
-		sinfo->rx_packets = sta_rx_data_pkts(psta);
-
-		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_PACKETS);
-		sinfo->tx_packets = psta->sta_stats.tx_pkts;
-		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_FAILED);
-	}
-
-	/* for Ad-Hoc/AP mode */
-	if ((check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) ||
-	     check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) ||
-	     check_fwstate(pmlmepriv, WIFI_AP_STATE)) &&
-	    check_fwstate(pmlmepriv, _FW_LINKED)) {
-		/* TODO: should acquire station info... */
-	}
-
-exit:
-	return ret;
-}
-
-static int cfg80211_rtw_change_iface(struct wiphy *wiphy,
-				     struct net_device *ndev,
-				     enum nl80211_iftype type,
-				     struct vif_params *params)
-{
-	enum nl80211_iftype old_type;
-	struct adapter *padapter = rtw_netdev_priv(ndev);
-	struct wireless_dev *rtw_wdev = padapter->rtw_wdev;
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-	int ret = 0;
-
-	if (adapter_to_dvobj(padapter)->processing_dev_remove) {
-		ret = -EPERM;
-		goto exit;
-	}
-
-	{
-		if (netdev_open(ndev) != 0) {
-			ret = -EPERM;
-			goto exit;
-		}
-	}
-
-	if (rtw_pwr_wakeup(padapter) == _FAIL) {
-		ret = -EPERM;
-		goto exit;
-	}
-
-	old_type = rtw_wdev->iftype;
-
-	if (old_type != type) {
-		pmlmeext->action_public_rxseq = 0xffff;
-		pmlmeext->action_public_dialog_token = 0xff;
-	}
-
-	if (type != NL80211_IFTYPE_ADHOC &&
-	    type != NL80211_IFTYPE_STATION &&
-	    type != NL80211_IFTYPE_AP) {
-		ret = -EOPNOTSUPP;
-		goto exit;
-	}
-
-	rtw_wdev->iftype = type;
-
-	if (!rtw_set_802_11_infrastructure_mode(padapter, type)) {
-		rtw_wdev->iftype = old_type;
-		ret = -EPERM;
-		goto exit;
-	}
-
-	rtw_setopmode_cmd(padapter, type, true);
-
-exit:
-
-	return ret;
-}
-
-void rtw_cfg80211_indicate_scan_done(struct adapter *adapter, bool aborted)
-{
-	struct rtw_wdev_priv *pwdev_priv = adapter_wdev_data(adapter);
-	struct cfg80211_scan_info info = {
-		.aborted = aborted
-	};
-
-	spin_lock_bh(&pwdev_priv->scan_req_lock);
-	if (pwdev_priv->scan_request) {
-		/* avoid WARN_ON(request != wiphy_to_dev(request->wiphy)->scan_req); */
-		if (pwdev_priv->scan_request->wiphy == pwdev_priv->rtw_wdev->wiphy)
-			cfg80211_scan_done(pwdev_priv->scan_request, &info);
-
-		pwdev_priv->scan_request = NULL;
-	}
-	spin_unlock_bh(&pwdev_priv->scan_req_lock);
-}
-
-void rtw_cfg80211_unlink_bss(struct adapter *padapter, struct wlan_network *pnetwork)
-{
-	struct wireless_dev *pwdev = padapter->rtw_wdev;
-	struct wiphy *wiphy = pwdev->wiphy;
-	struct cfg80211_bss *bss = NULL;
-	struct wlan_bssid_ex *select_network = &pnetwork->network;
-
-	bss = cfg80211_get_bss(wiphy, NULL/*notify_channel*/,
-			       select_network->mac_address,
-			       select_network->ssid.ssid,
-			       select_network->ssid.ssid_length,
-			       IEEE80211_BSS_TYPE_ANY, IEEE80211_PRIVACY_ANY);
-
-	if (bss) {
-		cfg80211_unlink_bss(wiphy, bss);
-		cfg80211_put_bss(padapter->rtw_wdev->wiphy, bss);
-	}
-}
-
-void rtw_cfg80211_surveydone_event_callback(struct adapter *padapter)
-{
-	struct list_head					*plist, *phead;
-	struct	mlme_priv *pmlmepriv = &(padapter->mlmepriv);
-	struct __queue *queue	= &(pmlmepriv->scanned_queue);
-	struct	wlan_network	*pnetwork = NULL;
-
-	spin_lock_bh(&(pmlmepriv->scanned_queue.lock));
-
-	phead = get_list_head(queue);
-	list_for_each(plist, phead)
-	{
-		pnetwork = list_entry(plist, struct wlan_network, list);
-
-		/* report network only if the current channel set contains the channel to which this network belongs */
-		if (rtw_ch_set_search_ch(padapter->mlmeextpriv.channel_set, pnetwork->network.configuration.ds_config) >= 0
-			&& true == rtw_validate_ssid(&(pnetwork->network.ssid))) {
-			/* ev =translate_scan(padapter, a, pnetwork, ev, stop); */
-			rtw_cfg80211_inform_bss(padapter, pnetwork);
-		}
-	}
-
-	spin_unlock_bh(&(pmlmepriv->scanned_queue.lock));
-}
-
-static int rtw_cfg80211_set_probe_req_wpsp2pie(struct adapter *padapter, char *buf, int len)
-{
-	int ret = 0;
-	unsigned int wps_ielen = 0;
-	u8 *wps_ie;
-	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
-
-	if (len > 0) {
-		wps_ie = rtw_get_wps_ie(buf, len, NULL, &wps_ielen);
-		if (wps_ie) {
-			if (pmlmepriv->wps_probe_req_ie) {
-				pmlmepriv->wps_probe_req_ie_len = 0;
-				kfree(pmlmepriv->wps_probe_req_ie);
-				pmlmepriv->wps_probe_req_ie = NULL;
-			}
-
-			pmlmepriv->wps_probe_req_ie = kmemdup(wps_ie, wps_ielen, GFP_KERNEL);
-			if (!pmlmepriv->wps_probe_req_ie)
-				return -EINVAL;
-
-			pmlmepriv->wps_probe_req_ie_len = wps_ielen;
-		}
-	}
-
-	return ret;
-}
-
-static int cfg80211_rtw_scan(struct wiphy *wiphy
-	, struct cfg80211_scan_request *request)
-{
-	struct net_device *ndev = wdev_to_ndev(request->wdev);
-	int i;
-	u8 _status = false;
-	int ret = 0;
-	struct ndis_802_11_ssid *ssid = NULL;
-	struct rtw_ieee80211_channel ch[RTW_CHANNEL_SCAN_AMOUNT];
-	u8 survey_times = 3;
-	u8 survey_times_for_one_ch = 6;
-	struct cfg80211_ssid *ssids = request->ssids;
-	int j = 0;
-	bool need_indicate_scan_done = false;
-
-	struct adapter *padapter;
-	struct rtw_wdev_priv *pwdev_priv;
-	struct mlme_priv *pmlmepriv;
-
-	if (!ndev) {
-		ret = -EINVAL;
-		goto exit;
-	}
-
-	padapter = rtw_netdev_priv(ndev);
-	pwdev_priv = adapter_wdev_data(padapter);
-	pmlmepriv = &padapter->mlmepriv;
-/* endif */
-
-	spin_lock_bh(&pwdev_priv->scan_req_lock);
-	pwdev_priv->scan_request = request;
-	spin_unlock_bh(&pwdev_priv->scan_req_lock);
-
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS | _FW_UNDER_SURVEY |
-					     _FW_UNDER_LINKING)) {
-			need_indicate_scan_done = true;
-			goto check_need_indicate_scan_done;
-		}
-	}
-
-	rtw_ps_deny(padapter, PS_DENY_SCAN);
-	if (rtw_pwr_wakeup(padapter) == _FAIL) {
-		need_indicate_scan_done = true;
-		goto check_need_indicate_scan_done;
-	}
-
-	if (request->ie && request->ie_len > 0)
-		rtw_cfg80211_set_probe_req_wpsp2pie(padapter, (u8 *)request->ie, request->ie_len);
-
-	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) {
-		need_indicate_scan_done = true;
-		goto check_need_indicate_scan_done;
-	} else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) {
-		ret = -EBUSY;
-		goto check_need_indicate_scan_done;
-	}
-
-	if (pmlmepriv->link_detect_info.busy_traffic) {
-		static unsigned long lastscantime;
-		unsigned long passtime;
-
-		passtime = jiffies_to_msecs(jiffies - lastscantime);
-		lastscantime = jiffies;
-		if (passtime > 12000) {
-			need_indicate_scan_done = true;
-			goto check_need_indicate_scan_done;
-		}
-	}
-
-	if (rtw_is_scan_deny(padapter)) {
-		need_indicate_scan_done = true;
-		goto check_need_indicate_scan_done;
-	}
-
-	ssid = kzalloc_objs(*ssid, RTW_SSID_SCAN_AMOUNT);
-	if (!ssid) {
-		ret = -ENOMEM;
-		goto check_need_indicate_scan_done;
-	}
-
-	/* parsing request ssids, n_ssids */
-	for (i = 0; i < request->n_ssids && i < RTW_SSID_SCAN_AMOUNT; i++) {
-		memcpy(ssid[i].ssid, ssids[i].ssid, ssids[i].ssid_len);
-		ssid[i].ssid_length = ssids[i].ssid_len;
-	}
-
-	/* parsing channels, n_channels */
-	memset(ch, 0, sizeof(struct rtw_ieee80211_channel) * RTW_CHANNEL_SCAN_AMOUNT);
-	for (i = 0; i < request->n_channels && i < RTW_CHANNEL_SCAN_AMOUNT; i++) {
-		ch[i].hw_value = request->channels[i]->hw_value;
-		ch[i].flags = request->channels[i]->flags;
-	}
-
-	spin_lock_bh(&pmlmepriv->lock);
-	if (request->n_channels == 1) {
-		for (i = 1; i < survey_times_for_one_ch; i++)
-			memcpy(&ch[i], &ch[0], sizeof(struct rtw_ieee80211_channel));
-		_status = rtw_sitesurvey_cmd(padapter, ssid, RTW_SSID_SCAN_AMOUNT, ch, survey_times_for_one_ch);
-	} else if (request->n_channels <= 4) {
-		for (j = request->n_channels - 1; j >= 0; j--)
-			for (i = 0; i < survey_times; i++)
-				memcpy(&ch[j * survey_times + i], &ch[j], sizeof(struct rtw_ieee80211_channel));
-		_status = rtw_sitesurvey_cmd(padapter, ssid, RTW_SSID_SCAN_AMOUNT, ch, survey_times * request->n_channels);
-	} else {
-		_status = rtw_sitesurvey_cmd(padapter, ssid, RTW_SSID_SCAN_AMOUNT, NULL, 0);
-	}
-	spin_unlock_bh(&pmlmepriv->lock);
-
-	if (!_status)
-		ret = -1;
-
-check_need_indicate_scan_done:
-	kfree(ssid);
-	if (need_indicate_scan_done) {
-		rtw_cfg80211_surveydone_event_callback(padapter);
-		rtw_cfg80211_indicate_scan_done(padapter, false);
-	}
-
-	rtw_ps_deny_cancel(padapter, PS_DENY_SCAN);
-
-exit:
-	return ret;
-}
-
-static int cfg80211_rtw_set_wiphy_params(struct wiphy *wiphy, int radio_idx,
-					 u32 changed)
-{
-	return 0;
-}
-
-static int rtw_cfg80211_set_wpa_version(struct security_priv *psecuritypriv, u32 wpa_version)
-{
-	if (!wpa_version) {
-		psecuritypriv->ndisauthtype = Ndis802_11AuthModeOpen;
-		return 0;
-	}
-
-	if (wpa_version & (NL80211_WPA_VERSION_1 | NL80211_WPA_VERSION_2))
-		psecuritypriv->ndisauthtype = Ndis802_11AuthModeWPAPSK;
-
-	return 0;
-}
-
-static int rtw_cfg80211_set_auth_type(struct security_priv *psecuritypriv,
-				      enum nl80211_auth_type sme_auth_type)
-{
-	switch (sme_auth_type) {
-	case NL80211_AUTHTYPE_AUTOMATIC:
-
-		psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_auto;
-
-		break;
-	case NL80211_AUTHTYPE_OPEN_SYSTEM:
-
-		psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_open;
-
-		if (psecuritypriv->ndisauthtype > Ndis802_11AuthModeWPA)
-			psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_8021x;
-
-		break;
-	case NL80211_AUTHTYPE_SHARED_KEY:
-
-		psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_shared;
-
-		psecuritypriv->ndisencryptstatus = Ndis802_11Encryption1Enabled;
-
-		break;
-	default:
-		psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_open;
-		/* return -ENOTSUPP; */
-	}
-
-	return 0;
-}
-
-static int rtw_cfg80211_set_cipher(struct security_priv *psecuritypriv, u32 cipher, bool ucast)
-{
-	u32 ndisencryptstatus = Ndis802_11EncryptionDisabled;
-
-	u32 *profile_cipher = ucast ? &psecuritypriv->dot11_privacy_algrthm :
-		&psecuritypriv->dot118021XGrpPrivacy;
-
-	if (!cipher) {
-		*profile_cipher = _NO_PRIVACY_;
-		psecuritypriv->ndisencryptstatus = ndisencryptstatus;
-		return 0;
-	}
-
-	switch (cipher) {
-	case IW_AUTH_CIPHER_NONE:
-		*profile_cipher = _NO_PRIVACY_;
-		ndisencryptstatus = Ndis802_11EncryptionDisabled;
-		break;
-	case WLAN_CIPHER_SUITE_WEP40:
-		*profile_cipher = _WEP40_;
-		ndisencryptstatus = Ndis802_11Encryption1Enabled;
-		break;
-	case WLAN_CIPHER_SUITE_WEP104:
-		*profile_cipher = _WEP104_;
-		ndisencryptstatus = Ndis802_11Encryption1Enabled;
-		break;
-	case WLAN_CIPHER_SUITE_TKIP:
-		*profile_cipher = _TKIP_;
-		ndisencryptstatus = Ndis802_11Encryption2Enabled;
-		break;
-	case WLAN_CIPHER_SUITE_CCMP:
-		*profile_cipher = _AES_;
-		ndisencryptstatus = Ndis802_11Encryption3Enabled;
-		break;
-	default:
-		return -ENOTSUPP;
-	}
-
-	if (ucast) {
-		psecuritypriv->ndisencryptstatus = ndisencryptstatus;
-
-		/* if (psecuritypriv->dot11_privacy_algrthm >= _AES_) */
-		/*	psecuritypriv->ndisauthtype = Ndis802_11AuthModeWPA2PSK; */
-	}
-
-	return 0;
-}
-
-static int rtw_cfg80211_set_key_mgt(struct security_priv *psecuritypriv, u32 key_mgt)
-{
-	if (key_mgt == WLAN_AKM_SUITE_8021X)
-		/* auth_type = UMAC_AUTH_TYPE_8021X; */
-		psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_8021x;
-	else if (key_mgt == WLAN_AKM_SUITE_PSK) {
-		psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_8021x;
-	}
-
-	return 0;
-}
-
-static int rtw_cfg80211_set_wpa_ie(struct adapter *padapter, u8 *pie, size_t ielen)
-{
-	u8 *buf = NULL;
-	int group_cipher = 0, pairwise_cipher = 0;
-	int ret = 0;
-	int wpa_ielen = 0;
-	int wpa2_ielen = 0;
-	u8 *pwpa, *pwpa2;
-	u8 null_addr[] = {0, 0, 0, 0, 0, 0};
-
-	if (!pie || !ielen) {
-		/* Treat this as normal case, but need to clear WIFI_UNDER_WPS */
-		_clr_fwstate_(&padapter->mlmepriv, WIFI_UNDER_WPS);
-		goto exit;
-	}
-
-	if (ielen > MAX_WPA_IE_LEN + MAX_WPS_IE_LEN + MAX_P2P_IE_LEN) {
-		ret = -EINVAL;
-		goto exit;
-	}
-
-	buf = kmemdup(pie, ielen, GFP_KERNEL);
-	if (!buf) {
-		ret =  -ENOMEM;
-		goto exit;
-	}
-
-	if (ielen < RSN_HEADER_LEN) {
-		ret  = -1;
-		goto exit;
-	}
-
-	pwpa = rtw_get_wpa_ie(buf, &wpa_ielen, ielen);
-	if (pwpa && wpa_ielen > 0) {
-		if (wpa_ielen + 2 > sizeof(padapter->securitypriv.supplicant_ie)) {
-			ret = -EINVAL;
-			goto exit;
-		}
-		if (rtw_parse_wpa_ie(pwpa, wpa_ielen + 2, &group_cipher, &pairwise_cipher, NULL) == _SUCCESS) {
-			padapter->securitypriv.dot11_auth_algrthm = dot11_auth_algrthm_8021x;
-			padapter->securitypriv.ndisauthtype = Ndis802_11AuthModeWPAPSK;
-			memcpy(padapter->securitypriv.supplicant_ie, &pwpa[0], wpa_ielen + 2);
-		}
-	}
-
-	pwpa2 = rtw_get_wpa2_ie(buf, &wpa2_ielen, ielen);
-	if (pwpa2 && wpa2_ielen > 0) {
-		if (wpa2_ielen + 2 > sizeof(padapter->securitypriv.supplicant_ie)) {
-			ret = -EINVAL;
-			goto exit;
-		}
-		if (rtw_parse_wpa2_ie(pwpa2, wpa2_ielen + 2, &group_cipher, &pairwise_cipher, NULL) == _SUCCESS) {
-			padapter->securitypriv.dot11_auth_algrthm = dot11_auth_algrthm_8021x;
-			padapter->securitypriv.ndisauthtype = Ndis802_11AuthModeWPA2PSK;
-			memcpy(padapter->securitypriv.supplicant_ie, &pwpa2[0], wpa2_ielen + 2);
-		}
-	}
-
-	if (group_cipher == 0)
-		group_cipher = WPA_CIPHER_NONE;
-
-	if (pairwise_cipher == 0)
-		pairwise_cipher = WPA_CIPHER_NONE;
-
-	switch (group_cipher) {
-	case WPA_CIPHER_NONE:
-		padapter->securitypriv.dot118021XGrpPrivacy = _NO_PRIVACY_;
-		padapter->securitypriv.ndisencryptstatus = Ndis802_11EncryptionDisabled;
-		break;
-	case WPA_CIPHER_WEP40:
-		padapter->securitypriv.dot118021XGrpPrivacy = _WEP40_;
-		padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled;
-		break;
-	case WPA_CIPHER_TKIP:
-		padapter->securitypriv.dot118021XGrpPrivacy = _TKIP_;
-		padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption2Enabled;
-		break;
-	case WPA_CIPHER_CCMP:
-		padapter->securitypriv.dot118021XGrpPrivacy = _AES_;
-		padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption3Enabled;
-		break;
-	case WPA_CIPHER_WEP104:
-		padapter->securitypriv.dot118021XGrpPrivacy = _WEP104_;
-		padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled;
-		break;
-	}
-
-	switch (pairwise_cipher) {
-	case WPA_CIPHER_NONE:
-		padapter->securitypriv.dot11_privacy_algrthm = _NO_PRIVACY_;
-		padapter->securitypriv.ndisencryptstatus = Ndis802_11EncryptionDisabled;
-		break;
-	case WPA_CIPHER_WEP40:
-		padapter->securitypriv.dot11_privacy_algrthm = _WEP40_;
-		padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled;
-		break;
-	case WPA_CIPHER_TKIP:
-		padapter->securitypriv.dot11_privacy_algrthm = _TKIP_;
-		padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption2Enabled;
-		break;
-	case WPA_CIPHER_CCMP:
-		padapter->securitypriv.dot11_privacy_algrthm = _AES_;
-		padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption3Enabled;
-		break;
-	case WPA_CIPHER_WEP104:
-		padapter->securitypriv.dot11_privacy_algrthm = _WEP104_;
-		padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled;
-		break;
-	}
-
-	{/* handle wps_ie */
-		unsigned int wps_ielen;
-		u8 *wps_ie;
-
-		wps_ie = rtw_get_wps_ie(buf, ielen, NULL, &wps_ielen);
-		if (wps_ie && wps_ielen > 0) {
-			padapter->securitypriv.wps_ie_len = min_t(unsigned int, wps_ielen, MAX_WPS_IE_LEN);
-			memcpy(padapter->securitypriv.wps_ie, wps_ie, padapter->securitypriv.wps_ie_len);
-			set_fwstate(&padapter->mlmepriv, WIFI_UNDER_WPS);
-		} else {
-			_clr_fwstate_(&padapter->mlmepriv, WIFI_UNDER_WPS);
-		}
-	}
-
-	/* TKIP and AES disallow multicast packets until installing group key */
-	if (padapter->securitypriv.dot11_privacy_algrthm == _TKIP_
-		|| padapter->securitypriv.dot11_privacy_algrthm == _TKIP_WTMIC_
-		|| padapter->securitypriv.dot11_privacy_algrthm == _AES_)
-		/* WPS open need to enable multicast */
-		/*  check_fwstate(&padapter->mlmepriv, WIFI_UNDER_WPS) == true) */
-		rtw_hal_set_hwreg(padapter, HW_VAR_OFF_RCR_AM, null_addr);
-
-exit:
-	kfree(buf);
-	if (ret)
-		_clr_fwstate_(&padapter->mlmepriv, WIFI_UNDER_WPS);
-	return ret;
-}
-
-static int cfg80211_rtw_join_ibss(struct wiphy *wiphy, struct net_device *ndev,
-				  struct cfg80211_ibss_params *params)
-{
-	struct adapter *padapter = rtw_netdev_priv(ndev);
-	struct ndis_802_11_ssid ndis_ssid;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	int ret = 0;
-
-	if (rtw_pwr_wakeup(padapter) == _FAIL) {
-		ret = -EPERM;
-		goto exit;
-	}
-
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		ret = -EPERM;
-		goto exit;
-	}
-
-	if (!params->ssid || !params->ssid_len) {
-		ret = -EINVAL;
-		goto exit;
-	}
-
-	if (params->ssid_len > IW_ESSID_MAX_SIZE) {
-		ret = -E2BIG;
-		goto exit;
-	}
-
-	memset(&ndis_ssid, 0, sizeof(struct ndis_802_11_ssid));
-	ndis_ssid.ssid_length = params->ssid_len;
-	memcpy(ndis_ssid.ssid, (u8 *)params->ssid, params->ssid_len);
-
-	psecuritypriv->ndisencryptstatus = Ndis802_11EncryptionDisabled;
-	psecuritypriv->dot11_privacy_algrthm = _NO_PRIVACY_;
-	psecuritypriv->dot118021XGrpPrivacy = _NO_PRIVACY_;
-	psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_open; /* open system */
-	psecuritypriv->ndisauthtype = Ndis802_11AuthModeOpen;
-
-	ret = rtw_cfg80211_set_auth_type(psecuritypriv, NL80211_AUTHTYPE_OPEN_SYSTEM);
-	rtw_set_802_11_authentication_mode(padapter, psecuritypriv->ndisauthtype);
-
-	if (!rtw_set_802_11_ssid(padapter, &ndis_ssid)) {
-		ret = -1;
-		goto exit;
-	}
-
-exit:
-	return ret;
-}
-
-static int cfg80211_rtw_leave_ibss(struct wiphy *wiphy, struct net_device *ndev)
-{
-	struct adapter *padapter = rtw_netdev_priv(ndev);
-	struct wireless_dev *rtw_wdev = padapter->rtw_wdev;
-	enum nl80211_iftype old_type;
-	int ret = 0;
-
-	old_type = rtw_wdev->iftype;
-
-	rtw_set_to_roam(padapter, 0);
-
-	if (check_fwstate(&padapter->mlmepriv, _FW_LINKED)) {
-		rtw_scan_abort(padapter);
-		LeaveAllPowerSaveMode(padapter);
-
-		rtw_wdev->iftype = NL80211_IFTYPE_STATION;
-
-		if (!rtw_set_802_11_infrastructure_mode(padapter, NL80211_IFTYPE_STATION)) {
-			rtw_wdev->iftype = old_type;
-			ret = -EPERM;
-			goto leave_ibss;
-		}
-		rtw_setopmode_cmd(padapter, NL80211_IFTYPE_STATION, true);
-	}
-
-leave_ibss:
-	return ret;
-}
-
-static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
-				struct cfg80211_connect_params *sme)
-{
-	int ret = 0;
-	enum ndis_802_11_authentication_mode authmode;
-	struct ndis_802_11_ssid ndis_ssid;
-	struct adapter *padapter = rtw_netdev_priv(ndev);
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-
-	padapter->mlmepriv.not_indic_disco = true;
-
-	if (adapter_wdev_data(padapter)->block) {
-		ret = -EBUSY;
-		goto exit;
-	}
-
-	rtw_ps_deny(padapter, PS_DENY_JOIN);
-	if (rtw_pwr_wakeup(padapter) == _FAIL) {
-		ret = -EPERM;
-		goto exit;
-	}
-
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		ret = -EPERM;
-		goto exit;
-	}
-
-	if (!sme->ssid || !sme->ssid_len) {
-		ret = -EINVAL;
-		goto exit;
-	}
-
-	if (sme->ssid_len > IW_ESSID_MAX_SIZE) {
-		ret = -E2BIG;
-		goto exit;
-	}
-
-	memset(&ndis_ssid, 0, sizeof(struct ndis_802_11_ssid));
-	ndis_ssid.ssid_length = sme->ssid_len;
-	memcpy(ndis_ssid.ssid, (u8 *)sme->ssid, sme->ssid_len);
-
-	if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) {
-		ret = -EBUSY;
-		goto exit;
-	}
-	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
-		rtw_scan_abort(padapter);
-
-	psecuritypriv->ndisencryptstatus = Ndis802_11EncryptionDisabled;
-	psecuritypriv->dot11_privacy_algrthm = _NO_PRIVACY_;
-	psecuritypriv->dot118021XGrpPrivacy = _NO_PRIVACY_;
-	psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_open; /* open system */
-	psecuritypriv->ndisauthtype = Ndis802_11AuthModeOpen;
-
-	ret = rtw_cfg80211_set_wpa_version(psecuritypriv, sme->crypto.wpa_versions);
-	if (ret < 0)
-		goto exit;
-
-	ret = rtw_cfg80211_set_auth_type(psecuritypriv, sme->auth_type);
-
-	if (ret < 0)
-		goto exit;
-
-	ret = rtw_cfg80211_set_wpa_ie(padapter, (u8 *)sme->ie, sme->ie_len);
-	if (ret < 0)
-		goto exit;
-
-	if (sme->crypto.n_ciphers_pairwise) {
-		ret = rtw_cfg80211_set_cipher(psecuritypriv, sme->crypto.ciphers_pairwise[0], true);
-		if (ret < 0)
-			goto exit;
-	}
-
-	/* For WEP Shared auth */
-	if ((psecuritypriv->dot11_auth_algrthm == dot11_auth_algrthm_shared ||
-	     psecuritypriv->dot11_auth_algrthm == dot11_auth_algrthm_auto) && sme->key) {
-		u32 wep_key_idx, wep_key_len, wep_total_len;
-		struct ndis_802_11_wep	 *pwep = NULL;
-
-		wep_key_idx = sme->key_idx;
-		wep_key_len = sme->key_len;
-
-		if (sme->key_idx > WEP_KEYS) {
-			ret = -EINVAL;
-			goto exit;
-		}
-
-		if (wep_key_len > 0) {
-			wep_key_len = wep_key_len <= 5 ? 5 : 13;
-			wep_total_len = wep_key_len +
-				offsetof(struct ndis_802_11_wep, key_material);
-			pwep = kzalloc(wep_total_len, GFP_KERNEL);
-			if (!pwep) {
-				ret = -ENOMEM;
-				goto exit;
-			}
-
-			pwep->key_length = wep_key_len;
-			pwep->length = wep_total_len;
-
-			if (wep_key_len == 13) {
-				padapter->securitypriv.dot11_privacy_algrthm = _WEP104_;
-				padapter->securitypriv.dot118021XGrpPrivacy = _WEP104_;
-			}
-		} else {
-			ret = -EINVAL;
-			goto exit;
-		}
-
-		pwep->key_index = wep_key_idx;
-		pwep->key_index |= 0x80000000;
-
-		memcpy(pwep->key_material, sme->key, pwep->key_length);
-
-		if (rtw_set_802_11_add_wep(padapter, pwep) == (u8)_FAIL)
-			ret = -EOPNOTSUPP;
-
-		kfree(pwep);
-
-		if (ret < 0)
-			goto exit;
-	}
-
-	ret = rtw_cfg80211_set_cipher(psecuritypriv, sme->crypto.cipher_group, false);
-	if (ret < 0)
-		return ret;
-
-	if (sme->crypto.n_akm_suites) {
-		ret = rtw_cfg80211_set_key_mgt(psecuritypriv, sme->crypto.akm_suites[0]);
-		if (ret < 0)
-			goto exit;
-	}
-
-	authmode = psecuritypriv->ndisauthtype;
-	rtw_set_802_11_authentication_mode(padapter, authmode);
-
-	/* rtw_set_802_11_encryption_mode(padapter, padapter->securitypriv.ndisencryptstatus); */
-
-	if (!rtw_set_802_11_connect(padapter, (u8 *)sme->bssid, &ndis_ssid)) {
-		ret = -1;
-		goto exit;
-	}
-
-exit:
-
-	rtw_ps_deny_cancel(padapter, PS_DENY_JOIN);
-
-	padapter->mlmepriv.not_indic_disco = false;
-
-	return ret;
-}
-
-static int cfg80211_rtw_disconnect(struct wiphy *wiphy, struct net_device *ndev,
-				   u16 reason_code)
-{
-	struct adapter *padapter = rtw_netdev_priv(ndev);
-
-	rtw_set_to_roam(padapter, 0);
-
-	rtw_scan_abort(padapter);
-	LeaveAllPowerSaveMode(padapter);
-	rtw_disassoc_cmd(padapter, 500, false);
-
-	rtw_indicate_disconnect(padapter);
-
-	rtw_free_assoc_resources(padapter, 1);
-	rtw_pwr_wakeup(padapter);
-
-	return 0;
-}
-
-static int cfg80211_rtw_set_txpower(struct wiphy *wiphy,
-				    struct wireless_dev *wdev, int radio_idx,
-				    enum nl80211_tx_power_setting type, int mbm)
-{
-	return 0;
-}
-
-static int cfg80211_rtw_get_txpower(struct wiphy *wiphy,
-				    struct wireless_dev *wdev,
-				    int radio_idx,
-				    unsigned int link_id, int *dbm)
-{
-	*dbm = (12);
-
-	return 0;
-}
-
-inline bool rtw_cfg80211_pwr_mgmt(struct adapter *adapter)
-{
-	struct rtw_wdev_priv *rtw_wdev_priv = adapter_wdev_data(adapter);
-
-	return rtw_wdev_priv->power_mgmt;
-}
-
-static int cfg80211_rtw_set_power_mgmt(struct wiphy *wiphy,
-				       struct net_device *ndev,
-				       bool enabled, int timeout)
-{
-	struct adapter *padapter = rtw_netdev_priv(ndev);
-	struct rtw_wdev_priv *rtw_wdev_priv = adapter_wdev_data(padapter);
-
-	rtw_wdev_priv->power_mgmt = enabled;
-
-	if (!enabled)
-		LPS_Leave(padapter, "CFG80211_PWRMGMT");
-
-	return 0;
-}
-
-static int cfg80211_rtw_set_pmksa(struct wiphy *wiphy,
-				  struct net_device *ndev,
-				  struct cfg80211_pmksa *pmksa)
-{
-	u8 index, blInserted = false;
-	struct adapter *padapter = rtw_netdev_priv(ndev);
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-
-	if (is_zero_ether_addr((u8 *)pmksa->bssid))
-		return -EINVAL;
-
-	blInserted = false;
-
-	/* overwrite PMKID */
-	for (index = 0 ; index < NUM_PMKID_CACHE; index++) {
-		if (!memcmp(psecuritypriv->PMKIDList[index].Bssid, (u8 *)pmksa->bssid, ETH_ALEN)) {
-			memcpy(psecuritypriv->PMKIDList[index].PMKID, (u8 *)pmksa->pmkid, WLAN_PMKID_LEN);
-			psecuritypriv->PMKIDList[index].bUsed = true;
-			psecuritypriv->PMKIDIndex = index + 1;
-			blInserted = true;
-			break;
-		}
-	}
-
-	if (!blInserted) {
-		memcpy(psecuritypriv->PMKIDList[psecuritypriv->PMKIDIndex].Bssid, (u8 *)pmksa->bssid, ETH_ALEN);
-		memcpy(psecuritypriv->PMKIDList[psecuritypriv->PMKIDIndex].PMKID, (u8 *)pmksa->pmkid, WLAN_PMKID_LEN);
-
-		psecuritypriv->PMKIDList[psecuritypriv->PMKIDIndex].bUsed = true;
-		psecuritypriv->PMKIDIndex++;
-		if (psecuritypriv->PMKIDIndex == 16)
-			psecuritypriv->PMKIDIndex = 0;
-	}
-
-	return 0;
-}
-
-static int cfg80211_rtw_del_pmksa(struct wiphy *wiphy,
-				  struct net_device *ndev,
-				  struct cfg80211_pmksa *pmksa)
-{
-	u8 index, bMatched = false;
-	struct adapter *padapter = rtw_netdev_priv(ndev);
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-
-	for (index = 0 ; index < NUM_PMKID_CACHE; index++) {
-		if (!memcmp(psecuritypriv->PMKIDList[index].Bssid, (u8 *)pmksa->bssid, ETH_ALEN)) {
-			/*
-			 * BSSID is matched, the same AP => Remove this PMKID information
-			 * and reset it.
-			 */
-			eth_zero_addr(psecuritypriv->PMKIDList[index].Bssid);
-			memset(psecuritypriv->PMKIDList[index].PMKID, 0x00, WLAN_PMKID_LEN);
-			psecuritypriv->PMKIDList[index].bUsed = false;
-			bMatched = true;
-			break;
-		}
-	}
-
-	if (!bMatched)
-		return -EINVAL;
-
-	return 0;
-}
-
-static int cfg80211_rtw_flush_pmksa(struct wiphy *wiphy,
-				    struct net_device *ndev)
-{
-	struct adapter *padapter = rtw_netdev_priv(ndev);
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-
-	memset(&psecuritypriv->PMKIDList[0], 0x00, sizeof(struct rt_pmkid_list) * NUM_PMKID_CACHE);
-	psecuritypriv->PMKIDIndex = 0;
-
-	return 0;
-}
-
-void rtw_cfg80211_indicate_sta_assoc(struct adapter *padapter, u8 *pmgmt_frame, unsigned int frame_len)
-{
-	struct wireless_dev *wdev = padapter->rtw_wdev;
-
-	{
-		struct station_info sinfo = {};
-		u8 ie_offset;
-
-		if (GetFrameSubType(pmgmt_frame) == WIFI_ASSOCREQ)
-			ie_offset = _ASOCREQ_IE_OFFSET_;
-		else /*  WIFI_REASSOCREQ */
-			ie_offset = _REASOCREQ_IE_OFFSET_;
-
-		sinfo.filled = 0;
-		sinfo.assoc_req_ies = pmgmt_frame + WLAN_HDR_A3_LEN + ie_offset;
-		sinfo.assoc_req_ies_len = frame_len - WLAN_HDR_A3_LEN - ie_offset;
-		cfg80211_new_sta(wdev, GetAddr2Ptr(pmgmt_frame), &sinfo, GFP_ATOMIC);
-	}
-}
-
-void rtw_cfg80211_indicate_sta_disassoc(struct adapter *padapter, unsigned char *da, unsigned short reason)
-{
-	struct wireless_dev *wdev = padapter->rtw_wdev;
-
-	cfg80211_del_sta(wdev, da, GFP_ATOMIC);
-}
-
-static u8 rtw_get_chan_type(struct adapter *adapter)
-{
-	struct mlme_ext_priv *mlme_ext = &adapter->mlmeextpriv;
-
-	switch (mlme_ext->cur_bwmode) {
-	case CHANNEL_WIDTH_20:
-		if (is_supported_ht(adapter->registrypriv.wireless_mode))
-			return NL80211_CHAN_HT20;
-		else
-			return NL80211_CHAN_NO_HT;
-	case CHANNEL_WIDTH_40:
-		if (mlme_ext->cur_ch_offset == HAL_PRIME_CHNL_OFFSET_LOWER)
-			return NL80211_CHAN_HT40PLUS;
-		else
-			return NL80211_CHAN_HT40MINUS;
-	default:
-		return NL80211_CHAN_HT20;
-	}
-
-	return NL80211_CHAN_HT20;
-}
-
-static int cfg80211_rtw_get_channel(struct wiphy *wiphy, struct wireless_dev *wdev,
-				    unsigned int link_id,
-				    struct cfg80211_chan_def *chandef)
-{
-	struct adapter *adapter = wiphy_to_adapter(wiphy);
-	struct registry_priv *registrypriv = &adapter->registrypriv;
-	enum nl80211_channel_type chan_type;
-	struct ieee80211_channel *chan = NULL;
-	int channel;
-	int freq;
-
-	if (!adapter->rtw_wdev)
-		return -ENODEV;
-
-	channel = rtw_get_oper_ch(adapter);
-	if (!channel)
-		return -ENODATA;
-
-	freq = rtw_ieee80211_channel_to_frequency(channel);
-
-	chan = ieee80211_get_channel(adapter->rtw_wdev->wiphy, freq);
-
-	if (registrypriv->ht_enable) {
-		chan_type = rtw_get_chan_type(adapter);
-		cfg80211_chandef_create(chandef, chan, chan_type);
-	} else {
-		cfg80211_chandef_create(chandef, chan, NL80211_CHAN_NO_HT);
-	}
-
-	return 0;
-}
-
-static netdev_tx_t rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb, struct net_device *ndev)
-{
-	int rtap_len;
-	int qos_len = 0;
-	int dot11_hdr_len = 24;
-	int snap_len = 6;
-	unsigned char *pdata;
-	u16 frame_control;
-	unsigned char src_mac_addr[6];
-	unsigned char dst_mac_addr[6];
-	struct ieee80211_hdr *dot11_hdr;
-	struct ieee80211_radiotap_header *rtap_hdr;
-	struct adapter *padapter = rtw_netdev_priv(ndev);
-
-	if (!skb)
-		goto fail;
-
-	if (unlikely(skb->len < sizeof(struct ieee80211_radiotap_header)))
-		goto fail;
-
-	rtap_hdr = (struct ieee80211_radiotap_header *)skb->data;
-	if (unlikely(rtap_hdr->it_version))
-		goto fail;
-
-	rtap_len = ieee80211_get_radiotap_len(skb->data);
-	if (unlikely(skb->len < rtap_len))
-		goto fail;
-
-	if (rtap_len != 14)
-		goto fail;
-
-	/* Skip the ratio tap header */
-	skb_pull(skb, rtap_len);
-	if (skb->len < dot11_hdr_len)
-		goto fail;
-
-	dot11_hdr = (struct ieee80211_hdr *)skb->data;
-	frame_control = le16_to_cpu(dot11_hdr->frame_control);
-	/* Check if the QoS bit is set */
-	if ((frame_control & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA) {
-		/* Check if this ia a Wireless Distribution System (WDS) frame
-		 * which has 4 MAC addresses
-		 */
-		if (frame_control & 0x0080)
-			qos_len = 2;
-		if ((frame_control & 0x0300) == 0x0300)
-			dot11_hdr_len += 6;
-		if (skb->len < dot11_hdr_len + qos_len + snap_len)
-			goto fail;
-
-		memcpy(dst_mac_addr, dot11_hdr->addr1, sizeof(dst_mac_addr));
-		memcpy(src_mac_addr, dot11_hdr->addr2, sizeof(src_mac_addr));
-
-		/* Skip the 802.11 header, QoS (if any) and SNAP, but leave spaces for
-		 * two MAC addresses
-		 */
-		skb_pull(skb, dot11_hdr_len + qos_len + snap_len - sizeof(src_mac_addr) * 2);
-		pdata = (unsigned char *)skb->data;
-		memcpy(pdata, dst_mac_addr, sizeof(dst_mac_addr));
-		memcpy(pdata + sizeof(dst_mac_addr), src_mac_addr, sizeof(src_mac_addr));
-
-		/* Use the real net device to transmit the packet */
-		_rtw_xmit_entry(skb, padapter->pnetdev);
-		return NETDEV_TX_OK;
-
-	} else if ((frame_control & (IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
-		   (IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION)) {
-		/* only for action frames */
-		struct xmit_frame		*pmgntframe;
-		struct pkt_attrib	*pattrib;
-		unsigned char *pframe;
-		/* u8 category, action, OUI_Subtype, dialogToken = 0; */
-		/* unsigned char *frame_body; */
-		struct ieee80211_hdr *pwlanhdr;
-		struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
-		struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-		u8 *buf = skb->data;
-		u32 len = skb->len;
-		u8 category, action;
-
-		if (!rtw_action_frame_parse(buf, len, &category, &action))
-			goto fail;
-
-		/* starting alloc mgmt frame to dump it */
-		pmgntframe = alloc_mgtxmitframe(pxmitpriv);
-		if (!pmgntframe)
-			goto fail;
-
-		/* update attribute */
-		pattrib = &pmgntframe->attrib;
-		update_mgntframe_attrib(padapter, pattrib);
-		pattrib->retry_ctrl = false;
-
-		memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
-
-		pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-
-		memcpy(pframe, buf, len);
-		pattrib->pktlen = len;
-
-		pwlanhdr = (struct ieee80211_hdr *)pframe;
-		/* update seq number */
-		pmlmeext->mgnt_seq = GetSequence(pwlanhdr);
-		pattrib->seqnum = pmlmeext->mgnt_seq;
-		pmlmeext->mgnt_seq++;
-
-		pattrib->last_txcmdsz = pattrib->pktlen;
-
-		dump_mgntframe(padapter, pmgntframe);
-	}
-
-fail:
-
-	dev_kfree_skb_any(skb);
-
-	return NETDEV_TX_OK;
-}
-
-static const struct net_device_ops rtw_cfg80211_monitor_if_ops = {
-	.ndo_start_xmit = rtw_cfg80211_monitor_if_xmit_entry,
-};
-
-static int rtw_cfg80211_add_monitor_if(struct adapter *padapter, char *name, struct net_device **ndev)
-{
-	int ret = 0;
-	struct net_device *mon_ndev = NULL;
-	struct wireless_dev *mon_wdev = NULL;
-	struct rtw_netdev_priv_indicator *pnpi;
-	struct rtw_wdev_priv *pwdev_priv = adapter_wdev_data(padapter);
-
-	if (!name) {
-		ret = -EINVAL;
-		goto out;
-	}
-
-	if (pwdev_priv->pmon_ndev) {
-		ret = -EBUSY;
-		goto out;
-	}
-
-	mon_ndev = alloc_etherdev(sizeof(struct rtw_netdev_priv_indicator));
-	if (!mon_ndev) {
-		ret = -ENOMEM;
-		goto out;
-	}
-
-	mon_ndev->type = ARPHRD_IEEE80211_RADIOTAP;
-	strscpy(mon_ndev->name, name);
-	mon_ndev->needs_free_netdev = true;
-	mon_ndev->priv_destructor = rtw_ndev_destructor;
-
-	mon_ndev->netdev_ops = &rtw_cfg80211_monitor_if_ops;
-
-	pnpi = netdev_priv(mon_ndev);
-	pnpi->priv = padapter;
-	pnpi->sizeof_priv = sizeof(struct adapter);
-
-	/*  wdev */
-	mon_wdev = kzalloc_obj(*mon_wdev);
-	if (!mon_wdev) {
-		ret = -ENOMEM;
-		goto out;
-	}
-
-	mon_wdev->wiphy = padapter->rtw_wdev->wiphy;
-	mon_wdev->netdev = mon_ndev;
-	mon_wdev->iftype = NL80211_IFTYPE_MONITOR;
-	mon_ndev->ieee80211_ptr = mon_wdev;
-
-	ret = cfg80211_register_netdevice(mon_ndev);
-	if (ret)
-		goto out;
-
-	*ndev = pwdev_priv->pmon_ndev = mon_ndev;
-	memcpy(pwdev_priv->ifname_mon, name, IFNAMSIZ + 1);
-
-out:
-	if (ret && mon_wdev) {
-		kfree(mon_wdev);
-		mon_wdev = NULL;
-	}
-
-	if (ret && mon_ndev) {
-		free_netdev(mon_ndev);
-		*ndev = mon_ndev = NULL;
-	}
-
-	return ret;
-}
-
-static struct wireless_dev *
-	cfg80211_rtw_add_virtual_intf(
-		struct wiphy *wiphy,
-		const char *name,
-		unsigned char name_assign_type,
-		enum nl80211_iftype type, struct vif_params *params)
-{
-	int ret = 0;
-	struct net_device *ndev = NULL;
-	struct adapter *padapter = wiphy_to_adapter(wiphy);
-
-	switch (type) {
-	case NL80211_IFTYPE_ADHOC:
-	case NL80211_IFTYPE_AP_VLAN:
-	case NL80211_IFTYPE_WDS:
-	case NL80211_IFTYPE_MESH_POINT:
-		ret = -ENODEV;
-		break;
-	case NL80211_IFTYPE_MONITOR:
-		ret = rtw_cfg80211_add_monitor_if(padapter, (char *)name, &ndev);
-		break;
-	case NL80211_IFTYPE_P2P_CLIENT:
-	case NL80211_IFTYPE_STATION:
-		ret = -ENODEV;
-		break;
-	case NL80211_IFTYPE_P2P_GO:
-	case NL80211_IFTYPE_AP:
-		ret = -ENODEV;
-		break;
-	default:
-		ret = -ENODEV;
-		break;
-	}
-
-	return ndev ? ndev->ieee80211_ptr : ERR_PTR(ret);
-}
-
-static int cfg80211_rtw_del_virtual_intf(struct wiphy *wiphy,
-					 struct wireless_dev *wdev
-)
-{
-	struct net_device *ndev = wdev_to_ndev(wdev);
-	int ret = 0;
-	struct adapter *adapter;
-	struct rtw_wdev_priv *pwdev_priv;
-
-	if (!ndev) {
-		ret = -EINVAL;
-		goto exit;
-	}
-
-	adapter = rtw_netdev_priv(ndev);
-	pwdev_priv = adapter_wdev_data(adapter);
-
-	cfg80211_unregister_netdevice(ndev);
-
-	if (ndev == pwdev_priv->pmon_ndev) {
-		pwdev_priv->pmon_ndev = NULL;
-		pwdev_priv->ifname_mon[0] = '\0';
-	}
-
-exit:
-	return ret;
-}
-
-static int rtw_add_beacon(struct adapter *adapter, const u8 *head, size_t head_len, const u8 *tail, size_t tail_len)
-{
-	int ret = 0;
-	u8 *pbuf = NULL;
-	unsigned int len, wps_ielen = 0;
-	struct mlme_priv *pmlmepriv = &(adapter->mlmepriv);
-
-	if (!check_fwstate(pmlmepriv, WIFI_AP_STATE))
-		return -EINVAL;
-
-	if (head_len < 24)
-		return -EINVAL;
-
-	pbuf = kzalloc(head_len + tail_len, GFP_KERNEL);
-	if (!pbuf)
-		return -ENOMEM;
-
-	memcpy(pbuf, head + 24, head_len - 24);/*  24 =beacon header len. */
-	memcpy(pbuf + head_len - 24, tail, tail_len);
-
-	len = head_len + tail_len - 24;
-
-	/* check wps ie if inclued */
-	rtw_get_wps_ie(pbuf + _FIXED_IE_LENGTH_, len - _FIXED_IE_LENGTH_, NULL, &wps_ielen);
-
-	/* pbss_network->ies will not include p2p_ie, wfd ie */
-	rtw_ies_remove_ie(pbuf, &len, _BEACON_IE_OFFSET_, WLAN_EID_VENDOR_SPECIFIC, P2P_OUI, 4);
-	rtw_ies_remove_ie(pbuf, &len, _BEACON_IE_OFFSET_, WLAN_EID_VENDOR_SPECIFIC, WFD_OUI, 4);
-
-	if (rtw_check_beacon_data(adapter, pbuf,  len) == _SUCCESS)
-		ret = 0;
-	else
-		ret = -EINVAL;
-
-	kfree(pbuf);
-
-	return ret;
-}
-
-static int cfg80211_rtw_start_ap(struct wiphy *wiphy, struct net_device *ndev,
-				 struct cfg80211_ap_settings *settings)
-{
-	int ret = 0;
-	struct adapter *adapter = rtw_netdev_priv(ndev);
-
-	ret = rtw_add_beacon(adapter, settings->beacon.head,
-			     settings->beacon.head_len, settings->beacon.tail,
-			     settings->beacon.tail_len);
-
-	adapter->mlmeextpriv.mlmext_info.hidden_ssid_mode = settings->hidden_ssid;
-
-	if (settings->ssid && settings->ssid_len) {
-		struct wlan_bssid_ex *pbss_network = &adapter->mlmepriv.cur_network.network;
-		struct wlan_bssid_ex *pbss_network_ext = &adapter->mlmeextpriv.mlmext_info.network;
-
-		memcpy(pbss_network->ssid.ssid, settings->ssid, settings->ssid_len);
-		pbss_network->ssid.ssid_length = settings->ssid_len;
-		memcpy(pbss_network_ext->ssid.ssid, settings->ssid, settings->ssid_len);
-		pbss_network_ext->ssid.ssid_length = settings->ssid_len;
-	}
-
-	return ret;
-}
-
-static int cfg80211_rtw_change_beacon(struct wiphy *wiphy, struct net_device *ndev,
-		struct cfg80211_ap_update *info)
-{
-	struct adapter *adapter = rtw_netdev_priv(ndev);
-
-	return rtw_add_beacon(adapter, info->beacon.head,
-			      info->beacon.head_len, info->beacon.tail,
-			      info->beacon.tail_len);
-}
-
-static int cfg80211_rtw_stop_ap(struct wiphy *wiphy, struct net_device *ndev,
-				unsigned int link_id)
-{
-	return 0;
-}
-
-static int	cfg80211_rtw_add_station(struct wiphy *wiphy,
-					 struct wireless_dev *wdev,
-					 const u8 *mac,
-					 struct station_parameters *params)
-{
-	return 0;
-}
-
-static int cfg80211_rtw_del_station(struct wiphy *wiphy,
-				    struct wireless_dev *wdev,
-				    struct station_del_parameters *params)
-{
-	int ret = 0;
-	struct list_head *phead, *plist, *tmp;
-	u8 updated = false;
-	struct sta_info *psta = NULL;
-	struct adapter *padapter = rtw_netdev_priv(wdev->netdev);
-	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
-	struct sta_priv *pstapriv = &padapter->stapriv;
-	const u8 *mac = params->mac;
-
-	if (!check_fwstate(pmlmepriv, _FW_LINKED | WIFI_AP_STATE))
-		return -EINVAL;
-
-	if (!mac) {
-		flush_all_cam_entry(padapter);	/* clear CAM */
-
-		rtw_sta_flush(padapter);
-
-		return 0;
-	}
-
-	if (mac[0] == 0xff && mac[1] == 0xff &&
-	    mac[2] == 0xff && mac[3] == 0xff &&
-	    mac[4] == 0xff && mac[5] == 0xff) {
-		return -EINVAL;
-	}
-
-	spin_lock_bh(&pstapriv->asoc_list_lock);
-
-	phead = &pstapriv->asoc_list;
-	/* check asoc_queue */
-	list_for_each_safe(plist, tmp, phead) {
-		psta = list_entry(plist, struct sta_info, asoc_list);
-
-		if (!memcmp((u8 *)mac, psta->hwaddr, ETH_ALEN)) {
-			if (psta->dot8021xalg != 1 || psta->bpairwise_key_installed) {
-				list_del_init(&psta->asoc_list);
-				pstapriv->asoc_list_cnt--;
-
-				updated = ap_free_sta(padapter, psta, true, WLAN_REASON_DEAUTH_LEAVING);
-
-				psta = NULL;
-
-				break;
-			}
-		}
-	}
-
-	spin_unlock_bh(&pstapriv->asoc_list_lock);
-
-	associated_clients_update(padapter, updated);
-
-	return ret;
-}
-
-static int cfg80211_rtw_change_station(struct wiphy *wiphy,
-				       struct wireless_dev *wdev,
-				       const u8 *mac,
-				       struct station_parameters *params)
-{
-	return 0;
-}
-
-static struct sta_info *rtw_sta_info_get_by_idx(const int idx, struct sta_priv *pstapriv)
-
-{
-	struct list_head	*phead, *plist;
-	struct sta_info *psta = NULL;
-	int i = 0;
-
-	phead = &pstapriv->asoc_list;
-	plist = get_next(phead);
-
-	/* check asoc_queue */
-	while (phead != plist) {
-		if (idx == i)
-			psta = container_of(plist, struct sta_info, asoc_list);
-		plist = get_next(plist);
-		i++;
-	}
-	return psta;
-}
-
-static int	cfg80211_rtw_dump_station(struct wiphy *wiphy,
-					 struct wireless_dev *wdev,
-					  int idx, u8 *mac,
-					  struct station_info *sinfo)
-{
-	int ret = 0;
-	struct adapter *padapter = rtw_netdev_priv(wdev_to_ndev(wdev));
-	struct sta_info *psta = NULL;
-	struct sta_priv *pstapriv = &padapter->stapriv;
-
-	spin_lock_bh(&pstapriv->asoc_list_lock);
-	psta = rtw_sta_info_get_by_idx(idx, pstapriv);
-	spin_unlock_bh(&pstapriv->asoc_list_lock);
-	if (!psta) {
-		ret = -ENOENT;
-		goto exit;
-	}
-	memcpy(mac, psta->hwaddr, ETH_ALEN);
-	sinfo->filled = BIT_ULL(NL80211_STA_INFO_SIGNAL);
-	sinfo->signal = psta->rssi;
-
-exit:
-	return ret;
-}
-
-void rtw_cfg80211_rx_action(struct adapter *adapter, u8 *frame, unsigned int frame_len, const char *msg)
-{
-	s32 freq;
-	int channel;
-	u8 category, action;
-
-	channel = rtw_get_oper_ch(adapter);
-
-	rtw_action_frame_parse(frame, frame_len, &category, &action);
-
-	freq = rtw_ieee80211_channel_to_frequency(channel);
-
-	rtw_cfg80211_rx_mgmt(adapter, freq, 0, frame, frame_len, GFP_ATOMIC);
-}
-
-static int _cfg80211_rtw_mgmt_tx(struct adapter *padapter, u8 tx_ch, const u8 *buf, size_t len)
-{
-	struct xmit_frame	*pmgntframe;
-	struct pkt_attrib	*pattrib;
-	unsigned char *pframe;
-	int ret = _FAIL;
-	bool __maybe_unused ack = true;
-	struct ieee80211_hdr *pwlanhdr;
-	struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
-	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
-
-	rtw_set_scan_deny(padapter, 1000);
-
-	rtw_scan_abort(padapter);
-	if (tx_ch != rtw_get_oper_ch(padapter)) {
-		if (!check_fwstate(&padapter->mlmepriv, _FW_LINKED))
-			pmlmeext->cur_channel = tx_ch;
-		set_channel_bwmode(padapter, tx_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, CHANNEL_WIDTH_20);
-	}
-
-	/* starting alloc mgmt frame to dump it */
-	pmgntframe = alloc_mgtxmitframe(pxmitpriv);
-	if (!pmgntframe) {
-		/* ret = -ENOMEM; */
-		ret = _FAIL;
-		goto exit;
-	}
-
-	/* update attribute */
-	pattrib = &pmgntframe->attrib;
-	update_mgntframe_attrib(padapter, pattrib);
-	pattrib->retry_ctrl = false;
-
-	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
-
-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-
-	memcpy(pframe, buf, len);
-	pattrib->pktlen = len;
-
-	pwlanhdr = (struct ieee80211_hdr *)pframe;
-	/* update seq number */
-	pmlmeext->mgnt_seq = GetSequence(pwlanhdr);
-	pattrib->seqnum = pmlmeext->mgnt_seq;
-	pmlmeext->mgnt_seq++;
-
-	pattrib->last_txcmdsz = pattrib->pktlen;
-
-	if (dump_mgntframe_and_wait_ack(padapter, pmgntframe) != _SUCCESS) {
-		ack = false;
-		ret = _FAIL;
-
-	} else {
-		msleep(50);
-
-		ret = _SUCCESS;
-	}
-
-exit:
-
-	return ret;
-}
-
-static int cfg80211_rtw_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
-				struct cfg80211_mgmt_tx_params *params,
-				u64 cookie)
-{
-	struct net_device *ndev = wdev_to_ndev(wdev);
-	struct ieee80211_channel *chan = params->chan;
-	const u8 *buf = params->buf;
-	size_t len = params->len;
-	int ret = 0;
-	int tx_ret;
-	u32 dump_limit = RTW_MAX_MGMT_TX_CNT;
-	u32 dump_cnt = 0;
-	bool ack = true;
-	u8 tx_ch = (u8)ieee80211_frequency_to_channel(chan->center_freq);
-	u8 category, action;
-	struct adapter *padapter;
-
-	if (!ndev) {
-		ret = -EINVAL;
-		goto exit;
-	}
-
-	padapter = rtw_netdev_priv(ndev);
-
-	/* indicate ack before issue frame to avoid racing with rsp frame */
-	rtw_cfg80211_mgmt_tx_status(padapter, cookie, buf, len, ack, GFP_KERNEL);
-
-	if (!rtw_action_frame_parse(buf, len, &category, &action))
-		goto exit;
-
-	rtw_ps_deny(padapter, PS_DENY_MGNT_TX);
-	if (rtw_pwr_wakeup(padapter) == _FAIL) {
-		ret = -EFAULT;
-		goto cancel_ps_deny;
-	}
-
-	do {
-		dump_cnt++;
-		tx_ret = _cfg80211_rtw_mgmt_tx(padapter, tx_ch, buf, len);
-	} while (dump_cnt < dump_limit && tx_ret != _SUCCESS);
-
-cancel_ps_deny:
-	rtw_ps_deny_cancel(padapter, PS_DENY_MGNT_TX);
-exit:
-	return ret;
-}
-
-static void rtw_cfg80211_init_ht_capab(struct ieee80211_sta_ht_cap *ht_cap, enum nl80211_band band)
-{
-#define MAX_BIT_RATE_40MHZ_MCS7		150	/* Mbps */
-
-	ht_cap->ht_supported = true;
-
-	ht_cap->cap = IEEE80211_HT_CAP_SUP_WIDTH_20_40 |
-					IEEE80211_HT_CAP_SGI_40 | IEEE80211_HT_CAP_SGI_20 |
-					IEEE80211_HT_CAP_DSSSCCK40 | IEEE80211_HT_CAP_MAX_AMSDU;
-
-	/*
-	 *Maximum length of AMPDU that the STA can receive.
-	 *Length = 2 ^ (13 + max_ampdu_length_exp) - 1 (octets)
-	 */
-	ht_cap->ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
-
-	/*Minimum MPDU start spacing , */
-	ht_cap->ampdu_density = IEEE80211_HT_MPDU_DENSITY_16;
-
-	ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
-
-	/*
-	 *hw->wiphy->bands[NL80211_BAND_2GHZ]
-	 *base on ant_num
-	 *rx_mask: RX mask
-	 *if rx_ant = 1 rx_mask[0]= 0xff;==>MCS0-MCS7
-	 *if rx_ant =2 rx_mask[1]= 0xff;==>MCS8-MCS15
-	 *if rx_ant >=3 rx_mask[2]= 0xff;
-	 *if BW_40 rx_mask[4]= 0x01;
-	 *highest supported RX rate
-	 */
-	ht_cap->mcs.rx_mask[0] = 0xFF;
-	ht_cap->mcs.rx_mask[1] = 0x00;
-	ht_cap->mcs.rx_mask[4] = 0x01;
-
-	ht_cap->mcs.rx_highest = cpu_to_le16(MAX_BIT_RATE_40MHZ_MCS7);
-}
-
-void rtw_cfg80211_init_wiphy(struct adapter *padapter)
-{
-	struct ieee80211_supported_band *bands;
-	struct wireless_dev *pwdev = padapter->rtw_wdev;
-	struct wiphy *wiphy = pwdev->wiphy;
-
-	{
-		bands = wiphy->bands[NL80211_BAND_2GHZ];
-		if (bands)
-			rtw_cfg80211_init_ht_capab(&bands->ht_cap, NL80211_BAND_2GHZ);
-	}
-
-	/* copy mac_addr to wiphy */
-	memcpy(wiphy->perm_addr, padapter->eeprompriv.mac_addr, ETH_ALEN);
-}
-
-static void rtw_cfg80211_preinit_wiphy(struct adapter *padapter, struct wiphy *wiphy)
-{
-	wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM;
-
-	wiphy->max_scan_ssids = RTW_SSID_SCAN_AMOUNT;
-	wiphy->max_scan_ie_len = RTW_SCAN_IE_LEN_MAX;
-	wiphy->max_num_pmkids = RTW_MAX_NUM_PMKIDS;
-
-	wiphy->max_remain_on_channel_duration = RTW_MAX_REMAIN_ON_CHANNEL_DURATION;
-
-	wiphy->interface_modes =	BIT(NL80211_IFTYPE_STATION)
-								| BIT(NL80211_IFTYPE_ADHOC)
-								| BIT(NL80211_IFTYPE_AP)
-								| BIT(NL80211_IFTYPE_MONITOR)
-								;
-
-	wiphy->mgmt_stypes = rtw_cfg80211_default_mgmt_stypes;
-
-	wiphy->software_iftypes |= BIT(NL80211_IFTYPE_MONITOR);
-
-	wiphy->cipher_suites = rtw_cipher_suites;
-	wiphy->n_cipher_suites = ARRAY_SIZE(rtw_cipher_suites);
-
-	/* if (padapter->registrypriv.wireless_mode & WIRELESS_11G) */
-	wiphy->bands[NL80211_BAND_2GHZ] = rtw_spt_band_alloc(NL80211_BAND_2GHZ);
-
-	wiphy->flags |= WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
-	wiphy->flags |= WIPHY_FLAG_OFFCHAN_TX | WIPHY_FLAG_HAVE_AP_SME;
-
-#if defined(CONFIG_PM)
-	wiphy->max_sched_scan_reqs = 1;
-#endif
-
-#if defined(CONFIG_PM)
-	wiphy->wowlan = &wowlan_stub;
-#endif
-
-	if (padapter->registrypriv.power_mgnt != PS_MODE_ACTIVE)
-		wiphy->flags |= WIPHY_FLAG_PS_ON_BY_DEFAULT;
-	else
-		wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT;
-}
-
-static struct cfg80211_ops rtw_cfg80211_ops = {
-	.change_virtual_intf = cfg80211_rtw_change_iface,
-	.add_key = cfg80211_rtw_add_key,
-	.get_key = cfg80211_rtw_get_key,
-	.del_key = cfg80211_rtw_del_key,
-	.set_default_key = cfg80211_rtw_set_default_key,
-	.get_station = cfg80211_rtw_get_station,
-	.scan = cfg80211_rtw_scan,
-	.set_wiphy_params = cfg80211_rtw_set_wiphy_params,
-	.connect = cfg80211_rtw_connect,
-	.disconnect = cfg80211_rtw_disconnect,
-	.join_ibss = cfg80211_rtw_join_ibss,
-	.leave_ibss = cfg80211_rtw_leave_ibss,
-	.set_tx_power = cfg80211_rtw_set_txpower,
-	.get_tx_power = cfg80211_rtw_get_txpower,
-	.set_power_mgmt = cfg80211_rtw_set_power_mgmt,
-	.set_pmksa = cfg80211_rtw_set_pmksa,
-	.del_pmksa = cfg80211_rtw_del_pmksa,
-	.flush_pmksa = cfg80211_rtw_flush_pmksa,
-	.get_channel = cfg80211_rtw_get_channel,
-	.add_virtual_intf = cfg80211_rtw_add_virtual_intf,
-	.del_virtual_intf = cfg80211_rtw_del_virtual_intf,
-
-	.start_ap = cfg80211_rtw_start_ap,
-	.change_beacon = cfg80211_rtw_change_beacon,
-	.stop_ap = cfg80211_rtw_stop_ap,
-
-	.add_station = cfg80211_rtw_add_station,
-	.del_station = cfg80211_rtw_del_station,
-	.change_station = cfg80211_rtw_change_station,
-	.dump_station = cfg80211_rtw_dump_station,
-
-	.mgmt_tx = cfg80211_rtw_mgmt_tx,
-};
-
-int rtw_wdev_alloc(struct adapter *padapter, struct device *dev)
-{
-	int ret = 0;
-	struct wiphy *wiphy;
-	struct wireless_dev *wdev;
-	struct rtw_wdev_priv *pwdev_priv;
-	struct net_device *pnetdev = padapter->pnetdev;
-
-	/* wiphy */
-	wiphy = wiphy_new(&rtw_cfg80211_ops, sizeof(struct adapter *));
-	if (!wiphy) {
-		ret = -ENOMEM;
-		goto exit;
-	}
-	set_wiphy_dev(wiphy, dev);
-	*((struct adapter **)wiphy_priv(wiphy)) = padapter;
-	rtw_cfg80211_preinit_wiphy(padapter, wiphy);
-
-	/* init regulary domain */
-	rtw_regd_init(wiphy, rtw_reg_notifier);
-
-	ret = wiphy_register(wiphy);
-	if (ret < 0)
-		goto free_wiphy;
-
-	/*  wdev */
-	wdev = kzalloc_obj(*wdev);
-	if (!wdev) {
-		ret = -ENOMEM;
-		goto unregister_wiphy;
-	}
-	wdev->wiphy = wiphy;
-	wdev->netdev = pnetdev;
-
-	wdev->iftype = NL80211_IFTYPE_STATION; /*  will be init in rtw_hal_init() */
-					   /*  Must sync with _rtw_init_mlme_priv() */
-					   /*  pmlmepriv->fw_state = WIFI_STATION_STATE */
-	padapter->rtw_wdev = wdev;
-	pnetdev->ieee80211_ptr = wdev;
-
-	/* init pwdev_priv */
-	pwdev_priv = adapter_wdev_data(padapter);
-	pwdev_priv->rtw_wdev = wdev;
-	pwdev_priv->pmon_ndev = NULL;
-	pwdev_priv->ifname_mon[0] = '\0';
-	pwdev_priv->padapter = padapter;
-	pwdev_priv->scan_request = NULL;
-	spin_lock_init(&pwdev_priv->scan_req_lock);
-
-	if (padapter->registrypriv.power_mgnt != PS_MODE_ACTIVE)
-		pwdev_priv->power_mgmt = true;
-	else
-		pwdev_priv->power_mgmt = false;
-
-	return ret;
-
-unregister_wiphy:
-	wiphy_unregister(wiphy);
- free_wiphy:
-	wiphy_free(wiphy);
-exit:
-	return ret;
-}
-
-void rtw_wdev_free(struct wireless_dev *wdev)
-{
-	if (!wdev)
-		return;
-
-	kfree(wdev->wiphy->bands[NL80211_BAND_2GHZ]);
-
-	wiphy_free(wdev->wiphy);
-
-	kfree(wdev);
-}
-
-void rtw_wdev_unregister(struct wireless_dev *wdev)
-{
-	struct net_device *ndev;
-	struct adapter *adapter;
-	struct rtw_wdev_priv *pwdev_priv;
-
-	if (!wdev)
-		return;
-	ndev = wdev_to_ndev(wdev);
-	if (!ndev)
-		return;
-
-	adapter = rtw_netdev_priv(ndev);
-	pwdev_priv = adapter_wdev_data(adapter);
-
-	rtw_cfg80211_indicate_scan_done(adapter, true);
-
-	if (pwdev_priv->pmon_ndev)
-		unregister_netdev(pwdev_priv->pmon_ndev);
-
-	wiphy_unregister(wdev->wiphy);
-}
diff --git a/drivers/staging/rtl8723bs/os_dep/os_intfs.c b/drivers/staging/rtl8723bs/os_dep/os_intfs.c
deleted file mode 100644
index c15056ee207c..000000000000
--- a/drivers/staging/rtl8723bs/os_dep/os_intfs.c
+++ /dev/null
@@ -1,1189 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <drv_types.h>
-#include <hal_data.h>
-#include <rtl8723b_xmit.h>
-
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("Realtek Wireless Lan Driver");
-MODULE_AUTHOR("Realtek Semiconductor Corp.");
-MODULE_VERSION(DRIVERVERSION);
-
-/* module param defaults */
-static int rtw_chip_version;
-static int rtw_rfintfs = HWPI;
-static int rtw_lbkmode;/* RTL8712_AIR_TRX; */
-
-
-static int rtw_network_mode = NL80211_IFTYPE_ADHOC;/* infra, ad-hoc, auto */
-/* struct ndis_802_11_ssid	ssid; */
-static int rtw_channel = 1;/* ad-hoc support requirement */
-static int rtw_wireless_mode = WIRELESS_11BG_24N;
-static int rtw_vrtl_carrier_sense = AUTO_VCS;
-static int rtw_vcs_type = RTS_CTS;/*  */
-static int rtw_rts_thresh = 2347;/*  */
-static int rtw_frag_thresh = 2346;/*  */
-static int rtw_preamble = PREAMBLE_LONG;/* long, short, auto */
-static int rtw_scan_mode = 1;/* active, passive */
-static int rtw_adhoc_tx_pwr = 1;
-static int rtw_soft_ap;
-/* int smart_ps = 1; */
-static int rtw_power_mgnt = 1;
-static int rtw_ips_mode = IPS_NORMAL;
-module_param(rtw_ips_mode, int, 0644);
-MODULE_PARM_DESC(rtw_ips_mode, "The default IPS mode");
-
-static int rtw_smart_ps = 2;
-
-static int rtw_check_fw_ps = 1;
-
-static int rtw_usb_rxagg_mode = 2;/* USB_RX_AGG_DMA = 1, USB_RX_AGG_USB =2 */
-module_param(rtw_usb_rxagg_mode, int, 0644);
-
-static int rtw_radio_enable = 1;
-static int rtw_long_retry_lmt = 7;
-static int rtw_short_retry_lmt = 7;
-static int rtw_busy_thresh = 40;
-/* int qos_enable = 0; */
-static int rtw_ack_policy = NORMAL_ACK;
-
-static int rtw_software_encrypt;
-static int rtw_software_decrypt;
-
-static int rtw_acm_method;/*  0:By SW 1:By HW. */
-
-static int rtw_wmm_enable = 1;/*  default is set to enable the wmm. */
-static int rtw_uapsd_enable;
-static int rtw_uapsd_max_sp = NO_LIMIT;
-static int rtw_uapsd_acbk_en;
-static int rtw_uapsd_acbe_en;
-static int rtw_uapsd_acvi_en;
-static int rtw_uapsd_acvo_en;
-
-int rtw_ht_enable = 1;
-/*
- * 0: 20 MHz, 1: 40 MHz
- * 2.4G use bit 0 ~ 3
- * 0x01 means enable 2.4G 40MHz
- */
-static int rtw_bw_mode = 0x01;
-static int rtw_ampdu_enable = 1;/* for enable tx_ampdu ,0: disable, 0x1:enable (but wifi_spec should be 0), 0x2: force enable (don't care wifi_spec) */
-static int rtw_rx_stbc = 1;/*  0: disable, 1:enable 2.4g */
-static int rtw_ampdu_amsdu;/*  0: disabled, 1:enabled, 2:auto . There is an IOT issu with DLINK DIR-629 when the flag turn on */
-/*  Short GI support Bit Map */
-/*  BIT0 - 20MHz, 0: non-support, 1: support */
-/*  BIT1 - 40MHz, 0: non-support, 1: support */
-/*  BIT2 - 80MHz, 0: non-support, 1: support */
-/*  BIT3 - 160MHz, 0: non-support, 1: support */
-static int rtw_short_gi = 0xf;
-/*  BIT0: Enable VHT LDPC Rx, BIT1: Enable VHT LDPC Tx, BIT4: Enable HT LDPC Rx, BIT5: Enable HT LDPC Tx */
-static int rtw_ldpc_cap = 0x33;
-/*  BIT0: Enable VHT STBC Rx, BIT1: Enable VHT STBC Tx, BIT4: Enable HT STBC Rx, BIT5: Enable HT STBC Tx */
-static int rtw_stbc_cap = 0x13;
-/*  BIT0: Enable VHT Beamformer, BIT1: Enable VHT Beamformee, BIT4: Enable HT Beamformer, BIT5: Enable HT Beamformee */
-static int rtw_beamform_cap = 0x2;
-
-static int rtw_lowrate_two_xmit = 1;/* Use 2 path Tx to transmit MCS0~7 and legacy mode */
-
-static int rtw_low_power;
-static int rtw_wifi_spec;
-static int rtw_channel_plan = RT_CHANNEL_DOMAIN_MAX;
-
-static int rtw_ant_num = -1; /*  <0: undefined, >0: Antenna number */
-module_param(rtw_ant_num, int, 0644);
-MODULE_PARM_DESC(rtw_ant_num, "Antenna number setting");
-
-static int rtw_antdiv_cfg = 1; /*  0:OFF , 1:ON, 2:decide by Efuse config */
-static int rtw_antdiv_type; /* 0:decide by efuse  1: for 88EE, 1Tx and 1RxCG are diversity.(2 Ant with SPDT), 2:  for 88EE, 1Tx and 2Rx are diversity.(2 Ant, Tx and RxCG are both on aux port, RxCS is on main port), 3: for 88EE, 1Tx and 1RxCG are fixed.(1Ant, Tx and RxCG are both on aux port) */
-
-static int rtw_hw_wps_pbc;
-
-int rtw_mc2u_disable;
-
-static int rtw_80211d;
-
-static int rtw_qos_opt_enable;/* 0: disable, 1:enable */
-module_param(rtw_qos_opt_enable, int, 0644);
-
-static char *ifname = "wlan%d";
-module_param(ifname, charp, 0644);
-MODULE_PARM_DESC(ifname, "The default name to allocate for first interface");
-
-char *rtw_initmac;  /*  temp mac address if users want to use instead of the mac address in Efuse */
-
-module_param(rtw_initmac, charp, 0644);
-module_param(rtw_channel_plan, int, 0644);
-module_param(rtw_chip_version, int, 0644);
-module_param(rtw_rfintfs, int, 0644);
-module_param(rtw_lbkmode, int, 0644);
-module_param(rtw_network_mode, int, 0644);
-module_param(rtw_channel, int, 0644);
-module_param(rtw_wmm_enable, int, 0644);
-module_param(rtw_vrtl_carrier_sense, int, 0644);
-module_param(rtw_vcs_type, int, 0644);
-module_param(rtw_busy_thresh, int, 0644);
-
-module_param(rtw_ht_enable, int, 0644);
-module_param(rtw_bw_mode, int, 0644);
-module_param(rtw_ampdu_enable, int, 0644);
-module_param(rtw_rx_stbc, int, 0644);
-module_param(rtw_ampdu_amsdu, int, 0644);
-
-module_param(rtw_lowrate_two_xmit, int, 0644);
-
-module_param(rtw_power_mgnt, int, 0644);
-module_param(rtw_smart_ps, int, 0644);
-module_param(rtw_low_power, int, 0644);
-module_param(rtw_wifi_spec, int, 0644);
-
-module_param(rtw_antdiv_cfg, int, 0644);
-module_param(rtw_antdiv_type, int, 0644);
-
-module_param(rtw_hw_wps_pbc, int, 0644);
-
-static uint rtw_max_roaming_times = 2;
-module_param(rtw_max_roaming_times, uint, 0644);
-MODULE_PARM_DESC(rtw_max_roaming_times, "The max roaming times to try");
-
-module_param(rtw_mc2u_disable, int, 0644);
-
-module_param(rtw_80211d, int, 0644);
-MODULE_PARM_DESC(rtw_80211d, "Enable 802.11d mechanism");
-
-static uint rtw_notch_filter;
-module_param(rtw_notch_filter, uint, 0644);
-MODULE_PARM_DESC(rtw_notch_filter, "0:Disable, 1:Enable, 2:Enable only for P2P");
-
-#define CONFIG_RTW_HIQ_FILTER 1
-
-static uint rtw_hiq_filter = CONFIG_RTW_HIQ_FILTER;
-module_param(rtw_hiq_filter, uint, 0644);
-MODULE_PARM_DESC(rtw_hiq_filter, "0:allow all, 1:allow special, 2:deny all");
-
-static int rtw_tx_pwr_lmt_enable;
-static int rtw_tx_pwr_by_rate;
-
-module_param(rtw_tx_pwr_lmt_enable, int, 0644);
-MODULE_PARM_DESC(rtw_tx_pwr_lmt_enable, "0:Disable, 1:Enable, 2: Depend on efuse");
-
-module_param(rtw_tx_pwr_by_rate, int, 0644);
-MODULE_PARM_DESC(rtw_tx_pwr_by_rate, "0:Disable, 1:Enable, 2: Depend on efuse");
-
-static int netdev_close(struct net_device *pnetdev);
-
-static void loadparam(struct adapter *padapter)
-{
-	struct registry_priv  *registry_par = &padapter->registrypriv;
-
-	registry_par->chip_version = (u8)rtw_chip_version;
-	registry_par->rfintfs = (u8)rtw_rfintfs;
-	registry_par->lbkmode = (u8)rtw_lbkmode;
-	/* registry_par->hci = (u8)hci; */
-	registry_par->network_mode  = (u8)rtw_network_mode;
-
-	memcpy(registry_par->ssid.ssid, "ANY", 3);
-	registry_par->ssid.ssid_length = 3;
-
-	registry_par->channel = (u8)rtw_channel;
-	registry_par->wireless_mode = (u8)rtw_wireless_mode;
-
-	registry_par->vrtl_carrier_sense = (u8)rtw_vrtl_carrier_sense;
-	registry_par->vcs_type = (u8)rtw_vcs_type;
-	registry_par->rts_thresh = (u16)rtw_rts_thresh;
-	registry_par->frag_thresh = (u16)rtw_frag_thresh;
-	registry_par->preamble = (u8)rtw_preamble;
-	registry_par->scan_mode = (u8)rtw_scan_mode;
-	registry_par->adhoc_tx_pwr = (u8)rtw_adhoc_tx_pwr;
-	registry_par->soft_ap =  (u8)rtw_soft_ap;
-	registry_par->smart_ps =  (u8)rtw_smart_ps;
-	registry_par->check_fw_ps = (u8)rtw_check_fw_ps;
-	registry_par->power_mgnt = (u8)rtw_power_mgnt;
-	registry_par->ips_mode = (u8)rtw_ips_mode;
-	registry_par->radio_enable = (u8)rtw_radio_enable;
-	registry_par->long_retry_lmt = (u8)rtw_long_retry_lmt;
-	registry_par->short_retry_lmt = (u8)rtw_short_retry_lmt;
-	registry_par->busy_thresh = (u16)rtw_busy_thresh;
-	/* registry_par->qos_enable = (u8)rtw_qos_enable; */
-	registry_par->ack_policy = (u8)rtw_ack_policy;
-	registry_par->software_encrypt = (u8)rtw_software_encrypt;
-	registry_par->software_decrypt = (u8)rtw_software_decrypt;
-
-	registry_par->acm_method = (u8)rtw_acm_method;
-	registry_par->usb_rxagg_mode = (u8)rtw_usb_rxagg_mode;
-
-	 /* UAPSD */
-	registry_par->wmm_enable = (u8)rtw_wmm_enable;
-	registry_par->uapsd_enable = (u8)rtw_uapsd_enable;
-	registry_par->uapsd_max_sp = (u8)rtw_uapsd_max_sp;
-	registry_par->uapsd_acbk_en = (u8)rtw_uapsd_acbk_en;
-	registry_par->uapsd_acbe_en = (u8)rtw_uapsd_acbe_en;
-	registry_par->uapsd_acvi_en = (u8)rtw_uapsd_acvi_en;
-	registry_par->uapsd_acvo_en = (u8)rtw_uapsd_acvo_en;
-
-	registry_par->ht_enable = (u8)rtw_ht_enable;
-	registry_par->bw_mode = (u8)rtw_bw_mode;
-	registry_par->ampdu_enable = (u8)rtw_ampdu_enable;
-	registry_par->rx_stbc = (u8)rtw_rx_stbc;
-	registry_par->ampdu_amsdu = (u8)rtw_ampdu_amsdu;
-	registry_par->short_gi = (u8)rtw_short_gi;
-	registry_par->ldpc_cap = (u8)rtw_ldpc_cap;
-	registry_par->stbc_cap = (u8)rtw_stbc_cap;
-	registry_par->beamform_cap = (u8)rtw_beamform_cap;
-
-	registry_par->lowrate_two_xmit = (u8)rtw_lowrate_two_xmit;
-	registry_par->low_power = (u8)rtw_low_power;
-
-	registry_par->wifi_spec = (u8)rtw_wifi_spec;
-
-	registry_par->channel_plan = (u8)rtw_channel_plan;
-
-	registry_par->ant_num = (s8)rtw_ant_num;
-
-	registry_par->accept_addba_req = true;
-
-	registry_par->antdiv_cfg = (u8)rtw_antdiv_cfg;
-	registry_par->antdiv_type = (u8)rtw_antdiv_type;
-
-	registry_par->hw_wps_pbc = (u8)rtw_hw_wps_pbc;
-
-	registry_par->max_roaming_times = (u8)rtw_max_roaming_times;
-
-	registry_par->enable80211d = (u8)rtw_80211d;
-
-	snprintf(registry_par->ifname, 16, "%s", ifname);
-
-	registry_par->notch_filter = (u8)rtw_notch_filter;
-
-	registry_par->reg_enable_tx_power_limit = (u8)rtw_tx_pwr_lmt_enable;
-	registry_par->reg_enable_tx_power_by_rate = (u8)rtw_tx_pwr_by_rate;
-
-	registry_par->reg_power_base = 14;
-
-	registry_par->qos_opt_enable = (u8)rtw_qos_opt_enable;
-
-	registry_par->hiq_filter = (u8)rtw_hiq_filter;
-}
-
-static int rtw_net_set_mac_address(struct net_device *pnetdev, void *p)
-{
-	struct adapter *padapter = rtw_netdev_priv(pnetdev);
-	struct sockaddr *addr = p;
-
-	if (!padapter->bup) {
-		/* addr->sa_data[4], addr->sa_data[5]); */
-		memcpy(padapter->eeprompriv.mac_addr, addr->sa_data, ETH_ALEN);
-		/* eth_hw_addr_set(pnetdev, addr->sa_data); */
-		/* padapter->bset_hwaddr = true; */
-	}
-
-	return 0;
-}
-
-static struct net_device_stats *rtw_net_get_stats(struct net_device *pnetdev)
-{
-	struct adapter *padapter = rtw_netdev_priv(pnetdev);
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct recv_priv *precvpriv = &padapter->recvpriv;
-
-	padapter->stats.tx_packets = pxmitpriv->tx_pkts;/* pxmitpriv->tx_pkts++; */
-	padapter->stats.rx_packets = precvpriv->rx_pkts;/* precvpriv->rx_pkts++; */
-	padapter->stats.tx_dropped = pxmitpriv->tx_drop;
-	padapter->stats.rx_dropped = precvpriv->rx_drop;
-	padapter->stats.tx_bytes = pxmitpriv->tx_bytes;
-	padapter->stats.rx_bytes = precvpriv->rx_bytes;
-
-	return &padapter->stats;
-}
-
-/*
- * AC to queue mapping
- *
- * AC_VO -> queue 0
- * AC_VI -> queue 1
- * AC_BE -> queue 2
- * AC_BK -> queue 3
- */
-static const u16 rtw_1d_to_queue[8] = { 2, 3, 3, 2, 1, 1, 0, 0 };
-
-/* Given a data frame determine the 802.1p/1d tag to use. */
-static unsigned int rtw_classify8021d(struct sk_buff *skb)
-{
-	unsigned int dscp;
-
-	/* skb->priority values from 256->263 are magic values to
-	 * directly indicate a specific 802.1d priority.  This is used
-	 * to allow 802.1d priority to be passed directly in from VLAN
-	 * tags, etc.
-	 */
-	if (skb->priority >= 256 && skb->priority <= 263)
-		return skb->priority - 256;
-
-	switch (skb->protocol) {
-	case htons(ETH_P_IP):
-		dscp = ip_hdr(skb)->tos & 0xfc;
-		break;
-	default:
-		return 0;
-	}
-
-	return dscp >> 5;
-}
-
-static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb,
-			    struct net_device *sb_dev)
-{
-	struct adapter	*padapter = rtw_netdev_priv(dev);
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	skb->priority = rtw_classify8021d(skb);
-
-	if (pmlmepriv->acm_mask != 0)
-		skb->priority = qos_acm(pmlmepriv->acm_mask, skb->priority);
-
-	return rtw_1d_to_queue[skb->priority];
-}
-
-u16 rtw_recv_select_queue(struct sk_buff *skb)
-{
-	struct iphdr *piphdr;
-	unsigned int dscp;
-	__be16	eth_type;
-	u32 priority;
-	u8 *pdata = skb->data;
-
-	memcpy(&eth_type, pdata + (ETH_ALEN << 1), 2);
-
-	switch (be16_to_cpu(eth_type)) {
-	case ETH_P_IP:
-
-		piphdr = (struct iphdr *)(pdata + ETH_HLEN);
-
-		dscp = piphdr->tos & 0xfc;
-
-		priority = dscp >> 5;
-
-		break;
-	default:
-		priority = 0;
-	}
-
-	return rtw_1d_to_queue[priority];
-}
-
-static int rtw_ndev_init(struct net_device *dev)
-{
-	struct adapter *adapter = rtw_netdev_priv(dev);
-
-	netdev_dbg(dev, FUNC_ADPT_FMT "\n", FUNC_ADPT_ARG(adapter));
-	strscpy(adapter->old_ifname, dev->name);
-
-	return 0;
-}
-
-static void rtw_ndev_uninit(struct net_device *dev)
-{
-	struct adapter *adapter = rtw_netdev_priv(dev);
-
-	netdev_dbg(dev, FUNC_ADPT_FMT "\n", FUNC_ADPT_ARG(adapter));
-}
-
-static const struct net_device_ops rtw_netdev_ops = {
-	.ndo_init = rtw_ndev_init,
-	.ndo_uninit = rtw_ndev_uninit,
-	.ndo_open = netdev_open,
-	.ndo_stop = netdev_close,
-	.ndo_start_xmit = rtw_xmit_entry,
-	.ndo_select_queue	= rtw_select_queue,
-	.ndo_set_mac_address = rtw_net_set_mac_address,
-	.ndo_get_stats = rtw_net_get_stats,
-};
-
-int rtw_init_netdev_name(struct net_device *pnetdev, const char *ifname)
-{
-	if (dev_alloc_name(pnetdev, ifname) < 0) {
-		pr_err("dev_alloc_name, fail for %s\n", ifname);
-		return 1;
-	}
-	netif_carrier_off(pnetdev);
-	/* rtw_netif_stop_queue(pnetdev); */
-
-	return 0;
-}
-
-struct net_device *rtw_init_netdev(struct adapter *old_padapter)
-{
-	struct adapter *padapter;
-	struct net_device *pnetdev;
-
-	if (old_padapter)
-		pnetdev = rtw_alloc_etherdev_with_old_priv(sizeof(struct adapter), (void *)old_padapter);
-	else
-		pnetdev = rtw_alloc_etherdev(sizeof(struct adapter));
-
-	pr_info("pnetdev = %p\n", pnetdev);
-	if (!pnetdev)
-		return NULL;
-
-	padapter = rtw_netdev_priv(pnetdev);
-	padapter->pnetdev = pnetdev;
-
-	/* pnetdev->init = NULL; */
-
-	pnetdev->netdev_ops = &rtw_netdev_ops;
-
-	/* pnetdev->tx_timeout = NULL; */
-	pnetdev->watchdog_timeo = HZ * 3; /* 3 second timeout */
-
-	/* step 2. */
-	loadparam(padapter);
-
-	return pnetdev;
-}
-
-void rtw_unregister_netdevs(struct dvobj_priv *dvobj)
-{
-	struct adapter *padapter = NULL;
-	struct net_device *pnetdev = NULL;
-
-	padapter = dvobj->padapters;
-
-	if (!padapter)
-		return;
-
-	pnetdev = padapter->pnetdev;
-
-	if ((padapter->DriverState != DRIVER_DISAPPEAR) && pnetdev)
-		unregister_netdev(pnetdev); /* will call netdev_close() */
-	rtw_wdev_unregister(padapter->rtw_wdev);
-}
-
-u32 rtw_start_drv_threads(struct adapter *padapter)
-{
-	u32 _status = _SUCCESS;
-
-	padapter->xmitThread = kthread_run(rtw_xmit_thread, padapter, "RTW_XMIT_THREAD");
-	if (IS_ERR(padapter->xmitThread))
-		_status = _FAIL;
-
-	padapter->cmdThread = kthread_run(rtw_cmd_thread, padapter, "RTW_CMD_THREAD");
-	if (IS_ERR(padapter->cmdThread))
-		_status = _FAIL;
-	else
-		wait_for_completion(&padapter->cmdpriv.terminate_cmdthread_comp); /* wait for cmd_thread to run */
-
-	padapter->xmitpriv.SdioXmitThread = kthread_run(rtl8723bs_xmit_thread,
-							padapter, "RTWHALXT");
-	if (IS_ERR(padapter->xmitpriv.SdioXmitThread)) {
-		padapter->xmitpriv.SdioXmitThread = NULL;
-		_status = _FAIL;
-	}
-
-	return _status;
-}
-
-void rtw_stop_drv_threads(struct adapter *padapter)
-{
-	rtw_stop_cmd_thread(padapter);
-
-	/*  Below is to terminate tx_thread... */
-	complete(&padapter->xmitpriv.xmit_comp);
-	wait_for_completion(&padapter->xmitpriv.terminate_xmitthread_comp);
-
-	/* stop SdioXmitThread */
-	if (padapter->xmitpriv.SdioXmitThread) {
-		complete(&padapter->xmitpriv.SdioXmitStart);
-		wait_for_completion(&padapter->xmitpriv.SdioXmitTerminate);
-		padapter->xmitpriv.SdioXmitThread = NULL;
-	}
-}
-
-static void rtw_init_default_value(struct adapter *padapter)
-{
-	struct registry_priv *pregistrypriv = &padapter->registrypriv;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct security_priv *psecuritypriv = &padapter->securitypriv;
-
-	/* xmit_priv */
-	pxmitpriv->vcs_setting = pregistrypriv->vrtl_carrier_sense;
-	pxmitpriv->vcs = pregistrypriv->vcs_type;
-	pxmitpriv->vcs_type = pregistrypriv->vcs_type;
-	/* pxmitpriv->rts_thresh = pregistrypriv->rts_thresh; */
-	pxmitpriv->frag_len = pregistrypriv->frag_thresh;
-
-	/* recv_priv */
-
-	/* mlme_priv */
-	pmlmepriv->scan_mode = SCAN_ACTIVE;
-
-	/* qos_priv */
-	/* pmlmepriv->qospriv.qos_option = pregistrypriv->wmm_enable; */
-
-	/* ht_priv */
-	pmlmepriv->htpriv.ampdu_enable = false;/* set to disabled */
-
-	/* security_priv */
-	psecuritypriv->binstallGrpkey = _FAIL;
-	psecuritypriv->sw_encrypt = pregistrypriv->software_encrypt;
-	psecuritypriv->sw_decrypt = pregistrypriv->software_decrypt;
-
-	psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_open; /* open system */
-	psecuritypriv->dot11_privacy_algrthm = _NO_PRIVACY_;
-
-	psecuritypriv->dot11PrivacyKeyIndex = 0;
-
-	psecuritypriv->dot118021XGrpPrivacy = _NO_PRIVACY_;
-	psecuritypriv->dot118021XGrpKeyid = 1;
-
-	psecuritypriv->ndisauthtype = Ndis802_11AuthModeOpen;
-	psecuritypriv->ndisencryptstatus = Ndis802_11WEPDisabled;
-
-	/* registry_priv */
-	rtw_init_registrypriv_dev_network(padapter);
-	rtw_update_registrypriv_dev_network(padapter);
-
-	/* hal_priv */
-	rtl8723bs_init_default_value(padapter);
-
-	/* misc. */
-	RTW_ENABLE_FUNC(padapter, DF_RX_BIT);
-	RTW_ENABLE_FUNC(padapter, DF_TX_BIT);
-	padapter->bLinkInfoDump = 0;
-	padapter->bNotifyChannelChange = 0;
-
-	/* for debug purpose */
-	padapter->fix_rate = 0xFF;
-	padapter->driver_ampdu_spacing = 0xFF;
-	padapter->driver_rx_ampdu_factor =  0xFF;
-}
-
-struct dvobj_priv *devobj_init(void)
-{
-	struct dvobj_priv *pdvobj = NULL;
-
-	pdvobj = kzalloc_obj(*pdvobj);
-	if (!pdvobj)
-		return NULL;
-
-	mutex_init(&pdvobj->hw_init_mutex);
-	mutex_init(&pdvobj->h2c_fwcmd_mutex);
-	mutex_init(&pdvobj->setch_mutex);
-	mutex_init(&pdvobj->setbw_mutex);
-
-	spin_lock_init(&pdvobj->lock);
-
-	pdvobj->macid[1] = true; /* macid = 1 for bc/mc stainfo */
-
-	pdvobj->processing_dev_remove = false;
-
-	atomic_set(&pdvobj->disable_func, 0);
-
-	spin_lock_init(&pdvobj->cam_ctl.lock);
-
-	return pdvobj;
-}
-
-void devobj_deinit(struct dvobj_priv *pdvobj)
-{
-	if (!pdvobj)
-		return;
-
-	mutex_destroy(&pdvobj->hw_init_mutex);
-	mutex_destroy(&pdvobj->h2c_fwcmd_mutex);
-	mutex_destroy(&pdvobj->setch_mutex);
-	mutex_destroy(&pdvobj->setbw_mutex);
-
-	kfree(pdvobj);
-}
-
-void rtw_reset_drv_sw(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(padapter);
-
-	/* hal_priv */
-	rtl8723bs_init_default_value(padapter);
-
-	RTW_ENABLE_FUNC(padapter, DF_RX_BIT);
-	RTW_ENABLE_FUNC(padapter, DF_TX_BIT);
-	padapter->bLinkInfoDump = 0;
-
-	padapter->xmitpriv.tx_pkts = 0;
-	padapter->recvpriv.rx_pkts = 0;
-
-	pmlmepriv->link_detect_info.busy_traffic = false;
-
-	pmlmepriv->link_detect_info.traffic_transition_count = 0;
-	pmlmepriv->link_detect_info.low_power_transition_count = 0;
-
-	_clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY | _FW_UNDER_LINKING);
-
-	pwrctrlpriv->pwr_state_check_cnts = 0;
-
-	/* mlmeextpriv */
-	padapter->mlmeextpriv.sitesurvey_res.state = SCAN_DISABLE;
-
-	rtw_set_signal_stat_timer(&padapter->recvpriv);
-}
-
-u8 rtw_init_drv_sw(struct adapter *padapter)
-{
-	int res;
-
-	rtw_init_default_value(padapter);
-
-	rtw_init_hal_com_default_value(padapter);
-
-	if (rtw_init_cmd_priv(&padapter->cmdpriv))
-		return _FAIL;
-
-	padapter->cmdpriv.padapter = padapter;
-
-	if (rtw_init_evt_priv(&padapter->evtpriv))
-		goto free_cmd_priv;
-
-	if (rtw_init_mlme_priv(padapter) == _FAIL)
-		goto free_evt_priv;
-
-	init_mlme_ext_priv(padapter);
-
-	res = _rtw_init_xmit_priv(&padapter->xmitpriv, padapter);
-	if (res)
-		goto free_mlme_ext;
-
-	if (_rtw_init_recv_priv(&padapter->recvpriv, padapter) == _FAIL)
-		goto free_xmit_priv;
-	spin_lock_init(&padapter->security_key_mutex);
-
-	/*  We don't need to memset padapter->XXX to zero, because adapter is allocated by vzalloc(). */
-	/* memset((unsigned char *)&padapter->securitypriv, 0, sizeof (struct security_priv)); */
-
-	if (_rtw_init_sta_priv(&padapter->stapriv) == _FAIL)
-		goto free_recv_priv;
-
-	padapter->stapriv.padapter = padapter;
-	padapter->setband = GHZ24_50;
-	padapter->fix_rate = 0xFF;
-	rtw_init_bcmc_stainfo(padapter);
-
-	rtw_init_pwrctrl_priv(padapter);
-
-	rtl8723b_init_dm_priv(padapter);
-
-	return _SUCCESS;
-
-free_recv_priv:
-	_rtw_free_recv_priv(&padapter->recvpriv);
-
-free_xmit_priv:
-	_rtw_free_xmit_priv(&padapter->xmitpriv);
-
-free_mlme_ext:
-	free_mlme_ext_priv(&padapter->mlmeextpriv);
-
-	rtw_free_mlme_priv(&padapter->mlmepriv);
-
-free_evt_priv:
-	rtw_free_evt_priv(&padapter->evtpriv);
-
-free_cmd_priv:
-	rtw_free_cmd_priv(&padapter->cmdpriv);
-
-	return _FAIL;
-}
-
-void rtw_cancel_all_timer(struct adapter *padapter)
-{
-	timer_delete_sync(&padapter->mlmepriv.assoc_timer);
-
-	timer_delete_sync(&padapter->mlmepriv.scan_to_timer);
-
-	timer_delete_sync(&padapter->mlmepriv.dynamic_chk_timer);
-
-	timer_delete_sync(&(adapter_to_pwrctl(padapter)->pwr_state_check_timer));
-
-	timer_delete_sync(&padapter->mlmepriv.set_scan_deny_timer);
-	rtw_clear_scan_deny(padapter);
-
-	timer_delete_sync(&padapter->recvpriv.signal_stat_timer);
-}
-
-u8 rtw_free_drv_sw(struct adapter *padapter)
-{
-	free_mlme_ext_priv(&padapter->mlmeextpriv);
-
-	rtw_free_cmd_priv(&padapter->cmdpriv);
-
-	rtw_free_evt_priv(&padapter->evtpriv);
-
-	rtw_free_mlme_priv(&padapter->mlmepriv);
-
-	_rtw_free_xmit_priv(&padapter->xmitpriv);
-
-	_rtw_free_sta_priv(&padapter->stapriv); /* will free bcmc_stainfo here */
-
-	_rtw_free_recv_priv(&padapter->recvpriv);
-
-	rtw_free_pwrctrl_priv(padapter);
-
-	/* kfree((void *)padapter); */
-
-	rtw_hal_data_deinit(padapter);
-
-	/* free the old_pnetdev */
-	if (padapter->rereg_nd_name_priv.old_pnetdev) {
-		free_netdev(padapter->rereg_nd_name_priv.old_pnetdev);
-		padapter->rereg_nd_name_priv.old_pnetdev = NULL;
-	}
-
-	/*  clear pbuddystruct adapter to avoid access wrong pointer. */
-	if (padapter->pbuddy_adapter)
-		padapter->pbuddy_adapter->pbuddy_adapter = NULL;
-
-	return _SUCCESS;
-}
-
-static int _rtw_drv_register_netdev(struct adapter *padapter, char *name)
-{
-	int ret = _SUCCESS;
-	struct net_device *pnetdev = padapter->pnetdev;
-
-	/* alloc netdev name */
-	if (rtw_init_netdev_name(pnetdev, name))
-		return _FAIL;
-
-	eth_hw_addr_set(pnetdev, padapter->eeprompriv.mac_addr);
-
-	/* Tell the network stack we exist */
-	if (register_netdev(pnetdev) != 0) {
-		ret = _FAIL;
-		goto error_register_netdev;
-	}
-
-	return ret;
-
-error_register_netdev:
-
-	rtw_free_drv_sw(padapter);
-
-	rtw_free_netdev(pnetdev);
-
-	return ret;
-}
-
-int rtw_drv_register_netdev(struct adapter *if1)
-{
-	struct dvobj_priv *dvobj = if1->dvobj;
-	struct adapter *padapter = dvobj->padapters;
-	char *name = if1->registrypriv.ifname;
-
-	return _rtw_drv_register_netdev(padapter, name);
-}
-
-static int _netdev_open(struct net_device *pnetdev)
-{
-	unsigned int status;
-	struct adapter *padapter = rtw_netdev_priv(pnetdev);
-	struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(padapter);
-
-	padapter->netif_up = true;
-
-	if (pwrctrlpriv->ps_flag) {
-		padapter->net_closed = false;
-		goto netdev_open_normal_process;
-	}
-
-	if (!padapter->bup) {
-		padapter->driver_stopped = false;
-		padapter->bSurpriseRemoved = false;
-		padapter->bCardDisableWOHSM = false;
-
-		status = rtw_hal_init(padapter);
-		if (status == _FAIL)
-			goto netdev_open_error;
-
-		status = rtw_start_drv_threads(padapter);
-		if (status == _FAIL)
-			goto netdev_open_error;
-
-		if (padapter->intf_start)
-			padapter->intf_start(padapter);
-
-		rtw_cfg80211_init_wiphy(padapter);
-
-		padapter->bup = true;
-		pwrctrlpriv->bips_processing = false;
-	}
-	padapter->net_closed = false;
-
-	_set_timer(&padapter->mlmepriv.dynamic_chk_timer, 2000);
-
-	if (!rtw_netif_queue_stopped(pnetdev))
-		rtw_netif_start_queue(pnetdev);
-	else
-		rtw_netif_wake_queue(pnetdev);
-
-netdev_open_normal_process:
-
-	return 0;
-
-netdev_open_error:
-
-	padapter->bup = false;
-
-	netif_carrier_off(pnetdev);
-	rtw_netif_stop_queue(pnetdev);
-
-	return (-1);
-}
-
-int netdev_open(struct net_device *pnetdev)
-{
-	int ret;
-	struct adapter *padapter = rtw_netdev_priv(pnetdev);
-	struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(padapter);
-
-	if (pwrctrlpriv->bInSuspend)
-		return 0;
-
-	if (mutex_lock_interruptible(&(adapter_to_dvobj(padapter)->hw_init_mutex)))
-		return -1;
-
-	ret = _netdev_open(pnetdev);
-	mutex_unlock(&(adapter_to_dvobj(padapter)->hw_init_mutex));
-
-	return ret;
-}
-
-static int  ips_netdrv_open(struct adapter *padapter)
-{
-	int status = _SUCCESS;
-	/* struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); */
-
-	padapter->net_closed = false;
-
-	padapter->driver_stopped = false;
-	padapter->bCardDisableWOHSM = false;
-	/* padapter->bup = true; */
-
-	status = rtw_hal_init(padapter);
-	if (status == _FAIL)
-		goto netdev_open_error;
-
-	if (padapter->intf_start)
-		padapter->intf_start(padapter);
-
-	_set_timer(&padapter->mlmepriv.dynamic_chk_timer, 2000);
-
-	return _SUCCESS;
-
-netdev_open_error:
-
-	return _FAIL;
-}
-
-int rtw_ips_pwr_up(struct adapter *padapter)
-{
-	return ips_netdrv_open(padapter);
-}
-
-void rtw_ips_pwr_down(struct adapter *padapter)
-{
-	padapter->bCardDisableWOHSM = true;
-	padapter->net_closed = true;
-
-	rtw_ips_dev_unload(padapter);
-	padapter->bCardDisableWOHSM = false;
-}
-
-void rtw_ips_dev_unload(struct adapter *padapter)
-{
-	if (!padapter->bSurpriseRemoved)
-		rtw_hal_deinit(padapter);
-}
-
-static int pm_netdev_open(struct net_device *pnetdev, u8 bnormal)
-{
-	int status = -1;
-
-	struct adapter *padapter = rtw_netdev_priv(pnetdev);
-
-	if (bnormal) {
-		if (mutex_lock_interruptible(&(adapter_to_dvobj(padapter)->hw_init_mutex)) == 0) {
-			status = _netdev_open(pnetdev);
-			mutex_unlock(&(adapter_to_dvobj(padapter)->hw_init_mutex));
-		}
-	} else {
-		status =  (ips_netdrv_open(padapter) == _SUCCESS) ? (0) : (-1);
-	}
-
-	return status;
-}
-
-static int netdev_close(struct net_device *pnetdev)
-{
-	struct adapter *padapter = rtw_netdev_priv(pnetdev);
-	struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter);
-
-	if (pwrctl->bInternalAutoSuspend) {
-		/* rtw_pwr_wakeup(padapter); */
-		if (pwrctl->rf_pwrstate == rf_off)
-			pwrctl->ps_flag = true;
-	}
-	padapter->net_closed = true;
-	padapter->netif_up = false;
-
-	if (pwrctl->rf_pwrstate == rf_on) {
-		/* s1. */
-		if (pnetdev) {
-			if (!rtw_netif_queue_stopped(pnetdev))
-				rtw_netif_stop_queue(pnetdev);
-		}
-
-		/* s2. */
-		LeaveAllPowerSaveMode(padapter);
-		rtw_disassoc_cmd(padapter, 500, false);
-		/* s2-2.  indicate disconnect to os */
-		rtw_indicate_disconnect(padapter);
-		/* s2-3. */
-		rtw_free_assoc_resources(padapter, 1);
-		/* s2-4. */
-		rtw_free_network_queue(padapter, true);
-	}
-
-	rtw_scan_abort(padapter);
-
-	return 0;
-}
-
-void rtw_ndev_destructor(struct net_device *ndev)
-{
-	kfree(ndev->ieee80211_ptr);
-}
-
-void rtw_dev_unload(struct adapter *padapter)
-{
-	struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter);
-	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-	u8 cnt = 0;
-
-	if (padapter->bup) {
-		padapter->driver_stopped = true;
-		if (padapter->xmitpriv.ack_tx)
-			rtw_ack_tx_done(&padapter->xmitpriv, RTW_SCTX_DONE_DRV_STOP);
-
-		if (padapter->intf_stop)
-			padapter->intf_stop(padapter);
-
-		if (!pwrctl->bInternalAutoSuspend)
-			rtw_stop_drv_threads(padapter);
-
-		while (atomic_read(&pcmdpriv->cmdthd_running)) {
-			if (cnt > 5)
-				break;
-			cnt++;
-			msleep(10);
-		}
-
-		/* check the status of IPS */
-		if (rtw_hal_check_ips_status(padapter) || pwrctl->rf_pwrstate == rf_off) {
-			/* check HW status and SW state */
-			netdev_dbg(padapter->pnetdev,
-				   "%s: driver in IPS-FWLPS\n", __func__);
-			LeaveAllPowerSaveMode(padapter);
-		} else {
-			netdev_dbg(padapter->pnetdev,
-				   "%s: driver not in IPS\n", __func__);
-		}
-
-		if (!padapter->bSurpriseRemoved) {
-			hal_btcoex_IpsNotify(padapter, pwrctl->ips_mode_req);
-
-			/* amy modify 20120221 for power seq is different between driver open and ips */
-			rtw_hal_deinit(padapter);
-
-			padapter->bSurpriseRemoved = true;
-		}
-
-		padapter->bup = false;
-	}
-}
-
-static int rtw_suspend_free_assoc_resource(struct adapter *padapter)
-{
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	if (rtw_chk_roam_flags(padapter, RTW_ROAM_ON_RESUME)) {
-		if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) &&
-		    check_fwstate(pmlmepriv, _FW_LINKED)) {
-			rtw_set_to_roam(padapter, 1);
-		}
-	}
-
-	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) && check_fwstate(pmlmepriv, _FW_LINKED)) {
-		rtw_disassoc_cmd(padapter, 0, false);
-		/* s2-2.  indicate disconnect to os */
-		rtw_indicate_disconnect(padapter);
-	} else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		rtw_sta_flush(padapter);
-	}
-
-	/* s2-3. */
-	rtw_free_assoc_resources(padapter, 1);
-
-	/* s2-4. */
-	rtw_free_network_queue(padapter, true);
-
-	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
-		rtw_indicate_scan_done(padapter, 1);
-
-	if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) {
-		netdev_dbg(padapter->pnetdev, "%s: fw_under_linking\n",
-			   __func__);
-		rtw_indicate_disconnect(padapter);
-	}
-
-	return _SUCCESS;
-}
-
-static void rtw_suspend_normal(struct adapter *padapter)
-{
-	struct net_device *pnetdev = padapter->pnetdev;
-
-	if (pnetdev) {
-		netif_carrier_off(pnetdev);
-		rtw_netif_stop_queue(pnetdev);
-	}
-
-	rtw_suspend_free_assoc_resource(padapter);
-
-	if ((rtw_hal_check_ips_status(padapter)) || (adapter_to_pwrctl(padapter)->rf_pwrstate == rf_off))
-		netdev_dbg(padapter->pnetdev,
-			   "%s: ### ERROR #### driver in IPS ####ERROR###!!!\n",
-			   __func__);
-
-	rtw_dev_unload(padapter);
-
-	/* sdio_deinit(adapter_to_dvobj(padapter)); */
-	if (padapter->intf_deinit)
-		padapter->intf_deinit(adapter_to_dvobj(padapter));
-}
-
-void rtw_suspend_common(struct adapter *padapter)
-{
-	struct dvobj_priv *psdpriv = padapter->dvobj;
-	struct pwrctrl_priv *pwrpriv = dvobj_to_pwrctl(psdpriv);
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-	unsigned long start_time = jiffies;
-
-	netdev_dbg(padapter->pnetdev, " suspend start\n");
-
-	pwrpriv->bInSuspend = true;
-
-	while (pwrpriv->bips_processing)
-		msleep(1);
-
-	if ((!padapter->bup) || (padapter->driver_stopped) || (padapter->bSurpriseRemoved))
-		return;
-
-	rtw_ps_deny(padapter, PS_DENY_SUSPEND);
-
-	rtw_cancel_all_timer(padapter);
-
-	LeaveAllPowerSaveModeDirect(padapter);
-
-	rtw_stop_cmd_thread(padapter);
-
-	/*  wait for the latest FW to remove this condition. */
-	if (check_fwstate(pmlmepriv, WIFI_AP_STATE))
-		hal_btcoex_SuspendNotify(padapter, 0);
-	else if (check_fwstate(pmlmepriv, WIFI_STATION_STATE))
-		hal_btcoex_SuspendNotify(padapter, 1);
-
-	rtw_ps_deny_cancel(padapter, PS_DENY_SUSPEND);
-
-	rtw_suspend_normal(padapter);
-
-	netdev_dbg(padapter->pnetdev, "rtw suspend success in %d ms\n",
-		   jiffies_to_msecs(jiffies - start_time));
-}
-
-static int rtw_resume_process_normal(struct adapter *padapter)
-{
-	struct net_device *pnetdev;
-	struct pwrctrl_priv *pwrpriv;
-	struct mlme_priv *pmlmepriv;
-
-	int ret = _SUCCESS;
-
-	if (!padapter) {
-		ret = -1;
-		goto exit;
-	}
-
-	pnetdev = padapter->pnetdev;
-	pwrpriv = adapter_to_pwrctl(padapter);
-	pmlmepriv = &padapter->mlmepriv;
-	/*  interface init */
-	if (padapter->intf_init) {
-		ret = padapter->intf_init(adapter_to_dvobj(padapter));
-		if (ret)
-			goto exit;
-	}
-	rtw_sdio_disable_interrupt(padapter);
-	/* if (sdio_alloc_irq(adapter_to_dvobj(padapter)) != _SUCCESS) */
-	if ((padapter->intf_alloc_irq) && (padapter->intf_alloc_irq(adapter_to_dvobj(padapter)) != _SUCCESS)) {
-		ret = -1;
-		goto exit;
-	}
-
-	rtw_reset_drv_sw(padapter);
-	pwrpriv->bkeepfwalive = false;
-
-	if (pm_netdev_open(pnetdev, true) != 0) {
-		ret = -1;
-		goto exit;
-	}
-
-	netif_device_attach(pnetdev);
-	netif_carrier_on(pnetdev);
-
-	if (padapter->pid[1] != 0)
-		rtw_signal_process(padapter->pid[1], SIGUSR2);
-
-	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
-		if (rtw_chk_roam_flags(padapter, RTW_ROAM_ON_RESUME))
-			rtw_roaming(padapter, NULL);
-	} else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-		rtw_ap_restore_network(padapter);
-	}
-
-exit:
-	return ret;
-}
-
-int rtw_resume_common(struct adapter *padapter)
-{
-	int ret = 0;
-	unsigned long start_time = jiffies;
-	struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
-
-	netdev_dbg(padapter->pnetdev, "resume start\n");
-
-	rtw_resume_process_normal(padapter);
-
-	hal_btcoex_SuspendNotify(padapter, 0);
-
-	if (pwrpriv)
-		pwrpriv->bInSuspend = false;
-
-	netdev_dbg(padapter->pnetdev, "%s:%d in %d ms\n", __func__, ret,
-		   jiffies_to_msecs(jiffies - start_time));
-
-	return ret;
-}
diff --git a/drivers/staging/rtl8723bs/os_dep/osdep_service.c b/drivers/staging/rtl8723bs/os_dep/osdep_service.c
deleted file mode 100644
index 4cfdf7c62344..000000000000
--- a/drivers/staging/rtl8723bs/os_dep/osdep_service.c
+++ /dev/null
@@ -1,201 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <drv_types.h>
-
-/* Translate the OS dependent error_code to RTW_STATUS_CODE */
-inline int RTW_STATUS_CODE(int error_code)
-{
-	if (error_code >= 0)
-		return _SUCCESS;
-	return _FAIL;
-}
-
-inline int _rtw_netif_rx(struct net_device *ndev, struct sk_buff *skb)
-{
-	skb->dev = ndev;
-	return netif_rx(skb);
-}
-
-struct net_device *rtw_alloc_etherdev_with_old_priv(int sizeof_priv, void *old_priv)
-{
-	struct net_device *pnetdev;
-	struct rtw_netdev_priv_indicator *pnpi;
-
-	pnetdev = alloc_etherdev_mq(sizeof(struct rtw_netdev_priv_indicator), 4);
-	if (!pnetdev)
-		goto RETURN;
-
-	pnpi = netdev_priv(pnetdev);
-	pnpi->priv = old_priv;
-	pnpi->sizeof_priv = sizeof_priv;
-
-RETURN:
-	return pnetdev;
-}
-
-struct net_device *rtw_alloc_etherdev(int sizeof_priv)
-{
-	struct net_device *pnetdev;
-	struct rtw_netdev_priv_indicator *pnpi;
-
-	pnetdev = alloc_etherdev_mq(sizeof(struct rtw_netdev_priv_indicator), 4);
-	if (!pnetdev)
-		goto RETURN;
-
-	pnpi = netdev_priv(pnetdev);
-
-	pnpi->priv = vzalloc(sizeof_priv);
-	if (!pnpi->priv) {
-		free_netdev(pnetdev);
-		pnetdev = NULL;
-		goto RETURN;
-	}
-
-	pnpi->sizeof_priv = sizeof_priv;
-RETURN:
-	return pnetdev;
-}
-
-void rtw_free_netdev(struct net_device *netdev)
-{
-	struct rtw_netdev_priv_indicator *pnpi;
-
-	if (!netdev)
-		goto RETURN;
-
-	pnpi = netdev_priv(netdev);
-
-	if (!pnpi->priv)
-		goto RETURN;
-
-	vfree(pnpi->priv);
-	free_netdev(netdev);
-
-RETURN:
-	return;
-}
-
-void rtw_buf_free(u8 **buf, u32 *buf_len)
-{
-	if (!buf || !buf_len)
-		return;
-
-	if (*buf) {
-		*buf_len = 0;
-		kfree(*buf);
-		*buf = NULL;
-	}
-}
-
-void rtw_buf_update(u8 **buf, u32 *buf_len, u8 *src, u32 src_len)
-{
-	u32 ori_len = 0, dup_len = 0;
-	u8 *ori = NULL;
-	u8 *dup = NULL;
-
-	if (!buf || !buf_len)
-		return;
-
-	if (!src || !src_len)
-		goto keep_ori;
-
-	/* duplicate src */
-	dup = kmemdup(src, src_len, GFP_ATOMIC);
-	if (dup)
-		dup_len = src_len;
-
-keep_ori:
-	ori = *buf;
-	ori_len = *buf_len;
-
-	/* replace buf with dup */
-	*buf_len = 0;
-	*buf = dup;
-	*buf_len = dup_len;
-
-	/* free ori */
-	if (ori && ori_len > 0)
-		kfree(ori);
-}
-
-/**
- * rtw_cbuf_full - test if cbuf is full
- * @cbuf: pointer of struct rtw_cbuf
- *
- * Returns: true if cbuf is full
- */
-inline bool rtw_cbuf_full(struct rtw_cbuf *cbuf)
-{
-	return (cbuf->write == cbuf->read - 1) ? true : false;
-}
-
-/**
- * rtw_cbuf_empty - test if cbuf is empty
- * @cbuf: pointer of struct rtw_cbuf
- *
- * Returns: true if cbuf is empty
- */
-inline bool rtw_cbuf_empty(struct rtw_cbuf *cbuf)
-{
-	return (cbuf->write == cbuf->read) ? true : false;
-}
-
-/**
- * rtw_cbuf_push - push a pointer into cbuf
- * @cbuf: pointer of struct rtw_cbuf
- * @buf: pointer to push in
- *
- * Lock free operation, be careful of the use scheme
- * Returns: true push success
- */
-bool rtw_cbuf_push(struct rtw_cbuf *cbuf, void *buf)
-{
-	if (rtw_cbuf_full(cbuf))
-		return _FAIL;
-
-	cbuf->bufs[cbuf->write] = buf;
-	cbuf->write = (cbuf->write + 1) % cbuf->size;
-
-	return _SUCCESS;
-}
-
-/**
- * rtw_cbuf_pop - pop a pointer from cbuf
- * @cbuf: pointer of struct rtw_cbuf
- *
- * Lock free operation, be careful of the use scheme
- * Returns: pointer popped out
- */
-void *rtw_cbuf_pop(struct rtw_cbuf *cbuf)
-{
-	void *buf;
-
-	if (rtw_cbuf_empty(cbuf))
-		return NULL;
-
-	buf = cbuf->bufs[cbuf->read];
-	cbuf->read = (cbuf->read + 1) % cbuf->size;
-
-	return buf;
-}
-
-/**
- * rtw_cbuf_alloc - allocate a rtw_cbuf with given size and do initialization
- * @size: size of pointer
- *
- * Returns: pointer of srtuct rtw_cbuf, NULL for allocation failure
- */
-struct rtw_cbuf *rtw_cbuf_alloc(u32 size)
-{
-	struct rtw_cbuf *cbuf;
-
-	cbuf = kzalloc_flex(*cbuf, bufs, size);
-	if (cbuf)
-		cbuf->size = size;
-
-	return cbuf;
-}
diff --git a/drivers/staging/rtl8723bs/os_dep/sdio_intf.c b/drivers/staging/rtl8723bs/os_dep/sdio_intf.c
deleted file mode 100644
index c61d3d12df7f..000000000000
--- a/drivers/staging/rtl8723bs/os_dep/sdio_intf.c
+++ /dev/null
@@ -1,465 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <drv_types.h>
-#include <hal_btcoex.h>
-#include <hal_data.h>
-#include <linux/jiffies.h>
-
-#ifndef dev_to_sdio_func
-#define dev_to_sdio_func(d)     container_of(d, struct sdio_func, dev)
-#endif
-
-static const struct sdio_device_id sdio_ids[] = {
-	{ SDIO_DEVICE(0x024c, 0x0523), },
-	{ SDIO_DEVICE(0x024c, 0x0525), },
-	{ SDIO_DEVICE(0x024c, 0x0623), },
-	{ SDIO_DEVICE(0x024c, 0x0626), },
-	{ SDIO_DEVICE(0x024c, 0x0627), },
-	{ SDIO_DEVICE(0x024c, 0xb723), },
-	{ /* end: all zeroes */				},
-};
-MODULE_DEVICE_TABLE(sdio, sdio_ids);
-
-static int rtw_drv_init(struct sdio_func *func, const struct sdio_device_id *id);
-static void rtw_dev_remove(struct sdio_func *func);
-static int rtw_sdio_resume(struct device *dev);
-static int rtw_sdio_suspend(struct device *dev);
-
-static const struct dev_pm_ops rtw_sdio_pm_ops = {
-	.suspend	= rtw_sdio_suspend,
-	.resume	= rtw_sdio_resume,
-};
-
-static struct sdio_driver rtl8723bs_sdio_driver = {
-	.probe = rtw_drv_init,
-	.remove = rtw_dev_remove,
-	.name = "rtl8723bs",
-	.id_table = sdio_ids,
-	.drv = {
-		.pm = &rtw_sdio_pm_ops,
-	}
-};
-
-static void sd_sync_int_hdl(struct sdio_func *func)
-{
-	struct dvobj_priv *psdpriv;
-
-
-	psdpriv = sdio_get_drvdata(func);
-
-	if (!psdpriv->if1)
-		return;
-
-	rtw_sdio_set_irq_thd(psdpriv, current);
-	sd_int_hdl(psdpriv->if1);
-	rtw_sdio_set_irq_thd(psdpriv, NULL);
-}
-
-static int sdio_alloc_irq(struct dvobj_priv *dvobj)
-{
-	struct sdio_data *psdio_data;
-	struct sdio_func *func;
-	int err;
-
-	psdio_data = &dvobj->intf_data;
-	func = psdio_data->func;
-
-	sdio_claim_host(func);
-
-	err = sdio_claim_irq(func, &sd_sync_int_hdl);
-	if (err)
-		netdev_crit(dvobj->if1->pnetdev, "%s: sdio_claim_irq FAIL(%d)!\n", __func__, err);
-	else
-		dvobj->irq_alloc = 1;
-
-	sdio_release_host(func);
-
-	return err ? _FAIL : _SUCCESS;
-}
-
-static void sdio_free_irq(struct dvobj_priv *dvobj)
-{
-	struct sdio_data *psdio_data;
-	struct sdio_func *func;
-	int err;
-
-	if (dvobj->irq_alloc) {
-		psdio_data = &dvobj->intf_data;
-		func = psdio_data->func;
-
-		if (func) {
-			sdio_claim_host(func);
-			err = sdio_release_irq(func);
-			if (err) {
-				netdev_err(dvobj->if1->pnetdev,
-					   "%s: sdio_release_irq FAIL(%d)!\n",
-					   __func__, err);
-			}
-			sdio_release_host(func);
-		}
-		dvobj->irq_alloc = 0;
-	}
-}
-
-static u32 sdio_init(struct dvobj_priv *dvobj)
-{
-	struct sdio_data *psdio_data;
-	struct sdio_func *func;
-	int err;
-
-	psdio_data = &dvobj->intf_data;
-	func = psdio_data->func;
-
-	/* 3 1. init SDIO bus */
-	sdio_claim_host(func);
-
-	err = sdio_enable_func(func);
-	if (err)
-		goto release;
-
-	err = sdio_set_block_size(func, 512);
-	if (err)
-		goto release;
-
-	psdio_data->block_transfer_len = 512;
-	psdio_data->tx_block_mode = 1;
-	psdio_data->rx_block_mode = 1;
-
-release:
-	sdio_release_host(func);
-
-	return err;
-}
-
-static void sdio_deinit(struct dvobj_priv *dvobj)
-{
-	struct sdio_func *func;
-
-	func = dvobj->intf_data.func;
-
-	if (func) {
-		sdio_claim_host(func);
-		sdio_disable_func(func);
-
-		if (dvobj->irq_alloc)
-			sdio_release_irq(func);
-
-		sdio_release_host(func);
-	}
-}
-static struct dvobj_priv *sdio_dvobj_init(struct sdio_func *func)
-{
-	struct dvobj_priv *dvobj = NULL;
-	struct sdio_data *psdio;
-	int ret;
-
-	dvobj = devobj_init();
-	if (!dvobj)
-		return NULL;
-
-	sdio_set_drvdata(func, dvobj);
-
-	psdio = &dvobj->intf_data;
-	psdio->func = func;
-
-	ret = sdio_init(dvobj);
-	if (ret)
-		goto free_dvobj;
-
-	rtw_reset_continual_io_error(dvobj);
-
-	return dvobj;
-
-free_dvobj:
-	sdio_set_drvdata(func, NULL);
-	devobj_deinit(dvobj);
-
-	return NULL;
-}
-
-static void sdio_dvobj_deinit(struct sdio_func *func)
-{
-	struct dvobj_priv *dvobj = sdio_get_drvdata(func);
-
-	sdio_set_drvdata(func, NULL);
-	if (dvobj) {
-		sdio_deinit(dvobj);
-		devobj_deinit(dvobj);
-	}
-}
-
-void rtw_set_hal_ops(struct adapter *padapter)
-{
-	/* alloc memory for HAL DATA */
-	rtw_hal_data_init(padapter);
-}
-
-static void sd_intf_start(struct adapter *padapter)
-{
-	if (!padapter)
-		return;
-
-	rtw_sdio_enable_interrupt(padapter);
-}
-
-static void sd_intf_stop(struct adapter *padapter)
-{
-	if (!padapter)
-		return;
-
-	rtw_sdio_disable_interrupt(padapter);
-}
-
-
-static struct adapter *rtw_sdio_if1_init(struct dvobj_priv *dvobj)
-{
-	int status = _FAIL;
-	struct net_device *pnetdev;
-	struct adapter *padapter = NULL;
-	struct sdio_data *psdio = &dvobj->intf_data;
-
-	padapter = vzalloc(sizeof(*padapter));
-	if (!padapter)
-		goto exit;
-
-	padapter->dvobj = dvobj;
-	dvobj->if1 = padapter;
-
-	padapter->driver_stopped = true;
-
-	dvobj->padapters = padapter;
-	padapter->iface_id = 0;
-
-	/* 3 1. init network device data */
-	pnetdev = rtw_init_netdev(padapter);
-	if (!pnetdev)
-		goto free_adapter;
-
-	SET_NETDEV_DEV(pnetdev, dvobj_to_dev(dvobj));
-
-	padapter = rtw_netdev_priv(pnetdev);
-
-	/* 3 3. init driver special setting, interface, OS and hardware relative */
-
-	/* 4 3.1 set hardware operation functions */
-	rtw_set_hal_ops(padapter);
-
-
-	/* 3 5. initialize Chip version */
-	padapter->intf_start = &sd_intf_start;
-	padapter->intf_stop = &sd_intf_stop;
-
-	padapter->intf_init = &sdio_init;
-	padapter->intf_deinit = &sdio_deinit;
-	padapter->intf_alloc_irq = &sdio_alloc_irq;
-	padapter->intf_free_irq = &sdio_free_irq;
-
-	if (rtw_init_io_priv(padapter, sdio_set_intf_ops) == _FAIL)
-		goto free_hal_data;
-
-	rtl8723b_read_chip_version(padapter);
-
-	rtl8723bs_interface_configure(padapter);
-
-	hal_btcoex_Initialize((void *)padapter);
-
-	/* 3 6. read efuse/eeprom data */
-	rtw_read_adapter_info(padapter);
-
-	/* 3 7. init driver common data */
-	if (rtw_init_drv_sw(padapter) == _FAIL)
-		goto free_hal_data;
-
-	rtw_wdev_alloc(padapter, dvobj_to_dev(dvobj));
-
-	/* 3 8. get WLan MAC address */
-	/*  set mac addr */
-	rtw_macaddr_cfg(&psdio->func->dev, padapter->eeprompriv.mac_addr);
-
-	rtw_sdio_disable_interrupt(padapter);
-
-	status = _SUCCESS;
-
-free_hal_data:
-	if (status != _SUCCESS)
-		rtw_hal_data_deinit(padapter);
-
-	if (status != _SUCCESS) {
-		rtw_wdev_unregister(padapter->rtw_wdev);
-		rtw_wdev_free(padapter->rtw_wdev);
-	}
-
-free_adapter:
-	if (status != _SUCCESS) {
-		if (pnetdev)
-			rtw_free_netdev(pnetdev);
-		else
-			vfree((u8 *)padapter);
-		padapter = NULL;
-	}
-exit:
-	return padapter;
-}
-
-static void rtw_sdio_if1_deinit(struct adapter *if1)
-{
-	struct net_device *pnetdev = if1->pnetdev;
-	struct mlme_priv *pmlmepriv = &if1->mlmepriv;
-
-	if (check_fwstate(pmlmepriv, _FW_LINKED))
-		rtw_disassoc_cmd(if1, 0, false);
-
-	free_mlme_ap_info(if1);
-
-	rtw_cancel_all_timer(if1);
-
-	rtw_dev_unload(if1);
-
-	if (if1->rtw_wdev)
-		rtw_wdev_free(if1->rtw_wdev);
-
-	rtw_free_drv_sw(if1);
-
-	if (pnetdev)
-		rtw_free_netdev(pnetdev);
-}
-
-/*
- * drv_init() - a device potentially for us
- *
- * notes: drv_init() is called when the bus driver has located a card for us to support.
- *        We accept the new device by returning 0.
- */
-static int rtw_drv_init(struct sdio_func *func,
-			const struct sdio_device_id *id)
-{
-	int status = _FAIL;
-	struct adapter *if1 = NULL;
-	struct dvobj_priv *dvobj;
-
-	dvobj = sdio_dvobj_init(func);
-	if (!dvobj)
-		goto exit;
-
-	if1 = rtw_sdio_if1_init(dvobj);
-	if (!if1)
-		goto free_dvobj;
-
-	/* dev_alloc_name && register_netdev */
-	status = rtw_drv_register_netdev(if1);
-	if (status != _SUCCESS)
-		goto free_if1;
-
-	status = sdio_alloc_irq(dvobj);
-	if (status != _SUCCESS)
-		goto free_netdev;
-
-	status = _SUCCESS;
-
-free_netdev:
-	if (status != _SUCCESS)
-		rtw_unregister_netdevs(dvobj);
-free_if1:
-	if (status != _SUCCESS && if1)
-		rtw_sdio_if1_deinit(if1);
-
-free_dvobj:
-	if (status != _SUCCESS)
-		sdio_dvobj_deinit(func);
-exit:
-	return status == _SUCCESS ? 0 : -ENODEV;
-}
-
-static void rtw_dev_remove(struct sdio_func *func)
-{
-	struct dvobj_priv *dvobj = sdio_get_drvdata(func);
-	struct adapter *padapter = dvobj->if1;
-
-	dvobj->processing_dev_remove = true;
-
-	rtw_unregister_netdevs(dvobj);
-
-	if (!padapter->bSurpriseRemoved) {
-		int err;
-
-		/* test surprise remove */
-		sdio_claim_host(func);
-		sdio_readb(func, 0, &err);
-		sdio_release_host(func);
-		if (err == -ENOMEDIUM)
-			padapter->bSurpriseRemoved = true;
-	}
-
-	rtw_ps_deny(padapter, PS_DENY_DRV_REMOVE);
-
-	rtw_pm_set_ips(padapter, IPS_NONE);
-	rtw_pm_set_lps(padapter, PS_MODE_ACTIVE);
-
-	LeaveAllPowerSaveMode(padapter);
-
-	rtw_btcoex_halt_notify(padapter);
-
-	rtw_sdio_if1_deinit(padapter);
-
-	sdio_dvobj_deinit(func);
-}
-
-static int rtw_sdio_suspend(struct device *dev)
-{
-	struct sdio_func *func = dev_to_sdio_func(dev);
-	struct dvobj_priv *psdpriv = sdio_get_drvdata(func);
-	struct pwrctrl_priv *pwrpriv = dvobj_to_pwrctl(psdpriv);
-	struct adapter *padapter = psdpriv->if1;
-
-	if (padapter->driver_stopped)
-		return 0;
-
-	if (pwrpriv->bInSuspend)
-		return 0;
-
-	rtw_suspend_common(padapter);
-
-	return 0;
-}
-
-static int rtw_resume_process(struct adapter *padapter)
-{
-	struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
-
-	if (!pwrpriv->bInSuspend)
-		return -1;
-
-	return rtw_resume_common(padapter);
-}
-
-static int rtw_sdio_resume(struct device *dev)
-{
-	struct sdio_func *func = dev_to_sdio_func(dev);
-	struct dvobj_priv *psdpriv = sdio_get_drvdata(func);
-	struct adapter *padapter = psdpriv->if1;
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	int ret = 0;
-
-	ret = rtw_resume_process(padapter);
-
-	pmlmeext->last_scan_time = jiffies;
-	return ret;
-}
-
-static int __init rtw_drv_entry(void)
-{
-	return sdio_register_driver(&rtl8723bs_sdio_driver);
-}
-module_init(rtw_drv_entry);
-
-static void __exit rtw_drv_halt(void)
-{
-	sdio_unregister_driver(&rtl8723bs_sdio_driver);
-}
-module_exit(rtw_drv_halt);
-
-MODULE_DESCRIPTION("Realtek RTL8723BS SDIO WiFi driver");
diff --git a/drivers/staging/rtl8723bs/os_dep/sdio_ops_linux.c b/drivers/staging/rtl8723bs/os_dep/sdio_ops_linux.c
deleted file mode 100644
index e9a2f3f7ec74..000000000000
--- a/drivers/staging/rtl8723bs/os_dep/sdio_ops_linux.c
+++ /dev/null
@@ -1,495 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- *******************************************************************************/
-
-#include <drv_types.h>
-
-static bool rtw_sdio_claim_host_needed(struct sdio_func *func)
-{
-	struct dvobj_priv *dvobj = sdio_get_drvdata(func);
-	struct sdio_data *sdio_data = &dvobj->intf_data;
-
-	if (sdio_data->sys_sdio_irq_thd && sdio_data->sys_sdio_irq_thd == current)
-		return false;
-	return true;
-}
-
-inline void rtw_sdio_set_irq_thd(struct dvobj_priv *dvobj, void *thd_hdl)
-{
-	struct sdio_data *sdio_data = &dvobj->intf_data;
-
-	sdio_data->sys_sdio_irq_thd = thd_hdl;
-}
-
-/*
- * Return:
- *0		Success
- *others	Fail
- */
-s32 _sd_cmd52_read(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pdata)
-{
-	struct adapter *padapter;
-	struct dvobj_priv *psdiodev;
-	struct sdio_data *psdio;
-
-	int err = 0, i;
-	struct sdio_func *func;
-
-	padapter = pintfhdl->padapter;
-	psdiodev = pintfhdl->pintf_dev;
-	psdio = &psdiodev->intf_data;
-
-	if (padapter->bSurpriseRemoved)
-		return err;
-
-	func = psdio->func;
-
-	for (i = 0; i < cnt; i++) {
-		pdata[i] = sdio_readb(func, addr + i, &err);
-		if (err)
-			break;
-	}
-	return err;
-}
-
-/*
- * Return:
- *0		Success
- *others	Fail
- */
-s32 sd_cmd52_read(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pdata)
-{
-	struct adapter *padapter;
-	struct dvobj_priv *psdiodev;
-	struct sdio_data *psdio;
-
-	int err = 0;
-	struct sdio_func *func;
-	bool claim_needed;
-
-	padapter = pintfhdl->padapter;
-	psdiodev = pintfhdl->pintf_dev;
-	psdio = &psdiodev->intf_data;
-
-	if (padapter->bSurpriseRemoved)
-		return err;
-
-	func = psdio->func;
-	claim_needed = rtw_sdio_claim_host_needed(func);
-
-	if (claim_needed)
-		sdio_claim_host(func);
-	err = _sd_cmd52_read(pintfhdl, addr, cnt, pdata);
-	if (claim_needed)
-		sdio_release_host(func);
-	return err;
-}
-
-/*
- * Return:
- *0		Success
- *others	Fail
- */
-s32 _sd_cmd52_write(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pdata)
-{
-	struct adapter *padapter;
-	struct dvobj_priv *psdiodev;
-	struct sdio_data *psdio;
-
-	int err = 0, i;
-	struct sdio_func *func;
-
-	padapter = pintfhdl->padapter;
-	psdiodev = pintfhdl->pintf_dev;
-	psdio = &psdiodev->intf_data;
-
-	if (padapter->bSurpriseRemoved)
-		return err;
-
-	func = psdio->func;
-
-	for (i = 0; i < cnt; i++) {
-		sdio_writeb(func, pdata[i], addr + i, &err);
-		if (err)
-			break;
-	}
-	return err;
-}
-
-/*
- * Return:
- *0		Success
- *others	Fail
- */
-s32 sd_cmd52_write(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pdata)
-{
-	struct adapter *padapter;
-	struct dvobj_priv *psdiodev;
-	struct sdio_data *psdio;
-
-	int err = 0;
-	struct sdio_func *func;
-	bool claim_needed;
-
-	padapter = pintfhdl->padapter;
-	psdiodev = pintfhdl->pintf_dev;
-	psdio = &psdiodev->intf_data;
-
-	if (padapter->bSurpriseRemoved)
-		return err;
-
-	func = psdio->func;
-	claim_needed = rtw_sdio_claim_host_needed(func);
-
-	if (claim_needed)
-		sdio_claim_host(func);
-	err = _sd_cmd52_write(pintfhdl, addr, cnt, pdata);
-	if (claim_needed)
-		sdio_release_host(func);
-	return err;
-}
-
-u8 sd_read8(struct intf_hdl *pintfhdl, u32 addr, s32 *err)
-{
-	struct adapter *padapter;
-	struct dvobj_priv *psdiodev;
-	struct sdio_data *psdio;
-
-	u8 v = 0;
-	struct sdio_func *func;
-	bool claim_needed;
-
-	padapter = pintfhdl->padapter;
-	psdiodev = pintfhdl->pintf_dev;
-	psdio = &psdiodev->intf_data;
-
-	if (padapter->bSurpriseRemoved)
-		return v;
-
-	func = psdio->func;
-	claim_needed = rtw_sdio_claim_host_needed(func);
-
-	if (claim_needed)
-		sdio_claim_host(func);
-	v = sdio_readb(func, addr, err);
-	if (claim_needed)
-		sdio_release_host(func);
-	return v;
-}
-
-u32 sd_read32(struct intf_hdl *pintfhdl, u32 addr, s32 *err)
-{
-	struct adapter *padapter;
-	struct dvobj_priv *psdiodev;
-	struct sdio_data *psdio;
-	u32 v = 0;
-	struct sdio_func *func;
-	bool claim_needed;
-
-	padapter = pintfhdl->padapter;
-	psdiodev = pintfhdl->pintf_dev;
-	psdio = &psdiodev->intf_data;
-
-	if (padapter->bSurpriseRemoved)
-		return v;
-
-	func = psdio->func;
-	claim_needed = rtw_sdio_claim_host_needed(func);
-
-	if (claim_needed)
-		sdio_claim_host(func);
-	v = sdio_readl(func, addr, err);
-	if (claim_needed)
-		sdio_release_host(func);
-
-	if (err && *err) {
-		int i;
-
-		*err = 0;
-		for (i = 0; i < SD_IO_TRY_CNT; i++) {
-			if (claim_needed)
-				sdio_claim_host(func);
-			v = sdio_readl(func, addr, err);
-			if (claim_needed)
-				sdio_release_host(func);
-
-			if (*err == 0) {
-				rtw_reset_continual_io_error(psdiodev);
-				break;
-			}
-
-			if ((-ESHUTDOWN == *err) || (-ENODEV == *err))
-				padapter->bSurpriseRemoved = true;
-
-			if (rtw_inc_and_chk_continual_io_error(psdiodev)) {
-				padapter->bSurpriseRemoved = true;
-				break;
-			}
-		}
-	}
-	return  v;
-}
-
-void sd_write8(struct intf_hdl *pintfhdl, u32 addr, u8 v, s32 *err)
-{
-	struct adapter *padapter;
-	struct dvobj_priv *psdiodev;
-	struct sdio_data *psdio;
-	struct sdio_func *func;
-	bool claim_needed;
-
-	padapter = pintfhdl->padapter;
-	psdiodev = pintfhdl->pintf_dev;
-	psdio = &psdiodev->intf_data;
-
-	if (padapter->bSurpriseRemoved)
-		return;
-
-	func = psdio->func;
-	claim_needed = rtw_sdio_claim_host_needed(func);
-
-	if (claim_needed)
-		sdio_claim_host(func);
-	sdio_writeb(func, v, addr, err);
-	if (claim_needed)
-		sdio_release_host(func);
-}
-
-void sd_write32(struct intf_hdl *pintfhdl, u32 addr, u32 v, s32 *err)
-{
-	struct adapter *padapter;
-	struct dvobj_priv *psdiodev;
-	struct sdio_data *psdio;
-	struct sdio_func *func;
-	bool claim_needed;
-
-	padapter = pintfhdl->padapter;
-	psdiodev = pintfhdl->pintf_dev;
-	psdio = &psdiodev->intf_data;
-
-	if (padapter->bSurpriseRemoved)
-		return;
-
-	func = psdio->func;
-	claim_needed = rtw_sdio_claim_host_needed(func);
-
-	if (claim_needed)
-		sdio_claim_host(func);
-	sdio_writel(func, v, addr, err);
-	if (claim_needed)
-		sdio_release_host(func);
-
-	if (err && *err) {
-		int i;
-
-		*err = 0;
-		for (i = 0; i < SD_IO_TRY_CNT; i++) {
-			if (claim_needed)
-				sdio_claim_host(func);
-			sdio_writel(func, v, addr, err);
-			if (claim_needed)
-				sdio_release_host(func);
-			if (*err == 0) {
-				rtw_reset_continual_io_error(psdiodev);
-				break;
-			}
-
-			if ((-ESHUTDOWN == *err) || (-ENODEV == *err))
-				padapter->bSurpriseRemoved = true;
-
-			if (rtw_inc_and_chk_continual_io_error(psdiodev)) {
-				padapter->bSurpriseRemoved = true;
-				break;
-			}
-		}
-	}
-}
-
-/*
- * Use CMD53 to read data from SDIO device.
- * This function MUST be called after sdio_claim_host() or
- * in SDIO ISR(host had been claimed).
- *
- * Parameters:
- *psdio	pointer of SDIO_DATA
- *addr	address to read
- *cnt		amount to read
- *pdata	pointer to put data, this should be a "DMA:able scratch buffer"!
- *
- * Return:
- *0		Success
- *others	Fail
- */
-s32 _sd_read(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, void *pdata)
-{
-	struct adapter *padapter;
-	struct dvobj_priv *psdiodev;
-	struct sdio_data *psdio;
-
-	int err = -EPERM;
-	struct sdio_func *func;
-
-	padapter = pintfhdl->padapter;
-	psdiodev = pintfhdl->pintf_dev;
-	psdio = &psdiodev->intf_data;
-
-	if (padapter->bSurpriseRemoved)
-		return err;
-
-	func = psdio->func;
-
-	if (unlikely((cnt == 1) || (cnt == 2))) {
-		int i;
-		u8 *pbuf = pdata;
-
-		for (i = 0; i < cnt; i++) {
-			*(pbuf + i) = sdio_readb(func, addr + i, &err);
-
-			if (err)
-				break;
-		}
-		return err;
-	}
-
-	err = sdio_memcpy_fromio(func, pdata, addr, cnt);
-
-	return err;
-}
-
-/*
- * Use CMD53 to read data from SDIO device.
- *
- * Parameters:
- *psdio	pointer of SDIO_DATA
- *addr	address to read
- *cnt		amount to read
- *pdata	pointer to put data, this should be a "DMA:able scratch buffer"!
- *
- * Return:
- *0		Success
- *others	Fail
- */
-s32 sd_read(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, void *pdata)
-{
-	struct adapter *padapter;
-	struct dvobj_priv *psdiodev;
-	struct sdio_data *psdio;
-
-	struct sdio_func *func;
-	bool claim_needed;
-	s32 err = -EPERM;
-
-	padapter = pintfhdl->padapter;
-	psdiodev = pintfhdl->pintf_dev;
-	psdio = &psdiodev->intf_data;
-
-	if (padapter->bSurpriseRemoved)
-		return err;
-
-	func = psdio->func;
-	claim_needed = rtw_sdio_claim_host_needed(func);
-
-	if (claim_needed)
-		sdio_claim_host(func);
-	err = _sd_read(pintfhdl, addr, cnt, pdata);
-	if (claim_needed)
-		sdio_release_host(func);
-	return err;
-}
-
-/*
- * Use CMD53 to write data to SDIO device.
- * This function MUST be called after sdio_claim_host() or
- * in SDIO ISR(host had been claimed).
- *
- * Parameters:
- *psdio	pointer of SDIO_DATA
- *addr	address to write
- *cnt		amount to write
- *pdata	data pointer, this should be a "DMA:able scratch buffer"!
- *
- * Return:
- *0		Success
- *others	Fail
- */
-s32 _sd_write(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, void *pdata)
-{
-	struct adapter *padapter;
-	struct dvobj_priv *psdiodev;
-	struct sdio_data *psdio;
-
-	struct sdio_func *func;
-	u32 size;
-	s32 err =  -EPERM;
-
-	padapter = pintfhdl->padapter;
-	psdiodev = pintfhdl->pintf_dev;
-	psdio = &psdiodev->intf_data;
-
-	if (padapter->bSurpriseRemoved)
-		return err;
-
-	func = psdio->func;
-/*	size = sdio_align_size(func, cnt); */
-
-	if (unlikely((cnt == 1) || (cnt == 2))) {
-		int i;
-		u8 *pbuf = pdata;
-
-		for (i = 0; i < cnt; i++) {
-			sdio_writeb(func, *(pbuf + i), addr + i, &err);
-			if (err)
-				break;
-		}
-
-		return err;
-	}
-
-	size = cnt;
-	err = sdio_memcpy_toio(func, addr, pdata, size);
-
-	return err;
-}
-
-/*
- * Use CMD53 to write data to SDIO device.
- *
- * Parameters:
- *  psdio	pointer of SDIO_DATA
- *  addr	address to write
- *  cnt		amount to write
- *  pdata	data pointer, this should be a "DMA:able scratch buffer"!
- *
- * Return:
- *  0		Success
- *  others	Fail
- */
-s32 sd_write(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, void *pdata)
-{
-	struct adapter *padapter;
-	struct dvobj_priv *psdiodev;
-	struct sdio_data *psdio;
-	struct sdio_func *func;
-	bool claim_needed;
-	s32 err =  -EPERM;
-
-	padapter = pintfhdl->padapter;
-	psdiodev = pintfhdl->pintf_dev;
-	psdio = &psdiodev->intf_data;
-
-	if (padapter->bSurpriseRemoved)
-		return err;
-
-	func = psdio->func;
-	claim_needed = rtw_sdio_claim_host_needed(func);
-
-	if (claim_needed)
-		sdio_claim_host(func);
-	err = _sd_write(pintfhdl, addr, cnt, pdata);
-	if (claim_needed)
-		sdio_release_host(func);
-	return err;
-}
diff --git a/drivers/staging/rtl8723bs/os_dep/wifi_regd.c b/drivers/staging/rtl8723bs/os_dep/wifi_regd.c
deleted file mode 100644
index d201a18d78b0..000000000000
--- a/drivers/staging/rtl8723bs/os_dep/wifi_regd.c
+++ /dev/null
@@ -1,129 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2009-2010  Realtek Corporation.
- *
- *****************************************************************************/
-
-#include <drv_types.h>
-
-#include <rtw_wifi_regd.h>
-
-/*
- * REG_RULE(freq start, freq end, bandwidth, max gain, eirp, reg_flags)
- */
-
-/*
- * Only these channels all allow active
- * scan on all world regulatory domains
- */
-
-/* 2G chan 01 - chan 11 */
-#define RTW_2GHZ_CH01_11	\
-	REG_RULE(2412 - 10, 2462 + 10, 40, 0, 20, 0)
-
-/*
- * We enable active scan on these a case
- * by case basis by regulatory domain
- */
-
-/* 2G chan 12 - chan 13, PASSIV SCAN */
-#define RTW_2GHZ_CH12_13	\
-	REG_RULE(2467 - 10, 2472 + 10, 40, 0, 20,	\
-	NL80211_RRF_PASSIVE_SCAN)
-
-static const struct ieee80211_regdomain rtw_regdom_rd = {
-	.n_reg_rules = 2,
-	.alpha2 = "99",
-	.reg_rules = {
-		RTW_2GHZ_CH01_11,
-		RTW_2GHZ_CH12_13,
-	}
-};
-
-static void _rtw_reg_apply_flags(struct wiphy *wiphy)
-{
-	struct adapter *padapter = wiphy_to_adapter(wiphy);
-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-	struct rt_channel_info *channel_set = pmlmeext->channel_set;
-	u8 max_chan_nums = pmlmeext->max_chan_nums;
-
-	struct ieee80211_supported_band *sband;
-	struct ieee80211_channel *ch;
-	unsigned int i, j;
-	u16 channel;
-	u32 freq;
-
-	/* all channels disable */
-	for (i = 0; i < NUM_NL80211_BANDS; i++) {
-		sband = wiphy->bands[i];
-
-		if (sband) {
-			for (j = 0; j < sband->n_channels; j++) {
-				ch = &sband->channels[j];
-
-				if (ch)
-					ch->flags = IEEE80211_CHAN_DISABLED;
-			}
-		}
-	}
-
-	/* channels apply by channel plans. */
-	for (i = 0; i < max_chan_nums; i++) {
-		channel = channel_set[i].channel_num;
-		freq = rtw_ieee80211_channel_to_frequency(channel);
-		ch = ieee80211_get_channel(wiphy, freq);
-		if (ch) {
-			if (channel_set[i].scan_type == SCAN_PASSIVE)
-				ch->flags = IEEE80211_CHAN_NO_IR;
-			else
-				ch->flags = 0;
-		}
-	}
-}
-
-static int _rtw_reg_notifier_apply(struct wiphy *wiphy,
-				   struct regulatory_request *request)
-{
-	/* Hard code flags */
-	_rtw_reg_apply_flags(wiphy);
-	return 0;
-}
-
-static const struct ieee80211_regdomain *_rtw_regdomain_select(void)
-{
-	return &rtw_regdom_rd;
-}
-
-static void _rtw_regd_init_wiphy(struct wiphy *wiphy,
-				 void (*reg_notifier)(struct wiphy *wiphy,
-						      struct
-						      regulatory_request *
-						      request))
-{
-	const struct ieee80211_regdomain *regd;
-
-	wiphy->reg_notifier = reg_notifier;
-
-	wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG;
-	wiphy->regulatory_flags &= ~REGULATORY_STRICT_REG;
-	wiphy->regulatory_flags &= ~REGULATORY_DISABLE_BEACON_HINTS;
-
-	regd = _rtw_regdomain_select();
-	wiphy_apply_custom_regulatory(wiphy, regd);
-
-	/* Hard code flags */
-	_rtw_reg_apply_flags(wiphy);
-}
-
-void rtw_regd_init(struct wiphy *wiphy,
-		   void (*reg_notifier)(struct wiphy *wiphy,
-					struct regulatory_request *request))
-{
-	_rtw_regd_init_wiphy(wiphy, reg_notifier);
-}
-
-void rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request)
-{
-	_rtw_reg_notifier_apply(wiphy, request);
-}
diff --git a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c b/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
deleted file mode 100644
index 3b6029c20d50..000000000000
--- a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
+++ /dev/null
@@ -1,216 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#include <drv_types.h>
-
-
-unsigned int rtw_remainder_len(struct pkt_file *pfile)
-{
-	return (pfile->buf_len - ((SIZE_PTR)(pfile->cur_addr) - (SIZE_PTR)(pfile->buf_start)));
-}
-
-void _rtw_open_pktfile(struct sk_buff *pktptr, struct pkt_file *pfile)
-{
-	pfile->pkt = pktptr;
-	pfile->buf_start = pktptr->data;
-	pfile->cur_addr = pktptr->data;
-	pfile->buf_len = pktptr->len;
-	pfile->pkt_len = pktptr->len;
-
-	pfile->cur_buffer = pfile->buf_start;
-}
-
-int _rtw_pktfile_read(struct pkt_file *pfile, u8 *rmem, unsigned int rlen)
-{
-	int ret;
-	unsigned int remain = rtw_remainder_len(pfile);
-
-	/* clamp to bytes remaining; the coalesce loop relies on short reads */
-	if (rlen > remain)
-		rlen = remain;
-
-	if (rmem) {
-		ret = skb_copy_bits(pfile->pkt, pfile->buf_len - pfile->pkt_len, rmem, rlen);
-		if (ret < 0)
-			return ret;
-	}
-
-	pfile->cur_addr += rlen;
-	pfile->pkt_len -= rlen;
-	return rlen;
-}
-
-signed int rtw_endofpktfile(struct pkt_file *pfile)
-{
-	if (pfile->pkt_len == 0)
-		return true;
-	return false;
-}
-
-void rtw_os_xmit_resource_free(struct adapter *padapter,
-			       struct xmit_buf *pxmitbuf,
-			       u32 free_sz, u8 flag)
-{
-	if (free_sz > 0)
-		kfree(pxmitbuf->pallocated_buf);
-}
-
-#define WMM_XMIT_THRESHOLD	(NR_XMITFRAME * 2 / 5)
-
-void rtw_os_pkt_complete(struct adapter *padapter, struct sk_buff *pkt)
-{
-	u16 queue;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-	queue = skb_get_queue_mapping(pkt);
-	if (padapter->registrypriv.wifi_spec) {
-		if (__netif_subqueue_stopped(padapter->pnetdev, queue) &&
-		    (pxmitpriv->hwxmits[queue].accnt < WMM_XMIT_THRESHOLD))
-			netif_wake_subqueue(padapter->pnetdev, queue);
-	} else {
-		if (__netif_subqueue_stopped(padapter->pnetdev, queue))
-			netif_wake_subqueue(padapter->pnetdev, queue);
-	}
-
-	dev_kfree_skb_any(pkt);
-}
-
-void rtw_os_xmit_complete(struct adapter *padapter, struct xmit_frame *pxframe)
-{
-	if (pxframe->pkt)
-		rtw_os_pkt_complete(padapter, pxframe->pkt);
-
-	pxframe->pkt = NULL;
-}
-
-void rtw_os_xmit_schedule(struct adapter *padapter)
-{
-	struct adapter *pri_adapter = padapter;
-
-	if (!padapter)
-		return;
-
-	if (!list_empty(&padapter->xmitpriv.pending_xmitbuf_queue.queue))
-		complete(&pri_adapter->xmitpriv.xmit_comp);
-}
-
-static void rtw_check_xmit_resource(struct adapter *padapter, struct sk_buff *pkt)
-{
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	u16 queue;
-
-	queue = skb_get_queue_mapping(pkt);
-	if (padapter->registrypriv.wifi_spec) {
-		/* No free space for Tx, tx_worker is too slow */
-		if (pxmitpriv->hwxmits[queue].accnt > WMM_XMIT_THRESHOLD)
-			netif_stop_subqueue(padapter->pnetdev, queue);
-	} else {
-		if (pxmitpriv->free_xmitframe_cnt <= 4) {
-			if (!netif_tx_queue_stopped(netdev_get_tx_queue(padapter->pnetdev, queue)))
-				netif_stop_subqueue(padapter->pnetdev, queue);
-		}
-	}
-}
-
-static int rtw_mlcst2unicst(struct adapter *padapter, struct sk_buff *skb)
-{
-	struct	sta_priv *pstapriv = &padapter->stapriv;
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct list_head	*phead, *plist;
-	struct sk_buff *newskb;
-	struct sta_info *psta = NULL;
-	u8 chk_alive_num = 0;
-	char chk_alive_list[NUM_STA];
-	u8 bc_addr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-	u8 null_addr[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-	int i;
-	s32	res;
-
-	spin_lock_bh(&pstapriv->asoc_list_lock);
-	phead = &pstapriv->asoc_list;
-	/* free sta asoc_queue */
-	list_for_each(plist, phead) {
-		int stainfo_offset;
-
-		psta = list_entry(plist, struct sta_info, asoc_list);
-
-		stainfo_offset = rtw_stainfo_offset(pstapriv, psta);
-		if (stainfo_offset_valid(stainfo_offset))
-			chk_alive_list[chk_alive_num++] = stainfo_offset;
-	}
-	spin_unlock_bh(&pstapriv->asoc_list_lock);
-
-	for (i = 0; i < chk_alive_num; i++) {
-		psta = rtw_get_stainfo_by_offset(pstapriv, chk_alive_list[i]);
-		if (!(psta->state & _FW_LINKED))
-			continue;
-
-		/* avoid come from STA1 and send back STA1 */
-		if (!memcmp(psta->hwaddr, &skb->data[6], 6) ||
-		    !memcmp(psta->hwaddr, null_addr, 6) ||
-		    !memcmp(psta->hwaddr, bc_addr, 6))
-			continue;
-
-		newskb = skb_copy(skb, GFP_ATOMIC);
-		if (newskb) {
-			memcpy(newskb->data, psta->hwaddr, 6);
-			res = rtw_xmit(padapter, &newskb);
-			if (res < 0) {
-				pxmitpriv->tx_drop++;
-				dev_kfree_skb_any(newskb);
-			}
-		} else {
-			pxmitpriv->tx_drop++;
-			/* dev_kfree_skb_any(skb); */
-			return false;	/*  Caller shall tx this multicast frame via normal way. */
-		}
-	}
-
-	dev_kfree_skb_any(skb);
-	return true;
-}
-
-void _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
-{
-	struct adapter *padapter = rtw_netdev_priv(pnetdev);
-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-	s32 res = 0;
-
-	if (!rtw_if_up(padapter))
-		goto drop_packet;
-
-	rtw_check_xmit_resource(padapter, pkt);
-
-	if (!rtw_mc2u_disable && check_fwstate(pmlmepriv, WIFI_AP_STATE) &&
-	    (IP_MCAST_MAC(pkt->data) || ICMPV6_MCAST_MAC(pkt->data)) &&
-	    !padapter->registrypriv.wifi_spec) {
-		if (pxmitpriv->free_xmitframe_cnt > (NR_XMITFRAME / 4)) {
-			res = rtw_mlcst2unicst(padapter, pkt);
-			if (res)
-				return;
-		}
-	}
-
-	res = rtw_xmit(padapter, &pkt);
-	if (res < 0)
-		goto drop_packet;
-
-	return;
-
-drop_packet:
-	pxmitpriv->tx_drop++;
-	dev_kfree_skb_any(pkt);
-}
-
-netdev_tx_t rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
-{
-	if (pkt)
-		_rtw_xmit_entry(pkt, pnetdev);
-
-	return NETDEV_TX_OK;
-}
-- 
2.53.0


             reply	other threads:[~2026-10-07 10:29 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-07 10:28 Luka Gejak [this message]
2026-10-08  4:34 ` [PATCH] staging: rtl8723bs: remove the obsolete driver Ping-Ke Shih

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261007102819.19904-1-luka.gejak@linux.dev \
    --to=luka.gejak@linux.dev \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-staging@lists.linux.dev \
    --cc=linux-wireless@vger.kernel.org \
    --cc=pkshih@realtek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.