From 195314b1354dbda0da3f0058de4f02b1cac714ca Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Thu, 24 Aug 2017 14:47:02 +0200 Subject: [PATCH 001/234] fix build with kernel 4.12 * Fixed compilation/building on kernel v4.12 (4.12.3 also tested ok) --- os_dep/linux/ioctl_cfg80211.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index ccb931047..35f070612 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -753,6 +753,19 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter) #endif RTW_INFO(FUNC_ADPT_FMT" call cfg80211_roamed\n", FUNC_ADPT_ARG(padapter)); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) + { + struct cfg80211_roam_info roam_info = { + .channel = notify_channel, + .bssid = cur_network->network.MacAddress, + .req_ie = pmlmepriv->assoc_req+sizeof(struct rtw_ieee80211_hdr_3addr)+2, + .req_ie_len = pmlmepriv->assoc_req_len-sizeof(struct rtw_ieee80211_hdr_3addr)-2, + .resp_ie = pmlmepriv->assoc_rsp+sizeof(struct rtw_ieee80211_hdr_3addr)+6, + .resp_ie_len = pmlmepriv->assoc_rsp_len-sizeof(struct rtw_ieee80211_hdr_3addr)-6, + }; + cfg80211_roamed(padapter->pnetdev, &roam_info, GFP_ATOMIC); + } + #else cfg80211_roamed(padapter->pnetdev #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) || defined(COMPAT_KERNEL_RELEASE) , notify_channel @@ -763,6 +776,7 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter) , pmlmepriv->assoc_rsp + sizeof(struct rtw_ieee80211_hdr_3addr) + 6 , pmlmepriv->assoc_rsp_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 6 , GFP_ATOMIC); + #endif } else { #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) || defined(COMPAT_KERNEL_RELEASE) RTW_INFO("pwdev->sme_state(b)=%d\n", pwdev->sme_state); @@ -1730,10 +1744,17 @@ enum nl80211_iftype { NL80211_IFTYPE_MAX = NUM_NL80211_IFTYPES - 1 }; #endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) +static int cfg80211_rtw_change_iface(struct wiphy *wiphy, + struct net_device *ndev, + enum nl80211_iftype type, + struct vif_params *params) +#else static int cfg80211_rtw_change_iface(struct wiphy *wiphy, struct net_device *ndev, enum nl80211_iftype type, u32 *flags, struct vif_params *params) +#endif { enum nl80211_iftype old_type; NDIS_802_11_NETWORK_INFRASTRUCTURE networkType; @@ -3702,7 +3723,11 @@ static int #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)) unsigned char name_assign_type, #endif + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) + enum nl80211_iftype type, struct vif_params *params) + #else enum nl80211_iftype type, u32 *flags, struct vif_params *params) + #endif { int ret = 0; struct net_device *ndev = NULL; @@ -6330,7 +6355,11 @@ static void rtw_cfg80211_preinit_wiphy(_adapter *adapter, struct wiphy *wiphy) #endif #if defined(CONFIG_PM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)) +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)) wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN; +#else // kernel >= 4.12 + wiphy->max_sched_scan_reqs = 1; +#endif #ifdef CONFIG_PNO_SUPPORT wiphy->max_sched_scan_ssids = MAX_PNO_LIST_COUNT; #endif From 6f970e081d0a7db12523043fad64ce4fb4b90328 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Thu, 24 Aug 2017 15:00:10 +0200 Subject: [PATCH 002/234] reverted back kernel 4.12 support * Reverted the kernel v4.12 support patch because of different errors on building. --- os_dep/linux/ioctl_cfg80211.c | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 35f070612..ccb931047 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -753,19 +753,6 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter) #endif RTW_INFO(FUNC_ADPT_FMT" call cfg80211_roamed\n", FUNC_ADPT_ARG(padapter)); - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) - { - struct cfg80211_roam_info roam_info = { - .channel = notify_channel, - .bssid = cur_network->network.MacAddress, - .req_ie = pmlmepriv->assoc_req+sizeof(struct rtw_ieee80211_hdr_3addr)+2, - .req_ie_len = pmlmepriv->assoc_req_len-sizeof(struct rtw_ieee80211_hdr_3addr)-2, - .resp_ie = pmlmepriv->assoc_rsp+sizeof(struct rtw_ieee80211_hdr_3addr)+6, - .resp_ie_len = pmlmepriv->assoc_rsp_len-sizeof(struct rtw_ieee80211_hdr_3addr)-6, - }; - cfg80211_roamed(padapter->pnetdev, &roam_info, GFP_ATOMIC); - } - #else cfg80211_roamed(padapter->pnetdev #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) || defined(COMPAT_KERNEL_RELEASE) , notify_channel @@ -776,7 +763,6 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter) , pmlmepriv->assoc_rsp + sizeof(struct rtw_ieee80211_hdr_3addr) + 6 , pmlmepriv->assoc_rsp_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 6 , GFP_ATOMIC); - #endif } else { #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) || defined(COMPAT_KERNEL_RELEASE) RTW_INFO("pwdev->sme_state(b)=%d\n", pwdev->sme_state); @@ -1744,17 +1730,10 @@ enum nl80211_iftype { NL80211_IFTYPE_MAX = NUM_NL80211_IFTYPES - 1 }; #endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) -static int cfg80211_rtw_change_iface(struct wiphy *wiphy, - struct net_device *ndev, - enum nl80211_iftype type, - struct vif_params *params) -#else static int cfg80211_rtw_change_iface(struct wiphy *wiphy, struct net_device *ndev, enum nl80211_iftype type, u32 *flags, struct vif_params *params) -#endif { enum nl80211_iftype old_type; NDIS_802_11_NETWORK_INFRASTRUCTURE networkType; @@ -3723,11 +3702,7 @@ static int #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)) unsigned char name_assign_type, #endif - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) - enum nl80211_iftype type, struct vif_params *params) - #else enum nl80211_iftype type, u32 *flags, struct vif_params *params) - #endif { int ret = 0; struct net_device *ndev = NULL; @@ -6355,11 +6330,7 @@ static void rtw_cfg80211_preinit_wiphy(_adapter *adapter, struct wiphy *wiphy) #endif #if defined(CONFIG_PM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)) -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)) wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN; -#else // kernel >= 4.12 - wiphy->max_sched_scan_reqs = 1; -#endif #ifdef CONFIG_PNO_SUPPORT wiphy->max_sched_scan_ssids = MAX_PNO_LIST_COUNT; #endif From f8108dbd4e339a64e009da6eb5de5ac2367755b1 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Thu, 24 Aug 2017 17:02:47 +0200 Subject: [PATCH 003/234] More USB VID/PID * Added support for Alfa - AWUS036AC * Added support for Amped Wireless ACA1 * Added support for TP-Link - Archer T4U AC1300 * Added support for TP-Link - Arhcer T4UH AC1300 * Added support for TP-Link - T4UHP * Added support for TP-Link - T4UHP (other) --- os_dep/linux/usb_intf.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index 224e6047f..f8f2e6863 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -167,9 +167,15 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x13b1, 0x003f), .driver_info = RTL8812}, /* Linksys - WUSB6300 */ {USB_DEVICE(0x2357, 0x0101), .driver_info = RTL8812}, /* TP-Link - Archer T4U */ {USB_DEVICE(0x2357, 0x0103), .driver_info = RTL8812}, /* TP-Link - T4UH */ + {USB_DEVICE(0x2357, 0x010D), .driver_info = RTL8812}, /* TP-Link - Archer T4U AC1300 */ + {USB_DEVICE(0x2357, 0x010E), .driver_info = RTL8812}, /* TP-Link - Archer T4UH AC1300 */ + {USB_DEVICE(0x2357, 0x010F), .driver_info = RTL8812}, /* TP-Link - T4UHP */ + {USB_DEVICE(0x2357, 0x0122), .driver_info = RTL8812}, /* TP-Link - T4UHP (other) */ {USB_DEVICE(0x20f4, 0x805b), .driver_info = RTL8812}, /* TRENDnet - */ {USB_DEVICE(0x0411, 0x025d), .driver_info = RTL8812}, /* Buffalo - WI-U3-866D */ {USB_DEVICE(0x050D, 0x1109), .driver_info = RTL8812}, /* Belkin F9L1109 - SerComm */ + {USB_DEVICE(0x148F, 0x9097), .driver_info = RTL8812}, /* Amped Wireless ACA1 */ + {USB_DEVICE(0x0BDA, 0x8812), .driver_info = RTL8812}, /* Alfa - AWUS036AC */ #endif #ifdef CONFIG_RTL8821A From b71dd3f5c0ca6e387c17635d6ddf28b8b952a7db Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 27 Aug 2017 11:16:13 +0200 Subject: [PATCH 004/234] DKMS support * Added DKMS support for the v5.1.5 branch --- dkms.conf | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 dkms.conf diff --git a/dkms.conf b/dkms.conf new file mode 100644 index 000000000..708263d30 --- /dev/null +++ b/dkms.conf @@ -0,0 +1,7 @@ +PACKAGE_NAME="rtl8812au" +PACKAGE_VERSION="#MODULE_VERSION#" +BUILT_MODULE_NAME[0]="8812au" +MAKE="'make' -j4" +CLEAN="'make' clean" +DEST_MODULE_LOCATION[0]="/updates/dkms" +AUTOINSTALL="YES" From 1e21bc5f523074a4e2f1ad86bb9c3493682bde67 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 27 Aug 2017 11:17:46 +0200 Subject: [PATCH 005/234] DKMS support * Added DKMS support --- dkms-install.sh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 dkms-install.sh diff --git a/dkms-install.sh b/dkms-install.sh new file mode 100644 index 000000000..51d8f6685 --- /dev/null +++ b/dkms-install.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +if [[ $EUID -ne 0 ]]; then + echo "You must run this with superuser priviliges. Try \"sudo ./dkms-install.sh\"" 2>&1 + exit 1 +else + echo "About to run dkms install steps..." +fi + +DRV_DIR=rtl8812au +DRV_NAME=rtl8812au +DRV_VERSION=5.1.5 + +cp -r ../${DRV_DIR} /usr/src/${DRV_NAME}-${DRV_VERSION} + +dkms add -m ${DRV_NAME} -v ${DRV_VERSION} +dkms build -m ${DRV_NAME} -v ${DRV_VERSION} +dkms install -m ${DRV_NAME} -v ${DRV_VERSION} +RESULT=$? + +echo "Finished running dkms install steps." + +exit $RESULT From 07ee2c2b34d1edd531e1d10e20a07ddb4d4d466b Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 27 Aug 2017 11:19:54 +0200 Subject: [PATCH 006/234] DKMS support * Added DKMS support --- dkms-remove.sh | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 dkms-remove.sh diff --git a/dkms-remove.sh b/dkms-remove.sh new file mode 100644 index 000000000..51a3a3277 --- /dev/null +++ b/dkms-remove.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +if [[ $EUID -ne 0 ]]; then + echo "You must run this with superuser priviliges. Try \"sudo ./dkms-remove.sh\"" 2>&1 + exit 1 +else + echo "About to run dkms removal steps..." +fi + +DRV_DIR=rtl8812au +DRV_NAME=rtl8812au +DRV_VERSION=5.1.5 + +dkms remove ${DRV_NAME}/${DRV_VERSION} --all +rm -rf /usr/src/${DRV_NAME}-${DRV_VERSION} + +RESULT=$? +if [[ "$RESULT" != "0" ]]; then + echo "Error occurred while running dkms remove." 2>&1 +else + echo "Finished running dkms removal steps." +fi + +exit $RESULT From bcdaa3d214bad901d14d749cca609d24306839d7 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 27 Aug 2017 11:25:10 +0200 Subject: [PATCH 007/234] Fix kernel v4.12 support * Fixed up kernel v4.12 support --- os_dep/linux/ioctl_cfg80211.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index ccb931047..949e804a3 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -1730,10 +1730,17 @@ enum nl80211_iftype { NL80211_IFTYPE_MAX = NUM_NL80211_IFTYPES - 1 }; #endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) +static int cfg80211_rtw_change_iface(struct wiphy *wiphy, + struct net_device *ndev, + enum nl80211_iftype type, + struct vif_params *params) +#else static int cfg80211_rtw_change_iface(struct wiphy *wiphy, struct net_device *ndev, enum nl80211_iftype type, u32 *flags, struct vif_params *params) +#endif { enum nl80211_iftype old_type; NDIS_802_11_NETWORK_INFRASTRUCTURE networkType; @@ -3702,7 +3709,11 @@ static int #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)) unsigned char name_assign_type, #endif + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) + enum nl80211_iftype type, struct vif_params *params) + #else enum nl80211_iftype type, u32 *flags, struct vif_params *params) + #endif { int ret = 0; struct net_device *ndev = NULL; From 11cc9318cedf243e71a79c2c564406e274b2d70e Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 27 Aug 2017 11:30:16 +0200 Subject: [PATCH 008/234] Fix kernel v4.12 support * Fixed kernel v4.12 support --- os_dep/linux/ioctl_cfg80211.c | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 949e804a3..5895645d6 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -747,12 +747,28 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter) struct ieee80211_channel *notify_channel; u32 freq; u16 channel = cur_network->network.Configuration.DSConfig; - + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0)) + struct cfg80211_roam_info roam_info = {}; + #endif + freq = rtw_ch2freq(channel); notify_channel = ieee80211_get_channel(wiphy, freq); #endif RTW_INFO(FUNC_ADPT_FMT" call cfg80211_roamed\n", FUNC_ADPT_ARG(padapter)); + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0)) + roam_info.channel = notify_channel; + roam_info.bssid = cur_network->network.MacAddress; + roam_info.req_ie = + pmlmepriv->assoc_req+sizeof(struct rtw_ieee80211_hdr_3addr)+2; + roam_info.req_ie_len = + pmlmepriv->assoc_req_len-sizeof(struct rtw_ieee80211_hdr_3addr)-2; + roam_info.resp_ie = + pmlmepriv->assoc_rsp+sizeof(struct rtw_ieee80211_hdr_3addr)+6; + roam_info.resp_ie_len = + pmlmepriv->assoc_rsp_len-sizeof(struct rtw_ieee80211_hdr_3addr)-6; + cfg80211_roamed(padapter->pnetdev, &roam_info, GFP_ATOMIC); + #else cfg80211_roamed(padapter->pnetdev #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) || defined(COMPAT_KERNEL_RELEASE) , notify_channel @@ -763,6 +779,7 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter) , pmlmepriv->assoc_rsp + sizeof(struct rtw_ieee80211_hdr_3addr) + 6 , pmlmepriv->assoc_rsp_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 6 , GFP_ATOMIC); + #endif } else { #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) || defined(COMPAT_KERNEL_RELEASE) RTW_INFO("pwdev->sme_state(b)=%d\n", pwdev->sme_state); @@ -3643,7 +3660,12 @@ static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name, struct ne mon_ndev->type = ARPHRD_IEEE80211_RADIOTAP; strncpy(mon_ndev->name, name, IFNAMSIZ); mon_ndev->name[IFNAMSIZ - 1] = 0; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 9)) + mon_ndev->needs_free_netdev = false; + mon_ndev->priv_destructor = rtw_ndev_destructor; +#else mon_ndev->destructor = rtw_ndev_destructor; +#endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)) mon_ndev->netdev_ops = &rtw_cfg80211_monitor_if_ops; @@ -4284,8 +4306,8 @@ static int cfg80211_rtw_get_channel(struct wiphy *wiphy, struct wireless_dev *wd int channel; int control_freq; int center_freq; - int center_freq2 = 0; - int width = NL80211_CHAN_WIDTH_20; + int center_freq2=0; + int width; int band; int bandWidth; int offset; @@ -4297,7 +4319,7 @@ static int cfg80211_rtw_get_channel(struct wiphy *wiphy, struct wireless_dev *wd return -ENODEV; offset = rtw_get_oper_choffset(padapter); - center_freq = channel = adapter_to_dvobj(padapter)->oper_channel; + channel = adapter_to_dvobj(padapter)->oper_channel; if(channel >= 1){ switch(pHalData->CurrentBandType){ @@ -6341,7 +6363,11 @@ static void rtw_cfg80211_preinit_wiphy(_adapter *adapter, struct wiphy *wiphy) #endif #if defined(CONFIG_PM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)) + #if (LINUX_VERSION_CODE < KERNEL_VERSION(4,12,0)) wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN; + #else // kernel >= 4.12 + wiphy->max_sched_scan_reqs = 1; + #endif #ifdef CONFIG_PNO_SUPPORT wiphy->max_sched_scan_ssids = MAX_PNO_LIST_COUNT; #endif From 691b536e2169bd6b73a530bde3c5748153cf8b6a Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 27 Aug 2017 17:42:44 +0200 Subject: [PATCH 009/234] corrected TX_POWER_TO_MAX setting * Fixes TX_Power to Max to that RegDoms allowed maximum, resolves issues with TLP and other powersaving affecting signal stability. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 64a470cb4..68edb5474 100755 --- a/Makefile +++ b/Makefile @@ -55,7 +55,7 @@ CONFIG_EXT_CLK = n CONFIG_TRAFFIC_PROTECT = y CONFIG_LOAD_PHY_PARA_FROM_FILE = y CONFIG_CALIBRATE_TX_POWER_BY_REGULATORY = n -CONFIG_CALIBRATE_TX_POWER_TO_MAX = n +CONFIG_CALIBRATE_TX_POWER_TO_MAX = y CONFIG_RTW_ADAPTIVITY_EN = disable CONFIG_RTW_ADAPTIVITY_MODE = normal CONFIG_SIGNAL_SCALE_MAPPING = n From 65270af7340176be98e51706e06ad5df4f689ca3 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 27 Aug 2017 17:55:47 +0200 Subject: [PATCH 010/234] removed warnings * Removed "Wno-misleading-indentation" warning * Removed "Wno-date-time warning --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 68edb5474..1279ac729 100755 --- a/Makefile +++ b/Makefile @@ -13,6 +13,8 @@ EXTRA_CFLAGS += -Wno-unused-label EXTRA_CFLAGS += -Wno-unused-parameter EXTRA_CFLAGS += -Wno-unused-function EXTRA_CFLAGS += -Wno-unused +EXTRA_CFLAGS += -Wno-date-time +EXTRA_CFLAGS += -Wno-misleading-indentation #EXTRA_CFLAGS += -Wno-uninitialized EXTRA_CFLAGS += -Wno-error=date-time # Fix compile error on gcc 4.9 and later From 684e49e7fb07b19eff1dbdff80e5c8b6f4d25898 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 27 Aug 2017 18:08:43 +0200 Subject: [PATCH 011/234] fixed more warnings * Fixed more warnings on build/compilation --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1279ac729..ad7b0b760 100755 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ EXTRA_CFLAGS += -Wno-unused-function EXTRA_CFLAGS += -Wno-unused EXTRA_CFLAGS += -Wno-date-time EXTRA_CFLAGS += -Wno-misleading-indentation -#EXTRA_CFLAGS += -Wno-uninitialized +EXTRA_CFLAGS += -Wno-uninitialized EXTRA_CFLAGS += -Wno-error=date-time # Fix compile error on gcc 4.9 and later EXTRA_CFLAGS += -I$(src)/include From aa3c24c721e2dedc6bc24fd768a53a6b0319d379 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 27 Aug 2017 20:06:38 +0200 Subject: [PATCH 012/234] Created README.md --- README.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 000000000..6ec114434 --- /dev/null +++ b/README.md @@ -0,0 +1,47 @@ +# RTL8812AU/21AU and RTL8814AU driver with monitor mode and frame injection + + +## DKMS +This driver can be installed using [DKMS](http://linux.dell.com/dkms/). This is a system which will automatically recompile and install a kernel module when a new kernel gets installed or updated. To make use of DKMS, install the `dkms` package, which on Debian (based) systems is done like this: +``` +sudo apt install dkms +``` + +## Installation of Driver +In order to install the driver open a terminal in the directory with the source code and execute the following command: +``` +sudo ./dkms-install.sh +``` + +## Removal of Driver +In order to remove the driver from your system open a terminal in the directory with the source code and execute the following command: +``` +sudo ./dkms-remove.sh +``` + +## Make +For building the RTL8812AU driver with 'make' use +``` +make +``` +and for building the RTL8814AU driver with 'make' use +``` +make RTL8814=1 +``` +but for installing both these drivers use these commands on e.g Kali on kernel v4.12 +``` +make +make RTL8814=1 +make install +cp 8814au.ko /lib/modules/4.12.0-kali1-amd64/kernel/drivers/net/wireless/ +``` + +## Notes +For Ubuntu 17.04 add the following lines +``` +[device] +wifi.scan-rand-mac-address=no +``` +at the end of file /etc/NetworkManager/NetworkManager.conf and restart NetworkManager with the command: +``` +sudo service NetworkManager restart From af17fc4bc29d59ec6e8c33258f334869a783537f Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 27 Aug 2017 22:19:54 +0200 Subject: [PATCH 013/234] update README.md * Updated README.md with correct installation methods. --- README.md | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 6ec114434..80c70a426 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ -# RTL8812AU/21AU and RTL8814AU driver with monitor mode and frame injection +# RTL8812AU/21AU and RTL8814AU drivers +# with monitor mode and frame injection ## DKMS -This driver can be installed using [DKMS](http://linux.dell.com/dkms/). This is a system which will automatically recompile and install a kernel module when a new kernel gets installed or updated. To make use of DKMS, install the `dkms` package, which on Debian (based) systems is done like this: +This driver can be installed using [DKMS]. This is a system which will automatically recompile and install a kernel module when a new kernel gets installed or updated. To make use of DKMS, install the `dkms` package, which on Debian (based) systems is done like this: ``` sudo apt install dkms ``` @@ -20,20 +21,15 @@ sudo ./dkms-remove.sh ``` ## Make -For building the RTL8812AU driver with 'make' use +For building & installing the RTL8812AU driver with 'make' use ``` -make -``` -and for building the RTL8814AU driver with 'make' use -``` -make RTL8814=1 +make +make install ``` -but for installing both these drivers use these commands on e.g Kali on kernel v4.12 +and for building & installing the RTL8814AU driver with 'make' use ``` -make make RTL8814=1 -make install -cp 8814au.ko /lib/modules/4.12.0-kali1-amd64/kernel/drivers/net/wireless/ +make install 8814au ``` ## Notes From e6db3c9b58f575303a2a1472850581176cbde938 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Mon, 28 Aug 2017 09:27:01 +0200 Subject: [PATCH 014/234] fixed DKMS support * Fixed DKMS support for installing both modules * Fixed package/version information --- dkms.conf | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/dkms.conf b/dkms.conf index 708263d30..87f7d4d01 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,7 +1,9 @@ -PACKAGE_NAME="rtl8812au" -PACKAGE_VERSION="#MODULE_VERSION#" -BUILT_MODULE_NAME[0]="8812au" -MAKE="'make' -j4" -CLEAN="'make' clean" -DEST_MODULE_LOCATION[0]="/updates/dkms" -AUTOINSTALL="YES" +PACKAGE_NAME="realtek-rtl88xxau" +PACKAGE_VERSION="5.1.5~20170828" +CLEAN="make clean" +BUILT_MODULE_NAME[0]=8812au +DEST_MODULE_LOCATION[0]="/updates" +MAKE[0]="'make' && 'make' RTL8814=1" +BUILT_MODULE_NAME[1]=8814au +DEST_MODULE_LOCATION[1]="/updates" +AUTOINSTALL="yes" From 076efe693020562bc205523613f3964daa8b76a7 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Thu, 31 Aug 2017 18:09:19 +0200 Subject: [PATCH 015/234] More USB VID/PID * Added support for Netgear A7000 * Added additional support for TRENDnet --- os_dep/linux/usb_intf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index f8f2e6863..f6c8ab09c 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -228,9 +228,9 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x7392, 0xA834), .driver_info = RTL8814A}, /* Edimax - Edimax */ {USB_DEVICE(0x7392, 0xA833), .driver_info = RTL8814A}, /* Edimax - Edimax */ {USB_DEVICE(0x2357, 0x0106), .driver_info = RTL8814A}, /* TP-LINK Archer T9UH */ + {USB_DEVICE(0x20f4, 0x809a), .driver_info = RTL8814A}, /* TRENDnet - TRENDnet */ {USB_DEVICE(0x20f4, 0x809B), .driver_info = RTL8814A}, /* TRENDnet TEW-809UB */ - - + {USB_DEVICE(0x0846, 0x9054), .driver_info = RTL8814A}, /* Netgear A7000 */ #endif /* CONFIG_RTL8814A */ #ifdef CONFIG_RTL8188F From 1f66474d20303c04481f0a18659891b89cfb493b Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Thu, 31 Aug 2017 18:10:35 +0200 Subject: [PATCH 016/234] Update dkms.conf * Added new version bump * Removed unused zero-line at the end --- dkms.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dkms.conf b/dkms.conf index 87f7d4d01..922dfa9e8 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.1.5~20170828" +PACKAGE_VERSION="5.1.5~20170831" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" From 5027c9a0f24f4cacd2cae4c0065587c2b8295bd2 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Thu, 31 Aug 2017 18:21:27 +0200 Subject: [PATCH 017/234] Update README.md * Updated README.md with "Credits" and "Sources" * Fixes small typo --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index 80c70a426..0d45d6d0b 100644 --- a/README.md +++ b/README.md @@ -41,3 +41,14 @@ wifi.scan-rand-mac-address=no at the end of file /etc/NetworkManager/NetworkManager.conf and restart NetworkManager with the command: ``` sudo service NetworkManager restart +``` + +## Credits +``` +astsam - for the main work + monitor/injection support - https://github.com/astsam +``` + +## Sources +``` +astsam - https://github.com/astsam/rtl8812au +``` From 9a32f604d9ae9c7712162cfeff90b5798c93dd6d Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Thu, 31 Aug 2017 21:22:04 +0200 Subject: [PATCH 018/234] USB VID/PID UPPER_CASE * Fixed several VID/PID uppercase "typos" * Changed info in Alfa adapter from "Alfa - AWUS036AC" to "Alfa - AWUS036AC, AWUS036ACH & AWUS036EAC" --- os_dep/linux/usb_intf.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index f6c8ab09c..78ded8c92 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -164,18 +164,18 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x07B8, 0x8812), .driver_info = RTL8812}, /* Abocom - Abocom */ {USB_DEVICE(0x2001, 0x3315), .driver_info = RTL8812}, /* D-Link - Cameo */ {USB_DEVICE(0x2001, 0x3316), .driver_info = RTL8812}, /* D-Link - Cameo */ - {USB_DEVICE(0x13b1, 0x003f), .driver_info = RTL8812}, /* Linksys - WUSB6300 */ + {USB_DEVICE(0x13B1, 0x003F), .driver_info = RTL8812}, /* Linksys - WUSB6300 */ {USB_DEVICE(0x2357, 0x0101), .driver_info = RTL8812}, /* TP-Link - Archer T4U */ {USB_DEVICE(0x2357, 0x0103), .driver_info = RTL8812}, /* TP-Link - T4UH */ {USB_DEVICE(0x2357, 0x010D), .driver_info = RTL8812}, /* TP-Link - Archer T4U AC1300 */ {USB_DEVICE(0x2357, 0x010E), .driver_info = RTL8812}, /* TP-Link - Archer T4UH AC1300 */ {USB_DEVICE(0x2357, 0x010F), .driver_info = RTL8812}, /* TP-Link - T4UHP */ {USB_DEVICE(0x2357, 0x0122), .driver_info = RTL8812}, /* TP-Link - T4UHP (other) */ - {USB_DEVICE(0x20f4, 0x805b), .driver_info = RTL8812}, /* TRENDnet - */ - {USB_DEVICE(0x0411, 0x025d), .driver_info = RTL8812}, /* Buffalo - WI-U3-866D */ + {USB_DEVICE(0x20F4, 0x805B), .driver_info = RTL8812}, /* TRENDnet - */ + {USB_DEVICE(0x0411, 0x025D), .driver_info = RTL8812}, /* Buffalo - WI-U3-866D */ {USB_DEVICE(0x050D, 0x1109), .driver_info = RTL8812}, /* Belkin F9L1109 - SerComm */ {USB_DEVICE(0x148F, 0x9097), .driver_info = RTL8812}, /* Amped Wireless ACA1 */ - {USB_DEVICE(0x0BDA, 0x8812), .driver_info = RTL8812}, /* Alfa - AWUS036AC */ + {USB_DEVICE(0x0BDA, 0x8812), .driver_info = RTL8812}, /* Alfa - AWUS036AC, AWUS036ACH & AWUS036EAC */ #endif #ifdef CONFIG_RTL8821A @@ -221,15 +221,15 @@ static struct usb_device_id rtw_usb_id_tbl[] = { #ifdef CONFIG_RTL8814A {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8813), .driver_info = RTL8814A}, - {USB_DEVICE(0x2001, 0x331a), .driver_info = RTL8814A}, /* D-Link - D-Link */ - {USB_DEVICE(0x0b05, 0x1817), .driver_info = RTL8814A}, /* ASUS - ASUSTeK */ + {USB_DEVICE(0x2001, 0x331A), .driver_info = RTL8814A}, /* D-Link - D-Link */ + {USB_DEVICE(0x0B05, 0x1817), .driver_info = RTL8814A}, /* ASUS - ASUSTeK */ {USB_DEVICE(0x056E, 0x400B), .driver_info = RTL8814A}, /* ELECOM - ELECOM */ {USB_DEVICE(0x056E, 0x400D), .driver_info = RTL8814A}, /* ELECOM - ELECOM */ {USB_DEVICE(0x7392, 0xA834), .driver_info = RTL8814A}, /* Edimax - Edimax */ {USB_DEVICE(0x7392, 0xA833), .driver_info = RTL8814A}, /* Edimax - Edimax */ {USB_DEVICE(0x2357, 0x0106), .driver_info = RTL8814A}, /* TP-LINK Archer T9UH */ - {USB_DEVICE(0x20f4, 0x809a), .driver_info = RTL8814A}, /* TRENDnet - TRENDnet */ - {USB_DEVICE(0x20f4, 0x809B), .driver_info = RTL8814A}, /* TRENDnet TEW-809UB */ + {USB_DEVICE(0x20F4, 0x809A), .driver_info = RTL8814A}, /* TRENDnet - TRENDnet */ + {USB_DEVICE(0x20F4, 0x809B), .driver_info = RTL8814A}, /* TRENDnet TEW-809UB */ {USB_DEVICE(0x0846, 0x9054), .driver_info = RTL8814A}, /* Netgear A7000 */ #endif /* CONFIG_RTL8814A */ @@ -250,8 +250,8 @@ static struct usb_device_id rtw_usb_id_tbl[] = { #ifdef CONFIG_RTL8821C /*=== Realtek demoboard ===*/ - {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDER_ID_REALTEK, 0xb82b, 0xff, 0xff, 0xff), .driver_info = RTL8821C}, /* 8821CU */ - {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDER_ID_REALTEK, 0xb820, 0xff, 0xff, 0xff), .driver_info = RTL8821C}, /* 8821CU */ + {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDER_ID_REALTEK, 0xB82B, 0xff, 0xff, 0xff), .driver_info = RTL8821C}, /* 8821CU */ + {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDER_ID_REALTEK, 0xB820, 0xff, 0xff, 0xff), .driver_info = RTL8821C}, /* 8821CU */ /*=== Customer ID ===*/ #endif @@ -265,7 +265,7 @@ int const rtw_usb_id_len = sizeof(rtw_usb_id_tbl) / sizeof(struct usb_device_id) static struct specific_device_id specific_device_id_tbl[] = { {.idVendor = USB_VENDER_ID_REALTEK, .idProduct = 0x8177, .flags = SPEC_DEV_ID_DISABLE_HT}, /* 8188cu 1*1 dongole, (b/g mode only) */ {.idVendor = USB_VENDER_ID_REALTEK, .idProduct = 0x817E, .flags = SPEC_DEV_ID_DISABLE_HT}, /* 8188CE-VAU USB minCard (b/g mode only) */ - {.idVendor = 0x0b05, .idProduct = 0x1791, .flags = SPEC_DEV_ID_DISABLE_HT}, + {.idVendor = 0x0B05, .idProduct = 0x1791, .flags = SPEC_DEV_ID_DISABLE_HT}, {.idVendor = 0x13D3, .idProduct = 0x3311, .flags = SPEC_DEV_ID_DISABLE_HT}, {.idVendor = 0x13D3, .idProduct = 0x3359, .flags = SPEC_DEV_ID_DISABLE_HT}, /* Russian customer -Azwave (8188CE-VAU g mode) */ #ifdef RTK_DMP_PLATFORM From b3c72ae35fb8ae7f385f7ac8873d204fb3682dad Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sat, 2 Sep 2017 11:16:31 +0200 Subject: [PATCH 019/234] More USB VID/PID * Added support for "Buffalo - WI-U2-433DHP" as reported by @kamijin-fanta --- os_dep/linux/usb_intf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index 78ded8c92..41ceb38ba 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -199,6 +199,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x0411, 0x0242), .driver_info = RTL8821}, /* ELECOM - WDC-433DU2H */ {USB_DEVICE(0x2019, 0xAB32), .driver_info = RTL8821}, /* Planex - GW-450S */ {USB_DEVICE(0x0846, 0x9052), .driver_info = RTL8821}, /* Netgear - A6100 */ + {USB_DEVICE(0x0411, 0x029B), .driver_info = RTL8821}, /* Buffalo - WI-U2-433DHP */ #endif #ifdef CONFIG_RTL8192E From 0b1068aa4754b9a07851231133190aaf97a4a029 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sat, 2 Sep 2017 12:50:38 +0200 Subject: [PATCH 020/234] Update README.md * Updated README.md for more sources --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0d45d6d0b..70d41111c 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,11 @@ sudo service NetworkManager restart astsam - for the main work + monitor/injection support - https://github.com/astsam ``` -## Sources +## Other Sources ``` -astsam - https://github.com/astsam/rtl8812au +astsam - https://github.com/astsam/rtl8812au +gnab - https://github.com/gnab/rtl8812au +zebulon2 - https://github.com/zebulon2/rtl8812au +paspro - https://github.com/paspro/rtl8812au +ulli-kroll - https://github.com/ulli-kroll/rtl8821au ``` From de29d4bbcfb7ce8349133fe61f1299dbd4775684 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 10 Sep 2017 11:38:29 +0200 Subject: [PATCH 021/234] Update README.md * Changed the 'make install 8814au' to corrected/correct 'make install RTL8814=1' --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 70d41111c..34c6e270a 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ make install and for building & installing the RTL8814AU driver with 'make' use ``` make RTL8814=1 -make install 8814au +make install RTL8814=1 ``` ## Notes From deb038247a08e51a4ce459ee553e5f29867e33ac Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Mon, 11 Sep 2017 00:57:05 +0200 Subject: [PATCH 022/234] More USB VID/PID * Added support for "D-Link - Alpha" #2 --- os_dep/linux/usb_intf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index 41ceb38ba..ff86d40c2 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -148,7 +148,6 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x881C), .driver_info = RTL8812}, /* Default ID */ /*=== Customer ID ===*/ {USB_DEVICE(0x050D, 0x1106), .driver_info = RTL8812}, /* Belkin - sercomm */ - {USB_DEVICE(0x2001, 0x330E), .driver_info = RTL8812}, /* D-Link - ALPHA */ {USB_DEVICE(0x7392, 0xA822), .driver_info = RTL8812}, /* Edimax - Edimax */ {USB_DEVICE(0x0DF6, 0x0074), .driver_info = RTL8812}, /* Sitecom - Edimax */ {USB_DEVICE(0x04BB, 0x0952), .driver_info = RTL8812}, /* I-O DATA - Edimax */ @@ -162,6 +161,8 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x1740, 0x0100), .driver_info = RTL8812}, /* EnGenius - EnGenius */ {USB_DEVICE(0x2019, 0xAB30), .driver_info = RTL8812}, /* Planex - Abocom */ {USB_DEVICE(0x07B8, 0x8812), .driver_info = RTL8812}, /* Abocom - Abocom */ + {USB_DEVICE(0x2001, 0x330E), .driver_info = RTL8812}, /* D-Link - ALPHA */ + {USB_DEVICE(0x2001, 0x3313), .driver_info = RTL8812}, /* D-Link - ALPHA */ {USB_DEVICE(0x2001, 0x3315), .driver_info = RTL8812}, /* D-Link - Cameo */ {USB_DEVICE(0x2001, 0x3316), .driver_info = RTL8812}, /* D-Link - Cameo */ {USB_DEVICE(0x13B1, 0x003F), .driver_info = RTL8812}, /* Linksys - WUSB6300 */ From 2ee971f697e738b174a6d15ba57142dd51b7ced5 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Mon, 11 Sep 2017 01:01:46 +0200 Subject: [PATCH 023/234] update dkms.conf * Updated version information for DKMS building --- dkms.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dkms.conf b/dkms.conf index 922dfa9e8..0748e0881 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.1.5~20170831" +PACKAGE_VERSION="5.1.5~20170911" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" From 79e5553ada04dc848032f97bddfd9851ed016030 Mon Sep 17 00:00:00 2001 From: qwikwit Date: Thu, 14 Sep 2017 08:48:52 -0400 Subject: [PATCH 024/234] Update README.md --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 34c6e270a..6c59c1b3a 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,16 @@ make install RTL8814=1 ``` ## Notes +Download +``` +git clone https://github.com/aircrack-ng/rtl8812au.git +cd rtl* +``` +Maybe you should install some packet to build it. +``` +sudo apt-get install build-essential +sudo apt-get install linux-headers-`uname -r` +``` For Ubuntu 17.04 add the following lines ``` [device] From 36d66d8dcda2fcdd8210ec4928886768923aeb51 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sat, 16 Sep 2017 11:34:34 +0200 Subject: [PATCH 025/234] Update README.md * Updated "Other Sources" to include sources used for pulling patches & USB VID/PID's --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 34c6e270a..e840d0556 100644 --- a/README.md +++ b/README.md @@ -55,4 +55,5 @@ gnab - https://github.com/gnab/rtl8812au zebulon2 - https://github.com/zebulon2/rtl8812au paspro - https://github.com/paspro/rtl8812au ulli-kroll - https://github.com/ulli-kroll/rtl8821au +tpircher - https://github.com/tpircher/rtl8814AU ``` From 41b9192686fad7792eab9e0ed87aa956a2da7e45 Mon Sep 17 00:00:00 2001 From: qwikwit Date: Sun, 17 Sep 2017 07:55:41 -0400 Subject: [PATCH 026/234] Update README.md --- README.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/README.md b/README.md index 6c59c1b3a..ddcaac9fe 100644 --- a/README.md +++ b/README.md @@ -38,11 +38,44 @@ Download git clone https://github.com/aircrack-ng/rtl8812au.git cd rtl* ``` +To download v4.3.21 +``` +git clone -b v4.3.21 https://github.com/aircrack-ng/rtl8812au.git +``` Maybe you should install some packet to build it. ``` sudo apt-get install build-essential sudo apt-get install linux-headers-`uname -r` ``` +For setting monitor mode + 1. Fix problematic interference in monitor mode + ``` + airmon-ng check kill + ``` + Or + + Uncheck the box "Automatically connect to this network when it is avaiable" in nm-connection-editor. This only works if you have a saved wifi connection + + 2. Set interface down + ``` + sudo ip link set wlan0 down + ``` + 3. Set monitor mode + ``` + sudo iw dev wlan0 set type monitor + ``` + 4. Set interface up + ``` + sudo ip link set wlan0 up + ``` +For setting TX power (v4.3.21 branch only): +``` +sudo iwconfig wlan0 txpower 30 +``` +or +``` +sudo iw wlan0 set txpower fixed 3000 +``` For Ubuntu 17.04 add the following lines ``` [device] From 22eefdb74c7eaa6a7bc5846e91c66be8a0dfbc9f Mon Sep 17 00:00:00 2001 From: qwikwit Date: Sun, 17 Sep 2017 08:01:07 -0400 Subject: [PATCH 027/234] Update README.md --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index ddcaac9fe..116cce9bc 100644 --- a/README.md +++ b/README.md @@ -52,9 +52,7 @@ For setting monitor mode ``` airmon-ng check kill ``` - Or - - Uncheck the box "Automatically connect to this network when it is avaiable" in nm-connection-editor. This only works if you have a saved wifi connection + Or Uncheck the box "Automatically connect to this network when it is avaiable" in nm-connection-editor. This only works if you have a saved wifi connection 2. Set interface down ``` From 312e6888cfc55bfcf52afa8ca11c11578d859eb7 Mon Sep 17 00:00:00 2001 From: qwikwit Date: Sun, 17 Sep 2017 08:02:11 -0400 Subject: [PATCH 028/234] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 116cce9bc..47678907d 100644 --- a/README.md +++ b/README.md @@ -48,11 +48,11 @@ sudo apt-get install build-essential sudo apt-get install linux-headers-`uname -r` ``` For setting monitor mode - 1. Fix problematic interference in monitor mode + 1. Fix problematic interference in monitor mode. ``` airmon-ng check kill ``` - Or Uncheck the box "Automatically connect to this network when it is avaiable" in nm-connection-editor. This only works if you have a saved wifi connection + Or Uncheck the box "Automatically connect to this network when it is avaiable" in nm-connection-editor. This only works if you have a saved wifi connection. 2. Set interface down ``` From d8a60d9ae83add311b574cd3a3da3c2a8215a4bf Mon Sep 17 00:00:00 2001 From: qwikwit Date: Sun, 17 Sep 2017 08:02:53 -0400 Subject: [PATCH 029/234] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 47678907d..764c8ff9a 100644 --- a/README.md +++ b/README.md @@ -96,4 +96,5 @@ gnab - https://github.com/gnab/rtl8812au zebulon2 - https://github.com/zebulon2/rtl8812au paspro - https://github.com/paspro/rtl8812au ulli-kroll - https://github.com/ulli-kroll/rtl8821au +tpircher - https://github.com/tpircher/rtl8814AU ``` From 8cee2fa313e89451b881bdf3d225c44f598c8d6a Mon Sep 17 00:00:00 2001 From: qwikwit Date: Sun, 17 Sep 2017 08:05:31 -0400 Subject: [PATCH 030/234] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 764c8ff9a..88cd2bf7f 100644 --- a/README.md +++ b/README.md @@ -48,11 +48,11 @@ sudo apt-get install build-essential sudo apt-get install linux-headers-`uname -r` ``` For setting monitor mode - 1. Fix problematic interference in monitor mode. + 1. Fix problematic interference in monitor mode. ``` airmon-ng check kill ``` - Or Uncheck the box "Automatically connect to this network when it is avaiable" in nm-connection-editor. This only works if you have a saved wifi connection. + You may also uncheck the box "Automatically connect to this network when it is avaiable" in nm-connection-editor. This only works if you have a saved wifi connection. 2. Set interface down ``` From 12852799201b992c197f7186473a23757a44c85f Mon Sep 17 00:00:00 2001 From: dpShaker Date: Thu, 21 Sep 2017 21:43:47 +0200 Subject: [PATCH 031/234] Add support for pre-configured SeqNum via RadioTap See http://www.radiotap.org/fields/TX%20flags value 0x0010 --- core/rtw_xmit.c | 1 + hal/rtl8812a/usb/rtl8812au_xmit.c | 2 +- hal/rtl8814a/usb/rtl8814au_xmit.c | 5 ++++- include/rtw_xmit.h | 1 + 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/core/rtw_xmit.c b/core/rtw_xmit.c index f931d97b0..1620473a1 100644 --- a/core/rtw_xmit.c +++ b/core/rtw_xmit.c @@ -3994,6 +3994,7 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev) pattrib->ldpc = ldpc; pattrib->stbc = stbc; pattrib->retry_ctrl = (txflags & 0x08)?_FALSE:_TRUE; + pattrib->sw_seq = (txflags & 0x10)?_TRUE:_FALSE; pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; diff --git a/hal/rtl8812a/usb/rtl8812au_xmit.c b/hal/rtl8812a/usb/rtl8812au_xmit.c index bc5f9414f..68ee1672b 100644 --- a/hal/rtl8812a/usb/rtl8812au_xmit.c +++ b/hal/rtl8812a/usb/rtl8812au_xmit.c @@ -112,7 +112,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz , u8 ba /* offset 12 */ - if (!pattrib->qos_en) { + if (!pattrib->qos_en && pattrib->sw_seq == _FALSE) { SET_TX_DESC_HWSEQ_EN_8812(ptxdesc, 1); /* Hw set sequence number */ } else SET_TX_DESC_SEQ_8812(ptxdesc, pattrib->seqnum); diff --git a/hal/rtl8814a/usb/rtl8814au_xmit.c b/hal/rtl8814a/usb/rtl8814au_xmit.c index 8ac5268b5..910256045 100644 --- a/hal/rtl8814a/usb/rtl8814au_xmit.c +++ b/hal/rtl8814a/usb/rtl8814au_xmit.c @@ -122,7 +122,10 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag if (!pattrib->qos_en) { /* HW sequence, to fix to use 0 queue. todo: 4AC packets to use auto queue select */ - SET_TX_DESC_HWSEQ_EN_8814A(ptxdesc, 1); // Hw set sequence number + if(pattrib->sw_seq == _FALSE) + SET_TX_DESC_HWSEQ_EN_8814A(ptxdesc, 1); // Hw set sequence number + else + SET_TX_DESC_SEQ_8814A(ptxdesc, pattrib->seqnum); SET_TX_DESC_EN_HWEXSEQ_8814A(ptxdesc, 0); SET_TX_DESC_DISQSELSEQ_8814A(ptxdesc, 1); SET_TX_DESC_HW_SSN_SEL_8814A(ptxdesc, 0); diff --git a/include/rtw_xmit.h b/include/rtw_xmit.h index 1fc2d6f70..d37233805 100644 --- a/include/rtw_xmit.h +++ b/include/rtw_xmit.h @@ -421,6 +421,7 @@ struct pkt_attrib { u8 rate; u8 intel_proxim; u8 retry_ctrl; + u8 sw_seq; u8 mbssid; u8 ldpc; u8 stbc; From 4282ab418914d508179a199a5bde0e0a0139fed2 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 26 Sep 2017 08:08:46 +0200 Subject: [PATCH 032/234] USB3 fix in EEPROMUsbSwitch variable * Fixed a problem in the EEPROMUsbSwitch (at least in tested 8814AU) This solutions NEEDS to be tested further. --- os_dep/linux/usb_intf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index ff86d40c2..ef367ec64 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -657,8 +657,8 @@ static int usb_reprobe_switch_usb_mode(PADAPTER Adapter) u8 ret = _FALSE; /* efuse not allow driver to switch usb mode */ - if (pHalData->EEPROMUsbSwitch == _FALSE) - goto exit; + //if (pHalData->EEPROMUsbSwitch == _FALSE) + // goto exit; /* registry not allow driver to switch usb mode */ if (registry_par->switch_usb_mode == 0) From 8631a81c2bbce258ba3cd458246ac0f208e6f2e6 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 26 Sep 2017 17:51:40 +0200 Subject: [PATCH 033/234] Added ARM64 Support * Added support for ARM64 (such as Odroid C2 +++) --- Makefile | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Makefile b/Makefile index ad7b0b760..0a67f28a2 100755 --- a/Makefile +++ b/Makefile @@ -139,6 +139,7 @@ CONFIG_PLATFORM_RTK119X = n CONFIG_PLATFORM_RTK129X = n CONFIG_PLATFORM_NOVATEK_NT72668 = n CONFIG_PLATFORM_HISILICON = n +CONFIG_PLATFORM_ARM64 = n ############################################################### CONFIG_DRVEXT_MODULE = n @@ -1771,6 +1772,17 @@ KSRC := /home/android_sdk/Telechips/v13.05_r1-tcc-android-4.2.2_tcc893x-evm_buil MODULE_NAME := wlan endif +# ARM64 - odroid-c2 and such +ifeq ($(CONFIG_PLATFORM_ARM64), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +ARCH ?= arm64 +CROSS_COMPILE ?= +KVER ?= $(shell uname -r) +KSRC := /lib/modules/$(KVER)/build +MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ +INSTALL_PREFIX := +endif + ifeq ($(CONFIG_MULTIDRV), y) ifeq ($(CONFIG_SDIO_HCI), y) From 3efb0ad9214c154be9eaa46a5de5d30144a8b49c Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 26 Sep 2017 19:05:11 +0200 Subject: [PATCH 034/234] Update hal_usb_led.c * Add rtw_led_ctrl module parameter --- hal/led/hal_usb_led.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/hal/led/hal_usb_led.c b/hal/led/hal_usb_led.c index 44324f613..114f322ab 100644 --- a/hal/led/hal_usb_led.c +++ b/hal/led/hal_usb_led.c @@ -1749,6 +1749,24 @@ void BlinkHandler(PLED_USB pLed) return; } +#ifdef CONFIG_SW_LED + /* led_enable 1 is normal blinking so don't cause always on/off */ + if (padapter->registrypriv.led_ctrl != 1) { + if (padapter->registrypriv.led_ctrl == 0) + { + /* Cause LED to be always off */ + pLed->BlinkingLedState = RTW_LED_OFF; + /* RTW_INFO("Led off\n"); */ + } else { + /* Cause LED to be always on for led_ctrl 2 or greater */ + pLed->BlinkingLedState = RTW_LED_ON; + /* RTW_INFO("Led on\n"); */ + } + /* Skip various switch cases where SwLedBlink*() called below */ + pLed->CurrLedState = LED_UNKNOWN; + } +#endif + switch (ledpriv->LedStrategy) { case SW_LED_MODE0: SwLedBlink(pLed); From af1fc407d7c3955d902aad9558a8d5dd41598ced Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 26 Sep 2017 19:07:57 +0200 Subject: [PATCH 035/234] Update drv_types.h * Add rtw_led_ctrl module --- include/drv_types.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/drv_types.h b/include/drv_types.h index 7a081381b..3d400f993 100644 --- a/include/drv_types.h +++ b/include/drv_types.h @@ -397,6 +397,10 @@ struct registry_priv { u8 trx_share_mode; #endif u8 check_hw_status; + +#ifdef CONFIG_SW_LED + u8 led_ctrl; +#endif }; /* For registry parameters */ From 699922ec911c39b6b0dbc0782dcabb2192a4e670 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 26 Sep 2017 19:10:56 +0200 Subject: [PATCH 036/234] Update os_intfs.c * Add rtw_led_ctrl module --- os_dep/linux/os_intfs.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c index 0a9bdfded..035354b49 100644 --- a/os_dep/linux/os_intfs.c +++ b/os_dep/linux/os_intfs.c @@ -622,6 +622,12 @@ module_param(rtw_mcc_sta_bw40_target_tx_tp, int, 0644); module_param(rtw_mcc_sta_bw80_target_tx_tp, int, 0644); #endif /*CONFIG_MCC_MODE */ +#ifdef CONFIG_SW_LED +int rtw_led_ctrl = 1; /* Default to normal blink */ +module_param(rtw_led_ctrl, int, 0644); +MODULE_PARM_DESC(rtw_led_ctrl,"Led Control: 0=Always off, 1=Normal blink, 2=Always on"); +#endif /* CONFIG_SW_LED */ + void rtw_regsty_load_target_tx_power(struct registry_priv *regsty) { int path, rs; @@ -913,7 +919,10 @@ uint loadparam(_adapter *padapter) registry_par->trx_share_mode = rtw_trx_share_mode; #endif - +#ifdef CONFIG_SW_LED + registry_par->led_ctrl = (u8)rtw_led_ctrl; +#endif /* CONFIG_SW_LED */ + return status; } From 502443b1b989b47019e41a7f0b061d10bad46fb2 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 26 Sep 2017 19:17:04 +0200 Subject: [PATCH 037/234] Add rtw_led_ctrl module parameter for changing led Also adds example /etc/modprobe.d/ configuration file (realtek-leds.conf) that can be used to set this new parameter option value automatically at boot or when command e.g "modprobe 8812au" is done with no module parameter. Howto do this manually? sudo modprobe -r 8812au sudo modprobe 8812au rtw_led_ctrl=1 (0 is allways off, 1 is normal & 2 is allways on) --- realtek-leds.conf | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 realtek-leds.conf diff --git a/realtek-leds.conf b/realtek-leds.conf new file mode 100644 index 000000000..f8820ff51 --- /dev/null +++ b/realtek-leds.conf @@ -0,0 +1,20 @@ +# Place this file in directory /etc/modprobe.d/ +# Uncomment one options line so when modprobe occurs either manually or +# automatically (e.g., after boot with wifi usb adapter connected) it +# will set that option value. Manual modprobe will override this file +# if option value also included at the command line, e.g., +# $ sudo modprobe -r 8812au +# $ sudo modprobe 8812au rtw_led_ctrl=1 +# +# Led always off +#options 8812au rtw_led_ctrl=0 +#options 8814au rtw_led_ctrl=0 +# +# Default: normal blink of led (all options lines commented causes normal +# blink too). +options 8812au rtw_led_ctrl=1 +options 8814au rtw_led_ctrl=1 +# +# Led always on +#options 8812au rtw_led_ctrl=2 +#options 8814au rtw_led_ctrl=2 From 152960565aa0a447a066152ce53e73b342ddc8a9 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 26 Sep 2017 19:19:25 +0200 Subject: [PATCH 038/234] Update README.md * Added 1 more too "Other Sources" --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 88cd2bf7f..3f527e861 100644 --- a/README.md +++ b/README.md @@ -97,4 +97,5 @@ zebulon2 - https://github.com/zebulon2/rtl8812au paspro - https://github.com/paspro/rtl8812au ulli-kroll - https://github.com/ulli-kroll/rtl8821au tpircher - https://github.com/tpircher/rtl8814AU +xxNull-lsk - https://github.com/xxNull-lsk/rtl8812AU ``` From 9f4dbbe197e1518a0b2166ce3ca567d9cf50868c Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 26 Sep 2017 22:50:37 +0200 Subject: [PATCH 039/234] Update ARM64 Support * Updated ARM64 Support aarch64-linux-gnu-gcc-6 will be needed for compiling --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 0a67f28a2..b689e0644 100755 --- a/Makefile +++ b/Makefile @@ -1775,8 +1775,9 @@ endif # ARM64 - odroid-c2 and such ifeq ($(CONFIG_PLATFORM_ARM64), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT ARCH ?= arm64 -CROSS_COMPILE ?= +CROSS_COMPILE := aarch64-linux-gnu- KVER ?= $(shell uname -r) KSRC := /lib/modules/$(KVER)/build MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ From a2ce6b8237100f18de363c61958fc46a76f45a86 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Mon, 2 Oct 2017 21:18:05 +0200 Subject: [PATCH 040/234] Delete clean --- clean | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 clean diff --git a/clean b/clean deleted file mode 100644 index 87664218b..000000000 --- a/clean +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -rmmod 8192cu -rmmod 8192ce -rmmod 8192du -rmmod 8192de From 1dde18dc7daf9139ac4e6f2c71ad2dfd69bc9811 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Mon, 2 Oct 2017 21:18:23 +0200 Subject: [PATCH 041/234] Delete runwpa --- runwpa | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 runwpa diff --git a/runwpa b/runwpa deleted file mode 100644 index f825e8bdb..000000000 --- a/runwpa +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -if [ "`which iwconfig`" = "" ] ; then - echo "WARNING:Wireless tool not exist!" - echo " Please install it!" - exit -else - if [ `uname -r | cut -d. -f2` -eq 4 ]; then - wpa_supplicant -D ipw -c wpa1.conf -i wlan0 - else - if [ `iwconfig -v |awk '{print $4}' | head -n 1` -lt 18 ] ; then - wpa_supplicant -D ipw -c wpa1.conf -i wlan0 - else - wpa_supplicant -D wext -c wpa1.conf -i wlan0 - fi - - fi -fi - - From b901568b5177badca38b1d4d144be24ad1318920 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Mon, 2 Oct 2017 21:18:44 +0200 Subject: [PATCH 042/234] Delete wlan0dhcp --- wlan0dhcp | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 wlan0dhcp diff --git a/wlan0dhcp b/wlan0dhcp deleted file mode 100644 index 60433829c..000000000 --- a/wlan0dhcp +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -var0=`ps aux|awk '/dhclient wlan0/'|awk '$11!="awk"{print $2}'` - -kill $var0 -cp ifcfg-wlan0 /etc/sysconfig/network-scripts/ - -dhclient wlan0 - -var1=`ifconfig wlan0 |awk '/inet/{print $2}'|awk -F: '{print $2}'` - - -rm -f /etc/sysconfig/network-scripts/ifcfg-wlan0 - -echo "get ip: $var1" - From 92b79fc52d8a086b35154fb205c8363baaea6ded Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Mon, 2 Oct 2017 21:19:08 +0200 Subject: [PATCH 043/234] Delete ifcfg-wlan0 --- ifcfg-wlan0 | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 ifcfg-wlan0 diff --git a/ifcfg-wlan0 b/ifcfg-wlan0 deleted file mode 100644 index 20dcbec2b..000000000 --- a/ifcfg-wlan0 +++ /dev/null @@ -1,4 +0,0 @@ -#DHCP client -DEVICE=wlan0 -BOOTPROTO=dhcp -ONBOOT=yes \ No newline at end of file From 9f5542109e7f87432921e7a231bd12cd48ee65e7 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Mon, 2 Oct 2017 21:20:18 +0200 Subject: [PATCH 044/234] Update dkms.conf * Updated version due to recent changes to code --- dkms.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dkms.conf b/dkms.conf index 0748e0881..5a7193859 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.1.5~20170911" +PACKAGE_VERSION="5.1.5~20171002" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" From dcda8e2b5e9eeba09eab75c522d2ee2ebb077212 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Mon, 2 Oct 2017 22:33:05 +0200 Subject: [PATCH 045/234] Update usb_intf.c * Corrected 1 adapter name --- os_dep/linux/usb_intf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index ef367ec64..2487596cd 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -228,7 +228,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x056E, 0x400B), .driver_info = RTL8814A}, /* ELECOM - ELECOM */ {USB_DEVICE(0x056E, 0x400D), .driver_info = RTL8814A}, /* ELECOM - ELECOM */ {USB_DEVICE(0x7392, 0xA834), .driver_info = RTL8814A}, /* Edimax - Edimax */ - {USB_DEVICE(0x7392, 0xA833), .driver_info = RTL8814A}, /* Edimax - Edimax */ + {USB_DEVICE(0x7392, 0xA833), .driver_info = RTL8814A}, /* Edimax - AC1750 */ {USB_DEVICE(0x2357, 0x0106), .driver_info = RTL8814A}, /* TP-LINK Archer T9UH */ {USB_DEVICE(0x20F4, 0x809A), .driver_info = RTL8814A}, /* TRENDnet - TRENDnet */ {USB_DEVICE(0x20F4, 0x809B), .driver_info = RTL8814A}, /* TRENDnet TEW-809UB */ From 9055a3e72d98372a401967e0bf4d5df27c99185a Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Fri, 6 Oct 2017 10:22:44 +0200 Subject: [PATCH 046/234] Update README.md * Added information on "realtek-leds" for controlling LED switch --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 3f527e861..44bd8b12a 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,16 @@ at the end of file /etc/NetworkManager/NetworkManager.conf and restart NetworkMa sudo service NetworkManager restart ``` +## Led Parameter +``` +We've added the "realtek-leds.conf" in build directory, +with this you may change the leds to "2 Allways On", " 1 Normal" or "0 Allways Off" with placing the file in "/etc/modprobe.d/ + +Manual modprobe will override this file if option value also included at the command line, e.g., +$ sudo modprobe -r 8812au +$ sudo modprobe 8812au rtw_led_ctrl=1 +``` + ## Credits ``` astsam - for the main work + monitor/injection support - https://github.com/astsam From a2edcb9dceabd0966062009f70a390a1dd7cc50d Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Fri, 6 Oct 2017 10:24:13 +0200 Subject: [PATCH 047/234] Update README.md * Fixed dual line in LED parameter information --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 44bd8b12a..f25c59435 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,8 @@ sudo service NetworkManager restart ## Led Parameter ``` We've added the "realtek-leds.conf" in build directory, -with this you may change the leds to "2 Allways On", " 1 Normal" or "0 Allways Off" with placing the file in "/etc/modprobe.d/ +with this you may change the leds to +"2 Allways On", " 1 Normal" or "0 Allways Off" with placing the file in "/etc/modprobe.d/ Manual modprobe will override this file if option value also included at the command line, e.g., $ sudo modprobe -r 8812au From 8325e1859b10b76f2783bf9c4901e5ab3eee923e Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Fri, 6 Oct 2017 14:44:02 +0200 Subject: [PATCH 048/234] Update README.md * Corrected git clone download to avoid cloning 'master' which should not be used --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f25c59435..a036ece0f 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ make install RTL8814=1 ## Notes Download ``` -git clone https://github.com/aircrack-ng/rtl8812au.git +git clone -b v5.1.5 https://github.com/aircrack-ng/rtl8812au.git cd rtl* ``` To download v4.3.21 From c7ea7b6e6567c391962e463a4891b53e781a7dd1 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Fri, 6 Oct 2017 14:49:55 +0200 Subject: [PATCH 049/234] Update README.md * Fixed some typos --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a036ece0f..719267895 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ To download v4.3.21 ``` git clone -b v4.3.21 https://github.com/aircrack-ng/rtl8812au.git ``` -Maybe you should install some packet to build it. +Package / Build dependencies ``` sudo apt-get install build-essential sudo apt-get install linux-headers-`uname -r` @@ -88,7 +88,7 @@ sudo service NetworkManager restart ``` We've added the "realtek-leds.conf" in build directory, with this you may change the leds to -"2 Allways On", " 1 Normal" or "0 Allways Off" with placing the file in "/etc/modprobe.d/ +"2: Allways On", "1: Normal" or "0: Allways Off" with placing the file in "/etc/modprobe.d/ Manual modprobe will override this file if option value also included at the command line, e.g., $ sudo modprobe -r 8812au From ac3e1eb51bf297e1b3c4edcb128519c2a396aad7 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Fri, 6 Oct 2017 14:52:43 +0200 Subject: [PATCH 050/234] More USB VID/PID * Added adapter support for "Tenda U12" --- os_dep/linux/usb_intf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index 2487596cd..25a80e2cf 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -166,7 +166,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x2001, 0x3315), .driver_info = RTL8812}, /* D-Link - Cameo */ {USB_DEVICE(0x2001, 0x3316), .driver_info = RTL8812}, /* D-Link - Cameo */ {USB_DEVICE(0x13B1, 0x003F), .driver_info = RTL8812}, /* Linksys - WUSB6300 */ - {USB_DEVICE(0x2357, 0x0101), .driver_info = RTL8812}, /* TP-Link - Archer T4U */ + {USB_DEVICE(0x2357, 0x0101), .driver_info = RTL8812}, /* TP-Link - Archer T4U AC1200 */ {USB_DEVICE(0x2357, 0x0103), .driver_info = RTL8812}, /* TP-Link - T4UH */ {USB_DEVICE(0x2357, 0x010D), .driver_info = RTL8812}, /* TP-Link - Archer T4U AC1300 */ {USB_DEVICE(0x2357, 0x010E), .driver_info = RTL8812}, /* TP-Link - Archer T4UH AC1300 */ @@ -177,6 +177,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x050D, 0x1109), .driver_info = RTL8812}, /* Belkin F9L1109 - SerComm */ {USB_DEVICE(0x148F, 0x9097), .driver_info = RTL8812}, /* Amped Wireless ACA1 */ {USB_DEVICE(0x0BDA, 0x8812), .driver_info = RTL8812}, /* Alfa - AWUS036AC, AWUS036ACH & AWUS036EAC */ + {USB_DEVICE(0x2604, 0x0012), .driver_info = RTL8812}, /* Tenda U12 */ #endif #ifdef CONFIG_RTL8821A From 67a7e60ed5827138fece3db93da18923df7b753f Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Fri, 20 Oct 2017 22:32:26 +0200 Subject: [PATCH 051/234] Update README.md --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 719267895..a5311b4a9 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,20 @@ # RTL8812AU/21AU and RTL8814AU drivers # with monitor mode and frame injection +## TODO +These are the problems that needs attention, any help would be appreciated. +``` +* USB3 (USBModeSwitch) does not work correctly, forcing adapters to use only USB2.0. + Considering many adapters supported are high speed this needs attention. + Check issue report @ https://github.com/aircrack-ng/rtl8812au/issues/29 + +* AP AC speed does NOT work. + Check issue report @ https://github.com/aircrack-ng/rtl8812au/issues/31 + +* RadioTap FCS flag is set, but frame does not contain FCS. + Check issue report @https://github.com/aircrack-ng/rtl8812au/issues/28 +``` ## DKMS This driver can be installed using [DKMS]. This is a system which will automatically recompile and install a kernel module when a new kernel gets installed or updated. To make use of DKMS, install the `dkms` package, which on Debian (based) systems is done like this: ``` From 795489ce9fc42d2033ed1c4bee1663525a58f415 Mon Sep 17 00:00:00 2001 From: evilphish Date: Sat, 21 Oct 2017 01:07:45 +0200 Subject: [PATCH 052/234] fix USB3 modeswitch --- os_dep/linux/usb_intf.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index 25a80e2cf..0fc63b65a 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -658,14 +658,32 @@ static int usb_reprobe_switch_usb_mode(PADAPTER Adapter) u8 ret = _FALSE; /* efuse not allow driver to switch usb mode */ - //if (pHalData->EEPROMUsbSwitch == _FALSE) - // goto exit; + if (pHalData->EEPROMUsbSwitch == _FALSE) + goto exit; /* registry not allow driver to switch usb mode */ if (registry_par->switch_usb_mode == 0) goto exit; +#if defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8821A) || defined(CONFIG_RTL8814A) + if (IS_HIGH_SPEED_USB(Adapter)) { + if ((rtw_read8(Adapter, 0x74) & (BIT(2)|BIT(3))) != BIT(3)) { + rtw_write8(Adapter, 0x74, 0x8); + rtw_write8(Adapter, 0x70, 0x2); + rtw_write8(Adapter, 0x3e, 0x1); + rtw_write8(Adapter, 0x3d, 0x3); + /* usb disconnect */ + rtw_write8(Adapter, 0x5, 0x80); + ret = _TRUE; + } + + } else if (IS_SUPER_SPEED_USB(Adapter)) { + rtw_write8(Adapter, 0x70, rtw_read8(Adapter, 0x70) & (~BIT(1))); + rtw_write8(Adapter, 0x3e, rtw_read8(Adapter, 0x3e) & (~BIT(0))); + } +#else rtw_hal_set_hwreg(Adapter, HW_VAR_USB_MODE, &ret); +#endif exit: return ret; From 9515a63dec746c4b8a859ce7a224f09eb7c77adc Mon Sep 17 00:00:00 2001 From: evilphish Date: Sat, 21 Oct 2017 02:42:53 +0200 Subject: [PATCH 053/234] switch default modeswitch plugin behaviour to USB3 --- os_dep/linux/os_intfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c index 035354b49..1079a7ace 100644 --- a/os_dep/linux/os_intfs.c +++ b/os_dep/linux/os_intfs.c @@ -227,7 +227,7 @@ int rtw_antdiv_type = 0 int rtw_drv_ant_band_switch = 1; /* 0:OFF , 1:ON, Driver control antenna band switch*/ /* 0: doesn't switch, 1: switch from usb2.0 to usb 3.0 2: switch from usb3.0 to usb 2.0 */ -int rtw_switch_usb_mode = 0; +int rtw_switch_usb_mode = 1; #ifdef CONFIG_USB_AUTOSUSPEND int rtw_enusbss = 1;/* 0:disable,1:enable */ From 0c3cb2f349745b784f03f2f0e40ef8a60a303a4f Mon Sep 17 00:00:00 2001 From: evilphish Date: Sat, 21 Oct 2017 17:02:13 +0200 Subject: [PATCH 054/234] fix detection of vht capabilities and correct number of hardcoded streams for the 8812 driver --- hal/rtl8812a/rtl8812a_hal_init.c | 2 +- include/rtw_vht.h | 1 + os_dep/linux/ioctl_cfg80211.c | 117 ++++++++++++++++++++++++++++++- 3 files changed, 118 insertions(+), 2 deletions(-) diff --git a/hal/rtl8812a/rtl8812a_hal_init.c b/hal/rtl8812a/rtl8812a_hal_init.c index f4c9b6826..a2d303250 100644 --- a/hal/rtl8812a/rtl8812a_hal_init.c +++ b/hal/rtl8812a/rtl8812a_hal_init.c @@ -6351,7 +6351,7 @@ u8 GetHalDefVar8812A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) break; case HAL_DEF_RX_STBC: - *(u8 *)pval = 1; + *(u8 *)pval = 2; break; case HAL_DEF_EXPLICIT_BEAMFORMER: diff --git a/include/rtw_vht.h b/include/rtw_vht.h index 1d886bbd5..b273eb6ea 100644 --- a/include/rtw_vht.h +++ b/include/rtw_vht.h @@ -139,5 +139,6 @@ void rtw_process_vht_op_mode_notify(_adapter *padapter, u8 *pframe, PVOID sta); u32 rtw_restructure_vht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len); void VHTOnAssocRsp(_adapter *padapter); u8 rtw_vht_mcsmap_to_nss(u8 *pvht_mcs_map); +extern const u16 VHT_MCS_DATA_RATE[3][2][30]; #endif /* _RTW_VHT_H_ */ diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 5895645d6..ecf9d3757 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -6191,6 +6191,121 @@ void rtw_cfg80211_init_wdev_data(_adapter *padapter) #endif } +static void rtw_cfg80211_init_vht_capab(_adapter *padapter, struct ieee80211_sta_vht_cap *vht_cap, u8 rf_type) +{ + struct registry_priv *pregistrypriv = &padapter->registrypriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct vht_priv *pvhtpriv = &pmlmepriv->vhtpriv; + u8 bw, rf_num, rx_stbc_nss = 0; + u16 HighestRate; + u32 rx_packet_offset, max_recvbuf_sz; + + vht_cap->vht_supported = _TRUE; + rtw_vht_use_default_setting(padapter); + + /* Reference: core/rtw_vht.c */ + /* MCS map */ + vht_cap->vht_mcs.tx_mcs_map = pvhtpriv->vht_mcs_map[0] | (pvhtpriv->vht_mcs_map[1] << 8); + vht_cap->vht_mcs.rx_mcs_map = vht_cap->vht_mcs.tx_mcs_map; + + /* B0 B1 Maximum MPDU Length */ + rtw_hal_get_def_var(padapter, HAL_DEF_RX_PACKET_OFFSET, &rx_packet_offset); + rtw_hal_get_def_var(padapter, HAL_DEF_MAX_RECVBUF_SZ, &max_recvbuf_sz); + + if ((max_recvbuf_sz - rx_packet_offset) >= 11454) { + vht_cap->cap |= IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454; + } else if ((max_recvbuf_sz - rx_packet_offset) >= 7991) { + vht_cap->cap |= IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991; + } else if ((max_recvbuf_sz - rx_packet_offset) >= 3895) { + vht_cap->cap |= IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895; + } + + /* B2 B3 Supported Channel Width Set */ + if (hal_chk_bw_cap(padapter, BW_CAP_160M) && REGSTY_IS_BW_5G_SUPPORT(pregistrypriv, CHANNEL_WIDTH_160)) { + if (hal_chk_bw_cap(padapter, BW_CAP_80_80M) && REGSTY_IS_BW_5G_SUPPORT(pregistrypriv, CHANNEL_WIDTH_80_80)) + vht_cap->cap |= IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ; + else + vht_cap->cap |= IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ; + } + + /* B4 Rx LDPC */ + if(TEST_FLAG(pvhtpriv->ldpc_cap, LDPC_VHT_ENABLE_RX)) { + vht_cap->cap |= IEEE80211_VHT_CAP_RXLDPC; + } + + /* B5 ShortGI for 80MHz */ + if (pvhtpriv->sgi_80m) + vht_cap->cap |= IEEE80211_VHT_CAP_SHORT_GI_80; + + /* B6 ShortGI for 160MHz */ + // todo + + /* B7 Tx STBC */ + if(TEST_FLAG(pvhtpriv->stbc_cap, STBC_VHT_ENABLE_TX)) { + vht_cap->cap |= IEEE80211_VHT_CAP_TXSTBC; + } + + /* B8 B9 B10 Rx STBC */ + if(TEST_FLAG(pvhtpriv->stbc_cap, STBC_VHT_ENABLE_RX)) { + rtw_hal_get_def_var(padapter, HAL_DEF_RX_STBC, (u8 *)(&rx_stbc_nss)); + printk("rx_stbc_nss: %d", rx_stbc_nss); + if (rx_stbc_nss == 1) + vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_1; + else if (rx_stbc_nss == 2) + vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_2; + else if (rx_stbc_nss == 3) + vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_3; + } + + /* B11 SU Beamformer Capable */ + if (TEST_FLAG(pvhtpriv->beamform_cap, BEAMFORMING_VHT_BEAMFORMER_ENABLE)) { + vht_cap->cap |= IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE; + /* B16 17 18 Number of Sounding Dimensions */ + rtw_hal_get_def_var(padapter, HAL_DEF_BEAMFORMER_CAP, (u8 *)&rf_num); + vht_cap->cap |= rf_num << IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; + /* B19 MU Beamformer Capable */ + if (TEST_FLAG(pvhtpriv->beamform_cap, BEAMFORMING_VHT_MU_MIMO_AP_ENABLE)) + vht_cap->cap |= IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE; + } + + /* B12 SU Beamformee Capable */ + if (TEST_FLAG(pvhtpriv->beamform_cap, BEAMFORMING_VHT_BEAMFORMEE_ENABLE)) { + vht_cap->cap |= IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE; + // B13 14 15 Compressed Steering Number of Beamformer Antennas Supported + rtw_hal_get_def_var(padapter, HAL_DEF_BEAMFORMEE_CAP, (u8 *)&rf_num); + vht_cap->cap |= rf_num << IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; + /* B20 MU Beamformee Capable */ + if (TEST_FLAG(pvhtpriv->beamform_cap, BEAMFORMING_VHT_MU_MIMO_STA_ENABLE)) + vht_cap->cap |= IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE; + } + + // TXOP PS disabled or not supported + /* B21 VHT TXOP PS */ + + /* B22 +HTC-VHT Capable */ + vht_cap->cap |= IEEE80211_VHT_CAP_HTC_VHT; + + /* B23 24 25 Maximum A-MPDU Length Exponent */ + if (pregistrypriv->ampdu_factor != 0xFE) + vht_cap->cap |= pregistrypriv->ampdu_factor << IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT; + else + vht_cap->cap |= 7 << IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT; + + // Link Adaptation not supported + /* B26 27 VHT Link Adaptation Capable */ + + /* find the largest bw supported by both registry and hal */ + bw = hal_largest_bw(padapter, REGSTY_BW_5G(pregistrypriv)); + + HighestRate = VHT_MCS_DATA_RATE[bw][pvhtpriv->sgi_80m][((pvhtpriv->vht_highest_rate - MGN_VHT1SS_MCS0)&0x3f)]; + HighestRate = (HighestRate+1) >> 1; + + + vht_cap->vht_mcs.tx_highest = HighestRate; //indicate we support highest rx rate is 600Mbps. + vht_cap->vht_mcs.rx_highest = HighestRate; //indicate we support highest rx rate is 600Mbps. +} + + static void rtw_cfg80211_create_vht_cap(_adapter *padapter, struct ieee80211_sta_vht_cap *vht_cap) { #ifdef CONFIG_80211AC_VHT @@ -6245,7 +6360,7 @@ void rtw_cfg80211_init_wiphy(_adapter *padapter) bands = wiphy->bands[IEEE80211_BAND_5GHZ]; if (bands) { rtw_cfg80211_init_ht_capab(padapter, &bands->ht_cap, IEEE80211_BAND_5GHZ, rf_type); - rtw_cfg80211_create_vht_cap(padapter, &bands->vht_cap); + rtw_cfg80211_init_vht_capab(padapter, &bands->vht_cap, rf_type); } } #endif From 0d3e22f846d13c84e7933e1aa710c75caef0b2bc Mon Sep 17 00:00:00 2001 From: evilphish Date: Sat, 21 Oct 2017 17:41:23 +0200 Subject: [PATCH 055/234] removed leftover debug printk --- os_dep/linux/ioctl_cfg80211.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index ecf9d3757..0ae4ac9e4 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -6248,7 +6248,7 @@ static void rtw_cfg80211_init_vht_capab(_adapter *padapter, struct ieee80211_sta /* B8 B9 B10 Rx STBC */ if(TEST_FLAG(pvhtpriv->stbc_cap, STBC_VHT_ENABLE_RX)) { rtw_hal_get_def_var(padapter, HAL_DEF_RX_STBC, (u8 *)(&rx_stbc_nss)); - printk("rx_stbc_nss: %d", rx_stbc_nss); + if (rx_stbc_nss == 1) vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_1; else if (rx_stbc_nss == 2) From ddf67e6260fb67e4db474db5662d26fe889dad84 Mon Sep 17 00:00:00 2001 From: evilphish Date: Sat, 21 Oct 2017 17:47:23 +0200 Subject: [PATCH 056/234] fixed hardcoded stream count for 8814 --- hal/rtl8814a/rtl8814a_hal_init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hal/rtl8814a/rtl8814a_hal_init.c b/hal/rtl8814a/rtl8814a_hal_init.c index 65e82269a..578addcbc 100644 --- a/hal/rtl8814a/rtl8814a_hal_init.c +++ b/hal/rtl8814a/rtl8814a_hal_init.c @@ -6632,7 +6632,7 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) break; case HAL_DEF_RX_STBC: - *(u8*)pval = 1; + *(u8*)pval = 4; break; case HAL_DEF_EXPLICIT_BEAMFORMER: From 632bfd75cd8ebd689f728f2231ad2bd3d34600b8 Mon Sep 17 00:00:00 2001 From: evilphish Date: Sat, 21 Oct 2017 19:52:27 +0200 Subject: [PATCH 057/234] preliminary txpower test --- hal/rtl8812a/rtl8812a_dm.c | 3 +++ os_dep/linux/ioctl_cfg80211.c | 27 ++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/hal/rtl8812a/rtl8812a_dm.c b/hal/rtl8812a/rtl8812a_dm.c index 8ab379917..36a7a3fa6 100644 --- a/hal/rtl8812a/rtl8812a_dm.c +++ b/hal/rtl8812a/rtl8812a_dm.c @@ -457,8 +457,11 @@ void rtl8812_init_dm_priv(IN PADAPTER Adapter) Init_ODM_ComInfo_8812(Adapter); ODM_InitAllTimers(podmpriv); + + pHalData->CurrentTxPwrIdx = 18; } + void rtl8812_deinit_dm_priv(IN PADAPTER Adapter) { PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 0ae4ac9e4..603f6a639 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -3163,6 +3163,27 @@ static int cfg80211_rtw_set_txpower(struct wiphy *wiphy, enum tx_power_setting type, int dbm) #endif { + + _adapter *padapter = wiphy_to_adapter(wiphy); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + int value; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)) || defined(COMPAT_KERNEL_RELEASE) + value = mbm/100; +#else + value = dbm; +#endif + + if(value < 0) + value = 0; + if(value > 40) + value = 40; + + if(type == NL80211_TX_POWER_FIXED) { + pHalData->CurrentTxPwrIdx = value; + rtw_hal_set_tx_power_level(padapter, pHalData->CurrentChannel); + } else + return -EOPNOTSUPP; + #if 0 struct iwm_priv *iwm = wiphy_to_iwm(wiphy); int ret; @@ -3199,9 +3220,13 @@ static int cfg80211_rtw_get_txpower(struct wiphy *wiphy, #endif int *dbm) { + _adapter *padapter = wiphy_to_adapter(wiphy); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + RTW_INFO("%s\n", __func__); - *dbm = (12); + *dbm = pHalData->CurrentTxPwrIdx; + //*dbm = (12); return 0; } From b8ab3450f0ade38842bdcce69f03d42cc0e451eb Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 22 Oct 2017 11:58:00 +0200 Subject: [PATCH 058/234] small indention & spacing fixes --- os_dep/linux/ioctl_cfg80211.c | 45 +---------------------------------- 1 file changed, 1 insertion(+), 44 deletions(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 603f6a639..b6881d359 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -750,7 +750,7 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0)) struct cfg80211_roam_info roam_info = {}; #endif - + freq = rtw_ch2freq(channel); notify_channel = ieee80211_get_channel(wiphy, freq); #endif @@ -930,7 +930,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa goto exit; } - if (strcmp(param->u.crypt.alg, "WEP") == 0 && (psta == NULL)) { RTW_INFO("r871x_set_encryption, crypt.alg = WEP\n"); @@ -973,7 +972,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa } - if (!psta && check_fwstate(pmlmepriv, WIFI_AP_STATE)) { /* group key */ if (param->u.crypt.set_tx == 0) { /* group key */ if (strcmp(param->u.crypt.alg, "WEP") == 0) { @@ -1153,7 +1151,6 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param struct wifidirect_info *pwdinfo = &padapter->wdinfo; #endif /* CONFIG_P2P */ - RTW_INFO("%s\n", __func__); param->u.crypt.err = 0; @@ -1238,7 +1235,6 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param if (strcmp(param->u.crypt.alg, "none") != 0) psta->ieee8021x_blocked = _FALSE; - if ((padapter->securitypriv.ndisencryptstatus == Ndis802_11Encryption2Enabled) || (padapter->securitypriv.ndisencryptstatus == Ndis802_11Encryption3Enabled)) psta->dot118021XPrivacy = padapter->securitypriv.dot11PrivacyAlgrthm; @@ -1376,7 +1372,6 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param } #endif - exit: RTW_INFO("%s, ret=%d\n", __func__, ret); @@ -1473,7 +1468,6 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, param->u.crypt.set_tx = 1; /* for wpa/wpa2 pairwise key */ } - /* param->u.crypt.idx = key_index - 1; */ param->u.crypt.idx = key_index; @@ -2306,7 +2300,6 @@ static int cfg80211_rtw_scan(struct wiphy *wiphy } #endif /* CONFIG_P2P */ - _rtw_memset(ssid, 0, sizeof(NDIS_802_11_SSID) * RTW_SSID_SCAN_AMOUNT); /* parsing request ssids, n_ssids */ for (i = 0; i < request->n_ssids && i < RTW_SSID_SCAN_AMOUNT; i++) { @@ -2403,8 +2396,6 @@ static int cfg80211_rtw_set_wiphy_params(struct wiphy *wiphy, u32 changed) return 0; } - - static int rtw_cfg80211_set_wpa_version(struct security_priv *psecuritypriv, u32 wpa_version) { RTW_INFO("%s, wpa_version=%d\n", __func__, wpa_version); @@ -2414,7 +2405,6 @@ static int rtw_cfg80211_set_wpa_version(struct security_priv *psecuritypriv, u32 return 0; } - if (wpa_version & (NL80211_WPA_VERSION_1 | NL80211_WPA_VERSION_2)) psecuritypriv->ndisauthtype = Ndis802_11AuthModeWPAPSK; @@ -2463,7 +2453,6 @@ static int rtw_cfg80211_set_auth_type(struct security_priv *psecuritypriv, psecuritypriv->ndisencryptstatus = Ndis802_11Encryption1Enabled; - break; default: psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_Open; @@ -2552,7 +2541,6 @@ static int rtw_cfg80211_set_key_mgt(struct security_priv *psecuritypriv, u32 key psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_WAPI; #endif - else { RTW_INFO("Invalid key mgt: 0x%x\n", key_mgt); /* return -EINVAL; */ @@ -2748,7 +2736,6 @@ static int rtw_cfg80211_set_wpa_ie(_adapter *padapter, u8 *pie, size_t ielen) /* || check_fwstate(&padapter->mlmepriv, WIFI_UNDER_WPS) == _TRUE) */ rtw_hal_set_hwreg(padapter, HW_VAR_OFF_RCR_AM, null_addr); - exit: if (buf) rtw_mfree(buf, ielen); @@ -2811,7 +2798,6 @@ static int cfg80211_rtw_join_ibss(struct wiphy *wiphy, struct net_device *ndev, rtw_mi_buddy_scan_abort(padapter, _TRUE); /* OR rtw_mi_scan_abort(padapter, _TRUE);*/ #endif /*CONFIG_CONCURRENT_MODE*/ - _rtw_memset(&ndis_ssid, 0, sizeof(NDIS_802_11_SSID)); ndis_ssid.SsidLength = params->ssid_len; _rtw_memcpy(ndis_ssid.Ssid, (u8 *)params->ssid, params->ssid_len); @@ -2971,11 +2957,9 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, RTW_INFO("ssid=%s, len=%zu\n", ndis_ssid.Ssid, sme->ssid_len); - if (sme->bssid) RTW_INFO("bssid="MAC_FMT"\n", MAC_ARG(sme->bssid)); - psecuritypriv->ndisencryptstatus = Ndis802_11EncryptionDisabled; psecuritypriv->dot11PrivacyAlgrthm = _NO_PRIVACY_; psecuritypriv->dot118021XGrpPrivacy = _NO_PRIVACY_; @@ -3005,7 +2989,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, padapter->mlmeextpriv.mlmext_info.auth_algo = psecuritypriv->dot11AuthAlgrthm; #endif - if (ret < 0) goto cancel_ps_deny; @@ -3611,7 +3594,6 @@ static int rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb, struct net_de pattrib->seqnum = pmlmeext->mgnt_seq; pmlmeext->mgnt_seq++; - pattrib->last_txcmdsz = pattrib->pktlen; dump_mgntframe(padapter, pmgntframe); @@ -3619,7 +3601,6 @@ static int rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb, struct net_de } else RTW_INFO("frame_ctl=0x%x\n", frame_ctl & (RTW_IEEE80211_FCTL_FTYPE | RTW_IEEE80211_FCTL_STYPE)); - fail: rtw_skb_free(skb); @@ -3856,22 +3837,18 @@ static int rtw_add_beacon(_adapter *adapter, const u8 *head, size_t head_len, co struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); /* struct sta_priv *pstapriv = &padapter->stapriv; */ - RTW_INFO("%s beacon_head_len=%zu, beacon_tail_len=%zu\n", __FUNCTION__, head_len, tail_len); - if (check_fwstate(pmlmepriv, WIFI_AP_STATE) != _TRUE) return -EINVAL; if (head_len < 24) return -EINVAL; - pbuf = rtw_zmalloc(head_len + tail_len); if (!pbuf) return -ENOMEM; - /* _rtw_memcpy(&pstapriv->max_num_sta, param->u.bcn_ie.reserved, 2); */ /* if((pstapriv->max_num_sta>NUM_STA) || (pstapriv->max_num_sta<=0)) */ @@ -3932,7 +3909,6 @@ static int rtw_add_beacon(_adapter *adapter, const u8 *head, size_t head_len, co } else ret = -EINVAL; - rtw_mfree(pbuf, head_len + tail_len); return ret; @@ -4126,7 +4102,6 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev RTW_INFO("+"FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); - #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0)) target_mac = mac; #else @@ -4138,7 +4113,6 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev return -EINVAL; } - if (!target_mac) { RTW_INFO("flush all sta, and cam_entry\n"); @@ -4149,7 +4123,6 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev return ret; } - RTW_INFO("free sta macaddr =" MAC_FMT "\n", MAC_ARG(target_mac)); if (target_mac[0] == 0xff && target_mac[1] == 0xff && @@ -4157,7 +4130,6 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev target_mac[4] == 0xff && target_mac[5] == 0xff) return -EINVAL; - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); phead = &pstapriv->asoc_list; @@ -4708,7 +4680,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, u8 *frame_body = (unsigned char *)(buf + sizeof(struct rtw_ieee80211_hdr_3addr)); size_t frame_body_len = len - sizeof(struct rtw_ieee80211_hdr_3addr); - RTW_INFO("[%s] In\n", __FUNCTION__); /* prepare for building provision_request frame */ @@ -4742,7 +4713,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, break; } - if (rtw_get_p2p_ie(frame_body + _PUBLIC_ACTION_IE_OFFSET_, frame_body_len - _PUBLIC_ACTION_IE_OFFSET_, p2p_ie, &p2p_ielen)) { rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_DEVICE_INFO, devinfo_content, &devinfo_contentlen); @@ -4750,7 +4720,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, } - /* start to build provision_request frame */ _rtw_memset(wpsie, 0, sizeof(wpsie)); _rtw_memset(p2p_ie, 0, sizeof(p2p_ie)); @@ -4760,7 +4729,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, if (pmgntframe == NULL) return; - /* update attribute */ pattrib = &pmgntframe->attrib; update_mgntframe_attrib(padapter, pattrib); @@ -4790,7 +4758,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, pframe = rtw_set_fixed_ie(pframe, 1, &(oui_subtype), &(pattrib->pktlen)); pframe = rtw_set_fixed_ie(pframe, 1, &(dialogToken), &(pattrib->pktlen)); - /* build_prov_disc_request_p2p_ie */ /* P2P OUI */ p2pielen = 0; @@ -4820,7 +4787,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, _rtw_memcpy(p2p_ie + p2pielen, &capability, 2); p2pielen += 2; - /* Device Info ATTR */ /* Type: */ p2p_ie[p2pielen++] = P2P_ATTR_DEVICE_INFO; @@ -4836,7 +4802,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, _rtw_memcpy(p2p_ie + p2pielen, devinfo_content, devinfo_contentlen); p2pielen += devinfo_contentlen; - pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2p_ie, &p2p_ielen); /* p2pielen = build_prov_disc_request_p2p_ie( pwdinfo, pframe, NULL, 0, pwdinfo->tx_prov_disc_info.peerDevAddr); */ /* pframe += p2pielen; */ @@ -4874,7 +4839,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, wpsielen, (unsigned char *) wpsie, &pattrib->pktlen); - #ifdef CONFIG_WFD wfdielen = build_provdisc_req_wfd_ie(pwdinfo, pframe); pframe += wfdielen; @@ -5056,7 +5020,6 @@ static s32 cfg80211_rtw_remain_on_channel(struct wiphy *wiphy, } else RTW_INFO("%s remain_ch:%u not in channel plan!!!!\n", __FUNCTION__, remain_ch); - /* call this after other things have been done */ #ifdef CONFIG_CONCURRENT_MODE if (ATOMIC_READ(&pwdev_priv->ro_ch_to) == 1 || @@ -5824,7 +5787,6 @@ static int rtw_cfg80211_set_beacon_wpsp2pie(struct net_device *ndev, char *buf, } #endif /* CONFIG_P2P */ - #ifdef CONFIG_WFD wfd_ie = rtw_get_wfd_ie(buf, len, NULL, &wfd_ielen); if (wfd_ie) { @@ -5950,7 +5912,6 @@ static int rtw_cfg80211_set_probe_resp_wpsp2pie(struct net_device *net, char *bu RTW_INFO("Got P2P Capability Attr, grp_cap=0x%x, is_GO\n", grp_cap); } - if (is_GO == _FALSE) { if (pmlmepriv->p2p_probe_resp_ie) { u32 free_len = pmlmepriv->p2p_probe_resp_ie_len; @@ -5988,7 +5949,6 @@ static int rtw_cfg80211_set_probe_resp_wpsp2pie(struct net_device *net, char *bu } #endif /* CONFIG_P2P */ - #ifdef CONFIG_WFD wfd_ie = rtw_get_wfd_ie(buf, len, NULL, &wfd_ielen); if (wfd_ie) { @@ -6325,12 +6285,10 @@ static void rtw_cfg80211_init_vht_capab(_adapter *padapter, struct ieee80211_sta HighestRate = VHT_MCS_DATA_RATE[bw][pvhtpriv->sgi_80m][((pvhtpriv->vht_highest_rate - MGN_VHT1SS_MCS0)&0x3f)]; HighestRate = (HighestRate+1) >> 1; - vht_cap->vht_mcs.tx_highest = HighestRate; //indicate we support highest rx rate is 600Mbps. vht_cap->vht_mcs.rx_highest = HighestRate; //indicate we support highest rx rate is 600Mbps. } - static void rtw_cfg80211_create_vht_cap(_adapter *padapter, struct ieee80211_sta_vht_cap *vht_cap) { #ifdef CONFIG_80211AC_VHT @@ -6362,7 +6320,6 @@ static void rtw_cfg80211_create_vht_cap(_adapter *padapter, struct ieee80211_sta #endif } - void rtw_cfg80211_init_wiphy(_adapter *padapter) { u8 rf_type; From ecd87a7e1bfbcdb567e717b76a6c2ca1cb6ef4c2 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 22 Oct 2017 12:04:34 +0200 Subject: [PATCH 059/234] Update README.md --- README.md | 32 +++++++------------------------- 1 file changed, 7 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index a5311b4a9..b01c8dbf0 100644 --- a/README.md +++ b/README.md @@ -4,15 +4,11 @@ ## TODO These are the problems that needs attention, any help would be appreciated. ``` -* USB3 (USBModeSwitch) does not work correctly, forcing adapters to use only USB2.0. - Considering many adapters supported are high speed this needs attention. - Check issue report @ https://github.com/aircrack-ng/rtl8812au/issues/29 - -* AP AC speed does NOT work. - Check issue report @ https://github.com/aircrack-ng/rtl8812au/issues/31 +* txpower control has been added, but some issues remain. + Check issue reports for more information. * RadioTap FCS flag is set, but frame does not contain FCS. - Check issue report @https://github.com/aircrack-ng/rtl8812au/issues/28 + Check issue report @ https://github.com/aircrack-ng/rtl8812au/issues/28 ``` ## DKMS @@ -51,10 +47,6 @@ Download git clone -b v5.1.5 https://github.com/aircrack-ng/rtl8812au.git cd rtl* ``` -To download v4.3.21 -``` -git clone -b v4.3.21 https://github.com/aircrack-ng/rtl8812au.git -``` Package / Build dependencies ``` sudo apt-get install build-essential @@ -79,7 +71,7 @@ For setting monitor mode ``` sudo ip link set wlan0 up ``` -For setting TX power (v4.3.21 branch only): +For setting TX power ``` sudo iwconfig wlan0 txpower 30 ``` @@ -97,7 +89,7 @@ at the end of file /etc/NetworkManager/NetworkManager.conf and restart NetworkMa sudo service NetworkManager restart ``` -## Led Parameter +## LED Parameter ``` We've added the "realtek-leds.conf" in build directory, with this you may change the leds to @@ -110,16 +102,6 @@ $ sudo modprobe 8812au rtw_led_ctrl=1 ## Credits ``` -astsam - for the main work + monitor/injection support - https://github.com/astsam -``` - -## Other Sources -``` -astsam - https://github.com/astsam/rtl8812au -gnab - https://github.com/gnab/rtl8812au -zebulon2 - https://github.com/zebulon2/rtl8812au -paspro - https://github.com/paspro/rtl8812au -ulli-kroll - https://github.com/ulli-kroll/rtl8821au -tpircher - https://github.com/tpircher/rtl8814AU -xxNull-lsk - https://github.com/xxNull-lsk/rtl8812AU +astsam - for the main work + monitor/injection support - https://github.com/astsam +evilphish - for great patching (USB3, VHT + txpower control +++) - https://github.com/evilphish ``` From 7e8ab8035daf00622e1d02574cd90f4d92c6d95c Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 22 Oct 2017 12:06:32 +0200 Subject: [PATCH 060/234] Update dkms.conf * Because of the several patches lately a new version is 'tagged' --- dkms.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dkms.conf b/dkms.conf index 5a7193859..b67a286d1 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.1.5~20171002" +PACKAGE_VERSION="5.1.5~20171022" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" From ab44eb808ed5e59fb80deace6e6ce2e49e5315e8 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 22 Oct 2017 22:56:29 +0200 Subject: [PATCH 061/234] Added VHT capabilities and HT Greenfield capab --- include/wifi.h | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/include/wifi.h b/include/wifi.h index 504dce90f..091cd4fbf 100644 --- a/include/wifi.h +++ b/include/wifi.h @@ -990,6 +990,42 @@ typedef enum _HT_CAP_AMPDU_DENSITY { #define IEEE80211_HT_IE_NON_GF_STA_PRSNT 0x0004 #define IEEE80211_HT_IE_NON_HT_STA_PRSNT 0x0010 +/* 802.11ac VHT Capabilities */ +#define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895 0x00000000 +#define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991 0x00000001 +#define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454 0x00000002 +#define IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ 0x00000004 +#define IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ 0x00000008 +#define IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK 0x0000000C +#define IEEE80211_VHT_CAP_RXLDPC 0x00000010 +#define IEEE80211_VHT_CAP_SHORT_GI_80 0x00000020 +#define IEEE80211_VHT_CAP_SHORT_GI_160 0x00000040 +#define IEEE80211_VHT_CAP_TXSTBC 0x00000080 +#define IEEE80211_VHT_CAP_RXSTBC_1 0x00000100 +#define IEEE80211_VHT_CAP_RXSTBC_2 0x00000200 +#define IEEE80211_VHT_CAP_RXSTBC_3 0x00000300 +#define IEEE80211_VHT_CAP_RXSTBC_4 0x00000400 +#define IEEE80211_VHT_CAP_RXSTBC_MASK 0x00000700 +#define IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE 0x00000800 +#define IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE 0x00001000 +#define IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT 13 +#define IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK \ + (7 << IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT) +#define IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT 16 +#define IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK \ + (7 << IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT) +#define IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE 0x00080000 +#define IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE 0x00100000 +#define IEEE80211_VHT_CAP_VHT_TXOP_PS 0x00200000 +#define IEEE80211_VHT_CAP_HTC_VHT 0x00400000 +#define IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT 23 +#define IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK \ + (7 << IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT) +#define IEEE80211_VHT_CAP_VHT_LINK_ADAPTATION_VHT_UNSOL_MFB 0x08000000 +#define IEEE80211_VHT_CAP_VHT_LINK_ADAPTATION_VHT_MRQ_MFB 0x0c000000 +#define IEEE80211_VHT_CAP_RX_ANTENNA_PATTERN 0x10000000 +#define IEEE80211_VHT_CAP_TX_ANTENNA_PATTERN 0x20000000 + /* block-ack parameters */ #define IEEE80211_ADDBA_PARAM_POLICY_MASK 0x0002 #define IEEE80211_ADDBA_PARAM_TID_MASK 0x003C From 8c60bf3c7770dbec1975177e73f394420e2ef368 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 22 Oct 2017 23:00:28 +0200 Subject: [PATCH 062/234] Added VHT capabilities and HT Greenfield capab * Added VHT capabilities and HT Greenfield capability --- os_dep/linux/ioctl_cfg80211.c | 88 ++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index b6881d359..83891e17c 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -6119,7 +6119,13 @@ static void rtw_cfg80211_init_ht_capab(_adapter *padapter, struct ieee80211_sta_ ht_cap->ht_supported = _TRUE; - ht_cap->cap = IEEE80211_HT_CAP_SUP_WIDTH_20_40 | + /* According to the comment in rtw_ap.c: + * "Note: currently we switch to the MIXED op mode if HT non-greenfield + * station is associated. Probably it's a theoretical case, since + * it looks like all known HT STAs support greenfield." + * Therefore Greenfield is added to ht_cap + */ + ht_cap->cap = IEEE80211_HT_CAP_SUP_WIDTH_20_40 | IEEE80211_HT_CAP_GRN_FLD | IEEE80211_HT_CAP_SGI_40 | IEEE80211_HT_CAP_SGI_20 | IEEE80211_HT_CAP_DSSSCCK40 | IEEE80211_HT_CAP_MAX_AMSDU; rtw_cfg80211_init_ht_capab_ex(padapter, ht_cap, band, rf_type); @@ -6320,6 +6326,86 @@ static void rtw_cfg80211_create_vht_cap(_adapter *padapter, struct ieee80211_sta #endif } +static void rtw_cfg80211_init_vht_capab_ex(_adapter *padapter, struct ieee80211_sta_vht_cap *vht_cap, u8 rf_type) +{ +//todo: Support for other bandwidths + +/* NSS = Number of Spatial Streams */ +#define MAX_BIT_RATE_80MHZ_NSS3 1300 /* Mbps */ +#define MAX_BIT_RATE_80MHZ_NSS2 867 /* Mbps */ +#define MAX_BIT_RATE_80MHZ_NSS1 434 /* Mbps */ + + struct registry_priv *pregistrypriv = &padapter->registrypriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct vht_priv *pvhtpriv = &pmlmepriv->vhtpriv; + + rtw_vht_use_default_setting(padapter); + + /* RX LDPC */ + if (TEST_FLAG(pvhtpriv->ldpc_cap, LDPC_VHT_ENABLE_RX)) + vht_cap->cap |= IEEE80211_VHT_CAP_RXLDPC; + + /* TX STBC */ + if (TEST_FLAG(pvhtpriv->stbc_cap, STBC_VHT_ENABLE_TX)) + vht_cap->cap |= IEEE80211_VHT_CAP_TXSTBC; + + /* RX STBC */ + if (TEST_FLAG(pvhtpriv->stbc_cap, STBC_VHT_ENABLE_RX)) { + switch (rf_type) { + case RF_1T1R: + vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_1;/*RX STBC One spatial stream*/ + break; + case RF_2T2R: + case RF_1T2R: + vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_2;/*RX STBC Two spatial streams*/ + break; + case RF_3T3R: + case RF_3T4R: + case RF_4T4R: + vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_3;/*RX STBC Three spatial streams*/ + break; + default: + /* DBG_871X("[warning] rf_type %d is not expected\n", rf_type); */ + break; + } + } + + /* switch (rf_type) { + case RF_1T1R: + vht_cap->vht_mcs.tx_highest = MAX_BIT_RATE_80MHZ_NSS1; + vht_cap->vht_mcs.rx_highest = MAX_BIT_RATE_80MHZ_NSS1; + break; + case RF_2T2R: + case RF_1T2R: + vht_cap->vht_mcs.tx_highest = MAX_BIT_RATE_80MHZ_NSS2; + vht_cap->vht_mcs.rx_highest = MAX_BIT_RATE_80MHZ_NSS2; + break; + case RF_3T3R: + case RF_3T4R: + case RF_4T4R: + vht_cap->vht_mcs.tx_highest = MAX_BIT_RATE_80MHZ_NSS3; + vht_cap->vht_mcs.rx_highest = MAX_BIT_RATE_80MHZ_NSS3; + break; + default: + DBG_871X("[warning] rf_type %d is not expected\n", rf_type); + break; + } */ + + /* MCS map */ + vht_cap->vht_mcs.tx_mcs_map = pvhtpriv->vht_mcs_map[0] | (pvhtpriv->vht_mcs_map[1] << 8); + vht_cap->vht_mcs.rx_mcs_map = vht_cap->vht_mcs.tx_mcs_map; + + if (rf_type == RF_1T1R) { + vht_cap->vht_mcs.tx_highest = MAX_BIT_RATE_80MHZ_NSS1; + vht_cap->vht_mcs.rx_highest = MAX_BIT_RATE_80MHZ_NSS1; + } + + if (pvhtpriv->sgi_80m) + vht_cap->cap |= IEEE80211_VHT_CAP_SHORT_GI_80; + + vht_cap->cap |= (pvhtpriv->ampdu_len << IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT); +} + void rtw_cfg80211_init_wiphy(_adapter *padapter) { u8 rf_type; From 6cd132687800cc6ec531daf68f89ba9b40b5bc07 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Sun, 22 Oct 2017 23:09:32 +0200 Subject: [PATCH 063/234] Removed some spaces * Removed some spaces --- os_dep/linux/mlme_linux.c | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/os_dep/linux/mlme_linux.c b/os_dep/linux/mlme_linux.c index b2b85cb02..daaa81548 100644 --- a/os_dep/linux/mlme_linux.c +++ b/os_dep/linux/mlme_linux.c @@ -18,20 +18,16 @@ * ******************************************************************************/ - #define _MLME_OSDEP_C_ #include - #ifdef RTK_DMP_PLATFORM void Linkup_workitem_callback(struct work_struct *work) { struct mlme_priv *pmlmepriv = container_of(work, struct mlme_priv, Linkup_workitem); _adapter *padapter = container_of(pmlmepriv, _adapter, mlmepriv); - - #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 12)) kobject_uevent(&padapter->pnetdev->dev.kobj, KOBJ_LINKUP); #else @@ -45,8 +41,6 @@ void Linkdown_workitem_callback(struct work_struct *work) struct mlme_priv *pmlmepriv = container_of(work, struct mlme_priv, Linkdown_workitem); _adapter *padapter = container_of(pmlmepriv, _adapter, mlmepriv); - - #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 12)) kobject_uevent(&padapter->pnetdev->dev.kobj, KOBJ_LINKDOWN); #else @@ -56,7 +50,6 @@ void Linkdown_workitem_callback(struct work_struct *work) } #endif - /* void sitesurvey_ctrl_handler(void *FunctionContext) { @@ -74,14 +67,12 @@ void rtw_join_timeout_handler(void *FunctionContext) _rtw_join_timeout_handler(adapter); } - void _rtw_scan_timeout_handler(void *FunctionContext) { _adapter *adapter = (_adapter *)FunctionContext; rtw_scan_timeout_handler(adapter); } - void _dynamic_check_timer_handlder(void *FunctionContext) { struct dvobj_priv *pdvobj = (struct dvobj_priv *)FunctionContext; @@ -108,7 +99,6 @@ void _rtw_set_scan_deny_timer_hdl(void *FunctionContext) } #endif - void rtw_init_mlme_timer(_adapter *padapter) { struct mlme_priv *pmlmepriv = &padapter->mlmepriv; @@ -157,7 +147,6 @@ void rtw_os_indicate_connect(_adapter *adapter) _set_workitem(&adapter->mlmepriv.Linkup_workitem); #endif - } extern void indicate_wx_scan_complete_event(_adapter *padapter); @@ -237,7 +226,6 @@ void rtw_os_indicate_disconnect(_adapter *adapter, u16 reason, u8 locally_gener { /* RT_PMKID_LIST backupPMKIDList[NUM_PMKID_CACHE]; */ - netif_carrier_off(adapter->pnetdev); /* Do it first for tx broadcast pkt after disconnection issue! */ #ifdef CONFIG_IOCTL_CFG80211 @@ -252,7 +240,6 @@ void rtw_os_indicate_disconnect(_adapter *adapter, u16 reason, u8 locally_gener /* modify for CONFIG_IEEE80211W, none 11w also can use the same command */ rtw_reset_securitypriv_cmd(adapter); - } void rtw_report_sec_ie(_adapter *adapter, u8 authmode, u8 *sec_ie) @@ -261,8 +248,6 @@ void rtw_report_sec_ie(_adapter *adapter, u8 authmode, u8 *sec_ie) u8 *buff, *p, i; union iwreq_data wrqu; - - buff = NULL; if (authmode == _WPA_IE_ID_) { @@ -297,7 +282,6 @@ void rtw_report_sec_ie(_adapter *adapter, u8 authmode, u8 *sec_ie) rtw_mfree(buff, IW_CUSTOM_MAX); } - } void _survey_timer_hdl(void *FunctionContext) @@ -384,7 +368,6 @@ void rtw_indicate_sta_assoc_event(_adapter *padapter, struct sta_info *psta) if (pstapriv->sta_aid[psta->aid - 1] != psta) return; - wrqu.addr.sa_family = ARPHRD_ETHER; _rtw_memcpy(wrqu.addr.sa_data, psta->hwaddr, ETH_ALEN); @@ -411,7 +394,6 @@ void rtw_indicate_sta_disassoc_event(_adapter *padapter, struct sta_info *psta) if (pstapriv->sta_aid[psta->aid - 1] != psta) return; - wrqu.addr.sa_family = ARPHRD_ETHER; _rtw_memcpy(wrqu.addr.sa_data, psta->hwaddr, ETH_ALEN); @@ -424,7 +406,6 @@ void rtw_indicate_sta_disassoc_event(_adapter *padapter, struct sta_info *psta) } - #ifdef CONFIG_HOSTAPD_MLME static int mgnt_xmit_entry(struct sk_buff *skb, struct net_device *pnetdev) @@ -443,7 +424,6 @@ static int mgnt_netdev_open(struct net_device *pnetdev) RTW_INFO("mgnt_netdev_open: MAC Address:" MAC_FMT "\n", MAC_ARG(pnetdev->dev_addr)); - init_usb_anchor(&phostapdpriv->anchored); rtw_netif_wake_queue(pnetdev); @@ -536,15 +516,11 @@ int hostapd_mode_init(_adapter *padapter) pnetdev->features |= NETIF_F_IP_CSUM; #endif - - if (dev_alloc_name(pnetdev, "mgnt.wlan%d") < 0) RTW_INFO("hostapd_mode_init(): dev_alloc_name, fail!\n"); - /* SET_NETDEV_DEV(pnetdev, pintfpriv->udev); */ - mac[0] = 0x00; mac[1] = 0xe0; mac[2] = 0x4c; @@ -554,10 +530,8 @@ int hostapd_mode_init(_adapter *padapter) _rtw_memcpy(pnetdev->dev_addr, mac, ETH_ALEN); - netif_carrier_off(pnetdev); - /* Tell the network stack we exist */ if (register_netdev(pnetdev) != 0) { RTW_INFO("hostapd_mode_init(): register_netdev fail!\n"); From 65a62134461330d66f73f87929b0bf1023b2cebc Mon Sep 17 00:00:00 2001 From: Matt Robinson Date: Sun, 22 Oct 2017 19:05:31 -0400 Subject: [PATCH 064/234] Fix for 4.14.0 kernel --- core/efuse/rtw_efuse.c | 16 ++++++++++++++++ core/rtw_wlan_util.c | 4 ++++ os_dep/osdep_service.c | 4 ++++ 3 files changed, 24 insertions(+) diff --git a/core/efuse/rtw_efuse.c b/core/efuse/rtw_efuse.c index 1bb510553..e3554f8d1 100644 --- a/core/efuse/rtw_efuse.c +++ b/core/efuse/rtw_efuse.c @@ -2566,7 +2566,11 @@ u32 rtw_read_efuse_from_file(const char *path, u8 *buf) set_fs(KERNEL_DS); for (i = 0 ; i < HWSET_MAX_SIZE ; i++) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) + kernel_read(fp, temp, 2, &pos); +#else vfs_read(fp, temp, 2, &pos); +#endif if (sscanf(temp, "%hhx", &buf[i]) != 1) { if (0) RTW_ERR("%s sscanf fail\n", __func__); @@ -2574,10 +2578,18 @@ u32 rtw_read_efuse_from_file(const char *path, u8 *buf) } if ((i % EFUSE_FILE_COLUMN_NUM) == (EFUSE_FILE_COLUMN_NUM - 1)) { /* Filter the lates space char. */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) + kernel_read(fp, temp, 1, &pos); +#else vfs_read(fp, temp, 1, &pos); +#endif if (strchr(temp, ' ') == NULL) { pos--; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) + kernel_read(fp, temp, 2, &pos); +#else vfs_read(fp, temp, 2, &pos); +#endif } } else { pos += 1; /* Filter the space character */ @@ -2634,7 +2646,11 @@ u32 rtw_read_macaddr_from_file(const char *path, u8 *buf) fs = get_fs(); set_fs(KERNEL_DS); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) + kernel_read(fp, source_addr, 18, &pos); +#else vfs_read(fp, source_addr, 18, &pos); +#endif source_addr[17] = ':'; head = end = source_addr; diff --git a/core/rtw_wlan_util.c b/core/rtw_wlan_util.c index 6844da964..5943c1233 100644 --- a/core/rtw_wlan_util.c +++ b/core/rtw_wlan_util.c @@ -4475,7 +4475,11 @@ int rtw_dev_nlo_info_set(struct pno_nlo_info *nlo_info, pno_ssid_t *ssid, source = rtw_zmalloc(2048); if (source != NULL) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) + len = kernel_read(fp, source, len, &pos); +#else len = vfs_read(fp, source, len, &pos); +#endif rtw_parse_cipher_list(nlo_info, source); rtw_mfree(source, 2048); } diff --git a/os_dep/osdep_service.c b/os_dep/osdep_service.c index 7fb0b4bc8..13a5bea74 100644 --- a/os_dep/osdep_service.c +++ b/os_dep/osdep_service.c @@ -1920,7 +1920,11 @@ static int readFile(struct file *fp, char *buf, int len) while (sum < len) { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) + rlen = kernel_read(fp, buf + sum, len - sum, &fp->f_pos); +#else rlen = __vfs_read(fp, buf + sum, len - sum, &fp->f_pos); +#endif #else rlen = fp->f_op->read(fp, buf + sum, len - sum, &fp->f_pos); #endif From e56c261fc57b99c1e67e5efdcb9f60667c2bdb79 Mon Sep 17 00:00:00 2001 From: evilphish Date: Mon, 23 Oct 2017 21:10:47 +0200 Subject: [PATCH 065/234] Unified kimos and my VHT fixes, nuked obsolete capab functions to clean up and make things less confusing --- os_dep/linux/ioctl_cfg80211.c | 150 ++++++---------------------------- 1 file changed, 23 insertions(+), 127 deletions(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 83891e17c..b86f26d43 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -6237,17 +6237,26 @@ static void rtw_cfg80211_init_vht_capab(_adapter *padapter, struct ieee80211_sta } /* B8 B9 B10 Rx STBC */ - if(TEST_FLAG(pvhtpriv->stbc_cap, STBC_VHT_ENABLE_RX)) { - rtw_hal_get_def_var(padapter, HAL_DEF_RX_STBC, (u8 *)(&rx_stbc_nss)); - - if (rx_stbc_nss == 1) - vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_1; - else if (rx_stbc_nss == 2) - vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_2; - else if (rx_stbc_nss == 3) - vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_3; + if (TEST_FLAG(pvhtpriv->stbc_cap, STBC_VHT_ENABLE_RX)) { + switch (rf_type) { + case RF_1T1R: + vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_1;/*RX STBC One spatial stream*/ + break; + case RF_2T2R: + case RF_1T2R: + vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_2;/*RX STBC Two spatial streams*/ + break; + case RF_3T3R: + case RF_3T4R: + case RF_4T4R: + vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_3;/*RX STBC Three spatial streams*/ + break; + default: + /* DBG_871X("[warning] rf_type %d is not expected\n", rf_type); */ + break; + } } - + /* B11 SU Beamformer Capable */ if (TEST_FLAG(pvhtpriv->beamform_cap, BEAMFORMING_VHT_BEAMFORMER_ENABLE)) { vht_cap->cap |= IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE; @@ -6282,128 +6291,15 @@ static void rtw_cfg80211_init_vht_capab(_adapter *padapter, struct ieee80211_sta else vht_cap->cap |= 7 << IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT; - // Link Adaptation not supported /* B26 27 VHT Link Adaptation Capable */ - /* find the largest bw supported by both registry and hal */ + /* this is taken from core/rtw_vht.c */ bw = hal_largest_bw(padapter, REGSTY_BW_5G(pregistrypriv)); - - HighestRate = VHT_MCS_DATA_RATE[bw][pvhtpriv->sgi_80m][((pvhtpriv->vht_highest_rate - MGN_VHT1SS_MCS0)&0x3f)]; + HighestRate = rtw_vht_mcs_to_data_rate(bw, pvhtpriv->sgi_80m, pvhtpriv->vht_highest_rate); HighestRate = (HighestRate+1) >> 1; - vht_cap->vht_mcs.tx_highest = HighestRate; //indicate we support highest rx rate is 600Mbps. - vht_cap->vht_mcs.rx_highest = HighestRate; //indicate we support highest rx rate is 600Mbps. -} - -static void rtw_cfg80211_create_vht_cap(_adapter *padapter, struct ieee80211_sta_vht_cap *vht_cap) -{ -#ifdef CONFIG_80211AC_VHT - static int highest_rates[] = {433, 866, 1300, 1733}; // 80 MHz - u16 mcs_map; - int i; - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); - struct mlme_priv *pmlmepriv = &padapter->mlmepriv; - struct vht_priv *pvhtpriv = &pmlmepriv->vhtpriv; - - vht_cap->vht_supported = 1; - vht_cap->cap = IEEE80211_VHT_CAP_RXLDPC|IEEE80211_VHT_CAP_SHORT_GI_80|IEEE80211_VHT_CAP_TXSTBC| - IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE; - - mcs_map = 0; - for (i = 0; i < 8; i++) { - if(i < pHalData->NumTotalRFPath) - mcs_map |= IEEE80211_VHT_MCS_SUPPORT_0_9 << (i*2); - else - mcs_map |= IEEE80211_VHT_MCS_NOT_SUPPORTED << (i*2); - } - - vht_cap->vht_mcs.tx_mcs_map = - vht_cap->vht_mcs.rx_mcs_map = cpu_to_le16(mcs_map); - vht_cap->vht_mcs.tx_highest = - vht_cap->vht_mcs.rx_highest = cpu_to_le16(highest_rates[pHalData->NumTotalRFPath-1]); -#else - vht_cap->vht_supported = 0; -#endif -} - -static void rtw_cfg80211_init_vht_capab_ex(_adapter *padapter, struct ieee80211_sta_vht_cap *vht_cap, u8 rf_type) -{ -//todo: Support for other bandwidths - -/* NSS = Number of Spatial Streams */ -#define MAX_BIT_RATE_80MHZ_NSS3 1300 /* Mbps */ -#define MAX_BIT_RATE_80MHZ_NSS2 867 /* Mbps */ -#define MAX_BIT_RATE_80MHZ_NSS1 434 /* Mbps */ - - struct registry_priv *pregistrypriv = &padapter->registrypriv; - struct mlme_priv *pmlmepriv = &padapter->mlmepriv; - struct vht_priv *pvhtpriv = &pmlmepriv->vhtpriv; - - rtw_vht_use_default_setting(padapter); - - /* RX LDPC */ - if (TEST_FLAG(pvhtpriv->ldpc_cap, LDPC_VHT_ENABLE_RX)) - vht_cap->cap |= IEEE80211_VHT_CAP_RXLDPC; - - /* TX STBC */ - if (TEST_FLAG(pvhtpriv->stbc_cap, STBC_VHT_ENABLE_TX)) - vht_cap->cap |= IEEE80211_VHT_CAP_TXSTBC; - - /* RX STBC */ - if (TEST_FLAG(pvhtpriv->stbc_cap, STBC_VHT_ENABLE_RX)) { - switch (rf_type) { - case RF_1T1R: - vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_1;/*RX STBC One spatial stream*/ - break; - case RF_2T2R: - case RF_1T2R: - vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_2;/*RX STBC Two spatial streams*/ - break; - case RF_3T3R: - case RF_3T4R: - case RF_4T4R: - vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_3;/*RX STBC Three spatial streams*/ - break; - default: - /* DBG_871X("[warning] rf_type %d is not expected\n", rf_type); */ - break; - } - } - - /* switch (rf_type) { - case RF_1T1R: - vht_cap->vht_mcs.tx_highest = MAX_BIT_RATE_80MHZ_NSS1; - vht_cap->vht_mcs.rx_highest = MAX_BIT_RATE_80MHZ_NSS1; - break; - case RF_2T2R: - case RF_1T2R: - vht_cap->vht_mcs.tx_highest = MAX_BIT_RATE_80MHZ_NSS2; - vht_cap->vht_mcs.rx_highest = MAX_BIT_RATE_80MHZ_NSS2; - break; - case RF_3T3R: - case RF_3T4R: - case RF_4T4R: - vht_cap->vht_mcs.tx_highest = MAX_BIT_RATE_80MHZ_NSS3; - vht_cap->vht_mcs.rx_highest = MAX_BIT_RATE_80MHZ_NSS3; - break; - default: - DBG_871X("[warning] rf_type %d is not expected\n", rf_type); - break; - } */ - - /* MCS map */ - vht_cap->vht_mcs.tx_mcs_map = pvhtpriv->vht_mcs_map[0] | (pvhtpriv->vht_mcs_map[1] << 8); - vht_cap->vht_mcs.rx_mcs_map = vht_cap->vht_mcs.tx_mcs_map; - - if (rf_type == RF_1T1R) { - vht_cap->vht_mcs.tx_highest = MAX_BIT_RATE_80MHZ_NSS1; - vht_cap->vht_mcs.rx_highest = MAX_BIT_RATE_80MHZ_NSS1; - } - - if (pvhtpriv->sgi_80m) - vht_cap->cap |= IEEE80211_VHT_CAP_SHORT_GI_80; - - vht_cap->cap |= (pvhtpriv->ampdu_len << IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT); + vht_cap->vht_mcs.tx_highest = HighestRate; + vht_cap->vht_mcs.rx_highest = HighestRate; } void rtw_cfg80211_init_wiphy(_adapter *padapter) From 5e1dea9391b2d2facf3a12cf1b9d11f57b07f9f9 Mon Sep 17 00:00:00 2001 From: evilphish Date: Mon, 23 Oct 2017 21:36:05 +0200 Subject: [PATCH 066/234] removed unnecessary extern const --- include/rtw_vht.h | 1 - 1 file changed, 1 deletion(-) diff --git a/include/rtw_vht.h b/include/rtw_vht.h index b273eb6ea..1d886bbd5 100644 --- a/include/rtw_vht.h +++ b/include/rtw_vht.h @@ -139,6 +139,5 @@ void rtw_process_vht_op_mode_notify(_adapter *padapter, u8 *pframe, PVOID sta); u32 rtw_restructure_vht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len); void VHTOnAssocRsp(_adapter *padapter); u8 rtw_vht_mcsmap_to_nss(u8 *pvht_mcs_map); -extern const u16 VHT_MCS_DATA_RATE[3][2][30]; #endif /* _RTW_VHT_H_ */ From 6926fe7f636ce229dc8d2b03eecddea07c163539 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 24 Oct 2017 14:32:15 +0200 Subject: [PATCH 067/234] Some fixes and tweaks --- os_dep/linux/ioctl_cfg80211.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index b86f26d43..759b38d95 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -648,8 +648,10 @@ void rtw_cfg80211_ibss_indicate_connect(_adapter *padapter) return ; } } else { - if (scanned == NULL) + if (scanned == NULL) { rtw_warn_on(1); + return; + } if (_rtw_memcmp(&(scanned->network.Ssid), &(pnetwork->Ssid), sizeof(NDIS_802_11_SSID)) == _TRUE && _rtw_memcmp(scanned->network.MacAddress, pnetwork->MacAddress, sizeof(NDIS_802_11_MAC_ADDRESS)) == _TRUE @@ -907,7 +909,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) { if (param->u.crypt.idx >= WEP_KEYS #ifdef CONFIG_IEEE80211W - && param->u.crypt.idx > BIP_MAX_KEYID + || param->u.crypt.idx >= BIP_MAX_KEYID #endif /* CONFIG_IEEE80211W */ ) { ret = -EINVAL; @@ -1166,7 +1168,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) { if (param->u.crypt.idx >= WEP_KEYS #ifdef CONFIG_IEEE80211W - && param->u.crypt.idx > BIP_MAX_KEYID + || param->u.crypt.idx >= BIP_MAX_KEYID #endif /* CONFIG_IEEE80211W */ ) { ret = -EINVAL; @@ -3478,8 +3480,10 @@ static int rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb, struct net_de RTW_INFO(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); - if (skb) - rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize); + if (!skb) + goto fail; + + rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize); if (unlikely(skb->len < sizeof(struct ieee80211_radiotap_header))) goto fail; From 87b296ddbf1e524bf609e599386cc4208c19fb1e Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 24 Oct 2017 14:41:03 +0200 Subject: [PATCH 068/234] Removed some spacing --- hal/HalPwrSeqCmd.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/hal/HalPwrSeqCmd.c b/hal/HalPwrSeqCmd.c index de709b106..a4fd21a3a 100644 --- a/hal/HalPwrSeqCmd.c +++ b/hal/HalPwrSeqCmd.c @@ -35,7 +35,6 @@ Major Change History: --*/ #include - /* * Description: * This routine deal with the Power Configuration CMDs parsing for RTL8723/RTL8188E Series IC. @@ -63,7 +62,6 @@ u8 HalPwrSeqCmdParsing( do { PwrCfgCmd = PwrSeqCmd[AryIdx]; - /* 2 Only Handle the command whose FAB, CUT, and Interface are matched */ if ((GET_PWR_CFG_FAB_MASK(PwrCfgCmd) & FabVersion) && (GET_PWR_CFG_CUT_MASK(PwrCfgCmd) & CutVersion) && From 650a632c96409c3bd9d4344d893409400292d076 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 24 Oct 2017 14:42:28 +0200 Subject: [PATCH 069/234] Removed some spacing --- hal/hal_dm.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/hal/hal_dm.c b/hal/hal_dm.c index 870685fb0..e152da300 100644 --- a/hal/hal_dm.c +++ b/hal/hal_dm.c @@ -99,7 +99,6 @@ void Init_ODM_ComInfo(_adapter *adapter) ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_BWIFI_TEST, adapter->registrypriv.wifi_spec); - if (pHalData->rf_type == RF_1T1R) ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_RF_TYPE, ODM_1T1R); else if (pHalData->rf_type == RF_1T2R) @@ -121,7 +120,6 @@ void Init_ODM_ComInfo(_adapter *adapter) else ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_RF_TYPE, ODM_XTXR); - { /* 1 ======= BoardType: ODM_CMNINFO_BOARD_TYPE ======= */ u8 odm_board_type = ODM_BOARD_DEFAULT; From 8c6bb817671cface7ce7f3c8b439008c288323c9 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 24 Oct 2017 14:48:00 +0200 Subject: [PATCH 070/234] Removed some spacing --- hal/hal_mp.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/hal/hal_mp.c b/hal/hal_mp.c index bf6b4c270..4f53504b2 100644 --- a/hal/hal_mp.c +++ b/hal/hal_mp.c @@ -52,7 +52,6 @@ #endif #endif /* !RTW_HALMAC */ - u8 MgntQuery_NssTxRate(u16 Rate) { u8 NssNum = RF_TX_NUM_NONIMPLEMENT; @@ -112,7 +111,6 @@ s32 hal_mpt_SetPowerTracking(PADAPTER padapter, u8 enable) HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); PDM_ODM_T pDM_Odm = &(pHalData->odmpriv); - if (!netif_running(padapter->pnetdev)) { return _FAIL; } @@ -137,7 +135,6 @@ void hal_mpt_GetPowerTracking(PADAPTER padapter, u8 *enable) *enable = pDM_Odm->RFCalibrateInfo.TxPowerTrackControl; } - void hal_mpt_CCKTxPowerAdjust(PADAPTER Adapter, BOOLEAN bInCH14) { u32 TempVal = 0, TempVal2 = 0, TempVal3 = 0; @@ -1299,7 +1296,6 @@ void mpt_SetRFPath_8723D(PADAPTER pAdapter) PHY_SetRFReg(pAdapter, ODM_RF_PATH_A, 0x51, bRFRegOffsetMask, 0x6B04E); - for (i = 0; i < 3; ++i) { /* <20130603, Kordan> Because BB suppors only 1T1R, we restore IQC to S1 instead of S0.*/ @@ -1468,7 +1464,6 @@ VOID mpt_SetRFPath_819X(PADAPTER pAdapter) break; } - if (chgTx && chgRx) { switch (pHalData->rf_chip) { case RF_8225: @@ -1493,7 +1488,6 @@ VOID mpt_SetRFPath_819X(PADAPTER pAdapter) } } /* MPT_ProSetRFPath */ - void hal_mpt_SetAntenna(PADAPTER pAdapter) { @@ -1560,12 +1554,10 @@ s32 hal_mpt_SetThermalMeter(PADAPTER pAdapter, u8 target_ther) return _FAIL; } - if (check_fwstate(&pAdapter->mlmepriv, WIFI_MP_STATE) == _FALSE) { return _FAIL; } - target_ther &= 0xff; if (target_ther < 0x07) target_ther = 0x07; @@ -1577,14 +1569,12 @@ s32 hal_mpt_SetThermalMeter(PADAPTER pAdapter, u8 target_ther) return _SUCCESS; } - void hal_mpt_TriggerRFThermalMeter(PADAPTER pAdapter) { PHY_SetRFReg(pAdapter, ODM_RF_PATH_A, 0x42, BIT17 | BIT16, 0x03); } - u8 hal_mpt_ReadRFThermalMeter(PADAPTER pAdapter) { @@ -1595,7 +1585,6 @@ u8 hal_mpt_ReadRFThermalMeter(PADAPTER pAdapter) } - void hal_mpt_GetThermalMeter(PADAPTER pAdapter, u8 *value) { #if 0 @@ -1611,7 +1600,6 @@ void hal_mpt_GetThermalMeter(PADAPTER pAdapter, u8 *value) } - void hal_mpt_SetSingleCarrierTx(PADAPTER pAdapter, u8 bStart) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); @@ -1656,7 +1644,6 @@ void hal_mpt_SetSingleCarrierTx(PADAPTER pAdapter, u8 bStart) } } - void hal_mpt_SetSingleToneTx(PADAPTER pAdapter, u8 bStart) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); @@ -2071,7 +2058,6 @@ static VOID mpt_StopCckContTx( } /* mpt_StopCckContTx */ - static VOID mpt_StopOfdmContTx( PADAPTER pAdapter ) From eeb846691940771d2fa49a3512668fcdd52498fb Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 24 Oct 2017 14:56:21 +0200 Subject: [PATCH 071/234] Use endian macros from kernel --- include/ieee80211_ext.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/include/ieee80211_ext.h b/include/ieee80211_ext.h index 03cc33058..6ac3b76de 100644 --- a/include/ieee80211_ext.h +++ b/include/ieee80211_ext.h @@ -63,7 +63,7 @@ struct rsn_ie_hdr { } __attribute__((packed)); struct wme_ac_parameter { -#if defined(CONFIG_LITTLE_ENDIAN) +#if defined(__LITTLE_ENDIAN) /* byte 1 */ u8 aifsn:4, acm:1, @@ -73,7 +73,7 @@ struct wme_ac_parameter { /* byte 2 */ u8 eCWmin:4, eCWmax:4; -#elif defined(CONFIG_BIG_ENDIAN) +#else /* byte 1 */ u8 reserved:1, aci:2, @@ -83,8 +83,6 @@ struct wme_ac_parameter { /* byte 2 */ u8 eCWmax:4, eCWmin:4; -#else -#error "Please fix " #endif /* bytes 3 & 4 */ From b21933b78e1a57a48b891c49f35f292595f348d2 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 24 Oct 2017 14:58:25 +0200 Subject: [PATCH 072/234] Use endian macros from kernel --- hal/phydm/phydm_types.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hal/phydm/phydm_types.h b/hal/phydm/phydm_types.h index a5382fb9c..90be597c6 100644 --- a/hal/phydm/phydm_types.h +++ b/hal/phydm/phydm_types.h @@ -217,9 +217,9 @@ typedef enum _RT_SPINLOCK_TYPE{ #endif - #if defined(CONFIG_LITTLE_ENDIAN) + #if defined(__LITTLE_ENDIAN) #define ODM_ENDIAN_TYPE ODM_ENDIAN_LITTLE - #elif defined (CONFIG_BIG_ENDIAN) + #else #define ODM_ENDIAN_TYPE ODM_ENDIAN_BIG #endif From 88030586b4fffe14bf8475151ac144fe4473ac71 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 24 Oct 2017 14:59:58 +0200 Subject: [PATCH 073/234] Use endian macros from kernel --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index b689e0644..f848e2ab3 100755 --- a/Makefile +++ b/Makefile @@ -1055,7 +1055,6 @@ endif EXTRA_CFLAGS += -DDM_ODM_SUPPORT_TYPE=0x04 ifeq ($(CONFIG_PLATFORM_I386_PC), y) -EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT SUBARCH := $(shell uname -m | sed -e s/i.86/i386/) ARCH ?= $(SUBARCH) From d2300a27905c9c02f9b2fae857a532d276b44494 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 24 Oct 2017 15:03:25 +0200 Subject: [PATCH 074/234] Use endian macros from kernel --- include/rtw_byteorder.h | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/include/rtw_byteorder.h b/include/rtw_byteorder.h index 70482d26b..0755d5221 100644 --- a/include/rtw_byteorder.h +++ b/include/rtw_byteorder.h @@ -21,18 +21,10 @@ #define _RTL871X_BYTEORDER_H_ -#if defined(CONFIG_LITTLE_ENDIAN) && defined (CONFIG_BIG_ENDIAN) - #error "Shall be CONFIG_LITTLE_ENDIAN or CONFIG_BIG_ENDIAN, but not both!\n" -#endif - -#if defined(CONFIG_LITTLE_ENDIAN) - #ifndef CONFIG_PLATFORM_MSTAR389 - #include - #endif -#elif defined (CONFIG_BIG_ENDIAN) - #include +#if defined(__LITTLE_ENDIAN) +#include #else - # error "Must be LITTLE/BIG Endian Host" +#include #endif #endif /* _RTL871X_BYTEORDER_H_ */ From 5a09d2cbce284a5cf5541b99a3cbd13dcb3994d8 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 24 Oct 2017 15:05:17 +0200 Subject: [PATCH 075/234] Use endian macros from kernel --- include/rtw_io.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/rtw_io.h b/include/rtw_io.h index 44a17491a..1cfd44d6e 100644 --- a/include/rtw_io.h +++ b/include/rtw_io.h @@ -197,7 +197,7 @@ struct intf_hdl { struct reg_protocol_rd { -#ifdef CONFIG_LITTLE_ENDIAN +#ifdef __LITTLE_ENDIAN /* DW1 */ u32 NumOfTrans:4; @@ -255,7 +255,7 @@ struct reg_protocol_rd { struct reg_protocol_wt { -#ifdef CONFIG_LITTLE_ENDIAN +#ifdef __LITTLE_ENDIAN /* DW1 */ u32 NumOfTrans:4; From c7f1aeb25780b6188726c178635543b5765ac948 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 24 Oct 2017 15:07:24 +0200 Subject: [PATCH 076/234] Use endian macros from kernel --- include/rtw_mlme_ext.h | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/include/rtw_mlme_ext.h b/include/rtw_mlme_ext.h index 850eccba1..0ef5f8c66 100644 --- a/include/rtw_mlme_ext.h +++ b/include/rtw_mlme_ext.h @@ -1153,22 +1153,18 @@ struct cmd_hdl wlancmds[] = { struct C2HEvent_Header { -#ifdef CONFIG_LITTLE_ENDIAN +#ifdef __LITTLE_ENDIAN unsigned int len:16; unsigned int ID:8; unsigned int seq:8; -#elif defined(CONFIG_BIG_ENDIAN) +#else unsigned int seq:8; unsigned int ID:8; unsigned int len:16; -#else - -# error "Must be LITTLE or BIG Endian" - #endif unsigned int rsvd; From 4615068c7671d22ab562620641608fb36202decd Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 24 Oct 2017 15:10:27 +0200 Subject: [PATCH 077/234] Use endian macros from kernel + removed spaces --- include/rtw_security.h | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/include/rtw_security.h b/include/rtw_security.h index ae651e0f1..2defb2ded 100644 --- a/include/rtw_security.h +++ b/include/rtw_security.h @@ -20,7 +20,6 @@ #ifndef __RTW_SECURITY_H_ #define __RTW_SECURITY_H_ - #define _NO_PRIVACY_ 0x0 #define _WEP40_ 0x1 #define _TKIP_ 0x2 @@ -63,7 +62,6 @@ typedef enum { ENCRYP_PROTOCOL_MAX } ENCRYP_PROTOCOL_E; - #ifndef Ndis802_11AuthModeWPA2 #define Ndis802_11AuthModeWPA2 (Ndis802_11AuthModeWPANone + 1) #endif @@ -76,7 +74,7 @@ union pn48 { u64 val; -#ifdef CONFIG_LITTLE_ENDIAN +#ifdef __LITTLE_ENDIAN struct { u8 TSC0; @@ -89,7 +87,7 @@ struct { u8 TSC7; } _byte_; -#elif defined(CONFIG_BIG_ENDIAN) +#else struct { u8 TSC7; @@ -111,7 +109,6 @@ union Keytype { u32 lkey[4]; }; - typedef struct _RT_PMKID_LIST { u8 bUsed; u8 Bssid[6]; @@ -121,7 +118,6 @@ typedef struct _RT_PMKID_LIST { u16 ssid_length; } RT_PMKID_LIST, *PRT_PMKID_LIST; - struct security_priv { u32 dot11AuthAlgrthm; /* 802.11 auth, could be open, shared, 8021x and authswitch */ u32 dot11PrivacyAlgrthm; /* This specify the privacy for shared auth. algorithm. */ @@ -162,7 +158,6 @@ struct security_priv { u8 wps_ie[MAX_WPS_IE_LEN];/* added in assoc req */ int wps_ie_len; - u8 binstallGrpkey; #ifdef CONFIG_GTK_OL u8 binstallKCK_KEK; @@ -182,7 +177,6 @@ struct security_priv { s32 hw_decrypted;/* if the rx packets is hw_decrypted==_FALSE, it means the hw has not been ready. */ - /* keeps the auth_type & enc_status from upper layer ioctl(wpa_supplicant or wzc) */ u32 ndisauthtype; /* NDIS_802_11_AUTHENTICATION_MODE */ u32 ndisencryptstatus; /* NDIS_802_11_ENCRYPTION_STATUS */ @@ -198,7 +192,6 @@ struct security_priv { 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; @@ -297,7 +290,6 @@ struct sha256_state { } \ } while (0) - #define GET_TKIP_PN(iv, dot11txpn)\ do {\ dot11txpn._byte_.TSC0 = iv[2];\ @@ -308,7 +300,6 @@ struct sha256_state { dot11txpn._byte_.TSC5 = iv[7];\ } while (0) - #define ROL32(A, n) (((A) << (n)) | (((A)>>(32-(n))) & ((1UL << (n)) - 1))) #define ROR32(A, n) ROL32((A), 32-(n)) @@ -425,7 +416,6 @@ static const unsigned long K[64] = { 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL }; - /* Various logical functions */ #define RORc(x, y) \ (((((unsigned long) (x) & 0xFFFFFFFFUL) >> (unsigned long) ((y) & 31)) | \ From efc08fe29585447d00fcdca937045c7c28c62a10 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 24 Oct 2017 15:24:01 +0200 Subject: [PATCH 078/234] Use endian macros from kernel + spacing --- os_dep/linux/ioctl_linux.c | 78 ++------------------------------------ 1 file changed, 3 insertions(+), 75 deletions(-) diff --git a/os_dep/linux/ioctl_linux.c b/os_dep/linux/ioctl_linux.c index 0827a0895..c1adefbf1 100644 --- a/os_dep/linux/ioctl_linux.c +++ b/os_dep/linux/ioctl_linux.c @@ -33,7 +33,6 @@ extern int rtw_ht_enable; #endif - #define RTL_IOCTL_WPA_SUPPLICANT (SIOCIWFIRSTPRIV+30) #define SCAN_ITEM_SIZE 768 @@ -57,7 +56,6 @@ extern int ui_pid[3]; #define WEXT_CSCAN_HOME_DWELL_SECTION 'H' #define WEXT_CSCAN_TYPE_SECTION 'T' - extern u8 key_2char2num(u8 hch, u8 lch); extern u8 str_2char2num(u8 hch, u8 lch); extern void macstr2num(u8 *dst, u8 *src); @@ -148,7 +146,6 @@ static void indicate_wx_custom_event(_adapter *padapter, char *msg) } - static void request_wps_pbc_event(_adapter *padapter) { u8 *buff, *p; @@ -219,7 +216,6 @@ void indicate_wx_scan_complete_event(_adapter *padapter) #endif } - void rtw_indicate_wx_assoc_event(_adapter *padapter) { union iwreq_data wrqu; @@ -586,7 +582,6 @@ static inline char *iwe_stream_wpa_wpa2_process(_adapter *padapter, u8 *p; sint out_len = 0; - if (pbuf) { p = pbuf; @@ -694,7 +689,6 @@ static inline char *iwe_stream_wapi_process(_adapter *padapter, RTW_INFO("rtw_wx_get_scan: %s ", pnetwork->network.Ssid.Ssid); RTW_INFO("rtw_wx_get_scan: ssid = %d ", wapi_len); - if (wapi_len > 0) { p = buf_wapi; /* _rtw_memset(buf_wapi, 0, MAX_WAPI_IE_LEN*2); */ @@ -746,7 +740,6 @@ static inline char *iwe_stream_rssi_process(_adapter *padapter, sq = pnetwork->network.PhyInfo.SignalQuality; } - #ifdef CONFIG_SIGNAL_DISPLAY_DBM iwe->u.qual.level = (u8) translate_percentage_to_dbm(ss); /* dbm */ #else @@ -1103,7 +1096,6 @@ static char *translate_scan(_adapter *padapter, RTW_INFO("rtw_wx_get_scan: %s ", pnetwork->network.Ssid.Ssid); RTW_INFO("rtw_wx_get_scan: ssid = %d ", wapi_len); - if (wapi_len > 0) { p = buf_wapi; _rtw_memset(buf_wapi, 0, MAX_WAPI_IE_LEN * 2); @@ -1150,7 +1142,6 @@ static char *translate_scan(_adapter *padapter, sq = pnetwork->network.PhyInfo.SignalQuality; } - #ifdef CONFIG_SIGNAL_DISPLAY_DBM iwe.u.qual.level = (u8) translate_percentage_to_dbm(ss); /* dbm */ #else @@ -1262,7 +1253,6 @@ static int wpa_set_encryption(struct net_device *dev, struct ieee_param *param, struct wifidirect_info *pwdinfo = &padapter->wdinfo; #endif /* CONFIG_P2P */ - param->u.crypt.err = 0; param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0'; @@ -1484,7 +1474,6 @@ static int wpa_set_encryption(struct net_device *dev, struct ieee_param *param, exit: - return ret; } @@ -1645,7 +1634,6 @@ static int rtw_set_wpa_ie(_adapter *padapter, char *pie, unsigned short ielen) * || check_fwstate(&padapter->mlmepriv, WIFI_UNDER_WPS) == _TRUE) */ rtw_hal_set_hwreg(padapter, HW_VAR_OFF_RCR_AM, null_addr); - exit: if (buf) @@ -1667,8 +1655,6 @@ static int rtw_wx_get_name(struct net_device *dev, WLAN_BSSID_EX *pcur_bss = &pmlmepriv->cur_network.network; NDIS_802_11_RATES_EX *prates = NULL; - - if (check_fwstate(pmlmepriv, _FW_LINKED | WIFI_ADHOC_MASTER_STATE) == _TRUE) { /* parsing HT_CAP_IE */ p = rtw_get_ie(&pcur_bss->IEs[12], _HT_CAPABILITY_IE_, &ht_ielen, pcur_bss->IELength - 12); @@ -1718,7 +1704,6 @@ static int rtw_wx_get_name(struct net_device *dev, snprintf(wrqu->name, IFNAMSIZ, "unassociated"); } - return 0; } @@ -1733,8 +1718,6 @@ static int rtw_wx_set_freq(struct net_device *dev, struct wlan_network *cur_network = &(pmlmepriv->cur_network); int exp = 1, freq = 0, div = 0; - - if (wrqu->freq.m <= 1000) { if (wrqu->freq.flags == IW_FREQ_AUTO) { if (rtw_ch_set_search_ch(padapter->mlmeextpriv.channel_set, wrqu->freq.m) > 0) { @@ -1778,7 +1761,6 @@ static int rtw_wx_set_freq(struct net_device *dev, set_channel_bwmode(padapter, padapter->mlmeextpriv.cur_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, CHANNEL_WIDTH_20); - return 0; } @@ -1891,7 +1873,6 @@ static int rtw_wx_set_mode(struct net_device *dev, struct iw_request_info *a, exit: - return ret; } @@ -1902,8 +1883,6 @@ static int rtw_wx_get_mode(struct net_device *dev, struct iw_request_info *a, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); - - if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) wrqu->mode = IW_MODE_INFRA; else if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) || @@ -1922,7 +1901,6 @@ static int rtw_wx_get_mode(struct net_device *dev, struct iw_request_info *a, } - static int rtw_wx_set_pmkid(struct net_device *dev, struct iw_request_info *a, union iwreq_data *wrqu, char *extra) @@ -2043,8 +2021,6 @@ static int rtw_wx_get_range(struct net_device *dev, u16 val; int i; - - wrqu->data.length = sizeof(*range); _rtw_memset(range, 0, sizeof(*range)); @@ -2182,8 +2158,6 @@ static int rtw_wx_get_range(struct net_device *dev, IW_SCAN_CAPA_CHANNEL | IW_SCAN_CAPA_MODE | IW_SCAN_CAPA_RATE; #endif - - return 0; } @@ -2318,8 +2292,6 @@ static int rtw_wx_get_wap(struct net_device *dev, _rtw_memset(wrqu->ap_addr.sa_data, 0, ETH_ALEN); - - if (((check_fwstate(pmlmepriv, _FW_LINKED)) == _TRUE) || ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) == _TRUE) || ((check_fwstate(pmlmepriv, WIFI_AP_STATE)) == _TRUE)) @@ -2328,7 +2300,6 @@ static int rtw_wx_get_wap(struct net_device *dev, else _rtw_memset(wrqu->ap_addr.sa_data, 0, ETH_ALEN); - return 0; } @@ -2351,7 +2322,6 @@ static int rtw_wx_set_mlme(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct iw_mlme *mlme = (struct iw_mlme *) extra; - if (mlme == NULL) return -1; @@ -2359,10 +2329,8 @@ static int rtw_wx_set_mlme(struct net_device *dev, reason = cpu_to_le16(mlme->reason_code); - RTW_INFO("%s, cmd=%d, reason=%d\n", __FUNCTION__, mlme->cmd, reason); - switch (mlme->cmd) { case IW_MLME_DEAUTH: if (!rtw_set_802_11_disassociate(padapter)) @@ -2395,7 +2363,6 @@ static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a, struct wifidirect_info *pwdinfo = &(padapter->wdinfo); #endif /* CONFIG_P2P */ - #ifdef DBG_IOCTL RTW_INFO("DBG_IOCTL %s:%d\n", __FUNCTION__, __LINE__); #endif @@ -2522,7 +2489,6 @@ static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a, len -= sec_len; break; - case WEXT_CSCAN_CHANNEL_SECTION: /* RTW_INFO("WEXT_CSCAN_CHANNEL_SECTION\n"); */ pos += 1; @@ -2603,7 +2569,6 @@ static int rtw_wx_get_scan(struct net_device *dev, struct iw_request_info *a, struct wifidirect_info *pwdinfo = &padapter->wdinfo; #endif /* CONFIG_P2P */ - #ifdef DBG_IOCTL RTW_INFO("DBG_IOCTL %s:%d\n", __FUNCTION__, __LINE__); #endif @@ -2683,7 +2648,6 @@ static int rtw_wx_get_scan(struct net_device *dev, struct iw_request_info *a, exit: - #ifdef DBG_IOCTL RTW_INFO("DBG_IOCTL %s:%d return %d\n", __FUNCTION__, __LINE__, ret); #endif @@ -2732,8 +2696,6 @@ static int rtw_wx_set_essid(struct net_device *dev, goto exit; } - - rtw_ps_deny(padapter, PS_DENY_JOIN); if (_FAIL == rtw_pwr_wakeup(padapter)) { ret = -1; @@ -2845,7 +2807,6 @@ static int rtw_wx_set_essid(struct net_device *dev, RTW_INFO("DBG_IOCTL %s:%d return %d\n", __FUNCTION__, __LINE__, ret); #endif - return ret; } @@ -2858,8 +2819,6 @@ static int rtw_wx_get_essid(struct net_device *dev, struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); WLAN_BSSID_EX *pcur_bss = &pmlmepriv->cur_network.network; - - if ((check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) || (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE)) { len = pcur_bss->Ssid.SsidLength; @@ -2876,7 +2835,6 @@ static int rtw_wx_get_essid(struct net_device *dev, exit: - return ret; } @@ -2893,8 +2851,6 @@ static int rtw_wx_set_rate(struct net_device *dev, u32 ratevalue = 0; u8 mpdatarate[NumRates] = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0xff}; - - if (target_rate == -1) { ratevalue = 11; goto set_rate; @@ -2959,7 +2915,6 @@ static int rtw_wx_set_rate(struct net_device *dev, ret = -1; } - return ret; } @@ -3051,7 +3006,6 @@ static int rtw_wx_get_frag(struct net_device *dev, { _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - RTW_INFO("%s, frag_len=%d\n", __func__, padapter->xmitpriv.frag_len); wrqu->frag.value = padapter->xmitpriv.frag_len; @@ -3068,7 +3022,6 @@ static int rtw_wx_get_retry(struct net_device *dev, { /* _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); */ - wrqu->retry.value = 7; wrqu->retry.fixed = 0; /* no auto select */ wrqu->retry.disabled = 1; @@ -3118,7 +3071,6 @@ static int rtw_wx_set_enc(struct net_device *dev, key = erq->flags & IW_ENCODE_INDEX; - if (erq->flags & IW_ENCODE_DISABLED) { RTW_INFO("EncryptionDisabled\n"); padapter->securitypriv.ndisencryptstatus = Ndis802_11EncryptionDisabled; @@ -3225,7 +3177,6 @@ static int rtw_wx_set_enc(struct net_device *dev, exit: - return ret; } @@ -3248,7 +3199,6 @@ static int rtw_wx_get_enc(struct net_device *dev, } } - key = erq->flags & IW_ENCODE_INDEX; if (key) { @@ -3310,7 +3260,6 @@ static int rtw_wx_get_enc(struct net_device *dev, } - return ret; } @@ -3448,7 +3397,6 @@ static int rtw_wx_set_auth(struct net_device *dev, } #endif - ret = wpa_set_auth_algs(dev, (u32)param->value); break; @@ -3509,7 +3457,6 @@ static int rtw_wx_set_enc_ext(struct net_device *dev, param->cmd = IEEE_CMD_SET_ENCRYPTION; _rtw_memset(param->sta_addr, 0xff, ETH_ALEN); - switch (pext->alg) { case IW_ENCODE_ALG_NONE: /* todo: remove key */ @@ -3593,7 +3540,6 @@ static int rtw_wx_set_enc_ext(struct net_device *dev, return ret; } - static int rtw_wx_get_nick(struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) @@ -3636,7 +3582,6 @@ static int rtw_wx_get_nick(struct net_device *dev, RTW_INFO("dbg(0x664)=0x%x\n", rtw_read32(padapter, 0x664)); - RTW_INFO("\n"); RTW_INFO("dbg(0x430)=0x%x\n", rtw_read32(padapter, 0x430)); @@ -3672,7 +3617,6 @@ static int rtw_wx_read32(struct net_device *dev, u8 *ptmp; int ret; - ret = 0; padapter = (PADAPTER)rtw_netdev_priv(dev); p = &wrqu->data; @@ -3778,7 +3722,6 @@ static int rtw_wx_read_rf(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); u32 path, addr, data32; - path = *(u32 *)extra; addr = *((u32 *)extra + 1); data32 = rtw_hal_read_rfreg(padapter, path, addr, 0xFFFFF); @@ -3917,7 +3860,6 @@ static int rtw_drvext_hdl(struct net_device *dev, struct iw_request_info *info, goto _rtw_drvext_hdl_exit; } - bset = (u8)(p->flags & 0xFFFF); len = p->length; pparmbuf = (u8 *)rtw_malloc(len); @@ -3936,25 +3878,20 @@ static int rtw_drvext_hdl(struct net_device *dev, struct iw_request_info *info, } - /* */ poidparam = (struct drvext_oidparam *)pparmbuf; - - /* check subcode */ if (poidparam->subcode >= MAX_DRVEXT_HANDLERS) { ret = -EINVAL; goto _rtw_drvext_hdl_exit; } - if (poidparam->subcode >= MAX_DRVEXT_OID_SUBCODES) { ret = -EINVAL; goto _rtw_drvext_hdl_exit; } - phandler = drvextoidhandlers + poidparam->subcode; if (poidparam->len != phandler->parmsize) { @@ -3962,7 +3899,6 @@ static int rtw_drvext_hdl(struct net_device *dev, struct iw_request_info *info, goto _rtw_drvext_hdl_exit; } - res = phandler->handler(&padapter->drvextpriv, bset, poidparam->data); if (res == 0) { @@ -3976,7 +3912,6 @@ static int rtw_drvext_hdl(struct net_device *dev, struct iw_request_info *info, } else ret = -EFAULT; - _rtw_drvext_hdl_exit: return ret; @@ -4224,7 +4159,6 @@ static int rtw_get_ap_info(struct net_device *dev, break; } - /* pdata->length = 0; */ /* ? */ pdata->flags = 0; if (pdata->length >= 32) { @@ -4246,7 +4180,6 @@ static int rtw_get_ap_info(struct net_device *dev, if (rtw_end_of_queue_search(phead, plist) == _TRUE) break; - pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); /* if(hwaddr_aton_i(pdata->pointer, bssid)) */ @@ -4256,7 +4189,6 @@ static int rtw_get_ap_info(struct net_device *dev, return -EINVAL; } - if (_rtw_memcmp(bssid, pnetwork->network.MacAddress, ETH_ALEN) == _TRUE) { /* BSSID match, then check if supporting wpa/wpa2 */ RTW_INFO("BSSID:" MAC_FMT "\n", MAC_ARG(bssid)); @@ -4450,7 +4382,6 @@ static int rtw_p2p_set_go_nego_ssid(struct net_device *dev, } - static int rtw_p2p_set_intent(struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) @@ -4526,7 +4457,6 @@ static int rtw_p2p_set_op_ch(struct net_device *dev, } - static int rtw_p2p_profilefound(struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) @@ -11938,7 +11868,6 @@ static void freeloopbackpkt(PADAPTER padapter, struct xmit_frame *pframe) struct xmit_priv *pxmitpriv; struct xmit_buf *pxmitbuf; - pxmitpriv = &padapter->xmitpriv; pxmitbuf = pframe->pxmitbuf; @@ -11950,7 +11879,6 @@ static void printdata(u8 *pbuf, u32 len) { u32 i, val; - for (i = 0; (i + 4) <= len; i += 4) { printk("%08X", *(u32 *)(pbuf + i)); if ((i + 4) & 0x1F) @@ -11960,10 +11888,10 @@ static void printdata(u8 *pbuf, u32 len) } if (i < len) { -#ifdef CONFIG_BIG_ENDIAN +#ifdef __BIG_ENDIAN for (; i < len, i++) printk("%02X", pbuf + i); -#else /* CONFIG_LITTLE_ENDIAN */ +#else /* __LITTLE_ENDIAN */ #if 0 val = 0; _rtw_memcpy(&val, pbuf + i, len - i); @@ -11978,7 +11906,7 @@ static void printdata(u8 *pbuf, u32 len) n = (4 - n) * 2; printk("%8s", str + n); #endif -#endif /* CONFIG_LITTLE_ENDIAN */ +#endif /* __LITTLE_ENDIAN */ } printk("\n"); } From 0402e2a32bda7e5680f4e8b98be22aa6ba1a9ca8 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 24 Oct 2017 16:29:48 +0200 Subject: [PATCH 079/234] adopt upstream: net: Fix inconsistent teardown net: Fix inconsistent teardown and release of private netdev state. commit id cf124db566e6b036b8bcbe8decbed740bdfac8c6 --- os_dep/linux/ioctl_cfg80211.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 759b38d95..99ac279df 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -749,7 +749,7 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter) struct ieee80211_channel *notify_channel; u32 freq; u16 channel = cur_network->network.Configuration.DSConfig; - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0)) + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) struct cfg80211_roam_info roam_info = {}; #endif @@ -758,7 +758,7 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter) #endif RTW_INFO(FUNC_ADPT_FMT" call cfg80211_roamed\n", FUNC_ADPT_ARG(padapter)); - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0)) + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) roam_info.channel = notify_channel; roam_info.bssid = cur_network->network.MacAddress; roam_info.req_ie = @@ -3670,6 +3670,11 @@ static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name, struct ne mon_ndev->type = ARPHRD_IEEE80211_RADIOTAP; strncpy(mon_ndev->name, name, IFNAMSIZ); mon_ndev->name[IFNAMSIZ - 1] = 0; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12 ,0)) + mon_ndev->needs_free_netdev = true; +#else + mon_ndev->destructor = rtw_ndev_destructor; +#endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 9)) mon_ndev->needs_free_netdev = false; mon_ndev->priv_destructor = rtw_ndev_destructor; @@ -6446,7 +6451,7 @@ static void rtw_cfg80211_preinit_wiphy(_adapter *adapter, struct wiphy *wiphy) #endif #if defined(CONFIG_PM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)) - #if (LINUX_VERSION_CODE < KERNEL_VERSION(4,12,0)) + #if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 12 ,0)) wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN; #else // kernel >= 4.12 wiphy->max_sched_scan_reqs = 1; From 32f5d184046510109a8f31dd604ad2770f979948 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 24 Oct 2017 16:33:57 +0200 Subject: [PATCH 080/234] Small cleanup in rf_types.h --- include/rtw_rf.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/rtw_rf.h b/include/rtw_rf.h index 6b30b870b..ebbb4e3dc 100644 --- a/include/rtw_rf.h +++ b/include/rtw_rf.h @@ -116,7 +116,6 @@ enum _REG_PREAMBLE_MODE { PREAMBLE_SHORT = 3, }; - enum _RTL8712_RF_MIMO_CONFIG_ { RTL8712_RFCONFIG_1T = 0x10, RTL8712_RFCONFIG_2T = 0x20, @@ -203,7 +202,7 @@ typedef enum _PROTECTION_MODE { PROTECTION_MODE_FORCE_DISABLE = 2, } PROTECTION_MODE, *PPROTECTION_MODE; -typedef enum _RT_RF_TYPE_DEFINITION { +enum rt_rf_types { RF_1T2R = 0, RF_2T4R = 1, RF_2T2R = 2, @@ -215,7 +214,7 @@ typedef enum _RT_RF_TYPE_DEFINITION { RF_4T4R = 8, RF_MAX_TYPE = 0xF, /* u1Byte */ -} RT_RF_TYPE_DEF_E; +}; int rtw_ch2freq(int chan); int rtw_freq2ch(int freq); From 3406bc04c7d108847c323068abb4124677af2203 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Tue, 24 Oct 2017 16:43:55 +0200 Subject: [PATCH 081/234] Some cleaning around SUPER_SPEED --- hal/rtl8814a/usb/usb_halinit.c | 39 +--------------------------------- 1 file changed, 1 insertion(+), 38 deletions(-) diff --git a/hal/rtl8814a/usb/usb_halinit.c b/hal/rtl8814a/usb/usb_halinit.c index eadea8462..f3caf312b 100644 --- a/hal/rtl8814a/usb/usb_halinit.c +++ b/hal/rtl8814a/usb/usb_halinit.c @@ -28,7 +28,6 @@ #endif - static void _dbg_dump_macreg(_adapter *padapter) { u32 offset = 0; @@ -50,7 +49,6 @@ _ConfigChipOutEP_8814( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); - pHalData->OutEpQueueSel = 0; pHalData->OutEpNumber = 0; @@ -114,17 +112,11 @@ void rtl8814au_interface_configure(_adapter *padapter) struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); if (IS_SUPER_SPEED_USB(padapter)) - { pHalData->UsbBulkOutSize = USB_SUPER_SPEED_BULK_SIZE;//1024 bytes - } else if (IS_HIGH_SPEED_USB(padapter)) - { pHalData->UsbBulkOutSize = USB_HIGH_SPEED_BULK_SIZE;//512 bytes - } else - { pHalData->UsbBulkOutSize = USB_FULL_SPEED_BULK_SIZE;//64 bytes - } pHalData->interfaceIndex = pdvobjpriv->InterfaceNumber; @@ -234,7 +226,6 @@ _InitBurstPktLen(IN PADAPTER Adapter) } } - VOID _InitQueueReservedPage_8814AUsb( IN PADAPTER Adapter @@ -273,7 +264,6 @@ _InitQueueReservedPage_8814AUsb( RTW_INFO("<===_InitQueueReservedPage_8814AUsb()\n"); } - static u32 _InitPowerOn_8814AU(_adapter *padapter) { int status = _SUCCESS; @@ -286,7 +276,6 @@ static u32 _InitPowerOn_8814AU(_adapter *padapter) if(!HalPwrSeqCmdParsing(padapter, ~PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, Rtl8814A_NIC_ENABLE_FLOW)) return _FAIL; - // Enable MAC DMA/WMAC/SCHEDULE/SEC block // Set CR bit10 to enable 32k calibration. Suggested by SD1 Gimmy. Added by tynli. 2011.08.31. rtw_write16(padapter, REG_CR_8814A, 0x00); //suggseted by zhouzhou, by page, 20111230 @@ -299,10 +288,6 @@ static u32 _InitPowerOn_8814AU(_adapter *padapter) return status; } - - - - //--------------------------------------------------------------- // // MAC init functions @@ -340,7 +325,6 @@ _InitPageBoundary_8814AUsb( } - static VOID _InitNormalChipRegPriority_8814AUsb( IN PADAPTER Adapter, @@ -370,7 +354,6 @@ _InitNormalChipTwoOutEpPriority_8814AUsb( struct registry_priv *pregistrypriv = &Adapter->registrypriv; u16 beQ,bkQ,viQ,voQ,mgtQ,hiQ; - u16 valueHi = 0; u16 valueLow = 0; @@ -463,8 +446,6 @@ _InitQueuePriority_8814AUsb( } } - - static VOID _InitHardwareDropIncorrectBulkOut_8814A( IN PADAPTER Adapter @@ -691,7 +672,6 @@ _InitEDCA_8814AUsb( //rtw_write8(Adapter, REG_USTIME_EDCA, 0x50); } - static VOID _InitBeaconMaxError_8814A( IN PADAPTER Adapter, @@ -705,7 +685,6 @@ _InitBeaconMaxError_8814A( #endif } - #ifdef CONFIG_LED static void _InitHWLed(PADAPTER Adapter) { @@ -787,7 +766,6 @@ usb_AggSettingTxUpdate_8814A( #endif //CONFIG_USB_TX_AGGREGATION } // usb_AggSettingTxUpdate - /*----------------------------------------------------------------------------- * Function: usb_AggSettingRxUpdate() * @@ -893,8 +871,7 @@ USB_AggModeSwitch( { return; // Inf not support. } - - + if (pMgntInfo->LinkDetectInfo.bHigherBusyRxTraffic == _TRUE && pHalData->UsbRxHighSpeedMode == _FALSE) { @@ -912,7 +889,6 @@ USB_AggModeSwitch( return; } - #if USB_RX_AGGREGATION_92C if (pHalData->UsbRxHighSpeedMode == _TRUE) { @@ -977,7 +953,6 @@ _InitOperationMode_8814A( u8 regBwOpMode = 0; u32 regRATR = 0, regRRSR = 0; - //1 This part need to modified according to the rate set we filtered!! // // Set RRSR, RATR, and REG_BWOPMODE registers @@ -1176,7 +1151,6 @@ void _ps_close_RF(_adapter *padapter){ //phy_SsPwrSwitch92CU(padapter, rf_off, 1); } - /* A lightweight deinit function */ static void rtl8814au_hw_reset(_adapter *Adapter) { @@ -1237,7 +1211,6 @@ u32 rtl8814au_hal_init(PADAPTER Adapter) u32 init_start_time = rtw_get_current_time(); - #ifdef DBG_HAL_INIT_PROFILING enum HAL_INIT_STAGES { @@ -1365,8 +1338,6 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BEGIN); */ rtl8814au_hw_reset(Adapter); //todo - - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_PW_ON); status = _InitPowerOn_8814AU(Adapter); if(status == _FAIL){ @@ -1479,7 +1450,6 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC02); #endif // CONFIG_TX_MCAST2UNI #endif // CONFIG_CONCURRENT_MODE || CONFIG_TX_MCAST2UNI - #ifdef CONFIG_LED _InitHWLed(Adapter); #endif //CONFIG_LED @@ -1617,15 +1587,12 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_PW_TRACK); //ODM_TXPowerTrackingCheck(&pHalData->odmpriv ); - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_LCK); //PHY_LCCalibrate_8812A(Adapter); } - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC21); - //HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_PABIAS); // _InitPABias(Adapter); #if (MP_DRIVER == 1) @@ -1699,7 +1666,6 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_END); } #endif - return status; } @@ -1786,7 +1752,6 @@ u32 rtl8814au_hal_deinit(PADAPTER Adapter) return _SUCCESS; } - unsigned int rtl8814au_inirp_init(PADAPTER Adapter) { u8 i; @@ -1936,7 +1901,6 @@ hal_CustomizedBehavior_8814AU( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); struct led_priv *pledpriv = &(Adapter->ledpriv); - // Led mode switch(pHalData->CustomerID) @@ -2414,4 +2378,3 @@ void rtl8814au_set_hal_ops(_adapter * padapter) rtl8814_set_hal_ops(pHalFunc); } - From d74b406b1790f6cfade4af8e49b4b064d7817f05 Mon Sep 17 00:00:00 2001 From: evilphish Date: Tue, 24 Oct 2017 23:51:08 +0200 Subject: [PATCH 082/234] fix USB3 mode switch for 8814 --- hal/rtl8814a/usb/usb_halinit.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/hal/rtl8814a/usb/usb_halinit.c b/hal/rtl8814a/usb/usb_halinit.c index f3caf312b..0a403928a 100644 --- a/hal/rtl8814a/usb/usb_halinit.c +++ b/hal/rtl8814a/usb/usb_halinit.c @@ -1974,16 +1974,24 @@ hal_ReadUsbModeSwitch_8814AU( IN BOOLEAN AutoloadFail ) { -#if 0 - if(AutoloadFail) + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if (AutoloadFail) + pHalData->EEPROMUsbSwitch = _FALSE; + else + /* check efuse 0x08 bit2 */ + pHalData->EEPROMUsbSwitch = (PROMContent[EEPROM_USB_MODE_8814A] & BIT1) >> 1; + + /* if(AutoloadFail) { UsbModeSwitch_SetUsbModeMechOn(Adapter, _FALSE); } else { UsbModeSwitch_SetUsbModeMechOn(Adapter, ((PROMContent[8]&BIT1)>>1)); - } -#endif + }*/ + } static VOID From 6334f182c16efaac9093f835d08e1804acbcbc94 Mon Sep 17 00:00:00 2001 From: evilphish Date: Wed, 25 Oct 2017 22:21:57 +0200 Subject: [PATCH 083/234] Small beauty cleanup for the 8814 usb fix. --- hal/rtl8814a/usb/usb_halinit.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/hal/rtl8814a/usb/usb_halinit.c b/hal/rtl8814a/usb/usb_halinit.c index 0a403928a..b134d5a7e 100644 --- a/hal/rtl8814a/usb/usb_halinit.c +++ b/hal/rtl8814a/usb/usb_halinit.c @@ -1974,24 +1974,13 @@ hal_ReadUsbModeSwitch_8814AU( IN BOOLEAN AutoloadFail ) { - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); if (AutoloadFail) pHalData->EEPROMUsbSwitch = _FALSE; else - /* check efuse 0x08 bit2 */ + /* check efuse 0x0E bit2 */ pHalData->EEPROMUsbSwitch = (PROMContent[EEPROM_USB_MODE_8814A] & BIT1) >> 1; - - /* if(AutoloadFail) - { - UsbModeSwitch_SetUsbModeMechOn(Adapter, _FALSE); - } - else - { - UsbModeSwitch_SetUsbModeMechOn(Adapter, ((PROMContent[8]&BIT1)>>1)); - }*/ - } static VOID From b5d683e6bab854010806842582b2dc947f29686c Mon Sep 17 00:00:00 2001 From: evilphish Date: Fri, 27 Oct 2017 00:31:13 +0200 Subject: [PATCH 084/234] First change for more iw link output (incomplete but working) --- os_dep/linux/ioctl_cfg80211.c | 61 ++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 99ac279df..75635aba7 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -27,9 +27,23 @@ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) #define STATION_INFO_SIGNAL BIT(NL80211_STA_INFO_SIGNAL) #define STATION_INFO_TX_BITRATE BIT(NL80211_STA_INFO_TX_BITRATE) +#define STATION_INFO_TX_BITRATE_BW_5 BIT(RATE_INFO_BW_5) +#define STATION_INFO_TX_BITRATE_BW_10 BIT(RATE_INFO_BW_10) +#define STATION_INFO_TX_BITRATE_BW_20 BIT(RATE_INFO_BW_20) +#define STATION_INFO_TX_BITRATE_BW_40 BIT(RATE_INFO_BW_40) +#define STATION_INFO_TX_BITRATE_BW_80 BIT(RATE_INFO_BW_80) +#define STATION_INFO_TX_BITRATE_BW_160 BIT(RATE_INFO_BW_160) #define STATION_INFO_RX_PACKETS BIT(NL80211_STA_INFO_RX_PACKETS) #define STATION_INFO_TX_PACKETS BIT(NL80211_STA_INFO_TX_PACKETS) +#define STATION_INFO_RX_BYTES BIT(NL80211_STA_INFO_RX_BYTES) +#define STATION_INFO_TX_BYTES BIT(NL80211_STA_INFO_TX_BYTES) #define STATION_INFO_ASSOC_REQ_IES 0 +#define STATION_INFO_BSS_PARAM BIT(NL80211_STA_INFO_BSS_PARAM) +#define STATION_INFO_BSS_PARAM_CTS_PROT BIT(NL80211_STA_BSS_PARAM_CTS_PROT) +#define STATION_INFO_BSS_PARAM_SHORT_PREAMBLE BIT(NL80211_STA_BSS_PARAM_SHORT_PREAMBLE) +#define STATION_INFO_BSS_PARAM_SHORT_SLOT_TIME BIT(NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME) +#define STATION_INFO_BSS_PARAM_DTIM_PERIOD BIT(NL80211_STA_BSS_PARAM_DTIM_PERIOD) +#define STATION_INFO_BSS_PARAM_BEACON_INTERVAL BIT(NL80211_STA_BSS_PARAM_BEACON_INTERVAL) #endif /* Linux kernel >= 4.0.0 */ #include @@ -1690,7 +1704,8 @@ static int cfg80211_rtw_get_station(struct wiphy *wiphy, && check_fwstate(pmlmepriv, _FW_LINKED) ) { struct wlan_network *cur_network = &(pmlmepriv->cur_network); - + struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter); + if (_rtw_memcmp((u8 *)mac, cur_network->network.MacAddress, ETH_ALEN) == _FALSE) { RTW_INFO("%s, mismatch bssid="MAC_FMT"\n", __func__, MAC_ARG(cur_network->network.MacAddress)); ret = -ENOENT; @@ -1703,12 +1718,56 @@ static int cfg80211_rtw_get_station(struct wiphy *wiphy, sinfo->filled |= STATION_INFO_TX_BITRATE; sinfo->txrate.legacy = rtw_get_cur_max_rate(padapter); + /* to-do set the txrate flags */ + // for example something like: + //sinfo->txrate.flags |= NL80211_RATE_INFO_VHT_NSS; + //sinfo->txrate.nss = rtw_vht_mcsmap_to_nss(psta->vhtpriv.vht_mcs_map); + + + /* bw_mode is more delicate + sinfo->txrate.bw is flagged + psta->bw_mode */ + + /* + sinfo->txrate.bw = psta->bw_mode; + sinfo->txrate.flags |= psta->bw_mode; + printk("rtw_get_current_tx_sgi: %i", rtw_get_current_tx_sgi(padapter, mac)); + printk("NSS: %i", rtw_vht_mcsmap_to_nss(psta->vhtpriv.vht_mcs_map)); + printk("BW MODE: %i", psta->bw_mode); + printk("5 10 20 40 80 160: %i %i %i %i %i %i", STATION_INFO_TX_BITRATE_BW_5, STATION_INFO_TX_BITRATE_BW_10, STATION_INFO_TX_BITRATE_BW_20, STATION_INFO_TX_BITRATE_BW_40, STATION_INFO_TX_BITRATE_BW_80, STATION_INFO_TX_BITRATE_BW_160); + printk("5 10 20 40 80 160: %i %i %i %i %i %i", RATE_INFO_BW_5, RATE_INFO_BW_10, RATE_INFO_BW_20, RATE_INFO_BW_40, RATE_INFO_BW_80, RATE_INFO_BW_160); + */ + + sinfo->filled |= STATION_INFO_RX_BYTES; + sinfo->rx_bytes = psta->sta_stats.rx_bytes; + + sinfo->filled |= STATION_INFO_TX_BYTES; + sinfo->tx_bytes = psta->sta_stats.tx_bytes; + sinfo->filled |= STATION_INFO_RX_PACKETS; sinfo->rx_packets = sta_rx_data_pkts(psta); sinfo->filled |= STATION_INFO_TX_PACKETS; sinfo->tx_packets = psta->sta_stats.tx_pkts; + sinfo->filled |= STATION_INFO_BSS_PARAM; + + if (!psta->no_short_preamble_set) + sinfo->bss_param.flags |= STATION_INFO_BSS_PARAM_SHORT_PREAMBLE; + + if (!psta->no_short_slot_time_set) + sinfo->bss_param.flags |= STATION_INFO_BSS_PARAM_SHORT_SLOT_TIME; + + /* no idea how to check this yet */ + if (0) + sinfo->bss_param.flags |= STATION_INFO_BSS_PARAM_CTS_PROT; + + /* is this actually the dtim_period? */ + sinfo->bss_param.flags |= STATION_INFO_BSS_PARAM_DTIM_PERIOD; + sinfo->bss_param.dtim_period = pwrctl->dtim; + + sinfo->bss_param.beacon_interval = get_beacon_interval(&cur_network->network); + } /* for Ad-Hoc/AP mode */ From d7093963055f1b54523e3caa5013b5e96fde41c7 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Fri, 27 Oct 2017 08:11:11 +0200 Subject: [PATCH 085/234] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index b01c8dbf0..60c3e70ad 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,10 @@ ## TODO These are the problems that needs attention, any help would be appreciated. ``` +* "Associate", "Disassocate" & "Deauthenticate" support is missing. + These should be added in order to get some functions working, like "deauth" attacks. + Check issue report @ https://github.com/aircrack-ng/rtl8812au/issues/35 + * txpower control has been added, but some issues remain. Check issue reports for more information. From 047b718dbf04783a34e0f98ac61a1fe5215ceda2 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Fri, 27 Oct 2017 08:13:17 +0200 Subject: [PATCH 086/234] Small spacing cleanup --- platform/platform_sprd_sdio.c | 1 - 1 file changed, 1 deletion(-) diff --git a/platform/platform_sprd_sdio.c b/platform/platform_sprd_sdio.c index c5ffd149f..1a64842c4 100644 --- a/platform/platform_sprd_sdio.c +++ b/platform/platform_sprd_sdio.c @@ -33,7 +33,6 @@ int platform_wifi_power_on(void) { int ret = 0; - #ifdef CONFIG_RTL8188E rtw_wifi_gpio_wlan_ctrl(WLAN_POWER_ON); #endif /* CONFIG_RTL8188E */ From 510a57b7c3d88a7fa8b077050d9a8dd823e153c0 Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Fri, 27 Oct 2017 08:22:36 +0200 Subject: [PATCH 087/234] small spacing cleanup --- hal/led/hal_usb_led.c | 57 ------------------------------------------- 1 file changed, 57 deletions(-) diff --git a/hal/led/hal_usb_led.c b/hal/led/hal_usb_led.c index 114f322ab..117bc93e0 100644 --- a/hal/led/hal_usb_led.c +++ b/hal/led/hal_usb_led.c @@ -66,7 +66,6 @@ SwLedBlink( bStopBlinking = _TRUE; break; - default: bStopBlinking = _TRUE; break; @@ -142,7 +141,6 @@ SwLedBlink1( SwLedOff(padapter, pLed); } - if (pHalData->CustomerID == RT_CID_DEFAULT) { if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) { if (!pLed1->bSWLedCtrl) { @@ -453,7 +451,6 @@ SwLedBlink3( if (pLed->bLedOn) SwLedOff(padapter, pLed); - } pLed->bLedBlinkInProgress = _FALSE; } else { @@ -497,14 +494,12 @@ SwLedBlink3( } break; - default: break; } } - void SwLedBlink4( PLED_USB pLed @@ -688,9 +683,6 @@ SwLedBlink4( default: break; } - - - } void @@ -742,7 +734,6 @@ SwLedBlink5( } break; - case LED_BLINK_TXRX: pLed->BlinkTimes--; if (pLed->BlinkTimes == 0) @@ -778,9 +769,6 @@ SwLedBlink5( default: break; } - - - } void @@ -798,7 +786,6 @@ SwLedBlink6( } else { SwLedOff(padapter, pLed); } - } void @@ -886,8 +873,6 @@ SwLedBlink7( default: break; } - - } void @@ -903,8 +888,6 @@ SwLedBlink8( } else { SwLedOff(Adapter, pLed); } - - } /* page added for Belkin AC950. 20120813 */ @@ -925,7 +908,6 @@ SwLedBlink9( } /* RTW_INFO("%s, pLed->CurrLedState=%d, pLed->BlinkingLedState=%d\n", __FUNCTION__, pLed->CurrLedState, pLed->BlinkingLedState); */ - switch (pLed->CurrLedState) { case RTW_LED_ON: SwLedOn(Adapter, pLed); @@ -1140,7 +1122,6 @@ SwLedBlink9( default: break; } - } /* page added for Netgear A6200V2. 20120827 */ @@ -1160,7 +1141,6 @@ SwLedBlink10( SwLedOff(Adapter, pLed); } - switch (pLed->CurrLedState) { case RTW_LED_ON: SwLedOn(Adapter, pLed); @@ -1341,7 +1321,6 @@ SwLedBlink10( break; } - } void @@ -1478,9 +1457,6 @@ SwLedBlink12( default: break; } - - - } VOID @@ -1540,8 +1516,6 @@ SwLedBlink13( LinkBlinkCnt = 0; break; } - - } VOID @@ -1598,7 +1572,6 @@ SwLedBlink14( LinkBlinkCnt = 0; break; } - } VOID @@ -1726,7 +1699,6 @@ SwLedBlink15( LinkBlinkCnt = 0; break; } - } /* @@ -1974,7 +1946,6 @@ SwLedControlMode0( break; } - } /* ALPHA, added by chiyoko, 20090106 */ @@ -2132,7 +2103,6 @@ SwLedControlMode1( } break; - case LED_CTL_STOP_WPS: if (pLed->bLedNoLinkBlinkInProgress == _TRUE) { _cancel_timer_ex(&(pLed->BlinkTimer)); @@ -2211,7 +2181,6 @@ SwLedControlMode1( break; } - } /* Arcadyan/Sitecom , added by chiyoko, 20090216 */ @@ -2350,7 +2319,6 @@ SwLedControlMode2( break; } - } /* COREGA, added by chiyoko, 20090316 */ @@ -2504,7 +2472,6 @@ SwLedControlMode3( break; } - } @@ -2808,11 +2775,8 @@ SwLedControlMode4( break; } - } - - /* Sercomm-Belkin, added by chiyoko, 20090415 */ static void SwLedControlMode5( @@ -2889,7 +2853,6 @@ SwLedControlMode5( break; } - } /* WNC-Corega, added by chiyoko, 20090902 */ @@ -2920,7 +2883,6 @@ SwLedControlMode6( default: break; } - } /* Netgear, added by sinda, 2011/11/11 */ @@ -3014,7 +2976,6 @@ SwLedControlMode7( break; - case LED_CTL_STOP_WPS_FAIL: case LED_CTL_STOP_WPS_FAIL_OVERLAP: /* WPS session overlap */ if (pLed->bLedWPSBlinkInProgress) { @@ -3060,7 +3021,6 @@ SwLedControlMode7( break; } - } void @@ -3095,8 +3055,6 @@ SwLedControlMode8( default: break; } - - } /* page added for Belkin AC950, 20120813 */ @@ -3287,7 +3245,6 @@ SwLedControlMode9( if (pLed1->bLedOn) _set_timer(&(pLed1->BlinkTimer), 0); - break; case LED_CTL_STOP_WPS_FAIL: /* WPS authentication fail */ @@ -3374,7 +3331,6 @@ SwLedControlMode9( pLed1->bLedWPSBlinkInProgress = _FALSE; } - pLed1->BlinkingLedState = LED_UNKNOWN; SwLedOff(Adapter, pLed); SwLedOff(Adapter, pLed1); @@ -3398,7 +3354,6 @@ SwLedControlMode9( break; } - } /* page added for Netgear A6200V2, 20120827 */ @@ -3537,7 +3492,6 @@ SwLedControlMode10( _set_timer(&(pLed1->BlinkTimer), LED_BLINK_NORMAL_INTERVAL + LED_BLINK_LINK_INTERVAL_NETGEAR); } - break; case LED_CTL_STOP_WPS: /* WPS connect success */ @@ -3591,12 +3545,10 @@ SwLedControlMode10( break; - default: break; } - } /* Edimax-ASUS, added by Page, 20121221 */ @@ -3651,7 +3603,6 @@ SwLedControlMode11( break; - case LED_CTL_STOP_WPS: case LED_CTL_STOP_WPS_FAIL: if (pLed->bLedBlinkInProgress == _TRUE) { @@ -3694,7 +3645,6 @@ SwLedControlMode11( break; } - } /* page added for NEC */ @@ -3775,7 +3725,6 @@ SwLedControlMode12( break; } - } /* Maddest add for NETGEAR R6100 */ @@ -3795,7 +3744,6 @@ SwLedControlMode13( if (pLed->bLedWPSBlinkInProgress) return; - pLed->CurrLedState = RTW_LED_ON; pLed->BlinkingLedState = RTW_LED_ON; if (pLed->bLedBlinkInProgress) { @@ -3850,7 +3798,6 @@ SwLedControlMode13( break; - case LED_CTL_STOP_WPS_FAIL: case LED_CTL_STOP_WPS_FAIL_OVERLAP: /* WPS session overlap */ if (pLed->bLedWPSBlinkInProgress) { @@ -3920,8 +3867,6 @@ SwLedControlMode13( break; } - - } /* Maddest add for DNI Buffalo */ @@ -4244,7 +4189,6 @@ LedControlUSB( default: break; } - } /* @@ -4289,7 +4233,6 @@ InitLed( _init_workitem(&(pLed->BlinkWorkItem), BlinkWorkItemCallback, pLed); } - /* * Description: * DeInitialize an LED_871x object. From f24a0d0723ba95fa30ef128cbf557aeb80e775fb Mon Sep 17 00:00:00 2001 From: Christian kimocoder Date: Fri, 27 Oct 2017 10:24:32 +0200 Subject: [PATCH 088/234] indention and spacing cleanup --- core/rtw_cmd.c | 104 +------------------------------------------------ 1 file changed, 1 insertion(+), 103 deletions(-) diff --git a/core/rtw_cmd.c b/core/rtw_cmd.c index 8bff0d0e7..1dc8d3120 100644 --- a/core/rtw_cmd.c +++ b/core/rtw_cmd.c @@ -35,12 +35,10 @@ sint _rtw_init_cmd_priv(struct cmd_priv *pcmdpriv) { sint res = _SUCCESS; - _rtw_init_sema(&(pcmdpriv->cmd_queue_sema), 0); /* _rtw_init_sema(&(pcmdpriv->cmd_done_sema), 0); */ _rtw_init_sema(&(pcmdpriv->terminate_cmdthread_sema), 0); - _rtw_init_queue(&(pcmdpriv->cmd_queue)); /* allocate DMA-able/Non-Page memory for cmd_buf and rsp_buf */ @@ -70,7 +68,6 @@ sint _rtw_init_cmd_priv(struct cmd_priv *pcmdpriv) _rtw_mutex_init(&pcmdpriv->sctx_mutex); exit: - return res; } @@ -82,7 +79,6 @@ sint _rtw_init_evt_priv(struct evt_priv *pevtpriv) { sint res = _SUCCESS; - #ifdef CONFIG_H2CLBK _rtw_init_sema(&(pevtpriv->lbkevt_done), 0); pevtpriv->lbkevt_limit = 0; @@ -106,7 +102,6 @@ sint _rtw_init_evt_priv(struct evt_priv *pevtpriv) } pevtpriv->evt_buf = pevtpriv->evt_allocated_buf + 4 - ((unsigned int)(pevtpriv->evt_allocated_buf) & 3); - #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) pevtpriv->allocated_c2h_mem = rtw_zmalloc(C2H_MEM_SZ + 4); @@ -140,19 +135,16 @@ sint _rtw_init_evt_priv(struct evt_priv *pevtpriv) pevtpriv->c2h_queue = rtw_cbuf_alloc(C2H_QUEUE_MAX_LEN + 1); #endif - return res; } void _rtw_free_evt_priv(struct evt_priv *pevtpriv) { - #ifdef CONFIG_EVENT_THREAD_MODE _rtw_free_sema(&(pevtpriv->evt_notify)); _rtw_free_sema(&(pevtpriv->terminate_evtthread_sema)); - if (pevtpriv->evt_allocated_buf) rtw_mfree(pevtpriv->evt_allocated_buf, MAX_EVTSZ + 4); #endif @@ -171,8 +163,6 @@ void _rtw_free_evt_priv(struct evt_priv *pevtpriv) rtw_cbuf_free(pevtpriv->c2h_queue); #endif - - } void _rtw_free_cmd_priv(struct cmd_priv *pcmdpriv) @@ -211,7 +201,6 @@ sint _rtw_enqueue_cmd(_queue *queue, struct cmd_obj *obj, bool to_head) { _irqL irqL; - if (obj == NULL) goto exit; @@ -264,7 +253,6 @@ sint _rtw_enqueue_cmd(_queue *queue, struct cmd_obj *obj, bool to_head) exit: - return _SUCCESS; } @@ -273,7 +261,6 @@ struct cmd_obj *_rtw_dequeue_cmd(_queue *queue) _irqL irqL; struct cmd_obj *obj; - /* _enter_critical_bh(&(queue->lock), &irqL); */ _enter_critical(&queue->lock, &irqL); @@ -284,7 +271,6 @@ struct cmd_obj *_rtw_dequeue_cmd(_queue *queue) } #endif /* DBG_CMD_QUEUE */ - if (rtw_is_list_empty(&(queue->queue))) obj = NULL; else { @@ -324,7 +310,6 @@ struct cmd_obj *_rtw_dequeue_cmd(_queue *queue) /* _exit_critical_bh(&(queue->lock), &irqL); */ _exit_critical(&queue->lock, &irqL); - return obj; } @@ -401,14 +386,11 @@ int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj) return _SUCCESS; } - - u32 rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj) { int res = _FAIL; PADAPTER padapter = pcmdpriv->padapter; - if (cmd_obj == NULL) goto exit; @@ -444,7 +426,6 @@ u32 rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj) exit: - return res; } @@ -452,7 +433,6 @@ struct cmd_obj *rtw_dequeue_cmd(struct cmd_priv *pcmdpriv) { struct cmd_obj *cmd_obj; - cmd_obj = _rtw_dequeue_cmd(&pcmdpriv->cmd_queue); return cmd_obj; @@ -484,7 +464,6 @@ void rtw_free_cmd_obj(struct cmd_obj *pcmd) } - void rtw_stop_cmd_thread(_adapter *adapter) { if (adapter->cmdThread && @@ -519,7 +498,6 @@ thread_return rtw_cmd_thread(thread_context context) ATOMIC_SET(&(pcmdpriv->cmdthd_running), _TRUE); _rtw_up_sema(&pcmdpriv->terminate_cmdthread_sema); - while (1) { if (_rtw_down_sema(&pcmdpriv->cmd_queue_sema) == _FAIL) { RTW_PRINT(FUNC_ADPT_FMT" _rtw_down_sema(&pcmdpriv->cmd_queue_sema) return _FAIL, break\n", FUNC_ADPT_ARG(padapter)); @@ -703,7 +681,6 @@ thread_return rtw_cmd_thread(thread_context context) } - #ifdef CONFIG_EVENT_THREAD_MODE u32 rtw_enqueue_evt(struct evt_priv *pevtpriv, struct evt_obj *obj) { @@ -711,7 +688,6 @@ u32 rtw_enqueue_evt(struct evt_priv *pevtpriv, struct evt_obj *obj) int res; _queue *queue = &pevtpriv->evt_queue; - res = _SUCCESS; if (obj == NULL) { @@ -729,7 +705,6 @@ u32 rtw_enqueue_evt(struct evt_priv *pevtpriv, struct evt_obj *obj) exit: - return res; } @@ -738,7 +713,6 @@ struct evt_obj *rtw_dequeue_evt(_queue *queue) _irqL irqL; struct evt_obj *pevtobj; - _enter_critical_bh(&queue->lock, &irqL); if (rtw_is_list_empty(&(queue->queue))) @@ -750,7 +724,6 @@ struct evt_obj *rtw_dequeue_evt(_queue *queue) _exit_critical_bh(&queue->lock, &irqL); - return pevtobj; } @@ -771,7 +744,6 @@ void rtw_evt_notify_isr(struct evt_priv *pevtpriv) } #endif - /* u8 rtw_setstandby_cmd(unsigned char *adapter) */ @@ -783,7 +755,6 @@ u8 rtw_setstandby_cmd(_adapter *padapter, uint action) u8 ret = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { ret = _FAIL; @@ -805,7 +776,6 @@ u8 rtw_setstandby_cmd(_adapter *padapter, uint action) exit: - return ret; } @@ -826,7 +796,6 @@ u8 rtw_sitesurvey_cmd(_adapter *padapter, NDIS_802_11_SSID *ssid, int ssid_num, struct wifidirect_info *pwdinfo = &(padapter->wdinfo); #endif /* CONFIG_P2P */ - #ifdef CONFIG_LPS if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_SCAN, 1); @@ -849,7 +818,6 @@ u8 rtw_sitesurvey_cmd(_adapter *padapter, NDIS_802_11_SSID *ssid, int ssid_num, rtw_free_network_queue(padapter, _FALSE); - init_h2fwcmd_w_parm_no_rsp(ph2c, psurveyPara, GEN_CMD_CODE(_SiteSurvey)); /* psurveyPara->bsslimit = 48; */ @@ -906,7 +874,6 @@ u8 rtw_sitesurvey_cmd(_adapter *padapter, NDIS_802_11_SSID *ssid, int ssid_num, } else _clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY); - return res; } @@ -917,7 +884,6 @@ u8 rtw_setdatarate_cmd(_adapter *padapter, u8 *rateset) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -942,7 +908,6 @@ u8 rtw_setdatarate_cmd(_adapter *padapter, u8 *rateset) res = rtw_enqueue_cmd(pcmdpriv, ph2c); exit: - return res; } @@ -953,7 +918,6 @@ u8 rtw_setbasicrate_cmd(_adapter *padapter, u8 *rateset) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -974,11 +938,9 @@ u8 rtw_setbasicrate_cmd(_adapter *padapter, u8 *rateset) res = rtw_enqueue_cmd(pcmdpriv, ph2c); exit: - return res; } - /* unsigned char rtw_setphy_cmd(unsigned char *adapter) @@ -995,7 +957,6 @@ u8 rtw_setphy_cmd(_adapter *padapter, u8 modem, u8 ch) * struct registry_priv* pregistry_priv = &padapter->registrypriv; */ u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -1011,7 +972,6 @@ u8 rtw_setphy_cmd(_adapter *padapter, u8 modem, u8 ch) init_h2fwcmd_w_parm_no_rsp(ph2c, psetphypara, _SetPhy_CMD_); - psetphypara->modem = modem; psetphypara->rfchannel = ch; @@ -1155,7 +1115,6 @@ u8 rtw_getrfreg_cmd(_adapter *padapter, u8 offset, u8 *pval) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -1182,7 +1141,6 @@ u8 rtw_getrfreg_cmd(_adapter *padapter, u8 offset, u8 *pval) exit: - return res; } @@ -1382,7 +1340,6 @@ u8 rtw_joinbss_cmd(_adapter *padapter, struct wlan_network *pnetwork) res = _FAIL; - goto exit; } @@ -1409,7 +1366,6 @@ u8 rtw_joinbss_cmd(_adapter *padapter, struct wlan_network *pnetwork) psecnetwork->IELength = rtw_restruct_sec_ie(padapter, &pnetwork->network.IEs[0], &psecnetwork->IEs[0], pnetwork->network.IELength); - pqospriv->qos_option = 0; if (pregistrypriv->wmm_enable) { @@ -1500,7 +1456,6 @@ u8 rtw_joinbss_cmd(_adapter *padapter, struct wlan_network *pnetwork) exit: - return res; } @@ -1511,8 +1466,6 @@ u8 rtw_disassoc_cmd(_adapter *padapter, u32 deauth_timeout_ms, bool enqueue) /* struct cmd_priv *cmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - - /* prepare cmd parameter */ param = (struct disconnect_parm *)rtw_zmalloc(sizeof(*param)); if (param == NULL) { @@ -1540,7 +1493,6 @@ u8 rtw_disassoc_cmd(_adapter *padapter, u32 deauth_timeout_ms, bool enqueue) /* exit: - return res; } @@ -1576,7 +1528,6 @@ u8 rtw_setopmode_cmd(_adapter *padapter, NDIS_802_11_NETWORK_INFRASTRUCTURE net } exit: - return res; } @@ -1591,7 +1542,6 @@ u8 rtw_setstakey_cmd(_adapter *padapter, struct sta_info *sta, u8 key_type, bool struct security_priv *psecuritypriv = &padapter->securitypriv; u8 res = _SUCCESS; - psetstakey_para = (struct set_stakey_parm *)rtw_zmalloc(sizeof(struct set_stakey_parm)); if (psetstakey_para == NULL) { res = _FAIL; @@ -1645,7 +1595,6 @@ u8 rtw_setstakey_cmd(_adapter *padapter, struct sta_info *sta, u8 key_type, bool } exit: - return res; } @@ -1660,7 +1609,6 @@ u8 rtw_clearstakey_cmd(_adapter *padapter, struct sta_info *sta, u8 enqueue) s16 cam_id = 0; u8 res = _SUCCESS; - if (!enqueue) { while ((cam_id = rtw_camid_search(padapter, sta->hwaddr, -1, -1)) >= 0) { RTW_PRINT("clear key for addr:"MAC_FMT", camid:%d\n", MAC_ARG(sta->hwaddr), cam_id); @@ -1703,7 +1651,6 @@ u8 rtw_clearstakey_cmd(_adapter *padapter, struct sta_info *sta, u8 enqueue) exit: - return res; } @@ -1783,7 +1730,6 @@ u8 rtw_setassocsta_cmd(_adapter *padapter, u8 *mac_addr) u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -1814,7 +1760,6 @@ u8 rtw_setassocsta_cmd(_adapter *padapter, u8 *mac_addr) exit: - return res; } @@ -1826,7 +1771,6 @@ u8 rtw_addbareq_cmd(_adapter *padapter, u8 tid, u8 *addr) u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -1852,7 +1796,6 @@ u8 rtw_addbareq_cmd(_adapter *padapter, u8 tid, u8 *addr) exit: - return res; } @@ -1863,7 +1806,6 @@ u8 rtw_addbarsp_cmd(_adapter *padapter, u8 *addr, u16 tid, u8 status, u8 size, u struct addBaRsp_parm *paddBaRsp_parm; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -1890,7 +1832,6 @@ u8 rtw_addbarsp_cmd(_adapter *padapter, u8 *addr, u16 tid, u8 status, u8 size, u exit: - return res; } /* add for CONFIG_IEEE80211W, none 11w can use it */ @@ -1901,7 +1842,6 @@ u8 rtw_reset_securitypriv_cmd(_adapter *padapter) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -1922,13 +1862,11 @@ u8 rtw_reset_securitypriv_cmd(_adapter *padapter) init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); - /* rtw_enqueue_cmd(pcmdpriv, ph2c); */ res = rtw_enqueue_cmd(pcmdpriv, ph2c); exit: - return res; } @@ -1940,7 +1878,6 @@ u8 rtw_free_assoc_resources_cmd(_adapter *padapter) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -1961,13 +1898,11 @@ u8 rtw_free_assoc_resources_cmd(_adapter *padapter) init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); - /* rtw_enqueue_cmd(pcmdpriv, ph2c); */ res = rtw_enqueue_cmd(pcmdpriv, ph2c); exit: - return res; } @@ -1979,7 +1914,6 @@ u8 rtw_dynamic_chk_wk_cmd(_adapter *padapter) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - /* only primary padapter does this cmd */ ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); @@ -2001,13 +1935,11 @@ u8 rtw_dynamic_chk_wk_cmd(_adapter *padapter) pdrvextra_cmd_parm->pbuf = NULL; init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); - /* rtw_enqueue_cmd(pcmdpriv, ph2c); */ res = rtw_enqueue_cmd(pcmdpriv, ph2c); exit: - return res; } @@ -2020,7 +1952,6 @@ u8 rtw_set_ch_cmd(_adapter *padapter, u8 ch, u8 bw, u8 ch_offset, u8 enqueue) u8 res = _SUCCESS; - RTW_INFO(FUNC_NDEV_FMT" ch:%u, bw:%u, ch_offset:%u\n", FUNC_NDEV_ARG(padapter->pnetdev), ch, bw, ch_offset); @@ -2074,7 +2005,6 @@ u8 _rtw_set_chplan_cmd(_adapter *adapter, int flags, u8 chplan, const struct cou struct submit_ctx sctx; u8 res = _SUCCESS; - /* check if allow software config */ if (swconfig && rtw_hal_is_disable_sw_channel_plan(adapter) == _TRUE) { res = _FAIL; @@ -2134,7 +2064,6 @@ u8 _rtw_set_chplan_cmd(_adapter *adapter, int flags, u8 chplan, const struct cou exit: - return res; } @@ -2174,8 +2103,6 @@ u8 rtw_led_blink_cmd(_adapter *padapter, PVOID pLed) u8 res = _SUCCESS; - - pcmdobj = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (pcmdobj == NULL) { res = _FAIL; @@ -2196,7 +2123,6 @@ u8 rtw_led_blink_cmd(_adapter *padapter, PVOID pLed) exit: - return res; } @@ -2209,8 +2135,6 @@ u8 rtw_set_csa_cmd(_adapter *padapter, u8 new_ch_no) u8 res = _SUCCESS; - - pcmdobj = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (pcmdobj == NULL) { res = _FAIL; @@ -2231,7 +2155,6 @@ u8 rtw_set_csa_cmd(_adapter *padapter, u8 new_ch_no) exit: - return res; } @@ -2244,10 +2167,8 @@ u8 rtw_tdls_cmd(_adapter *padapter, u8 *addr, u8 option) u8 res = _SUCCESS; - #ifdef CONFIG_TDLS - pcmdobj = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (pcmdobj == NULL) { res = _FAIL; @@ -2273,8 +2194,6 @@ u8 rtw_tdls_cmd(_adapter *padapter, u8 *addr, u8 option) exit: - - return res; } @@ -2285,7 +2204,6 @@ u8 rtw_enable_hw_update_tsf_cmd(_adapter *padapter) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -2343,7 +2261,6 @@ u8 traffic_status_watchdog(_adapter *padapter, u8 from_timer) } BusyThreshold = BusyThresholdHigh; - /* */ /* Determine if our traffic is busy now */ /* */ @@ -2527,7 +2444,6 @@ u8 traffic_status_watchdog(_adapter *padapter, u8 from_timer) } - /* for 11n Logo 4.2.31/4.2.32 */ static void dynamic_update_bcn_check(_adapter *padapter) { @@ -2561,7 +2477,7 @@ static void dynamic_update_bcn_check(_adapter *padapter) if (_FALSE != ATOMIC_READ(&pmlmepriv->olbc) && _FALSE != ATOMIC_READ(&pmlmepriv->olbc_ht)) { - + if (rtw_ht_operation_update(padapter) > 0) { update_beacon(padapter, _HT_CAPABILITY_IE_, NULL, _FALSE); update_beacon(padapter, _HT_ADD_INFO_IE_, NULL, _TRUE); @@ -2647,7 +2563,6 @@ void lps_ctrl_wk_hdl(_adapter *padapter, u8 lps_ctrl_type) struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); u8 mstatus; - if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) || (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE)) return; @@ -2726,7 +2641,6 @@ u8 rtw_lps_ctrl_wk_cmd(_adapter *padapter, u8 lps_ctrl_type, u8 enqueue) /* struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(padapter); */ u8 res = _SUCCESS; - /* if(!pwrctrlpriv->bLeisurePs) */ /* return res; */ @@ -2757,7 +2671,6 @@ u8 rtw_lps_ctrl_wk_cmd(_adapter *padapter, u8 lps_ctrl_type, u8 enqueue) exit: - return res; } @@ -2774,7 +2687,6 @@ u8 rtw_dm_in_lps_wk_cmd(_adapter *padapter) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -2919,7 +2831,6 @@ u8 rtw_rpt_timer_cfg_cmd(_adapter *padapter, u16 minRptTime) res = rtw_enqueue_cmd(pcmdpriv, ph2c); exit: - return res; } @@ -2976,7 +2887,6 @@ u8 rtw_antenna_select_cmd(_adapter *padapter, u8 antenna, u8 enqueue) antenna_select_wk_hdl(padapter, antenna); exit: - return res; } @@ -3049,7 +2959,6 @@ u8 p2p_protocol_wk_cmd(_adapter *padapter, int intCmdType) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) return res; @@ -3077,7 +2986,6 @@ u8 p2p_protocol_wk_cmd(_adapter *padapter, int intCmdType) exit: - return res; } @@ -3119,7 +3027,6 @@ u8 rtw_ps_cmd(_adapter *padapter) exit: - return res; } @@ -3783,7 +3690,6 @@ u8 rtw_run_in_thread_cmd(PADAPTER padapter, void (*func)(void *), void *context) res = rtw_enqueue_cmd(pcmdpriv, ph2c); exit: - return res; } @@ -4300,11 +4206,9 @@ void rtw_disassoc_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd) return; } - void rtw_getmacreg_cmdrsp_callback(_adapter *padapter, struct cmd_obj *pcmd) { - rtw_free_cmd_obj(pcmd); } @@ -4313,7 +4217,6 @@ void rtw_joinbss_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd) { struct mlme_priv *pmlmepriv = &padapter->mlmepriv; - if (pcmd->res == H2C_DROPPED) { /* TODO: cancel timer and do timeout handler directly... */ /* need to make timeout handlerOS independent */ @@ -4380,8 +4283,6 @@ void rtw_create_ibss_post_hdl(_adapter *padapter, int status) return; } - - void rtw_setstaKey_cmdrsp_callback(_adapter *padapter , struct cmd_obj *pcmd) { @@ -4389,7 +4290,6 @@ void rtw_setstaKey_cmdrsp_callback(_adapter *padapter , struct cmd_obj *pcmd) struct set_stakey_rsp *psetstakey_rsp = (struct set_stakey_rsp *)(pcmd->rsp); struct sta_info *psta = rtw_get_stainfo(pstapriv, psetstakey_rsp->addr); - if (psta == NULL) { goto exit; } @@ -4411,7 +4311,6 @@ void rtw_setassocsta_cmdrsp_callback(_adapter *padapter, struct cmd_obj *pcmd) struct set_assocsta_rsp *passocsta_rsp = (struct set_assocsta_rsp *)(pcmd->rsp); struct sta_info *psta = rtw_get_stainfo(pstapriv, passocsta_parm->addr); - if (psta == NULL) { goto exit; } @@ -4441,5 +4340,4 @@ void rtw_getrttbl_cmd_cmdrsp_callback(_adapter *padapter, struct cmd_obj *pcmd) padapter->mppriv.workparam.bcompleted = _TRUE; #endif - } From 752c09caf99798e802b47b3fbb26ccd6d7c4d4ba Mon Sep 17 00:00:00 2001 From: evilphish Date: Mon, 30 Oct 2017 18:01:30 +0100 Subject: [PATCH 089/234] Fix compilation error on 4.11.x kernel --- os_dep/linux/ioctl_cfg80211.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 75635aba7..dbb261d7c 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -3732,7 +3732,7 @@ static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name, struct ne #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12 ,0)) mon_ndev->needs_free_netdev = true; #else - mon_ndev->destructor = rtw_ndev_destructor; + mon_ndev->priv_destructor = rtw_ndev_destructor; #endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 9)) mon_ndev->needs_free_netdev = false; From 2fbabd8a263a73783bd1891be6dfc0a11ea16cd2 Mon Sep 17 00:00:00 2001 From: evilphish Date: Wed, 8 Nov 2017 20:32:59 +0100 Subject: [PATCH 090/234] Fix for compilation error on 4.10 kernel --- os_dep/linux/ioctl_cfg80211.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index dbb261d7c..b9b05d47c 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -3731,8 +3731,10 @@ static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name, struct ne mon_ndev->name[IFNAMSIZ - 1] = 0; #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12 ,0)) mon_ndev->needs_free_netdev = true; -#else +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)) mon_ndev->priv_destructor = rtw_ndev_destructor; +#else + mon_ndev->destructor = rtw_ndev_destructor; #endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 9)) mon_ndev->needs_free_netdev = false; From 2b745c9f0308eedef25b15e2d1b828f57ab9a4ae Mon Sep 17 00:00:00 2001 From: evilphish Date: Thu, 9 Nov 2017 00:30:03 +0100 Subject: [PATCH 091/234] Remove redundant code which is already present in SetHwReg881XAU in usb_halinit.c --- os_dep/linux/usb_intf.c | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index 0fc63b65a..a35d0451a 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -665,26 +665,7 @@ static int usb_reprobe_switch_usb_mode(PADAPTER Adapter) if (registry_par->switch_usb_mode == 0) goto exit; -#if defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8821A) || defined(CONFIG_RTL8814A) - if (IS_HIGH_SPEED_USB(Adapter)) { - if ((rtw_read8(Adapter, 0x74) & (BIT(2)|BIT(3))) != BIT(3)) { - rtw_write8(Adapter, 0x74, 0x8); - rtw_write8(Adapter, 0x70, 0x2); - rtw_write8(Adapter, 0x3e, 0x1); - rtw_write8(Adapter, 0x3d, 0x3); - /* usb disconnect */ - rtw_write8(Adapter, 0x5, 0x80); - ret = _TRUE; - } - - } else if (IS_SUPER_SPEED_USB(Adapter)) { - rtw_write8(Adapter, 0x70, rtw_read8(Adapter, 0x70) & (~BIT(1))); - rtw_write8(Adapter, 0x3e, rtw_read8(Adapter, 0x3e) & (~BIT(0))); - } -#else rtw_hal_set_hwreg(Adapter, HW_VAR_USB_MODE, &ret); -#endif - exit: return ret; } From 0627c79ac7462680935f78bcd121e2d9b036b2b1 Mon Sep 17 00:00:00 2001 From: Christian B Date: Fri, 10 Nov 2017 22:12:49 +0100 Subject: [PATCH 092/234] Security fix --- core/rtw_ap.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/core/rtw_ap.c b/core/rtw_ap.c index 1527834c2..025088052 100644 --- a/core/rtw_ap.c +++ b/core/rtw_ap.c @@ -3567,6 +3567,25 @@ void start_ap_mode(_adapter *padapter) } +void rtw_ap_bcmc_sta_flush(_adapter *padapter) +{ +#ifdef CONFIG_CONCURRENT_MODE + int cam_id = -1; + u8 *addr = adapter_mac_addr(padapter); + + cam_id = rtw_iface_bcmc_id_get(padapter); + if (cam_id != INVALID_SEC_MAC_CAM_ID) { + RTW_PRINT("clear group key for "ADPT_FMT" addr:"MAC_FMT", camid:%d\n", + ADPT_ARG(padapter), MAC_ARG(addr), cam_id); + clear_cam_entry(padapter, cam_id); + rtw_camid_free(padapter, cam_id); + rtw_iface_bcmc_id_set(padapter, INVALID_SEC_MAC_CAM_ID); /*init default value*/ + } +#else + invalidate_cam_all(padapter); +#endif +} + void stop_ap_mode(_adapter *padapter) { _irqL irqL; @@ -3599,6 +3618,7 @@ void stop_ap_mode(_adapter *padapter) #endif rtw_sta_flush(padapter, _TRUE); + rtw_ap_bcmc_sta_flush(padapter); /* free_assoc_sta_resources */ rtw_free_all_stainfo(padapter); From 99ac4d5c98a3937cc2e2f11c4b36dc526fe45ea7 Mon Sep 17 00:00:00 2001 From: evilphish Date: Sun, 12 Nov 2017 17:52:43 +0100 Subject: [PATCH 093/234] Fix for the fix for compilation errors on 4.11 kernels --- os_dep/linux/ioctl_cfg80211.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index b9b05d47c..9af4effe7 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -3731,7 +3731,7 @@ static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name, struct ne mon_ndev->name[IFNAMSIZ - 1] = 0; #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12 ,0)) mon_ndev->needs_free_netdev = true; -#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)) +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 9)) mon_ndev->priv_destructor = rtw_ndev_destructor; #else mon_ndev->destructor = rtw_ndev_destructor; From 5f3e21c5dea72ef4b7ebe3c55c75a8bd890353e9 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 08:18:50 +0100 Subject: [PATCH 094/234] Some fixes to Makefile * Build on all available cores * Check for available GCC 4.9 on "EXTRA_CFLAGS += -Wno-date-time" --- Makefile | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index f848e2ab3..2a3e8c387 100755 --- a/Makefile +++ b/Makefile @@ -15,8 +15,12 @@ EXTRA_CFLAGS += -Wno-unused-function EXTRA_CFLAGS += -Wno-unused EXTRA_CFLAGS += -Wno-date-time EXTRA_CFLAGS += -Wno-misleading-indentation -EXTRA_CFLAGS += -Wno-uninitialized -EXTRA_CFLAGS += -Wno-error=date-time # Fix compile error on gcc 4.9 and later +#EXTRA_CFLAGS += -Wno-uninitialized + +GCC_VER_49 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.9 | bc ) +ifeq ($(GCC_VER_49),1) +EXTRA_CFLAGS += -Wno-date-time # Fix compile error && warning on gcc 4.9 and later +endif EXTRA_CFLAGS += -I$(src)/include EXTRA_CFLAGS += -I$(src)/hal/phydm @@ -1866,7 +1870,7 @@ export CONFIG_RTL8812AU = m all: modules modules: - $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd) modules + $(MAKE) -j $(shell nproc || echo 1) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd) modules strip: $(CROSS_COMPILE)strip $(MODULE_NAME).ko --strip-unneeded From d31682febe438e4092693c3fc489b5c101c9dba3 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 09:23:18 +0100 Subject: [PATCH 095/234] Remove Intel WIDI code * Intel WIDI project is discontinued, removed support. --- Makefile | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Makefile b/Makefile index 2a3e8c387..251b4db4a 100755 --- a/Makefile +++ b/Makefile @@ -54,7 +54,6 @@ CONFIG_USB_AUTOSUSPEND = n CONFIG_HW_PWRP_DETECTION = n CONFIG_WIFI_TEST = n CONFIG_BT_COEXIST = n -CONFIG_INTEL_WIDI = n CONFIG_WAPI_SUPPORT = n CONFIG_EFUSE_CONFIG_FILE = y CONFIG_EXT_CLK = n @@ -890,10 +889,6 @@ ifeq ($(CONFIG_BT_COEXIST), y) EXTRA_CFLAGS += -DCONFIG_BT_COEXIST endif -ifeq ($(CONFIG_INTEL_WIDI), y) -EXTRA_CFLAGS += -DCONFIG_INTEL_WIDI -endif - ifeq ($(CONFIG_WAPI_SUPPORT), y) EXTRA_CFLAGS += -DCONFIG_WAPI_SUPPORT endif @@ -1845,7 +1840,6 @@ endif $(MODULE_NAME)-y += $(rtk_core) -$(MODULE_NAME)-$(CONFIG_INTEL_WIDI) += core/rtw_intel_widi.o $(MODULE_NAME)-$(CONFIG_WAPI_SUPPORT) += core/rtw_wapi.o \ core/rtw_wapi_sms4.o From fbb0b8d2c0f339c41d04778d46c38cbd3c4505a5 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 09:24:23 +0100 Subject: [PATCH 096/234] Remove Intel WIDI support --- core/rtw_cmd.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/core/rtw_cmd.c b/core/rtw_cmd.c index 1dc8d3120..2ee0b517a 100644 --- a/core/rtw_cmd.c +++ b/core/rtw_cmd.c @@ -4108,11 +4108,6 @@ u8 rtw_drvextra_cmd_hdl(_adapter *padapter, unsigned char *pbuf) case CHECK_HIQ_WK_CID: rtw_chk_hi_queue_hdl(padapter); break; -#endif -#ifdef CONFIG_INTEL_WIDI - case INTEl_WIDI_WK_CID: - intel_widi_wk_hdl(padapter, pdrvextra_cmd->type, pdrvextra_cmd->pbuf); - break; #endif /* add for CONFIG_IEEE80211W, none 11w can use it */ case RESET_SECURITYPRIV: From 30f4034da87c0294aa44ba29b5e0a78b3cc51226 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 09:26:51 +0100 Subject: [PATCH 097/234] Remove Intel WIDI Support * Intel WIDI project is dead, removed support (code) --- core/rtw_mlme.c | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/core/rtw_mlme.c b/core/rtw_mlme.c index 71ffc2af2..4cb54dba8 100644 --- a/core/rtw_mlme.c +++ b/core/rtw_mlme.c @@ -1279,13 +1279,6 @@ void rtw_surveydone_event_callback(_adapter *adapter, u8 *pbuf) || _SUCCESS != rtw_sitesurvey_cmd(adapter, &pmlmepriv->assoc_ssid, 1, NULL, 0) ) { rtw_set_to_roam(adapter, 0); -#ifdef CONFIG_INTEL_WIDI - if (adapter->mlmepriv.widi_state == INTEL_WIDI_STATE_ROAMING) { - _rtw_memset(pmlmepriv->sa_ext, 0x00, L2SDTA_SERVICE_VE_LEN); - intel_widi_wk_cmd(adapter, INTEL_WIDI_LISTEN_WK, NULL, 0); - RTW_INFO("change to widi listen\n"); - } -#endif /* CONFIG_INTEL_WIDI */ rtw_free_assoc_resources(adapter, 1); rtw_indicate_disconnect(adapter, 0, _FALSE); } else @@ -1515,20 +1508,12 @@ void rtw_indicate_connect(_adapter *padapter) } rtw_set_to_roam(padapter, 0); -#ifdef CONFIG_INTEL_WIDI - if (padapter->mlmepriv.widi_state == INTEL_WIDI_STATE_ROAMING) { - _rtw_memset(pmlmepriv->sa_ext, 0x00, L2SDTA_SERVICE_VE_LEN); - intel_widi_wk_cmd(padapter, INTEL_WIDI_LISTEN_WK, NULL, 0); - RTW_INFO("change to widi listen\n"); - } -#endif /* CONFIG_INTEL_WIDI */ if (!check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE)) rtw_mi_set_scan_deny(padapter, 3000); } - /* *rtw_indicate_disconnect: the caller has to lock pmlmepriv->lock */ @@ -2442,10 +2427,6 @@ void rtw_stadel_event_callback(_adapter *adapter, u8 *pbuf) roam = _TRUE; roam_target = pmlmepriv->roam_network; } -#ifdef CONFIG_INTEL_WIDI - else if (adapter->mlmepriv.widi_state == INTEL_WIDI_STATE_CONNECTED) - roam = _TRUE; -#endif /* CONFIG_INTEL_WIDI */ if (roam == _TRUE) { if (rtw_to_roam(adapter) > 0) @@ -2471,10 +2452,6 @@ void rtw_stadel_event_callback(_adapter *adapter, u8 *pbuf) _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); rtw_indicate_disconnect(adapter, *(u16 *)pstadel->rsvd, pstadel->locally_generated); -#ifdef CONFIG_INTEL_WIDI - if (!rtw_to_roam(adapter)) - process_intel_widi_disconnect(adapter, 1); -#endif /* CONFIG_INTEL_WIDI */ _rtw_roaming(adapter, roam_target); } @@ -2593,13 +2570,6 @@ void _rtw_join_timeout_handler(_adapter *adapter) } break; } else { -#ifdef CONFIG_INTEL_WIDI - if (adapter->mlmepriv.widi_state == INTEL_WIDI_STATE_ROAMING) { - _rtw_memset(pmlmepriv->sa_ext, 0x00, L2SDTA_SERVICE_VE_LEN); - intel_widi_wk_cmd(adapter, INTEL_WIDI_LISTEN_WK, NULL, 0); - RTW_INFO("change to widi listen\n"); - } -#endif /* CONFIG_INTEL_WIDI */ RTW_INFO("%s We've try roaming but fail\n", __FUNCTION__); rtw_indicate_disconnect(adapter, 0, _FALSE); break; From 3a546402814ac15b1620bfbc041f04d0fd53130c Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 09:30:12 +0100 Subject: [PATCH 098/234] Removed Intel WIDI Support --- core/rtw_mlme_ext.c | 68 --------------------------------------------- 1 file changed, 68 deletions(-) diff --git a/core/rtw_mlme_ext.c b/core/rtw_mlme_ext.c index 9ff7eaf76..cc65410b1 100755 --- a/core/rtw_mlme_ext.c +++ b/core/rtw_mlme_ext.c @@ -5645,9 +5645,6 @@ void issue_probersp_p2p(_adapter *padapter, unsigned char *da) #ifdef CONFIG_WFD u32 wfdielen = 0; #endif -#ifdef CONFIG_INTEL_WIDI - u8 zero_array_check[L2SDTA_SERVICE_VE_LEN] = { 0x00 }; -#endif /* CONFIG_INTEL_WIDI */ /* RTW_INFO("%s\n", __FUNCTION__); */ @@ -5749,39 +5746,6 @@ void issue_probersp_p2p(_adapter *padapter, unsigned char *da) /* Value: */ wpsie[wpsielen++] = WPS_VERSION_1; /* Version 1.0 */ -#ifdef CONFIG_INTEL_WIDI - /* Commented by Kurt */ - /* Appended WiDi info. only if we did issued_probereq_widi(), and then we saved ven. ext. in pmlmepriv->sa_ext. */ - if (_rtw_memcmp(pmlmepriv->sa_ext, zero_array_check, L2SDTA_SERVICE_VE_LEN) == _FALSE - || pmlmepriv->num_p2p_sdt != 0) { - /* Sec dev type */ - *(u16 *)(wpsie + wpsielen) = cpu_to_be16(WPS_ATTR_SEC_DEV_TYPE_LIST); - wpsielen += 2; - - /* Length: */ - *(u16 *)(wpsie + wpsielen) = cpu_to_be16(0x0008); - wpsielen += 2; - - /* Value: */ - /* Category ID */ - *(u16 *)(wpsie + wpsielen) = cpu_to_be16(WPS_PDT_CID_DISPLAYS); - wpsielen += 2; - - /* OUI */ - *(u32 *)(wpsie + wpsielen) = cpu_to_be32(INTEL_DEV_TYPE_OUI); - wpsielen += 4; - - *(u16 *)(wpsie + wpsielen) = cpu_to_be16(WPS_PDT_SCID_WIDI_CONSUMER_SINK); - wpsielen += 2; - - if (_rtw_memcmp(pmlmepriv->sa_ext, zero_array_check, L2SDTA_SERVICE_VE_LEN) == _FALSE) { - /* Vendor Extension */ - _rtw_memcpy(wpsie + wpsielen, pmlmepriv->sa_ext, L2SDTA_SERVICE_VE_LEN); - wpsielen += L2SDTA_SERVICE_VE_LEN; - } - } -#endif /* CONFIG_INTEL_WIDI */ - /* WiFi Simple Config State */ /* Type: */ *(u16 *)(wpsie + wpsielen) = cpu_to_be16(WPS_ATTR_SIMPLE_CONF_STATE); @@ -6406,13 +6370,6 @@ unsigned int on_action_public_p2p(union recv_frame *precv_frame) result = process_p2p_group_negotation_req(pwdinfo, frame_body, len); issue_p2p_GO_response(padapter, GetAddr2Ptr(pframe), frame_body, len, result); -#ifdef CONFIG_INTEL_WIDI - if (padapter->mlmepriv.widi_state == INTEL_WIDI_STATE_LISTEN) { - padapter->mlmepriv.widi_state = INTEL_WIDI_STATE_WFD_CONNECTION; - _cancel_timer_ex(&(padapter->mlmepriv.listen_timer)); - intel_widi_wk_cmd(padapter, INTEL_WIDI_LISTEN_STOP_WK, NULL, 0); - } -#endif /* CONFIG_INTEL_WIDI */ /* Commented by Albert 20110718 */ /* No matter negotiating or negotiation failure, the driver should set up the restore P2P state timer. */ @@ -6564,11 +6521,6 @@ unsigned int on_action_public_p2p(union recv_frame *precv_frame) } } else { rtw_p2p_set_state(pwdinfo, P2P_STATE_RECV_INVITE_REQ_DISMATCH); -#ifdef CONFIG_INTEL_WIDI - _rtw_memcpy(pwdinfo->p2p_peer_device_addr, group_id.go_device_addr , ETH_ALEN); - rtw_p2p_set_role(pwdinfo, P2P_ROLE_CLIENT); -#endif /* CONFIG_INTEL_WIDI */ - status_code = P2P_STATUS_FAIL_UNKNOWN_P2PGROUP; } } @@ -6614,13 +6566,6 @@ unsigned int on_action_public_p2p(union recv_frame *precv_frame) issue_p2p_invitation_response(padapter, GetAddr2Ptr(pframe), pwdinfo->inviteresp_info.token, status_code); _set_timer(&pwdinfo->restore_p2p_state_timer, 3000); } -#ifdef CONFIG_INTEL_WIDI - if (padapter->mlmepriv.widi_state == INTEL_WIDI_STATE_LISTEN) { - padapter->mlmepriv.widi_state = INTEL_WIDI_STATE_WFD_CONNECTION; - _cancel_timer_ex(&(padapter->mlmepriv.listen_timer)); - intel_widi_wk_cmd(padapter, INTEL_WIDI_LISTEN_STOP_WK, NULL, 0); - } -#endif /* CONFIG_INTEL_WIDI */ break; } case P2P_INVIT_RESP: { @@ -6685,13 +6630,6 @@ unsigned int on_action_public_p2p(union recv_frame *precv_frame) rtw_p2p_set_state(pwdinfo, P2P_STATE_RX_PROVISION_DIS_REQ); _set_timer(&pwdinfo->restore_p2p_state_timer, P2P_PROVISION_TIMEOUT); -#ifdef CONFIG_INTEL_WIDI - if (padapter->mlmepriv.widi_state == INTEL_WIDI_STATE_LISTEN) { - padapter->mlmepriv.widi_state = INTEL_WIDI_STATE_WFD_CONNECTION; - _cancel_timer_ex(&(padapter->mlmepriv.listen_timer)); - intel_widi_wk_cmd(padapter, INTEL_WIDI_LISTEN_STOP_WK, NULL, 0); - } -#endif /* CONFIG_INTEL_WIDI */ break; case P2P_PROVISION_DISC_RESP: @@ -10500,12 +10438,6 @@ u8 collect_bss_info(_adapter *padapter, union recv_frame *precv_frame, WLAN_BSSI } -#ifdef CONFIG_INTEL_WIDI - /* process_intel_widi_query_or_tigger(padapter, bssid); */ - if (process_intel_widi_query_or_tigger(padapter, bssid)) - return _FAIL; -#endif /* CONFIG_INTEL_WIDI */ - #if defined(DBG_RX_SIGNAL_DISPLAY_SSID_MONITORED) & 1 if (strcmp(bssid->Ssid.Ssid, DBG_RX_SIGNAL_DISPLAY_SSID_MONITORED) == 0) { RTW_INFO("Receiving %s("MAC_FMT", DSConfig:%u) from ch%u with ss:%3u, sq:%3u, RawRSSI:%3ld\n" From b0b91632ea017bb8078a3bba87d47d549d4369d9 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 09:32:23 +0100 Subject: [PATCH 099/234] Removed Intel WIDI Support --- core/rtw_p2p.c | 67 +------------------------------------------------- 1 file changed, 1 insertion(+), 66 deletions(-) diff --git a/core/rtw_p2p.c b/core/rtw_p2p.c index ca69e572b..2d36a20cc 100644 --- a/core/rtw_p2p.c +++ b/core/rtw_p2p.c @@ -1867,16 +1867,6 @@ u32 build_probe_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) { u8 p2pie[MAX_P2P_IE_LEN] = { 0x00 }; u32 len = 0, p2pielen = 0; -#ifdef CONFIG_INTEL_WIDI - struct mlme_priv *pmlmepriv = &(pwdinfo->padapter->mlmepriv); - u8 zero_array_check[L2SDTA_SERVICE_VE_LEN] = { 0x00 }; - u8 widi_version = 0, i = 0; - - if (_rtw_memcmp(pmlmepriv->sa_ext, zero_array_check, L2SDTA_SERVICE_VE_LEN) == _FALSE) - widi_version = 35; - else if (pmlmepriv->num_p2p_sdt != 0) - widi_version = 40; -#endif /* CONFIG_INTEL_WIDI */ /* P2P OUI */ p2pielen = 0; @@ -1959,13 +1949,7 @@ u32 build_probe_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) /* 21->P2P Device Address (6bytes) + Config Methods (2bytes) + Primary Device Type (8bytes) */ /* + NumofSecondDevType (1byte) + WPS Device Name ID field (2bytes) + WPS Device Name Len field (2bytes) */ /* *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 21 + pwdinfo->device_name_len ); */ -#ifdef CONFIG_INTEL_WIDI - if (widi_version == 35) - RTW_PUT_LE16(p2pie + p2pielen, 21 + 8 + pwdinfo->device_name_len); - else if (widi_version == 40) - RTW_PUT_LE16(p2pie + p2pielen, 21 + 8 * pmlmepriv->num_p2p_sdt + pwdinfo->device_name_len); - else -#endif /* CONFIG_INTEL_WIDI */ + RTW_PUT_LE16(p2pie + p2pielen, 21 + pwdinfo->device_name_len); p2pielen += 2; @@ -1980,25 +1964,6 @@ u32 build_probe_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) RTW_PUT_BE16(p2pie + p2pielen, pwdinfo->supported_wps_cm); p2pielen += 2; -#ifdef CONFIG_INTEL_WIDI - if (widi_version == 40) { - /* Primary Device Type */ - /* Category ID */ - /* *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_CID_MULIT_MEDIA ); */ - RTW_PUT_BE16(p2pie + p2pielen, pmlmepriv->p2p_pdt_cid); - p2pielen += 2; - - /* OUI */ - /* *(u32*) ( p2pie + p2pielen ) = cpu_to_be32( WPSOUI ); */ - RTW_PUT_BE32(p2pie + p2pielen, WPSOUI); - p2pielen += 4; - - /* Sub Category ID */ - /* *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_SCID_MEDIA_SERVER ); */ - RTW_PUT_BE16(p2pie + p2pielen, pmlmepriv->p2p_pdt_scid); - p2pielen += 2; - } else -#endif /* CONFIG_INTEL_WIDI */ { /* Primary Device Type */ /* Category ID */ @@ -2018,32 +1983,6 @@ u32 build_probe_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) } /* Number of Secondary Device Types */ -#ifdef CONFIG_INTEL_WIDI - if (widi_version == 35) { - p2pie[p2pielen++] = 0x01; - - RTW_PUT_BE16(p2pie + p2pielen, WPS_PDT_CID_DISPLAYS); - p2pielen += 2; - - RTW_PUT_BE32(p2pie + p2pielen, INTEL_DEV_TYPE_OUI); - p2pielen += 4; - - RTW_PUT_BE16(p2pie + p2pielen, P2P_SCID_WIDI_CONSUMER_SINK); - p2pielen += 2; - } else if (widi_version == 40) { - p2pie[p2pielen++] = pmlmepriv->num_p2p_sdt; - for (; i < pmlmepriv->num_p2p_sdt; i++) { - RTW_PUT_BE16(p2pie + p2pielen, pmlmepriv->p2p_sdt_cid[i]); - p2pielen += 2; - - RTW_PUT_BE32(p2pie + p2pielen, INTEL_DEV_TYPE_OUI); - p2pielen += 4; - - RTW_PUT_BE16(p2pie + p2pielen, pmlmepriv->p2p_sdt_scid[i]); - p2pielen += 2; - } - } else -#endif /* CONFIG_INTEL_WIDI */ p2pie[p2pielen++] = 0x00; /* No Secondary Device Type List */ /* Device Name */ @@ -5133,10 +5072,6 @@ int rtw_p2p_enable(_adapter *padapter, enum P2P_ROLE role) #endif } else if (role == P2P_ROLE_DISABLE) { -#ifdef CONFIG_INTEL_WIDI - if (padapter->mlmepriv.p2p_reject_disable == _TRUE) - return ret; -#endif /* CONFIG_INTEL_WIDI */ #ifdef CONFIG_IOCTL_CFG80211 if (padapter->wdinfo.driver_interface == DRIVER_CFG80211) From 70a668020850d338e4e5142901c2f4b1aaeb93a4 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 09:32:59 +0100 Subject: [PATCH 100/234] Removed Intel WIDI Support --- core/rtw_wlan_util.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/core/rtw_wlan_util.c b/core/rtw_wlan_util.c index 5943c1233..54c9a35e0 100644 --- a/core/rtw_wlan_util.c +++ b/core/rtw_wlan_util.c @@ -3038,11 +3038,6 @@ void update_tx_basic_rate(_adapter *padapter, u8 wirelessmode) if (!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) return; #endif /* CONFIG_P2P */ -#ifdef CONFIG_INTEL_WIDI - if (padapter->mlmepriv.widi_state != INTEL_WIDI_STATE_NONE) - return; -#endif /* CONFIG_INTEL_WIDI */ - _rtw_memset(supported_rates, 0, NDIS_802_11_LENGTH_RATES_EX); /* clear B mod if current channel is in 5G band, avoid tx cck rate in 5G band. */ From 5a2339e56f3bf17a3a0c5be6db5cc8ac7d807a45 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 09:33:42 +0100 Subject: [PATCH 101/234] Removed Intel WIDI Support --- include/drv_types.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/include/drv_types.h b/include/drv_types.h index 3d400f993..9d03776fa 100644 --- a/include/drv_types.h +++ b/include/drv_types.h @@ -73,10 +73,6 @@ typedef struct _ADAPTER _adapter, ADAPTER, *PADAPTER; #include #endif -#ifdef CONFIG_INTEL_WIDI - #include -#endif - #include #include #include From 644a34a2049f8fe9cdbd31236b9fe0908a87e1d1 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 09:34:31 +0100 Subject: [PATCH 102/234] Removed Intel WIDI Support --- include/rtw_mlme.h | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/include/rtw_mlme.h b/include/rtw_mlme.h index 1761f9723..839027ea6 100644 --- a/include/rtw_mlme.h +++ b/include/rtw_mlme.h @@ -710,33 +710,6 @@ struct mlme_priv { _workitem Linkup_workitem; _workitem Linkdown_workitem; #endif - -#ifdef CONFIG_INTEL_WIDI - int widi_state; - int listen_state; - _timer listen_timer; - ATOMIC_T rx_probe_rsp; /* 1:receive probe respone from RDS source. */ - u8 *l2sdTaBuffer; - u8 channel_idx; - u8 group_cnt; /* In WiDi 3.5, they specified another scan algo. for WFD/RDS co-existed */ - u8 sa_ext[L2SDTA_SERVICE_VE_LEN]; - - u8 widi_enable; - /** - * For WiDi 4; upper layer would set - * p2p_primary_device_type_category_id - * p2p_primary_device_type_sub_category_id - * p2p_secondary_device_type_category_id - * p2p_secondary_device_type_sub_category_id - */ - u16 p2p_pdt_cid; - u16 p2p_pdt_scid; - u8 num_p2p_sdt; - u16 p2p_sdt_cid[MAX_NUM_P2P_SDT]; - u16 p2p_sdt_scid[MAX_NUM_P2P_SDT]; - u8 p2p_reject_disable; /* When starting NL80211 wpa_supplicant/hostapd, it will call netdev_close */ - /* such that it will cause p2p disabled. Use this flag to reject. */ -#endif /* CONFIG_INTEL_WIDI */ u32 lastscantime; #ifdef CONFIG_CONCURRENT_MODE u8 scanning_via_buddy_intf; From f86fb89dda9fdefbe14cb2cbe6766c09c17fc7ab Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 09:37:17 +0100 Subject: [PATCH 103/234] Removed Intel WIDI Support --- os_dep/linux/ioctl_linux.c | 108 ------------------------------------- 1 file changed, 108 deletions(-) diff --git a/os_dep/linux/ioctl_linux.c b/os_dep/linux/ioctl_linux.c index c1adefbf1..3cc32bc3d 100644 --- a/os_dep/linux/ioctl_linux.c +++ b/os_dep/linux/ioctl_linux.c @@ -4285,10 +4285,6 @@ static int rtw_wps_start(struct net_device *dev, else if (u32wps_start == 3) /* WPS Stop because of wps fail */ rtw_led_control(padapter, LED_CTL_STOP_WPS_FAIL); -#ifdef CONFIG_INTEL_WIDI - process_intel_widi_wps_status(padapter, u32wps_start); -#endif /* CONFIG_INTEL_WIDI */ - exit: return ret; @@ -5184,13 +5180,6 @@ static int rtw_p2p_connect(struct net_device *dev, return ret; } -#ifdef CONFIG_INTEL_WIDI - if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) { - RTW_INFO("[%s] WiFi is under survey!\n", __FUNCTION__); - return ret; - } -#endif /* CONFIG_INTEL_WIDI */ - if (pwdinfo->ui_got_wps_info == P2P_NO_WPSINFO) return -1; @@ -5273,19 +5262,6 @@ static int rtw_p2p_connect(struct net_device *dev, } else { RTW_INFO("[%s] Not Found in Scanning Queue~\n", __FUNCTION__); -#ifdef CONFIG_INTEL_WIDI - _cancel_timer_ex(&pwdinfo->restore_p2p_state_timer); - rtw_p2p_set_state(pwdinfo, P2P_STATE_FIND_PHASE_SEARCH); - rtw_p2p_findphase_ex_set(pwdinfo, P2P_FINDPHASE_EX_NONE); - rtw_free_network_queue(padapter, _TRUE); - /** - * For WiDi, if we can't find candidate device in scanning queue, - * driver will do scanning itself - */ - _enter_critical_bh(&pmlmepriv->lock, &irqL); - rtw_sitesurvey_cmd(padapter, NULL, 0, NULL, 0); - _exit_critical_bh(&pmlmepriv->lock, &irqL); -#endif /* CONFIG_INTEL_WIDI */ ret = -1; } exit: @@ -5854,13 +5830,6 @@ static int rtw_p2p_prov_disc(struct net_device *dev, RTW_INFO("[%s] WiFi Direct is disable!\n", __FUNCTION__); return ret; } else { -#ifdef CONFIG_INTEL_WIDI - if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) { - RTW_INFO("[%s] WiFi is under survey!\n", __FUNCTION__); - return ret; - } -#endif /* CONFIG_INTEL_WIDI */ - /* Reset the content of struct tx_provdisc_req_info excluded the wps_config_method_request. */ _rtw_memset(pwdinfo->tx_prov_disc_info.peerDevAddr, 0x00, ETH_ALEN); _rtw_memset(pwdinfo->tx_prov_disc_info.peerIFAddr, 0x00, ETH_ALEN); @@ -5930,18 +5899,6 @@ static int rtw_p2p_prov_disc(struct net_device *dev, } -#ifdef CONFIG_INTEL_WIDI - /* Some Intel WiDi source may not provide P2P IE, */ - /* so we could only compare mac addr by 802.11 Source Address */ - if (pmlmepriv->widi_state == INTEL_WIDI_STATE_WFD_CONNECTION - && uintPeerChannel == 0) { - if (_rtw_memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN)) { - uintPeerChannel = pnetwork->network.Configuration.DSConfig; - break; - } - } -#endif /* CONFIG_INTEL_WIDI */ - plist = get_next(plist); } @@ -6031,15 +5988,6 @@ static int rtw_p2p_prov_disc(struct net_device *dev, } else { RTW_INFO("[%s] NOT Found in the Scanning Queue!\n", __FUNCTION__); -#ifdef CONFIG_INTEL_WIDI - _cancel_timer_ex(&pwdinfo->restore_p2p_state_timer); - rtw_p2p_set_state(pwdinfo, P2P_STATE_FIND_PHASE_SEARCH); - rtw_p2p_findphase_ex_set(pwdinfo, P2P_FINDPHASE_EX_NONE); - rtw_free_network_queue(padapter, _TRUE); - _enter_critical_bh(&pmlmepriv->lock, &irqL); - rtw_sitesurvey_cmd(padapter, NULL, 0, NULL, 0); - _exit_critical_bh(&pmlmepriv->lock, &irqL); -#endif /* CONFIG_INTEL_WIDI */ } exit: @@ -11527,46 +11475,6 @@ static int rtw_tdls_get(struct net_device *dev, return ret; } - - - - -#ifdef CONFIG_INTEL_WIDI -static int rtw_widi_set(struct net_device *dev, - struct iw_request_info *info, - union iwreq_data *wrqu, char *extra) -{ - int ret = 0; - _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - - process_intel_widi_cmd(padapter, extra); - - return ret; -} - -static int rtw_widi_set_probe_request(struct net_device *dev, - struct iw_request_info *info, - union iwreq_data *wrqu, char *extra) -{ - int ret = 0; - u8 *pbuf = NULL; - _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - - pbuf = rtw_malloc(sizeof(l2_msg_t)); - if (pbuf) { - if (copy_from_user(pbuf, wrqu->data.pointer, wrqu->data.length)) - ret = -EFAULT; - /* _rtw_memcpy(pbuf, wrqu->data.pointer, wrqu->data.length); */ - - if (wrqu->data.flags == 0) - intel_widi_wk_cmd(padapter, INTEL_WIDI_ISSUE_PROB_WK, pbuf, sizeof(l2_msg_t)); - else if (wrqu->data.flags == 1) - rtw_set_wfd_rds_sink_info(padapter, (l2_msg_t *)pbuf); - } - return ret; -} -#endif /* CONFIG_INTEL_WIDI */ - #ifdef CONFIG_MAC_LOOPBACK_DRIVER #if defined(CONFIG_RTL8188E) @@ -12411,18 +12319,6 @@ static const struct iw_priv_args rtw_private_args[] = { SIOCIWFIRSTPRIV + 0x1D, IW_PRIV_TYPE_CHAR | 40, IW_PRIV_TYPE_CHAR | 0x7FF, "test" }, - -#ifdef CONFIG_INTEL_WIDI - { - SIOCIWFIRSTPRIV + 0x1E, - IW_PRIV_TYPE_CHAR | 1024, 0, "widi_set" - }, - { - SIOCIWFIRSTPRIV + 0x1F, - IW_PRIV_TYPE_CHAR | 128, 0, "widi_prob_req" - }, -#endif /* CONFIG_INTEL_WIDI */ - { SIOCIWFIRSTPRIV + 0x0E, IW_PRIV_TYPE_CHAR | 1024, 0 , ""}, /* set */ { SIOCIWFIRSTPRIV + 0x0F, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK , ""},/* get * --- sub-ioctls definitions --- */ @@ -12547,10 +12443,6 @@ static iw_handler rtw_private_handler[] = { #endif NULL, /* 0x1C is reserved for hostapd */ rtw_test, /* 0x1D */ -#ifdef CONFIG_INTEL_WIDI - rtw_widi_set, /* 0x1E */ - rtw_widi_set_probe_request, /* 0x1F */ -#endif /* CONFIG_INTEL_WIDI */ }; #if WIRELESS_EXT >= 17 From 0e67494be9f6fb38656792285827a935f12e4a36 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 09:38:45 +0100 Subject: [PATCH 104/234] Removed Intel WIDI Support * Intel WIDI project is dead, removed support/code. --- os_dep/linux/os_intfs.c | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c index 1079a7ace..2ad6ea7fe 100644 --- a/os_dep/linux/os_intfs.c +++ b/os_dep/linux/os_intfs.c @@ -826,9 +826,6 @@ uint loadparam(_adapter *padapter) #ifdef CONFIG_LAYER2_ROAMING registry_par->max_roaming_times = (u8)rtw_max_roaming_times; -#ifdef CONFIG_INTEL_WIDI - registry_par->max_roaming_times = (u8)rtw_max_roaming_times + 2; -#endif /* CONFIG_INTEL_WIDI */ #endif #ifdef CONFIG_IOL @@ -1948,14 +1945,6 @@ u8 rtw_init_drv_sw(_adapter *padapter) rtw_hal_sreset_init(padapter); #endif -#ifdef CONFIG_INTEL_WIDI - if (rtw_init_intel_widi(padapter) == _FAIL) { - RTW_INFO("Can't rtw_init_intel_widi\n"); - ret8 = _FAIL; - goto exit; - } -#endif /* CONFIG_INTEL_WIDI */ - #ifdef CONFIG_WAPI_SUPPORT padapter->WapiSupport = true; /* set true temp, will revise according to Efuse or Registry value later. */ rtw_wapi_init(padapter); @@ -2055,10 +2044,6 @@ u8 rtw_free_drv_sw(_adapter *padapter) _rtw_spinlock_free(&padapter->br_ext_lock); #endif /* CONFIG_BR_EXT */ -#ifdef CONFIG_INTEL_WIDI - rtw_free_intel_widi(padapter); -#endif /* CONFIG_INTEL_WIDI */ - free_mlme_ext_priv(&padapter->mlmeextpriv); #ifdef CONFIG_TDLS From b11e32dc458d74e1cd55bc0409055234a997327c Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 10:55:16 +0100 Subject: [PATCH 105/234] Add RPI Option to Makefile --- Makefile | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Makefile b/Makefile index 251b4db4a..1bf9d4fe0 100755 --- a/Makefile +++ b/Makefile @@ -136,6 +136,7 @@ CONFIG_PLATFORM_ARM_RTD299X = n CONFIG_PLATFORM_ARM_SPREADTRUM_6820 = n CONFIG_PLATFORM_ARM_SPREADTRUM_8810 = n CONFIG_PLATFORM_ARM_WMT = n +CONFIG_PLATFORM_ARM_RPI = n CONFIG_PLATFORM_TI_DM365 = n CONFIG_PLATFORM_MOZART = n CONFIG_PLATFORM_RTK119X = n @@ -1715,6 +1716,15 @@ MODULE_NAME := 8192eu endif +ifeq ($(CONFIG_PLATFORM_ARM_RPI), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +ARCH := arm +CROSS_COMPILE := +KVER ?= $(shell uname -r) +KSRC ?= /lib/modules/$(KVER)/build +MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ +endif + ifeq ($(CONFIG_PLATFORM_RTK129X), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN EXTRA_CFLAGS += -DRTK_129X_PLATFORM From 3e70835ef0febe9005b38368a09253aeed1360ad Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 15:52:02 +0100 Subject: [PATCH 106/234] Added more adapter support * Added support for Edimax EDUP adapters (like EDUP_EP-AC1621) https://wikidevi.com/wiki/EDUP_EP-AC1621 --- os_dep/linux/usb_intf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index a35d0451a..e8075124a 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -230,6 +230,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x056E, 0x400D), .driver_info = RTL8814A}, /* ELECOM - ELECOM */ {USB_DEVICE(0x7392, 0xA834), .driver_info = RTL8814A}, /* Edimax - Edimax */ {USB_DEVICE(0x7392, 0xA833), .driver_info = RTL8814A}, /* Edimax - AC1750 */ + {USB_DEVICE(0x0BDA, 0x8813), .driver_info = RTL8814A}, /* Edimax - EDUP Adapters */ {USB_DEVICE(0x2357, 0x0106), .driver_info = RTL8814A}, /* TP-LINK Archer T9UH */ {USB_DEVICE(0x20F4, 0x809A), .driver_info = RTL8814A}, /* TRENDnet - TRENDnet */ {USB_DEVICE(0x20F4, 0x809B), .driver_info = RTL8814A}, /* TRENDnet TEW-809UB */ From 8c2fe69b292a67ab5458e5ca62081fdffc106eea Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 20:07:10 +0100 Subject: [PATCH 107/234] Minor cleanup to Kernel v4.14 Support --- os_dep/osdep_service.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/os_dep/osdep_service.c b/os_dep/osdep_service.c index 13a5bea74..7a3f777d8 100644 --- a/os_dep/osdep_service.c +++ b/os_dep/osdep_service.c @@ -1919,12 +1919,10 @@ static int readFile(struct file *fp, char *buf, int len) return -EPERM; while (sum < len) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) rlen = kernel_read(fp, buf + sum, len - sum, &fp->f_pos); -#else +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)) rlen = __vfs_read(fp, buf + sum, len - sum, &fp->f_pos); -#endif #else rlen = fp->f_op->read(fp, buf + sum, len - sum, &fp->f_pos); #endif From ee4f464925b15ca6a52f06d2d89aa83920186c9b Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 20:13:02 +0100 Subject: [PATCH 108/234] Minor spacing cleanup --- core/efuse/rtw_efuse.c | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/core/efuse/rtw_efuse.c b/core/efuse/rtw_efuse.c index e3554f8d1..9dc893023 100644 --- a/core/efuse/rtw_efuse.c +++ b/core/efuse/rtw_efuse.c @@ -336,7 +336,6 @@ u16 rtw_get_efuse_mask_arraylen(PADAPTER pAdapter) return 0; } - #ifdef RTW_HALMAC #include "../../hal/hal_halmac.h" @@ -386,7 +385,6 @@ void EFUSE_GetEfuseDefinition(PADAPTER adapter, u8 efusetype, u8 type, void *out struct dvobj_priv *d; u32 v32 = 0; - d = adapter_to_dvobj(adapter); if (adapter->HalFunc.EFUSEGetEfuseDefinition) { @@ -414,7 +412,6 @@ u8 rtw_efuse_access(PADAPTER adapter, u8 write, u16 addr, u16 cnts, u8 *data) u32 size, i; int err; - d = adapter_to_dvobj(adapter); err = rtw_halmac_get_physical_efuse_size(d, &size); if (err) @@ -715,7 +712,6 @@ VOID hal_ReadEFuse_BT_logic_map( u16 i, total, used; u8 efuse_usage; - /* */ /* Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. */ /* */ @@ -830,7 +826,6 @@ VOID hal_ReadEFuse_BT_logic_map( rtw_mfree(efuseTbl, EFUSE_BT_MAP_LEN); } - static u8 hal_EfusePartialWriteCheck( PADAPTER padapter, u8 efuseType, @@ -873,7 +868,6 @@ static u8 hal_EfusePartialWriteCheck( return bRet; } - static u8 hal_EfusePgPacketWrite2ByteHeader( PADAPTER padapter, u8 efuseType, @@ -940,7 +934,6 @@ static u8 hal_EfusePgPacketWrite2ByteHeader( return _TRUE; } - static u8 hal_EfusePgPacketWrite1ByteHeader( PADAPTER pAdapter, u8 efuseType, @@ -953,7 +946,6 @@ static u8 hal_EfusePgPacketWrite1ByteHeader( u16 efuse_addr = *pAddr; u8 repeatcnt = 0; - /* RTW_INFO("%s\n", __FUNCTION__); */ pg_header = ((pTargetPkt->offset << 4) & 0xf0) | pTargetPkt->word_en; @@ -996,7 +988,6 @@ static u8 hal_EfusePgPacketWriteHeader( return bRet; } - static u8 Hal_EfuseWordEnableDataWrite( PADAPTER padapter, @@ -1010,7 +1001,6 @@ Hal_EfuseWordEnableDataWrite( u8 badworden = 0x0F; u8 tmpdata[PGPKT_DATA_SIZE]; - /* RTW_INFO("%s: efuse_addr=%#x word_en=%#x\n", __FUNCTION__, efuse_addr, word_en); */ _rtw_memset(tmpdata, 0xFF, PGPKT_DATA_SIZE); @@ -1116,7 +1106,6 @@ u8 EfusePgPacketWrite_BT( return _TRUE; } - #else /* !RTW_HALMAC */ /* ------------------------------------------------------------------------------ */ #define REG_EFUSE_CTRL 0x0030 @@ -1469,7 +1458,6 @@ EFUSE_Write1Byte( } } /* EFUSE_Write1Byte */ - /* 11/16/2008 MH Read one byte from real Efuse. */ u8 efuse_OneByteRead( @@ -1555,7 +1543,6 @@ efuse_OneByteWrite( /* -----------------e-fuse reg ctrl --------------------------------- */ /* address */ - efuseValue = rtw_read32(pAdapter, EFUSE_CTRL); efuseValue |= (BIT21 | BIT31); efuseValue &= ~(0x3FFFF); @@ -1627,7 +1614,6 @@ Efuse_PgPacketWrite(IN PADAPTER pAdapter, return ret; } - int Efuse_PgPacketWrite_BT(IN PADAPTER pAdapter, IN u8 offset, @@ -1642,7 +1628,6 @@ Efuse_PgPacketWrite_BT(IN PADAPTER pAdapter, return ret; } - u8 Efuse_WordEnableDataWrite(IN PADAPTER pAdapter, IN u16 efuse_addr, @@ -2087,7 +2072,6 @@ efuse_ShadowRead4Byte( } /* efuse_ShadowRead4Byte */ - /*----------------------------------------------------------------------------- * Function: efuse_ShadowWrite1Byte * efuse_ShadowWrite2Byte @@ -2135,7 +2119,6 @@ efuse_ShadowWrite2Byte( PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter); - pHalData->efuse_eeprom_data[Offset] = Value & 0x00FF; pHalData->efuse_eeprom_data[Offset + 1] = Value >> 8; @@ -2157,7 +2140,6 @@ efuse_ShadowWrite4Byte( } /* efuse_ShadowWrite1Byte */ - /*----------------------------------------------------------------------------- * Function: EFUSE_ShadowRead * @@ -2225,7 +2207,6 @@ EFUSE_ShadowWrite( if (pAdapter->registrypriv.mp_mode == 0) return; - if (Type == 1) efuse_ShadowWrite1Byte(pAdapter, Offset, (u8)Value); else if (Type == 2) @@ -2344,7 +2325,6 @@ void EFUSE_ShadowMapUpdate( u8 *efuse_map = NULL; int err; - mapLen = EEPROM_MAX_SIZE; efuse_map = pHalData->efuse_eeprom_data; /* efuse default content is 0xFF */ From 7356af4990097d38984f1ebfa7bbf8c984477c74 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 20:16:27 +0100 Subject: [PATCH 109/234] Add support for network namespaces --- os_dep/linux/ioctl_cfg80211.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 9af4effe7..6e9f65872 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -6497,6 +6497,10 @@ static void rtw_cfg80211_preinit_wiphy(_adapter *adapter, struct wiphy *wiphy) wiphy->bands[IEEE80211_BAND_5GHZ] = rtw_spt_band_alloc(IEEE80211_BAND_5GHZ); #endif +#if defined(CONFIG_NET_NS) + wiphy->flags |= WIPHY_FLAG_NETNS_OK; +#endif //CONFIG_NET_NS + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38) && LINUX_VERSION_CODE < KERNEL_VERSION(3, 0, 0)) #if defined(CONFIG_NET_NS) wiphy->flags |= WIPHY_FLAG_NETNS_OK; From 3e030bbd59566ebc586b6fdffd61781cea7abe1c Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 20:25:19 +0100 Subject: [PATCH 110/234] Added CONFIG_NET_NS Switch * Added CONFIG_NET_NS Switch to Makefile and turned ON (still TESTING purposes) --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 1bf9d4fe0..0374b2dc4 100755 --- a/Makefile +++ b/Makefile @@ -48,6 +48,7 @@ CONFIG_PCI_HCI = n CONFIG_SDIO_HCI = n CONFIG_GSPI_HCI = n ########################## Features ########################### +CONFIG_NET_NS = y CONFIG_MP_INCLUDED = y CONFIG_POWER_SAVING = n CONFIG_USB_AUTOSUSPEND = n From c9a0968521ee50c0a4f5e6f44cd4893124f165ed Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 20:27:34 +0100 Subject: [PATCH 111/234] Minor spacing cleanup --- os_dep/linux/rtw_radiotap.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/os_dep/linux/rtw_radiotap.c b/os_dep/linux/rtw_radiotap.c index b8df1ae84..56cf92f12 100644 --- a/os_dep/linux/rtw_radiotap.c +++ b/os_dep/linux/rtw_radiotap.c @@ -183,8 +183,6 @@ static void find_ns(struct ieee80211_radiotap_iterator *iterator, } } - - /** * ieee80211_radiotap_iterator_next - return next radiotap parser iterator arg * @iterator: radiotap_iterator to move to next arg (if any) @@ -366,4 +364,3 @@ int rtw_ieee80211_radiotap_iterator_next( return 0; } } - From 15b5ff9b560dd64b3969f08d2e7330a5cc3159e8 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 20:31:12 +0100 Subject: [PATCH 112/234] 80211W turned ON + more DEBUG * 80211w (security feature) turned ON but will need to be "tested" further. * More debug output enabled, as we see that these drivers will acquire more work in the future. --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 0374b2dc4..2017cabb9 100755 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ EXTRA_CFLAGS += -Wno-unused-parameter EXTRA_CFLAGS += -Wno-unused-function EXTRA_CFLAGS += -Wno-unused EXTRA_CFLAGS += -Wno-date-time -EXTRA_CFLAGS += -Wno-misleading-indentation +#EXTRA_CFLAGS += -Wno-misleading-indentation #EXTRA_CFLAGS += -Wno-uninitialized GCC_VER_49 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.9 | bc ) @@ -65,7 +65,7 @@ CONFIG_CALIBRATE_TX_POWER_TO_MAX = y CONFIG_RTW_ADAPTIVITY_EN = disable CONFIG_RTW_ADAPTIVITY_MODE = normal CONFIG_SIGNAL_SCALE_MAPPING = n -CONFIG_80211W = n +CONFIG_80211W = y CONFIG_REDUCE_TX_CPU_LOADING = n CONFIG_BR_EXT = y CONFIG_TDLS = n From 8b41ccda9af35d85b20434466686b79a607bf164 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 20:40:05 +0100 Subject: [PATCH 113/234] Minor fix + spacing --- os_dep/linux/ioctl_cfg80211.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 6e9f65872..1c7c1a1cd 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -77,7 +77,6 @@ #endif /* CONFIG_WAPI_SUPPORT */ - static const u32 rtw_cipher_suites[] = { WLAN_CIPHER_SUITE_WEP40, WLAN_CIPHER_SUITE_WEP104, @@ -196,7 +195,6 @@ static struct ieee80211_channel rtw_5ghz_a_channels[] = { CHAN5G(216, 0), }; - void rtw_2g_channels_init(struct ieee80211_channel *channels) { _rtw_memcpy((void *)channels, (void *)rtw_2ghz_channels, @@ -471,7 +469,6 @@ struct cfg80211_bss *rtw_cfg80211_inform_bss(_adapter *padapter, struct wlan_net } /* _exit_critical_bh(&pwdev_priv->scan_req_lock, &irqL); */ - channel = pnetwork->network.Configuration.DSConfig; freq = rtw_ch2freq(channel); notify_channel = ieee80211_get_channel(wiphy, freq); @@ -524,7 +521,6 @@ struct cfg80211_bss *rtw_cfg80211_inform_bss(_adapter *padapter, struct wlan_net _rtw_memcpy(pwlanhdr->addr2, pnetwork->network.MacAddress, ETH_ALEN); _rtw_memcpy(pwlanhdr->addr3, pnetwork->network.MacAddress, ETH_ALEN); - /* pbuf += sizeof(struct rtw_ieee80211_hdr_3addr); */ len = sizeof(struct rtw_ieee80211_hdr_3addr); _rtw_memcpy((pbuf + len), pnetwork->network.IEs, pnetwork->network.IELength); @@ -754,10 +750,10 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter) } check_bss: - if (!rtw_cfg80211_check_bss(padapter)) + if (!rtw_cfg80211_check_bss(padapter)){ RTW_PRINT(FUNC_ADPT_FMT" BSS not found !!\n", FUNC_ADPT_ARG(padapter)); - if (rtw_to_roam(padapter) > 0) { + }else if (rtw_to_roam(padapter) > 0) { #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) || defined(COMPAT_KERNEL_RELEASE) struct wiphy *wiphy = pwdev->wiphy; struct ieee80211_channel *notify_channel; @@ -894,7 +890,6 @@ void rtw_cfg80211_indicate_disconnect(_adapter *padapter, u16 reason, u8 locally } } - #ifdef CONFIG_AP_MODE static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_param *param, u32 param_len) { From 136fbdef54190739912922d4e3c0892b35b32bcd Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 20:45:51 +0100 Subject: [PATCH 114/234] Allow to set channel when in monitor mode * Added support for setting channel when in "monitor" mode. --- os_dep/linux/ioctl_cfg80211.c | 39 +++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 1c7c1a1cd..426ea2eb3 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -4572,6 +4572,42 @@ static int cfg80211_rtw_set_monitor_channel(struct wiphy *wiphy return 0; } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)) +static int cfg80211_rtw_set_monitor_channel(struct wiphy *wiphy, struct cfg80211_chan_def *chandef) +{ + struct ieee80211_channel *chan = (struct ieee80211_channel *) chandef->chan; + int chan_target = (u8) ieee80211_frequency_to_channel(chan->center_freq); + int chan_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + int chan_width = CHANNEL_WIDTH_20; + enum nl80211_channel_type channel_type = cfg80211_get_chandef_type(chandef); + _adapter *padapter = wiphy_to_adapter(wiphy); + + switch (channel_type) { + case NL80211_CHAN_NO_HT: + case NL80211_CHAN_HT20: + chan_width = CHANNEL_WIDTH_20; + chan_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + break; + case NL80211_CHAN_HT40MINUS: + chan_width = CHANNEL_WIDTH_40; + chan_offset = HAL_PRIME_CHNL_OFFSET_UPPER; + break; + case NL80211_CHAN_HT40PLUS: + chan_width = CHANNEL_WIDTH_40; + chan_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + break; + default: + chan_width = CHANNEL_WIDTH_20; + chan_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + break; + } + + set_channel_bwmode(padapter, chan_target, chan_offset, chan_width); + DBG_871X("%s : %d", __func__, chan_target); + return 0; +} +#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)) */ + static int cfg80211_rtw_auth(struct wiphy *wiphy, struct net_device *ndev, struct cfg80211_auth_request *req) { @@ -6595,6 +6631,9 @@ static struct cfg80211_ops rtw_cfg80211_ops = { .change_bss = cfg80211_rtw_change_bss, #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 6, 0)) .set_channel = cfg80211_rtw_set_channel, +#endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)) + .set_monitor_channel = cfg80211_rtw_set_monitor_channel, #endif /* .auth = cfg80211_rtw_auth, */ /* .assoc = cfg80211_rtw_assoc, */ From 746c12ab111064668bac0328386d283ea009619c Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 15 Nov 2017 21:51:39 +0100 Subject: [PATCH 115/234] Remove test code --- os_dep/linux/ioctl_cfg80211.c | 40 +---------------------------------- 1 file changed, 1 insertion(+), 39 deletions(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 426ea2eb3..20eec9ae2 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -4572,42 +4572,6 @@ static int cfg80211_rtw_set_monitor_channel(struct wiphy *wiphy return 0; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)) -static int cfg80211_rtw_set_monitor_channel(struct wiphy *wiphy, struct cfg80211_chan_def *chandef) -{ - struct ieee80211_channel *chan = (struct ieee80211_channel *) chandef->chan; - int chan_target = (u8) ieee80211_frequency_to_channel(chan->center_freq); - int chan_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - int chan_width = CHANNEL_WIDTH_20; - enum nl80211_channel_type channel_type = cfg80211_get_chandef_type(chandef); - _adapter *padapter = wiphy_to_adapter(wiphy); - - switch (channel_type) { - case NL80211_CHAN_NO_HT: - case NL80211_CHAN_HT20: - chan_width = CHANNEL_WIDTH_20; - chan_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - break; - case NL80211_CHAN_HT40MINUS: - chan_width = CHANNEL_WIDTH_40; - chan_offset = HAL_PRIME_CHNL_OFFSET_UPPER; - break; - case NL80211_CHAN_HT40PLUS: - chan_width = CHANNEL_WIDTH_40; - chan_offset = HAL_PRIME_CHNL_OFFSET_LOWER; - break; - default: - chan_width = CHANNEL_WIDTH_20; - chan_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - break; - } - - set_channel_bwmode(padapter, chan_target, chan_offset, chan_width); - DBG_871X("%s : %d", __func__, chan_target); - return 0; -} -#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)) */ - static int cfg80211_rtw_auth(struct wiphy *wiphy, struct net_device *ndev, struct cfg80211_auth_request *req) { @@ -6632,9 +6596,7 @@ static struct cfg80211_ops rtw_cfg80211_ops = { #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 6, 0)) .set_channel = cfg80211_rtw_set_channel, #endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)) - .set_monitor_channel = cfg80211_rtw_set_monitor_channel, -#endif + /* .auth = cfg80211_rtw_auth, */ /* .assoc = cfg80211_rtw_assoc, */ #endif /* CONFIG_AP_MODE */ From 876c553ba1a89feaa676de91d761ca4a1859ed4c Mon Sep 17 00:00:00 2001 From: Christian B Date: Thu, 16 Nov 2017 07:32:46 +0100 Subject: [PATCH 116/234] Added more USB VID/PID * Added support for "Elecom - WDC-433DU2HBK" --- os_dep/linux/usb_intf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index e8075124a..752043a9f 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -202,6 +202,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x2019, 0xAB32), .driver_info = RTL8821}, /* Planex - GW-450S */ {USB_DEVICE(0x0846, 0x9052), .driver_info = RTL8821}, /* Netgear - A6100 */ {USB_DEVICE(0x0411, 0x029B), .driver_info = RTL8821}, /* Buffalo - WI-U2-433DHP */ + {USB_DEVICE(0x056E, 0x4007), .driver_info = RTL8821}, /* Elecom - WDC-433DU2HBK */ #endif #ifdef CONFIG_RTL8192E From 4037272de51269a025c14c49456d4e78d40a6f3b Mon Sep 17 00:00:00 2001 From: Christian B Date: Thu, 16 Nov 2017 07:34:24 +0100 Subject: [PATCH 117/234] Added 8814AU to Kconfig --- Kconfig | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Kconfig b/Kconfig index f87653d5a..16d3567ad 100644 --- a/Kconfig +++ b/Kconfig @@ -4,3 +4,8 @@ config RTL8812AU ---help--- Help message of RTL8812AU +config RTL8814AU + tristate "Realtek 8814A USB WiFi" + depends on USB + ---help--- + Help message of RTL8814AU From 619453d466c517bb49b48e61703d06f23ef344b5 Mon Sep 17 00:00:00 2001 From: Christian B Date: Thu, 16 Nov 2017 08:11:51 +0100 Subject: [PATCH 118/234] Small fix + indentation cleanup --- hal/rtl8814a/usb/rtl8814au_xmit.c | 218 ++++++++++++++---------------- 1 file changed, 102 insertions(+), 116 deletions(-) diff --git a/hal/rtl8814a/usb/rtl8814au_xmit.c b/hal/rtl8814a/usb/rtl8814au_xmit.c index 910256045..5746dbbca 100644 --- a/hal/rtl8814a/usb/rtl8814au_xmit.c +++ b/hal/rtl8814a/usb/rtl8814au_xmit.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -22,7 +22,6 @@ //#include #include - s32 rtl8814au_init_xmit_priv(_adapter *padapter) { struct xmit_priv *pxmitpriv = &padapter->xmitpriv; @@ -45,22 +44,22 @@ void rtl8814au_free_xmit_priv(_adapter *padapter) } static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bagg_pkt) -{ +{ int pull=0; uint qsel; u8 data_rate,pwr_status,offset; _adapter *padapter = pxmitframe->padapter; - struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct pkt_attrib *pattrib = &pxmitframe->attrib; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); u8 *ptxdesc = pmem; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); sint bmcst = IS_MCAST(pattrib->ra); - u16 SWDefineContent = 0x0; + u16 SWDefineContent = 0x0; u8 DriverFixedRate = 0x0; -#ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX +#ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX if (padapter->registrypriv.mp_mode == 0) { if((PACKET_OFFSET_SZ != 0) && (!bagg_pkt) &&(rtw_usb_bulk_size_boundary(padapter,TXDESC_SIZE+sz)==_FALSE)) @@ -73,20 +72,20 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag #endif // CONFIG_USE_USB_BUFFER_ALLOC_TX _rtw_memset(ptxdesc, 0, TXDESC_SIZE); - + //4 offset 0 //SET_TX_DESC_FIRST_SEG_8812(ptxdesc, 1); SET_TX_DESC_LAST_SEG_8814A(ptxdesc, 1); //SET_TX_DESC_OWN_8812(ptxdesc, 1); - + //RTW_INFO("%s==> pkt_len=%d,bagg_pkt=%02x\n",__FUNCTION__,sz,bagg_pkt); SET_TX_DESC_PKT_SIZE_8814A(ptxdesc, sz); - - offset = TXDESC_SIZE + OFFSET_SZ; -#ifdef CONFIG_TX_EARLY_MODE - if(bagg_pkt){ - offset += EARLY_MODE_INFO_SIZE ;//0x28 + offset = TXDESC_SIZE + OFFSET_SZ; + +#ifdef CONFIG_TX_EARLY_MODE + if(bagg_pkt){ + offset += EARLY_MODE_INFO_SIZE ;//0x28 } #endif //RTW_INFO("%s==>offset(0x%02x) \n",__FUNCTION__,offset); @@ -100,11 +99,11 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag if (padapter->registrypriv.mp_mode == 0) { if((PACKET_OFFSET_SZ != 0) && (!bagg_pkt)){ - if((pull) && (pxmitframe->pkt_offset>0)) { - pxmitframe->pkt_offset = pxmitframe->pkt_offset -1; + if((pull) && (pxmitframe->pkt_offset>0)) { + pxmitframe->pkt_offset = pxmitframe->pkt_offset -1; } } - } + } #endif //RTW_INFO("%s, pkt_offset=0x%02x\n",__FUNCTION__,pxmitframe->pkt_offset); @@ -135,7 +134,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag if((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) { - //RTW_INFO("pxmitframe->frame_tag == DATA_FRAMETAG\n"); + //RTW_INFO("pxmitframe->frame_tag == DATA_FRAMETAG\n"); rtl8814a_fill_txdesc_sectype(pattrib, ptxdesc); @@ -186,7 +185,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag if (pHalData->fw_ractrl == _FALSE) { SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); DriverFixedRate = 0x01; - + if(pHalData->INIDATA_RATE[pattrib->mac_id] & BIT(7)) SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 1); @@ -195,7 +194,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag if (padapter->fix_rate != 0xFF) { // modify data rate by iwpriv SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); - DriverFixedRate = 0x01; + DriverFixedRate = 0x01; if(padapter->fix_rate & BIT(7)) SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 1); @@ -206,9 +205,9 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag if (pattrib->ldpc) SET_TX_DESC_DATA_LDPC_8814A(ptxdesc, 1); - if (pattrib->stbc) + if (pattrib->stbc) SET_TX_DESC_DATA_STBC_8814A(ptxdesc, 1); - + //work arond before fixing RA //SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); //SET_TX_DESC_TX_RATE_8814A(ptxdesc, 0x10); @@ -234,7 +233,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag } else if((pxmitframe->frame_tag&0x0f)== MGNT_FRAMETAG) { - //RTW_INFO("pxmitframe->frame_tag == MGNT_FRAMETAG\n"); + //RTW_INFO("pxmitframe->frame_tag == MGNT_FRAMETAG\n"); SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); DriverFixedRate = 0x01; @@ -251,7 +250,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag } // VHT NDPA or HT NDPA Packet for Beamformer. - if((pattrib->subtype == WIFI_NDPA) || + if((pattrib->subtype == WIFI_NDPA) || ((pattrib->subtype == WIFI_ACTION_NOACK) && (pattrib->order == 1))) { SET_TX_DESC_NAV_USE_HDR_8814A(ptxdesc, 1); @@ -266,7 +265,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag //if(pattrib->rts_cca) //{ // SET_TX_DESC_NDPA_8812(ptxdesc, 2); - //} + //} //else { SET_TX_DESC_NDPA_8814A(ptxdesc, 1); @@ -316,7 +315,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag SET_TX_DESC_SW_DEFINE_8814A(ptxdesc, SWDefineContent); SET_TX_DESC_GID_8814A(ptxdesc, pattrib->txbf_g_id); - SET_TX_DESC_PAID_8814A(ptxdesc, pattrib->txbf_p_aid); + SET_TX_DESC_PAID_8814A(ptxdesc, pattrib->txbf_p_aid); /* injected frame */ if(pattrib->inject == 0xa5) { @@ -335,7 +334,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag SET_TX_DESC_TX_RATE_8814A(ptxdesc, MRateToHwRate(pattrib->rate)); if (pattrib->ldpc) { SET_TX_DESC_DATA_LDPC_8814A(ptxdesc, 1); - } else { + } else { SET_TX_DESC_DATA_LDPC_8814A(ptxdesc, 0); } SET_TX_DESC_DATA_STBC_8814A(ptxdesc, pattrib->stbc & 3); @@ -343,7 +342,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag } rtl8814a_cal_txdesc_chksum(ptxdesc); - _dbg_dump_tx_info(padapter,pxmitframe->frame_tag,ptxdesc); + _dbg_dump_tx_info(padapter,pxmitframe->frame_tag,ptxdesc); return pull; } @@ -438,18 +437,18 @@ static s32 rtw_dump_xframe(_adapter *padapter, struct xmit_frame *pxmitframe) mem_addr = pxmitframe->buf_addr; //RTW_INFO("rtw_dump_xframe()\n"); - + for (t = 0; t < pattrib->nr_frags; t++) { if (inner_ret != _SUCCESS && ret == _SUCCESS) ret = _FAIL; - + if (t != (pattrib->nr_frags - 1)) { RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("pattrib->nr_frags=%d\n", pattrib->nr_frags)); sz = pxmitpriv->frag_len; - sz = sz - 4 - (psecuritypriv->sw_encrypt ? 0 : pattrib->icv_len); + sz = sz - 4 - (psecuritypriv->sw_encrypt ? 0 : pattrib->icv_len); } else //no frag { @@ -457,12 +456,12 @@ static s32 rtw_dump_xframe(_adapter *padapter, struct xmit_frame *pxmitframe) } pull = update_txdesc(pxmitframe, mem_addr, sz, _FALSE); - + if(pull) { mem_addr += PACKET_OFFSET_SZ; //pull txdesc head - - //pxmitbuf ->pbuf = mem_addr; + + //pxmitbuf ->pbuf = mem_addr; pxmitframe->buf_addr = mem_addr; w_sz = sz + TXDESC_SIZE; @@ -470,7 +469,7 @@ static s32 rtw_dump_xframe(_adapter *padapter, struct xmit_frame *pxmitframe) else { w_sz = sz + TXDESC_SIZE + PACKET_OFFSET_SZ; - } + } ff_hwaddr = rtw_get_ff_hwaddr(pxmitframe); @@ -484,19 +483,19 @@ static s32 rtw_dump_xframe(_adapter *padapter, struct xmit_frame *pxmitframe) rtw_count_tx_stats(padapter, pxmitframe, sz); //RTW_INFO("rtw_write_port, w_sz=%d\n", w_sz); - //RTW_INFO("rtw_write_port, w_sz=%d, sz=%d, txdesc_sz=%d, tid=%d\n", w_sz, sz, w_sz-sz, pattrib->priority); + //RTW_INFO("rtw_write_port, w_sz=%d, sz=%d, txdesc_sz=%d, tid=%d\n", w_sz, sz, w_sz-sz, pattrib->priority); mem_addr += w_sz; mem_addr = (u8 *)RND4(((SIZE_PTR)(mem_addr))); } - + rtw_free_xmitframe(pxmitpriv, pxmitframe); - + if (ret != _SUCCESS) rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_UNKNOWN); - + return ret; } @@ -568,7 +567,7 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv //3 1. pick up first frame do { rtw_free_xmitframe(pxmitpriv, pxmitframe); - + pxmitframe = rtw_dequeue_xframe(pxmitpriv, pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry); if (pxmitframe == NULL) { // no more xmit frame, release xmit buffer @@ -629,9 +628,10 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv // check pkt amount in one bulk descCount = 0; bulkPtr = bulkSize; - if (pbuf < bulkPtr) + if (pbuf < bulkPtr) { descCount++; - if (descCount == pHalData->UsbTxAggDescNum) + } + if (descCount == pHalData->UsbTxAggDescNum) goto agg_end; else { descCount = 0; @@ -678,7 +678,7 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv xmitframe_phead = get_list_head(&ptxservq->sta_pending); xmitframe_plist = get_next(xmitframe_phead); - + while (rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist) == _FALSE) { pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list); @@ -686,23 +686,23 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv if(_FAIL == rtw_hal_busagg_qsel_check(padapter,pfirstframe->attrib.qsel,pxmitframe->attrib.qsel)) break; - + pxmitframe->agg_num = 0; // not first frame of aggregation #ifdef CONFIG_TX_EARLY_MODE pxmitframe->pkt_offset = 1;// not first frame of aggregation,reserve offset for EM Info #else pxmitframe->pkt_offset = 0; // not first frame of aggregation, no need to reserve offset - #endif + #endif len = xmitframe_need_length(pxmitframe) + TXDESC_SIZE +(pxmitframe->pkt_offset*PACKET_OFFSET_SZ); - + if (_RND8(pbuf + len) > MAX_XMITBUF_SZ) //if (_RND8(pbuf + len) > (MAX_XMITBUF_SZ/2))//to do : for TX TP finial tune , Georgia 2012-0323 { //RTW_INFO("%s....len> MAX_XMITBUF_SZ\n",__FUNCTION__); pxmitframe->agg_num = 1; - pxmitframe->pkt_offset = 1; - break; + pxmitframe->pkt_offset = 1; + break; } rtw_list_delete(&pxmitframe->list); ptxservq->qcnt--; @@ -731,7 +731,7 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv // pxmitframe->pxmitbuf = pxmitbuf; pxmitframe->buf_addr = pxmitbuf->pbuf + pbuf; - + if (rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe) == _FALSE) { RTW_INFO("%s coalesce failed \n",__FUNCTION__); rtw_free_xmitframe(pxmitpriv, pxmitframe); @@ -744,7 +744,7 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv // (len - TXDESC_SIZE) == pxmitframe->attrib.last_txcmdsz update_txdesc(pxmitframe, pxmitframe->buf_addr, pxmitframe->attrib.last_txcmdsz,_TRUE); - + // don't need xmitframe any more rtw_free_xmitframe(pxmitpriv, pxmitframe); @@ -754,9 +754,9 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv pfirstframe->agg_num++; -#ifdef CONFIG_TX_EARLY_MODE - pxmitpriv->agg_pkt[pfirstframe->agg_num-1].offset = _RND8(len); - pxmitpriv->agg_pkt[pfirstframe->agg_num-1].pkt_len = pxmitframe->attrib.last_txcmdsz; +#ifdef CONFIG_TX_EARLY_MODE + pxmitpriv->agg_pkt[pfirstframe->agg_num-1].offset = _RND8(len); + pxmitpriv->agg_pkt[pfirstframe->agg_num-1].pkt_len = pxmitframe->attrib.last_txcmdsz; #endif if (MAX_TX_AGG_PACKET_NUMBER == pfirstframe->agg_num) break; @@ -801,27 +801,25 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv #endif // CONFIG_USE_USB_BUFFER_ALLOC_TX update_txdesc(pfirstframe, pfirstframe->buf_addr, pfirstframe->attrib.last_txcmdsz,_TRUE); - + #ifdef CONFIG_TX_EARLY_MODE //prepare EM info for first frame, agg_num value start from 1 pxmitpriv->agg_pkt[0].offset = _RND8(pfirstframe->attrib.last_txcmdsz +TXDESC_SIZE +(pfirstframe->pkt_offset*PACKET_OFFSET_SZ)); - pxmitpriv->agg_pkt[0].pkt_len = pfirstframe->attrib.last_txcmdsz;//get from rtw_xmitframe_coalesce + pxmitpriv->agg_pkt[0].pkt_len = pfirstframe->attrib.last_txcmdsz;//get from rtw_xmitframe_coalesce UpdateEarlyModeInfo8812(pxmitpriv,pxmitbuf ); #endif - + //3 4. write xmit buffer to USB FIFO ff_hwaddr = rtw_get_ff_hwaddr(pfirstframe); //RTW_INFO("%s ===================================== write port,buf_size(%d) \n",__FUNCTION__,pbuf_tail); // xmit address == ((xmit_frame*)pxmitbuf->priv_data)->buf_addr rtw_write_port(padapter, ff_hwaddr, pbuf_tail, (u8*)pxmitbuf); - //3 5. update statisitc pbuf_tail -= (pfirstframe->agg_num * TXDESC_SIZE); pbuf_tail -= (pfirstframe->pkt_offset * PACKET_OFFSET_SZ); - - + rtw_count_tx_stats(padapter, pfirstframe, pbuf_tail); rtw_free_xmitframe(pxmitpriv, pfirstframe); @@ -832,11 +830,11 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv #else //CONFIG_USB_TX_AGGREGATION s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf) -{ +{ struct hw_xmit *phwxmits; sint hwentry; - struct xmit_frame *pxmitframe=NULL; + struct xmit_frame *pxmitframe=NULL; int res=_SUCCESS, xcnt = 0; phwxmits = pxmitpriv->hwxmits; @@ -846,70 +844,65 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv if(pxmitbuf==NULL) { - pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv); + pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv); if(!pxmitbuf) { return _FALSE; - } - } - + } + } do - { + { pxmitframe = rtw_dequeue_xframe(pxmitpriv, phwxmits, hwentry); - + if(pxmitframe) { - pxmitframe->pxmitbuf = pxmitbuf; + pxmitframe->pxmitbuf = pxmitbuf; pxmitframe->buf_addr = pxmitbuf->pbuf; - pxmitbuf->priv_data = pxmitframe; + pxmitbuf->priv_data = pxmitframe; if((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) - { + { if(pxmitframe->attrib.priority<=15)//TID0~15 { res = rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe); - } + } //RTW_INFO("==> pxmitframe->attrib.priority:%d\n",pxmitframe->attrib.priority); rtw_os_xmit_complete(padapter, pxmitframe);//always return ndis_packet after rtw_xmitframe_coalesce } - RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("xmitframe_complete(): rtw_dump_xframe\n")); - if(res == _SUCCESS) { - rtw_dump_xframe(padapter, pxmitframe); + rtw_dump_xframe(padapter, pxmitframe); } else { rtw_free_xmitbuf(pxmitpriv, pxmitbuf); - rtw_free_xmitframe(pxmitpriv, pxmitframe); + rtw_free_xmitframe(pxmitpriv, pxmitframe); } - + xcnt++; - + } else - { + { rtw_free_xmitbuf(pxmitpriv, pxmitbuf); return _FALSE; } break; - + }while(0/*xcnt < (NR_XMITFRAME >> 3)*/); return _TRUE; - + } #endif - - static s32 xmitframe_direct(_adapter *padapter, struct xmit_frame *pxmitframe) { s32 res = _SUCCESS; @@ -1006,12 +999,12 @@ s32 rtl8814au_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmi { struct xmit_priv *pxmitpriv = &padapter->xmitpriv; s32 err; - - if ((err=rtw_xmitframe_enqueue(padapter, pxmitframe)) != _SUCCESS) + + if ((err=rtw_xmitframe_enqueue(padapter, pxmitframe)) != _SUCCESS) { rtw_free_xmitframe(pxmitpriv, pxmitframe); - pxmitpriv->tx_drop++; + pxmitpriv->tx_drop++; } else { @@ -1019,46 +1012,44 @@ s32 rtl8814au_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmi tasklet_hi_schedule(&pxmitpriv->xmit_tasklet); #endif } - + return err; - -} +} #ifdef CONFIG_HOSTAPD_MLME static void rtl8814au_hostap_mgnt_xmit_cb(struct urb *urb) -{ +{ #ifdef PLATFORM_LINUX struct sk_buff *skb = (struct sk_buff *)urb->context; //RTW_INFO("%s\n", __FUNCTION__); rtw_skb_free(skb); -#endif +#endif } s32 rtl8814au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) { #ifdef PLATFORM_LINUX u16 fc; - int rc, len, pipe; + int rc, len, pipe; unsigned int bmcst, tid, qsel; struct sk_buff *skb, *pxmit_skb; struct urb *urb; unsigned char *pxmitbuf; struct tx_desc *ptxdesc; struct rtw_ieee80211_hdr *tx_hdr; - struct hostapd_priv *phostapdpriv = padapter->phostapdpriv; + struct hostapd_priv *phostapdpriv = padapter->phostapdpriv; struct net_device *pnetdev = padapter->pnetdev; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); - struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter); + struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter); - //RTW_INFO("%s\n", __FUNCTION__); skb = pkt; - + len = skb->len; tx_hdr = (struct rtw_ieee80211_hdr *)(skb->data); fc = le16_to_cpu(tx_hdr->frame_ctl); @@ -1079,42 +1070,40 @@ s32 rtl8814au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) goto _exit; } - // ----- fill tx desc ----- - ptxdesc = (struct tx_desc *)pxmitbuf; + // ----- fill tx desc ----- + ptxdesc = (struct tx_desc *)pxmitbuf; _rtw_memset(ptxdesc, 0, sizeof(*ptxdesc)); - - //offset 0 - ptxdesc->txdw0 |= cpu_to_le32(len&0x0000ffff); + + //offset 0 + ptxdesc->txdw0 |= cpu_to_le32(len&0x0000ffff); ptxdesc->txdw0 |= cpu_to_le32(((TXDESC_SIZE+OFFSET_SZ)<txdw0 |= cpu_to_le32(OWN | FSG | LSG); - if(bmcst) + if(bmcst) { ptxdesc->txdw0 |= cpu_to_le32(BIT(24)); - } + } - //offset 4 + //offset 4 ptxdesc->txdw1 |= cpu_to_le32(0x00);//MAC_ID ptxdesc->txdw1 |= cpu_to_le32((0x12<txdw1 |= cpu_to_le32((0x06<< 16) & 0x000f0000);//b mode - //offset 8 + //offset 8 - //offset 12 + //offset 12 ptxdesc->txdw3 |= cpu_to_le32((le16_to_cpu(tx_hdr->seq_ctl)<<16)&0xffff0000); - //offset 16 + //offset 16 ptxdesc->txdw4 |= cpu_to_le32(BIT(8));//driver uses rate - - //offset 20 + //offset 20 //HW append seq ptxdesc->txdw4 |= cpu_to_le32(BIT(7)); // Hw set sequence number ptxdesc->txdw3 |= cpu_to_le32((8 <<28)); //set bit3 to 1. Suugested by TimChen. 2009.12.29. - rtl8188eu_cal_txdesc_chksum(ptxdesc); // ----- end of fill tx desc ----- @@ -1126,16 +1115,15 @@ s32 rtl8814au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) //RTW_INFO("mgnt_xmit, len=%x\n", pxmit_skb->len); - // ----- prepare urb for submit ----- - + //translate DMA FIFO addr to pipehandle //pipe = ffaddr2pipehdl(pdvobj, MGT_QUEUE_INX); pipe = usb_sndbulkpipe(pdvobj->pusbdev, pHalData->Queue2EPNum[(u8)MGT_QUEUE_INX]&0x0f); - + usb_fill_bulk_urb(urb, pdvobj->pusbdev, pipe, pxmit_skb->data, pxmit_skb->len, rtl8192cu_hostap_mgnt_xmit_cb, pxmit_skb); - + urb->transfer_flags |= URB_ZERO_PACKET; usb_anchor_urb(urb, &phostapdpriv->anchored); rc = usb_submit_urb(urb, GFP_ATOMIC); @@ -1145,9 +1133,8 @@ s32 rtl8814au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) } usb_free_urb(urb); - -_exit: - +_exit: + rtw_skb_free(skb); #endif @@ -1156,4 +1143,3 @@ s32 rtl8814au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) } #endif - From bb0321110a28910812001794fd20d81cfb115fbc Mon Sep 17 00:00:00 2001 From: evilphish Date: Sun, 19 Nov 2017 19:29:16 +0100 Subject: [PATCH 119/234] Fix compilation warnings about potentially uninitialized values --- os_dep/linux/ioctl_cfg80211.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 20eec9ae2..03d57cce8 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -4367,9 +4367,9 @@ static int cfg80211_rtw_get_channel(struct wiphy *wiphy, struct wireless_dev *wd _adapter *padapter= wiphy_to_adapter(wiphy); int channel; int control_freq; - int center_freq; + int center_freq=0; int center_freq2=0; - int width; + int width=0; int band; int bandWidth; int offset; From 449bbf60cd39393e30fce0aefe7e7672ea8040e7 Mon Sep 17 00:00:00 2001 From: evilphish Date: Sun, 19 Nov 2017 23:26:08 +0100 Subject: [PATCH 120/234] Fix if-else leading to premature disconnects --- os_dep/linux/ioctl_cfg80211.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 03d57cce8..3b9659436 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -750,10 +750,10 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter) } check_bss: - if (!rtw_cfg80211_check_bss(padapter)){ + if (!rtw_cfg80211_check_bss(padapter)) RTW_PRINT(FUNC_ADPT_FMT" BSS not found !!\n", FUNC_ADPT_ARG(padapter)); - }else if (rtw_to_roam(padapter) > 0) { + if (rtw_to_roam(padapter) > 0) { #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) || defined(COMPAT_KERNEL_RELEASE) struct wiphy *wiphy = pwdev->wiphy; struct ieee80211_channel *notify_channel; From c68fda1c11df0b94efb63c46c6802609ccf50cc5 Mon Sep 17 00:00:00 2001 From: Christian B Date: Tue, 21 Nov 2017 08:04:14 +0100 Subject: [PATCH 121/234] Nuke all hardcoded reg-domain nonsense --- include/rtw_wifi_regd.h | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/include/rtw_wifi_regd.h b/include/rtw_wifi_regd.h index 249a89427..69bd71d8c 100644 --- a/include/rtw_wifi_regd.h +++ b/include/rtw_wifi_regd.h @@ -7,18 +7,6 @@ #ifndef __RTW_WIFI_REGD_H__ #define __RTW_WIFI_REGD_H__ -struct country_code_to_enum_rd { - u16 countrycode; - const char *iso_name; -}; - -enum country_code_type_t { - COUNTRY_CODE_USER = 0, - - /*add new channel plan above this line */ - COUNTRY_CODE_MAX -}; - int rtw_regd_init(_adapter *padapter); void rtw_reg_notify_by_driver(_adapter *adapter); From cb1454b73814c6593b179da921ea65135d7a2bb6 Mon Sep 17 00:00:00 2001 From: Christian B Date: Tue, 21 Nov 2017 08:08:17 +0100 Subject: [PATCH 122/234] Nuke all hardcoded reg-domain nonsense --- os_dep/linux/wifi_regd.c | 508 +-------------------------------------- 1 file changed, 1 insertion(+), 507 deletions(-) diff --git a/os_dep/linux/wifi_regd.c b/os_dep/linux/wifi_regd.c index b2c605252..7e9d39a1c 100644 --- a/os_dep/linux/wifi_regd.c +++ b/os_dep/linux/wifi_regd.c @@ -10,519 +10,13 @@ #include -static struct country_code_to_enum_rd allCountries[] = { - {COUNTRY_CODE_USER, "RD"}, -}; - -/* - * REG_RULE(freq start, freq end, bandwidth, max gain, eirp, reg_flags) - */ - -/* - *Only these channels all allow active - *scan on all world regulatory domains - */ - -/* 2G chan 01 - chan 11 */ -#define RTW_2GHZ_CH01_11 \ - REG_RULE(2412-10, 2462+10, 40, 0, 20, 0) - -/* - *We enable active scan on these a case - *by case basis by regulatory domain - */ - -/* 2G chan 12 - chan 13, PASSIV SCAN */ -#define RTW_2GHZ_CH12_13 \ - REG_RULE(2467-10, 2472+10, 40, 0, 20, \ - NL80211_RRF_PASSIVE_SCAN) - -/* 2G chan 14, PASSIVS SCAN, NO OFDM (B only) */ -#define RTW_2GHZ_CH14 \ - REG_RULE(2484-10, 2484+10, 40, 0, 20, \ - NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_OFDM) - -/* 5G chan 36 - chan 64 */ -#define RTW_5GHZ_5150_5350 \ - REG_RULE(5150-10, 5350+10, 80, 0, 30, \ - NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) - -/* 5G chan 100 - chan 165 */ -#define RTW_5GHZ_5470_5850 \ - REG_RULE(5470-10, 5850+10, 80, 0, 30, \ - NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) - -/* 5G chan 149 - chan 165 */ -#define RTW_5GHZ_5725_5850 \ - REG_RULE(5725-10, 5850+10, 80, 0, 30, \ - NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) - -/* 5G chan 36 - chan 165 */ -#define RTW_5GHZ_5150_5850 \ - REG_RULE(5150-10, 5850+10, 80, 0, 30, \ - NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) - -static const struct ieee80211_regdomain rtw_regdom_rd = { - .n_reg_rules = 4, - .alpha2 = "99", - .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_2GHZ_CH12_13, - RTW_2GHZ_CH14, - RTW_5GHZ_5150_5850, - } -}; -#if 0 -static const struct ieee80211_regdomain rtw_regdom_11 = { - .n_reg_rules = 1, - .alpha2 = "99", - .reg_rules = { - RTW_2GHZ_CH01_11, - } -}; - -static const struct ieee80211_regdomain rtw_regdom_12_13 = { - .n_reg_rules = 2, - .alpha2 = "99", - .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_2GHZ_CH12_13, - } -}; - -static const struct ieee80211_regdomain rtw_regdom_no_midband = { - .n_reg_rules = 3, - .alpha2 = "99", - .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_5GHZ_5150_5350, - RTW_5GHZ_5725_5850, - } -}; - -static const struct ieee80211_regdomain rtw_regdom_60_64 = { - .n_reg_rules = 3, - .alpha2 = "99", - .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_2GHZ_CH12_13, - RTW_5GHZ_5725_5850, - } -}; - -static const struct ieee80211_regdomain rtw_regdom_14_60_64 = { - .n_reg_rules = 4, - .alpha2 = "99", - .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_2GHZ_CH12_13, - RTW_2GHZ_CH14, - RTW_5GHZ_5725_5850, - } -}; - -static const struct ieee80211_regdomain rtw_regdom_14 = { - .n_reg_rules = 3, - .alpha2 = "99", - .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_2GHZ_CH12_13, - RTW_2GHZ_CH14, - } -}; -#endif -#if 0 -static struct rtw_regulatory *rtw_regd; -#endif - -static bool _rtw_is_radar_freq(u16 center_freq) -{ - return center_freq >= 5260 && center_freq <= 5700; -} - -#if 0 /* not_yet */ -static void _rtw_reg_apply_beaconing_flags(struct wiphy *wiphy, - enum nl80211_reg_initiator initiator) -{ - enum ieee80211_band band; - struct ieee80211_supported_band *sband; - const struct ieee80211_reg_rule *reg_rule; - struct ieee80211_channel *ch; - unsigned int i; - u32 bandwidth = 0; - int r; - - for (band = 0; band < IEEE80211_NUM_BANDS; band++) { - - if (!wiphy->bands[band]) - continue; - - sband = wiphy->bands[band]; - - for (i = 0; i < sband->n_channels; i++) { - ch = &sband->channels[i]; - if (_rtw_is_radar_freq(ch->center_freq) || - (ch->flags & IEEE80211_CHAN_RADAR)) - continue; - if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) { - r = freq_reg_info(wiphy, ch->center_freq, - bandwidth, ®_rule); - if (r) - continue; - - /* - *If 11d had a rule for this channel ensure - *we enable adhoc/beaconing if it allows us to - *use it. Note that we would have disabled it - *by applying our static world regdomain by - *default during init, prior to calling our - *regulatory_hint(). - */ - - if (!(reg_rule->flags & NL80211_RRF_NO_IBSS)) - ch->flags &= ~IEEE80211_CHAN_NO_IBSS; - if (! - (reg_rule->flags & - NL80211_RRF_PASSIVE_SCAN)) - ch->flags &= - ~IEEE80211_CHAN_PASSIVE_SCAN; - } else { - if (ch->beacon_found) - ch->flags &= ~(IEEE80211_CHAN_NO_IBSS | - IEEE80211_CHAN_PASSIVE_SCAN); - } - } - } -} - -/* Allows active scan scan on Ch 12 and 13 */ -static void _rtw_reg_apply_active_scan_flags(struct wiphy *wiphy, - enum nl80211_reg_initiator - initiator) -{ - struct ieee80211_supported_band *sband; - struct ieee80211_channel *ch; - const struct ieee80211_reg_rule *reg_rule; - u32 bandwidth = 0; - int r; - - if (!wiphy->bands[IEEE80211_BAND_2GHZ]) - return; - sband = wiphy->bands[IEEE80211_BAND_2GHZ]; - - /* - * If no country IE has been received always enable active scan - * on these channels. This is only done for specific regulatory SKUs - */ - if (initiator != NL80211_REGDOM_SET_BY_COUNTRY_IE) { - ch = &sband->channels[11]; /* CH 12 */ - if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) - ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; - ch = &sband->channels[12]; /* CH 13 */ - if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) - ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; - return; - } - - /* - * If a country IE has been received check its rule for this - * channel first before enabling active scan. The passive scan - * would have been enforced by the initial processing of our - * custom regulatory domain. - */ - - ch = &sband->channels[11]; /* CH 12 */ - r = freq_reg_info(wiphy, ch->center_freq, bandwidth, ®_rule); - if (!r) { - if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN)) - if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) - ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; - } - - ch = &sband->channels[12]; /* CH 13 */ - r = freq_reg_info(wiphy, ch->center_freq, bandwidth, ®_rule); - if (!r) { - if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN)) - if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) - ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; - } -} -#endif - -/* - * Always apply Radar/DFS rules on - * freq range 5260 MHz - 5700 MHz - */ -static void _rtw_reg_apply_radar_flags(struct wiphy *wiphy) -{ - struct ieee80211_supported_band *sband; - struct ieee80211_channel *ch; - unsigned int i; - - if (!wiphy->bands[IEEE80211_BAND_5GHZ]) - return; - - sband = wiphy->bands[IEEE80211_BAND_5GHZ]; - - for (i = 0; i < sband->n_channels; i++) { - ch = &sband->channels[i]; - if (!_rtw_is_radar_freq(ch->center_freq)) - continue; -#ifdef CONFIG_DFS - #if !defined(CONFIG_DFS_MASTER) - if (!(ch->flags & IEEE80211_CHAN_DISABLED)) { - ch->flags |= IEEE80211_CHAN_RADAR; - #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0)) - ch->flags |= (IEEE80211_CHAN_NO_IBSS | IEEE80211_CHAN_PASSIVE_SCAN); - #else - ch->flags |= IEEE80211_CHAN_NO_IR; - #endif - } - #endif -#endif /* CONFIG_DFS */ - -#if 0 - /* - * We always enable radar detection/DFS on this - * frequency range. Additionally we also apply on - * this frequency range: - * - If STA mode does not yet have DFS supports disable - * active scanning - * - If adhoc mode does not support DFS yet then disable - * adhoc in the frequency. - * - If AP mode does not yet support radar detection/DFS - * do not allow AP mode - */ - if (!(ch->flags & IEEE80211_CHAN_DISABLED)) - ch->flags |= IEEE80211_CHAN_RADAR | - IEEE80211_CHAN_NO_IBSS | - IEEE80211_CHAN_PASSIVE_SCAN; -#endif - } -} - -static void _rtw_reg_apply_flags(struct wiphy *wiphy) -{ -#if 1 /* by channel plan */ - _adapter *padapter = wiphy_to_adapter(wiphy); - - struct ieee80211_supported_band *sband; - struct ieee80211_channel *ch; - unsigned int i, j; - u16 channel; - - /* all channels disable */ - for (i = 0; i < IEEE80211_NUM_BANDS; i++) { - sband = wiphy->bands[i]; - - if (sband) { - for (j = 0; j < sband->n_channels; j++) { - ch = &sband->channels[j]; - - if (ch) - ch->flags &= ~(IEEE80211_CHAN_DISABLED|IEEE80211_CHAN_NO_HT40PLUS| - IEEE80211_CHAN_NO_HT40MINUS|IEEE80211_CHAN_NO_80MHZ| - IEEE80211_CHAN_NO_160MHZ| -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)) - IEEE80211_CHAN_NO_IBSS|IEEE80211_CHAN_PASSIVE_SCAN); -#else - IEEE80211_CHAN_NO_IR); -#endif - } - } - } - -#else - struct ieee80211_supported_band *sband; - struct ieee80211_channel *ch; - unsigned int i, j; - u16 channels[37] = { - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, - 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, - 149, 153, - 157, 161, 165 - }; - u16 channel; - u32 freq; - - for (i = 0; i < IEEE80211_NUM_BANDS; i++) { - sband = wiphy->bands[i]; - - if (sband) - for (j = 0; j < sband->n_channels; j++) { - ch = &sband->channels[j]; - - if (ch) - ch->flags = IEEE80211_CHAN_DISABLED; - } - } - - for (i = 0; i < 37; i++) { - channel = channels[i]; - freq = rtw_ch2freq(channel); - - ch = ieee80211_get_channel(wiphy, freq); - if (ch) { - if (channel <= 11) - ch->flags = 0; - else - ch->flags = 0; /* IEEE80211_CHAN_PASSIVE_SCAN; */ - } - /* printk("%s: freq %d(%d) flag 0x%02X\n", __func__, freq, channel, ch->flags); */ - } -#endif -} - -static void _rtw_reg_apply_world_flags(struct wiphy *wiphy, - enum nl80211_reg_initiator initiator, - struct rtw_regulatory *reg) -{ - /* _rtw_reg_apply_beaconing_flags(wiphy, initiator); */ - /* _rtw_reg_apply_active_scan_flags(wiphy, initiator); */ - return; -} - -static int _rtw_reg_notifier_apply(struct wiphy *wiphy, - struct regulatory_request *request, - struct rtw_regulatory *reg) -{ - - /* Hard code flags */ - _rtw_reg_apply_flags(wiphy); - - /* We always apply this */ - _rtw_reg_apply_radar_flags(wiphy); - - switch (request->initiator) { - case NL80211_REGDOM_SET_BY_DRIVER: - RTW_INFO("%s: %s\n", __func__, "NL80211_REGDOM_SET_BY_DRIVER"); - _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, - reg); - break; - case NL80211_REGDOM_SET_BY_CORE: - RTW_INFO("%s: %s\n", __func__, - "NL80211_REGDOM_SET_BY_CORE to DRV"); - _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, - reg); - break; - case NL80211_REGDOM_SET_BY_USER: - RTW_INFO("%s: %s\n", __func__, - "NL80211_REGDOM_SET_BY_USER to DRV"); - _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, - reg); - break; - case NL80211_REGDOM_SET_BY_COUNTRY_IE: - RTW_INFO("%s: %s\n", __func__, - "NL80211_REGDOM_SET_BY_COUNTRY_IE"); - _rtw_reg_apply_world_flags(wiphy, request->initiator, reg); - break; - } - - return 0; -} - -static const struct ieee80211_regdomain *_rtw_regdomain_select(struct - rtw_regulatory - *reg) -{ -#if 0 - switch (reg->country_code) { - case COUNTRY_CODE_USER: - default: - return &rtw_regdom_rd; - } -#else - return &rtw_regdom_rd; -#endif -} - -void _rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) -{ - struct rtw_regulatory *reg = NULL; - - RTW_INFO("%s\n", __func__); - - _rtw_reg_notifier_apply(wiphy, request, reg); -} - -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)) -int rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) -#else -void rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) -#endif -{ - _rtw_reg_notifier(wiphy, request); -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)) - return 0; -#endif -} - void rtw_reg_notify_by_driver(_adapter *adapter) { - if ((adapter->rtw_wdev != NULL) && (adapter->rtw_wdev->wiphy)) { - struct regulatory_request request; - request.initiator = NL80211_REGDOM_SET_BY_DRIVER; - rtw_reg_notifier(adapter->rtw_wdev->wiphy, &request); - } -} - -static void _rtw_regd_init_wiphy(struct rtw_regulatory *reg, struct wiphy *wiphy) -{ - const struct ieee80211_regdomain *regd; - - wiphy->reg_notifier = rtw_reg_notifier; - -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0)) - wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY; - wiphy->flags &= ~WIPHY_FLAG_STRICT_REGULATORY; - wiphy->flags &= ~WIPHY_FLAG_DISABLE_BEACON_HINTS; -#else - wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG; - wiphy->regulatory_flags &= ~REGULATORY_STRICT_REG; - wiphy->regulatory_flags &= ~REGULATORY_DISABLE_BEACON_HINTS; -#endif - - regd = _rtw_regdomain_select(reg); - wiphy_apply_custom_regulatory(wiphy, regd); - - /* Hard code flags */ - _rtw_reg_apply_flags(wiphy); - _rtw_reg_apply_radar_flags(wiphy); - _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, reg); -} - -static struct country_code_to_enum_rd *_rtw_regd_find_country(u16 countrycode) -{ - int i; - - for (i = 0; i < ARRAY_SIZE(allCountries); i++) { - if (allCountries[i].countrycode == countrycode) - return &allCountries[i]; - } - return NULL; + return 0; } int rtw_regd_init(_adapter *padapter) { - struct wiphy *wiphy = padapter->rtw_wdev->wiphy; - -#if 0 - if (rtw_regd == NULL) { - rtw_regd = (struct rtw_regulatory *) - rtw_malloc(sizeof(struct rtw_regulatory)); - - rtw_regd->alpha2[0] = '9'; - rtw_regd->alpha2[1] = '9'; - - rtw_regd->country_code = COUNTRY_CODE_USER; - } - - RTW_INFO("%s: Country alpha2 being used: %c%c\n", - __func__, rtw_regd->alpha2[0], rtw_regd->alpha2[1]); -#endif - - _rtw_regd_init_wiphy(NULL, wiphy); - return 0; } #endif /* CONFIG_IOCTL_CFG80211 */ From 5816ab703891b39e79fd21e77be7392ced83570f Mon Sep 17 00:00:00 2001 From: Christian B Date: Tue, 21 Nov 2017 08:11:23 +0100 Subject: [PATCH 123/234] Enable logging for power limits --- hal/hal_com_phycfg.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/hal/hal_com_phycfg.c b/hal/hal_com_phycfg.c index dc28867a6..9b448d2ba 100644 --- a/hal/hal_com_phycfg.c +++ b/hal/hal_com_phycfg.c @@ -3491,9 +3491,8 @@ PHY_SetTxPowerLimit( if (powerLimit < prevPowerLimit) pHalData->TxPwrLimit_2_4G[regulation][bandwidth][rateSection][channelIndex][RF_PATH_A] = powerLimit; - if (0) - RTW_INFO("2.4G Band value : [regulation %d][bw %d][rate_section %d][chnl %d][val %d]\n" - , regulation, bandwidth, rateSection, channelIndex, pHalData->TxPwrLimit_2_4G[regulation][bandwidth][rateSection][channelIndex][ODM_RF_PATH_A]); + RTW_INFO("2.4G Band value : [regulation %d][bw %d][rate_section %d][chnl %d][val %d]\n" + , regulation, bandwidth, rateSection, channelIndex, pHalData->TxPwrLimit_2_4G[regulation][bandwidth][rateSection][channelIndex][ODM_RF_PATH_A]); } else if (eqNByte(Band, (u8 *)("5G"), 2)) { channelIndex = phy_GetChannelIndexOfTxPowerLimit(BAND_ON_5G, channel); @@ -3512,9 +3511,8 @@ PHY_SetTxPowerLimit( if (powerLimit < prevPowerLimit) pHalData->TxPwrLimit_5G[regulation][bandwidth][rateSection][channelIndex][RF_PATH_A] = powerLimit; - if (0) - RTW_INFO("5G Band value : [regulation %d][bw %d][rate_section %d][chnl %d][val %d]\n" - , regulation, bandwidth, rateSection, channel, pHalData->TxPwrLimit_5G[regulation][bandwidth][rateSection][channelIndex][RF_PATH_A]); + RTW_INFO("5G Band value : [regulation %d][bw %d][rate_section %d][chnl %d][val %d]\n" + , regulation, bandwidth, rateSection, channel, pHalData->TxPwrLimit_5G[regulation][bandwidth][rateSection][channelIndex][RF_PATH_A]); } else { RTW_PRINT("Cannot recognize the band info in %s\n", Band); return; From 590c7a9cc1d14a036cba486c23adb32be2653667 Mon Sep 17 00:00:00 2001 From: Christian B Date: Tue, 21 Nov 2017 08:15:49 +0100 Subject: [PATCH 124/234] Enabled more DEBUG --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 2017cabb9..a3e987f04 100755 --- a/Makefile +++ b/Makefile @@ -14,8 +14,8 @@ EXTRA_CFLAGS += -Wno-unused-parameter EXTRA_CFLAGS += -Wno-unused-function EXTRA_CFLAGS += -Wno-unused EXTRA_CFLAGS += -Wno-date-time -#EXTRA_CFLAGS += -Wno-misleading-indentation -#EXTRA_CFLAGS += -Wno-uninitialized +EXTRA_CFLAGS += -Wno-misleading-indentation +EXTRA_CFLAGS += -Wno-uninitialized GCC_VER_49 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.9 | bc ) ifeq ($(GCC_VER_49),1) From b23f2d68d667f411fdde1b4fdc82ce8a313f76bf Mon Sep 17 00:00:00 2001 From: Christian B Date: Tue, 5 Dec 2017 09:59:57 +0100 Subject: [PATCH 125/234] Enabled CONFIG_RTW_ADAPTIVITY_EN * Set CONFIG_RTW_ADAPTIVITY_EN to AUTO --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index a3e987f04..8628e38b3 100755 --- a/Makefile +++ b/Makefile @@ -62,7 +62,7 @@ CONFIG_TRAFFIC_PROTECT = y CONFIG_LOAD_PHY_PARA_FROM_FILE = y CONFIG_CALIBRATE_TX_POWER_BY_REGULATORY = n CONFIG_CALIBRATE_TX_POWER_TO_MAX = y -CONFIG_RTW_ADAPTIVITY_EN = disable +CONFIG_RTW_ADAPTIVITY_EN = auto CONFIG_RTW_ADAPTIVITY_MODE = normal CONFIG_SIGNAL_SCALE_MAPPING = n CONFIG_80211W = y From bcb576c54a806f5e832a03b54a0e0145b65664fc Mon Sep 17 00:00:00 2001 From: Christian B Date: Tue, 5 Dec 2017 10:03:37 +0100 Subject: [PATCH 126/234] Update Makefile * Minor spacing cleanup --- Makefile | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Makefile b/Makefile index 8628e38b3..6fac1e5fa 100755 --- a/Makefile +++ b/Makefile @@ -895,7 +895,6 @@ ifeq ($(CONFIG_WAPI_SUPPORT), y) EXTRA_CFLAGS += -DCONFIG_WAPI_SUPPORT endif - ifeq ($(CONFIG_EFUSE_CONFIG_FILE), y) EXTRA_CFLAGS += -DCONFIG_EFUSE_CONFIG_FILE @@ -1078,7 +1077,6 @@ KSRC := $(KERNEL_BUILD_PATH) MODULE_NAME :=wlan endif - ifeq ($(CONFIG_PLATFORM_ACTIONS_ATM705X), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN #EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC @@ -1291,8 +1289,6 @@ CROSS_COMPILE := /home/share/CusEnv/FreeScale/arm-eabi-4.4.3/bin/arm-eabi- KSRC ?= /home/share/CusEnv/FreeScale/FS_kernel_env endif - - ifeq ($(CONFIG_PLATFORM_ACTIONS_ATJ227X), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ACTIONS_ATJ227X ARCH := mips @@ -1457,7 +1453,6 @@ KSRC := /home/winuser/work/Plat_sLD2T_V3010/usr/src/linux-2.6.32.2 INSTALL_PREFIX := endif - ifeq ($(CONFIG_PLATFORM_ARM_SUNxI), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUNxI @@ -1807,7 +1802,6 @@ ifeq ($(CONFIG_PCI_HCI), y) MODULE_NAME := rtw_pci endif - endif USER_MODULE_NAME ?= @@ -1851,7 +1845,6 @@ endif $(MODULE_NAME)-y += $(rtk_core) - $(MODULE_NAME)-$(CONFIG_WAPI_SUPPORT) += core/rtw_wapi.o \ core/rtw_wapi_sms4.o @@ -1892,7 +1885,6 @@ config_r: @echo "make config" /bin/bash script/Configure script/config.in - .PHONY: modules clean clean: @@ -1910,4 +1902,3 @@ clean: rm -fr *.mod.c *.mod *.o .*.cmd *.ko *~ rm -fr .tmp_versions endif - From 993bbf5b81f09b95668ec90617025b68fa28dbed Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 10:28:42 +0100 Subject: [PATCH 127/234] dump_drv_version(): do not print build date. * Removed: __DATE__ and __TIME__ are prohibited since v3.14-rc1. --- core/rtw_debug.c | 1 - 1 file changed, 1 deletion(-) diff --git a/core/rtw_debug.c b/core/rtw_debug.c index f32ba0b74..166f6caee 100644 --- a/core/rtw_debug.c +++ b/core/rtw_debug.c @@ -47,7 +47,6 @@ const char *rtw_log_level_str[] = { void dump_drv_version(void *sel) { RTW_PRINT_SEL(sel, "%s %s\n", DRV_NAME, DRIVERVERSION); - RTW_PRINT_SEL(sel, "build time: %s %s\n", __DATE__, __TIME__); } void dump_drv_cfg(void *sel) From 083a5592e02f6506ab0703ef5a51c262c14143a3 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 10:30:04 +0100 Subject: [PATCH 128/234] Update README.md * Removed "TODO" tab, as we're aware of the problems/issues on the drivers and it's better to use issue reports rather than updating the README.md all the time. --- README.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/README.md b/README.md index 60c3e70ad..e20a4129d 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,6 @@ # RTL8812AU/21AU and RTL8814AU drivers # with monitor mode and frame injection -## TODO -These are the problems that needs attention, any help would be appreciated. -``` -* "Associate", "Disassocate" & "Deauthenticate" support is missing. - These should be added in order to get some functions working, like "deauth" attacks. - Check issue report @ https://github.com/aircrack-ng/rtl8812au/issues/35 - -* txpower control has been added, but some issues remain. - Check issue reports for more information. - -* RadioTap FCS flag is set, but frame does not contain FCS. - Check issue report @ https://github.com/aircrack-ng/rtl8812au/issues/28 - -``` ## DKMS This driver can be installed using [DKMS]. This is a system which will automatically recompile and install a kernel module when a new kernel gets installed or updated. To make use of DKMS, install the `dkms` package, which on Debian (based) systems is done like this: ``` From fe041fa1add6ebc68a388618b96fabf2a5851cb0 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 14:34:02 +0100 Subject: [PATCH 129/234] More USB VID/PID * Added 1 more ASUS USB VID/PID * Removed some spaces --- os_dep/linux/usb_intf.c | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index 752043a9f..6ed4e72ce 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -42,12 +42,10 @@ extern int rtw_ampdu_enable;/* for enable tx_ampdu */ int ui_pid[3] = {0, 0, 0}; #endif - extern int pm_netdev_open(struct net_device *pnetdev, u8 bnormal); static int rtw_suspend(struct usb_interface *intf, pm_message_t message); static int rtw_resume(struct usb_interface *intf); - static int rtw_drv_init(struct usb_interface *pusb_intf, const struct usb_device_id *pdid); static void rtw_dev_remove(struct usb_interface *pusb_intf); @@ -85,13 +83,11 @@ static void rtw_dev_shutdown(struct device *dev) #define USB_DEVICE_ID_MATCH_INT_PROTOCOL 0x0200 #define USB_DEVICE_ID_MATCH_INT_NUMBER 0x0400 - #define USB_DEVICE_ID_MATCH_INT_INFO \ (USB_DEVICE_ID_MATCH_INT_CLASS | \ USB_DEVICE_ID_MATCH_INT_SUBCLASS | \ USB_DEVICE_ID_MATCH_INT_PROTOCOL) - #define USB_DEVICE_AND_INTERFACE_INFO(vend, prod, cl, sc, pr) \ .match_flags = USB_DEVICE_ID_MATCH_INT_INFO \ | USB_DEVICE_ID_MATCH_DEVICE, \ @@ -125,10 +121,8 @@ static void rtw_dev_shutdown(struct device *dev) /* ----------------------------------------------------------------------- */ #endif - #define USB_VENDER_ID_REALTEK 0x0BDA - /* DID_USB_v916_20130116 */ static struct usb_device_id rtw_usb_id_tbl[] = { #ifdef CONFIG_RTL8188E @@ -227,6 +221,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8813), .driver_info = RTL8814A}, {USB_DEVICE(0x2001, 0x331A), .driver_info = RTL8814A}, /* D-Link - D-Link */ {USB_DEVICE(0x0B05, 0x1817), .driver_info = RTL8814A}, /* ASUS - ASUSTeK */ + {USB_DEVICE(0x0B05, 0x1852), .driver_info = RTL8814A}, /* ASUS - ASUSTeK */ {USB_DEVICE(0x056E, 0x400B), .driver_info = RTL8814A}, /* ELECOM - ELECOM */ {USB_DEVICE(0x056E, 0x400D), .driver_info = RTL8814A}, /* ELECOM - ELECOM */ {USB_DEVICE(0x7392, 0xA834), .driver_info = RTL8814A}, /* Edimax - Edimax */ @@ -355,7 +350,6 @@ static u8 rtw_init_intf_priv(struct dvobj_priv *dvobj) _rtw_mutex_init(&dvobj->usb_vendor_req_mutex); #endif - #ifdef CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC dvobj->usb_alloc_vendor_req_buf = rtw_zmalloc(MAX_USB_IO_CTL_SIZE); if (dvobj->usb_alloc_vendor_req_buf == NULL) { @@ -457,13 +451,10 @@ static struct dvobj_priv *usb_dvobj_init(struct usb_interface *usb_intf, const s struct usb_endpoint_descriptor *pendp_desc; struct usb_device *pusbd; - - pdvobjpriv = devobj_init(); if (pdvobjpriv == NULL) goto exit; - pdvobjpriv->pusbintf = usb_intf ; pusbd = pdvobjpriv->pusbdev = interface_to_usbdev(usb_intf); usb_set_intfdata(usb_intf, pdvobjpriv); @@ -721,7 +712,6 @@ u8 rtw_set_hal_ops(_adapter *padapter) rtl8723du_set_hal_ops(padapter); #endif /* CONFIG_RTL8723D */ - #ifdef CONFIG_RTL8821C if (rtw_get_chip_type(padapter) == RTL8821C) { if (rtl8821cu_set_hal_ops(padapter) == _FAIL) @@ -903,7 +893,6 @@ int rtw_hw_resume(_adapter *padapter) pwrpriv->bips_processing = _FALSE; _exit_pwrlock(&pwrpriv->lock); - return 0; error_exit: RTW_INFO("%s, Open net dev failed\n", __FUNCTION__); @@ -919,7 +908,6 @@ static int rtw_suspend(struct usb_interface *pusb_intf, pm_message_t message) PADAPTER padapter; int ret = 0; - dvobj = usb_get_intfdata(pusb_intf); pwrpriv = dvobj_to_pwrctl(dvobj); pdbgpriv = &dvobj->drv_dbg; @@ -959,7 +947,6 @@ int rtw_resume_process(_adapter *padapter) struct dvobj_priv *pdvobj = padapter->dvobj; struct debug_priv *pdbgpriv = &pdvobj->drv_dbg; - if (pwrpriv->bInSuspend == _FALSE) { pdbgpriv->dbg_resume_error_cnt++; RTW_INFO("%s bInSuspend = %d\n", __FUNCTION__, pwrpriv->bInSuspend); @@ -1019,7 +1006,6 @@ int rtw_resume_process(_adapter *padapter) } #endif/* CONFIG_AUTOSUSPEND */ - return ret; } @@ -1032,7 +1018,6 @@ static int rtw_resume(struct usb_interface *pusb_intf) struct mlme_ext_priv *pmlmeext; int ret = 0; - dvobj = usb_get_intfdata(pusb_intf); pwrpriv = dvobj_to_pwrctl(dvobj); pdbgpriv = &dvobj->drv_dbg; @@ -1071,8 +1056,6 @@ static int rtw_resume(struct usb_interface *pusb_intf) return ret; } - - #ifdef CONFIG_AUTOSUSPEND void autosuspend_enter(_adapter *padapter) { @@ -1218,7 +1201,6 @@ _adapter *rtw_usb_primary_adapter_init(struct dvobj_priv *dvobj, padapter->dvobj = dvobj; - rtw_set_drv_stopped(padapter);/*init*/ dvobj->padapters[dvobj->iface_nums++] = padapter; @@ -1241,7 +1223,6 @@ _adapter *rtw_usb_primary_adapter_init(struct dvobj_priv *dvobj, if (rtw_set_hal_ops(padapter) == _FAIL) goto free_hal_data; - padapter->intf_start = &usb_intf_start; padapter->intf_stop = &usb_intf_stop; @@ -1465,7 +1446,6 @@ static int rtw_drv_init(struct usb_interface *pusb_intf, const struct usb_device rtd2885_wlan_netlink_sendMsg("linkup", "8712"); #endif - status = _SUCCESS; #if 0 /* not used now */ @@ -1504,7 +1484,6 @@ static void rtw_dev_remove(struct usb_interface *pusb_intf) struct net_device *pnetdev = padapter->pnetdev; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; - RTW_INFO("+rtw_dev_remove\n"); dvobj->processing_dev_remove = _TRUE; @@ -1557,12 +1536,10 @@ static void rtw_dev_remove(struct usb_interface *pusb_intf) RTW_INFO("-r871xu_dev_remove, done\n"); - #ifdef CONFIG_INTEL_PROXIM rtw_sw_export = NULL; #endif - return; } @@ -1629,7 +1606,6 @@ static void __exit rtw_drv_halt(void) rtw_mstat_dump(RTW_DBGDUMP); } - module_init(rtw_drv_entry); module_exit(rtw_drv_halt); From cd799f88d9cffde6133bbd642bbf072d01d6b674 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 14:54:03 +0100 Subject: [PATCH 130/234] Update dkms.conf * Updated release date --- dkms.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dkms.conf b/dkms.conf index b67a286d1..acadace01 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.1.5~20171022" +PACKAGE_VERSION="5.1.5~20171206" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" From 83be6040e4c0f3d535010e30cf3e1f2a18d50cfc Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 15:11:41 +0100 Subject: [PATCH 131/234] Fix API change in kernel v4.15 * In this kernel, the timer setup and handlers changed quite a bit. (fix by lwfinger) --- core/rtw_mlme.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/core/rtw_mlme.c b/core/rtw_mlme.c index 4cb54dba8..59547909e 100644 --- a/core/rtw_mlme.c +++ b/core/rtw_mlme.c @@ -1228,7 +1228,11 @@ void rtw_surveydone_event_callback(_adapter *adapter, u8 *pbuf) _enter_critical_bh(&pmlmepriv->lock, &irqL); #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + _set_timer(&adapter->recvpriv.signal_stat_timer, adapter->recvpriv.signal_stat_sampling_interval); +#else rtw_set_signal_stat_timer(&adapter->recvpriv); +#endif #endif if (pmlmepriv->to_join == _TRUE) { @@ -1825,7 +1829,11 @@ static void rtw_joinbss_update_network(_adapter *padapter, struct wlan_network * #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + _set_timer(&padapter->recvpriv.signal_stat_timer, padapter->recvpriv.signal_stat_sampling_interval); +#else rtw_set_signal_stat_timer(&padapter->recvpriv); +#endif #endif padapter->recvpriv.signal_strength = ptarget_wlan->network.PhyInfo.SignalStrength; padapter->recvpriv.signal_qual = ptarget_wlan->network.PhyInfo.SignalQuality; @@ -1841,7 +1849,11 @@ static void rtw_joinbss_update_network(_adapter *padapter, struct wlan_network * ); #endif #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + _set_timer(&padapter->recvpriv.signal_stat_timer, padapter->recvpriv.signal_stat_sampling_interval); +#else rtw_set_signal_stat_timer(&padapter->recvpriv); +#endif #endif /* update fw_state */ /* will clr _FW_UNDER_LINKING here indirectly */ From ef4483b2e4414458c7666551abd553d1a3f0911d Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 15:29:24 +0100 Subject: [PATCH 132/234] Fix API change in kernel v4.15 In this kernel, the timer setup and handlers changed quite a bit. (fix by lwfinger) --- core/rtw_p2p.c | 78 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 69 insertions(+), 9 deletions(-) diff --git a/core/rtw_p2p.c b/core/rtw_p2p.c index 2d36a20cc..7b6bd4f9b 100644 --- a/core/rtw_p2p.c +++ b/core/rtw_p2p.c @@ -3269,9 +3269,17 @@ static void ro_ch_handler(_adapter *padapter) } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +static void ro_ch_timer_process(struct timer_list *t) +#else static void ro_ch_timer_process(void *FunctionContext) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + _adapter *adapter = from_timer(adapter, t, cfg80211_wdinfo.remain_on_ch_timer); +#else _adapter *adapter = (_adapter *)FunctionContext; +#endif struct rtw_wdev_priv *pwdev_priv = adapter_wdev_data(adapter); /* printk("%s\n", __FUNCTION__); */ @@ -4066,7 +4074,11 @@ void rtw_init_cfg80211_wifidirect_info(_adapter *padapter) _rtw_memset(pcfg80211_wdinfo, 0x00, sizeof(struct cfg80211_wifidirect_info)); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + timer_setup(&pcfg80211_wdinfo->remain_on_ch_timer, ro_ch_timer_process, 0); +#else _init_timer(&pcfg80211_wdinfo->remain_on_ch_timer, padapter->pnetdev, ro_ch_timer_process, padapter); +#endif } #endif /* CONFIG_IOCTL_CFG80211 */ @@ -4148,7 +4160,6 @@ int process_p2p_cross_connect_ie(PADAPTER padapter, u8 *IEs, u32 IELength) struct wifidirect_info *pwdinfo = &(padapter->wdinfo); - if (IELength <= _BEACON_IE_OFFSET_) return ret; @@ -4185,7 +4196,6 @@ void process_p2p_ps_ie(PADAPTER padapter, u8 *IEs, u32 IELength) u8 find_p2p = _FALSE, find_p2p_ps = _FALSE; u8 noa_offset, noa_num, noa_index; - if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) return; #ifdef CONFIG_CONCURRENT_MODE @@ -4268,7 +4278,6 @@ void p2p_ps_wk_hdl(_adapter *padapter, u8 p2p_ps_state) struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); - /* Pre action for p2p state */ switch (p2p_ps_state) { case P2P_PS_DISABLE: @@ -4333,7 +4342,6 @@ u8 p2p_ps_wk_cmd(_adapter *padapter, u8 p2p_ps_state, u8 enqueue) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE) #ifdef CONFIG_CONCURRENT_MODE || (padapter->hw_port != HW_PORT0) @@ -4368,15 +4376,22 @@ u8 p2p_ps_wk_cmd(_adapter *padapter, u8 p2p_ps_state, u8 enqueue) exit: - return res; } #endif /* CONFIG_P2P_PS */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +static void reset_ch_sitesurvey_timer_process(struct timer_list *t) +#else static void reset_ch_sitesurvey_timer_process(void *FunctionContext) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + _adapter *adapter = from_timer(adapter, t, wdinfo.reset_ch_sitesurvey); +#else _adapter *adapter = (_adapter *)FunctionContext; +#endif struct wifidirect_info *pwdinfo = &adapter->wdinfo; if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) @@ -4393,9 +4408,17 @@ static void reset_ch_sitesurvey_timer_process(void *FunctionContext) pwdinfo->rx_invitereq_info.scan_op_ch_only = 0; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +static void reset_ch_sitesurvey_timer_process2(struct timer_list *t) +#else static void reset_ch_sitesurvey_timer_process2(void *FunctionContext) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + _adapter *adapter = from_timer(adapter, t, wdinfo.reset_ch_sitesurvey2); +#else _adapter *adapter = (_adapter *)FunctionContext; +#endif struct wifidirect_info *pwdinfo = &adapter->wdinfo; if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) @@ -4412,9 +4435,17 @@ static void reset_ch_sitesurvey_timer_process2(void *FunctionContext) pwdinfo->p2p_info.scan_op_ch_only = 0; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +static void restore_p2p_state_timer_process (struct timer_list *t) +#else static void restore_p2p_state_timer_process(void *FunctionContext) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + _adapter *adapter = from_timer(adapter, t, wdinfo.restore_p2p_state_timer); +#else _adapter *adapter = (_adapter *)FunctionContext; +#endif struct wifidirect_info *pwdinfo = &adapter->wdinfo; if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) @@ -4423,9 +4454,17 @@ static void restore_p2p_state_timer_process(void *FunctionContext) p2p_protocol_wk_cmd(adapter, P2P_RESTORE_STATE_WK); } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +static void pre_tx_scan_timer_process (struct timer_list *t) +#else static void pre_tx_scan_timer_process(void *FunctionContext) +#endif { - _adapter *adapter = (_adapter *) FunctionContext; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + _adapter *adapter = from_timer(adapter, t, wdinfo.pre_tx_scan_timer); +#else + _adapter *adapter = (_adapter *) FunctionContext; +#endif struct wifidirect_info *pwdinfo = &adapter->wdinfo; _irqL irqL; struct mlme_priv *pmlmepriv = &adapter->mlmepriv; @@ -4436,7 +4475,6 @@ static void pre_tx_scan_timer_process(void *FunctionContext) _enter_critical_bh(&pmlmepriv->lock, &irqL); - if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_TX_PROVISION_DIS_REQ)) { if (_TRUE == pwdinfo->tx_prov_disc_info.benable) { /* the provision discovery request frame is trigger to send or not */ p2p_protocol_wk_cmd(adapter, P2P_PRE_TX_PROVDISC_PROCESS_WK); @@ -4455,9 +4493,17 @@ static void pre_tx_scan_timer_process(void *FunctionContext) _exit_critical_bh(&pmlmepriv->lock, &irqL); } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +static void find_phase_timer_process(struct timer_list *t) +#else static void find_phase_timer_process(void *FunctionContext) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + _adapter *adapter = from_timer(adapter, t, wdinfo.find_phase_timer); +#else _adapter *adapter = (_adapter *)FunctionContext; +#endif struct wifidirect_info *pwdinfo = &adapter->wdinfo; if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) @@ -4714,6 +4760,16 @@ void rtw_init_wifidirect_timers(_adapter *padapter) { struct wifidirect_info *pwdinfo = &padapter->wdinfo; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + timer_setup(&pwdinfo->find_phase_timer, find_phase_timer_process, 0); + timer_setup(&pwdinfo->restore_p2p_state_timer, restore_p2p_state_timer_process, 0); + timer_setup(&pwdinfo->pre_tx_scan_timer, pre_tx_scan_timer_process, 0); + timer_setup(&pwdinfo->reset_ch_sitesurvey, reset_ch_sitesurvey_timer_process, 0); + timer_setup(&pwdinfo->reset_ch_sitesurvey2, reset_ch_sitesurvey_timer_process2, 0); +#ifdef CONFIG_CONCURRENT_MODE + timer_setup(&pwdinfo->ap_p2p_switch_timer, ap_p2p_switch_timer_process, 0); +#endif +#else _init_timer(&pwdinfo->find_phase_timer, padapter->pnetdev, find_phase_timer_process, padapter); _init_timer(&pwdinfo->restore_p2p_state_timer, padapter->pnetdev, restore_p2p_state_timer_process, padapter); _init_timer(&pwdinfo->pre_tx_scan_timer, padapter->pnetdev, pre_tx_scan_timer_process, padapter); @@ -4722,6 +4778,7 @@ void rtw_init_wifidirect_timers(_adapter *padapter) #ifdef CONFIG_CONCURRENT_MODE _init_timer(&pwdinfo->ap_p2p_switch_timer, padapter->pnetdev, ap_p2p_switch_timer_process, padapter); #endif +#endif } void rtw_init_wifidirect_addrs(_adapter *padapter, u8 *dev_addr, u8 *iface_addr) @@ -5030,7 +5087,6 @@ void dbg_rtw_p2p_set_role(struct wifidirect_info *wdinfo, enum P2P_ROLE role, co } #endif /* CONFIG_DBG_P2P */ - int rtw_p2p_enable(_adapter *padapter, enum P2P_ROLE role) { int ret = _SUCCESS; @@ -5078,7 +5134,6 @@ int rtw_p2p_enable(_adapter *padapter, enum P2P_ROLE role) adapter_wdev_data(padapter)->p2p_enabled = _FALSE; #endif /* CONFIG_IOCTL_CFG80211 */ - /* Disable P2P function */ if (!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) { _cancel_timer_ex(&pwdinfo->find_phase_timer); @@ -5086,8 +5141,13 @@ int rtw_p2p_enable(_adapter *padapter, enum P2P_ROLE role) _cancel_timer_ex(&pwdinfo->pre_tx_scan_timer); _cancel_timer_ex(&pwdinfo->reset_ch_sitesurvey); _cancel_timer_ex(&pwdinfo->reset_ch_sitesurvey2); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + reset_ch_sitesurvey_timer_process(&pwdinfo->reset_ch_sitesurvey); + reset_ch_sitesurvey_timer_process2(&pwdinfo->reset_ch_sitesurvey2); +#else reset_ch_sitesurvey_timer_process(padapter); reset_ch_sitesurvey_timer_process2(padapter); +#endif #ifdef CONFIG_CONCURRENT_MODE _cancel_timer_ex(&pwdinfo->ap_p2p_switch_timer); #endif From 269158785a01c08aeb86b6205578e4ee87a5f80c Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 19:25:47 +0100 Subject: [PATCH 133/234] Fix API change in kernel v4.15 In this kernel, the timer setup and handlers changed quite a bit. --- core/rtw_pwrctrl.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/core/rtw_pwrctrl.c b/core/rtw_pwrctrl.c index d8b45f450..f61a5b33d 100644 --- a/core/rtw_pwrctrl.c +++ b/core/rtw_pwrctrl.c @@ -393,10 +393,17 @@ void rtw_ps_processor(_adapter *padapter) return; } -void pwr_state_check_handler(RTW_TIMER_HDL_ARGS); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +void pwr_state_check_handler(struct timer_list *t) +#else void pwr_state_check_handler(RTW_TIMER_HDL_ARGS) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + _adapter *padapter = from_timer(padapter, t, pwrctrlpriv.pwr_state_check_timer); +#else _adapter *padapter = (_adapter *)FunctionContext; +#endif rtw_ps_cmd(padapter); } @@ -1968,7 +1975,11 @@ void rtw_init_pwrctrl_priv(PADAPTER padapter) #endif /* CONFIG_LPS_RPWM_TIMER */ #endif /* CONFIG_LPS_LCLK */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + timer_setup(&pwrctrlpriv->pwr_state_check_timer, pwr_state_check_handler, 0); +#else rtw_init_timer(&pwrctrlpriv->pwr_state_check_timer, padapter, pwr_state_check_handler); +#endif pwrctrlpriv->wowlan_mode = _FALSE; pwrctrlpriv->wowlan_ap_mode = _FALSE; From 8be9e78a4b75889a45c19ed6910c852024c67948 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 19:34:12 +0100 Subject: [PATCH 134/234] Fix API change in kernel 4.15 In this kernel, the timer setup and handlers changed quite a bit. --- core/rtw_tdls.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/core/rtw_tdls.c b/core/rtw_tdls.c index be31530da..1e4c8d15d 100644 --- a/core/rtw_tdls.c +++ b/core/rtw_tdls.c @@ -3141,9 +3141,17 @@ void rtw_build_tunneled_probe_rsp_ies(_adapter *padapter, struct xmit_frame *pxm } #endif /* CONFIG_WFD */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +void _tdls_tpk_timer_hdl(struct timer_list *t) +#else void _tdls_tpk_timer_hdl(void *FunctionContext) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + struct sta_info *ptdls_sta = from_timer(ptdls_sta, t, sta.TPK_timer); +#else struct sta_info *ptdls_sta = (struct sta_info *)FunctionContext; +#endif struct tdls_txmgmt txmgmt; _rtw_memset(&txmgmt, 0x00, sizeof(struct tdls_txmgmt)); @@ -3246,7 +3254,11 @@ void _tdls_pti_timer_hdl(void *FunctionContext) void rtw_init_tdls_timer(_adapter *padapter, struct sta_info *psta) { psta->padapter = padapter; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + timer_setup(&psta->TPK_timer, _TPK_timer_hdl, 0); +#else _init_timer(&psta->TPK_timer, padapter->pnetdev, _tdls_tpk_timer_hdl, psta); +#endif #ifdef CONFIG_TDLS_CH_SW _init_timer(&psta->ch_sw_timer, padapter->pnetdev, _tdls_ch_switch_timer_hdl, psta); _init_timer(&psta->delay_timer, padapter->pnetdev, _tdls_delay_timer_hdl, psta); From 2e1e972bf50e9372ede1ae9f80a42c785307780c Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 19:39:19 +0100 Subject: [PATCH 135/234] Fix API change in kernel v4.15 In this kernel, the timer setup and handlers changed quite a bit. --- hal/led/hal_usb_led.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/hal/led/hal_usb_led.c b/hal/led/hal_usb_led.c index 117bc93e0..ae0535caf 100644 --- a/hal/led/hal_usb_led.c +++ b/hal/led/hal_usb_led.c @@ -1815,9 +1815,17 @@ void BlinkHandler(PLED_USB pLed) * Callback function of LED BlinkTimer, * it just schedules to corresponding BlinkWorkItem/led_blink_hdl * */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +void BlinkTimerCallback(struct timer_list *t) +#else void BlinkTimerCallback(void *data) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + PLED_USB pLed = from_timer(pLed, t, BlinkTimer); +#else PLED_USB pLed = (PLED_USB)data; +#endif _adapter *padapter = pLed->padapter; /* RTW_INFO("%s\n", __FUNCTION__); */ @@ -4229,7 +4237,11 @@ InitLed( pLed->LedPin = LedPin; ResetLedStatus(pLed); - _init_timer(&(pLed->BlinkTimer), padapter->pnetdev, BlinkTimerCallback, pLed); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + timer_setup(&pLed->BlinkTimer, BlinkTimerCallback, 0); +#else + _init_timer(&pLed->BlinkTimer, padapter->pnetdev, BlinkTimerCallback, pLed); +#endif _init_workitem(&(pLed->BlinkWorkItem), BlinkWorkItemCallback, pLed); } From 62b52f686ba4f0334eaa46b947c4c69e1b19d9b1 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 19:44:48 +0100 Subject: [PATCH 136/234] Fix API change in kernel v4.15 In this kernel, the timer setup and handlers changed quite a bit. --- os_dep/linux/recv_linux.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/os_dep/linux/recv_linux.c b/os_dep/linux/recv_linux.c index a534c4b38..fa84bcb50 100644 --- a/os_dep/linux/recv_linux.c +++ b/os_dep/linux/recv_linux.c @@ -73,7 +73,6 @@ int rtw_os_alloc_recvframe(_adapter *padapter, union recv_frame *precvframe, u8 return res; } - /* Modified by Albert 20101213 */ /* For 8 bytes IP header alignment. */ shift_sz = pattrib->qos ? 6 : 0; /* Qos data, wireless lan header length is 26 */ @@ -398,7 +397,6 @@ void rtw_os_recv_indicate_pkt(_adapter *padapter, _pkt *pkt, struct rx_pkt_attri rcu_read_unlock(); #endif /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) */ - if (br_port && (check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE) == _TRUE)) { int nat25_handle_frame(_adapter *priv, struct sk_buff *skb); if (nat25_handle_frame(padapter, pkt) == -1) { @@ -511,7 +509,6 @@ void rtw_hostapd_mlme_rx(_adapter *padapter, union recv_frame *precv_frame) struct hostapd_priv *phostapdpriv = padapter->phostapdpriv; struct net_device *pmgnt_netdev = phostapdpriv->pmgnt_netdev; - skb = precv_frame->u.hdr.pkt; if (skb == NULL) @@ -667,7 +664,6 @@ int rtw_recv_indicatepkt(_adapter *padapter, union recv_frame *precv_frame) goto _recv_indicatepkt_drop; } - skb->data = precv_frame->u.hdr.rx_data; skb_set_tail_pointer(skb, precv_frame->u.hdr.len); @@ -750,8 +746,6 @@ int rtw_recv_indicatepkt(_adapter *padapter, union recv_frame *precv_frame) rtw_free_recvframe(precv_frame, pfree_recv_queue); - - return _SUCCESS; _recv_indicatepkt_drop: @@ -789,10 +783,18 @@ void rtw_os_read_port(_adapter *padapter, struct recv_buf *precvbuf) #endif } -void _rtw_reordering_ctrl_timeout_handler(void *FunctionContext); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +void _rtw_reordering_ctrl_timeout_handler(struct timer_list *t) +#else void _rtw_reordering_ctrl_timeout_handler(void *FunctionContext) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + struct recv_reorder_ctrl *preorder_ctrl = from_timer(preorder_ctrl, t, reordering_ctrl_timer); +#else struct recv_reorder_ctrl *preorder_ctrl = (struct recv_reorder_ctrl *)FunctionContext; +#endif rtw_reordering_ctrl_timeout_handler(preorder_ctrl); } @@ -800,6 +802,9 @@ void rtw_init_recv_timer(struct recv_reorder_ctrl *preorder_ctrl) { _adapter *padapter = preorder_ctrl->padapter; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + timer_setup(&preorder_ctrl->reordering_ctrl_timer, _rtw_reordering_ctrl_timeout_handler, 0); +#else _init_timer(&(preorder_ctrl->reordering_ctrl_timer), padapter->pnetdev, _rtw_reordering_ctrl_timeout_handler, preorder_ctrl); - +#endif } From 1f817479ee6e46ee2b668c3536df75b641bffb13 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 19:49:00 +0100 Subject: [PATCH 137/234] Fix API change in kernel v4.15 In this kernel, the timer setup and handlers changed quite a bit. --- os_dep/osdep_service.c | 30 +++--------------------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/os_dep/osdep_service.c b/os_dep/osdep_service.c index 7a3f777d8..6fa4e828b 100644 --- a/os_dep/osdep_service.c +++ b/os_dep/osdep_service.c @@ -18,7 +18,6 @@ * ******************************************************************************/ - #define _OSDEP_SERVICE_C_ #include @@ -32,7 +31,6 @@ atomic_t _malloc_size = ATOMIC_INIT(0); #endif #endif /* DBG_MEMORY_LEAK */ - #if defined(PLATFORM_LINUX) /* * Translate the OS dependent @param error_code to OS independent RTW_STATUS_CODE @@ -998,20 +996,15 @@ void rtw_list_insert_tail(_list *plist, _list *phead) } +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) void rtw_init_timer(_timer *ptimer, void *padapter, void *pfunc) { _adapter *adapter = (_adapter *)padapter; -#ifdef PLATFORM_LINUX _init_timer(ptimer, adapter->pnetdev, pfunc, adapter); -#endif -#ifdef PLATFORM_FREEBSD - _init_timer(ptimer, adapter->pifp, pfunc, adapter->mlmepriv.nic_hdl); -#endif -#ifdef PLATFORM_WINDOWS - _init_timer(ptimer, adapter->hndis_adapter, pfunc, adapter->mlmepriv.nic_hdl); -#endif + } +#endif /* @@ -1019,7 +1012,6 @@ Caller must check if the list is empty before calling rtw_list_delete */ - void _rtw_init_sema(_sema *sema, int init_val) { @@ -1212,7 +1204,6 @@ void rtw_mtx_unlock(_lock *plock) } #endif /* PLATFORM_FREEBSD */ - void _rtw_spinlock(_lock *plock) { @@ -1288,8 +1279,6 @@ void _rtw_spinunlock_ex(_lock *plock) #endif } - - void _rtw_init_queue(_queue *pqueue) { _rtw_init_listhead(&(pqueue->queue)); @@ -1389,7 +1378,6 @@ inline s32 rtw_get_time_interval_ms(u32 start, u32 end) #endif } - void rtw_sleep_schedulable(int ms) { @@ -1420,7 +1408,6 @@ void rtw_sleep_schedulable(int ms) } - void rtw_msleep_os(int ms) { @@ -1445,7 +1432,6 @@ void rtw_msleep_os(int ms) #endif - } void rtw_usleep_os(int us) { @@ -1474,10 +1460,8 @@ void rtw_usleep_os(int us) #endif - } - #ifdef DBG_DELAY_OS void _rtw_mdelay_os(int ms, const char *func, const int line) { @@ -1488,7 +1472,6 @@ void _rtw_mdelay_os(int ms, const char *func, const int line) return; #endif - RTW_INFO("%s:%d %s(%d)\n", func, line, __FUNCTION__, ms); #if defined(PLATFORM_LINUX) @@ -1501,7 +1484,6 @@ void _rtw_mdelay_os(int ms, const char *func, const int line) #endif - } void _rtw_udelay_os(int us, const char *func, const int line) { @@ -1517,7 +1499,6 @@ void _rtw_udelay_os(int us, const char *func, const int line) RTW_INFO("%s:%d %s(%d)\n", func, line, __FUNCTION__, us); - #if defined(PLATFORM_LINUX) udelay((unsigned long)us); @@ -1548,7 +1529,6 @@ void rtw_mdelay_os(int ms) #endif - } void rtw_udelay_os(int us) { @@ -1872,7 +1852,6 @@ inline int ATOMIC_DEC_RETURN(ATOMIC_T *v) #endif } - #ifdef PLATFORM_LINUX /* * Open a file with the specific @param path, @param flag, @param mode @@ -2280,7 +2259,6 @@ copy_to_user(void *to, const void *from, unsigned long n) return 0; } - /* * The usb_register and usb_deregister functions are used to register * usb drivers with the usb subsystem. In this compatibility layer @@ -2296,7 +2274,6 @@ usb_register(struct usb_driver *driver) return 0; } - int usb_deregister(struct usb_driver *driver) { @@ -2412,7 +2389,6 @@ void rtw_buf_update(u8 **buf, u32 *buf_len, u8 *src, u32 src_len) rtw_mfree(ori, ori_len); } - /** * rtw_cbuf_full - test if cbuf is full * @cbuf: pointer of struct rtw_cbuf From 998339a8556cab176f39dc2132478dfc09b24e62 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 19:53:59 +0100 Subject: [PATCH 138/234] Fix API change in kernel v4.15 In this kernel, the timer setup and handlers changed quite a bit. --- os_dep/linux/os_intfs.c | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c index 2ad6ea7fe..6d34c0ea3 100644 --- a/os_dep/linux/os_intfs.c +++ b/os_dep/linux/os_intfs.c @@ -1826,20 +1826,21 @@ u8 rtw_reset_drv_sw(_adapter *padapter) mlmeext_set_scan_state(&padapter->mlmeextpriv, SCAN_DISABLE); #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + _set_timer(&padapter->recvpriv.signal_stat_timer, padapter->recvpriv.signal_stat_sampling_interval); +#else rtw_set_signal_stat_timer(&padapter->recvpriv); +#endif #endif return ret8; } - u8 rtw_init_drv_sw(_adapter *padapter) { u8 ret8 = _SUCCESS; - - _rtw_init_listhead(&padapter->list); ret8 = rtw_init_default_value(padapter); @@ -1956,8 +1957,6 @@ u8 rtw_init_drv_sw(_adapter *padapter) exit: - - return ret8; } @@ -2074,7 +2073,6 @@ u8 rtw_free_drv_sw(_adapter *padapter) rtw_hal_free_data(padapter); - /* free the old_pnetdev */ if (padapter->rereg_nd_name_priv.old_pnetdev) { free_netdev(padapter->rereg_nd_name_priv.old_pnetdev); @@ -2278,7 +2276,6 @@ _adapter *rtw_drv_add_vir_if(_adapter *primary_padapter, padapter->hw_port = HW_PORT1; #endif - /****** hook vir if into dvobj ******/ pdvobjpriv = adapter_to_dvobj(padapter); padapter->iface_id = pdvobjpriv->iface_nums; @@ -2296,7 +2293,6 @@ _adapter *rtw_drv_add_vir_if(_adapter *primary_padapter, if (rtw_init_drv_sw(padapter) != _SUCCESS) goto free_drv_sw; - /*get mac address from primary_padapter*/ _rtw_memcpy(mac, adapter_mac_addr(primary_padapter), ETH_ALEN); @@ -2777,7 +2773,6 @@ int ips_netdrv_open(_adapter *padapter) return _FAIL; } - int rtw_ips_pwr_up(_adapter *padapter) { int result; @@ -2841,7 +2836,6 @@ void rtw_ips_dev_unload(_adapter *padapter) } - int pm_netdev_open(struct net_device *pnetdev, u8 bnormal) { int status = 0; @@ -3302,7 +3296,6 @@ void rtw_dev_unload(PADAPTER padapter) rtw_intf_stop(padapter); - if (!pwrctl->bInternalAutoSuspend) rtw_stop_drv_threads(padapter); @@ -3317,7 +3310,6 @@ void rtw_dev_unload(PADAPTER padapter) } } - /* check the status of IPS */ if (rtw_hal_check_ips_status(padapter) == _TRUE || pwrctl->rf_pwrstate == rf_off) { /* check HW status and SW state */ RTW_PRINT("%s: driver in IPS-FWLPS\n", __func__); @@ -3429,7 +3421,6 @@ int rtw_suspend_wow(_adapter *padapter) RTW_INFO("==> "FUNC_ADPT_FMT" entry....\n", FUNC_ADPT_ARG(padapter)); - RTW_INFO("wowlan_mode: %d\n", pwrpriv->wowlan_mode); RTW_INFO("wowlan_pno_enable: %d\n", pwrpriv->wowlan_pno_enable); #ifdef CONFIG_P2P_WOWLAN @@ -3639,7 +3630,6 @@ int rtw_suspend_ap_wow(_adapter *padapter) } #endif /* #ifdef CONFIG_AP_WOWLAN */ - int rtw_suspend_normal(_adapter *padapter) { struct mlme_priv *pmlmepriv = &padapter->mlmepriv; @@ -3658,7 +3648,6 @@ int rtw_suspend_normal(_adapter *padapter) || (adapter_to_pwrctl(padapter)->rf_pwrstate == rf_off)) RTW_PRINT("%s: ### ERROR #### driver in IPS ####ERROR###!!!\n", __FUNCTION__); - #ifdef CONFIG_CONCURRENT_MODE rtw_mi_buddy_dev_unload(padapter); #endif @@ -3759,7 +3748,6 @@ int rtw_suspend_common(_adapter *padapter) } else rtw_suspend_normal(padapter); - RTW_PRINT("rtw suspend success in %d ms\n", rtw_get_passing_time_ms(start_time)); @@ -3841,7 +3829,6 @@ int rtw_resume_process_wow(_adapter *padapter) if (psta) set_sta_rate(padapter, psta); - rtw_clr_drv_stopped(padapter); RTW_INFO("%s: wowmode resuming, DriverStopped:%s\n", __func__, rtw_is_drv_stopped(padapter) ? "True" : "False"); @@ -3963,7 +3950,6 @@ int rtw_resume_process_ap_wow(_adapter *padapter) goto exit; } - #ifdef CONFIG_LPS rtw_set_ps_mode(padapter, PS_MODE_ACTIVE, 0, 0, "AP-WOWLAN"); #endif /* CONFIG_LPS */ @@ -4191,7 +4177,6 @@ int rtw_resume_common(_adapter *padapter) RTW_PRINT("%s:%d in %d ms\n", __FUNCTION__ , ret, rtw_get_passing_time_ms(start_time)); - return ret; } From 7f9dcff9bcba6504ae682f34e772062af8fe9240 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 19:58:27 +0100 Subject: [PATCH 139/234] Fix API change in kernel v4.15 In this kernel, the timer setup and handlers changed quite a bit. --- include/rtw_recv.h | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/include/rtw_recv.h b/include/rtw_recv.h index ef3886f3b..f6dcd82a4 100644 --- a/include/rtw_recv.h +++ b/include/rtw_recv.h @@ -68,7 +68,6 @@ #define PHY_RSSI_SLID_WIN_MAX 100 #define PHY_LINKQUALITY_SLID_WIN_MAX 20 - #define SNAP_SIZE sizeof(struct ieee80211_snap_hdr) #define RX_MPDU_QUEUE 0 @@ -125,7 +124,6 @@ struct stainfo_rxcache { #endif }; - struct smooth_rssi_data { u32 elements[100]; /* array to store values */ u32 index; /* index to current array to store */ @@ -218,7 +216,6 @@ struct rx_raw_rssi { u8 ofdm_snr[4]; }; - struct rx_pkt_attrib { u16 pkt_len; u8 physt; @@ -283,7 +280,6 @@ struct rx_pkt_attrib { struct phy_info phy_info; }; - /* These definition is used for Rx packet reordering. */ #define SN_LESS(a, b) (((a-b) & 0x800) != 0) #define SN_EQUAL(a, b) (a == b) @@ -359,8 +355,6 @@ struct rtw_rx_ring { }; #endif - - /* accesser of recv_priv: rtw_recv_entry(dispatch / passive level); recv_thread(passive) ; returnpkt(dispatch) ; halt(passive) ; @@ -488,7 +482,9 @@ struct recv_priv { }; #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) #define rtw_set_signal_stat_timer(recvpriv) _set_timer(&(recvpriv)->signal_stat_timer, (recvpriv)->signal_stat_sampling_interval) +#endif #endif /* CONFIG_NEW_SIGNAL_STAT_PROCESS */ struct sta_recv_priv { @@ -507,7 +503,6 @@ struct sta_recv_priv { }; - struct recv_buf { _list list; @@ -565,7 +560,6 @@ struct recv_buf { tail -----> - end -----> len = (unsigned int )(tail - data); @@ -597,7 +591,6 @@ struct recv_frame_hdr { void *precvbuf; - /* */ struct sta_info *psta; @@ -614,7 +607,6 @@ struct recv_frame_hdr { }; - union recv_frame { union { @@ -699,7 +691,6 @@ __inline static u8 *recvframe_push(union recv_frame *precvframe, sint sz) if (precvframe == NULL) return NULL; - precvframe->u.hdr.rx_data -= sz ; if (precvframe->u.hdr.rx_data < precvframe->u.hdr.rx_head) { precvframe->u.hdr.rx_data += sz ; @@ -712,18 +703,15 @@ __inline static u8 *recvframe_push(union recv_frame *precvframe, sint sz) } - __inline static u8 *recvframe_pull(union recv_frame *precvframe, sint sz) { /* rx_data += sz; move rx_data sz bytes hereafter */ /* used for extract sz bytes from rx_data, update rx_data and return the updated rx_data to the caller */ - if (precvframe == NULL) return NULL; - precvframe->u.hdr.rx_data += sz; if (precvframe->u.hdr.rx_data > precvframe->u.hdr.rx_tail) { @@ -765,8 +753,6 @@ __inline static u8 *recvframe_put(union recv_frame *precvframe, sint sz) } - - __inline static u8 *recvframe_pull_tail(union recv_frame *precvframe, sint sz) { /* rmv data from rx_tail (by yitsen) */ @@ -790,8 +776,6 @@ __inline static u8 *recvframe_pull_tail(union recv_frame *precvframe, sint sz) } - - __inline static _buffer *get_rxbuf_desc(union recv_frame *precvframe) { _buffer *buf_desc; @@ -805,7 +789,6 @@ __inline static _buffer *get_rxbuf_desc(union recv_frame *precvframe) return buf_desc; } - __inline static union recv_frame *rxmem_to_recvframe(u8 *rxmem) { /* due to the design of 2048 bytes alignment of recv_frame, we can reference the union recv_frame */ @@ -876,7 +859,6 @@ __inline static s32 translate_percentage_to_dbm(u32 SignalStrengthIndex) return SignalPower; } - struct sta_info; extern void _rtw_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv); From be917e7579be51460c3cbc969e0f0bf7dea68167 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 20:01:52 +0100 Subject: [PATCH 140/234] Fix API change in kernel v4.15 In this kernel, the timer setup and handlers changed quite a bit. --- include/osdep_service_linux.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/osdep_service_linux.h b/include/osdep_service_linux.h index f371343f4..342c2aab6 100644 --- a/include/osdep_service_linux.h +++ b/include/osdep_service_linux.h @@ -269,14 +269,14 @@ __inline static void rtw_list_delete(_list *plist) } #define RTW_TIMER_HDL_ARGS void *FunctionContext - +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) __inline static void _init_timer(_timer *ptimer, _nic_hdl nic_hdl, void *pfunc, void *cntx) { - /* setup_timer(ptimer, pfunc,(u32)cntx); */ ptimer->function = pfunc; ptimer->data = (unsigned long)cntx; init_timer(ptimer); } +#endif __inline static void _set_timer(_timer *ptimer, u32 delay_time) { @@ -429,5 +429,4 @@ extern struct net_device *rtw_alloc_etherdev(int sizeof_priv); #define STRUCT_PACKED __attribute__ ((packed)) - #endif From d67146eaadbab30fa30faaff9f608cab800a5bc1 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 20:19:55 +0100 Subject: [PATCH 141/234] Fix API change in kernel v4.15 In this kernel, the timer setup and handlers changed quite a bit. --- core/rtw_recv.c | 113 +++++++++++++----------------------------------- 1 file changed, 31 insertions(+), 82 deletions(-) diff --git a/core/rtw_recv.c b/core/rtw_recv.c index d4deb8502..27332f319 100755 --- a/core/rtw_recv.c +++ b/core/rtw_recv.c @@ -28,9 +28,12 @@ #endif - #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +void rtw_signal_stat_timer_hdl(struct timer_list *t); +#else void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS); +#endif enum { SIGNAL_STAT_CALC_PROFILE_0 = 0, @@ -52,8 +55,6 @@ u8 signal_stat_calc_profile[SIGNAL_STAT_CALC_PROFILE_MAX][2] = { void _rtw_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv) { - - _rtw_memset((u8 *)psta_recvpriv, 0, sizeof(struct sta_recv_priv)); _rtw_spinlock_init(&psta_recvpriv->lock); @@ -63,7 +64,6 @@ void _rtw_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv) _rtw_init_queue(&psta_recvpriv->defrag_q); - } sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter) @@ -73,7 +73,6 @@ sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter) union recv_frame *precvframe; sint res = _SUCCESS; - /* We don't need to memset padapter->XXX to zero, because adapter is allocated by rtw_zvmalloc(). */ /* _rtw_memset((unsigned char *)precvpriv, 0, sizeof (struct recv_priv)); */ @@ -113,7 +112,6 @@ sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter) precvframe = (union recv_frame *) precvpriv->precv_frame_buf; - for (i = 0; i < NR_RECVFRAME ; i++) { _rtw_init_listhead(&(precvframe->u.list)); @@ -139,17 +137,24 @@ sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter) res = rtw_hal_init_recv_priv(padapter); #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + timer_setup(&precvpriv->signal_stat_timer, rtw_signal_stat_timer_hdl, 0); +#else rtw_init_timer(&precvpriv->signal_stat_timer, padapter, RTW_TIMER_HDL_NAME(signal_stat)); +#endif precvpriv->signal_stat_sampling_interval = 2000; /* ms */ /* precvpriv->signal_stat_converging_constant = 5000; */ /* ms */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + _set_timer(&precvpriv->signal_stat_timer, precvpriv->signal_stat_sampling_interval); +#else rtw_set_signal_stat_timer(precvpriv); +#endif #endif /* CONFIG_NEW_SIGNAL_STAT_PROCESS */ exit: - return res; } @@ -177,7 +182,6 @@ void _rtw_free_recv_priv(struct recv_priv *precvpriv) { _adapter *padapter = precvpriv->adapter; - rtw_free_uc_swdec_pending_queue(padapter); rtw_mfree_recv_priv_lock(precvpriv); @@ -189,7 +193,6 @@ void _rtw_free_recv_priv(struct recv_priv *precvpriv) rtw_hal_free_recv_priv(padapter); - } bool rtw_rframe_del_wfd_ie(union recv_frame *rframe, u8 ies_offset) @@ -231,7 +234,6 @@ union recv_frame *_rtw_alloc_recvframe(_queue *pfree_recv_queue) } } - return precvframe; } @@ -264,7 +266,6 @@ int rtw_free_recvframe(union recv_frame *precvframe, _queue *pfree_recv_queue) _adapter *padapter = precvframe->u.hdr.adapter; struct recv_priv *precvpriv = &padapter->recvpriv; - #ifdef CONFIG_CONCURRENT_MODE padapter = GET_PRIMARY_ADAPTER(padapter); precvpriv = &padapter->recvpriv; @@ -272,10 +273,8 @@ int rtw_free_recvframe(union recv_frame *precvframe, _queue *pfree_recv_queue) precvframe->u.hdr.adapter = padapter; #endif - rtw_os_free_recvframe(precvframe); - _enter_critical_bh(&pfree_recv_queue->lock, &irqL); rtw_list_delete(&(precvframe->u.hdr.list)); @@ -291,21 +290,16 @@ int rtw_free_recvframe(union recv_frame *precvframe, _queue *pfree_recv_queue) _exit_critical_bh(&pfree_recv_queue->lock, &irqL); - return _SUCCESS; } - - - sint _rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue) { _adapter *padapter = precvframe->u.hdr.adapter; struct recv_priv *precvpriv = &padapter->recvpriv; - /* _rtw_init_listhead(&(precvframe->u.hdr.list)); */ rtw_list_delete(&(precvframe->u.hdr.list)); @@ -317,7 +311,6 @@ sint _rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue) precvpriv->free_recvframe_cnt++; } - return _SUCCESS; } @@ -342,9 +335,6 @@ sint rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue) } */ - - - /* caller : defrag ; recvframe_chk_defrag in recv_thread (passive) pframequeue: defrag_queue : will be accessed in recv_thread (passive) @@ -375,7 +365,6 @@ void rtw_free_recvframe_queue(_queue *pframequeue, _queue *pfree_recv_queue) _rtw_spinunlock(&pframequeue->lock); - } u32 rtw_free_uc_swdec_pending_queue(_adapter *adapter) @@ -393,7 +382,6 @@ u32 rtw_free_uc_swdec_pending_queue(_adapter *adapter) return cnt; } - sint rtw_enqueue_recvbuf_to_head(struct recv_buf *precvbuf, _queue *queue) { _irqL irqL; @@ -528,8 +516,6 @@ sint recvframe_chkmic(_adapter *adapter, union recv_frame *precvframe) if (bmic_err == _TRUE) { - - /* double check key_index for some timing issue , */ /* cannot compare with psecuritypriv->dot118021XGrpKeyid also cause timing issue */ if ((IS_MCAST(prxattrib->ra) == _TRUE) && (prxattrib->key_index != pmlmeinfo->key_index)) @@ -559,7 +545,6 @@ sint recvframe_chkmic(_adapter *adapter, union recv_frame *precvframe) exit: - return res; } @@ -576,10 +561,8 @@ union recv_frame *decryptor(_adapter *padapter, union recv_frame *precv_frame) union recv_frame *return_packet = precv_frame; u32 res = _SUCCESS; - DBG_COUNTER(padapter->rx_logs.core_rx_post_decrypt); - if (prxattrib->encrypt > 0) { u8 *iv = precv_frame->u.hdr.rx_data + prxattrib->hdrlen; prxattrib->key_index = (((iv[3]) >> 6) & 0x3) ; @@ -693,7 +676,6 @@ union recv_frame *decryptor(_adapter *padapter, union recv_frame *precv_frame) prxattrib->bdecrypted = _TRUE; /* recvframe_chkmic(adapter, precv_frame); */ /* move to recvframme_defrag function */ - return return_packet; } @@ -712,7 +694,6 @@ union recv_frame *portctrl(_adapter *adapter, union recv_frame *precv_frame) u16 eapol_type = 0x888e;/* for Funia BD's WPA issue */ struct rx_pkt_attrib *pattrib; - pstapriv = &adapter->stapriv; auth_alg = adapter->securitypriv.dot11AuthAlgrthm; @@ -726,7 +707,6 @@ union recv_frame *portctrl(_adapter *adapter, union recv_frame *precv_frame) psta = rtw_get_stainfo(pstapriv, psta_addr); - if (auth_alg == dot11AuthAlgrthm_8021X) { if ((psta != NULL) && (psta->ieee8021x_blocked)) { /* blocked */ @@ -775,7 +755,6 @@ sint recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo_rxcac 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; @@ -790,7 +769,6 @@ sint recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo_rxcac prxcache->tid_rxseq[tid] = seq_ctrl; - return _SUCCESS; } @@ -1083,7 +1061,6 @@ sint sta2sta_data_frame( u8 *pframe_body = psnap_type + 2 + 1; #endif - /* RTW_INFO("[%s] %d, seqnum:%d\n", __FUNCTION__, __LINE__, pattrib->seq_num); */ if ((check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE) || @@ -1294,7 +1271,6 @@ sint ap2sta_data_frame( goto exit; } - /* check BSSID */ if (_rtw_memcmp(pattrib->bssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) || _rtw_memcmp(mybssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) || @@ -1354,7 +1330,6 @@ sint ap2sta_data_frame( goto exit; } - } else if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) { /* Special case */ ret = RTW_RX_HANDLED; @@ -1387,7 +1362,6 @@ sint ap2sta_data_frame( exit: - return ret; } @@ -1481,7 +1455,6 @@ sint sta2ap_data_frame( exit: - return ret; } @@ -1642,7 +1615,6 @@ sint validate_recv_mgnt_frame(PADAPTER padapter, union recv_frame *precv_frame) { /* struct mlme_priv *pmlmepriv = &adapter->mlmepriv; */ - #if 0 if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) { #ifdef CONFIG_NATIVEAP_MLME @@ -1745,7 +1717,6 @@ sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame) struct security_priv *psecuritypriv = &adapter->securitypriv; sint ret = _SUCCESS; - bretry = GetRetry(ptr); pda = get_da(ptr); psa = get_sa(ptr); @@ -1816,7 +1787,6 @@ sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame) /* psta->signal_quality= prxcmd->sq; */ precv_frame->u.hdr.psta = psta; - pattrib->amsdu = 0; pattrib->ack_policy = 0; /* parsing QC field */ @@ -1835,7 +1805,6 @@ sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame) pattrib->hdrlen = pattrib->to_fr_ds == 3 ? 30 : 24; } - if (pattrib->order) /* HT-CTRL 11n */ pattrib->hdrlen += 4; @@ -1852,7 +1821,6 @@ sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame) if (pattrib->privacy) { - #ifdef CONFIG_TDLS if ((psta->tdls_sta_state & TDLS_LINKED_STATE) && (psta->dot118021XPrivacy == _AES_)) pattrib->encrypt = psta->dot118021XPrivacy; @@ -1869,7 +1837,6 @@ sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame) exit: - return ret; } @@ -2190,7 +2157,6 @@ sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame) return retval; } - /* remove the wlanhdr and add the eth_hdr */ #if 1 @@ -2210,7 +2176,6 @@ sint wlanhdr_to_ethhdr(union recv_frame *precvframe) u8 *ptr = get_recvframe_data(precvframe) ; /* point to frame_ctrl field */ struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib; - if (pattrib->encrypt) recvframe_pull_tail(precvframe, pattrib->icv_len); @@ -2233,7 +2198,6 @@ sint wlanhdr_to_ethhdr(union recv_frame *precvframe) rmv_len = pattrib->hdrlen + pattrib->iv_len + (bsnaphdr ? SNAP_SIZE : 0); len = precvframe->u.hdr.len - rmv_len; - _rtw_memcpy(ð_type, ptr + rmv_len, 2); eth_type = ntohs((unsigned short)eth_type); /* pattrib->ether_type */ pattrib->eth_type = eth_type; @@ -2415,7 +2379,6 @@ sint wlanhdr_to_ethhdr(union recv_frame *precvframe) exit: - return ret; } #endif @@ -2564,8 +2527,6 @@ union recv_frame *recvframe_defrag(_adapter *adapter, _queue *defrag_q) /* free the defrag_q queue and return the prframe */ rtw_free_recvframe_queue(defrag_q, pfree_recv_queue); - - return prframe; } @@ -2661,7 +2622,6 @@ union recv_frame *recvframe_chk_defrag(PADAPTER padapter, union recv_frame *prec } - if ((prtnframe != NULL) && (prtnframe->u.hdr.attrib.privacy)) { /* after defrag we must check tkip mic code */ if (recvframe_chkmic(padapter, prtnframe) == _FAIL) { @@ -2670,7 +2630,6 @@ union recv_frame *recvframe_chk_defrag(PADAPTER padapter, union recv_frame *prec } } - return prtnframe; } @@ -2835,7 +2794,6 @@ int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, union rec /* _enter_critical_ex(&ppending_recvframe_queue->lock, &irql); */ /* _rtw_spinlock_ex(&ppending_recvframe_queue->lock); */ - phead = get_list_head(ppending_recvframe_queue); plist = get_next(phead); @@ -2858,7 +2816,6 @@ int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, union rec } - /* _enter_critical_ex(&ppending_recvframe_queue->lock, &irql); */ /* _rtw_spinlock_ex(&ppending_recvframe_queue->lock); */ @@ -2998,7 +2955,6 @@ int recv_indicatepkts_in_order(_adapter *padapter, struct recv_reorder_ctrl *pre /* error condition; */ } - /* Update local variables. */ bPktInBuf = _FALSE; @@ -3129,7 +3085,6 @@ int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe) _enter_critical_bh(&ppending_recvframe_queue->lock, &irql); - /* s2. check if winstart_b(indicate_seq) needs to been updated */ if (!check_indicate_seq(preorder_ctrl, pattrib->seq_num)) { pdbgpriv->dbg_rx_ampdu_drop_count++; @@ -3152,7 +3107,6 @@ int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe) #endif } - /* s3. Insert all packet into Reorder Queue to maintain its ordering. */ if (!enqueue_reorder_recvframe(preorder_ctrl, prframe)) { /* DbgPrint("recv_indicatepkt_reorder, enqueue_reorder_recvframe fail!\n"); */ @@ -3164,7 +3118,6 @@ int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe) goto _err_exit; } - /* s4. */ /* Indication process. */ /* After Packet dropping and Sliding Window shifting as above, we can now just indicate the packets */ @@ -3188,7 +3141,6 @@ int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe) _cancel_timer_ex(&preorder_ctrl->reordering_ctrl_timer); } - _success_exit: return _SUCCESS; @@ -3200,7 +3152,6 @@ int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe) return _FAIL; } - void rtw_reordering_ctrl_timeout_handler(void *pcontext) { _irqL irql; @@ -3208,7 +3159,6 @@ void rtw_reordering_ctrl_timeout_handler(void *pcontext) _adapter *padapter = preorder_ctrl->padapter; _queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue; - if (RTW_CANNOT_RUN(padapter)) return; @@ -3392,7 +3342,6 @@ static sint MPwlanhdr_to_ethhdr(union recv_frame *precvframe) _rtw_memcpy(ptr + 12, &len, 2); } - len = htons(pattrib->seq_num); /* RTW_INFO("wlan seq = %d ,seq_num =%x\n",len,pattrib->seq_num); */ _rtw_memcpy(ptr + 12, &len, 2); @@ -3405,12 +3354,10 @@ static sint MPwlanhdr_to_ethhdr(union recv_frame *precvframe) } - return ret; } - int mp_recv_frame(_adapter *padapter, union recv_frame *rframe) { int ret = _SUCCESS; @@ -3677,7 +3624,6 @@ static sint fill_radiotap_hdr(_adapter *padapter, union recv_frame *precvframe) /* always append FCS */ hdr_buf[rt_len] |= IEEE80211_RADIOTAP_F_FCS; - if (0) hdr_buf[rt_len] |= IEEE80211_RADIOTAP_F_DATAPAD; @@ -3931,7 +3877,6 @@ int recv_frame_monitor(_adapter *padapter, union recv_frame *rframe) _queue *pfree_recv_queue = &padapter->recvpriv.free_recv_queue; _pkt *pskb = NULL; - /* fill radiotap header */ if (fill_radiotap_hdr(padapter, rframe) == _FAIL) { ret = _FAIL; @@ -4148,7 +4093,6 @@ int recv_func_posthandle(_adapter *padapter, union recv_frame *prframe) return ret; } - int recv_func(_adapter *padapter, union recv_frame *rframe); int recv_func(_adapter *padapter, union recv_frame *rframe) { @@ -4213,7 +4157,6 @@ int recv_func(_adapter *padapter, union recv_frame *rframe) return ret; } - s32 rtw_recv_entry(union recv_frame *precvframe) { _adapter *padapter; @@ -4232,7 +4175,6 @@ s32 rtw_recv_entry(union recv_frame *precvframe) goto _recv_entry_drop; } - precvpriv->rx_pkts++; @@ -4245,16 +4187,21 @@ s32 rtw_recv_entry(union recv_frame *precvframe) padapter->mppriv.rx_pktloss = precvpriv->rx_drop; #endif - - return ret; } -#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +void rtw_signal_stat_timer_hdl(struct timer_list *t) +#else void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS) +#endif { - _adapter *adapter = (_adapter *)FunctionContext; - struct recv_priv *recvpriv = &adapter->recvpriv; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + _adapter *padapter = from_timer(padapter, t, recvpriv.signal_stat_timer); +#else + _adapter *padapter = (_adapter *)FunctionContext; +#endif + struct recv_priv *recvpriv = &padapter->recvpriv; u32 tmp_s, tmp_q; u8 avg_signal_strength = 0; @@ -4263,10 +4210,10 @@ void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS) u32 num_signal_qual = 0; u8 ratio_pre_stat = 0, ratio_curr_stat = 0, ratio_total = 0, ratio_profile = SIGNAL_STAT_CALC_PROFILE_0; - if (adapter->recvpriv.is_signal_dbg) { + if(padapter->recvpriv.is_signal_dbg) { /* update the user specific value, signal_strength_dbg, to signal_strength, rssi */ - adapter->recvpriv.signal_strength = adapter->recvpriv.signal_strength_dbg; - adapter->recvpriv.rssi = (s8)translate_percentage_to_dbm((u8)adapter->recvpriv.signal_strength_dbg); + padapter->recvpriv.signal_strength = padapter->recvpriv.signal_strength_dbg; + padapter->recvpriv.rssi=(s8)translate_percentage_to_dbm((u8)padapter->recvpriv.signal_strength_dbg); } else { if (recvpriv->signal_strength_data.update_req == 0) { /* update_req is clear, means we got rx */ @@ -4290,8 +4237,8 @@ void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS) goto set_timer; } - if (check_fwstate(&adapter->mlmepriv, _FW_UNDER_SURVEY) == _TRUE - || check_fwstate(&adapter->mlmepriv, _FW_LINKED) == _FALSE + if (check_fwstate(&padapter->mlmepriv, _FW_UNDER_SURVEY) == _TRUE + || check_fwstate(&padapter->mlmepriv, _FW_LINKED) == _FALSE ) goto set_timer; @@ -4344,8 +4291,11 @@ void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS) } set_timer: +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + _set_timer(&recvpriv->signal_stat_timer, recvpriv->signal_stat_sampling_interval); +#else rtw_set_signal_stat_timer(recvpriv); - +#endif } #endif /* CONFIG_NEW_SIGNAL_STAT_PROCESS */ @@ -4589,7 +4539,6 @@ void rtw_reset_continual_no_rx_packet(struct sta_info *sta, int tid_index) ATOMIC_SET(&sta->continual_no_rx_packet[tid_index], 0); } - s32 pre_recv_entry(union recv_frame *precvframe, u8 *pphy_status) { s32 ret = _SUCCESS; From 49998d9179a8b5bd1fc781f9fd3c1247d3048655 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 6 Dec 2017 20:24:01 +0100 Subject: [PATCH 142/234] Fix API change in kernel v4.15 In this kernel, the timer setup and handlers changed quite a bit. --- include/rtw_mlme.h | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/include/rtw_mlme.h b/include/rtw_mlme.h index 839027ea6..6205484dc 100644 --- a/include/rtw_mlme.h +++ b/include/rtw_mlme.h @@ -20,7 +20,6 @@ #ifndef __RTW_MLME_H_ #define __RTW_MLME_H_ - #define MAX_BSS_CNT 128 /* #define MAX_JOIN_TIMEOUT 2000 */ /* #define MAX_JOIN_TIMEOUT 2500 */ @@ -162,7 +161,6 @@ enum SCAN_RESULT_TYPE { }; /* - 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. @@ -173,10 +171,8 @@ Other items are protected by mlme_priv.lock. To avoid possible dead lock, any thread trying to modifiying mlme_priv SHALL not lock up more than one locks at a time! - */ - #define traffic_threshold 10 #define traffic_scan_period 500 @@ -761,7 +757,6 @@ extern int hostapd_mode_init(_adapter *padapter); extern void hostapd_mode_unload(_adapter *padapter); #endif - extern void rtw_joinbss_event_prehandle(_adapter *adapter, u8 *pbuf); extern void rtw_survey_event_callback(_adapter *adapter, u8 *pbuf); extern void rtw_surveydone_event_callback(_adapter *adapter, u8 *pbuf); @@ -775,8 +770,14 @@ extern void rtw_wmm_event_callback(PADAPTER padapter, u8 *pbuf); #ifdef CONFIG_IEEE80211W void rtw_sta_timeout_event_callback(_adapter *adapter, u8 *pbuf); #endif /* CONFIG_IEEE80211W */ + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) +void rtw_join_timeout_handler(struct timer_list *t); +void _rtw_scan_timeout_handler(struct timer_list *t); +#else extern void rtw_join_timeout_handler(RTW_TIMER_HDL_ARGS); extern void _rtw_scan_timeout_handler(RTW_TIMER_HDL_ARGS); +#endif thread_return event_thread(thread_context context); @@ -956,16 +957,13 @@ void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv); int rtw_mlme_update_wfd_ie_data(struct mlme_priv *mlme, u8 type, u8 *ie, u32 ie_len); #endif - /* extern struct wlan_network* _rtw_dequeue_network(_queue *queue); */ extern struct wlan_network *_rtw_alloc_network(struct mlme_priv *pmlmepriv); - extern void _rtw_free_network(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork, u8 isfreeall); extern void _rtw_free_network_nolock(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork); - extern struct wlan_network *_rtw_find_network(_queue *scanned_queue, u8 *addr); extern void _rtw_free_network_queue(_adapter *padapter, u8 isfreeall); @@ -978,7 +976,6 @@ u8 *rtw_get_capability_from_ie(u8 *ie); u8 *rtw_get_timestampe_from_ie(u8 *ie); u8 *rtw_get_beacon_interval_from_ie(u8 *ie); - void rtw_joinbss_reset(_adapter *padapter); #ifdef CONFIG_80211N_HT From 1220d7fdcca75bb55c88a31dc550b8d707f423dc Mon Sep 17 00:00:00 2001 From: Christian B Date: Thu, 7 Dec 2017 07:17:39 +0100 Subject: [PATCH 143/234] Fix compilation errors/crashes * Fixed compilation errors/crashes that were introduced with kernel v4.15 support patches. --- core/rtw_recv.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/core/rtw_recv.c b/core/rtw_recv.c index 27332f319..ff37aa09d 100755 --- a/core/rtw_recv.c +++ b/core/rtw_recv.c @@ -498,7 +498,6 @@ sint recvframe_chkmic(_adapter *adapter, union recv_frame *precvframe) pframe = precvframe->u.hdr.rx_data; payload = pframe + prxattrib->hdrlen + prxattrib->iv_len; - /* rtw_seccalctkipmic(&stainfo->dot11tkiprxmickey.skey[0],pframe,payload, datalen ,&miccode[0],(unsigned char)prxattrib->priority); */ /* care the length of the data */ rtw_seccalctkipmic(mickey, pframe, payload, datalen , &miccode[0], (unsigned char)prxattrib->priority); /* care the length of the data */ @@ -875,7 +874,6 @@ void process_wmmps_data(_adapter *padapter, union recv_frame *precv_frame) } - #endif } @@ -4231,8 +4229,8 @@ void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS) } if (num_signal_strength == 0) { - if (rtw_get_on_cur_ch_time(adapter) == 0 - || rtw_get_passing_time_ms(rtw_get_on_cur_ch_time(adapter)) < 2 * adapter->mlmeextpriv.mlmext_info.bcn_interval + if (rtw_get_on_cur_ch_time(padapter) == 0 + || rtw_get_passing_time_ms(rtw_get_on_cur_ch_time(padapter)) < 2 * padapter->mlmeextpriv.mlmext_info.bcn_interval ) goto set_timer; } @@ -4295,9 +4293,8 @@ void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS) _set_timer(&recvpriv->signal_stat_timer, recvpriv->signal_stat_sampling_interval); #else rtw_set_signal_stat_timer(recvpriv); -#endif -} #endif /* CONFIG_NEW_SIGNAL_STAT_PROCESS */ +} static void rx_process_rssi(_adapter *padapter, union recv_frame *prframe) { From 2d6512e7c4fe151f6fa236119c45a8bb6e3b7af4 Mon Sep 17 00:00:00 2001 From: Christian B Date: Fri, 8 Dec 2017 13:12:11 +0100 Subject: [PATCH 144/234] Fix compile warning * Fixed a simple compile warning --- os_dep/linux/wifi_regd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/os_dep/linux/wifi_regd.c b/os_dep/linux/wifi_regd.c index 7e9d39a1c..fa8ba7b5b 100644 --- a/os_dep/linux/wifi_regd.c +++ b/os_dep/linux/wifi_regd.c @@ -12,7 +12,7 @@ void rtw_reg_notify_by_driver(_adapter *adapter) { - return 0; + return; } int rtw_regd_init(_adapter *padapter) From e0da194c36fe6c9b1d59ea991a419a1c0803cfc0 Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 10 Dec 2017 17:59:26 +0100 Subject: [PATCH 145/234] Hal_SetAntenna(): fix -Wswitch-unreachable * Fixed unreachable switch in 8812au antenna --- hal/hal_mp.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hal/hal_mp.c b/hal/hal_mp.c index 4f53504b2..f7d86180f 100644 --- a/hal/hal_mp.c +++ b/hal/hal_mp.c @@ -985,8 +985,9 @@ void mpt_SetRFPath_8812A(PADAPTER pAdapter) } switch (ulAntennaRx) { - u32 reg0xC50 = 0; + u32 reg0xC50; case ANTENNA_A: + reg0xC50 = 0; PHY_SetBBReg(pAdapter, rRxPath_Jaguar, bMaskByte0, 0x11); PHY_SetRFReg(pAdapter, ODM_RF_PATH_B, RF_AC_Jaguar, 0xF0000, 0x1); /*/ RF_B_0x0[19:16] = 1, Standby mode*/ PHY_SetBBReg(pAdapter, rCCK_RX_Jaguar, bCCK_RX_Jaguar, 0x0); @@ -1013,6 +1014,7 @@ void mpt_SetRFPath_8812A(PADAPTER pAdapter) } break; case ANTENNA_B: + reg0xC50 = 0; PHY_SetBBReg(pAdapter, rRxPath_Jaguar, bMaskByte0, 0x22); PHY_SetRFReg(pAdapter, ODM_RF_PATH_A, RF_AC_Jaguar, 0xF0000, 0x1);/*/ RF_A_0x0[19:16] = 1, Standby mode */ PHY_SetBBReg(pAdapter, rCCK_RX_Jaguar, bCCK_RX_Jaguar, 0x1); From 9e274ac86a67ee70c2b3489f805070724a047d8b Mon Sep 17 00:00:00 2001 From: Christian B Date: Mon, 11 Dec 2017 06:36:15 +0100 Subject: [PATCH 146/234] Various EFUSE fixes --- core/efuse/rtw_efuse.c | 67 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/core/efuse/rtw_efuse.c b/core/efuse/rtw_efuse.c index 9dc893023..04fbb3728 100644 --- a/core/efuse/rtw_efuse.c +++ b/core/efuse/rtw_efuse.c @@ -336,6 +336,62 @@ u16 rtw_get_efuse_mask_arraylen(PADAPTER pAdapter) return 0; } + +VOID efuse_PreUpdateAction( + PADAPTER pAdapter, + pu4Byte BackupRegs) +{ + if (IS_HARDWARE_TYPE_8812AU(pAdapter)) { + /* <20131115, Kordan> Turn off Rx to prevent from being busy when writing the EFUSE. (Asked by Chunchu.)*/ + BackupRegs[0] = PHY_QueryMacReg(pAdapter, REG_RCR, bMaskDWord); + BackupRegs[1] = PHY_QueryMacReg(pAdapter, REG_RXFLTMAP0, bMaskDWord); + BackupRegs[2] = PHY_QueryMacReg(pAdapter, REG_RXFLTMAP0+4, bMaskDWord); + BackupRegs[3] = PHY_QueryMacReg(pAdapter, REG_AFE_MISC, bMaskDWord); + + PlatformEFIOWrite4Byte(pAdapter, REG_RCR, 0x1); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+1, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+2, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+3, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+4, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+5, 0); + + /* <20140410, Kordan> 0x11 = 0x4E, lower down LX_SPS0 voltage. (Asked by Chunchu)*/ + PHY_SetMacReg(pAdapter, REG_AFE_MISC, bMaskByte1, 0x4E); + } + if (IS_HARDWARE_TYPE_8814AU(pAdapter)) { + /* <20131115, Kordan> Turn off Rx to prevent from being busy when writing the EFUSE. (Asked by Chunchu.)*/ + BackupRegs[0] = PHY_QueryMacReg(pAdapter, REG_RCR, bMaskDWord); + BackupRegs[1] = PHY_QueryMacReg(pAdapter, REG_RXFLTMAP0, bMaskDWord); + BackupRegs[2] = PHY_QueryMacReg(pAdapter, REG_RXFLTMAP0+4, bMaskDWord); + BackupRegs[3] = PHY_QueryMacReg(pAdapter, REG_AFE_MISC, bMaskDWord); + + PlatformEFIOWrite4Byte(pAdapter, REG_RCR, 0x1); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+1, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+2, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+3, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+4, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+5, 0); + + /* <20140410, Kordan> 0x11 = 0x4E, lower down LX_SPS0 voltage. (Asked by Chunchu)*/ + PHY_SetMacReg(pAdapter, REG_AFE_MISC, bMaskByte1, 0x4E); + } +} + +VOID efuse_PostUpdateAction( + PADAPTER pAdapter, + pu4Byte BackupRegs) +{ + if (IS_HARDWARE_TYPE_8812AU(pAdapter)) { + /* <20131115, Kordan> Turn on Rx and restore the registers. (Asked by Chunchu.)*/ + PHY_SetMacReg(pAdapter, REG_RCR, bMaskDWord, BackupRegs[0]); + PHY_SetMacReg(pAdapter, REG_RXFLTMAP0, bMaskDWord, BackupRegs[1]); + PHY_SetMacReg(pAdapter, REG_RXFLTMAP0+4, bMaskDWord, BackupRegs[2]); + PHY_SetMacReg(pAdapter, REG_AFE_MISC, bMaskDWord, BackupRegs[3]); + } +} + #ifdef RTW_HALMAC #include "../../hal/hal_halmac.h" @@ -1561,6 +1617,8 @@ efuse_OneByteWrite( } else rtw_write32(pAdapter, EFUSE_CTRL, efuseValue); + rtw_mdelay_os(1); + while ((0x80 & rtw_read8(pAdapter, EFUSE_CTRL + 3)) && (tmpidx < 100)) { rtw_mdelay_os(1); tmpidx++; @@ -1661,6 +1719,9 @@ u8 rtw_efuse_access(PADAPTER padapter, u8 bWrite, u16 start_addr, u16 cnts, u8 * u16 real_content_len = 0, max_available_size = 0; u8 res = _FAIL ; u8(*rw8)(PADAPTER, u16, u8 *); + u32 backupRegs[4] = {0}; + + efuse_PreUpdateAction(padapter, backupRegs) EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_REAL_CONTENT_LEN, (PVOID)&real_content_len, _FALSE); EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_available_size, _FALSE); @@ -1691,6 +1752,8 @@ u8 rtw_efuse_access(PADAPTER padapter, u8 bWrite, u16 start_addr, u16 cnts, u8 * Efuse_PowerSwitch(padapter, bWrite, _FALSE); + efuse_PostUpdateAction(padapter, backupRegs); + return res; } /* ------------------------------------------------------------------------------ */ @@ -1782,8 +1845,11 @@ u8 rtw_efuse_map_write(PADAPTER padapter, u16 addr, u16 cnts, u8 *data) s32 i, j, idx; u8 ret = _SUCCESS; u16 mapLen = 0; + u32 backupRegs[4] = {0}; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + efuse_PreUpdateAction(padapter, backupRegs); + EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE); if ((addr + cnts) > mapLen) @@ -1856,6 +1922,7 @@ u8 rtw_efuse_map_write(PADAPTER padapter, u16 addr, u16 cnts, u8 *data) /*Efuse_PowerSwitch(padapter, _TRUE, _FALSE);*/ exit: + efuse_PostUpdateAction(padapter, backupRegs); rtw_mfree(map, mapLen); From da693a9317c1709b99dbbaf42957c9f0bbdfb4e2 Mon Sep 17 00:00:00 2001 From: Christian B Date: Mon, 11 Dec 2017 06:45:55 +0100 Subject: [PATCH 147/234] Kernel specified beforehand * A different kernel version specified beforehand can now be used --- Makefile | 76 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/Makefile b/Makefile index 6fac1e5fa..2802bf9da 100755 --- a/Makefile +++ b/Makefile @@ -1059,7 +1059,7 @@ EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT SUBARCH := $(shell uname -m | sed -e s/i.86/i386/) ARCH ?= $(SUBARCH) CROSS_COMPILE ?= -KVER := $(shell uname -r) +KVER ?= $(shell uname -r) KSRC := /lib/modules/$(KVER)/build MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ INSTALL_PREFIX := @@ -1071,7 +1071,7 @@ EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFO ARCH := $(R_ARCH) #CROSS_COMPILE := arm-none-linux-gnueabi- CROSS_COMPILE := $(R_CROSS_COMPILE) -KVER:= 3.4.0 +KVER ?= 3.4.0 #KSRC := ../../../../build/out/kernel KSRC := $(KERNEL_BUILD_PATH) MODULE_NAME :=wlan @@ -1134,10 +1134,10 @@ endif ifeq ($(CONFIG_PLATFORM_MSTAR_TITANIA12), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MSTAR -DCONFIG_PLATFORM_MSTAR_TITANIA12 -ARCH:=mips +ARCH :=mips CROSS_COMPILE:= /usr/src/Mstar_kernel/mips-4.3/bin/mips-linux-gnu- -KVER:= 2.6.28.9 -KSRC:= /usr/src/Mstar_kernel/2.6.28.9/ +KVER ?= 2.6.28.9 +KSRC := /usr/src/Mstar_kernel/2.6.28.9/ endif ifeq ($(CONFIG_PLATFORM_MSTAR), y) @@ -1145,10 +1145,10 @@ EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MSTAR -DCONFIG_USE_USB_BUFFER_ALLOC_TX -DCONFIG_FIX_NR_BULKIN_BUFFER -DCONFIG_PREALLOC_RX_SKB_BUFFER EXTRA_CFLAGS += -DCONFIG_PLATFORM_MSTAR_HIGH -ARCH:=arm +ARCH :=arm CROSS_COMPILE:= /usr/src/bin/arm-none-linux-gnueabi- -KVER:= 3.1.10 -KSRC:= /usr/src/Mstar_kernel/3.1.10/ +KVER ?= 3.1.10 +KSRC := /usr/src/Mstar_kernel/3.1.10/ endif ifeq ($(CONFIG_PLATFORM_ANDROID_X86), y) @@ -1187,7 +1187,7 @@ ifeq ($(CONFIG_PLATFORM_ARM_PXA2XX), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN ARCH := arm CROSS_COMPILE := arm-none-linux-gnueabi- -KVER := 2.6.34.1 +KVER ?= 2.6.34.1 KSRC ?= /usr/src/linux-2.6.34.1 endif @@ -1195,7 +1195,7 @@ ifeq ($(CONFIG_PLATFORM_ARM_S3C2K4), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN ARCH := arm CROSS_COMPILE := arm-linux- -KVER := 2.6.24.7_$(ARCH) +KVER ?= 2.6.24.7_$(ARCH) KSRC := /usr/src/kernels/linux-$(KVER) endif @@ -1203,40 +1203,40 @@ ifeq ($(CONFIG_PLATFORM_ARM_S3C6K4), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN ARCH := arm CROSS_COMPILE := arm-none-linux-gnueabi- -KVER := 2.6.34.1 +KVER ?= 2.6.34.1 KSRC ?= /usr/src/linux-2.6.34.1 endif ifeq ($(CONFIG_PLATFORM_RTD2880B), y) EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN -DCONFIG_PLATFORM_RTD2880B -ARCH:= +ARCH := CROSS_COMPILE:= -KVER:= -KSRC:= +KVER ?= +KSRC := endif ifeq ($(CONFIG_PLATFORM_MIPS_RMI), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -ARCH:=mips +ARCH :=mips CROSS_COMPILE:=mipsisa32r2-uclibc- -KVER:= -KSRC:= /root/work/kernel_realtek +KVER ?= +KSRC := /root/work/kernel_realtek endif ifeq ($(CONFIG_PLATFORM_MIPS_PLM), y) EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN -ARCH:=mips +ARCH :=mips CROSS_COMPILE:=mipsisa32r2-uclibc- -KVER:= -KSRC:= /root/work/kernel_realtek +KVER ?= +KSRC := /root/work/kernel_realtek endif ifeq ($(CONFIG_PLATFORM_MSTAR389), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MSTAR389 -ARCH:=mips +ARCH :=mips CROSS_COMPILE:= mips-linux-gnu- -KVER:= 2.6.28.10 -KSRC:= /home/mstar/mstar_linux/2.6.28.9/ +KVER ?= 2.6.28.10 +KSRC := /home/mstar/mstar_linux/2.6.28.9/ endif ifeq ($(CONFIG_PLATFORM_MIPS_AR9132), y) @@ -1260,25 +1260,25 @@ EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS ifeq ($(CONFIG_USB_HCI), y) _PLATFORM_FILES += platform/platform_RTK_DMP_usb.o endif -ARCH:=mips -CROSS_COMPILE:=mipsel-linux- -KVER:= +ARCH :=mips +CROSS_COMPILE :=mipsel-linux- +KVER ?= KSRC ?= /usr/src/DMP_Kernel/jupiter/linux-2.6.12 endif ifeq ($(CONFIG_PLATFORM_MT53XX), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MT53XX -ARCH:= arm +ARCH := arm CROSS_COMPILE:= arm11_mtk_le- -KVER:= 2.6.27 -KSRC?= /proj/mtk00802/BD_Compare/BDP/Dev/BDP_V301/BDP_Linux/linux-2.6.27 +KVER ?= 2.6.27 +KSRC ?= /proj/mtk00802/BD_Compare/BDP/Dev/BDP_V301/BDP_Linux/linux-2.6.27 endif ifeq ($(CONFIG_PLATFORM_ARM_MX51_241H), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_WISTRON_PLATFORM ARCH := arm CROSS_COMPILE := /opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi- -KVER := 2.6.31 +KVER ?= 2.6.31 KSRC ?= /lib/modules/2.6.31-770-g0e46b52/source endif @@ -1293,7 +1293,7 @@ ifeq ($(CONFIG_PLATFORM_ACTIONS_ATJ227X), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ACTIONS_ATJ227X ARCH := mips CROSS_COMPILE := /home/cnsd4/project/actions/tools-2.6.27/bin/mipsel-linux-gnu- -KVER := 2.6.27 +KVER ?= 2.6.27 KSRC := /home/cnsd4/project/actions/linux-2.6.27.28 endif @@ -1307,14 +1307,14 @@ ARCH := arm CROSS_COMPILE := /opt/montavista/pro5.0/devkit/arm/v5t_le/bin/arm-linux- KSRC:= /home/vivotek/lsp/DM365/kernel_platform/kernel/linux-2.6.18 KERNELOUTPUT := ${PRODUCTDIR}/tmp -KVER := 2.6.18 +KVER ?= 2.6.18 endif ifeq ($(CONFIG_PLATFORM_MOZART), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MOZART ARCH := arm CROSS_COMPILE := /home/vivotek/lsp/mozart3v2/Mozart3e_Toolchain/build_arm_nofpu/usr/bin/arm-linux- -KVER := $(shell uname -r) +KVER ?= $(shell uname -r) KSRC:= /opt/Vivotek/lsp/mozart3v2/kernel_platform/kernel/mozart_kernel-1.17 KERNELOUTPUT := /home/pink/sample/ODM/IP8136W-VINT/tmp/kernel endif @@ -1439,8 +1439,8 @@ ifeq ($(CONFIG_PLATFORM_SZEBOOK), y) EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN ARCH:=arm CROSS_COMPILE:=/opt/crosstool2/bin/armeb-unknown-linux-gnueabi- -KVER:= 2.6.31.6 -KSRC:= ../code/linux-2.6.31.6-2020/ +KVER ?= 2.6.31.6 +KSRC := ../code/linux-2.6.31.6-2020/ endif #Add setting for MN10300 @@ -1448,7 +1448,7 @@ ifeq ($(CONFIG_PLATFORM_MN10300), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MN10300 ARCH := mn10300 CROSS_COMPILE := mn10300-linux- -KVER := 2.6.32.2 +KVER ?= 2.6.32.2 KSRC := /home/winuser/work/Plat_sLD2T_V3010/usr/src/linux-2.6.32.2 INSTALL_PREFIX := endif @@ -1474,7 +1474,7 @@ endif ARCH := arm #CROSS_COMPILE := arm-none-linux-gnueabi- CROSS_COMPILE=/home/android_sdk/Allwinner/a10/android-jb42/lichee-jb42/buildroot/output/external-toolchain/bin/arm-none-linux-gnueabi- -KVER := 3.0.8 +KVER ?= 3.0.8 #KSRC:= ../lichee/linux-3.0/ KSRC=/home/android_sdk/Allwinner/a10/android-jb42/lichee-jb42/linux-3.0 endif @@ -1760,7 +1760,7 @@ EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_RX EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX ARCH ?= arm CROSS_COMPILE := arm-linux-gnueabihf- -KVER := 3.8.0 +KVER ?= 3.8.0 KSRC := /Custom/Novatek/TCL/linux-3.8_header #KSRC := $(KERNELDIR) endif From cac273de3491286acccbc957c8d781f5d98a31ff Mon Sep 17 00:00:00 2001 From: Christian B Date: Mon, 11 Dec 2017 08:00:22 +0100 Subject: [PATCH 148/234] Fixed EFUSE compile warning/crash * Fixed a crash in the EFUSE fix pushed earlier --- core/efuse/rtw_efuse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/efuse/rtw_efuse.c b/core/efuse/rtw_efuse.c index 04fbb3728..aa05ce8be 100644 --- a/core/efuse/rtw_efuse.c +++ b/core/efuse/rtw_efuse.c @@ -1721,7 +1721,7 @@ u8 rtw_efuse_access(PADAPTER padapter, u8 bWrite, u16 start_addr, u16 cnts, u8 * u8(*rw8)(PADAPTER, u16, u8 *); u32 backupRegs[4] = {0}; - efuse_PreUpdateAction(padapter, backupRegs) + efuse_PreUpdateAction(padapter, backupRegs); EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_REAL_CONTENT_LEN, (PVOID)&real_content_len, _FALSE); EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_available_size, _FALSE); From 3416ea1dbd6d1b3167440feb9a5a6dcf0beb0799 Mon Sep 17 00:00:00 2001 From: Christian B Date: Mon, 11 Dec 2017 20:17:51 +0100 Subject: [PATCH 149/234] Various EFUSE fixes * Several fixes for 8812au EFUSE (TODO: 8814au) --- hal/rtl8812a/rtl8812a_hal_init.c | 1133 +++++++++++++++--------------- 1 file changed, 586 insertions(+), 547 deletions(-) diff --git a/hal/rtl8812a/rtl8812a_hal_init.c b/hal/rtl8812a/rtl8812a_hal_init.c index a2d303250..4d56edf8b 100644 --- a/hal/rtl8812a/rtl8812a_hal_init.c +++ b/hal/rtl8812a/rtl8812a_hal_init.c @@ -1796,15 +1796,6 @@ Hal_EfusePowerSwitch8812A( } } -static VOID -rtl8812_EfusePowerSwitch( - IN PADAPTER pAdapter, - IN u8 bWrite, - IN u8 PwrState) -{ - Hal_EfusePowerSwitch8812A(pAdapter, bWrite, PwrState); -} - static BOOLEAN Hal_EfuseSwitchToBank8812A( IN PADAPTER pAdapter, @@ -1825,14 +1816,14 @@ Hal_EfuseReadEFuse8812A( ) { u8 *efuseTbl = NULL; + u8 rtemp8[1]; u16 eFuse_Addr = 0; - u8 offset = 0, wden = 0; + u8 offset, wren; u16 i, j; u16 **eFuseWord = NULL; u16 efuse_utilized = 0; u8 efuse_usage = 0; - u8 offset_2_0 = 0; - u8 efuseHeader = 0, efuseExtHdr = 0, efuseData = 0; + u8 u1temp = 0; /* */ /* Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. */ @@ -1864,99 +1855,105 @@ Hal_EfuseReadEFuse8812A( /* 1. Read the first byte to check if efuse is empty!!! */ /* */ /* */ - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); - - if (efuseHeader != 0xFF) + ReadEFuseByte(Adapter, eFuse_Addr, rtemp8, bPseudoTest); + if (*rtemp8 != 0xFF) { efuse_utilized++; - else { - RTW_INFO("EFUSE is empty\n"); - efuse_utilized = 0; + /* RTW_INFO("efuse_Addr-%d efuse_data=%x\n", eFuse_Addr, *rtemp8); */ + eFuse_Addr++; + } else { + RTW_INFO("EFUSE is empty efuse_Addr-%d efuse_data=%x\n", eFuse_Addr, *rtemp8); goto exit; } - /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("Hal_EfuseReadEFuse8812A(): efuse_utilized: %d\n", efuse_utilized)); */ /* */ /* 2. Read real efuse content. Filter PG header and every section data. */ /* */ - while ((efuseHeader != 0xFF) && AVAILABLE_EFUSE_ADDR_8812(eFuse_Addr)) { + while ((*rtemp8 != 0xFF) && (eFuse_Addr < EFUSE_REAL_CONTENT_LEN_JAGUAR)) { /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("efuse_Addr-%d efuse_data=%x\n", eFuse_Addr-1, *rtemp8)); */ /* Check PG header for section num. */ - if (EXT_HEADER(efuseHeader)) { /* extended header */ - offset_2_0 = GET_HDR_OFFSET_2_0(efuseHeader); - /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("extended header offset_2_0=%X\n", offset_2_0)); */ + if ((*rtemp8 & 0x1F) == 0x0F) { /* extended header */ + u1temp = ((*rtemp8 & 0xE0) >> 5); + /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("extended header u1temp=%x *rtemp&0xE0 0x%x\n", u1temp, *rtemp8 & 0xE0)); */ - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseExtHdr, bPseudoTest); + /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("extended header u1temp=%x\n", u1temp)); */ - /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("efuse[%X]=%X\n", eFuse_Addr-1, efuseExtHdr)); */ + ReadEFuseByte(Adapter, eFuse_Addr, rtemp8, bPseudoTest); - if (efuseExtHdr != 0xff) { - efuse_utilized++; - if (ALL_WORDS_DISABLED(efuseExtHdr)) { - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); - if (efuseHeader != 0xff) - efuse_utilized++; - break; - } else { - offset = ((efuseExtHdr & 0xF0) >> 1) | offset_2_0; - wden = (efuseExtHdr & 0x0F); - } + /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("extended header efuse_Addr-%d efuse_data=%x\n", eFuse_Addr, *rtemp8)); */ + + if ((*rtemp8 & 0x0F) == 0x0F) { + eFuse_Addr++; + ReadEFuseByte(Adapter, eFuse_Addr, rtemp8, bPseudoTest); + + if (*rtemp8 != 0xFF && (eFuse_Addr < EFUSE_REAL_CONTENT_LEN_JAGUAR)) + eFuse_Addr++; + continue; } else { - RTW_INFO("Error condition, extended = 0xff\n"); - /* We should handle this condition. */ - break; + offset = ((*rtemp8 & 0xF0) >> 1) | u1temp; + wren = (*rtemp8 & 0x0F); + eFuse_Addr++; } } else { - offset = ((efuseHeader >> 4) & 0x0f); - wden = (efuseHeader & 0x0f); + offset = ((*rtemp8 >> 4) & 0x0f); + wren = (*rtemp8 & 0x0f); } if (offset < EFUSE_MAX_SECTION_JAGUAR) { /* Get word enable value from PG header */ - /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("Offset-%X Worden=%X\n", offset, wden)); */ + /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Offset-%d Worden=%x\n", offset, wren)); */ for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) { /* Check word enable condition in the section */ - if (!(wden & (0x01 << i))) { - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseData, bPseudoTest); - /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("efuse[%X]=%X\n", eFuse_Addr-1, efuseData)); */ + if (!(wren & 0x01)) { + /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Addr=%d\n", eFuse_Addr)); */ + ReadEFuseByte(Adapter, eFuse_Addr, rtemp8, bPseudoTest); + eFuse_Addr++; efuse_utilized++; - eFuseWord[offset][i] = (efuseData & 0xff); + eFuseWord[offset][i] = (*rtemp8 & 0xff); - if (!AVAILABLE_EFUSE_ADDR_8812(eFuse_Addr)) + + if (eFuse_Addr >= EFUSE_REAL_CONTENT_LEN_JAGUAR) break; - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseData, bPseudoTest); - /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("efuse[%X]=%X\n", eFuse_Addr-1, efuseData)); */ + /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Addr=%d", eFuse_Addr)); */ + ReadEFuseByte(Adapter, eFuse_Addr, rtemp8, bPseudoTest); + eFuse_Addr++; + efuse_utilized++; - eFuseWord[offset][i] |= (((u16)efuseData << 8) & 0xff00); + eFuseWord[offset][i] |= (((u2Byte)*rtemp8 << 8) & 0xff00); - if (!AVAILABLE_EFUSE_ADDR_8812(eFuse_Addr)) + if (eFuse_Addr >= EFUSE_REAL_CONTENT_LEN_JAGUAR) break; } + + wren >>= 1; + } } else { /* deal with error offset,skip error data */ RTW_PRINT("invalid offset:0x%02x\n", offset); for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) { /* Check word enable condition in the section */ - if (!(wden & 0x01)) { + if (!(wren & 0x01)) { eFuse_Addr++; efuse_utilized++; - if (!AVAILABLE_EFUSE_ADDR_8812(eFuse_Addr)) + if (eFuse_Addr >= EFUSE_REAL_CONTENT_LEN_JAGUAR) break; eFuse_Addr++; efuse_utilized++; - if (!AVAILABLE_EFUSE_ADDR_8812(eFuse_Addr)) + if (eFuse_Addr >= EFUSE_REAL_CONTENT_LEN_JAGUAR) break; } } } /* Read next PG header */ - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); + ReadEFuseByte(Adapter, eFuse_Addr, rtemp8, bPseudoTest); /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Addr=%d rtemp 0x%x\n", eFuse_Addr, *rtemp8)); */ - if (efuseHeader != 0xFF) + if (*rtemp8 != 0xFF && (eFuse_Addr < EFUSE_REAL_CONTENT_LEN_JAGUAR)) { efuse_utilized++; + eFuse_Addr++; + } } /* */ @@ -1969,7 +1966,6 @@ Hal_EfuseReadEFuse8812A( } } - /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("Hal_EfuseReadEFuse8812A(): efuse_utilized: %d\n", efuse_utilized)); */ /* */ /* 4. Copy from Efuse map to output pointer memory!!! */ @@ -1982,6 +1978,7 @@ Hal_EfuseReadEFuse8812A( /* */ efuse_usage = (u1Byte)((eFuse_Addr * 100) / EFUSE_REAL_CONTENT_LEN_JAGUAR); rtw_hal_set_hwreg(Adapter, HW_VAR_EFUSE_BYTES, (u8 *)&eFuse_Addr); + RTW_INFO("%s: eFuse_Addr offset(%#x) !!\n", __FUNCTION__, eFuse_Addr); exit: if (efuseTbl) @@ -2445,7 +2442,7 @@ hal_EfuseGetCurrentSize_8812A(IN PADAPTER pAdapter, efuse_addr = (u16)(fakeEfuseUsedBytes); else rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&efuse_addr); - /* RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfuseGetCurrentSize_8723A(), start_efuse_addr = %d\n", efuse_addr)); */ + RTW_INFO("%s(), start_efuse_addr = %d\n", __func__, efuse_addr); while (bContinual && efuse_OneByteRead(pAdapter, efuse_addr , &efuse_data, bPseudoTest) && @@ -2475,10 +2472,10 @@ hal_EfuseGetCurrentSize_8812A(IN PADAPTER pAdapter, if (bPseudoTest) { fakeEfuseUsedBytes = efuse_addr; - /* RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfuseGetCurrentSize_8723A(), return %d\n", fakeEfuseUsedBytes)); */ + RTW_INFO("%s(), return %d\n", __func__, fakeEfuseUsedBytes); } else { rtw_hal_set_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&efuse_addr); - /* RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfuseGetCurrentSize_8723A(), return %d\n", efuse_addr)); */ + RTW_INFO("%s(), return %d\n", __func__, efuse_addr); } return efuse_addr; @@ -2712,423 +2709,593 @@ rtl8812_Efuse_PgPacketRead(IN PADAPTER pAdapter, return ret; } -int -hal_EfusePgPacketWrite_8812A(IN PADAPTER pAdapter, - IN u8 offset, - IN u8 word_en, - IN u8 *data, - IN BOOLEAN bPseudoTest) + +BOOLEAN +hal_EfuseFixHeaderProcess( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN PPGPKT_STRUCT pFixPkt, + IN u16 *pAddr, + IN BOOLEAN bPseudoTest +) { - u8 WriteState = PG_STATE_HEADER; + u8 originaldata[8], badworden = 0; + u16 efuse_addr = *pAddr; + u32 PgWriteSuccess = 0; - int bContinual = _TRUE, bDataEmpty = _TRUE; - /* int bResult = _TRUE; */ - u16 efuse_addr = 0; - u8 efuse_data; + _rtw_memset((PVOID)originaldata, 0xff, 8); - u8 pg_header = 0, pg_header_temp = 0; + if (Efuse_PgPacketRead(pAdapter, pFixPkt->offset, originaldata, bPseudoTest)) { + /* check if data exist */ + badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr + 1, pFixPkt->word_en, originaldata, bPseudoTest); - u8 tmp_word_cnts = 0, target_word_cnts = 0; - u8 tmp_header, match_word_en, tmp_word_en; + if (badworden != 0xf) { /* write fail */ + PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pFixPkt->offset, badworden, originaldata, bPseudoTest); + if (!PgWriteSuccess) + return _FALSE; - PGPKT_STRUCT target_pkt; - PGPKT_STRUCT tmp_pkt; + else + efuse_addr = Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest); + } else + efuse_addr = efuse_addr + (pFixPkt->word_cnts * 2) + 1; + } else + efuse_addr = efuse_addr + (pFixPkt->word_cnts * 2) + 1; + *pAddr = efuse_addr; + return _TRUE; +} - u8 originaldata[sizeof(u8) * 8]; - u8 tmpindex = 0, badworden = 0x0F; +static u8 +hal_EfusePgPacketWrite2ByteHeader( + PADAPTER padapter, + u8 efuseType, + u16 *pAddr, + PPGPKT_STRUCT pTargetPkt, + u8 bPseudoTest) +{ + u16 efuse_addr, efuse_max_available_len = 0; + u8 pg_header = 0, tmp_header = 0, pg_header_temp = 0; + u8 repeatcnt = 0; - static int repeat_times = 0; + /* RTW_INFO("%s\n", __FUNCTION__); */ + EFUSE_GetEfuseDefinition(padapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_BANK, &efuse_max_available_len, bPseudoTest); - BOOLEAN bExtendedHeader = _FALSE; - u8 efuseType = EFUSE_WIFI; + efuse_addr = *pAddr; - /* */ - /* Efuse has been pre-programmed dummy 5Bytes at the end of Efuse by CP. */ - /* So we have to prevent unexpected data string connection, which will cause */ - /* incorrect data auto-load from HW. The total size is equal or smaller than 498bytes */ - /* (i.e., offset 0~497, and dummy 1bytes) expected after CP test. */ - /* 2009.02.19. */ - /* */ - if (Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest) >= (EFUSE_REAL_CONTENT_LEN_JAGUAR - EFUSE_OOB_PROTECT_BYTES_JAGUAR)) { - RTW_INFO("hal_EfusePgPacketWrite_8812A() error: %x >= %x\n", Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest), (EFUSE_REAL_CONTENT_LEN_JAGUAR - EFUSE_OOB_PROTECT_BYTES_JAGUAR)); + if (efuse_addr >= efuse_max_available_len) { + RTW_INFO("%s: addr(%d) over available(%d)!!\n", __FUNCTION__, efuse_addr, efuse_max_available_len); return _FALSE; } - /* Init the 8 bytes content as 0xff */ - target_pkt.offset = offset; - target_pkt.word_en = word_en; - /* Initial the value to avoid compile warning */ - tmp_pkt.offset = 0; - tmp_pkt.word_en = 0; + while (efuse_addr < efuse_max_available_len) { + pg_header = ((pTargetPkt->offset & 0x07) << 5) | 0x0F; + efuse_OneByteWrite(padapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(padapter, efuse_addr, &tmp_header, bPseudoTest); - /* RTW_INFO("hal_EfusePgPacketWrite_8812A target offset 0x%x word_en 0x%x\n", target_pkt.offset, target_pkt.word_en); */ + while (tmp_header == 0xFF || pg_header != tmp_header) { + if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { + RTW_INFO("%s, Repeat over limit for pg_header!!\n", __FUNCTION__); + return _FALSE; + } - _rtw_memset((PVOID)target_pkt.data, 0xFF, sizeof(u8) * 8); + efuse_OneByteWrite(padapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(padapter, efuse_addr, &tmp_header, bPseudoTest); + } - efuse_WordEnableDataRead(word_en, data, target_pkt.data); - target_word_cnts = Efuse_CalculateWordCnts(target_pkt.word_en); + /*to write ext_header*/ + if (tmp_header == pg_header) { + efuse_addr++; + pg_header_temp = pg_header; + pg_header = ((pTargetPkt->offset & 0x78) << 1) | pTargetPkt->word_en; - /* efuse_reg_ctrl(pAdapter,_TRUE); */ /* power on */ - /* RTW_INFO("EFUSE Power ON\n"); */ + efuse_OneByteWrite(padapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(padapter, efuse_addr, &tmp_header, bPseudoTest); - /* */ - /* Efuse has been pre-programmed dummy 5Bytes at the end of Efuse by CP. */ - /* So we have to prevent unexpected data string connection, which will cause */ - /* incorrect data auto-load from HW. Dummy 1bytes is additional. */ - /* 2009.02.19. */ - /* */ - while (bContinual && (efuse_addr < (EFUSE_REAL_CONTENT_LEN_JAGUAR - EFUSE_OOB_PROTECT_BYTES_JAGUAR))) { - if (WriteState == PG_STATE_HEADER) { - bDataEmpty = _TRUE; - badworden = 0x0F; - /* ************ so ******************* */ - /* RTW_INFO("EFUSE PG_STATE_HEADER\n"); */ - if (efuse_OneByteRead(pAdapter, efuse_addr , &efuse_data, bPseudoTest) && - (efuse_data != 0xFF)) { - if ((efuse_data & 0x1F) == 0x0F) { /* extended header */ - tmp_header = efuse_data; - efuse_addr++; - efuse_OneByteRead(pAdapter, efuse_addr , &efuse_data, bPseudoTest); - if ((efuse_data & 0x0F) == 0x0F) { /* wren fail */ - u8 next = 0, next_next = 0, data = 0, i = 0; - u8 s = ((tmp_header & 0xF0) >> 4); - efuse_OneByteRead(pAdapter, efuse_addr + 1, &next, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr + 2, &next_next, bPseudoTest); - if (next == 0xFF && next_next == 0xFF) { /* Have enough space to make fake data to recover bad header. */ - switch (s) { - case 0x0: - case 0x2: - case 0x4: - case 0x6: - case 0x8: - case 0xA: - case 0xC: - for (i = 0; i < 3; ++i) { - efuse_OneByteWrite(pAdapter, efuse_addr, 0x27, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &data, bPseudoTest); - if (data == 0x27) - break; - } - break; - case 0xE: - for (i = 0; i < 3; ++i) { - efuse_OneByteWrite(pAdapter, efuse_addr, 0x17, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &data, bPseudoTest); - if (data == 0x17) - break; - } - break; - default: - break; - } - efuse_OneByteWrite(pAdapter, efuse_addr + 1, 0xFF, bPseudoTest); - efuse_OneByteWrite(pAdapter, efuse_addr + 2, 0xFF, bPseudoTest); - efuse_addr += 3; - } else - efuse_addr++; - continue; - } else { - tmp_pkt.offset = ((tmp_header & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); - tmp_pkt.word_en = efuse_data & 0x0F; - } + + while (tmp_header == 0xFF || pg_header != tmp_header) { + if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { + RTW_INFO("%s, Repeat over limit for ext_header!!\n", __FUNCTION__); + return _FALSE; + } + + efuse_OneByteWrite(padapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(padapter, efuse_addr, &tmp_header, bPseudoTest); + } + + if ((tmp_header & 0x0F) == 0x0F) { + if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { + RTW_INFO("Repeat over limit for word_en!!\n"); + return _FALSE; } else { - u8 i = 0, data = 0; - tmp_header = efuse_data; - tmp_pkt.offset = (tmp_header >> 4) & 0x0F; - tmp_pkt.word_en = tmp_header & 0x0F; - - if (tmp_pkt.word_en == 0xF) { - u8 next = 0; - efuse_OneByteRead(pAdapter, efuse_addr + 1, &next, bPseudoTest); - if (next == 0xFF) { /* Have enough space to make fake data to recover bad header. */ - tmp_header = (tmp_header & 0xF0) | 0x7; - for (i = 0; i < 3; ++i) { - efuse_OneByteWrite(pAdapter, efuse_addr, tmp_header, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &data, bPseudoTest); - if (data == tmp_header) - break; - } - efuse_OneByteWrite(pAdapter, efuse_addr + 1, 0xFF, bPseudoTest); - efuse_OneByteWrite(pAdapter, efuse_addr + 2, 0xFF, bPseudoTest); - efuse_addr += 2; - } - } + efuse_addr++; + continue; } - tmp_word_cnts = Efuse_CalculateWordCnts(tmp_pkt.word_en); + } else if (pg_header != tmp_header) { + PGPKT_STRUCT fixPkt; + + RTW_ERR("Error, efuse_PgPacketWrite2ByteHeader(), offset PG fail, need to cover the existed data!!\n"); + RTW_ERR("Error condition for offset PG fail, need to cover the existed data\n"); + fixPkt.offset = ((pg_header_temp & 0xE0) >> 5) | ((tmp_header & 0xF0) >> 1); + fixPkt.word_en = tmp_header & 0x0F; + fixPkt.word_cnts = Efuse_CalculateWordCnts(fixPkt.word_en); + if (!hal_EfuseFixHeaderProcess(padapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) + return _FALSE; + } else + break; + } else if ((tmp_header & 0x1F) == 0x0F) {/*wrong extended header*/ + efuse_addr += 2; + continue; + } + } - /* RTW_INFO("section offset 0x%x worden 0x%x\n", tmp_pkt.offset, tmp_pkt.word_en); */ + *pAddr = efuse_addr; - /* ************ so-1 ******************* */ - if (tmp_pkt.offset != target_pkt.offset) { - efuse_addr = efuse_addr + (tmp_word_cnts * 2) + 1; /* Next pg_packet */ -#if (EFUSE_ERROE_HANDLE == 1) - WriteState = PG_STATE_HEADER; -#endif - } else { /* write the same offset */ - /* RTW_INFO("hal_EfusePgPacketWrite_8812A section offset the same\n"); */ - /* ************ so-2 ******************* */ - for (tmpindex = 0 ; tmpindex < (tmp_word_cnts * 2) ; tmpindex++) { - if (efuse_OneByteRead(pAdapter, (efuse_addr + 1 + tmpindex) , &efuse_data, bPseudoTest) && (efuse_data != 0xFF)) - bDataEmpty = _FALSE; - } - /* ************ so-2-1 ******************* */ - if (bDataEmpty == _FALSE) { - /* RTW_INFO("hal_EfusePgPacketWrite_8812A section offset the same and data is NOT empty\n"); */ + return _TRUE; +} - efuse_addr = efuse_addr + (tmp_word_cnts * 2) + 1; /* Next pg_packet */ -#if (EFUSE_ERROE_HANDLE == 1) - WriteState = PG_STATE_HEADER; -#endif - } else { - /* ************ so-2-2 ******************* */ - /* RTW_INFO("hal_EfusePgPacketWrite_8812A section data empty\n"); */ - match_word_en = 0x0F; /* same bit as original wren */ - if (!((target_pkt.word_en & BIT0) | (tmp_pkt.word_en & BIT0))) - match_word_en &= (~BIT0); - if (!((target_pkt.word_en & BIT1) | (tmp_pkt.word_en & BIT1))) - match_word_en &= (~BIT1); - if (!((target_pkt.word_en & BIT2) | (tmp_pkt.word_en & BIT2))) - match_word_en &= (~BIT2); - if (!((target_pkt.word_en & BIT3) | (tmp_pkt.word_en & BIT3))) - match_word_en &= (~BIT3); - - /* ************ so-2-2-A ******************* */ - if ((match_word_en & 0x0F) != 0x0F) { - badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr + 1, tmp_pkt.word_en , target_pkt.data, bPseudoTest); - - /* ************ so-2-2-A-1 ******************* */ - /* ############################ */ - if (0x0F != (badworden & 0x0F)) { - u8 reorg_offset = offset; - u8 reorg_worden = badworden; - Efuse_PgPacketWrite(pAdapter, reorg_offset, reorg_worden, target_pkt.data, bPseudoTest); - } - /* ############################ */ - - tmp_word_en = 0x0F; /* not the same bit as original wren */ - if ((target_pkt.word_en & BIT0) ^ (match_word_en & BIT0)) - tmp_word_en &= (~BIT0); - if ((target_pkt.word_en & BIT1) ^ (match_word_en & BIT1)) - tmp_word_en &= (~BIT1); - if ((target_pkt.word_en & BIT2) ^ (match_word_en & BIT2)) - tmp_word_en &= (~BIT2); - if ((target_pkt.word_en & BIT3) ^ (match_word_en & BIT3)) - tmp_word_en &= (~BIT3); - - /* ************ so-2-2-A-2 ******************* */ - if ((tmp_word_en & 0x0F) != 0x0F) { - /* reorganize other pg packet - * efuse_addr = efuse_addr + (2*tmp_word_cnts) +1; */ /* next pg packet addr */ - efuse_addr = Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest); - /* =========================== */ - target_pkt.offset = offset; - target_pkt.word_en = tmp_word_en; - /* =========================== */ - } else - bContinual = _FALSE; -#if (EFUSE_ERROE_HANDLE == 1) - WriteState = PG_STATE_HEADER; - repeat_times++; - if (repeat_times > EFUSE_REPEAT_THRESHOLD_) { - bContinual = _FALSE; - /* bResult = _FALSE; */ - } -#endif - } else { /* ************ so-2-2-B ******************* */ - /* reorganize other pg packet */ - efuse_addr = efuse_addr + (2 * tmp_word_cnts) + 1; /* next pg packet addr */ - /* =========================== */ - target_pkt.offset = offset; - /* target_pkt.word_en= target_pkt.word_en; */ - /* =========================== */ -#if (EFUSE_ERROE_HANDLE == 1) - WriteState = PG_STATE_HEADER; -#endif - } - } - } - RTW_INFO("EFUSE PG_STATE_HEADER-1\n"); - } else { /* ************ s1: header == oxff ******************* */ - bExtendedHeader = _FALSE; - if (target_pkt.offset >= EFUSE_MAX_SECTION_BASE) { - pg_header = ((target_pkt.offset & 0x07) << 5) | 0x0F; +static u8 +hal_EfusePgPacketWrite1ByteHeader( + PADAPTER pAdapter, + u8 efuseType, + u16 *pAddr, + PPGPKT_STRUCT pTargetPkt, + u8 bPseudoTest) +{ + u8 bRet = _FALSE; + u8 pg_header = 0, tmp_header = 0; + u16 efuse_addr = *pAddr; + u8 repeatcnt = 0; + + RTW_INFO("%s\n", __func__); + pg_header = ((pTargetPkt->offset << 4) & 0xf0) | pTargetPkt->word_en; + + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); + + efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + + while (tmp_header == 0xFF || pg_header != tmp_header) { + if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { + RTW_INFO("retry %d times fail!!\n", repeatcnt); + return FALSE; + } + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + RTW_INFO("===> %s: Keep %d-th retrying, tmp_header = 0x%X\n", __func__, repeatcnt, tmp_header); + } - /* RTW_INFO("hal_EfusePgPacketWrite_8812A extended pg_header[2:0] |0x0F 0x%x\n", pg_header); */ + if (tmp_header != pg_header) { + PGPKT_STRUCT fixPkt; - efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + RTW_INFO("Error, %s(), offset PG fail, need to cover the existed data!!\n", __func__); + RTW_INFO("pg_header(0x%X) != tmp_header(0x%X)\n", pg_header, tmp_header); + RTW_INFO("Error condition for fixed PG packet, need to cover the existed data: (Addr, Data) = (0x%X, 0x%X)\n", + efuse_addr, tmp_header); + fixPkt.offset = (tmp_header>>4) & 0x0F; + fixPkt.word_en = tmp_header & 0x0F; + fixPkt.word_cnts = Efuse_CalculateWordCnts(fixPkt.word_en); + if (!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) + return FALSE; + } - while (tmp_header == 0xFF) { - /* RTW_INFO("hal_EfusePgPacketWrite_8812A extended pg_header[2:0] wirte fail\n"); */ + *pAddr = efuse_addr; + + return _TRUE; +} + + +static u8 +hal_EfusePgPacketWriteData( + PADAPTER pAdapter, + u8 efuseType, + u16 *pAddr, + PPGPKT_STRUCT pTargetPkt, + u8 bPseudoTest) +{ + u16 efuse_addr; + u8 badworden; + + + efuse_addr = *pAddr; + badworden = rtl8812_Efuse_WordEnableDataWrite(pAdapter, efuse_addr + 1, pTargetPkt->word_en, pTargetPkt->data, bPseudoTest); + if (badworden != 0x0F) { + RTW_INFO("%s: Fail!!\n", __FUNCTION__); + return _FALSE; + } + + /* RTW_INFO("%s: ok\n", __FUNCTION__); */ + return _TRUE; +} + +BOOLEAN efuse_PgPacketCheck( + PADAPTER pAdapter, + u8 efuseType, + BOOLEAN bPseudoTest +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + if (Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest) >= (EFUSE_REAL_CONTENT_LEN_JAGUAR - EFUSE_OOB_PROTECT_BYTES_JAGUAR)) { + RTW_INFO("%s()error: %x >= %x\n", __func__, Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest), (EFUSE_REAL_CONTENT_LEN_JAGUAR - EFUSE_OOB_PROTECT_BYTES_JAGUAR)); + return _FALSE; + } + + return _TRUE; +} - repeat_times++; - if (repeat_times > EFUSE_REPEAT_THRESHOLD_) { - bContinual = _FALSE; - /* bResult = _FALSE; */ - efuse_addr++; +VOID +efuse_PgPacketConstruct( + IN u8 offset, + IN u8 word_en, + IN u8 *pData, + IN OUT PPGPKT_STRUCT pTargetPkt +) +{ + _rtw_memset((PVOID)pTargetPkt->data, 0xFF, sizeof(u8) * 8); + pTargetPkt->offset = offset; + pTargetPkt->word_en = word_en; + efuse_WordEnableDataRead(word_en, pData, pTargetPkt->data); + pTargetPkt->word_cnts = Efuse_CalculateWordCnts(pTargetPkt->word_en); + + RTW_INFO("efuse_PgPacketConstruct(), targetPkt, offset=%d, word_en=0x%x, word_cnts=%d\n", pTargetPkt->offset, pTargetPkt->word_en, pTargetPkt->word_cnts); +} + +u2Byte +Hal_EfusePgPacketExceptionHandle_8812A( + PADAPTER pAdapter, + u2Byte ErrOffset + ) +{ + BOOLEAN bPseudoTest = FALSE; + u8 next = 0, next_next = 0, data = 0, i = 0, header = 0; + u8 s = 0; + u2Byte offset = ErrOffset; + + efuse_OneByteRead(pAdapter, offset, &header, bPseudoTest); + + if (EXT_HEADER(header)) { + s = ((header & 0xF0) >> 4); + + /* Skip bad word enable to look two bytes ahead and determine if recoverable.*/ + offset += 1; + efuse_OneByteRead(pAdapter, offset+1, &next, bPseudoTest); + efuse_OneByteRead(pAdapter, offset+2, &next_next, bPseudoTest); + if (next == 0xFF && next_next == 0xFF) {/* Have enough space to make fake data to recover bad header.*/ + switch (s) { + case 0x0: case 0x2: case 0x4: case 0x6: + case 0x8: case 0xA: case 0xC: + for (i = 0; i < 3; ++i) { + efuse_OneByteWrite(pAdapter, offset, 0x27, bPseudoTest); + efuse_OneByteRead(pAdapter, offset, &data, bPseudoTest); + if (data == 0x27) break; - } - efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); } + break; + case 0xE: + for (i = 0; i < 3; ++i) { + efuse_OneByteWrite(pAdapter, offset, 0x17, bPseudoTest); + efuse_OneByteRead(pAdapter, offset, &data, bPseudoTest); + if (data == 0x17) + break; - if (!bContinual) + break; + default: + break; + } + efuse_OneByteWrite(pAdapter, offset+1, 0xFF, bPseudoTest); + efuse_OneByteWrite(pAdapter, offset+2, 0xFF, bPseudoTest); + offset += 3; + ErrOffset = offset; + } + } else {/* 1-Byte header*/ + if (ALL_WORDS_DISABLED(header)) { + u8 next = 0; + + efuse_OneByteRead(pAdapter, offset+1, &next, bPseudoTest); + if (next == 0xFF) {/* Have enough space to make fake data to recover bad header.*/ + header = (header & 0xF0) | 0x7; + for (i = 0; i < 3; ++i) { + efuse_OneByteWrite(pAdapter, offset, header, bPseudoTest); + efuse_OneByteRead(pAdapter, offset, &data, bPseudoTest); + if (data == header) break; + } + efuse_OneByteWrite(pAdapter, offset+1, 0xFF, bPseudoTest); + efuse_OneByteWrite(pAdapter, offset+2, 0xFF, bPseudoTest); + offset += 2; + ErrOffset = offset; + } + } + } + } - if (tmp_header == pg_header) { - efuse_addr++; - pg_header_temp = pg_header; - pg_header = ((target_pkt.offset & 0x78) << 1) | target_pkt.word_en; + return ErrOffset; +} - /* RTW_INFO("hal_EfusePgPacketWrite_8812A extended pg_header[6:3] | worden 0x%x word_en 0x%x\n", pg_header, target_pkt.word_en); */ +BOOLEAN hal_EfuseCheckIfDatafollowed( + IN PADAPTER pAdapter, + IN u8 word_cnts, + IN u16 startAddr, + IN BOOLEAN bPseudoTest +) +{ + BOOLEAN bRet = FALSE; + u8 i, efuse_data; - efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + for (i = 0; i < (word_cnts * 2) ; i++) { + if (efuse_OneByteRead(pAdapter, (startAddr + i) , &efuse_data, bPseudoTest) && (efuse_data != 0xFF)) + bRet = TRUE; + } - while (tmp_header == 0xFF) { - repeat_times++; + return bRet; +} - if (repeat_times > EFUSE_REPEAT_THRESHOLD_) { - bContinual = _FALSE; - /* bResult = _FALSE; */ - break; - } - efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); - } +BOOLEAN +hal_EfuseWordEnMatched( + IN PPGPKT_STRUCT pTargetPkt, + IN PPGPKT_STRUCT pCurPkt, + IN u8 *pWden +) +{ + u8 match_word_en = 0x0F; /* default all words are disabled */ - if (!bContinual) - break; + /* check if the same words are enabled both target and current PG packet */ + if (((pTargetPkt->word_en & BIT0) == 0) && + ((pCurPkt->word_en & BIT0) == 0)) { + match_word_en &= ~BIT0; /* enable word 0 */ + } + if (((pTargetPkt->word_en & BIT1) == 0) && + ((pCurPkt->word_en & BIT1) == 0)) { + match_word_en &= ~BIT1; /* enable word 1 */ + } + if (((pTargetPkt->word_en & BIT2) == 0) && + ((pCurPkt->word_en & BIT2) == 0)) { + match_word_en &= ~BIT2; /* enable word 2 */ + } + if (((pTargetPkt->word_en & BIT3) == 0) && + ((pCurPkt->word_en & BIT3) == 0)) { + match_word_en &= ~BIT3; /* enable word 3 */ + } - if ((tmp_header & 0x0F) == 0x0F) { /* wren PG fail */ - repeat_times++; - - if (repeat_times > EFUSE_REPEAT_THRESHOLD_) { - bContinual = _FALSE; - /* bResult = _FALSE; */ - break; - } else { - efuse_addr++; - continue; - } - } else if (pg_header != tmp_header) { /* offset PG fail */ - bExtendedHeader = _TRUE; - tmp_pkt.offset = ((pg_header_temp & 0xE0) >> 5) | ((tmp_header & 0xF0) >> 1); - tmp_pkt.word_en = tmp_header & 0x0F; - tmp_word_cnts = Efuse_CalculateWordCnts(tmp_pkt.word_en); - } - } else if ((tmp_header & 0x1F) == 0x0F) { /* wrong extended header */ - efuse_addr += 2; + *pWden = match_word_en; + + if (match_word_en != 0xf) + return TRUE; + else + return FALSE; +} + + +BOOLEAN +efuse_PgPacketPartialWrite( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN OUT u16 *pAddr, + IN PPGPKT_STRUCT pTargetPkt, + IN BOOLEAN bPseudoTest +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + PEFUSE_HAL pEfuseHal = &(pHalData->EfuseHal); + BOOLEAN bRet = _FALSE; + u8 i, efuse_data = 0, cur_header = 0; + u8 matched_wden = 0, badworden = 0; + u16 startAddr = 0; + PGPKT_STRUCT curPkt; + u16 max_sec_num = (efuseType == EFUSE_WIFI) ? pEfuseHal->MaxSecNum_WiFi : pEfuseHal->MaxSecNum_BT; + u16 efuse_max = pEfuseHal->BankSize; + u16 efuse_max_available_len = + (efuseType == EFUSE_WIFI) ? pEfuseHal->TotalAvailBytes_WiFi : pEfuseHal->TotalAvailBytes_BT; + + RTW_INFO("efuse_PgPacketPartialWrite()\n"); + + if (bPseudoTest) { + pEfuseHal->fakeEfuseBank = (efuseType == EFUSE_WIFI) ? 0 : pEfuseHal->fakeEfuseBank; + Efuse_GetCurrentSize(pAdapter, efuseType, _TRUE); + } + + EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, &efuse_max_available_len, bPseudoTest); + EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_CONTENT_LEN_BANK, &efuse_max, bPseudoTest); + + if (efuseType == EFUSE_WIFI) { + if (bPseudoTest) { +#ifdef HAL_EFUSE_MEMORY + startAddr = (u16)pEfuseHal->fakeEfuseUsedBytes; +#else + startAddr = (u16)fakeEfuseUsedBytes; +#endif + + } else + rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&startAddr); + } else { + if (bPseudoTest) { +#ifdef HAL_EFUSE_MEMORY + startAddr = (u16)pEfuseHal->fakeBTEfuseUsedBytes; +#else + startAddr = (u16)fakeBTEfuseUsedBytes; +#endif + + } else + rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BT_BYTES, (u8 *)&startAddr); + } + + startAddr %= efuse_max; + RTW_INFO("%s: startAddr=%#X\n", __FUNCTION__, startAddr); + RTW_INFO("efuse_PgPacketPartialWrite(), startAddr = 0x%X\n", startAddr); + + while (1) { + if (startAddr >= efuse_max_available_len) { + bRet = _FALSE; + RTW_INFO("startAddr(%d) >= efuse_max_available_len(%d)\n", + startAddr, efuse_max_available_len); + break; + } + + if (efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest) && (efuse_data != 0xFF)) { + if (EXT_HEADER(efuse_data)) { + cur_header = efuse_data; + startAddr++; + efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest); + if (ALL_WORDS_DISABLED(efuse_data)) { + u16 recoveredAddr = startAddr; + + recoveredAddr = Hal_EfusePgPacketExceptionHandle_8812A(pAdapter, startAddr - 1); + + if (recoveredAddr == (startAddr - 1)) { + RTW_INFO("Error! All words disabled and the recovery failed, (Addr, Data) = (0x%X, 0x%X)\n", + startAddr, efuse_data); + pAdapter->LastError = ERR_INVALID_DATA; + break; + + } else { + startAddr = recoveredAddr; + RTW_INFO("Bad extension header but recovered => Keep going.\n"); continue; } } else { - pg_header = ((target_pkt.offset << 4) & 0xf0) | target_pkt.word_en; - efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + curPkt.offset = ((cur_header & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); + curPkt.word_en = efuse_data & 0x0F; } + } else { + if (ALL_WORDS_DISABLED(efuse_data)) { + u16 recoveredAddr = startAddr; - if (tmp_header == pg_header) { - /* ************ s1-1******************* */ - WriteState = PG_STATE_DATA; - } -#if (EFUSE_ERROE_HANDLE == 1) - else if (tmp_header == 0xFF) { /* ************ s1-3: if Write or read func doesn't work ******************* */ - /* efuse_addr doesn't change */ - WriteState = PG_STATE_HEADER; - repeat_times++; - if (repeat_times > EFUSE_REPEAT_THRESHOLD_) { - bContinual = _FALSE; - /* bResult = _FALSE; */ + recoveredAddr = Hal_EfusePgPacketExceptionHandle_8812A(pAdapter, startAddr); + if (recoveredAddr != startAddr) { + efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest); + RTW_INFO("Bad header but recovered => Read header again.\n"); } } -#endif - else { - /* ************ s1-2 : fixed the header procedure ******************* */ - if (!bExtendedHeader) { - tmp_pkt.offset = (tmp_header >> 4) & 0x0F; - tmp_pkt.word_en = tmp_header & 0x0F; - tmp_word_cnts = Efuse_CalculateWordCnts(tmp_pkt.word_en); - } - /* ************ s1-2-A :cover the exist data ******************* */ - _rtw_memset(originaldata, 0xff, sizeof(u8) * 8); - - if (Efuse_PgPacketRead(pAdapter, tmp_pkt.offset, originaldata, bPseudoTest)) { - /* check if data exist */ - /* efuse_reg_ctrl(pAdapter,_TRUE); */ /* power on */ - badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr + 1, tmp_pkt.word_en, originaldata, bPseudoTest); - /* ############################ */ - if (0x0F != (badworden & 0x0F)) { - u8 reorg_offset = tmp_pkt.offset; - u8 reorg_worden = badworden; - Efuse_PgPacketWrite(pAdapter, reorg_offset, reorg_worden, originaldata, bPseudoTest); - efuse_addr = Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest); - } - /* ############################ */ - else { - efuse_addr = efuse_addr + (tmp_word_cnts * 2) + 1; /* Next pg_packet */ - } - } - /* ************ s1-2-B: wrong address******************* */ - else { - efuse_addr = efuse_addr + (tmp_word_cnts * 2) + 1; /* Next pg_packet */ - } + cur_header = efuse_data; + curPkt.offset = (cur_header >> 4) & 0x0F; + curPkt.word_en = cur_header & 0x0F; + } + if (curPkt.offset > max_sec_num) { + pAdapter->LastError = ERR_OUT_OF_RANGE; + pEfuseHal->Status = ERR_OUT_OF_RANGE; + bRet = _FALSE; + break; + } -#if (EFUSE_ERROE_HANDLE == 1) - WriteState = PG_STATE_HEADER; - repeat_times++; - if (repeat_times > EFUSE_REPEAT_THRESHOLD_) { - bContinual = _FALSE; - /* bResult = _FALSE; */ + curPkt.word_cnts = Efuse_CalculateWordCnts(curPkt.word_en); + /* if same header is found but no data followed */ + /* write some part of data followed by the header. */ + if ((curPkt.offset == pTargetPkt->offset) && + (!hal_EfuseCheckIfDatafollowed(pAdapter, curPkt.word_cnts, startAddr + 1, bPseudoTest)) && + hal_EfuseWordEnMatched(pTargetPkt, &curPkt, &matched_wden)) { + RTW_INFO("Need to partial write data by the previous wrote header\n"); + /* RT_ASSERT(_FALSE, ("Error, Need to partial write data by the previous wrote header!!\n")); */ + /* Here to write partial data */ + badworden = Efuse_WordEnableDataWrite(pAdapter, startAddr + 1, matched_wden, pTargetPkt->data, bPseudoTest); + if (badworden != 0x0F) { + u32 PgWriteSuccess = 0; + /* if write fail on some words, write these bad words again */ + + PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pTargetPkt->offset, badworden, pTargetPkt->data, bPseudoTest); + + if (!PgWriteSuccess) { + bRet = _FALSE; /* write fail, return */ + break; } -#endif - - /* RTW_INFO("EFUSE PG_STATE_HEADER-2\n"); */ } - - } - - } - /* write data state */ - else if (WriteState == PG_STATE_DATA) { - /* ************ s1-1 ******************* */ - /* RTW_INFO("EFUSE PG_STATE_DATA\n"); */ - badworden = 0x0f; - badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr + 1, target_pkt.word_en, target_pkt.data, bPseudoTest); - if ((badworden & 0x0F) == 0x0F) { - /* ************ s1-1-A ******************* */ - bContinual = _FALSE; - } else { - /* reorganize other pg packet */ /* ************ s1-1-B ******************* */ - efuse_addr = efuse_addr + (2 * target_word_cnts) + 1; /* next pg packet addr */ - - /* =========================== */ - target_pkt.offset = offset; - target_pkt.word_en = badworden; - target_word_cnts = Efuse_CalculateWordCnts(target_pkt.word_en); - /* =========================== */ -#if (EFUSE_ERROE_HANDLE == 1) - WriteState = PG_STATE_HEADER; - repeat_times++; - if (repeat_times > EFUSE_REPEAT_THRESHOLD_) { - bContinual = _FALSE; - /* bResult = _FALSE; */ + /* partial write ok, update the target packet for later use */ + for (i = 0; i < 4; i++) { + if ((matched_wden & (0x1 << i)) == 0) { /* this word has been written */ + pTargetPkt->word_en |= (0x1 << i); /* disable the word */ + } } -#endif - /* RTW_INFO("EFUSE PG_STATE_HEADER-3\n"); */ + pTargetPkt->word_cnts = Efuse_CalculateWordCnts(pTargetPkt->word_en); } + /* read from next header */ + startAddr = startAddr + (curPkt.word_cnts * 2) + 1; + } else { + /* not used header, 0xff */ + *pAddr = startAddr; + RTW_INFO("Started from unused header offset=%d\n", startAddr); + bRet = _TRUE; + break; } } + return bRet; +} - if (efuse_addr >= (EFUSE_REAL_CONTENT_LEN_JAGUAR - EFUSE_OOB_PROTECT_BYTES_JAGUAR)) - RTW_INFO("hal_EfusePgPacketWrite_8812A(): efuse_addr(%#x) Out of size!!\n", efuse_addr); - /* efuse_reg_ctrl(pAdapter,_FALSE); */ /* power off */ +BOOLEAN efuse_PgPacketWriteHeader( + PADAPTER pAdapter, + u8 efuseType, + u16 *pAddr, + PPGPKT_STRUCT pTargetPkt, + BOOLEAN bPseudoTest) +{ + BOOLEAN bRet = _FALSE; + + if (pTargetPkt->offset >= EFUSE_MAX_SECTION_BASE) + bRet = hal_EfusePgPacketWrite2ByteHeader(pAdapter, efuseType, pAddr, pTargetPkt, bPseudoTest); + else + bRet = hal_EfusePgPacketWrite1ByteHeader(pAdapter, efuseType, pAddr, pTargetPkt, bPseudoTest); + + return bRet; +} + +int +hal_EfusePgPacketWrite_8812A(IN PADAPTER pAdapter, + u8 offset, + u8 word_en, + u8 *pData, + BOOLEAN bPseudoTest) +{ + u8 efuseType = EFUSE_WIFI; + PGPKT_STRUCT targetPkt; + u16 startAddr = 0; + RTW_INFO("===> efuse_PgPacketWrite[%s], offset: 0x%X\n", (efuseType == EFUSE_WIFI) ? "WIFI" : "BT", offset); + + /* 4 [1] Check if the remaining space is available to write. */ + if (!efuse_PgPacketCheck(pAdapter, efuseType, bPseudoTest)) { + pAdapter->LastError = ERR_WRITE_PROTECT; + RTW_INFO("efuse_PgPacketCheck(), fail!!\n"); + return _FALSE; + } + + /* 4 [2] Construct a packet to write: (Data, Offset, and WordEnable) */ + efuse_PgPacketConstruct(offset, word_en, pData, &targetPkt); + + /* 4 [3] Fix headers without data or fix bad headers, and then return the address where to get started. */ + if (!efuse_PgPacketPartialWrite(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) { + pAdapter->LastError = ERR_INVALID_DATA; + RTW_INFO("efuse_PgPacketPartialWrite(), fail!!\n"); + return _FALSE; + } + + /* 4 [4] Write the (extension) header. */ + if (!efuse_PgPacketWriteHeader(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) { + pAdapter->LastError = ERR_IO_FAILURE; + RTW_INFO("efuse_PgPacketWriteHeader(), fail!!\n"); + return _FALSE; + } + + /* 4 [5] Write the data. */ + if (!hal_EfusePgPacketWriteData(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) { + pAdapter->LastError = ERR_IO_FAILURE; + RTW_INFO("efuse_PgPacketWriteData(), fail!!\n"); + return _FALSE; + } + + RTW_INFO("<=== efuse_PgPacketWrite\n"); return _TRUE; } +static VOID +rtl8812_EfusePowerSwitch( + IN PADAPTER pAdapter, + IN u8 bWrite, + IN u8 PwrState) +{ + + Hal_EfusePowerSwitch8812A(pAdapter, bWrite, PwrState); + +} + static int rtl8812_Efuse_PgPacketWrite(IN PADAPTER pAdapter, IN u8 offset, @@ -3136,7 +3303,7 @@ rtl8812_Efuse_PgPacketWrite(IN PADAPTER pAdapter, IN u8 *data, IN BOOLEAN bPseudoTest) { - int ret; + int ret; ret = hal_EfusePgPacketWrite_8812A(pAdapter, offset, word_en, data, bPseudoTest); @@ -3242,110 +3409,6 @@ hal_EfusePartialWriteCheck( return bRet; } -static u8 -hal_EfusePgPacketWrite2ByteHeader( - PADAPTER padapter, - u8 efuseType, - u16 *pAddr, - PPGPKT_STRUCT pTargetPkt, - u8 bPseudoTest) -{ - u16 efuse_addr, efuse_max_available_len = 0; - u8 pg_header = 0, tmp_header = 0; - u8 repeatcnt = 0; - - - /* RTW_INFO("%s\n", __FUNCTION__); */ - EFUSE_GetEfuseDefinition(padapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_BANK, &efuse_max_available_len, bPseudoTest); - - efuse_addr = *pAddr; - if (efuse_addr >= efuse_max_available_len) { - RTW_INFO("%s: addr(%d) over available(%d)!!\n", __FUNCTION__, efuse_addr, efuse_max_available_len); - return _FALSE; - } - - pg_header = ((pTargetPkt->offset & 0x07) << 5) | 0x0F; - /* RTW_INFO("%s: pg_header=0x%x\n", __FUNCTION__, pg_header); */ - - do { - efuse_OneByteWrite(padapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(padapter, efuse_addr, &tmp_header, bPseudoTest); - if (tmp_header != 0xFF) - break; - if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { - RTW_INFO("%s: Repeat over limit for pg_header!!\n", __FUNCTION__); - return _FALSE; - } - } while (1); - - if (tmp_header != pg_header) { - RTW_INFO(KERN_ERR "%s: PG Header Fail!!(pg=0x%02X read=0x%02X)\n", __FUNCTION__, pg_header, tmp_header); - return _FALSE; - } - - /* to write ext_header */ - efuse_addr++; - pg_header = ((pTargetPkt->offset & 0x78) << 1) | pTargetPkt->word_en; - - do { - efuse_OneByteWrite(padapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(padapter, efuse_addr, &tmp_header, bPseudoTest); - if (tmp_header != 0xFF) - break; - if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { - RTW_INFO("%s: Repeat over limit for ext_header!!\n", __FUNCTION__); - return _FALSE; - } - } while (1); - - if (tmp_header != pg_header) { /* offset PG fail */ - RTW_INFO(KERN_ERR "%s: PG EXT Header Fail!!(pg=0x%02X read=0x%02X)\n", __FUNCTION__, pg_header, tmp_header); - return _FALSE; - } - - *pAddr = efuse_addr; - - return _TRUE; -} - -static u8 -hal_EfusePgPacketWrite1ByteHeader( - PADAPTER pAdapter, - u8 efuseType, - u16 *pAddr, - PPGPKT_STRUCT pTargetPkt, - u8 bPseudoTest) -{ - u8 bRet = _FALSE; - u8 pg_header = 0, tmp_header = 0; - u16 efuse_addr = *pAddr; - u8 repeatcnt = 0; - - - /* RTW_INFO("%s\n", __FUNCTION__); */ - pg_header = ((pTargetPkt->offset << 4) & 0xf0) | pTargetPkt->word_en; - - do { - efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); - if (tmp_header != 0xFF) - break; - if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { - RTW_INFO("%s: Repeat over limit for pg_header!!\n", __FUNCTION__); - return _FALSE; - } - } while (1); - - if (tmp_header != pg_header) { - RTW_INFO(KERN_ERR "%s: PG Header Fail!!(pg=0x%02X read=0x%02X)\n", __FUNCTION__, pg_header, tmp_header); - return _FALSE; - } - - *pAddr = efuse_addr; - - return _TRUE; -} - static u8 hal_EfusePgPacketWriteHeader( PADAPTER padapter, @@ -3364,30 +3427,6 @@ hal_EfusePgPacketWriteHeader( return bRet; } -static u8 -hal_EfusePgPacketWriteData( - PADAPTER pAdapter, - u8 efuseType, - u16 *pAddr, - PPGPKT_STRUCT pTargetPkt, - u8 bPseudoTest) -{ - u16 efuse_addr; - u8 badworden; - - - efuse_addr = *pAddr; - badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr + 1, pTargetPkt->word_en, pTargetPkt->data, bPseudoTest); - if (badworden != 0x0F) { - RTW_INFO("%s: Fail!!\n", __FUNCTION__); - return _FALSE; - } - - /* RTW_INFO("%s: ok\n", __FUNCTION__); */ - return _TRUE; -} - - static u8 Hal_EfusePgPacketWrite_BT( PADAPTER pAdapter, From 14e32665291aa0eefb4ba014ad7337cc1999b87d Mon Sep 17 00:00:00 2001 From: Christian B Date: Sat, 16 Dec 2017 12:31:10 +0100 Subject: [PATCH 150/234] Use fixed mac address when one is not specified * Use fixed MAC instead of RANDOM. For changing MAC, use "macchanger" or related tools instead. This fix was presented in "goncalossilva" fork here: https://github.com/goncalossilva/rtl8812AU/commit/eaa89bf90cf30a1e6ed4e828417d52f4e9b97a9d --- core/rtw_ieee80211.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/rtw_ieee80211.c b/core/rtw_ieee80211.c index e443945c4..56a009680 100644 --- a/core/rtw_ieee80211.c +++ b/core/rtw_ieee80211.c @@ -1379,7 +1379,7 @@ extern char *rtw_initmac; */ void rtw_macaddr_cfg(u8 *out, const u8 *hw_mac_addr) { -#define DEFAULT_RANDOM_MACADDR 1 +#define DEFAULT_RANDOM_MACADDR 0 u8 mac[ETH_ALEN]; if (out == NULL) { @@ -1422,9 +1422,9 @@ void rtw_macaddr_cfg(u8 *out, const u8 *hw_mac_addr) mac[0] = 0x00; mac[1] = 0xe0; mac[2] = 0x4c; - mac[3] = 0x87; - mac[4] = 0x00; - mac[5] = 0x00; + mac[3] = 0xe0; + mac[4] = 0x10; + mac[5] = 0x70; #endif } From 9102876a597873fea7cb3bfefbd3689a452d31c7 Mon Sep 17 00:00:00 2001 From: Christian B Date: Sat, 16 Dec 2017 12:40:58 +0100 Subject: [PATCH 151/234] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e20a4129d..456776fa5 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,8 @@ or ``` sudo iw wlan0 set txpower fixed 3000 ``` -For Ubuntu 17.04 add the following lines +Newer versions of NetworkManager switches to random MAC address +Some users would prefer to use a fixed address. Simply add these lines below ``` [device] wifi.scan-rand-mac-address=no From 6584437a9cbc6c88f61bcb1a528de836f9f7ef93 Mon Sep 17 00:00:00 2001 From: Christian B Date: Sat, 16 Dec 2017 14:15:42 +0100 Subject: [PATCH 152/234] Cleanup: Brackets & Indentation --- hal/rtl8814a/rtl8814a_hal_init.c | 1315 +++++++++++++----------------- 1 file changed, 578 insertions(+), 737 deletions(-) diff --git a/hal/rtl8814a/rtl8814a_hal_init.c b/hal/rtl8814a/rtl8814a_hal_init.c index 578addcbc..1135b1aeb 100644 --- a/hal/rtl8814a/rtl8814a_hal_init.c +++ b/hal/rtl8814a/rtl8814a_hal_init.c @@ -35,7 +35,7 @@ Hal_InitEfuseVars_8814A( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); PEFUSE_HAL pEfuseHal = &(pHalData->EfuseHal); pu2Byte ptr; - + #define INIT_EFUSE(var,value) ptr = (pu2Byte)&var; *ptr = value RTW_INFO("====> %s \n", __func__); @@ -59,16 +59,16 @@ Hal_InitEfuseVars_8814A( RTW_INFO("====>pEfuseHal->PhysicalLen_WiFi %d \n", pEfuseHal->PhysicalLen_WiFi); INIT_EFUSE(pEfuseHal->LogicalLen_WiFi , EFUSE_MAP_LEN_8814A); RTW_INFO("====>pEfuseHal->LogicalLen_WiFi %d \n", pEfuseHal->LogicalLen_WiFi); - INIT_EFUSE(pEfuseHal->BankNum_WiFi , pEfuseHal->PhysicalLen_WiFi/pEfuseHal->BankSize); - INIT_EFUSE(pEfuseHal->TotalAvailBytes_WiFi, (pEfuseHal->PhysicalLen_WiFi - (pEfuseHal->TotalBankNum * pEfuseHal->OOBProtectBytes))); + INIT_EFUSE(pEfuseHal->BankNum_WiFi , pEfuseHal->PhysicalLen_WiFi/pEfuseHal->BankSize); + INIT_EFUSE(pEfuseHal->TotalAvailBytes_WiFi, (pEfuseHal->PhysicalLen_WiFi - (pEfuseHal->TotalBankNum * pEfuseHal->OOBProtectBytes))); //2 BT - INIT_EFUSE(pEfuseHal->MaxSecNum_BT , 0); + INIT_EFUSE(pEfuseHal->MaxSecNum_BT , 0); INIT_EFUSE(pEfuseHal->PhysicalLen_BT , 0); INIT_EFUSE(pEfuseHal->LogicalLen_BT , 0); INIT_EFUSE(pEfuseHal->BankNum_BT , 0); - INIT_EFUSE(pEfuseHal->TotalAvailBytes_BT, 0); - + INIT_EFUSE(pEfuseHal->TotalAvailBytes_BT, 0); + RTW_INFO("%s <====\n", __func__); } @@ -93,9 +93,9 @@ s32 InitLLTTable8814A( { Status = _FAIL; break; - } + } } - return Status; + return Status; } #ifdef CONFIG_WOWLAN @@ -113,7 +113,7 @@ SetBcnCtrlReg( ) { HAL_DATA_TYPE* pHalData = GET_HAL_DATA(Adapter); - + pHalData->RegBcnCtrlVal |= SetBits; pHalData->RegBcnCtrlVal &= ~ClearBits; @@ -141,14 +141,12 @@ _FWDownloadEnable_8814A( u2Tmp &= (~BIT12); u2Tmp |= BIT13; u2Tmp |= BIT0; - rtw_write16(Adapter, REG_8051FW_CTRL_8814A, u2Tmp); + rtw_write16(Adapter, REG_8051FW_CTRL_8814A, u2Tmp); // Clear Rom DL enable // tmp = rtw_read8(Adapter, REG_8051FW_CTRL_8814A+2); //modify by gw 20130826(advice by hw) - // rtw_write8(Adapter, REG_8051FW_CTRL_8814A+2, tmp&0xf7);//clear bit3 - } - else - { + // rtw_write8(Adapter, REG_8051FW_CTRL_8814A+2, tmp&0xf7);//clear bit3 + } else { // MCU firmware download enable. tmp = rtw_read8(Adapter, REG_8051FW_CTRL_8814A); rtw_write8(Adapter, REG_8051FW_CTRL_8814A, tmp&0xfe); @@ -175,7 +173,7 @@ _BlockWrite_8814A( #ifdef CONFIG_USB_HCI blockSize_p1 = MAX_REG_BOLCK_SIZE; // Use 196-byte write to download FW // Small block size will increase USB init speed. But prevent FW download fail - // use 4-Byte instead of 196-Byte to write FW. + // use 4-Byte instead of 196-Byte to write FW. #endif //3 Phase #1 @@ -185,7 +183,7 @@ _BlockWrite_8814A( if(blockCount_p1) RT_TRACE(COMP_INIT,DBG_LOUD,("_BlockWrite_8814A[P1] ::buffSize( %d) blockSize_p1( %d) blockCount_p1( %d), remainSize_p1( %d)\n",buffSize ,blockSize_p1,blockCount_p1, remainSize_p1)); - for(i = 0 ; i < blockCount_p1 ; i++){ + for(i = 0 ; i < blockCount_p1 ; i++) { #if (DEV_BUS_TYPE == RT_USB_INTERFACE) rtw_writeN(Adapter, (FW_START_ADDRESS + i * blockSize_p1), blockSize_p1,(bufferPtr + i * blockSize_p1)); #else @@ -204,22 +202,21 @@ _BlockWrite_8814A( RT_TRACE(COMP_INIT,DBG_LOUD,("_BlockWrite_8814A[P2] ::buffSize_p2( %d) blockSize_p2( %d) blockCount_p2( %d) remainSize_p2( %d)\n",(buffSize-offset), blockSize_p2 ,blockCount_p2, remainSize_p2)); #if (DEV_BUS_TYPE == RT_USB_INTERFACE) - for(i = 0 ; i < blockCount_p2 ; i++){ + for(i = 0 ; i < blockCount_p2 ; i++){ rtw_writeN(Adapter, (FW_START_ADDRESS + offset+i*blockSize_p2), blockSize_p2,(bufferPtr + offset+i*blockSize_p2)); } #endif } - + //3 Phase #3 - if(remainSize_p2) - { - offset=(blockCount_p1 * blockSize_p1)+(blockCount_p2*blockSize_p2); + if(remainSize_p2) { + offset=(blockCount_p1 * blockSize_p1)+(blockCount_p2*blockSize_p2); blockCount_p3 = remainSize_p2 /blockSize_p3; RT_TRACE(COMP_INIT,DBG_LOUD,("_BlockWrite_8814A[P3] ::buffSize_p3( %d) blockSize_p3( %d) blockCount_p3( %d) \n",(buffSize-offset),blockSize_p3, blockCount_p3)); - - for(i = 0 ; i < blockCount_p3 ; i++){ + + for(i = 0 ; i < blockCount_p3 ; i++) { rtw_write8(Adapter, (FW_START_ADDRESS + offset + i), *(bufferPtr +offset+ i)); } } @@ -238,7 +235,7 @@ _PageWrite_8814A( value8 = (rtw_read8(Adapter, REG_8051FW_CTRL_8814A+2)& 0xF8 ) | u8Page ; rtw_write8(Adapter,REG_8051FW_CTRL_8814A+2,value8); - + _BlockWrite_8814A(Adapter,buffer,size); } @@ -274,27 +271,27 @@ _WriteFW_8814A( u8* bufferPtr = (u8*)buffer; #ifdef CONFIG_PCI_HCI - // 20100120 Joseph: Add for 88CE normal chip. + // 20100120 Joseph: Add for 88CE normal chip. // Fill in zero to make firmware image to dword alignment. _FillDummy_8814A(bufferPtr, &size); #endif //CONFIG_PCI_HCI - - pageNums = size / MAX_PAGE_SIZE ; - //RT_ASSERT((pageNums <= 8), ("Page numbers should not greater then 8 \n")); - - remainSize = size % MAX_PAGE_SIZE; - + pageNums = size / MAX_PAGE_SIZE ; + + //RT_ASSERT((pageNums <= 8), ("Page numbers should not greater then 8 \n")); + + remainSize = size % MAX_PAGE_SIZE; + for(page = 0; page < pageNums; page++){ offset = page *MAX_PAGE_SIZE; - _PageWrite_8814A(Adapter,page, (bufferPtr+offset),MAX_PAGE_SIZE); + _PageWrite_8814A(Adapter,page, (bufferPtr+offset),MAX_PAGE_SIZE); rtw_udelay_os(2); } if(remainSize){ offset = pageNums *MAX_PAGE_SIZE; page = pageNums; _PageWrite_8814A(Adapter,page, (bufferPtr+offset),remainSize); - } + } RT_TRACE(COMP_INIT, DBG_LOUD, ("_WriteFW_8814A Done- for Normal chip.\n")); } @@ -323,7 +320,7 @@ _3081Enable8814A( //add by ylb 20130814 for 3081 download FW static -BOOLEAN +BOOLEAN IDDMADownLoadFW_3081( IN PADAPTER Adapter, IN u32 source, @@ -343,17 +340,17 @@ IDDMADownLoadFW_3081( rtw_udelay_os(1000); cnt--; if(cnt==0) - { + { RTW_INFO("IDDMADownLoadFW_3081, line%d: CNT fail\n", __LINE__); return _FALSE; } } ch0ctrl |= length & DDMA_LEN_MASK; - + //check if chksum continuous if(fs == _FALSE){ ch0ctrl |= DDMA_CH_CHKSUM_CNT; - } + } rtw_write32(Adapter,REG_DDMA_CH0SA, source); rtw_write32(Adapter,REG_DDMA_CH0DA, dest); rtw_write32(Adapter,REG_DDMA_CH0CTRL, ch0ctrl); @@ -364,13 +361,13 @@ IDDMADownLoadFW_3081( rtw_udelay_os(1000); cnt--; if(cnt==0) - { + { RTW_INFO("IDDMADownLoadFW_3081, line%d: CNT fail\n", __LINE__); return _FALSE; } } - - //check checksum + + //check checksum if(ls == _TRUE) { tmp = rtw_read8(Adapter,REG_8051FW_CTRL_8814A); @@ -390,7 +387,7 @@ IDDMADownLoadFW_3081( tmp |= DMEM_DL_RDY; rtw_write8(Adapter,REG_8051FW_CTRL_8814A, tmp|DMEM_CHKSUM_OK); RTW_INFO("dmem check sum tmp %d\n",tmp); - } + } } else {//chksum fail @@ -419,7 +416,7 @@ IDDMADownLoadFW_3081( //add by ylb 20130814 for 3081 download FW static -BOOLEAN +BOOLEAN WaitDownLoadRSVDPageOK_3081( IN PADAPTER Adapter ) @@ -427,7 +424,7 @@ WaitDownLoadRSVDPageOK_3081( u8 BcnValidReg=0,TxBcReg=0; u8 count=0, DLBcnCount=0; BOOLEAN bRetValue = _FALSE; - + #if defined(CONFIG_PCI_HCI) //Polling Beacon Queue to send Beacon TxBcReg = rtw_read8(Adapter, REG_MGQ_TXBD_NUM_8814A+3); @@ -438,7 +435,7 @@ WaitDownLoadRSVDPageOK_3081( rtw_udelay_os(10); TxBcReg = rtw_read8(Adapter, REG_MGQ_TXBD_NUM_8814A+3); } - + rtw_write8(Adapter, REG_MGQ_TXBD_NUM_8814A+3, TxBcReg|BIT4); #endif //#if defined(CONFIG_PCI_HCI) // check rsvd page download OK. @@ -450,7 +447,7 @@ WaitDownLoadRSVDPageOK_3081( rtw_udelay_os(50); BcnValidReg = rtw_read8(Adapter, REG_FIFOPAGE_CTRL_2_8814A+1); } - + //Set 1 to Clear BIT7 by SW if(BcnValidReg & BIT7) { @@ -478,12 +475,12 @@ SetDownLoadFwRsvdPagePkt_8814A( struct xmit_frame *pcmdframe; struct xmit_priv *pxmitpriv; struct pkt_attrib *pattrib; - //The desc lengh in Tx packet buffer of 8814A is 40 bytes. + //The desc lengh in Tx packet buffer of 8814A is 40 bytes. u16 BufIndex=0, TxDescOffset = TXDESC_OFFSET; u32 TotalPacketLen = len; BOOLEAN bDLOK = FALSE; u8 *ReservedPagePacket; - + pHalData = GET_HAL_DATA(Adapter); pxmitpriv = &Adapter->xmitpriv; @@ -501,24 +498,23 @@ SetDownLoadFwRsvdPagePkt_8814A( BufIndex = TxDescOffset; TotalPacketLen = len + BufIndex; - + _rtw_memcpy(&ReservedPagePacket[BufIndex], buffer, len); //RTW_INFO("SetFwRsvdPagePkt_8814A(): HW_VAR_SET_TX_CMD: BCN, %p, %d\n", &ReservedPagePacket[BufIndex], len); - + //RTW_INFO("SetFwRsvdPagePkt(): TotalPacketLen=%d \n", TotalPacketLen); - + // update attribute pattrib = &pcmdframe->attrib; update_mgntframe_attrib(Adapter, pattrib); pattrib->qsel = QSLT_BEACON; pattrib->pktlen = pattrib->last_txcmdsz = TotalPacketLen - TxDescOffset; - + dump_mgntframe(Adapter, pcmdframe); //ReturnGenTempBuffer(pAdapter, pGenBufReservedPagePacket); } - VOID HalROMDownloadFWRSVDPage8814A( IN PADAPTER Adapter, @@ -526,15 +522,15 @@ HalROMDownloadFWRSVDPage8814A( IN u32 Len ) { - u8 u1bTmp=0, tmpReg422=0; + u8 u1bTmp=0, tmpReg422=0; u8 BcnValidReg=0,TxBcReg=0; BOOLEAN bSendBeacon=_FALSE, bDownLoadRSVDPageOK = _FALSE; u8* pbuffer = buffer; - + BOOLEAN fs = _TRUE, ls = _FALSE; u8 FWHeaderSize = 64, PageSize = 128 ; u16 RsvdPageNum = 0; - u32 dmem_pkt_size = 0, iram_pkt_size = 0 ,MaxRsvdPageBufSize = 0; + u32 dmem_pkt_size = 0, iram_pkt_size = 0 ,MaxRsvdPageBufSize = 0; u32 last_block_size = 0, filesize_ram_block = 0, pkt_offset = 0; u32 txpktbuf_bndy = 0; u32 BeaconHeaderInTxPacketBuf = 0, MEMOffsetInTxPacketBuf = 0; @@ -549,7 +545,7 @@ HalROMDownloadFWRSVDPage8814A( // 2010.05.11. Added by tynli. SetBcnCtrlReg(Adapter, 0, BIT3); SetBcnCtrlReg(Adapter, BIT4, 0); - + // Set FWHW_TXQ_CTRL 0x422[6]=0 to tell Hw the packet is not a real beacon frame. tmpReg422 = rtw_read8(Adapter, REG_FWHW_TXQ_CTRL_8814A+2); rtw_write8(Adapter, REG_FWHW_TXQ_CTRL_8814A+2, tmpReg422&(~BIT6)); @@ -563,21 +559,21 @@ HalROMDownloadFWRSVDPage8814A( //Set The head page of packet of Bcnq rtw_hal_get_def_var(Adapter, HAL_DEF_TX_PAGE_BOUNDARY, (u16*)&txpktbuf_bndy); rtw_write16(Adapter,REG_FIFOPAGE_CTRL_2_8814A, txpktbuf_bndy); - + /* RTW_INFO("HalROMDownloadFWRSVDPage8814A: txpktbuf_bndy=%d\n", txpktbuf_bndy); */ - + // Clear beacon valid check bit. BcnValidReg = rtw_read8(Adapter, REG_FIFOPAGE_CTRL_2_8814A+1); rtw_write8(Adapter, REG_FIFOPAGE_CTRL_2_8814A+1, (BcnValidReg|BIT7)); - + // Return Beacon TCB. //ReturnBeaconQueueTcb_8814A(Adapter); - + dmem_pkt_size = (u32)GET_FIRMWARE_HDR_TOTAL_DMEM_SZ_3081(pbuffer); - iram_pkt_size = (u32)GET_FIRMWARE_HDR_IRAM_SZ_3081(pbuffer); + iram_pkt_size = (u32)GET_FIRMWARE_HDR_IRAM_SZ_3081(pbuffer); dmem_pkt_size += (u32)FW_CHKSUM_DUMMY_SZ; iram_pkt_size += (u32)FW_CHKSUM_DUMMY_SZ; - + if(dmem_pkt_size + iram_pkt_size + FWHeaderSize != Len) { RTW_INFO("ERROR: Fw Hdr size do not match the real fw size!!\n"); @@ -585,8 +581,8 @@ HalROMDownloadFWRSVDPage8814A( return; } RTW_INFO("dmem_pkt_size = %d, iram_pkt_size = %d,FWHeaderSize = %d, Len = %d!!\n",dmem_pkt_size,iram_pkt_size,FWHeaderSize,Len); - - // download rsvd page. + + // download rsvd page. //RsvdPageNum = GetTxBufferRsvdPageNum8814A(Adapter, _FALSE); #ifdef CONFIG_BCN_IC /* TODO: check tx buffer and DMA size */ @@ -595,12 +591,12 @@ HalROMDownloadFWRSVDPage8814A( MaxRsvdPageBufSize = MAX_XMIT_EXTBUF_SZ-TXDESC_OFFSET;//RsvdPageNum*PageSize - 40 -16 /*modified for usb*/;//TX_INFO_SIZE_8814AE; #endif RTW_INFO("MaxRsvdPageBufSize %d, Total len %d\n",MaxRsvdPageBufSize,Len); - + BeaconHeaderInTxPacketBuf = txpktbuf_bndy * PageSize; - MEMOffsetInTxPacketBuf = OCPBASE_TXBUF_3081 + BeaconHeaderInTxPacketBuf + 40;//TX_INFO_SIZE_8814AE; + MEMOffsetInTxPacketBuf = OCPBASE_TXBUF_3081 + BeaconHeaderInTxPacketBuf + 40;//TX_INFO_SIZE_8814AE; //download DMEM while(dmem_pkt_size > 0) - { + { if(dmem_pkt_size > MaxRsvdPageBufSize) { filesize_ram_block = MaxRsvdPageBufSize; @@ -612,11 +608,9 @@ HalROMDownloadFWRSVDPage8814A( if(((last_block_size + 40) & 0x3F) == 0) // Multiples of 64 filesize_ram_block -=4; } - } - else - { + } else { filesize_ram_block = dmem_pkt_size; - ls = _TRUE; + ls = _TRUE; } fs = (pkt_offset == 0 ? _TRUE: _FALSE); // Return Beacon TCB. @@ -628,17 +622,17 @@ HalROMDownloadFWRSVDPage8814A( { RTW_INFO("ERROR: DMEM bDownLoadRSVDPageOK is false!!\n"); return; - } - - IDDMADownLoadFW_3081(Adapter,MEMOffsetInTxPacketBuf,OCPBASE_DMEM_3081+pkt_offset,filesize_ram_block,fs,ls); - dmem_pkt_size -= filesize_ram_block; + } + + IDDMADownLoadFW_3081(Adapter,MEMOffsetInTxPacketBuf,OCPBASE_DMEM_3081+pkt_offset,filesize_ram_block,fs,ls); + dmem_pkt_size -= filesize_ram_block; pkt_offset += filesize_ram_block; - } - + } + //download IRAM pkt_offset = 0; while(iram_pkt_size > 0) - { + { if(iram_pkt_size > MaxRsvdPageBufSize) { filesize_ram_block = MaxRsvdPageBufSize; @@ -650,39 +644,37 @@ HalROMDownloadFWRSVDPage8814A( if(((last_block_size + 40) & 0x3F) == 0) // Multiples of 64 filesize_ram_block -=4; } - } - else - { + } else { filesize_ram_block = iram_pkt_size; ls = _TRUE; } - + fs = (pkt_offset == 0 ? _TRUE: _FALSE); // Return Beacon TCB. //ReturnBeaconQueueTcb_8814A(Adapter); //RTW_INFO("%d packet offset %d iram_pkt_size %d\n", __LINE__,pkt_offset, iram_pkt_size); SetDownLoadFwRsvdPagePkt_8814A(Adapter, pbuffer+Len-iram_pkt_size, filesize_ram_block); - + bDownLoadRSVDPageOK = WaitDownLoadRSVDPageOK_3081(Adapter); if(!bDownLoadRSVDPageOK) { RTW_INFO("ERROR: IRAM bDownLoadRSVDPageOK is false!!\n"); return; } - - IDDMADownLoadFW_3081(Adapter,MEMOffsetInTxPacketBuf,OCPBASE_IMEM_3081+pkt_offset,filesize_ram_block,fs,ls); - - iram_pkt_size -= filesize_ram_block; + + IDDMADownLoadFW_3081(Adapter,MEMOffsetInTxPacketBuf,OCPBASE_IMEM_3081+pkt_offset,filesize_ram_block,fs,ls); + + iram_pkt_size -= filesize_ram_block; pkt_offset += filesize_ram_block; } - - // Enable Bcn + + // Enable Bcn SetBcnCtrlReg(Adapter, BIT3, 0); SetBcnCtrlReg(Adapter, 0, BIT4); // To make sure that if there exists an adapter which would like to send beacon. // If exists, the origianl value of 0x422[6] will be 1, we should check this to - // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause + // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause // the beacon cannot be sent by HW. // 2010.06.23. Added by tynli. if(bSendBeacon) @@ -719,23 +711,22 @@ _FWFreeToGo8814A( u32 value32; // polling CheckSum report - do{ + do { rtw_mdelay_os(50); value32 = rtw_read32(Adapter, REG_8051FW_CTRL_8814A); - + } while ((counter++ < 100) && (!(value32 & CPU_DL_READY))); if (counter >= 100) { - RT_TRACE(COMP_INIT, DBG_SERIOUS, ("_FWFreeToGo8814A:: FW init fail ! REG_8051FW_CTRL_8814A:0x%08x .\n", value32)); + RT_TRACE(COMP_INIT, DBG_SERIOUS, ("_FWFreeToGo8814A:: FW init fail ! REG_8051FW_CTRL_8814A:0x%08x .\n", value32)); return _FAIL; } RT_TRACE(COMP_INIT, DBG_LOUD, ("_FWFreeToGo8814A:: FW init ok ! REG_8051FW_CTRL_8814A:0x%08x .\n", value32)); - + return _SUCCESS; } - #ifdef CONFIG_FILE_FWIMG extern char *rtw_fw_file_path; u8 FwBuffer8814[FW_SIZE]; @@ -754,8 +745,8 @@ FirmwareDownload8814A( s32 rtStatus = _SUCCESS; u8 write_fw = 0; u32 fwdl_start_time; - PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); - + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + u8 *pFwImageFileName; u8 *pucMappedFile = NULL; PRT_FIRMWARE_8814 pFirmware = NULL; @@ -763,7 +754,6 @@ FirmwareDownload8814A( u8 *pFirmwareBuf; u32 FirmwareLen; - RT_TRACE(_module_hal_init_c_, _drv_info_, ("+%s\n", __FUNCTION__)); pFirmware = (PRT_FIRMWARE_8814)rtw_zmalloc(sizeof(RT_FIRMWARE_8814)); if(!pFirmware) @@ -832,7 +822,7 @@ FirmwareDownload8814A( RTW_INFO ("%s: fw_ver=%d fw_subver=%d sig=0x%x\n", __FUNCTION__, pHalData->FirmwareVersion, pHalData->FirmwareSubVersion, pHalData->FirmwareSignature); fwdl_start_time = rtw_get_current_time(); - + _FWDownloadEnable_8814A(Adapter, _TRUE); _3081Disable8814A(Adapter);//add by gw 2013026 for disable mcu core @@ -842,8 +832,8 @@ FirmwareDownload8814A( _3081Enable8814A(Adapter);//add by gw 2013026 for Enable mcu core _FWDownloadEnable_8814A(Adapter, _FALSE); - - rtStatus = _FWFreeToGo8814A(Adapter); + + rtStatus = _FWFreeToGo8814A(Adapter); if (_SUCCESS != rtStatus) goto fwdl_stat; @@ -860,18 +850,16 @@ FirmwareDownload8814A( #ifdef CONFIG_WOWLAN if (adapter_to_pwrctl(Adapter)->wowlan_mode) - InitializeFirmwareVars8814(Adapter); + InitializeFirmwareVars8814(Adapter); else - RTW_ERR("%s: wowland_mode:%d wowlan_wake_reason:%d\n", - __func__, adapter_to_pwrctl(Adapter)->wowlan_mode, + RTW_ERR("%s: wowland_mode:%d wowlan_wake_reason:%d\n", + __func__, adapter_to_pwrctl(Adapter)->wowlan_mode, adapter_to_pwrctl(Adapter)->wowlan_wake_reason); #endif return rtStatus; } - - void InitializeFirmwareVars8814(PADAPTER padapter) { PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter); @@ -913,14 +901,13 @@ SetFwBTFwPatchCmd( FillH2CCmd_8812(Adapter, H2C_BT_FW_PATCH, 6 , u1BTFwPatchParm); } - int _CheckWLANFwPatchBTFwReady_8821A( PADAPTER Adapter ) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u32 count=0; u8 u1bTmp; int ret = _FAIL; - + #if (DEV_BUS_TYPE == RT_SDIO_INTERFACE) u32 txpktbuf_bndy; #endif @@ -931,7 +918,7 @@ int _CheckWLANFwPatchBTFwReady_8821A( PADAPTER Adapter ) do{ u1bTmp = rtw_read8(Adapter, REG_FW_DRV_MSG_8812); if((u1bTmp&BIT6) || (u1bTmp&BIT7)) - { + { ret = _SUCCESS; break; } @@ -964,29 +951,28 @@ int _CheckWLANFwPatchBTFwReady_8821A( PADAPTER Adapter ) {// for WMM txpktbuf_bndy = WMM_NORMAL_TX_PAGE_BOUNDARY_8821; } - + ret = InitLLTTable8812A(Adapter, txpktbuf_bndy); if(_SUCCESS != ret){ RTW_INFO("_CheckWLANFwPatchBTFwReady_8821A(): Failed to init LLT!\n"); } - + // Init Tx boundary. rtw_write8(Adapter, REG_TDECTRL+1, (u8)txpktbuf_bndy); #endif SetBcnCtrlReg(Adapter, BIT3, 0); SetBcnCtrlReg(Adapter, 0, BIT4); - + rtw_write8(Adapter, REG_FWHW_TXQ_CTRL+2, (pHalData->RegFwHwTxQCtrl|BIT6)); pHalData->RegFwHwTxQCtrl |= BIT6; u1bTmp = rtw_read8(Adapter, REG_CR+1); rtw_write8(Adapter, REG_CR+1, (u1bTmp&(~BIT0))); - + return ret; } - int _WriteBTFWtoTxPktBuf8812( PADAPTER Adapter, PVOID buffer, @@ -1082,18 +1068,17 @@ int _WriteBTFWtoTxPktBuf8812( // 2. Adjust LLT table to an even boundary. //--------------------------------------------------------- #if 0//(DEV_BUS_TYPE == RT_SDIO_INTERFACE) - txpktbuf_bndy = 10; // rsvd page start address should be an even value. + txpktbuf_bndy = 10; // rsvd page start address should be an even value. rtStatus = InitLLTTable8723BS(Adapter, txpktbuf_bndy); if(_SUCCESS != rtStatus){ RTW_INFO("_CheckWLANFwPatchBTFwReady_8723B(): Failed to init LLT!\n"); return _FAIL; } - + // Init Tx boundary. - rtw_write8(Adapter, REG_DWBCN0_CTRL_8723B+1, (u8)txpktbuf_bndy); + rtw_write8(Adapter, REG_DWBCN0_CTRL_8723B+1, (u8)txpktbuf_bndy); #endif - //--------------------------------------------------------- // 3. Write Fw to Tx packet buffer by reseverd page. //--------------------------------------------------------- @@ -1168,9 +1153,8 @@ int _WriteBTFWtoTxPktBuf8812( //RTW_INFO("##0x208:%08x,0x210=%08x\n",rtw_read32(Adapter, REG_TDECTRL),rtw_read32(Adapter, 0x210)); rtw_write8(Adapter, REG_TDECTRL+2,BcnValidReg); - - }while((!(BcnValidReg&BIT(0))) && DLBcnCount<5); + }while((!(BcnValidReg&BIT(0))) && DLBcnCount<5); #endif if(DLBcnCount >=5){ @@ -1218,23 +1202,22 @@ int ReservedPage_Compare(PADAPTER Adapter,PRT_MP_FIRMWARE pFirmware,u32 BTPatchS RTW_INFO("%s can't be executed due to the failed malloc.\n", __FUNCTION__); Adapter->mppriv.bTxBufCkFail=_TRUE; return _FALSE; - } - + } + temp=rtw_read8(Adapter,0x209); - + address_start=(temp*128)/8; - + rtw_write32(Adapter,0x140,0x00000000); rtw_write32(Adapter,0x144,0x00000000); rtw_write32(Adapter,0x148,0x00000000); rtw_write8(Adapter,0x106,0x69); - for(i=0;i<(BTPatchSize/8);i++) { - rtw_write32(Adapter,0x140,address_start+5+i) ; - + rtw_write32(Adapter,0x140,address_start+5+i) ; + //polling until reg 0x140[23]=1; do{ u1bTmp = rtw_read32(Adapter, 0x140); @@ -1247,21 +1230,21 @@ int ReservedPage_Compare(PADAPTER Adapter,PRT_MP_FIRMWARE pFirmware,u32 BTPatchS RTW_INFO("0x140=%x, wait for 10 ms (%d) times.\n",u1bTmp, count); rtw_msleep_os(10); // 10ms }while(!(u1bTmp&BIT(23)) && count < 50); - + myBTFwBuffer[i*8+0]=rtw_read8(Adapter, 0x144); myBTFwBuffer[i*8+1]=rtw_read8(Adapter, 0x145); - myBTFwBuffer[i*8+2]=rtw_read8(Adapter, 0x146); + myBTFwBuffer[i*8+2]=rtw_read8(Adapter, 0x146); myBTFwBuffer[i*8+3]=rtw_read8(Adapter, 0x147); myBTFwBuffer[i*8+4]=rtw_read8(Adapter, 0x148); myBTFwBuffer[i*8+5]=rtw_read8(Adapter, 0x149); myBTFwBuffer[i*8+6]=rtw_read8(Adapter, 0x14a); myBTFwBuffer[i*8+7]=rtw_read8(Adapter, 0x14b); } - - rtw_write32(Adapter,0x140,address_start+5+BTPatchSize/8) ; + + rtw_write32(Adapter,0x140,address_start+5+BTPatchSize/8) ; lastBTsz=BTPatchSize%8; - + //polling until reg 0x140[23]=1; u1bTmp=0; count=0; @@ -1297,7 +1280,7 @@ int ReservedPage_Compare(PADAPTER Adapter,PRT_MP_FIRMWARE pFirmware,u32 BTPatchS { rtw_mfree(myBTFwBuffer, BTPatchSize); } - + return _TRUE; } @@ -1425,7 +1408,7 @@ SetFwRelatedForWoWLAN8812( //=========================================================== // Efuse related code //=========================================================== -BOOLEAN +BOOLEAN hal_GetChnlGroup8814A( IN u8 Channel, OUT u8* pGroup @@ -1446,9 +1429,7 @@ hal_GetChnlGroup8814A( { RT_DISP(FPHY, PHY_TXPWR_EFUSE, ("==>hal_GetChnlGroupJaguar in 2.4 G, but Channel %d in Group not found \n", Channel)); } - } - else - { + } else { bIn24G=_FALSE; if (36 <= Channel && Channel <= 42) *pGroup = 0; // 36 38 40 @@ -1465,8 +1446,7 @@ hal_GetChnlGroup8814A( else if (157 <= Channel && Channel <= 161) *pGroup = 11; // 157 159 161 else if (165 <= Channel && Channel <= 171) *pGroup = 12; // 165 167 169 else if (173 <= Channel && Channel <= 177) *pGroup = 13; // 173 175 177 - else - { + else { RT_DISP(FPHY, PHY_TXPWR_EFUSE, ("==>hal_GetChnlGroupJaguar in 5G, but Channel %d in Group not found \n",Channel)); } @@ -1487,7 +1467,7 @@ hal_ReadPowerValueFromPROM8814A( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u32 rfPath, eeAddr=EEPROM_TX_PWR_INX_8814, group,TxCount=0; - + _rtw_memset(pwrInfo24G, 0, sizeof(TxPowerInfo24G)); _rtw_memset(pwrInfo5G, 0, sizeof(TxPowerInfo5G)); @@ -1512,33 +1492,28 @@ hal_ReadPowerValueFromPROM8814A( { pwrInfo24G->BW20_Diff[rfPath][0] = EEPROM_DEFAULT_24G_HT20_DIFF; pwrInfo24G->OFDM_Diff[rfPath][0] = EEPROM_DEFAULT_24G_OFDM_DIFF; - } - else - { + } else { pwrInfo24G->BW20_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF; pwrInfo24G->BW40_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF; pwrInfo24G->CCK_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF; pwrInfo24G->OFDM_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF; } - } + } // 5G default value for(group = 0 ; group < MAX_CHNL_GROUP_5G; group++) { pwrInfo5G->IndexBW40_Base[rfPath][group] = EEPROM_DEFAULT_5G_INDEX; } - + for(TxCount=0;TxCountOFDM_Diff[rfPath][0] = EEPROM_DEFAULT_5G_OFDM_DIFF; pwrInfo5G->BW20_Diff[rfPath][0] = EEPROM_DEFAULT_5G_HT20_DIFF; pwrInfo5G->BW80_Diff[rfPath][0] = EEPROM_DEFAULT_DIFF; pwrInfo5G->BW160_Diff[rfPath][0] = EEPROM_DEFAULT_DIFF; - } - else - { + } else { pwrInfo5G->OFDM_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF; pwrInfo5G->BW20_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF; pwrInfo5G->BW40_Diff[rfPath][TxCount]= EEPROM_DEFAULT_DIFF; @@ -1546,11 +1521,9 @@ hal_ReadPowerValueFromPROM8814A( pwrInfo5G->BW160_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF; } - } - + } } - - //pHalData->bNOPG = _TRUE; + //pHalData->bNOPG = _TRUE; return; } @@ -1564,7 +1537,7 @@ hal_ReadPowerValueFromPROM8814A( { pwrInfo24G->IndexCCK_Base[rfPath][group] = EEPROM_DEFAULT_24G_INDEX; } - /* RTW_INFO("8814-2G RF-%d-G-%d CCK-Addr-%x BASE=%x\n", + /* RTW_INFO("8814-2G RF-%d-G-%d CCK-Addr-%x BASE=%x\n", rfPath, group, eeAddr-1, pwrInfo24G->IndexCCK_Base[rfPath][group]); */ } for(group = 0 ; group < MAX_CHNL_GROUP_24G-1; group++) @@ -1572,7 +1545,7 @@ hal_ReadPowerValueFromPROM8814A( pwrInfo24G->IndexBW40_Base[rfPath][group] = PROMContent[eeAddr++]; if(pwrInfo24G->IndexBW40_Base[rfPath][group] == 0xFF) pwrInfo24G->IndexBW40_Base[rfPath][group] = EEPROM_DEFAULT_24G_INDEX; - /* RTW_INFO("8814-2G RF-%d-G-%d BW40-Addr-%x BASE=%x\n", + /* RTW_INFO("8814-2G RF-%d-G-%d BW40-Addr-%x BASE=%x\n", rfPath, group, eeAddr-1, pwrInfo24G->IndexBW40_Base[rfPath][group]); */ } for(TxCount=0;TxCountBW40_Diff[rfPath][TxCount] = 0; { - pwrInfo24G->BW20_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; + pwrInfo24G->BW20_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; if(pwrInfo24G->BW20_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number pwrInfo24G->BW20_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-2G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-2G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo24G->BW20_Diff[rfPath][TxCount]); */ { - pwrInfo24G->OFDM_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); + pwrInfo24G->OFDM_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); if(pwrInfo24G->OFDM_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number pwrInfo24G->OFDM_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-2G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-2G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo24G->OFDM_Diff[rfPath][TxCount]); */ pwrInfo24G->CCK_Diff[rfPath][TxCount] = 0; eeAddr++; - } - else - { + } else { { - pwrInfo24G->BW40_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; + pwrInfo24G->BW40_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; if(pwrInfo24G->BW40_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number pwrInfo24G->BW40_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-2G RF-%d-SS-%d BW40-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-2G RF-%d-SS-%d BW40-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo24G->BW40_Diff[rfPath][TxCount]); */ { - pwrInfo24G->BW20_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); + pwrInfo24G->BW20_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); if(pwrInfo24G->BW20_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number pwrInfo24G->BW20_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-2G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-2G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo24G->BW20_Diff[rfPath][TxCount]); */ eeAddr++; - { - pwrInfo24G->OFDM_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; + pwrInfo24G->OFDM_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; if(pwrInfo24G->OFDM_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number pwrInfo24G->OFDM_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-2G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-2G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo24G->BW20_Diff[rfPath][TxCount]); */ { - pwrInfo24G->CCK_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); + pwrInfo24G->CCK_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); if(pwrInfo24G->CCK_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number pwrInfo24G->CCK_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-2G RF-%d-SS-%d CCK-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-2G RF-%d-SS-%d CCK-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo24G->CCK_Diff[rfPath][TxCount]); */ eeAddr++; @@ -1649,105 +1619,103 @@ hal_ReadPowerValueFromPROM8814A( { pwrInfo5G->IndexBW40_Base[rfPath][group] = PROMContent[eeAddr++]; if(pwrInfo5G->IndexBW40_Base[rfPath][group] == 0xFF) - pwrInfo5G->IndexBW40_Base[rfPath][group] = EEPROM_DEFAULT_DIFF; + pwrInfo5G->IndexBW40_Base[rfPath][group] = EEPROM_DEFAULT_DIFF; - /* RTW_INFO("8814-5G RF-%d-G-%d BW40-Addr-%x BASE=%x\n", + /* RTW_INFO("8814-5G RF-%d-G-%d BW40-Addr-%x BASE=%x\n", rfPath, TxCount, eeAddr-1, pwrInfo5G->IndexBW40_Base[rfPath][group]); */ } - + for(TxCount=0;TxCountBW40_Diff[rfPath][TxCount]= 0; - + pwrInfo5G->BW40_Diff[rfPath][TxCount]= 0; + { - pwrInfo5G->BW20_Diff[rfPath][0] = (PROMContent[eeAddr]&0xf0)>>4; + pwrInfo5G->BW20_Diff[rfPath][0] = (PROMContent[eeAddr]&0xf0)>>4; if(pwrInfo5G->BW20_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number - pwrInfo5G->BW20_Diff[rfPath][TxCount] |= 0xF0; + pwrInfo5G->BW20_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-5G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo5G->BW20_Diff[rfPath][TxCount]); */ { - pwrInfo5G->OFDM_Diff[rfPath][0] = (PROMContent[eeAddr]&0x0f); + pwrInfo5G->OFDM_Diff[rfPath][0] = (PROMContent[eeAddr]&0x0f); if(pwrInfo5G->OFDM_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number - pwrInfo5G->OFDM_Diff[rfPath][TxCount] |= 0xF0; + pwrInfo5G->OFDM_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo5G->OFDM_Diff[rfPath][TxCount]); */ eeAddr++; - } - else - { + } else { { - pwrInfo5G->BW40_Diff[rfPath][TxCount]= (PROMContent[eeAddr]&0xf0)>>4; + pwrInfo5G->BW40_Diff[rfPath][TxCount]= (PROMContent[eeAddr]&0xf0)>>4; if(pwrInfo5G->BW40_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number - pwrInfo5G->BW40_Diff[rfPath][TxCount] |= 0xF0; + pwrInfo5G->BW40_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-5G RF-%d-SS-%d BW40-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d BW40-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo5G->BW40_Diff[rfPath][TxCount]); */ - + { - pwrInfo5G->BW20_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); + pwrInfo5G->BW20_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); if(pwrInfo5G->BW20_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number - pwrInfo5G->BW20_Diff[rfPath][TxCount] |= 0xF0; + pwrInfo5G->BW20_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-5G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo5G->BW20_Diff[rfPath][TxCount]); */ - + eeAddr++; } - } + } { pwrInfo5G->OFDM_Diff[rfPath][1] = (PROMContent[eeAddr]&0xf0)>>4; pwrInfo5G->OFDM_Diff[rfPath][2] = (PROMContent[eeAddr]&0x0f); } - /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", rfPath, 2, eeAddr, pwrInfo5G->OFDM_Diff[rfPath][2]); */ - eeAddr++; + eeAddr++; pwrInfo5G->OFDM_Diff[rfPath][3] = (PROMContent[eeAddr]&0x0f); - /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", rfPath, 3, eeAddr, pwrInfo5G->OFDM_Diff[rfPath][3]); */ eeAddr++; - + for(TxCount=1;TxCountOFDM_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number - pwrInfo5G->OFDM_Diff[rfPath][TxCount] |= 0xF0; + pwrInfo5G->OFDM_Diff[rfPath][TxCount] |= 0xF0; - /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo5G->OFDM_Diff[rfPath][TxCount]); */ - } - + } + for(TxCount=0;TxCountBW80_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; + pwrInfo5G->BW80_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; if(pwrInfo5G->BW80_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number - pwrInfo5G->BW80_Diff[rfPath][TxCount] |= 0xF0; + pwrInfo5G->BW80_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-5G RF-%d-SS-%d BW80-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d BW80-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo5G->BW80_Diff[rfPath][TxCount]); */ - + { - pwrInfo5G->BW160_Diff[rfPath][TxCount]= (PROMContent[eeAddr]&0x0f); + pwrInfo5G->BW160_Diff[rfPath][TxCount]= (PROMContent[eeAddr]&0x0f); if(pwrInfo5G->BW160_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number - pwrInfo5G->BW160_Diff[rfPath][TxCount] |= 0xF0; + pwrInfo5G->BW160_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-5G RF-%d-SS-%d BW160-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d BW160-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo5G->BW160_Diff[rfPath][TxCount]); */ eeAddr++; } @@ -1772,8 +1740,7 @@ HALBT_InitHalVars( #endif //CONFIG_BT_COEXIST } - -VOID +VOID BT_InitHalVars( IN PADAPTER Adapter ) @@ -1794,7 +1761,6 @@ BT_InitHalVars( #endif } - VOID hal_EfuseParseBTCoexistInfo8814A( IN PADAPTER Adapter, @@ -1829,20 +1795,19 @@ hal_EfuseParseBTCoexistInfo8814A( VOID hal_ReadPROMVersion8814A( - IN PADAPTER Adapter, + IN PADAPTER Adapter, IN u8* PROMContent, IN BOOLEAN AutoloadFail ) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - if(AutoloadFail){ - pHalData->EEPROMVersion = EEPROM_Default_Version; - } - else{ + if(AutoloadFail) { + pHalData->EEPROMVersion = EEPROM_Default_Version; + } else { pHalData->EEPROMVersion = *(u8 *)&PROMContent[EEPROM_VERSION_8814]; if(pHalData->EEPROMVersion == 0xFF) - pHalData->EEPROMVersion = EEPROM_Default_Version; + pHalData->EEPROMVersion = EEPROM_Default_Version; } } @@ -1852,7 +1817,7 @@ hal_ReadTxPowerInfo8814A( IN u8* PROMContent, IN BOOLEAN AutoLoadFail ) -{ +{ HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); TxPowerInfo24G pwrInfo24G; TxPowerInfo5G pwrInfo5G; @@ -1861,45 +1826,43 @@ hal_ReadTxPowerInfo8814A( hal_ReadPowerValueFromPROM8814A(Adapter, &pwrInfo24G,&pwrInfo5G, PROMContent, AutoLoadFail); //if(!AutoLoadFail) - // pHalData->bTXPowerDataReadFromEEPORM = _TRUE; + // pHalData->bTXPowerDataReadFromEEPORM = _TRUE; for(rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) { for (ch = 0 ; ch < CENTER_CH_2G_NUM ; ch++) { hal_GetChnlGroup8814A(ch+1, &group); - if(ch == 14-1) + if(ch == 14-1) { pHalData->Index24G_CCK_Base[rfPath][ch] = pwrInfo24G.IndexCCK_Base[rfPath][5]; pHalData->Index24G_BW40_Base[rfPath][ch] = pwrInfo24G.IndexBW40_Base[rfPath][group]; - } - else - { + } else { pHalData->Index24G_CCK_Base[rfPath][ch] = pwrInfo24G.IndexCCK_Base[rfPath][group]; pHalData->Index24G_BW40_Base[rfPath][ch] = pwrInfo24G.IndexBW40_Base[rfPath][group]; } - //RTW_INFO("======= Path %d, ChannelIndex %d, Group %d=======\n",rfPath,ch, group); + //RTW_INFO("======= Path %d, ChannelIndex %d, Group %d=======\n",rfPath,ch, group); //RTW_INFO("Index24G_CCK_Base[%d][%d] = 0x%x\n",rfPath,ch ,pHalData->Index24G_CCK_Base[rfPath][ch]); //RTW_INFO("Index24G_BW40_Base[%d][%d] = 0x%x\n",rfPath,ch,pHalData->Index24G_BW40_Base[rfPath][ch]); - } + } for (ch = 0 ; ch < CENTER_CH_5G_ALL_NUM; ch++) { hal_GetChnlGroup8814A(center_ch_5g_all[ch], &group); - + pHalData->Index5G_BW40_Base[rfPath][ch] = pwrInfo5G.IndexBW40_Base[rfPath][group]; - //RTW_INFO("======= Path %d, ChannelIndex %d, Group %d=======\n",rfPath,ch, group); + //RTW_INFO("======= Path %d, ChannelIndex %d, Group %d=======\n",rfPath,ch, group); //RTW_INFO("Index5G_BW40_Base[%d][%d] = 0x%x\n",rfPath,ch,pHalData->Index5G_BW40_Base[rfPath][ch]); } for (ch = 0 ; ch < CENTER_CH_5G_80M_NUM; ch++) { u8 upper, lower; - + hal_GetChnlGroup8814A(center_ch_5g_80m[ch], &group); upper = pwrInfo5G.IndexBW40_Base[rfPath][group]; lower = pwrInfo5G.IndexBW40_Base[rfPath][group+1]; - + pHalData->Index5G_BW80_Base[rfPath][ch] = (upper + lower) / 2; - - //RTW_INFO("======= Path %d, ChannelIndex %d, Group %d=======\n",rfPath,ch, group); + + //RTW_INFO("======= Path %d, ChannelIndex %d, Group %d=======\n",rfPath,ch, group); //RTW_INFO("Index5G_BW80_Base[%d][%d] = 0x%x\n",rfPath,ch,pHalData->Index5G_BW80_Base[rfPath][ch]); } @@ -1909,7 +1872,7 @@ hal_ReadTxPowerInfo8814A( pHalData->OFDM_24G_Diff[rfPath][TxCount]=pwrInfo24G.OFDM_Diff[rfPath][TxCount]; pHalData->BW20_24G_Diff[rfPath][TxCount]=pwrInfo24G.BW20_Diff[rfPath][TxCount]; pHalData->BW40_24G_Diff[rfPath][TxCount]=pwrInfo24G.BW40_Diff[rfPath][TxCount]; - + pHalData->OFDM_5G_Diff[rfPath][TxCount]=pwrInfo5G.OFDM_Diff[rfPath][TxCount]; pHalData->BW20_5G_Diff[rfPath][TxCount]=pwrInfo5G.BW20_Diff[rfPath][TxCount]; pHalData->BW40_5G_Diff[rfPath][TxCount]=pwrInfo5G.BW40_Diff[rfPath][TxCount]; @@ -1926,22 +1889,20 @@ hal_ReadTxPowerInfo8814A( RTW_INFO("BW20_5G_Diff[%d][%d]= %d\n",rfPath,TxCount,pHalData->BW20_5G_Diff[rfPath][TxCount]); RTW_INFO("BW40_5G_Diff[%d][%d]= %d\n",rfPath,TxCount,pHalData->BW40_5G_Diff[rfPath][TxCount]); RTW_INFO("BW80_5G_Diff[%d][%d]= %d\n",rfPath,TxCount,pHalData->BW80_5G_Diff[rfPath][TxCount]); -#endif +#endif } } - + // 2010/10/19 MH Add Regulator recognize for CU. if(!AutoLoadFail) { struct registry_priv *registry_par = &Adapter->registrypriv; - + pHalData->EEPROMRegulatory = (PROMContent[EEPROM_RF_BOARD_OPTION_8814]&0x7); //bit0~2 if(PROMContent[EEPROM_RF_BOARD_OPTION_8814] == 0xFF) pHalData->EEPROMRegulatory = (EEPROM_DEFAULT_BOARD_OPTION&0x7); //bit0~2 - } - else - { + } else { pHalData->EEPROMRegulatory = 0; } @@ -1951,13 +1912,12 @@ hal_ReadTxPowerInfo8814A( VOID hal_ReadBoardType8814A( - IN PADAPTER Adapter, + IN PADAPTER Adapter, IN u8* PROMContent, IN BOOLEAN AutoloadFail ) { - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); if(!AutoloadFail) @@ -1965,9 +1925,7 @@ hal_ReadBoardType8814A( pHalData->InterfaceSel = (PROMContent[EEPROM_RF_BOARD_OPTION_8814]&0xE0)>>5; if(PROMContent[EEPROM_RF_BOARD_OPTION_8814] == 0xFF) pHalData->InterfaceSel = (EEPROM_DEFAULT_BOARD_OPTION&0xE0)>>5; - } - else - { + } else { pHalData->InterfaceSel = 0; } RT_TRACE(COMP_INIT, DBG_LOUD, ("Board Type: 0x%2x\n", pHalData->InterfaceSel)); @@ -1975,7 +1933,7 @@ hal_ReadBoardType8814A( VOID hal_Read_TRX_antenna_8814A( - IN PADAPTER Adapter, + IN PADAPTER Adapter, IN u8 *PROMContent, IN BOOLEAN AutoloadFail ) @@ -2006,7 +1964,7 @@ hal_Read_TRX_antenna_8814A( trx_antenna = RF_2T4R; RTW_INFO("AutoloadFail, default to 2T4R\n"); } - + /* if driver doesn't set rf_config, use the value of EEPROM */ if (Adapter->registrypriv.rf_config == RF_MAX_TYPE) { @@ -2028,14 +1986,14 @@ hal_Read_TRX_antenna_8814A( Adapter->registrypriv.rf_config = RF_2T4R; #endif /* CONFIG_USB_HCI */ } - + RTW_INFO("Final rf_config: %d\n", Adapter->registrypriv.rf_config); } VOID hal_ReadThermalMeter_8814A( - IN PADAPTER Adapter, + IN PADAPTER Adapter, IN u8* PROMContent, IN BOOLEAN AutoloadFail ) @@ -2043,8 +2001,8 @@ hal_ReadThermalMeter_8814A( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); pHalData->EEPROMThermalMeter = 0xff; - - if(!AutoloadFail) + + if(!AutoloadFail) pHalData->EEPROMThermalMeter = PROMContent[EEPROM_THERMAL_METER_8814]; #if 0 /* ToDo: check with RF */ @@ -2075,9 +2033,7 @@ void hal_ReadRemoteWakeup_8814A( if(AutoLoadFail){ pwrctl->bHWPowerdown = _FALSE; pwrctl->bSupportRemoteWakeup = _FALSE; - } - else - { + } else { // decide hw if support remote wakeup function // if hw supported, 8051 (SIE) will generate WeakUP signal( D+/D- toggle) when autoresume /* todo: wowlan should check the efuse again @@ -2134,7 +2090,7 @@ void hal_GetRxGainOffset_8814A( pHalData->RxGainOffset[2] = 0; pHalData->RxGainOffset[3] = 0; - if ((pregistrypriv->reg_rxgain_offset_2g != 0 && pregistrypriv->reg_rxgain_offset_5gl != 0) && + if ((pregistrypriv->reg_rxgain_offset_2g != 0 && pregistrypriv->reg_rxgain_offset_5gl != 0) && (pregistrypriv->reg_rxgain_offset_5gm != 0 && pregistrypriv->reg_rxgain_offset_5gh != 0)) { pHalData->RxGainOffset[0] = pregistrypriv->reg_rxgain_offset_2g; pHalData->RxGainOffset[1] = pregistrypriv->reg_rxgain_offset_5gl; @@ -2159,7 +2115,6 @@ void hal_GetRxGainOffset_8814A( RTW_INFO("hal_GetRxGainOffset_8814A(): RegRxGainOffset_5GH = 0x%x!!\n", pHalData->RxGainOffset[3]); } - void Hal_EfuseParseKFreeData_8814A( IN PADAPTER Adapter, IN u8 *PROMContent, @@ -2228,7 +2183,6 @@ void Hal_EfuseParseKFreeData_8814A( #endif /*CONFIG_RF_GAIN_OFFSET */ } - VOID hal_EfuseParseXtal_8814A( IN PADAPTER pAdapter, @@ -2243,9 +2197,7 @@ hal_EfuseParseXtal_8814A( pHalData->CrystalCap = hwinfo[EEPROM_XTAL_8814]; if(pHalData->CrystalCap == 0xFF) pHalData->CrystalCap = EEPROM_Default_CrystalCap_8814; /* what value should 8814 set? */ - } - else - { + } else { pHalData->CrystalCap = EEPROM_Default_CrystalCap_8814; } RTW_INFO("CrystalCap: 0x%2x\n", pHalData->CrystalCap); @@ -2259,11 +2211,11 @@ hal_ReadAntennaDiversity8814A( ) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); - - pHalData->TRxAntDivType = NO_ANTDIV; + + pHalData->TRxAntDivType = NO_ANTDIV; pHalData->AntDivCfg = 0; - - RTW_INFO("SWAS: bHwAntDiv = %x, TRxAntDivType = %x\n", + + RTW_INFO("SWAS: bHwAntDiv = %x, TRxAntDivType = %x\n", pHalData->AntDivCfg, pHalData->TRxAntDivType); } @@ -2272,7 +2224,7 @@ hal_ReadPAType_8814A( IN PADAPTER Adapter, IN u8* PROMContent, IN BOOLEAN AutoloadFail, - OUT u8* pPAType, + OUT u8* pPAType, OUT u8* pLNAType ) { @@ -2289,76 +2241,66 @@ hal_ReadPAType_8814A( LNAType_AB = EF1Byte( *(u8*)&PROMContent[EEPROM_LNA_TYPE_AB_2G_8814] ); LNAType_CD = EF1Byte( *(u8*)&PROMContent[EEPROM_LNA_TYPE_CD_2G_8814] ); - + if (*pPAType == 0xFF && RFEType == 0xFF) - pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; - else + pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; + else pHalData->ExternalPA_2G = (*pPAType & BIT4) ? 1 : 0; if (LNAType_AB == 0xFF) pHalData->ExternalLNA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_LNA) ? 1 : 0; else - pHalData->ExternalLNA_2G = (LNAType_AB & BIT3) ? 1 : 0; + pHalData->ExternalLNA_2G = (LNAType_AB & BIT3) ? 1 : 0; *pLNAType = (LNAType_AB & BIT3) << 1 | (LNAType_AB & BIT7) >> 2 | (LNAType_CD & BIT3) << 3 | (LNAType_CD & BIT7); - } - else - { - pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; - pHalData->ExternalLNA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_LNA) ? 1 : 0; + } else { + pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; + pHalData->ExternalLNA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_LNA) ? 1 : 0; } if (GetRegAmplifierType5G(Adapter) == 0) // AUTO { LNAType_AB = EF1Byte( *(u8*)&PROMContent[EEPROM_LNA_TYPE_AB_5G_8814] ); LNAType_CD = EF1Byte( *(u8*)&PROMContent[EEPROM_LNA_TYPE_CD_5G_8814] ); - + if (*pPAType == 0xFF && RFEType == 0xFF) - pHalData->ExternalPA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; - else - pHalData->ExternalPA_5G = (*pPAType & BIT0) ? 1 : 0; + pHalData->ExternalPA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; + else + pHalData->ExternalPA_5G = (*pPAType & BIT0) ? 1 : 0; if (LNAType_AB == 0xFF) pHalData->ExternalLNA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_LNA) ? 1 : 0; else - pHalData->ExternalLNA_5G = (LNAType_AB & BIT3) ? 1 : 0; + pHalData->ExternalLNA_5G = (LNAType_AB & BIT3) ? 1 : 0; (*pLNAType) |= ((LNAType_AB & BIT3) >> 3 | (LNAType_AB & BIT7) >> 6 | (LNAType_CD & BIT3) >> 1 | (LNAType_CD & BIT7) >> 4); + } else { + pHalData->ExternalPA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_PA_5G) ? 1 : 0; + pHalData->ExternalLNA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_LNA_5G) ? 1 : 0; } - else - { - pHalData->ExternalPA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_PA_5G) ? 1 : 0; - pHalData->ExternalLNA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_LNA_5G) ? 1 : 0; - } - } - else - { - pHalData->ExternalPA_2G = EEPROM_Default_PAType; - pHalData->ExternalPA_5G = 0xFF; - pHalData->ExternalLNA_2G = EEPROM_Default_LNAType; - pHalData->ExternalLNA_5G = 0xFF; - - if (GetRegAmplifierType2G(Adapter) == 0) - { - pHalData->ExternalPA_2G = 0; - pHalData->ExternalLNA_2G = 0; - } - else + } else { + pHalData->ExternalPA_2G = EEPROM_Default_PAType; + pHalData->ExternalPA_5G = 0xFF; + pHalData->ExternalLNA_2G = EEPROM_Default_LNAType; + pHalData->ExternalLNA_5G = 0xFF; + + if (GetRegAmplifierType2G(Adapter) == 0) { - pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; - pHalData->ExternalLNA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_LNA) ? 1 : 0; - } - if (GetRegAmplifierType5G(Adapter) == 0) - { - pHalData->ExternalPA_5G = 0; - pHalData->ExternalLNA_5G = 0; + pHalData->ExternalPA_2G = 0; + pHalData->ExternalLNA_2G = 0; + } else { + pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; + pHalData->ExternalLNA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_LNA) ? 1 : 0; } - else + if (GetRegAmplifierType5G(Adapter) == 0) { - pHalData->ExternalPA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_PA_5G) ? 1 : 0; - pHalData->ExternalLNA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_LNA_5G) ? 1 : 0; + pHalData->ExternalPA_5G = 0; + pHalData->ExternalLNA_5G = 0; + } else { + pHalData->ExternalPA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_PA_5G) ? 1 : 0; + pHalData->ExternalLNA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_LNA_5G) ? 1 : 0; } } RTW_INFO("PAType is 0x%x, LNAType is 0x%x\n", *pPAType, *pLNAType); @@ -2421,7 +2363,7 @@ VOID hal_ReadAmplifierType_8814A( VOID hal_ReadRFEType_8814A( - IN PADAPTER Adapter, + IN PADAPTER Adapter, IN u8* PROMContent, IN BOOLEAN AutoloadFail ) @@ -2438,15 +2380,13 @@ hal_ReadRFEType_8814A( else if(IS_HARDWARE_TYPE_8814AU(Adapter)) pHalData->RFEType = 1; hal_ReadAmplifierType_8814A(Adapter); - + } else { /* bit7==0 means RFE type defined by 0xCA[6:0] */ pHalData->RFEType = PROMContent[EEPROM_RFE_OPTION_8814] & 0x7F; hal_ReadAmplifierType_8814A(Adapter); } - } - else - { + } else { if(GetRegRFEType(Adapter) != 64) pHalData->RFEType = GetRegRFEType(Adapter); else if(IS_HARDWARE_TYPE_8814AE(Adapter)) @@ -2469,18 +2409,18 @@ hal_EfusePowerSwitch8814A( u16 tmpV16; u8 EFUSE_ACCESS_ON_8814A = 0x69; u8 EFUSE_ACCESS_OFF_8814A = 0x00; - + if (PwrState == _TRUE) { - rtw_write8(pAdapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_ON_8814A); - + rtw_write8(pAdapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_ON_8814A); + // Reset: 0x0000h[28], default valid tmpV16 = PlatformEFIORead2Byte(pAdapter,REG_SYS_FUNC_EN); if( !(tmpV16 & FEN_ELDR) ){ tmpV16 |= FEN_ELDR ; rtw_write16(pAdapter,REG_SYS_FUNC_EN,tmpV16); } - + // Clock: Gated(0x0008h[5]) 8M(0x0008h[1]) clock from ANA, default valid tmpV16 = PlatformEFIORead2Byte(pAdapter,REG_SYS_CLKR); if( (!(tmpV16 & LOADER_CLK_EN) ) ||(!(tmpV16 & ANA8M) ) ) @@ -2497,17 +2437,15 @@ hal_EfusePowerSwitch8814A( tempval |= (VOLTAGE_V25 << 4); rtw_write8(pAdapter, EFUSE_TEST+3, (tempval | 0x80)); } - } - else - { + } else { rtw_write8(pAdapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_OFF_8814A); - + if(bWrite == _TRUE){ // Disable LDO 2.5V after read/write action tempval = rtw_read8(pAdapter, EFUSE_TEST+3); rtw_write8(pAdapter, EFUSE_TEST+3, (tempval & 0x7F)); } - } + } } static VOID @@ -2516,7 +2454,7 @@ rtl8814_EfusePowerSwitch( IN u8 bWrite, IN u8 PwrState) { - hal_EfusePowerSwitch8814A(pAdapter, bWrite, PwrState); + hal_EfusePowerSwitch8814A(pAdapter, bWrite, PwrState); } static VOID @@ -2568,16 +2506,14 @@ hal_EfuseReadEFuse8814A( // // 1. Read the first byte to check if efuse is empty!!! - // // - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); + // + efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); if(efuseHeader != 0xFF) { efuse_utilized++; - } - else - { + } else { RTW_INFO("EFUSE is empty\n"); efuse_utilized = 0; goto exit; @@ -2590,14 +2526,14 @@ hal_EfuseReadEFuse8814A( while((efuseHeader != 0xFF) && AVAILABLE_EFUSE_ADDR_8814A(eFuse_Addr)) { //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("efuse_Addr-%d efuse_data=%x\n", eFuse_Addr-1, *rtemp8)); - + // Check PG header for section num. if(EXT_HEADER(efuseHeader)) //extended header { offset_2_0 = GET_HDR_OFFSET_2_0(efuseHeader); //RT_DISP(FEEPROM, EFUSE_READ_ALL, ("extended header offset_2_0=%X\n", offset_2_0)); - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseExtHdr, bPseudoTest); + efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseExtHdr, bPseudoTest); //RT_DISP(FEEPROM, EFUSE_READ_ALL, ("efuse[%X]=%X\n", eFuse_Addr-1, efuseExtHdr)); @@ -2612,26 +2548,20 @@ hal_EfuseReadEFuse8814A( efuse_utilized++; } break; - } - else - { + } else { offset = ((efuseExtHdr & 0xF0) >> 1) | offset_2_0; wden = (efuseExtHdr & 0x0F); } - } - else - { + } else { RTW_INFO("Error condition, extended = 0xff\n"); // We should handle this condition. break; } - } - else - { + } else { offset = ((efuseHeader >> 4) & 0x0f); wden = (efuseHeader & 0x0f); } - + if(offset < EFUSE_MAX_SECTION_8814A) { // Get word enable value from PG header @@ -2639,7 +2569,7 @@ hal_EfuseReadEFuse8814A( for(i=0; iEfuseHal); @@ -2953,9 +2883,7 @@ static u16 hal_EfuseGetCurrentSize_8814A( PADAPTER pAdapter, BOOLEAN bPseudoTest if(bPseudoTest) { efuse_addr = (u16)(fakeEfuseUsedBytes); - } - else - { + } else { rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&efuse_addr); } //RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfuseGetCurrentSize_8723A(), start_efuse_addr = %d\n", efuse_addr)); @@ -2967,7 +2895,7 @@ static u16 hal_EfuseGetCurrentSize_8814A( PADAPTER pAdapter, BOOLEAN bPseudoTest if (efuse_data != 0xFF) { if ((efuse_data&0x1F) == 0x0F) //extended header - { + { hoffset = efuse_data; efuse_addr++; efuse_OneByteRead(pAdapter, efuse_addr, &efuse_data, bPseudoTest); @@ -2981,14 +2909,12 @@ static u16 hal_EfuseGetCurrentSize_8814A( PADAPTER pAdapter, BOOLEAN bPseudoTest } } else { hoffset = (efuse_data>>4) & 0x0F; - hworden = efuse_data & 0x0F; + hworden = efuse_data & 0x0F; } word_cnts = Efuse_CalculateWordCnts(hworden); //read next header efuse_addr = efuse_addr + (word_cnts*2)+1; - } - else - { + } else { bContinual = _FALSE ; } } @@ -2998,9 +2924,7 @@ static u16 hal_EfuseGetCurrentSize_8814A( PADAPTER pAdapter, BOOLEAN bPseudoTest fakeEfuseUsedBytes = efuse_addr; pEfuseHal->fakeEfuseUsedBytes = efuse_addr; RTW_INFO ("%s(), return %d \n", __func__, pEfuseHal->fakeEfuseUsedBytes ); - } - else - { + } else { pEfuseHal->EfuseUsedBytes = efuse_addr; pEfuseHal->EfuseUsedPercentage = (u1Byte)((pEfuseHal->EfuseUsedBytes*100)/pEfuseHal->PhysicalLen_WiFi); rtw_hal_set_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&efuse_addr); @@ -3009,7 +2933,7 @@ static u16 hal_EfuseGetCurrentSize_8814A( PADAPTER pAdapter, BOOLEAN bPseudoTest } return efuse_addr; - + } static u16 @@ -3025,41 +2949,40 @@ rtl8814_EfuseGetCurrentSize( return ret; } - static int hal_EfusePgPacketRead_8814A( IN PADAPTER pAdapter, IN u8 offset, IN u8 *data, IN BOOLEAN bPseudoTest) -{ +{ HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); PEFUSE_HAL pEfuseHal = &(pHalData->EfuseHal); - u8 ReadState = PG_STATE_HEADER; - + u8 ReadState = PG_STATE_HEADER; + int bContinual = _TRUE; - int bDataEmpty = _TRUE ; + int bDataEmpty = _TRUE ; u8 efuse_data,word_cnts=0; u16 efuse_addr = 0; - u8 hoffset=0,hworden=0; + u8 hoffset=0,hworden=0; u8 tmpidx=0; u8 tmpdata[8]; u8 tmp_header = 0; - + if(data==NULL) return _FALSE; - if(offset>=EFUSE_MAX_SECTION_JAGUAR) return _FALSE; - + if(offset>=EFUSE_MAX_SECTION_JAGUAR) return _FALSE; + _rtw_memset((PVOID)data, 0xff, sizeof(u8)*PGPKT_DATA_SIZE); _rtw_memset((PVOID)tmpdata, 0xff, sizeof(u8)*PGPKT_DATA_SIZE); - + // // Efuse has been pre-programmed dummy 5Bytes at the end of Efuse by CP. // Skip dummy parts to prevent unexpected data read from Efuse. // By pass right now. 2009.02.19. // while(bContinual && (efuse_addr < pEfuseHal->PhysicalLen_WiFi) ) - { + { //------- Header Read ------------- if(ReadState & PG_STATE_HEADER) { @@ -3073,19 +2996,15 @@ hal_EfusePgPacketRead_8814A( if((efuse_data & 0x0F) != 0x0F) { hoffset = ((tmp_header & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); - hworden = efuse_data & 0x0F; - } - else - { + hworden = efuse_data & 0x0F; + } else { efuse_addr++; break; } - - } - else - { + + } else { hoffset = (efuse_data>>4) & 0x0F; - hworden = efuse_data & 0x0F; + hworden = efuse_data & 0x0F; } word_cnts = Efuse_CalculateWordCnts(hworden); bDataEmpty = _TRUE ; @@ -3094,38 +3013,37 @@ hal_EfusePgPacketRead_8814A( for(tmpidx = 0;tmpidx< word_cnts*2 ;tmpidx++){ if(efuse_OneByteRead(pAdapter, efuse_addr+1+tmpidx ,&efuse_data, bPseudoTest) ){ tmpdata[tmpidx] = efuse_data; - if(efuse_data!=0xff){ + if(efuse_data!=0xff){ bDataEmpty = _FALSE; } - } + } } if(bDataEmpty==_FALSE){ - ReadState = PG_STATE_DATA; - }else{//read next header + ReadState = PG_STATE_DATA; + } else { //read next header efuse_addr = efuse_addr + (word_cnts*2)+1; - ReadState = PG_STATE_HEADER; + ReadState = PG_STATE_HEADER; } } - else{//read next header + else { //read next header efuse_addr = efuse_addr + (word_cnts*2)+1; - ReadState = PG_STATE_HEADER; + ReadState = PG_STATE_HEADER; } - - } - else{ + + } else { bContinual = _FALSE ; } - } + } //------- Data section Read ------------- else if(ReadState & PG_STATE_DATA) { efuse_WordEnableDataRead(hworden,tmpdata,data); efuse_addr = efuse_addr + (word_cnts*2)+1; - ReadState = PG_STATE_HEADER; + ReadState = PG_STATE_HEADER; } - - } - + + } + if( (data[0]==0xff) &&(data[1]==0xff) && (data[2]==0xff) && (data[3]==0xff) && (data[4]==0xff) &&(data[5]==0xff) && (data[6]==0xff) && (data[7]==0xff)) return _FALSE; @@ -3191,14 +3109,13 @@ efuse_PgPacketExceptionHandle( RTW_INFO("===> efuse_PgPacketExceptionHandle(), ErrOffset = 0x%X\n", ErrOffset); // ErrOffset is the offset of bad (extension) header. - //if (IS_HARDWARE_TYPE_8812AU(pAdapter)) + //if (IS_HARDWARE_TYPE_8812AU(pAdapter)) //ErrOffset = Hal_EfusePgPacketExceptionHandle_8812A(pAdapter, ErrOffset); RTW_INFO("<=== efuse_PgPacketExceptionHandle(), recovered! Jump to Offset = 0x%X\n", ErrOffset); - - return ErrOffset; -} + return ErrOffset; +} BOOLEAN hal_EfuseCheckIfDatafollowed( @@ -3210,7 +3127,7 @@ hal_EfuseCheckIfDatafollowed( { BOOLEAN bRet=FALSE; u8 i, efuse_data; - + for(i=0; i<(word_cnts*2) ; i++) { if(efuse_OneByteRead(pAdapter, (startAddr+i) ,&efuse_data, bPseudoTest)&&(efuse_data != 0xFF)) @@ -3259,7 +3176,6 @@ hal_EfuseWordEnMatched( return FALSE; } - BOOLEAN efuse_PgPacketPartialWrite( IN PADAPTER pAdapter, @@ -3278,7 +3194,7 @@ efuse_PgPacketPartialWrite( PGPKT_STRUCT curPkt; u16 max_sec_num = (efuseType == EFUSE_WIFI) ? pEfuseHal->MaxSecNum_WiFi : pEfuseHal->MaxSecNum_BT; u16 efuse_max = pEfuseHal->BankSize; - u16 efuse_max_available_len = + u16 efuse_max_available_len = (efuseType == EFUSE_WIFI) ? pEfuseHal->TotalAvailBytes_WiFi : pEfuseHal->TotalAvailBytes_BT; if (bPseudoTest) { @@ -3288,7 +3204,7 @@ efuse_PgPacketPartialWrite( //EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, &efuse_max_available_len, bPseudoTest); //EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_CONTENT_LEN_BANK, &efuse_max, bPseudoTest); - + if(efuseType == EFUSE_WIFI) { if(bPseudoTest) @@ -3299,14 +3215,10 @@ efuse_PgPacketPartialWrite( startAddr = (u16)fakeEfuseUsedBytes; #endif - } - else - { + } else { rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8*)&startAddr); } - } - else - { + } else { if(bPseudoTest) { #ifdef HAL_EFUSE_MEMORY @@ -3321,23 +3233,23 @@ efuse_PgPacketPartialWrite( rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BT_BYTES, (u8*)&startAddr); } } - + startAddr %= efuse_max; RTW_INFO("%s: startAddr=%#X\n", __FUNCTION__, startAddr); RTW_INFO("efuse_PgPacketPartialWrite(), startAddr = 0x%X\n", startAddr); while(1) { - if(startAddr >= efuse_max_available_len) + if(startAddr >= efuse_max_available_len) { bRet = _FALSE; - RTW_INFO("startAddr(%d) >= efuse_max_available_len(%d)\n", + RTW_INFO("startAddr(%d) >= efuse_max_available_len(%d)\n", startAddr, efuse_max_available_len); break; } - + if (efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest) && (efuse_data!=0xFF)) - { + { if(EXT_HEADER(efuse_data)) { cur_header = efuse_data; @@ -3345,11 +3257,11 @@ efuse_PgPacketPartialWrite( efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest); if (ALL_WORDS_DISABLED(efuse_data)) { - u16 recoveredAddr = startAddr; + u16 recoveredAddr = startAddr; recoveredAddr = efuse_PgPacketExceptionHandle(pAdapter, startAddr-1); if (recoveredAddr == (startAddr-1)) { - RTW_INFO("Error! All words disabled and the recovery failed, (Addr, Data) = (0x%X, 0x%X)\n", + RTW_INFO("Error! All words disabled and the recovery failed, (Addr, Data) = (0x%X, 0x%X)\n", startAddr, efuse_data); pAdapter->LastError = ERR_INVALID_DATA; break; @@ -3358,15 +3270,11 @@ efuse_PgPacketPartialWrite( RTW_INFO("Bad extension header but recovered => Keep going.\n"); continue; } - } - else - { + } else { curPkt.offset = ((cur_header & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); curPkt.word_en = efuse_data & 0x0F; } - } - else - { + } else { if (ALL_WORDS_DISABLED(efuse_data)) { u16 recoveredAddr = startAddr; recoveredAddr = efuse_PgPacketExceptionHandle(pAdapter, startAddr); @@ -3375,8 +3283,8 @@ efuse_PgPacketPartialWrite( RTW_INFO("Bad header but recovered => Read header again.\n"); } } - - cur_header = efuse_data; + + cur_header = efuse_data; curPkt.offset = (cur_header>>4) & 0x0F; curPkt.word_en = cur_header & 0x0F; } @@ -3384,14 +3292,14 @@ efuse_PgPacketPartialWrite( if (curPkt.offset > max_sec_num) { pAdapter->LastError = ERR_OUT_OF_RANGE; pEfuseHal->Status = ERR_OUT_OF_RANGE; - bRet = _FALSE; + bRet = _FALSE; break; } - + curPkt.word_cnts = Efuse_CalculateWordCnts(curPkt.word_en); // if same header is found but no data followed // write some part of data followed by the header. - if( (curPkt.offset == pTargetPkt->offset) && + if( (curPkt.offset == pTargetPkt->offset) && (!hal_EfuseCheckIfDatafollowed(pAdapter, curPkt.word_cnts, startAddr+1, bPseudoTest)) && hal_EfuseWordEnMatched(pTargetPkt, &curPkt, &matched_wden) ) { @@ -3405,14 +3313,14 @@ efuse_PgPacketPartialWrite( // if write fail on some words, write these bad words again PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pTargetPkt->offset, badworden, pTargetPkt->data, bPseudoTest); - + if(!PgWriteSuccess) { bRet = _FALSE; // write fail, return break; - } + } } - // partial write ok, update the target packet for later use + // partial write ok, update the target packet for later use for(i=0; i<4; i++) { if((matched_wden & (0x1<word_cnts = Efuse_CalculateWordCnts(pTargetPkt->word_en); } // read from next header - startAddr = startAddr + (curPkt.word_cnts*2) +1; - } - else - { + startAddr = startAddr + (curPkt.word_cnts*2) +1; + } else { // not used header, 0xff *pAddr = startAddr; RTW_INFO("Started from unused header offset=%d\n", startAddr); bRet = _TRUE; break; } - } + } return bRet; } - BOOLEAN hal_EfuseFixHeaderProcess( IN PADAPTER pAdapter, @@ -3450,9 +3355,9 @@ hal_EfuseFixHeaderProcess( u8 originaldata[8], badworden=0; u16 efuse_addr=*pAddr; u32 PgWriteSuccess=0; - + _rtw_memset((PVOID)originaldata, 0xff, 8); - + if(Efuse_PgPacketRead(pAdapter, pFixPkt->offset, originaldata, bPseudoTest)) { //check if data exist badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr+1, pFixPkt->word_en, originaldata, bPseudoTest); @@ -3464,21 +3369,16 @@ hal_EfuseFixHeaderProcess( return _FALSE; else efuse_addr = Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest); - } - else - { + } else { efuse_addr = efuse_addr + (pFixPkt->word_cnts*2) +1; } - } - else - { + } else { efuse_addr = efuse_addr + (pFixPkt->word_cnts*2) +1; } *pAddr = efuse_addr; return _TRUE; } - BOOLEAN efuse_PgPacketWrite2ByteHeader( IN PADAPTER pAdapter, @@ -3493,12 +3393,11 @@ efuse_PgPacketWrite2ByteHeader( u16 efuse_addr=*pAddr; u8 pg_header=0, tmp_header=0, pg_header_temp=0; u8 repeatcnt=0; - u16 efuse_max_available_len = + u16 efuse_max_available_len = (efuseType == EFUSE_WIFI) ? pEfuseHal->TotalAvailBytes_WiFi : pEfuseHal->TotalAvailBytes_BT; RTW_INFO("Wirte 2byte header\n"); - while(efuse_addr < efuse_max_available_len) { pg_header = ((pTargetPkt->offset & 0x07) << 5) | 0x0F; @@ -3517,7 +3416,7 @@ efuse_PgPacketWrite2ByteHeader( efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); } - + //to write ext_header if(tmp_header == pg_header) { @@ -3529,12 +3428,12 @@ efuse_PgPacketWrite2ByteHeader( efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); while(tmp_header == 0xFF || pg_header != tmp_header) - { + { if(repeatcnt++ > pEfuseHal->DataRetry) { RTW_INFO("Repeat over limit for ext_header!!\n"); return _FALSE; - } + } efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); @@ -3546,26 +3445,22 @@ efuse_PgPacketWrite2ByteHeader( { RTW_INFO("Repeat over limit for word_en!!\n"); return _FALSE; - } - else - { + } else { efuse_addr++; continue; } } - else if(pg_header != tmp_header) //offset PG fail + else if(pg_header != tmp_header) //offset PG fail { PGPKT_STRUCT fixPkt; //RT_ASSERT(_FALSE, ("Error, efuse_PgPacketWrite2ByteHeader(), offset PG fail, need to cover the existed data!!\n")); RTW_INFO("Error condition for offset PG fail, need to cover the existed data\n"); fixPkt.offset = ((pg_header_temp & 0xE0) >> 5) | ((tmp_header & 0xF0) >> 1); - fixPkt.word_en = tmp_header & 0x0F; + fixPkt.word_en = tmp_header & 0x0F; fixPkt.word_cnts = Efuse_CalculateWordCnts(fixPkt.word_en); if(!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) return _FALSE; - } - else - { + } else { bRet = _TRUE; break; } @@ -3573,7 +3468,7 @@ efuse_PgPacketWrite2ByteHeader( else if ((tmp_header & 0x1F) == 0x0F) //wrong extended header { efuse_addr+=2; - continue; + continue; } } @@ -3584,7 +3479,7 @@ efuse_PgPacketWrite2ByteHeader( BOOLEAN efuse_PgPacketWrite1ByteHeader( - IN PADAPTER pAdapter, + IN PADAPTER pAdapter, IN u8 efuseType, IN OUT u16* pAddr, IN PPGPKT_STRUCT pTargetPkt, @@ -3602,8 +3497,7 @@ efuse_PgPacketWrite1ByteHeader( if (IS_HARDWARE_TYPE_8723BE(pAdapter)) efuse_OneByteWrite(pAdapter, 0x1FF, 00, _FALSE); // increase current - - + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || @@ -3616,7 +3510,6 @@ efuse_PgPacketWrite1ByteHeader( IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter)) PHY_SetMacReg(pAdapter, EFUSE_TEST, BIT26, 1); // Restored to 1.5K Read, Suggested by Morris & Victor - while(tmp_header == 0xFF || pg_header != tmp_header) { if(repeatcnt++ > pEfuseHal->HeaderRetry) @@ -3628,34 +3521,30 @@ efuse_PgPacketWrite1ByteHeader( efuse_OneByteRead(pAdapter,efuse_addr, &tmp_header, bPseudoTest); RTW_INFO("===> efuse_PgPacketWrite1ByteHeader: Keep %d-th retrying, tmp_header = 0x%X\n", repeatcnt, tmp_header); } - + if(pg_header == tmp_header) { bRet = _TRUE; - } - else - { + } else { PGPKT_STRUCT fixPkt; //RT_ASSERT(_FALSE, ("Error, efuse_PgPacketWrite1ByteHeader(), offset PG fail, need to cover the existed data!!\n")); RTW_INFO(" pg_header(0x%X) != tmp_header(0x%X)\n", pg_header, tmp_header); RTW_INFO("Error condition for fixed PG packet, need to cover the existed data: (Addr, Data) = (0x%X, 0x%X)\n", efuse_addr, tmp_header); fixPkt.offset = (tmp_header>>4) & 0x0F; - fixPkt.word_en = tmp_header & 0x0F; + fixPkt.word_en = tmp_header & 0x0F; fixPkt.word_cnts = Efuse_CalculateWordCnts(fixPkt.word_en); if(!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) return _FALSE; } - + *pAddr = efuse_addr; return bRet; } - - BOOLEAN efuse_PgPacketWriteHeader( - IN PADAPTER pAdapter, + IN PADAPTER pAdapter, IN u8 efuseType, IN OUT u16* pAddr, IN PPGPKT_STRUCT pTargetPkt, @@ -3666,9 +3555,7 @@ efuse_PgPacketWriteHeader( if(pTargetPkt->offset >= EFUSE_MAX_SECTION_BASE) { bRet = efuse_PgPacketWrite2ByteHeader(pAdapter, efuseType, pAddr, pTargetPkt, bPseudoTest); - } - else - { + } else { bRet = efuse_PgPacketWrite1ByteHeader(pAdapter, efuseType, pAddr, pTargetPkt, bPseudoTest); } @@ -3677,7 +3564,7 @@ efuse_PgPacketWriteHeader( BOOLEAN efuse_PgPacketWriteData( - IN PADAPTER pAdapter, + IN PADAPTER pAdapter, IN u8 efuseType, IN u16* pAddr, IN PPGPKT_STRUCT pTargetPkt, @@ -3691,7 +3578,7 @@ efuse_PgPacketWriteData( badworden = 0x0f; badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr+1, pTargetPkt->word_en, pTargetPkt->data, bPseudoTest); if(badworden == 0x0F) - { + { RTW_INFO("efuse_PgPacketWriteData ok!!\n"); return _TRUE; } @@ -3699,7 +3586,7 @@ efuse_PgPacketWriteData( { // Reorganize other pg packet //RT_ASSERT(_FALSE, ("Error, efuse_PgPacketWriteData(), wirte data fail!!\n")); RTW_INFO("efuse_PgPacketWriteData Fail!!\n"); - + PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pTargetPkt->offset, badworden, pTargetPkt->data, bPseudoTest); if(!PgWriteSuccess) return _FALSE; @@ -3721,10 +3608,10 @@ hal_EfusePgPacketWrite_8814A(IN PADAPTER pAdapter, u8 efuseType = EFUSE_WIFI; PGPKT_STRUCT targetPkt; u16 startAddr = 0; - + RTW_INFO("===> efuse_PgPacketWrite[%s], offset: 0x%X\n", (efuseType == EFUSE_WIFI) ? "WIFI" : "BT", offset); - //4 [1] Check if the remaining space is available to write. + //4 [1] Check if the remaining space is available to write. if(!efuse_PgPacketCheck(pAdapter, efuseType, bPseudoTest)) { pAdapter->LastError = ERR_WRITE_PROTECT; @@ -3802,7 +3689,7 @@ void ReadRFType8814A(PADAPTER padapter) // pHalData->bRFPathRxEnable[0] = pHalData->bRFPathRxEnable[1] = _TRUE; //} - if (IsSupported24G(padapter->registrypriv.wireless_mode) && + if (IsSupported24G(padapter->registrypriv.wireless_mode) && IsSupported5G(padapter->registrypriv.wireless_mode)) pHalData->BandSet = BAND_ON_BOTH; else if (IsSupported5G(padapter->registrypriv.wireless_mode)) @@ -3843,7 +3730,7 @@ GetEEPROMSize8814A( curRCR = rtw_read16(Adapter, REG_SYS_EEPROM_CTRL); size = (curRCR & EEPROMSEL) ? 6 : 4; // 6: EEPROM used is 93C46, 4: boot from E-Fuse. - + RTW_INFO("EEPROM type is %s\n", size==4 ? "E-FUSE" : "93C46"); //return size; return 4; // <20120713, Kordan> The default value of HW is 6 ?!! @@ -3886,15 +3773,11 @@ void InitPGData8814A(PADAPTER padapter) //val16 = EF2Byte(ReadEEprom(pAdapter, (u16) (i>>1))); //*((u16*)(&PROMContent[i])) = val16; } - } - else - { + } else { // Read EFUSE real map to shadow. EFUSE_ShadowMapUpdate(padapter, EFUSE_WIFI, _FALSE); } - } - else - { + } else { // update to default value 0xFF if (!is_boot_from_eeprom(padapter)) EFUSE_ShadowMapUpdate(padapter, EFUSE_WIFI, _FALSE); @@ -3927,21 +3810,21 @@ static void read_chip_version_8814a(PADAPTER Adapter) if(Adapter->registrypriv.special_rf_path == 1) pHalData->VersionID.RFType = RF_TYPE_1T1R; //RF_1T1R; - + vdr = (value32 & EXT_VENDOR_ID) >> EXT_VENDOR_ID_SHIFT; if(vdr == 0x00) pHalData->VersionID.VendorType = CHIP_VENDOR_TSMC; else if(vdr == 0x01) pHalData->VersionID.VendorType = CHIP_VENDOR_SMIC; else if(vdr == 0x02) - pHalData->VersionID.VendorType = CHIP_VENDOR_UMC; + pHalData->VersionID.VendorType = CHIP_VENDOR_UMC; pHalData->VersionID.CUTVersion = (value32 & CHIP_VER_RTL_MASK)>>CHIP_VER_RTL_SHIFT; // IC version (CUT) pHalData->MultiFunc = RT_MULTI_FUNC_NONE; rtw_hal_config_rftype(Adapter); - + #if 1 dump_chip_info(pHalData->VersionID); #endif @@ -3958,20 +3841,18 @@ hal_PatchwithJaguar_8814( struct mlme_ext_priv *pmlmeext = &(Adapter->mlmeextpriv); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - if( (MediaStatus == RT_MEDIA_CONNECT) && + if( (MediaStatus == RT_MEDIA_CONNECT) && (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK_JAGUAR_BCUTAP )) { rtw_write8(Adapter, rVhtlen_Use_Lsig_Jaguar, 0x1); rtw_write8(Adapter, REG_TCR+3, BIT2); - } - else - { + } else { rtw_write8(Adapter, rVhtlen_Use_Lsig_Jaguar, 0x3F); rtw_write8(Adapter, REG_TCR+3, BIT0|BIT1|BIT2); } - /*if( (MediaStatus == RT_MEDIA_CONNECT) && + /*if( (MediaStatus == RT_MEDIA_CONNECT) && ((pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK_JAGUAR_BCUTAP) || (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK_JAGUAR_CCUTAP))) { @@ -4063,9 +3944,9 @@ void InitDefaultValue8814A(PADAPTER padapter) pwrctrlpriv = adapter_to_pwrctl(padapter); // init default value - pHalData->fw_ractrl = _FALSE; + pHalData->fw_ractrl = _FALSE; if (!pwrctrlpriv->bkeepfwalive) - pHalData->LastHMEBoxNum = 0; + pHalData->LastHMEBoxNum = 0; init_hal_spec_8814a(padapter); @@ -4090,7 +3971,7 @@ _InitBeaconParameters_8814A( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u16 val16; - u8 val8; + u8 val8; val8 = DIS_TSF_UDT; val16 = val8 | (val8 << 8); // port0 and port1 @@ -4129,9 +4010,9 @@ _BeaconFunctionEnable( { rtw_write8(Adapter, REG_BCN_CTRL, (BIT4 | BIT3 | BIT1)); //SetBcnCtrlReg(Adapter, (BIT4 | BIT3 | BIT1), 0x00); - //RT_TRACE(COMP_BEACON, DBG_LOUD, ("_BeaconFunctionEnable 0x550 0x%x\n", rtw_read8(Adapter, 0x550))); + //RT_TRACE(COMP_BEACON, DBG_LOUD, ("_BeaconFunctionEnable 0x550 0x%x\n", rtw_read8(Adapter, 0x550))); - rtw_write8(Adapter, REG_RD_CTRL+1, 0x6F); + rtw_write8(Adapter, REG_RD_CTRL+1, 0x6F); } void SetBeaconRelatedRegisters8814A(PADAPTER padapter) @@ -4141,24 +4022,24 @@ void SetBeaconRelatedRegisters8814A(PADAPTER padapter) struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); u32 bcn_ctrl_reg = REG_BCN_CTRL; - //reset TSF, enable update TSF, correcting TSF On Beacon - + //reset TSF, enable update TSF, correcting TSF On Beacon + //REG_BCN_INTERVAL //REG_BCNDMATIM //REG_ATIMWND //REG_TBTT_PROHIBIT //REG_DRVERLYINT - //REG_BCN_MAX_ERR + //REG_BCN_MAX_ERR //REG_BCNTCFG //(0x510) //REG_DUAL_TSF_RST - //REG_BCN_CTRL //(0x550) + //REG_BCN_CTRL //(0x550) //BCN interval #ifdef CONFIG_CONCURRENT_MODE if (padapter->iface_type == IFACE_PORT1){ bcn_ctrl_reg = REG_BCN_CTRL_1; } -#endif +#endif rtw_write16(padapter, REG_BCN_INTERVAL, pmlmeinfo->bcn_interval); rtw_write8(padapter, REG_ATIMWND, 0x02);// 2ms @@ -4166,12 +4047,12 @@ void SetBeaconRelatedRegisters8814A(PADAPTER padapter) rtw_write8(padapter, REG_SLOT, 0x09); - value32 =rtw_read32(padapter, REG_TCR); + value32 =rtw_read32(padapter, REG_TCR); value32 &= ~TSFRST; - rtw_write32(padapter, REG_TCR, value32); + rtw_write32(padapter, REG_TCR, value32); value32 |= TSFRST; - rtw_write32(padapter, REG_TCR, value32); + rtw_write32(padapter, REG_TCR, value32); // NOTE: Fix test chip's bug (about contention windows's randomness) rtw_write8(padapter, REG_RXTSF_OFFSET_CCK, 0x50); @@ -4182,7 +4063,7 @@ void SetBeaconRelatedRegisters8814A(PADAPTER padapter) ResumeTxBeacon(padapter); //rtw_write8(padapter, 0x422, rtw_read8(padapter, 0x422)|BIT(6)); - + //rtw_write8(padapter, 0x541, 0xff); //rtw_write8(padapter, 0x542, rtw_read8(padapter, 0x541)|BIT(0)); @@ -4212,8 +4093,8 @@ SetBeamformingCLK_8812( { RTW_INFO(" <==%s return by Scan\n", __FUNCTION__); return; - } - + } + // Stop Usb TxDMA rtw_write_port_cancel(Adapter); @@ -4246,12 +4127,12 @@ SetBeamformingCLK_8812( { if (rtw_read32(Adapter, REG_SCH_TXCMD_8812A) != 0) continue; - else + else break; } RTW_INFO(" Tx Status count %d\n", Count); - + // Stop RX DMA path u1btmp = rtw_read8(Adapter, REG_RXDMA_CONTROL_8812A); rtw_write8(Adapter, REG_RXDMA_CONTROL_8812A, u1btmp | BIT2); @@ -4266,7 +4147,7 @@ SetBeamformingCLK_8812( } RTW_INFO(" Rx Empty count %d \n", Count); - + // Disable clock rtw_write8(Adapter, REG_SYS_CLKR+1, 0xf0); // Disable 320M @@ -4304,7 +4185,7 @@ SetBeamformRfMode_8812( if(BeamformCap == pBeamInfo->beamforming_cap) return; - else + else pBeamInfo->beamforming_cap = BeamformCap; if(GET_RF_TYPE(Adapter) == RF_1T1R) @@ -4317,7 +4198,7 @@ SetBeamformRfMode_8812( PHY_SetRFReg(Adapter, ODM_RF_PATH_B, RF_WeLut_Jaguar, 0x80000,0x1); // RF Mode table write enable if(bSelfBeamformer) - { + { // Paath_A PHY_SetRFReg(Adapter, ODM_RF_PATH_A, RF_ModeTableAddr, 0x78000,0x3); // Select RX mode PHY_SetRFReg(Adapter, ODM_RF_PATH_A, RF_ModeTableData0, 0xfffff,0x3F7FF); // Set Table data @@ -4326,9 +4207,7 @@ SetBeamformRfMode_8812( PHY_SetRFReg(Adapter, ODM_RF_PATH_B, RF_ModeTableAddr, 0x78000, 0x3); // Select RX mode PHY_SetRFReg(Adapter, ODM_RF_PATH_B, RF_ModeTableData0, 0xfffff,0x3F7FF); // Set Table data PHY_SetRFReg(Adapter, ODM_RF_PATH_B, RF_ModeTableData1, 0xfffff,0xE26BF); // Enable TXIQGEN in RX mode - } - else - { + } else { // Paath_A PHY_SetRFReg(Adapter, ODM_RF_PATH_A, RF_ModeTableAddr, 0x78000, 0x3); // Select RX mode PHY_SetRFReg(Adapter, ODM_RF_PATH_A, RF_ModeTableData0, 0xfffff,0x3F7FF); // Set Table data @@ -4348,8 +4227,6 @@ SetBeamformRfMode_8812( PHY_SetBBReg(Adapter, rTxPath_Jaguar, bMaskByte1, 0x11); } - - VOID SetBeamformEnter_8812( IN PADAPTER Adapter, @@ -4368,7 +4245,7 @@ SetBeamformEnter_8812( if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) STAid = BeamformEntry.mac_id; - else + else STAid = BeamformEntry.p_aid; // Sounding protocol control @@ -4390,7 +4267,7 @@ SetBeamformEnter_8812( /*rtw_write16(Adapter, REG_BFMER1_INFO_8812A+6, BeamformEntry.P_AID);*/ } - // CSI report parameters of Beamformee + // CSI report parameters of Beamformee if( (BeamformEntry.beamforming_entry_cap & BEAMFORMEE_CAP_VHT_SU) || (BeamformEntry.beamforming_entry_cap & BEAMFORMER_CAP_VHT_SU) ) { @@ -4398,14 +4275,12 @@ SetBeamformEnter_8812( CSI_Param = 0x01090109; else CSI_Param = 0x01080108; - } - else - { + } else { if(pHalData->rf_type == RF_2T2R) CSI_Param = 0x03090309; else CSI_Param = 0x03080308; - } + } if(pHalData->rf_type == RF_2T2R) rtw_write32(Adapter, 0x9B4, 0x00000000); // Nc =2 @@ -4418,26 +4293,22 @@ SetBeamformEnter_8812( // P_AID of Beamformee & enable NDPA transmission & enable NDPA interrupt if(Idx == 0) - { - rtw_write16(Adapter, REG_TXBF_CTRL_8812A, STAid); - rtw_write8(Adapter, REG_TXBF_CTRL_8812A+3, rtw_read8(Adapter, REG_TXBF_CTRL_8812A+3)|BIT4|BIT6|BIT7); - } - else { + rtw_write16(Adapter, REG_TXBF_CTRL_8812A, STAid); + rtw_write8(Adapter, REG_TXBF_CTRL_8812A+3, rtw_read8(Adapter, REG_TXBF_CTRL_8812A+3)|BIT4|BIT6|BIT7); + } else { rtw_write16(Adapter, REG_TXBF_CTRL_8812A+2, STAid | BIT12 | BIT14 | BIT15); - } + } // CSI report parameters of Beamformee - if(Idx == 0) + if(Idx == 0) { // Get BIT24 & BIT25 u8 tmp = rtw_read8(Adapter, REG_BFMEE_SEL_8812A+3) & 0x3; - + rtw_write8(Adapter, REG_BFMEE_SEL_8812A+3, tmp | 0x60); rtw_write16(Adapter, REG_BFMEE_SEL_8812A, STAid | BIT9); - } - else - { + } else { // Set BIT25 rtw_write16(Adapter, REG_BFMEE_SEL_8812A+2, STAid | (0xE2 << 8)); } @@ -4448,7 +4319,6 @@ SetBeamformEnter_8812( beamforming_notify(Adapter); } - VOID SetBeamformLeave_8812( IN PADAPTER Adapter, @@ -4464,19 +4334,17 @@ SetBeamformLeave_8812( * Clear Associated Bfmee Sel */ if(pBeamInfo->beamforming_cap == BEAMFORMING_CAP_NONE) - rtw_write8(Adapter, REG_SND_PTCL_CTRL_8812A, 0xC8); + rtw_write8(Adapter, REG_SND_PTCL_CTRL_8812A, 0xC8); if(Idx == 0) - { - rtw_write16(Adapter, REG_TXBF_CTRL_8812A, 0); + { + rtw_write16(Adapter, REG_TXBF_CTRL_8812A, 0); rtw_write32(Adapter, REG_BFMER0_INFO_8812A, 0); rtw_write16(Adapter, REG_BFMER0_INFO_8812A+4, 0); rtw_write16(Adapter, REG_BFMEE_SEL_8812A, 0); - } - else - { + } else { rtw_write16(Adapter, REG_TXBF_CTRL_8812A+2, rtw_read16(Adapter, REG_TXBF_CTRL_8812A+2) & 0xF000); rtw_write32(Adapter, REG_BFMER1_INFO_8812A, 0); @@ -4486,7 +4354,6 @@ SetBeamformLeave_8812( } } - VOID SetBeamformStatus_8812( IN PADAPTER Adapter, @@ -4501,7 +4368,7 @@ SetBeamformStatus_8812( if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) BeamCtrlVal = BeamformEntry.mac_id; - else + else BeamCtrlVal = BeamformEntry.p_aid; if(Idx == 0) @@ -4520,9 +4387,7 @@ SetBeamformStatus_8812( BeamCtrlVal |= BIT10; else if(BeamformEntry.sound_bw == CHANNEL_WIDTH_80) BeamCtrlVal |= BIT11; - } - else - { + } else { BeamCtrlVal &= ~(BIT9|BIT10|BIT11); } @@ -4531,7 +4396,6 @@ SetBeamformStatus_8812( RTW_INFO("%s Idx %d BeamCtrlReg %x BeamCtrlVal %x\n", __FUNCTION__, Idx, BeamCtrlReg, BeamCtrlVal); } - VOID SetBeamformFwTxBFCmd_8812( IN PADAPTER Adapter @@ -4555,7 +4419,7 @@ SetBeamformFwTxBFCmd_8812( else PageNum0 = 0xFF; //stop sounding Period0 = (u8)(pBeamInfo->beamforming_entry[Idx].sound_period); - } + } else if(Idx == 1) { if(pBeamInfo->beamforming_entry[Idx].bSound) @@ -4563,7 +4427,7 @@ SetBeamformFwTxBFCmd_8812( else PageNum1 = 0xFF; //stop sounding Period1 = (u8)(pBeamInfo->beamforming_entry[Idx].sound_period); - } + } } } @@ -4571,19 +4435,18 @@ SetBeamformFwTxBFCmd_8812( u1TxBFParm[1] = PageNum1; u1TxBFParm[2] = (Period1 << 4) | Period0; FillH2CCmd_8812(Adapter, H2C_8812_TxBF, 3, u1TxBFParm); - + RTW_INFO("%s PageNum0 = %d Period0 = %d\n", __FUNCTION__, PageNum0, Period0); RTW_INFO("PageNum1 = %d Period1 %d\n", PageNum1, Period1); } - VOID SetBeamformDownloadNDPA_8812( IN PADAPTER Adapter, IN u8 Idx ) { - u8 u1bTmp=0, tmpReg422=0, Head_Page; + u8 u1bTmp=0, tmpReg422=0, Head_Page; u8 BcnValidReg=0, count=0, DLBcnCount=0; BOOLEAN bSendBeacon=_FALSE; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); @@ -4599,7 +4462,7 @@ SetBeamformDownloadNDPA_8812( Head_Page = 0xFE; rtw_hal_get_def_var(Adapter, HAL_DEF_TX_PAGE_BOUNDARY, (u16 *)&TxPageBndy); - + //Set REG_CR bit 8. DMA beacon by SW. u1bTmp = rtw_read8(Adapter, REG_CR+1); rtw_write8(Adapter, REG_CR+1, (u1bTmp|BIT0)); @@ -4619,17 +4482,17 @@ SetBeamformDownloadNDPA_8812( // TDECTRL[15:8] 0x209[7:0] = 0xF6 Beacon Head for TXDMA rtw_write8(Adapter,REG_TDECTRL+1, Head_Page); - + do - { + { // Clear beacon valid check bit. BcnValidReg = rtw_read8(Adapter, REG_TDECTRL+2); rtw_write8(Adapter, REG_TDECTRL+2, (BcnValidReg|BIT0)); - + // download NDPA rsvd page. if(pBeamEntry->beamforming_entry_cap & BEAMFORMER_CAP_VHT_SU) beamforming_send_vht_ndpa_packet(Adapter,pBeamEntry->mac_addr,pBeamEntry->aid,pBeamEntry->sound_bw, BCN_QUEUE_INX); - else + else beamforming_send_ht_ndpa_packet(Adapter,pBeamEntry->mac_addr,pBeamEntry->sound_bw, BCN_QUEUE_INX); // check rsvd page download OK. @@ -4642,8 +4505,8 @@ SetBeamformDownloadNDPA_8812( BcnValidReg = rtw_read8(Adapter, REG_TDECTRL+2); } DLBcnCount++; - }while(!(BcnValidReg&BIT0) && DLBcnCount<5); - + } while(!(BcnValidReg&BIT0) && DLBcnCount<5); + if(!(BcnValidReg&BIT0)) RTW_INFO("%s Download RSVD page failed!\n", __FUNCTION__); @@ -4652,7 +4515,7 @@ SetBeamformDownloadNDPA_8812( // To make sure that if there exists an adapter which would like to send beacon. // If exists, the origianl value of 0x422[6] will be 1, we should check this to - // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause + // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause // the beacon cannot be sent by HW. // 2010.06.23. Added by tynli. if(bSendBeacon) @@ -4685,7 +4548,6 @@ SetBeamformFwTxBF_8812( SetBeamformFwTxBFCmd_8812(Adapter); } - VOID SetBeamformPatch_8812( IN PADAPTER Adapter, @@ -4694,13 +4556,13 @@ SetBeamformPatch_8812( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); struct beamforming_info *pBeamInfo = GET_BEAMFORM_INFO(&(Adapter->mlmepriv)); - + if(pBeamInfo->beamforming_cap == BEAMFORMING_CAP_NONE) return; - + /*if(Operation == SCAN_OPT_BACKUP_BAND0) { - rtw_write8(Adapter, REG_SND_PTCL_CTRL_8812A, 0xC8); + rtw_write8(Adapter, REG_SND_PTCL_CTRL_8812A, 0xC8); } else if(Operation == SCAN_OPT_RESTORE) { @@ -4731,7 +4593,7 @@ static void hw_var_set_monitor(PADAPTER Adapter, u8 variable, u8 *val) rcr_bits |= RCR_APPFCS; #if 0 - /* + /* CRC and ICV packet will drop in recvbuf2recvframe() We no turn on it. */ @@ -4758,7 +4620,7 @@ static void hw_var_set_monitor(PADAPTER Adapter, u8 variable, u8 *val) static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) { - u8 val8; + u8 val8; u8 mode = *((u8 *)val); u32 value_rcr; static u8 isMonitor = _FALSE; @@ -4785,12 +4647,12 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) { // disable Port1 TSF update rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|DIS_TSF_UDT); - + // set net_type val8 = rtw_read8(Adapter, MSR)&0x03; val8 |= (mode<<2); rtw_write8(Adapter, MSR, val8); - + RTW_INFO("%s()-%d mode = %d\n", __FUNCTION__, __LINE__, mode); if((mode == _HW_STATE_STATION_) || (mode == _HW_STATE_NOLINK_)) @@ -4801,21 +4663,21 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) #ifdef CONFIG_PCI_HCI UpdateInterruptMask8814AE(Adapter, 0, 0, RT_BCN_INT_MASKS, 0); #else //CONFIG_PCI_HCI - #ifdef CONFIG_INTERRUPT_BASED_TXBCN + #ifdef CONFIG_INTERRUPT_BASED_TXBCN - #ifdef CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT + #ifdef CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT rtw_write8(Adapter, REG_DRVERLYINT, 0x05);//restore early int time to 5ms - UpdateInterruptMask8814AU(Adapter,_TRUE, 0, IMR_BCNDMAINT0_8812); + UpdateInterruptMask8814AU(Adapter,_TRUE, 0, IMR_BCNDMAINT0_8812); #endif // CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT - - #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR + + #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR UpdateInterruptMask8814AU(Adapter,_TRUE ,0, (IMR_TXBCN0ERR_8812|IMR_TXBCN0OK_8812)); #endif// CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR - + #endif //CONFIG_INTERRUPT_BASED_TXBCN #endif //CONFIG_PCI_HCI } - + rtw_write8(Adapter,REG_BCN_CTRL_1, 0x11);//disable atim wnd and disable beacon function //rtw_write8(Adapter,REG_BCN_CTRL_1, 0x18); } @@ -4834,12 +4696,12 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) #ifdef CONFIG_PCI_HCI UpdateInterruptMask8814AE(Adapter, RT_BCN_INT_MASKS, 0, 0, 0); #else - #ifdef CONFIG_INTERRUPT_BASED_TXBCN + #ifdef CONFIG_INTERRUPT_BASED_TXBCN #ifdef CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT UpdateInterruptMask8814AU(Adapter,_TRUE ,IMR_BCNDMAINT0_8812, 0); #endif//CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT - #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR + #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR UpdateInterruptMask8814AU(Adapter,_TRUE ,(IMR_TXBCN0ERR_8812|IMR_TXBCN0OK_8812), 0); #endif//CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR @@ -4847,7 +4709,7 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) #endif ResumeTxBeacon(Adapter); - + rtw_write8(Adapter, REG_BCN_CTRL_1, 0x12); #ifdef RTL8814AE_SW_BCN @@ -4865,16 +4727,16 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) //enable to rx data frame rtw_write16(Adapter, REG_RXFLTMAP2, 0xFFFF); - //Beacon Control related register for first time - rtw_write8(Adapter, REG_BCNDMATIM, 0x02); // 2ms + //Beacon Control related register for first time + rtw_write8(Adapter, REG_BCNDMATIM, 0x02); // 2ms //rtw_write8(Adapter, REG_BCN_MAX_ERR, 0xFF); rtw_write8(Adapter, REG_ATIMWND_1, 0x0a); // 10ms for port1 rtw_write16(Adapter, REG_BCNTCFG, 0x00); rtw_write16(Adapter, REG_TBTT_PROHIBIT, 0xff04); rtw_write16(Adapter, REG_TSFTR_SYN_OFFSET, 0x7fff);// +32767 (~32ms) - - //reset TSF2 + + //reset TSF2 rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(1)); //enable BCN1 Function for if2 @@ -4883,13 +4745,13 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) #ifdef CONFIG_CONCURRENT_MODE if(check_buddy_fwstate(Adapter, WIFI_FW_NULL_STATE)) - rtw_write8(Adapter, REG_BCN_CTRL, + rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL) & ~EN_BCN_FUNCTION); #endif //BCN1 TSF will sync to BCN0 TSF with offset(0x518) if if1_sta linked //rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(5)); //rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(3)); - + //dis BCN0 ATIM WND if if1 is station rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)|DIS_ATIM); @@ -4908,18 +4770,18 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) { // disable Port0 TSF update rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)|DIS_TSF_UDT); - + // set net_type val8 = rtw_read8(Adapter, MSR)&0x0c; val8 |= mode; rtw_write8(Adapter, MSR, val8); - + RTW_INFO("%s()-%d mode = %d\n", __FUNCTION__, __LINE__, mode); - + if((mode == _HW_STATE_STATION_) || (mode == _HW_STATE_NOLINK_)) { #ifdef CONFIG_CONCURRENT_MODE - if(!check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) + if(!check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) #endif // CONFIG_CONCURRENT_MODE { StopTxBeacon(Adapter); @@ -4928,18 +4790,18 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) #else #ifdef CONFIG_INTERRUPT_BASED_TXBCN #ifdef CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT - rtw_write8(Adapter, REG_DRVERLYINT, 0x05);//restore early int time to 5ms - UpdateInterruptMask8814AU(Adapter,_TRUE, 0, IMR_BCNDMAINT0_8812); + rtw_write8(Adapter, REG_DRVERLYINT, 0x05);//restore early int time to 5ms + UpdateInterruptMask8814AU(Adapter,_TRUE, 0, IMR_BCNDMAINT0_8812); #endif//CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT - - #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR + + #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR UpdateInterruptMask8814AU(Adapter,_TRUE ,0, (IMR_TXBCN0ERR_8812|IMR_TXBCN0OK_8812)); #endif //CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR - + #endif //CONFIG_INTERRUPT_BASED_TXBCN #endif } - + rtw_write8(Adapter,REG_BCN_CTRL, 0x19);//disable atim wnd //rtw_write8(Adapter,REG_BCN_CTRL, 0x18); } @@ -4957,15 +4819,15 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) #ifdef CONFIG_PCI_HCI UpdateInterruptMask8814AE(Adapter, RT_BCN_INT_MASKS, 0, 0, 0); #else - #ifdef CONFIG_INTERRUPT_BASED_TXBCN + #ifdef CONFIG_INTERRUPT_BASED_TXBCN #ifdef CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT UpdateInterruptMask8814AU(Adapter,_TRUE ,IMR_BCNDMAINT0_8812, 0); #endif//CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT - #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR + #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR UpdateInterruptMask8814AU(Adapter,_TRUE ,(IMR_TXBCN0ERR_8812|IMR_TXBCN0OK_8812), 0); #endif//CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR - + #endif //CONFIG_INTERRUPT_BASED_TXBCN #endif @@ -4990,8 +4852,8 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) rtw_write16(Adapter, REG_RXFLTMAP2, 0xFFFF); //Beacon Control related register for first time - rtw_write8(Adapter, REG_BCNDMATIM, 0x02); // 2ms - + rtw_write8(Adapter, REG_BCNDMATIM, 0x02); // 2ms + //rtw_write8(Adapter, REG_BCN_MAX_ERR, 0xFF); rtw_write8(Adapter, REG_ATIMWND, 0x0a); // 10ms rtw_write16(Adapter, REG_BCNTCFG, 0x00); @@ -5000,14 +4862,14 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) //reset TSF rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(0)); - + //enable BCN0 Function for if1 //don't enable update TSF0 for if1 (due to TSF update when beacon/probe rsp are received) rtw_write8(Adapter, REG_BCN_CTRL, (DIS_TSF_UDT|EN_BCN_FUNCTION | EN_TXBCN_RPT|DIS_BCNQ_SUB)); #ifdef CONFIG_CONCURRENT_MODE if(check_buddy_fwstate(Adapter, WIFI_FW_NULL_STATE)) - rtw_write8(Adapter, REG_BCN_CTRL_1, + rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1) & ~EN_BCN_FUNCTION); #endif @@ -5045,7 +4907,7 @@ static void hw_var_set_macaddr(PADAPTER Adapter, u8 variable, u8* val) { rtw_write8(GET_PRIMARY_ADAPTER(Adapter), (reg_macid+idx), val[idx]); } - + } static void hw_var_set_bssid(PADAPTER Adapter, u8 variable, u8* val) @@ -5079,24 +4941,22 @@ static void hw_var_set_bcn_func(PADAPTER Adapter, u8 variable, u8* val) if(Adapter->iface_type == IFACE_PORT1) { bcn_ctrl_reg = REG_BCN_CTRL_1; - } + } else -#endif - { +#endif + { bcn_ctrl_reg = REG_BCN_CTRL; } if(*((u8 *)val)) { rtw_write8(Adapter, bcn_ctrl_reg, (EN_BCN_FUNCTION | EN_TXBCN_RPT)); - } - else - { - + } else { + u8 val8; val8 = rtw_read8(Adapter, bcn_ctrl_reg); val8 &= ~(EN_BCN_FUNCTION | EN_TXBCN_RPT); - + #ifdef CONFIG_BT_COEXIST if (GET_HAL_DATA(Adapter)->EEPROMBluetoothCoexist == 1) { @@ -5108,7 +4968,7 @@ static void hw_var_set_bcn_func(PADAPTER Adapter, u8 variable, u8* val) rtw_write8(Adapter, bcn_ctrl_reg, val8); } - + } @@ -5124,7 +4984,7 @@ static void hw_var_set_correct_tsf(PADAPTER Adapter, u8 variable, u8* val) tsf = pmlmeext->TSFValue - rtw_modular64(pmlmeext->TSFValue, (pmlmeinfo->bcn_interval*1024)) -1024; //us if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) - { + { //pHalData->RegTxPause |= STOP_BCNQ;BIT(6) //rtw_write8(Adapter, REG_TXPAUSE, (rtw_read8(Adapter, REG_TXPAUSE)|BIT(6))); StopTxBeacon(Adapter); @@ -5134,18 +4994,18 @@ static void hw_var_set_correct_tsf(PADAPTER Adapter, u8 variable, u8* val) { //disable related TSF function rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)&(~BIT(3))); - + rtw_write32(Adapter, REG_TSFTR1, tsf); rtw_write32(Adapter, REG_TSFTR1+4, tsf>>32); //enable related TSF function - rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(3)); + rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(3)); // Update buddy port's TSF if it is SoftAP for beacon TX issue! if ( (pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE && check_buddy_fwstate(Adapter, WIFI_AP_STATE) - ) { + ) { //disable related TSF function rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)&(~BIT(3))); @@ -5160,26 +5020,23 @@ static void hw_var_set_correct_tsf(PADAPTER Adapter, u8 variable, u8* val) RTW_INFO("ERROR! %s()-%d: Reset port0 TSF fail\n", __FUNCTION__, __LINE__); -#endif // CONFIG_TSF_RESET_OFFLOAD - } +#endif // CONFIG_TSF_RESET_OFFLOAD + } - - } - else - { + } else { //disable related TSF function rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)&(~BIT(3))); - + rtw_write32(Adapter, REG_TSFTR, tsf); rtw_write32(Adapter, REG_TSFTR+4, tsf>>32); //enable related TSF function rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)|BIT(3)); - + // Update buddy port's TSF if it is SoftAP for beacon TX issue! if ( (pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE && check_buddy_fwstate(Adapter, WIFI_AP_STATE) - ) { + ) { //disable related TSF function rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)&(~BIT(3))); @@ -5194,11 +5051,10 @@ static void hw_var_set_correct_tsf(PADAPTER Adapter, u8 variable, u8* val) RTW_INFO("ERROR! %s()-%d: Reset port1 TSF fail\n", __FUNCTION__, __LINE__); #endif // CONFIG_TSF_RESET_OFFLOAD - } + } } - - + if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) { //pHalData->RegTxPause &= (~STOP_BCNQ); @@ -5212,10 +5068,9 @@ static void hw_var_set_correct_tsf(PADAPTER Adapter, u8 variable, u8* val) static void hw_var_set_mlme_disconnect(PADAPTER Adapter, u8 variable, u8* val) { #ifdef CONFIG_CONCURRENT_MODE - - if(check_buddy_mlmeinfo_state(Adapter, _HW_STATE_NOLINK_)) + + if(check_buddy_mlmeinfo_state(Adapter, _HW_STATE_NOLINK_)) rtw_write16(Adapter, REG_RXFLTMAP2, 0x00); - if(Adapter->iface_type == IFACE_PORT1) { @@ -5227,9 +5082,7 @@ static void hw_var_set_mlme_disconnect(PADAPTER Adapter, u8 variable, u8* val) // disable Port1's beacon function rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)&(~BIT(3))); - } - else - { + } else { //reset TSF rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(0)); @@ -5280,8 +5133,8 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER Adapter, u8 variable, u8* val) || (check_buddy_fwstate(Adapter, WIFI_AP_STATE) == _TRUE) #endif ) - { - rcr_clear_bit = RCR_CBSSID_BCN; + { + rcr_clear_bit = RCR_CBSSID_BCN; } #ifdef CONFIG_TDLS // TDLS will clear RCR_CBSSID_DATA bit for connection. @@ -5313,7 +5166,7 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER Adapter, u8 variable, u8* val) } else//sitesurvey done { - if(check_fwstate(pmlmepriv, (_FW_LINKED|WIFI_AP_STATE)) + if(check_fwstate(pmlmepriv, (_FW_LINKED|WIFI_AP_STATE)) #ifdef CONFIG_CONCURRENT_MODE || check_buddy_fwstate(Adapter, (_FW_LINKED|WIFI_AP_STATE)) #endif @@ -5352,11 +5205,11 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER Adapter, u8 variable, u8* val) #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) tx_beacon_hdl(iface, NULL); #endif - #endif + #endif } } } - } + } } static void hw_var_set_mlme_join(PADAPTER Adapter, u8 variable, u8* val) @@ -5368,25 +5221,23 @@ static void hw_var_set_mlme_join(PADAPTER Adapter, u8 variable, u8* val) struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; if(type == 0) // prepare to join - { + { if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && - check_buddy_fwstate(Adapter, _FW_LINKED)) + check_buddy_fwstate(Adapter, _FW_LINKED)) { StopTxBeacon(Adapter); } - + //enable to rx data frame.Accept all data frame //rtw_write32(padapter, REG_RCR, rtw_read32(padapter, REG_RCR)|RCR_ADF); rtw_write16(Adapter, REG_RXFLTMAP2,0xFFFF); if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) { - rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)|RCR_CBSSID_BCN); - } - else - { + rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)|RCR_CBSSID_BCN); + } else { rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)|RCR_CBSSID_DATA|RCR_CBSSID_BCN); - } + } if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) { @@ -5398,30 +5249,29 @@ static void hw_var_set_mlme_join(PADAPTER Adapter, u8 variable, u8* val) } } else if(type == 1) //joinbss_event call back when join res < 0 - { - if(check_buddy_mlmeinfo_state(Adapter, _HW_STATE_NOLINK_)) + { + if(check_buddy_mlmeinfo_state(Adapter, _HW_STATE_NOLINK_)) rtw_write16(Adapter, REG_RXFLTMAP2,0x00); if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && check_buddy_fwstate(Adapter, _FW_LINKED)) { - ResumeTxBeacon(Adapter); - + ResumeTxBeacon(Adapter); + //reset TSF 1/2 after ResumeTxBeacon - rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(1)|BIT(0)); - + rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(1)|BIT(0)); + } } else if(type == 2) //sta add event call back { - + //enable update TSF if(Adapter->iface_type == IFACE_PORT1) rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)&(~BIT(4))); - else + else rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)&(~BIT(4))); - - + if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE)) { //fixed beacon issue for 8191su........... @@ -5433,16 +5283,16 @@ static void hw_var_set_mlme_join(PADAPTER Adapter, u8 variable, u8* val) if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && check_buddy_fwstate(Adapter, _FW_LINKED)) { - ResumeTxBeacon(Adapter); - + ResumeTxBeacon(Adapter); + //reset TSF 1/2 after ResumeTxBeacon rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(1)|BIT(0)); } - + } rtw_write16(Adapter, REG_RL, RetryLimit << RETRY_LIMIT_SHORT_SHIFT | RetryLimit << RETRY_LIMIT_LONG_SHIFT); - + #endif //CONFIG_CONCURRENT_MODE } @@ -5457,7 +5307,7 @@ static void rtw_store_all_sta_hwseq(_adapter *padapter) struct sta_priv *pstapriv = &padapter->stapriv; struct dvobj_priv *dvobj = adapter_to_dvobj(padapter); struct macid_ctl_t *macid_ctl = dvobj_to_macidctl(dvobj); - + /* save each HW sequence of mac id from report fifo */ for (index = 0; index < macid_ctl->num && index < NUM_STA; index++) { if (rtw_macid_is_used(macid_ctl, index)) { @@ -5468,14 +5318,14 @@ static void rtw_store_all_sta_hwseq(_adapter *padapter) /* RTW_INFO("mac_id:%d is used, hw_seq[index]=%d\n", index, hw_seq[index]); */ } } - + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); for (index = 0; index < NUM_STA; index++) { psta = NULL; - + phead = &(pstapriv->sta_hash[index]); plist = get_next(phead); - + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { psta = LIST_CONTAINOR(plist, struct sta_info, hash_list); plist = get_next(plist); @@ -5486,7 +5336,7 @@ static void rtw_store_all_sta_hwseq(_adapter *padapter) } _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); - + } static void rtw_restore_all_sta_hwseq(_adapter *padapter) @@ -5500,25 +5350,25 @@ static void rtw_restore_all_sta_hwseq(_adapter *padapter) struct sta_priv *pstapriv = &padapter->stapriv; struct dvobj_priv *dvobj = adapter_to_dvobj(padapter); struct macid_ctl_t *macid_ctl = dvobj_to_macidctl(dvobj); - + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); for (index = 0; index < NUM_STA; index++) { psta = NULL; - + phead = &(pstapriv->sta_hash[index]); plist = get_next(phead); - + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { psta = LIST_CONTAINOR(plist, struct sta_info, hash_list); plist = get_next(plist); - + hw_seq[psta->mac_id] = psta->hwseq; /* RTW_INFO(" psta->mac_id=%d, psta->hwseq=%d\n", psta->mac_id, psta->hwseq); */ } } _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); - + /* restore each HW sequence of mac id to report fifo */ for (index = 0; index < macid_ctl->num && index < NUM_STA; index++) { if (rtw_macid_is_used(macid_ctl, index)) { @@ -5529,18 +5379,18 @@ static void rtw_restore_all_sta_hwseq(_adapter *padapter) /* RTW_INFO("mac_id:%d is used, hw_seq[index]=%d\n", index, hw_seq[index]); */ } } - + } void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) { - PHAL_DATA_TYPE pHalData; + PHAL_DATA_TYPE pHalData; PDM_ODM_T podmpriv; u8 val8; u16 val16; u32 val32; - pHalData = GET_HAL_DATA(padapter); + pHalData = GET_HAL_DATA(padapter); podmpriv = &pHalData->odmpriv; switch (variable) @@ -5627,7 +5477,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) tsf = pmlmeext->TSFValue - rtw_modular64(pmlmeext->TSFValue, (pmlmeinfo->bcn_interval*1024)) -1024; //us if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) - { + { //pHalData->RegTxPause |= STOP_BCNQ;BIT(6) //rtw_write8(padapter, REG_TXPAUSE, (rtw_read8(padapter, REG_TXPAUSE)|BIT(6))); StopTxBeacon(padapter); @@ -5642,8 +5492,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) //enable related TSF function rtw_write8(padapter, REG_BCN_CTRL, rtw_read8(padapter, REG_BCN_CTRL)|BIT(3)); - - + if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) { //pHalData->RegTxPause &= (~STOP_BCNQ); @@ -5705,7 +5554,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) u8 RetryLimit = 0x30; u8 type = *(u8*)pval; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; - + if (type == 0) // prepare to join { //enable to rx data frame.Accept all data frame @@ -5751,7 +5600,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) #endif // !CONFIG_CONCURRENT_MODE #ifdef CONFIG_BT_COEXIST - if (_TRUE == pHalData->EEPROMBluetoothCoexist) + if (_TRUE == pHalData->EEPROMBluetoothCoexist) { switch (*pval) { @@ -5767,7 +5616,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) // sta add event callback // rtw_btcoex_MediaStatusNotify(padapter, RT_MEDIA_CONNECT); break; - } + } } #endif break; @@ -5848,9 +5697,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) { ulContent |= (ucIndex & 0x03) | ((u16)(ulEncAlgo)<<2); //ulContent |= CAM_VALID; - } - else - { + } else { ulContent = 0; } // polling bit, and No Write enable, and address @@ -6010,7 +5857,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) case HW_VAR_FIFO_CLEARN_UP: { struct pwrctrl_priv *pwrpriv; - u8 trycnt = 100; + u8 trycnt = 100; pwrpriv = adapter_to_pwrctl(padapter); @@ -6044,7 +5891,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) } } break; - + case HW_VAR_RESTORE_HW_SEQ: rtw_restore_all_sta_hwseq(padapter); break; @@ -6195,7 +6042,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) rtw_write8(padapter, REG_SIFS_CTX+1, SIFS_Timer); // SIFS for OFDM consecutive tx like CTS data! rtw_write8(padapter, REG_SIFS_TRX+1, SIFS_Timer); - + rtw_write8(padapter,REG_SPEC_SIFS+1, SIFS_Timer); rtw_write8(padapter,REG_MAC_SPEC_SIFS+1, SIFS_Timer); @@ -6211,11 +6058,11 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) R2T_SIFS = 0xa; #ifdef CONFIG_80211AC_VHT if (wireless_mode & WIRELESS_11_5AC && - //MgntLinkStatusQuery(Adapter) && - TEST_FLAG(pmlmepriv->vhtpriv.ldpc_cap, LDPC_VHT_ENABLE_RX) && + //MgntLinkStatusQuery(Adapter) && + TEST_FLAG(pmlmepriv->vhtpriv.ldpc_cap, LDPC_VHT_ENABLE_RX) && TEST_FLAG(pmlmepriv->vhtpriv.stbc_cap, STBC_VHT_ENABLE_RX)) - { - if (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_ATHEROS) + { + if (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_ATHEROS) R2T_SIFS = 0x8; else R2T_SIFS = 0xa; @@ -6245,46 +6092,46 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) case HW_VAR_HW_REG_TIMER_INIT: { HAL_HW_TIMER_TYPE TimerType = (*(PHAL_HW_TIMER_TYPE)pval)>>16; - + rtw_write8(padapter, 0x164, 1); if (TimerType == HAL_TIMER_TXBF) rtw_write32(padapter, 0x15C, (*(pu2Byte)pval)); else if (TimerType == HAL_TIMER_EARLYMODE) - rtw_write32(padapter, 0x160, 0x05000190); + rtw_write32(padapter, 0x160, 0x05000190); break; - } + } case HW_VAR_HW_REG_TIMER_START: { HAL_HW_TIMER_TYPE TimerType = *(PHAL_HW_TIMER_TYPE)pval; - + if (TimerType == HAL_TIMER_TXBF) rtw_write8(padapter, 0x15F, 0x5); else if (TimerType == HAL_TIMER_EARLYMODE) - rtw_write8(padapter, 0x163, 0x5); - break; - } + rtw_write8(padapter, 0x163, 0x5); + break; + } case HW_VAR_HW_REG_TIMER_RESTART: { HAL_HW_TIMER_TYPE TimerType = *(PHAL_HW_TIMER_TYPE)pval; - + if (TimerType == HAL_TIMER_TXBF) { rtw_write8(padapter, 0x15F, 0x0); rtw_write8(padapter, 0x15F, 0x5); } else if (TimerType == HAL_TIMER_EARLYMODE) { rtw_write8(padapter, 0x163, 0x0); - rtw_write8(padapter, 0x163, 0x5); + rtw_write8(padapter, 0x163, 0x5); } break; - } + } case HW_VAR_HW_REG_TIMER_STOP: { HAL_HW_TIMER_TYPE TimerType = *(PHAL_HW_TIMER_TYPE)pval; - + if (TimerType == HAL_TIMER_TXBF) rtw_write8(padapter, 0x15F, 0); else if (TimerType == HAL_TIMER_EARLYMODE) - rtw_write8(padapter, 0x163, 0x0); + rtw_write8(padapter, 0x163, 0x0); break; } #endif/*#if (BEAMFORMING_SUPPORT == 1) - for PHYDM TxBF*/ @@ -6505,7 +6352,7 @@ void GetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) else *pval = _TRUE; } - + break; #ifdef CONFIG_ANTENNA_DIVERSITY @@ -6515,7 +6362,7 @@ void GetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) #endif //CONFIG_ANTENNA_DIVERSITY case HW_VAR_EFUSE_BYTES: // To get EFUE total used bytes, added by Roger, 2008.12.22. - *(u16*)pval = pHalData->EfuseUsedBytes; + *(u16*)pval = pHalData->EfuseUsedBytes; break; case HW_VAR_APFM_ON_MAC: @@ -6557,7 +6404,7 @@ u8 SetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) pHalData->EfuseUsedBytes = *((u16*)pval); break; case HAL_DEF_EFUSE_USAGE: - pHalData->EfuseUsedPercentage = *((u8*)pval); + pHalData->EfuseUsedPercentage = *((u8*)pval); break; default: bResult = SetHalDefVar(padapter, variable, pval); @@ -6568,7 +6415,7 @@ u8 SetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) } /* - * Description: + * Description: * Query setting of specified variable. */ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) @@ -6576,13 +6423,12 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) PHAL_DATA_TYPE pHalData; u8 bResult; - pHalData = GET_HAL_DATA(padapter); bResult = _SUCCESS; switch (variable) { - + #ifdef CONFIG_ANTENNA_DIVERSITY case HAL_DEF_IS_SUPPORT_ANT_DIV: @@ -6640,7 +6486,7 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) *((PBOOLEAN)pval) = _TRUE; else *((PBOOLEAN)pval) = _FALSE; - break; + break; case HAL_DEF_EXPLICIT_BEAMFORMEE: *((PBOOLEAN)pval) = _TRUE; break; @@ -6652,8 +6498,8 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) u32 cmd ; u32 ra_info1, ra_info2; u32 rate_mask1, rate_mask2; - u8 curr_tx_rate,curr_tx_sgi,hight_rate,lowest_rate; - + u8 curr_tx_rate,curr_tx_sgi,hight_rate,lowest_rate; + RTW_INFO("============ RA status check Mac_id:%d ===================\n", mac_id); cmd = 0x40000100 |mac_id; @@ -6663,7 +6509,7 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) curr_tx_rate = ra_info1&0x7F; curr_tx_sgi = (ra_info1>>7)&0x01; RTW_INFO("[ ra_info1:0x%08x ] =>cur_tx_rate= %s,cur_sgi:%d, PWRSTS = 0x%02x \n", - ra_info1, + ra_info1, HDATA_RATE(curr_tx_rate), curr_tx_sgi, (ra_info1>>8) & 0x07); @@ -6676,21 +6522,21 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) rate_mask1 = rtw_read32(padapter,REG_RSVD7_8812); rate_mask2 = rtw_read32(padapter,REG_RSVD8_8812); hight_rate = ra_info2&0xFF; - lowest_rate = (ra_info2>>8) & 0xFF; + lowest_rate = (ra_info2>>8) & 0xFF; RTW_INFO("[ ra_info1:0x%08x ] =>RSSI=%d, BW_setting=0x%02x, DISRA=0x%02x, VHT_EN=0x%02x\n", ra_info1, ra_info1&0xFF, (ra_info1>>8) & 0xFF, (ra_info1>>16) & 0xFF, (ra_info1>>24) & 0xFF); - + RTW_INFO("[ ra_info2:0x%08x ] =>hight_rate=%s, lowest_rate=%s, SGI=0x%02x, RateID=%d\n", ra_info2, HDATA_RATE(hight_rate), HDATA_RATE(lowest_rate), (ra_info2>>16) & 0xFF, (ra_info2>>24) & 0xFF); - RTW_INFO("rate_mask2=0x%08x, rate_mask1=0x%08x\n", rate_mask2, rate_mask1); + RTW_INFO("rate_mask2=0x%08x, rate_mask1=0x%08x\n", rate_mask2, rate_mask1); } #else //0 RTW_INFO("%s,%d, 8814 need to fix \n", __FUNCTION__,__LINE__); @@ -6705,9 +6551,7 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) if (!padapter->registrypriv.wifi_spec) { *(u16*)pval = TX_PAGE_BOUNDARY_8814A; - } - else - { + } else { *(u16*)pval = WMM_NORMAL_TX_PAGE_BOUNDARY_8814A; } break; @@ -6723,7 +6567,7 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) *((u16*)(pval)) = pHalData->EfuseUsedBytes; break; case HAL_DEF_EFUSE_USAGE: - *((u32*)(pval)) = (pHalData->EfuseUsedPercentage<<16)|(pHalData->EfuseUsedBytes); + *((u32*)(pval)) = (pHalData->EfuseUsedPercentage<<16)|(pHalData->EfuseUsedBytes); break; case HAL_DEF_RX_DMA_SZ_WOW: *((u32 *)pval) = RX_DMA_BOUNDARY_8814A + 1; @@ -6748,7 +6592,7 @@ s32 c2h_id_filter_ccx_8814a(u8 *buf) s32 ret = _FALSE; if (c2h_evt->id == C2H_CCX_TX_RPT) ret = _TRUE; - + return ret; } @@ -6793,7 +6637,7 @@ void rtl8812a_combo_card_WifiOnlyHwInit(PADAPTER pdapter) // coex parameters //pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x778, 0x3); rtw_write8(pdapter,0x778,0x3); - + // enable counter statistics //pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0xc); rtw_write8(pdapter,0x76e,0xc); @@ -6819,7 +6663,7 @@ void rtl8812a_combo_card_WifiOnlyHwInit(PADAPTER pdapter) rtw_write8(pdapter,0x7, u1Tmp); } - + } #endif //CONFIG_BT_COEXIST @@ -6858,7 +6702,6 @@ void rtl8814_set_hal_ops(struct hal_ops *pHalFunc) pHalFunc->read_rfreg = &PHY_QueryRFReg8814A; pHalFunc->write_rfreg = &PHY_SetRFReg8814A; - // Efuse related function pHalFunc->EfusePowerSwitch = &rtl8814_EfusePowerSwitch; pHalFunc->ReadEFuse = &rtl8814_ReadEFuse; @@ -6893,5 +6736,3 @@ void rtl8814_set_hal_ops(struct hal_ops *pHalFunc) pHalFunc->fw_dl = &FirmwareDownload8814A; pHalFunc->hal_get_tx_buff_rsvd_page_num = &GetTxBufferRsvdPageNum8814; } - - From d5aa37ed12d05d42bc38b37dc7ba1e7bf7c48dd0 Mon Sep 17 00:00:00 2001 From: Christian B Date: Sat, 16 Dec 2017 14:19:00 +0100 Subject: [PATCH 153/234] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 456776fa5..bfcc4281b 100644 --- a/README.md +++ b/README.md @@ -69,8 +69,8 @@ or ``` sudo iw wlan0 set txpower fixed 3000 ``` -Newer versions of NetworkManager switches to random MAC address -Some users would prefer to use a fixed address. Simply add these lines below +Newer versions of NetworkManager switches to random MAC address. Some users would prefer to use a fixed address. +Simply add these lines below ``` [device] wifi.scan-rand-mac-address=no From 645274ec5670f60449132a9453bdef72e3795a3a Mon Sep 17 00:00:00 2001 From: Christian B Date: Sat, 16 Dec 2017 14:20:10 +0100 Subject: [PATCH 154/234] Update dkms.conf * Tag a new release date --- dkms.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dkms.conf b/dkms.conf index acadace01..b220ea125 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.1.5~20171206" +PACKAGE_VERSION="5.1.5~20171216" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" From 5f246dabef77ca80caf992ebb9f6e55297f5b64b Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 17 Dec 2017 11:21:20 +0100 Subject: [PATCH 155/234] Update rtw_mlme.c * Removed kernel v4.15 support. It introduced several bugs, so it needs more work. --- core/rtw_mlme.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/core/rtw_mlme.c b/core/rtw_mlme.c index 59547909e..4cb54dba8 100644 --- a/core/rtw_mlme.c +++ b/core/rtw_mlme.c @@ -1228,11 +1228,7 @@ void rtw_surveydone_event_callback(_adapter *adapter, u8 *pbuf) _enter_critical_bh(&pmlmepriv->lock, &irqL); #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - _set_timer(&adapter->recvpriv.signal_stat_timer, adapter->recvpriv.signal_stat_sampling_interval); -#else rtw_set_signal_stat_timer(&adapter->recvpriv); -#endif #endif if (pmlmepriv->to_join == _TRUE) { @@ -1829,11 +1825,7 @@ static void rtw_joinbss_update_network(_adapter *padapter, struct wlan_network * #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - _set_timer(&padapter->recvpriv.signal_stat_timer, padapter->recvpriv.signal_stat_sampling_interval); -#else rtw_set_signal_stat_timer(&padapter->recvpriv); -#endif #endif padapter->recvpriv.signal_strength = ptarget_wlan->network.PhyInfo.SignalStrength; padapter->recvpriv.signal_qual = ptarget_wlan->network.PhyInfo.SignalQuality; @@ -1849,11 +1841,7 @@ static void rtw_joinbss_update_network(_adapter *padapter, struct wlan_network * ); #endif #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - _set_timer(&padapter->recvpriv.signal_stat_timer, padapter->recvpriv.signal_stat_sampling_interval); -#else rtw_set_signal_stat_timer(&padapter->recvpriv); -#endif #endif /* update fw_state */ /* will clr _FW_UNDER_LINKING here indirectly */ From e0d013558162b9fc3393740e809950d9a64ffcea Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 17 Dec 2017 11:47:40 +0100 Subject: [PATCH 156/234] Update rtw_p2p.c --- core/rtw_p2p.c | 72 +++----------------------------------------------- 1 file changed, 3 insertions(+), 69 deletions(-) diff --git a/core/rtw_p2p.c b/core/rtw_p2p.c index 7b6bd4f9b..a5d6d97a3 100644 --- a/core/rtw_p2p.c +++ b/core/rtw_p2p.c @@ -3269,17 +3269,9 @@ static void ro_ch_handler(_adapter *padapter) } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -static void ro_ch_timer_process(struct timer_list *t) -#else static void ro_ch_timer_process(void *FunctionContext) -#endif { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - _adapter *adapter = from_timer(adapter, t, cfg80211_wdinfo.remain_on_ch_timer); -#else _adapter *adapter = (_adapter *)FunctionContext; -#endif struct rtw_wdev_priv *pwdev_priv = adapter_wdev_data(adapter); /* printk("%s\n", __FUNCTION__); */ @@ -4074,11 +4066,7 @@ void rtw_init_cfg80211_wifidirect_info(_adapter *padapter) _rtw_memset(pcfg80211_wdinfo, 0x00, sizeof(struct cfg80211_wifidirect_info)); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - timer_setup(&pcfg80211_wdinfo->remain_on_ch_timer, ro_ch_timer_process, 0); -#else _init_timer(&pcfg80211_wdinfo->remain_on_ch_timer, padapter->pnetdev, ro_ch_timer_process, padapter); -#endif } #endif /* CONFIG_IOCTL_CFG80211 */ @@ -4381,17 +4369,9 @@ u8 p2p_ps_wk_cmd(_adapter *padapter, u8 p2p_ps_state, u8 enqueue) } #endif /* CONFIG_P2P_PS */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -static void reset_ch_sitesurvey_timer_process(struct timer_list *t) -#else static void reset_ch_sitesurvey_timer_process(void *FunctionContext) -#endif { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - _adapter *adapter = from_timer(adapter, t, wdinfo.reset_ch_sitesurvey); -#else _adapter *adapter = (_adapter *)FunctionContext; -#endif struct wifidirect_info *pwdinfo = &adapter->wdinfo; if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) @@ -4408,17 +4388,9 @@ static void reset_ch_sitesurvey_timer_process(void *FunctionContext) pwdinfo->rx_invitereq_info.scan_op_ch_only = 0; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -static void reset_ch_sitesurvey_timer_process2(struct timer_list *t) -#else static void reset_ch_sitesurvey_timer_process2(void *FunctionContext) -#endif { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - _adapter *adapter = from_timer(adapter, t, wdinfo.reset_ch_sitesurvey2); -#else _adapter *adapter = (_adapter *)FunctionContext; -#endif struct wifidirect_info *pwdinfo = &adapter->wdinfo; if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) @@ -4435,17 +4407,9 @@ static void reset_ch_sitesurvey_timer_process2(void *FunctionContext) pwdinfo->p2p_info.scan_op_ch_only = 0; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -static void restore_p2p_state_timer_process (struct timer_list *t) -#else static void restore_p2p_state_timer_process(void *FunctionContext) -#endif { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - _adapter *adapter = from_timer(adapter, t, wdinfo.restore_p2p_state_timer); -#else _adapter *adapter = (_adapter *)FunctionContext; -#endif struct wifidirect_info *pwdinfo = &adapter->wdinfo; if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) @@ -4454,17 +4418,9 @@ static void restore_p2p_state_timer_process(void *FunctionContext) p2p_protocol_wk_cmd(adapter, P2P_RESTORE_STATE_WK); } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -static void pre_tx_scan_timer_process (struct timer_list *t) -#else static void pre_tx_scan_timer_process(void *FunctionContext) -#endif { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - _adapter *adapter = from_timer(adapter, t, wdinfo.pre_tx_scan_timer); -#else - _adapter *adapter = (_adapter *) FunctionContext; -#endif + _adapter *adapter = (_adapter *) FunctionContext; struct wifidirect_info *pwdinfo = &adapter->wdinfo; _irqL irqL; struct mlme_priv *pmlmepriv = &adapter->mlmepriv; @@ -4493,17 +4449,9 @@ static void pre_tx_scan_timer_process(void *FunctionContext) _exit_critical_bh(&pmlmepriv->lock, &irqL); } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -static void find_phase_timer_process(struct timer_list *t) -#else static void find_phase_timer_process(void *FunctionContext) -#endif { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - _adapter *adapter = from_timer(adapter, t, wdinfo.find_phase_timer); -#else _adapter *adapter = (_adapter *)FunctionContext; -#endif struct wifidirect_info *pwdinfo = &adapter->wdinfo; if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) @@ -4760,16 +4708,6 @@ void rtw_init_wifidirect_timers(_adapter *padapter) { struct wifidirect_info *pwdinfo = &padapter->wdinfo; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - timer_setup(&pwdinfo->find_phase_timer, find_phase_timer_process, 0); - timer_setup(&pwdinfo->restore_p2p_state_timer, restore_p2p_state_timer_process, 0); - timer_setup(&pwdinfo->pre_tx_scan_timer, pre_tx_scan_timer_process, 0); - timer_setup(&pwdinfo->reset_ch_sitesurvey, reset_ch_sitesurvey_timer_process, 0); - timer_setup(&pwdinfo->reset_ch_sitesurvey2, reset_ch_sitesurvey_timer_process2, 0); -#ifdef CONFIG_CONCURRENT_MODE - timer_setup(&pwdinfo->ap_p2p_switch_timer, ap_p2p_switch_timer_process, 0); -#endif -#else _init_timer(&pwdinfo->find_phase_timer, padapter->pnetdev, find_phase_timer_process, padapter); _init_timer(&pwdinfo->restore_p2p_state_timer, padapter->pnetdev, restore_p2p_state_timer_process, padapter); _init_timer(&pwdinfo->pre_tx_scan_timer, padapter->pnetdev, pre_tx_scan_timer_process, padapter); @@ -4778,7 +4716,6 @@ void rtw_init_wifidirect_timers(_adapter *padapter) #ifdef CONFIG_CONCURRENT_MODE _init_timer(&pwdinfo->ap_p2p_switch_timer, padapter->pnetdev, ap_p2p_switch_timer_process, padapter); #endif -#endif } void rtw_init_wifidirect_addrs(_adapter *padapter, u8 *dev_addr, u8 *iface_addr) @@ -5141,13 +5078,10 @@ int rtw_p2p_enable(_adapter *padapter, enum P2P_ROLE role) _cancel_timer_ex(&pwdinfo->pre_tx_scan_timer); _cancel_timer_ex(&pwdinfo->reset_ch_sitesurvey); _cancel_timer_ex(&pwdinfo->reset_ch_sitesurvey2); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - reset_ch_sitesurvey_timer_process(&pwdinfo->reset_ch_sitesurvey); - reset_ch_sitesurvey_timer_process2(&pwdinfo->reset_ch_sitesurvey2); -#else + reset_ch_sitesurvey_timer_process(padapter); reset_ch_sitesurvey_timer_process2(padapter); -#endif + #ifdef CONFIG_CONCURRENT_MODE _cancel_timer_ex(&pwdinfo->ap_p2p_switch_timer); #endif From f1ef700e29b9db8557d3d7cc5eb8092d6a10d5d8 Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 17 Dec 2017 11:49:39 +0100 Subject: [PATCH 157/234] Update rtw_pwrctrl.c --- core/rtw_pwrctrl.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/core/rtw_pwrctrl.c b/core/rtw_pwrctrl.c index f61a5b33d..d8b45f450 100644 --- a/core/rtw_pwrctrl.c +++ b/core/rtw_pwrctrl.c @@ -393,17 +393,10 @@ void rtw_ps_processor(_adapter *padapter) return; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -void pwr_state_check_handler(struct timer_list *t) -#else +void pwr_state_check_handler(RTW_TIMER_HDL_ARGS); void pwr_state_check_handler(RTW_TIMER_HDL_ARGS) -#endif { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - _adapter *padapter = from_timer(padapter, t, pwrctrlpriv.pwr_state_check_timer); -#else _adapter *padapter = (_adapter *)FunctionContext; -#endif rtw_ps_cmd(padapter); } @@ -1975,11 +1968,7 @@ void rtw_init_pwrctrl_priv(PADAPTER padapter) #endif /* CONFIG_LPS_RPWM_TIMER */ #endif /* CONFIG_LPS_LCLK */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - timer_setup(&pwrctrlpriv->pwr_state_check_timer, pwr_state_check_handler, 0); -#else rtw_init_timer(&pwrctrlpriv->pwr_state_check_timer, padapter, pwr_state_check_handler); -#endif pwrctrlpriv->wowlan_mode = _FALSE; pwrctrlpriv->wowlan_ap_mode = _FALSE; From dd6d41d60bf3b3105eeb145bb564c375aed0ccf4 Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 17 Dec 2017 11:51:14 +0100 Subject: [PATCH 158/234] Update rtw_tdls.c --- core/rtw_tdls.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/core/rtw_tdls.c b/core/rtw_tdls.c index 1e4c8d15d..be31530da 100644 --- a/core/rtw_tdls.c +++ b/core/rtw_tdls.c @@ -3141,17 +3141,9 @@ void rtw_build_tunneled_probe_rsp_ies(_adapter *padapter, struct xmit_frame *pxm } #endif /* CONFIG_WFD */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -void _tdls_tpk_timer_hdl(struct timer_list *t) -#else void _tdls_tpk_timer_hdl(void *FunctionContext) -#endif { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - struct sta_info *ptdls_sta = from_timer(ptdls_sta, t, sta.TPK_timer); -#else struct sta_info *ptdls_sta = (struct sta_info *)FunctionContext; -#endif struct tdls_txmgmt txmgmt; _rtw_memset(&txmgmt, 0x00, sizeof(struct tdls_txmgmt)); @@ -3254,11 +3246,7 @@ void _tdls_pti_timer_hdl(void *FunctionContext) void rtw_init_tdls_timer(_adapter *padapter, struct sta_info *psta) { psta->padapter = padapter; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - timer_setup(&psta->TPK_timer, _TPK_timer_hdl, 0); -#else _init_timer(&psta->TPK_timer, padapter->pnetdev, _tdls_tpk_timer_hdl, psta); -#endif #ifdef CONFIG_TDLS_CH_SW _init_timer(&psta->ch_sw_timer, padapter->pnetdev, _tdls_ch_switch_timer_hdl, psta); _init_timer(&psta->delay_timer, padapter->pnetdev, _tdls_delay_timer_hdl, psta); From d91f4be99d2deac55e0fbde190655e55e80ab44d Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 17 Dec 2017 11:53:07 +0100 Subject: [PATCH 159/234] Update hal_usb_led.c --- hal/led/hal_usb_led.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/hal/led/hal_usb_led.c b/hal/led/hal_usb_led.c index ae0535caf..117bc93e0 100644 --- a/hal/led/hal_usb_led.c +++ b/hal/led/hal_usb_led.c @@ -1815,17 +1815,9 @@ void BlinkHandler(PLED_USB pLed) * Callback function of LED BlinkTimer, * it just schedules to corresponding BlinkWorkItem/led_blink_hdl * */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -void BlinkTimerCallback(struct timer_list *t) -#else void BlinkTimerCallback(void *data) -#endif { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - PLED_USB pLed = from_timer(pLed, t, BlinkTimer); -#else PLED_USB pLed = (PLED_USB)data; -#endif _adapter *padapter = pLed->padapter; /* RTW_INFO("%s\n", __FUNCTION__); */ @@ -4237,11 +4229,7 @@ InitLed( pLed->LedPin = LedPin; ResetLedStatus(pLed); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - timer_setup(&pLed->BlinkTimer, BlinkTimerCallback, 0); -#else - _init_timer(&pLed->BlinkTimer, padapter->pnetdev, BlinkTimerCallback, pLed); -#endif + _init_timer(&(pLed->BlinkTimer), padapter->pnetdev, BlinkTimerCallback, pLed); _init_workitem(&(pLed->BlinkWorkItem), BlinkWorkItemCallback, pLed); } From 43c6c987b0dd39a1aaa98d26d546a1d89a4ba902 Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 17 Dec 2017 11:54:43 +0100 Subject: [PATCH 160/234] Update recv_linux.c --- os_dep/linux/recv_linux.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/os_dep/linux/recv_linux.c b/os_dep/linux/recv_linux.c index fa84bcb50..52fbba5df 100644 --- a/os_dep/linux/recv_linux.c +++ b/os_dep/linux/recv_linux.c @@ -784,17 +784,10 @@ void rtw_os_read_port(_adapter *padapter, struct recv_buf *precvbuf) } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -void _rtw_reordering_ctrl_timeout_handler(struct timer_list *t) -#else +void _rtw_reordering_ctrl_timeout_handler(void *FunctionContext); void _rtw_reordering_ctrl_timeout_handler(void *FunctionContext) -#endif { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - struct recv_reorder_ctrl *preorder_ctrl = from_timer(preorder_ctrl, t, reordering_ctrl_timer); -#else struct recv_reorder_ctrl *preorder_ctrl = (struct recv_reorder_ctrl *)FunctionContext; -#endif rtw_reordering_ctrl_timeout_handler(preorder_ctrl); } @@ -802,9 +795,5 @@ void rtw_init_recv_timer(struct recv_reorder_ctrl *preorder_ctrl) { _adapter *padapter = preorder_ctrl->padapter; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - timer_setup(&preorder_ctrl->reordering_ctrl_timer, _rtw_reordering_ctrl_timeout_handler, 0); -#else _init_timer(&(preorder_ctrl->reordering_ctrl_timer), padapter->pnetdev, _rtw_reordering_ctrl_timeout_handler, preorder_ctrl); -#endif } From c39d6bcf0a75aef6a0a6604b77f40c619a23139c Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 17 Dec 2017 11:56:50 +0100 Subject: [PATCH 161/234] Update osdep_service.c --- os_dep/osdep_service.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/os_dep/osdep_service.c b/os_dep/osdep_service.c index 6fa4e828b..88a3ff546 100644 --- a/os_dep/osdep_service.c +++ b/os_dep/osdep_service.c @@ -996,15 +996,21 @@ void rtw_list_insert_tail(_list *plist, _list *phead) } -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) void rtw_init_timer(_timer *ptimer, void *padapter, void *pfunc) { _adapter *adapter = (_adapter *)padapter; +#ifdef PLATFORM_LINUX _init_timer(ptimer, adapter->pnetdev, pfunc, adapter); +#endif +#ifdef PLATFORM_FREEBSD + _init_timer(ptimer, adapter->pifp, pfunc, adapter->mlmepriv.nic_hdl); +#endif +#ifdef PLATFORM_WINDOWS + _init_timer(ptimer, adapter->hndis_adapter, pfunc, adapter->mlmepriv.nic_hdl); +#endif } -#endif /* From e4f96b01153bf4af8457357f90f435b3799e89a8 Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 17 Dec 2017 11:58:34 +0100 Subject: [PATCH 162/234] Update os_intfs.c --- os_dep/linux/os_intfs.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c index 6d34c0ea3..09c54e5fa 100644 --- a/os_dep/linux/os_intfs.c +++ b/os_dep/linux/os_intfs.c @@ -1826,11 +1826,7 @@ u8 rtw_reset_drv_sw(_adapter *padapter) mlmeext_set_scan_state(&padapter->mlmeextpriv, SCAN_DISABLE); #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - _set_timer(&padapter->recvpriv.signal_stat_timer, padapter->recvpriv.signal_stat_sampling_interval); -#else rtw_set_signal_stat_timer(&padapter->recvpriv); -#endif #endif return ret8; From 87aec9ad1c269443efec497bec292c0ff2d6d280 Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 17 Dec 2017 12:01:00 +0100 Subject: [PATCH 163/234] Update rtw_recv.h --- include/rtw_recv.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/rtw_recv.h b/include/rtw_recv.h index f6dcd82a4..475aca738 100644 --- a/include/rtw_recv.h +++ b/include/rtw_recv.h @@ -482,9 +482,7 @@ struct recv_priv { }; #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) #define rtw_set_signal_stat_timer(recvpriv) _set_timer(&(recvpriv)->signal_stat_timer, (recvpriv)->signal_stat_sampling_interval) -#endif #endif /* CONFIG_NEW_SIGNAL_STAT_PROCESS */ struct sta_recv_priv { From ee85b4850eba69528d478dcfffbde97c841725f7 Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 17 Dec 2017 12:02:26 +0100 Subject: [PATCH 164/234] Update osdep_service_linux.h --- include/osdep_service_linux.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/osdep_service_linux.h b/include/osdep_service_linux.h index 342c2aab6..b2410f298 100644 --- a/include/osdep_service_linux.h +++ b/include/osdep_service_linux.h @@ -269,14 +269,13 @@ __inline static void rtw_list_delete(_list *plist) } #define RTW_TIMER_HDL_ARGS void *FunctionContext -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) __inline static void _init_timer(_timer *ptimer, _nic_hdl nic_hdl, void *pfunc, void *cntx) { + /* setup_timer(ptimer, pfunc,(u32)cntx); */ ptimer->function = pfunc; ptimer->data = (unsigned long)cntx; init_timer(ptimer); } -#endif __inline static void _set_timer(_timer *ptimer, u32 delay_time) { From 623eb9d850cc52442c4ab82dac8f4d4eaa80b4e9 Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 17 Dec 2017 12:09:20 +0100 Subject: [PATCH 165/234] Update rtw_recv.c --- core/rtw_recv.c | 41 ++++++++++------------------------------- 1 file changed, 10 insertions(+), 31 deletions(-) diff --git a/core/rtw_recv.c b/core/rtw_recv.c index ff37aa09d..59707a1dd 100755 --- a/core/rtw_recv.c +++ b/core/rtw_recv.c @@ -29,11 +29,7 @@ #endif #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -void rtw_signal_stat_timer_hdl(struct timer_list *t); -#else void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS); -#endif enum { SIGNAL_STAT_CALC_PROFILE_0 = 0, @@ -137,20 +133,12 @@ sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter) res = rtw_hal_init_recv_priv(padapter); #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - timer_setup(&precvpriv->signal_stat_timer, rtw_signal_stat_timer_hdl, 0); -#else rtw_init_timer(&precvpriv->signal_stat_timer, padapter, RTW_TIMER_HDL_NAME(signal_stat)); -#endif precvpriv->signal_stat_sampling_interval = 2000; /* ms */ /* precvpriv->signal_stat_converging_constant = 5000; */ /* ms */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - _set_timer(&precvpriv->signal_stat_timer, precvpriv->signal_stat_sampling_interval); -#else rtw_set_signal_stat_timer(precvpriv); -#endif #endif /* CONFIG_NEW_SIGNAL_STAT_PROCESS */ exit: @@ -4188,18 +4176,11 @@ s32 rtw_recv_entry(union recv_frame *precvframe) return ret; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -void rtw_signal_stat_timer_hdl(struct timer_list *t) -#else +#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS) -#endif { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - _adapter *padapter = from_timer(padapter, t, recvpriv.signal_stat_timer); -#else - _adapter *padapter = (_adapter *)FunctionContext; -#endif - struct recv_priv *recvpriv = &padapter->recvpriv; + _adapter *adapter = (_adapter *)FunctionContext; + struct recv_priv *recvpriv = &adapter->recvpriv; u32 tmp_s, tmp_q; u8 avg_signal_strength = 0; @@ -4208,10 +4189,10 @@ void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS) u32 num_signal_qual = 0; u8 ratio_pre_stat = 0, ratio_curr_stat = 0, ratio_total = 0, ratio_profile = SIGNAL_STAT_CALC_PROFILE_0; - if(padapter->recvpriv.is_signal_dbg) { + if (adapter->recvpriv.is_signal_dbg) { /* update the user specific value, signal_strength_dbg, to signal_strength, rssi */ - padapter->recvpriv.signal_strength = padapter->recvpriv.signal_strength_dbg; - padapter->recvpriv.rssi=(s8)translate_percentage_to_dbm((u8)padapter->recvpriv.signal_strength_dbg); + adapter->recvpriv.signal_strength = adapter->recvpriv.signal_strength_dbg; + adapter->recvpriv.rssi = (s8)translate_percentage_to_dbm((u8)adapter->recvpriv.signal_strength_dbg); } else { if (recvpriv->signal_strength_data.update_req == 0) { /* update_req is clear, means we got rx */ @@ -4235,8 +4216,8 @@ void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS) goto set_timer; } - if (check_fwstate(&padapter->mlmepriv, _FW_UNDER_SURVEY) == _TRUE - || check_fwstate(&padapter->mlmepriv, _FW_LINKED) == _FALSE + if (check_fwstate(&adapter->mlmepriv, _FW_UNDER_SURVEY) == _TRUE + || check_fwstate(&adapter->mlmepriv, _FW_LINKED) == _FALSE ) goto set_timer; @@ -4289,12 +4270,10 @@ void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS) } set_timer: -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) - _set_timer(&recvpriv->signal_stat_timer, recvpriv->signal_stat_sampling_interval); -#else rtw_set_signal_stat_timer(recvpriv); -#endif /* CONFIG_NEW_SIGNAL_STAT_PROCESS */ + } +#endif /* CONFIG_NEW_SIGNAL_STAT_PROCESS */ static void rx_process_rssi(_adapter *padapter, union recv_frame *prframe) { From e941a44db4fa1678fe69cef95152ba64a80620d3 Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 17 Dec 2017 12:10:27 +0100 Subject: [PATCH 166/234] Update rtw_mlme.h --- include/rtw_mlme.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/include/rtw_mlme.h b/include/rtw_mlme.h index 6205484dc..669d8f6c8 100644 --- a/include/rtw_mlme.h +++ b/include/rtw_mlme.h @@ -771,13 +771,8 @@ extern void rtw_wmm_event_callback(PADAPTER padapter, u8 *pbuf); void rtw_sta_timeout_event_callback(_adapter *adapter, u8 *pbuf); #endif /* CONFIG_IEEE80211W */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -void rtw_join_timeout_handler(struct timer_list *t); -void _rtw_scan_timeout_handler(struct timer_list *t); -#else extern void rtw_join_timeout_handler(RTW_TIMER_HDL_ARGS); extern void _rtw_scan_timeout_handler(RTW_TIMER_HDL_ARGS); -#endif thread_return event_thread(thread_context context); From 399388ed30ee269932a9412d018d0e95023d7d5b Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 17 Dec 2017 12:13:05 +0100 Subject: [PATCH 167/234] 80211W & ADAPTIVITY disabled due to kernel v4.15 * 802.11 security & adaptivity turned off due to preparation of kernel v4.15 support. will take a look at these on a later stage. --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 2802bf9da..ef959e7e4 100755 --- a/Makefile +++ b/Makefile @@ -62,10 +62,10 @@ CONFIG_TRAFFIC_PROTECT = y CONFIG_LOAD_PHY_PARA_FROM_FILE = y CONFIG_CALIBRATE_TX_POWER_BY_REGULATORY = n CONFIG_CALIBRATE_TX_POWER_TO_MAX = y -CONFIG_RTW_ADAPTIVITY_EN = auto +CONFIG_RTW_ADAPTIVITY_EN = disable CONFIG_RTW_ADAPTIVITY_MODE = normal CONFIG_SIGNAL_SCALE_MAPPING = n -CONFIG_80211W = y +CONFIG_80211W = n CONFIG_REDUCE_TX_CPU_LOADING = n CONFIG_BR_EXT = y CONFIG_TDLS = n From e24a462e569dcfad6edf6724c8fe23e9fa802c23 Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 17 Dec 2017 12:25:08 +0100 Subject: [PATCH 168/234] Update rtw_recv.c --- core/rtw_recv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/rtw_recv.c b/core/rtw_recv.c index 59707a1dd..8bd46aaa4 100755 --- a/core/rtw_recv.c +++ b/core/rtw_recv.c @@ -4210,8 +4210,8 @@ void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS) } if (num_signal_strength == 0) { - if (rtw_get_on_cur_ch_time(padapter) == 0 - || rtw_get_passing_time_ms(rtw_get_on_cur_ch_time(padapter)) < 2 * padapter->mlmeextpriv.mlmext_info.bcn_interval + if (rtw_get_on_cur_ch_time(adapter) == 0 + || rtw_get_passing_time_ms(rtw_get_on_cur_ch_time(adapter)) < 2 * adapter->mlmeextpriv.mlmext_info.bcn_interval ) goto set_timer; } From 72d78a19f5ecc7dad622422b8cff90dce34aaaee Mon Sep 17 00:00:00 2001 From: Christian B Date: Tue, 19 Dec 2017 19:46:30 +0100 Subject: [PATCH 169/234] Code cleanup --- hal/rtl8814a/rtl8814a_hal_init.c | 890 +++++++++++-------------------- 1 file changed, 322 insertions(+), 568 deletions(-) diff --git a/hal/rtl8814a/rtl8814a_hal_init.c b/hal/rtl8814a/rtl8814a_hal_init.c index 1135b1aeb..0d11da69f 100644 --- a/hal/rtl8814a/rtl8814a_hal_init.c +++ b/hal/rtl8814a/rtl8814a_hal_init.c @@ -84,13 +84,11 @@ s32 InitLLTTable8814A( tmp1byte = rtw_read8(Adapter, REG_AUTO_LLT_8814A); rtw_write8(Adapter, REG_AUTO_LLT_8814A, tmp1byte|BIT0); - while(tmp1byte & BIT0) - { + while (tmp1byte & BIT0) { tmp1byte = rtw_read8(Adapter, REG_AUTO_LLT_8814A); rtw_mdelay_os(100); testcnt++; - if(testcnt > 100) - { + if (testcnt > 100) { Status = _FAIL; break; } @@ -133,8 +131,7 @@ _FWDownloadEnable_8814A( u8 tmp; u16 u2Tmp = 0; - if(enable) - { + if (enable) { // MCU firmware download enable. u2Tmp = rtw_read16(Adapter, REG_8051FW_CTRL_8814A); u2Tmp &= 0x3000; @@ -192,31 +189,31 @@ _BlockWrite_8814A( } //3 Phase #2 - if(remainSize_p1){ + if (remainSize_p1) { offset = blockCount_p1 * blockSize_p1; blockCount_p2=remainSize_p1/blockSize_p2; remainSize_p2=remainSize_p1%blockSize_p2; - if(blockCount_p2) + if (blockCount_p2) RT_TRACE(COMP_INIT,DBG_LOUD,("_BlockWrite_8814A[P2] ::buffSize_p2( %d) blockSize_p2( %d) blockCount_p2( %d) remainSize_p2( %d)\n",(buffSize-offset), blockSize_p2 ,blockCount_p2, remainSize_p2)); #if (DEV_BUS_TYPE == RT_USB_INTERFACE) - for(i = 0 ; i < blockCount_p2 ; i++){ + for (i = 0 ; i < blockCount_p2 ; i++){ rtw_writeN(Adapter, (FW_START_ADDRESS + offset+i*blockSize_p2), blockSize_p2,(bufferPtr + offset+i*blockSize_p2)); } #endif } //3 Phase #3 - if(remainSize_p2) { + if (remainSize_p2) { offset=(blockCount_p1 * blockSize_p1)+(blockCount_p2*blockSize_p2); blockCount_p3 = remainSize_p2 /blockSize_p3; RT_TRACE(COMP_INIT,DBG_LOUD,("_BlockWrite_8814A[P3] ::buffSize_p3( %d) blockSize_p3( %d) blockCount_p3( %d) \n",(buffSize-offset),blockSize_p3, blockCount_p3)); - for(i = 0 ; i < blockCount_p3 ; i++) { + for (i = 0 ; i < blockCount_p3 ; i++) { rtw_write8(Adapter, (FW_START_ADDRESS + offset + i), *(bufferPtr +offset+ i)); } } @@ -249,8 +246,7 @@ _FillDummy_8814A( u8 remain = (u8)(FwLen%4); remain = (remain==0)?0:(4-remain); - while(remain>0) - { + while (remain>0) { pFwBuf[FwLen] = 0; FwLen++; remain--; @@ -282,12 +278,12 @@ _WriteFW_8814A( remainSize = size % MAX_PAGE_SIZE; - for(page = 0; page < pageNums; page++){ + for (page = 0; page < pageNums; page++) { offset = page *MAX_PAGE_SIZE; _PageWrite_8814A(Adapter,page, (bufferPtr+offset),MAX_PAGE_SIZE); rtw_udelay_os(2); } - if(remainSize){ + if (remainSize) { offset = pageNums *MAX_PAGE_SIZE; page = pageNums; _PageWrite_8814A(Adapter,page, (bufferPtr+offset),remainSize); @@ -335,12 +331,10 @@ IDDMADownLoadFW_3081( u1Byte tmp; //check if ddma ch0 is idle cnt=20; - while(rtw_read32(Adapter, REG_DDMA_CH0CTRL)&DDMA_CH_OWN) - { + while (rtw_read32(Adapter, REG_DDMA_CH0CTRL)&DDMA_CH_OWN) { rtw_udelay_os(1000); cnt--; - if(cnt==0) - { + if (cnt==0) { RTW_INFO("IDDMADownLoadFW_3081, line%d: CNT fail\n", __LINE__); return _FALSE; } @@ -348,7 +342,7 @@ IDDMADownLoadFW_3081( ch0ctrl |= length & DDMA_LEN_MASK; //check if chksum continuous - if(fs == _FALSE){ + if (fs == _FALSE) { ch0ctrl |= DDMA_CH_CHKSUM_CNT; } rtw_write32(Adapter,REG_DDMA_CH0SA, source); @@ -356,54 +350,40 @@ IDDMADownLoadFW_3081( rtw_write32(Adapter,REG_DDMA_CH0CTRL, ch0ctrl); cnt=20; - while(rtw_read32(Adapter, REG_DDMA_CH0CTRL)&DDMA_CH_OWN) - { + while (rtw_read32(Adapter, REG_DDMA_CH0CTRL)&DDMA_CH_OWN) { rtw_udelay_os(1000); cnt--; - if(cnt==0) - { + if (cnt==0) { RTW_INFO("IDDMADownLoadFW_3081, line%d: CNT fail\n", __LINE__); return _FALSE; } } //check checksum - if(ls == _TRUE) - { + if (ls == _TRUE) { tmp = rtw_read8(Adapter,REG_8051FW_CTRL_8814A); - if(0==(rtw_read32(Adapter,REG_DDMA_CH0CTRL)&DDMA_CHKSUM_FAIL)) - {//chksum ok + if (0==(rtw_read32(Adapter,REG_DDMA_CH0CTRL)&DDMA_CHKSUM_FAIL)) { //chksum ok RTW_INFO("Check sum OK\n"); //imem - if(dest < OCPBASE_DMEM_3081) - { + if (dest < OCPBASE_DMEM_3081) { tmp |= IMEM_DL_RDY; rtw_write8(Adapter,REG_8051FW_CTRL_8814A, tmp|IMEM_CHKSUM_OK); RTW_INFO("imem check sum tmp %d\n",tmp); - } - //dmem - else - { + } else { //dmem tmp |= DMEM_DL_RDY; rtw_write8(Adapter,REG_8051FW_CTRL_8814A, tmp|DMEM_CHKSUM_OK); RTW_INFO("dmem check sum tmp %d\n",tmp); } - } - else - {//chksum fail + } else {//chksum fail RTW_INFO("Check sum fail\n"); ch0ctrl=rtw_read32(Adapter,REG_DDMA_CH0CTRL); rtw_write32(Adapter, REG_DDMA_CH0CTRL,ch0ctrl|DDMA_RST_CHKSUM_STS); //imem - if(dest < OCPBASE_DMEM_3081) - { + if (dest < OCPBASE_DMEM_3081) { tmp &= (~IMEM_DL_RDY); rtw_write8(Adapter,REG_8051FW_CTRL_8814A, tmp&~IMEM_CHKSUM_OK); - } - //dmem - else - { + } else { //dmem tmp &= (~DMEM_DL_RDY); rtw_write8(Adapter,REG_8051FW_CTRL_8814A, tmp&~DMEM_CHKSUM_OK); } @@ -413,7 +393,6 @@ IDDMADownLoadFW_3081( return _TRUE; } - //add by ylb 20130814 for 3081 download FW static BOOLEAN @@ -429,8 +408,7 @@ WaitDownLoadRSVDPageOK_3081( //Polling Beacon Queue to send Beacon TxBcReg = rtw_read8(Adapter, REG_MGQ_TXBD_NUM_8814A+3); count=0; - while(( count <20) && (TxBcReg & BIT4)) - { + while (( count <20) && (TxBcReg & BIT4)) { count++; rtw_udelay_os(10); TxBcReg = rtw_read8(Adapter, REG_MGQ_TXBD_NUM_8814A+3); @@ -441,21 +419,17 @@ WaitDownLoadRSVDPageOK_3081( // check rsvd page download OK. BcnValidReg = rtw_read8(Adapter, REG_FIFOPAGE_CTRL_2_8814A+1); count=0; - while(!(BcnValidReg & BIT7) && count <20) - { + while (!(BcnValidReg & BIT7) && count <20) { count++; rtw_udelay_os(50); BcnValidReg = rtw_read8(Adapter, REG_FIFOPAGE_CTRL_2_8814A+1); } //Set 1 to Clear BIT7 by SW - if(BcnValidReg & BIT7) - { + if (BcnValidReg & BIT7) { rtw_write8(Adapter, REG_FIFOPAGE_CTRL_2_8814A+1, (BcnValidReg|BIT7)); bRetValue = _TRUE; - } - else - { + } else { RTW_INFO("WaitDownLoadRSVDPageOK_3081(): Download RSVD page failed!\n"); bRetValue = _FALSE; } @@ -463,7 +437,6 @@ WaitDownLoadRSVDPageOK_3081( return bRetValue; } - VOID SetDownLoadFwRsvdPagePkt_8814A( IN PADAPTER Adapter, @@ -550,8 +523,7 @@ HalROMDownloadFWRSVDPage8814A( tmpReg422 = rtw_read8(Adapter, REG_FWHW_TXQ_CTRL_8814A+2); rtw_write8(Adapter, REG_FWHW_TXQ_CTRL_8814A+2, tmpReg422&(~BIT6)); - if(tmpReg422&BIT6) - { + if (tmpReg422&BIT6) { RTW_INFO("HalROMDownloadFWRSVDPage8814A(): There is an Adapter is sending beacon.\n"); bSendBeacon = _TRUE; } @@ -574,8 +546,7 @@ HalROMDownloadFWRSVDPage8814A( dmem_pkt_size += (u32)FW_CHKSUM_DUMMY_SZ; iram_pkt_size += (u32)FW_CHKSUM_DUMMY_SZ; - if(dmem_pkt_size + iram_pkt_size + FWHeaderSize != Len) - { + if (dmem_pkt_size + iram_pkt_size + FWHeaderSize != Len) { RTW_INFO("ERROR: Fw Hdr size do not match the real fw size!!\n"); RTW_INFO("dmem_pkt_size = %d, iram_pkt_size = %d,FWHeaderSize = %d, Len = %d!!\n",dmem_pkt_size,iram_pkt_size,FWHeaderSize,Len); return; @@ -595,17 +566,14 @@ HalROMDownloadFWRSVDPage8814A( BeaconHeaderInTxPacketBuf = txpktbuf_bndy * PageSize; MEMOffsetInTxPacketBuf = OCPBASE_TXBUF_3081 + BeaconHeaderInTxPacketBuf + 40;//TX_INFO_SIZE_8814AE; //download DMEM - while(dmem_pkt_size > 0) - { - if(dmem_pkt_size > MaxRsvdPageBufSize) - { + while (dmem_pkt_size > 0) { + if (dmem_pkt_size > MaxRsvdPageBufSize) { filesize_ram_block = MaxRsvdPageBufSize; ls = _FALSE; last_block_size = dmem_pkt_size -MaxRsvdPageBufSize; - if(last_block_size < MaxRsvdPageBufSize) - { - if(((last_block_size + 40) & 0x3F) == 0) // Multiples of 64 + if (last_block_size < MaxRsvdPageBufSize) { + if (((last_block_size + 40) & 0x3F) == 0) // Multiples of 64 filesize_ram_block -=4; } } else { @@ -618,8 +586,7 @@ HalROMDownloadFWRSVDPage8814A( //RTW_INFO("%d packet offset %d dmem_pkt_size %d\n", __LINE__,pkt_offset, dmem_pkt_size); SetDownLoadFwRsvdPagePkt_8814A(Adapter, pbuffer+FWHeaderSize+pkt_offset, filesize_ram_block); bDownLoadRSVDPageOK = WaitDownLoadRSVDPageOK_3081(Adapter); - if(!bDownLoadRSVDPageOK) - { + if (!bDownLoadRSVDPageOK) { RTW_INFO("ERROR: DMEM bDownLoadRSVDPageOK is false!!\n"); return; } @@ -631,17 +598,14 @@ HalROMDownloadFWRSVDPage8814A( //download IRAM pkt_offset = 0; - while(iram_pkt_size > 0) - { - if(iram_pkt_size > MaxRsvdPageBufSize) - { + while (iram_pkt_size > 0) { + if (iram_pkt_size > MaxRsvdPageBufSize) { filesize_ram_block = MaxRsvdPageBufSize; ls = _FALSE; last_block_size = iram_pkt_size -MaxRsvdPageBufSize; - if(last_block_size < MaxRsvdPageBufSize) - { - if(((last_block_size + 40) & 0x3F) == 0) // Multiples of 64 + if (last_block_size < MaxRsvdPageBufSize) { + if (((last_block_size + 40) & 0x3F) == 0) // Multiples of 64 filesize_ram_block -=4; } } else { @@ -656,8 +620,7 @@ HalROMDownloadFWRSVDPage8814A( SetDownLoadFwRsvdPagePkt_8814A(Adapter, pbuffer+Len-iram_pkt_size, filesize_ram_block); bDownLoadRSVDPageOK = WaitDownLoadRSVDPageOK_3081(Adapter); - if(!bDownLoadRSVDPageOK) - { + if (!bDownLoadRSVDPageOK) { RTW_INFO("ERROR: IRAM bDownLoadRSVDPageOK is false!!\n"); return; } @@ -677,8 +640,7 @@ HalROMDownloadFWRSVDPage8814A( // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause // the beacon cannot be sent by HW. // 2010.06.23. Added by tynli. - if(bSendBeacon) - { + if (bSendBeacon) { rtw_write8(Adapter, REG_FWHW_TXQ_CTRL_8814A+2, tmpReg422); } @@ -691,10 +653,8 @@ HalROMDownloadFWRSVDPage8814A( } u1bTmp=rtw_read8(Adapter, REG_8051FW_CTRL_8814A); //add by gw for flags to show the fw download ok 20130826 - if( u1bTmp&DMEM_CHKSUM_OK) - { - if(u1bTmp&IMEM_CHKSUM_OK) - { + if ( u1bTmp&DMEM_CHKSUM_OK) { + if (u1bTmp&IMEM_CHKSUM_OK) { u1Byte tem; tem=rtw_read8(Adapter, REG_8051FW_CTRL_8814A+1); rtw_write8(Adapter, REG_8051FW_CTRL_8814A+1,(tem|BIT6)); @@ -756,27 +716,23 @@ FirmwareDownload8814A( RT_TRACE(_module_hal_init_c_, _drv_info_, ("+%s\n", __FUNCTION__)); pFirmware = (PRT_FIRMWARE_8814)rtw_zmalloc(sizeof(RT_FIRMWARE_8814)); - if(!pFirmware) - { + if (!pFirmware) { rtStatus = _FAIL; goto exit; } #ifdef CONFIG_FILE_FWIMG - if(rtw_is_file_readable(rtw_fw_file_path) == _TRUE) - { + if (rtw_is_file_readable(rtw_fw_file_path) == _TRUE) { RTW_INFO("%s accquire FW from file:%s\n", __FUNCTION__, rtw_fw_file_path); pFirmware->eFWSource = FW_SOURCE_IMG_FILE; - } - else + } else #endif //CONFIG_FILE_FWIMG { RTW_INFO("%s fw source from Header\n", __FUNCTION__); pFirmware->eFWSource = FW_SOURCE_HEADER_FILE; } - switch(pFirmware->eFWSource) - { + switch (pFirmware->eFWSource) { case FW_SOURCE_IMG_FILE: #ifdef CONFIG_FILE_FWIMG rtStatus = rtw_retrieve_from_file(rtw_fw_file_path, FwBuffer8814, FW_SIZE); @@ -1102,8 +1058,7 @@ int _WriteBTFWtoTxPktBuf8812( // Acquice TX spin lock before GetFwBuf and send the packet to prevent system deadlock. // Advertised by Roger. Added by tynli. 2010.02.22. PlatformAcquireSpinLock(Adapter, RT_TX_SPINLOCK); - if(MgntGetFWBuffer(Adapter, &pTcb, &pBuf)) - { + if(MgntGetFWBuffer(Adapter, &pTcb, &pBuf)) { PlatformMoveMemory(pBuf->Buffer.VirtualAddress, ReservedPagePacket, TotalPktLen); CmdSendPacket(Adapter, pTcb, pBuf, TotalPktLen, DESC_PACKET_TYPE_NORMAL, _FALSE); } @@ -1141,8 +1096,7 @@ int _WriteBTFWtoTxPktBuf8812( #if 1 // check rsvd page download OK. BcnValidReg = rtw_read8(Adapter, REG_TDECTRL+2); - while(!(BcnValidReg & BIT(0)) && count <200) - { + while (!(BcnValidReg & BIT(0)) && count <200) { count++; //PlatformSleepUs(10); rtw_msleep_os(1); @@ -1154,17 +1108,16 @@ int _WriteBTFWtoTxPktBuf8812( rtw_write8(Adapter, REG_TDECTRL+2,BcnValidReg); - }while((!(BcnValidReg&BIT(0))) && DLBcnCount<5); + } while ((!(BcnValidReg&BIT(0))) && DLBcnCount<5); #endif - if(DLBcnCount >=5){ + if(DLBcnCount >=5) { RTW_INFO(" check rsvd page download OK DLBcnCount =%d \n",DLBcnCount); rtStatus = _FAIL; goto exit; } - if(!(BcnValidReg&BIT(0))) - { + if(!(BcnValidReg&BIT(0))) { RTW_INFO("_WriteFWtoTxPktBuf(): 1 Download RSVD page failed!\n"); rtStatus = _FAIL; goto exit; @@ -1174,7 +1127,6 @@ int _WriteBTFWtoTxPktBuf8812( // 4. Set Tx boundary to the initial value //--------------------------------------------------------- - //--------------------------------------------------------- // 5. Reset beacon setting to the initial value. // After _CheckWLANFwPatchBTFwReady(). @@ -1182,8 +1134,7 @@ int _WriteBTFWtoTxPktBuf8812( exit: - if(pGenBufReservedPagePacket) - { + if(pGenBufReservedPagePacket) { RTW_INFO("_WriteBTFWtoTxPktBuf8723B => rtw_mfree pGenBufReservedPagePacket!\n"); rtw_mfree((u8*)pGenBufReservedPagePacket, TotalPktLen); } @@ -1214,22 +1165,20 @@ int ReservedPage_Compare(PADAPTER Adapter,PRT_MP_FIRMWARE pFirmware,u32 BTPatchS rtw_write8(Adapter,0x106,0x69); - for(i=0;i<(BTPatchSize/8);i++) - { + for(i=0;i<(BTPatchSize/8);i++) { rtw_write32(Adapter,0x140,address_start+5+i) ; //polling until reg 0x140[23]=1; - do{ + do { u1bTmp = rtw_read32(Adapter, 0x140); - if(u1bTmp&BIT(23)) - { + if(u1bTmp&BIT(23)) { ret = _SUCCESS; break; } count++; RTW_INFO("0x140=%x, wait for 10 ms (%d) times.\n",u1bTmp, count); rtw_msleep_os(10); // 10ms - }while(!(u1bTmp&BIT(23)) && count < 50); + } while(!(u1bTmp&BIT(23)) && count < 50); myBTFwBuffer[i*8+0]=rtw_read8(Adapter, 0x144); myBTFwBuffer[i*8+1]=rtw_read8(Adapter, 0x145); @@ -1248,36 +1197,31 @@ int ReservedPage_Compare(PADAPTER Adapter,PRT_MP_FIRMWARE pFirmware,u32 BTPatchS //polling until reg 0x140[23]=1; u1bTmp=0; count=0; - do{ + do { u1bTmp = rtw_read32(Adapter, 0x140); - if(u1bTmp&BIT(23)) - { + if(u1bTmp&BIT(23)) { ret = _SUCCESS; break; } count++; RTW_INFO("0x140=%x, wait for 10 ms (%d) times.\n",u1bTmp, count); rtw_msleep_os(10); // 10ms - }while(!(u1bTmp&BIT(23)) && count < 50); + } while (!(u1bTmp&BIT(23)) && count < 50); - for(i=0;iszFwBuffer[i]) - { + for(i=0;iszFwBuffer[i]) { RTW_INFO(" In direct myBTFwBuffer[%d]=%x , pFirmware->szFwBuffer=%x\n",i, myBTFwBuffer[i],pFirmware->szFwBuffer[i]); Adapter->mppriv.bTxBufCkFail=_TRUE; break; } } - if (myBTFwBuffer != NULL) - { + if (myBTFwBuffer != NULL) { rtw_mfree(myBTFwBuffer, BTPatchSize); } @@ -1307,15 +1251,13 @@ s32 FirmwareDownloadBT(PADAPTER padapter, PRT_MP_FIRMWARE pFirmware) } #ifdef CONFIG_FILE_FWIMG - if (rtw_is_file_readable(rtw_fw_mp_bt_file_path) == _TRUE) - { + if (rtw_is_file_readable(rtw_fw_mp_bt_file_path) == _TRUE) { RTW_INFO("%s: accquire MP BT FW from file:%s\n", __FUNCTION__, rtw_fw_mp_bt_file_path); rtStatus = rtw_retrieve_from_file(rtw_fw_mp_bt_file_path, FwBuffer, 0x8000); BTFirmwareLen = rtStatus>=0?rtStatus:0; pBTFirmwareBuf = FwBuffer; - } - else + } else #endif // CONFIG_FILE_FWIMG { #ifdef CONFIG_EMBEDDED_FWIMG @@ -1337,21 +1279,16 @@ s32 FirmwareDownloadBT(PADAPTER padapter, PRT_MP_FIRMWARE pFirmware) RTW_INFO("%s: download_time is %d\n", __FUNCTION__, download_time); // Download BT patch Fw. - for (i = (download_time-1); i >= 0; i--) - { - if (i == (download_time - 1)) - { + for (i = (download_time-1); i >= 0; i--) { + if (i == (download_time - 1)) { rtStatus = _WriteBTFWtoTxPktBuf8812(padapter, pBTFirmwareBuf+(4096*i), (BTFirmwareLen-(4096*i)), 1); RTW_INFO("%s: start %d, len %d, time 1\n", __FUNCTION__, 4096*i, BTFirmwareLen-(4096*i)); - } - else - { + } else { rtStatus = _WriteBTFWtoTxPktBuf8812(padapter, pBTFirmwareBuf+(4096*i), 4096, (download_time-i)); RTW_INFO("%s: start %d, len 4096, time %d\n", __FUNCTION__, 4096*i, download_time-i); } - if (rtStatus != _SUCCESS) - { + if (rtStatus != _SUCCESS) { RTW_INFO("%s: BT Firmware download to Tx packet buffer fail!\n", __FUNCTION__); padapter->bBTFWReady = _FALSE; return rtStatus; @@ -1392,7 +1329,7 @@ SetFwRelatedForWoWLAN8812( // 1. Before WoWLAN we need to re-download WoWLAN Fw. // status = FirmwareDownload8812(padapter, bHostIsGoingtoSleep); - if(status != _SUCCESS) { + if (status != _SUCCESS) { RTW_INFO("SetFwRelatedForWoWLAN8812(): Re-Download Firmware failed!!\n"); return; } else { @@ -1416,8 +1353,7 @@ hal_GetChnlGroup8814A( { BOOLEAN bIn24G=_TRUE; - if(Channel <= 14) - { + if (Channel <= 14) { bIn24G=_TRUE; if (1 <= Channel && Channel <= 2 ) *pGroup = 0; @@ -1425,14 +1361,13 @@ hal_GetChnlGroup8814A( else if (6 <= Channel && Channel <= 8 ) *pGroup = 2; else if (9 <= Channel && Channel <= 11) *pGroup = 3; else if (12 <= Channel && Channel <= 14) *pGroup = 4; - else - { + else { RT_DISP(FPHY, PHY_TXPWR_EFUSE, ("==>hal_GetChnlGroupJaguar in 2.4 G, but Channel %d in Group not found \n", Channel)); } } else { bIn24G=_FALSE; - if (36 <= Channel && Channel <= 42) *pGroup = 0; // 36 38 40 + if (36 <= Channel && Channel <= 42) *pGroup = 0; // 36 38 40 else if (44 <= Channel && Channel <= 48) *pGroup = 1; // 44 46 48 else if (50 <= Channel && Channel <= 58) *pGroup = 2; // 52 54 56 else if (60 <= Channel && Channel <= 64) *pGroup = 3; // 60 62 64 @@ -1455,7 +1390,6 @@ hal_GetChnlGroup8814A( return bIn24G; } - static void hal_ReadPowerValueFromPROM8814A( IN PADAPTER Adapter, @@ -1472,24 +1406,19 @@ hal_ReadPowerValueFromPROM8814A( _rtw_memset(pwrInfo5G, 0, sizeof(TxPowerInfo5G)); /* RTW_INFO("hal_ReadPowerValueFromPROM8814A(): PROMContent[0x%x]=0x%x\n", (eeAddr+1), PROMContent[eeAddr+1]); */ - if(0xFF == PROMContent[eeAddr+1]) //YJ,add,120316 + if (0xFF == PROMContent[eeAddr+1]) //YJ,add,120316 AutoLoadFail = _TRUE; - if(AutoLoadFail) - { + if (AutoLoadFail) { RTW_INFO("hal_ReadPowerValueFromPROM8814A(): Use Default value!\n"); - for(rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) - { + for(rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) { // 2.4G default value - for(group = 0 ; group < MAX_CHNL_GROUP_24G; group++) - { + for(group = 0 ; group < MAX_CHNL_GROUP_24G; group++) { pwrInfo24G->IndexCCK_Base[rfPath][group] = EEPROM_DEFAULT_24G_INDEX; pwrInfo24G->IndexBW40_Base[rfPath][group] = EEPROM_DEFAULT_24G_INDEX; } - for(TxCount=0;TxCountBW20_Diff[rfPath][0] = EEPROM_DEFAULT_24G_HT20_DIFF; pwrInfo24G->OFDM_Diff[rfPath][0] = EEPROM_DEFAULT_24G_OFDM_DIFF; } else { @@ -1501,13 +1430,11 @@ hal_ReadPowerValueFromPROM8814A( } // 5G default value - for(group = 0 ; group < MAX_CHNL_GROUP_5G; group++) - { + for(group = 0 ; group < MAX_CHNL_GROUP_5G; group++) { pwrInfo5G->IndexBW40_Base[rfPath][group] = EEPROM_DEFAULT_5G_INDEX; } - for(TxCount=0;TxCountOFDM_Diff[rfPath][0] = EEPROM_DEFAULT_5G_OFDM_DIFF; pwrInfo5G->BW20_Diff[rfPath][0] = EEPROM_DEFAULT_5G_HT20_DIFF; @@ -1527,31 +1454,25 @@ hal_ReadPowerValueFromPROM8814A( return; } - for(rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) - { + for (rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) { // 2.4G default value - for(group = 0 ; group < MAX_CHNL_GROUP_24G; group++) - { + for (group = 0 ; group < MAX_CHNL_GROUP_24G; group++) { pwrInfo24G->IndexCCK_Base[rfPath][group] = PROMContent[eeAddr++]; - if(pwrInfo24G->IndexCCK_Base[rfPath][group] == 0xFF) - { + if (pwrInfo24G->IndexCCK_Base[rfPath][group] == 0xFF) { pwrInfo24G->IndexCCK_Base[rfPath][group] = EEPROM_DEFAULT_24G_INDEX; } /* RTW_INFO("8814-2G RF-%d-G-%d CCK-Addr-%x BASE=%x\n", rfPath, group, eeAddr-1, pwrInfo24G->IndexCCK_Base[rfPath][group]); */ } - for(group = 0 ; group < MAX_CHNL_GROUP_24G-1; group++) - { + for (group = 0 ; group < MAX_CHNL_GROUP_24G-1; group++) { pwrInfo24G->IndexBW40_Base[rfPath][group] = PROMContent[eeAddr++]; - if(pwrInfo24G->IndexBW40_Base[rfPath][group] == 0xFF) + if (pwrInfo24G->IndexBW40_Base[rfPath][group] == 0xFF) pwrInfo24G->IndexBW40_Base[rfPath][group] = EEPROM_DEFAULT_24G_INDEX; /* RTW_INFO("8814-2G RF-%d-G-%d BW40-Addr-%x BASE=%x\n", rfPath, group, eeAddr-1, pwrInfo24G->IndexBW40_Base[rfPath][group]); */ } - for(TxCount=0;TxCountBW40_Diff[rfPath][TxCount] = 0; { @@ -1615,23 +1536,19 @@ hal_ReadPowerValueFromPROM8814A( } //5G default value - for(group = 0 ; group < MAX_CHNL_GROUP_5G; group++) - { + for (group = 0 ; group < MAX_CHNL_GROUP_5G; group++) { pwrInfo5G->IndexBW40_Base[rfPath][group] = PROMContent[eeAddr++]; - if(pwrInfo5G->IndexBW40_Base[rfPath][group] == 0xFF) + if (pwrInfo5G->IndexBW40_Base[rfPath][group] == 0xFF) pwrInfo5G->IndexBW40_Base[rfPath][group] = EEPROM_DEFAULT_DIFF; /* RTW_INFO("8814-5G RF-%d-G-%d BW40-Addr-%x BASE=%x\n", rfPath, TxCount, eeAddr-1, pwrInfo5G->IndexBW40_Base[rfPath][group]); */ } - for(TxCount=0;TxCountBW40_Diff[rfPath][TxCount]= 0; - { pwrInfo5G->BW20_Diff[rfPath][0] = (PROMContent[eeAddr]&0xf0)>>4; if(pwrInfo5G->BW20_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number @@ -1689,17 +1606,15 @@ hal_ReadPowerValueFromPROM8814A( rfPath, 3, eeAddr, pwrInfo5G->OFDM_Diff[rfPath][3]); */ eeAddr++; - for(TxCount=1;TxCountOFDM_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number + for (TxCount=1;TxCountOFDM_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number pwrInfo5G->OFDM_Diff[rfPath][TxCount] |= 0xF0; /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo5G->OFDM_Diff[rfPath][TxCount]); */ } - for(TxCount=0;TxCountBW80_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; @@ -1771,10 +1686,9 @@ hal_EfuseParseBTCoexistInfo8814A( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u8 tempval=0x0; - if(!AutoLoadFail) - { + if (!AutoLoadFail) { tempval = hwinfo[EEPROM_RF_BOARD_OPTION_8814]; - if( ((tempval & 0xe0)>>5) == 0x1)// [7:5] + if ( ((tempval & 0xe0)>>5) == 0x1)// [7:5] pHalData->EEPROMBluetoothCoexist = 1; else pHalData->EEPROMBluetoothCoexist = 0; @@ -1782,9 +1696,7 @@ hal_EfuseParseBTCoexistInfo8814A( tempval = hwinfo[EEPROM_RF_BT_SETTING_8814]; pHalData->EEPROMBluetoothAntNum = Ant_x1; - } - else - { + } else { pHalData->EEPROMBluetoothCoexist = 0; pHalData->EEPROMBluetoothType = BT_RTL8814A; pHalData->EEPROMBluetoothAntNum = Ant_x1; @@ -1802,11 +1714,11 @@ hal_ReadPROMVersion8814A( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - if(AutoloadFail) { + if (AutoloadFail) { pHalData->EEPROMVersion = EEPROM_Default_Version; } else { pHalData->EEPROMVersion = *(u8 *)&PROMContent[EEPROM_VERSION_8814]; - if(pHalData->EEPROMVersion == 0xFF) + if (pHalData->EEPROMVersion == 0xFF) pHalData->EEPROMVersion = EEPROM_Default_Version; } } @@ -1828,13 +1740,11 @@ hal_ReadTxPowerInfo8814A( //if(!AutoLoadFail) // pHalData->bTXPowerDataReadFromEEPORM = _TRUE; - for(rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) - { + for (rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) { for (ch = 0 ; ch < CENTER_CH_2G_NUM ; ch++) { hal_GetChnlGroup8814A(ch+1, &group); - if(ch == 14-1) - { + if (ch == 14-1) { pHalData->Index24G_CCK_Base[rfPath][ch] = pwrInfo24G.IndexCCK_Base[rfPath][5]; pHalData->Index24G_BW40_Base[rfPath][ch] = pwrInfo24G.IndexBW40_Base[rfPath][group]; } else { @@ -1866,8 +1776,7 @@ hal_ReadTxPowerInfo8814A( //RTW_INFO("Index5G_BW80_Base[%d][%d] = 0x%x\n",rfPath,ch,pHalData->Index5G_BW80_Base[rfPath][ch]); } - for(TxCount=0;TxCountCCK_24G_Diff[rfPath][TxCount]=pwrInfo24G.CCK_Diff[rfPath][TxCount]; pHalData->OFDM_24G_Diff[rfPath][TxCount]=pwrInfo24G.OFDM_Diff[rfPath][TxCount]; pHalData->BW20_24G_Diff[rfPath][TxCount]=pwrInfo24G.BW20_Diff[rfPath][TxCount]; @@ -1895,12 +1804,11 @@ hal_ReadTxPowerInfo8814A( // 2010/10/19 MH Add Regulator recognize for CU. - if(!AutoLoadFail) - { + if (!AutoLoadFail) { struct registry_priv *registry_par = &Adapter->registrypriv; pHalData->EEPROMRegulatory = (PROMContent[EEPROM_RF_BOARD_OPTION_8814]&0x7); //bit0~2 - if(PROMContent[EEPROM_RF_BOARD_OPTION_8814] == 0xFF) + if (PROMContent[EEPROM_RF_BOARD_OPTION_8814] == 0xFF) pHalData->EEPROMRegulatory = (EEPROM_DEFAULT_BOARD_OPTION&0x7); //bit0~2 } else { pHalData->EEPROMRegulatory = 0; @@ -1920,10 +1828,9 @@ hal_ReadBoardType8814A( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - if(!AutoloadFail) - { + if (!AutoloadFail) { pHalData->InterfaceSel = (PROMContent[EEPROM_RF_BOARD_OPTION_8814]&0xE0)>>5; - if(PROMContent[EEPROM_RF_BOARD_OPTION_8814] == 0xFF) + if (PROMContent[EEPROM_RF_BOARD_OPTION_8814] == 0xFF) pHalData->InterfaceSel = (EEPROM_DEFAULT_BOARD_OPTION&0xE0)>>5; } else { pHalData->InterfaceSel = 0; @@ -2002,7 +1909,7 @@ hal_ReadThermalMeter_8814A( pHalData->EEPROMThermalMeter = 0xff; - if(!AutoloadFail) + if (!AutoloadFail) pHalData->EEPROMThermalMeter = PROMContent[EEPROM_THERMAL_METER_8814]; #if 0 /* ToDo: check with RF */ @@ -2030,7 +1937,7 @@ void hal_ReadRemoteWakeup_8814A( struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter); u8 tmpvalue; - if(AutoLoadFail){ + if (AutoLoadFail) { pwrctl->bHWPowerdown = _FALSE; pwrctl->bSupportRemoteWakeup = _FALSE; } else { @@ -2192,10 +2099,9 @@ hal_EfuseParseXtal_8814A( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); - if(!AutoLoadFail) - { + if (!AutoLoadFail) { pHalData->CrystalCap = hwinfo[EEPROM_XTAL_8814]; - if(pHalData->CrystalCap == 0xFF) + if (pHalData->CrystalCap == 0xFF) pHalData->CrystalCap = EEPROM_Default_CrystalCap_8814; /* what value should 8814 set? */ } else { pHalData->CrystalCap = EEPROM_Default_CrystalCap_8814; @@ -2231,12 +2137,10 @@ hal_ReadPAType_8814A( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u8 LNAType_AB, LNAType_CD; - if( ! AutoloadFail ) - { + if( ! AutoloadFail ) { u8 RFEType = PROMContent[EEPROM_RFE_OPTION_8814]; - if (GetRegAmplifierType2G(Adapter) == 0) // AUTO - { + if (GetRegAmplifierType2G(Adapter) == 0) { // AUTO *pPAType = EF1Byte( *(u8*)&PROMContent[EEPROM_PA_TYPE_8814] ); LNAType_AB = EF1Byte( *(u8*)&PROMContent[EEPROM_LNA_TYPE_AB_2G_8814] ); @@ -2259,8 +2163,7 @@ hal_ReadPAType_8814A( pHalData->ExternalLNA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_LNA) ? 1 : 0; } - if (GetRegAmplifierType5G(Adapter) == 0) // AUTO - { + if (GetRegAmplifierType5G(Adapter) == 0) { // AUTO LNAType_AB = EF1Byte( *(u8*)&PROMContent[EEPROM_LNA_TYPE_AB_5G_8814] ); LNAType_CD = EF1Byte( *(u8*)&PROMContent[EEPROM_LNA_TYPE_CD_5G_8814] ); @@ -2286,16 +2189,15 @@ hal_ReadPAType_8814A( pHalData->ExternalLNA_2G = EEPROM_Default_LNAType; pHalData->ExternalLNA_5G = 0xFF; - if (GetRegAmplifierType2G(Adapter) == 0) - { + if (GetRegAmplifierType2G(Adapter) == 0) { pHalData->ExternalPA_2G = 0; pHalData->ExternalLNA_2G = 0; } else { pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; pHalData->ExternalLNA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_LNA) ? 1 : 0; } - if (GetRegAmplifierType5G(Adapter) == 0) - { + + if (GetRegAmplifierType5G(Adapter) == 0) { pHalData->ExternalPA_5G = 0; pHalData->ExternalLNA_5G = 0; } else { @@ -2313,7 +2215,7 @@ VOID hal_ReadAmplifierType_8814A( ) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - switch(pHalData->RFEType) + switch (pHalData->RFEType) { case 1: /* 8814AU */ pHalData->ExternalPA_5G = pHalData->ExternalLNA_5G = _TRUE; @@ -2370,14 +2272,13 @@ hal_ReadRFEType_8814A( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - if(!AutoloadFail) - { + if (!AutoloadFail) { if ((GetRegRFEType(Adapter) != 64) || 0xFF == PROMContent[EEPROM_RFE_OPTION_8814] || PROMContent[EEPROM_RFE_OPTION_8814] & BIT7) { - if(GetRegRFEType(Adapter) != 64) + if (GetRegRFEType(Adapter) != 64) pHalData->RFEType = GetRegRFEType(Adapter); - else if(IS_HARDWARE_TYPE_8814AE(Adapter)) + else if (IS_HARDWARE_TYPE_8814AE(Adapter)) pHalData->RFEType = 0; - else if(IS_HARDWARE_TYPE_8814AU(Adapter)) + else if (IS_HARDWARE_TYPE_8814AU(Adapter)) pHalData->RFEType = 1; hal_ReadAmplifierType_8814A(Adapter); @@ -2387,11 +2288,11 @@ hal_ReadRFEType_8814A( hal_ReadAmplifierType_8814A(Adapter); } } else { - if(GetRegRFEType(Adapter) != 64) + if (GetRegRFEType(Adapter) != 64) pHalData->RFEType = GetRegRFEType(Adapter); - else if(IS_HARDWARE_TYPE_8814AE(Adapter)) + else if (IS_HARDWARE_TYPE_8814AE(Adapter)) pHalData->RFEType = 0; - else if(IS_HARDWARE_TYPE_8814AU(Adapter)) + else if (IS_HARDWARE_TYPE_8814AU(Adapter)) pHalData->RFEType = 1; hal_ReadAmplifierType_8814A(Adapter); @@ -2410,27 +2311,24 @@ hal_EfusePowerSwitch8814A( u8 EFUSE_ACCESS_ON_8814A = 0x69; u8 EFUSE_ACCESS_OFF_8814A = 0x00; - if (PwrState == _TRUE) - { + if (PwrState == _TRUE) { rtw_write8(pAdapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_ON_8814A); // Reset: 0x0000h[28], default valid tmpV16 = PlatformEFIORead2Byte(pAdapter,REG_SYS_FUNC_EN); - if( !(tmpV16 & FEN_ELDR) ){ + if ( !(tmpV16 & FEN_ELDR) ){ tmpV16 |= FEN_ELDR ; rtw_write16(pAdapter,REG_SYS_FUNC_EN,tmpV16); } // Clock: Gated(0x0008h[5]) 8M(0x0008h[1]) clock from ANA, default valid tmpV16 = PlatformEFIORead2Byte(pAdapter,REG_SYS_CLKR); - if( (!(tmpV16 & LOADER_CLK_EN) ) ||(!(tmpV16 & ANA8M) ) ) - { + if ( (!(tmpV16 & LOADER_CLK_EN) ) ||(!(tmpV16 & ANA8M) ) ) { tmpV16 |= (LOADER_CLK_EN |ANA8M ) ; rtw_write16(pAdapter,REG_SYS_CLKR,tmpV16); } - if(bWrite == _TRUE) - { + if (bWrite == _TRUE) { // Enable LDO 2.5V before read/write action tempval = rtw_read8(pAdapter, EFUSE_TEST+3); tempval &= 0x0F; @@ -2440,7 +2338,7 @@ hal_EfusePowerSwitch8814A( } else { rtw_write8(pAdapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_OFF_8814A); - if(bWrite == _TRUE){ + if (bWrite == _TRUE) { // Disable LDO 2.5V after read/write action tempval = rtw_read8(pAdapter, EFUSE_TEST+3); rtw_write8(pAdapter, EFUSE_TEST+3, (tempval & 0x7F)); @@ -2479,22 +2377,19 @@ hal_EfuseReadEFuse8814A( // // Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. // - if((_offset + _size_byte)>EFUSE_MAP_LEN_8814A) - {// total E-Fuse table is 512bytes + if ((_offset + _size_byte)>EFUSE_MAP_LEN_8814A) { // total E-Fuse table is 512bytes RTW_INFO("Hal_EfuseReadEFuse8814A(): Invalid offset(%#x) with read bytes(%#x)!!\n", _offset, _size_byte); goto exit; } efuseTbl = (u8*)rtw_zmalloc(EFUSE_MAP_LEN_8814A); - if(efuseTbl == NULL) - { + if (efuseTbl == NULL) { RTW_INFO("%s: alloc efuseTbl fail!\n", __FUNCTION__); goto exit; } eFuseWord= (u16 **)rtw_malloc2d(EFUSE_MAX_SECTION_8814A, EFUSE_MAX_WORD_UNIT_8814A, 2); - if(eFuseWord == NULL) - { + if (eFuseWord == NULL) { RTW_INFO("%s: alloc eFuseWord fail!\n", __FUNCTION__); goto exit; } @@ -2510,8 +2405,7 @@ hal_EfuseReadEFuse8814A( // efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); - if(efuseHeader != 0xFF) - { + if (efuseHeader != 0xFF) { efuse_utilized++; } else { RTW_INFO("EFUSE is empty\n"); @@ -2523,13 +2417,12 @@ hal_EfuseReadEFuse8814A( // // 2. Read real efuse content. Filter PG header and every section data. // - while((efuseHeader != 0xFF) && AVAILABLE_EFUSE_ADDR_8814A(eFuse_Addr)) - { + while ((efuseHeader != 0xFF) && AVAILABLE_EFUSE_ADDR_8814A(eFuse_Addr)) { //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("efuse_Addr-%d efuse_data=%x\n", eFuse_Addr-1, *rtemp8)); // Check PG header for section num. - if(EXT_HEADER(efuseHeader)) //extended header - { + if (EXT_HEADER(efuseHeader)) { //extended header + offset_2_0 = GET_HDR_OFFSET_2_0(efuseHeader); //RT_DISP(FEEPROM, EFUSE_READ_ALL, ("extended header offset_2_0=%X\n", offset_2_0)); @@ -2537,14 +2430,11 @@ hal_EfuseReadEFuse8814A( //RT_DISP(FEEPROM, EFUSE_READ_ALL, ("efuse[%X]=%X\n", eFuse_Addr-1, efuseExtHdr)); - if(efuseExtHdr != 0xff) - { + if (efuseExtHdr != 0xff) { efuse_utilized++; - if(ALL_WORDS_DISABLED(efuseExtHdr)) - { + if (ALL_WORDS_DISABLED(efuseExtHdr)) { efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); - if(efuseHeader != 0xff) - { + if (efuseHeader != 0xff) { efuse_utilized++; } break; @@ -2562,22 +2452,19 @@ hal_EfuseReadEFuse8814A( wden = (efuseHeader & 0x0f); } - if(offset < EFUSE_MAX_SECTION_8814A) - { + if (offset < EFUSE_MAX_SECTION_8814A) { // Get word enable value from PG header //RT_DISP(FEEPROM, EFUSE_READ_ALL, ("Offset-%X Worden=%X\n", offset, wden)); - for(i=0; i> 8) & 0xff); } @@ -2635,8 +2519,7 @@ hal_EfuseReadEFuse8814A( // // 4. Copy from Efuse map to output pointer memory!!! // - for(i=0; i<_size_byte; i++) - { + for (i = 0; i<_size_byte; i++) { pbuf[i] = efuseTbl[_offset+i]; } @@ -2647,10 +2530,10 @@ hal_EfuseReadEFuse8814A( rtw_hal_set_hwreg(Adapter, HW_VAR_EFUSE_BYTES, (u8 *)&eFuse_Addr); exit: - if(efuseTbl) + if (efuseTbl) rtw_mfree(efuseTbl, EFUSE_MAP_LEN_8814A); - if(eFuseWord) + if (eFuseWord) rtw_mfree2d((void *)eFuseWord, EFUSE_MAX_SECTION_8814A, EFUSE_MAX_WORD_UNIT_8814A, sizeof(u16)); } @@ -2765,8 +2648,7 @@ hal_EfuseWordEnableDataWrite8814A( IN PADAPTER pAdapter, RTW_INFO("word_en = %x efuse_addr=%x\n", word_en, efuse_addr); - if ( ! (word_en&BIT0)) - { + if ( ! (word_en&BIT0)) { readbackAddr = start_addr; efuse_OneByteWrite(pAdapter,start_addr++, data[0], bPseudoTest); efuse_OneByteWrite(pAdapter,start_addr++, data[1], bPseudoTest); @@ -2782,12 +2664,11 @@ hal_EfuseWordEnableDataWrite8814A( IN PADAPTER pAdapter, IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter)) PHY_SetMacReg(pAdapter, EFUSE_TEST, BIT26, 1); // Restored to 1.5K Read, Suggested by Morris & Victor - if((data[0]!=readbackData[0])||(data[1]!=readbackData[1])){ + if ((data[0]!=readbackData[0])||(data[1]!=readbackData[1])) { badworden &= (~BIT0); } } - if ( ! (word_en&BIT1)) - { + if ( ! (word_en&BIT1)) { readbackAddr = start_addr; efuse_OneByteWrite(pAdapter,start_addr++, data[2], bPseudoTest); efuse_OneByteWrite(pAdapter,start_addr++, data[3], bPseudoTest); @@ -2807,8 +2688,7 @@ hal_EfuseWordEnableDataWrite8814A( IN PADAPTER pAdapter, badworden &=( ~BIT1); } } - if ( ! (word_en&BIT2)) - { + if ( ! (word_en&BIT2)) { readbackAddr = start_addr; efuse_OneByteWrite(pAdapter,start_addr++, data[4], bPseudoTest); efuse_OneByteWrite(pAdapter,start_addr++, data[5], bPseudoTest); @@ -2828,8 +2708,7 @@ hal_EfuseWordEnableDataWrite8814A( IN PADAPTER pAdapter, badworden &=( ~BIT2); } } - if ( ! (word_en&BIT3)) - { + if ( ! (word_en&BIT3)) { readbackAddr = start_addr; efuse_OneByteWrite(pAdapter,start_addr++, data[6], bPseudoTest); efuse_OneByteWrite(pAdapter,start_addr++, data[7], bPseudoTest); @@ -2845,7 +2724,7 @@ hal_EfuseWordEnableDataWrite8814A( IN PADAPTER pAdapter, IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter)) PHY_SetMacReg(pAdapter, EFUSE_TEST, BIT26, 1); // Restored to 1.5K Read, Suggested by Morris & Victor - if((data[6]!=readbackData[6])||(data[7]!=readbackData[7])){ + if ((data[6]!=readbackData[6])||(data[7]!=readbackData[7])){ badworden &=( ~BIT3); } } @@ -2880,8 +2759,7 @@ static u16 hal_EfuseGetCurrentSize_8814A( PADAPTER pAdapter, BOOLEAN bPseudoTest RTW_INFO("=======> %s() \n", __func__); - if(bPseudoTest) - { + if (bPseudoTest) { efuse_addr = (u16)(fakeEfuseUsedBytes); } else { rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&efuse_addr); @@ -2890,17 +2768,13 @@ static u16 hal_EfuseGetCurrentSize_8814A( PADAPTER pAdapter, BOOLEAN bPseudoTest while ( bContinual && efuse_OneByteRead(pAdapter, efuse_addr , &efuse_data, bPseudoTest) && - (efuse_addr < EFUSE_REAL_CONTENT_LEN_8814A)) - { - if (efuse_data != 0xFF) - { - if ((efuse_data&0x1F) == 0x0F) //extended header - { + (efuse_addr < EFUSE_REAL_CONTENT_LEN_8814A)) { + if (efuse_data != 0xFF) { + if ((efuse_data&0x1F) == 0x0F) { //extended header hoffset = efuse_data; efuse_addr++; efuse_OneByteRead(pAdapter, efuse_addr, &efuse_data, bPseudoTest); - if((efuse_data & 0x0F) == 0x0F) - { + if((efuse_data & 0x0F) == 0x0F) { efuse_addr++; continue; } else { @@ -2919,8 +2793,7 @@ static u16 hal_EfuseGetCurrentSize_8814A( PADAPTER pAdapter, BOOLEAN bPseudoTest } } - if(bPseudoTest) - { + if (bPseudoTest) { fakeEfuseUsedBytes = efuse_addr; pEfuseHal->fakeEfuseUsedBytes = efuse_addr; RTW_INFO ("%s(), return %d \n", __func__, pEfuseHal->fakeEfuseUsedBytes ); @@ -2970,8 +2843,8 @@ hal_EfusePgPacketRead_8814A( u8 tmpdata[8]; u8 tmp_header = 0; - if(data==NULL) return _FALSE; - if(offset>=EFUSE_MAX_SECTION_JAGUAR) return _FALSE; + if (data==NULL) return _FALSE; + if (offset>=EFUSE_MAX_SECTION_JAGUAR) return _FALSE; _rtw_memset((PVOID)data, 0xff, sizeof(u8)*PGPKT_DATA_SIZE); _rtw_memset((PVOID)tmpdata, 0xff, sizeof(u8)*PGPKT_DATA_SIZE); @@ -2981,20 +2854,15 @@ hal_EfusePgPacketRead_8814A( // Skip dummy parts to prevent unexpected data read from Efuse. // By pass right now. 2009.02.19. // - while(bContinual && (efuse_addr < pEfuseHal->PhysicalLen_WiFi) ) - { + while (bContinual && (efuse_addr < pEfuseHal->PhysicalLen_WiFi) ) { //------- Header Read ------------- - if(ReadState & PG_STATE_HEADER) - { - if(efuse_OneByteRead(pAdapter, efuse_addr ,&efuse_data, bPseudoTest)&&(efuse_data!=0xFF)) - { - if(ALL_WORDS_DISABLED(efuse_data)) - { + if (ReadState & PG_STATE_HEADER) { + if (efuse_OneByteRead(pAdapter, efuse_addr ,&efuse_data, bPseudoTest)&&(efuse_data!=0xFF)) { + if (ALL_WORDS_DISABLED(efuse_data)) { tmp_header = efuse_data; efuse_addr++; efuse_OneByteRead(pAdapter, efuse_addr ,&efuse_data, bPseudoTest); - if((efuse_data & 0x0F) != 0x0F) - { + if ((efuse_data & 0x0F) != 0x0F) { hoffset = ((tmp_header & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); hworden = efuse_data & 0x0F; } else { @@ -3009,16 +2877,16 @@ hal_EfusePgPacketRead_8814A( word_cnts = Efuse_CalculateWordCnts(hworden); bDataEmpty = _TRUE ; - if(hoffset==offset){ - for(tmpidx = 0;tmpidx< word_cnts*2 ;tmpidx++){ - if(efuse_OneByteRead(pAdapter, efuse_addr+1+tmpidx ,&efuse_data, bPseudoTest) ){ + if (hoffset==offset) { + for (tmpidx = 0;tmpidx< word_cnts*2 ;tmpidx++) { + if (efuse_OneByteRead(pAdapter, efuse_addr+1+tmpidx ,&efuse_data, bPseudoTest) ) { tmpdata[tmpidx] = efuse_data; - if(efuse_data!=0xff){ + if (efuse_data!=0xff) { bDataEmpty = _FALSE; } } } - if(bDataEmpty==_FALSE){ + if (bDataEmpty==_FALSE) { ReadState = PG_STATE_DATA; } else { //read next header efuse_addr = efuse_addr + (word_cnts*2)+1; @@ -3035,8 +2903,7 @@ hal_EfusePgPacketRead_8814A( } } //------- Data section Read ------------- - else if(ReadState & PG_STATE_DATA) - { + else if (ReadState & PG_STATE_DATA) { efuse_WordEnableDataRead(hworden,tmpdata,data); efuse_addr = efuse_addr + (word_cnts*2)+1; ReadState = PG_STATE_HEADER; @@ -3044,7 +2911,7 @@ hal_EfusePgPacketRead_8814A( } - if( (data[0]==0xff) &&(data[1]==0xff) && (data[2]==0xff) && (data[3]==0xff) && + if ( (data[0]==0xff) &&(data[1]==0xff) && (data[2]==0xff) && (data[3]==0xff) && (data[4]==0xff) &&(data[5]==0xff) && (data[6]==0xff) && (data[7]==0xff)) return _FALSE; else @@ -3073,8 +2940,7 @@ efuse_PgPacketCheck( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); - if (Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest) >= (EFUSE_REAL_CONTENT_LEN_8814A-EFUSE_PROTECT_BYTES_BANK_8814A)) - { + if (Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest) >= (EFUSE_REAL_CONTENT_LEN_8814A-EFUSE_PROTECT_BYTES_BANK_8814A)) { RTW_INFO("%s()error: %x >= %x\n", __func__, Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest), (EFUSE_REAL_CONTENT_LEN_8814A-EFUSE_PROTECT_BYTES_BANK_8814A)); return _FALSE; } @@ -3128,9 +2994,8 @@ hal_EfuseCheckIfDatafollowed( BOOLEAN bRet=FALSE; u8 i, efuse_data; - for(i=0; i<(word_cnts*2) ; i++) - { - if(efuse_OneByteRead(pAdapter, (startAddr+i) ,&efuse_data, bPseudoTest)&&(efuse_data != 0xFF)) + for (i = 0; i<(word_cnts*2) ; i++) { + if (efuse_OneByteRead(pAdapter, (startAddr+i) ,&efuse_data, bPseudoTest)&&(efuse_data != 0xFF)) bRet = TRUE; } @@ -3170,7 +3035,7 @@ hal_EfuseWordEnMatched( *pWden = match_word_en; - if(match_word_en != 0xf) + if (match_word_en != 0xf) return TRUE; else return FALSE; @@ -3205,10 +3070,8 @@ efuse_PgPacketPartialWrite( //EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, &efuse_max_available_len, bPseudoTest); //EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_CONTENT_LEN_BANK, &efuse_max, bPseudoTest); - if(efuseType == EFUSE_WIFI) - { - if(bPseudoTest) - { + if (efuseType == EFUSE_WIFI) { + if (bPseudoTest) { #ifdef HAL_EFUSE_MEMORY startAddr = (u16)pEfuseHal->fakeEfuseUsedBytes; #else @@ -3219,17 +3082,14 @@ efuse_PgPacketPartialWrite( rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8*)&startAddr); } } else { - if(bPseudoTest) - { + if (bPseudoTest) { #ifdef HAL_EFUSE_MEMORY startAddr = (u16)pEfuseHal->fakeBTEfuseUsedBytes; #else startAddr = (u16)fakeBTEfuseUsedBytes; #endif - } - else - { + } else { rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BT_BYTES, (u8*)&startAddr); } } @@ -3240,23 +3100,19 @@ efuse_PgPacketPartialWrite( while(1) { - if(startAddr >= efuse_max_available_len) - { + if(startAddr >= efuse_max_available_len) { bRet = _FALSE; RTW_INFO("startAddr(%d) >= efuse_max_available_len(%d)\n", startAddr, efuse_max_available_len); break; } - if (efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest) && (efuse_data!=0xFF)) - { - if(EXT_HEADER(efuse_data)) - { + if (efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest) && (efuse_data!=0xFF)) { + if (EXT_HEADER(efuse_data)) { cur_header = efuse_data; startAddr++; efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest); - if (ALL_WORDS_DISABLED(efuse_data)) - { + if (ALL_WORDS_DISABLED(efuse_data)) { u16 recoveredAddr = startAddr; recoveredAddr = efuse_PgPacketExceptionHandle(pAdapter, startAddr-1); @@ -3299,7 +3155,7 @@ efuse_PgPacketPartialWrite( curPkt.word_cnts = Efuse_CalculateWordCnts(curPkt.word_en); // if same header is found but no data followed // write some part of data followed by the header. - if( (curPkt.offset == pTargetPkt->offset) && + if ( (curPkt.offset == pTargetPkt->offset) && (!hal_EfuseCheckIfDatafollowed(pAdapter, curPkt.word_cnts, startAddr+1, bPseudoTest)) && hal_EfuseWordEnMatched(pTargetPkt, &curPkt, &matched_wden) ) { @@ -3307,24 +3163,20 @@ efuse_PgPacketPartialWrite( //RT_ASSERT(_FALSE, ("Error, Need to partial write data by the previous wrote header!!\n")); // Here to write partial data badworden = Efuse_WordEnableDataWrite(pAdapter, startAddr+1, matched_wden, pTargetPkt->data, bPseudoTest); - if(badworden != 0x0F) - { + if(badworden != 0x0F) { u32 PgWriteSuccess=0; // if write fail on some words, write these bad words again PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pTargetPkt->offset, badworden, pTargetPkt->data, bPseudoTest); - if(!PgWriteSuccess) - { + if(!PgWriteSuccess) { bRet = _FALSE; // write fail, return break; } } // partial write ok, update the target packet for later use - for(i=0; i<4; i++) - { - if((matched_wden & (0x1<word_en |= (0x1<offset, originaldata, bPseudoTest)) - { //check if data exist + if (Efuse_PgPacketRead(pAdapter, pFixPkt->offset, originaldata, bPseudoTest)) { + //check if data exist badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr+1, pFixPkt->word_en, originaldata, bPseudoTest); - if(badworden != 0xf) // write fail - { + if (badworden != 0xf) { // write fail PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pFixPkt->offset, badworden, originaldata, bPseudoTest); - if(!PgWriteSuccess) + if (!PgWriteSuccess) return _FALSE; else efuse_addr = Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest); @@ -3398,17 +3249,14 @@ efuse_PgPacketWrite2ByteHeader( RTW_INFO("Wirte 2byte header\n"); - while(efuse_addr < efuse_max_available_len) - { + while (efuse_addr < efuse_max_available_len) { pg_header = ((pTargetPkt->offset & 0x07) << 5) | 0x0F; RTW_INFO("pg_header = 0x%x\n", pg_header); efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); - while(tmp_header == 0xFF || pg_header != tmp_header) - { - if(repeatcnt++ > pEfuseHal->DataRetry) - { + while (tmp_header == 0xFF || pg_header != tmp_header) { + if (repeatcnt++ > pEfuseHal->DataRetry) { RTW_INFO("Repeat over limit for pg_header!!\n"); return _FALSE; } @@ -3418,8 +3266,7 @@ efuse_PgPacketWrite2ByteHeader( } //to write ext_header - if(tmp_header == pg_header) - { + if (tmp_header == pg_header) { efuse_addr++; pg_header_temp = pg_header; pg_header = ((pTargetPkt->offset & 0x78) << 1) | pTargetPkt->word_en; @@ -3427,10 +3274,8 @@ efuse_PgPacketWrite2ByteHeader( efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); - while(tmp_header == 0xFF || pg_header != tmp_header) - { - if(repeatcnt++ > pEfuseHal->DataRetry) - { + while (tmp_header == 0xFF || pg_header != tmp_header) { + if (repeatcnt++ > pEfuseHal->DataRetry) { RTW_INFO("Repeat over limit for ext_header!!\n"); return _FALSE; } @@ -3439,10 +3284,8 @@ efuse_PgPacketWrite2ByteHeader( efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); } - if((tmp_header & 0x0F) == 0x0F) //word_en PG fail - { - if(repeatcnt++ > pEfuseHal->DataRetry) - { + if ((tmp_header & 0x0F) == 0x0F) { //word_en PG fail + if (repeatcnt++ > pEfuseHal->DataRetry) { RTW_INFO("Repeat over limit for word_en!!\n"); return _FALSE; } else { @@ -3450,23 +3293,21 @@ efuse_PgPacketWrite2ByteHeader( continue; } } - else if(pg_header != tmp_header) //offset PG fail - { + else if (pg_header != tmp_header) { //offset PG fail PGPKT_STRUCT fixPkt; //RT_ASSERT(_FALSE, ("Error, efuse_PgPacketWrite2ByteHeader(), offset PG fail, need to cover the existed data!!\n")); RTW_INFO("Error condition for offset PG fail, need to cover the existed data\n"); fixPkt.offset = ((pg_header_temp & 0xE0) >> 5) | ((tmp_header & 0xF0) >> 1); fixPkt.word_en = tmp_header & 0x0F; fixPkt.word_cnts = Efuse_CalculateWordCnts(fixPkt.word_en); - if(!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) + if (!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) return _FALSE; } else { bRet = _TRUE; break; } } - else if ((tmp_header & 0x1F) == 0x0F) //wrong extended header - { + else if ((tmp_header & 0x1F) == 0x0F) { //wrong extended header efuse_addr+=2; continue; } @@ -3510,10 +3351,8 @@ efuse_PgPacketWrite1ByteHeader( IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter)) PHY_SetMacReg(pAdapter, EFUSE_TEST, BIT26, 1); // Restored to 1.5K Read, Suggested by Morris & Victor - while(tmp_header == 0xFF || pg_header != tmp_header) - { - if(repeatcnt++ > pEfuseHal->HeaderRetry) - { + while (tmp_header == 0xFF || pg_header != tmp_header) { + if (repeatcnt++ > pEfuseHal->HeaderRetry) { RTW_INFO("retry %d times fail!!\n", repeatcnt); return _FALSE; } @@ -3522,8 +3361,7 @@ efuse_PgPacketWrite1ByteHeader( RTW_INFO("===> efuse_PgPacketWrite1ByteHeader: Keep %d-th retrying, tmp_header = 0x%X\n", repeatcnt, tmp_header); } - if(pg_header == tmp_header) - { + if (pg_header == tmp_header) { bRet = _TRUE; } else { PGPKT_STRUCT fixPkt; @@ -3534,7 +3372,7 @@ efuse_PgPacketWrite1ByteHeader( fixPkt.offset = (tmp_header>>4) & 0x0F; fixPkt.word_en = tmp_header & 0x0F; fixPkt.word_cnts = Efuse_CalculateWordCnts(fixPkt.word_en); - if(!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) + if (!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) return _FALSE; } @@ -3552,8 +3390,7 @@ efuse_PgPacketWriteHeader( { BOOLEAN bRet=_FALSE; - if(pTargetPkt->offset >= EFUSE_MAX_SECTION_BASE) - { + if (pTargetPkt->offset >= EFUSE_MAX_SECTION_BASE) { bRet = efuse_PgPacketWrite2ByteHeader(pAdapter, efuseType, pAddr, pTargetPkt, bPseudoTest); } else { bRet = efuse_PgPacketWrite1ByteHeader(pAdapter, efuseType, pAddr, pTargetPkt, bPseudoTest); @@ -3577,18 +3414,15 @@ efuse_PgPacketWriteData( badworden = 0x0f; badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr+1, pTargetPkt->word_en, pTargetPkt->data, bPseudoTest); - if(badworden == 0x0F) - { + if (badworden == 0x0F) { RTW_INFO("efuse_PgPacketWriteData ok!!\n"); return _TRUE; - } - else - { // Reorganize other pg packet + } else { // Reorganize other pg packet //RT_ASSERT(_FALSE, ("Error, efuse_PgPacketWriteData(), wirte data fail!!\n")); RTW_INFO("efuse_PgPacketWriteData Fail!!\n"); PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pTargetPkt->offset, badworden, pTargetPkt->data, bPseudoTest); - if(!PgWriteSuccess) + if (!PgWriteSuccess) return _FALSE; else return _TRUE; @@ -3597,7 +3431,6 @@ efuse_PgPacketWriteData( return bRet; } - int hal_EfusePgPacketWrite_8814A(IN PADAPTER pAdapter, IN u8 offset, @@ -3612,8 +3445,7 @@ hal_EfusePgPacketWrite_8814A(IN PADAPTER pAdapter, RTW_INFO("===> efuse_PgPacketWrite[%s], offset: 0x%X\n", (efuseType == EFUSE_WIFI) ? "WIFI" : "BT", offset); //4 [1] Check if the remaining space is available to write. - if(!efuse_PgPacketCheck(pAdapter, efuseType, bPseudoTest)) - { + if (!efuse_PgPacketCheck(pAdapter, efuseType, bPseudoTest)) { pAdapter->LastError = ERR_WRITE_PROTECT; RTW_INFO("efuse_PgPacketCheck(), fail!!\n"); return _FALSE; @@ -3624,24 +3456,21 @@ hal_EfusePgPacketWrite_8814A(IN PADAPTER pAdapter, //4 [3] Fix headers without data or fix bad headers, and then return the address where to get started. - if(!efuse_PgPacketPartialWrite(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) - { + if (!efuse_PgPacketPartialWrite(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) { pAdapter->LastError = ERR_INVALID_DATA; RTW_INFO("efuse_PgPacketPartialWrite(), fail!!\n"); return _FALSE; } //4 [4] Write the (extension) header. - if(!efuse_PgPacketWriteHeader(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) - { + if (!efuse_PgPacketWriteHeader(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) { pAdapter->LastError = ERR_IO_FAILURE; RTW_INFO("efuse_PgPacketWriteHeader(), fail!!\n"); return _FALSE; } //4 [5] Write the data. - if(!efuse_PgPacketWriteData(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) - { + if(!efuse_PgPacketWriteData(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) { pAdapter->LastError = ERR_IO_FAILURE; RTW_INFO("efuse_PgPacketWriteData(), fail!!\n"); return _FALSE; @@ -3762,11 +3591,9 @@ void InitPGData8814A(PADAPTER padapter) u16 val16; PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter); - if (_FALSE == pHalData->bautoload_fail_flag) - { + if (_FALSE == pHalData->bautoload_fail_flag) { // autoload OK. - if (is_boot_from_eeprom(padapter)) - { + if (is_boot_from_eeprom(padapter)) { // Read all Content from EEPROM or EFUSE. //for (i = 0; i < HWSET_MAX_SIZE_JAGUAR; i += 2) { @@ -3896,8 +3723,7 @@ void UpdateHalRAMask8814A(PADAPTER padapter, struct sta_info *psta, u32 mac_id, mask &= rate_bitmap; #ifdef CONFIG_BT_COEXIST - if (pHalData->EEPROMBluetoothCoexist == 1) - { + if (pHalData->EEPROMBluetoothCoexist == 1) { rate_bitmap = rtw_btcoex_GetRaMask(padapter); mask &= ~rate_bitmap; } @@ -3976,8 +3802,7 @@ _InitBeaconParameters_8814A( val8 = DIS_TSF_UDT; val16 = val8 | (val8 << 8); // port0 and port1 #ifdef CONFIG_BT_COEXIST - if (pHalData->EEPROMBluetoothCoexist == 1) - { + if (pHalData->EEPROMBluetoothCoexist == 1) { // Enable prot0 beacon function for PSTDMA val16 |= EN_BCN_FUNCTION; } @@ -4036,7 +3861,7 @@ void SetBeaconRelatedRegisters8814A(PADAPTER padapter) //BCN interval #ifdef CONFIG_CONCURRENT_MODE - if (padapter->iface_type == IFACE_PORT1){ + if (padapter->iface_type == IFACE_PORT1) { bcn_ctrl_reg = REG_BCN_CTRL_1; } #endif @@ -4104,12 +3929,10 @@ SetBeamformingCLK_8812( #endif // Wait TXFF empty - for(Count = 0; Count < 100; Count++) - { + for (Count = 0; Count < 100; Count++){ u2btmp = rtw_read16(Adapter, REG_TXPKT_EMPTY); u2btmp = u2btmp & 0xfff; - if(u2btmp != 0xfff) - { + if (u2btmp != 0xfff) { rtw_mdelay_os(10); continue; } @@ -4123,8 +3946,7 @@ SetBeamformingCLK_8812( rtw_write8(Adapter, REG_TXPAUSE, 0xFF); // Wait TX State Machine OK - for(Count = 0; Count < 100; Count++) - { + for (Count = 0; Count < 100; Count++) { if (rtw_read32(Adapter, REG_SCH_TXCMD_8812A) != 0) continue; else @@ -4137,10 +3959,9 @@ SetBeamformingCLK_8812( u1btmp = rtw_read8(Adapter, REG_RXDMA_CONTROL_8812A); rtw_write8(Adapter, REG_RXDMA_CONTROL_8812A, u1btmp | BIT2); - for(Count = 0; Count < 100; Count++) - { + for (Count = 0; Count < 100; Count++) { u1btmp = rtw_read8(Adapter, REG_RXDMA_CONTROL_8812A); - if(u1btmp & BIT1) + if (u1btmp & BIT1) break; else rtw_mdelay_os(10); @@ -4183,12 +4004,12 @@ SetBeamformRfMode_8812( BeamformCap = beamforming_get_beamform_cap(pBeamInfo); - if(BeamformCap == pBeamInfo->beamforming_cap) + if (BeamformCap == pBeamInfo->beamforming_cap) return; else pBeamInfo->beamforming_cap = BeamformCap; - if(GET_RF_TYPE(Adapter) == RF_1T1R) + if (GET_RF_TYPE(Adapter) == RF_1T1R) return; bSelfBeamformer = BeamformCap & BEAMFORMER_CAP; @@ -4197,8 +4018,7 @@ SetBeamformRfMode_8812( PHY_SetRFReg(Adapter, ODM_RF_PATH_A, RF_WeLut_Jaguar, 0x80000,0x1); // RF Mode table write enable PHY_SetRFReg(Adapter, ODM_RF_PATH_B, RF_WeLut_Jaguar, 0x80000,0x1); // RF Mode table write enable - if(bSelfBeamformer) - { + if (bSelfBeamformer) { // Paath_A PHY_SetRFReg(Adapter, ODM_RF_PATH_A, RF_ModeTableAddr, 0x78000,0x3); // Select RX mode PHY_SetRFReg(Adapter, ODM_RF_PATH_A, RF_ModeTableData0, 0xfffff,0x3F7FF); // Set Table data @@ -4221,7 +4041,7 @@ SetBeamformRfMode_8812( PHY_SetRFReg(Adapter, ODM_RF_PATH_A, RF_WeLut_Jaguar, 0x80000,0x0); // RF Mode table write disable PHY_SetRFReg(Adapter, ODM_RF_PATH_B, RF_WeLut_Jaguar, 0x80000,0x0); // RF Mode table write disable - if(bSelfBeamformer) + if (bSelfBeamformer) PHY_SetBBReg(Adapter, rTxPath_Jaguar, bMaskByte1, 0x33); else PHY_SetBBReg(Adapter, rTxPath_Jaguar, bMaskByte1, 0x11); @@ -4252,16 +4072,13 @@ SetBeamformEnter_8812( rtw_write8(Adapter, REG_SND_PTCL_CTRL_8812A, 0xCB); // MAC addresss/Partial AID of Beamformer - if(Idx == 0) - { - for(i = 0; i < 6 ; i++) + if (Idx == 0) { + for (i = 0; i < 6 ; i++) rtw_write8(Adapter, (REG_BFMER0_INFO_8812A+i), BeamformEntry.mac_addr[i]); /* CSI report use legacy ofdm so don't need to fill P_AID.*/ /*rtw_write16(Adapter, REG_BFMER0_INFO_8812A+6, BeamformEntry.P_AID);*/ - } - else - { - for(i = 0; i < 6 ; i++) + } else { + for (i = 0; i < 6 ; i++) rtw_write8(Adapter, (REG_BFMER1_INFO_8812A+i), BeamformEntry.mac_addr[i]); /* CSI report use legacy ofdm so don't need to fill P_AID.*/ /*rtw_write16(Adapter, REG_BFMER1_INFO_8812A+6, BeamformEntry.P_AID);*/ @@ -4271,18 +4088,18 @@ SetBeamformEnter_8812( if( (BeamformEntry.beamforming_entry_cap & BEAMFORMEE_CAP_VHT_SU) || (BeamformEntry.beamforming_entry_cap & BEAMFORMER_CAP_VHT_SU) ) { - if(pHalData->rf_type == RF_2T2R) + if (pHalData->rf_type == RF_2T2R) CSI_Param = 0x01090109; else CSI_Param = 0x01080108; } else { - if(pHalData->rf_type == RF_2T2R) + if (pHalData->rf_type == RF_2T2R) CSI_Param = 0x03090309; else CSI_Param = 0x03080308; } - if(pHalData->rf_type == RF_2T2R) + if (pHalData->rf_type == RF_2T2R) rtw_write32(Adapter, 0x9B4, 0x00000000); // Nc =2 else rtw_write32(Adapter, 0x9B4, 0x01081008); // Nc =1 @@ -4292,8 +4109,7 @@ SetBeamformEnter_8812( rtw_write32(Adapter, REG_CSI_RPT_PARAM_BW80_8812A, CSI_Param); // P_AID of Beamformee & enable NDPA transmission & enable NDPA interrupt - if(Idx == 0) - { + if (Idx == 0) { rtw_write16(Adapter, REG_TXBF_CTRL_8812A, STAid); rtw_write8(Adapter, REG_TXBF_CTRL_8812A+3, rtw_read8(Adapter, REG_TXBF_CTRL_8812A+3)|BIT4|BIT6|BIT7); } else { @@ -4301,7 +4117,7 @@ SetBeamformEnter_8812( } // CSI report parameters of Beamformee - if(Idx == 0) + if (Idx == 0) { // Get BIT24 & BIT25 u8 tmp = rtw_read8(Adapter, REG_BFMEE_SEL_8812A+3) & 0x3; @@ -4333,11 +4149,10 @@ SetBeamformLeave_8812( * Clear MAC addresss of Beamformer * Clear Associated Bfmee Sel */ - if(pBeamInfo->beamforming_cap == BEAMFORMING_CAP_NONE) + if (pBeamInfo->beamforming_cap == BEAMFORMING_CAP_NONE) rtw_write8(Adapter, REG_SND_PTCL_CTRL_8812A, 0xC8); - if(Idx == 0) - { + if (Idx == 0) { rtw_write16(Adapter, REG_TXBF_CTRL_8812A, 0); rtw_write32(Adapter, REG_BFMER0_INFO_8812A, 0); @@ -4371,7 +4186,7 @@ SetBeamformStatus_8812( else BeamCtrlVal = BeamformEntry.p_aid; - if(Idx == 0) + if (Idx == 0) BeamCtrlReg = REG_TXBF_CTRL_8812A; else { @@ -4379,13 +4194,13 @@ SetBeamformStatus_8812( BeamCtrlVal |= BIT12 | BIT14|BIT15; } - if(BeamformEntry.beamforming_entry_state == BEAMFORMING_ENTRY_STATE_PROGRESSED) + if (BeamformEntry.beamforming_entry_state == BEAMFORMING_ENTRY_STATE_PROGRESSED) { - if(BeamformEntry.sound_bw == CHANNEL_WIDTH_20) + if (BeamformEntry.sound_bw == CHANNEL_WIDTH_20) BeamCtrlVal |= BIT9; - else if(BeamformEntry.sound_bw == CHANNEL_WIDTH_40) + else if (BeamformEntry.sound_bw == CHANNEL_WIDTH_40) BeamCtrlVal |= BIT10; - else if(BeamformEntry.sound_bw == CHANNEL_WIDTH_80) + else if (BeamformEntry.sound_bw == CHANNEL_WIDTH_80) BeamCtrlVal |= BIT11; } else { BeamCtrlVal &= ~(BIT9|BIT10|BIT11); @@ -4408,13 +4223,10 @@ SetBeamformFwTxBFCmd_8812( struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); struct beamforming_info *pBeamInfo = GET_BEAMFORM_INFO(pmlmepriv); - for(Idx = 0; Idx < BEAMFORMING_ENTRY_NUM; Idx++) - { - if(pBeamInfo->beamforming_entry[Idx].beamforming_entry_state == BEAMFORMING_ENTRY_STATE_PROGRESSED) - { - if(Idx == 0) - { - if(pBeamInfo->beamforming_entry[Idx].bSound) + for(Idx = 0; Idx < BEAMFORMING_ENTRY_NUM; Idx++) { + if(pBeamInfo->beamforming_entry[Idx].beamforming_entry_state == BEAMFORMING_ENTRY_STATE_PROGRESSED) { + if(Idx == 0) { + if (pBeamInfo->beamforming_entry[Idx].bSound) PageNum0 = 0xFE; else PageNum0 = 0xFF; //stop sounding @@ -4422,7 +4234,7 @@ SetBeamformFwTxBFCmd_8812( } else if(Idx == 1) { - if(pBeamInfo->beamforming_entry[Idx].bSound) + if (pBeamInfo->beamforming_entry[Idx].bSound) PageNum1 = 0xFE; else PageNum1 = 0xFF; //stop sounding @@ -4456,7 +4268,7 @@ SetBeamformDownloadNDPA_8812( //pHalData->bFwDwRsvdPageInProgress = _TRUE; - if(Idx == 0) + if (Idx == 0) Head_Page = 0xFE; else Head_Page = 0xFE; @@ -4474,8 +4286,7 @@ SetBeamformDownloadNDPA_8812( tmpReg422 = rtw_read8(Adapter, REG_FWHW_TXQ_CTRL+2); rtw_write8(Adapter, REG_FWHW_TXQ_CTRL+2, tmpReg422&(~BIT6)); - if(tmpReg422&BIT6) - { + if (tmpReg422&BIT6) { RTW_INFO("SetBeamformDownloadNDPA_8812(): There is an Adapter is sending beacon.\n"); bSendBeacon = _TRUE; } @@ -4490,7 +4301,7 @@ SetBeamformDownloadNDPA_8812( rtw_write8(Adapter, REG_TDECTRL+2, (BcnValidReg|BIT0)); // download NDPA rsvd page. - if(pBeamEntry->beamforming_entry_cap & BEAMFORMER_CAP_VHT_SU) + if (pBeamEntry->beamforming_entry_cap & BEAMFORMER_CAP_VHT_SU) beamforming_send_vht_ndpa_packet(Adapter,pBeamEntry->mac_addr,pBeamEntry->aid,pBeamEntry->sound_bw, BCN_QUEUE_INX); else beamforming_send_ht_ndpa_packet(Adapter,pBeamEntry->mac_addr,pBeamEntry->sound_bw, BCN_QUEUE_INX); @@ -4498,16 +4309,15 @@ SetBeamformDownloadNDPA_8812( // check rsvd page download OK. BcnValidReg = rtw_read8(Adapter, REG_TDECTRL+2); count=0; - while(!(BcnValidReg & BIT0) && count <20) - { + while(!(BcnValidReg & BIT0) && count <20) { count++; rtw_udelay_os(10); BcnValidReg = rtw_read8(Adapter, REG_TDECTRL+2); } DLBcnCount++; - } while(!(BcnValidReg&BIT0) && DLBcnCount<5); + } while (!(BcnValidReg&BIT0) && DLBcnCount<5); - if(!(BcnValidReg&BIT0)) + if (!(BcnValidReg&BIT0)) RTW_INFO("%s Download RSVD page failed!\n", __FUNCTION__); // TDECTRL[15:8] 0x209[7:0] = 0xF6 Beacon Head for TXDMA @@ -4518,8 +4328,7 @@ SetBeamformDownloadNDPA_8812( // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause // the beacon cannot be sent by HW. // 2010.06.23. Added by tynli. - if(bSendBeacon) - { + if (bSendBeacon) { rtw_write8(Adapter, REG_FWHW_TXQ_CTRL+2, tmpReg422); } @@ -4655,10 +4464,8 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) RTW_INFO("%s()-%d mode = %d\n", __FUNCTION__, __LINE__, mode); - if((mode == _HW_STATE_STATION_) || (mode == _HW_STATE_NOLINK_)) - { - if(!check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) - { + if((mode == _HW_STATE_STATION_) || (mode == _HW_STATE_NOLINK_)) { + if(!check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) { StopTxBeacon(Adapter); #ifdef CONFIG_PCI_HCI UpdateInterruptMask8814AE(Adapter, 0, 0, RT_BCN_INT_MASKS, 0); @@ -4893,8 +4700,7 @@ static void hw_var_set_macaddr(PADAPTER Adapter, u8 variable, u8* val) u32 reg_macid; #ifdef CONFIG_CONCURRENT_MODE - if(Adapter->iface_type == IFACE_PORT1) - { + if (Adapter->iface_type == IFACE_PORT1) { reg_macid = REG_MACID1; } else @@ -4903,8 +4709,7 @@ static void hw_var_set_macaddr(PADAPTER Adapter, u8 variable, u8* val) reg_macid = REG_MACID; } - for(idx = 0 ; idx < 6; idx++) - { + for (idx = 0 ; idx < 6; idx++) { rtw_write8(GET_PRIMARY_ADAPTER(Adapter), (reg_macid+idx), val[idx]); } @@ -4916,8 +4721,7 @@ static void hw_var_set_bssid(PADAPTER Adapter, u8 variable, u8* val) u32 reg_bssid; #ifdef CONFIG_CONCURRENT_MODE - if(Adapter->iface_type == IFACE_PORT1) - { + if (Adapter->iface_type == IFACE_PORT1) { reg_bssid = REG_BSSID1; } else @@ -4926,8 +4730,7 @@ static void hw_var_set_bssid(PADAPTER Adapter, u8 variable, u8* val) reg_bssid = REG_BSSID; } - for(idx = 0 ; idx < 6; idx++) - { + for (idx = 0 ; idx < 6; idx++) { rtw_write8(Adapter, (reg_bssid+idx), val[idx]); } @@ -4938,8 +4741,7 @@ static void hw_var_set_bcn_func(PADAPTER Adapter, u8 variable, u8* val) u32 bcn_ctrl_reg; u8 val8; #ifdef CONFIG_CONCURRENT_MODE - if(Adapter->iface_type == IFACE_PORT1) - { + if(Adapter->iface_type == IFACE_PORT1) { bcn_ctrl_reg = REG_BCN_CTRL_1; } else @@ -4948,8 +4750,7 @@ static void hw_var_set_bcn_func(PADAPTER Adapter, u8 variable, u8* val) bcn_ctrl_reg = REG_BCN_CTRL; } - if(*((u8 *)val)) - { + if(*((u8 *)val)) { rtw_write8(Adapter, bcn_ctrl_reg, (EN_BCN_FUNCTION | EN_TXBCN_RPT)); } else { @@ -4958,8 +4759,7 @@ static void hw_var_set_bcn_func(PADAPTER Adapter, u8 variable, u8* val) val8 &= ~(EN_BCN_FUNCTION | EN_TXBCN_RPT); #ifdef CONFIG_BT_COEXIST - if (GET_HAL_DATA(Adapter)->EEPROMBluetoothCoexist == 1) - { + if (GET_HAL_DATA(Adapter)->EEPROMBluetoothCoexist == 1) { // Always enable port0 beacon function for PSTDMA if (REG_BCN_CTRL == bcn_ctrl_reg) val8 |= EN_BCN_FUNCTION; @@ -4983,22 +4783,19 @@ static void hw_var_set_correct_tsf(PADAPTER Adapter, u8 variable, u8* val) //tsf = pmlmeext->TSFValue - ((u32)pmlmeext->TSFValue % (pmlmeinfo->bcn_interval*1024)) -1024; //us tsf = pmlmeext->TSFValue - rtw_modular64(pmlmeext->TSFValue, (pmlmeinfo->bcn_interval*1024)) -1024; //us - if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) - { + if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) { //pHalData->RegTxPause |= STOP_BCNQ;BIT(6) //rtw_write8(Adapter, REG_TXPAUSE, (rtw_read8(Adapter, REG_TXPAUSE)|BIT(6))); StopTxBeacon(Adapter); } - if(Adapter->iface_type == IFACE_PORT1) - { + if(Adapter->iface_type == IFACE_PORT1) { //disable related TSF function rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)&(~BIT(3))); rtw_write32(Adapter, REG_TSFTR1, tsf); rtw_write32(Adapter, REG_TSFTR1+4, tsf>>32); - //enable related TSF function rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(3)); @@ -5055,8 +4852,7 @@ static void hw_var_set_correct_tsf(PADAPTER Adapter, u8 variable, u8* val) } - if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) - { + if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) { //pHalData->RegTxPause &= (~STOP_BCNQ); //rtw_write8(Adapter, REG_TXPAUSE, (rtw_read8(Adapter, REG_TXPAUSE)&(~BIT(6)))); ResumeTxBeacon(Adapter); @@ -5072,8 +4868,7 @@ static void hw_var_set_mlme_disconnect(PADAPTER Adapter, u8 variable, u8* val) if(check_buddy_mlmeinfo_state(Adapter, _HW_STATE_NOLINK_)) rtw_write16(Adapter, REG_RXFLTMAP2, 0x00); - if(Adapter->iface_type == IFACE_PORT1) - { + if(Adapter->iface_type == IFACE_PORT1) { //reset TSF1 rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(1)); @@ -5138,16 +4933,14 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER Adapter, u8 variable, u8* val) } #ifdef CONFIG_TDLS // TDLS will clear RCR_CBSSID_DATA bit for connection. - else if (Adapter->tdlsinfo.link_established == _TRUE) - { + else if (Adapter->tdlsinfo.link_established == _TRUE) { rcr_clear_bit = RCR_CBSSID_BCN; } #endif // CONFIG_TDLS value_rcr = rtw_read32(Adapter, REG_RCR); - if(*((u8 *)val))//under sitesurvey - { + if (*((u8 *)val)) { //under sitesurvey value_rcr &= ~(rcr_clear_bit); rtw_write32(Adapter, REG_RCR, value_rcr); @@ -5163,9 +4956,7 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER Adapter, u8 variable, u8* val) if (ap_num) StopTxBeacon(Adapter); - } - else//sitesurvey done - { + } else { //sitesurvey done if(check_fwstate(pmlmepriv, (_FW_LINKED|WIFI_AP_STATE)) #ifdef CONFIG_CONCURRENT_MODE || check_buddy_fwstate(Adapter, (_FW_LINKED|WIFI_AP_STATE)) @@ -5220,9 +5011,8 @@ static void hw_var_set_mlme_join(PADAPTER Adapter, u8 variable, u8* val) HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; - if(type == 0) // prepare to join - { - if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && + if (type == 0) { // prepare to join + if (check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && check_buddy_fwstate(Adapter, _FW_LINKED)) { StopTxBeacon(Adapter); @@ -5232,28 +5022,23 @@ static void hw_var_set_mlme_join(PADAPTER Adapter, u8 variable, u8* val) //rtw_write32(padapter, REG_RCR, rtw_read32(padapter, REG_RCR)|RCR_ADF); rtw_write16(Adapter, REG_RXFLTMAP2,0xFFFF); - if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) - { + if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) { rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)|RCR_CBSSID_BCN); } else { rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)|RCR_CBSSID_DATA|RCR_CBSSID_BCN); } - if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) - { + if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) { RetryLimit = (pHalData->CustomerID == RT_CID_CCX) ? 7 : 48; - } - else // Ad-hoc Mode - { + } else { // Ad-hoc Mode RetryLimit = 0x7; } } - else if(type == 1) //joinbss_event call back when join res < 0 - { - if(check_buddy_mlmeinfo_state(Adapter, _HW_STATE_NOLINK_)) + else if (type == 1) { //joinbss_event call back when join res < 0 + if (check_buddy_mlmeinfo_state(Adapter, _HW_STATE_NOLINK_)) rtw_write16(Adapter, REG_RXFLTMAP2,0x00); - if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && + if (check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && check_buddy_fwstate(Adapter, _FW_LINKED)) { ResumeTxBeacon(Adapter); @@ -5263,24 +5048,21 @@ static void hw_var_set_mlme_join(PADAPTER Adapter, u8 variable, u8* val) } } - else if(type == 2) //sta add event call back - { + else if (type == 2) { //sta add event call back //enable update TSF - if(Adapter->iface_type == IFACE_PORT1) + if (Adapter->iface_type == IFACE_PORT1) rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)&(~BIT(4))); else rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)&(~BIT(4))); - if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE)) - { + if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE)) { //fixed beacon issue for 8191su........... rtw_write8(Adapter,0x542 ,0x02); RetryLimit = 0x7; } - - if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && + if (check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && check_buddy_fwstate(Adapter, _FW_LINKED)) { ResumeTxBeacon(Adapter); @@ -5426,13 +5208,10 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) input_b = BrateCfg; /* apply force and allow mask */ - if(pHalData->CurrentBandType == BAND_ON_2_4G) - { + if(pHalData->CurrentBandType == BAND_ON_2_4G) { BrateCfg |= rrsr_2g_force_mask; BrateCfg &= rrsr_2g_allow_mask; - } - else // 5G - { + } else { // 5G BrateCfg |= rrsr_5g_force_mask; BrateCfg &= rrsr_5g_allow_mask; } @@ -5476,8 +5255,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) //tsf = pmlmeext->TSFValue - ((u32)pmlmeext->TSFValue % (pmlmeinfo->bcn_interval*1024)) -1024; //us tsf = pmlmeext->TSFValue - rtw_modular64(pmlmeext->TSFValue, (pmlmeinfo->bcn_interval*1024)) -1024; //us - if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) - { + if (((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) { //pHalData->RegTxPause |= STOP_BCNQ;BIT(6) //rtw_write8(padapter, REG_TXPAUSE, (rtw_read8(padapter, REG_TXPAUSE)|BIT(6))); StopTxBeacon(padapter); @@ -5493,8 +5271,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) //enable related TSF function rtw_write8(padapter, REG_BCN_CTRL, rtw_read8(padapter, REG_BCN_CTRL)|BIT(3)); - if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) - { + if (((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) { //pHalData->RegTxPause &= (~STOP_BCNQ); //rtw_write8(padapter, REG_TXPAUSE, (rtw_read8(padapter, REG_TXPAUSE)&(~BIT(6)))); ResumeTxBeacon(padapter); @@ -5555,8 +5332,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) u8 type = *(u8*)pval; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; - if (type == 0) // prepare to join - { + if (type == 0) { // prepare to join //enable to rx data frame.Accept all data frame //rtw_write32(padapter, REG_RCR, rtw_read32(padapter, REG_RCR)|RCR_ADF); rtw_write16(padapter, REG_RXFLTMAP2, 0xFFFF); @@ -5568,12 +5344,9 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) val32 |= RCR_CBSSID_DATA|RCR_CBSSID_BCN; rtw_write32(padapter, REG_RCR, val32); - if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) - { + if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) { RetryLimit = (pHalData->CustomerID == RT_CID_CCX) ? 7 : 48; - } - else // Ad-hoc Mode - { + } else { // Ad-hoc Mode RetryLimit = 0x7; } } @@ -5588,8 +5361,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) val8 &= ~BIT(4); rtw_write8(padapter, REG_BCN_CTRL, val8); - if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE)) - { + if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE)) { RetryLimit = 0x7; } } @@ -5600,8 +5372,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) #endif // !CONFIG_CONCURRENT_MODE #ifdef CONFIG_BT_COEXIST - if (_TRUE == pHalData->EEPROMBluetoothCoexist) - { + if (_TRUE == pHalData->EEPROMBluetoothCoexist) { switch (*pval) { case 0: @@ -5614,7 +5385,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) break; case 2: // sta add event callback - // rtw_btcoex_MediaStatusNotify(padapter, RT_MEDIA_CONNECT); + // rtw_btcoex_MediaStatusNotify(padapter, RT_MEDIA_CONNECT); break; } } @@ -5647,10 +5418,9 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) pmlmeinfo = &pmlmeext->mlmext_info; bcn_interval = *((u16*)pval); - if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) - { + if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) { RTW_INFO("%s==> bcn_interval:%d, eraly_int:%d\n", __FUNCTION__, bcn_interval, bcn_interval>>1); - rtw_write8(padapter, REG_DRVERLYINT, bcn_interval>>1);// 50ms for sdio + rtw_write8(padapter, REG_DRVERLYINT, bcn_interval>>1); // 50ms for sdio } } #endif // CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT @@ -5690,11 +5460,9 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) u32 ulContent = 0; u32 ulEncAlgo = CAM_AES; - for (i=0; i HW_VAR_ANTENNA_DIVERSITY_SELECT , Ant_(%s)\n",(Optimum_antenna==2)?"A":"B"); - if (pHalData->CurAntenna != Optimum_antenna) - { + if (pHalData->CurAntenna != Optimum_antenna) { Ant = (Optimum_antenna==2) ? MAIN_ANT : AUX_ANT; ODM_UpdateRxIdleAnt(podmpriv, Ant); @@ -5867,8 +5634,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) // keep sn rtw_store_all_sta_hwseq(padapter); - if (pwrpriv->bkeepfwalive != _TRUE) - { + if (pwrpriv->bkeepfwalive != _TRUE) { // RX DMA stop val32 = rtw_read32(padapter, REG_RXPKT_NUM); val32 |= RW_RELEASE_EN; @@ -5879,8 +5645,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) if (val32) break; } while (--trycnt); - if (trycnt == 0) - { + if (trycnt == 0) { RTW_INFO("[HW_VAR_FIFO_CLEARN_UP] Stop RX DMA failed......\n"); } @@ -5971,8 +5736,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) { u32 usNavUpper = *((u32*)pval); - if (usNavUpper > HAL_NAV_UPPER_UNIT * 0xFF) - { + if (usNavUpper > HAL_NAV_UPPER_UNIT * 0xFF) { RTW_INFO("%s: [HW_VAR_NAV_UPPER] set value(0x%08X us) is larger than (%d * 0xFF)!\n", __FUNCTION__, usNavUpper, HAL_NAV_UPPER_UNIT); break; @@ -5987,8 +5751,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) case HW_VAR_BCN_VALID: #ifdef CONFIG_CONCURRENT_MODE - if (padapter->iface_type == IFACE_PORT1) - { + if (padapter->iface_type == IFACE_PORT1) { /* BCN_VALID, BIT31 of REG_FIFOPAGE_CTRL_2_8814A, write 1 to clear, Clear by sw */ val8 = rtw_read8(padapter, REG_FIFOPAGE_CTRL_2_8814A+3); val8 |= BIT(7); @@ -6007,8 +5770,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) case HW_VAR_DL_BCN_SEL: #if 0 /* for MBSSID, so far we don't need this */ #ifdef CONFIG_CONCURRENT_MODE - if (IS_HARDWARE_TYPE_8821(padapter) && padapter->iface_type == IFACE_PORT1) - { + if (IS_HARDWARE_TYPE_8821(padapter) && padapter->iface_type == IFACE_PORT1) { // SW_BCN_SEL - Port1 val8 = rtw_read8(padapter, REG_AUTO_LLT_8814A); val8 |= BIT(2); @@ -6078,10 +5840,8 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) break; case HW_VAR_DL_RSVD_PAGE: #ifdef CONFIG_BT_COEXIST - if (pHalData->EEPROMBluetoothCoexist == 1) - { - if (check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE) == _TRUE) - { + if (pHalData->EEPROMBluetoothCoexist == 1) { + if (check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE) == _TRUE) { rtl8814a_download_BTCoex_AP_mode_rsvd_page(padapter); } } @@ -6319,8 +6079,7 @@ void GetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) case HW_VAR_BCN_VALID: #ifdef CONFIG_CONCURRENT_MODE - if (padapter->iface_type == IFACE_PORT1) - { + if (padapter->iface_type == IFACE_PORT1) { /* BCN_VALID, BIT31 of REG_FIFOPAGE_CTRL_2_8814A, write 1 to clear */ val8 = rtw_read8(padapter, REG_FIFOPAGE_CTRL_2_8814A+3); *pval = (BIT(7) & val8) ? _TRUE:_FALSE; @@ -6336,14 +6095,11 @@ void GetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) case HW_VAR_FWLPS_RF_ON: //When we halt NIC, we should check if FW LPS is leave. - if(adapter_to_pwrctl(padapter)->rf_pwrstate == rf_off) - { + if(adapter_to_pwrctl(padapter)->rf_pwrstate == rf_off) { // If it is in HW/SW Radio OFF or IPS state, we do not check Fw LPS Leave, // because Fw is unload. *pval = _TRUE; - } - else - { + } else { u32 valRCR; valRCR = rtw_read32(padapter, REG_RCR); valRCR &= 0x00070000; @@ -6548,8 +6304,7 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) break; case HAL_DEF_TX_PAGE_BOUNDARY: - if (!padapter->registrypriv.wifi_spec) - { + if (!padapter->registrypriv.wifi_spec) { *(u16*)pval = TX_PAGE_BOUNDARY_8814A; } else { *(u16*)pval = WMM_NORMAL_TX_PAGE_BOUNDARY_8814A; @@ -6618,8 +6373,7 @@ void rtl8812a_combo_card_WifiOnlyHwInit(PADAPTER pdapter) { u8 u1Tmp; RTW_INFO("%s !\n", __FUNCTION__); - if(IS_HARDWARE_TYPE_8812(pdapter)) - { + if(IS_HARDWARE_TYPE_8812(pdapter)) { //0x790[5:0]=0x5 u1Tmp = rtw_read8(pdapter,0x790); u1Tmp = (u1Tmp & 0xb0) | 0x05 ; From 53ebbdd11aa799e178b2b90818f0e0f9c3dddb6b Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 20 Dec 2017 08:04:30 +0100 Subject: [PATCH 170/234] Code cleanup --- hal/rtl8814a/rtl8814a_cmd.c | 304 +++++++++++++++--------------------- 1 file changed, 125 insertions(+), 179 deletions(-) diff --git a/hal/rtl8814a/rtl8814a_cmd.c b/hal/rtl8814a/rtl8814a_cmd.c index ef9e01fea..48c8d9b57 100644 --- a/hal/rtl8814a/rtl8814a_cmd.c +++ b/hal/rtl8814a/rtl8814a_cmd.c @@ -39,14 +39,14 @@ static u8 _is_fw_read_cmd_down(_adapter* padapter, u8 msgbox_num) //RTW_INFO(" _is_fw_read_cmd_down ,reg_1cc(%x),msg_box(%d)...\n",rtw_read8(padapter,REG_HMETFR),msgbox_num); - do{ + do { valid = rtw_read8(padapter,REG_HMETFR) & BIT(msgbox_num); - if(0 == valid ){ + if (0 == valid ){ read_down = _TRUE; } else rtw_msleep_os(1); - }while( (!read_down) && (retry_cnts--)); + } while( (!read_down) && (retry_cnts--)); return read_down; @@ -74,12 +74,11 @@ s32 FillH2CCmd_8814(PADAPTER padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer) u32 h2c_cmd_ex = 0; s32 ret = _FAIL; - padapter = GET_PRIMARY_ADAPTER(padapter); + padapter = GET_PRIMARY_ADAPTER(padapter); pHalData = GET_HAL_DATA(padapter); - - if(padapter->bFWReady == _FALSE) - { + + if(padapter->bFWReady == _FALSE) { //RTW_INFO("FillH2CCmd_8814(): return H2C cmd because fw is not ready\n"); return ret; } @@ -97,29 +96,28 @@ s32 FillH2CCmd_8814(PADAPTER padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer) goto exit; //pay attention to if race condition happened in H2C cmd setting. - do{ + do { h2c_box_num = pHalData->LastHMEBoxNum; - if(!_is_fw_read_cmd_down(padapter, h2c_box_num)){ + if (!_is_fw_read_cmd_down(padapter, h2c_box_num)){ RTW_INFO(" fw read cmd failed...\n"); goto exit; } *(u8*)(&h2c_cmd) = ElementID; - if(CmdLen<=3) - { + if(CmdLen<=3) { _rtw_memcpy((u8*)(&h2c_cmd)+1, pCmdBuffer, CmdLen ); } - else{ + else { _rtw_memcpy((u8*)(&h2c_cmd)+1, pCmdBuffer,3); - ext_cmd_len = CmdLen-3; + ext_cmd_len = CmdLen-3; _rtw_memcpy((u8*)(&h2c_cmd_ex), pCmdBuffer+3,ext_cmd_len ); //Write Ext command msgbox_ex_addr = REG_HMEBOX_EXT0_8814A + (h2c_box_num *RTL8814_EX_MESSAGE_BOX_SIZE); #ifdef CONFIG_H2C_EF - for(cmd_idx=0;cmd_idxLastHMEBoxNum ,CmdLen,msgbox_addr,h2c_cmd,msgbox_ex_addr,h2c_cmd_ex); pHalData->LastHMEBoxNum = (h2c_box_num+1) % RTL8814_MAX_H2C_BOX_NUMS; - - }while(0); + + } while(0); ret = _SUCCESS; exit: - _exit_critical_mutex(&(adapter_to_dvobj(padapter)->h2c_fwcmd_mutex), NULL); + _exit_critical_mutex(&(adapter_to_dvobj(padapter)->h2c_fwcmd_mutex), NULL); return ret; } @@ -170,7 +168,7 @@ void rtl8814_fw_update_beacon_cmd(_adapter *padapter) { u8 param[2] = {0}; u16 txpktbuf_bndy; - + SET_8814A_H2CCMD_BCNHWSEQ_EN(param, 1); SET_8814A_H2CCMD_BCNHWSEQ_BCN_NUMBER(param, 0); SET_8814A_H2CCMD_BCNHWSEQ_HWSEQ(param, 1); @@ -181,7 +179,7 @@ void rtl8814_fw_update_beacon_cmd(_adapter *padapter) FillH2CCmd_8814(padapter, 0xC2, 2, param); else FillH2CCmd_8814(padapter, H2C_BCNHWSEQ, 2, param); - + /*RTW_INFO("%s, %d, correct beacon HW sequence, FirmwareVersion=%d, H2C_BCNHWSEQ=%d\n", __func__, __LINE__, GET_HAL_DATA(padapter)->FirmwareVersion, H2C_BCNHWSEQ);*/ } @@ -194,29 +192,27 @@ u8 Get_VHT_ENI( { u8 Ret = 0; - if(WirelessMode == WIRELESS_11_24AC) - { - if(ratr_bitmap & 0xfff00000) // Mix , 2SS + if (WirelessMode == WIRELESS_11_24AC) { + if (ratr_bitmap & 0xfff00000) // Mix , 2SS Ret = 3; else // Mix, 1SS Ret = 2; } - else if(WirelessMode == WIRELESS_11_5AC) - { + else if (WirelessMode == WIRELESS_11_5AC) { Ret = 1; // VHT } return (Ret << 4); } -BOOLEAN -Get_RA_ShortGI_8814( +BOOLEAN +Get_RA_ShortGI_8814( PADAPTER Adapter, struct sta_info *psta, u8 shortGIrate, u32 ratr_bitmap ) -{ +{ BOOLEAN bShortGI; struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); @@ -224,13 +220,13 @@ Get_RA_ShortGI_8814( bShortGI = shortGIrate; #ifdef CONFIG_80211AC_VHT - if( bShortGI && + if ( bShortGI && IsSupportedVHT(psta->wireless_mode) && (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK_JAGUAR_CCUTAP) && TEST_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_ENABLE_TX) ) { - if(ratr_bitmap & 0xC0000000) + if (ratr_bitmap & 0xC0000000) bShortGI = _FALSE; } #endif //CONFIG_80211AC_VHT @@ -245,19 +241,17 @@ Set_RA_LDPC_8814( BOOLEAN bLDPC ) { - if(psta == NULL) + if (psta == NULL) return; #ifdef CONFIG_80211AC_VHT - if(psta->wireless_mode == WIRELESS_11_5AC) - { - if(bLDPC && TEST_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_CAP_TX)) + if (psta->wireless_mode == WIRELESS_11_5AC) { + if (bLDPC && TEST_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_CAP_TX)) SET_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_ENABLE_TX); else CLEAR_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_ENABLE_TX); } - else if(IsSupportedHT(psta->wireless_mode) || IsSupportedVHT(psta->wireless_mode)) - { - if(bLDPC && TEST_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_CAP_TX)) + else if(IsSupportedHT(psta->wireless_mode) || IsSupportedVHT(psta->wireless_mode)) { + if (bLDPC && TEST_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_CAP_TX)) SET_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_ENABLE_TX); else CLEAR_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_ENABLE_TX); @@ -270,33 +264,31 @@ Set_RA_LDPC_8814( } -u8 +u8 Get_RA_LDPC_8814( struct sta_info *psta ) -{ +{ u8 bLDPC = 0; if (psta != NULL) { - if(psta->mac_id == 1) { + if (psta->mac_id == 1) { bLDPC = 0; } else { #ifdef CONFIG_80211AC_VHT - if(IsSupportedVHT(psta->wireless_mode)) + if (IsSupportedVHT(psta->wireless_mode)) { - if(TEST_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_CAP_TX)) + if (TEST_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_CAP_TX)) bLDPC = 1; else bLDPC = 0; - } - else if(IsSupportedHT(psta->wireless_mode)) - { - if(TEST_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_CAP_TX)) + } + else if (IsSupportedHT(psta->wireless_mode)) { + if (TEST_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_CAP_TX)) bLDPC =1; else bLDPC =0; - } - else + } else #endif bLDPC = 0; } @@ -326,29 +318,27 @@ void rtl8814_set_raid_cmd(PADAPTER padapter, u64 bitmap, u8* arg, u8 bw) } - if(pHalData->fw_ractrl == _TRUE) - { + if (pHalData->fw_ractrl == _TRUE) { u8 H2CCommand[7] ={0}; shortGIrate = Get_RA_ShortGI_8814(padapter, psta, shortGIrate, bitmap); - + H2CCommand[0] = macid; H2CCommand[1] = (raid & 0x1F) | (shortGIrate?0x80:0x00) ; H2CCommand[2] = (psta->bw_mode & 0x3) |Get_RA_LDPC_8814(psta) |Get_VHT_ENI(0, psta->wireless_mode, bitmap); //DisableTXPowerTraining - if(pHalData->bDisableTXPowerTraining){ + if (pHalData->bDisableTXPowerTraining) { H2CCommand[2] |= BIT6; RTW_INFO("%s,Disable PWT by driver\n",__FUNCTION__); - } - else{ + } else { PDM_ODM_T pDM_OutSrc = &pHalData->odmpriv; - - if(pDM_OutSrc->bDisablePowerTraining){ + + if (pDM_OutSrc->bDisablePowerTraining){ H2CCommand[2] |= BIT6; RTW_INFO("%s, Disable PWT by DM\n",__FUNCTION__); } - } + } H2CCommand[3] = (u8)(bitmap & 0x000000ff); H2CCommand[4] = (u8)((bitmap & 0x0000ff00) >>8); @@ -360,11 +350,11 @@ void rtl8814_set_raid_cmd(PADAPTER padapter, u64 bitmap, u8* arg, u8 bw) FillH2CCmd_8814(padapter, H2C_MACID_CFG, 7, H2CCommand); - // For 3SS rate, extend H2C cmd + // For 3SS rate, extend H2C cmd H2CCommand[3] = (u8)((bitmap>>32) & 0x000000ff); H2CCommand[4] = (u8)(((bitmap>>32) & 0x0000ff00) >>8); FillH2CCmd_8814(padapter, H2C_RA_MASK_3SS, 5, H2CCommand); - + } if (shortGIrate==_TRUE) @@ -408,11 +398,9 @@ void rtl8814_set_FwPwrMode_cmd(PADAPTER padapter, u8 PSMode) break; } - if (Mode > PS_MODE_ACTIVE) - { + if (Mode > PS_MODE_ACTIVE) { #ifdef CONFIG_BT_COEXIST - if ((rtw_btcoex_IsBtControlLps(padapter) == _TRUE) && (_TRUE == pHalData->EEPROMBluetoothCoexist)) - { + if ((rtw_btcoex_IsBtControlLps(padapter) == _TRUE) && (_TRUE == pHalData->EEPROMBluetoothCoexist)) { PowerState = rtw_btcoex_RpwmVal(padapter); pwrModeByte5 = rtw_btcoex_LpsVal(padapter); } @@ -426,16 +414,14 @@ void rtl8814_set_FwPwrMode_cmd(PADAPTER padapter, u8 PSMode) #ifdef CONFIG_EXT_CLK Mode |= BIT(7);//supporting 26M XTAL CLK_Request feature. #endif //CONFIG_EXT_CLK - } - else - { + } else { PowerState = 0x0C;// AllON(0x0C), RFON(0x04), RFOFF(0x00) pwrModeByte5 = 0x40; } // 0: Active, 1: LPS, 2: WMMPS SET_8814A_H2CCMD_PWRMODE_PARM_MODE(u1H2CSetPwrMode, Mode); - + // 0:Min, 1:Max , 2:User define SET_8814A_H2CCMD_PWRMODE_PARM_RLBM(u1H2CSetPwrMode, RLBM); @@ -508,8 +494,7 @@ void ConstructBeacon(_adapter *padapter, u8 *pframe, u32 *pLength) pframe += 2; pktlen += 2; - if( (pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) - { + if ( (pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) { //RTW_INFO("ie len=%d\n", cur_network->IELength); pktlen += cur_network->IELength - sizeof(NDIS_802_11_FIXED_IEs); _rtw_memcpy(pframe, cur_network->IEs+sizeof(NDIS_802_11_FIXED_IEs), pktlen); @@ -529,8 +514,7 @@ void ConstructBeacon(_adapter *padapter, u8 *pframe, u32 *pLength) // DS parameter set pframe = rtw_set_ie(pframe, _DSSET_IE_, 1, (unsigned char *)&(cur_network->Configuration.DSConfig), &pktlen); - if( (pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) - { + if ( (pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) { u32 ATIMWindow; // IBSS Parameter Set... //ATIMWindow = cur->Configuration.ATIMWindow; @@ -543,8 +527,7 @@ void ConstructBeacon(_adapter *padapter, u8 *pframe, u32 *pLength) // EXTERNDED SUPPORTED RATE - if (rate_len > 8) - { + if (rate_len > 8) { pframe = rtw_set_ie(pframe, _EXT_SUPPORTEDRATES_IE_, (rate_len - 8), (cur_network->SupportedRates + 8), &pktlen); } @@ -553,8 +536,7 @@ void ConstructBeacon(_adapter *padapter, u8 *pframe, u32 *pLength) _ConstructBeacon: - if ((pktlen + TXDESC_SIZE) > 512) - { + if ((pktlen + TXDESC_SIZE) > 512) { RTW_INFO("beacon frame too large\n"); return; } @@ -620,8 +602,7 @@ void ConstructNullFunctionData( fctrl = &pwlanhdr->frame_ctl; *(fctrl) = 0; - if (bForcePowerSave) - { + if (bForcePowerSave) { SetPwrMgt(fctrl); } @@ -678,7 +659,6 @@ void ConstructProbeRsp(_adapter *padapter, u8 *pframe, u32 *pLength, u8 *StaAddr struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); - //RTW_INFO("%s\n", __FUNCTION__); pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; @@ -698,7 +678,7 @@ void ConstructProbeRsp(_adapter *padapter, u8 *pframe, u32 *pLength, u8 *StaAddr pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); pframe += pktlen; - if(cur_network->IELength>MAX_IE_SZ) + if (cur_network->IELength>MAX_IE_SZ) return; _rtw_memcpy(pframe, cur_network->IEs, cur_network->IELength); @@ -758,8 +738,7 @@ static void ConstructGTKResponse( //------------------------------------------------------------------------- // Qos Header: leave space for it if necessary. //------------------------------------------------------------------------- - if(pStaQos->CurrentQosMode > QOS_DISABLE) - { + if(pStaQos->CurrentQosMode > QOS_DISABLE) { SET_80211_HDR_QOS_EN(pGTKRspPkt, 1); PlatformZeroMemory(&(Buffer[*pLength]), sQoSCtlLng); *pLength += sQoSCtlLng; @@ -777,8 +756,8 @@ static void ConstructGTKResponse( EncryptionHeadOverhead = 4; break; case _TKIP_: - EncryptionHeadOverhead = 8; - break; + EncryptionHeadOverhead = 8; + break; case _AES_: EncryptionHeadOverhead = 8; break; @@ -790,29 +769,28 @@ static void ConstructGTKResponse( default: EncryptionHeadOverhead = 0; } - - if(EncryptionHeadOverhead > 0) - { + + if (EncryptionHeadOverhead > 0) { _rtw_memset(&(pframe[*pLength]), 0,EncryptionHeadOverhead); *pLength += EncryptionHeadOverhead; //SET_80211_HDR_WEP(pGTKRspPkt, 1); //Suggested by CCW. //GTK's privacy bit is done by FW //SetPrivacy(fctrl); - } + } #endif //1 //------------------------------------------------------------------------- // Frame Body. //------------------------------------------------------------------------- - pGTKRspPkt = (u8*)(pframe+ *pLength); + pGTKRspPkt = (u8*)(pframe+ *pLength); // LLC header - _rtw_memcpy(pGTKRspPkt, LLCHeader, 8); + _rtw_memcpy(pGTKRspPkt, LLCHeader, 8); *pLength += 8; // GTK element pGTKRspPkt += 8; - + //GTK frame body after LLC, part 1 - _rtw_memcpy(pGTKRspPkt, GTKbody_a, 11); + _rtw_memcpy(pGTKRspPkt, GTKbody_a, 11); *pLength += 11; pGTKRspPkt += 11; //GTK frame body after LLC, part 2 @@ -833,8 +811,7 @@ CheckFwRsvdPageContent( HAL_DATA_TYPE* pHalData = GET_HAL_DATA(Adapter); u32 MaxBcnPageNum; - if(pHalData->FwRsvdPageStartOffset != 0) - { + if(pHalData->FwRsvdPageStartOffset != 0) { /*MaxBcnPageNum = PageNum_128(pMgntInfo->MaxBeaconSize); RT_ASSERT((MaxBcnPageNum <= pHalData->FwRsvdPageStartOffset), ("CheckFwRsvdPageContent(): The reserved page content has been"\ @@ -855,21 +832,17 @@ GetTxBufferRsvdPageNum8814(_adapter *Adapter, bool bWoWLANBoundary) u8 RsvdPageNum=0; u16 TxPageBndy= LAST_ENTRY_OF_TX_PKT_BUFFER_8814A; // default reseved 1 page for the IC type which is undefined. - if(bWoWLANBoundary) - { + if(bWoWLANBoundary) { rtw_hal_get_def_var(Adapter, HAL_DEF_TX_PAGE_BOUNDARY_WOWLAN, (u8 *)&TxPageBndy); - } - else - { + } else { rtw_hal_get_def_var(Adapter, HAL_DEF_TX_PAGE_BOUNDARY, (u8 *)&TxPageBndy); } - + RsvdPageNum = LAST_ENTRY_OF_TX_PKT_BUFFER_8814A -TxPageBndy + 1; return RsvdPageNum; } - void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); @@ -882,8 +855,7 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) RTW_INFO("%s mstatus(%x)\n", __FUNCTION__,mstatus); - if(mstatus == 1) - { + if(mstatus == 1) { // We should set AID, correct TSF, HW seq enable before set JoinBssReport to Fw in 88/92C. // Suggested by filen. Added by tynli. rtw_write16(padapter, REG_BCN_PSR_RPT, (0xC000|pmlmeinfo->aid)); @@ -897,7 +869,7 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) pHalData->RegCR_1 |= BIT0; rtw_write8(padapter, REG_CR+1, pHalData->RegCR_1); /*RTW_INFO("%s-%d: enable SW BCN, REG_CR=0x%x\n", __func__, __LINE__, rtw_read32(padapter, REG_CR));*/ - + // Disable Hw protection for a time which revserd for Hw sending beacon. // Fix download reserved page packet fail that access collision with the protection time. // 2010.05.11. Added by tynli. @@ -905,9 +877,8 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) //SetBcnCtrlReg(padapter, BIT4, 0); rtw_write8(padapter, REG_BCN_CTRL, rtw_read8(padapter, REG_BCN_CTRL)&(~BIT(3))); rtw_write8(padapter, REG_BCN_CTRL, rtw_read8(padapter, REG_BCN_CTRL)|BIT(4)); - - if(pHalData->RegFwHwTxQCtrl&BIT6) - { + + if(pHalData->RegFwHwTxQCtrl&BIT6) { RTW_INFO("HalDownloadRSVDPage(): There is an Adapter is sending beacon.\n"); bSendBeacon = _TRUE; } @@ -920,22 +891,20 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) rtw_hal_set_hwreg(padapter, HW_VAR_BCN_VALID, NULL); DLBcnCount = 0; poll = 0; - do - { + do { // download rsvd page. rtw_hal_set_fw_rsvd_page(padapter, _FALSE); DLBcnCount++; - do - { + do { rtw_yield_os(); //rtw_mdelay_os(10); // check rsvd page download OK. rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, (u8*)(&bcn_valid)); poll++; } while (!bcn_valid && (poll%10) != 0 && !RTW_CANNOT_RUN(padapter)); - + } while (!bcn_valid && DLBcnCount <= 100 && !RTW_CANNOT_RUN(padapter)); - + //RT_ASSERT(bcn_valid, ("HalDownloadRSVDPage88ES(): 1 Download RSVD page failed!\n")); if (RTW_CANNOT_RUN(padapter)) ; @@ -955,21 +924,17 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) // the beacon TCB in the following code. 2011.11.23. by tynli. // //if(bcn_valid && padapter->bEnterPnpSleep) - if(0) - { - if(bSendBeacon) - { + if(0) { + if(bSendBeacon) { rtw_hal_set_hwreg(padapter, HW_VAR_BCN_VALID, NULL); DLBcnCount = 0; poll = 0; - do - { + do { //SetFwRsvdPagePkt_8812(padapter, _TRUE); rtw_hal_set_fw_rsvd_page(padapter, _TRUE); DLBcnCount++; - - do - { + + do { rtw_yield_os(); //rtw_mdelay_os(10); // check rsvd page download OK. @@ -977,7 +942,7 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) poll++; } while (!bcn_valid && (poll%10) != 0 && !RTW_CANNOT_RUN(padapter)); } while (!bcn_valid && DLBcnCount <= 100 && !RTW_CANNOT_RUN(padapter)); - + //RT_ASSERT(bcn_valid, ("HalDownloadRSVDPage(): 2 Download RSVD page failed!\n")); if (RTW_CANNOT_RUN(padapter)) ; @@ -996,11 +961,10 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) // To make sure that if there exists an adapter which would like to send beacon. // If exists, the origianl value of 0x422[6] will be 1, we should check this to - // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause + // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause // the beacon cannot be sent by HW. // 2010.06.23. Added by tynli. - if(bSendBeacon) - { + if(bSendBeacon) { rtw_write8(padapter, REG_FWHW_TXQ_CTRL+2, (pHalData->RegFwHwTxQCtrl|BIT6)); pHalData->RegFwHwTxQCtrl |= BIT6; } @@ -1008,13 +972,12 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) // // Update RSVD page location H2C to Fw. // - if(bcn_valid) - { + if(bcn_valid) { rtw_hal_set_hwreg(padapter, HW_VAR_BCN_VALID, NULL); RTW_INFO("Set RSVD page location to Fw.\n"); //FillH2CCmd88E(Adapter, H2C_88E_RSVDPAGE, H2C_RSVDPAGE_LOC_LENGTH, pMgntInfo->u1RsvdPageLoc); } - + // Do not enable HW DMA BCN or it will cause Pcie interface hang by timing issue. 2011.11.24. by tynli. //if(!padapter->bEnterPnpSleep) { @@ -1047,18 +1010,16 @@ void rtl8814_set_p2p_ps_offload_cmd(_adapter* padapter, u8 p2p_ps_state) case P2P_PS_ENABLE: RTW_INFO("P2P_PS_ENABLE \n"); // update CTWindow value. - if( pwdinfo->ctwindow > 0 ) - { + if( pwdinfo->ctwindow > 0 ) { SET_8814A_H2CCMD_P2P_PS_OFFLOAD_CTWINDOW_EN(p2p_ps_offload, 1); - rtw_write8(padapter, REG_P2P_CTWIN, pwdinfo->ctwindow); + rtw_write8(padapter, REG_P2P_CTWIN, pwdinfo->ctwindow); } // hw only support 2 set of NoA - for( i=0 ; inoa_num ; i++) - { + for ( i = 0 ; inoa_num ; i++) { // To control the register setting for which NOA rtw_write8(padapter, REG_NOA_DESC_SEL, (i << 4)); - if(i == 0) { + if (i == 0) { SET_8814A_H2CCMD_P2P_PS_OFFLOAD_NOA0_EN(p2p_ps_offload, 1); } else { SET_8814A_H2CCMD_P2P_PS_OFFLOAD_NOA1_EN(p2p_ps_offload, 1); @@ -1078,21 +1039,17 @@ void rtl8814_set_p2p_ps_offload_cmd(_adapter* padapter, u8 p2p_ps_state) rtw_write8(padapter, REG_NOA_DESC_COUNT, pwdinfo->noa_count[i]); } - if( (pwdinfo->opp_ps == 1) || (pwdinfo->noa_num > 0) ) - { + if( (pwdinfo->opp_ps == 1) || (pwdinfo->noa_num > 0) ) { // rst p2p circuit: reg 0x5F0 rtw_write8(padapter, REG_P2P_RST_8814A, BIT(0)); //rst p2p 0 circuit NOA 0 SET_8814A_H2CCMD_P2P_PS_OFFLOAD_ENABLE(p2p_ps_offload, 1); - if(pwdinfo->role == P2P_ROLE_GO) - { + if (pwdinfo->role == P2P_ROLE_GO) { // 1: Owner, 0: Client SET_8814A_H2CCMD_P2P_PS_OFFLOAD_ROLE(p2p_ps_offload, 1); SET_8814A_H2CCMD_P2P_PS_OFFLOAD_ALLSTASLEEP(p2p_ps_offload, 0); - } - else - { + } else { // 1: Owner, 0: Client SET_8814A_H2CCMD_P2P_PS_OFFLOAD_ROLE(p2p_ps_offload, 0); } @@ -1125,7 +1082,7 @@ void rtl8814_set_p2p_ps_offload_cmd(_adapter* padapter, u8 p2p_ps_state) ask FW to Reset sync register at Beacon early interrupt */ u8 rtl8814_reset_tsf(_adapter *padapter, u8 reset_port ) -{ +{ u8 buf[2]; u8 res=_SUCCESS; @@ -1180,7 +1137,7 @@ static void rtl8814_set_FwRsvdPage_cmd(PADAPTER padapter, PRSVDPAGE_LOC rsvdpage SET_H2CCMD_RSVDPAGE_LOC_NULL_DATA(u1H2CRsvdPageParm, rsvdpageloc->LocNullData); SET_H2CCMD_RSVDPAGE_LOC_QOS_NULL_DATA(u1H2CRsvdPageParm, rsvdpageloc->LocQosNull); SET_H2CCMD_RSVDPAGE_LOC_BT_QOS_NULL_DATA(u1H2CRsvdPageParm, rsvdpageloc->LocBTQosNull); - + RTW_INFO_DUMP("u1H2CRsvdPageParm:", u1H2CRsvdPageParm, H2C_RSVDPAGE_LOC_LEN); FillH2CCmd_8814(padapter, H2C_RSVD_PAGE, H2C_RSVDPAGE_LOC_LEN, u1H2CRsvdPageParm); } @@ -1191,7 +1148,7 @@ static void rtl8814_set_FwAoacRsvdPage_cmd(PADAPTER padapter, PRSVDPAGE_LOC rsvd struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); struct mlme_priv *pmlmepriv = &padapter->mlmepriv; u8 res = 0, count = 0; -#ifdef CONFIG_WOWLAN +#ifdef CONFIG_WOWLAN u8 u1H2CAoacRsvdPageParm[H2C_AOAC_RSVDPAGE_LOC_LEN]={0}; RTW_INFO("8192EAOACRsvdPageLoc: RWC=%d ArpRsp=%d NbrAdv=%d GtkRsp=%d GtkInfo=%d ProbeReq=%d NetworkList=%d\n", @@ -1258,7 +1215,7 @@ void rtl8814_iqk_done(_adapter* padapter) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); struct submit_ctx *iqk_sctx = &pHalData->iqk_sctx; - + rtw_sctx_done(&iqk_sctx); } @@ -1299,7 +1256,7 @@ C2HTxFeedbackHandler_8814( s32 _C2HContentParsing8814( IN PADAPTER Adapter, - IN u8 c2hCmdId, + IN u8 c2hCmdId, IN u8 c2hCmdLen, IN u8 *tmpBuf ) @@ -1402,7 +1359,7 @@ C2HPacketHandler_8814( c2hCmdSeq = Buffer[1]; c2hCmdLen = Length -2; tmpBuf = Buffer+2; - + //RTW_INFO("[C2H packet], c2hCmdId=0x%x, c2hCmdSeq=0x%x, c2hCmdLen=%d\n", c2hCmdId, c2hCmdSeq, c2hCmdLen); #ifdef CONFIG_BT_COEXIST @@ -1424,7 +1381,7 @@ C2HPacketHandler_8814( #endif /* CONFIG_BT_COEXIST */ { /* handle directly */ -#ifdef CONFIG_BEAMFORMING +#ifdef CONFIG_BEAMFORMING if (c2hCmdId == C2H_TXBF) { /* enqueue */ c2h_evt = (struct c2h_evt_hdr_88xx *)rtw_zmalloc(16); @@ -1465,16 +1422,14 @@ void ConstructBtNullFunctionData( pwlanhdr = (struct rtw_ieee80211_hdr*)pframe; - if (NULL == StaAddr) - { + if (NULL == StaAddr) { _rtw_memcpy(bssid, adapter_mac_addr(padapter), ETH_ALEN); StaAddr = bssid; } - + fctrl = &pwlanhdr->frame_ctl; *(fctrl) = 0; - if (bForcePowerSave) - { + if (bForcePowerSave) { SetPwrMgt(fctrl); } @@ -1509,7 +1464,7 @@ void ConstructBtNullFunctionData( static void SetFwRsvdPagePkt_BTCoex(PADAPTER padapter) { PHAL_DATA_TYPE pHalData; - struct xmit_frame *pcmdframe; + struct xmit_frame *pcmdframe; struct pkt_attrib *pattrib; struct xmit_priv *pxmitpriv; struct mlme_ext_priv *pmlmeext; @@ -1554,10 +1509,9 @@ static void SetFwRsvdPagePkt_BTCoex(PADAPTER padapter) // When we count the first page size, we need to reserve description size for the RSVD // packet, it will be filled in front of the packet in TXPKTBUF. CurtPktPageNum = (u8)PageNum(TxDescLen + BeaconLength, PageSize); - + //If we don't add 1 more page, the WOWLAN function has a problem. Baron thinks it's a bug of firmware - if (CurtPktPageNum == 1) - { + if (CurtPktPageNum == 1) { CurtPktPageNum += 1; } TotalPageNum += CurtPktPageNum; @@ -1565,13 +1519,12 @@ static void SetFwRsvdPagePkt_BTCoex(PADAPTER padapter) BufIndex += (CurtPktPageNum*PageSize); // Jump to lastest page - if (BufIndex < (MaxRsvdPageBufSize - PageSize)) - { + if (BufIndex < (MaxRsvdPageBufSize - PageSize)) { BufIndex = TxDescOffset + (MaxRsvdPageBufSize - PageSize); TotalPageNum = BCNQ_PAGE_NUM_8814-1; - + } - + //3 (6) BT Qos null data RsvdPageLoc.LocBTQosNull = TotalPageNum; ConstructBtNullFunctionData( @@ -1582,7 +1535,7 @@ static void SetFwRsvdPagePkt_BTCoex(PADAPTER padapter) _TRUE, 0, 0, _FALSE); rtl8814a_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex-TxDescLen], BTQosNullLength, _FALSE, _TRUE, _FALSE); - //RTW_INFO("%s(): HW_VAR_SET_TX_CMD: BT QOS NULL DATA %p %d\n", + //RTW_INFO("%s(): HW_VAR_SET_TX_CMD: BT QOS NULL DATA %p %d\n", // __FUNCTION__, &ReservedPagePacket[BufIndex-TxDescLen], (BTQosNullLength+TxDescLen)); CurtPktPageNum = (u8)PageNum(TxDescLen + BTQosNullLength,PageSize); @@ -1590,14 +1543,11 @@ static void SetFwRsvdPagePkt_BTCoex(PADAPTER padapter) TotalPageNum += CurtPktPageNum; TotalPacketLen = BufIndex + BTQosNullLength; - if(TotalPacketLen > MaxRsvdPageBufSize) - { + if(TotalPacketLen > MaxRsvdPageBufSize) { RTW_INFO("%s(): ERROR: The rsvd page size is not enough!!TotalPacketLen %d, MaxRsvdPageBufSize %d\n",__FUNCTION__, TotalPacketLen,MaxRsvdPageBufSize); goto error; - } - else - { + } else { // update attribute pattrib = &pcmdframe->attrib; update_mgntframe_attrib(padapter, pattrib); @@ -1611,13 +1561,13 @@ static void SetFwRsvdPagePkt_BTCoex(PADAPTER padapter) } RTW_INFO("%s: Set RSVD page location to Fw ,TotalPacketLen(%d), TotalPageNum(%d)\n", __FUNCTION__,TotalPacketLen,TotalPageNum); - if(check_fwstate(pmlmepriv, _FW_LINKED)) { + if (check_fwstate(pmlmepriv, _FW_LINKED)) { rtl8814_set_FwRsvdPage_cmd(padapter, &RsvdPageLoc); #ifdef CONFIG_WOWLAN rtl8814_set_FwAoacRsvdPage_cmd(padapter, &RsvdPageLoc); #endif - } - + } + return; error: @@ -1673,24 +1623,22 @@ void rtl8812a_download_BTCoex_AP_mode_rsvd_page(PADAPTER padapter) DLBcnCount = 0; poll = 0; - do - { + do { SetFwRsvdPagePkt_BTCoex(padapter); DLBcnCount++; - do - { + do { rtw_yield_os(); //rtw_mdelay_os(10); // check rsvd page download OK. rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, (u8*)(&bcn_valid)); poll++; } while (!bcn_valid && (poll%10) != 0 && !RTW_CANNOT_RUN(padapter)); - + } while (!bcn_valid && DLBcnCount <= 100 && !RTW_CANNOT_RUN(padapter)); if (RTW_CANNOT_RUN(padapter)) ; - else if(!bcn_valid) + else if (!bcn_valid) RTW_INFO(ADPT_FMT": 1 DL RSVD page failed! DLBcnCount:%u, poll:%u\n", ADPT_ARG(padapter) ,DLBcnCount, poll); else { @@ -1711,8 +1659,7 @@ void rtl8812a_download_BTCoex_AP_mode_rsvd_page(PADAPTER padapter) // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause // the beacon cannot be sent by HW. // 2010.06.23. Added by tynli. - if(bRecover) - { + if (bRecover) { rtw_write8(padapter, REG_FWHW_TXQ_CTRL+2, pHalData->RegFwHwTxQCtrl | BIT(6)); pHalData->RegFwHwTxQCtrl |= BIT(6); } @@ -1727,4 +1674,3 @@ void rtl8812a_download_BTCoex_AP_mode_rsvd_page(PADAPTER padapter) } #endif // CONFIG_BT_COEXIST - From cfa89ead2f513436ae4a240a4c66df5899dab2d1 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 20 Dec 2017 08:09:53 +0100 Subject: [PATCH 171/234] Code cleanup --- hal/rtl8814a/rtl8814a_dm.c | 109 ++++++++++++++++--------------------- 1 file changed, 46 insertions(+), 63 deletions(-) diff --git a/hal/rtl8814a/rtl8814a_dm.c b/hal/rtl8814a/rtl8814a_dm.c index 808739596..92ee51e80 100644 --- a/hal/rtl8814a/rtl8814a_dm.c +++ b/hal/rtl8814a/rtl8814a_dm.c @@ -46,18 +46,15 @@ dm_CheckProtection( PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); u1Byte CurRate, RateThreshold; - if(pMgntInfo->pHTInfo->bCurBW40MHz) + if (pMgntInfo->pHTInfo->bCurBW40MHz) RateThreshold = MGN_MCS1; else RateThreshold = MGN_MCS3; - if(Adapter->TxStats.CurrentInitTxRate <= RateThreshold) - { + if(Adapter->TxStats.CurrentInitTxRate <= RateThreshold) { pMgntInfo->bDmDisableProtect = TRUE; DbgPrint("Forced disable protect: %x\n", Adapter->TxStats.CurrentInitTxRate); - } - else - { + } else { pMgntInfo->bDmDisableProtect = FALSE; DbgPrint("Enable protect: %x\n", Adapter->TxStats.CurrentInitTxRate); } @@ -70,7 +67,7 @@ dm_CheckStatistics( ) { #if 0 - if(!Adapter->MgntInfo.bMediaConnect) + if (!Adapter->MgntInfo.bMediaConnect) return; //2008.12.10 tynli Add for getting Current_Tx_Rate_Reg flexibly. @@ -98,14 +95,13 @@ static void dm_CheckPbcGPIO(_adapter *padapter) #endif /* CONFIG_BT_COEXIST */ #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) - + tmp1byte = rtw_read8(padapter, REG_GPIO_EXT_CTRL_8814A); //DBG_871X("CheckPbcGPIO - %x\n", tmp1byte); if (tmp1byte == 0xff) return ; - else if (tmp1byte & BIT3) - { + else if (tmp1byte & BIT3) { // Here we only set bPbcPressed to TRUE. After trigger PBC, the variable will be set to FALSE DBG_871X("CheckPbcGPIO - PBC is pressed\n"); bPbcPressed = _TRUE; @@ -113,8 +109,7 @@ static void dm_CheckPbcGPIO(_adapter *padapter) #endif - if( _TRUE == bPbcPressed) - { + if ( _TRUE == bPbcPressed) { // Here we only set bPbcPressed to true // After trigger PBC, the variable will be set to false DBG_871X("CheckPbcGPIO - PBC is pressed\n"); @@ -145,7 +140,6 @@ dm_InterruptMigration( BOOLEAN IntMtToSet = _FALSE; BOOLEAN ACIntToSet = _FALSE; - // Retrieve current interrupt migration and Tx four ACs IMR settings first. bCurrentIntMt = pHalData->bInterruptMigration; bCurrentACIntDisable = pHalData->bDisableTxInt; @@ -154,22 +148,21 @@ dm_InterruptMigration( // Currently we use busy traffic for reference instead of RxIntOK counts to prevent non-linear Rx statistics // when interrupt migration is set before. 2010.03.05. // - if(!Adapter->registrypriv.wifi_spec && + if (!Adapter->registrypriv.wifi_spec && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) && pmlmepriv->LinkDetectInfo.bHigherBusyTraffic) { IntMtToSet = _TRUE; // To check whether we should disable Tx interrupt or not. - if(pmlmepriv->LinkDetectInfo.bHigherBusyRxTraffic) + if (pmlmepriv->LinkDetectInfo.bHigherBusyRxTraffic) ACIntToSet = _TRUE; } //Update current settings. - if( bCurrentIntMt != IntMtToSet ){ + if ( bCurrentIntMt != IntMtToSet ) { DBG_8192C("%s(): Update interrrupt migration(%d)\n",__FUNCTION__,IntMtToSet); - if(IntMtToSet) - { + if(IntMtToSet) { // // Set interrrupt migration timer and corresponging Tx/Rx counter. // timer 25ns*0xfa0=100us for 0xf packets. @@ -177,9 +170,7 @@ dm_InterruptMigration( // rtw_write32(Adapter, REG_INT_MIG, 0xff000fa0);// 0x306:Rx, 0x307:Tx pHalData->bInterruptMigration = IntMtToSet; - } - else - { + } else { // Reset all interrupt migration settings. rtw_write32(Adapter, REG_INT_MIG, 0); pHalData->bInterruptMigration = IntMtToSet; @@ -232,7 +223,7 @@ dm_InitGPIOSetting( //============================================================ static void Init_ODM_ComInfo_8814(PADAPTER Adapter) { - PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); PDM_ODM_T pDM_Odm = &(pHalData->odmpriv); u32 SupportAbility = 0; @@ -243,20 +234,20 @@ static void Init_ODM_ComInfo_8814(PADAPTER Adapter) ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_IC_TYPE, ODM_RTL8814A); fab_ver = ODM_TSMC; - if(IS_A_CUT(pHalData->VersionID)) + if (IS_A_CUT(pHalData->VersionID)) cut_ver = ODM_CUT_A; - else if(IS_B_CUT(pHalData->VersionID)) + else if (IS_B_CUT(pHalData->VersionID)) cut_ver = ODM_CUT_B; - else if(IS_C_CUT(pHalData->VersionID)) + else if (IS_C_CUT(pHalData->VersionID)) cut_ver = ODM_CUT_C; - else if(IS_D_CUT(pHalData->VersionID)) + else if (IS_D_CUT(pHalData->VersionID)) cut_ver = ODM_CUT_D; - else if(IS_E_CUT(pHalData->VersionID)) + else if (IS_E_CUT(pHalData->VersionID)) cut_ver = ODM_CUT_E; else cut_ver = ODM_CUT_A; - ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_FAB_VER,fab_ver); + ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_FAB_VER,fab_ver); ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_CUT_VER,cut_ver); ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_RF_ANTENNA_TYPE, pHalData->TRxAntDivType); @@ -268,13 +259,13 @@ static void Init_ODM_ComInfo_8814(PADAPTER Adapter) #else SupportAbility = ODM_RF_CALIBRATION| ODM_RF_TX_PWR_TRACK - ; + ; /*if(pHalData->AntDivCfg) SupportAbility |= ODM_BB_ANT_DIV;*/ - #endif + #endif ODM_CmnInfoUpdate(pDM_Odm,ODM_CMNINFO_ABILITY,SupportAbility); - + } static void Update_ODM_ComInfo_8814(PADAPTER Adapter) @@ -301,7 +292,7 @@ static void Update_ODM_ComInfo_8814(PADAPTER Adapter) SupportAbility |= ODM_BB_ADAPTIVITY; } - if(pHalData->AntDivCfg) + if (pHalData->AntDivCfg) SupportAbility |= ODM_BB_ANT_DIV; #if (MP_DRIVER==1) @@ -372,7 +363,7 @@ rtl8814_HalDmWatchDog( #ifdef CONFIG_P2P_PS // Fw is under p2p powersaving mode, driver should stop dynamic mechanism. // modifed by thomas. 2011.06.11. - if(Adapter->wdinfo.p2p_ps_mode) + if (Adapter->wdinfo.p2p_ps_mode) bFwPSAwake = _FALSE; #endif //CONFIG_P2P_PS @@ -381,7 +372,7 @@ rtl8814_HalDmWatchDog( // // Calculate Tx/Rx statistics. // - dm_CheckStatistics(Adapter); + dm_CheckStatistics(Adapter); rtw_hal_check_rxfifo_full(Adapter); // // Dynamically switch RTS/CTS protection. @@ -396,12 +387,11 @@ rtl8814_HalDmWatchDog( //if(Adapter->HalFunc.TxCheckStuckHandler(Adapter)) // PlatformScheduleWorkItem(&(GET_HAL_DATA(Adapter)->HalResetWorkItem)); #endif - + } //ODM - if (rtw_is_hw_init_completed(Adapter)) - { + if (rtw_is_hw_init_completed(Adapter)) { u8 bLinked=_FALSE; u8 bsta_state=_FALSE; u8 bBtDisabled = _TRUE; @@ -410,16 +400,16 @@ rtl8814_HalDmWatchDog( pHalData->odmpriv.SupportAbility = 0; #endif - if(rtw_linked_check(Adapter)){ + if (rtw_linked_check(Adapter)) { bLinked = _TRUE; if (check_fwstate(&Adapter->mlmepriv, WIFI_STATION_STATE)) bsta_state = _TRUE; } - + #ifdef CONFIG_CONCURRENT_MODE - if(pbuddy_adapter && rtw_linked_check(pbuddy_adapter)){ + if (pbuddy_adapter && rtw_linked_check(pbuddy_adapter)){ bLinked = _TRUE; - if(pbuddy_adapter && check_fwstate(&pbuddy_adapter->mlmepriv, WIFI_STATION_STATE)) + if (pbuddy_adapter && check_fwstate(&pbuddy_adapter->mlmepriv, WIFI_STATION_STATE)) bsta_state = _TRUE; } #endif //CONFIG_CONCURRENT_MODE @@ -433,7 +423,7 @@ rtl8814_HalDmWatchDog( ODM_CmnInfoUpdate(&pHalData->odmpriv, ODM_CMNINFO_BT_ENABLED, ((bBtDisabled == _TRUE)?_FALSE:_TRUE)); ODM_DMWatchdog(&pHalData->odmpriv); - + } skip_dm: @@ -463,7 +453,7 @@ void rtl8814_init_dm_priv(IN PADAPTER Adapter) } Init_ODM_ComInfo_8814(Adapter); - ODM_InitAllTimers(podmpriv ); + ODM_InitAllTimers(podmpriv ); PHYDM_InitDebugSetting(podmpriv); pHalData->CurrentTxPwrIdx = 18; @@ -475,7 +465,7 @@ void rtl8814_deinit_dm_priv(IN PADAPTER Adapter) PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); PDM_ODM_T podmpriv = &pHalData->odmpriv; //_rtw_spinlock_free(&pHalData->odm_stainfo_lock); - ODM_CancelAllTimers(podmpriv); + ODM_CancelAllTimers(podmpriv); } @@ -486,17 +476,15 @@ void rtl8814_deinit_dm_priv(IN PADAPTER Adapter) void AntDivCompare8814(PADAPTER Adapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src) { //PADAPTER Adapter = pDM_Odm->Adapter ; - + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - if(0 != pHalData->AntDivCfg ) - { + if (0 != pHalData->AntDivCfg ) { //DBG_8192C("update_network=> orgRSSI(%d)(%d),newRSSI(%d)(%d)\n",dst->Rssi,query_rx_pwr_percentage(dst->Rssi), // src->Rssi,query_rx_pwr_percentage(src->Rssi)); //select optimum_antenna for before linked =>For antenna diversity - if(dst->Rssi >= src->Rssi )//keep org parameter - { + if (dst->Rssi >= src->Rssi ) { //keep org parameter src->Rssi = dst->Rssi; - src->PhyInfo.Optimum_antenna = dst->PhyInfo.Optimum_antenna; + src->PhyInfo.Optimum_antenna = dst->PhyInfo.Optimum_antenna; } } } @@ -504,26 +492,24 @@ void AntDivCompare8814(PADAPTER Adapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src) // Add new function to reset the state of antenna diversity before link. u8 AntDivBeforeLink8814(PADAPTER Adapter ) { - - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); PDM_ODM_T pDM_Odm =&pHalData->odmpriv; SWAT_T *pDM_SWAT_Table = &pDM_Odm->DM_SWAT_Table; struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); - + // Condition that does not need to use antenna diversity. - if(pHalData->AntDivCfg==0) - { + if (pHalData->AntDivCfg==0) { //DBG_8192C("odm_AntDivBeforeLink8192C(): No AntDiv Mechanism.\n"); return _FALSE; } - if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) - { + if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) { return _FALSE; } - if(pDM_SWAT_Table->SWAS_NoLink_State == 0){ + if (pDM_SWAT_Table->SWAS_NoLink_State == 0) { //switch channel pDM_SWAT_Table->SWAS_NoLink_State = 1; pDM_SWAT_Table->CurAntenna = (pDM_SWAT_Table->CurAntenna==MAIN_ANT)?AUX_ANT:MAIN_ANT; @@ -532,13 +518,10 @@ u8 AntDivBeforeLink8814(PADAPTER Adapter ) rtw_antenna_select_cmd(Adapter, pDM_SWAT_Table->CurAntenna, _FALSE); //DBG_8192C("%s change antenna to ANT_( %s ).....\n",__FUNCTION__, (pDM_SWAT_Table->CurAntenna==MAIN_ANT)?"MAIN":"AUX"); return _TRUE; - } - else - { + } else { pDM_SWAT_Table->SWAS_NoLink_State = 0; return _FALSE; - } + } } #endif //CONFIG_ANTENNA_DIVERSITY - From abc37bc4e4f5dfa210d1c185469ec5b22899eaca Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 20 Dec 2017 17:14:34 +0100 Subject: [PATCH 172/234] Code cleanup --- hal/rtl8814a/rtl8814a_phycfg.c | 1017 ++++++++++++++------------------ 1 file changed, 430 insertions(+), 587 deletions(-) diff --git a/hal/rtl8814a/rtl8814a_phycfg.c b/hal/rtl8814a/rtl8814a_phycfg.c index 8b3caa31d..423ba9ff6 100644 --- a/hal/rtl8814a/rtl8814a_phycfg.c +++ b/hal/rtl8814a/rtl8814a_phycfg.c @@ -72,23 +72,20 @@ PHY_SetBBReg8814A( #if(SIC_ENABLE == 1) SIC_SetBBReg(Adapter, RegAddr, BitMask, Data); - return; + return; #endif - if(BitMask!= bMaskDWord) - {//if not "double word" write + if (BitMask!= bMaskDWord) { //if not "double word" write OriginalValue = rtw_read32(Adapter, RegAddr); BitShift = PHY_CalculateBitShift(BitMask); Data = ((OriginalValue) & (~BitMask)) |( ((Data << BitShift)) & BitMask); } rtw_write32(Adapter, RegAddr, Data); - + //RTW_INFO("BBW MASK=0x%x Addr[0x%x]=0x%x\n", BitMask, RegAddr, Data); } - - static u32 phy_RFRead_8814A( IN PADAPTER Adapter, @@ -98,10 +95,10 @@ phy_RFRead_8814A( ) { u32 DataAndAddr = 0; - u32 Readback_Value, Direct_Addr; - + u32 Readback_Value, Direct_Addr; + RegAddr &= 0xff; - switch(eRFPath){ + switch (eRFPath) { case ODM_RF_PATH_A: Direct_Addr = 0x2800+RegAddr*4; break; @@ -118,11 +115,11 @@ phy_RFRead_8814A( Direct_Addr = 0x2800+RegAddr*4; break; } - + BitMask &= bRFRegOffsetMask; - - Readback_Value = PHY_QueryBBReg(Adapter, Direct_Addr, BitMask); + + Readback_Value = PHY_QueryBBReg(Adapter, Direct_Addr, BitMask); //RTW_INFO("RFR-%d Addr[0x%x]=0x%x\n", eRFPath, RegAddr, Readback_Value); return Readback_Value; @@ -154,9 +151,9 @@ phy_RFWrite_8814A( //PHY_RFShadowWrite(Adapter, eRFPath, Offset, Data); // Put write addr in [27:20] and write data in [19:00] - DataAndAddr = ((Offset<<20) | (Data&0x000fffff)) & 0x0fffffff; + DataAndAddr = ((Offset<<20) | (Data&0x000fffff)) & 0x0fffffff; - // Write Operation + // Write Operation PHY_SetBBReg(Adapter, pPhyReg->rf3wireOffset, bMaskDWord, DataAndAddr); //RTW_INFO("RFW-%d Addr[0x%x]=0x%x\n", eRFPath, pPhyReg->rf3wireOffset, DataAndAddr); } @@ -170,12 +167,12 @@ PHY_QueryRFReg8814A( IN u32 BitMask ) { - u32 Readback_Value; + u32 Readback_Value; #if (DISABLE_BB_RF == 1) return 0; #endif - + Readback_Value = phy_RFRead_8814A(Adapter, eRFPath, RegAddr, BitMask); return (Readback_Value); @@ -196,7 +193,7 @@ PHY_SetRFReg8814A( return; #endif - if(BitMask == 0) + if (BitMask == 0) return; RegAddr &= 0xff; @@ -208,9 +205,8 @@ PHY_SetRFReg8814A( BitShift = PHY_CalculateBitShift(BitMask); Data = ((Original_Value) & (~BitMask)) | (Data<< BitShift); } - - phy_RFWrite_8814A(Adapter, eRFPath, RegAddr, Data); + phy_RFWrite_8814A(Adapter, eRFPath, RegAddr, Data); } @@ -246,7 +242,7 @@ phy_InitBBRFRegisterDefinition( IN PADAPTER Adapter ) { - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); // RF Interface Sowrtware Control pHalData->PHYRegDef[ODM_RF_PATH_A].rfintfs = rFPGA0_XAB_RFInterfaceSW; // 16 LSBs if read 32-bit from 0x870 @@ -260,16 +256,13 @@ phy_InitBBRFRegisterDefinition( pHalData->PHYRegDef[ODM_RF_PATH_A].rfintfe = rFPGA0_XA_RFInterfaceOE; // 16 MSBs if read 32-bit from 0x860 (16-bit for 0x862) pHalData->PHYRegDef[ODM_RF_PATH_B].rfintfe = rFPGA0_XB_RFInterfaceOE; // 16 MSBs if read 32-bit from 0x864 (16-bit for 0x866) - if(IS_HARDWARE_TYPE_JAGUAR_AND_JAGUAR2(Adapter)) - { + if (IS_HARDWARE_TYPE_JAGUAR_AND_JAGUAR2(Adapter)) { pHalData->PHYRegDef[ODM_RF_PATH_A].rf3wireOffset = rA_LSSIWrite_Jaguar; //LSSI Parameter pHalData->PHYRegDef[ODM_RF_PATH_B].rf3wireOffset = rB_LSSIWrite_Jaguar; pHalData->PHYRegDef[ODM_RF_PATH_A].rfHSSIPara2 = rHSSIRead_Jaguar; //wire control parameter2 pHalData->PHYRegDef[ODM_RF_PATH_B].rfHSSIPara2 = rHSSIRead_Jaguar; //wire control parameter2 - } - else - { + } else { pHalData->PHYRegDef[ODM_RF_PATH_A].rf3wireOffset = rFPGA0_XA_LSSIParameter; //LSSI Parameter pHalData->PHYRegDef[ODM_RF_PATH_B].rf3wireOffset = rFPGA0_XB_LSSIParameter; @@ -277,35 +270,30 @@ phy_InitBBRFRegisterDefinition( pHalData->PHYRegDef[ODM_RF_PATH_B].rfHSSIPara2 = rFPGA0_XB_HSSIParameter2; //wire control parameter2 } - if(IS_HARDWARE_TYPE_8814A(Adapter)) - { + if (IS_HARDWARE_TYPE_8814A(Adapter)) { pHalData->PHYRegDef[ODM_RF_PATH_C].rf3wireOffset = rC_LSSIWrite_Jaguar2; //LSSI Parameter pHalData->PHYRegDef[ODM_RF_PATH_D].rf3wireOffset = rD_LSSIWrite_Jaguar2; pHalData->PHYRegDef[ODM_RF_PATH_C].rfHSSIPara2 = rHSSIRead_Jaguar; //wire control parameter2 pHalData->PHYRegDef[ODM_RF_PATH_D].rfHSSIPara2 = rHSSIRead_Jaguar; //wire control parameter2 } - - if(IS_HARDWARE_TYPE_JAGUAR_AND_JAGUAR2(Adapter)) - { - // Tranceiver Readback LSSI/HSPI mode + + if (IS_HARDWARE_TYPE_JAGUAR_AND_JAGUAR2(Adapter)) { + // Tranceiver Readback LSSI/HSPI mode pHalData->PHYRegDef[ODM_RF_PATH_A].rfLSSIReadBack = rA_SIRead_Jaguar; pHalData->PHYRegDef[ODM_RF_PATH_B].rfLSSIReadBack = rB_SIRead_Jaguar; pHalData->PHYRegDef[ODM_RF_PATH_A].rfLSSIReadBackPi = rA_PIRead_Jaguar; pHalData->PHYRegDef[ODM_RF_PATH_B].rfLSSIReadBackPi = rB_PIRead_Jaguar; - } - else - { - // Tranceiver Readback LSSI/HSPI mode + } else { + // Tranceiver Readback LSSI/HSPI mode pHalData->PHYRegDef[ODM_RF_PATH_A].rfLSSIReadBack = rFPGA0_XA_LSSIReadBack; pHalData->PHYRegDef[ODM_RF_PATH_B].rfLSSIReadBack = rFPGA0_XB_LSSIReadBack; pHalData->PHYRegDef[ODM_RF_PATH_A].rfLSSIReadBackPi = TransceiverA_HSPI_Readback; pHalData->PHYRegDef[ODM_RF_PATH_B].rfLSSIReadBackPi = TransceiverB_HSPI_Readback; } - if(IS_HARDWARE_TYPE_8814A(Adapter)) - { - // Tranceiver Readback LSSI/HSPI mode + if (IS_HARDWARE_TYPE_8814A(Adapter)) { + // Tranceiver Readback LSSI/HSPI mode pHalData->PHYRegDef[ODM_RF_PATH_C].rfLSSIReadBack = rC_SIRead_Jaguar2; pHalData->PHYRegDef[ODM_RF_PATH_D].rfLSSIReadBack = rD_SIRead_Jaguar2; pHalData->PHYRegDef[ODM_RF_PATH_C].rfLSSIReadBackPi = rC_PIRead_Jaguar2; @@ -330,9 +318,9 @@ PHY_BBConfig8814( // . APLL_EN,,APLL_320_GATEB,APLL_320BIAS, auto config by hw fsm after pfsm_go (0x4 bit 8) set TmpU1B = PlatformEFIORead1Byte(Adapter, REG_SYS_FUNC_EN_8814A); - if(IS_HARDWARE_TYPE_8814AU(Adapter)) + if (IS_HARDWARE_TYPE_8814AU(Adapter)) TmpU1B |= FEN_USBA; - else if(IS_HARDWARE_TYPE_8814AE(Adapter)) + else if (IS_HARDWARE_TYPE_8814AE(Adapter)) TmpU1B |= FEN_PCIEA; PlatformEFIOWrite1Byte(Adapter, REG_SYS_FUNC_EN, TmpU1B); @@ -344,7 +332,7 @@ PHY_BBConfig8814( PlatformEFIOWrite1Byte(Adapter, REG_RF_CTRL0_8814A , 0x07);//RF_SDMRSTB,RF_RSTB,RF_EN same with 8723a //7. 0x20[7:0] = 0x07 PathB RF Power On //8. 0x21[7:0] = 0x07 PathC RF Power On - PlatformEFIOWrite2Byte(Adapter, REG_RF_CTRL1_8814A , 0x0707);//RF_SDMRSTB,RF_RSTB,RF_EN same with 8723a + PlatformEFIOWrite2Byte(Adapter, REG_RF_CTRL1_8814A , 0x0707);//RF_SDMRSTB,RF_RSTB,RF_EN same with 8723a //9. 0x76[7:0] = 0x07 PathD RF Power On PlatformEFIOWrite1Byte(Adapter, REG_RF_CTRL3_8814A , 0x7); @@ -354,7 +342,7 @@ PHY_BBConfig8814( rtStatus = phy_BB8814A_Config_ParaFile(Adapter); hal_set_crystal_cap(Adapter, pHalData->CrystalCap); - + switch (Adapter->registrypriv.rf_config) { case RF_1T1R: case RF_2T4R: @@ -376,8 +364,8 @@ PHY_BBConfig8814( RTW_INFO("%s, unknown rf_config: %d\n", __func__, Adapter->registrypriv.rf_config); break; } - - return rtStatus; + + return rtStatus; } int phy_BB8814A_Config_ParaFile( @@ -461,22 +449,22 @@ phy_ADC_CLK_8814A( BB_REG_8FC = PHY_QueryBBReg( Adapter, 0x8fc, bMaskDWord); BB_REG_808 = PHY_QueryBBReg( Adapter, 0x808, bMaskDWord); PHY_SetBBReg(Adapter, 0x520, bMaskByte2, 0x3f); - + //1 Step 2. Backup RXIQC & RXIQC = 0 - for(Search_index = 0; Search_index<4; Search_index++){ + for (Search_index = 0; Search_index<4; Search_index++){ RXIQC[Search_index] = PHY_QueryBBReg( Adapter, RXIQC_REG[0][Search_index], bMaskDWord); PHY_SetBBReg(Adapter, RXIQC_REG[0][Search_index], bMaskDWord, 0x0); PHY_SetBBReg(Adapter, RXIQC_REG[1][Search_index], bMaskDWord, 0x0); } PHY_SetBBReg(Adapter, 0xa14, 0x00000300, 0x3); Search_index = 0; - + //1 Step 3. Monitor MAC IDLE PHY_SetBBReg(Adapter, 0x8fc, bMaskDWord, 0x0); - while(MAC_Active){ + while (MAC_Active) { MAC_Active = PHY_QueryBBReg( Adapter, 0xfa0, bMaskDWord) & (0x803e0008); Search_index++; - if(Search_index>1000){ + if (Search_index>1000) { break; } } @@ -487,56 +475,56 @@ phy_ADC_CLK_8814A( PHY_SetBBReg(Adapter, 0x764, BIT(10)|BIT(9), 0x3); PHY_SetBBReg(Adapter, 0x804, BIT(2), 0x1); - // 0xc1c/0xe1c/0x181c/0x1a1c[4] must=1 to ensure table can be written when bbrstb=0 - // 0xc60/0xe60/0x1860/0x1a60[15] always = 1 after this line - // 0xc60/0xe60/0x1860/0x1a60[14] always = 0 bcz its error in A-cut + // 0xc1c/0xe1c/0x181c/0x1a1c[4] must=1 to ensure table can be written when bbrstb=0 + // 0xc60/0xe60/0x1860/0x1a60[15] always = 1 after this line + // 0xc60/0xe60/0x1860/0x1a60[14] always = 0 bcz its error in A-cut // power_off/clk_off @ anapar_state=idle mode - PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x15800002); //0xc60 0x15808002 + PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x15800002); //0xc60 0x15808002 PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x01808003); //0xc60 0x01808003 - PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x15800002); //0xe60 0x15808002 - PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x01808003); //0xe60 0x01808003 - PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x15800002); //0x1860 0x15808002 - PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x01808003); //0x1860 0x01808003 - PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x15800002); //0x1a60 0x15808002 - PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x01808003); //0x1a60 0x01808003 - + PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x15800002); //0xe60 0x15808002 + PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x01808003); //0xe60 0x01808003 + PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x15800002); //0x1860 0x15808002 + PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x01808003); //0x1860 0x01808003 + PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x15800002); //0x1a60 0x15808002 + PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x01808003); //0x1a60 0x01808003 + PHY_SetBBReg(Adapter, 0x764, BIT(10), 0x0); PHY_SetBBReg(Adapter, 0x804, BIT(2), 0x0); - PHY_SetBBReg(Adapter, 0xc5c, bMaskDWord, 0x0D080058); //0xc5c 0x00080058 // [19] =1 to turn off ADC - PHY_SetBBReg(Adapter, 0xe5c, bMaskDWord, 0x0D080058); //0xe5c 0x00080058 // [19] =1 to turn off ADC - PHY_SetBBReg(Adapter, 0x185c, bMaskDWord, 0x0D080058); //0x185c 0x00080058 // [19] =1 to turn off ADC - PHY_SetBBReg(Adapter, 0x1a5c, bMaskDWord, 0x0D080058); //0x1a5c 0x00080058 // [19] =1 to turn off ADC - - // power_on/clk_off + PHY_SetBBReg(Adapter, 0xc5c, bMaskDWord, 0x0D080058); //0xc5c 0x00080058 // [19] =1 to turn off ADC + PHY_SetBBReg(Adapter, 0xe5c, bMaskDWord, 0x0D080058); //0xe5c 0x00080058 // [19] =1 to turn off ADC + PHY_SetBBReg(Adapter, 0x185c, bMaskDWord, 0x0D080058); //0x185c 0x00080058 // [19] =1 to turn off ADC + PHY_SetBBReg(Adapter, 0x1a5c, bMaskDWord, 0x0D080058); //0x1a5c 0x00080058 // [19] =1 to turn off ADC + + // power_on/clk_off //PHY_SetBBReg(Adapter, 0x764, BIT(10), 0x1); - PHY_SetBBReg(Adapter, 0xc5c, bMaskDWord, 0x0D000058); //0xc5c 0x0D000058 // [19] =0 to turn on ADC - PHY_SetBBReg(Adapter, 0xe5c, bMaskDWord, 0x0D000058); //0xe5c 0x0D000058 // [19] =0 to turn on ADC - PHY_SetBBReg(Adapter, 0x185c, bMaskDWord, 0x0D000058); //0x185c 0x0D000058 // [19] =0 to turn on ADC - PHY_SetBBReg(Adapter, 0x1a5c, bMaskDWord, 0x0D000058); //0x1a5c 0x0D000058 // [19] =0 to turn on ADC + PHY_SetBBReg(Adapter, 0xc5c, bMaskDWord, 0x0D000058); //0xc5c 0x0D000058 // [19] =0 to turn on ADC + PHY_SetBBReg(Adapter, 0xe5c, bMaskDWord, 0x0D000058); //0xe5c 0x0D000058 // [19] =0 to turn on ADC + PHY_SetBBReg(Adapter, 0x185c, bMaskDWord, 0x0D000058); //0x185c 0x0D000058 // [19] =0 to turn on ADC + PHY_SetBBReg(Adapter, 0x1a5c, bMaskDWord, 0x0D000058); //0x1a5c 0x0D000058 // [19] =0 to turn on ADC // power_on/clk_on @ anapar_state=BT mode - PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x05808032); //0xc60 0x05808002 - PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x05808032); //0xe60 0x05808002 - PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x05808032); //0x1860 0x05808002 - PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x05808032); //0x1a60 0x05808002 - PHY_SetBBReg(Adapter, 0x764, BIT(10), 0x1); + PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x05808032); //0xc60 0x05808002 + PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x05808032); //0xe60 0x05808002 + PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x05808032); //0x1860 0x05808002 + PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x05808032); //0x1a60 0x05808002 + PHY_SetBBReg(Adapter, 0x764, BIT(10), 0x1); PHY_SetBBReg(Adapter, 0x804, BIT(2), 0x1); - // recover original setting @ anapar_state=BT mode - PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x05808032); //0xc60 0x05808036 - PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x05808032); //0xe60 0x05808036 - PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x05808032); //0x1860 0x05808036 - PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x05808032); //0x1a60 0x05808036 + // recover original setting @ anapar_state=BT mode + PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x05808032); //0xc60 0x05808036 + PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x05808032); //0xe60 0x05808036 + PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x05808032); //0x1860 0x05808036 + PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x05808032); //0x1a60 0x05808036 - PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x05800002); //0xc60 0x05800002 + PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x05800002); //0xc60 0x05800002 PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x07808003); //0xc60 0x07808003 - PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x05800002); //0xe60 0x05800002 - PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x07808003); //0xe60 0x07808003 - PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x05800002); //0x1860 0x05800002 - PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x07808003); //0x1860 0x07808003 - PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x05800002); //0x1a60 0x05800002 - PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x07808003); //0x1a60 0x07808003 + PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x05800002); //0xe60 0x05800002 + PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x07808003); //0xe60 0x07808003 + PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x05800002); //0x1860 0x05800002 + PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x07808003); //0x1860 0x07808003 + PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x05800002); //0x1a60 0x05800002 + PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x07808003); //0x1a60 0x07808003 PHY_SetBBReg(Adapter, 0x764, BIT(10)|BIT(9), 0x0); PHY_SetBBReg(Adapter, 0x804, BIT(2), 0x0); @@ -546,7 +534,7 @@ phy_ADC_CLK_8814A( PHY_SetBBReg(Adapter, 0x520, bMaskDWord, MAC_REG_520); PHY_SetBBReg(Adapter, 0x8fc, bMaskDWord, BB_REG_8FC); PHY_SetBBReg(Adapter, 0x808, bMaskDWord, BB_REG_808); - for(Search_index = 0; Search_index<4; Search_index++){ + for (Search_index = 0; Search_index<4; Search_index++) { PHY_SetBBReg(Adapter, RXIQC_REG[0][Search_index], bMaskDWord, RXIQC[Search_index]); PHY_SetBBReg(Adapter, RXIQC_REG[1][Search_index], bMaskDWord, 0x01000000); } @@ -581,12 +569,11 @@ PHY_RFConfig8814A( if (rtw_is_surprise_removed(Adapter)) return _FAIL; - switch(pHalData->rf_chip) - { + switch (pHalData->rf_chip) { case RF_PSEUDO_11N: RTW_INFO("%s(): RF_PSEUDO_11N\n",__FUNCTION__); break; - default: + default: rtStatus = PHY_RF6052_Config_8814A(Adapter); break; } @@ -651,11 +638,10 @@ phy_SetRFPowerState_8814E( BOOLEAN bResult = TRUE; u8 i, QueueID; PRT_POWER_SAVE_CONTROL pPSC = GET_POWER_SAVE_CONTROL(pMgntInfo); - + pHalData->SetRFPowerStateInProgress = TRUE; - switch( eRFPowerState ) - { + switch ( eRFPowerState ) { // // SW radio on/IPS site survey call will execute all flow // HW radio on @@ -670,20 +656,17 @@ phy_SetRFPowerState_8814E( { // The current RF state is OFF and the RF OFF level is halting the NIC, re-initialize the NIC. s32 rtstatus; u32 InitializeCount = 0; - do - { + do { InitializeCount++; rtstatus = NicIFEnableNIC( Adapter ); }while( (rtstatus != _SUCCESS) &&(InitializeCount <10) ); RT_ASSERT(rtstatus == _SUCCESS,("Nic Initialize Fail\n")); RT_CLEAR_PS_LEVEL(Adapter, RT_RF_OFF_LEVL_HALT_NIC); - } - else - { // This is the normal case, we just turn on the RF. + } else { // This is the normal case, we just turn on the RF. phy_SetRTL8814ERfOn(Adapter); } - - // Turn on RF we are still linked, which might happen when + + // Turn on RF we are still linked, which might happen when // we quickly turn off and on HW RF. 2006.05.12, by rcnjko. if( pMgntInfo->bMediaConnect == TRUE ) Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_LINK); @@ -694,51 +677,42 @@ phy_SetRFPowerState_8814E( // Card Disable/SW radio off/HW radio off/IPS enter call case eRfOff: - { + { // Make sure BusyQueue is empty befor turn off RFE pwoer. - for(QueueID = 0, i = 0; QueueID < MAX_TX_QUEUE; ) - { - if(RTIsListEmpty(&Adapter->TcbBusyQueue[QueueID])) - { + for (QueueID = 0, i = 0; QueueID < MAX_TX_QUEUE; ) { + if(RTIsListEmpty(&Adapter->TcbBusyQueue[QueueID])) { QueueID++; continue; } - else if(IsLowPowerState(Adapter)) - { - RT_TRACE((COMP_POWER|COMP_RF), DBG_LOUD, + else if(IsLowPowerState(Adapter)) { + RT_TRACE((COMP_POWER|COMP_RF), DBG_LOUD, ("eRf Off/Sleep: %d times TcbBusyQueue[%d] !=0 but lower power state!\n", (i+1), QueueID)); break; - } - else - { - RT_TRACE((COMP_POWER|COMP_RF), DBG_LOUD, + } else { + RT_TRACE((COMP_POWER|COMP_RF), DBG_LOUD, ("eRf Off/Sleep: %d times TcbBusyQueue[%d] !=0 before doze!\n", (i+1), QueueID)); PlatformStallExecution(10); i++; } - - if(i >= MAX_DOZE_WAITING_TIMES_9x) - { + + if (i >= MAX_DOZE_WAITING_TIMES_9x) { RT_TRACE((COMP_POWER|COMP_RF), DBG_WARNING, ("\n\n\n SetZebraRFPowerState8185B(): eRfOff: %d times TcbBusyQueue[%d] != 0 !!!\n\n\n", MAX_DOZE_WAITING_TIMES_9x, QueueID)); break; } } - if(pPSC->RegRfPsLevel & RT_RF_OFF_LEVL_HALT_NIC) - { // Disable all components. + if (pPSC->RegRfPsLevel & RT_RF_OFF_LEVL_HALT_NIC) { // Disable all components. NicIFDisableNIC(Adapter); if(IS_HARDWARE_TYPE_8814AE(Adapter)) NicIFEnableInterrupt(Adapter); RT_SET_PS_LEVEL(Adapter, RT_RF_OFF_LEVL_HALT_NIC); - } - else - { // Normal case. + } else { // Normal case. //If Rf off reason is from IPS, Led should blink with no link, by Maddest 071015 if(pMgntInfo->RfOffReason==RF_CHANGE_BY_IPS ) - Adapter->HalFunc.LedControlHandler(Adapter,LED_CTL_NO_LINK); + Adapter->HalFunc.LedControlHandler(Adapter,LED_CTL_NO_LINK); else // Turn off LED if RF is not ON. - Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_POWER_OFF); + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_POWER_OFF); } } break; @@ -748,14 +722,13 @@ phy_SetRFPowerState_8814E( bResult = FALSE; RT_ASSERT(FALSE, ("phy_SetRFPowerState_8814E(): unknow state to set: 0x%X!!!\n", eRFPowerState)); break; - } + } - if(bResult) - { + if (bResult) { // Update current RF state variable. pHalData->eRFPowerState = eRFPowerState; } - + pHalData->SetRFPowerStateInProgress = FALSE; return bResult; @@ -774,23 +747,21 @@ phy_SetRFPowerState_8814U( BOOLEAN bResult = TRUE; u8 i, QueueID; PRT_USB_DEVICE pDevice = GET_RT_USB_DEVICE(Adapter); - - if(pHalData->SetRFPowerStateInProgress == TRUE) + + if (pHalData->SetRFPowerStateInProgress == TRUE) return FALSE; - + pHalData->SetRFPowerStateInProgress = TRUE; RT_TRACE(COMP_INIT, DBG_LOUD, ("======> phy_SetRFPowerState_8814U .\n")); - switch( eRFPowerState ) - { + switch ( eRFPowerState ) { case eRfOn: - if((pHalData->eRFPowerState == eRfOff) && + if ((pHalData->eRFPowerState == eRfOff) && RT_IN_PS_LEVEL(Adapter, RT_RF_OFF_LEVL_HALT_NIC)) { // The current RF state is OFF and the RF OFF level is halting the NIC, re-initialize the NIC. - RT_TRACE(COMP_RF, DBG_LOUD, ("======> phy_SetRFPowerState_8814U-eRfOn .\n")); + RT_TRACE(COMP_RF, DBG_LOUD, ("======> phy_SetRFPowerState_8814U-eRfOn .\n")); - if(!Adapter->bInHctTest) - { + if (!Adapter->bInHctTest) { // 2010/09/01 MH For 92CU, we do not make sure the RF B short initialize sequence // So disable the different RF on/off sequence for hidden AP. NicIFEnableNIC(Adapter); @@ -798,8 +769,8 @@ phy_SetRFPowerState_8814U( } } break; - - // + + // // In current solution, RFSleep=RFOff in order to save power under 802.11 power save. // By Bruce, 2008-01-16. // @@ -808,7 +779,7 @@ phy_SetRFPowerState_8814U( // ToDo: } break; - + case eRfOff: // HW setting had been configured. // Both of these RF configures are the same, configuring twice may cause HW abnormal. @@ -816,85 +787,76 @@ phy_SetRFPowerState_8814U( break; rtw_write8(Adapter, 0xf015, 0x40); //page added for usb3 bus // Make sure BusyQueue is empty befor turn off RFE pwoer. - for(QueueID = 0, i = 0; QueueID < MAX_TX_QUEUE; ) - { - if(RTIsListEmpty(&Adapter->TcbBusyQueue[QueueID])) - { + for (QueueID = 0, i = 0; QueueID < MAX_TX_QUEUE; ) { + if(RTIsListEmpty(&Adapter->TcbBusyQueue[QueueID])) { QueueID++; continue; - } - else - { + } else { RT_TRACE(COMP_POWER, DBG_LOUD, ("eRf Off/Sleep: %d times TcbBusyQueue[%d] !=0 before doze!\n", (i+1), QueueID)); PlatformSleepUs(10); i++; } - - if(i >= MAX_DOZE_WAITING_TIMES_9x) - { + + if(i >= MAX_DOZE_WAITING_TIMES_9x) { RT_TRACE(COMP_POWER, DBG_LOUD, ("\n\n\n SetZebraRFPowerState8185B(): eRfOff: %d times TcbBusyQueue[%d] != 0 !!!\n\n\n", MAX_DOZE_WAITING_TIMES_9x, QueueID)); break; } - } + } - // + // //RF Off/Sleep sequence. Designed/tested from SD4 Scott, SD1 Grent and Jonbon. - // Added by + // Added by // - //================================================================== + //================================================================== // CU will call card disable flow to set RF off, such that we call halt directly // and set the PS_LEVEL to HALT_NIC or we might call halt twice in N6usbHalt in some cases. - // 2010.03.05. Added by tynli. + // 2010.03.05. Added by tynli. if(pMgntInfo->RfOffReason & RF_CHANGE_BY_IPS || pMgntInfo->RfOffReason & RF_CHANGE_BY_HW || pMgntInfo->RfOffReason & RF_CHANGE_BY_SW) { //for HW/Sw radio off and IPS flow - //RT_TRACE(COMP_INIT, DBG_LOUD, ("======> CardDisableWithoutHWSM -eRfOff.\n")); - if(!Adapter->bInHctTest) - { + //RT_TRACE(COMP_INIT, DBG_LOUD, ("======> CardDisableWithoutHWSM -eRfOff.\n")); + if(!Adapter->bInHctTest) { // 2010/09/01 MH For 92CU, we do not make sure the RF B short initialize sequence // So disable the different RF on/off sequence for hidden AP. NicIFDisableNIC(Adapter); RT_SET_PS_LEVEL(Adapter, RT_RF_OFF_LEVL_HALT_NIC); } - } + } break; default: bResult = FALSE; RT_ASSERT(FALSE, ("phy_SetRFPowerState_8814U(): unknow state to set: 0x%X!!!\n", eRFPowerState)); break; - } - - if(bResult) - { + } + + if (bResult) { // Update current RF state variable. pHalData->eRFPowerState = eRFPowerState; - - switch(pHalData->rf_chip ) - { - default: - switch(pHalData->eRFPowerState) - { + + switch (pHalData->rf_chip ) { + default: + switch (pHalData->eRFPowerState) { case eRfOff: // //If Rf off reason is from IPS, Led should blink with no link, by Maddest 071015 // if(pMgntInfo->RfOffReason==RF_CHANGE_BY_IPS ) - Adapter->HalFunc.LedControlHandler(Adapter,LED_CTL_NO_LINK); + Adapter->HalFunc.LedControlHandler(Adapter,LED_CTL_NO_LINK); else // Turn off LED if RF is not ON. - Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_POWER_OFF); + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_POWER_OFF); break; - + case eRfOn: - // Turn on RF we are still linked, which might happen when + // Turn on RF we are still linked, which might happen when // we quickly turn off and on HW RF. 2006.05.12, by rcnjko. if( pMgntInfo->bMediaConnect == TRUE ) - Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_LINK); + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_LINK); else // Turn off LED if RF is not ON. Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_NO_LINK); break; - + default: // do nothing. break; @@ -903,7 +865,7 @@ phy_SetRFPowerState_8814U( break; }// Switch rf_chip } - + pHalData->SetRFPowerStateInProgress = FALSE; RT_TRACE(COMP_INIT, DBG_LOUD, ("<====== phy_SetRFPowerState_8814U .\n")); return bResult; @@ -922,23 +884,21 @@ phy_SetRFPowerState_8814Sdio( BOOLEAN bResult = TRUE; u8 i, QueueID; PRT_SDIO_DEVICE pDevice = GET_RT_SDIO_DEVICE(Adapter); - + if(pHalData->SetRFPowerStateInProgress == TRUE) return FALSE; - + pHalData->SetRFPowerStateInProgress = TRUE; RT_TRACE(COMP_INIT, DBG_LOUD, ("======> phy_SetRFPowerState_8814Sdio .\n")) - - switch( eRFPowerState ) - { + + switch ( eRFPowerState ) { case eRfOn: if((pHalData->eRFPowerState == eRfOff) && RT_IN_PS_LEVEL(Adapter, RT_RF_OFF_LEVL_HALT_NIC)) { // The current RF state is OFF and the RF OFF level is halting the NIC, re-initialize the NIC. - RT_TRACE(COMP_RF, DBG_LOUD, ("======> phy_SetRFPowerState_8814Sdio-eRfOn .\n")); + RT_TRACE(COMP_RF, DBG_LOUD, ("======> phy_SetRFPowerState_8814Sdio-eRfOn .\n")); - if(!Adapter->bInHctTest) - { + if(!Adapter->bInHctTest) { // 2010/09/01 MH For 92CU, we do not make sure the RF B short initialize sequence // So disable the different RF on/off sequence for hidden AP. NicIFEnableNIC(Adapter); @@ -955,8 +915,8 @@ phy_SetRFPowerState_8814Sdio( pHalData->bIQKInitialized = _TRUE; } break; - - // + + // // In current solution, RFSleep=RFOff in order to save power under 802.11 power save. // By Bruce, 2008-01-16. // @@ -965,7 +925,7 @@ phy_SetRFPowerState_8814Sdio( // ToDo: } break; - + case eRfOff: // HW setting had been configured. // Both of these RF configures are the same, configuring twice may cause HW abnormal. @@ -973,87 +933,78 @@ phy_SetRFPowerState_8814Sdio( break; // Make sure BusyQueue is empty befor turn off RFE pwoer. - for(QueueID = 0, i = 0; QueueID < MAX_TX_QUEUE; ) - { - if(RTIsListEmpty(&Adapter->TcbBusyQueue[QueueID])) - { + for(QueueID = 0, i = 0; QueueID < MAX_TX_QUEUE; ) { + if(RTIsListEmpty(&Adapter->TcbBusyQueue[QueueID])) { //DbgPrint("QueueID = %d", QueueID); QueueID++; continue; - } - else - { + } else { RT_TRACE(COMP_POWER, DBG_LOUD, ("eRf Off/Sleep: %d times TcbBusyQueue[%d] !=0 before doze!\n", (i+1), QueueID)); PlatformSleepUs(10); i++; } - - if(i >= MAX_DOZE_WAITING_TIMES_9x) - { + + if(i >= MAX_DOZE_WAITING_TIMES_9x) { RT_TRACE(COMP_POWER, DBG_LOUD, ("\n\n\n SetZebraRFPowerState8185B(): eRfOff: %d times TcbBusyQueue[%d] != 0 !!!\n\n\n", MAX_DOZE_WAITING_TIMES_9x, QueueID)); break; } - } + } - // + // //RF Off/Sleep sequence. Designed/tested from SD4 Scott, SD1 Grent and Jonbon. - // Added by + // Added by // - //================================================================== + //================================================================== // CU will call card disable flow to set RF off, such that we call halt directly // and set the PS_LEVEL to HALT_NIC or we might call halt twice in N6usbHalt in some cases. - // 2010.03.05. Added by tynli. + // 2010.03.05. Added by tynli. if(pMgntInfo->RfOffReason & RF_CHANGE_BY_IPS || pMgntInfo->RfOffReason & RF_CHANGE_BY_HW || pMgntInfo->RfOffReason & RF_CHANGE_BY_SW) { //for HW/Sw radio off and IPS flow - //RT_TRACE(COMP_INIT, DBG_LOUD, ("======> CardDisableWithoutHWSM -eRfOff.\n")); - if(!Adapter->bInHctTest) - { + //RT_TRACE(COMP_INIT, DBG_LOUD, ("======> CardDisableWithoutHWSM -eRfOff.\n")); + if(!Adapter->bInHctTest) { // 2010/09/01 MH For 92CU, we do not make sure the RF B short initialize sequence // So disable the different RF on/off sequence for hidden AP. - NicIFDisableNIC(Adapter); - + NicIFDisableNIC(Adapter); + RT_SET_PS_LEVEL(Adapter, RT_RF_OFF_LEVL_HALT_NIC); } - } + } break; default: bResult = FALSE; RT_ASSERT(FALSE, ("phy_SetRFPowerState_8814Sdio(): unknow state to set: 0x%X!!!\n", eRFPowerState)); break; - } - - if(bResult) - { + } + + if(bResult) { // Update current RF state variable. pHalData->eRFPowerState = eRFPowerState; - - switch(pHalData->rf_chip ) - { - default: - switch(pHalData->eRFPowerState) - { + + switch (pHalData->rf_chip ) { + default: + switch(pHalData->eRFPowerState) { case eRfOff: // //If Rf off reason is from IPS, Led should blink with no link, by Maddest 071015 // if(pMgntInfo->RfOffReason==RF_CHANGE_BY_IPS ) - Adapter->HalFunc.LedControlHandler(Adapter,LED_CTL_NO_LINK); + Adapter->HalFunc.LedControlHandler(Adapter,LED_CTL_NO_LINK); else // Turn off LED if RF is not ON. - Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_POWER_OFF); + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_POWER_OFF); break; - + case eRfOn: - // Turn on RF we are still linked, which might happen when + // Turn on RF we are still linked, which might happen when // we quickly turn off and on HW RF. 2006.05.12, by rcnjko. if( pMgntInfo->bMediaConnect == TRUE ) - Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_LINK); + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_LINK); else // Turn off LED if RF is not ON. - Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_NO_LINK); + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_NO_LINK); break; - + default: // do nothing. break; @@ -1062,7 +1013,7 @@ phy_SetRFPowerState_8814Sdio( break; }// Switch rf_chip } - + pHalData->SetRFPowerStateInProgress = FALSE; return bResult; @@ -1074,7 +1025,7 @@ phy_SetRFPowerState_8814Sdio( BOOLEAN PHY_SetRFPowerState8814A( - IN PADAPTER Adapter, + IN PADAPTER Adapter, IN rt_rf_power_state eRFPowerState ) { @@ -1082,8 +1033,7 @@ PHY_SetRFPowerState8814A( BOOLEAN bResult = FALSE; RT_TRACE(COMP_RF, DBG_LOUD, ("---------> PHY_SetRFPowerState8814(): eRFPowerState(%d)\n", eRFPowerState)); - if(eRFPowerState == pHalData->eRFPowerState) - { + if(eRFPowerState == pHalData->eRFPowerState) { RT_TRACE(COMP_RF, DBG_LOUD, ("<--------- PHY_SetRFPowerState8814(): discard the request for eRFPowerState(%d) is the same.\n", eRFPowerState)); return bResult; } @@ -1094,7 +1044,7 @@ PHY_SetRFPowerState8814A( #elif (DEV_BUS_TYPE == RT_SDIO_INTERFACE) bResult = phy_SetRFPowerState_8814Sdio(Adapter, eRFPowerState); #endif - + RT_TRACE(COMP_RF, DBG_LOUD, ("<--------- PHY_SetRFPowerState8814(): bResult(%d)\n", bResult)); return bResult; @@ -1145,39 +1095,37 @@ PHY_SetTxPowerLevel8814( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - u8 jaguar2Rates[][4] = { {MGN_1M, MGN_2M, MGN_5_5M, MGN_11M}, - {MGN_6M, MGN_9M, MGN_12M, MGN_18M}, - {MGN_24M, MGN_36M, MGN_48M, MGN_54M}, + u8 jaguar2Rates[][4] = { {MGN_1M, MGN_2M, MGN_5_5M, MGN_11M}, + {MGN_6M, MGN_9M, MGN_12M, MGN_18M}, + {MGN_24M, MGN_36M, MGN_48M, MGN_54M}, {MGN_MCS0, MGN_MCS1, MGN_MCS2, MGN_MCS3}, - {MGN_MCS4, MGN_MCS5, MGN_MCS6, MGN_MCS7}, + {MGN_MCS4, MGN_MCS5, MGN_MCS6, MGN_MCS7}, {MGN_MCS8, MGN_MCS9, MGN_MCS10, MGN_MCS11}, {MGN_MCS12, MGN_MCS13, MGN_MCS14, MGN_MCS15}, - {MGN_MCS16, MGN_MCS17, MGN_MCS18, MGN_MCS19}, + {MGN_MCS16, MGN_MCS17, MGN_MCS18, MGN_MCS19}, {MGN_MCS20, MGN_MCS21, MGN_MCS22, MGN_MCS23}, - {MGN_VHT1SS_MCS0, MGN_VHT1SS_MCS1, MGN_VHT1SS_MCS2, MGN_VHT1SS_MCS3}, - {MGN_VHT1SS_MCS4, MGN_VHT1SS_MCS5, MGN_VHT1SS_MCS6, MGN_VHT1SS_MCS7}, - {MGN_VHT2SS_MCS8, MGN_VHT2SS_MCS9, MGN_VHT2SS_MCS0, MGN_VHT2SS_MCS1}, - {MGN_VHT2SS_MCS2, MGN_VHT2SS_MCS3, MGN_VHT2SS_MCS4, MGN_VHT2SS_MCS5}, + {MGN_VHT1SS_MCS0, MGN_VHT1SS_MCS1, MGN_VHT1SS_MCS2, MGN_VHT1SS_MCS3}, + {MGN_VHT1SS_MCS4, MGN_VHT1SS_MCS5, MGN_VHT1SS_MCS6, MGN_VHT1SS_MCS7}, + {MGN_VHT2SS_MCS8, MGN_VHT2SS_MCS9, MGN_VHT2SS_MCS0, MGN_VHT2SS_MCS1}, + {MGN_VHT2SS_MCS2, MGN_VHT2SS_MCS3, MGN_VHT2SS_MCS4, MGN_VHT2SS_MCS5}, {MGN_VHT2SS_MCS6, MGN_VHT2SS_MCS7, MGN_VHT2SS_MCS8, MGN_VHT2SS_MCS9}, - {MGN_VHT3SS_MCS0, MGN_VHT3SS_MCS1, MGN_VHT3SS_MCS2, MGN_VHT3SS_MCS3}, - {MGN_VHT3SS_MCS4, MGN_VHT3SS_MCS5, MGN_VHT3SS_MCS6, MGN_VHT3SS_MCS7}, - {MGN_VHT3SS_MCS8, MGN_VHT3SS_MCS9, 0, 0}}; + {MGN_VHT3SS_MCS0, MGN_VHT3SS_MCS1, MGN_VHT3SS_MCS2, MGN_VHT3SS_MCS3}, + {MGN_VHT3SS_MCS4, MGN_VHT3SS_MCS5, MGN_VHT3SS_MCS6, MGN_VHT3SS_MCS7}, + {MGN_VHT3SS_MCS8, MGN_VHT3SS_MCS9, 0, 0}}; - - for( path = ODM_RF_PATH_A; path <= ODM_RF_PATH_D; ++path ) - { + + for ( path = ODM_RF_PATH_A; path <= ODM_RF_PATH_D; ++path ) { PHY_SetTxPowerLevelByPath(Adapter, Channel, (u8)path); } #if 0 //todo H2C_TXPOWER_INDEX_OFFLOAD ? - if(Adapter->MgntInfo.bScanInProgress == FALSE && pHalData->RegFWOffload == 2) - { + if (Adapter->MgntInfo.bScanInProgress == FALSE && pHalData->RegFWOffload == 2) { HalDownloadTxPowerLevel8814(Adapter, value); } #endif //0 } /************************************************************************************************************** - * Description: + * Description: * The low-level interface to get the FINAL Tx Power Index , called by both MP and Normal Driver. * * <20120830, Kordan> @@ -1186,8 +1134,8 @@ u8 PHY_GetTxPowerIndex_8814A( IN PADAPTER pAdapter, IN u8 RFPath, - IN u8 Rate, - IN u8 BandWidth, + IN u8 Rate, + IN u8 BandWidth, IN u8 Channel, struct txpwr_idx_comp *tic ) @@ -1200,7 +1148,7 @@ PHY_GetTxPowerIndex_8814A( s8 tpt_offset = 0; /* RTW_INFO( "===>%s\n", __FUNCTION__ ); */ - + txPower = (s8) PHY_GetTxPowerIndexBase( pAdapter, RFPath, Rate, BandWidth, Channel, &bIn24G ); powerDiffByRate = PHY_GetTxPowerByRate( pAdapter, (u8)(!bIn24G), RFPath, tx_num, Rate ); @@ -1212,7 +1160,7 @@ PHY_GetTxPowerIndex_8814A( /*RTW_INFO("Rate-0x%x: (TxPower, PowerDiffByRate Path-%c) = (0x%X, %d)\n", Rate, ((RFPath==0)?'A':(RFPath==1)?'B':(RFPath==2)?'C':'D'), txPower, powerDiffByRate);*/ txPower += powerDiffByRate; - + //txPower += PHY_GetTxPowerTrackingOffset( pAdapter, RFPath, Rate ); #if 0 //todo ? #if CCX_SUPPORT @@ -1229,17 +1177,17 @@ PHY_GetTxPowerIndex_8814A( tic->ebias = 0; } - if(txPower > MAX_POWER_INDEX) + if (txPower > MAX_POWER_INDEX) txPower = MAX_POWER_INDEX; - //if (Adapter->registrypriv.mp_mode==0 && + //if (Adapter->registrypriv.mp_mode==0 && //(pHalData->bautoload_fail_flag || pHalData->EfuseMap[EFUSE_INIT_MAP][EEPROM_TX_PWR_INX_JAGUAR] == 0xFF)) //txPower = 0x12; /*RTW_INFO("Final Tx Power(RF-%c, Channel: %d) = %d(0x%X)\n", ((RFPath==0)?'A':(RFPath==1)?'B':(RFPath==2)?'C':'D'), Channel, txPower, txPower);*/ - return (u8) txPower; + return (u8) txPower; } @@ -1247,7 +1195,7 @@ VOID PHY_SetTxPowerIndex_8814A( IN PADAPTER Adapter, IN u32 PowerIndex, - IN u8 RFPath, + IN u8 RFPath, IN u8 Rate ) { @@ -1273,7 +1221,7 @@ PHY_UpdateTxPowerDbm8814A( } -u32 +u32 PHY_GetTxBBSwing_8814A( IN PADAPTER Adapter, IN BAND_TYPE Band, @@ -1288,92 +1236,70 @@ PHY_GetTxBBSwing_8814A( u32 out = 0x200; const s8 AUTO = -1; - RT_TRACE(COMP_MP, DBG_LOUD, ("===> PHY_GetTxBBSwing_8814A, bbSwing_2G: %d, bbSwing_5G: %d\n", + RT_TRACE(COMP_MP, DBG_LOUD, ("===> PHY_GetTxBBSwing_8814A, bbSwing_2G: %d, bbSwing_5G: %d\n", (s4Byte)bbSwing_2G, (s4Byte)bbSwing_5G)); - if ( pHalData->bautoload_fail_flag ) - { - if ( Band == BAND_ON_2_4G ) - { + if ( pHalData->bautoload_fail_flag ) { + if ( Band == BAND_ON_2_4G ) { pRFCalibrateInfo->BBSwingDiff2G = bbSwing_2G; if (bbSwing_2G == 0) out = 0x200; // 0 dB else if (bbSwing_2G == -3) out = 0x16A; // -3 dB else if (bbSwing_2G == -6) out = 0x101; // -6 dB else if (bbSwing_2G == -9) out = 0x0B6; // -9 dB - else - { - if ( pHalData->ExternalPA_2G ) - { + else { + if ( pHalData->ExternalPA_2G ) { pRFCalibrateInfo->BBSwingDiff2G = -3; out = 0x16A; - } - else - { + } else { pRFCalibrateInfo->BBSwingDiff2G = 0; out = 0x200; } } - } - else if ( Band == BAND_ON_5G ) - { + } + else if ( Band == BAND_ON_5G ) { pRFCalibrateInfo->BBSwingDiff5G = bbSwing_5G; - if(bbSwing_5G == 0) out = 0x200; // 0 dB + if (bbSwing_5G == 0) out = 0x200; // 0 dB else if (bbSwing_5G == -3) out = 0x16A; // -3 dB else if (bbSwing_5G == -6) out = 0x101; // -6 dB else if (bbSwing_5G == -9) out = 0x0B6; // -9 dB - else - { - if (pHalData->ExternalPA_5G) - { + else { + if (pHalData->ExternalPA_5G) { pRFCalibrateInfo->BBSwingDiff5G = -3; out = 0x16A; - } - else - { + } else { pRFCalibrateInfo->BBSwingDiff5G = 0; out = 0x200; } } - } - else - { + } else { pRFCalibrateInfo->BBSwingDiff2G = -3; - pRFCalibrateInfo->BBSwingDiff5G = -3; + pRFCalibrateInfo->BBSwingDiff5G = -3; out = 0x16A; // -3 dB } - } - else - { + } else { u32 swing = 0, onePathSwing = 0; - if (Band == BAND_ON_2_4G) - { - if (GetRegTxBBSwing_2G(Adapter) == AUTO) - { + if (Band == BAND_ON_2_4G) { + if (GetRegTxBBSwing_2G(Adapter) == AUTO) { EFUSE_ShadowRead(Adapter, 1, EEPROM_TX_BBSWING_2G_8814, (u32 *)&swing); - if (swing == 0xFF) - { + if (swing == 0xFF) { if(bbSwing_2G == 0) swing = 0x00; // 0 dB else if (bbSwing_2G == -3) swing = 0x55; // -3 dB else if (bbSwing_2G == -6) swing = 0xAA; // -6 dB else if (bbSwing_2G == -9) swing = 0xFF; // -9 dB - else swing = 0x00; + else swing = 0x00; } - } + } else if (bbSwing_2G == 0) swing = 0x00; // 0 dB else if (bbSwing_2G == -3) swing = 0x55; // -3 dB else if (bbSwing_2G == -6) swing = 0xAA; // -6 dB else if (bbSwing_2G == -9) swing = 0xFF; // -9 dB else swing = 0x00; - } - else - { - if (GetRegTxBBSwing_5G(Adapter) == AUTO) - { + } else { + if (GetRegTxBBSwing_5G(Adapter) == AUTO) { EFUSE_ShadowRead(Adapter, 1, EEPROM_TX_BBSWING_5G_8814, (u32 *)&swing); - if (swing == 0xFF) - { - if(bbSwing_5G == 0) swing = 0x00; // 0 dB + if (swing == 0xFF) { + if (bbSwing_5G == 0) swing = 0x00; // 0 dB else if (bbSwing_5G == -3) swing = 0x55; // -3 dB else if (bbSwing_5G == -6) swing = 0xAA; // -6 dB else if (bbSwing_5G == -9) swing = 0xFF; // -9 dB @@ -1389,40 +1315,36 @@ PHY_GetTxBBSwing_8814A( if (RFPath == ODM_RF_PATH_A) onePathSwing = (swing & 0x3) >> 0; // 0xC6/C7[1:0] - else if(RFPath == ODM_RF_PATH_B) + else if (RFPath == ODM_RF_PATH_B) onePathSwing = (swing & 0xC) >> 2; // 0xC6/C7[3:2] - else if(RFPath == ODM_RF_PATH_C) + else if (RFPath == ODM_RF_PATH_C) onePathSwing = (swing & 0x30) >> 4; // 0xC6/C7[5:4] - else if(RFPath == ODM_RF_PATH_D) + else if (RFPath == ODM_RF_PATH_D) onePathSwing = (swing & 0xC0) >> 6; // 0xC6/C7[7:6] - if (onePathSwing == 0x0) - { - if (Band == BAND_ON_2_4G) + if (onePathSwing == 0x0) { + if (Band == BAND_ON_2_4G) pRFCalibrateInfo->BBSwingDiff2G = 0; else pRFCalibrateInfo->BBSwingDiff5G = 0; out = 0x200; // 0 dB - } - else if (onePathSwing == 0x1) - { - if (Band == BAND_ON_2_4G) + } + else if (onePathSwing == 0x1) { + if (Band == BAND_ON_2_4G) pRFCalibrateInfo->BBSwingDiff2G = -3; else pRFCalibrateInfo->BBSwingDiff5G = -3; out = 0x16A; // -3 dB - } - else if (onePathSwing == 0x2) - { - if (Band == BAND_ON_2_4G) + } + else if (onePathSwing == 0x2) { + if (Band == BAND_ON_2_4G) pRFCalibrateInfo->BBSwingDiff2G = -6; else pRFCalibrateInfo->BBSwingDiff5G = -6; out = 0x101; // -6 dB - } - else if (onePathSwing == 0x3) - { - if (Band == BAND_ON_2_4G) + } + else if (onePathSwing == 0x3) { + if (Band == BAND_ON_2_4G) pRFCalibrateInfo->BBSwingDiff2G = -9; else pRFCalibrateInfo->BBSwingDiff5G = -9; @@ -1441,28 +1363,21 @@ phy_SetBwRegAdc_8814A( IN PADAPTER Adapter, IN u8 Band, IN CHANNEL_WIDTH CurrentBW -) +) { - switch(CurrentBW) - { + switch (CurrentBW) { case CHANNEL_WIDTH_20: - if(Band == BAND_ON_5G) - { + if(Band == BAND_ON_5G) { PHY_SetBBReg(Adapter, rRFMOD_Jaguar, BIT(1)|BIT(0), 0x0); // 0x8ac[28, 21,20,16, 9:6,1,0]=10'b10_0011_0000 - } - else - { + } else { PHY_SetBBReg(Adapter, rRFMOD_Jaguar, BIT(1)|BIT(0), 0x0); // 0x8ac[28, 21,20,16, 9:6,1,0]=10'b10_0101_0000 } break; case CHANNEL_WIDTH_40: - if(Band == BAND_ON_5G) - { + if(Band == BAND_ON_5G) { PHY_SetBBReg(Adapter, rRFMOD_Jaguar, BIT(1)|BIT(0), 0x1); // 0x8ac[17, 11, 10, 7:6,1,0]=7'b100_0001 - } - else - { + } else { PHY_SetBBReg(Adapter, rRFMOD_Jaguar, BIT(1)|BIT(0), 0x1); // 0x8ac[17, 11, 10, 7:6,1,0]=7'b101_0001 } break; @@ -1483,20 +1398,19 @@ phy_SetBwRegAgc_8814A( IN PADAPTER Adapter, IN u8 Band, IN CHANNEL_WIDTH CurrentBW -) +) { u32 AgcValue = 7; - switch(CurrentBW) - { + switch (CurrentBW) { case CHANNEL_WIDTH_20: - if(Band == BAND_ON_5G) + if (Band == BAND_ON_5G) AgcValue = 6; else AgcValue = 6; break; case CHANNEL_WIDTH_40: - if(Band == BAND_ON_5G) + if (Band == BAND_ON_5G) AgcValue = 8; else AgcValue = 7; @@ -1511,7 +1425,7 @@ phy_SetBwRegAgc_8814A( break; } - PHY_SetBBReg(Adapter, rAGC_table_Jaguar, 0xf000, AgcValue); // 0x82C[15:12] = AgcValue + PHY_SetBBReg(Adapter, rAGC_table_Jaguar, 0xf000, AgcValue); // 0x82C[15:12] = AgcValue } @@ -1520,31 +1434,27 @@ phy_SwBand8814A( IN PADAPTER pAdapter, IN u8 channelToSW) { - u8 u1Btmp; + u8 u1Btmp; BOOLEAN ret_value = _TRUE; u8 Band = BAND_ON_5G, BandToSW; u1Btmp = rtw_read8(pAdapter, REG_CCK_CHECK_8814A); - if(u1Btmp & BIT7) + if (u1Btmp & BIT7) Band = BAND_ON_5G; else Band = BAND_ON_2_4G; // Use current channel to judge Band Type and switch Band if need. - if(channelToSW > 14) - { + if (channelToSW > 14) { BandToSW = BAND_ON_5G; - } - else - { + } else { BandToSW = BAND_ON_2_4G; } - if(BandToSW != Band) - { + if(BandToSW != Band) { PHY_SwitchWirelessBand8814A(pAdapter,BandToSW); } - + return ret_value; } @@ -1559,9 +1469,8 @@ PHY_SetRFEReg8814A( u8 u1tmp = 0; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - if(bInit) - { - switch(pHalData->RFEType){ + if (bInit) { + switch (pHalData->RFEType) { case 2:case 1: PHY_SetBBReg(Adapter, 0x1994, 0xf, 0xf); // 0x1994[3:0] = 0xf u1tmp = PlatformEFIORead1Byte(Adapter, REG_GPIO_IO_SEL_8814A); @@ -1574,9 +1483,8 @@ PHY_SetRFEReg8814A( break; } } - else if(Band == BAND_ON_2_4G) - { - switch(pHalData->RFEType){ + else if (Band == BAND_ON_2_4G) { + switch (pHalData->RFEType){ case 2: PHY_SetBBReg(Adapter, rA_RFE_Pinmux_Jaguar, bMaskDWord, 0x72707270); // 0xCB0 = 0x72707270 PHY_SetBBReg(Adapter, rB_RFE_Pinmux_Jaguar, bMaskDWord, 0x72707270); // 0xEB0 = 0x72707270 @@ -1600,11 +1508,9 @@ PHY_SetRFEReg8814A( PHY_SetBBReg(Adapter, rC_RFE_Pinmux_Jaguar, bMaskDWord, 0x77777777); // 0x18B4 = 0x77777777 PHY_SetBBReg(Adapter, 0x1ABC, 0x0ff00000, 0x77); // 0x1ABC[27:20] = 0x77 break; - + } - } - else - { + } else { switch(pHalData->RFEType){ case 2: PHY_SetBBReg(Adapter, rA_RFE_Pinmux_Jaguar, bMaskDWord, 0x33173717); // 0xCB0 = 0x33173717 @@ -1613,7 +1519,7 @@ PHY_SetRFEReg8814A( PHY_SetBBReg(Adapter, rD_RFE_Pinmux_Jaguar, bMaskDWord, 0x77177717); // 0x1AB4 = 0x77177717 PHY_SetBBReg(Adapter, 0x1ABC, 0x0ff00000, 0x37); // 0x1ABC[27:20] = 0x37 break; - + case 1: PHY_SetBBReg(Adapter, rA_RFE_Pinmux_Jaguar, bMaskDWord, 0x33173317); // 0xCB0 = 0x33173317 PHY_SetBBReg(Adapter, rB_RFE_Pinmux_Jaguar, bMaskDWord, 0x33173317); // 0xEB0 = 0x33173317 @@ -1634,7 +1540,7 @@ PHY_SetRFEReg8814A( } } -VOID +VOID phy_SetBBSwingByBand_8814A( IN PADAPTER Adapter, IN u8 Band, @@ -1643,29 +1549,28 @@ phy_SetBBSwingByBand_8814A( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - s8 BBDiffBetweenBand = 0; + s8 BBDiffBetweenBand = 0; PDM_ODM_T pDM_Odm = &pHalData->odmpriv; PODM_RF_CAL_T pRFCalibrateInfo = &(pDM_Odm->RFCalibrateInfo); - - PHY_SetBBReg(Adapter, rA_TxScale_Jaguar, 0xFFE00000, + + PHY_SetBBReg(Adapter, rA_TxScale_Jaguar, 0xFFE00000, PHY_GetTxBBSwing_8814A(Adapter, (BAND_TYPE)Band, ODM_RF_PATH_A)); // 0xC1C[31:21] - PHY_SetBBReg(Adapter, rB_TxScale_Jaguar, 0xFFE00000, + PHY_SetBBReg(Adapter, rB_TxScale_Jaguar, 0xFFE00000, PHY_GetTxBBSwing_8814A(Adapter, (BAND_TYPE)Band, ODM_RF_PATH_B)); // 0xE1C[31:21] - PHY_SetBBReg(Adapter, rC_TxScale_Jaguar2, 0xFFE00000, + PHY_SetBBReg(Adapter, rC_TxScale_Jaguar2, 0xFFE00000, PHY_GetTxBBSwing_8814A(Adapter, (BAND_TYPE)Band, ODM_RF_PATH_C)); // 0x181C[31:21] - PHY_SetBBReg(Adapter, rD_TxScale_Jaguar2, 0xFFE00000, + PHY_SetBBReg(Adapter, rD_TxScale_Jaguar2, 0xFFE00000, PHY_GetTxBBSwing_8814A(Adapter, (BAND_TYPE)Band, ODM_RF_PATH_D)); // 0x1A1C[31:21] - + // <20121005, Kordan> When TxPowerTrack is ON, we should take care of the change of BB swing. // That is, reset all info to trigger Tx power tracking. - - if (Band != PreviousBand) - { + + if (Band != PreviousBand) { BBDiffBetweenBand = (pRFCalibrateInfo->BBSwingDiff2G - pRFCalibrateInfo->BBSwingDiff5G); BBDiffBetweenBand = (Band == BAND_ON_2_4G) ? BBDiffBetweenBand : (-1 * BBDiffBetweenBand); - pRFCalibrateInfo->DefaultOfdmIndex += BBDiffBetweenBand*2; + pRFCalibrateInfo->DefaultOfdmIndex += BBDiffBetweenBand*2; } - + ODM_ClearTxPowerTrackingState(pDM_Odm); } @@ -1678,7 +1583,7 @@ PHY_SwitchWirelessBand8814A( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u8 PreBand = pHalData->CurrentBandType, tepReg = 0; - + RTW_INFO("==>PHY_SwitchWirelessBand8814() %s\n", ((Band==0)?"2.4G":"5G")); pHalData->CurrentBandType =(BAND_TYPE)Band; @@ -1686,14 +1591,13 @@ PHY_SwitchWirelessBand8814A( /*clear 0x1000[16], When this bit is set to 0, CCK and OFDM are disabled, and clock are gated. Otherwise, CCK and OFDM are enabled. */ tepReg = rtw_read8(Adapter, REG_SYS_CFG3_8814A+2); rtw_write8(Adapter, REG_SYS_CFG3_8814A+2, tepReg & (~BIT0)); - + // STOP Tx/Rx - //PHY_SetBBReg(Adapter, rOFDMCCKEN_Jaguar, bOFDMEN_Jaguar|bCCKEN_Jaguar, 0x00); + //PHY_SetBBReg(Adapter, rOFDMCCKEN_Jaguar, bOFDMEN_Jaguar|bCCKEN_Jaguar, 0x00); - if(Band == BAND_ON_2_4G) - {// 2.4G band + if (Band == BAND_ON_2_4G) { // 2.4G band - // AGC table select + // AGC table select PHY_SetBBReg(Adapter, rAGC_table_Jaguar2, 0x1F, 0); // 0x958[4:0] = 5b'00000 PHY_SetRFEReg8814A(Adapter, FALSE, Band); @@ -1701,8 +1605,7 @@ PHY_SwitchWirelessBand8814A( // cck_enable //PHY_SetBBReg(Adapter, rOFDMCCKEN_Jaguar, bOFDMEN_Jaguar|bCCKEN_Jaguar, 0x3); - if(Adapter->registrypriv.mp_mode == 0) - { + if (Adapter->registrypriv.mp_mode == 0) { // 0x80C & 0xa04 should use same antenna. PHY_SetBBReg(Adapter, rTxPath_Jaguar, 0xf0, 0x2); PHY_SetBBReg(Adapter, rCCK_RX_Jaguar, 0x0f000000, 0x5); @@ -1710,28 +1613,24 @@ PHY_SwitchWirelessBand8814A( PHY_SetBBReg(Adapter, rOFDMCCKEN_Jaguar, bOFDMEN_Jaguar|bCCKEN_Jaguar, 0x3); - // CCK_CHECK_en rtw_write8(Adapter, REG_CCK_CHECK_8814A, 0x0); /* after 5G swicth 2G , set A82[2] = 0 */ PHY_SetBBReg(Adapter, 0xa80, BIT18, 0x0); - - } - else //5G band - { + + } else { //5G band // CCK_CHECK_en rtw_write8(Adapter, REG_CCK_CHECK_8814A, 0x80); /* Enable CCK Tx function, even when CCK is off */ PHY_SetBBReg(Adapter, 0xa80, BIT18, 0x1); - - // AGC table select + + // AGC table select // Postpone to channel switch //PHY_SetBBReg(Adapter, rAGC_table_Jaguar2, 0x1F, 1); // 0x958[4:0] = 5b'00001 PHY_SetRFEReg8814A(Adapter, FALSE, Band); - if(Adapter->registrypriv.mp_mode == 0) - { + if (Adapter->registrypriv.mp_mode == 0) { PHY_SetBBReg(Adapter, rTxPath_Jaguar, 0xf0, 0x0); PHY_SetBBReg(Adapter, rCCK_RX_Jaguar, 0x0f000000, 0xF); } @@ -1746,13 +1645,13 @@ PHY_SwitchWirelessBand8814A( /* set 0x1000[16], When this bit is set to 0, CCK and OFDM are disabled, and clock are gated. Otherwise, CCK and OFDM are enabled.*/ tepReg = rtw_read8(Adapter, REG_SYS_CFG3_8814A+2); rtw_write8(Adapter, REG_SYS_CFG3_8814A+2, tepReg | BIT0); - + RTW_INFO("<==PHY_SwitchWirelessBand8814():Switch Band OK.\n"); - return _SUCCESS; + return _SUCCESS; } -u8 +u8 phy_GetSecondaryChnl_8814A( IN PADAPTER Adapter ) @@ -1761,40 +1660,37 @@ phy_GetSecondaryChnl_8814A( PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); //RTW_INFO("SCMapping: Case: pHalData->CurrentChannelBW %d, pHalData->nCur80MhzPrimeSC %d, pHalData->nCur40MhzPrimeSC %d \n",pHalData->CurrentChannelBW,pHalData->nCur80MhzPrimeSC,pHalData->nCur40MhzPrimeSC); - if(pHalData->CurrentChannelBW== CHANNEL_WIDTH_80) - { - if(pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) + if (pHalData->CurrentChannelBW== CHANNEL_WIDTH_80) { + if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) SCSettingOf40 = VHT_DATA_SC_40_LOWER_OF_80MHZ; - else if(pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) + else if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) SCSettingOf40 = VHT_DATA_SC_40_UPPER_OF_80MHZ; else RTW_INFO("SCMapping: DONOT CARE Mode Setting\n"); - - if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) + + if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) SCSettingOf20 = VHT_DATA_SC_20_LOWEST_OF_80MHZ; - else if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) SCSettingOf20 = VHT_DATA_SC_20_LOWER_OF_80MHZ; - else if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) SCSettingOf20 = VHT_DATA_SC_20_UPPER_OF_80MHZ; - else if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) SCSettingOf20 = VHT_DATA_SC_20_UPPERST_OF_80MHZ; - else - { - if(pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) + else { + if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) SCSettingOf20 = VHT_DATA_SC_40_LOWER_OF_80MHZ; - else if(pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) + else if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) SCSettingOf20 = VHT_DATA_SC_40_UPPER_OF_80MHZ; else RTW_INFO("SCMapping: DONOT CARE Mode Setting\n"); - } + } } - else if(pHalData->CurrentChannelBW == CHANNEL_WIDTH_40) - { + else if (pHalData->CurrentChannelBW == CHANNEL_WIDTH_40) { RTW_INFO("SCMapping: pHalData->CurrentChannelBW %d, pHalData->nCur40MhzPrimeSC %d \n",pHalData->CurrentChannelBW,pHalData->nCur40MhzPrimeSC); - if(pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) + if (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) SCSettingOf20 = VHT_DATA_SC_20_UPPER_OF_80MHZ; - else if(pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) + else if (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) SCSettingOf20 = VHT_DATA_SC_20_LOWER_OF_80MHZ; else RTW_INFO("SCMapping: DONOT CARE Mode Setting\n"); @@ -1809,13 +1705,12 @@ VOID phy_SetBwRegMac_8814A( IN PADAPTER Adapter, CHANNEL_WIDTH CurrentBW -) +) { u16 RegRfMod_BW, u2tmp = 0; RegRfMod_BW = PlatformEFIORead2Byte(Adapter, REG_TRXPTCL_CTL_8814A); - switch(CurrentBW) - { + switch (CurrentBW) { case CHANNEL_WIDTH_20: PlatformEFIOWrite2Byte(Adapter, REG_TRXPTCL_CTL_8814A, (RegRfMod_BW & 0xFE7F)); // BIT 7 = 0, BIT 8 = 0 break; @@ -1874,7 +1769,7 @@ void PHY_Set_SecCCATH_by_RXANT_8814A(PADAPTER pAdapter,u4Byte ulAntennaRx) case ANTENNA_AB: case ANTENNA_AC: - case ANTENNA_AD: + case ANTENNA_AD: case ANTENNA_BC: case ANTENNA_BD: case ANTENNA_CD: @@ -1908,7 +1803,7 @@ void PHY_Set_SecCCATH_by_RXANT_8814A(PADAPTER pAdapter,u4Byte ulAntennaRx) RTW_INFO("Unknown Rx antenna.\n"); break; } - } else if(pHalData->CurrentChannelBW == CHANNEL_WIDTH_40) { + } else if (pHalData->CurrentChannelBW == CHANNEL_WIDTH_40) { if (pHalData->bSWToBW40M == FALSE) { pHalData->BackUp_BB_REG_4_2nd_CCA[0] = PHY_QueryBBReg(pAdapter, rPwed_TH_Jaguar, 0x007c0000); pHalData->BackUp_BB_REG_4_2nd_CCA[1] = PHY_QueryBBReg(pAdapter, rCCAonSec_Jaguar, 0x0000ff00); @@ -1956,11 +1851,11 @@ void PHY_Set_SecCCATH_by_RXANT_8814A(PADAPTER pAdapter,u4Byte ulAntennaRx) PHY_SetBBReg(pAdapter, rCCAonSec_Jaguar, 0x0FFF0000, 0x7aa); /* 838[27:24]=6, RF80_secondary40, 838[23:20]=6, RF80_secondary20, 838[19:16]=6, RF80_primary*/ PHY_SetBBReg(pAdapter, rL1_Weight_Jaguar, 0x0000F000, 0x7); /* 840[15:12]=7, L1_square_Pk_weight_80M*/ } - + } -VOID PHY_SetRXSC_by_TXSC_8814A(PADAPTER Adapter, u1Byte SubChnlNum) +VOID PHY_SetRXSC_by_TXSC_8814A(PADAPTER Adapter, u1Byte SubChnlNum) { PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); @@ -1979,7 +1874,7 @@ VOID PHY_SetRXSC_by_TXSC_8814A(PADAPTER Adapter, u1Byte SubChnlNum) PHY_SetBBReg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x1); else if (SubChnlNum == 10) PHY_SetBBReg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x2); - } else if (pHalData->CurrentChannelBW == CHANNEL_WIDTH_40) { + } else if (pHalData->CurrentChannelBW == CHANNEL_WIDTH_40) { if (SubChnlNum == 1) PHY_SetBBReg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x1); else if (SubChnlNum == 2) @@ -1999,7 +1894,7 @@ VOID phy_SpurCalibration_8814A(PADAPTER Adapter) /*RTW_INFO("%s(),RFE Type =%d, CurrentCh = %d ,ChannelBW =%d\n", __func__, pHalData->RFEType, pHalData->CurrentChannel, pHalData->CurrentChannelBW);*/ /*RTW_INFO("%s(),Before RrNBI_Setting_Jaguar= %x\n", __func__, PHY_QueryBBReg(Adapter, rNBI_Setting_Jaguar, bMaskDWord));*/ - + if (pHalData->RFEType == 0) { switch (pHalData->CurrentChannelBW) { case CHANNEL_WIDTH_40: @@ -2052,7 +1947,7 @@ VOID phy_SpurCalibration_8814A(PADAPTER Adapter) Reset_NBI_CSI = FALSE; } break; - + default: break; } @@ -2096,7 +1991,7 @@ VOID phy_SpurCalibration_8814A(PADAPTER Adapter) break; } } - + if (Reset_NBI_CSI) { PHY_SetBBReg(Adapter, rNBI_Setting_Jaguar, 0x000fe000, 0xfc >> 1); PHY_SetBBReg(Adapter, rCSI_Mask_Setting1_Jaguar, BIT(0), 0); @@ -2105,7 +2000,7 @@ VOID phy_SpurCalibration_8814A(PADAPTER Adapter) PHY_SetBBReg(Adapter, rCSI_Fix_Mask6_Jaguar, bMaskDWord, 0); PHY_SetBBReg(Adapter, rCSI_Fix_Mask7_Jaguar, bMaskDWord, 0); } - + phydm_spur_nbi_setting_8814a(pDM_Odm); /*RTW_INFO("%s(),After RrNBI_Setting_Jaguar= %x\n", __func__, PHY_QueryBBReg(Adapter, rNBI_Setting_Jaguar, bMaskDWord));*/ } @@ -2177,7 +2072,7 @@ VOID phy_SetBwMode8814A(PADAPTER Adapter) SubChnlNum = phy_GetSecondaryChnl_8814A(Adapter); rtw_write8(Adapter, REG_DATA_SC_8814A, SubChnlNum); - if(pHalData->rf_chip == RF_PSEUDO_11N) + if (pHalData->rf_chip == RF_PSEUDO_11N) { RTW_INFO("phy_SetBwMode8814A: return for PSEUDO \n"); return; @@ -2189,8 +2084,7 @@ VOID phy_SetBwMode8814A(PADAPTER Adapter) phy_SetBwRegAgc_8814A(Adapter, pHalData->CurrentBandType, pHalData->CurrentChannelBW); //3 Set Reg848 RegA00 - switch(pHalData->CurrentChannelBW) - { + switch (pHalData->CurrentChannelBW) { case CHANNEL_WIDTH_20: break; @@ -2211,14 +2105,14 @@ VOID phy_SetBwMode8814A(PADAPTER Adapter) RTW_INFO("%s():unknown Bandwidth:%#X\n", __func__, pHalData->CurrentChannelBW); break; } - + #if (MP_DRIVER == 1) if (Adapter->registrypriv.mp_mode == 1) { /* 2 Set Reg 0x8AC */ PHY_SetRXSC_by_TXSC_8814A(Adapter, (SubChnlNum & 0xf)); PHY_Set_SecCCATH_by_RXANT_8814A(Adapter, pHalData->AntennaRxPath); } -#endif +#endif /* 3 Set RF related register */ PHY_RF6052SetBandwidth8814A(Adapter, pHalData->CurrentChannelBW); @@ -2227,7 +2121,6 @@ if (Adapter->registrypriv.mp_mode == 1) { } - //1 6. Channel setting API // Add for KFree Feature Requested by RF David. @@ -2240,24 +2133,20 @@ phy_SetKfreeToRF_8814A( IN u8 Data ) { - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(GetDefaultAdapter(Adapter)); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(GetDefaultAdapter(Adapter)); PDM_ODM_T pDM_Odm = &pHalData->odmpriv; BOOLEAN bOdd; PODM_RF_CAL_T pRFCalibrateInfo = &(pDM_Odm->RFCalibrateInfo); - if((Data%2) != 0) //odd -> positive - { + if ((Data%2) != 0) { //odd -> positive Data = Data - 1; PHY_SetRFReg(Adapter, eRFPath, rRF_TxGainOffset, BIT19, 1); bOdd = TRUE; - } - else // even -> negative - { + } else { // even -> negative PHY_SetRFReg(Adapter, eRFPath, rRF_TxGainOffset, BIT19, 0); bOdd = FALSE; } RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): RF_0x55[19]= %d\n", bOdd)); - switch(Data) - { + switch (Data) { case 2: PHY_SetRFReg(Adapter, eRFPath, rRF_TxGainOffset, BIT14, 1); pRFCalibrateInfo->KfreeOffset[eRFPath] = 0; @@ -2307,14 +2196,13 @@ phy_SetKfreeToRF_8814A( break; } - if(bOdd == FALSE) // that means Kfree offset is negative, we need to record it. - { + if (bOdd == FALSE) { // that means Kfree offset is negative, we need to record it. pRFCalibrateInfo->KfreeOffset[eRFPath] = (-1)*pRFCalibrateInfo->KfreeOffset[eRFPath]; RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): KfreeOffset = %d\n", pRFCalibrateInfo->KfreeOffset[eRFPath])); } else RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): KfreeOffset = %d\n", pRFCalibrateInfo->KfreeOffset[eRFPath])); - + } @@ -2330,60 +2218,50 @@ phy_ConfigKFree8814A( u8 targetval_C = 0xFF; u8 targetval_D = 0xFF; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - + //RTW_INFO("===>phy_ConfigKFree8814A()\n"); - - if (Adapter->registrypriv.RegPwrTrimEnable == 2) - { + + if (Adapter->registrypriv.RegPwrTrimEnable == 2) { //RTW_INFO("phy_ConfigKFree8814A(): RegPwrTrimEnable == 2, Disable \n"); return; } - else if (Adapter->registrypriv.RegPwrTrimEnable == 1 || Adapter->registrypriv.RegPwrTrimEnable == 0) - { + else if (Adapter->registrypriv.RegPwrTrimEnable == 1 || Adapter->registrypriv.RegPwrTrimEnable == 0) { RTW_INFO("phy_ConfigKFree8814A(): RegPwrTrimEnable == TRUE \n"); - if (bandType == BAND_ON_2_4G) // 2G - { + if (bandType == BAND_ON_2_4G) { // 2G RTW_INFO("phy_ConfigKFree8814A(): bandType == BAND_ON_2_4G, channelToSW= %d \n", channelToSW); - if (channelToSW <= 14 && channelToSW >= 1) - { + if (channelToSW <= 14 && channelToSW >= 1) { efuse_OneByteRead(Adapter, 0x3F4, &targetval_A, FALSE); // for Path A and B efuse_OneByteRead(Adapter, 0x3F5, &targetval_B, FALSE); // for Path C and D } - + } - else if (bandType == BAND_ON_5G) - { + else if (bandType == BAND_ON_5G) { RTW_INFO("phy_ConfigKFree8814A(): bandType == BAND_ON_5G, channelToSW= %d \n", channelToSW); - if (channelToSW >= 36 && channelToSW < 50) // 5GLB_1 - { + if (channelToSW >= 36 && channelToSW < 50) { // 5GLB_1 efuse_OneByteRead(Adapter, 0x3E0, &targetval_A, FALSE); efuse_OneByteRead(Adapter, 0x3E1, &targetval_B, FALSE); efuse_OneByteRead(Adapter, 0x3E2, &targetval_C, FALSE); efuse_OneByteRead(Adapter, 0x3E3, &targetval_D, FALSE); } - else if (channelToSW >= 50 && channelToSW <= 64) // 5GLB_2 - { + else if (channelToSW >= 50 && channelToSW <= 64) { // 5GLB_2 efuse_OneByteRead(Adapter, 0x3E4, &targetval_A, FALSE); efuse_OneByteRead(Adapter, 0x3E5, &targetval_B, FALSE); efuse_OneByteRead(Adapter, 0x3E6, &targetval_C, FALSE); efuse_OneByteRead(Adapter, 0x3E7, &targetval_D, FALSE); } - else if (channelToSW >= 100 && channelToSW <= 118) // 5GMB_1 - { + else if (channelToSW >= 100 && channelToSW <= 118) { // 5GMB_1 efuse_OneByteRead(Adapter, 0x3E8, &targetval_A, FALSE); efuse_OneByteRead(Adapter, 0x3E9, &targetval_B, FALSE); efuse_OneByteRead(Adapter, 0x3EA, &targetval_C, FALSE); efuse_OneByteRead(Adapter, 0x3EB, &targetval_D, FALSE); } - else if (channelToSW >= 120 && channelToSW <= 140) // 5GMB_2 - { + else if (channelToSW >= 120 && channelToSW <= 140) { // 5GMB_2 efuse_OneByteRead(Adapter, 0x3EC, &targetval_A, FALSE); efuse_OneByteRead(Adapter, 0x3ED, &targetval_B, FALSE); efuse_OneByteRead(Adapter, 0x3EE, &targetval_C, FALSE); efuse_OneByteRead(Adapter, 0x3EF, &targetval_D, FALSE); } - else if (channelToSW >= 149 && channelToSW <= 165) // 5GHB - { + else if (channelToSW >= 149 && channelToSW <= 165) { // 5GHB efuse_OneByteRead(Adapter, 0x3F0, &targetval_A, FALSE); efuse_OneByteRead(Adapter, 0x3F1, &targetval_B, FALSE); efuse_OneByteRead(Adapter, 0x3F2, &targetval_C, FALSE); @@ -2394,12 +2272,10 @@ phy_ConfigKFree8814A( RTW_INFO("phy_ConfigKFree8814A(): targetval_B= %#x \n", targetval_B); RTW_INFO("phy_ConfigKFree8814A(): targetval_C= %#x \n", targetval_C); RTW_INFO("phy_ConfigKFree8814A(): targetval_D= %#x \n", targetval_D); - + // Make sure the targetval is defined - if ((Adapter->registrypriv.RegPwrTrimEnable == 1) && ((targetval_A != 0xFF) || (pHalData->RfKFreeEnable == TRUE))) - { - if (bandType == BAND_ON_2_4G) // 2G - { + if ((Adapter->registrypriv.RegPwrTrimEnable == 1) && ((targetval_A != 0xFF) || (pHalData->RfKFreeEnable == TRUE))) { + if (bandType == BAND_ON_2_4G) { // 2G RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): PATH_A: %#x \n", targetval_A&0x0F)); phy_SetKfreeToRF_8814A(Adapter, ODM_RF_PATH_A, targetval_A&0x0F); RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): PATH_B: %#x \n", (targetval_A&0xF0)>>4)); @@ -2409,8 +2285,7 @@ phy_ConfigKFree8814A( RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): PATH_D: %#x \n", (targetval_B&0xF0)>>4)); phy_SetKfreeToRF_8814A(Adapter, ODM_RF_PATH_D, (targetval_B&0xF0)>>4); } - else if(bandType == BAND_ON_5G) - { + else if(bandType == BAND_ON_5G) { RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): PATH_A: %#x \n", targetval_A&0x1F)); phy_SetKfreeToRF_8814A(Adapter, ODM_RF_PATH_A, targetval_A&0x1F); RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): PATH_B: %#x \n", targetval_B&0x1F)); @@ -2420,9 +2295,7 @@ phy_ConfigKFree8814A( RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): PATH_D: %#x \n", targetval_D&0x1F)); phy_SetKfreeToRF_8814A(Adapter, ODM_RF_PATH_D, targetval_D&0x1F); } - } - else - { + } else { RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): targetval not defined, Don't execute KFree Process.\n")); return; } @@ -2431,7 +2304,7 @@ phy_ConfigKFree8814A( } VOID -phy_SwChnl8814A( +phy_SwChnl8814A( IN PADAPTER pAdapter ) { @@ -2442,20 +2315,18 @@ phy_SwChnl8814A( #endif u8 channelToSW = pHalData->CurrentChannel; u32 RFValToWR , RFTmpVal, BitShift, BitMask; - + //RTW_INFO("[BW:CHNL], phy_SwChnl8814A(), switch to channel %d !!\n", channelToSW); - if (phy_SwBand8814A(pAdapter, channelToSW) == FALSE) - { + if (phy_SwBand8814A(pAdapter, channelToSW) == FALSE) { RTW_INFO("error Chnl %d", channelToSW); } - if(pHalData->rf_chip == RF_PSEUDO_11N) - { + if(pHalData->rf_chip == RF_PSEUDO_11N) { RT_TRACE(COMP_MLME, DBG_LOUD, ("phy_SwChnl8814A: return for PSEUDO\n")); return; } - + #ifdef CONFIG_RF_GAIN_OFFSET /* Add for KFree Feature Requested by RF David. */ if (kfree_data->flag & KFREE_FLAG_ON) { @@ -2474,34 +2345,30 @@ phy_SwChnl8814A( } #endif - if(pHalData->RegFWOffload == 2) - { + if (pHalData->RegFWOffload == 2) { FillH2CCmd_8814(pAdapter, H2C_CHNL_SWITCH_OFFLOAD, 1, &channelToSW); - } - else - { - // fc_area - if (36 <= channelToSW && channelToSW <= 48) - PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x494); - else if (50 <= channelToSW && channelToSW <= 64) - PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x453); - else if (100 <= channelToSW && channelToSW <= 116) - PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x452); - else if (118 <= channelToSW) - PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x412); + } else { + // fc_area + if (36 <= channelToSW && channelToSW <= 48) + PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x494); + else if (50 <= channelToSW && channelToSW <= 64) + PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x453); + else if (100 <= channelToSW && channelToSW <= 116) + PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x452); + else if (118 <= channelToSW) + PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x412); else PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x96a); - for(eRFPath = 0; eRFPath < pHalData->NumTotalRFPath; eRFPath++) - { + for (eRFPath = 0; eRFPath < pHalData->NumTotalRFPath; eRFPath++) { // RF_MOD_AG if (36 <= channelToSW && channelToSW <= 64) RFValToWR = 0x101; //5'b00101 - else if (100 <= channelToSW && channelToSW <= 140) + else if (100 <= channelToSW && channelToSW <= 140) RFValToWR = 0x301; //5'b01101 - else if (140 < channelToSW) + else if (140 < channelToSW) RFValToWR = 0x501; //5'b10101 - else + else RFValToWR = 0x000; //5'b00000 // Channel to switch @@ -2528,7 +2395,7 @@ phy_SwChnl8814A( phy_SpurCalibration_8814A(pAdapter); phy_ModifyInitialGain_8814A(pAdapter); } - + /* 2.4G CCK TX DFIR */ if (channelToSW >= 1 && channelToSW <= 11) { PHY_SetBBReg(pAdapter, rCCK0_TxFilter1, bMaskDWord, 0x1a1b0030); @@ -2554,29 +2421,28 @@ PHY_SwChnlTimerCallback8814A( { PADAPTER pAdapter = (PADAPTER)pTimer->Adapter; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); - + RT_TRACE(COMP_SCAN, DBG_LOUD, ("==>PHY_SwChnlTimerCallback8814A(), switch to channel %d\n", pHalData->CurrentChannel)); - + if (rtw_is_drv_stopped(padapter)) return; - - if(pHalData->rf_chip == RF_PSEUDO_11N) - { + + if(pHalData->rf_chip == RF_PSEUDO_11N) { pHalData->SwChnlInProgress=FALSE; - return; //return immediately if it is peudo-phy + return; //return immediately if it is peudo-phy } PlatformAcquireSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); pHalData->SwChnlInProgress=TRUE; PlatformReleaseSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); - + phy_SwChnl8814A(pAdapter); PlatformAcquireSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); pHalData->SwChnlInProgress=FALSE; PlatformReleaseSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); - + RT_TRACE(COMP_SCAN, DBG_LOUD, ("<==PHY_SwChnlTimerCallback8814()\n")); } @@ -2590,33 +2456,31 @@ PHY_SwChnlWorkItemCallback8814A( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); RT_TRACE(COMP_SCAN, DBG_LOUD, ("==>PHY_SwChnlWorkItemCallback8814A(), switch to channel %d\n", pHalData->CurrentChannel)); - if(pAdapter->bInSetPower && RT_USB_CANNOT_IO(pAdapter)) - { + if(pAdapter->bInSetPower && RT_USB_CANNOT_IO(pAdapter)) { RT_TRACE(COMP_SCAN, DBG_LOUD, ("<== PHY_SwChnlWorkItemCallback8814A() SwChnlInProgress FALSE driver sleep or unload\n")); - - pHalData->SwChnlInProgress = FALSE; + + pHalData->SwChnlInProgress = FALSE; return; } - + if (rtw_is_drv_stopped(padapter)) return; - - if(pHalData->rf_chip == RF_PSEUDO_11N) - { + + if(pHalData->rf_chip == RF_PSEUDO_11N) { pHalData->SwChnlInProgress=FALSE; - return; //return immediately if it is peudo-phy + return; //return immediately if it is peudo-phy } PlatformAcquireSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); pHalData->SwChnlInProgress=TRUE; PlatformReleaseSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); - + phy_SwChnl8814A(pAdapter); - PlatformAcquireSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); + PlatformAcquireSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); pHalData->SwChnlInProgress=FALSE; PlatformReleaseSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); - + RT_TRACE(COMP_P2P, DBG_LOUD, ("PHY_SwChnlWorkItemCallback8814A(), switch to channel %d\n", pHalData->CurrentChannel)); RT_TRACE(COMP_SCAN, DBG_LOUD, ("<==PHY_SwChnlWorkItemCallback8814A()\n")); } @@ -2635,7 +2499,7 @@ HAL_HandleSwChnl8814A( // Call after initialization phy_SwChnl8814A(Adapter); -#if (MP_DRIVER == 1) +#if (MP_DRIVER == 1) // <20120712, Kordan> IQK on each channel, asked by James. PHY_IQCalibrate_8814A(pAdapter, FALSE); #endif @@ -2653,32 +2517,29 @@ phy_SwChnlAndSetBwMode8814A( PDM_ODM_T pDM_Odm = &pHalData->odmpriv; //RTW_INFO("phy_SwChnlAndSetBwMode8814A(): bSwChnl %d, bSetChnlBW %d \n", pHalData->bSwChnl, pHalData->bSetChnlBW); - if ( Adapter->bNotifyChannelChange ) - { - RTW_INFO( "[%s] bSwChnl=%d, ch=%d, bSetChnlBW=%d, bw=%d\n", - __FUNCTION__, + if ( Adapter->bNotifyChannelChange ) { + RTW_INFO( "[%s] bSwChnl=%d, ch=%d, bSetChnlBW=%d, bw=%d\n", + __FUNCTION__, pHalData->bSwChnl, pHalData->CurrentChannel, pHalData->bSetChnlBW, pHalData->CurrentChannelBW); } - + if (RTW_CANNOT_RUN(Adapter)) { pHalData->bSwChnlAndSetBWInProgress= FALSE; return; } - if (pHalData->bSwChnl) - { + if (pHalData->bSwChnl) { phy_SwChnl8814A(Adapter); pHalData->bSwChnl = FALSE; - } + } - if (pHalData->bSetChnlBW) - { + if (pHalData->bSetChnlBW) { phy_SetBwMode8814A(Adapter); pHalData->bSetChnlBW = FALSE; - } + } if (Adapter->registrypriv.mp_mode == 0) { ODM_ClearTxPowerTrackingState(pDM_Odm); @@ -2690,19 +2551,19 @@ phy_SwChnlAndSetBwMode8814A( } else PHY_IQCalibrate_8814A(pDM_Odm, _FALSE); #if 0 //todo -#if (AUTO_CHNL_SEL_NHM == 1) - if(IS_AUTO_CHNL_SUPPORT(Adapter) && +#if (AUTO_CHNL_SEL_NHM == 1) + if(IS_AUTO_CHNL_SUPPORT(Adapter) && P2PIsSocialChannel(pHalData->CurrentChannel)) - { + { RT_TRACE(COMP_SCAN, DBG_TRACE, ("[ACS] phy_SwChnlAndSetBwMode8723B(): CurrentChannel %d Reset NHM counter!!\n", pHalData->CurrentChannel)); - RT_TRACE(COMP_SCAN, DBG_TRACE, ("[ACS] phy_SwChnlAndSetBwMode8723B(): AutoChnlSelPeriod(%d)\n", + RT_TRACE(COMP_SCAN, DBG_TRACE, ("[ACS] phy_SwChnlAndSetBwMode8723B(): AutoChnlSelPeriod(%d)\n", GetDefaultAdapter(Adapter)->MgntInfo.AutoChnlSel.AutoChnlSelPeriod)); - // Reset NHM counter + // Reset NHM counter odm_AutoChannelSelectReset(GET_PDM_ODM(Adapter)); - + SET_AUTO_CHNL_STATE(Adapter, ACS_BEFORE_NHM);// Before NHM measurement - } + } #endif #endif //0 pHalData->bSwChnlAndSetBWInProgress= FALSE; @@ -2727,7 +2588,7 @@ PHY_SwChnlAndSetBWModeCallback8814A( // The following procedure is operted according to SwChanlCallback8190Pci(). // However, this procedure is performed synchronously which should be running under // passive level. -// +// VOID PHY_SwChnlSynchronously8814A( // Only called during initialize IN PADAPTER Adapter, @@ -2745,16 +2606,14 @@ PHY_SwChnlSynchronously8814A( // Only called during initialize // Channel Switching is in progress. if(pHalData->bSwChnlAndSetBWInProgress) return; - + //return immediately if it is peudo-phy - if(pHalData->rf_chip == RF_PSEUDO_11N) - { + if(pHalData->rf_chip == RF_PSEUDO_11N) { pHalData->bSwChnlAndSetBWInProgress=FALSE; return; } - switch(pHalData->CurrentWirelessMode) - { + switch(pHalData->CurrentWirelessMode) { case WIRELESS_MODE_A: case WIRELESS_MODE_N_5G: case WIRELESS_MODE_AC_5G: @@ -2762,9 +2621,9 @@ PHY_SwChnlSynchronously8814A( // Only called during initialize //FIX ME!!! if(channel <=14) return; - RT_ASSERT((channel>14), ("WIRELESS_MODE_A but channel<=14")); + RT_ASSERT((channel>14), ("WIRELESS_MODE_A but channel<=14")); break; - + case WIRELESS_MODE_B: case WIRELESS_MODE_G: case WIRELESS_MODE_N_24G: @@ -2779,8 +2638,8 @@ PHY_SwChnlSynchronously8814A( // Only called during initialize default: RT_ASSERT(FALSE, ("Invalid WirelessMode(%#x)!!\n", pHalData->CurrentWirelessMode)); break; - - } + + } pHalData->bSwChnlAndSetBWInProgress = TRUE; if( channel == 0) @@ -2793,7 +2652,7 @@ PHY_SwChnlSynchronously8814A( // Only called during initialize phy_SwChnlAndSetBwMode8814A(Adapter); RT_TRACE(COMP_SCAN | COMP_RM, DBG_LOUD, ("<==PHY_SwChnlSynchronously(), switch from channel %d to channel %d.\n", pHalData->CurrentChannel, channel)); - + } */ @@ -2819,17 +2678,14 @@ PHY_HandleSwChnlAndSetBW8814A( struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; //check is swchnl or setbw - if(!bSwitchChannel && !bSetBandWidth) - { + if (!bSwitchChannel && !bSetBandWidth) { RTW_INFO("PHY_HandleSwChnlAndSetBW8812: not switch channel and not set bandwidth \n"); return; } //skip change for channel or bandwidth is the same - if(bSwitchChannel) - { - if(pHalData->CurrentChannel != ChannelNum) - { + if (bSwitchChannel) { + if(pHalData->CurrentChannel != ChannelNum) { if (HAL_IsLegalChannel(Adapter, ChannelNum)) pHalData->bSwChnl = _TRUE; else @@ -2837,15 +2693,13 @@ PHY_HandleSwChnlAndSetBW8814A( } } - if(bSetBandWidth) - { - if(pHalData->bChnlBWInitialized == _FALSE) - { + if (bSetBandWidth) { + if (pHalData->bChnlBWInitialized == _FALSE) { pHalData->bChnlBWInitialized = _TRUE; pHalData->bSetChnlBW = _TRUE; } - else if((pHalData->CurrentChannelBW != ChnlWidth) || - (pHalData->nCur40MhzPrimeSC != ChnlOffsetOf40MHz) || + else if ((pHalData->CurrentChannelBW != ChnlWidth) || + (pHalData->nCur40MhzPrimeSC != ChnlOffsetOf40MHz) || (pHalData->nCur80MhzPrimeSC != ChnlOffsetOf80MHz) || (pHalData->CurrentCenterFrequencyIndex1!= CenterFrequencyIndex1)) { @@ -2853,34 +2707,29 @@ PHY_HandleSwChnlAndSetBW8814A( } } - if(!pHalData->bSetChnlBW && !pHalData->bSwChnl) - { + if (!pHalData->bSetChnlBW && !pHalData->bSwChnl) { //RTW_INFO("<= PHY_HandleSwChnlAndSetBW8812: bSwChnl %d, bSetChnlBW %d \n",pHalData->bSwChnl,pHalData->bSetChnlBW); return; } - - if(pHalData->bSwChnl) - { + if (pHalData->bSwChnl) { pHalData->CurrentChannel=ChannelNum; pHalData->CurrentCenterFrequencyIndex1 = ChannelNum; } - - if(pHalData->bSetChnlBW) - { + if (pHalData->bSetChnlBW) { pHalData->CurrentChannelBW = ChnlWidth; #if 0 - if(ExtChnlOffsetOf40MHz==EXTCHNL_OFFSET_LOWER) + if (ExtChnlOffsetOf40MHz==EXTCHNL_OFFSET_LOWER) pHalData->nCur40MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_UPPER; - else if(ExtChnlOffsetOf40MHz==EXTCHNL_OFFSET_UPPER) + else if (ExtChnlOffsetOf40MHz==EXTCHNL_OFFSET_UPPER) pHalData->nCur40MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_LOWER; else pHalData->nCur40MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - if(ExtChnlOffsetOf80MHz==EXTCHNL_OFFSET_LOWER) + if (ExtChnlOffsetOf80MHz==EXTCHNL_OFFSET_LOWER) pHalData->nCur80MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_UPPER; - else if(ExtChnlOffsetOf80MHz==EXTCHNL_OFFSET_UPPER) + else if (ExtChnlOffsetOf80MHz==EXTCHNL_OFFSET_UPPER) pHalData->nCur80MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_LOWER; else pHalData->nCur80MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_DONT_CARE; @@ -2889,20 +2738,18 @@ PHY_HandleSwChnlAndSetBW8814A( pHalData->nCur80MhzPrimeSC = ChnlOffsetOf80MHz; #endif - pHalData->CurrentCenterFrequencyIndex1 = CenterFrequencyIndex1; + pHalData->CurrentCenterFrequencyIndex1 = CenterFrequencyIndex1; } //Switch workitem or set timer to do switch channel or setbandwidth operation if (!RTW_CANNOT_RUN(Adapter)) phy_SwChnlAndSetBwMode8814A(Adapter); else { - if(pHalData->bSwChnl) - { + if (pHalData->bSwChnl) { pHalData->CurrentChannel = tmpChannel; pHalData->CurrentCenterFrequencyIndex1 = tmpChannel; - } - if(pHalData->bSetChnlBW) - { + } + if (pHalData->bSetChnlBW) { pHalData->CurrentChannelBW = tmpBW; pHalData->nCur40MhzPrimeSC = tmpnCur40MhzPrimeSC; pHalData->nCur80MhzPrimeSC = tmpnCur80MhzPrimeSC; @@ -2923,7 +2770,7 @@ PHY_HandleSwChnlAndSetBW8814A( // // Description: // Configure H/W functionality to enable/disable Monitor mode. -// Note, because we possibly need to configure BB and RF in this function, +// Note, because we possibly need to configure BB and RF in this function, // so caller should in PASSIVE_LEVEL. 080118, by rcnjko. // VOID @@ -2936,17 +2783,14 @@ PHY_SetMonitorMode8814A( BOOLEAN bFilterOutNonAssociatedBSSID = FALSE; //2 Note: we may need to stop antenna diversity. - if(bEnableMonitorMode) - { + if(bEnableMonitorMode) { bFilterOutNonAssociatedBSSID = FALSE; RT_TRACE(COMP_RM, DBG_LOUD, ("PHY_SetMonitorMode8814A(): enable monitor mode\n")); pHalData->bInMonitorMode = TRUE; pAdapter->HalFunc.AllowAllDestAddrHandler(pAdapter, TRUE, TRUE); rtw_hal_set_hwreg(pAdapter, HW_VAR_CHECK_BSSID, (u8*)&bFilterOutNonAssociatedBSSID); - } - else - { + } else { bFilterOutNonAssociatedBSSID = TRUE; RT_TRACE(COMP_RM, DBG_LOUD, ("PHY_SetMonitorMode8814A(): disable monitor mode\n")); @@ -3010,4 +2854,3 @@ PHY_SetSwChnlBWMode8814( //RTW_INFO("<==%s()\n",__FUNCTION__); } - From 005d1b8117a5215d180de72360dd2eee57658ade Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 20 Dec 2017 17:17:56 +0100 Subject: [PATCH 173/234] Code cleanup --- hal/rtl8814a/rtl8814a_rf6052.c | 48 +++++++++++++++------------------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/hal/rtl8814a/rtl8814a_rf6052.c b/hal/rtl8814a/rtl8814a_rf6052.c index 67091fc63..f1527876a 100644 --- a/hal/rtl8814a/rtl8814a_rf6052.c +++ b/hal/rtl8814a/rtl8814a_rf6052.c @@ -42,8 +42,7 @@ PHY_RF6052SetBandwidth8814A( IN PADAPTER Adapter, IN CHANNEL_WIDTH Bandwidth) //20M or 40M { - switch(Bandwidth) - { + switch (Bandwidth) { case CHANNEL_WIDTH_20: /*RTW_INFO("PHY_RF6052SetBandwidth8814A(), set 20MHz\n");*/ PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW_Jaguar, BIT11|BIT10, 3); @@ -51,26 +50,26 @@ PHY_RF6052SetBandwidth8814A( PHY_SetRFReg(Adapter, RF_PATH_C, RF_CHNLBW_Jaguar, BIT11|BIT10, 3); PHY_SetRFReg(Adapter, RF_PATH_D, RF_CHNLBW_Jaguar, BIT11|BIT10, 3); break; - + case CHANNEL_WIDTH_40: /*RTW_INFO("PHY_RF6052SetBandwidth8814A(), set 40MHz\n");*/ - PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); - PHY_SetRFReg(Adapter, RF_PATH_B, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); - PHY_SetRFReg(Adapter, RF_PATH_C, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); - PHY_SetRFReg(Adapter, RF_PATH_D, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); + PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); + PHY_SetRFReg(Adapter, RF_PATH_B, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); + PHY_SetRFReg(Adapter, RF_PATH_C, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); + PHY_SetRFReg(Adapter, RF_PATH_D, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); break; - + case CHANNEL_WIDTH_80: /*RTW_INFO("PHY_RF6052SetBandwidth8814A(), set 80MHz\n");*/ - PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW_Jaguar, BIT11|BIT10, 0); - PHY_SetRFReg(Adapter, RF_PATH_B, RF_CHNLBW_Jaguar, BIT11|BIT10, 0); - PHY_SetRFReg(Adapter, RF_PATH_C, RF_CHNLBW_Jaguar, BIT11|BIT10, 0); + PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW_Jaguar, BIT11|BIT10, 0); + PHY_SetRFReg(Adapter, RF_PATH_B, RF_CHNLBW_Jaguar, BIT11|BIT10, 0); + PHY_SetRFReg(Adapter, RF_PATH_C, RF_CHNLBW_Jaguar, BIT11|BIT10, 0); PHY_SetRFReg(Adapter, RF_PATH_D, RF_CHNLBW_Jaguar, BIT11|BIT10, 0); break; - + default: RTW_INFO("PHY_RF6052SetBandwidth8814A(): unknown Bandwidth: %#X\n",Bandwidth ); - break; + break; } } @@ -101,18 +100,16 @@ phy_RF6052_Config_ParaFile_8814A( //3// <2> Initialize RF //3//----------------------------------------------------------------- //for(eRFPath = RF_PATH_A; eRFPath NumTotalRFPath; eRFPath++) - for(eRFPath = 0; eRFPath NumTotalRFPath; eRFPath++) - { + for (eRFPath = 0; eRFPath NumTotalRFPath; eRFPath++) { /*----Initialize RF fom connfiguration file----*/ - switch(eRFPath) - { + switch (eRFPath) { case RF_PATH_A: #ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE if (PHY_ConfigRFWithParaFile(Adapter, pszRadioAFile, eRFPath) == _FAIL) #endif //CONFIG_LOAD_PHY_PARA_FROM_FILE { #ifdef CONFIG_EMBEDDED_FWIMG - if(HAL_STATUS_FAILURE ==ODM_ConfigRFWithHeaderFile(&pHalData->odmpriv,CONFIG_RF_RADIO, (ODM_RF_RADIO_PATH_E)eRFPath)) + if (HAL_STATUS_FAILURE ==ODM_ConfigRFWithHeaderFile(&pHalData->odmpriv,CONFIG_RF_RADIO, (ODM_RF_RADIO_PATH_E)eRFPath)) rtStatus = _FAIL; #endif //CONFIG_EMBEDDED_FWIMG } @@ -123,7 +120,7 @@ phy_RF6052_Config_ParaFile_8814A( #endif //CONFIG_LOAD_PHY_PARA_FROM_FILE { #ifdef CONFIG_EMBEDDED_FWIMG - if(HAL_STATUS_FAILURE ==ODM_ConfigRFWithHeaderFile(&pHalData->odmpriv,CONFIG_RF_RADIO, (ODM_RF_RADIO_PATH_E)eRFPath)) + if (HAL_STATUS_FAILURE ==ODM_ConfigRFWithHeaderFile(&pHalData->odmpriv,CONFIG_RF_RADIO, (ODM_RF_RADIO_PATH_E)eRFPath)) rtStatus = _FAIL; #endif //CONFIG_EMBEDDED_FWIMG } @@ -134,7 +131,7 @@ phy_RF6052_Config_ParaFile_8814A( #endif //CONFIG_LOAD_PHY_PARA_FROM_FILE { #ifdef CONFIG_EMBEDDED_FWIMG - if(HAL_STATUS_FAILURE ==ODM_ConfigRFWithHeaderFile(&pHalData->odmpriv,CONFIG_RF_RADIO, (ODM_RF_RADIO_PATH_E)eRFPath)) + if (HAL_STATUS_FAILURE ==ODM_ConfigRFWithHeaderFile(&pHalData->odmpriv,CONFIG_RF_RADIO, (ODM_RF_RADIO_PATH_E)eRFPath)) rtStatus = _FAIL; #endif //CONFIG_EMBEDDED_FWIMG } @@ -154,20 +151,20 @@ phy_RF6052_Config_ParaFile_8814A( break; } - if(rtStatus != _SUCCESS){ + if (rtStatus != _SUCCESS) { RTW_INFO("%s():Radio[%d] Fail!!", __FUNCTION__, eRFPath); goto phy_RF6052_Config_ParaFile_Fail; } } - + u4RegValue = PHY_QueryRFReg(Adapter, RF_PATH_A, RF_RCK1_Jaguar, bRFRegOffsetMask); PHY_SetRFReg(Adapter, RF_PATH_B, RF_RCK1_Jaguar, bRFRegOffsetMask, u4RegValue); PHY_SetRFReg(Adapter, RF_PATH_C, RF_RCK1_Jaguar, bRFRegOffsetMask, u4RegValue); PHY_SetRFReg(Adapter, RF_PATH_D, RF_RCK1_Jaguar, bRFRegOffsetMask, u4RegValue); - + //3 ----------------------------------------------------------------- - //3 Configuration of Tx Power Tracking + //3 Configuration of Tx Power Tracking //3 ----------------------------------------------------------------- #ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE @@ -185,7 +182,6 @@ phy_RF6052_Config_ParaFile_8814A( return rtStatus; } - int PHY_RF6052_Config_8814A( IN PADAPTER Adapter) @@ -205,6 +201,4 @@ PHY_RF6052_Config_8814A( } - /* End of HalRf6052.c */ - From 40fcd1e3b8d795464f749bb71344c72399785229 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 20 Dec 2017 17:19:48 +0100 Subject: [PATCH 174/234] Code cleanup --- hal/rtl8814a/rtl8814a_sreset.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/hal/rtl8814a/rtl8814a_sreset.c b/hal/rtl8814a/rtl8814a_sreset.c index 5d7e423ce..4a7947e50 100644 --- a/hal/rtl8814a/rtl8814a_sreset.c +++ b/hal/rtl8814a/rtl8814a_sreset.c @@ -32,8 +32,8 @@ void rtl8814_sreset_xmit_status_check(_adapter *padapter) struct xmit_priv *pxmitpriv = &padapter->xmitpriv; unsigned int diff_time; u32 txdma_status; - - if( (txdma_status=rtw_read32(padapter, REG_TXDMA_STATUS)) !=0x00){ + + if ( (txdma_status=rtw_read32(padapter, REG_TXDMA_STATUS)) !=0x00) { RTW_INFO("%s REG_TXDMA_STATUS:0x%08x\n", __FUNCTION__, txdma_status); rtw_hal_sreset_reset(padapter); } @@ -51,7 +51,7 @@ void rtl8814_sreset_xmit_status_check(_adapter *padapter) if (psrtpriv->last_tx_complete_time == 0) { psrtpriv->last_tx_complete_time = current_time; } - else{ + else { diff_time = rtw_get_passing_time_ms(psrtpriv->last_tx_complete_time); if (diff_time > 4000) { u32 ability = 0; @@ -84,9 +84,9 @@ void rtl8814_sreset_linked_status_check(_adapter *padapter) u32 rx_dma_status = 0; rx_dma_status = rtw_read32(padapter,REG_RXDMA_STATUS); - if(rx_dma_status!= 0x00){ + if (rx_dma_status!= 0x00) { RTW_INFO("%s REG_RXDMA_STATUS:0x%08x\n",__FUNCTION__,rx_dma_status); - } + } #if 0 u32 regc50,regc58,reg824,reg800; regc50 = rtw_read32(padapter,0xc50); @@ -111,4 +111,3 @@ void rtl8814_sreset_linked_status_check(_adapter *padapter) } } #endif - From 7e4846cbe7c9f3a94c7d6e1175cf55c115fe625f Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 20 Dec 2017 17:28:04 +0100 Subject: [PATCH 175/234] Code cleanup --- hal/rtl8814a/rtl8814a_xmit.c | 241 +++++++++++++++-------------------- 1 file changed, 104 insertions(+), 137 deletions(-) diff --git a/hal/rtl8814a/rtl8814a_xmit.c b/hal/rtl8814a/rtl8814a_xmit.c index 85bae2800..43b8268f3 100644 --- a/hal/rtl8814a/rtl8814a_xmit.c +++ b/hal/rtl8814a/rtl8814a_xmit.c @@ -28,22 +28,22 @@ void _dbg_dump_tx_info(_adapter *padapter,int frame_tag, u8 *ptxdesc) u8 bDumpTxDesc = _FALSE; rtw_hal_get_def_var(padapter, HAL_DEF_DBG_DUMP_TXPKT, &(bDumpTxPkt)); - if(bDumpTxPkt ==1){//dump txdesc for data frame + if (bDumpTxPkt ==1) { //dump txdesc for data frame RTW_INFO("dump tx_desc for data frame\n"); - if((frame_tag&0x0f) == DATA_FRAMETAG){ - bDumpTxDesc = _TRUE; + if ((frame_tag&0x0f) == DATA_FRAMETAG){ + bDumpTxDesc = _TRUE; } - } - else if(bDumpTxPkt ==2){//dump txdesc for mgnt frame + } + else if (bDumpTxPkt ==2) { //dump txdesc for mgnt frame RTW_INFO("dump tx_desc for mgnt frame\n"); - if((frame_tag&0x0f) == MGNT_FRAMETAG){ - bDumpTxDesc = _TRUE; + if ((frame_tag&0x0f) == MGNT_FRAMETAG) { + bDumpTxDesc = _TRUE; } - } - else if(bDumpTxPkt ==3){//dump early info } - - if(bDumpTxDesc){ + else if (bDumpTxPkt ==3) { //dump early info + } + + if (bDumpTxDesc) { // ptxdesc->txdw4 = cpu_to_le32(0x00001006);//RTS Rate=24M // ptxdesc->txdw6 = 0x6666f800; RTW_INFO("=====================================\n"); @@ -75,7 +75,7 @@ void _dbg_dump_tx_info(_adapter *padapter,int frame_tag, u8 *ptxdesc) //#define DBG_EMINFO -#if RTL8188E_EARLY_MODE_PKT_NUM_10 == 1 +#if RTL8188E_EARLY_MODE_PKT_NUM_10 == 1 #define EARLY_MODE_MAX_PKT_NUM 10 #else #define EARLY_MODE_MAX_PKT_NUM 5 @@ -100,65 +100,65 @@ InsertEMContent_8814( #endif _rtw_memset(VirtualAddress, 0, EARLY_MODE_INFO_SIZE); - if(pEMInfo->EMPktNum==0) + if (pEMInfo->EMPktNum==0) return; #ifdef DBG_EMINFO { int i; RTW_INFO("\n%s ==> pEMInfo->EMPktNum =%d\n",__FUNCTION__,pEMInfo->EMPktNum); - for(i=0;i< EARLY_MODE_MAX_PKT_NUM;i++){ + for (i = 0;i< EARLY_MODE_MAX_PKT_NUM;i++) { RTW_INFO("%s ==> pEMInfo->EMPktLen[%d] =%d\n",__FUNCTION__,i,pEMInfo->EMPktLen[i]); } } #endif - + #if RTL8188E_EARLY_MODE_PKT_NUM_10 == 1 SET_EARLYMODE_PKTNUM(VirtualAddress, pEMInfo->EMPktNum); - if(pEMInfo->EMPktNum == 1){ + if (pEMInfo->EMPktNum == 1) { dwtmp = pEMInfo->EMPktLen[0]; - }else{ + } else { dwtmp = pEMInfo->EMPktLen[0]; dwtmp += ((dwtmp%4)?(4-dwtmp%4):0)+4; dwtmp += pEMInfo->EMPktLen[1]; } SET_EARLYMODE_LEN0(VirtualAddress, dwtmp); - if(pEMInfo->EMPktNum <= 3){ + if (pEMInfo->EMPktNum <= 3) { dwtmp = pEMInfo->EMPktLen[2]; - }else{ + } else { dwtmp = pEMInfo->EMPktLen[2]; dwtmp += ((dwtmp%4)?(4-dwtmp%4):0)+4; dwtmp += pEMInfo->EMPktLen[3]; } SET_EARLYMODE_LEN1(VirtualAddress, dwtmp); - if(pEMInfo->EMPktNum <= 5){ + if (pEMInfo->EMPktNum <= 5) { dwtmp = pEMInfo->EMPktLen[4]; - }else{ + } else { dwtmp = pEMInfo->EMPktLen[4]; dwtmp += ((dwtmp%4)?(4-dwtmp%4):0)+4; dwtmp += pEMInfo->EMPktLen[5]; } SET_EARLYMODE_LEN2_1(VirtualAddress, dwtmp&0xF); SET_EARLYMODE_LEN2_2(VirtualAddress, dwtmp>>4); - if(pEMInfo->EMPktNum <= 7){ + if (pEMInfo->EMPktNum <= 7) { dwtmp = pEMInfo->EMPktLen[6]; - }else{ + } else { dwtmp = pEMInfo->EMPktLen[6]; dwtmp += ((dwtmp%4)?(4-dwtmp%4):0)+4; dwtmp += pEMInfo->EMPktLen[7]; } SET_EARLYMODE_LEN3(VirtualAddress, dwtmp); - if(pEMInfo->EMPktNum <= 9){ + if (pEMInfo->EMPktNum <= 9) { dwtmp = pEMInfo->EMPktLen[8]; - }else{ + } else { dwtmp = pEMInfo->EMPktLen[8]; dwtmp += ((dwtmp%4)?(4-dwtmp%4):0)+4; dwtmp += pEMInfo->EMPktLen[9]; } SET_EARLYMODE_LEN4(VirtualAddress, dwtmp); -#else +#else SET_EARLYMODE_PKTNUM(VirtualAddress, pEMInfo->EMPktNum); SET_EARLYMODE_LEN0(VirtualAddress, pEMInfo->EMPktLen[0]); SET_EARLYMODE_LEN1(VirtualAddress, pEMInfo->EMPktLen[1]); @@ -166,7 +166,7 @@ InsertEMContent_8814( SET_EARLYMODE_LEN2_2(VirtualAddress, pEMInfo->EMPktLen[2]>>4); SET_EARLYMODE_LEN3(VirtualAddress, pEMInfo->EMPktLen[3]); SET_EARLYMODE_LEN4(VirtualAddress, pEMInfo->EMPktLen[4]); -#endif +#endif //RT_PRINT_DATA(COMP_SEND, DBG_LOUD, "EMHdr:", VirtualAddress, 8); } @@ -179,72 +179,68 @@ void UpdateEarlyModeInfo8814(struct xmit_priv *pxmitpriv,struct xmit_buf *pxmitb int index,j; u16 offset,pktlen; PTXDESC_8814 ptxdesc; - + u8 *pmem,*pEMInfo_mem; s8 node_num_0=0,node_num_1=0; struct EMInfo eminfo; struct agg_pkt_info *paggpkt; - struct xmit_frame *pframe = (struct xmit_frame*)pxmitbuf->priv_data; - pmem= pframe->buf_addr; - - #ifdef DBG_EMINFO + struct xmit_frame *pframe = (struct xmit_frame*)pxmitbuf->priv_data; + pmem= pframe->buf_addr; + + #ifdef DBG_EMINFO RTW_INFO("\n%s ==> agg_num:%d\n",__FUNCTION__, pframe->agg_num); - for(index=0;indexagg_num;index++){ + for (index=0;indexagg_num;index++){ offset = pxmitpriv->agg_pkt[index].offset; pktlen = pxmitpriv->agg_pkt[index].pkt_len; RTW_INFO("%s ==> agg_pkt[%d].offset=%d\n",__FUNCTION__,index,offset); RTW_INFO("%s ==> agg_pkt[%d].pkt_len=%d\n",__FUNCTION__,index,pktlen); } #endif - - if( pframe->agg_num > EARLY_MODE_MAX_PKT_NUM) - { + + if ( pframe->agg_num > EARLY_MODE_MAX_PKT_NUM) { node_num_0 = pframe->agg_num; node_num_1= EARLY_MODE_MAX_PKT_NUM-1; } - - for(index=0;indexagg_num;index++){ + + for (index=0;indexagg_num;index++) { offset = pxmitpriv->agg_pkt[index].offset; - pktlen = pxmitpriv->agg_pkt[index].pkt_len; + pktlen = pxmitpriv->agg_pkt[index].pkt_len; _rtw_memset(&eminfo,0,sizeof(struct EMInfo)); - if( pframe->agg_num > EARLY_MODE_MAX_PKT_NUM){ - if(node_num_0 > EARLY_MODE_MAX_PKT_NUM){ + if ( pframe->agg_num > EARLY_MODE_MAX_PKT_NUM) { + if (node_num_0 > EARLY_MODE_MAX_PKT_NUM) { eminfo.EMPktNum = EARLY_MODE_MAX_PKT_NUM; node_num_0--; - } - else{ + } else{ eminfo.EMPktNum = node_num_1; - node_num_1--; - } + node_num_1--; + } + } else { + eminfo.EMPktNum = pframe->agg_num-(index+1); } - else{ - eminfo.EMPktNum = pframe->agg_num-(index+1); - } - for(j=0;j< eminfo.EMPktNum ;j++){ + for (j = 0;j< eminfo.EMPktNum ;j++) { eminfo.EMPktLen[j] = pxmitpriv->agg_pkt[index+1+j].pkt_len+4;// 4 bytes CRC } - - if(pmem){ - if(index==0){ + + if (pmem) { + if (index==0) { ptxdesc = (PTXDESC_8814)(pmem); - pEMInfo_mem = ((u8 *)ptxdesc)+TXDESC_SIZE; - } - else{ + pEMInfo_mem = ((u8 *)ptxdesc)+TXDESC_SIZE; + } else{ pmem = pmem + pxmitpriv->agg_pkt[index-1].offset; ptxdesc = (PTXDESC_8814)(pmem); - pEMInfo_mem = ((u8 *)ptxdesc)+TXDESC_SIZE; + pEMInfo_mem = ((u8 *)ptxdesc)+TXDESC_SIZE; } - + #ifdef DBG_EMINFO RTW_INFO("%s ==> desc.pkt_len=%d\n",__FUNCTION__,ptxdesc->pktlen); #endif InsertEMContent_8814(&eminfo,pEMInfo_mem); - } - - - } + } + + + } _rtw_memset(pxmitpriv->agg_pkt,0,sizeof(struct agg_pkt_info)*MAX_AGG_PKT_NUM); } @@ -268,7 +264,7 @@ void rtl8814a_cal_txdesc_chksum(u8 *ptxdesc) // Clear first SET_TX_DESC_TX_DESC_CHECKSUM_8814A(ptxdesc, 0); - for(index = 0 ; index < count ; index++){ + for (index = 0 ; index < count ; index++) { checksum = checksum ^ le16_to_cpu(*(usPtr + index)); } @@ -310,53 +306,47 @@ void rtl8814a_fill_fake_txdesc( } //Set NAVUSEHDR to prevent Ps-poll AId filed to be changed to error vlaue by Hw. - if (IsPsPoll) - { - SET_TX_DESC_NAV_USE_HDR_8814A(pDesc, 1); - } - else - { + if (IsPsPoll) { + SET_TX_DESC_NAV_USE_HDR_8814A(pDesc, 1); + } else { SET_TX_DESC_HWSEQ_EN_8814A(pDesc, 1); // Hw set sequence number } #if 0 //todo - if(IsBTQosNull) - { + if (IsBTQosNull) { SET_TX_DESC_BT_INT_8812(pDesc, 1); } #endif //0 SET_TX_DESC_USE_RATE_8814A(pDesc, 1); - + //8814 no OWN bit? //SET_TX_DESC_OWN_8812(pDesc, 1); // // Encrypt the data frame if under security mode excepct null data. Suggested by CCW. // - if (_TRUE ==bDataFrame) - { + if (_TRUE ==bDataFrame) { u32 EncAlg; EncAlg = padapter->securitypriv.dot11PrivacyAlgrthm; - switch (EncAlg) - { + switch (EncAlg) { case _NO_PRIVACY_: - SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x0); + SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x0); break; case _WEP40_: case _WEP104_: case _TKIP_: - SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x1); + SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x1); break; case _SMS4_: - SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x2); + SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x2); break; case _AES_: SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x3); break; default: - SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x0); - break; + SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x0); + break; } } SET_TX_DESC_TX_RATE_8814A(pDesc, MRateToHwRate(pmlmeext->tx_rate)); @@ -370,15 +360,13 @@ void rtl8814a_fill_fake_txdesc( void rtl8814a_fill_txdesc_sectype(struct pkt_attrib *pattrib, u8 *ptxdesc) { - if ((pattrib->encrypt > 0) && !pattrib->bswenc) - { - switch (pattrib->encrypt) - { + if ((pattrib->encrypt > 0) && !pattrib->bswenc) { + switch (pattrib->encrypt) { //SEC_TYPE : 0:NO_ENC,1:WEP40/TKIP,2:WAPI,3:AES case _WEP40_: case _WEP104_: case _TKIP_: - case _TKIP_WTMIC_: + case _TKIP_WTMIC_: SET_TX_DESC_SEC_TYPE_8814A(ptxdesc, 0x1); break; #ifdef CONFIG_WAPI_SUPPORT @@ -393,9 +381,9 @@ void rtl8814a_fill_txdesc_sectype(struct pkt_attrib *pattrib, u8 *ptxdesc) default: SET_TX_DESC_SEC_TYPE_8814A(ptxdesc, 0x0); break; - + } - + } } @@ -405,12 +393,11 @@ void rtl8814a_fill_txdesc_vcs(PADAPTER padapter, struct pkt_attrib *pattrib, u8 struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - //RTW_INFO("vcs_mode=%d\n", pattrib->vcs_mode); + //RTW_INFO("vcs_mode=%d\n", pattrib->vcs_mode); if (pattrib->vcs_mode) { - switch(pattrib->vcs_mode) - { + switch (pattrib->vcs_mode) { case RTS_CTS: SET_TX_DESC_RTS_ENABLE_8814A(ptxdesc, 1); break; @@ -428,12 +415,12 @@ void rtl8814a_fill_txdesc_vcs(PADAPTER padapter, struct pkt_attrib *pattrib, u8 SET_TX_DESC_RTS_RATE_8814A(ptxdesc, 0x8);//RTS Rate=24M SET_TX_DESC_RTS_RATE_FB_LIMIT_8814A(ptxdesc, 0xf); - + } } -u8 +u8 BWMapping_8814( IN PADAPTER Adapter, IN struct pkt_attrib *pattrib @@ -444,18 +431,16 @@ BWMapping_8814( //RTW_INFO("BWMapping pHalData->CurrentChannelBW %d, pattrib->bwmode %d \n",pHalData->CurrentChannelBW,pattrib->bwmode); - if(pHalData->CurrentChannelBW== CHANNEL_WIDTH_80) - { - if(pattrib->bwmode == CHANNEL_WIDTH_80) + if (pHalData->CurrentChannelBW== CHANNEL_WIDTH_80) { + if (pattrib->bwmode == CHANNEL_WIDTH_80) BWSettingOfDesc= 2; - else if(pattrib->bwmode == CHANNEL_WIDTH_40) + else if (pattrib->bwmode == CHANNEL_WIDTH_40) BWSettingOfDesc = 1; else BWSettingOfDesc = 0; } - else if(pHalData->CurrentChannelBW== CHANNEL_WIDTH_40) - { - if((pattrib->bwmode == CHANNEL_WIDTH_40) || (pattrib->bwmode == CHANNEL_WIDTH_80)) + else if(pHalData->CurrentChannelBW== CHANNEL_WIDTH_40) { + if ((pattrib->bwmode == CHANNEL_WIDTH_40) || (pattrib->bwmode == CHANNEL_WIDTH_80)) BWSettingOfDesc = 1; else BWSettingOfDesc = 0; @@ -466,7 +451,7 @@ BWMapping_8814( return BWSettingOfDesc; } -u8 +u8 SCMapping_8814( IN PADAPTER Adapter, IN struct pkt_attrib *pattrib @@ -475,63 +460,48 @@ SCMapping_8814( u8 SCSettingOfDesc = 0; PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); //RTW_INFO("SCMapping: pHalData->CurrentChannelBW %d, pHalData->nCur80MhzPrimeSC %d, pHalData->nCur40MhzPrimeSC %d \n",pHalData->CurrentChannelBW,pHalData->nCur80MhzPrimeSC,pHalData->nCur40MhzPrimeSC); - - if(pHalData->CurrentChannelBW == CHANNEL_WIDTH_80) - { - if(pattrib->bwmode == CHANNEL_WIDTH_80) - { + + if (pHalData->CurrentChannelBW == CHANNEL_WIDTH_80) { + if (pattrib->bwmode == CHANNEL_WIDTH_80) { SCSettingOfDesc = VHT_DATA_SC_DONOT_CARE; } - else if(pattrib->bwmode == CHANNEL_WIDTH_40) - { - if(pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) + else if (pattrib->bwmode == CHANNEL_WIDTH_40) { + if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) SCSettingOfDesc = VHT_DATA_SC_40_LOWER_OF_80MHZ; - else if(pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) + else if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) SCSettingOfDesc = VHT_DATA_SC_40_UPPER_OF_80MHZ; else RTW_INFO("SCMapping: DONOT CARE Mode Setting\n"); - } - else - { - if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) + } else { + if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) SCSettingOfDesc = VHT_DATA_SC_20_LOWEST_OF_80MHZ; - else if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) SCSettingOfDesc = VHT_DATA_SC_20_LOWER_OF_80MHZ; - else if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) SCSettingOfDesc = VHT_DATA_SC_20_UPPER_OF_80MHZ; - else if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) SCSettingOfDesc = VHT_DATA_SC_20_UPPERST_OF_80MHZ; else RTW_INFO("SCMapping: DONOT CARE Mode Setting\n"); } } - else if(pHalData->CurrentChannelBW== CHANNEL_WIDTH_40) - { + else if (pHalData->CurrentChannelBW== CHANNEL_WIDTH_40) { //RTW_INFO("SCMapping: HT Case: pHalData->CurrentChannelBW %d, pHalData->nCur40MhzPrimeSC %d \n",pHalData->CurrentChannelBW,pHalData->nCur40MhzPrimeSC); - if(pattrib->bwmode == CHANNEL_WIDTH_40) - { + if (pattrib->bwmode == CHANNEL_WIDTH_40) { SCSettingOfDesc = VHT_DATA_SC_DONOT_CARE; } - else if(pattrib->bwmode == CHANNEL_WIDTH_20) - { - if(pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) - { + else if (pattrib->bwmode == CHANNEL_WIDTH_20) { + if (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) { SCSettingOfDesc = VHT_DATA_SC_20_UPPER_OF_80MHZ; } - else if(pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) - { + else if(pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) { SCSettingOfDesc = VHT_DATA_SC_20_LOWER_OF_80MHZ; - } - else - { + } else { SCSettingOfDesc = VHT_DATA_SC_DONOT_CARE; } - } - } - else - { + } else { SCSettingOfDesc = VHT_DATA_SC_DONOT_CARE; } @@ -543,13 +513,10 @@ void rtl8814a_fill_txdesc_phy(PADAPTER padapter, struct pkt_attrib *pattrib, u8 { //RTW_INFO("bwmode=%d, ch_off=%d\n", pattrib->bwmode, pattrib->ch_offset); - if(pattrib->ht_en) - { + if (pattrib->ht_en) { // Set Bandwidth and sub-channel settings. SET_TX_DESC_DATA_BW_8814A(ptxdesc, BWMapping_8814(padapter,pattrib)); SET_TX_DESC_DATA_SC_8814A(ptxdesc, SCMapping_8814(padapter,pattrib)); } } - - From df6456fc76e2c4926dfe58e443b4a7029fbd69a2 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 20 Dec 2017 17:29:35 +0100 Subject: [PATCH 176/234] Code cleanup --- hal/rtl8814a/Hal8814PwrSeq.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/hal/rtl8814a/Hal8814PwrSeq.c b/hal/rtl8814a/Hal8814PwrSeq.c index c11a36e96..6370cbe3a 100644 --- a/hal/rtl8814a/Hal8814PwrSeq.c +++ b/hal/rtl8814a/Hal8814PwrSeq.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -21,7 +21,7 @@ #include "Hal8814PwrSeq.h" #include -/* +/* drivers should parse below arrays and do the corresponding actions */ //3 Power on Array @@ -50,7 +50,7 @@ WLAN_PWR_CFG rtl8814A_card_disable_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8 WLAN_PWR_CFG rtl8814A_card_enable_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8814A_TRANS_CARDEMU_TO_PDN_STEPS+RTL8814A_TRANS_END_STEPS]= { RTL8814A_TRANS_CARDDIS_TO_CARDEMU - RTL8814A_TRANS_CARDEMU_TO_ACT + RTL8814A_TRANS_CARDEMU_TO_ACT RTL8814A_TRANS_END }; @@ -70,29 +70,26 @@ WLAN_PWR_CFG rtl8814A_resume_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8814A_T RTL8814A_TRANS_END }; - - //3HWPDN Array WLAN_PWR_CFG rtl8814A_hwpdn_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8814A_TRANS_CARDEMU_TO_PDN_STEPS+RTL8814A_TRANS_END_STEPS]= { RTL8814A_TRANS_ACT_TO_CARDEMU - RTL8814A_TRANS_CARDEMU_TO_PDN + RTL8814A_TRANS_CARDEMU_TO_PDN RTL8814A_TRANS_END }; -//3 Enter LPS +//3 Enter LPS WLAN_PWR_CFG rtl8814A_enter_lps_flow[RTL8814A_TRANS_ACT_TO_LPS_STEPS+RTL8814A_TRANS_END_STEPS]= { //FW behavior - RTL8814A_TRANS_ACT_TO_LPS + RTL8814A_TRANS_ACT_TO_LPS RTL8814A_TRANS_END }; -//3 Leave LPS +//3 Leave LPS WLAN_PWR_CFG rtl8814A_leave_lps_flow[RTL8814A_TRANS_LPS_TO_ACT_STEPS+RTL8814A_TRANS_END_STEPS]= { //FW behavior RTL8814A_TRANS_LPS_TO_ACT RTL8814A_TRANS_END }; - From 88becaff4627231ecfc21d2170c6ebfb6961f7aa Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 20 Dec 2017 20:23:31 +0100 Subject: [PATCH 177/234] Fix kernel v3.11 monitor mode crash --- os_dep/linux/ioctl_cfg80211.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 3b9659436..8a7e088d6 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -796,12 +796,15 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter) #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) || defined(COMPAT_KERNEL_RELEASE) RTW_INFO("pwdev->sme_state(b)=%d\n", pwdev->sme_state); #endif + + if (NULL != pmlmepriv->assoc_req && NULL != pmlmepriv->assoc_rsp) cfg80211_connect_result(padapter->pnetdev, cur_network->network.MacAddress , pmlmepriv->assoc_req + sizeof(struct rtw_ieee80211_hdr_3addr) + 2 , pmlmepriv->assoc_req_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 2 , pmlmepriv->assoc_rsp + sizeof(struct rtw_ieee80211_hdr_3addr) + 6 , pmlmepriv->assoc_rsp_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 6 , WLAN_STATUS_SUCCESS, GFP_ATOMIC); + #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) || defined(COMPAT_KERNEL_RELEASE) RTW_INFO("pwdev->sme_state(a)=%d\n", pwdev->sme_state); #endif From 3bcd47fdd572d99733ca9b62ac3ecc4a98c19551 Mon Sep 17 00:00:00 2001 From: Christian B Date: Thu, 21 Dec 2017 08:19:01 +0100 Subject: [PATCH 178/234] Code cleanup --- hal/rtl8814a/usb/rtl8814au_xmit.c | 116 +++++++++++------------------- 1 file changed, 40 insertions(+), 76 deletions(-) diff --git a/hal/rtl8814a/usb/rtl8814au_xmit.c b/hal/rtl8814a/usb/rtl8814au_xmit.c index 5746dbbca..820026361 100644 --- a/hal/rtl8814a/usb/rtl8814au_xmit.c +++ b/hal/rtl8814a/usb/rtl8814au_xmit.c @@ -60,10 +60,8 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag u8 DriverFixedRate = 0x0; #ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX - if (padapter->registrypriv.mp_mode == 0) - { - if((PACKET_OFFSET_SZ != 0) && (!bagg_pkt) &&(rtw_usb_bulk_size_boundary(padapter,TXDESC_SIZE+sz)==_FALSE)) - { + if (padapter->registrypriv.mp_mode == 0) { + if((PACKET_OFFSET_SZ != 0) && (!bagg_pkt) &&(rtw_usb_bulk_size_boundary(padapter,TXDESC_SIZE+sz)==_FALSE)) { ptxdesc = (pmem+PACKET_OFFSET_SZ); //RTW_INFO("==> non-agg-pkt,shift pointer...\n"); pull = 1; @@ -84,7 +82,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag offset = TXDESC_SIZE + OFFSET_SZ; #ifdef CONFIG_TX_EARLY_MODE - if(bagg_pkt){ + if (bagg_pkt) { offset += EARLY_MODE_INFO_SIZE ;//0x28 } #endif @@ -121,7 +119,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag if (!pattrib->qos_en) { /* HW sequence, to fix to use 0 queue. todo: 4AC packets to use auto queue select */ - if(pattrib->sw_seq == _FALSE) + if (pattrib->sw_seq == _FALSE) SET_TX_DESC_HWSEQ_EN_8814A(ptxdesc, 1); // Hw set sequence number else SET_TX_DESC_SEQ_8814A(ptxdesc, pattrib->seqnum); @@ -164,8 +162,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag SET_TX_DESC_MAX_AGG_NUM_8814A(ptxdesc, 0x1f); // Set A-MPDU aggregation. SET_TX_DESC_AMPDU_DENSITY_8814A(ptxdesc, pattrib->ampdu_spacing); - } - else { + } else { SET_TX_DESC_BK_8814A(ptxdesc, 1); } @@ -173,12 +170,9 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag //DATA Rate FB LMT //SET_TX_DESC_DATA_RATE_FB_LIMIT_8814A(ptxdesc, 0x1f); - if(pHalData->CurrentBandType == BAND_ON_5G) - { + if (pHalData->CurrentBandType == BAND_ON_5G) { SET_TX_DESC_DATA_RATE_FB_LIMIT_8814A(ptxdesc, 4); - } - else - { + } else { SET_TX_DESC_DATA_RATE_FB_LIMIT_8814A(ptxdesc, 0); } @@ -211,9 +205,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag //work arond before fixing RA //SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); //SET_TX_DESC_TX_RATE_8814A(ptxdesc, 0x10); - } - else - { + } else { // EAP data packet and ARP packet and DHCP. // Use the 1M data rate to send the EAP/ARP packet. // This will maybe make the handshake smooth. @@ -231,15 +223,14 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag } } - else if((pxmitframe->frame_tag&0x0f)== MGNT_FRAMETAG) - { + else if ((pxmitframe->frame_tag&0x0f)== MGNT_FRAMETAG) { //RTW_INFO("pxmitframe->frame_tag == MGNT_FRAMETAG\n"); SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); DriverFixedRate = 0x01; #ifdef CONFIG_INTEL_PROXIM - if((padapter->proximity.proxim_on==_TRUE)&&(pattrib->intel_proxim==_TRUE)){ + if ((padapter->proximity.proxim_on==_TRUE)&&(pattrib->intel_proxim==_TRUE)){ RTW_INFO("\n %s pattrib->rate=%d\n",__FUNCTION__,pattrib->rate); SET_TX_DESC_TX_RATE_8814A(ptxdesc, pattrib->rate); } @@ -250,7 +241,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag } // VHT NDPA or HT NDPA Packet for Beamformer. - if((pattrib->subtype == WIFI_NDPA) || + if ((pattrib->subtype == WIFI_NDPA) || ((pattrib->subtype == WIFI_ACTION_NOACK) && (pattrib->order == 1))) { SET_TX_DESC_NAV_USE_HDR_8814A(ptxdesc, 1); @@ -270,9 +261,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag { SET_TX_DESC_NDPA_8814A(ptxdesc, 1); } - } - else - { + } else { SET_TX_DESC_RETRY_LIMIT_ENABLE_8814A(ptxdesc, 1); if (pattrib->retry_ctrl == _TRUE) { SET_TX_DESC_DATA_RETRY_LIMIT_8814A(ptxdesc, 6); @@ -291,8 +280,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag } #endif //CONFIG_XMIT_ACK } - else if((pxmitframe->frame_tag&0x0f) == TXAGG_FRAMETAG) - { + else if ((pxmitframe->frame_tag&0x0f) == TXAGG_FRAMETAG) { RTW_INFO("pxmitframe->frame_tag == TXAGG_FRAMETAG\n"); } #ifdef CONFIG_MP_INCLUDED @@ -318,14 +306,14 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag SET_TX_DESC_PAID_8814A(ptxdesc, pattrib->txbf_p_aid); /* injected frame */ - if(pattrib->inject == 0xa5) { + if (pattrib->inject == 0xa5) { SET_TX_DESC_RETRY_LIMIT_ENABLE_8814A(ptxdesc, 1); if (pattrib->retry_ctrl == _TRUE) { SET_TX_DESC_DATA_RETRY_LIMIT_8814A(ptxdesc, 6); } else { SET_TX_DESC_DATA_RETRY_LIMIT_8814A(ptxdesc, 0); } - if(pattrib->sgi == _TRUE) { + if (pattrib->sgi == _TRUE) { SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 1); } else { SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 0); @@ -383,7 +371,7 @@ s32 rtl8814au_xmit_buf_handler(PADAPTER padapter) return _FAIL; } - if(check_pending_xmitbuf(pxmitpriv) == _FALSE) + if (check_pending_xmitbuf(pxmitpriv) == _FALSE) return _SUCCESS; #ifdef CONFIG_LPS_LCLK @@ -438,36 +426,29 @@ static s32 rtw_dump_xframe(_adapter *padapter, struct xmit_frame *pxmitframe) //RTW_INFO("rtw_dump_xframe()\n"); - for (t = 0; t < pattrib->nr_frags; t++) - { + for (t = 0; t < pattrib->nr_frags; t++) { if (inner_ret != _SUCCESS && ret == _SUCCESS) ret = _FAIL; - if (t != (pattrib->nr_frags - 1)) - { + if (t != (pattrib->nr_frags - 1)) { RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("pattrib->nr_frags=%d\n", pattrib->nr_frags)); sz = pxmitpriv->frag_len; sz = sz - 4 - (psecuritypriv->sw_encrypt ? 0 : pattrib->icv_len); - } - else //no frag - { + } else { //no frag sz = pattrib->last_txcmdsz; } pull = update_txdesc(pxmitframe, mem_addr, sz, _FALSE); - if(pull) - { + if (pull) { mem_addr += PACKET_OFFSET_SZ; //pull txdesc head //pxmitbuf ->pbuf = mem_addr; pxmitframe->buf_addr = mem_addr; w_sz = sz + TXDESC_SIZE; - } - else - { + } else { w_sz = sz + TXDESC_SIZE + PACKET_OFFSET_SZ; } @@ -512,7 +493,7 @@ static u32 xmitframe_need_length(struct xmit_frame *pxmitframe) pattrib->pktlen + ((pattrib->bswenc) ? pattrib->icv_len : 0); - if(pattrib->encrypt ==_TKIP_) + if (pattrib->encrypt ==_TKIP_) len += 8; return len; @@ -679,12 +660,11 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv xmitframe_phead = get_list_head(&ptxservq->sta_pending); xmitframe_plist = get_next(xmitframe_phead); - while (rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist) == _FALSE) - { + while (rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist) == _FALSE) { pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list); xmitframe_plist = get_next(xmitframe_plist); - if(_FAIL == rtw_hal_busagg_qsel_check(padapter,pfirstframe->attrib.qsel,pxmitframe->attrib.qsel)) + if (_FAIL == rtw_hal_busagg_qsel_check(padapter,pfirstframe->attrib.qsel,pxmitframe->attrib.qsel)) break; pxmitframe->agg_num = 0; // not first frame of aggregation @@ -842,11 +822,9 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("xmitframe_complete()\n")); - if(pxmitbuf==NULL) - { + if (pxmitbuf==NULL) { pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv); - if(!pxmitbuf) - { + if (!pxmitbuf) { return _FALSE; } } @@ -855,48 +833,40 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv { pxmitframe = rtw_dequeue_xframe(pxmitpriv, phwxmits, hwentry); - if(pxmitframe) - { + if (pxmitframe) { pxmitframe->pxmitbuf = pxmitbuf; pxmitframe->buf_addr = pxmitbuf->pbuf; pxmitbuf->priv_data = pxmitframe; - if((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) - { - if(pxmitframe->attrib.priority<=15)//TID0~15 - { + if ((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) { + if (pxmitframe->attrib.priority<=15) { //TID0~15 res = rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe); } //RTW_INFO("==> pxmitframe->attrib.priority:%d\n",pxmitframe->attrib.priority); - rtw_os_xmit_complete(padapter, pxmitframe);//always return ndis_packet after rtw_xmitframe_coalesce + rtw_os_xmit_complete(padapter, pxmitframe);//always return ndis_packet after rtw_xmitframe_coalesce } RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("xmitframe_complete(): rtw_dump_xframe\n")); - if(res == _SUCCESS) - { + if (res == _SUCCESS) { rtw_dump_xframe(padapter, pxmitframe); - } - else - { + } else { rtw_free_xmitbuf(pxmitpriv, pxmitbuf); rtw_free_xmitframe(pxmitpriv, pxmitframe); } xcnt++; - } - else - { + } else { rtw_free_xmitbuf(pxmitpriv, pxmitbuf); return _FALSE; } break; - }while(0/*xcnt < (NR_XMITFRAME >> 3)*/); + } while (0/*xcnt < (NR_XMITFRAME >> 3)*/); return _TRUE; @@ -911,8 +881,7 @@ static s32 xmitframe_direct(_adapter *padapter, struct xmit_frame *pxmitframe) res = rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe); if (res == _SUCCESS) { rtw_dump_xframe(padapter, pxmitframe); - } - else{ + } else { RTW_INFO("==> %s xmitframe_coalsece failed\n",__FUNCTION__); } @@ -936,8 +905,7 @@ static s32 pre_xmitframe(_adapter *padapter, struct xmit_frame *pxmitframe) _enter_critical_bh(&pxmitpriv->lock, &irqL); - if (rtw_txframes_sta_ac_pending(padapter, pattrib) > 0) - { + if (rtw_txframes_sta_ac_pending(padapter, pattrib) > 0) { //RTW_INFO("enqueue AC(%d)\n",pattrib->priority); goto enqueue; } @@ -1000,14 +968,11 @@ s32 rtl8814au_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmi struct xmit_priv *pxmitpriv = &padapter->xmitpriv; s32 err; - if ((err=rtw_xmitframe_enqueue(padapter, pxmitframe)) != _SUCCESS) - { + if ((err=rtw_xmitframe_enqueue(padapter, pxmitframe)) != _SUCCESS) { rtw_free_xmitframe(pxmitpriv, pxmitframe); pxmitpriv->tx_drop++; - } - else - { + } else { #ifdef PLATFORM_LINUX tasklet_hi_schedule(&pxmitpriv->xmit_tasklet); #endif @@ -1060,7 +1025,7 @@ s32 rtl8814au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) pxmit_skb = rtw_skb_alloc(len + TXDESC_SIZE); - if(!pxmit_skb) + if (!pxmit_skb) goto _exit; pxmitbuf = pxmit_skb->data; @@ -1079,8 +1044,7 @@ s32 rtl8814au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) ptxdesc->txdw0 |= cpu_to_le32(((TXDESC_SIZE+OFFSET_SZ)<txdw0 |= cpu_to_le32(OWN | FSG | LSG); - if(bmcst) - { + if (bmcst) { ptxdesc->txdw0 |= cpu_to_le32(BIT(24)); } From 1f3ca23fc8818eed94e67acbc4a7349e8f0c238b Mon Sep 17 00:00:00 2001 From: Christian B Date: Thu, 21 Dec 2017 08:19:43 +0100 Subject: [PATCH 179/234] Code cleanup --- hal/rtl8814a/usb/rtl8814au_led.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/hal/rtl8814a/usb/rtl8814au_led.c b/hal/rtl8814a/usb/rtl8814au_led.c index 7bfc3ba76..776cb21fb 100644 --- a/hal/rtl8814a/usb/rtl8814au_led.c +++ b/hal/rtl8814a/usb/rtl8814au_led.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -33,7 +33,7 @@ //================================================================================ -// LED_819xUsb routines. +// LED_819xUsb routines. //================================================================================ // @@ -42,7 +42,7 @@ // static void SwLedOn_8814AU( - PADAPTER padapter, + PADAPTER padapter, PLED_USB pLed ) { @@ -73,7 +73,7 @@ SwLedOn_8814AU( // static void SwLedOff_8814AU( - PADAPTER padapter, + PADAPTER padapter, PLED_USB pLed ) { @@ -144,4 +144,3 @@ rtl8814au_DeInitSwLeds( DeInitLed( &(ledpriv->SwLed1) ); DeInitLed( &(ledpriv->SwLed2) ); } - From 1c3935c6cb9aa9f8084af9bfcbcd0b25e61c60d3 Mon Sep 17 00:00:00 2001 From: Christian B Date: Thu, 21 Dec 2017 08:20:34 +0100 Subject: [PATCH 180/234] Code cleanup --- hal/rtl8814a/usb/rtl8814au_recv.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hal/rtl8814a/usb/rtl8814au_recv.c b/hal/rtl8814a/usb/rtl8814au_recv.c index 4d381791b..81193e724 100644 --- a/hal/rtl8814a/usb/rtl8814au_recv.c +++ b/hal/rtl8814a/usb/rtl8814au_recv.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -31,4 +31,3 @@ void rtl8814au_free_recv_priv(_adapter *padapter) { usb_free_recv_priv(padapter, INTERRUPT_MSG_FORMAT_LEN); } - From 075adee56a65c3d1a39e4a66fd5dfcd5d219121a Mon Sep 17 00:00:00 2001 From: Christian B Date: Thu, 21 Dec 2017 20:09:01 +0100 Subject: [PATCH 181/234] Update README.md * Added "bc" to dependencies --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index bfcc4281b..8d2a28ad6 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ cd rtl* Package / Build dependencies ``` sudo apt-get install build-essential +sudp apt-get install bc sudo apt-get install linux-headers-`uname -r` ``` For setting monitor mode From f69cee95310d226d51fd77af974fc423792bbe43 Mon Sep 17 00:00:00 2001 From: Crazar Date: Wed, 27 Dec 2017 23:22:43 -0700 Subject: [PATCH 182/234] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8d2a28ad6..8111e8f90 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ cd rtl* Package / Build dependencies ``` sudo apt-get install build-essential -sudp apt-get install bc +sudo apt-get install bc sudo apt-get install linux-headers-`uname -r` ``` For setting monitor mode From f221a169f281dab9756a176ec2abd91e0eba7d19 Mon Sep 17 00:00:00 2001 From: Carlos Garces Date: Thu, 4 Jan 2018 23:20:45 +0100 Subject: [PATCH 183/234] Update for kernel 4.15 This commit adds support for kernel 4.15, which changed the timer interface. --- hal/phydm/phydm_types.h | 8 ++++++++ include/osdep_service.h | 4 ++++ include/osdep_service_linux.h | 29 ++++++++++++++++++++++++++++- 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/hal/phydm/phydm_types.h b/hal/phydm/phydm_types.h index 90be597c6..4f5137a3f 100644 --- a/hal/phydm/phydm_types.h +++ b/hal/phydm/phydm_types.h @@ -153,7 +153,11 @@ typedef enum _RT_SPINLOCK_TYPE{ typedef struct rtl8192cd_priv *prtl8192cd_priv; typedef struct stat_info STA_INFO_T,*PSTA_INFO_T; +#if defined (LINUX_VERSION_CODE) && (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) + typedef struct legacy_timer_emu RT_TIMER, *PRT_TIMER; +#else typedef struct timer_list RT_TIMER, *PRT_TIMER; +#endif typedef void * RT_TIMER_CALL_BACK; #ifdef CONFIG_PCI_HCI @@ -223,7 +227,11 @@ typedef enum _RT_SPINLOCK_TYPE{ #define ODM_ENDIAN_TYPE ODM_ENDIAN_BIG #endif +#if defined (LINUX_VERSION_CODE) && (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) + typedef struct legacy_timer_emu RT_TIMER, *PRT_TIMER; +#else typedef struct timer_list RT_TIMER, *PRT_TIMER; +#endif typedef void * RT_TIMER_CALL_BACK; #define STA_INFO_T struct sta_info #define PSTA_INFO_T struct sta_info * diff --git a/include/osdep_service.h b/include/osdep_service.h index c2c290532..8f3e9656d 100644 --- a/include/osdep_service.h +++ b/include/osdep_service.h @@ -321,8 +321,12 @@ extern void rtw_init_timer(_timer *ptimer, void *padapter, void *pfunc); __inline static unsigned char _cancel_timer_ex(_timer *ptimer) { #ifdef PLATFORM_LINUX +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) + return del_timer_sync(&ptimer->t); +#else return del_timer_sync(ptimer); #endif +#endif #ifdef PLATFORM_FREEBSD _cancel_timer(ptimer, 0); return 0; diff --git a/include/osdep_service_linux.h b/include/osdep_service_linux.h index b2410f298..26bb1f29b 100644 --- a/include/osdep_service_linux.h +++ b/include/osdep_service_linux.h @@ -137,7 +137,15 @@ typedef spinlock_t _lock; #else typedef struct semaphore _mutex; #endif -typedef struct timer_list _timer; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) + typedef struct legacy_timer_emu { + struct timer_list t; + void (*function)(unsigned long); + unsigned long data; + } _timer; +#else + typedef struct timer_list _timer; +#endif struct __queue { struct list_head queue; @@ -269,22 +277,41 @@ __inline static void rtw_list_delete(_list *plist) } #define RTW_TIMER_HDL_ARGS void *FunctionContext +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) +static void legacy_timer_emu_func(struct timer_list *t) +{ + struct legacy_timer_emu *lt = from_timer(lt, t, t); + lt->function(lt->data); +} +#endif __inline static void _init_timer(_timer *ptimer, _nic_hdl nic_hdl, void *pfunc, void *cntx) { /* setup_timer(ptimer, pfunc,(u32)cntx); */ ptimer->function = pfunc; ptimer->data = (unsigned long)cntx; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) + timer_setup(&ptimer->t, legacy_timer_emu_func, 0); +#else init_timer(ptimer); +#endif } __inline static void _set_timer(_timer *ptimer, u32 delay_time) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) + mod_timer(&ptimer->t, (jiffies+(delay_time*HZ/1000))); +#else mod_timer(ptimer , (jiffies + (delay_time * HZ / 1000))); +#endif } __inline static void _cancel_timer(_timer *ptimer, u8 *bcancelled) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) + del_timer_sync(&ptimer->t); +#else del_timer_sync(ptimer); +#endif *bcancelled = 1; } From 6f695d79bd594724485a20d6efccaf410339fe01 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 8 Jan 2018 14:32:56 +0100 Subject: [PATCH 184/234] Minor changes --- dkms-install.sh | 0 dkms-remove.sh | 0 dkms.conf | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 dkms-install.sh mode change 100644 => 100755 dkms-remove.sh diff --git a/dkms-install.sh b/dkms-install.sh old mode 100644 new mode 100755 diff --git a/dkms-remove.sh b/dkms-remove.sh old mode 100644 new mode 100755 diff --git a/dkms.conf b/dkms.conf index b220ea125..4cd452dfa 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.1.5~20171216" +PACKAGE_VERSION="5.1.5~20180108" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" From e149db0eb0a91693f770975d45bcbbe4e720ba21 Mon Sep 17 00:00:00 2001 From: Antonio Larrosa Date: Fri, 12 Jan 2018 11:02:33 +0100 Subject: [PATCH 185/234] Create LICENSE file --- LICENSE | 339 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 339 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..d159169d1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. From f6dc0ef9002e27d3c51f63b047417c0d34bf301c Mon Sep 17 00:00:00 2001 From: Christian B Date: Sat, 20 Jan 2018 16:33:05 +0100 Subject: [PATCH 186/234] Radiotap FCS flag fix * The driver marks all frames as containing the Frame Check Sequence at the end. This confuses Wireshark because the FCS field is stripped before the frame is released on the monitor interface. --- core/rtw_recv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/rtw_recv.c b/core/rtw_recv.c index 8bd46aaa4..83ed24e40 100755 --- a/core/rtw_recv.c +++ b/core/rtw_recv.c @@ -3608,7 +3608,7 @@ static sint fill_radiotap_hdr(_adapter *padapter, union recv_frame *precvframe) hdr_buf[rt_len] |= IEEE80211_RADIOTAP_F_FRAG; /* always append FCS */ - hdr_buf[rt_len] |= IEEE80211_RADIOTAP_F_FCS; + /* hdr_buf[rt_len] |= IEEE80211_RADIOTAP_F_FCS; */ if (0) hdr_buf[rt_len] |= IEEE80211_RADIOTAP_F_DATAPAD; From 6045580713cceed8f1ce70525e0b43d44798a159 Mon Sep 17 00:00:00 2001 From: kimocoder Date: Thu, 25 Jan 2018 20:05:33 +0100 Subject: [PATCH 187/234] minor fixes --- core/rtw_mlme_ext.c | 0 core/rtw_recv.c | 0 dkms.conf | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) mode change 100755 => 100644 core/rtw_mlme_ext.c mode change 100755 => 100644 core/rtw_recv.c diff --git a/core/rtw_mlme_ext.c b/core/rtw_mlme_ext.c old mode 100755 new mode 100644 diff --git a/core/rtw_recv.c b/core/rtw_recv.c old mode 100755 new mode 100644 diff --git a/dkms.conf b/dkms.conf index 4cd452dfa..234f88e2b 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.1.5~20180108" +PACKAGE_VERSION="5.1.5~20180125" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" From b8e3b80e4fe9f940b94a4d3e1e1a5edd1616bccd Mon Sep 17 00:00:00 2001 From: kimocoder Date: Fri, 16 Feb 2018 22:40:26 +0100 Subject: [PATCH 188/234] Code cleanup + more debug ++ --- Makefile | 16 +- README.md | 8 +- hal/rtl8814a/rtl8814a_phycfg.c | 7 +- hal/rtl8814a/rtl8814a_sreset.c | 2 +- hal/rtl8814a/rtl8814a_xmit.c | 4 +- hal/rtl8814a/usb/rtl8814au_xmit.c | 18 +- hal/rtl8814a/usb/usb_halinit.c | 560 ++++++++++++------------- hal/rtl8814a/usb/usb_ops_linux.c | 50 ++- include/autoconf.h | 2 +- include/hal_data.h | 0 include/hal_data.h.edited | 652 ------------------------------ include/rtl8723b_hal.h | 0 include/rtl8723b_led.h | 0 include/rtl8723b_recv.h | 0 include/rtl8723b_spec.h | 0 include/rtl8723b_xmit.h | 0 include/rtl8814a_cmd.h | 0 include/rtl8814a_hal.h | 0 include/rtl8814a_recv.h | 0 include/rtl8814a_spec.h | 0 include/rtl8814a_xmit.h | 0 include/rtl8822be_hal.h | 0 22 files changed, 304 insertions(+), 1015 deletions(-) mode change 100755 => 100644 include/hal_data.h delete mode 100755 include/hal_data.h.edited mode change 100755 => 100644 include/rtl8723b_hal.h mode change 100755 => 100644 include/rtl8723b_led.h mode change 100755 => 100644 include/rtl8723b_recv.h mode change 100755 => 100644 include/rtl8723b_spec.h mode change 100755 => 100644 include/rtl8723b_xmit.h mode change 100755 => 100644 include/rtl8814a_cmd.h mode change 100755 => 100644 include/rtl8814a_hal.h mode change 100755 => 100644 include/rtl8814a_recv.h mode change 100755 => 100644 include/rtl8814a_spec.h mode change 100755 => 100644 include/rtl8814a_xmit.h mode change 100755 => 100644 include/rtl8822be_hal.h diff --git a/Makefile b/Makefile index ef959e7e4..f917708cb 100755 --- a/Makefile +++ b/Makefile @@ -86,7 +86,7 @@ CONFIG_HIGH_ACTIVE = n CONFIG_PNO_SUPPORT = n CONFIG_PNO_SET_DEBUG = n CONFIG_AP_WOWLAN = n -######### Notify SDIO Host Keep Power During Syspend ########## +######### Notify SDIO Host Keep Power During Suspend ########## CONFIG_RTW_SDIO_PM_KEEP_POWER = y ###################### MP HW TX MODE FOR VHT ####################### CONFIG_MP_VHT_HW_TX_MODE = n @@ -175,12 +175,12 @@ CONFIG_RTL8814A = y endif ifeq ($(DEBUG), 1) -EXTRA_CFLAGS += -DDBG=1 -DCONFIG_RTW_DEBUG -DCONFIG_DBG_COUNTER -DRTW_LOG_LEVEL=5 +EXTRA_CFLAGS += -DDBG=1 -DCONFIG_RTW_DEBUG -DCONFIG_DBG_COUNTER -DRTW_LOG_LEVEL=5 EXTRA_CFLAGS += -DCONFIG_RADIOTAP_WITH_RXDESC else ifeq ($(DEBUG), 2) EXTRA_CFLAGS += -DDBG=1 -DCONFIG_RTW_DEBUG -DCONFIG_DBG_COUNTER -DRTW_LOG_LEVEL=5 -EXTRA_CFLAGS += -DCONFIG_DEBUG_RTL871X -EXTRA_CFLAGS += -DCONFIG_RADIOTAP_WITH_RXDESC +EXTRA_CFLAGS += -DCONFIG_DEBUG_RTL871X +EXTRA_CFLAGS += -DCONFIG_RADIOTAP_WITH_RXDESC else EXTRA_CFLAGS += -DDBG=0 endif @@ -226,7 +226,7 @@ _HAL_INTFS_FILES := hal/hal_intf.o \ hal/hal_hci/hal_$(HCI_NAME).o \ hal/led/hal_$(HCI_NAME)_led.o - + _OUTSRC_FILES := hal/phydm/phydm_debug.o \ hal/phydm/phydm_antdiv.o\ hal/phydm/phydm_antdect.o\ @@ -517,7 +517,7 @@ _OUTSRC_FILES += hal/phydm/rtl8821a/halhwimg8821a_fw.o\ hal/phydm/rtl8821a/phydm_rtl8821a.o\ hal/phydm/rtl8821a/phydm_iqk_8821a_ce.o\ hal/phydm/txbf/haltxbfjaguar.o - + endif endif @@ -609,7 +609,7 @@ _HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \ hal/$(RTL871X)/$(RTL871X)_rf6052.o \ hal/$(RTL871X)/$(RTL871X)_dm.o \ hal/$(RTL871X)/$(RTL871X)_rxdesc.o \ - hal/$(RTL871X)/$(RTL871X)_cmd.o + hal/$(RTL871X)/$(RTL871X)_cmd.o # hal/$(RTL871X)/hal8814a_fw.o @@ -1837,7 +1837,7 @@ rtk_core := core/rtw_cmd.o \ core/rtw_btcoex.o \ core/rtw_beamforming.o \ core/rtw_odm.o \ - core/efuse/rtw_efuse.o + core/efuse/rtw_efuse.o ifeq ($(CONFIG_SDIO_HCI), y) rtk_core += core/rtw_sdio.o diff --git a/README.md b/README.md index 8111e8f90..4e7cd941f 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,10 @@ $ sudo modprobe 8812au rtw_led_ctrl=1 ## Credits ``` -astsam - for the main work + monitor/injection support - https://github.com/astsam -evilphish - for great patching (USB3, VHT + txpower control +++) - https://github.com/evilphish +astsam - for the main work + monitor/injection support - https://github.com/astsam +evilphish - for great patching (USB3, VHT + txpower control +++) - https://github.com/evilphish +jcard0na - for fixing the "sluggish" / broken injection - https://github.com/jcard0na +dpShaker - for adding support for pre-configured SeqNum (RadioTap) +CGarces - for providing kernel support patch (v4.15) +brimstone - for providing kernel support patch (v4.14) ``` diff --git a/hal/rtl8814a/rtl8814a_phycfg.c b/hal/rtl8814a/rtl8814a_phycfg.c index 423ba9ff6..f0a247a7e 100644 --- a/hal/rtl8814a/rtl8814a_phycfg.c +++ b/hal/rtl8814a/rtl8814a_phycfg.c @@ -554,7 +554,6 @@ PHY_ConfigBB_8814A( } - //2 3.3 RF Config s32 @@ -1157,7 +1156,7 @@ PHY_GetTxPowerIndex_8814A( tpt_offset = PHY_GetTxPowerTrackingOffset(pAdapter, RFPath, Rate); powerDiffByRate = powerDiffByRate > limit ? limit : powerDiffByRate; - /*RTW_INFO("Rate-0x%x: (TxPower, PowerDiffByRate Path-%c) = (0x%X, %d)\n", Rate, ((RFPath==0)?'A':(RFPath==1)?'B':(RFPath==2)?'C':'D'), txPower, powerDiffByRate);*/ + RTW_INFO("Rate-0x%x: (TxPower, PowerDiffByRate Path-%c) = (0x%X, %d)\n", Rate, ((RFPath==0)?'A':(RFPath==1)?'B':(RFPath==2)?'C':'D'), txPower, powerDiffByRate); txPower += powerDiffByRate; @@ -1184,8 +1183,8 @@ PHY_GetTxPowerIndex_8814A( //(pHalData->bautoload_fail_flag || pHalData->EfuseMap[EFUSE_INIT_MAP][EEPROM_TX_PWR_INX_JAGUAR] == 0xFF)) //txPower = 0x12; - /*RTW_INFO("Final Tx Power(RF-%c, Channel: %d) = %d(0x%X)\n", ((RFPath==0)?'A':(RFPath==1)?'B':(RFPath==2)?'C':'D'), Channel, - txPower, txPower);*/ + RTW_INFO("Final Tx Power(RF-%c, Channel: %d) = %d(0x%X)\n", ((RFPath==0)?'A':(RFPath==1)?'B':(RFPath==2)?'C':'D'), Channel, + txPower, txPower); return (u8) txPower; } diff --git a/hal/rtl8814a/rtl8814a_sreset.c b/hal/rtl8814a/rtl8814a_sreset.c index 4a7947e50..b9e83fdd8 100644 --- a/hal/rtl8814a/rtl8814a_sreset.c +++ b/hal/rtl8814a/rtl8814a_sreset.c @@ -93,7 +93,7 @@ void rtl8814_sreset_linked_status_check(_adapter *padapter) regc58 = rtw_read32(padapter,0xc58); reg824 = rtw_read32(padapter,0x824); reg800 = rtw_read32(padapter,0x800); - if( ((regc50&0xFFFFFF00)!= 0x69543400)|| + if ( ((regc50&0xFFFFFF00)!= 0x69543400)|| ((regc58&0xFFFFFF00)!= 0x69543400)|| (((reg824&0xFFFFFF00)!= 0x00390000)&&(((reg824&0xFFFFFF00)!= 0x80390000)))|| ( ((reg800&0xFFFFFF00)!= 0x03040000)&&((reg800&0xFFFFFF00)!= 0x83040000))) diff --git a/hal/rtl8814a/rtl8814a_xmit.c b/hal/rtl8814a/rtl8814a_xmit.c index 43b8268f3..bb6cdd8f1 100644 --- a/hal/rtl8814a/rtl8814a_xmit.c +++ b/hal/rtl8814a/rtl8814a_xmit.c @@ -172,7 +172,6 @@ InsertEMContent_8814( } - void UpdateEarlyModeInfo8814(struct xmit_priv *pxmitpriv,struct xmit_buf *pxmitbuf ) { //_adapter *padapter, struct xmit_frame *pxmitframe,struct tx_servq *ptxservq @@ -254,7 +253,6 @@ void rtl8814a_cal_txdesc_chksum(u8 *ptxdesc) u32 index; u16 checksum = 0; - usPtr = (u16*)ptxdesc; // checksume is always calculated by first 32 bytes, // and it doesn't depend on TX DESC length. @@ -439,7 +437,7 @@ BWMapping_8814( else BWSettingOfDesc = 0; } - else if(pHalData->CurrentChannelBW== CHANNEL_WIDTH_40) { + else if (pHalData->CurrentChannelBW== CHANNEL_WIDTH_40) { if ((pattrib->bwmode == CHANNEL_WIDTH_40) || (pattrib->bwmode == CHANNEL_WIDTH_80)) BWSettingOfDesc = 1; else diff --git a/hal/rtl8814a/usb/rtl8814au_xmit.c b/hal/rtl8814a/usb/rtl8814au_xmit.c index 820026361..ac6001440 100644 --- a/hal/rtl8814a/usb/rtl8814au_xmit.c +++ b/hal/rtl8814a/usb/rtl8814au_xmit.c @@ -61,7 +61,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag #ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX if (padapter->registrypriv.mp_mode == 0) { - if((PACKET_OFFSET_SZ != 0) && (!bagg_pkt) &&(rtw_usb_bulk_size_boundary(padapter,TXDESC_SIZE+sz)==_FALSE)) { + if ((PACKET_OFFSET_SZ != 0) && (!bagg_pkt) &&(rtw_usb_bulk_size_boundary(padapter,TXDESC_SIZE+sz)==_FALSE)) { ptxdesc = (pmem+PACKET_OFFSET_SZ); //RTW_INFO("==> non-agg-pkt,shift pointer...\n"); pull = 1; @@ -94,10 +94,9 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag } #ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX - if (padapter->registrypriv.mp_mode == 0) - { - if((PACKET_OFFSET_SZ != 0) && (!bagg_pkt)){ - if((pull) && (pxmitframe->pkt_offset>0)) { + if (padapter->registrypriv.mp_mode == 0) { + if ((PACKET_OFFSET_SZ != 0) && (!bagg_pkt)) { + if ((pull) && (pxmitframe->pkt_offset>0)) { pxmitframe->pkt_offset = pxmitframe->pkt_offset -1; } } @@ -130,8 +129,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag SET_TX_DESC_SEQ_8814A(ptxdesc, pattrib->seqnum); } - if((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) - { + if ((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) { //RTW_INFO("pxmitframe->frame_tag == DATA_FRAMETAG\n"); rtl8814a_fill_txdesc_sectype(pattrib, ptxdesc); @@ -189,7 +187,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag if (padapter->fix_rate != 0xFF) { // modify data rate by iwpriv SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); DriverFixedRate = 0x01; - if(padapter->fix_rate & BIT(7)) + if (padapter->fix_rate & BIT(7)) SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 1); SET_TX_DESC_TX_RATE_8814A(ptxdesc, (padapter->fix_rate & 0x7F)); @@ -202,7 +200,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag if (pattrib->stbc) SET_TX_DESC_DATA_STBC_8814A(ptxdesc, 1); - //work arond before fixing RA + //work around before fixing RA //SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); //SET_TX_DESC_TX_RATE_8814A(ptxdesc, 0x10); } else { @@ -253,7 +251,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag SET_TX_DESC_DATA_RETRY_LIMIT_8814A(ptxdesc, 5); SET_TX_DESC_DISABLE_FB_8814A(ptxdesc, 1); - //if(pattrib->rts_cca) + //if (pattrib->rts_cca) //{ // SET_TX_DESC_NDPA_8812(ptxdesc, 2); //} diff --git a/hal/rtl8814a/usb/usb_halinit.c b/hal/rtl8814a/usb/usb_halinit.c index b134d5a7e..e9a5c6895 100644 --- a/hal/rtl8814a/usb/usb_halinit.c +++ b/hal/rtl8814a/usb/usb_halinit.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -33,8 +33,7 @@ static void _dbg_dump_macreg(_adapter *padapter) u32 offset = 0; u32 val32 = 0; u32 index =0 ; - for(index=0;index<64;index++) - { + for (index=0;index<64;index++) { offset = index*4; val32 = rtw_read32(padapter,offset); RTW_INFO("offset : 0x%02x ,val:0x%08x\n",offset,val32); @@ -52,11 +51,11 @@ _ConfigChipOutEP_8814( pHalData->OutEpQueueSel = 0; pHalData->OutEpNumber = 0; - switch(NumOutPipe){ + switch (NumOutPipe) { case 4: pHalData->OutEpQueueSel=TX_SELE_HQ| TX_SELE_LQ|TX_SELE_NQ; pHalData->OutEpNumber=4; - break; + break; case 3: pHalData->OutEpQueueSel=TX_SELE_HQ| TX_SELE_LQ|TX_SELE_NQ; pHalData->OutEpNumber=3; @@ -69,9 +68,9 @@ _ConfigChipOutEP_8814( pHalData->OutEpQueueSel=TX_SELE_HQ; pHalData->OutEpNumber=1; break; - default: + default: break; - + } RTW_INFO("%s OutEpQueueSel(0x%02x), OutEpNumber(%d) \n",__FUNCTION__,pHalData->OutEpQueueSel,pHalData->OutEpNumber ); @@ -87,10 +86,10 @@ static BOOLEAN HalUsbSetQueuePipeMapping8814AUsb( BOOLEAN result = _FALSE; _ConfigChipOutEP_8814(pAdapter, NumOutPipe); - + // Normal chip with one IN and one OUT doesn't have interrupt IN EP. - if(1 == pHalData->OutEpNumber){ - if(1 != NumInPipe){ + if (1 == pHalData->OutEpNumber) { + if (1 != NumInPipe) { return result; } } @@ -101,7 +100,7 @@ static BOOLEAN HalUsbSetQueuePipeMapping8814AUsb( //} result = Hal_MappingOutPipe(pAdapter, NumOutPipe); - + return result; } @@ -173,55 +172,45 @@ _InitBurstPktLen(IN PADAPTER Adapter) { u8 u1bTmp; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - + //yx_qi 131128 move to 0x1448, 144c rtw_write32(Adapter, REG_FAST_EDCA_VOVI_SETTING_8814A, 0x08070807); //yx_qi 131128 rtw_write32(Adapter, REG_FAST_EDCA_BEBK_SETTING_8814A, 0x08070807); //yx_qi 131128 - + u1bTmp = rtw_read8(Adapter, 0xff); //check device operation speed: SS 0xff bit7 - - if(u1bTmp & BIT7) //USB2/1.1 Mode - { + + if (u1bTmp & BIT7) { //USB2/1.1 Mode pHalData->bSupportUSB3 = FALSE; - } - else //USB3 Mode - { + } else { //USB3 Mode pHalData->bSupportUSB3 = TRUE; } - - if(pHalData->bSupportUSB3 == _FALSE) //USB2/1.1 Mode - { - if(pHalData->UsbBulkOutSize == 512) - { + + if (pHalData->bSupportUSB3 == _FALSE) { //USB2/1.1 Mode + if (pHalData->UsbBulkOutSize == 512) { //set burst pkt len=512B rtw_write8(Adapter, REG_RXDMA_MODE_8814A, 0x1e); - } - else - { + } else { //set burst pkt len=64B - rtw_write8(Adapter, REG_RXDMA_MODE_8814A, 0x2e); + rtw_write8(Adapter, REG_RXDMA_MODE_8814A, 0x2e); } rtw_write16(Adapter, REG_RXDMA_AGG_PG_TH_8814A,0x2005); //dmc agg th 20K - } - else //USB3 Mode - { + } else { //USB3 Mode //set burst pkt len=1k - rtw_write8(Adapter, REG_RXDMA_MODE_8814A, 0x0e); + rtw_write8(Adapter, REG_RXDMA_MODE_8814A, 0x0e); rtw_write16(Adapter, REG_RXDMA_AGG_PG_TH_8814A,0x0a05); //dmc agg th 20K - + // set Reg 0xf008[3:4] to 2'00 to disable U1/U2 Mode to avoid 2.5G spur in USB3.0. added by page, 20120712 rtw_write8(Adapter, 0xf008, rtw_read8(Adapter, 0xf008)&0xE7); //to avoid usb 3.0 H2C fail rtw_write16(Adapter, 0xf002, 0); - + rtw_write8(Adapter, REG_SW_AMPDU_BURST_MODE_CTRL_8814A, rtw_read8(Adapter, REG_SW_AMPDU_BURST_MODE_CTRL_8814A) & ~BIT(6)); RTW_INFO("turn off the LDPC pre-TX\n"); - - } - if(pHalData->AMPDUBurstMode) - { + } + + if (pHalData->AMPDUBurstMode) { rtw_write8(Adapter,REG_SW_AMPDU_BURST_MODE_CTRL_8814A, 0x5F); } } @@ -232,7 +221,7 @@ _InitQueueReservedPage_8814AUsb( ) { struct registry_priv *pregistrypriv = &Adapter->registrypriv; - u16 txpktbuf_bndy; + u16 txpktbuf_bndy; RTW_INFO("===>_InitQueueReservedPage_8814AUsb()\n"); @@ -246,7 +235,7 @@ _InitQueueReservedPage_8814AUsb( rtw_write32(Adapter, REG_RQPN_CTRL_2_8814A, 0x80000000); - if(!pregistrypriv->wifi_spec) + if (!pregistrypriv->wifi_spec) txpktbuf_bndy = TX_PAGE_BOUNDARY_8814A; else // for WMM txpktbuf_bndy = WMM_NORMAL_TX_PAGE_BOUNDARY_8814A; @@ -260,7 +249,7 @@ _InitQueueReservedPage_8814AUsb( rtw_write16(Adapter,REG_FIFOPAGE_CTRL_2_8814A, txpktbuf_bndy); //The head page of packet of Bcnq1 rtw_write16(Adapter,REG_FIFOPAGE_CTRL_2_8814A+2,txpktbuf_bndy); - + RTW_INFO("<===_InitQueueReservedPage_8814AUsb()\n"); } @@ -273,7 +262,7 @@ static u32 _InitPowerOn_8814AU(_adapter *padapter) u8 u1btmp = rtw_read8(padapter, 0x10C2); rtw_write8(padapter, 0x10C2, (u1btmp | BIT1)); - if(!HalPwrSeqCmdParsing(padapter, ~PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, Rtl8814A_NIC_ENABLE_FLOW)) + if (!HalPwrSeqCmdParsing(padapter, ~PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, Rtl8814A_NIC_ENABLE_FLOW)) return _FAIL; // Enable MAC DMA/WMAC/SCHEDULE/SEC block @@ -320,9 +309,9 @@ _InitPageBoundary_8814AUsb( { //20130416 KaiYuan modified for 8814 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - + rtw_write16(Adapter, REG_RXFF_PTR_8814A, RX_DMA_BOUNDARY_8814A); //yx_qi 20140331 - + } static VOID @@ -353,11 +342,11 @@ _InitNormalChipTwoOutEpPriority_8814AUsb( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); struct registry_priv *pregistrypriv = &Adapter->registrypriv; u16 beQ,bkQ,viQ,voQ,mgtQ,hiQ; - + u16 valueHi = 0; u16 valueLow = 0; - - switch(pHalData->OutEpQueueSel) + + switch (pHalData->OutEpQueueSel) { case (TX_SELE_HQ | TX_SELE_LQ): valueHi = QUEUE_HIGH; @@ -373,27 +362,27 @@ _InitNormalChipTwoOutEpPriority_8814AUsb( break; default: valueHi = QUEUE_HIGH; - valueLow = QUEUE_NORMAL; + valueLow = QUEUE_NORMAL; break; } - if(!pregistrypriv->wifi_spec){ + if (!pregistrypriv->wifi_spec) { beQ = valueLow; bkQ = valueLow; viQ = valueHi; voQ = valueHi; - mgtQ = valueHi; - hiQ = valueHi; + mgtQ = valueHi; + hiQ = valueHi; } - else{//for WMM ,CONFIG_OUT_EP_WIFI_MODE + else { //for WMM ,CONFIG_OUT_EP_WIFI_MODE beQ = valueLow; bkQ = valueHi; viQ = valueHi; voQ = valueLow; mgtQ = valueHi; - hiQ = valueHi; + hiQ = valueHi; } - + _InitNormalChipRegPriority_8814AUsb(Adapter,beQ,bkQ,viQ,voQ,mgtQ,hiQ); } @@ -405,21 +394,20 @@ _InitNormalChipThreeOutEpPriority_8814AUsb( struct registry_priv *pregistrypriv = &Adapter->registrypriv; u16 beQ,bkQ,viQ,voQ,mgtQ,hiQ; - if(!pregistrypriv->wifi_spec){// typical setting + if (!pregistrypriv->wifi_spec) { // typical setting beQ = QUEUE_LOW; bkQ = QUEUE_LOW; viQ = QUEUE_NORMAL; voQ = QUEUE_HIGH; mgtQ = QUEUE_HIGH; - hiQ = QUEUE_HIGH; - } - else{// for WMM + hiQ = QUEUE_HIGH; + } else { // for WMM beQ = QUEUE_LOW; bkQ = QUEUE_NORMAL; viQ = QUEUE_NORMAL; voQ = QUEUE_HIGH; mgtQ = QUEUE_HIGH; - hiQ = QUEUE_HIGH; + hiQ = QUEUE_HIGH; } _InitNormalChipRegPriority_8814AUsb(Adapter,beQ,bkQ,viQ,voQ,mgtQ,hiQ); } @@ -431,7 +419,7 @@ _InitQueuePriority_8814AUsb( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - switch(pHalData->OutEpNumber) + switch (pHalData->OutEpNumber) { case 2: _InitNormalChipTwoOutEpPriority_8814AUsb(Adapter); @@ -499,8 +487,8 @@ _InitWMACSetting_8814A( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); //pHalData->ReceiveConfig = AAP | APM | AM | AB | APP_ICV | ADF | AMF | APP_FCS | HTC_LOC_CTRL | APP_MIC | APP_PHYSTS; - pHalData->ReceiveConfig = - RCR_APM | RCR_AM | RCR_AB |RCR_CBSSID_DATA| RCR_CBSSID_BCN| RCR_APP_ICV | RCR_AMF | RCR_HTC_LOC_CTRL | RCR_APP_MIC | RCR_APP_PHYST_RXFF; + pHalData->ReceiveConfig = + RCR_APM | RCR_AM | RCR_AB |RCR_CBSSID_DATA| RCR_CBSSID_BCN| RCR_APP_ICV | RCR_AMF | RCR_HTC_LOC_CTRL | RCR_APP_MIC | RCR_APP_PHYST_RXFF; #if (1 == RTL8812A_RX_PACKET_INCLUDE_CRC) pHalData->ReceiveConfig |= ACRC32; @@ -539,7 +527,7 @@ _InitWMACSetting_8814A( //rtw_write16(Adapter, REG_RXFLTMAP0, value16); //enable RX_SHIFT bits - //rtw_write8(Adapter, REG_TRXDMA_CTRL, rtw_read8(Adapter, REG_TRXDMA_CTRL)|BIT(1)); + //rtw_write8(Adapter, REG_TRXDMA_CTRL, rtw_read8(Adapter, REG_TRXDMA_CTRL)|BIT(1)); } */ @@ -553,21 +541,21 @@ _InitMacConfigure_8814A( u16 value16; u32 regRRSR; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - + switch (Adapter->registrypriv.wireless_mode) { case WIRELESS_11B: regRRSR = RATE_ALL_CCK; break; - + case WIRELESS_11G: case WIRELESS_11A: case WIRELESS_11_5N: - case WIRELESS_11A_5N://Todo: no basic rate for ofdm ? + case WIRELESS_11A_5N: //Todo: no basic rate for ofdm ? case WIRELESS_11_5AC: regRRSR = RATE_ALL_OFDM_AG; break; - + case WIRELESS_11BG: case WIRELESS_11G_24N: case WIRELESS_11_24N: @@ -575,7 +563,7 @@ _InitMacConfigure_8814A( default: regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; break; - + } // Init value for RRSR. @@ -584,7 +572,7 @@ _InitMacConfigure_8814A( // Retry Limit value16 = _LRL(0x30) | _SRL(0x30); rtw_write16(Adapter, REG_RETRY_LIMIT_8814A, value16); - + pHalData->ReceiveConfig = RCR_APM | RCR_AM | RCR_AB |RCR_CBSSID_DATA| RCR_CBSSID_BCN| RCR_APP_ICV | RCR_AMF | RCR_HTC_LOC_CTRL | RCR_APP_MIC | RCR_APP_PHYST_RXFF; pHalData->ReceiveConfig |= FORCEACK; #if (1 == RTL8812A_RX_PACKET_INCLUDE_CRC) @@ -608,8 +596,8 @@ _InitMacConfigure_8814A( // 201409/25 MH When RA is enabled, we need to reduce the value. rtw_write8(Adapter, REG_MAX_AGGR_NUM_8814A, 0x36); - rtw_write8(Adapter, REG_RTS_MAX_AGGR_NUM_8814A,0x36); - + rtw_write8(Adapter, REG_RTS_MAX_AGGR_NUM_8814A,0x36); + } /* @@ -643,7 +631,7 @@ _InitAdaptiveCtrl_8812AUsb( // Retry Limit value16 = _LRL(0x30) | _SRL(0x30); rtw_write16(Adapter, REG_RL, value16); - + }*/ static VOID @@ -656,7 +644,7 @@ _InitEDCA_8814AUsb( rtw_write16(Adapter,REG_MAC_SPEC_SIFS, 0x100a); // Set SIFS for CCK - rtw_write16(Adapter,REG_SIFS_CTX, 0x100a); + rtw_write16(Adapter,REG_SIFS_CTX, 0x100a); // Set SIFS for OFDM rtw_write16(Adapter,REG_SIFS_TRX, 0x100a); @@ -679,9 +667,9 @@ _InitBeaconMaxError_8814A( ) { #ifdef CONFIG_ADHOC_WORKAROUND_SETTING - rtw_write8(Adapter, REG_BCN_MAX_ERR, 0xFF); + rtw_write8(Adapter, REG_BCN_MAX_ERR, 0xFF); #else - //rtw_write8(Adapter, REG_BCN_MAX_ERR, (InfraMode ? 0xFF : 0x10)); + //rtw_write8(Adapter, REG_BCN_MAX_ERR, (InfraMode ? 0xFF : 0x10)); #endif } @@ -689,12 +677,12 @@ _InitBeaconMaxError_8814A( static void _InitHWLed(PADAPTER Adapter) { struct led_priv *pledpriv = &(Adapter->ledpriv); - - if( pledpriv->LedStrategy != HW_LED) + + if ( pledpriv->LedStrategy != HW_LED) return; - + // HW led control -// to do .... +// to do .... //must consider cases of antenna diversity/ commbo card/solo card/mini card } @@ -717,7 +705,7 @@ _InitRetryFunction_8814A( ) { u8 value8; - + value8 = rtw_read8(Adapter, REG_FWHW_TXQ_CTRL); value8 |= EN_AMPDU_RTY_NEW; rtw_write8(Adapter, REG_FWHW_TXQ_CTRL, value8); @@ -730,7 +718,7 @@ _InitRetryFunction_8814A( /*----------------------------------------------------------------------------- * Function: usb_AggSettingTxUpdate() * - * Overview: Seperate TX/RX parameters update independent for TP detection and + * Overview: Seperate TX/RX parameters update independent for TP detection and * dynamic TX/RX aggreagtion parameters update. * * Input: PADAPTER @@ -751,25 +739,25 @@ usb_AggSettingTxUpdate_8814A( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u32 value32; - if(Adapter->registrypriv.wifi_spec) + if (Adapter->registrypriv.wifi_spec) pHalData->UsbTxAggDescNum = 1; - if(pHalData->UsbTxAggMode){ + if (pHalData->UsbTxAggMode){ value32 = rtw_read32(Adapter, REG_TDECTRL); value32 = value32 & ~(BLK_DESC_NUM_MASK << BLK_DESC_NUM_SHIFT); value32 |= ((pHalData->UsbTxAggDescNum & BLK_DESC_NUM_MASK) << BLK_DESC_NUM_SHIFT); - + rtw_write32(Adapter, REG_TDECTRL, value32); rtw_write8(Adapter, REG_TDECTRL+3, pHalData->UsbTxAggDescNum<<1); } - + #endif //CONFIG_USB_TX_AGGREGATION } // usb_AggSettingTxUpdate /*----------------------------------------------------------------------------- * Function: usb_AggSettingRxUpdate() * - * Overview: Seperate TX/RX parameters update independent for TP detection and + * Overview: Seperate TX/RX parameters update independent for TP detection and * dynamic TX/RX aggreagtion parameters update. * * Input: PADAPTER @@ -793,7 +781,7 @@ usb_AggSettingRxUpdate_8814A( valueDMA = rtw_read8(Adapter, REG_TRXDMA_CTRL_8814A); valueUSB = rtw_read8(Adapter, REG_RXDMA_AGG_PG_TH_8814A+3); - switch(pHalData->rxagg_mode) + switch (pHalData->rxagg_mode) { case RX_AGG_DMA: valueDMA |= RXDMA_AGG_EN; @@ -853,7 +841,7 @@ init_UsbAggregationSetting_8814A( * * Revised History: * When Who Remark - * 12/10/2010 MHC Create Version 0. + * 12/10/2010 MHC Create Version 0. * *---------------------------------------------------------------------------*/ VOID @@ -866,37 +854,33 @@ USB_AggModeSwitch( PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); //pHalData->UsbRxHighSpeedMode = _FALSE; - // How to measure the RX speed? We assume that when traffic is more than + // How to measure the RX speed? We assume that when traffic is more than if (pMgntInfo->bRegAggDMEnable == _FALSE) { return; // Inf not support. } - - if (pMgntInfo->LinkDetectInfo.bHigherBusyRxTraffic == _TRUE && + + if (pMgntInfo->LinkDetectInfo.bHigherBusyRxTraffic == _TRUE && pHalData->UsbRxHighSpeedMode == _FALSE) { pHalData->UsbRxHighSpeedMode = _TRUE; RT_TRACE(COMP_INIT, DBG_LOUD, ("UsbAggModeSwitchCheck to HIGH\n")); } - else if (pMgntInfo->LinkDetectInfo.bHigherBusyRxTraffic == _FALSE && + else if (pMgntInfo->LinkDetectInfo.bHigherBusyRxTraffic == _FALSE && pHalData->UsbRxHighSpeedMode == _TRUE) { pHalData->UsbRxHighSpeedMode = _FALSE; RT_TRACE(COMP_INIT, DBG_LOUD, ("UsbAggModeSwitchCheck to LOW\n")); + } else { + return; } - else - { - return; - } - + #if USB_RX_AGGREGATION_92C - if (pHalData->UsbRxHighSpeedMode == _TRUE) - { + if (pHalData->UsbRxHighSpeedMode == _TRUE) { // 2010/12/10 MH The parameter is tested by SD1 engineer and SD3 channel emulator. // USB mode #if (RT_PLATFORM == PLATFORM_LINUX) - if (pMgntInfo->LinkDetectInfo.bTxBusyTraffic) - { + if (pMgntInfo->LinkDetectInfo.bTxBusyTraffic) { pHalData->RxAggBlockCount = 16; pHalData->RxAggBlockTimeout = 7; } @@ -908,23 +892,20 @@ USB_AggModeSwitch( } // Mix mode pHalData->RxAggPageCount = 72; - pHalData->RxAggPageTimeout = 6; - } - else - { + pHalData->RxAggPageTimeout = 6; + } else { // USB mode pHalData->RxAggBlockCount = pMgntInfo->RegRxAggBlockCount; - pHalData->RxAggBlockTimeout = pMgntInfo->RegRxAggBlockTimeout; + pHalData->RxAggBlockTimeout = pMgntInfo->RegRxAggBlockTimeout; // Mix mode pHalData->RxAggPageCount = pMgntInfo->RegRxAggPageCount; - pHalData->RxAggPageTimeout = pMgntInfo->RegRxAggPageTimeout; + pHalData->RxAggPageTimeout = pMgntInfo->RegRxAggPageTimeout; } if (pHalData->RxAggBlockCount > MAX_RX_AGG_BLKCNT) pHalData->RxAggBlockCount = MAX_RX_AGG_BLKCNT; #if (OS_WIN_FROM_VISTA(OS_VERSION)) || (RT_PLATFORM == PLATFORM_LINUX) // do not support WINXP to prevent usbehci.sys BSOD - if (IS_WIRELESS_MODE_N_24G(Adapter) || IS_WIRELESS_MODE_N_5G(Adapter)) - { + if (IS_WIRELESS_MODE_N_24G(Adapter) || IS_WIRELESS_MODE_N_5G(Adapter)) { // // 2010/12/24 MH According to V1012 QC IOT test, XP BSOD happen when running chariot test // with the aggregation dynamic change!! We need to disable the function to prevent it is broken @@ -933,12 +914,12 @@ USB_AggModeSwitch( usb_AggSettingRxUpdate_8188E(Adapter); // 2010/12/27 MH According to designer's suggstion, we can only modify Timeout value. Otheriwse - // there might many HW incorrect behavior, the XP BSOD at usbehci.sys may be relative to the + // there might many HW incorrect behavior, the XP BSOD at usbehci.sys may be relative to the // issue. Base on the newest test, we can not enable block cnt > 30, otherwise XP usbehci.sys may // BSOD. } #endif - + #endif #endif } // USB_AggModeSwitch @@ -957,7 +938,7 @@ _InitOperationMode_8814A( // // Set RRSR, RATR, and REG_BWOPMODE registers // - switch(Adapter->RegWirelessMode) + switch (Adapter->RegWirelessMode) { case WIRELESS_MODE_B: regBwOpMode = BW_OPMODE_20MHZ; @@ -975,14 +956,11 @@ _InitOperationMode_8814A( regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; break; case WIRELESS_MODE_AUTO: - if (Adapter->bInHctTest) - { + if (Adapter->bInHctTest) { regBwOpMode = BW_OPMODE_20MHZ; regRATR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; - } - else - { + } else { regBwOpMode = BW_OPMODE_20MHZ; regRATR = RATE_ALL_CCK | RATE_ALL_OFDM_AG | RATE_ALL_OFDM_1SS | RATE_ALL_OFDM_2SS; regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; @@ -1000,7 +978,7 @@ _InitOperationMode_8814A( regRATR = RATE_ALL_OFDM_AG | RATE_ALL_OFDM_1SS | RATE_ALL_OFDM_2SS; regRRSR = RATE_ALL_OFDM_AG; break; - + default: //for MacOSX compiler warning. break; } @@ -1039,20 +1017,19 @@ static VOID _RfPowerSave( return; #endif - if(pMgntInfo->RegRfOff == _TRUE){ // User disable RF via registry. + if (pMgntInfo->RegRfOff == _TRUE) { // User disable RF via registry. RT_TRACE((COMP_INIT|COMP_RF), DBG_LOUD, ("InitializeAdapter8192CUsb(): Turn off RF for RegRfOff.\n")); MgntActSet_RF_State(Adapter, eRfOff, RF_CHANGE_BY_SW); // Those action will be discard in MgntActSet_RF_State because off the same state for(eRFPath = 0; eRFPath NumTotalRFPath; eRFPath++) PHY_SetRFReg(Adapter, eRFPath, 0x4, 0xC00, 0x0); } - else if(pMgntInfo->RfOffReason > RF_CHANGE_BY_PS){ // H/W or S/W RF OFF before sleep. + else if (pMgntInfo->RfOffReason > RF_CHANGE_BY_PS) { // H/W or S/W RF OFF before sleep. RT_TRACE((COMP_INIT|COMP_RF), DBG_LOUD, ("InitializeAdapter8192CUsb(): Turn off RF for RfOffReason(%ld).\n", pMgntInfo->RfOffReason)); MgntActSet_RF_State(Adapter, eRfOff, pMgntInfo->RfOffReason); - } - else{ + } else { pHalData->eRFPowerState = eRfOn; - pMgntInfo->RfOffReason = 0; + pMgntInfo->RfOffReason = 0; if(Adapter->bInSetPower || Adapter->bResetInProgress) PlatformUsbEnableInPipes(Adapter); RT_TRACE((COMP_INIT|COMP_RF), DBG_LOUD, ("InitializeAdapter8192CUsb(): RF is on.\n")); @@ -1062,7 +1039,7 @@ static VOID _RfPowerSave( */ enum { Antenna_Lfet = 1, - Antenna_Right = 2, + Antenna_Right = 2, }; static VOID @@ -1071,21 +1048,21 @@ _InitAntenna_Selection_8814A(IN PADAPTER Adapter) HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - if(pHalData->AntDivCfg==0) + if (pHalData->AntDivCfg==0) return; -/* - RTW_INFO("==> %s ....\n",__FUNCTION__); +/* + RTW_INFO("==> %s ....\n",__FUNCTION__); rtw_write8(Adapter, REG_LEDCFG2, 0x82); PHY_SetBBReg(Adapter, rFPGA0_XAB_RFParameter, BIT13, 0x01); - + if(PHY_QueryBBReg(Adapter, rFPGA0_XA_RFInterfaceOE, 0x300) == MAIN_ANT) pHalData->CurAntenna = MAIN_ANT; else pHalData->CurAntenna = AUX_ANT; RTW_INFO("%s,Cur_ant:(%x)%s\n",__FUNCTION__,pHalData->CurAntenna,(pHalData->CurAntenna == MAIN_ANT)?"MAIN_ANT":"AUX_ANT"); - + */ } @@ -1104,28 +1081,24 @@ HalDetectSelectiveSuspendMode( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(Adapter); - // If support HW radio detect, we need to enable WOL ability, otherwise, we + // If support HW radio detect, we need to enable WOL ability, otherwise, we // can not use FW to notify host the power state switch. - + EFUSE_ShadowRead(Adapter, 1, EEPROM_USB_OPTIONAL1, (u32 *)&tmpvalue); DBG_8192C("HalDetectSelectiveSuspendMode(): SS "); - if(tmpvalue & BIT1) - { + if (tmpvalue & BIT1) { DBG_8192C("Enable\n"); - } - else - { + } else { DBG_8192C("Disable\n"); pdvobjpriv->RegUsbSS = _FALSE; } // 2010/09/01 MH According to Dongle Selective Suspend INF. We can switch SS mode. - if (pdvobjpriv->RegUsbSS && !SUPPORT_HW_RADIO_DETECT(pHalData)) - { + if (pdvobjpriv->RegUsbSS && !SUPPORT_HW_RADIO_DETECT(pHalData)) { //PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); - //if (!pMgntInfo->bRegDongleSS) + //if (!pMgntInfo->bRegDongleSS) //{ // RT_TRACE(COMP_INIT, DBG_LOUD, ("Dongle disable SS\n")); pdvobjpriv->RegUsbSS = _FALSE; @@ -1156,12 +1129,11 @@ static void rtl8814au_hw_reset(_adapter *Adapter) { #if 0 u8 reg_val=0; - if(rtw_read8(Adapter, REG_MCUFWDL)&BIT7) - { - _8051Reset8812(Adapter); + if (rtw_read8(Adapter, REG_MCUFWDL)&BIT7) { + _8051Reset8812(Adapter); rtw_write8(Adapter, REG_MCUFWDL, 0x00); //before BB reset should do clock gated - rtw_write32(Adapter, rFPGA0_XCD_RFPara, + rtw_write32(Adapter, rFPGA0_XCD_RFPara, rtw_read32(Adapter, rFPGA0_XCD_RFPara)|(BIT6)); //reset BB reg_val = rtw_read8(Adapter, REG_SYS_FUNC_EN); @@ -1172,16 +1144,16 @@ static void rtl8814au_hw_reset(_adapter *Adapter) //reset TRX path rtw_write16(Adapter, REG_CR, 0); //reset MAC - reg_val = rtw_read8(Adapter, REG_APS_FSMCO+1); + reg_val = rtw_read8(Adapter, REG_APS_FSMCO+1); reg_val |= BIT(1); reg_val = rtw_write8(Adapter, REG_APS_FSMCO+1, reg_val); //reg0x5[1] ,auto FSM off reg_val = rtw_read8(Adapter, REG_APS_FSMCO+1); - + //check if reg0x5[1] auto cleared - while(reg_val & BIT(1)){ + while (reg_val & BIT(1)) { rtw_udelay_os(1); - reg_val = rtw_read8(Adapter, REG_APS_FSMCO+1); + reg_val = rtw_read8(Adapter, REG_APS_FSMCO+1); } reg_val |= BIT(0); reg_val = rtw_write8(Adapter, REG_APS_FSMCO+1, reg_val); //reg0x5[0] ,auto FSM on @@ -1272,7 +1244,7 @@ u32 rtl8814au_hal_init(PADAPTER Adapter) int hal_init_profiling_i; u32 hal_init_stages_timestamp[HAL_INIT_STAGES_NUM]; //used to record the time of each stage's starting point - for(hal_init_profiling_i=0;hal_init_profiling_ibkeepfwalive) - { + if (pwrctrlpriv->bkeepfwalive) { _ps_open_RF(Adapter); - if(pHalData->bIQKInitialized){ + if (pHalData->bIQKInitialized) { //PHY_IQCalibrate_8812A(Adapter,_TRUE); - } - else - { + } else { //PHY_IQCalibrate_8812A(Adapter,_FALSE); //pHalData->bIQKInitialized = _TRUE; } @@ -1301,16 +1270,13 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BEGIN); } // Check if MAC has already power on. by tynli. 2011.05.27. - value8 = rtw_read8(Adapter, REG_SYS_CLKR+1); + value8 = rtw_read8(Adapter, REG_SYS_CLKR+1); u1bRegCR = rtw_read8(Adapter, REG_CR); RTW_INFO(" power-on :REG_SYS_CLKR 0x09=0x%02x. REG_CR 0x100=0x%02x.\n", value8, u1bRegCR); - if((value8&BIT3) && (u1bRegCR != 0 && u1bRegCR != 0xEA)) - { + if ((value8&BIT3) && (u1bRegCR != 0 && u1bRegCR != 0xEA)) { //pHalData->bMACFuncEnable = _TRUE; RTW_INFO(" MAC has already power on.\n"); - } - else - { + } else { //pHalData->bMACFuncEnable = _FALSE; // Set FwPSState to ALL_ON mode to prevent from the I/O be return because of 32k // state which is set before sleep under wowlan mode. 2012.01.04. by tynli. @@ -1332,7 +1298,7 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BEGIN); }*/ /* - If HW didn't go through a complete de-initial procedure, + If HW didn't go through a complete de-initial procedure, it probably occurs some problem for double initial procedure. Like "CONFIG_DEINIT_BEFORE_INIT" in 92du chip */ @@ -1340,15 +1306,15 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BEGIN); HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_PW_ON); status = _InitPowerOn_8814AU(Adapter); - if(status == _FAIL){ + if (status == _FAIL) { RTW_INFO("Failed to init power on!\n"); goto exit; } HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_LLTT); - + status = InitLLTTable8814A(Adapter); - if(status == _FAIL){ + if (status == _FAIL) { RTW_INFO("Failed to init LLT table\n"); goto exit; } @@ -1375,8 +1341,8 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_DOWNLOAD_FW); } InitializeFirmwareVars8814(Adapter); - - if(pwrctrlpriv->reg_rfoff == _TRUE){ + + if (pwrctrlpriv->reg_rfoff == _TRUE) { pwrctrlpriv->rf_pwrstate = rf_off; } @@ -1393,16 +1359,15 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_DOWNLOAD_FW); HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MAC); #if (HAL_MAC_ENABLE == 1) status = PHY_MACConfig8814(Adapter); - if(status == _FAIL) - { + if (status == _FAIL) { goto exit; } #endif //HAL_MAC_ENABLE - + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC01); - + _InitQueuePriority_8814AUsb(Adapter); - _InitPageBoundary_8814AUsb(Adapter); + _InitPageBoundary_8814AUsb(Adapter); _InitTransferPageSize_8814AUsb(Adapter); @@ -1411,8 +1376,8 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC02); _InitDriverInfoSize_8814A(Adapter, DRVINFO_SZ); _InitInterrupt_8814AU(Adapter); - _InitID_8814A(Adapter);//set mac_address - _InitNetworkType_8814A(Adapter);//set msr + _InitID_8814A(Adapter); //set mac_address + _InitNetworkType_8814A(Adapter); //set msr _InitMacConfigure_8814A(Adapter); //_InitWMACSetting_8814A(Adapter); //_InitAdaptiveCtrl_8814AUsb(Adapter); @@ -1428,7 +1393,7 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC02); // // Init CR MACTXEN, MACRXEN after setting RxFF boundary REG_TRXFF_BNDY to patch - // Hw bug which Hw initials RxFF boundry size to a value which is larger than the real Rx buffer size in 88E. + // Hw bug which Hw initials RxFF boundry size to a value which is larger than the real Rx buffer size in 88E. // 2011.08.05. by tynli. // value8 = rtw_read8(Adapter, REG_CR); @@ -1449,7 +1414,7 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC02); rtw_write16(Adapter, REG_PKT_BE_BK_LIFE_TIME, 0x3000); // unit: 256us. 3s #endif // CONFIG_TX_MCAST2UNI #endif // CONFIG_CONCURRENT_MODE || CONFIG_TX_MCAST2UNI - + #ifdef CONFIG_LED _InitHWLed(Adapter); #endif //CONFIG_LED @@ -1461,8 +1426,7 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC02); HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BB); #if (HAL_BB_ENABLE == 1) status = PHY_BBConfig8814(Adapter); - if(status == _FAIL) - { + if (status == _FAIL) { goto exit; } #endif //HAL_BB_ENABLE @@ -1472,9 +1436,8 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BB); HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_RF); #if (HAL_RF_ENABLE == 1) - status = PHY_RFConfig8814A(Adapter); - if(status == _FAIL) - { + status = PHY_RFConfig8814A(Adapter); + if (status == _FAIL) { goto exit; } @@ -1485,12 +1448,12 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_RF); PHY_ConfigBB_8814A(Adapter); - if(Adapter->registrypriv.channel <= 14) + if (Adapter->registrypriv.channel <= 14) PHY_SwitchWirelessBand8814A(Adapter, BAND_ON_2_4G); else PHY_SwitchWirelessBand8814A(Adapter, BAND_ON_5G); - rtw_hal_set_chnl_bw(Adapter, Adapter->registrypriv.channel, + rtw_hal_set_chnl_bw(Adapter, Adapter->registrypriv.channel, CHANNEL_WIDTH_20, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HAL_PRIME_CHNL_OFFSET_DONT_CARE); HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_TURN_ON_BLOCK); @@ -1503,9 +1466,9 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC11); // HW SEQ CTRL //set 0x0 to 0xFF by tynli. Default enable HW SEQ NUM. - rtw_write8(Adapter,REG_HWSEQ_CTRL, 0xFF); - - // + rtw_write8(Adapter,REG_HWSEQ_CTRL, 0xFF); + + // // Disable BAR, suggested by Scott // 2010.04.09 add by hpfan // @@ -1513,7 +1476,7 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC11); rtw_write8(Adapter,REG_SECONDARY_CCA_CTRL_8814A,0x03); - if(pregistrypriv->wifi_spec) + if (pregistrypriv->wifi_spec) rtw_write16(Adapter,REG_FAST_EDCA_CTRL ,0); //adjust EDCCA to avoid collision /*if(pregistrypriv->wifi_spec) @@ -1525,21 +1488,21 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC11); HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_HAL_DM); rtl8814_InitHalDm(Adapter); - + // // 2010/08/11 MH Merge from 8192SE for Minicard init. We need to confirm current radio status - // and then decide to enable RF or not.!!!??? For Selective suspend mode. We may not + // and then decide to enable RF or not.!!!??? For Selective suspend mode. We may not // call init_adapter. May cause some problem?? // - // Fix the bug that Hw/Sw radio off before S3/S4, the RF off action will not be executed - // in MgntActSet_RF_State() after wake up, because the value of pHalData->eRFPowerState + // Fix the bug that Hw/Sw radio off before S3/S4, the RF off action will not be executed + // in MgntActSet_RF_State() after wake up, because the value of pHalData->eRFPowerState // is the same as eRfOff, we should change it to eRfOn after we config RF parameters. // Added by tynli. 2010.03.30. pwrctrlpriv->rf_pwrstate = rf_on; PHY_IQCalibrate_8814A_Init(&pHalData->odmpriv); -#if (HAL_BB_ENABLE == 1) +#if (HAL_BB_ENABLE == 1) PHY_SetRFEReg8814A(Adapter, _TRUE, pHalData->CurrentBandType); #endif //HAL_BB_ENABLE @@ -1561,13 +1524,12 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_HAL_DM); // Reset USB mode switch setting rtw_write8(Adapter, REG_SDIO_CTRL_8814A, 0x0); rtw_write8(Adapter, REG_ACLK_MON, 0x0); - + //RT_TRACE(COMP_INIT, DBG_TRACE, ("InitializeAdapter8188EUsb() <====\n")); - + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_IQK); // 2010/08/26 MH Merge from 8192CE. - if(pwrctrlpriv->rf_pwrstate == rf_on) - { + if (pwrctrlpriv->rf_pwrstate == rf_on) { /* if(IS_HARDWARE_TYPE_8812AU(Adapter)) { #if (RTL8812A_SUPPORT == 1) @@ -1584,9 +1546,9 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_IQK); //this should be done by rf team using phydm code //PHY_IQCalibrate_8814A(&pHalData->odmpriv, _FALSE); HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_PW_TRACK); - + //ODM_TXPowerTrackingCheck(&pHalData->odmpriv ); - + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_LCK); //PHY_LCCalibrate_8812A(Adapter); } @@ -1596,8 +1558,7 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC21); //HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_PABIAS); // _InitPABias(Adapter); #if (MP_DRIVER == 1) - if (Adapter->registrypriv.mp_mode == 1) - { + if (Adapter->registrypriv.mp_mode == 1) { Adapter->mppriv.channel = pHalData->CurrentChannel; MPT_InitializeAdapter(Adapter, Adapter->mppriv.channel); } @@ -1610,13 +1571,10 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BT_COEXIST); // suspend mode automatically. //HwSuspendModeEnable92Cu(Adapter, _FALSE); - if ( _TRUE == pHalData->EEPROMBluetoothCoexist) - { - // Init BT hw config. - rtw_btcoex_HAL_Initialize(Adapter, _FALSE); - } - else - { + if ( _TRUE == pHalData->EEPROMBluetoothCoexist) { + // Init BT hw config. + rtw_btcoex_HAL_Initialize(Adapter, _FALSE); + } else { // In combo card run wifi only , must setting some hardware reg. rtl8812a_combo_card_WifiOnlyHwInit(Adapter); } @@ -1633,18 +1591,18 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC31); //misc { - int i; + int i; u8 mac_addr[6]; - for(i=0; i<6; i++) - { + for (i=0; i<6; i++) + { #ifdef CONFIG_CONCURRENT_MODE - if(Adapter->iface_type == IFACE_PORT1) + if (Adapter->iface_type == IFACE_PORT1) mac_addr[i] = rtw_read8(Adapter, REG_MACID1+i); else #endif - mac_addr[i] = rtw_read8(Adapter, REG_MACID+i); + mac_addr[i] = rtw_read8(Adapter, REG_MACID+i); } - + RTW_INFO("MAC Address from REG_MACID = "MAC_FMT"\n", MAC_ARG(mac_addr)); } @@ -1656,14 +1614,14 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_END); #ifdef DBG_HAL_INIT_PROFILING hal_init_stages_timestamp[HAL_INIT_STAGES_END]=rtw_get_current_time(); - for(hal_init_profiling_i=0;hal_init_profiling_ibFWReady = _FALSE; - + } static void rtl8814au_hw_power_down(_adapter *padapter) { // 2010/-8/09 MH For power down module, we need to enable register block contrl reg at 0x1c. // Then enable power down control bit of register 0x04 BIT4 and BIT15 as 1. - + // Enable register area 0x0-0xc. - rtw_write8(padapter,REG_RSV_CTRL, 0x0); + rtw_write8(padapter,REG_RSV_CTRL, 0x0); rtw_write16(padapter, REG_APS_FSMCO, 0x8812); } @@ -1705,8 +1663,7 @@ u32 rtl8814au_hal_deinit(PADAPTER Adapter) RTW_INFO("==> %s \n",__FUNCTION__); #ifdef CONFIG_BT_COEXIST - if (hal_btcoex_IsBtExist(Adapter)) - { + if (hal_btcoex_IsBtExist(Adapter)) { RTW_INFO("BT module enable SIC\n"); // Only under WIN7 we can support selective suspend and enter D3 state when system call halt adapter. @@ -1720,8 +1677,7 @@ u32 rtl8814au_hal_deinit(PADAPTER Adapter) rtw_write16(Adapter, REG_GPIO_MUXCFG, rtw_read16(Adapter, REG_GPIO_MUXCFG)&(~BIT12)); } - if(pHalData->bSupportUSB3 == _TRUE) - { + if (pHalData->bSupportUSB3 == _TRUE) { // set Reg 0xf008[3:4] to 2'11 to eable U1/U2 Mode in USB3.0. added by page, 20120712 rtw_write8(Adapter, 0xf008, rtw_read8(Adapter, 0xf008)|0x18); } @@ -1733,33 +1689,32 @@ u32 rtl8814au_hal_deinit(PADAPTER Adapter) #ifdef SUPPORT_HW_RFOFF_DETECTED RTW_INFO("bkeepfwalive(%x)\n", pwrctl->bkeepfwalive); - if(pwrctl->bkeepfwalive) - { - _ps_close_RF(Adapter); - if((pwrctl->bHWPwrPindetect) && (pwrctl->bHWPowerdown)) + if (pwrctl->bkeepfwalive) { + _ps_close_RF(Adapter); + if ((pwrctl->bHWPwrPindetect) && (pwrctl->bHWPowerdown)) rtl8814au_hw_power_down(Adapter); } else #endif - { + { if (rtw_is_hw_init_completed(Adapter)) { hal_carddisable_8814(Adapter); - if((pwrctl->bHWPwrPindetect ) && (pwrctl->bHWPowerdown)) + if ((pwrctl->bHWPwrPindetect ) && (pwrctl->bHWPowerdown)) rtl8814au_hw_power_down(Adapter); } - } + } return _SUCCESS; } unsigned int rtl8814au_inirp_init(PADAPTER Adapter) -{ - u8 i; +{ + u8 i; struct recv_buf *precvbuf; uint status; struct dvobj_priv *pdev= adapter_to_dvobj(Adapter); struct intf_hdl * pintfhdl=&Adapter->iopriv.intf; - struct recv_priv *precvpriv = &(Adapter->recvpriv); + struct recv_priv *precvpriv = &(Adapter->recvpriv); u32 (*_read_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); #ifdef CONFIG_USB_INTERRUPT_IN_PIPE HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); @@ -1770,22 +1725,20 @@ unsigned int rtl8814au_inirp_init(PADAPTER Adapter) status = _SUCCESS; - RT_TRACE(_module_hci_hal_init_c_,_drv_info_,("===> usb_inirp_init \n")); - + RT_TRACE(_module_hci_hal_init_c_,_drv_info_,("===> usb_inirp_init \n")); + precvpriv->ff_hwaddr = RECV_BULK_IN_ADDR; - //issue Rx irp to receive data - precvbuf = (struct recv_buf *)precvpriv->precv_buf; - for(i=0; iff_hwaddr, 0, (unsigned char *)precvbuf) == _FALSE ) - { + //issue Rx irp to receive data + precvbuf = (struct recv_buf *)precvpriv->precv_buf; + for (i=0; iff_hwaddr, 0, (unsigned char *)precvbuf) == _FALSE ) { RT_TRACE(_module_hci_hal_init_c_,_drv_err_,("usb_rx_init: usb_read_port error \n")); status = _FAIL; goto exit; } - - precvbuf++; + + precvbuf++; precvpriv->free_recv_buf_queue_cnt--; } @@ -1794,17 +1747,16 @@ unsigned int rtl8814au_inirp_init(PADAPTER Adapter) status = _FAIL; RTW_INFO("%s =>Warning !! Have not USB Int-IN pipe, RtIntInPipe(%d)!!!\n", __func__, pdev->RtInPipe[REALTEK_USB_IN_INT_EP_IDX]); goto exit; - } + } _read_interrupt = pintfhdl->io_ops._read_interrupt; - if(_read_interrupt(pintfhdl, RECV_INT_IN_ADDR) == _FALSE ) - { + if (_read_interrupt(pintfhdl, RECV_INT_IN_ADDR) == _FALSE ) { RT_TRACE(_module_hci_hal_init_c_,_drv_err_,("usb_rx_init: usb_read_interrupt error \n")); status = _FAIL; } #endif exit: - + RT_TRACE(_module_hci_hal_init_c_,_drv_info_,("<=== usb_inirp_init \n")); return status; @@ -1812,9 +1764,9 @@ unsigned int rtl8814au_inirp_init(PADAPTER Adapter) } unsigned int rtl8814au_inirp_deinit(PADAPTER Adapter) -{ +{ RT_TRACE(_module_hci_hal_init_c_,_drv_info_,("\n ===> usb_rx_deinit \n")); - + rtw_read_port_cancel(Adapter); RT_TRACE(_module_hci_hal_init_c_,_drv_info_,("\n <=== usb_rx_deinit \n")); @@ -1836,25 +1788,22 @@ hal_ReadIDs_8814AU( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - if( !AutoloadFail ) - { + if ( !AutoloadFail ) { pHalData->EEPROMVID = EF2Byte( *(pu2Byte)&PROMContent[EEPROM_VID_8814AU] ); - pHalData->EEPROMPID = EF2Byte( *(pu2Byte)&PROMContent[EEPROM_PID_8814AU] ); - - // Customer ID, 0x00 and 0xff are reserved for Realtek. + pHalData->EEPROMPID = EF2Byte( *(pu2Byte)&PROMContent[EEPROM_PID_8814AU] ); + + // Customer ID, 0x00 and 0xff are reserved for Realtek. pHalData->EEPROMCustomerID = *(pu1Byte)&PROMContent[EEPROM_CustomID_8814]; pHalData->EEPROMSubCustomerID = EEPROM_Default_SubCustomerID; - } - else - { + } else { pHalData->EEPROMVID = EEPROM_Default_VID; pHalData->EEPROMPID = EEPROM_Default_PID; - // Customer ID, 0x00 and 0xff are reserved for Realtek. + // Customer ID, 0x00 and 0xff are reserved for Realtek. pHalData->EEPROMCustomerID = EEPROM_Default_CustomerID; pHalData->EEPROMSubCustomerID = EEPROM_Default_SubCustomerID; } - + RTW_INFO("VID = 0x%04X, PID = 0x%04X\n", pHalData->EEPROMVID, pHalData->EEPROMPID); RTW_INFO("Customer ID: 0x%02X, SubCustomer ID: 0x%02X\n", pHalData->EEPROMCustomerID, pHalData->EEPROMSubCustomerID); } @@ -1869,18 +1818,15 @@ hal_InitPGData_8814A( u32 i; u16 value16; - if(_FALSE == pHalData->bautoload_fail_flag) - { // autoload OK. + if (_FALSE == pHalData->bautoload_fail_flag) { // autoload OK. // hal_ReadeFuse_8814A is FW offload read efuse, todo //#if ((DEV_BUS_TYPE==RT_USB_INTERFACE || DEV_BUS_TYPE==RT_SDIO_INTERFACE)) && (MP_DRIVER != 1) //if(hal_ReadeFuse_8814A(pAdapter) == _FAIL) //#endif - + // Read EFUSE real map to shadow. EFUSE_ShadowMapUpdate(padapter, EFUSE_WIFI, _FALSE); - } - else - {//autoload fail + } else { //autoload fail RTW_INFO("AutoLoad Fail reported from CR9346!!\n"); //update to default value 0xFF EFUSE_ShadowMapUpdate(padapter, EFUSE_WIFI, _FALSE); @@ -1899,11 +1845,11 @@ hal_CustomizedBehavior_8814AU( IN PADAPTER Adapter ) { - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); struct led_priv *pledpriv = &(Adapter->ledpriv); - + // Led mode - switch(pHalData->CustomerID) + switch (pHalData->CustomerID) { case RT_CID_DEFAULT: pledpriv->LedStrategy = SW_LED_MODE9; @@ -1922,48 +1868,48 @@ hal_CustomizeByCustomerID_8814AU( ) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); - + RTW_INFO("PID= 0x%x, VID= %x\n",pHalData->EEPROMPID,pHalData->EEPROMVID); - + // Decide CustomerID according to VID/DID or EEPROM - switch(pHalData->EEPROMCustomerID) + switch (pHalData->EEPROMCustomerID) { case EEPROM_CID_DEFAULT: - if((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x3308)) + if ((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x3308)) pHalData->CustomerID = RT_CID_DLINK; - else if((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x3309)) + else if ((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x3309)) pHalData->CustomerID = RT_CID_DLINK; - else if((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x330a)) + else if ((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x330a)) pHalData->CustomerID = RT_CID_DLINK; - else if((pHalData->EEPROMVID == 0x0BFF) && (pHalData->EEPROMPID == 0x8160)) + else if ((pHalData->EEPROMVID == 0x0BFF) && (pHalData->EEPROMPID == 0x8160)) { pHalData->CustomerID = RT_CID_CHINA_MOBILE; - } - else if((pHalData->EEPROMVID == 0x0BDA) && (pHalData->EEPROMPID == 0x5088)) + } + else if ((pHalData->EEPROMVID == 0x0BDA) && (pHalData->EEPROMPID == 0x5088)) pHalData->CustomerID = RT_CID_CC_C; - + break; case EEPROM_CID_WHQL: //padapter->bInHctTest = _TRUE; - + //pMgntInfo->bSupportTurboMode = _FALSE; //pMgntInfo->bAutoTurboBy8186 = _FALSE; - + //pMgntInfo->PowerSaveControl.bInactivePs = _FALSE; //pMgntInfo->PowerSaveControl.bIPSModeBackup = _FALSE; //pMgntInfo->PowerSaveControl.bLeisurePs = _FALSE; //pMgntInfo->PowerSaveControl.bLeisurePsModeBackup = _FALSE; //pMgntInfo->keepAliveLevel = 0; - + //padapter->bUnloadDriverwhenS3S4 = _FALSE; - break; + break; default: pHalData->CustomerID = RT_CID_DEFAULT; break; - + } RTW_INFO("Customer ID: 0x%2x\n", pHalData->CustomerID); - + hal_CustomizedBehavior_8814AU(pAdapter); } @@ -1975,7 +1921,7 @@ hal_ReadUsbModeSwitch_8814AU( ) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - + if (AutoloadFail) pHalData->EEPROMUsbSwitch = _FALSE; else @@ -1985,7 +1931,7 @@ hal_ReadUsbModeSwitch_8814AU( static VOID ReadLEDSetting_8814AU( - IN PADAPTER Adapter, + IN PADAPTER Adapter, IN u8* PROMContent, IN BOOLEAN AutoloadFail ) @@ -2015,19 +1961,19 @@ InitAdapterVariablesByPROM_8814AU( hal_ReadTxPowerInfo8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadBoardType8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_Read_TRX_antenna_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); - + // // Read Bluetooth co-exist and initialize // hal_EfuseParseBTCoexistInfo8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); - + hal_ReadChannelPlan8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_EfuseParseXtal_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadThermalMeter_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadRemoteWakeup_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadAntennaDiversity8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadRFEType_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); - + ReadLEDSetting_8814AU(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadUsbModeSwitch_8814AU(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); @@ -2041,7 +1987,7 @@ InitAdapterVariablesByPROM_8814AU( static void hal_ReadPROMContent_8814A( IN PADAPTER Adapter ) -{ +{ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); u8 eeValue; @@ -2064,7 +2010,7 @@ ReadAdapterInfo8814AU( ) { Hal_InitEfuseVars_8814A(Adapter); - + // Read all content in Efuse/EEPROM. hal_ReadPROMContent_8814A(Adapter); @@ -2079,21 +2025,21 @@ void UpdateInterruptMask8814AU(PADAPTER padapter,u8 bHIMR0 ,u32 AddMSR, u32 Remo u32 *himr; pHalData = GET_HAL_DATA(padapter); - if(bHIMR0) + if (bHIMR0) himr = &(pHalData->IntrMask[0]); else himr = &(pHalData->IntrMask[1]); - + if (AddMSR) *himr |= AddMSR; if (RemoveMSR) *himr &= (~RemoveMSR); - if(bHIMR0) + if (bHIMR0) rtw_write32(padapter, REG_HIMR0_8814A, *himr); else - rtw_write32(padapter, REG_HIMR1_8814A, *himr); + rtw_write32(padapter, REG_HIMR1_8814A, *himr); } @@ -2103,7 +2049,7 @@ void SetHwReg8814AU(PADAPTER Adapter, u8 variable, u8* val) struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(Adapter); struct registry_priv *registry_par = &Adapter->registrypriv; - switch(variable) + switch (variable) { case HW_VAR_RXDMA_AGG_PG_TH: #ifdef CONFIG_USB_RX_AGGREGATION @@ -2185,9 +2131,9 @@ void SetHwReg8814AU(PADAPTER Adapter, u8 variable, u8* val) void GetHwReg8814AU(PADAPTER Adapter, u8 variable, u8* val) { - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - switch(variable) + switch (variable) { default: GetHwReg8814A(Adapter,variable,val); @@ -2210,7 +2156,7 @@ SetHalDefVar8814AUsb( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u8 bResult = _SUCCESS; - switch(eVariable) + switch (eVariable) { default: SetHalDefVar8814A(Adapter,eVariable,pValue); @@ -2221,7 +2167,7 @@ SetHalDefVar8814AUsb( } // -// Description: +// Description: // Query setting of specified variable. // u8 @@ -2234,7 +2180,7 @@ GetHalDefVar8814AUsb( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u8 bResult = _SUCCESS; - switch(eVariable) + switch (eVariable) { default: GetHalDefVar8814A(Adapter,eVariable,pValue); @@ -2302,9 +2248,9 @@ static void rtl8814au_init_default_value(_adapter * padapter) } static u8 rtl8814au_ps_func(PADAPTER Adapter,HAL_INTF_PS_FUNC efunc_id, u8 *val) -{ +{ u8 bResult = _TRUE; - switch(efunc_id){ + switch (efunc_id) { #if defined(CONFIG_AUTOSUSPEND) && defined(SUPPORT_HW_RFOFF_DETECTED) case HAL_USB_SELECT_SUSPEND: @@ -2327,7 +2273,7 @@ void rtl8814au_set_hal_ops(_adapter * padapter) pHalFunc->hal_power_on = _InitPowerOn_8814AU; pHalFunc->hal_power_off = hal_carddisable_8814; - + pHalFunc->hal_init = &rtl8814au_hal_init; pHalFunc->hal_deinit = &rtl8814au_hal_deinit; @@ -2345,12 +2291,12 @@ void rtl8814au_set_hal_ops(_adapter * padapter) #else //case of hw led or no led pHalFunc->InitSwLeds = NULL; pHalFunc->DeInitSwLeds = NULL; -#endif//CONFIG_SW_LED - +#endif //CONFIG_SW_LED + pHalFunc->init_default_value = &rtl8814au_init_default_value; pHalFunc->intf_chip_configure = &rtl8814au_interface_configure; pHalFunc->read_adapter_info = &ReadAdapterInfo8814AU; - + pHalFunc->SetHwRegHandler = &SetHwReg8814AU; pHalFunc->GetHwRegHandler = &GetHwReg8814AU; pHalFunc->GetHalDefVarHandler = &GetHalDefVar8814AUsb; diff --git a/hal/rtl8814a/usb/usb_ops_linux.c b/hal/rtl8814a/usb/usb_ops_linux.c index 59281f9e4..f10cd091a 100644 --- a/hal/rtl8814a/usb/usb_ops_linux.c +++ b/hal/rtl8814a/usb/usb_ops_linux.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -24,17 +24,16 @@ #ifdef CONFIG_SUPPORT_USB_INT void interrupt_handler_8814au(_adapter *padapter,u16 pkt_len,u8 *pbuf) -{ +{ HAL_DATA_TYPE *pHalData=GET_HAL_DATA(padapter); struct reportpwrstate_parm pwr_rpt; - - if ( pkt_len != INTERRUPT_MSG_FORMAT_LEN ) - { + + if ( pkt_len != INTERRUPT_MSG_FORMAT_LEN ) { RTW_INFO("%s Invalid interrupt content length (%d)!\n", __FUNCTION__, pkt_len); return ; } - // HISR + // HISR _rtw_memcpy(&(pHalData->IntArray[0]), &(pbuf[USB_INTR_CONTENT_HISR_OFFSET]), 4); _rtw_memcpy(&(pHalData->IntArray[1]), &(pbuf[USB_INTR_CONTENT_HISRE_OFFSET]), 4); @@ -42,25 +41,24 @@ void interrupt_handler_8814au(_adapter *padapter,u16 pkt_len,u8 *pbuf) { u32 hisr=0 ,hisr_ex=0; _rtw_memcpy(&hisr,&(pHalData->IntArray[0]),4); - hisr = le32_to_cpu(hisr); - + hisr = le32_to_cpu(hisr); + _rtw_memcpy(&hisr_ex,&(pHalData->IntArray[1]),4); hisr_ex = le32_to_cpu(hisr_ex); - - if((hisr != 0) || (hisr_ex!=0)) + + if ((hisr != 0) || (hisr_ex!=0)) RTW_INFO("===> %s hisr:0x%08x ,hisr_ex:0x%08x \n",__FUNCTION__,hisr,hisr_ex); } #endif #ifdef CONFIG_LPS_LCLK - if( pHalData->IntArray[0] & IMR_CPWM_88E ) - { + if ( pHalData->IntArray[0] & IMR_CPWM_88E ) { _rtw_memcpy(&pwr_rpt.state, &(pbuf[USB_INTR_CONTENT_CPWM1_OFFSET]), 1); //_rtw_memcpy(&pwr_rpt.state2, &(pbuf[USB_INTR_CONTENT_CPWM2_OFFSET]), 1); - //88e's cpwm value only change BIT0, so driver need to add PS_STATE_S2 for LPS flow. - pwr_rpt.state |= PS_STATE_S2; + //88e's cpwm value only change BIT0, so driver need to add PS_STATE_S2 for LPS flow. + pwr_rpt.state |= PS_STATE_S2; _set_workitem(&(adapter_to_pwrctl(padapter)->cpwm_event)); } #endif//CONFIG_LPS_LCLK @@ -72,40 +70,38 @@ void interrupt_handler_8814au(_adapter *padapter,u16 pkt_len,u8 *pbuf) #endif #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR if (pHalData->IntArray[0] & (IMR_TBDER_88E|IMR_TBDOK_88E)) - #endif - { + #endif + { struct mlme_priv *pmlmepriv = &padapter->mlmepriv; #if 0 - if(pHalData->IntArray[0] & IMR_BCNDMAINT0_88E) + if (pHalData->IntArray[0] & IMR_BCNDMAINT0_88E) RTW_INFO("%s: HISR_BCNERLY_INT\n", __func__); - if(pHalData->IntArray[0] & IMR_TBDOK_88E) + if (pHalData->IntArray[0] & IMR_TBDOK_88E) RTW_INFO("%s: HISR_TXBCNOK\n", __func__); - if(pHalData->IntArray[0] & IMR_TBDER_88E) + if (pHalData->IntArray[0] & IMR_TBDER_88E) RTW_INFO("%s: HISR_TXBCNERR\n", __func__); #endif - - if(check_fwstate(pmlmepriv, WIFI_AP_STATE)) - { + + if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) { //send_beacon(padapter); - if(pmlmepriv->update_bcn == _TRUE) + if (pmlmepriv->update_bcn == _TRUE) { //tx_beacon_hdl(padapter, NULL); set_tx_beacon_cmd(padapter); } } #ifdef CONFIG_CONCURRENT_MODE - if(check_buddy_fwstate(padapter, WIFI_AP_STATE)) - { + if (check_buddy_fwstate(padapter, WIFI_AP_STATE)) { //send_beacon(padapter); - if(padapter->pbuddy_adapter->mlmepriv.update_bcn == _TRUE) + if (padapter->pbuddy_adapter->mlmepriv.update_bcn == _TRUE) { //tx_beacon_hdl(padapter, NULL); set_tx_beacon_cmd(padapter->pbuddy_adapter); } } #endif - + } #endif //CONFIG_INTERRUPT_BASED_TXBCN diff --git a/include/autoconf.h b/include/autoconf.h index 2e1c61442..b0b55720b 100644 --- a/include/autoconf.h +++ b/include/autoconf.h @@ -355,4 +355,4 @@ /*#define DBG_MEMORY_LEAK*/ #define DBG_RX_DFRAME_RAW_DATA -/*#define CONFIG_USE_EXTERNAL_POWER */ /* NOT USB2.0 power, so no 500mA power constraint, no limitation in Power by Rate*/ +#define CONFIG_USE_EXTERNAL_POWER /* NOT USB2.0 power, so no 500mA power constraint, no limitation in Power by Rate */ diff --git a/include/hal_data.h b/include/hal_data.h old mode 100755 new mode 100644 diff --git a/include/hal_data.h.edited b/include/hal_data.h.edited deleted file mode 100755 index ec59ebb2c..000000000 --- a/include/hal_data.h.edited +++ /dev/null @@ -1,652 +0,0 @@ -/****************************************************************************** - * - * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of version 2 of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along with - * this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * - ******************************************************************************/ -#ifndef __HAL_DATA_H__ -#define __HAL_DATA_H__ - -#if 1//def CONFIG_SINGLE_IMG - -#include "../hal/phydm/phydm_precomp.h" -#ifdef CONFIG_BT_COEXIST -#include -#endif - -#ifdef CONFIG_SDIO_HCI -#include -#endif -#ifdef CONFIG_GSPI_HCI -#include -#endif -// -// For RTL8723 WiFi/BT/GPS multi-function configuration. 2010.10.06. -// -typedef enum _RT_MULTI_FUNC{ - RT_MULTI_FUNC_NONE = 0x00, - RT_MULTI_FUNC_WIFI = 0x01, - RT_MULTI_FUNC_BT = 0x02, - RT_MULTI_FUNC_GPS = 0x04, -}RT_MULTI_FUNC,*PRT_MULTI_FUNC; -// -// For RTL8723 WiFi PDn/GPIO polarity control configuration. 2010.10.08. -// -typedef enum _RT_POLARITY_CTL { - RT_POLARITY_LOW_ACT = 0, - RT_POLARITY_HIGH_ACT = 1, -} RT_POLARITY_CTL, *PRT_POLARITY_CTL; - -// For RTL8723 regulator mode. by tynli. 2011.01.14. -typedef enum _RT_REGULATOR_MODE { - RT_SWITCHING_REGULATOR = 0, - RT_LDO_REGULATOR = 1, -} RT_REGULATOR_MODE, *PRT_REGULATOR_MODE; - -// -// Interface type. -// -typedef enum _INTERFACE_SELECT_PCIE{ - INTF_SEL0_SOLO_MINICARD = 0, // WiFi solo-mCard - INTF_SEL1_BT_COMBO_MINICARD = 1, // WiFi+BT combo-mCard - INTF_SEL2_PCIe = 2, // PCIe Card -} INTERFACE_SELECT_PCIE, *PINTERFACE_SELECT_PCIE; - - -typedef enum _INTERFACE_SELECT_USB{ - INTF_SEL0_USB = 0, // USB - INTF_SEL1_USB_High_Power = 1, // USB with high power PA - INTF_SEL2_MINICARD = 2, // Minicard - INTF_SEL3_USB_Solo = 3, // USB solo-Slim module - INTF_SEL4_USB_Combo = 4, // USB Combo-Slim module - INTF_SEL5_USB_Combo_MF = 5, // USB WiFi+BT Multi-Function Combo, i.e., Proprietary layout(AS-VAU) which is the same as SDIO card -} INTERFACE_SELECT_USB, *PINTERFACE_SELECT_USB; - -typedef enum _RT_AMPDU_BRUST_MODE{ - RT_AMPDU_BRUST_NONE = 0, - RT_AMPDU_BRUST_92D = 1, - RT_AMPDU_BRUST_88E = 2, - RT_AMPDU_BRUST_8812_4 = 3, - RT_AMPDU_BRUST_8812_8 = 4, - RT_AMPDU_BRUST_8812_12 = 5, - RT_AMPDU_BRUST_8812_15 = 6, - RT_AMPDU_BRUST_8723B = 7, -}RT_AMPDU_BRUST,*PRT_AMPDU_BRUST_MODE; - -/* -#define CHANNEL_MAX_NUMBER 14+24+21 // 14 is the max channel number -*/ -#define CHANNEL_GROUP_MAX (3 + 9) /* ch1~3, ch4~9, ch10~14 total three groups */ -#define MAX_PG_GROUP 13 - -// Tx Power Limit Table Size -#define MAX_REGULATION_NUM 4 -#define MAX_RF_PATH_NUM_IN_POWER_LIMIT_TABLE 4 -#define MAX_2_4G_BANDWIDTH_NUM 2 -#define MAX_RATE_SECTION_NUM 10 -#define MAX_5G_BANDWIDTH_NUM 4 - -#define MAX_BASE_NUM_IN_PHY_REG_PG_2_4G 10 // CCK:1,OFDM:1, HT:4, VHT:4 -#define MAX_BASE_NUM_IN_PHY_REG_PG_5G 9 // OFDM:1, HT:4, VHT:4 - - -//###### duplicate code,will move to ODM ######### -//#define IQK_MAC_REG_NUM 4 -//#define IQK_ADDA_REG_NUM 16 - -//#define IQK_BB_REG_NUM 10 -#define IQK_BB_REG_NUM_92C 9 -#define IQK_BB_REG_NUM_92D 10 -#define IQK_BB_REG_NUM_test 6 - -#define IQK_Matrix_Settings_NUM_92D 1+24+21 - -//#define HP_THERMAL_NUM 8 -//###### duplicate code,will move to ODM ######### - -#ifdef CONFIG_USB_RX_AGGREGATION -typedef enum _USB_RX_AGG_MODE{ - USB_RX_AGG_DISABLE, - USB_RX_AGG_DMA, - USB_RX_AGG_USB, - USB_RX_AGG_MIX -}USB_RX_AGG_MODE; - -//#define MAX_RX_DMA_BUFFER_SIZE 10240 // 10K for 8192C RX DMA buffer - -#endif - -/* For store initial value of BB register */ -typedef struct _BB_INIT_REGISTER { - u16 offset; - u32 value; - -} BB_INIT_REGISTER, *PBB_INIT_REGISTER; - -#define PAGE_SIZE_128 128 -#define PAGE_SIZE_256 256 -#define PAGE_SIZE_512 512 - -#define HCI_SUS_ENTER 0 -#define HCI_SUS_LEAVING 1 -#define HCI_SUS_LEAVE 2 -#define HCI_SUS_ENTERING 3 -#define HCI_SUS_ERR 4 - -#ifdef CONFIG_AUTO_CHNL_SEL_NHM -typedef enum _ACS_OP { - ACS_INIT, /*ACS - Variable init*/ - ACS_RESET, /*ACS - NHM Counter reset*/ - ACS_SELECT, /*ACS - NHM Counter Statistics */ -} ACS_OP; - -typedef enum _ACS_STATE { - ACS_DISABLE, - ACS_ENABLE, -} ACS_STATE; - -struct auto_chan_sel { - ATOMIC_T state; - u8 ch; /* previous channel*/ -}; -#endif /*CONFIG_AUTO_CHNL_SEL_NHM*/ - -#define EFUSE_FILE_UNUSED 0 -#define EFUSE_FILE_FAILED 1 -#define EFUSE_FILE_LOADED 2 - -#define MACADDR_FILE_UNUSED 0 -#define MACADDR_FILE_FAILED 1 -#define MACADDR_FILE_LOADED 2 - -#define KFREE_FLAG_ON BIT0 -#define KFREE_FLAG_THERMAL_K_ON BIT1 - -struct kfree_data_t { - u8 flag; - s8 bb_gain[BB_GAIN_NUM][RF_PATH_MAX]; - -#ifdef CONFIG_IEEE80211_BAND_5GHZ - s8 pa_bias_5g[RF_PATH_MAX]; - s8 pad_bias_5g[RF_PATH_MAX]; -#endif - s8 thermal; -}; - -bool kfree_data_is_bb_gain_empty(struct kfree_data_t *data); - -struct hal_spec_t { - u8 macid_num; - - u8 sec_cam_ent_num; - u8 sec_cap; - - u8 nss_num; - u8 band_cap; /* value of BAND_CAP_XXX */ - u8 bw_cap; /* value of BW_CAP_XXX */ - - u8 wl_func; /* value of WL_FUNC_XXX */ -}; - -typedef struct hal_com_data -{ - HAL_VERSION VersionID; - RT_MULTI_FUNC MultiFunc; // For multi-function consideration. - RT_POLARITY_CTL PolarityCtl; // For Wifi PDn Polarity control. - RT_REGULATOR_MODE RegulatorMode; // switching regulator or LDO - u8 hw_init_completed; - /****** FW related ******/ - u16 FirmwareVersion; - u16 FirmwareVersionRev; - u16 FirmwareSubVersion; - u16 FirmwareSignature; - u8 RegFWOffload; - u8 fw_ractrl; - u8 FwRsvdPageStartOffset; /* 2010.06.23. Added by tynli. Reserve page start offset except beacon in TxQ.*/ - u8 LastHMEBoxNum; /* H2C - for host message to fw */ - - /****** current WIFI_PHY values ******/ - WIRELESS_MODE CurrentWirelessMode; - CHANNEL_WIDTH CurrentChannelBW; - BAND_TYPE CurrentBandType; /* 0:2.4G, 1:5G */ - BAND_TYPE BandSet; - u8 CurrentChannel; - u8 CurrentCenterFrequencyIndex1; - u8 nCur40MhzPrimeSC; /* Control channel sub-carrier */ - u8 nCur80MhzPrimeSC; /* used for primary 40MHz of 80MHz mode */ - BOOLEAN bSwChnlAndSetBWInProgress; - u8 bDisableSWChannelPlan; /* flag of disable software change channel plan */ - u16 BasicRateSet; - u32 ReceiveConfig; - BOOLEAN bSwChnl; - BOOLEAN bSetChnlBW; - BOOLEAN bChnlBWInitialized; -#ifdef CONFIG_AUTO_CHNL_SEL_NHM - struct auto_chan_sel acs; -#endif - /****** rf_ctrl *****/ - u8 rf_chip; - u8 rf_type; - u8 PackageType; - u8 NumTotalRFPath; - - /****** Debug ******/ - u16 ForcedDataRate; /* Force Data Rate. 0: Auto, 0x02: 1M ~ 0x6C: 54M. */ - u8 u1ForcedIgiLb; /* forced IGI lower bound */ - u8 bDumpRxPkt; - u8 bDumpTxPkt; - u8 bDisableTXPowerTraining; - - - /****** EEPROM setting.******/ - u8 bautoload_fail_flag; - u8 efuse_file_status; - u8 macaddr_file_status; - u8 EepromOrEfuse; - u8 efuse_eeprom_data[EEPROM_MAX_SIZE]; /*92C:256bytes, 88E:512bytes, we use union set (512bytes)*/ - u8 InterfaceSel; /* board type kept in eFuse */ - u16 CustomerID; - - u16 EEPROMVID; - u16 EEPROMSVID; -#ifdef CONFIG_USB_HCI - u16 EEPROMPID; - u16 EEPROMSDID; -#endif -#ifdef CONFIG_PCI_HCI - u16 EEPROMDID; - u16 EEPROMSMID; -#endif - - u8 EEPROMCustomerID; - u8 EEPROMSubCustomerID; - u8 EEPROMVersion; - u8 EEPROMRegulatory; - u8 EEPROMThermalMeter; - u8 EEPROMBluetoothCoexist; - u8 EEPROMBluetoothType; - u8 EEPROMBluetoothAntNum; - u8 EEPROMBluetoothAntIsolation; - u8 EEPROMBluetoothRadioShared; - u8 bTXPowerDataReadFromEEPORM; - u8 EEPROMMACAddr[ETH_ALEN]; - -#ifdef CONFIG_RF_GAIN_OFFSET - u8 EEPROMRFGainOffset; - u8 EEPROMRFGainVal; - struct kfree_data_t kfree_data; -#endif /*CONFIG_RF_GAIN_OFFSET*/ - -#if defined(CONFIG_RTL8723B) || defined(CONFIG_RTL8703B) - u8 adjuseVoltageVal; -#endif - u8 EfuseUsedPercentage; - u16 EfuseUsedBytes; - /*u8 EfuseMap[2][HWSET_MAX_SIZE_JAGUAR];*/ - EFUSE_HAL EfuseHal; - - /*---------------------------------------------------------------------------------*/ - //3 [2.4G] - u8 Index24G_CCK_Base[MAX_RF_PATH][CENTER_CH_2G_NUM]; - u8 Index24G_BW40_Base[MAX_RF_PATH][CENTER_CH_2G_NUM]; - //If only one tx, only BW20 and OFDM are used. - s8 CCK_24G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - s8 OFDM_24G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - s8 BW20_24G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - s8 BW40_24G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - //3 [5G] - u8 Index5G_BW40_Base[MAX_RF_PATH][CENTER_CH_5G_ALL_NUM]; - u8 Index5G_BW80_Base[MAX_RF_PATH][CENTER_CH_5G_80M_NUM]; - s8 OFDM_5G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - s8 BW20_5G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - s8 BW40_5G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - s8 BW80_5G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - - u8 Regulation2_4G; - u8 Regulation5G; - - u8 TxPwrInPercentage; - - /******************************** - * TX power by rate table at most 4RF path. - * The register is - * - * VHT TX power by rate off setArray = - * Band:-2G&5G = 0 / 1 - * RF: at most 4*4 = ABCD=0/1/2/3 - * CCK=0 OFDM=1/2 HT-MCS 0-15=3/4/56 VHT=7/8/9/10/11 - **********************************/ - u8 TxPwrByRateTable; - u8 TxPwrByRateBand; - s8 TxPwrByRateOffset[TX_PWR_BY_RATE_NUM_BAND] - [TX_PWR_BY_RATE_NUM_RF] - [TX_PWR_BY_RATE_NUM_RF] - [TX_PWR_BY_RATE_NUM_RATE]; - //---------------------------------------------------------------------------------// - - /* - //2 Power Limit Table - u8 TxPwrLevelCck[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER]; - u8 TxPwrLevelHT40_1S[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER]; // For HT 40MHZ pwr - u8 TxPwrLevelHT40_2S[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER]; // For HT 40MHZ pwr - s8 TxPwrHt20Diff[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER];// HT 20<->40 Pwr diff - u8 TxPwrLegacyHtDiff[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER];// For HT<->legacy pwr diff - */ - - u8 tx_pwr_lmt_5g_20_40_ref; - - // Power Limit Table for 2.4G - s8 TxPwrLimit_2_4G[MAX_REGULATION_NUM] - [MAX_2_4G_BANDWIDTH_NUM] - [MAX_RATE_SECTION_NUM] - [CENTER_CH_2G_NUM] - [MAX_RF_PATH]; - - // Power Limit Table for 5G - s8 TxPwrLimit_5G[MAX_REGULATION_NUM] - [MAX_5G_BANDWIDTH_NUM] - [MAX_RATE_SECTION_NUM] - [CENTER_CH_5G_ALL_NUM] - [MAX_RF_PATH]; - - - // Store the original power by rate value of the base of each rate section of rf path A & B - u8 TxPwrByRateBase2_4G[TX_PWR_BY_RATE_NUM_RF] - [TX_PWR_BY_RATE_NUM_RF] - [MAX_BASE_NUM_IN_PHY_REG_PG_2_4G]; - u8 TxPwrByRateBase5G[TX_PWR_BY_RATE_NUM_RF] - [TX_PWR_BY_RATE_NUM_RF] - [MAX_BASE_NUM_IN_PHY_REG_PG_5G]; - -<<<<<<< .mine - u8 TxPwrShadow[MAX_RF_PATH][DESC_RATEMAX]; -======= - u8 txpwr_by_rate_loaded:1; - u8 txpwr_by_rate_from_file:1; - u8 txpwr_limit_loaded:1; - u8 txpwr_limit_from_file:1; - ->>>>>>> .r15056 - // For power group - /* - u8 PwrGroupHT20[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER]; - u8 PwrGroupHT40[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER]; - */ - u8 PGMaxGroup; - - // The current Tx Power Level - u8 CurrentCckTxPwrIdx; - u8 CurrentOfdm24GTxPwrIdx; - u8 CurrentBW2024GTxPwrIdx; - u8 CurrentBW4024GTxPwrIdx; - - // Read/write are allow for following hardware information variables - u8 pwrGroupCnt; - u32 MCSTxPowerLevelOriginalOffset[MAX_PG_GROUP][16]; - u32 CCKTxPowerLevelOriginalOffset; - - u8 CrystalCap; - - u8 PAType_2G; - u8 PAType_5G; - u8 LNAType_2G; - u8 LNAType_5G; - u8 ExternalPA_2G; - u8 ExternalLNA_2G; - u8 ExternalPA_5G; - u8 ExternalLNA_5G; - u16 TypeGLNA; - u16 TypeGPA; - u16 TypeALNA; - u16 TypeAPA; - u16 RFEType; - - u8 bLedOpenDrain; /* Support Open-drain arrangement for controlling the LED. Added by Roger, 2009.10.16. */ - u32 AcParam_BE; /* Original parameter for BE, use for EDCA turbo. */ - - BB_REGISTER_DEFINITION_T PHYRegDef[MAX_RF_PATH]; //Radio A/B/C/D - - u32 RfRegChnlVal[MAX_RF_PATH]; - - //RDG enable - BOOLEAN bRDGEnable; - - u8 RegTxPause; - // Beacon function related global variable. - u8 RegBcnCtrlVal; - u8 RegFwHwTxQCtrl; - u8 RegReg542; - u8 RegCR_1; - u8 Reg837; - u16 RegRRSR; - - /****** antenna diversity ******/ - u8 CurAntenna; - u8 AntDivCfg; - u8 AntDetection; - u8 TRxAntDivType; - u8 ant_path; //for 8723B s0/s1 selection - u32 AntennaTxPath; /* Antenna path Tx */ - u32 AntennaRxPath; /* Antenna path Rx */ - - /******** PHY DM & DM Section **********/ - u8 DM_Type; - _lock IQKSpinLock; - u8 INIDATA_RATE[MACID_NUM_SW_LIMIT]; - /* Upper and Lower Signal threshold for Rate Adaptive*/ - int EntryMinUndecoratedSmoothedPWDB; - int EntryMaxUndecoratedSmoothedPWDB; - int MinUndecoratedPWDBForDM; - DM_ODM_T odmpriv; - u8 bIQKInitialized; - u8 bNeedIQK; - /******** PHY DM & DM Section **********/ - - - - // 2010/08/09 MH Add CU power down mode. - BOOLEAN pwrdown; - - // Add for dual MAC 0--Mac0 1--Mac1 - u32 interfaceIndex; - -#ifdef CONFIG_P2P - u8 p2p_ps_offload; -#endif - /* Auto FSM to Turn On, include clock, isolation, power control for MAC only */ - u8 bMacPwrCtrlOn; - u8 hci_sus_state; - - u8 RegIQKFWOffload; - struct submit_ctx iqk_sctx; - - RT_AMPDU_BRUST AMPDUBurstMode; //92C maybe not use, but for compile successfully - - u8 OutEpQueueSel; - u8 OutEpNumber; - -#if defined (CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) - // - // For SDIO Interface HAL related - // - - // - // SDIO ISR Related - // -// u32 IntrMask[1]; -// u32 IntrMaskToSet[1]; -// LOG_INTERRUPT InterruptLog; - u32 sdio_himr; - u32 sdio_hisr; - - // - // SDIO Tx FIFO related. - // - // HIQ, MID, LOW, PUB free pages; padapter->xmitpriv.free_txpg - u8 SdioTxFIFOFreePage[SDIO_TX_FREE_PG_QUEUE]; - _lock SdioTxFIFOFreePageLock; - u8 SdioTxOQTMaxFreeSpace; - u8 SdioTxOQTFreeSpace; - - // - // SDIO Rx FIFO related. - // - u8 SdioRxFIFOCnt; - u16 SdioRxFIFOSize; - - u32 sdio_tx_max_len[SDIO_MAX_TX_QUEUE];// H, N, L, used for sdio tx aggregation max length per queue -#endif //CONFIG_SDIO_HCI - -#ifdef CONFIG_USB_HCI - - // 2010/12/10 MH Add for USB aggreation mode dynamic shceme. - BOOLEAN UsbRxHighSpeedMode; - BOOLEAN UsbTxVeryHighSpeedMode; - u32 UsbBulkOutSize; - BOOLEAN bSupportUSB3; - - // Interrupt relatd register information. - u32 IntArray[3];//HISR0,HISR1,HSISR - u32 IntrMask[3]; - u8 C2hArray[16]; - #ifdef CONFIG_USB_TX_AGGREGATION - u8 UsbTxAggMode; - u8 UsbTxAggDescNum; - #endif // CONFIG_USB_TX_AGGREGATION - - #ifdef CONFIG_USB_RX_AGGREGATION - u16 HwRxPageSize; // Hardware setting - u32 MaxUsbRxAggBlock; - - USB_RX_AGG_MODE UsbRxAggMode; - u8 UsbRxAggBlockCount; /* FOR USB Mode, USB Block count. Block size is 512-byte in hight speed and 64-byte in full speed */ - u8 UsbRxAggBlockTimeout; - u8 UsbRxAggPageCount; /* FOR DMA Mode, 8192C DMA page count*/ - u8 UsbRxAggPageTimeout; - - u8 RegAcUsbDmaSize; - u8 RegAcUsbDmaTime; - #endif//CONFIG_USB_RX_AGGREGATION -#endif //CONFIG_USB_HCI - - -#ifdef CONFIG_PCI_HCI - // - // EEPROM setting. - // - u32 TransmitConfig; - u32 IntrMaskToSet[2]; - u32 IntArray[2]; - u32 IntrMask[2]; - u32 SysIntArray[1]; - u32 SysIntrMask[1]; - u32 IntrMaskReg[2]; - u32 IntrMaskDefault[2]; - - BOOLEAN bL1OffSupport; - BOOLEAN bSupportBackDoor; - - u8 bDefaultAntenna; - - u8 bInterruptMigration; - u8 bDisableTxInt; - - u16 RxTag; -#endif //CONFIG_PCI_HCI - - -#ifdef DBG_CONFIG_ERROR_DETECT - struct sreset_priv srestpriv; -#endif //#ifdef DBG_CONFIG_ERROR_DETECT - -#ifdef CONFIG_BT_COEXIST - // For bluetooth co-existance - BT_COEXIST bt_coexist; -#endif // CONFIG_BT_COEXIST - -#if defined(CONFIG_RTL8723B) || defined(CONFIG_RTL8703B) || defined(CONFIG_RTL8188F) - #ifndef CONFIG_PCI_HCI // mutual exclusive with PCI -- so they're SDIO and GSPI - // Interrupt relatd register information. - u32 SysIntrStatus; - u32 SysIntrMask; - #endif -#endif /*endif CONFIG_RTL8723B */ - -#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE - char para_file_buf[MAX_PARA_FILE_BUF_LEN]; - char *mac_reg; - u32 mac_reg_len; - char *bb_phy_reg; - u32 bb_phy_reg_len; - char *bb_agc_tab; - u32 bb_agc_tab_len; - char *bb_phy_reg_pg; - u32 bb_phy_reg_pg_len; - char *bb_phy_reg_mp; - u32 bb_phy_reg_mp_len; - char *rf_radio_a; - u32 rf_radio_a_len; - char *rf_radio_b; - u32 rf_radio_b_len; - char *rf_tx_pwr_track; - u32 rf_tx_pwr_track_len; - char *rf_tx_pwr_lmt; - u32 rf_tx_pwr_lmt_len; -#endif - -#ifdef CONFIG_BACKGROUND_NOISE_MONITOR - s16 noise[ODM_MAX_CHANNEL_NUM]; -#endif - - struct hal_spec_t hal_spec; - - u8 RfKFreeEnable; - u8 RfKFree_ch_group; - BOOLEAN bCCKinCH14; - BB_INIT_REGISTER RegForRecover[5]; - -} HAL_DATA_COMMON, *PHAL_DATA_COMMON; - - - -typedef struct hal_com_data HAL_DATA_TYPE, *PHAL_DATA_TYPE; -#define GET_HAL_DATA(__pAdapter) ((HAL_DATA_TYPE *)((__pAdapter)->HalData)) -#define GET_HAL_SPEC(__pAdapter) (&(GET_HAL_DATA((__pAdapter))->hal_spec)) - -#define GET_HAL_RFPATH_NUM(__pAdapter) (((HAL_DATA_TYPE *)((__pAdapter)->HalData))->NumTotalRFPath ) -#define RT_GetInterfaceSelection(_Adapter) (GET_HAL_DATA(_Adapter)->InterfaceSel) -#define GET_RF_TYPE(__pAdapter) (GET_HAL_DATA(__pAdapter)->rf_type) -#define GET_KFREE_DATA(_adapter) (&(GET_HAL_DATA((_adapter))->kfree_data)) - -#define SUPPORT_HW_RADIO_DETECT(Adapter) ( RT_GetInterfaceSelection(Adapter) == INTF_SEL2_MINICARD ||\ - RT_GetInterfaceSelection(Adapter) == INTF_SEL3_USB_Solo ||\ - RT_GetInterfaceSelection(Adapter) == INTF_SEL4_USB_Combo) - -#define get_hal_mac_addr(adapter) (GET_HAL_DATA(adapter)->EEPROMMACAddr) -#define is_boot_from_eeprom(adapter) (GET_HAL_DATA(adapter)->EepromOrEfuse) -#define rtw_get_hw_init_completed(adapter) (GET_HAL_DATA(adapter)->hw_init_completed) -#define rtw_is_hw_init_completed(adapter) (GET_HAL_DATA(adapter)->hw_init_completed == _TRUE) -#endif - -#ifdef CONFIG_AUTO_CHNL_SEL_NHM -#define GET_ACS_STATE(padapter) (ATOMIC_READ(&GET_HAL_DATA(padapter)->acs.state)) -#define SET_ACS_STATE(padapter, set_state) (ATOMIC_SET(&GET_HAL_DATA(padapter)->acs.state, set_state)) -#define rtw_get_acs_channel(padapter) (GET_HAL_DATA(padapter)->acs.ch) -#define rtw_set_acs_channel(padapter, survey_ch) (GET_HAL_DATA(padapter)->acs.ch = survey_ch) -#endif /*CONFIG_AUTO_CHNL_SEL_NHM*/ - -#endif //__HAL_DATA_H__ - diff --git a/include/rtl8723b_hal.h b/include/rtl8723b_hal.h old mode 100755 new mode 100644 diff --git a/include/rtl8723b_led.h b/include/rtl8723b_led.h old mode 100755 new mode 100644 diff --git a/include/rtl8723b_recv.h b/include/rtl8723b_recv.h old mode 100755 new mode 100644 diff --git a/include/rtl8723b_spec.h b/include/rtl8723b_spec.h old mode 100755 new mode 100644 diff --git a/include/rtl8723b_xmit.h b/include/rtl8723b_xmit.h old mode 100755 new mode 100644 diff --git a/include/rtl8814a_cmd.h b/include/rtl8814a_cmd.h old mode 100755 new mode 100644 diff --git a/include/rtl8814a_hal.h b/include/rtl8814a_hal.h old mode 100755 new mode 100644 diff --git a/include/rtl8814a_recv.h b/include/rtl8814a_recv.h old mode 100755 new mode 100644 diff --git a/include/rtl8814a_spec.h b/include/rtl8814a_spec.h old mode 100755 new mode 100644 diff --git a/include/rtl8814a_xmit.h b/include/rtl8814a_xmit.h old mode 100755 new mode 100644 diff --git a/include/rtl8822be_hal.h b/include/rtl8822be_hal.h old mode 100755 new mode 100644 From c9d7263e8329a89643c4707a163162ac84c7cc1a Mon Sep 17 00:00:00 2001 From: kimocoder Date: Sun, 25 Feb 2018 23:16:51 +0100 Subject: [PATCH 189/234] more cleanup --- .cache.mk | 61 ++ hal/btc/HalBtc8703b2Ant.c | 0 hal/btc/HalBtc8703b2Ant.h | 0 hal/btc/HalBtcOutSrc.h | 34 +- hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.c | 38 +- hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.h | 36 +- hal/efuse/rtl8814a/HalEfuseMask8814A_USB.c | 38 +- hal/efuse/rtl8814a/HalEfuseMask8814A_USB.h | 36 +- hal/phydm/halhwimg.h | 6 +- hal/phydm/mp_precomp.h | 2 +- hal/phydm/phydm.c | 583 +++++++++----------- hal/phydm/phydm_rxhp.c | 0 hal/phydm/phydm_rxhp.h | 0 hal/phydm/rtchnlplan.c | 206 ++++--- hal/phydm/rtchnlplan.h | 558 ++++++++++--------- include/autoconf.h | 6 +- os_dep/linux/ioctl_cfg80211.c | 5 + 17 files changed, 811 insertions(+), 798 deletions(-) create mode 100644 .cache.mk mode change 100755 => 100644 hal/btc/HalBtc8703b2Ant.c mode change 100755 => 100644 hal/btc/HalBtc8703b2Ant.h mode change 100755 => 100644 hal/phydm/phydm_rxhp.c mode change 100755 => 100644 hal/phydm/phydm_rxhp.h diff --git a/.cache.mk b/.cache.mk new file mode 100644 index 000000000..4c8e1090b --- /dev/null +++ b/.cache.mk @@ -0,0 +1,61 @@ +__cached__gcc-7_-v_2>&1_|_grep_-q_"clang_version"_&&_echo_clang_||_echo_gcc := gcc +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-fno-PIE";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fno-PIE +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-fno-PIE_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-fno-PIE";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fno-PIE +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-Wmaybe-uninitialized_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-maybe-uninitialized";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-maybe-uninitialized +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE__-mpreferred-stack-boundary_4_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-mpreferred-stack-boundary_4";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mpreferred-stack-boundary=4 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE__-m16_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-m16";_else_echo_"_-m32_-Wa_/usr/src/linux-headers-4.15.0-kali1-common/arch/x86/boot/code16gcc.h";_fi;_rm_-f_"_TMP"_"_TMPO" := -m16 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror__-m16_-g_-Os_-D__KERNEL___-DDISABLE_BRANCH_PROFILING_-Wall_-Wstrict-prototypes_-march_i386_-mregparm_3_-fno-strict-aliasing_-fomit-frame-pointer_-fno-pic_-mno-mmx_-mno-sse__-ffreestanding_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-ffreestanding";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -ffreestanding +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror__-m16_-g_-Os_-D__KERNEL___-DDISABLE_BRANCH_PROFILING_-Wall_-Wstrict-prototypes_-march_i386_-mregparm_3_-fno-strict-aliasing_-fomit-frame-pointer_-fno-pic_-mno-mmx_-mno-sse_-ffreestanding__-fno-stack-protector_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-fno-stack-protector";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fno-stack-protector +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror__-m16_-g_-Os_-D__KERNEL___-DDISABLE_BRANCH_PROFILING_-Wall_-Wstrict-prototypes_-march_i386_-mregparm_3_-fno-strict-aliasing_-fomit-frame-pointer_-fno-pic_-mno-mmx_-mno-sse_-ffreestanding_-fno-stack-protector__-mpreferred-stack-boundary_2_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-mpreferred-stack-boundary_2";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mpreferred-stack-boundary=2 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-mno-avx";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mno-avx +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-falign-jumps_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -falign-jumps=1 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-falign-loops_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -falign-loops=1 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-mno-80387";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mno-80387 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-mno-fp-ret-in-387";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mno-fp-ret-in-387 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-mpreferred-stack-boundary_3";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mpreferred-stack-boundary=3 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-mskip-rax-setup";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mskip-rax-setup +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-mtune_generic";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mtune=generic +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-funit-at-a-time";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -funit-at-a-time +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI__-mfentry_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"y";_else_echo_"n";_fi;_rm_-f_"_TMP"_"_TMPO" := y +__cached_/bin/bash_/usr/src/linux-headers-4.15.0-kali1-common/scripts/gcc-version.sh_-p__gcc-7_ := 070300 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_".cfi_startproc_n.cfi_rel_offset_rsp_0_n.cfi_endproc"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_CFI_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_CFI=1 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_".cfi_startproc_n.cfi_signal_frame_n.cfi_endproc"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_CFI_SIGNAL_FRAME_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_CFI_SIGNAL_FRAME=1 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_".cfi_sections_.debug_frame"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_CFI_SECTIONS_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_CFI_SECTIONS=1 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"fxsaveq__%rax_"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_FXSAVEQ_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_FXSAVEQ=1 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"pshufb_%xmm0_%xmm0"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_SSSE3_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_SSSE3=1 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"crc32l_%eax_%eax"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_CRC32_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_CRC32=1 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"vxorps_%ymm0_%ymm1_%ymm2"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_AVX_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_AVX=1 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"vpbroadcastb_%xmm0_%ymm1"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_AVX2_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_AVX2=1 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"vpmovm2b_%k1_%zmm5"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_AVX512_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_AVX512=1 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"sha1msg1_%xmm0_%xmm1"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_SHA1_NI_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_SHA1_NI=1 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"sha256msg1_%xmm0_%xmm1"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_SHA256_NI_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_SHA256_NI=1 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-mindirect-branch_thunk-extern_-mindirect-branch-register";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mindirect-branch=thunk-extern -mindirect-branch-register +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-fno-delete-null-pointer-checks";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fno-delete-null-pointer-checks +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wframe-address_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-frame-address";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-frame-address +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wformat-truncation_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-format-truncation";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-format-truncation +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wformat-overflow_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-format-overflow";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-format-overflow +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wint-in-bool-context_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-int-in-bool-context";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-int-in-bool-context +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_-Wmaybe-uninitialized_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-maybe-uninitialized";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-maybe-uninitialized +__cached_/bin/bash_/usr/src/linux-headers-4.15.0-kali1-common/scripts/gcc-version.sh__gcc-7_ := 0703 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"--param_allow-store-data-races_0";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := --param=allow-store-data-races=0 +__cached_/bin/bash_/usr/src/linux-headers-4.15.0-kali1-common/scripts/gcc-goto.sh__gcc-7_-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2__--param_allow-store-data-races_0 := y +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wframe-larger-than_2048";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wframe-larger-than=2048 +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-nostdinc_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wunused-but-set-variable_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-unused-but-set-variable";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-unused-but-set-variable +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-nostdinc_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wunused-const-variable_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-unused-const-variable";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-unused-const-variable +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable__-fno-var-tracking-assignments_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-fno-var-tracking-assignments";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fno-var-tracking-assignments +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g__-mfentry_-DCC_USING_FENTRY_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-mfentry_-DCC_USING_FENTRY";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mfentry -DCC_USING_FENTRY +__cached__gcc-7_-print-file-name_include := /usr/lib/gcc/x86_64-linux-gnu/7/include +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wdeclaration-after-statement";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wdeclaration-after-statement +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wpointer-sign_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-pointer-sign";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-pointer-sign +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-fno-strict-overflow";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fno-strict-overflow +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-fno-stack-check";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fno-stack-check +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-fconserve-stack";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fconserve-stack +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-Werror_implicit-int_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Werror_implicit-int";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Werror=implicit-int +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-Werror_implicit-int_-Werror_strict-prototypes_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Werror_strict-prototypes";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Werror=strict-prototypes +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-Werror_implicit-int_-Werror_strict-prototypes_-Werror_date-time_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Werror_date-time";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Werror=date-time +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-Werror_implicit-int_-Werror_strict-prototypes_-Werror_date-time_-Werror_incompatible-pointer-types_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Werror_incompatible-pointer-types";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Werror=incompatible-pointer-types +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-Werror_implicit-int_-Werror_strict-prototypes_-Werror_date-time_-Werror_incompatible-pointer-types_-Werror_designated-init_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Werror_designated-init";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Werror=designated-init +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___ar_rcD_"_TMP"__>/dev/null_2>&1;_then_echo_"D";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := D +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7__-Wl_--build-id_-D__KERNEL_____-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-Werror_implicit-int_-Werror_strict-prototypes_-Werror_date-time_-Werror_incompatible-pointer-types_-Werror_designated-init_-nostdlib_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-Wl_--build-id";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wl,--build-id +__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7__-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL_____-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-Werror_implicit-int_-Werror_strict-prototypes_-Werror_date-time_-Werror_incompatible-pointer-types_-Werror_designated-init_-x_c_/dev/null_-c_-o_"_TMPO";_ld_-m_elf_x86_64__-X_"_TMPO"_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-X";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -X +__cached_/bin/bash_/usr/src/linux-headers-4.15.0-kali1-common/scripts/gcc-version.sh__gcc-7__-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include := 0703 diff --git a/hal/btc/HalBtc8703b2Ant.c b/hal/btc/HalBtc8703b2Ant.c old mode 100755 new mode 100644 diff --git a/hal/btc/HalBtc8703b2Ant.h b/hal/btc/HalBtc8703b2Ant.h old mode 100755 new mode 100644 diff --git a/hal/btc/HalBtcOutSrc.h b/hal/btc/HalBtcOutSrc.h index 9a8c8fb99..545223bb7 100644 --- a/hal/btc/HalBtcOutSrc.h +++ b/hal/btc/HalBtcOutSrc.h @@ -146,7 +146,7 @@ typedef enum _BTC_WIFI_ROLE{ typedef enum _BTC_WIRELESS_FREQ{ BTC_FREQ_2_4G = 0x0, BTC_FREQ_5G = 0x1, - BTC_FREQ_MAX + BTC_FREQ_MAX }BTC_WIRELESS_FREQ,*PBTC_WIRELESS_FREQ; typedef enum _BTC_WIFI_BW_MODE{ @@ -155,13 +155,13 @@ typedef enum _BTC_WIFI_BW_MODE{ BTC_WIFI_BW_HT40 = 0x2, BTC_WIFI_BW_HT80 = 0x3, BTC_WIFI_BW_HT160 = 0x4, - BTC_WIFI_BW_MAX + BTC_WIFI_BW_MAX }BTC_WIFI_BW_MODE,*PBTC_WIFI_BW_MODE; typedef enum _BTC_WIFI_TRAFFIC_DIR{ BTC_WIFI_TRAFFIC_TX = 0x0, BTC_WIFI_TRAFFIC_RX = 0x1, - BTC_WIFI_TRAFFIC_MAX + BTC_WIFI_TRAFFIC_MAX }BTC_WIFI_TRAFFIC_DIR,*PBTC_WIFI_TRAFFIC_DIR; typedef enum _BTC_WIFI_PNP{ @@ -179,14 +179,14 @@ typedef enum _BTC_IOT_PEER BTC_IOT_PEER_RALINK = 4, BTC_IOT_PEER_ATHEROS = 5, BTC_IOT_PEER_CISCO = 6, - BTC_IOT_PEER_MERU = 7, + BTC_IOT_PEER_MERU = 7, BTC_IOT_PEER_MARVELL = 8, BTC_IOT_PEER_REALTEK_SOFTAP = 9,// peer is RealTek SOFT_AP, by Bohn, 2009.12.17 BTC_IOT_PEER_SELF_SOFTAP = 10, // Self is SoftAP BTC_IOT_PEER_AIRGO = 11, - BTC_IOT_PEER_INTEL = 12, - BTC_IOT_PEER_RTK_APCLIENT = 13, - BTC_IOT_PEER_REALTEK_81XX = 14, + BTC_IOT_PEER_INTEL = 12, + BTC_IOT_PEER_RTK_APCLIENT = 13, + BTC_IOT_PEER_REALTEK_81XX = 14, BTC_IOT_PEER_REALTEK_WOW = 15, BTC_IOT_PEER_REALTEK_JAGUAR_BCUTAP = 16, BTC_IOT_PEER_REALTEK_JAGUAR_CCUTAP = 17, @@ -215,7 +215,7 @@ typedef enum _BTC_ANT_TYPE{ typedef enum _BTC_VENDOR{ BTC_VENDOR_LENOVO, - BTC_VENDOR_ASUS, + BTC_VENDOR_ASUS, BTC_VENDOR_OTHER }BTC_VENDOR,*PBTC_VENDOR; @@ -242,7 +242,7 @@ typedef enum _BTC_GET_TYPE{ // type s4Byte BTC_GET_S4_WIFI_RSSI, BTC_GET_S4_HS_RSSI, - + // type u4Byte BTC_GET_U4_WIFI_BW, BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, @@ -543,21 +543,21 @@ typedef VOID IN u4Byte BitMask, IN u4Byte Data ); -typedef u4Byte +typedef u4Byte (*BFP_BTC_GET_BB_REG)( IN PVOID pBtcContext, IN u4Byte RegAddr, IN u4Byte BitMask ); typedef VOID -(*BFP_BTC_SET_RF_REG)( +(*BFP_BTC_SET_RF_REG)( IN PVOID pBtcContext, IN u1Byte eRFPath, IN u4Byte RegAddr, IN u4Byte BitMask, IN u4Byte Data ); -typedef u4Byte +typedef u4Byte (*BFP_BTC_GET_RF_REG)( IN PVOID pBtcContext, IN u1Byte eRFPath, @@ -598,7 +598,7 @@ typedef BOOLEAN IN u1Byte txTime, IN u1Byte btChnl ); -typedef u2Byte +typedef u2Byte (*BFP_BTC_GET_BT_REG)( IN PVOID pBtcContext, IN u1Byte regType, @@ -620,17 +620,17 @@ typedef COL_H2C_STATUS IN u1Byte h2c_par_len ); -typedef u4Byte +typedef u4Byte (*BFP_BTC_GET_BT_COEX_SUPPORTED_FEATURE)( IN PVOID pBtcContext ); -typedef u4Byte +typedef u4Byte (*BFP_BTC_GET_BT_COEX_SUPPORTED_VERSION)( IN PVOID pBtcContext ); -typedef u4Byte +typedef u4Byte (*BFP_BTC_GET_PHYDM_VERSION)( IN PVOID pBtcContext ); @@ -775,7 +775,7 @@ extern struct btc_coexist GLBtCoexist; BOOLEAN EXhalbtcoutsrc_InitlizeVariables( - IN PVOID Adapter + IN PVOID Adapter ); VOID EXhalbtcoutsrc_PowerOnSetting( diff --git a/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.c b/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.c index 22f793cc3..b7ff6f64c 100644 --- a/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.c +++ b/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.c @@ -1,21 +1,21 @@ -/****************************************************************************** -* -* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of version 2 of the GNU General Public License as -* published by the Free Software Foundation. -* -* This program is distributed in the hope that it will be useful, but WITHOUT -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -* more details. -* -* You should have received a copy of the GNU General Public License along with -* this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA -* -* +/****************************************************************************** +* +* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of version 2 of the GNU General Public License as +* published by the Free Software Foundation. +* +* This program is distributed in the hope that it will be useful, but WITHOUT +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +* more details. +* +* You should have received a copy of the GNU General Public License along with +* this program; if not, write to the Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA +* +* ******************************************************************************/ #include @@ -25,7 +25,7 @@ * MPCIE.TXT ******************************************************************************/ -u1Byte Array_MP_8814A_MPCIE[] = { +u1Byte Array_MP_8814A_MPCIE[] = { 0xFF, 0xFF, 0xFF, diff --git a/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.h b/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.h index 8b51c1b4a..9b4d7c5ac 100644 --- a/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.h +++ b/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.h @@ -1,21 +1,21 @@ -/****************************************************************************** -* -* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of version 2 of the GNU General Public License as -* published by the Free Software Foundation. -* -* This program is distributed in the hope that it will be useful, but WITHOUT -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -* more details. -* -* You should have received a copy of the GNU General Public License along with -* this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA -* -* +/****************************************************************************** +* +* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of version 2 of the GNU General Public License as +* published by the Free Software Foundation. +* +* This program is distributed in the hope that it will be useful, but WITHOUT +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +* more details. +* +* You should have received a copy of the GNU General Public License along with +* this program; if not, write to the Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA +* +* ******************************************************************************/ diff --git a/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.c b/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.c index cd80e9294..d882d922c 100644 --- a/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.c +++ b/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.c @@ -1,21 +1,21 @@ -/****************************************************************************** -* -* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of version 2 of the GNU General Public License as -* published by the Free Software Foundation. -* -* This program is distributed in the hope that it will be useful, but WITHOUT -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -* more details. -* -* You should have received a copy of the GNU General Public License along with -* this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA -* -* +/****************************************************************************** +* +* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of version 2 of the GNU General Public License as +* published by the Free Software Foundation. +* +* This program is distributed in the hope that it will be useful, but WITHOUT +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +* more details. +* +* You should have received a copy of the GNU General Public License along with +* this program; if not, write to the Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA +* +* ******************************************************************************/ #include @@ -25,7 +25,7 @@ * MUSB.TXT ******************************************************************************/ -u1Byte Array_MP_8814A_MUSB[] = { +u1Byte Array_MP_8814A_MUSB[] = { 0xFF, 0xFF, 0xFF, diff --git a/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.h b/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.h index 4262400d7..be33e37e1 100644 --- a/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.h +++ b/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.h @@ -1,21 +1,21 @@ -/****************************************************************************** -* -* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of version 2 of the GNU General Public License as -* published by the Free Software Foundation. -* -* This program is distributed in the hope that it will be useful, but WITHOUT -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -* more details. -* -* You should have received a copy of the GNU General Public License along with -* this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA -* -* +/****************************************************************************** +* +* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of version 2 of the GNU General Public License as +* published by the Free Software Foundation. +* +* This program is distributed in the hope that it will be useful, but WITHOUT +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +* more details. +* +* You should have received a copy of the GNU General Public License along with +* this program; if not, write to the Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA +* +* ******************************************************************************/ diff --git a/hal/phydm/halhwimg.h b/hal/phydm/halhwimg.h index 108f71509..f072094a7 100644 --- a/hal/phydm/halhwimg.h +++ b/hal/phydm/halhwimg.h @@ -29,7 +29,7 @@ #define RTL8188EE_HWIMG_SUPPORT 0 #define RTL8188EU_HWIMG_SUPPORT 0 #define RTL8188ES_HWIMG_SUPPORT 0 - + #elif (DEV_BUS_TYPE == RT_USB_INTERFACE) // For 92C #define RTL8192CE_HWIMG_SUPPORT 0 @@ -52,7 +52,7 @@ #define RTL8188EE_HWIMG_SUPPORT 0 #define RTL8188EU_HWIMG_SUPPORT 0 #define RTL8188ES_HWIMG_SUPPORT 0 - + #elif (DEV_BUS_TYPE == RT_SDIO_INTERFACE) // For 92C #define RTL8192CE_HWIMG_SUPPORT 0 @@ -102,7 +102,7 @@ #define RTL8188EU_HWIMG_SUPPORT 0 #define RTL8188ES_HWIMG_SUPPORT 0 - #else + #else // For 8723 #define RTL8723E_HWIMG_SUPPORT 1 diff --git a/hal/phydm/mp_precomp.h b/hal/phydm/mp_precomp.h index 2ae81105a..322bce015 100644 --- a/hal/phydm/mp_precomp.h +++ b/hal/phydm/mp_precomp.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. diff --git a/hal/phydm/phydm.c b/hal/phydm/phydm.c index e6a6af273..fd4fd8e15 100644 --- a/hal/phydm/phydm.c +++ b/hal/phydm/phydm.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -76,21 +76,19 @@ ODM_PWdB_Conversion( s4Byte Y, integer = 0, decimal = 0; u4Byte i; - if(X == 0) + if (X == 0) X = 1; // log2(x), x can't be 0 - for(i = (TotalBit-1); i > 0; i--) - { - if(X & BIT(i)) - { + for (i = (TotalBit-1); i > 0; i--) { + if (X & BIT(i)) { integer = i; - if(i > 0) - decimal = (X & BIT(i-1))?2:0; //decimal is 0.5dB*3=1.5dB~=2dB + if (i > 0) + decimal = (X & BIT(i-1))?2:0; //decimal is 0.5dB*3=1.5dB~=2dB break; } } - - Y = 3*(integer-DecimalBit)+decimal; //10*log(x)=3*log2(x), + + Y = 3*(integer-DecimalBit)+decimal; //10*log(x)=3*log2(x), return Y; } @@ -101,17 +99,17 @@ ODM_SignConversion( IN u4Byte TotalBit ) { - if(value&BIT(TotalBit-1)) + if (value&BIT(TotalBit-1)) value -= BIT(TotalBit); return value; } void -phydm_seq_sorting( +phydm_seq_sorting( IN PVOID pDM_VOID, IN OUT u4Byte *p_value, IN OUT u4Byte *rank_idx, - IN OUT u4Byte *p_idx_out, + IN OUT u4Byte *p_idx_out, IN u1Byte seq_length ) { @@ -126,9 +124,9 @@ phydm_seq_sorting( } for (i = 0; i < (seq_length - 1); i++) { - + for (j = 0; j < (seq_length - 1 - i); j++) { - + tmp_a = p_value[j]; tmp_b = p_value[j+1]; @@ -138,20 +136,20 @@ phydm_seq_sorting( if (tmp_a < tmp_b) { p_value[j] = tmp_b; p_value[j+1] = tmp_a; - + rank_idx[j] = tmp_idx_b; rank_idx[j+1] = tmp_idx_a; } - } + } } for (i = 0; i < seq_length; i++) { p_idx_out[rank_idx[i]] = i+1; /**/ } - - + + } VOID @@ -180,7 +178,7 @@ ODM_InitMpDriverStatus( prtl8192cd_priv priv = pDM_Odm->priv; pDM_Odm->mp_mode = (BOOLEAN)priv->pshare->rf_ft_var.mp_specific; - + #endif } @@ -223,19 +221,19 @@ PHYDM_InitTRXAntennaSetting( } else if (pDM_Odm->SupportICType & (ODM_RTL8723D | ODM_RTL8821C)) { pDM_Odm->TXAntStatus = 0x1; pDM_Odm->RXAntStatus = 0x1; - + } /*#endif*/ } void -phydm_traffic_load_decision( +phydm_traffic_load_decision( IN PVOID pDM_VOID ) { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; pSWAT_T pDM_SWAT_Table = &pDM_Odm->DM_SWAT_Table; - + /*---trafic load decision---*/ pDM_Odm->curTxOkCnt = *(pDM_Odm->pNumTxBytesUnicast) - pDM_Odm->lastTxOkCnt; pDM_Odm->curRxOkCnt = *(pDM_Odm->pNumRxBytesUnicast) - pDM_Odm->lastRxOkCnt; @@ -249,25 +247,25 @@ phydm_traffic_load_decision( pDM_Odm->tx_tp = ((pDM_Odm->tx_tp)>>1) + (u4Byte)(((pDM_Odm->curTxOkCnt)>>18)>>1); /* <<3(8bit), >>20(10^6,M), >>1(2sec)*/ pDM_Odm->rx_tp = ((pDM_Odm->rx_tp)>>1) + (u4Byte)(((pDM_Odm->curRxOkCnt)>>18)>>1); /* <<3(8bit), >>20(10^6,M), >>1(2sec)*/ #endif - pDM_Odm->total_tp = pDM_Odm->tx_tp + pDM_Odm->rx_tp; - + pDM_Odm->total_tp = pDM_Odm->tx_tp + pDM_Odm->rx_tp; + pDM_Odm->pre_TrafficLoad = pDM_Odm->TrafficLoad; - + if (pDM_Odm->curTxOkCnt > 1875000 || pDM_Odm->curRxOkCnt > 1875000) { /* ( 1.875M * 8bit ) / 2sec= 7.5M bits /sec )*/ - + pDM_Odm->TrafficLoad = TRAFFIC_HIGH; /**/ } else if (pDM_Odm->curTxOkCnt > 500000 || pDM_Odm->curRxOkCnt > 500000) { /*( 0.5M * 8bit ) / 2sec = 2M bits /sec )*/ - + pDM_Odm->TrafficLoad = TRAFFIC_MID; /**/ } else if (pDM_Odm->curTxOkCnt > 100000 || pDM_Odm->curRxOkCnt > 100000) { /*( 0.1M * 8bit ) / 2sec = 0.4M bits /sec )*/ - + pDM_Odm->TrafficLoad = TRAFFIC_LOW; /**/ } else { - + pDM_Odm->TrafficLoad = TRAFFIC_ULTRA_LOW; /**/ } @@ -283,7 +281,7 @@ phydm_config_ofdm_tx_path( #if (RTL8192E_SUPPORT == 1) if (pDM_Odm->SupportICType & (ODM_RTL8192E)) { - + if (path == PHYDM_A) { ODM_SetBBReg(pDM_Odm, 0x90c , bMaskDWord, 0x81321311); /**/ @@ -294,8 +292,8 @@ phydm_config_ofdm_tx_path( ODM_SetBBReg(pDM_Odm, 0x90c , bMaskDWord, 0x83321333); /**/ } - - + + } #endif } @@ -310,7 +308,7 @@ phydm_config_ofdm_rx_path( #if (RTL8192E_SUPPORT == 1) if (pDM_Odm->SupportICType & (ODM_RTL8192E)) { - + if (path == PHYDM_A) { ofdm_rx_path = 1; /**/ @@ -321,7 +319,7 @@ phydm_config_ofdm_rx_path( ofdm_rx_path = 3; /**/ } - + ODM_SetBBReg(pDM_Odm, 0xC04 , 0xff, (((ofdm_rx_path)<<4)|ofdm_rx_path)); ODM_SetBBReg(pDM_Odm, 0xD04 , 0xf, ofdm_rx_path); } @@ -335,7 +333,7 @@ phydm_config_cck_rx_antenna_init( { #if (RTL8192E_SUPPORT == 1) if (pDM_Odm->SupportICType & (ODM_RTL8192E)) { - + /*CCK 2R CCA parameters*/ ODM_SetBBReg(pDM_Odm, 0xa2c , BIT18, 1); /*enable 2R Rx path*/ ODM_SetBBReg(pDM_Odm, 0xa2c , BIT22, 1); /*enable 2R MRC*/ @@ -360,7 +358,7 @@ phydm_config_cck_rx_path( #if (RTL8192E_SUPPORT == 1) if (pDM_Odm->SupportICType & (ODM_RTL8192E)) { - + if (path == PHYDM_A) { path_div_select = 0; cck_1_path = 0; @@ -368,21 +366,21 @@ phydm_config_cck_rx_path( } else if (path == PHYDM_B) { path_div_select = 0; cck_1_path = 1; - cck_2_path = 1; + cck_2_path = 1; } else if (path == PHYDM_AB) { - + if (path_div_en == CCA_PATHDIV_ENABLE) path_div_select = 1; - + cck_1_path = 0; - cck_2_path = 1; - + cck_2_path = 1; + } - + ODM_SetBBReg(pDM_Odm, 0xa04 , (BIT27|BIT26), cck_1_path); ODM_SetBBReg(pDM_Odm, 0xa04 , (BIT25|BIT24), cck_2_path); ODM_SetBBReg(pDM_Odm, 0xa74 , BIT8, path_div_select); - + } #endif } @@ -403,7 +401,7 @@ phydm_config_trx_path( /* CCK */ if (dm_value[0] == 0) { - + if (dm_value[1] == 1) { /*TX*/ if (dm_value[2] == 1) ODM_SetBBReg(pDM_Odm, 0xa04, 0xf0000000, 0x8); @@ -412,9 +410,9 @@ phydm_config_trx_path( else if (dm_value[2] == 3) ODM_SetBBReg(pDM_Odm, 0xa04, 0xf0000000, 0xc); } else if (dm_value[1] == 2) { /*RX*/ - + phydm_config_cck_rx_antenna_init(pDM_Odm); - + if (dm_value[2] == 1) { phydm_config_cck_rx_path(pDM_Odm, PHYDM_A, CCA_PATHDIV_DISABLE); } else if (dm_value[2] == 2) { @@ -426,7 +424,7 @@ phydm_config_trx_path( phydm_config_cck_rx_path(pDM_Odm, PHYDM_B, CCA_PATHDIV_DISABLE); } } - } + } /* OFDM */ else if (dm_value[0] == 1) { @@ -447,7 +445,7 @@ phydm_config_trx_path( (dm_value[2] & 0x4)?"C":"", (dm_value[2] & 0x8)?"D":"" )); - + } VOID @@ -460,19 +458,17 @@ phydm_Init_cck_setting( pDM_Odm->bCckHighPower = (BOOLEAN) ODM_GetBBReg(pDM_Odm, ODM_REG(CCK_RPT_FORMAT,pDM_Odm), ODM_BIT(CCK_RPT_FORMAT,pDM_Odm)); #if (RTL8192E_SUPPORT == 1) - if(pDM_Odm->SupportICType & (ODM_RTL8192E)) - { + if (pDM_Odm->SupportICType & (ODM_RTL8192E)) { #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) phydm_config_cck_rx_antenna_init(pDM_Odm); phydm_config_cck_rx_path(pDM_Odm, PHYDM_A, CCA_PATHDIV_DISABLE); #endif - + /* 0x824[9] = 0x82C[9] = 0xA80[7] those registers setting should be equal or CCK RSSI report may be incorrect */ value_824 = ODM_GetBBReg(pDM_Odm, 0x824, BIT9); value_82c = ODM_GetBBReg(pDM_Odm, 0x82c, BIT9); - - if(value_824 != value_82c) - { + + if (value_824 != value_82c) { ODM_SetBBReg(pDM_Odm, 0x82c , BIT9, value_824); } ODM_SetBBReg(pDM_Odm, 0xa80 , BIT7, value_824); @@ -481,19 +477,19 @@ phydm_Init_cck_setting( ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("cck_agc_report_type = (( %d )), ExtLNAGain = (( %d ))\n", pDM_Odm->cck_agc_report_type, pDM_Odm->ExtLNAGain)); } #endif - + #if ((RTL8703B_SUPPORT == 1) || (RTL8723D_SUPPORT == 1)) if (pDM_Odm->SupportICType & (ODM_RTL8703B|ODM_RTL8723D)) { pDM_Odm->cck_agc_report_type = ODM_GetBBReg(pDM_Odm, 0x950, BIT11) ? 1 : 0; /*1: 4bit LNA , 0: 3bit LNA */ - + if (pDM_Odm->cck_agc_report_type != 1) { DbgPrint("[Warning] 8703B/8723D CCK should be 4bit LNA, ie. 0x950[11] = 1\n"); /**/ } } #endif - + #if ((RTL8723D_SUPPORT == 1) || (RTL8822B_SUPPORT == 1) || (RTL8197F_SUPPORT == 1)) if (pDM_Odm->SupportICType & (ODM_RTL8723D|ODM_RTL8822B|ODM_RTL8197F)) { @@ -501,7 +497,7 @@ phydm_Init_cck_setting( } else #endif pDM_Odm->cck_new_agc = FALSE; - + } VOID @@ -535,7 +531,7 @@ odm_CommonInfoSelfInit( { phydm_Init_cck_setting(pDM_Odm); pDM_Odm->RFPathRxEnable = (u1Byte) ODM_GetBBReg(pDM_Odm, ODM_REG(BB_RX_PATH,pDM_Odm), ODM_BIT(BB_RX_PATH,pDM_Odm)); -#if (DM_ODM_SUPPORT_TYPE != ODM_CE) +#if (DM_ODM_SUPPORT_TYPE != ODM_CE) pDM_Odm->pbNet_closed = &pDM_Odm->BOOLEAN_temp; #endif @@ -559,7 +555,7 @@ odm_CommonInfoSelfInit( pDM_Odm->TrafficLoad = TRAFFIC_LOW; pDM_Odm->nbi_set_result = 0; - + } VOID @@ -602,8 +598,7 @@ odm_CommonInfoSelfUpdate( /* THis variable cannot be used because it is wrong*/ #if (DM_ODM_SUPPORT_TYPE == ODM_AP) - if (*(pDM_Odm->pBandWidth) == ODM_BW40M) - { + if (*(pDM_Odm->pBandWidth) == ODM_BW40M) { if (*(pDM_Odm->pSecChOffset) == 1) pDM_Odm->ControlChannel = *(pDM_Odm->pChannel) + 2; else if (*(pDM_Odm->pSecChOffset) == 2) @@ -625,14 +620,11 @@ odm_CommonInfoSelfUpdate( pDM_Odm->ControlChannel = *(pDM_Odm->pChannel); #endif - for (i=0; ipODM_StaInfo[i]; - if(IS_STA_VALID(pEntry)) - { + if (IS_STA_VALID(pEntry)) { EntryCnt++; - if(EntryCnt==1) - { + if (EntryCnt==1) { OneEntry_MACID=i; } @@ -640,15 +632,14 @@ odm_CommonInfoSelfUpdate( ma_rx_tp = (pEntry->rx_byte_cnt_LowMAW)<<3; /* low moving average RX TP ( bit /sec)*/ ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_RA_DBG, ODM_DBG_LOUD, ("ClientTP[%d]: ((%d )) bit/sec\n", i, ma_rx_tp)); - + if (ma_rx_tp > ACTIVE_TP_THRESHOLD) num_active_client++; #endif } } - - if(EntryCnt == 1) - { + + if (EntryCnt == 1) { pDM_Odm->bOneEntryOnly = TRUE; pDM_Odm->OneEntry_MACID=OneEntry_MACID; } @@ -657,15 +648,15 @@ odm_CommonInfoSelfUpdate( pDM_Odm->pre_number_linked_client = pDM_Odm->number_linked_client; pDM_Odm->pre_number_active_client = pDM_Odm->number_active_client; - + pDM_Odm->number_linked_client = EntryCnt; - pDM_Odm->number_active_client = num_active_client; + pDM_Odm->number_active_client = num_active_client; /* Update MP driver status*/ ODM_UpdateMpDriverStatus(pDM_Odm); /*Traffic load information update*/ - phydm_traffic_load_decision(pDM_Odm); + phydm_traffic_load_decision(pDM_Odm); } VOID @@ -691,7 +682,7 @@ PhyDM_Get_Structure( case PHYDM_FALSEALMCNT: pStruct = &FalseAlmCnt; break; - + case PHYDM_CFOTRACK: pStruct = &DM_CfoTrack; break; @@ -699,7 +690,7 @@ PhyDM_Get_Structure( case PHYDM_ADAPTIVITY: pStruct = &(pDM_Odm->Adaptivity); break; - + default: break; } @@ -709,7 +700,7 @@ PhyDM_Get_Structure( case PHYDM_FALSEALMCNT: pStruct = &(pDM_Odm->FalseAlmCnt); break; - + case PHYDM_CFOTRACK: pStruct = &(pDM_Odm->DM_CfoTrack); break; @@ -717,7 +708,7 @@ PhyDM_Get_Structure( case PHYDM_ADAPTIVITY: pStruct = &(pDM_Odm->Adaptivity); break; - + default: break; } @@ -732,7 +723,7 @@ odm_HWSetting( ) { #if (RTL8821A_SUPPORT == 1) - if(pDM_Odm->SupportICType & ODM_RTL8821) + if (pDM_Odm->SupportICType & ODM_RTL8821) odm_HWSetting_8821A(pDM_Odm); #endif @@ -774,7 +765,7 @@ ODM_DMInit( odm_PathDiversityInit(pDM_Odm); odm_DynamicTxPowerInit(pDM_Odm); phydm_initRaInfo(pDM_Odm); - + #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN | ODM_CE)) #ifdef BEAMFORMING_VERSION_1 if (pHalData->BeamformingVersion == BEAMFORMING_VERSION_1) @@ -782,29 +773,27 @@ ODM_DMInit( { phydm_Beamforming_Init(pDM_Odm); } -#endif +#endif - if(pDM_Odm->SupportICType & ODM_IC_11N_SERIES) - { + if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) { odm_DynamicBBPowerSavingInit(pDM_Odm); #if (RTL8188E_SUPPORT == 1) - if(pDM_Odm->SupportICType==ODM_RTL8188E) - { + if (pDM_Odm->SupportICType==ODM_RTL8188E) { ODM_PrimaryCCA_Init(pDM_Odm); ODM_RAInfo_Init_all(pDM_Odm); } #endif #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE)) - + #if (RTL8723B_SUPPORT == 1) - if(pDM_Odm->SupportICType == ODM_RTL8723B) + if (pDM_Odm->SupportICType == ODM_RTL8723B) odm_SwAntDetectInit(pDM_Odm); #endif #if (RTL8192E_SUPPORT == 1) - if(pDM_Odm->SupportICType==ODM_RTL8192E) + if (pDM_Odm->SupportICType==ODM_RTL8192E) odm_PrimaryCCA_Check_Init(pDM_Odm); #endif @@ -821,7 +810,7 @@ ODM_DMReset( { pDIG_T pDM_DigTable = &pDM_Odm->DM_DigTable; - ODM_AntDivReset(pDM_Odm); + ODM_AntDivReset(pDM_Odm); phydm_setEDCCAThresholdAPI(pDM_Odm, pDM_DigTable->CurIGValue); } @@ -840,10 +829,9 @@ phydm_support_ability_debug( u4Byte used = *_used; u4Byte out_len = *_out_len; - pre_support_ability = pDM_Odm->SupportAbility ; + pre_support_ability = pDM_Odm->SupportAbility ; PHYDM_SNPRINTF((output+used, out_len-used,"\n%s\n", "================================")); - if(dm_value[0] == 100) - { + if (dm_value[0] == 100) { PHYDM_SNPRINTF((output+used, out_len-used, "[Supportability] PhyDM Selection\n")); PHYDM_SNPRINTF((output+used, out_len-used,"%s\n", "================================")); PHYDM_SNPRINTF((output+used, out_len-used, "00. (( %s ))DIG\n", ((pDM_Odm->SupportAbility & ODM_BB_DIG)?("V"):(".")))); @@ -851,20 +839,20 @@ phydm_support_ability_debug( PHYDM_SNPRINTF((output+used, out_len-used, "02. (( %s ))DYNAMIC_TXPWR\n", ((pDM_Odm->SupportAbility & ODM_BB_DYNAMIC_TXPWR)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "03. (( %s ))FA_CNT\n", ((pDM_Odm->SupportAbility & ODM_BB_FA_CNT)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "04. (( %s ))RSSI_MONITOR\n", ((pDM_Odm->SupportAbility & ODM_BB_RSSI_MONITOR)?("V"):(".")))); - PHYDM_SNPRINTF((output+used, out_len-used, "05. (( %s ))CCK_PD\n", ((pDM_Odm->SupportAbility & ODM_BB_CCK_PD)?("V"):(".")))); + PHYDM_SNPRINTF((output+used, out_len-used, "05. (( %s ))CCK_PD\n", ((pDM_Odm->SupportAbility & ODM_BB_CCK_PD)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "06. (( %s ))ANT_DIV\n", ((pDM_Odm->SupportAbility & ODM_BB_ANT_DIV)?("V"):(".")))); - PHYDM_SNPRINTF((output+used, out_len-used, "08. (( %s ))PWR_TRAIN\n", ((pDM_Odm->SupportAbility & ODM_BB_PWR_TRAIN)?("V"):(".")))); + PHYDM_SNPRINTF((output+used, out_len-used, "08. (( %s ))PWR_TRAIN\n", ((pDM_Odm->SupportAbility & ODM_BB_PWR_TRAIN)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "09. (( %s ))RATE_ADAPTIVE\n", ((pDM_Odm->SupportAbility & ODM_BB_RATE_ADAPTIVE)?("V"):(".")))); - PHYDM_SNPRINTF((output+used, out_len-used, "10. (( %s ))PATH_DIV\n", ((pDM_Odm->SupportAbility & ODM_BB_PATH_DIV)?("V"):(".")))); - PHYDM_SNPRINTF((output+used, out_len-used, "13. (( %s ))ADAPTIVITY\n", ((pDM_Odm->SupportAbility & ODM_BB_ADAPTIVITY)?("V"):(".")))); + PHYDM_SNPRINTF((output+used, out_len-used, "10. (( %s ))PATH_DIV\n", ((pDM_Odm->SupportAbility & ODM_BB_PATH_DIV)?("V"):(".")))); + PHYDM_SNPRINTF((output+used, out_len-used, "13. (( %s ))ADAPTIVITY\n", ((pDM_Odm->SupportAbility & ODM_BB_ADAPTIVITY)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "14. (( %s ))CFO_TRACKING\n", ((pDM_Odm->SupportAbility & ODM_BB_CFO_TRACKING)?("V"):(".")))); - PHYDM_SNPRINTF((output+used, out_len-used, "15. (( %s ))NHM_CNT\n", ((pDM_Odm->SupportAbility & ODM_BB_NHM_CNT)?("V"):(".")))); + PHYDM_SNPRINTF((output+used, out_len-used, "15. (( %s ))NHM_CNT\n", ((pDM_Odm->SupportAbility & ODM_BB_NHM_CNT)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "16. (( %s ))PRIMARY_CCA\n", ((pDM_Odm->SupportAbility & ODM_BB_PRIMARY_CCA)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "17. (( %s ))TXBF\n", ((pDM_Odm->SupportAbility & ODM_BB_TXBF)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "18. (( %s ))DYNAMIC_ARFR\n", ((pDM_Odm->SupportAbility & ODM_BB_DYNAMIC_ARFR)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "20. (( %s ))EDCA_TURBO\n", ((pDM_Odm->SupportAbility & ODM_MAC_EDCA_TURBO)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "21. (( %s ))EARLY_MODE\n", ((pDM_Odm->SupportAbility & ODM_MAC_EARLY_MODE)?("V"):(".")))); - PHYDM_SNPRINTF((output+used, out_len-used, "24. (( %s ))TX_PWR_TRACK\n", ((pDM_Odm->SupportAbility & ODM_RF_TX_PWR_TRACK)?("V"):(".")))); + PHYDM_SNPRINTF((output+used, out_len-used, "24. (( %s ))TX_PWR_TRACK\n", ((pDM_Odm->SupportAbility & ODM_RF_TX_PWR_TRACK)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "25. (( %s ))RX_GAIN_TRACK\n", ((pDM_Odm->SupportAbility & ODM_RF_RX_GAIN_TRACK)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "26. (( %s ))RF_CALIBRATION\n", ((pDM_Odm->SupportAbility & ODM_RF_CALIBRATION)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used,"%s\n", "================================")); @@ -874,31 +862,25 @@ phydm_support_ability_debug( { pDM_Odm->SupportAbility = 0 ; DbgPrint("Disable all SupportAbility components \n"); - PHYDM_SNPRINTF((output+used, out_len-used,"%s\n", "Disable all SupportAbility components")); + PHYDM_SNPRINTF((output+used, out_len-used,"%s\n", "Disable all SupportAbility components")); } */ - else - { + else { - if(dm_value[1] == 1) //enable - { + if (dm_value[1] == 1) { //enable pDM_Odm->SupportAbility |= BIT(dm_value[0]) ; - if(BIT(dm_value[0]) & ODM_BB_PATH_DIV) - { + if (BIT(dm_value[0]) & ODM_BB_PATH_DIV) { odm_PathDiversityInit(pDM_Odm); } } - else if(dm_value[1] == 2) //disable - { + else if (dm_value[1] == 2) { //disable pDM_Odm->SupportAbility &= ~(BIT(dm_value[0])) ; - } - else - { + } else { //DbgPrint("\n[Warning!!!] 1:enable, 2:disable \n\n"); PHYDM_SNPRINTF((output+used, out_len-used,"%s\n", "[Warning!!!] 1:enable, 2:disable")); } } - PHYDM_SNPRINTF((output+used, out_len-used,"pre-SupportAbility = 0x%x\n", pre_support_ability )); + PHYDM_SNPRINTF((output+used, out_len-used,"pre-SupportAbility = 0x%x\n", pre_support_ability )); PHYDM_SNPRINTF((output+used, out_len-used,"Curr-SupportAbility = 0x%x\n", pDM_Odm->SupportAbility )); PHYDM_SNPRINTF((output+used, out_len-used,"%s\n", "================================")); } @@ -911,15 +893,15 @@ VOID ODM_DMWatchdog_LPS( IN PDM_ODM_T pDM_Odm ) -{ +{ odm_CommonInfoSelfUpdate(pDM_Odm); odm_FalseAlarmCounterStatistics(pDM_Odm); odm_RSSIMonitorCheck(pDM_Odm); - odm_DIGbyRSSI_LPS(pDM_Odm); + odm_DIGbyRSSI_LPS(pDM_Odm); odm_CCKPacketDetectionThresh(pDM_Odm); odm_CommonInfoSelfReset(pDM_Odm); - if(*(pDM_Odm->pbPowerSaving)==TRUE) + if (*(pDM_Odm->pbPowerSaving)==TRUE) return; } #endif @@ -940,17 +922,16 @@ ODM_DMWatchdog( #if (DM_ODM_SUPPORT_TYPE == ODM_AP) { prtl8192cd_priv priv = pDM_Odm->priv; - if( (priv->auto_channel != 0) && (priv->auto_channel != 2) )//if ACS running, do not do FA/CCA counter read + if ( (priv->auto_channel != 0) && (priv->auto_channel != 2) )//if ACS running, do not do FA/CCA counter read return; } -#endif +#endif odm_FalseAlarmCounterStatistics(pDM_Odm); phydm_NoisyDetection(pDM_Odm); - + odm_RSSIMonitorCheck(pDM_Odm); - if(*(pDM_Odm->pbPowerSaving) == TRUE) - { + if (*(pDM_Odm->pbPowerSaving) == TRUE) { odm_DIGbyRSSI_LPS(pDM_Odm); { pDIG_T pDM_DigTable = &pDM_Odm->DM_DigTable; @@ -962,7 +943,7 @@ ODM_DMWatchdog( ODM_RT_TRACE(pDM_Odm,ODM_COMP_COMMON, ODM_DBG_LOUD, ("DMWatchdog in power saving mode\n")); return; } - + Phydm_CheckAdaptivity(pDM_Odm); odm_UpdatePowerTrainingState(pDM_Odm); odm_DIG(pDM_Odm); @@ -971,7 +952,7 @@ ODM_DMWatchdog( Phydm_Adaptivity(pDM_Odm, pDM_DigTable->CurIGValue); } odm_CCKPacketDetectionThresh(pDM_Odm); - + phydm_ra_info_watchdog(pDM_Odm); odm_EdcaTurboCheck(pDM_Odm); odm_PathDiversity(pDM_Odm); @@ -984,9 +965,8 @@ ODM_DMWatchdog( phydm_rf_watchdog(pDM_Odm); - if(pDM_Odm->SupportICType & ODM_IC_11N_SERIES) - { - + if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) { + #if (RTL8188E_SUPPORT == 1) if (pDM_Odm->SupportICType == ODM_RTL8188E) ODM_DynamicPrimaryCCA(pDM_Odm); @@ -995,8 +975,8 @@ ODM_DMWatchdog( #if( DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE)) #if (RTL8192E_SUPPORT == 1) - if(pDM_Odm->SupportICType==ODM_RTL8192E) - odm_DynamicPrimaryCCA_Check(pDM_Odm); + if (pDM_Odm->SupportICType==ODM_RTL8192E) + odm_DynamicPrimaryCCA_Check(pDM_Odm); #endif #endif } @@ -1006,7 +986,7 @@ ODM_DMWatchdog( #endif odm_CommonInfoSelfReset(pDM_Odm); - + } @@ -1017,7 +997,7 @@ VOID ODM_CmnInfoInit( IN PDM_ODM_T pDM_Odm, IN ODM_CMNINFO_E CmnInfo, - IN u4Byte Value + IN u4Byte Value ) { // @@ -1047,7 +1027,7 @@ ODM_CmnInfoInit( case ODM_CMNINFO_MP_TEST_CHIP: pDM_Odm->bIsMPChip= (u1Byte)Value; break; - + case ODM_CMNINFO_IC_TYPE: pDM_Odm->SupportICType = Value; break; @@ -1068,14 +1048,14 @@ ODM_CmnInfoInit( case ODM_CMNINFO_RF_ANTENNA_TYPE: pDM_Odm->AntDivType= (u1Byte)Value; break; - + case ODM_CMNINFO_WITH_EXT_ANTENNA_SWITCH: pDM_Odm->with_extenal_ant_switch = (u1Byte)Value; - break; - + break; + case ODM_CMNINFO_BE_FIX_TX_ANT: pDM_Odm->DM_FatTable.b_fix_tx_ant = (u1Byte)Value; - break; + break; case ODM_CMNINFO_BOARD_TYPE: if (!pDM_Odm->bInitHwInfoByRfe) @@ -1111,17 +1091,17 @@ ODM_CmnInfoInit( if (!pDM_Odm->bInitHwInfoByRfe) pDM_Odm->TypeGPA = (u2Byte)Value; break; - + case ODM_CMNINFO_APA: if (!pDM_Odm->bInitHwInfoByRfe) pDM_Odm->TypeAPA = (u2Byte)Value; break; - + case ODM_CMNINFO_GLNA: if (!pDM_Odm->bInitHwInfoByRfe) pDM_Odm->TypeGLNA = (u2Byte)Value; break; - + case ODM_CMNINFO_ALNA: if (!pDM_Odm->bInitHwInfoByRfe) pDM_Odm->TypeALNA = (u2Byte)Value; @@ -1141,7 +1121,7 @@ ODM_CmnInfoInit( break; case ODM_CMNINFO_BWIFI_TEST: pDM_Odm->WIFITest = (u1Byte)Value; - break; + break; case ODM_CMNINFO_SMART_CONCURRENT: pDM_Odm->bDualMacSmartConcurrent = (BOOLEAN )Value; break; @@ -1171,11 +1151,11 @@ ODM_CmnInfoInit( pDM_Odm->DFS_RegionDomain = (u1Byte)Value; break; #endif - //To remove the compiler warning, must add an empty default statement to handle the other values. + //To remove the compiler warning, must add an empty default statement to handle the other values. default: //do nothing - break; - + break; + } } @@ -1185,7 +1165,7 @@ VOID ODM_CmnInfoHook( IN PDM_ODM_T pDM_Odm, IN ODM_CMNINFO_E CmnInfo, - IN PVOID pValue + IN PVOID pValue ) { // @@ -1199,7 +1179,7 @@ ODM_CmnInfoHook( case ODM_CMNINFO_MAC_PHY_MODE: pDM_Odm->pMacPhyMode = (u1Byte *)pValue; break; - + case ODM_CMNINFO_TX_UNI: pDM_Odm->pNumTxBytesUnicast = (u8Byte *)pValue; break; @@ -1231,7 +1211,7 @@ ODM_CmnInfoHook( case ODM_CMNINFO_CHNL: pDM_Odm->pChannel = (u1Byte *)pValue; break; - + case ODM_CMNINFO_DMSP_GET_VALUE: pDM_Odm->pbGetValueFromOtherMac = (BOOLEAN *)pValue; break; @@ -1291,7 +1271,7 @@ ODM_CmnInfoHook( case ODM_CMNINFO_IS1ANTENNA: pDM_Odm->pIs1Antenna = (BOOLEAN *)pValue; break; - + case ODM_CMNINFO_RFDEFAULTPATH: pDM_Odm->pRFDefaultPath= (u1Byte *)pValue; break; @@ -1328,7 +1308,7 @@ ODM_CmnInfoHook( // break; //case ODM_CMNINFO_BT_COEXIST: - // pDM_Odm->BTCoexist = (BOOLEAN *)pValue; + // pDM_Odm->BTCoexist = (BOOLEAN *)pValue; //case ODM_CMNINFO_STA_STATUS: //pDM_Odm->pODM_StaInfo[] = (PSTA_INFO_T)pValue; @@ -1341,7 +1321,7 @@ ODM_CmnInfoHook( //case ODM_CMNINFO_MAC_STATUS: // pDM_Odm->pMacInfo = (ODM_MAC_INFO *)pValue; // break; - //To remove the compiler warning, must add an empty default statement to handle the other values. + //To remove the compiler warning, must add an empty default statement to handle the other values. default: //do nothing break; @@ -1356,7 +1336,7 @@ ODM_CmnInfoPtrArrayHook( IN PDM_ODM_T pDM_Odm, IN ODM_CMNINFO_E CmnInfo, IN u2Byte Index, - IN PVOID pValue + IN PVOID pValue ) { // @@ -1366,10 +1346,10 @@ ODM_CmnInfoPtrArrayHook( { // // Dynamic call by reference pointer. - // + // case ODM_CMNINFO_STA_STATUS: pDM_Odm->pODM_StaInfo[Index] = (PSTA_INFO_T)pValue; - + if (IS_STA_VALID(pDM_Odm->pODM_StaInfo[Index])) #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) pDM_Odm->platform2phydm_macid_table[((PSTA_INFO_T)pValue)->AssociatedMacId] = Index; /*AssociatedMacId are unique bttween different Adapter*/ @@ -1378,14 +1358,14 @@ ODM_CmnInfoPtrArrayHook( #elif (DM_ODM_SUPPORT_TYPE == ODM_CE) pDM_Odm->platform2phydm_macid_table[((PSTA_INFO_T)pValue)->mac_id] = Index; #endif - - break; - //To remove the compiler warning, must add an empty default statement to handle the other values. + + break; + //To remove the compiler warning, must add an empty default statement to handle the other values. default: //do nothing break; } - + } @@ -1396,7 +1376,7 @@ VOID ODM_CmnInfoUpdate( IN PDM_ODM_T pDM_Odm, IN u4Byte CmnInfo, - IN u8Byte Value + IN u8Byte Value ) { // @@ -1407,7 +1387,7 @@ ODM_CmnInfoUpdate( case ODM_CMNINFO_LINK_IN_PROGRESS: pDM_Odm->bLinkInProcess = (BOOLEAN)Value; break; - + case ODM_CMNINFO_ABILITY: pDM_Odm->SupportAbility = (u4Byte)Value; break; @@ -1431,7 +1411,7 @@ ODM_CmnInfoUpdate( case ODM_CMNINFO_STATION_STATE: pDM_Odm->bsta_state = (BOOLEAN)Value; break; - + case ODM_CMNINFO_RSSI_MIN: pDM_Odm->RSSI_Min= (u1Byte)Value; break; @@ -1455,30 +1435,30 @@ ODM_CmnInfoUpdate( case ODM_CMNINFO_BT_ENABLED: pDM_Odm->bBtEnabled = (BOOLEAN)Value; break; - + case ODM_CMNINFO_BT_HS_CONNECT_PROCESS: pDM_Odm->bBtConnectProcess = (BOOLEAN)Value; break; - + case ODM_CMNINFO_BT_HS_RSSI: pDM_Odm->btHsRssi = (u1Byte)Value; break; - + case ODM_CMNINFO_BT_OPERATION: pDM_Odm->bBtHsOperation = (BOOLEAN)Value; break; case ODM_CMNINFO_BT_LIMITED_DIG: pDM_Odm->bBtLimitedDig = (BOOLEAN)Value; - break; + break; case ODM_CMNINFO_BT_DIG: pDM_Odm->btHsDigVal = (u1Byte)Value; break; - + case ODM_CMNINFO_BT_BUSY: pDM_Odm->bBtBusy = (BOOLEAN)Value; - break; + break; case ODM_CMNINFO_BT_DISABLE_EDCA: pDM_Odm->bBtDisableEdcaTurbo = (BOOLEAN)Value; @@ -1534,14 +1514,14 @@ ODM_CmnInfoUpdate( case ODM_CMNINFO_CHNL: pDM_Odm->Channel = (u1Byte)Value; - break; -*/ + break; +*/ default: //do nothing break; } - + } @@ -1553,59 +1533,59 @@ ODM_InitAllWorkItems(IN PDM_ODM_T pDM_Odm ) PADAPTER pAdapter = pDM_Odm->Adapter; #if USE_WORKITEM #ifdef CONFIG_S0S1_SW_ANTENNA_DIVERSITY - ODM_InitializeWorkItem( pDM_Odm, - &pDM_Odm->DM_SWAT_Table.phydm_SwAntennaSwitchWorkitem, + ODM_InitializeWorkItem( pDM_Odm, + &pDM_Odm->DM_SWAT_Table.phydm_SwAntennaSwitchWorkitem, (RT_WORKITEM_CALL_BACK)ODM_SW_AntDiv_WorkitemCallback, (PVOID)pAdapter, "AntennaSwitchWorkitem"); #endif #ifdef CONFIG_HL_SMART_ANTENNA_TYPE1 - ODM_InitializeWorkItem(pDM_Odm, - &pDM_Odm->dm_sat_table.hl_smart_antenna_workitem, + ODM_InitializeWorkItem(pDM_Odm, + &pDM_Odm->dm_sat_table.hl_smart_antenna_workitem, (RT_WORKITEM_CALL_BACK)phydm_beam_switch_workitem_callback, (PVOID)pAdapter, "hl_smart_ant_workitem"); - ODM_InitializeWorkItem(pDM_Odm, - &pDM_Odm->dm_sat_table.hl_smart_antenna_decision_workitem, + ODM_InitializeWorkItem(pDM_Odm, + &pDM_Odm->dm_sat_table.hl_smart_antenna_decision_workitem, (RT_WORKITEM_CALL_BACK)phydm_beam_decision_workitem_callback, (PVOID)pAdapter, "hl_smart_ant_decision_workitem"); #endif - + ODM_InitializeWorkItem( pDM_Odm, - &(pDM_Odm->PathDivSwitchWorkitem), - (RT_WORKITEM_CALL_BACK)odm_PathDivChkAntSwitchWorkitemCallback, + &(pDM_Odm->PathDivSwitchWorkitem), + (RT_WORKITEM_CALL_BACK)odm_PathDivChkAntSwitchWorkitemCallback, (PVOID)pAdapter, "SWAS_WorkItem"); ODM_InitializeWorkItem( pDM_Odm, - &(pDM_Odm->CCKPathDiversityWorkitem), - (RT_WORKITEM_CALL_BACK)odm_CCKTXPathDiversityWorkItemCallback, + &(pDM_Odm->CCKPathDiversityWorkitem), + (RT_WORKITEM_CALL_BACK)odm_CCKTXPathDiversityWorkItemCallback, (PVOID)pAdapter, "CCKTXPathDiversityWorkItem"); ODM_InitializeWorkItem( pDM_Odm, - &(pDM_Odm->MPT_DIGWorkitem), - (RT_WORKITEM_CALL_BACK)odm_MPT_DIGWorkItemCallback, + &(pDM_Odm->MPT_DIGWorkitem), + (RT_WORKITEM_CALL_BACK)odm_MPT_DIGWorkItemCallback, (PVOID)pAdapter, "MPT_DIGWorkitem"); ODM_InitializeWorkItem( pDM_Odm, - &(pDM_Odm->RaRptWorkitem), - (RT_WORKITEM_CALL_BACK)ODM_UpdateInitRateWorkItemCallback, + &(pDM_Odm->RaRptWorkitem), + (RT_WORKITEM_CALL_BACK)ODM_UpdateInitRateWorkItemCallback, (PVOID)pAdapter, "RaRptWorkitem"); #if( defined(CONFIG_5G_CG_SMART_ANT_DIVERSITY) ) ||( defined(CONFIG_2G_CG_SMART_ANT_DIVERSITY) ) ODM_InitializeWorkItem( pDM_Odm, - &(pDM_Odm->FastAntTrainingWorkitem), - (RT_WORKITEM_CALL_BACK)odm_FastAntTrainingWorkItemCallback, + &(pDM_Odm->FastAntTrainingWorkitem), + (RT_WORKITEM_CALL_BACK)odm_FastAntTrainingWorkItemCallback, (PVOID)pAdapter, "FastAntTrainingWorkitem"); #endif @@ -1619,14 +1599,14 @@ ODM_InitAllWorkItems(IN PDM_ODM_T pDM_Odm ) (RT_WORKITEM_CALL_BACK)halComTxbf_EnterWorkItemCallback, (PVOID)pAdapter, "Txbf_EnterWorkItem"); - + ODM_InitializeWorkItem( pDM_Odm, &(pDM_Odm->BeamformingInfo.TxbfInfo.Txbf_LeaveWorkItem), (RT_WORKITEM_CALL_BACK)halComTxbf_LeaveWorkItemCallback, (PVOID)pAdapter, "Txbf_LeaveWorkItem"); - + ODM_InitializeWorkItem( pDM_Odm, &(pDM_Odm->BeamformingInfo.TxbfInfo.Txbf_FwNdpaWorkItem), @@ -1700,7 +1680,7 @@ ODM_FreeAllWorkItems(IN PDM_ODM_T pDM_Odm ) ODM_FreeWorkItem(&(pDM_Odm->dm_sat_table.hl_smart_antenna_decision_workitem)); #endif - ODM_FreeWorkItem(&(pDM_Odm->PathDivSwitchWorkitem)); + ODM_FreeWorkItem(&(pDM_Odm->PathDivSwitchWorkitem)); ODM_FreeWorkItem(&(pDM_Odm->CCKPathDiversityWorkitem)); #if (defined(CONFIG_5G_CG_SMART_ANT_DIVERSITY)) || (defined(CONFIG_2G_CG_SMART_ANT_DIVERSITY)) ODM_FreeWorkItem(&(pDM_Odm->FastAntTrainingWorkitem)); @@ -1759,15 +1739,15 @@ odm_IsLinked( { u4Byte i; BOOLEAN Linked = FALSE; - + for(i=0; ipODM_StaInfo[i]) ) - { + { Linked = TRUE; break; } - + } pDM_Odm->bLinked = Linked; @@ -1776,7 +1756,7 @@ odm_IsLinked( VOID ODM_InitAllTimers( - IN PDM_ODM_T pDM_Odm + IN PDM_ODM_T pDM_Odm ) { #if (defined(CONFIG_PHYDM_ANTENNA_DIVERSITY)) @@ -1785,22 +1765,22 @@ ODM_InitAllTimers( #if (DM_ODM_SUPPORT_TYPE == ODM_AP) #ifdef MP_TEST - if (pDM_Odm->priv->pshare->rf_ft_var.mp_specific) - ODM_InitializeTimer(pDM_Odm, &pDM_Odm->MPT_DIGTimer, - (RT_TIMER_CALL_BACK)odm_MPT_DIGCallback, NULL, "MPT_DIGTimer"); + if (pDM_Odm->priv->pshare->rf_ft_var.mp_specific) + ODM_InitializeTimer(pDM_Odm, &pDM_Odm->MPT_DIGTimer, + (RT_TIMER_CALL_BACK)odm_MPT_DIGCallback, NULL, "MPT_DIGTimer"); #endif #elif(DM_ODM_SUPPORT_TYPE == ODM_WIN) - ODM_InitializeTimer(pDM_Odm, &pDM_Odm->MPT_DIGTimer, + ODM_InitializeTimer(pDM_Odm, &pDM_Odm->MPT_DIGTimer, (RT_TIMER_CALL_BACK)odm_MPT_DIGCallback, NULL, "MPT_DIGTimer"); #endif #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) - ODM_InitializeTimer(pDM_Odm, &pDM_Odm->PathDivSwitchTimer, + ODM_InitializeTimer(pDM_Odm, &pDM_Odm->PathDivSwitchTimer, (RT_TIMER_CALL_BACK)odm_PathDivChkAntSwitchCallback, NULL, "PathDivTimer"); - ODM_InitializeTimer(pDM_Odm, &pDM_Odm->CCKPathDiversityTimer, - (RT_TIMER_CALL_BACK)odm_CCKTXPathDiversityCallback, NULL, "CCKPathDiversityTimer"); + ODM_InitializeTimer(pDM_Odm, &pDM_Odm->CCKPathDiversityTimer, + (RT_TIMER_CALL_BACK)odm_CCKTXPathDiversityCallback, NULL, "CCKPathDiversityTimer"); ODM_InitializeTimer(pDM_Odm, &pDM_Odm->sbdcnt_timer, - (RT_TIMER_CALL_BACK)phydm_sbd_callback, NULL, "SbdTimer"); + (RT_TIMER_CALL_BACK)phydm_sbd_callback, NULL, "SbdTimer"); #if (BEAMFORMING_SUPPORT == 1) ODM_InitializeTimer(pDM_Odm, &pDM_Odm->BeamformingInfo.TxbfInfo.Txbf_FwNdpaTimer, (RT_TIMER_CALL_BACK)halComTxbf_FwNdpaTimerCallback, NULL, "Txbf_FwNdpaTimer"); @@ -1817,16 +1797,16 @@ ODM_InitAllTimers( VOID ODM_CancelAllTimers( - IN PDM_ODM_T pDM_Odm + IN PDM_ODM_T pDM_Odm ) { #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) // - // 2012/01/12 MH Temp BSOD fix. We need to find NIC allocate mem fail reason in + // 2012/01/12 MH Temp BSOD fix. We need to find NIC allocate mem fail reason in // win7 platform. // HAL_ADAPTER_STS_CHK(pDM_Odm) -#endif +#endif #if (defined(CONFIG_PHYDM_ANTENNA_DIVERSITY)) ODM_AntDivTimers(pDM_Odm,CANCEL_ANTDIV_TIMMER); @@ -1862,7 +1842,7 @@ ODM_CancelAllTimers( VOID ODM_ReleaseAllTimers( - IN PDM_ODM_T pDM_Odm + IN PDM_ODM_T pDM_Odm ) { #if (defined(CONFIG_PHYDM_ANTENNA_DIVERSITY)) @@ -1906,7 +1886,7 @@ ODM_ReleaseTimer(pDM_Odm, &pDM_Odm->MPT_DIGTimer); #if (DM_ODM_SUPPORT_TYPE == ODM_AP) VOID ODM_InitAllThreads( - IN PDM_ODM_T pDM_Odm + IN PDM_ODM_T pDM_Odm ) { #ifdef TPT_THREAD @@ -1916,17 +1896,17 @@ ODM_InitAllThreads( VOID ODM_StopAllThreads( - IN PDM_ODM_T pDM_Odm + IN PDM_ODM_T pDM_Odm ) { #ifdef TPT_THREAD kTPT_task_stop(pDM_Odm->priv); #endif } -#endif +#endif -#if( DM_ODM_SUPPORT_TYPE == ODM_WIN) +#if( DM_ODM_SUPPORT_TYPE == ODM_WIN) // // 2011/07/26 MH Add an API for testing IQK fail case. // @@ -1941,19 +1921,17 @@ ODM_CheckPowerStatus( PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); // 2011/07/27 MH We are not testing ready~~!! We may fail to get correct value when init sequence. - if (pMgntInfo->init_adpt_in_progress == TRUE) - { + if (pMgntInfo->init_adpt_in_progress == TRUE) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ODM_CheckPowerStatus Return TRUE, due to initadapter\n")); return TRUE; } - + // // 2011/07/19 MH We can not execute tx pwoer tracking/ LLC calibrate or IQK. // - Adapter->HalFunc.GetHwRegHandler(Adapter, HW_VAR_RF_STATE, (pu1Byte)(&rtState)); - if(Adapter->bDriverStopped || Adapter->bDriverIsGoingToPnpSetPowerSleep || rtState == eRfOff) - { - ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ODM_CheckPowerStatus Return FALSE, due to %d/%d/%d\n", + Adapter->HalFunc.GetHwRegHandler(Adapter, HW_VAR_RF_STATE, (pu1Byte)(&rtState)); + if (Adapter->bDriverStopped || Adapter->bDriverIsGoingToPnpSetPowerSleep || rtState == eRfOff) { + ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ODM_CheckPowerStatus Return FALSE, due to %d/%d/%d\n", Adapter->bDriverStopped, Adapter->bDriverIsGoingToPnpSetPowerSleep, rtState)); return FALSE; } @@ -1980,10 +1958,10 @@ ODM_CheckPowerStatus( // // 2011/07/19 MH We can not execute tx pwoer tracking/ LLC calibrate or IQK. // - Adapter->HalFunc.GetHwRegHandler(Adapter, HW_VAR_RF_STATE, (pu1Byte)(&rtState)); + Adapter->HalFunc.GetHwRegHandler(Adapter, HW_VAR_RF_STATE, (pu1Byte)(&rtState)); if(Adapter->bDriverStopped || Adapter->bDriverIsGoingToPnpSetPowerSleep || rtState == eRfOff) { - ODM_RT_TRACE(pDM_Odm,COMP_INIT, DBG_LOUD, ("ODM_CheckPowerStatus Return FALSE, due to %d/%d/%d\n", + ODM_RT_TRACE(pDM_Odm,COMP_INIT, DBG_LOUD, ("ODM_CheckPowerStatus Return FALSE, due to %d/%d/%d\n", Adapter->bDriverStopped, Adapter->bDriverIsGoingToPnpSetPowerSleep, rtState)); return FALSE; } @@ -2005,7 +1983,7 @@ GetPSDData( //unsigned int val, rfval; //int psd_report; u4Byte psd_report; - + //HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); //Debug Message //val = PHY_QueryBBReg(Adapter,0x908, bMaskDWord); @@ -2026,7 +2004,7 @@ GetPSDData( ODM_SetBBReg(pDM_Odm, 0x808, BIT22, 0); //Read PSD report, Reg8B4[15:0] psd_report = ODM_GetBBReg(pDM_Odm,0x8B4, bMaskDWord) & 0x0000FFFF; - + #if 1//(DEV_BUS_TYPE == RT_PCI_INTERFACE) && ( (RT_PLATFORM == PLATFORM_LINUX) || (RT_PLATFORM == PLATFORM_MACOSX)) psd_report = (u4Byte) (odm_ConvertTo_dB(psd_report))+(u4Byte)(initial_gain_psd-0x1c); #else @@ -2034,11 +2012,11 @@ GetPSDData( #endif return psd_report; - + } #endif -u4Byte +u4Byte odm_ConvertTo_dB( u4Byte Value) { @@ -2048,23 +2026,18 @@ odm_ConvertTo_dB( Value = Value & 0xFFFF; - for (i = 0; i < 12; i++) - { - if (Value <= dB_Invert_Table[i][7]) - { + for (i = 0; i < 12; i++) { + if (Value <= dB_Invert_Table[i][7]) { break; } } - if (i >= 12) - { + if (i >= 12) { return (96); // maximum 96 dB } - for (j = 0; j < 8; j++) - { - if (Value <= dB_Invert_Table[i][j]) - { + for (j = 0; j < 8; j++) { + if (Value <= dB_Invert_Table[i][j]) { break; } } @@ -2074,16 +2047,16 @@ odm_ConvertTo_dB( return (dB); } -u4Byte +u4Byte odm_ConvertTo_linear( u4Byte Value) { u1Byte i; u1Byte j; u4Byte linear; - + /* 1dB~96dB */ - + Value = Value & 0xFF; i = (u1Byte)((Value - 1) >> 3); @@ -2112,22 +2085,20 @@ ODM_AsocEntry_Init( ODM_CmnInfoPtrArrayHook(pDM_OutSrc, ODM_CMNINFO_STA_STATUS, 0, &pLoopAdapter->MgntInfo.DefaultPort[0]); pLoopAdapter->MgntInfo.DefaultPort[0].MultiPortStationIdx = TotalAssocEntryNum; - + adaptercount += 1; - RT_TRACE(COMP_INIT, DBG_LOUD, ("adaptercount=%d\n", adaptercount)); + RT_TRACE(COMP_INIT, DBG_LOUD, ("adaptercount=%d\n", adaptercount)); pLoopAdapter = GetNextExtAdapter(pLoopAdapter); TotalAssocEntryNum +=1; - while(pLoopAdapter) - { - for (index = 0; index MgntInfo.AsocEntry[index]); - pLoopAdapter->MgntInfo.AsocEntry[index].MultiPortStationIdx = TotalAssocEntryNum+index; + pLoopAdapter->MgntInfo.AsocEntry[index].MultiPortStationIdx = TotalAssocEntryNum+index; } - + TotalAssocEntryNum+= index; - if(IS_HARDWARE_TYPE_8188E((pDM_Odm->Adapter))) + if (IS_HARDWARE_TYPE_8188E((pDM_Odm->Adapter))) pLoopAdapter->RASupport = TRUE; adaptercount += 1; RT_TRACE(COMP_INIT, DBG_LOUD, ("adaptercount=%d\n", adaptercount)); @@ -2136,7 +2107,7 @@ ODM_AsocEntry_Init( RT_TRACE(COMP_INIT, DBG_LOUD, ("TotalAssocEntryNum = %d\n", TotalAssocEntryNum)); if (TotalAssocEntryNum < (ODM_ASSOCIATE_ENTRY_NUM-1)) { - + RT_TRACE(COMP_INIT, DBG_LOUD, ("In hook null\n")); for (index = TotalAssocEntryNum; index < ODM_ASSOCIATE_ENTRY_NUM; index++) ODM_CmnInfoPtrArrayHook(pDM_OutSrc, ODM_CMNINFO_STA_STATUS, index, NULL); @@ -2191,8 +2162,7 @@ void odm_dtc(PDM_ODM_T pDM_Odm) if (DTC_BASE < pDM_Odm->RSSI_Min) { /* need to decade the CTS TX power */ sign = 1; - for (i=0;i= pDM_Odm->RSSI_Min) || (dtc_steps >= 6)) break; else @@ -2200,13 +2170,11 @@ void odm_dtc(PDM_ODM_T pDM_Odm) } } #if 0 - else if (DTC_DWN_BASE > pDM_Odm->RSSI_Min) - { + else if (DTC_DWN_BASE > pDM_Odm->RSSI_Min) { /* needs to increase the CTS TX power */ sign = 0; dtc_steps = 1; - for (i=0;iRSSI_Min) || (dtc_steps>=10)) break; else @@ -2241,21 +2209,19 @@ odm_UpdatePowerTrainingState( pDIG_T pDM_DigTable = &pDM_Odm->DM_DigTable; u4Byte score = 0; - if(!(pDM_Odm->SupportAbility & ODM_BB_PWR_TRAIN)) + if (!(pDM_Odm->SupportAbility & ODM_BB_PWR_TRAIN)) return; ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState()============>\n")); pDM_Odm->bChangeState = FALSE; // Debug command - if(pDM_Odm->ForcePowerTrainingState) - { - if(pDM_Odm->ForcePowerTrainingState == 1 && !pDM_Odm->bDisablePowerTraining) - { + if (pDM_Odm->ForcePowerTrainingState) { + if (pDM_Odm->ForcePowerTrainingState == 1 && !pDM_Odm->bDisablePowerTraining) { pDM_Odm->bChangeState = TRUE; pDM_Odm->bDisablePowerTraining = TRUE; } - else if(pDM_Odm->ForcePowerTrainingState == 2 && pDM_Odm->bDisablePowerTraining) + else if (pDM_Odm->ForcePowerTrainingState == 2 && pDM_Odm->bDisablePowerTraining) { pDM_Odm->bChangeState = TRUE; pDM_Odm->bDisablePowerTraining = FALSE; @@ -2268,13 +2234,12 @@ odm_UpdatePowerTrainingState( pDM_Odm->ForcePowerTrainingState)); return; } - - if(!pDM_Odm->bLinked) + + if (!pDM_Odm->bLinked) return; - + // First connect - if((pDM_Odm->bLinked) && (pDM_DigTable->bMediaConnect_0 == FALSE)) - { + if ((pDM_Odm->bLinked) && (pDM_DigTable->bMediaConnect_0 == FALSE)) { pDM_Odm->PT_score = 0; pDM_Odm->bChangeState = TRUE; pDM_Odm->PhyDbgInfo.NumQryPhyStatusOFDM = 0; @@ -2284,54 +2249,48 @@ odm_UpdatePowerTrainingState( } // Compute score - if(pDM_Odm->NHM_cnt_0 >= 215) + if (pDM_Odm->NHM_cnt_0 >= 215) score = 2; - else if(pDM_Odm->NHM_cnt_0 >= 190) + else if (pDM_Odm->NHM_cnt_0 >= 190) score = 1; // unknow state - else - { + else { u4Byte RX_Pkt_Cnt; - + RX_Pkt_Cnt = (u4Byte)(pDM_Odm->PhyDbgInfo.NumQryPhyStatusOFDM) + (u4Byte)(pDM_Odm->PhyDbgInfo.NumQryPhyStatusCCK); - - if((FalseAlmCnt->Cnt_CCA_all > 31 && RX_Pkt_Cnt > 31) && (FalseAlmCnt->Cnt_CCA_all >= RX_Pkt_Cnt)) - { - if((RX_Pkt_Cnt + (RX_Pkt_Cnt >> 1)) <= FalseAlmCnt->Cnt_CCA_all) + + if ((FalseAlmCnt->Cnt_CCA_all > 31 && RX_Pkt_Cnt > 31) && (FalseAlmCnt->Cnt_CCA_all >= RX_Pkt_Cnt)) { + if ((RX_Pkt_Cnt + (RX_Pkt_Cnt >> 1)) <= FalseAlmCnt->Cnt_CCA_all) score = 0; - else if((RX_Pkt_Cnt + (RX_Pkt_Cnt >> 2)) <= FalseAlmCnt->Cnt_CCA_all) + else if ((RX_Pkt_Cnt + (RX_Pkt_Cnt >> 2)) <= FalseAlmCnt->Cnt_CCA_all) score = 1; else score = 2; } - ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): RX_Pkt_Cnt = %d, Cnt_CCA_all = %d\n", + ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): RX_Pkt_Cnt = %d, Cnt_CCA_all = %d\n", RX_Pkt_Cnt, FalseAlmCnt->Cnt_CCA_all)); } ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): NumQryPhyStatusOFDM = %d, NumQryPhyStatusCCK = %d\n", (u4Byte)(pDM_Odm->PhyDbgInfo.NumQryPhyStatusOFDM), (u4Byte)(pDM_Odm->PhyDbgInfo.NumQryPhyStatusCCK))); - ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): NHM_cnt_0 = %d, score = %d\n", + ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): NHM_cnt_0 = %d, score = %d\n", pDM_Odm->NHM_cnt_0, score)); // smoothing pDM_Odm->PT_score = (score << 4) + (pDM_Odm->PT_score>>1) + (pDM_Odm->PT_score>>2); score = (pDM_Odm->PT_score + 32) >> 6; - ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): PT_score = %d, score after smoothing = %d\n", + ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): PT_score = %d, score after smoothing = %d\n", pDM_Odm->PT_score, score)); // Mode decision - if(score == 2) - { - if(pDM_Odm->bDisablePowerTraining) - { + if (score == 2) { + if (pDM_Odm->bDisablePowerTraining) { pDM_Odm->bChangeState = TRUE; pDM_Odm->bDisablePowerTraining = FALSE; ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): Change state\n")); } ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): Enable Power Training\n")); } - else if(score == 0) - { - if(!pDM_Odm->bDisablePowerTraining) - { + else if (score == 0) { + if (!pDM_Odm->bDisablePowerTraining) { pDM_Odm->bChangeState = TRUE; pDM_Odm->bDisablePowerTraining = TRUE; ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): Change state\n")); @@ -2358,14 +2317,14 @@ u1Byte GetRightChnlPlaceforIQK(u1Byte chnl) 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 149, 151, 153, 155, 157, 159, 161, 163, 165}; u1Byte place = chnl; - + if (chnl > 14) { for (place = 14; place < sizeof(channel_all); place++) { if (channel_all[place] == chnl) return place-13; } } - + return 0; } @@ -2379,17 +2338,17 @@ phydm_NoisyDetection( { u4Byte Total_FA_Cnt, Total_CCA_Cnt; u4Byte Score = 0, i, Score_Smooth; - + Total_CCA_Cnt = pDM_Odm->FalseAlmCnt.Cnt_CCA_all; - Total_FA_Cnt = pDM_Odm->FalseAlmCnt.Cnt_all; + Total_FA_Cnt = pDM_Odm->FalseAlmCnt.Cnt_all; /* if( Total_FA_Cnt*16>=Total_CCA_Cnt*14 ) // 87.5 - + else if( Total_FA_Cnt*16>=Total_CCA_Cnt*12 ) // 75 - + else if( Total_FA_Cnt*16>=Total_CCA_Cnt*10 ) // 56.25 - + else if( Total_FA_Cnt*16>=Total_CCA_Cnt*8 ) // 50 else if( Total_FA_Cnt*16>=Total_CCA_Cnt*7 ) // 43.75 @@ -2397,7 +2356,7 @@ phydm_NoisyDetection( else if( Total_FA_Cnt*16>=Total_CCA_Cnt*6 ) // 37.5 else if( Total_FA_Cnt*16>=Total_CCA_Cnt*5 ) // 31.25% - + else if( Total_FA_Cnt*16>=Total_CCA_Cnt*4 ) // 25% else if( Total_FA_Cnt*16>=Total_CCA_Cnt*3 ) // 18.75% @@ -2406,10 +2365,8 @@ phydm_NoisyDetection( else if( Total_FA_Cnt*16>=Total_CCA_Cnt*1 ) // 6.25% */ - for(i=0;i<=16;i++) - { - if( Total_FA_Cnt*16>=Total_CCA_Cnt*(16-i) ) - { + for (i=0;i<=16;i++) { + if ( Total_FA_Cnt*16>=Total_CCA_Cnt*(16-i) ) { Score = 16-i; break; } @@ -2487,7 +2444,7 @@ phydm_NoisyDetection( break; case 15: ODM_RT_TRACE(pDM_Odm,ODM_COMP_COMMON, ODM_DBG_LOUD, - ("[NoisyDetection] Total_FA_Cnt/Total_CCA_Cnt=93.75%%\n")); + ("[NoisyDetection] Total_FA_Cnt/Total_CCA_Cnt=93.75%%\n")); break; case 16: ODM_RT_TRACE(pDM_Odm,ODM_COMP_COMMON, ODM_DBG_LOUD, @@ -2495,13 +2452,13 @@ phydm_NoisyDetection( break; default: ODM_RT_TRACE(pDM_Odm,ODM_COMP_COMMON, ODM_DBG_LOUD, - ("[NoisyDetection] Unknown Value!! Need Check!!\n")); + ("[NoisyDetection] Unknown Value!! Need Check!!\n")); } -*/ +*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_NOISY_DETECT, ODM_DBG_LOUD, ("[NoisyDetection] Total_CCA_Cnt=%d, Total_FA_Cnt=%d, NoisyDecision_Smooth=%d, Score=%d, Score_Smooth=%d, pDM_Odm->NoisyDecision=%d\n", Total_CCA_Cnt, Total_FA_Cnt, pDM_Odm->NoisyDecision_Smooth, Score, Score_Smooth, pDM_Odm->NoisyDecision)); - + } VOID @@ -2514,18 +2471,18 @@ phydm_csi_mask_enable( u4Byte reg_value = 0; reg_value = (enable == CSI_MASK_ENABLE) ? 1 : 0; - + if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) { ODM_SetBBReg(pDM_Odm, 0xD2C, BIT28, reg_value); ODM_RT_TRACE(pDM_Odm, ODM_COMP_API, ODM_DBG_LOUD, ("Enable CSI Mask: Reg 0xD2C[28] = ((0x%x))\n", reg_value)); - + } else if (pDM_Odm->SupportICType & ODM_IC_11AC_SERIES) { ODM_SetBBReg(pDM_Odm, 0x874, BIT0, reg_value); ODM_RT_TRACE(pDM_Odm, ODM_COMP_API, ODM_DBG_LOUD, ("Enable CSI Mask: Reg 0x874[0] = ((0x%x))\n", reg_value)); } - + } VOID @@ -2536,14 +2493,14 @@ phydm_clean_all_csi_mask( PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) { - + ODM_SetBBReg(pDM_Odm, 0xD40, bMaskDWord, 0); ODM_SetBBReg(pDM_Odm, 0xD44, bMaskDWord, 0); ODM_SetBBReg(pDM_Odm, 0xD48, bMaskDWord, 0); ODM_SetBBReg(pDM_Odm, 0xD4c, bMaskDWord, 0); - + } else if (pDM_Odm->SupportICType & ODM_IC_11AC_SERIES) { - + ODM_SetBBReg(pDM_Odm, 0x880, bMaskDWord, 0); ODM_SetBBReg(pDM_Odm, 0x884, bMaskDWord, 0); ODM_SetBBReg(pDM_Odm, 0x888, bMaskDWord, 0); @@ -2580,37 +2537,37 @@ phydm_set_csi_mask_reg( tone_num = 64; csi_mask_reg_p = 0xD40; - csi_mask_reg_n = 0xD48; - + csi_mask_reg_n = 0xD48; + } else if (pDM_Odm->SupportICType & ODM_IC_11AC_SERIES) { tone_num = 128; csi_mask_reg_p = 0x880; - csi_mask_reg_n = 0x890; + csi_mask_reg_n = 0x890; } - + if (tone_direction == FREQ_POSITIVE) { if (tone_idx_tmp >= (tone_num - 1)) tone_idx_tmp = (tone_num - 1); - + byte_offset = (u1Byte)(tone_idx_tmp >> 3); bit_offset = (u1Byte)(tone_idx_tmp & 0x7); target_reg = csi_mask_reg_p + byte_offset; - + } else { tone_num_shift = tone_num; - + if (tone_idx_tmp >= tone_num) tone_idx_tmp = tone_num; tone_idx_tmp = tone_num - tone_idx_tmp; - + byte_offset = (u1Byte)(tone_idx_tmp >> 3); - bit_offset = (u1Byte)(tone_idx_tmp & 0x7); + bit_offset = (u1Byte)(tone_idx_tmp & 0x7); target_reg = csi_mask_reg_n + byte_offset; } - + reg_tmp_value = ODM_Read1Byte(pDM_Odm, target_reg); ODM_RT_TRACE(pDM_Odm, ODM_COMP_API, ODM_DBG_LOUD, ("Pre Mask tone idx[%d]: Reg0x%x = ((0x%x))\n", (tone_idx_tmp + tone_num_shift), target_reg, reg_tmp_value)); reg_tmp_value |= BIT(bit_offset); diff --git a/hal/phydm/phydm_rxhp.c b/hal/phydm/phydm_rxhp.c old mode 100755 new mode 100644 diff --git a/hal/phydm/phydm_rxhp.h b/hal/phydm/phydm_rxhp.h old mode 100755 new mode 100644 diff --git a/hal/phydm/rtchnlplan.c b/hal/phydm/rtchnlplan.c index 4b41ff111..6fa98947f 100644 --- a/hal/phydm/rtchnlplan.c +++ b/hal/phydm/rtchnlplan.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -19,12 +19,12 @@ ******************************************************************************/ /****************************************************************************** - + History: Data Who Remark (Internal History) - + 05/14/2012 MH Collect RTK inernal infromation and generate channel plan draft. - + ******************************************************************************/ //============================================================ @@ -41,73 +41,73 @@ // /* - Channel Plan Contents - Domain Code EEPROM Countries in Specific Domain - 2G RD 5G RD Bit[6:0] 2G 5G - Case Old Define 00h~1Fh Old Define Old Define - 1 2G_WORLD 5G_NULL 20h Worldwird 13 NA - 2 2G_ETSI1 5G_NULL 21h Europe 2G NA - 3 2G_FCC1 5G_NULL 22h US 2G NA - 4 2G_MKK1 5G_NULL 23h Japan 2G NA - 5 2G_ETSI2 5G_NULL 24h France 2G NA + Channel Plan Contents + Domain Code EEPROM Countries in Specific Domain + 2G RD 5G RD Bit[6:0] 2G 5G + Case Old Define 00h~1Fh Old Define Old Define + 1 2G_WORLD 5G_NULL 20h Worldwird 13 NA + 2 2G_ETSI1 5G_NULL 21h Europe 2G NA + 3 2G_FCC1 5G_NULL 22h US 2G NA + 4 2G_MKK1 5G_NULL 23h Japan 2G NA + 5 2G_ETSI2 5G_NULL 24h France 2G NA 6 2G_FCC1 5G_FCC1 25h US 2G US 5G ¤K¤j°ê»{ÃÒ 7 2G_WORLD 5G_ETSI1 26h Worldwird 13 Europe ¤K¤j°ê»{ÃÒ 8 2G_MKK1 5G_MKK1 27h Japan 2G Japan 5G ¤K¤j°ê»{ÃÒ 9 2G_WORLD 5G_KCC1 28h Worldwird 13 Korea ¤K¤j°ê»{ÃÒ - 10 2G_WORLD 5G_FCC2 29h Worldwird 13 US o/w DFS Channels - 11 2G_WORLD 5G_FCC3 30h Worldwird 13 India, Mexico - 12 2G_WORLD 5G_FCC4 31h Worldwird 13 Venezuela - 13 2G_WORLD 5G_FCC5 32h Worldwird 13 China - 14 2G_WORLD 5G_FCC6 33h Worldwird 13 Israel + 10 2G_WORLD 5G_FCC2 29h Worldwird 13 US o/w DFS Channels + 11 2G_WORLD 5G_FCC3 30h Worldwird 13 India, Mexico + 12 2G_WORLD 5G_FCC4 31h Worldwird 13 Venezuela + 13 2G_WORLD 5G_FCC5 32h Worldwird 13 China + 14 2G_WORLD 5G_FCC6 33h Worldwird 13 Israel 15 2G_FCC1 5G_FCC7 34h US 2G US/Canada ¤K¤j°ê»{ÃÒ 16 2G_WORLD 5G_ETSI2 35h Worldwird 13 Australia, New Zealand ¤K¤j°ê»{ÃÒ - 17 2G_WORLD 5G_ETSI3 36h Worldwird 13 Russia - 18 2G_MKK1 5G_MKK2 37h Japan 2G Japan (W52, W53) - 19 2G_MKK1 5G_MKK3 38h Japan 2G Japan (W56) + 17 2G_WORLD 5G_ETSI3 36h Worldwird 13 Russia + 18 2G_MKK1 5G_MKK2 37h Japan 2G Japan (W52, W53) + 19 2G_MKK1 5G_MKK3 38h Japan 2G Japan (W56) 20 2G_FCC1 5G_NCC1 39h US 2G Taiwan ¤K¤j°ê»{ÃÒ - + NA 2G_WORLD 5G_FCC1 7F FCC FCC DFS Channels Realtek Define - - - - - - 2.4G Regulatory Domains + + + + + + 2.4G Regulatory Domains Case 2G RD Regulation Channels Frequencyes Note Countries in Specific Domain 1 2G_WORLD ETSI 1~13 2412~2472 Passive scan CH 12, 13 Worldwird 13 2 2G_ETSI1 ETSI 1~13 2412~2472 Europe 3 2G_FCC1 FCC 1~11 2412~2462 US 4 2G_MKK1 MKK 1~13, 14 2412~2472, 2484 Japan 5 2G_ETSI2 ETSI 10~13 2457~2472 France - - - - - 5G Regulatory Domains + + + + + 5G Regulatory Domains Case 5G RD Regulation Channels Frequencyes Note Countries in Specific Domain - 1 5G_NULL NA NA NA Do not support 5GHz - 2 5G_ETSI1 ETSI "36~48, 52~64, + 1 5G_NULL NA NA NA Do not support 5GHz + 2 5G_ETSI1 ETSI "36~48, 52~64, 100~140" "5180~5240, 5260~5230 5500~5700" Band1, Ban2, Band3 Europe - 3 5G_ETSI2 ETSI "36~48, 52~64, + 3 5G_ETSI2 ETSI "36~48, 52~64, 100~140, 149~165" "5180~5240, 5260~5230 5500~5700, 5745~5825" Band1, Ban2, Band3, Band4 Australia, New Zealand - 4 5G_ETSI3 ETSI "36~48, 52~64, - 100~132, 149~165" + 4 5G_ETSI3 ETSI "36~48, 52~64, + 100~132, 149~165" "5180~5240, 5260~5230 5500~5660, 5745~5825" Band1, Ban2, Band3(except CH 136, 140), Band4" Russia - 5 5G_FCC1 FCC "36~48, 52~64, - 100~140, 149~165" + 5 5G_FCC1 FCC "36~48, 52~64, + 100~140, 149~165" "5180~5240, 5260~5230 5500~5700, 5745~5825" Band1(5150~5250MHz), Band2(5250~5350MHz), Band3(5470~5725MHz), Band4(5725~5850MHz)" US 6 5G_FCC2 FCC 36~48, 149~165 5180~5240, 5745~5825 Band1, Band4 FCC o/w DFS Channels - 7 5G_FCC3 FCC "36~48, 52~64, + 7 5G_FCC3 FCC "36~48, 52~64, 149~165" "5180~5240, 5260~5230 5745~5825" Band1, Ban2, Band4 India, Mexico - 8 5G_FCC4 FCC "36~48, 52~64, + 8 5G_FCC4 FCC "36~48, 52~64, 149~161" "5180~5240, 5260~5230 5745~5805" Band1, Ban2, Band4(except CH 165)" Venezuela @@ -115,20 +115,20 @@ 10 5G_FCC6 FCC 36~48, 52~64 5180~5240, 5260~5230 Band1, Band2 Israel 11 5G_FCC7 5G_IC1 FCC - IC" "36~48, 52~64, - 100~116, 136, 140, + IC" "36~48, 52~64, + 100~116, 136, 140, 149~165" "5180~5240, 5260~5230 - 5500~5580, 5680, 5700, + 5500~5580, 5680, 5700, 5745~5825" "Band1, Band2, Band3(except 5600~5650MHz), Band4" "US Canada" - 12 5G_KCC1 KCC "36~48, 52~64, + 12 5G_KCC1 KCC "36~48, 52~64, 100~124, 149~165" "5180~5240, 5260~5230 5500~5620, 5745~5825" "Band1, Ban2, Band3(5470~5650MHz), Band4" Korea - 13 5G_MKK1 MKK "36~48, 52~64, + 13 5G_MKK1 MKK "36~48, 52~64, 100~140" "5180~5240, 5260~5230 5500~5700" W52, W53, W56 Japan 14 5G_MKK2 MKK 36~48, 52~64 5180~5240, 5260~5230 W52, W53 Japan (W52, W53) @@ -136,17 +136,17 @@ 16 5G_NCC1 NCC "56~64, 100~116, 136, 140, 149~165" "5260~5320 - 5500~5580, 5680, 5700, + 5500~5580, 5680, 5700, 5745~5825" "Band2(except CH 52), Band3(except 5600~5650MHz), Band4" Taiwan - - -*/ - + + +*/ + +// +// 2.4G CHannel // -// 2.4G CHannel -// /* 2.4G Band Regulatory Domains RTL8192D @@ -176,7 +176,7 @@ // /* - 5G Band RTL8192D RTL8195 (Jaguar) Jaguar 2 Regulatory Domains + 5G Band RTL8192D RTL8195 (Jaguar) Jaguar 2 Regulatory Domains Channel Number Channel Frequency Global Global Global "US (FCC 15.407)" "Canada (FCC, except 5.6~5.65GHz)" Argentina, Australia, New Zealand, Brazil, S. Africa (FCC/ETSI) "Europe @@ -199,7 +199,7 @@ 56 5280 v v v v v v Indoor v Indoor Indoor v v Indoor v 60 5300 v v v v v v v Indoor v Indoor Indoor v v Indoor v 64 5320 v v v v v v Indoor v Indoor Indoor v v Indoor v - + "Band 3 5.47GHz ~ @@ -209,13 +209,13 @@ 108 5540 v v v v v v v v v v v v 112 5560 v v v v v v v v v v v 116 5580 v v v v v v v v v v v v v - 120 5600 v v v Indoor v Indoor v v v - 124 5620 v v v v Indoor v Indoor v v v - 128 5640 v v v Indoor v Indoor v v - 132 5660 v v v E v Indoor v Indoor v v + 120 5600 v v v Indoor v Indoor v v v + 124 5620 v v v v Indoor v Indoor v v v + 128 5640 v v v Indoor v Indoor v v + 132 5660 v v v E v Indoor v Indoor v v 136 5680 v v v v v v v v v 140 5700 v v E v v v v v v v - 144 5720 E E E + 144 5720 E E E "Band 4 5.725GHz ~ @@ -225,14 +225,14 @@ 157 5785 v v v v v v v v v v v v v 161 5805 v v v v v v v v v v v v 165 5825 v v P P v v v v v v v v v - 169 5845 P P P - 173 5865 P P P P - 177 5885 P P P + 169 5845 P P P + 173 5865 P P P P + 177 5885 P P P Channel Count 28 28 14 7 0 28 24 20 24 19 5 13 8 19 20 22 15 12 E: FCC accepted the ask for CH144 from Accord. PS: 160MHz ¥Î 80MHz+80MHz¹ê²{¡H Argentina Belgium (¤ñ§Q®É) India Israel Russia P: Customer's requirement from James. Australia The Netherlands (²üÄõ) Mexico Turkey Ukraine - New Zealand UK (­^°ê) Singapore - Brazil Switzerland (·ç¤h) + New Zealand UK (­^°ê) Singapore + Brazil Switzerland (·ç¤h) */ @@ -240,11 +240,11 @@ Channel Count 28 28 14 7 0 28 24 20 24 19 5 13 8 19 20 22 15 12 /*---------------------------Define Local Constant---------------------------*/ -// define Maximum Power v.s each band for each region +// define Maximum Power v.s each band for each region // ISRAEL // Format: // RT_CHANNEL_DOMAIN_Region ={{{Chnl_Start, Chnl_end, Pwr_dB_Max}, {Chn2_Start, Chn2_end, Pwr_dB_Max}, {Chn3_Start, Chn3_end, Pwr_dB_Max}, {Chn4_Start, Chn4_end, Pwr_dB_Max}, {Chn5_Start, Chn5_end, Pwr_dB_Max}}, Limit_Num} */ -// RT_CHANNEL_DOMAIN_FCC ={{{01,11,30}, {36,48,17}, {52,64,24}, {100,140,24}, {149,165,30}}, 5} +// RT_CHANNEL_DOMAIN_FCC ={{{01,11,30}, {36,48,17}, {52,64,24}, {100,140,24}, {149,165,30}}, 5} // "NR" is non-release channle. // Issue--- Israel--Russia--New Zealand // DOMAIN_01= (2G_WORLD, 5G_NULL) @@ -272,8 +272,8 @@ Channel Count 28 28 14 7 0 28 24 20 24 19 5 13 8 19 20 22 15 12 static RT_CHANNEL_PLAN_MAXPWR ChnlPlanPwrMax_2G[] = { - // 2G_WORLD, - {{1, 13, 20}, 1}, + // 2G_WORLD, + {{1, 13, 20}, 1}, // 2G_ETSI1 {{1, 13, 20}, 1}, @@ -292,7 +292,7 @@ static RT_CHANNEL_PLAN_MAXPWR ChnlPlanPwrMax_2G[] = { /* //===========================================1:(2G_WORLD, 5G_NULL) -RT_CHANNEL_PLAN_MAXPWR RT_DOMAIN_01 ={{{01,13,20}, {NR,NR,0}, {NR,NR,0}, {NR,NR,0}, {NR,NR,0}}, 1} +RT_CHANNEL_PLAN_MAXPWR RT_DOMAIN_01 ={{{01,13,20}, {NR,NR,0}, {NR,NR,0}, {NR,NR,0}, {NR,NR,0}}, 1} //===========================================2:(2G_ETSI1, 5G_NULL) @@ -374,56 +374,56 @@ RT_DOMAIN_23 ={{{01,13,20}, {36,48,23}, {52,64,23}, {100,140,30}, {149,165,30}}, // // Counter & Realtek Channel plan transfer table. // -RT_CHNL_CTRY_TBL RtCtryChnlTbl[] = +RT_CHNL_CTRY_TBL RtCtryChnlTbl[] = { { - RT_CTRY_AL, // "Albaniaªüº¸¤Ú¥§¨È" + RT_CTRY_AL, // "Albaniaªüº¸¤Ú¥§¨È" "AL", RT_2G_WORLD, - RT_5G_WORLD, + RT_5G_WORLD, RT_CHANNEL_DOMAIN_UNDEFINED // 2G/5G world. }, -#if 0 +#if 0 { - RT_CTRY_BB, // "Barbados¤Ú¤Ú¦h´µ" + RT_CTRY_BB, // "Barbados¤Ú¤Ú¦h´µ" "BB", RT_2G_WORLD, - RT_5G_NULL, + RT_5G_NULL, RT_CHANNEL_DOMAIN_EFUSE_0x20 // 2G world. 5G_NULL }, - + { - RT_CTRY_DE, // "Germany¼w°ê" + RT_CTRY_DE, // "Germany¼w°ê" "DE", RT_2G_WORLD, - RT_5G_ETSI1, + RT_5G_ETSI1, RT_CHANNEL_DOMAIN_EFUSE_0x26 }, - + { - RT_CTRY_US, // "Germany¼w°ê" + RT_CTRY_US, // "Germany¼w°ê" "US", RT_2G_FCC1, - RT_5G_FCC7, + RT_5G_FCC7, RT_CHANNEL_DOMAIN_EFUSE_0x34 }, { - RT_CTRY_JP, // "Germany¼w°ê" + RT_CTRY_JP, // "Germany¼w°ê" "JP", RT_2G_MKK1, - RT_5G_MKK1, + RT_5G_MKK1, RT_CHANNEL_DOMAIN_EFUSE_0x34 }, - + { - RT_CTRY_TW, // "Germany¼w°ê" + RT_CTRY_TW, // "Germany¼w°ê" "TW", RT_2G_FCC1, - RT_5G_NCC1, + RT_5G_NCC1, RT_CHANNEL_DOMAIN_EFUSE_0x39 - }, + }, #endif }; // RtCtryChnlTbl @@ -437,13 +437,13 @@ static RT_CHANNEL_PLAN_NEW RtChnlPlan[] = { // Channel Plan 0x20. { - &RtCtryChnlTbl[1], // RT_CHNL_CTRY_TBL Country & channel plan transfer table. - RT_CHANNEL_DOMAIN_EFUSE_0x20, // RT_CHANNEL_DOMAIN RT Channel Plan Define + &RtCtryChnlTbl[1], // RT_CHNL_CTRY_TBL Country & channel plan transfer table. + RT_CHANNEL_DOMAIN_EFUSE_0x20, // RT_CHANNEL_DOMAIN RT Channel Plan Define RT_2G_WORLD, // RT_REGULATION_2G RT_5G_NULL, // RT_REGULATION_5G RT_WORLD, // RT_REGULATION_CMN RT Regulatory domain definition. RT_SREQ_NA, // RT Channel plan special & customerize requirement. - + CHNL_RT_2G_WORLD, CHNL_RT_2G_WORLD_SCAN_TYPE, &ChnlPlanPwrMax_2G[0], @@ -451,31 +451,27 @@ static RT_CHANNEL_PLAN_NEW RtChnlPlan[] = CHNL_RT_5G_NULL, CHNL_RT_5G_NULL_SCAN_TYPE, - + }, - + // Channel Plan 0x26. { - &RtCtryChnlTbl[1], // RT_CHNL_CTRY_TBL Country & channel plan transfer table. - RT_CHANNEL_DOMAIN_EFUSE_0x26, // RT_CHANNEL_DOMAIN RT Channel Plan Define + &RtCtryChnlTbl[1], // RT_CHNL_CTRY_TBL Country & channel plan transfer table. + RT_CHANNEL_DOMAIN_EFUSE_0x26, // RT_CHANNEL_DOMAIN RT Channel Plan Define RT_2G_WORLD, // RT_REGULATION_2G RT_5G_ETSI1, // RT_REGULATION_5G RT_WORLD, // RT_REGULATION_CMN RT Regulatory domain definition. RT_SREQ_NA, // RT Channel plan special & customerize requirement. - + CHNL_RT_2G_WORLD, // 2G workd cannel CHNL_RT_2G_WORLD_SCAN_TYPE, &ChnlPlanPwrMax_2G[1], - + CHNL_RT_5G_ETSI1, CHNL_RT_5G_ETSI1_SCAN_TYPE, - - } - - -}; -#endif - + } +}; +#endif diff --git a/hal/phydm/rtchnlplan.h b/hal/phydm/rtchnlplan.h index 37786cf8f..4589257c3 100644 --- a/hal/phydm/rtchnlplan.h +++ b/hal/phydm/rtchnlplan.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -41,7 +41,7 @@ typedef enum _RT_CHANNEL_DOMAIN_NEW // ..... RT_CHANNEL_DOMAIN_MAX_NEW, - + }RT_CHANNEL_DOMAIN_NEW, *PRT_CHANNEL_DOMAIN_NEW; @@ -90,7 +90,7 @@ typedef enum _RT_CHANNEL_DOMAIN_NEW #define DOMAIN_CODE_5G_NCC1 \ {56,60,64,100,104,108,112,116,136,140,149,153,157,161,165}, 24 #define DOMAIN_CODE_5G_NCC2 \ - {56,60,64,149,153,157,161,165}, 8 + {56,60,64,149,153,157,161,165}, 8 #define UNDEFINED \ {0}, 0 #endif @@ -103,157 +103,157 @@ typedef enum _RT_CHANNEL_DOMAIN_NEW Countries "Country Abbreviation" Domain Code SKU's Ch# of 20MHz 2G 5G Ch# of 40MHz "Albaniaªüº¸¤Ú¥§¨È" AL Local Test - -"Algeriaªüº¸¤Î§Q¨È" DZ CE TCF - -"Antigua & Barbuda¦w´£¥Ê®q&¤Ú¥¬¹F" AG 2G_WORLD FCC TCF - + +"Algeriaªüº¸¤Î§Q¨È" DZ CE TCF + +"Antigua & Barbuda¦w´£¥Ê®q&¤Ú¥¬¹F" AG 2G_WORLD FCC TCF + "Argentinaªü®Ú§Ê" AR 2G_WORLD Local Test - + "Armenia¨È¬ü¥§¨È" AM 2G_WORLD ETSI - + "Arubaªü¾|¤Ú®q" AW 2G_WORLD FCC TCF - -"Australia¿D¬w" AU 2G_WORLD 5G_ETSI2 - -"Austria¶ø¦a§Q" AT 2G_WORLD 5G_ETSI1 CE - -"Azerbaijanªü¶ë«ô¾Ê" AZ 2G_WORLD CE TCF - -"Bahamas¤Ú«¢°¨" BS 2G_WORLD - + +"Australia¿D¬w" AU 2G_WORLD 5G_ETSI2 + +"Austria¶ø¦a§Q" AT 2G_WORLD 5G_ETSI1 CE + +"Azerbaijanªü¶ë«ô¾Ê" AZ 2G_WORLD CE TCF + +"Bahamas¤Ú«¢°¨" BS 2G_WORLD + "Barbados¤Ú¤Ú¦h´µ" BB 2G_WORLD FCC TCF - -"Belgium¤ñ§Q®É" BE 2G_WORLD 5G_ETSI1 CE - -"Bermuda¦Ê¼}¹F" BM 2G_WORLD FCC TCF - + +"Belgium¤ñ§Q®É" BE 2G_WORLD 5G_ETSI1 CE + +"Bermuda¦Ê¼}¹F" BM 2G_WORLD FCC TCF + "Brazil¤Ú¦è" BR 2G_WORLD Local Test - -"Bulgaria«O¥[§Q¨È" BG 2G_WORLD 5G_ETSI1 CE - + +"Bulgaria«O¥[§Q¨È" BG 2G_WORLD 5G_ETSI1 CE + "Canada¥[®³¤j" CA 2G_FCC1 5G_FCC7 IC / FCC IC / FCC - -"Cayman Islands¶}°Ò¸s®q" KY 2G_WORLD 5G_ETSI1 CE - -"Chile´¼§Q" CL 2G_WORLD FCC TCF - -"China¤¤°ê" CN 2G_WORLD 5G_FCC5 «H³¡?¡i2002¡j353? - -"Columbia­ô­Û¤ñ¨È" CO 2G_WORLD Voluntary - -"Costa Rica­ô´µ¹F¾¤¥[" CR 2G_WORLD FCC TCF - -"Cyprus¶ë®ú¸ô´µ" CY 2G_WORLD 5G_ETSI1 CE - -"Czech ±¶§J" CZ 2G_WORLD 5G_ETSI1 CE - -"Denmark¤¦³Á" DK 2G_WORLD 5G_ETSI1 CE - -"Dominican Republic¦h©ú¥§¥[¦@©M°ê" DO 2G_WORLD FCC TCF - -"Egypt®J¤Î" EG 2G_WORLD CE T CF - -"El SalvadorÂĺ¸¥Ë¦h" SV 2G_WORLD Voluntary - -"Estonia·R¨F¥§¨È" EE 2G_WORLD 5G_ETSI1 CE - -"FinlandªâÄõ" FI 2G_WORLD 5G_ETSI1 CE - -"Franceªk°ê" FR 5G_E TSI1 CE - -"Germany¼w°ê" DE 2G_WORLD 5G_ETSI1 CE - -"Greece §ÆÃ¾" GR 2G_WORLD 5G_ETSI1 CE - -"GuamÃö®q" GU 2G_WORLD - -"Guatemala¥Ê¦a°¨©Ô" GT 2G_WORLD - -"Haiti®ü¦a" HT 2G_WORLD FCC TCF - -"Honduras§»³£©Ô´µ" HN 2G_WORLD FCC TCF - -"Hungary¦I¤ú§Q" HU 2G_WORLD 5G_ETSI1 CE - -"Iceland¦B®q" IS 2G_WORLD 5G_ETSI1 CE - -"India¦L«×" IN 2G_WORLD 5G_FCC3 FCC/CE TCF - -"Ireland·Rº¸Äõ" IE 2G_WORLD 5G_ETSI1 CE - -"Israel¥H¦â¦C" IL 5G_F CC6 CE TCF - -"Italy¸q¤j§Q" IT 2G_WORLD 5G_ETSI1 CE - -"Japan¤é¥»" JP 2G_MKK1 5G_MKK1 MKK MKK - -"KoreaÁú°ê" KR 2G_WORLD 5G_KCC1 KCC KCC - -"Latvia©Ô²æºû¨È" LV 2G_WORLD 5G_ETSI1 CE - -"Lithuania¥ß³³©{" LT 2G_WORLD 5G_ETSI1 CE - -"Luxembourg¿c´Ë³ù" LU 2G_WORLD 5G_ETSI1 CE - -"Malaysia°¨¨Ó¦è¨È" MY 2G_WORLD Local Test - -"Malta°¨º¸¥L" MT 2G_WORLD 5G_ETSI1 CE - -"Mexico¾¥¦è­ô" MX 2G_WORLD 5G_FCC3 Local Test - -"Morocco¼¯¬¥­ô" MA CE TCF - -"Netherlands²üÄõ" NL 2G_WORLD 5G_ETSI1 CE - -"New Zealand¯Ã¦èÄõ" NZ 2G_WORLD 5G_ETSI2 - -"Norway®¿«Â" NO 2G_WORLD 5G_ETSI1 CE - + +"Cayman Islands¶}°Ò¸s®q" KY 2G_WORLD 5G_ETSI1 CE + +"Chile´¼§Q" CL 2G_WORLD FCC TCF + +"China¤¤°ê" CN 2G_WORLD 5G_FCC5 «H³¡?¡i2002¡j353? + +"Columbia­ô­Û¤ñ¨È" CO 2G_WORLD Voluntary + +"Costa Rica­ô´µ¹F¾¤¥[" CR 2G_WORLD FCC TCF + +"Cyprus¶ë®ú¸ô´µ" CY 2G_WORLD 5G_ETSI1 CE + +"Czech ±¶§J" CZ 2G_WORLD 5G_ETSI1 CE + +"Denmark¤¦³Á" DK 2G_WORLD 5G_ETSI1 CE + +"Dominican Republic¦h©ú¥§¥[¦@©M°ê" DO 2G_WORLD FCC TCF + +"Egypt®J¤Î" EG 2G_WORLD CE T CF + +"El SalvadorÂĺ¸¥Ë¦h" SV 2G_WORLD Voluntary + +"Estonia·R¨F¥§¨È" EE 2G_WORLD 5G_ETSI1 CE + +"FinlandªâÄõ" FI 2G_WORLD 5G_ETSI1 CE + +"Franceªk°ê" FR 5G_E TSI1 CE + +"Germany¼w°ê" DE 2G_WORLD 5G_ETSI1 CE + +"Greece §ÆÃ¾" GR 2G_WORLD 5G_ETSI1 CE + +"GuamÃö®q" GU 2G_WORLD + +"Guatemala¥Ê¦a°¨©Ô" GT 2G_WORLD + +"Haiti®ü¦a" HT 2G_WORLD FCC TCF + +"Honduras§»³£©Ô´µ" HN 2G_WORLD FCC TCF + +"Hungary¦I¤ú§Q" HU 2G_WORLD 5G_ETSI1 CE + +"Iceland¦B®q" IS 2G_WORLD 5G_ETSI1 CE + +"India¦L«×" IN 2G_WORLD 5G_FCC3 FCC/CE TCF + +"Ireland·Rº¸Äõ" IE 2G_WORLD 5G_ETSI1 CE + +"Israel¥H¦â¦C" IL 5G_F CC6 CE TCF + +"Italy¸q¤j§Q" IT 2G_WORLD 5G_ETSI1 CE + +"Japan¤é¥»" JP 2G_MKK1 5G_MKK1 MKK MKK + +"KoreaÁú°ê" KR 2G_WORLD 5G_KCC1 KCC KCC + +"Latvia©Ô²æºû¨È" LV 2G_WORLD 5G_ETSI1 CE + +"Lithuania¥ß³³©{" LT 2G_WORLD 5G_ETSI1 CE + +"Luxembourg¿c´Ë³ù" LU 2G_WORLD 5G_ETSI1 CE + +"Malaysia°¨¨Ó¦è¨È" MY 2G_WORLD Local Test + +"Malta°¨º¸¥L" MT 2G_WORLD 5G_ETSI1 CE + +"Mexico¾¥¦è­ô" MX 2G_WORLD 5G_FCC3 Local Test + +"Morocco¼¯¬¥­ô" MA CE TCF + +"Netherlands²üÄõ" NL 2G_WORLD 5G_ETSI1 CE + +"New Zealand¯Ã¦èÄõ" NZ 2G_WORLD 5G_ETSI2 + +"Norway®¿«Â" NO 2G_WORLD 5G_ETSI1 CE + "Panama¤Ú®³°¨ " PA 2G_FCC1 Voluntary - + "Philippinesµá«ß»«" PH 2G_WORLD FCC TCF - -"PolandªiÄõ" PL 2G_WORLD 5G_ETSI1 CE - -"Portugal¸²µå¤ú" PT 2G_WORLD 5G_ETSI1 CE - -"Romaniaù°¨¥§¨È" RO 2G_WORLD 5G_ETSI1 CE - -"Russia«Xù´µ" RU 2G_WORLD 5G_ETSI3 CE TCF - -"Saudi Arabia¨F¦aªü©Ô§B" SA 2G_WORLD CE TCF - -"Singapore·s¥[©Y" SG 2G_WORLD - -"Slovakia´µ¬¥¥ï§J" SK 2G_WORLD 5G_ETSI1 CE - -"Slovenia´µ¬¥ºû¥§¨È" SI 2G_WORLD 5G_ETSI1 CE - -"South Africa«n«D" ZA 2G_WORLD CE TCF - -"Spain¦è¯Z¤ú" ES 5G_ETSI1 CE - -"Sweden·ç¨å" SE 2G_WORLD 5G_ETSI1 CE - -"Switzerland·ç¤h" CH 2G_WORLD 5G_ETSI1 CE - -"Taiwan»OÆW" TW 2G_FCC1 5G_NCC1 NCC - -"Thailand®õ°ê" TH 2G_WORLD FCC/CE TCF - -"Turkey¤g¦Õ¨ä" TR 2G_WORLD - -"Ukraine¯Q§JÄõ" UA 2G_WORLD Local Test - -"United Kingdom­^°ê" GB 2G_WORLD 5G_ETSI1 CE ETSI - + +"PolandªiÄõ" PL 2G_WORLD 5G_ETSI1 CE + +"Portugal¸²µå¤ú" PT 2G_WORLD 5G_ETSI1 CE + +"Romaniaù°¨¥§¨È" RO 2G_WORLD 5G_ETSI1 CE + +"Russia«Xù´µ" RU 2G_WORLD 5G_ETSI3 CE TCF + +"Saudi Arabia¨F¦aªü©Ô§B" SA 2G_WORLD CE TCF + +"Singapore·s¥[©Y" SG 2G_WORLD + +"Slovakia´µ¬¥¥ï§J" SK 2G_WORLD 5G_ETSI1 CE + +"Slovenia´µ¬¥ºû¥§¨È" SI 2G_WORLD 5G_ETSI1 CE + +"South Africa«n«D" ZA 2G_WORLD CE TCF + +"Spain¦è¯Z¤ú" ES 5G_ETSI1 CE + +"Sweden·ç¨å" SE 2G_WORLD 5G_ETSI1 CE + +"Switzerland·ç¤h" CH 2G_WORLD 5G_ETSI1 CE + +"Taiwan»OÆW" TW 2G_FCC1 5G_NCC1 NCC + +"Thailand®õ°ê" TH 2G_WORLD FCC/CE TCF + +"Turkey¤g¦Õ¨ä" TR 2G_WORLD + +"Ukraine¯Q§JÄõ" UA 2G_WORLD Local Test + +"United Kingdom­^°ê" GB 2G_WORLD 5G_ETSI1 CE ETSI + "United States¬ü°ê" US 2G_FCC1 5G_FCC7 FCC FCC - + "Venezuela©e¤º·ç©Ô" VE 2G_WORLD 5G_FCC4 FCC TCF - + "Vietnam¶V«n" VN 2G_WORLD FCC/CE TCF - + */ @@ -261,86 +261,86 @@ Countries "Country Abbreviation" Domain Code SKU's Ch# of 20MHz // Counter abbervation. typedef enum _RT_COUNTRY_DEFINE_NUM { - RT_CTRY_AL, // "Albaniaªüº¸¤Ú¥§¨È" - RT_CTRY_DZ, // "Algeriaªüº¸¤Î§Q¨È" - RT_CTRY_AG, // "Antigua & Barbuda¦w´£¥Ê®q&¤Ú¥¬¹F" - RT_CTRY_AR, // "Argentinaªü®Ú§Ê" - RT_CTRY_AM, // "Armenia¨È¬ü¥§¨È" - RT_CTRY_AW, // "Arubaªü¾|¤Ú®q" - RT_CTRY_AU, // "Australia¿D¬w" - RT_CTRY_AT, // "Austria¶ø¦a§Q" - RT_CTRY_AZ, // "Azerbaijanªü¶ë«ô¾Ê" - RT_CTRY_BS, // "Bahamas¤Ú«¢°¨" - RT_CTRY_BB, // "Barbados¤Ú¤Ú¦h´µ" - RT_CTRY_BE, // "Belgium¤ñ§Q®É" - RT_CTRY_BM, // "Bermuda¦Ê¼}¹F" - RT_CTRY_BR, // "Brazil¤Ú¦è" - RT_CTRY_BG, // "Bulgaria«O¥[§Q¨È" - RT_CTRY_CA, // "Canada¥[®³¤j" - RT_CTRY_KY, // "Cayman Islands¶}°Ò¸s®q" - RT_CTRY_CL, // "Chile´¼§Q" - RT_CTRY_CN, // "China¤¤°ê" - RT_CTRY_CO, // "Columbia­ô­Û¤ñ¨È" - RT_CTRY_CR, // "Costa Rica­ô´µ¹F¾¤¥[" - RT_CTRY_CY, // "Cyprus¶ë®ú¸ô´µ" - RT_CTRY_CZ, // "Czech ±¶§J" - RT_CTRY_DK, // "Denmark¤¦³Á" - RT_CTRY_DO, // "Dominican Republic¦h©ú¥§¥[¦@©M°ê" - RT_CTRY_CE, // "Egypt®J¤Î" EG 2G_WORLD - RT_CTRY_SV, // "El SalvadorÂĺ¸¥Ë¦h" - RT_CTRY_EE, // "Estonia·R¨F¥§¨È" - RT_CTRY_FI, // "FinlandªâÄõ" - RT_CTRY_FR, // "Franceªk°ê" - RT_CTRY_DE, // "Germany¼w°ê" - RT_CTRY_GR, // "Greece §ÆÃ¾" - RT_CTRY_GU, // "GuamÃö®q" - RT_CTRY_GT, // "Guatemala¥Ê¦a°¨©Ô" - RT_CTRY_HT, // "Haiti®ü¦a" - RT_CTRY_HN, // "Honduras§»³£©Ô´µ" - RT_CTRY_HU, // "Hungary¦I¤ú§Q" - RT_CTRY_IS, // "Iceland¦B®q" - RT_CTRY_IN, // "India¦L«×" - RT_CTRY_IE, // "Ireland·Rº¸Äõ" - RT_CTRY_IL, // "Israel¥H¦â¦C" - RT_CTRY_IT, // "Italy¸q¤j§Q" - RT_CTRY_JP, // "Japan¤é¥»" - RT_CTRY_KR, // "KoreaÁú°ê" - RT_CTRY_LV, // "Latvia©Ô²æºû¨È" - RT_CTRY_LT, // "Lithuania¥ß³³©{" - RT_CTRY_LU, // "Luxembourg¿c´Ë³ù" - RT_CTRY_MY, // "Malaysia°¨¨Ó¦è¨È" - RT_CTRY_MT, // "Malta°¨º¸¥L" - RT_CTRY_MX, // "Mexico¾¥¦è­ô" - RT_CTRY_MA, // "Morocco¼¯¬¥­ô" - RT_CTRY_NL, // "Netherlands²üÄõ" - RT_CTRY_NZ, // "New Zealand¯Ã¦èÄõ" - RT_CTRY_NO, // "Norway®¿«Â" - RT_CTRY_PA, // "Panama¤Ú®³°¨ " - RT_CTRY_PH, // "Philippinesµá«ß»«" - RT_CTRY_PL, // "PolandªiÄõ" - RT_CTRY_PT, // "Portugal¸²µå¤ú" - RT_CTRY_RO, // "Romaniaù°¨¥§¨È" - RT_CTRY_RU, // "Russia«Xù´µ" - RT_CTRY_SA, // "Saudi Arabia¨F¦aªü©Ô§B" - RT_CTRY_SG, // "Singapore·s¥[©Y" - RT_CTRY_SK, // "Slovakia´µ¬¥¥ï§J" - RT_CTRY_SI, // "Slovenia´µ¬¥ºû¥§¨È" - RT_CTRY_ZA, // "South Africa«n«D" - RT_CTRY_ES, // "Spain¦è¯Z¤ú" - RT_CTRY_SE, // "Sweden·ç¨å" - RT_CTRY_CH, // "Switzerland·ç¤h" - RT_CTRY_TW, // "Taiwan»OÆW" - RT_CTRY_TH, // "Thailand®õ°ê" - RT_CTRY_TR, // "Turkey¤g¦Õ¨ä" - RT_CTRY_UA, // "Ukraine¯Q§JÄõ" - RT_CTRY_GB, // "United Kingdom­^°ê" - RT_CTRY_US, // "United States¬ü°ê" - RT_CTRY_VE, // "Venezuela©e¤º·ç©Ô" - RT_CTRY_VN, // "Vietnam¶V«n" - RT_CTRY_MAX, // - + RT_CTRY_AL, // "Albaniaªüº¸¤Ú¥§¨È" + RT_CTRY_DZ, // "Algeriaªüº¸¤Î§Q¨È" + RT_CTRY_AG, // "Antigua & Barbuda¦w´£¥Ê®q&¤Ú¥¬¹F" + RT_CTRY_AR, // "Argentinaªü®Ú§Ê" + RT_CTRY_AM, // "Armenia¨È¬ü¥§¨È" + RT_CTRY_AW, // "Arubaªü¾|¤Ú®q" + RT_CTRY_AU, // "Australia¿D¬w" + RT_CTRY_AT, // "Austria¶ø¦a§Q" + RT_CTRY_AZ, // "Azerbaijanªü¶ë«ô¾Ê" + RT_CTRY_BS, // "Bahamas¤Ú«¢°¨" + RT_CTRY_BB, // "Barbados¤Ú¤Ú¦h´µ" + RT_CTRY_BE, // "Belgium¤ñ§Q®É" + RT_CTRY_BM, // "Bermuda¦Ê¼}¹F" + RT_CTRY_BR, // "Brazil¤Ú¦è" + RT_CTRY_BG, // "Bulgaria«O¥[§Q¨È" + RT_CTRY_CA, // "Canada¥[®³¤j" + RT_CTRY_KY, // "Cayman Islands¶}°Ò¸s®q" + RT_CTRY_CL, // "Chile´¼§Q" + RT_CTRY_CN, // "China¤¤°ê" + RT_CTRY_CO, // "Columbia­ô­Û¤ñ¨È" + RT_CTRY_CR, // "Costa Rica­ô´µ¹F¾¤¥[" + RT_CTRY_CY, // "Cyprus¶ë®ú¸ô´µ" + RT_CTRY_CZ, // "Czech ±¶§J" + RT_CTRY_DK, // "Denmark¤¦³Á" + RT_CTRY_DO, // "Dominican Republic¦h©ú¥§¥[¦@©M°ê" + RT_CTRY_CE, // "Egypt®J¤Î" EG 2G_WORLD + RT_CTRY_SV, // "El SalvadorÂĺ¸¥Ë¦h" + RT_CTRY_EE, // "Estonia·R¨F¥§¨È" + RT_CTRY_FI, // "FinlandªâÄõ" + RT_CTRY_FR, // "Franceªk°ê" + RT_CTRY_DE, // "Germany¼w°ê" + RT_CTRY_GR, // "Greece §ÆÃ¾" + RT_CTRY_GU, // "GuamÃö®q" + RT_CTRY_GT, // "Guatemala¥Ê¦a°¨©Ô" + RT_CTRY_HT, // "Haiti®ü¦a" + RT_CTRY_HN, // "Honduras§»³£©Ô´µ" + RT_CTRY_HU, // "Hungary¦I¤ú§Q" + RT_CTRY_IS, // "Iceland¦B®q" + RT_CTRY_IN, // "India¦L«×" + RT_CTRY_IE, // "Ireland·Rº¸Äõ" + RT_CTRY_IL, // "Israel¥H¦â¦C" + RT_CTRY_IT, // "Italy¸q¤j§Q" + RT_CTRY_JP, // "Japan¤é¥»" + RT_CTRY_KR, // "KoreaÁú°ê" + RT_CTRY_LV, // "Latvia©Ô²æºû¨È" + RT_CTRY_LT, // "Lithuania¥ß³³©{" + RT_CTRY_LU, // "Luxembourg¿c´Ë³ù" + RT_CTRY_MY, // "Malaysia°¨¨Ó¦è¨È" + RT_CTRY_MT, // "Malta°¨º¸¥L" + RT_CTRY_MX, // "Mexico¾¥¦è­ô" + RT_CTRY_MA, // "Morocco¼¯¬¥­ô" + RT_CTRY_NL, // "Netherlands²üÄõ" + RT_CTRY_NZ, // "New Zealand¯Ã¦èÄõ" + RT_CTRY_NO, // "Norway®¿«Â" + RT_CTRY_PA, // "Panama¤Ú®³°¨ " + RT_CTRY_PH, // "Philippinesµá«ß»«" + RT_CTRY_PL, // "PolandªiÄõ" + RT_CTRY_PT, // "Portugal¸²µå¤ú" + RT_CTRY_RO, // "Romaniaù°¨¥§¨È" + RT_CTRY_RU, // "Russia«Xù´µ" + RT_CTRY_SA, // "Saudi Arabia¨F¦aªü©Ô§B" + RT_CTRY_SG, // "Singapore·s¥[©Y" + RT_CTRY_SK, // "Slovakia´µ¬¥¥ï§J" + RT_CTRY_SI, // "Slovenia´µ¬¥ºû¥§¨È" + RT_CTRY_ZA, // "South Africa«n«D" + RT_CTRY_ES, // "Spain¦è¯Z¤ú" + RT_CTRY_SE, // "Sweden·ç¨å" + RT_CTRY_CH, // "Switzerland·ç¤h" + RT_CTRY_TW, // "Taiwan»OÆW" + RT_CTRY_TH, // "Thailand®õ°ê" + RT_CTRY_TR, // "Turkey¤g¦Õ¨ä" + RT_CTRY_UA, // "Ukraine¯Q§JÄõ" + RT_CTRY_GB, // "United Kingdom­^°ê" + RT_CTRY_US, // "United States¬ü°ê" + RT_CTRY_VE, // "Venezuela©e¤º·ç©Ô" + RT_CTRY_VN, // "Vietnam¶V«n" + RT_CTRY_MAX, // + }RT_COUNTRY_NAME, *PRT_COUNTRY_NAME; - + // Scan type including active and passive scan. typedef enum _RT_SCAN_TYPE_NEW { @@ -349,32 +349,32 @@ typedef enum _RT_SCAN_TYPE_NEW SCAN_PAS, SCAN_BOTH, }RT_SCAN_TYPE_NEW, *PRT_SCAN_TYPE_NEW; - + // Power table sample. typedef struct _RT_CHNL_PLAN_LIMIT { u2Byte Chnl_Start; - u2Byte Chnl_end; - + u2Byte Chnl_end; + u2Byte Freq_Start; - u2Byte Freq_end; + u2Byte Freq_end; }RT_CHNL_PLAN_LIMIT, *PRT_CHNL_PLAN_LIMIT; - -// + +// // 2.4G Regulatory Domains // typedef enum _RT_REGULATION_DOMAIN_2G { - RT_2G_NULL, + RT_2G_NULL, RT_2G_WORLD, RT_2G_ETSI1, RT_2G_FCC1, RT_2G_MKK1, - RT_2G_ETSI2 - + RT_2G_ETSI2 + }RT_REGULATION_2G, *PRT_REGULATION_2G; @@ -382,12 +382,12 @@ typedef enum _RT_REGULATION_DOMAIN_2G //{ // u1Byte Chnl; // RT_SCAN_TYPE_NEW -// +// //}RT_CHANNEL_BEHAVIOR, *PRT_CHANNEL_BEHAVIOR; //typedef struct _RT_CHANNEL_PLAN_TYPE //{ -// RT_CHANNEL_BEHAVIOR +// RT_CHANNEL_BEHAVIOR // u1Byte Chnl_num; //}RT_CHNL_PLAN_TYPE, *PRT_CHNL_PLAN_TYPE; @@ -447,17 +447,17 @@ typedef enum _RT_REGULATION_DOMAIN_2G {2457, 2472}, 1 -// +// // 5G Regulatory Domains // typedef enum _RT_REGULATION_DOMAIN_5G -{ +{ RT_5G_NULL, RT_5G_WORLD, RT_5G_ETSI1, RT_5G_ETSI2, RT_5G_ETSI3, - RT_5G_FCC1, + RT_5G_FCC1, RT_5G_FCC2, RT_5G_FCC3, RT_5G_FCC4, @@ -470,7 +470,7 @@ typedef enum _RT_REGULATION_DOMAIN_5G RT_5G_MKK2, RT_5G_MKK3, RT_5G_NCC1, - + }RT_REGULATION_5G, *PRT_REGULATION_5G; // @@ -511,7 +511,7 @@ typedef enum _RT_REGULATION_DOMAIN_5G #define CHNL_RT_5G_MKK3 \ {56,60,64,100,104,108,112,116,136,140,149,153,157,161,165}, 24 #define CHNL_RT_5G_NCC1 \ - {56,60,64,149,153,157,161,165}, 8 + {56,60,64,149,153,157,161,165}, 8 // // 5G Channel Active or passive scan. @@ -551,26 +551,26 @@ typedef enum _RT_REGULATION_DOMAIN_5G #define CHNL_RT_5G_MKK3_SCAN_TYPE \ {56,60,64,100,104,108,112,116,136,140,149,153,157,161,165}, 24 #define CHNL_RT_5G_NCC1_SCAN_TYPE \ - {56,60,64,149,153,157,161,165}, 8 + {56,60,64,149,153,157,161,165}, 8 -// +// // Global Regulation // typedef enum _RT_REGULATION_COMMON { - RT_WORLD, - RT_FCC, + RT_WORLD, + RT_FCC, RT_MKK, RT_ETSI, RT_IC, RT_CE, RT_NCC, - + }RT_REGULATION_CMN, *PRT_REGULATION_CMN; -// +// // Special requirement for different regulation domain. // For internal test or customerize special request. // @@ -580,46 +580,46 @@ typedef enum _RT_CHNLPLAN_SREQ RT_SREQ_2G_ADHOC_11N = 0x00000001, RT_SREQ_2G_ADHOC_11B = 0x00000002, RT_SREQ_2G_ALL_PASS = 0x00000004, - RT_SREQ_2G_ALL_ACT = 0x00000008, + RT_SREQ_2G_ALL_ACT = 0x00000008, RT_SREQ_5G_ADHOC_11N = 0x00000010, RT_SREQ_5G_ADHOC_11AC = 0x00000020, RT_SREQ_5G_ALL_PASS = 0x00000040, RT_SREQ_5G_ALL_ACT = 0x00000080, - RT_SREQ_C1_PLAN = 0x00000100, - RT_SREQ_C2_PLAN = 0x00000200, - RT_SREQ_C3_PLAN = 0x00000400, - RT_SREQ_C4_PLAN = 0x00000800, - RT_SREQ_NFC_ON = 0x00001000, + RT_SREQ_C1_PLAN = 0x00000100, + RT_SREQ_C2_PLAN = 0x00000200, + RT_SREQ_C3_PLAN = 0x00000400, + RT_SREQ_C4_PLAN = 0x00000800, + RT_SREQ_NFC_ON = 0x00001000, RT_SREQ_MASK = 0x0000FFFF, /* Requirements bit mask */ - + }RT_CHNLPLAN_SREQ, *PRT_CHNLPLAN_SREQ; // // RT_COUNTRY_NAME & RT_REGULATION_2G & RT_REGULATION_5G transfer table -// +// // typedef struct _RT_CHANNEL_PLAN_COUNTRY_TRANSFER_TABLE -{ +{ + // + // Define countery domain and corresponding // - // Define countery domain and corresponding - // RT_COUNTRY_NAME Country_Enum; char Country_Name[3]; - + //char Domain_Name[12]; - RT_REGULATION_2G Domain_2G; + RT_REGULATION_2G Domain_2G; - RT_REGULATION_5G Domain_5G; + RT_REGULATION_5G Domain_5G; RT_CHANNEL_DOMAIN RtChDomain; //u1Byte Country_Area; - + }RT_CHNL_CTRY_TBL, *PRT_CHNL_CTRY_TBL; - + #define RT_MAX_CHNL_NUM_2G 13 -#define RT_MAX_CHNL_NUM_5G 44 +#define RT_MAX_CHNL_NUM_5G 44 // Power table sample. @@ -640,7 +640,7 @@ typedef struct _RT_CHANNEL_PLAN_MAXPWR RT_CHNL_PWR_LIMIT Chnl[RT_MAX_BAND_NUM]; u1Byte Band_Useful_Num; - + }RT_CHANNEL_PLAN_MAXPWR, *PRT_CHANNEL_PLAN_MAXPWR; @@ -651,49 +651,45 @@ typedef struct _RT_CHANNEL_PLAN_MAXPWR typedef struct _RT_CHANNEL_PLAN_NEW -{ +{ // - // Define countery domain and corresponding + // Define countery domain and corresponding // //char Country_Name[36]; //u1Byte Country_Enum; - + //char Domain_Name[12]; - + PRT_CHNL_CTRY_TBL pCtryTransfer; - - RT_CHANNEL_DOMAIN RtChDomain; + + RT_CHANNEL_DOMAIN RtChDomain; RT_REGULATION_2G Domain_2G; - RT_REGULATION_5G Domain_5G; + RT_REGULATION_5G Domain_5G; RT_REGULATION_CMN Regulator; RT_CHNLPLAN_SREQ ChnlSreq; - + //RT_CHNL_PLAN_LIMIT RtChnl; - + u1Byte Chnl2G[MAX_CHANNEL_NUM]; // CHNL_RT_2G_WORLD u1Byte Len2G; u1Byte Chnl2GScanTp[MAX_CHANNEL_NUM]; // CHNL_RT_2G_WORLD_SCAN_TYPE //u1Byte Freq2G[2]; // FREQ_RT_2G_WORLD - u1Byte Chnl5G[MAX_CHANNEL_NUM]; + u1Byte Chnl5G[MAX_CHANNEL_NUM]; u1Byte Len5G; u1Byte Chnl5GScanTp[MAX_CHANNEL_NUM]; //u1Byte Freq2G[2]; // FREQ_RT_2G_WORLD RT_CHANNEL_PLAN_MAXPWR ChnlMaxPwr; - - + + }RT_CHANNEL_PLAN_NEW, *PRT_CHANNEL_PLAN_NEW; - - + + #endif // __RT_CHANNELPLAN_H__ - - - - - + diff --git a/include/autoconf.h b/include/autoconf.h index b0b55720b..3c1713f19 100644 --- a/include/autoconf.h +++ b/include/autoconf.h @@ -309,7 +309,6 @@ #endif /* !CONFIG_BT_COEXIST */ - #ifdef CONFIG_USB_TX_AGGREGATION /* #define CONFIG_TX_EARLY_MODE */ #endif @@ -347,12 +346,11 @@ /* #define DBG_RX_SIGNAL_DISPLAY_SSID_MONITORED "jeff-ap" */ - /* #define DBG_SHOW_MCUFWDL_BEFORE_51_ENABLE */ /* #define DBG_ROAMING_TEST */ /* #define DBG_HAL_INIT_PROFILING */ -/*#define DBG_MEMORY_LEAK*/ +/* #define DBG_MEMORY_LEAK*/ #define DBG_RX_DFRAME_RAW_DATA -#define CONFIG_USE_EXTERNAL_POWER /* NOT USB2.0 power, so no 500mA power constraint, no limitation in Power by Rate */ +/* #define CONFIG_USE_EXTERNAL_POWER */ /* NOT USB2.0 power, so no 500mA power constraint, no limitation in Power by Rate */ diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 8a7e088d6..d30cbe528 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -3767,6 +3767,11 @@ static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name, struct ne mon_wdev->iftype = NL80211_IFTYPE_MONITOR; mon_ndev->ieee80211_ptr = mon_wdev; + SET_NETDEV_DEV(mon_ndev, wiphy_dev(pwdev_priv->rtw_wdev->wiphy)); + + memcpy(mon_ndev->dev_addr, padapter->pnetdev->dev_addr, ETH_ALEN); + memcpy(mon_ndev->perm_addr, padapter->pnetdev->perm_addr, ETH_ALEN); + ret = register_netdevice(mon_ndev); if (ret) goto out; From 3d3ba368281242f17cce5c1a0e35602b0b6227b9 Mon Sep 17 00:00:00 2001 From: Christian B Date: Thu, 8 Mar 2018 09:03:26 +0100 Subject: [PATCH 190/234] Delete .cache.mk --- .cache.mk | 61 ------------------------------------------------------- 1 file changed, 61 deletions(-) delete mode 100644 .cache.mk diff --git a/.cache.mk b/.cache.mk deleted file mode 100644 index 4c8e1090b..000000000 --- a/.cache.mk +++ /dev/null @@ -1,61 +0,0 @@ -__cached__gcc-7_-v_2>&1_|_grep_-q_"clang_version"_&&_echo_clang_||_echo_gcc := gcc -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-fno-PIE";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fno-PIE -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-fno-PIE_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-fno-PIE";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fno-PIE -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-Wmaybe-uninitialized_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-maybe-uninitialized";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-maybe-uninitialized -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE__-mpreferred-stack-boundary_4_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-mpreferred-stack-boundary_4";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mpreferred-stack-boundary=4 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE__-m16_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-m16";_else_echo_"_-m32_-Wa_/usr/src/linux-headers-4.15.0-kali1-common/arch/x86/boot/code16gcc.h";_fi;_rm_-f_"_TMP"_"_TMPO" := -m16 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror__-m16_-g_-Os_-D__KERNEL___-DDISABLE_BRANCH_PROFILING_-Wall_-Wstrict-prototypes_-march_i386_-mregparm_3_-fno-strict-aliasing_-fomit-frame-pointer_-fno-pic_-mno-mmx_-mno-sse__-ffreestanding_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-ffreestanding";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -ffreestanding -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror__-m16_-g_-Os_-D__KERNEL___-DDISABLE_BRANCH_PROFILING_-Wall_-Wstrict-prototypes_-march_i386_-mregparm_3_-fno-strict-aliasing_-fomit-frame-pointer_-fno-pic_-mno-mmx_-mno-sse_-ffreestanding__-fno-stack-protector_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-fno-stack-protector";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fno-stack-protector -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror__-m16_-g_-Os_-D__KERNEL___-DDISABLE_BRANCH_PROFILING_-Wall_-Wstrict-prototypes_-march_i386_-mregparm_3_-fno-strict-aliasing_-fomit-frame-pointer_-fno-pic_-mno-mmx_-mno-sse_-ffreestanding_-fno-stack-protector__-mpreferred-stack-boundary_2_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-mpreferred-stack-boundary_2";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mpreferred-stack-boundary=2 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-mno-avx";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mno-avx -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-falign-jumps_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -falign-jumps=1 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-falign-loops_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -falign-loops=1 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-mno-80387";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mno-80387 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-mno-fp-ret-in-387";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mno-fp-ret-in-387 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-mpreferred-stack-boundary_3";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mpreferred-stack-boundary=3 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-mskip-rax-setup";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mskip-rax-setup -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-mtune_generic";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mtune=generic -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-funit-at-a-time";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -funit-at-a-time -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI__-mfentry_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"y";_else_echo_"n";_fi;_rm_-f_"_TMP"_"_TMPO" := y -__cached_/bin/bash_/usr/src/linux-headers-4.15.0-kali1-common/scripts/gcc-version.sh_-p__gcc-7_ := 070300 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_".cfi_startproc_n.cfi_rel_offset_rsp_0_n.cfi_endproc"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_CFI_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_CFI=1 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_".cfi_startproc_n.cfi_signal_frame_n.cfi_endproc"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_CFI_SIGNAL_FRAME_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_".cfi_sections_.debug_frame"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_CFI_SECTIONS_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_CFI_SECTIONS=1 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"fxsaveq__%rax_"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_FXSAVEQ_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_FXSAVEQ=1 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"pshufb_%xmm0_%xmm0"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_SSSE3_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_SSSE3=1 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"crc32l_%eax_%eax"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_CRC32_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_CRC32=1 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"vxorps_%ymm0_%ymm1_%ymm2"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_AVX_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_AVX=1 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"vpbroadcastb_%xmm0_%ymm1"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_AVX2_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_AVX2=1 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"vpmovm2b_%k1_%zmm5"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_AVX512_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_AVX512=1 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"sha1msg1_%xmm0_%xmm1"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_SHA1_NI_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_SHA1_NI=1 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___printf_"%b_n"_"sha256msg1_%xmm0_%xmm1"_|__gcc-7_-D__ASSEMBLY___-fno-PIE_-m64_-DCONFIG_X86_X32_ABI_-c_-x_assembler_-o_"_TMP"_-__>/dev/null_2>&1;_then_echo_"-DCONFIG_AS_SHA256_NI_1";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -DCONFIG_AS_SHA256_NI=1 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-mindirect-branch_thunk-extern_-mindirect-branch-register";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mindirect-branch=thunk-extern -mindirect-branch-register -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-fno-delete-null-pointer-checks";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fno-delete-null-pointer-checks -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wframe-address_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-frame-address";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-frame-address -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wformat-truncation_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-format-truncation";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-format-truncation -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wformat-overflow_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-format-overflow";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-format-overflow -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wint-in-bool-context_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-int-in-bool-context";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-int-in-bool-context -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_-Wmaybe-uninitialized_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-maybe-uninitialized";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-maybe-uninitialized -__cached_/bin/bash_/usr/src/linux-headers-4.15.0-kali1-common/scripts/gcc-version.sh__gcc-7_ := 0703 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"--param_allow-store-data-races_0";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := --param=allow-store-data-races=0 -__cached_/bin/bash_/usr/src/linux-headers-4.15.0-kali1-common/scripts/gcc-goto.sh__gcc-7_-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2__--param_allow-store-data-races_0 := y -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wframe-larger-than_2048";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wframe-larger-than=2048 -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-nostdinc_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wunused-but-set-variable_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-unused-but-set-variable";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-unused-but-set-variable -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-nostdinc_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wunused-const-variable_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-unused-const-variable";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-unused-const-variable -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable__-fno-var-tracking-assignments_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-fno-var-tracking-assignments";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fno-var-tracking-assignments -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g__-mfentry_-DCC_USING_FENTRY_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-mfentry_-DCC_USING_FENTRY";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -mfentry -DCC_USING_FENTRY -__cached__gcc-7_-print-file-name_include := /usr/lib/gcc/x86_64-linux-gnu/7/include -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wdeclaration-after-statement";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wdeclaration-after-statement -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7_-Werror__-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wpointer-sign_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Wno-pointer-sign";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wno-pointer-sign -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-fno-strict-overflow";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fno-strict-overflow -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-fno-stack-check";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fno-stack-check -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-fconserve-stack";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -fconserve-stack -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-Werror_implicit-int_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Werror_implicit-int";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Werror=implicit-int -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-Werror_implicit-int_-Werror_strict-prototypes_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Werror_strict-prototypes";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Werror=strict-prototypes -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-Werror_implicit-int_-Werror_strict-prototypes_-Werror_date-time_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Werror_date-time";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Werror=date-time -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-Werror_implicit-int_-Werror_strict-prototypes_-Werror_date-time_-Werror_incompatible-pointer-types_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Werror_incompatible-pointer-types";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Werror=incompatible-pointer-types -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if_____gcc-7_-Werror___-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL___-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-Werror_implicit-int_-Werror_strict-prototypes_-Werror_date-time_-Werror_incompatible-pointer-types_-Werror_designated-init_-c_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"-Werror_designated-init";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Werror=designated-init -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if___ar_rcD_"_TMP"__>/dev/null_2>&1;_then_echo_"D";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := D -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7__-Wl_--build-id_-D__KERNEL_____-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-Werror_implicit-int_-Werror_strict-prototypes_-Werror_date-time_-Werror_incompatible-pointer-types_-Werror_designated-init_-nostdlib_-x_c_/dev/null_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-Wl_--build-id";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -Wl,--build-id -__cached_set_-e;_TMP_"/root/Downloads/rtl8812au/.__.tmp";_TMPO_"/root/Downloads/rtl8812au/.__.o";_if____gcc-7__-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include_-D__KERNEL_____-Wall_-Wundef_-Wstrict-prototypes_-Wno-trigraphs_-fno-strict-aliasing_-fno-common_-fshort-wchar_-Werror-implicit-function-declaration_-Wno-format-security_-std_gnu89_-fno-PIE_-mno-sse_-mno-mmx_-mno-sse2_-mno-3dnow_-mno-avx_-m64_-falign-jumps_1_-falign-loops_1_-mno-80387_-mno-fp-ret-in-387_-mpreferred-stack-boundary_3_-mskip-rax-setup_-mtune_generic_-mno-red-zone_-mcmodel_kernel_-funit-at-a-time_-DCONFIG_X86_X32_ABI_-DCONFIG_AS_CFI_1_-DCONFIG_AS_CFI_SIGNAL_FRAME_1_-DCONFIG_AS_CFI_SECTIONS_1_-DCONFIG_AS_FXSAVEQ_1_-DCONFIG_AS_SSSE3_1_-DCONFIG_AS_CRC32_1_-DCONFIG_AS_AVX_1_-DCONFIG_AS_AVX2_1_-DCONFIG_AS_AVX512_1_-DCONFIG_AS_SHA1_NI_1_-DCONFIG_AS_SHA256_NI_1_-pipe_-Wno-sign-compare_-fno-asynchronous-unwind-tables_-mindirect-branch_thunk-extern_-mindirect-branch-register_-DRETPOLINE_-fno-delete-null-pointer-checks_-Wno-frame-address_-Wno-format-truncation_-Wno-format-overflow_-Wno-int-in-bool-context_-O2_--param_allow-store-data-races_0_-DCC_HAVE_ASM_GOTO_-Wframe-larger-than_2048_-fstack-protector-strong_-Wno-unused-but-set-variable_-Wno-unused-const-variable_-fno-var-tracking-assignments_-g_-pg_-mfentry_-DCC_USING_FENTRY_-Wdeclaration-after-statement_-Wno-pointer-sign_-fno-strict-overflow_-fno-stack-check_-fconserve-stack_-Werror_implicit-int_-Werror_strict-prototypes_-Werror_date-time_-Werror_incompatible-pointer-types_-Werror_designated-init_-x_c_/dev/null_-c_-o_"_TMPO";_ld_-m_elf_x86_64__-X_"_TMPO"_-o_"_TMP"__>/dev/null_2>&1;_then_echo_"_-X";_else_echo_"";_fi;_rm_-f_"_TMP"_"_TMPO" := -X -__cached_/bin/bash_/usr/src/linux-headers-4.15.0-kali1-common/scripts/gcc-version.sh__gcc-7__-nostdinc_-isystem_/usr/lib/gcc/x86_64-linux-gnu/7/include := 0703 From ba289be43f8d02db7d2d450cf7f2d4a3e782b5f5 Mon Sep 17 00:00:00 2001 From: Christian B Date: Thu, 8 Mar 2018 09:07:54 +0100 Subject: [PATCH 191/234] Remove virtual interface partially broken test * Tested "virtual interface" support, it was working on setting adapter to monitor mode with "airmon-ng", but when putting back to managed mode, kernel does panic and stall. Needs more work before it's added, therefor.. removing for now. --- os_dep/linux/ioctl_cfg80211.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index d30cbe528..8a7e088d6 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -3767,11 +3767,6 @@ static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name, struct ne mon_wdev->iftype = NL80211_IFTYPE_MONITOR; mon_ndev->ieee80211_ptr = mon_wdev; - SET_NETDEV_DEV(mon_ndev, wiphy_dev(pwdev_priv->rtw_wdev->wiphy)); - - memcpy(mon_ndev->dev_addr, padapter->pnetdev->dev_addr, ETH_ALEN); - memcpy(mon_ndev->perm_addr, padapter->pnetdev->perm_addr, ETH_ALEN); - ret = register_netdevice(mon_ndev); if (ret) goto out; From 0bea27c3c3d13643cb7fc2a8fdbe5cbcad25f48a Mon Sep 17 00:00:00 2001 From: Christian B Date: Thu, 8 Mar 2018 09:54:40 +0100 Subject: [PATCH 192/234] use Travis CI integration --- .travis.yml | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..f661fe749 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,69 @@ +language: c +compiler: gcc +sudo: required + +before_install: + - export ALL_DEB=$(wget --quiet -O - ${KERNEL_URL}v${KVER}/ | grep -o 'href=".*"' | grep -m1 all | cut -d '"' -f 2) + - export KVER_BUILD=$(echo $ALL_DEB | cut -d '_' -f 1 | cut -c15-) + - wget ${KERNEL_URL}v${KVER}/$(wget --quiet -O - ${KERNEL_URL}v${KVER}/ | grep -o 'href=".*"' | grep headers | grep generic | grep -m1 amd64 | cut -d '"' -f 2) + - wget ${KERNEL_URL}v${KVER}/$ALL_DEB + - sudo dpkg -i *.deb + +script: + - gcc --version + - make CC=$COMPILER KVER=$KVER_BUILD-generic + +env: + global: + - KERNEL_URL=http://kernel.ubuntu.com/~kernel-ppa/mainline/ + +matrix: + include: + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-5 + env: COMPILER=gcc-5 KVER=4.14 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-6 + env: COMPILER=gcc-6 KVER=4.14 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-7 + env: COMPILER=gcc-7 KVER=4.14 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-5 + env: COMPILER=gcc-5 KVER=4.4.97 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-4.9 + env: COMPILER=gcc-4.9 KVER=3.16.50 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-5 + env: COMPILER=gcc-5 KVER=3.14.79 From c22c24ed0c699f3ef56cbd027adf4166a548c19e Mon Sep 17 00:00:00 2001 From: kimocoder Date: Thu, 8 Mar 2018 12:12:53 +0100 Subject: [PATCH 193/234] Fix building on older kernels + arm --- .gitignore | 1 + include/rtw_wifi_regd.h | 13 + os_dep/linux/wifi_regd.c | 505 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 516 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index af8ad0829..0971eb155 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ Module.symvers modules.order *.mod.c .tmp_versions +.cache.mk diff --git a/include/rtw_wifi_regd.h b/include/rtw_wifi_regd.h index 69bd71d8c..ba130a236 100644 --- a/include/rtw_wifi_regd.h +++ b/include/rtw_wifi_regd.h @@ -7,6 +7,18 @@ #ifndef __RTW_WIFI_REGD_H__ #define __RTW_WIFI_REGD_H__ +struct country_code_to_enum_rd { + u16 countrycode; + const char *iso_name; +}; + +enum country_code_type_t { + COUNTRY_CODE_USER = 0, + + /*add new channel plan above this line */ + COUNTRY_CODE_MAX +}; + int rtw_regd_init(_adapter *padapter); void rtw_reg_notify_by_driver(_adapter *adapter); @@ -18,3 +30,4 @@ void rtw_reg_notify_by_driver(_adapter *adapter); #endif #endif /* __RTW_WIFI_REGD_H__ */ + diff --git a/os_dep/linux/wifi_regd.c b/os_dep/linux/wifi_regd.c index fa8ba7b5b..3296d695b 100644 --- a/os_dep/linux/wifi_regd.c +++ b/os_dep/linux/wifi_regd.c @@ -10,13 +10,512 @@ #include -void rtw_reg_notify_by_driver(_adapter *adapter) +static struct country_code_to_enum_rd allCountries[] = { + {COUNTRY_CODE_USER, "RD"}, +}; + +/* + * REG_RULE(freq start, freq end, bandwidth, max gain, eirp, reg_flags) + */ + +/* + *Only these channels all allow active + *scan on all world regulatory domains + */ + +/* 2G chan 01 - chan 11 */ +#define RTW_2GHZ_CH01_11 \ + REG_RULE(2412-10, 2462+10, 40, 0, 20, 0) + +/* + *We enable active scan on these a case + *by case basis by regulatory domain + */ + +/* 2G chan 12 - chan 13, PASSIV SCAN */ +#define RTW_2GHZ_CH12_13 \ + REG_RULE(2467-10, 2472+10, 40, 0, 20, \ + NL80211_RRF_PASSIVE_SCAN) + +/* 2G chan 14, PASSIVS SCAN, NO OFDM (B only) */ +#define RTW_2GHZ_CH14 \ + REG_RULE(2484-10, 2484+10, 40, 0, 20, \ + NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_OFDM) + +/* 5G chan 36 - chan 64 */ +#define RTW_5GHZ_5150_5350 \ + REG_RULE(5150-10, 5350+10, 80, 0, 30, \ + NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) + +/* 5G chan 100 - chan 165 */ +#define RTW_5GHZ_5470_5850 \ + REG_RULE(5470-10, 5850+10, 80, 0, 30, \ + NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) + +/* 5G chan 149 - chan 165 */ +#define RTW_5GHZ_5725_5850 \ + REG_RULE(5725-10, 5850+10, 80, 0, 30, \ + NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) + +/* 5G chan 36 - chan 165 */ +#define RTW_5GHZ_5150_5850 \ + REG_RULE(5150-10, 5850+10, 80, 0, 30, \ + NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) + +static const struct ieee80211_regdomain rtw_regdom_rd = { + .n_reg_rules = 4, + .alpha2 = "99", + .reg_rules = { + RTW_2GHZ_CH01_11, + RTW_2GHZ_CH12_13, + RTW_2GHZ_CH14, + RTW_5GHZ_5150_5850, + } +}; +#if 0 +static const struct ieee80211_regdomain rtw_regdom_11 = { + .n_reg_rules = 1, + .alpha2 = "99", + .reg_rules = { + RTW_2GHZ_CH01_11, + } +}; + +static const struct ieee80211_regdomain rtw_regdom_12_13 = { + .n_reg_rules = 2, + .alpha2 = "99", + .reg_rules = { + RTW_2GHZ_CH01_11, + RTW_2GHZ_CH12_13, + } +}; + +static const struct ieee80211_regdomain rtw_regdom_no_midband = { + .n_reg_rules = 3, + .alpha2 = "99", + .reg_rules = { + RTW_2GHZ_CH01_11, + RTW_5GHZ_5150_5350, + RTW_5GHZ_5725_5850, + } +}; + +static const struct ieee80211_regdomain rtw_regdom_60_64 = { + .n_reg_rules = 3, + .alpha2 = "99", + .reg_rules = { + RTW_2GHZ_CH01_11, + RTW_2GHZ_CH12_13, + RTW_5GHZ_5725_5850, + } +}; + +static const struct ieee80211_regdomain rtw_regdom_14_60_64 = { + .n_reg_rules = 4, + .alpha2 = "99", + .reg_rules = { + RTW_2GHZ_CH01_11, + RTW_2GHZ_CH12_13, + RTW_2GHZ_CH14, + RTW_5GHZ_5725_5850, + } +}; + +static const struct ieee80211_regdomain rtw_regdom_14 = { + .n_reg_rules = 3, + .alpha2 = "99", + .reg_rules = { + RTW_2GHZ_CH01_11, + RTW_2GHZ_CH12_13, + RTW_2GHZ_CH14, + } +}; +#endif +#if 0 +static struct rtw_regulatory *rtw_regd; +#endif + +static bool _rtw_is_radar_freq(u16 center_freq) +{ + return (center_freq >= 5260 && center_freq <= 5700); +} + +#if 0 // not_yet +static void _rtw_reg_apply_beaconing_flags(struct wiphy *wiphy, + enum nl80211_reg_initiator initiator) +{ + enum ieee80211_band band; + struct ieee80211_supported_band *sband; + const struct ieee80211_reg_rule *reg_rule; + struct ieee80211_channel *ch; + unsigned int i; + u32 bandwidth = 0; + int r; + + for (band = 0; band < IEEE80211_NUM_BANDS; band++) { + + if (!wiphy->bands[band]) + continue; + + sband = wiphy->bands[band]; + + for (i = 0; i < sband->n_channels; i++) { + ch = &sband->channels[i]; + if (_rtw_is_radar_freq(ch->center_freq) || + (ch->flags & IEEE80211_CHAN_RADAR)) + continue; + if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) { + r = freq_reg_info(wiphy, ch->center_freq, + bandwidth, ®_rule); + if (r) + continue; + + /* + *If 11d had a rule for this channel ensure + *we enable adhoc/beaconing if it allows us to + *use it. Note that we would have disabled it + *by applying our static world regdomain by + *default during init, prior to calling our + *regulatory_hint(). + */ + + if (!(reg_rule->flags & NL80211_RRF_NO_IBSS)) + ch->flags &= ~IEEE80211_CHAN_NO_IBSS; + if (! + (reg_rule->flags & + NL80211_RRF_PASSIVE_SCAN)) + ch->flags &= + ~IEEE80211_CHAN_PASSIVE_SCAN; + } else { + if (ch->beacon_found) + ch->flags &= ~(IEEE80211_CHAN_NO_IBSS | + IEEE80211_CHAN_PASSIVE_SCAN); + } + } + } +} + +/* Allows active scan scan on Ch 12 and 13 */ +static void _rtw_reg_apply_active_scan_flags(struct wiphy *wiphy, + enum nl80211_reg_initiator + initiator) +{ + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + const struct ieee80211_reg_rule *reg_rule; + u32 bandwidth = 0; + int r; + + if (!wiphy->bands[IEEE80211_BAND_2GHZ]) + return; + sband = wiphy->bands[IEEE80211_BAND_2GHZ]; + + /* + * If no country IE has been received always enable active scan + * on these channels. This is only done for specific regulatory SKUs + */ + if (initiator != NL80211_REGDOM_SET_BY_COUNTRY_IE) { + ch = &sband->channels[11]; /* CH 12 */ + if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) + ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; + ch = &sband->channels[12]; /* CH 13 */ + if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) + ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; + return; + } + + /* + * If a country IE has been received check its rule for this + * channel first before enabling active scan. The passive scan + * would have been enforced by the initial processing of our + * custom regulatory domain. + */ + + ch = &sband->channels[11]; /* CH 12 */ + r = freq_reg_info(wiphy, ch->center_freq, bandwidth, ®_rule); + if (!r) { + if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN)) + if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) + ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; + } + + ch = &sband->channels[12]; /* CH 13 */ + r = freq_reg_info(wiphy, ch->center_freq, bandwidth, ®_rule); + if (!r) { + if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN)) + if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) + ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; + } +} +#endif + +/* + * Always apply Radar/DFS rules on + * freq range 5260 MHz - 5700 MHz + */ +static void _rtw_reg_apply_radar_flags(struct wiphy *wiphy) +{ + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + unsigned int i; + + if (!wiphy->bands[IEEE80211_BAND_5GHZ]) + return; + + sband = wiphy->bands[IEEE80211_BAND_5GHZ]; + + for (i = 0; i < sband->n_channels; i++) { + ch = &sband->channels[i]; + if (!_rtw_is_radar_freq(ch->center_freq)) + continue; +#ifdef CONFIG_DFS + #if defined(CONFIG_DFS_MASTER) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) + if (!(ch->flags & IEEE80211_CHAN_DISABLED)) { + ch->flags |= IEEE80211_CHAN_RADAR; + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)) + ch->flags |= (IEEE80211_CHAN_NO_IBSS|IEEE80211_CHAN_PASSIVE_SCAN); + #else + ch->flags |= IEEE80211_CHAN_NO_IR; + #endif + } + #endif +#endif //CONFIG_DFS + +#if 0 + /* + * We always enable radar detection/DFS on this + * frequency range. Additionally we also apply on + * this frequency range: + * - If STA mode does not yet have DFS supports disable + * active scanning + * - If adhoc mode does not support DFS yet then disable + * adhoc in the frequency. + * - If AP mode does not yet support radar detection/DFS + * do not allow AP mode + */ + if (!(ch->flags & IEEE80211_CHAN_DISABLED)) + ch->flags |= IEEE80211_CHAN_RADAR | + IEEE80211_CHAN_NO_IBSS | + IEEE80211_CHAN_PASSIVE_SCAN; +#endif + } +} + +static void _rtw_reg_apply_flags(struct wiphy *wiphy) +{ +#if 1 // by channel plan + _adapter *padapter = wiphy_to_adapter(wiphy); + + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + unsigned int i, j; + u16 channel; + + // all channels disable + for (i = 0; i < IEEE80211_NUM_BANDS; i++) { + sband = wiphy->bands[i]; + + if (sband) { + for (j = 0; j < sband->n_channels; j++) { + ch = &sband->channels[j]; + + if (ch) + ch->flags &= ~(IEEE80211_CHAN_DISABLED|IEEE80211_CHAN_NO_HT40PLUS| + IEEE80211_CHAN_NO_HT40MINUS|IEEE80211_CHAN_NO_80MHZ| + IEEE80211_CHAN_NO_160MHZ); + } + } + } + +#else + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + unsigned int i, j; + u16 channels[37] = + { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, + 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, + 149, 153, + 157, 161, 165 + }; + u16 channel; + u32 freq; + + for (i = 0; i < IEEE80211_NUM_BANDS; i++) { + sband = wiphy->bands[i]; + + if (sband) + for (j = 0; j < sband->n_channels; j++) { + ch = &sband->channels[j]; + + if (ch) + ch->flags = IEEE80211_CHAN_DISABLED; + } + } + + for (i = 0; i < 37; i++) { + channel = channels[i]; + freq = rtw_ch2freq(channel); + + ch = ieee80211_get_channel(wiphy, freq); + if (ch) { + if (channel <= 11) + ch->flags = 0; + else + ch->flags = 0; //IEEE80211_CHAN_PASSIVE_SCAN; + } + //printk("%s: freq %d(%d) flag 0x%02X \n", __func__, freq, channel, ch->flags); + } +#endif +} + +static void _rtw_reg_apply_world_flags(struct wiphy *wiphy, + enum nl80211_reg_initiator initiator, + struct rtw_regulatory *reg) { + //_rtw_reg_apply_beaconing_flags(wiphy, initiator); + //_rtw_reg_apply_active_scan_flags(wiphy, initiator); return; } -int rtw_regd_init(_adapter *padapter) +static int _rtw_reg_notifier_apply(struct wiphy *wiphy, + struct regulatory_request *request, + struct rtw_regulatory *reg) +{ + + /* Hard code flags */ + _rtw_reg_apply_flags(wiphy); + + /* We always apply this */ + _rtw_reg_apply_radar_flags(wiphy); + + switch (request->initiator) { + case NL80211_REGDOM_SET_BY_DRIVER: + // DBG_8192C("%s: %s\n", __func__, "NL80211_REGDOM_SET_BY_DRIVER"); + _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, + reg); + break; + case NL80211_REGDOM_SET_BY_CORE: + // DBG_8192C("%s: %s\n", __func__, "NL80211_REGDOM_SET_BY_CORE to DRV"); + _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, + reg); + break; + case NL80211_REGDOM_SET_BY_USER: + // DBG_8192C("%s: %s\n", __func__, "NL80211_REGDOM_SET_BY_USER to DRV"); + _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, + reg); + break; + case NL80211_REGDOM_SET_BY_COUNTRY_IE: + // DBG_8192C("%s: %s\n", __func__, "NL80211_REGDOM_SET_BY_COUNTRY_IE"); + _rtw_reg_apply_world_flags(wiphy, request->initiator, reg); + break; + } + + return 0; +} + +static const struct ieee80211_regdomain *_rtw_regdomain_select(struct + rtw_regulatory + *reg) +{ +#if 0 + switch (reg->country_code) { + case COUNTRY_CODE_USER: + default: + return &rtw_regdom_rd; + } +#else + return &rtw_regdom_rd; +#endif +} + +void _rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) +{ + struct rtw_regulatory *reg = NULL; + + // DBG_8192C("%s\n", __func__); + + _rtw_reg_notifier_apply(wiphy, request, reg); +} + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)) +int rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) +#else +void rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) +#endif +{ + _rtw_reg_notifier(wiphy, request); + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)) + return 0; + #endif +} + +void rtw_reg_notify_by_driver(_adapter *adapter) +{ + if ((adapter->rtw_wdev != NULL) && (adapter->rtw_wdev->wiphy)) { + struct regulatory_request request; + request.initiator = NL80211_REGDOM_SET_BY_DRIVER; + rtw_reg_notifier(adapter->rtw_wdev->wiphy, &request); + } +} + +static void _rtw_regd_init_wiphy(struct rtw_regulatory *reg, struct wiphy *wiphy) { + const struct ieee80211_regdomain *regd; + + wiphy->reg_notifier = rtw_reg_notifier; + + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)) + wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY; + wiphy->flags &= ~WIPHY_FLAG_STRICT_REGULATORY; + wiphy->flags &= ~WIPHY_FLAG_DISABLE_BEACON_HINTS; + #else + wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG; + wiphy->regulatory_flags &= ~REGULATORY_STRICT_REG; + wiphy->regulatory_flags &= ~REGULATORY_DISABLE_BEACON_HINTS; + #endif + + regd = _rtw_regdomain_select(reg); + wiphy_apply_custom_regulatory(wiphy, regd); + + /* Hard code flags */ + _rtw_reg_apply_flags(wiphy); + _rtw_reg_apply_radar_flags(wiphy); + _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, reg); +} + +static struct country_code_to_enum_rd *_rtw_regd_find_country(u16 countrycode) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(allCountries); i++) { + if (allCountries[i].countrycode == countrycode) + return &allCountries[i]; + } + return NULL; +} + +int rtw_regd_init(_adapter * padapter) +{ + struct wiphy *wiphy = padapter->rtw_wdev->wiphy; + +#if 0 + if (rtw_regd == NULL) { + rtw_regd = (struct rtw_regulatory *) + rtw_malloc(sizeof(struct rtw_regulatory)); + + rtw_regd->alpha2[0] = '9'; + rtw_regd->alpha2[1] = '9'; + + rtw_regd->country_code = COUNTRY_CODE_USER; + } + + DBG_8192C("%s: Country alpha2 being used: %c%c\n", + __func__, rtw_regd->alpha2[0], rtw_regd->alpha2[1]); +#endif + + _rtw_regd_init_wiphy(NULL, wiphy); + return 0; } -#endif /* CONFIG_IOCTL_CFG80211 */ +#endif //CONFIG_IOCTL_CFG80211 + From 06d23f2287e1ea1a776953f344c88e96c848776e Mon Sep 17 00:00:00 2001 From: Christian B Date: Fri, 9 Mar 2018 13:38:47 +0100 Subject: [PATCH 194/234] Fix build on older kernels * Added a kernel check for older kernels, fix compiling. fixes #76 --- os_dep/linux/ioctl_cfg80211.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 8a7e088d6..17937e793 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -1750,6 +1750,7 @@ static int cfg80211_rtw_get_station(struct wiphy *wiphy, sinfo->filled |= STATION_INFO_BSS_PARAM; +#if defined (LINUX_VERSION_CODE) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0)) if (!psta->no_short_preamble_set) sinfo->bss_param.flags |= STATION_INFO_BSS_PARAM_SHORT_PREAMBLE; @@ -1765,6 +1766,7 @@ static int cfg80211_rtw_get_station(struct wiphy *wiphy, sinfo->bss_param.dtim_period = pwrctl->dtim; sinfo->bss_param.beacon_interval = get_beacon_interval(&cur_network->network); +#endif } From 19c72ad5693e403e9f83a524f02f58179acb5f74 Mon Sep 17 00:00:00 2001 From: Christian B Date: Sat, 10 Mar 2018 10:30:03 +0100 Subject: [PATCH 195/234] Added CONFIG_USB2_EXTERNAL_POWER switch --- Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Makefile b/Makefile index f917708cb..850e93d08 100755 --- a/Makefile +++ b/Makefile @@ -72,6 +72,7 @@ CONFIG_TDLS = n CONFIG_WIFI_MONITOR = y CONFIG_MCC_MODE = n CONFIG_APPEND_VENDOR_IE_ENABLE = n +CONFIG_USB2_EXTERNAL_POWER = n ########################## Debug ########################### CONFIG_RTW_DEBUG = n # default log level is _DRV_INFO_ = 4, @@ -185,6 +186,10 @@ else EXTRA_CFLAGS += -DDBG=0 endif +ifeq ($(CONFIG_USB2_EXTERNAL_POWER), y) +EXTRA_CFLAGS += -DCONFIG_USE_EXTERNAL_POWER +endif + _OS_INTFS_FILES := os_dep/osdep_service.o \ os_dep/linux/os_intfs.o \ os_dep/linux/$(HCI_NAME)_intf.o \ From 141c673e1a8528444d344440b4cfede1322c5342 Mon Sep 17 00:00:00 2001 From: Christian B Date: Sat, 10 Mar 2018 20:45:09 +0100 Subject: [PATCH 196/234] Fix dkms install problem with kernel version --- dkms.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dkms.conf b/dkms.conf index 234f88e2b..74648a264 100644 --- a/dkms.conf +++ b/dkms.conf @@ -3,7 +3,7 @@ PACKAGE_VERSION="5.1.5~20180125" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" -MAKE[0]="'make' && 'make' RTL8814=1" +MAKE[0]="'make' KVER=${kernelver} && 'make' RTL8814=1 KVER=${kernelver}" BUILT_MODULE_NAME[1]=8814au DEST_MODULE_LOCATION[1]="/updates" AUTOINSTALL="yes" From c03512a8d13fb2a4bcf2b83e349225e20b20b14b Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 14 Mar 2018 15:01:59 +0100 Subject: [PATCH 197/234] arm compile fix --- Makefile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 850e93d08..64c5aa3f9 100755 --- a/Makefile +++ b/Makefile @@ -1289,9 +1289,13 @@ endif ifeq ($(CONFIG_PLATFORM_FS_MX61), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT ARCH := arm -CROSS_COMPILE := /home/share/CusEnv/FreeScale/arm-eabi-4.4.3/bin/arm-eabi- -KSRC ?= /home/share/CusEnv/FreeScale/FS_kernel_env +CROSS_COMPILE ?= +KVER ?= $(shell uname -r) +KSRC := /lib/modules/$(KVER)/build +MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ +INSTALL_PREFIX := endif ifeq ($(CONFIG_PLATFORM_ACTIONS_ATJ227X), y) From fd0b83863150027f3fc76daa4c79af216222ebf0 Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 14 Mar 2018 15:06:22 +0100 Subject: [PATCH 198/234] Fixed warning about 'EVM' by assigning '0' to it It is arbitrary, but I guess better then 'undefined'. --- hal/phydm/phydm_hwconfig.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hal/phydm/phydm_hwconfig.c b/hal/phydm/phydm_hwconfig.c index 48d31a19a..02c59c048 100644 --- a/hal/phydm/phydm_hwconfig.c +++ b/hal/phydm/phydm_hwconfig.c @@ -8,7 +8,7 @@ * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License forEVM = 100 * more details. * * You should have received a copy of the GNU General Public License along with @@ -1279,7 +1279,9 @@ odm_RxPhyStatusJaguarSeries_Parsing( EVM += 20; if (EVM > 100) EVM = 100; - } + } else { + // it's a made up value, but Realtek apparently assumed 'this would never happen' + EVM = 0; } else { if (i < ODM_RF_PATH_C) { if (pPhyStaRpt->rxevm[i] == -128) From 8eaa4e6cfbd4880c2eb93b3ea97ca8fa0b6d3533 Mon Sep 17 00:00:00 2001 From: Christian B Date: Thu, 15 Mar 2018 07:28:23 +0100 Subject: [PATCH 199/234] Enabled more debug --- Makefile | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 64c5aa3f9..9a1c4b6fb 100755 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS) EXTRA_CFLAGS += -O2 #EXTRA_CFLAGS += -O3 -#EXTRA_CFLAGS += -Wall -#EXTRA_CFLAGS += -Wextra +EXTRA_CFLAGS += -Wall +EXTRA_CFLAGS += -Wextra #EXTRA_CFLAGS += -Werror #EXTRA_CFLAGS += -pedantic #EXTRA_CFLAGS += -Wshadow -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes @@ -22,6 +22,11 @@ ifeq ($(GCC_VER_49),1) EXTRA_CFLAGS += -Wno-date-time # Fix compile error && warning on gcc 4.9 and later endif +# Relax some warnings from '-Wextra' so we won't get flooded with warnings +EXTRA_CFLAGS += -Wno-sign-compare +EXTRA_CFLAGS += -Wno-missing-field-initializers +EXTRA_CFLAGS += -Wno-type-limits + EXTRA_CFLAGS += -I$(src)/include EXTRA_CFLAGS += -I$(src)/hal/phydm From 3ffd99abaf875db59de9c0ec640d875c3601c956 Mon Sep 17 00:00:00 2001 From: kimocoder Date: Thu, 15 Mar 2018 14:53:03 +0100 Subject: [PATCH 200/234] minor fixes + cleanup --- core/rtw_mlme_ext.c | 7 +- core/rtw_wlan_util.c | 3 +- hal/phydm/phydm_beamforming.c | 161 +++++++++++++++++----------------- hal/phydm/phydm_hwconfig.c | 35 ++++---- 4 files changed, 105 insertions(+), 101 deletions(-) diff --git a/core/rtw_mlme_ext.c b/core/rtw_mlme_ext.c index cc65410b1..756810556 100644 --- a/core/rtw_mlme_ext.c +++ b/core/rtw_mlme_ext.c @@ -2201,14 +2201,15 @@ unsigned int OnAuth(_adapter *padapter, union recv_frame *precv_frame) if (rtw_is_list_empty(&pstat->asoc_list) == _FALSE) { rtw_list_delete(&pstat->asoc_list); pstapriv->asoc_list_cnt--; - if (pstat->expire_to > 0) + if (pstat->expire_to > 0) { ;/* TODO: STA re_auth within expire_to */ + } } _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); - if (seq == 1) + if (seq == 1) { ; /* TODO: STA re_auth and auth timeout */ - + } } } diff --git a/core/rtw_wlan_util.c b/core/rtw_wlan_util.c index 54c9a35e0..6de4e2e5f 100644 --- a/core/rtw_wlan_util.c +++ b/core/rtw_wlan_util.c @@ -2353,8 +2353,7 @@ int rtw_get_bcn_keys(ADAPTER *Adapter, u8 *pframe, u32 packet_len, _rtw_memcpy(recv_beacon->ssid, elems.ssid, elems.ssid_len); recv_beacon->ssid_len = elems.ssid_len; - } else - ; /* means hidden ssid */ + } else { ; } /* means hidden ssid */ /* checking RSN first */ if (elems.rsn_ie && elems.rsn_ie_len) { diff --git a/hal/phydm/phydm_beamforming.c b/hal/phydm/phydm_beamforming.c index 1078cc906..4ae03a1b4 100644 --- a/hal/phydm/phydm_beamforming.c +++ b/hal/phydm/phydm_beamforming.c @@ -25,7 +25,7 @@ phydm_staInfoInit( PRT_VERY_HIGH_THROUGHPUT pVHTInfo = GET_VHT_INFO(pMgntInfo); ODM_MoveMemory(pDM_Odm, pEntry->MyMacAddr, Adapter->CurrentAddress, 6); - + pEntry->HtBeamformCap = pHTInfo->HtBeamformCap; pEntry->VhtBeamformCap = pVHTInfo->VhtBeamformCap; @@ -44,15 +44,15 @@ phydm_staInfoInit( pEntry->WirelessMode = pMgntInfo->dot11CurrentWirelessMode; pEntry->BW = pMgntInfo->dot11CurrentChannelBandWidth; pEntry->CurBeamform = pHTInfo->HtCurBeamform; - } + } if ((pEntry->WirelessMode & WIRELESS_MODE_AC_5G) || (pEntry->WirelessMode & WIRELESS_MODE_AC_24G)) { if (staIdx != 0) pEntry->CurBeamformVHT = pSTA->VHTInfo.VhtCurBeamform; else - pEntry->CurBeamformVHT = pVHTInfo->VhtCurBeamform; + pEntry->CurBeamformVHT = pVHTInfo->VhtCurBeamform; } - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("pSTA->wireless_mode = 0x%x, staidx = %d\n", pSTA->WirelessMode, staIdx)); #elif (DM_ODM_SUPPORT_TYPE == ODM_CE) @@ -91,16 +91,16 @@ void phydm_staInfoUpdate( ) { PSTA_INFO_T pSTA = pDM_Odm->pODM_StaInfo[staIdx]; - + if (!IS_STA_VALID(pSTA)) return; - + #if (DM_ODM_SUPPORT_TYPE == ODM_CE) pSTA->txbf_paid = pBeamformEntry->P_AID; pSTA->txbf_gid = pBeamformEntry->G_ID; -#endif +#endif } - + u1Byte Beamforming_GetHTNDPTxRate( @@ -112,12 +112,12 @@ Beamforming_GetHTNDPTxRate( u1Byte Nr_index = 0; u1Byte NDPTxRate; /*Find Nr*/ - + if (pDM_Odm->SupportICType & ODM_RTL8814A) Nr_index = TxBF_Nr(halTxbf8814A_GetNtx(pDM_Odm), CompSteeringNumofBFer); else Nr_index = TxBF_Nr(1, CompSteeringNumofBFer); - + switch (Nr_index) { case 1: NDPTxRate = MGN_MCS8; @@ -130,7 +130,7 @@ Beamforming_GetHTNDPTxRate( case 3: NDPTxRate = MGN_MCS24; break; - + default: NDPTxRate = MGN_MCS8; break; @@ -154,7 +154,7 @@ Beamforming_GetVHTNDPTxRate( Nr_index = TxBF_Nr(halTxbf8814A_GetNtx(pDM_Odm), CompSteeringNumofBFer); else Nr_index = TxBF_Nr(1, CompSteeringNumofBFer); - + switch (Nr_index) { case 1: NDPTxRate = MGN_VHT2SS_MCS0; @@ -167,7 +167,7 @@ Beamforming_GetVHTNDPTxRate( case 3: NDPTxRate = MGN_VHT4SS_MCS0; break; - + default: NDPTxRate = MGN_VHT2SS_MCS0; break; @@ -188,7 +188,7 @@ phydm_Beamforming_GetBFeeEntryByAddr( PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; u1Byte i = 0; PRT_BEAMFORMING_INFO pBeamInfo = &pDM_Odm->BeamformingInfo; - + for (i = 0; i < BEAMFORMEE_ENTRY_NUM; i++) { if (pBeamInfo->BeamformeeEntry[i].bUsed && (eqMacAddr(RA, pBeamInfo->BeamformeeEntry[i].MacAddr))) { *Idx = i; @@ -209,7 +209,7 @@ phydm_Beamforming_GetBFerEntryByAddr( PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; u1Byte i = 0; PRT_BEAMFORMING_INFO pBeamInfo = &pDM_Odm->BeamformingInfo; - + for (i = 0; i < BEAMFORMER_ENTRY_NUM; i++) { if (pBeamInfo->BeamformerEntry[i].bUsed && (eqMacAddr(TA, pBeamInfo->BeamformerEntry[i].MacAddr))) { *Idx = i; @@ -231,7 +231,7 @@ phydm_Beamforming_GetEntryByMacId( PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; u1Byte i = 0; PRT_BEAMFORMING_INFO pBeamInfo = &pDM_Odm->BeamformingInfo; - + for (i = 0; i < BEAMFORMEE_ENTRY_NUM; i++) { if (pBeamInfo->BeamformeeEntry[i].bUsed && (MacId == pBeamInfo->BeamformeeEntry[i].MacId)) { *Idx = i; @@ -253,7 +253,7 @@ phydm_Beamforming_GetEntryBeamCapByMacId( u1Byte i = 0; PRT_BEAMFORMING_INFO pBeamInfo = &pDM_Odm->BeamformingInfo; BEAMFORMING_CAP BeamformEntryCap = BEAMFORMING_CAP_NONE; - + for (i = 0; i < BEAMFORMEE_ENTRY_NUM; i++) { if (pBeamInfo->BeamformeeEntry[i].bUsed && (MacId == pBeamInfo->BeamformeeEntry[i].MacId)) { BeamformEntryCap = pBeamInfo->BeamformeeEntry[i].BeamformEntryCap; @@ -279,7 +279,7 @@ phydm_Beamforming_GetFreeBFeeEntry( if (pBeamInfo->BeamformeeEntry[i].bUsed == FALSE) { *Idx = i; return &(pBeamInfo->BeamformeeEntry[i]); - } + } } return NULL; } @@ -300,7 +300,7 @@ phydm_Beamforming_GetFreeBFerEntry( if (pBeamInfo->BeamformerEntry[i].bUsed == FALSE) { *Idx = i; return &(pBeamInfo->BeamformerEntry[i]); - } + } } return NULL; } @@ -328,7 +328,7 @@ phydm_Beamforming_GetFirstMUBFeeEntryIdx( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] idx=%d!\n", __func__, idx)); bFound = TRUE; break; - } + } } if (!bFound) @@ -354,13 +354,13 @@ Beamforming_AddBFeeEntry( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Start!\n", __func__)); - if (pEntry != NULL) { + if (pEntry != NULL) { pEntry->bUsed = TRUE; pEntry->AID = pSTA->AID; pEntry->MacId = pSTA->MacID; pEntry->SoundBW = pSTA->BW; ODM_MoveMemory(pDM_Odm, pEntry->MyMacAddr, pSTA->MyMacAddr, 6); - + if (phydm_actingDetermine(pDM_Odm, PhyDM_ACTING_AS_AP)) { /*BSSID[44:47] xor BSSID[40:43]*/ u2Byte BSSID = ((pSTA->MyMacAddr[5] & 0xf0) >> 4) ^ (pSTA->MyMacAddr[5] & 0xf); @@ -433,7 +433,7 @@ Beamforming_AddBFerEntry( if (phydm_actingDetermine(pDM_Odm, PhyDM_ACTING_AS_AP)) { /*BSSID[44:47] xor BSSID[40:43]*/ u2Byte BSSID = ((pSTA->MyMacAddr[5] & 0xf0) >> 4) ^ (pSTA->MyMacAddr[5] & 0xf); - + pEntry->P_AID = (pSTA->AID + BSSID * 32) & 0x1ff; pEntry->G_ID = 63; /*(dec(A) + dec(B)*32) mod 512*/ @@ -447,7 +447,7 @@ Beamforming_AddBFerEntry( pEntry->G_ID = 0; ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s: P_AID addressed to AP=0x%X\n", __func__, pEntry->P_AID)); } - + cpMacAddr(pEntry->MacAddr, pSTA->RA); pEntry->BeamformEntryCap = BeamformCap; @@ -488,18 +488,18 @@ Beamforming_RemoveEntry( PRT_BEAMFORMER_ENTRY pBFerEntry = phydm_Beamforming_GetBFerEntryByAddr(pDM_Odm, RA, Idx); PRT_BEAMFORMEE_ENTRY pEntry = phydm_Beamforming_GetBFeeEntryByAddr(pDM_Odm, RA, Idx); BOOLEAN ret = FALSE; - + RT_DISP(FBEAM, FBEAM_FUN, ("[Beamforming]@%s Start!\n", __func__)); RT_DISP(FBEAM, FBEAM_FUN, ("[Beamforming]@%s, pBFerEntry=0x%x\n", __func__, pBFerEntry)); RT_DISP(FBEAM, FBEAM_FUN, ("[Beamforming]@%s, pEntry=0x%x\n", __func__, pEntry)); - - if (pEntry != NULL) { + + if (pEntry != NULL) { pEntry->bUsed = FALSE; pEntry->BeamformEntryCap = BEAMFORMING_CAP_NONE; /*pEntry->BeamformEntryState = BEAMFORMING_ENTRY_STATE_UNINITIALIZE;*/ pEntry->bBeamformingInProgress = FALSE; ret = TRUE; - } + } if (pBFerEntry != NULL) { pBFerEntry->bUsed = FALSE; pBFerEntry->BeamformEntryCap = BEAMFORMING_CAP_NONE; @@ -514,13 +514,13 @@ Beamforming_RemoveEntry( VOID phydm_Beamforming_NDPARate( IN PVOID pDM_VOID, - CHANNEL_WIDTH BW, + CHANNEL_WIDTH BW, u1Byte Rate ) { u2Byte NDPARate = Rate; PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Start!\n", __func__)); if (NDPARate == 0) { @@ -561,9 +561,9 @@ phydm_Beamforming_DymNDPARate( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s End, NDPA Rate = 0x%X\n", __func__, NDPARate)); } -/* -* SW Sounding : SW Timer unit 1ms -* HW Timer unit (1/32000) s 32k is clock. +/* +* SW Sounding : SW Timer unit 1ms +* HW Timer unit (1/32000) s 32k is clock. * FW Sounding : FW Timer unit 10ms */ VOID @@ -573,7 +573,7 @@ Beamforming_DymPeriod( ) { u1Byte Idx; - BOOLEAN bChangePeriod = FALSE; + BOOLEAN bChangePeriod = FALSE; u2Byte SoundPeriod_SW, SoundPeriod_FW; PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; @@ -584,7 +584,7 @@ Beamforming_DymPeriod( PRT_BEAMFORMEE_ENTRY pEntry = &(pBeamInfo->BeamformeeEntry[pBeamInfo->BeamformeeCurIdx]); ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - + //3 TODO per-client throughput caculation. if ((*(pDM_Odm->pCurrentTxTP) + *(pDM_Odm->pCurrentRxTP) > 2) && ((pEntry->LogStatusFailCnt <= 20) || status)) { @@ -598,13 +598,13 @@ Beamforming_DymPeriod( for (Idx = 0; Idx < BEAMFORMEE_ENTRY_NUM; Idx++) { pBeamformEntry = pBeamInfo->BeamformeeEntry+Idx; - + if (pBeamformEntry->DefaultCSICnt > 20) { /*Modified by David*/ SoundPeriod_SW = 4000; SoundPeriod_FW = 400; } - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Period = %d\n", __func__, SoundPeriod_SW)); if (pBeamformEntry->BeamformEntryCap & (BEAMFORMER_CAP_HT_EXPLICIT | BEAMFORMER_CAP_VHT_SU)) { if (pSoundInfo->SoundMode == SOUNDING_FW_VHT_TIMER || pSoundInfo->SoundMode == SOUNDING_FW_HT_TIMER) { @@ -780,7 +780,7 @@ phydm_beamforming_SoundingMode( if (BeamOidInfo.SoundOidMode == SOUNDING_SW_VHT_TIMER || BeamOidInfo.SoundOidMode == SOUNDING_HW_VHT_TIMER) { if (BeamEntry.BeamformEntryCap & BEAMFORMER_CAP_VHT_SU) Mode = BeamOidInfo.SoundOidMode; - else + else Mode = SOUNDING_STOP_All_TIMER; } else if (BeamOidInfo.SoundOidMode == SOUNDING_SW_HT_TIMER || BeamOidInfo.SoundOidMode == SOUNDING_HW_HT_TIMER) { if (BeamEntry.BeamformEntryCap & BEAMFORMER_CAP_HT_EXPLICIT) @@ -797,7 +797,7 @@ phydm_beamforming_SoundingMode( Mode = SOUNDING_FW_HT_TIMER; else Mode = SOUNDING_SW_HT_TIMER; - } else + } else Mode = SOUNDING_STOP_All_TIMER; ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] SupportInterface=%d, Mode=%d\n", __func__, SupportInterface, Mode)); @@ -851,7 +851,7 @@ phydm_beamforming_SoundingBW( else if (Mode == SOUNDING_SW_HT_TIMER || Mode == SOUNDING_SW_VHT_TIMER) /*Modified by David*/ SoundingBW = BeamEntry.SoundBW; /*BeamOidInfo.SoundOidBW;*/ - else + else SoundingBW = BeamEntry.SoundBW; ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s, SoundingBW=0x%X\n", __func__, SoundingBW)); @@ -878,7 +878,7 @@ phydm_Beamforming_SelectBeamEntry( pSoundInfo->SoundMode = phydm_beamforming_SoundingMode(pDM_Odm, pBeamInfo, pSoundInfo->SoundIdx); else pSoundInfo->SoundMode = SOUNDING_STOP_All_TIMER; - + if (SOUNDING_STOP_All_TIMER == pSoundInfo->SoundMode) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Return because of SOUNDING_STOP_All_TIMER\n", __func__)); return FALSE; @@ -899,8 +899,8 @@ phydm_beamforming_StartPeriod( PADAPTER Adapter = pDM_Odm->Adapter; BOOLEAN Ret = TRUE; PRT_BEAMFORMING_INFO pBeamInfo = &pDM_Odm->BeamformingInfo; - PRT_SOUNDING_INFO pSoundInfo = &(pBeamInfo->SoundingInfo); - + PRT_SOUNDING_INFO pSoundInfo = &(pBeamInfo->SoundingInfo); + phydm_Beamforming_DymNDPARate(pDM_Odm); phydm_Beamforming_SelectBeamEntry(pDM_Odm, pBeamInfo); // Modified @@ -944,7 +944,7 @@ phydm_beamforming_EndPeriod_SW( PADAPTER Adapter = pDM_Odm->Adapter; PRT_BEAMFORMING_INFO pBeamInfo = &pDM_Odm->BeamformingInfo; PRT_SOUNDING_INFO pSoundInfo = &(pBeamInfo->SoundingInfo); - + HAL_HW_TIMER_TYPE TimerType = HAL_TIMER_TXBF; ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Start!\n", __func__)); @@ -972,7 +972,7 @@ phydm_beamforming_EndPeriod_FW( /*SU BFee Entry Only*/ -VOID +VOID phydm_beamforming_ClearEntry_SW( IN PVOID pDM_VOID, BOOLEAN IsDelete, @@ -1009,13 +1009,13 @@ phydm_beamforming_ClearEntry_SW( /*Used after bSounding=RESET, and will clear the setting of "ever sounded" entry, which is not necessarily be deleted.*/ /*This function is mainly used in case "BeamOidInfo.SoundOidMode == SOUNDING_STOP_All_TIMER".*/ /*However, setting oid doesn't delete entries (bUsed is still TRUE), new entries may fail to be added in.*/ - + if (pBeamformEntry->bSound) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] SW reset BFee entry %d\n", __func__, Idx)); - /* - * If End procedure is + /* + * If End procedure is * 1. Between (Send NDPA, C2H packet return), reset state to initialized. - * After C2H packet return , status bit will be set to zero. + * After C2H packet return , status bit will be set to zero. * * 2. After C2H packet, then reset state to initialized and clear status bit. */ @@ -1064,17 +1064,17 @@ phydm_beamforming_ClearEntry_FW( /*Used after bSounding=RESET, and will clear the setting of "ever sounded" entry, which is not necessarily be deleted.*/ /*This function is mainly used in case "BeamOidInfo.SoundOidMode == SOUNDING_STOP_All_TIMER".*/ /*However, setting oid doesn't delete entries (bUsed is still TRUE), new entries may fail to be added in.*/ - + if (pBeamformEntry->bSound) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s]FW reset BFee entry %d\n", __func__, Idx)); - /* - * If End procedure is + /* + * If End procedure is * 1. Between (Send NDPA, C2H packet return), reset state to initialized. - * After C2H packet return , status bit will be set to zero. + * After C2H packet return , status bit will be set to zero. * * 2. After C2H packet, then reset state to initialized and clear status bit. */ - + pBeamformEntry->BeamformEntryState = BEAMFORMING_ENTRY_STATE_INITIALIZED; pBeamformEntry->bSound = FALSE; } @@ -1083,7 +1083,7 @@ phydm_beamforming_ClearEntry_FW( } /* -* Called : +* Called : * 1. Add and delete entry : Beamforming_Enter/Beamforming_Leave * 2. FW trigger : Beamforming_SetTxBFen * 3. Set OID_RT_BEAMFORMING_PERIOD : BeamformingControl_V2 @@ -1105,7 +1105,6 @@ phydm_Beamforming_Notify( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s, Before notify, bSounding=%d, Idx=%d\n", __func__, bSounding, Idx)); ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s: pBeamInfo->beamformee_su_cnt = %d\n", __func__, pBeamInfo->beamformee_su_cnt)); - switch (bSounding) { case BEAMFORMEE_NOTIFY_ADD_SU: @@ -1136,8 +1135,9 @@ phydm_Beamforming_Notify( /*if (pSoundInfo->SoundMode == SOUNDING_SW_VHT_TIMER || pSoundInfo->SoundMode == SOUNDING_SW_HT_TIMER) ODM_SetTimer(pDM_Odm, &pBeamInfo->BeamformingTimer, pSoundInfo->SoundPeriod);*/ ODM_SetTimer(pDM_Odm, &pBeamInfo->BeamformingTimer, 1000); /*Do MU sounding every 1sec*/ - } else + } else { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s: Less or larger than 2 MU STAs, not to set timer\n", __func__)); + } break; case BEAMFORMEE_NOTIFY_DELETE_MU: @@ -1238,7 +1238,7 @@ Beamforming_InitEntry( } ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s]VHT CurBeamformVHT=0x%X, BeamformCap=0x%X\n", __func__, pSTA->CurBeamformVHT, BeamformCap)); ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s]VHT NumofSoundingDim=0x%X, CompSteeringNumofBFer=0x%X\n", __func__, NumofSoundingDim, CompSteeringNumofBFer)); - + } #endif } @@ -1246,17 +1246,18 @@ Beamforming_InitEntry( if(BeamformCap == BEAMFORMING_CAP_NONE) return FALSE; - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Self BF Entry Cap = 0x%02X\n", __func__, BeamformCap)); /*We are BFee, so the entry is BFer*/ if (BeamformCap & (BEAMFORMEE_CAP_VHT_MU | BEAMFORMEE_CAP_VHT_SU | BEAMFORMEE_CAP_HT_EXPLICIT)) { pBeamformerEntry = phydm_Beamforming_GetBFerEntryByAddr(pDM_Odm, pSTA->RA, &BFerIdx); - + if (pBeamformerEntry == NULL) { pBeamformerEntry = Beamforming_AddBFerEntry(pDM_Odm, pSTA, BeamformCap, NumofSoundingDim , &BFerIdx); - if (pBeamformerEntry == NULL) + if (pBeamformerEntry == NULL) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s]Not enough BFer entry!!!!!\n", __func__)); + } } } @@ -1272,17 +1273,19 @@ Beamforming_InitEntry( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s]: Add BFee entry %d\n", __func__, BFeeIdx)); - if (pBeamformEntry == NULL) + if (pBeamformEntry == NULL) { return FALSE; - else + } else { pBeamformEntry->BeamformEntryState = BEAMFORMING_ENTRY_STATE_INITIALIZEING; + } } else { /*Entry has been created. If entry is initialing or progressing then errors occur.*/ - if (pBeamformEntry->BeamformEntryState != BEAMFORMING_ENTRY_STATE_INITIALIZED && + if (pBeamformEntry->BeamformEntryState != BEAMFORMING_ENTRY_STATE_INITIALIZED && pBeamformEntry->BeamformEntryState != BEAMFORMING_ENTRY_STATE_PROGRESSED) { return FALSE; - } else + } else { pBeamformEntry->BeamformEntryState = BEAMFORMING_ENTRY_STATE_INITIALIZEING; + } } pBeamformEntry->BeamformEntryState = BEAMFORMING_ENTRY_STATE_INITIALIZED; phydm_staInfoUpdate(pDM_Odm, staIdx, pBeamformEntry); @@ -1309,7 +1312,7 @@ Beamforming_DeInitEntry( BOOLEAN ret = FALSE; ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Start!\n", __func__)); - + if (pBFeeEntry != NULL) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s, pBFeeEntry\n", __func__)); pBFeeEntry->bUsed = FALSE; @@ -1322,8 +1325,8 @@ Beamforming_DeInitEntry( pDM_Odm->BeamformingInfo.beamformee_su_cnt -= 1; } ret = TRUE; - } - + } + if (pBFerEntry != NULL) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s, pBFerEntry\n", __func__)); pBFerEntry->bUsed = FALSE; @@ -1356,7 +1359,7 @@ BeamformingStart_V1( PRT_BEAMFORMEE_ENTRY pEntry; BOOLEAN ret = TRUE; PRT_BEAMFORMING_INFO pBeamInfo = &(pDM_Odm->BeamformingInfo); - + pEntry = phydm_Beamforming_GetBFeeEntryByAddr(pDM_Odm, RA, &Idx); if (pEntry->bUsed == FALSE) { @@ -1368,7 +1371,7 @@ BeamformingStart_V1( pEntry->bBeamformingInProgress = TRUE; - if (Mode == 1) { + if (Mode == 1) { if (!(pEntry->BeamformEntryCap & BEAMFORMER_CAP_HT_EXPLICIT)) { pEntry->bBeamformingInProgress = FALSE; return FALSE; @@ -1395,7 +1398,7 @@ BeamformingStart_V1( HalComTxbf_Set(pDM_Odm, TXBF_SET_SOUNDING_STATUS, (pu1Byte)&Idx); if (Mode == 1) - ret = Beamforming_SendHTNDPAPacket(pDM_Odm, RA, BW, NORMAL_QUEUE); + ret = Beamforming_SendHTNDPAPacket(pDM_Odm, RA, BW, NORMAL_QUEUE); else ret = Beamforming_SendVHTNDPAPacket(pDM_Odm, RA, pEntry->AID, BW, NORMAL_QUEUE); @@ -1414,7 +1417,7 @@ BOOLEAN BeamformingStart_SW( IN PVOID pDM_VOID, u1Byte Idx, - u1Byte Mode, + u1Byte Mode, CHANNEL_WIDTH BW ) { @@ -1444,7 +1447,7 @@ BeamformingStart_SW( pEntry->bBeamformingInProgress = TRUE; RA = pEntry->MacAddr; - + if (Mode == SOUNDING_SW_HT_TIMER || Mode == SOUNDING_HW_HT_TIMER || Mode == SOUNDING_AUTO_HT_TIMER) { if (!(pEntry->BeamformEntryCap & BEAMFORMER_CAP_HT_EXPLICIT)) { pEntry->bBeamformingInProgress = FALSE; @@ -1470,12 +1473,12 @@ BeamformingStart_SW( pBeamInfo->BeamformeeCurIdx = Idx; } - + /*2014.12.22 Luke: Need to be checked*/ /*GET_TXBF_INFO(Adapter)->fTxbfSet(Adapter, TXBF_SET_SOUNDING_STATUS, (pu1Byte)&Idx);*/ if (Mode == SOUNDING_SW_HT_TIMER || Mode == SOUNDING_HW_HT_TIMER || Mode == SOUNDING_AUTO_HT_TIMER) - ret = Beamforming_SendHTNDPAPacket(pDM_Odm, RA , BW, NORMAL_QUEUE); + ret = Beamforming_SendHTNDPAPacket(pDM_Odm, RA , BW, NORMAL_QUEUE); else ret = Beamforming_SendVHTNDPAPacket(pDM_Odm, RA , pEntry->AID, BW, NORMAL_QUEUE); @@ -1485,7 +1488,7 @@ BeamformingStart_SW( return FALSE; } - + /*-------------------------- // Send BF Report Poll for MU BF --------------------------*/ @@ -1494,9 +1497,9 @@ BeamformingStart_SW( { u1Byte idx, PollSTACnt = 0; BOOLEAN bGetFirstBFee = FALSE; - + if (pBeamInfo->beamformee_mu_cnt > 1) { /* More than 1 MU STA*/ - + for (idx = 0; idx < BEAMFORMEE_ENTRY_NUM; idx++) { pEntry = &(pBeamInfo->BeamformeeEntry[idx]); if (pEntry->is_mu_sta) { @@ -1776,7 +1779,7 @@ Beamforming_Enter( { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; u1Byte BFerBFeeIdx = 0xff; - + if (Beamforming_InitEntry(pDM_Odm, staIdx, &BFerBFeeIdx)) HalComTxbf_Set(pDM_Odm, TXBF_SET_SOUNDING_ENTER, (pu1Byte)&BFerBFeeIdx); diff --git a/hal/phydm/phydm_hwconfig.c b/hal/phydm/phydm_hwconfig.c index 02c59c048..769381fee 100644 --- a/hal/phydm/phydm_hwconfig.c +++ b/hal/phydm/phydm_hwconfig.c @@ -1,14 +1,14 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License forEVM = 100 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with @@ -42,7 +42,7 @@ #define READ_FIRMWARE_MP(ic, txt) (ODM_ReadFirmware_MP_##ic##txt(pDM_Odm, pFirmware, pSize)) -#define READ_FIRMWARE_TC(ic, txt) (ODM_ReadFirmware_TC_##ic##txt(pDM_Odm, pFirmware, pSize)) +#define READ_FIRMWARE_TC(ic, txt) (ODM_ReadFirmware_TC_##ic##txt(pDM_Odm, pFirmware, pSize)) #if (PHYDM_TESTCHIP_SUPPORT == 1) #define READ_FIRMWARE(ic, txt) do {\ @@ -50,11 +50,11 @@ READ_FIRMWARE_MP(ic,txt);\ else\ READ_FIRMWARE_TC(ic,txt);\ - } while(0) + } while(0) #else #define READ_FIRMWARE READ_FIRMWARE_MP #endif - + #define GET_VERSION_MP(ic, txt) (ODM_GetVersion_MP_##ic##txt()) #define GET_VERSION_TC(ic, txt) (ODM_GetVersion_TC_##ic##txt()) #define GET_VERSION(ic, txt) (pDM_Odm->bIsMPChip?GET_VERSION_MP(ic,txt):GET_VERSION_TC(ic,txt)) @@ -78,14 +78,14 @@ odm_QueryRxPwrPercentage( // IF other SW team do not support the feature, remove this section.?? // s4Byte -odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Lenovo( +odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Lenovo( IN OUT PDM_ODM_T pDM_Odm, - s4Byte CurrSig + s4Byte CurrSig ) -{ +{ s4Byte RetSig = 0; #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) - //if(pDM_Odm->SupportInterface == ODM_ITRF_PCIE) + //if(pDM_Odm->SupportInterface == ODM_ITRF_PCIE) { // Step 1. Scale mapping. // 20100611 Joseph: Re-tunning RSSI presentation for Lenovo. @@ -116,16 +116,16 @@ odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Lenovo( } s4Byte -odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Netcore( +odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Netcore( IN OUT PDM_ODM_T pDM_Odm, - s4Byte CurrSig + s4Byte CurrSig ) { s4Byte RetSig = 0; #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) //if(pDM_Odm->SupportInterface == ODM_ITRF_USB) { - // Netcore request this modification because 2009.04.13 SU driver use it. + // Netcore request this modification because 2009.04.13 SU driver use it. if (CurrSig >= 31 && CurrSig <= 100) RetSig = 100; else if (CurrSig >= 21 && CurrSig <= 30) @@ -155,14 +155,14 @@ odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Netcore( s4Byte -odm_SignalScaleMapping_92CSeries( +odm_SignalScaleMapping_92CSeries( IN OUT PDM_ODM_T pDM_Odm, - IN s4Byte CurrSig + IN s4Byte CurrSig ) { - s4Byte RetSig = 0; -#if (DEV_BUS_TYPE == RT_PCI_INTERFACE) - if (pDM_Odm->SupportInterface == ODM_ITRF_PCIE) + s4Byte RetSig = 0; +#if (DEV_BUS_TYPE == RT_PCI_INTERFACE) + if (pDM_Odm->SupportInterface == ODM_ITRF_PCIE) { // Step 1. Scale mapping. if(CurrSig >= 61 && CurrSig <= 100) @@ -1282,6 +1282,7 @@ odm_RxPhyStatusJaguarSeries_Parsing( } else { // it's a made up value, but Realtek apparently assumed 'this would never happen' EVM = 0; + } } else { if (i < ODM_RF_PATH_C) { if (pPhyStaRpt->rxevm[i] == -128) From 900fc8b5df30cb13d60480cfd80cf5015c315e55 Mon Sep 17 00:00:00 2001 From: kimocoder Date: Thu, 15 Mar 2018 16:51:40 +0100 Subject: [PATCH 201/234] even more cleanup. brackets + more --- .travis.yml | 24 +++ Makefile | 2 +- core/rtw_mlme_ext.c | 4 +- dkms.conf | 2 +- hal/phydm/halphyrf_ce.c | 226 ++++++++++++------------- hal/phydm/phydm_beamforming.c | 57 +++---- hal/phydm/phydm_kfree.c | 13 +- hal/phydm/phydm_pathdiv.c | 304 ++++++++++++++-------------------- hal/phydm/txbf/halcomtxbf.c | 112 ++++++++----- os_dep/linux/recv_linux.c | 5 +- 10 files changed, 368 insertions(+), 381 deletions(-) diff --git a/.travis.yml b/.travis.yml index f661fe749..f1b6e4613 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,6 +19,30 @@ env: matrix: include: + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-5 + env: COMPILER=gcc-5 KVER=4.15 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-6 + env: COMPILER=gcc-6 KVER=4.15 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-7 + env: COMPILER=gcc-7 KVER=4.15 - compiler: gcc addons: apt: diff --git a/Makefile b/Makefile index 9a1c4b6fb..e4e3aac6f 100755 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS) -EXTRA_CFLAGS += -O2 +EXTRA_CFLAGS += -O1 #EXTRA_CFLAGS += -O3 EXTRA_CFLAGS += -Wall EXTRA_CFLAGS += -Wextra diff --git a/core/rtw_mlme_ext.c b/core/rtw_mlme_ext.c index 756810556..59b4bc6ad 100644 --- a/core/rtw_mlme_ext.c +++ b/core/rtw_mlme_ext.c @@ -1420,9 +1420,9 @@ void mgt_dispatcher(_adapter *padapter, union recv_frame *precv_frame) #ifdef CONFIG_AP_MODE switch (GetFrameSubType(pframe)) { case WIFI_AUTH: - if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) { ptable->func = &OnAuth; - else + } else ptable->func = &OnAuthClient; /* pass through */ case WIFI_ASSOCREQ: diff --git a/dkms.conf b/dkms.conf index 74648a264..f68ea0d65 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.1.5~20180125" +PACKAGE_VERSION="5.1.5~20180315" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" diff --git a/hal/phydm/halphyrf_ce.c b/hal/phydm/halphyrf_ce.c index fa931779f..400e3cadb 100644 --- a/hal/phydm/halphyrf_ce.c +++ b/hal/phydm/halphyrf_ce.c @@ -46,7 +46,7 @@ void ConfigureTxpowerTrack( #if RTL8192E_SUPPORT if (pDM_Odm->SupportICType == ODM_RTL8192E) ConfigureTxpowerTrack_8192E(pConfig); -#endif +#endif #if RTL8821A_SUPPORT if (pDM_Odm->SupportICType == ODM_RTL8821) ConfigureTxpowerTrack_8821A(pConfig); @@ -58,7 +58,7 @@ void ConfigureTxpowerTrack( #if RTL8188E_SUPPORT if (pDM_Odm->SupportICType == ODM_RTL8188E) ConfigureTxpowerTrack_8188E(pConfig); -#endif +#endif #if RTL8723B_SUPPORT if (pDM_Odm->SupportICType == ODM_RTL8723B) @@ -78,24 +78,24 @@ void ConfigureTxpowerTrack( #if RTL8188F_SUPPORT if (pDM_Odm->SupportICType == ODM_RTL8188F) ConfigureTxpowerTrack_8188F(pConfig); -#endif +#endif #if RTL8723D_SUPPORT if (pDM_Odm->SupportICType == ODM_RTL8723D) ConfigureTxpowerTrack_8723D(pConfig); -#endif +#endif #if RTL8822B_SUPPORT if (pDM_Odm->SupportICType == ODM_RTL8822B) ConfigureTxpowerTrack_8822B(pConfig); -#endif +#endif } //====================================================================== // <20121113, Kordan> This function should be called when TxAGC changed. -// Otherwise the previous compensation is gone, because we record the +// Otherwise the previous compensation is gone, because we record the // delta of temperature between two TxPowerTracking watch dogs. // -// NOTE: If Tx BB swing or Tx scaling is varified during run-time, still +// NOTE: If Tx BB swing or Tx scaling is varified during run-time, still // need to call this function. //====================================================================== VOID @@ -107,13 +107,12 @@ ODM_ClearTxPowerTrackingState( PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pDM_Odm->Adapter); u1Byte p = 0; PODM_RF_CAL_T pRFCalibrateInfo = &(pDM_Odm->RFCalibrateInfo); - + pRFCalibrateInfo->BbSwingIdxCckBase = pRFCalibrateInfo->DefaultCckIndex; pRFCalibrateInfo->BbSwingIdxCck = pRFCalibrateInfo->DefaultCckIndex; pDM_Odm->RFCalibrateInfo.CCK_index = 0; - - for (p = ODM_RF_PATH_A; p < MAX_RF_PATH; ++p) - { + + for (p = ODM_RF_PATH_A; p < MAX_RF_PATH; ++p) { pRFCalibrateInfo->BbSwingIdxOfdmBase[p] = pRFCalibrateInfo->DefaultOfdmIndex; pRFCalibrateInfo->BbSwingIdxOfdm[p] = pRFCalibrateInfo->DefaultOfdmIndex; pRFCalibrateInfo->OFDM_index[p] = pRFCalibrateInfo->DefaultOfdmIndex; @@ -123,10 +122,10 @@ ODM_ClearTxPowerTrackingState( pRFCalibrateInfo->DeltaPowerIndexLast[p] = 0; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = 0; /* Initial Mix mode power tracking*/ - pRFCalibrateInfo->Remnant_OFDMSwingIdx[p] = 0; + pRFCalibrateInfo->Remnant_OFDMSwingIdx[p] = 0; pRFCalibrateInfo->KfreeOffset[p] = 0; } - + pRFCalibrateInfo->Modify_TxAGC_Flag_PathA = FALSE; /*Initial at Modify Tx Scaling Mode*/ pRFCalibrateInfo->Modify_TxAGC_Flag_PathB = FALSE; /*Initial at Modify Tx Scaling Mode*/ pRFCalibrateInfo->Modify_TxAGC_Flag_PathC = FALSE; /*Initial at Modify Tx Scaling Mode*/ @@ -163,7 +162,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( u1Byte ThermalValue = 0, delta, delta_LCK, delta_IQK, p = 0, i = 0; s1Byte diff_DPK[4] = {0}; u1Byte ThermalValue_AVG_count = 0; - u4Byte ThermalValue_AVG = 0, RegC80, RegCd0, RegCd4, Regab4; + u4Byte ThermalValue_AVG = 0, RegC80, RegCd0, RegCd4, Regab4; u1Byte OFDM_min_index = 0; // OFDM BB Swing should be less than +3.0dB, which is required by Arthur u1Byte Indexforchannel = 0; // GetRightChnlPlaceforIQK(pHalData->CurrentChannel) @@ -196,10 +195,10 @@ ODM_TXPowerTrackingCallback_ThermalMeter( if (pDM_Odm->SupportICType & ODM_RTL8814A) /*for 8814 path C & D*/ (*c.GetDeltaSwingTable8814only)(pDM_Odm, (pu1Byte *)&deltaSwingTableIdx_TUP_C, (pu1Byte *)&deltaSwingTableIdx_TDOWN_C, (pu1Byte *)&deltaSwingTableIdx_TUP_D, (pu1Byte *)&deltaSwingTableIdx_TDOWN_D); - + if (pDM_Odm->SupportICType & (ODM_RTL8703B | ODM_RTL8723D)) /*for Xtal Offset*/ (*c.GetDeltaSwingXtalTable)(pDM_Odm, (ps1Byte *)&deltaSwingTableXtal_UP, (ps1Byte *)&deltaSwingTableXtal_DOWN); - + pRFCalibrateInfo->TXPowerTrackingCallbackCnt++; /*cosa add for debug*/ pRFCalibrateInfo->bTXPowerTrackingInit = TRUE; @@ -216,15 +215,15 @@ ODM_TXPowerTrackingCallback_ThermalMeter( #endif ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("===>ODM_TXPowerTrackingCallback_ThermalMeter\n pRFCalibrateInfo->BbSwingIdxCckBase: %d, pRFCalibrateInfo->BbSwingIdxOfdmBase[A]: %d, pRFCalibrateInfo->DefaultOfdmIndex: %d\n", + ("===>ODM_TXPowerTrackingCallback_ThermalMeter\n pRFCalibrateInfo->BbSwingIdxCckBase: %d, pRFCalibrateInfo->BbSwingIdxOfdmBase[A]: %d, pRFCalibrateInfo->DefaultOfdmIndex: %d\n", pRFCalibrateInfo->BbSwingIdxCckBase, pRFCalibrateInfo->BbSwingIdxOfdmBase[ODM_RF_PATH_A], pRFCalibrateInfo->DefaultOfdmIndex)); - ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, + ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("pRFCalibrateInfo->TxPowerTrackControl=%d, pHalData->EEPROMThermalMeter %d\n", pRFCalibrateInfo->TxPowerTrackControl, pHalData->EEPROMThermalMeter)); ThermalValue = (u1Byte)ODM_GetRFReg(pDM_Odm, ODM_RF_PATH_A, c.ThermalRegAddr, 0xfc00); //0x42: RF Reg[15:10] 88E /*add log by zhao he, check c80/c94/c14/ca0 value*/ - if (pDM_Odm->SupportICType == ODM_RTL8723D) { + if (pDM_Odm->SupportICType == ODM_RTL8723D) { RegC80 = ODM_GetBBReg(pDM_Odm, 0xc80, bMaskDWord); RegCd0 = ODM_GetBBReg(pDM_Odm, 0xcd0, bMaskDWord); RegCd4 = ODM_GetBBReg(pDM_Odm, 0xcd4, bMaskDWord); @@ -238,31 +237,30 @@ ODM_TXPowerTrackingCallback_ThermalMeter( /*4 3. Initialize ThermalValues of RFCalibrateInfo*/ - if (pRFCalibrateInfo->bReloadtxpowerindex) - ODM_RT_TRACE(pDM_Odm,ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,("reload ofdm index for band switch\n")); + if (pRFCalibrateInfo->bReloadtxpowerindex) { + ODM_RT_TRACE(pDM_Odm,ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,("reload ofdm index for band switch\n")); + } /*4 4. Calculate average thermal meter*/ - + pRFCalibrateInfo->ThermalValue_AVG[pRFCalibrateInfo->ThermalValue_AVG_index] = ThermalValue; pRFCalibrateInfo->ThermalValue_AVG_index++; if (pRFCalibrateInfo->ThermalValue_AVG_index == c.AverageThermalNum) /*Average times = c.AverageThermalNum*/ pRFCalibrateInfo->ThermalValue_AVG_index = 0; - for(i = 0; i < c.AverageThermalNum; i++) - { + for (i = 0; i < c.AverageThermalNum; i++) { if (pRFCalibrateInfo->ThermalValue_AVG[i]) { ThermalValue_AVG += pRFCalibrateInfo->ThermalValue_AVG[i]; ThermalValue_AVG_count++; } } - if(ThermalValue_AVG_count) //Calculate Average ThermalValue after average enough times - { + if (ThermalValue_AVG_count) { //Calculate Average ThermalValue after average enough times ThermalValue = (u1Byte)(ThermalValue_AVG / ThermalValue_AVG_count); ODM_RT_TRACE(pDM_Odm,ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("AVG Thermal Meter = 0x%X, EFUSE Thermal Base = 0x%X\n", ThermalValue, pHalData->EEPROMThermalMeter)); + ("AVG Thermal Meter = 0x%X, EFUSE Thermal Base = 0x%X\n", ThermalValue, pHalData->EEPROMThermalMeter)); } - + //4 5. Calculate delta, delta_LCK, delta_IQK. //"delta" here is used to determine whether thermal value changes or not. @@ -275,7 +273,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( delta_IQK = (ThermalValue > pRFCalibrateInfo->ThermalValue_IQK)?(ThermalValue - pRFCalibrateInfo->ThermalValue_IQK):(pRFCalibrateInfo->ThermalValue_IQK - ThermalValue); ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("no PG, use ThermalValue for IQK\n")); } - + for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) diff_DPK[p] = (s1Byte)ThermalValue - (s1Byte)pRFCalibrateInfo->DpkThermal[p]; @@ -291,7 +289,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( if (c.PHY_LCCalibrate) (*c.PHY_LCCalibrate)(pDM_Odm); } - + delta_LCK = (ThermalValue > pRFCalibrateInfo->ThermalValue_LCK)?(ThermalValue - pRFCalibrateInfo->ThermalValue_LCK):(pRFCalibrateInfo->ThermalValue_LCK - ThermalValue); } @@ -310,25 +308,24 @@ ODM_TXPowerTrackingCallback_ThermalMeter( } } - /*3 7. If necessary, move the index of swing table to adjust Tx power.*/ - - if (delta > 0 && pRFCalibrateInfo->TxPowerTrackControl) - { + /*3 7. If necessary, move the index of swing table to adjust Tx power.*/ + + if (delta > 0 && pRFCalibrateInfo->TxPowerTrackControl) { //"delta" here is used to record the absolute value of differrence. -#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE)) - delta = ThermalValue > pHalData->EEPROMThermalMeter?(ThermalValue - pHalData->EEPROMThermalMeter):(pHalData->EEPROMThermalMeter - ThermalValue); +#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE)) + delta = ThermalValue > pHalData->EEPROMThermalMeter?(ThermalValue - pHalData->EEPROMThermalMeter):(pHalData->EEPROMThermalMeter - ThermalValue); #else - delta = (ThermalValue > pDM_Odm->priv->pmib->dot11RFEntry.ther)?(ThermalValue - pDM_Odm->priv->pmib->dot11RFEntry.ther):(pDM_Odm->priv->pmib->dot11RFEntry.ther - ThermalValue); + delta = (ThermalValue > pDM_Odm->priv->pmib->dot11RFEntry.ther)?(ThermalValue - pDM_Odm->priv->pmib->dot11RFEntry.ther):(pDM_Odm->priv->pmib->dot11RFEntry.ther - ThermalValue); #endif if (delta >= TXPWR_TRACK_TABLE_SIZE) delta = TXPWR_TRACK_TABLE_SIZE - 1; /*4 7.1 The Final Power Index = BaseIndex + PowerIndexOffset*/ - -#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE)) - if(ThermalValue > pHalData->EEPROMThermalMeter) { + +#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE)) + if (ThermalValue > pHalData->EEPROMThermalMeter) { #else - if(ThermalValue > pDM_Odm->priv->pmib->dot11RFEntry.ther) { + if (ThermalValue > pDM_Odm->priv->pmib->dot11RFEntry.ther) { #endif for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) { @@ -336,12 +333,12 @@ ODM_TXPowerTrackingCallback_ThermalMeter( switch (p) { case ODM_RF_PATH_B: ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("deltaSwingTableIdx_TUP_B[%d] = %d\n", delta, deltaSwingTableIdx_TUP_B[delta])); + ("deltaSwingTableIdx_TUP_B[%d] = %d\n", delta, deltaSwingTableIdx_TUP_B[delta])); pRFCalibrateInfo->DeltaPowerIndex[p] = deltaSwingTableIdx_TUP_B[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = deltaSwingTableIdx_TUP_B[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_B] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_B] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; case ODM_RF_PATH_C: @@ -351,7 +348,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( pRFCalibrateInfo->DeltaPowerIndex[p] = deltaSwingTableIdx_TUP_C[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = deltaSwingTableIdx_TUP_C[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_C] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_C] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; case ODM_RF_PATH_D: @@ -361,17 +358,17 @@ ODM_TXPowerTrackingCallback_ThermalMeter( pRFCalibrateInfo->DeltaPowerIndex[p] = deltaSwingTableIdx_TUP_D[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = deltaSwingTableIdx_TUP_D[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_D] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_D] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; default: - ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, + ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("deltaSwingTableIdx_TUP_A[%d] = %d\n", delta, deltaSwingTableIdx_TUP_A[delta])); pRFCalibrateInfo->DeltaPowerIndex[p] = deltaSwingTableIdx_TUP_A[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = deltaSwingTableIdx_TUP_A[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; } } @@ -379,7 +376,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( if (pDM_Odm->SupportICType & (ODM_RTL8703B | ODM_RTL8723D)) { /*Save XtalOffset from Xtal table*/ pRFCalibrateInfo->XtalOffsetLast = pRFCalibrateInfo->XtalOffset; /*recording last Xtal offset*/ - ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, + ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("[Xtal] deltaSwingTableXtal_UP[%d] = %d\n", delta, deltaSwingTableXtal_UP[delta])); pRFCalibrateInfo->XtalOffset = deltaSwingTableXtal_UP[delta]; @@ -388,7 +385,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( else XtalOffsetEanble = 1; } - + } else { for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) { pRFCalibrateInfo->DeltaPowerIndexLast[p] = pRFCalibrateInfo->DeltaPowerIndex[p]; /*recording poer index offset*/ @@ -396,46 +393,46 @@ ODM_TXPowerTrackingCallback_ThermalMeter( switch (p) { case ODM_RF_PATH_B: ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("deltaSwingTableIdx_TDOWN_B[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_B[delta])); + ("deltaSwingTableIdx_TDOWN_B[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_B[delta])); pRFCalibrateInfo->DeltaPowerIndex[p] = -1 * deltaSwingTableIdx_TDOWN_B[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = -1 * deltaSwingTableIdx_TDOWN_B[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_B] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_B] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; case ODM_RF_PATH_C: ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("deltaSwingTableIdx_TDOWN_C[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_C[delta])); + ("deltaSwingTableIdx_TDOWN_C[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_C[delta])); pRFCalibrateInfo->DeltaPowerIndex[p] = -1 * deltaSwingTableIdx_TDOWN_C[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = -1 * deltaSwingTableIdx_TDOWN_C[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_C] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_C] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; case ODM_RF_PATH_D: ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("deltaSwingTableIdx_TDOWN_D[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_D[delta])); + ("deltaSwingTableIdx_TDOWN_D[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_D[delta])); pRFCalibrateInfo->DeltaPowerIndex[p] = -1 * deltaSwingTableIdx_TDOWN_D[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = -1 * deltaSwingTableIdx_TDOWN_D[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_D] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_D] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; default: ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("deltaSwingTableIdx_TDOWN_A[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_A[delta])); + ("deltaSwingTableIdx_TDOWN_A[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_A[delta])); pRFCalibrateInfo->DeltaPowerIndex[p] = -1 * deltaSwingTableIdx_TDOWN_A[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = -1 * deltaSwingTableIdx_TDOWN_A[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; - } + } } if (pDM_Odm->SupportICType & (ODM_RTL8703B | ODM_RTL8723D)) { /*Save XtalOffset from Xtal table*/ pRFCalibrateInfo->XtalOffsetLast = pRFCalibrateInfo->XtalOffset; /*recording last Xtal offset*/ - ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, + ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("[Xtal] deltaSwingTableXtal_DOWN[%d] = %d\n", delta, deltaSwingTableXtal_DOWN[delta])); pRFCalibrateInfo->XtalOffset = deltaSwingTableXtal_DOWN[delta]; @@ -446,10 +443,10 @@ ODM_TXPowerTrackingCallback_ThermalMeter( } } - + for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("\n\n=========================== [Path-%d] Calculating PowerIndexOffset===========================\n", p)); + ("\n\n=========================== [Path-%d] Calculating PowerIndexOffset===========================\n", p)); if (pRFCalibrateInfo->DeltaPowerIndex[p] == pRFCalibrateInfo->DeltaPowerIndexLast[p]) /*If Thermal value changes but lookup table value still the same*/ pRFCalibrateInfo->PowerIndexOffset[p] = 0; @@ -458,12 +455,12 @@ ODM_TXPowerTrackingCallback_ThermalMeter( ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("[Path-%d] PowerIndexOffset(%d) = DeltaPowerIndex(%d) - DeltaPowerIndexLast(%d)\n", p, pRFCalibrateInfo->PowerIndexOffset[p], pRFCalibrateInfo->DeltaPowerIndex[p], pRFCalibrateInfo->DeltaPowerIndexLast[p])); - + pRFCalibrateInfo->OFDM_index[p] = pRFCalibrateInfo->BbSwingIdxOfdmBase[p] + pRFCalibrateInfo->PowerIndexOffset[p]; pRFCalibrateInfo->CCK_index = pRFCalibrateInfo->BbSwingIdxCckBase + pRFCalibrateInfo->PowerIndexOffset[p]; - pRFCalibrateInfo->BbSwingIdxCck = pRFCalibrateInfo->CCK_index; - pRFCalibrateInfo->BbSwingIdxOfdm[p] = pRFCalibrateInfo->OFDM_index[p]; + pRFCalibrateInfo->BbSwingIdxCck = pRFCalibrateInfo->CCK_index; + pRFCalibrateInfo->BbSwingIdxOfdm[p] = pRFCalibrateInfo->OFDM_index[p]; /*************Print BB Swing Base and Index Offset*************/ @@ -473,15 +470,15 @@ ODM_TXPowerTrackingCallback_ThermalMeter( ("The 'OFDM' final index(%d) = BaseIndex[%d](%d) + PowerIndexOffset(%d)\n", pRFCalibrateInfo->BbSwingIdxOfdm[p], p, pRFCalibrateInfo->BbSwingIdxOfdmBase[p], pRFCalibrateInfo->PowerIndexOffset[p])); /*4 7.1 Handle boundary conditions of index.*/ - + if (pRFCalibrateInfo->OFDM_index[p] > c.SwingTableSize_OFDM-1) pRFCalibrateInfo->OFDM_index[p] = c.SwingTableSize_OFDM-1; else if (pRFCalibrateInfo->OFDM_index[p] <= OFDM_min_index) pRFCalibrateInfo->OFDM_index[p] = OFDM_min_index; } - + ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("\n\n========================================================================================================\n")); + ("\n\n========================================================================================================\n")); if (pRFCalibrateInfo->CCK_index > c.SwingTableSize_CCK-1) pRFCalibrateInfo->CCK_index = c.SwingTableSize_CCK-1; @@ -489,7 +486,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( pRFCalibrateInfo->CCK_index = 0; } else { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("The thermal meter is unchanged or TxPowerTracking OFF(%d): ThermalValue: %d , pRFCalibrateInfo->ThermalValue: %d\n", + ("The thermal meter is unchanged or TxPowerTracking OFF(%d): ThermalValue: %d , pRFCalibrateInfo->ThermalValue: %d\n", pRFCalibrateInfo->TxPowerTrackControl, ThermalValue, pRFCalibrateInfo->ThermalValue)); for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) @@ -497,7 +494,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( } ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("TxPowerTracking: [CCK] Swing Current Index: %d, Swing Base Index: %d\n", + ("TxPowerTracking: [CCK] Swing Current Index: %d, Swing Base Index: %d\n", pRFCalibrateInfo->CCK_index, pRFCalibrateInfo->BbSwingIdxCckBase)); /*Print Swing base & current*/ for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) { @@ -508,7 +505,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( if ((pDM_Odm->SupportICType & ODM_RTL8814A)) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("PowerTrackingType=%d\n", PowerTrackingType)); - + if (PowerTrackingType == 0) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("**********Enter POWER Tracking MIX_MODE**********\n")); for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) @@ -527,15 +524,15 @@ ODM_TXPowerTrackingCallback_ThermalMeter( (*c.ODM_TxPwrTrackSetPwr)(pDM_Odm, TSSI_MODE, p, 0); } pRFCalibrateInfo->ThermalValue = ThermalValue; /*Record last Power Tracking Thermal Value*/ - + } else if ((pRFCalibrateInfo->PowerIndexOffset[ODM_RF_PATH_A] != 0 || pRFCalibrateInfo->PowerIndexOffset[ODM_RF_PATH_B] != 0 || pRFCalibrateInfo->PowerIndexOffset[ODM_RF_PATH_C] != 0 || - pRFCalibrateInfo->PowerIndexOffset[ODM_RF_PATH_D] != 0) && + pRFCalibrateInfo->PowerIndexOffset[ODM_RF_PATH_D] != 0) && pRFCalibrateInfo->TxPowerTrackControl && (pHalData->EEPROMThermalMeter != 0xff)) { //4 7.2 Configure the Swing Table to adjust Tx Power. - - pRFCalibrateInfo->bTxPowerChanged = TRUE; /*Always TRUE after Tx Power is adjusted by power tracking.*/ + + pRFCalibrateInfo->bTxPowerChanged = TRUE; /*Always TRUE after Tx Power is adjusted by power tracking.*/ // // 2012/04/23 MH According to Luke's suggestion, we can not write BB digital // to increase TX power. Otherwise, EVM will be bad. @@ -544,14 +541,14 @@ ODM_TXPowerTrackingCallback_ThermalMeter( if (ThermalValue > pRFCalibrateInfo->ThermalValue) { for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("Temperature Increasing(%d): delta_pi: %d , delta_t: %d, Now_t: %d, EFUSE_t: %d, Last_t: %d\n", - p, pRFCalibrateInfo->PowerIndexOffset[p], delta, ThermalValue, pHalData->EEPROMThermalMeter, pRFCalibrateInfo->ThermalValue)); + ("Temperature Increasing(%d): delta_pi: %d , delta_t: %d, Now_t: %d, EFUSE_t: %d, Last_t: %d\n", + p, pRFCalibrateInfo->PowerIndexOffset[p], delta, ThermalValue, pHalData->EEPROMThermalMeter, pRFCalibrateInfo->ThermalValue)); } } else if (ThermalValue < pRFCalibrateInfo->ThermalValue) { /*Low temperature*/ for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("Temperature Decreasing(%d): delta_pi: %d , delta_t: %d, Now_t: %d, EFUSE_t: %d, Last_t: %d\n", - p, pRFCalibrateInfo->PowerIndexOffset[p], delta, ThermalValue, pHalData->EEPROMThermalMeter, pRFCalibrateInfo->ThermalValue)); + p, pRFCalibrateInfo->PowerIndexOffset[p], delta, ThermalValue, pHalData->EEPROMThermalMeter, pRFCalibrateInfo->ThermalValue)); } } @@ -562,7 +559,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( #endif { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("Temperature(%d) higher than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter)); + ("Temperature(%d) higher than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter)); if (pDM_Odm->SupportICType == ODM_RTL8188E || pDM_Odm->SupportICType == ODM_RTL8192E || pDM_Odm->SupportICType == ODM_RTL8821 || pDM_Odm->SupportICType == ODM_RTL8812 || pDM_Odm->SupportICType == ODM_RTL8723B || pDM_Odm->SupportICType == ODM_RTL8814A || @@ -576,9 +573,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) (*c.ODM_TxPwrTrackSetPwr)(pDM_Odm, BBSWING, p, Indexforchannel); } - } - else - { + } else { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("Temperature(%d) lower than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter)); @@ -594,7 +589,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) (*c.ODM_TxPwrTrackSetPwr)(pDM_Odm, BBSWING, p, Indexforchannel); } - + } pRFCalibrateInfo->BbSwingIdxCckBase = pRFCalibrateInfo->BbSwingIdxCck; /*Record last time Power Tracking result as base.*/ @@ -603,7 +598,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("pRFCalibrateInfo->ThermalValue = %d ThermalValue= %d\n", pRFCalibrateInfo->ThermalValue, ThermalValue)); - + pRFCalibrateInfo->ThermalValue = ThermalValue; /*Record last Power Tracking Thermal Value*/ } @@ -621,11 +616,11 @@ ODM_TXPowerTrackingCallback_ThermalMeter( if (ThermalValue > pDM_Odm->priv->pmib->dot11RFEntry.ther) { #endif ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("Temperature(%d) higher than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter)); + ("Temperature(%d) higher than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter)); (*c.ODM_TxXtalTrackSetXtal)(pDM_Odm); } else { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("Temperature(%d) lower than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter)); + ("Temperature(%d) lower than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter)); (*c.ODM_TxXtalTrackSetXtal)(pDM_Odm); } } @@ -638,17 +633,17 @@ ODM_TXPowerTrackingCallback_ThermalMeter( /*Delta temperature is equal to or larger than 20 centigrade (When threshold is 8).*/ if (delta_IQK >= c.Threshold_IQK) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("delta_IQK(%d) >= Threshold_IQK(%d)\n", delta_IQK, c.Threshold_IQK)); - if (!pRFCalibrateInfo->bIQKInProgress) + if (!pRFCalibrateInfo->bIQKInProgress) (*c.DoIQK)(pDM_Odm, delta_IQK, ThermalValue, 8); } } if (pRFCalibrateInfo->DpkThermal[ODM_RF_PATH_A] != 0) { - if (diff_DPK[ODM_RF_PATH_A] >= c.Threshold_DPK) { + if (diff_DPK[ODM_RF_PATH_A] >= c.Threshold_DPK) { ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); ODM_SetBBReg(pDM_Odm, 0xcc4, BIT14|BIT13|BIT12|BIT11|BIT10, (diff_DPK[ODM_RF_PATH_A] / c.Threshold_DPK)); ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); } else if ((diff_DPK[ODM_RF_PATH_A] <= -1 * c.Threshold_DPK)) { - s4Byte value = 0x20 + (diff_DPK[ODM_RF_PATH_A] / c.Threshold_DPK); + s4Byte value = 0x20 + (diff_DPK[ODM_RF_PATH_A] / c.Threshold_DPK); ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); ODM_SetBBReg(pDM_Odm, 0xcc4, BIT14|BIT13|BIT12|BIT11|BIT10, value); @@ -656,16 +651,16 @@ ODM_TXPowerTrackingCallback_ThermalMeter( } else { ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); ODM_SetBBReg(pDM_Odm, 0xcc4, BIT14|BIT13|BIT12|BIT11|BIT10, 0); - ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); + ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); } } if (pRFCalibrateInfo->DpkThermal[ODM_RF_PATH_B] != 0) { - if (diff_DPK[ODM_RF_PATH_B] >= c.Threshold_DPK) { + if (diff_DPK[ODM_RF_PATH_B] >= c.Threshold_DPK) { ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); ODM_SetBBReg(pDM_Odm, 0xec4, BIT14|BIT13|BIT12|BIT11|BIT10, (diff_DPK[ODM_RF_PATH_B] / c.Threshold_DPK)); ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); } else if ((diff_DPK[ODM_RF_PATH_B] <= -1 * c.Threshold_DPK)) { - s4Byte value = 0x20 + (diff_DPK[ODM_RF_PATH_B] / c.Threshold_DPK); + s4Byte value = 0x20 + (diff_DPK[ODM_RF_PATH_B] / c.Threshold_DPK); ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); ODM_SetBBReg(pDM_Odm, 0xec4, BIT14|BIT13|BIT12|BIT11|BIT10, value); @@ -673,14 +668,14 @@ ODM_TXPowerTrackingCallback_ThermalMeter( } else { ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); ODM_SetBBReg(pDM_Odm, 0xec4, BIT14|BIT13|BIT12|BIT11|BIT10, 0); - ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); + ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); } } -#endif - +#endif + ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("<===ODM_TXPowerTrackingCallback_ThermalMeter\n")); - + pRFCalibrateInfo->TXPowercount = 0; } @@ -700,21 +695,18 @@ ODM_ResetIQKResult( #if !(DM_ODM_SUPPORT_TYPE & ODM_AP) u1Byte ODM_GetRightChnlPlaceforIQK(u1Byte chnl) { - u1Byte channel_all[ODM_TARGET_CHNL_NUM_2G_5G] = + u1Byte channel_all[ODM_TARGET_CHNL_NUM_2G_5G] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,149,151,153,155,157,159,161,163,165}; u1Byte place = chnl; - - if(chnl > 14) - { - for(place = 14; place 14) { + for (place = 14; placeAdapter; -#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) if (*pDM_Odm->pIsFcsModeEnable) return; #endif - + #if (DM_ODM_SUPPORT_TYPE & (ODM_CE)) if (IS_HARDWARE_TYPE_8812AU(Adapter)) return; #endif - + if (pDM_Odm->bLinked) { if ((*pDM_Odm->pChannel != pDM_Odm->preChannel) && (!*pDM_Odm->pbScanInProcess)) { pDM_Odm->preChannel = *pDM_Odm->pChannel; @@ -745,24 +737,24 @@ odm_IQCalibrate( if (pDM_Odm->LinkedInterval < 3) pDM_Odm->LinkedInterval++; - + if (pDM_Odm->LinkedInterval == 2) { if (IS_HARDWARE_TYPE_8814A(Adapter)) { - #if (RTL8814A_SUPPORT == 1) + #if (RTL8814A_SUPPORT == 1) PHY_IQCalibrate_8814A(pDM_Odm, FALSE); #endif - } - + } + #if (RTL8822B_SUPPORT == 1) else if (IS_HARDWARE_TYPE_8822B(Adapter)) PHY_IQCalibrate_8822B(pDM_Odm, FALSE); #endif - + #if (RTL8821C_SUPPORT == 1) else if (IS_HARDWARE_TYPE_8821C(Adapter)) PHY_IQCalibrate_8821C(pDM_Odm, FALSE); #endif - + #if (RTL8821A_SUPPORT == 1) else if (IS_HARDWARE_TYPE_8821(Adapter)) PHY_IQCalibrate_8821A(pDM_Odm, FALSE); @@ -778,14 +770,14 @@ void phydm_rf_init(IN PVOID pDM_VOID) odm_TXPowerTrackingInit(pDM_Odm); #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE)) - ODM_ClearTxPowerTrackingState(pDM_Odm); + ODM_ClearTxPowerTrackingState(pDM_Odm); #endif #if (DM_ODM_SUPPORT_TYPE & (ODM_AP)) -#if (RTL8814A_SUPPORT == 1) +#if (RTL8814A_SUPPORT == 1) if (pDM_Odm->SupportICType & ODM_RTL8814A) PHY_IQCalibrate_8814A_Init(pDM_Odm); -#endif +#endif #endif } diff --git a/hal/phydm/phydm_beamforming.c b/hal/phydm/phydm_beamforming.c index 4ae03a1b4..c6fdd26e4 100644 --- a/hal/phydm/phydm_beamforming.c +++ b/hal/phydm/phydm_beamforming.c @@ -324,7 +324,7 @@ phydm_Beamforming_GetFirstMUBFeeEntryIdx( BOOLEAN bFound = FALSE; for (idx = 0; idx < BEAMFORMEE_ENTRY_NUM; idx++) { - if (pBeamInfo->BeamformeeEntry[idx].bUsed && pBeamInfo->BeamformeeEntry[idx].is_mu_sta) { + if (pBeamInfo->BeamformeeEntry[idx].bUsed && pBeamInfo->BeamformeeEntry[idx].is_mu_sta) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] idx=%d!\n", __func__, idx)); bFound = TRUE; break; @@ -605,9 +605,9 @@ Beamforming_DymPeriod( SoundPeriod_FW = 400; } - ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Period = %d\n", __func__, SoundPeriod_SW)); + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Period = %d\n", __func__, SoundPeriod_SW)); if (pBeamformEntry->BeamformEntryCap & (BEAMFORMER_CAP_HT_EXPLICIT | BEAMFORMER_CAP_VHT_SU)) { - if (pSoundInfo->SoundMode == SOUNDING_FW_VHT_TIMER || pSoundInfo->SoundMode == SOUNDING_FW_HT_TIMER) { + if (pSoundInfo->SoundMode == SOUNDING_FW_VHT_TIMER || pSoundInfo->SoundMode == SOUNDING_FW_HT_TIMER) { if (pBeamformEntry->SoundPeriod != SoundPeriod_FW) { pBeamformEntry->SoundPeriod = SoundPeriod_FW; bChangePeriod = TRUE; /*Only FW sounding need to send H2C packet to change sound period. */ @@ -623,8 +623,6 @@ Beamforming_DymPeriod( } - - BOOLEAN Beamforming_SendHTNDPAPacket( IN PVOID pDM_VOID, @@ -645,7 +643,6 @@ Beamforming_SendHTNDPAPacket( } - BOOLEAN Beamforming_SendVHTNDPAPacket( IN PVOID pDM_VOID, @@ -927,7 +924,7 @@ phydm_beamforming_StartPeriod( else Ret = FALSE; - ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] SoundIdx=%d, SoundMode=%d, SoundBW=%d, SoundPeriod=%d\n", __func__, + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] SoundIdx=%d, SoundMode=%d, SoundBW=%d, SoundPeriod=%d\n", __func__, pSoundInfo->SoundIdx, pSoundInfo->SoundMode, pSoundInfo->SoundBW, pSoundInfo->SoundPeriod)); return Ret; @@ -1151,7 +1148,7 @@ phydm_Beamforming_Notify( break; case BEAMFORMING_NOTIFY_RESET: - if (pSoundInfo->SoundMode == SOUNDING_FW_HT_TIMER || pSoundInfo->SoundMode == SOUNDING_FW_VHT_TIMER) { + if (pSoundInfo->SoundMode == SOUNDING_FW_HT_TIMER || pSoundInfo->SoundMode == SOUNDING_FW_VHT_TIMER) { phydm_beamforming_ClearEntry_FW(pDM_Odm, FALSE, Idx); phydm_beamforming_EndPeriod_FW(pDM_Odm); } else { @@ -1168,7 +1165,6 @@ phydm_Beamforming_Notify( } - BOOLEAN Beamforming_InitEntry( IN PVOID pDM_VOID, @@ -1188,7 +1184,7 @@ Beamforming_InitEntry( /*The current setting does not support Beaforming*/ if (BEAMFORMING_CAP_NONE == pSTA->HtBeamformCap && BEAMFORMING_CAP_NONE == pSTA->VhtBeamformCap) { - ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("The configuration disabled Beamforming! Skip...\n")); + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("The configuration disabled Beamforming! Skip...\n")); return FALSE; } @@ -1210,7 +1206,7 @@ Beamforming_InitEntry( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] HT NumofSoundingDim=%d, CompSteeringNumofBFer=%d\n", __func__, NumofSoundingDim, CompSteeringNumofBFer)); } #if (ODM_IC_11AC_SERIES_SUPPORT == 1) - if (pSTA->WirelessMode & WIRELESS_MODE_AC_5G || pSTA->WirelessMode & WIRELESS_MODE_AC_24G) { /*VHT*/ + if (pSTA->WirelessMode & WIRELESS_MODE_AC_5G || pSTA->WirelessMode & WIRELESS_MODE_AC_24G) { /*VHT*/ /* We are Beamformee because the STA is SU Beamformer*/ if (TEST_FLAG(pSTA->CurBeamformVHT, BEAMFORMING_VHT_BEAMFORMER_ENABLE)) { @@ -1448,7 +1444,7 @@ BeamformingStart_SW( pEntry->bBeamformingInProgress = TRUE; RA = pEntry->MacAddr; - if (Mode == SOUNDING_SW_HT_TIMER || Mode == SOUNDING_HW_HT_TIMER || Mode == SOUNDING_AUTO_HT_TIMER) { + if (Mode == SOUNDING_SW_HT_TIMER || Mode == SOUNDING_HW_HT_TIMER || Mode == SOUNDING_AUTO_HT_TIMER) { if (!(pEntry->BeamformEntryCap & BEAMFORMER_CAP_HT_EXPLICIT)) { pEntry->bBeamformingInProgress = FALSE; ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Return by not support BEAMFORMER_CAP_HT_EXPLICIT <==\n", __func__)); @@ -1541,7 +1537,7 @@ BeamformingStart_FW( pEntry->BeamformEntryState = BEAMFORMING_ENTRY_STATE_PROGRESSING; pEntry->bSound = TRUE; HalComTxbf_Set(pDM_Odm, TXBF_SET_SOUNDING_FW_NDPA, (pu1Byte)&Idx); - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] End, Idx=0x%X\n", __func__, Idx)); return TRUE; } @@ -1549,7 +1545,7 @@ BeamformingStart_FW( VOID Beamforming_CheckSoundingSuccess( IN PVOID pDM_VOID, - BOOLEAN Status + BOOLEAN Status ) { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; @@ -1576,7 +1572,7 @@ Beamforming_CheckSoundingSuccess( VOID phydm_Beamforming_End_SW( IN PVOID pDM_VOID, - BOOLEAN Status + BOOLEAN Status ) { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; @@ -1607,20 +1603,20 @@ phydm_Beamforming_End_SW( HalComTxbf_Set(pDM_Odm, TXBF_SET_TX_PATH_RESET, (pu1Byte)&(pBeamInfo->BeamformeeCurIdx)); ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] LogStatusFailCnt %d\n", __func__, pEntry->LogStatusFailCnt)); } - + if (pEntry->LogStatusFailCnt > 50) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s LogStatusFailCnt > 50, Stop SOUNDING\n", __func__)); pEntry->bSound = FALSE; - Beamforming_DeInitEntry(pDM_Odm, pEntry->MacAddr); + Beamforming_DeInitEntry(pDM_Odm, pEntry->MacAddr); /*Modified by David - Every action of deleting entry should follow by Notify*/ phydm_Beamforming_Notify(pDM_Odm); - } - + } + pEntry->bBeamformingInProgress = FALSE; } ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s: Status=%d\n", __func__, Status)); -} +} VOID @@ -1648,28 +1644,29 @@ Beamforming_TimerCallback( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Start!\n", __func__)); - if (pBeamInfo->is_mu_sounding) + if (pBeamInfo->is_mu_sounding) { bBeamformingInProgress = pBeamInfo->is_mu_sounding_in_progress; - else + } else { bBeamformingInProgress = pEntry->bBeamformingInProgress; - + } if (bBeamformingInProgress) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("bBeamformingInProgress, reset it\n")); phydm_Beamforming_End_SW(pDM_Odm, 0); - } + } ret = phydm_Beamforming_SelectBeamEntry(pDM_Odm, pBeamInfo); #if (SUPPORT_MU_BF == 1) - if (ret && pBeamInfo->beamformee_mu_cnt > 1) + if (ret && pBeamInfo->beamformee_mu_cnt > 1) { ret = 1; - else + } else { ret = 0; + } #endif - if (ret) + if (ret) { ret = BeamformingStart_SW(pDM_Odm, pSoundInfo->SoundIdx, pSoundInfo->SoundMode, pSoundInfo->SoundBW); - else + } else { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s, Error value return from BeamformingStart_V2\n", __func__)); - + } if ((pBeamInfo->beamformee_su_cnt != 0) || (pBeamInfo->beamformee_mu_cnt > 1)) { if (pSoundInfo->SoundMode == SOUNDING_SW_VHT_TIMER || pSoundInfo->SoundMode == SOUNDING_SW_HT_TIMER) ODM_SetTimer(pDM_Odm, &pBeamInfo->BeamformingTimer, pSoundInfo->SoundPeriod); @@ -1694,7 +1691,7 @@ Beamforming_SWTimerCallback( PADAPTER Adapter = (PADAPTER)pTimer->Adapter; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); PDM_ODM_T pDM_Odm = &pHalData->DM_OutSrc; - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); Beamforming_TimerCallback(pDM_Odm); #elif(DM_ODM_SUPPORT_TYPE == ODM_CE) diff --git a/hal/phydm/phydm_kfree.c b/hal/phydm/phydm_kfree.c index a91cdee9b..889c050e6 100644 --- a/hal/phydm/phydm_kfree.c +++ b/hal/phydm/phydm_kfree.c @@ -38,7 +38,7 @@ phydm_SetKfreeToRF_8814A( PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; PODM_RF_CAL_T pRFCalibrateInfo = &(pDM_Odm->RFCalibrateInfo); BOOLEAN bOdd; - + if ((Data%2) != 0) { /*odd -> positive*/ Data = Data - 1; ODM_SetRFReg(pDM_Odm, eRFPath, rRF_TxGainOffset, BIT19, 1); @@ -113,9 +113,9 @@ phydm_SetKfreeToRF_8814A( /*that means Kfree offset is negative, we need to record it.*/ pRFCalibrateInfo->KfreeOffset[eRFPath] = (-1)*pRFCalibrateInfo->KfreeOffset[eRFPath]; ODM_RT_TRACE(pDM_Odm, ODM_COMP_MP, ODM_DBG_LOUD, ("phy_ConfigKFree8814A(): KfreeOffset = %d\n", pRFCalibrateInfo->KfreeOffset[eRFPath])); - } else + } else { ODM_RT_TRACE(pDM_Odm, ODM_COMP_MP, ODM_DBG_LOUD, ("phy_ConfigKFree8814A(): KfreeOffset = %d\n", pRFCalibrateInfo->KfreeOffset[eRFPath])); - + } } @@ -127,7 +127,7 @@ phydm_SetKfreeToRF( ) { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; - + if (pDM_Odm->SupportICType & ODM_RTL8814A) phydm_SetKfreeToRF_8814A(pDM_Odm, eRFPath, Data); } @@ -150,9 +150,9 @@ phydm_ConfigKFree( maxRFpath = 2; /*0~1*/ else maxRFpath = 1; - + ODM_RT_TRACE(pDM_Odm, ODM_COMP_MP, ODM_DBG_LOUD, ("===>phy_ConfigKFree8814A()\n")); - + if (pRFCalibrateInfo->RegRfKFreeEnable == 2) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_MP, ODM_DBG_LOUD, ("phy_ConfigKFree8814A(): RegRfKFreeEnable == 2, Disable\n")); return; @@ -188,4 +188,3 @@ phydm_ConfigKFree( } ODM_RT_TRACE(pDM_Odm, ODM_COMP_MP, ODM_DBG_LOUD, ("<===phy_ConfigKFree8814A()\n")); } - diff --git a/hal/phydm/phydm_pathdiv.c b/hal/phydm/phydm_pathdiv.c index 0ddeba391..d6aa427c7 100644 --- a/hal/phydm/phydm_pathdiv.c +++ b/hal/phydm/phydm_pathdiv.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -37,34 +37,28 @@ phydm_dtp_fix_tx_path( pPATHDIV_T pDM_PathDiv = &pDM_Odm->DM_PathDiv; u1Byte i,num_enable_path=0; - if(path==pDM_PathDiv->pre_tx_path) - { + if (path==pDM_PathDiv->pre_tx_path) { return; - } - else - { + } else { pDM_PathDiv->pre_tx_path=path; } ODM_SetBBReg( pDM_Odm, 0x93c, BIT18|BIT19, 3); - for(i=0; i<4; i++) - { - if(path&BIT(i)) + for (i=0; i<4; i++) { + if (path&BIT(i)) num_enable_path++; } ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Number of trun-on path : (( %d ))\n", num_enable_path)); - if(num_enable_path == 1) - { + if (num_enable_path == 1) { ODM_SetBBReg( pDM_Odm, 0x93c, 0xf00000, path); - - if(path==PHYDM_A)//1-1 - { + + if (path==PHYDM_A) { //1-1 ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Trun on path (( A ))\n")); ODM_SetBBReg( pDM_Odm, 0x93c, BIT25|BIT24, 0); } - else if(path==PHYDM_B)//1-2 + else if (path==PHYDM_B)//1-2 { ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Trun on path (( B ))\n")); ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 0); @@ -82,20 +76,19 @@ phydm_dtp_fix_tx_path( } } - else if(num_enable_path == 2) + else if (num_enable_path == 2) { ODM_SetBBReg( pDM_Odm, 0x93c, 0xf00000, path); ODM_SetBBReg( pDM_Odm, 0x940, 0xf0, path); - - if(path==PHYDM_AB)//2-1 - { + + if (path==PHYDM_AB) { //2-1 ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Trun on path (( A B ))\n")); //set for 1ss ODM_SetBBReg( pDM_Odm, 0x93c, BIT25|BIT24, 0); ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 1); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0); - ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 1); + ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 1); } else if(path==PHYDM_AC)//2-2 { @@ -105,7 +98,7 @@ phydm_dtp_fix_tx_path( ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 1); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0); - ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1); + ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1); } else if(path==PHYDM_AD)//2-3 { @@ -115,7 +108,7 @@ phydm_dtp_fix_tx_path( ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 1); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0); - ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1); + ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1); } else if(path==PHYDM_BC)//2-4 { @@ -125,7 +118,7 @@ phydm_dtp_fix_tx_path( ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 1); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 0); - ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1); + ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1); } else if(path==PHYDM_BD)//2-5 { @@ -135,7 +128,7 @@ phydm_dtp_fix_tx_path( ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 1); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 0); - ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1); + ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1); } else if(path==PHYDM_CD)//2-6 { @@ -145,7 +138,7 @@ phydm_dtp_fix_tx_path( ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 1); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 0); - ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1); + ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1); } } @@ -154,14 +147,13 @@ phydm_dtp_fix_tx_path( ODM_SetBBReg( pDM_Odm, 0x93c, 0xf00000, path); ODM_SetBBReg( pDM_Odm, 0x940, 0xf0, path); ODM_SetBBReg( pDM_Odm, 0x940, 0xf0000, path); - - if(path==PHYDM_ABC)//3-1 - { + + if(path==PHYDM_ABC) { //3-1 ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Trun on path (( A B C))\n")); //set for 1ss ODM_SetBBReg( pDM_Odm, 0x93c, BIT25|BIT24, 0); ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 1); - ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 2); + ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 2); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0); ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 1); @@ -176,11 +168,11 @@ phydm_dtp_fix_tx_path( ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Trun on path (( A B D ))\n")); //set for 1ss ODM_SetBBReg( pDM_Odm, 0x93c, BIT25|BIT24, 0); - ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 1); + ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 1); ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 2); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0); - ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 1); + ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 1); ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 2); //set for 3ss ODM_SetBBReg( pDM_Odm, 0x940, BIT21|BIT20, 0); @@ -194,7 +186,7 @@ phydm_dtp_fix_tx_path( //set for 1ss ODM_SetBBReg( pDM_Odm, 0x93c, BIT25|BIT24, 0); ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 1); - ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 2); + ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 2); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0); ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1); @@ -210,7 +202,7 @@ phydm_dtp_fix_tx_path( //set for 1ss ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 0); ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 1); - ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 2); + ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 2); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 0); ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1); @@ -268,9 +260,7 @@ phydm_find_default_path( { pDM_PathDiv->is_pathA_exist=FALSE; } - } - else - { + } else { if( (rssi_avg_a >=rssi_avg_b) && (rssi_avg_a >=rssi_avg_c)&&(rssi_avg_a >=rssi_avg_d)) pDM_PathDiv->default_path=PATH_A; else if( (rssi_avg_b >=rssi_avg_c)&&(rssi_avg_b >=rssi_avg_d)) @@ -294,19 +284,14 @@ phydm_candidate_dtp_update( pPATHDIV_T pDM_PathDiv = &pDM_Odm->DM_PathDiv; pDM_PathDiv->num_candidate=3; - - if(pDM_PathDiv->use_path_a_as_default_ant == 1) - { - if(pDM_PathDiv->num_tx_path==3) - { - if(pDM_PathDiv->is_pathA_exist) - { - pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; - pDM_PathDiv->ant_candidate_2 = PHYDM_ABD; + + if(pDM_PathDiv->use_path_a_as_default_ant == 1) { + if(pDM_PathDiv->num_tx_path==3) { + if(pDM_PathDiv->is_pathA_exist) { + pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; + pDM_PathDiv->ant_candidate_2 = PHYDM_ABD; pDM_PathDiv->ant_candidate_3 = PHYDM_ACD; - } - else // use path BCD - { + } else { // use path BCD pDM_PathDiv->num_candidate=1; phydm_dtp_fix_tx_path(pDM_Odm, PHYDM_BCD); return; @@ -316,75 +301,69 @@ phydm_candidate_dtp_update( { if(pDM_PathDiv->is_pathA_exist) { - pDM_PathDiv->ant_candidate_1 = PHYDM_AB; - pDM_PathDiv->ant_candidate_2 = PHYDM_AC; - pDM_PathDiv->ant_candidate_3 = PHYDM_AD; + pDM_PathDiv->ant_candidate_1 = PHYDM_AB; + pDM_PathDiv->ant_candidate_2 = PHYDM_AC; + pDM_PathDiv->ant_candidate_3 = PHYDM_AD; + } else { + pDM_PathDiv->ant_candidate_1 = PHYDM_BC; + pDM_PathDiv->ant_candidate_2 = PHYDM_BD; + pDM_PathDiv->ant_candidate_3 = PHYDM_CD; } - else - { - pDM_PathDiv->ant_candidate_1 = PHYDM_BC; - pDM_PathDiv->ant_candidate_2 = PHYDM_BD; - pDM_PathDiv->ant_candidate_3 = PHYDM_CD; - } } - } - else - { - //2 3 TX Mode - if(pDM_PathDiv->num_tx_path==3)//choose 3 ant form 4 - { - if(pDM_PathDiv->default_path == PATH_A) //choose 2 ant form 3 - { - pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; - pDM_PathDiv->ant_candidate_2 = PHYDM_ABD; - pDM_PathDiv->ant_candidate_3 = PHYDM_ACD; + } else { + //2 3 TX Mode + if(pDM_PathDiv->num_tx_path==3) { //choose 3 ant form 4 + if(pDM_PathDiv->default_path == PATH_A) { //choose 2 ant form 3 + pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; + pDM_PathDiv->ant_candidate_2 = PHYDM_ABD; + pDM_PathDiv->ant_candidate_3 = PHYDM_ACD; } else if(pDM_PathDiv->default_path==PATH_B) { - pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; - pDM_PathDiv->ant_candidate_2 = PHYDM_ABD; - pDM_PathDiv->ant_candidate_3 = PHYDM_BCD; + pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; + pDM_PathDiv->ant_candidate_2 = PHYDM_ABD; + pDM_PathDiv->ant_candidate_3 = PHYDM_BCD; } else if(pDM_PathDiv->default_path == PATH_C) { - pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; - pDM_PathDiv->ant_candidate_2 = PHYDM_ACD; - pDM_PathDiv->ant_candidate_3 = PHYDM_BCD; + pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; + pDM_PathDiv->ant_candidate_2 = PHYDM_ACD; + pDM_PathDiv->ant_candidate_3 = PHYDM_BCD; } else if(pDM_PathDiv->default_path == PATH_D) { - pDM_PathDiv->ant_candidate_1 = PHYDM_ABD; - pDM_PathDiv->ant_candidate_2 = PHYDM_ACD; - pDM_PathDiv->ant_candidate_3 = PHYDM_BCD; + pDM_PathDiv->ant_candidate_1 = PHYDM_ABD; + pDM_PathDiv->ant_candidate_2 = PHYDM_ACD; + pDM_PathDiv->ant_candidate_3 = PHYDM_BCD; } } - - //2 2 TX Mode - else if(pDM_PathDiv->num_tx_path==2)//choose 2 ant form 4 + + //2 2 TX Mode + else if(pDM_PathDiv->num_tx_path==2)//choose 2 ant form 4 { if(pDM_PathDiv->default_path == PATH_A) //choose 2 ant form 3 { - pDM_PathDiv->ant_candidate_1 = PHYDM_AB; - pDM_PathDiv->ant_candidate_2 = PHYDM_AC; - pDM_PathDiv->ant_candidate_3 = PHYDM_AD; + pDM_PathDiv->ant_candidate_1 = PHYDM_AB; + pDM_PathDiv->ant_candidate_2 = PHYDM_AC; + pDM_PathDiv->ant_candidate_3 = PHYDM_AD; } else if(pDM_PathDiv->default_path==PATH_B) { - pDM_PathDiv->ant_candidate_1 = PHYDM_AB; - pDM_PathDiv->ant_candidate_2 = PHYDM_BC; - pDM_PathDiv->ant_candidate_3 = PHYDM_BD; + pDM_PathDiv->ant_candidate_1 = PHYDM_AB; + pDM_PathDiv->ant_candidate_2 = PHYDM_BC; + pDM_PathDiv->ant_candidate_3 = PHYDM_BD; } else if(pDM_PathDiv->default_path == PATH_C) { - pDM_PathDiv->ant_candidate_1 = PHYDM_AC; - pDM_PathDiv->ant_candidate_2 = PHYDM_BC; - pDM_PathDiv->ant_candidate_3 = PHYDM_CD; + pDM_PathDiv->ant_candidate_1 = PHYDM_AC; + pDM_PathDiv->ant_candidate_2 = PHYDM_BC; + pDM_PathDiv->ant_candidate_3 = PHYDM_CD; } else if(pDM_PathDiv->default_path == PATH_D) { - pDM_PathDiv->ant_candidate_1= PHYDM_AD; - pDM_PathDiv->ant_candidate_2 = PHYDM_BD; - pDM_PathDiv->ant_candidate_3= PHYDM_CD; + pDM_PathDiv->ant_candidate_1= PHYDM_AD; + pDM_PathDiv->ant_candidate_2= PHYDM_BD; + pDM_PathDiv->ant_candidate_3= PHYDM_CD; } } } @@ -397,108 +376,96 @@ phydm_dynamic_tx_path( ) { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; - pPATHDIV_T pDM_PathDiv = &pDM_Odm->DM_PathDiv; - + pPATHDIV_T pDM_PathDiv = &pDM_Odm->DM_PathDiv; + PSTA_INFO_T pEntry; u4Byte i; u1Byte num_client=0; u1Byte H2C_Parameter[6] ={0}; - if(!pDM_Odm->bLinked) //bLinked==False - { + if(!pDM_Odm->bLinked) { //bLinked==False ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, ("DTP_8814 [No Link!!!]\n")); - - if(pDM_PathDiv->bBecomeLinked == TRUE) - { + + if(pDM_PathDiv->bBecomeLinked == TRUE) { ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" [Be disconnected]----->\n")); pDM_PathDiv->bBecomeLinked = pDM_Odm->bLinked; } return; - } - else - { - if(pDM_PathDiv->bBecomeLinked ==FALSE) - { + } else { + if(pDM_PathDiv->bBecomeLinked ==FALSE) { ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" [Be Linked !!!]----->\n")); pDM_PathDiv->bBecomeLinked = pDM_Odm->bLinked; - } - } - - //2 [Period CTRL] - if(pDM_PathDiv->dtp_period >=2) - { - pDM_PathDiv->dtp_period=0; + } } - else - { + + //2 [Period CTRL] + if(pDM_PathDiv->dtp_period >=2) { + pDM_PathDiv->dtp_period=0; + } else { //ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, ("Phydm_Dynamic_Tx_Path_8814A() Stay = (( %d ))\n",pDM_PathDiv->dtp_period)); - pDM_PathDiv->dtp_period++; + pDM_PathDiv->dtp_period++; return; } - + //2 [Fix Path] if (pDM_Odm->path_select != PHYDM_AUTO_PATH) { return; } - - //2 [Check Bfer] + + //2 [Check Bfer] #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) #if (BEAMFORMING_SUPPORT == 1) { BEAMFORMING_CAP BeamformCap = (pDM_Odm->BeamformingInfo.BeamformCap); if( BeamformCap & BEAMFORMER_CAP ) // BFmer On && Div On -> Div Off - { - if( pDM_PathDiv->fix_path_bfer == 0) + { + if( pDM_PathDiv->fix_path_bfer == 0) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_PATH_DIV,ODM_DBG_LOUD,("[ PathDiv : OFF ] BFmer ==1 \n")); - pDM_PathDiv->fix_path_bfer = 1 ; + pDM_PathDiv->fix_path_bfer = 1 ; } return; } else // BFmer Off && Div Off -> Div On { - if( pDM_PathDiv->fix_path_bfer == 1 ) + if( pDM_PathDiv->fix_path_bfer == 1 ) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_PATH_DIV,ODM_DBG_LOUD,("[ PathDiv : ON ] BFmer ==0 \n")); pDM_PathDiv->fix_path_bfer = 0; } } } - #endif + #endif #endif - if(pDM_PathDiv->use_path_a_as_default_ant ==1) - { + if(pDM_PathDiv->use_path_a_as_default_ant ==1) { phydm_find_default_path(pDM_Odm); - phydm_candidate_dtp_update(pDM_Odm); - } - else - { - if( pDM_PathDiv->dtp_state == PHYDM_DTP_INIT) - { + phydm_candidate_dtp_update(pDM_Odm); + } else { + if( pDM_PathDiv->dtp_state == PHYDM_DTP_INIT) { phydm_find_default_path(pDM_Odm); phydm_candidate_dtp_update(pDM_Odm); pDM_PathDiv->dtp_state = PHYDM_DTP_RUNNING_1; } - + else if( pDM_PathDiv->dtp_state == PHYDM_DTP_RUNNING_1) { pDM_PathDiv->dtp_check_patha_counter++; - + if(pDM_PathDiv->dtp_check_patha_counter>=NUM_RESET_DTP_PERIOD) { pDM_PathDiv->dtp_check_patha_counter=0; pDM_PathDiv->dtp_state = PHYDM_DTP_INIT; } - //2 Search space update + //2 Search space update else { // 1. find the worst candidate - + // 2. repalce the worst candidate } @@ -507,17 +474,14 @@ phydm_dynamic_tx_path( //2 Dynamic Path Selection H2C - if(pDM_PathDiv->num_candidate == 1) - { + if(pDM_PathDiv->num_candidate == 1) { return; - } - else - { + } else { H2C_Parameter[0] = pDM_PathDiv->num_candidate; - H2C_Parameter[1] = pDM_PathDiv->num_tx_path; - H2C_Parameter[2] = pDM_PathDiv->ant_candidate_1; - H2C_Parameter[3] = pDM_PathDiv->ant_candidate_2; - H2C_Parameter[4] = pDM_PathDiv->ant_candidate_3; + H2C_Parameter[1] = pDM_PathDiv->num_tx_path; + H2C_Parameter[2] = pDM_PathDiv->ant_candidate_1; + H2C_Parameter[3] = pDM_PathDiv->ant_candidate_2; + H2C_Parameter[4] = pDM_PathDiv->ant_candidate_3; ODM_FillH2CCmd(pDM_Odm, PHYDM_H2C_DYNAMIC_TX_PATH, 6, H2C_Parameter); } @@ -525,7 +489,6 @@ phydm_dynamic_tx_path( } - VOID phydm_dynamic_tx_path_init( IN PVOID pDM_VOID @@ -552,29 +515,25 @@ phydm_dynamic_tx_path_init( memcpy(&(pDM_PathDiv->search_space_3[0]), &(search_space_3[0]), NUM_CHOOSE3_FROM4); pDM_PathDiv->use_path_a_as_default_ant= 1; - pDM_PathDiv->dtp_state = PHYDM_DTP_INIT; + pDM_PathDiv->dtp_state = PHYDM_DTP_INIT; pDM_Odm->path_select = PHYDM_AUTO_PATH; pDM_PathDiv->path_div_type = PHYDM_4R_PATH_DIV; - - if(pDM_PathDiv->is_u3_mode ) - { + + if(pDM_PathDiv->is_u3_mode ) { pDM_PathDiv->num_tx_path=3; phydm_dtp_fix_tx_path(pDM_Odm, PHYDM_BCD);/* 3TX Set Init TX Path*/ - - } - else - { + } else { pDM_PathDiv->num_tx_path=2; phydm_dtp_fix_tx_path(pDM_Odm, PHYDM_BC);/* 2TX // Set Init TX Path*/ } - + } VOID -phydm_process_rssi_for_path_div( - IN OUT PVOID pDM_VOID, +phydm_process_rssi_for_path_div( + IN OUT PVOID pDM_VOID, IN PVOID p_phy_info_void, IN PVOID p_pkt_info_void ) @@ -595,20 +554,18 @@ phydm_process_rssi_for_path_div( { pDM_PathDiv->path_a_sum_all+=pPhyInfo->RxMIMOSignalStrength[0]; pDM_PathDiv->path_a_cnt_all++; - + pDM_PathDiv->path_b_sum_all+=pPhyInfo->RxMIMOSignalStrength[1]; pDM_PathDiv->path_b_cnt_all++; - + pDM_PathDiv->path_c_sum_all+=pPhyInfo->RxMIMOSignalStrength[2]; pDM_PathDiv->path_c_cnt_all++; - + pDM_PathDiv->path_d_sum_all+=pPhyInfo->RxMIMOSignalStrength[3]; pDM_PathDiv->path_d_cnt_all++; } #endif - } - else - { + } else { pDM_PathDiv->PathA_Sum[pPktinfo->StationID]+=pPhyInfo->RxMIMOSignalStrength[0]; pDM_PathDiv->PathA_Cnt[pPktinfo->StationID]++; @@ -617,8 +574,6 @@ phydm_process_rssi_for_path_div( } } } - - } #endif //#if RTL8814A_SUPPORT @@ -636,10 +591,10 @@ odm_pathdiv_debug( pPATHDIV_T pDM_PathDiv = &(pDM_Odm->DM_PathDiv); u4Byte used = *_used; u4Byte out_len = *_out_len; - + pDM_Odm->path_select = (dm_value[0] & 0xf); PHYDM_SNPRINTF((output+used, out_len-used,"Path_select = (( 0x%x ))\n",pDM_Odm->path_select )); - + //2 [Fix Path] if (pDM_Odm->path_select != PHYDM_AUTO_PATH) { @@ -648,11 +603,9 @@ odm_pathdiv_debug( ((pDM_Odm->path_select) & 0x2)?"B":"", ((pDM_Odm->path_select) & 0x4)?"C":"", ((pDM_Odm->path_select) & 0x8)?"D":"" )); - + phydm_dtp_fix_tx_path( pDM_Odm, pDM_Odm->path_select ); - } - else - { + } else { PHYDM_SNPRINTF((output+used, out_len-used,"%s\n","Auto Path")); } } @@ -670,8 +623,8 @@ phydm_c2h_dtp_handler( PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; pPATHDIV_T pDM_PathDiv = &(pDM_Odm->DM_PathDiv); - u1Byte macid = CmdBuf[0]; - u1Byte target = CmdBuf[1]; + u1Byte macid = CmdBuf[0]; + u1Byte target = CmdBuf[1]; u1Byte nsc_1 = CmdBuf[2]; u1Byte nsc_2 = CmdBuf[3]; u1Byte nsc_3 = CmdBuf[4]; @@ -688,10 +641,10 @@ phydm_c2h_dtp_handler( } else { - phydm_dtp_fix_tx_path(pDM_Odm, pDM_PathDiv->ant_candidate_3); + phydm_dtp_fix_tx_path(pDM_Odm, pDM_PathDiv->ant_candidate_3); } */ -#endif +#endif } VOID @@ -732,7 +685,7 @@ odm_PathDiversityInit( PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; /*pDM_Odm->SupportAbility |= ODM_BB_PATH_DIV;*/ - + if(pDM_Odm->mp_mode == TRUE) return; @@ -752,7 +705,7 @@ odm_PathDiversityInit( if(pDM_Odm->SupportICType & ODM_RTL8814A) phydm_dynamic_tx_path_init(pDM_Odm); else - #endif + #endif {} #endif } @@ -807,4 +760,3 @@ odm_SwAntDivConstructScanChnl( } #endif // #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) - diff --git a/hal/phydm/txbf/halcomtxbf.c b/hal/phydm/txbf/halcomtxbf.c index 395a21756..9fe2ae899 100644 --- a/hal/phydm/txbf/halcomtxbf.c +++ b/hal/phydm/txbf/halcomtxbf.c @@ -17,8 +17,9 @@ halComTxbf_beamformInit( { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; - if (pDM_Odm->SupportICType & ODM_RTL8822B) + if (pDM_Odm->SupportICType & ODM_RTL8822B) { HalTxbf8822B_Init(pDM_Odm); + } } /*Only used for MU BFer Entry when get GID management frame (self is as MU STA)*/ @@ -29,8 +30,9 @@ halComTxbf_ConfigGtab( { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; - if (pDM_Odm->SupportICType & ODM_RTL8822B) + if (pDM_Odm->SupportICType & ODM_RTL8822B) { HalTxbf8822B_ConfigGtab(pDM_Odm); + } } VOID @@ -167,7 +169,7 @@ phydm_beamformSetGetTxRate( #endif } -VOID +VOID halComTxbf_EnterWorkItemCallback( #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) IN PADAPTER Adapter @@ -184,20 +186,24 @@ halComTxbf_EnterWorkItemCallback( #endif PHAL_TXBF_INFO pTxbfInfo = &pDM_Odm->BeamformingInfo.TxbfInfo; u1Byte Idx = pTxbfInfo->TXBFIdx; - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - - if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) + + if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) { HalTxbfJaguar_Enter(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8192E) + } + else if (pDM_Odm->SupportICType & ODM_RTL8192E) { HalTxbf8192E_Enter(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8814A) + } + else if (pDM_Odm->SupportICType & ODM_RTL8814A) { HalTxbf8814A_Enter(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8822B) + } + else if (pDM_Odm->SupportICType & ODM_RTL8822B) { HalTxbf8822B_Enter(pDM_Odm, Idx); + } } -VOID +VOID halComTxbf_LeaveWorkItemCallback( #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) IN PADAPTER Adapter @@ -218,18 +224,22 @@ halComTxbf_LeaveWorkItemCallback( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) + if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) { HalTxbfJaguar_Leave(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8192E) + } + else if (pDM_Odm->SupportICType & ODM_RTL8192E) { HalTxbf8192E_Leave(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8814A) + } + else if (pDM_Odm->SupportICType & ODM_RTL8814A) { HalTxbf8814A_Leave(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8822B) + } + else if (pDM_Odm->SupportICType & ODM_RTL8822B) { HalTxbf8822B_Leave(pDM_Odm, Idx); + } } -VOID +VOID halComTxbf_FwNdpaWorkItemCallback( #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) IN PADAPTER Adapter @@ -249,14 +259,18 @@ halComTxbf_FwNdpaWorkItemCallback( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) + if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) { HalTxbfJaguar_FwTxBF(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8192E) + } + else if (pDM_Odm->SupportICType & ODM_RTL8192E) { HalTxbf8192E_FwTxBF(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8814A) + } + else if (pDM_Odm->SupportICType & ODM_RTL8814A) { HalTxbf8814A_FwTxBF(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8822B) + } + else if (pDM_Odm->SupportICType & ODM_RTL8822B) { HalTxbf8822B_FwTxBF(pDM_Odm, Idx); + } } VOID @@ -277,14 +291,15 @@ halComTxbf_ClkWorkItemCallback( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - if (pDM_Odm->SupportICType & ODM_RTL8812) + if (pDM_Odm->SupportICType & ODM_RTL8812) { HalTxbfJaguar_Clk_8812A(pDM_Odm); + } } VOID -halComTxbf_RateWorkItemCallback( +halComTxbf_RateWorkItemCallback( #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) IN PADAPTER Adapter #else @@ -300,22 +315,24 @@ halComTxbf_RateWorkItemCallback( #endif PHAL_TXBF_INFO pTxbfInfo = &pDM_Odm->BeamformingInfo.TxbfInfo; u1Byte BW = pTxbfInfo->BW; - u1Byte Rate = pTxbfInfo->Rate; - + u1Byte Rate = pTxbfInfo->Rate; + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - if (pDM_Odm->SupportICType & ODM_RTL8812) + if (pDM_Odm->SupportICType & ODM_RTL8812) { HalTxbf8812A_setNDPArate(pDM_Odm, BW, Rate); - else if (pDM_Odm->SupportICType & ODM_RTL8192E) + } + else if (pDM_Odm->SupportICType & ODM_RTL8192E) { HalTxbf8192E_setNDPArate(pDM_Odm, BW, Rate); - else if (pDM_Odm->SupportICType & ODM_RTL8814A) + } + else if (pDM_Odm->SupportICType & ODM_RTL8814A) { HalTxbf8814A_setNDPArate(pDM_Odm, BW, Rate); - + } } #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) -VOID +VOID halComTxbf_FwNdpaTimerCallback( IN PRT_TIMER pTimer ) @@ -327,13 +344,14 @@ halComTxbf_FwNdpaTimerCallback( PHAL_TXBF_INFO pTxbfInfo = &pDM_Odm->BeamformingInfo.TxbfInfo; - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - if (*pDM_Odm->pbFwDwRsvdPageInProgress) + if (*pDM_Odm->pbFwDwRsvdPageInProgress) { ODM_SetTimer(pDM_Odm, &(pTxbfInfo->Txbf_FwNdpaTimer), 5); - else + } else { PlatformScheduleWorkItem(&(pTxbfInfo->Txbf_FwNdpaWorkItem)); + } } #endif @@ -359,14 +377,18 @@ halComTxbf_StatusWorkItemCallback( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) + if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) { HalTxbfJaguar_Status(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8192E) + } + else if (pDM_Odm->SupportICType & ODM_RTL8192E) { HalTxbf8192E_Status(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8814A) + } + else if (pDM_Odm->SupportICType & ODM_RTL8814A) { HalTxbf8814A_Status(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8822B) + } + else if (pDM_Odm->SupportICType & ODM_RTL8822B) { HalTxbf8822B_Status(pDM_Odm, Idx); + } } VOID @@ -390,7 +412,7 @@ halComTxbf_ResetTxPathWorkItemCallback( if (pDM_Odm->SupportICType & ODM_RTL8814A) HalTxbf8814A_ResetTxPath(pDM_Odm, Idx); - + } VOID @@ -408,7 +430,7 @@ halComTxbf_GetTxRateWorkItemCallback( #else PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; #endif - + if (pDM_Odm->SupportICType & ODM_RTL8814A) HalTxbf8814A_GetTxRate(pDM_Odm); } @@ -426,7 +448,7 @@ HalComTxbf_Set( PHAL_TXBF_INFO pTxbfInfo = &pDM_Odm->BeamformingInfo.TxbfInfo; ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] setType = 0x%X\n", __func__, setType)); - + switch(setType){ case TXBF_SET_SOUNDING_ENTER: pTxbfInfo->TXBFIdx = *pU1Tmp; @@ -457,7 +479,7 @@ HalComTxbf_Set( case TXBF_SET_SOUNDING_CLK: phydm_beamformSetSoundingClk(pDM_Odm); break; - + case TXBF_SET_TX_PATH_RESET: pTxbfInfo->TXBFIdx = *pU1Tmp; phydm_beamformSetResetTxPath(pDM_Odm); @@ -466,7 +488,7 @@ HalComTxbf_Set( case TXBF_SET_GET_TX_RATE: phydm_beamformSetGetTxRate(pDM_Odm); break; - + } return TRUE; @@ -498,7 +520,7 @@ HalComTxbf_Get( *pBoolean = FALSE; } else if (getType == TXBF_GET_EXPLICIT_BEAMFORMER) { if (IS_HARDWARE_TYPE_OLDER_THAN_8812A(Adapter)) - *pBoolean = FALSE; + *pBoolean = FALSE; else if (/*IS_HARDWARE_TYPE_8822B(Adapter) ||*/ IS_HARDWARE_TYPE_8821B(Adapter) || IS_HARDWARE_TYPE_8192E(Adapter) || @@ -519,18 +541,18 @@ HalComTxbf_Get( } else if (getType == TXBF_GET_MU_MIMO_AP) { -#if (RTL8822B_SUPPORT == 1) +#if (RTL8822B_SUPPORT == 1) if (IS_HARDWARE_TYPE_8822B(Adapter)) *pBoolean = TRUE; else #endif *pBoolean = FALSE; } - + return TRUE; -} +} #endif -#endif +#endif diff --git a/os_dep/linux/recv_linux.c b/os_dep/linux/recv_linux.c index 52fbba5df..a802a9d77 100644 --- a/os_dep/linux/recv_linux.c +++ b/os_dep/linux/recv_linux.c @@ -445,10 +445,11 @@ void rtw_os_recv_indicate_pkt(_adapter *padapter, _pkt *pkt, struct rx_pkt_attri #endif /* CONFIG_TCP_CSUM_OFFLOAD_RX */ ret = rtw_netif_rx(padapter->pnetdev, pkt); - if (ret == NET_RX_SUCCESS) + if (ret == NET_RX_SUCCESS) { DBG_COUNTER(padapter->rx_logs.os_netif_ok); - else + } else { DBG_COUNTER(padapter->rx_logs.os_netif_err); + } } } From ff61bb1179a45a5c822a83b674e7fbb5f3f444dd Mon Sep 17 00:00:00 2001 From: kimocoder Date: Sun, 18 Mar 2018 20:26:18 +0100 Subject: [PATCH 202/234] more brackets + cleanup fixes --- hal/phydm/rtl8821a/phydm_iqk_8821a_ce.c | 220 +++++++++++------------- hal/phydm/txbf/halcomtxbf.c | 7 +- hal/phydm/txbf/haltxbfjaguar.c | 23 ++- 3 files changed, 116 insertions(+), 134 deletions(-) diff --git a/hal/phydm/rtl8821a/phydm_iqk_8821a_ce.c b/hal/phydm/rtl8821a/phydm_iqk_8821a_ce.c index 28905fdfc..b3f7bc29b 100755 --- a/hal/phydm/rtl8821a/phydm_iqk_8821a_ce.c +++ b/hal/phydm/rtl8821a/phydm_iqk_8821a_ce.c @@ -33,10 +33,10 @@ void DoIQK_8821A( PVOID pDM_VOID, u1Byte DeltaThermalIndex, - u1Byte ThermalValue, + u1Byte ThermalValue, u1Byte Threshold ) -{ +{ PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; pDM_Odm->RFCalibrateInfo.ThermalValue_IQK= ThermalValue; PHY_IQCalibrate_8821A(pDM_Odm, FALSE); @@ -47,7 +47,7 @@ void _IQK_RX_FillIQC_8821A( IN ODM_RF_RADIO_PATH_E Path, IN unsigned int RX_X, IN unsigned int RX_Y - ) + ) { switch (Path) { case ODM_RF_PATH_A: @@ -60,8 +60,8 @@ void _IQK_RX_FillIQC_8821A( } break; default: - break; - }; + break; + }; } void _IQK_TX_FillIQC_8821A( @@ -69,7 +69,7 @@ void _IQK_TX_FillIQC_8821A( IN ODM_RF_RADIO_PATH_E Path, IN unsigned int TX_X, IN unsigned int TX_Y - ) + ) { switch (Path) { case ODM_RF_PATH_A: @@ -85,14 +85,14 @@ void _IQK_TX_FillIQC_8821A( } break; default: - break; - }; + break; + }; } void _IQK_BackupMacBB_8821A( IN PDM_ODM_T pDM_Odm, IN pu4Byte MACBB_backup, - IN pu4Byte Backup_MACBB_REG, + IN pu4Byte Backup_MACBB_REG, IN u4Byte MACBB_NUM ) { @@ -102,17 +102,17 @@ void _IQK_BackupMacBB_8821A( for (i = 0; i < MACBB_NUM; i++){ MACBB_backup[i] = ODM_Read4Byte(pDM_Odm, Backup_MACBB_REG[i]); } - + ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("BackupMacBB Success!!!!\n")); } void _IQK_BackupRF_8821A( IN PDM_ODM_T pDM_Odm, IN pu4Byte RFA_backup, - IN pu4Byte RFB_backup, - IN pu4Byte Backup_RF_REG, + IN pu4Byte RFB_backup, + IN pu4Byte Backup_RF_REG, IN u4Byte RF_NUM - ) + ) { u4Byte i; @@ -127,15 +127,15 @@ void _IQK_BackupRF_8821A( void _IQK_BackupAFE_8821A( IN PDM_ODM_T pDM_Odm, IN pu4Byte AFE_backup, - IN pu4Byte Backup_AFE_REG, + IN pu4Byte Backup_AFE_REG, IN u4Byte AFE_NUM ) { u4Byte i; ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C - //Save AFE Parameters + //Save AFE Parameters for (i = 0; i < AFE_NUM; i++){ - AFE_backup[i] = ODM_Read4Byte(pDM_Odm, Backup_AFE_REG[i]); + AFE_backup[i] = ODM_Read4Byte(pDM_Odm, Backup_AFE_REG[i]); } ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("BackupAFE Success!!!!\n")); } @@ -143,13 +143,13 @@ void _IQK_BackupAFE_8821A( void _IQK_RestoreMacBB_8821A( IN PDM_ODM_T pDM_Odm, IN pu4Byte MACBB_backup, - IN pu4Byte Backup_MACBB_REG, + IN pu4Byte Backup_MACBB_REG, IN u4Byte MACBB_NUM - ) + ) { u4Byte i; ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C - //Reload MacBB Parameters + //Reload MacBB Parameters for (i = 0; i < MACBB_NUM; i++){ ODM_Write4Byte(pDM_Odm, Backup_MACBB_REG[i], MACBB_backup[i]); } @@ -163,7 +163,7 @@ void _IQK_RestoreRF_8821A( IN pu4Byte RF_backup, IN u4Byte RF_REG_NUM ) -{ +{ u4Byte i; ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C @@ -184,13 +184,13 @@ void _IQK_RestoreRF_8821A( void _IQK_RestoreAFE_8821A( IN PDM_ODM_T pDM_Odm, IN pu4Byte AFE_backup, - IN pu4Byte Backup_AFE_REG, + IN pu4Byte Backup_AFE_REG, IN u4Byte AFE_NUM ) { u4Byte i; ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C - //Reload AFE Parameters + //Reload AFE Parameters for (i = 0; i < AFE_NUM; i++){ ODM_Write4Byte(pDM_Odm, Backup_AFE_REG[i], AFE_backup[i]); } @@ -240,7 +240,7 @@ void _IQK_Tx_8821A( while (cal < cal_num_8821A){ switch (Path) { case ODM_RF_PATH_A: - { + { //Path-A LOK ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C // ========Path-A AFE all on======== @@ -291,7 +291,7 @@ void _IQK_Tx_8821A( ODM_delay_ms(10); //Delay 10ms ODM_Write4Byte(pDM_Odm, 0xcb8, 0x00000000); - + ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C ODM_SetRFReg(pDM_Odm, Path, 0x58, 0x7fe00, ODM_GetRFReg(pDM_Odm, Path, 0x8, 0xffc00)); // Load LOK switch (*pDM_Odm->pBandWidth) @@ -305,12 +305,12 @@ void _IQK_Tx_8821A( { ODM_SetRFReg(pDM_Odm, Path, 0x18, 0x00c00, 0x0); } - break; + break; default: break; } ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); // [31] = 1 --> Page C1 - + // 3. TX RF Setting ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C ODM_SetRFReg(pDM_Odm, Path, 0xef, bRFRegOffsetMask, 0x80000); @@ -390,19 +390,18 @@ void _IQK_Tx_8821A( } } - if (delay_count < 20){ // If 20ms No Result, then cal_retry++ + if (delay_count < 20) { // If 20ms No Result, then cal_retry++ // ============TXIQK Check============== TX_fail = ODM_GetBBReg(pDM_Odm, 0xd00, BIT(12)); - - if (~TX_fail){ + + if (~TX_fail) { ODM_Write4Byte(pDM_Odm, 0xcb8, 0x02000000); VDF_X[k] = ODM_GetBBReg(pDM_Odm, 0xd00, 0x07ff0000)<<21; ODM_Write4Byte(pDM_Odm, 0xcb8, 0x04000000); VDF_Y[k] = ODM_GetBBReg(pDM_Odm, 0xd00, 0x07ff0000)<<21; TX0IQKOK = TRUE; break; - } - else{ + } else { ODM_SetBBReg(pDM_Odm, 0xccc, 0x000007ff, 0x0); ODM_SetBBReg(pDM_Odm, 0xcd4, 0x000007ff, 0x200); TX0IQKOK = FALSE; @@ -411,8 +410,7 @@ void _IQK_Tx_8821A( break; } } - } - else{ + } else { TX0IQKOK = FALSE; cal_retry++; if (cal_retry == 10){ @@ -421,17 +419,16 @@ void _IQK_Tx_8821A( } } } - if (k == 3){ + if (k == 3) { TX_X0[cal] = VDF_X[k-1] ; TX_Y0[cal] = VDF_Y[k-1]; } - } - else{ + } else { ODM_Write4Byte(pDM_Odm, 0xc80, 0x18008c10);// TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16 ODM_Write4Byte(pDM_Odm, 0xc84, 0x38008c10);// RX_Tone_idx[9:0], RxK_Mask[29] ODM_Write4Byte(pDM_Odm, 0xcb8, 0x00100000);// cb8[20] ±N SI/PI ¨Ï¥ÎÅv¤Áµ¹ iqk_dpk module cal_retry = 0; - while(1){ + while (1) { // one shot ODM_Write4Byte(pDM_Odm, 0x980, 0xfa000000); ODM_Write4Byte(pDM_Odm, 0x980, 0xf8000000); @@ -439,12 +436,11 @@ void _IQK_Tx_8821A( ODM_delay_ms(10); //Delay 10ms ODM_Write4Byte(pDM_Odm, 0xcb8, 0x00000000); delay_count = 0; - while (1){ + while (1) { IQK_ready = ODM_GetBBReg(pDM_Odm, 0xd00, BIT(10)); if ((~IQK_ready) || (delay_count>20)) { break; - } - else{ + } else { ODM_delay_ms(1); delay_count++; } @@ -453,7 +449,7 @@ void _IQK_Tx_8821A( if (delay_count < 20){ // If 20ms No Result, then cal_retry++ // ============TXIQK Check============== TX_fail = ODM_GetBBReg(pDM_Odm, 0xd00, BIT(12)); - + if (~TX_fail){ ODM_Write4Byte(pDM_Odm, 0xcb8, 0x02000000); TX_X0[cal] = ODM_GetBBReg(pDM_Odm, 0xd00, 0x07ff0000)<<21; @@ -461,8 +457,7 @@ void _IQK_Tx_8821A( TX_Y0[cal] = ODM_GetBBReg(pDM_Odm, 0xd00, 0x07ff0000)<<21; TX0IQKOK = TRUE; break; - } - else{ + } else { ODM_SetBBReg(pDM_Odm, 0xccc, 0x000007ff, 0x0); ODM_SetBBReg(pDM_Odm, 0xcd4, 0x000007ff, 0x200); TX0IQKOK = FALSE; @@ -471,19 +466,18 @@ void _IQK_Tx_8821A( break; } } - } - else{ + } else { TX0IQKOK = FALSE; cal_retry++; if (cal_retry == 10) - break; + break; } } } if (TX0IQKOK == FALSE) break; // TXK fail, Don't do RXK - + //====== RX IQK ====== ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C // 1. RX RF Setting @@ -494,28 +488,27 @@ void _IQK_Tx_8821A( ODM_SetRFReg(pDM_Odm, Path, 0x8f, bRFRegOffsetMask, 0x88001); ODM_SetRFReg(pDM_Odm, Path, 0x65, bRFRegOffsetMask, 0x931d8); ODM_SetRFReg(pDM_Odm, Path, 0xef, bRFRegOffsetMask, 0x00000); - + ODM_SetBBReg(pDM_Odm, 0x978, 0x03FF8000, (TX_X0[cal])>>21&0x000007ff); - ODM_SetBBReg(pDM_Odm, 0x978, 0x000007FF, (TX_Y0[cal])>>21&0x000007ff); + ODM_SetBBReg(pDM_Odm, 0x978, 0x000007FF, (TX_Y0[cal])>>21&0x000007ff); ODM_SetBBReg(pDM_Odm, 0x978, BIT(31), 0x1); ODM_SetBBReg(pDM_Odm, 0x97c, BIT(31), 0x0); ODM_Write4Byte(pDM_Odm, 0x90c, 0x00008000); ODM_Write4Byte(pDM_Odm, 0x984, 0x0046a911); - + ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); // [31] = 1 --> Page C1 ODM_Write4Byte(pDM_Odm, 0xc80, 0x38008c10);// TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16 ODM_Write4Byte(pDM_Odm, 0xc84, 0x18008c10);// RX_Tone_idx[9:0], RxK_Mask[29] ODM_Write4Byte(pDM_Odm, 0xc88, 0x02140119); - if (pDM_Odm->SupportInterface == 1){ + if (pDM_Odm->SupportInterface == 1) { RXIQK_Loop = 2; // for 2% fail; - } - else{ + } else { RXIQK_Loop = 1; } - for(i = 0; i < RXIQK_Loop; i++){ + for (i = 0; i < RXIQK_Loop; i++) { if (pDM_Odm->SupportInterface == 1) - if(i == 0) + if (i == 0) ODM_Write4Byte(pDM_Odm, 0xc8c, 0x28161100); //Good else ODM_Write4Byte(pDM_Odm, 0xc8c, 0x28160d00); @@ -523,9 +516,9 @@ void _IQK_Tx_8821A( ODM_Write4Byte(pDM_Odm, 0xc8c, 0x28160d00); ODM_Write4Byte(pDM_Odm, 0xcb8, 0x00100000);// cb8[20] ±N SI/PI ¨Ï¥ÎÅv¤Áµ¹ iqk_dpk module - + cal_retry = 0; - while(1){ + while(1) { // one shot ODM_Write4Byte(pDM_Odm, 0x980, 0xfa000000); ODM_Write4Byte(pDM_Odm, 0x980, 0xf8000000); @@ -533,17 +526,16 @@ void _IQK_Tx_8821A( ODM_delay_ms(10); //Delay 10ms ODM_Write4Byte(pDM_Odm, 0xcb8, 0x00000000); delay_count = 0; - while (1){ + while (1) { IQK_ready = ODM_GetBBReg(pDM_Odm, 0xd00, BIT(10)); if ((~IQK_ready)||(delay_count>20)){ break; - } - else{ + } else { ODM_delay_ms(1); delay_count++; } } - + if (delay_count < 20){ // If 20ms No Result, then cal_retry++ // ============RXIQK Check============== RX_fail = ODM_GetBBReg(pDM_Odm, 0xd00, BIT(11)); @@ -564,33 +556,31 @@ void _IQK_Tx_8821A( Image_Power = (reg2<<32)+reg1; DbgPrint("After PW = %d\n", Image_Power); */ - + ODM_Write4Byte(pDM_Odm, 0xcb8, 0x06000000); RX_X0[i][cal] = ODM_GetBBReg(pDM_Odm, 0xd00, 0x07ff0000)<<21; ODM_Write4Byte(pDM_Odm, 0xcb8, 0x08000000); RX_Y0[i][cal] = ODM_GetBBReg(pDM_Odm, 0xd00, 0x07ff0000)<<21; RX0IQKOK = TRUE; break; - } - else{ + } else { ODM_SetBBReg(pDM_Odm, 0xc10, 0x000003ff, 0x200>>1); ODM_SetBBReg(pDM_Odm, 0xc10, 0x03ff0000, 0x0>>1); RX0IQKOK = FALSE; cal_retry++; if (cal_retry == 10) break; - + } - } - else{ + } else { RX0IQKOK = FALSE; cal_retry++; if (cal_retry == 10) break; } } - } - + } + if (TX0IQKOK) TX_Average++; if (RX0IQKOK) @@ -598,27 +588,27 @@ void _IQK_Tx_8821A( } break; default: - break; + break; } cal++; } // FillIQK Result - switch (Path){ + switch (Path) { case ODM_RF_PATH_A: { ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("========Path_A =======\n")); if (TX_Average == 0) break; - - for (i = 0; i < TX_Average; i++){ + + for (i = 0; i < TX_Average; i++) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("TX_X0[%d] = %x ;; TX_Y0[%d] = %x\n", i, (TX_X0[i])>>21&0x000007ff, i, (TX_Y0[i])>>21&0x000007ff)); } - for (i = 0; i < TX_Average; i++){ - for (ii = i+1; ii >21) - (TX_X0[ii]>>21); - if (dx < 3 && dx > -3){ + if (dx < 3 && dx > -3) { dy = (TX_Y0[i]>>21) - (TX_Y0[ii]>>21); - if (dy < 3 && dy > -3){ + if (dy < 3 && dy > -3) { TX_X = ((TX_X0[i]>>21) + (TX_X0[ii]>>21))/2; TX_Y = ((TX_Y0[i]>>21) + (TX_Y0[ii]>>21))/2; TX_finish = 1; @@ -628,22 +618,22 @@ void _IQK_Tx_8821A( } if (TX_finish == 1) break; - } + } if (TX_finish == 1){ _IQK_TX_FillIQC_8821A(pDM_Odm, Path, TX_X, TX_Y); - } - else{ + } else { _IQK_TX_FillIQC_8821A(pDM_Odm, Path, 0x200, 0x0); } - + if (RX_Average == 0) break; - + for (i = 0; i < RX_Average; i++){ ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("RX_X0[0][%d] = %x ;; RX_Y0[0][%d] = %x\n", i, (RX_X0[0][i])>>21&0x000007ff, i, (RX_Y0[0][i])>>21&0x000007ff)); - if (RXIQK_Loop == 2) + if (RXIQK_Loop == 2) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("RX_X0[1][%d] = %x ;; RX_Y0[1][%d] = %x\n", i, (RX_X0[1][i])>>21&0x000007ff, i, (RX_Y0[1][i])>>21&0x000007ff)); + } } for (i = 0; i < RX_Average; i++){ for (ii = i+1; ii ExtPA5G | pDM_Odm->ExtLNA5G<<1; - + ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("== FW IQK Start ==\n")); pDM_Odm->RFCalibrateInfo.IQK_StartTime = 0; pDM_Odm->RFCalibrateInfo.IQK_StartTime = ODM_GetCurrentTime( pDM_Odm); ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("== StartTime: %lld\n", pDM_Odm->RFCalibrateInfo.IQK_StartTime)); ODM_FillH2CCmd(pDM_Odm, ODM_H2C_IQ_CALIBRATION, 3, IQKcmd); - + } #endif - -VOID + +VOID phy_IQCalibrate_8821A( IN PDM_ODM_T pDM_Odm ) { u4Byte MACBB_backup[MACBB_REG_NUM_8821A], AFE_backup[AFE_REG_NUM_8821A], RFA_backup[RF_REG_NUM_8821A], RFB_backup[RF_REG_NUM_8821A]; - u4Byte Backup_MACBB_REG[MACBB_REG_NUM_8821A] = {0x520, 0x550, 0x808, 0xa04, 0x90c, 0xc00, 0x838, 0x82c}; - u4Byte Backup_AFE_REG[AFE_REG_NUM_8821A] = {0xc5c, 0xc60, 0xc64, 0xc68}; - u4Byte Backup_RF_REG[RF_REG_NUM_8821A] = {0x65, 0x8f, 0x0}; + u4Byte Backup_MACBB_REG[MACBB_REG_NUM_8821A] = {0x520, 0x550, 0x808, 0xa04, 0x90c, 0xc00, 0x838, 0x82c}; + u4Byte Backup_AFE_REG[AFE_REG_NUM_8821A] = {0xc5c, 0xc60, 0xc64, 0xc68}; + u4Byte Backup_RF_REG[RF_REG_NUM_8821A] = {0x65, 0x8f, 0x0}; _IQK_BackupMacBB_8821A(pDM_Odm, MACBB_backup, Backup_MACBB_REG, MACBB_REG_NUM_8821A); _IQK_BackupAFE_8821A(pDM_Odm, AFE_backup, Backup_AFE_REG, AFE_REG_NUM_8821A); _IQK_BackupRF_8821A(pDM_Odm, RFA_backup, RFB_backup, Backup_RF_REG, RF_REG_NUM_8821A); - + _IQK_ConfigureMAC_8821A(pDM_Odm); _IQK_Tx_8821A(pDM_Odm, ODM_RF_PATH_A); @@ -763,7 +752,7 @@ phy_IQCalibrate_8821A( _IQK_RestoreMacBB_8821A(pDM_Odm, MACBB_backup, Backup_MACBB_REG, MACBB_REG_NUM_8821A); } -VOID +VOID PHY_ResetIQKResult_8821A( IN PDM_ODM_T pDM_Odm ) @@ -786,12 +775,12 @@ PHY_IQCalibrate_8821A( { #if !(DM_ODM_SUPPORT_TYPE & ODM_AP) PADAPTER pAdapter = pDM_Odm->Adapter; - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); - #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) - u4Byte counter = 0; + #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + u4Byte counter = 0; #endif -#endif +#endif #if (DM_ODM_SUPPORT_TYPE & ODM_WIN ) if (ODM_CheckPowerStatus(pAdapter) == FALSE) @@ -799,26 +788,24 @@ PHY_IQCalibrate_8821A( #endif if (pDM_Odm->mp_mode){ //(MP_DRIVER == 1) - #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) #if (MP_DRIVER == 1) - PMPT_CONTEXT pMptCtx = &(pAdapter->MptCtx); + PMPT_CONTEXT pMptCtx = &(pAdapter->MptCtx); if( pMptCtx->bSingleTone || pMptCtx->bCarrierSuppression) return; #endif #else// (DM_ODM_SUPPORT_TYPE == ODM_CE) - PMPT_CONTEXT pMptCtx = &(pAdapter->mppriv.MptCtx); + PMPT_CONTEXT pMptCtx = &(pAdapter->mppriv.MptCtx); if( pMptCtx->bSingleTone || pMptCtx->bCarrierSuppression) return; - #endif - + #endif + } pDM_Odm->IQKFWOffload = 0; - + //3 == FW IQK == - if(pDM_Odm->IQKFWOffload) - { - if ( ! pDM_Odm->RFCalibrateInfo.bIQKInProgress) - { + if(pDM_Odm->IQKFWOffload) { + if ( ! pDM_Odm->RFCalibrateInfo.bIQKInProgress) { ODM_AcquireSpinLock( pDM_Odm, RT_IQK_SPINLOCK); pDM_Odm->RFCalibrateInfo.bIQKInProgress = TRUE; ODM_ReleaseSpinLock( pDM_Odm, RT_IQK_SPINLOCK); @@ -850,7 +837,7 @@ PHY_IQCalibrate_8821A( } } //3 == Driver IQK == - else { + else { if ( ! pDM_Odm->RFCalibrateInfo.bIQKInProgress) { ODM_AcquireSpinLock(pDM_Odm, RT_IQK_SPINLOCK); pDM_Odm->RFCalibrateInfo.bIQKInProgress = TRUE; @@ -860,17 +847,14 @@ PHY_IQCalibrate_8821A( phy_IQCalibrate_8821A(pDM_Odm); pDM_Odm->RFCalibrateInfo.IQK_ProgressingTime = ODM_GetProgressingTime( pDM_Odm, pDM_Odm->RFCalibrateInfo.IQK_StartTime); ODM_RT_TRACE(pDM_Odm,ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("IQK ProgressingTime = %lld ms\n", pDM_Odm->RFCalibrateInfo.IQK_ProgressingTime)); - + ODM_AcquireSpinLock(pDM_Odm, RT_IQK_SPINLOCK); pDM_Odm->RFCalibrateInfo.bIQKInProgress = FALSE; ODM_ReleaseSpinLock(pDM_Odm, RT_IQK_SPINLOCK); - } - else - { + } else { ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("== Return the IQK CMD, because the IQK in Progress ==\n")); } } - + } #endif - diff --git a/hal/phydm/txbf/halcomtxbf.c b/hal/phydm/txbf/halcomtxbf.c index 9fe2ae899..d4bc10ce7 100644 --- a/hal/phydm/txbf/halcomtxbf.c +++ b/hal/phydm/txbf/halcomtxbf.c @@ -410,9 +410,9 @@ halComTxbf_ResetTxPathWorkItemCallback( u1Byte Idx = pTxbfInfo->TXBFIdx; - if (pDM_Odm->SupportICType & ODM_RTL8814A) + if (pDM_Odm->SupportICType & ODM_RTL8814A) { HalTxbf8814A_ResetTxPath(pDM_Odm, Idx); - + } } VOID @@ -431,8 +431,9 @@ halComTxbf_GetTxRateWorkItemCallback( PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; #endif - if (pDM_Odm->SupportICType & ODM_RTL8814A) + if (pDM_Odm->SupportICType & ODM_RTL8814A) { HalTxbf8814A_GetTxRate(pDM_Odm); + } } diff --git a/hal/phydm/txbf/haltxbfjaguar.c b/hal/phydm/txbf/haltxbfjaguar.c index e1253710f..83671d869 100644 --- a/hal/phydm/txbf/haltxbfjaguar.c +++ b/hal/phydm/txbf/haltxbfjaguar.c @@ -17,8 +17,8 @@ HalTxbf8812A_setNDPArate( ) { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; - - ODM_Write1Byte(pDM_Odm, REG_NDPA_OPT_CTRL_8812A, (Rate << 2 | BW)); + + ODM_Write1Byte(pDM_Odm, REG_NDPA_OPT_CTRL_8812A, (Rate << 2 | BW)); } @@ -29,7 +29,7 @@ halTxbfJaguar_RfMode( ) { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; - + if (pDM_Odm->RFType == ODM_1T1R) return; @@ -133,9 +133,9 @@ halTxbfJaguar_DownloadNDPA( DLBcnCount++; } while (!(BcnValidReg & BIT0) && DLBcnCount < 5); - if (!(BcnValidReg & BIT0)) + if (!(BcnValidReg & BIT0)) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Download RSVD page failed!\n", __func__)); - + } /*TDECTRL[15:8] 0x209[7:0] = 0xF6 Beacon Head for TXDMA*/ ODM_Write1Byte(pDM_Odm, REG_TDECTRL_8812A + 1, TxPageBndy); @@ -306,7 +306,7 @@ HalTxbfJaguar_Leave( PRT_BEAMFORMING_INFO pBeamformingInfo = &pDM_Odm->BeamformingInfo; RT_BEAMFORMER_ENTRY BeamformerEntry; RT_BEAMFORMEE_ENTRY BeamformeeEntry; - + if (Idx < BEAMFORMER_ENTRY_NUM) { BeamformerEntry = pBeamformingInfo->BeamformerEntry[Idx]; BeamformeeEntry = pBeamformingInfo->BeamformeeEntry[Idx]; @@ -318,7 +318,7 @@ HalTxbfJaguar_Leave( /*Clear P_AID of Beamformee*/ /*Clear MAC address of Beamformer*/ /*Clear Associated Bfmee Sel*/ - + if (BeamformerEntry.BeamformEntryCap == BEAMFORMING_CAP_NONE) { ODM_Write1Byte(pDM_Odm, REG_SND_PTCL_CTRL_8812A, 0xC8); if (Idx == 0) { @@ -346,7 +346,7 @@ HalTxbfJaguar_Leave( ODM_Write2Byte(pDM_Odm, REG_BFMEE_SEL_8812A + 2, ODM_Read2Byte(pDM_Odm, REG_BFMEE_SEL_8812A + 2) & 0x60); } } - + } @@ -440,14 +440,14 @@ HalTxbfJaguar_Clk_8812A( u2Byte u2btmp; u1Byte Count = 0, u1btmp; PADAPTER Adapter = pDM_Odm->Adapter; - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); if (*(pDM_Odm->pbScanInProcess)) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] return by Scan\n", __func__)); return; } -#if DEV_BUS_TYPE == RT_PCI_INTERFACE +#if DEV_BUS_TYPE == RT_PCI_INTERFACE /*Stop PCIe TxDMA*/ ODM_Write1Byte(pDM_Odm, REG_PCIE_CTRL_REG_8812A + 1, 0xFE); #endif @@ -521,7 +521,4 @@ HalTxbfJaguar_Clk_8812A( #endif - - #endif - From 22a2b061aef8fd202ec98abf52f0806f30961037 Mon Sep 17 00:00:00 2001 From: Christian B Date: Mon, 19 Mar 2018 20:15:27 +0100 Subject: [PATCH 203/234] Fix for ARM RPI --- Makefile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index e4e3aac6f..33db331cd 100755 --- a/Makefile +++ b/Makefile @@ -1728,11 +1728,13 @@ endif ifeq ($(CONFIG_PLATFORM_ARM_RPI), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -ARCH := arm -CROSS_COMPILE := +EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT +ARCH ?= arm +CROSS_COMPILE ?= KVER ?= $(shell uname -r) -KSRC ?= /lib/modules/$(KVER)/build +KSRC := /lib/modules/$(KVER)/build MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ +INSTALL_PREFIX := endif ifeq ($(CONFIG_PLATFORM_RTK129X), y) From ca6ba8ef080d89e305e404f6c5fb515618745444 Mon Sep 17 00:00:00 2001 From: Christian B Date: Mon, 19 Mar 2018 20:20:58 +0100 Subject: [PATCH 204/234] Fixed 'implicit-fallthrough' warning By adding an explict comment saying 'Intentional fallthrough' you hint at the compiler that it isn't an error/omission, but you explicitly want that (feature). --- core/rtw_mlme_ext.c | 1 + 1 file changed, 1 insertion(+) diff --git a/core/rtw_mlme_ext.c b/core/rtw_mlme_ext.c index 59b4bc6ad..050bfa364 100644 --- a/core/rtw_mlme_ext.c +++ b/core/rtw_mlme_ext.c @@ -1424,6 +1424,7 @@ void mgt_dispatcher(_adapter *padapter, union recv_frame *precv_frame) ptable->func = &OnAuth; } else ptable->func = &OnAuthClient; + /* Intentional fallthrough */ /* pass through */ case WIFI_ASSOCREQ: case WIFI_REASSOCREQ: From 8e6ebdc46cdb7ea8fd534266dfdeadca1cc6de6b Mon Sep 17 00:00:00 2001 From: Christian B Date: Tue, 20 Mar 2018 11:51:50 +0100 Subject: [PATCH 205/234] Makefile: add configuration option for ODROID-C2 --- Makefile | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Makefile b/Makefile index 33db331cd..27b1791f3 100755 --- a/Makefile +++ b/Makefile @@ -144,6 +144,7 @@ CONFIG_PLATFORM_ARM_SPREADTRUM_6820 = n CONFIG_PLATFORM_ARM_SPREADTRUM_8810 = n CONFIG_PLATFORM_ARM_WMT = n CONFIG_PLATFORM_ARM_RPI = n +CONFIG_PLATFORM_ARM_ODROIDC2 = n CONFIG_PLATFORM_TI_DM365 = n CONFIG_PLATFORM_MOZART = n CONFIG_PLATFORM_RTK119X = n @@ -1737,6 +1738,17 @@ MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ INSTALL_PREFIX := endif +ifeq ($(CONFIG_PLATFORM_ARM_ODROIDC2), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT +ARCH ?= arm64 +CROSS_COMPILE ?= +KVER ?= $(shell uname -r) +KSRC := /lib/modules/$(KVER)/build +MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ +INSTALL_PREFIX := +endif + ifeq ($(CONFIG_PLATFORM_RTK129X), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN EXTRA_CFLAGS += -DRTK_129X_PLATFORM From 0b88d529f8baaf3fc9118af4dbb1e6dabd2ff84d Mon Sep 17 00:00:00 2001 From: Christian B Date: Tue, 20 Mar 2018 11:54:07 +0100 Subject: [PATCH 206/234] Optimized dkms.conf --- dkms.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dkms.conf b/dkms.conf index f68ea0d65..3f1f60343 100644 --- a/dkms.conf +++ b/dkms.conf @@ -3,7 +3,7 @@ PACKAGE_VERSION="5.1.5~20180315" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" -MAKE[0]="'make' KVER=${kernelver} && 'make' RTL8814=1 KVER=${kernelver}" +MAKE[0]="'make' -j$PROCS_NUM KVER=${kernelver} && 'make' -j$PROCS_NUM RTL8814=1 KVER=${kernelver}" BUILT_MODULE_NAME[1]=8814au DEST_MODULE_LOCATION[1]="/updates" AUTOINSTALL="yes" From 0ab0ad34286473c533b74c8599b36b3611f5529c Mon Sep 17 00:00:00 2001 From: Christian B Date: Tue, 20 Mar 2018 11:56:31 +0100 Subject: [PATCH 207/234] Nuke all hardcoded reg-domain nonsense --- include/rtw_wifi_regd.h | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/include/rtw_wifi_regd.h b/include/rtw_wifi_regd.h index ba130a236..7acbb9527 100644 --- a/include/rtw_wifi_regd.h +++ b/include/rtw_wifi_regd.h @@ -5,19 +5,7 @@ *****************************************************************************/ #ifndef __RTW_WIFI_REGD_H__ -#define __RTW_WIFI_REGD_H__ - -struct country_code_to_enum_rd { - u16 countrycode; - const char *iso_name; -}; - -enum country_code_type_t { - COUNTRY_CODE_USER = 0, - - /*add new channel plan above this line */ - COUNTRY_CODE_MAX -}; +#define __RTW_WIFI_REGD_H__ int rtw_regd_init(_adapter *padapter); void rtw_reg_notify_by_driver(_adapter *adapter); @@ -30,4 +18,3 @@ void rtw_reg_notify_by_driver(_adapter *adapter); #endif #endif /* __RTW_WIFI_REGD_H__ */ - From ec103e0fa66aaac4d7349bffbfd73e4f3256452e Mon Sep 17 00:00:00 2001 From: Christian B Date: Tue, 20 Mar 2018 11:59:32 +0100 Subject: [PATCH 208/234] Nuke all hardcoded reg-domain nonsense --- os_dep/linux/wifi_regd.c | 501 +-------------------------------------- 1 file changed, 1 insertion(+), 500 deletions(-) diff --git a/os_dep/linux/wifi_regd.c b/os_dep/linux/wifi_regd.c index 3296d695b..75b60cf96 100644 --- a/os_dep/linux/wifi_regd.c +++ b/os_dep/linux/wifi_regd.c @@ -10,512 +10,13 @@ #include -static struct country_code_to_enum_rd allCountries[] = { - {COUNTRY_CODE_USER, "RD"}, -}; - -/* - * REG_RULE(freq start, freq end, bandwidth, max gain, eirp, reg_flags) - */ - -/* - *Only these channels all allow active - *scan on all world regulatory domains - */ - -/* 2G chan 01 - chan 11 */ -#define RTW_2GHZ_CH01_11 \ - REG_RULE(2412-10, 2462+10, 40, 0, 20, 0) - -/* - *We enable active scan on these a case - *by case basis by regulatory domain - */ - -/* 2G chan 12 - chan 13, PASSIV SCAN */ -#define RTW_2GHZ_CH12_13 \ - REG_RULE(2467-10, 2472+10, 40, 0, 20, \ - NL80211_RRF_PASSIVE_SCAN) - -/* 2G chan 14, PASSIVS SCAN, NO OFDM (B only) */ -#define RTW_2GHZ_CH14 \ - REG_RULE(2484-10, 2484+10, 40, 0, 20, \ - NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_OFDM) - -/* 5G chan 36 - chan 64 */ -#define RTW_5GHZ_5150_5350 \ - REG_RULE(5150-10, 5350+10, 80, 0, 30, \ - NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) - -/* 5G chan 100 - chan 165 */ -#define RTW_5GHZ_5470_5850 \ - REG_RULE(5470-10, 5850+10, 80, 0, 30, \ - NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) - -/* 5G chan 149 - chan 165 */ -#define RTW_5GHZ_5725_5850 \ - REG_RULE(5725-10, 5850+10, 80, 0, 30, \ - NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) - -/* 5G chan 36 - chan 165 */ -#define RTW_5GHZ_5150_5850 \ - REG_RULE(5150-10, 5850+10, 80, 0, 30, \ - NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) - -static const struct ieee80211_regdomain rtw_regdom_rd = { - .n_reg_rules = 4, - .alpha2 = "99", - .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_2GHZ_CH12_13, - RTW_2GHZ_CH14, - RTW_5GHZ_5150_5850, - } -}; -#if 0 -static const struct ieee80211_regdomain rtw_regdom_11 = { - .n_reg_rules = 1, - .alpha2 = "99", - .reg_rules = { - RTW_2GHZ_CH01_11, - } -}; - -static const struct ieee80211_regdomain rtw_regdom_12_13 = { - .n_reg_rules = 2, - .alpha2 = "99", - .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_2GHZ_CH12_13, - } -}; - -static const struct ieee80211_regdomain rtw_regdom_no_midband = { - .n_reg_rules = 3, - .alpha2 = "99", - .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_5GHZ_5150_5350, - RTW_5GHZ_5725_5850, - } -}; - -static const struct ieee80211_regdomain rtw_regdom_60_64 = { - .n_reg_rules = 3, - .alpha2 = "99", - .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_2GHZ_CH12_13, - RTW_5GHZ_5725_5850, - } -}; - -static const struct ieee80211_regdomain rtw_regdom_14_60_64 = { - .n_reg_rules = 4, - .alpha2 = "99", - .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_2GHZ_CH12_13, - RTW_2GHZ_CH14, - RTW_5GHZ_5725_5850, - } -}; - -static const struct ieee80211_regdomain rtw_regdom_14 = { - .n_reg_rules = 3, - .alpha2 = "99", - .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_2GHZ_CH12_13, - RTW_2GHZ_CH14, - } -}; -#endif -#if 0 -static struct rtw_regulatory *rtw_regd; -#endif - -static bool _rtw_is_radar_freq(u16 center_freq) -{ - return (center_freq >= 5260 && center_freq <= 5700); -} - -#if 0 // not_yet -static void _rtw_reg_apply_beaconing_flags(struct wiphy *wiphy, - enum nl80211_reg_initiator initiator) -{ - enum ieee80211_band band; - struct ieee80211_supported_band *sband; - const struct ieee80211_reg_rule *reg_rule; - struct ieee80211_channel *ch; - unsigned int i; - u32 bandwidth = 0; - int r; - - for (band = 0; band < IEEE80211_NUM_BANDS; band++) { - - if (!wiphy->bands[band]) - continue; - - sband = wiphy->bands[band]; - - for (i = 0; i < sband->n_channels; i++) { - ch = &sband->channels[i]; - if (_rtw_is_radar_freq(ch->center_freq) || - (ch->flags & IEEE80211_CHAN_RADAR)) - continue; - if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) { - r = freq_reg_info(wiphy, ch->center_freq, - bandwidth, ®_rule); - if (r) - continue; - - /* - *If 11d had a rule for this channel ensure - *we enable adhoc/beaconing if it allows us to - *use it. Note that we would have disabled it - *by applying our static world regdomain by - *default during init, prior to calling our - *regulatory_hint(). - */ - - if (!(reg_rule->flags & NL80211_RRF_NO_IBSS)) - ch->flags &= ~IEEE80211_CHAN_NO_IBSS; - if (! - (reg_rule->flags & - NL80211_RRF_PASSIVE_SCAN)) - ch->flags &= - ~IEEE80211_CHAN_PASSIVE_SCAN; - } else { - if (ch->beacon_found) - ch->flags &= ~(IEEE80211_CHAN_NO_IBSS | - IEEE80211_CHAN_PASSIVE_SCAN); - } - } - } -} - -/* Allows active scan scan on Ch 12 and 13 */ -static void _rtw_reg_apply_active_scan_flags(struct wiphy *wiphy, - enum nl80211_reg_initiator - initiator) -{ - struct ieee80211_supported_band *sband; - struct ieee80211_channel *ch; - const struct ieee80211_reg_rule *reg_rule; - u32 bandwidth = 0; - int r; - - if (!wiphy->bands[IEEE80211_BAND_2GHZ]) - return; - sband = wiphy->bands[IEEE80211_BAND_2GHZ]; - - /* - * If no country IE has been received always enable active scan - * on these channels. This is only done for specific regulatory SKUs - */ - if (initiator != NL80211_REGDOM_SET_BY_COUNTRY_IE) { - ch = &sband->channels[11]; /* CH 12 */ - if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) - ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; - ch = &sband->channels[12]; /* CH 13 */ - if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) - ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; - return; - } - - /* - * If a country IE has been received check its rule for this - * channel first before enabling active scan. The passive scan - * would have been enforced by the initial processing of our - * custom regulatory domain. - */ - - ch = &sband->channels[11]; /* CH 12 */ - r = freq_reg_info(wiphy, ch->center_freq, bandwidth, ®_rule); - if (!r) { - if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN)) - if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) - ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; - } - - ch = &sband->channels[12]; /* CH 13 */ - r = freq_reg_info(wiphy, ch->center_freq, bandwidth, ®_rule); - if (!r) { - if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN)) - if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) - ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; - } -} -#endif - -/* - * Always apply Radar/DFS rules on - * freq range 5260 MHz - 5700 MHz - */ -static void _rtw_reg_apply_radar_flags(struct wiphy *wiphy) -{ - struct ieee80211_supported_band *sband; - struct ieee80211_channel *ch; - unsigned int i; - - if (!wiphy->bands[IEEE80211_BAND_5GHZ]) - return; - - sband = wiphy->bands[IEEE80211_BAND_5GHZ]; - - for (i = 0; i < sband->n_channels; i++) { - ch = &sband->channels[i]; - if (!_rtw_is_radar_freq(ch->center_freq)) - continue; -#ifdef CONFIG_DFS - #if defined(CONFIG_DFS_MASTER) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) - if (!(ch->flags & IEEE80211_CHAN_DISABLED)) { - ch->flags |= IEEE80211_CHAN_RADAR; - #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)) - ch->flags |= (IEEE80211_CHAN_NO_IBSS|IEEE80211_CHAN_PASSIVE_SCAN); - #else - ch->flags |= IEEE80211_CHAN_NO_IR; - #endif - } - #endif -#endif //CONFIG_DFS - -#if 0 - /* - * We always enable radar detection/DFS on this - * frequency range. Additionally we also apply on - * this frequency range: - * - If STA mode does not yet have DFS supports disable - * active scanning - * - If adhoc mode does not support DFS yet then disable - * adhoc in the frequency. - * - If AP mode does not yet support radar detection/DFS - * do not allow AP mode - */ - if (!(ch->flags & IEEE80211_CHAN_DISABLED)) - ch->flags |= IEEE80211_CHAN_RADAR | - IEEE80211_CHAN_NO_IBSS | - IEEE80211_CHAN_PASSIVE_SCAN; -#endif - } -} - -static void _rtw_reg_apply_flags(struct wiphy *wiphy) -{ -#if 1 // by channel plan - _adapter *padapter = wiphy_to_adapter(wiphy); - - struct ieee80211_supported_band *sband; - struct ieee80211_channel *ch; - unsigned int i, j; - u16 channel; - - // all channels disable - for (i = 0; i < IEEE80211_NUM_BANDS; i++) { - sband = wiphy->bands[i]; - - if (sband) { - for (j = 0; j < sband->n_channels; j++) { - ch = &sband->channels[j]; - - if (ch) - ch->flags &= ~(IEEE80211_CHAN_DISABLED|IEEE80211_CHAN_NO_HT40PLUS| - IEEE80211_CHAN_NO_HT40MINUS|IEEE80211_CHAN_NO_80MHZ| - IEEE80211_CHAN_NO_160MHZ); - } - } - } - -#else - struct ieee80211_supported_band *sband; - struct ieee80211_channel *ch; - unsigned int i, j; - u16 channels[37] = - { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, - 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, - 149, 153, - 157, 161, 165 - }; - u16 channel; - u32 freq; - - for (i = 0; i < IEEE80211_NUM_BANDS; i++) { - sband = wiphy->bands[i]; - - if (sband) - for (j = 0; j < sband->n_channels; j++) { - ch = &sband->channels[j]; - - if (ch) - ch->flags = IEEE80211_CHAN_DISABLED; - } - } - - for (i = 0; i < 37; i++) { - channel = channels[i]; - freq = rtw_ch2freq(channel); - - ch = ieee80211_get_channel(wiphy, freq); - if (ch) { - if (channel <= 11) - ch->flags = 0; - else - ch->flags = 0; //IEEE80211_CHAN_PASSIVE_SCAN; - } - //printk("%s: freq %d(%d) flag 0x%02X \n", __func__, freq, channel, ch->flags); - } -#endif -} - -static void _rtw_reg_apply_world_flags(struct wiphy *wiphy, - enum nl80211_reg_initiator initiator, - struct rtw_regulatory *reg) -{ - //_rtw_reg_apply_beaconing_flags(wiphy, initiator); - //_rtw_reg_apply_active_scan_flags(wiphy, initiator); - return; -} - -static int _rtw_reg_notifier_apply(struct wiphy *wiphy, - struct regulatory_request *request, - struct rtw_regulatory *reg) -{ - - /* Hard code flags */ - _rtw_reg_apply_flags(wiphy); - - /* We always apply this */ - _rtw_reg_apply_radar_flags(wiphy); - - switch (request->initiator) { - case NL80211_REGDOM_SET_BY_DRIVER: - // DBG_8192C("%s: %s\n", __func__, "NL80211_REGDOM_SET_BY_DRIVER"); - _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, - reg); - break; - case NL80211_REGDOM_SET_BY_CORE: - // DBG_8192C("%s: %s\n", __func__, "NL80211_REGDOM_SET_BY_CORE to DRV"); - _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, - reg); - break; - case NL80211_REGDOM_SET_BY_USER: - // DBG_8192C("%s: %s\n", __func__, "NL80211_REGDOM_SET_BY_USER to DRV"); - _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, - reg); - break; - case NL80211_REGDOM_SET_BY_COUNTRY_IE: - // DBG_8192C("%s: %s\n", __func__, "NL80211_REGDOM_SET_BY_COUNTRY_IE"); - _rtw_reg_apply_world_flags(wiphy, request->initiator, reg); - break; - } - - return 0; -} - -static const struct ieee80211_regdomain *_rtw_regdomain_select(struct - rtw_regulatory - *reg) -{ -#if 0 - switch (reg->country_code) { - case COUNTRY_CODE_USER: - default: - return &rtw_regdom_rd; - } -#else - return &rtw_regdom_rd; -#endif -} - -void _rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) -{ - struct rtw_regulatory *reg = NULL; - - // DBG_8192C("%s\n", __func__); - - _rtw_reg_notifier_apply(wiphy, request, reg); -} - -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)) -int rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) -#else -void rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) -#endif -{ - _rtw_reg_notifier(wiphy, request); - #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)) - return 0; - #endif -} - void rtw_reg_notify_by_driver(_adapter *adapter) { - if ((adapter->rtw_wdev != NULL) && (adapter->rtw_wdev->wiphy)) { - struct regulatory_request request; - request.initiator = NL80211_REGDOM_SET_BY_DRIVER; - rtw_reg_notifier(adapter->rtw_wdev->wiphy, &request); - } -} - -static void _rtw_regd_init_wiphy(struct rtw_regulatory *reg, struct wiphy *wiphy) -{ - const struct ieee80211_regdomain *regd; - - wiphy->reg_notifier = rtw_reg_notifier; - - #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)) - wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY; - wiphy->flags &= ~WIPHY_FLAG_STRICT_REGULATORY; - wiphy->flags &= ~WIPHY_FLAG_DISABLE_BEACON_HINTS; - #else - wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG; - wiphy->regulatory_flags &= ~REGULATORY_STRICT_REG; - wiphy->regulatory_flags &= ~REGULATORY_DISABLE_BEACON_HINTS; - #endif - - regd = _rtw_regdomain_select(reg); - wiphy_apply_custom_regulatory(wiphy, regd); - - /* Hard code flags */ - _rtw_reg_apply_flags(wiphy); - _rtw_reg_apply_radar_flags(wiphy); - _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, reg); -} - -static struct country_code_to_enum_rd *_rtw_regd_find_country(u16 countrycode) -{ - int i; - - for (i = 0; i < ARRAY_SIZE(allCountries); i++) { - if (allCountries[i].countrycode == countrycode) - return &allCountries[i]; - } - return NULL; + return 0; } int rtw_regd_init(_adapter * padapter) { - struct wiphy *wiphy = padapter->rtw_wdev->wiphy; - -#if 0 - if (rtw_regd == NULL) { - rtw_regd = (struct rtw_regulatory *) - rtw_malloc(sizeof(struct rtw_regulatory)); - - rtw_regd->alpha2[0] = '9'; - rtw_regd->alpha2[1] = '9'; - - rtw_regd->country_code = COUNTRY_CODE_USER; - } - - DBG_8192C("%s: Country alpha2 being used: %c%c\n", - __func__, rtw_regd->alpha2[0], rtw_regd->alpha2[1]); -#endif - - _rtw_regd_init_wiphy(NULL, wiphy); - return 0; } #endif //CONFIG_IOCTL_CFG80211 - From 01ab3284e882d0ef579f80dd378b9ab84b670098 Mon Sep 17 00:00:00 2001 From: kimocoder Date: Wed, 21 Mar 2018 10:08:01 +0100 Subject: [PATCH 209/234] Fixed warnings + Nuked hardcoded reg-domain --- core/rtw_recv.c | 3 ++- core/rtw_xmit.c | 3 ++- os_dep/linux/wifi_regd.c | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/rtw_recv.c b/core/rtw_recv.c index 83ed24e40..91bb6fb04 100644 --- a/core/rtw_recv.c +++ b/core/rtw_recv.c @@ -2125,7 +2125,7 @@ sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame) if ((bDumpRxPkt == 4) && (eth_type == 0x888e)) dump_rx_packet(ptr); #endif - } else + } else { DBG_COUNTER(adapter->rx_logs.core_rx_pre_data_handled); break; default: @@ -2136,6 +2136,7 @@ sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame) retval = _FAIL; break; } +} exit: diff --git a/core/rtw_xmit.c b/core/rtw_xmit.c index 1620473a1..0c6368db4 100644 --- a/core/rtw_xmit.c +++ b/core/rtw_xmit.c @@ -1254,10 +1254,11 @@ static s32 update_attrib(_adapter *padapter, _pkt *pkt, struct pkt_attrib *pattr _rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN); _rtw_memcpy(pattrib->ta, get_bssid(pmlmepriv), ETH_ALEN); DBG_COUNTER(padapter->tx_logs.core_tx_upd_attrib_ap); - } else + } else { DBG_COUNTER(padapter->tx_logs.core_tx_upd_attrib_unknown); bmcast = IS_MCAST(pattrib->ra); + } if (bmcast) { psta = rtw_get_bcmc_stainfo(padapter); if (psta == NULL) { /* if we cannot get psta => drop the pkt */ diff --git a/os_dep/linux/wifi_regd.c b/os_dep/linux/wifi_regd.c index 75b60cf96..b0a4abd80 100644 --- a/os_dep/linux/wifi_regd.c +++ b/os_dep/linux/wifi_regd.c @@ -12,7 +12,7 @@ void rtw_reg_notify_by_driver(_adapter *adapter) { - return 0; + return; } int rtw_regd_init(_adapter * padapter) From 14109ecfdbb4e02b2cb60cc045b17cdd108fee92 Mon Sep 17 00:00:00 2001 From: cail Date: Sat, 24 Mar 2018 15:40:05 -0700 Subject: [PATCH 210/234] Fix FCS on 8812 and 8814 --- core/rtw_recv.c | 11 +++++++++-- hal/rtl8814a/usb/usb_ops_linux.c | 5 +++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/core/rtw_recv.c b/core/rtw_recv.c index 91bb6fb04..8bb59eeaa 100644 --- a/core/rtw_recv.c +++ b/core/rtw_recv.c @@ -3608,8 +3608,15 @@ static sint fill_radiotap_hdr(_adapter *padapter, union recv_frame *precvframe) if (pattrib->mfrag) hdr_buf[rt_len] |= IEEE80211_RADIOTAP_F_FRAG; - /* always append FCS */ - /* hdr_buf[rt_len] |= IEEE80211_RADIOTAP_F_FCS; */ +#ifdef CONFIG_RX_PACKET_APPEND_FCS + // Start by always indicating FCS is there: + hdr_buf[rt_len] |= IEEE80211_RADIOTAP_F_FCS; + + // Next, test for prior conditions that will remove FCS, and update flag accordingly: + if(check_fwstate(&padapter->mlmepriv,WIFI_MONITOR_STATE) == _FALSE) + if((pattrib->pkt_rpt_type == NORMAL_RX) && (pHalData->ReceiveConfig & RCR_APPFCS)) + hdr_buf[rt_len] &= ~IEEE80211_RADIOTAP_F_FCS; +#endif if (0) hdr_buf[rt_len] |= IEEE80211_RADIOTAP_F_DATAPAD; diff --git a/hal/rtl8814a/usb/usb_ops_linux.c b/hal/rtl8814a/usb/usb_ops_linux.c index f10cd091a..d2fea8714 100644 --- a/hal/rtl8814a/usb/usb_ops_linux.c +++ b/hal/rtl8814a/usb/usb_ops_linux.c @@ -357,8 +357,9 @@ int recvbuf2recvframe(PADAPTER padapter, void *ptr) } #ifdef CONFIG_RX_PACKET_APPEND_FCS - if(pattrib->pkt_rpt_type == NORMAL_RX) - pattrib->pkt_len -= IEEE80211_FCS_LEN; + if (check_fwstate(&padapter->mlmepriv, WIFI_MONITOR_STATE) == _FALSE) + if ((pattrib->pkt_rpt_type == NORMAL_RX) && (pHalData->ReceiveConfig & RCR_APPFCS)) + pattrib->pkt_len -= IEEE80211_FCS_LEN; #endif if(rtw_os_alloc_recvframe(padapter, precvframe, (pbuf + pattrib->shift_sz + pattrib->drvinfo_sz + RXDESC_SIZE), pskb) == _FAIL) From bf5593ab0cf3b85147b55ce9a3cddf0076380d1e Mon Sep 17 00:00:00 2001 From: cail Date: Sun, 25 Mar 2018 09:20:31 -0700 Subject: [PATCH 211/234] Fix power savings breaking monitor mode --- core/rtw_pwrctrl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/rtw_pwrctrl.c b/core/rtw_pwrctrl.c index d8b45f450..0a596db2f 100644 --- a/core/rtw_pwrctrl.c +++ b/core/rtw_pwrctrl.c @@ -219,6 +219,7 @@ bool rtw_pwr_unassociated_idle(_adapter *adapter) || check_fwstate(pmlmepriv, WIFI_UNDER_LINKING | WIFI_UNDER_WPS) || check_fwstate(pmlmepriv, WIFI_AP_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE) + || check_fwstate(pmlmepriv, WIFI_MONITOR_STATE) #if defined(CONFIG_P2P) && defined(CONFIG_IOCTL_CFG80211) || pcfg80211_wdinfo->is_ro_ch #elif defined(CONFIG_P2P) @@ -618,6 +619,7 @@ u8 PS_RDY_CHECK(_adapter *padapter) || check_fwstate(pmlmepriv, WIFI_UNDER_LINKING | WIFI_UNDER_WPS) || check_fwstate(pmlmepriv, WIFI_AP_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE) + || check_fwstate(pmlmepriv, WIFI_MONITOR_STATE) #if defined(CONFIG_P2P) && defined(CONFIG_IOCTL_CFG80211) || pcfg80211_wdinfo->is_ro_ch #endif From b6c6c05f4ac3b6db41909367519f9420b0a74973 Mon Sep 17 00:00:00 2001 From: kimocoder Date: Tue, 27 Mar 2018 15:02:10 +0200 Subject: [PATCH 212/234] Removed pre-configured SeqNum via RadioTap --- core/rtw_xmit.c | 14 +++++++------- hal/rtl8812a/usb/rtl8812au_xmit.c | 2 +- hal/rtl8814a/usb/rtl8814au_xmit.c | 5 +---- include/rtw_xmit.h | 2 +- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/core/rtw_xmit.c b/core/rtw_xmit.c index 0c6368db4..c1019bbb2 100644 --- a/core/rtw_xmit.c +++ b/core/rtw_xmit.c @@ -3875,7 +3875,7 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev) u32 len = skb->len; u8 category, action; int type = -1; - + //RTW_INFO(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); if (skb) @@ -3923,17 +3923,17 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev) fixed_rate = 0; fixed_rate += MGN_MCS0; } - if ((mcs_have & 4) && + if ((mcs_have & 4) && (iterator.this_arg[1] & 4)) sgi = 1; - if ((mcs_have & 1) && + if ((mcs_have & 1) && (iterator.this_arg[1] & 1)) bwidth = 1; - if ((mcs_have & 0x10) && + if ((mcs_have & 0x10) && (iterator.this_arg[1] & 0x10)) ldpc = 1; if ((mcs_have & 0x20)) - stbc = (iterator.this_arg[1] >> 5) & 3; + stbc = (iterator.this_arg[1] >> 5) & 3; } break; @@ -3995,9 +3995,9 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev) pattrib->ldpc = ldpc; pattrib->stbc = stbc; pattrib->retry_ctrl = (txflags & 0x08)?_FALSE:_TRUE; - pattrib->sw_seq = (txflags & 0x10)?_TRUE:_FALSE; + // pattrib->sw_seq = (txflags & 0x10)?_TRUE:_FALSE; // Adds support for pre-configured SeqNum via RadioTap + - pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; pmlmeext->mgnt_seq = GetSequence(pwlanhdr); diff --git a/hal/rtl8812a/usb/rtl8812au_xmit.c b/hal/rtl8812a/usb/rtl8812au_xmit.c index 68ee1672b..bc5f9414f 100644 --- a/hal/rtl8812a/usb/rtl8812au_xmit.c +++ b/hal/rtl8812a/usb/rtl8812au_xmit.c @@ -112,7 +112,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz , u8 ba /* offset 12 */ - if (!pattrib->qos_en && pattrib->sw_seq == _FALSE) { + if (!pattrib->qos_en) { SET_TX_DESC_HWSEQ_EN_8812(ptxdesc, 1); /* Hw set sequence number */ } else SET_TX_DESC_SEQ_8812(ptxdesc, pattrib->seqnum); diff --git a/hal/rtl8814a/usb/rtl8814au_xmit.c b/hal/rtl8814a/usb/rtl8814au_xmit.c index ac6001440..0f4d3e1ff 100644 --- a/hal/rtl8814a/usb/rtl8814au_xmit.c +++ b/hal/rtl8814a/usb/rtl8814au_xmit.c @@ -118,10 +118,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag if (!pattrib->qos_en) { /* HW sequence, to fix to use 0 queue. todo: 4AC packets to use auto queue select */ - if (pattrib->sw_seq == _FALSE) - SET_TX_DESC_HWSEQ_EN_8814A(ptxdesc, 1); // Hw set sequence number - else - SET_TX_DESC_SEQ_8814A(ptxdesc, pattrib->seqnum); + SET_TX_DESC_HWSEQ_EN_8814A(ptxdesc, 1); // Hw set sequence number SET_TX_DESC_EN_HWEXSEQ_8814A(ptxdesc, 0); SET_TX_DESC_DISQSELSEQ_8814A(ptxdesc, 1); SET_TX_DESC_HW_SSN_SEL_8814A(ptxdesc, 0); diff --git a/include/rtw_xmit.h b/include/rtw_xmit.h index d37233805..6b5ea4302 100644 --- a/include/rtw_xmit.h +++ b/include/rtw_xmit.h @@ -421,7 +421,7 @@ struct pkt_attrib { u8 rate; u8 intel_proxim; u8 retry_ctrl; - u8 sw_seq; + //u8 sw_seq; // Add support for pre-configured SeqNum via RadioTap u8 mbssid; u8 ldpc; u8 stbc; From a8fab80c9f702226ce21d137c512be443663a1aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20M?= Date: Thu, 29 Mar 2018 18:31:20 +0200 Subject: [PATCH 213/234] Added new ASUS PID Support for ASUS 0x1853 RTL8814A --- os_dep/linux/usb_intf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index 6ed4e72ce..47b343509 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -222,6 +222,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x2001, 0x331A), .driver_info = RTL8814A}, /* D-Link - D-Link */ {USB_DEVICE(0x0B05, 0x1817), .driver_info = RTL8814A}, /* ASUS - ASUSTeK */ {USB_DEVICE(0x0B05, 0x1852), .driver_info = RTL8814A}, /* ASUS - ASUSTeK */ + {USB_DEVICE(0x0B05, 0x1853), .driver_info = RTL8814A}, /* ASUS - ASUSTeK */ {USB_DEVICE(0x056E, 0x400B), .driver_info = RTL8814A}, /* ELECOM - ELECOM */ {USB_DEVICE(0x056E, 0x400D), .driver_info = RTL8814A}, /* ELECOM - ELECOM */ {USB_DEVICE(0x7392, 0xA834), .driver_info = RTL8814A}, /* Edimax - Edimax */ From 5a5da0ffe33d41fbce9dfd2adda47bda05ee9fdf Mon Sep 17 00:00:00 2001 From: Christian B Date: Sun, 8 Apr 2018 16:15:46 +0200 Subject: [PATCH 214/234] Add the PPC platform --- Makefile | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Makefile b/Makefile index 27b1791f3..925c12724 100755 --- a/Makefile +++ b/Makefile @@ -152,6 +152,7 @@ CONFIG_PLATFORM_RTK129X = n CONFIG_PLATFORM_NOVATEK_NT72668 = n CONFIG_PLATFORM_HISILICON = n CONFIG_PLATFORM_ARM64 = n +CONFIG_PLATFORM_PPC = n ############################################################### CONFIG_DRVEXT_MODULE = n @@ -1556,6 +1557,17 @@ CROSS_COMPILE := /home/android_sdk/Allwinner/a20/kitkat-a20_v4.4/lichee/out/andr KSRC := /home/android_sdk/Allwinner/a20/kitkat-a20_v4.4/lichee/linux-3.4 endif +ifeq ($(CONFIG_PLATFORM_PPC), y) +EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN +SUBARCH := $(shell uname -m | sed -e s/ppc/powerpc/) +ARCH ?= $(SUBARCH) +CROSS_COMPILE ?= +KVER ?= $(shell uname -r) +KSRC := /lib/modules/$(KVER)/build +MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ +INSTALL_PREFIX := +endif + ifeq ($(CONFIG_PLATFORM_ARM_SUN8I_W3P1), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN8I From db3e2fa1738214037dc8dc2ccf3cc0a930ce1788 Mon Sep 17 00:00:00 2001 From: kimocoder Date: Sun, 6 May 2018 13:49:42 +0200 Subject: [PATCH 215/234] Trying fix for PMF / 802.11w --- README.md | 4 ---- dkms.conf | 2 +- os_dep/linux/ioctl_cfg80211.c | 14 +++++++++++++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 4e7cd941f..1b364c00c 100644 --- a/README.md +++ b/README.md @@ -64,10 +64,6 @@ For setting monitor mode ``` For setting TX power ``` -sudo iwconfig wlan0 txpower 30 -``` -or -``` sudo iw wlan0 set txpower fixed 3000 ``` Newer versions of NetworkManager switches to random MAC address. Some users would prefer to use a fixed address. diff --git a/dkms.conf b/dkms.conf index 3f1f60343..d1fd34218 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.1.5~20180315" +PACKAGE_VERSION="5.1.5~20180506" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 17937e793..15007027f 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -921,7 +921,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) { if (param->u.crypt.idx >= WEP_KEYS #ifdef CONFIG_IEEE80211W - || param->u.crypt.idx >= BIP_MAX_KEYID + && param->u.crypt.idx >= BIP_MAX_KEYID #endif /* CONFIG_IEEE80211W */ ) { ret = -EINVAL; @@ -1628,6 +1628,15 @@ static int cfg80211_rtw_set_default_key(struct wiphy *wiphy, return 0; } + +static int cfg80211_rtw_set_default_mgmt_key(struct wiphy *wiphy, + struct net_device *ndev, u8 key_index +) +{ + RTW_INFO(FUNC_NDEV_FMT " key index: %d\n", FUNC_NDEV_ARG(ndev), key_index); + return 0; +} + #if defined(CONFIG_GTK_OL) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0)) static int cfg80211_rtw_set_rekey_data(struct wiphy *wiphy, struct net_device *ndev, @@ -6558,6 +6567,9 @@ static struct cfg80211_ops rtw_cfg80211_ops = { .get_key = cfg80211_rtw_get_key, .del_key = cfg80211_rtw_del_key, .set_default_key = cfg80211_rtw_set_default_key, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)) + .set_default_mgmt_key = cfg80211_rtw_set_default_mgmt_key, +#endif #if defined(CONFIG_GTK_OL) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0)) .set_rekey_data = cfg80211_rtw_set_rekey_data, #endif /*CONFIG_GTK_OL*/ From a8cd963ea52ff988aa49dafcae259a2d6ff76af3 Mon Sep 17 00:00:00 2001 From: Christian B Date: Fri, 11 May 2018 17:43:13 +0200 Subject: [PATCH 216/234] Update README.md * Added howto for RPI * Added testing / working section --- README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1b364c00c..93c346b83 100644 --- a/README.md +++ b/README.md @@ -37,12 +37,16 @@ Download git clone -b v5.1.5 https://github.com/aircrack-ng/rtl8812au.git cd rtl* ``` -Package / Build dependencies +Package / Build dependencies (Kali) ``` sudo apt-get install build-essential sudo apt-get install bc sudo apt-get install linux-headers-`uname -r` ``` +For Raspberry (RPI) +``` +sudo apt install raspberrypi-kernel-headers +``` For setting monitor mode 1. Fix problematic interference in monitor mode. ``` @@ -77,6 +81,13 @@ at the end of file /etc/NetworkManager/NetworkManager.conf and restart NetworkMa sudo service NetworkManager restart ``` +## Tested / Working +``` +Tested and working on + * Kali Linux + * Raspberry PI +``` + ## LED Parameter ``` We've added the "realtek-leds.conf" in build directory, From d628a7441c6066a2e302104b7f4f99bcd81a111f Mon Sep 17 00:00:00 2001 From: kimocoder Date: Sun, 13 May 2018 22:47:03 +0200 Subject: [PATCH 217/234] Odroid C2 fix + minor cleanup --- Makefile | 4 ++-- dkms.conf | 2 +- os_dep/linux/ioctl_cfg80211.c | 13 +------------ 3 files changed, 4 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 925c12724..57130f07a 100755 --- a/Makefile +++ b/Makefile @@ -1068,7 +1068,7 @@ EXTRA_CFLAGS += -DDM_ODM_SUPPORT_TYPE=0x04 ifeq ($(CONFIG_PLATFORM_I386_PC), y) EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT -SUBARCH := $(shell uname -m | sed -e s/i.86/i386/) +SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ | sed -e s/aarch64/arm64/ ) ARCH ?= $(SUBARCH) CROSS_COMPILE ?= KVER ?= $(shell uname -r) @@ -1814,7 +1814,7 @@ ARCH := arm CROSS_COMPILE := /home/android_sdk/Telechips/v13.05_r1-tcc-android-4.2.2_tcc893x-evm_build/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- KSRC := /home/android_sdk/Telechips/v13.05_r1-tcc-android-4.2.2_tcc893x-evm_build/kernel MODULE_NAME := wlan -endif +endif # ARM64 - odroid-c2 and such ifeq ($(CONFIG_PLATFORM_ARM64), y) diff --git a/dkms.conf b/dkms.conf index d1fd34218..4aa2b8b65 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.1.5~20180506" +PACKAGE_VERSION="5.1.5~20180513" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 15007027f..d19eba776 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -921,7 +921,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) { if (param->u.crypt.idx >= WEP_KEYS #ifdef CONFIG_IEEE80211W - && param->u.crypt.idx >= BIP_MAX_KEYID + || param->u.crypt.idx >= BIP_MAX_KEYID #endif /* CONFIG_IEEE80211W */ ) { ret = -EINVAL; @@ -1629,14 +1629,6 @@ static int cfg80211_rtw_set_default_key(struct wiphy *wiphy, } -static int cfg80211_rtw_set_default_mgmt_key(struct wiphy *wiphy, - struct net_device *ndev, u8 key_index -) -{ - RTW_INFO(FUNC_NDEV_FMT " key index: %d\n", FUNC_NDEV_ARG(ndev), key_index); - return 0; -} - #if defined(CONFIG_GTK_OL) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0)) static int cfg80211_rtw_set_rekey_data(struct wiphy *wiphy, struct net_device *ndev, @@ -6567,9 +6559,6 @@ static struct cfg80211_ops rtw_cfg80211_ops = { .get_key = cfg80211_rtw_get_key, .del_key = cfg80211_rtw_del_key, .set_default_key = cfg80211_rtw_set_default_key, -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)) - .set_default_mgmt_key = cfg80211_rtw_set_default_mgmt_key, -#endif #if defined(CONFIG_GTK_OL) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0)) .set_rekey_data = cfg80211_rtw_set_rekey_data, #endif /*CONFIG_GTK_OL*/ From 0bfda567bb2049b98fa8aa98a79247c43d7742bd Mon Sep 17 00:00:00 2001 From: Christian B Date: Wed, 16 May 2018 22:20:52 +0200 Subject: [PATCH 218/234] Added more VID/PID * Added 2 VID/PID's for more adapters support --- os_dep/linux/usb_intf.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index 47b343509..3c56a44f5 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -151,10 +151,11 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x0E66, 0x0022), .driver_info = RTL8812}, /* HAWKING - Edimax */ {USB_DEVICE(0x0586, 0x3426), .driver_info = RTL8812}, /* ZyXEL - */ {USB_DEVICE(0x2001, 0x3313), .driver_info = RTL8812}, /* D-Link - ALPHA */ - {USB_DEVICE(0x1058, 0x0632), .driver_info = RTL8812}, /* WD - Cybertan*/ + {USB_DEVICE(0x1058, 0x0632), .driver_info = RTL8812}, /* WD - Cybertan */ {USB_DEVICE(0x1740, 0x0100), .driver_info = RTL8812}, /* EnGenius - EnGenius */ {USB_DEVICE(0x2019, 0xAB30), .driver_info = RTL8812}, /* Planex - Abocom */ {USB_DEVICE(0x07B8, 0x8812), .driver_info = RTL8812}, /* Abocom - Abocom */ + {USB_DEVICE(0x0846, 0x9051), .driver_info = RTL8812}, /* Netgear A6200 v2 */ {USB_DEVICE(0x2001, 0x330E), .driver_info = RTL8812}, /* D-Link - ALPHA */ {USB_DEVICE(0x2001, 0x3313), .driver_info = RTL8812}, /* D-Link - ALPHA */ {USB_DEVICE(0x2001, 0x3315), .driver_info = RTL8812}, /* D-Link - Cameo */ @@ -172,6 +173,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x148F, 0x9097), .driver_info = RTL8812}, /* Amped Wireless ACA1 */ {USB_DEVICE(0x0BDA, 0x8812), .driver_info = RTL8812}, /* Alfa - AWUS036AC, AWUS036ACH & AWUS036EAC */ {USB_DEVICE(0x2604, 0x0012), .driver_info = RTL8812}, /* Tenda U12 */ + {USB_DEVICE(0x0BDA, 0x881A), .driver_info = RTL8812}, /* Unex DAUK-W8812 */ #endif #ifdef CONFIG_RTL8821A @@ -179,7 +181,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0811), .driver_info = RTL8821}, /* Default ID */ {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0821), .driver_info = RTL8821}, /* Default ID */ {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8822), .driver_info = RTL8821}, /* Default ID */ - {USB_DEVICE(USB_VENDER_ID_REALTEK, 0xA811) , .driver_info = RTL8821},/* Default ID */ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0xA811), .driver_info = RTL8821}, /* Default ID */ {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDER_ID_REALTEK, 0x0820, 0xff, 0xff, 0xff), .driver_info = RTL8821}, /* 8821AU */ {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDER_ID_REALTEK, 0x0823, 0xff, 0xff, 0xff), .driver_info = RTL8821}, /* 8821AU */ /*=== Customer ID ===*/ From d1c5553fdb7cfbd7d2cd17077b3cc7e386729155 Mon Sep 17 00:00:00 2001 From: Christian B Date: Tue, 5 Jun 2018 19:54:32 +0200 Subject: [PATCH 219/234] Added more VID/PID * Added 1 more VID/PID --- os_dep/linux/usb_intf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index 3c56a44f5..a2e8c1a01 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -174,6 +174,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x0BDA, 0x8812), .driver_info = RTL8812}, /* Alfa - AWUS036AC, AWUS036ACH & AWUS036EAC */ {USB_DEVICE(0x2604, 0x0012), .driver_info = RTL8812}, /* Tenda U12 */ {USB_DEVICE(0x0BDA, 0x881A), .driver_info = RTL8812}, /* Unex DAUK-W8812 */ + {USB_DEVICE(0x0BDA, 0xB812), .driver_info = RTL8812}, /* Kodi AC1200 */ #endif #ifdef CONFIG_RTL8821A From b2273e710fc196c4f7184118ea315afaafe1672d Mon Sep 17 00:00:00 2001 From: Christian B Date: Tue, 5 Jun 2018 22:12:06 +0200 Subject: [PATCH 220/234] Trying to minimize freeze / lags (test) * Altered the SURVEY_TO from 100 (ms) to 0 (ms) to minimize --- include/rtw_mlme_ext.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/rtw_mlme_ext.h b/include/rtw_mlme_ext.h index 0ef5f8c66..a7bc112c2 100644 --- a/include/rtw_mlme_ext.h +++ b/include/rtw_mlme_ext.h @@ -27,7 +27,7 @@ * So, this driver tried to extend the dwell time for each scanning channel. * This will increase the chance to receive the probe response from SoftAP. */ -#define SURVEY_TO (100) +#define SURVEY_TO (0) #define REAUTH_TO (300) /* (50) */ #define REASSOC_TO (300) /* (50) */ /* #define DISCONNECT_TO (3000) */ From e4ec9397564e92415d39c95ffe457511d96ad48f Mon Sep 17 00:00:00 2001 From: kimocoder Date: Thu, 7 Jun 2018 12:20:26 +0200 Subject: [PATCH 221/234] Bring back regdomain settings with a switch --- Makefile | 7 + include/rtw_wifi_regd.h | 15 +- os_dep/linux/wifi_regd.c | 507 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 526 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 57130f07a..7f18e2329 100755 --- a/Makefile +++ b/Makefile @@ -75,6 +75,9 @@ CONFIG_REDUCE_TX_CPU_LOADING = n CONFIG_BR_EXT = y CONFIG_TDLS = n CONFIG_WIFI_MONITOR = y +# Choose y below to disable the code in os_dep/linux/ wifi_regd.c +# most likely needed when using hostapd in 802.11ac mode +CONFIG_DISABLE_REGD_C = y CONFIG_MCC_MODE = n CONFIG_APPEND_VENDOR_IE_ENABLE = n CONFIG_USB2_EXTERNAL_POWER = n @@ -160,6 +163,10 @@ CONFIG_DRVEXT_MODULE = n export TopDIR ?= $(shell pwd) ########### COMMON ################################# +ifeq ($(CONFIG_DISABLE_REGD_C), y) +EXTRA_CFLAGS += -DCONFIG_DISABLE_REGD_C +endif + ifeq ($(CONFIG_GSPI_HCI), y) HCI_NAME = gspi endif diff --git a/include/rtw_wifi_regd.h b/include/rtw_wifi_regd.h index 7acbb9527..696ee9215 100644 --- a/include/rtw_wifi_regd.h +++ b/include/rtw_wifi_regd.h @@ -5,7 +5,19 @@ *****************************************************************************/ #ifndef __RTW_WIFI_REGD_H__ -#define __RTW_WIFI_REGD_H__ +#define __RTW_WIFI_REGD_H__ + +struct country_code_to_enum_rd { + u16 countrycode; + const char *iso_name; +}; + +enum country_code_type_t { + COUNTRY_CODE_USER = 0, + + /*add new channel plan above this line */ + COUNTRY_CODE_MAX +}; int rtw_regd_init(_adapter *padapter); void rtw_reg_notify_by_driver(_adapter *adapter); @@ -18,3 +30,4 @@ void rtw_reg_notify_by_driver(_adapter *adapter); #endif #endif /* __RTW_WIFI_REGD_H__ */ + diff --git a/os_dep/linux/wifi_regd.c b/os_dep/linux/wifi_regd.c index b0a4abd80..a967b8c49 100644 --- a/os_dep/linux/wifi_regd.c +++ b/os_dep/linux/wifi_regd.c @@ -10,13 +10,516 @@ #include -void rtw_reg_notify_by_driver(_adapter *adapter) +static struct country_code_to_enum_rd allCountries[] = { + {COUNTRY_CODE_USER, "RD"}, +}; + +/* + * REG_RULE(freq start, freq end, bandwidth, max gain, eirp, reg_flags) + */ + +/* + *Only these channels all allow active + *scan on all world regulatory domains + */ + +/* 2G chan 01 - chan 11 */ +#define RTW_2GHZ_CH01_11 \ + REG_RULE(2412-10, 2462+10, 40, 0, 20, 0) + +/* + *We enable active scan on these a case + *by case basis by regulatory domain + */ + +/* 2G chan 12 - chan 13, PASSIV SCAN */ +#define RTW_2GHZ_CH12_13 \ + REG_RULE(2467-10, 2472+10, 40, 0, 20, \ + NL80211_RRF_PASSIVE_SCAN) + +/* 2G chan 14, PASSIVS SCAN, NO OFDM (B only) */ +#define RTW_2GHZ_CH14 \ + REG_RULE(2484-10, 2484+10, 40, 0, 20, \ + NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_OFDM) + +/* 5G chan 36 - chan 64 */ +#define RTW_5GHZ_5150_5350 \ + REG_RULE(5150-10, 5350+10, 80, 0, 30, \ + NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) + +/* 5G chan 100 - chan 165 */ +#define RTW_5GHZ_5470_5850 \ + REG_RULE(5470-10, 5850+10, 80, 0, 30, \ + NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) + +/* 5G chan 149 - chan 165 */ +#define RTW_5GHZ_5725_5850 \ + REG_RULE(5725-10, 5850+10, 80, 0, 30, \ + NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) + +/* 5G chan 36 - chan 165 */ +#define RTW_5GHZ_5150_5850 \ + REG_RULE(5150-10, 5850+10, 80, 0, 30, \ + NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS) + +static const struct ieee80211_regdomain rtw_regdom_rd = { + .n_reg_rules = 4, + .alpha2 = "99", + .reg_rules = { + RTW_2GHZ_CH01_11, + RTW_2GHZ_CH12_13, + RTW_2GHZ_CH14, + RTW_5GHZ_5150_5850, + } +}; +#if 0 +static const struct ieee80211_regdomain rtw_regdom_11 = { + .n_reg_rules = 1, + .alpha2 = "99", + .reg_rules = { + RTW_2GHZ_CH01_11, + } +}; + +static const struct ieee80211_regdomain rtw_regdom_12_13 = { + .n_reg_rules = 2, + .alpha2 = "99", + .reg_rules = { + RTW_2GHZ_CH01_11, + RTW_2GHZ_CH12_13, + } +}; + +static const struct ieee80211_regdomain rtw_regdom_no_midband = { + .n_reg_rules = 3, + .alpha2 = "99", + .reg_rules = { + RTW_2GHZ_CH01_11, + RTW_5GHZ_5150_5350, + RTW_5GHZ_5725_5850, + } +}; + +static const struct ieee80211_regdomain rtw_regdom_60_64 = { + .n_reg_rules = 3, + .alpha2 = "99", + .reg_rules = { + RTW_2GHZ_CH01_11, + RTW_2GHZ_CH12_13, + RTW_5GHZ_5725_5850, + } +}; + +static const struct ieee80211_regdomain rtw_regdom_14_60_64 = { + .n_reg_rules = 4, + .alpha2 = "99", + .reg_rules = { + RTW_2GHZ_CH01_11, + RTW_2GHZ_CH12_13, + RTW_2GHZ_CH14, + RTW_5GHZ_5725_5850, + } +}; + +static const struct ieee80211_regdomain rtw_regdom_14 = { + .n_reg_rules = 3, + .alpha2 = "99", + .reg_rules = { + RTW_2GHZ_CH01_11, + RTW_2GHZ_CH12_13, + RTW_2GHZ_CH14, + } +}; +#endif +#if 0 +static struct rtw_regulatory *rtw_regd; +#endif + +static bool _rtw_is_radar_freq(u16 center_freq) +{ + return (center_freq >= 5260 && center_freq <= 5700); +} + +#if 0 // not_yet +static void _rtw_reg_apply_beaconing_flags(struct wiphy *wiphy, + enum nl80211_reg_initiator initiator) +{ + enum ieee80211_band band; + struct ieee80211_supported_band *sband; + const struct ieee80211_reg_rule *reg_rule; + struct ieee80211_channel *ch; + unsigned int i; + u32 bandwidth = 0; + int r; + + for (band = 0; band < IEEE80211_NUM_BANDS; band++) { + + if (!wiphy->bands[band]) + continue; + + sband = wiphy->bands[band]; + + for (i = 0; i < sband->n_channels; i++) { + ch = &sband->channels[i]; + if (_rtw_is_radar_freq(ch->center_freq) || + (ch->flags & IEEE80211_CHAN_RADAR)) + continue; + if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) { + r = freq_reg_info(wiphy, ch->center_freq, + bandwidth, ®_rule); + if (r) + continue; + + /* + *If 11d had a rule for this channel ensure + *we enable adhoc/beaconing if it allows us to + *use it. Note that we would have disabled it + *by applying our static world regdomain by + *default during init, prior to calling our + *regulatory_hint(). + */ + + if (!(reg_rule->flags & NL80211_RRF_NO_IBSS)) + ch->flags &= ~IEEE80211_CHAN_NO_IBSS; + if (! + (reg_rule->flags & + NL80211_RRF_PASSIVE_SCAN)) + ch->flags &= + ~IEEE80211_CHAN_PASSIVE_SCAN; + } else { + if (ch->beacon_found) + ch->flags &= ~(IEEE80211_CHAN_NO_IBSS | + IEEE80211_CHAN_PASSIVE_SCAN); + } + } + } +} + +/* Allows active scan scan on Ch 12 and 13 */ +static void _rtw_reg_apply_active_scan_flags(struct wiphy *wiphy, + enum nl80211_reg_initiator + initiator) +{ + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + const struct ieee80211_reg_rule *reg_rule; + u32 bandwidth = 0; + int r; + + if (!wiphy->bands[IEEE80211_BAND_2GHZ]) + return; + sband = wiphy->bands[IEEE80211_BAND_2GHZ]; + + /* + * If no country IE has been received always enable active scan + * on these channels. This is only done for specific regulatory SKUs + */ + if (initiator != NL80211_REGDOM_SET_BY_COUNTRY_IE) { + ch = &sband->channels[11]; /* CH 12 */ + if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) + ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; + ch = &sband->channels[12]; /* CH 13 */ + if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) + ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; + return; + } + + /* + * If a country IE has been received check its rule for this + * channel first before enabling active scan. The passive scan + * would have been enforced by the initial processing of our + * custom regulatory domain. + */ + + ch = &sband->channels[11]; /* CH 12 */ + r = freq_reg_info(wiphy, ch->center_freq, bandwidth, ®_rule); + if (!r) { + if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN)) + if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) + ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; + } + + ch = &sband->channels[12]; /* CH 13 */ + r = freq_reg_info(wiphy, ch->center_freq, bandwidth, ®_rule); + if (!r) { + if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN)) + if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) + ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; + } +} +#endif + +/* + * Always apply Radar/DFS rules on + * freq range 5260 MHz - 5700 MHz + */ +static void _rtw_reg_apply_radar_flags(struct wiphy *wiphy) +{ + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + unsigned int i; + + if (!wiphy->bands[IEEE80211_BAND_5GHZ]) + return; + + sband = wiphy->bands[IEEE80211_BAND_5GHZ]; + + for (i = 0; i < sband->n_channels; i++) { + ch = &sband->channels[i]; + if (!_rtw_is_radar_freq(ch->center_freq)) + continue; +#ifdef CONFIG_DFS + #if defined(CONFIG_DFS_MASTER) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) + if (!(ch->flags & IEEE80211_CHAN_DISABLED)) { + ch->flags |= IEEE80211_CHAN_RADAR; + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)) + ch->flags |= (IEEE80211_CHAN_NO_IBSS|IEEE80211_CHAN_PASSIVE_SCAN); + #else + ch->flags |= IEEE80211_CHAN_NO_IR; + #endif + } + #endif +#endif //CONFIG_DFS + +#if 0 + /* + * We always enable radar detection/DFS on this + * frequency range. Additionally we also apply on + * this frequency range: + * - If STA mode does not yet have DFS supports disable + * active scanning + * - If adhoc mode does not support DFS yet then disable + * adhoc in the frequency. + * - If AP mode does not yet support radar detection/DFS + * do not allow AP mode + */ + if (!(ch->flags & IEEE80211_CHAN_DISABLED)) + ch->flags |= IEEE80211_CHAN_RADAR | + IEEE80211_CHAN_NO_IBSS | + IEEE80211_CHAN_PASSIVE_SCAN; +#endif + } +} + +static void _rtw_reg_apply_flags(struct wiphy *wiphy) +{ +#if 1 // by channel plan + _adapter *padapter = wiphy_to_adapter(wiphy); + + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + unsigned int i, j; + u16 channel; + + // all channels disable + for (i = 0; i < IEEE80211_NUM_BANDS; i++) { + sband = wiphy->bands[i]; + + if (sband) { + for (j = 0; j < sband->n_channels; j++) { + ch = &sband->channels[j]; + + if (ch) + ch->flags &= ~(IEEE80211_CHAN_DISABLED|IEEE80211_CHAN_NO_HT40PLUS| + IEEE80211_CHAN_NO_HT40MINUS|IEEE80211_CHAN_NO_80MHZ| + IEEE80211_CHAN_NO_160MHZ); + } + } + } + +#else + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + unsigned int i, j; + u16 channels[37] = + { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, + 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, + 149, 153, + 157, 161, 165 + }; + u16 channel; + u32 freq; + + for (i = 0; i < IEEE80211_NUM_BANDS; i++) { + sband = wiphy->bands[i]; + + if (sband) + for (j = 0; j < sband->n_channels; j++) { + ch = &sband->channels[j]; + + if (ch) + ch->flags = IEEE80211_CHAN_DISABLED; + } + } + + for (i = 0; i < 37; i++) { + channel = channels[i]; + freq = rtw_ch2freq(channel); + + ch = ieee80211_get_channel(wiphy, freq); + if (ch) { + if (channel <= 11) + ch->flags = 0; + else + ch->flags = 0; //IEEE80211_CHAN_PASSIVE_SCAN; + } + //printk("%s: freq %d(%d) flag 0x%02X \n", __func__, freq, channel, ch->flags); + } +#endif +} + +static void _rtw_reg_apply_world_flags(struct wiphy *wiphy, + enum nl80211_reg_initiator initiator, + struct rtw_regulatory *reg) { + //_rtw_reg_apply_beaconing_flags(wiphy, initiator); + //_rtw_reg_apply_active_scan_flags(wiphy, initiator); return; } +static int _rtw_reg_notifier_apply(struct wiphy *wiphy, + struct regulatory_request *request, + struct rtw_regulatory *reg) +{ + + /* Hard code flags */ + _rtw_reg_apply_flags(wiphy); + + /* We always apply this */ + _rtw_reg_apply_radar_flags(wiphy); + + switch (request->initiator) { + case NL80211_REGDOM_SET_BY_DRIVER: + RTW_DBG("%s: %s\n", __func__, "NL80211_REGDOM_SET_BY_DRIVER"); + _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, + reg); + break; + case NL80211_REGDOM_SET_BY_CORE: + RTW_DBG("%s: %s\n", __func__, + "NL80211_REGDOM_SET_BY_CORE to DRV"); + _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, + reg); + break; + case NL80211_REGDOM_SET_BY_USER: + RTW_DBG("%s: %s\n", __func__, + "NL80211_REGDOM_SET_BY_USER to DRV"); + _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, + reg); + break; + case NL80211_REGDOM_SET_BY_COUNTRY_IE: + RTW_DBG("%s: %s\n", __func__, + "NL80211_REGDOM_SET_BY_COUNTRY_IE"); + _rtw_reg_apply_world_flags(wiphy, request->initiator, reg); + break; + } + + return 0; +} + +static const struct ieee80211_regdomain *_rtw_regdomain_select(struct + rtw_regulatory + *reg) +{ +#if 0 + switch (reg->country_code) { + case COUNTRY_CODE_USER: + default: + return &rtw_regdom_rd; + } +#else + return &rtw_regdom_rd; +#endif +} + +void _rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) +{ + struct rtw_regulatory *reg = NULL; + + RTW_DBG("%s\n", __func__); + + _rtw_reg_notifier_apply(wiphy, request, reg); +} + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)) +int rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) +#else +void rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) +#endif +{ + _rtw_reg_notifier(wiphy, request); + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)) + return 0; + #endif +} + +void rtw_reg_notify_by_driver(_adapter *adapter) +{ + if ((adapter->rtw_wdev != NULL) && (adapter->rtw_wdev->wiphy)) { + struct regulatory_request request; + request.initiator = NL80211_REGDOM_SET_BY_DRIVER; + rtw_reg_notifier(adapter->rtw_wdev->wiphy, &request); + } +} + +static void _rtw_regd_init_wiphy(struct rtw_regulatory *reg, struct wiphy *wiphy) +{ + const struct ieee80211_regdomain *regd; + + wiphy->reg_notifier = rtw_reg_notifier; + + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)) + wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY; + wiphy->flags &= ~WIPHY_FLAG_STRICT_REGULATORY; + wiphy->flags &= ~WIPHY_FLAG_DISABLE_BEACON_HINTS; + #else + wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG; + wiphy->regulatory_flags &= ~REGULATORY_STRICT_REG; + wiphy->regulatory_flags &= ~REGULATORY_DISABLE_BEACON_HINTS; + #endif + + regd = _rtw_regdomain_select(reg); + wiphy_apply_custom_regulatory(wiphy, regd); + + /* Hard code flags */ + _rtw_reg_apply_flags(wiphy); + _rtw_reg_apply_radar_flags(wiphy); + _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, reg); +} + +static struct country_code_to_enum_rd *_rtw_regd_find_country(u16 countrycode) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(allCountries); i++) { + if (allCountries[i].countrycode == countrycode) + return &allCountries[i]; + } + return NULL; +} + int rtw_regd_init(_adapter * padapter) { +#ifndef CONFIG_DISABLE_REGD_C + struct wiphy *wiphy = padapter->rtw_wdev->wiphy; + +#if 0 + if (rtw_regd == NULL) { + rtw_regd = (struct rtw_regulatory *) + rtw_malloc(sizeof(struct rtw_regulatory)); + + rtw_regd->alpha2[0] = '9'; + rtw_regd->alpha2[1] = '9'; + + rtw_regd->country_code = COUNTRY_CODE_USER; + } + + DBG_8192C("%s: Country alpha2 being used: %c%c\n", + __func__, rtw_regd->alpha2[0], rtw_regd->alpha2[1]); +#endif + + _rtw_regd_init_wiphy(NULL, wiphy); + +#endif return 0; } -#endif //CONFIG_IOCTL_CFG80211 +#endif //CONFIG_IOCTL_CFG80211 \ No newline at end of file From e2ed84fe68def64446a34bd1a043430a79dad99b Mon Sep 17 00:00:00 2001 From: kimocoder Date: Thu, 7 Jun 2018 12:25:06 +0200 Subject: [PATCH 222/234] Fixes more freeze/delays (test) --- core/rtw_cmd.c | 4 ++-- dkms.conf | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/rtw_cmd.c b/core/rtw_cmd.c index 2ee0b517a..b792a7139 100644 --- a/core/rtw_cmd.c +++ b/core/rtw_cmd.c @@ -2256,8 +2256,8 @@ u8 traffic_status_watchdog(_adapter *padapter, u8 from_timer) } else #endif /* CONFIG_BT_COEXIST */ { - BusyThresholdHigh = 100; - BusyThresholdLow = 75; + BusyThresholdHigh = 25; + BusyThresholdLow = 15; } BusyThreshold = BusyThresholdHigh; diff --git a/dkms.conf b/dkms.conf index 4aa2b8b65..69d6885b3 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.1.5~20180513" +PACKAGE_VERSION="5.1.5~20180607" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" From 78f2dd43c455da16b4450e731b933d299eb82b45 Mon Sep 17 00:00:00 2001 From: kimocoder Date: Thu, 7 Jun 2018 14:38:27 +0200 Subject: [PATCH 223/234] Update for >= 4.0.0 --- os_dep/linux/rtw_android.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/os_dep/linux/rtw_android.c b/os_dep/linux/rtw_android.c index 9066990d3..3831b88e5 100644 --- a/os_dep/linux/rtw_android.c +++ b/os_dep/linux/rtw_android.c @@ -357,10 +357,14 @@ int rtw_android_cmdstr_to_num(char *cmdstr) { int cmd_num; for (cmd_num = 0 ; cmd_num < ANDROID_WIFI_CMD_MAX; cmd_num++) - if (0 == strnicmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num]))) - break; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) + if(0 == strncasecmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num])) ) +#else + if(0 == strnicmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num])) ) +#endif + break; - return cmd_num; + return cmd_num; } int rtw_android_get_rssi(struct net_device *net, char *command, int total_len) From a3805aa509615d254ed8ff85a06733bb36e1a54a Mon Sep 17 00:00:00 2001 From: kimocoder Date: Fri, 8 Jun 2018 10:05:06 +0200 Subject: [PATCH 224/234] Removed non-supported device --- dkms.conf | 2 +- os_dep/linux/usb_intf.c | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/dkms.conf b/dkms.conf index 69d6885b3..6b31f8073 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.1.5~20180607" +PACKAGE_VERSION="5.1.5~20180608" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index a2e8c1a01..3c56a44f5 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -174,7 +174,6 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x0BDA, 0x8812), .driver_info = RTL8812}, /* Alfa - AWUS036AC, AWUS036ACH & AWUS036EAC */ {USB_DEVICE(0x2604, 0x0012), .driver_info = RTL8812}, /* Tenda U12 */ {USB_DEVICE(0x0BDA, 0x881A), .driver_info = RTL8812}, /* Unex DAUK-W8812 */ - {USB_DEVICE(0x0BDA, 0xB812), .driver_info = RTL8812}, /* Kodi AC1200 */ #endif #ifdef CONFIG_RTL8821A From c5958798301f44d5f3b491daba370dcd0fa9a085 Mon Sep 17 00:00:00 2001 From: aes512 Date: Mon, 25 Jun 2018 20:42:02 -0700 Subject: [PATCH 225/234] Add RTL8814A driver support for Hawking HW17ACU 1750AC USB --- os_dep/linux/usb_intf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index 3c56a44f5..e128e868b 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -234,6 +234,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x20F4, 0x809A), .driver_info = RTL8814A}, /* TRENDnet - TRENDnet */ {USB_DEVICE(0x20F4, 0x809B), .driver_info = RTL8814A}, /* TRENDnet TEW-809UB */ {USB_DEVICE(0x0846, 0x9054), .driver_info = RTL8814A}, /* Netgear A7000 */ + {USB_DEVICE(0x0E66, 0x0026), .driver_info = RTL8814A}, /* Hawking HW17ACU 1750AC */ #endif /* CONFIG_RTL8814A */ #ifdef CONFIG_RTL8188F From 4892674f208c90a2538fe6286040b2df092476b1 Mon Sep 17 00:00:00 2001 From: Christian B Date: Thu, 13 Sep 2018 05:09:02 +0200 Subject: [PATCH 226/234] Disabled multi-threading --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7f18e2329..c3057cd99 100755 --- a/Makefile +++ b/Makefile @@ -1915,7 +1915,7 @@ export CONFIG_RTL8812AU = m all: modules modules: - $(MAKE) -j $(shell nproc || echo 1) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd) modules + $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd) modules strip: $(CROSS_COMPILE)strip $(MODULE_NAME).ko --strip-unneeded From 94f9256ce72b0d79ca23750eb1ca657675a35664 Mon Sep 17 00:00:00 2001 From: Christian B Date: Fri, 14 Sep 2018 20:59:27 +0200 Subject: [PATCH 227/234] Disabled multi-threading * Disabled multi-threading --- dkms.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dkms.conf b/dkms.conf index 6b31f8073..83c28769d 100644 --- a/dkms.conf +++ b/dkms.conf @@ -3,7 +3,7 @@ PACKAGE_VERSION="5.1.5~20180608" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" -MAKE[0]="'make' -j$PROCS_NUM KVER=${kernelver} && 'make' -j$PROCS_NUM RTL8814=1 KVER=${kernelver}" +MAKE[0]="'make' KVER=${kernelver} && 'make' TL8814=1 KVER=${kernelver}" BUILT_MODULE_NAME[1]=8814au DEST_MODULE_LOCATION[1]="/updates" AUTOINSTALL="yes" From 25444d30319886f6367f7c3514fea363f96db8be Mon Sep 17 00:00:00 2001 From: Louie Lu Date: Wed, 19 Sep 2018 14:14:47 +0800 Subject: [PATCH 228/234] Fix typo Fix typo that introduce by 94f9256 --- dkms.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dkms.conf b/dkms.conf index 83c28769d..e23ac1ed5 100644 --- a/dkms.conf +++ b/dkms.conf @@ -3,7 +3,7 @@ PACKAGE_VERSION="5.1.5~20180608" CLEAN="make clean" BUILT_MODULE_NAME[0]=8812au DEST_MODULE_LOCATION[0]="/updates" -MAKE[0]="'make' KVER=${kernelver} && 'make' TL8814=1 KVER=${kernelver}" +MAKE[0]="'make' KVER=${kernelver} && 'make' RTL8814=1 KVER=${kernelver}" BUILT_MODULE_NAME[1]=8814au DEST_MODULE_LOCATION[1]="/updates" AUTOINSTALL="yes" From 47fbd5a273f417c9975cf382484e1ce75e2c43b2 Mon Sep 17 00:00:00 2001 From: Kamil Lorenc Date: Sun, 26 May 2019 16:21:13 +0200 Subject: [PATCH 229/234] Update defines for A-MPDU Define values for maximum buffer size changed in kernel. Update them --- include/wifi.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/wifi.h b/include/wifi.h index 091cd4fbf..040a310cc 100644 --- a/include/wifi.h +++ b/include/wifi.h @@ -1038,7 +1038,8 @@ typedef enum _HT_CAP_AMPDU_DENSITY { * According to IEEE802.11n spec size varies from 8K to 64K (in powers of 2) */ #define IEEE80211_MIN_AMPDU_BUF 0x8 -#define IEEE80211_MAX_AMPDU_BUF 0x40 +#define IEEE80211_MAX_AMPDU_BUF_HT 0x40 +#define IEEE80211_MAX_AMPDU_BUF 0x100 /* Spatial Multiplexing Power Save Modes */ From fdf5acc152c853adb0e8dabbee8a9976f4601c15 Mon Sep 17 00:00:00 2001 From: Kamil Lorenc Date: Sun, 26 May 2019 16:21:44 +0200 Subject: [PATCH 230/234] Replace get_ds with KERNEL_DS get_ds was removed from kernel in version 5.1.0, because it always expanded to KERNEL_DS. It is safe to replace it with KERNEL_DS from at least version 2.6.11 --- os_dep/osdep_service.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/os_dep/osdep_service.c b/os_dep/osdep_service.c index 88a3ff546..0bfb93a38 100644 --- a/os_dep/osdep_service.c +++ b/os_dep/osdep_service.c @@ -1961,7 +1961,7 @@ static int isFileReadable(char *path) ret = PTR_ERR(fp); else { oldfs = get_fs(); - set_fs(get_ds()); + set_fs(KERNEL_DS); if (1 != readFile(fp, &buf, 1)) ret = PTR_ERR(fp); @@ -1991,7 +1991,7 @@ static int retriveFromFile(char *path, u8 *buf, u32 sz) RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp); oldfs = get_fs(); - set_fs(get_ds()); + set_fs(KERNEL_DS); ret = readFile(fp, buf, sz); set_fs(oldfs); closeFile(fp); @@ -2026,7 +2026,7 @@ static int storeToFile(char *path, u8 *buf, u32 sz) RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp); oldfs = get_fs(); - set_fs(get_ds()); + set_fs(KERNEL_DS); ret = writeFile(fp, buf, sz); set_fs(oldfs); closeFile(fp); From 7d1c32cd06c152d31e531784e6fb1d4efedd7863 Mon Sep 17 00:00:00 2001 From: Hansruedi Patzen Date: Wed, 15 May 2019 14:25:00 +0200 Subject: [PATCH 231/234] linux-5.2: disable fallback from rtw_select_queue The fallback parameter has been removed in the latest kernel (>= 5.2) See: https://github.com/torvalds/linux/commit/a350eccee5830d9a1f29e393a88dc05a15326d44 --- os_dep/linux/os_intfs.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c index 09c54e5fa..5f6f8e972 100644 --- a/os_dep/linux/os_intfs.c +++ b/os_dep/linux/os_intfs.c @@ -1058,11 +1058,14 @@ unsigned int rtw_classify8021d(struct sk_buff *skb) return dscp >> 5; } - static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0) + #if (LINUX_VERSION_CODE < KERNEL_VERSION(4,19,0)) , void *accel_priv - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) + #else + , struct net_device *sb_dev + #endif + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)) , select_queue_fallback_t fallback #endif #endif From ae733769eacba7ba1576d020811f117187ca6fdc Mon Sep 17 00:00:00 2001 From: Kamil Lorenc Date: Sun, 26 May 2019 16:21:29 +0200 Subject: [PATCH 232/234] Replace get_monotonic_boottime This function is deprecated as of kernel 4.20. It is replaced straight away with ktime_get_boottime_ts64 --- os_dep/linux/ioctl_cfg80211.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index d19eba776..4540822f3 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -342,7 +342,11 @@ static const struct ieee80211_txrx_stypes static u64 rtw_get_systime_us(void) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)) + struct timespec64 ts; + ktime_get_boottime_ts64(&ts); + return ((u64)ts.tv_sec * 1000000) + ts.tv_nsec / 1000; +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)) struct timespec ts; get_monotonic_boottime(&ts); return ((u64)ts.tv_sec * 1000000) + ts.tv_nsec / 1000; From 903d725f9f8dde5b547d087ce3fe0e09351514b9 Mon Sep 17 00:00:00 2001 From: Kamil Lorenc Date: Sun, 26 May 2019 17:19:12 +0200 Subject: [PATCH 233/234] Do not specify type in access_ok In kernels starting from 5.0.0 it is not possible to specify desired access type --- os_dep/linux/rtw_android.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/os_dep/linux/rtw_android.c b/os_dep/linux/rtw_android.c index 3831b88e5..d17233df5 100644 --- a/os_dep/linux/rtw_android.c +++ b/os_dep/linux/rtw_android.c @@ -630,7 +630,11 @@ int rtw_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) goto exit; } + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)) + if (!access_ok(priv_cmd.buf, priv_cmd.total_len)) { + #else if (!access_ok(VERIFY_READ, priv_cmd.buf, priv_cmd.total_len)) { + #endif RTW_INFO("%s: failed to access memory\n", __FUNCTION__); ret = -EFAULT; goto exit; From 033cd0a42bb5f3bd7bdf8990af96b833cc88ac32 Mon Sep 17 00:00:00 2001 From: PaddyPooskie <34067428+PaddyPooskie@users.noreply.github.com> Date: Fri, 29 Nov 2019 15:20:01 -0500 Subject: [PATCH 234/234] Update usb_intf.c --- os_dep/linux/usb_intf.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index e128e868b..732cc56e0 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -174,6 +174,8 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x0BDA, 0x8812), .driver_info = RTL8812}, /* Alfa - AWUS036AC, AWUS036ACH & AWUS036EAC */ {USB_DEVICE(0x2604, 0x0012), .driver_info = RTL8812}, /* Tenda U12 */ {USB_DEVICE(0x0BDA, 0x881A), .driver_info = RTL8812}, /* Unex DAUK-W8812 */ + {USB_DEVICE(0x0BDA, 0xb812), .driver_info = RTL8812}, /* Unsure... */ + #endif #ifdef CONFIG_RTL8821A