]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
staging: rtl8712: Remove driver using deprecated API wext
authorPhilipp Hortmann <philipp.g.hortmann@gmail.com>
Thu, 27 Nov 2025 21:25:34 +0000 (13:25 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 6 Dec 2025 21:12:45 +0000 (06:12 +0900)
commit 41e883c137ebe6eec042658ef750cbb0529f6ca8 upstream.

This driver is in the staging area since 2010.

The following reasons lead to the removal:
- This driver generates maintenance workload for itself and for API wext
- A MAC80211 driver was available in 2016 time frame; This driver does
  not compile anymore but would be a better starting point than the
  current driver. Here the note from the TODO file:
  A replacement for this driver with MAC80211 support is available
  at https://github.com/chunkeey/rtl8192su
- no progress changing to mac80211
- Using this hardware is security wise not state of the art as WPA3 is
  not supported.

Find further discussions in the Link below.

Link: https://lore.kernel.org/linux-staging/a02e3e0b-8a9b-47d5-87cf-2c957a474daa@gmail.com/T/#t
Signed-off-by: Philipp Hortmann <philipp.g.hortmann@gmail.com>
Tested-by: Dominik Karol PiÄ…tkowski <dominik.karol.piatkowski@protonmail.com>
Link: https://lore.kernel.org/r/20241020144933.10956-1-philipp.g.hortmann@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
[groeck: Resolved conflicts; dropped statement about hardware support in longterm kernels]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/stable/20251204021604.GA843400@ax162/T/#t
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
104 files changed:
MAINTAINERS
drivers/staging/Kconfig
drivers/staging/Makefile
drivers/staging/rtl8712/Kconfig [deleted file]
drivers/staging/rtl8712/Makefile [deleted file]
drivers/staging/rtl8712/TODO [deleted file]
drivers/staging/rtl8712/basic_types.h [deleted file]
drivers/staging/rtl8712/drv_types.h [deleted file]
drivers/staging/rtl8712/ethernet.h [deleted file]
drivers/staging/rtl8712/hal_init.c [deleted file]
drivers/staging/rtl8712/ieee80211.c [deleted file]
drivers/staging/rtl8712/ieee80211.h [deleted file]
drivers/staging/rtl8712/mlme_linux.c [deleted file]
drivers/staging/rtl8712/mlme_osdep.h [deleted file]
drivers/staging/rtl8712/mp_custom_oid.h [deleted file]
drivers/staging/rtl8712/os_intfs.c [deleted file]
drivers/staging/rtl8712/osdep_intf.h [deleted file]
drivers/staging/rtl8712/osdep_service.h [deleted file]
drivers/staging/rtl8712/recv_linux.c [deleted file]
drivers/staging/rtl8712/recv_osdep.h [deleted file]
drivers/staging/rtl8712/rtl8712_bitdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_cmd.c [deleted file]
drivers/staging/rtl8712/rtl8712_cmd.h [deleted file]
drivers/staging/rtl8712/rtl8712_cmdctrl_bitdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_cmdctrl_regdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_debugctrl_bitdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_debugctrl_regdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_edcasetting_bitdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_edcasetting_regdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_efuse.c [deleted file]
drivers/staging/rtl8712/rtl8712_efuse.h [deleted file]
drivers/staging/rtl8712/rtl8712_event.h [deleted file]
drivers/staging/rtl8712/rtl8712_fifoctrl_bitdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_fifoctrl_regdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_gp_bitdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_gp_regdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_hal.h [deleted file]
drivers/staging/rtl8712/rtl8712_interrupt_bitdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_io.c [deleted file]
drivers/staging/rtl8712/rtl8712_led.c [deleted file]
drivers/staging/rtl8712/rtl8712_macsetting_bitdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_macsetting_regdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_powersave_bitdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_powersave_regdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_ratectrl_bitdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_ratectrl_regdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_recv.c [deleted file]
drivers/staging/rtl8712/rtl8712_recv.h [deleted file]
drivers/staging/rtl8712/rtl8712_regdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_security_bitdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_spec.h [deleted file]
drivers/staging/rtl8712/rtl8712_syscfg_bitdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_syscfg_regdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_timectrl_bitdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_timectrl_regdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_wmac_bitdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_wmac_regdef.h [deleted file]
drivers/staging/rtl8712/rtl8712_xmit.c [deleted file]
drivers/staging/rtl8712/rtl8712_xmit.h [deleted file]
drivers/staging/rtl8712/rtl871x_cmd.c [deleted file]
drivers/staging/rtl8712/rtl871x_cmd.h [deleted file]
drivers/staging/rtl8712/rtl871x_debug.h [deleted file]
drivers/staging/rtl8712/rtl871x_eeprom.c [deleted file]
drivers/staging/rtl8712/rtl871x_eeprom.h [deleted file]
drivers/staging/rtl8712/rtl871x_event.h [deleted file]
drivers/staging/rtl8712/rtl871x_ht.h [deleted file]
drivers/staging/rtl8712/rtl871x_io.c [deleted file]
drivers/staging/rtl8712/rtl871x_io.h [deleted file]
drivers/staging/rtl8712/rtl871x_ioctl.h [deleted file]
drivers/staging/rtl8712/rtl871x_ioctl_linux.c [deleted file]
drivers/staging/rtl8712/rtl871x_ioctl_rtl.c [deleted file]
drivers/staging/rtl8712/rtl871x_ioctl_rtl.h [deleted file]
drivers/staging/rtl8712/rtl871x_ioctl_set.c [deleted file]
drivers/staging/rtl8712/rtl871x_ioctl_set.h [deleted file]
drivers/staging/rtl8712/rtl871x_led.h [deleted file]
drivers/staging/rtl8712/rtl871x_mlme.c [deleted file]
drivers/staging/rtl8712/rtl871x_mlme.h [deleted file]
drivers/staging/rtl8712/rtl871x_mp.c [deleted file]
drivers/staging/rtl8712/rtl871x_mp.h [deleted file]
drivers/staging/rtl8712/rtl871x_mp_ioctl.c [deleted file]
drivers/staging/rtl8712/rtl871x_mp_ioctl.h [deleted file]
drivers/staging/rtl8712/rtl871x_mp_phy_regdef.h [deleted file]
drivers/staging/rtl8712/rtl871x_pwrctrl.c [deleted file]
drivers/staging/rtl8712/rtl871x_pwrctrl.h [deleted file]
drivers/staging/rtl8712/rtl871x_recv.c [deleted file]
drivers/staging/rtl8712/rtl871x_recv.h [deleted file]
drivers/staging/rtl8712/rtl871x_rf.h [deleted file]
drivers/staging/rtl8712/rtl871x_security.c [deleted file]
drivers/staging/rtl8712/rtl871x_security.h [deleted file]
drivers/staging/rtl8712/rtl871x_sta_mgt.c [deleted file]
drivers/staging/rtl8712/rtl871x_wlan_sme.h [deleted file]
drivers/staging/rtl8712/rtl871x_xmit.c [deleted file]
drivers/staging/rtl8712/rtl871x_xmit.h [deleted file]
drivers/staging/rtl8712/sta_info.h [deleted file]
drivers/staging/rtl8712/usb_halinit.c [deleted file]
drivers/staging/rtl8712/usb_intf.c [deleted file]
drivers/staging/rtl8712/usb_ops.c [deleted file]
drivers/staging/rtl8712/usb_ops.h [deleted file]
drivers/staging/rtl8712/usb_ops_linux.c [deleted file]
drivers/staging/rtl8712/usb_osintf.h [deleted file]
drivers/staging/rtl8712/wifi.h [deleted file]
drivers/staging/rtl8712/wlan_bssdef.h [deleted file]
drivers/staging/rtl8712/xmit_linux.c [deleted file]
drivers/staging/rtl8712/xmit_osdep.h [deleted file]

index 9ed8ee40a2176b039312bd00e84eafd5d163a2a7..a02522a3ec08acc5172c8234b1df4a6ace7907d1 100644 (file)
@@ -19602,12 +19602,6 @@ R:     Pavel Skripkin <paskripkin@gmail.com>
 S:     Supported
 F:     drivers/staging/r8188eu/
 
-STAGING - REALTEK RTL8712U DRIVERS
-M:     Larry Finger <Larry.Finger@lwfinger.net>
-M:     Florian Schilhabel <florian.c.schilhabel@googlemail.com>.
-S:     Odd Fixes
-F:     drivers/staging/rtl8712/
-
 STAGING - SEPS525 LCD CONTROLLER DRIVERS
 M:     Michael Hennerich <michael.hennerich@analog.com>
 L:     linux-fbdev@vger.kernel.org
index 5cfabd5376cc233ab154c43c29a3278d709e4220..e2bc86eac1b7ba48199ded634ca8f3be14bf2499 100644 (file)
@@ -34,8 +34,6 @@ source "drivers/staging/rtl8192e/Kconfig"
 
 source "drivers/staging/rtl8723bs/Kconfig"
 
-source "drivers/staging/rtl8712/Kconfig"
-
 source "drivers/staging/r8188eu/Kconfig"
 
 source "drivers/staging/rts5208/Kconfig"
index f8c3aa9c241820d0f52f06c1851b042a0db154dc..89f4b6a0e09034b74078e117f574eca44ef6466d 100644 (file)
@@ -7,7 +7,6 @@ obj-$(CONFIG_FB_OLPC_DCON)      += olpc_dcon/
 obj-$(CONFIG_RTL8192U)         += rtl8192u/
 obj-$(CONFIG_RTL8192E)         += rtl8192e/
 obj-$(CONFIG_RTL8723BS)                += rtl8723bs/
-obj-$(CONFIG_R8712U)           += rtl8712/
 obj-$(CONFIG_R8188EU)          += r8188eu/
 obj-$(CONFIG_RTS5208)          += rts5208/
 obj-$(CONFIG_OCTEON_ETHERNET)  += octeon/
diff --git a/drivers/staging/rtl8712/Kconfig b/drivers/staging/rtl8712/Kconfig
deleted file mode 100644 (file)
index 8de2642..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-config R8712U
-       tristate "RealTek RTL8712U (RTL8192SU) Wireless LAN NIC driver"
-       depends on WLAN && USB && CFG80211
-       select WIRELESS_EXT
-       select WEXT_PRIV
-       select FW_LOADER
-       help
-           This option adds the Realtek RTL8712 USB device such as the
-           D-Link DWA-130.
-
-           If built as a module, it will be called r8712u.
-
-config R8712_TX_AGGR
-       bool "Realtek RTL8712U Transmit Aggregation code"
-       depends on R8712U && BROKEN
-       help
-           This option provides transmit aggregation for the Realtek
-           RTL8712 USB device.
-
-
diff --git a/drivers/staging/rtl8712/Makefile b/drivers/staging/rtl8712/Makefile
deleted file mode 100644 (file)
index 3ae216b..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-r8712u-y :=                            \
-               rtl871x_cmd.o           \
-               rtl8712_cmd.o           \
-               rtl871x_security.o      \
-               rtl871x_eeprom.o        \
-               rtl8712_efuse.o         \
-               hal_init.o              \
-               usb_halinit.o           \
-               usb_ops.o               \
-               usb_ops_linux.o         \
-               rtl871x_io.o            \
-               rtl8712_io.o            \
-               rtl871x_ioctl_linux.o   \
-               rtl871x_ioctl_rtl.o     \
-               rtl871x_ioctl_set.o     \
-               rtl8712_led.o           \
-               rtl871x_mlme.o          \
-               ieee80211.o             \
-               rtl871x_mp_ioctl.o      \
-               rtl871x_mp.o            \
-               mlme_linux.o            \
-               recv_linux.o            \
-               xmit_linux.o            \
-               usb_intf.o              \
-               os_intfs.o              \
-               rtl871x_pwrctrl.o       \
-               rtl8712_recv.o          \
-               rtl871x_recv.o          \
-               rtl871x_sta_mgt.o       \
-               rtl871x_xmit.o          \
-               rtl8712_xmit.o
-
-obj-$(CONFIG_R8712U)   := r8712u.o
-
diff --git a/drivers/staging/rtl8712/TODO b/drivers/staging/rtl8712/TODO
deleted file mode 100644 (file)
index 847c8c4..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-TODO:
-- merge Realtek's bugfixes and new features into the driver
-- switch to use LIB80211
-- switch to use MAC80211
-- checkpatch.pl fixes - only a few remain
-
-A replacement for this driver with MAC80211 support is available
-at https://github.com/chunkeey/rtl8192su
-
-Please send any patches to Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
-Larry Finger <Larry.Finger@lwfinger.net>,
-Florian Schilhabel <florian.c.schilhabel@googlemail.com> and
-Linux Driver Project Developer List <driverdev-devel@linuxdriverproject.org>.
diff --git a/drivers/staging/rtl8712/basic_types.h b/drivers/staging/rtl8712/basic_types.h
deleted file mode 100644 (file)
index aecded8..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __BASIC_TYPES_H__
-#define __BASIC_TYPES_H__
-
-#include <linux/types.h>
-
-#define sint signed int
-
-/* Should we extend this to be host_addr_t and target_addr_t for case:
- *     host : x86_64
- *     target : mips64
- */
-#define addr_t unsigned long
-
-#endif /*__BASIC_TYPES_H__*/
-
diff --git a/drivers/staging/rtl8712/drv_types.h b/drivers/staging/rtl8712/drv_types.h
deleted file mode 100644 (file)
index 76ac798..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-/* ---------------------------------------------------------------------
- *
- *     For type defines and data structure defines
- *
- * ---------------------------------------------------------------------
- */
-#ifndef __DRV_TYPES_H__
-#define __DRV_TYPES_H__
-
-struct _adapter;
-
-#include "osdep_service.h"
-#include "wlan_bssdef.h"
-#include "rtl8712_spec.h"
-#include "rtl8712_hal.h"
-#include <linux/mutex.h>
-#include <linux/completion.h>
-
-enum _NIC_VERSION {
-       RTL8711_NIC,
-       RTL8712_NIC,
-       RTL8713_NIC,
-       RTL8716_NIC
-};
-
-struct qos_priv        {
-       /* bit mask option: u-apsd, s-apsd, ts, block ack... */
-       unsigned int qos_option;
-};
-
-#include "rtl871x_ht.h"
-#include "rtl871x_cmd.h"
-#include "rtl871x_xmit.h"
-#include "rtl871x_recv.h"
-#include "rtl871x_security.h"
-#include "rtl871x_pwrctrl.h"
-#include "rtl871x_io.h"
-#include "rtl871x_eeprom.h"
-#include "sta_info.h"
-#include "rtl871x_mlme.h"
-#include "rtl871x_mp.h"
-#include "rtl871x_debug.h"
-#include "rtl871x_rf.h"
-#include "rtl871x_event.h"
-#include "rtl871x_led.h"
-
-#define SPEC_DEV_ID_DISABLE_HT BIT(1)
-
-struct specific_device_id {
-       u32             flags;
-       u16             idVendor;
-       u16             idProduct;
-
-};
-
-struct registry_priv {
-       u8      chip_version;
-       u8      rfintfs;
-       u8      lbkmode;
-       u8      hci;
-       u8      network_mode;   /*infra, ad-hoc, auto*/
-       struct ndis_802_11_ssid ssid;
-       u8      channel;/* ad-hoc support requirement */
-       u8      wireless_mode;/* A, B, G, auto */
-       u8      vrtl_carrier_sense; /*Enable, Disable, Auto*/
-       u8      vcs_type;/*RTS/CTS, CTS-to-self*/
-       u16     rts_thresh;
-       u16  frag_thresh;
-       u8      preamble;/*long, short, auto*/
-       u8  scan_mode;/*active, passive*/
-       u8  adhoc_tx_pwr;
-       u8  soft_ap;
-       u8  smart_ps;
-       u8 power_mgnt;
-       u8 radio_enable;
-       u8 long_retry_lmt;
-       u8 short_retry_lmt;
-       u16 busy_thresh;
-       u8 ack_policy;
-       u8 mp_mode;
-       u8 software_encrypt;
-       u8 software_decrypt;
-       /* 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;
-       u8 cbw40_enable;
-       u8 ampdu_enable;/*for tx*/
-       u8 rf_config;
-       u8 low_power;
-       u8 wifi_test;
-};
-
-struct dvobj_priv {
-       struct _adapter *padapter;
-       u32 nr_endpoint;
-       u8   ishighspeed;
-       uint (*inirp_init)(struct _adapter *adapter);
-       uint (*inirp_deinit)(struct _adapter *adapter);
-       struct usb_device *pusbdev;
-};
-
-/**
- * struct _adapter - the main adapter structure for this device.
- *
- * bup: True indicates that the interface is up.
- */
-struct _adapter {
-       struct  dvobj_priv dvobjpriv;
-       struct  mlme_priv mlmepriv;
-       struct  cmd_priv        cmdpriv;
-       struct  evt_priv        evtpriv;
-       struct  io_queue        *pio_queue;
-       struct  xmit_priv       xmitpriv;
-       struct  recv_priv       recvpriv;
-       struct  sta_priv        stapriv;
-       struct  security_priv   securitypriv;
-       struct  registry_priv   registrypriv;
-       struct  wlan_acl_pool   acl_list;
-       struct  pwrctrl_priv    pwrctrlpriv;
-       struct  eeprom_priv eeprompriv;
-       struct  hal_priv        halpriv;
-       struct  led_priv        ledpriv;
-       struct mp_priv  mppriv;
-       bool    driver_stopped;
-       bool    surprise_removed;
-       bool    suspended;
-       u8      eeprom_address_size;
-       u8      hw_init_completed;
-       struct task_struct *cmd_thread;
-       uint (*dvobj_init)(struct _adapter *adapter);
-       void (*dvobj_deinit)(struct _adapter *adapter);
-       struct net_device *pnetdev;
-       int bup;
-       struct net_device_stats stats;
-       struct iw_statistics iwstats;
-       int pid; /*process id from UI*/
-       struct work_struct wk_filter_rx_ff0;
-       const struct firmware *fw;
-       struct usb_interface *pusb_intf;
-       struct mutex mutex_start;
-       struct completion rtl8712_fw_ready;
-       struct completion rx_filter_ready;
-};
-
-static inline u8 *myid(struct eeprom_priv *peepriv)
-{
-       return peepriv->mac_addr;
-}
-
-u8 r8712_usb_hal_bus_init(struct _adapter *adapter);
-
-#endif /*__DRV_TYPES_H__*/
-
diff --git a/drivers/staging/rtl8712/ethernet.h b/drivers/staging/rtl8712/ethernet.h
deleted file mode 100644 (file)
index 4b9b8a9..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __INC_ETHERNET_H
-#define __INC_ETHERNET_H
-
-#define ETHERNET_HEADER_SIZE           14      /*!< Ethernet Header Length*/
-#define LLC_HEADER_SIZE                        6       /*!< LLC Header Length*/
-
-#endif /* #ifndef __INC_ETHERNET_H */
-
diff --git a/drivers/staging/rtl8712/hal_init.c b/drivers/staging/rtl8712/hal_init.c
deleted file mode 100644 (file)
index 1148075..0000000
+++ /dev/null
@@ -1,401 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>.
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _HAL_INIT_C_
-
-#include <linux/usb.h>
-#include <linux/device.h>
-#include <linux/usb/ch9.h>
-#include <linux/firmware.h>
-#include <linux/module.h>
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "usb_osintf.h"
-
-#define FWBUFF_ALIGN_SZ 512
-#define MAX_DUMP_FWSZ (48 * 1024)
-
-static void rtl871x_load_fw_fail(struct _adapter *adapter)
-{
-       struct usb_device *udev = adapter->dvobjpriv.pusbdev;
-       struct device *dev = &udev->dev;
-       struct device *parent = dev->parent;
-
-       complete(&adapter->rtl8712_fw_ready);
-
-       dev_err(&udev->dev, "r8712u: Firmware request failed\n");
-
-       if (parent)
-               device_lock(parent);
-
-       device_release_driver(dev);
-
-       if (parent)
-               device_unlock(parent);
-}
-
-static void rtl871x_load_fw_cb(const struct firmware *firmware, void *context)
-{
-       struct _adapter *adapter = context;
-
-       if (!firmware) {
-               rtl871x_load_fw_fail(adapter);
-               return;
-       }
-       adapter->fw = firmware;
-       /* firmware available - start netdev */
-       register_netdev(adapter->pnetdev);
-       complete(&adapter->rtl8712_fw_ready);
-}
-
-static const char firmware_file[] = "rtlwifi/rtl8712u.bin";
-
-int rtl871x_load_fw(struct _adapter *padapter)
-{
-       struct device *dev = &padapter->dvobjpriv.pusbdev->dev;
-       int rc;
-
-       init_completion(&padapter->rtl8712_fw_ready);
-       dev_info(dev, "r8712u: Loading firmware from \"%s\"\n", firmware_file);
-       rc = request_firmware_nowait(THIS_MODULE, 1, firmware_file, dev,
-                                    GFP_KERNEL, padapter, rtl871x_load_fw_cb);
-       if (rc)
-               dev_err(dev, "r8712u: Firmware request error %d\n", rc);
-       return rc;
-}
-MODULE_FIRMWARE("rtlwifi/rtl8712u.bin");
-
-static u32 rtl871x_open_fw(struct _adapter *adapter, const u8 **mappedfw)
-{
-       if (adapter->fw->size > 200000) {
-               dev_err(&adapter->pnetdev->dev, "r8712u: Bad fw->size of %zu\n",
-                       adapter->fw->size);
-               return 0;
-       }
-       *mappedfw = adapter->fw->data;
-       return adapter->fw->size;
-}
-
-static void fill_fwpriv(struct _adapter *adapter, struct fw_priv *fwpriv)
-{
-       struct dvobj_priv *dvobj = &adapter->dvobjpriv;
-       struct registry_priv *regpriv = &adapter->registrypriv;
-
-       memset(fwpriv, 0, sizeof(struct fw_priv));
-       /* todo: check if needs endian conversion */
-       fwpriv->hci_sel =  RTL8712_HCI_TYPE_72USB;
-       fwpriv->usb_ep_num = (u8)dvobj->nr_endpoint;
-       fwpriv->bw_40MHz_en = regpriv->cbw40_enable;
-       switch (regpriv->rf_config) {
-       case RTL8712_RF_1T1R:
-               fwpriv->rf_config = RTL8712_RFC_1T1R;
-               break;
-       case RTL8712_RF_2T2R:
-               fwpriv->rf_config = RTL8712_RFC_2T2R;
-               break;
-       case RTL8712_RF_1T2R:
-       default:
-               fwpriv->rf_config = RTL8712_RFC_1T2R;
-       }
-       fwpriv->mp_mode = (regpriv->mp_mode == 1);
-       /* 0:off 1:on 2:auto */
-       fwpriv->vcs_type = regpriv->vrtl_carrier_sense;
-       fwpriv->vcs_mode = regpriv->vcs_type; /* 1:RTS/CTS 2:CTS to self */
-       /* default enable turbo_mode */
-       fwpriv->turbo_mode = (regpriv->wifi_test != 1);
-       fwpriv->low_power_mode = regpriv->low_power;
-}
-
-static void update_fwhdr(struct fw_hdr *pfwhdr, const u8 *pmappedfw)
-{
-       pfwhdr->signature = le16_to_cpu(*(__le16 *)pmappedfw);
-       pfwhdr->version = le16_to_cpu(*(__le16 *)(pmappedfw + 2));
-       /* define the size of boot loader */
-       pfwhdr->dmem_size = le32_to_cpu(*(__le32 *)(pmappedfw + 4));
-       /* define the size of FW in IMEM */
-       pfwhdr->img_IMEM_size = le32_to_cpu(*(__le32 *)(pmappedfw + 8));
-       /* define the size of FW in SRAM */
-       pfwhdr->img_SRAM_size = le32_to_cpu(*(__le32 *)(pmappedfw + 12));
-       /* define the size of DMEM variable */
-       pfwhdr->fw_priv_sz = le32_to_cpu(*(__le32 *)(pmappedfw + 16));
-}
-
-static u8 chk_fwhdr(struct fw_hdr *pfwhdr, u32 ulfilelength)
-{
-       u32     fwhdrsz, fw_sz;
-
-       /* check signature */
-       if ((pfwhdr->signature != 0x8712) && (pfwhdr->signature != 0x8192))
-               return _FAIL;
-       /* check fw_priv_sze & sizeof(struct fw_priv) */
-       if (pfwhdr->fw_priv_sz != sizeof(struct fw_priv))
-               return _FAIL;
-       /* check fw_sz & image_fw_sz */
-       fwhdrsz = offsetof(struct fw_hdr, fwpriv) + pfwhdr->fw_priv_sz;
-       fw_sz =  fwhdrsz + pfwhdr->img_IMEM_size + pfwhdr->img_SRAM_size +
-                pfwhdr->dmem_size;
-       if (fw_sz != ulfilelength)
-               return _FAIL;
-       return _SUCCESS;
-}
-
-static u8 rtl8712_dl_fw(struct _adapter *adapter)
-{
-       sint i;
-       u8 tmp8, tmp8_a;
-       u16 tmp16;
-       u32 maxlen = 0; /* for compare usage */
-       uint dump_imem_sz, imem_sz, dump_emem_sz, emem_sz; /* max = 49152; */
-       struct fw_hdr fwhdr;
-       u32 ulfilelength;       /* FW file size */
-       const u8 *mappedfw = NULL;
-       u8 *tmpchar = NULL, *payload, *ptr;
-       struct tx_desc *txdesc;
-       u32 txdscp_sz = sizeof(struct tx_desc);
-       u8 ret = _FAIL;
-
-       ulfilelength = rtl871x_open_fw(adapter, &mappedfw);
-       if (mappedfw && (ulfilelength > 0)) {
-               update_fwhdr(&fwhdr, mappedfw);
-               if (chk_fwhdr(&fwhdr, ulfilelength) == _FAIL)
-                       return ret;
-               fill_fwpriv(adapter, &fwhdr.fwpriv);
-               /* firmware check ok */
-               maxlen = (fwhdr.img_IMEM_size > fwhdr.img_SRAM_size) ?
-                         fwhdr.img_IMEM_size : fwhdr.img_SRAM_size;
-               maxlen += txdscp_sz;
-               tmpchar = kmalloc(maxlen + FWBUFF_ALIGN_SZ, GFP_KERNEL);
-               if (!tmpchar)
-                       return ret;
-
-               txdesc = (struct tx_desc *)(tmpchar + FWBUFF_ALIGN_SZ -
-                           ((addr_t)(tmpchar) & (FWBUFF_ALIGN_SZ - 1)));
-               payload = (u8 *)(txdesc) + txdscp_sz;
-               ptr = (u8 *)mappedfw + offsetof(struct fw_hdr, fwpriv) +
-                     fwhdr.fw_priv_sz;
-               /* Download FirmWare */
-               /* 1. determine IMEM code size and Load IMEM Code Section */
-               imem_sz = fwhdr.img_IMEM_size;
-               do {
-                       memset(txdesc, 0, TXDESC_SIZE);
-                       if (imem_sz >  MAX_DUMP_FWSZ/*49152*/) {
-                               dump_imem_sz = MAX_DUMP_FWSZ;
-                       } else {
-                               dump_imem_sz = imem_sz;
-                               txdesc->txdw0 |= cpu_to_le32(BIT(28));
-                       }
-                       txdesc->txdw0 |= cpu_to_le32(dump_imem_sz &
-                                                      0x0000ffff);
-                       memcpy(payload, ptr, dump_imem_sz);
-                       r8712_write_mem(adapter, RTL8712_DMA_VOQ,
-                                       dump_imem_sz + TXDESC_SIZE,
-                                       (u8 *)txdesc);
-                       ptr += dump_imem_sz;
-                       imem_sz -= dump_imem_sz;
-               } while (imem_sz > 0);
-               i = 10;
-               tmp16 = r8712_read16(adapter, TCR);
-               while (((tmp16 & _IMEM_CODE_DONE) == 0) && (i > 0)) {
-                       usleep_range(10, 1000);
-                       tmp16 = r8712_read16(adapter, TCR);
-                       i--;
-               }
-               if (i == 0 || (tmp16 & _IMEM_CHK_RPT) == 0)
-                       goto exit_fail;
-
-               /* 2.Download EMEM code size and Load EMEM Code Section */
-               emem_sz = fwhdr.img_SRAM_size;
-               do {
-                       memset(txdesc, 0, TXDESC_SIZE);
-                       if (emem_sz >  MAX_DUMP_FWSZ) { /* max=48k */
-                               dump_emem_sz = MAX_DUMP_FWSZ;
-                       } else {
-                               dump_emem_sz = emem_sz;
-                               txdesc->txdw0 |= cpu_to_le32(BIT(28));
-                       }
-                       txdesc->txdw0 |= cpu_to_le32(dump_emem_sz &
-                                                      0x0000ffff);
-                       memcpy(payload, ptr, dump_emem_sz);
-                       r8712_write_mem(adapter, RTL8712_DMA_VOQ,
-                                       dump_emem_sz + TXDESC_SIZE,
-                                       (u8 *)txdesc);
-                       ptr += dump_emem_sz;
-                       emem_sz -= dump_emem_sz;
-               } while (emem_sz > 0);
-               i = 5;
-               tmp16 = r8712_read16(adapter, TCR);
-               while (((tmp16 & _EMEM_CODE_DONE) == 0) && (i > 0)) {
-                       usleep_range(10, 1000);
-                       tmp16 = r8712_read16(adapter, TCR);
-                       i--;
-               }
-               if (i == 0 || (tmp16 & _EMEM_CHK_RPT) == 0)
-                       goto exit_fail;
-
-               /* 3.Enable CPU */
-               tmp8 = r8712_read8(adapter, SYS_CLKR);
-               r8712_write8(adapter, SYS_CLKR, tmp8 | BIT(2));
-               tmp8_a = r8712_read8(adapter, SYS_CLKR);
-               if (tmp8_a != (tmp8 | BIT(2)))
-                       goto exit_fail;
-
-               tmp8 = r8712_read8(adapter, SYS_FUNC_EN + 1);
-               r8712_write8(adapter, SYS_FUNC_EN + 1, tmp8 | BIT(2));
-               tmp8_a = r8712_read8(adapter, SYS_FUNC_EN + 1);
-               if (tmp8_a != (tmp8 | BIT(2)))
-                       goto exit_fail;
-
-               r8712_read32(adapter, TCR);
-
-               /* 4.polling IMEM Ready */
-               i = 100;
-               tmp16 = r8712_read16(adapter, TCR);
-               while (((tmp16 & _IMEM_RDY) == 0) && (i > 0)) {
-                       msleep(20);
-                       tmp16 = r8712_read16(adapter, TCR);
-                       i--;
-               }
-               if (i == 0) {
-                       r8712_write16(adapter, 0x10250348, 0xc000);
-                       r8712_write16(adapter, 0x10250348, 0xc001);
-                       r8712_write16(adapter, 0x10250348, 0x2000);
-                       r8712_write16(adapter, 0x10250348, 0x2001);
-                       r8712_write16(adapter, 0x10250348, 0x2002);
-                       r8712_write16(adapter, 0x10250348, 0x2003);
-                       goto exit_fail;
-               }
-               /* 5.Download DMEM code size and Load EMEM Code Section */
-               memset(txdesc, 0, TXDESC_SIZE);
-               txdesc->txdw0 |= cpu_to_le32(fwhdr.fw_priv_sz & 0x0000ffff);
-               txdesc->txdw0 |= cpu_to_le32(BIT(28));
-               memcpy(payload, &fwhdr.fwpriv, fwhdr.fw_priv_sz);
-               r8712_write_mem(adapter, RTL8712_DMA_VOQ,
-                               fwhdr.fw_priv_sz + TXDESC_SIZE, (u8 *)txdesc);
-
-               /* polling dmem code done */
-               i = 100;
-               tmp16 = r8712_read16(adapter, TCR);
-               while (((tmp16 & _DMEM_CODE_DONE) == 0) && (i > 0)) {
-                       msleep(20);
-                       tmp16 = r8712_read16(adapter, TCR);
-                       i--;
-               }
-               if (i == 0)
-                       goto exit_fail;
-
-               tmp8 = r8712_read8(adapter, 0x1025000A);
-               if (tmp8 & BIT(4)) /* When boot from EEPROM,
-                                   * & FW need more time to read EEPROM
-                                   */
-                       i = 60;
-               else                    /* boot from EFUSE */
-                       i = 30;
-               tmp16 = r8712_read16(adapter, TCR);
-               while (((tmp16 & _FWRDY) == 0) && (i > 0)) {
-                       msleep(100);
-                       tmp16 = r8712_read16(adapter, TCR);
-                       i--;
-               }
-               if (i == 0)
-                       goto exit_fail;
-       } else {
-               goto exit_fail;
-       }
-       ret = _SUCCESS;
-
-exit_fail:
-       kfree(tmpchar);
-       return ret;
-}
-
-uint rtl8712_hal_init(struct _adapter *padapter)
-{
-       u32 val32;
-       int i;
-
-       /* r8712 firmware download */
-       if (rtl8712_dl_fw(padapter) != _SUCCESS)
-               return _FAIL;
-
-       netdev_info(padapter->pnetdev, "1 RCR=0x%x\n",
-                   r8712_read32(padapter, RCR));
-       val32 = r8712_read32(padapter, RCR);
-       r8712_write32(padapter, RCR, (val32 | BIT(26))); /* Enable RX TCP
-                                                         * Checksum offload
-                                                         */
-       netdev_info(padapter->pnetdev, "2 RCR=0x%x\n",
-                   r8712_read32(padapter, RCR));
-       val32 = r8712_read32(padapter, RCR);
-       r8712_write32(padapter, RCR, (val32 | BIT(25))); /* Append PHY status */
-       val32 = r8712_read32(padapter, 0x10250040);
-       r8712_write32(padapter,  0x10250040, (val32 & 0x00FFFFFF));
-       /* for usb rx aggregation */
-       r8712_write8(padapter, 0x102500B5, r8712_read8(padapter, 0x102500B5) |
-              BIT(0)); /* page = 128bytes */
-       r8712_write8(padapter, 0x102500BD, r8712_read8(padapter, 0x102500BD) |
-              BIT(7)); /* enable usb rx aggregation */
-       r8712_write8(padapter, 0x102500D9, 1); /* TH=1 => means that invalidate
-                                               *  usb rx aggregation
-                                               */
-       r8712_write8(padapter, 0x1025FE5B, 0x04); /* 1.7ms/4 */
-       /* Fix the RX FIFO issue(USB error) */
-       r8712_write8(padapter, 0x1025fe5C, r8712_read8(padapter, 0x1025fe5C)
-                    | BIT(7));
-       for (i = 0; i < ETH_ALEN; i++)
-               padapter->eeprompriv.mac_addr[i] = r8712_read8(padapter,
-                                                              MACID + i);
-       return _SUCCESS;
-}
-
-uint rtl8712_hal_deinit(struct _adapter *padapter)
-{
-       r8712_write8(padapter, RF_CTRL, 0x00);
-       /* Turn off BB */
-       msleep(20);
-       /* Turn off MAC */
-       r8712_write8(padapter, SYS_CLKR + 1, 0x38); /* Switch Control Path */
-       r8712_write8(padapter, SYS_FUNC_EN + 1, 0x70);
-       r8712_write8(padapter, PMC_FSM, 0x06);  /* Enable Loader Data Keep */
-       r8712_write8(padapter, SYS_ISO_CTRL, 0xF9); /* Isolation signals from
-                                                    * CORE, PLL
-                                                    */
-       r8712_write8(padapter, SYS_ISO_CTRL + 1, 0xe8); /* Enable EFUSE 1.2V */
-       r8712_write8(padapter, AFE_PLL_CTRL, 0x00); /* Disable AFE PLL. */
-       r8712_write8(padapter, LDOA15_CTRL, 0x54);  /* Disable A15V */
-       r8712_write8(padapter, SYS_FUNC_EN + 1, 0x50); /* Disable E-Fuse 1.2V */
-       r8712_write8(padapter, LDOV12D_CTRL, 0x24); /* Disable LDO12(for CE) */
-       r8712_write8(padapter, AFE_MISC, 0x30); /* Disable AFE BG&MB */
-       /* Option for Disable 1.6V LDO. */
-       r8712_write8(padapter, SPS0_CTRL, 0x56); /* Disable 1.6V LDO */
-       r8712_write8(padapter, SPS0_CTRL + 1, 0x43);  /* Set SW PFM */
-       return _SUCCESS;
-}
-
-uint rtl871x_hal_init(struct _adapter *padapter)
-{
-       padapter->hw_init_completed = false;
-       if (!padapter->halpriv.hal_bus_init)
-               return _FAIL;
-       if (padapter->halpriv.hal_bus_init(padapter) != _SUCCESS)
-               return _FAIL;
-       if (rtl8712_hal_init(padapter) == _SUCCESS) {
-               padapter->hw_init_completed = true;
-       } else {
-               padapter->hw_init_completed = false;
-               return _FAIL;
-       }
-       return _SUCCESS;
-}
diff --git a/drivers/staging/rtl8712/ieee80211.c b/drivers/staging/rtl8712/ieee80211.c
deleted file mode 100644 (file)
index 7d8f1a2..0000000
+++ /dev/null
@@ -1,415 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * ieee80211.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>.
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _IEEE80211_C
-
-#include "drv_types.h"
-#include "ieee80211.h"
-#include "wifi.h"
-#include "osdep_service.h"
-#include "wlan_bssdef.h"
-
-static const u8 WPA_OUI_TYPE[] = {0x00, 0x50, 0xf2, 1};
-static const u8 WPA_CIPHER_SUITE_NONE[] = {0x00, 0x50, 0xf2, 0};
-static const u8 WPA_CIPHER_SUITE_WEP40[] = {0x00, 0x50, 0xf2, 1};
-static const u8 WPA_CIPHER_SUITE_TKIP[] = {0x00, 0x50, 0xf2, 2};
-static const u8 WPA_CIPHER_SUITE_CCMP[] = {0x00, 0x50, 0xf2, 4};
-static const u8 WPA_CIPHER_SUITE_WEP104[] = {0x00, 0x50, 0xf2, 5};
-
-static const u8 RSN_CIPHER_SUITE_NONE[] = {0x00, 0x0f, 0xac, 0};
-static const u8 RSN_CIPHER_SUITE_WEP40[] = {0x00, 0x0f, 0xac, 1};
-static const u8 RSN_CIPHER_SUITE_TKIP[] = {0x00, 0x0f, 0xac, 2};
-static const u8 RSN_CIPHER_SUITE_CCMP[] = {0x00, 0x0f, 0xac, 4};
-static const 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)
-};
-
-uint r8712_is_cckrates_included(u8 *rate)
-{
-       u32 i = 0;
-
-       while (rate[i] != 0) {
-               if ((((rate[i]) & 0x7f) == 2) || (((rate[i]) & 0x7f) == 4) ||
-                   (((rate[i]) & 0x7f) == 11) || (((rate[i]) & 0x7f) == 22))
-                       return true;
-               i++;
-       }
-       return false;
-}
-
-uint r8712_is_cckratesonly_included(u8 *rate)
-{
-       u32 i = 0;
-
-       while (rate[i] != 0) {
-               if ((((rate[i]) & 0x7f) != 2) && (((rate[i]) & 0x7f) != 4) &&
-                   (((rate[i]) & 0x7f) != 11)  && (((rate[i]) & 0x7f) != 22))
-                       return false;
-               i++;
-       }
-       return true;
-}
-
-/* r8712_set_ie will update frame length */
-u8 *r8712_set_ie(u8 *pbuf, sint index, uint len, u8 *source, uint *frlen)
-{
-       *pbuf = (u8)index;
-       *(pbuf + 1) = (u8)len;
-       if (len > 0)
-               memcpy((void *)(pbuf + 2), (void *)source, len);
-       *frlen = *frlen + (len + 2);
-       return pbuf + len + 2;
-}
-
-/* ---------------------------------------------------------------------------
- * index: the information element id index, limit is the limit for search
- * ---------------------------------------------------------------------------
- */
-u8 *r8712_get_ie(u8 *pbuf, sint index, uint *len, sint limit)
-{
-       sint tmp, i;
-       u8 *p;
-
-       if (limit < 1)
-               return NULL;
-       p = pbuf;
-       i = 0;
-       *len = 0;
-       while (1) {
-               if (*p == index) {
-                       *len = *(p + 1);
-                       return p;
-               }
-               tmp = *(p + 1);
-               p += (tmp + 2);
-               i += (tmp + 2);
-               if (i >= limit)
-                       break;
-       }
-       return NULL;
-}
-
-static void set_supported_rate(u8 *rates, uint mode)
-{
-       memset(rates, 0, NDIS_802_11_LENGTH_RATES_EX);
-       switch (mode) {
-       case WIRELESS_11B:
-               memcpy(rates, WIFI_CCKRATES, IEEE80211_CCK_RATE_LEN);
-               break;
-       case WIRELESS_11G:
-       case WIRELESS_11A:
-               memcpy(rates, WIFI_OFDMRATES, IEEE80211_NUM_OFDM_RATESLEN);
-               break;
-       case WIRELESS_11BG:
-               memcpy(rates, WIFI_CCKRATES, IEEE80211_CCK_RATE_LEN);
-               memcpy(rates + IEEE80211_CCK_RATE_LEN, WIFI_OFDMRATES,
-                      IEEE80211_NUM_OFDM_RATESLEN);
-               break;
-       }
-}
-
-static uint r8712_get_rateset_len(u8 *rateset)
-{
-       uint i = 0;
-
-       while (1) {
-               if ((rateset[i]) == 0)
-                       break;
-               if (i > 12)
-                       break;
-               i++;
-       }
-       return i;
-}
-
-int r8712_generate_ie(struct registry_priv *registrypriv)
-{
-       int rate_len;
-       uint sz = 0;
-       struct wlan_bssid_ex *dev_network = &registrypriv->dev_network;
-       u8 *ie = dev_network->IEs;
-       u16 beacon_period = (u16)dev_network->Configuration.BeaconPeriod;
-
-       /*timestamp will be inserted by hardware*/
-       sz += 8;
-       ie += sz;
-       /*beacon interval : 2bytes*/
-       *(__le16 *)ie = cpu_to_le16(beacon_period);
-       sz += 2;
-       ie += 2;
-       /*capability info*/
-       *(u16 *)ie = 0;
-       *(__le16 *)ie |= cpu_to_le16(WLAN_CAPABILITY_IBSS);
-       if (registrypriv->preamble == PREAMBLE_SHORT)
-               *(__le16 *)ie |= cpu_to_le16(WLAN_CAPABILITY_SHORT_PREAMBLE);
-       if (dev_network->Privacy)
-               *(__le16 *)ie |= cpu_to_le16(WLAN_CAPABILITY_PRIVACY);
-       sz += 2;
-       ie += 2;
-       /*SSID*/
-       ie = r8712_set_ie(ie, WLAN_EID_SSID, dev_network->Ssid.SsidLength,
-                         dev_network->Ssid.Ssid, &sz);
-       /*supported rates*/
-       set_supported_rate(dev_network->rates, registrypriv->wireless_mode);
-       rate_len = r8712_get_rateset_len(dev_network->rates);
-       if (rate_len > 8) {
-               ie = r8712_set_ie(ie, WLAN_EID_SUPP_RATES, 8,
-                                 dev_network->rates, &sz);
-               ie = r8712_set_ie(ie, WLAN_EID_EXT_SUPP_RATES, (rate_len - 8),
-                                 (dev_network->rates + 8), &sz);
-       } else {
-               ie = r8712_set_ie(ie, WLAN_EID_SUPP_RATES,
-                                 rate_len, dev_network->rates, &sz);
-       }
-       /*DS parameter set*/
-       ie = r8712_set_ie(ie, WLAN_EID_DS_PARAMS, 1,
-                         (u8 *)&dev_network->Configuration.DSConfig, &sz);
-       /*IBSS Parameter Set*/
-       ie = r8712_set_ie(ie, WLAN_EID_IBSS_PARAMS, 2,
-                         (u8 *)&dev_network->Configuration.ATIMWindow, &sz);
-       return sz;
-}
-
-unsigned char *r8712_get_wpa_ie(unsigned char *ie, uint *wpa_ie_len, int limit)
-{
-       u32 len;
-       u16 val16;
-       unsigned char wpa_oui_type[] = {0x00, 0x50, 0xf2, 0x01};
-       u8 *buf = ie;
-
-       while (1) {
-               buf = r8712_get_ie(buf, _WPA_IE_ID_, &len, limit);
-               if (buf) {
-                       /*check if oui matches...*/
-                       if (memcmp((buf + 2), wpa_oui_type,
-                                  sizeof(wpa_oui_type)))
-                               goto check_next_ie;
-                       /*check version...*/
-                       memcpy((u8 *)&val16, (buf + 6), sizeof(val16));
-                       le16_to_cpus(&val16);
-                       if (val16 != 0x0001)
-                               goto check_next_ie;
-                       *wpa_ie_len = *(buf + 1);
-                       return buf;
-               }
-               *wpa_ie_len = 0;
-               return NULL;
-check_next_ie:
-               limit = limit - (buf - ie) - 2 - len;
-               if (limit <= 0)
-                       break;
-               buf += (2 + len);
-       }
-       *wpa_ie_len = 0;
-       return NULL;
-}
-
-unsigned char *r8712_get_wpa2_ie(unsigned char *pie, uint *rsn_ie_len,
-                                int limit)
-{
-       return r8712_get_ie(pie, _WPA2_IE_ID_, rsn_ie_len, limit);
-}
-
-static int r8712_get_wpa_cipher_suite(u8 *s)
-{
-       if (!memcmp(s, (void *)WPA_CIPHER_SUITE_NONE, WPA_SELECTOR_LEN))
-               return WPA_CIPHER_NONE;
-       if (!memcmp(s, (void *)WPA_CIPHER_SUITE_WEP40, WPA_SELECTOR_LEN))
-               return WPA_CIPHER_WEP40;
-       if (!memcmp(s, (void *)WPA_CIPHER_SUITE_TKIP, WPA_SELECTOR_LEN))
-               return WPA_CIPHER_TKIP;
-       if (!memcmp(s, (void *)WPA_CIPHER_SUITE_CCMP, WPA_SELECTOR_LEN))
-               return WPA_CIPHER_CCMP;
-       if (!memcmp(s, (void *)WPA_CIPHER_SUITE_WEP104, WPA_SELECTOR_LEN))
-               return WPA_CIPHER_WEP104;
-       return 0;
-}
-
-static int r8712_get_wpa2_cipher_suite(u8 *s)
-{
-       if (!memcmp(s, (void *)RSN_CIPHER_SUITE_NONE, RSN_SELECTOR_LEN))
-               return WPA_CIPHER_NONE;
-       if (!memcmp(s, (void *)RSN_CIPHER_SUITE_WEP40, RSN_SELECTOR_LEN))
-               return WPA_CIPHER_WEP40;
-       if (!memcmp(s, (void *)RSN_CIPHER_SUITE_TKIP, RSN_SELECTOR_LEN))
-               return WPA_CIPHER_TKIP;
-       if (!memcmp(s, (void *)RSN_CIPHER_SUITE_CCMP, RSN_SELECTOR_LEN))
-               return WPA_CIPHER_CCMP;
-       if (!memcmp(s, (void *)RSN_CIPHER_SUITE_WEP104, RSN_SELECTOR_LEN))
-               return WPA_CIPHER_WEP104;
-       return 0;
-}
-
-int r8712_parse_wpa_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher,
-                      int *pairwise_cipher)
-{
-       int i;
-       int left, count;
-       u8 *pos;
-
-       if (wpa_ie_len <= 0) {
-               /* No WPA IE - fail silently */
-               return -EINVAL;
-       }
-       if ((*wpa_ie != _WPA_IE_ID_) ||
-           (*(wpa_ie + 1) != (u8)(wpa_ie_len - 2)) ||
-           (memcmp(wpa_ie + 2, (void *)WPA_OUI_TYPE, WPA_SELECTOR_LEN)))
-               return -EINVAL;
-       pos = wpa_ie;
-       pos += 8;
-       left = wpa_ie_len - 8;
-       /*group_cipher*/
-       if (left >= WPA_SELECTOR_LEN) {
-               *group_cipher = r8712_get_wpa_cipher_suite(pos);
-               pos += WPA_SELECTOR_LEN;
-               left -= WPA_SELECTOR_LEN;
-       } else if (left > 0) {
-               return -EINVAL;
-       }
-       /*pairwise_cipher*/
-       if (left >= 2) {
-               count = le16_to_cpu(*(__le16 *)pos);
-               pos += 2;
-               left -= 2;
-               if (count == 0 || left < count * WPA_SELECTOR_LEN)
-                       return -EINVAL;
-               for (i = 0; i < count; i++) {
-                       *pairwise_cipher |= r8712_get_wpa_cipher_suite(pos);
-                       pos += WPA_SELECTOR_LEN;
-                       left -= WPA_SELECTOR_LEN;
-               }
-       } else if (left == 1) {
-               return -EINVAL;
-       }
-       return 0;
-}
-
-int r8712_parse_wpa2_ie(u8 *rsn_ie, int rsn_ie_len, int *group_cipher,
-                       int *pairwise_cipher)
-{
-       int i;
-       int left, count;
-       u8 *pos;
-
-       if (rsn_ie_len <= 0) {
-               /* No RSN IE - fail silently */
-               return -EINVAL;
-       }
-       if ((*rsn_ie != _WPA2_IE_ID_) ||
-           (*(rsn_ie + 1) != (u8)(rsn_ie_len - 2)))
-               return -EINVAL;
-       pos = rsn_ie;
-       pos += 4;
-       left = rsn_ie_len - 4;
-       /*group_cipher*/
-       if (left >= RSN_SELECTOR_LEN) {
-               *group_cipher = r8712_get_wpa2_cipher_suite(pos);
-               pos += RSN_SELECTOR_LEN;
-               left -= RSN_SELECTOR_LEN;
-       } else if (left > 0) {
-               return -EINVAL;
-       }
-       /*pairwise_cipher*/
-       if (left >= 2) {
-               count = le16_to_cpu(*(__le16 *)pos);
-               pos += 2;
-               left -= 2;
-               if (count == 0 || left < count * RSN_SELECTOR_LEN)
-                       return -EINVAL;
-               for (i = 0; i < count; i++) {
-                       *pairwise_cipher |= r8712_get_wpa2_cipher_suite(pos);
-                       pos += RSN_SELECTOR_LEN;
-                       left -= RSN_SELECTOR_LEN;
-               }
-       } else if (left == 1) {
-               return -EINVAL;
-       }
-       return 0;
-}
-
-int r8712_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) {
-               authmode = in_ie[cnt];
-               if ((authmode == _WPA_IE_ID_) &&
-                   (!memcmp(&in_ie[cnt + 2], &wpa_oui[0], 4))) {
-                       memcpy(wpa_ie, &in_ie[cnt], in_ie[cnt + 1] + 2);
-                       *wpa_len = in_ie[cnt + 1] + 2;
-                       cnt += in_ie[cnt + 1] + 2;  /*get next */
-               } else {
-                       if (authmode == _WPA2_IE_ID_) {
-                               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*/
-                       } else {
-                               cnt += in_ie[cnt + 1] + 2;   /*get next*/
-                       }
-               }
-       }
-       return *rsn_len + *wpa_len;
-}
-
-int r8712_get_wps_ie(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen)
-{
-       int match;
-       uint cnt;
-       u8 eid, wps_oui[4] = {0x0, 0x50, 0xf2, 0x04};
-
-       cnt = 12;
-       match = false;
-       while (cnt < in_len) {
-               eid = in_ie[cnt];
-               if ((eid == _WPA_IE_ID_) &&
-                   (!memcmp(&in_ie[cnt + 2], wps_oui, 4))) {
-                       memcpy(wps_ie, &in_ie[cnt], in_ie[cnt + 1] + 2);
-                       *wps_ielen = in_ie[cnt + 1] + 2;
-                       cnt += in_ie[cnt + 1] + 2;
-                       match = true;
-                       break;
-               }
-               cnt += in_ie[cnt + 1] + 2; /* goto next */
-       }
-       return match;
-}
diff --git a/drivers/staging/rtl8712/ieee80211.h b/drivers/staging/rtl8712/ieee80211.h
deleted file mode 100644 (file)
index 65ceaca..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __IEEE80211_H
-#define __IEEE80211_H
-
-#include <linux/ieee80211.h>
-
-#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 AUTH_ALG_OPEN_SYSTEM                   0x1
-#define AUTH_ALG_SHARED_KEY                    0x2
-#define AUTH_ALG_LEAP                          0x00000004
-
-#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
-#define RSN_HEADER_LEN                         4
-
-#define RSN_SELECTOR_LEN 4
-
-enum NETWORK_TYPE {
-       WIRELESS_INVALID        = 0,
-       WIRELESS_11B            = 1,
-       WIRELESS_11G            = 2,
-       WIRELESS_11BG           = (WIRELESS_11B | WIRELESS_11G),
-       WIRELESS_11A            = 4,
-       WIRELESS_11N            = 8,
-       WIRELESS_11GN           = (WIRELESS_11G | WIRELESS_11N),
-       WIRELESS_11BGN          = (WIRELESS_11B | WIRELESS_11G | WIRELESS_11N),
-};
-
-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;
-       } u;
-};
-
-#define MIN_FRAG_THRESHOLD     256U
-#define        MAX_FRAG_THRESHOLD     2346U
-
-/* QoS,QOS */
-#define NORMAL_ACK                     0
-
-/* 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 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_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 WEP_KEYS 4
-
-/* 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_WPA_IE_LEN 128
-
-struct registry_priv;
-
-u8 *r8712_set_ie(u8 *pbuf, sint index, uint len, u8 *source, uint *frlen);
-u8 *r8712_get_ie(u8 *pbuf, sint index, uint *len, sint limit);
-unsigned char *r8712_get_wpa_ie(unsigned char *pie, uint *rsn_ie_len,
-                               int limit);
-unsigned char *r8712_get_wpa2_ie(unsigned char *pie, uint *rsn_ie_len,
-                                int limit);
-int r8712_parse_wpa_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher,
-                      int *pairwise_cipher);
-int r8712_parse_wpa2_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher,
-                       int *pairwise_cipher);
-int r8712_get_sec_ie(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len,
-                    u8 *wpa_ie, u16 *wpa_len);
-int r8712_get_wps_ie(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen);
-int r8712_generate_ie(struct registry_priv *pregistrypriv);
-uint r8712_is_cckrates_included(u8 *rate);
-uint r8712_is_cckratesonly_included(u8 *rate);
-
-#endif /* IEEE80211_H */
-
diff --git a/drivers/staging/rtl8712/mlme_linux.c b/drivers/staging/rtl8712/mlme_linux.c
deleted file mode 100644 (file)
index b9f5104..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * mlme_linux.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>.
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _MLME_OSDEP_C_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "mlme_osdep.h"
-
-static void sitesurvey_ctrl_handler(struct timer_list *t)
-{
-       struct _adapter *adapter =
-               from_timer(adapter, t,
-                          mlmepriv.sitesurveyctrl.sitesurvey_ctrl_timer);
-
-       _r8712_sitesurvey_ctrl_handler(adapter);
-       mod_timer(&adapter->mlmepriv.sitesurveyctrl.sitesurvey_ctrl_timer,
-                 jiffies + msecs_to_jiffies(3000));
-}
-
-static void join_timeout_handler (struct timer_list *t)
-{
-       struct _adapter *adapter =
-               from_timer(adapter, t, mlmepriv.assoc_timer);
-
-       _r8712_join_timeout_handler(adapter);
-}
-
-static void _scan_timeout_handler (struct timer_list *t)
-{
-       struct _adapter *adapter =
-               from_timer(adapter, t, mlmepriv.scan_to_timer);
-
-       r8712_scan_timeout_handler(adapter);
-}
-
-static void dhcp_timeout_handler (struct timer_list *t)
-{
-       struct _adapter *adapter =
-               from_timer(adapter, t, mlmepriv.dhcp_timer);
-
-       _r8712_dhcp_timeout_handler(adapter);
-}
-
-static void wdg_timeout_handler (struct timer_list *t)
-{
-       struct _adapter *adapter =
-               from_timer(adapter, t, mlmepriv.wdg_timer);
-
-       r8712_wdg_wk_cmd(adapter);
-
-       mod_timer(&adapter->mlmepriv.wdg_timer,
-                 jiffies + msecs_to_jiffies(2000));
-}
-
-void r8712_init_mlme_timer(struct _adapter *adapter)
-{
-       struct  mlme_priv *mlmepriv = &adapter->mlmepriv;
-
-       timer_setup(&mlmepriv->assoc_timer, join_timeout_handler, 0);
-       timer_setup(&mlmepriv->sitesurveyctrl.sitesurvey_ctrl_timer,
-                   sitesurvey_ctrl_handler, 0);
-       timer_setup(&mlmepriv->scan_to_timer, _scan_timeout_handler, 0);
-       timer_setup(&mlmepriv->dhcp_timer, dhcp_timeout_handler, 0);
-       timer_setup(&mlmepriv->wdg_timer, wdg_timeout_handler, 0);
-}
-
-void r8712_os_indicate_connect(struct _adapter *adapter)
-{
-       r8712_indicate_wx_assoc_event(adapter);
-       netif_carrier_on(adapter->pnetdev);
-}
-
-static struct RT_PMKID_LIST   backupPMKIDList[NUM_PMKID_CACHE];
-void r8712_os_indicate_disconnect(struct _adapter *adapter)
-{
-       u8 backupPMKIDIndex = 0;
-       u8 backupTKIPCountermeasure = 0x00;
-
-       r8712_indicate_wx_disassoc_event(adapter);
-       netif_carrier_off(adapter->pnetdev);
-       if (adapter->securitypriv.AuthAlgrthm == 2) { /*/802.1x*/
-               /* 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;
-               memset((unsigned char *)&adapter->securitypriv, 0,
-                      sizeof(struct security_priv));
-               timer_setup(&adapter->securitypriv.tkip_timer,
-                           r8712_use_tkipkey_handler, 0);
-               /* 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;
-       } else { /*reset values in securitypriv*/
-               struct security_priv *sec_priv = &adapter->securitypriv;
-
-               sec_priv->AuthAlgrthm = 0; /*open system*/
-               sec_priv->PrivacyAlgrthm = _NO_PRIVACY_;
-               sec_priv->PrivacyKeyIndex = 0;
-               sec_priv->XGrpPrivacy = _NO_PRIVACY_;
-               sec_priv->XGrpKeyid = 1;
-               sec_priv->ndisauthtype = Ndis802_11AuthModeOpen;
-               sec_priv->ndisencryptstatus = Ndis802_11WEPDisabled;
-               sec_priv->wps_phase = false;
-       }
-}
-
-void r8712_report_sec_ie(struct _adapter *adapter, u8 authmode, u8 *sec_ie)
-{
-       uint len;
-       u8 *buff, *p, i;
-       union iwreq_data wrqu;
-
-       buff = NULL;
-       if (authmode == _WPA_IE_ID_) {
-               buff = kzalloc(IW_CUSTOM_MAX, GFP_ATOMIC);
-               if (!buff)
-                       return;
-               p = buff;
-               p += sprintf(p, "ASSOCINFO(ReqIEs=");
-               len = sec_ie[1] + 2;
-               len =  (len < IW_CUSTOM_MAX) ? len : IW_CUSTOM_MAX;
-               for (i = 0; i < len; i++)
-                       p += sprintf(p, "%02x", sec_ie[i]);
-               p += sprintf(p, ")");
-               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;
-               wireless_send_event(adapter->pnetdev, IWEVCUSTOM, &wrqu, buff);
-               kfree(buff);
-       }
-}
diff --git a/drivers/staging/rtl8712/mlme_osdep.h b/drivers/staging/rtl8712/mlme_osdep.h
deleted file mode 100644 (file)
index a02c782..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef        __MLME_OSDEP_H_
-#define __MLME_OSDEP_H_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-
-void r8712_init_mlme_timer(struct _adapter *padapter);
-void r8712_os_indicate_disconnect(struct _adapter *adapter);
-void r8712_os_indicate_connect(struct _adapter *adapter);
-void r8712_report_sec_ie(struct _adapter *adapter, u8 authmode, u8 *sec_ie);
-int r8712_recv_indicatepkts_in_order(struct _adapter *adapter,
-                                    struct recv_reorder_ctrl *precvreorder_ctrl,
-                                    int bforced);
-void r8712_indicate_wx_assoc_event(struct _adapter *padapter);
-void r8712_indicate_wx_disassoc_event(struct _adapter *padapter);
-
-#endif /*_MLME_OSDEP_H_*/
-
diff --git a/drivers/staging/rtl8712/mp_custom_oid.h b/drivers/staging/rtl8712/mp_custom_oid.h
deleted file mode 100644 (file)
index a9fac87..0000000
+++ /dev/null
@@ -1,287 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef        __CUSTOM_OID_H
-#define __CUSTOM_OID_H
-
-/* 0xFF818000 - 0xFF81802F             RTL8180 Mass Production Kit
- * 0xFF818500 - 0xFF81850F             RTL8185 Setup Utility
- * 0xFF818580 - 0xFF81858F             RTL8185 Phy Status Utility
- *
- * by Owen for Production Kit
- * For Production Kit with Agilent Equipments
- * in order to make our custom oids hopefully somewhat unique
- * we will use 0xFF (indicating implementation specific OID)
- *      81(first byte of non zero Realtek unique identifier)
- *      80 (second byte of non zero Realtek unique identifier)
- *      XX (the custom OID number - providing 255 possible custom oids)
- */
-#define OID_RT_PRO_RESET_DUT                           0xFF818000
-#define OID_RT_PRO_SET_DATA_RATE                       0xFF818001
-#define OID_RT_PRO_START_TEST                          0xFF818002
-#define OID_RT_PRO_STOP_TEST                           0xFF818003
-#define OID_RT_PRO_SET_PREAMBLE                                0xFF818004
-#define OID_RT_PRO_SET_SCRAMBLER                       0xFF818005
-#define OID_RT_PRO_SET_FILTER_BB                       0xFF818006
-#define OID_RT_PRO_SET_MANUAL_DIVERSITY_BB             0xFF818007
-#define OID_RT_PRO_SET_CHANNEL_DIRECT_CALL             0xFF818008
-#define OID_RT_PRO_SET_SLEEP_MODE_DIRECT_CALL          0xFF818009
-#define OID_RT_PRO_SET_WAKE_MODE_DIRECT_CALL           0xFF81800A
-
-#define OID_RT_PRO_SET_TX_ANTENNA_BB                   0xFF81800D
-#define OID_RT_PRO_SET_ANTENNA_BB                      0xFF81800E
-#define OID_RT_PRO_SET_CR_SCRAMBLER                    0xFF81800F
-#define OID_RT_PRO_SET_CR_NEW_FILTER                   0xFF818010
-#define OID_RT_PRO_SET_TX_POWER_CONTROL                        0xFF818011
-#define OID_RT_PRO_SET_CR_TX_CONFIG                    0xFF818012
-#define OID_RT_PRO_GET_TX_POWER_CONTROL                        0xFF818013
-#define OID_RT_PRO_GET_CR_SIGNAL_QUALITY               0xFF818014
-#define OID_RT_PRO_SET_CR_SETPOINT                     0xFF818015
-#define OID_RT_PRO_SET_INTEGRATOR                      0xFF818016
-#define OID_RT_PRO_SET_SIGNAL_QUALITY                  0xFF818017
-#define OID_RT_PRO_GET_INTEGRATOR                      0xFF818018
-#define OID_RT_PRO_GET_SIGNAL_QUALITY                  0xFF818019
-#define OID_RT_PRO_QUERY_EEPROM_TYPE                   0xFF81801A
-#define OID_RT_PRO_WRITE_MAC_ADDRESS                   0xFF81801B
-#define OID_RT_PRO_READ_MAC_ADDRESS                    0xFF81801C
-#define OID_RT_PRO_WRITE_CIS_DATA                      0xFF81801D
-#define OID_RT_PRO_READ_CIS_DATA                       0xFF81801E
-#define OID_RT_PRO_WRITE_POWER_CONTROL                 0xFF81801F
-#define OID_RT_PRO_READ_POWER_CONTROL                  0xFF818020
-#define OID_RT_PRO_WRITE_EEPROM                                0xFF818021
-#define OID_RT_PRO_READ_EEPROM                         0xFF818022
-#define OID_RT_PRO_RESET_TX_PACKET_SENT                        0xFF818023
-#define OID_RT_PRO_QUERY_TX_PACKET_SENT                        0xFF818024
-#define OID_RT_PRO_RESET_RX_PACKET_RECEIVED            0xFF818025
-#define OID_RT_PRO_QUERY_RX_PACKET_RECEIVED            0xFF818026
-#define OID_RT_PRO_QUERY_RX_PACKET_CRC32_ERROR         0xFF818027
-#define OID_RT_PRO_QUERY_CURRENT_ADDRESS               0xFF818028
-#define OID_RT_PRO_QUERY_PERMANENT_ADDRESS             0xFF818029
-#define OID_RT_PRO_SET_PHILIPS_RF_PARAMETERS           0xFF81802A
-#define OID_RT_PRO_RECEIVE_PACKET                      0xFF81802C
-#define OID_RT_PRO_WRITE_EEPROM_BYTE                   0xFF81802D
-#define OID_RT_PRO_READ_EEPROM_BYTE                    0xFF81802E
-#define OID_RT_PRO_SET_MODULATION                      0xFF81802F
-#define OID_RT_DRIVER_OPTION                           0xFF818080
-#define OID_RT_RF_OFF                                  0xFF818081
-#define OID_RT_AUTH_STATUS                             0xFF818082
-#define OID_RT_PRO_SET_CONTINUOUS_TX                   0xFF81800B
-#define OID_RT_PRO_SET_SINGLE_CARRIER_TX               0xFF81800C
-#define OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX          0xFF81802B
-#define OID_RT_PRO_SET_SINGLE_TONE_TX                  0xFF818043
-#define OID_RT_UTILITY_FALSE_ALARM_COUNTERS            0xFF818580
-#define OID_RT_UTILITY_SELECT_DEBUG_MODE               0xFF818581
-#define OID_RT_UTILITY_SELECT_SUBCARRIER_NUMBER                0xFF818582
-#define OID_RT_UTILITY_GET_RSSI_STATUS                 0xFF818583
-#define OID_RT_UTILITY_GET_FRAME_DETECTION_STATUS      0xFF818584
-#define OID_RT_UTILITY_GET_AGC_AND_FREQUENCY_OFFSET_ESTIMATION_STATUS \
-                                                       0xFF818585
-#define OID_RT_UTILITY_GET_CHANNEL_ESTIMATION_STATUS   0xFF818586
-#define OID_RT_WIRELESS_MODE                           0xFF818500
-#define OID_RT_SUPPORTED_RATES                         0xFF818501
-#define OID_RT_DESIRED_RATES                           0xFF818502
-#define OID_RT_WIRELESS_MODE_STARTING_ADHOC            0xFF818503
-#define OID_RT_GET_CONNECT_STATE                       0xFF030001
-#define OID_RT_RESCAN                                  0xFF030002
-#define OID_RT_SET_KEY_LENGTH                          0xFF030003
-#define OID_RT_SET_DEFAULT_KEY_ID                      0xFF030004
-#define OID_RT_SET_CHANNEL                             0xFF010182
-#define OID_RT_SET_SNIFFER_MODE                                0xFF010183
-#define OID_RT_GET_SIGNAL_QUALITY                      0xFF010184
-#define OID_RT_GET_SMALL_PACKET_CRC                    0xFF010185
-#define OID_RT_GET_MIDDLE_PACKET_CRC                   0xFF010186
-#define OID_RT_GET_LARGE_PACKET_CRC                    0xFF010187
-#define OID_RT_GET_TX_RETRY                            0xFF010188
-#define OID_RT_GET_RX_RETRY                            0xFF010189
-#define OID_RT_PRO_SET_FW_DIG_STATE                    0xFF01018A
-#define OID_RT_PRO_SET_FW_RA_STATE                     0xFF01018B
-#define OID_RT_GET_RX_TOTAL_PACKET                     0xFF010190
-#define OID_RT_GET_TX_BEACON_OK                                0xFF010191
-#define OID_RT_GET_TX_BEACON_ERR                       0xFF010192
-#define OID_RT_GET_RX_ICV_ERR                          0xFF010193
-#define OID_RT_SET_ENCRYPTION_ALGORITHM                        0xFF010194
-#define OID_RT_SET_NO_AUTO_RESCAN                      0xFF010195
-#define OID_RT_GET_PREAMBLE_MODE                       0xFF010196
-#define OID_RT_GET_DRIVER_UP_DELTA_TIME                        0xFF010197
-#define OID_RT_GET_AP_IP                               0xFF010198
-#define OID_RT_GET_CHANNELPLAN                         0xFF010199
-#define OID_RT_SET_PREAMBLE_MODE                       0xFF01019A
-#define OID_RT_SET_BCN_INTVL                           0xFF01019B
-#define OID_RT_GET_RF_VENDER                           0xFF01019C
-#define OID_RT_DEDICATE_PROBE                          0xFF01019D
-#define OID_RT_PRO_RX_FILTER_PATTERN                   0xFF01019E
-#define OID_RT_GET_DCST_CURRENT_THRESHOLD              0xFF01019F
-#define OID_RT_GET_CCA_ERR                             0xFF0101A0
-#define OID_RT_GET_CCA_UPGRADE_THRESHOLD               0xFF0101A1
-#define OID_RT_GET_CCA_FALLBACK_THRESHOLD              0xFF0101A2
-#define OID_RT_GET_CCA_UPGRADE_EVALUATE_TIMES          0xFF0101A3
-#define OID_RT_GET_CCA_FALLBACK_EVALUATE_TIMES         0xFF0101A4
-#define OID_RT_SET_RATE_ADAPTIVE                       0xFF0101A5
-#define OID_RT_GET_DCST_EVALUATE_PERIOD                        0xFF0101A5
-#define OID_RT_GET_DCST_TIME_UNIT_INDEX                        0xFF0101A6
-#define OID_RT_GET_TOTAL_TX_BYTES                      0xFF0101A7
-#define OID_RT_GET_TOTAL_RX_BYTES                      0xFF0101A8
-#define OID_RT_CURRENT_TX_POWER_LEVEL                  0xFF0101A9
-#define OID_RT_GET_ENC_KEY_MISMATCH_COUNT              0xFF0101AA
-#define OID_RT_GET_ENC_KEY_MATCH_COUNT                 0xFF0101AB
-#define OID_RT_GET_CHANNEL                             0xFF0101AC
-#define OID_RT_SET_CHANNELPLAN                         0xFF0101AD
-#define OID_RT_GET_HARDWARE_RADIO_OFF                  0xFF0101AE
-#define OID_RT_CHANNELPLAN_BY_COUNTRY                  0xFF0101AF
-#define OID_RT_SCAN_AVAILABLE_BSSID                    0xFF0101B0
-#define OID_RT_GET_HARDWARE_VERSION                    0xFF0101B1
-#define OID_RT_GET_IS_ROAMING                          0xFF0101B2
-#define OID_RT_GET_IS_PRIVACY                          0xFF0101B3
-#define OID_RT_GET_KEY_MISMATCH                                0xFF0101B4
-#define OID_RT_SET_RSSI_ROAM_TRAFFIC_TH                        0xFF0101B5
-#define OID_RT_SET_RSSI_ROAM_SIGNAL_TH                 0xFF0101B6
-#define OID_RT_RESET_LOG                               0xFF0101B7
-#define OID_RT_GET_LOG                                 0xFF0101B8
-#define OID_RT_SET_INDICATE_HIDDEN_AP                  0xFF0101B9
-#define OID_RT_GET_HEADER_FAIL                         0xFF0101BA
-#define OID_RT_SUPPORTED_WIRELESS_MODE                 0xFF0101BB
-#define OID_RT_GET_CHANNEL_LIST                                0xFF0101BC
-#define OID_RT_GET_SCAN_IN_PROGRESS                    0xFF0101BD
-#define OID_RT_GET_TX_INFO                             0xFF0101BE
-#define OID_RT_RF_READ_WRITE_OFFSET                    0xFF0101BF
-#define OID_RT_RF_READ_WRITE                           0xFF0101C0
-#define OID_RT_FORCED_DATA_RATE                                0xFF0101C1
-#define OID_RT_WIRELESS_MODE_FOR_SCAN_LIST             0xFF0101C2
-#define OID_RT_GET_BSS_WIRELESS_MODE                   0xFF0101C3
-#define OID_RT_SCAN_WITH_MAGIC_PACKET                  0xFF0101C4
-#define OID_RT_PRO_RX_FILTER                           0xFF0111C0
-#define OID_CE_USB_WRITE_REGISTRY                      0xFF0111C1
-#define OID_CE_USB_READ_REGISTRY                       0xFF0111C2
-#define OID_RT_PRO_SET_INITIAL_GAIN                    0xFF0111C3
-#define OID_RT_PRO_SET_BB_RF_STANDBY_MODE              0xFF0111C4
-#define OID_RT_PRO_SET_BB_RF_SHUTDOWN_MODE             0xFF0111C5
-#define OID_RT_PRO_SET_TX_CHARGE_PUMP                  0xFF0111C6
-#define OID_RT_PRO_SET_RX_CHARGE_PUMP                  0xFF0111C7
-#define OID_RT_PRO_RF_WRITE_REGISTRY                   0xFF0111C8
-#define OID_RT_PRO_RF_READ_REGISTRY                    0xFF0111C9
-#define OID_RT_PRO_QUERY_RF_TYPE                       0xFF0111CA
-#define OID_RT_AP_GET_ASSOCIATED_STATION_LIST          0xFF010300
-#define OID_RT_AP_GET_CURRENT_TIME_STAMP               0xFF010301
-#define OID_RT_AP_SWITCH_INTO_AP_MODE                  0xFF010302
-#define OID_RT_AP_SET_DTIM_PERIOD                      0xFF010303
-#define OID_RT_AP_SUPPORTED                            0xFF010304
-#define OID_RT_AP_SET_PASSPHRASE                       0xFF010305
-#define OID_RT_PRO8187_WI_POLL                         0xFF818780
-#define OID_RT_PRO_WRITE_BB_REG                                0xFF818781
-#define OID_RT_PRO_READ_BB_REG                         0xFF818782
-#define OID_RT_PRO_WRITE_RF_REG                                0xFF818783
-#define OID_RT_PRO_READ_RF_REG                         0xFF818784
-#define OID_RT_MH_VENDER_ID                            0xFFEDC100
-#define OID_RT_PRO8711_JOIN_BSS                                0xFF871100
-#define OID_RT_PRO_READ_REGISTER                       0xFF871101
-#define OID_RT_PRO_WRITE_REGISTER                      0xFF871102
-#define OID_RT_PRO_BURST_READ_REGISTER                 0xFF871103
-#define OID_RT_PRO_BURST_WRITE_REGISTER                        0xFF871104
-#define OID_RT_PRO_WRITE_TXCMD                         0xFF871105
-#define OID_RT_PRO_READ16_EEPROM                       0xFF871106
-#define OID_RT_PRO_WRITE16_EEPROM                      0xFF871107
-#define OID_RT_PRO_H2C_SET_COMMAND                     0xFF871108
-#define OID_RT_PRO_H2C_QUERY_RESULT                    0xFF871109
-#define OID_RT_PRO8711_WI_POLL                         0xFF87110A
-#define OID_RT_PRO8711_PKT_LOSS                                0xFF87110B
-#define OID_RT_RD_ATTRIB_MEM                           0xFF87110C
-#define OID_RT_WR_ATTRIB_MEM                           0xFF87110D
-/*Method 2 for H2C/C2H*/
-#define OID_RT_PRO_H2C_CMD_MODE                                0xFF871110
-#define OID_RT_PRO_H2C_CMD_RSP_MODE                    0xFF871111
-#define OID_RT_PRO_H2C_CMD_EVENT_MODE                  0xFF871112
-#define OID_RT_PRO_WAIT_C2H_EVENT                      0xFF871113
-#define OID_RT_PRO_RW_ACCESS_PROTOCOL_TEST             0xFF871114
-#define OID_RT_PRO_SCSI_ACCESS_TEST                    0xFF871115
-#define OID_RT_PRO_SCSI_TCPIPOFFLOAD_OUT               0xFF871116
-#define OID_RT_PRO_SCSI_TCPIPOFFLOAD_IN                        0xFF871117
-#define OID_RT_RRO_RX_PKT_VIA_IOCTRL                   0xFF871118
-#define OID_RT_RRO_RX_PKTARRAY_VIA_IOCTRL              0xFF871119
-#define OID_RT_RPO_SET_PWRMGT_TEST                     0xFF87111A
-#define OID_RT_PRO_QRY_PWRMGT_TEST                     0XFF87111B
-#define OID_RT_RPO_ASYNC_RWIO_TEST                     0xFF87111C
-#define OID_RT_RPO_ASYNC_RWIO_POLL                     0xFF87111D
-#define OID_RT_PRO_SET_RF_INTFS                                0xFF87111E
-#define OID_RT_POLL_RX_STATUS                          0xFF87111F
-#define OID_RT_PRO_CFG_DEBUG_MESSAGE                   0xFF871120
-#define OID_RT_PRO_SET_DATA_RATE_EX                    0xFF871121
-#define OID_RT_PRO_SET_BASIC_RATE                      0xFF871122
-#define OID_RT_PRO_READ_TSSI                           0xFF871123
-#define OID_RT_PRO_SET_POWER_TRACKING                  0xFF871124
-#define OID_RT_PRO_QRY_PWRSTATE                                0xFF871150
-#define OID_RT_PRO_SET_PWRSTATE                                0xFF871151
-/*Method 2 , using workitem */
-#define OID_RT_SET_READ_REG                            0xFF871181
-#define OID_RT_SET_WRITE_REG                           0xFF871182
-#define OID_RT_SET_BURST_READ_REG                      0xFF871183
-#define OID_RT_SET_BURST_WRITE_REG                     0xFF871184
-#define OID_RT_SET_WRITE_TXCMD                         0xFF871185
-#define OID_RT_SET_READ16_EEPROM                       0xFF871186
-#define OID_RT_SET_WRITE16_EEPROM                      0xFF871187
-#define OID_RT_QRY_POLL_WKITEM                         0xFF871188
-
-/*For SDIO INTERFACE only*/
-#define OID_RT_PRO_SYNCPAGERW_SRAM                     0xFF8711A0
-#define OID_RT_PRO_871X_DRV_EXT                                0xFF8711A1
-
-/*For USB INTERFACE only*/
-#define OID_RT_PRO_USB_VENDOR_REQ                      0xFF8711B0
-#define OID_RT_PRO_SCSI_AUTO_TEST                      0xFF8711B1
-#define OID_RT_PRO_USB_MAC_AC_FIFO_WRITE               0xFF8711B2
-#define OID_RT_PRO_USB_MAC_RX_FIFO_READ                        0xFF8711B3
-#define OID_RT_PRO_USB_MAC_RX_FIFO_POLLING             0xFF8711B4
-
-#define OID_RT_PRO_H2C_SET_RATE_TABLE                  0xFF8711FB
-#define OID_RT_PRO_H2C_GET_RATE_TABLE                  0xFF8711FC
-#define OID_RT_PRO_H2C_C2H_LBK_TEST                    0xFF8711FE
-
-#define OID_RT_PRO_ENCRYPTION_CTRL                     0xFF871200
-#define OID_RT_PRO_ADD_STA_INFO                                0xFF871201
-#define OID_RT_PRO_DELE_STA_INFO                       0xFF871202
-#define OID_RT_PRO_QUERY_DR_VARIABLE                   0xFF871203
-
-#define OID_RT_PRO_RX_PACKET_TYPE                      0xFF871204
-
-#define OID_RT_PRO_READ_EFUSE                          0xFF871205
-#define OID_RT_PRO_WRITE_EFUSE                         0xFF871206
-#define OID_RT_PRO_RW_EFUSE_PGPKT                      0xFF871207
-#define OID_RT_GET_EFUSE_CURRENT_SIZE                  0xFF871208
-
-#define OID_RT_SET_BANDWIDTH                           0xFF871209
-#define OID_RT_SET_CRYSTAL_CAP                         0xFF87120A
-
-#define OID_RT_SET_RX_PACKET_TYPE                      0xFF87120B
-
-#define OID_RT_GET_EFUSE_MAX_SIZE                      0xFF87120C
-
-#define OID_RT_PRO_SET_TX_AGC_OFFSET                   0xFF87120D
-
-#define OID_RT_PRO_SET_PKT_TEST_MODE                   0xFF87120E
-
-#define OID_RT_PRO_FOR_EVM_TEST_SETTING                        0xFF87120F
-
-#define OID_RT_PRO_GET_THERMAL_METER                   0xFF871210
-
-#define OID_RT_RESET_PHY_RX_PACKET_COUNT               0xFF871211
-#define OID_RT_GET_PHY_RX_PACKET_RECEIVED              0xFF871212
-#define OID_RT_GET_PHY_RX_PACKET_CRC32_ERROR           0xFF871213
-
-#define OID_RT_SET_POWER_DOWN                          0xFF871214
-
-#define OID_RT_GET_POWER_MODE                          0xFF871215
-
-#define OID_RT_PRO_EFUSE                               0xFF871216
-#define OID_RT_PRO_EFUSE_MAP                           0xFF871217
-
-#endif /*#ifndef __CUSTOM_OID_H */
-
diff --git a/drivers/staging/rtl8712/os_intfs.c b/drivers/staging/rtl8712/os_intfs.c
deleted file mode 100644 (file)
index 3ea70d0..0000000
+++ /dev/null
@@ -1,465 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * os_intfs.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>.
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _OS_INTFS_C_
-
-#include <linux/module.h>
-#include <linux/kthread.h>
-#include <linux/firmware.h>
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "xmit_osdep.h"
-#include "recv_osdep.h"
-#include "rtl871x_ioctl.h"
-#include "usb_osintf.h"
-
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("rtl871x wireless lan driver");
-MODULE_AUTHOR("Larry Finger");
-
-static char ifname[IFNAMSIZ] = "wlan%d";
-
-/* module param defaults */
-static int chip_version = RTL8712_2ndCUT;
-static int rfintfs = HWPI;
-static int lbkmode = RTL8712_AIR_TRX;
-static int hci = RTL8712_USB;
-static int ampdu_enable = 1;/*for enable tx_ampdu*/
-
-/* The video_mode variable is for video mode.*/
-/* It may be specify when inserting module with video_mode=1 parameter.*/
-static int video_mode = 1;   /* enable video mode*/
-
-/*Ndis802_11Infrastructure; infra, ad-hoc, auto*/
-static int network_mode = Ndis802_11IBSS;
-static int channel = 1;/*ad-hoc support requirement*/
-static int wireless_mode = WIRELESS_11BG;
-static int vrtl_carrier_sense = AUTO_VCS;
-static int vcs_type = RTS_CTS;
-static int frag_thresh = 2346;
-static int preamble = PREAMBLE_LONG;/*long, short, auto*/
-static int scan_mode = 1;/*active, passive*/
-static int adhoc_tx_pwr = 1;
-static int soft_ap;
-static int smart_ps = 1;
-static int power_mgnt = PS_MODE_ACTIVE;
-static int radio_enable = 1;
-static int long_retry_lmt = 7;
-static int short_retry_lmt = 7;
-static int busy_thresh = 40;
-static int ack_policy = NORMAL_ACK;
-static int mp_mode;
-static int software_encrypt;
-static int software_decrypt;
-
-static int wmm_enable;/* default is set to disable the wmm.*/
-static int uapsd_enable;
-static int uapsd_max_sp = NO_LIMIT;
-static int uapsd_acbk_en;
-static int uapsd_acbe_en;
-static int uapsd_acvi_en;
-static int uapsd_acvo_en;
-
-static int ht_enable = 1;
-static int cbw40_enable = 1;
-static int rf_config = RTL8712_RF_1T2R;  /* 1T2R*/
-static int low_power;
-/* mac address to use instead of the one stored in Efuse */
-char *r8712_initmac;
-static char *initmac;
-/* if wifi_test = 1, driver will disable the turbo mode and pass it to
- * firmware private.
- */
-static int wifi_test;
-
-module_param_string(ifname, ifname, sizeof(ifname), 0644);
-module_param(wifi_test, int, 0644);
-module_param(initmac, charp, 0644);
-module_param(video_mode, int, 0644);
-module_param(chip_version, int, 0644);
-module_param(rfintfs, int, 0644);
-module_param(lbkmode, int, 0644);
-module_param(hci, int, 0644);
-module_param(network_mode, int, 0644);
-module_param(channel, int, 0644);
-module_param(mp_mode, int, 0644);
-module_param(wmm_enable, int, 0644);
-module_param(vrtl_carrier_sense, int, 0644);
-module_param(vcs_type, int, 0644);
-module_param(busy_thresh, int, 0644);
-module_param(ht_enable, int, 0644);
-module_param(cbw40_enable, int, 0644);
-module_param(ampdu_enable, int, 0644);
-module_param(rf_config, int, 0644);
-module_param(power_mgnt, int, 0644);
-module_param(low_power, int, 0644);
-
-MODULE_PARM_DESC(ifname, " Net interface name, wlan%d=default");
-MODULE_PARM_DESC(initmac, "MAC-Address, default: use FUSE");
-
-static int netdev_open(struct net_device *pnetdev);
-static int netdev_close(struct net_device *pnetdev);
-
-static void loadparam(struct _adapter *padapter, struct  net_device *pnetdev)
-{
-       struct registry_priv  *registry_par = &padapter->registrypriv;
-
-       registry_par->chip_version = (u8)chip_version;
-       registry_par->rfintfs = (u8)rfintfs;
-       registry_par->lbkmode = (u8)lbkmode;
-       registry_par->hci = (u8)hci;
-       registry_par->network_mode  = (u8)network_mode;
-       memcpy(registry_par->ssid.Ssid, "ANY", 3);
-       registry_par->ssid.SsidLength = 3;
-       registry_par->channel = (u8)channel;
-       registry_par->wireless_mode = (u8)wireless_mode;
-       registry_par->vrtl_carrier_sense = (u8)vrtl_carrier_sense;
-       registry_par->vcs_type = (u8)vcs_type;
-       registry_par->frag_thresh = (u16)frag_thresh;
-       registry_par->preamble = (u8)preamble;
-       registry_par->scan_mode = (u8)scan_mode;
-       registry_par->adhoc_tx_pwr = (u8)adhoc_tx_pwr;
-       registry_par->soft_ap = (u8)soft_ap;
-       registry_par->smart_ps = (u8)smart_ps;
-       registry_par->power_mgnt = (u8)power_mgnt;
-       registry_par->radio_enable = (u8)radio_enable;
-       registry_par->long_retry_lmt = (u8)long_retry_lmt;
-       registry_par->short_retry_lmt = (u8)short_retry_lmt;
-       registry_par->busy_thresh = (u16)busy_thresh;
-       registry_par->ack_policy = (u8)ack_policy;
-       registry_par->mp_mode = (u8)mp_mode;
-       registry_par->software_encrypt = (u8)software_encrypt;
-       registry_par->software_decrypt = (u8)software_decrypt;
-       /*UAPSD*/
-       registry_par->wmm_enable = (u8)wmm_enable;
-       registry_par->uapsd_enable = (u8)uapsd_enable;
-       registry_par->uapsd_max_sp = (u8)uapsd_max_sp;
-       registry_par->uapsd_acbk_en = (u8)uapsd_acbk_en;
-       registry_par->uapsd_acbe_en = (u8)uapsd_acbe_en;
-       registry_par->uapsd_acvi_en = (u8)uapsd_acvi_en;
-       registry_par->uapsd_acvo_en = (u8)uapsd_acvo_en;
-       registry_par->ht_enable = (u8)ht_enable;
-       registry_par->cbw40_enable = (u8)cbw40_enable;
-       registry_par->ampdu_enable = (u8)ampdu_enable;
-       registry_par->rf_config = (u8)rf_config;
-       registry_par->low_power = (u8)low_power;
-       registry_par->wifi_test = (u8)wifi_test;
-       r8712_initmac = initmac;
-}
-
-static int r871x_net_set_mac_address(struct net_device *pnetdev, void *p)
-{
-       struct _adapter *padapter = netdev_priv(pnetdev);
-       struct sockaddr *addr = p;
-
-       if (!padapter->bup)
-               eth_hw_addr_set(pnetdev, addr->sa_data);
-       return 0;
-}
-
-static struct net_device_stats *r871x_net_get_stats(struct net_device *pnetdev)
-{
-       struct _adapter *padapter = netdev_priv(pnetdev);
-       struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-       struct recv_priv *precvpriv = &padapter->recvpriv;
-
-       padapter->stats.tx_packets = pxmitpriv->tx_pkts;
-       padapter->stats.rx_packets = 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;
-}
-
-static const struct net_device_ops rtl8712_netdev_ops = {
-       .ndo_open = netdev_open,
-       .ndo_stop = netdev_close,
-       .ndo_start_xmit = r8712_xmit_entry,
-       .ndo_set_mac_address = r871x_net_set_mac_address,
-       .ndo_get_stats = r871x_net_get_stats,
-       .ndo_do_ioctl = r871x_ioctl,
-};
-
-struct net_device *r8712_init_netdev(void)
-{
-       struct _adapter *padapter;
-       struct net_device *pnetdev;
-
-       pnetdev = alloc_etherdev(sizeof(struct _adapter));
-       if (!pnetdev)
-               return NULL;
-       if (dev_alloc_name(pnetdev, ifname) < 0) {
-               strscpy(ifname, "wlan%d", sizeof(ifname));
-               dev_alloc_name(pnetdev, ifname);
-       }
-       padapter = netdev_priv(pnetdev);
-       padapter->pnetdev = pnetdev;
-       pr_info("r8712u: register rtl8712_netdev_ops to netdev_ops\n");
-       pnetdev->netdev_ops = &rtl8712_netdev_ops;
-       pnetdev->watchdog_timeo = HZ; /* 1 second timeout */
-       pnetdev->wireless_handlers = (struct iw_handler_def *)
-                                    &r871x_handlers_def;
-       loadparam(padapter, pnetdev);
-       netif_carrier_off(pnetdev);
-       padapter->pid = 0;  /* Initial the PID value used for HW PBC.*/
-       return pnetdev;
-}
-
-static u32 start_drv_threads(struct _adapter *padapter)
-{
-       padapter->cmd_thread = kthread_run(r8712_cmd_thread, padapter, "%s",
-                                         padapter->pnetdev->name);
-       if (IS_ERR(padapter->cmd_thread))
-               return _FAIL;
-       return _SUCCESS;
-}
-
-void r8712_stop_drv_threads(struct _adapter *padapter)
-{
-       struct completion *completion =
-               &padapter->cmdpriv.terminate_cmdthread_comp;
-
-       /*Below is to terminate r8712_cmd_thread & event_thread...*/
-       complete(&padapter->cmdpriv.cmd_queue_comp);
-       if (padapter->cmd_thread)
-               wait_for_completion_interruptible(completion);
-       padapter->cmdpriv.cmd_seq = 1;
-}
-
-static void start_drv_timers(struct _adapter *padapter)
-{
-       mod_timer(&padapter->mlmepriv.sitesurveyctrl.sitesurvey_ctrl_timer,
-                 jiffies + msecs_to_jiffies(5000));
-       mod_timer(&padapter->mlmepriv.wdg_timer,
-                 jiffies + msecs_to_jiffies(2000));
-}
-
-void r8712_stop_drv_timers(struct _adapter *padapter)
-{
-       del_timer_sync(&padapter->mlmepriv.assoc_timer);
-       del_timer_sync(&padapter->securitypriv.tkip_timer);
-       del_timer_sync(&padapter->mlmepriv.scan_to_timer);
-       del_timer_sync(&padapter->mlmepriv.dhcp_timer);
-       del_timer_sync(&padapter->mlmepriv.wdg_timer);
-       del_timer_sync(&padapter->mlmepriv.sitesurveyctrl.sitesurvey_ctrl_timer);
-}
-
-static void 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;
-       /* mlme_priv */
-       /* Maybe someday we should rename this variable to "active_mode"(Jeff)*/
-       pmlmepriv->passive_mode = 1; /* 1: active, 0: passive. */
-       /*ht_priv*/
-       {
-               int i;
-               struct ht_priv   *phtpriv = &pmlmepriv->htpriv;
-
-               phtpriv->ampdu_enable = false;/*set to disabled*/
-               for (i = 0; i < 16; i++)
-                       phtpriv->baddbareq_issued[i] = false;
-       }
-       /*security_priv*/
-       psecuritypriv->sw_encrypt = pregistrypriv->software_encrypt;
-       psecuritypriv->sw_decrypt = pregistrypriv->software_decrypt;
-       psecuritypriv->binstallGrpkey = _FAIL;
-       /*pwrctrl_priv*/
-       /*registry_priv*/
-       r8712_init_registrypriv_dev_network(padapter);
-       r8712_update_registrypriv_dev_network(padapter);
-       /*misc.*/
-}
-
-int r8712_init_drv_sw(struct _adapter *padapter)
-{
-       int ret;
-
-       ret = r8712_init_cmd_priv(&padapter->cmdpriv);
-       if (ret)
-               return ret;
-       padapter->cmdpriv.padapter = padapter;
-       ret = r8712_init_evt_priv(&padapter->evtpriv);
-       if (ret)
-               return ret;
-       ret = r8712_init_mlme_priv(padapter);
-       if (ret)
-               return ret;
-       _r8712_init_xmit_priv(&padapter->xmitpriv, padapter);
-       _r8712_init_recv_priv(&padapter->recvpriv, padapter);
-       memset((unsigned char *)&padapter->securitypriv, 0,
-              sizeof(struct security_priv));
-       timer_setup(&padapter->securitypriv.tkip_timer,
-                   r8712_use_tkipkey_handler, 0);
-       ret = _r8712_init_sta_priv(&padapter->stapriv);
-       if (ret)
-               return ret;
-       padapter->stapriv.padapter = padapter;
-       r8712_init_bcmc_stainfo(padapter);
-       r8712_init_pwrctrl_priv(padapter);
-       mp871xinit(padapter);
-       init_default_value(padapter);
-       r8712_InitSwLeds(padapter);
-       mutex_init(&padapter->mutex_start);
-       return ret;
-}
-
-void r8712_free_drv_sw(struct _adapter *padapter)
-{
-       r8712_free_cmd_priv(&padapter->cmdpriv);
-       r8712_free_evt_priv(&padapter->evtpriv);
-       r8712_DeInitSwLeds(padapter);
-       r8712_free_mlme_priv(&padapter->mlmepriv);
-       _free_xmit_priv(&padapter->xmitpriv);
-       _r8712_free_sta_priv(&padapter->stapriv);
-       _r8712_free_recv_priv(&padapter->recvpriv);
-       mp871xdeinit(padapter);
-}
-
-static void enable_video_mode(struct _adapter *padapter, int cbw40_value)
-{
-       /*   bit 8:
-        *   1 -> enable video mode to 96B AP
-        *   0 -> disable video mode to 96B AP
-        *   bit 9:
-        *   1 -> enable 40MHz mode
-        *   0 -> disable 40MHz mode
-        *   bit 10:
-        *   1 -> enable STBC
-        *   0 -> disable STBC
-        */
-       u32  intcmd = 0xf4000500;   /* enable bit8, bit10*/
-
-       if (cbw40_value) {
-               /* if the driver supports the 40M bandwidth,
-                * we can enable the bit 9.
-                */
-               intcmd |= 0x200;
-       }
-       r8712_fw_cmd(padapter, intcmd);
-}
-
-/*
- *
- * This function intends to handle the activation of an interface
- * i.e. when it is brought Up/Active from a Down state.
- *
- */
-static int netdev_open(struct net_device *pnetdev)
-{
-       struct _adapter *padapter = netdev_priv(pnetdev);
-
-       mutex_lock(&padapter->mutex_start);
-       if (!padapter->bup) {
-               padapter->driver_stopped = false;
-               padapter->surprise_removed = false;
-               padapter->bup = true;
-               if (rtl871x_hal_init(padapter) != _SUCCESS)
-                       goto netdev_open_error;
-               if (!r8712_initmac) {
-                       /* Use the mac address stored in the Efuse */
-                       eth_hw_addr_set(pnetdev,
-                                       padapter->eeprompriv.mac_addr);
-               } else {
-                       /* We have to inform f/w to use user-supplied MAC
-                        * address.
-                        */
-                       msleep(200);
-                       r8712_setMacAddr_cmd(padapter,
-                                            (const u8 *)pnetdev->dev_addr);
-                       /*
-                        * The "myid" function will get the wifi mac address
-                        * from eeprompriv structure instead of netdev
-                        * structure. So, we have to overwrite the mac_addr
-                        * stored in the eeprompriv structure. In this case,
-                        * the real mac address won't be used anymore. So that,
-                        * the eeprompriv.mac_addr should store the mac which
-                        * users specify.
-                        */
-                       memcpy(padapter->eeprompriv.mac_addr,
-                              pnetdev->dev_addr, ETH_ALEN);
-               }
-               if (start_drv_threads(padapter) != _SUCCESS)
-                       goto netdev_open_error;
-               if (!padapter->dvobjpriv.inirp_init)
-                       goto netdev_open_error;
-               else
-                       padapter->dvobjpriv.inirp_init(padapter);
-               r8712_set_ps_mode(padapter, padapter->registrypriv.power_mgnt,
-                                 padapter->registrypriv.smart_ps);
-       }
-       if (!netif_queue_stopped(pnetdev))
-               netif_start_queue(pnetdev);
-       else
-               netif_wake_queue(pnetdev);
-
-       if (video_mode)
-               enable_video_mode(padapter, cbw40_enable);
-       /* start driver mlme relation timer */
-       start_drv_timers(padapter);
-       padapter->ledpriv.LedControlHandler(padapter, LED_CTL_NO_LINK);
-       mutex_unlock(&padapter->mutex_start);
-       return 0;
-netdev_open_error:
-       padapter->bup = false;
-       netif_carrier_off(pnetdev);
-       netif_stop_queue(pnetdev);
-       mutex_unlock(&padapter->mutex_start);
-       return -1;
-}
-
-/*
- *
- * This function intends to handle the shutdown of an interface
- * i.e. when it is brought Down from an Up/Active state.
- *
- */
-static int netdev_close(struct net_device *pnetdev)
-{
-       struct _adapter *padapter = netdev_priv(pnetdev);
-
-       /* Close LED*/
-       padapter->ledpriv.LedControlHandler(padapter, LED_CTL_POWER_OFF);
-       msleep(200);
-
-       /*s1.*/
-       if (pnetdev) {
-               if (!netif_queue_stopped(pnetdev))
-                       netif_stop_queue(pnetdev);
-       }
-       /*s2.*/
-       /*s2-1.  issue disassoc_cmd to fw*/
-       r8712_disassoc_cmd(padapter);
-       /*s2-2.  indicate disconnect to os*/
-       r8712_ind_disconnect(padapter);
-       /*s2-3.*/
-       r8712_free_assoc_resources(padapter);
-       /*s2-4.*/
-       r8712_free_network_queue(padapter);
-       return 0;
-}
-
-#include "mlme_osdep.h"
diff --git a/drivers/staging/rtl8712/osdep_intf.h b/drivers/staging/rtl8712/osdep_intf.h
deleted file mode 100644 (file)
index 9e75116..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __OSDEP_INTF_H_
-#define __OSDEP_INTF_H_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-
-#define RND4(x)        (((x >> 2) + ((x & 3) != 0)) << 2)
-
-struct intf_priv {
-       u8 *intf_dev;
-       /* when in USB, IO is through interrupt in/out endpoints */
-       struct usb_device *udev;
-       struct urb *piorw_urb;
-       struct completion io_retevt_comp;
-};
-
-int r871x_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
-
-#endif /*_OSDEP_INTF_H_*/
diff --git a/drivers/staging/rtl8712/osdep_service.h b/drivers/staging/rtl8712/osdep_service.h
deleted file mode 100644 (file)
index 0d9bb42..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __OSDEP_SERVICE_H_
-#define __OSDEP_SERVICE_H_
-
-#define _SUCCESS       1
-#define _FAIL          0
-
-#include <linux/spinlock.h>
-
-#include <linux/interrupt.h>
-#include <linux/semaphore.h>
-#include <linux/sched/signal.h>
-#include <linux/sem.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <net/iw_handler.h>
-#include <linux/proc_fs.h>      /* Necessary because we use the proc fs */
-
-#include "basic_types.h"
-
-struct __queue {
-       struct  list_head       queue;
-       spinlock_t lock;
-};
-
-#define _pkt struct sk_buff
-#define _buffer unsigned char
-
-#define _init_queue(pqueue)                            \
-       do {                                            \
-               INIT_LIST_HEAD(&((pqueue)->queue));     \
-               spin_lock_init(&((pqueue)->lock));      \
-       } while (0)
-
-static inline u32 end_of_queue_search(struct list_head *head,
-                                     struct list_head *plist)
-{
-       return (head == plist);
-}
-
-static inline void flush_signals_thread(void)
-{
-       if (signal_pending(current))
-               flush_signals(current);
-}
-
-#endif
-
diff --git a/drivers/staging/rtl8712/recv_linux.c b/drivers/staging/rtl8712/recv_linux.c
deleted file mode 100644 (file)
index 215fca4..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * recv_linux.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>.
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _RECV_OSDEP_C_
-
-#include <linux/usb.h>
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "wifi.h"
-#include "recv_osdep.h"
-#include "osdep_intf.h"
-#include "ethernet.h"
-#include <linux/if_arp.h>
-#include "usb_ops.h"
-
-/*init os related resource in struct recv_priv*/
-/*alloc os related resource in union recv_frame*/
-void r8712_os_recv_resource_alloc(struct _adapter *padapter,
-                                 union recv_frame *precvframe)
-{
-       precvframe->u.hdr.pkt_newalloc = NULL;
-       precvframe->u.hdr.pkt = NULL;
-}
-
-/*alloc os related resource in struct recv_buf*/
-int r8712_os_recvbuf_resource_alloc(struct _adapter *padapter,
-                                   struct recv_buf *precvbuf)
-{
-       int res = 0;
-
-       precvbuf->irp_pending = false;
-       precvbuf->purb = usb_alloc_urb(0, GFP_KERNEL);
-       if (!precvbuf->purb)
-               res = -ENOMEM;
-       precvbuf->pskb = NULL;
-       precvbuf->pallocated_buf = NULL;
-       precvbuf->pbuf = NULL;
-       precvbuf->pdata = NULL;
-       precvbuf->phead = NULL;
-       precvbuf->ptail = NULL;
-       precvbuf->pend = NULL;
-       precvbuf->transfer_len = 0;
-       precvbuf->len = 0;
-       return res;
-}
-
-/*free os related resource in struct recv_buf*/
-void r8712_os_recvbuf_resource_free(struct _adapter *padapter,
-                                   struct recv_buf *precvbuf)
-{
-       if (precvbuf->pskb)
-               dev_kfree_skb_any(precvbuf->pskb);
-       if (precvbuf->purb) {
-               usb_kill_urb(precvbuf->purb);
-               usb_free_urb(precvbuf->purb);
-       }
-}
-
-void r8712_handle_tkip_mic_err(struct _adapter *adapter, u8 bgroup)
-{
-       union iwreq_data wrqu;
-       struct iw_michaelmicfailure ev;
-       struct mlme_priv *mlmepriv  = &adapter->mlmepriv;
-
-       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;
-       ether_addr_copy(ev.src_addr.sa_data, &mlmepriv->assoc_bssid[0]);
-       memset(&wrqu, 0x00, sizeof(wrqu));
-       wrqu.data.length = sizeof(ev);
-       wireless_send_event(adapter->pnetdev, IWEVMICHAELMICFAILURE, &wrqu,
-                           (char *)&ev);
-}
-
-void r8712_recv_indicatepkt(struct _adapter *adapter,
-                           union recv_frame *recvframe)
-{
-       struct recv_priv *recvpriv;
-       struct  __queue *free_recv_queue;
-       _pkt *skb;
-       struct rx_pkt_attrib *attrib = &recvframe->u.hdr.attrib;
-
-       recvpriv = &adapter->recvpriv;
-       free_recv_queue = &recvpriv->free_recv_queue;
-       skb = recvframe->u.hdr.pkt;
-       if (!skb)
-               goto _recv_indicatepkt_drop;
-       skb->data = recvframe->u.hdr.rx_data;
-       skb->len = recvframe->u.hdr.len;
-       skb_set_tail_pointer(skb, skb->len);
-       if ((attrib->tcpchk_valid == 1) && (attrib->tcp_chkrpt == 1))
-               skb->ip_summed = CHECKSUM_UNNECESSARY;
-       else
-               skb->ip_summed = CHECKSUM_NONE;
-       skb->dev = adapter->pnetdev;
-       skb->protocol = eth_type_trans(skb, adapter->pnetdev);
-       netif_rx(skb);
-       recvframe->u.hdr.pkt = NULL; /* pointers to NULL before
-                                     * r8712_free_recvframe()
-                                     */
-       r8712_free_recvframe(recvframe, free_recv_queue);
-       return;
-_recv_indicatepkt_drop:
-        /*enqueue back to free_recv_queue*/
-       if (recvframe)
-               r8712_free_recvframe(recvframe, free_recv_queue);
-       recvpriv->rx_drop++;
-}
-
-static void _r8712_reordering_ctrl_timeout_handler (struct timer_list *t)
-{
-       struct recv_reorder_ctrl *reorder_ctrl =
-                        from_timer(reorder_ctrl, t, reordering_ctrl_timer);
-
-       r8712_reordering_ctrl_timeout_handler(reorder_ctrl);
-}
-
-void r8712_init_recv_timer(struct recv_reorder_ctrl *preorder_ctrl)
-{
-       timer_setup(&preorder_ctrl->reordering_ctrl_timer,
-                   _r8712_reordering_ctrl_timeout_handler, 0);
-}
diff --git a/drivers/staging/rtl8712/recv_osdep.h b/drivers/staging/rtl8712/recv_osdep.h
deleted file mode 100644 (file)
index d8c1fa7..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RECV_OSDEP_H_
-#define __RECV_OSDEP_H_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include <linux/skbuff.h>
-
-void _r8712_init_recv_priv(struct recv_priv *precvpriv,
-                          struct _adapter *padapter);
-void _r8712_free_recv_priv(struct recv_priv *precvpriv);
-void r8712_recv_entry(union recv_frame *precv_frame);
-void r8712_recv_indicatepkt(struct _adapter *adapter,
-                           union recv_frame *precv_frame);
-void r8712_handle_tkip_mic_err(struct _adapter *padapter, u8 bgroup);
-void r8712_init_recv_priv(struct recv_priv *precvpriv,
-                         struct _adapter *padapter);
-void r8712_free_recv_priv(struct recv_priv *precvpriv);
-void r8712_os_recv_resource_alloc(struct _adapter *padapter,
-                                 union recv_frame *precvframe);
-int r8712_os_recvbuf_resource_alloc(struct _adapter *padapter,
-                                   struct recv_buf *precvbuf);
-void r8712_os_recvbuf_resource_free(struct _adapter *padapter,
-                                   struct recv_buf *precvbuf);
-void r8712_init_recv_timer(struct recv_reorder_ctrl *preorder_ctrl);
-
-#endif
diff --git a/drivers/staging/rtl8712/rtl8712_bitdef.h b/drivers/staging/rtl8712/rtl8712_bitdef.h
deleted file mode 100644 (file)
index a4a687d..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-
-#ifndef __RTL8712_BITDEF_H__
-#define __RTL8712_BITDEF_H__
-
-#include "rtl8712_cmdctrl_bitdef.h"
-#include "rtl8712_syscfg_bitdef.h"
-#include "rtl8712_macsetting_bitdef.h"
-#include "rtl8712_timectrl_bitdef.h"
-#include "rtl8712_fifoctrl_bitdef.h"
-#include "rtl8712_ratectrl_bitdef.h"
-#include "rtl8712_edcasetting_bitdef.h"
-#include "rtl8712_wmac_bitdef.h"
-#include "rtl8712_security_bitdef.h"
-#include "rtl8712_powersave_bitdef.h"
-#include "rtl8712_gp_bitdef.h"
-#include "rtl8712_interrupt_bitdef.h"
-#include "rtl8712_debugctrl_bitdef.h"
-
-#endif /* __RTL8712_BITDEF_H__ */
-
diff --git a/drivers/staging/rtl8712/rtl8712_cmd.c b/drivers/staging/rtl8712/rtl8712_cmd.c
deleted file mode 100644 (file)
index bb7db96..0000000
+++ /dev/null
@@ -1,409 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl8712_cmd.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>.
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _RTL8712_CMD_C_
-
-#include <linux/compiler.h>
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/slab.h>
-#include <linux/sched/signal.h>
-#include <linux/module.h>
-#include <linux/kref.h>
-#include <linux/netdevice.h>
-#include <linux/skbuff.h>
-#include <linux/usb.h>
-#include <linux/usb/ch9.h>
-#include <linux/circ_buf.h>
-#include <linux/uaccess.h>
-#include <asm/byteorder.h>
-#include <linux/atomic.h>
-#include <linux/semaphore.h>
-#include <linux/rtnetlink.h>
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "recv_osdep.h"
-#include "mlme_osdep.h"
-#include "rtl871x_ioctl_set.h"
-
-static void check_hw_pbc(struct _adapter *padapter)
-{
-       u8      tmp1byte;
-
-       r8712_write8(padapter, MAC_PINMUX_CTRL, (GPIOMUX_EN | GPIOSEL_GPIO));
-       tmp1byte = r8712_read8(padapter, GPIO_IO_SEL);
-       tmp1byte &= ~(HAL_8192S_HW_GPIO_WPS_BIT);
-       r8712_write8(padapter, GPIO_IO_SEL, tmp1byte);
-       tmp1byte = r8712_read8(padapter, GPIO_CTRL);
-       if (tmp1byte == 0xff)
-               return;
-       if (tmp1byte & HAL_8192S_HW_GPIO_WPS_BIT) {
-               /* Here we only set bPbcPressed to true
-                * After trigger PBC, the variable will be set to false
-                */
-               netdev_dbg(padapter->pnetdev, "CheckPbcGPIO - PBC is pressed !!!!\n");
-               /* 0 is the default value and it means the application monitors
-                * the HW PBC doesn't provide its pid to driver.
-                */
-               if (padapter->pid == 0)
-                       return;
-               kill_pid(find_vpid(padapter->pid), SIGUSR1, 1);
-       }
-}
-
-/* query rx phy status from fw.
- * Adhoc mode: beacon.
- * Infrastructure mode: beacon , data.
- */
-static void query_fw_rx_phy_status(struct _adapter *padapter)
-{
-       u32 val32 = 0;
-       int pollingcnts = 50;
-
-       if (check_fwstate(&padapter->mlmepriv, _FW_LINKED)) {
-               r8712_write32(padapter, IOCMD_CTRL_REG, 0xf4000001);
-               msleep(100);
-               /* Wait FW complete IO Cmd */
-               while ((r8712_read32(padapter, IOCMD_CTRL_REG)) &&
-                      (pollingcnts > 0)) {
-                       pollingcnts--;
-                       msleep(20);
-               }
-               if (pollingcnts != 0)
-                       val32 = r8712_read32(padapter, IOCMD_DATA_REG);
-               else /* time out */
-                       val32 = 0;
-               val32 >>= 4;
-               padapter->recvpriv.fw_rssi =
-                        (u8)r8712_signal_scale_mapping(val32);
-       }
-}
-
-/* check mlme, hw, phy, or dynamic algorithm status. */
-static void StatusWatchdogCallback(struct _adapter *padapter)
-{
-       check_hw_pbc(padapter);
-       query_fw_rx_phy_status(padapter);
-}
-
-static void r871x_internal_cmd_hdl(struct _adapter *padapter, u8 *pbuf)
-{
-       struct drvint_cmd_parm *pdrvcmd;
-
-       if (!pbuf)
-               return;
-       pdrvcmd = (struct drvint_cmd_parm *)pbuf;
-       switch (pdrvcmd->i_cid) {
-       case WDG_WK_CID:
-               StatusWatchdogCallback(padapter);
-               break;
-       default:
-               break;
-       }
-       kfree(pdrvcmd->pbuf);
-}
-
-static u8 read_bbreg_hdl(struct _adapter *padapter, u8 *pbuf)
-{
-       struct cmd_obj *pcmd  = (struct cmd_obj *)pbuf;
-
-       r8712_free_cmd_obj(pcmd);
-       return H2C_SUCCESS;
-}
-
-static u8 write_bbreg_hdl(struct _adapter *padapter, u8 *pbuf)
-{
-       void (*pcmd_callback)(struct _adapter *dev, struct cmd_obj *pcmd);
-       struct cmd_obj *pcmd  = (struct cmd_obj *)pbuf;
-
-       pcmd_callback = cmd_callback[pcmd->cmdcode].callback;
-       if (!pcmd_callback)
-               r8712_free_cmd_obj(pcmd);
-       else
-               pcmd_callback(padapter, pcmd);
-       return H2C_SUCCESS;
-}
-
-static u8 read_rfreg_hdl(struct _adapter *padapter, u8 *pbuf)
-{
-       u32 val;
-       void (*pcmd_callback)(struct _adapter *dev, struct cmd_obj *pcmd);
-       struct cmd_obj *pcmd  = (struct cmd_obj *)pbuf;
-
-       if (pcmd->rsp && pcmd->rspsz > 0)
-               memcpy(pcmd->rsp, (u8 *)&val, pcmd->rspsz);
-       pcmd_callback = cmd_callback[pcmd->cmdcode].callback;
-       if (!pcmd_callback)
-               r8712_free_cmd_obj(pcmd);
-       else
-               pcmd_callback(padapter, pcmd);
-       return H2C_SUCCESS;
-}
-
-static u8 write_rfreg_hdl(struct _adapter *padapter, u8 *pbuf)
-{
-       void (*pcmd_callback)(struct _adapter *dev, struct cmd_obj *pcmd);
-       struct cmd_obj *pcmd  = (struct cmd_obj *)pbuf;
-
-       pcmd_callback = cmd_callback[pcmd->cmdcode].callback;
-       if (!pcmd_callback)
-               r8712_free_cmd_obj(pcmd);
-       else
-               pcmd_callback(padapter, pcmd);
-       return H2C_SUCCESS;
-}
-
-static u8 sys_suspend_hdl(struct _adapter *padapter, u8 *pbuf)
-{
-       struct cmd_obj *pcmd  = (struct cmd_obj *)pbuf;
-
-       r8712_free_cmd_obj(pcmd);
-       return H2C_SUCCESS;
-}
-
-static struct cmd_obj *cmd_hdl_filter(struct _adapter *padapter,
-                                     struct cmd_obj *pcmd)
-{
-       struct cmd_obj *pcmd_r;
-
-       if (!pcmd)
-               return pcmd;
-       pcmd_r = NULL;
-
-       switch (pcmd->cmdcode) {
-       case GEN_CMD_CODE(_Read_BBREG):
-               read_bbreg_hdl(padapter, (u8 *)pcmd);
-               break;
-       case GEN_CMD_CODE(_Write_BBREG):
-               write_bbreg_hdl(padapter, (u8 *)pcmd);
-               break;
-       case GEN_CMD_CODE(_Read_RFREG):
-               read_rfreg_hdl(padapter, (u8 *)pcmd);
-               break;
-       case GEN_CMD_CODE(_Write_RFREG):
-               write_rfreg_hdl(padapter, (u8 *)pcmd);
-               break;
-       case GEN_CMD_CODE(_SetUsbSuspend):
-               sys_suspend_hdl(padapter, (u8 *)pcmd);
-               break;
-       case GEN_CMD_CODE(_JoinBss):
-               r8712_joinbss_reset(padapter);
-               /* Before set JoinBss_CMD to FW, driver must ensure FW is in
-                * PS_MODE_ACTIVE. Directly write rpwm to radio on and assign
-                * new pwr_mode to Driver, instead of use workitem to change
-                * state.
-                */
-               if (padapter->pwrctrlpriv.pwr_mode > PS_MODE_ACTIVE) {
-                       padapter->pwrctrlpriv.pwr_mode = PS_MODE_ACTIVE;
-                       mutex_lock(&padapter->pwrctrlpriv.mutex_lock);
-                       r8712_set_rpwm(padapter, PS_STATE_S4);
-                       mutex_unlock(&padapter->pwrctrlpriv.mutex_lock);
-               }
-               pcmd_r = pcmd;
-               break;
-       case _DRV_INT_CMD_:
-               r871x_internal_cmd_hdl(padapter, pcmd->parmbuf);
-               r8712_free_cmd_obj(pcmd);
-               pcmd_r = NULL;
-               break;
-       default:
-               pcmd_r = pcmd;
-               break;
-       }
-       return pcmd_r; /* if returning pcmd_r == NULL, pcmd must be free. */
-}
-
-u8 r8712_fw_cmd(struct _adapter *pAdapter, u32 cmd)
-{
-       int pollingcnts = 50;
-
-       r8712_write32(pAdapter, IOCMD_CTRL_REG, cmd);
-       msleep(100);
-       while ((r8712_read32(pAdapter, IOCMD_CTRL_REG != 0)) &&
-              (pollingcnts > 0)) {
-               pollingcnts--;
-               msleep(20);
-       }
-       if (pollingcnts == 0)
-               return false;
-       return true;
-}
-
-void r8712_fw_cmd_data(struct _adapter *pAdapter, u32 *value, u8 flag)
-{
-       if (flag == 0)  /* set */
-               r8712_write32(pAdapter, IOCMD_DATA_REG, *value);
-       else            /* query */
-               *value = r8712_read32(pAdapter, IOCMD_DATA_REG);
-}
-
-int r8712_cmd_thread(void *context)
-{
-       struct cmd_obj *pcmd;
-       unsigned int cmdsz, wr_sz;
-       __le32 *pcmdbuf;
-       struct tx_desc *pdesc;
-       void (*pcmd_callback)(struct _adapter *dev, struct cmd_obj *pcmd);
-       struct _adapter *padapter = context;
-       struct  cmd_priv *pcmdpriv = &padapter->cmdpriv;
-       struct completion *cmd_queue_comp =
-               &pcmdpriv->cmd_queue_comp;
-       struct mutex *pwctrl_lock = &padapter->pwrctrlpriv.mutex_lock;
-
-       allow_signal(SIGTERM);
-       while (1) {
-               if (wait_for_completion_interruptible(cmd_queue_comp))
-                       break;
-               if (padapter->driver_stopped || padapter->surprise_removed)
-                       break;
-               if (r8712_register_cmd_alive(padapter))
-                       continue;
-_next:
-               pcmd = r8712_dequeue_cmd(&pcmdpriv->cmd_queue);
-               if (!(pcmd)) {
-                       r8712_unregister_cmd_alive(padapter);
-                       continue;
-               }
-               pcmdbuf = (__le32 *)pcmdpriv->cmd_buf;
-               pdesc = (struct tx_desc *)pcmdbuf;
-               memset(pdesc, 0, TXDESC_SIZE);
-               pcmd = cmd_hdl_filter(padapter, pcmd);
-               if (pcmd) { /* if pcmd != NULL, cmd will be handled by f/w */
-                       struct dvobj_priv *pdvobj = &padapter->dvobjpriv;
-                       u8 blnPending = 0;
-                       u16 cmdcode = pcmd->cmdcode;
-
-                       pcmdpriv->cmd_issued_cnt++;
-                       cmdsz = round_up(pcmd->cmdsz, 8);
-                       wr_sz = TXDESC_SIZE + 8 + cmdsz;
-                       pdesc->txdw0 |= cpu_to_le32((wr_sz - TXDESC_SIZE) &
-                                                    0x0000ffff);
-                       if (pdvobj->ishighspeed) {
-                               if ((wr_sz % 512) == 0)
-                                       blnPending = 1;
-                       } else {
-                               if ((wr_sz % 64) == 0)
-                                       blnPending = 1;
-                       }
-                       if (blnPending) { /* 32 bytes for TX Desc - 8 offset */
-                               pdesc->txdw0 |= cpu_to_le32(((TXDESC_SIZE +
-                                               OFFSET_SZ + 8) << OFFSET_SHT) &
-                                               0x00ff0000);
-                       } else {
-                               pdesc->txdw0 |= cpu_to_le32(((TXDESC_SIZE +
-                                                             OFFSET_SZ) <<
-                                                             OFFSET_SHT) &
-                                                             0x00ff0000);
-                       }
-                       pdesc->txdw0 |= cpu_to_le32(OWN | FSG | LSG);
-                       pdesc->txdw1 |= cpu_to_le32((0x13 << QSEL_SHT) &
-                                                   0x00001f00);
-                       pcmdbuf += (TXDESC_SIZE >> 2);
-                       *pcmdbuf = cpu_to_le32((cmdsz & 0x0000ffff) |
-                                              (pcmd->cmdcode << 16) |
-                                              (pcmdpriv->cmd_seq << 24));
-                       pcmdbuf += 2; /* 8 bytes alignment */
-                       memcpy((u8 *)pcmdbuf, pcmd->parmbuf, pcmd->cmdsz);
-                       if (blnPending)
-                               wr_sz += 8;   /* Append 8 bytes */
-                       r8712_write_mem(padapter, RTL8712_DMA_H2CCMD, wr_sz,
-                                       (u8 *)pdesc);
-                       pcmdpriv->cmd_seq++;
-                       if (cmdcode == GEN_CMD_CODE(_CreateBss)) {
-                               pcmd->res = H2C_SUCCESS;
-                               pcmd_callback = cmd_callback[cmdcode].callback;
-                               if (pcmd_callback)
-                                       pcmd_callback(padapter, pcmd);
-                               continue;
-                       }
-                       if (cmdcode == GEN_CMD_CODE(_SetPwrMode)) {
-                               if (padapter->pwrctrlpriv.bSleep) {
-                                       mutex_lock(pwctrl_lock);
-                                       r8712_set_rpwm(padapter, PS_STATE_S2);
-                                       mutex_unlock(pwctrl_lock);
-                               }
-                       }
-                       r8712_free_cmd_obj(pcmd);
-                       if (list_empty(&pcmdpriv->cmd_queue.queue)) {
-                               r8712_unregister_cmd_alive(padapter);
-                               continue;
-                       } else {
-                               goto _next;
-                       }
-               } else {
-                       goto _next;
-               }
-               flush_signals_thread();
-       }
-       /* free all cmd_obj resources */
-       do {
-               pcmd = r8712_dequeue_cmd(&pcmdpriv->cmd_queue);
-               if (!pcmd)
-                       break;
-               r8712_free_cmd_obj(pcmd);
-       } while (1);
-       complete(&pcmdpriv->terminate_cmdthread_comp);
-       return 0;
-}
-
-void r8712_event_handle(struct _adapter *padapter, __le32 *peventbuf)
-{
-       u8 evt_code, evt_seq;
-       u16 evt_sz;
-       void (*event_callback)(struct _adapter *dev, u8 *pbuf);
-       struct  evt_priv *pevt_priv = &padapter->evtpriv;
-
-       if (!peventbuf)
-               goto _abort_event_;
-       evt_sz = (u16)(le32_to_cpu(*peventbuf) & 0xffff);
-       evt_seq = (u8)((le32_to_cpu(*peventbuf) >> 24) & 0x7f);
-       evt_code = (u8)((le32_to_cpu(*peventbuf) >> 16) & 0xff);
-       /* checking event sequence... */
-       if ((evt_seq & 0x7f) != pevt_priv->event_seq) {
-               pevt_priv->event_seq = ((evt_seq + 1) & 0x7f);
-               goto _abort_event_;
-       }
-       /* checking if event code is valid */
-       if (evt_code >= MAX_C2HEVT) {
-               pevt_priv->event_seq = ((evt_seq + 1) & 0x7f);
-               goto _abort_event_;
-       } else if ((evt_code == GEN_EVT_CODE(_Survey)) &&
-                  (evt_sz > sizeof(struct wlan_bssid_ex))) {
-               pevt_priv->event_seq = ((evt_seq + 1) & 0x7f);
-               goto _abort_event_;
-       }
-       /* checking if event size match the event parm size */
-       if ((wlanevents[evt_code].parmsize) &&
-           (wlanevents[evt_code].parmsize != evt_sz)) {
-               pevt_priv->event_seq = ((evt_seq + 1) & 0x7f);
-               goto _abort_event_;
-       } else if ((evt_sz == 0) && (evt_code != GEN_EVT_CODE(_WPS_PBC))) {
-               pevt_priv->event_seq = ((evt_seq + 1) & 0x7f);
-               goto _abort_event_;
-       }
-       pevt_priv->event_seq++; /* update evt_seq */
-       if (pevt_priv->event_seq > 127)
-               pevt_priv->event_seq = 0;
-       /* move to event content, 8 bytes alignment */
-       peventbuf = peventbuf + 2;
-       event_callback = wlanevents[evt_code].event_callback;
-       if (event_callback)
-               event_callback(padapter, (u8 *)peventbuf);
-       pevt_priv->evt_done_cnt++;
-_abort_event_:
-       return;
-}
diff --git a/drivers/staging/rtl8712/rtl8712_cmd.h b/drivers/staging/rtl8712/rtl8712_cmd.h
deleted file mode 100644 (file)
index a34d0dd..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL8712_CMD_H_
-#define __RTL8712_CMD_H_
-
-#define CMD_HDR_SZ      8
-
-u8 r8712_fw_cmd(struct _adapter *pAdapter, u32 cmd);
-void r8712_fw_cmd_data(struct _adapter *pAdapter, u32 *value, u8 flag);
-
-struct cmd_hdr {
-       u32 cmd_dw0;
-       u32 cmd_dw1;
-};
-
-enum rtl8712_h2c_cmd {
-       GEN_CMD_CODE(_Read_MACREG),     /*0*/
-       GEN_CMD_CODE(_Write_MACREG),
-       GEN_CMD_CODE(_Read_BBREG),
-       GEN_CMD_CODE(_Write_BBREG),
-       GEN_CMD_CODE(_Read_RFREG),
-       GEN_CMD_CODE(_Write_RFREG), /*5*/
-       GEN_CMD_CODE(_Read_EEPROM),
-       GEN_CMD_CODE(_Write_EEPROM),
-       GEN_CMD_CODE(_Read_EFUSE),
-       GEN_CMD_CODE(_Write_EFUSE),
-
-       GEN_CMD_CODE(_Read_CAM),        /*10*/
-       GEN_CMD_CODE(_Write_CAM),
-       GEN_CMD_CODE(_setBCNITV),
-       GEN_CMD_CODE(_setMBIDCFG),
-       GEN_CMD_CODE(_JoinBss),   /*14*/
-       GEN_CMD_CODE(_DisConnect), /*15*/
-       GEN_CMD_CODE(_CreateBss),
-       GEN_CMD_CODE(_SetOpMode),
-       GEN_CMD_CODE(_SiteSurvey),  /*18*/
-       GEN_CMD_CODE(_SetAuth),
-
-       GEN_CMD_CODE(_SetKey),  /*20*/
-       GEN_CMD_CODE(_SetStaKey),
-       GEN_CMD_CODE(_SetAssocSta),
-       GEN_CMD_CODE(_DelAssocSta),
-       GEN_CMD_CODE(_SetStaPwrState),
-       GEN_CMD_CODE(_SetBasicRate), /*25*/
-       GEN_CMD_CODE(_GetBasicRate),
-       GEN_CMD_CODE(_SetDataRate),
-       GEN_CMD_CODE(_GetDataRate),
-       GEN_CMD_CODE(_SetPhyInfo),
-
-       GEN_CMD_CODE(_GetPhyInfo),      /*30*/
-       GEN_CMD_CODE(_SetPhy),
-       GEN_CMD_CODE(_GetPhy),
-       GEN_CMD_CODE(_readRssi),
-       GEN_CMD_CODE(_readGain),
-       GEN_CMD_CODE(_SetAtim), /*35*/
-       GEN_CMD_CODE(_SetPwrMode),
-       GEN_CMD_CODE(_JoinbssRpt),
-       GEN_CMD_CODE(_SetRaTable),
-       GEN_CMD_CODE(_GetRaTable),
-
-       GEN_CMD_CODE(_GetCCXReport), /*40*/
-       GEN_CMD_CODE(_GetDTMReport),
-       GEN_CMD_CODE(_GetTXRateStatistics),
-       GEN_CMD_CODE(_SetUsbSuspend),
-       GEN_CMD_CODE(_SetH2cLbk),
-       GEN_CMD_CODE(_AddBAReq), /*45*/
-
-       GEN_CMD_CODE(_SetChannel), /*46*/
-/* MP_OFFLOAD Start (47~54)*/
-       GEN_CMD_CODE(_SetTxPower),
-       GEN_CMD_CODE(_SwitchAntenna),
-       GEN_CMD_CODE(_SetCrystalCap),
-       GEN_CMD_CODE(_SetSingleCarrierTx), /*50*/
-       GEN_CMD_CODE(_SetSingleToneTx),
-       GEN_CMD_CODE(_SetCarrierSuppressionTx),
-       GEN_CMD_CODE(_SetContinuousTx),
-       GEN_CMD_CODE(_SwitchBandwidth), /*54*/
-/* MP_OFFLOAD End*/
-       GEN_CMD_CODE(_TX_Beacon), /*55*/
-       GEN_CMD_CODE(_SetPowerTracking),
-       GEN_CMD_CODE(_AMSDU_TO_AMPDU), /*57*/
-       GEN_CMD_CODE(_SetMacAddress), /*58*/
-
-       GEN_CMD_CODE(_DisconnectCtrl), /*59*/
-       GEN_CMD_CODE(_SetChannelPlan), /*60*/
-       GEN_CMD_CODE(_DisconnectCtrlEx), /*61*/
-
-       /* To do, modify these h2c cmd, add or delete */
-       GEN_CMD_CODE(_GetH2cLbk),
-
-       /* WPS extra IE */
-       GEN_CMD_CODE(_SetProbeReqExtraIE),
-       GEN_CMD_CODE(_SetAssocReqExtraIE),
-       GEN_CMD_CODE(_SetProbeRspExtraIE),
-       GEN_CMD_CODE(_SetAssocRspExtraIE),
-
-       /* the following is driver will do */
-       GEN_CMD_CODE(_GetCurDataRate),
-
-       GEN_CMD_CODE(_GetTxRetrycnt),  /* to record times that Tx retry to
-                                       * transmit packet after association
-                                       */
-       GEN_CMD_CODE(_GetRxRetrycnt),  /* to record total number of the
-                                       * received frame with ReTry bit set in
-                                       * the WLAN header
-                                       */
-
-       GEN_CMD_CODE(_GetBCNOKcnt),
-       GEN_CMD_CODE(_GetBCNERRcnt),
-       GEN_CMD_CODE(_GetCurTxPwrLevel),
-
-       GEN_CMD_CODE(_SetDIG),
-       GEN_CMD_CODE(_SetRA),
-       GEN_CMD_CODE(_SetPT),
-       GEN_CMD_CODE(_ReadTSSI),
-
-       MAX_H2CCMD
-};
-
-#define _GetBBReg_CMD_         _Read_BBREG_CMD_
-#define _SetBBReg_CMD_         _Write_BBREG_CMD_
-#define _GetRFReg_CMD_         _Read_RFREG_CMD_
-#define _SetRFReg_CMD_         _Write_RFREG_CMD_
-#define _DRV_INT_CMD_          (MAX_H2CCMD + 1)
-#define _SetRFIntFs_CMD_       (MAX_H2CCMD + 2)
-
-#ifdef _RTL8712_CMD_C_
-static struct _cmd_callback    cmd_callback[] = {
-       {GEN_CMD_CODE(_Read_MACREG), NULL}, /*0*/
-       {GEN_CMD_CODE(_Write_MACREG), NULL},
-       {GEN_CMD_CODE(_Read_BBREG), NULL},
-       {GEN_CMD_CODE(_Write_BBREG), NULL},
-       {GEN_CMD_CODE(_Read_RFREG), &r8712_getbbrfreg_cmdrsp_callback},
-       {GEN_CMD_CODE(_Write_RFREG), NULL}, /*5*/
-       {GEN_CMD_CODE(_Read_EEPROM), NULL},
-       {GEN_CMD_CODE(_Write_EEPROM), NULL},
-       {GEN_CMD_CODE(_Read_EFUSE), NULL},
-       {GEN_CMD_CODE(_Write_EFUSE), NULL},
-
-       {GEN_CMD_CODE(_Read_CAM),       NULL},  /*10*/
-       {GEN_CMD_CODE(_Write_CAM),       NULL},
-       {GEN_CMD_CODE(_setBCNITV), NULL},
-       {GEN_CMD_CODE(_setMBIDCFG), NULL},
-       {GEN_CMD_CODE(_JoinBss), &r8712_joinbss_cmd_callback},  /*14*/
-       {GEN_CMD_CODE(_DisConnect), &r8712_disassoc_cmd_callback}, /*15*/
-       {GEN_CMD_CODE(_CreateBss), &r8712_createbss_cmd_callback},
-       {GEN_CMD_CODE(_SetOpMode), NULL},
-       {GEN_CMD_CODE(_SiteSurvey), &r8712_survey_cmd_callback}, /*18*/
-       {GEN_CMD_CODE(_SetAuth), NULL},
-
-       {GEN_CMD_CODE(_SetKey), NULL},  /*20*/
-       {GEN_CMD_CODE(_SetStaKey), &r8712_setstaKey_cmdrsp_callback},
-       {GEN_CMD_CODE(_SetAssocSta), &r8712_setassocsta_cmdrsp_callback},
-       {GEN_CMD_CODE(_DelAssocSta), NULL},
-       {GEN_CMD_CODE(_SetStaPwrState), NULL},
-       {GEN_CMD_CODE(_SetBasicRate), NULL}, /*25*/
-       {GEN_CMD_CODE(_GetBasicRate), NULL},
-       {GEN_CMD_CODE(_SetDataRate), NULL},
-       {GEN_CMD_CODE(_GetDataRate), NULL},
-       {GEN_CMD_CODE(_SetPhyInfo), NULL},
-
-       {GEN_CMD_CODE(_GetPhyInfo), NULL}, /*30*/
-       {GEN_CMD_CODE(_SetPhy), NULL},
-       {GEN_CMD_CODE(_GetPhy), NULL},
-       {GEN_CMD_CODE(_readRssi), NULL},
-       {GEN_CMD_CODE(_readGain), NULL},
-       {GEN_CMD_CODE(_SetAtim), NULL}, /*35*/
-       {GEN_CMD_CODE(_SetPwrMode), NULL},
-       {GEN_CMD_CODE(_JoinbssRpt), NULL},
-       {GEN_CMD_CODE(_SetRaTable), NULL},
-       {GEN_CMD_CODE(_GetRaTable), NULL},
-
-       {GEN_CMD_CODE(_GetCCXReport), NULL}, /*40*/
-       {GEN_CMD_CODE(_GetDTMReport),   NULL},
-       {GEN_CMD_CODE(_GetTXRateStatistics), NULL},
-       {GEN_CMD_CODE(_SetUsbSuspend), NULL},
-       {GEN_CMD_CODE(_SetH2cLbk), NULL},
-       {GEN_CMD_CODE(_AddBAReq), NULL}, /*45*/
-
-       {GEN_CMD_CODE(_SetChannel), NULL},              /*46*/
-/* MP_OFFLOAD Start (47~54)*/
-       {GEN_CMD_CODE(_SetTxPower), NULL},
-       {GEN_CMD_CODE(_SwitchAntenna), NULL},
-       {GEN_CMD_CODE(_SetCrystalCap), NULL},
-       {GEN_CMD_CODE(_SetSingleCarrierTx), NULL},      /*50*/
-       {GEN_CMD_CODE(_SetSingleToneTx), NULL},
-       {GEN_CMD_CODE(_SetCarrierSuppressionTx), NULL},
-       {GEN_CMD_CODE(_SetContinuousTx), NULL},
-       {GEN_CMD_CODE(_SwitchBandwidth), NULL},         /*54*/
-/* MP_OFFLOAD End*/
-       {GEN_CMD_CODE(_TX_Beacon), NULL}, /*55*/
-       {GEN_CMD_CODE(_SetPowerTracking), NULL},
-       {GEN_CMD_CODE(_AMSDU_TO_AMPDU), NULL}, /*57*/
-       {GEN_CMD_CODE(_SetMacAddress), NULL}, /*58*/
-
-       {GEN_CMD_CODE(_DisconnectCtrl), NULL}, /*59*/
-       {GEN_CMD_CODE(_SetChannelPlan), NULL}, /*60*/
-       {GEN_CMD_CODE(_DisconnectCtrlEx), NULL}, /*61*/
-
-       /* To do, modify these h2c cmd, add or delete */
-       {GEN_CMD_CODE(_GetH2cLbk), NULL},
-
-       {_SetProbeReqExtraIE_CMD_, NULL},
-       {_SetAssocReqExtraIE_CMD_, NULL},
-       {_SetProbeRspExtraIE_CMD_, NULL},
-       {_SetAssocRspExtraIE_CMD_, NULL},
-       {_GetCurDataRate_CMD_, NULL},
-       {_GetTxRetrycnt_CMD_, NULL},
-       {_GetRxRetrycnt_CMD_, NULL},
-       {_GetBCNOKcnt_CMD_, NULL},
-       {_GetBCNERRcnt_CMD_, NULL},
-       {_GetCurTxPwrLevel_CMD_, NULL},
-       {_SetDIG_CMD_, NULL},
-       {_SetRA_CMD_, NULL},
-       {_SetPT_CMD_, NULL},
-       {GEN_CMD_CODE(_ReadTSSI), &r8712_readtssi_cmdrsp_callback}
-};
-#endif
-
-#endif
diff --git a/drivers/staging/rtl8712/rtl8712_cmdctrl_bitdef.h b/drivers/staging/rtl8712/rtl8712_cmdctrl_bitdef.h
deleted file mode 100644 (file)
index 68bdec0..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_CMDCTRL_BITDEF_H__
-#define __RTL8712_CMDCTRL_BITDEF_H__
-
-/*
- * 2. Command Control Registers         (Offset: 0x0040 - 0x004F)
- */
-/*--------------------------------------------------------------------------*/
-/*       8192S (CMD) command register bits     (Offset 0x40, 16 bits)*/
-/*--------------------------------------------------------------------------*/
-#define                _APSDOFF_STATUS         BIT(15)
-#define                _APSDOFF                BIT(14)
-#define                _BBRSTn                 BIT(13)  /*Enable OFDM/CCK*/
-#define                _BB_GLB_RSTn            BIT(12)   /*Enable BB*/
-#define                _SCHEDULE_EN            BIT(10)  /*Enable MAC scheduler*/
-#define                _MACRXEN                BIT(9)
-#define                _MACTXEN                BIT(8)
-#define                _DDMA_EN                BIT(7)  /*FW off load function enable*/
-#define                _FW2HW_EN               BIT(6)  /*MAC every module reset */
-#define                _RXDMA_EN               BIT(5)
-#define                _TXDMA_EN               BIT(4)
-#define                _HCI_RXDMA_EN           BIT(3)
-#define                _HCI_TXDMA_EN           BIT(2)
-
-/*TXPAUSE*/
-#define        _STOPHCCA                       BIT(6)
-#define        _STOPHIGH                       BIT(5)
-#define        _STOPMGT                        BIT(4)
-#define        _STOPVO                         BIT(3)
-#define        _STOPVI                         BIT(2)
-#define        _STOPBE                         BIT(1)
-#define        _STOPBK                         BIT(0)
-
-/*TCR*/
-#define        _DISCW                          BIT(20)
-#define        _ICV                            BIT(19)
-#define        _CFEND_FMT                      BIT(17)
-#define        _CRC                            BIT(16)
-#define        _FWRDY                          BIT(7)
-#define _BASECHG                       BIT(6)
-#define        _IMEM_RDY                       BIT(5)
-#define _DMEM_CODE_DONE                        BIT(4)
-#define _EMEM_CHK_RPT                  BIT(3)
-#define _EMEM_CODE_DONE                        BIT(2)
-#define _IMEM_CHK_RPT                  BIT(1)
-#define _IMEM_CODE_DONE                        BIT(0)
-
-#define        _TXDMA_INIT_VALUE       (_IMEM_CHK_RPT | _EMEM_CHK_RPT)
-
-/*RCR*/
-#define        _ENMBID                         BIT(27)
-#define        _APP_PHYST_RXFF                 BIT(25)
-#define        _APP_PHYST_STAFF                BIT(24)
-#define        _CBSSID                         BIT(23)
-#define        _APWRMGT                        BIT(22)
-#define        _ADD3                           BIT(21)
-#define        _AMF                            BIT(20)
-#define        _ACF                            BIT(19)
-#define        _ADF                            BIT(18)
-#define        _APP_MIC                        BIT(17)
-#define        _APP_ICV                        BIT(16)
-#define        _RXFTH_MSK                      0x0000E000
-#define        _RXFTH_SHT                      13
-#define        _AICV                           BIT(12)
-#define        _RXPKTLMT_MSK                   0x00000FC0
-#define        _RXPKTLMT_SHT                   6
-#define        _ACRC32                         BIT(5)
-#define        _AB                             BIT(3)
-#define        _AM                             BIT(2)
-#define        _APM                            BIT(1)
-#define        _AAP                            BIT(0)
-
-/*MSR*/
-#define        _NETTYPE_MSK                    0x03
-#define        _NETTYPE_SHT                    0
-
-/*BT*/
-#define _BTMODE_MSK                    0x06
-#define _BTMODE_SHT                    1
-#define _ENBT                          BIT(0)
-
-/*MBIDCTRL*/
-#define        _ENMBID_MODE                    BIT(15)
-#define        _BCNNO_MSK                      0x7000
-#define        _BCNNO_SHT                      12
-#define        _BCNSPACE_MSK                   0x0FFF
-#define        _BCNSPACE_SHT                   0
-
-#endif /* __RTL8712_CMDCTRL_BITDEF_H__*/
-
diff --git a/drivers/staging/rtl8712/rtl8712_cmdctrl_regdef.h b/drivers/staging/rtl8712/rtl8712_cmdctrl_regdef.h
deleted file mode 100644 (file)
index fc67771..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_CMDCTRL_REGDEF_H__
-#define __RTL8712_CMDCTRL_REGDEF_H__
-
-#define CR                     (RTL8712_CMDCTRL_ + 0x0000)
-#define TXPAUSE                        (RTL8712_CMDCTRL_ + 0x0002)
-#define TCR                    (RTL8712_CMDCTRL_ + 0x0004)
-#define RCR                    (RTL8712_CMDCTRL_ + 0x0008)
-#define MSR                    (RTL8712_CMDCTRL_ + 0x000C)
-#define SYSF_CFG               (RTL8712_CMDCTRL_ + 0x000D)
-#define MBIDCTRL               (RTL8712_CMDCTRL_ + 0x000E)
-
-#endif /* __RTL8712_CMDCTRL_REGDEF_H__ */
-
diff --git a/drivers/staging/rtl8712/rtl8712_debugctrl_bitdef.h b/drivers/staging/rtl8712/rtl8712_debugctrl_bitdef.h
deleted file mode 100644 (file)
index bb38634..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_DEBUGCTRL_BITDEF_H__
-#define __RTL8712_DEBUGCTRL_BITDEF_H__
-
-/*BIST*/
-#define        _BIST_RST                       BIT(0)
-
-/*LMS*/
-#define        _LMS_MSK                        0x03
-
-/*WDG_CTRL*/
-#define        _OVSEL_MSK                      0x0600
-#define        _OVSEL_SHT                      9
-#define        _WDGCLR                         BIT(8)
-#define        _WDGEN_MSK                      0x00FF
-#define        _WDGEN_SHT                      0
-
-/*INTM*/
-#define        _TXTIMER_MSK            0xF000
-#define        _TXTIMER_SHT            12
-#define        _TXNUM_MSK                      0x0F00
-#define        _TXNUM_SHT                      8
-#define        _RXTIMER_MSK            0x00F0
-#define        _RXTIMER_SHT            4
-#define        _RXNUM_MSK                      0x000F
-#define        _RXNUM_SHT                      0
-
-/*FDLOCKTURN0*/
-/*FDLOCKTURN1*/
-#define        _TURN1                          BIT(0)
-
-/*FDLOCKFLAG0*/
-/*FDLOCKFLAG1*/
-#define        _LOCKFLAG1_MSK          0x03
-
-#endif /* __RTL8712_DEBUGCTRL_BITDEF_H__ */
diff --git a/drivers/staging/rtl8712/rtl8712_debugctrl_regdef.h b/drivers/staging/rtl8712/rtl8712_debugctrl_regdef.h
deleted file mode 100644 (file)
index 319220e..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_DEBUGCTRL_REGDEF_H__
-#define __RTL8712_DEBUGCTRL_REGDEF_H__
-
-#define BIST                   (RTL8712_DEBUGCTRL_ + 0x00)
-#define DBS                    (RTL8712_DEBUGCTRL_ + 0x04)
-#define LMS                    (RTL8712_DEBUGCTRL_ + 0x05)
-#define CPUINST                        (RTL8712_DEBUGCTRL_ + 0x08)
-#define CPUCAUSE               (RTL8712_DEBUGCTRL_ + 0x0C)
-#define LBUS_ERR_ADDR          (RTL8712_DEBUGCTRL_ + 0x10)
-#define LBUS_ERR_CMD           (RTL8712_DEBUGCTRL_ + 0x14)
-#define LBUS_ERR_DATA_L                (RTL8712_DEBUGCTRL_ + 0x18)
-#define LBUS_ERR_DATA_H                (RTL8712_DEBUGCTRL_ + 0x1C)
-#define LBUS_EXCEPTION_ADDR    (RTL8712_DEBUGCTRL_ + 0x20)
-#define WDG_CTRL               (RTL8712_DEBUGCTRL_ + 0x24)
-#define INTMTU                 (RTL8712_DEBUGCTRL_ + 0x28)
-#define INTM                   (RTL8712_DEBUGCTRL_ + 0x2A)
-#define FDLOCKTURN0            (RTL8712_DEBUGCTRL_ + 0x2C)
-#define FDLOCKTURN1            (RTL8712_DEBUGCTRL_ + 0x2D)
-#define FDLOCKFLAG0            (RTL8712_DEBUGCTRL_ + 0x2E)
-#define FDLOCKFLAG1            (RTL8712_DEBUGCTRL_ + 0x2F)
-#define TRXPKTBUF_DBG_DATA     (RTL8712_DEBUGCTRL_ + 0x30)
-#define TRXPKTBUF_DBG_CTRL     (RTL8712_DEBUGCTRL_ + 0x38)
-#define DPLL_MON               (RTL8712_DEBUGCTRL_ + 0x3A)
-
-#endif /* __RTL8712_DEBUGCTRL_REGDEF_H__ */
-
diff --git a/drivers/staging/rtl8712/rtl8712_edcasetting_bitdef.h b/drivers/staging/rtl8712/rtl8712_edcasetting_bitdef.h
deleted file mode 100644 (file)
index 9048d6a..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL8712_EDCASETTING_BITDEF_H__
-#define __RTL8712_EDCASETTING_BITDEF_H__
-
-/*EDCAPARAM*/
-#define        _TXOPLIMIT_MSK          0xFFFF0000
-#define        _TXOPLIMIT_SHT          16
-#define        _ECWIN_MSK              0x0000FF00
-#define        _ECWIN_SHT              8
-#define        _AIFS_MSK               0x000000FF
-#define        _AIFS_SHT               0
-
-/*BCNTCFG*/
-#define        _BCNECW_MSK             0xFF00
-#define        _BCNECW_SHT             8
-#define        _BCNIFS_MSK             0x00FF
-#define        _BCNIFS_SHT             0
-
-/*CWRR*/
-#define        _CWRR_MSK               0x03FF
-
-/*ACMAVG*/
-#define        _AVG_TIME_UP            BIT(3)
-#define        _AVGPERIOD_MSK          0x03
-
-/*ACMHWCTRL*/
-#define        _VOQ_ACM_STATUS         BIT(6)
-#define        _VIQ_ACM_STATUS         BIT(5)
-#define        _BEQ_ACM_STATUS         BIT(4)
-#define        _VOQ_ACM_EN             BIT(3)
-#define        _VIQ_ACM_EN             BIT(2)
-#define        _BEQ_ACM_EN             BIT(1)
-#define        _ACMHWEN                BIT(0)
-
-/*VO_ADMTIME*/
-#define        _VO_ACM_RUT             BIT(18)
-#define        _VO_ADMTIME_MSK         0x0003FFF
-
-/*VI_ADMTIME*/
-#define        _VI_ACM_RUT             BIT(18)
-#define        _VI_ADMTIME_MSK         0x0003FFF
-
-/*BE_ADMTIME*/
-#define        _BE_ACM_RUT             BIT(18)
-#define        _BE_ADMTIME_MSK         0x0003FFF
-
-/*Retry limit reg*/
-#define        _SRL_MSK                0xFF00
-#define        _SRL_SHT                8
-#define        _LRL_MSK                0x00FF
-#define        _LRL_SHT                0
-
-#endif /* __RTL8712_EDCASETTING_BITDEF_H__*/
diff --git a/drivers/staging/rtl8712/rtl8712_edcasetting_regdef.h b/drivers/staging/rtl8712/rtl8712_edcasetting_regdef.h
deleted file mode 100644 (file)
index 02ec9f3..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_EDCASETTING_REGDEF_H__
-#define __RTL8712_EDCASETTING_REGDEF_H__
-
-#define EDCA_VO_PARAM          (RTL8712_EDCASETTING_ + 0x00)
-#define EDCA_VI_PARAM          (RTL8712_EDCASETTING_ + 0x04)
-#define EDCA_BE_PARAM          (RTL8712_EDCASETTING_ + 0x08)
-#define EDCA_BK_PARAM          (RTL8712_EDCASETTING_ + 0x0C)
-#define BCNTCFG                        (RTL8712_EDCASETTING_ + 0x10)
-#define CWRR                   (RTL8712_EDCASETTING_ + 0x12)
-#define ACMAVG                 (RTL8712_EDCASETTING_ + 0x16)
-#define ACMHWCTRL              (RTL8712_EDCASETTING_ + 0x17)
-#define VO_ADMTIME             (RTL8712_EDCASETTING_ + 0x18)
-#define VI_ADMTIME             (RTL8712_EDCASETTING_ + 0x1C)
-#define BE_ADMTIME             (RTL8712_EDCASETTING_ + 0x20)
-#define RL                     (RTL8712_EDCASETTING_ + 0x24)
-
-#endif /* __RTL8712_EDCASETTING_REGDEF_H__ */
-
diff --git a/drivers/staging/rtl8712/rtl8712_efuse.c b/drivers/staging/rtl8712/rtl8712_efuse.c
deleted file mode 100644 (file)
index c9400e4..0000000
+++ /dev/null
@@ -1,564 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * rtl8712_efuse.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>.
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _RTL8712_EFUSE_C_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "rtl8712_efuse.h"
-
-/* reserve 3 bytes for HW stop read */
-static int efuse_available_max_size = EFUSE_MAX_SIZE - 3 /*0x1FD*/;
-
-static void efuse_reg_ctrl(struct _adapter *adapter, u8 bPowerOn)
-{
-       u8 tmpu8 = 0;
-
-       if (bPowerOn) {
-               /* -----------------e-fuse pwr & clk reg ctrl ---------------
-                * Enable LDOE25 Macro Block
-                */
-               tmpu8 = r8712_read8(adapter, EFUSE_TEST + 3);
-               tmpu8 |= 0x80;
-               r8712_write8(adapter, EFUSE_TEST + 3, tmpu8);
-               msleep(20); /* for some platform , need some delay time */
-               /* Change Efuse Clock for write action to 40MHZ */
-               r8712_write8(adapter, EFUSE_CLK_CTRL, 0x03);
-               msleep(20); /* for some platform , need some delay time */
-       } else {
-               /* -----------------e-fuse pwr & clk reg ctrl -----------------
-                * Disable LDOE25 Macro Block
-                */
-               tmpu8 = r8712_read8(adapter, EFUSE_TEST + 3);
-               tmpu8 &= 0x7F;
-               r8712_write8(adapter, EFUSE_TEST + 3, tmpu8);
-               /* Change Efuse Clock for write action to 500K */
-               r8712_write8(adapter, EFUSE_CLK_CTRL, 0x02);
-       }
-}
-
-/*
- * Before write E-Fuse, this function must be called.
- */
-u8 r8712_efuse_reg_init(struct _adapter *adapter)
-{
-       return true;
-}
-
-void r8712_efuse_reg_uninit(struct _adapter *adapter)
-{
-       efuse_reg_ctrl(adapter, false);
-}
-
-static u8 efuse_one_byte_read(struct _adapter *adapter, u16 addr, u8 *data)
-{
-       u8 tmpidx = 0, bResult;
-
-       /* -----------------e-fuse reg ctrl --------------------------------- */
-       r8712_write8(adapter, EFUSE_CTRL + 1, (u8)(addr & 0xFF)); /* address */
-       r8712_write8(adapter, EFUSE_CTRL + 2, ((u8)((addr >> 8) & 0x03)) |
-              (r8712_read8(adapter, EFUSE_CTRL + 2) & 0xFC));
-       r8712_write8(adapter, EFUSE_CTRL + 3, 0x72); /* read cmd */
-       /* wait for complete */
-       while (!(0x80 & r8712_read8(adapter, EFUSE_CTRL + 3)) &&
-              (tmpidx < 100))
-               tmpidx++;
-       if (tmpidx < 100) {
-               *data = r8712_read8(adapter, EFUSE_CTRL);
-               bResult = true;
-       } else {
-               *data = 0xff;
-               bResult = false;
-       }
-       return bResult;
-}
-
-static u8 efuse_one_byte_write(struct _adapter *adapter, u16 addr, u8 data)
-{
-       u8 tmpidx = 0, bResult;
-
-       /* -----------------e-fuse reg ctrl -------------------------------- */
-       r8712_write8(adapter, EFUSE_CTRL + 1, (u8)(addr & 0xFF)); /* address */
-       r8712_write8(adapter, EFUSE_CTRL + 2, ((u8)((addr >> 8) & 0x03)) |
-              (r8712_read8(adapter, EFUSE_CTRL + 2) & 0xFC));
-       r8712_write8(adapter, EFUSE_CTRL, data); /* data */
-       r8712_write8(adapter, EFUSE_CTRL + 3, 0xF2); /* write cmd */
-       /* wait for complete */
-       while ((0x80 &  r8712_read8(adapter, EFUSE_CTRL + 3)) &&
-              (tmpidx < 100))
-               tmpidx++;
-       if (tmpidx < 100)
-               bResult = true;
-       else
-               bResult = false;
-       return bResult;
-}
-
-static u8 efuse_one_byte_rw(struct _adapter *adapter, u8 bRead, u16 addr,
-                           u8 *data)
-{
-       u8 tmpidx = 0, tmpv8 = 0, bResult;
-
-       /* -----------------e-fuse reg ctrl --------------------------------- */
-       r8712_write8(adapter, EFUSE_CTRL + 1, (u8)(addr & 0xFF)); /* address */
-       tmpv8 = ((u8)((addr >> 8) & 0x03)) |
-                (r8712_read8(adapter, EFUSE_CTRL + 2) & 0xFC);
-       r8712_write8(adapter, EFUSE_CTRL + 2, tmpv8);
-       if (bRead) {
-               r8712_write8(adapter, EFUSE_CTRL + 3,  0x72); /* read cmd */
-               while (!(0x80 & r8712_read8(adapter, EFUSE_CTRL + 3)) &&
-                      (tmpidx < 100))
-                       tmpidx++;
-               if (tmpidx < 100) {
-                       *data = r8712_read8(adapter, EFUSE_CTRL);
-                       bResult = true;
-               } else {
-                       *data = 0;
-                       bResult = false;
-               }
-       } else {
-               r8712_write8(adapter, EFUSE_CTRL, *data); /* data */
-               r8712_write8(adapter, EFUSE_CTRL + 3, 0xF2); /* write cmd */
-               while ((0x80 & r8712_read8(adapter, EFUSE_CTRL + 3)) &&
-                      (tmpidx < 100))
-                       tmpidx++;
-               if (tmpidx < 100)
-                       bResult = true;
-               else
-                       bResult = false;
-       }
-       return bResult;
-}
-
-static u8 efuse_is_empty(struct _adapter *adapter, u8 *empty)
-{
-       u8 value, ret = true;
-
-       /* read one byte to check if E-Fuse is empty */
-       if (efuse_one_byte_rw(adapter, true, 0, &value)) {
-               if (value == 0xFF)
-                       *empty = true;
-               else
-                       *empty = false;
-       } else {
-               ret = false;
-       }
-       return ret;
-}
-
-void r8712_efuse_change_max_size(struct _adapter *adapter)
-{
-       u16 pre_pg_data_saddr = 0x1FB;
-       u16 i;
-       u16 pre_pg_data_size = 5;
-       u8 pre_pg_data[5];
-
-       for (i = 0; i < pre_pg_data_size; i++)
-               efuse_one_byte_read(adapter, pre_pg_data_saddr + i,
-                                   &pre_pg_data[i]);
-       if ((pre_pg_data[0] == 0x03) && (pre_pg_data[1] == 0x00) &&
-           (pre_pg_data[2] == 0x00) && (pre_pg_data[3] == 0x00) &&
-           (pre_pg_data[4] == 0x0C))
-               efuse_available_max_size -= pre_pg_data_size;
-}
-
-int r8712_efuse_get_max_size(struct _adapter *adapter)
-{
-       return  efuse_available_max_size;
-}
-
-static u8 calculate_word_cnts(const u8 word_en)
-{
-       u8 word_cnts = 0;
-       u8 word_idx;
-
-       for (word_idx = 0; word_idx < PGPKG_MAX_WORDS; word_idx++)
-               if (!(word_en & BIT(word_idx)))
-                       word_cnts++; /* 0 : write enable */
-       return word_cnts;
-}
-
-static void pgpacket_copy_data(const u8 word_en, const u8 *sourdata,
-                              u8 *targetdata)
-{
-       u8 tmpindex = 0;
-       u8 word_idx, byte_idx;
-
-       for (word_idx = 0; word_idx < PGPKG_MAX_WORDS; word_idx++) {
-               if (!(word_en & BIT(word_idx))) {
-                       byte_idx = word_idx * 2;
-                       targetdata[byte_idx] = sourdata[tmpindex++];
-                       targetdata[byte_idx + 1] = sourdata[tmpindex++];
-               }
-       }
-}
-
-u16 r8712_efuse_get_current_size(struct _adapter *adapter)
-{
-       int bContinual = true;
-       u16 efuse_addr = 0;
-       u8 hworden = 0;
-       u8 efuse_data, word_cnts = 0;
-
-       while (bContinual && efuse_one_byte_read(adapter, efuse_addr,
-              &efuse_data) && (efuse_addr < efuse_available_max_size)) {
-               if (efuse_data != 0xFF) {
-                       hworden =  efuse_data & 0x0F;
-                       word_cnts = calculate_word_cnts(hworden);
-                       /* read next header */
-                       efuse_addr = efuse_addr + (word_cnts * 2) + 1;
-               } else {
-                       bContinual = false;
-               }
-       }
-       return efuse_addr;
-}
-
-u8 r8712_efuse_pg_packet_read(struct _adapter *adapter, u8 offset, u8 *data)
-{
-       u8 hoffset = 0, hworden = 0, word_cnts = 0;
-       u16 efuse_addr = 0;
-       u8 efuse_data;
-       u8 tmpidx = 0;
-       u8 tmpdata[PGPKT_DATA_SIZE];
-       u8 ret = true;
-
-       if (!data)
-               return false;
-       if (offset > 0x0f)
-               return false;
-       memset(data, 0xFF, sizeof(u8) * PGPKT_DATA_SIZE);
-       while (efuse_addr < efuse_available_max_size) {
-               if (efuse_one_byte_read(adapter, efuse_addr, &efuse_data)) {
-                       if (efuse_data == 0xFF)
-                               break;
-                       hoffset = (efuse_data >> 4) & 0x0F;
-                       hworden =  efuse_data & 0x0F;
-                       word_cnts = calculate_word_cnts(hworden);
-                       if (hoffset == offset) {
-                               memset(tmpdata, 0xFF, PGPKT_DATA_SIZE);
-                               for (tmpidx = 0; tmpidx < word_cnts * 2;
-                                    tmpidx++) {
-                                       if (efuse_one_byte_read(adapter,
-                                           efuse_addr + 1 + tmpidx,
-                                           &efuse_data)) {
-                                               tmpdata[tmpidx] = efuse_data;
-                                       } else {
-                                               ret = false;
-                                       }
-                               }
-                               pgpacket_copy_data(hworden, tmpdata, data);
-                       }
-                       efuse_addr += 1 + (word_cnts * 2);
-               } else {
-                       ret = false;
-                       break;
-               }
-       }
-       return ret;
-}
-
-static u8 fix_header(struct _adapter *adapter, u8 header, u16 header_addr)
-{
-       struct PGPKT_STRUCT pkt;
-       u8 offset, word_en, value;
-       u16 addr;
-       int i;
-       u8 ret = true;
-
-       pkt.offset = GET_EFUSE_OFFSET(header);
-       pkt.word_en = GET_EFUSE_WORD_EN(header);
-       addr = header_addr + 1 + calculate_word_cnts(pkt.word_en) * 2;
-       if (addr > efuse_available_max_size)
-               return false;
-       /* retrieve original data */
-       addr = 0;
-       while (addr < header_addr) {
-               if (!efuse_one_byte_read(adapter, addr++, &value)) {
-                       ret = false;
-                       break;
-               }
-               offset = GET_EFUSE_OFFSET(value);
-               word_en = GET_EFUSE_WORD_EN(value);
-               if (pkt.offset != offset) {
-                       addr += calculate_word_cnts(word_en) * 2;
-                       continue;
-               }
-               for (i = 0; i < PGPKG_MAX_WORDS; i++) {
-                       if (!(BIT(i) & word_en))
-                               continue;
-                       if (BIT(i) & pkt.word_en) {
-                               if (efuse_one_byte_read(adapter,
-                                                       addr,
-                                                       &value))
-                                       pkt.data[i * 2] = value;
-                               else
-                                       return false;
-                               if (efuse_one_byte_read(adapter,
-                                                       addr + 1,
-                                                       &value))
-                                       pkt.data[i * 2 + 1] = value;
-                               else
-                                       return false;
-                       }
-                       addr += 2;
-               }
-       }
-       if (addr != header_addr)
-               return false;
-       addr++;
-       /* fill original data */
-       for (i = 0; i < PGPKG_MAX_WORDS; i++) {
-               if (BIT(i) & pkt.word_en) {
-                       efuse_one_byte_write(adapter, addr, pkt.data[i * 2]);
-                       efuse_one_byte_write(adapter, addr + 1,
-                                            pkt.data[i * 2 + 1]);
-                       /* additional check */
-                       if (!efuse_one_byte_read(adapter, addr, &value)) {
-                               ret = false;
-                       } else if (pkt.data[i * 2] != value) {
-                               ret = false;
-                               if (value == 0xFF) /* write again */
-                                       efuse_one_byte_write(adapter, addr,
-                                                            pkt.data[i * 2]);
-                       }
-                       if (!efuse_one_byte_read(adapter, addr + 1, &value)) {
-                               ret = false;
-                       } else if (pkt.data[i * 2 + 1] != value) {
-                               ret = false;
-                               if (value == 0xFF) /* write again */
-                                       efuse_one_byte_write(adapter, addr + 1,
-                                                            pkt.data[i * 2 +
-                                                                     1]);
-                       }
-               }
-               addr += 2;
-       }
-       return ret;
-}
-
-u8 r8712_efuse_pg_packet_write(struct _adapter *adapter, const u8 offset,
-                              const u8 word_en, const u8 *data)
-{
-       u8 pg_header = 0;
-       u16 efuse_addr = 0, curr_size = 0;
-       u8 efuse_data, target_word_cnts = 0;
-       int repeat_times;
-       int sub_repeat;
-       u8 bResult = true;
-
-       /* check if E-Fuse Clock Enable and E-Fuse Clock is 40M */
-       efuse_data = r8712_read8(adapter, EFUSE_CLK_CTRL);
-       if (efuse_data != 0x03)
-               return false;
-       pg_header = MAKE_EFUSE_HEADER(offset, word_en);
-       target_word_cnts = calculate_word_cnts(word_en);
-       repeat_times = 0;
-       efuse_addr = 0;
-       while (efuse_addr < efuse_available_max_size) {
-               curr_size = r8712_efuse_get_current_size(adapter);
-               if ((curr_size + 1 + target_word_cnts * 2) >
-                    efuse_available_max_size)
-                       return false; /*target_word_cnts + pg header(1 byte)*/
-               efuse_addr = curr_size; /* current size is also the last addr*/
-               efuse_one_byte_write(adapter, efuse_addr, pg_header); /*hdr*/
-               sub_repeat = 0;
-               /* check if what we read is what we write */
-               while (!efuse_one_byte_read(adapter, efuse_addr,
-                                           &efuse_data)) {
-                       if (++sub_repeat > _REPEAT_THRESHOLD_) {
-                               bResult = false; /* continue to blind write */
-                               break; /* continue to blind write */
-                       }
-               }
-               if ((sub_repeat > _REPEAT_THRESHOLD_) ||
-                   (pg_header == efuse_data)) {
-                       /* write header ok OR can't check header(creep) */
-                       u8 i;
-
-                       /* go to next address */
-                       efuse_addr++;
-                       for (i = 0; i < target_word_cnts * 2; i++) {
-                               efuse_one_byte_write(adapter,
-                                                    efuse_addr + i,
-                                                    *(data + i));
-                               if (!efuse_one_byte_read(adapter,
-                                                        efuse_addr + i,
-                                                        &efuse_data))
-                                       bResult = false;
-                               else if (*(data + i) != efuse_data) /* fail */
-                                       bResult = false;
-                       }
-                       break;
-               }
-               /* write header fail */
-               bResult = false;
-               if (efuse_data == 0xFF)
-                       return bResult; /* nothing damaged. */
-               /* call rescue procedure */
-               if (!fix_header(adapter, efuse_data, efuse_addr))
-                       return false; /* rescue fail */
-
-               if (++repeat_times > _REPEAT_THRESHOLD_) /* fail */
-                       break;
-               /* otherwise, take another risk... */
-       }
-       return bResult;
-}
-
-u8 r8712_efuse_access(struct _adapter *adapter, u8 bRead, u16 start_addr,
-                     u16 cnts, u8 *data)
-{
-       int i;
-       u8 res = true;
-
-       if (start_addr > EFUSE_MAX_SIZE)
-               return false;
-       if (!bRead && ((start_addr + cnts) >
-          efuse_available_max_size))
-               return false;
-       if (!bRead && !r8712_efuse_reg_init(adapter))
-               return false;
-       /* -----------------e-fuse one byte read / write ---------------------*/
-       for (i = 0; i < cnts; i++) {
-               if ((start_addr + i) > EFUSE_MAX_SIZE) {
-                       res = false;
-                       break;
-               }
-               res = efuse_one_byte_rw(adapter, bRead, start_addr + i,
-                                       data + i);
-               if (!bRead && !res)
-                       break;
-       }
-       if (!bRead)
-               r8712_efuse_reg_uninit(adapter);
-       return res;
-}
-
-u8 r8712_efuse_map_read(struct _adapter *adapter, u16 addr, u16 cnts, u8 *data)
-{
-       u8 offset, ret = true;
-       u8 pktdata[PGPKT_DATA_SIZE];
-       int i, idx;
-
-       if ((addr + cnts) > EFUSE_MAP_MAX_SIZE)
-               return false;
-       if (efuse_is_empty(adapter, &offset) && offset) {
-               for (i = 0; i < cnts; i++)
-                       data[i] = 0xFF;
-               return ret;
-       }
-       offset = (addr >> 3) & 0xF;
-       ret = r8712_efuse_pg_packet_read(adapter, offset, pktdata);
-       i = addr & 0x7; /* pktdata index */
-       idx = 0;        /* data index */
-
-       do {
-               for (; i < PGPKT_DATA_SIZE; i++) {
-                       data[idx++] = pktdata[i];
-                       if (idx == cnts)
-                               return ret;
-               }
-               offset++;
-               if (!r8712_efuse_pg_packet_read(adapter, offset, pktdata))
-                       ret = false;
-               i = 0;
-       } while (1);
-       return ret;
-}
-
-u8 r8712_efuse_map_write(struct _adapter *adapter, u16 addr, u16 cnts,
-                        u8 *data)
-{
-       u8 offset, word_en, empty;
-       u8 pktdata[PGPKT_DATA_SIZE], newdata[PGPKT_DATA_SIZE];
-       int i, j, idx;
-
-       if ((addr + cnts) > EFUSE_MAP_MAX_SIZE)
-               return false;
-       /* check if E-Fuse Clock Enable and E-Fuse Clock is 40M */
-       empty = r8712_read8(adapter, EFUSE_CLK_CTRL);
-       if (empty != 0x03)
-               return false;
-       if (efuse_is_empty(adapter, &empty)) {
-               if (empty)
-                       memset(pktdata, 0xFF, PGPKT_DATA_SIZE);
-       } else {
-               return false;
-       }
-       offset = (addr >> 3) & 0xF;
-       if (!empty)
-               if (!r8712_efuse_pg_packet_read(adapter, offset, pktdata))
-                       return false;
-       word_en = 0xF;
-       memset(newdata, 0xFF, PGPKT_DATA_SIZE);
-       i = addr & 0x7; /* pktdata index */
-       j = 0;          /* newdata index */
-       idx = 0;        /* data index */
-
-       if (i & 0x1) {
-               /*  odd start */
-               if (data[idx] != pktdata[i]) {
-                       word_en &= ~BIT(i >> 1);
-                       newdata[j++] = pktdata[i - 1];
-                       newdata[j++] = data[idx];
-               }
-               i++;
-               idx++;
-       }
-       do {
-               for (; i < PGPKT_DATA_SIZE; i += 2) {
-                       if ((cnts - idx) == 1) {
-                               if (data[idx] != pktdata[i]) {
-                                       word_en &= ~BIT(i >> 1);
-                                       newdata[j++] = data[idx];
-                                       newdata[j++] = pktdata[1 + 1];
-                               }
-                               idx++;
-                               break;
-                       }
-
-                       if ((data[idx] != pktdata[i]) || (data[idx + 1] !=
-                            pktdata[i + 1])) {
-                               word_en &= ~BIT(i >> 1);
-                               newdata[j++] = data[idx];
-                               newdata[j++] = data[idx + 1];
-                       }
-                       idx += 2;
-
-                       if (idx == cnts)
-                               break;
-               }
-
-               if (word_en != 0xF)
-                       if (!r8712_efuse_pg_packet_write(adapter, offset,
-                                                        word_en, newdata))
-                               return false;
-               if (idx == cnts)
-                       break;
-               offset++;
-               if (!empty)
-                       if (!r8712_efuse_pg_packet_read(adapter, offset,
-                                                       pktdata))
-                               return false;
-               i = 0;
-               j = 0;
-               word_en = 0xF;
-               memset(newdata, 0xFF, PGPKT_DATA_SIZE);
-       } while (1);
-
-       return true;
-}
diff --git a/drivers/staging/rtl8712/rtl8712_efuse.h b/drivers/staging/rtl8712/rtl8712_efuse.h
deleted file mode 100644 (file)
index 2e1ea9d..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __RTL8712_EFUSE_H__
-#define __RTL8712_EFUSE_H__
-
-#include "osdep_service.h"
-
-#define _REPEAT_THRESHOLD_     3
-
-#define EFUSE_MAX_SIZE         512
-#define EFUSE_MAP_MAX_SIZE     128
-
-#define PGPKG_MAX_WORDS        4
-#define PGPKT_DATA_SIZE        8 /* PGPKG_MAX_WORDS*2; BYTES sizeof(u8)*8*/
-#define MAX_PGPKT_SIZE 9 /* 1 + PGPKT_DATA_SIZE; header + 2 * 4 words (BYTES)*/
-
-#define GET_EFUSE_OFFSET(header)       ((header & 0xF0) >> 4)
-#define GET_EFUSE_WORD_EN(header)      (header & 0x0F)
-#define MAKE_EFUSE_HEADER(offset, word_en)     ((((offset) & 0x0F) << 4) | \
-                                               ((word_en) & 0x0F))
-/*--------------------------------------------------------------------------*/
-struct PGPKT_STRUCT {
-       u8 offset;
-       u8 word_en;
-       u8 data[PGPKT_DATA_SIZE];
-};
-/*--------------------------------------------------------------------------*/
-u8 r8712_efuse_reg_init(struct _adapter *padapter);
-void r8712_efuse_reg_uninit(struct _adapter *padapter);
-u16 r8712_efuse_get_current_size(struct _adapter *padapter);
-int r8712_efuse_get_max_size(struct _adapter *padapter);
-void r8712_efuse_change_max_size(struct _adapter *padapter);
-u8 r8712_efuse_pg_packet_read(struct _adapter *padapter,
-                             u8 offset, u8 *data);
-u8 r8712_efuse_pg_packet_write(struct _adapter *padapter,
-                              const u8 offset, const u8 word_en,
-                              const u8 *data);
-u8 r8712_efuse_access(struct _adapter *padapter, u8 bRead,
-                     u16 start_addr, u16 cnts, u8 *data);
-u8 r8712_efuse_map_read(struct _adapter *padapter, u16 addr,
-                       u16 cnts, u8 *data);
-u8 r8712_efuse_map_write(struct _adapter *padapter, u16 addr,
-                        u16 cnts, u8 *data);
-#endif
diff --git a/drivers/staging/rtl8712/rtl8712_event.h b/drivers/staging/rtl8712/rtl8712_event.h
deleted file mode 100644 (file)
index 0d3e5fe..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef _RTL8712_EVENT_H_
-#define _RTL8712_EVENT_H_
-
-void r8712_event_handle(struct _adapter *padapter, __le32 *peventbuf);
-void r8712_got_addbareq_event_callback(struct _adapter *adapter, u8 *pbuf);
-
-enum rtl8712_c2h_event {
-       GEN_EVT_CODE(_Read_MACREG) = 0,         /*0*/
-       GEN_EVT_CODE(_Read_BBREG),
-       GEN_EVT_CODE(_Read_RFREG),
-       GEN_EVT_CODE(_Read_EEPROM),
-       GEN_EVT_CODE(_Read_EFUSE),
-       GEN_EVT_CODE(_Read_CAM),                /*5*/
-       GEN_EVT_CODE(_Get_BasicRate),
-       GEN_EVT_CODE(_Get_DataRate),
-       GEN_EVT_CODE(_Survey),                  /*8*/
-       GEN_EVT_CODE(_SurveyDone),              /*9*/
-
-       GEN_EVT_CODE(_JoinBss),                 /*10*/
-       GEN_EVT_CODE(_AddSTA),
-       GEN_EVT_CODE(_DelSTA),
-       GEN_EVT_CODE(_AtimDone),
-       GEN_EVT_CODE(_TX_Report),
-       GEN_EVT_CODE(_CCX_Report),              /*15*/
-       GEN_EVT_CODE(_DTM_Report),
-       GEN_EVT_CODE(_TX_Rate_Statistics),
-       GEN_EVT_CODE(_C2HLBK),
-       GEN_EVT_CODE(_FWDBG),
-       GEN_EVT_CODE(_C2HFEEDBACK),             /*20*/
-       GEN_EVT_CODE(_ADDBA),
-       GEN_EVT_CODE(_C2HBCN),
-       GEN_EVT_CODE(_ReportPwrState),          /*filen: only for PCIE, USB*/
-       GEN_EVT_CODE(_WPS_PBC),                 /*24*/
-       GEN_EVT_CODE(_ADDBAReq_Report),         /*25*/
-       MAX_C2HEVT
-};
-
-#ifdef _RTL8712_CMD_C_
-
-static struct fwevent wlanevents[] = {
-       {0, NULL},      /*0*/
-       {0, NULL},
-       {0, NULL},
-       {0, NULL},
-       {0, NULL},
-       {0, NULL},
-       {0, NULL},
-       {0, NULL},
-       {0, &r8712_survey_event_callback},              /*8*/
-       {sizeof(struct surveydone_event),
-               &r8712_surveydone_event_callback},      /*9*/
-
-       {0, &r8712_joinbss_event_callback},             /*10*/
-       {sizeof(struct stassoc_event), &r8712_stassoc_event_callback},
-       {sizeof(struct stadel_event), &r8712_stadel_event_callback},
-       {0, &r8712_atimdone_event_callback},
-       {0, NULL},
-       {0, NULL},      /*15*/
-       {0, NULL},
-       {0, NULL},
-       {0, NULL},
-       {0, NULL},      /*fwdbg_event_callback},*/
-       {0, NULL},      /*20*/
-       {0, NULL},
-       {0, NULL},
-       {0, &r8712_cpwm_event_callback},
-       {0, &r8712_wpspbc_event_callback},
-       {0, &r8712_got_addbareq_event_callback},
-};
-
-#endif/*_RTL8712_CMD_C_*/
-
-#endif
diff --git a/drivers/staging/rtl8712/rtl8712_fifoctrl_bitdef.h b/drivers/staging/rtl8712/rtl8712_fifoctrl_bitdef.h
deleted file mode 100644 (file)
index f09645f..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_FIFOCTRL_BITDEF_H__
-#define __RTL8712_FIFOCTRL_BITDEF_H__
-
-/*PBP*/
-#define        _PSTX_MSK                       0xF0
-#define        _PSTX_SHT                       4
-#define        _PSRX_MSK                       0x0F
-#define        _PSRX_SHT                       0
-
-/*TXFF_STATUS*/
-#define        _TXSTATUS_OVF           BIT(15)
-
-/*RXFF_STATUS*/
-#define        _STATUSFF1_OVF          BIT(7)
-#define        _STATUSFF1_EMPTY        BIT(6)
-#define        _STATUSFF0_OVF          BIT(5)
-#define        _STATUSFF0_EMPTY        BIT(4)
-#define        _RXFF1_OVF                      BIT(3)
-#define        _RXFF1_EMPTY            BIT(2)
-#define        _RXFF0_OVF                      BIT(1)
-#define        _RXFF0_EMPTY            BIT(0)
-
-/*TXFF_EMPTY_TH*/
-#define        _BKQ_EMPTY_TH_MSK       0x0F0000
-#define        _BKQ_EMPTY_TH_SHT       16
-#define        _BEQ_EMPTY_TH_MSK       0x00F000
-#define        _BEQ_EMPTY_TH_SHT       12
-#define        _VIQ_EMPTY_TH_MSK       0x000F00
-#define        _VIQ_EMPTY_TH_SHT       8
-#define        _VOQ_EMPTY_TH_MSK       0x0000F0
-#define        _VOQ_EMPTY_TH_SHT       4
-#define        _BMCQ_EMPTY_TH_MSK      0x00000F
-#define        _BMCQ_EMPTY_TH_SHT      0
-
-/*SDIO_RX_BLKSZ*/
-#define        _SDIO_RX_BLKSZ_MSK      0x07
-
-/*RXDMA_CTRL*/
-#define        _C2HFF_POLL             BIT(4)
-#define        _RXPKT_POLL             BIT(0)
-
-/*RXPKT_NUM*/
-#define        _RXCMD_NUM_MSK          0xFF00
-#define        _RXCMD_NUM_SHT          8
-#define        _RXFF0_NUM_MSK          0x00FF
-#define        _RXFF0_NUM_SHT          0
-
-/*FIFOPAGE2*/
-#define        _PUB_AVAL_PG_MSK        0xFFFF0000
-#define        _PUB_AVAL_PG_SHT        16
-#define        _BCN_AVAL_PG_MSK        0x0000FFFF
-#define        _BCN_AVAL_PG_SHT        0
-
-/*RX0PKTNUM*/
-#define        _RXFF0_DEC_POLL                         BIT(15)
-#define        _RXFF0_PKT_DEC_NUM_MSK          0x3F00
-#define        _RXFF0_PKT_DEC_NUM_SHT          8
-#define        _RXFF0_PKTNUM_RPT_MSK           0x00FF
-#define        _RXFF0_PKTNUM_RPT_SHT           0
-
-/*RX1PKTNUM*/
-#define        _RXFF1_DEC_POLL                         BIT(15)
-#define        _RXFF1_PKT_DEC_NUM_MSK          0x3F00
-#define        _RXFF1_PKT_DEC_NUM_SHT          8
-#define        _RXFF1_PKTNUM_RPT_MSK           0x00FF
-#define        _RXFF1_PKTNUM_RPT_SHT           0
-
-/*RXFLTMAP0*/
-#define        _MGTFLT13EN             BIT(13)
-#define        _MGTFLT12EN             BIT(12)
-#define        _MGTFLT11EN             BIT(11)
-#define        _MGTFLT10EN             BIT(10)
-#define        _MGTFLT9EN              BIT(9)
-#define        _MGTFLT8EN              BIT(8)
-#define        _MGTFLT5EN              BIT(5)
-#define        _MGTFLT4EN              BIT(4)
-#define        _MGTFLT3EN              BIT(3)
-#define        _MGTFLT2EN              BIT(2)
-#define        _MGTFLT1EN              BIT(1)
-#define        _MGTFLT0EN              BIT(0)
-
-/*RXFLTMAP1*/
-#define        _CTRLFLT15EN    BIT(15)
-#define        _CTRLFLT14EN    BIT(14)
-#define        _CTRLFLT13EN    BIT(13)
-#define        _CTRLFLT12EN    BIT(12)
-#define        _CTRLFLT11EN    BIT(11)
-#define        _CTRLFLT10EN    BIT(10)
-#define        _CTRLFLT9EN             BIT(9)
-#define        _CTRLFLT8EN             BIT(8)
-#define        _CTRLFLT7EN             BIT(7)
-#define        _CTRLFLT6EN             BIT(6)
-
-/*RXFLTMAP2*/
-#define        _DATAFLT15EN    BIT(15)
-#define        _DATAFLT14EN    BIT(14)
-#define        _DATAFLT13EN    BIT(13)
-#define        _DATAFLT12EN    BIT(12)
-#define        _DATAFLT11EN    BIT(11)
-#define        _DATAFLT10EN    BIT(10)
-#define        _DATAFLT9EN             BIT(9)
-#define        _DATAFLT8EN             BIT(8)
-#define        _DATAFLT7EN             BIT(7)
-#define        _DATAFLT6EN             BIT(6)
-#define        _DATAFLT5EN             BIT(5)
-#define        _DATAFLT4EN             BIT(4)
-#define        _DATAFLT3EN             BIT(3)
-#define        _DATAFLT2EN             BIT(2)
-#define        _DATAFLT1EN             BIT(1)
-#define        _DATAFLT0EN             BIT(0)
-
-/*RXFLTMAP3*/
-#define        _MESHAFLT1EN            BIT(1)
-#define        _MESHAFLT0EN            BIT(0)
-
-/*TXPKT_NUM_CTRL*/
-#define        _TXPKTNUM_DEC           BIT(8)
-#define        _TXPKTNUM_MSK           0x00FF
-#define        _TXPKTNUM_SHT           0
-
-/*TXFF_PG_NUM*/
-#define        _TXFF_PG_NUM_MSK        0x0FFF
-
-#endif /*      __RTL8712_FIFOCTRL_BITDEF_H__ */
-
diff --git a/drivers/staging/rtl8712/rtl8712_fifoctrl_regdef.h b/drivers/staging/rtl8712/rtl8712_fifoctrl_regdef.h
deleted file mode 100644 (file)
index 189fdeb..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_FIFOCTRL_REGDEF_H__
-#define __RTL8712_FIFOCTRL_REGDEF_H__
-
-#define RQPN                   (RTL8712_FIFOCTRL_ + 0x00)
-#define RXFF_BNDY              (RTL8712_FIFOCTRL_ + 0x0C)
-#define RXRPT_BNDY             (RTL8712_FIFOCTRL_ + 0x10)
-#define TXPKTBUF_PGBNDY                (RTL8712_FIFOCTRL_ + 0x14)
-#define PBP                    (RTL8712_FIFOCTRL_ + 0x15)
-#define RX_DRVINFO_SZ          (RTL8712_FIFOCTRL_ + 0x16)
-#define TXFF_STATUS            (RTL8712_FIFOCTRL_ + 0x17)
-#define RXFF_STATUS            (RTL8712_FIFOCTRL_ + 0x18)
-#define TXFF_EMPTY_TH          (RTL8712_FIFOCTRL_ + 0x19)
-#define SDIO_RX_BLKSZ          (RTL8712_FIFOCTRL_ + 0x1C)
-#define RXDMA_RXCTRL           (RTL8712_FIFOCTRL_ + 0x1D)
-#define RXPKT_NUM              (RTL8712_FIFOCTRL_ + 0x1E)
-#define RXPKT_NUM_C2H          (RTL8712_FIFOCTRL_ + 0x1F)
-#define C2HCMD_UDT_SIZE                (RTL8712_FIFOCTRL_ + 0x20)
-#define C2HCMD_UDT_ADDR                (RTL8712_FIFOCTRL_ + 0x22)
-#define FIFOPAGE2              (RTL8712_FIFOCTRL_ + 0x24)
-#define FIFOPAGE1              (RTL8712_FIFOCTRL_ + 0x28)
-#define FW_RSVD_PG_CTRL                (RTL8712_FIFOCTRL_ + 0x30)
-#define TXRPTFF_RDPTR          (RTL8712_FIFOCTRL_ + 0x40)
-#define TXRPTFF_WTPTR          (RTL8712_FIFOCTRL_ + 0x44)
-#define C2HFF_RDPTR            (RTL8712_FIFOCTRL_ + 0x48)
-#define C2HFF_WTPTR            (RTL8712_FIFOCTRL_ + 0x4C)
-#define RXFF0_RDPTR            (RTL8712_FIFOCTRL_ + 0x50)
-#define RXFF0_WTPTR            (RTL8712_FIFOCTRL_ + 0x54)
-#define RXFF1_RDPTR            (RTL8712_FIFOCTRL_ + 0x58)
-#define RXFF1_WTPTR            (RTL8712_FIFOCTRL_ + 0x5C)
-#define RXRPT0FF_RDPTR         (RTL8712_FIFOCTRL_ + 0x60)
-#define RXRPT0FF_WTPTR         (RTL8712_FIFOCTRL_ + 0x64)
-#define RXRPT1FF_RDPTR         (RTL8712_FIFOCTRL_ + 0x68)
-#define RXRPT1FF_WTPTR         (RTL8712_FIFOCTRL_ + 0x6C)
-#define RX0PKTNUM              (RTL8712_FIFOCTRL_ + 0x72)
-#define RX1PKTNUM              (RTL8712_FIFOCTRL_ + 0x74)
-#define RXFLTMAP0              (RTL8712_FIFOCTRL_ + 0x76)
-#define RXFLTMAP1              (RTL8712_FIFOCTRL_ + 0x78)
-#define RXFLTMAP2              (RTL8712_FIFOCTRL_ + 0x7A)
-#define RXFLTMAP3              (RTL8712_FIFOCTRL_ + 0x7c)
-#define TBDA                   (RTL8712_FIFOCTRL_ + 0x84)
-#define THPDA                  (RTL8712_FIFOCTRL_ + 0x88)
-#define TCDA                   (RTL8712_FIFOCTRL_ + 0x8C)
-#define TMDA                   (RTL8712_FIFOCTRL_ + 0x90)
-#define HDA                    (RTL8712_FIFOCTRL_ + 0x94)
-#define TVODA                  (RTL8712_FIFOCTRL_ + 0x98)
-#define TVIDA                  (RTL8712_FIFOCTRL_ + 0x9C)
-#define TBEDA                  (RTL8712_FIFOCTRL_ + 0xA0)
-#define TBKDA                  (RTL8712_FIFOCTRL_ + 0xA4)
-#define RCDA                   (RTL8712_FIFOCTRL_ + 0xA8)
-#define RDSA                   (RTL8712_FIFOCTRL_ + 0xAC)
-#define TXPKT_NUM_CTRL         (RTL8712_FIFOCTRL_ + 0xB0)
-#define TXQ_PGADD              (RTL8712_FIFOCTRL_ + 0xB3)
-#define TXFF_PG_NUM            (RTL8712_FIFOCTRL_ + 0xB4)
-
-#endif /* __RTL8712_FIFOCTRL_REGDEF_H__ */
diff --git a/drivers/staging/rtl8712/rtl8712_gp_bitdef.h b/drivers/staging/rtl8712/rtl8712_gp_bitdef.h
deleted file mode 100644 (file)
index ee651fb..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL8712_GP_BITDEF_H__
-#define __RTL8712_GP_BITDEF_H__
-
-/*GPIO_CTRL*/
-#define        _GPIO_MOD_MSK                   0xFF000000
-#define        _GPIO_MOD_SHT                   24
-#define        _GPIO_IO_SEL_MSK                0x00FF0000
-#define        _GPIO_IO_SEL_SHT                16
-#define        _GPIO_OUT_MSK                   0x0000FF00
-#define        _GPIO_OUT_SHT                   8
-#define        _GPIO_IN_MSK                    0x000000FF
-#define        _GPIO_IN_SHT                    0
-
-/*SYS_PINMUX_CFG*/
-#define        _GPIOSEL_MSK                    0x0003
-#define        _GPIOSEL_SHT                    0
-
-/*LED_CFG*/
-#define _LED1SV                                BIT(7)
-#define _LED1CM_MSK                    0x0070
-#define _LED1CM_SHT                    4
-#define _LED0SV                                BIT(3)
-#define _LED0CM_MSK                    0x0007
-#define _LED0CM_SHT                    0
-
-/*PHY_REG*/
-#define _HST_RDRDY_SHT                 0
-#define _HST_RDRDY_MSK                 0xFF
-#define _HST_RDRDY                     BIT(_HST_RDRDY_SHT)
-#define _CPU_WTBUSY_SHT                        1
-#define _CPU_WTBUSY_MSK                        0xFF
-#define _CPU_WTBUSY                    BIT(_CPU_WTBUSY_SHT)
-
-/* 11. General Purpose Registers   (Offset: 0x02E0 - 0x02FF)*/
-
-/*       8192S GPIO Config Setting (offset 0x2F1, 1 byte)*/
-
-/*----------------------------------------------------------------------------*/
-
-#define                GPIOMUX_EN      BIT(3)  /* When this bit is set to "1",
-                                        * GPIO PINs will switch to MAC
-                                        * GPIO Function
-                                        */
-#define                GPIOSEL_GPIO    0       /* UART or JTAG or pure GPIO*/
-#define                GPIOSEL_PHYDBG  1       /* PHYDBG*/
-#define                GPIOSEL_BT      2       /* BT_coex*/
-#define                GPIOSEL_WLANDBG 3       /* WLANDBG*/
-#define                GPIOSEL_GPIO_MASK       (~(BIT(0) | BIT(1)))
-/* HW Radio OFF switch (GPIO BIT) */
-#define                HAL_8192S_HW_GPIO_OFF_BIT       BIT(3)
-#define                HAL_8192S_HW_GPIO_OFF_MASK      0xF7
-#define                HAL_8192S_HW_GPIO_WPS_BIT       BIT(4)
-
-#endif /*__RTL8712_GP_BITDEF_H__*/
-
diff --git a/drivers/staging/rtl8712/rtl8712_gp_regdef.h b/drivers/staging/rtl8712/rtl8712_gp_regdef.h
deleted file mode 100644 (file)
index 892a7fb..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL8712_GP_REGDEF_H__
-#define __RTL8712_GP_REGDEF_H__
-
-#define PSTIMER                        (RTL8712_GP_ + 0x00)
-#define TIMER1                 (RTL8712_GP_ + 0x04)
-#define TIMER2                 (RTL8712_GP_ + 0x08)
-#define GPIO_CTRL              (RTL8712_GP_ + 0x0C)
-#define GPIO_IO_SEL            (RTL8712_GP_ + 0x0E)
-#define GPIO_INTCTRL           (RTL8712_GP_ + 0x10)
-#define MAC_PINMUX_CTRL                (RTL8712_GP_ + 0x11)
-#define LEDCFG                 (RTL8712_GP_ + 0x12)
-#define PHY_REG_RPT            (RTL8712_GP_ + 0x13)
-#define PHY_REG_DATA           (RTL8712_GP_ + 0x14)
-
-#endif /*__RTL8712_GP_REGDEF_H__ */
-
diff --git a/drivers/staging/rtl8712/rtl8712_hal.h b/drivers/staging/rtl8712/rtl8712_hal.h
deleted file mode 100644 (file)
index 66cc464..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL8712_HAL_H__
-#define __RTL8712_HAL_H__
-
-enum _HW_VERSION {
-       RTL8712_FPGA,
-       RTL8712_1stCUT, /*A Cut (RTL8712_ASIC)*/
-       RTL8712_2ndCUT, /*B Cut*/
-       RTL8712_3rdCUT, /*C Cut*/
-};
-
-enum _LOOPBACK_TYPE {
-       RTL8712_AIR_TRX = 0,
-       RTL8712_MAC_LBK,
-       RTL8712_BB_LBK,
-       RTL8712_MAC_FW_LBK = 4,
-       RTL8712_BB_FW_LBK = 8,
-};
-
-enum RTL871X_HCI_TYPE {
-       RTL8712_SDIO,
-       RTL8712_USB,
-};
-
-enum RTL8712_RF_CONFIG {
-       RTL8712_RF_1T1R,
-       RTL8712_RF_1T2R,
-       RTL8712_RF_2T2R
-};
-
-enum _RTL8712_HCI_TYPE_ {
-       RTL8712_HCI_TYPE_PCIE = 0x01,
-       RTL8712_HCI_TYPE_AP_PCIE = 0x81,
-       RTL8712_HCI_TYPE_USB = 0x02,
-       RTL8712_HCI_TYPE_92USB = 0x02,
-       RTL8712_HCI_TYPE_AP_USB = 0x82,
-       RTL8712_HCI_TYPE_72USB = 0x12,
-       RTL8712_HCI_TYPE_SDIO = 0x04,
-       RTL8712_HCI_TYPE_72SDIO = 0x14
-};
-
-struct fw_priv {   /*8-bytes alignment required*/
-       /*--- long word 0 ----*/
-       unsigned char signature_0;  /*0x12: CE product, 0x92: IT product*/
-       unsigned char signature_1;  /*0x87: CE product, 0x81: IT product*/
-       unsigned char hci_sel; /*0x81: PCI-AP, 01:PCIe, 02: 92S-U, 0x82: USB-AP,
-                               * 0x12: 72S-U, 03:SDIO
-                               */
-       unsigned char chip_version; /*the same value as register value*/
-       unsigned char customer_ID_0; /*customer  ID low byte*/
-       unsigned char customer_ID_1; /*customer  ID high byte*/
-       unsigned char rf_config;  /*0x11:  1T1R, 0x12: 1T2R, 0x92: 1T2R turbo,
-                                  * 0x22: 2T2R
-                                  */
-       unsigned char usb_ep_num;  /* 4: 4EP, 6: 6EP, 11: 11EP*/
-       /*--- long word 1 ----*/
-       unsigned char regulatory_class_0; /*regulatory class bit map 0*/
-       unsigned char regulatory_class_1; /*regulatory class bit map 1*/
-       unsigned char regulatory_class_2; /*regulatory class bit map 2*/
-       unsigned char regulatory_class_3; /*regulatory class bit map 3*/
-       unsigned char rfintfs;    /* 0:SWSI, 1:HWSI, 2:HWPI*/
-       unsigned char def_nettype;
-       unsigned char turbo_mode;
-       unsigned char low_power_mode;/* 0: normal mode, 1: low power mode*/
-       /*--- long word 2 ----*/
-       unsigned char lbk_mode; /*0x00: normal, 0x03: MACLBK, 0x01: PHYLBK*/
-       unsigned char mp_mode; /* 1: for MP use, 0: for normal driver */
-       unsigned char vcs_type; /* 0:off 1:on 2:auto */
-       unsigned char vcs_mode; /* 1:RTS/CTS 2:CTS to self */
-       unsigned char rsvd022;
-       unsigned char rsvd023;
-       unsigned char rsvd024;
-       unsigned char rsvd025;
-       /*--- long word 3 ----*/
-       unsigned char qos_en;    /*1: QoS enable*/
-       unsigned char bw_40MHz_en;   /*1: 40MHz BW enable*/
-       unsigned char AMSDU2AMPDU_en;   /*1: 4181 convert AMSDU to AMPDU,
-                                        * 0: disable
-                                        */
-       unsigned char AMPDU_en;   /*1: 11n AMPDU enable*/
-       unsigned char rate_control_offload; /*1: FW offloads,0: driver handles*/
-       unsigned char aggregation_offload;  /*1: FW offloads,0: driver handles*/
-       unsigned char rsvd030;
-       unsigned char rsvd031;
-       /*--- long word 4 ----*/
-       unsigned char beacon_offload;   /* 1. FW offloads, 0: driver handles*/
-       unsigned char MLME_offload;   /* 2. FW offloads, 0: driver handles*/
-       unsigned char hwpc_offload;   /* 3. FW offloads, 0: driver handles*/
-       unsigned char tcp_checksum_offload; /*4. FW offloads,0: driver handles*/
-       unsigned char tcp_offload;    /* 5. FW offloads, 0: driver handles*/
-       unsigned char ps_control_offload; /* 6. FW offloads, 0: driver handles*/
-       unsigned char WWLAN_offload;   /* 7. FW offloads, 0: driver handles*/
-       unsigned char rsvd040;
-       /*--- long word 5 ----*/
-       unsigned char tcp_tx_frame_len_L;  /*tcp tx packet length low byte*/
-       unsigned char tcp_tx_frame_len_H;  /*tcp tx packet length high byte*/
-       unsigned char tcp_rx_frame_len_L;  /*tcp rx packet length low byte*/
-       unsigned char tcp_rx_frame_len_H;  /*tcp rx packet length high byte*/
-       unsigned char rsvd050;
-       unsigned char rsvd051;
-       unsigned char rsvd052;
-       unsigned char rsvd053;
-};
-
-struct fw_hdr {/*8-byte alignment required*/
-       unsigned short  signature;
-       unsigned short  version;        /* 0x8000 ~ 0x8FFF for FPGA version,
-                                        * 0x0000 ~ 0x7FFF for ASIC version,
-                                        */
-       unsigned int            dmem_size;    /*define the size of boot loader*/
-       unsigned int            img_IMEM_size; /*define the size of FW in IMEM*/
-       unsigned int            img_SRAM_size; /*define the size of FW in SRAM*/
-       unsigned int            fw_priv_sz; /*define the size of DMEM variable*/
-       unsigned short  efuse_addr;
-       unsigned short  h2ccnd_resp_addr;
-       unsigned int            SVNRevision;
-       unsigned int            release_time; /*Mon:Day:Hr:Min*/
-       struct fw_priv  fwpriv;
-};
-
-struct hal_priv {
-       /*Endpoint handles*/
-       struct  net_device *pipehdls_r8712[10];
-       u8 (*hal_bus_init)(struct _adapter *adapter);
-};
-
-uint    rtl8712_hal_init(struct _adapter *padapter);
-int rtl871x_load_fw(struct _adapter *padapter);
-
-#endif
diff --git a/drivers/staging/rtl8712/rtl8712_interrupt_bitdef.h b/drivers/staging/rtl8712/rtl8712_interrupt_bitdef.h
deleted file mode 100644 (file)
index e9732a1..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_INTERRUPT_BITDEF_H__
-#define __RTL8712_INTERRUPT_BITDEF_H__
-
-/*HIMR*/
-/*HISR*/
-#define        _CPUERR                                 BIT(29)
-#define        _ATIMEND                                BIT(28)
-#define        _TXBCNOK                                BIT(27)
-#define        _TXBCNERR                               BIT(26)
-#define        _BCNDMAINT4                             BIT(25)
-#define        _BCNDMAINT3                             BIT(24)
-#define        _BCNDMAINT2                             BIT(23)
-#define        _BCNDMAINT1                             BIT(22)
-#define        _BCNDOK4                                BIT(21)
-#define        _BCNDOK3                                BIT(20)
-#define        _BCNDOK2                                BIT(19)
-#define        _BCNDOK1                                BIT(18)
-#define        _TIMEOUT2                               BIT(17)
-#define        _TIMEOUT1                               BIT(16)
-#define        _TXFOVW                                 BIT(15)
-#define        _PSTIMEOUT                              BIT(14)
-#define        _BCNDMAINT0                             BIT(13)
-#define        _FOVW                                   BIT(12)
-#define        _RDU                                    BIT(11)
-#define        _RXCMDOK                                BIT(10)
-#define        _BCNDOK0                                BIT(9)
-#define        _HIGHDOK                                BIT(8)
-#define        _COMDOK                                 BIT(7)
-#define        _MGTDOK                                 BIT(6)
-#define        _HCCADOK                                BIT(5)
-#define        _BKDOK                                  BIT(4)
-#define        _BEDOK                                  BIT(3)
-#define        _VIDOK                                  BIT(2)
-#define        _VODOK                                  BIT(1)
-#define        _RXOK                                   BIT(0)
-
-#endif /*__RTL8712_INTERRUPT_BITDEF_H__*/
-
diff --git a/drivers/staging/rtl8712/rtl8712_io.c b/drivers/staging/rtl8712/rtl8712_io.c
deleted file mode 100644 (file)
index 384cbdb..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl8712_io.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>.
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _RTL8712_IO_C_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "rtl871x_io.h"
-#include "osdep_intf.h"
-#include "usb_ops.h"
-
-u8 r8712_read8(struct _adapter *adapter, u32 addr)
-{
-       struct intf_hdl *hdl = &adapter->pio_queue->intf;
-
-       return hdl->io_ops._read8(hdl, addr);
-}
-
-u16 r8712_read16(struct _adapter *adapter, u32 addr)
-{
-       struct intf_hdl *hdl = &adapter->pio_queue->intf;
-
-       return hdl->io_ops._read16(hdl, addr);
-}
-
-u32 r8712_read32(struct _adapter *adapter, u32 addr)
-{
-       struct intf_hdl *hdl = &adapter->pio_queue->intf;
-
-       return hdl->io_ops._read32(hdl, addr);
-}
-
-void r8712_write8(struct _adapter *adapter, u32 addr, u8 val)
-{
-       struct intf_hdl *hdl = &adapter->pio_queue->intf;
-
-       hdl->io_ops._write8(hdl, addr, val);
-}
-
-void r8712_write16(struct _adapter *adapter, u32 addr, u16 val)
-{
-       struct intf_hdl *hdl = &adapter->pio_queue->intf;
-
-       hdl->io_ops._write16(hdl, addr, val);
-}
-
-void r8712_write32(struct _adapter *adapter, u32 addr, u32 val)
-{
-       struct intf_hdl *hdl = &adapter->pio_queue->intf;
-
-       hdl->io_ops._write32(hdl, addr, val);
-}
-
-void r8712_read_mem(struct _adapter *adapter, u32 addr, u32 cnt, u8 *pmem)
-{
-       struct intf_hdl *hdl = &adapter->pio_queue->intf;
-
-       if (adapter->driver_stopped || adapter->surprise_removed)
-               return;
-
-       hdl->io_ops._read_mem(hdl, addr, cnt, pmem);
-}
-
-void r8712_write_mem(struct _adapter *adapter, u32 addr, u32 cnt, u8 *pmem)
-{
-       struct intf_hdl *hdl = &adapter->pio_queue->intf;
-
-       hdl->io_ops._write_mem(hdl, addr, cnt, pmem);
-}
-
-void r8712_read_port(struct _adapter *adapter, u32 addr, u32 cnt, u8 *pmem)
-{
-       struct intf_hdl *hdl = &adapter->pio_queue->intf;
-
-       if (adapter->driver_stopped || adapter->surprise_removed)
-               return;
-
-       hdl->io_ops._read_port(hdl, addr, cnt, pmem);
-}
-
-void r8712_write_port(struct _adapter *adapter, u32 addr, u32 cnt, u8 *pmem)
-{
-       struct intf_hdl *hdl = &adapter->pio_queue->intf;
-
-       hdl->io_ops._write_port(hdl, addr, cnt, pmem);
-}
diff --git a/drivers/staging/rtl8712/rtl8712_led.c b/drivers/staging/rtl8712/rtl8712_led.c
deleted file mode 100644 (file)
index d5fc902..0000000
+++ /dev/null
@@ -1,1830 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl8712_led.c
- *
- * Copyright(c) 2007 - 2010  Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#include "drv_types.h"
-
-/*===========================================================================
- *     Constant.
- *===========================================================================
-
- *
- * Default LED behavior.
- */
-#define LED_BLINK_NORMAL_INTERVAL      100
-#define LED_BLINK_SLOWLY_INTERVAL      200
-#define LED_BLINK_LONG_INTERVAL        400
-
-#define LED_BLINK_NO_LINK_INTERVAL_ALPHA       1000
-#define LED_BLINK_LINK_INTERVAL_ALPHA          500
-#define LED_BLINK_SCAN_INTERVAL_ALPHA          180
-#define LED_BLINK_FASTER_INTERVAL_ALPHA                50
-#define LED_BLINK_WPS_SUCCESS_INTERVAL_ALPHA   5000
-
-/*===========================================================================
- * LED object.
- *===========================================================================
- */
-enum _LED_STATE_871x {
-       LED_UNKNOWN = 0,
-       LED_STATE_ON = 1,
-       LED_STATE_OFF = 2,
-       LED_BLINK_NORMAL = 3,
-       LED_BLINK_SLOWLY = 4,
-       LED_POWER_ON_BLINK = 5,
-       LED_SCAN_BLINK = 6, /* LED is blinking during scanning period,
-                            * the # of times to blink is depend on time
-                            * for scanning.
-                            */
-       LED_NO_LINK_BLINK = 7, /* LED is blinking during no link state. */
-       LED_BLINK_StartToBlink = 8,/* Customized for Sercomm Printer
-                                   * Server case
-                                   */
-       LED_BLINK_WPS = 9,      /* LED is blinkg during WPS communication */
-       LED_TXRX_BLINK = 10,
-       LED_BLINK_WPS_STOP = 11,        /*for ALPHA */
-       LED_BLINK_WPS_STOP_OVERLAP = 12,        /*for BELKIN */
-};
-
-/*===========================================================================
- *     Prototype of protected function.
- *===========================================================================
- */
-static void BlinkTimerCallback(struct timer_list *t);
-
-static void BlinkWorkItemCallback(struct work_struct *work);
-/*===========================================================================
- * LED_819xUsb routines.
- *===========================================================================
- *
- *
- *
- *     Description:
- *             Initialize an LED_871x object.
- */
-static void InitLed871x(struct _adapter *padapter, struct LED_871x *pLed,
-                       enum LED_PIN_871x       LedPin)
-{
-       pLed->padapter = padapter;
-       pLed->LedPin = LedPin;
-       pLed->CurrLedState = LED_STATE_OFF;
-       pLed->bLedOn = false;
-       pLed->bLedBlinkInProgress = false;
-       pLed->BlinkTimes = 0;
-       pLed->BlinkingLedState = LED_UNKNOWN;
-       timer_setup(&pLed->BlinkTimer, BlinkTimerCallback, 0);
-       INIT_WORK(&pLed->BlinkWorkItem, BlinkWorkItemCallback);
-}
-
-/*
- *     Description:
- *             DeInitialize an LED_871x object.
- */
-static void DeInitLed871x(struct LED_871x *pLed)
-{
-       del_timer_sync(&pLed->BlinkTimer);
-       /* We should reset bLedBlinkInProgress if we cancel
-        * the LedControlTimer,
-        */
-       pLed->bLedBlinkInProgress = false;
-}
-
-/*
- *     Description:
- *             Turn on LED according to LedPin specified.
- */
-static void SwLedOn(struct _adapter *padapter, struct LED_871x *pLed)
-{
-       u8      LedCfg;
-
-       if (padapter->surprise_removed || padapter->driver_stopped)
-               return;
-       LedCfg = r8712_read8(padapter, LEDCFG);
-       switch (pLed->LedPin) {
-       case LED_PIN_GPIO0:
-               break;
-       case LED_PIN_LED0:
-               /* SW control led0 on.*/
-               r8712_write8(padapter, LEDCFG, LedCfg & 0xf0);
-               break;
-       case LED_PIN_LED1:
-               /* SW control led1 on.*/
-               r8712_write8(padapter, LEDCFG, LedCfg & 0x0f);
-               break;
-       default:
-               break;
-       }
-       pLed->bLedOn = true;
-}
-
-/*
- *     Description:
- *             Turn off LED according to LedPin specified.
- */
-static void SwLedOff(struct _adapter *padapter, struct LED_871x *pLed)
-{
-       u8      LedCfg;
-
-       if (padapter->surprise_removed || padapter->driver_stopped)
-               return;
-       LedCfg = r8712_read8(padapter, LEDCFG);
-       switch (pLed->LedPin) {
-       case LED_PIN_GPIO0:
-               break;
-       case LED_PIN_LED0:
-               LedCfg &= 0xf0; /* Set to software control.*/
-               r8712_write8(padapter, LEDCFG, (LedCfg | BIT(3)));
-               break;
-       case LED_PIN_LED1:
-               LedCfg &= 0x0f; /* Set to software control.*/
-               r8712_write8(padapter, LEDCFG, (LedCfg | BIT(7)));
-               break;
-       default:
-               break;
-       }
-       pLed->bLedOn = false;
-}
-
-/*===========================================================================
- * Interface to manipulate LED objects.
- *===========================================================================
- *
- *     Description:
- *             Initialize all LED_871x objects.
- */
-void r8712_InitSwLeds(struct _adapter *padapter)
-{
-       struct led_priv *pledpriv = &padapter->ledpriv;
-
-       pledpriv->LedControlHandler = LedControl871x;
-       InitLed871x(padapter, &pledpriv->SwLed0, LED_PIN_LED0);
-       InitLed871x(padapter, &pledpriv->SwLed1, LED_PIN_LED1);
-}
-
-/*     Description:
- *             DeInitialize all LED_819xUsb objects.
- */
-void r8712_DeInitSwLeds(struct _adapter *padapter)
-{
-       struct led_priv *ledpriv = &padapter->ledpriv;
-
-       DeInitLed871x(&ledpriv->SwLed0);
-       DeInitLed871x(&ledpriv->SwLed1);
-}
-
-/*     Description:
- *             Implementation of LED blinking behavior.
- *             It toggle off LED and schedule corresponding timer if necessary.
- */
-static void SwLedBlink(struct LED_871x *pLed)
-{
-       struct _adapter *padapter = pLed->padapter;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       u8 bStopBlinking = false;
-
-       /* Change LED according to BlinkingLedState specified. */
-       if (pLed->BlinkingLedState == LED_STATE_ON)
-               SwLedOn(padapter, pLed);
-       else
-               SwLedOff(padapter, pLed);
-       /* Determine if we shall change LED state again. */
-       pLed->BlinkTimes--;
-       switch (pLed->CurrLedState) {
-       case LED_BLINK_NORMAL:
-               if (pLed->BlinkTimes == 0)
-                       bStopBlinking = true;
-               break;
-       case LED_BLINK_StartToBlink:
-               if (check_fwstate(pmlmepriv, _FW_LINKED) &&
-                   (pmlmepriv->fw_state & WIFI_STATION_STATE))
-                       bStopBlinking = true;
-               if (check_fwstate(pmlmepriv, _FW_LINKED) &&
-                   ((pmlmepriv->fw_state & WIFI_ADHOC_STATE) ||
-                   (pmlmepriv->fw_state & WIFI_ADHOC_MASTER_STATE)))
-                       bStopBlinking = true;
-               else if (pLed->BlinkTimes == 0)
-                       bStopBlinking = true;
-               break;
-       case LED_BLINK_WPS:
-               if (pLed->BlinkTimes == 0)
-                       bStopBlinking = true;
-               break;
-       default:
-               bStopBlinking = true;
-               break;
-       }
-       if (bStopBlinking) {
-               if (check_fwstate(pmlmepriv, _FW_LINKED) &&
-                   !pLed->bLedOn)
-                       SwLedOn(padapter, pLed);
-               else if (check_fwstate(pmlmepriv, _FW_LINKED) &&  pLed->bLedOn)
-                       SwLedOff(padapter, pLed);
-               pLed->BlinkTimes = 0;
-               pLed->bLedBlinkInProgress = false;
-       } else {
-               /* Assign LED state to toggle. */
-               if (pLed->BlinkingLedState == LED_STATE_ON)
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-               else
-                       pLed->BlinkingLedState = LED_STATE_ON;
-
-               /* Schedule a timer to toggle LED state. */
-               switch (pLed->CurrLedState) {
-               case LED_BLINK_NORMAL:
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_NORMAL_INTERVAL));
-                       break;
-               case LED_BLINK_SLOWLY:
-               case LED_BLINK_StartToBlink:
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SLOWLY_INTERVAL));
-                       break;
-               case LED_BLINK_WPS:
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_LONG_INTERVAL));
-                       break;
-               default:
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SLOWLY_INTERVAL));
-                       break;
-               }
-       }
-}
-
-static void SwLedBlink1(struct LED_871x *pLed)
-{
-       struct _adapter *padapter = pLed->padapter;
-       struct led_priv *ledpriv = &padapter->ledpriv;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct eeprom_priv *peeprompriv = &padapter->eeprompriv;
-       struct LED_871x *pLed1 = &ledpriv->SwLed1;
-       u8 bStopBlinking = false;
-
-       if (peeprompriv->CustomerID == RT_CID_819x_CAMEO)
-               pLed = &ledpriv->SwLed1;
-       /* Change LED according to BlinkingLedState specified. */
-       if (pLed->BlinkingLedState == LED_STATE_ON)
-               SwLedOn(padapter, pLed);
-       else
-               SwLedOff(padapter, pLed);
-       if (peeprompriv->CustomerID == RT_CID_DEFAULT) {
-               if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-                       if (!pLed1->bSWLedCtrl) {
-                               SwLedOn(padapter, pLed1);
-                               pLed1->bSWLedCtrl = true;
-                       } else if (!pLed1->bLedOn) {
-                               SwLedOn(padapter, pLed1);
-                       }
-               } else {
-                       if (!pLed1->bSWLedCtrl) {
-                               SwLedOff(padapter, pLed1);
-                               pLed1->bSWLedCtrl = true;
-                       } else if (pLed1->bLedOn) {
-                               SwLedOff(padapter, pLed1);
-                       }
-               }
-       }
-       switch (pLed->CurrLedState) {
-       case LED_BLINK_SLOWLY:
-               if (pLed->bLedOn)
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-               else
-                       pLed->BlinkingLedState = LED_STATE_ON;
-               mod_timer(&pLed->BlinkTimer, jiffies +
-                         msecs_to_jiffies(LED_BLINK_NO_LINK_INTERVAL_ALPHA));
-               break;
-       case LED_BLINK_NORMAL:
-               if (pLed->bLedOn)
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-               else
-                       pLed->BlinkingLedState = LED_STATE_ON;
-               mod_timer(&pLed->BlinkTimer, jiffies +
-                         msecs_to_jiffies(LED_BLINK_LINK_INTERVAL_ALPHA));
-               break;
-       case LED_SCAN_BLINK:
-               pLed->BlinkTimes--;
-               if (pLed->BlinkTimes == 0)
-                       bStopBlinking = true;
-               if (bStopBlinking) {
-                       if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-                               pLed->bLedLinkBlinkInProgress = true;
-                               pLed->CurrLedState = LED_BLINK_NORMAL;
-                               if (pLed->bLedOn)
-                                       pLed->BlinkingLedState = LED_STATE_OFF;
-                               else
-                                       pLed->BlinkingLedState = LED_STATE_ON;
-                               mod_timer(&pLed->BlinkTimer, jiffies +
-                                         msecs_to_jiffies(LED_BLINK_LINK_INTERVAL_ALPHA));
-                       } else if (!check_fwstate(pmlmepriv, _FW_LINKED)) {
-                               pLed->bLedNoLinkBlinkInProgress = true;
-                               pLed->CurrLedState = LED_BLINK_SLOWLY;
-                               if (pLed->bLedOn)
-                                       pLed->BlinkingLedState = LED_STATE_OFF;
-                               else
-                                       pLed->BlinkingLedState = LED_STATE_ON;
-                               mod_timer(&pLed->BlinkTimer, jiffies +
-                                         msecs_to_jiffies(LED_BLINK_NO_LINK_INTERVAL_ALPHA));
-                       }
-                       pLed->bLedScanBlinkInProgress = false;
-               } else {
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_TXRX_BLINK:
-               pLed->BlinkTimes--;
-               if (pLed->BlinkTimes == 0)
-                       bStopBlinking = true;
-               if (bStopBlinking) {
-                       if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-                               pLed->bLedLinkBlinkInProgress = true;
-                               pLed->CurrLedState = LED_BLINK_NORMAL;
-                               if (pLed->bLedOn)
-                                       pLed->BlinkingLedState = LED_STATE_OFF;
-                               else
-                                       pLed->BlinkingLedState = LED_STATE_ON;
-                               mod_timer(&pLed->BlinkTimer, jiffies +
-                                         msecs_to_jiffies(LED_BLINK_LINK_INTERVAL_ALPHA));
-                       } else if (!check_fwstate(pmlmepriv, _FW_LINKED)) {
-                               pLed->bLedNoLinkBlinkInProgress = true;
-                               pLed->CurrLedState = LED_BLINK_SLOWLY;
-                               if (pLed->bLedOn)
-                                       pLed->BlinkingLedState = LED_STATE_OFF;
-                               else
-                                       pLed->BlinkingLedState = LED_STATE_ON;
-                               mod_timer(&pLed->BlinkTimer, jiffies +
-                                         msecs_to_jiffies(LED_BLINK_NO_LINK_INTERVAL_ALPHA));
-                       }
-                       pLed->BlinkTimes = 0;
-                       pLed->bLedBlinkInProgress = false;
-               } else {
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_FASTER_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_BLINK_WPS:
-               if (pLed->bLedOn)
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-               else
-                       pLed->BlinkingLedState = LED_STATE_ON;
-               mod_timer(&pLed->BlinkTimer, jiffies +
-                         msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               break;
-       case LED_BLINK_WPS_STOP:        /* WPS success */
-               if (pLed->BlinkingLedState == LED_STATE_ON) {
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_WPS_SUCCESS_INTERVAL_ALPHA));
-                       bStopBlinking = false;
-               } else {
-                       bStopBlinking = true;
-               }
-               if (bStopBlinking) {
-                       pLed->bLedLinkBlinkInProgress = true;
-                       pLed->CurrLedState = LED_BLINK_NORMAL;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_LINK_INTERVAL_ALPHA));
-               }
-               pLed->bLedWPSBlinkInProgress = false;
-               break;
-       default:
-               break;
-       }
-}
-
-static void SwLedBlink2(struct LED_871x *pLed)
-{
-       struct _adapter *padapter = pLed->padapter;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       u8 bStopBlinking = false;
-
-       /* Change LED according to BlinkingLedState specified. */
-       if (pLed->BlinkingLedState == LED_STATE_ON)
-               SwLedOn(padapter, pLed);
-       else
-               SwLedOff(padapter, pLed);
-       switch (pLed->CurrLedState) {
-       case LED_SCAN_BLINK:
-               pLed->BlinkTimes--;
-               if (pLed->BlinkTimes == 0)
-                       bStopBlinking = true;
-               if (bStopBlinking) {
-                       if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-                               pLed->CurrLedState = LED_STATE_ON;
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                               SwLedOn(padapter, pLed);
-                       } else if (!check_fwstate(pmlmepriv, _FW_LINKED)) {
-                               pLed->CurrLedState = LED_STATE_OFF;
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                               SwLedOff(padapter, pLed);
-                       }
-                       pLed->bLedScanBlinkInProgress = false;
-               } else {
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_TXRX_BLINK:
-               pLed->BlinkTimes--;
-               if (pLed->BlinkTimes == 0)
-                       bStopBlinking = true;
-               if (bStopBlinking) {
-                       if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-                               pLed->CurrLedState = LED_STATE_ON;
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                               SwLedOn(padapter, pLed);
-                       } else if (!check_fwstate(pmlmepriv, _FW_LINKED)) {
-                               pLed->CurrLedState = LED_STATE_OFF;
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                               SwLedOff(padapter, pLed);
-                       }
-                       pLed->bLedBlinkInProgress = false;
-               } else {
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_FASTER_INTERVAL_ALPHA));
-               }
-               break;
-       default:
-               break;
-       }
-}
-
-static void SwLedBlink3(struct LED_871x *pLed)
-{
-       struct _adapter *padapter = pLed->padapter;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       u8 bStopBlinking = false;
-
-       /* Change LED according to BlinkingLedState specified. */
-       if (pLed->BlinkingLedState == LED_STATE_ON)
-               SwLedOn(padapter, pLed);
-       else
-               if (pLed->CurrLedState != LED_BLINK_WPS_STOP)
-                       SwLedOff(padapter, pLed);
-       switch (pLed->CurrLedState) {
-       case LED_SCAN_BLINK:
-               pLed->BlinkTimes--;
-               if (pLed->BlinkTimes == 0)
-                       bStopBlinking = true;
-               if (bStopBlinking) {
-                       if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-                               pLed->CurrLedState = LED_STATE_ON;
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                               if (!pLed->bLedOn)
-                                       SwLedOn(padapter, pLed);
-                       } else if (!check_fwstate(pmlmepriv, _FW_LINKED)) {
-                               pLed->CurrLedState = LED_STATE_OFF;
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                               if (pLed->bLedOn)
-                                       SwLedOff(padapter, pLed);
-                       }
-                       pLed->bLedScanBlinkInProgress = false;
-               } else {
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_TXRX_BLINK:
-               pLed->BlinkTimes--;
-               if (pLed->BlinkTimes == 0)
-                       bStopBlinking = true;
-               if (bStopBlinking) {
-                       if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-                               pLed->CurrLedState = LED_STATE_ON;
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                               if (!pLed->bLedOn)
-                                       SwLedOn(padapter, pLed);
-                       } else if (!check_fwstate(pmlmepriv, _FW_LINKED)) {
-                               pLed->CurrLedState = LED_STATE_OFF;
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                               if (pLed->bLedOn)
-                                       SwLedOff(padapter, pLed);
-                       }
-                       pLed->bLedBlinkInProgress = false;
-               } else {
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_FASTER_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_BLINK_WPS:
-               if (pLed->bLedOn)
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-               else
-                       pLed->BlinkingLedState = LED_STATE_ON;
-               mod_timer(&pLed->BlinkTimer, jiffies +
-                         msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               break;
-       case LED_BLINK_WPS_STOP:        /*WPS success*/
-               if (pLed->BlinkingLedState == LED_STATE_ON) {
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_WPS_SUCCESS_INTERVAL_ALPHA));
-                       bStopBlinking = false;
-               } else {
-                       bStopBlinking = true;
-               }
-               if (bStopBlinking) {
-                       pLed->CurrLedState = LED_STATE_ON;
-                       pLed->BlinkingLedState = LED_STATE_ON;
-                       SwLedOn(padapter, pLed);
-                       pLed->bLedWPSBlinkInProgress = false;
-               }
-               break;
-       default:
-               break;
-       }
-}
-
-static void SwLedBlink4(struct LED_871x *pLed)
-{
-       struct _adapter *padapter = pLed->padapter;
-       struct led_priv *ledpriv = &padapter->ledpriv;
-       struct LED_871x *pLed1 = &ledpriv->SwLed1;
-       u8 bStopBlinking = false;
-
-       /* Change LED according to BlinkingLedState specified. */
-       if (pLed->BlinkingLedState == LED_STATE_ON)
-               SwLedOn(padapter, pLed);
-       else
-               SwLedOff(padapter, pLed);
-       if (!pLed1->bLedWPSBlinkInProgress &&
-           pLed1->BlinkingLedState == LED_UNKNOWN) {
-               pLed1->BlinkingLedState = LED_STATE_OFF;
-               pLed1->CurrLedState = LED_STATE_OFF;
-               SwLedOff(padapter, pLed1);
-       }
-       switch (pLed->CurrLedState) {
-       case LED_BLINK_SLOWLY:
-               if (pLed->bLedOn)
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-               else
-                       pLed->BlinkingLedState = LED_STATE_ON;
-               mod_timer(&pLed->BlinkTimer, jiffies +
-                         msecs_to_jiffies(LED_BLINK_NO_LINK_INTERVAL_ALPHA));
-               break;
-       case LED_BLINK_StartToBlink:
-               if (pLed->bLedOn) {
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SLOWLY_INTERVAL));
-               } else {
-                       pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_NORMAL_INTERVAL));
-               }
-               break;
-       case LED_SCAN_BLINK:
-               pLed->BlinkTimes--;
-               if (pLed->BlinkTimes == 0)
-                       bStopBlinking = true;
-               if (bStopBlinking) {
-                       pLed->bLedNoLinkBlinkInProgress = true;
-                       pLed->CurrLedState = LED_BLINK_SLOWLY;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_NO_LINK_INTERVAL_ALPHA));
-                       pLed->bLedScanBlinkInProgress = false;
-               } else {
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_TXRX_BLINK:
-               pLed->BlinkTimes--;
-               if (pLed->BlinkTimes == 0)
-                       bStopBlinking = true;
-               if (bStopBlinking) {
-                       pLed->bLedNoLinkBlinkInProgress = true;
-                       pLed->CurrLedState = LED_BLINK_SLOWLY;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_NO_LINK_INTERVAL_ALPHA));
-                       pLed->bLedBlinkInProgress = false;
-               } else {
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_FASTER_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_BLINK_WPS:
-               if (pLed->bLedOn) {
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SLOWLY_INTERVAL));
-               } else {
-                       pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_NORMAL_INTERVAL));
-               }
-               break;
-       case LED_BLINK_WPS_STOP:        /*WPS authentication fail*/
-               if (pLed->bLedOn)
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-               else
-                       pLed->BlinkingLedState = LED_STATE_ON;
-               mod_timer(&pLed->BlinkTimer, jiffies +
-                         msecs_to_jiffies(LED_BLINK_NORMAL_INTERVAL));
-               break;
-       case LED_BLINK_WPS_STOP_OVERLAP:        /*WPS session overlap */
-               pLed->BlinkTimes--;
-               if (pLed->BlinkTimes == 0) {
-                       if (pLed->bLedOn)
-                               pLed->BlinkTimes = 1;
-                       else
-                               bStopBlinking = true;
-               }
-               if (bStopBlinking) {
-                       pLed->BlinkTimes = 10;
-                       pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_LINK_INTERVAL_ALPHA));
-               } else {
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_NORMAL_INTERVAL));
-               }
-               break;
-       default:
-               break;
-       }
-}
-
-static void SwLedBlink5(struct LED_871x *pLed)
-{
-       struct _adapter *padapter = pLed->padapter;
-       u8 bStopBlinking = false;
-
-       /* Change LED according to BlinkingLedState specified. */
-       if (pLed->BlinkingLedState == LED_STATE_ON)
-               SwLedOn(padapter, pLed);
-       else
-               SwLedOff(padapter, pLed);
-       switch (pLed->CurrLedState) {
-       case LED_SCAN_BLINK:
-               pLed->BlinkTimes--;
-               if (pLed->BlinkTimes == 0)
-                       bStopBlinking = true;
-               if (bStopBlinking) {
-                       pLed->CurrLedState = LED_STATE_ON;
-                       pLed->BlinkingLedState = LED_STATE_ON;
-                       if (!pLed->bLedOn)
-                               mod_timer(&pLed->BlinkTimer, jiffies +
-                                         msecs_to_jiffies(LED_BLINK_FASTER_INTERVAL_ALPHA));
-                       pLed->bLedScanBlinkInProgress = false;
-               } else {
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_TXRX_BLINK:
-               pLed->BlinkTimes--;
-               if (pLed->BlinkTimes == 0)
-                       bStopBlinking = true;
-               if (bStopBlinking) {
-                       pLed->CurrLedState = LED_STATE_ON;
-                       pLed->BlinkingLedState = LED_STATE_ON;
-                       if (!pLed->bLedOn)
-                               mod_timer(&pLed->BlinkTimer, jiffies +
-                                         msecs_to_jiffies(LED_BLINK_FASTER_INTERVAL_ALPHA));
-                       pLed->bLedBlinkInProgress = false;
-               } else {
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_FASTER_INTERVAL_ALPHA));
-               }
-               break;
-       default:
-               break;
-       }
-}
-
-static void SwLedBlink6(struct LED_871x *pLed)
-{
-       struct _adapter *padapter = pLed->padapter;
-       u8 bStopBlinking = false;
-
-       /* Change LED according to BlinkingLedState specified. */
-       if (pLed->BlinkingLedState == LED_STATE_ON)
-               SwLedOn(padapter, pLed);
-       else
-               SwLedOff(padapter, pLed);
-       switch (pLed->CurrLedState) {
-       case LED_TXRX_BLINK:
-               pLed->BlinkTimes--;
-               if (pLed->BlinkTimes == 0)
-                       bStopBlinking = true;
-               if (bStopBlinking) {
-                       pLed->CurrLedState = LED_STATE_ON;
-                       pLed->BlinkingLedState = LED_STATE_ON;
-                       if (!pLed->bLedOn)
-                               SwLedOn(padapter, pLed);
-                       pLed->bLedBlinkInProgress = false;
-               } else {
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_FASTER_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_BLINK_WPS:
-               if (pLed->bLedOn)
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-               else
-                       pLed->BlinkingLedState = LED_STATE_ON;
-               mod_timer(&pLed->BlinkTimer, jiffies +
-                         msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               break;
-
-       default:
-               break;
-       }
-}
-
-/*     Description:
- *             Callback function of LED BlinkTimer,
- *             it just schedules to corresponding BlinkWorkItem.
- */
-static void BlinkTimerCallback(struct timer_list *t)
-{
-       struct LED_871x  *pLed = from_timer(pLed, t, BlinkTimer);
-
-       /* This fixed the crash problem on Fedora 12 when trying to do the
-        * insmod;ifconfig up;rmmod commands.
-        */
-       if (pLed->padapter->surprise_removed || pLed->padapter->driver_stopped)
-               return;
-       schedule_work(&pLed->BlinkWorkItem);
-}
-
-/*     Description:
- *             Callback function of LED BlinkWorkItem.
- *             We dispatch actual LED blink action according to LedStrategy.
- */
-static void BlinkWorkItemCallback(struct work_struct *work)
-{
-       struct LED_871x *pLed = container_of(work, struct LED_871x,
-                               BlinkWorkItem);
-       struct led_priv *ledpriv = &pLed->padapter->ledpriv;
-
-       switch (ledpriv->LedStrategy) {
-       case SW_LED_MODE0:
-               SwLedBlink(pLed);
-               break;
-       case SW_LED_MODE1:
-               SwLedBlink1(pLed);
-               break;
-       case SW_LED_MODE2:
-               SwLedBlink2(pLed);
-               break;
-       case SW_LED_MODE3:
-               SwLedBlink3(pLed);
-               break;
-       case SW_LED_MODE4:
-               SwLedBlink4(pLed);
-               break;
-       case SW_LED_MODE5:
-               SwLedBlink5(pLed);
-               break;
-       case SW_LED_MODE6:
-               SwLedBlink6(pLed);
-               break;
-       default:
-               SwLedBlink(pLed);
-               break;
-       }
-}
-
-/*============================================================================
- * Default LED behavior.
- *============================================================================
- *
- *     Description:
- *             Implement each led action for SW_LED_MODE0.
- *             This is default strategy.
- */
-
-static void SwLedControlMode1(struct _adapter *padapter,
-                             enum LED_CTL_MODE LedAction)
-{
-       struct led_priv *ledpriv = &padapter->ledpriv;
-       struct LED_871x *pLed = &ledpriv->SwLed0;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct sitesurvey_ctrl *psitesurveyctrl = &pmlmepriv->sitesurveyctrl;
-
-       if (padapter->eeprompriv.CustomerID == RT_CID_819x_CAMEO)
-               pLed = &ledpriv->SwLed1;
-       switch (LedAction) {
-       case LED_CTL_START_TO_LINK:
-       case LED_CTL_NO_LINK:
-               if (!pLed->bLedNoLinkBlinkInProgress) {
-                       if (pLed->CurrLedState == LED_SCAN_BLINK ||
-                           IS_LED_WPS_BLINKING(pLed))
-                               return;
-                       if (pLed->bLedLinkBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedLinkBlinkInProgress = false;
-                       }
-                       if (pLed->bLedBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedBlinkInProgress = false;
-                       }
-                       pLed->bLedNoLinkBlinkInProgress = true;
-                       pLed->CurrLedState = LED_BLINK_SLOWLY;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_NO_LINK_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_CTL_LINK:
-               if (!pLed->bLedLinkBlinkInProgress) {
-                       if (pLed->CurrLedState == LED_SCAN_BLINK ||
-                           IS_LED_WPS_BLINKING(pLed))
-                               return;
-                       if (pLed->bLedNoLinkBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedNoLinkBlinkInProgress = false;
-                       }
-                       if (pLed->bLedBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedBlinkInProgress = false;
-                       }
-                       pLed->bLedLinkBlinkInProgress = true;
-                       pLed->CurrLedState = LED_BLINK_NORMAL;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_LINK_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_CTL_SITE_SURVEY:
-               if (psitesurveyctrl->traffic_busy &&
-                   check_fwstate(pmlmepriv, _FW_LINKED))
-                       ; /* dummy branch */
-               else if (!pLed->bLedScanBlinkInProgress) {
-                       if (IS_LED_WPS_BLINKING(pLed))
-                               return;
-                       if (pLed->bLedNoLinkBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedNoLinkBlinkInProgress = false;
-                       }
-                       if (pLed->bLedLinkBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedLinkBlinkInProgress = false;
-                       }
-                       if (pLed->bLedBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedBlinkInProgress = false;
-                       }
-                       pLed->bLedScanBlinkInProgress = true;
-                       pLed->CurrLedState = LED_SCAN_BLINK;
-                       pLed->BlinkTimes = 24;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_CTL_TX:
-       case LED_CTL_RX:
-               if (!pLed->bLedBlinkInProgress) {
-                       if (pLed->CurrLedState == LED_SCAN_BLINK ||
-                           IS_LED_WPS_BLINKING(pLed))
-                               return;
-                       if (pLed->bLedNoLinkBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedNoLinkBlinkInProgress = false;
-                       }
-                       if (pLed->bLedLinkBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedLinkBlinkInProgress = false;
-                       }
-                       pLed->bLedBlinkInProgress = true;
-                       pLed->CurrLedState = LED_TXRX_BLINK;
-                       pLed->BlinkTimes = 2;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_FASTER_INTERVAL_ALPHA));
-               }
-               break;
-
-       case LED_CTL_START_WPS: /*wait until xinpin finish */
-       case LED_CTL_START_WPS_BOTTON:
-               if (!pLed->bLedWPSBlinkInProgress) {
-                       if (pLed->bLedNoLinkBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedNoLinkBlinkInProgress = false;
-                       }
-                       if (pLed->bLedLinkBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedLinkBlinkInProgress = false;
-                       }
-                       if (pLed->bLedBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedBlinkInProgress = false;
-                       }
-                       if (pLed->bLedScanBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedScanBlinkInProgress = false;
-                       }
-                       pLed->bLedWPSBlinkInProgress = true;
-                       pLed->CurrLedState = LED_BLINK_WPS;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_CTL_STOP_WPS:
-               if (pLed->bLedNoLinkBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedNoLinkBlinkInProgress = false;
-               }
-               if (pLed->bLedLinkBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedLinkBlinkInProgress = false;
-               }
-               if (pLed->bLedBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedBlinkInProgress = false;
-               }
-               if (pLed->bLedScanBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedScanBlinkInProgress = false;
-               }
-               if (pLed->bLedWPSBlinkInProgress)
-                       del_timer(&pLed->BlinkTimer);
-               else
-                       pLed->bLedWPSBlinkInProgress = true;
-               pLed->CurrLedState = LED_BLINK_WPS_STOP;
-               if (pLed->bLedOn) {
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_WPS_SUCCESS_INTERVAL_ALPHA));
-               } else {
-                       pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer,
-                                 jiffies + msecs_to_jiffies(0));
-               }
-               break;
-       case LED_CTL_STOP_WPS_FAIL:
-               if (pLed->bLedWPSBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedWPSBlinkInProgress = false;
-               }
-               pLed->bLedNoLinkBlinkInProgress = true;
-               pLed->CurrLedState = LED_BLINK_SLOWLY;
-               if (pLed->bLedOn)
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-               else
-                       pLed->BlinkingLedState = LED_STATE_ON;
-               mod_timer(&pLed->BlinkTimer, jiffies +
-                         msecs_to_jiffies(LED_BLINK_NO_LINK_INTERVAL_ALPHA));
-               break;
-       case LED_CTL_POWER_OFF:
-               pLed->CurrLedState = LED_STATE_OFF;
-               pLed->BlinkingLedState = LED_STATE_OFF;
-               if (pLed->bLedNoLinkBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedNoLinkBlinkInProgress = false;
-               }
-               if (pLed->bLedLinkBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedLinkBlinkInProgress = false;
-               }
-               if (pLed->bLedBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedBlinkInProgress = false;
-               }
-               if (pLed->bLedWPSBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedWPSBlinkInProgress = false;
-               }
-               if (pLed->bLedScanBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedScanBlinkInProgress = false;
-               }
-               mod_timer(&pLed->BlinkTimer,
-                         jiffies + msecs_to_jiffies(0));
-               break;
-       default:
-               break;
-       }
-}
-
-static void SwLedControlMode2(struct _adapter *padapter,
-                             enum LED_CTL_MODE LedAction)
-{
-       struct led_priv  *ledpriv = &padapter->ledpriv;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct LED_871x *pLed = &ledpriv->SwLed0;
-
-       switch (LedAction) {
-       case LED_CTL_SITE_SURVEY:
-               if (pmlmepriv->sitesurveyctrl.traffic_busy)
-                       ; /* dummy branch */
-               else if (!pLed->bLedScanBlinkInProgress) {
-                       if (IS_LED_WPS_BLINKING(pLed))
-                               return;
-
-                       if (pLed->bLedBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedBlinkInProgress = false;
-                       }
-                       pLed->bLedScanBlinkInProgress = true;
-                       pLed->CurrLedState = LED_SCAN_BLINK;
-                       pLed->BlinkTimes = 24;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               }
-               break;
-
-       case LED_CTL_TX:
-       case LED_CTL_RX:
-               if (!pLed->bLedBlinkInProgress &&
-                   check_fwstate(pmlmepriv, _FW_LINKED)) {
-                       if (pLed->CurrLedState == LED_SCAN_BLINK ||
-                           IS_LED_WPS_BLINKING(pLed))
-                               return;
-                       pLed->bLedBlinkInProgress = true;
-                       pLed->CurrLedState = LED_TXRX_BLINK;
-                       pLed->BlinkTimes = 2;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_FASTER_INTERVAL_ALPHA));
-               }
-               break;
-
-       case LED_CTL_LINK:
-               pLed->CurrLedState = LED_STATE_ON;
-               pLed->BlinkingLedState = LED_STATE_ON;
-               if (pLed->bLedBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedBlinkInProgress = false;
-               }
-               if (pLed->bLedScanBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedScanBlinkInProgress = false;
-               }
-
-               mod_timer(&pLed->BlinkTimer,
-                         jiffies + msecs_to_jiffies(0));
-               break;
-
-       case LED_CTL_START_WPS: /*wait until xinpin finish*/
-       case LED_CTL_START_WPS_BOTTON:
-               if (!pLed->bLedWPSBlinkInProgress) {
-                       if (pLed->bLedBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedBlinkInProgress = false;
-                       }
-                       if (pLed->bLedScanBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedScanBlinkInProgress = false;
-                       }
-                       pLed->bLedWPSBlinkInProgress = true;
-                       pLed->CurrLedState = LED_STATE_ON;
-                       pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer,
-                                 jiffies + msecs_to_jiffies(0));
-               }
-               break;
-
-       case LED_CTL_STOP_WPS:
-               pLed->bLedWPSBlinkInProgress = false;
-               pLed->CurrLedState = LED_STATE_ON;
-               pLed->BlinkingLedState = LED_STATE_ON;
-               mod_timer(&pLed->BlinkTimer,
-                         jiffies + msecs_to_jiffies(0));
-               break;
-
-       case LED_CTL_STOP_WPS_FAIL:
-               pLed->bLedWPSBlinkInProgress = false;
-               pLed->CurrLedState = LED_STATE_OFF;
-               pLed->BlinkingLedState = LED_STATE_OFF;
-               mod_timer(&pLed->BlinkTimer,
-                         jiffies + msecs_to_jiffies(0));
-               break;
-
-       case LED_CTL_START_TO_LINK:
-       case LED_CTL_NO_LINK:
-               if (!IS_LED_BLINKING(pLed)) {
-                       pLed->CurrLedState = LED_STATE_OFF;
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-                       mod_timer(&pLed->BlinkTimer,
-                                 jiffies + msecs_to_jiffies(0));
-               }
-               break;
-       case LED_CTL_POWER_OFF:
-               pLed->CurrLedState = LED_STATE_OFF;
-               pLed->BlinkingLedState = LED_STATE_OFF;
-               if (pLed->bLedBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedBlinkInProgress = false;
-               }
-               if (pLed->bLedScanBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedScanBlinkInProgress = false;
-               }
-               if (pLed->bLedWPSBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedWPSBlinkInProgress = false;
-               }
-               mod_timer(&pLed->BlinkTimer,
-                         jiffies + msecs_to_jiffies(0));
-               break;
-       default:
-               break;
-       }
-}
-
-static void SwLedControlMode3(struct _adapter *padapter,
-                             enum LED_CTL_MODE LedAction)
-{
-       struct led_priv *ledpriv = &padapter->ledpriv;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct LED_871x *pLed = &ledpriv->SwLed0;
-
-       switch (LedAction) {
-       case LED_CTL_SITE_SURVEY:
-               if (pmlmepriv->sitesurveyctrl.traffic_busy)
-                       ; /* dummy branch */
-               else if (!pLed->bLedScanBlinkInProgress) {
-                       if (IS_LED_WPS_BLINKING(pLed))
-                               return;
-                       if (pLed->bLedBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedBlinkInProgress = false;
-                       }
-                       pLed->bLedScanBlinkInProgress = true;
-                       pLed->CurrLedState = LED_SCAN_BLINK;
-                       pLed->BlinkTimes = 24;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_CTL_TX:
-       case LED_CTL_RX:
-               if (!pLed->bLedBlinkInProgress &&
-                   check_fwstate(pmlmepriv, _FW_LINKED)) {
-                       if (pLed->CurrLedState == LED_SCAN_BLINK ||
-                           IS_LED_WPS_BLINKING(pLed))
-                               return;
-                       pLed->bLedBlinkInProgress = true;
-                       pLed->CurrLedState = LED_TXRX_BLINK;
-                       pLed->BlinkTimes = 2;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_FASTER_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_CTL_LINK:
-               if (IS_LED_WPS_BLINKING(pLed))
-                       return;
-               pLed->CurrLedState = LED_STATE_ON;
-               pLed->BlinkingLedState = LED_STATE_ON;
-               if (pLed->bLedBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedBlinkInProgress = false;
-               }
-               if (pLed->bLedScanBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedScanBlinkInProgress = false;
-               }
-               mod_timer(&pLed->BlinkTimer,
-                         jiffies + msecs_to_jiffies(0));
-               break;
-       case LED_CTL_START_WPS: /* wait until xinpin finish */
-       case LED_CTL_START_WPS_BOTTON:
-               if (!pLed->bLedWPSBlinkInProgress) {
-                       if (pLed->bLedBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedBlinkInProgress = false;
-                       }
-                       if (pLed->bLedScanBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedScanBlinkInProgress = false;
-                       }
-                       pLed->bLedWPSBlinkInProgress = true;
-                       pLed->CurrLedState = LED_BLINK_WPS;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_CTL_STOP_WPS:
-               if (pLed->bLedWPSBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedWPSBlinkInProgress = false;
-               } else {
-                       pLed->bLedWPSBlinkInProgress = true;
-               }
-               pLed->CurrLedState = LED_BLINK_WPS_STOP;
-               if (pLed->bLedOn) {
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_WPS_SUCCESS_INTERVAL_ALPHA));
-               } else {
-                       pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer,
-                                 jiffies + msecs_to_jiffies(0));
-               }
-               break;
-       case LED_CTL_STOP_WPS_FAIL:
-               if (pLed->bLedWPSBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedWPSBlinkInProgress = false;
-               }
-               pLed->CurrLedState = LED_STATE_OFF;
-               pLed->BlinkingLedState = LED_STATE_OFF;
-               mod_timer(&pLed->BlinkTimer,
-                         jiffies + msecs_to_jiffies(0));
-               break;
-       case LED_CTL_START_TO_LINK:
-       case LED_CTL_NO_LINK:
-               if (!IS_LED_BLINKING(pLed)) {
-                       pLed->CurrLedState = LED_STATE_OFF;
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-                       mod_timer(&pLed->BlinkTimer,
-                                 jiffies + msecs_to_jiffies(0));
-               }
-               break;
-       case LED_CTL_POWER_OFF:
-               pLed->CurrLedState = LED_STATE_OFF;
-               pLed->BlinkingLedState = LED_STATE_OFF;
-               if (pLed->bLedBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedBlinkInProgress = false;
-               }
-               if (pLed->bLedScanBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedScanBlinkInProgress = false;
-               }
-               if (pLed->bLedWPSBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedWPSBlinkInProgress = false;
-               }
-               mod_timer(&pLed->BlinkTimer,
-                         jiffies + msecs_to_jiffies(0));
-               break;
-       default:
-               break;
-       }
-}
-
-static void SwLedControlMode4(struct _adapter *padapter,
-                             enum LED_CTL_MODE LedAction)
-{
-       struct led_priv *ledpriv = &padapter->ledpriv;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct LED_871x *pLed = &ledpriv->SwLed0;
-       struct LED_871x *pLed1 = &ledpriv->SwLed1;
-
-       switch (LedAction) {
-       case LED_CTL_START_TO_LINK:
-               if (pLed1->bLedWPSBlinkInProgress) {
-                       pLed1->bLedWPSBlinkInProgress = false;
-                       del_timer(&pLed1->BlinkTimer);
-                       pLed1->BlinkingLedState = LED_STATE_OFF;
-                       pLed1->CurrLedState = LED_STATE_OFF;
-                       if (pLed1->bLedOn)
-                               mod_timer(&pLed->BlinkTimer,
-                                         jiffies + msecs_to_jiffies(0));
-               }
-               if (!pLed->bLedStartToLinkBlinkInProgress) {
-                       if (pLed->CurrLedState == LED_SCAN_BLINK ||
-                           IS_LED_WPS_BLINKING(pLed))
-                               return;
-                       if (pLed->bLedBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedBlinkInProgress = false;
-                       }
-                       if (pLed->bLedNoLinkBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedNoLinkBlinkInProgress = false;
-                       }
-                       pLed->bLedStartToLinkBlinkInProgress = true;
-                       pLed->CurrLedState = LED_BLINK_StartToBlink;
-                       if (pLed->bLedOn) {
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                               mod_timer(&pLed->BlinkTimer, jiffies +
-                                         msecs_to_jiffies(LED_BLINK_SLOWLY_INTERVAL));
-                       } else {
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                               mod_timer(&pLed->BlinkTimer, jiffies +
-                                         msecs_to_jiffies(LED_BLINK_NORMAL_INTERVAL));
-                       }
-               }
-               break;
-       case LED_CTL_LINK:
-       case LED_CTL_NO_LINK:
-               /*LED1 settings*/
-               if (LedAction == LED_CTL_LINK) {
-                       if (pLed1->bLedWPSBlinkInProgress) {
-                               pLed1->bLedWPSBlinkInProgress = false;
-                               del_timer(&pLed1->BlinkTimer);
-                               pLed1->BlinkingLedState = LED_STATE_OFF;
-                               pLed1->CurrLedState = LED_STATE_OFF;
-                               if (pLed1->bLedOn)
-                                       mod_timer(&pLed->BlinkTimer,
-                                                 jiffies + msecs_to_jiffies(0));
-                       }
-               }
-               if (!pLed->bLedNoLinkBlinkInProgress) {
-                       if (pLed->CurrLedState == LED_SCAN_BLINK ||
-                           IS_LED_WPS_BLINKING(pLed))
-                               return;
-                       if (pLed->bLedBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedBlinkInProgress = false;
-                       }
-                       pLed->bLedNoLinkBlinkInProgress = true;
-                       pLed->CurrLedState = LED_BLINK_SLOWLY;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_NO_LINK_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_CTL_SITE_SURVEY:
-               if (pmlmepriv->sitesurveyctrl.traffic_busy &&
-                   check_fwstate(pmlmepriv, _FW_LINKED))
-                       ;
-               else if (!pLed->bLedScanBlinkInProgress) {
-                       if (IS_LED_WPS_BLINKING(pLed))
-                               return;
-                       if (pLed->bLedNoLinkBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedNoLinkBlinkInProgress = false;
-                       }
-                       if (pLed->bLedBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedBlinkInProgress = false;
-                       }
-                       pLed->bLedScanBlinkInProgress = true;
-                       pLed->CurrLedState = LED_SCAN_BLINK;
-                       pLed->BlinkTimes = 24;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_CTL_TX:
-       case LED_CTL_RX:
-               if (!pLed->bLedBlinkInProgress) {
-                       if (pLed->CurrLedState == LED_SCAN_BLINK ||
-                           IS_LED_WPS_BLINKING(pLed))
-                               return;
-                       if (pLed->bLedNoLinkBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedNoLinkBlinkInProgress = false;
-                       }
-                       pLed->bLedBlinkInProgress = true;
-                       pLed->CurrLedState = LED_TXRX_BLINK;
-                       pLed->BlinkTimes = 2;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_FASTER_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_CTL_START_WPS: /*wait until xinpin finish*/
-       case LED_CTL_START_WPS_BOTTON:
-               if (pLed1->bLedWPSBlinkInProgress) {
-                       pLed1->bLedWPSBlinkInProgress = false;
-                       del_timer(&pLed1->BlinkTimer);
-                       pLed1->BlinkingLedState = LED_STATE_OFF;
-                       pLed1->CurrLedState = LED_STATE_OFF;
-                       if (pLed1->bLedOn)
-                               mod_timer(&pLed->BlinkTimer,
-                                         jiffies + msecs_to_jiffies(0));
-               }
-               if (!pLed->bLedWPSBlinkInProgress) {
-                       if (pLed->bLedNoLinkBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedNoLinkBlinkInProgress = false;
-                       }
-                       if (pLed->bLedBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedBlinkInProgress = false;
-                       }
-                       if (pLed->bLedScanBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedScanBlinkInProgress = false;
-                       }
-                       pLed->bLedWPSBlinkInProgress = true;
-                       pLed->CurrLedState = LED_BLINK_WPS;
-                       if (pLed->bLedOn) {
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                               mod_timer(&pLed->BlinkTimer, jiffies +
-                                         msecs_to_jiffies(LED_BLINK_SLOWLY_INTERVAL));
-                       } else {
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                               mod_timer(&pLed->BlinkTimer, jiffies +
-                                         msecs_to_jiffies(LED_BLINK_NORMAL_INTERVAL));
-                       }
-               }
-               break;
-       case LED_CTL_STOP_WPS:  /*WPS connect success*/
-               if (pLed->bLedWPSBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedWPSBlinkInProgress = false;
-               }
-               pLed->bLedNoLinkBlinkInProgress = true;
-               pLed->CurrLedState = LED_BLINK_SLOWLY;
-               if (pLed->bLedOn)
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-               else
-                       pLed->BlinkingLedState = LED_STATE_ON;
-               mod_timer(&pLed->BlinkTimer, jiffies +
-                         msecs_to_jiffies(LED_BLINK_NO_LINK_INTERVAL_ALPHA));
-               break;
-       case LED_CTL_STOP_WPS_FAIL:     /*WPS authentication fail*/
-               if (pLed->bLedWPSBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedWPSBlinkInProgress = false;
-               }
-               pLed->bLedNoLinkBlinkInProgress = true;
-               pLed->CurrLedState = LED_BLINK_SLOWLY;
-               if (pLed->bLedOn)
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-               else
-                       pLed->BlinkingLedState = LED_STATE_ON;
-               mod_timer(&pLed->BlinkTimer, jiffies +
-                         msecs_to_jiffies(LED_BLINK_NO_LINK_INTERVAL_ALPHA));
-               /*LED1 settings*/
-               if (pLed1->bLedWPSBlinkInProgress)
-                       del_timer(&pLed1->BlinkTimer);
-               else
-                       pLed1->bLedWPSBlinkInProgress = true;
-               pLed1->CurrLedState = LED_BLINK_WPS_STOP;
-               if (pLed1->bLedOn)
-                       pLed1->BlinkingLedState = LED_STATE_OFF;
-               else
-                       pLed1->BlinkingLedState = LED_STATE_ON;
-               mod_timer(&pLed->BlinkTimer, jiffies +
-                         msecs_to_jiffies(LED_BLINK_NORMAL_INTERVAL));
-               break;
-       case LED_CTL_STOP_WPS_FAIL_OVERLAP:     /*WPS session overlap*/
-               if (pLed->bLedWPSBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedWPSBlinkInProgress = false;
-               }
-               pLed->bLedNoLinkBlinkInProgress = true;
-               pLed->CurrLedState = LED_BLINK_SLOWLY;
-               if (pLed->bLedOn)
-                       pLed->BlinkingLedState = LED_STATE_OFF;
-               else
-                       pLed->BlinkingLedState = LED_STATE_ON;
-               mod_timer(&pLed->BlinkTimer, jiffies +
-                         msecs_to_jiffies(LED_BLINK_NO_LINK_INTERVAL_ALPHA));
-               /*LED1 settings*/
-               if (pLed1->bLedWPSBlinkInProgress)
-                       del_timer(&pLed1->BlinkTimer);
-               else
-                       pLed1->bLedWPSBlinkInProgress = true;
-               pLed1->CurrLedState = LED_BLINK_WPS_STOP_OVERLAP;
-               pLed1->BlinkTimes = 10;
-               if (pLed1->bLedOn)
-                       pLed1->BlinkingLedState = LED_STATE_OFF;
-               else
-                       pLed1->BlinkingLedState = LED_STATE_ON;
-               mod_timer(&pLed->BlinkTimer, jiffies +
-                         msecs_to_jiffies(LED_BLINK_NORMAL_INTERVAL));
-               break;
-       case LED_CTL_POWER_OFF:
-               pLed->CurrLedState = LED_STATE_OFF;
-               pLed->BlinkingLedState = LED_STATE_OFF;
-               if (pLed->bLedNoLinkBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedNoLinkBlinkInProgress = false;
-               }
-               if (pLed->bLedLinkBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedLinkBlinkInProgress = false;
-               }
-               if (pLed->bLedBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedBlinkInProgress = false;
-               }
-               if (pLed->bLedWPSBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedWPSBlinkInProgress = false;
-               }
-               if (pLed->bLedScanBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedScanBlinkInProgress = false;
-               }
-               if (pLed->bLedStartToLinkBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedStartToLinkBlinkInProgress = false;
-               }
-               if (pLed1->bLedWPSBlinkInProgress) {
-                       del_timer(&pLed1->BlinkTimer);
-                       pLed1->bLedWPSBlinkInProgress = false;
-               }
-               pLed1->BlinkingLedState = LED_UNKNOWN;
-               SwLedOff(padapter, pLed);
-               SwLedOff(padapter, pLed1);
-               break;
-       default:
-               break;
-       }
-}
-
-static void SwLedControlMode5(struct _adapter *padapter,
-                             enum LED_CTL_MODE LedAction)
-{
-       struct led_priv *ledpriv = &padapter->ledpriv;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct LED_871x *pLed = &ledpriv->SwLed0;
-
-       if (padapter->eeprompriv.CustomerID == RT_CID_819x_CAMEO)
-               pLed = &ledpriv->SwLed1;
-
-       switch (LedAction) {
-       case LED_CTL_POWER_ON:
-       case LED_CTL_NO_LINK:
-       case LED_CTL_LINK:      /* solid blue */
-               if (pLed->CurrLedState == LED_SCAN_BLINK)
-                       return;
-               pLed->CurrLedState = LED_STATE_ON;
-               pLed->BlinkingLedState = LED_STATE_ON;
-               pLed->bLedBlinkInProgress = false;
-               mod_timer(&pLed->BlinkTimer,
-                         jiffies + msecs_to_jiffies(0));
-               break;
-       case LED_CTL_SITE_SURVEY:
-               if (pmlmepriv->sitesurveyctrl.traffic_busy &&
-                   check_fwstate(pmlmepriv, _FW_LINKED))
-                       ; /* dummy branch */
-               else if (!pLed->bLedScanBlinkInProgress) {
-                       if (pLed->bLedBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedBlinkInProgress = false;
-                       }
-                       pLed->bLedScanBlinkInProgress = true;
-                       pLed->CurrLedState = LED_SCAN_BLINK;
-                       pLed->BlinkTimes = 24;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_CTL_TX:
-       case LED_CTL_RX:
-               if (!pLed->bLedBlinkInProgress) {
-                       if (pLed->CurrLedState == LED_SCAN_BLINK)
-                               return;
-                       pLed->bLedBlinkInProgress = true;
-                       pLed->CurrLedState = LED_TXRX_BLINK;
-                       pLed->BlinkTimes = 2;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_FASTER_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_CTL_POWER_OFF:
-               pLed->CurrLedState = LED_STATE_OFF;
-               pLed->BlinkingLedState = LED_STATE_OFF;
-               if (pLed->bLedBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedBlinkInProgress = false;
-               }
-               SwLedOff(padapter, pLed);
-               break;
-       default:
-               break;
-       }
-}
-
-static void SwLedControlMode6(struct _adapter *padapter,
-                             enum LED_CTL_MODE LedAction)
-{
-       struct led_priv *ledpriv = &padapter->ledpriv;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct LED_871x *pLed = &ledpriv->SwLed0;
-
-       switch (LedAction) {
-       case LED_CTL_POWER_ON:
-       case LED_CTL_NO_LINK:
-       case LED_CTL_LINK:      /*solid blue*/
-       case LED_CTL_SITE_SURVEY:
-               if (IS_LED_WPS_BLINKING(pLed))
-                       return;
-               pLed->CurrLedState = LED_STATE_ON;
-               pLed->BlinkingLedState = LED_STATE_ON;
-               pLed->bLedBlinkInProgress = false;
-               mod_timer(&pLed->BlinkTimer, jiffies + msecs_to_jiffies(0));
-               break;
-       case LED_CTL_TX:
-       case LED_CTL_RX:
-               if (!pLed->bLedBlinkInProgress &&
-                   check_fwstate(pmlmepriv, _FW_LINKED)) {
-                       if (IS_LED_WPS_BLINKING(pLed))
-                               return;
-                       pLed->bLedBlinkInProgress = true;
-                       pLed->CurrLedState = LED_TXRX_BLINK;
-                       pLed->BlinkTimes = 2;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_FASTER_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_CTL_START_WPS: /*wait until xinpin finish*/
-       case LED_CTL_START_WPS_BOTTON:
-               if (!pLed->bLedWPSBlinkInProgress) {
-                       if (pLed->bLedBlinkInProgress) {
-                               del_timer(&pLed->BlinkTimer);
-                               pLed->bLedBlinkInProgress = false;
-                       }
-                       pLed->bLedWPSBlinkInProgress = true;
-                       pLed->CurrLedState = LED_BLINK_WPS;
-                       if (pLed->bLedOn)
-                               pLed->BlinkingLedState = LED_STATE_OFF;
-                       else
-                               pLed->BlinkingLedState = LED_STATE_ON;
-                       mod_timer(&pLed->BlinkTimer, jiffies +
-                                 msecs_to_jiffies(LED_BLINK_SCAN_INTERVAL_ALPHA));
-               }
-               break;
-       case LED_CTL_STOP_WPS_FAIL:
-       case LED_CTL_STOP_WPS:
-               if (pLed->bLedWPSBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedWPSBlinkInProgress = false;
-               }
-               pLed->CurrLedState = LED_STATE_ON;
-               pLed->BlinkingLedState = LED_STATE_ON;
-               mod_timer(&pLed->BlinkTimer,
-                         jiffies + msecs_to_jiffies(0));
-               break;
-       case LED_CTL_POWER_OFF:
-               pLed->CurrLedState = LED_STATE_OFF;
-               pLed->BlinkingLedState = LED_STATE_OFF;
-               if (pLed->bLedBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedBlinkInProgress = false;
-               }
-               if (pLed->bLedWPSBlinkInProgress) {
-                       del_timer(&pLed->BlinkTimer);
-                       pLed->bLedWPSBlinkInProgress = false;
-               }
-               SwLedOff(padapter, pLed);
-               break;
-       default:
-               break;
-       }
-}
-
-/*     Description:
- *             Dispatch LED action according to pHalData->LedStrategy.
- */
-void LedControl871x(struct _adapter *padapter, enum LED_CTL_MODE LedAction)
-{
-       struct led_priv *ledpriv = &padapter->ledpriv;
-
-       if (!ledpriv->bRegUseLed)
-               return;
-       switch (ledpriv->LedStrategy) {
-       case SW_LED_MODE0:
-               break;
-       case SW_LED_MODE1:
-               SwLedControlMode1(padapter, LedAction);
-               break;
-       case SW_LED_MODE2:
-               SwLedControlMode2(padapter, LedAction);
-               break;
-       case SW_LED_MODE3:
-               SwLedControlMode3(padapter, LedAction);
-               break;
-       case SW_LED_MODE4:
-               SwLedControlMode4(padapter, LedAction);
-               break;
-       case SW_LED_MODE5:
-               SwLedControlMode5(padapter, LedAction);
-               break;
-       case SW_LED_MODE6:
-               SwLedControlMode6(padapter, LedAction);
-               break;
-       default:
-               break;
-       }
-}
-
-void r8712_flush_led_works(struct _adapter *padapter)
-{
-       struct led_priv *pledpriv = &padapter->ledpriv;
-
-       flush_work(&pledpriv->SwLed0.BlinkWorkItem);
-       flush_work(&pledpriv->SwLed1.BlinkWorkItem);
-}
diff --git a/drivers/staging/rtl8712/rtl8712_macsetting_bitdef.h b/drivers/staging/rtl8712/rtl8712_macsetting_bitdef.h
deleted file mode 100644 (file)
index 46d758d..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_MACSETTING_BITDEF_H__
-#define __RTL8712_MACSETTING_BITDEF_H__
-
-/*MACID*/
-/*BSSID*/
-
-/*HWVID*/
-#define        _HWVID_MSK                              0x0F
-
-/*MAR*/
-/*MBIDCANCONTENT*/
-
-/*MBIDCANCFG*/
-#define        _POOLING                                BIT(31)
-#define        _WRITE_EN                               BIT(16)
-#define        _CAM_ADDR_MSK                   0x001F
-#define        _CAM_ADDR_SHT                   0
-
-/*BUILDTIME*/
-#define _BUILDTIME_MSK                 0x3FFFFFFF
-
-/*BUILDUSER*/
-
-#endif /* __RTL8712_MACSETTING_BITDEF_H__*/
-
diff --git a/drivers/staging/rtl8712/rtl8712_macsetting_regdef.h b/drivers/staging/rtl8712/rtl8712_macsetting_regdef.h
deleted file mode 100644 (file)
index 64740d9..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_MACSETTING_REGDEF_H__
-#define __RTL8712_MACSETTING_REGDEF_H__
-
-#define MACID                          (RTL8712_MACIDSETTING_ + 0x0000)
-#define BSSIDR                         (RTL8712_MACIDSETTING_ + 0x0008)
-#define HWVID                          (RTL8712_MACIDSETTING_ + 0x000E)
-#define MAR                            (RTL8712_MACIDSETTING_ + 0x0010)
-#define MBIDCANCONTENT                 (RTL8712_MACIDSETTING_ + 0x0018)
-#define MBIDCANCFG                     (RTL8712_MACIDSETTING_ + 0x0020)
-#define BUILDTIME                      (RTL8712_MACIDSETTING_ + 0x0024)
-#define BUILDUSER                      (RTL8712_MACIDSETTING_ + 0x0028)
-
-#endif /*__RTL8712_MACSETTING_REGDEF_H__*/
-
diff --git a/drivers/staging/rtl8712/rtl8712_powersave_bitdef.h b/drivers/staging/rtl8712/rtl8712_powersave_bitdef.h
deleted file mode 100644 (file)
index 53e0d6b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_POWERSAVE_BITDEF_H__
-#define __RTL8712_POWERSAVE_BITDEF_H__
-
-/*WOWCTRL*/
-#define        _UWF                    BIT(3)
-#define        _MAGIC                  BIT(2)
-#define        _WOW_EN                 BIT(1)
-#define        _PMEN                   BIT(0)
-
-/*PSSTATUS*/
-#define        _PSSTATUS_SEL_MSK               0x0F
-
-/*PSSWITCH*/
-#define        _PSSWITCH_ACT                   BIT(7)
-#define        _PSSWITCH_SEL_MSK               0x0F
-#define        _PSSWITCH_SEL_SHT               0
-
-/*LPNAV_CTRL*/
-#define        _LPNAV_EN                       BIT(31)
-#define        _LPNAV_EARLY_MSK                0x7FFF0000
-#define        _LPNAV_EARLY_SHT                16
-#define        _LPNAV_TH_MSK                   0x0000FFFF
-#define        _LPNAV_TH_SHT                   0
-
-/*RPWM*/
-/*CPWM*/
-#define        _TOGGLING                       BIT(7)
-#define        _WWLAN                          BIT(3)
-#define        _RPS_ST                         BIT(2)
-#define        _WLAN_TRX                       BIT(1)
-#define        _SYS_CLK                        BIT(0)
-
-#endif /* __RTL8712_POWERSAVE_BITDEF_H__*/
diff --git a/drivers/staging/rtl8712/rtl8712_powersave_regdef.h b/drivers/staging/rtl8712/rtl8712_powersave_regdef.h
deleted file mode 100644 (file)
index 1bcfde4..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_POWERSAVE_REGDEF_H__
-#define __RTL8712_POWERSAVE_REGDEF_H__
-
-#define WOWCTRL                                (RTL8712_POWERSAVE_ + 0x00)
-#define PSSTATUS                       (RTL8712_POWERSAVE_ + 0x01)
-#define PSSWITCH                       (RTL8712_POWERSAVE_ + 0x02)
-#define MIMOPS_WAITPERIOD              (RTL8712_POWERSAVE_ + 0x03)
-#define LPNAV_CTRL                     (RTL8712_POWERSAVE_ + 0x04)
-#define WFM0                           (RTL8712_POWERSAVE_ + 0x10)
-#define WFM1                           (RTL8712_POWERSAVE_ + 0x20)
-#define WFM2                           (RTL8712_POWERSAVE_ + 0x30)
-#define WFM3                           (RTL8712_POWERSAVE_ + 0x40)
-#define WFM4                           (RTL8712_POWERSAVE_ + 0x50)
-#define WFM5                           (RTL8712_POWERSAVE_ + 0x60)
-#define WFCRC                          (RTL8712_POWERSAVE_ + 0x70)
-#define RPWM                           (RTL8712_POWERSAVE_ + 0x7C)
-#define CPWM                           (RTL8712_POWERSAVE_ + 0x7D)
-
-#endif /* __RTL8712_POWERSAVE_REGDEF_H__ */
-
diff --git a/drivers/staging/rtl8712/rtl8712_ratectrl_bitdef.h b/drivers/staging/rtl8712/rtl8712_ratectrl_bitdef.h
deleted file mode 100644 (file)
index 1de51c4..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_RATECTRL_BITDEF_H__
-#define __RTL8712_RATECTRL_BITDEF_H__
-
-/*INIRTSMCS_SEL*/
-#define        _INIRTSMCS_SEL_MSK              0x3F
-
-/* RRSR*/
-#define        _RRSR_SHORT                     BIT(23)
-#define        _RRSR_RSC_MSK           0x600000
-#define        _RRSR_RSC_SHT           21
-#define        _RRSR_BITMAP_MSK        0x0FFFFF
-#define        _RRSR_BITMAP_SHT        0
-
-/* AGGLEN_LMT_H*/
-#define        _AGGLMT_MCS32_MSK                       0xF0
-#define        _AGGLMT_MCS32_SHT                       4
-#define        _AGGLMT_MCS15_SGI_MSK           0x0F
-#define        _AGGLMT_MCS15_SGI_SHT           0
-
-/* DARFRC*/
-/* RARFRC*/
-/* MCS_TXAGC*/
-/* CCK_TXAGC*/
-#define        _CCK_MSK                        0xFF00
-#define        _CCK_SHT                        8
-#define        _BARKER_MSK                     0x00FF
-#define        _BARKER_SHT                     0
-
-#endif /*      __RTL8712_RATECTRL_BITDEF_H__*/
-
diff --git a/drivers/staging/rtl8712/rtl8712_ratectrl_regdef.h b/drivers/staging/rtl8712/rtl8712_ratectrl_regdef.h
deleted file mode 100644 (file)
index 9ed5653..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL8712_RATECTRL_REGDEF_H__
-#define __RTL8712_RATECTRL_REGDEF_H__
-
-#define INIMCS_SEL                     (RTL8712_RATECTRL_ + 0x00)
-#define INIRTSMCS_SEL          (RTL8712_RATECTRL_ + 0x20)
-#define RRSR                           (RTL8712_RATECTRL_ + 0x21)
-#define ARFR0                          (RTL8712_RATECTRL_ + 0x24)
-#define ARFR1                          (RTL8712_RATECTRL_ + 0x28)
-#define ARFR2                          (RTL8712_RATECTRL_ + 0x2C)
-#define ARFR3                          (RTL8712_RATECTRL_ + 0x30)
-#define ARFR4                          (RTL8712_RATECTRL_ + 0x34)
-#define ARFR5                          (RTL8712_RATECTRL_ + 0x38)
-#define ARFR6                          (RTL8712_RATECTRL_ + 0x3C)
-#define ARFR7                          (RTL8712_RATECTRL_ + 0x40)
-#define AGGLEN_LMT_H           (RTL8712_RATECTRL_ + 0x47)
-#define AGGLEN_LMT_L           (RTL8712_RATECTRL_ + 0x48)
-#define DARFRC                         (RTL8712_RATECTRL_ + 0x50)
-#define RARFRC                         (RTL8712_RATECTRL_ + 0x58)
-#define MCS_TXAGC0                     (RTL8712_RATECTRL_ + 0x60)
-#define MCS_TXAGC1                     (RTL8712_RATECTRL_ + 0x61)
-#define MCS_TXAGC2                     (RTL8712_RATECTRL_ + 0x62)
-#define MCS_TXAGC3                     (RTL8712_RATECTRL_ + 0x63)
-#define MCS_TXAGC4                     (RTL8712_RATECTRL_ + 0x64)
-#define MCS_TXAGC5                     (RTL8712_RATECTRL_ + 0x65)
-#define MCS_TXAGC6                     (RTL8712_RATECTRL_ + 0x66)
-#define MCS_TXAGC7                     (RTL8712_RATECTRL_ + 0x67)
-#define CCK_TXAGC                      (RTL8712_RATECTRL_ + 0x68)
-
-#endif /*__RTL8712_RATECTRL_REGDEF_H__*/
-
diff --git a/drivers/staging/rtl8712/rtl8712_recv.c b/drivers/staging/rtl8712/rtl8712_recv.c
deleted file mode 100644 (file)
index 7f1fdd0..0000000
+++ /dev/null
@@ -1,1079 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl8712_recv.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _RTL8712_RECV_C_
-
-#include <linux/if_ether.h>
-#include <linux/ip.h>
-#include <net/cfg80211.h>
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "recv_osdep.h"
-#include "mlme_osdep.h"
-#include "ethernet.h"
-#include "usb_ops.h"
-#include "wifi.h"
-
-static void recv_tasklet(struct tasklet_struct *t);
-
-void r8712_init_recv_priv(struct recv_priv *precvpriv,
-                         struct _adapter *padapter)
-{
-       int i;
-       struct recv_buf *precvbuf;
-       addr_t tmpaddr = 0;
-       int alignment = 0;
-       struct sk_buff *pskb = NULL;
-
-       /*init recv_buf*/
-       _init_queue(&precvpriv->free_recv_buf_queue);
-       precvpriv->pallocated_recv_buf =
-               kzalloc(NR_RECVBUFF * sizeof(struct recv_buf) + 4, GFP_ATOMIC);
-       if (!precvpriv->pallocated_recv_buf)
-               return;
-       precvpriv->precv_buf = precvpriv->pallocated_recv_buf + 4 -
-                             ((addr_t)(precvpriv->pallocated_recv_buf) & 3);
-       precvbuf = (struct recv_buf *)precvpriv->precv_buf;
-       for (i = 0; i < NR_RECVBUFF; i++) {
-               INIT_LIST_HEAD(&precvbuf->list);
-               spin_lock_init(&precvbuf->recvbuf_lock);
-               if (r8712_os_recvbuf_resource_alloc(padapter, precvbuf))
-                       break;
-               precvbuf->ref_cnt = 0;
-               precvbuf->adapter = padapter;
-               list_add_tail(&precvbuf->list,
-                             &precvpriv->free_recv_buf_queue.queue);
-               precvbuf++;
-       }
-       precvpriv->free_recv_buf_queue_cnt = NR_RECVBUFF;
-       tasklet_setup(&precvpriv->recv_tasklet, recv_tasklet);
-       skb_queue_head_init(&precvpriv->rx_skb_queue);
-
-       skb_queue_head_init(&precvpriv->free_recv_skb_queue);
-       for (i = 0; i < NR_PREALLOC_RECV_SKB; i++) {
-               pskb = netdev_alloc_skb(padapter->pnetdev, MAX_RECVBUF_SZ +
-                      RECVBUFF_ALIGN_SZ);
-               if (pskb) {
-                       tmpaddr = (addr_t)pskb->data;
-                       alignment = tmpaddr & (RECVBUFF_ALIGN_SZ - 1);
-                       skb_reserve(pskb, (RECVBUFF_ALIGN_SZ - alignment));
-                       skb_queue_tail(&precvpriv->free_recv_skb_queue, pskb);
-               }
-               pskb = NULL;
-       }
-}
-
-void r8712_free_recv_priv(struct recv_priv *precvpriv)
-{
-       int i;
-       struct recv_buf *precvbuf;
-       struct _adapter *padapter = precvpriv->adapter;
-
-       precvbuf = (struct recv_buf *)precvpriv->precv_buf;
-       for (i = 0; i < NR_RECVBUFF; i++) {
-               r8712_os_recvbuf_resource_free(padapter, precvbuf);
-               precvbuf++;
-       }
-       kfree(precvpriv->pallocated_recv_buf);
-       skb_queue_purge(&precvpriv->rx_skb_queue);
-       if (skb_queue_len(&precvpriv->rx_skb_queue))
-               netdev_warn(padapter->pnetdev, "r8712u: rx_skb_queue not empty\n");
-       skb_queue_purge(&precvpriv->free_recv_skb_queue);
-       if (skb_queue_len(&precvpriv->free_recv_skb_queue))
-               netdev_warn(padapter->pnetdev, "r8712u: free_recv_skb_queue not empty %d\n",
-                           skb_queue_len(&precvpriv->free_recv_skb_queue));
-}
-
-void r8712_init_recvbuf(struct _adapter *padapter, struct recv_buf *precvbuf)
-{
-       precvbuf->transfer_len = 0;
-       precvbuf->len = 0;
-       precvbuf->ref_cnt = 0;
-       if (precvbuf->pbuf) {
-               precvbuf->pdata = precvbuf->pbuf;
-               precvbuf->phead = precvbuf->pbuf;
-               precvbuf->ptail = precvbuf->pbuf;
-               precvbuf->pend = precvbuf->pdata + MAX_RECVBUF_SZ;
-       }
-}
-
-void r8712_free_recvframe(union recv_frame *precvframe,
-                         struct  __queue *pfree_recv_queue)
-{
-       unsigned long irqL;
-       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_irqsave(&pfree_recv_queue->lock, irqL);
-       list_del_init(&precvframe->u.hdr.list);
-       list_add_tail(&precvframe->u.hdr.list, &pfree_recv_queue->queue);
-       if (padapter) {
-               if (pfree_recv_queue == &precvpriv->free_recv_queue)
-                       precvpriv->free_recvframe_cnt++;
-       }
-       spin_unlock_irqrestore(&pfree_recv_queue->lock, irqL);
-}
-
-static void update_recvframe_attrib_from_recvstat(struct rx_pkt_attrib *pattrib,
-                                                 struct recv_stat *prxstat)
-{
-       u16 drvinfo_sz;
-
-       drvinfo_sz = (le32_to_cpu(prxstat->rxdw0) & 0x000f0000) >> 16;
-       drvinfo_sz <<= 3;
-       /*TODO:
-        * Offset 0
-        */
-       pattrib->bdecrypted = (le32_to_cpu(prxstat->rxdw0) & BIT(27)) == 0;
-       pattrib->crc_err = (le32_to_cpu(prxstat->rxdw0) & BIT(14)) != 0;
-       /*Offset 4*/
-       /*Offset 8*/
-       /*Offset 12*/
-       if (le32_to_cpu(prxstat->rxdw3) & BIT(13)) {
-               pattrib->tcpchk_valid = 1; /* valid */
-               if (le32_to_cpu(prxstat->rxdw3) & BIT(11))
-                       pattrib->tcp_chkrpt = 1; /* correct */
-               else
-                       pattrib->tcp_chkrpt = 0; /* incorrect */
-               if (le32_to_cpu(prxstat->rxdw3) & BIT(12))
-                       pattrib->ip_chkrpt = 1; /* correct */
-               else
-                       pattrib->ip_chkrpt = 0; /* incorrect */
-       } else {
-               pattrib->tcpchk_valid = 0; /* invalid */
-       }
-       pattrib->mcs_rate = (u8)((le32_to_cpu(prxstat->rxdw3)) & 0x3f);
-       pattrib->htc = (u8)((le32_to_cpu(prxstat->rxdw3) >> 14) & 0x1);
-       /*Offset 16*/
-       /*Offset 20*/
-       /*phy_info*/
-}
-
-/*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;
-
-       pfree_recv_queue = &adapter->recvpriv.free_recv_queue;
-       phead = &defrag_q->queue;
-       plist = phead->next;
-       prframe = container_of(plist, union recv_frame, u.list);
-       list_del_init(&prframe->u.list);
-       pfhdr = &prframe->u.hdr;
-       curfragnum = 0;
-       if (curfragnum != pfhdr->attrib.frag_num) {
-               /*the first fragment number must be 0
-                *free the whole queue
-                */
-               r8712_free_recvframe(prframe, pfree_recv_queue);
-               r8712_free_recvframe_queue(defrag_q, pfree_recv_queue);
-               return NULL;
-       }
-       curfragnum++;
-       plist = &defrag_q->queue;
-       plist = plist->next;
-       while (!end_of_queue_search(phead, plist)) {
-               pnextrframe = container_of(plist, union recv_frame, u.list);
-               pnfhdr = &pnextrframe->u.hdr;
-               /*check the fragment sequence  (2nd ~n fragment frame) */
-               if (curfragnum != pnfhdr->attrib.frag_num) {
-                       /* the fragment number must increase  (after decache)
-                        * release the defrag_q & prframe
-                        */
-                       r8712_free_recvframe(prframe, pfree_recv_queue);
-                       r8712_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(pfhdr->rx_tail, pnfhdr->rx_data, pnfhdr->len);
-               recvframe_put(prframe, pnfhdr->len);
-               pfhdr->attrib.icv_len = pnfhdr->attrib.icv_len;
-               plist = plist->next;
-       }
-       /* free the defrag_q queue and return the prframe */
-       r8712_free_recvframe_queue(defrag_q, pfree_recv_queue);
-       return prframe;
-}
-
-/* check if need to defrag, if needed queue the frame to defrag_q */
-union recv_frame *r8712_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 = r8712_get_stainfo(pstapriv, psta_addr);
-       if (!psta)
-               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 */
-                                       r8712_free_recvframe_queue(pdefrag_q,
-                                                            pfree_recv_queue);
-                               }
-                       }
-                       /* Then enqueue the 0~(n-1) fragment to the defrag_q */
-                       phead = &pdefrag_q->queue;
-                       list_add_tail(&pfhdr->list, phead);
-                       prtnframe = NULL;
-               } else {
-                       /* can't find this ta's defrag_queue, so free this
-                        * recv_frame
-                        */
-                       r8712_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) {
-                       phead = &pdefrag_q->queue;
-                       list_add_tail(&pfhdr->list, phead);
-                       /*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
-                        */
-                       r8712_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 (r8712_recvframe_chkmic(padapter, prtnframe) == _FAIL) {
-                       r8712_free_recvframe(prtnframe, pfree_recv_queue);
-                       prtnframe = NULL;
-               }
-       }
-       return prtnframe;
-}
-
-static void amsdu_to_msdu(struct _adapter *padapter, union recv_frame *prframe)
-{
-       int     a_len, padding_len;
-       u16     eth_type, nSubframe_Length;
-       u8      nr_subframes, i;
-       unsigned char *pdata;
-       struct rx_pkt_attrib *pattrib;
-       _pkt *sub_skb, *subframes[MAX_SUBFRAME_COUNT];
-       struct recv_priv *precvpriv = &padapter->recvpriv;
-       struct  __queue *pfree_recv_queue = &precvpriv->free_recv_queue;
-
-       nr_subframes = 0;
-       pattrib = &prframe->u.hdr.attrib;
-       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 */
-               nSubframe_Length = *((u16 *)(pdata + 12));
-               /*==m==>change the length order*/
-               nSubframe_Length = (nSubframe_Length >> 8) +
-                                  (nSubframe_Length << 8);
-               if (a_len < (ETHERNET_HEADER_SIZE + nSubframe_Length)) {
-                       netdev_warn(padapter->pnetdev, "r8712u: nRemain_Length is %d and nSubframe_Length is: %d\n",
-                                   a_len, nSubframe_Length);
-                       goto exit;
-               }
-               /* move the data point to data content */
-               pdata += ETH_HLEN;
-               a_len -= ETH_HLEN;
-               /* Allocate new skb for releasing to upper layer */
-               sub_skb = dev_alloc_skb(nSubframe_Length + 12);
-               if (!sub_skb)
-                       break;
-               skb_reserve(sub_skb, 12);
-               skb_put_data(sub_skb, pdata, nSubframe_Length);
-               subframes[nr_subframes++] = sub_skb;
-               if (nr_subframes >= MAX_SUBFRAME_COUNT) {
-                       netdev_warn(padapter->pnetdev, "r8712u: ParseSubframe(): Too many Subframes! Packets dropped!\n");
-                       break;
-               }
-               pdata += nSubframe_Length;
-               a_len -= nSubframe_Length;
-               if (a_len != 0) {
-                       padding_len = 4 - ((nSubframe_Length + ETH_HLEN) & 3);
-                       if (padding_len == 4)
-                               padding_len = 0;
-                       if (a_len < padding_len)
-                               goto exit;
-                       pdata += padding_len;
-                       a_len -= padding_len;
-               }
-       }
-       for (i = 0; i < nr_subframes; i++) {
-               sub_skb = subframes[i];
-               /* convert hdr + possible LLC headers into Ethernet header */
-               eth_type = (sub_skb->data[6] << 8) | sub_skb->data[7];
-               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);
-               }
-               /* Indicate the packets to upper layer */
-               if (sub_skb) {
-                       sub_skb->protocol =
-                                eth_type_trans(sub_skb, padapter->pnetdev);
-                       sub_skb->dev = padapter->pnetdev;
-                       if ((pattrib->tcpchk_valid == 1) &&
-                           (pattrib->tcp_chkrpt == 1)) {
-                               sub_skb->ip_summed = CHECKSUM_UNNECESSARY;
-                       } else {
-                               sub_skb->ip_summed = CHECKSUM_NONE;
-                       }
-                       netif_rx(sub_skb);
-               }
-       }
-exit:
-       prframe->u.hdr.len = 0;
-       r8712_free_recvframe(prframe, pfree_recv_queue);
-}
-
-void r8712_rxcmd_event_hdl(struct _adapter *padapter, void *prxcmdbuf)
-{
-       __le32 voffset;
-       u8 *poffset;
-       u16 cmd_len, drvinfo_sz;
-       struct recv_stat *prxstat;
-
-       poffset = prxcmdbuf;
-       voffset = *(__le32 *)poffset;
-       prxstat = prxcmdbuf;
-       drvinfo_sz = (le32_to_cpu(prxstat->rxdw0) & 0x000f0000) >> 16;
-       drvinfo_sz <<= 3;
-       poffset += RXDESC_SIZE + drvinfo_sz;
-       do {
-               voffset  = *(__le32 *)poffset;
-               cmd_len = (u16)(le32_to_cpu(voffset) & 0xffff);
-               r8712_event_handle(padapter, (__le32 *)poffset);
-               poffset += (cmd_len + 8);/*8 bytes alignment*/
-       } while (le32_to_cpu(voffset) & BIT(31));
-}
-
-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) % 4096;
-
-       /* 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) % 4096;
-       else if (SN_LESS(wend, seq_num)) {
-               if (seq_num >= (wsize - 1))
-                       preorder_ctrl->indicate_seq = seq_num + 1 - wsize;
-               else
-                       preorder_ctrl->indicate_seq = 4095 - (wsize -
-                                                     (seq_num + 1)) + 1;
-       }
-       return true;
-}
-
-static int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl,
-                                    union recv_frame *prframe)
-{
-       struct list_head *phead, *plist;
-       union recv_frame *pnextrframe;
-       struct rx_pkt_attrib *pnextattrib;
-       struct  __queue *ppending_recvframe_queue =
-                                       &preorder_ctrl->pending_recvframe_queue;
-       struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib;
-
-       phead = &ppending_recvframe_queue->queue;
-       plist = phead->next;
-       while (!end_of_queue_search(phead, plist)) {
-               pnextrframe = container_of(plist, union recv_frame, u.list);
-               pnextattrib = &pnextrframe->u.hdr.attrib;
-
-               if (SN_EQUAL(pnextattrib->seq_num, pattrib->seq_num))
-                       return false;
-
-               if (SN_LESS(pnextattrib->seq_num, pattrib->seq_num))
-                       plist = plist->next;
-               else
-                       break;
-       }
-       list_del_init(&prframe->u.hdr.list);
-       list_add_tail(&prframe->u.hdr.list, plist);
-       return true;
-}
-
-int r8712_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;
-       int bPktInBuf = false;
-       struct  __queue *ppending_recvframe_queue =
-                        &preorder_ctrl->pending_recvframe_queue;
-
-       phead = &ppending_recvframe_queue->queue;
-       plist = phead->next;
-       /* Handling some condition for forced indicate case.*/
-       if (bforced) {
-               if (list_empty(phead))
-                       return true;
-
-               prframe = container_of(plist, union recv_frame, u.list);
-               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 = container_of(plist, union recv_frame, u.list);
-               pattrib = &prframe->u.hdr.attrib;
-               if (!SN_LESS(preorder_ctrl->indicate_seq, pattrib->seq_num)) {
-                       plist = plist->next;
-                       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) % 4096;
-                       /*indicate this recv_frame*/
-                       if (!pattrib->amsdu) {
-                               if (!padapter->driver_stopped &&
-                                   !padapter->surprise_removed) {
-                                       /* indicate this recv_frame */
-                                       r8712_recv_indicatepkt(padapter,
-                                                              prframe);
-                               }
-                       } else if (pattrib->amsdu == 1) {
-                               amsdu_to_msdu(padapter, prframe);
-                       }
-                       /* Update local variables. */
-                       bPktInBuf = false;
-               } else {
-                       bPktInBuf = true;
-                       break;
-               }
-       }
-       return bPktInBuf;
-}
-
-static int recv_indicatepkt_reorder(struct _adapter *padapter,
-                                   union recv_frame *prframe)
-{
-       unsigned long irql;
-       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. */
-               r8712_wlanhdr_to_ethhdr(prframe);
-               if (pattrib->qos != 1) {
-                       if (!padapter->driver_stopped &&
-                           !padapter->surprise_removed) {
-                               r8712_recv_indicatepkt(padapter, prframe);
-                               return 0;
-                       } else {
-                               return -EINVAL;
-                       }
-               }
-       }
-       spin_lock_irqsave(&ppending_recvframe_queue->lock, irql);
-       /*s2. check if winstart_b(indicate_seq) needs to be 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))
-               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.
-        */
-       if (r8712_recv_indicatepkts_in_order(padapter, preorder_ctrl, false)) {
-               mod_timer(&preorder_ctrl->reordering_ctrl_timer,
-                         jiffies + msecs_to_jiffies(REORDER_WAIT_TIME));
-               spin_unlock_irqrestore(&ppending_recvframe_queue->lock, irql);
-       } else {
-               spin_unlock_irqrestore(&ppending_recvframe_queue->lock, irql);
-               del_timer(&preorder_ctrl->reordering_ctrl_timer);
-       }
-       return 0;
-_err_exit:
-       spin_unlock_irqrestore(&ppending_recvframe_queue->lock, irql);
-       return -ENOMEM;
-}
-
-void r8712_reordering_ctrl_timeout_handler(void *pcontext)
-{
-       unsigned long irql;
-       struct recv_reorder_ctrl *preorder_ctrl = pcontext;
-       struct _adapter *padapter = preorder_ctrl->padapter;
-       struct  __queue *ppending_recvframe_queue =
-                                &preorder_ctrl->pending_recvframe_queue;
-
-       if (padapter->driver_stopped || padapter->surprise_removed)
-               return;
-       spin_lock_irqsave(&ppending_recvframe_queue->lock, irql);
-       r8712_recv_indicatepkts_in_order(padapter, preorder_ctrl, true);
-       spin_unlock_irqrestore(&ppending_recvframe_queue->lock, irql);
-}
-
-static int r8712_process_recv_indicatepkts(struct _adapter *padapter,
-                                          union recv_frame *prframe)
-{
-       int retval = _SUCCESS;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct ht_priv  *phtpriv = &pmlmepriv->htpriv;
-
-       if (phtpriv->ht_option == 1) { /*B/G/N Mode*/
-               if (recv_indicatepkt_reorder(padapter, prframe)) {
-                       /* including perform A-MPDU Rx Ordering Buffer Control*/
-                       if (!padapter->driver_stopped &&
-                           !padapter->surprise_removed)
-                               return _FAIL;
-               }
-       } else { /*B/G mode*/
-               retval = r8712_wlanhdr_to_ethhdr(prframe);
-               if (retval)
-                       return _FAIL;
-               if (!padapter->driver_stopped && !padapter->surprise_removed) {
-                       /* indicate this recv_frame */
-                       r8712_recv_indicatepkt(padapter, prframe);
-               } else {
-                       return _FAIL;
-               }
-       }
-       return retval;
-}
-
-static u8 query_rx_pwr_percentage(s8 antpower)
-{
-       if ((antpower <= -100) || (antpower >= 20))
-               return  0;
-       else if (antpower >= 0)
-               return  100;
-       else
-               return 100 + antpower;
-}
-
-static u8 evm_db2percentage(s8 value)
-{
-       /*
-        * -33dB~0dB to 0%~99%
-        */
-       s8 ret_val = clamp(-value, 0, 33) * 3;
-
-       if (ret_val == 99)
-               ret_val = 100;
-
-       return ret_val;
-}
-
-s32 r8712_signal_scale_mapping(s32 cur_sig)
-{
-       s32 ret_sig;
-
-       if (cur_sig >= 51 && cur_sig <= 100)
-               ret_sig = 100;
-       else if (cur_sig >= 41 && cur_sig <= 50)
-               ret_sig = 80 + ((cur_sig - 40) * 2);
-       else if (cur_sig >= 31 && cur_sig <= 40)
-               ret_sig = 66 + (cur_sig - 30);
-       else if (cur_sig >= 21 && cur_sig <= 30)
-               ret_sig = 54 + (cur_sig - 20);
-       else if (cur_sig >= 10 && cur_sig <= 20)
-               ret_sig = 42 + (((cur_sig - 10) * 2) / 3);
-       else if (cur_sig >= 5 && cur_sig <= 9)
-               ret_sig = 22 + (((cur_sig - 5) * 3) / 2);
-       else if (cur_sig >= 1 && cur_sig <= 4)
-               ret_sig = 6 + (((cur_sig - 1) * 3) / 2);
-       else
-               ret_sig = cur_sig;
-       return ret_sig;
-}
-
-static s32  translate2dbm(struct _adapter *padapter, u8 signal_strength_idx)
-{
-       s32 signal_power; /* in dBm.*/
-       /* Translate to dBm (x=0.5y-95).*/
-       signal_power = (s32)((signal_strength_idx + 1) >> 1);
-       signal_power -= 95;
-       return signal_power;
-}
-
-static void query_rx_phy_status(struct _adapter *padapter,
-                               union recv_frame *prframe)
-{
-       u8 i, max_spatial_stream, evm;
-       struct recv_stat *prxstat = (struct recv_stat *)prframe->u.hdr.rx_head;
-       struct phy_stat *pphy_stat = (struct phy_stat *)(prxstat + 1);
-       u8 *pphy_head = (u8 *)(prxstat + 1);
-       s8 rx_pwr[4], rx_pwr_all;
-       u8 pwdb_all;
-       u32 rssi, total_rssi = 0;
-       u8 bcck_rate = 0, rf_rx_num = 0, cck_highpwr = 0;
-       struct phy_cck_rx_status *pcck_buf;
-       u8 sq;
-
-       /* Record it for next packet processing*/
-       bcck_rate = (prframe->u.hdr.attrib.mcs_rate <= 3 ? 1 : 0);
-       if (bcck_rate) {
-               u8 report;
-
-               /* CCK Driver info Structure is not the same as OFDM packet.*/
-               pcck_buf = (struct phy_cck_rx_status *)pphy_stat;
-               /* (1)Hardware does not provide RSSI for CCK
-                * (2)PWDB, Average PWDB calculated by hardware
-                * (for rate adaptive)
-                */
-               if (!cck_highpwr) {
-                       report = pcck_buf->cck_agc_rpt & 0xc0;
-                       report >>= 6;
-                       switch (report) {
-                       /* Modify the RF RNA gain value to -40, -20,
-                        * -2, 14 by Jenyu's suggestion
-                        * Note: different RF with the different
-                        * RNA gain.
-                        */
-                       case 0x3:
-                               rx_pwr_all = -40 - (pcck_buf->cck_agc_rpt &
-                                            0x3e);
-                               break;
-                       case 0x2:
-                               rx_pwr_all = -20 - (pcck_buf->cck_agc_rpt &
-                                            0x3e);
-                               break;
-                       case 0x1:
-                               rx_pwr_all = -2 - (pcck_buf->cck_agc_rpt &
-                                            0x3e);
-                               break;
-                       case 0x0:
-                               rx_pwr_all = 14 - (pcck_buf->cck_agc_rpt &
-                                            0x3e);
-                               break;
-                       }
-               } else {
-                       report = ((u8)(le32_to_cpu(pphy_stat->phydw1) >> 8)) &
-                                0x60;
-                       report >>= 5;
-                       switch (report) {
-                       case 0x3:
-                               rx_pwr_all = -40 - ((pcck_buf->cck_agc_rpt &
-                                            0x1f) << 1);
-                               break;
-                       case 0x2:
-                               rx_pwr_all = -20 - ((pcck_buf->cck_agc_rpt &
-                                            0x1f) << 1);
-                               break;
-                       case 0x1:
-                               rx_pwr_all = -2 - ((pcck_buf->cck_agc_rpt &
-                                            0x1f) << 1);
-                               break;
-                       case 0x0:
-                               rx_pwr_all = 14 - ((pcck_buf->cck_agc_rpt &
-                                            0x1f) << 1);
-                               break;
-                       }
-               }
-               pwdb_all = query_rx_pwr_percentage(rx_pwr_all);
-               /* CCK gain is smaller than OFDM/MCS gain,*/
-               /* so we add gain diff by experiences, the val is 6 */
-               pwdb_all += 6;
-               if (pwdb_all > 100)
-                       pwdb_all = 100;
-               /* modify the offset to make the same gain index with OFDM.*/
-               if (pwdb_all > 34 && pwdb_all <= 42)
-                       pwdb_all -= 2;
-               else if (pwdb_all > 26 && pwdb_all <= 34)
-                       pwdb_all -= 6;
-               else if (pwdb_all > 14 && pwdb_all <= 26)
-                       pwdb_all -= 8;
-               else if (pwdb_all > 4 && pwdb_all <= 14)
-                       pwdb_all -= 4;
-               /*
-                * (3) Get Signal Quality (EVM)
-                */
-               if (pwdb_all > 40) {
-                       sq = 100;
-               } else {
-                       sq = pcck_buf->sq_rpt;
-                       if (pcck_buf->sq_rpt > 64)
-                               sq = 0;
-                       else if (pcck_buf->sq_rpt < 20)
-                               sq = 100;
-                       else
-                               sq = ((64 - sq) * 100) / 44;
-               }
-               prframe->u.hdr.attrib.signal_qual = sq;
-               prframe->u.hdr.attrib.rx_mimo_signal_qual[0] = sq;
-               prframe->u.hdr.attrib.rx_mimo_signal_qual[1] = -1;
-       } else {
-               /* (1)Get RSSI for HT rate */
-               for (i = 0; i < ((padapter->registrypriv.rf_config) &
-                           0x0f); i++) {
-                       rf_rx_num++;
-                       rx_pwr[i] = ((pphy_head[PHY_STAT_GAIN_TRSW_SHT + i]
-                                   & 0x3F) * 2) - 110;
-                       /* Translate DBM to percentage. */
-                       rssi = query_rx_pwr_percentage(rx_pwr[i]);
-                       total_rssi += rssi;
-               }
-               /* (2)PWDB, Average PWDB calculated by hardware (for
-                * rate adaptive)
-                */
-               rx_pwr_all = (((pphy_head[PHY_STAT_PWDB_ALL_SHT]) >> 1) & 0x7f)
-                            - 106;
-               pwdb_all = query_rx_pwr_percentage(rx_pwr_all);
-
-               {
-                       /* (3)EVM of HT rate */
-                       if (prframe->u.hdr.attrib.htc &&
-                           prframe->u.hdr.attrib.mcs_rate >= 20 &&
-                           prframe->u.hdr.attrib.mcs_rate <= 27) {
-                               /* both spatial stream make sense */
-                               max_spatial_stream = 2;
-                       } else {
-                               /* only spatial stream 1 makes sense */
-                               max_spatial_stream = 1;
-                       }
-                       for (i = 0; i < max_spatial_stream; i++) {
-                               evm = evm_db2percentage((pphy_head
-                                     [PHY_STAT_RXEVM_SHT + i]));/*dbm*/
-                               prframe->u.hdr.attrib.signal_qual =
-                                        (u8)(evm & 0xff);
-                               prframe->u.hdr.attrib.rx_mimo_signal_qual[i] =
-                                        (u8)(evm & 0xff);
-                       }
-               }
-       }
-       /* UI BSS List signal strength(in percentage), make it good looking,
-        * from 0~100. It is assigned to the BSS List in
-        * GetValueFromBeaconOrProbeRsp().
-        */
-       if (bcck_rate) {
-               prframe->u.hdr.attrib.signal_strength =
-                        (u8)r8712_signal_scale_mapping(pwdb_all);
-       } else {
-               if (rf_rx_num != 0)
-                       prframe->u.hdr.attrib.signal_strength =
-                                (u8)(r8712_signal_scale_mapping(total_rssi /=
-                                rf_rx_num));
-       }
-}
-
-static void process_link_qual(struct _adapter *padapter,
-                             union recv_frame *prframe)
-{
-       u32     last_evm = 0, tmpVal;
-       struct rx_pkt_attrib *pattrib;
-       struct smooth_rssi_data *sqd = &padapter->recvpriv.signal_qual_data;
-
-       if (!prframe || !padapter)
-               return;
-       pattrib = &prframe->u.hdr.attrib;
-       if (pattrib->signal_qual != 0) {
-               /*
-                * 1. Record the general EVM to the sliding window.
-                */
-               if (sqd->total_num++ >= PHY_LINKQUALITY_SLID_WIN_MAX) {
-                       sqd->total_num = PHY_LINKQUALITY_SLID_WIN_MAX;
-                       last_evm = sqd->elements[sqd->index];
-                       sqd->total_val -= last_evm;
-               }
-               sqd->total_val += pattrib->signal_qual;
-               sqd->elements[sqd->index++] = pattrib->signal_qual;
-               if (sqd->index >= PHY_LINKQUALITY_SLID_WIN_MAX)
-                       sqd->index = 0;
-
-               /* <1> Showed on UI for user, in percentage. */
-               tmpVal = sqd->total_val / sqd->total_num;
-               padapter->recvpriv.signal = (u8)tmpVal;
-       }
-}
-
-static void process_rssi(struct _adapter *padapter, union recv_frame *prframe)
-{
-       u32 last_rssi, tmp_val;
-       struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib;
-       struct smooth_rssi_data *ssd = &padapter->recvpriv.signal_strength_data;
-
-       if (ssd->total_num++ >= PHY_RSSI_SLID_WIN_MAX) {
-               ssd->total_num = PHY_RSSI_SLID_WIN_MAX;
-               last_rssi = ssd->elements[ssd->index];
-               ssd->total_val -= last_rssi;
-       }
-       ssd->total_val += pattrib->signal_strength;
-       ssd->elements[ssd->index++] = pattrib->signal_strength;
-       if (ssd->index >= PHY_RSSI_SLID_WIN_MAX)
-               ssd->index = 0;
-       tmp_val = ssd->total_val / ssd->total_num;
-       padapter->recvpriv.rssi = (s8)translate2dbm(padapter, (u8)tmp_val);
-}
-
-static void process_phy_info(struct _adapter *padapter,
-                            union recv_frame *prframe)
-{
-       query_rx_phy_status(padapter, prframe);
-       process_rssi(padapter, prframe);
-       process_link_qual(padapter,  prframe);
-}
-
-int recv_func(struct _adapter *padapter, void *pcontext)
-{
-       struct rx_pkt_attrib *pattrib;
-       union recv_frame *prframe, *orig_prframe;
-       int retval = _SUCCESS;
-       struct  __queue *pfree_recv_queue = &padapter->recvpriv.free_recv_queue;
-       struct  mlme_priv       *pmlmepriv = &padapter->mlmepriv;
-
-       prframe = pcontext;
-       orig_prframe = prframe;
-       pattrib = &prframe->u.hdr.attrib;
-       if (check_fwstate(pmlmepriv, WIFI_MP_STATE)) {
-               if (pattrib->crc_err == 1)
-                       padapter->mppriv.rx_crcerrpktcount++;
-               else
-                       padapter->mppriv.rx_pktcount++;
-               if (!check_fwstate(pmlmepriv, WIFI_MP_LPBK_STATE)) {
-                       /* free this recv_frame */
-                       r8712_free_recvframe(orig_prframe, pfree_recv_queue);
-                       goto _exit_recv_func;
-               }
-       }
-       /* check the frame crtl field and decache */
-       retval = r8712_validate_recv_frame(padapter, prframe);
-       if (retval != _SUCCESS) {
-               /* free this recv_frame */
-               r8712_free_recvframe(orig_prframe, pfree_recv_queue);
-               goto _exit_recv_func;
-       }
-       process_phy_info(padapter, prframe);
-       prframe = r8712_decryptor(padapter, prframe);
-       if (!prframe) {
-               retval = _FAIL;
-               goto _exit_recv_func;
-       }
-       prframe = r8712_recvframe_chk_defrag(padapter, prframe);
-       if (!prframe)
-               goto _exit_recv_func;
-       prframe = r8712_portctrl(padapter, prframe);
-       if (!prframe) {
-               retval = _FAIL;
-               goto _exit_recv_func;
-       }
-       retval = r8712_process_recv_indicatepkts(padapter, prframe);
-       if (retval != _SUCCESS) {
-               r8712_free_recvframe(orig_prframe, pfree_recv_queue);
-               goto _exit_recv_func;
-       }
-_exit_recv_func:
-       return retval;
-}
-
-static void recvbuf2recvframe(struct _adapter *padapter, struct sk_buff *pskb)
-{
-       u8 *pbuf, shift_sz = 0;
-       u8      frag, mf;
-       uint    pkt_len;
-       u32 transfer_len;
-       struct recv_stat *prxstat;
-       u16     pkt_cnt, drvinfo_sz, pkt_offset, tmp_len, alloc_sz;
-       struct  __queue *pfree_recv_queue;
-       _pkt  *pkt_copy = NULL;
-       union recv_frame *precvframe = NULL;
-       struct recv_priv *precvpriv = &padapter->recvpriv;
-
-       pfree_recv_queue = &precvpriv->free_recv_queue;
-       pbuf = pskb->data;
-       prxstat = (struct recv_stat *)pbuf;
-       pkt_cnt = (le32_to_cpu(prxstat->rxdw2) >> 16) & 0xff;
-       pkt_len =  le32_to_cpu(prxstat->rxdw0) & 0x00003fff;
-       transfer_len = pskb->len;
-       /* Test throughput with Netgear 3700 (No security) with Chariot 3T3R
-        * pairs. The packet count will be a big number so that the containing
-        * packet will effect the Rx reordering.
-        */
-       if (transfer_len < pkt_len) {
-               /* In this case, it means the MAX_RECVBUF_SZ is too small to
-                * get the data from 8712u.
-                */
-               return;
-       }
-       do {
-               prxstat = (struct recv_stat *)pbuf;
-               pkt_len =  le32_to_cpu(prxstat->rxdw0) & 0x00003fff;
-               /* more fragment bit */
-               mf = (le32_to_cpu(prxstat->rxdw1) >> 27) & 0x1;
-               /* ragmentation number */
-               frag = (le32_to_cpu(prxstat->rxdw2) >> 12) & 0xf;
-               /* uint 2^3 = 8 bytes */
-               drvinfo_sz = (le32_to_cpu(prxstat->rxdw0) & 0x000f0000) >> 16;
-               drvinfo_sz <<= 3;
-               if (pkt_len <= 0)
-                       return;
-               /* Qos data, wireless lan header length is 26 */
-               if ((le32_to_cpu(prxstat->rxdw0) >> 23) & 0x01)
-                       shift_sz = 2;
-               precvframe = r8712_alloc_recvframe(pfree_recv_queue);
-               if (!precvframe)
-                       return;
-               INIT_LIST_HEAD(&precvframe->u.hdr.list);
-               precvframe->u.hdr.precvbuf = NULL; /*can't access the precvbuf*/
-               precvframe->u.hdr.len = 0;
-               tmp_len = pkt_len + drvinfo_sz + RXDESC_SIZE;
-               pkt_offset = (u16)round_up(tmp_len, 128);
-               /* for first fragment packet, driver need allocate 1536 +
-                * drvinfo_sz + RXDESC_SIZE to defrag packet.
-                */
-               if ((mf == 1) && (frag == 0))
-                       /*1658+6=1664, 1664 is 128 alignment.*/
-                       alloc_sz = max_t(u16, tmp_len, 1658);
-               else
-                       alloc_sz = tmp_len;
-               /* 2 is for IP header 4 bytes alignment in QoS packet case.
-                * 4 is for skb->data 4 bytes alignment.
-                */
-               alloc_sz += 6;
-               pkt_copy = netdev_alloc_skb(padapter->pnetdev, alloc_sz);
-               if (!pkt_copy)
-                       return;
-
-               precvframe->u.hdr.pkt = pkt_copy;
-               skb_reserve(pkt_copy, 4 - ((addr_t)(pkt_copy->data) % 4));
-               skb_reserve(pkt_copy, shift_sz);
-               memcpy(pkt_copy->data, pbuf, tmp_len);
-               precvframe->u.hdr.rx_head = pkt_copy->data;
-               precvframe->u.hdr.rx_data = pkt_copy->data;
-               precvframe->u.hdr.rx_tail = pkt_copy->data;
-               precvframe->u.hdr.rx_end = pkt_copy->data + alloc_sz;
-
-               recvframe_put(precvframe, tmp_len);
-               recvframe_pull(precvframe, drvinfo_sz + RXDESC_SIZE);
-               /* because the endian issue, driver avoid reference to the
-                * rxstat after calling update_recvframe_attrib_from_recvstat();
-                */
-               update_recvframe_attrib_from_recvstat(&precvframe->u.hdr.attrib,
-                                                     prxstat);
-               r8712_recv_entry(precvframe);
-               transfer_len -= pkt_offset;
-               pbuf += pkt_offset;
-               pkt_cnt--;
-               precvframe = NULL;
-               pkt_copy = NULL;
-       } while ((transfer_len > 0) && pkt_cnt > 0);
-}
-
-static void recv_tasklet(struct tasklet_struct *t)
-{
-       struct sk_buff *pskb;
-       struct _adapter *padapter = from_tasklet(padapter, t,
-                                                recvpriv.recv_tasklet);
-       struct recv_priv *precvpriv = &padapter->recvpriv;
-
-       while (NULL != (pskb = skb_dequeue(&precvpriv->rx_skb_queue))) {
-               recvbuf2recvframe(padapter, pskb);
-               skb_reset_tail_pointer(pskb);
-               pskb->len = 0;
-               if (!skb_cloned(pskb))
-                       skb_queue_tail(&precvpriv->free_recv_skb_queue, pskb);
-               else
-                       consume_skb(pskb);
-       }
-}
diff --git a/drivers/staging/rtl8712/rtl8712_recv.h b/drivers/staging/rtl8712/rtl8712_recv.h
deleted file mode 100644 (file)
index f4d20b0..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef _RTL8712_RECV_H_
-#define _RTL8712_RECV_H_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-
-/* Realtek's v2.6.6 reduced this to 4. However, under heavy network and CPU
- * loads, even 8 receive buffers might not be enough; cutting it to 4 seemed
- * unwise.
- */
-#define NR_RECVBUFF (8)
-
-#define NR_PREALLOC_RECV_SKB (8)
-#define RXDESC_SIZE    24
-#define RXDESC_OFFSET RXDESC_SIZE
-#define RECV_BLK_SZ 512
-#define RECV_BLK_CNT 16
-#define RECV_BLK_TH RECV_BLK_CNT
-#define MAX_RECVBUF_SZ 9100
-#define RECVBUFF_ALIGN_SZ 512
-#define RSVD_ROOM_SZ (0)
-/*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_WAIT_TIME      30 /* (ms)*/
-
-struct recv_stat {
-       __le32 rxdw0;
-       __le32 rxdw1;
-       __le32 rxdw2;
-       __le32 rxdw3;
-       __le32 rxdw4;
-       __le32 rxdw5;
-};
-
-struct phy_cck_rx_status {
-       /* For CCK rate descriptor. This is a unsigned 8:1 variable.
-        * LSB bit present 0.5. And MSB 7 bts present a signed value.
-        * Range from -64~+63.5.
-        */
-       u8      adc_pwdb_X[4];
-       u8      sq_rpt;
-       u8      cck_agc_rpt;
-};
-
-struct phy_stat {
-       __le32 phydw0;
-       __le32 phydw1;
-       __le32 phydw2;
-       __le32 phydw3;
-       __le32 phydw4;
-       __le32 phydw5;
-       __le32 phydw6;
-       __le32 phydw7;
-};
-
-#define PHY_STAT_GAIN_TRSW_SHT 0
-#define PHY_STAT_PWDB_ALL_SHT 4
-#define PHY_STAT_CFOSHO_SHT 5
-#define PHY_STAT_CCK_AGC_RPT_SHT 5
-#define PHY_STAT_CFOTAIL_SHT 9
-#define PHY_STAT_RXEVM_SHT 13
-#define PHY_STAT_RXSNR_SHT 15
-#define PHY_STAT_PDSNR_SHT 19
-#define PHY_STAT_CSI_CURRENT_SHT 21
-#define PHY_STAT_CSI_TARGET_SHT 23
-#define PHY_STAT_SIGEVM_SHT 25
-#define PHY_STAT_MAX_EX_PWR_SHT 26
-
-union recvstat {
-       struct recv_stat recv_stat;
-       unsigned int value[RXDESC_SIZE>>2];
-};
-
-struct recv_buf {
-       struct list_head list;
-       spinlock_t recvbuf_lock;
-       u32     ref_cnt;
-       struct _adapter  *adapter;
-       struct urb *purb;
-       _pkt *pskb;
-       u8  irp_pending;
-       u32  transfer_len;
-       uint  len;
-       u8 *phead;
-       u8 *pdata;
-       u8 *ptail;
-       u8 *pend;
-       u8 *pbuf;
-       u8 *pallocated_buf;
-};
-
-/*
- *     head  ----->
- *             data  ----->
- *                     payload
- *             tail  ----->
- *     end   ----->
- *     len = (unsigned int )(tail - data);
- */
-struct recv_frame_hdr {
-       struct list_head list;
-       _pkt    *pkt;
-       _pkt *pkt_newalloc;
-       struct _adapter  *adapter;
-       u8 fragcnt;
-       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;
-       } u;
-};
-
-void r8712_init_recvbuf(struct _adapter *padapter, struct recv_buf *precvbuf);
-void r8712_rxcmd_event_hdl(struct _adapter *padapter, void *prxcmdbuf);
-s32 r8712_signal_scale_mapping(s32 cur_sig);
-void r8712_reordering_ctrl_timeout_handler(void *pcontext);
-
-#endif
-
diff --git a/drivers/staging/rtl8712/rtl8712_regdef.h b/drivers/staging/rtl8712/rtl8712_regdef.h
deleted file mode 100644 (file)
index 28aec9a..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL8712_REGDEF_H__
-#define __RTL8712_REGDEF_H__
-
-#include "rtl8712_syscfg_regdef.h"
-#include "rtl8712_cmdctrl_regdef.h"
-#include "rtl8712_macsetting_regdef.h"
-#include "rtl8712_timectrl_regdef.h"
-#include "rtl8712_fifoctrl_regdef.h"
-#include "rtl8712_ratectrl_regdef.h"
-#include "rtl8712_edcasetting_regdef.h"
-#include "rtl8712_wmac_regdef.h"
-#include "rtl8712_powersave_regdef.h"
-#include "rtl8712_gp_regdef.h"
-#include "rtl8712_debugctrl_regdef.h"
-
-#define HIMR   (RTL8712_INTERRUPT_ + 0x08)
-
-#endif /* __RTL8712_REGDEF_H__*/
-
diff --git a/drivers/staging/rtl8712/rtl8712_security_bitdef.h b/drivers/staging/rtl8712/rtl8712_security_bitdef.h
deleted file mode 100644 (file)
index 44275ef..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_SECURITY_BITDEF_H__
-#define __RTL8712_SECURITY_BITDEF_H__
-
-/*CAMCMD*/
-#define        _SECCAM_POLLING                         BIT(31)
-#define        _SECCAM_CLR                                     BIT(30)
-#define        _SECCAM_WE                                      BIT(16)
-#define        _SECCAM_ADR_MSK                         0x000000FF
-#define        _SECCAM_ADR_SHT                         0
-
-/*CAMDBG*/
-#define        _SECCAM_INFO                            BIT(31)
-#define        _SEC_KEYFOUND                           BIT(30)
-#define        _SEC_CONFIG_MSK                         0x3F000000
-#define        _SEC_CONFIG_SHT                         24
-#define        _SEC_KEYCONTENT_MSK                     0x00FFFFFF
-#define        _SEC_KEYCONTENT_SHT                     0
-
-/*SECCFG*/
-#define        _NOSKMC                                         BIT(5)
-#define        _SKBYA2                                         BIT(4)
-#define        _RXDEC                                          BIT(3)
-#define        _TXENC                                          BIT(2)
-#define        _RXUSEDK                                        BIT(1)
-#define        _TXUSEDK                                        BIT(0)
-
-#endif /*__RTL8712_SECURITY_BITDEF_H__*/
-
diff --git a/drivers/staging/rtl8712/rtl8712_spec.h b/drivers/staging/rtl8712/rtl8712_spec.h
deleted file mode 100644 (file)
index 613a410..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL8712_SPEC_H__
-#define __RTL8712_SPEC_H__
-
-#define RTL8712_IOBASE_TXPKT           0x10200000      /*IOBASE_TXPKT*/
-#define RTL8712_IOBASE_RXPKT           0x10210000      /*IOBASE_RXPKT*/
-#define RTL8712_IOBASE_RXCMD           0x10220000      /*IOBASE_RXCMD*/
-#define RTL8712_IOBASE_TXSTATUS                0x10230000      /*IOBASE_TXSTATUS*/
-#define RTL8712_IOBASE_RXSTATUS                0x10240000      /*IOBASE_RXSTATUS*/
-#define RTL8712_IOBASE_IOREG           0x10250000      /*IOBASE_IOREG ADDR*/
-#define RTL8712_IOBASE_SCHEDULER       0x10260000      /*IOBASE_SCHEDULE*/
-
-#define RTL8712_IOBASE_TRXDMA          0x10270000      /*IOBASE_TRXDMA*/
-#define RTL8712_IOBASE_TXLLT           0x10280000      /*IOBASE_TXLLT*/
-#define RTL8712_IOBASE_WMAC            0x10290000      /*IOBASE_WMAC*/
-#define RTL8712_IOBASE_FW2HW           0x102A0000      /*IOBASE_FW2HW*/
-#define RTL8712_IOBASE_ACCESS_PHYREG   0x102B0000      /*IOBASE_ACCESS_PHYREG*/
-
-#define RTL8712_IOBASE_FF      0x10300000 /*IOBASE_FIFO 0x1031000~0x103AFFFF*/
-
-/*IOREG Offset for 8712*/
-#define RTL8712_SYSCFG_                RTL8712_IOBASE_IOREG
-#define RTL8712_CMDCTRL_       (RTL8712_IOBASE_IOREG + 0x40)
-#define RTL8712_MACIDSETTING_  (RTL8712_IOBASE_IOREG + 0x50)
-#define RTL8712_TIMECTRL_      (RTL8712_IOBASE_IOREG + 0x80)
-#define RTL8712_FIFOCTRL_      (RTL8712_IOBASE_IOREG + 0xA0)
-#define RTL8712_RATECTRL_      (RTL8712_IOBASE_IOREG + 0x160)
-#define RTL8712_EDCASETTING_   (RTL8712_IOBASE_IOREG + 0x1D0)
-#define RTL8712_WMAC_          (RTL8712_IOBASE_IOREG + 0x200)
-#define RTL8712_SECURITY_      (RTL8712_IOBASE_IOREG + 0x240)
-#define RTL8712_POWERSAVE_     (RTL8712_IOBASE_IOREG + 0x260)
-#define RTL8712_GP_            (RTL8712_IOBASE_IOREG + 0x2E0)
-#define RTL8712_INTERRUPT_     (RTL8712_IOBASE_IOREG + 0x300)
-#define RTL8712_DEBUGCTRL_     (RTL8712_IOBASE_IOREG + 0x310)
-#define RTL8712_OFFLOAD_       (RTL8712_IOBASE_IOREG + 0x2D0)
-
-/*FIFO for 8712*/
-#define RTL8712_DMA_BCNQ       (RTL8712_IOBASE_FF + 0x10000)
-#define RTL8712_DMA_MGTQ       (RTL8712_IOBASE_FF + 0x20000)
-#define RTL8712_DMA_BMCQ       (RTL8712_IOBASE_FF + 0x30000)
-#define RTL8712_DMA_VOQ                (RTL8712_IOBASE_FF + 0x40000)
-#define RTL8712_DMA_VIQ                (RTL8712_IOBASE_FF + 0x50000)
-#define RTL8712_DMA_BEQ                (RTL8712_IOBASE_FF + 0x60000)
-#define RTL8712_DMA_BKQ                (RTL8712_IOBASE_FF + 0x70000)
-#define RTL8712_DMA_RX0FF      (RTL8712_IOBASE_FF + 0x80000)
-#define RTL8712_DMA_H2CCMD     (RTL8712_IOBASE_FF + 0x90000)
-#define RTL8712_DMA_C2HCMD     (RTL8712_IOBASE_FF + 0xA0000)
-
-/*------------------------------*/
-
-/*BIT 16 15*/
-#define        DID_SDIO_LOCAL                  0       /* 0 0*/
-#define        DID_WLAN_IOREG                  1       /* 0 1*/
-#define        DID_WLAN_FIFO                   3       /* 1 1*/
-#define   DID_UNDEFINE                         (-1)
-
-#define CMD_ADDR_MAPPING_SHIFT         2       /*SDIO CMD ADDR MAPPING,
-                                                *shift 2 bit for match
-                                                * offset[14:2]
-                                                */
-
-/*Offset for SDIO LOCAL*/
-#define        OFFSET_SDIO_LOCAL                               0x0FFF
-
-/*Offset for WLAN IOREG*/
-#define OFFSET_WLAN_IOREG                              0x0FFF
-
-/*Offset for WLAN FIFO*/
-#define        OFFSET_TX_BCNQ                          0x0300
-#define        OFFSET_TX_HIQ                                   0x0310
-#define        OFFSET_TX_CMDQ                          0x0320
-#define        OFFSET_TX_MGTQ                          0x0330
-#define        OFFSET_TX_HCCAQ                         0x0340
-#define        OFFSET_TX_VOQ                                   0x0350
-#define        OFFSET_TX_VIQ                                   0x0360
-#define        OFFSET_TX_BEQ                                   0x0370
-#define        OFFSET_TX_BKQ                                   0x0380
-#define        OFFSET_RX_RX0FFQ                                0x0390
-#define        OFFSET_RX_C2HFFQ                                0x03A0
-
-#define        BK_QID_01       1
-#define        BK_QID_02       2
-#define        BE_QID_01       0
-#define        BE_QID_02       3
-#define        VI_QID_01       4
-#define        VI_QID_02       5
-#define        VO_QID_01       6
-#define        VO_QID_02       7
-#define        HCCA_QID_01     8
-#define        HCCA_QID_02     9
-#define        HCCA_QID_03     10
-#define        HCCA_QID_04     11
-#define        HCCA_QID_05     12
-#define        HCCA_QID_06     13
-#define        HCCA_QID_07     14
-#define        HCCA_QID_08     15
-#define        HI_QID          17
-#define        CMD_QID 19
-#define        MGT_QID 18
-#define        BCN_QID 16
-
-#include "rtl8712_regdef.h"
-
-#include "rtl8712_bitdef.h"
-
-#include "basic_types.h"
-
-#endif /* __RTL8712_SPEC_H__ */
-
diff --git a/drivers/staging/rtl8712/rtl8712_syscfg_bitdef.h b/drivers/staging/rtl8712/rtl8712_syscfg_bitdef.h
deleted file mode 100644 (file)
index d92df3f..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL8712_SYSCFG_BITDEF_H__
-#define __RTL8712_SYSCFG_BITDEF_H__
-
-/*SYS_PWR_CTRL*/
-/*SRCTRL0*/
-/*SRCTRL1*/
-/*SYS_CLKR*/
-
-/*SYS_IOS_CTRL*/
-#define iso_LDR2RP_SHT         8 /* EE Loader to Retention Path*/
-#define iso_LDR2RP             BIT(iso_LDR2RP_SHT) /* 1:isolation, 0:attach*/
-
-/*SYS_CTRL*/
-#define FEN_DIO_SDIO_SHT       0
-#define FEN_DIO_SDIO           BIT(FEN_DIO_SDIO_SHT)
-#define FEN_SDIO_SHT           1
-#define FEN_SDIO               BIT(FEN_SDIO_SHT)
-#define FEN_USBA_SHT           2
-#define FEN_USBA               BIT(FEN_USBA_SHT)
-#define FEN_UPLL_SHT           3
-#define FEN_UPLL               BIT(FEN_UPLL_SHT)
-#define FEN_USBD_SHT           4
-#define FEN_USBD               BIT(FEN_USBD_SHT)
-#define FEN_DIO_PCIE_SHT       5
-#define FEN_DIO_PCIE           BIT(FEN_DIO_PCIE_SHT)
-#define FEN_PCIEA_SHT          6
-#define FEN_PCIEA              BIT(FEN_PCIEA_SHT)
-#define FEN_PPLL_SHT           7
-#define FEN_PPLL               BIT(FEN_PPLL_SHT)
-#define FEN_PCIED_SHT          8
-#define FEN_PCIED              BIT(FEN_PCIED_SHT)
-#define FEN_CPUEN_SHT          10
-#define FEN_CPUEN              BIT(FEN_CPUEN_SHT)
-#define FEN_DCORE_SHT          11
-#define FEN_DCORE              BIT(FEN_DCORE_SHT)
-#define FEN_ELDR_SHT           12
-#define FEN_ELDR               BIT(FEN_ELDR_SHT)
-#define PWC_DV2LDR_SHT         13
-#define PWC_DV2LDR             BIT(PWC_DV2LDR_SHT) /* Loader Power Enable*/
-
-/*=== SYS_CLKR ===*/
-#define SYS_CLKSEL_SHT         0
-#define SYS_CLKSEL             BIT(SYS_CLKSEL_SHT) /* System Clock 80MHz*/
-#define PS_CLKSEL_SHT          1
-#define PS_CLKSEL              BIT(PS_CLKSEL_SHT) /*System power save
-                                                   * clock select.
-                                                   */
-#define CPU_CLKSEL_SHT         2
-#define CPU_CLKSEL             BIT(CPU_CLKSEL_SHT) /* System Clock select,
-                                                    * 1: AFE source,
-                                                    * 0: System clock(L-Bus)
-                                                    */
-#define INT32K_EN_SHT          3
-#define INT32K_EN              BIT(INT32K_EN_SHT)
-#define MACSLP_SHT             4
-#define MACSLP                 BIT(MACSLP_SHT)
-#define MAC_CLK_EN_SHT         11
-#define MAC_CLK_EN             BIT(MAC_CLK_EN_SHT) /* MAC Clock Enable.*/
-#define SYS_CLK_EN_SHT         12
-#define SYS_CLK_EN             BIT(SYS_CLK_EN_SHT)
-#define RING_CLK_EN_SHT                13
-#define RING_CLK_EN            BIT(RING_CLK_EN_SHT)
-#define SWHW_SEL_SHT           14
-#define SWHW_SEL               BIT(SWHW_SEL_SHT) /* Load done,
-                                                  * control path switch.
-                                                  */
-#define FWHW_SEL_SHT           15
-#define FWHW_SEL               BIT(FWHW_SEL_SHT) /* Sleep exit,
-                                                  * control path switch.
-                                                  */
-
-/*9346CR*/
-#define        _VPDIDX_MSK             0xFF00
-#define        _VPDIDX_SHT             8
-#define        _EEM_MSK                0x00C0
-#define        _EEM_SHT                6
-#define        _EEM0                   BIT(6)
-#define        _EEM1                   BIT(7)
-#define        _EEPROM_EN              BIT(5)
-#define        _9356SEL                BIT(4)
-#define        _EECS                   BIT(3)
-#define        _EESK                   BIT(2)
-#define        _EEDI                   BIT(1)
-#define        _EEDO                   BIT(0)
-
-/*AFE_MISC*/
-#define        AFE_MISC_USB_MBEN_SHT   7
-#define        AFE_MISC_USB_MBEN       BIT(AFE_MISC_USB_MBEN_SHT)
-#define        AFE_MISC_USB_BGEN_SHT   6
-#define        AFE_MISC_USB_BGEN       BIT(AFE_MISC_USB_BGEN_SHT)
-#define        AFE_MISC_LD12_VDAJ_SHT  4
-#define        AFE_MISC_LD12_VDAJ_MSK  0X0030
-#define        AFE_MISC_LD12_VDAJ      BIT(AFE_MISC_LD12_VDAJ_SHT)
-#define        AFE_MISC_I32_EN_SHT     3
-#define        AFE_MISC_I32_EN         BIT(AFE_MISC_I32_EN_SHT)
-#define        AFE_MISC_E32_EN_SHT     2
-#define        AFE_MISC_E32_EN         BIT(AFE_MISC_E32_EN_SHT)
-#define        AFE_MISC_MBEN_SHT       1
-#define        AFE_MISC_MBEN           BIT(AFE_MISC_MBEN_SHT)/* Enable AFE Macro
-                                                      * Block's Mbias.
-                                                      */
-#define        AFE_MISC_BGEN_SHT       0
-#define        AFE_MISC_BGEN           BIT(AFE_MISC_BGEN_SHT)/* Enable AFE Macro
-                                                      * Block's Bandgap.
-                                                      */
-
-/*--------------------------------------------------------------------------*/
-/*       SPS1_CTRL bits                                (Offset 0x18-1E, 56bits)*/
-/*--------------------------------------------------------------------------*/
-#define        SPS1_SWEN               BIT(1)  /* Enable vsps18 SW Macro Block.*/
-#define        SPS1_LDEN               BIT(0)  /* Enable VSPS12 LDO Macro block.*/
-
-/*----------------------------------------------------------------------------*/
-/*       LDOA15_CTRL bits              (Offset 0x20, 8bits)*/
-/*----------------------------------------------------------------------------*/
-#define        LDA15_EN                BIT(0)  /* Enable LDOA15 Macro Block*/
-
-/*----------------------------------------------------------------------------*/
-/*       8192S LDOV12D_CTRL bit                (Offset 0x21, 8bits)*/
-/*----------------------------------------------------------------------------*/
-#define        LDV12_EN                BIT(0)  /* Enable LDOVD12 Macro Block*/
-#define        LDV12_SDBY              BIT(1)  /* LDOVD12 standby mode*/
-
-/*CLK_PS_CTRL*/
-#define        _CLK_GATE_EN            BIT(0)
-
-/* EFUSE_CTRL*/
-#define EF_FLAG                        BIT(31)         /* Access Flag, Write:1;
-                                                *              Read:0
-                                                */
-#define EF_PGPD                        0x70000000      /* E-fuse Program time*/
-#define EF_RDT                 0x0F000000      /* E-fuse read time: in the
-                                                * unit of cycle time
-                                                */
-#define EF_PDN_EN              BIT(19)         /* EFuse Power down enable*/
-#define ALD_EN                 BIT(18)         /* Autoload Enable*/
-#define EF_ADDR                        0x0003FF00      /* Access Address*/
-#define EF_DATA                        0x000000FF      /* Access Data*/
-
-/* EFUSE_TEST*/
-#define LDOE25_EN              BIT(31)         /* Enable LDOE25 Macro Block*/
-
-/* EFUSE_CLK_CTRL*/
-#define EFUSE_CLK_EN           BIT(1)          /* E-Fuse Clock Enable*/
-#define EFUSE_CLK_SEL          BIT(0)          /* E-Fuse Clock Select,
-                                                * 0:500K, 1:40M
-                                                */
-
-#endif /*__RTL8712_SYSCFG_BITDEF_H__*/
-
diff --git a/drivers/staging/rtl8712/rtl8712_syscfg_regdef.h b/drivers/staging/rtl8712/rtl8712_syscfg_regdef.h
deleted file mode 100644 (file)
index da5efcd..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL8712_SYSCFG_REGDEF_H__
-#define __RTL8712_SYSCFG_REGDEF_H__
-
-#define SYS_ISO_CTRL           (RTL8712_SYSCFG_ + 0x0000)
-#define SYS_FUNC_EN            (RTL8712_SYSCFG_ + 0x0002)
-#define PMC_FSM                        (RTL8712_SYSCFG_ + 0x0004)
-#define SYS_CLKR               (RTL8712_SYSCFG_ + 0x0008)
-#define EE_9346CR              (RTL8712_SYSCFG_ + 0x000A)
-#define EE_VPD                 (RTL8712_SYSCFG_ + 0x000C)
-#define AFE_MISC               (RTL8712_SYSCFG_ + 0x0010)
-#define SPS0_CTRL              (RTL8712_SYSCFG_ + 0x0011)
-#define SPS1_CTRL              (RTL8712_SYSCFG_ + 0x0018)
-#define RF_CTRL                        (RTL8712_SYSCFG_ + 0x001F)
-#define LDOA15_CTRL            (RTL8712_SYSCFG_ + 0x0020)
-#define LDOV12D_CTRL           (RTL8712_SYSCFG_ + 0x0021)
-#define LDOHCI12_CTRL          (RTL8712_SYSCFG_ + 0x0022)
-#define LDO_USB_CTRL           (RTL8712_SYSCFG_ + 0x0023)
-#define LPLDO_CTRL             (RTL8712_SYSCFG_ + 0x0024)
-#define AFE_XTAL_CTRL          (RTL8712_SYSCFG_ + 0x0026)
-#define AFE_PLL_CTRL           (RTL8712_SYSCFG_ + 0x0028)
-#define EFUSE_CTRL             (RTL8712_SYSCFG_ + 0x0030)
-#define EFUSE_TEST             (RTL8712_SYSCFG_ + 0x0034)
-#define PWR_DATA               (RTL8712_SYSCFG_ + 0x0038)
-#define DPS_TIMER              (RTL8712_SYSCFG_ + 0x003C)
-#define RCLK_MON               (RTL8712_SYSCFG_ + 0x003E)
-#define EFUSE_CLK_CTRL         (RTL8712_SYSCFG_ + 0x02F8)
-
-#endif /*__RTL8712_SYSCFG_REGDEF_H__*/
-
diff --git a/drivers/staging/rtl8712/rtl8712_timectrl_bitdef.h b/drivers/staging/rtl8712/rtl8712_timectrl_bitdef.h
deleted file mode 100644 (file)
index d7bc9dd..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_TIMECTRL_BITDEF_H__
-#define __RTL8712_TIMECTRL_BITDEF_H__
-
-/*TSFTR*/
-/*SLOT*/
-/*USTIME*/
-
-/*TUBASE*/
-#define        _TUBASE_MSK                     0x07FF
-
-/*SIFS_CCK*/
-#define        _SIFS_CCK_TRX_MSK               0xFF00
-#define        _SIFS_CCK_TRX_SHT               0x8
-#define        _SIFS_CCK_CTX_MSK               0x00FF
-#define        _SIFS_CCK_CTX_SHT               0
-
-/*SIFS_OFDM*/
-#define        _SIFS_OFDM_TRX_MSK              0xFF00
-#define        _SIFS_OFDM_TRX_SHT              0x8
-#define        _SIFS_OFDM_CTX_MSK              0x00FF
-#define        _SIFS_OFDM_CTX_SHT              0
-
-/*PIFS*/
-/*ACKTO*/
-/*EIFS*/
-/*BCNITV*/
-/*ATIMWND*/
-
-/*DRVERLYINT*/
-#define        _ENSWBCN                                BIT(15)
-#define        _DRVERLY_TU_MSK                 0x0FF0
-#define        _DRVERLY_TU_SHT                 4
-#define        _DRVERLY_US_MSK                 0x000F
-#define        _DRVERLY_US_SHT                 0
-
-/*BCNDMATIM*/
-#define        _BCNDMATIM_MSK                  0x03FF
-
-/*BCNERRTH*/
-/*MLT*/
-
-#endif /* __RTL8712_TIMECTRL_BITDEF_H__*/
-
diff --git a/drivers/staging/rtl8712/rtl8712_timectrl_regdef.h b/drivers/staging/rtl8712/rtl8712_timectrl_regdef.h
deleted file mode 100644 (file)
index b51603f..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL8712_TIMECTRL_REGDEF_H__
-#define __RTL8712_TIMECTRL_REGDEF_H__
-
-#define TSFTR                  (RTL8712_TIMECTRL_ + 0x00)
-#define USTIME                 (RTL8712_TIMECTRL_ + 0x08)
-#define SLOT                   (RTL8712_TIMECTRL_ + 0x09)
-#define TUBASE                 (RTL8712_TIMECTRL_ + 0x0A)
-#define SIFS_CCK               (RTL8712_TIMECTRL_ + 0x0C)
-#define SIFS_OFDM              (RTL8712_TIMECTRL_ + 0x0E)
-#define PIFS                   (RTL8712_TIMECTRL_ + 0x10)
-#define ACKTO                  (RTL8712_TIMECTRL_ + 0x11)
-#define EIFS                   (RTL8712_TIMECTRL_ + 0x12)
-#define BCNITV                 (RTL8712_TIMECTRL_ + 0x14)
-#define ATIMWND                        (RTL8712_TIMECTRL_ + 0x16)
-#define DRVERLYINT             (RTL8712_TIMECTRL_ + 0x18)
-#define BCNDMATIM              (RTL8712_TIMECTRL_ + 0x1A)
-#define BCNERRTH               (RTL8712_TIMECTRL_ + 0x1C)
-#define MLT                    (RTL8712_TIMECTRL_ + 0x1D)
-
-#endif /* __RTL8712_TIMECTRL_REGDEF_H__ */
diff --git a/drivers/staging/rtl8712/rtl8712_wmac_bitdef.h b/drivers/staging/rtl8712/rtl8712_wmac_bitdef.h
deleted file mode 100644 (file)
index ea164e4..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL8712_WMAC_BITDEF_H__
-#define __RTL8712_WMAC_BITDEF_H__
-
-/*NAVCTRL*/
-#define        _NAV_UPPER_EN                   BIT(18)
-#define        _NAV_MTO_EN                             BIT(17)
-#define        _NAV_UPPER                              BIT(16)
-#define        _NAV_MTO_MSK                    0xFF00
-#define        _NAV_MTO_SHT                    8
-#define        _RTSRST_MSK                             0x00FF
-#define        _RTSRST_SHT                             0
-
-/*BWOPMODE*/
-#define        _20MHZBW                                BIT(2)
-
-/*BACAMCMD*/
-#define        _BACAM_POLL                             BIT(31)
-#define        _BACAM_RST                              BIT(17)
-#define        _BACAM_RW                               BIT(16)
-#define        _BACAM_ADDR_MSK                 0x0000007F
-#define        _BACAM_ADDR_SHT                 0
-
-/*LBDLY*/
-#define        _LBDLY_MSK                              0x1F
-
-/*FWDLY*/
-#define        _FWDLY_MSK                              0x0F
-
-/*RXERR_RPT*/
-#define        _RXERR_RPT_SEL_MSK              0xF0000000
-#define        _RXERR_RPT_SEL_SHT              28
-#define        _RPT_CNT_MSK                    0x000FFFFF
-#define        _RPT_CNT_SHT                    0
-
-#endif /*__RTL8712_WMAC_BITDEF_H__*/
-
diff --git a/drivers/staging/rtl8712/rtl8712_wmac_regdef.h b/drivers/staging/rtl8712/rtl8712_wmac_regdef.h
deleted file mode 100644 (file)
index dfe3e9f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL8712_WMAC_REGDEF_H__
-#define __RTL8712_WMAC_REGDEF_H__
-
-#define NAVCTRL                                (RTL8712_WMAC_ + 0x00)
-#define BWOPMODE                       (RTL8712_WMAC_ + 0x03)
-#define BACAMCMD                       (RTL8712_WMAC_ + 0x04)
-#define BACAMCONTENT                   (RTL8712_WMAC_ + 0x08)
-#define LBDLY                          (RTL8712_WMAC_ + 0x10)
-#define FWDLY                          (RTL8712_WMAC_ + 0x11)
-#define HWPC_RX_CTRL                   (RTL8712_WMAC_ + 0x18)
-#define MQ                             (RTL8712_WMAC_ + 0x20)
-#define MA                             (RTL8712_WMAC_ + 0x22)
-#define MS                             (RTL8712_WMAC_ + 0x24)
-#define CLM_RESULT                     (RTL8712_WMAC_ + 0x27)
-#define NHM_RPI_CNT                    (RTL8712_WMAC_ + 0x28)
-#define RXERR_RPT                      (RTL8712_WMAC_ + 0x30)
-#define NAV_PROT_LEN                   (RTL8712_WMAC_ + 0x34)
-#define CFEND_TH                       (RTL8712_WMAC_ + 0x36)
-#define AMPDU_MIN_SPACE                        (RTL8712_WMAC_ + 0x37)
-#define        TXOP_STALL_CTRL                 (RTL8712_WMAC_ + 0x38)
-
-#endif /*__RTL8712_WMAC_REGDEF_H__*/
-
diff --git a/drivers/staging/rtl8712/rtl8712_xmit.c b/drivers/staging/rtl8712/rtl8712_xmit.c
deleted file mode 100644 (file)
index 84a22eb..0000000
+++ /dev/null
@@ -1,745 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl8712_xmit.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _RTL8712_XMIT_C_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "wifi.h"
-#include "osdep_intf.h"
-#include "usb_ops.h"
-
-static void dump_xframe(struct _adapter *padapter,
-                       struct xmit_frame *pxmitframe);
-static void update_txdesc(struct xmit_frame *pxmitframe, uint *pmem, int sz);
-
-sint _r8712_init_hw_txqueue(struct hw_txqueue *phw_txqueue, u8 ac_tag)
-{
-       phw_txqueue->ac_tag = ac_tag;
-       switch (ac_tag) {
-       case BE_QUEUE_INX:
-               phw_txqueue->ff_hwaddr = RTL8712_DMA_BEQ;
-               break;
-       case BK_QUEUE_INX:
-               phw_txqueue->ff_hwaddr = RTL8712_DMA_BKQ;
-               break;
-       case VI_QUEUE_INX:
-               phw_txqueue->ff_hwaddr = RTL8712_DMA_VIQ;
-               break;
-       case VO_QUEUE_INX:
-               phw_txqueue->ff_hwaddr = RTL8712_DMA_VOQ;
-               break;
-       case BMC_QUEUE_INX:
-               phw_txqueue->ff_hwaddr = RTL8712_DMA_BEQ;
-               break;
-       }
-       return _SUCCESS;
-}
-
-int r8712_txframes_sta_ac_pending(struct _adapter *padapter,
-                                 struct pkt_attrib *pattrib)
-{
-       struct sta_info *psta;
-       struct tx_servq *ptxservq;
-       int priority = pattrib->priority;
-
-       psta = pattrib->psta;
-       switch (priority) {
-       case 1:
-       case 2:
-               ptxservq = &psta->sta_xmitpriv.bk_q;
-               break;
-       case 4:
-       case 5:
-               ptxservq = &psta->sta_xmitpriv.vi_q;
-               break;
-       case 6:
-       case 7:
-               ptxservq = &psta->sta_xmitpriv.vo_q;
-               break;
-       case 0:
-       case 3:
-       default:
-               ptxservq = &psta->sta_xmitpriv.be_q;
-       break;
-       }
-       return ptxservq->qcnt;
-}
-
-static u32 get_ff_hwaddr(struct xmit_frame *pxmitframe)
-{
-       u32 addr = 0;
-       struct pkt_attrib *pattrib = &pxmitframe->attrib;
-       struct _adapter *padapter = pxmitframe->padapter;
-       struct dvobj_priv *pdvobj = &padapter->dvobjpriv;
-
-       if (pxmitframe->frame_tag == TXAGG_FRAMETAG) {
-               addr = RTL8712_DMA_H2CCMD;
-       } else if (pxmitframe->frame_tag == MGNT_FRAMETAG) {
-               addr = RTL8712_DMA_MGTQ;
-       } else if (pdvobj->nr_endpoint == 6) {
-               switch (pattrib->priority) {
-               case 0:
-               case 3:
-                       addr = RTL8712_DMA_BEQ;
-                       break;
-               case 1:
-               case 2:
-                       addr = RTL8712_DMA_BKQ;
-                       break;
-               case 4:
-               case 5:
-                       addr = RTL8712_DMA_VIQ;
-                       break;
-               case 6:
-               case 7:
-                       addr = RTL8712_DMA_VOQ;
-                       break;
-               case 0x10:
-               case 0x11:
-               case 0x12:
-               case 0x13:
-                       addr = RTL8712_DMA_H2CCMD;
-                       break;
-               default:
-                       addr = RTL8712_DMA_BEQ;
-                       break;
-               }
-       } else if (pdvobj->nr_endpoint == 4) {
-               switch (pattrib->qsel) {
-               case 0:
-               case 3:
-               case 1:
-               case 2:
-                       addr = RTL8712_DMA_BEQ;/*RTL8712_EP_LO;*/
-                       break;
-               case 4:
-               case 5:
-               case 6:
-               case 7:
-                       addr = RTL8712_DMA_VOQ;/*RTL8712_EP_HI;*/
-                       break;
-               case 0x10:
-               case 0x11:
-               case 0x12:
-               case 0x13:
-                       addr = RTL8712_DMA_H2CCMD;
-                       break;
-               default:
-                       addr = RTL8712_DMA_BEQ;/*RTL8712_EP_LO;*/
-                       break;
-               }
-       }
-       return addr;
-}
-
-static struct xmit_frame *dequeue_one_xmitframe(struct xmit_priv *pxmitpriv,
-                                        struct hw_xmit *phwxmit,
-                                        struct tx_servq *ptxservq,
-                                        struct  __queue *pframe_queue)
-{
-       struct list_head *xmitframe_plist, *xmitframe_phead;
-       struct  xmit_frame *pxmitframe = NULL;
-
-       xmitframe_phead = &pframe_queue->queue;
-       xmitframe_plist = xmitframe_phead->next;
-       if (!end_of_queue_search(xmitframe_phead, xmitframe_plist)) {
-               pxmitframe = container_of(xmitframe_plist,
-                                         struct xmit_frame, list);
-               list_del_init(&pxmitframe->list);
-               ptxservq->qcnt--;
-               phwxmit->txcmdcnt++;
-       }
-       return pxmitframe;
-}
-
-static struct xmit_frame *dequeue_xframe_ex(struct xmit_priv *pxmitpriv,
-                                    struct hw_xmit *phwxmit_i, sint entry)
-{
-       unsigned long irqL0;
-       struct list_head *sta_plist, *sta_phead;
-       struct hw_xmit *phwxmit;
-       struct tx_servq *ptxservq = NULL;
-       struct  __queue *pframe_queue = NULL;
-       struct  xmit_frame *pxmitframe = NULL;
-       int i, inx[4];
-       int j, acirp_cnt[4];
-
-       /*entry indx: 0->vo, 1->vi, 2->be, 3->bk.*/
-       inx[0] = 0; acirp_cnt[0] = pxmitpriv->voq_cnt;
-       inx[1] = 1; acirp_cnt[1] = pxmitpriv->viq_cnt;
-       inx[2] = 2; acirp_cnt[2] = pxmitpriv->beq_cnt;
-       inx[3] = 3; acirp_cnt[3] = pxmitpriv->bkq_cnt;
-       for (i = 0; i < 4; i++) {
-               for (j = i + 1; j < 4; j++) {
-                       if (acirp_cnt[j] < acirp_cnt[i]) {
-                               swap(acirp_cnt[i], acirp_cnt[j]);
-                               swap(inx[i], inx[j]);
-                       }
-               }
-       }
-       spin_lock_irqsave(&pxmitpriv->lock, irqL0);
-       for (i = 0; i < entry; i++) {
-               phwxmit = phwxmit_i + inx[i];
-               sta_phead = &phwxmit->sta_queue->queue;
-               sta_plist = sta_phead->next;
-               while (!end_of_queue_search(sta_phead, sta_plist)) {
-                       ptxservq = container_of(sta_plist, struct tx_servq,
-                                               tx_pending);
-                       pframe_queue = &ptxservq->sta_pending;
-                       pxmitframe = dequeue_one_xmitframe(pxmitpriv, phwxmit,
-                                    ptxservq, pframe_queue);
-                       if (pxmitframe) {
-                               phwxmit->accnt--;
-                               goto exit_dequeue_xframe_ex;
-                       }
-                       sta_plist = sta_plist->next;
-                       /*Remove sta node when there are no pending packets.*/
-                       if (list_empty(&pframe_queue->queue)) {
-                               /* must be done after sta_plist->next
-                                * and before break
-                                */
-                               list_del_init(&ptxservq->tx_pending);
-                       }
-               }
-       }
-exit_dequeue_xframe_ex:
-       spin_unlock_irqrestore(&pxmitpriv->lock, irqL0);
-       return pxmitframe;
-}
-
-void r8712_do_queue_select(struct _adapter *padapter,
-                          struct pkt_attrib *pattrib)
-{
-       unsigned int qsel = 0;
-       struct dvobj_priv *pdvobj = &padapter->dvobjpriv;
-
-       if (pdvobj->nr_endpoint == 6) {
-               qsel = (unsigned int)pattrib->priority;
-       } else if (pdvobj->nr_endpoint == 4) {
-               qsel = (unsigned int)pattrib->priority;
-               if (qsel == 0 || qsel == 3)
-                       qsel = 3;
-               else if (qsel == 1 || qsel == 2)
-                       qsel = 1;
-               else if (qsel == 4 || qsel == 5)
-                       qsel = 5;
-               else if (qsel == 6 || qsel == 7)
-                       qsel = 7;
-               else
-                       qsel = 3;
-       }
-       pattrib->qsel = qsel;
-}
-
-#ifdef CONFIG_R8712_TX_AGGR
-void r8712_construct_txaggr_cmd_desc(struct xmit_buf *pxmitbuf)
-{
-       struct tx_desc *ptx_desc = (struct tx_desc *)pxmitbuf->pbuf;
-
-       /* Fill up TxCmd Descriptor according as USB FW Tx Aaggregation info.*/
-       /* dw0 */
-       ptx_desc->txdw0 = cpu_to_le32(CMD_HDR_SZ & 0xffff);
-       ptx_desc->txdw0 |=
-               cpu_to_le32(((TXDESC_SIZE + OFFSET_SZ) << OFFSET_SHT) &
-                           0x00ff0000);
-       ptx_desc->txdw0 |= cpu_to_le32(OWN | FSG | LSG);
-
-       /* dw1 */
-       ptx_desc->txdw1 |= cpu_to_le32((0x13 << QSEL_SHT) & 0x00001f00);
-}
-
-void r8712_construct_txaggr_cmd_hdr(struct xmit_buf *pxmitbuf)
-{
-       struct xmit_frame *pxmitframe = (struct xmit_frame *)
-               pxmitbuf->priv_data;
-       struct _adapter *padapter = pxmitframe->padapter;
-       struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-       struct cmd_hdr *pcmd_hdr = (struct cmd_hdr  *)
-               (pxmitbuf->pbuf + TXDESC_SIZE);
-
-       /* Fill up Cmd Header for USB FW Tx Aggregation.*/
-       /* dw0 */
-       pcmd_hdr->cmd_dw0 = cpu_to_le32((GEN_CMD_CODE(_AMSDU_TO_AMPDU) << 16) |
-                                       (pcmdpriv->cmd_seq << 24));
-       pcmdpriv->cmd_seq++;
-}
-
-void r8712_append_mpdu_unit(struct xmit_buf *pxmitbuf,
-                           struct xmit_frame *pxmitframe)
-{
-       struct _adapter *padapter = pxmitframe->padapter;
-       struct tx_desc *ptx_desc = (struct tx_desc *)pxmitbuf->pbuf;
-       int last_txcmdsz = 0;
-       int padding_sz = 0;
-
-       /* 802.3->802.11 converter */
-       r8712_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe);
-       /* free skb struct */
-       r8712_xmit_complete(padapter, pxmitframe);
-       if (pxmitframe->attrib.ether_type != 0x0806) {
-               if ((pxmitframe->attrib.ether_type != 0x888e) &&
-                       (pxmitframe->attrib.dhcp_pkt != 1)) {
-                       r8712_issue_addbareq_cmd(padapter,
-                                       pxmitframe->attrib.priority);
-               }
-       }
-       pxmitframe->last[0] = 1;
-       update_txdesc(pxmitframe, (uint *)(pxmitframe->buf_addr),
-               pxmitframe->attrib.last_txcmdsz);
-       /*padding zero */
-       last_txcmdsz = pxmitframe->attrib.last_txcmdsz;
-       padding_sz = (8 - (last_txcmdsz % 8));
-       if ((last_txcmdsz % 8) != 0) {
-               int i;
-
-               for (i = 0; i < padding_sz; i++)
-                       *(pxmitframe->buf_addr + TXDESC_SIZE + last_txcmdsz +
-                         i) = 0;
-       }
-       /* Add the new mpdu's length */
-       ptx_desc->txdw0 = cpu_to_le32((ptx_desc->txdw0 & 0xffff0000) |
-               ((ptx_desc->txdw0 & 0x0000ffff) +
-                       ((TXDESC_SIZE + last_txcmdsz + padding_sz) &
-                        0x0000ffff)));
-}
-
-void r8712_xmitframe_aggr_1st(struct xmit_buf *pxmitbuf,
-                             struct xmit_frame *pxmitframe)
-{
-       /* linux complete context doesn't need to protect */
-       pxmitframe->pxmitbuf = pxmitbuf;
-       pxmitbuf->priv_data = pxmitframe;
-       pxmitframe->pxmit_urb[0] = pxmitbuf->pxmit_urb[0];
-       /* buffer addr assoc */
-       pxmitframe->buf_addr = pxmitbuf->pbuf + TXDESC_SIZE + CMD_HDR_SZ;
-       /*RTL8712_DMA_H2CCMD */
-       r8712_construct_txaggr_cmd_desc(pxmitbuf);
-       r8712_construct_txaggr_cmd_hdr(pxmitbuf);
-       r8712_append_mpdu_unit(pxmitbuf, pxmitframe);
-       pxmitbuf->aggr_nr = 1;
-}
-
-u16 r8712_xmitframe_aggr_next(struct xmit_buf *pxmitbuf,
-                       struct xmit_frame *pxmitframe)
-{
-       pxmitframe->pxmitbuf = pxmitbuf;
-       pxmitbuf->priv_data = pxmitframe;
-       pxmitframe->pxmit_urb[0] = pxmitbuf->pxmit_urb[0];
-       /* buffer addr assoc */
-       pxmitframe->buf_addr = pxmitbuf->pbuf + TXDESC_SIZE +
-               (((struct tx_desc *)pxmitbuf->pbuf)->txdw0 & 0x0000ffff);
-       r8712_append_mpdu_unit(pxmitbuf, pxmitframe);
-       r8712_free_xmitframe_ex(&pxmitframe->padapter->xmitpriv,
-                               pxmitframe);
-       pxmitbuf->aggr_nr++;
-
-       return TXDESC_SIZE +
-               (((struct tx_desc *)pxmitbuf->pbuf)->txdw0 & 0x0000ffff);
-}
-
-void r8712_dump_aggr_xframe(struct xmit_buf *pxmitbuf,
-                           struct xmit_frame *pxmitframe)
-{
-       struct _adapter *padapter = pxmitframe->padapter;
-       struct dvobj_priv *pdvobj = &padapter->dvobjpriv;
-       struct tx_desc *ptxdesc = pxmitbuf->pbuf;
-       struct cmd_hdr *pcmd_hdr = (struct cmd_hdr *)
-               (pxmitbuf->pbuf + TXDESC_SIZE);
-       u16 total_length = (u16)(ptxdesc->txdw0 & 0xffff);
-
-       /* use 1st xmitframe as media */
-       xmitframe_xmitbuf_attach(pxmitframe, pxmitbuf);
-       pcmd_hdr->cmd_dw0 = cpu_to_le32(((total_length - CMD_HDR_SZ) &
-                                        0x0000ffff) | (pcmd_hdr->cmd_dw0 &
-                                                       0xffff0000));
-
-       /* urb length in cmd_dw1 */
-       pcmd_hdr->cmd_dw1 = cpu_to_le32((pxmitbuf->aggr_nr & 0xff) |
-                                       ((total_length + TXDESC_SIZE) << 16));
-       pxmitframe->last[0] = 1;
-       pxmitframe->bpending[0] = false;
-       pxmitframe->mem_addr = pxmitbuf->pbuf;
-
-       if ((pdvobj->ishighspeed && ((total_length + TXDESC_SIZE) % 0x200) ==
-            0) || ((!pdvobj->ishighspeed && ((total_length + TXDESC_SIZE) %
-                                             0x40) == 0))) {
-               ptxdesc->txdw0 |= cpu_to_le32
-                       (((TXDESC_SIZE + OFFSET_SZ + 8) << OFFSET_SHT) &
-                        0x00ff0000);
-               /*32 bytes for TX Desc + 8 bytes pending*/
-       } else {
-               ptxdesc->txdw0 |= cpu_to_le32
-                       (((TXDESC_SIZE + OFFSET_SZ) << OFFSET_SHT) &
-                        0x00ff0000);
-               /*default = 32 bytes for TX Desc*/
-       }
-       r8712_write_port(pxmitframe->padapter, RTL8712_DMA_H2CCMD,
-                       total_length + TXDESC_SIZE, (u8 *)pxmitframe);
-}
-
-#endif
-
-static void update_txdesc(struct xmit_frame *pxmitframe, uint *pmem, int sz)
-{
-       uint qsel;
-       struct _adapter *padapter = pxmitframe->padapter;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct qos_priv *pqospriv = &pmlmepriv->qospriv;
-       struct security_priv *psecuritypriv = &padapter->securitypriv;
-       struct pkt_attrib *pattrib = &pxmitframe->attrib;
-       struct tx_desc *ptxdesc = (struct tx_desc *)pmem;
-       struct dvobj_priv *pdvobj = &padapter->dvobjpriv;
-#ifdef CONFIG_R8712_TX_AGGR
-       struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-#endif
-       u8 blnSetTxDescOffset;
-       bool bmcst = is_multicast_ether_addr(pattrib->ra);
-       struct ht_priv *phtpriv = &pmlmepriv->htpriv;
-       struct tx_desc txdesc_mp;
-
-       memcpy(&txdesc_mp, ptxdesc, sizeof(struct tx_desc));
-       memset(ptxdesc, 0, sizeof(struct tx_desc));
-       /* offset 0 */
-       ptxdesc->txdw0 |= cpu_to_le32(sz & 0x0000ffff);
-       if (pdvobj->ishighspeed) {
-               if (((sz + TXDESC_SIZE) % 512) == 0)
-                       blnSetTxDescOffset = 1;
-               else
-                       blnSetTxDescOffset = 0;
-       } else {
-               if (((sz + TXDESC_SIZE) % 64) == 0)
-                       blnSetTxDescOffset = 1;
-               else
-                       blnSetTxDescOffset = 0;
-       }
-       if (blnSetTxDescOffset) {
-               /* 32 bytes for TX Desc + 8 bytes pending */
-               ptxdesc->txdw0 |= cpu_to_le32(((TXDESC_SIZE + OFFSET_SZ + 8) <<
-                             OFFSET_SHT) & 0x00ff0000);
-       } else {
-               /* default = 32 bytes for TX Desc */
-               ptxdesc->txdw0 |= cpu_to_le32(((TXDESC_SIZE + OFFSET_SZ) <<
-                                 OFFSET_SHT) & 0x00ff0000);
-       }
-       ptxdesc->txdw0 |= cpu_to_le32(OWN | FSG | LSG);
-       if (pxmitframe->frame_tag == DATA_FRAMETAG) {
-               /* offset 4 */
-               ptxdesc->txdw1 |= cpu_to_le32((pattrib->mac_id) & 0x1f);
-
-#ifdef CONFIG_R8712_TX_AGGR
-               /* dirty workaround, need to check if it is aggr cmd. */
-               if ((u8 *)pmem != (u8 *)pxmitframe->pxmitbuf->pbuf) {
-                       ptxdesc->txdw0 |= cpu_to_le32
-                               ((0x3 << TYPE_SHT) & TYPE_MSK);
-                       qsel = (uint)(pattrib->qsel & 0x0000001f);
-                       if (qsel == 2)
-                               qsel = 0;
-                       ptxdesc->txdw1 |= cpu_to_le32
-                               ((qsel << QSEL_SHT) & 0x00001f00);
-                       ptxdesc->txdw2 = cpu_to_le32
-                               ((qsel << RTS_RC_SHT) & 0x001f0000);
-                       ptxdesc->txdw6 |= cpu_to_le32
-                               ((0x5 << RSVD6_SHT) & RSVD6_MSK);
-               } else {
-                       ptxdesc->txdw0 |= cpu_to_le32
-                               ((0x3 << TYPE_SHT) & TYPE_MSK);
-                       ptxdesc->txdw1 |= cpu_to_le32
-                               ((0x13 << QSEL_SHT) & 0x00001f00);
-                       qsel = (uint)(pattrib->qsel & 0x0000001f);
-                       if (qsel == 2)
-                               qsel = 0;
-                       ptxdesc->txdw2 = cpu_to_le32
-                               ((qsel << RTS_RC_SHT) & 0x0001f000);
-                       ptxdesc->txdw7 |= cpu_to_le32
-                               (pcmdpriv->cmd_seq << 24);
-                       pcmdpriv->cmd_seq++;
-               }
-               pattrib->qsel = 0x13;
-#else
-               qsel = (uint)(pattrib->qsel & 0x0000001f);
-               ptxdesc->txdw1 |= cpu_to_le32((qsel << QSEL_SHT) & 0x00001f00);
-#endif
-               if (!pqospriv->qos_option)
-                       ptxdesc->txdw1 |= cpu_to_le32(BIT(16));/*Non-QoS*/
-               if ((pattrib->encrypt > 0) && !pattrib->bswenc) {
-                       switch (pattrib->encrypt) {     /*SEC_TYPE*/
-                       case _WEP40_:
-                       case _WEP104_:
-                               ptxdesc->txdw1 |= cpu_to_le32((0x01 << 22) &
-                                                 0x00c00000);
-                               /*KEY_ID when WEP is used;*/
-                               ptxdesc->txdw1 |=
-                                       cpu_to_le32((psecuritypriv->PrivacyKeyIndex << 17) &
-                                                   0x00060000);
-                               break;
-                       case _TKIP_:
-                       case _TKIP_WTMIC_:
-                               ptxdesc->txdw1 |= cpu_to_le32((0x02 << 22) &
-                                                 0x00c00000);
-                               break;
-                       case _AES_:
-                               ptxdesc->txdw1 |= cpu_to_le32((0x03 << 22) &
-                                                 0x00c00000);
-                               break;
-                       case _NO_PRIVACY_:
-                       default:
-                               break;
-                       }
-               }
-               /*offset 8*/
-               if (bmcst)
-                       ptxdesc->txdw2 |= cpu_to_le32(BMC);
-
-               /*offset 12*/
-               /* f/w will increase the seqnum by itself, driver pass the
-                * correct priority to fw.
-                * fw will check the correct priority for increasing the
-                * seqnum per tid. about usb using 4-endpoint, qsel points out
-                * the correct mapping between AC&Endpoint,
-                * the purpose is that correct mapping lets the MAC release
-                * the AC Queue list correctly.
-                */
-               ptxdesc->txdw3 = cpu_to_le32((pattrib->priority << SEQ_SHT) &
-                                0x0fff0000);
-               if ((pattrib->ether_type != 0x888e) &&
-                   (pattrib->ether_type != 0x0806) &&
-                   (pattrib->dhcp_pkt != 1)) {
-                       /*Not EAP & ARP type data packet*/
-                       if (phtpriv->ht_option == 1) { /*B/G/N Mode*/
-                               if (!phtpriv->ampdu_enable)
-                                       ptxdesc->txdw2 |= cpu_to_le32(BK);
-                       }
-               } 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.
-                        */
-                       /*driver uses data rate*/
-                       ptxdesc->txdw4 = cpu_to_le32(0x80000000);
-                       ptxdesc->txdw5 = cpu_to_le32(0x001f8000);/*1M*/
-               }
-               if (pattrib->pctrl == 1) { /* mp tx packets */
-                       struct tx_desc *ptxdesc_mp;
-
-                       ptxdesc_mp = &txdesc_mp;
-                       /* offset 8 */
-                       ptxdesc->txdw2 = ptxdesc_mp->txdw2;
-                       if (bmcst)
-                               ptxdesc->txdw2 |= cpu_to_le32(BMC);
-                       ptxdesc->txdw2 |= cpu_to_le32(BK);
-                       /* offset 16 */
-                       ptxdesc->txdw4 = ptxdesc_mp->txdw4;
-                       /* offset 20 */
-                       ptxdesc->txdw5 = ptxdesc_mp->txdw5;
-                       pattrib->pctrl = 0;/* reset to zero; */
-               }
-       } else if (pxmitframe->frame_tag == MGNT_FRAMETAG) {
-               /* offset 4 */
-               /* CAM_ID(MAC_ID), default=5; */
-               ptxdesc->txdw1 |= cpu_to_le32((0x05) & 0x1f);
-               qsel = (uint)(pattrib->qsel & 0x0000001f);
-               ptxdesc->txdw1 |= cpu_to_le32((qsel << QSEL_SHT) & 0x00001f00);
-               ptxdesc->txdw1 |= cpu_to_le32(BIT(16));/* Non-QoS */
-               /* offset 8 */
-               if (bmcst)
-                       ptxdesc->txdw2 |= cpu_to_le32(BMC);
-               /* offset 12 */
-               /* f/w will increase the seqnum by itself, driver pass the
-                * correct priority to fw.
-                * fw will check the correct priority for increasing the seqnum
-                * per tid. about usb using 4-endpoint, qsel points out the
-                * correct mapping between AC&Endpoint,
-                * the purpose is that correct mapping let the MAC releases
-                * the AC Queue list correctly.
-                */
-               ptxdesc->txdw3 = cpu_to_le32((pattrib->priority << SEQ_SHT) &
-                                             0x0fff0000);
-               /* offset 16 */
-               ptxdesc->txdw4 = cpu_to_le32(0x80002040);/*gtest*/
-               /* offset 20 */
-               ptxdesc->txdw5 = cpu_to_le32(0x001f8000);/* gtest 1M */
-       } else if (pxmitframe->frame_tag == TXAGG_FRAMETAG) {
-               /* offset 4 */
-               qsel = 0x13;
-               ptxdesc->txdw1 |= cpu_to_le32((qsel << QSEL_SHT) & 0x00001f00);
-       } else {
-               /* offset 4 */
-               qsel = (uint)(pattrib->priority & 0x0000001f);
-               ptxdesc->txdw1 |= cpu_to_le32((qsel << QSEL_SHT) & 0x00001f00);
-               /*offset 8*/
-               /*offset 12*/
-               ptxdesc->txdw3 = cpu_to_le32((pattrib->seqnum << SEQ_SHT) &
-                                             0x0fff0000);
-               /*offset 16*/
-               ptxdesc->txdw4 = cpu_to_le32(0x80002040);/*gtest*/
-               /*offset 20*/
-               ptxdesc->txdw5 = cpu_to_le32(0x001f9600);/*gtest*/
-       }
-}
-
-int r8712_xmitframe_complete(struct _adapter *padapter,
-                            struct xmit_priv *pxmitpriv,
-                            struct xmit_buf *pxmitbuf)
-{
-       struct hw_xmit *phwxmits;
-       sint hwentry;
-       struct xmit_frame *pxmitframe = NULL;
-#ifdef CONFIG_R8712_TX_AGGR
-       struct xmit_frame *p2ndxmitframe = NULL;
-#else
-       int res = _SUCCESS, xcnt = 0;
-#endif
-
-       phwxmits = pxmitpriv->hwxmits;
-       hwentry = pxmitpriv->hwxmit_entry;
-       if (!pxmitbuf) {
-               pxmitbuf = r8712_alloc_xmitbuf(pxmitpriv);
-               if (!pxmitbuf)
-                       return false;
-#ifdef CONFIG_R8712_TX_AGGR
-               pxmitbuf->aggr_nr = 0;
-#endif
-       }
-       /* 1st frame dequeued */
-       pxmitframe = dequeue_xframe_ex(pxmitpriv, phwxmits, hwentry);
-       /* need to remember the 1st frame */
-       if (pxmitframe) {
-
-#ifdef CONFIG_R8712_TX_AGGR
-               /* 1. dequeue 2nd frame
-                * 2. aggr if 2nd xframe is dequeued, else dump directly
-                */
-               if (AGGR_NR_HIGH_BOUND > 1)
-                       p2ndxmitframe = dequeue_xframe_ex(pxmitpriv, phwxmits,
-                                                       hwentry);
-               if (pxmitframe->frame_tag != DATA_FRAMETAG) {
-                       r8712_free_xmitbuf(pxmitpriv, pxmitbuf);
-                       return false;
-               }
-               if (p2ndxmitframe)
-                       if (p2ndxmitframe->frame_tag != DATA_FRAMETAG) {
-                               r8712_free_xmitbuf(pxmitpriv, pxmitbuf);
-                               return false;
-                       }
-               r8712_xmitframe_aggr_1st(pxmitbuf, pxmitframe);
-               if (p2ndxmitframe) {
-                       u16 total_length;
-
-                       total_length = r8712_xmitframe_aggr_next(
-                               pxmitbuf, p2ndxmitframe);
-                       do {
-                               p2ndxmitframe = dequeue_xframe_ex(
-                                       pxmitpriv, phwxmits, hwentry);
-                               if (p2ndxmitframe)
-                                       total_length =
-                                               r8712_xmitframe_aggr_next(
-                                                       pxmitbuf,
-                                                       p2ndxmitframe);
-                               else
-                                       break;
-                       } while (total_length <= 0x1800 &&
-                               pxmitbuf->aggr_nr <= AGGR_NR_HIGH_BOUND);
-               }
-               if (pxmitbuf->aggr_nr > 0)
-                       r8712_dump_aggr_xframe(pxmitbuf, pxmitframe);
-
-#else
-
-               xmitframe_xmitbuf_attach(pxmitframe, pxmitbuf);
-               if (pxmitframe->frame_tag == DATA_FRAMETAG) {
-                       if (pxmitframe->attrib.priority <= 15)
-                               res = r8712_xmitframe_coalesce(padapter,
-                                       pxmitframe->pkt, pxmitframe);
-                       /* always return ndis_packet after
-                        * r8712_xmitframe_coalesce
-                        */
-                       r8712_xmit_complete(padapter, pxmitframe);
-               }
-               if (res == _SUCCESS)
-                       dump_xframe(padapter, pxmitframe);
-               else
-                       r8712_free_xmitframe_ex(pxmitpriv, pxmitframe);
-               xcnt++;
-#endif
-
-       } else { /* pxmitframe == NULL && p2ndxmitframe == NULL */
-               r8712_free_xmitbuf(pxmitpriv, pxmitbuf);
-               return false;
-       }
-       return true;
-}
-
-static void dump_xframe(struct _adapter *padapter,
-                       struct xmit_frame *pxmitframe)
-{
-       int t, sz, w_sz;
-       u8 *mem_addr;
-       u32 ff_hwaddr;
-       struct pkt_attrib *pattrib = &pxmitframe->attrib;
-       struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-       struct security_priv *psecuritypriv = &padapter->securitypriv;
-
-       if (pxmitframe->attrib.ether_type != 0x0806) {
-               if (pxmitframe->attrib.ether_type != 0x888e)
-                       r8712_issue_addbareq_cmd(padapter, pattrib->priority);
-       }
-       mem_addr = pxmitframe->buf_addr;
-       for (t = 0; t < pattrib->nr_frags; t++) {
-               if (t != (pattrib->nr_frags - 1)) {
-                       sz = pxmitpriv->frag_len;
-                       sz = sz - 4 - (psecuritypriv->sw_encrypt ? 0 :
-                            pattrib->icv_len);
-                       pxmitframe->last[t] = 0;
-               } else {
-                       sz = pattrib->last_txcmdsz;
-                       pxmitframe->last[t] = 1;
-               }
-               update_txdesc(pxmitframe, (uint *)mem_addr, sz);
-               w_sz = sz + TXDESC_SIZE;
-               pxmitframe->mem_addr = mem_addr;
-               pxmitframe->bpending[t] = false;
-               ff_hwaddr = get_ff_hwaddr(pxmitframe);
-#ifdef CONFIG_R8712_TX_AGGR
-               r8712_write_port(padapter, RTL8712_DMA_H2CCMD, w_sz,
-                               (unsigned char *)pxmitframe);
-#else
-               r8712_write_port(padapter, ff_hwaddr, w_sz,
-                          (unsigned char *)pxmitframe);
-#endif
-               mem_addr += w_sz;
-               mem_addr = (u8 *)RND4(((addr_t)(mem_addr)));
-       }
-}
-
-void r8712_xmit_direct(struct _adapter *padapter, struct xmit_frame *pxmitframe)
-{
-       int res;
-
-       res = r8712_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe);
-       pxmitframe->pkt = NULL;
-       if (res == _SUCCESS)
-               dump_xframe(padapter, pxmitframe);
-}
-
-int r8712_xmit_enqueue(struct _adapter *padapter, struct xmit_frame *pxmitframe)
-{
-       if (r8712_xmit_classifier(padapter, pxmitframe)) {
-               pxmitframe->pkt = NULL;
-               return _FAIL;
-       }
-       return _SUCCESS;
-}
diff --git a/drivers/staging/rtl8712/rtl8712_xmit.h b/drivers/staging/rtl8712/rtl8712_xmit.h
deleted file mode 100644 (file)
index 5cd651a..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef _RTL8712_XMIT_H_
-#define _RTL8712_XMIT_H_
-
-#define HWXMIT_ENTRY   4
-
-#define VO_QUEUE_INX   0
-#define VI_QUEUE_INX   1
-#define BE_QUEUE_INX   2
-#define BK_QUEUE_INX   3
-#define TS_QUEUE_INX   4
-#define MGT_QUEUE_INX  5
-#define BMC_QUEUE_INX  6
-#define BCN_QUEUE_INX  7
-
-#define HW_QUEUE_ENTRY 8
-
-#define TXDESC_SIZE 32
-#define TXDESC_OFFSET TXDESC_SIZE
-
-#define NR_AMSDU_XMITFRAME 8
-#define NR_TXAGG_XMITFRAME 8
-
-#define MAX_AMSDU_XMITBUF_SZ 8704
-#define MAX_TXAGG_XMITBUF_SZ 16384 /*16k*/
-
-#define tx_cmd tx_desc
-
-/*
- *defined for TX DESC Operation
- */
-
-#define MAX_TID (15)
-
-/*OFFSET 0*/
-#define OFFSET_SZ (0)
-#define OFFSET_SHT (16)
-#define OWN    BIT(31)
-#define FSG    BIT(27)
-#define LSG    BIT(26)
-#define TYPE_SHT (24)
-#define TYPE_MSK (0x03000000)
-
-/*OFFSET 4*/
-#define PKT_OFFSET_SZ (0)
-#define QSEL_SHT (8)
-#define HWPC BIT(31)
-
-/*OFFSET 8*/
-#define BMC BIT(7)
-#define BK BIT(30)
-#define AGG_EN BIT(29)
-#define RTS_RC_SHT (16)
-
-/*OFFSET 12*/
-#define SEQ_SHT (16)
-
-/*OFFSET 16*/
-#define TXBW BIT(18)
-
-/*OFFSET 20*/
-#define DISFB BIT(15)
-#define RSVD6_MSK (0x00E00000)
-#define RSVD6_SHT (21)
-
-struct tx_desc {
-       /*DWORD 0*/
-       __le32 txdw0;
-       __le32 txdw1;
-       __le32 txdw2;
-       __le32 txdw3;
-       __le32 txdw4;
-       __le32 txdw5;
-       __le32 txdw6;
-       __le32 txdw7;
-};
-
-union txdesc {
-       struct tx_desc txdesc;
-       unsigned int value[TXDESC_SIZE >> 2];
-};
-
-int r8712_xmitframe_complete(struct _adapter *padapter,
-                            struct xmit_priv *pxmitpriv,
-                            struct xmit_buf *pxmitbuf);
-void r8712_do_queue_select(struct _adapter *padapter,
-                          struct pkt_attrib *pattrib);
-
-#ifdef CONFIG_R8712_TX_AGGR
-void r8712_xmitframe_aggr_1st(struct xmit_buf *pxmitbuf,
-                             struct xmit_frame *pxmitframe);
-void r8712_dump_aggr_xframe(struct xmit_buf *pxmitbuf,
-                           struct xmit_frame *pxmitframe);
-#endif
-
-#endif
diff --git a/drivers/staging/rtl8712/rtl871x_cmd.c b/drivers/staging/rtl8712/rtl871x_cmd.c
deleted file mode 100644 (file)
index 4be96df..0000000
+++ /dev/null
@@ -1,796 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl871x_cmd.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _RTL871X_CMD_C_
-
-#include <linux/compiler.h>
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/slab.h>
-#include <linux/module.h>
-#include <linux/kref.h>
-#include <linux/netdevice.h>
-#include <linux/skbuff.h>
-#include <linux/usb.h>
-#include <linux/usb/ch9.h>
-#include <linux/circ_buf.h>
-#include <linux/uaccess.h>
-#include <asm/byteorder.h>
-#include <linux/atomic.h>
-#include <linux/semaphore.h>
-#include <linux/rtnetlink.h>
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "recv_osdep.h"
-#include "mlme_osdep.h"
-
-/*
- * Caller and the r8712_cmd_thread can protect cmd_q by spin_lock.
- * No irqsave is necessary.
- */
-
-int r8712_init_cmd_priv(struct cmd_priv *pcmdpriv)
-{
-       init_completion(&pcmdpriv->cmd_queue_comp);
-       init_completion(&pcmdpriv->terminate_cmdthread_comp);
-
-       _init_queue(&(pcmdpriv->cmd_queue));
-
-       /* allocate DMA-able/Non-Page memory for cmd_buf and rsp_buf */
-       pcmdpriv->cmd_seq = 1;
-       pcmdpriv->cmd_allocated_buf = kmalloc(MAX_CMDSZ + CMDBUFF_ALIGN_SZ,
-                                             GFP_ATOMIC);
-       if (!pcmdpriv->cmd_allocated_buf)
-               return -ENOMEM;
-       pcmdpriv->cmd_buf = pcmdpriv->cmd_allocated_buf  +  CMDBUFF_ALIGN_SZ -
-                           ((addr_t)(pcmdpriv->cmd_allocated_buf) &
-                           (CMDBUFF_ALIGN_SZ - 1));
-       pcmdpriv->rsp_allocated_buf = kmalloc(MAX_RSPSZ + 4, GFP_ATOMIC);
-       if (!pcmdpriv->rsp_allocated_buf) {
-               kfree(pcmdpriv->cmd_allocated_buf);
-               pcmdpriv->cmd_allocated_buf = NULL;
-               return -ENOMEM;
-       }
-       pcmdpriv->rsp_buf = pcmdpriv->rsp_allocated_buf  +  4 -
-                           ((addr_t)(pcmdpriv->rsp_allocated_buf) & 3);
-       pcmdpriv->cmd_issued_cnt = 0;
-       pcmdpriv->cmd_done_cnt = 0;
-       pcmdpriv->rsp_cnt = 0;
-       return 0;
-}
-
-int r8712_init_evt_priv(struct evt_priv *pevtpriv)
-{
-       /* allocate DMA-able/Non-Page memory for cmd_buf and rsp_buf */
-       pevtpriv->event_seq = 0;
-       pevtpriv->evt_allocated_buf = kmalloc(MAX_EVTSZ + 4, GFP_ATOMIC);
-
-       if (!pevtpriv->evt_allocated_buf)
-               return -ENOMEM;
-       pevtpriv->evt_buf = pevtpriv->evt_allocated_buf  +  4 -
-                           ((addr_t)(pevtpriv->evt_allocated_buf) & 3);
-       pevtpriv->evt_done_cnt = 0;
-       return 0;
-}
-
-void r8712_free_evt_priv(struct evt_priv *pevtpriv)
-{
-       kfree(pevtpriv->evt_allocated_buf);
-}
-
-void r8712_free_cmd_priv(struct cmd_priv *pcmdpriv)
-{
-       if (pcmdpriv) {
-               kfree(pcmdpriv->cmd_allocated_buf);
-               kfree(pcmdpriv->rsp_allocated_buf);
-       }
-}
-
-/*
- * Calling Context:
- *
- * r8712_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.
- *
- */
-
-void r8712_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *obj)
-{
-       struct __queue *queue;
-       unsigned long irqL;
-
-       if (pcmdpriv->padapter->eeprompriv.bautoload_fail_flag)
-               return;
-       if (!obj)
-               return;
-       queue = &pcmdpriv->cmd_queue;
-       spin_lock_irqsave(&queue->lock, irqL);
-       list_add_tail(&obj->list, &queue->queue);
-       spin_unlock_irqrestore(&queue->lock, irqL);
-       complete(&pcmdpriv->cmd_queue_comp);
-}
-
-struct cmd_obj *r8712_dequeue_cmd(struct  __queue *queue)
-{
-       unsigned long irqL;
-       struct cmd_obj *obj;
-
-       spin_lock_irqsave(&queue->lock, irqL);
-       obj = list_first_entry_or_null(&queue->queue,
-                                      struct cmd_obj, list);
-       if (obj)
-               list_del_init(&obj->list);
-       spin_unlock_irqrestore(&queue->lock, irqL);
-       return obj;
-}
-
-void r8712_enqueue_cmd_ex(struct cmd_priv *pcmdpriv, struct cmd_obj *obj)
-{
-       unsigned long irqL;
-       struct  __queue *queue;
-
-       if (!obj)
-               return;
-       if (pcmdpriv->padapter->eeprompriv.bautoload_fail_flag)
-               return;
-       queue = &pcmdpriv->cmd_queue;
-       spin_lock_irqsave(&queue->lock, irqL);
-       list_add_tail(&obj->list, &queue->queue);
-       spin_unlock_irqrestore(&queue->lock, irqL);
-       complete(&pcmdpriv->cmd_queue_comp);
-}
-
-void r8712_free_cmd_obj(struct cmd_obj *pcmd)
-{
-       if ((pcmd->cmdcode != _JoinBss_CMD_) &&
-           (pcmd->cmdcode != _CreateBss_CMD_))
-               kfree(pcmd->parmbuf);
-       if (pcmd->rsp) {
-               if (pcmd->rspsz != 0)
-                       kfree(pcmd->rsp);
-       }
-       kfree(pcmd);
-}
-
-u8 r8712_sitesurvey_cmd(struct _adapter *padapter,
-                       struct ndis_802_11_ssid *pssid)
-       __must_hold(&padapter->mlmepriv.lock)
-{
-       struct cmd_obj  *ph2c;
-       struct sitesurvey_parm  *psurveyPara;
-       struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-       ph2c = kmalloc(sizeof(*ph2c), GFP_ATOMIC);
-       if (!ph2c)
-               return _FAIL;
-       psurveyPara = kmalloc(sizeof(*psurveyPara), GFP_ATOMIC);
-       if (!psurveyPara) {
-               kfree(ph2c);
-               return _FAIL;
-       }
-       init_h2fwcmd_w_parm_no_rsp(ph2c, psurveyPara,
-                                  GEN_CMD_CODE(_SiteSurvey));
-       psurveyPara->bsslimit = cpu_to_le32(48);
-       psurveyPara->passive_mode = cpu_to_le32(pmlmepriv->passive_mode);
-       psurveyPara->ss_ssidlen = 0;
-       memset(psurveyPara->ss_ssid, 0, IW_ESSID_MAX_SIZE + 1);
-       if (pssid && pssid->SsidLength) {
-               int len = min_t(int, pssid->SsidLength, IW_ESSID_MAX_SIZE);
-
-               memcpy(psurveyPara->ss_ssid, pssid->Ssid, len);
-               psurveyPara->ss_ssidlen = cpu_to_le32(len);
-       }
-       set_fwstate(pmlmepriv, _FW_UNDER_SURVEY);
-       r8712_enqueue_cmd(pcmdpriv, ph2c);
-       mod_timer(&pmlmepriv->scan_to_timer,
-                 jiffies + msecs_to_jiffies(SCANNING_TIMEOUT));
-       padapter->ledpriv.LedControlHandler(padapter, LED_CTL_SITE_SURVEY);
-       complete(&padapter->rx_filter_ready);
-       return _SUCCESS;
-}
-
-int r8712_setdatarate_cmd(struct _adapter *padapter, u8 *rateset)
-{
-       struct cmd_obj          *ph2c;
-       struct setdatarate_parm *pbsetdataratepara;
-       struct cmd_priv         *pcmdpriv = &padapter->cmdpriv;
-
-       ph2c = kmalloc(sizeof(*ph2c), GFP_ATOMIC);
-       if (!ph2c)
-               return -ENOMEM;
-       pbsetdataratepara = kmalloc(sizeof(*pbsetdataratepara), GFP_ATOMIC);
-       if (!pbsetdataratepara) {
-               kfree(ph2c);
-               return -ENOMEM;
-       }
-       init_h2fwcmd_w_parm_no_rsp(ph2c, pbsetdataratepara,
-                                  GEN_CMD_CODE(_SetDataRate));
-       pbsetdataratepara->mac_id = 5;
-       memcpy(pbsetdataratepara->datarates, rateset, NumRates);
-       r8712_enqueue_cmd(pcmdpriv, ph2c);
-       return 0;
-}
-
-void r8712_set_chplan_cmd(struct _adapter *padapter, int chplan)
-{
-       struct cmd_obj *ph2c;
-       struct SetChannelPlan_param *psetchplanpara;
-       struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-
-       ph2c = kmalloc(sizeof(*ph2c), GFP_ATOMIC);
-       if (!ph2c)
-               return;
-       psetchplanpara = kmalloc(sizeof(*psetchplanpara), GFP_ATOMIC);
-       if (!psetchplanpara) {
-               kfree(ph2c);
-               return;
-       }
-       init_h2fwcmd_w_parm_no_rsp(ph2c, psetchplanpara,
-                               GEN_CMD_CODE(_SetChannelPlan));
-       psetchplanpara->ChannelPlan = chplan;
-       r8712_enqueue_cmd(pcmdpriv, ph2c);
-}
-
-int r8712_setrfreg_cmd(struct _adapter  *padapter, u8 offset, u32 val)
-{
-       struct cmd_obj *ph2c;
-       struct writeRF_parm *pwriterfparm;
-       struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-
-       ph2c = kmalloc(sizeof(*ph2c), GFP_ATOMIC);
-       if (!ph2c)
-               return -ENOMEM;
-       pwriterfparm = kmalloc(sizeof(*pwriterfparm), GFP_ATOMIC);
-       if (!pwriterfparm) {
-               kfree(ph2c);
-               return -ENOMEM;
-       }
-       init_h2fwcmd_w_parm_no_rsp(ph2c, pwriterfparm, GEN_CMD_CODE(_SetRFReg));
-       pwriterfparm->offset = offset;
-       pwriterfparm->value = val;
-       r8712_enqueue_cmd(pcmdpriv, ph2c);
-       return 0;
-}
-
-int r8712_getrfreg_cmd(struct _adapter *padapter, u8 offset, u8 *pval)
-{
-       struct cmd_obj *ph2c;
-       struct readRF_parm *prdrfparm;
-       struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-
-       ph2c = kmalloc(sizeof(*ph2c), GFP_ATOMIC);
-       if (!ph2c)
-               return -ENOMEM;
-       prdrfparm = kmalloc(sizeof(*prdrfparm), GFP_ATOMIC);
-       if (!prdrfparm) {
-               kfree(ph2c);
-               return -ENOMEM;
-       }
-       INIT_LIST_HEAD(&ph2c->list);
-       ph2c->cmdcode = GEN_CMD_CODE(_GetRFReg);
-       ph2c->parmbuf = (unsigned char *)prdrfparm;
-       ph2c->cmdsz =  sizeof(struct readRF_parm);
-       ph2c->rsp = pval;
-       ph2c->rspsz = sizeof(struct readRF_rsp);
-       prdrfparm->offset = offset;
-       r8712_enqueue_cmd(pcmdpriv, ph2c);
-       return 0;
-}
-
-void r8712_getbbrfreg_cmdrsp_callback(struct _adapter *padapter,
-                                     struct cmd_obj *pcmd)
-{
-       kfree(pcmd->parmbuf);
-       kfree(pcmd);
-       padapter->mppriv.workparam.bcompleted = true;
-}
-
-void r8712_readtssi_cmdrsp_callback(struct _adapter *padapter,
-                               struct cmd_obj *pcmd)
-{
-       kfree(pcmd->parmbuf);
-       kfree(pcmd);
-
-       padapter->mppriv.workparam.bcompleted = true;
-}
-
-int r8712_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;
-
-       padapter->ledpriv.LedControlHandler(padapter, LED_CTL_START_TO_LINK);
-       pcmd = kmalloc(sizeof(*pcmd), GFP_ATOMIC);
-       if (!pcmd)
-               return -ENOMEM;
-       INIT_LIST_HEAD(&pcmd->list);
-       pcmd->cmdcode = _CreateBss_CMD_;
-       pcmd->parmbuf = (unsigned char *)pdev_network;
-       pcmd->cmdsz = r8712_get_wlan_bssid_ex_sz(pdev_network);
-       pcmd->rsp = NULL;
-       pcmd->rspsz = 0;
-       /* notes: translate IELength & Length after assign to cmdsz; */
-       pdev_network->Length = pcmd->cmdsz;
-       pdev_network->IELength = pdev_network->IELength;
-       pdev_network->Ssid.SsidLength = pdev_network->Ssid.SsidLength;
-       r8712_enqueue_cmd(pcmdpriv, pcmd);
-       return 0;
-}
-
-int r8712_joinbss_cmd(struct _adapter  *padapter, struct wlan_network *pnetwork)
-{
-       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;
-       enum NDIS_802_11_NETWORK_INFRASTRUCTURE ndis_network_mode =
-               pnetwork->network.InfrastructureMode;
-
-       padapter->ledpriv.LedControlHandler(padapter, LED_CTL_START_TO_LINK);
-       pcmd = kmalloc(sizeof(*pcmd), GFP_ATOMIC);
-       if (!pcmd)
-               return -ENOMEM;
-
-       /* for hidden ap to set fw_state here */
-       if (check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE) !=
-           true) {
-               switch (ndis_network_mode) {
-               case Ndis802_11IBSS:
-                       pmlmepriv->fw_state |= WIFI_ADHOC_STATE;
-                       break;
-               case Ndis802_11Infrastructure:
-                       pmlmepriv->fw_state |= WIFI_STATION_STATE;
-                       break;
-               case Ndis802_11APMode:
-               case Ndis802_11AutoUnknown:
-               case Ndis802_11InfrastructureMax:
-                       break;
-               }
-       }
-       psecnetwork = &psecuritypriv->sec_bss;
-       memcpy(psecnetwork, &pnetwork->network, sizeof(*psecnetwork));
-       psecuritypriv->authenticator_ie[0] = (unsigned char)
-                                            psecnetwork->IELength;
-       if ((psecnetwork->IELength - 12) < (256 - 1))
-               memcpy(&psecuritypriv->authenticator_ie[1],
-                       &psecnetwork->IEs[12], psecnetwork->IELength - 12);
-       else
-               memcpy(&psecuritypriv->authenticator_ie[1],
-                       &psecnetwork->IEs[12], (256 - 1));
-       psecnetwork->IELength = 0;
-       /*
-        * If the driver wants to use the bssid to create the connection.
-        * If not, we 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)
-               ether_addr_copy(&pmlmepriv->assoc_bssid[0],
-                               &pnetwork->network.MacAddress[0]);
-       psecnetwork->IELength = r8712_restruct_sec_ie(padapter,
-                                               &pnetwork->network.IEs[0],
-                                               &psecnetwork->IEs[0],
-                                               pnetwork->network.IELength);
-       pqospriv->qos_option = 0;
-       if (pregistrypriv->wmm_enable) {
-               u32 tmp_len;
-
-               tmp_len = r8712_restruct_wmm_ie(padapter,
-                                         &pnetwork->network.IEs[0],
-                                         &psecnetwork->IEs[0],
-                                         pnetwork->network.IELength,
-                                         psecnetwork->IELength);
-               if (psecnetwork->IELength != tmp_len) {
-                       psecnetwork->IELength = tmp_len;
-                       pqospriv->qos_option = 1; /* WMM IE in beacon */
-               } else {
-                       pqospriv->qos_option = 0; /* no WMM IE in beacon */
-               }
-       }
-       if (pregistrypriv->ht_enable) {
-               /*
-                * For WEP mode, we will use the bg mode to do the connection
-                * to avoid some IOT issues, especially for Realtek 8192u
-                * SoftAP.
-                */
-               if ((padapter->securitypriv.PrivacyAlgrthm != _WEP40_) &&
-                   (padapter->securitypriv.PrivacyAlgrthm != _WEP104_)) {
-                       /* restructure_ht_ie */
-                       r8712_restructure_ht_ie(padapter,
-                                               &pnetwork->network.IEs[0],
-                                               &psecnetwork->IEs[0],
-                                               pnetwork->network.IELength,
-                                               &psecnetwork->IELength);
-               }
-       }
-       psecuritypriv->supplicant_ie[0] = (u8)psecnetwork->IELength;
-       if (psecnetwork->IELength < 255)
-               memcpy(&psecuritypriv->supplicant_ie[1], &psecnetwork->IEs[0],
-                       psecnetwork->IELength);
-       else
-               memcpy(&psecuritypriv->supplicant_ie[1], &psecnetwork->IEs[0],
-                       255);
-       /* get cmdsz before endian conversion */
-       pcmd->cmdsz = r8712_get_wlan_bssid_ex_sz(psecnetwork);
-#ifdef __BIG_ENDIAN
-       /* wlan_network endian conversion */
-       psecnetwork->Length = cpu_to_le32(psecnetwork->Length);
-       psecnetwork->Ssid.SsidLength = cpu_to_le32(
-                                      psecnetwork->Ssid.SsidLength);
-       psecnetwork->Privacy = cpu_to_le32(psecnetwork->Privacy);
-       psecnetwork->Rssi = cpu_to_le32(psecnetwork->Rssi);
-       psecnetwork->NetworkTypeInUse = cpu_to_le32(
-                                       psecnetwork->NetworkTypeInUse);
-       psecnetwork->Configuration.ATIMWindow = cpu_to_le32(
-                               psecnetwork->Configuration.ATIMWindow);
-       psecnetwork->Configuration.BeaconPeriod = cpu_to_le32(
-                                psecnetwork->Configuration.BeaconPeriod);
-       psecnetwork->Configuration.DSConfig = cpu_to_le32(
-                               psecnetwork->Configuration.DSConfig);
-       psecnetwork->Configuration.FHConfig.DwellTime = cpu_to_le32(
-                               psecnetwork->Configuration.FHConfig.DwellTime);
-       psecnetwork->Configuration.FHConfig.HopPattern = cpu_to_le32(
-                               psecnetwork->Configuration.FHConfig.HopPattern);
-       psecnetwork->Configuration.FHConfig.HopSet = cpu_to_le32(
-                               psecnetwork->Configuration.FHConfig.HopSet);
-       psecnetwork->Configuration.FHConfig.Length = cpu_to_le32(
-                               psecnetwork->Configuration.FHConfig.Length);
-       psecnetwork->Configuration.Length = cpu_to_le32(
-                               psecnetwork->Configuration.Length);
-       psecnetwork->InfrastructureMode = cpu_to_le32(
-                               psecnetwork->InfrastructureMode);
-       psecnetwork->IELength = cpu_to_le32(psecnetwork->IELength);
-#endif
-       INIT_LIST_HEAD(&pcmd->list);
-       pcmd->cmdcode = _JoinBss_CMD_;
-       pcmd->parmbuf = (unsigned char *)psecnetwork;
-       pcmd->rsp = NULL;
-       pcmd->rspsz = 0;
-       r8712_enqueue_cmd(pcmdpriv, pcmd);
-       return 0;
-}
-
-void r8712_disassoc_cmd(struct _adapter *padapter) /* for sta_mode */
-{
-       struct cmd_obj *pdisconnect_cmd;
-       struct disconnect_parm *pdisconnect;
-       struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-
-       pdisconnect_cmd = kmalloc(sizeof(*pdisconnect_cmd), GFP_ATOMIC);
-       if (!pdisconnect_cmd)
-               return;
-       pdisconnect = kmalloc(sizeof(*pdisconnect), GFP_ATOMIC);
-       if (!pdisconnect) {
-               kfree(pdisconnect_cmd);
-               return;
-       }
-       init_h2fwcmd_w_parm_no_rsp(pdisconnect_cmd, pdisconnect,
-                                  _DisConnect_CMD_);
-       r8712_enqueue_cmd(pcmdpriv, pdisconnect_cmd);
-}
-
-void r8712_setopmode_cmd(struct _adapter *padapter,
-                enum NDIS_802_11_NETWORK_INFRASTRUCTURE networktype)
-{
-       struct cmd_obj *ph2c;
-       struct setopmode_parm *psetop;
-
-       struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-
-       ph2c = kmalloc(sizeof(*ph2c), GFP_ATOMIC);
-       if (!ph2c)
-               return;
-       psetop = kmalloc(sizeof(*psetop), GFP_ATOMIC);
-       if (!psetop) {
-               kfree(ph2c);
-               return;
-       }
-       init_h2fwcmd_w_parm_no_rsp(ph2c, psetop, _SetOpMode_CMD_);
-       psetop->mode = (u8)networktype;
-       r8712_enqueue_cmd(pcmdpriv, ph2c);
-}
-
-void r8712_setstakey_cmd(struct _adapter *padapter, u8 *psta, u8 unicast_key)
-{
-       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;
-       struct sta_info *sta = (struct sta_info *)psta;
-
-       ph2c = kmalloc(sizeof(*ph2c), GFP_ATOMIC);
-       if (!ph2c)
-               return;
-       psetstakey_para = kmalloc(sizeof(*psetstakey_para), GFP_ATOMIC);
-       if (!psetstakey_para) {
-               kfree(ph2c);
-               return;
-       }
-       psetstakey_rsp = kmalloc(sizeof(*psetstakey_rsp), GFP_ATOMIC);
-       if (!psetstakey_rsp) {
-               kfree(ph2c);
-               kfree(psetstakey_para);
-               return;
-       }
-       init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, _SetStaKey_CMD_);
-       ph2c->rsp = (u8 *)psetstakey_rsp;
-       ph2c->rspsz = sizeof(struct set_stakey_rsp);
-       ether_addr_copy(psetstakey_para->addr, sta->hwaddr);
-       if (check_fwstate(pmlmepriv, WIFI_STATION_STATE))
-               psetstakey_para->algorithm = (unsigned char)
-                                           psecuritypriv->PrivacyAlgrthm;
-       else
-               GET_ENCRY_ALGO(psecuritypriv, sta,
-                              psetstakey_para->algorithm, false);
-       if (unicast_key)
-               memcpy(&psetstakey_para->key, &sta->x_UncstKey, 16);
-       else
-               memcpy(&psetstakey_para->key,
-                       &psecuritypriv->XGrpKey[
-                       psecuritypriv->XGrpKeyid - 1]. skey, 16);
-       r8712_enqueue_cmd(pcmdpriv, ph2c);
-}
-
-void r8712_setMacAddr_cmd(struct _adapter *padapter, const u8 *mac_addr)
-{
-       struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-       struct cmd_obj *ph2c;
-       struct SetMacAddr_param *psetMacAddr_para;
-
-       ph2c = kmalloc(sizeof(*ph2c), GFP_ATOMIC);
-       if (!ph2c)
-               return;
-       psetMacAddr_para = kmalloc(sizeof(*psetMacAddr_para), GFP_ATOMIC);
-       if (!psetMacAddr_para) {
-               kfree(ph2c);
-               return;
-       }
-       init_h2fwcmd_w_parm_no_rsp(ph2c, psetMacAddr_para,
-                                  _SetMacAddress_CMD_);
-       ether_addr_copy(psetMacAddr_para->MacAddr, mac_addr);
-       r8712_enqueue_cmd(pcmdpriv, ph2c);
-}
-
-void r8712_addbareq_cmd(struct _adapter *padapter, u8 tid)
-{
-       struct cmd_priv         *pcmdpriv = &padapter->cmdpriv;
-       struct cmd_obj          *ph2c;
-       struct addBaReq_parm    *paddbareq_parm;
-
-       ph2c = kmalloc(sizeof(*ph2c), GFP_ATOMIC);
-       if (!ph2c)
-               return;
-       paddbareq_parm = kmalloc(sizeof(*paddbareq_parm), GFP_ATOMIC);
-       if (!paddbareq_parm) {
-               kfree(ph2c);
-               return;
-       }
-       paddbareq_parm->tid = tid;
-       init_h2fwcmd_w_parm_no_rsp(ph2c, paddbareq_parm,
-                                  GEN_CMD_CODE(_AddBAReq));
-       r8712_enqueue_cmd_ex(pcmdpriv, ph2c);
-}
-
-void r8712_wdg_wk_cmd(struct _adapter *padapter)
-{
-       struct cmd_obj *ph2c;
-       struct drvint_cmd_parm  *pdrvintcmd_param;
-       struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
-
-       ph2c = kmalloc(sizeof(*ph2c), GFP_ATOMIC);
-       if (!ph2c)
-               return;
-       pdrvintcmd_param = kmalloc(sizeof(*pdrvintcmd_param), GFP_ATOMIC);
-       if (!pdrvintcmd_param) {
-               kfree(ph2c);
-               return;
-       }
-       pdrvintcmd_param->i_cid = WDG_WK_CID;
-       pdrvintcmd_param->sz = 0;
-       pdrvintcmd_param->pbuf = NULL;
-       init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvintcmd_param, _DRV_INT_CMD_);
-       r8712_enqueue_cmd_ex(pcmdpriv, ph2c);
-}
-
-void r8712_survey_cmd_callback(struct _adapter *padapter, struct cmd_obj *pcmd)
-{
-       struct  mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-       if (pcmd->res != H2C_SUCCESS)
-               clr_fwstate(pmlmepriv, _FW_UNDER_SURVEY);
-       r8712_free_cmd_obj(pcmd);
-}
-
-void r8712_disassoc_cmd_callback(struct _adapter *padapter,
-                                struct cmd_obj *pcmd)
-{
-       unsigned long irqL;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-       if (pcmd->res != H2C_SUCCESS) {
-               spin_lock_irqsave(&pmlmepriv->lock, irqL);
-               set_fwstate(pmlmepriv, _FW_LINKED);
-               spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-               return;
-       }
-       r8712_free_cmd_obj(pcmd);
-}
-
-void r8712_joinbss_cmd_callback(struct _adapter *padapter, struct cmd_obj *pcmd)
-{
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-       if (pcmd->res != H2C_SUCCESS)
-               mod_timer(&pmlmepriv->assoc_timer,
-                         jiffies + msecs_to_jiffies(1));
-       r8712_free_cmd_obj(pcmd);
-}
-
-void r8712_createbss_cmd_callback(struct _adapter *padapter,
-                                 struct cmd_obj *pcmd)
-{
-       unsigned long irqL;
-       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->res != H2C_SUCCESS)
-               mod_timer(&pmlmepriv->assoc_timer,
-                         jiffies + msecs_to_jiffies(1));
-       del_timer(&pmlmepriv->assoc_timer);
-#ifdef __BIG_ENDIAN
-       /* endian_convert */
-       pnetwork->Length = le32_to_cpu(pnetwork->Length);
-       pnetwork->Ssid.SsidLength = le32_to_cpu(pnetwork->Ssid.SsidLength);
-       pnetwork->Privacy = le32_to_cpu(pnetwork->Privacy);
-       pnetwork->Rssi = le32_to_cpu(pnetwork->Rssi);
-       pnetwork->NetworkTypeInUse = le32_to_cpu(pnetwork->NetworkTypeInUse);
-       pnetwork->Configuration.ATIMWindow =
-               le32_to_cpu(pnetwork->Configuration.ATIMWindow);
-       pnetwork->Configuration.DSConfig =
-               le32_to_cpu(pnetwork->Configuration.DSConfig);
-       pnetwork->Configuration.FHConfig.DwellTime =
-               le32_to_cpu(pnetwork->Configuration.FHConfig.DwellTime);
-       pnetwork->Configuration.FHConfig.HopPattern =
-               le32_to_cpu(pnetwork->Configuration.FHConfig.HopPattern);
-       pnetwork->Configuration.FHConfig.HopSet =
-               le32_to_cpu(pnetwork->Configuration.FHConfig.HopSet);
-       pnetwork->Configuration.FHConfig.Length =
-               le32_to_cpu(pnetwork->Configuration.FHConfig.Length);
-       pnetwork->Configuration.Length =
-               le32_to_cpu(pnetwork->Configuration.Length);
-       pnetwork->InfrastructureMode =
-               le32_to_cpu(pnetwork->InfrastructureMode);
-       pnetwork->IELength = le32_to_cpu(pnetwork->IELength);
-#endif
-       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-       if ((pmlmepriv->fw_state) & WIFI_AP_STATE) {
-               psta = r8712_get_stainfo(&padapter->stapriv,
-                                        pnetwork->MacAddress);
-               if (!psta) {
-                       psta = r8712_alloc_stainfo(&padapter->stapriv,
-                                                  pnetwork->MacAddress);
-                       if (!psta)
-                               goto createbss_cmd_fail;
-               }
-               r8712_indicate_connect(padapter);
-       } else {
-               pwlan = _r8712_alloc_network(pmlmepriv);
-               if (!pwlan) {
-                       pwlan = r8712_get_oldest_wlan_network(
-                               &pmlmepriv->scanned_queue);
-                       if (!pwlan)
-                               goto createbss_cmd_fail;
-                       pwlan->last_scanned = jiffies;
-               } else {
-                       list_add_tail(&(pwlan->list),
-                                        &pmlmepriv->scanned_queue.queue);
-               }
-               pnetwork->Length = r8712_get_wlan_bssid_ex_sz(pnetwork);
-               memcpy(&(pwlan->network), pnetwork, pnetwork->Length);
-               pwlan->fixed = true;
-               memcpy(&tgt_network->network, pnetwork,
-                       (r8712_get_wlan_bssid_ex_sz(pnetwork)));
-               if (pmlmepriv->fw_state & _FW_UNDER_LINKING)
-                       pmlmepriv->fw_state ^= _FW_UNDER_LINKING;
-               /*
-                * we will set _FW_LINKED when there is one more sat to
-                * join us (stassoc_event_callback)
-                */
-       }
-createbss_cmd_fail:
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-       r8712_free_cmd_obj(pcmd);
-}
-
-void r8712_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 = r8712_get_stainfo(pstapriv,
-                                                 psetstakey_rsp->addr);
-
-       if (!psta)
-               goto exit;
-       psta->aid = psta->mac_id = psetstakey_rsp->keyid; /*CAM_ID(CAM_ENTRY)*/
-exit:
-       r8712_free_cmd_obj(pcmd);
-}
-
-void r8712_setassocsta_cmdrsp_callback(struct _adapter *padapter,
-                                      struct cmd_obj *pcmd)
-{
-       unsigned long   irqL;
-       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 = r8712_get_stainfo(pstapriv,
-                                                 passocsta_parm->addr);
-
-       if (!psta)
-               return;
-       psta->aid = psta->mac_id = passocsta_rsp->cam_id;
-       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-       if ((check_fwstate(pmlmepriv, WIFI_MP_STATE)) &&
-           (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)))
-               pmlmepriv->fw_state ^= _FW_UNDER_LINKING;
-       set_fwstate(pmlmepriv, _FW_LINKED);
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-       r8712_free_cmd_obj(pcmd);
-}
-
-void r8712_disconnectCtrlEx_cmd(struct _adapter *adapter, u32 enableDrvCtrl,
-                       u32 tryPktCnt, u32 tryPktInterval, u32 firstStageTO)
-{
-       struct cmd_obj *ph2c;
-       struct DisconnectCtrlEx_param *param;
-       struct cmd_priv *pcmdpriv = &adapter->cmdpriv;
-
-       ph2c = kmalloc(sizeof(*ph2c), GFP_ATOMIC);
-       if (!ph2c)
-               return;
-       param = kzalloc(sizeof(*param), GFP_ATOMIC);
-       if (!param) {
-               kfree(ph2c);
-               return;
-       }
-
-       param->EnableDrvCtrl = (unsigned char)enableDrvCtrl;
-       param->TryPktCnt = (unsigned char)tryPktCnt;
-       param->TryPktInterval = (unsigned char)tryPktInterval;
-       param->FirstStageTO = (unsigned int)firstStageTO;
-
-       init_h2fwcmd_w_parm_no_rsp(ph2c, param,
-                               GEN_CMD_CODE(_DisconnectCtrlEx));
-       r8712_enqueue_cmd(pcmdpriv, ph2c);
-}
diff --git a/drivers/staging/rtl8712/rtl871x_cmd.h b/drivers/staging/rtl8712/rtl871x_cmd.h
deleted file mode 100644 (file)
index 8453d8d..0000000
+++ /dev/null
@@ -1,761 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL871X_CMD_H_
-#define __RTL871X_CMD_H_
-
-#include "wlan_bssdef.h"
-#include "rtl871x_rf.h"
-#define C2H_MEM_SZ (16*1024)
-
-#include "osdep_service.h"
-#include "ieee80211.h"
-
-#define FREE_CMDOBJ_SZ 128
-#define MAX_CMDSZ      512
-#define MAX_RSPSZ      512
-#define MAX_EVTSZ      1024
-#define CMDBUFF_ALIGN_SZ 512
-
-struct cmd_obj {
-       u16     cmdcode;
-       u8      res;
-       u8      *parmbuf;
-       u32     cmdsz;
-       u8      *rsp;
-       u32     rspsz;
-       struct list_head list;
-};
-
-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*/
-       u8 *rsp_allocated_buf;
-       u32 cmd_issued_cnt;
-       u32 cmd_done_cnt;
-       u32 rsp_cnt;
-       struct _adapter *padapter;
-};
-
-struct evt_obj {
-       u16 evtcode;
-       u8 res;
-       u8 *parmbuf;
-       u32 evtsz;
-       struct list_head list;
-};
-
-struct evt_priv {
-       struct  __queue evt_queue;
-       u8      event_seq;
-       u8      *evt_buf;       /*shall be non-paged, and 4 bytes aligned*/
-       u8      *evt_allocated_buf;
-       u32     evt_done_cnt;
-};
-
-#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)
-
-void r8712_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *obj);
-void r8712_enqueue_cmd_ex(struct cmd_priv *pcmdpriv, struct cmd_obj *obj);
-struct cmd_obj *r8712_dequeue_cmd(struct  __queue *queue);
-void r8712_free_cmd_obj(struct cmd_obj *pcmd);
-int r8712_cmd_thread(void *context);
-int r8712_init_cmd_priv(struct cmd_priv *pcmdpriv);
-void r8712_free_cmd_priv(struct cmd_priv *pcmdpriv);
-int r8712_init_evt_priv(struct evt_priv *pevtpriv);
-void r8712_free_evt_priv(struct evt_priv *pevtpriv);
-
-enum rtl871x_drvint_cid {
-       NONE_WK_CID,
-       WDG_WK_CID,
-       MAX_WK_CID
-};
-
-enum RFINTFS {
-       SWSI,
-       HWSI,
-       HWPI,
-};
-
-/*
- * Caller Mode: Infra, Ad-HoC(C)
- * Notes: To enter USB suspend mode
- * Command Mode
- */
-struct usb_suspend_parm {
-       u32 action; /* 1: sleep, 0:resume */
-};
-
-/*
- * Caller Mode: Infra, Ad-HoC(C)
- * Notes: To disconnect the current associated BSS
- * Command Mode
- */
-struct disconnect_parm {
-       u32 rsvd;
-};
-
-/*
- * 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 AP
- * #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
- */
-struct sitesurvey_parm {
-       __le32  passive_mode;   /*active: 1, passive: 0 */
-       __le32  bsslimit;       /* 1 ~ 48 */
-       __le32  ss_ssidlen;
-       u8      ss_ssid[IW_ESSID_MAX_SIZE + 1];
-};
-
-/*
- * 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      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      key[16];
-};
-
-struct set_stakey_rsp {
-       u8      addr[ETH_ALEN];
-       u8      keyid;
-       u8      rsvd;
-};
-
-struct SetMacAddr_param {
-       u8      MacAddr[ETH_ALEN];
-};
-
-/*
- *     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;
-};
-
-struct getbasicrate_rsp {
-       u8 basicrates[NumRates];
-};
-
-/*
- *     Caller Mode: Any
- *
- *     Notes: To setup the data rate of RTL8711
- *
- *     Command Mode
- *
- */
-struct setdatarate_parm {
-       u8      mac_id;
-       u8      datarates[NumRates];
-};
-
-enum _RT_CHANNEL_DOMAIN {
-       RT_CHANNEL_DOMAIN_FCC = 0,
-       RT_CHANNEL_DOMAIN_IC = 1,
-       RT_CHANNEL_DOMAIN_ETSI = 2,
-       RT_CHANNEL_DOMAIN_SPAIN = 3,
-       RT_CHANNEL_DOMAIN_FRANCE = 4,
-       RT_CHANNEL_DOMAIN_MKK = 5,
-       RT_CHANNEL_DOMAIN_MKK1 = 6,
-       RT_CHANNEL_DOMAIN_ISRAEL = 7,
-       RT_CHANNEL_DOMAIN_TELEC = 8,
-
-       /* Be compatible with old channel plan. No good! */
-       RT_CHANNEL_DOMAIN_MIC = 9,
-       RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN = 10,
-       RT_CHANNEL_DOMAIN_WORLD_WIDE_13 = 11,
-       RT_CHANNEL_DOMAIN_TELEC_NETGEAR = 12,
-
-       RT_CHANNEL_DOMAIN_NCC = 13,
-       RT_CHANNEL_DOMAIN_5G = 14,
-       RT_CHANNEL_DOMAIN_5G_40M = 15,
- /*===== Add new channel plan above this line===============*/
-       RT_CHANNEL_DOMAIN_MAX,
-};
-
-struct SetChannelPlan_param {
-       enum _RT_CHANNEL_DOMAIN ChannelPlan;
-};
-
-/*
- *     Caller Mode: Any
- *
- *     Notes: To read the current data rate
- *
- *     Command-Rsp Mode
- *
- */
-struct getdatarate_parm {
-       u32 rsvd;
-
-};
-
-struct getdatarate_rsp {
-       u8 datarates[NumRates];
-};
-
-/*
- *     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
- *
- */
-
-/*
- *     Caller Mode: Any
- *
- *     Notes: To set the channel/modem/band
- *     This command will be used when channel/modem/band is changed.
- *
- *     Command Mode
- *
- */
-/*
- *     Caller Mode: Any
- *
- *     Notes: To get the current setting of channel/modem/band
- *
- *     Command-Rsp Mode
- *
- */
-struct getphy_rsp {
-       u8      rfchannel;
-       u8      modem;
-};
-
-struct readBB_parm {
-       u8      offset;
-};
-
-struct readBB_rsp {
-       u8      value;
-};
-
-struct readTSSI_parm {
-       u8      offset;
-};
-
-struct readTSSI_rsp {
-       u8      value;
-};
-
-struct writeBB_parm {
-       u8      offset;
-       u8      value;
-};
-
-struct writePTM_parm {
-       u8      type;
-};
-
-struct readRF_parm {
-       u8      offset;
-};
-
-struct readRF_rsp {
-       u32     value;
-};
-
-struct writeRF_parm {
-       u32     offset;
-       u32     value;
-};
-
-struct setrfintfs_parm {
-       u8      rfintfs;
-};
-
-struct getrfintfs_parm {
-       u8      rfintfs;
-};
-
-/*
- *     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 DRV INTERNAL CMD HDL*/
-struct drvint_cmd_parm {
-       int i_cid; /*internal cmd id*/
-       int sz; /* buf sz*/
-       unsigned char *pbuf;
-};
-
-/*------------------- Below are used for RF/BB tuning ---------------------*/
-
-struct setantenna_parm {
-       u8      tx_antset;
-       u8      rx_antset;
-       u8      tx_antenna;
-       u8      rx_antenna;
-};
-
-struct enrateadaptive_parm {
-       u32     en;
-};
-
-struct settxagctbl_parm {
-       u32     txagc[MAX_RATES_LENGTH];
-};
-
-struct gettxagctbl_parm {
-       u32 rsvd;
-};
-
-struct gettxagctbl_rsp {
-       u32     txagc[MAX_RATES_LENGTH];
-};
-
-struct setagcctrl_parm {
-       u32     agcctrl;        /* 0: pure hw, 1: fw */
-};
-
-struct setssup_parm    {
-       u32     ss_ForceUp[MAX_RATES_LENGTH];
-};
-
-struct getssup_parm    {
-       u32 rsvd;
-};
-
-struct getssup_rsp     {
-       u8      ss_ForceUp[MAX_RATES_LENGTH];
-};
-
-struct setssdlevel_parm        {
-       u8      ss_DLevel[MAX_RATES_LENGTH];
-};
-
-struct getssdlevel_parm        {
-       u32 rsvd;
-};
-
-struct getssdlevel_rsp {
-       u8      ss_DLevel[MAX_RATES_LENGTH];
-};
-
-struct setssulevel_parm        {
-       u8      ss_ULevel[MAX_RATES_LENGTH];
-};
-
-struct getssulevel_parm        {
-       u32 rsvd;
-};
-
-struct getssulevel_rsp {
-       u8      ss_ULevel[MAX_RATES_LENGTH];
-};
-
-struct setcountjudge_parm {
-       u8      count_judge[MAX_RATES_LENGTH];
-};
-
-struct getcountjudge_parm {
-       u32 rsvd;
-};
-
-struct getcountjudge_rsp {
-       u8      count_judge[MAX_RATES_LENGTH];
-};
-
-struct setpwrmode_parm  {
-       u8      mode;
-       u8      flag_low_traffic_en;
-       u8      flag_lpnav_en;
-       u8      flag_rf_low_snr_en;
-       u8      flag_dps_en; /* 1: dps, 0: 32k */
-       u8      bcn_rx_en;
-       u8      bcn_pass_cnt;     /* fw report one beacon information to
-                                  * driver  when it receives bcn_pass_cnt
-                                  * beacons.
-                                  */
-       u8      bcn_to;           /* beacon TO (ms). Â¡Â§=0¡¨ no limit.*/
-       u16     bcn_itv;
-       u8      app_itv; /* only for VOIP mode. */
-       u8      awake_bcn_itv;
-       u8      smart_ps;
-       u8      bcn_pass_time;  /* unit: 100ms */
-};
-
-struct setatim_parm {
-       u8 op;   /*0: add, 1:del*/
-       u8 txid; /* id of dest station.*/
-};
-
-struct setratable_parm {
-       u8 ss_ForceUp[NumRates];
-       u8 ss_ULevel[NumRates];
-       u8 ss_DLevel[NumRates];
-       u8 count_judge[NumRates];
-};
-
-struct getratable_parm {
-       uint rsvd;
-};
-
-struct getratable_rsp {
-       u8 ss_ForceUp[NumRates];
-       u8 ss_ULevel[NumRates];
-       u8 ss_DLevel[NumRates];
-       u8 count_judge[NumRates];
-};
-
-/*to get TX,RX retry count*/
-struct gettxretrycnt_parm {
-       unsigned int rsvd;
-};
-
-struct gettxretrycnt_rsp {
-       unsigned long tx_retrycnt;
-};
-
-struct getrxretrycnt_parm {
-       unsigned int rsvd;
-};
-
-struct getrxretrycnt_rsp {
-       unsigned long rx_retrycnt;
-};
-
-/*to get BCNOK,BCNERR count*/
-struct getbcnokcnt_parm {
-       unsigned int rsvd;
-};
-
-struct getbcnokcnt_rsp {
-       unsigned long bcnokcnt;
-};
-
-struct getbcnerrcnt_parm {
-       unsigned int rsvd;
-};
-
-struct getbcnerrcnt_rsp {
-       unsigned long bcnerrcnt;
-};
-
-/* to get current TX power level*/
-struct getcurtxpwrlevel_parm {
-       unsigned int rsvd;
-};
-
-struct getcurtxpwrlevel_rsp {
-       unsigned short tx_power;
-};
-
-/*dynamic on/off DIG*/
-struct setdig_parm {
-       unsigned char dig_on;   /* 1:on , 0:off */
-};
-
-/*dynamic on/off RA*/
-struct setra_parm {
-       unsigned char ra_on;    /* 1:on , 0:off */
-};
-
-struct setprobereqextraie_parm {
-       unsigned char e_id;
-       unsigned char ie_len;
-       unsigned char ie[];
-};
-
-struct setassocreqextraie_parm {
-       unsigned char e_id;
-       unsigned char ie_len;
-       unsigned char ie[];
-};
-
-struct setproberspextraie_parm {
-       unsigned char e_id;
-       unsigned char ie_len;
-       unsigned char ie[];
-};
-
-struct setassocrspextraie_parm {
-       unsigned char e_id;
-       unsigned char ie_len;
-       unsigned char ie[];
-};
-
-struct addBaReq_parm {
-       unsigned int tid;
-};
-
-/*H2C Handler index: 46 */
-struct SetChannel_parm {
-       u32 curr_ch;
-};
-
-/*H2C Handler index: 61 */
-struct DisconnectCtrlEx_param {
-       /* MAXTIME = (2 * FirstStageTO) + (TryPktCnt * TryPktInterval) */
-       unsigned char EnableDrvCtrl;
-       unsigned char TryPktCnt;
-       unsigned char TryPktInterval; /* Unit: ms */
-       unsigned char rsvd;
-       unsigned int  FirstStageTO; /* Unit: ms */
-};
-
-#define GEN_CMD_CODE(cmd)      cmd ## _CMD_
-
-/*
- * 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
-
-void r8712_setMacAddr_cmd(struct _adapter *padapter, const u8 *mac_addr);
-u8 r8712_sitesurvey_cmd(struct _adapter *padapter,
-                       struct ndis_802_11_ssid *pssid);
-int r8712_createbss_cmd(struct _adapter *padapter);
-void r8712_setstakey_cmd(struct _adapter *padapter, u8 *psta, u8 unicast_key);
-int r8712_joinbss_cmd(struct _adapter *padapter,
-                     struct wlan_network *pnetwork);
-void r8712_disassoc_cmd(struct _adapter *padapter);
-void r8712_setopmode_cmd(struct _adapter *padapter,
-                enum NDIS_802_11_NETWORK_INFRASTRUCTURE networktype);
-int r8712_setdatarate_cmd(struct _adapter *padapter, u8 *rateset);
-void r8712_set_chplan_cmd(struct _adapter  *padapter, int chplan);
-int r8712_getrfreg_cmd(struct _adapter *padapter, u8 offset, u8 *pval);
-int r8712_setrfreg_cmd(struct _adapter  *padapter, u8 offset, u32 val);
-void r8712_addbareq_cmd(struct _adapter *padapter, u8 tid);
-void r8712_wdg_wk_cmd(struct _adapter *padapter);
-void r8712_survey_cmd_callback(struct _adapter  *padapter,
-                              struct cmd_obj *pcmd);
-void r8712_disassoc_cmd_callback(struct _adapter  *padapter,
-                                struct cmd_obj *pcmd);
-void r8712_joinbss_cmd_callback(struct _adapter  *padapter,
-                               struct cmd_obj *pcmd);
-void r8712_createbss_cmd_callback(struct _adapter *padapter,
-                                 struct cmd_obj *pcmd);
-void r8712_getbbrfreg_cmdrsp_callback(struct _adapter *padapter,
-                                     struct cmd_obj *pcmd);
-void r8712_readtssi_cmdrsp_callback(struct _adapter *padapter,
-                               struct cmd_obj *pcmd);
-void r8712_setstaKey_cmdrsp_callback(struct _adapter  *padapter,
-                                    struct cmd_obj *pcmd);
-void r8712_setassocsta_cmdrsp_callback(struct _adapter  *padapter,
-                                      struct cmd_obj *pcmd);
-void r8712_disconnectCtrlEx_cmd(struct _adapter *adapter, u32 enableDrvCtrl,
-                       u32 tryPktCnt, u32 tryPktInterval, u32 firstStageTO);
-
-struct _cmd_callback {
-       u32     cmd_code;
-       void (*callback)(struct _adapter  *padapter, struct cmd_obj *cmd);
-};
-
-#include "rtl8712_cmd.h"
-
-#endif /* _CMD_H_ */
-
diff --git a/drivers/staging/rtl8712/rtl871x_debug.h b/drivers/staging/rtl8712/rtl871x_debug.h
deleted file mode 100644 (file)
index 69c631a..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL871X_DEBUG_H__
-#define __RTL871X_DEBUG_H__
-
-#include "osdep_service.h"
-#include "drv_types.h"
-
-#define _drv_emerg_                    1
-#define _drv_alert_                    2
-#define _drv_crit_                     3
-#define _drv_err_                      4
-#define        _drv_warning_                   5
-#define _drv_notice_                   6
-#define _drv_info_                     7
-#define _drv_dump_                     8
-#define        _drv_debug_                     9
-
-#define _module_rtl871x_xmit_c_                BIT(0)
-#define _module_xmit_osdep_c_          BIT(1)
-#define _module_rtl871x_recv_c_                BIT(2)
-#define _module_recv_osdep_c_          BIT(3)
-#define _module_rtl871x_mlme_c_                BIT(4)
-#define        _module_mlme_osdep_c_           BIT(5)
-#define _module_rtl871x_sta_mgt_c_     BIT(6)
-#define _module_rtl871x_cmd_c_         BIT(7)
-#define        _module_cmd_osdep_c_            BIT(8)
-#define _module_rtl871x_io_c_          BIT(9)
-#define        _module_io_osdep_c_             BIT(10)
-#define _module_os_intfs_c_            BIT(11)
-#define _module_rtl871x_security_c_    BIT(12)
-#define _module_rtl871x_eeprom_c_      BIT(13)
-#define _module_hal_init_c_            BIT(14)
-#define _module_hci_hal_init_c_                BIT(15)
-#define _module_rtl871x_ioctl_c_       BIT(16)
-#define _module_rtl871x_ioctl_set_c_   BIT(17)
-#define _module_rtl871x_pwrctrl_c_     BIT(19)
-#define _module_hci_intfs_c_           BIT(20)
-#define _module_hci_ops_c_             BIT(21)
-#define _module_osdep_service_c_       BIT(22)
-#define _module_rtl871x_mp_ioctl_c_    BIT(23)
-#define _module_hci_ops_os_c_          BIT(24)
-#define _module_rtl871x_ioctl_os_c     BIT(25)
-#define _module_rtl8712_cmd_c_         BIT(26)
-#define _module_rtl871x_mp_c_          BIT(27)
-#define _module_rtl8712_xmit_c_                BIT(28)
-#define _module_rtl8712_efuse_c_       BIT(29)
-#define _module_rtl8712_recv_c_                BIT(30)
-#define _module_rtl8712_led_c_         BIT(31)
-
-#undef _MODULE_DEFINE_
-
-#if defined _RTL871X_XMIT_C_
-       #define _MODULE_DEFINE_ _module_rtl871x_xmit_c_
-#elif defined _XMIT_OSDEP_C_
-       #define _MODULE_DEFINE_ _module_xmit_osdep_c_
-#elif defined _RTL871X_RECV_C_
-       #define _MODULE_DEFINE_ _module_rtl871x_recv_c_
-#elif defined _RECV_OSDEP_C_
-       #define _MODULE_DEFINE_ _module_recv_osdep_c_
-#elif defined _RTL871X_MLME_C_
-       #define _MODULE_DEFINE_ _module_rtl871x_mlme_c_
-#elif defined _MLME_OSDEP_C_
-       #define _MODULE_DEFINE_ _module_mlme_osdep_c_
-#elif defined _RTL871X_STA_MGT_C_
-       #define _MODULE_DEFINE_ _module_rtl871x_sta_mgt_c_
-#elif defined _RTL871X_CMD_C_
-       #define _MODULE_DEFINE_ _module_rtl871x_cmd_c_
-#elif defined _CMD_OSDEP_C_
-       #define _MODULE_DEFINE_ _module_cmd_osdep_c_
-#elif defined _RTL871X_IO_C_
-       #define _MODULE_DEFINE_ _module_rtl871x_io_c_
-#elif defined _IO_OSDEP_C_
-       #define _MODULE_DEFINE_ _module_io_osdep_c_
-#elif defined _OS_INTFS_C_
-       #define _MODULE_DEFINE_ _module_os_intfs_c_
-#elif defined _RTL871X_SECURITY_C_
-       #define _MODULE_DEFINE_ _module_rtl871x_security_c_
-#elif defined _RTL871X_EEPROM_C_
-       #define _MODULE_DEFINE_ _module_rtl871x_eeprom_c_
-#elif defined _HAL_INIT_C_
-       #define _MODULE_DEFINE_ _module_hal_init_c_
-#elif defined _HCI_HAL_INIT_C_
-       #define _MODULE_DEFINE_ _module_hci_hal_init_c_
-#elif defined _RTL871X_IOCTL_C_
-       #define _MODULE_DEFINE_ _module_rtl871x_ioctl_c_
-#elif defined _RTL871X_IOCTL_SET_C_
-       #define _MODULE_DEFINE_ _module_rtl871x_ioctl_set_c_
-#elif defined _RTL871X_PWRCTRL_C_
-       #define _MODULE_DEFINE_ _module_rtl871x_pwrctrl_c_
-#elif defined _HCI_INTF_C_
-       #define _MODULE_DEFINE_ _module_hci_intfs_c_
-#elif defined _HCI_OPS_C_
-       #define _MODULE_DEFINE_ _module_hci_ops_c_
-#elif defined _OSDEP_HCI_INTF_C_
-       #define _MODULE_DEFINE_ _module_hci_intfs_c_
-#elif defined _OSDEP_SERVICE_C_
-       #define _MODULE_DEFINE_ _module_osdep_service_c_
-#elif defined _RTL871X_MP_IOCTL_C_
-       #define _MODULE_DEFINE_ _module_rtl871x_mp_ioctl_c_
-#elif defined _HCI_OPS_OS_C_
-       #define _MODULE_DEFINE_ _module_hci_ops_os_c_
-#elif defined _RTL871X_IOCTL_LINUX_C_
-       #define _MODULE_DEFINE_ _module_rtl871x_ioctl_os_c
-#elif defined _RTL871X_MP_C_
-       #define _MODULE_DEFINE_ _module_rtl871x_mp_c_
-#elif defined _RTL8712_CMD_C_
-       #define _MODULE_DEFINE_ _module_rtl8712_cmd_c_
-#elif defined _RTL8712_XMIT_C_
-       #define _MODULE_DEFINE_ _module_rtl8712_xmit_c_
-#elif defined _RTL8712_EFUSE_C_
-       #define _MODULE_DEFINE_ _module_rtl8712_efuse_c_
-#elif defined _RTL8712_RECV_C_
-       #define _MODULE_DEFINE_ _module_rtl8712_recv_c_
-#else
-       #undef  _MODULE_DEFINE_
-#endif
-
-#endif /*__RTL871X_DEBUG_H__*/
diff --git a/drivers/staging/rtl8712/rtl871x_eeprom.c b/drivers/staging/rtl8712/rtl871x_eeprom.c
deleted file mode 100644 (file)
index 221bf92..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl871x_eeprom.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _RTL871X_EEPROM_C_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-
-static void up_clk(struct _adapter *padapter, u16 *x)
-{
-       *x = *x | _EESK;
-       r8712_write8(padapter, EE_9346CR, (u8)*x);
-       udelay(CLOCK_RATE);
-}
-
-static void down_clk(struct _adapter *padapter, u16 *x)
-{
-       *x = *x & ~_EESK;
-       r8712_write8(padapter, EE_9346CR, (u8)*x);
-       udelay(CLOCK_RATE);
-}
-
-static void shift_out_bits(struct _adapter *padapter, u16 data, u16 count)
-{
-       u16 x, mask;
-
-       if (padapter->surprise_removed)
-               goto out;
-       mask = 0x01 << (count - 1);
-       x = r8712_read8(padapter, EE_9346CR);
-       x &= ~(_EEDO | _EEDI);
-       do {
-               x &= ~_EEDI;
-               if (data & mask)
-                       x |= _EEDI;
-               if (padapter->surprise_removed)
-                       goto out;
-               r8712_write8(padapter, EE_9346CR, (u8)x);
-               udelay(CLOCK_RATE);
-               up_clk(padapter, &x);
-               down_clk(padapter, &x);
-               mask >>= 1;
-       } while (mask);
-       if (padapter->surprise_removed)
-               goto out;
-       x &= ~_EEDI;
-       r8712_write8(padapter, EE_9346CR, (u8)x);
-out:;
-}
-
-static u16 shift_in_bits(struct _adapter *padapter)
-{
-       u16 x, d = 0, i;
-
-       if (padapter->surprise_removed)
-               goto out;
-       x = r8712_read8(padapter, EE_9346CR);
-       x &= ~(_EEDO | _EEDI);
-       d = 0;
-       for (i = 0; i < 16; i++) {
-               d <<= 1;
-               up_clk(padapter, &x);
-               if (padapter->surprise_removed)
-                       goto out;
-               x = r8712_read8(padapter, EE_9346CR);
-               x &= ~(_EEDI);
-               if (x & _EEDO)
-                       d |= 1;
-               down_clk(padapter, &x);
-       }
-out:
-       return d;
-}
-
-static void standby(struct _adapter *padapter)
-{
-       u8   x;
-
-       x = r8712_read8(padapter, EE_9346CR);
-       x &= ~(_EECS | _EESK);
-       r8712_write8(padapter, EE_9346CR, x);
-       udelay(CLOCK_RATE);
-       x |= _EECS;
-       r8712_write8(padapter, EE_9346CR, x);
-       udelay(CLOCK_RATE);
-}
-
-static u16 wait_eeprom_cmd_done(struct _adapter *padapter)
-{
-       u8      x;
-       u16     i;
-
-       standby(padapter);
-       for (i = 0; i < 200; i++) {
-               x = r8712_read8(padapter, EE_9346CR);
-               if (x & _EEDO)
-                       return true;
-               udelay(CLOCK_RATE);
-       }
-       return false;
-}
-
-static void eeprom_clean(struct _adapter *padapter)
-{
-       u16 x;
-
-       if (padapter->surprise_removed)
-               return;
-       x = r8712_read8(padapter, EE_9346CR);
-       if (padapter->surprise_removed)
-               return;
-       x &= ~(_EECS | _EEDI);
-       r8712_write8(padapter, EE_9346CR, (u8)x);
-       if (padapter->surprise_removed)
-               return;
-       up_clk(padapter, &x);
-       if (padapter->surprise_removed)
-               return;
-       down_clk(padapter, &x);
-}
-
-void r8712_eeprom_write16(struct _adapter *padapter, u16 reg, u16 data)
-{
-       u8 x;
-       u8 tmp8_ori, tmp8_new, tmp8_clk_ori, tmp8_clk_new;
-
-       tmp8_ori = r8712_read8(padapter, 0x102502f1);
-       tmp8_new = tmp8_ori & 0xf7;
-       if (tmp8_ori != tmp8_new)
-               r8712_write8(padapter, 0x102502f1, tmp8_new);
-       tmp8_clk_ori = r8712_read8(padapter, 0x10250003);
-       tmp8_clk_new = tmp8_clk_ori | 0x20;
-       if (tmp8_clk_new != tmp8_clk_ori)
-               r8712_write8(padapter, 0x10250003, tmp8_clk_new);
-       x = r8712_read8(padapter, EE_9346CR);
-       x &= ~(_EEDI | _EEDO | _EESK | _EEM0);
-       x |= _EEM1 | _EECS;
-       r8712_write8(padapter, EE_9346CR, x);
-       shift_out_bits(padapter, EEPROM_EWEN_OPCODE, 5);
-       if (padapter->eeprom_address_size == 8) /*CF+ and SDIO*/
-               shift_out_bits(padapter, 0, 6);
-       else    /* USB */
-               shift_out_bits(padapter, 0, 4);
-       standby(padapter);
-       /* Erase this particular word.  Write the erase opcode and register
-        * number in that order. The opcode is 3bits in length; reg is 6
-        * bits long.
-        */
-       standby(padapter);
-       /* write the new word to the EEPROM
-        * send the write opcode the EEPORM
-        */
-       shift_out_bits(padapter, EEPROM_WRITE_OPCODE, 3);
-       /* select which word in the EEPROM that we are writing to. */
-       shift_out_bits(padapter, reg, padapter->eeprom_address_size);
-       /* write the data to the selected EEPROM word. */
-       shift_out_bits(padapter, data, 16);
-       if (wait_eeprom_cmd_done(padapter)) {
-               standby(padapter);
-               shift_out_bits(padapter, EEPROM_EWDS_OPCODE, 5);
-               shift_out_bits(padapter, reg, 4);
-               eeprom_clean(padapter);
-       }
-       if (tmp8_clk_new != tmp8_clk_ori)
-               r8712_write8(padapter, 0x10250003, tmp8_clk_ori);
-       if (tmp8_new != tmp8_ori)
-               r8712_write8(padapter, 0x102502f1, tmp8_ori);
-}
-
-u16 r8712_eeprom_read16(struct _adapter *padapter, u16 reg) /*ReadEEprom*/
-{
-       u16 x;
-       u16 data = 0;
-       u8 tmp8_ori, tmp8_new, tmp8_clk_ori, tmp8_clk_new;
-
-       tmp8_ori = r8712_read8(padapter, 0x102502f1);
-       tmp8_new = tmp8_ori & 0xf7;
-       if (tmp8_ori != tmp8_new)
-               r8712_write8(padapter, 0x102502f1, tmp8_new);
-       tmp8_clk_ori = r8712_read8(padapter, 0x10250003);
-       tmp8_clk_new = tmp8_clk_ori | 0x20;
-       if (tmp8_clk_new != tmp8_clk_ori)
-               r8712_write8(padapter, 0x10250003, tmp8_clk_new);
-       if (padapter->surprise_removed)
-               goto out;
-       /* select EEPROM, reset bits, set _EECS */
-       x = r8712_read8(padapter, EE_9346CR);
-       if (padapter->surprise_removed)
-               goto out;
-       x &= ~(_EEDI | _EEDO | _EESK | _EEM0);
-       x |= _EEM1 | _EECS;
-       r8712_write8(padapter, EE_9346CR, (unsigned char)x);
-       /* write the read opcode and register number in that order
-        * The opcode is 3bits in length, reg is 6 bits long
-        */
-       shift_out_bits(padapter, EEPROM_READ_OPCODE, 3);
-       shift_out_bits(padapter, reg, padapter->eeprom_address_size);
-       /* Now read the data (16 bits) in from the selected EEPROM word */
-       data = shift_in_bits(padapter);
-       eeprom_clean(padapter);
-out:
-       if (tmp8_clk_new != tmp8_clk_ori)
-               r8712_write8(padapter, 0x10250003, tmp8_clk_ori);
-       if (tmp8_new != tmp8_ori)
-               r8712_write8(padapter, 0x102502f1, tmp8_ori);
-       return data;
-}
diff --git a/drivers/staging/rtl8712/rtl871x_eeprom.h b/drivers/staging/rtl8712/rtl871x_eeprom.h
deleted file mode 100644 (file)
index 7bdeb2a..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- ******************************************************************************/
-#ifndef __RTL871X_EEPROM_H__
-#define __RTL871X_EEPROM_H__
-
-#include "osdep_service.h"
-
-#define        RTL8712_EEPROM_ID               0x8712
-#define        EEPROM_MAX_SIZE                 256
-#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*/
-
-#define        EEPROM_CID_DEFAULT              0x0
-#define        EEPROM_CID_ALPHA                0x1
-#define        EEPROM_CID_Senao                0x3
-#define        EEPROM_CID_NetCore              0x5
-#define        EEPROM_CID_CAMEO                0X8
-#define        EEPROM_CID_SITECOM              0x9
-#define        EEPROM_CID_COREGA               0xB
-#define        EEPROM_CID_EDIMAX_BELKIN        0xC
-#define        EEPROM_CID_SERCOMM_BELKIN       0xE
-#define        EEPROM_CID_CAMEO1               0xF
-#define        EEPROM_CID_WNC_COREGA           0x12
-#define        EEPROM_CID_CLEVO                0x13
-#define        EEPROM_CID_WHQL                 0xFE
-
-enum RT_CUSTOMER_ID {
-       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,
-       RT_CID_819x_Netcore = 10,
-       RT_CID_Nettronix = 11,
-       RT_CID_DLINK = 12,
-       RT_CID_PRONET = 13,
-       RT_CID_COREGA = 14,
-       RT_CID_819x_ALPHA = 15,
-       RT_CID_819x_Sitecom = 16,
-       RT_CID_CCX = 17,
-       RT_CID_819x_Lenovo = 18,
-       RT_CID_819x_QMI = 19,
-       RT_CID_819x_Edimax_Belkin = 20,
-       RT_CID_819x_Sercomm_Belkin = 21,
-       RT_CID_819x_CAMEO1 = 22,
-       RT_CID_819x_MSI = 23,
-       RT_CID_819x_Acer = 24,
-       RT_CID_819x_AzWave_ASUS = 25,
-       RT_CID_819x_AzWave = 26,
-       RT_CID_819x_WNC_COREGA = 27,
-       RT_CID_819x_CLEVO = 28,
-};
-
-struct eeprom_priv {
-       u8 bautoload_fail_flag;
-       u8 bempty;
-       u8 sys_config;
-       u8 mac_addr[6];
-       u8 config0;
-       u16 channel_plan;
-       u8 country_string[3];
-       u8 tx_power_b[15];
-       u8 tx_power_g[15];
-       u8 tx_power_a[201];
-       u8 efuse_eeprom_data[EEPROM_MAX_SIZE];
-       enum RT_CUSTOMER_ID CustomerID;
-};
-
-void r8712_eeprom_write16(struct _adapter *padapter, u16 reg, u16 data);
-u16 r8712_eeprom_read16(struct _adapter *padapter, u16 reg);
-
-#endif  /*__RTL871X_EEPROM_H__*/
-
diff --git a/drivers/staging/rtl8712/rtl871x_event.h b/drivers/staging/rtl8712/rtl871x_event.h
deleted file mode 100644 (file)
index 759a2d2..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef _RTL871x_EVENT_H_
-#define _RTL871x_EVENT_H_
-
-#include "osdep_service.h"
-
-#include "wlan_bssdef.h"
-#include <linux/semaphore.h>
-#include <linux/sem.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 joinning 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];
-       __le32    cam_id;
-};
-
-struct stadel_event {
-       unsigned char macaddr[6];
-       unsigned char rsvd[2];
-};
-
-struct addba_event {
-       unsigned int tid;
-};
-
-#define GEN_EVT_CODE(event)    event ## _EVT_
-
-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;
-};
-
-struct c2hevent_queue {
-       /*volatile*/ int        head;
-       /*volatile*/ int        tail;
-       struct  event_node      nodes[C2HEVENT_SZ];
-       unsigned char   seq;
-};
-
-#define NETWORK_QUEUE_SZ       4
-
-struct network_queue {
-       /*volatile*/ int        head;
-       /*volatile*/ int        tail;
-       struct wlan_bssid_ex networks[NETWORK_QUEUE_SZ];
-};
-
-struct ADDBA_Req_Report_parm {
-       unsigned char MacAddress[ETH_ALEN];
-       unsigned short StartSeqNum;
-       unsigned char tid;
-};
-
-#include "rtl8712_event.h"
-
-#endif /* _WLANEVENT_H_ */
-
diff --git a/drivers/staging/rtl8712/rtl871x_ht.h b/drivers/staging/rtl8712/rtl871x_ht.h
deleted file mode 100644 (file)
index ebd7866..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef _RTL871X_HT_H_
-#define _RTL871X_HT_H_
-
-#include "osdep_service.h"
-#include "wifi.h"
-
-struct ht_priv {
-       unsigned int    ht_option;
-       unsigned int    ampdu_enable;/*for enable Tx A-MPDU*/
-       unsigned char   baddbareq_issued[16];
-       unsigned int    tx_amsdu_enable;/*for enable Tx A-MSDU */
-       unsigned int    tx_amdsu_maxlen; /* 1: 8k, 0:4k ; default:8k, for tx */
-       unsigned int    rx_ampdu_maxlen; /* for rx reordering ctrl win_sz,
-                                         * updated when join_callback.
-                                         */
-       struct ieee80211_ht_cap ht_cap;
-};
-
-#endif /*_RTL871X_HT_H_ */
-
diff --git a/drivers/staging/rtl8712/rtl871x_io.c b/drivers/staging/rtl8712/rtl871x_io.c
deleted file mode 100644 (file)
index 6789a4c..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl871x_io.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-/*
- *
- * The purpose of rtl871x_io.c
- *
- * a. provides the API
- * b. provides the protocol engine
- * c. provides the software interface between caller and the hardware interface
- *
- * For r8712u, both sync/async operations are provided.
- *
- * Only sync read/write_mem operations are provided.
- *
- */
-
-#define _RTL871X_IO_C_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "rtl871x_io.h"
-#include "osdep_intf.h"
-#include "usb_ops.h"
-
-static uint _init_intf_hdl(struct _adapter *padapter,
-                          struct intf_hdl *pintf_hdl)
-{
-       struct  intf_priv       *pintf_priv;
-       void (*set_intf_option)(u32 *poption) = NULL;
-       void (*set_intf_funs)(struct intf_hdl *pintf_hdl);
-       void (*set_intf_ops)(struct _io_ops     *pops);
-       uint (*init_intf_priv)(struct intf_priv *pintfpriv);
-
-       set_intf_option = &(r8712_usb_set_intf_option);
-       set_intf_funs = &(r8712_usb_set_intf_funs);
-       set_intf_ops = &r8712_usb_set_intf_ops;
-       init_intf_priv = &r8712_usb_init_intf_priv;
-       pintf_priv = pintf_hdl->pintfpriv = kmalloc(sizeof(struct intf_priv),
-                                                   GFP_ATOMIC);
-       if (!pintf_priv)
-               goto _init_intf_hdl_fail;
-       pintf_hdl->adapter = (u8 *)padapter;
-       set_intf_option(&pintf_hdl->intf_option);
-       set_intf_funs(pintf_hdl);
-       set_intf_ops(&pintf_hdl->io_ops);
-       pintf_priv->intf_dev = (u8 *)&padapter->dvobjpriv;
-       if (init_intf_priv(pintf_priv) == _FAIL)
-               goto _init_intf_hdl_fail;
-       return _SUCCESS;
-_init_intf_hdl_fail:
-       kfree(pintf_priv);
-       return _FAIL;
-}
-
-static void _unload_intf_hdl(struct intf_priv *pintfpriv)
-{
-       void (*unload_intf_priv)(struct intf_priv *pintfpriv);
-
-       unload_intf_priv = &r8712_usb_unload_intf_priv;
-       unload_intf_priv(pintfpriv);
-       kfree(pintfpriv);
-}
-
-static uint register_intf_hdl(u8 *dev, struct intf_hdl *pintfhdl)
-{
-       struct _adapter *adapter = (struct _adapter *)dev;
-
-       pintfhdl->intf_option = 0;
-       pintfhdl->adapter = dev;
-       pintfhdl->intf_dev = (u8 *)&adapter->dvobjpriv;
-       if (!_init_intf_hdl(adapter, pintfhdl))
-               goto register_intf_hdl_fail;
-       return _SUCCESS;
-register_intf_hdl_fail:
-       return false;
-}
-
-static  void unregister_intf_hdl(struct intf_hdl *pintfhdl)
-{
-       _unload_intf_hdl(pintfhdl->pintfpriv);
-       memset((u8 *)pintfhdl, 0, sizeof(struct intf_hdl));
-}
-
-uint r8712_alloc_io_queue(struct _adapter *adapter)
-{
-       u32 i;
-       struct io_queue *pio_queue;
-       struct io_req *pio_req;
-
-       pio_queue = kmalloc(sizeof(*pio_queue), GFP_ATOMIC);
-       if (!pio_queue)
-               goto alloc_io_queue_fail;
-       INIT_LIST_HEAD(&pio_queue->free_ioreqs);
-       INIT_LIST_HEAD(&pio_queue->processing);
-       INIT_LIST_HEAD(&pio_queue->pending);
-       spin_lock_init(&pio_queue->lock);
-       pio_queue->pallocated_free_ioreqs_buf = kzalloc(NUM_IOREQ *
-                                               (sizeof(struct io_req)) + 4,
-                                               GFP_ATOMIC);
-       if ((pio_queue->pallocated_free_ioreqs_buf) == NULL)
-               goto alloc_io_queue_fail;
-       pio_queue->free_ioreqs_buf = pio_queue->pallocated_free_ioreqs_buf + 4
-                       - ((addr_t)(pio_queue->pallocated_free_ioreqs_buf)
-                       & 3);
-       pio_req = (struct io_req *)(pio_queue->free_ioreqs_buf);
-       for (i = 0; i < NUM_IOREQ; i++) {
-               INIT_LIST_HEAD(&pio_req->list);
-               list_add_tail(&pio_req->list, &pio_queue->free_ioreqs);
-               pio_req++;
-       }
-       if ((register_intf_hdl((u8 *)adapter, &pio_queue->intf)) == _FAIL)
-               goto alloc_io_queue_fail;
-       adapter->pio_queue = pio_queue;
-       return _SUCCESS;
-alloc_io_queue_fail:
-       if (pio_queue) {
-               kfree(pio_queue->pallocated_free_ioreqs_buf);
-               kfree(pio_queue);
-       }
-       adapter->pio_queue = NULL;
-       return _FAIL;
-}
-
-void r8712_free_io_queue(struct _adapter *adapter)
-{
-       struct io_queue *pio_queue = adapter->pio_queue;
-
-       if (pio_queue) {
-               kfree(pio_queue->pallocated_free_ioreqs_buf);
-               adapter->pio_queue = NULL;
-               unregister_intf_hdl(&pio_queue->intf);
-               kfree(pio_queue);
-       }
-}
diff --git a/drivers/staging/rtl8712/rtl871x_io.h b/drivers/staging/rtl8712/rtl871x_io.h
deleted file mode 100644 (file)
index c5b12f7..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef _RTL871X_IO_H_
-#define _RTL871X_IO_H_
-
-#include "osdep_service.h"
-#include "osdep_intf.h"
-
-#define NUM_IOREQ              8
-
-#define MAX_PROT_SZ    (64-16)
-
-#define _IOREADY                       0
-#define _IO_WAIT_COMPLETE   1
-#define _IO_WAIT_RSP        2
-
-/* IO COMMAND TYPE */
-#define _IOSZ_MASK_            (0x7F)
-#define _IO_WRITE_             BIT(7)
-#define _IO_FIXED_             BIT(8)
-#define _IO_BURST_             BIT(9)
-#define _IO_BYTE_              BIT(10)
-#define _IO_HW_                        BIT(11)
-#define _IO_WORD_              BIT(12)
-#define _IO_SYNC_              BIT(13)
-#define _IO_CMDMASK_   (0x1F80)
-
-/*
- *     For prompt mode accessing, caller shall free io_req
- *     Otherwise, io_handler will free io_req
- */
-/* IO STATUS TYPE */
-#define _IO_ERR_               BIT(2)
-#define _IO_SUCCESS_   BIT(1)
-#define _IO_DONE_              BIT(0)
-#define IO_RD32                        (_IO_SYNC_ | _IO_WORD_)
-#define IO_RD16                        (_IO_SYNC_ | _IO_HW_)
-#define IO_RD8                 (_IO_SYNC_ | _IO_BYTE_)
-#define IO_RD32_ASYNC  (_IO_WORD_)
-#define IO_RD16_ASYNC  (_IO_HW_)
-#define IO_RD8_ASYNC   (_IO_BYTE_)
-#define IO_WR32                        (_IO_WRITE_ | _IO_SYNC_ | _IO_WORD_)
-#define IO_WR16                        (_IO_WRITE_ | _IO_SYNC_ | _IO_HW_)
-#define IO_WR8                 (_IO_WRITE_ | _IO_SYNC_ | _IO_BYTE_)
-#define IO_WR32_ASYNC  (_IO_WRITE_ | _IO_WORD_)
-#define IO_WR16_ASYNC  (_IO_WRITE_ | _IO_HW_)
-#define IO_WR8_ASYNC   (_IO_WRITE_ | _IO_BYTE_)
-/*
- *     Only Sync. burst accessing is provided.
- */
-#define IO_WR_BURST(x)         (IO_WRITE_ | _IO_SYNC_ | _IO_BURST_ | \
-                               ((x) & _IOSZ_MASK_))
-#define IO_RD_BURST(x)         (_IO_SYNC_ | _IO_BURST_ | ((x) & _IOSZ_MASK_))
-/*below is for the intf_option bit defition...*/
-#define _INTF_ASYNC_   BIT(0)  /*support async io*/
-struct intf_priv;
-struct intf_hdl;
-struct io_queue;
-struct _io_ops {
-       uint (*_sdbus_read_bytes_to_membuf)(struct intf_priv *pintfpriv,
-                                           u32 addr, u32 cnt, u8 *pbuf);
-       uint (*_sdbus_read_blocks_to_membuf)(struct intf_priv *pintfpriv,
-                                            u32 addr, u32 cnt, u8 *pbuf);
-       u8 (*_read8)(struct intf_hdl *pintfhdl, u32 addr);
-       u16 (*_read16)(struct intf_hdl *pintfhdl, u32 addr);
-       u32 (*_read32)(struct intf_hdl *pintfhdl, u32 addr);
-       uint (*_sdbus_write_blocks_from_membuf)(struct intf_priv *pintfpriv,
-                                               u32 addr, u32 cnt, u8 *pbuf,
-                                               u8 async);
-       uint (*_sdbus_write_bytes_from_membuf)(struct intf_priv *pintfpriv,
-                                              u32 addr, u32 cnt, u8 *pbuf);
-       u8 (*_cmd52r)(struct intf_priv *pintfpriv, u32 addr);
-       void (*_cmd52w)(struct intf_priv *pintfpriv, u32 addr, u8 val8);
-       u8 (*_cmdfunc152r)(struct intf_priv *pintfpriv, u32 addr);
-       void (*_cmdfunc152w)(struct intf_priv *pintfpriv, u32 addr, u8 val8);
-       void (*_write8)(struct intf_hdl *pintfhdl, u32 addr, u8 val);
-       void (*_write16)(struct intf_hdl *pintfhdl, u32 addr, u16 val);
-       void (*_write32)(struct intf_hdl *pintfhdl, u32 addr, u32 val);
-       void (*_read_mem)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt,
-                         u8 *pmem);
-       void (*_write_mem)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt,
-                          u8 *pmem);
-       void (*_sync_irp_protocol_rw)(struct io_queue *pio_q);
-       u32 (*_read_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt,
-                         u8 *pmem);
-       u32 (*_write_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt,
-                          u8 *pmem);
-};
-
-struct io_req {
-       struct list_head list;
-       u32     addr;
-       /*volatile*/ u32        val;
-       u32     command;
-       u32     status;
-       u8      *pbuf;
-       void (*_async_io_callback)(struct _adapter *padapter,
-                                  struct io_req *pio_req, u8 *cnxt);
-       u8 *cnxt;
-};
-
-struct intf_hdl {
-       u32     intf_option;
-       u8      *adapter;
-       u8      *intf_dev;
-       struct intf_priv        *pintfpriv;
-       void (*intf_hdl_init)(u8 *priv);
-       void (*intf_hdl_unload)(u8 *priv);
-       void (*intf_hdl_open)(u8 *priv);
-       void (*intf_hdl_close)(u8 *priv);
-       struct  _io_ops io_ops;
-};
-
-struct reg_protocol_rd {
-#ifdef __LITTLE_ENDIAN
-       /* DW1 */
-       u32             NumOfTrans:4;
-       u32             Reserved1:4;
-       u32             Reserved2:24;
-       /* DW2 */
-       u32             ByteCount:7;
-       u32             WriteEnable:1;          /*0:read, 1:write*/
-       u32             FixOrContinuous:1;      /*0:continuous, 1: Fix*/
-       u32             BurstMode:1;
-       u32             Byte1Access:1;
-       u32             Byte2Access:1;
-       u32             Byte4Access:1;
-       u32             Reserved3:3;
-       u32             Reserved4:16;
-       /*DW3*/
-       u32             BusAddress;
-       /*DW4*/
-#else
-/*DW1*/
-       u32 Reserved1:4;
-       u32 NumOfTrans:4;
-       u32 Reserved2:24;
-       /*DW2*/
-       u32 WriteEnable:1;
-       u32 ByteCount:7;
-       u32 Reserved3:3;
-       u32 Byte4Access:1;
-       u32 Byte2Access:1;
-       u32 Byte1Access:1;
-       u32 BurstMode:1;
-       u32 FixOrContinuous:1;
-       u32 Reserved4:16;
-       /*DW3*/
-       u32 BusAddress;
-       /*DW4*/
-#endif
-};
-
-struct reg_protocol_wt {
-#ifdef __LITTLE_ENDIAN
-       /*DW1*/
-       u32 NumOfTrans:4;
-       u32 Reserved1:4;
-       u32 Reserved2:24;
-       /*DW2*/
-       u32 ByteCount:7;
-       u32 WriteEnable:1;      /*0:read, 1:write*/
-       u32 FixOrContinuous:1;  /*0:continuous, 1: Fix*/
-       u32 BurstMode:1;
-       u32 Byte1Access:1;
-       u32 Byte2Access:1;
-       u32 Byte4Access:1;
-       u32 Reserved3:3;
-       u32 Reserved4:16;
-       /*DW3*/
-       u32 BusAddress;
-       /*DW4*/
-       u32 Value;
-#else
-       /*DW1*/
-       u32 Reserved1:4;
-       u32 NumOfTrans:4;
-       u32 Reserved2:24;
-       /*DW2*/
-       u32 WriteEnable:1;
-       u32 ByteCount:7;
-       u32 Reserved3:3;
-       u32 Byte4Access:1;
-       u32 Byte2Access:1;
-       u32 Byte1Access:1;
-       u32 BurstMode:1;
-       u32 FixOrContinuous:1;
-       u32 Reserved4:16;
-       /*DW3*/
-       u32 BusAddress;
-       /*DW4*/
-       u32 Value;
-#endif
-};
-
-/*
- * Below is the data structure used by _io_handler
- */
-
-struct io_queue {
-       spinlock_t lock;
-       struct list_head free_ioreqs;
-       /*The io_req list that will be served in the single protocol r/w.*/
-       struct list_head pending;
-       struct list_head processing;
-       u8 *free_ioreqs_buf; /* 4-byte aligned */
-       u8 *pallocated_free_ioreqs_buf;
-       struct  intf_hdl intf;
-};
-
-u8 r8712_read8(struct _adapter *adapter, u32 addr);
-u16 r8712_read16(struct _adapter *adapter, u32 addr);
-u32 r8712_read32(struct _adapter *adapter, u32 addr);
-void r8712_read_mem(struct _adapter *adapter, u32 addr, u32 cnt, u8 *pmem);
-void r8712_read_port(struct _adapter *adapter, u32 addr, u32 cnt, u8 *pmem);
-void r8712_write8(struct _adapter *adapter, u32 addr, u8 val);
-void r8712_write16(struct _adapter *adapter, u32 addr, u16 val);
-void r8712_write32(struct _adapter *adapter, u32 addr, u32 val);
-void r8712_write_mem(struct _adapter *adapter, u32 addr, u32 cnt, u8 *pmem);
-void r8712_write_port(struct _adapter *adapter, u32 addr, u32 cnt, u8 *pmem);
-/*ioreq */
-uint r8712_alloc_io_queue(struct _adapter *adapter);
-void r8712_free_io_queue(struct _adapter *adapter);
-
-#endif /*_RTL871X_IO_H_*/
diff --git a/drivers/staging/rtl8712/rtl871x_ioctl.h b/drivers/staging/rtl8712/rtl871x_ioctl.h
deleted file mode 100644 (file)
index d6332a8..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __IOCTL_H
-#define __IOCTL_H
-
-#include "osdep_service.h"
-#include "drv_types.h"
-
-#ifndef OID_802_11_CAPABILITY
-       #define OID_802_11_CAPABILITY                   0x0d010122
-#endif
-
-#ifndef OID_802_11_PMKID
-       #define OID_802_11_PMKID                        0x0d010123
-#endif
-
-/* For DDK-defined OIDs*/
-#define OID_NDIS_SEG1  0x00010100
-#define OID_NDIS_SEG2  0x00010200
-#define OID_NDIS_SEG3  0x00020100
-#define OID_NDIS_SEG4  0x01010100
-#define OID_NDIS_SEG5  0x01020100
-#define OID_NDIS_SEG6  0x01020200
-#define OID_NDIS_SEG7  0xFD010100
-#define OID_NDIS_SEG8  0x0D010100
-#define OID_NDIS_SEG9  0x0D010200
-#define OID_NDIS_SEG10 0x0D020200
-#define SZ_OID_NDIS_SEG1       23
-#define SZ_OID_NDIS_SEG2       3
-#define SZ_OID_NDIS_SEG3       6
-#define SZ_OID_NDIS_SEG4       6
-#define SZ_OID_NDIS_SEG5       4
-#define SZ_OID_NDIS_SEG6       8
-#define SZ_OID_NDIS_SEG7       7
-#define SZ_OID_NDIS_SEG8       36
-#define SZ_OID_NDIS_SEG9       24
-#define SZ_OID_NDIS_SEG10      19
-
-/* For Realtek-defined OIDs*/
-#define OID_MP_SEG1    0xFF871100
-#define OID_MP_SEG2    0xFF818000
-#define OID_MP_SEG3    0xFF818700
-#define OID_MP_SEG4    0xFF011100
-
-enum oid_type {
-       QUERY_OID,
-       SET_OID
-};
-
-struct oid_funs_node {
-       unsigned int oid_start; /*the starting number for OID*/
-       unsigned int oid_end; /*the ending number for OID*/
-       struct oid_obj_priv *node_array;
-       unsigned int array_sz; /*the size of node_array*/
-       int query_counter; /*count the number of query hits for this segment*/
-       int set_counter; /*count the number of set hits for this segment*/
-};
-
-struct oid_par_priv {
-       void    *adapter_context;
-       uint oid;
-       void *information_buf;
-       unsigned long information_buf_len;
-       unsigned long *bytes_rw;
-       unsigned long *bytes_needed;
-       enum oid_type   type_of_oid;
-       unsigned int dbg;
-};
-
-struct oid_obj_priv {
-       unsigned char   dbg; /* 0: without OID debug message
-                             * 1: with OID debug message
-                             */
-       uint (*oidfuns)(struct oid_par_priv *poid_par_priv);
-};
-
-uint oid_null_function(struct oid_par_priv *poid_par_priv);
-
-extern struct iw_handler_def  r871x_handlers_def;
-
-uint drv_query_info(struct net_device *MiniportAdapterContext,
-                   uint Oid,
-                   void *InformationBuffer,
-                   u32 InformationBufferLength,
-                   u32 *BytesWritten,
-                   u32 *BytesNeeded);
-
-uint drv_set_info(struct net_device *MiniportAdapterContext,
-                 uint Oid,
-                 void *InformationBuffer,
-                 u32 InformationBufferLength,
-                 u32 *BytesRead,
-                 u32 *BytesNeeded);
-
-#endif
diff --git a/drivers/staging/rtl8712/rtl871x_ioctl_linux.c b/drivers/staging/rtl8712/rtl871x_ioctl_linux.c
deleted file mode 100644 (file)
index 36f6904..0000000
+++ /dev/null
@@ -1,2330 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl871x_ioctl_linux.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _RTL871X_IOCTL_LINUX_C_
-#define _RTL871X_MP_IOCTL_C_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "wlan_bssdef.h"
-#include "rtl871x_debug.h"
-#include "wifi.h"
-#include "rtl871x_mlme.h"
-#include "rtl871x_ioctl.h"
-#include "rtl871x_ioctl_set.h"
-#include "rtl871x_mp_ioctl.h"
-#include "mlme_osdep.h"
-#include <linux/wireless.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/io.h>
-#include <linux/semaphore.h>
-#include <net/iw_handler.h>
-#include <linux/if_arp.h>
-#include <linux/etherdevice.h>
-
-#define RTL_IOCTL_WPA_SUPPLICANT       (SIOCIWFIRSTPRIV + 0x1E)
-
-#define SCAN_ITEM_SIZE 768
-#define MAX_CUSTOM_LEN 64
-#define RATE_COUNT 4
-
-static const u32 rtl8180_rates[] = {1000000, 2000000, 5500000, 11000000,
-                      6000000, 9000000, 12000000, 18000000,
-                      24000000, 36000000, 48000000, 54000000};
-
-static const long ieee80211_wlan_frequencies[] = {
-       2412, 2417, 2422, 2427,
-       2432, 2437, 2442, 2447,
-       2452, 2457, 2462, 2467,
-       2472, 2484
-};
-
-void r8712_indicate_wx_assoc_event(struct _adapter *padapter)
-{
-       union iwreq_data wrqu;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-       wrqu.ap_addr.sa_family = ARPHRD_ETHER;
-       memcpy(wrqu.ap_addr.sa_data, pmlmepriv->cur_network.network.MacAddress,
-               ETH_ALEN);
-       wireless_send_event(padapter->pnetdev, SIOCGIWAP, &wrqu, NULL);
-}
-
-void r8712_indicate_wx_disassoc_event(struct _adapter *padapter)
-{
-       union iwreq_data wrqu;
-
-       wrqu.ap_addr.sa_family = ARPHRD_ETHER;
-       eth_zero_addr(wrqu.ap_addr.sa_data);
-       wireless_send_event(padapter->pnetdev, SIOCGIWAP, &wrqu, NULL);
-}
-
-static inline void handle_pairwise_key(struct sta_info *psta,
-                                      struct ieee_param *param,
-                                      struct _adapter *padapter)
-{
-       /* pairwise key */
-       memcpy(psta->x_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->tkiptxmickey. skey,
-                      &param->u.crypt.key[16], 8);
-               memcpy(psta->tkiprxmickey. skey,
-                      &param->u.crypt.key[24], 8);
-               padapter->securitypriv. busetkipkey = false;
-               mod_timer(&padapter->securitypriv.tkip_timer,
-                         jiffies + msecs_to_jiffies(50));
-       }
-       r8712_setstakey_cmd(padapter, (unsigned char *)psta, true);
-}
-
-static inline void handle_group_key(struct ieee_param *param,
-                                   struct _adapter *padapter)
-{
-       union Keytype *gk = padapter->securitypriv.XGrpKey;
-       union Keytype *gtk = padapter->securitypriv.XGrptxmickey;
-       union Keytype *grk = padapter->securitypriv.XGrprxmickey;
-
-       if (param->u.crypt.idx > 0 &&
-           param->u.crypt.idx < 3) {
-               /* group key idx is 1 or 2 */
-               memcpy(gk[param->u.crypt.idx - 1].skey,
-                      param->u.crypt.key,
-                      (param->u.crypt.key_len > 16 ? 16 :
-                       param->u.crypt.key_len));
-               memcpy(gtk[param->u.crypt.idx - 1].skey,
-                      &param->u.crypt.key[16], 8);
-               memcpy(grk[param->u.crypt.idx - 1].skey,
-                      &param->u.crypt.key[24], 8);
-               padapter->securitypriv.binstallGrpkey = true;
-               r8712_set_key(padapter, &padapter->securitypriv,
-                       param->u.crypt.idx);
-               if (padapter->registrypriv.power_mgnt > PS_MODE_ACTIVE) {
-                       if (padapter->registrypriv.power_mgnt !=
-                           padapter->pwrctrlpriv.pwr_mode)
-                               mod_timer(&padapter->mlmepriv.dhcp_timer,
-                                         jiffies + msecs_to_jiffies(60000));
-               }
-       }
-}
-
-static noinline_for_stack char *translate_scan_wpa(struct iw_request_info *info,
-                                                  struct wlan_network *pnetwork,
-                                                  struct iw_event *iwe,
-                                                  char *start, char *stop)
-{
-       /* parsing WPA/WPA2 IE */
-       u8 buf[MAX_WPA_IE_LEN];
-       u8 wpa_ie[255], rsn_ie[255];
-       u16 wpa_len = 0, rsn_len = 0;
-       int n, i;
-
-       r8712_get_sec_ie(pnetwork->network.IEs,
-                        pnetwork->network.IELength, rsn_ie, &rsn_len,
-                        wpa_ie, &wpa_len);
-       if (wpa_len > 0) {
-               memset(buf, 0, MAX_WPA_IE_LEN);
-               n = sprintf(buf, "wpa_ie=");
-               for (i = 0; i < wpa_len; i++) {
-                       n += scnprintf(buf + n, MAX_WPA_IE_LEN - n,
-                                               "%02x", wpa_ie[i]);
-                       if (n == MAX_WPA_IE_LEN - 1)
-                               break;
-               }
-               memset(iwe, 0, sizeof(*iwe));
-               iwe->cmd = IWEVCUSTOM;
-               iwe->u.data.length = (u16)strlen(buf);
-               start = iwe_stream_add_point(info, start, stop,
-                       iwe, buf);
-               memset(iwe, 0, sizeof(*iwe));
-               iwe->cmd = IWEVGENIE;
-               iwe->u.data.length = (u16)wpa_len;
-               start = iwe_stream_add_point(info, start, stop,
-                       iwe, wpa_ie);
-       }
-       if (rsn_len > 0) {
-               memset(buf, 0, MAX_WPA_IE_LEN);
-               n = sprintf(buf, "rsn_ie=");
-               for (i = 0; i < rsn_len; i++) {
-                       n += scnprintf(buf + n, MAX_WPA_IE_LEN - n,
-                                               "%02x", rsn_ie[i]);
-                       if (n == MAX_WPA_IE_LEN - 1)
-                               break;
-               }
-               memset(iwe, 0, sizeof(*iwe));
-               iwe->cmd = IWEVCUSTOM;
-               iwe->u.data.length = strlen(buf);
-               start = iwe_stream_add_point(info, start, stop,
-                       iwe, buf);
-               memset(iwe, 0, sizeof(*iwe));
-               iwe->cmd = IWEVGENIE;
-               iwe->u.data.length = rsn_len;
-               start = iwe_stream_add_point(info, start, stop, iwe,
-                       rsn_ie);
-       }
-
-       return start;
-}
-
-static noinline_for_stack char *translate_scan_wps(struct iw_request_info *info,
-                                                  struct wlan_network *pnetwork,
-                                                  struct iw_event *iwe,
-                                                  char *start, char *stop)
-{
-       /* parsing WPS IE */
-       u8 wps_ie[512];
-       uint wps_ielen;
-
-       if (r8712_get_wps_ie(pnetwork->network.IEs,
-           pnetwork->network.IELength,
-           wps_ie, &wps_ielen)) {
-               if (wps_ielen > 2) {
-                       iwe->cmd = IWEVGENIE;
-                       iwe->u.data.length = (u16)wps_ielen;
-                       start = iwe_stream_add_point(info, start, stop,
-                               iwe, wps_ie);
-               }
-       }
-
-       return start;
-}
-
-static char *translate_scan(struct _adapter *padapter,
-                           struct iw_request_info *info,
-                           struct wlan_network *pnetwork,
-                           char *start, char *stop)
-{
-       struct iw_event iwe;
-       char *current_val;
-       s8 *p;
-       u32 i = 0, ht_ielen = 0;
-       u16     cap, ht_cap = false;
-       u8 rssi;
-
-       if ((pnetwork->network.Configuration.DSConfig < 1) ||
-           (pnetwork->network.Configuration.DSConfig > 14)) {
-               if (pnetwork->network.Configuration.DSConfig < 1)
-                       pnetwork->network.Configuration.DSConfig = 1;
-               else
-                       pnetwork->network.Configuration.DSConfig = 14;
-       }
-       /* AP MAC address */
-       iwe.cmd = SIOCGIWAP;
-       iwe.u.ap_addr.sa_family = ARPHRD_ETHER;
-       ether_addr_copy(iwe.u.ap_addr.sa_data, pnetwork->network.MacAddress);
-       start = iwe_stream_add_event(info, start, stop, &iwe, IW_EV_ADDR_LEN);
-       /* Add the ESSID */
-       iwe.cmd = SIOCGIWESSID;
-       iwe.u.data.flags = 1;
-       iwe.u.data.length = min_t(u32, pnetwork->network.Ssid.SsidLength, 32);
-       start = iwe_stream_add_point(info, start, stop, &iwe,
-                                    pnetwork->network.Ssid.Ssid);
-       /* parsing HT_CAP_IE */
-       p = r8712_get_ie(&pnetwork->network.IEs[12], WLAN_EID_HT_CAPABILITY,
-                        &ht_ielen, pnetwork->network.IELength - 12);
-       if (p && ht_ielen > 0)
-               ht_cap = true;
-       /* Add the protocol name */
-       iwe.cmd = SIOCGIWNAME;
-       if (r8712_is_cckratesonly_included(pnetwork->network.rates)) {
-               if (ht_cap)
-                       snprintf(iwe.u.name, IFNAMSIZ, "IEEE 802.11bn");
-               else
-                       snprintf(iwe.u.name, IFNAMSIZ, "IEEE 802.11b");
-       } else if (r8712_is_cckrates_included(pnetwork->network.rates)) {
-               if (ht_cap)
-                       snprintf(iwe.u.name, IFNAMSIZ, "IEEE 802.11bgn");
-               else
-                       snprintf(iwe.u.name, IFNAMSIZ, "IEEE 802.11bg");
-       } else {
-               if (ht_cap)
-                       snprintf(iwe.u.name, IFNAMSIZ, "IEEE 802.11gn");
-               else
-                       snprintf(iwe.u.name, IFNAMSIZ, "IEEE 802.11g");
-       }
-       start = iwe_stream_add_event(info, start, stop, &iwe, IW_EV_CHAR_LEN);
-       /* Add mode */
-       iwe.cmd = SIOCGIWMODE;
-       memcpy((u8 *)&cap, r8712_get_capability_from_ie(pnetwork->network.IEs),
-               2);
-       le16_to_cpus(&cap);
-       if (cap & (WLAN_CAPABILITY_IBSS | WLAN_CAPABILITY_ESS)) {
-               if (cap & WLAN_CAPABILITY_ESS)
-                       iwe.u.mode = (u32)IW_MODE_MASTER;
-               else
-                       iwe.u.mode = (u32)IW_MODE_ADHOC;
-               start = iwe_stream_add_event(info, start, stop, &iwe,
-                       IW_EV_UINT_LEN);
-       }
-       /* Add frequency/channel */
-       iwe.cmd = SIOCGIWFREQ;
-       {
-               /*  check legal index */
-               u8 dsconfig = pnetwork->network.Configuration.DSConfig;
-
-               if (dsconfig >= 1 && dsconfig <= sizeof(
-                   ieee80211_wlan_frequencies) / sizeof(long))
-                       iwe.u.freq.m =
-                               (s32)(ieee80211_wlan_frequencies
-                                     [dsconfig - 1] * 100000);
-               else
-                       iwe.u.freq.m = 0;
-       }
-       iwe.u.freq.e = (s16)1;
-       iwe.u.freq.i = (u8)pnetwork->network.Configuration.DSConfig;
-       start = iwe_stream_add_event(info, start, stop, &iwe,
-               IW_EV_FREQ_LEN);
-       /* Add encryption capability */
-       iwe.cmd = SIOCGIWENCODE;
-       if (cap & WLAN_CAPABILITY_PRIVACY)
-               iwe.u.data.flags = (u16)(IW_ENCODE_ENABLED |
-                                   IW_ENCODE_NOKEY);
-       else
-               iwe.u.data.flags = (u16)(IW_ENCODE_DISABLED);
-       iwe.u.data.length = (u16)0;
-       start = iwe_stream_add_point(info, start, stop, &iwe,
-               pnetwork->network.Ssid.Ssid);
-       /*Add basic and extended rates */
-       current_val = start + iwe_stream_lcp_len(info);
-       iwe.cmd = SIOCGIWRATE;
-       iwe.u.bitrate.fixed = 0;
-       iwe.u.bitrate.disabled = 0;
-       iwe.u.bitrate.value = 0;
-       i = 0;
-       while (pnetwork->network.rates[i] != 0) {
-               /* Bit rate given in 500 kb/s units */
-               iwe.u.bitrate.value = (pnetwork->network.rates[i++] &
-                                     0x7F) * 500000;
-               current_val = iwe_stream_add_value(info, start, current_val,
-                             stop, &iwe, IW_EV_PARAM_LEN);
-       }
-       /* Check if we added any event */
-       if ((current_val - start) > iwe_stream_lcp_len(info))
-               start = current_val;
-
-       start = translate_scan_wpa(info, pnetwork, &iwe, start, stop);
-
-       start = translate_scan_wps(info, pnetwork, &iwe, start, stop);
-
-       /* Add quality statistics */
-       iwe.cmd = IWEVQUAL;
-       rssi = r8712_signal_scale_mapping(pnetwork->network.Rssi);
-       /* we only update signal_level (signal strength) that is rssi. */
-       iwe.u.qual.updated = (u8)(IW_QUAL_QUAL_INVALID | IW_QUAL_LEVEL_UPDATED |
-                                 IW_QUAL_NOISE_INVALID);
-       iwe.u.qual.level = rssi;  /* signal strength */
-       iwe.u.qual.qual = 0; /* signal quality */
-       iwe.u.qual.noise = 0; /* noise level */
-       start = iwe_stream_add_event(info, start, stop, &iwe, IW_EV_QUAL_LEN);
-       /* how to translate rssi to ?% */
-       return start;
-}
-
-static int wpa_set_auth_algs(struct net_device *dev, u32 value)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       int ret = 0;
-
-       if ((value & AUTH_ALG_SHARED_KEY) && (value & AUTH_ALG_OPEN_SYSTEM)) {
-               padapter->securitypriv.ndisencryptstatus =
-                                                Ndis802_11Encryption1Enabled;
-               padapter->securitypriv.ndisauthtype =
-                                                Ndis802_11AuthModeAutoSwitch;
-               padapter->securitypriv.AuthAlgrthm = 3;
-       } else if (value & AUTH_ALG_SHARED_KEY) {
-               padapter->securitypriv.ndisencryptstatus =
-                                                Ndis802_11Encryption1Enabled;
-               padapter->securitypriv.ndisauthtype = Ndis802_11AuthModeShared;
-               padapter->securitypriv.AuthAlgrthm = 1;
-       } else if (value & AUTH_ALG_OPEN_SYSTEM) {
-               if (padapter->securitypriv.ndisauthtype <
-                                                Ndis802_11AuthModeWPAPSK) {
-                       padapter->securitypriv.ndisauthtype =
-                                                Ndis802_11AuthModeOpen;
-                       padapter->securitypriv.AuthAlgrthm = 0;
-               }
-       } else {
-               ret = -EINVAL;
-       }
-       return ret;
-}
-
-static int wpa_set_encryption(struct net_device *dev, struct ieee_param *param,
-                             u32 param_len)
-{
-       int ret = 0;
-       u32 wep_key_idx, wep_key_len = 0;
-       struct NDIS_802_11_WEP   *pwep = NULL;
-       struct _adapter *padapter = 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)
-               return -EINVAL;
-       if (!is_broadcast_ether_addr(param->sta_addr))
-               return -EINVAL;
-
-       if (param->u.crypt.idx >= WEP_KEYS) {
-               /* for large key indices, set the default (0) */
-               param->u.crypt.idx = 0;
-       }
-       if (strcmp(param->u.crypt.alg, "WEP") == 0) {
-               netdev_info(dev, "r8712u: %s: crypt.alg = WEP\n", __func__);
-               padapter->securitypriv.ndisencryptstatus =
-                            Ndis802_11Encryption1Enabled;
-               padapter->securitypriv.PrivacyAlgrthm = _WEP40_;
-               padapter->securitypriv.XGrpPrivacy = _WEP40_;
-               wep_key_idx = param->u.crypt.idx;
-               wep_key_len = param->u.crypt.key_len;
-               if (wep_key_idx >= WEP_KEYS)
-                       wep_key_idx = 0;
-               if (wep_key_len <= 0)
-                       return -EINVAL;
-
-               wep_key_len = wep_key_len <= 5 ? 5 : 13;
-               pwep = kzalloc(sizeof(*pwep), GFP_ATOMIC);
-               if (!pwep)
-                       return -ENOMEM;
-               pwep->KeyLength = wep_key_len;
-               pwep->Length = wep_key_len +
-                       offsetof(struct NDIS_802_11_WEP, KeyMaterial);
-               if (wep_key_len == 13) {
-                       padapter->securitypriv.PrivacyAlgrthm = _WEP104_;
-                       padapter->securitypriv.XGrpPrivacy = _WEP104_;
-               }
-               pwep->KeyIndex = wep_key_idx;
-               pwep->KeyIndex |= 0x80000000;
-               memcpy(pwep->KeyMaterial, param->u.crypt.key, pwep->KeyLength);
-               if (param->u.crypt.set_tx) {
-                       if (r8712_set_802_11_add_wep(padapter, pwep))
-                               ret = -EOPNOTSUPP;
-               } else {
-                       /* don't update "psecuritypriv->PrivacyAlgrthm" and
-                        * "psecuritypriv->PrivacyKeyIndex=keyid", but can
-                        * r8712_set_key to fw/cam
-                        */
-                       if (wep_key_idx >= WEP_KEYS) {
-                               ret = -EOPNOTSUPP;
-                               goto exit;
-                       }
-                       memcpy(&psecuritypriv->DefKey[wep_key_idx].skey[0],
-                              pwep->KeyMaterial,
-                              pwep->KeyLength);
-                       psecuritypriv->DefKeylen[wep_key_idx] =
-                               pwep->KeyLength;
-                       r8712_set_key(padapter, psecuritypriv, wep_key_idx);
-               }
-               goto exit;
-       }
-       if (padapter->securitypriv.AuthAlgrthm == 2) { /* 802_1x */
-               struct sta_info *psta, *pbcmc_sta;
-               struct sta_priv *pstapriv = &padapter->stapriv;
-               struct security_priv *spriv = &padapter->securitypriv;
-
-               if (check_fwstate(pmlmepriv, WIFI_STATION_STATE |
-                   WIFI_MP_STATE)) { /* sta mode */
-                       psta = r8712_get_stainfo(pstapriv,
-                                                get_bssid(pmlmepriv));
-                       if (psta) {
-                               psta->ieee8021x_blocked = false;
-                               if (spriv->ndisencryptstatus ==
-                                   Ndis802_11Encryption2Enabled ||
-                                   spriv->ndisencryptstatus ==
-                                   Ndis802_11Encryption3Enabled)
-                                       psta->XPrivacy = spriv->PrivacyAlgrthm;
-                               if (param->u.crypt.set_tx == 1)
-                                       handle_pairwise_key(psta, param,
-                                                           padapter);
-                               else /* group key */
-                                       handle_group_key(param, padapter);
-                       }
-                       pbcmc_sta = r8712_get_bcmc_stainfo(padapter);
-                       if (pbcmc_sta) {
-                               pbcmc_sta->ieee8021x_blocked = false;
-                               if (spriv->ndisencryptstatus ==
-                                   Ndis802_11Encryption2Enabled ||
-                                   spriv->ndisencryptstatus ==
-                                   Ndis802_11Encryption3Enabled)
-                                       pbcmc_sta->XPrivacy =
-                                               spriv->PrivacyAlgrthm;
-                       }
-               }
-       }
-exit:
-       kfree(pwep);
-       return ret;
-}
-
-static int r871x_set_wpa_ie(struct _adapter *padapter, char *pie,
-                           unsigned short ielen)
-{
-       u8 *buf = NULL;
-       int group_cipher = 0, pairwise_cipher = 0;
-       int ret = 0;
-
-       if (ielen > MAX_WPA_IE_LEN || !pie)
-               return -EINVAL;
-       if (ielen) {
-               buf = kmemdup(pie, ielen, GFP_ATOMIC);
-               if (!buf)
-                       return -ENOMEM;
-               if (ielen < RSN_HEADER_LEN) {
-                       ret  = -EINVAL;
-                       goto exit;
-               }
-               if (r8712_parse_wpa_ie(buf, ielen, &group_cipher,
-                   &pairwise_cipher) == 0) {
-                       padapter->securitypriv.AuthAlgrthm = 2;
-                       padapter->securitypriv.ndisauthtype =
-                                 Ndis802_11AuthModeWPAPSK;
-               }
-               if (r8712_parse_wpa2_ie(buf, ielen, &group_cipher,
-                   &pairwise_cipher) == 0) {
-                       padapter->securitypriv.AuthAlgrthm = 2;
-                       padapter->securitypriv.ndisauthtype =
-                                 Ndis802_11AuthModeWPA2PSK;
-               }
-               switch (group_cipher) {
-               case WPA_CIPHER_NONE:
-                       padapter->securitypriv.XGrpPrivacy =
-                                _NO_PRIVACY_;
-                       padapter->securitypriv.ndisencryptstatus =
-                                Ndis802_11EncryptionDisabled;
-                       break;
-               case WPA_CIPHER_WEP40:
-                       padapter->securitypriv.XGrpPrivacy = _WEP40_;
-                       padapter->securitypriv.ndisencryptstatus =
-                                Ndis802_11Encryption1Enabled;
-                       break;
-               case WPA_CIPHER_TKIP:
-                       padapter->securitypriv.XGrpPrivacy = _TKIP_;
-                       padapter->securitypriv.ndisencryptstatus =
-                                Ndis802_11Encryption2Enabled;
-                       break;
-               case WPA_CIPHER_CCMP:
-                       padapter->securitypriv.XGrpPrivacy = _AES_;
-                       padapter->securitypriv.ndisencryptstatus =
-                                Ndis802_11Encryption3Enabled;
-                       break;
-               case WPA_CIPHER_WEP104:
-                       padapter->securitypriv.XGrpPrivacy = _WEP104_;
-                       padapter->securitypriv.ndisencryptstatus =
-                                Ndis802_11Encryption1Enabled;
-                       break;
-               }
-               switch (pairwise_cipher) {
-               case WPA_CIPHER_NONE:
-                       padapter->securitypriv.PrivacyAlgrthm =
-                                _NO_PRIVACY_;
-                       padapter->securitypriv.ndisencryptstatus =
-                                Ndis802_11EncryptionDisabled;
-                       break;
-               case WPA_CIPHER_WEP40:
-                       padapter->securitypriv.PrivacyAlgrthm = _WEP40_;
-                       padapter->securitypriv.ndisencryptstatus =
-                                Ndis802_11Encryption1Enabled;
-                       break;
-               case WPA_CIPHER_TKIP:
-                       padapter->securitypriv.PrivacyAlgrthm = _TKIP_;
-                       padapter->securitypriv.ndisencryptstatus =
-                                Ndis802_11Encryption2Enabled;
-                       break;
-               case WPA_CIPHER_CCMP:
-                       padapter->securitypriv.PrivacyAlgrthm = _AES_;
-                       padapter->securitypriv.ndisencryptstatus =
-                                Ndis802_11Encryption3Enabled;
-                       break;
-               case WPA_CIPHER_WEP104:
-                       padapter->securitypriv.PrivacyAlgrthm = _WEP104_;
-                       padapter->securitypriv.ndisencryptstatus =
-                                Ndis802_11Encryption1Enabled;
-                       break;
-               }
-               padapter->securitypriv.wps_phase = false;
-               {/* set wps_ie */
-                       u16 cnt = 0;
-                       u8 eid, wps_oui[4] = {0x0, 0x50, 0xf2, 0x04};
-
-                       while (cnt < ielen) {
-                               eid = buf[cnt];
-
-                               if ((eid == WLAN_EID_VENDOR_SPECIFIC) &&
-                                   (!memcmp(&buf[cnt + 2], wps_oui, 4))) {
-                                       netdev_info(padapter->pnetdev, "r8712u: SET WPS_IE\n");
-                                       padapter->securitypriv.wps_ie_len =
-                                           ((buf[cnt + 1] + 2) <
-                                           (MAX_WPA_IE_LEN << 2)) ?
-                                           (buf[cnt + 1] + 2) :
-                                           (MAX_WPA_IE_LEN << 2);
-                                       memcpy(padapter->securitypriv.wps_ie,
-                                           &buf[cnt],
-                                           padapter->securitypriv.wps_ie_len);
-                                       padapter->securitypriv.wps_phase =
-                                                                true;
-                                       netdev_info(padapter->pnetdev, "r8712u: SET WPS_IE, wps_phase==true\n");
-                                       cnt += buf[cnt + 1] + 2;
-                                       break;
-                               }
-
-                               cnt += buf[cnt + 1] + 2;
-                       }
-               }
-       }
-exit:
-       kfree(buf);
-       return ret;
-}
-
-static int r8711_wx_get_name(struct net_device *dev,
-                            struct iw_request_info *info,
-                            union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       u32 ht_ielen = 0;
-       char *p;
-       u8 ht_cap = false;
-       struct  mlme_priv       *pmlmepriv = &padapter->mlmepriv;
-       struct wlan_bssid_ex *pcur_bss = &pmlmepriv->cur_network.network;
-       u8 *prates;
-
-       if (check_fwstate(pmlmepriv, _FW_LINKED | WIFI_ADHOC_MASTER_STATE) ==
-           true) {
-               /* parsing HT_CAP_IE */
-               p = r8712_get_ie(&pcur_bss->IEs[12], WLAN_EID_HT_CAPABILITY,
-                                &ht_ielen, pcur_bss->IELength - 12);
-               if (p && ht_ielen > 0)
-                       ht_cap = true;
-               prates = pcur_bss->rates;
-               if (r8712_is_cckratesonly_included(prates)) {
-                       if (ht_cap)
-                               snprintf(wrqu->name, IFNAMSIZ,
-                                        "IEEE 802.11bn");
-                       else
-                               snprintf(wrqu->name, IFNAMSIZ,
-                                        "IEEE 802.11b");
-               } else if (r8712_is_cckrates_included(prates)) {
-                       if (ht_cap)
-                               snprintf(wrqu->name, IFNAMSIZ,
-                                        "IEEE 802.11bgn");
-                       else
-                               snprintf(wrqu->name, IFNAMSIZ,
-                                        "IEEE 802.11bg");
-               } else {
-                       if (ht_cap)
-                               snprintf(wrqu->name, IFNAMSIZ,
-                                        "IEEE 802.11gn");
-                       else
-                               snprintf(wrqu->name, IFNAMSIZ,
-                                        "IEEE 802.11g");
-               }
-       } else {
-               snprintf(wrqu->name, IFNAMSIZ, "unassociated");
-       }
-       return 0;
-}
-
-static const long frequency_list[] = {
-       2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, 2452, 2457, 2462,
-       2467, 2472, 2484, 4915, 4920, 4925, 4935, 4940, 4945, 4960, 4980,
-       5035, 5040, 5045, 5055, 5060, 5080, 5170, 5180, 5190, 5200, 5210,
-       5220, 5230, 5240, 5260, 5280, 5300, 5320, 5500, 5520, 5540, 5560,
-       5580, 5600, 5620, 5640, 5660, 5680, 5700, 5745, 5765, 5785, 5805,
-       5825
-};
-
-static int r8711_wx_set_freq(struct net_device *dev,
-                            struct iw_request_info *info,
-                            union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct iw_freq *fwrq = &wrqu->freq;
-       int rc = 0;
-
-/* If setting by frequency, convert to a channel */
-       if ((fwrq->e == 1) &&
-         (fwrq->m >= 241200000) &&
-         (fwrq->m <= 248700000)) {
-               int f = fwrq->m / 100000;
-               int c = 0;
-
-               while ((c < 14) && (f != frequency_list[c]))
-                       c++;
-               fwrq->e = 0;
-               fwrq->m = c + 1;
-       }
-       /* Setting by channel number */
-       if ((fwrq->m > 14) || (fwrq->e > 0)) {
-               rc = -EOPNOTSUPP;
-       } else {
-               int channel = fwrq->m;
-
-               if ((channel < 1) || (channel > 14)) {
-                       rc = -EINVAL;
-               } else {
-                       /* Yes ! We can set it !!! */
-                       padapter->registrypriv.channel = channel;
-               }
-       }
-       return rc;
-}
-
-static int r8711_wx_get_freq(struct net_device *dev,
-                            struct iw_request_info *info,
-                            union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct wlan_bssid_ex *pcur_bss = &pmlmepriv->cur_network.network;
-
-       if (!check_fwstate(pmlmepriv, _FW_LINKED))
-               return -ENOLINK;
-
-       wrqu->freq.m = ieee80211_wlan_frequencies[
-                      pcur_bss->Configuration.DSConfig - 1] * 100000;
-       wrqu->freq.e = 1;
-       wrqu->freq.i = pcur_bss->Configuration.DSConfig;
-
-       return 0;
-}
-
-static int r8711_wx_set_mode(struct net_device *dev,
-                            struct iw_request_info *a,
-                            union iwreq_data *wrqu, char *b)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       enum NDIS_802_11_NETWORK_INFRASTRUCTURE networkType;
-
-       switch (wrqu->mode) {
-       case IW_MODE_AUTO:
-               networkType = Ndis802_11AutoUnknown;
-               break;
-       case IW_MODE_ADHOC:
-               networkType = Ndis802_11IBSS;
-               break;
-       case IW_MODE_MASTER:
-               networkType = Ndis802_11APMode;
-               break;
-       case IW_MODE_INFRA:
-               networkType = Ndis802_11Infrastructure;
-               break;
-       default:
-               return -EINVAL;
-       }
-       if (Ndis802_11APMode == networkType)
-               r8712_setopmode_cmd(padapter, networkType);
-       else
-               r8712_setopmode_cmd(padapter, Ndis802_11AutoUnknown);
-
-       r8712_set_802_11_infrastructure_mode(padapter, networkType);
-       return 0;
-}
-
-static int r8711_wx_get_mode(struct net_device *dev, struct iw_request_info *a,
-                            union iwreq_data *wrqu, char *b)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-       if (check_fwstate(pmlmepriv, WIFI_STATION_STATE))
-               wrqu->mode = IW_MODE_INFRA;
-       else if (check_fwstate(pmlmepriv,
-                WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE))
-               wrqu->mode = IW_MODE_ADHOC;
-       else if (check_fwstate(pmlmepriv, WIFI_AP_STATE))
-               wrqu->mode = IW_MODE_MASTER;
-       else
-               wrqu->mode = IW_MODE_AUTO;
-       return 0;
-}
-
-static int r871x_wx_set_pmkid(struct net_device *dev,
-                            struct iw_request_info *a,
-                            union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct security_priv *psecuritypriv = &padapter->securitypriv;
-       struct iw_pmksa *pPMK = (struct iw_pmksa *) extra;
-       struct RT_PMKID_LIST *pl = psecuritypriv->PMKIDList;
-       u8 strZeroMacAddress[ETH_ALEN] = {0x00};
-       u8 strIssueBssid[ETH_ALEN] = {0x00};
-       u8 j, blInserted = false;
-       int intReturn = false;
-
-/*
- *     There are the BSSID information in the bssid.sa_data array.
- *     If cmd is IW_PMKSA_FLUSH, it means the wpa_supplicant wants to clear
- *     all the PMKID information. If cmd is IW_PMKSA_ADD, it means the
- *     wpa_supplicant wants to add a PMKID/BSSID to driver.
- *     If cmd is IW_PMKSA_REMOVE, it means the wpa_supplicant wants to
- *     remove a PMKID/BSSID from driver.
- */
-       if (!pPMK)
-               return -EINVAL;
-       memcpy(strIssueBssid, pPMK->bssid.sa_data, ETH_ALEN);
-       switch (pPMK->cmd) {
-       case IW_PMKSA_ADD:
-               if (!memcmp(strIssueBssid, strZeroMacAddress, ETH_ALEN))
-                       return intReturn;
-               intReturn = true;
-               blInserted = false;
-               /* overwrite PMKID */
-               for (j = 0; j < NUM_PMKID_CACHE; j++) {
-                       if (!memcmp(pl[j].Bssid, strIssueBssid, ETH_ALEN)) {
-                               /* BSSID is matched, the same AP => rewrite
-                                * with new PMKID.
-                                */
-                               netdev_info(dev, "r8712u: %s: BSSID exists in the PMKList.\n",
-                                           __func__);
-                               memcpy(pl[j].PMKID, pPMK->pmkid, IW_PMKID_LEN);
-                               pl[j].bUsed = true;
-                               psecuritypriv->PMKIDIndex = j + 1;
-                               blInserted = true;
-                               break;
-                       }
-               }
-               if (!blInserted) {
-                       /* Find a new entry */
-                       netdev_info(dev, "r8712u: %s: Use the new entry index = %d for this PMKID.\n",
-                                   __func__, psecuritypriv->PMKIDIndex);
-                       memcpy(pl[psecuritypriv->PMKIDIndex].Bssid,
-                              strIssueBssid, ETH_ALEN);
-                       memcpy(pl[psecuritypriv->PMKIDIndex].PMKID,
-                              pPMK->pmkid, IW_PMKID_LEN);
-                       pl[psecuritypriv->PMKIDIndex].bUsed = true;
-                       psecuritypriv->PMKIDIndex++;
-                       if (psecuritypriv->PMKIDIndex == NUM_PMKID_CACHE)
-                               psecuritypriv->PMKIDIndex = 0;
-               }
-               break;
-       case IW_PMKSA_REMOVE:
-               intReturn = true;
-               for (j = 0; j < NUM_PMKID_CACHE; j++) {
-                       if (!memcmp(pl[j].Bssid, strIssueBssid, ETH_ALEN)) {
-                               /* BSSID is matched, the same AP => Remove
-                                * this PMKID information and reset it.
-                                */
-                               eth_zero_addr(pl[j].Bssid);
-                               pl[j].bUsed = false;
-                               break;
-                       }
-               }
-               break;
-       case IW_PMKSA_FLUSH:
-               memset(psecuritypriv->PMKIDList, 0,
-                       sizeof(struct RT_PMKID_LIST) * NUM_PMKID_CACHE);
-               psecuritypriv->PMKIDIndex = 0;
-               intReturn = true;
-               break;
-       default:
-               netdev_info(dev, "r8712u: %s: unknown Command\n", __func__);
-               intReturn = false;
-               break;
-       }
-       return intReturn;
-}
-
-static int r8711_wx_get_sens(struct net_device *dev,
-                            struct iw_request_info *info,
-                            union iwreq_data *wrqu, char *extra)
-{
-       wrqu->sens.value = 0;
-       wrqu->sens.fixed = 0;   /* no auto select */
-       wrqu->sens.disabled = 1;
-       return 0;
-}
-
-static int r8711_wx_get_range(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *extra)
-{
-       struct iw_range *range = (struct iw_range *)extra;
-       u16 val;
-       int i;
-
-       wrqu->data.length = sizeof(*range);
-       memset(range, 0, sizeof(*range));
-       /* Let's try to keep this struct in the same order as in
-        * linux/include/wireless.h
-        */
-
-       /* TODO: See what values we can set, and remove the ones we can't
-        * set, or fill them with some default data.
-        */
-       /* ~5 Mb/s real (802.11b) */
-       range->throughput = 5 * 1000 * 1000;
-       /* TODO: 8711 sensitivity ? */
-       /* signal level threshold range */
-       /* percent values between 0 and 100. */
-       range->max_qual.qual = 100;
-       range->max_qual.level = 100;
-       range->max_qual.noise = 100;
-       range->max_qual.updated = 7; /* Updated all three */
-       range->avg_qual.qual = 92; /* > 8% missed beacons is 'bad' */
-       /* TODO: Find real 'good' to 'bad' threshold value for RSSI */
-       range->avg_qual.level = 0x100 - 78;
-       range->avg_qual.noise = 0;
-       range->avg_qual.updated = 7; /* Updated all three */
-       range->num_bitrates = RATE_COUNT;
-       for (i = 0; i < RATE_COUNT && i < IW_MAX_BITRATES; i++)
-               range->bitrate[i] = rtl8180_rates[i];
-       range->min_frag = MIN_FRAG_THRESHOLD;
-       range->max_frag = MAX_FRAG_THRESHOLD;
-       range->pm_capa = 0;
-       range->we_version_compiled = WIRELESS_EXT;
-       range->we_version_source = 16;
-       range->num_channels = 14;
-       for (i = 0, val = 0; i < 14; i++) {
-               /* Include only legal frequencies for some countries */
-               range->freq[val].i = i + 1;
-               range->freq[val].m = ieee80211_wlan_frequencies[i] * 100000;
-               range->freq[val].e = 1;
-               val++;
-               if (val == IW_MAX_FREQUENCIES)
-                       break;
-       }
-       range->num_frequency = val;
-       range->enc_capa = IW_ENC_CAPA_WPA |
-                         IW_ENC_CAPA_WPA2 |
-                         IW_ENC_CAPA_CIPHER_TKIP |
-                         IW_ENC_CAPA_CIPHER_CCMP;
-       return 0;
-}
-
-static int r8711_wx_get_rate(struct net_device *dev,
-                            struct iw_request_info *info,
-                            union iwreq_data *wrqu, char *extra);
-
-static int r871x_wx_set_priv(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *awrq,
-                               char *extra)
-{
-       int ret = 0, len = 0;
-       char *ext;
-       struct _adapter *padapter = netdev_priv(dev);
-       struct iw_point *dwrq = (struct iw_point *)awrq;
-
-       len = dwrq->length;
-       ext = strndup_user(dwrq->pointer, len);
-       if (IS_ERR(ext))
-               return PTR_ERR(ext);
-
-       if (!strcasecmp(ext, "RSSI")) {
-               /*Return received signal strength indicator in -db for */
-               /* current AP */
-               /*<ssid> Rssi xx */
-               struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
-               struct wlan_network *pcur_network = &pmlmepriv->cur_network;
-               /*static u8 xxxx; */
-               if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-                       sprintf(ext, "%s rssi %d",
-                               pcur_network->network.Ssid.Ssid,
-                               /*(xxxx=xxxx+10) */
-                               ((padapter->recvpriv.fw_rssi) >> 1) - 95
-                               /*pcur_network->network.Rssi */
-                               );
-               } else {
-                       sprintf(ext, "OK");
-               }
-       } else if (!strcasecmp(ext, "LINKSPEED")) {
-               /*Return link speed in MBPS */
-               /*LinkSpeed xx */
-               union iwreq_data wrqd;
-               int ret_inner;
-               int mbps;
-
-               ret_inner = r8711_wx_get_rate(dev, info, &wrqd, extra);
-               if (ret_inner != 0)
-                       mbps = 0;
-               else
-                       mbps = wrqd.bitrate.value / 1000000;
-               sprintf(ext, "LINKSPEED %d", mbps);
-       } else if (!strcasecmp(ext, "MACADDR")) {
-               /*Return mac address of the station */
-               /* Macaddr = xx:xx:xx:xx:xx:xx */
-               sprintf(ext, "MACADDR = %pM", dev->dev_addr);
-       } else if (!strcasecmp(ext, "SCAN-ACTIVE")) {
-               /*Set scan type to active */
-               /*OK if successful */
-               struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-               pmlmepriv->passive_mode = 1;
-               sprintf(ext, "OK");
-       } else if (!strcasecmp(ext, "SCAN-PASSIVE")) {
-               /*Set scan type to passive */
-               /*OK if successful */
-               struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-               pmlmepriv->passive_mode = 0;
-               sprintf(ext, "OK");
-       } else if (!strncmp(ext, "DCE-E", 5)) {
-               /*Set scan type to passive */
-               /*OK if successful */
-               r8712_disconnectCtrlEx_cmd(padapter
-                       , 1 /*u32 enableDrvCtrl */
-                       , 5 /*u32 tryPktCnt */
-                       , 100 /*u32 tryPktInterval */
-                       , 5000 /*u32 firstStageTO */
-               );
-               sprintf(ext, "OK");
-       } else if (!strncmp(ext, "DCE-D", 5)) {
-               /*Set scan type to passive */
-               /*OK if successfu */
-               r8712_disconnectCtrlEx_cmd(padapter
-                       , 0 /*u32 enableDrvCtrl */
-                       , 5 /*u32 tryPktCnt */
-                       , 100 /*u32 tryPktInterval */
-                       , 5000 /*u32 firstStageTO */
-               );
-               sprintf(ext, "OK");
-       } else {
-               netdev_info(dev, "r8712u: %s: unknown Command %s.\n",
-                           __func__, ext);
-               goto FREE_EXT;
-       }
-       if (copy_to_user(dwrq->pointer, ext,
-                               min(dwrq->length, (__u16)(strlen(ext) + 1))))
-               ret = -EFAULT;
-
-FREE_EXT:
-       kfree(ext);
-       return ret;
-}
-
-/* set bssid flow
- * s1. set_802_11_infrastructure_mode()
- * s2. set_802_11_authentication_mode()
- * s3. set_802_11_encryption_mode()
- * s4. set_802_11_bssid()
- *
- * This function intends to handle the Set AP command, which specifies the
- * MAC# of a preferred Access Point.
- * Currently, the request comes via Wireless Extensions' SIOCSIWAP ioctl.
- *
- * For this operation to succeed, there is no need for the interface to be up.
- *
- */
-static int r8711_wx_set_wap(struct net_device *dev,
-                        struct iw_request_info *info,
-                        union iwreq_data *awrq,
-                        char *extra)
-{
-       int ret = -EINPROGRESS;
-       struct _adapter *padapter = netdev_priv(dev);
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct  __queue *queue = &pmlmepriv->scanned_queue;
-       struct sockaddr *temp = (struct sockaddr *)awrq;
-       unsigned long irqL;
-       struct list_head *phead;
-       u8 *dst_bssid;
-       struct wlan_network *pnetwork = NULL;
-       enum NDIS_802_11_AUTHENTICATION_MODE    authmode;
-
-       if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
-               return -EBUSY;
-       if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING))
-               return ret;
-       if (temp->sa_family != ARPHRD_ETHER)
-               return -EINVAL;
-       authmode = padapter->securitypriv.ndisauthtype;
-       spin_lock_irqsave(&queue->lock, irqL);
-       phead = &queue->queue;
-       pmlmepriv->pscanned = phead->next;
-       while (1) {
-               if (end_of_queue_search(phead, pmlmepriv->pscanned))
-                       break;
-               pnetwork = container_of(pmlmepriv->pscanned,
-                                       struct wlan_network, list);
-               pmlmepriv->pscanned = pmlmepriv->pscanned->next;
-               dst_bssid = pnetwork->network.MacAddress;
-               if (!memcmp(dst_bssid, temp->sa_data, ETH_ALEN)) {
-                       r8712_set_802_11_infrastructure_mode(padapter,
-                           pnetwork->network.InfrastructureMode);
-                       break;
-               }
-       }
-       spin_unlock_irqrestore(&queue->lock, irqL);
-       if (!ret) {
-               if (!r8712_set_802_11_authentication_mode(padapter, authmode)) {
-                       ret = -ENOMEM;
-               } else {
-                       if (!r8712_set_802_11_bssid(padapter, temp->sa_data))
-                               ret = -1;
-               }
-       }
-       return ret;
-}
-
-static int r8711_wx_get_wap(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct wlan_bssid_ex *pcur_bss = &pmlmepriv->cur_network.network;
-
-       wrqu->ap_addr.sa_family = ARPHRD_ETHER;
-       if (check_fwstate(pmlmepriv, _FW_LINKED | WIFI_ADHOC_MASTER_STATE |
-                                    WIFI_AP_STATE))
-               ether_addr_copy(wrqu->ap_addr.sa_data, pcur_bss->MacAddress);
-       else
-               eth_zero_addr(wrqu->ap_addr.sa_data);
-       return 0;
-}
-
-static int r871x_wx_set_mlme(struct net_device *dev,
-                            struct iw_request_info *info,
-                            union iwreq_data *wrqu, char *extra)
-{
-       int ret = 0;
-       struct _adapter *padapter = netdev_priv(dev);
-       struct iw_mlme *mlme = (struct iw_mlme *) extra;
-
-       if (!mlme)
-               return -1;
-       switch (mlme->cmd) {
-       case IW_MLME_DEAUTH:
-               if (!r8712_set_802_11_disassociate(padapter))
-                       ret = -1;
-               break;
-       case IW_MLME_DISASSOC:
-               if (!r8712_set_802_11_disassociate(padapter))
-                       ret = -1;
-               break;
-       default:
-               return -EOPNOTSUPP;
-       }
-       return ret;
-}
-
-/*
- *
- * This function intends to handle the Set Scan command.
- * Currently, the request comes via Wireless Extensions' SIOCSIWSCAN ioctl.
- *
- * For this operation to succeed, the interface is brought Up beforehand.
- *
- */
-static int r8711_wx_set_scan(struct net_device *dev,
-                       struct iw_request_info *a,
-                       union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       u8 status = true;
-
-       if (padapter->driver_stopped) {
-               netdev_info(dev, "In %s: driver_stopped=%d\n",
-                           __func__, padapter->driver_stopped);
-               return -1;
-       }
-       if (!padapter->bup)
-               return -ENETDOWN;
-       if (!padapter->hw_init_completed)
-               return -1;
-       if ((check_fwstate(pmlmepriv, _FW_UNDER_SURVEY | _FW_UNDER_LINKING)) ||
-           (pmlmepriv->sitesurveyctrl.traffic_busy))
-               return 0;
-       if (wrqu->data.length == sizeof(struct iw_scan_req)) {
-               struct iw_scan_req *req = (struct iw_scan_req *)extra;
-
-               if (wrqu->data.flags & IW_SCAN_THIS_ESSID) {
-                       struct ndis_802_11_ssid ssid;
-                       unsigned long irqL;
-                       u32 len = min_t(u8, req->essid_len, IW_ESSID_MAX_SIZE);
-
-                       memset((unsigned char *)&ssid, 0,
-                                sizeof(struct ndis_802_11_ssid));
-                       memcpy(ssid.Ssid, req->essid, len);
-                       ssid.SsidLength = len;
-                       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-                       if ((check_fwstate(pmlmepriv, _FW_UNDER_SURVEY |
-                            _FW_UNDER_LINKING)) ||
-                           (pmlmepriv->sitesurveyctrl.traffic_busy)) {
-                               if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING))
-                                       status = false;
-                       } else {
-                               status = r8712_sitesurvey_cmd(padapter, &ssid);
-                       }
-                       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-               }
-       } else {
-               status = r8712_set_802_11_bssid_list_scan(padapter);
-       }
-       if (!status)
-               return -1;
-       return 0;
-}
-
-static int r8711_wx_get_scan(struct net_device *dev,
-                               struct iw_request_info *a,
-                               union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct  __queue *queue = &pmlmepriv->scanned_queue;
-       struct wlan_network *pnetwork = NULL;
-       unsigned long irqL;
-       struct list_head *plist, *phead;
-       char *ev = extra;
-       char *stop = ev + wrqu->data.length;
-       u32 ret = 0, cnt = 0;
-
-       if (padapter->driver_stopped)
-               return -EINVAL;
-       while (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY |
-                            _FW_UNDER_LINKING)) {
-               msleep(30);
-               cnt++;
-               if (cnt > 100)
-                       break;
-       }
-       spin_lock_irqsave(&queue->lock, irqL);
-       phead = &queue->queue;
-       plist = phead->next;
-       while (1) {
-               if (end_of_queue_search(phead, plist))
-                       break;
-               if ((stop - ev) < SCAN_ITEM_SIZE) {
-                       ret = -E2BIG;
-                       break;
-               }
-               pnetwork = container_of(plist, struct wlan_network, list);
-               ev = translate_scan(padapter, a, pnetwork, ev, stop);
-               plist = plist->next;
-       }
-       spin_unlock_irqrestore(&queue->lock, irqL);
-       wrqu->data.length = ev - extra;
-       wrqu->data.flags = 0;
-       return ret;
-}
-
-/* set ssid flow
- * s1. set_802_11_infrastructure_mode()
- * s2. set_802_11_authenticaion_mode()
- * s3. set_802_11_encryption_mode()
- * s4. set_802_11_ssid()
- *
- * This function intends to handle the Set ESSID command.
- * Currently, the request comes via the Wireless Extensions' SIOCSIWESSID ioctl.
- *
- * For this operation to succeed, there is no need for the interface to be Up.
- *
- */
-static int r8711_wx_set_essid(struct net_device *dev,
-                               struct iw_request_info *a,
-                               union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct  __queue *queue = &pmlmepriv->scanned_queue;
-       struct wlan_network *pnetwork = NULL;
-       enum NDIS_802_11_AUTHENTICATION_MODE    authmode;
-       struct ndis_802_11_ssid ndis_ssid;
-       u8 *dst_ssid, *src_ssid;
-       struct list_head *phead;
-       u32 len;
-
-       if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
-               return -EBUSY;
-       if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING))
-               return 0;
-       if (wrqu->essid.length > IW_ESSID_MAX_SIZE)
-               return -E2BIG;
-       authmode = padapter->securitypriv.ndisauthtype;
-       if (wrqu->essid.flags && wrqu->essid.length) {
-               len = (wrqu->essid.length < IW_ESSID_MAX_SIZE) ?
-                      wrqu->essid.length : IW_ESSID_MAX_SIZE;
-               memset(&ndis_ssid, 0, sizeof(struct ndis_802_11_ssid));
-               ndis_ssid.SsidLength = len;
-               memcpy(ndis_ssid.Ssid, extra, len);
-               src_ssid = ndis_ssid.Ssid;
-               phead = &queue->queue;
-               pmlmepriv->pscanned = phead->next;
-               while (1) {
-                       if (end_of_queue_search(phead, pmlmepriv->pscanned))
-                               break;
-                       pnetwork = container_of(pmlmepriv->pscanned,
-                                               struct wlan_network, list);
-                       pmlmepriv->pscanned = pmlmepriv->pscanned->next;
-                       dst_ssid = pnetwork->network.Ssid.Ssid;
-                       if ((!memcmp(dst_ssid, src_ssid, ndis_ssid.SsidLength))
-                           && (pnetwork->network.Ssid.SsidLength ==
-                            ndis_ssid.SsidLength)) {
-                               if (check_fwstate(pmlmepriv,
-                                                       WIFI_ADHOC_STATE)) {
-                                       if (pnetwork->network.
-                                               InfrastructureMode
-                                               !=
-                                               padapter->mlmepriv.
-                                               cur_network.network.
-                                               InfrastructureMode)
-                                               continue;
-                               }
-
-                               r8712_set_802_11_infrastructure_mode(
-                                    padapter,
-                                    pnetwork->network.InfrastructureMode);
-                               break;
-                       }
-               }
-               r8712_set_802_11_authentication_mode(padapter, authmode);
-               r8712_set_802_11_ssid(padapter, &ndis_ssid);
-       }
-       return -EINPROGRESS;
-}
-
-static int r8711_wx_get_essid(struct net_device *dev,
-                               struct iw_request_info *a,
-                               union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct wlan_bssid_ex *pcur_bss = &pmlmepriv->cur_network.network;
-       u32 len, ret = 0;
-
-       if (check_fwstate(pmlmepriv, _FW_LINKED | WIFI_ADHOC_MASTER_STATE)) {
-               len = pcur_bss->Ssid.SsidLength;
-               wrqu->essid.length = len;
-               memcpy(extra, pcur_bss->Ssid.Ssid, len);
-               wrqu->essid.flags = 1;
-       } else {
-               ret = -ENOLINK;
-       }
-       return ret;
-}
-
-static int r8711_wx_set_rate(struct net_device *dev,
-                               struct iw_request_info *a,
-                               union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       u32 target_rate = wrqu->bitrate.value;
-       u32 fixed = wrqu->bitrate.fixed;
-       u32 ratevalue = 0;
-       u8 datarates[NumRates];
-       u8 mpdatarate[NumRates] = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0xff};
-       int i;
-
-       if (target_rate == -1) {
-               ratevalue = 11;
-               goto set_rate;
-       }
-       target_rate = target_rate / 100000;
-       switch (target_rate) {
-       case 10:
-               ratevalue = 0;
-               break;
-       case 20:
-               ratevalue = 1;
-               break;
-       case 55:
-               ratevalue = 2;
-               break;
-       case 60:
-               ratevalue = 3;
-               break;
-       case 90:
-               ratevalue = 4;
-               break;
-       case 110:
-               ratevalue = 5;
-               break;
-       case 120:
-               ratevalue = 6;
-               break;
-       case 180:
-               ratevalue = 7;
-               break;
-       case 240:
-               ratevalue = 8;
-               break;
-       case 360:
-               ratevalue = 9;
-               break;
-       case 480:
-               ratevalue = 10;
-               break;
-       case 540:
-               ratevalue = 11;
-               break;
-       default:
-               ratevalue = 11;
-               break;
-       }
-set_rate:
-       for (i = 0; i < NumRates; i++) {
-               if (ratevalue == mpdatarate[i]) {
-                       datarates[i] = mpdatarate[i];
-                       if (fixed == 0)
-                               break;
-               } else {
-                       datarates[i] = 0xff;
-               }
-       }
-       return r8712_setdatarate_cmd(padapter, datarates);
-}
-
-static int r8711_wx_get_rate(struct net_device *dev,
-                            struct iw_request_info *info,
-                            union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct wlan_bssid_ex *pcur_bss = &pmlmepriv->cur_network.network;
-       struct ieee80211_ht_cap *pht_capie;
-       unsigned char rf_type = padapter->registrypriv.rf_config;
-       int i;
-       u8 *p;
-       u16 rate, max_rate = 0, ht_cap = false;
-       u32 ht_ielen = 0;
-       u8 bw_40MHz = 0, short_GI = 0;
-       u16 mcs_rate = 0;
-
-       i = 0;
-       if (!check_fwstate(pmlmepriv, _FW_LINKED | WIFI_ADHOC_MASTER_STATE))
-               return -ENOLINK;
-       p = r8712_get_ie(&pcur_bss->IEs[12], WLAN_EID_HT_CAPABILITY, &ht_ielen,
-                        pcur_bss->IELength - 12);
-       if (p && ht_ielen > 0) {
-               ht_cap = true;
-               pht_capie = (struct ieee80211_ht_cap *)(p + 2);
-               memcpy(&mcs_rate, &pht_capie->mcs, 2);
-               bw_40MHz = (le16_to_cpu(pht_capie->cap_info) &
-                           IEEE80211_HT_CAP_SUP_WIDTH_20_40) ? 1 : 0;
-               short_GI = (le16_to_cpu(pht_capie->cap_info) &
-                           (IEEE80211_HT_CAP_SGI_20 |
-                           IEEE80211_HT_CAP_SGI_40)) ? 1 : 0;
-       }
-       while ((pcur_bss->rates[i] != 0) &&
-              (pcur_bss->rates[i] != 0xFF)) {
-               rate = pcur_bss->rates[i] & 0x7F;
-               if (rate > max_rate)
-                       max_rate = rate;
-               wrqu->bitrate.fixed = 0;        /* no auto select */
-               wrqu->bitrate.value = rate * 500000;
-               i++;
-       }
-       if (ht_cap) {
-               if (mcs_rate & 0x8000 /* MCS15 */
-                   &&
-                   rf_type == RTL8712_RF_2T2R)
-                       max_rate = (bw_40MHz) ? ((short_GI) ? 300 : 270) :
-                       ((short_GI) ? 144 : 130);
-               else /* default MCS7 */
-                       max_rate = (bw_40MHz) ? ((short_GI) ? 150 : 135) :
-                       ((short_GI) ? 72 : 65);
-               max_rate *= 2; /* Mbps/2 */
-       }
-       wrqu->bitrate.value = max_rate * 500000;
-       return 0;
-}
-
-static int r8711_wx_get_rts(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-
-       wrqu->rts.value = padapter->registrypriv.rts_thresh;
-       wrqu->rts.fixed = 0;    /* no auto select */
-       return 0;
-}
-
-static int r8711_wx_set_frag(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-
-       if (wrqu->frag.disabled) {
-               padapter->xmitpriv.frag_len = MAX_FRAG_THRESHOLD;
-       } else {
-               if (wrqu->frag.value < MIN_FRAG_THRESHOLD ||
-                   wrqu->frag.value > MAX_FRAG_THRESHOLD)
-                       return -EINVAL;
-               padapter->xmitpriv.frag_len = wrqu->frag.value & ~0x1;
-       }
-       return 0;
-}
-
-static int r8711_wx_get_frag(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-
-       wrqu->frag.value = padapter->xmitpriv.frag_len;
-       wrqu->frag.fixed = 0;   /* no auto select */
-       return 0;
-}
-
-static int r8711_wx_get_retry(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *extra)
-{
-       wrqu->retry.value = 7;
-       wrqu->retry.fixed = 0;  /* no auto select */
-       wrqu->retry.disabled = 1;
-       return 0;
-}
-
-static int r8711_wx_set_enc(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *keybuf)
-{
-       u32 key;
-       u32 keyindex_provided;
-       struct NDIS_802_11_WEP   wep;
-       enum NDIS_802_11_AUTHENTICATION_MODE authmode;
-       struct iw_point *erq = &wrqu->encoding;
-       struct _adapter *padapter = netdev_priv(dev);
-
-       key = erq->flags & IW_ENCODE_INDEX;
-       memset(&wep, 0, sizeof(struct NDIS_802_11_WEP));
-       if (erq->flags & IW_ENCODE_DISABLED) {
-               netdev_info(dev, "r8712u: %s: EncryptionDisabled\n", __func__);
-               padapter->securitypriv.ndisencryptstatus =
-                                Ndis802_11EncryptionDisabled;
-               padapter->securitypriv.PrivacyAlgrthm = _NO_PRIVACY_;
-               padapter->securitypriv.XGrpPrivacy = _NO_PRIVACY_;
-               padapter->securitypriv.AuthAlgrthm = 0; /* open system */
-               authmode = Ndis802_11AuthModeOpen;
-               padapter->securitypriv.ndisauthtype = authmode;
-               return 0;
-       }
-       if (key) {
-               if (key > WEP_KEYS)
-                       return -EINVAL;
-               key--;
-               keyindex_provided = 1;
-       } else {
-               keyindex_provided = 0;
-               key = padapter->securitypriv.PrivacyKeyIndex;
-       }
-       /* set authentication mode */
-       if (erq->flags & IW_ENCODE_OPEN) {
-               netdev_info(dev, "r8712u: %s: IW_ENCODE_OPEN\n", __func__);
-               padapter->securitypriv.ndisencryptstatus =
-                                Ndis802_11Encryption1Enabled;
-               padapter->securitypriv.AuthAlgrthm = 0; /* open system */
-               padapter->securitypriv.PrivacyAlgrthm = _NO_PRIVACY_;
-               padapter->securitypriv.XGrpPrivacy = _NO_PRIVACY_;
-               authmode = Ndis802_11AuthModeOpen;
-               padapter->securitypriv.ndisauthtype = authmode;
-       } else if (erq->flags & IW_ENCODE_RESTRICTED) {
-               netdev_info(dev,
-                               "r8712u: %s: IW_ENCODE_RESTRICTED\n", __func__);
-               padapter->securitypriv.ndisencryptstatus =
-                                Ndis802_11Encryption1Enabled;
-               padapter->securitypriv.AuthAlgrthm = 1; /* shared system */
-               padapter->securitypriv.PrivacyAlgrthm = _WEP40_;
-               padapter->securitypriv.XGrpPrivacy = _WEP40_;
-               authmode = Ndis802_11AuthModeShared;
-               padapter->securitypriv.ndisauthtype = authmode;
-       } else {
-               padapter->securitypriv.ndisencryptstatus =
-                                Ndis802_11Encryption1Enabled;
-               padapter->securitypriv.AuthAlgrthm = 0; /* open system */
-               padapter->securitypriv.PrivacyAlgrthm = _NO_PRIVACY_;
-               padapter->securitypriv.XGrpPrivacy = _NO_PRIVACY_;
-               authmode = Ndis802_11AuthModeOpen;
-               padapter->securitypriv.ndisauthtype = authmode;
-       }
-       wep.KeyIndex = key;
-       if (erq->length > 0) {
-               wep.KeyLength = erq->length <= 5 ? 5 : 13;
-               wep.Length = wep.KeyLength +
-                            offsetof(struct NDIS_802_11_WEP, KeyMaterial);
-       } else {
-               wep.KeyLength = 0;
-               if (keyindex_provided == 1) { /* set key_id only, no given
-                                              * KeyMaterial(erq->length==0).
-                                              */
-                       padapter->securitypriv.PrivacyKeyIndex = key;
-                       switch (padapter->securitypriv.DefKeylen[key]) {
-                       case 5:
-                               padapter->securitypriv.PrivacyAlgrthm =
-                                                _WEP40_;
-                               break;
-                       case 13:
-                               padapter->securitypriv.PrivacyAlgrthm =
-                                                _WEP104_;
-                               break;
-                       default:
-                               padapter->securitypriv.PrivacyAlgrthm =
-                                                _NO_PRIVACY_;
-                               break;
-                       }
-                       return 0;
-               }
-       }
-       wep.KeyIndex |= 0x80000000;     /* transmit key */
-       memcpy(wep.KeyMaterial, keybuf, wep.KeyLength);
-       if (r8712_set_802_11_add_wep(padapter, &wep))
-               return -EOPNOTSUPP;
-       return 0;
-}
-
-static int r8711_wx_get_enc(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *keybuf)
-{
-       uint key;
-       struct _adapter *padapter = netdev_priv(dev);
-       struct iw_point *erq = &wrqu->encoding;
-       struct  mlme_priv       *pmlmepriv = &padapter->mlmepriv;
-       union Keytype *dk = padapter->securitypriv.DefKey;
-
-       if (!check_fwstate(pmlmepriv, _FW_LINKED)) {
-               if (!check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
-                       erq->length = 0;
-                       erq->flags |= IW_ENCODE_DISABLED;
-                       return 0;
-               }
-       }
-       key = erq->flags & IW_ENCODE_INDEX;
-       if (key) {
-               if (key > WEP_KEYS)
-                       return -EINVAL;
-               key--;
-       } else {
-               key = padapter->securitypriv.PrivacyKeyIndex;
-       }
-       erq->flags = key + 1;
-       switch (padapter->securitypriv.ndisencryptstatus) {
-       case Ndis802_11EncryptionNotSupported:
-       case Ndis802_11EncryptionDisabled:
-               erq->length = 0;
-               erq->flags |= IW_ENCODE_DISABLED;
-               break;
-       case Ndis802_11Encryption1Enabled:
-               erq->length = padapter->securitypriv.DefKeylen[key];
-               if (erq->length) {
-                       memcpy(keybuf, dk[key].skey,
-                              padapter->securitypriv.DefKeylen[key]);
-                       erq->flags |= IW_ENCODE_ENABLED;
-                       if (padapter->securitypriv.ndisauthtype ==
-                           Ndis802_11AuthModeOpen)
-                               erq->flags |= IW_ENCODE_OPEN;
-                       else if (padapter->securitypriv.ndisauthtype ==
-                                Ndis802_11AuthModeShared)
-                               erq->flags |= IW_ENCODE_RESTRICTED;
-               } else {
-                       erq->length = 0;
-                       erq->flags |= IW_ENCODE_DISABLED;
-               }
-               break;
-       case Ndis802_11Encryption2Enabled:
-       case Ndis802_11Encryption3Enabled:
-               erq->length = 16;
-               erq->flags |= (IW_ENCODE_ENABLED | IW_ENCODE_OPEN |
-                              IW_ENCODE_NOKEY);
-               break;
-       default:
-               erq->length = 0;
-               erq->flags |= IW_ENCODE_DISABLED;
-               break;
-       }
-       return 0;
-}
-
-static int r8711_wx_get_power(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *extra)
-{
-       wrqu->power.value = 0;
-       wrqu->power.fixed = 0;  /* no auto select */
-       wrqu->power.disabled = 1;
-       return 0;
-}
-
-static int r871x_wx_set_gen_ie(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-
-       return r871x_set_wpa_ie(padapter, extra, wrqu->data.length);
-}
-
-static int r871x_wx_set_auth(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct iw_param *param = (struct iw_param *)&wrqu->param;
-       int paramid;
-       int paramval;
-       int ret = 0;
-
-       paramid = param->flags & IW_AUTH_INDEX;
-       paramval = param->value;
-       switch (paramid) {
-       case IW_AUTH_WPA_VERSION:
-               break;
-       case IW_AUTH_CIPHER_PAIRWISE:
-               break;
-       case IW_AUTH_CIPHER_GROUP:
-               break;
-       case IW_AUTH_KEY_MGMT:
-               /*
-                *  ??? does not use these parameters
-                */
-               break;
-       case IW_AUTH_TKIP_COUNTERMEASURES:
-               if (paramval) {
-                       /* wpa_supplicant is enabling tkip countermeasure. */
-                       padapter->securitypriv.btkip_countermeasure = true;
-               } else {
-                       /* wpa_supplicant is disabling tkip countermeasure. */
-                       padapter->securitypriv.btkip_countermeasure = false;
-               }
-               break;
-       case IW_AUTH_DROP_UNENCRYPTED:
-               /* HACK:
-                *
-                * wpa_supplicant calls set_wpa_enabled when the driver
-                * is loaded and unloaded, regardless of if WPA is being
-                * used.  No other calls are made which can be used to
-                * determine if encryption will be used or not prior to
-                * association being expected.  If encryption is not being
-                * used, drop_unencrypted is set to false, else true -- we
-                * can use this to determine if the CAP_PRIVACY_ON bit should
-                * be set.
-                */
-               if (padapter->securitypriv.ndisencryptstatus ==
-                   Ndis802_11Encryption1Enabled) {
-                       /* it means init value, or using wep,
-                        * ndisencryptstatus =
-                        *      Ndis802_11Encryption1Enabled,
-                        * then it needn't reset it;
-                        */
-                       break;
-               }
-
-               if (paramval) {
-                       padapter->securitypriv.ndisencryptstatus =
-                                  Ndis802_11EncryptionDisabled;
-                       padapter->securitypriv.PrivacyAlgrthm =
-                                 _NO_PRIVACY_;
-                       padapter->securitypriv.XGrpPrivacy =
-                                 _NO_PRIVACY_;
-                       padapter->securitypriv.AuthAlgrthm = 0;
-                       padapter->securitypriv.ndisauthtype =
-                                 Ndis802_11AuthModeOpen;
-               }
-               break;
-       case IW_AUTH_80211_AUTH_ALG:
-               ret = wpa_set_auth_algs(dev, (u32)paramval);
-               break;
-       case IW_AUTH_WPA_ENABLED:
-               break;
-       case IW_AUTH_RX_UNENCRYPTED_EAPOL:
-               break;
-       case IW_AUTH_PRIVACY_INVOKED:
-               break;
-       default:
-               return -EOPNOTSUPP;
-       }
-
-       return ret;
-}
-
-static int r871x_wx_set_enc_ext(struct net_device *dev,
-                            struct iw_request_info *info,
-                            union iwreq_data *wrqu, char *extra)
-{
-       struct iw_point *pencoding = &wrqu->encoding;
-       struct iw_encode_ext *pext = (struct iw_encode_ext *)extra;
-       struct ieee_param *param = NULL;
-       char *alg_name;
-       u32 param_len;
-       int ret = 0;
-
-       switch (pext->alg) {
-       case IW_ENCODE_ALG_NONE:
-               alg_name = "none";
-               break;
-       case IW_ENCODE_ALG_WEP:
-               alg_name = "WEP";
-               break;
-       case IW_ENCODE_ALG_TKIP:
-               alg_name = "TKIP";
-               break;
-       case IW_ENCODE_ALG_CCMP:
-               alg_name = "CCMP";
-               break;
-       default:
-               return -EINVAL;
-       }
-
-       param_len = sizeof(struct ieee_param) + pext->key_len;
-       param = kzalloc(param_len, GFP_ATOMIC);
-       if (!param)
-               return -ENOMEM;
-       param->cmd = IEEE_CMD_SET_ENCRYPTION;
-       eth_broadcast_addr(param->sta_addr);
-       strscpy((char *)param->u.crypt.alg, alg_name, IEEE_CRYPT_ALG_NAME_LEN);
-       if (pext->ext_flags & IW_ENCODE_EXT_GROUP_KEY)
-               param->u.crypt.set_tx = 0;
-       if (pext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY)
-               param->u.crypt.set_tx = 1;
-       param->u.crypt.idx = (pencoding->flags & 0x00FF) - 1;
-       if (pext->ext_flags & IW_ENCODE_EXT_RX_SEQ_VALID)
-               memcpy(param->u.crypt.seq, pext->rx_seq, 8);
-       if (pext->key_len) {
-               param->u.crypt.key_len = pext->key_len;
-               memcpy(param + 1, pext + 1, pext->key_len);
-       }
-       ret = wpa_set_encryption(dev, param, param_len);
-       kfree(param);
-       return ret;
-}
-
-static int r871x_wx_get_nick(struct net_device *dev,
-                            struct iw_request_info *info,
-                            union iwreq_data *wrqu, char *extra)
-{
-       if (extra) {
-               wrqu->data.length = 8;
-               wrqu->data.flags = 1;
-               memcpy(extra, "rtl_wifi", 8);
-       }
-       return 0;
-}
-
-static int r8711_wx_read32(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *keybuf)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       u32 addr;
-       u32 data32;
-
-       get_user(addr, (u32 __user *)wrqu->data.pointer);
-       data32 = r8712_read32(padapter, addr);
-       put_user(data32, (u32 __user *)wrqu->data.pointer);
-       wrqu->data.length = (data32 & 0xffff0000) >> 16;
-       wrqu->data.flags = data32 & 0xffff;
-       get_user(addr, (u32 __user *)wrqu->data.pointer);
-       return 0;
-}
-
-static int r8711_wx_write32(struct net_device *dev,
-                                struct iw_request_info *info,
-                                union iwreq_data *wrqu, char *keybuf)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       u32 addr;
-       u32 data32;
-
-       get_user(addr, (u32 __user *)wrqu->data.pointer);
-       data32 = ((u32)wrqu->data.length << 16) | (u32)wrqu->data.flags;
-       r8712_write32(padapter, addr, data32);
-       return 0;
-}
-
-static int dummy(struct net_device *dev,
-               struct iw_request_info *a,
-               union iwreq_data *wrqu, char *b)
-{
-       return -EINVAL;
-}
-
-static int r8711_drvext_hdl(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *extra)
-{
-       return 0;
-}
-
-static int r871x_mp_ioctl_hdl(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct iw_point *p = &wrqu->data;
-       struct oid_par_priv oid_par;
-       struct mp_ioctl_handler *phandler;
-       struct mp_ioctl_param *poidparam;
-       unsigned long BytesRead, BytesWritten, BytesNeeded;
-       u8 *pparmbuf, bset;
-       u16 len;
-       uint status;
-       int ret = 0;
-
-       if ((!p->length) || (!p->pointer))
-               return -EINVAL;
-
-       bset = (u8)(p->flags & 0xFFFF);
-       len = p->length;
-       pparmbuf = memdup_user(p->pointer, len);
-       if (IS_ERR(pparmbuf))
-               return PTR_ERR(pparmbuf);
-
-       poidparam = (struct mp_ioctl_param *)pparmbuf;
-       if (poidparam->subcode >= MAX_MP_IOCTL_SUBCODE) {
-               ret = -EINVAL;
-               goto _r871x_mp_ioctl_hdl_exit;
-       }
-       phandler = mp_ioctl_hdl + poidparam->subcode;
-       if ((phandler->paramsize != 0) &&
-           (poidparam->len < phandler->paramsize)) {
-               ret = -EINVAL;
-               goto _r871x_mp_ioctl_hdl_exit;
-       }
-       if (phandler->oid == 0 && phandler->handler) {
-               status = phandler->handler(&oid_par);
-       } else if (phandler->handler) {
-               oid_par.adapter_context = padapter;
-               oid_par.oid = phandler->oid;
-               oid_par.information_buf = poidparam->data;
-               oid_par.information_buf_len = poidparam->len;
-               oid_par.dbg = 0;
-               BytesWritten = 0;
-               BytesNeeded = 0;
-               if (bset) {
-                       oid_par.bytes_rw = &BytesRead;
-                       oid_par.bytes_needed = &BytesNeeded;
-                       oid_par.type_of_oid = SET_OID;
-               } else {
-                       oid_par.bytes_rw = &BytesWritten;
-                       oid_par.bytes_needed = &BytesNeeded;
-                       oid_par.type_of_oid = QUERY_OID;
-               }
-               status = phandler->handler(&oid_par);
-               /* todo:check status, BytesNeeded, etc. */
-       } else {
-               netdev_info(dev, "r8712u: %s: err!, subcode=%d, oid=%d, handler=%p\n",
-                           __func__, poidparam->subcode, phandler->oid,
-                           phandler->handler);
-               ret = -EFAULT;
-               goto _r871x_mp_ioctl_hdl_exit;
-       }
-       if (bset == 0x00) { /* query info */
-               if (copy_to_user(p->pointer, pparmbuf, len))
-                       ret = -EFAULT;
-       }
-       if (status) {
-               ret = -EFAULT;
-               goto _r871x_mp_ioctl_hdl_exit;
-       }
-_r871x_mp_ioctl_hdl_exit:
-       kfree(pparmbuf);
-       return ret;
-}
-
-static int r871x_get_ap_info(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct  __queue *queue = &pmlmepriv->scanned_queue;
-       struct iw_point *pdata = &wrqu->data;
-       struct wlan_network *pnetwork = NULL;
-       u32 cnt = 0, wpa_ielen;
-       unsigned long irqL;
-       struct list_head *plist, *phead;
-       unsigned char *pbuf;
-       u8 bssid[ETH_ALEN];
-       char data[33];
-
-       if (padapter->driver_stopped || !pdata)
-               return -EINVAL;
-       while (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY |
-                            _FW_UNDER_LINKING)) {
-               msleep(30);
-               cnt++;
-               if (cnt > 100)
-                       break;
-       }
-       pdata->flags = 0;
-       if (pdata->length < 32)
-               return -EINVAL;
-       if (copy_from_user(data, pdata->pointer, 32))
-               return -EINVAL;
-       data[32] = 0;
-
-       spin_lock_irqsave(&pmlmepriv->scanned_queue.lock, irqL);
-       phead = &queue->queue;
-       plist = phead->next;
-       while (1) {
-               if (end_of_queue_search(phead, plist))
-                       break;
-               pnetwork = container_of(plist, struct wlan_network, list);
-               if (!mac_pton(data, bssid)) {
-                       netdev_info(dev, "r8712u: Invalid BSSID '%s'.\n",
-                                   (u8 *)data);
-                       spin_unlock_irqrestore(&pmlmepriv->scanned_queue.lock,
-                                              irqL);
-                       return -EINVAL;
-               }
-               netdev_info(dev, "r8712u: BSSID:%pM\n", bssid);
-               if (ether_addr_equal(bssid, pnetwork->network.MacAddress)) {
-                       /* BSSID match, then check if supporting wpa/wpa2 */
-                       pbuf = r8712_get_wpa_ie(&pnetwork->network.IEs[12],
-                              &wpa_ielen, pnetwork->network.IELength - 12);
-                       if (pbuf && (wpa_ielen > 0)) {
-                               pdata->flags = 1;
-                               break;
-                       }
-                       pbuf = r8712_get_wpa2_ie(&pnetwork->network.IEs[12],
-                              &wpa_ielen, pnetwork->network.IELength - 12);
-                       if (pbuf && (wpa_ielen > 0)) {
-                               pdata->flags = 2;
-                               break;
-                       }
-               }
-               plist = plist->next;
-       }
-       spin_unlock_irqrestore(&pmlmepriv->scanned_queue.lock, irqL);
-       if (pdata->length >= 34) {
-               if (copy_to_user((u8 __user *)pdata->pointer + 32,
-                   (u8 *)&pdata->flags, 1))
-                       return -EINVAL;
-       }
-       return 0;
-}
-
-static int r871x_set_pid(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct iw_point *pdata = &wrqu->data;
-
-       if (padapter->driver_stopped || !pdata)
-               return -EINVAL;
-       if (copy_from_user(&padapter->pid, pdata->pointer, sizeof(int)))
-               return -EINVAL;
-       return 0;
-}
-
-static int r871x_set_chplan(struct net_device *dev,
-                               struct iw_request_info *info,
-                               union iwreq_data *wrqu, char *extra)
-{
-       int ret = 0;
-       struct _adapter *padapter = netdev_priv(dev);
-       struct iw_point *pdata = &wrqu->data;
-       int ch_plan = -1;
-
-       if (padapter->driver_stopped || !pdata) {
-               ret = -EINVAL;
-               goto exit;
-       }
-       ch_plan = (int)*extra;
-       r8712_set_chplan_cmd(padapter, ch_plan);
-
-exit:
-
-       return ret;
-}
-
-static int r871x_wps_start(struct net_device *dev,
-                          struct iw_request_info *info,
-                          union iwreq_data *wrqu, char *extra)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct iw_point *pdata = &wrqu->data;
-       u32   u32wps_start = 0;
-
-       if (padapter->driver_stopped || !pdata)
-               return -EINVAL;
-       if (copy_from_user((void *)&u32wps_start, pdata->pointer, 4))
-               return -EFAULT;
-       if (u32wps_start == 0)
-               u32wps_start = *extra;
-       if (u32wps_start == 1) /* WPS Start */
-               padapter->ledpriv.LedControlHandler(padapter,
-                          LED_CTL_START_WPS);
-       else if (u32wps_start == 2) /* WPS Stop because of wps success */
-               padapter->ledpriv.LedControlHandler(padapter,
-                          LED_CTL_STOP_WPS);
-       else if (u32wps_start == 3) /* WPS Stop because of wps fail */
-               padapter->ledpriv.LedControlHandler(padapter,
-                          LED_CTL_STOP_WPS_FAIL);
-       return 0;
-}
-
-static int wpa_set_param(struct net_device *dev, u8 name, u32 value)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-
-       switch (name) {
-       case IEEE_PARAM_WPA_ENABLED:
-               padapter->securitypriv.AuthAlgrthm = 2; /* 802.1x */
-               switch ((value) & 0xff) {
-               case 1: /* WPA */
-                       padapter->securitypriv.ndisauthtype =
-                               Ndis802_11AuthModeWPAPSK; /* WPA_PSK */
-                       padapter->securitypriv.ndisencryptstatus =
-                               Ndis802_11Encryption2Enabled;
-                       break;
-               case 2: /* WPA2 */
-                       padapter->securitypriv.ndisauthtype =
-                               Ndis802_11AuthModeWPA2PSK; /* WPA2_PSK */
-                       padapter->securitypriv.ndisencryptstatus =
-                               Ndis802_11Encryption3Enabled;
-                       break;
-               }
-               break;
-       case IEEE_PARAM_TKIP_COUNTERMEASURES:
-               break;
-       case IEEE_PARAM_DROP_UNENCRYPTED:
-               /* HACK:
-                *
-                * wpa_supplicant calls set_wpa_enabled when the driver
-                * is loaded and unloaded, regardless of if WPA is being
-                * used.  No other calls are made which can be used to
-                * determine if encryption will be used or not prior to
-                * association being expected.  If encryption is not being
-                * used, drop_unencrypted is set to false, else true -- we
-                * can use this to determine if the CAP_PRIVACY_ON bit should
-                * be set.
-                */
-               break;
-       case IEEE_PARAM_PRIVACY_INVOKED:
-               break;
-       case IEEE_PARAM_AUTH_ALGS:
-               return wpa_set_auth_algs(dev, value);
-       case IEEE_PARAM_IEEE_802_1X:
-               break;
-       case IEEE_PARAM_WPAX_SELECT:
-               /* added for WPA2 mixed mode */
-               break;
-       default:
-               return -EOPNOTSUPP;
-       }
-       return 0;
-}
-
-static int wpa_mlme(struct net_device *dev, u32 command, u32 reason)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-
-       switch (command) {
-       case IEEE_MLME_STA_DEAUTH:
-               if (!r8712_set_802_11_disassociate(padapter))
-                       return -1;
-               break;
-       case IEEE_MLME_STA_DISASSOC:
-               if (!r8712_set_802_11_disassociate(padapter))
-                       return -1;
-               break;
-       default:
-               return -EOPNOTSUPP;
-       }
-       return 0;
-}
-
-static int wpa_supplicant_ioctl(struct net_device *dev, struct iw_point *p)
-{
-       struct ieee_param *param;
-       int ret = 0;
-       struct _adapter *padapter = netdev_priv(dev);
-
-       if (p->length < sizeof(struct ieee_param) || !p->pointer)
-               return -EINVAL;
-       param = memdup_user(p->pointer, p->length);
-       if (IS_ERR(param))
-               return PTR_ERR(param);
-       switch (param->cmd) {
-       case IEEE_CMD_SET_WPA_PARAM:
-               ret = wpa_set_param(dev, param->u.wpa_param.name,
-                     param->u.wpa_param.value);
-               break;
-       case IEEE_CMD_SET_WPA_IE:
-               ret =  r871x_set_wpa_ie(padapter, (char *)param->u.wpa_ie.data,
-                      (u16)param->u.wpa_ie.len);
-               break;
-       case IEEE_CMD_SET_ENCRYPTION:
-               ret = wpa_set_encryption(dev, param, p->length);
-               break;
-       case IEEE_CMD_MLME:
-               ret = wpa_mlme(dev, param->u.mlme.command,
-                     param->u.mlme.reason_code);
-               break;
-       default:
-               ret = -EOPNOTSUPP;
-               break;
-       }
-       if (ret == 0 && copy_to_user(p->pointer, param, p->length))
-               ret = -EFAULT;
-       kfree(param);
-       return ret;
-}
-
-/* based on "driver_ipw" and for hostapd */
-int r871x_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
-{
-       struct iwreq *wrq = (struct iwreq *)rq;
-
-       switch (cmd) {
-       case RTL_IOCTL_WPA_SUPPLICANT:
-               return wpa_supplicant_ioctl(dev, &wrq->u.data);
-       default:
-               return -EOPNOTSUPP;
-       }
-       return 0;
-}
-
-static iw_handler r8711_handlers[] = {
-       NULL,                           /* SIOCSIWCOMMIT */
-       r8711_wx_get_name,              /* SIOCGIWNAME */
-       dummy,                          /* SIOCSIWNWID */
-       dummy,                          /* SIOCGIWNWID */
-       r8711_wx_set_freq,              /* SIOCSIWFREQ */
-       r8711_wx_get_freq,              /* SIOCGIWFREQ */
-       r8711_wx_set_mode,              /* SIOCSIWMODE */
-       r8711_wx_get_mode,              /* SIOCGIWMODE */
-       dummy,                          /* SIOCSIWSENS */
-       r8711_wx_get_sens,              /* SIOCGIWSENS */
-       NULL,                           /* SIOCSIWRANGE */
-       r8711_wx_get_range,             /* SIOCGIWRANGE */
-       r871x_wx_set_priv,              /* SIOCSIWPRIV */
-       NULL,                           /* SIOCGIWPRIV */
-       NULL,                           /* SIOCSIWSTATS */
-       NULL,                           /* SIOCGIWSTATS */
-       dummy,                          /* SIOCSIWSPY */
-       dummy,                          /* SIOCGIWSPY */
-       NULL,                           /* SIOCGIWTHRSPY */
-       NULL,                           /* SIOCWIWTHRSPY */
-       r8711_wx_set_wap,               /* SIOCSIWAP */
-       r8711_wx_get_wap,               /* SIOCGIWAP */
-       r871x_wx_set_mlme,              /* request MLME operation;
-                                        *  uses struct iw_mlme
-                                        */
-       dummy,                          /* SIOCGIWAPLIST -- deprecated */
-       r8711_wx_set_scan,              /* SIOCSIWSCAN */
-       r8711_wx_get_scan,              /* SIOCGIWSCAN */
-       r8711_wx_set_essid,             /* SIOCSIWESSID */
-       r8711_wx_get_essid,             /* SIOCGIWESSID */
-       dummy,                          /* SIOCSIWNICKN */
-       r871x_wx_get_nick,              /* SIOCGIWNICKN */
-       NULL,                           /* -- hole -- */
-       NULL,                           /* -- hole -- */
-       r8711_wx_set_rate,              /* SIOCSIWRATE */
-       r8711_wx_get_rate,              /* SIOCGIWRATE */
-       dummy,                          /* SIOCSIWRTS */
-       r8711_wx_get_rts,               /* SIOCGIWRTS */
-       r8711_wx_set_frag,              /* SIOCSIWFRAG */
-       r8711_wx_get_frag,              /* SIOCGIWFRAG */
-       dummy,                          /* SIOCSIWTXPOW */
-       dummy,                          /* SIOCGIWTXPOW */
-       dummy,                          /* SIOCSIWRETRY */
-       r8711_wx_get_retry,             /* SIOCGIWRETRY */
-       r8711_wx_set_enc,               /* SIOCSIWENCODE */
-       r8711_wx_get_enc,               /* SIOCGIWENCODE */
-       dummy,                          /* SIOCSIWPOWER */
-       r8711_wx_get_power,             /* SIOCGIWPOWER */
-       NULL,                           /*---hole---*/
-       NULL,                           /*---hole---*/
-       r871x_wx_set_gen_ie,            /* SIOCSIWGENIE */
-       NULL,                           /* SIOCGIWGENIE */
-       r871x_wx_set_auth,              /* SIOCSIWAUTH */
-       NULL,                           /* SIOCGIWAUTH */
-       r871x_wx_set_enc_ext,           /* SIOCSIWENCODEEXT */
-       NULL,                           /* SIOCGIWENCODEEXT */
-       r871x_wx_set_pmkid,             /* SIOCSIWPMKSA */
-       NULL,                           /*---hole---*/
-};
-
-static const struct iw_priv_args r8711_private_args[] = {
-       {
-               SIOCIWFIRSTPRIV + 0x0,
-               IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "read32"
-       },
-       {
-               SIOCIWFIRSTPRIV + 0x1,
-               IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "write32"
-       },
-       {
-               SIOCIWFIRSTPRIV + 0x2, 0, 0, "driver_ext"
-       },
-       {
-               SIOCIWFIRSTPRIV + 0x3, 0, 0, "mp_ioctl"
-       },
-       {
-               SIOCIWFIRSTPRIV + 0x4,
-               IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "apinfo"
-       },
-       {
-               SIOCIWFIRSTPRIV + 0x5,
-               IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "setpid"
-       },
-       {
-               SIOCIWFIRSTPRIV + 0x6,
-               IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "wps_start"
-       },
-       {
-               SIOCIWFIRSTPRIV + 0x7,
-               IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "chplan"
-       }
-};
-
-static iw_handler r8711_private_handler[] = {
-       r8711_wx_read32,
-       r8711_wx_write32,
-       r8711_drvext_hdl,
-       r871x_mp_ioctl_hdl,
-       r871x_get_ap_info, /*for MM DTV platform*/
-       r871x_set_pid,
-       r871x_wps_start,
-       r871x_set_chplan
-};
-
-static struct iw_statistics *r871x_get_wireless_stats(struct net_device *dev)
-{
-       struct _adapter *padapter = netdev_priv(dev);
-       struct iw_statistics *piwstats = &padapter->iwstats;
-       int tmp_level = 0;
-       int tmp_qual = 0;
-       int tmp_noise = 0;
-
-       if (check_fwstate(&padapter->mlmepriv, _FW_LINKED) != true) {
-               piwstats->qual.qual = 0;
-               piwstats->qual.level = 0;
-               piwstats->qual.noise = 0;
-       } else {
-               /* show percentage, we need transfer dbm to original value. */
-               tmp_level = padapter->recvpriv.fw_rssi;
-               tmp_qual = padapter->recvpriv.signal;
-               tmp_noise = padapter->recvpriv.noise;
-               piwstats->qual.level = tmp_level;
-               piwstats->qual.qual = tmp_qual;
-               piwstats->qual.noise = tmp_noise;
-       }
-       piwstats->qual.updated = IW_QUAL_ALL_UPDATED;
-       return &padapter->iwstats;
-}
-
-struct iw_handler_def r871x_handlers_def = {
-       .standard = r8711_handlers,
-       .num_standard = ARRAY_SIZE(r8711_handlers),
-       .private = r8711_private_handler,
-       .private_args = (struct iw_priv_args *)r8711_private_args,
-       .num_private = ARRAY_SIZE(r8711_private_handler),
-       .num_private_args = sizeof(r8711_private_args) /
-                           sizeof(struct iw_priv_args),
-       .get_wireless_stats = r871x_get_wireless_stats
-};
diff --git a/drivers/staging/rtl8712/rtl871x_ioctl_rtl.c b/drivers/staging/rtl8712/rtl871x_ioctl_rtl.c
deleted file mode 100644 (file)
index 2b53933..0000000
+++ /dev/null
@@ -1,519 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl871x_ioctl_rtl.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define  _RTL871X_IOCTL_RTL_C_
-
-#include <linux/rndis.h>
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "wlan_bssdef.h"
-#include "wifi.h"
-#include "rtl871x_ioctl.h"
-#include "rtl871x_ioctl_set.h"
-#include "rtl871x_ioctl_rtl.h"
-#include "mp_custom_oid.h"
-#include "rtl871x_mp.h"
-#include "rtl871x_mp_ioctl.h"
-
-uint oid_rt_get_signal_quality_hdl(struct oid_par_priv *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_small_packet_crc_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *padapter = poid_par_priv->adapter_context;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len >=  sizeof(u32)) {
-               *(u32 *)poid_par_priv->information_buf =
-                               padapter->recvpriv.rx_smallpacket_crcerr;
-               *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       } else {
-               return RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_middle_packet_crc_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *padapter = poid_par_priv->adapter_context;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len >=  sizeof(u32)) {
-               *(u32 *)poid_par_priv->information_buf =
-                               padapter->recvpriv.rx_middlepacket_crcerr;
-               *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       } else {
-               return RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_large_packet_crc_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *padapter = poid_par_priv->adapter_context;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len >=  sizeof(u32)) {
-               *(u32 *)poid_par_priv->information_buf =
-                                padapter->recvpriv.rx_largepacket_crcerr;
-               *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       } else {
-               return RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_tx_retry_hdl(struct oid_par_priv *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_rx_retry_hdl(struct oid_par_priv *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_rx_total_packet_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *padapter = poid_par_priv->adapter_context;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len >=  sizeof(u32)) {
-               *(u32 *)poid_par_priv->information_buf =
-                                        padapter->recvpriv.rx_pkts +
-                                        padapter->recvpriv.rx_drop;
-               *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       } else {
-               return RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_tx_beacon_ok_hdl(struct oid_par_priv *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_tx_beacon_err_hdl(struct oid_par_priv *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_rx_icv_err_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *padapter = poid_par_priv->adapter_context;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len >= sizeof(u32)) {
-               *(uint *)poid_par_priv->information_buf =
-                                        padapter->recvpriv.rx_icv_err;
-               *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       } else {
-               return RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_set_encryption_algorithm_hdl(struct oid_par_priv
-                                               *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_preamble_mode_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *padapter = poid_par_priv->adapter_context;
-       u32 preamblemode = 0;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len >= sizeof(u32)) {
-               if (padapter->registrypriv.preamble == PREAMBLE_LONG)
-                       preamblemode = 0;
-               else if (padapter->registrypriv.preamble == PREAMBLE_AUTO)
-                       preamblemode = 1;
-               else if (padapter->registrypriv.preamble == PREAMBLE_SHORT)
-                       preamblemode = 2;
-               *(u32 *)poid_par_priv->information_buf = preamblemode;
-               *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       } else {
-               return RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_ap_ip_hdl(struct oid_par_priv *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_channelplan_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *padapter = poid_par_priv->adapter_context;
-       struct eeprom_priv *peeprompriv = &padapter->eeprompriv;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       *(u16 *)poid_par_priv->information_buf = peeprompriv->channel_plan;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_set_channelplan_hdl(struct oid_par_priv
-                                      *poid_par_priv)
-{
-       struct _adapter *padapter = poid_par_priv->adapter_context;
-       struct eeprom_priv *peeprompriv = &padapter->eeprompriv;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       peeprompriv->channel_plan = *(u16 *)poid_par_priv->information_buf;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_set_preamble_mode_hdl(struct oid_par_priv
-                                        *poid_par_priv)
-{
-       struct _adapter *padapter = poid_par_priv->adapter_context;
-       u32 preamblemode = 0;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len >= sizeof(u32)) {
-               preamblemode = *(u32 *)poid_par_priv->information_buf;
-               if (preamblemode == 0)
-                       padapter->registrypriv.preamble = PREAMBLE_LONG;
-               else if (preamblemode == 1)
-                       padapter->registrypriv.preamble = PREAMBLE_AUTO;
-               else if (preamblemode == 2)
-                       padapter->registrypriv.preamble = PREAMBLE_SHORT;
-               *(u32 *)poid_par_priv->information_buf = preamblemode;
-               *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       } else {
-               return RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_set_bcn_intvl_hdl(struct oid_par_priv *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_dedicate_probe_hdl(struct oid_par_priv
-                                     *poid_par_priv)
-{
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_total_tx_bytes_hdl(struct oid_par_priv
-                                         *poid_par_priv)
-{
-       struct _adapter *padapter = poid_par_priv->adapter_context;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len >= sizeof(u32)) {
-               *(u32 *)poid_par_priv->information_buf =
-                                                padapter->xmitpriv.tx_bytes;
-               *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       } else {
-               return RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_total_rx_bytes_hdl(struct oid_par_priv
-                                         *poid_par_priv)
-{
-       struct _adapter *padapter = poid_par_priv->adapter_context;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len >= sizeof(u32)) {
-               *(u32 *)poid_par_priv->information_buf =
-                                          padapter->recvpriv.rx_bytes;
-               *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       } else {
-               return RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_current_tx_power_level_hdl(struct oid_par_priv
-                                             *poid_par_priv)
-{
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_enc_key_mismatch_count_hdl(struct oid_par_priv
-                                                 *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_enc_key_match_count_hdl(struct oid_par_priv
-                                              *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_channel_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *padapter = poid_par_priv->adapter_context;
-       struct  mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct NDIS_802_11_CONFIGURATION *pnic_Config;
-       u32   channelnum;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (check_fwstate(pmlmepriv, _FW_LINKED) ||
-           check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE))
-               pnic_Config = &pmlmepriv->cur_network.network.Configuration;
-       else
-               pnic_Config = &padapter->registrypriv.dev_network.Configuration;
-       channelnum = pnic_Config->DSConfig;
-       *(u32 *)poid_par_priv->information_buf = channelnum;
-       *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_hardware_radio_off_hdl(struct oid_par_priv
-                        *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_key_mismatch_hdl(struct oid_par_priv *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_supported_wireless_mode_hdl(struct oid_par_priv
-                                              *poid_par_priv)
-{
-       u32 ulInfo = 0;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len >= sizeof(u32)) {
-               ulInfo |= 0x0100; /* WIRELESS_MODE_B */
-               ulInfo |= 0x0200; /* WIRELESS_MODE_G */
-               ulInfo |= 0x0400; /* WIRELESS_MODE_A */
-               *(u32 *) poid_par_priv->information_buf = ulInfo;
-               *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       } else {
-               return RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_channel_list_hdl(struct oid_par_priv *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_scan_in_progress_hdl(struct oid_par_priv *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_forced_data_rate_hdl(struct oid_par_priv *poid_par_priv)
-{
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_wireless_mode_for_scan_list_hdl(struct oid_par_priv
-                                                  *poid_par_priv)
-{
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_bss_wireless_mode_hdl(struct oid_par_priv
-                                            *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_scan_with_magic_packet_hdl(struct oid_par_priv
-                                             *poid_par_priv)
-{
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_ap_get_associated_station_list_hdl(struct oid_par_priv
-                                                     *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_ap_switch_into_ap_mode_hdl(struct oid_par_priv*
-                                             poid_par_priv)
-{
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_ap_supported_hdl(struct oid_par_priv *poid_par_priv)
-{
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_ap_set_passphrase_hdl(struct oid_par_priv *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_rf_write_registry_hdl(struct oid_par_priv*
-                                            poid_par_priv)
-{
-       uint status = RNDIS_STATUS_SUCCESS;
-       struct _adapter *Adapter = poid_par_priv->adapter_context;
-
-       if (poid_par_priv->type_of_oid != SET_OID) /* QUERY_OID */
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len ==
-          (sizeof(unsigned long) * 3)) {
-               if (r8712_setrfreg_cmd(Adapter,
-                       *(unsigned char *)poid_par_priv->information_buf,
-                       (unsigned long)(*((unsigned long *)
-                                       poid_par_priv->information_buf + 2))))
-                       status = RNDIS_STATUS_NOT_ACCEPTED;
-       } else {
-               status = RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return status;
-}
-
-uint oid_rt_pro_rf_read_registry_hdl(struct oid_par_priv *poid_par_priv)
-{
-       uint status = RNDIS_STATUS_SUCCESS;
-       struct _adapter *Adapter = poid_par_priv->adapter_context;
-
-       if (poid_par_priv->type_of_oid != SET_OID) /* QUERY_OID */
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len == (sizeof(unsigned long) *
-                                                  3)) {
-               if (Adapter->mppriv.act_in_progress) {
-                       status = RNDIS_STATUS_NOT_ACCEPTED;
-               } else {
-                       /* init workparam */
-                       Adapter->mppriv.act_in_progress = true;
-                       Adapter->mppriv.workparam.bcompleted = false;
-                       Adapter->mppriv.workparam.act_type = MPT_READ_RF;
-                       Adapter->mppriv.workparam.io_offset = *(unsigned long *)
-                                               poid_par_priv->information_buf;
-                       Adapter->mppriv.workparam.io_value = 0xcccccccc;
-
-               /* RegOffsetValue       - The offset of RF register to read.
-                * RegDataWidth - The data width of RF register to read.
-                * RegDataValue - The value to read.
-                * RegOffsetValue = *((unsigned long *)InformationBuffer);
-                * RegDataWidth = *((unsigned long *)InformationBuffer+1);
-                * RegDataValue =  *((unsigned long *)InformationBuffer+2);
-                */
-                       if (r8712_getrfreg_cmd(Adapter,
-                           *(unsigned char *)poid_par_priv->information_buf,
-                           (unsigned char *)&Adapter->mppriv.workparam.io_value
-                           ))
-                               status = RNDIS_STATUS_NOT_ACCEPTED;
-               }
-       } else {
-               status = RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return status;
-}
-
-enum _CONNECT_STATE_ {
-       CHECKINGSTATUS,
-       ASSOCIATED,
-       ADHOCMODE,
-       NOTASSOCIATED
-};
-
-uint oid_rt_get_connect_state_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *padapter = poid_par_priv->adapter_context;
-       struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
-       u32 ulInfo;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       /* nStatus==0   CheckingStatus
-        * nStatus==1   Associated
-        * nStatus==2   AdHocMode
-        * nStatus==3   NotAssociated
-        */
-       if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING))
-               ulInfo = CHECKINGSTATUS;
-       else if (check_fwstate(pmlmepriv, _FW_LINKED))
-               ulInfo = ASSOCIATED;
-       else if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE))
-               ulInfo = ADHOCMODE;
-       else
-               ulInfo = NOTASSOCIATED;
-       *(u32 *)poid_par_priv->information_buf = ulInfo;
-       *poid_par_priv->bytes_rw =  poid_par_priv->information_buf_len;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_set_default_key_id_hdl(struct oid_par_priv *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
diff --git a/drivers/staging/rtl8712/rtl871x_ioctl_rtl.h b/drivers/staging/rtl8712/rtl871x_ioctl_rtl.h
deleted file mode 100644 (file)
index 7c0b880..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef _RTL871X_IOCTL_RTL_H
-#define _RTL871X_IOCTL_RTL_H
-
-#include "osdep_service.h"
-#include "drv_types.h"
-
-/*************** oid_rtl_seg_01_01 **************/
-uint oid_rt_get_signal_quality_hdl(
-                       struct oid_par_priv *poid_par_priv);/*84*/
-uint oid_rt_get_small_packet_crc_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_middle_packet_crc_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_large_packet_crc_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_tx_retry_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_rx_retry_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_rx_total_packet_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_tx_beacon_ok_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_tx_beacon_err_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_rx_icv_err_hdl(
-                       struct oid_par_priv *poid_par_priv);/*93*/
-uint oid_rt_set_encryption_algorithm_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_preamble_mode_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_ap_ip_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_channelplan_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_set_channelplan_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_set_preamble_mode_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_set_bcn_intvl_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_dedicate_probe_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_total_tx_bytes_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_total_rx_bytes_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_current_tx_power_level_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_enc_key_mismatch_count_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_enc_key_match_count_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_channel_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_hardware_radio_off_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_key_mismatch_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_supported_wireless_mode_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_channel_list_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_scan_in_progress_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_forced_data_rate_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_wireless_mode_for_scan_list_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_bss_wireless_mode_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_scan_with_magic_packet_hdl(
-                       struct oid_par_priv *poid_par_priv);
-
-/**************  oid_rtl_seg_01_03 section start **************/
-uint oid_rt_ap_get_associated_station_list_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_ap_switch_into_ap_mode_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_ap_supported_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_ap_set_passphrase_hdl(
-                       struct oid_par_priv *poid_par_priv);
-/* oid_rtl_seg_01_11 */
-uint oid_rt_pro_rf_write_registry_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_rf_read_registry_hdl(
-                       struct oid_par_priv *poid_par_priv);
-/***************  oid_rtl_seg_03_00 section start **************/
-uint oid_rt_get_connect_state_hdl(
-                       struct oid_par_priv *poid_par_priv);
-uint oid_rt_set_default_key_id_hdl(
-                       struct oid_par_priv *poid_par_priv);
-
-#endif
-
diff --git a/drivers/staging/rtl8712/rtl871x_ioctl_set.c b/drivers/staging/rtl8712/rtl871x_ioctl_set.c
deleted file mode 100644 (file)
index 34c9a52..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl871x_ioctl_set.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _RTL871X_IOCTL_SET_C_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "rtl871x_ioctl_set.h"
-#include "usb_osintf.h"
-#include "usb_ops.h"
-
-static u8 validate_ssid(struct ndis_802_11_ssid *ssid)
-{
-       u8 i;
-
-       if (ssid->SsidLength > 32)
-               return false;
-       for (i = 0; i < ssid->SsidLength; i++) {
-               /* wifi, printable ascii code must be supported */
-               if (!((ssid->Ssid[i] >= 0x20) && (ssid->Ssid[i] <= 0x7e)))
-                       return false;
-       }
-       return true;
-}
-
-static u8 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);
-       int ret;
-
-       phead = &queue->queue;
-       plist = phead->next;
-       pmlmepriv->cur_network.join_res = -2;
-       pmlmepriv->fw_state |= _FW_UNDER_LINKING;
-       pmlmepriv->pscanned = plist;
-       pmlmepriv->to_join = true;
-
-       /* adhoc mode will start with an empty queue, but skip checking */
-       if (!check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) &&
-           list_empty(&queue->queue)) {
-               if (pmlmepriv->fw_state & _FW_UNDER_LINKING)
-                       pmlmepriv->fw_state ^= _FW_UNDER_LINKING;
-               /* when set_ssid/set_bssid for do_join(), but scanning queue
-                * is empty we try to issue sitesurvey firstly
-                */
-               if (!pmlmepriv->sitesurveyctrl.traffic_busy)
-                       r8712_sitesurvey_cmd(padapter, &pmlmepriv->assoc_ssid);
-               return true;
-       }
-
-       ret = r8712_select_and_join_from_scan(pmlmepriv);
-       if (!ret) {
-               mod_timer(&pmlmepriv->assoc_timer,
-                         jiffies + msecs_to_jiffies(MAX_JOIN_TIMEOUT));
-       } else {
-               if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
-                       /* submit r8712_createbss_cmd to change to an
-                        * 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.MacAddress;
-                       memcpy(&pdev_network->Ssid,
-                              &pmlmepriv->assoc_ssid,
-                              sizeof(struct ndis_802_11_ssid));
-                       r8712_update_registrypriv_dev_network(padapter);
-                       r8712_generate_random_ibss(pibss);
-                       if (r8712_createbss_cmd(padapter))
-                               return false;
-                       pmlmepriv->to_join = false;
-               } else {
-                       /* can't associate ; reset under-linking */
-                       if (pmlmepriv->fw_state & _FW_UNDER_LINKING)
-                               pmlmepriv->fw_state ^=
-                                       _FW_UNDER_LINKING;
-                       /* when set_ssid/set_bssid for do_join(), but
-                        * there are no desired bss in scanning queue
-                        * we try to issue sitesurvey first
-                        */
-                       if (!pmlmepriv->sitesurveyctrl.traffic_busy)
-                               r8712_sitesurvey_cmd(padapter,
-                                                    &pmlmepriv->assoc_ssid);
-               }
-       }
-       return true;
-}
-
-u8 r8712_set_802_11_bssid(struct _adapter *padapter, u8 *bssid)
-{
-       unsigned long irqL;
-       u8 status = true;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-       if (is_zero_ether_addr(bssid) || is_broadcast_ether_addr(bssid)) {
-               status = false;
-               return status;
-       }
-       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-       if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY |
-           _FW_UNDER_LINKING)) {
-               status = check_fwstate(pmlmepriv, _FW_UNDER_LINKING);
-               goto _Abort_Set_BSSID;
-       }
-       if (check_fwstate(pmlmepriv,
-           _FW_LINKED | WIFI_ADHOC_MASTER_STATE)) {
-               if (!memcmp(&pmlmepriv->cur_network.network.MacAddress, bssid,
-                   ETH_ALEN)) {
-                       if (!check_fwstate(pmlmepriv, WIFI_STATION_STATE))
-                               /* driver is in
-                                * WIFI_ADHOC_MASTER_STATE
-                                */
-                               goto _Abort_Set_BSSID;
-               } else {
-                       r8712_disassoc_cmd(padapter);
-                       if (check_fwstate(pmlmepriv, _FW_LINKED))
-                               r8712_ind_disconnect(padapter);
-                       r8712_free_assoc_resources(padapter);
-                       if ((check_fwstate(pmlmepriv,
-                            WIFI_ADHOC_MASTER_STATE))) {
-                               _clr_fwstate_(pmlmepriv,
-                                             WIFI_ADHOC_MASTER_STATE);
-                               set_fwstate(pmlmepriv, WIFI_ADHOC_STATE);
-                       }
-               }
-       }
-       memcpy(&pmlmepriv->assoc_bssid, bssid, ETH_ALEN);
-       pmlmepriv->assoc_by_bssid = true;
-       status = do_join(padapter);
-       goto done;
-_Abort_Set_BSSID:
-done:
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-       return status;
-}
-
-void r8712_set_802_11_ssid(struct _adapter *padapter,
-                          struct ndis_802_11_ssid *ssid)
-{
-       unsigned long irqL;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct wlan_network *pnetwork = &pmlmepriv->cur_network;
-
-       if (!padapter->hw_init_completed)
-               return;
-       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-       if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY | _FW_UNDER_LINKING)) {
-               check_fwstate(pmlmepriv, _FW_UNDER_LINKING);
-               goto _Abort_Set_SSID;
-       }
-       if (check_fwstate(pmlmepriv, _FW_LINKED | WIFI_ADHOC_MASTER_STATE)) {
-               if ((pmlmepriv->assoc_ssid.SsidLength == ssid->SsidLength) &&
-                   (!memcmp(&pmlmepriv->assoc_ssid.Ssid, ssid->Ssid,
-                   ssid->SsidLength))) {
-                       if (!check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
-                               if (!r8712_is_same_ibss(padapter,
-                                    pnetwork)) {
-                                       /* if in WIFI_ADHOC_MASTER_STATE or
-                                        *  WIFI_ADHOC_STATE, create bss or
-                                        * rejoin again
-                                        */
-                                       r8712_disassoc_cmd(padapter);
-                                       if (check_fwstate(pmlmepriv,
-                                           _FW_LINKED))
-                                               r8712_ind_disconnect(padapter);
-                                       r8712_free_assoc_resources(padapter);
-                                       if (check_fwstate(pmlmepriv,
-                                            WIFI_ADHOC_MASTER_STATE)) {
-                                               _clr_fwstate_(pmlmepriv,
-                                                   WIFI_ADHOC_MASTER_STATE);
-                                               set_fwstate(pmlmepriv,
-                                                           WIFI_ADHOC_STATE);
-                                       }
-                               } else {
-                                       /* driver is in
-                                        * WIFI_ADHOC_MASTER_STATE
-                                        */
-                                       goto _Abort_Set_SSID;
-                               }
-                       }
-               } else {
-                       r8712_disassoc_cmd(padapter);
-                       if (check_fwstate(pmlmepriv, _FW_LINKED))
-                               r8712_ind_disconnect(padapter);
-                       r8712_free_assoc_resources(padapter);
-                       if (check_fwstate(pmlmepriv,
-                           WIFI_ADHOC_MASTER_STATE)) {
-                               _clr_fwstate_(pmlmepriv,
-                                             WIFI_ADHOC_MASTER_STATE);
-                               set_fwstate(pmlmepriv, WIFI_ADHOC_STATE);
-                       }
-               }
-       }
-       if (padapter->securitypriv.btkip_countermeasure)
-               goto _Abort_Set_SSID;
-       if (!validate_ssid(ssid))
-               goto _Abort_Set_SSID;
-       memcpy(&pmlmepriv->assoc_ssid, ssid, sizeof(struct ndis_802_11_ssid));
-       pmlmepriv->assoc_by_bssid = false;
-       do_join(padapter);
-       goto done;
-_Abort_Set_SSID:
-done:
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-}
-
-void r8712_set_802_11_infrastructure_mode(struct _adapter *padapter,
-       enum NDIS_802_11_NETWORK_INFRASTRUCTURE networktype)
-{
-       unsigned long irqL;
-       struct mlme_priv        *pmlmepriv = &padapter->mlmepriv;
-       struct wlan_network     *cur_network = &pmlmepriv->cur_network;
-       enum NDIS_802_11_NETWORK_INFRASTRUCTURE *pold_state =
-                               &(cur_network->network.InfrastructureMode);
-
-       if (*pold_state != networktype) {
-               spin_lock_irqsave(&pmlmepriv->lock, irqL);
-               if (check_fwstate(pmlmepriv, _FW_LINKED) ||
-                   (*pold_state == Ndis802_11IBSS))
-                       r8712_disassoc_cmd(padapter);
-               if (check_fwstate(pmlmepriv,
-                   _FW_LINKED | WIFI_ADHOC_MASTER_STATE))
-                       r8712_free_assoc_resources(padapter);
-               if (check_fwstate(pmlmepriv, _FW_LINKED) ||
-                   (*pold_state == Ndis802_11Infrastructure) ||
-                   (*pold_state == Ndis802_11IBSS)) {
-                       /* will clr Linked_state before this function,
-                        * we must have checked whether issue dis-assoc_cmd or
-                        * not
-                        */
-                       r8712_ind_disconnect(padapter);
-               }
-               *pold_state = networktype;
-               /* clear WIFI_STATION_STATE; WIFI_AP_STATE; WIFI_ADHOC_STATE;
-                * WIFI_ADHOC_MASTER_STATE
-                */
-               _clr_fwstate_(pmlmepriv, WIFI_STATION_STATE | WIFI_AP_STATE |
-                             WIFI_ADHOC_STATE | WIFI_ADHOC_MASTER_STATE);
-               switch (networktype) {
-               case Ndis802_11IBSS:
-                       set_fwstate(pmlmepriv, WIFI_ADHOC_STATE);
-                       break;
-               case Ndis802_11Infrastructure:
-                       set_fwstate(pmlmepriv, WIFI_STATION_STATE);
-                       break;
-               case Ndis802_11APMode:
-                       set_fwstate(pmlmepriv, WIFI_AP_STATE);
-                       break;
-               case Ndis802_11AutoUnknown:
-               case Ndis802_11InfrastructureMax:
-                       break;
-               }
-               spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-       }
-}
-
-u8 r8712_set_802_11_disassociate(struct _adapter *padapter)
-{
-       unsigned long irqL;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-       if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-               r8712_disassoc_cmd(padapter);
-               r8712_ind_disconnect(padapter);
-               r8712_free_assoc_resources(padapter);
-       }
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-       return true;
-}
-
-u8 r8712_set_802_11_bssid_list_scan(struct _adapter *padapter)
-{
-       struct mlme_priv *pmlmepriv = NULL;
-       unsigned long irqL;
-       u8 ret = true;
-
-       if (!padapter)
-               return false;
-       pmlmepriv = &padapter->mlmepriv;
-       if (!padapter->hw_init_completed)
-               return false;
-       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-       if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY | _FW_UNDER_LINKING) ||
-           pmlmepriv->sitesurveyctrl.traffic_busy) {
-               /* Scan or linking is in progress, do nothing. */
-               ret = (u8)check_fwstate(pmlmepriv, _FW_UNDER_SURVEY);
-       } else {
-               r8712_free_network_queue(padapter);
-               ret = r8712_sitesurvey_cmd(padapter, NULL);
-       }
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-       return ret;
-}
-
-u8 r8712_set_802_11_authentication_mode(struct _adapter *padapter,
-                               enum NDIS_802_11_AUTHENTICATION_MODE authmode)
-{
-       struct security_priv *psecuritypriv = &padapter->securitypriv;
-       u8 ret;
-
-       psecuritypriv->ndisauthtype = authmode;
-       if (psecuritypriv->ndisauthtype > 3)
-               psecuritypriv->AuthAlgrthm = 2; /* 802.1x */
-       if (r8712_set_auth(padapter, psecuritypriv))
-               ret = false;
-       else
-               ret = true;
-       return ret;
-}
-
-int r8712_set_802_11_add_wep(struct _adapter *padapter,
-                            struct NDIS_802_11_WEP *wep)
-{
-       sint    keyid;
-       struct security_priv *psecuritypriv = &padapter->securitypriv;
-
-       keyid = wep->KeyIndex & 0x3fffffff;
-       if (keyid >= WEP_KEYS)
-               return -EINVAL;
-       switch (wep->KeyLength) {
-       case 5:
-               psecuritypriv->PrivacyAlgrthm = _WEP40_;
-               break;
-       case 13:
-               psecuritypriv->PrivacyAlgrthm = _WEP104_;
-               break;
-       default:
-               psecuritypriv->PrivacyAlgrthm = _NO_PRIVACY_;
-               break;
-       }
-       memcpy(psecuritypriv->DefKey[keyid].skey, &wep->KeyMaterial,
-               wep->KeyLength);
-       psecuritypriv->DefKeylen[keyid] = wep->KeyLength;
-       psecuritypriv->PrivacyKeyIndex = keyid;
-       return r8712_set_key(padapter, psecuritypriv, keyid);
-}
diff --git a/drivers/staging/rtl8712/rtl871x_ioctl_set.h b/drivers/staging/rtl8712/rtl871x_ioctl_set.h
deleted file mode 100644 (file)
index e2de820..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __IOCTL_SET_H
-#define __IOCTL_SET_H
-
-#include "drv_types.h"
-
-typedef u8 NDIS_802_11_PMKID_VALUE[16];
-
-struct BSSIDInfo {
-       unsigned char BSSID[6];
-       NDIS_802_11_PMKID_VALUE PMKID;
-};
-
-u8 r8712_set_802_11_authentication_mode(struct _adapter *pdapter,
-                       enum NDIS_802_11_AUTHENTICATION_MODE authmode);
-
-u8 r8712_set_802_11_bssid(struct _adapter *padapter, u8 *bssid);
-
-int r8712_set_802_11_add_wep(struct _adapter *padapter,
-                            struct NDIS_802_11_WEP *wep);
-
-u8 r8712_set_802_11_disassociate(struct _adapter *padapter);
-
-u8 r8712_set_802_11_bssid_list_scan(struct _adapter *padapter);
-
-void r8712_set_802_11_infrastructure_mode(struct _adapter *padapter,
-                       enum NDIS_802_11_NETWORK_INFRASTRUCTURE networktype);
-
-void r8712_set_802_11_ssid(struct _adapter *padapter,
-                          struct ndis_802_11_ssid *ssid);
-
-#endif
-
diff --git a/drivers/staging/rtl8712/rtl871x_led.h b/drivers/staging/rtl8712/rtl871x_led.h
deleted file mode 100644 (file)
index 2f07681..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL8712_LED_H
-#define __RTL8712_LED_H
-
-#include "osdep_service.h"
-#include "drv_types.h"
-
-/*===========================================================================
- * LED customization.
- *===========================================================================
- */
-enum LED_CTL_MODE {
-       LED_CTL_POWER_ON = 1,
-       LED_CTL_LINK = 2,
-       LED_CTL_NO_LINK = 3,
-       LED_CTL_TX = 4,
-       LED_CTL_RX = 5,
-       LED_CTL_SITE_SURVEY = 6,
-       LED_CTL_POWER_OFF = 7,
-       LED_CTL_START_TO_LINK = 8,
-       LED_CTL_START_WPS = 9,
-       LED_CTL_STOP_WPS = 10,
-       LED_CTL_START_WPS_BOTTON = 11,
-       LED_CTL_STOP_WPS_FAIL = 12,
-       LED_CTL_STOP_WPS_FAIL_OVERLAP = 13,
-};
-
-#define IS_LED_WPS_BLINKING(_LED_871x) \
-       (((struct LED_871x *)_LED_871x)->CurrLedState == LED_BLINK_WPS \
-       || ((struct LED_871x *)_LED_871x)->CurrLedState == LED_BLINK_WPS_STOP \
-       || ((struct LED_871x *)_LED_871x)->bLedWPSBlinkInProgress)
-
-#define IS_LED_BLINKING(_LED_871x)     \
-               (((struct LED_871x *)_LED_871x)->bLedWPSBlinkInProgress \
-               || ((struct LED_871x *)_LED_871x)->bLedScanBlinkInProgress)
-
-enum LED_PIN_871x {
-       LED_PIN_GPIO0,
-       LED_PIN_LED0,
-       LED_PIN_LED1
-};
-
-/*===========================================================================
- * LED customization.
- *===========================================================================
- */
-enum LED_STRATEGY_871x {
-       SW_LED_MODE0, /* SW control 1 LED via GPIO0. It is default option. */
-       SW_LED_MODE1, /* 2 LEDs, through LED0 and LED1. For ALPHA. */
-       SW_LED_MODE2, /* SW control 1 LED via GPIO0,
-                      * custom for AzWave 8187 minicard.
-                      */
-       SW_LED_MODE3, /* SW control 1 LED via GPIO0,
-                      * customized for Sercomm Printer Server case.
-                      */
-       SW_LED_MODE4, /*for Edimax / Belkin*/
-       SW_LED_MODE5, /*for Sercomm / Belkin*/
-       SW_LED_MODE6, /*for WNC / Corega*/
-       HW_LED, /* HW control 2 LEDs, LED0 and LED1 (there are 4 different
-                * control modes, see MAC.CONFIG1 for details.)
-                */
-};
-
-struct LED_871x {
-       struct _adapter         *padapter;
-       enum LED_PIN_871x       LedPin; /* Implementation for this SW led. */
-       u32                     CurrLedState; /* Current LED state. */
-       u8                      bLedOn; /* true if LED is ON */
-       u8                      bSWLedCtrl;
-       u8                      bLedBlinkInProgress; /*true if blinking */
-       u8                      bLedNoLinkBlinkInProgress;
-       u8                      bLedLinkBlinkInProgress;
-       u8                      bLedStartToLinkBlinkInProgress;
-       u8                      bLedScanBlinkInProgress;
-       u8                      bLedWPSBlinkInProgress;
-       u32                     BlinkTimes; /* No. times to toggle for blink.*/
-       u32                     BlinkingLedState; /* Next state for blinking,
-                                                  * either LED_ON or OFF.
-                                                  */
-
-       struct timer_list       BlinkTimer; /* Timer object for led blinking.*/
-       struct work_struct      BlinkWorkItem; /* Workitem used by BlinkTimer */
-};
-
-struct led_priv {
-       /* add for led control */
-       struct LED_871x         SwLed0;
-       struct LED_871x         SwLed1;
-       enum LED_STRATEGY_871x  LedStrategy;
-       u8                      bRegUseLed;
-       void (*LedControlHandler)(struct _adapter *padapter,
-                                 enum LED_CTL_MODE LedAction);
-       /* add for led control */
-};
-
-/*===========================================================================
- * Interface to manipulate LED objects.
- *===========================================================================
- */
-void r8712_InitSwLeds(struct _adapter *padapter);
-void r8712_DeInitSwLeds(struct _adapter *padapter);
-void LedControl871x(struct _adapter *padapter, enum LED_CTL_MODE LedAction);
-void r8712_flush_led_works(struct _adapter *padapter);
-
-#endif
-
diff --git a/drivers/staging/rtl8712/rtl871x_mlme.c b/drivers/staging/rtl8712/rtl871x_mlme.c
deleted file mode 100644 (file)
index 63e12b1..0000000
+++ /dev/null
@@ -1,1709 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl871x_mlme.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _RTL871X_MLME_C_
-
-#include <linux/etherdevice.h>
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "recv_osdep.h"
-#include "xmit_osdep.h"
-#include "mlme_osdep.h"
-#include "sta_info.h"
-#include "wifi.h"
-#include "wlan_bssdef.h"
-
-static void update_ht_cap(struct _adapter *padapter, u8 *pie, uint ie_len);
-
-int r8712_init_mlme_priv(struct _adapter *padapter)
-{
-       sint    i;
-       u8      *pbuf;
-       struct wlan_network     *pnetwork;
-       struct  mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-       memset((u8 *)pmlmepriv, 0, sizeof(struct mlme_priv));
-       pmlmepriv->nic_hdl = (u8 *)padapter;
-       pmlmepriv->pscanned = NULL;
-       pmlmepriv->fw_state = 0;
-       pmlmepriv->cur_network.network.InfrastructureMode =
-                                Ndis802_11AutoUnknown;
-       /* Maybe someday we should rename this variable to "active_mode"(Jeff)*/
-       pmlmepriv->passive_mode = 1; /* 1: active, 0: passive. */
-       spin_lock_init(&(pmlmepriv->lock));
-       spin_lock_init(&(pmlmepriv->lock2));
-       _init_queue(&(pmlmepriv->free_bss_pool));
-       _init_queue(&(pmlmepriv->scanned_queue));
-       set_scanned_network_val(pmlmepriv, 0);
-       memset(&pmlmepriv->assoc_ssid, 0, sizeof(struct ndis_802_11_ssid));
-       pbuf = kmalloc_array(MAX_BSS_CNT, sizeof(struct wlan_network),
-                            GFP_ATOMIC);
-       if (!pbuf)
-               return -ENOMEM;
-       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++;
-       }
-       pmlmepriv->sitesurveyctrl.last_rx_pkts = 0;
-       pmlmepriv->sitesurveyctrl.last_tx_pkts = 0;
-       pmlmepriv->sitesurveyctrl.traffic_busy = false;
-       /* allocate DMA-able/Non-Page memory for cmd_buf and rsp_buf */
-       r8712_init_mlme_timer(padapter);
-       return 0;
-}
-
-struct wlan_network *_r8712_alloc_network(struct mlme_priv *pmlmepriv)
-{
-       unsigned long irqL;
-       struct wlan_network *pnetwork;
-       struct  __queue *free_queue = &pmlmepriv->free_bss_pool;
-
-       spin_lock_irqsave(&free_queue->lock, irqL);
-       pnetwork = list_first_entry_or_null(&free_queue->queue,
-                                           struct wlan_network, list);
-       if (pnetwork) {
-               list_del_init(&pnetwork->list);
-               pnetwork->last_scanned = jiffies;
-               pmlmepriv->num_of_scanned++;
-       }
-       spin_unlock_irqrestore(&free_queue->lock, irqL);
-       return pnetwork;
-}
-
-static void _free_network(struct mlme_priv *pmlmepriv,
-                         struct wlan_network *pnetwork)
-{
-       u32 curr_time, delta_time;
-       unsigned long irqL;
-       struct  __queue *free_queue = &(pmlmepriv->free_bss_pool);
-
-       if (!pnetwork)
-               return;
-       if (pnetwork->fixed)
-               return;
-       curr_time = jiffies;
-       delta_time = (curr_time - (u32)pnetwork->last_scanned) / HZ;
-       if (delta_time < SCANQUEUE_LIFETIME)
-               return;
-       spin_lock_irqsave(&free_queue->lock, irqL);
-       list_del_init(&pnetwork->list);
-       list_add_tail(&pnetwork->list, &free_queue->queue);
-       pmlmepriv->num_of_scanned--;
-       spin_unlock_irqrestore(&free_queue->lock, irqL);
-}
-
-static void 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, &free_queue->queue);
-       pmlmepriv->num_of_scanned--;
-}
-
-/* return the wlan_network with the matching addr
- * Shall be called under atomic context...
- * to avoid possible racing condition...
- */
-static struct wlan_network *r8712_find_network(struct  __queue *scanned_queue,
-                                              u8 *addr)
-{
-       unsigned long irqL;
-       struct list_head *phead, *plist;
-       struct wlan_network *pnetwork = NULL;
-
-       if (is_zero_ether_addr(addr))
-               return NULL;
-       spin_lock_irqsave(&scanned_queue->lock, irqL);
-       phead = &scanned_queue->queue;
-       list_for_each(plist, phead) {
-               pnetwork = list_entry(plist, struct wlan_network, list);
-               if (!memcmp(addr, pnetwork->network.MacAddress, ETH_ALEN))
-                       break;
-       }
-       if (plist == phead)
-               pnetwork = NULL;
-       spin_unlock_irqrestore(&scanned_queue->lock, irqL);
-       return pnetwork;
-}
-
-void r8712_free_network_queue(struct _adapter *padapter)
-{
-       unsigned long irqL;
-       struct list_head *phead, *plist;
-       struct wlan_network *pnetwork;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct  __queue *scanned_queue = &pmlmepriv->scanned_queue;
-
-       spin_lock_irqsave(&scanned_queue->lock, irqL);
-       phead = &scanned_queue->queue;
-       plist = phead->next;
-       while (!end_of_queue_search(phead, plist)) {
-               pnetwork = container_of(plist, struct wlan_network, list);
-               plist = plist->next;
-               _free_network(pmlmepriv, pnetwork);
-       }
-       spin_unlock_irqrestore(&scanned_queue->lock, irqL);
-}
-
-sint r8712_if_up(struct _adapter *padapter)
-{
-       sint res;
-
-       if (padapter->driver_stopped || padapter->surprise_removed ||
-           !check_fwstate(&padapter->mlmepriv, _FW_LINKED)) {
-               res = false;
-       } else {
-               res = true;
-       }
-       return res;
-}
-
-void r8712_generate_random_ibss(u8 *pibss)
-{
-       u32 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);
-       pibss[4] = (u8)((curtime >> 8) & 0xff);
-       pibss[5] = (u8)((curtime >> 16) & 0xff);
-}
-
-uint r8712_get_wlan_bssid_ex_sz(struct wlan_bssid_ex *bss)
-{
-       return sizeof(*bss) + bss->IELength - MAX_IE_SZ;
-}
-
-u8 *r8712_get_capability_from_ie(u8 *ie)
-{
-       return ie + 8 + 2;
-}
-
-void r8712_free_mlme_priv(struct mlme_priv *pmlmepriv)
-{
-       kfree(pmlmepriv->free_bss_buf);
-}
-
-static struct  wlan_network *alloc_network(struct mlme_priv *pmlmepriv)
-{
-       return _r8712_alloc_network(pmlmepriv);
-}
-
-int r8712_is_same_ibss(struct _adapter *adapter, struct wlan_network *pnetwork)
-{
-       int ret = true;
-       struct security_priv *psecuritypriv = &adapter->securitypriv;
-
-       if ((psecuritypriv->PrivacyAlgrthm != _NO_PRIVACY_) &&
-                   (pnetwork->network.Privacy == cpu_to_le32(0)))
-               ret = false;
-       else if ((psecuritypriv->PrivacyAlgrthm == _NO_PRIVACY_) &&
-                (pnetwork->network.Privacy == cpu_to_le32(1)))
-               ret = false;
-       else
-               ret = true;
-       return ret;
-
-}
-
-static int is_same_network(struct wlan_bssid_ex *src,
-                          struct wlan_bssid_ex *dst)
-{
-       u16 s_cap, d_cap;
-
-       memcpy((u8 *)&s_cap, r8712_get_capability_from_ie(src->IEs), 2);
-       memcpy((u8 *)&d_cap, r8712_get_capability_from_ie(dst->IEs), 2);
-       return (src->Ssid.SsidLength == dst->Ssid.SsidLength) &&
-                       (src->Configuration.DSConfig ==
-                       dst->Configuration.DSConfig) &&
-                       ((!memcmp(src->MacAddress, dst->MacAddress,
-                       ETH_ALEN))) &&
-                       ((!memcmp(src->Ssid.Ssid,
-                         dst->Ssid.Ssid,
-                         src->Ssid.SsidLength))) &&
-                       ((s_cap & WLAN_CAPABILITY_IBSS) ==
-                       (d_cap & WLAN_CAPABILITY_IBSS)) &&
-                       ((s_cap & WLAN_CAPABILITY_ESS) ==
-                       (d_cap & WLAN_CAPABILITY_ESS));
-
-}
-
-struct wlan_network *r8712_get_oldest_wlan_network(
-                               struct  __queue *scanned_queue)
-{
-       struct list_head *plist, *phead;
-       struct  wlan_network    *pwlan = NULL;
-       struct  wlan_network    *oldest = NULL;
-
-       phead = &scanned_queue->queue;
-       plist = phead->next;
-       while (1) {
-               if (end_of_queue_search(phead, plist))
-                       break;
-               pwlan = container_of(plist, struct wlan_network, list);
-               if (!pwlan->fixed) {
-                       if (!oldest ||
-                           time_after((unsigned long)oldest->last_scanned,
-                                      (unsigned long)pwlan->last_scanned))
-                               oldest = pwlan;
-               }
-               plist = plist->next;
-       }
-       return oldest;
-}
-
-static void update_network(struct wlan_bssid_ex *dst,
-                          struct wlan_bssid_ex *src,
-                          struct _adapter *padapter)
-{
-       u32 last_evm = 0, tmpVal;
-       struct smooth_rssi_data *sqd = &padapter->recvpriv.signal_qual_data;
-
-       if (check_fwstate(&padapter->mlmepriv, _FW_LINKED) &&
-           is_same_network(&(padapter->mlmepriv.cur_network.network), src)) {
-               if (padapter->recvpriv.signal_qual_data.total_num++ >=
-                   PHY_LINKQUALITY_SLID_WIN_MAX) {
-                       padapter->recvpriv.signal_qual_data.total_num =
-                                  PHY_LINKQUALITY_SLID_WIN_MAX;
-                       last_evm = sqd->elements[sqd->index];
-                       padapter->recvpriv.signal_qual_data.total_val -=
-                                last_evm;
-               }
-               padapter->recvpriv.signal_qual_data.total_val += src->Rssi;
-
-               sqd->elements[sqd->index++] = src->Rssi;
-               if (padapter->recvpriv.signal_qual_data.index >=
-                   PHY_LINKQUALITY_SLID_WIN_MAX)
-                       padapter->recvpriv.signal_qual_data.index = 0;
-               /* <1> Showed on UI for user, in percentage. */
-               tmpVal = padapter->recvpriv.signal_qual_data.total_val /
-                        padapter->recvpriv.signal_qual_data.total_num;
-               padapter->recvpriv.signal = (u8)tmpVal;
-
-               src->Rssi = padapter->recvpriv.signal;
-       } else {
-               src->Rssi = (src->Rssi + dst->Rssi) / 2;
-       }
-       memcpy((u8 *)dst, (u8 *)src, r8712_get_wlan_bssid_ex_sz(src));
-}
-
-static void update_current_network(struct _adapter *adapter,
-                                  struct wlan_bssid_ex *pnetwork)
-{
-       struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-
-       if (is_same_network(&(pmlmepriv->cur_network.network), pnetwork)) {
-               update_network(&(pmlmepriv->cur_network.network),
-                              pnetwork, adapter);
-               r8712_update_protection(adapter,
-                              (pmlmepriv->cur_network.network.IEs) +
-                              sizeof(struct NDIS_802_11_FIXED_IEs),
-                              pmlmepriv->cur_network.network.IELength);
-       }
-}
-
-/* Caller must hold pmlmepriv->lock first */
-static void 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;
-
-       phead = &queue->queue;
-       plist = phead->next;
-
-       while (1) {
-               if (end_of_queue_search(phead, plist))
-                       break;
-
-               pnetwork = container_of(plist, struct wlan_network, list);
-               if (is_same_network(&pnetwork->network, target))
-                       break;
-               if ((oldest == ((struct wlan_network *)0)) ||
-                   time_after((unsigned long)oldest->last_scanned,
-                               (unsigned long)pnetwork->last_scanned))
-                       oldest = pnetwork;
-
-               plist = plist->next;
-       }
-
-       /* If we didn't find a match, then get a new network slot to initialize
-        * with this beacon's information
-        */
-       if (end_of_queue_search(phead, plist)) {
-               if (list_empty(&pmlmepriv->free_bss_pool.queue)) {
-                       /* If there are no more slots, expire the oldest */
-                       pnetwork = oldest;
-                       target->Rssi = (pnetwork->network.Rssi +
-                                       target->Rssi) / 2;
-                       memcpy(&pnetwork->network, target,
-                               r8712_get_wlan_bssid_ex_sz(target));
-                       pnetwork->last_scanned = jiffies;
-               } else {
-                       /* Otherwise just pull from the free list */
-                       /* update scan_time */
-                       pnetwork = alloc_network(pmlmepriv);
-                       if (!pnetwork)
-                               return;
-                       bssid_ex_sz = r8712_get_wlan_bssid_ex_sz(target);
-                       target->Length = bssid_ex_sz;
-                       memcpy(&pnetwork->network, target, bssid_ex_sz);
-                       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
-                */
-               update_network(&pnetwork->network, target, adapter);
-               pnetwork->last_scanned = jiffies;
-       }
-}
-
-static void rtl8711_add_network(struct _adapter *adapter,
-                        struct wlan_bssid_ex *pnetwork)
-{
-       unsigned long irqL;
-       struct mlme_priv *pmlmepriv = &(((struct _adapter *)adapter)->mlmepriv);
-       struct  __queue *queue = &pmlmepriv->scanned_queue;
-
-       spin_lock_irqsave(&queue->lock, irqL);
-       update_current_network(adapter, pnetwork);
-       update_scanned_network(adapter, pnetwork);
-       spin_unlock_irqrestore(&queue->lock, irqL);
-}
-
-/*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 int is_desired_network(struct _adapter *adapter,
-                               struct wlan_network *pnetwork)
-{
-       u8 wps_ie[512];
-       uint wps_ielen;
-       int bselected = true;
-       struct  security_priv *psecuritypriv = &adapter->securitypriv;
-
-       if (psecuritypriv->wps_phase) {
-               if (r8712_get_wps_ie(pnetwork->network.IEs,
-                   pnetwork->network.IELength, wps_ie,
-                   &wps_ielen))
-                       return true;
-               return false;
-       }
-       if ((psecuritypriv->PrivacyAlgrthm != _NO_PRIVACY_) &&
-                   (pnetwork->network.Privacy == 0))
-               bselected = false;
-       if (check_fwstate(&adapter->mlmepriv, WIFI_ADHOC_STATE)) {
-               if (pnetwork->network.InfrastructureMode !=
-                       adapter->mlmepriv.cur_network.network.InfrastructureMode)
-                       bselected = false;
-       }
-       return bselected;
-}
-
-/* TODO: Perry : For Power Management */
-void r8712_atimdone_event_callback(struct _adapter *adapter, u8 *pbuf)
-{
-}
-
-void r8712_survey_event_callback(struct _adapter *adapter, u8 *pbuf)
-{
-       unsigned long flags;
-       u32 len;
-       struct wlan_bssid_ex *pnetwork;
-       struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-
-       pnetwork = (struct wlan_bssid_ex *)pbuf;
-#ifdef __BIG_ENDIAN
-       /* endian_convert */
-       pnetwork->Length = le32_to_cpu(pnetwork->Length);
-       pnetwork->Ssid.SsidLength = le32_to_cpu(pnetwork->Ssid.SsidLength);
-       pnetwork->Privacy = le32_to_cpu(pnetwork->Privacy);
-       pnetwork->Rssi = le32_to_cpu(pnetwork->Rssi);
-       pnetwork->NetworkTypeInUse = le32_to_cpu(pnetwork->NetworkTypeInUse);
-       pnetwork->Configuration.ATIMWindow =
-                le32_to_cpu(pnetwork->Configuration.ATIMWindow);
-       pnetwork->Configuration.BeaconPeriod =
-                le32_to_cpu(pnetwork->Configuration.BeaconPeriod);
-       pnetwork->Configuration.DSConfig =
-                le32_to_cpu(pnetwork->Configuration.DSConfig);
-       pnetwork->Configuration.FHConfig.DwellTime =
-                le32_to_cpu(pnetwork->Configuration.FHConfig.DwellTime);
-       pnetwork->Configuration.FHConfig.HopPattern =
-                le32_to_cpu(pnetwork->Configuration.FHConfig.HopPattern);
-       pnetwork->Configuration.FHConfig.HopSet =
-                le32_to_cpu(pnetwork->Configuration.FHConfig.HopSet);
-       pnetwork->Configuration.FHConfig.Length =
-                le32_to_cpu(pnetwork->Configuration.FHConfig.Length);
-       pnetwork->Configuration.Length =
-                le32_to_cpu(pnetwork->Configuration.Length);
-       pnetwork->InfrastructureMode =
-                le32_to_cpu(pnetwork->InfrastructureMode);
-       pnetwork->IELength = le32_to_cpu(pnetwork->IELength);
-#endif
-       len = r8712_get_wlan_bssid_ex_sz(pnetwork);
-       if (len > sizeof(struct wlan_bssid_ex))
-               return;
-       spin_lock_irqsave(&pmlmepriv->lock2, flags);
-       /* update IBSS_network 's timestamp */
-       if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
-               if (!memcmp(&(pmlmepriv->cur_network.network.MacAddress),
-                   pnetwork->MacAddress, ETH_ALEN)) {
-                       struct wlan_network *ibss_wlan = NULL;
-
-                       memcpy(pmlmepriv->cur_network.network.IEs,
-                               pnetwork->IEs, 8);
-                       ibss_wlan = r8712_find_network(
-                                               &pmlmepriv->scanned_queue,
-                                               pnetwork->MacAddress);
-                       if (ibss_wlan) {
-                               memcpy(ibss_wlan->network.IEs,
-                                       pnetwork->IEs, 8);
-                               goto exit;
-                       }
-               }
-       }
-       /* lock pmlmepriv->lock when you accessing network_q */
-       if (!check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) {
-               if (pnetwork->Ssid.Ssid[0] != 0) {
-                       rtl8711_add_network(adapter, pnetwork);
-               } else {
-                       pnetwork->Ssid.SsidLength = 8;
-                       memcpy(pnetwork->Ssid.Ssid, "<hidden>", 8);
-                       rtl8711_add_network(adapter, pnetwork);
-               }
-       }
-exit:
-       spin_unlock_irqrestore(&pmlmepriv->lock2, flags);
-}
-
-void r8712_surveydone_event_callback(struct _adapter *adapter, u8 *pbuf)
-{
-       unsigned long irqL;
-       struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-
-       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-
-       if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) {
-               del_timer(&pmlmepriv->scan_to_timer);
-
-               _clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY);
-       }
-
-       if (pmlmepriv->to_join) {
-               if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
-                       if (!check_fwstate(pmlmepriv, _FW_LINKED)) {
-                               set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
-
-                               if (!r8712_select_and_join_from_scan(pmlmepriv)) {
-                                       mod_timer(&pmlmepriv->assoc_timer, jiffies +
-                                                 msecs_to_jiffies(MAX_JOIN_TIMEOUT));
-                               } else {
-                                       struct wlan_bssid_ex *pdev_network =
-                                         &(adapter->registrypriv.dev_network);
-                                       u8 *pibss =
-                                                adapter->registrypriv.dev_network.MacAddress;
-                                       pmlmepriv->fw_state ^= _FW_UNDER_SURVEY;
-                                       memcpy(&pdev_network->Ssid,
-                                               &pmlmepriv->assoc_ssid,
-                                               sizeof(struct
-                                                        ndis_802_11_ssid));
-                                       r8712_update_registrypriv_dev_network
-                                               (adapter);
-                                       r8712_generate_random_ibss(pibss);
-                                       pmlmepriv->fw_state =
-                                                WIFI_ADHOC_MASTER_STATE;
-                                       pmlmepriv->to_join = false;
-                               }
-                       }
-               } else {
-                       pmlmepriv->to_join = false;
-                       set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
-                       if (!r8712_select_and_join_from_scan(pmlmepriv))
-                               mod_timer(&pmlmepriv->assoc_timer, jiffies +
-                                         msecs_to_jiffies(MAX_JOIN_TIMEOUT));
-                       else
-                               _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
-               }
-       }
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-}
-
-/*
- *r8712_free_assoc_resources: the caller has to lock pmlmepriv->lock
- */
-void r8712_free_assoc_resources(struct _adapter *adapter)
-{
-       unsigned long irqL;
-       struct wlan_network *pwlan = NULL;
-       struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-       struct sta_priv *pstapriv = &adapter->stapriv;
-       struct wlan_network *tgt_network = &pmlmepriv->cur_network;
-
-       pwlan = r8712_find_network(&pmlmepriv->scanned_queue,
-                                  tgt_network->network.MacAddress);
-
-       if (check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_AP_STATE)) {
-               struct sta_info *psta;
-
-               psta = r8712_get_stainfo(&adapter->stapriv,
-                                        tgt_network->network.MacAddress);
-
-               spin_lock_irqsave(&pstapriv->sta_hash_lock, irqL);
-               r8712_free_stainfo(adapter,  psta);
-               spin_unlock_irqrestore(&pstapriv->sta_hash_lock, irqL);
-       }
-
-       if (check_fwstate(pmlmepriv,
-           WIFI_ADHOC_STATE | WIFI_ADHOC_MASTER_STATE | WIFI_AP_STATE))
-               r8712_free_all_stainfo(adapter);
-       if (pwlan)
-               pwlan->fixed = false;
-
-       if (((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) &&
-            (adapter->stapriv.asoc_sta_count == 1)))
-               free_network_nolock(pmlmepriv, pwlan);
-}
-
-/*
- * r8712_indicate_connect: the caller has to lock pmlmepriv->lock
- */
-void r8712_indicate_connect(struct _adapter *padapter)
-{
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-       pmlmepriv->to_join = false;
-       set_fwstate(pmlmepriv, _FW_LINKED);
-       padapter->ledpriv.LedControlHandler(padapter, LED_CTL_LINK);
-       r8712_os_indicate_connect(padapter);
-       if (padapter->registrypriv.power_mgnt > PS_MODE_ACTIVE)
-               mod_timer(&pmlmepriv->dhcp_timer,
-                         jiffies + msecs_to_jiffies(60000));
-}
-
-/*
- * r8712_ind_disconnect: the caller has to lock pmlmepriv->lock
- */
-void r8712_ind_disconnect(struct _adapter *padapter)
-{
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-
-       if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-               _clr_fwstate_(pmlmepriv, _FW_LINKED);
-               padapter->ledpriv.LedControlHandler(padapter, LED_CTL_NO_LINK);
-               r8712_os_indicate_disconnect(padapter);
-       }
-       if (padapter->pwrctrlpriv.pwr_mode !=
-           padapter->registrypriv.power_mgnt) {
-               del_timer(&pmlmepriv->dhcp_timer);
-               r8712_set_ps_mode(padapter, padapter->registrypriv.power_mgnt,
-                                 padapter->registrypriv.smart_ps);
-       }
-}
-
-/*Notes:
- *pnetwork : returns from r8712_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 r8712_joinbss_event_callback(struct _adapter *adapter, u8 *pbuf)
-{
-       unsigned long irqL = 0, irqL2;
-       struct sta_info *ptarget_sta = NULL, *pcur_sta = NULL;
-       struct sta_priv *pstapriv = &adapter->stapriv;
-       struct mlme_priv        *pmlmepriv = &adapter->mlmepriv;
-       struct wlan_network     *cur_network = &pmlmepriv->cur_network;
-       struct wlan_network     *pcur_wlan = NULL, *ptarget_wlan = NULL;
-       unsigned int            the_same_macaddr = false;
-       struct wlan_network *pnetwork;
-
-       if (sizeof(struct list_head) == 4 * sizeof(u32)) {
-               pnetwork = kmalloc(sizeof(struct wlan_network), GFP_ATOMIC);
-               if (!pnetwork)
-                       return;
-               memcpy((u8 *)pnetwork + 16, (u8 *)pbuf + 8,
-                      sizeof(struct wlan_network) - 16);
-       } else {
-               pnetwork = (struct wlan_network *)pbuf;
-       }
-
-#ifdef __BIG_ENDIAN
-       /* endian_convert */
-       pnetwork->join_res = le32_to_cpu(pnetwork->join_res);
-       pnetwork->network_type = le32_to_cpu(pnetwork->network_type);
-       pnetwork->network.Length = le32_to_cpu(pnetwork->network.Length);
-       pnetwork->network.Ssid.SsidLength =
-                le32_to_cpu(pnetwork->network.Ssid.SsidLength);
-       pnetwork->network.Privacy = le32_to_cpu(pnetwork->network.Privacy);
-       pnetwork->network.Rssi = le32_to_cpu(pnetwork->network.Rssi);
-       pnetwork->network.NetworkTypeInUse =
-                le32_to_cpu(pnetwork->network.NetworkTypeInUse);
-       pnetwork->network.Configuration.ATIMWindow =
-                le32_to_cpu(pnetwork->network.Configuration.ATIMWindow);
-       pnetwork->network.Configuration.BeaconPeriod =
-                le32_to_cpu(pnetwork->network.Configuration.BeaconPeriod);
-       pnetwork->network.Configuration.DSConfig =
-                le32_to_cpu(pnetwork->network.Configuration.DSConfig);
-       pnetwork->network.Configuration.FHConfig.DwellTime =
-                le32_to_cpu(pnetwork->network.Configuration.FHConfig.DwellTime);
-       pnetwork->network.Configuration.FHConfig.HopPattern =
-                le32_to_cpu(pnetwork->network.Configuration.FHConfig.HopPattern);
-       pnetwork->network.Configuration.FHConfig.HopSet =
-                le32_to_cpu(pnetwork->network.Configuration.FHConfig.HopSet);
-       pnetwork->network.Configuration.FHConfig.Length =
-                le32_to_cpu(pnetwork->network.Configuration.FHConfig.Length);
-       pnetwork->network.Configuration.Length =
-                le32_to_cpu(pnetwork->network.Configuration.Length);
-       pnetwork->network.InfrastructureMode =
-                le32_to_cpu(pnetwork->network.InfrastructureMode);
-       pnetwork->network.IELength = le32_to_cpu(pnetwork->network.IELength);
-#endif
-
-       the_same_macaddr = !memcmp(pnetwork->network.MacAddress,
-                                  cur_network->network.MacAddress, ETH_ALEN);
-       pnetwork->network.Length =
-                r8712_get_wlan_bssid_ex_sz(&pnetwork->network);
-       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-       if (pnetwork->network.Length > sizeof(struct wlan_bssid_ex))
-               goto ignore_joinbss_callback;
-       if (pnetwork->join_res > 0) {
-               if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) {
-                       /*s1. find ptarget_wlan*/
-                       if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-                               if (the_same_macaddr) {
-                                       ptarget_wlan =
-                                           r8712_find_network(&pmlmepriv->scanned_queue,
-                                           cur_network->network.MacAddress);
-                               } else {
-                                       pcur_wlan =
-                                            r8712_find_network(&pmlmepriv->scanned_queue,
-                                            cur_network->network.MacAddress);
-                                       if (pcur_wlan)
-                                               pcur_wlan->fixed = false;
-
-                                       pcur_sta = r8712_get_stainfo(pstapriv,
-                                            cur_network->network.MacAddress);
-                                       spin_lock_irqsave(&pstapriv->sta_hash_lock, irqL2);
-                                       r8712_free_stainfo(adapter, pcur_sta);
-                                       spin_unlock_irqrestore(&(pstapriv->sta_hash_lock), irqL2);
-
-                                       ptarget_wlan =
-                                                r8712_find_network(&pmlmepriv->scanned_queue,
-                                                pnetwork->network.MacAddress);
-                                       if (ptarget_wlan)
-                                               ptarget_wlan->fixed = true;
-                               }
-                       } else {
-                               ptarget_wlan = r8712_find_network(&pmlmepriv->scanned_queue,
-                                               pnetwork->network.MacAddress);
-                               if (ptarget_wlan)
-                                       ptarget_wlan->fixed = true;
-                       }
-
-                       if (!ptarget_wlan) {
-                               if (check_fwstate(pmlmepriv,
-                                       _FW_UNDER_LINKING))
-                                       pmlmepriv->fw_state ^=
-                                                _FW_UNDER_LINKING;
-                               goto ignore_joinbss_callback;
-                       }
-
-                       /*s2. find ptarget_sta & update ptarget_sta*/
-                       if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
-                               if (the_same_macaddr) {
-                                       ptarget_sta =
-                                                r8712_get_stainfo(pstapriv,
-                                                pnetwork->network.MacAddress);
-                                       if (!ptarget_sta)
-                                               ptarget_sta =
-                                                r8712_alloc_stainfo(pstapriv,
-                                                pnetwork->network.MacAddress);
-                               } else {
-                                       ptarget_sta =
-                                                r8712_alloc_stainfo(pstapriv,
-                                                pnetwork->network.MacAddress);
-                               }
-                               if (ptarget_sta) /*update ptarget_sta*/ {
-                                       ptarget_sta->aid = pnetwork->join_res;
-                                       ptarget_sta->qos_option = 1;
-                                       ptarget_sta->mac_id = 5;
-                                       if (adapter->securitypriv.AuthAlgrthm == 2) {
-                                               adapter->securitypriv.binstallGrpkey = false;
-                                               adapter->securitypriv.busetkipkey = false;
-                                               adapter->securitypriv.bgrpkey_handshake = false;
-                                               ptarget_sta->ieee8021x_blocked = true;
-                                               ptarget_sta->XPrivacy = adapter->
-                                               securitypriv.PrivacyAlgrthm;
-                                               memset((u8 *)&ptarget_sta->x_UncstKey,
-                                                        0,
-                                                        sizeof(union Keytype));
-                                               memset((u8 *)&ptarget_sta->tkiprxmickey,
-                                                        0,
-                                                        sizeof(union Keytype));
-                                               memset((u8 *)&ptarget_sta->tkiptxmickey,
-                                                        0,
-                                                        sizeof(union Keytype));
-                                               memset((u8 *)&ptarget_sta->txpn, 0,
-                                                        sizeof(union pn48));
-                                               memset((u8 *)&ptarget_sta->rxpn, 0,
-                                                        sizeof(union pn48));
-                                       }
-                               } else {
-                                       if (check_fwstate(pmlmepriv,
-                                           _FW_UNDER_LINKING))
-                                               pmlmepriv->fw_state ^=
-                                                        _FW_UNDER_LINKING;
-                                       goto ignore_joinbss_callback;
-                               }
-                       }
-
-                       /*s3. update cur_network & indicate connect*/
-                       memcpy(&cur_network->network, &pnetwork->network,
-                               pnetwork->network.Length);
-                       cur_network->aid = pnetwork->join_res;
-                       /*update fw_state will clr _FW_UNDER_LINKING*/
-                       switch (pnetwork->network.InfrastructureMode) {
-                       case Ndis802_11Infrastructure:
-                               pmlmepriv->fw_state = WIFI_STATION_STATE;
-                               break;
-                       case Ndis802_11IBSS:
-                               pmlmepriv->fw_state = WIFI_ADHOC_STATE;
-                               break;
-                       default:
-                               pmlmepriv->fw_state = WIFI_NULL_STATE;
-                               break;
-                       }
-                       r8712_update_protection(adapter,
-                                         (cur_network->network.IEs) +
-                                         sizeof(struct NDIS_802_11_FIXED_IEs),
-                                         (cur_network->network.IELength));
-                       /*TODO: update HT_Capability*/
-                       update_ht_cap(adapter, cur_network->network.IEs,
-                                     cur_network->network.IELength);
-                       /*indicate connect*/
-                       if (check_fwstate(pmlmepriv, WIFI_STATION_STATE))
-                               r8712_indicate_connect(adapter);
-                       del_timer(&pmlmepriv->assoc_timer);
-               } else {
-                       goto ignore_joinbss_callback;
-               }
-       } else {
-               if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) {
-                       mod_timer(&pmlmepriv->assoc_timer,
-                                 jiffies + msecs_to_jiffies(1));
-                       _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
-               }
-       }
-ignore_joinbss_callback:
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-       if (sizeof(struct list_head) == 4 * sizeof(u32))
-               kfree(pnetwork);
-}
-
-void r8712_stassoc_event_callback(struct _adapter *adapter, u8 *pbuf)
-{
-       unsigned long irqL;
-       struct sta_info *psta;
-       struct mlme_priv *pmlmepriv = &(adapter->mlmepriv);
-       struct stassoc_event *pstassoc  = (struct stassoc_event *)pbuf;
-
-       /* to do: */
-       if (!r8712_access_ctrl(&adapter->acl_list, pstassoc->macaddr))
-               return;
-       psta = r8712_get_stainfo(&adapter->stapriv, pstassoc->macaddr);
-       if (psta) {
-               /*the sta have been in sta_info_queue => do nothing
-                *(between drv has received this event before and
-                * fw have not yet to set key to CAM_ENTRY)
-                */
-               return;
-       }
-
-       psta = r8712_alloc_stainfo(&adapter->stapriv, pstassoc->macaddr);
-       if (!psta)
-               return;
-       /* to do : init sta_info variable */
-       psta->qos_option = 0;
-       psta->mac_id = le32_to_cpu(pstassoc->cam_id);
-       /* psta->aid = (uint)pstassoc->cam_id; */
-
-       if (adapter->securitypriv.AuthAlgrthm == 2)
-               psta->XPrivacy = adapter->securitypriv.PrivacyAlgrthm;
-       psta->ieee8021x_blocked = false;
-       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-       if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) ||
-           check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
-               if (adapter->stapriv.asoc_sta_count == 2) {
-                       /* a sta + bc/mc_stainfo (not Ibss_stainfo) */
-                       r8712_indicate_connect(adapter);
-               }
-       }
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-}
-
-void r8712_stadel_event_callback(struct _adapter *adapter, u8 *pbuf)
-{
-       unsigned long irqL, irqL2;
-       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 sta_priv *pstapriv = &adapter->stapriv;
-       struct wlan_network *tgt_network = &pmlmepriv->cur_network;
-
-       spin_lock_irqsave(&pmlmepriv->lock, irqL2);
-       if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
-               r8712_ind_disconnect(adapter);
-               r8712_free_assoc_resources(adapter);
-       }
-       if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE |
-           WIFI_ADHOC_STATE)) {
-               psta = r8712_get_stainfo(&adapter->stapriv, pstadel->macaddr);
-               spin_lock_irqsave(&pstapriv->sta_hash_lock, irqL);
-               r8712_free_stainfo(adapter, psta);
-               spin_unlock_irqrestore(&pstapriv->sta_hash_lock, irqL);
-               if (adapter->stapriv.asoc_sta_count == 1) {
-                       /*a sta + bc/mc_stainfo (not Ibss_stainfo) */
-                       pwlan = r8712_find_network(&pmlmepriv->scanned_queue,
-                               tgt_network->network.MacAddress);
-                       if (pwlan) {
-                               pwlan->fixed = false;
-                               free_network_nolock(pmlmepriv, pwlan);
-                       }
-                       /*re-create ibss*/
-                       pdev_network = &(adapter->registrypriv.dev_network);
-                       pibss = adapter->registrypriv.dev_network.MacAddress;
-                       memcpy(pdev_network, &tgt_network->network,
-                               r8712_get_wlan_bssid_ex_sz(&tgt_network->network));
-                       memcpy(&pdev_network->Ssid,
-                               &pmlmepriv->assoc_ssid,
-                               sizeof(struct ndis_802_11_ssid));
-                       r8712_update_registrypriv_dev_network(adapter);
-                       r8712_generate_random_ibss(pibss);
-                       if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
-                               _clr_fwstate_(pmlmepriv, WIFI_ADHOC_STATE);
-                               set_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE);
-                       }
-               }
-       }
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL2);
-}
-
-void r8712_cpwm_event_callback(struct _adapter *adapter, u8 *pbuf)
-{
-       struct reportpwrstate_parm *preportpwrstate =
-                        (struct reportpwrstate_parm *)pbuf;
-
-       preportpwrstate->state |= (u8)(adapter->pwrctrlpriv.cpwm_tog + 0x80);
-       r8712_cpwm_int_hdl(adapter, preportpwrstate);
-}
-
-/*     When the Netgear 3500 AP is with WPA2PSK-AES mode, it will send
- *      the ADDBA req frame with start seq control = 0 to wifi client after
- *      the WPA handshake and the seqence number of following data packet
- *     will be 0. In this case, the Rx reorder sequence is not longer than 0
- *      and the WiFi client will drop the data with seq number 0.
- *     So, the 8712 firmware has to inform driver with receiving the
- *      ADDBA-Req frame so that the driver can reset the
- *     sequence value of Rx reorder control.
- */
-void r8712_got_addbareq_event_callback(struct _adapter *adapter, u8 *pbuf)
-{
-       struct  ADDBA_Req_Report_parm *pAddbareq_pram =
-                        (struct ADDBA_Req_Report_parm *)pbuf;
-       struct  sta_info *psta;
-       struct  sta_priv *pstapriv = &adapter->stapriv;
-       struct  recv_reorder_ctrl *precvreorder_ctrl = NULL;
-
-       psta = r8712_get_stainfo(pstapriv, pAddbareq_pram->MacAddress);
-       if (psta) {
-               precvreorder_ctrl =
-                        &psta->recvreorder_ctrl[pAddbareq_pram->tid];
-               /* set the indicate_seq to 0xffff so that the rx reorder
-                * can store any following data packet.
-                */
-               precvreorder_ctrl->indicate_seq = 0xffff;
-       }
-}
-
-void r8712_wpspbc_event_callback(struct _adapter *adapter, u8 *pbuf)
-{
-       if (!adapter->securitypriv.wps_hw_pbc_pressed)
-               adapter->securitypriv.wps_hw_pbc_pressed = true;
-}
-
-void _r8712_sitesurvey_ctrl_handler(struct _adapter *adapter)
-{
-       struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-       struct sitesurvey_ctrl  *psitesurveyctrl = &pmlmepriv->sitesurveyctrl;
-       struct registry_priv    *pregistrypriv = &adapter->registrypriv;
-       u64 current_tx_pkts;
-       uint current_rx_pkts;
-
-       current_tx_pkts = (adapter->xmitpriv.tx_pkts) -
-                         (psitesurveyctrl->last_tx_pkts);
-       current_rx_pkts = (adapter->recvpriv.rx_pkts) -
-                         (psitesurveyctrl->last_rx_pkts);
-       psitesurveyctrl->last_tx_pkts = adapter->xmitpriv.tx_pkts;
-       psitesurveyctrl->last_rx_pkts = adapter->recvpriv.rx_pkts;
-       if ((current_tx_pkts > pregistrypriv->busy_thresh) ||
-           (current_rx_pkts > pregistrypriv->busy_thresh))
-               psitesurveyctrl->traffic_busy = true;
-       else
-               psitesurveyctrl->traffic_busy = false;
-}
-
-void _r8712_join_timeout_handler(struct _adapter *adapter)
-{
-       unsigned long irqL;
-       struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-
-       if (adapter->driver_stopped || adapter->surprise_removed)
-               return;
-       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-       _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
-       pmlmepriv->to_join = false;
-       if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-               r8712_os_indicate_disconnect(adapter);
-               _clr_fwstate_(pmlmepriv, _FW_LINKED);
-       }
-       if (adapter->pwrctrlpriv.pwr_mode != adapter->registrypriv.power_mgnt) {
-               r8712_set_ps_mode(adapter, adapter->registrypriv.power_mgnt,
-                                 adapter->registrypriv.smart_ps);
-       }
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-}
-
-void r8712_scan_timeout_handler (struct _adapter *adapter)
-{
-       unsigned long irqL;
-       struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-
-       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-       _clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY);
-       pmlmepriv->to_join = false;     /* scan fail, so clear to_join flag */
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-}
-
-void _r8712_dhcp_timeout_handler (struct _adapter *adapter)
-{
-       if (adapter->driver_stopped || adapter->surprise_removed)
-               return;
-       if (adapter->pwrctrlpriv.pwr_mode != adapter->registrypriv.power_mgnt)
-               r8712_set_ps_mode(adapter, adapter->registrypriv.power_mgnt,
-                           adapter->registrypriv.smart_ps);
-}
-
-int r8712_select_and_join_from_scan(struct mlme_priv *pmlmepriv)
-{
-       struct list_head *phead;
-       unsigned char *dst_ssid, *src_ssid;
-       struct _adapter *adapter;
-       struct  __queue *queue = NULL;
-       struct wlan_network *pnetwork = NULL;
-       struct wlan_network *pnetwork_max_rssi = NULL;
-
-       adapter = (struct _adapter *)pmlmepriv->nic_hdl;
-       queue = &pmlmepriv->scanned_queue;
-       phead = &queue->queue;
-       pmlmepriv->pscanned = phead->next;
-       while (1) {
-               if (end_of_queue_search(phead, pmlmepriv->pscanned)) {
-                       if (pmlmepriv->assoc_by_rssi && pnetwork_max_rssi) {
-                               pnetwork = pnetwork_max_rssi;
-                               goto ask_for_joinbss;
-                       }
-                       return -EINVAL;
-               }
-               pnetwork = container_of(pmlmepriv->pscanned,
-                                       struct wlan_network, list);
-               pmlmepriv->pscanned = pmlmepriv->pscanned->next;
-               if (pmlmepriv->assoc_by_bssid) {
-                       dst_ssid = pnetwork->network.MacAddress;
-                       src_ssid = pmlmepriv->assoc_bssid;
-                       if (!memcmp(dst_ssid, src_ssid, ETH_ALEN)) {
-                               if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-                                       if (is_same_network(&pmlmepriv->cur_network.network,
-                                           &pnetwork->network)) {
-                                               _clr_fwstate_(pmlmepriv,
-                                                       _FW_UNDER_LINKING);
-                                               /*r8712_indicate_connect again*/
-                                               r8712_indicate_connect(adapter);
-                                               return 2;
-                                       }
-                                       r8712_disassoc_cmd(adapter);
-                                       r8712_ind_disconnect(adapter);
-                                       r8712_free_assoc_resources(adapter);
-                               }
-                               goto ask_for_joinbss;
-                       }
-               } else if (pmlmepriv->assoc_ssid.SsidLength == 0) {
-                       goto ask_for_joinbss;
-               }
-               dst_ssid = pnetwork->network.Ssid.Ssid;
-               src_ssid = pmlmepriv->assoc_ssid.Ssid;
-               if ((pnetwork->network.Ssid.SsidLength ==
-                   pmlmepriv->assoc_ssid.SsidLength) &&
-                   (!memcmp(dst_ssid, src_ssid,
-                    pmlmepriv->assoc_ssid.SsidLength))) {
-                       if (pmlmepriv->assoc_by_rssi) {
-                               /* if the ssid is the same, select the bss
-                                * which has the max rssi
-                                */
-                               if (pnetwork_max_rssi) {
-                                       if (pnetwork->network.Rssi >
-                                           pnetwork_max_rssi->network.Rssi)
-                                               pnetwork_max_rssi = pnetwork;
-                               } else {
-                                       pnetwork_max_rssi = pnetwork;
-                               }
-                       } else if (is_desired_network(adapter, pnetwork)) {
-                               if (check_fwstate(pmlmepriv, _FW_LINKED)) {
-                                       r8712_disassoc_cmd(adapter);
-                                       r8712_free_assoc_resources(adapter);
-                               }
-                               goto ask_for_joinbss;
-                       }
-               }
-       }
-
-ask_for_joinbss:
-       return r8712_joinbss_cmd(adapter, pnetwork);
-}
-
-int r8712_set_auth(struct _adapter *adapter,
-                  struct security_priv *psecuritypriv)
-{
-       struct cmd_priv *pcmdpriv = &adapter->cmdpriv;
-       struct cmd_obj *pcmd;
-       struct setauth_parm *psetauthparm;
-
-       pcmd = kmalloc(sizeof(*pcmd), GFP_ATOMIC);
-       if (!pcmd)
-               return -ENOMEM;
-
-       psetauthparm = kzalloc(sizeof(*psetauthparm), GFP_ATOMIC);
-       if (!psetauthparm) {
-               kfree(pcmd);
-               return -ENOMEM;
-       }
-       psetauthparm->mode = (u8)psecuritypriv->AuthAlgrthm;
-       pcmd->cmdcode = _SetAuth_CMD_;
-       pcmd->parmbuf = (unsigned char *)psetauthparm;
-       pcmd->cmdsz = sizeof(struct setauth_parm);
-       pcmd->rsp = NULL;
-       pcmd->rspsz = 0;
-       INIT_LIST_HEAD(&pcmd->list);
-       r8712_enqueue_cmd(pcmdpriv, pcmd);
-       return 0;
-}
-
-int r8712_set_key(struct _adapter *adapter,
-                 struct security_priv *psecuritypriv,
-                 sint keyid)
-{
-       struct cmd_priv *pcmdpriv = &adapter->cmdpriv;
-       struct cmd_obj *pcmd;
-       struct setkey_parm *psetkeyparm;
-       u8 keylen;
-       int ret;
-
-       pcmd = kmalloc(sizeof(*pcmd), GFP_ATOMIC);
-       if (!pcmd)
-               return -ENOMEM;
-       psetkeyparm = kzalloc(sizeof(*psetkeyparm), GFP_ATOMIC);
-       if (!psetkeyparm) {
-               ret = -ENOMEM;
-               goto err_free_cmd;
-       }
-       if (psecuritypriv->AuthAlgrthm == 2) { /* 802.1X */
-               psetkeyparm->algorithm =
-                        (u8)psecuritypriv->XGrpPrivacy;
-       } else { /* WEP */
-               psetkeyparm->algorithm =
-                        (u8)psecuritypriv->PrivacyAlgrthm;
-       }
-       psetkeyparm->keyid = (u8)keyid;
-
-       switch (psetkeyparm->algorithm) {
-       case _WEP40_:
-               keylen = 5;
-               memcpy(psetkeyparm->key,
-                       psecuritypriv->DefKey[keyid].skey, keylen);
-               break;
-       case _WEP104_:
-               keylen = 13;
-               memcpy(psetkeyparm->key,
-                       psecuritypriv->DefKey[keyid].skey, keylen);
-               break;
-       case _TKIP_:
-               if (keyid < 1 || keyid > 2) {
-                       ret = -EINVAL;
-                       goto err_free_parm;
-               }
-               keylen = 16;
-               memcpy(psetkeyparm->key,
-                       &psecuritypriv->XGrpKey[keyid - 1], keylen);
-               psetkeyparm->grpkey = 1;
-               break;
-       case _AES_:
-               if (keyid < 1 || keyid > 2) {
-                       ret = -EINVAL;
-                       goto err_free_parm;
-               }
-               keylen = 16;
-               memcpy(psetkeyparm->key,
-                       &psecuritypriv->XGrpKey[keyid - 1], keylen);
-               psetkeyparm->grpkey = 1;
-               break;
-       default:
-               ret = -EINVAL;
-               goto err_free_parm;
-       }
-       pcmd->cmdcode = _SetKey_CMD_;
-       pcmd->parmbuf = (u8 *)psetkeyparm;
-       pcmd->cmdsz =  (sizeof(struct setkey_parm));
-       pcmd->rsp = NULL;
-       pcmd->rspsz = 0;
-       INIT_LIST_HEAD(&pcmd->list);
-       r8712_enqueue_cmd(pcmdpriv, pcmd);
-       return 0;
-
-err_free_parm:
-       kfree(psetkeyparm);
-err_free_cmd:
-       kfree(pcmd);
-       return ret;
-}
-
-/* adjust IEs for r8712_joinbss_cmd in WMM */
-int r8712_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 (in_ie[i] == 0xDD && in_ie[i + 2] == 0x00 &&
-                   in_ie[i + 3] == 0x50 && in_ie[i + 4] == 0xF2 &&
-                   in_ie[i + 5] == 0x02 && i + 5 < in_len) {
-                       /*WMM element ID and OUI*/
-                       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().
- *
- * 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;
-}
-
-sint r8712_restruct_sec_ie(struct _adapter *adapter, u8 *in_ie,
-                    u8 *out_ie, uint in_len)
-{
-       u8 authmode = 0, match;
-       u8 sec_ie[IW_CUSTOM_MAX], uncst_oui[4], bkup_ie[255];
-       u8 wpa_oui[4] = {0x0, 0x50, 0xf2, 0x01};
-       uint ielength, cnt, remove_cnt;
-       int iEntry;
-       struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
-       struct security_priv *psecuritypriv = &adapter->securitypriv;
-       uint ndisauthmode = psecuritypriv->ndisauthtype;
-       uint ndissecuritytype = psecuritypriv->ndisencryptstatus;
-
-       if ((ndisauthmode == Ndis802_11AuthModeWPA) ||
-           (ndisauthmode == Ndis802_11AuthModeWPAPSK)) {
-               authmode = _WPA_IE_ID_;
-               uncst_oui[0] = 0x0;
-               uncst_oui[1] = 0x50;
-               uncst_oui[2] = 0xf2;
-       }
-       if ((ndisauthmode == Ndis802_11AuthModeWPA2) ||
-           (ndisauthmode == Ndis802_11AuthModeWPA2PSK)) {
-               authmode = _WPA2_IE_ID_;
-               uncst_oui[0] = 0x0;
-               uncst_oui[1] = 0x0f;
-               uncst_oui[2] = 0xac;
-       }
-       switch (ndissecuritytype) {
-       case Ndis802_11Encryption1Enabled:
-       case Ndis802_11Encryption1KeyAbsent:
-               uncst_oui[3] = 0x1;
-               break;
-       case Ndis802_11Encryption2Enabled:
-       case Ndis802_11Encryption2KeyAbsent:
-               uncst_oui[3] = 0x2;
-               break;
-       case Ndis802_11Encryption3Enabled:
-       case Ndis802_11Encryption3KeyAbsent:
-               uncst_oui[3] = 0x4;
-               break;
-       default:
-               break;
-       }
-       /*Search required WPA or WPA2 IE and copy to sec_ie[] */
-       cnt = 12;
-       match = false;
-       while (cnt < in_len) {
-               if (in_ie[cnt] == authmode) {
-                       if ((authmode == _WPA_IE_ID_) &&
-                           (!memcmp(&in_ie[cnt + 2], &wpa_oui[0], 4))) {
-                               memcpy(&sec_ie[0], &in_ie[cnt],
-                                       in_ie[cnt + 1] + 2);
-                               match = true;
-                               break;
-                       }
-                       if (authmode == _WPA2_IE_ID_) {
-                               memcpy(&sec_ie[0], &in_ie[cnt],
-                                       in_ie[cnt + 1] + 2);
-                               match = true;
-                               break;
-                       }
-                       if (((authmode == _WPA_IE_ID_) &&
-                            (!memcmp(&in_ie[cnt + 2], &wpa_oui[0], 4))) ||
-                            (authmode == _WPA2_IE_ID_))
-                               memcpy(&bkup_ie[0], &in_ie[cnt],
-                                       in_ie[cnt + 1] + 2);
-               }
-               cnt += in_ie[cnt + 1] + 2; /*get next*/
-       }
-       /*restruct WPA IE or WPA2 IE in sec_ie[] */
-       if (match) {
-               if (sec_ie[0] == _WPA_IE_ID_) {
-                       /* parsing SSN IE to select required encryption
-                        * algorithm, and set the bc/mc encryption algorithm
-                        */
-                       while (true) {
-                               /*check wpa_oui tag*/
-                               if (memcmp(&sec_ie[2], &wpa_oui[0], 4)) {
-                                       match = false;
-                                       break;
-                               }
-                               if ((sec_ie[6] != 0x01) || (sec_ie[7] != 0x0)) {
-                                       /*IE Ver error*/
-                                       match = false;
-                                       break;
-                               }
-                               if (!memcmp(&sec_ie[8], &wpa_oui[0], 3)) {
-                                       /* get bc/mc encryption type (group
-                                        * key type)
-                                        */
-                                       switch (sec_ie[11]) {
-                                       case 0x0: /*none*/
-                                               psecuritypriv->XGrpPrivacy =
-                                                               _NO_PRIVACY_;
-                                               break;
-                                       case 0x1: /*WEP_40*/
-                                               psecuritypriv->XGrpPrivacy =
-                                                               _WEP40_;
-                                               break;
-                                       case 0x2: /*TKIP*/
-                                               psecuritypriv->XGrpPrivacy =
-                                                               _TKIP_;
-                                               break;
-                                       case 0x3: /*AESCCMP*/
-                                       case 0x4:
-                                               psecuritypriv->XGrpPrivacy =
-                                                               _AES_;
-                                               break;
-                                       case 0x5: /*WEP_104*/
-                                               psecuritypriv->XGrpPrivacy =
-                                                               _WEP104_;
-                                               break;
-                                       }
-                               } else {
-                                       match = false;
-                                       break;
-                               }
-                               if (sec_ie[12] == 0x01) {
-                                       /*check the unicast encryption type*/
-                                       if (memcmp(&sec_ie[14],
-                                           &uncst_oui[0], 4)) {
-                                               match = false;
-                                               break;
-
-                                       } /*else the uncst_oui is match*/
-                               } else { /*mixed mode, unicast_enc_type > 1*/
-                                       /*select the uncst_oui and remove
-                                        * the other uncst_oui
-                                        */
-                                       cnt = sec_ie[12];
-                                       remove_cnt = (cnt - 1) * 4;
-                                       sec_ie[12] = 0x01;
-                                       memcpy(&sec_ie[14], &uncst_oui[0], 4);
-                                       /*remove the other unicast suit*/
-                                       memcpy(&sec_ie[18],
-                                               &sec_ie[18 + remove_cnt],
-                                               sec_ie[1] - 18 + 2 -
-                                               remove_cnt);
-                                       sec_ie[1] = sec_ie[1] - remove_cnt;
-                               }
-                               break;
-                       }
-               }
-               if (authmode == _WPA2_IE_ID_) {
-                       /* parsing RSN IE to select required encryption
-                        * algorithm, and set the bc/mc encryption algorithm
-                        */
-                       while (true) {
-                               if ((sec_ie[2] != 0x01) || (sec_ie[3] != 0x0)) {
-                                       /*IE Ver error*/
-                                       match = false;
-                                       break;
-                               }
-                               if (!memcmp(&sec_ie[4], &uncst_oui[0], 3)) {
-                                       /*get bc/mc encryption type*/
-                                       switch (sec_ie[7]) {
-                                       case 0x1: /*WEP_40*/
-                                               psecuritypriv->XGrpPrivacy =
-                                                               _WEP40_;
-                                               break;
-                                       case 0x2: /*TKIP*/
-                                               psecuritypriv->XGrpPrivacy =
-                                                               _TKIP_;
-                                               break;
-                                       case 0x4: /*AESWRAP*/
-                                               psecuritypriv->XGrpPrivacy =
-                                                               _AES_;
-                                               break;
-                                       case 0x5: /*WEP_104*/
-                                               psecuritypriv->XGrpPrivacy =
-                                                               _WEP104_;
-                                               break;
-                                       default: /*one*/
-                                               psecuritypriv->XGrpPrivacy =
-                                                               _NO_PRIVACY_;
-                                               break;
-                                       }
-                               } else {
-                                       match = false;
-                                       break;
-                               }
-                               if (sec_ie[8] == 0x01) {
-                                       /*check the unicast encryption type*/
-                                       if (memcmp(&sec_ie[10],
-                                                    &uncst_oui[0], 4)) {
-                                               match = false;
-                                               break;
-                                       } /*else the uncst_oui is match*/
-                               } else { /*mixed mode, unicast_enc_type > 1*/
-                                       /*select the uncst_oui and remove the
-                                        * other uncst_oui
-                                        */
-                                       cnt = sec_ie[8];
-                                       remove_cnt = (cnt - 1) * 4;
-                                       sec_ie[8] = 0x01;
-                                       memcpy(&sec_ie[10], &uncst_oui[0], 4);
-                                       /*remove the other unicast suit*/
-                                       memcpy(&sec_ie[14],
-                                               &sec_ie[14 + remove_cnt],
-                                               (sec_ie[1] - 14 + 2 -
-                                               remove_cnt));
-                                       sec_ie[1] = sec_ie[1] - remove_cnt;
-                               }
-                               break;
-                       }
-               }
-       }
-       if ((authmode == _WPA_IE_ID_) || (authmode == _WPA2_IE_ID_)) {
-               /*copy fixed ie*/
-               memcpy(out_ie, in_ie, 12);
-               ielength = 12;
-               /*copy RSN or SSN*/
-               if (match) {
-                       memcpy(&out_ie[ielength], &sec_ie[0], sec_ie[1] + 2);
-                       ielength += sec_ie[1] + 2;
-                       if (authmode == _WPA2_IE_ID_) {
-                               /*the Pre-Authentication bit should be zero*/
-                               out_ie[ielength - 1] = 0;
-                               out_ie[ielength - 2] = 0;
-                       }
-                       r8712_report_sec_ie(adapter, authmode, sec_ie);
-               }
-       } else {
-               /*copy fixed ie only*/
-               memcpy(out_ie, in_ie, 12);
-               ielength = 12;
-               if (psecuritypriv->wps_phase) {
-                       memcpy(out_ie + ielength, psecuritypriv->wps_ie,
-                              psecuritypriv->wps_ie_len);
-                       ielength += psecuritypriv->wps_ie_len;
-               }
-       }
-       iEntry = SecIsInPMKIDList(adapter, pmlmepriv->assoc_bssid);
-       if (iEntry < 0)
-               return ielength;
-       if (authmode == _WPA2_IE_ID_) {
-               out_ie[ielength] = 1;
-               ielength++;
-               out_ie[ielength] = 0;   /*PMKID count = 0x0100*/
-               ielength++;
-               memcpy(&out_ie[ielength],
-                       &psecuritypriv->PMKIDList[iEntry].PMKID, 16);
-               ielength += 16;
-               out_ie[13] += 18;/*PMKID length = 2+16*/
-       }
-       return ielength;
-}
-
-void r8712_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->MacAddress, myhwaddr, ETH_ALEN);
-       memcpy(&pdev_network->Ssid, &pregistrypriv->ssid,
-               sizeof(struct ndis_802_11_ssid));
-       pdev_network->Configuration.Length =
-                        sizeof(struct NDIS_802_11_CONFIGURATION);
-       pdev_network->Configuration.BeaconPeriod = 100;
-       pdev_network->Configuration.FHConfig.Length = 0;
-       pdev_network->Configuration.FHConfig.HopPattern = 0;
-       pdev_network->Configuration.FHConfig.HopSet = 0;
-       pdev_network->Configuration.FHConfig.DwellTime = 0;
-}
-
-void r8712_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 = cpu_to_le32(psecuritypriv->PrivacyAlgrthm
-                                           > 0 ? 1 : 0); /* adhoc no 802.1x */
-       pdev_network->Rssi = 0;
-       switch (pregistrypriv->wireless_mode) {
-       case WIRELESS_11B:
-               pdev_network->NetworkTypeInUse = Ndis802_11DS;
-               break;
-       case WIRELESS_11G:
-       case WIRELESS_11BG:
-               pdev_network->NetworkTypeInUse = Ndis802_11OFDM24;
-               break;
-       case WIRELESS_11A:
-               pdev_network->NetworkTypeInUse = Ndis802_11OFDM5;
-               break;
-       default:
-               /* TODO */
-               break;
-       }
-       pdev_network->Configuration.DSConfig = pregistrypriv->channel;
-       if (cur_network->network.InfrastructureMode == Ndis802_11IBSS)
-               pdev_network->Configuration.ATIMWindow = 3;
-       pdev_network->InfrastructureMode = cur_network->network.InfrastructureMode;
-       /* 1. Supported rates
-        * 2. IE
-        */
-       sz = r8712_generate_ie(pregistrypriv);
-       pdev_network->IELength = sz;
-       pdev_network->Length = r8712_get_wlan_bssid_ex_sz(pdev_network);
-}
-
-/*the function is at passive_level*/
-void r8712_joinbss_reset(struct _adapter *padapter)
-{
-       int i;
-       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
-        */
-       phtpriv->ampdu_enable = false;/*reset to disabled*/
-       for (i = 0; i < 16; i++)
-               phtpriv->baddbareq_issued[i] = false;/*reset it*/
-       if (phtpriv->ht_option) {
-               /* validate  usb rx aggregation */
-               r8712_write8(padapter, 0x102500D9, 48);/*TH = 48 pages, 6k*/
-       } else {
-               /* invalidate  usb rx aggregation */
-               /* TH=1 => means that invalidate usb rx aggregation */
-               r8712_write8(padapter, 0x102500D9, 1);
-       }
-}
-
-/*the function is >= passive_level*/
-unsigned int r8712_restructure_ht_ie(struct _adapter *padapter, u8 *in_ie,
-                                    u8 *out_ie, uint in_len, uint *pout_len)
-{
-       u32 ielen, out_len;
-       unsigned char *p;
-       struct ieee80211_ht_cap ht_capie;
-       unsigned char WMM_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00};
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct qos_priv *pqospriv = &pmlmepriv->qospriv;
-       struct ht_priv *phtpriv = &pmlmepriv->htpriv;
-
-       phtpriv->ht_option = 0;
-       p = r8712_get_ie(in_ie + 12, WLAN_EID_HT_CAPABILITY, &ielen, in_len - 12);
-       if (p && (ielen > 0)) {
-               if (pqospriv->qos_option == 0) {
-                       out_len = *pout_len;
-                       r8712_set_ie(out_ie + out_len, WLAN_EID_VENDOR_SPECIFIC,
-                                    _WMM_IE_Length_, WMM_IE, pout_len);
-                       pqospriv->qos_option = 1;
-               }
-               out_len = *pout_len;
-               memset(&ht_capie, 0, sizeof(struct ieee80211_ht_cap));
-               ht_capie.cap_info = cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH_20_40 |
-                                   IEEE80211_HT_CAP_SGI_20 |
-                                   IEEE80211_HT_CAP_SGI_40 |
-                                   IEEE80211_HT_CAP_TX_STBC |
-                                   IEEE80211_HT_CAP_MAX_AMSDU |
-                                   IEEE80211_HT_CAP_DSSSCCK40);
-               ht_capie.ampdu_params_info = (IEEE80211_HT_AMPDU_PARM_FACTOR &
-                               0x03) | (IEEE80211_HT_AMPDU_PARM_DENSITY & 0x00);
-               r8712_set_ie(out_ie + out_len, WLAN_EID_HT_CAPABILITY,
-                            sizeof(struct ieee80211_ht_cap),
-                            (unsigned char *)&ht_capie, pout_len);
-               phtpriv->ht_option = 1;
-       }
-       return phtpriv->ht_option;
-}
-
-/* the function is > passive_level (in critical_section) */
-static void update_ht_cap(struct _adapter *padapter, u8 *pie, uint ie_len)
-{
-       u8 *p, max_ampdu_sz;
-       int i;
-       uint len;
-       struct sta_info *bmc_sta, *psta;
-       struct ieee80211_ht_cap *pht_capie;
-       struct recv_reorder_ctrl *preorder_ctrl;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct ht_priv *phtpriv = &pmlmepriv->htpriv;
-       struct registry_priv *pregistrypriv = &padapter->registrypriv;
-       struct wlan_network *pcur_network = &(pmlmepriv->cur_network);
-
-       if (!phtpriv->ht_option)
-               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 = r8712_get_ie(pie + sizeof(struct NDIS_802_11_FIXED_IEs),
-                               WLAN_EID_HT_CAPABILITY,
-                               &len, ie_len -
-                               sizeof(struct NDIS_802_11_FIXED_IEs));
-       if (p && len > 0) {
-               pht_capie = (struct ieee80211_ht_cap *)(p + 2);
-               max_ampdu_sz = (pht_capie->ampdu_params_info &
-                               IEEE80211_HT_AMPDU_PARM_FACTOR);
-               /* max_ampdu_sz (kbytes); */
-               max_ampdu_sz = 1 << (max_ampdu_sz + 3);
-               phtpriv->rx_ampdu_maxlen = max_ampdu_sz;
-       }
-       /* 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
-        */
-       bmc_sta = r8712_get_bcmc_stainfo(padapter);
-       if (bmc_sta) {
-               for (i = 0; i < 16; i++) {
-                       preorder_ctrl = &bmc_sta->recvreorder_ctrl[i];
-                       preorder_ctrl->indicate_seq = 0xffff;
-                       preorder_ctrl->wend_b = 0xffff;
-               }
-       }
-       psta = r8712_get_stainfo(&padapter->stapriv,
-                                pcur_network->network.MacAddress);
-       if (psta) {
-               for (i = 0; i < 16; i++) {
-                       preorder_ctrl = &psta->recvreorder_ctrl[i];
-                       preorder_ctrl->indicate_seq = 0xffff;
-                       preorder_ctrl->wend_b = 0xffff;
-               }
-       }
-       len = 0;
-       p = r8712_get_ie(pie + sizeof(struct NDIS_802_11_FIXED_IEs),
-                  WLAN_EID_HT_OPERATION, &len,
-                  ie_len - sizeof(struct NDIS_802_11_FIXED_IEs));
-}
-
-void r8712_issue_addbareq_cmd(struct _adapter *padapter, int priority)
-{
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct ht_priv   *phtpriv = &pmlmepriv->htpriv;
-
-       if ((phtpriv->ht_option == 1) && (phtpriv->ampdu_enable)) {
-               if (!phtpriv->baddbareq_issued[priority]) {
-                       r8712_addbareq_cmd(padapter, (u8)priority);
-                       phtpriv->baddbareq_issued[priority] = true;
-               }
-       }
-}
diff --git a/drivers/staging/rtl8712/rtl871x_mlme.h b/drivers/staging/rtl8712/rtl871x_mlme.h
deleted file mode 100644 (file)
index d7d25f2..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL871X_MLME_H_
-#define __RTL871X_MLME_H_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "wlan_bssdef.h"
-
-#define        MAX_BSS_CNT     64
-#define   MAX_JOIN_TIMEOUT     6000
-
-#define                SCANNING_TIMEOUT        4500
-
-#define        SCANQUEUE_LIFETIME 20 /* unit:sec */
-
-#define                WIFI_NULL_STATE 0x00000000
-#define        WIFI_ASOC_STATE         0x00000001      /* Under Linked state...*/
-#define                WIFI_REASOC_STATE 0x00000002
-#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_SITE_MONITOR      0x00000800      /* to indicate the station
-                                                * is under site surveying
-                                                */
-#define        WIFI_MP_STATE           0x00010000
-#define        WIFI_MP_CTX_BACKGROUND  0x00020000      /* in cont. tx background*/
-#define        WIFI_MP_CTX_ST          0x00040000      /* in cont. tx with
-                                                * single-tone
-                                                */
-#define        WIFI_MP_CTX_BACKGROUND_PENDING  0x00080000 /* pending in cont, tx
-                                                   * background due
-                                                   * to out of skb
-                                                   */
-#define        WIFI_MP_CTX_CCK_HW      0x00100000      /* in continuous tx*/
-#define        WIFI_MP_CTX_CCK_CS      0x00200000      /* in cont, tx with carrier
-                                                * suppression
-                                                */
-#define   WIFI_MP_LPBK_STATE   0x00400000
-
-#define _FW_UNDER_LINKING      WIFI_UNDER_LINKING
-#define _FW_LINKED             WIFI_ASOC_STATE
-#define _FW_UNDER_SURVEY       WIFI_SITE_MONITOR
-
-/*
- * 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 _queue has its own locks, already.
- * Other items are protected by mlme_priv.lock.
- * To avoid possible dead lock, any thread trying to modify mlme_priv
- * SHALL not lock up more than one lock at a time!
- */
-
-#define traffic_threshold      10
-#define        traffic_scan_period     500
-
-struct sitesurvey_ctrl {
-       u64     last_tx_pkts;
-       uint    last_rx_pkts;
-       sint    traffic_busy;
-       struct timer_list sitesurvey_ctrl_timer;
-};
-
-struct mlme_priv {
-       spinlock_t lock;
-       spinlock_t lock2;
-       sint    fw_state;       /*shall we protect this variable? */
-       u8 to_join; /*flag*/
-       u8 *nic_hdl;
-       struct list_head *pscanned;
-       struct  __queue free_bss_pool;
-       struct  __queue scanned_queue;
-       u8 *free_bss_buf;
-       unsigned long num_of_scanned;
-       u8 passive_mode; /*add for Android's SCAN-ACTIVE/SCAN-PASSIVE */
-       struct ndis_802_11_ssid assoc_ssid;
-       u8 assoc_bssid[6];
-       struct wlan_network cur_network;
-       struct sitesurvey_ctrl sitesurveyctrl;
-       struct timer_list assoc_timer;
-       uint assoc_by_bssid;
-       uint assoc_by_rssi;
-       struct timer_list scan_to_timer; /* driver handles scan_timeout.*/
-       struct timer_list dhcp_timer; /* set dhcp to if driver in ps mode.*/
-       struct qos_priv qospriv;
-       struct ht_priv  htpriv;
-       struct timer_list wdg_timer; /*watchdog periodic timer*/
-};
-
-static inline u8 *get_bssid(struct mlme_priv *pmlmepriv)
-{
-       return pmlmepriv->cur_network.network.MacAddress;
-}
-
-static inline u8 check_fwstate(struct mlme_priv *pmlmepriv, sint state)
-{
-       if (pmlmepriv->fw_state & state)
-               return true;
-       return false;
-}
-
-static inline sint 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:#### (!!!!)
- * TAKE CARE BEFORE CALLING THIS FUNC, LOCK pmlmepriv->lock
- */
-static inline void set_fwstate(struct mlme_priv *pmlmepriv, sint state)
-{
-       pmlmepriv->fw_state |= state;
-}
-
-static inline void _clr_fwstate_(struct mlme_priv *pmlmepriv, sint state)
-{
-       pmlmepriv->fw_state &= ~state;
-}
-
-/*
- * No Limit on the calling context,
- * therefore set it to be the critical section...
- */
-static inline void clr_fwstate(struct mlme_priv *pmlmepriv, sint state)
-{
-       unsigned long irqL;
-
-       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-       if (check_fwstate(pmlmepriv, state))
-               pmlmepriv->fw_state ^= state;
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-}
-
-static inline void set_scanned_network_val(struct mlme_priv *pmlmepriv,
-                                            sint val)
-{
-       unsigned long irqL;
-
-       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-       pmlmepriv->num_of_scanned = val;
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-}
-
-void r8712_survey_event_callback(struct _adapter *adapter, u8 *pbuf);
-void r8712_surveydone_event_callback(struct _adapter *adapter, u8 *pbuf);
-void r8712_joinbss_event_callback(struct _adapter *adapter, u8 *pbuf);
-void r8712_stassoc_event_callback(struct _adapter *adapter, u8 *pbuf);
-void r8712_stadel_event_callback(struct _adapter *adapter, u8 *pbuf);
-void r8712_atimdone_event_callback(struct _adapter *adapter, u8 *pbuf);
-void r8712_cpwm_event_callback(struct _adapter *adapter, u8 *pbuf);
-void r8712_wpspbc_event_callback(struct _adapter *adapter, u8 *pbuf);
-void r8712_free_network_queue(struct _adapter *adapter);
-int r8712_init_mlme_priv(struct _adapter *adapter);
-void r8712_free_mlme_priv(struct mlme_priv *pmlmepriv);
-int r8712_select_and_join_from_scan(struct mlme_priv *pmlmepriv);
-int r8712_set_key(struct _adapter *adapter,
-                 struct security_priv *psecuritypriv, sint keyid);
-int r8712_set_auth(struct _adapter *adapter,
-                  struct security_priv *psecuritypriv);
-uint r8712_get_wlan_bssid_ex_sz(struct wlan_bssid_ex *bss);
-void r8712_generate_random_ibss(u8 *pibss);
-u8 *r8712_get_capability_from_ie(u8 *ie);
-struct wlan_network *r8712_get_oldest_wlan_network(
-                               struct  __queue *scanned_queue);
-void r8712_free_assoc_resources(struct _adapter *adapter);
-void r8712_ind_disconnect(struct _adapter *adapter);
-void r8712_indicate_connect(struct _adapter *adapter);
-int r8712_restruct_sec_ie(struct _adapter *adapter, u8 *in_ie,
-                         u8 *out_ie, uint in_len);
-int r8712_restruct_wmm_ie(struct _adapter *adapter, u8 *in_ie,
-                         u8 *out_ie, uint in_len, uint initial_out_len);
-void r8712_init_registrypriv_dev_network(struct _adapter *adapter);
-void r8712_update_registrypriv_dev_network(struct _adapter *adapter);
-void _r8712_sitesurvey_ctrl_handler(struct _adapter *adapter);
-void _r8712_join_timeout_handler(struct _adapter *adapter);
-void r8712_scan_timeout_handler(struct _adapter *adapter);
-void _r8712_dhcp_timeout_handler(struct _adapter *adapter);
-struct wlan_network *_r8712_alloc_network(struct mlme_priv *pmlmepriv);
-sint r8712_if_up(struct _adapter *padapter);
-void r8712_joinbss_reset(struct _adapter *padapter);
-unsigned int r8712_restructure_ht_ie(struct _adapter *padapter, u8 *in_ie,
-                                    u8 *out_ie, uint in_len, uint *pout_len);
-void r8712_issue_addbareq_cmd(struct _adapter *padapter, int priority);
-int r8712_is_same_ibss(struct _adapter *adapter, struct wlan_network *pnetwork);
-
-#endif /*__RTL871X_MLME_H_*/
diff --git a/drivers/staging/rtl8712/rtl871x_mp.c b/drivers/staging/rtl8712/rtl871x_mp.c
deleted file mode 100644 (file)
index 099c512..0000000
+++ /dev/null
@@ -1,724 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#define _RTL871X_MP_C_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "rtl871x_mp_phy_regdef.h"
-#include "rtl8712_cmd.h"
-
-static void _init_mp_priv_(struct mp_priv *pmp_priv)
-{
-       pmp_priv->mode = _LOOPBOOK_MODE_;
-       pmp_priv->curr_ch = 1;
-       pmp_priv->curr_modem = MIXED_PHY;
-       pmp_priv->curr_rateidx = 0;
-       pmp_priv->curr_txpoweridx = 0x14;
-       pmp_priv->antenna_tx = ANTENNA_A;
-       pmp_priv->antenna_rx = ANTENNA_AB;
-       pmp_priv->check_mp_pkt = 0;
-       pmp_priv->tx_pktcount = 0;
-       pmp_priv->rx_pktcount = 0;
-       pmp_priv->rx_crcerrpktcount = 0;
-}
-
-static int init_mp_priv(struct mp_priv *pmp_priv)
-{
-       int i;
-       struct mp_xmit_frame *pmp_xmitframe;
-
-       _init_mp_priv_(pmp_priv);
-       _init_queue(&pmp_priv->free_mp_xmitqueue);
-       pmp_priv->pallocated_mp_xmitframe_buf = NULL;
-       pmp_priv->pallocated_mp_xmitframe_buf = kmalloc(NR_MP_XMITFRAME *
-                               sizeof(struct mp_xmit_frame) + 4,
-                               GFP_ATOMIC);
-       if (!pmp_priv->pallocated_mp_xmitframe_buf)
-               return -ENOMEM;
-
-       pmp_priv->pmp_xmtframe_buf = pmp_priv->pallocated_mp_xmitframe_buf +
-                        4 -
-                        ((addr_t)(pmp_priv->pallocated_mp_xmitframe_buf) & 3);
-       pmp_xmitframe = (struct mp_xmit_frame *)pmp_priv->pmp_xmtframe_buf;
-       for (i = 0; i < NR_MP_XMITFRAME; i++) {
-               INIT_LIST_HEAD(&(pmp_xmitframe->list));
-               list_add_tail(&(pmp_xmitframe->list),
-                                &(pmp_priv->free_mp_xmitqueue.queue));
-               pmp_xmitframe->pkt = NULL;
-               pmp_xmitframe->frame_tag = MP_FRAMETAG;
-               pmp_xmitframe->padapter = pmp_priv->papdater;
-               pmp_xmitframe++;
-       }
-       pmp_priv->free_mp_xmitframe_cnt = NR_MP_XMITFRAME;
-       return 0;
-}
-
-static int free_mp_priv(struct mp_priv *pmp_priv)
-{
-       kfree(pmp_priv->pallocated_mp_xmitframe_buf);
-       return 0;
-}
-
-void mp871xinit(struct _adapter *padapter)
-{
-       struct mp_priv *pmppriv = &padapter->mppriv;
-
-       pmppriv->papdater = padapter;
-       init_mp_priv(pmppriv);
-}
-
-void mp871xdeinit(struct _adapter *padapter)
-{
-       struct mp_priv *pmppriv = &padapter->mppriv;
-
-       free_mp_priv(pmppriv);
-}
-
-/*
- * Special for bb and rf reg read/write
- */
-static u32 fw_iocmd_read(struct _adapter *pAdapter, struct IOCMD_STRUCT iocmd)
-{
-       u32 cmd32 = 0, val32 = 0;
-       u8 iocmd_class  = iocmd.cmdclass;
-       u16 iocmd_value = iocmd.value;
-       u8 iocmd_idx    = iocmd.index;
-
-       cmd32 = (iocmd_class << 24) | (iocmd_value << 8) | iocmd_idx;
-       if (r8712_fw_cmd(pAdapter, cmd32))
-               r8712_fw_cmd_data(pAdapter, &val32, 1);
-       else
-               val32 = 0;
-       return val32;
-}
-
-static u8 fw_iocmd_write(struct _adapter *pAdapter,
-                        struct IOCMD_STRUCT iocmd, u32 value)
-{
-       u32 cmd32 = 0;
-       u8 iocmd_class  = iocmd.cmdclass;
-       u32 iocmd_value = iocmd.value;
-       u8 iocmd_idx    = iocmd.index;
-
-       r8712_fw_cmd_data(pAdapter, &value, 0);
-       msleep(100);
-       cmd32 = (iocmd_class << 24) | (iocmd_value << 8) | iocmd_idx;
-       return r8712_fw_cmd(pAdapter, cmd32);
-}
-
-/* offset : 0X800~0XFFF */
-u32 r8712_bb_reg_read(struct _adapter *pAdapter, u16 offset)
-{
-       u8 shift = offset & 0x0003;     /* 4 byte access */
-       u16 bb_addr = offset & 0x0FFC;  /* 4 byte access */
-       u32 bb_val = 0;
-       struct IOCMD_STRUCT iocmd;
-
-       iocmd.cmdclass  = IOCMD_CLASS_BB_RF;
-       iocmd.value     = bb_addr;
-       iocmd.index     = IOCMD_BB_READ_IDX;
-       bb_val = fw_iocmd_read(pAdapter, iocmd);
-       if (shift != 0) {
-               u32 bb_val2 = 0;
-
-               bb_val >>= (shift * 8);
-               iocmd.value += 4;
-               bb_val2 = fw_iocmd_read(pAdapter, iocmd);
-               bb_val2 <<= ((4 - shift) * 8);
-               bb_val |= bb_val2;
-       }
-       return bb_val;
-}
-
-/* offset : 0X800~0XFFF */
-u8 r8712_bb_reg_write(struct _adapter *pAdapter, u16 offset, u32 value)
-{
-       u8 shift = offset & 0x0003;     /* 4 byte access */
-       u16 bb_addr = offset & 0x0FFC;  /* 4 byte access */
-       struct IOCMD_STRUCT iocmd;
-
-       iocmd.cmdclass  = IOCMD_CLASS_BB_RF;
-       iocmd.value     = bb_addr;
-       iocmd.index     = IOCMD_BB_WRITE_IDX;
-       if (shift != 0) {
-               u32 oldValue = 0;
-               u32 newValue = value;
-
-               oldValue = r8712_bb_reg_read(pAdapter, iocmd.value);
-               oldValue &= (0xFFFFFFFF >> ((4 - shift) * 8));
-               value = oldValue | (newValue << (shift * 8));
-               if (!fw_iocmd_write(pAdapter, iocmd, value))
-                       return false;
-               iocmd.value += 4;
-               oldValue = r8712_bb_reg_read(pAdapter, iocmd.value);
-               oldValue &= (0xFFFFFFFF << (shift * 8));
-               value = oldValue | (newValue >> ((4 - shift) * 8));
-       }
-       return fw_iocmd_write(pAdapter, iocmd, value);
-}
-
-/* offset : 0x00 ~ 0xFF */
-u32 r8712_rf_reg_read(struct _adapter *pAdapter, u8 path, u8 offset)
-{
-       u16 rf_addr = (path << 8) | offset;
-       struct IOCMD_STRUCT iocmd;
-
-       iocmd.cmdclass  = IOCMD_CLASS_BB_RF;
-       iocmd.value     = rf_addr;
-       iocmd.index     = IOCMD_RF_READ_IDX;
-       return fw_iocmd_read(pAdapter, iocmd);
-}
-
-u8 r8712_rf_reg_write(struct _adapter *pAdapter, u8 path, u8 offset, u32 value)
-{
-       u16 rf_addr = (path << 8) | offset;
-       struct IOCMD_STRUCT iocmd;
-
-       iocmd.cmdclass  = IOCMD_CLASS_BB_RF;
-       iocmd.value     = rf_addr;
-       iocmd.index     = IOCMD_RF_WRIT_IDX;
-       return fw_iocmd_write(pAdapter, iocmd, value);
-}
-
-static u32 bitshift(u32 bitmask)
-{
-       u32 i;
-
-       for (i = 0; i <= 31; i++)
-               if (((bitmask >> i) &  0x1) == 1)
-                       break;
-       return i;
-}
-
-static u32 get_bb_reg(struct _adapter *pAdapter, u16 offset, u32 bitmask)
-{
-       u32 org_value, bit_shift;
-
-       org_value = r8712_bb_reg_read(pAdapter, offset);
-       bit_shift = bitshift(bitmask);
-       return (org_value & bitmask) >> bit_shift;
-}
-
-static u8 set_bb_reg(struct _adapter *pAdapter,
-                    u16 offset,
-                    u32 bitmask,
-                    u32 value)
-{
-       u32 org_value, bit_shift, new_value;
-
-       if (bitmask != bMaskDWord) {
-               org_value = r8712_bb_reg_read(pAdapter, offset);
-               bit_shift = bitshift(bitmask);
-               new_value = (org_value & (~bitmask)) | (value << bit_shift);
-       } else {
-               new_value = value;
-       }
-       return r8712_bb_reg_write(pAdapter, offset, new_value);
-}
-
-static u32 get_rf_reg(struct _adapter *pAdapter, u8 path, u8 offset,
-                     u32 bitmask)
-{
-       u32 org_value, bit_shift;
-
-       org_value = r8712_rf_reg_read(pAdapter, path, offset);
-       bit_shift = bitshift(bitmask);
-       return (org_value & bitmask) >> bit_shift;
-}
-
-static u8 set_rf_reg(struct _adapter *pAdapter, u8 path, u8 offset, u32 bitmask,
-             u32 value)
-{
-       u32 org_value, bit_shift, new_value;
-
-       if (bitmask != bMaskDWord) {
-               org_value = r8712_rf_reg_read(pAdapter, path, offset);
-               bit_shift = bitshift(bitmask);
-               new_value = (org_value & (~bitmask)) | (value << bit_shift);
-       } else {
-               new_value = value;
-       }
-       return r8712_rf_reg_write(pAdapter, path, offset, new_value);
-}
-
-/*
- * SetChannel
- * Description
- *     Use H2C command to change channel,
- *     not only modify rf register, but also other setting need to be done.
- */
-void r8712_SetChannel(struct _adapter *pAdapter)
-{
-       struct cmd_priv *pcmdpriv = &pAdapter->cmdpriv;
-       struct cmd_obj *pcmd = NULL;
-       struct SetChannel_parm *pparm = NULL;
-       u16 code = GEN_CMD_CODE(_SetChannel);
-
-       pcmd = kmalloc(sizeof(*pcmd), GFP_ATOMIC);
-       if (!pcmd)
-               return;
-       pparm = kmalloc(sizeof(*pparm), GFP_ATOMIC);
-       if (!pparm) {
-               kfree(pcmd);
-               return;
-       }
-       pparm->curr_ch = pAdapter->mppriv.curr_ch;
-       init_h2fwcmd_w_parm_no_rsp(pcmd, pparm, code);
-       r8712_enqueue_cmd(pcmdpriv, pcmd);
-}
-
-static void SetCCKTxPower(struct _adapter *pAdapter, u8 TxPower)
-{
-       u16 TxAGC = 0;
-
-       TxAGC = TxPower;
-       set_bb_reg(pAdapter, rTxAGC_CCK_Mcs32, bTxAGCRateCCK, TxAGC);
-}
-
-static void SetOFDMTxPower(struct _adapter *pAdapter, u8 TxPower)
-{
-       u32 TxAGC = 0;
-
-       TxAGC |= ((TxPower << 24) | (TxPower << 16) | (TxPower << 8) |
-                 TxPower);
-       set_bb_reg(pAdapter, rTxAGC_Rate18_06, bTxAGCRate18_06, TxAGC);
-       set_bb_reg(pAdapter, rTxAGC_Rate54_24, bTxAGCRate54_24, TxAGC);
-       set_bb_reg(pAdapter, rTxAGC_Mcs03_Mcs00, bTxAGCRateMCS3_MCS0, TxAGC);
-       set_bb_reg(pAdapter, rTxAGC_Mcs07_Mcs04, bTxAGCRateMCS7_MCS4, TxAGC);
-       set_bb_reg(pAdapter, rTxAGC_Mcs11_Mcs08, bTxAGCRateMCS11_MCS8, TxAGC);
-       set_bb_reg(pAdapter, rTxAGC_Mcs15_Mcs12, bTxAGCRateMCS15_MCS12, TxAGC);
-}
-
-void r8712_SetTxPower(struct _adapter *pAdapter)
-{
-       u8 TxPower = pAdapter->mppriv.curr_txpoweridx;
-
-       SetCCKTxPower(pAdapter, TxPower);
-       SetOFDMTxPower(pAdapter, TxPower);
-}
-
-void r8712_SetTxAGCOffset(struct _adapter *pAdapter, u32 ulTxAGCOffset)
-{
-       u32 TxAGCOffset_B, TxAGCOffset_C, TxAGCOffset_D, tmpAGC;
-
-       TxAGCOffset_B = ulTxAGCOffset & 0x000000ff;
-       TxAGCOffset_C = (ulTxAGCOffset & 0x0000ff00) >> 8;
-       TxAGCOffset_D = (ulTxAGCOffset & 0x00ff0000) >> 16;
-       tmpAGC = TxAGCOffset_D << 8 | TxAGCOffset_C << 4 | TxAGCOffset_B;
-       set_bb_reg(pAdapter, rFPGA0_TxGainStage,
-                       (bXBTxAGC | bXCTxAGC | bXDTxAGC), tmpAGC);
-}
-
-void r8712_SetDataRate(struct _adapter *pAdapter)
-{
-       u8 path = RF_PATH_A;
-       u8 offset = RF_SYN_G2;
-       u32 value;
-
-       value = (pAdapter->mppriv.curr_rateidx < 4) ? 0x4440 : 0xF200;
-       r8712_rf_reg_write(pAdapter, path, offset, value);
-}
-
-void r8712_SwitchBandwidth(struct _adapter *pAdapter)
-{
-       /* 3 1.Set MAC register : BWOPMODE  bit2:1 20MhzBW */
-       u8 regBwOpMode = 0;
-       u8 Bandwidth = pAdapter->mppriv.curr_bandwidth;
-
-       regBwOpMode = r8712_read8(pAdapter, 0x10250203);
-       if (Bandwidth == HT_CHANNEL_WIDTH_20)
-               regBwOpMode |= BIT(2);
-       else
-               regBwOpMode &= ~(BIT(2));
-       r8712_write8(pAdapter, 0x10250203, regBwOpMode);
-       /* 3 2.Set PHY related register */
-       switch (Bandwidth) {
-       /* 20 MHz channel*/
-       case HT_CHANNEL_WIDTH_20:
-               set_bb_reg(pAdapter, rFPGA0_RFMOD, bRFMOD, 0x0);
-               set_bb_reg(pAdapter, rFPGA1_RFMOD, bRFMOD, 0x0);
-               /* Use PHY_REG.txt default value. Do not need to change.
-                * Correct the tx power for CCK rate in 40M.
-                * It is set in Tx descriptor for 8192x series
-                */
-               set_bb_reg(pAdapter, rFPGA0_AnalogParameter2, bMaskDWord, 0x58);
-               break;
-       /* 40 MHz channel*/
-       case HT_CHANNEL_WIDTH_40:
-               set_bb_reg(pAdapter, rFPGA0_RFMOD, bRFMOD, 0x1);
-               set_bb_reg(pAdapter, rFPGA1_RFMOD, bRFMOD, 0x1);
-               /* Use PHY_REG.txt default value. Do not need to change.
-                * Correct the tx power for CCK rate in 40M.
-                * Set Control channel to upper or lower. These settings are
-                * required only for 40MHz
-                */
-               set_bb_reg(pAdapter, rCCK0_System, bCCKSideBand,
-                          (HAL_PRIME_CHNL_OFFSET_DONT_CARE >> 1));
-               set_bb_reg(pAdapter, rOFDM1_LSTF, 0xC00,
-                          HAL_PRIME_CHNL_OFFSET_DONT_CARE);
-               set_bb_reg(pAdapter, rFPGA0_AnalogParameter2, bMaskDWord, 0x18);
-               break;
-       default:
-               break;
-       }
-
-       /* 3 3.Set RF related register */
-       switch (Bandwidth) {
-       case HT_CHANNEL_WIDTH_20:
-               set_rf_reg(pAdapter, RF_PATH_A, RF_CHNLBW,
-                          BIT(10) | BIT(11), 0x01);
-               break;
-       case HT_CHANNEL_WIDTH_40:
-               set_rf_reg(pAdapter, RF_PATH_A, RF_CHNLBW,
-                          BIT(10) | BIT(11), 0x00);
-               break;
-       default:
-               break;
-       }
-}
-
-/*------------------------------Define structure----------------------------*/
-struct R_ANTENNA_SELECT_OFDM {
-       u32     r_tx_antenna:4;
-       u32     r_ant_l:4;
-       u32     r_ant_non_ht:4;
-       u32     r_ant_ht1:4;
-       u32     r_ant_ht2:4;
-       u32     r_ant_ht_s1:4;
-       u32     r_ant_non_ht_s1:4;
-       u32     OFDM_TXSC:2;
-       u32     Reserved:2;
-};
-
-struct R_ANTENNA_SELECT_CCK {
-       u8      r_cckrx_enable_2:2;
-       u8      r_cckrx_enable:2;
-       u8      r_ccktx_enable:4;
-};
-
-void r8712_SwitchAntenna(struct _adapter *pAdapter)
-{
-       u32     ofdm_tx_en_val = 0, ofdm_tx_ant_sel_val = 0;
-       u8      ofdm_rx_ant_sel_val = 0;
-       u8      cck_ant_select_val = 0;
-       u32     cck_ant_sel_val = 0;
-       struct R_ANTENNA_SELECT_CCK *p_cck_txrx;
-
-       p_cck_txrx = (struct R_ANTENNA_SELECT_CCK *)&cck_ant_select_val;
-
-       switch (pAdapter->mppriv.antenna_tx) {
-       case ANTENNA_A:
-               /* From SD3 Willis suggestion !!! Set RF A=TX and B as standby*/
-               set_bb_reg(pAdapter, rFPGA0_XA_HSSIParameter2, 0xe, 2);
-               set_bb_reg(pAdapter, rFPGA0_XB_HSSIParameter2, 0xe, 1);
-               ofdm_tx_en_val = 0x3;
-               ofdm_tx_ant_sel_val = 0x11111111;/* Power save */
-               p_cck_txrx->r_ccktx_enable = 0x8;
-               break;
-       case ANTENNA_B:
-               set_bb_reg(pAdapter, rFPGA0_XA_HSSIParameter2, 0xe, 1);
-               set_bb_reg(pAdapter, rFPGA0_XB_HSSIParameter2, 0xe, 2);
-               ofdm_tx_en_val = 0x3;
-               ofdm_tx_ant_sel_val = 0x22222222;/* Power save */
-               p_cck_txrx->r_ccktx_enable = 0x4;
-               break;
-       case ANTENNA_AB:        /* For 8192S */
-               set_bb_reg(pAdapter, rFPGA0_XA_HSSIParameter2, 0xe, 2);
-               set_bb_reg(pAdapter, rFPGA0_XB_HSSIParameter2, 0xe, 2);
-               ofdm_tx_en_val = 0x3;
-               ofdm_tx_ant_sel_val = 0x3321333; /* Disable Power save */
-               p_cck_txrx->r_ccktx_enable = 0xC;
-               break;
-       default:
-               break;
-       }
-       /*OFDM Tx*/
-       set_bb_reg(pAdapter, rFPGA1_TxInfo, 0xffffffff, ofdm_tx_ant_sel_val);
-       /*OFDM Tx*/
-       set_bb_reg(pAdapter, rFPGA0_TxInfo, 0x0000000f, ofdm_tx_en_val);
-       switch (pAdapter->mppriv.antenna_rx) {
-       case ANTENNA_A:
-               ofdm_rx_ant_sel_val = 0x1;      /* A */
-               p_cck_txrx->r_cckrx_enable = 0x0; /* default: A */
-               p_cck_txrx->r_cckrx_enable_2 = 0x0; /* option: A */
-               break;
-       case ANTENNA_B:
-               ofdm_rx_ant_sel_val = 0x2;      /* B */
-               p_cck_txrx->r_cckrx_enable = 0x1; /* default: B */
-               p_cck_txrx->r_cckrx_enable_2 = 0x1; /* option: B */
-               break;
-       case ANTENNA_AB:
-               ofdm_rx_ant_sel_val = 0x3; /* AB */
-               p_cck_txrx->r_cckrx_enable = 0x0; /* default:A */
-               p_cck_txrx->r_cckrx_enable_2 = 0x1; /* option:B */
-               break;
-       default:
-               break;
-       }
-       /*OFDM Rx*/
-       set_bb_reg(pAdapter, rOFDM0_TRxPathEnable, 0x0000000f,
-                  ofdm_rx_ant_sel_val);
-       /*OFDM Rx*/
-       set_bb_reg(pAdapter, rOFDM1_TRxPathEnable, 0x0000000f,
-                  ofdm_rx_ant_sel_val);
-
-       cck_ant_sel_val = cck_ant_select_val;
-       /*CCK TxRx*/
-       set_bb_reg(pAdapter, rCCK0_AFESetting, bMaskByte3, cck_ant_sel_val);
-}
-
-static void TriggerRFThermalMeter(struct _adapter *pAdapter)
-{
-       /* 0x24: RF Reg[6:5] */
-       set_rf_reg(pAdapter, RF_PATH_A, RF_T_METER, bRFRegOffsetMask, 0x60);
-}
-
-static u32 ReadRFThermalMeter(struct _adapter *pAdapter)
-{
-       /* 0x24: RF Reg[4:0] */
-       return get_rf_reg(pAdapter, RF_PATH_A, RF_T_METER, 0x1F);
-}
-
-void r8712_GetThermalMeter(struct _adapter *pAdapter, u32 *value)
-{
-       TriggerRFThermalMeter(pAdapter);
-       msleep(1000);
-       *value = ReadRFThermalMeter(pAdapter);
-}
-
-void r8712_SetSingleCarrierTx(struct _adapter *pAdapter, u8 bStart)
-{
-       if (bStart) { /* Start Single Carrier. */
-               /* 1. if OFDM block on? */
-               if (!get_bb_reg(pAdapter, rFPGA0_RFMOD, bOFDMEn))
-                       /*set OFDM block on*/
-                       set_bb_reg(pAdapter, rFPGA0_RFMOD, bOFDMEn, bEnable);
-               /* 2. set CCK test mode off, set to CCK normal mode */
-               set_bb_reg(pAdapter, rCCK0_System, bCCKBBMode, bDisable);
-               /* 3. turn on scramble setting */
-               set_bb_reg(pAdapter, rCCK0_System, bCCKScramble, bEnable);
-               /* 4. Turn On Single Carrier Tx and off the other test modes. */
-               set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMContinueTx, bDisable);
-               set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMSingleCarrier, bEnable);
-               set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMSingleTone, bDisable);
-       } else { /* Stop Single Carrier.*/
-               /* Turn off all test modes.*/
-               set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMContinueTx, bDisable);
-               set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMSingleCarrier,
-                          bDisable);
-               set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMSingleTone, bDisable);
-               msleep(20);
-               /*BB Reset*/
-               set_bb_reg(pAdapter, rPMAC_Reset, bBBResetB, 0x0);
-               set_bb_reg(pAdapter, rPMAC_Reset, bBBResetB, 0x1);
-       }
-}
-
-void r8712_SetSingleToneTx(struct _adapter *pAdapter, u8 bStart)
-{
-       u8 rfPath;
-
-       switch (pAdapter->mppriv.antenna_tx) {
-       case ANTENNA_B:
-               rfPath = RF_PATH_B;
-               break;
-       case ANTENNA_A:
-       default:
-               rfPath = RF_PATH_A;
-               break;
-       }
-       if (bStart) { /* Start Single Tone.*/
-               set_bb_reg(pAdapter, rFPGA0_RFMOD, bCCKEn, bDisable);
-               set_bb_reg(pAdapter, rFPGA0_RFMOD, bOFDMEn, bDisable);
-               set_rf_reg(pAdapter, rfPath, RF_TX_G2, bRFRegOffsetMask,
-                          0xd4000);
-               msleep(100);
-               /* PAD all on.*/
-               set_rf_reg(pAdapter, rfPath, RF_AC, bRFRegOffsetMask, 0x2001f);
-               msleep(100);
-       } else { /* Stop Single Tone.*/
-               set_bb_reg(pAdapter, rFPGA0_RFMOD, bCCKEn, bEnable);
-               set_bb_reg(pAdapter, rFPGA0_RFMOD, bOFDMEn, bEnable);
-               set_rf_reg(pAdapter, rfPath, RF_TX_G2, bRFRegOffsetMask,
-                          0x54000);
-               msleep(100);
-               /* PAD all on.*/
-               set_rf_reg(pAdapter, rfPath, RF_AC, bRFRegOffsetMask, 0x30000);
-               msleep(100);
-       }
-}
-
-void r8712_SetCarrierSuppressionTx(struct _adapter *pAdapter, u8 bStart)
-{
-       if (bStart) { /* Start Carrier Suppression.*/
-               if (pAdapter->mppriv.curr_rateidx <= MPT_RATE_11M) {
-                       /* 1. if CCK block on? */
-                       if (!get_bb_reg(pAdapter, rFPGA0_RFMOD, bCCKEn)) {
-                               /*set CCK block on*/
-                               set_bb_reg(pAdapter, rFPGA0_RFMOD, bCCKEn,
-                                          bEnable);
-                       }
-                       /* Turn Off All Test Mode */
-                       set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMContinueTx,
-                                  bDisable);
-                       set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMSingleCarrier,
-                                  bDisable);
-                       set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMSingleTone,
-                                  bDisable);
-                       /*transmit mode*/
-                       set_bb_reg(pAdapter, rCCK0_System, bCCKBBMode, 0x2);
-                       /*turn off scramble setting*/
-                       set_bb_reg(pAdapter, rCCK0_System, bCCKScramble,
-                                  bDisable);
-                       /*Set CCK Tx Test Rate*/
-                       /*Set FTxRate to 1Mbps*/
-                       set_bb_reg(pAdapter, rCCK0_System, bCCKTxRate, 0x0);
-               }
-       } else { /* Stop Carrier Suppression. */
-               if (pAdapter->mppriv.curr_rateidx <= MPT_RATE_11M) {
-                       /*normal mode*/
-                       set_bb_reg(pAdapter, rCCK0_System, bCCKBBMode, 0x0);
-                       /*turn on scramble setting*/
-                       set_bb_reg(pAdapter, rCCK0_System, bCCKScramble,
-                                  bEnable);
-                       /*BB Reset*/
-                       set_bb_reg(pAdapter, rPMAC_Reset, bBBResetB, 0x0);
-                       set_bb_reg(pAdapter, rPMAC_Reset, bBBResetB, 0x1);
-               }
-       }
-}
-
-static void SetCCKContinuousTx(struct _adapter *pAdapter, u8 bStart)
-{
-       u32 cckrate;
-
-       if (bStart) {
-               /* 1. if CCK block on? */
-               if (!get_bb_reg(pAdapter, rFPGA0_RFMOD, bCCKEn)) {
-                       /*set CCK block on*/
-                       set_bb_reg(pAdapter, rFPGA0_RFMOD, bCCKEn, bEnable);
-               }
-               /* Turn Off All Test Mode */
-               set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMContinueTx, bDisable);
-               set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMSingleCarrier, bDisable);
-               set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMSingleTone, bDisable);
-               /*Set CCK Tx Test Rate*/
-               cckrate  = pAdapter->mppriv.curr_rateidx;
-               set_bb_reg(pAdapter, rCCK0_System, bCCKTxRate, cckrate);
-               /*transmit mode*/
-               set_bb_reg(pAdapter, rCCK0_System, bCCKBBMode, 0x2);
-               /*turn on scramble setting*/
-               set_bb_reg(pAdapter, rCCK0_System, bCCKScramble, bEnable);
-       } else {
-               /*normal mode*/
-               set_bb_reg(pAdapter, rCCK0_System, bCCKBBMode, 0x0);
-               /*turn on scramble setting*/
-               set_bb_reg(pAdapter, rCCK0_System, bCCKScramble, bEnable);
-               /*BB Reset*/
-               set_bb_reg(pAdapter, rPMAC_Reset, bBBResetB, 0x0);
-               set_bb_reg(pAdapter, rPMAC_Reset, bBBResetB, 0x1);
-       }
-} /* mpt_StartCckContTx */
-
-static void SetOFDMContinuousTx(struct _adapter *pAdapter, u8 bStart)
-{
-       if (bStart) {
-               /* 1. if OFDM block on? */
-               if (!get_bb_reg(pAdapter, rFPGA0_RFMOD, bOFDMEn)) {
-                       /*set OFDM block on*/
-                       set_bb_reg(pAdapter, rFPGA0_RFMOD, bOFDMEn, bEnable);
-               }
-               /* 2. set CCK test mode off, set to CCK normal mode*/
-               set_bb_reg(pAdapter, rCCK0_System, bCCKBBMode, bDisable);
-               /* 3. turn on scramble setting */
-               set_bb_reg(pAdapter, rCCK0_System, bCCKScramble, bEnable);
-               /* 4. Turn On Continue Tx and turn off the other test modes.*/
-               set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMContinueTx, bEnable);
-               set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMSingleCarrier, bDisable);
-               set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMSingleTone, bDisable);
-       } else {
-               set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMContinueTx, bDisable);
-               set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMSingleCarrier,
-                          bDisable);
-               set_bb_reg(pAdapter, rOFDM1_LSTF, bOFDMSingleTone, bDisable);
-               msleep(20);
-               /*BB Reset*/
-               set_bb_reg(pAdapter, rPMAC_Reset, bBBResetB, 0x0);
-               set_bb_reg(pAdapter, rPMAC_Reset, bBBResetB, 0x1);
-       }
-} /* mpt_StartOfdmContTx */
-
-void r8712_SetContinuousTx(struct _adapter *pAdapter, u8 bStart)
-{
-       /* ADC turn off [bit24-21] adc port0 ~ port1 */
-       if (bStart) {
-               r8712_bb_reg_write(pAdapter, rRx_Wait_CCCA,
-                                  r8712_bb_reg_read(pAdapter,
-                                  rRx_Wait_CCCA) & 0xFE1FFFFF);
-               msleep(100);
-       }
-       if (pAdapter->mppriv.curr_rateidx <= MPT_RATE_11M)
-               SetCCKContinuousTx(pAdapter, bStart);
-       else if ((pAdapter->mppriv.curr_rateidx >= MPT_RATE_6M) &&
-                (pAdapter->mppriv.curr_rateidx <= MPT_RATE_MCS15))
-               SetOFDMContinuousTx(pAdapter, bStart);
-       /* ADC turn on [bit24-21] adc port0 ~ port1 */
-       if (!bStart)
-               r8712_bb_reg_write(pAdapter, rRx_Wait_CCCA,
-                                  r8712_bb_reg_read(pAdapter,
-                                  rRx_Wait_CCCA) | 0x01E00000);
-}
-
-void r8712_ResetPhyRxPktCount(struct _adapter *pAdapter)
-{
-       u32 i, phyrx_set = 0;
-
-       for (i = OFDM_PPDU_BIT; i <= HT_MPDU_FAIL_BIT; i++) {
-               phyrx_set = 0;
-               phyrx_set |= (i << 28);         /*select*/
-               phyrx_set |= 0x08000000;        /* set counter to zero*/
-               r8712_write32(pAdapter, RXERR_RPT, phyrx_set);
-       }
-}
-
-static u32 GetPhyRxPktCounts(struct _adapter *pAdapter, u32 selbit)
-{
-       /*selection*/
-       u32 phyrx_set = 0;
-       u32 SelectBit;
-
-       SelectBit = selbit << 28;
-       phyrx_set |= (SelectBit & 0xF0000000);
-       r8712_write32(pAdapter, RXERR_RPT, phyrx_set);
-       /*Read packet count*/
-       return r8712_read32(pAdapter, RXERR_RPT) & RPTMaxCount;
-}
-
-u32 r8712_GetPhyRxPktReceived(struct _adapter *pAdapter)
-{
-       u32 OFDM_cnt = GetPhyRxPktCounts(pAdapter, OFDM_MPDU_OK_BIT);
-       u32 CCK_cnt  = GetPhyRxPktCounts(pAdapter, CCK_MPDU_OK_BIT);
-       u32 HT_cnt   = GetPhyRxPktCounts(pAdapter, HT_MPDU_OK_BIT);
-
-       return OFDM_cnt + CCK_cnt + HT_cnt;
-}
-
-u32 r8712_GetPhyRxPktCRC32Error(struct _adapter *pAdapter)
-{
-       u32 OFDM_cnt = GetPhyRxPktCounts(pAdapter, OFDM_MPDU_FAIL_BIT);
-       u32 CCK_cnt  = GetPhyRxPktCounts(pAdapter, CCK_MPDU_FAIL_BIT);
-       u32 HT_cnt   = GetPhyRxPktCounts(pAdapter, HT_MPDU_FAIL_BIT);
-
-       return OFDM_cnt + CCK_cnt + HT_cnt;
-}
diff --git a/drivers/staging/rtl8712/rtl871x_mp.h b/drivers/staging/rtl8712/rtl871x_mp.h
deleted file mode 100644 (file)
index 0a60b1e..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL871X_MP_H_
-#define __RTL871X_MP_H_
-
-#define MPT_NOOP                       0
-#define MPT_READ_MAC_1BYTE             1
-#define MPT_READ_MAC_2BYTE             2
-#define MPT_READ_MAC_4BYTE             3
-#define MPT_WRITE_MAC_1BYTE            4
-#define MPT_WRITE_MAC_2BYTE            5
-#define MPT_WRITE_MAC_4BYTE            6
-#define MPT_READ_BB_CCK                        7
-#define MPT_WRITE_BB_CCK               8
-#define MPT_READ_BB_OFDM               9
-#define MPT_WRITE_BB_OFDM              10
-#define MPT_READ_RF                    11
-#define MPT_WRITE_RF                   12
-#define MPT_READ_EEPROM_1BYTE          13
-#define MPT_WRITE_EEPROM_1BYTE         14
-#define MPT_READ_EEPROM_2BYTE          15
-#define MPT_WRITE_EEPROM_2BYTE         16
-#define MPT_SET_CSTHRESHOLD            21
-#define MPT_SET_INITGAIN               22
-#define MPT_SWITCH_BAND                        23
-#define MPT_SWITCH_CHANNEL             24
-#define MPT_SET_DATARATE               25
-#define MPT_SWITCH_ANTENNA             26
-#define MPT_SET_TX_POWER               27
-#define MPT_SET_CONT_TX                        28
-#define MPT_SET_SINGLE_CARRIER         29
-#define MPT_SET_CARRIER_SUPPRESSION    30
-#define MPT_GET_RATE_TABLE             31
-#define MPT_READ_TSSI                  32
-#define MPT_GET_THERMAL_METER          33
-#define MAX_MP_XMITBUF_SZ      2048
-#define NR_MP_XMITFRAME                8
-
-struct mp_xmit_frame {
-       struct list_head list;
-       struct pkt_attrib attrib;
-       _pkt *pkt;
-       int frame_tag;
-       struct _adapter *padapter;
-       u8 *mem_addr;
-       u16 sz[8];
-       struct urb *pxmit_urb[8];
-       u8 bpending[8];
-       u8 last[8];
-};
-
-struct mp_wiparam {
-       u32 bcompleted;
-       u32 act_type;
-       u32 io_offset;
-       u32 io_value;
-};
-
-struct mp_priv {
-       struct _adapter *papdater;
-       /*OID cmd handler*/
-       struct mp_wiparam workparam;
-       u8 act_in_progress;
-       /*Tx Section*/
-       u8 TID;
-       u32 tx_pktcount;
-       /*Rx Section*/
-       u32 rx_pktcount;
-       u32 rx_crcerrpktcount;
-       u32 rx_pktloss;
-       struct recv_stat rxstat;
-       /*RF/BB relative*/
-       u32 curr_ch;
-       u32 curr_rateidx;
-       u8 curr_bandwidth;
-       u8 curr_modem;
-       u8 curr_txpoweridx;
-       u32 curr_crystalcap;
-       u16 antenna_tx;
-       u16 antenna_rx;
-       u8 curr_rfpath;
-       u8 check_mp_pkt;
-       uint ForcedDataRate;
-       struct wlan_network mp_network;
-       unsigned char network_macaddr[6];
-       /*Testing Flag*/
-       u32 mode;/*0 for normal type packet,
-                 * 1 for loopback packet (16bytes TXCMD)
-                 */
-       sint prev_fw_state;
-       u8 *pallocated_mp_xmitframe_buf;
-       u8 *pmp_xmtframe_buf;
-       struct  __queue free_mp_xmitqueue;
-       u32 free_mp_xmitframe_cnt;
-};
-
-struct IOCMD_STRUCT {
-       u8      cmdclass;
-       u16     value;
-       u8      index;
-};
-
-struct rf_reg_param {
-       u32 path;
-       u32 offset;
-       u32 value;
-};
-
-struct bb_reg_param {
-       u32 offset;
-       u32 value;
-};
-
-/* ======================================================================= */
-
-#define LOWER  true
-#define RAISE  false
-#define IOCMD_CTRL_REG                 0x10250370
-#define IOCMD_DATA_REG                 0x10250374
-#define IOCMD_GET_THERMAL_METER                0xFD000028
-#define IOCMD_CLASS_BB_RF              0xF0
-#define IOCMD_BB_READ_IDX              0x00
-#define IOCMD_BB_WRITE_IDX             0x01
-#define IOCMD_RF_READ_IDX              0x02
-#define IOCMD_RF_WRIT_IDX              0x03
-#define BB_REG_BASE_ADDR               0x800
-#define RF_PATH_A      0
-#define RF_PATH_B      1
-#define RF_PATH_C      2
-#define RF_PATH_D      3
-#define MAX_RF_PATH_NUMS       2
-#define _2MAC_MODE_    0
-#define _LOOPBOOK_MODE_        1
-
-/* MP set force data rate base on the definition. */
-enum {
-       /* CCK rate. */
-       MPT_RATE_1M,    /* 0 */
-       MPT_RATE_2M,
-       MPT_RATE_55M,
-       MPT_RATE_11M,   /* 3 */
-
-       /* OFDM rate. */
-       MPT_RATE_6M,    /* 4 */
-       MPT_RATE_9M,
-       MPT_RATE_12M,
-       MPT_RATE_18M,
-       MPT_RATE_24M,
-       MPT_RATE_36M,
-       MPT_RATE_48M,
-       MPT_RATE_54M,   /* 11 */
-
-       /* HT rate. */
-       MPT_RATE_MCS0,  /* 12 */
-       MPT_RATE_MCS1,
-       MPT_RATE_MCS2,
-       MPT_RATE_MCS3,
-       MPT_RATE_MCS4,
-       MPT_RATE_MCS5,
-       MPT_RATE_MCS6,
-       MPT_RATE_MCS7,  /* 19 */
-       MPT_RATE_MCS8,
-       MPT_RATE_MCS9,
-       MPT_RATE_MCS10,
-       MPT_RATE_MCS11,
-       MPT_RATE_MCS12,
-       MPT_RATE_MCS13,
-       MPT_RATE_MCS14,
-       MPT_RATE_MCS15, /* 27 */
-       MPT_RATE_LAST
-};
-
-/* Represent Channel Width in HT Capabilities */
-enum HT_CHANNEL_WIDTH {
-       HT_CHANNEL_WIDTH_20 = 0,
-       HT_CHANNEL_WIDTH_40 = 1,
-};
-
-#define MAX_TX_PWR_INDEX_N_MODE 64     /* 0x3F */
-
-enum POWER_MODE {
-       POWER_LOW = 0,
-       POWER_NORMAL
-};
-
-#define RX_PKT_BROADCAST       1
-#define RX_PKT_DEST_ADDR       2
-#define RX_PKT_PHY_MATCH       3
-
-#define RPTMaxCount 0x000FFFFF
-
-/* parameter 1 : BitMask
- *     bit 0  : OFDM PPDU
- *     bit 1  : OFDM False Alarm
- *     bit 2  : OFDM MPDU OK
- *     bit 3  : OFDM MPDU Fail
- *     bit 4  : CCK PPDU
- *     bit 5  : CCK False Alarm
- *     bit 6  : CCK MPDU ok
- *     bit 7  : CCK MPDU fail
- *     bit 8  : HT PPDU counter
- *     bit 9  : HT false alarm
- *     bit 10 : HT MPDU total
- *     bit 11 : HT MPDU OK
- *     bit 12 : HT MPDU fail
- *     bit 15 : RX full drop
- */
-enum RXPHY_BITMASK {
-       OFDM_PPDU_BIT = 0,
-       OFDM_MPDU_OK_BIT,
-       OFDM_MPDU_FAIL_BIT,
-       CCK_PPDU_BIT,
-       CCK_MPDU_OK_BIT,
-       CCK_MPDU_FAIL_BIT,
-       HT_PPDU_BIT,
-       HT_MPDU_BIT,
-       HT_MPDU_OK_BIT,
-       HT_MPDU_FAIL_BIT,
-};
-
-enum ENCRY_CTRL_STATE {
-       HW_CONTROL,             /*hw encryption& decryption*/
-       SW_CONTROL,             /*sw encryption& decryption*/
-       HW_ENCRY_SW_DECRY,      /*hw encryption & sw decryption*/
-       SW_ENCRY_HW_DECRY       /*sw encryption & hw decryption*/
-};
-
-/* Bandwidth Offset */
-#define HAL_PRIME_CHNL_OFFSET_DONT_CARE        0
-#define HAL_PRIME_CHNL_OFFSET_LOWER    1
-#define HAL_PRIME_CHNL_OFFSET_UPPER    2
-/*=======================================================================*/
-void mp871xinit(struct _adapter *padapter);
-void mp871xdeinit(struct _adapter *padapter);
-u32 r8712_bb_reg_read(struct _adapter *Adapter, u16 offset);
-u8 r8712_bb_reg_write(struct _adapter *Adapter, u16 offset, u32 value);
-u32 r8712_rf_reg_read(struct _adapter *Adapter, u8 path, u8 offset);
-u8 r8712_rf_reg_write(struct _adapter *Adapter, u8 path,
-                     u8 offset, u32 value);
-u32 r8712_get_bb_reg(struct _adapter *Adapter, u16 offset, u32 bitmask);
-u8 r8712_set_bb_reg(struct _adapter *Adapter, u16 offset,
-                   u32 bitmask, u32 value);
-u32 r8712_get_rf_reg(struct _adapter *Adapter, u8 path, u8 offset,
-                    u32 bitmask);
-u8 r8712_set_rf_reg(struct _adapter *Adapter, u8 path, u8 offset,
-                   u32 bitmask, u32 value);
-
-void r8712_SetChannel(struct _adapter *pAdapter);
-void r8712_SetTxPower(struct _adapter *pAdapte);
-void r8712_SetTxAGCOffset(struct _adapter *pAdapter, u32 ulTxAGCOffset);
-void r8712_SetDataRate(struct _adapter *pAdapter);
-void r8712_SwitchBandwidth(struct _adapter *pAdapter);
-void r8712_SwitchAntenna(struct _adapter *pAdapter);
-void r8712_GetThermalMeter(struct _adapter *pAdapter, u32 *value);
-void r8712_SetContinuousTx(struct _adapter *pAdapter, u8 bStart);
-void r8712_SetSingleCarrierTx(struct _adapter *pAdapter, u8 bStart);
-void r8712_SetSingleToneTx(struct _adapter *pAdapter, u8 bStart);
-void r8712_SetCarrierSuppressionTx(struct _adapter *pAdapter, u8 bStart);
-void r8712_ResetPhyRxPktCount(struct _adapter *pAdapter);
-u32 r8712_GetPhyRxPktReceived(struct _adapter *pAdapter);
-u32 r8712_GetPhyRxPktCRC32Error(struct _adapter *pAdapter);
-
-#endif /*__RTL871X_MP_H_*/
-
diff --git a/drivers/staging/rtl8712/rtl871x_mp_ioctl.c b/drivers/staging/rtl8712/rtl871x_mp_ioctl.c
deleted file mode 100644 (file)
index 26fa09b..0000000
+++ /dev/null
@@ -1,883 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl871x_mp_ioctl.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#include <linux/rndis.h>
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "mlme_osdep.h"
-#include "rtl871x_mp.h"
-#include "rtl871x_mp_ioctl.h"
-
-uint oid_null_function(struct oid_par_priv *poid_par_priv)
-{
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_wireless_mode_hdl(struct oid_par_priv *poid_par_priv)
-{
-       uint status = RNDIS_STATUS_SUCCESS;
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       if (poid_par_priv->type_of_oid == SET_OID) {
-               if (poid_par_priv->information_buf_len >= sizeof(u8))
-                       Adapter->registrypriv.wireless_mode =
-                                       *(u8 *)poid_par_priv->information_buf;
-               else
-                       status = RNDIS_STATUS_INVALID_LENGTH;
-       } else if (poid_par_priv->type_of_oid == QUERY_OID) {
-               if (poid_par_priv->information_buf_len >= sizeof(u8)) {
-                       *(u8 *)poid_par_priv->information_buf =
-                                        Adapter->registrypriv.wireless_mode;
-                       *poid_par_priv->bytes_rw =
-                                       poid_par_priv->information_buf_len;
-               } else {
-                       status = RNDIS_STATUS_INVALID_LENGTH;
-               }
-       } else {
-               status = RNDIS_STATUS_NOT_ACCEPTED;
-       }
-       return status;
-}
-
-uint oid_rt_pro_write_bb_reg_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       struct bb_reg_param *pbbreg;
-       u16 offset;
-       u32 value;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len < sizeof(struct bb_reg_param))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       pbbreg = (struct bb_reg_param *)(poid_par_priv->information_buf);
-       offset = (u16)(pbbreg->offset) & 0xFFF; /*0ffset :0x800~0xfff*/
-       if (offset < BB_REG_BASE_ADDR)
-               offset |= BB_REG_BASE_ADDR;
-       value = pbbreg->value;
-       r8712_bb_reg_write(Adapter, offset, value);
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_read_bb_reg_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       struct bb_reg_param *pbbreg;
-       u16 offset;
-       u32 value;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len < sizeof(struct bb_reg_param))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       pbbreg = (struct bb_reg_param *)(poid_par_priv->information_buf);
-       offset = (u16)(pbbreg->offset) & 0xFFF; /*0ffset :0x800~0xfff*/
-       if (offset < BB_REG_BASE_ADDR)
-               offset |= BB_REG_BASE_ADDR;
-       value = r8712_bb_reg_read(Adapter, offset);
-       pbbreg->value = value;
-       *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_write_rf_reg_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       struct rf_reg_param *pbbreg;
-       u8 path;
-       u8 offset;
-       u32 value;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len < sizeof(struct rf_reg_param))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       pbbreg = (struct rf_reg_param *)(poid_par_priv->information_buf);
-       path = (u8)pbbreg->path;
-       if (path > RF_PATH_B)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       offset = (u8)pbbreg->offset;
-       value = pbbreg->value;
-       r8712_rf_reg_write(Adapter, path, offset, value);
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_read_rf_reg_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       struct rf_reg_param *pbbreg;
-       u8 path;
-       u8 offset;
-       u32 value;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len < sizeof(struct rf_reg_param))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       pbbreg = (struct rf_reg_param *)(poid_par_priv->information_buf);
-       path = (u8)pbbreg->path;
-       if (path > RF_PATH_B) /* 1T2R  path_a /path_b */
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       offset = (u8)pbbreg->offset;
-       value = r8712_rf_reg_read(Adapter, path, offset);
-       pbbreg->value = value;
-       *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-/*This function initializes the DUT to the MP test mode*/
-static int mp_start_test(struct _adapter *padapter)
-{
-       struct mp_priv *pmppriv = &padapter->mppriv;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct wlan_network *tgt_network = &pmlmepriv->cur_network;
-       struct wlan_bssid_ex *bssid;
-       struct sta_info *psta;
-       unsigned long length;
-       unsigned long irqL;
-       int res = 0;
-
-       bssid = kzalloc(sizeof(*bssid), GFP_KERNEL);
-       if (!bssid)
-               return -ENOMEM;
-
-       /* 3 1. initialize a new struct wlan_bssid_ex */
-       memcpy(bssid->MacAddress, pmppriv->network_macaddr, ETH_ALEN);
-       bssid->Ssid.SsidLength = 16;
-       memcpy(bssid->Ssid.Ssid, (unsigned char *)"mp_pseudo_adhoc",
-               bssid->Ssid.SsidLength);
-       bssid->InfrastructureMode = Ndis802_11IBSS;
-       bssid->NetworkTypeInUse = Ndis802_11DS;
-       bssid->IELength = 0;
-       length = r8712_get_wlan_bssid_ex_sz(bssid);
-       if (length % 4) {
-               /*round up to multiple of 4 bytes.*/
-               bssid->Length = ((length >> 2) + 1) << 2;
-       } else {
-               bssid->Length = length;
-       }
-       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-       if (check_fwstate(pmlmepriv, WIFI_MP_STATE))
-               goto end_of_mp_start_test;
-       /*init mp_start_test status*/
-       pmppriv->prev_fw_state = get_fwstate(pmlmepriv);
-       pmlmepriv->fw_state = WIFI_MP_STATE;
-       if (pmppriv->mode == _LOOPBOOK_MODE_)
-               set_fwstate(pmlmepriv, WIFI_MP_LPBK_STATE); /*append txdesc*/
-       set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
-       /* 3 2. create a new psta for mp driver */
-       /* clear psta in the cur_network, if any */
-       psta = r8712_get_stainfo(&padapter->stapriv,
-                                tgt_network->network.MacAddress);
-       if (psta)
-               r8712_free_stainfo(padapter, psta);
-       psta = r8712_alloc_stainfo(&padapter->stapriv, bssid->MacAddress);
-       if (!psta) {
-               res = -ENOMEM;
-               goto end_of_mp_start_test;
-       }
-       /* 3 3. join pseudo AdHoc */
-       tgt_network->join_res = 1;
-       tgt_network->aid = psta->aid = 1;
-       memcpy(&tgt_network->network, bssid, length);
-       _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
-       r8712_os_indicate_connect(padapter);
-       /* Set to LINKED STATE for MP TRX Testing */
-       set_fwstate(pmlmepriv, _FW_LINKED);
-end_of_mp_start_test:
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-       kfree(bssid);
-       return res;
-}
-
-/*This function change the DUT from the MP test mode into normal mode */
-static int mp_stop_test(struct _adapter *padapter)
-{
-       struct mp_priv *pmppriv = &padapter->mppriv;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       struct wlan_network *tgt_network = &pmlmepriv->cur_network;
-       struct sta_info *psta;
-       unsigned long irqL;
-
-       spin_lock_irqsave(&pmlmepriv->lock, irqL);
-       if (!check_fwstate(pmlmepriv, WIFI_MP_STATE))
-               goto end_of_mp_stop_test;
-       /* 3 1. disconnect pseudo AdHoc */
-       r8712_os_indicate_disconnect(padapter);
-       /* 3 2. clear psta used in mp test mode. */
-       psta = r8712_get_stainfo(&padapter->stapriv,
-                                tgt_network->network.MacAddress);
-       if (psta)
-               r8712_free_stainfo(padapter, psta);
-       /* 3 3. return to normal state (default:station mode) */
-       pmlmepriv->fw_state = pmppriv->prev_fw_state; /* WIFI_STATION_STATE;*/
-       /*flush the cur_network*/
-       memset(tgt_network, 0, sizeof(struct wlan_network));
-end_of_mp_stop_test:
-       spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
-       return _SUCCESS;
-}
-
-uint oid_rt_pro_set_data_rate_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       u32 ratevalue;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len != sizeof(u32))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       ratevalue = *((u32 *)poid_par_priv->information_buf);
-       if (ratevalue >= MPT_RATE_LAST)
-               return RNDIS_STATUS_INVALID_DATA;
-       Adapter->mppriv.curr_rateidx = ratevalue;
-       r8712_SetDataRate(Adapter);
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_start_test_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       uint status = RNDIS_STATUS_SUCCESS;
-       u32 mode;
-       u8 val8;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return  RNDIS_STATUS_NOT_ACCEPTED;
-       mode = *((u32 *)poid_par_priv->information_buf);
-       Adapter->mppriv.mode = mode;/* 1 for loopback*/
-       if (mp_start_test(Adapter))
-               status = RNDIS_STATUS_NOT_ACCEPTED;
-       r8712_write8(Adapter, MSR, 1); /* Link in ad hoc network, 0x1025004C */
-       r8712_write8(Adapter, RCR, 0); /* RCR : disable all pkt, 0x10250048 */
-       /* RCR disable Check BSSID, 0x1025004a */
-       r8712_write8(Adapter, RCR + 2, 0x57);
-       /* disable RX filter map , mgt frames will put in RX FIFO 0 */
-       r8712_write16(Adapter, RXFLTMAP0, 0x0);
-       val8 = r8712_read8(Adapter, EE_9346CR);
-       if (!(val8 & _9356SEL)) { /*boot from EFUSE*/
-               r8712_efuse_reg_init(Adapter);
-               r8712_efuse_change_max_size(Adapter);
-               r8712_efuse_reg_uninit(Adapter);
-       }
-       return status;
-}
-
-uint oid_rt_pro_stop_test_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (mp_stop_test(Adapter) == _FAIL)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_set_channel_direct_call_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       u32             Channel;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len != sizeof(u32))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       Channel = *((u32 *)poid_par_priv->information_buf);
-       if (Channel > 14)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       Adapter->mppriv.curr_ch = Channel;
-       r8712_SetChannel(Adapter);
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_set_antenna_bb_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       u32 antenna;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len != sizeof(u32))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       antenna = *((u32 *)poid_par_priv->information_buf);
-       Adapter->mppriv.antenna_tx = (u16)((antenna & 0xFFFF0000) >> 16);
-       Adapter->mppriv.antenna_rx = (u16)(antenna & 0x0000FFFF);
-       r8712_SwitchAntenna(Adapter);
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_set_tx_power_control_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       u32 tx_pwr_idx;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len != sizeof(u32))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       tx_pwr_idx = *((u32 *)poid_par_priv->information_buf);
-       if (tx_pwr_idx > MAX_TX_PWR_INDEX_N_MODE)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       Adapter->mppriv.curr_txpoweridx = (u8)tx_pwr_idx;
-       r8712_SetTxPower(Adapter);
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_query_tx_packet_sent_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-
-       if (poid_par_priv->information_buf_len == sizeof(u32)) {
-               *(u32 *)poid_par_priv->information_buf =
-                                       Adapter->mppriv.tx_pktcount;
-               *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       } else {
-               return RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_query_rx_packet_received_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-
-       if (poid_par_priv->information_buf_len == sizeof(u32)) {
-               *(u32 *)poid_par_priv->information_buf =
-                                       Adapter->mppriv.rx_pktcount;
-               *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       } else {
-               return RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_query_rx_packet_crc32_error_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-
-       if (poid_par_priv->information_buf_len == sizeof(u32)) {
-               *(u32 *)poid_par_priv->information_buf =
-                                       Adapter->mppriv.rx_crcerrpktcount;
-               *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       } else {
-               return RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_reset_tx_packet_sent_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       Adapter->mppriv.tx_pktcount = 0;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_reset_rx_packet_received_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len == sizeof(u32)) {
-               Adapter->mppriv.rx_pktcount = 0;
-               Adapter->mppriv.rx_crcerrpktcount = 0;
-       } else {
-               return RNDIS_STATUS_INVALID_LENGTH;
-       }
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_reset_phy_rx_packet_count_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       r8712_ResetPhyRxPktCount(Adapter);
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_phy_rx_packet_received_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len != sizeof(u32))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       *(u32 *)poid_par_priv->information_buf =
-                                        r8712_GetPhyRxPktReceived(Adapter);
-       *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_phy_rx_packet_crc32_error_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len != sizeof(u32))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       *(u32 *)poid_par_priv->information_buf =
-                                        r8712_GetPhyRxPktCRC32Error(Adapter);
-       *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_set_modulation_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-
-       Adapter->mppriv.curr_modem = *((u8 *)poid_par_priv->information_buf);
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_set_continuous_tx_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       u32             bStartTest;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       bStartTest = *((u32 *)poid_par_priv->information_buf);
-       r8712_SetContinuousTx(Adapter, (u8)bStartTest);
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_set_single_carrier_tx_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       u32             bStartTest;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       bStartTest = *((u32 *)poid_par_priv->information_buf);
-       r8712_SetSingleCarrierTx(Adapter, (u8)bStartTest);
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_set_carrier_suppression_tx_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       u32             bStartTest;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       bStartTest = *((u32 *)poid_par_priv->information_buf);
-       r8712_SetCarrierSuppressionTx(Adapter, (u8)bStartTest);
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_set_single_tone_tx_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       u32             bStartTest;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       bStartTest = *((u32 *)poid_par_priv->information_buf);
-       r8712_SetSingleToneTx(Adapter, (u8)bStartTest);
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_read_register_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       uint status = RNDIS_STATUS_SUCCESS;
-       struct mp_rw_reg *RegRWStruct;
-       u16             offset;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       RegRWStruct = (struct mp_rw_reg *)poid_par_priv->information_buf;
-       if ((RegRWStruct->offset >= 0x10250800) &&
-           (RegRWStruct->offset <= 0x10250FFF)) {
-               /*baseband register*/
-               /*0ffset :0x800~0xfff*/
-               offset = (u16)(RegRWStruct->offset) & 0xFFF;
-               RegRWStruct->value = r8712_bb_reg_read(Adapter, offset);
-       } else {
-               switch (RegRWStruct->width) {
-               case 1:
-                       RegRWStruct->value = r8712_read8(Adapter,
-                                                  RegRWStruct->offset);
-                       break;
-               case 2:
-                       RegRWStruct->value = r8712_read16(Adapter,
-                                                   RegRWStruct->offset);
-                       break;
-               case 4:
-                       RegRWStruct->value = r8712_read32(Adapter,
-                                                   RegRWStruct->offset);
-                       break;
-               default:
-                       status = RNDIS_STATUS_NOT_ACCEPTED;
-                       break;
-               }
-       }
-       *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       return status;
-}
-
-uint oid_rt_pro_write_register_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       uint status = RNDIS_STATUS_SUCCESS;
-       struct mp_rw_reg *RegRWStruct;
-       u16             offset;
-       u32             value;
-       u32 oldValue = 0;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       RegRWStruct = (struct mp_rw_reg *)poid_par_priv->information_buf;
-       if ((RegRWStruct->offset >= 0x10250800) &&
-           (RegRWStruct->offset <= 0x10250FFF)) {
-               /*baseband register*/
-               offset = (u16)(RegRWStruct->offset) & 0xFFF;
-               value = RegRWStruct->value;
-               switch (RegRWStruct->width) {
-               case 1:
-                       oldValue = r8712_bb_reg_read(Adapter, offset);
-                       oldValue &= 0xFFFFFF00;
-                       value &= 0x000000FF;
-                       value |= oldValue;
-                       break;
-               case 2:
-                       oldValue = r8712_bb_reg_read(Adapter, offset);
-                       oldValue &= 0xFFFF0000;
-                       value &= 0x0000FFFF;
-                       value |= oldValue;
-                       break;
-               }
-               r8712_bb_reg_write(Adapter, offset, value);
-       } else {
-               switch (RegRWStruct->width) {
-               case 1:
-                       r8712_write8(Adapter, RegRWStruct->offset,
-                              (unsigned char)RegRWStruct->value);
-                       break;
-               case 2:
-                       r8712_write16(Adapter, RegRWStruct->offset,
-                               (unsigned short)RegRWStruct->value);
-                       break;
-               case 4:
-                       r8712_write32(Adapter, RegRWStruct->offset,
-                               (unsigned int)RegRWStruct->value);
-                       break;
-               default:
-                       status = RNDIS_STATUS_NOT_ACCEPTED;
-                       break;
-               }
-       }
-       return status;
-}
-
-uint oid_rt_get_thermal_meter_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-
-       if (Adapter->mppriv.act_in_progress)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-
-       if (poid_par_priv->information_buf_len < sizeof(u8))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       /*init workparam*/
-       Adapter->mppriv.act_in_progress = true;
-       Adapter->mppriv.workparam.bcompleted = false;
-       Adapter->mppriv.workparam.act_type = MPT_GET_THERMAL_METER;
-       Adapter->mppriv.workparam.io_offset = 0;
-       Adapter->mppriv.workparam.io_value = 0xFFFFFFFF;
-       r8712_GetThermalMeter(Adapter, &Adapter->mppriv.workparam.io_value);
-       Adapter->mppriv.workparam.bcompleted = true;
-       Adapter->mppriv.act_in_progress = false;
-       *(u32 *)poid_par_priv->information_buf =
-                                Adapter->mppriv.workparam.io_value;
-       *poid_par_priv->bytes_rw = sizeof(u32);
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_read_efuse_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       uint status = RNDIS_STATUS_SUCCESS;
-
-       struct EFUSE_ACCESS_STRUCT *pefuse;
-       u8 *data;
-       u16 addr = 0, cnts = 0;
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len <
-           sizeof(struct EFUSE_ACCESS_STRUCT))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       pefuse = (struct EFUSE_ACCESS_STRUCT *)poid_par_priv->information_buf;
-       addr = pefuse->start_addr;
-       cnts = pefuse->cnts;
-       data = pefuse->data;
-       memset(data, 0xFF, cnts);
-       if ((addr > 511) || (cnts < 1) || (cnts > 512) || (addr + cnts) >
-            EFUSE_MAX_SIZE)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (!r8712_efuse_access(Adapter, true, addr, cnts, data))
-               status = RNDIS_STATUS_FAILURE;
-       *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       return status;
-}
-
-/*------------------------------------------------------------------------*/
-uint oid_rt_pro_write_efuse_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       uint status = RNDIS_STATUS_SUCCESS;
-
-       struct EFUSE_ACCESS_STRUCT *pefuse;
-       u8 *data;
-       u16 addr = 0, cnts = 0;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-
-       pefuse = (struct EFUSE_ACCESS_STRUCT *)poid_par_priv->information_buf;
-       addr = pefuse->start_addr;
-       cnts = pefuse->cnts;
-       data = pefuse->data;
-
-       if ((addr > 511) || (cnts < 1) || (cnts > 512) ||
-           (addr + cnts) > r8712_efuse_get_max_size(Adapter))
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (!r8712_efuse_access(Adapter, false, addr, cnts, data))
-               status = RNDIS_STATUS_FAILURE;
-       return status;
-}
-
-/*----------------------------------------------------------------------*/
-
-uint oid_rt_get_efuse_current_size_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len < sizeof(int))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       r8712_efuse_reg_init(Adapter);
-       *(int *)poid_par_priv->information_buf =
-                                r8712_efuse_get_current_size(Adapter);
-       r8712_efuse_reg_uninit(Adapter);
-       *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_get_efuse_max_size_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len < sizeof(u32))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       *(int *)poid_par_priv->information_buf =
-                                        r8712_efuse_get_max_size(Adapter);
-       *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_pro_efuse_hdl(struct oid_par_priv *poid_par_priv)
-{
-       uint status = RNDIS_STATUS_SUCCESS;
-
-       if (poid_par_priv->type_of_oid == QUERY_OID)
-               status = oid_rt_pro_read_efuse_hdl(poid_par_priv);
-       else
-               status = oid_rt_pro_write_efuse_hdl(poid_par_priv);
-       return status;
-}
-
-uint oid_rt_pro_efuse_map_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       uint status = RNDIS_STATUS_SUCCESS;
-       u8              *data;
-
-       *poid_par_priv->bytes_rw = 0;
-       if (poid_par_priv->information_buf_len < EFUSE_MAP_MAX_SIZE)
-               return RNDIS_STATUS_INVALID_LENGTH;
-       data = (u8 *)poid_par_priv->information_buf;
-       if (poid_par_priv->type_of_oid == QUERY_OID) {
-               if (r8712_efuse_map_read(Adapter, 0, EFUSE_MAP_MAX_SIZE, data))
-                       *poid_par_priv->bytes_rw = EFUSE_MAP_MAX_SIZE;
-               else
-                       status = RNDIS_STATUS_FAILURE;
-       } else {
-               /* SET_OID */
-               if (r8712_efuse_reg_init(Adapter)) {
-                       if (r8712_efuse_map_write(Adapter, 0,
-                           EFUSE_MAP_MAX_SIZE, data))
-                               *poid_par_priv->bytes_rw = EFUSE_MAP_MAX_SIZE;
-                       else
-                               status = RNDIS_STATUS_FAILURE;
-                       r8712_efuse_reg_uninit(Adapter);
-               } else {
-                       status = RNDIS_STATUS_FAILURE;
-               }
-       }
-       return status;
-}
-
-uint oid_rt_set_bandwidth_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       u32             bandwidth;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len < sizeof(u32))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       bandwidth = *((u32 *)poid_par_priv->information_buf);/*4*/
-       if (bandwidth != HT_CHANNEL_WIDTH_20)
-               bandwidth = HT_CHANNEL_WIDTH_40;
-       Adapter->mppriv.curr_bandwidth = (u8)bandwidth;
-       r8712_SwitchBandwidth(Adapter);
-       return RNDIS_STATUS_SUCCESS;
-}
-
-uint oid_rt_set_rx_packet_type_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-       u8              rx_pkt_type;
-       u32             rcr_val32;
-
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len < sizeof(u8))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       rx_pkt_type = *((u8 *)poid_par_priv->information_buf);/*4*/
-       rcr_val32 = r8712_read32(Adapter, RCR);/*RCR = 0x10250048*/
-       rcr_val32 &= ~(RCR_CBSSID | RCR_AB | RCR_AM | RCR_APM | RCR_AAP);
-       switch (rx_pkt_type) {
-       case RX_PKT_BROADCAST:
-               rcr_val32 |= (RCR_AB | RCR_AM | RCR_APM | RCR_AAP | RCR_ACRC32);
-               break;
-       case RX_PKT_DEST_ADDR:
-               rcr_val32 |= (RCR_AB | RCR_AM | RCR_APM | RCR_AAP | RCR_ACRC32);
-               break;
-       case RX_PKT_PHY_MATCH:
-               rcr_val32 |= (RCR_APM | RCR_ACRC32);
-               break;
-       default:
-               rcr_val32 &= ~(RCR_AAP |
-                              RCR_APM |
-                              RCR_AM |
-                              RCR_AB |
-                              RCR_ACRC32);
-               break;
-       }
-       if (rx_pkt_type == RX_PKT_DEST_ADDR)
-               Adapter->mppriv.check_mp_pkt = 1;
-       else
-               Adapter->mppriv.check_mp_pkt = 0;
-       r8712_write32(Adapter, RCR, rcr_val32);
-       return RNDIS_STATUS_SUCCESS;
-}
-
-/*--------------------------------------------------------------------------*/
-/*Linux*/
-unsigned int mp_ioctl_xmit_packet_hdl(struct oid_par_priv *poid_par_priv)
-{
-       return _SUCCESS;
-}
-
-/*-------------------------------------------------------------------------*/
-uint oid_rt_set_power_down_hdl(struct oid_par_priv *poid_par_priv)
-{
-       if (poid_par_priv->type_of_oid != SET_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       /*CALL  the power_down function*/
-       return RNDIS_STATUS_SUCCESS;
-}
-
-/*-------------------------------------------------------------------------- */
-uint oid_rt_get_power_mode_hdl(struct oid_par_priv *poid_par_priv)
-{
-       struct _adapter *Adapter = (struct _adapter *)
-                                  (poid_par_priv->adapter_context);
-
-       if (poid_par_priv->type_of_oid != QUERY_OID)
-               return RNDIS_STATUS_NOT_ACCEPTED;
-       if (poid_par_priv->information_buf_len < sizeof(u32))
-               return RNDIS_STATUS_INVALID_LENGTH;
-       *(int *)poid_par_priv->information_buf =
-                Adapter->registrypriv.low_power ? POWER_LOW : POWER_NORMAL;
-       *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
-       return RNDIS_STATUS_SUCCESS;
-}
diff --git a/drivers/staging/rtl8712/rtl871x_mp_ioctl.h b/drivers/staging/rtl8712/rtl871x_mp_ioctl.h
deleted file mode 100644 (file)
index aa4d5ce..0000000
+++ /dev/null
@@ -1,328 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef _RTL871X_MP_IOCTL_H
-#define _RTL871X_MP_IOCTL_H
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "mp_custom_oid.h"
-#include "rtl871x_ioctl.h"
-#include "rtl871x_ioctl_rtl.h"
-#include "rtl8712_efuse.h"
-
-#define TESTFWCMDNUMBER                        1000000
-#define TEST_H2CINT_WAIT_TIME          500
-#define TEST_C2HINT_WAIT_TIME          500
-#define HCI_TEST_SYSCFG_HWMASK         1
-#define _BUSCLK_40M                    (4 << 2)
-
-struct CFG_DBG_MSG_STRUCT {
-       u32 DebugLevel;
-       u32 DebugComponent_H32;
-       u32 DebugComponent_L32;
-};
-
-struct mp_rw_reg {
-       uint offset;
-       uint width;
-       u32 value;
-};
-
-/* for OID_RT_PRO_READ16_EEPROM & OID_RT_PRO_WRITE16_EEPROM */
-struct eeprom_rw_param {
-       uint offset;
-       u16 value;
-};
-
-struct EFUSE_ACCESS_STRUCT {
-       u16     start_addr;
-       u16     cnts;
-       u8      data[];
-};
-
-struct burst_rw_reg {
-       uint offset;
-       uint len;
-       u8 Data[256];
-};
-
-struct usb_vendor_req {
-       u8      bRequest;
-       u16     wValue;
-       u16     wIndex;
-       u16     wLength;
-       u8      u8Dir;/*0:OUT, 1:IN */
-       u8      u8InData;
-};
-
-struct DR_VARIABLE_STRUCT {
-       u8 offset;
-       u32 variable;
-};
-
-/* oid_rtl_seg_87_11_00 */
-uint oid_rt_pro_read_register_hdl(struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_write_register_hdl(struct oid_par_priv *poid_par_priv);
-/* oid_rtl_seg_81_80_00 */
-uint oid_rt_pro_set_data_rate_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_start_test_hdl(struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_stop_test_hdl(struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_set_channel_direct_call_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_set_antenna_bb_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_set_tx_power_control_hdl(
-                               struct oid_par_priv *poid_par_priv);
-/* oid_rtl_seg_81_80_20 */
-uint oid_rt_pro_query_tx_packet_sent_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_query_rx_packet_received_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_query_rx_packet_crc32_error_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_reset_tx_packet_sent_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_reset_rx_packet_received_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_set_modulation_hdl(struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_set_continuous_tx_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_set_single_carrier_tx_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_set_carrier_suppression_tx_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_set_single_tone_tx_hdl(
-                               struct oid_par_priv *poid_par_priv);
-/* oid_rtl_seg_81_87 */
-uint oid_rt_pro_write_bb_reg_hdl(struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_read_bb_reg_hdl(struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_write_rf_reg_hdl(struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_read_rf_reg_hdl(struct oid_par_priv *poid_par_priv);
-/* oid_rtl_seg_81_85 */
-uint oid_rt_wireless_mode_hdl(struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_read_efuse_hdl(struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_write_efuse_hdl(struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_efuse_current_size_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_efuse_hdl(struct oid_par_priv *poid_par_priv);
-uint oid_rt_pro_efuse_map_hdl(struct oid_par_priv *poid_par_priv);
-uint oid_rt_set_bandwidth_hdl(struct oid_par_priv *poid_par_priv);
-uint oid_rt_set_rx_packet_type_hdl(struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_efuse_max_size_hdl(struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_thermal_meter_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_reset_phy_rx_packet_count_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_phy_rx_packet_received_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_phy_rx_packet_crc32_error_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_set_power_down_hdl(
-                               struct oid_par_priv *poid_par_priv);
-uint oid_rt_get_power_mode_hdl(
-                               struct oid_par_priv *poid_par_priv);
-#ifdef _RTL871X_MP_IOCTL_C_ /* CAUTION!!! */
-/* This ifdef _MUST_ be left in!! */
-
-#else /* _RTL871X_MP_IOCTL_C_ */
-extern struct oid_obj_priv oid_rtl_seg_81_87[5];
-extern struct oid_obj_priv oid_rtl_seg_87_11_00[32];
-extern struct oid_obj_priv oid_rtl_seg_87_11_20[5];
-extern struct oid_obj_priv oid_rtl_seg_87_11_50[2];
-extern struct oid_obj_priv oid_rtl_seg_87_11_80[1];
-extern struct oid_obj_priv oid_rtl_seg_87_11_B0[1];
-extern struct oid_obj_priv oid_rtl_seg_87_11_F0[16];
-extern struct oid_obj_priv oid_rtl_seg_87_12_00[32];
-
-#endif /* _RTL871X_MP_IOCTL_C_ */
-
-enum MP_MODE {
-       MP_START_MODE,
-       MP_STOP_MODE,
-       MP_ERR_MODE
-};
-
-struct rwreg_param {
-       unsigned int offset;
-       unsigned int width;
-       unsigned int value;
-};
-
-struct bbreg_param {
-       unsigned int offset;
-       unsigned int phymask;
-       unsigned int value;
-};
-
-struct txpower_param {
-       unsigned int pwr_index;
-};
-
-struct datarate_param {
-       unsigned int rate_index;
-};
-
-struct rfintfs_parm {
-       unsigned int rfintfs;
-};
-
-struct mp_xmit_packet {
-       unsigned int len;
-};
-
-struct psmode_param {
-       unsigned int ps_mode;
-       unsigned int smart_ps;
-};
-
-struct mp_ioctl_handler {
-       unsigned int paramsize;
-       unsigned int (*handler)(struct oid_par_priv *poid_par_priv);
-       unsigned int oid;
-};
-
-struct mp_ioctl_param {
-       unsigned int subcode;
-       unsigned int len;
-       unsigned char data[];
-};
-
-#define GEN_MP_IOCTL_SUBCODE(code) _MP_IOCTL_ ## code ## _CMD_
-
-enum RTL871X_MP_IOCTL_SUBCODE {
-       GEN_MP_IOCTL_SUBCODE(MP_START),                 /*0*/
-       GEN_MP_IOCTL_SUBCODE(MP_STOP),                  /*1*/
-       GEN_MP_IOCTL_SUBCODE(READ_REG),                 /*2*/
-       GEN_MP_IOCTL_SUBCODE(WRITE_REG),
-       GEN_MP_IOCTL_SUBCODE(SET_CHANNEL),              /*4*/
-       GEN_MP_IOCTL_SUBCODE(SET_TXPOWER),              /*5*/
-       GEN_MP_IOCTL_SUBCODE(SET_DATARATE),             /*6*/
-       GEN_MP_IOCTL_SUBCODE(READ_BB_REG),              /*7*/
-       GEN_MP_IOCTL_SUBCODE(WRITE_BB_REG),
-       GEN_MP_IOCTL_SUBCODE(READ_RF_REG),              /*9*/
-       GEN_MP_IOCTL_SUBCODE(WRITE_RF_REG),
-       GEN_MP_IOCTL_SUBCODE(SET_RF_INTFS),
-       GEN_MP_IOCTL_SUBCODE(IOCTL_XMIT_PACKET),        /*12*/
-       GEN_MP_IOCTL_SUBCODE(PS_STATE),                 /*13*/
-       GEN_MP_IOCTL_SUBCODE(READ16_EEPROM),            /*14*/
-       GEN_MP_IOCTL_SUBCODE(WRITE16_EEPROM),           /*15*/
-       GEN_MP_IOCTL_SUBCODE(SET_PTM),                  /*16*/
-       GEN_MP_IOCTL_SUBCODE(READ_TSSI),                /*17*/
-       GEN_MP_IOCTL_SUBCODE(CNTU_TX),                  /*18*/
-       GEN_MP_IOCTL_SUBCODE(SET_BANDWIDTH),            /*19*/
-       GEN_MP_IOCTL_SUBCODE(SET_RX_PKT_TYPE),          /*20*/
-       GEN_MP_IOCTL_SUBCODE(RESET_PHY_RX_PKT_CNT),     /*21*/
-       GEN_MP_IOCTL_SUBCODE(GET_PHY_RX_PKT_RECV),      /*22*/
-       GEN_MP_IOCTL_SUBCODE(GET_PHY_RX_PKT_ERROR),     /*23*/
-       GEN_MP_IOCTL_SUBCODE(SET_POWER_DOWN),           /*24*/
-       GEN_MP_IOCTL_SUBCODE(GET_THERMAL_METER),        /*25*/
-       GEN_MP_IOCTL_SUBCODE(GET_POWER_MODE),           /*26*/
-       GEN_MP_IOCTL_SUBCODE(EFUSE),                    /*27*/
-       GEN_MP_IOCTL_SUBCODE(EFUSE_MAP),                /*28*/
-       GEN_MP_IOCTL_SUBCODE(GET_EFUSE_MAX_SIZE),       /*29*/
-       GEN_MP_IOCTL_SUBCODE(GET_EFUSE_CURRENT_SIZE),   /*30*/
-       GEN_MP_IOCTL_SUBCODE(SC_TX),                    /*31*/
-       GEN_MP_IOCTL_SUBCODE(CS_TX),                    /*32*/
-       GEN_MP_IOCTL_SUBCODE(ST_TX),                    /*33*/
-       GEN_MP_IOCTL_SUBCODE(SET_ANTENNA),              /*34*/
-       MAX_MP_IOCTL_SUBCODE,
-};
-
-unsigned int mp_ioctl_xmit_packet_hdl(struct oid_par_priv *poid_par_priv);
-
-#ifdef _RTL871X_MP_IOCTL_C_ /* CAUTION!!! */
-/* This ifdef _MUST_ be left in!! */
-
-static struct mp_ioctl_handler mp_ioctl_hdl[] = {
-       {sizeof(u32), oid_rt_pro_start_test_hdl,
-                            OID_RT_PRO_START_TEST},/*0*/
-       {sizeof(u32), oid_rt_pro_stop_test_hdl,
-                            OID_RT_PRO_STOP_TEST},/*1*/
-       {sizeof(struct rwreg_param),
-                            oid_rt_pro_read_register_hdl,
-                            OID_RT_PRO_READ_REGISTER},/*2*/
-       {sizeof(struct rwreg_param),
-                            oid_rt_pro_write_register_hdl,
-                            OID_RT_PRO_WRITE_REGISTER},
-       {sizeof(u32),
-                            oid_rt_pro_set_channel_direct_call_hdl,
-                            OID_RT_PRO_SET_CHANNEL_DIRECT_CALL},
-       {sizeof(struct txpower_param),
-                            oid_rt_pro_set_tx_power_control_hdl,
-                            OID_RT_PRO_SET_TX_POWER_CONTROL},
-       {sizeof(u32),
-                            oid_rt_pro_set_data_rate_hdl,
-                            OID_RT_PRO_SET_DATA_RATE},
-       {sizeof(struct bb_reg_param),
-                            oid_rt_pro_read_bb_reg_hdl,
-                            OID_RT_PRO_READ_BB_REG},/*7*/
-       {sizeof(struct bb_reg_param),
-                            oid_rt_pro_write_bb_reg_hdl,
-                            OID_RT_PRO_WRITE_BB_REG},
-       {sizeof(struct rwreg_param),
-                            oid_rt_pro_read_rf_reg_hdl,
-                            OID_RT_PRO_RF_READ_REGISTRY},/*9*/
-       {sizeof(struct rwreg_param),
-                            oid_rt_pro_write_rf_reg_hdl,
-                            OID_RT_PRO_RF_WRITE_REGISTRY},
-       {sizeof(struct rfintfs_parm), NULL, 0},
-       {0, mp_ioctl_xmit_packet_hdl, 0},/*12*/
-       {sizeof(struct psmode_param), NULL, 0},/*13*/
-       {sizeof(struct eeprom_rw_param), NULL, 0},/*14*/
-       {sizeof(struct eeprom_rw_param), NULL, 0},/*15*/
-       {sizeof(unsigned char), NULL, 0},/*16*/
-       {sizeof(u32), NULL, 0},/*17*/
-       {sizeof(u32), oid_rt_pro_set_continuous_tx_hdl,
-                            OID_RT_PRO_SET_CONTINUOUS_TX},/*18*/
-       {sizeof(u32), oid_rt_set_bandwidth_hdl,
-                            OID_RT_SET_BANDWIDTH},/*19*/
-       {sizeof(u32), oid_rt_set_rx_packet_type_hdl,
-                            OID_RT_SET_RX_PACKET_TYPE},/*20*/
-       {0, oid_rt_reset_phy_rx_packet_count_hdl,
-                            OID_RT_RESET_PHY_RX_PACKET_COUNT},/*21*/
-       {sizeof(u32), oid_rt_get_phy_rx_packet_received_hdl,
-                            OID_RT_GET_PHY_RX_PACKET_RECEIVED},/*22*/
-       {sizeof(u32), oid_rt_get_phy_rx_packet_crc32_error_hdl,
-                            OID_RT_GET_PHY_RX_PACKET_CRC32_ERROR},/*23*/
-       {sizeof(unsigned char), oid_rt_set_power_down_hdl,
-                            OID_RT_SET_POWER_DOWN},/*24*/
-       {sizeof(u32), oid_rt_get_thermal_meter_hdl,
-                            OID_RT_PRO_GET_THERMAL_METER},/*25*/
-       {sizeof(u32), oid_rt_get_power_mode_hdl,
-                            OID_RT_GET_POWER_MODE},/*26*/
-       {sizeof(struct EFUSE_ACCESS_STRUCT),
-                            oid_rt_pro_efuse_hdl, OID_RT_PRO_EFUSE},/*27*/
-       {EFUSE_MAP_MAX_SIZE, oid_rt_pro_efuse_map_hdl,
-                            OID_RT_PRO_EFUSE_MAP},/*28*/
-       {sizeof(u32), oid_rt_get_efuse_max_size_hdl,
-                            OID_RT_GET_EFUSE_MAX_SIZE},/*29*/
-       {sizeof(u32), oid_rt_get_efuse_current_size_hdl,
-                            OID_RT_GET_EFUSE_CURRENT_SIZE},/*30*/
-       {sizeof(u32), oid_rt_pro_set_single_carrier_tx_hdl,
-                            OID_RT_PRO_SET_SINGLE_CARRIER_TX},/*31*/
-       {sizeof(u32), oid_rt_pro_set_carrier_suppression_tx_hdl,
-                            OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX},/*32*/
-       {sizeof(u32), oid_rt_pro_set_single_tone_tx_hdl,
-                            OID_RT_PRO_SET_SINGLE_TONE_TX},/*33*/
-       {sizeof(u32), oid_rt_pro_set_antenna_bb_hdl,
-                            OID_RT_PRO_SET_ANTENNA_BB},/*34*/
-};
-
-#else /* _RTL871X_MP_IOCTL_C_ */
-extern struct mp_ioctl_handler mp_ioctl_hdl[];
-#endif /* _RTL871X_MP_IOCTL_C_ */
-
-#endif
-
diff --git a/drivers/staging/rtl8712/rtl871x_mp_phy_regdef.h b/drivers/staging/rtl8712/rtl871x_mp_phy_regdef.h
deleted file mode 100644 (file)
index a08c5d2..0000000
+++ /dev/null
@@ -1,1034 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*****************************************************************************
- *     Copyright(c) 2008,  RealTEK Technology Inc. All Right Reserved.
- *
- * Module:     __INC_HAL8192SPHYREG_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 __RTL871X_MP_PHY_REGDEF_H
-#define __RTL871X_MP_PHY_REGDEF_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
- *
- * 1. PMAC duplicate register due to connection: RF_Mode, TRxRN, NumOf L-STF
- * 1. Page1(0x100)
- */
-#define        rPMAC_Reset                     0x100
-#define        rPMAC_TxStart                   0x104
-#define        rPMAC_TxLegacySIG               0x108
-#define        rPMAC_TxHTSIG1                  0x10c
-#define        rPMAC_TxHTSIG2                  0x110
-#define        rPMAC_PHYDebug                  0x114
-#define        rPMAC_TxPacketNum               0x118
-#define        rPMAC_TxIdle                    0x11c
-#define        rPMAC_TxMACHeader0              0x120
-#define        rPMAC_TxMACHeader1              0x124
-#define        rPMAC_TxMACHeader2              0x128
-#define        rPMAC_TxMACHeader3              0x12c
-#define        rPMAC_TxMACHeader4              0x130
-#define        rPMAC_TxMACHeader5              0x134
-#define        rPMAC_TxDataType                0x138
-#define        rPMAC_TxRandomSeed              0x13c
-#define        rPMAC_CCKPLCPPreamble           0x140
-#define        rPMAC_CCKPLCPHeader             0x144
-#define        rPMAC_CCKCRC16                  0x148
-#define        rPMAC_OFDMRxCRC32OK             0x170
-#define        rPMAC_OFDMRxCRC32Er             0x174
-#define        rPMAC_OFDMRxParityEr            0x178
-#define        rPMAC_OFDMRxCRC8Er              0x17c
-#define        rPMAC_CCKCRxRC16Er              0x180
-#define        rPMAC_CCKCRxRC32Er              0x184
-#define        rPMAC_CCKCRxRC32OK              0x188
-#define        rPMAC_TxStatus                  0x18c
-
-/*
- * 2. Page2(0x200)
- *
- * The following two definition are only used for USB interface.
- *#define RF_BB_CMD_ADDR       0x02c0  // RF/BB read/write command address.
- *#define RF_BB_CMD_DATA       0x02c4  // RF/BB read/write command data.
- *
- *
- * 3. Page8(0x800)
- */
-#define        rFPGA0_RFMOD                    0x800   /*RF mode & CCK TxSC RF
-                                                * BW Setting??
-                                                */
-#define        rFPGA0_TxInfo                   0x804   /* Status report?? */
-#define        rFPGA0_PSDFunction              0x808
-#define        rFPGA0_TxGainStage              0x80c   /* Set TX PWR init gain? */
-#define        rFPGA0_RFTiming1                0x810   /* Useless now */
-#define        rFPGA0_RFTiming2                0x814
-#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        rFPGA0_XC_HSSIParameter1        0x830
-#define        rFPGA0_XC_HSSIParameter2        0x834
-#define        rFPGA0_XD_HSSIParameter1        0x838
-#define        rFPGA0_XD_HSSIParameter2        0x83c
-#define        rFPGA0_XA_LSSIParameter         0x840
-#define        rFPGA0_XB_LSSIParameter         0x844
-#define        rFPGA0_XC_LSSIParameter         0x848
-#define        rFPGA0_XD_LSSIParameter         0x84c
-
-#define        rFPGA0_RFWakeUpParameter        0x850   /* Useless now */
-#define        rFPGA0_RFSleepUpParameter       0x854
-
-#define        rFPGA0_XAB_SwitchControl        0x858   /* RF Channel switch */
-#define        rFPGA0_XCD_SwitchControl        0x85c
-
-#define        rFPGA0_XA_RFInterfaceOE         0x860   /* RF Channel switch */
-#define        rFPGA0_XB_RFInterfaceOE         0x864
-#define        rFPGA0_XC_RFInterfaceOE         0x868
-#define        rFPGA0_XD_RFInterfaceOE         0x86c
-#define        rFPGA0_XAB_RFInterfaceSW        0x870   /* RF Interface Software Ctrl */
-#define        rFPGA0_XCD_RFInterfaceSW        0x874
-
-#define        rFPGA0_XAB_RFParameter          0x878   /* RF Parameter */
-#define        rFPGA0_XCD_RFParameter          0x87c
-
-#define        rFPGA0_AnalogParameter1         0x880   /* Crystal cap setting
-                                                * RF-R/W protection
-                                                * for parameter4??
-                                                */
-#define        rFPGA0_AnalogParameter2         0x884
-#define        rFPGA0_AnalogParameter3         0x888   /* Useless now */
-#define        rFPGA0_AnalogParameter4         0x88c
-
-#define        rFPGA0_XA_LSSIReadBack          0x8a0   /* Tranceiver LSSI Readback */
-#define        rFPGA0_XB_LSSIReadBack          0x8a4
-#define        rFPGA0_XC_LSSIReadBack          0x8a8
-#define        rFPGA0_XD_LSSIReadBack          0x8ac
-
-#define        rFPGA0_PSDReport                0x8b4   /* Useless now */
-#define        rFPGA0_XAB_RFInterfaceRB        0x8e0   /* Useless now */
-#define        rFPGA0_XCD_RFInterfaceRB        0x8e4   /* Useless now */
-
-/*
- * 4. Page9(0x900)
- */
-#define        rFPGA1_RFMOD                    0x900   /* RF mode & OFDM TxSC */
-
-#define        rFPGA1_TxBlock                  0x904   /* Useless now */
-#define        rFPGA1_DebugSelect              0x908   /* Useless now */
-#define        rFPGA1_TxInfo                   0x90c   /* Useless now */
-
-/*
- * 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 */
-#define        rCCK0_CCA                       0xa08   /* Disable init gain now */
-
-#define        rCCK0_RxAGC1                    0xa0c
-/* AGC default value, saturation level
- * Antenna Diversity, RX AGC, LNA Threshold, RX LNA Threshold useless now.
- * Not the same as 90 series
- */
-#define        rCCK0_RxAGC2                    0xa10   /* AGC & DAGC */
-
-#define        rCCK0_RxHP                      0xa14
-
-#define        rCCK0_DSPParameter1             0xa18   /* Timing recovery & Channel
-                                                * estimation threshold
-                                                */
-#define        rCCK0_DSPParameter2             0xa1c   /* SQ threshold */
-
-#define        rCCK0_TxFilter1                 0xa20
-#define        rCCK0_TxFilter2                 0xa24
-#define        rCCK0_DebugPort                 0xa28   /* debug port and Tx filter3 */
-#define        rCCK0_FalseAlarmReport          0xa2c   /* 0xa2d useless now 0xa30-a4f
-                                                * channel report
-                                                */
-#define        rCCK0_TRSSIReport               0xa50
-#define        rCCK0_RxReport                  0xa54   /* 0xa57 */
-#define        rCCK0_FACounterLower            0xa5c   /* 0xa5b */
-#define        rCCK0_FACounterUpper            0xa58   /* 0xa5c */
-
-/*
- * 6. PageC(0xC00)
- */
-#define        rOFDM0_LSTF                     0xc00
-#define        rOFDM0_TRxPathEnable            0xc04
-#define        rOFDM0_TRMuxPar                 0xc08
-#define        rOFDM0_TRSWIsolation            0xc0c
-
-/*RxIQ DC offset, Rx digital filter, DC notch filter */
-#define        rOFDM0_XARxAFE                  0xc10
-#define        rOFDM0_XARxIQImbalance          0xc14  /* RxIQ imbalance matrix */
-#define        rOFDM0_XBRxAFE                  0xc18
-#define        rOFDM0_XBRxIQImbalance          0xc1c
-#define        rOFDM0_XCRxAFE                  0xc20
-#define        rOFDM0_XCRxIQImbalance          0xc24
-#define        rOFDM0_XDRxAFE                  0xc28
-#define        rOFDM0_XDRxIQImbalance          0xc2c
-
-#define        rOFDM0_RxDetector1              0xc30  /* PD,BW & SBD DM tune
-                                               * init gain
-                                               */
-#define        rOFDM0_RxDetector2              0xc34  /* SBD & Fame Sync. */
-#define        rOFDM0_RxDetector3              0xc38  /* Frame Sync. */
-#define        rOFDM0_RxDetector4              0xc3c  /* PD, SBD, Frame Sync &
-                                               * Short-GI
-                                               */
-
-#define        rOFDM0_RxDSP                    0xc40  /* Rx Sync Path */
-#define        rOFDM0_CFOandDAGC               0xc44  /* CFO & DAGC */
-#define        rOFDM0_CCADropThreshold         0xc48 /* CCA Drop threshold */
-#define        rOFDM0_ECCAThreshold            0xc4c /* energy CCA */
-
-#define        rOFDM0_XAAGCCore1               0xc50   /* DIG */
-#define        rOFDM0_XAAGCCore2               0xc54
-#define        rOFDM0_XBAGCCore1               0xc58
-#define        rOFDM0_XBAGCCore2               0xc5c
-#define        rOFDM0_XCAGCCore1               0xc60
-#define        rOFDM0_XCAGCCore2               0xc64
-#define        rOFDM0_XDAGCCore1               0xc68
-#define        rOFDM0_XDAGCCore2               0xc6c
-#define        rOFDM0_AGCParameter1            0xc70
-#define        rOFDM0_AGCParameter2            0xc74
-#define        rOFDM0_AGCRSSITable             0xc78
-#define        rOFDM0_HTSTFAGC                 0xc7c
-
-#define        rOFDM0_XATxIQImbalance          0xc80   /* TX PWR TRACK and DIG */
-#define        rOFDM0_XATxAFE                  0xc84
-#define        rOFDM0_XBTxIQImbalance          0xc88
-#define        rOFDM0_XBTxAFE                  0xc8c
-#define        rOFDM0_XCTxIQImbalance          0xc90
-#define        rOFDM0_XCTxAFE                  0xc94
-#define        rOFDM0_XDTxIQImbalance          0xc98
-#define        rOFDM0_XDTxAFE                  0xc9c
-
-#define        rOFDM0_RxHPParameter            0xce0
-#define        rOFDM0_TxPseudoNoiseWgt         0xce4
-#define        rOFDM0_FrameSync                0xcf0
-#define        rOFDM0_DFSReport                0xcf4
-#define        rOFDM0_TxCoeff1                 0xca4
-#define        rOFDM0_TxCoeff2                 0xca8
-#define        rOFDM0_TxCoeff3                 0xcac
-#define        rOFDM0_TxCoeff4                 0xcb0
-#define        rOFDM0_TxCoeff5                 0xcb4
-#define        rOFDM0_TxCoeff6                 0xcb8
-
-/*
- * 7. PageD(0xD00)
- */
-#define        rOFDM1_LSTF                     0xd00
-#define        rOFDM1_TRxPathEnable            0xd04
-
-#define        rOFDM1_CFO                      0xd08   /* No setting now */
-#define        rOFDM1_CSI1                     0xd10
-#define        rOFDM1_SBD                      0xd14
-#define        rOFDM1_CSI2                     0xd18
-#define        rOFDM1_CFOTracking              0xd2c
-#define        rOFDM1_TRxMesaure1              0xd34
-#define        rOFDM1_IntfDet                  0xd3c
-#define        rOFDM1_PseudoNoiseStateAB       0xd50
-#define        rOFDM1_PseudoNoiseStateCD       0xd54
-#define        rOFDM1_RxPseudoNoiseWgt         0xd58
-
-#define        rOFDM_PHYCounter1               0xda0  /* cca, parity fail */
-#define        rOFDM_PHYCounter2               0xda4  /* rate illegal, crc8 fail */
-#define        rOFDM_PHYCounter3               0xda8  /* MCS not support */
-#define        rOFDM_ShortCFOAB                0xdac  /* No setting now */
-#define        rOFDM_ShortCFOCD                0xdb0
-#define        rOFDM_LongCFOAB                 0xdb4
-#define        rOFDM_LongCFOCD                 0xdb8
-#define        rOFDM_TailCFOAB                 0xdbc
-#define        rOFDM_TailCFOCD                 0xdc0
-#define        rOFDM_PWMeasure1                0xdc4
-#define        rOFDM_PWMeasure2                0xdc8
-#define        rOFDM_BWReport                  0xdcc
-#define        rOFDM_AGCReport                 0xdd0
-#define        rOFDM_RxSNR                     0xdd4
-#define        rOFDM_RxEVMCSI                  0xdd8
-#define        rOFDM_SIGReport                 0xddc
-
-/*
- * 8. PageE(0xE00)
- */
-#define        rTxAGC_Rate18_06                0xe00
-#define        rTxAGC_Rate54_24                0xe04
-#define        rTxAGC_CCK_Mcs32                0xe08
-#define        rTxAGC_Mcs03_Mcs00              0xe10
-#define        rTxAGC_Mcs07_Mcs04              0xe14
-#define        rTxAGC_Mcs11_Mcs08              0xe18
-#define        rTxAGC_Mcs15_Mcs12              0xe1c
-
-/* Analog- control in RX_WAIT_CCA : REG: EE0
- * [Analog- Power & Control Register]
- */
-#define                rRx_Wait_CCCA           0xe70
-#define        rAnapar_Ctrl_BB                 0xee0
-
-/*
- * 7. RF Register 0x00-0x2E (RF 8256)
- *    RF-0222D 0x00-3F
- *
- * Zebra1
- */
-#define        rZebra1_HSSIEnable              0x0     /* Useless now */
-#define        rZebra1_TRxEnable1              0x1
-#define        rZebra1_TRxEnable2              0x2
-#define        rZebra1_AGC                     0x4
-#define        rZebra1_ChargePump              0x5
-#define        rZebra1_Channel                 0x7     /* RF channel switch */
-#define        rZebra1_TxGain                  0x8     /* Useless now */
-#define        rZebra1_TxLPF                   0x9
-#define        rZebra1_RxLPF                   0xb
-#define        rZebra1_RxHPFCorner             0xc
-
-/* Zebra4 */
-#define        rGlobalCtrl                     0       /* Useless now */
-#define        rRTL8256_TxLPF                  19
-#define        rRTL8256_RxLPF                  11
-
-/* RTL8258 */
-#define        rRTL8258_TxLPF                  0x11    /* Useless now */
-#define        rRTL8258_RxLPF                  0x13
-#define        rRTL8258_RSSILPF                0xa
-
-/* RL6052 Register definition */
-#define        RF_AC                           0x00
-#define        RF_IQADJ_G1                     0x01
-#define        RF_IQADJ_G2                     0x02
-#define        RF_POW_TRSW                     0x05
-
-#define        RF_GAIN_RX                      0x06
-#define        RF_GAIN_TX                      0x07
-
-#define        RF_TXM_IDAC                     0x08
-#define        RF_BS_IQGEN                     0x0F
-
-#define        RF_MODE1                        0x10
-#define        RF_MODE2                        0x11
-
-#define        RF_RX_AGC_HP                    0x12
-#define        RF_TX_AGC                       0x13
-#define        RF_BIAS                         0x14
-#define        RF_IPA                          0x15
-#define        RF_POW_ABILITY                  0x17
-#define        RF_MODE_AG                      0x18
-#define        rRfChannel                      0x18    /* RF channel and BW switch */
-#define        RF_CHNLBW                       0x18    /* RF channel and BW switch */
-#define        RF_TOP                          0x19
-#define        RF_RX_G1                        0x1A
-#define        RF_RX_G2                        0x1B
-#define        RF_RX_BB2                       0x1C
-#define        RF_RX_BB1                       0x1D
-
-#define        RF_RCK1                         0x1E
-#define        RF_RCK2                         0x1F
-
-#define        RF_TX_G1                        0x20
-#define        RF_TX_G2                        0x21
-#define        RF_TX_G3                        0x22
-
-#define        RF_TX_BB1                       0x23
-#define        RF_T_METER                      0x24
-
-#define        RF_SYN_G1                       0x25    /* RF TX Power control */
-#define        RF_SYN_G2                       0x26    /* RF TX Power control */
-#define        RF_SYN_G3                       0x27    /* RF TX Power control */
-#define        RF_SYN_G4                       0x28    /* RF TX Power control */
-#define        RF_SYN_G5                       0x29    /* RF TX Power control */
-#define        RF_SYN_G6                       0x2A    /* RF TX Power control */
-#define        RF_SYN_G7                       0x2B    /* RF TX Power control */
-#define        RF_SYN_G8                       0x2C    /* RF TX Power control */
-
-#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_TXPA_G3                      0x33    /* RF TX PA control */
-
-/*
- * Bit Mask
- *
- * 1. Page1(0x100)
- */
-#define        bBBResetB                       0x100   /* Useless now? */
-#define        bGlobalResetB                   0x200
-#define        bOFDMTxStart                    0x4
-#define        bCCKTxStart                     0x8
-#define        bCRC32Debug                     0x100
-#define        bPMACLoopback                   0x10
-#define        bTxLSIG                         0xffffff
-#define        bOFDMTxRate                     0xf
-#define        bOFDMTxReserved                 0x10
-#define        bOFDMTxLength                   0x1ffe0
-#define        bOFDMTxParity                   0x20000
-#define        bTxHTSIG1                       0xffffff
-#define        bTxHTMCSRate                    0x7f
-#define        bTxHTBW                         0x80
-#define        bTxHTLength                     0xffff00
-#define        bTxHTSIG2                       0xffffff
-#define        bTxHTSmoothing                  0x1
-#define        bTxHTSounding                   0x2
-#define        bTxHTReserved                   0x4
-#define        bTxHTAggreation                 0x8
-#define        bTxHTSTBC                       0x30
-#define        bTxHTAdvanceCoding              0x40
-#define        bTxHTShortGI                    0x80
-#define        bTxHTNumberHT_LTF               0x300
-#define        bTxHTCRC8                       0x3fc00
-#define        bCounterReset                   0x10000
-#define        bNumOfOFDMTx                    0xffff
-#define        bNumOfCCKTx                     0xffff0000
-#define        bTxIdleInterval                 0xffff
-#define        bOFDMService                    0xffff0000
-#define        bTxMACHeader                    0xffffffff
-#define        bTxDataInit                     0xff
-#define        bTxHTMode                       0x100
-#define        bTxDataType                     0x30000
-#define        bTxRandomSeed                   0xffffffff
-#define        bCCKTxPreamble                  0x1
-#define        bCCKTxSFD                       0xffff0000
-#define        bCCKTxSIG                       0xff
-#define        bCCKTxService                   0xff00
-#define        bCCKLengthExt                   0x8000
-#define        bCCKTxLength                    0xffff0000
-#define        bCCKTxCRC16                     0xffff
-#define        bCCKTxStatus                    0x1
-#define        bOFDMTxStatus                   0x2
-#define IS_BB_REG_OFFSET_92S(_Offset)  ((_Offset >= 0x800) && \
-                                       (_Offset <= 0xfff))
-
-/* 2. Page8(0x800) */
-#define        bRFMOD                  0x1     /* Reg 0x800 rFPGA0_RFMOD */
-#define        bJapanMode              0x2
-#define        bCCKTxSC                0x30
-#define        bCCKEn                  0x1000000
-#define        bOFDMEn                 0x2000000
-
-#define        bOFDMRxADCPhase         0x10000 /* Useless now */
-#define        bOFDMTxDACPhase         0x40000
-#define        bXATxAGC                0x3f
-#define        bXBTxAGC                0xf00   /* Reg 80c rFPGA0_TxGainStage */
-#define        bXCTxAGC                0xf000
-#define        bXDTxAGC                0xf0000
-
-#define        bPAStart                0xf0000000      /* Useless now */
-#define        bTRStart                0x00f00000
-#define        bRFStart                0x0000f000
-#define        bBBStart                0x000000f0
-#define        bBBCCKStart             0x0000000f
-#define        bPAEnd                  0xf          /* Reg0x814 */
-#define        bTREnd                  0x0f000000
-#define        bRFEnd                  0x000f0000
-#define        bCCAMask                0x000000f0   /* T2R */
-#define        bR2RCCAMask             0x00000f00
-#define        bHSSI_R2TDelay          0xf8000000
-#define        bHSSI_T2RDelay          0xf80000
-#define        bContTxHSSI             0x400     /* change gain at continue Tx */
-#define        bIGFromCCK              0x200
-#define        bAGCAddress             0x3f
-#define        bRxHPTx                 0x7000
-#define        bRxHPT2R                0x38000
-#define        bRxHPCCKIni             0xc0000
-#define        bAGCTxCode              0xc00000
-#define        bAGCRxCode              0x300000
-#define        b3WireDataLength        0x800   /* Reg 0x820~84f rFPGA0_XA_HSSIParm1 */
-#define        b3WireAddressLength     0x400
-#define        b3WireRFPowerDown       0x1     /* Useless now */
-#define        b5GPAPEPolarity         0x40000000
-#define        b2GPAPEPolarity         0x80000000
-#define        bRFSW_TxDefaultAnt      0x3
-#define        bRFSW_TxOptionAnt       0x30
-#define        bRFSW_RxDefaultAnt      0x300
-#define        bRFSW_RxOptionAnt       0x3000
-#define        bRFSI_3WireData         0x1
-#define        bRFSI_3WireClock        0x2
-#define        bRFSI_3WireLoad         0x4
-#define        bRFSI_3WireRW           0x8
-#define        bRFSI_3Wire             0xf
-#define        bRFSI_RFENV             0x10    /* Reg 0x870 rFPGA0_XAB_RFInterfaceSW */
-#define        bRFSI_TRSW              0x20    /* Useless now */
-#define        bRFSI_TRSWB             0x40
-#define        bRFSI_ANTSW             0x100
-#define        bRFSI_ANTSWB            0x200
-#define        bRFSI_PAPE              0x400
-#define        bRFSI_PAPE5G            0x800
-#define        bBandSelect             0x1
-#define        bHTSIG2_GI              0x80
-#define        bHTSIG2_Smoothing       0x01
-#define        bHTSIG2_Sounding        0x02
-#define        bHTSIG2_Aggreaton       0x08
-#define        bHTSIG2_STBC            0x30
-#define        bHTSIG2_AdvCoding       0x40
-#define        bHTSIG2_NumOfHTLTF      0x300
-#define        bHTSIG2_CRC8            0x3fc
-#define        bHTSIG1_MCS             0x7f
-#define        bHTSIG1_BandWidth       0x80
-#define        bHTSIG1_HTLength        0xffff
-#define        bLSIG_Rate              0xf
-#define        bLSIG_Reserved          0x10
-#define        bLSIG_Length            0x1fffe
-#define        bLSIG_Parity            0x20
-#define        bCCKRxPhase             0x4
-#define        bLSSIReadAddress        0x7f800000   /* T65 RF */
-#define        bLSSIReadEdge           0x80000000   /* LSSI "Read" edge signal */
-#define        bLSSIReadBackData       0xfffff         /* T65 RF */
-#define        bLSSIReadOKFlag         0x1000  /* Useless now */
-#define        bCCKSampleRate          0x8       /*0: 44MHz, 1:88MHz*/
-#define        bRegulator0Standby      0x1
-#define        bRegulatorPLLStandby    0x2
-#define        bRegulator1Standby      0x4
-#define        bPLLPowerUp             0x8
-#define        bDPLLPowerUp            0x10
-#define        bDA10PowerUp            0x20
-#define        bAD7PowerUp             0x200
-#define        bDA6PowerUp             0x2000
-#define        bXtalPowerUp            0x4000
-#define        b40MDClkPowerUP         0x8000
-#define        bDA6DebugMode           0x20000
-#define        bDA6Swing               0x380000
-
-/* Reg 0x880 rFPGA0_AnalogParameter1 20/40 CCK support switch 40/80 BB MHZ */
-#define        bADClkPhase             0x4000000
-
-#define        b80MClkDelay            0x18000000      /* Useless */
-#define        bAFEWatchDogEnable      0x20000000
-
-/* Reg 0x884 rFPGA0_AnalogParameter2 Crystal cap */
-#define        bXtalCap01              0xc0000000
-#define        bXtalCap23              0x3
-#define        bXtalCap92x             0x0f000000
-#define bXtalCap               0x0f000000
-#define        bIntDifClkEnable        0x400   /* Useless */
-#define        bExtSigClkEnable        0x800
-#define        bBandgapMbiasPowerUp    0x10000
-#define        bAD11SHGain             0xc0000
-#define        bAD11InputRange         0x700000
-#define        bAD11OPCurrent          0x3800000
-#define        bIPathLoopback          0x4000000
-#define        bQPathLoopback          0x8000000
-#define        bAFELoopback            0x10000000
-#define        bDA10Swing              0x7e0
-#define        bDA10Reverse            0x800
-#define        bDAClkSource            0x1000
-#define        bAD7InputRange          0x6000
-#define        bAD7Gain                0x38000
-#define        bAD7OutputCMMode        0x40000
-#define        bAD7InputCMMode         0x380000
-#define        bAD7Current             0xc00000
-#define        bRegulatorAdjust        0x7000000
-#define        bAD11PowerUpAtTx        0x1
-#define        bDA10PSAtTx             0x10
-#define        bAD11PowerUpAtRx        0x100
-#define        bDA10PSAtRx             0x1000
-#define        bCCKRxAGCFormat         0x200
-#define        bPSDFFTSamplepPoint     0xc000
-#define        bPSDAverageNum          0x3000
-#define        bIQPathControl          0xc00
-#define        bPSDFreq                0x3ff
-#define        bPSDAntennaPath         0x30
-#define        bPSDIQSwitch            0x40
-#define        bPSDRxTrigger           0x400000
-#define        bPSDTxTrigger           0x80000000
-#define        bPSDSineToneScale       0x7f000000
-#define        bPSDReport              0xffff
-
-/* 3. Page9(0x900) */
-#define        bOFDMTxSC               0x30000000      /* Useless */
-#define        bCCKTxOn                0x1
-#define        bOFDMTxOn               0x2
-#define        bDebugPage              0xfff  /* reset debug page and HWord, LWord */
-#define        bDebugItem              0xff   /* reset debug page and LWord */
-#define        bAntL                   0x10
-#define        bAntNonHT               0x100
-#define        bAntHT1                 0x1000
-#define        bAntHT2                 0x10000
-#define        bAntHT1S1               0x100000
-#define        bAntNonHTS1             0x1000000
-
-/* 4. PageA(0xA00) */
-#define        bCCKBBMode              0x3     /* Useless */
-#define        bCCKTxPowerSaving       0x80
-#define        bCCKRxPowerSaving       0x40
-
-#define        bCCKSideBand            0x10    /* Reg 0xa00 rCCK0_System 20/40 switch*/
-#define        bCCKScramble            0x8     /* Useless */
-#define        bCCKAntDiversity        0x8000
-#define        bCCKCarrierRecovery     0x4000
-#define        bCCKTxRate              0x3000
-#define        bCCKDCCancel            0x0800
-#define        bCCKISICancel           0x0400
-#define        bCCKMatchFilter         0x0200
-#define        bCCKEqualizer           0x0100
-#define        bCCKPreambleDetect      0x800000
-#define        bCCKFastFalseCCA        0x400000
-#define        bCCKChEstStart          0x300000
-#define        bCCKCCACount            0x080000
-#define        bCCKcs_lim              0x070000
-#define        bCCKBistMode            0x80000000
-#define        bCCKCCAMask             0x40000000
-#define        bCCKTxDACPhase          0x4
-#define        bCCKRxADCPhase          0x20000000   /* r_rx_clk */
-#define        bCCKr_cp_mode0          0x0100
-#define        bCCKTxDCOffset          0xf0
-#define        bCCKRxDCOffset          0xf
-#define        bCCKCCAMode             0xc000
-#define        bCCKFalseCS_lim         0x3f00
-#define        bCCKCS_ratio            0xc00000
-#define        bCCKCorgBit_sel         0x300000
-#define        bCCKPD_lim              0x0f0000
-#define        bCCKNewCCA              0x80000000
-#define        bCCKRxHPofIG            0x8000
-#define        bCCKRxIG                0x7f00
-#define        bCCKLNAPolarity         0x800000
-#define        bCCKRx1stGain           0x7f0000
-#define        bCCKRFExtend            0x20000000 /* CCK Rx initial gain polarity */
-#define        bCCKRxAGCSatLevel       0x1f000000
-#define        bCCKRxAGCSatCount       0xe0
-#define        bCCKRxRFSettle          0x1f       /* AGCsamp_dly */
-#define        bCCKFixedRxAGC          0x8000
-#define        bCCKAntennaPolarity     0x2000
-#define        bCCKTxFilterType        0x0c00
-#define        bCCKRxAGCReportType     0x0300
-#define        bCCKRxDAGCEn            0x80000000
-#define        bCCKRxDAGCPeriod        0x20000000
-#define        bCCKRxDAGCSatLevel      0x1f000000
-#define        bCCKTimingRecovery      0x800000
-#define        bCCKTxC0                0x3f0000
-#define        bCCKTxC1                0x3f000000
-#define        bCCKTxC2                0x3f
-#define        bCCKTxC3                0x3f00
-#define        bCCKTxC4                0x3f0000
-#define        bCCKTxC5                0x3f000000
-#define        bCCKTxC6                0x3f
-#define        bCCKTxC7                0x3f00
-#define        bCCKDebugPort           0xff0000
-#define        bCCKDACDebug            0x0f000000
-#define        bCCKFalseAlarmEnable    0x8000
-#define        bCCKFalseAlarmRead      0x4000
-#define        bCCKTRSSI               0x7f
-#define        bCCKRxAGCReport         0xfe
-#define        bCCKRxReport_AntSel     0x80000000
-#define        bCCKRxReport_MFOff      0x40000000
-#define        bCCKRxRxReport_SQLoss   0x20000000
-#define        bCCKRxReport_Pktloss    0x10000000
-#define        bCCKRxReport_Lockedbit  0x08000000
-#define        bCCKRxReport_RateError  0x04000000
-#define        bCCKRxReport_RxRate     0x03000000
-#define        bCCKRxFACounterLower    0xff
-#define        bCCKRxFACounterUpper    0xff000000
-#define        bCCKRxHPAGCStart        0xe000
-#define        bCCKRxHPAGCFinal        0x1c00
-#define        bCCKRxFalseAlarmEnable  0x8000
-#define        bCCKFACounterFreeze     0x4000
-#define        bCCKTxPathSel           0x10000000
-#define        bCCKDefaultRxPath       0xc000000
-#define        bCCKOptionRxPath        0x3000000
-
-/* 5. PageC(0xC00) */
-#define        bNumOfSTF               0x3     /* Useless */
-#define        bShift_L                0xc0
-#define        bGI_TH                  0xc
-#define        bRxPathA                0x1
-#define        bRxPathB                0x2
-#define        bRxPathC                0x4
-#define        bRxPathD                0x8
-#define        bTxPathA                0x1
-#define        bTxPathB                0x2
-#define        bTxPathC                0x4
-#define        bTxPathD                0x8
-#define        bTRSSIFreq              0x200
-#define        bADCBackoff             0x3000
-#define        bDFIRBackoff            0xc000
-#define        bTRSSILatchPhase        0x10000
-#define        bRxIDCOffset            0xff
-#define        bRxQDCOffset            0xff00
-#define        bRxDFIRMode             0x1800000
-#define        bRxDCNFType             0xe000000
-#define        bRXIQImb_A              0x3ff
-#define        bRXIQImb_B              0xfc00
-#define        bRXIQImb_C              0x3f0000
-#define        bRXIQImb_D              0xffc00000
-#define        bDC_dc_Notch            0x60000
-#define        bRxNBINotch             0x1f000000
-#define        bPD_TH                  0xf
-#define        bPD_TH_Opt2             0xc000
-#define        bPWED_TH                0x700
-#define        bIfMF_Win_L             0x800
-#define        bPD_Option              0x1000
-#define        bMF_Win_L               0xe000
-#define        bBW_Search_L            0x30000
-#define        bwin_enh_L              0xc0000
-#define        bBW_TH                  0x700000
-#define        bED_TH2                 0x3800000
-#define        bBW_option              0x4000000
-#define        bRatio_TH               0x18000000
-#define        bWindow_L               0xe0000000
-#define        bSBD_Option             0x1
-#define        bFrame_TH               0x1c
-#define        bFS_Option              0x60
-#define        bDC_Slope_check         0x80
-#define        bFGuard_Counter_DC_L    0xe00
-#define        bFrame_Weight_Short     0x7000
-#define        bSub_Tune               0xe00000
-#define        bFrame_DC_Length        0xe000000
-#define        bSBD_start_offset       0x30000000
-#define        bFrame_TH_2             0x7
-#define        bFrame_GI2_TH           0x38
-#define        bGI2_Sync_en            0x40
-#define        bSarch_Short_Early      0x300
-#define        bSarch_Short_Late       0xc00
-#define        bSarch_GI2_Late         0x70000
-#define        bCFOAntSum              0x1
-#define        bCFOAcc                 0x2
-#define        bCFOStartOffset         0xc
-#define        bCFOLookBack            0x70
-#define        bCFOSumWeight           0x80
-#define        bDAGCEnable             0x10000
-#define        bTXIQImb_A              0x3ff
-#define        bTXIQImb_B              0xfc00
-#define        bTXIQImb_C              0x3f0000
-#define        bTXIQImb_D              0xffc00000
-#define        bTxIDCOffset            0xff
-#define        bTxQDCOffset            0xff00
-#define        bTxDFIRMode             0x10000
-#define        bTxPesudoNoiseOn        0x4000000
-#define        bTxPesudoNoise_A        0xff
-#define        bTxPesudoNoise_B        0xff00
-#define        bTxPesudoNoise_C        0xff0000
-#define        bTxPesudoNoise_D        0xff000000
-#define        bCCADropOption          0x20000
-#define        bCCADropThres           0xfff00000
-#define        bEDCCA_H                0xf
-#define        bEDCCA_L                0xf0
-#define        bLambda_ED              0x300
-#define        bRxInitialGain          0x7f
-#define        bRxAntDivEn             0x80
-#define        bRxAGCAddressForLNA     0x7f00
-#define        bRxHighPowerFlow        0x8000
-#define        bRxAGCFreezeThres       0xc0000
-#define        bRxFreezeStep_AGC1      0x300000
-#define        bRxFreezeStep_AGC2      0xc00000
-#define        bRxFreezeStep_AGC3      0x3000000
-#define        bRxFreezeStep_AGC0      0xc000000
-#define        bRxRssi_Cmp_En          0x10000000
-#define        bRxQuickAGCEn           0x20000000
-#define        bRxAGCFreezeThresMode   0x40000000
-#define        bRxOverFlowCheckType    0x80000000
-#define        bRxAGCShift             0x7f
-#define        bTRSW_Tri_Only          0x80
-#define        bPowerThres             0x300
-#define        bRxAGCEn                0x1
-#define        bRxAGCTogetherEn        0x2
-#define        bRxAGCMin               0x4
-#define        bRxHP_Ini               0x7
-#define        bRxHP_TRLNA             0x70
-#define        bRxHP_RSSI              0x700
-#define        bRxHP_BBP1              0x7000
-#define        bRxHP_BBP2              0x70000
-#define        bRxHP_BBP3              0x700000
-#define        bRSSI_H                 0x7f0000     /* the threshold for high power */
-#define        bRSSI_Gen               0x7f000000   /* the threshold for ant divers */
-#define        bRxSettle_TRSW          0x7
-#define        bRxSettle_LNA           0x38
-#define        bRxSettle_RSSI          0x1c0
-#define        bRxSettle_BBP           0xe00
-#define        bRxSettle_RxHP          0x7000
-#define        bRxSettle_AntSW_RSSI    0x38000
-#define        bRxSettle_AntSW         0xc0000
-#define        bRxProcessTime_DAGC     0x300000
-#define        bRxSettle_HSSI          0x400000
-#define        bRxProcessTime_BBPPW    0x800000
-#define        bRxAntennaPowerShift    0x3000000
-#define        bRSSITableSelect        0xc000000
-#define        bRxHP_Final             0x7000000
-#define        bRxHTSettle_BBP         0x7
-#define        bRxHTSettle_HSSI        0x8
-#define        bRxHTSettle_RxHP        0x70
-#define        bRxHTSettle_BBPPW       0x80
-#define        bRxHTSettle_Idle        0x300
-#define        bRxHTSettle_Reserved    0x1c00
-#define        bRxHTRxHPEn             0x8000
-#define        bRxHTAGCFreezeThres     0x30000
-#define        bRxHTAGCTogetherEn      0x40000
-#define        bRxHTAGCMin             0x80000
-#define        bRxHTAGCEn              0x100000
-#define        bRxHTDAGCEn             0x200000
-#define        bRxHTRxHP_BBP           0x1c00000
-#define        bRxHTRxHP_Final         0xe0000000
-#define        bRxPWRatioTH            0x3
-#define        bRxPWRatioEn            0x4
-#define        bRxMFHold               0x3800
-#define        bRxPD_Delay_TH1         0x38
-#define        bRxPD_Delay_TH2         0x1c0
-#define        bRxPD_DC_COUNT_MAX      0x600
-#define        bRxPD_Delay_TH          0x8000
-#define        bRxProcess_Delay        0xf0000
-#define        bRxSearchrange_GI2_Early 0x700000
-#define        bRxFrame_Guard_Counter_L 0x3800000
-#define        bRxSGI_Guard_L          0xc000000
-#define        bRxSGI_Search_L         0x30000000
-#define        bRxSGI_TH               0xc0000000
-#define        bDFSCnt0                0xff
-#define        bDFSCnt1                0xff00
-#define        bDFSFlag                0xf0000
-#define        bMFWeightSum            0x300000
-#define        bMinIdxTH               0x7f000000
-#define        bDAFormat               0x40000
-#define        bTxChEmuEnable          0x01000000
-#define        bTRSWIsolation_A        0x7f
-#define        bTRSWIsolation_B        0x7f00
-#define        bTRSWIsolation_C        0x7f0000
-#define        bTRSWIsolation_D        0x7f000000
-#define        bExtLNAGain             0x7c00
-
-/* 6. PageE(0xE00) */
-#define        bSTBCEn                 0x4     /* Useless */
-#define        bAntennaMapping         0x10
-#define        bNss                    0x20
-#define        bCFOAntSumD             0x200
-#define        bPHYCounterReset        0x8000000
-#define        bCFOReportGet           0x4000000
-#define        bOFDMContinueTx         0x10000000
-#define        bOFDMSingleCarrier      0x20000000
-#define        bOFDMSingleTone         0x40000000
-#define        bHTDetect               0x100
-#define        bCFOEn                  0x10000
-#define        bCFOValue               0xfff00000
-#define        bSigTone_Re             0x3f
-#define        bSigTone_Im             0x7f00
-#define        bCounter_CCA            0xffff
-#define        bCounter_ParityFail     0xffff0000
-#define        bCounter_RateIllegal    0xffff
-#define        bCounter_CRC8Fail       0xffff0000
-#define        bCounter_MCSNoSupport   0xffff
-#define        bCounter_FastSync       0xffff
-#define        bShortCFO               0xfff
-#define        bShortCFOTLength        12   /* total */
-#define        bShortCFOFLength        11   /* fraction */
-#define        bLongCFO                0x7ff
-#define        bLongCFOTLength         11
-#define        bLongCFOFLength         11
-#define        bTailCFO                0x1fff
-#define        bTailCFOTLength         13
-#define        bTailCFOFLength         12
-#define        bmax_en_pwdB            0xffff
-#define        bCC_power_dB            0xffff0000
-#define        bnoise_pwdB             0xffff
-#define        bPowerMeasTLength       10
-#define        bPowerMeasFLength       3
-#define        bRx_HT_BW               0x1
-#define        bRxSC                   0x6
-#define        bRx_HT                  0x8
-#define        bNB_intf_det_on         0x1
-#define        bIntf_win_len_cfg       0x30
-#define        bNB_Intf_TH_cfg         0x1c0
-#define        bRFGain                 0x3f
-#define        bTableSel               0x40
-#define        bTRSW                   0x80
-#define        bRxSNR_A                0xff
-#define        bRxSNR_B                0xff00
-#define        bRxSNR_C                0xff0000
-#define        bRxSNR_D                0xff000000
-#define        bSNREVMTLength          8
-#define        bSNREVMFLength          1
-#define        bCSI1st                 0xff
-#define        bCSI2nd                 0xff00
-#define        bRxEVM1st               0xff0000
-#define        bRxEVM2nd               0xff000000
-#define        bSIGEVM                 0xff
-#define        bPWDB                   0xff00
-#define        bSGIEN                  0x10000
-
-#define        bSFactorQAM1            0xf     /* Useless */
-#define        bSFactorQAM2            0xf0
-#define        bSFactorQAM3            0xf00
-#define        bSFactorQAM4            0xf000
-#define        bSFactorQAM5            0xf0000
-#define        bSFactorQAM6            0xf0000
-#define        bSFactorQAM7            0xf00000
-#define        bSFactorQAM8            0xf000000
-#define        bSFactorQAM9            0xf0000000
-#define        bCSIScheme              0x100000
-
-#define        bNoiseLvlTopSet         0x3     /* Useless */
-#define        bChSmooth               0x4
-#define        bChSmoothCfg1           0x38
-#define        bChSmoothCfg2           0x1c0
-#define        bChSmoothCfg3           0xe00
-#define        bChSmoothCfg4           0x7000
-#define        bMRCMode                0x800000
-#define        bTHEVMCfg               0x7000000
-
-#define        bLoopFitType            0x1     /* Useless */
-#define        bUpdCFO                 0x40
-#define        bUpdCFOOffData          0x80
-#define        bAdvUpdCFO              0x100
-#define        bAdvTimeCtrl            0x800
-#define        bUpdClko                0x1000
-#define        bFC                     0x6000
-#define        bTrackingMode           0x8000
-#define        bPhCmpEnable            0x10000
-#define        bUpdClkoLTF             0x20000
-#define        bComChCFO               0x40000
-#define        bCSIEstiMode            0x80000
-#define        bAdvUpdEqz              0x100000
-#define        bUChCfg                 0x7000000
-#define        bUpdEqz                 0x8000000
-
-#define        bTxAGCRate18_06         0x7f7f7f7f      /* Useless */
-#define        bTxAGCRate54_24         0x7f7f7f7f
-#define        bTxAGCRateMCS32         0x7f
-#define        bTxAGCRateCCK           0x7f00
-#define        bTxAGCRateMCS3_MCS0     0x7f7f7f7f
-#define        bTxAGCRateMCS7_MCS4     0x7f7f7f7f
-#define        bTxAGCRateMCS11_MCS8    0x7f7f7f7f
-#define        bTxAGCRateMCS15_MCS12   0x7f7f7f7f
-
-/* Rx Pseduo noise */
-#define        bRxPesudoNoiseOn         0x20000000     /* Useless */
-#define        bRxPesudoNoise_A         0xff
-#define        bRxPesudoNoise_B         0xff00
-#define        bRxPesudoNoise_C         0xff0000
-#define        bRxPesudoNoise_D         0xff000000
-#define        bPesudoNoiseState_A      0xffff
-#define        bPesudoNoiseState_B      0xffff0000
-#define        bPesudoNoiseState_C      0xffff
-#define        bPesudoNoiseState_D      0xffff0000
-
-/* 7. RF Register
- * Zebra1
- */
-#define        bZebra1_HSSIEnable        0x8           /* Useless */
-#define        bZebra1_TRxControl        0xc00
-#define        bZebra1_TRxGainSetting    0x07f
-#define        bZebra1_RxCorner          0xc00
-#define        bZebra1_TxChargePump      0x38
-#define        bZebra1_RxChargePump      0x7
-#define        bZebra1_ChannelNum        0xf80
-#define        bZebra1_TxLPFBW           0x400
-#define        bZebra1_RxLPFBW           0x600
-
-/*Zebra4 */
-#define        bRTL8256RegModeCtrl1      0x100 /* Useless */
-#define        bRTL8256RegModeCtrl0      0x40
-#define        bRTL8256_TxLPFBW          0x18
-#define        bRTL8256_RxLPFBW          0x600
-
-/* RTL8258 */
-#define        bRTL8258_TxLPFBW          0xc   /* Useless */
-#define        bRTL8258_RxLPFBW          0xc00
-#define        bRTL8258_RSSILPFBW        0xc0
-
-/*
- * Other Definition
- */
-
-/* byte endable for sb_write */
-#define        bByte0                    0x1   /* Useless */
-#define        bByte1                    0x2
-#define        bByte2                    0x4
-#define        bByte3                    0x8
-#define        bWord0                    0x3
-#define        bWord1                    0xc
-#define        bDWord                    0xf
-
-/* 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
-
-/* for PutRFRegsetting & GetRFRegSetting BitMask */
-#define        bRFRegOffsetMask        0xfffff
-#define        bEnable                   0x1   /* Useless */
-#define        bDisable                  0x0
-
-#define        LeftAntenna               0x0   /* Useless */
-#define        RightAntenna              0x1
-
-#define        tCheckTxStatus            500   /* 500ms Useless */
-#define        tUpdateRxCounter          100   /* 100ms */
-
-#define        rateCCK     0   /* Useless */
-#define        rateOFDM    1
-#define        rateHT      2
-
-/* define Register-End */
-#define        bPMAC_End       0x1ff   /* Useless */
-#define        bFPGAPHY0_End   0x8ff
-#define        bFPGAPHY1_End   0x9ff
-#define        bCCKPHY0_End    0xaff
-#define        bOFDMPHY0_End   0xcff
-#define        bOFDMPHY1_End   0xdff
-
-#define        bPMACControl    0x0     /* Useless */
-#define        bWMACControl    0x1
-#define        bWNICControl    0x2
-
-#define        ANTENNA_A       0x1     /* Useless */
-#define        ANTENNA_B       0x2
-#define        ANTENNA_AB      0x3     /* ANTENNA_A |ANTENNA_B */
-
-#define        ANTENNA_C       0x4
-#define        ANTENNA_D       0x8
-
-/* accept all physical address */
-#define RCR_AAP                BIT(0)
-#define RCR_APM                BIT(1)          /* accept physical match */
-#define RCR_AM         BIT(2)          /* accept multicast */
-#define RCR_AB         BIT(3)          /* accept broadcast */
-#define RCR_ACRC32     BIT(5)          /* accept error packet */
-#define RCR_9356SEL    BIT(6)
-#define RCR_AICV       BIT(12)         /* Accept ICV error packet */
-#define RCR_RXFTH0     (BIT(13)|BIT(14)|BIT(15))       /* Rx FIFO threshold */
-#define RCR_ADF                BIT(18)         /* Accept Data(frame type) frame */
-#define RCR_ACF                BIT(19)         /* Accept control frame */
-#define RCR_AMF                BIT(20)         /* Accept management frame */
-#define RCR_ADD3       BIT(21)
-#define RCR_APWRMGT    BIT(22)         /* Accept power management packet */
-#define RCR_CBSSID     BIT(23)         /* Accept BSSID match packet */
-#define RCR_ENMARP     BIT(28)         /* enable mac auto reset phy */
-#define RCR_EnCS1      BIT(29)         /* enable carrier sense method 1 */
-#define RCR_EnCS2      BIT(30)         /* enable carrier sense method 2 */
-/* Rx Early mode is performed for packet size greater than 1536 */
-#define RCR_OnlyErlPkt BIT(31)
-
-/*--------------------------Define Parameters-------------------------------*/
-
-#endif /*__INC_HAL8192SPHYREG_H */
-
diff --git a/drivers/staging/rtl8712/rtl871x_pwrctrl.c b/drivers/staging/rtl8712/rtl871x_pwrctrl.c
deleted file mode 100644 (file)
index cd6d9ff..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl871x_pwrctrl.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _RTL871X_PWRCTRL_C_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "osdep_intf.h"
-
-#define RTL8712_SDIO_LOCAL_BASE 0X10100000
-#define SDIO_HCPWM (RTL8712_SDIO_LOCAL_BASE + 0x0081)
-
-void r8712_set_rpwm(struct _adapter *padapter, u8 val8)
-{
-       u8      rpwm;
-       struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv;
-
-       if (pwrpriv->rpwm == val8) {
-               if (pwrpriv->rpwm_retry == 0)
-                       return;
-       }
-       if (padapter->driver_stopped || padapter->surprise_removed)
-               return;
-       rpwm = val8 | pwrpriv->tog;
-       switch (val8) {
-       case PS_STATE_S1:
-               pwrpriv->cpwm = val8;
-               break;
-       case PS_STATE_S2:/* only for USB normal powersave mode use,
-                         * temp mark some code.
-                         */
-       case PS_STATE_S3:
-       case PS_STATE_S4:
-               pwrpriv->cpwm = val8;
-               break;
-       default:
-               break;
-       }
-       pwrpriv->rpwm_retry = 0;
-       pwrpriv->rpwm = val8;
-       r8712_write8(padapter, 0x1025FE58, rpwm);
-       pwrpriv->tog += 0x80;
-}
-
-void r8712_set_ps_mode(struct _adapter *padapter, uint ps_mode, uint smart_ps)
-{
-       struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv;
-
-       if (ps_mode > PM_Card_Disable)
-               return;
-       /* if driver is in active state, we dont need set smart_ps.*/
-       if (ps_mode == PS_MODE_ACTIVE)
-               smart_ps = 0;
-       if ((pwrpriv->pwr_mode != ps_mode) || (pwrpriv->smart_ps != smart_ps)) {
-               if (pwrpriv->pwr_mode == PS_MODE_ACTIVE)
-                       pwrpriv->bSleep = true;
-               else
-                       pwrpriv->bSleep = false;
-               pwrpriv->pwr_mode = ps_mode;
-               pwrpriv->smart_ps = smart_ps;
-               schedule_work(&pwrpriv->SetPSModeWorkItem);
-       }
-}
-
-/*
- * 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 r8712_cpwm_int_hdl(struct _adapter *padapter,
-                       struct reportpwrstate_parm *preportpwrstate)
-{
-       struct pwrctrl_priv *pwrpriv = &(padapter->pwrctrlpriv);
-       struct cmd_priv *pcmdpriv = &(padapter->cmdpriv);
-
-       if (pwrpriv->cpwm_tog == ((preportpwrstate->state) & 0x80))
-               return;
-       del_timer(&padapter->pwrctrlpriv.rpwm_check_timer);
-       mutex_lock(&pwrpriv->mutex_lock);
-       pwrpriv->cpwm = (preportpwrstate->state) & 0xf;
-       if (pwrpriv->cpwm >= PS_STATE_S2) {
-               if (pwrpriv->alives & CMD_ALIVE)
-                       complete(&(pcmdpriv->cmd_queue_comp));
-       }
-       pwrpriv->cpwm_tog = (preportpwrstate->state) & 0x80;
-       mutex_unlock(&pwrpriv->mutex_lock);
-}
-
-static inline void register_task_alive(struct pwrctrl_priv *pwrctrl, uint tag)
-{
-               pwrctrl->alives |= tag;
-}
-
-static inline void unregister_task_alive(struct pwrctrl_priv *pwrctrl, uint tag)
-{
-       if (pwrctrl->alives & tag)
-               pwrctrl->alives ^= tag;
-}
-
-static void _rpwm_check_handler (struct _adapter *padapter)
-{
-       struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv;
-
-       if (padapter->driver_stopped || padapter->surprise_removed)
-               return;
-       if (pwrpriv->cpwm != pwrpriv->rpwm)
-               schedule_work(&pwrpriv->rpwm_workitem);
-}
-
-static void SetPSModeWorkItemCallback(struct work_struct *work)
-{
-       struct pwrctrl_priv *pwrpriv = container_of(work,
-                                      struct pwrctrl_priv, SetPSModeWorkItem);
-       struct _adapter *padapter = container_of(pwrpriv,
-                                   struct _adapter, pwrctrlpriv);
-       if (!pwrpriv->bSleep) {
-               mutex_lock(&pwrpriv->mutex_lock);
-               if (pwrpriv->pwr_mode == PS_MODE_ACTIVE)
-                       r8712_set_rpwm(padapter, PS_STATE_S4);
-               mutex_unlock(&pwrpriv->mutex_lock);
-       }
-}
-
-static void rpwm_workitem_callback(struct work_struct *work)
-{
-       struct pwrctrl_priv *pwrpriv = container_of(work,
-                                      struct pwrctrl_priv, rpwm_workitem);
-       struct _adapter *padapter = container_of(pwrpriv,
-                                   struct _adapter, pwrctrlpriv);
-       if (pwrpriv->cpwm != pwrpriv->rpwm) {
-               mutex_lock(&pwrpriv->mutex_lock);
-               r8712_read8(padapter, SDIO_HCPWM);
-               pwrpriv->rpwm_retry = 1;
-               r8712_set_rpwm(padapter, pwrpriv->rpwm);
-               mutex_unlock(&pwrpriv->mutex_lock);
-       }
-}
-
-static void rpwm_check_handler (struct timer_list *t)
-{
-       struct _adapter *adapter =
-               from_timer(adapter, t, pwrctrlpriv.rpwm_check_timer);
-
-       _rpwm_check_handler(adapter);
-}
-
-void r8712_init_pwrctrl_priv(struct _adapter *padapter)
-{
-       struct pwrctrl_priv *pwrctrlpriv = &padapter->pwrctrlpriv;
-
-       memset((unsigned char *)pwrctrlpriv, 0, sizeof(struct pwrctrl_priv));
-       mutex_init(&pwrctrlpriv->mutex_lock);
-       pwrctrlpriv->cpwm = PS_STATE_S4;
-       pwrctrlpriv->pwr_mode = PS_MODE_ACTIVE;
-       pwrctrlpriv->smart_ps = 0;
-       pwrctrlpriv->tog = 0x80;
-/* clear RPWM to ensure driver and fw back to initial state. */
-       r8712_write8(padapter, 0x1025FE58, 0);
-       INIT_WORK(&pwrctrlpriv->SetPSModeWorkItem, SetPSModeWorkItemCallback);
-       INIT_WORK(&pwrctrlpriv->rpwm_workitem, rpwm_workitem_callback);
-       timer_setup(&pwrctrlpriv->rpwm_check_timer, rpwm_check_handler, 0);
-}
-
-/*
- * Caller: r8712_cmd_thread
- * Check if the fw_pwrstate is okay for issuing cmd.
- * If not (cpwm should be is less than P2 state), then the sub-routine
- * will raise the cpwm to be greater than or equal to P2.
- * Calling Context: Passive
- * Return Value:
- * 0:      r8712_cmd_thread can issue cmds to firmware afterwards.
- * -EINVAL: r8712_cmd_thread can not do anything.
- */
-int r8712_register_cmd_alive(struct _adapter *padapter)
-{
-       int res = 0;
-       struct pwrctrl_priv *pwrctrl = &padapter->pwrctrlpriv;
-
-       mutex_lock(&pwrctrl->mutex_lock);
-       register_task_alive(pwrctrl, CMD_ALIVE);
-       if (pwrctrl->cpwm < PS_STATE_S2) {
-               r8712_set_rpwm(padapter, PS_STATE_S3);
-               res = -EINVAL;
-       }
-       mutex_unlock(&pwrctrl->mutex_lock);
-       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 r8712_unregister_cmd_alive(struct _adapter *padapter)
-{
-       struct pwrctrl_priv *pwrctrl = &padapter->pwrctrlpriv;
-
-       mutex_lock(&pwrctrl->mutex_lock);
-       unregister_task_alive(pwrctrl, CMD_ALIVE);
-       if ((pwrctrl->cpwm > PS_STATE_S2) &&
-          (pwrctrl->pwr_mode > PS_MODE_ACTIVE)) {
-               if ((pwrctrl->alives == 0) &&
-                   (check_fwstate(&padapter->mlmepriv,
-                    _FW_UNDER_LINKING) != true)) {
-                       r8712_set_rpwm(padapter, PS_STATE_S0);
-               }
-       }
-       mutex_unlock(&pwrctrl->mutex_lock);
-}
-
-void r8712_flush_rwctrl_works(struct _adapter *padapter)
-{
-       struct pwrctrl_priv *pwrctrl = &padapter->pwrctrlpriv;
-
-       flush_work(&pwrctrl->SetPSModeWorkItem);
-       flush_work(&pwrctrl->rpwm_workitem);
-}
diff --git a/drivers/staging/rtl8712/rtl871x_pwrctrl.h b/drivers/staging/rtl8712/rtl871x_pwrctrl.h
deleted file mode 100644 (file)
index b35b9c7..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL871X_PWRCTRL_H_
-#define __RTL871X_PWRCTRL_H_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-
-#define CMD_ALIVE      BIT(2)
-
-enum Power_Mgnt {
-       PS_MODE_ACTIVE  = 0,
-       PS_MODE_MIN,
-       PS_MODE_MAX,
-       PS_MODE_DTIM,
-       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_LP                           BIT(4)  /* low performance */
-
-#define        PS_STATE_MASK           (0x0F)
-#define        PS_STATE_HW_MASK        (0x07)
-#define                PS_SEQ_MASK             (0xc0)
-
-#define        PS_STATE(x)                     (PS_STATE_MASK & (x))
-#define        PS_STATE_HW(x)  (PS_STATE_HW_MASK & (x))
-#define        PS_SEQ(x)                       (PS_SEQ_MASK & (x))
-
-#define        PS_STATE_S0             (PS_DPS)
-#define                PS_STATE_S1             (PS_LCLK)
-#define        PS_STATE_S2             (PS_RF_OFF)
-#define                PS_STATE_S3             (PS_ALL_ON)
-#define        PS_STATE_S4             ((PS_ST_ACTIVE) | (PS_ALL_ON))
-
-#define                PS_IS_RF_ON(x)          ((x) & (PS_ALL_ON))
-#define                PS_IS_ACTIVE(x)         ((x) & (PS_ST_ACTIVE))
-#define                CLR_PS_STATE(x) ((x) = ((x) & (0xF0)))
-
-struct reportpwrstate_parm {
-       unsigned char mode;
-       unsigned char state; /* the CPWM value */
-       unsigned short rsvd;
-};
-
-struct pwrctrl_priv {
-       struct mutex mutex_lock;
-       /*volatile*/ u8 rpwm; /* requested power state for fw */
-       /* fw current power state. updated when 1. read from HCPWM or
-        * 2. driver lowers power level
-        */
-       /*volatile*/ u8 cpwm;
-       /*volatile*/ u8 tog; /* toggling */
-       /*volatile*/ u8 cpwm_tog; /* toggling */
-       /*volatile*/ u8 tgt_rpwm; /* wanted power state */
-       uint pwr_mode;
-       uint smart_ps;
-       uint alives;
-       uint ImrContent;        /* used to store original imr. */
-       uint bSleep; /* sleep -> active is different from active -> sleep. */
-
-       struct work_struct SetPSModeWorkItem;
-       struct work_struct rpwm_workitem;
-       struct timer_list rpwm_check_timer;
-       u8      rpwm_retry;
-       uint    bSetPSModeWorkItemInProgress;
-
-       spinlock_t pnp_pwr_mgnt_lock;
-       s32     pnp_current_pwr_state;
-       u8      pnp_bstop_trx;
-       u8      pnp_wwirp_pending;
-};
-
-void r8712_init_pwrctrl_priv(struct _adapter *adapter);
-int r8712_register_cmd_alive(struct _adapter *padapter);
-void r8712_unregister_cmd_alive(struct _adapter *padapter);
-void r8712_cpwm_int_hdl(struct _adapter *padapter,
-                       struct reportpwrstate_parm *preportpwrstate);
-void r8712_set_ps_mode(struct _adapter *padapter, uint ps_mode,
-                       uint smart_ps);
-void r8712_set_rpwm(struct _adapter *padapter, u8 val8);
-void r8712_flush_rwctrl_works(struct _adapter *padapter);
-
-#endif  /* __RTL871X_PWRCTRL_H_ */
diff --git a/drivers/staging/rtl8712/rtl871x_recv.c b/drivers/staging/rtl8712/rtl871x_recv.c
deleted file mode 100644 (file)
index de9a568..0000000
+++ /dev/null
@@ -1,669 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl871x_recv.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _RTL871X_RECV_C_
-
-#include <linux/ip.h>
-#include <linux/slab.h>
-#include <linux/if_ether.h>
-#include <linux/kmemleak.h>
-#include <linux/etherdevice.h>
-#include <linux/ieee80211.h>
-#include <net/cfg80211.h>
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "recv_osdep.h"
-#include "mlme_osdep.h"
-#include "ethernet.h"
-#include "usb_ops.h"
-#include "wifi.h"
-
-static const u8 SNAP_ETH_TYPE_IPX[2] = {0x81, 0x37};
-
-/* Datagram Delivery Protocol */
-static const u8 SNAP_ETH_TYPE_APPLETALK_AARP[2] = {0x80, 0xf3};
-
-void _r8712_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_queue(&psta_recvpriv->defrag_q);
-}
-
-void _r8712_init_recv_priv(struct recv_priv *precvpriv,
-                          struct _adapter *padapter)
-{
-       sint i;
-       union recv_frame *precvframe;
-
-       memset((unsigned char *)precvpriv, 0, sizeof(struct  recv_priv));
-       spin_lock_init(&precvpriv->lock);
-       _init_queue(&precvpriv->free_recv_queue);
-       _init_queue(&precvpriv->recv_pending_queue);
-       precvpriv->adapter = padapter;
-       precvpriv->free_recvframe_cnt = NR_RECVFRAME;
-       precvpriv->pallocated_frame_buf = kzalloc(NR_RECVFRAME *
-                               sizeof(union recv_frame) + RXFRAME_ALIGN_SZ,
-                               GFP_ATOMIC);
-       if (!precvpriv->pallocated_frame_buf)
-               return;
-       kmemleak_not_leak(precvpriv->pallocated_frame_buf);
-       precvpriv->precv_frame_buf = precvpriv->pallocated_frame_buf +
-                                   RXFRAME_ALIGN_SZ -
-                                   ((addr_t)(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));
-               r8712_os_recv_resource_alloc(padapter, precvframe);
-               precvframe->u.hdr.adapter = padapter;
-               precvframe++;
-       }
-       precvpriv->rx_pending_cnt = 1;
-       r8712_init_recv_priv(precvpriv, padapter);
-}
-
-void _r8712_free_recv_priv(struct recv_priv *precvpriv)
-{
-       kfree(precvpriv->pallocated_frame_buf);
-       r8712_free_recv_priv(precvpriv);
-}
-
-union recv_frame *r8712_alloc_recvframe(struct __queue *pfree_recv_queue)
-{
-       unsigned long irqL;
-       union recv_frame  *precvframe;
-       struct _adapter *padapter;
-       struct recv_priv *precvpriv;
-
-       spin_lock_irqsave(&pfree_recv_queue->lock, irqL);
-       precvframe = list_first_entry_or_null(&pfree_recv_queue->queue,
-                                             union recv_frame, u.hdr.list);
-       if (precvframe) {
-               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--;
-               }
-       }
-       spin_unlock_irqrestore(&pfree_recv_queue->lock, irqL);
-       return precvframe;
-}
-
-/*
- * caller : defrag; recvframe_chk_defrag in recv_thread  (passive)
- * pframequeue: defrag_queue : will be accessed in recv_thread  (passive)
- * using spin_lock to protect
- */
-void r8712_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 = &pframequeue->queue;
-       plist = phead->next;
-       while (!end_of_queue_search(phead, plist)) {
-               precvframe = container_of(plist, union recv_frame, u.list);
-               plist = plist->next;
-               r8712_free_recvframe(precvframe, pfree_recv_queue);
-       }
-       spin_unlock(&pframequeue->lock);
-}
-
-sint r8712_recvframe_chkmic(struct _adapter *adapter,
-                           union recv_frame *precvframe)
-{
-       sint i, res = _SUCCESS;
-       u32     datalen;
-       u8 miccode[8];
-       u8 bmic_err = false;
-       u8 *pframe, *payload, *pframemic;
-       u8   *mickey, idx, *iv;
-       struct  sta_info *stainfo;
-       struct  rx_pkt_attrib *prxattrib = &precvframe->u.hdr.attrib;
-       struct  security_priv *psecuritypriv = &adapter->securitypriv;
-
-       stainfo = r8712_get_stainfo(&adapter->stapriv, &prxattrib->ta[0]);
-       if (prxattrib->encrypt == _TKIP_) {
-               /* calculate mic code */
-               if (stainfo) {
-                       if (is_multicast_ether_addr(prxattrib->ra)) {
-                               iv = precvframe->u.hdr.rx_data +
-                                    prxattrib->hdrlen;
-                               idx = iv[3];
-                               mickey = &psecuritypriv->XGrprxmickey[(((idx >>
-                                        6) & 0x3)) - 1].skey[0];
-                               if (!psecuritypriv->binstallGrpkey)
-                                       return _FAIL;
-                       } else {
-                               mickey = &stainfo->tkiprxmickey.skey[0];
-                       }
-                       /*icv_len included the mic code*/
-                       datalen = precvframe->u.hdr.len - prxattrib->hdrlen -
-                                 prxattrib->iv_len - prxattrib->icv_len - 8;
-                       pframe = precvframe->u.hdr.rx_data;
-                       payload = pframe + prxattrib->hdrlen +
-                                 prxattrib->iv_len;
-                       seccalctkipmic(mickey, pframe, payload, datalen,
-                                      &miccode[0],
-                                      (unsigned char)prxattrib->priority);
-                       pframemic = payload + datalen;
-                       bmic_err = false;
-                       for (i = 0; i < 8; i++) {
-                               if (miccode[i] != *(pframemic + i))
-                                       bmic_err = true;
-                       }
-                       if (bmic_err) {
-                               if (prxattrib->bdecrypted)
-                                       r8712_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);
-               }
-       }
-       return res;
-}
-
-/* decrypt and set the ivlen,icvlen of the recv_frame */
-union recv_frame *r8712_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;
-
-       if ((prxattrib->encrypt > 0) && ((prxattrib->bdecrypted == 0) ||
-                                        psecuritypriv->sw_decrypt)) {
-               psecuritypriv->hw_decrypted = false;
-               switch (prxattrib->encrypt) {
-               case _WEP40_:
-               case _WEP104_:
-                       r8712_wep_decrypt(padapter, (u8 *)precv_frame);
-                       break;
-               case _TKIP_:
-                       r8712_tkip_decrypt(padapter, (u8 *)precv_frame);
-                       break;
-               case _AES_:
-                       r8712_aes_decrypt(padapter, (u8 *)precv_frame);
-                       break;
-               default:
-                               break;
-               }
-       } else if (prxattrib->bdecrypted == 1) {
-               psecuritypriv->hw_decrypted = true;
-       }
-       return return_packet;
-}
-
-/*###set the security information in the recv_frame */
-union recv_frame *r8712_portctrl(struct _adapter *adapter,
-                                union recv_frame *precv_frame)
-{
-       u8 *psta_addr, *ptr;
-       uint auth_alg;
-       struct recv_frame_hdr *pfhdr;
-       struct sta_info *psta;
-       struct  sta_priv *pstapriv;
-       union recv_frame *prtnframe;
-       u16 ether_type;
-
-       pstapriv = &adapter->stapriv;
-       ptr = precv_frame->u.hdr.rx_data;
-       pfhdr = &precv_frame->u.hdr;
-       psta_addr = pfhdr->attrib.ta;
-       psta = r8712_get_stainfo(pstapriv, psta_addr);
-       auth_alg = adapter->securitypriv.AuthAlgrthm;
-       if (auth_alg == 2) {
-               /* get ether_type */
-               ptr = ptr + pfhdr->attrib.hdrlen + LLC_HEADER_SIZE;
-               ether_type = get_unaligned_be16(ptr);
-
-               if (psta && psta->ieee8021x_blocked) {
-                       /* blocked
-                        * only accept EAPOL frame
-                        */
-                       if (ether_type == 0x888e) {
-                               prtnframe = precv_frame;
-                       } else {
-                               /*free this frame*/
-                               r8712_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 == 0x888e) {
-                               /* check Rekey */
-                               prtnframe = precv_frame;
-                       }
-               }
-       } else {
-               prtnframe = precv_frame;
-       }
-       return prtnframe;
-}
-
-static sint recv_decache(union recv_frame *precv_frame, u8 bretry,
-                        struct stainfo_rxcache *prxcache)
-{
-       sint 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 (seq_ctrl == prxcache->tid_rxseq[tid])
-               return _FAIL;
-       prxcache->tid_rxseq[tid] = seq_ctrl;
-       return _SUCCESS;
-}
-
-static sint sta2sta_data_frame(struct _adapter *adapter,
-                              union recv_frame *precv_frame,
-                              struct sta_info **psta)
-{
-       u8 *ptr = precv_frame->u.hdr.rx_data;
-       sint 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;
-       bool 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))
-                       return _FAIL;
-               if ((memcmp(myhwaddr, pattrib->dst, ETH_ALEN)) && (!bmcast))
-                       return _FAIL;
-               if (is_zero_ether_addr(pattrib->bssid) ||
-                   is_zero_ether_addr(mybssid) ||
-                   (memcmp(pattrib->bssid, mybssid, ETH_ALEN)))
-                       return _FAIL;
-               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))
-                       return _FAIL;
-               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))
-                               return _FAIL;
-               } 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))
-                               return _FAIL;
-                       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 = r8712_get_bcmc_stainfo(adapter);
-       else
-               *psta = r8712_get_stainfo(pstapriv, sta_addr); /* get ap_info */
-       if (!*psta) {
-               if (check_fwstate(pmlmepriv, WIFI_MP_STATE))
-                       adapter->mppriv.rx_pktloss++;
-               return _FAIL;
-       }
-       return ret;
-}
-
-static sint 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;
-       struct  sta_priv *pstapriv = &adapter->stapriv;
-       struct  mlme_priv *pmlmepriv = &adapter->mlmepriv;
-       u8 *mybssid  = get_bssid(pmlmepriv);
-       u8 *myhwaddr = myid(&adapter->eeprompriv);
-       bool bmcast = is_multicast_ether_addr(pattrib->dst);
-
-       if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) &&
-           check_fwstate(pmlmepriv, _FW_LINKED)) {
-               /* if NULL-frame, drop packet */
-               if ((GetFrameSubType(ptr)) == (IEEE80211_FTYPE_DATA | IEEE80211_STYPE_NULLFUNC))
-                       return _FAIL;
-               /* drop QoS-SubType Data, including QoS NULL,
-                * excluding QoS-Data
-                */
-               if ((GetFrameSubType(ptr) & WIFI_QOS_DATA_TYPE) ==
-                    WIFI_QOS_DATA_TYPE) {
-                       if (GetFrameSubType(ptr) & (BIT(4) | BIT(5) | BIT(6)))
-                               return _FAIL;
-               }
-
-               /* filter packets that SA is myself or multicast or broadcast */
-               if (!memcmp(myhwaddr, pattrib->src, ETH_ALEN))
-                       return _FAIL;
-
-               /* da should be for me */
-               if ((memcmp(myhwaddr, pattrib->dst, ETH_ALEN)) && (!bmcast))
-                       return _FAIL;
-               /* check BSSID */
-               if (is_zero_ether_addr(pattrib->bssid) ||
-                   is_zero_ether_addr(mybssid) ||
-                    (memcmp(pattrib->bssid, mybssid, ETH_ALEN)))
-                       return _FAIL;
-               if (bmcast)
-                       *psta = r8712_get_bcmc_stainfo(adapter);
-               else
-                       *psta = r8712_get_stainfo(pstapriv, pattrib->bssid);
-               if (!*psta)
-                       return _FAIL;
-       } 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 = r8712_get_stainfo(pstapriv, pattrib->bssid);
-               if (!*psta)
-                       return _FAIL;
-       } else {
-               return _FAIL;
-       }
-       return _SUCCESS;
-}
-
-static sint sta2ap_data_frame(struct _adapter *adapter,
-                             union recv_frame *precv_frame,
-                             struct sta_info **psta)
-{
-       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);
-
-       if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-               /* For AP mode, if DA is non-MCAST, then it must be BSSID,
-                * and bssid == BSSID
-                * For AP mode, RA=BSSID, TX=STA(SRC_ADDR), A3=DST_ADDR
-                */
-               if (memcmp(pattrib->bssid, mybssid, ETH_ALEN))
-                       return _FAIL;
-               *psta = r8712_get_stainfo(pstapriv, pattrib->src);
-               if (!*psta)
-                       return _FAIL;
-       }
-       return _SUCCESS;
-}
-
-static sint validate_recv_ctrl_frame(struct _adapter *adapter,
-                                    union recv_frame *precv_frame)
-{
-       return _FAIL;
-}
-
-static sint validate_recv_mgnt_frame(struct _adapter *adapter,
-                                    union recv_frame *precv_frame)
-{
-       return _FAIL;
-}
-
-static sint validate_recv_data_frame(struct _adapter *adapter,
-                                    union recv_frame *precv_frame)
-{
-       int res;
-       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;
-
-       bretry = GetRetry(ptr);
-       pda = ieee80211_get_DA((struct ieee80211_hdr *)ptr);
-       psa = ieee80211_get_SA((struct ieee80211_hdr *)ptr);
-       pbssid = get_hdr_bssid(ptr);
-       if (!pbssid)
-               return _FAIL;
-       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);
-               res = sta2sta_data_frame(adapter, precv_frame, &psta);
-               break;
-       case 1:
-               memcpy(pattrib->ra, pda, ETH_ALEN);
-               memcpy(pattrib->ta, pbssid, ETH_ALEN);
-               res = ap2sta_data_frame(adapter, precv_frame, &psta);
-               break;
-       case 2:
-               memcpy(pattrib->ra, pbssid, ETH_ALEN);
-               memcpy(pattrib->ta, psa, ETH_ALEN);
-               res = sta2ap_data_frame(adapter, precv_frame, &psta);
-               break;
-       case 3:
-               memcpy(pattrib->ra, GetAddr1Ptr(ptr), ETH_ALEN);
-               memcpy(pattrib->ta, GetAddr2Ptr(ptr), ETH_ALEN);
-               return _FAIL;
-       default:
-               return _FAIL;
-       }
-       if (res == _FAIL)
-               return _FAIL;
-       if (!psta)
-               return _FAIL;
-       precv_frame->u.hdr.psta = psta;
-       pattrib->amsdu = 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;
-       } 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)
-               return _FAIL;
-
-       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;
-       }
-       return _SUCCESS;
-}
-
-sint r8712_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;
-       sint 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)
-               return _FAIL;
-       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 IEEE80211_FTYPE_MGMT:
-               retval = validate_recv_mgnt_frame(adapter, precv_frame);
-               break;
-       case IEEE80211_FTYPE_CTL:
-               retval = validate_recv_ctrl_frame(adapter, precv_frame);
-               break;
-       case IEEE80211_FTYPE_DATA:
-               pattrib->qos = (subtype & BIT(7)) ? 1 : 0;
-               retval = validate_recv_data_frame(adapter, precv_frame);
-               break;
-       default:
-               return _FAIL;
-       }
-       return retval;
-}
-
-int r8712_wlanhdr_to_ethhdr(union recv_frame *precvframe)
-{
-       /*remove the wlanhdr and add the eth_hdr*/
-       sint    rmv_len;
-       u16     len;
-       u8      bsnaphdr;
-       u8      *psnap_type;
-       struct ieee80211_snap_hdr *psnap;
-       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 */
-       if ((!memcmp(psnap, (void *)rfc1042_header, SNAP_SIZE) &&
-            (memcmp(psnap_type, (void *)SNAP_ETH_TYPE_IPX, 2)) &&
-           (memcmp(psnap_type, (void *)SNAP_ETH_TYPE_APPLETALK_AARP, 2))) ||
-            !memcmp(psnap, (void *)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;
-       if (check_fwstate(pmlmepriv, WIFI_MP_STATE)) {
-               ptr += rmv_len;
-               *ptr = 0x87;
-               *(ptr + 1) = 0x12;
-               /* append rx status for mp test packets */
-               ptr = recvframe_pull(precvframe, (rmv_len -
-                     sizeof(struct ethhdr) + 2) - 24);
-               if (!ptr)
-                       return -ENOMEM;
-               memcpy(ptr, get_rxmem(precvframe), 24);
-               ptr += 24;
-       } else {
-               ptr = recvframe_pull(precvframe, (rmv_len -
-                     sizeof(struct ethhdr) + (bsnaphdr ? 2 : 0)));
-               if (!ptr)
-                       return -ENOMEM;
-       }
-
-       memcpy(ptr, pattrib->dst, ETH_ALEN);
-       memcpy(ptr + ETH_ALEN, pattrib->src, ETH_ALEN);
-       if (!bsnaphdr) {
-               __be16 be_tmp = htons(len);
-
-               memcpy(ptr + 12, &be_tmp, 2);
-       }
-       return 0;
-}
-
-void r8712_recv_entry(union recv_frame *precvframe)
-{
-       struct _adapter *padapter;
-       struct recv_priv *precvpriv;
-
-       s32 ret = _SUCCESS;
-
-       padapter = precvframe->u.hdr.adapter;
-       precvpriv = &(padapter->recvpriv);
-
-       padapter->ledpriv.LedControlHandler(padapter, LED_CTL_RX);
-
-       ret = recv_func(padapter, precvframe);
-       if (ret == _FAIL)
-               goto _recv_entry_drop;
-       precvpriv->rx_pkts++;
-       precvpriv->rx_bytes += (uint)(precvframe->u.hdr.rx_tail -
-                               precvframe->u.hdr.rx_data);
-       return;
-_recv_entry_drop:
-       precvpriv->rx_drop++;
-       padapter->mppriv.rx_pktloss = precvpriv->rx_drop;
-}
diff --git a/drivers/staging/rtl8712/rtl871x_recv.h b/drivers/staging/rtl8712/rtl871x_recv.h
deleted file mode 100644 (file)
index 0760bcc..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef _RTL871X_RECV_H_
-#define _RTL871X_RECV_H_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-
-#define NR_RECVFRAME 256
-
-#define RXFRAME_ALIGN  8
-#define RXFRAME_ALIGN_SZ       (1 << RXFRAME_ALIGN)
-
-#define MAX_SUBFRAME_COUNT     64
-
-/* for Rx reordering buffer control */
-struct recv_reorder_ctrl {
-       struct _adapter *padapter;
-       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];
-};
-
-#define                PHY_RSSI_SLID_WIN_MAX                   100
-#define                PHY_LINKQUALITY_SLID_WIN_MAX            20
-
-struct smooth_rssi_data {
-       u32     elements[100];  /* array to store values */
-       u32     index;          /* index to current array to store */
-       u32     total_num;      /* num of valid elements */
-       u32     total_val;      /* sum of valid elements */
-};
-
-struct rx_pkt_attrib {
-       u8      amsdu;
-       u8      order;
-       u8      qos;
-       u8      to_fr_ds;
-       u8      frag_num;
-       u16     seq_num;
-       u8   pw_save;
-       u8    mfrag;
-       u8    mdata;
-       u8      privacy; /* in frame_ctrl field */
-       u8      bdecrypted;
-       int     hdrlen;  /* the WLAN Header Len */
-       int     encrypt; /* 0 no encrypt. != 0 encrypt algorithm */
-       int     iv_len;
-       int     icv_len;
-       int     priority;
-       int     ack_policy;
-       u8      crc_err;
-       u8      dst[ETH_ALEN];
-       u8      src[ETH_ALEN];
-       u8      ta[ETH_ALEN];
-       u8      ra[ETH_ALEN];
-       u8      bssid[ETH_ALEN];
-       u8      tcpchk_valid; /* 0: invalid, 1: valid */
-       u8      ip_chkrpt; /* 0: incorrect, 1: correct */
-       u8      tcp_chkrpt; /* 0: incorrect, 1: correct */
-       u8      signal_qual;
-       s8      rx_mimo_signal_qual[2];
-       u8      mcs_rate;
-       u8      htc;
-       u8      signal_strength;
-};
-
-/*
- * accesser of recv_priv: 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;
-       u8 *pallocated_frame_buf;
-       u8 *precv_frame_buf;
-       uint free_recvframe_cnt;
-       struct _adapter *adapter;
-       uint    rx_bytes;
-       uint    rx_pkts;
-       uint    rx_drop;
-       uint  rx_icv_err;
-       uint  rx_largepacket_crcerr;
-       uint  rx_smallpacket_crcerr;
-       uint  rx_middlepacket_crcerr;
-       u8  rx_pending_cnt;
-       uint    ff_hwaddr;
-       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;
-       /* For the phy information */
-       s8 rssi;
-       u8 signal;
-       u8 noise;
-       u8 fw_rssi;
-       struct smooth_rssi_data signal_qual_data;
-       struct smooth_rssi_data signal_strength_data;
-};
-
-struct sta_recv_priv {
-       spinlock_t lock;
-       sint    option;
-       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;
-};
-
-#include "rtl8712_recv.h"
-
-/* get a free recv_frame from pfree_recv_queue */
-union recv_frame *r8712_alloc_recvframe(struct  __queue *pfree_recv_queue);
-void r8712_free_recvframe(union recv_frame *precvframe,
-                         struct  __queue *pfree_recv_queue);
-void r8712_free_recvframe_queue(struct  __queue *pframequeue,
-                                struct  __queue *pfree_recv_queue);
-int r8712_wlanhdr_to_ethhdr(union recv_frame *precvframe);
-int recv_func(struct _adapter *padapter, void *pcontext);
-
-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, sint sz)
-{
-       /* 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, sint sz)
-{
-       /* 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.
-        */
-       if (!precvframe)
-               return NULL;
-       precvframe->u.hdr.rx_tail += sz;
-       if (precvframe->u.hdr.rx_tail > precvframe->u.hdr.rx_end) {
-               precvframe->u.hdr.rx_tail -= sz;
-               return NULL;
-       }
-       precvframe->u.hdr.len += sz;
-       return precvframe->u.hdr.rx_tail;
-}
-
-static inline u8 *recvframe_pull_tail(union recv_frame *precvframe, sint 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;
-}
-
-struct sta_info;
-
-void   _r8712_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv);
-sint r8712_recvframe_chkmic(struct _adapter *adapter,
-                           union recv_frame *precvframe);
-union recv_frame *r8712_decryptor(struct _adapter *adapter,
-                                 union recv_frame *precv_frame);
-union recv_frame *r8712_recvframe_chk_defrag(struct _adapter *adapter,
-                                            union recv_frame *precv_frame);
-int r8712_validate_recv_frame(struct _adapter *adapter,
-                             union recv_frame *precv_frame);
-union recv_frame *r8712_portctrl(struct _adapter *adapter,
-                                union recv_frame *precv_frame);
-
-#endif
-
diff --git a/drivers/staging/rtl8712/rtl871x_rf.h b/drivers/staging/rtl8712/rtl871x_rf.h
deleted file mode 100644 (file)
index 7d98921..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef        __RTL871X_RF_H_
-#define __RTL871X_RF_H_
-
-#include "rtl871x_cmd.h"
-#include "rtl871x_mp_phy_regdef.h"
-
-#define OFDM_PHY               1
-#define MIXED_PHY              2
-#define CCK_PHY                3
-#define NumRates       (13)
-#define RTL8711_RF_MAX_SENS 6
-#define RTL8711_RF_DEF_SENS 4
-#define NUM_CHANNELS   15
-
-struct regulatory_class {
-       u32     starting_freq;          /*MHz, */
-       u8      channel_set[NUM_CHANNELS];
-       u8      channel_cck_power[NUM_CHANNELS]; /*dbm*/
-       u8      channel_ofdm_power[NUM_CHANNELS];/*dbm*/
-       u8      txpower_limit;          /*dbm*/
-       u8      channel_spacing;        /*MHz*/
-       u8      modem;
-};
-
-enum   _REG_PREAMBLE_MODE {
-       PREAMBLE_LONG   = 1,
-       PREAMBLE_AUTO   = 2,
-       PREAMBLE_SHORT  = 3,
-};
-
-enum {
-       RTL8712_RFC_1T = 0x10,
-       RTL8712_RFC_2T = 0x20,
-       RTL8712_RFC_1R = 0x01,
-       RTL8712_RFC_2R = 0x02,
-       RTL8712_RFC_1T1R = 0x11,
-       RTL8712_RFC_1T2R = 0x12,
-       RTL8712_RFC_TURBO = 0x92,
-       RTL8712_RFC_2T2R = 0x22
-};
-
-#endif /*__RTL871X_RF_H_*/
diff --git a/drivers/staging/rtl8712/rtl871x_security.c b/drivers/staging/rtl8712/rtl871x_security.c
deleted file mode 100644 (file)
index e46a5db..0000000
+++ /dev/null
@@ -1,1386 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl871x_security.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define  _RTL871X_SECURITY_C_
-
-#include <linux/compiler.h>
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/slab.h>
-#include <linux/module.h>
-#include <linux/kref.h>
-#include <linux/netdevice.h>
-#include <linux/skbuff.h>
-#include <linux/circ_buf.h>
-#include <linux/uaccess.h>
-#include <asm/byteorder.h>
-#include <linux/atomic.h>
-#include <linux/crc32poly.h>
-#include <linux/semaphore.h>
-#include <linux/ieee80211.h>
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "osdep_intf.h"
-
-/* =====WEP related===== */
-
-struct arc4context {
-       u32 x;
-       u32 y;
-       u8 state[256];
-};
-
-static void arcfour_init(struct arc4context *parc4ctx, u8 *key, u32 key_len)
-{
-       u32     t, u;
-       u32     keyindex;
-       u32     stateindex;
-       u8 *state;
-       u32     counter;
-
-       state = parc4ctx->state;
-       parc4ctx->x = 0;
-       parc4ctx->y = 0;
-       for (counter = 0; counter < 256; counter++)
-               state[counter] = (u8)counter;
-       keyindex = 0;
-       stateindex = 0;
-       for (counter = 0; counter < 256; counter++) {
-               t = state[counter];
-               stateindex = (stateindex + key[keyindex] + t) & 0xff;
-               u = state[stateindex];
-               state[stateindex] = (u8)t;
-               state[counter] = (u8)u;
-               if (++keyindex >= key_len)
-                       keyindex = 0;
-       }
-}
-
-static u32 arcfour_byte(struct arc4context *parc4ctx)
-{
-       u32 x;
-       u32 y;
-       u32 sx, sy;
-       u8 *state;
-
-       state = parc4ctx->state;
-       x = (parc4ctx->x + 1) & 0xff;
-       sx = state[x];
-       y = (sx + parc4ctx->y) & 0xff;
-       sy = state[y];
-       parc4ctx->x = x;
-       parc4ctx->y = y;
-       state[y] = (u8)sx;
-       state[x] = (u8)sy;
-       return state[(sx + sy) & 0xff];
-}
-
-static void arcfour_encrypt(struct arc4context *parc4ctx,
-                    u8 *dest, u8 *src, u32 len)
-{
-       u32 i;
-
-       for (i = 0; i < len; i++)
-               dest[i] = src[i] ^ (unsigned char)arcfour_byte(parc4ctx);
-}
-
-static sint bcrc32initialized;
-static u32 crc32_table[256];
-
-static u8 crc32_reverseBit(u8 data)
-{
-       return ((u8)(data << 7) & 0x80) | ((data << 5) & 0x40) | ((data << 3)
-                & 0x20) | ((data << 1) & 0x10) | ((data >> 1) & 0x08) |
-                ((data >> 3) & 0x04) | ((data >> 5) & 0x02) | ((data >> 7) &
-                0x01);
-}
-
-static void crc32_init(void)
-{
-       sint i, j;
-       u32 c;
-       u8 *p = (u8 *)&c, *p1;
-       u8 k;
-
-       if (bcrc32initialized == 1)
-               return;
-
-       for (i = 0; i < 256; ++i) {
-               k = crc32_reverseBit((u8)i);
-               for (c = ((u32)k) << 24, j = 8; j > 0; --j)
-                       c = c & 0x80000000 ? (c << 1) ^ CRC32_POLY_BE : (c << 1);
-               p1 = (u8 *)&crc32_table[i];
-               p1[0] = crc32_reverseBit(p[3]);
-               p1[1] = crc32_reverseBit(p[2]);
-               p1[2] = crc32_reverseBit(p[1]);
-               p1[3] = crc32_reverseBit(p[0]);
-       }
-       bcrc32initialized = 1;
-}
-
-static u32 getcrc32(u8 *buf, u32 len)
-{
-       u8 *p;
-       u32  crc;
-
-       if (!bcrc32initialized)
-               crc32_init();
-       crc = 0xffffffff; /* preload shift register, per CRC-32 spec */
-       for (p = buf; len > 0; ++p, --len)
-               crc = crc32_table[(crc ^ *p) & 0xff] ^ (crc >> 8);
-       return ~crc;    /* transmit complement, per CRC-32 spec */
-}
-
-/*
- * Need to consider the fragment situation
- */
-void r8712_wep_encrypt(struct _adapter *padapter, u8 *pxmitframe)
-{      /* exclude ICV */
-       unsigned char   crc[4];
-       struct arc4context  mycontext;
-       u32 curfragnum, length, keylength, pki;
-       u8 *pframe, *payload, *iv;    /*,*wepkey*/
-       u8 wepkey[16];
-       struct  pkt_attrib  *pattrib = &((struct xmit_frame *)
-                                      pxmitframe)->attrib;
-       struct  security_priv *psecuritypriv = &padapter->securitypriv;
-       struct  xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-       if (((struct xmit_frame *)pxmitframe)->buf_addr == NULL)
-               return;
-       pframe = ((struct xmit_frame *)pxmitframe)->buf_addr + TXDESC_OFFSET;
-       /*start to encrypt each fragment*/
-       if ((pattrib->encrypt == _WEP40_) || (pattrib->encrypt == _WEP104_)) {
-               pki = psecuritypriv->PrivacyKeyIndex;
-               keylength = psecuritypriv->DefKeylen[pki];
-               for (curfragnum = 0; curfragnum < pattrib->nr_frags;
-                    curfragnum++) {
-                       iv = pframe + pattrib->hdrlen;
-                       memcpy(&wepkey[0], iv, 3);
-                       memcpy(&wepkey[3], &psecuritypriv->DefKey[
-                               psecuritypriv->PrivacyKeyIndex].skey[0],
-                               keylength);
-                       payload = pframe + pattrib->iv_len + pattrib->hdrlen;
-                       if ((curfragnum + 1) == pattrib->nr_frags) {
-                               length = pattrib->last_txcmdsz -
-                                       pattrib->hdrlen -
-                                       pattrib->iv_len -
-                                       pattrib->icv_len;
-                               *((__le32 *)crc) = cpu_to_le32(getcrc32(
-                                               payload, length));
-                               arcfour_init(&mycontext, wepkey, 3 + keylength);
-                               arcfour_encrypt(&mycontext, payload, payload,
-                                               length);
-                               arcfour_encrypt(&mycontext, payload + length,
-                                               crc, 4);
-                       } else {
-                               length = pxmitpriv->frag_len -
-                                        pattrib->hdrlen - pattrib->iv_len -
-                                        pattrib->icv_len;
-                               *((__le32 *)crc) = cpu_to_le32(getcrc32(
-                                               payload, length));
-                               arcfour_init(&mycontext, wepkey, 3 + keylength);
-                               arcfour_encrypt(&mycontext, payload, payload,
-                                               length);
-                               arcfour_encrypt(&mycontext, payload + length,
-                                               crc, 4);
-                               pframe += pxmitpriv->frag_len;
-                               pframe = (u8 *)RND4((addr_t)(pframe));
-                       }
-               }
-       }
-}
-
-void r8712_wep_decrypt(struct _adapter  *padapter, u8 *precvframe)
-{
-       /* exclude ICV */
-       u8 crc[4];
-       struct arc4context  mycontext;
-       u32 length, 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;
-
-       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);
-               keylength = psecuritypriv->DefKeylen[keyindex];
-               memcpy(&wepkey[0], iv, 3);
-               memcpy(&wepkey[3], &psecuritypriv->DefKey[
-                       psecuritypriv->PrivacyKeyIndex].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 */
-               arcfour_init(&mycontext, wepkey, 3 + keylength);
-               arcfour_encrypt(&mycontext, payload, payload,  length);
-               /* calculate icv and compare the icv */
-               *((__le32 *)crc) = cpu_to_le32(getcrc32(payload, length - 4));
-       }
-}
-
-/* 3 =====TKIP related===== */
-
-static u32 secmicgetuint32(u8 *p)
-/* Convert from Byte[] to Us4Byte32 in a portable way */
-{
-       s32 i;
-       u32 res = 0;
-
-       for (i = 0; i < 4; i++)
-               res |= ((u32)(*p++)) << (8 * i);
-       return res;
-}
-
-static void secmicputuint32(u8 *p, u32 val)
-/* Convert from Us4Byte32 to Byte[] in a portable way */
-{
-       long i;
-
-       for (i = 0; i < 4; i++) {
-               *p++ = (u8)(val & 0xff);
-               val >>= 8;
-       }
-}
-
-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 r8712_secmicsetkey(struct mic_data *pmicdata, u8 *key)
-{
-       /* Set the key */
-       pmicdata->K0 = secmicgetuint32(key);
-       pmicdata->K1 = secmicgetuint32(key + 4);
-       /* and reset the message */
-       secmicclear(pmicdata);
-}
-
-static void secmicappendbyte(struct mic_data *pmicdata, u8 b)
-{
-       /* Append the byte to our word-sized buffer */
-       pmicdata->M |= ((u32)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 r8712_secmicappend(struct mic_data *pmicdata, u8 *src, u32 nbytes)
-{
-       /* This is simple */
-       while (nbytes > 0) {
-               secmicappendbyte(pmicdata, *src++);
-               nbytes--;
-       }
-}
-
-void r8712_secgetmic(struct mic_data *pmicdata, u8 *dst)
-{
-       /* Append the minimum padding */
-       secmicappendbyte(pmicdata, 0x5a);
-       secmicappendbyte(pmicdata, 0);
-       secmicappendbyte(pmicdata, 0);
-       secmicappendbyte(pmicdata, 0);
-       secmicappendbyte(pmicdata, 0);
-       /* and then zeroes until the length is a multiple of 4 */
-       while (pmicdata->nBytesInM != 0)
-               secmicappendbyte(pmicdata, 0);
-       /* The appendByte function has already computed the result. */
-       secmicputuint32(dst, pmicdata->L);
-       secmicputuint32(dst + 4, pmicdata->R);
-       /* Reset to the empty message. */
-       secmicclear(pmicdata);
-}
-
-void 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};
-
-       r8712_secmicsetkey(&micdata, key);
-       priority[0] = pri;
-       /* Michael MIC pseudo header: DA, SA, 3 x 0, Priority */
-       if (header[1] & 1) {   /* ToDS==1 */
-               r8712_secmicappend(&micdata, &header[16], 6);  /* DA */
-               if (header[1] & 2)  /* From Ds==1 */
-                       r8712_secmicappend(&micdata, &header[24], 6);
-               else
-                       r8712_secmicappend(&micdata, &header[10], 6);
-       } else {        /* ToDS==0 */
-               r8712_secmicappend(&micdata, &header[4], 6);   /* DA */
-               if (header[1] & 2)  /* From Ds==1 */
-                       r8712_secmicappend(&micdata, &header[16], 6);
-               else
-                       r8712_secmicappend(&micdata, &header[10], 6);
-       }
-       r8712_secmicappend(&micdata, &priority[0], 4);
-       r8712_secmicappend(&micdata, data, data_len);
-       r8712_secgetmic(&micdata, mic_code);
-}
-
-/* macros for extraction/creation of unsigned char/unsigned short values  */
-#define RotR1(v16)   ((((v16) >> 1) & 0x7FFF) ^ (((v16) & 1) << 15))
-#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"     */
-#define TA_SIZE           6    /*  48-bit transmitter address       */
-#define TK_SIZE          16    /* 128-bit temporal key              */
-#define P1K_SIZE         10    /*  80-bit Phase1 key                */
-#define RC4_KEY_SIZE     16    /* 128-bit RC4KEY (104 bits unknown) */
-
-/* 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 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)
-{
-       sint  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 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)
-{
-       sint  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] +=  RotR1(PPK[5] ^ TK16(6));
-       PPK[1] +=  RotR1(PPK[0] ^ TK16(7));   /* Use all of TK[] in Phase2   */
-       PPK[2] +=  RotR1(PPK[1]);
-       PPK[3] +=  RotR1(PPK[2]);
-       PPK[4] +=  RotR1(PPK[3]);
-       PPK[5] +=  RotR1(PPK[4]);
-       /* 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 r8712_tkip_encrypt(struct _adapter *padapter, u8 *pxmitframe)
-{      /*  exclude ICV */
-       u16 pnl;
-       u32 pnh;
-       u8 rc4key[16];
-       u8 ttkey[16];
-       u8 crc[4];
-       struct arc4context mycontext;
-       u32 curfragnum, length;
-
-       u8 *pframe, *payload, *iv, *prwskey;
-       union pn48 txpn;
-       struct sta_info *stainfo;
-       struct pkt_attrib *pattrib = &((struct xmit_frame *)pxmitframe)->attrib;
-       struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-       u32 res = _SUCCESS;
-
-       if (((struct xmit_frame *)pxmitframe)->buf_addr == NULL)
-               return _FAIL;
-
-       pframe = ((struct xmit_frame *)pxmitframe)->buf_addr + TXDESC_OFFSET;
-       /* 4 start to encrypt each fragment */
-       if (pattrib->encrypt == _TKIP_) {
-               if (pattrib->psta)
-                       stainfo = pattrib->psta;
-               else
-                       stainfo = r8712_get_stainfo(&padapter->stapriv,
-                                 &pattrib->ra[0]);
-               if (stainfo) {
-                       prwskey = &stainfo->x_UncstKey.skey[0];
-                       for (curfragnum = 0; curfragnum < pattrib->nr_frags;
-                            curfragnum++) {
-                               iv = pframe + pattrib->hdrlen;
-                               payload = pframe + pattrib->iv_len +
-                                         pattrib->hdrlen;
-                               GET_TKIP_PN(iv, txpn);
-                               pnl = (u16)(txpn.val);
-                               pnh = (u32)(txpn.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;
-                                       *((__le32 *)crc) = cpu_to_le32(
-                                               getcrc32(payload, length));
-                                       arcfour_init(&mycontext, rc4key, 16);
-                                       arcfour_encrypt(&mycontext, payload,
-                                                       payload, length);
-                                       arcfour_encrypt(&mycontext, payload +
-                                                       length, crc, 4);
-                               } else {
-                                       length = pxmitpriv->frag_len -
-                                                pattrib->hdrlen -
-                                                pattrib->iv_len -
-                                                pattrib->icv_len;
-                                       *((__le32 *)crc) = cpu_to_le32(getcrc32(
-                                                       payload, length));
-                                       arcfour_init(&mycontext, rc4key, 16);
-                                       arcfour_encrypt(&mycontext, payload,
-                                                        payload, length);
-                                       arcfour_encrypt(&mycontext,
-                                                       payload + length, crc,
-                                                       4);
-                                       pframe += pxmitpriv->frag_len;
-                                       pframe = (u8 *)RND4((addr_t)(pframe));
-                               }
-                       }
-               } else {
-                       res = _FAIL;
-               }
-       }
-       return res;
-}
-
-/* The hlen doesn't include the IV */
-void r8712_tkip_decrypt(struct _adapter *padapter, u8 *precvframe)
-{      /* exclude ICV */
-       u16 pnl;
-       u32 pnh;
-       u8 rc4key[16];
-       u8 ttkey[16];
-       u8 crc[4];
-       struct arc4context mycontext;
-       u32 length;
-       u8 *pframe, *payload, *iv, *prwskey, idx = 0;
-       union pn48 txpn;
-       struct  sta_info *stainfo;
-       struct  rx_pkt_attrib *prxattrib = &((union recv_frame *)
-                                          precvframe)->u.hdr.attrib;
-       struct  security_priv   *psecuritypriv = &padapter->securitypriv;
-
-       pframe = (unsigned char *)((union recv_frame *)
-                                  precvframe)->u.hdr.rx_data;
-       /* 4 start to decrypt recvframe */
-       if (prxattrib->encrypt == _TKIP_) {
-               stainfo = r8712_get_stainfo(&padapter->stapriv,
-                                           &prxattrib->ta[0]);
-               if (stainfo) {
-                       iv = pframe + prxattrib->hdrlen;
-                       payload = pframe + prxattrib->iv_len +
-                                 prxattrib->hdrlen;
-                       length = ((union recv_frame *)precvframe)->
-                                u.hdr.len - prxattrib->hdrlen -
-                                prxattrib->iv_len;
-                       if (is_multicast_ether_addr(prxattrib->ra)) {
-                               idx = iv[3];
-                               prwskey = &psecuritypriv->XGrpKey[
-                                        ((idx >> 6) & 0x3) - 1].skey[0];
-                               if (!psecuritypriv->binstallGrpkey)
-                                       return;
-                       } else {
-                               prwskey = &stainfo->x_UncstKey.skey[0];
-                       }
-                       GET_TKIP_PN(iv, txpn);
-                       pnl = (u16)(txpn.val);
-                       pnh = (u32)(txpn.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 */
-                       arcfour_init(&mycontext, rc4key, 16);
-                       arcfour_encrypt(&mycontext, payload, payload, length);
-                       *((__le32 *)crc) = cpu_to_le32(getcrc32(payload,
-                                       length - 4));
-               }
-       }
-}
-
-/* 3 =====AES related===== */
-
-#define MAX_MSG_SIZE   2048
-/*****************************/
-/******** SBOX Table *********/
-/*****************************/
-
-static const u8 sbox_table[256] = {
-       0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5,
-       0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
-       0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,
-       0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0,
-       0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc,
-       0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
-       0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a,
-       0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75,
-       0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,
-       0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84,
-       0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b,
-       0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
-       0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85,
-       0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8,
-       0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,
-       0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2,
-       0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17,
-       0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,
-       0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88,
-       0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb,
-       0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,
-       0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79,
-       0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9,
-       0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,
-       0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6,
-       0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a,
-       0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,
-       0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e,
-       0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94,
-       0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,
-       0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68,
-       0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16
-};
-
-/****************************************/
-/* aes128k128d()                        */
-/* Performs a 128 bit AES encrypt with  */
-/* 128 bit data.                        */
-/****************************************/
-static void xor_128(u8 *a, u8 *b, u8 *out)
-{
-       sint i;
-
-       for (i = 0; i < 16; i++)
-               out[i] = a[i] ^ b[i];
-}
-
-static void xor_32(u8 *a, u8 *b, u8 *out)
-{
-       sint i;
-
-       for (i = 0; i < 4; i++)
-               out[i] = a[i] ^ b[i];
-}
-
-static u8 sbox(u8 a)
-{
-       return sbox_table[(sint)a];
-}
-
-static void next_key(u8 *key, sint round)
-{
-       u8 rcon;
-       u8 sbox_key[4];
-       static const u8 rcon_table[12] = {
-               0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
-               0x1b, 0x36, 0x36, 0x36
-       };
-
-       sbox_key[0] = sbox(key[13]);
-       sbox_key[1] = sbox(key[14]);
-       sbox_key[2] = sbox(key[15]);
-       sbox_key[3] = sbox(key[12]);
-       rcon = rcon_table[round];
-       xor_32(&key[0], sbox_key, &key[0]);
-       key[0] = key[0] ^ rcon;
-       xor_32(&key[4], &key[0], &key[4]);
-       xor_32(&key[8], &key[4], &key[8]);
-       xor_32(&key[12], &key[8], &key[12]);
-}
-
-static void byte_sub(u8 *in, u8 *out)
-{
-       sint i;
-
-       for (i = 0; i < 16; i++)
-               out[i] = sbox(in[i]);
-}
-
-static void shift_row(u8 *in, u8 *out)
-{
-       out[0] =  in[0];
-       out[1] =  in[5];
-       out[2] =  in[10];
-       out[3] =  in[15];
-       out[4] =  in[4];
-       out[5] =  in[9];
-       out[6] =  in[14];
-       out[7] =  in[3];
-       out[8] =  in[8];
-       out[9] =  in[13];
-       out[10] = in[2];
-       out[11] = in[7];
-       out[12] = in[12];
-       out[13] = in[1];
-       out[14] = in[6];
-       out[15] = in[11];
-}
-
-static void mix_column(u8 *in, u8 *out)
-{
-       sint i;
-       u8 add1b[4];
-       u8 add1bf7[4];
-       u8 rotl[4];
-       u8 swap_halves[4];
-       u8 andf7[4];
-       u8 rotr[4];
-       u8 temp[4];
-       u8 tempb[4];
-
-       for (i = 0; i < 4; i++) {
-               if ((in[i] & 0x80) == 0x80)
-                       add1b[i] = 0x1b;
-               else
-                       add1b[i] = 0x00;
-       }
-       swap_halves[0] = in[2];    /* Swap halves */
-       swap_halves[1] = in[3];
-       swap_halves[2] = in[0];
-       swap_halves[3] = in[1];
-       rotl[0] = in[3];        /* Rotate left 8 bits */
-       rotl[1] = in[0];
-       rotl[2] = in[1];
-       rotl[3] = in[2];
-       andf7[0] = in[0] & 0x7f;
-       andf7[1] = in[1] & 0x7f;
-       andf7[2] = in[2] & 0x7f;
-       andf7[3] = in[3] & 0x7f;
-       for (i = 3; i > 0; i--) {   /* logical shift left 1 bit */
-               andf7[i] = andf7[i] << 1;
-               if ((andf7[i - 1] & 0x80) == 0x80)
-                       andf7[i] = (andf7[i] | 0x01);
-       }
-       andf7[0] = andf7[0] << 1;
-       andf7[0] = andf7[0] & 0xfe;
-       xor_32(add1b, andf7, add1bf7);
-       xor_32(in, add1bf7, rotr);
-       temp[0] = rotr[0];         /* Rotate right 8 bits */
-       rotr[0] = rotr[1];
-       rotr[1] = rotr[2];
-       rotr[2] = rotr[3];
-       rotr[3] = temp[0];
-       xor_32(add1bf7, rotr, temp);
-       xor_32(swap_halves, rotl, tempb);
-       xor_32(temp, tempb, out);
-}
-
-static void aes128k128d(u8 *key, u8 *data, u8 *ciphertext)
-{
-       sint round;
-       sint i;
-       u8 intermediatea[16];
-       u8 intermediateb[16];
-       u8 round_key[16];
-
-       for (i = 0; i < 16; i++)
-               round_key[i] = key[i];
-       for (round = 0; round < 11; round++) {
-               if (round == 0) {
-                       xor_128(round_key, data, ciphertext);
-                       next_key(round_key, round);
-               } else if (round == 10) {
-                       byte_sub(ciphertext, intermediatea);
-                       shift_row(intermediatea, intermediateb);
-                       xor_128(intermediateb, round_key, ciphertext);
-               } else {   /* 1 - 9 */
-                       byte_sub(ciphertext, intermediatea);
-                       shift_row(intermediatea, intermediateb);
-                       mix_column(&intermediateb[0], &intermediatea[0]);
-                       mix_column(&intermediateb[4], &intermediatea[4]);
-                       mix_column(&intermediateb[8], &intermediatea[8]);
-                       mix_column(&intermediateb[12], &intermediatea[12]);
-                       xor_128(intermediatea, round_key, ciphertext);
-                       next_key(round_key, round);
-               }
-       }
-}
-
-/************************************************/
-/* construct_mic_iv()                           */
-/* Builds the MIC IV from header fields and PN  */
-/************************************************/
-static void construct_mic_iv(u8 *mic_iv, sint qc_exists, sint a4_exists,
-                            u8 *mpdu, uint payload_length, u8 *pn_vector)
-{
-       sint 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;
-       for (i = 2; i < 8; i++)
-               mic_iv[i] = mpdu[i + 8];
-       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.                               */
-/************************************************/
-static void construct_mic_header1(u8 *mic_header1, sint header_length, u8 *mpdu)
-{
-       mic_header1[0] = (u8)((header_length - 2) / 256);
-       mic_header1[1] = (u8)((header_length - 2) % 256);
-       mic_header1[2] = mpdu[0] & 0xcf;    /* Mute CF poll & CF ack bits */
-       /* Mute retry, more data and pwr mgt bits */
-       mic_header1[3] = mpdu[1] & 0xc7;
-       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, sint a4_exists,
-                          sint qc_exists)
-{
-       sint 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.                               */
-/************************************************/
-static void construct_ctr_preload(u8 *ctr_preload,
-                                 sint a4_exists, sint qc_exists,
-                                 u8 *mpdu, u8 *pn_vector, sint c)
-{
-       sint i;
-
-       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;
-       if (qc_exists && !a4_exists)
-               ctr_preload[1] = mpdu[24] & 0x0f;
-       for (i = 2; i < 8; i++)
-               ctr_preload[i] = mpdu[i + 8];
-       for (i = 8; i < 14; i++)
-               ctr_preload[i] = pn_vector[13 - i];
-       ctr_preload[14] = (unsigned char)(c / 256); /* Ctr */
-       ctr_preload[15] = (unsigned char)(c % 256);
-}
-
-/************************************/
-/* bitwise_xor()                    */
-/* A 128 bit, bitwise exclusive or  */
-/************************************/
-static void bitwise_xor(u8 *ina, u8 *inb, u8 *out)
-{
-       sint i;
-
-       for (i = 0; i < 16; i++)
-               out[i] = ina[i] ^ inb[i];
-}
-
-static void aes_cipher(u8 *key, uint hdrlen,
-                      u8 *pframe, uint plen)
-{
-       uint qc_exists, a4_exists, i, j, payload_remainder;
-       uint 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];
-       u16 frtype  = GetFrameType(pframe);
-       u16 frsubtype  = GetFrameSubType(pframe);
-
-       frsubtype >>= 4;
-       memset((void *)mic_iv, 0, 16);
-       memset((void *)mic_header1, 0, 16);
-       memset((void *)mic_header2, 0, 16);
-       memset((void *)ctr_preload, 0, 16);
-       memset((void *)chain_buffer, 0, 16);
-       memset((void *)aes_out, 0, 16);
-       memset((void *)padded_buffer, 0, 16);
-
-       if ((hdrlen == WLAN_HDR_A3_LEN) || (hdrlen ==  WLAN_HDR_A3_QOS_LEN))
-               a4_exists = 0;
-       else
-               a4_exists = 1;
-
-       if ((frtype == (IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA_CFACK)) ||
-           (frtype == (IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA_CFPOLL)) ||
-           (frtype == (IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA_CFACKPOLL))) {
-               qc_exists = 1;
-               if (hdrlen !=  WLAN_HDR_A3_QOS_LEN)
-                       hdrlen += 2;
-       } else if ((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, plen, pn_vector);
-       construct_mic_header1(mic_header1, hdrlen, pframe);
-       construct_mic_header2(mic_header2, pframe, 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);
-       bitwise_xor(aes_out, mic_header1, chain_buffer);
-       aes128k128d(key, chain_buffer, aes_out);
-       bitwise_xor(aes_out, mic_header2, chain_buffer);
-       aes128k128d(key, chain_buffer, aes_out);
-       for (i = 0; i < num_blocks; i++) {
-               bitwise_xor(aes_out, &pframe[payload_index], chain_buffer);
-               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++];
-               bitwise_xor(aes_out, padded_buffer, chain_buffer);
-               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, pn_vector, i + 1);
-               aes128k128d(key, ctr_preload, aes_out);
-               bitwise_xor(aes_out, &pframe[payload_index], chain_buffer);
-               for (j = 0; j < 16; j++)
-                       pframe[payload_index++] = chain_buffer[j];
-       }
-       if (payload_remainder > 0) {  /* If short final block, then pad it,*/
-                                     /* encrypt and copy unpadded part back */
-               construct_ctr_preload(ctr_preload, a4_exists, qc_exists,
-                                     pframe, pn_vector, num_blocks + 1);
-               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);
-               bitwise_xor(aes_out, padded_buffer, chain_buffer);
-               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, pn_vector, 0);
-       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);
-       bitwise_xor(aes_out, padded_buffer, chain_buffer);
-       for (j = 0; j < 8; j++)
-               pframe[payload_index++] = chain_buffer[j];
-}
-
-u32 r8712_aes_encrypt(struct _adapter *padapter, u8 *pxmitframe)
-{      /* exclude ICV */
-       /* Intermediate Buffers */
-       sint    curfragnum, length;
-       u8      *pframe, *prwskey;
-       struct  sta_info *stainfo;
-       struct  pkt_attrib  *pattrib = &((struct xmit_frame *)
-                                      pxmitframe)->attrib;
-       struct  xmit_priv *pxmitpriv = &padapter->xmitpriv;
-       u32 res = _SUCCESS;
-
-       if (((struct xmit_frame *)pxmitframe)->buf_addr == NULL)
-               return _FAIL;
-       pframe = ((struct xmit_frame *)pxmitframe)->buf_addr + TXDESC_OFFSET;
-       /* 4 start to encrypt each fragment */
-       if (pattrib->encrypt == _AES_) {
-               if (pattrib->psta)
-                       stainfo = pattrib->psta;
-               else
-                       stainfo = r8712_get_stainfo(&padapter->stapriv,
-                                 &pattrib->ra[0]);
-               if (stainfo) {
-                       prwskey = &stainfo->x_UncstKey.skey[0];
-                       for (curfragnum = 0; curfragnum < pattrib->nr_frags;
-                            curfragnum++) {
-                               if ((curfragnum + 1) == pattrib->nr_frags) {
-                                       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 *)RND4((addr_t)(pframe));
-                               }
-                       }
-               } else {
-                       res = _FAIL;
-               }
-       }
-       return res;
-}
-
-static void 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;
-       uint 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 >>= 4;
-       memset((void *)mic_iv, 0, 16);
-       memset((void *)mic_header1, 0, 16);
-       memset((void *)mic_header2, 0, 16);
-       memset((void *)ctr_preload, 0, 16);
-       memset((void *)chain_buffer, 0, 16);
-       memset((void *)aes_out, 0, 16);
-       memset((void *)padded_buffer, 0, 16);
-       /* start to decrypt the payload */
-       /*(plen including llc, payload and mic) */
-       num_blocks = (plen - 8) / 16;
-       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 == (IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA_CFACK)) ||
-           (frtype == (IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA_CFPOLL)) ||
-           (frtype == (IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA_CFACKPOLL))) {
-               qc_exists = 1;
-               if (hdrlen != WLAN_HDR_A3_QOS_LEN)
-                       hdrlen += 2;
-       } else if ((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);
-               aes128k128d(key, ctr_preload, aes_out);
-               bitwise_xor(aes_out, &pframe[payload_index], chain_buffer);
-               for (j = 0; j < 16; j++)
-                       pframe[payload_index++] = chain_buffer[j];
-       }
-       if (payload_remainder > 0) {  /* If short final block, 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);
-               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);
-               bitwise_xor(aes_out, padded_buffer, chain_buffer);
-               for (j = 0; j < payload_remainder; j++)
-                       pframe[payload_index++] = chain_buffer[j];
-       }
-       /* start to calculate the mic */
-       memcpy((void *)message, pframe, (hdrlen + plen + 8));
-       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);
-       construct_mic_header1(mic_header1, hdrlen, message);
-       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);
-       bitwise_xor(aes_out, mic_header1, chain_buffer);
-       aes128k128d(key, chain_buffer, aes_out);
-       bitwise_xor(aes_out, mic_header2, chain_buffer);
-       aes128k128d(key, chain_buffer, aes_out);
-       for (i = 0; i < num_blocks; i++) {
-               bitwise_xor(aes_out, &message[payload_index], chain_buffer);
-               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++];
-               bitwise_xor(aes_out, padded_buffer, chain_buffer);
-               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);
-               aes128k128d(key, ctr_preload, aes_out);
-               bitwise_xor(aes_out, &message[payload_index], chain_buffer);
-               for (j = 0; j < 16; j++)
-                       message[payload_index++] = chain_buffer[j];
-       }
-       if (payload_remainder > 0) { /* If short final block, pad it,*/
-                                    /* encrypt and copy unpadded part back */
-               construct_ctr_preload(ctr_preload, a4_exists, qc_exists,
-                                     message, pn_vector, num_blocks + 1);
-               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);
-               bitwise_xor(aes_out, padded_buffer, chain_buffer);
-               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);
-       for (j = 0; j < 16; j++)
-               padded_buffer[j] = 0x00;
-       for (j = 0; j < 8; j++)
-               padded_buffer[j] = message[j + hdrlen + plen];
-       aes128k128d(key, ctr_preload, aes_out);
-       bitwise_xor(aes_out, padded_buffer, chain_buffer);
-       for (j = 0; j < 8; j++)
-               message[payload_index++] = chain_buffer[j];
-       /* compare the mic */
-}
-
-void r8712_aes_decrypt(struct _adapter *padapter, u8 *precvframe)
-{      /* exclude ICV */
-       /* Intermediate Buffers */
-       sint            length;
-       u8      *pframe, *prwskey, *iv, idx;
-       struct  sta_info *stainfo;
-       struct  rx_pkt_attrib *prxattrib = &((union recv_frame *)
-                                          precvframe)->u.hdr.attrib;
-       struct  security_priv *psecuritypriv = &padapter->securitypriv;
-
-       pframe = (unsigned char *)((union recv_frame *)precvframe)->
-                u.hdr.rx_data;
-       /* 4 start to encrypt each fragment */
-       if (prxattrib->encrypt == _AES_) {
-               stainfo = r8712_get_stainfo(&padapter->stapriv,
-                                           &prxattrib->ta[0]);
-               if (stainfo) {
-                       if (is_multicast_ether_addr(prxattrib->ra)) {
-                               iv = pframe + prxattrib->hdrlen;
-                               idx = iv[3];
-                               prwskey = &psecuritypriv->XGrpKey[
-                                         ((idx >> 6) & 0x3) - 1].skey[0];
-                               if (!psecuritypriv->binstallGrpkey)
-                                       return;
-
-                       } else {
-                               prwskey = &stainfo->x_UncstKey.skey[0];
-                       }
-                       length = ((union recv_frame *)precvframe)->
-                                u.hdr.len - prxattrib->hdrlen -
-                                prxattrib->iv_len;
-                       aes_decipher(prwskey, prxattrib->hdrlen, pframe,
-                                    length);
-               }
-       }
-}
-
-void r8712_use_tkipkey_handler(struct timer_list *t)
-{
-       struct _adapter *padapter =
-               from_timer(padapter, t, securitypriv.tkip_timer);
-
-       padapter->securitypriv.busetkipkey = true;
-}
diff --git a/drivers/staging/rtl8712/rtl871x_security.h b/drivers/staging/rtl8712/rtl871x_security.h
deleted file mode 100644 (file)
index 8461b7f..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __RTL871X_SECURITY_H_
-#define __RTL871X_SECURITY_H_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-
-#define _NO_PRIVACY_   0x0
-#define _WEP40_                0x1
-#define _TKIP_         0x2
-#define _TKIP_WTMIC_   0x3
-#define _AES_          0x4
-#define _WEP104_       0x5
-
-#define _WPA_IE_ID_    0xdd
-#define _WPA2_IE_ID_   0x30
-
-#ifndef Ndis802_11AuthModeWPA2
-#define Ndis802_11AuthModeWPA2 (Ndis802_11AuthModeWPANone + 1)
-#endif
-
-#ifndef Ndis802_11AuthModeWPA2PSK
-#define Ndis802_11AuthModeWPA2PSK (Ndis802_11AuthModeWPANone + 2)
-#endif
-
-union pn48 {
-       u64 val;
-#if defined(__BIG_ENDIAN)
-       struct {
-               u8 TSC7;
-               u8 TSC6;
-               u8 TSC5;
-               u8 TSC4;
-               u8 TSC3;
-               u8 TSC2;
-               u8 TSC1;
-               u8 TSC0;
-       } _byte_;
-#else
-       struct {
-               u8 TSC0;
-               u8 TSC1;
-               u8 TSC2;
-               u8 TSC3;
-               u8 TSC4;
-               u8 TSC5;
-               u8 TSC6;
-               u8 TSC7;
-       } _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 AuthAlgrthm;                /* 802.11 auth, could be open, shared,
-                                        * 8021x and authswitch
-                                        */
-       u32 PrivacyAlgrthm;             /* This specify the privacy for shared
-                                        * auth. algorithm.
-                                        */
-       u32 PrivacyKeyIndex;            /* this is only valid for legendary
-                                        * wep, 0~3 for key id.
-                                        */
-       union Keytype DefKey[4];        /* this is only valid for def. key */
-       u32 DefKeylen[4];
-       u32 XGrpPrivacy;                /* This specify the privacy algthm.
-                                        * used for Grp key
-                                        */
-       u32 XGrpKeyid;                  /* key id used for Grp Key */
-       union Keytype   XGrpKey[2];     /* 802.1x Group Key, for
-                                        * inx0 and inx1
-                                        */
-       union Keytype   XGrptxmickey[2];
-       union Keytype   XGrprxmickey[2];
-       union pn48 Grptxpn;             /* PN48 used for Grp Key xmit. */
-       union pn48 Grprxpn;             /* PN48 used for Grp Key recv. */
-       u8 wps_hw_pbc_pressed;/*for hw pbc pressed*/
-       u8 wps_phase;/*for wps*/
-       u8 wps_ie[MAX_WPA_IE_LEN << 2];
-       int wps_ie_len;
-       u8      binstallGrpkey;
-       u8      busetkipkey;
-       struct timer_list 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.
-                                */
-       u32 ndisauthtype;       /* keeps the auth_type & enc_status from upper
-                                * layer ioctl(wpa_supplicant or wzc)
-                                */
-       u32 ndisencryptstatus;
-       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 */
-       u32 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];
-       u8                              PMKIDIndex;
-};
-
-#define GET_ENCRY_ALGO(psecuritypriv, psta, encry_algo, bmcst) \
-do { \
-       switch (psecuritypriv->AuthAlgrthm) { \
-       case 0: \
-       case 1: \
-       case 3: \
-               encry_algo = (u8)psecuritypriv->PrivacyAlgrthm; \
-               break; \
-       case 2: \
-               if (bmcst) \
-                       encry_algo = (u8)psecuritypriv->XGrpPrivacy; \
-               else \
-                       encry_algo = (u8)psta->XPrivacy; \
-               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; \
-       default: \
-               iv_len = 0; \
-               icv_len = 0; \
-               break; \
-       } \
-} while (0)
-#define GET_TKIP_PN(iv, txpn) \
-do {\
-       txpn._byte_.TSC0 = iv[2];\
-       txpn._byte_.TSC1 = iv[0];\
-       txpn._byte_.TSC2 = iv[4];\
-       txpn._byte_.TSC3 = iv[5];\
-       txpn._byte_.TSC4 = iv[6];\
-       txpn._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 */
-};
-
-void seccalctkipmic(
-       u8  *key,
-       u8  *header,
-       u8  *data,
-       u32  data_len,
-       u8  *Miccode,
-       u8   priority);
-
-void r8712_secmicsetkey(struct mic_data *pmicdata, u8 *key);
-void r8712_secmicappend(struct mic_data *pmicdata, u8 *src, u32 nBytes);
-void r8712_secgetmic(struct mic_data *pmicdata, u8 *dst);
-u32 r8712_aes_encrypt(struct _adapter *padapter, u8 *pxmitframe);
-u32 r8712_tkip_encrypt(struct _adapter *padapter, u8 *pxmitframe);
-void r8712_wep_encrypt(struct _adapter *padapter, u8  *pxmitframe);
-void r8712_aes_decrypt(struct _adapter *padapter, u8  *precvframe);
-void r8712_tkip_decrypt(struct _adapter *padapter, u8  *precvframe);
-void r8712_wep_decrypt(struct _adapter *padapter, u8  *precvframe);
-void r8712_use_tkipkey_handler(struct timer_list *t);
-
-#endif /*__RTL871X_SECURITY_H_ */
-
diff --git a/drivers/staging/rtl8712/rtl871x_sta_mgt.c b/drivers/staging/rtl8712/rtl871x_sta_mgt.c
deleted file mode 100644 (file)
index 2c806a0..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl871x_sta_mgt.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _RTL871X_STA_MGT_C_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "recv_osdep.h"
-#include "xmit_osdep.h"
-#include "sta_info.h"
-
-static void _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);
-       _r8712_init_sta_xmit_priv(&psta->sta_xmitpriv);
-       _r8712_init_sta_recv_priv(&psta->sta_recvpriv);
-       INIT_LIST_HEAD(&psta->asoc_list);
-       INIT_LIST_HEAD(&psta->auth_list);
-}
-
-int _r8712_init_sta_priv(struct        sta_priv *pstapriv)
-{
-       struct sta_info *psta;
-       s32 i;
-
-       pstapriv->pallocated_stainfo_buf = kmalloc(sizeof(struct sta_info) *
-                                                  NUM_STA + 4, GFP_ATOMIC);
-       if (!pstapriv->pallocated_stainfo_buf)
-               return -ENOMEM;
-       pstapriv->pstainfo_buf = pstapriv->pallocated_stainfo_buf + 4 -
-               ((addr_t)(pstapriv->pallocated_stainfo_buf) & 3);
-       _init_queue(&pstapriv->free_sta_queue);
-       spin_lock_init(&pstapriv->sta_hash_lock);
-       pstapriv->asoc_sta_count = 0;
-       _init_queue(&pstapriv->sleep_q);
-       _init_queue(&pstapriv->wakeup_q);
-       psta = (struct sta_info *)(pstapriv->pstainfo_buf);
-       for (i = 0; i < NUM_STA; i++) {
-               _init_stainfo(psta);
-               INIT_LIST_HEAD(&(pstapriv->sta_hash[i]));
-               list_add_tail(&psta->list, &pstapriv->free_sta_queue.queue);
-               psta++;
-       }
-       INIT_LIST_HEAD(&pstapriv->asoc_list);
-       INIT_LIST_HEAD(&pstapriv->auth_list);
-       return 0;
-}
-
-/* this function is used to free the memory of lock || sema for all stainfos */
-static void mfree_all_stainfo(struct sta_priv *pstapriv)
-{
-       unsigned long irqL;
-       struct list_head *plist, *phead;
-
-       spin_lock_irqsave(&pstapriv->sta_hash_lock, irqL);
-       phead = &pstapriv->free_sta_queue.queue;
-       plist = phead->next;
-       while (!end_of_queue_search(phead, plist))
-               plist = plist->next;
-
-       spin_unlock_irqrestore(&pstapriv->sta_hash_lock, irqL);
-}
-
-void _r8712_free_sta_priv(struct sta_priv *pstapriv)
-{
-       if (pstapriv) {
-               /* be done before free sta_hash_lock */
-               mfree_all_stainfo(pstapriv);
-               kfree(pstapriv->pallocated_stainfo_buf);
-       }
-}
-
-struct sta_info *r8712_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;
-       unsigned long flags;
-
-       pfree_sta_queue = &pstapriv->free_sta_queue;
-       spin_lock_irqsave(&pfree_sta_queue->lock, flags);
-       psta = list_first_entry_or_null(&pfree_sta_queue->queue,
-                                       struct sta_info, list);
-       if (psta) {
-               list_del_init(&psta->list);
-               _init_stainfo(psta);
-               memcpy(psta->hwaddr, hwaddr, ETH_ALEN);
-               index = wifi_mac_hash(hwaddr);
-               if (index >= NUM_STA) {
-                       psta = NULL;
-                       goto exit;
-               }
-               phash_list = &pstapriv->sta_hash[index];
-               list_add_tail(&psta->hash_list, phash_list);
-               pstapriv->asoc_sta_count++;
-
-/* 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);
-               /* 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->indicate_seq = 0xffff;
-                       preorder_ctrl->wend_b = 0xffff;
-                       preorder_ctrl->wsize_b = 64;
-                       _init_queue(&preorder_ctrl->pending_recvframe_queue);
-                       r8712_init_recv_timer(preorder_ctrl);
-               }
-       }
-exit:
-       spin_unlock_irqrestore(&pfree_sta_queue->lock, flags);
-       return psta;
-}
-
-/* using pstapriv->sta_hash_lock to protect */
-void r8712_free_stainfo(struct _adapter *padapter, struct sta_info *psta)
-{
-       int i;
-       unsigned long irqL0;
-       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;
-
-       if (!psta)
-               return;
-       pfree_sta_queue = &pstapriv->free_sta_queue;
-       pstaxmitpriv = &psta->sta_xmitpriv;
-       spin_lock_irqsave(&(pxmitpriv->vo_pending.lock), irqL0);
-       r8712_free_xmitframe_queue(pxmitpriv, &pstaxmitpriv->vo_q.sta_pending);
-       list_del_init(&(pstaxmitpriv->vo_q.tx_pending));
-       spin_unlock_irqrestore(&(pxmitpriv->vo_pending.lock), irqL0);
-       spin_lock_irqsave(&(pxmitpriv->vi_pending.lock), irqL0);
-       r8712_free_xmitframe_queue(pxmitpriv, &pstaxmitpriv->vi_q.sta_pending);
-       list_del_init(&(pstaxmitpriv->vi_q.tx_pending));
-       spin_unlock_irqrestore(&(pxmitpriv->vi_pending.lock), irqL0);
-       spin_lock_irqsave(&(pxmitpriv->bk_pending.lock), irqL0);
-       r8712_free_xmitframe_queue(pxmitpriv, &pstaxmitpriv->bk_q.sta_pending);
-       list_del_init(&(pstaxmitpriv->bk_q.tx_pending));
-       spin_unlock_irqrestore(&(pxmitpriv->bk_pending.lock), irqL0);
-       spin_lock_irqsave(&(pxmitpriv->be_pending.lock), irqL0);
-       r8712_free_xmitframe_queue(pxmitpriv, &pstaxmitpriv->be_q.sta_pending);
-       list_del_init(&(pstaxmitpriv->be_q.tx_pending));
-       spin_unlock_irqrestore(&(pxmitpriv->be_pending.lock), irqL0);
-       list_del_init(&psta->hash_list);
-       pstapriv->asoc_sta_count--;
-       /* re-init sta_info; 20061114 */
-       _r8712_init_sta_xmit_priv(&psta->sta_xmitpriv);
-       _r8712_init_sta_recv_priv(&psta->sta_recvpriv);
-       /* for A-MPDU Rx reordering buffer control,
-        * cancel reordering_ctrl_timer
-        */
-       for (i = 0; i < 16; i++) {
-               preorder_ctrl = &psta->recvreorder_ctrl[i];
-               del_timer(&preorder_ctrl->reordering_ctrl_timer);
-       }
-       spin_lock(&(pfree_sta_queue->lock));
-       /* insert into free_sta_queue; 20061114 */
-       list_add_tail(&psta->list, &pfree_sta_queue->queue);
-       spin_unlock(&(pfree_sta_queue->lock));
-}
-
-/* free all stainfo which in sta_hash[all] */
-void r8712_free_all_stainfo(struct _adapter *padapter)
-{
-       unsigned long irqL;
-       struct list_head *plist, *phead;
-       s32 index;
-       struct sta_info *psta = NULL;
-       struct  sta_priv *pstapriv = &padapter->stapriv;
-       struct sta_info *pbcmc_stainfo = r8712_get_bcmc_stainfo(padapter);
-
-       if (pstapriv->asoc_sta_count == 1)
-               return;
-       spin_lock_irqsave(&pstapriv->sta_hash_lock, irqL);
-       for (index = 0; index < NUM_STA; index++) {
-               phead = &(pstapriv->sta_hash[index]);
-               plist = phead->next;
-               while (!end_of_queue_search(phead, plist)) {
-                       psta = container_of(plist,
-                                           struct sta_info, hash_list);
-                       plist = plist->next;
-                       if (pbcmc_stainfo != psta)
-                               r8712_free_stainfo(padapter, psta);
-               }
-       }
-       spin_unlock_irqrestore(&pstapriv->sta_hash_lock, irqL);
-}
-
-/* any station allocated can be searched by hash list */
-struct sta_info *r8712_get_stainfo(struct sta_priv *pstapriv, u8 *hwaddr)
-{
-       unsigned long    irqL;
-       struct list_head *plist, *phead;
-       struct sta_info *psta = NULL;
-       u32     index;
-
-       if (!hwaddr)
-               return NULL;
-       index = wifi_mac_hash(hwaddr);
-       spin_lock_irqsave(&pstapriv->sta_hash_lock, irqL);
-       phead = &(pstapriv->sta_hash[index]);
-       plist = phead->next;
-       while (!end_of_queue_search(phead, plist)) {
-               psta = container_of(plist, struct sta_info, hash_list);
-               if ((!memcmp(psta->hwaddr, hwaddr, ETH_ALEN))) {
-                       /* if found the matched address */
-                       break;
-               }
-               psta = NULL;
-               plist = plist->next;
-       }
-       spin_unlock_irqrestore(&pstapriv->sta_hash_lock, irqL);
-       return psta;
-}
-
-void r8712_init_bcmc_stainfo(struct _adapter *padapter)
-{
-       unsigned char bcast_addr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-       struct  sta_priv *pstapriv = &padapter->stapriv;
-
-       r8712_alloc_stainfo(pstapriv, bcast_addr);
-}
-
-struct sta_info *r8712_get_bcmc_stainfo(struct _adapter *padapter)
-{
-       struct sta_priv *pstapriv = &padapter->stapriv;
-       u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-
-       return r8712_get_stainfo(pstapriv, bc_addr);
-}
-
-u8 r8712_access_ctrl(struct wlan_acl_pool *pacl_list, u8 *mac_addr)
-{
-       return true;
-}
diff --git a/drivers/staging/rtl8712/rtl871x_wlan_sme.h b/drivers/staging/rtl8712/rtl871x_wlan_sme.h
deleted file mode 100644 (file)
index 97ea145..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef _RTL871X_WLAN_SME_H_
-#define _RTL871X_WLAN_SME_H_
-
-#define MSR_APMODE             0x0C
-#define MSR_STAMODE    0x08
-#define MSR_ADHOCMODE  0x04
-#define MSR_NOLINKMODE 0x00
-#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
-
-#endif
-
diff --git a/drivers/staging/rtl8712/rtl871x_xmit.c b/drivers/staging/rtl8712/rtl871x_xmit.c
deleted file mode 100644 (file)
index 6353dbe..0000000
+++ /dev/null
@@ -1,1059 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * rtl871x_xmit.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _RTL871X_XMIT_C_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "osdep_intf.h"
-#include "usb_ops.h"
-
-#include <linux/usb.h>
-#include <linux/ieee80211.h>
-
-static const u8 P802_1H_OUI[P80211_OUI_LEN] = {0x00, 0x00, 0xf8};
-static const u8 RFC1042_OUI[P80211_OUI_LEN] = {0x00, 0x00, 0x00};
-static void init_hwxmits(struct hw_xmit *phwxmit, sint entry);
-static void alloc_hwxmits(struct _adapter *padapter);
-static void free_hwxmits(struct _adapter *padapter);
-
-static void _init_txservq(struct tx_servq *ptxservq)
-{
-       INIT_LIST_HEAD(&ptxservq->tx_pending);
-       _init_queue(&ptxservq->sta_pending);
-       ptxservq->qcnt = 0;
-}
-
-void _r8712_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);
-}
-
-int _r8712_init_xmit_priv(struct xmit_priv *pxmitpriv,
-                         struct _adapter *padapter)
-{
-       sint i;
-       struct xmit_buf *pxmitbuf;
-       struct xmit_frame *pxframe;
-       int j;
-
-       memset((unsigned char *)pxmitpriv, 0, sizeof(struct xmit_priv));
-       spin_lock_init(&pxmitpriv->lock);
-       /*
-        *Please insert all the queue initialization using _init_queue below
-        */
-       pxmitpriv->adapter = padapter;
-       _init_queue(&pxmitpriv->be_pending);
-       _init_queue(&pxmitpriv->bk_pending);
-       _init_queue(&pxmitpriv->vi_pending);
-       _init_queue(&pxmitpriv->vo_pending);
-       _init_queue(&pxmitpriv->bm_pending);
-       _init_queue(&pxmitpriv->legacy_dz_queue);
-       _init_queue(&pxmitpriv->apsd_queue);
-       _init_queue(&pxmitpriv->free_xmit_queue);
-       /*
-        * Please allocate memory with 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 =
-               kmalloc(NR_XMITFRAME * sizeof(struct xmit_frame) + 4,
-                       GFP_ATOMIC);
-       if (!pxmitpriv->pallocated_frame_buf) {
-               pxmitpriv->pxmit_frame_buf = NULL;
-               return -ENOMEM;
-       }
-       pxmitpriv->pxmit_frame_buf = pxmitpriv->pallocated_frame_buf + 4 -
-                       ((addr_t) (pxmitpriv->pallocated_frame_buf) & 3);
-       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 = DATA_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;
-       /*
-        * init xmit hw_txqueue
-        */
-       _r8712_init_hw_txqueue(&pxmitpriv->be_txqueue, BE_QUEUE_INX);
-       _r8712_init_hw_txqueue(&pxmitpriv->bk_txqueue, BK_QUEUE_INX);
-       _r8712_init_hw_txqueue(&pxmitpriv->vi_txqueue, VI_QUEUE_INX);
-       _r8712_init_hw_txqueue(&pxmitpriv->vo_txqueue, VO_QUEUE_INX);
-       _r8712_init_hw_txqueue(&pxmitpriv->bmc_txqueue, BMC_QUEUE_INX);
-       pxmitpriv->frag_len = MAX_FRAG_THRESHOLD;
-       pxmitpriv->txirp_cnt = 1;
-       /*per AC pending irp*/
-       pxmitpriv->beq_cnt = 0;
-       pxmitpriv->bkq_cnt = 0;
-       pxmitpriv->viq_cnt = 0;
-       pxmitpriv->voq_cnt = 0;
-       /*init xmit_buf*/
-       _init_queue(&pxmitpriv->free_xmitbuf_queue);
-       _init_queue(&pxmitpriv->pending_xmitbuf_queue);
-       pxmitpriv->pallocated_xmitbuf =
-               kmalloc(NR_XMITBUFF * sizeof(struct xmit_buf) + 4, GFP_ATOMIC);
-       if (!pxmitpriv->pallocated_xmitbuf)
-               goto clean_up_frame_buf;
-       pxmitpriv->pxmitbuf = pxmitpriv->pallocated_xmitbuf + 4 -
-                             ((addr_t)(pxmitpriv->pallocated_xmitbuf) & 3);
-       pxmitbuf = (struct xmit_buf *)pxmitpriv->pxmitbuf;
-       for (i = 0; i < NR_XMITBUFF; i++) {
-               INIT_LIST_HEAD(&pxmitbuf->list);
-               pxmitbuf->pallocated_buf =
-                       kmalloc(MAX_XMITBUF_SZ + XMITBUF_ALIGN_SZ, GFP_ATOMIC);
-               if (!pxmitbuf->pallocated_buf) {
-                       j = 0;
-                       goto clean_up_alloc_buf;
-               }
-               pxmitbuf->pbuf = pxmitbuf->pallocated_buf + XMITBUF_ALIGN_SZ -
-                                ((addr_t) (pxmitbuf->pallocated_buf) &
-                                (XMITBUF_ALIGN_SZ - 1));
-               if (r8712_xmit_resource_alloc(padapter, pxmitbuf)) {
-                       j = 1;
-                       goto clean_up_alloc_buf;
-               }
-               list_add_tail(&pxmitbuf->list,
-                                &(pxmitpriv->free_xmitbuf_queue.queue));
-               pxmitbuf++;
-       }
-       pxmitpriv->free_xmitbuf_cnt = NR_XMITBUFF;
-       INIT_WORK(&padapter->wk_filter_rx_ff0, r8712_SetFilter);
-       alloc_hwxmits(padapter);
-       init_hwxmits(pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry);
-       tasklet_setup(&pxmitpriv->xmit_tasklet, r8712_xmit_bh);
-       return 0;
-
-clean_up_alloc_buf:
-       if (j) {
-               /* failure happened in r8712_xmit_resource_alloc()
-                * delete extra pxmitbuf->pallocated_buf
-                */
-               kfree(pxmitbuf->pallocated_buf);
-       }
-       for (j = 0; j < i; j++) {
-               int k;
-
-               pxmitbuf--;                     /* reset pointer */
-               kfree(pxmitbuf->pallocated_buf);
-               for (k = 0; k < 8; k++)         /* delete xmit urb's */
-                       usb_free_urb(pxmitbuf->pxmit_urb[k]);
-       }
-       kfree(pxmitpriv->pallocated_xmitbuf);
-       pxmitpriv->pallocated_xmitbuf = NULL;
-clean_up_frame_buf:
-       kfree(pxmitpriv->pallocated_frame_buf);
-       pxmitpriv->pallocated_frame_buf = NULL;
-       return -ENOMEM;
-}
-
-void _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;
-
-       if (!pxmitpriv->pxmit_frame_buf)
-               return;
-       for (i = 0; i < NR_XMITFRAME; i++) {
-               r8712_xmit_complete(padapter, pxmitframe);
-               pxmitframe++;
-       }
-       for (i = 0; i < NR_XMITBUFF; i++) {
-               r8712_xmit_resource_free(padapter, pxmitbuf);
-               kfree(pxmitbuf->pallocated_buf);
-               pxmitbuf++;
-       }
-       kfree(pxmitpriv->pallocated_frame_buf);
-       kfree(pxmitpriv->pallocated_xmitbuf);
-       free_hwxmits(padapter);
-}
-
-int r8712_update_attrib(struct _adapter *padapter, _pkt *pkt,
-                       struct pkt_attrib *pattrib)
-{
-       struct pkt_file pktfile;
-       struct sta_info *psta = NULL;
-       struct ethhdr etherhdr;
-
-       struct tx_cmd txdesc;
-
-       bool bmcast;
-       struct sta_priv         *pstapriv = &padapter->stapriv;
-       struct security_priv    *psecuritypriv = &padapter->securitypriv;
-       struct mlme_priv        *pmlmepriv = &padapter->mlmepriv;
-       struct qos_priv         *pqospriv = &pmlmepriv->qospriv;
-
-       _r8712_open_pktfile(pkt, &pktfile);
-
-       _r8712_pktfile_read(&pktfile, (unsigned char *)&etherhdr, ETH_HLEN);
-
-       pattrib->ether_type = ntohs(etherhdr.h_proto);
-
-       /*
-        * If driver xmit ARP packet, driver can set ps mode to initial
-        * setting. It stands for getting DHCP or fix IP.
-        */
-       if (pattrib->ether_type == 0x0806) {
-               if (padapter->pwrctrlpriv.pwr_mode !=
-                   padapter->registrypriv.power_mgnt) {
-                       del_timer_sync(&pmlmepriv->dhcp_timer);
-                       r8712_set_ps_mode(padapter,
-                                         padapter->registrypriv.power_mgnt,
-                                         padapter->registrypriv.smart_ps);
-               }
-       }
-
-       memcpy(pattrib->dst, &etherhdr.h_dest, ETH_ALEN);
-       memcpy(pattrib->src, &etherhdr.h_source, ETH_ALEN);
-       pattrib->pctrl = 0;
-       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);
-       } else if (check_fwstate(pmlmepriv, WIFI_MP_STATE)) {
-               /*firstly, filter packet not belongs to mp*/
-               if (pattrib->ether_type != 0x8712)
-                       return -EINVAL;
-               /* for mp storing the txcmd per packet,
-                * according to the info of txcmd to update pattrib
-                */
-               /*get MP_TXDESC_SIZE bytes txcmd per packet*/
-               _r8712_pktfile_read(&pktfile, (u8 *)&txdesc, TXDESC_SIZE);
-               memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
-               memcpy(pattrib->ta, pattrib->src, ETH_ALEN);
-               pattrib->pctrl = 1;
-       }
-       /* r8712_xmitframe_coalesce() overwrite this!*/
-       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];
-
-               _r8712_pktfile_read(&pktfile, &tmp[0], 24);
-               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
-                                        * Use low rate to send DHCP packet.
-                                        */
-                                       pattrib->dhcp_pkt = 1;
-                               }
-                       }
-               }
-       }
-       bmcast = is_multicast_ether_addr(pattrib->ra);
-       /* get sta_info*/
-       if (bmcast) {
-               psta = r8712_get_bcmc_stainfo(padapter);
-               pattrib->mac_id = 4;
-       } else {
-               if (check_fwstate(pmlmepriv, WIFI_MP_STATE)) {
-                       psta = r8712_get_stainfo(pstapriv,
-                                                get_bssid(pmlmepriv));
-                       pattrib->mac_id = 5;
-               } else {
-                       psta = r8712_get_stainfo(pstapriv, pattrib->ra);
-                       if (!psta)  /* drop the pkt */
-                               return -ENOMEM;
-                       if (check_fwstate(pmlmepriv, WIFI_STATION_STATE))
-                               pattrib->mac_id = 5;
-                       else
-                               pattrib->mac_id = psta->mac_id;
-               }
-       }
-
-       if (psta) {
-               pattrib->psta = psta;
-       } else {
-               /* if we cannot get psta => drrp the pkt */
-               return -ENOMEM;
-       }
-
-       pattrib->ack_policy = 0;
-       /* get ether_hdr_len */
-       pattrib->pkt_hdrlen = ETH_HLEN;
-
-       if (pqospriv->qos_option) {
-               r8712_set_qos(&pktfile, pattrib);
-       } else {
-               pattrib->hdrlen = WLAN_HDR_A3_LEN;
-               pattrib->subtype = IEEE80211_FTYPE_DATA;
-               pattrib->priority = 0;
-       }
-       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 (pattrib->encrypt) {
-       case _WEP40_:
-       case _WEP104_:
-               pattrib->iv_len = 4;
-               pattrib->icv_len = 4;
-               break;
-       case _TKIP_:
-               pattrib->iv_len = 8;
-               pattrib->icv_len = 4;
-               if (padapter->securitypriv.busetkipkey == _FAIL)
-                       return -EINVAL;
-               break;
-       case _AES_:
-               pattrib->iv_len = 8;
-               pattrib->icv_len = 8;
-               break;
-       default:
-               pattrib->iv_len = 0;
-               pattrib->icv_len = 0;
-               break;
-       }
-
-       if (pattrib->encrypt &&
-           (padapter->securitypriv.sw_encrypt ||
-           !psecuritypriv->hw_decrypted))
-               pattrib->bswenc = true;
-       else
-               pattrib->bswenc = false;
-       /* if in MP_STATE, update pkt_attrib from mp_txcmd, and overwrite
-        * some settings above.
-        */
-       if (check_fwstate(pmlmepriv, WIFI_MP_STATE))
-               pattrib->priority =
-                   (le32_to_cpu(txdesc.txdw1) >> QSEL_SHT) & 0x1f;
-       return 0;
-}
-
-static int xmitframe_addmic(struct _adapter *padapter,
-                           struct xmit_frame *pxmitframe)
-{
-       u32     curfragnum, length;
-       u8      *pframe, *payload, mic[8];
-       struct  mic_data micdata;
-       struct  sta_info *stainfo;
-       struct  qos_priv *pqospriv = &(padapter->mlmepriv.qospriv);
-       struct  pkt_attrib  *pattrib = &pxmitframe->attrib;
-       struct  security_priv *psecpriv = &padapter->securitypriv;
-       struct  xmit_priv *pxmitpriv = &padapter->xmitpriv;
-       u8 priority[4] = {};
-       bool bmcst = is_multicast_ether_addr(pattrib->ra);
-
-       if (pattrib->psta)
-               stainfo = pattrib->psta;
-       else
-               stainfo = r8712_get_stainfo(&padapter->stapriv,
-                                           &pattrib->ra[0]);
-       if (pattrib->encrypt == _TKIP_) {
-               /*encode mic code*/
-               if (stainfo) {
-                       u8 null_key[16] = {};
-
-                       pframe = pxmitframe->buf_addr + TXDESC_OFFSET;
-                       if (bmcst) {
-                               if (!memcmp(psecpriv->XGrptxmickey
-                                  [psecpriv->XGrpKeyid].skey,
-                                  null_key, 16))
-                                       return -ENOMEM;
-                               /*start to calculate the mic code*/
-                               r8712_secmicsetkey(&micdata,
-                                       psecpriv->XGrptxmickey
-                                       [psecpriv->XGrpKeyid].skey);
-                       } else {
-                               if (!memcmp(&stainfo->tkiptxmickey.skey[0],
-                                           null_key, 16))
-                                       return -ENOMEM;
-                               /* start to calculate the mic code */
-                               r8712_secmicsetkey(&micdata,
-                                            &stainfo->tkiptxmickey.skey[0]);
-                       }
-                       if (pframe[1] & 1) {   /* ToDS==1 */
-                               r8712_secmicappend(&micdata,
-                                                  &pframe[16], 6); /*DA*/
-                               if (pframe[1] & 2)  /* From Ds==1 */
-                                       r8712_secmicappend(&micdata,
-                                                          &pframe[24], 6);
-                               else
-                                       r8712_secmicappend(&micdata,
-                                                          &pframe[10], 6);
-                       } else {        /* ToDS==0 */
-                               r8712_secmicappend(&micdata,
-                                                  &pframe[4], 6); /* DA */
-                               if (pframe[1] & 2)  /* From Ds==1 */
-                                       r8712_secmicappend(&micdata,
-                                                          &pframe[16], 6);
-                               else
-                                       r8712_secmicappend(&micdata,
-                                                          &pframe[10], 6);
-                       }
-                       if (pqospriv->qos_option == 1)
-                               priority[0] = (u8)pxmitframe->attrib.priority;
-                       r8712_secmicappend(&micdata, &priority[0], 4);
-                       payload = pframe;
-                       for (curfragnum = 0; curfragnum < pattrib->nr_frags;
-                            curfragnum++) {
-                               payload = (u8 *)RND4((addr_t)(payload));
-                               payload += pattrib->hdrlen + pattrib->iv_len;
-                               if ((curfragnum + 1) == pattrib->nr_frags) {
-                                       length = pattrib->last_txcmdsz -
-                                                 pattrib->hdrlen -
-                                                 pattrib->iv_len -
-                                                 ((psecpriv->sw_encrypt)
-                                                 ? pattrib->icv_len : 0);
-                                       r8712_secmicappend(&micdata, payload,
-                                                          length);
-                                       payload = payload + length;
-                               } else {
-                                       length = pxmitpriv->frag_len -
-                                           pattrib->hdrlen - pattrib->iv_len -
-                                           ((psecpriv->sw_encrypt) ?
-                                           pattrib->icv_len : 0);
-                                       r8712_secmicappend(&micdata, payload,
-                                                          length);
-                                       payload = payload + length +
-                                                 pattrib->icv_len;
-                               }
-                       }
-                       r8712_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;
-                       payload = payload - pattrib->last_txcmdsz + 8;
-               }
-       }
-       return 0;
-}
-
-static sint 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_:
-                       r8712_wep_encrypt(padapter, (u8 *)pxmitframe);
-                       break;
-               case _TKIP_:
-                       r8712_tkip_encrypt(padapter, (u8 *)pxmitframe);
-                       break;
-               case _AES_:
-                       r8712_aes_encrypt(padapter, (u8 *)pxmitframe);
-                       break;
-               default:
-                               break;
-               }
-       }
-       return _SUCCESS;
-}
-
-static int 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;
-       __le16 *fctrl = &pwlanhdr->frame_control;
-       u8 *bssid;
-
-       memset(hdr, 0, WLANHDR_OFFSET);
-       SetFrameSubType(fctrl, pattrib->subtype);
-       if (!(pattrib->subtype & IEEE80211_FTYPE_DATA))
-               return 0;
-
-       bssid = get_bssid(pmlmepriv);
-
-       if (check_fwstate(pmlmepriv,  WIFI_STATION_STATE)) {
-               /* to_ds = 1, fr_ds = 0; */
-               SetToDs(fctrl);
-               ether_addr_copy(pwlanhdr->addr1, bssid);
-               ether_addr_copy(pwlanhdr->addr2, pattrib->src);
-               ether_addr_copy(pwlanhdr->addr3, pattrib->dst);
-       } else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
-               /* to_ds = 0, fr_ds = 1; */
-               SetFrDs(fctrl);
-               ether_addr_copy(pwlanhdr->addr1, pattrib->dst);
-               ether_addr_copy(pwlanhdr->addr2, bssid);
-               ether_addr_copy(pwlanhdr->addr3, pattrib->src);
-       } else if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) ||
-                  check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
-               ether_addr_copy(pwlanhdr->addr1, pattrib->dst);
-               ether_addr_copy(pwlanhdr->addr2, pattrib->src);
-               ether_addr_copy(pwlanhdr->addr3, bssid);
-       } else if (check_fwstate(pmlmepriv, WIFI_MP_STATE)) {
-               ether_addr_copy(pwlanhdr->addr1, pattrib->dst);
-               ether_addr_copy(pwlanhdr->addr2, pattrib->src);
-               ether_addr_copy(pwlanhdr->addr3, bssid);
-       } else {
-               return -EINVAL;
-       }
-
-       if (pattrib->encrypt)
-               SetPrivacy(fctrl);
-       if (pqospriv->qos_option) {
-               qc = (unsigned short *)(hdr + pattrib->hdrlen - 2);
-               if (pattrib->priority)
-                       SetPriority(qc, pattrib->priority);
-               SetAckpolicy(qc, pattrib->ack_policy);
-       }
-       /* TODO: fill HT Control Field */
-       /* Update Seq Num will be handled by f/w */
-       {
-               struct sta_info *psta;
-               bool bmcst = is_multicast_ether_addr(pattrib->ra);
-
-               if (pattrib->psta)
-                       psta = pattrib->psta;
-               else if (bmcst)
-                       psta = r8712_get_bcmc_stainfo(padapter);
-               else
-                       psta = r8712_get_stainfo(&padapter->stapriv,
-                                                pattrib->ra);
-
-               if (psta) {
-                       u16 *txtid = psta->sta_xmitpriv.txseq_tid;
-
-                       txtid[pattrib->priority]++;
-                       txtid[pattrib->priority] &= 0xFFF;
-                       pattrib->seqnum = txtid[pattrib->priority];
-                       SetSeqNum(hdr, pattrib->seqnum);
-               }
-       }
-
-       return 0;
-}
-
-static sint r8712_put_snap(u8 *data, u16 h_proto)
-{
-       struct ieee80211_snap_hdr *snap;
-       const 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);
-}
-
-/*
- * 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.
- */
-sint r8712_xmitframe_coalesce(struct _adapter *padapter, _pkt *pkt,
-                       struct xmit_frame *pxmitframe)
-{
-       struct pkt_file pktfile;
-
-       sint    frg_len, mpdu_len, llc_sz;
-       u32     mem_sz;
-       u8      frg_inx;
-       addr_t addr;
-       u8 *pframe, *mem_start, *ptxdesc;
-       struct sta_info         *psta;
-       struct security_priv    *psecpriv = &padapter->securitypriv;
-       struct mlme_priv        *pmlmepriv = &padapter->mlmepriv;
-       struct xmit_priv        *pxmitpriv = &padapter->xmitpriv;
-       struct pkt_attrib       *pattrib = &pxmitframe->attrib;
-       u8 *pbuf_start;
-       bool bmcst = is_multicast_ether_addr(pattrib->ra);
-
-       if (!pattrib->psta)
-               return _FAIL;
-       psta = pattrib->psta;
-       if (!pxmitframe->buf_addr)
-               return _FAIL;
-       pbuf_start = pxmitframe->buf_addr;
-       ptxdesc = pbuf_start;
-       mem_start = pbuf_start + TXDESC_OFFSET;
-       if (make_wlanhdr(padapter, mem_start, pattrib))
-               return _FAIL;
-       _r8712_open_pktfile(pkt, &pktfile);
-       _r8712_pktfile_read(&pktfile, NULL, (uint) pattrib->pkt_hdrlen);
-       if (check_fwstate(pmlmepriv, WIFI_MP_STATE)) {
-               /* truncate TXDESC_SIZE bytes txcmd if at mp mode for 871x */
-               if (pattrib->ether_type == 0x8712) {
-                       /* take care -  update_txdesc overwrite this */
-                       _r8712_pktfile_read(&pktfile, ptxdesc, TXDESC_SIZE);
-               }
-       }
-       pattrib->pktlen = pktfile.pkt_len;
-       frg_inx = 0;
-       frg_len = pxmitpriv->frag_len - 4;
-       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) {
-                       if (psta) {
-                               switch (pattrib->encrypt) {
-                               case _WEP40_:
-                               case _WEP104_:
-                                       WEP_IV(pattrib->iv, psta->txpn,
-                                              (u8)psecpriv->PrivacyKeyIndex);
-                                       break;
-                               case _TKIP_:
-                                       if (bmcst)
-                                               TKIP_IV(pattrib->iv,
-                                                   psta->txpn,
-                                                   (u8)psecpriv->XGrpKeyid);
-                                       else
-                                               TKIP_IV(pattrib->iv, psta->txpn,
-                                                       0);
-                                       break;
-                               case _AES_:
-                                       if (bmcst)
-                                               AES_IV(pattrib->iv, psta->txpn,
-                                                   (u8)psecpriv->XGrpKeyid);
-                                       else
-                                               AES_IV(pattrib->iv, psta->txpn,
-                                                      0);
-                                       break;
-                               }
-                       }
-                       memcpy(pframe, pattrib->iv, pattrib->iv_len);
-                       pframe += pattrib->iv_len;
-                       mpdu_len -= pattrib->iv_len;
-               }
-               if (frg_inx == 0) {
-                       llc_sz = r8712_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)
-                       mem_sz = _r8712_pktfile_read(&pktfile, pframe,
-                                pattrib->pktlen);
-               else
-                       mem_sz = _r8712_pktfile_read(&pktfile, pframe,
-                                mpdu_len);
-               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 || r8712_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 = (addr_t)(pframe);
-               mem_start = (unsigned char *)RND4(addr) + TXDESC_OFFSET;
-               memcpy(mem_start, pbuf_start + TXDESC_OFFSET, pattrib->hdrlen);
-       }
-
-       if (xmitframe_addmic(padapter, pxmitframe))
-               return _FAIL;
-       xmitframe_swencrypt(padapter, pxmitframe);
-       return _SUCCESS;
-}
-
-void r8712_update_protection(struct _adapter *padapter, u8 *ie, uint ie_len)
-{
-       uint    protection;
-       u8      *perp;
-       uint    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 = r8712_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;
-       }
-}
-
-struct xmit_buf *r8712_alloc_xmitbuf(struct xmit_priv *pxmitpriv)
-{
-       unsigned long irqL;
-       struct xmit_buf *pxmitbuf;
-       struct  __queue *pfree_xmitbuf_queue = &pxmitpriv->free_xmitbuf_queue;
-
-       spin_lock_irqsave(&pfree_xmitbuf_queue->lock, irqL);
-       pxmitbuf = list_first_entry_or_null(&pfree_xmitbuf_queue->queue,
-                                           struct xmit_buf, list);
-       if (pxmitbuf) {
-               list_del_init(&pxmitbuf->list);
-               pxmitpriv->free_xmitbuf_cnt--;
-       }
-       spin_unlock_irqrestore(&pfree_xmitbuf_queue->lock, irqL);
-       return pxmitbuf;
-}
-
-void r8712_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;
-       spin_lock_irqsave(&pfree_xmitbuf_queue->lock, irqL);
-       list_del_init(&pxmitbuf->list);
-       list_add_tail(&(pxmitbuf->list), &pfree_xmitbuf_queue->queue);
-       pxmitpriv->free_xmitbuf_cnt++;
-       spin_unlock_irqrestore(&pfree_xmitbuf_queue->lock, irqL);
-}
-
-/*
- * 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 *r8712_alloc_xmitframe(struct xmit_priv *pxmitpriv)
-{
-       /*
-        * Please remember to use all the osdep_service api,
-        * and lock/unlock or _enter/_exit critical to protect
-        * pfree_xmit_queue
-        */
-       unsigned long irqL;
-       struct xmit_frame *pxframe;
-       struct  __queue *pfree_xmit_queue = &pxmitpriv->free_xmit_queue;
-
-       spin_lock_irqsave(&pfree_xmit_queue->lock, irqL);
-       pxframe = list_first_entry_or_null(&pfree_xmit_queue->queue,
-                                          struct xmit_frame, list);
-       if (pxframe) {
-               list_del_init(&pxframe->list);
-               pxmitpriv->free_xmitframe_cnt--;
-               pxframe->buf_addr = NULL;
-               pxframe->pxmitbuf = NULL;
-               pxframe->attrib.psta = NULL;
-               pxframe->pkt = NULL;
-       }
-       spin_unlock_irqrestore(&pfree_xmit_queue->lock, irqL);
-       return pxframe;
-}
-
-void r8712_free_xmitframe(struct xmit_priv *pxmitpriv,
-                         struct xmit_frame *pxmitframe)
-{
-       unsigned long irqL;
-       struct  __queue *pfree_xmit_queue = &pxmitpriv->free_xmit_queue;
-       struct _adapter *padapter = pxmitpriv->adapter;
-
-       if (!pxmitframe)
-               return;
-       spin_lock_irqsave(&pfree_xmit_queue->lock, irqL);
-       list_del_init(&pxmitframe->list);
-       if (pxmitframe->pkt)
-               pxmitframe->pkt = NULL;
-       list_add_tail(&pxmitframe->list, &pfree_xmit_queue->queue);
-       pxmitpriv->free_xmitframe_cnt++;
-       spin_unlock_irqrestore(&pfree_xmit_queue->lock, irqL);
-       if (netif_queue_stopped(padapter->pnetdev))
-               netif_wake_queue(padapter->pnetdev);
-}
-
-void r8712_free_xmitframe_ex(struct xmit_priv *pxmitpriv,
-                     struct xmit_frame *pxmitframe)
-{
-       if (!pxmitframe)
-               return;
-       if (pxmitframe->frame_tag == DATA_FRAMETAG)
-               r8712_free_xmitframe(pxmitpriv, pxmitframe);
-}
-
-void r8712_free_xmitframe_queue(struct xmit_priv *pxmitpriv,
-                               struct  __queue *pframequeue)
-{
-       unsigned long irqL;
-       struct list_head *plist, *phead;
-       struct  xmit_frame      *pxmitframe;
-
-       spin_lock_irqsave(&(pframequeue->lock), irqL);
-       phead = &pframequeue->queue;
-       plist = phead->next;
-       while (!end_of_queue_search(phead, plist)) {
-               pxmitframe = container_of(plist, struct xmit_frame, list);
-               plist = plist->next;
-               r8712_free_xmitframe(pxmitpriv, pxmitframe);
-       }
-       spin_unlock_irqrestore(&(pframequeue->lock), irqL);
-}
-
-static inline struct tx_servq *get_sta_pending(struct _adapter *padapter,
-                                              struct  __queue **ppstapending,
-                                              struct sta_info *psta, sint up)
-{
-       struct tx_servq *ptxservq;
-       struct hw_xmit *phwxmits =  padapter->xmitpriv.hwxmits;
-
-       switch (up) {
-       case 1:
-       case 2:
-               ptxservq = &(psta->sta_xmitpriv.bk_q);
-               *ppstapending = &padapter->xmitpriv.bk_pending;
-               (phwxmits + 3)->accnt++;
-               break;
-       case 4:
-       case 5:
-               ptxservq = &(psta->sta_xmitpriv.vi_q);
-               *ppstapending = &padapter->xmitpriv.vi_pending;
-               (phwxmits + 1)->accnt++;
-               break;
-       case 6:
-       case 7:
-               ptxservq = &(psta->sta_xmitpriv.vo_q);
-               *ppstapending = &padapter->xmitpriv.vo_pending;
-               (phwxmits + 0)->accnt++;
-               break;
-       case 0:
-       case 3:
-       default:
-               ptxservq = &(psta->sta_xmitpriv.be_q);
-               *ppstapending = &padapter->xmitpriv.be_pending;
-               (phwxmits + 2)->accnt++;
-               break;
-       }
-       return ptxservq;
-}
-
-/*
- * Will enqueue pxmitframe to the proper queue, and indicate it
- * to xx_pending list.....
- */
-int r8712_xmit_classifier(struct _adapter *padapter,
-                         struct xmit_frame *pxmitframe)
-{
-       unsigned long irqL0;
-       struct  __queue *pstapending;
-       struct sta_info *psta;
-       struct tx_servq *ptxservq;
-       struct pkt_attrib *pattrib = &pxmitframe->attrib;
-       struct sta_priv *pstapriv = &padapter->stapriv;
-       struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
-       bool bmcst = is_multicast_ether_addr(pattrib->ra);
-
-       if (pattrib->psta) {
-               psta = pattrib->psta;
-       } else {
-               if (bmcst) {
-                       psta = r8712_get_bcmc_stainfo(padapter);
-               } else {
-                       if (check_fwstate(pmlmepriv, WIFI_MP_STATE))
-                               psta = r8712_get_stainfo(pstapriv,
-                                      get_bssid(pmlmepriv));
-                       else
-                               psta = r8712_get_stainfo(pstapriv, pattrib->ra);
-               }
-       }
-       if (!psta)
-               return -EINVAL;
-       ptxservq = get_sta_pending(padapter, &pstapending,
-                  psta, pattrib->priority);
-       spin_lock_irqsave(&pstapending->lock, irqL0);
-       if (list_empty(&ptxservq->tx_pending))
-               list_add_tail(&ptxservq->tx_pending, &pstapending->queue);
-       list_add_tail(&pxmitframe->list, &ptxservq->sta_pending.queue);
-       ptxservq->qcnt++;
-       spin_unlock_irqrestore(&pstapending->lock, irqL0);
-       return 0;
-}
-
-static void alloc_hwxmits(struct _adapter *padapter)
-{
-       struct hw_xmit *hwxmits;
-       struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-       pxmitpriv->hwxmit_entry = HWXMIT_ENTRY;
-       pxmitpriv->hwxmits = kmalloc_array(pxmitpriv->hwxmit_entry,
-                               sizeof(struct hw_xmit), GFP_ATOMIC);
-       if (!pxmitpriv->hwxmits)
-               return;
-       hwxmits = pxmitpriv->hwxmits;
-       if (pxmitpriv->hwxmit_entry == 5) {
-               pxmitpriv->bmc_txqueue.head = 0;
-               hwxmits[0] .phwtxqueue = &pxmitpriv->bmc_txqueue;
-               hwxmits[0] .sta_queue = &pxmitpriv->bm_pending;
-               pxmitpriv->vo_txqueue.head = 0;
-               hwxmits[1] .phwtxqueue = &pxmitpriv->vo_txqueue;
-               hwxmits[1] .sta_queue = &pxmitpriv->vo_pending;
-               pxmitpriv->vi_txqueue.head = 0;
-               hwxmits[2] .phwtxqueue = &pxmitpriv->vi_txqueue;
-               hwxmits[2] .sta_queue = &pxmitpriv->vi_pending;
-               pxmitpriv->bk_txqueue.head = 0;
-               hwxmits[3] .phwtxqueue = &pxmitpriv->bk_txqueue;
-               hwxmits[3] .sta_queue = &pxmitpriv->bk_pending;
-               pxmitpriv->be_txqueue.head = 0;
-               hwxmits[4] .phwtxqueue = &pxmitpriv->be_txqueue;
-               hwxmits[4] .sta_queue = &pxmitpriv->be_pending;
-       } else if (pxmitpriv->hwxmit_entry == 4) {
-               pxmitpriv->vo_txqueue.head = 0;
-               hwxmits[0] .phwtxqueue = &pxmitpriv->vo_txqueue;
-               hwxmits[0] .sta_queue = &pxmitpriv->vo_pending;
-               pxmitpriv->vi_txqueue.head = 0;
-               hwxmits[1] .phwtxqueue = &pxmitpriv->vi_txqueue;
-               hwxmits[1] .sta_queue = &pxmitpriv->vi_pending;
-               pxmitpriv->be_txqueue.head = 0;
-               hwxmits[2] .phwtxqueue = &pxmitpriv->be_txqueue;
-               hwxmits[2] .sta_queue = &pxmitpriv->be_pending;
-               pxmitpriv->bk_txqueue.head = 0;
-               hwxmits[3] .phwtxqueue = &pxmitpriv->bk_txqueue;
-               hwxmits[3] .sta_queue = &pxmitpriv->bk_pending;
-       }
-}
-
-static void free_hwxmits(struct _adapter *padapter)
-{
-       struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-       kfree(pxmitpriv->hwxmits);
-}
-
-static void init_hwxmits(struct hw_xmit *phwxmit, sint entry)
-{
-       sint i;
-
-       for (i = 0; i < entry; i++, phwxmit++) {
-               spin_lock_init(&phwxmit->xmit_lock);
-               INIT_LIST_HEAD(&phwxmit->pending);
-               phwxmit->txcmdcnt = 0;
-               phwxmit->accnt = 0;
-       }
-}
-
-void xmitframe_xmitbuf_attach(struct xmit_frame *pxmitframe,
-                       struct xmit_buf *pxmitbuf)
-{
-       /* pxmitbuf attach to pxmitframe */
-       pxmitframe->pxmitbuf = pxmitbuf;
-       /* urb and irp connection */
-       pxmitframe->pxmit_urb[0] = pxmitbuf->pxmit_urb[0];
-       /* buffer addr assoc */
-       pxmitframe->buf_addr = pxmitbuf->pbuf;
-       /* pxmitframe attach to pxmitbuf */
-       pxmitbuf->priv_data = pxmitframe;
-}
-
-/*
- * tx_action == 0 == no frames to transmit
- * tx_action > 0 ==> we have frames to transmit
- * tx_action < 0 ==> we have frames to transmit, but TXFF is not even enough
- *                                              to transmit 1 frame.
- */
-
-int r8712_pre_xmit(struct _adapter *padapter, struct xmit_frame *pxmitframe)
-{
-       unsigned long irqL;
-       int ret;
-       struct xmit_buf *pxmitbuf = NULL;
-       struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-       struct pkt_attrib *pattrib = &pxmitframe->attrib;
-
-       r8712_do_queue_select(padapter, pattrib);
-       spin_lock_irqsave(&pxmitpriv->lock, irqL);
-       if (r8712_txframes_sta_ac_pending(padapter, pattrib) > 0) {
-               ret = false;
-               r8712_xmit_enqueue(padapter, pxmitframe);
-               spin_unlock_irqrestore(&pxmitpriv->lock, irqL);
-               return ret;
-       }
-       pxmitbuf = r8712_alloc_xmitbuf(pxmitpriv);
-       if (!pxmitbuf) { /*enqueue packet*/
-               ret = false;
-               r8712_xmit_enqueue(padapter, pxmitframe);
-               spin_unlock_irqrestore(&pxmitpriv->lock, irqL);
-       } else { /*dump packet directly*/
-               spin_unlock_irqrestore(&pxmitpriv->lock, irqL);
-               ret = true;
-               xmitframe_xmitbuf_attach(pxmitframe, pxmitbuf);
-               r8712_xmit_direct(padapter, pxmitframe);
-       }
-       return ret;
-}
diff --git a/drivers/staging/rtl8712/rtl871x_xmit.h b/drivers/staging/rtl8712/rtl871x_xmit.h
deleted file mode 100644 (file)
index cdcbc87..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef _RTL871X_XMIT_H_
-#define _RTL871X_XMIT_H_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "xmit_osdep.h"
-
-#ifdef CONFIG_R8712_TX_AGGR
-#define MAX_XMITBUF_SZ  (16384)
-#else
-#define MAX_XMITBUF_SZ  (2048)
-#endif
-
-#define NR_XMITBUFF     (4)
-
-#ifdef CONFIG_R8712_TX_AGGR
-#define AGGR_NR_HIGH_BOUND      (4) /*(8) */
-#define AGGR_NR_LOW_BOUND       (2)
-#endif
-
-#define XMITBUF_ALIGN_SZ 512
-#define TX_GUARD_BAND          5
-#define MAX_NUMBLKS            (1)
-
-/* Fixed the Big Endian bug when using the software driver encryption.*/
-#define WEP_IV(pattrib_iv, txpn, keyidx)\
-do { \
-       pattrib_iv[0] = txpn._byte_.TSC0;\
-       pattrib_iv[1] = txpn._byte_.TSC1;\
-       pattrib_iv[2] = txpn._byte_.TSC2;\
-       pattrib_iv[3] = ((keyidx & 0x3) << 6);\
-       txpn.val = (txpn.val == 0xffffff) ? 0 : (txpn.val + 1);\
-} while (0)
-
-/* Fixed the Big Endian bug when doing the Tx.
- * The Linksys WRH54G will check this.
- */
-#define TKIP_IV(pattrib_iv, txpn, keyidx)\
-do { \
-       pattrib_iv[0] = txpn._byte_.TSC1;\
-       pattrib_iv[1] = (txpn._byte_.TSC1 | 0x20) & 0x7f;\
-       pattrib_iv[2] = txpn._byte_.TSC0;\
-       pattrib_iv[3] = BIT(5) | ((keyidx & 0x3) << 6);\
-       pattrib_iv[4] = txpn._byte_.TSC2;\
-       pattrib_iv[5] = txpn._byte_.TSC3;\
-       pattrib_iv[6] = txpn._byte_.TSC4;\
-       pattrib_iv[7] = txpn._byte_.TSC5;\
-       txpn.val = txpn.val == 0xffffffffffffULL ? 0 : \
-       (txpn.val + 1);\
-} while (0)
-
-#define AES_IV(pattrib_iv, txpn, keyidx)\
-do { \
-       pattrib_iv[0] = txpn._byte_.TSC0;\
-       pattrib_iv[1] = txpn._byte_.TSC1;\
-       pattrib_iv[2] = 0;\
-       pattrib_iv[3] = BIT(5) | ((keyidx & 0x3) << 6);\
-       pattrib_iv[4] = txpn._byte_.TSC2;\
-       pattrib_iv[5] = txpn._byte_.TSC3;\
-       pattrib_iv[6] = txpn._byte_.TSC4;\
-       pattrib_iv[7] = txpn._byte_.TSC5;\
-       txpn.val = txpn.val == 0xffffffffffffULL ? 0 : \
-       (txpn.val + 1);\
-} while (0)
-
-struct hw_xmit {
-       spinlock_t xmit_lock;
-       struct list_head pending;
-       struct  __queue *sta_queue;
-       struct hw_txqueue *phwtxqueue;
-       sint    txcmdcnt;
-       int     accnt;
-};
-
-struct pkt_attrib {
-       u8      type;
-       u8      subtype;
-       u8      bswenc;
-       u8      dhcp_pkt;
-
-       u16     seqnum;
-       u16     ether_type;
-       u16     pktlen;         /* the original 802.3 pkt raw_data len
-                                * (not include ether_hdr data)
-                                */
-       u16     last_txcmdsz;
-
-       u8      pkt_hdrlen;     /*the original 802.3 pkt header len*/
-       u8      hdrlen;         /*the WLAN Header Len*/
-       u8      nr_frags;
-       u8      ack_policy;
-       u8      mac_id;
-       u8      vcs_mode;       /*virtual carrier sense method*/
-       u8      pctrl;/*per packet txdesc control enable*/
-       u8      qsel;
-
-       u8      priority;
-       u8      encrypt;        /* when 0 indicate no encrypt. when non-zero,
-                                * indicate the encrypt algorithm
-                                */
-       u8      iv_len;
-       u8      icv_len;
-       unsigned char iv[8];
-       unsigned char icv[8];
-       u8      dst[ETH_ALEN] __aligned(2);     /* for ether_addr_copy */
-       u8      src[ETH_ALEN];
-       u8      ta[ETH_ALEN];
-       u8      ra[ETH_ALEN];
-       struct sta_info *psta;
-};
-
-#define WLANHDR_OFFSET 64
-#define DATA_FRAMETAG          0x01
-#define L2_FRAMETAG            0x02
-#define MGNT_FRAMETAG          0x03
-#define AMSDU_FRAMETAG 0x04
-#define EII_FRAMETAG           0x05
-#define IEEE8023_FRAMETAG  0x06
-#define MP_FRAMETAG            0x07
-#define TXAGG_FRAMETAG 0x08
-
-struct xmit_buf {
-       struct list_head list;
-
-       u8 *pallocated_buf;
-       u8 *pbuf;
-       void *priv_data;
-       struct urb *pxmit_urb[8];
-       u32 aggr_nr;
-};
-
-struct xmit_frame {
-       struct list_head list;
-       struct pkt_attrib attrib;
-       _pkt *pkt;
-       int frame_tag;
-       struct _adapter *padapter;
-       u8 *buf_addr;
-       struct xmit_buf *pxmitbuf;
-       u8 *mem_addr;
-       u16 sz[8];
-       struct urb *pxmit_urb[8];
-       u8 bpending[8];
-       u8 last[8];
-};
-
-struct tx_servq {
-       struct list_head tx_pending;
-       struct  __queue sta_pending;
-       int qcnt;
-};
-
-struct sta_xmit_priv {
-       spinlock_t lock;
-       sint    option;
-       sint    apsd_setting;   /* When bit mask is on, the associated edca
-                                * queue supports APSD.
-                                */
-       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 {
-       sint    head;
-       sint    tail;
-       sint    free_sz;        /* in units of 64 bytes */
-       sint    free_cmdsz;
-       sint    txsz[8];
-       uint    ff_hwaddr;
-       uint    cmd_hwaddr;
-       sint    ac_tag;
-};
-
-struct xmit_priv {
-       spinlock_t lock;
-       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;
-       uint mapping_addr;
-       uint pkt_sz;
-       struct  __queue free_xmit_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;
-       uint    tx_bytes;
-       u64     tx_pkts;
-       uint    tx_drop;
-       struct hw_xmit *hwxmits;
-       u8      hwxmit_entry;
-       u8      txirp_cnt;
-       struct tasklet_struct xmit_tasklet;
-       struct work_struct xmit_pipe4_reset_wi;
-       struct work_struct xmit_pipe6_reset_wi;
-       struct work_struct xmit_piped_reset_wi;
-       /*per AC pending irp*/
-       int beq_cnt;
-       int bkq_cnt;
-       int viq_cnt;
-       int voq_cnt;
-       struct  __queue free_amsdu_xmit_queue;
-       u8 *pallocated_amsdu_frame_buf;
-       u8 *pxmit_amsdu_frame_buf;
-       uint free_amsdu_xmitframe_cnt;
-       struct  __queue free_txagg_xmit_queue;
-       u8 *pallocated_txagg_frame_buf;
-       u8 *pxmit_txagg_frame_buf;
-       uint free_txagg_xmitframe_cnt;
-       int cmdseq;
-       struct  __queue free_xmitbuf_queue;
-       struct  __queue pending_xmitbuf_queue;
-       u8 *pallocated_xmitbuf;
-       u8 *pxmitbuf;
-       uint free_xmitbuf_cnt;
-};
-
-void r8712_free_xmitbuf(struct xmit_priv *pxmitpriv,
-                       struct xmit_buf *pxmitbuf);
-struct xmit_buf *r8712_alloc_xmitbuf(struct xmit_priv *pxmitpriv);
-void r8712_update_protection(struct _adapter *padapter, u8 *ie, uint ie_len);
-struct xmit_frame *r8712_alloc_xmitframe(struct xmit_priv *pxmitpriv);
-void r8712_free_xmitframe(struct xmit_priv *pxmitpriv,
-                         struct xmit_frame *pxmitframe);
-void r8712_free_xmitframe_queue(struct xmit_priv *pxmitpriv,
-                               struct  __queue *pframequeue);
-int r8712_xmit_classifier(struct _adapter *padapter,
-                         struct xmit_frame *pxmitframe);
-sint r8712_xmitframe_coalesce(struct _adapter *padapter, _pkt *pkt,
-                             struct xmit_frame *pxmitframe);
-sint _r8712_init_hw_txqueue(struct hw_txqueue *phw_txqueue, u8 ac_tag);
-void _r8712_init_sta_xmit_priv(struct sta_xmit_priv *psta_xmitpriv);
-int r8712_update_attrib(struct _adapter *padapter, _pkt *pkt,
-                       struct pkt_attrib *pattrib);
-int r8712_txframes_sta_ac_pending(struct _adapter *padapter,
-                                 struct pkt_attrib *pattrib);
-int _r8712_init_xmit_priv(struct xmit_priv *pxmitpriv,
-                         struct _adapter *padapter);
-void _free_xmit_priv(struct xmit_priv *pxmitpriv);
-void r8712_free_xmitframe_ex(struct xmit_priv *pxmitpriv,
-                            struct xmit_frame *pxmitframe);
-int r8712_pre_xmit(struct _adapter *padapter, struct xmit_frame *pxmitframe);
-int r8712_xmit_enqueue(struct _adapter *padapter,
-                      struct xmit_frame *pxmitframe);
-void r8712_xmit_direct(struct _adapter *padapter, struct xmit_frame *pxmitframe);
-void r8712_xmit_bh(struct tasklet_struct *t);
-
-void xmitframe_xmitbuf_attach(struct xmit_frame *pxmitframe,
-                             struct xmit_buf *pxmitbuf);
-
-#include "rtl8712_xmit.h"
-
-#endif /*_RTL871X_XMIT_H_*/
-
diff --git a/drivers/staging/rtl8712/sta_info.h b/drivers/staging/rtl8712/sta_info.h
deleted file mode 100644 (file)
index 6286c62..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __STA_INFO_H_
-#define __STA_INFO_H_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "wifi.h"
-
-#define NUM_STA 32
-#define NUM_ACL 64
-
-/* 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 wlan_acl_node {
-       struct list_head list;
-       u8       addr[ETH_ALEN];
-       u8       mode;
-};
-
-struct wlan_acl_pool {
-       struct wlan_acl_node aclnode[NUM_ACL];
-};
-
-struct stainfo_stats {
-       uint    rx_pkts;
-       uint    rx_bytes;
-       u64     tx_pkts;
-       uint    tx_bytes;
-};
-
-struct sta_info {
-       spinlock_t lock;
-       struct list_head list; /*free_sta_queue*/
-       struct list_head hash_list; /*sta_hash*/
-       struct sta_xmit_priv sta_xmitpriv;
-       struct sta_recv_priv sta_recvpriv;
-       uint state;
-       uint aid;
-       uint    mac_id;
-       uint    qos_option;
-       u8      hwaddr[ETH_ALEN];
-       uint    ieee8021x_blocked;      /*0: allowed, 1:blocked */
-       uint    XPrivacy; /*aes, tkip...*/
-       union Keytype   tkiptxmickey;
-       union Keytype   tkiprxmickey;
-       union Keytype   x_UncstKey;
-       union pn48              txpn;   /* PN48 used for Unicast xmit.*/
-       union pn48              rxpn;   /* PN48 used for Unicast recv.*/
-       u8      bssrateset[16];
-       uint    bssratelen;
-       s32  rssi;
-       s32     signal_quality;
-       struct stainfo_stats sta_stats;
-       /*for A-MPDU Rx reordering buffer control */
-       struct recv_reorder_ctrl recvreorder_ctrl[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];
-       unsigned int tx_ra_bitmap;
-};
-
-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;
-       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. */
-};
-
-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;
-}
-
-int _r8712_init_sta_priv(struct sta_priv *pstapriv);
-void _r8712_free_sta_priv(struct sta_priv *pstapriv);
-struct sta_info *r8712_alloc_stainfo(struct sta_priv *pstapriv,
-                                    u8 *hwaddr);
-void r8712_free_stainfo(struct _adapter *padapter, struct sta_info *psta);
-void r8712_free_all_stainfo(struct _adapter *padapter);
-struct sta_info *r8712_get_stainfo(struct sta_priv *pstapriv, u8 *hwaddr);
-void r8712_init_bcmc_stainfo(struct _adapter *padapter);
-struct sta_info *r8712_get_bcmc_stainfo(struct _adapter *padapter);
-u8 r8712_access_ctrl(struct wlan_acl_pool *pacl_list, u8 *mac_addr);
-
-#endif /* _STA_INFO_H_ */
-
diff --git a/drivers/staging/rtl8712/usb_halinit.c b/drivers/staging/rtl8712/usb_halinit.c
deleted file mode 100644 (file)
index 313c569..0000000
+++ /dev/null
@@ -1,307 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * usb_halinit.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _HCI_HAL_INIT_C_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "usb_ops.h"
-#include "usb_osintf.h"
-
-u8 r8712_usb_hal_bus_init(struct _adapter *adapter)
-{
-       u8 val8 = 0;
-       u8 ret = _SUCCESS;
-       int PollingCnt = 20;
-       struct registry_priv *registrypriv = &adapter->registrypriv;
-
-       if (registrypriv->chip_version == RTL8712_FPGA) {
-               val8 = 0x01;
-               /* switch to 80M clock */
-               r8712_write8(adapter, SYS_CLKR, val8);
-               val8 = r8712_read8(adapter, SPS1_CTRL);
-               val8 = val8 | 0x01;
-               /* enable VSPS12 LDO Macro block */
-               r8712_write8(adapter, SPS1_CTRL, val8);
-               val8 = r8712_read8(adapter, AFE_MISC);
-               val8 = val8 | 0x01;
-               /* Enable AFE Macro Block's Bandgap */
-               r8712_write8(adapter, AFE_MISC, val8);
-               val8 = r8712_read8(adapter, LDOA15_CTRL);
-               val8 = val8 | 0x01;
-               /* enable LDOA15 block */
-               r8712_write8(adapter, LDOA15_CTRL, val8);
-               val8 = r8712_read8(adapter, SPS1_CTRL);
-               val8 = val8 | 0x02;
-               /* Enable VSPS12_SW Macro Block */
-               r8712_write8(adapter, SPS1_CTRL, val8);
-               val8 = r8712_read8(adapter, AFE_MISC);
-               val8 = val8 | 0x02;
-               /* Enable AFE Macro Block's Mbias */
-               r8712_write8(adapter, AFE_MISC, val8);
-               val8 = r8712_read8(adapter, SYS_ISO_CTRL + 1);
-               val8 = val8 | 0x08;
-               /* isolate PCIe Analog 1.2V to PCIe 3.3V and PCIE Digital */
-               r8712_write8(adapter, SYS_ISO_CTRL + 1, val8);
-               val8 = r8712_read8(adapter, SYS_ISO_CTRL + 1);
-               val8 = val8 & 0xEF;
-               /* attach AFE PLL to MACTOP/BB/PCIe Digital */
-               r8712_write8(adapter, SYS_ISO_CTRL + 1, val8);
-               val8 = r8712_read8(adapter, AFE_XTAL_CTRL + 1);
-               val8 = val8 & 0xFB;
-               /* enable AFE clock */
-               r8712_write8(adapter, AFE_XTAL_CTRL + 1, val8);
-               val8 = r8712_read8(adapter, AFE_PLL_CTRL);
-               val8 = val8 | 0x01;
-               /* Enable AFE PLL Macro Block */
-               r8712_write8(adapter, AFE_PLL_CTRL, val8);
-               val8 = 0xEE;
-               /* release isolation AFE PLL & MD */
-               r8712_write8(adapter, SYS_ISO_CTRL, val8);
-               val8 = r8712_read8(adapter, SYS_CLKR + 1);
-               val8 = val8 | 0x08;
-               /* enable MAC clock */
-               r8712_write8(adapter, SYS_CLKR + 1, val8);
-               val8 = r8712_read8(adapter, SYS_FUNC_EN + 1);
-               val8 = val8 | 0x08;
-               /* enable Core digital and enable IOREG R/W */
-               r8712_write8(adapter, SYS_FUNC_EN + 1, val8);
-               val8 = val8 | 0x80;
-               /* enable REG_EN */
-               r8712_write8(adapter, SYS_FUNC_EN + 1, val8);
-               val8 = r8712_read8(adapter, SYS_CLKR + 1);
-               val8 = (val8 | 0x80) & 0xBF;
-               /* switch the control path */
-               r8712_write8(adapter, SYS_CLKR + 1, val8);
-               val8 = 0xFC;
-               r8712_write8(adapter, CR, val8);
-               val8 = 0x37;
-               r8712_write8(adapter, CR + 1, val8);
-               /* reduce EndPoint & init it */
-               r8712_write8(adapter, 0x102500ab, r8712_read8(adapter,
-                            0x102500ab) | BIT(6) | BIT(7));
-               /* consideration of power consumption - init */
-               r8712_write8(adapter, 0x10250008, r8712_read8(adapter,
-                            0x10250008) & 0xfffffffb);
-       } else if (registrypriv->chip_version == RTL8712_1stCUT) {
-               /* Initialization for power on sequence, */
-               r8712_write8(adapter, SPS0_CTRL + 1, 0x53);
-               r8712_write8(adapter, SPS0_CTRL, 0x57);
-               /* Enable AFE Macro Block's Bandgap and Enable AFE Macro
-                * Block's Mbias
-                */
-               val8 = r8712_read8(adapter, AFE_MISC);
-               r8712_write8(adapter, AFE_MISC, (val8 | AFE_MISC_BGEN |
-                            AFE_MISC_MBEN));
-               /* Enable LDOA15 block */
-               val8 = r8712_read8(adapter, LDOA15_CTRL);
-               r8712_write8(adapter, LDOA15_CTRL, (val8 | LDA15_EN));
-               val8 = r8712_read8(adapter, SPS1_CTRL);
-               r8712_write8(adapter, SPS1_CTRL, (val8 | SPS1_LDEN));
-               msleep(20);
-               /* Enable Switch Regulator Block */
-               val8 = r8712_read8(adapter, SPS1_CTRL);
-               r8712_write8(adapter, SPS1_CTRL, (val8 | SPS1_SWEN));
-               r8712_write32(adapter, SPS1_CTRL, 0x00a7b267);
-               val8 = r8712_read8(adapter, SYS_ISO_CTRL + 1);
-               r8712_write8(adapter, SYS_ISO_CTRL + 1, (val8 | 0x08));
-               /* Engineer Packet CP test Enable */
-               val8 = r8712_read8(adapter, SYS_FUNC_EN + 1);
-               r8712_write8(adapter, SYS_FUNC_EN + 1, (val8 | 0x20));
-               val8 = r8712_read8(adapter, SYS_ISO_CTRL + 1);
-               r8712_write8(adapter, SYS_ISO_CTRL + 1, (val8 & 0x6F));
-               /* Enable AFE clock */
-               val8 = r8712_read8(adapter, AFE_XTAL_CTRL + 1);
-               r8712_write8(adapter, AFE_XTAL_CTRL + 1, (val8 & 0xfb));
-               /* Enable AFE PLL Macro Block */
-               val8 = r8712_read8(adapter, AFE_PLL_CTRL);
-               r8712_write8(adapter, AFE_PLL_CTRL, (val8 | 0x11));
-               /* Attach AFE PLL to MACTOP/BB/PCIe Digital */
-               val8 = r8712_read8(adapter, SYS_ISO_CTRL);
-               r8712_write8(adapter, SYS_ISO_CTRL, (val8 & 0xEE));
-               /* Switch to 40M clock */
-               val8 = r8712_read8(adapter, SYS_CLKR);
-               r8712_write8(adapter, SYS_CLKR, val8 & (~SYS_CLKSEL));
-               /* SSC Disable */
-               val8 = r8712_read8(adapter, SYS_CLKR);
-               /* Enable MAC clock */
-               val8 = r8712_read8(adapter, SYS_CLKR + 1);
-               r8712_write8(adapter, SYS_CLKR + 1, (val8 | 0x18));
-               /* Revised POS, */
-               r8712_write8(adapter, PMC_FSM, 0x02);
-               /* Enable Core digital and enable IOREG R/W */
-               val8 = r8712_read8(adapter, SYS_FUNC_EN + 1);
-               r8712_write8(adapter, SYS_FUNC_EN + 1, (val8 | 0x08));
-               /* Enable REG_EN */
-               val8 = r8712_read8(adapter, SYS_FUNC_EN + 1);
-               r8712_write8(adapter, SYS_FUNC_EN + 1, (val8 | 0x80));
-               /* Switch the control path to FW */
-               val8 = r8712_read8(adapter, SYS_CLKR + 1);
-               r8712_write8(adapter, SYS_CLKR + 1, (val8 | 0x80) & 0xBF);
-               r8712_write8(adapter, CR, 0xFC);
-               r8712_write8(adapter, CR + 1, 0x37);
-               /* Fix the RX FIFO issue(usb error), */
-               val8 = r8712_read8(adapter, 0x1025FE5c);
-               r8712_write8(adapter, 0x1025FE5c, (val8 | BIT(7)));
-               val8 = r8712_read8(adapter, 0x102500ab);
-               r8712_write8(adapter, 0x102500ab, (val8 | BIT(6) | BIT(7)));
-               /* For power save, used this in the bit file after 970621 */
-               val8 = r8712_read8(adapter, SYS_CLKR);
-               r8712_write8(adapter, SYS_CLKR, val8 & (~CPU_CLKSEL));
-       } else if (registrypriv->chip_version == RTL8712_2ndCUT ||
-                  registrypriv->chip_version == RTL8712_3rdCUT) {
-               /* Initialization for power on sequence,
-                * E-Fuse leakage prevention sequence
-                */
-               r8712_write8(adapter, 0x37, 0xb0);
-               msleep(20);
-               r8712_write8(adapter, 0x37, 0x30);
-               /* Set control path switch to HW control and reset Digital Core,
-                * CPU Core and MAC I/O to solve FW download fail when system
-                * from resume sate.
-                */
-               val8 = r8712_read8(adapter, SYS_CLKR + 1);
-               if (val8 & 0x80) {
-                       val8 &= 0x3f;
-                       r8712_write8(adapter, SYS_CLKR + 1, val8);
-               }
-               val8 = r8712_read8(adapter, SYS_FUNC_EN + 1);
-               val8 &= 0x73;
-               r8712_write8(adapter, SYS_FUNC_EN + 1, val8);
-               msleep(20);
-               /* Revised POS, */
-               /* Enable AFE Macro Block's Bandgap and Enable AFE Macro
-                * Block's Mbias
-                */
-               r8712_write8(adapter, SPS0_CTRL + 1, 0x53);
-               r8712_write8(adapter, SPS0_CTRL, 0x57);
-               val8 = r8712_read8(adapter, AFE_MISC);
-               /*Bandgap*/
-               r8712_write8(adapter, AFE_MISC, (val8 | AFE_MISC_BGEN));
-               r8712_write8(adapter, AFE_MISC, (val8 | AFE_MISC_BGEN |
-                            AFE_MISC_MBEN | AFE_MISC_I32_EN));
-               /* Enable PLL Power (LDOA15V) */
-               val8 = r8712_read8(adapter, LDOA15_CTRL);
-               r8712_write8(adapter, LDOA15_CTRL, (val8 | LDA15_EN));
-               /* Enable LDOV12D block */
-               val8 = r8712_read8(adapter, LDOV12D_CTRL);
-               r8712_write8(adapter, LDOV12D_CTRL, (val8 | LDV12_EN));
-               val8 = r8712_read8(adapter, SYS_ISO_CTRL + 1);
-               r8712_write8(adapter, SYS_ISO_CTRL + 1, (val8 | 0x08));
-               /* Engineer Packet CP test Enable */
-               val8 = r8712_read8(adapter, SYS_FUNC_EN + 1);
-               r8712_write8(adapter, SYS_FUNC_EN + 1, (val8 | 0x20));
-               /* Support 64k IMEM */
-               val8 = r8712_read8(adapter, SYS_ISO_CTRL + 1);
-               r8712_write8(adapter, SYS_ISO_CTRL + 1, (val8 & 0x68));
-               /* Enable AFE clock */
-               val8 = r8712_read8(adapter, AFE_XTAL_CTRL + 1);
-               r8712_write8(adapter, AFE_XTAL_CTRL + 1, (val8 & 0xfb));
-               /* Enable AFE PLL Macro Block */
-               val8 = r8712_read8(adapter, AFE_PLL_CTRL);
-               r8712_write8(adapter, AFE_PLL_CTRL, (val8 | 0x11));
-               /* Some sample will download fw failure. The clock will be
-                * stable with 500 us delay after reset the PLL
-                * TODO: When usleep is added to kernel, change next 3
-                * udelay(500) to usleep(500)
-                */
-               udelay(500);
-               r8712_write8(adapter, AFE_PLL_CTRL, (val8 | 0x51));
-               udelay(500);
-               r8712_write8(adapter, AFE_PLL_CTRL, (val8 | 0x11));
-               udelay(500);
-               /* Attach AFE PLL to MACTOP/BB/PCIe Digital */
-               val8 = r8712_read8(adapter, SYS_ISO_CTRL);
-               r8712_write8(adapter, SYS_ISO_CTRL, (val8 & 0xEE));
-               /* Switch to 40M clock */
-               r8712_write8(adapter, SYS_CLKR, 0x00);
-               /* CPU Clock and 80M Clock SSC Disable to overcome FW download
-                * fail timing issue.
-                */
-               val8 = r8712_read8(adapter, SYS_CLKR);
-               r8712_write8(adapter, SYS_CLKR, (val8 | 0xa0));
-               /* Enable MAC clock */
-               val8 = r8712_read8(adapter, SYS_CLKR + 1);
-               r8712_write8(adapter, SYS_CLKR + 1, (val8 | 0x18));
-               /* Revised POS, */
-               r8712_write8(adapter, PMC_FSM, 0x02);
-               /* Enable Core digital and enable IOREG R/W */
-               val8 = r8712_read8(adapter, SYS_FUNC_EN + 1);
-               r8712_write8(adapter, SYS_FUNC_EN + 1, (val8 | 0x08));
-               /* Enable REG_EN */
-               val8 = r8712_read8(adapter, SYS_FUNC_EN + 1);
-               r8712_write8(adapter, SYS_FUNC_EN + 1, (val8 | 0x80));
-               /* Switch the control path to FW */
-               val8 = r8712_read8(adapter, SYS_CLKR + 1);
-               r8712_write8(adapter, SYS_CLKR + 1, (val8 | 0x80) & 0xBF);
-               r8712_write8(adapter, CR, 0xFC);
-               r8712_write8(adapter, CR + 1, 0x37);
-               /* Fix the RX FIFO issue(usb error), 970410 */
-               val8 = r8712_read8(adapter, 0x1025FE5c);
-               r8712_write8(adapter, 0x1025FE5c, (val8 | BIT(7)));
-               /* For power save, used this in the bit file after 970621 */
-               val8 = r8712_read8(adapter, SYS_CLKR);
-               r8712_write8(adapter, SYS_CLKR, val8 & (~CPU_CLKSEL));
-               /* Revised for 8051 ROM code wrong operation. */
-               r8712_write8(adapter, 0x1025fe1c, 0x80);
-               /* To make sure that TxDMA can ready to download FW.
-                * We should reset TxDMA if IMEM RPT was not ready.
-                */
-               do {
-                       val8 = r8712_read8(adapter, TCR);
-                       if ((val8 & _TXDMA_INIT_VALUE) == _TXDMA_INIT_VALUE)
-                               break;
-                       udelay(5); /* PlatformStallExecution(5); */
-               } while (PollingCnt--); /* Delay 1ms */
-
-               if (PollingCnt <= 0) {
-                       val8 = r8712_read8(adapter, CR);
-                       r8712_write8(adapter, CR, val8 & (~_TXDMA_EN));
-                       udelay(2); /* PlatformStallExecution(2); */
-                       /* Reset TxDMA */
-                       r8712_write8(adapter, CR, val8 | _TXDMA_EN);
-               }
-       } else {
-               ret = _FAIL;
-       }
-       return ret;
-}
-
-unsigned int r8712_usb_inirp_init(struct _adapter *adapter)
-{
-       u8 i;
-       struct recv_buf *recvbuf;
-       struct intf_hdl *intfhdl = &adapter->pio_queue->intf;
-       struct recv_priv *recvpriv = &(adapter->recvpriv);
-
-       recvpriv->ff_hwaddr = RTL8712_DMA_RX0FF; /* mapping rx fifo address */
-       /* issue Rx irp to receive data */
-       recvbuf = (struct recv_buf *)recvpriv->precv_buf;
-       for (i = 0; i < NR_RECVBUFF; i++) {
-               if (r8712_usb_read_port(intfhdl, recvpriv->ff_hwaddr, 0,
-                                       (unsigned char *)recvbuf) == false)
-                       return _FAIL;
-               recvbuf++;
-               recvpriv->free_recv_buf_queue_cnt--;
-       }
-       return _SUCCESS;
-}
-
-unsigned int r8712_usb_inirp_deinit(struct _adapter *adapter)
-{
-       r8712_usb_read_port_cancel(adapter);
-       return _SUCCESS;
-}
diff --git a/drivers/staging/rtl8712/usb_intf.c b/drivers/staging/rtl8712/usb_intf.c
deleted file mode 100644 (file)
index df05213..0000000
+++ /dev/null
@@ -1,638 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * usb_intf.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _HCI_INTF_C_
-
-#include <linux/usb.h>
-#include <linux/module.h>
-#include <linux/firmware.h>
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "recv_osdep.h"
-#include "xmit_osdep.h"
-#include "rtl8712_efuse.h"
-#include "usb_ops.h"
-#include "usb_osintf.h"
-
-static struct usb_interface *pintf;
-
-static int r871xu_drv_init(struct usb_interface *pusb_intf,
-                          const struct usb_device_id *pdid);
-
-static void r871xu_dev_remove(struct usb_interface *pusb_intf);
-
-static const struct usb_device_id rtl871x_usb_id_tbl[] = {
-/* RTL8188SU */
-       /* Realtek */
-       {USB_DEVICE(0x0BDA, 0x8171)},
-       {USB_DEVICE(0x0bda, 0x8173)},
-       {USB_DEVICE(0x0bda, 0x8712)},
-       {USB_DEVICE(0x0bda, 0x8713)},
-       {USB_DEVICE(0x0bda, 0xC512)},
-       /* Abocom */
-       {USB_DEVICE(0x07B8, 0x8188)},
-       /* ASUS */
-       {USB_DEVICE(0x0B05, 0x1786)},
-       {USB_DEVICE(0x0B05, 0x1791)}, /* 11n mode disable */
-       /* Belkin */
-       {USB_DEVICE(0x050D, 0x945A)},
-       /* ISY IWL - Belkin clone */
-       {USB_DEVICE(0x050D, 0x11F1)},
-       /* Corega */
-       {USB_DEVICE(0x07AA, 0x0047)},
-       /* D-Link */
-       {USB_DEVICE(0x2001, 0x3306)},
-       {USB_DEVICE(0x07D1, 0x3306)}, /* 11n mode disable */
-       /* Edimax */
-       {USB_DEVICE(0x7392, 0x7611)},
-       /* EnGenius */
-       {USB_DEVICE(0x1740, 0x9603)},
-       /* Hawking */
-       {USB_DEVICE(0x0E66, 0x0016)},
-       /* Hercules */
-       {USB_DEVICE(0x06F8, 0xE034)},
-       {USB_DEVICE(0x06F8, 0xE032)},
-       /* Logitec */
-       {USB_DEVICE(0x0789, 0x0167)},
-       /* PCI */
-       {USB_DEVICE(0x2019, 0xAB28)},
-       {USB_DEVICE(0x2019, 0xED16)},
-       /* Sitecom */
-       {USB_DEVICE(0x0DF6, 0x0057)},
-       {USB_DEVICE(0x0DF6, 0x0045)},
-       {USB_DEVICE(0x0DF6, 0x0059)}, /* 11n mode disable */
-       {USB_DEVICE(0x0DF6, 0x004B)},
-       {USB_DEVICE(0x0DF6, 0x005B)},
-       {USB_DEVICE(0x0DF6, 0x005D)},
-       {USB_DEVICE(0x0DF6, 0x0063)},
-       /* Sweex */
-       {USB_DEVICE(0x177F, 0x0154)},
-       /* Thinkware */
-       {USB_DEVICE(0x0BDA, 0x5077)},
-       /* Toshiba */
-       {USB_DEVICE(0x1690, 0x0752)},
-       /* - */
-       {USB_DEVICE(0x20F4, 0x646B)},
-       {USB_DEVICE(0x083A, 0xC512)},
-       {USB_DEVICE(0x25D4, 0x4CA1)},
-       {USB_DEVICE(0x25D4, 0x4CAB)},
-
-/* RTL8191SU */
-       /* Realtek */
-       {USB_DEVICE(0x0BDA, 0x8172)},
-       {USB_DEVICE(0x0BDA, 0x8192)},
-       /* Amigo */
-       {USB_DEVICE(0x0EB0, 0x9061)},
-       /* ASUS/EKB */
-       {USB_DEVICE(0x13D3, 0x3323)},
-       {USB_DEVICE(0x13D3, 0x3311)}, /* 11n mode disable */
-       {USB_DEVICE(0x13D3, 0x3342)},
-       /* ASUS/EKBLenovo */
-       {USB_DEVICE(0x13D3, 0x3333)},
-       {USB_DEVICE(0x13D3, 0x3334)},
-       {USB_DEVICE(0x13D3, 0x3335)}, /* 11n mode disable */
-       {USB_DEVICE(0x13D3, 0x3336)}, /* 11n mode disable */
-       /* ASUS/Media BOX */
-       {USB_DEVICE(0x13D3, 0x3309)},
-       /* Belkin */
-       {USB_DEVICE(0x050D, 0x815F)},
-       /* D-Link */
-       {USB_DEVICE(0x07D1, 0x3302)},
-       {USB_DEVICE(0x07D1, 0x3300)},
-       {USB_DEVICE(0x07D1, 0x3303)},
-       /* Edimax */
-       {USB_DEVICE(0x7392, 0x7612)},
-       /* EnGenius */
-       {USB_DEVICE(0x1740, 0x9605)},
-       /* Guillemot */
-       {USB_DEVICE(0x06F8, 0xE031)},
-       /* Hawking */
-       {USB_DEVICE(0x0E66, 0x0015)},
-       /* Mediao */
-       {USB_DEVICE(0x13D3, 0x3306)},
-       /* PCI */
-       {USB_DEVICE(0x2019, 0xED18)},
-       {USB_DEVICE(0x2019, 0x4901)},
-       /* Sitecom */
-       {USB_DEVICE(0x0DF6, 0x0058)},
-       {USB_DEVICE(0x0DF6, 0x0049)},
-       {USB_DEVICE(0x0DF6, 0x004C)},
-       {USB_DEVICE(0x0DF6, 0x006C)},
-       {USB_DEVICE(0x0DF6, 0x0064)},
-       /* Skyworth */
-       {USB_DEVICE(0x14b2, 0x3300)},
-       {USB_DEVICE(0x14b2, 0x3301)},
-       {USB_DEVICE(0x14B2, 0x3302)},
-       /* - */
-       {USB_DEVICE(0x04F2, 0xAFF2)},
-       {USB_DEVICE(0x04F2, 0xAFF5)},
-       {USB_DEVICE(0x04F2, 0xAFF6)},
-       {USB_DEVICE(0x13D3, 0x3339)},
-       {USB_DEVICE(0x13D3, 0x3340)}, /* 11n mode disable */
-       {USB_DEVICE(0x13D3, 0x3341)}, /* 11n mode disable */
-       {USB_DEVICE(0x13D3, 0x3310)},
-       {USB_DEVICE(0x13D3, 0x3325)},
-
-/* RTL8192SU */
-       /* Realtek */
-       {USB_DEVICE(0x0BDA, 0x8174)},
-       /* Belkin */
-       {USB_DEVICE(0x050D, 0x845A)},
-       /* Corega */
-       {USB_DEVICE(0x07AA, 0x0051)},
-       /* Edimax */
-       {USB_DEVICE(0x7392, 0x7622)},
-       /* NEC */
-       {USB_DEVICE(0x0409, 0x02B6)},
-       {}
-};
-
-MODULE_DEVICE_TABLE(usb, rtl871x_usb_id_tbl);
-
-static struct specific_device_id specific_device_id_tbl[] = {
-       {.idVendor = 0x0b05, .idProduct = 0x1791,
-                .flags = SPEC_DEV_ID_DISABLE_HT},
-       {.idVendor = 0x0df6, .idProduct = 0x0059,
-                .flags = SPEC_DEV_ID_DISABLE_HT},
-       {.idVendor = 0x13d3, .idProduct = 0x3306,
-                .flags = SPEC_DEV_ID_DISABLE_HT},
-       {.idVendor = 0x13D3, .idProduct = 0x3311,
-                .flags = SPEC_DEV_ID_DISABLE_HT},
-       {.idVendor = 0x13d3, .idProduct = 0x3335,
-                .flags = SPEC_DEV_ID_DISABLE_HT},
-       {.idVendor = 0x13d3, .idProduct = 0x3336,
-                .flags = SPEC_DEV_ID_DISABLE_HT},
-       {.idVendor = 0x13d3, .idProduct = 0x3340,
-                .flags = SPEC_DEV_ID_DISABLE_HT},
-       {.idVendor = 0x13d3, .idProduct = 0x3341,
-                .flags = SPEC_DEV_ID_DISABLE_HT},
-       {}
-};
-
-struct drv_priv {
-       struct usb_driver r871xu_drv;
-       int drv_registered;
-};
-
-#ifdef CONFIG_PM
-static int r871x_suspend(struct usb_interface *pusb_intf, pm_message_t state)
-{
-       struct net_device *pnetdev = usb_get_intfdata(pusb_intf);
-       struct _adapter *padapter = netdev_priv(pnetdev);
-
-       netdev_info(pnetdev, "Suspending...\n");
-       padapter->suspended = true;
-       rtl871x_intf_stop(padapter);
-       if (pnetdev->netdev_ops->ndo_stop)
-               pnetdev->netdev_ops->ndo_stop(pnetdev);
-       mdelay(10);
-       netif_device_detach(pnetdev);
-       return 0;
-}
-
-static void rtl871x_intf_resume(struct _adapter *padapter)
-{
-       if (padapter->dvobjpriv.inirp_init)
-               padapter->dvobjpriv.inirp_init(padapter);
-}
-
-static int r871x_resume(struct usb_interface *pusb_intf)
-{
-       struct net_device *pnetdev = usb_get_intfdata(pusb_intf);
-       struct _adapter *padapter = netdev_priv(pnetdev);
-
-       netdev_info(pnetdev,  "Resuming...\n");
-       netif_device_attach(pnetdev);
-       if (pnetdev->netdev_ops->ndo_open)
-               pnetdev->netdev_ops->ndo_open(pnetdev);
-       padapter->suspended = false;
-       rtl871x_intf_resume(padapter);
-       return 0;
-}
-#endif
-
-static struct drv_priv drvpriv = {
-       .r871xu_drv.name = "r8712u",
-       .r871xu_drv.id_table = rtl871x_usb_id_tbl,
-       .r871xu_drv.probe = r871xu_drv_init,
-       .r871xu_drv.disconnect = r871xu_dev_remove,
-#ifdef CONFIG_PM
-       .r871xu_drv.suspend = r871x_suspend,
-       .r871xu_drv.resume = r871x_resume,
-#endif
-};
-
-static uint r8712_usb_dvobj_init(struct _adapter *padapter)
-{
-       uint    status = _SUCCESS;
-       struct  usb_host_interface              *phost_iface;
-       struct  usb_interface_descriptor        *piface_desc;
-       struct dvobj_priv *pdvobjpriv = &padapter->dvobjpriv;
-       struct usb_device *pusbd = pdvobjpriv->pusbdev;
-
-       pdvobjpriv->padapter = padapter;
-       padapter->eeprom_address_size = 6;
-       phost_iface = pintf->cur_altsetting;
-       piface_desc = &phost_iface->desc;
-       pdvobjpriv->nr_endpoint = piface_desc->bNumEndpoints;
-       if (pusbd->speed == USB_SPEED_HIGH) {
-               pdvobjpriv->ishighspeed = true;
-               dev_info(&pusbd->dev, "r8712u: USB_SPEED_HIGH with %d endpoints\n",
-                        pdvobjpriv->nr_endpoint);
-       } else {
-               pdvobjpriv->ishighspeed = false;
-               dev_info(&pusbd->dev, "r8712u: USB_SPEED_LOW with %d endpoints\n",
-                        pdvobjpriv->nr_endpoint);
-       }
-       if ((r8712_alloc_io_queue(padapter)) == _FAIL)
-               status = _FAIL;
-       return status;
-}
-
-static void r8712_usb_dvobj_deinit(struct _adapter *padapter)
-{
-       r8712_free_io_queue(padapter);
-}
-
-void rtl871x_intf_stop(struct _adapter *padapter)
-{
-       /*disable_hw_interrupt*/
-       if (!padapter->surprise_removed) {
-               /*device still exists, so driver can do i/o operation
-                * TODO:
-                */
-       }
-
-       /* cancel in irp */
-       if (padapter->dvobjpriv.inirp_deinit)
-               padapter->dvobjpriv.inirp_deinit(padapter);
-       /* cancel out irp */
-       r8712_usb_write_port_cancel(padapter);
-       /* TODO:cancel other irps */
-}
-
-void r871x_dev_unload(struct _adapter *padapter)
-{
-       if (padapter->bup) {
-               /*s1.*/
-               padapter->driver_stopped = true;
-
-               /*s3.*/
-               rtl871x_intf_stop(padapter);
-
-               /*s4.*/
-               r8712_stop_drv_threads(padapter);
-
-               /*s5.*/
-               if (!padapter->surprise_removed) {
-                       padapter->hw_init_completed = false;
-                       rtl8712_hal_deinit(padapter);
-               }
-
-               padapter->bup = false;
-       }
-}
-
-static void disable_ht_for_spec_devid(const struct usb_device_id *pdid,
-                                     struct _adapter *padapter)
-{
-       u16 vid, pid;
-       u32 flags;
-       int i;
-       int num = ARRAY_SIZE(specific_device_id_tbl);
-
-       for (i = 0; i < num; i++) {
-               vid = specific_device_id_tbl[i].idVendor;
-               pid = specific_device_id_tbl[i].idProduct;
-               flags = specific_device_id_tbl[i].flags;
-
-               if ((pdid->idVendor == vid) && (pdid->idProduct == pid) &&
-                   (flags & SPEC_DEV_ID_DISABLE_HT)) {
-                       padapter->registrypriv.ht_enable = 0;
-                       padapter->registrypriv.cbw40_enable = 0;
-                       padapter->registrypriv.ampdu_enable = 0;
-               }
-       }
-}
-
-static const struct device_type wlan_type = {
-       .name = "wlan",
-};
-
-/*
- * 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 r871xu_drv_init(struct usb_interface *pusb_intf,
-                          const struct usb_device_id *pdid)
-{
-       uint status;
-       struct _adapter *padapter = NULL;
-       struct dvobj_priv *pdvobjpriv;
-       struct net_device *pnetdev;
-       struct usb_device *udev;
-
-       /* In this probe function, O.S. will provide the usb interface pointer
-        * to driver. We have to increase the reference count of the usb device
-        * structure by using the usb_get_dev function.
-        */
-       udev = interface_to_usbdev(pusb_intf);
-       usb_get_dev(udev);
-       pintf = pusb_intf;
-       /* step 1. */
-       pnetdev = r8712_init_netdev();
-       if (!pnetdev)
-               goto put_dev;
-       padapter = netdev_priv(pnetdev);
-       disable_ht_for_spec_devid(pdid, padapter);
-       pdvobjpriv = &padapter->dvobjpriv;
-       pdvobjpriv->padapter = padapter;
-       padapter->dvobjpriv.pusbdev = udev;
-       padapter->pusb_intf = pusb_intf;
-       usb_set_intfdata(pusb_intf, pnetdev);
-       SET_NETDEV_DEV(pnetdev, &pusb_intf->dev);
-       pnetdev->dev.type = &wlan_type;
-       /* step 2. */
-       padapter->dvobj_init = r8712_usb_dvobj_init;
-       padapter->dvobj_deinit = r8712_usb_dvobj_deinit;
-       padapter->halpriv.hal_bus_init = r8712_usb_hal_bus_init;
-       padapter->dvobjpriv.inirp_init = r8712_usb_inirp_init;
-       padapter->dvobjpriv.inirp_deinit = r8712_usb_inirp_deinit;
-       /* step 3.
-        * initialize the dvobj_priv
-        */
-
-       status = padapter->dvobj_init(padapter);
-       if (status != _SUCCESS)
-               goto free_netdev;
-
-       /* step 4. */
-       status = r8712_init_drv_sw(padapter);
-       if (status)
-               goto dvobj_deinit;
-       /* step 5. read efuse/eeprom data and get mac_addr */
-       {
-               int i, offset;
-               u8 mac[6];
-               u8 tmpU1b, AutoloadFail, eeprom_CustomerID;
-               u8 *pdata = padapter->eeprompriv.efuse_eeprom_data;
-
-               tmpU1b = r8712_read8(padapter, EE_9346CR);/*CR9346*/
-
-               /* To check system boot selection.*/
-               dev_info(&udev->dev, "r8712u: Boot from %s: Autoload %s\n",
-                        (tmpU1b & _9356SEL) ? "EEPROM" : "EFUSE",
-                        (tmpU1b & _EEPROM_EN) ? "OK" : "Failed");
-
-               /* To check autoload success or not.*/
-               if (tmpU1b & _EEPROM_EN) {
-                       AutoloadFail = true;
-                       /* The following operations prevent Efuse leakage by
-                        * turning on 2.5V.
-                        */
-                       tmpU1b = r8712_read8(padapter, EFUSE_TEST + 3);
-                       r8712_write8(padapter, EFUSE_TEST + 3, tmpU1b | 0x80);
-                       msleep(20);
-                       r8712_write8(padapter, EFUSE_TEST + 3,
-                                    (tmpU1b & (~BIT(7))));
-
-                       /* Retrieve Chip version.
-                        * Recognize IC version by Reg0x4 BIT15.
-                        */
-                       tmpU1b = (u8)((r8712_read32(padapter, PMC_FSM) >> 15) &
-                                                   0x1F);
-                       if (tmpU1b == 0x3)
-                               padapter->registrypriv.chip_version =
-                                    RTL8712_3rdCUT;
-                       else
-                               padapter->registrypriv.chip_version =
-                                    (tmpU1b >> 1) + 1;
-                       switch (padapter->registrypriv.chip_version) {
-                       case RTL8712_1stCUT:
-                       case RTL8712_2ndCUT:
-                       case RTL8712_3rdCUT:
-                               break;
-                       default:
-                               padapter->registrypriv.chip_version =
-                                    RTL8712_2ndCUT;
-                               break;
-                       }
-
-                       for (i = 0, offset = 0; i < 128; i += 8, offset++)
-                               r8712_efuse_pg_packet_read(padapter, offset,
-                                                    &pdata[i]);
-
-                       if (!r8712_initmac || !mac_pton(r8712_initmac, mac)) {
-                               /* Use the mac address stored in the Efuse
-                                * offset = 0x12 for usb in efuse
-                                */
-                               ether_addr_copy(mac, &pdata[0x12]);
-                       }
-                       eeprom_CustomerID = pdata[0x52];
-                       switch (eeprom_CustomerID) {
-                       case EEPROM_CID_ALPHA:
-                               padapter->eeprompriv.CustomerID =
-                                                RT_CID_819x_ALPHA;
-                               break;
-                       case EEPROM_CID_CAMEO:
-                               padapter->eeprompriv.CustomerID =
-                                                RT_CID_819x_CAMEO;
-                               break;
-                       case EEPROM_CID_SITECOM:
-                               padapter->eeprompriv.CustomerID =
-                                                RT_CID_819x_Sitecom;
-                               break;
-                       case EEPROM_CID_COREGA:
-                               padapter->eeprompriv.CustomerID =
-                                                RT_CID_COREGA;
-                               break;
-                       case EEPROM_CID_Senao:
-                               padapter->eeprompriv.CustomerID =
-                                                RT_CID_819x_Senao;
-                               break;
-                       case EEPROM_CID_EDIMAX_BELKIN:
-                               padapter->eeprompriv.CustomerID =
-                                                RT_CID_819x_Edimax_Belkin;
-                               break;
-                       case EEPROM_CID_SERCOMM_BELKIN:
-                               padapter->eeprompriv.CustomerID =
-                                                RT_CID_819x_Sercomm_Belkin;
-                               break;
-                       case EEPROM_CID_WNC_COREGA:
-                               padapter->eeprompriv.CustomerID =
-                                                RT_CID_819x_WNC_COREGA;
-                               break;
-                       case EEPROM_CID_WHQL:
-                               break;
-                       case EEPROM_CID_NetCore:
-                               padapter->eeprompriv.CustomerID =
-                                                RT_CID_819x_Netcore;
-                               break;
-                       case EEPROM_CID_CAMEO1:
-                               padapter->eeprompriv.CustomerID =
-                                                RT_CID_819x_CAMEO1;
-                               break;
-                       case EEPROM_CID_CLEVO:
-                               padapter->eeprompriv.CustomerID =
-                                                RT_CID_819x_CLEVO;
-                               break;
-                       default:
-                               padapter->eeprompriv.CustomerID =
-                                                RT_CID_DEFAULT;
-                               break;
-                       }
-                       dev_info(&udev->dev, "r8712u: CustomerID = 0x%.4x\n",
-                                padapter->eeprompriv.CustomerID);
-                       /* Led mode */
-                       switch (padapter->eeprompriv.CustomerID) {
-                       case RT_CID_DEFAULT:
-                       case RT_CID_819x_ALPHA:
-                       case RT_CID_819x_CAMEO:
-                               padapter->ledpriv.LedStrategy = SW_LED_MODE1;
-                               padapter->ledpriv.bRegUseLed = true;
-                               break;
-                       case RT_CID_819x_Sitecom:
-                               padapter->ledpriv.LedStrategy = SW_LED_MODE2;
-                               padapter->ledpriv.bRegUseLed = true;
-                               break;
-                       case RT_CID_COREGA:
-                       case RT_CID_819x_Senao:
-                               padapter->ledpriv.LedStrategy = SW_LED_MODE3;
-                               padapter->ledpriv.bRegUseLed = true;
-                               break;
-                       case RT_CID_819x_Edimax_Belkin:
-                               padapter->ledpriv.LedStrategy = SW_LED_MODE4;
-                               padapter->ledpriv.bRegUseLed = true;
-                               break;
-                       case RT_CID_819x_Sercomm_Belkin:
-                               padapter->ledpriv.LedStrategy = SW_LED_MODE5;
-                               padapter->ledpriv.bRegUseLed = true;
-                               break;
-                       case RT_CID_819x_WNC_COREGA:
-                               padapter->ledpriv.LedStrategy = SW_LED_MODE6;
-                               padapter->ledpriv.bRegUseLed = true;
-                               break;
-                       default:
-                               padapter->ledpriv.LedStrategy = SW_LED_MODE0;
-                               padapter->ledpriv.bRegUseLed = false;
-                               break;
-                       }
-               } else {
-                       AutoloadFail = false;
-               }
-               if ((!AutoloadFail) ||
-                   ((mac[0] == 0xff) && (mac[1] == 0xff) &&
-                    (mac[2] == 0xff) && (mac[3] == 0xff) &&
-                    (mac[4] == 0xff) && (mac[5] == 0xff)) ||
-                   ((mac[0] == 0x00) && (mac[1] == 0x00) &&
-                    (mac[2] == 0x00) && (mac[3] == 0x00) &&
-                    (mac[4] == 0x00) && (mac[5] == 0x00))) {
-                       mac[0] = 0x00;
-                       mac[1] = 0xe0;
-                       mac[2] = 0x4c;
-                       mac[3] = 0x87;
-                       mac[4] = 0x00;
-                       mac[5] = 0x00;
-               }
-               if (r8712_initmac) {
-                       /* Make sure the user did not select a multicast
-                        * address by setting bit 1 of first octet.
-                        */
-                       mac[0] &= 0xFE;
-                       dev_info(&udev->dev,
-                               "r8712u: MAC Address from user = %pM\n", mac);
-               } else {
-                       dev_info(&udev->dev,
-                               "r8712u: MAC Address from efuse = %pM\n", mac);
-               }
-               eth_hw_addr_set(pnetdev, mac);
-       }
-       /* step 6. Load the firmware asynchronously */
-       if (rtl871x_load_fw(padapter))
-               goto deinit_drv_sw;
-       init_completion(&padapter->rx_filter_ready);
-       return 0;
-
-deinit_drv_sw:
-       r8712_free_drv_sw(padapter);
-dvobj_deinit:
-       padapter->dvobj_deinit(padapter);
-free_netdev:
-       free_netdev(pnetdev);
-put_dev:
-       usb_put_dev(udev);
-       usb_set_intfdata(pusb_intf, NULL);
-       return -ENODEV;
-}
-
-/* rmmod module & unplug(SurpriseRemoved) will call r871xu_dev_remove()
- * => how to recognize both
- */
-static void r871xu_dev_remove(struct usb_interface *pusb_intf)
-{
-       struct net_device *pnetdev = usb_get_intfdata(pusb_intf);
-       struct usb_device *udev = interface_to_usbdev(pusb_intf);
-       struct _adapter *padapter = netdev_priv(pnetdev);
-
-       /* never exit with a firmware callback pending */
-       wait_for_completion(&padapter->rtl8712_fw_ready);
-       if (pnetdev->reg_state != NETREG_UNINITIALIZED)
-               unregister_netdev(pnetdev); /* will call netdev_close() */
-       usb_set_intfdata(pusb_intf, NULL);
-       release_firmware(padapter->fw);
-       if (drvpriv.drv_registered)
-               padapter->surprise_removed = true;
-       r8712_flush_rwctrl_works(padapter);
-       r8712_flush_led_works(padapter);
-       udelay(1);
-       /* Stop driver mlme relation timer */
-       r8712_stop_drv_timers(padapter);
-       r871x_dev_unload(padapter);
-       if (padapter->dvobj_deinit)
-               padapter->dvobj_deinit(padapter);
-       r8712_free_drv_sw(padapter);
-       free_netdev(pnetdev);
-
-       /* decrease the reference count of the usb device structure
-        * when disconnect
-        */
-       usb_put_dev(udev);
-
-       /* If we didn't unplug usb dongle and remove/insert module, driver
-        * fails on sitesurvey for the first time when device is up.
-        * Reset usb port for sitesurvey fail issue.
-        */
-       if (udev->state != USB_STATE_NOTATTACHED)
-               usb_reset_device(udev);
-}
-
-static int __init r8712u_drv_entry(void)
-{
-       drvpriv.drv_registered = true;
-       return usb_register(&drvpriv.r871xu_drv);
-}
-
-static void __exit r8712u_drv_halt(void)
-{
-       drvpriv.drv_registered = false;
-       usb_deregister(&drvpriv.r871xu_drv);
-}
-
-module_init(r8712u_drv_entry);
-module_exit(r8712u_drv_halt);
diff --git a/drivers/staging/rtl8712/usb_ops.c b/drivers/staging/rtl8712/usb_ops.c
deleted file mode 100644 (file)
index af9966d..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * usb_ops.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _HCI_OPS_C_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "osdep_intf.h"
-#include "usb_ops.h"
-#include "recv_osdep.h"
-
-static u8 usb_read8(struct intf_hdl *intfhdl, u32 addr)
-{
-       u8 request;
-       u8 requesttype;
-       u16 wvalue;
-       u16 index;
-       u16 len;
-       int status;
-       __le32 data = 0;
-       struct intf_priv *intfpriv = intfhdl->pintfpriv;
-
-       request = 0x05;
-       requesttype = 0x01; /* read_in */
-       index = 0;
-       wvalue = (u16)(addr & 0x0000ffff);
-       len = 1;
-       status = r8712_usbctrl_vendorreq(intfpriv, request, wvalue, index,
-                                        &data, len, requesttype);
-       if (status < 0)
-               return 0;
-       return (u8)(le32_to_cpu(data) & 0x0ff);
-}
-
-static u16 usb_read16(struct intf_hdl *intfhdl, u32 addr)
-{
-       u8 request;
-       u8 requesttype;
-       u16 wvalue;
-       u16 index;
-       u16 len;
-       int status;
-       __le32 data = 0;
-       struct intf_priv *intfpriv = intfhdl->pintfpriv;
-
-       request = 0x05;
-       requesttype = 0x01; /* read_in */
-       index = 0;
-       wvalue = (u16)(addr & 0x0000ffff);
-       len = 2;
-       status = r8712_usbctrl_vendorreq(intfpriv, request, wvalue, index,
-                                        &data, len, requesttype);
-       if (status < 0)
-               return 0;
-       return (u16)(le32_to_cpu(data) & 0xffff);
-}
-
-static u32 usb_read32(struct intf_hdl *intfhdl, u32 addr)
-{
-       u8 request;
-       u8 requesttype;
-       u16 wvalue;
-       u16 index;
-       u16 len;
-       int status;
-       __le32 data = 0;
-       struct intf_priv *intfpriv = intfhdl->pintfpriv;
-
-       request = 0x05;
-       requesttype = 0x01; /* read_in */
-       index = 0;
-       wvalue = (u16)(addr & 0x0000ffff);
-       len = 4;
-       status = r8712_usbctrl_vendorreq(intfpriv, request, wvalue, index,
-                                        &data, len, requesttype);
-       if (status < 0)
-               return 0;
-       return le32_to_cpu(data);
-}
-
-static void usb_write8(struct intf_hdl *intfhdl, u32 addr, u8 val)
-{
-       u8 request;
-       u8 requesttype;
-       u16 wvalue;
-       u16 index;
-       u16 len;
-       __le32 data;
-       struct intf_priv *intfpriv = intfhdl->pintfpriv;
-
-       request = 0x05;
-       requesttype = 0x00; /* write_out */
-       index = 0;
-       wvalue = (u16)(addr & 0x0000ffff);
-       len = 1;
-       data = cpu_to_le32((u32)val & 0x000000ff);
-       r8712_usbctrl_vendorreq(intfpriv, request, wvalue, index, &data, len,
-                               requesttype);
-}
-
-static void usb_write16(struct intf_hdl *intfhdl, u32 addr, u16 val)
-{
-       u8 request;
-       u8 requesttype;
-       u16 wvalue;
-       u16 index;
-       u16 len;
-       __le32 data;
-       struct intf_priv *intfpriv = intfhdl->pintfpriv;
-
-       request = 0x05;
-       requesttype = 0x00; /* write_out */
-       index = 0;
-       wvalue = (u16)(addr & 0x0000ffff);
-       len = 2;
-       data = cpu_to_le32((u32)val & 0x0000ffff);
-       r8712_usbctrl_vendorreq(intfpriv, request, wvalue, index, &data, len,
-                               requesttype);
-}
-
-static void usb_write32(struct intf_hdl *intfhdl, u32 addr, u32 val)
-{
-       u8 request;
-       u8 requesttype;
-       u16 wvalue;
-       u16 index;
-       u16 len;
-       __le32 data;
-       struct intf_priv *intfpriv = intfhdl->pintfpriv;
-
-       request = 0x05;
-       requesttype = 0x00; /* write_out */
-       index = 0;
-       wvalue = (u16)(addr & 0x0000ffff);
-       len = 4;
-       data = cpu_to_le32(val);
-       r8712_usbctrl_vendorreq(intfpriv, request, wvalue, index, &data, len,
-                               requesttype);
-}
-
-void r8712_usb_set_intf_option(u32 *option)
-{
-       *option = ((*option) | _INTF_ASYNC_);
-}
-
-static void usb_intf_hdl_init(u8 *priv)
-{
-}
-
-static void usb_intf_hdl_unload(u8 *priv)
-{
-}
-
-static void usb_intf_hdl_open(u8 *priv)
-{
-}
-
-static void usb_intf_hdl_close(u8 *priv)
-{
-}
-
-void r8712_usb_set_intf_funs(struct intf_hdl *intfhdl)
-{
-       intfhdl->intf_hdl_init = usb_intf_hdl_init;
-       intfhdl->intf_hdl_unload = usb_intf_hdl_unload;
-       intfhdl->intf_hdl_open = usb_intf_hdl_open;
-       intfhdl->intf_hdl_close = usb_intf_hdl_close;
-}
-
-void r8712_usb_set_intf_ops(struct _io_ops *ops)
-{
-       memset((u8 *)ops, 0, sizeof(struct _io_ops));
-       ops->_read8 = usb_read8;
-       ops->_read16 = usb_read16;
-       ops->_read32 = usb_read32;
-       ops->_read_port = r8712_usb_read_port;
-       ops->_write8 = usb_write8;
-       ops->_write16 = usb_write16;
-       ops->_write32 = usb_write32;
-       ops->_write_mem = r8712_usb_write_mem;
-       ops->_write_port = r8712_usb_write_port;
-}
diff --git a/drivers/staging/rtl8712/usb_ops.h b/drivers/staging/rtl8712/usb_ops.h
deleted file mode 100644 (file)
index 7a6b619..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __USB_OPS_H_
-#define __USB_OPS_H_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "osdep_intf.h"
-
-void r8712_usb_write_mem(struct intf_hdl *pintfhdl, u32 addr,
-                        u32 cnt, u8 *wmem);
-u32 r8712_usb_write_port(struct intf_hdl *pintfhdl, u32 addr,
-                        u32 cnt, u8 *wmem);
-u32 r8712_usb_read_port(struct intf_hdl *pintfhdl, u32 addr,
-                       u32 cnt, u8 *rmem);
-void r8712_usb_set_intf_option(u32 *poption);
-void r8712_usb_set_intf_funs(struct intf_hdl *pintf_hdl);
-uint r8712_usb_init_intf_priv(struct intf_priv *pintfpriv);
-void r8712_usb_unload_intf_priv(struct intf_priv *pintfpriv);
-void r8712_usb_set_intf_ops(struct _io_ops *pops);
-void r8712_usb_read_port_cancel(struct _adapter *padapter);
-void r8712_usb_write_port_cancel(struct _adapter *padapter);
-int r8712_usbctrl_vendorreq(struct intf_priv *pintfpriv, u8 request, u16 value,
-                           u16 index, void *pdata, u16 len, u8 requesttype);
-
-#endif
-
diff --git a/drivers/staging/rtl8712/usb_ops_linux.c b/drivers/staging/rtl8712/usb_ops_linux.c
deleted file mode 100644 (file)
index b2181e1..0000000
+++ /dev/null
@@ -1,515 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * usb_ops_linux.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _HCI_OPS_OS_C_
-
-#include <linux/usb.h>
-
-#include "osdep_service.h"
-#include "drv_types.h"
-#include "osdep_intf.h"
-#include "usb_ops.h"
-
-#define        RTL871X_VENQT_READ      0xc0
-#define        RTL871X_VENQT_WRITE     0x40
-
-struct zero_bulkout_context {
-       void *pbuf;
-       void *purb;
-       void *pirp;
-       void *padapter;
-};
-
-uint r8712_usb_init_intf_priv(struct intf_priv *pintfpriv)
-{
-       pintfpriv->piorw_urb = usb_alloc_urb(0, GFP_ATOMIC);
-       if (!pintfpriv->piorw_urb)
-               return _FAIL;
-       init_completion(&pintfpriv->io_retevt_comp);
-       return _SUCCESS;
-}
-
-void r8712_usb_unload_intf_priv(struct intf_priv *pintfpriv)
-{
-       if (pintfpriv->piorw_urb) {
-               usb_kill_urb(pintfpriv->piorw_urb);
-               usb_free_urb(pintfpriv->piorw_urb);
-       }
-}
-
-static unsigned int ffaddr2pipehdl(struct dvobj_priv *pdvobj, u32 addr)
-{
-       unsigned int pipe = 0;
-       struct usb_device *pusbd = pdvobj->pusbdev;
-
-       if (pdvobj->nr_endpoint == 11) {
-               switch (addr) {
-               case RTL8712_DMA_BKQ:
-                       pipe = usb_sndbulkpipe(pusbd, 0x07);
-                       break;
-               case RTL8712_DMA_BEQ:
-                       pipe = usb_sndbulkpipe(pusbd, 0x06);
-                       break;
-               case RTL8712_DMA_VIQ:
-                       pipe = usb_sndbulkpipe(pusbd, 0x05);
-                       break;
-               case RTL8712_DMA_VOQ:
-                       pipe = usb_sndbulkpipe(pusbd, 0x04);
-                       break;
-               case RTL8712_DMA_BCNQ:
-                       pipe = usb_sndbulkpipe(pusbd, 0x0a);
-                       break;
-               case RTL8712_DMA_BMCQ:  /* HI Queue */
-                       pipe = usb_sndbulkpipe(pusbd, 0x0b);
-                       break;
-               case RTL8712_DMA_MGTQ:
-                       pipe = usb_sndbulkpipe(pusbd, 0x0c);
-                       break;
-               case RTL8712_DMA_RX0FF:
-                       pipe = usb_rcvbulkpipe(pusbd, 0x03); /* in */
-                       break;
-               case RTL8712_DMA_C2HCMD:
-                       pipe = usb_rcvbulkpipe(pusbd, 0x09); /* in */
-                       break;
-               case RTL8712_DMA_H2CCMD:
-                       pipe = usb_sndbulkpipe(pusbd, 0x0d);
-                       break;
-               }
-       } else if (pdvobj->nr_endpoint == 6) {
-               switch (addr) {
-               case RTL8712_DMA_BKQ:
-                       pipe = usb_sndbulkpipe(pusbd, 0x07);
-                       break;
-               case RTL8712_DMA_BEQ:
-                       pipe = usb_sndbulkpipe(pusbd, 0x06);
-                       break;
-               case RTL8712_DMA_VIQ:
-                       pipe = usb_sndbulkpipe(pusbd, 0x05);
-                       break;
-               case RTL8712_DMA_VOQ:
-                       pipe = usb_sndbulkpipe(pusbd, 0x04);
-                       break;
-               case RTL8712_DMA_RX0FF:
-               case RTL8712_DMA_C2HCMD:
-                       pipe = usb_rcvbulkpipe(pusbd, 0x03); /* in */
-                       break;
-               case RTL8712_DMA_H2CCMD:
-               case RTL8712_DMA_BCNQ:
-               case RTL8712_DMA_BMCQ:
-               case RTL8712_DMA_MGTQ:
-                       pipe = usb_sndbulkpipe(pusbd, 0x0d);
-                       break;
-               }
-       } else if (pdvobj->nr_endpoint == 4) {
-               switch (addr) {
-               case RTL8712_DMA_BEQ:
-                       pipe = usb_sndbulkpipe(pusbd, 0x06);
-                       break;
-               case RTL8712_DMA_VOQ:
-                       pipe = usb_sndbulkpipe(pusbd, 0x04);
-                       break;
-               case RTL8712_DMA_RX0FF:
-               case RTL8712_DMA_C2HCMD:
-                       pipe = usb_rcvbulkpipe(pusbd, 0x03); /* in */
-                       break;
-               case RTL8712_DMA_H2CCMD:
-               case RTL8712_DMA_BCNQ:
-               case RTL8712_DMA_BMCQ:
-               case RTL8712_DMA_MGTQ:
-                       pipe = usb_sndbulkpipe(pusbd, 0x0d);
-                       break;
-               }
-       } else {
-               pipe = 0;
-       }
-       return pipe;
-}
-
-static void usb_write_mem_complete(struct urb *purb)
-{
-       struct io_queue *pio_q = (struct io_queue *)purb->context;
-       struct intf_hdl *pintf = &(pio_q->intf);
-       struct intf_priv *pintfpriv = pintf->pintfpriv;
-       struct _adapter *padapter = (struct _adapter *)pintf->adapter;
-
-       if (purb->status != 0) {
-               if (purb->status == (-ESHUTDOWN))
-                       padapter->driver_stopped = true;
-               else
-                       padapter->surprise_removed = true;
-       }
-       complete(&pintfpriv->io_retevt_comp);
-}
-
-void r8712_usb_write_mem(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *wmem)
-{
-       unsigned int pipe;
-       struct _adapter *padapter = (struct _adapter *)pintfhdl->adapter;
-       struct intf_priv *pintfpriv = pintfhdl->pintfpriv;
-       struct io_queue *pio_queue = padapter->pio_queue;
-       struct dvobj_priv *pdvobj = (struct dvobj_priv *)pintfpriv->intf_dev;
-       struct usb_device *pusbd = pdvobj->pusbdev;
-       struct urb *piorw_urb = pintfpriv->piorw_urb;
-
-       if ((padapter->driver_stopped) || (padapter->surprise_removed) ||
-           (padapter->pwrctrlpriv.pnp_bstop_trx))
-               return;
-       /* translate DMA FIFO addr to pipehandle */
-       pipe = ffaddr2pipehdl(pdvobj, addr);
-       if (pipe == 0)
-               return;
-       usb_fill_bulk_urb(piorw_urb, pusbd, pipe,
-                         wmem, cnt, usb_write_mem_complete,
-                         pio_queue);
-       usb_submit_urb(piorw_urb, GFP_ATOMIC);
-       wait_for_completion_interruptible(&pintfpriv->io_retevt_comp);
-}
-
-static void r8712_usb_read_port_complete(struct urb *purb)
-{
-       uint isevt;
-       __le32 *pbuf;
-       struct recv_buf *precvbuf = (struct recv_buf *)purb->context;
-       struct _adapter *padapter = (struct _adapter *)precvbuf->adapter;
-       struct recv_priv *precvpriv = &padapter->recvpriv;
-
-       if (padapter->surprise_removed || padapter->driver_stopped)
-               return;
-       if (purb->status == 0) { /* SUCCESS */
-               if ((purb->actual_length > (MAX_RECVBUF_SZ)) ||
-                   (purb->actual_length < RXDESC_SIZE)) {
-                       r8712_read_port(padapter, precvpriv->ff_hwaddr, 0,
-                                 (unsigned char *)precvbuf);
-               } else {
-                       _pkt *pskb = precvbuf->pskb;
-
-                       precvbuf->transfer_len = purb->actual_length;
-                       pbuf = (__le32 *)precvbuf->pbuf;
-                       isevt = le32_to_cpu(*(pbuf + 1)) & 0x1ff;
-                       if ((isevt & 0x1ff) == 0x1ff) {
-                               r8712_rxcmd_event_hdl(padapter, pbuf);
-                               skb_queue_tail(&precvpriv->rx_skb_queue, pskb);
-                               r8712_read_port(padapter, precvpriv->ff_hwaddr,
-                                               0, (unsigned char *)precvbuf);
-                       } else {
-                               skb_put(pskb, purb->actual_length);
-                               skb_queue_tail(&precvpriv->rx_skb_queue, pskb);
-                               tasklet_hi_schedule(&precvpriv->recv_tasklet);
-                               r8712_read_port(padapter, precvpriv->ff_hwaddr,
-                                               0, (unsigned char *)precvbuf);
-                       }
-               }
-       } else {
-               switch (purb->status) {
-               case -EINVAL:
-               case -EPIPE:
-               case -ENODEV:
-               case -ESHUTDOWN:
-                       padapter->driver_stopped = true;
-                       break;
-               case -ENOENT:
-                       if (!padapter->suspended) {
-                               padapter->driver_stopped = true;
-                               break;
-                       }
-                       fallthrough;
-               case -EPROTO:
-                       r8712_read_port(padapter, precvpriv->ff_hwaddr, 0,
-                                 (unsigned char *)precvbuf);
-                       break;
-               case -EINPROGRESS:
-                       netdev_err(padapter->pnetdev, "ERROR: URB IS IN PROGRESS!\n");
-                       break;
-               default:
-                       break;
-               }
-       }
-}
-
-u32 r8712_usb_read_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *rmem)
-{
-       unsigned int pipe;
-       int err;
-       u32 tmpaddr = 0;
-       int alignment = 0;
-       u32 ret = _SUCCESS;
-       struct urb *purb = NULL;
-       struct recv_buf *precvbuf = (struct recv_buf *)rmem;
-       struct intf_priv *pintfpriv = pintfhdl->pintfpriv;
-       struct dvobj_priv *pdvobj = (struct dvobj_priv *)pintfpriv->intf_dev;
-       struct _adapter *adapter = pdvobj->padapter;
-       struct recv_priv *precvpriv = &adapter->recvpriv;
-       struct usb_device *pusbd = pdvobj->pusbdev;
-
-       if (adapter->driver_stopped || adapter->surprise_removed ||
-           adapter->pwrctrlpriv.pnp_bstop_trx || !precvbuf)
-               return _FAIL;
-       r8712_init_recvbuf(adapter, precvbuf);
-       /* Try to use skb from the free queue */
-       precvbuf->pskb = skb_dequeue(&precvpriv->free_recv_skb_queue);
-
-       if (!precvbuf->pskb) {
-               precvbuf->pskb = netdev_alloc_skb(adapter->pnetdev,
-                                MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ);
-               if (!precvbuf->pskb)
-                       return _FAIL;
-               tmpaddr = (addr_t)precvbuf->pskb->data;
-               alignment = tmpaddr & (RECVBUFF_ALIGN_SZ - 1);
-               skb_reserve(precvbuf->pskb,
-                           (RECVBUFF_ALIGN_SZ - alignment));
-               precvbuf->phead = precvbuf->pskb->head;
-               precvbuf->pdata = precvbuf->pskb->data;
-               precvbuf->ptail = skb_tail_pointer(precvbuf->pskb);
-               precvbuf->pend = skb_end_pointer(precvbuf->pskb);
-               precvbuf->pbuf = precvbuf->pskb->data;
-       } else { /* skb is reused */
-               precvbuf->phead = precvbuf->pskb->head;
-               precvbuf->pdata = precvbuf->pskb->data;
-               precvbuf->ptail = skb_tail_pointer(precvbuf->pskb);
-               precvbuf->pend = skb_end_pointer(precvbuf->pskb);
-               precvbuf->pbuf = precvbuf->pskb->data;
-       }
-       purb = precvbuf->purb;
-       /* translate DMA FIFO addr to pipehandle */
-       pipe = ffaddr2pipehdl(pdvobj, addr);
-       usb_fill_bulk_urb(purb, pusbd, pipe,
-                         precvbuf->pbuf, MAX_RECVBUF_SZ,
-                         r8712_usb_read_port_complete,
-                         precvbuf);
-       err = usb_submit_urb(purb, GFP_ATOMIC);
-       if ((err) && (err != (-EPERM)))
-               ret = _FAIL;
-       return ret;
-}
-
-void r8712_usb_read_port_cancel(struct _adapter *padapter)
-{
-       int i;
-       struct recv_buf *precvbuf;
-
-       precvbuf = (struct recv_buf *)padapter->recvpriv.precv_buf;
-       for (i = 0; i < NR_RECVBUFF; i++) {
-               if (precvbuf->purb)
-                       usb_kill_urb(precvbuf->purb);
-               precvbuf++;
-       }
-}
-
-void r8712_xmit_bh(struct tasklet_struct *t)
-{
-       int ret = false;
-       struct _adapter *padapter = from_tasklet(padapter, t,
-                                                xmitpriv.xmit_tasklet);
-       struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-
-       if (padapter->driver_stopped ||
-           padapter->surprise_removed) {
-               netdev_err(padapter->pnetdev, "xmit_bh => driver_stopped or surprise_removed\n");
-               return;
-       }
-       ret = r8712_xmitframe_complete(padapter, pxmitpriv, NULL);
-       if (!ret)
-               return;
-       tasklet_hi_schedule(&pxmitpriv->xmit_tasklet);
-}
-
-static void usb_write_port_complete(struct urb *purb)
-{
-       int i;
-       struct xmit_frame *pxmitframe = (struct xmit_frame *)purb->context;
-       struct xmit_buf *pxmitbuf = pxmitframe->pxmitbuf;
-       struct _adapter *padapter = pxmitframe->padapter;
-       struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-       struct pkt_attrib *pattrib = &pxmitframe->attrib;
-
-       switch (pattrib->priority) {
-       case 1:
-       case 2:
-               pxmitpriv->bkq_cnt--;
-               break;
-       case 4:
-       case 5:
-               pxmitpriv->viq_cnt--;
-               break;
-       case 6:
-       case 7:
-               pxmitpriv->voq_cnt--;
-               break;
-       case 0:
-       case 3:
-       default:
-               pxmitpriv->beq_cnt--;
-               break;
-       }
-       pxmitpriv->txirp_cnt--;
-       for (i = 0; i < 8; i++) {
-               if (purb == pxmitframe->pxmit_urb[i]) {
-                       pxmitframe->bpending[i] = false;
-                       break;
-               }
-       }
-       if (padapter->surprise_removed)
-               return;
-       switch (purb->status) {
-       case 0:
-               break;
-       default:
-               netdev_warn(padapter->pnetdev,
-                               "r8712u: pipe error: (%d)\n", purb->status);
-               break;
-       }
-       /* not to consider tx fragment */
-       r8712_free_xmitframe_ex(pxmitpriv, pxmitframe);
-       r8712_free_xmitbuf(pxmitpriv, pxmitbuf);
-       tasklet_hi_schedule(&pxmitpriv->xmit_tasklet);
-}
-
-u32 r8712_usb_write_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *wmem)
-{
-       unsigned long irqL;
-       int i, status;
-       unsigned int pipe;
-       u32 ret, bwritezero;
-       struct urb *purb = NULL;
-       struct _adapter *padapter = (struct _adapter *)pintfhdl->adapter;
-       struct dvobj_priv *pdvobj = &padapter->dvobjpriv;
-       struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
-       struct xmit_frame *pxmitframe = (struct xmit_frame *)wmem;
-       struct usb_device *pusbd = pdvobj->pusbdev;
-       struct pkt_attrib *pattrib = &pxmitframe->attrib;
-
-       if ((padapter->driver_stopped) || (padapter->surprise_removed) ||
-           (padapter->pwrctrlpriv.pnp_bstop_trx))
-               return _FAIL;
-       for (i = 0; i < 8; i++) {
-               if (!pxmitframe->bpending[i]) {
-                       spin_lock_irqsave(&pxmitpriv->lock, irqL);
-                       pxmitpriv->txirp_cnt++;
-                       pxmitframe->bpending[i]  = true;
-                       switch (pattrib->priority) {
-                       case 1:
-                       case 2:
-                               pxmitpriv->bkq_cnt++;
-                               break;
-                       case 4:
-                       case 5:
-                               pxmitpriv->viq_cnt++;
-                               break;
-                       case 6:
-                       case 7:
-                               pxmitpriv->voq_cnt++;
-                               break;
-                       case 0:
-                       case 3:
-                       default:
-                               pxmitpriv->beq_cnt++;
-                               break;
-                       }
-                       spin_unlock_irqrestore(&pxmitpriv->lock, irqL);
-                       pxmitframe->sz[i] = (u16)cnt;
-                       purb = pxmitframe->pxmit_urb[i];
-                       break;
-               }
-       }
-       bwritezero = false;
-       if (pdvobj->ishighspeed) {
-               if (cnt > 0 && cnt % 512 == 0)
-                       bwritezero = true;
-       } else {
-               if (cnt > 0 && cnt % 64 == 0)
-                       bwritezero = true;
-       }
-       /* translate DMA FIFO addr to pipehandle */
-       pipe = ffaddr2pipehdl(pdvobj, addr);
-       if (pxmitpriv->free_xmitbuf_cnt % NR_XMITBUFF == 0)
-               purb->transfer_flags  &=  (~URB_NO_INTERRUPT);
-       else
-               purb->transfer_flags  |=  URB_NO_INTERRUPT;
-       if (bwritezero)
-               cnt += 8;
-       usb_fill_bulk_urb(purb, pusbd, pipe,
-                         pxmitframe->mem_addr,
-                         cnt, usb_write_port_complete,
-                         pxmitframe); /* context is xmit_frame */
-       status = usb_submit_urb(purb, GFP_ATOMIC);
-       if (!status)
-               ret = _SUCCESS;
-       else
-               ret = _FAIL;
-       return ret;
-}
-
-void r8712_usb_write_port_cancel(struct _adapter *padapter)
-{
-       int i, j;
-       struct xmit_buf *pxmitbuf = (struct xmit_buf *)
-                                    padapter->xmitpriv.pxmitbuf;
-
-       for (i = 0; i < NR_XMITBUFF; i++) {
-               for (j = 0; j < 8; j++) {
-                       if (pxmitbuf->pxmit_urb[j])
-                               usb_kill_urb(pxmitbuf->pxmit_urb[j]);
-               }
-               pxmitbuf++;
-       }
-}
-
-int r8712_usbctrl_vendorreq(struct intf_priv *pintfpriv, u8 request, u16 value,
-                     u16 index, void *pdata, u16 len, u8 requesttype)
-{
-       unsigned int pipe;
-       int status;
-       u8 reqtype;
-       struct dvobj_priv *pdvobjpriv = (struct dvobj_priv *)
-                                        pintfpriv->intf_dev;
-       struct usb_device *udev = pdvobjpriv->pusbdev;
-       /* For mstar platform, mstar suggests the address for USB IO
-        * should be 16 bytes alignment. Trying to fix it here.
-        */
-       u8 *palloc_buf, *pIo_buf;
-
-       palloc_buf = kmalloc((u32)len + 16, GFP_ATOMIC);
-       if (!palloc_buf)
-               return -ENOMEM;
-       pIo_buf = palloc_buf + 16 - ((addr_t)(palloc_buf) & 0x0f);
-       if (requesttype == 0x01) {
-               pipe = usb_rcvctrlpipe(udev, 0); /* read_in */
-               reqtype =  RTL871X_VENQT_READ;
-       } else {
-               pipe = usb_sndctrlpipe(udev, 0); /* write_out */
-               reqtype =  RTL871X_VENQT_WRITE;
-               memcpy(pIo_buf, pdata, len);
-       }
-       status = usb_control_msg(udev, pipe, request, reqtype, value, index,
-                                pIo_buf, len, 500);
-       if (status < 0)
-               goto free;
-       if (status != len) {
-               status = -EREMOTEIO;
-               goto free;
-       }
-       /* Success this control transfer. */
-       if (requesttype == 0x01) {
-               /* For Control read transfer, we have to copy the read
-                * data from pIo_buf to pdata.
-                */
-               memcpy(pdata, pIo_buf, status);
-       }
-
-free:
-       kfree(palloc_buf);
-       return status;
-}
diff --git a/drivers/staging/rtl8712/usb_osintf.h b/drivers/staging/rtl8712/usb_osintf.h
deleted file mode 100644 (file)
index 2e512b4..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __USB_OSINTF_H
-#define __USB_OSINTF_H
-
-#include "osdep_service.h"
-#include "drv_types.h"
-
-extern char *r8712_initmac;
-
-unsigned int r8712_usb_inirp_init(struct _adapter *padapter);
-unsigned int r8712_usb_inirp_deinit(struct _adapter *padapter);
-uint rtl871x_hal_init(struct _adapter *padapter);
-uint rtl8712_hal_deinit(struct _adapter *padapter);
-
-void rtl871x_intf_stop(struct _adapter *padapter);
-void r871x_dev_unload(struct _adapter *padapter);
-void r8712_stop_drv_threads(struct _adapter *padapter);
-void r8712_stop_drv_timers(struct _adapter *padapter);
-int r8712_init_drv_sw(struct _adapter *padapter);
-void r8712_free_drv_sw(struct _adapter *padapter);
-struct net_device *r8712_init_netdev(void);
-
-#endif
diff --git a/drivers/staging/rtl8712/wifi.h b/drivers/staging/rtl8712/wifi.h
deleted file mode 100644 (file)
index 498e6de..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef _WIFI_H_
-#define _WIFI_H_
-
-#include <linux/compiler.h>
-#include <linux/ieee80211.h>
-
-#define WLAN_HDR_A3_LEN                24
-#define WLAN_HDR_A3_QOS_LEN    26
-
-enum WIFI_FRAME_TYPE {
-       WIFI_QOS_DATA_TYPE      = (BIT(7) | BIT(3)),    /*!< QoS Data */
-};
-
-#define SetToDs(pbuf) ({ \
-       *(__le16 *)(pbuf) |= cpu_to_le16(IEEE80211_FCTL_TODS); \
-})
-
-#define GetToDs(pbuf)  (((*(__le16 *)(pbuf)) & cpu_to_le16(IEEE80211_FCTL_TODS)) != 0)
-
-#define ClearToDs(pbuf)        ({ \
-       *(__le16 *)(pbuf) &= (~cpu_to_le16(IEEE80211_FCTL_TODS)); \
-})
-
-#define SetFrDs(pbuf) ({ \
-       *(__le16 *)(pbuf) |= cpu_to_le16(IEEE80211_FCTL_FROMDS); \
-})
-
-#define GetFrDs(pbuf)  (((*(__le16 *)(pbuf)) & cpu_to_le16(IEEE80211_FCTL_FROMDS)) != 0)
-
-#define ClearFrDs(pbuf)        ({ \
-       *(__le16 *)(pbuf) &= (~cpu_to_le16(IEEE80211_FCTL_FROMDS)); \
-})
-
-static inline unsigned char get_tofr_ds(unsigned char *pframe)
-{
-       return ((GetToDs(pframe) << 1) | GetFrDs(pframe));
-}
-
-#define SetMFrag(pbuf) ({ \
-       *(__le16 *)(pbuf) |= cpu_to_le16(IEEE80211_FCTL_MOREFRAGS); \
-})
-
-#define GetMFrag(pbuf) (((*(__le16 *)(pbuf)) & cpu_to_le16(IEEE80211_FCTL_MOREFRAGS)) != 0)
-
-#define ClearMFrag(pbuf) ({ \
-       *(__le16 *)(pbuf) &= (~cpu_to_le16(IEEE80211_FCTL_MOREFRAGS)); \
-})
-
-#define SetRetry(pbuf) ({ \
-       *(__le16 *)(pbuf) |= cpu_to_le16(IEEE80211_FCTL_RETRY); \
-})
-
-#define GetRetry(pbuf) (((*(__le16 *)(pbuf)) & cpu_to_le16(IEEE80211_FCTL_RETRY)) != 0)
-
-#define ClearRetry(pbuf) ({ \
-       *(__le16 *)(pbuf) &= (~cpu_to_le16(IEEE80211_FCTL_RETRY)); \
-})
-
-#define SetPwrMgt(pbuf) ({ \
-       *(__le16 *)(pbuf) |= cpu_to_le16(IEEE80211_FCTL_PM); \
-})
-
-#define GetPwrMgt(pbuf)        (((*(__le16 *)(pbuf)) & \
-                       cpu_to_le16(IEEE80211_FCTL_PM)) != 0)
-
-#define ClearPwrMgt(pbuf) ({ \
-       *(__le16 *)(pbuf) &= (~cpu_to_le16(IEEE80211_FCTL_PM)); \
-})
-
-#define SetMData(pbuf) ({ \
-       *(__le16 *)(pbuf) |= cpu_to_le16(IEEE80211_FCTL_MOREDATA); \
-})
-
-#define GetMData(pbuf) (((*(__le16 *)(pbuf)) & \
-                       cpu_to_le16(IEEE80211_FCTL_MOREDATA)) != 0)
-
-#define ClearMData(pbuf) ({ \
-       *(__le16 *)(pbuf) &= (~cpu_to_le16(IEEE80211_FCTL_MOREDATA)); \
-})
-
-#define SetPrivacy(pbuf) ({ \
-       *(__le16 *)(pbuf) |= cpu_to_le16(IEEE80211_FCTL_PROTECTED); \
-})
-
-#define GetPrivacy(pbuf)       (((*(__le16 *)(pbuf)) & \
-                               cpu_to_le16(IEEE80211_FCTL_PROTECTED)) != 0)
-
-#define GetOrder(pbuf) (((*(__le16 *)(pbuf)) & \
-                       cpu_to_le16(IEEE80211_FCTL_ORDER)) != 0)
-
-#define GetFrameType(pbuf)     (le16_to_cpu(*(__le16 *)(pbuf)) & \
-                               (BIT(3) | BIT(2)))
-
-#define SetFrameType(pbuf, type)       \
-       do {    \
-               *(__le16 *)(pbuf) &= cpu_to_le16(~(BIT(3) | \
-               BIT(2))); \
-               *(__le16 *)(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 *)\
-                               ((addr_t)(pbuf) + 22)) >> 4)
-
-#define GetFragNum(pbuf)       (le16_to_cpu(*(__le16 *)((addr_t)\
-                               (pbuf) + 22)) & 0x0f)
-
-#define SetSeqNum(pbuf, num) ({ \
-       *(__le16 *)((addr_t)(pbuf) + 22) = \
-       cpu_to_le16((le16_to_cpu(*(__le16 *)((addr_t)(pbuf) + 22)) & \
-       0x000f) | (0xfff0 & (num << 4))); \
-})
-
-#define SetPriority(pbuf, tid) ({ \
-       *(__le16 *)(pbuf) |= cpu_to_le16(tid & 0xf); \
-})
-
-#define GetPriority(pbuf)      ((le16_to_cpu(*(__le16 *)(pbuf))) & 0xf)
-
-#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 GetAddr1Ptr(pbuf)      ((unsigned char *)((addr_t)(pbuf) + 4))
-
-#define GetAddr2Ptr(pbuf)      ((unsigned char *)((addr_t)(pbuf) + 10))
-
-#define GetAddr3Ptr(pbuf)      ((unsigned char *)((addr_t)(pbuf) + 16))
-
-#define GetAddr4Ptr(pbuf)      ((unsigned char *)((addr_t)(pbuf) + 24))
-
-static inline unsigned char *get_hdr_bssid(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 = GetAddr3Ptr(pframe);
-               break;
-       case 0x01:      /* ToDs=0, FromDs=1 */
-               sa = GetAddr2Ptr(pframe);
-               break;
-       case 0x02:      /* ToDs=1, FromDs=0 */
-               sa = GetAddr1Ptr(pframe);
-               break;
-       default:        /* ToDs=1, FromDs=1 */
-               sa = NULL;
-               break;
-       }
-       return sa;
-}
-
-/* ---------------------------------------------------------------------------
- *                     Below is the fixed elements...
- * ---------------------------------------------------------------------------
- */
-#define _BEACON_ITERVAL_               2
-#define _CAPABILITY_                   2
-#define _TIMESTAMP_                            8
-
-/*-----------------------------------------------------------------------------
- *                     Below is the definition for WMM
- *------------------------------------------------------------------------------
- */
-#define _WMM_IE_Length_                                7  /* for WMM STA */
-
-#endif /* _WIFI_H_ */
-
diff --git a/drivers/staging/rtl8712/wlan_bssdef.h b/drivers/staging/rtl8712/wlan_bssdef.h
deleted file mode 100644 (file)
index ec37498..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#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
-
-struct ndis_802_11_ssid {
-       u32 SsidLength;
-       u8  Ssid[32];
-};
-
-enum NDIS_802_11_NETWORK_TYPE {
-       Ndis802_11FH,
-       Ndis802_11DS,
-       Ndis802_11OFDM5,
-       Ndis802_11OFDM24,
-       Ndis802_11NetworkTypeMax /* not a real type, defined as an upper bound*/
-};
-
-struct NDIS_802_11_CONFIGURATION_FH {
-       u32 Length;             /* Length of structure */
-       u32 HopPattern;         /* As defined by 802.11, MSB set */
-       u32 HopSet;             /* to one if non-802.11 */
-       u32 DwellTime;          /* units are Kusec */
-};
-
-/*
- * FW will only save the channel number in DSConfig.
- * ODI Handler will convert the channel number to freq. number.
- */
-struct NDIS_802_11_CONFIGURATION {
-       u32 Length;             /* Length of structure */
-       u32 BeaconPeriod;       /* units are Kusec */
-       u32 ATIMWindow;         /* units are Kusec */
-       u32 DSConfig;           /* Frequency, units are kHz */
-       struct NDIS_802_11_CONFIGURATION_FH FHConfig;
-};
-
-enum NDIS_802_11_NETWORK_INFRASTRUCTURE {
-       Ndis802_11IBSS,
-       Ndis802_11Infrastructure,
-       Ndis802_11AutoUnknown,
-       Ndis802_11InfrastructureMax, /*Not a real value,defined as upper bound*/
-       Ndis802_11APMode
-};
-
-struct NDIS_802_11_FIXED_IEs {
-       u8  Timestamp[8];
-       u16 BeaconInterval;
-       u16 Capabilities;
-};
-
-struct wlan_bssid_ex {
-       u32 Length;
-       unsigned char  MacAddress[6];
-       u8  Reserved[2];
-       struct ndis_802_11_ssid  Ssid;
-       __le32 Privacy;
-       s32 Rssi;
-       enum NDIS_802_11_NETWORK_TYPE  NetworkTypeInUse;
-       struct NDIS_802_11_CONFIGURATION  Configuration;
-       enum NDIS_802_11_NETWORK_INFRASTRUCTURE  InfrastructureMode;
-       u8 rates[NDIS_802_11_LENGTH_RATES_EX];
-       /* number of content bytes in EIs, which varies */
-       u32 IELength;
-       /*(timestamp, beacon interval, and capability information) */
-       u8 IEs[MAX_IE_SZ];
-};
-
-enum NDIS_802_11_AUTHENTICATION_MODE {
-       Ndis802_11AuthModeOpen,
-       Ndis802_11AuthModeShared,
-       Ndis802_11AuthModeAutoSwitch,
-       Ndis802_11AuthModeWPA,
-       Ndis802_11AuthModeWPAPSK,
-       Ndis802_11AuthModeWPANone,
-       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
-};
-
-#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
-
-struct NDIS_802_11_AI_REQFI {
-       u16 Capabilities;
-       u16 ListenInterval;
-       unsigned char CurrentAPAddress[6];
-};
-
-struct NDIS_802_11_AI_RESFI {
-       u16 Capabilities;
-       u16 StatusCode;
-       u16 AssociationId;
-};
-
-struct NDIS_802_11_ASSOCIATION_INFORMATION {
-       u32 Length;
-       u16 AvailableRequestFixedIEs;
-       struct NDIS_802_11_AI_REQFI RequestFixedIEs;
-       u32 RequestIELength;
-       u32 OffsetRequestIEs;
-       u16 AvailableResponseFixedIEs;
-       struct NDIS_802_11_AI_RESFI ResponseFixedIEs;
-       u32 ResponseIELength;
-       u32 OffsetResponseIEs;
-};
-
-/* Key mapping keys require a BSSID*/
-struct NDIS_802_11_KEY {
-       u32 Length;                     /* Length of this structure */
-       u32 KeyIndex;
-       u32 KeyLength;                  /* length of key in bytes */
-       unsigned char BSSID[6];
-       unsigned long long KeyRSC;
-       u8  KeyMaterial[32];            /* variable length */
-};
-
-struct NDIS_802_11_REMOVE_KEY {
-       u32 Length;                     /* Length of this structure */
-       u32 KeyIndex;
-       unsigned char BSSID[6];
-};
-
-struct NDIS_802_11_WEP {
-       u32 Length;               /* Length of this structure */
-       u32 KeyIndex;             /* 0 is the per-client key,
-                                  * 1-N are the global keys
-                                  */
-       u32 KeyLength;            /* length of key in bytes */
-       u8  KeyMaterial[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
-
-#ifndef Ndis802_11APMode
-#define Ndis802_11APMode (Ndis802_11InfrastructureMax + 1)
-#endif
-
-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 asi
-                                * site-surveying
-                                */
-       unsigned int    last_scanned; /*timestamp for the network */
-       int     aid;            /*will only be valid when a BSS is joined. */
-       int     join_res;
-       struct wlan_bssid_ex network; /*must be the last item */
-};
-
-enum VRTL_CARRIER_SENSE {
-       DISABLE_VCS,
-       ENABLE_VCS,
-       AUTO_VCS
-};
-
-enum VCS_TYPE {
-       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 UAPSD_MAX_SP {
-       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/rtl8712/xmit_linux.c b/drivers/staging/rtl8712/xmit_linux.c
deleted file mode 100644 (file)
index ceb6b59..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/******************************************************************************
- * xmit_linux.c
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- * Linux device driver for RTL8192SU
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-
-#define _XMIT_OSDEP_C_
-
-#include <linux/usb.h>
-#include <linux/ip.h>
-#include <linux/if_ether.h>
-#include <linux/kmemleak.h>
-
-#include "osdep_service.h"
-#include "drv_types.h"
-
-#include "wifi.h"
-#include "mlme_osdep.h"
-#include "xmit_osdep.h"
-#include "osdep_intf.h"
-
-static uint remainder_len(struct pkt_file *pfile)
-{
-       return (uint)(pfile->buf_len - ((addr_t)(pfile->cur_addr) -
-              (addr_t)(pfile->buf_start)));
-}
-
-void _r8712_open_pktfile(_pkt *pktptr, struct pkt_file *pfile)
-{
-       pfile->pkt = pktptr;
-       pfile->cur_addr = pfile->buf_start = pktptr->data;
-       pfile->pkt_len = pfile->buf_len = pktptr->len;
-       pfile->cur_buffer = pfile->buf_start;
-}
-
-uint _r8712_pktfile_read(struct pkt_file *pfile, u8 *rmem, uint rlen)
-{
-       uint len;
-
-       len = remainder_len(pfile);
-       len = (rlen > len) ? len : rlen;
-       if (rmem)
-               skb_copy_bits(pfile->pkt, pfile->buf_len - pfile->pkt_len,
-                             rmem, len);
-       pfile->cur_addr += len;
-       pfile->pkt_len -= len;
-       return len;
-}
-
-sint r8712_endofpktfile(struct pkt_file *pfile)
-{
-       return (pfile->pkt_len == 0);
-}
-
-void r8712_set_qos(struct pkt_file *ppktfile, struct pkt_attrib *pattrib)
-{
-       struct ethhdr etherhdr;
-       struct iphdr ip_hdr;
-       u16 user_priority = 0;
-
-       _r8712_open_pktfile(ppktfile->pkt, ppktfile);
-       _r8712_pktfile_read(ppktfile, (unsigned char *)&etherhdr, ETH_HLEN);
-
-       /* get user_priority from IP hdr*/
-       if (pattrib->ether_type == 0x0800) {
-               _r8712_pktfile_read(ppktfile, (u8 *)&ip_hdr, sizeof(ip_hdr));
-               /*user_priority = (ntohs(ip_hdr.tos) >> 5) & 0x3 ;*/
-               user_priority = ip_hdr.tos >> 5;
-       } else {
-               /* "When priority processing of data frames is supported,
-                * a STA's SME should send EAPOL-Key frames at the highest
-                * priority."
-                */
-
-               if (pattrib->ether_type == 0x888e)
-                       user_priority = 7;
-       }
-       pattrib->priority = user_priority;
-       pattrib->hdrlen = WLAN_HDR_A3_QOS_LEN;
-       pattrib->subtype = WIFI_QOS_DATA_TYPE;
-}
-
-void r8712_SetFilter(struct work_struct *work)
-{
-       struct _adapter *adapter = container_of(work, struct _adapter,
-                                               wk_filter_rx_ff0);
-       u8  oldvalue = 0x00, newvalue = 0x00;
-
-       oldvalue = r8712_read8(adapter, 0x117);
-       newvalue = oldvalue & 0xfe;
-       r8712_write8(adapter, 0x117, newvalue);
-
-       wait_for_completion(&adapter->rx_filter_ready);
-       r8712_write8(adapter, 0x117, oldvalue);
-}
-
-int r8712_xmit_resource_alloc(struct _adapter *padapter,
-                             struct xmit_buf *pxmitbuf)
-{
-       int i;
-
-       for (i = 0; i < 8; i++) {
-               pxmitbuf->pxmit_urb[i] = usb_alloc_urb(0, GFP_KERNEL);
-               if (!pxmitbuf->pxmit_urb[i]) {
-                       int k;
-
-                       for (k = i - 1; k >= 0; k--) {
-                               /* handle allocation errors part way through loop */
-                               usb_free_urb(pxmitbuf->pxmit_urb[k]);
-                       }
-                       netdev_err(padapter->pnetdev, "pxmitbuf->pxmit_urb[i] == NULL\n");
-                       return -ENOMEM;
-               }
-               kmemleak_not_leak(pxmitbuf->pxmit_urb[i]);
-       }
-       return 0;
-}
-
-void r8712_xmit_resource_free(struct _adapter *padapter,
-                             struct xmit_buf *pxmitbuf)
-{
-       int i;
-
-       for (i = 0; i < 8; i++) {
-               if (pxmitbuf->pxmit_urb[i]) {
-                       usb_kill_urb(pxmitbuf->pxmit_urb[i]);
-                       usb_free_urb(pxmitbuf->pxmit_urb[i]);
-               }
-       }
-}
-
-void r8712_xmit_complete(struct _adapter *padapter, struct xmit_frame *pxframe)
-{
-       if (pxframe->pkt)
-               dev_kfree_skb_any(pxframe->pkt);
-       pxframe->pkt = NULL;
-}
-
-netdev_tx_t r8712_xmit_entry(_pkt *pkt, struct  net_device *netdev)
-{
-       struct xmit_frame *xmitframe = NULL;
-       struct _adapter *adapter = netdev_priv(netdev);
-       struct xmit_priv *xmitpriv = &(adapter->xmitpriv);
-
-       if (!r8712_if_up(adapter))
-               goto _xmit_entry_drop;
-
-       xmitframe = r8712_alloc_xmitframe(xmitpriv);
-       if (!xmitframe)
-               goto _xmit_entry_drop;
-
-       if (r8712_update_attrib(adapter, pkt, &xmitframe->attrib))
-               goto _xmit_entry_drop;
-
-       adapter->ledpriv.LedControlHandler(adapter, LED_CTL_TX);
-       xmitframe->pkt = pkt;
-       if (r8712_pre_xmit(adapter, xmitframe)) {
-               /*dump xmitframe directly or drop xframe*/
-               dev_kfree_skb_any(pkt);
-               xmitframe->pkt = NULL;
-       }
-       xmitpriv->tx_pkts++;
-       xmitpriv->tx_bytes += xmitframe->attrib.last_txcmdsz;
-       return NETDEV_TX_OK;
-_xmit_entry_drop:
-       if (xmitframe)
-               r8712_free_xmitframe(xmitpriv, xmitframe);
-       xmitpriv->tx_drop++;
-       dev_kfree_skb_any(pkt);
-       return NETDEV_TX_OK;
-}
diff --git a/drivers/staging/rtl8712/xmit_osdep.h b/drivers/staging/rtl8712/xmit_osdep.h
deleted file mode 100644 (file)
index 1ad4265..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- *
- * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
- *
- * Modifications for inclusion into the Linux staging tree are
- * Copyright(c) 2010 Larry Finger. All rights reserved.
- *
- * Contact information:
- * WLAN FAE <wlanfae@realtek.com>
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- ******************************************************************************/
-#ifndef __XMIT_OSDEP_H_
-#define __XMIT_OSDEP_H_
-
-#include "osdep_service.h"
-#include "drv_types.h"
-
-struct pkt_file {
-       _pkt    *pkt;
-       u32     pkt_len;         /*the remainder length of the open_file*/
-       _buffer *cur_buffer;
-       u8      *buf_start;
-       u8      *cur_addr;
-       u32     buf_len;
-};
-
-#define NR_XMITFRAME   256
-
-struct xmit_priv;
-struct pkt_attrib;
-struct sta_xmit_priv;
-struct xmit_frame;
-struct xmit_buf;
-
-netdev_tx_t r8712_xmit_entry(_pkt *pkt, struct  net_device *pnetdev);
-void r8712_SetFilter(struct work_struct *work);
-int r8712_xmit_resource_alloc(struct _adapter *padapter,
-                             struct xmit_buf *pxmitbuf);
-void r8712_xmit_resource_free(struct _adapter *padapter,
-                             struct xmit_buf *pxmitbuf);
-
-void r8712_set_qos(struct pkt_file *ppktfile,
-                  struct pkt_attrib *pattrib);
-void _r8712_open_pktfile(_pkt *pktptr, struct pkt_file *pfile);
-uint _r8712_pktfile_read(struct pkt_file *pfile, u8 *rmem, uint rlen);
-sint r8712_endofpktfile(struct pkt_file *pfile);
-void r8712_xmit_complete(struct _adapter *padapter,
-                        struct xmit_frame *pxframe);
-
-#endif