mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] staging: rtl8723bs: remove the obsolete driver
@ 2026-10-07 10:28 Luka Gejak
  0 siblings, 0 replies; only message in thread
From: Luka Gejak @ 2026-10-07 10:28 UTC (permalink / raw)
  To: Ping-Ke Shih, Greg Kroah-Hartman
  Cc: linux-wireless, linux-kernel, Luka Gejak, linux-staging

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


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-10-07 10:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-07 10:28 [PATCH] staging: rtl8723bs: remove the obsolete driver Luka Gejak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®