wifi is okay

This commit is contained in:
Bingpeng_Lao
2024-03-22 09:38:47 +03:00
committed by Han Gao
parent 43759394d6
commit 5fae7c4a41
305 changed files with 109017 additions and 62046 deletions

View File

@@ -76,7 +76,7 @@
{0x005A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1},/*Enable HSISR GPIO9 interrupt*/\
{0x007A, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x3A},/*0x7A = 0x3A start BT*/\
{0x002E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF , 0x82 },/* 0x2C[23:12]=0x820 ; XTAL trim */ \
{0x0010, PWR_CUT_A_MSK , PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6 , BIT6 },/* 0x10[6]=1 ; MP<EFBFBD>s<EFBFBD>W<EFBFBD><EFBFBD><EFBFBD>0x2C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x10[6]<5D>]<5D><>1<EFBFBD>~<7E><><EFBFBD><EFBFBD>WLAN<41><4E><EFBFBD><EFBFBD> */ \
{0x0010, PWR_CUT_A_MSK , PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6 , BIT6 },/* 0x10[6]=1 ; MP新增對於0x2C的控制權須把0x10[6]設為1才能讓WLAN控制 */ \
#define RTL8821A_TRANS_ACT_TO_CARDEMU \

View File

@@ -42,6 +42,7 @@ typedef enum tag_HAL_IC_Type_Definition {
CHIP_8822C = 19,
CHIP_8814B = 20,
CHIP_8723F = 21,
CHIP_8822E = 22,
} HAL_IC_TYPE_E;
/* HAL_CHIP_TYPE_E */
@@ -132,6 +133,7 @@ typedef struct tag_HAL_VERSION {
#define IS_8822C_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8822C) ? TRUE : FALSE)
#define IS_8814B_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8814B) ? TRUE : FALSE)
#define IS_8723F_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8723F) ? TRUE : FALSE)
#define IS_8822E_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8822E) ? TRUE : FALSE)
#define IS_8192F_SERIES(version)\
((GET_CVID_IC_TYPE(version) == CHIP_8192F) ? TRUE : FALSE)

View File

@@ -160,10 +160,9 @@
#endif
/*#define CONFIG_FILE_FWIMG*/
#define CONFIG_LONG_DELAY_ISSUE
/*#define CONFIG_PATCH_JOIN_WRONG_CHANNEL*/
#ifdef CONFIG_RTW_NAPI
#define CONFIG_RTW_NAPI_DYNAMIC
/*#define CONFIG_RTW_NAPI_DYNAMIC*/
#define CONFIG_RTW_NAPI_V2
#endif
@@ -200,8 +199,11 @@
#ifdef CONFIG_POWER_SAVING
#define CONFIG_IPS
#define CONFIG_LPS
#ifdef CONFIG_IPS
/* #define CONFIG_FWLPS_IN_IPS */
#endif /* CONFIG_IPS */
#define CONFIG_LPS
#if defined(CONFIG_LPS) && (defined(CONFIG_GSPI_HCI) || defined(CONFIG_SDIO_HCI))
#define CONFIG_LPS_LCLK
#endif

View File

@@ -50,25 +50,27 @@
#if defined(CONFIG_MCC_MODE) && (!defined(CONFIG_CONCURRENT_MODE))
#error "Enable CONCURRENT_MODE before enable MCC MODE\n"
// #error "Enable CONCURRENT_MODE before enable MCC MODE\n"
#endif
#if 0
#if defined(CONFIG_MCC_MODE) && defined(CONFIG_BT_COEXIST)
#error "Disable BT COEXIST before enable MCC MODE\n"
// #error "Disable BT COEXIST before enable MCC MODE\n"
#endif
#endif
#if defined(CONFIG_MCC_MODE) && defined(CONFIG_TDLS)
#error "Disable TDLS before enable MCC MODE\n"
// #error "Disable TDLS before enable MCC MODE\n"
#endif
#if defined(CONFIG_RTW_80211R) && !defined(CONFIG_LAYER2_ROAMING)
#error "Enable CONFIG_LAYER2_ROAMING before enable CONFIG_RTW_80211R\n"
// #error "Enable CONFIG_LAYER2_ROAMING before enable CONFIG_RTW_80211R\n"
#endif
@@ -80,6 +82,10 @@
/* Default enable single wiphy if driver ver >= 5.9 */
#define RTW_SINGLE_WIPHY
#if (defined(__ANDROID_COMMON_KERNEL__) && !defined(CONFIG_RTW_ANDROID))
// #error "Set CONFIG_RTW_ANDROID in Makefile while build with Android Common Kernel!!"
#endif
#ifdef CONFIG_RTW_ANDROID
#include <linux/version.h>
@@ -100,6 +106,10 @@
#ifndef CONFIG_RADIO_WORK
#define CONFIG_RADIO_WORK
#endif
/* Default enable concurrent mode for most application */
#ifndef CONFIG_CONCURRENT_MODE
#define CONFIG_CONCURRENT_MODE
#endif
#endif
#if (CONFIG_RTW_ANDROID <= 7)
@@ -114,7 +124,7 @@
#define CONFIG_RTW_WIFI_HAL
#endif
#else
#error "Linux kernel version is too old\n"
// #error "Linux kernel version is too old\n"
#endif
#endif
@@ -181,12 +191,24 @@
#else // for Linux
#ifdef CONFIG_IOCTL_CFG80211
#ifndef CONFIG_RTW_SCAN_RAND
#define CONFIG_RTW_SCAN_RAND
#endif
#endif
#endif // CONFIG_RTW_ANDROID
#ifndef RTW_SINGLE_WIPHY
#define RTW_PER_ADAPTER_WIPHY 1
#else
#define RTW_PER_ADAPTER_WIPHY 0
#endif
#if defined(CONFIG_REGD_SRC_FROM_OS) && RTW_PER_ADAPTER_WIPHY
// #error "CONFIG_REGD_SRC_FROM_OS is not supported when enable RTW_PER_ADAPTER_WIPHY"
#endif
/*
#if defined(CONFIG_HAS_EARLYSUSPEND) && defined(CONFIG_RESUME_IN_WORKQUEUE)
#warning "You have CONFIG_HAS_EARLYSUSPEND enabled in your system, we disable CONFIG_RESUME_IN_WORKQUEUE automatically"
@@ -199,25 +221,25 @@
#endif
*/
//#ifdef CONFIG_RESUME_IN_WORKQUEUE /* this can be removed, because there is no case for this... */
// #if !defined(CONFIG_WAKELOCK) && !defined(CONFIG_ANDROID_POWER)
// #error "enable CONFIG_RESUME_IN_WORKQUEUE without CONFIG_WAKELOCK or CONFIG_ANDROID_POWER will suffer from the danger of wifi's unfunctionality..."
// #error "If you still want to enable CONFIG_RESUME_IN_WORKQUEUE in this case, mask this preprossor checking and GOOD LUCK..."
// #endif
//#endif
#ifdef CONFIG_RESUME_IN_WORKQUEUE /* this can be removed, because there is no case for this... */
#if !defined(CONFIG_WAKELOCK) && !defined(CONFIG_ANDROID_POWER)
// #error "enable CONFIG_RESUME_IN_WORKQUEUE without CONFIG_WAKELOCK or CONFIG_ANDROID_POWER will suffer from the danger of wifi's unfunctionality..."
// #error "If you still want to enable CONFIG_RESUME_IN_WORKQUEUE in this case, mask this preprossor checking and GOOD LUCK..."
#endif
#endif
/* About USB VENDOR REQ */
#if defined(CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC) && !defined(CONFIG_USB_VENDOR_REQ_MUTEX)
#warning "define CONFIG_USB_VENDOR_REQ_MUTEX for CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC automatically"
// #warning "define CONFIG_USB_VENDOR_REQ_MUTEX for CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC automatically"
#define CONFIG_USB_VENDOR_REQ_MUTEX
#endif
#if defined(CONFIG_VENDOR_REQ_RETRY) && !defined(CONFIG_USB_VENDOR_REQ_MUTEX)
#warning "define CONFIG_USB_VENDOR_REQ_MUTEX for CONFIG_VENDOR_REQ_RETRY automatically"
// #warning "define CONFIG_USB_VENDOR_REQ_MUTEX for CONFIG_VENDOR_REQ_RETRY automatically"
#define CONFIG_USB_VENDOR_REQ_MUTEX
#endif
#ifdef CONFIG_WIFI_MONITOR
/* #define CONFIG_MONITOR_MODE_XMIT */
#define CONFIG_MONITOR_MODE_XMIT
#endif
#ifdef CONFIG_CUSTOMER_ALIBABA_GENERAL
@@ -245,6 +267,10 @@
#ifdef CONFIG_AP_MODE
#define CONFIG_LIMITED_AP_NUM 1
#ifndef CONFIG_RTW_MAX_AP_ASSOC_STA
#define CONFIG_RTW_MAX_AP_ASSOC_STA 0 /* 0: not specified */
#endif
#ifndef CONFIG_RTW_AP_DATA_BMC_TO_UC
#define CONFIG_RTW_AP_DATA_BMC_TO_UC 1
#endif
@@ -266,7 +292,7 @@
#ifdef CONFIG_RTW_MULTI_AP
#ifndef CONFIG_AP_MODE
#error "enable CONFIG_RTW_MULTI_AP without CONFIG_AP_MODE"
// #error "enable CONFIG_RTW_MULTI_AP without CONFIG_AP_MODE"
#endif
#ifndef CONFIG_RTW_WDS
#define CONFIG_RTW_WDS
@@ -356,28 +382,48 @@
#define CONFIG_RTW_HIQ_FILTER 1
#endif
#ifndef CONFIG_RTW_EDCCA_MODE_SEL
#define CONFIG_RTW_EDCCA_MODE_SEL 0 /* 0:RTW_EDCCA_NORM, 0xFF:RTW_EDCCA_AUTO */
#endif
#ifndef CONFIG_RTW_ADAPTIVITY_EN
#define CONFIG_RTW_ADAPTIVITY_EN 0
#define CONFIG_RTW_ADAPTIVITY_EN 0
#endif
#ifndef CONFIG_RTW_ADAPTIVITY_MODE
#define CONFIG_RTW_ADAPTIVITY_MODE 0
#define CONFIG_RTW_ADAPTIVITY_MODE 0
#endif
#ifndef CONFIG_RTW_ADAPTIVITY_TH_L2H_INI
#define CONFIG_RTW_ADAPTIVITY_TH_L2H_INI 0
#define CONFIG_RTW_ADAPTIVITY_TH_L2H_INI 0
#endif
#ifndef CONFIG_RTW_ADAPTIVITY_TH_EDCCA_HL_DIFF
#define CONFIG_RTW_ADAPTIVITY_TH_EDCCA_HL_DIFF 0
#define CONFIG_RTW_ADAPTIVITY_TH_EDCCA_HL_DIFF 0
#endif
#ifndef CONFIG_RTW_EXCL_CHS
#define CONFIG_RTW_EXCL_CHS {0}
#define CONFIG_RTW_EXCL_CHS {0}
#endif
#ifndef CONFIG_RTW_EXCL_CHS_6G
#define CONFIG_RTW_EXCL_CHS_6G {0}
#define CONFIG_RTW_EXCL_CHS_6G {0}
#endif
#ifndef CONFIG_RTW_DIS_CH_FLAGS
#define CONFIG_RTW_DIS_CH_FLAGS NULL
#endif
#ifndef CONFIG_RTW_BCN_HINT_VALID_MS
#define CONFIG_RTW_BCN_HINT_VALID_MS (60 * 1000)
#endif
#ifndef CONFIG_RTW_COUNTRY_IE_SLAVE_EN_MODE
#define CONFIG_RTW_COUNTRY_IE_SLAVE_EN_MODE 0 /* 0: disable */
#endif
#ifndef CONFIG_RTW_COUNTRY_IE_SLAVE_FLAGS
#define CONFIG_RTW_COUNTRY_IE_SLAVE_FLAGS 0x01 /* BIT0: take intersection when having multiple received IEs */
#endif
#ifndef CONFIG_RTW_COUNTRY_IE_SLAVE_EN_ROLE
@@ -388,10 +434,15 @@
#define CONFIG_RTW_COUNTRY_IE_SLAVE_EN_IFBMP 0xFF /* all iface */
#endif
#ifndef CONFIG_RTW_COUNTRY_IE_SLAVE_SCAN_INT_MS
#define CONFIG_RTW_COUNTRY_IE_SLAVE_SCAN_INT_MS (60 * 1000)
#endif
#ifndef CONFIG_IEEE80211_BAND_5GHZ
#if defined(CONFIG_RTL8821A) || defined(CONFIG_RTL8821C) \
|| defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C) \
|| defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8814B) || defined(CONFIG_RTL8723F)
|| defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8814B) || defined(CONFIG_RTL8723F) \
|| defined(CONFIG_RTL8822E)
#define CONFIG_IEEE80211_BAND_5GHZ 1
#else
#define CONFIG_IEEE80211_BAND_5GHZ 0
@@ -432,6 +483,18 @@
#define CONFIG_TXPWR_LIMIT_EN 2 /* by efuse */
#endif
#ifndef CONFIG_RTW_INIT_REGD_ALWAYS_APPLY
#define CONFIG_RTW_INIT_REGD_ALWAYS_APPLY 0
#endif
#ifndef CONFIG_RTW_USER_REGD_ALWAYS_APPLY
#define CONFIG_RTW_USER_REGD_ALWAYS_APPLY 0
#endif
#ifndef CONFIG_RTW_COUNTRY_CODE
#define CONFIG_RTW_COUNTRY_CODE NULL
#endif
#ifndef CONFIG_RTW_CHPLAN
#define CONFIG_RTW_CHPLAN 0xFFFF /* RTW_CHPLAN_IOCTL_UNSPECIFIED */
#endif
@@ -459,7 +522,7 @@
#if RTW_DEF_MODULE_REGULATORY_CERT
#ifdef CONFIG_REGD_SRC_FROM_OS
#error "CONFIG_REGD_SRC_FROM_OS is not supported when enable RTW_DEF_MODULE_REGULATORY_CERT"
// #error "CONFIG_REGD_SRC_FROM_OS is not supported when enable RTW_DEF_MODULE_REGULATORY_CERT"
#endif
/* force enable TX power by rate and TX power limit */
#undef CONFIG_TXPWR_BY_RATE_EN
@@ -587,12 +650,12 @@
#ifndef CONFIG_CONCURRENT_MODE
#if (CONFIG_IFACE_NUMBER > 1)
#error "CONFIG_IFACE_NUMBER over 1,but CONFIG_CONCURRENT_MODE not defined"
// #error "CONFIG_IFACE_NUMBER over 1,but CONFIG_CONCURRENT_MODE not defined"
#endif
#endif
#if (CONFIG_IFACE_NUMBER == 0)
#error "CONFIG_IFACE_NUMBER cound not be 0 !!"
// #error "CONFIG_IFACE_NUMBER cound not be 0 !!"
#endif
#if defined(CONFIG_RTL8188E) || defined(CONFIG_RTL8192E) || defined(CONFIG_RTL8188F) || \
@@ -601,7 +664,7 @@ defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8821A) || defined(CONFIG_RTL8710B)
defined(CONFIG_RTL8723B) || defined(CONFIG_RTL8703B) || defined(CONFIG_RTL8723D)
#define CONFIG_HWMPCAP_GEN1
#elif defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || \
defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/
defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E) /*|| defined(CONFIG_RTL8814A)*/
#define CONFIG_HWMPCAP_GEN2
#elif defined(CONFIG_RTL8814B) /*Address CAM - 128*/
#define CONFIG_HWMPCAP_GEN3
@@ -614,20 +677,20 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/
#endif
#ifdef CONFIG_WOWLAN
#error "This IC can't support MI and WoWLan at the same time"
// #error "This IC can't support MI and WoWLan at the same time"
#endif
#endif
#if defined(CONFIG_HWMPCAP_GEN1) && (CONFIG_IFACE_NUMBER > 3)
#error " This IC can't support over 3 interfaces !!"
// #error " This IC can't support over 3 interfaces !!"
#endif
#if (CONFIG_IFACE_NUMBER > 4)
#error "Not support over 4 interfaces yet !!"
// #error "Not support over 4 interfaces yet !!"
#endif
#if (CONFIG_IFACE_NUMBER > 8) /*IFACE_ID_MAX*/
#error "HW count not support over 8 interfaces !!"
// #error "HW count not support over 8 interfaces !!"
#endif
#if (CONFIG_IFACE_NUMBER > 2)
@@ -683,10 +746,10 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/
#if defined(CONFIG_MI_UNIQUE_MACADDR_BIT)
#if !defined(CONFIG_MI_WITH_MBSSID_CAM)
#error "CONFIG_MI_UNIQUE_MACADDR_BIT should not be used without multiple interface !!"
// #error "CONFIG_MI_UNIQUE_MACADDR_BIT should not be used without multiple interface !!"
#endif
#if (CONFIG_MI_UNIQUE_MACADDR_BIT < 24) || ( 47 < CONFIG_MI_UNIQUE_MACADDR_BIT)
#error "CONFIG_MI_UNIQUE_MACADDR_BIT should be the bit in NIC specific mac address(BIT[24:47] !!"
// #error "CONFIG_MI_UNIQUE_MACADDR_BIT should be the bit in NIC specific mac address(BIT[24:47] !!"
#endif
#endif
@@ -695,11 +758,13 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/
#ifdef SEC_DEFAULT_KEY_SEARCH
#if (CONFIG_IFACE_NUMBER >= 2)
#error "Default Key Search only work with only one interface case!"
// #error "Default Key Search only work with only one interface case!"
#endif
#endif
#if defined(CONFIG_WOWLAN) && (defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B))
#if defined(CONFIG_WOWLAN) && (defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) \
|| defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822C) \
|| defined(CONFIG_RTL8814B) || defined(CONFIG_RTL8822E))
#define CONFIG_WOW_PATTERN_HW_CAM
#endif
@@ -711,6 +776,10 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/
#define CONFIG_TSF_UPDATE_RESTORE_FACTOR 5
#endif
#ifndef CONFIG_RTW_DEFAULT_BB_OPMODE
#define CONFIG_RTW_DEFAULT_BB_OPMODE 0 /* 0:PHYDM_PERFORMANCE_MODE */
#endif
/*
Mark CONFIG_DEAUTH_BEFORE_CONNECT by Arvin 2015/07/20
If the failure of Wi-Fi connection is due to some irregular disconnection behavior (like unplug dongle,
@@ -763,15 +832,19 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/
/* IPS */
#ifndef RTW_IPS_MODE
#if defined(CONFIG_IPS)
#if defined(CONFIG_FWLPS_IN_IPS) && defined(CONFIG_LPS_LCLK)
#define RTW_IPS_MODE 3
#elif defined(CONFIG_FWLPS_IN_IPS)
#define RTW_IPS_MODE 2
#elif defined(CONFIG_IPS)
#define RTW_IPS_MODE 1
#else
#define RTW_IPS_MODE 0
#endif
#endif /* !RTW_IPS_MODE */
#if (RTW_IPS_MODE > 1 || RTW_IPS_MODE < 0)
#error "The CONFIG_IPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n"
#if (RTW_IPS_MODE > 3 || RTW_IPS_MODE < 0)
// #error "The CONFIG_IPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n"
#endif
/* LPS */
@@ -788,7 +861,7 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/
#endif /* !RTW_LPS_MODE */
#if (RTW_LPS_MODE > 3 || RTW_LPS_MODE < 0)
#error "The CONFIG_LPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n"
// #error "The CONFIG_LPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n"
#endif
#ifndef RTW_LPS_1T1R
@@ -799,6 +872,23 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/
#define RTW_WOW_LPS_1T1R 0
#endif
/* WOW IPS */
#ifndef RTW_WOW_IPS_MODE
#if defined(CONFIG_FWLPS_IN_IPS) && defined(CONFIG_LPS_LCLK)
#define RTW_WOW_IPS_MODE 3
#elif defined(CONFIG_FWLPS_IN_IPS)
#define RTW_WOW_IPS_MODE 2
#elif defined(CONFIG_IPS)
#define RTW_WOW_IPS_MODE 1
#else
#define RTW_WOW_IPS_MODE 0
#endif
#endif /* !RTW_WOW_IPS_MODE */
#if (RTW_WOW_IPS_MODE > 3 || RTW_WOW_IPS_MODE < 0)
// #error "The RTW_WOW_IPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n"
#endif
/* WOW LPS */
#ifndef RTW_WOW_LPS_MODE
#if defined(CONFIG_LPS_PG) || defined(CONFIG_LPS_PG_DDMA)
@@ -813,12 +903,12 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/
#endif /* !RTW_WOW_LPS_MODE */
#if (RTW_WOW_LPS_MODE > 3 || RTW_WOW_LPS_MODE < 0)
#error "The RTW_WOW_LPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n"
// #error "The RTW_WOW_LPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n"
#endif
#ifdef RTW_REDUCE_SCAN_SWITCH_CH_TIME
#ifndef CONFIG_RTL8822B
#error "Only 8822B support RTW_REDUCE_SCAN_SWITCH_CH_TIME"
// #error "Only 8822B support RTW_REDUCE_SCAN_SWITCH_CH_TIME"
#endif
#ifndef RTW_CHANNEL_SWITCH_OFFLOAD
#define RTW_CHANNEL_SWITCH_OFFLOAD
@@ -827,13 +917,13 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/
#ifdef CONFIG_WAR_OFFLOAD
#ifndef CONFIG_WOWLAN
#error "WAR OFFLOAD is part of WOWLAN"
// #error "WAR OFFLOAD is part of WOWLAN"
#endif
#endif
#if defined(CONFIG_OFFLOAD_MDNS_V4) || defined(CONFIG_OFFLOAD_MDNS_V6)
#ifndef CONFIG_WOWLAN
#error "mDNS OFFLOAD is part of WOWLAN"
// #error "mDNS OFFLOAD is part of WOWLAN"
#endif
#ifndef CONFIG_WAR_OFFLOAD
#define CONFIG_WAR_OFFLOAD
@@ -865,4 +955,14 @@ defined(CONFIG_RTL8723F) /*|| defined(CONFIG_RTL8814A)*/
#define DBG_CPU_INFO /* Add CPU info to debug message prefix */
#endif
#ifndef CONFIG_ALLOW_FUNC_2G_5G_ONLY
#define CONFIG_ALLOW_FUNC_2G_5G_ONLY 1
#endif
#if !CONFIG_ALLOW_FUNC_2G_5G_ONLY
#define RTW_FUNC_2G_5G_ONLY __attribute__ ((deprecated("ch utility consider only 2G/5G is not allowed")))
#else
#define RTW_FUNC_2G_5G_ONLY /* tag for channel functions/macros consider only 2G/5G, place at the same line with symbol name */
#endif
#endif /* __DRV_CONF_H__ */

View File

@@ -29,7 +29,7 @@
#include <wlan_bssdef.h>
#include <wifi.h>
#include <ieee80211.h>
#ifdef CONFIG_ARP_KEEP_ALIVE
#ifdef CONFIG_ARP_KEEP_ALIVE_GW
#include <net/neighbour.h>
#include <net/arp.h>
#endif
@@ -60,6 +60,7 @@ typedef struct _ADAPTER _adapter, ADAPTER, *PADAPTER;
#include <rtw_debug.h>
#include <cmn_info/rtw_sta_info.h>
#include <rtw_rf.h>
#include "../core/rtw_chset.h"
#include "../core/rtw_chplan.h"
#ifdef CONFIG_80211N_HT
@@ -107,11 +108,14 @@ typedef struct _ADAPTER _adapter, ADAPTER, *PADAPTER;
#include <rtw_ioctl.h>
#include <rtw_ioctl_set.h>
#include <rtw_ioctl_query.h>
#include "rtw_cfg.h"
#include <osdep_intf.h>
#include <rtw_eeprom.h>
#include <sta_info.h>
#include <rtw_event.h>
#include <rtw_mlme_ext.h>
#include "../core/rtw_dfs.h"
#include "../core/rtw_txpwr.h"
#include <rtw_mi.h>
#include <rtw_ap.h>
#ifdef CONFIG_RTW_WDS
@@ -215,6 +219,7 @@ struct registry_priv {
#endif
u8 lps_chk_by_tp;
#ifdef CONFIG_WOWLAN
u8 wow_ips_mode;
u8 wow_power_mgnt;
u8 wow_lps_level;
#ifdef CONFIG_LPS_1T1R
@@ -264,6 +269,7 @@ struct registry_priv {
u8 tx_bw_mode;
#ifdef CONFIG_AP_MODE
u8 max_ap_assoc_sta;
u8 bmc_tx_rate;
#if CONFIG_RTW_AP_DATA_BMC_TO_UC
u8 ap_src_b2u_flags;
@@ -281,9 +287,9 @@ struct registry_priv {
#ifdef CONFIG_80211N_HT
u8 ht_enable;
/* 0: 20 MHz, 1: 40 MHz, 2: 80 MHz, 3: 160MHz */
/* 2.4G use bit 0 ~ 3, 5G use bit 4 ~ 7 */
/* 0x21 means enable 2.4G 40MHz & 5G 80MHz */
u8 bw_mode;
/* 2.4G use bit 0 ~ 3, 5G use bit 4 ~ 7, 6G use bit 8 ~ 11*/
/* 0x321 means enable 2.4G 40MHz & 5G 80MHz & 6G 160MHz*/
u16 bw_mode;
u8 ampdu_enable;/* for tx */
u8 rx_stbc;
u8 rx_ampdu_amsdu;/* Rx A-MPDU Supports A-MSDU is permitted */
@@ -343,6 +349,8 @@ struct registry_priv {
#ifdef CONFIG_REGD_SRC_FROM_OS
enum regd_src_t regd_src;
#endif
bool init_regd_always_apply;
bool user_regd_always_apply;
char alpha2[2];
u8 channel_plan;
u8 excl_chs[MAX_CHANNEL_NUM_2G_5G];
@@ -350,6 +358,9 @@ struct registry_priv {
u8 channel_plan_6g;
u8 excl_chs_6g[MAX_CHANNEL_NUM_6G];
#endif
u8 dis_ch_flags;
u32 bcn_hint_valid_ms;
u8 full_ch_in_p2p_handshake; /* 0: reply only softap channel, 1: reply full channel list*/
#ifdef CONFIG_BT_COEXIST
@@ -387,8 +398,11 @@ struct registry_priv {
#endif
#ifdef CONFIG_80211D
u8 country_ie_slave_en_mode;
u8 country_ie_slave_flags;
u8 country_ie_slave_en_role;
u8 country_ie_slave_en_ifbmp;
u32 country_ie_slave_scan_int_ms;
#endif
u8 ifname[16];
@@ -441,8 +455,7 @@ struct registry_priv {
u8 qos_opt_enable;
u8 hiq_filter;
u8 adaptivity_en;
u8 adaptivity_mode;
u8 edcca_mode_sel;
s8 adaptivity_th_l2h_ini;
s8 adaptivity_th_edcca_hl_diff;
@@ -540,6 +553,7 @@ struct registry_priv {
#endif
u32 phydm_ability;
u32 halrf_ability;
u8 def_bb_opmode;
#ifdef CONFIG_TDMADIG
u8 tdmadig_en;
u8 tdmadig_mode;
@@ -563,7 +577,8 @@ struct registry_priv {
u32 scan_interval_thr;
#endif
#ifdef CONFIG_RTL8822C_XCAP_NEW_POLICY
#if defined(CONFIG_RTL8822C_XCAP_NEW_POLICY) \
|| defined(CONFIG_RTL8822E_XCAP_NEW_POLICY)
u8 rtw_8822c_xcap_overwrite;
#endif
#ifdef CONFIG_RTW_MULTI_AP
@@ -573,7 +588,6 @@ struct registry_priv {
#if defined(CONFIG_CONCURRENT_MODE) && defined(CONFIG_AP_MODE)
u8 ap_csa_cnt;
#endif
u8 nbi_en;
};
/* For registry parameters */
@@ -596,16 +610,20 @@ struct registry_priv {
#define BSSID_SZ(field) sizeof(((PWLAN_BSSID_EX) 0)->field)
#define BW_MODE_2G(bw_mode) ((bw_mode) & 0x0F)
#define BW_MODE_5G(bw_mode) ((bw_mode) >> 4)
#define BW_MODE_5G(bw_mode) (((bw_mode) >> 4) & 0x0F)
#define BW_MODE_6G(bw_mode) (((bw_mode) >> 8) & 0x0F)
#ifdef CONFIG_80211N_HT
#define REGSTY_BW_2G(regsty) BW_MODE_2G((regsty)->bw_mode)
#define REGSTY_BW_5G(regsty) BW_MODE_5G((regsty)->bw_mode)
#define REGSTY_BW_6G(regsty) BW_MODE_6G((regsty)->bw_mode)
#else
#define REGSTY_BW_2G(regsty) CHANNEL_WIDTH_20
#define REGSTY_BW_5G(regsty) CHANNEL_WIDTH_20
#define REGSTY_BW_6G(regsty) CHANNEL_WIDTH_20
#endif
#define REGSTY_IS_BW_2G_SUPPORT(regsty, bw) (REGSTY_BW_2G((regsty)) >= (bw))
#define REGSTY_IS_BW_5G_SUPPORT(regsty, bw) (REGSTY_BW_5G((regsty)) >= (bw))
#define REGSTY_IS_BW_6G_SUPPORT(regsty, bw) (REGSTY_BW_6G((regsty)) >= (bw))
#ifdef CONFIG_80211AC_VHT
#define REGSTY_IS_11AC_ENABLE(regsty) ((regsty)->vht_enable != 0)
@@ -617,6 +635,9 @@ struct registry_priv {
#define REGSTY_IS_11AC_24G_ENABLE(regsty) 0
#endif
#define REGSTY_IS_11AX_ENABLE(regsty) 0
#define REGSTY_IS_11AX_AUTO(regsty) 0
#ifdef CONFIG_ACTIVE_TPC_REPORT
#define REGSTY_IS_ACTIVE_TPC_REPORT_CAPABLE(regsty) ((regsty)->active_tpc_report != 0)
#define REGSTY_IS_ACTIVE_TPC_REPORT_AUTO(regsty) ((regsty)->active_tpc_report == 2)
@@ -661,6 +682,8 @@ typedef struct rtw_if_operations {
#define GET_PRIMARY_ADAPTER(padapter) (((_adapter *)padapter)->dvobj->padapters[IFACE_ID0])
#define GET_IFACE_NUMS(padapter) (((_adapter *)padapter)->dvobj->iface_nums)
#define GET_ADAPTER(padapter, iface_id) (((_adapter *)padapter)->dvobj->padapters[iface_id])
#define GET_PRIMARY_LINK(padapter) (&(padapter)->adapter_link)
#define GET_LINK(padapter, link_idx) ((link_idx) < RTW_RLINK_MAX ? &(padapter)->adapter_link : NULL)
#define GetDefaultAdapter(padapter) padapter
@@ -867,6 +890,8 @@ struct rtw_traffic_statistics {
#define SEC_STATUS_STA_PK_GK_CONFLICT_DIS_BMC_SEARCH BIT0
#define TXPAUSE_CAP_FW_CTRL BIT0
struct sec_cam_bmp {
u32 m0;
#if (SEC_CAM_ENT_NUM_SW_LIMIT > 32)
@@ -1025,12 +1050,6 @@ struct macid_ctl_t {
#define OFFCHS_LEAVE_OP 2
#define OFFCHS_BACKING_OP 3
#define TPC_MODE_DISABLE 0
#define TPC_MODE_MANUAL 1
#define TPC_MODE_INVALID 2 /* keep last */
#define TPC_MANUAL_CONSTRAINT_MAX 600 /* mB */
#define COUNTRY_IE_SLAVE_EN_ROLE_STA BIT0 /* pure STA mode */
#define COUNTRY_IE_SLAVE_EN_ROLE_GC BIT1 /* P2P group client */
@@ -1038,52 +1057,55 @@ struct macid_ctl_t {
struct rf_ctl_t {
bool disable_sw_chplan;
enum regd_src_t regd_src;
enum rtw_regd_inr regd_inr;
u8 regd_inr_bmp;
char alpha2[2];
u8 ChannelPlan;
u8 domain_code;
#if CONFIG_IEEE80211_BAND_6GHZ
u8 chplan_6g;
#endif
u8 edcca_mode_2g_override;
#if CONFIG_IEEE80211_BAND_5GHZ
u8 edcca_mode_5g_override;
#endif
#if CONFIG_IEEE80211_BAND_6GHZ
u8 edcca_mode_6g_override;
#endif
#if CONFIG_TXPWR_LIMIT
u8 txpwr_lmt_override;
u8 domain_code_6g;
#endif
#if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT)
#if defined(CONFIG_80211AX_HE) || defined(CONFIG_80211AC_VHT) || CONFIG_IEEE80211_BAND_5GHZ
u8 proto_en;
#endif
/* initial channel plan selectors */
char init_alpha2[2];
u8 init_ChannelPlan;
u8 dis_ch_flags;
u8 excl_chs[MAX_CHANNEL_NUM_2G_5G];
#if CONFIG_IEEE80211_BAND_6GHZ
u8 init_chplan_6g;
u8 excl_chs_6g[MAX_CHANNEL_NUM_6G];
#endif
/* channel plan selectors by user */
char user_alpha2[2]; /* "\x00\x00" is not set */
u8 user_ChannelPlan;
#if CONFIG_IEEE80211_BAND_6GHZ
u8 user_chplan_6g;
#endif
_mutex regd_req_mutex;
_list regd_req_list;
u8 regd_req_num;
bool init_regd_always_apply;
bool user_regd_always_apply;
struct regd_req_t init_req;
struct regd_req_t *user_req;
u32 bcn_hint_valid_ms; /* the length of time beacon hint continue */
#ifdef CONFIG_80211D
u8 country_ie_slave_en_role;
u8 country_ie_slave_en_ifbmp;
enum country_ie_slave_en_mode cis_en_mode;
u8 cis_flags; /* bitmap of enum country_ie_slave_flags */
struct country_ie_slave_record cisr[CONFIG_IFACE_NUMBER];
u8 effected_cisr_id;
u8 cis_en_role; /* per link cis enable role, see COUNTRY_IE_SLAVE_EN_ROLE_XXX, used when CISF_ENV_BSS is not set */
u8 cis_en_ifbmp; /* per link cis enable iface bitmap, used when CISF_ENV_BSS is not set */
u32 cis_scan_int_ms; /* 0 means no env BSS scan triggerred by driver self, used when CISF_ENV_BSS is set */
bool cis_enabled; /* enable status */
/* per link cis status, used when CISF_ENV_BSS is not set */
u8 *recv_country_ie[CONFIG_IFACE_NUMBER][RTW_RLINK_MAX];
u32 recv_country_ie_len[CONFIG_IFACE_NUMBER][RTW_RLINK_MAX];
struct country_ie_slave_record cisr[CONFIG_IFACE_NUMBER][RTW_RLINK_MAX];
/* effected one, used when CISF_INTERSECT is not set */
struct country_ie_slave_record *effected_cisr;
struct country_ie_slave_record effected_cisr_cont; /* valid when effected_cisr != NULL */
#endif
u8 max_chan_nums;
RT_CHANNEL_INFO channel_set[MAX_CHANNEL_NUM];
struct rtw_chset chset;
struct op_class_pref_t **spt_op_class_ch;
u8 cap_spt_op_class_num;
u8 reg_spt_op_class_num;
@@ -1112,19 +1134,6 @@ struct rf_ctl_t {
#if CONFIG_TXPWR_LIMIT
u8 highest_ht_rate_bw_bmp;
u8 highest_vht_rate_bw_bmp;
_mutex txpwr_lmt_mutex;
_list reg_exc_list;
u8 regd_exc_num;
_list txpwr_lmt_list;
u8 txpwr_lmt_num;
const char *txpwr_lmt_name[BAND_MAX];
u8 txpwr_lmt_2g_cck_ofdm_state;
#if CONFIG_IEEE80211_BAND_5GHZ
u8 txpwr_lmt_5g_cck_ofdm_state;
u8 txpwr_lmt_5g_20_40_ref;
#endif
#endif
u8 tpc_mode;
u16 tpc_manual_constraint; /* mB */
@@ -1139,12 +1148,16 @@ struct rf_ctl_t {
#if CONFIG_IEEE80211_BAND_6GHZ
u8 edcca_mode_6g;
#endif
#ifndef CONFIG_DIRECT_EDCCA_MODE_SETTING
BAND_TYPE last_edcca_mode_op_band;
#endif
u8 ap_csa_ch;
u8 ap_csa_switch_cnt;
u8 ap_csa_ch_offset;
u8 ap_csa_ch_width;
u8 ap_csa_en;
u8 ap_csa_wait_update_bcn; /* wait beacon update */
#if defined(CONFIG_CONCURRENT_MODE) && defined(CONFIG_AP_MODE)
u8 ap_csa_cnt_input; /* Input from proc, default value is DEFAULT_CSA_CNT */
#endif
@@ -1161,17 +1174,23 @@ struct rf_ctl_t {
u8 ecsa_op_class;
#endif
#if CONFIG_IEEE80211_BAND_5GHZ
bool radar_detect_by_others[HW_BAND_MAX];
/* 5G band is implicit */
u8 radar_detect_cch[HW_BAND_MAX];
u8 radar_detect_bw[HW_BAND_MAX];
u32 radar_detect_freq_hi[HW_BAND_MAX];
u32 radar_detect_freq_lo[HW_BAND_MAX];
#ifdef CONFIG_DFS_MASTER
u8 dfs_region_domain;
enum rtw_dfs_regd dfs_region_domain;
_timer radar_detect_timer;
bool radar_detect_by_others;
u8 radar_detect_enabled;
u8 radar_detect_enabled; /* hook to phydm */
bool radar_detected;
u8 radar_detect_ch;
u8 radar_detect_bw;
u8 radar_detect_offset;
enum phl_band_idx radar_detect_hwband;
bool non_ocp_finished;
systime cac_start_time;
systime cac_end_time;
u8 cac_force_stop;
@@ -1186,6 +1205,8 @@ struct rf_ctl_t {
u8 dbg_dfs_radar_detect_trigger_non;
u8 dbg_dfs_choose_dfs_ch_first;
#endif /* CONFIG_DFS_MASTER */
#endif /* CONFIG_IEEE80211_BAND_5GHZ */
#endif /* CONFIG_DFS */
};
@@ -1195,27 +1216,37 @@ struct wow_ctl_t {
#define WOW_CAP_TKIP_OL BIT0
#define WOW_CAP_HALMAC_ACCESS_PATTERN_IN_TXFIFO BIT1
#define WOW_CAP_CSA BIT2
#define WOW_CAP_WPA3_SAE BIT3
#define WOW_CAP_DIS_INBAND_SIGNAL BIT4
#define WOW_CAP_MDNS BIT5
#define RFCTL_REG_WORLDWIDE(rfctl) (IS_ALPHA2_WORLDWIDE(rfctl->alpha2))
#define RFCTL_REG_ALPHA2_UNSPEC(rfctl) (IS_ALPHA2_UNSPEC(rfctl->alpha2)) /* ex: only domain code is specified */
#define RFCTL_REG_WORLDWIDE(rfctl) (IS_ALPHA2_WORLDWIDE(rfctl->alpha2))
#define RFCTL_REG_ALPHA2_UNSPEC(rfctl) (IS_ALPHA2_UNSPEC(rfctl->alpha2)) /* ex: only domain code is specified */
#define RFCTL_REG_INTERSECTED(rfctl) (IS_ALPHA2_INTERSECTED(rfctl->alpha2))
#if CONFIG_IEEE80211_BAND_5GHZ
#define RFCTL_REG_EN_11A(rfctl) (((rfctl)->proto_en & CHPLAN_PROTO_EN_A) ? true : false)
#else
#define RFCTL_REG_EN_11A(rfctl) false
#endif
#ifdef CONFIG_80211AC_VHT
#define RFCTL_REG_EN_11AC(rfctl) (((rfctl)->proto_en & CHPLAN_PROTO_EN_AC) ? 1 : 0)
#define RFCTL_REG_EN_11AC(rfctl) (((rfctl)->proto_en & CHPLAN_PROTO_EN_AC) ? true : false)
#else
#define RFCTL_REG_EN_11AC(rfctl) 0
#define RFCTL_REG_EN_11AC(rfctl) false
#endif
#ifdef CONFIG_80211AX_HE
#define RFCTL_REG_EN_11AX(rfctl) (((rfctl)->proto_en & CHPLAN_PROTO_EN_AX) ? 1 : 0)
#define RFCTL_REG_EN_11AX(rfctl) (((rfctl)->proto_en & CHPLAN_PROTO_EN_AX) ? true : false)
#else
#define RFCTL_REG_EN_11AX(rfctl) 0
#define RFCTL_REG_EN_11AX(rfctl) false
#endif
#define RTW_CAC_STOPPED 0
#ifdef CONFIG_DFS_MASTER
#define IS_CAC_STOPPED(rfctl) ((rfctl)->cac_end_time == RTW_CAC_STOPPED)
#define IS_CH_WAITING(rfctl) (!IS_CAC_STOPPED(rfctl) && rtw_time_after((rfctl)->cac_end_time, rtw_get_current_time()))
#define IS_UNDER_CAC(rfctl) (IS_CH_WAITING(rfctl) && rtw_time_after(rtw_get_current_time(), (rfctl)->cac_start_time))
#define IS_UNDER_CAC(rfctl) (IS_CH_WAITING(rfctl) && rtw_time_after_eq(rtw_get_current_time(), (rfctl)->cac_start_time))
#define IS_RADAR_DETECTED(rfctl) ((rfctl)->radar_detected)
#else
#define IS_CAC_STOPPED(rfctl) 1
@@ -1230,6 +1261,11 @@ struct wow_ctl_t {
#define IS_DFS_SLAVE_WITH_RD(rfctl) 0
#endif
#define HWBAND_FMT "HB%d"
#define HWBAND_ARG(band_idx) (band_idx)
#define FUNC_HWBAND_FMT "%s("HWBAND_FMT")"
#define FUNC_HWBAND_ARG(band_idx) __func__, HWBAND_ARG(band_idx)
#ifdef CONFIG_MBSSID_CAM
#define TOTAL_MBID_CAM_NUM 8
#define INVALID_CAM_ID 0xFF
@@ -1296,17 +1332,11 @@ struct protsel {
u32 sel; /* save the last sel port */
};
#ifdef CONFIG_RTL8814B
#ifdef CONFIG_USB_HCI
#define MAX_ENDPOINT_NUM 9 /* 2 x Bulk-IN + 7 x Bulk-OUT */
#endif
#define MAX_BULKOUT_NUM 7
#ifdef CONFIG_USB_HCI
#define MAX_ENDPOINT_NUM 8
#endif
#else
#define MAX_BULKOUT_NUM 4
#ifdef CONFIG_USB_HCI
#define MAX_ENDPOINT_NUM 6
#endif
#endif
#define MAX_BULKIN_NUM 2
struct dvobj_priv {
/*-------- below is common data --------*/
@@ -1360,6 +1390,10 @@ struct dvobj_priv {
u8 iface_nums; /* total number of ifaces used runtime */
struct mi_state iface_state;
#ifdef CONFIG_HAL_PREINIT
u8 hal_pre_inited;
#endif
#ifdef CONFIG_AP_MODE
#ifdef CONFIG_SUPPORT_MULTI_BCN
u8 nr_ap_if; /* total interface number of ap /go /mesh / nan mode. */
@@ -1404,7 +1438,7 @@ struct dvobj_priv {
#endif
/* In /Out Pipe information */
int RtInPipe[2];
int RtInPipe[MAX_BULKIN_NUM];
int RtOutPipe[MAX_BULKOUT_NUM];
u8 Queue2Pipe[HW_QUEUE_ENTRY];/* for out pipe mapping */
@@ -1603,6 +1637,25 @@ struct dvobj_priv {
#define DEV_U_BW(_dvobj) ((_dvobj)->union_bw)
#define DEV_U_OFFSET(_dvobj) ((_dvobj)->union_offset)
#define HWBAND_STA_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_STA_NUM(&((_dvobj)->iface_state)))
#define HWBAND_STA_LD_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_STA_LD_NUM(&((_dvobj)->iface_state)))
#define HWBAND_STA_LG_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_STA_LG_NUM(&((_dvobj)->iface_state)))
#define HWBAND_TDLS_LD_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_TDLS_LD_NUM(&((_dvobj)->iface_state)))
#define HWBAND_AP_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_AP_NUM(&((_dvobj)->iface_state)))
#define HWBAND_AP_STARTING_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_AP_STARTING_NUM(&((_dvobj)->iface_state)))
#define HWBAND_AP_LD_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_AP_LD_NUM(&((_dvobj)->iface_state)))
#define HWBAND_ADHOC_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_ADHOC_NUM(&((_dvobj)->iface_state)))
#define HWBAND_ADHOC_LD_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_ADHOC_LD_NUM(&((_dvobj)->iface_state)))
#define HWBAND_MESH_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_MESH_NUM(&((_dvobj)->iface_state)))
#define HWBAND_MESH_LD_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_MESH_LD_NUM(&((_dvobj)->iface_state)))
#define HWBAND_P2P_DV_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_P2P_DV_NUM(&((_dvobj)->iface_state)))
#define HWBAND_P2P_GC_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_P2P_GC_NUM(&((_dvobj)->iface_state)))
#define HWBAND_P2P_GO_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_P2P_GO_NUM(&((_dvobj)->iface_state)))
#define HWBAND_SCAN_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_SCAN_NUM(&((_dvobj)->iface_state)))
#define HWBAND_WPS_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_WPS_NUM(&((_dvobj)->iface_state)))
#define HWBAND_ROCH_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_ROCH_NUM(&((_dvobj)->iface_state)))
#define HWBAND_MGMT_TX_NUM(_dvobj, _band_idx) ((_band_idx) != HW_BAND_0 ? 0 : MSTATE_MGMT_TX_NUM(&((_dvobj)->iface_state)))
#define dvobj_to_pwrctl(dvobj) (&(dvobj->pwrctl_priv))
#define pwrctl_to_dvobj(pwrctl) container_of(pwrctl, struct dvobj_priv, pwrctl_priv)
#define dvobj_to_macidctl(dvobj) (&(dvobj->macid_ctl))
@@ -1617,6 +1670,7 @@ struct dvobj_priv {
#endif /* CONFIG_IOCTL_CFG80211 */
#define dvobj_to_rfctl(dvobj) (&(dvobj->rf_ctl))
#define rfctl_to_dvobj(rfctl) container_of((rfctl), struct dvobj_priv, rf_ctl)
#define dvobj_to_chset(dvobj) (&dvobj_to_rfctl(dvobj)->chset)
static inline void dev_set_surprise_removed(struct dvobj_priv *dvobj)
{
@@ -1724,6 +1778,16 @@ typedef struct loopbackdata {
#define ADAPTER_TX_BW_2G(adapter) BW_MODE_2G((adapter)->driver_tx_bw_mode)
#define ADAPTER_TX_BW_5G(adapter) BW_MODE_5G((adapter)->driver_tx_bw_mode)
struct _ADAPTER_LINK {
_adapter *adapter;
};
#define ALINK_GET_HWBAND(alink) (HW_BAND_0)
#define ALINK_GET_BAND(alink) (rtw_is_2g_ch((alink)->adapter->mlmeextpriv.cur_channel) ? BAND_ON_24G : BAND_ON_5G)
#define ALINK_GET_CH(alink) ((alink)->adapter->mlmeextpriv.cur_channel)
#define ALINK_GET_BW(alink) ((alink)->adapter->mlmeextpriv.cur_bwmode)
#define ALINK_GET_OFFSET(alink) ((alink)->adapter->mlmeextpriv.cur_ch_offset)
struct _ADAPTER {
int DriverState;/* for disable driver using module, use dongle to replace module. */
int pid[3];/* process id from UI, 0:wps, 1:hostapd, 2:dhcpcd */
@@ -1902,6 +1966,8 @@ struct _ADAPTER {
/*extend to support multi interface*/
u8 iface_id;
struct _ADAPTER_LINK adapter_link;
#ifdef CONFIG_BR_EXT
_lock br_ext_lock;
/* unsigned int macclone_completed; */
@@ -2043,7 +2109,7 @@ struct _ADAPTER {
((adapter_wdev_data(adapter))->pno_mac_addr)
#endif
#define adapter_to_chset(adapter) (adapter_to_rfctl((adapter))->channel_set)
#define adapter_to_chset(adapter) (&adapter_to_rfctl((adapter))->chset)
#define mlme_to_adapter(mlme) container_of((mlme), struct _ADAPTER, mlmepriv)
#define tdls_info_to_adapter(tdls) container_of((tdls), struct _ADAPTER, tdlsinfo)
@@ -2127,6 +2193,16 @@ int rtw_suspend_free_assoc_resource(_adapter *padapter);
#ifdef CONFIG_WOWLAN
int rtw_suspend_wow(_adapter *padapter);
int rtw_resume_process_wow(_adapter *padapter);
#ifdef CONFIG_MDNS_OFFLOAD
int rtw_wow_add_mdns_resp(_adapter *padapter, u8 index, u8 *resp_content, u16 content_len);
int rtw_wow_del_mdns_resp(_adapter *padapter, u8 index);
int rtw_wow_get_mdns_resp_ent(_adapter *padapter, u8 index, struct rtw_mdns_resp_entry **resp_entry);
int rtw_wow_add_mdns_match_crit(_adapter *padapter, u8 index, u16 match_type, u16 name_offset, u16 name_len);
int rtw_wow_del_mdns_match_crit(_adapter *padapter, u8 index);
int rtw_wow_add_mdns_passthru_name(_adapter *padapter, u8 *name, u8 name_len);
void rtw_wow_clr_mdns_passthru_name(_adapter *padapter);
void rtw_wow_get_mdns_passthru_list(_adapter *padapter, struct rtw_mdns_passthru_list **passthru_list);
#endif
#endif
/* HCI Related header file */

View File

@@ -1,6 +1,6 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2019 Realtek Corporation.
* Copyright(c) 2007 - 2022 Realtek Corporation.
*
* 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
@@ -47,6 +47,8 @@ typedef struct sdio_data {
unsigned int clock;
unsigned int timing;
u8 sd3_bus_mode;
/* MAX size for cmd53 byte mode */
u16 max_byte_size;
#endif
#ifdef DBG_SDIO

View File

@@ -51,6 +51,7 @@ void hal_btcoex_SpecialPacketNotify(PADAPTER padapter, u8 pktType);
void hal_btcoex_IQKNotify(PADAPTER padapter, u8 state);
void hal_btcoex_WLRFKNotify(PADAPTER padapter, u8 path, u8 type, u8 state);
void hal_btcoex_BtInfoNotify(PADAPTER padapter, u8 length, u8 *tmpBuf);
void hal_btcoex_le_audio_info_notify(PADAPTER padapter, u8 length, u8 *tmpBuf);
void hal_btcoex_BtMpRptNotify(PADAPTER padapter, u8 length, u8 *tmpBuf);
void hal_btcoex_SuspendNotify(PADAPTER padapter, u8 state);
void hal_btcoex_HaltNotify(PADAPTER padapter, u8 do_halt);
@@ -93,7 +94,6 @@ u16 hal_btcoex_btreg_write(PADAPTER padapter, u8 type, u16 addr, u16 val);
void hal_btcoex_set_rfe_type(u8 type);
void hal_btcoex_switchband_notify(u8 under_scan, u8 band_type);
void hal_btcoex_WlFwDbgInfoNotify(PADAPTER padapter, u8* tmpBuf, u8 length);
void hal_btcoex_rx_rate_change_notify(PADAPTER padapter, u8 is_data_frame, u8 rate_id);
u16 hal_btcoex_btset_testode(PADAPTER padapter, u8 type);
#ifdef CONFIG_RF4CE_COEXIST

View File

@@ -19,20 +19,31 @@
#include <hal_data.h>
/* Define the ICs that support wifi only cfg in coex. codes */
#if defined(CONFIG_RTL8723B) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) \
|| defined(CONFIG_RTL8723F)
#if defined(CONFIG_RTL8723B) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) \
|| defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) \
|| defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E)
#define CONFIG_BTCOEX_SUPPORT_WIFI_ONLY_CFG 1
#else
#define CONFIG_BTCOEX_SUPPORT_WIFI_ONLY_CFG 0
#endif
/* Define the ICs that support hal btc common file structure */
#if defined(CONFIG_RTL8822C) || (defined(CONFIG_RTL8192F) || defined(CONFIG_RTL8723F)&& defined(CONFIG_BT_COEXIST))
#if (defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8192F) \
|| defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E)) \
&& defined(CONFIG_BT_COEXIST)
#define CONFIG_BTCOEX_SUPPORT_BTC_CMN 1
#else
#define CONFIG_BTCOEX_SUPPORT_BTC_CMN 0
#endif
#if defined(CONFIG_8822E)
#define CONFIG_BTCOEX_GET_IQK_CNT_FROM_IQK_INFO 1
#define CONFIG_BTCOEX_SUPPORT_BT_LE_AUDIO 1
#else
#define CONFIG_BTCOEX_GET_IQK_CNT_FROM_IQK_INFO 0
#define CONFIG_BTCOEX_SUPPORT_BT_LE_AUDIO 0
#endif
#if (CONFIG_BTCOEX_SUPPORT_WIFI_ONLY_CFG == 1)
typedef enum _WIFIONLY_CHIP_INTERFACE {

View File

@@ -173,11 +173,15 @@ typedef enum _WAKEUP_REASON{
RX_DISASSOC = 0x04,
RX_DEAUTH = 0x08,
RX_ARP_REQUEST = 0x09,
RX_EAPREQ_IDENTIFY = 0x0B,
FW_DECISION_DISCONNECT = 0x10,
RX_MAGIC_PKT = 0x21,
RX_UNICAST_PKT = 0x22,
RX_PATTERN_PKT = 0x23,
RTD3_SSID_MATCH = 0x24,
MDNS_RX_QUERY_PKT = 0x2B,
MDNS_PASSTHRU_FORWARD_ALL = 0x2C,
MDNS_PASSTHRU_LIST_MATCH = 0x2D,
RX_REALWOW_V2_WAKEUP_PKT = 0x30,
RX_REALWOW_V2_ACK_LOST = 0x31,
ENABLE_FAIL_DMA_IDLE = 0x40,
@@ -314,6 +318,12 @@ void dump_chip_info(HAL_VERSION ChipVersion);
#define TBTT_PROHIBIT_HOLD_TIME 0x80 /* 4ms, unit is 32us*/
#define TBTT_PROHIBIT_HOLD_TIME_STOP_BCN 0x64 /* 3.2ms unit is 32us*/
/* TBTT hold time for 10M */
#define TBTT_PROHIBIT_HOLD_TIME_10M 0xc8
/* TBTT hold time for 5M */
#define TBTT_PROHIBIT_HOLD_TIME_5M 0x190
int hal_spec_init(_adapter *adapter);
void dump_hal_spec(void *sel, _adapter *adapter);
@@ -328,7 +338,7 @@ u8 hal_largest_bw(_adapter *adapter, u8 in_bw);
bool hal_chk_wl_func(_adapter *adapter, u8 func);
void hal_com_config_channel_plan(
void hal_com_parse_channel_plan(
PADAPTER padapter,
const char *hw_alpha2,
u8 hw_chplan,
@@ -398,6 +408,7 @@ void rtw_sec_read_cam_ent(_adapter *adapter, u8 id, u8 *ctrl, u8 *mac, u8 *key);
void rtw_sec_write_cam_ent(_adapter *adapter, u8 id, u16 ctrl, u8 *mac, u8 *key);
void rtw_sec_clr_cam_ent(_adapter *adapter, u8 id);
bool rtw_sec_read_cam_is_gk(_adapter *adapter, u8 id);
u8 rtw_sec_search_camid(_adapter *adapter, u8 key_id, u8 is_gtk);
u8 rtw_hal_rcr_check(_adapter *adapter, u32 check_bit);
@@ -576,6 +587,16 @@ void update_IOT_info(_adapter *padapter);
void rtw_set_rts_bw(_adapter *padapter);
#endif/*CONFIG_RTS_FULL_BW*/
enum ctrl_tx_bcn_reason {
CTRL_TX_BCN_BY_OTHERS = 0,
CTRL_TX_BCN_BY_SCAN = 1,
CTRL_TX_BCN_BY_JOIN = 2,
CTRL_TX_BCN_BY_CORRECT_TSF = 3,
};
void ResumeTxBeacon_with_reason(_adapter *padapter, enum ctrl_tx_bcn_reason reason);
void StopTxBeacon_with_reason(_adapter *padapter,enum ctrl_tx_bcn_reason reason);
void ResumeTxBeacon(_adapter *padapter);
void StopTxBeacon(_adapter *padapter);

View File

@@ -46,6 +46,7 @@ enum h2c_cmd {
#endif /* CONFIG_MCC_MODE */
H2C_CHNL_SWITCH_OPER_OFFLOAD = 0x1C,
H2C_SINGLE_CHANNELSWITCH_V2 = 0x1D,
H2C_TX_PAUSE_DRV_INFO = 0x1E,
/* PoweSave Class: 001 */
H2C_SET_PWR_MODE = 0x20,
@@ -120,6 +121,10 @@ enum h2c_cmd {
#ifdef CONFIG_WOW_KEEP_ALIVE_PATTERN
H2C_UDP_KEEPALIVE = 0x90,
#endif /*CONFIG_WOW_KEEP_ALIVE_PATTERN*/
H2C_AOAC_RSVDPAGE4 = 0x91,
#ifdef CONFIG_MDNS_OFFLOAD
H2C_MDNS_OFFLOAD = 0x92,
#endif
#ifdef CONFIG_FW_HANDLE_TXBCN
H2C_FW_BCN_OFFLOAD = 0xBA,
#endif
@@ -164,8 +169,8 @@ enum h2c_cmd {
#define H2C_MACID_CFG_LEN 7
#define H2C_BTMP_OPER_LEN 5
#define H2C_WOWLAN_LEN 7
#define H2C_REMOTE_WAKE_CTRL_LEN 3
#define H2C_AOAC_GLOBAL_INFO_LEN 2
#define H2C_REMOTE_WAKE_CTRL_LEN 5
#define H2C_AOAC_GLOBAL_INFO_LEN 4
#define H2C_AOAC_RSVDPAGE_LOC_LEN 7
#define H2C_SCAN_OFFLOAD_CTRL_LEN 4
#define H2C_BT_FW_PATCH_LEN 6
@@ -179,6 +184,9 @@ enum h2c_cmd {
#ifdef CONFIG_PNO_SUPPORT
#define H2C_NLO_INFO_LEN 2
#endif
#ifdef CONFIG_MDNS_OFFLOAD
#define H2C_MDNS_OFFLOAD_LEN 5
#endif
#ifdef CONFIG_MCC_MODE
#define H2C_MCC_CTRL_LEN 7
#ifdef CONFIG_MCC_MODE_V2
@@ -192,7 +200,7 @@ enum h2c_cmd {
#define H2C_MCC_IQK_PARAM_LEN 7
#endif /* CONFIG_MCC_MODE */
#ifdef CONFIG_LPS_PG
#ifdef CONFIG_RTL8822C
#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)
#define H2C_LPS_PG_INFO_LEN 4
#else
#define H2C_LPS_PG_INFO_LEN 2
@@ -283,7 +291,7 @@ enum h2c_cmd {
#define GET_H2CCMD_MSRRPT_PARM_MIRACAST_SINK(__pH2CCmd) LE_BITS_TO_1BYTE(((u8 *)(__pH2CCmd)), 3, 1)
#define GET_H2CCMD_MSRRPT_PARM_ROLE(__pH2CCmd) LE_BITS_TO_1BYTE(((u8 *)(__pH2CCmd)), 4, 4)
#ifdef CONFIG_WAR_OFFLOAD
#if defined(CONFIG_WAR_OFFLOAD) || defined(CONFIG_MDNS_OFFLOAD)
#define SET_IPHDR_VERSION(__pHeader, __Value) WriteLE1Byte(((u8 *)(__pHeader)) + 0, __Value)
#define SET_IPHDR_DSCP(__pHeader, __Value) WriteLE1Byte(((u8 *)(__pHeader)) + 1, __Value)
#define SET_IPHDR_TOTAL_LEN(__pHeader, __Value) WriteLE2Byte(((u8 *)(__pHeader)) + 2, __Value)
@@ -304,7 +312,7 @@ enum h2c_cmd {
#endif /* CONFIG_WAR_OFFLOAD */
#ifdef CONFIG_OFFLOAD_MDNS_V6
#if defined(CONFIG_OFFLOAD_MDNS_V6) || defined(CONFIG_MDNS_OFFLOAD)
#define SET_IPHDRV6_VERSION(__pHeader, __Value) SET_BITS_TO_LE_1BYTE(__pHeader, 4, 4, __Value)
#define SET_IPHDRV6_TRAFFIC_CLASS(__pHeader, __Value) SET_BITS_TO_LE_2BYTE(__pHeader, 4, 8, __Value)
#define SET_IPHDRV6_FLOW_LABEL(__pHeader, __Value) SET_BITS_TO_LE_4BYTE(__pHeader, 12, 20, __Value)
@@ -424,6 +432,15 @@ s32 rtw_hal_customer_str_write(_adapter *adapter, const u8 *cs);
#define SET_H2CCMD_AP_WOWLAN_RSVDPAGE_LOC_ProbeRsp(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
/* _Probersp_RsvdPage 0x13 */
#ifdef CONFIG_TX_PAUSE_FW_CTRL
/* H2C_TX_PAUSE_DRV_INFO 0x1E */
#define H2C_TX_PAUSE_DRV_INFO_LEN 2
#define SET_H2CCMD_TX_PAUSE_DRV_INFO_VALUE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(((u8 *)(__pH2CCmd)), 0, 8, (__Value))
#define SET_H2CCMD_TX_PAUSE_DRV_INFO_MASK(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(((u8 *)(__pH2CCmd)) + 1, 0, 8, (__Value))
s32 rtw_hal_h2c_tx_pause_ctrl(_adapter *adapter, u8 val);
#endif
#define SET_H2CCMD_PWRMODE_PARM_MODE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
#define SET_H2CCMD_PWRMODE_PARM_RLBM(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 4, __Value)
#define SET_H2CCMD_PWRMODE_PARM_SMART_PS(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 4, 4, __Value)
@@ -607,6 +624,7 @@ s32 rtw_hal_customer_str_write(_adapter *adapter, const u8 *cs);
#define SET_H2CCMD_WOWLAN_GPIO_INPUT_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 5, 1, __Value)
#define SET_H2CCMD_WOWLAN_DEV2HST_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 7, 1, __Value)
#define SET_H2CCMD_WOWLAN_TIME_FOR_UPHY_DISABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+5, 0, 8, __Value)
#define SET_H2CCMD_WOWLAN_DISABLE_INBAND(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+6, 0, 1, __Value)
#define SET_H2CCMD_WOWLAN_RISE_HST2DEV(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+6, 2, 1, __Value)
/* _REMOTE_WAKEUP_CMD_0x81 */
@@ -622,11 +640,22 @@ s32 rtw_hal_customer_str_write(_adapter *adapter, const u8 *cs);
SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 3, 1, __Value)
#define SET_H2CCMD_REMOTE_WAKE_CTRL_ARP_ACTION(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 1, __Value)
#define SET_H2CCMD_REMOTE_WAKE_CTRL_TIM_PARSER_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 2, 1, __Value)
#define SET_H2CCMD_REMOTE_WAKE_CTRL_FW_PARSING_UNTIL_WAKEUP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 4, 1, __Value)
#define SET_H2CCMD_REMOTE_WAKE_CTRL_CSA_PARSER_EN(__pH2CCmd, __Value) \
SET_BITS_TO_LE_1BYTE((__pH2CCmd)+4, 3, 1, __Value)
/* AOAC_GLOBAL_INFO_0x82 */
#define SET_H2CCMD_AOAC_GLOBAL_INFO_PAIRWISE_ENC_ALG(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value)
#define SET_H2CCMD_AOAC_GLOBAL_INFO_GROUP_ENC_ALG(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value)
#ifdef CONFIG_IEEE80211W
#define SET_H2CCMD_AOAC_GLOBAL_INFO_11W_GROUP_ENC_ALG(__pH2CCmd, __Value) \
SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value)
#endif
#ifdef CONFIG_GTK_OL
#define SET_H2CCMD_AOAC_GLOBAL_INFO_IEEE_AKM_SUITE_TYPE(__pH2CCmd, __Value) \
SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value)
#endif
/* AOAC_RSVDPAGE_LOC_0x83 */
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_REMOTE_WAKE_CTRL_INFO(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd), 0, 8, __Value)
@@ -648,6 +677,37 @@ s32 rtw_hal_customer_str_write(_adapter *adapter, const u8 *cs);
#endif
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_AOAC_REPORT(__pH2CCmd, __Value) \
SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 1, 0, 8, __Value)
#ifdef CONFIG_IEEE80211W
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_IEEE80211W_INFO(__pH2CCmd, __Value) \
SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 4, 0, 8, __Value)
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_SA_QUERY(__pH2CCmd, __Value) \
SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 5, 0, 8, __Value)
#endif
#ifdef CONFIG_GTK_OL
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_GTK_INFO_V2(__pH2CCmd, __Value) \
SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 6, 0, 8, __Value)
#endif
/* AOAC_RSVDPAGE_4_0x91 */
#define SET_H2CCMD_AOAC_RSVDPAGE_LOC_CHSET(__pH2CCmd, __Value) \
SET_BITS_TO_LE_1BYTE((__pH2CCmd), 0, 8, __Value)
#ifdef CONFIG_MDNS_OFFLOAD
#define SET_H2CCMD_MDNS_OFFLOAD_EN(__pH2CCmd, __Value) \
SET_BITS_TO_LE_1BYTE((__pH2CCmd), 0, 1, __Value)
#define SET_H2CCMD_MDNS_OFFLOAD_STATE(__pH2CCmd, __Value) \
SET_BITS_TO_LE_1BYTE((__pH2CCmd), 1, 1, __Value)
#define SET_H2CCMD_MDNS_OFFLOAD_PASSTHRU_BEHAVIOR(__pH2CCmd, __Value) \
SET_BITS_TO_LE_1BYTE((__pH2CCmd), 2, 2, __Value)
#define SET_H2CCMD_MDNS_OFFLOAD_LOC_IPV4_HEADER(__pH2CCmd, __Value) \
SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 1, 0, 8, __Value)
#define SET_H2CCMD_MDNS_OFFLOAD_LOC_IPV6_HEADER(__pH2CCmd, __Value) \
SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 2, 0, 8, __Value)
#define SET_H2CCMD_MDNS_OFFLOAD_LOC_MDNS_PROTOCOL_DATA(__pH2CCmd, __Value) \
SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 3, 0, 8, __Value)
#define SET_H2CCMD_MDNS_OFFLOAD_LOC_PASSTHRU_LIST(__pH2CCmd, __Value) \
SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 4, 0, 8, __Value)
#endif
#ifdef CONFIG_PNO_SUPPORT
/* D0_Scan_Offload_Info_0x86 */
@@ -689,7 +749,8 @@ s32 rtw_hal_customer_str_write(_adapter *adapter, const u8 *cs);
#define SET_H2CCMD_LPSPG_IQK_INFO_LOC(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd) + 3, 0, 8, __Value)/*Loc_IQK_result*/
#endif
#if defined(CONFIG_RTL8822C) && defined(CONFIG_SUPPORT_DYNAMIC_TXPWR)
#if (defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)) \
&& defined(CONFIG_SUPPORT_DYNAMIC_TXPWR)
#define SET_H2CCMD_FW_CRC5_SEARCH_EN(cmd, v) \
SET_BITS_TO_LE_1BYTE((cmd), 0, 1, (v));
#define SET_H2CCMD_FW_CRC5_SEARCH_MACID(cmd, v) \
@@ -732,11 +793,11 @@ s32 rtw_hal_customer_str_write(_adapter *adapter, const u8 *cs);
#endif /*DBG_FW_DEBUG_MSG_PKT*/
#ifdef DBG_RSVD_PAGE_CFG
#define RSVD_PAGE_CFG(ops, v1, v2, v3) \
RTW_INFO("=== [RSVD][%s]-NeedPage:%d, TotalPageNum:%d TotalPacketLen:%d ===\n", \
ops, v1, v2, v3)
#define RSVD_PAGE_CFG(ops, v1, v2) \
RTW_INFO("=== [RSVD][%s]-NeedPage:%d, TotalPageNum:%d ===\n", \
ops, v1, v2)
#else
#define RSVD_PAGE_CFG(ops, v1, v2, v3) do {} while (0)
#define RSVD_PAGE_CFG(ops, v1, v2) do {} while (0)
#endif
/* ---------------------------------------------------------------------------------------------------------
@@ -758,9 +819,11 @@ typedef struct _RSVDPAGE_LOC {
u8 LocNetList;
#ifdef CONFIG_GTK_OL
u8 LocGTKEXTMEM;
u8 loc_gtk_info_v2;
#endif /* CONFIG_GTK_OL */
u8 LocNDPInfo;
u8 LocAOACReport;
u8 loc_channel_set;
#ifdef CONFIG_PNO_SUPPORT
u8 LocPNOInfo;
u8 LocScanInfo;
@@ -778,7 +841,12 @@ typedef struct _RSVDPAGE_LOC {
u8 LocMdnsv6;
#endif /* defined(CONFIG_OFFLOAD_MDNS_V4) || defined(CONFIG_OFFLOAD_MDNS_V6) */
#endif /* CONFIG_WAR_OFFLOAD */
#ifdef CONFIG_MDNS_OFFLOAD
u8 loc_ipv4_header;
u8 loc_ipv6_header;
u8 loc_mdns_protocol_data;
u8 loc_mdns_passthru_list;
#endif
#endif /* CONFIG_WOWLAN */
u8 LocApOffloadBCN;
#ifdef CONFIG_P2P_WOWLAN
@@ -791,6 +859,10 @@ typedef struct _RSVDPAGE_LOC {
#ifdef DBG_FW_DEBUG_MSG_PKT
u8 loc_fw_dbg_msg_pkt;
#endif /*DBG_FW_DEBUG_MSG_PKT*/
#ifdef CONFIG_IEEE80211W
u8 loc_ieee80211w_info;
u8 loc_sa_query;
#endif
} RSVDPAGE_LOC, *PRSVDPAGE_LOC;
struct rsvd_page_cache_t {

View File

@@ -138,12 +138,6 @@ PHY_TxPowerByRateConfiguration(
bool phy_chk_ch_setting_consistency(_adapter *adapter, u8 ch);
#ifdef CONFIG_TXPWR_PG_WITH_PWR_IDX
u8 phy_get_pg_txpwr_idx(_adapter *pAdapter
, enum rf_path RFPath, RATE_SECTION rs, u8 ntx_idx
, enum channel_width BandWidth, u8 band, u8 Channel);
#endif
#if CONFIG_TXPWR_LIMIT
s8 phy_get_txpwr_lmt(_adapter *adapter
, const char *lmt_name
@@ -168,7 +162,6 @@ s8 phy_get_txpwr_lmt_sub_chs(_adapter *adapter
#define phy_get_txpwr_lmt_sub_chs(adapter, lmt_name, band, bw, rfpath, rate, ntx_idx, cch, opch, reg_max) (GET_HAL_SPEC(adapter)->txgi_max)
#endif /* CONFIG_TXPWR_LIMIT */
void dump_txpwr_tpc_settings(void *sel, _adapter *adapter);
void dump_txpwr_antenna_gain(void *sel, _adapter *adapter);
s8 phy_get_txpwr_target(_adapter *adapter, u8 rfpath, RATE_SECTION rs, u8 rate, u8 ntx_idx
@@ -197,6 +190,8 @@ s8
phy_get_tx_power_final_absolute_value(_adapter *adapter, u8 rfpath, u8 rate,
enum channel_width bw, u8 channel);
void rtw_txpwr_hal_update_pwr(struct dvobj_priv *dvobj, enum phl_band_idx band_idx);
s8
PHY_GetTxPowerTrackingOffset(
PADAPTER pAdapter,
@@ -288,8 +283,11 @@ void dump_hal_txpwr_info_5g(void *sel, _adapter *adapter, u8 rfpath_num, u8 max_
void hal_load_txpwr_info(_adapter *adapter);
#endif
void rtw_txpwr_hal_dump_target_info(void *sel, struct dvobj_priv *dvobj);
struct tx_power_ext_info;
bool rtw_txpwr_hal_get_ext_info(struct dvobj_priv *dvobj, struct tx_power_ext_info *info);
#ifdef CONFIG_PROC_DEBUG
void dump_tx_power_ext_info(void *sel, _adapter *adapter);
void dump_target_tx_power(void *sel, _adapter *adapter);
void dump_tx_power_by_rate(void *sel, _adapter *adapter);
#endif

View File

@@ -824,10 +824,20 @@ Default: 00b.
/* ----------------------------------------------------------------------------
* CAM Config Setting (offset 0x680, 1 byte)
* ---------------------------------------------------------------------------- */
#define CAM_MIC_KEY BIT(5)
#define CAM_GROUP_KEY BIT(6)
#define CAM_EXT_SEC_KEY BIT(9)
#define CAM_MGNT_KEY BIT(10)
#define CAM_VALID BIT(15)
#define CAM_NOTVALID 0x0000
#define CAM_USEDK BIT(5)
#define CAM_KEY_ID_BIT_MASK 0x03
#define CAM_SEC_TYPE_BIT_MASK 0x07
#define CAM_KEY_ID_BIT_LEN 2
#define CAM_CTRL_SIZE 2
#define CAM_CONTENT_COUNT 8
#define CAM_NONE 0x0
@@ -1100,6 +1110,7 @@ Current IOREG MAP
* the correct arragement is VO - Bit0, VI - Bit1, BE - Bit2, and BK - Bit3.
* 8723 and 88E may be not correct either in the eralier version. Confirmed with DD Tim.
* By Bruce, 2011-09-22. */
#define StopBcnHiMgt BIT(7)
#define StopBecon BIT(6)
#define StopHigh BIT(5)
#define StopMgt BIT(4)
@@ -1107,6 +1118,7 @@ Current IOREG MAP
#define StopBE BIT(2)
#define StopVI BIT(1)
#define StopVO BIT(0)
#define StopAll (StopBecon | StopHigh | StopMgt | StopBK | StopBE | StopVI | StopVO)
/* ----------------------------------------------------------------------------
* 8192C (RCR) Receive Configuration Register (Offset 0x608, 32 bits)

View File

@@ -34,6 +34,9 @@
#include "../hal/hal_dm_acs.h"
#endif
#include "../hal/hal_pwr_table.h"
#include "../hal/hal_dfs.h"
/*
* <Roger_Notes> For RTL8723 WiFi/BT/GPS multi-function configuration. 2010.10.06.
* */
@@ -87,13 +90,6 @@ typedef enum _RT_AMPDU_BRUST_MODE {
RT_AMPDU_BRUST_8723B = 7,
} RT_AMPDU_BRUST, *PRT_AMPDU_BRUST_MODE;
/* 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 NUM_OF_TARGET_TXPWR_2G 10 /* CCK:1, OFDM:1, HT:4, VHT:4 */
#define NUM_OF_TARGET_TXPWR_5G 9 /* OFDM:1, HT:4, VHT:4 */
@@ -229,6 +225,16 @@ struct hal_spec_t {
u16 macid_txrpt;
u8 macid_txrpt_pgsz;
u8 txpause_cap; /* TXPAUSE_CAP_XXX */
#ifdef CONFIG_USB_HCI
/* A certain HW is designed to take responsibility for replying 0xEA when */
/* MAC's clock is off. Because this HW is not designed in some ICs, there */
/* is a limitation on accessing the off area of mac to causes bus error. */
/* e.g. driver is into card disable or low clock mode.*/
u8 mac_off_access_limit_in_low_clock;
#endif
u8 rfpath_num_2g:4; /* used for tx power index path */
u8 rfpath_num_5g:4; /* used for tx power index path */
u8 rf_reg_path_num;
@@ -314,38 +320,6 @@ typedef struct hal_p2p_ps_para {
u32 noa_count_para;
} HAL_P2P_PS_PARA, *PHAL_P2P_PS_PARA;
#define TXPWR_LMT_RS_CCK 0
#define TXPWR_LMT_RS_OFDM 1
#define TXPWR_LMT_RS_HT 2
#define TXPWR_LMT_RS_VHT 3
#define TXPWR_LMT_RS_NUM 4
#define TXPWR_LMT_RS_NUM_2G 4 /* CCK, OFDM, HT, VHT */
#define TXPWR_LMT_RS_NUM_5G 3 /* OFDM, HT, VHT */
#if CONFIG_TXPWR_LIMIT
extern const char *const _txpwr_lmt_rs_str[];
#define txpwr_lmt_rs_str(rs) (((rs) >= TXPWR_LMT_RS_NUM) ? _txpwr_lmt_rs_str[TXPWR_LMT_RS_NUM] : _txpwr_lmt_rs_str[(rs)])
struct txpwr_lmt_ent {
_list list;
s8 lmt_2g[MAX_2_4G_BANDWIDTH_NUM]
[TXPWR_LMT_RS_NUM_2G]
[CENTER_CH_2G_NUM]
[MAX_TX_COUNT];
#if CONFIG_IEEE80211_BAND_5GHZ
s8 lmt_5g[MAX_5G_BANDWIDTH_NUM]
[TXPWR_LMT_RS_NUM_5G]
[CENTER_CH_5G_ALL_NUM]
[MAX_TX_COUNT];
#endif
char name[0];
};
#endif /* CONFIG_TXPWR_LIMIT */
typedef struct hal_com_data {
HAL_VERSION version_id;
RT_MULTI_FUNC MultiFunc; /* For multi-function consideration. */
@@ -391,6 +365,10 @@ typedef struct hal_com_data {
BOOLEAN bSWToBW80M;
BOOLEAN bChnlBWInitialized;
#ifdef CONFIG_DFS_MASTER
struct rtw_dfs_t dfs_info;
#endif
#ifdef CONFIG_RTW_ACS
struct auto_chan_sel acs;
#endif
@@ -488,6 +466,14 @@ typedef struct hal_com_data {
/*u8 EfuseMap[2][HWSET_MAX_SIZE_JAGUAR];*/
EFUSE_HAL EfuseHal;
/* channel plan */
char eeprom_alpha2[2];
u8 eeprom_chplan;
#if CONFIG_IEEE80211_BAND_6GHZ
u8 eeprom_chplan_6g;
#endif
bool eeprom_force_hw_chplan;
u8 txpwr_pg_mode; /* enum txpwr_pg_mode */
/*---------------------------------------------------------------------------------*/
@@ -524,10 +510,15 @@ typedef struct hal_com_data {
u8 target_txpwr_5g[TX_PWR_BY_RATE_NUM_RF]
[NUM_OF_TARGET_TXPWR_5G];
#if CONFIG_TXPWR_LIMIT
struct txpwr_lmt_tb_t txpwr_lmt_tb;
#endif
bool set_entire_txpwr;
#if defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) \
|| defined(CONFIG_RTL8723F)
#if defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822B) \
|| defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) \
|| defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E)
u32 txagc_set_buf;
#endif
@@ -671,7 +662,8 @@ typedef struct hal_com_data {
/* SDIO Rx FIFO related. */
/* */
u8 SdioRxFIFOCnt;
#if defined (CONFIG_RTL8822C) || defined (CONFIG_RTL8192F)
#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8192F) \
|| defined(CONFIG_RTL8822E)
u32 SdioRxFIFOSize;
#else
u16 SdioRxFIFOSize;
@@ -846,6 +838,14 @@ typedef struct hal_com_data {
u16 init_reg_0x63a;
u32 init_reg_0x63c;
#endif
u8 tx_pause[PAUSE_RSON_MAX];
#ifdef CONFIG_TX_PAUSE_FW_CTRL
_lock tx_pause_sctx_lock;
struct submit_ctx *tx_pause_sctx;
#endif
_adapter *adapter;
} HAL_DATA_COMMON, *PHAL_DATA_COMMON;
typedef struct hal_com_data HAL_DATA_TYPE, *PHAL_DATA_TYPE;
@@ -881,6 +881,9 @@ typedef struct hal_com_data HAL_DATA_TYPE, *PHAL_DATA_TYPE;
#ifdef RTW_HALMAC
int rtw_halmac_deinit_adapter(struct dvobj_priv *);
#ifdef CONFIG_MP_INCLUDED
int rtw_halmac_set_gpio(struct dvobj_priv *d, u8 gpio_id, u8 gpio_enable, u8 gpio_func_offset, u8 gpio_mode);
#endif
#endif /* RTW_HALMAC */
#endif /* __HAL_DATA_H__ */

View File

@@ -44,6 +44,7 @@
#define RTL8814C_SUPPORT 0
#define RTL8735B_SUPPORT 0
#define RTL8730A_SUPPORT 0
#define RTL8822E_SUPPORT 0
/*#if (RTL8188E_SUPPORT==1)*/
#define RATE_ADAPTIVE_SUPPORT 0
@@ -82,6 +83,10 @@
#ifndef CONFIG_TXPWR_PG_WITH_PWR_IDX
#define CONFIG_TXPWR_PG_WITH_PWR_IDX
#endif
#ifndef CONFIG_TX_PAUSE_FW_CTRL
#define CONFIG_TX_PAUSE_FW_CTRL
#endif
#endif
#ifdef CONFIG_RTL8821A
@@ -141,7 +146,7 @@
#ifndef CONFIG_TXPWR_PG_WITH_PWR_IDX
#define CONFIG_TXPWR_PG_WITH_PWR_IDX
#endif
#define CONFIG_STOP_RESUME_BCN_BY_TXPAUSE /*to fixed no bcn issue*/
#define CONFIG_STOP_RESUME_BCN_BY_TXPAUSE 0xFF /* all reason */ /*to fixed no bcn issue*/
#define CONFIG_TSF_SYNC
#endif
@@ -193,6 +198,10 @@
#ifndef CONFIG_TXPWR_PG_WITH_PWR_IDX
#define CONFIG_TXPWR_PG_WITH_PWR_IDX
#endif
#ifndef CONFIG_TX_PAUSE_FW_CTRL
#define CONFIG_TX_PAUSE_FW_CTRL
#endif
#endif
#ifdef CONFIG_RTL8703B
@@ -228,6 +237,8 @@
#ifndef CONFIG_TXPWR_PG_WITH_PWR_IDX
#define CONFIG_TXPWR_PG_WITH_PWR_IDX
#endif
#define CONFIG_STOP_RESUME_BCN_BY_TXPAUSE 0x0E /* SCAN | JOIN | CORRECT_TSF */
#endif
#ifdef CONFIG_RTL8188GTV
@@ -251,6 +262,8 @@
#if defined(CONFIG_USB_HCI) && !defined(CONFIG_FW_OFFLOAD_SET_TXPWR_IDX)
#define CONFIG_FW_OFFLOAD_SET_TXPWR_IDX
#endif
#define CONFIG_STOP_RESUME_BCN_BY_TXPAUSE 0x0E /* SCAN | JOIN | CORRECT_TSF */
#endif
#ifdef CONFIG_RTL8822B
@@ -341,6 +354,10 @@
#ifndef CONFIG_TXPWR_PG_WITH_PWR_IDX
#define CONFIG_TXPWR_PG_WITH_PWR_IDX
#endif
#ifndef CONFIG_TX_PAUSE_FW_CTRL
#define CONFIG_TX_PAUSE_FW_CTRL
#endif
#endif /* CONFIG_RTL8822B */
#ifdef CONFIG_RTL8822C
@@ -450,6 +467,11 @@
#define CONFIG_NB_VALUE RTW_NB_CONFIG_WIDTH_10 /* RTW_NB_CONFIG_NONE / RTW_NB_CONFIG_WIDTH_10 / RTW_NB_CONFIG_WIDTH_5 */
#endif
#define CONFIG_SUPPORT_DYNAMIC_TXPWR
#ifndef CONFIG_TX_PAUSE_FW_CTRL
#define CONFIG_TX_PAUSE_FW_CTRL
#endif
#define CONFIG_FW_OFFLOAD_PARAM_INIT
#endif /* CONFIG_RTL8822C */
#ifdef CONFIG_RTL8821C
@@ -501,6 +523,10 @@
#endif
#define CONFIG_BT_EFUSE_MASK
#ifndef CONFIG_TX_PAUSE_FW_CTRL
#define CONFIG_TX_PAUSE_FW_CTRL
#endif
#endif /*CONFIG_RTL8821C*/
#ifdef CONFIG_RTL8710B
@@ -617,6 +643,10 @@
#ifndef CONFIG_TXPWR_PG_WITH_TSSI_OFFSET
#define CONFIG_TXPWR_PG_WITH_TSSI_OFFSET
#endif
#ifndef CONFIG_TX_PAUSE_FW_CTRL
#define CONFIG_TX_PAUSE_FW_CTRL
#endif
#endif /* CONFIG_RTL8814B */
#ifdef CONFIG_RTL8723F
#undef RTL8723F_SUPPORT
@@ -719,5 +749,125 @@
#define CONFIG_BT_EFUSE_MASK
#define CONFIG_WRITE_BCN_LEN_TO_FW
#ifndef CONFIG_TX_PAUSE_FW_CTRL
#define CONFIG_TX_PAUSE_FW_CTRL
#endif
#endif /* CONFIG_RTL8723F */
#ifdef CONFIG_RTL8822E
#undef RTL8822E_SUPPORT
#define RTL8822E_SUPPORT 1
/*#define DBG_LA_MODE*/
#ifndef CONFIG_FW_C2H_PKT
#define CONFIG_FW_C2H_PKT
#endif /* CONFIG_FW_C2H_PKT */
#define RTW_TX_PA_BIAS /* Adjust TX PA Bias from eFuse */
#ifdef CONFIG_WOWLAN
#define CONFIG_GTK_OL
/*#define CONFIG_ARP_KEEP_ALIVE*/
#ifdef CONFIG_GPIO_WAKEUP
#ifndef WAKEUP_GPIO_IDX
#define WAKEUP_GPIO_IDX 6 /* WIFI Chip Side */
#endif /* !WAKEUP_GPIO_IDX */
#endif /* CONFIG_GPIO_WAKEUP */
#endif /* CONFIG_WOWLAN */
#ifdef CONFIG_CONCURRENT_MODE
#define CONFIG_AP_PORT_SWAP
#define CONFIG_FW_MULTI_PORT_SUPPORT
#endif /* CONFIG_CONCURRENT_MODE */
/*
* Beamforming related definition
*/
/* Only support new beamforming mechanism */
#ifdef CONFIG_BEAMFORMING
#define RTW_BEAMFORMING_VERSION_2
#endif /* CONFIG_BEAMFORMING */
#ifdef CONFIG_NO_FW
#ifdef CONFIG_RTW_MAC_HIDDEN_RPT
#undef CONFIG_RTW_MAC_HIDDEN_RPT
#endif
#else
#ifndef CONFIG_RTW_MAC_HIDDEN_RPT
#define CONFIG_RTW_MAC_HIDDEN_RPT
#endif
#endif
#ifndef DBG_RX_DFRAME_RAW_DATA
#define DBG_RX_DFRAME_RAW_DATA
#endif /* DBG_RX_DFRAME_RAW_DATA */
#ifndef RTW_IQK_FW_OFFLOAD
/* #define RTW_IQK_FW_OFFLOAD */ /* need update FW */
#endif /* RTW_IQK_FW_OFFLOAD */
#define CONFIG_ADVANCE_OTA
#ifdef CONFIG_MCC_MODE
#define CONFIG_MCC_MODE_V2
#define CONFIG_MCC_PHYDM_OFFLOAD
#endif /* CONFIG_MCC_MODE */
#if defined(CONFIG_TDLS) && defined(CONFIG_TDLS_CH_SW)
#define CONFIG_TDLS_CH_SW_V2
#endif
#ifndef RTW_CHANNEL_SWITCH_OFFLOAD
#ifdef CONFIG_TDLS_CH_SW_V2
#define RTW_CHANNEL_SWITCH_OFFLOAD
#endif
#endif /* RTW_CHANNEL_SWITCH_OFFLOAD */
#if defined(CONFIG_RTW_MESH) && !defined(RTW_PER_CMD_SUPPORT_FW)
/* Supported since fw v22.1 */
#define RTW_PER_CMD_SUPPORT_FW
#endif /* RTW_PER_CMD_SUPPORT_FW */
#define CONFIG_SUPPORT_FIFO_DUMP
#define CONFIG_HW_P0_TSF_SYNC
#define CONFIG_BCN_RECV_TIME
/*#define CONFIG_TCP_CSUM_OFFLOAD_TX*/
#if defined(CONFIG_TCP_CSUM_OFFLOAD_TX) && !defined(CONFIG_RTW_NETIF_SG)
#define CONFIG_RTW_NETIF_SG
#endif
#define CONFIG_TCP_CSUM_OFFLOAD_RX
#ifdef CONFIG_P2P_PS
#define CONFIG_P2P_PS_NOA_USE_MACID_SLEEP
#endif
#define CONFIG_RTS_FULL_BW
#ifdef CONFIG_LPS
#define CONFIG_LPS_ACK /* Supported after FW v07 */
#define CONFIG_LPS_1T1R /* Supported after FW v07 */
#endif
#define CONFIG_BT_EFUSE_MASK
#ifndef CONFIG_TXPWR_PG_WITH_PWR_IDX
#define CONFIG_TXPWR_PG_WITH_PWR_IDX
#endif
#ifndef CONFIG_TXPWR_PG_WITH_TSSI_OFFSET
#define CONFIG_TXPWR_PG_WITH_TSSI_OFFSET
#endif
/* #define CONFIG_RTL8822E_XCAP_NEW_POLICY */
/*#define CONFIG_NARROWBAND_SUPPORTING*/
#ifdef CONFIG_NARROWBAND_SUPPORTING
#define CONFIG_NB_VALUE RTW_NB_CONFIG_WIDTH_10 /* RTW_NB_CONFIG_NONE / RTW_NB_CONFIG_WIDTH_10 / RTW_NB_CONFIG_WIDTH_5 */
#endif
#define CONFIG_SUPPORT_DYNAMIC_TXPWR
#ifndef CONFIG_TX_PAUSE_FW_CTRL
#define CONFIG_TX_PAUSE_FW_CTRL
#endif
#endif /* CONFIG_RTL8822E */
#endif /*__HAL_IC_CFG_H__*/

View File

@@ -43,6 +43,7 @@ enum _CHIP_TYPE {
RTL8822C,
RTL8814B,
RTL8723F,
RTL8822E,
MAX_CHIP_TYPE
};
@@ -471,7 +472,10 @@ typedef enum _RT_EEPROM_TYPE {
EEPROM_BOOT_EFUSE,
} RT_EEPROM_TYPE, *PRT_EEPROM_TYPE;
#ifdef CONFIG_HAL_PREINIT
#define rtw_set_hal_pre_inited(adapter, set) (adapter_to_dvobj(adapter)->hal_pre_inited = set)
#define rtw_get_hal_pre_inited(adapter) (adapter_to_dvobj(adapter)->hal_pre_inited)
#endif
#define RF_CHANGE_BY_INIT 0
#define RF_CHANGE_BY_IPS BIT28
@@ -531,6 +535,9 @@ typedef enum _HARDWARE_TYPE {
HARDWARE_TYPE_RTL8814BS,
HARDWARE_TYPE_RTL8723FU,
HARDWARE_TYPE_RTL8723FS,
HARDWARE_TYPE_RTL8822EE,
HARDWARE_TYPE_RTL8822EU,
HARDWARE_TYPE_RTL8822ES,
HARDWARE_TYPE_MAX,
} HARDWARE_TYPE;
@@ -668,6 +675,12 @@ typedef enum _HARDWARE_TYPE {
#define IS_HARDWARE_TYPE_8723F(_Adapter) \
(IS_HARDWARE_TYPE_8723FU(_Adapter) || IS_HARDWARE_TYPE_8723FS(_Adapter))
#define IS_HARDWARE_TYPE_8822EE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8822EE)
#define IS_HARDWARE_TYPE_8822EU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8822EU)
#define IS_HARDWARE_TYPE_8822ES(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8822ES)
#define IS_HARDWARE_TYPE_8822E(_Adapter) \
(IS_HARDWARE_TYPE_8822EE(_Adapter) || IS_HARDWARE_TYPE_8822EU(_Adapter) || IS_HARDWARE_TYPE_8822ES(_Adapter))
#define IS_HARDWARE_TYPE_JAGUAR2(_Adapter) \
(IS_HARDWARE_TYPE_8814A(_Adapter) || IS_HARDWARE_TYPE_8821B(_Adapter) || IS_HARDWARE_TYPE_8822B(_Adapter) || IS_HARDWARE_TYPE_8821C(_Adapter))
@@ -675,7 +688,7 @@ typedef enum _HARDWARE_TYPE {
(IS_HARDWARE_TYPE_JAGUAR(_Adapter) || IS_HARDWARE_TYPE_JAGUAR2(_Adapter))
#define IS_HARDWARE_TYPE_JAGUAR3(_Adapter) \
(IS_HARDWARE_TYPE_8814B(_Adapter) || IS_HARDWARE_TYPE_8822C(_Adapter))
(IS_HARDWARE_TYPE_8814B(_Adapter) || IS_HARDWARE_TYPE_8822C(_Adapter) || IS_HARDWARE_TYPE_8822E(_Adapter))
#define IS_HARDWARE_TYPE_JAGUAR3_11N(_Adapter) IS_HARDWARE_TYPE_8723F(_Adapter)
@@ -725,6 +738,7 @@ u8 rtw_hal_rfpath_init(_adapter *adapter);
u8 rtw_hal_trxnss_init(_adapter *adapter);
uint rtw_hal_deinit(_adapter *padapter);
bool rtw_hw_is_init_completed(struct dvobj_priv *dvobj);
void rtw_hal_stop(_adapter *padapter);
u8 rtw_hal_set_hwreg(PADAPTER padapter, u8 variable, u8 *val);
void rtw_hal_get_hwreg(PADAPTER padapter, u8 variable, u8 *val);
@@ -885,8 +899,8 @@ s32 rtw_hal_fw_dl(_adapter *padapter, u8 wowlan);
void rtw_hal_clear_interrupt(_adapter *padapter);
#endif
bool rtw_txpwr_hal_get_pwr_lmt_en(struct dvobj_priv *dvobj);
void rtw_hal_set_tx_power_level(_adapter *adapter, u8 channel);
void rtw_hal_update_txpwr_level(_adapter *adapter);
void rtw_hal_set_txpwr_done(_adapter *adapter);
void rtw_hal_set_tx_power_index(_adapter *adapter, u32 powerindex
, enum rf_path rfpath, u8 rate);
@@ -897,6 +911,20 @@ u8 rtw_hal_get_tx_power_index(_adapter *adapter, enum rf_path rfpath
s8 rtw_hal_get_txpwr_target_extra_bias(_adapter *adapter, enum rf_path rfpath
, RATE_SECTION rs, enum MGN_RATE rate, enum channel_width bw, BAND_TYPE band, u8 cch);
enum tx_pause_rson {
PAUSE_RSON_DFS_CSA, /* allow beacon only */
PAUSE_RSON_DFS_CSA_MG, /* allow beacon and mgnt frame */
PAUSE_RSON_DFS_CAC,
PAUSE_RSON_TOKEN_BASED_XMIT,
PAUSE_RSON_SCAN, /* scan */
PAUSE_RSON_JOIN, /* join */
PAUSE_RSON_CORRECT_TSF, /* correct TSF */
PAUSE_RSON_OTHER_BCN_CTRL, /* CTRL_TX_BCN_BY_OTHERS */
PAUSE_RSON_MAX
};
int rtw_hal_tx_pause(_adapter *adapter, enum tx_pause_rson rson, bool tx_pause);
u8 rtw_hal_ops_check(_adapter *padapter);
#ifdef RTW_HALMAC

View File

@@ -618,8 +618,8 @@
/* RTL8822CU */
#define EEPROM_MAC_ADDR_8822CU 0x157
#define EEPROM_VID_8822CU 0x100
#define EEPROM_PID_8822CU 0x102
#define EEPROM_VID_8822CU 0x150
#define EEPROM_PID_8822CU 0x152
#define EEPROM_USB_OPTIONAL_FUNCTION0_8822CU 0x104
#define EEPROM_USB_MODE_8822CU 0x06
@@ -781,6 +781,55 @@
/* RTL8723FS */
#define EEPROM_MAC_ADDR_8723FS 0x11A
/*
* ====================================================
* EEPROM/Efuse PG Offset for 8822E
* ====================================================
*/
#define EEPROM_TX_PWR_INX_8822E 0x10
#define EEPROM_ChannelPlan_8822E 0xB8
#define EEPROM_XTAL_B9_8822E 0xB9
#define EEPROM_IQK_LCK_8822E 0xBB
#define EEPROM_2G_5G_PA_TYPE_8822E 0xBC
/* PATH A & PATH B */
#define EEPROM_2G_LNA_TYPE_GAIN_SEL_AB_8822E 0xBD
/* PATH C & PATH D */
#define EEPROM_2G_LNA_TYPE_GAIN_SEL_CD_8822E 0xBE
/* PATH A & PATH B */
#define EEPROM_5G_LNA_TYPE_GAIN_SEL_AB_8822E 0xBF
/* PATH C & PATH D */
#define EEPROM_5G_LNA_TYPE_GAIN_SEL_CD_8822E 0xC0
#define EEPROM_RF_BOARD_OPTION_8822E 0xC1
#define EEPROM_FEATURE_OPTION_8822E 0xC2
#define EEPROM_RF_BT_SETTING_8822E 0xC3
#define EEPROM_VERSION_8822E 0xC4
#define EEPROM_CustomID_8822E 0xC5
#define EEPROM_TX_BBSWING_2G_8822E 0xC6
#define EEPROM_TX_PWR_CALIBRATE_RATE_8822E 0xC8
#define EEPROM_RF_ANTENNA_OPT_8822E 0xC9
#define EEPROM_RFE_OPTION_8822E 0xCA
#define EEPROM_COUNTRY_CODE_8822E 0xCB
#define EEPROM_THERMAL_METER_A_8822E 0xD0
#define EEPROM_THERMAL_METER_B_8822E 0xD1
#define EEPROM_XTAL_110_8822E 0x110
#define EEPROM_XTAL_111_8822E 0x111
/* RTL8822EU */
#define EEPROM_MAC_ADDR_8822EU 0x157
#define EEPROM_VID_8822EU 0x150
#define EEPROM_PID_8822EU 0x152
#define EEPROM_USB_OPTIONAL_FUNCTION0_8822EU 0x154
#define EEPROM_USB_MODE_8822EU 0x06
/* RTL8822ES */
#define EEPROM_MAC_ADDR_8822ES 0x16A
/* RTL8822EE */
#define EEPROM_MAC_ADDR_8822EE 0x120
/* ****************************************************
* EEPROM/Efuse Value Type
* **************************************************** */
@@ -854,6 +903,9 @@
#define EEPROM_Default_CrystalCap_B9_8822C 0x3F
#define EEPROM_Default_CrystalCap_110_8822C 0x40
#define EEPROM_Default_CrystalCap_111_8822C 0x40
#define EEPROM_Default_CrystalCap_B9_8822E 0x3F
#define EEPROM_Default_CrystalCap_110_8822E 0x40
#define EEPROM_Default_CrystalCap_111_8822E 0x40
#define EEPROM_Default_CrystalCap_8814B 0x40
#define EEPROM_Default_CrystalFreq 0x0
#define EEPROM_Default_TxPowerLevel_92C 0x22
@@ -986,6 +1038,7 @@ typedef enum _BT_CoType {
BT_RTL8822C = 17,
BT_RTL8814B = 18,
BT_RTL8723F = 19,
BT_RTL8822E = 20,
} BT_CoType, *PBT_CoType;
typedef enum _BT_RadioShared {

View File

@@ -277,8 +277,7 @@ enum NETWORK_TYPE {
WIRELESS_11A = BIT(2), /* tx: ofdm only, rx: ofdm only, hw: ofdm only */
WIRELESS_11_24N = BIT(3), /* tx: MCS only, rx: MCS & cck, hw: MCS & cck */
WIRELESS_11_5N = BIT(4), /* tx: MCS only, rx: MCS & ofdm, hw: ofdm only */
WIRELESS_AUTO = BIT(5),
WIRELESS_11AC = BIT(6),
WIRELESS_11AC = BIT(5),
/* Combination */
/* Type for current wireless mode */
@@ -296,16 +295,20 @@ enum NETWORK_TYPE {
WIRELESS_11ABGN = (WIRELESS_11A | WIRELESS_11B | WIRELESS_11G | WIRELESS_11_24N | WIRELESS_11_5N),
WIRELESS_MODE_24G = (WIRELESS_11B | WIRELESS_11G | WIRELESS_11_24N),
WIRELESS_MODE_5G = (WIRELESS_11A | WIRELESS_11_5N | WIRELESS_11AC),
WIRELESS_MODE_6G = 0, /* TODO */
WIRELESS_MODE_MAX = (WIRELESS_11A | WIRELESS_11B | WIRELESS_11G | WIRELESS_11_24N | WIRELESS_11_5N | WIRELESS_11AC),
};
#define SUPPORTED_24G_NETTYPE_MSK WIRELESS_MODE_24G
#define SUPPORTED_5G_NETTYPE_MSK WIRELESS_MODE_5G
#define SUPPORTED_6G_NETTYPE_MSK WIRELESS_MODE_6G
#define IsLegacyOnly(NetType) ((NetType) == ((NetType) & (WIRELESS_11BG | WIRELESS_11A)))
#define IsSupported24G(NetType) ((NetType) & SUPPORTED_24G_NETTYPE_MSK ? _TRUE : _FALSE)
#define is_supported_24g IsSupported24G
#define is_supported_5g(NetType) ((NetType) & SUPPORTED_5G_NETTYPE_MSK ? _TRUE : _FALSE)
#define is_supported_6g(NetType) ((NetType) & SUPPORTED_6G_NETTYPE_MSK ? _TRUE : _FALSE)
#define IsEnableHWCCK(NetType) IsSupported24G(NetType)
#define IsEnableHWOFDM(NetType) ((NetType) & (WIRELESS_11G | WIRELESS_11_24N | SUPPORTED_5G_NETTYPE_MSK) ? _TRUE : _FALSE)
@@ -314,15 +317,19 @@ enum NETWORK_TYPE {
#define IsSupportedRxOFDM(NetType) IsEnableHWOFDM(NetType)
#define IsSupportedRxHT(NetType) IsEnableHWOFDM(NetType)
#define HT_MASK WIRELESS_11ABGN
#define VHT_MASK (WIRELESS_11AC | HT_MASK)
#define IsSupportedTxCCK(NetType) ((NetType) & (WIRELESS_11B) ? _TRUE : _FALSE)
#define IsSupportedTxOFDM(NetType) ((NetType) & (WIRELESS_11G | WIRELESS_11A) ? _TRUE : _FALSE)
#define is_supported_ht(NetType) ((NetType) & (WIRELESS_11_24N | WIRELESS_11_5N) ? _TRUE : _FALSE)
#define is_highest_support_vht(NetType) (!(NetType & ~VHT_MASK) && ((NetType) & (WIRELESS_11AC)) ? _TRUE : _FALSE)
#define is_supported_vht(NetType) ((NetType) & (WIRELESS_11AC) ? _TRUE : _FALSE)
#define is_supported_ht(NetType) ((NetType) & (WIRELESS_11_24N | WIRELESS_11_5N | WIRELESS_11AC) ? _TRUE : _FALSE)
#define is_highest_support_ht(NetType) (!(NetType & ~HT_MASK) && ((NetType) & (WIRELESS_11_24N | WIRELESS_11_5N)) ? _TRUE : _FALSE)
#define is_supported_he(net_type) 0
typedef struct ieee_param {
u32 cmd;
@@ -644,6 +651,7 @@ struct ieee80211_snap_hdr {
/* Authentication algorithms */
#define WLAN_AUTH_OPEN 0
#define WLAN_AUTH_SHARED_KEY 1
#define WLAN_AUTH_FT 2
#define WLAN_AUTH_SAE 3
#define WLAN_AUTH_CHALLENGE_LEN 128
@@ -813,6 +821,7 @@ struct ieee80211_snap_hdr {
#define IEEE80211_OFDM_RATE_36MB 0x48
#define IEEE80211_OFDM_RATE_48MB 0x60
#define IEEE80211_OFDM_RATE_54MB 0x6C
#define IEEE80211_BSS_MEMBERSHIP_SELECTOR_SAE_H2E_ONLY 0x7B
#define IEEE80211_BASIC_RATE_MASK 0x80
#define IEEE80211_CCK_RATE_1MB_MASK (1<<0)
@@ -1859,6 +1868,14 @@ struct rtw_ieee802_11_elems {
u8 *tbtx_cap;
u8 tbtx_cap_len;
#endif
#ifdef CONFIG_STA_MULTIPLE_BSSID
u8 *mbssid;
u8 mbssid_len;
/* exist in nontransmitted bssid profile */
u8 *non_tx_bssid_cap;
u8 non_tx_bssid_cap_len;
#endif
};
typedef enum { ParseOK = 0, ParseUnknown = 1, ParseFailed = -1 } ParseRes;
@@ -1867,6 +1884,12 @@ ParseRes rtw_ieee802_11_parse_elems(u8 *start, uint len,
struct rtw_ieee802_11_elems *elems,
int show_errors);
#ifdef CONFIG_STA_MULTIPLE_BSSID
ParseRes rtw_ieee802_11_override_elems_by_mbssid(
u8 *mbssid_ie, uint mbssid_ie_len, u8 mbssid_idx, struct rtw_ieee802_11_elems *elems
, int show_errors);
#endif
u8 *rtw_set_fixed_ie(unsigned char *pbuf, unsigned int len, unsigned char *source, unsigned int *frlen);
u8 *rtw_set_ie(u8 *pbuf, sint index, uint len, const u8 *source, uint *frlen);
@@ -1877,7 +1900,10 @@ enum secondary_ch_offset {
};
u8 secondary_ch_offset_to_hal_ch_offset(u8 ch_offset);
u8 hal_ch_offset_to_secondary_ch_offset(u8 ch_offset);
u8 *rtw_set_ie_tpc_report(u8 *buf, u32 *buf_len, u8 tx_power, u8 link_margin);
void rtw_bss_ex_set_tpc_report(WLAN_BSSID_EX *bss, u8 tx_power, u8 link_margin);
u8 *rtw_set_ie_ch_switch(u8 *buf, u32 *buf_len, u8 ch_switch_mode, u8 new_ch, u8 ch_switch_cnt);
u8 *rtw_set_ie_secondary_ch_offset(u8 *buf, u32 *buf_len, u8 secondary_ch_offset);
u8 *rtw_set_ie_mesh_ch_switch_parm(u8 *buf, u32 *buf_len, u8 ttl, u8 flags, u16 reason, u16 precedence);
@@ -1937,7 +1963,7 @@ int rtw_get_sec_ie(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len, u8 *wpa_ie,
u8 rtw_is_wps_ie(u8 *ie_ptr, uint *wps_ielen);
u8 *rtw_get_wps_ie_from_scan_queue(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen, enum bss_type frame_type);
u8 *rtw_get_wps_ie(const u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen);
u8 *rtw_get_wps_ie(const u8 *in_ie, int in_len, u8 *wps_ie, uint *wps_ielen);
u8 *rtw_get_wps_attr(u8 *wps_ie, uint wps_ielen, u16 target_attr_id , u8 *buf_attr, u32 *len_attr);
u8 *rtw_get_wps_attr_content(u8 *wps_ie, uint wps_ielen, u16 target_attr_id , u8 *buf_content, uint *len_content);
@@ -1971,15 +1997,10 @@ void dump_ht_cap_ie_content(void *sel, const u8 *buf, u32 buf_len);
void dump_wps_ie(void *sel, const u8 *ie, u32 ie_len);
#endif /* CONFIG_RTW_DEBUG */
void rtw_ies_get_chbw(u8 *ies, int ies_len, u8 *ch, u8 *bw, u8 *offset, u8 ht, u8 vht);
RTW_FUNC_2G_5G_ONLY void rtw_ies_get_chbw(u8 *ies, int ies_len, u8 *ch, u8 *bw, u8 *offset, u8 ht, u8 vht);
void rtw_bss_get_chbw(WLAN_BSSID_EX *bss, u8 *ch, u8 *bw, u8 *offset, u8 ht, u8 vht);
bool rtw_is_chbw_grouped(u8 ch_a, u8 bw_a, u8 offset_a
, u8 ch_b, u8 bw_b, u8 offset_b);
void rtw_sync_chbw(u8 *req_ch, u8 *req_bw, u8 *req_offset
, u8 *g_ch, u8 *g_bw, u8 *g_offset);
#ifdef CONFIG_P2P
u32 rtw_get_p2p_merged_ies_len(u8 *in_ie, u32 in_len);
int rtw_p2p_merge_ies(u8 *in_ie, u32 in_len, u8 *merge_ie);
@@ -2047,6 +2068,7 @@ u8 rtw_ht_cap_get_tx_nss(u8 *ht_cap);
int rtw_action_frame_parse(const u8 *frame, u32 frame_len, u8 *category, u8 *action);
const char *action_public_str(u8 action);
u8 key_char2num(u8 ch);
u8 key_2char2num(u8 hch, u8 lch);
u8 str_2char2num(u8 hch, u8 lch);
void macstr2num(u8 *dst, u8 *src);

View File

@@ -22,4 +22,21 @@ extern void rtw_report_sec_ie(_adapter *adapter, u8 authmode, u8 *sec_ie);
void rtw_reset_securitypriv(_adapter *adapter);
#ifdef CONFIG_DFS_MASTER
void rtw_os_indicate_radar_detected(struct rf_ctl_t *rfctl, u8 band_idx
, u8 cch, enum channel_width bw);
void rtw_os_indicate_cac_started(struct rf_ctl_t *rfctl, u8 band_idx
, u8 ifbmp, u8 cch, enum channel_width bw);
void rtw_os_indicate_cac_finished(struct rf_ctl_t *rfctl, u8 band_idx
, u8 ifbmp, u8 cch, enum channel_width bw);
void rtw_os_indicate_cac_aborted(struct rf_ctl_t *rfctl, u8 band_idx
, u8 ifbmp, u8 cch, enum channel_width bw);
void rtw_os_force_cac_finished(struct rf_ctl_t *rfctl, u8 band_idx
, u8 ifbmp, u8 cch, enum channel_width bw);
void rtw_os_indicate_nop_finished(struct rf_ctl_t *rfctl, u8 band_idx
, u8 band, u8 cch, enum channel_width bw);
void rtw_os_indicate_nop_started(struct rf_ctl_t *rfctl, u8 band_idx
, u8 band, u8 cch, enum channel_width bw, bool called_on_cmd_thd);
#endif
#endif /* _MLME_OSDEP_H_ */

View File

@@ -133,7 +133,7 @@ void rtw_drv_free_vir_ifaces(struct dvobj_priv *dvobj);
#endif
void rtw_ndev_destructor(_nic_hdl ndev);
#ifdef CONFIG_ARP_KEEP_ALIVE
#ifdef CONFIG_ARP_KEEP_ALIVE_GW
int rtw_gw_addr_query(_adapter *padapter);
#endif

View File

@@ -16,23 +16,24 @@
#define __OSDEP_SERVICE_H_
#define _FAIL 0
#define _SUCCESS 1
#define RTW_RX_HANDLED 2
#define RTW_RFRAME_UNAVAIL 3
#define _FAIL 0
#define _SUCCESS 1
#define RTW_RX_HANDLED 2
#define RTW_RFRAME_UNAVAIL 3
#define RTW_RFRAME_PKT_UNAVAIL 4
#define RTW_RBUF_UNAVAIL 5
#define RTW_RBUF_UNAVAIL 5
#define RTW_RBUF_PKT_UNAVAIL 6
#define RTW_SDIO_READ_PORT_FAIL 7
#define RTW_ALREADY 8
#define RTW_RA_RESOLVING 9
#define RTW_ORI_NO_NEED 10
#define RTW_XBUF_UNAVAIL 11
#define RTW_TX_BALANCE 12
#define RTW_ALREADY 8
#define RTW_RA_RESOLVING 9
#define RTW_ORI_NO_NEED 10
#define RTW_XBUF_UNAVAIL 11
#define RTW_TX_BALANCE 12
#define RTW_TX_WAIT_MORE_FRAME 13
#define RTW_QUEUE_MGMT 14
#define RTW_NOT_SUPPORT 15
#define RTW_BUSY 16
#define RTW_QUEUE_MGMT 14
#define RTW_NOT_SUPPORT 15
#define RTW_BUSY 16
#define RTW_ABORT_LINKING 17
/* #define RTW_STATUS_TIMEDOUT -110 */
@@ -159,6 +160,10 @@ typedef enum mstat_status {
MSTAT_FREE
} MSTAT_STATUS;
#ifdef CONFIG_PCIE_DMA_COHERENT
struct sk_buff *dev_alloc_skb_coherent(struct pci_dev *pdev, unsigned int size);
#endif
#ifdef DBG_MEM_ALLOC
void rtw_mstat_update(const enum mstat_f flags, const MSTAT_STATUS status, u32 sz);
void rtw_mstat_dump(void *sel);
@@ -243,9 +248,6 @@ void *_rtw_zmalloc(u32 sz);
void *_rtw_malloc(u32 sz);
void _rtw_mfree(void *pbuf, u32 sz);
#ifdef CONFIG_PCIE_DMA_COHERENT
struct sk_buff *dev_alloc_skb_coherent(struct pci_dev *pdev, unsigned int size);
#endif
struct sk_buff *_rtw_skb_alloc(u32 sz);
void _rtw_skb_free(struct sk_buff *skb);
struct sk_buff *_rtw_skb_copy(const struct sk_buff *skb);
@@ -370,6 +372,7 @@ extern s32 _rtw_get_passing_time_ms(systime start);
extern s32 _rtw_get_remaining_time_ms(systime end);
extern s32 _rtw_get_time_interval_ms(systime start, systime end);
extern bool _rtw_time_after(systime a, systime b);
extern bool _rtw_time_after_eq(systime a, systime b);
#ifdef DBG_SYSTIME
#define rtw_get_current_time() ({systime __stime = _rtw_get_current_time(); __stime;})
@@ -379,8 +382,10 @@ extern bool _rtw_time_after(systime a, systime b);
#define rtw_get_passing_time_ms(start) ({u32 __ms = _rtw_get_passing_time_ms(start); typecheck(systime, start); __ms;})
#define rtw_get_remaining_time_ms(end) ({u32 __ms = _rtw_get_remaining_time_ms(end); typecheck(systime, end); __ms;})
#define rtw_get_time_interval_ms(start, end) ({u32 __ms = _rtw_get_time_interval_ms(start, end); typecheck(systime, start); typecheck(systime, end); __ms;})
#define rtw_time_after(a,b) ({bool __r = _rtw_time_after(a,b); typecheck(systime, a); typecheck(systime, b); __r;})
#define rtw_time_before(a,b) ({bool __r = _rtw_time_after(b, a); typecheck(systime, a); typecheck(systime, b); __r;})
#define rtw_time_after(a, b) ({bool __r = _rtw_time_after(a, b); typecheck(systime, a); typecheck(systime, b); __r;})
#define rtw_time_after_eq(a, b) ({bool __r = _rtw_time_after_eq(a, b); typecheck(systime, a); typecheck(systime, b); __r;})
#define rtw_time_before(a, b) ({bool __r = _rtw_time_after(b, a); typecheck(systime, a); typecheck(systime, b); __r;})
#define rtw_time_before_eq(a, b) ({bool __r = _rtw_time_after_eq(b, a); typecheck(systime, a); typecheck(systime, b); __r;})
#else
#define rtw_get_current_time() _rtw_get_current_time()
#define rtw_systime_to_ms(stime) _rtw_systime_to_ms(stime)
@@ -389,8 +394,10 @@ extern bool _rtw_time_after(systime a, systime b);
#define rtw_get_passing_time_ms(start) _rtw_get_passing_time_ms(start)
#define rtw_get_remaining_time_ms(end) _rtw_get_remaining_time_ms(end)
#define rtw_get_time_interval_ms(start, end) _rtw_get_time_interval_ms(start, end)
#define rtw_time_after(a,b) _rtw_time_after(a,b)
#define rtw_time_before(a,b) _rtw_time_after(b,a)
#define rtw_time_after(a, b) _rtw_time_after(a, b)
#define rtw_time_after_eq(a, b) _rtw_time_after(a, b)
#define rtw_time_before(a, b) _rtw_time_after(b, a)
#define rtw_time_before_eq(a, b) _rtw_time_after_eq(b, a)
#endif
sysptime rtw_sptime_get(void);
@@ -675,8 +682,49 @@ static inline int largest_bit_64(u64 bitmask)
#define rtw_abs(a) ((a) < 0 ? -(a) : (a))
#define rtw_min(a, b) (((a) > (b)) ? (b) : (a))
#define rtw_max(a, b) (((a) > (b)) ? (a) : (b))
#define rtw_is_range_a_in_b(hi_a, lo_a, hi_b, lo_b) (((hi_a) <= (hi_b)) && ((lo_a) >= (lo_b)))
#define rtw_is_range_overlap(hi_a, lo_a, hi_b, lo_b) (((hi_a) > (lo_b)) && ((lo_a) < (hi_b)))
#define rtw_is_range_empty(hi, lo) ((hi) == (lo))
#define rtw_is_range_a_in_b(a_hi, a_lo, b_hi, b_lo) (((a_hi) <= (b_hi)) && ((a_lo) >= (b_lo)))
#define rtw_is_range_adjacent(a_hi, a_lo, b_hi, b_lo) (((a_hi) == (b_lo)) || ((a_lo) == (b_hi)))
#define rtw_is_range_overlap(a_hi, a_lo, b_hi, b_lo) (((a_hi) > (b_lo)) && ((a_lo) < (b_hi)))
/*
* Combine two ranges if possible (hilo_s is empty or adjcent/overlap with hilo)
* @hi_s, @lo_s: range parameters to store combined range
* @hi, @lo: range parameters to be combined, if combined, set to 0 (empty)
*/
#define rtw_range_combine(hi_s, lo_s, hi, lo) \
do { \
if (rtw_is_range_empty(hi, lo)) {} \
else if (rtw_is_range_empty(hi_s, lo_s)) { \
(hi_s) = (hi); \
(lo_s) = (lo); \
(hi) = 0; (lo) = 0; \
} else if (rtw_is_range_adjacent(hi_s, lo_s, hi, lo) \
|| rtw_is_range_overlap(hi_s, lo_s, hi, lo) \
) { \
(hi_s) = rtw_max(hi_s, hi); \
(lo_s) = rtw_min(lo_s, lo); \
(hi) = 0; (lo) = 0; \
} \
} while (0)
/*
* Merge two ranges (no need to adjcent/overlap with each other)
* @hi_s, @lo_s: range parameters to store merged range
* @hi, @lo: range parameters to be merged
*/
#define rtw_range_merge(hi_s, lo_s, hi, lo) \
do { \
if (rtw_is_range_empty(hi, lo)) {} \
else if (rtw_is_range_empty(hi_s, lo_s)) { \
(hi_s) = (hi); \
(lo_s) = (lo); \
} else { \
(hi_s) = rtw_max(hi_s, hi); \
(lo_s) = rtw_min(lo_s, lo); \
} \
} while (0)
#ifndef MAC_FMT
#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
@@ -812,6 +860,9 @@ extern u32 rtw_random32(void);
(a)[1] = (u8) ((((u64) (val)) >> 8) & 0xff); \
(a)[0] = (u8) (((u64) (val)) & 0xff); \
} while (0)
#define RTW_GET_LE48_TO_U64(a) ((((u64) (a)[5]) << 40) | (((u64) (a)[4]) << 32) | \
(((u64) (a)[3]) << 24) | (((u64) (a)[2]) << 16) | \
(((u64) (a)[1]) << 8) | ((u64) (a)[0]))
void rtw_buf_free(u8 **buf, u32 *buf_len);
void rtw_buf_update(u8 **buf, u32 *buf_len, const u8 *src, u32 src_len);
@@ -886,6 +937,17 @@ int hexstr2bin(const char *hex, u8 *buf, size_t len);
int hwaddr_aton_i(const char *txt, u8 *addr);
/*
* ustrs
* str_0 str_1 str_2 str_3
* | | | | |
* |---------------- ustrs_len ----------------|
*/
#define ustrs_for_each_str(ustrs, ustrs_len, str) \
for ((str) = (ustrs); (str) < (ustrs) + (ustrs_len); (str) += strlen(str) + 1)
void ustrs_add(char **ustrs, int *ustrs_len, const char *str);
/*
* Write formatted output to sized buffer
*/

View File

@@ -691,6 +691,18 @@ static inline void _init_timer(_timer *ptimer, _nic_hdl padapter, void *pfunc, v
callout_init(&ptimer->callout, CALLOUT_MPSAFE);
}
__inline static int _check_timer_is_active(_timer *ptimer)
{
rtw_mtx_lock(NULL);
if (callout_pending(&ptimer->callout)) {
/* callout was reset */
rtw_mtx_unlock(NULL);
return _TRUE;
}
rtw_mtx_unlock(NULL);
return _FALSE;
}
__inline static void _set_timer(_timer *ptimer,u32 delay_time)
{
if (ptimer->function && ptimer->arg) {

View File

@@ -56,6 +56,10 @@
#include <linux/list.h>
#include <linux/vmalloc.h>
#ifdef CONFIG_RTKM
#include "rtw_mem.h"
#endif /* CONFIG_RTKM */
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0))
#include <uapi/linux/sched/types.h>
#endif
@@ -153,6 +157,16 @@
#endif
/*
* MLD related linux kernel patch in
* Android Common Kernel android13-5.15
* refs/heads/common-android13-5.15-2023-04 (5.15.94)
* refs/heads/android13-5.15-lts (5.15.106)
*/
#if (defined(__ANDROID_COMMON_KERNEL__) && (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 94)))
#define CONFIG_MLD_KERNEL_PATCH
#endif
typedef struct semaphore _sema;
typedef spinlock_t _lock;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
@@ -293,27 +307,28 @@ __inline static void _exit_critical_ex(_lock *plock, _irqL *pirqL)
spin_unlock_irqrestore(plock, *pirqL);
}
__inline static void _enter_critical_bh(_lock *plock, _irqL *pirqL)
__inline static void _rtw_spinlock_bh(_lock *plock)
{
spin_lock_bh(plock);
}
__inline static void _exit_critical_bh(_lock *plock, _irqL *pirqL)
__inline static void _rtw_spinunlock_bh(_lock *plock)
{
spin_unlock_bh(plock);
}
__inline static void enter_critical_bh(_lock *plock)
__inline static int _rtw_spin_is_locked(_lock *plock)
{
spin_lock_bh(plock);
return spin_is_locked(plock);
}
__inline static void exit_critical_bh(_lock *plock)
{
spin_unlock_bh(plock);
}
#define enter_critical_bh(plock) _rtw_spinlock_bh(plock)
#define exit_critical_bh(plock) _rtw_spinunlock_bh(plock)
__inline static int _enter_critical_mutex(_mutex *pmutex, _irqL *pirqL)
#define _enter_critical_bh(plock, pirqL) _rtw_spinlock_bh(plock)
#define _exit_critical_bh(plock, pirqL) _rtw_spinunlock_bh(plock)
__inline static int _rtw_mutex_lock_interruptible(_mutex *pmutex)
{
int ret = 0;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
@@ -325,8 +340,7 @@ __inline static int _enter_critical_mutex(_mutex *pmutex, _irqL *pirqL)
return ret;
}
__inline static int _enter_critical_mutex_lock(_mutex *pmutex, _irqL *pirqL)
__inline static int _rtw_mutex_lock(_mutex *pmutex)
{
int ret = 0;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
@@ -337,7 +351,7 @@ __inline static int _enter_critical_mutex_lock(_mutex *pmutex, _irqL *pirqL)
return ret;
}
__inline static void _exit_critical_mutex(_mutex *pmutex, _irqL *pirqL)
__inline static void _rtw_mutex_unlock(_mutex *pmutex)
{
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
mutex_unlock(pmutex);
@@ -346,18 +360,22 @@ __inline static void _exit_critical_mutex(_mutex *pmutex, _irqL *pirqL)
#endif
}
#define _enter_critical_mutex(pmutex, pirqL) _rtw_mutex_lock_interruptible(pmutex)
#define _enter_critical_mutex_lock(pmutex, pirqL) _rtw_mutex_lock(pmutex)
#define _exit_critical_mutex(pmutex, pirqL) _rtw_mutex_unlock(pmutex)
__inline static _list *get_list_head(_queue *queue)
{
return &(queue->queue);
}
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0))
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0))
static inline void timer_hdl(struct timer_list *in_timer)
#else
static inline void timer_hdl(unsigned long cntx)
#endif
{
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0))
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0))
_timer *ptimer = from_timer(ptimer, in_timer, timer);
#else
_timer *ptimer = (_timer *)cntx;
@@ -370,7 +388,7 @@ __inline static void _init_timer(_timer *ptimer, _nic_hdl nic_hdl, void *pfunc,
ptimer->function = pfunc;
ptimer->arg = cntx;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0))
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0))
timer_setup(&ptimer->timer, timer_hdl, 0);
#else
/* setup_timer(ptimer, pfunc,(u32)cntx); */
@@ -380,6 +398,11 @@ __inline static void _init_timer(_timer *ptimer, _nic_hdl nic_hdl, void *pfunc,
#endif
}
__inline static int _check_timer_is_active(_timer *ptimer)
{
return timer_pending(&ptimer->timer);
}
__inline static void _set_timer(_timer *ptimer, u32 delay_time)
{
mod_timer(&ptimer->timer , (jiffies + (delay_time * HZ / 1000)));
@@ -570,7 +593,30 @@ extern struct net_device *rtw_alloc_etherdev(int sizeof_priv);
#define STRUCT_PACKED __attribute__ ((packed))
#ifndef fallthrough
#define fallthrough do {} while (0)
#if __GNUC__ >= 5 || defined(__clang__)
#ifndef __has_attribute
#define __has_attribute(x) 0
#endif
#if __has_attribute(__fallthrough__)
#define fallthrough __attribute__((__fallthrough__))
#endif
#endif
#ifndef fallthrough
#define fallthrough do {} while (0) /* fallthrough */
#endif
#endif
#ifndef static_assert
#define static_assert(expr, ...) __static_assert(expr, ##__VA_ARGS__, #expr)
#define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
#endif
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0))
#define dev_addr_mod(dev, offset, addr, len) _rtw_memcpy(&dev->dev_addr[offset], addr, len)
#endif
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0))
#define dev_addr_mod(dev, offset, addr, len) _rtw_memcpy(&dev->dev_addr[offset], addr, len)
#endif
#endif /* __OSDEP_LINUX_SERVICE_H_ */

View File

@@ -55,6 +55,11 @@
void rtl8814be_set_hal_ops(PADAPTER padapter);
#endif
#ifdef CONFIG_RTL8822E
void rtl8822ee_set_hal_ops(PADAPTER padapter);
#endif
u8 rtw_set_hal_ops(_adapter *padapter);
#endif /* __PCIE_HAL_H__ */

View File

@@ -21,9 +21,9 @@
u32 rtl8188ee_free_desc_ring(_adapter *padapter);
void rtl8188ee_reset_desc_ring(_adapter *padapter);
int rtl8188ee_interrupt(PADAPTER Adapter);
void rtl8188ee_xmit_tasklet(void *priv);
void rtl8188ee_recv_tasklet(void *priv);
void rtl8188ee_prepare_bcn_tasklet(void *priv);
void rtl8188ee_xmit_tasklet(unsigned long priv);
void rtl8188ee_recv_tasklet(unsigned long priv);
void rtl8188ee_prepare_bcn_tasklet(unsigned long priv);
void rtl8188ee_set_intf_ops(struct _io_ops *pops);
void rtw8188ee_unmap_beacon_icf(_adapter *padapter);
#endif
@@ -33,9 +33,9 @@
u32 rtl8812ae_free_desc_ring(_adapter *padapter);
void rtl8812ae_reset_desc_ring(_adapter *padapter);
int rtl8812ae_interrupt(PADAPTER Adapter);
void rtl8812ae_xmit_tasklet(void *priv);
void rtl8812ae_recv_tasklet(void *priv);
void rtl8812ae_prepare_bcn_tasklet(void *priv);
void rtl8812ae_xmit_tasklet(unsigned long priv);
void rtl8812ae_recv_tasklet(unsigned long priv);
void rtl8812ae_prepare_bcn_tasklet(unsigned long priv);
void rtl8812ae_set_intf_ops(struct _io_ops *pops);
void rtw8812ae_unmap_beacon_icf(_adapter *padapter);
#endif
@@ -44,8 +44,8 @@
u32 rtl8192ee_init_desc_ring(_adapter *padapter);
u32 rtl8192ee_free_desc_ring(_adapter *padapter);
void rtl8192ee_reset_desc_ring(_adapter *padapter);
void rtl8192ee_recv_tasklet(void *priv);
void rtl8192ee_prepare_bcn_tasklet(void *priv);
void rtl8192ee_recv_tasklet(unsigned long priv);
void rtl8192ee_prepare_bcn_tasklet(unsigned long priv);
int rtl8192ee_interrupt(PADAPTER Adapter);
void rtl8192ee_set_intf_ops(struct _io_ops *pops);
void rtw8192ee_unmap_beacon_icf(_adapter *padapter);
@@ -56,8 +56,8 @@
u32 rtl8192fe_free_desc_ring(_adapter *padapter);
void rtl8192fe_reset_desc_ring(_adapter *padapter);
int rtl8192fe_interrupt(PADAPTER Adapter);
void rtl8192fe_recv_tasklet(void *priv);
void rtl8192fe_prepare_bcn_tasklet(void *priv);
void rtl8192fe_recv_tasklet(unsigned long priv);
void rtl8192fe_prepare_bcn_tasklet(unsigned long priv);
void rtl8192fe_set_intf_ops(struct _io_ops *pops);
u8 check_tx_desc_resource(_adapter *padapter, int prio);
void rtl8192fe_unmap_beacon_icf(PADAPTER Adapter);
@@ -68,8 +68,8 @@
u32 rtl8723be_free_desc_ring(_adapter *padapter);
void rtl8723be_reset_desc_ring(_adapter *padapter);
int rtl8723be_interrupt(PADAPTER Adapter);
void rtl8723be_recv_tasklet(void *priv);
void rtl8723be_prepare_bcn_tasklet(void *priv);
void rtl8723be_recv_tasklet(unsigned long priv);
void rtl8723be_prepare_bcn_tasklet(unsigned long priv);
void rtl8723be_set_intf_ops(struct _io_ops *pops);
void rtl8723be_unmap_beacon_icf(PADAPTER Adapter);
#endif
@@ -79,8 +79,8 @@
u32 rtl8723de_free_desc_ring(_adapter *padapter);
void rtl8723de_reset_desc_ring(_adapter *padapter);
int rtl8723de_interrupt(PADAPTER Adapter);
void rtl8723de_recv_tasklet(void *priv);
void rtl8723de_prepare_bcn_tasklet(void *priv);
void rtl8723de_recv_tasklet(unsigned long priv);
void rtl8723de_prepare_bcn_tasklet(unsigned long priv);
void rtl8723de_set_intf_ops(struct _io_ops *pops);
u8 check_tx_desc_resource(_adapter *padapter, int prio);
void rtl8723de_unmap_beacon_icf(PADAPTER Adapter);
@@ -91,9 +91,9 @@
u32 rtl8814ae_free_desc_ring(_adapter *padapter);
void rtl8814ae_reset_desc_ring(_adapter *padapter);
int rtl8814ae_interrupt(PADAPTER Adapter);
void rtl8814ae_xmit_tasklet(void *priv);
void rtl8814ae_recv_tasklet(void *priv);
void rtl8814ae_prepare_bcn_tasklet(void *priv);
void rtl8814ae_xmit_tasklet(unsigned long priv);
void rtl8814ae_recv_tasklet(unsigned long priv);
void rtl8814ae_prepare_bcn_tasklet(unsigned long priv);
void rtl8814ae_set_intf_ops(struct _io_ops *pops);
void rtl8814ae_unmap_beacon_icf(PADAPTER Adapter);
#endif
@@ -113,4 +113,9 @@
#ifdef CONFIG_RTL8814B
void rtl8814be_set_intf_ops(struct _io_ops *pops);
#endif
#ifdef CONFIG_RTL8822E
void rtl8822ee_set_intf_ops(struct _io_ops *pops);
#endif
#endif

View File

@@ -281,7 +281,7 @@ void fill_txdesc_force_bmc_camid(struct pkt_attrib *pattrib, struct tx_desc *ptx
s32 rtl8188ee_hal_mgmt_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
#endif
s32 rtl8188ee_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
void rtl8188ee_xmit_tasklet(void *priv);
void rtl8188ee_xmit_tasklet(unsigned long priv);
#endif

View File

@@ -23,8 +23,11 @@
#else
#ifdef CONFIG_PLATFORM_HISILICON
#define MAX_RECVBUF_SZ (16384) /* 16k */
#else
#elif defined(CONFIG_PLATFORM_I386_PC)
#define MAX_RECVBUF_SZ (32768) /* 32k */
#else
/* Avoid the Synopsys USB host receive buffer size limit */
#define MAX_RECVBUF_SZ (20480) /* 20k */
#endif
/* #define MAX_RECVBUF_SZ (20480) */ /* 20K */
/* #define MAX_RECVBUF_SZ (10240) */ /* 10K */

View File

@@ -21,9 +21,7 @@
#ifdef CONFIG_MINIMAL_MEMORY_USAGE
#define MAX_RECVBUF_SZ (4000) /* about 4K */
#else
#ifdef CONFIG_PREALLOC_RX_SKB_BUFFER
#define MAX_RECVBUF_SZ (rtw_rtkm_get_buff_size()) /*depend rtkm*/
#elif defined(CONFIG_PLATFORM_HISILICON)
#ifdef CONFIG_PLATFORM_HISILICON
#define MAX_RECVBUF_SZ (16384) /* 16k */
#else
#define MAX_RECVBUF_SZ (32768) /* 32k */

View File

@@ -379,7 +379,7 @@ void rtl8192e_cal_txdesc_chksum(u8 *ptxdesc);
void rtl8192ee_xmitframe_resume(_adapter *padapter);
s32 rtl8192ee_hal_xmit(PADAPTER padapter, struct xmit_frame *pxmitframe);
s32 rtl8192ee_mgnt_xmit(PADAPTER padapter, struct xmit_frame *pmgntframe);
void rtl8192ee_xmit_tasklet(void *priv);
void rtl8192ee_xmit_tasklet(unsigned long priv);
#endif
#if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)

View File

@@ -529,7 +529,7 @@ void fill_txdesc_bmc_tx_rate(struct pkt_attrib *pattrib, u8 *ptxdesc);
s32 rtl8192fe_hal_mgmt_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
#endif
s32 rtl8192fe_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
void rtl8192fe_xmit_tasklet(void *priv);
void rtl8192fe_xmit_tasklet(unsigned long priv);
#endif
u8 BWMapping_8192F(PADAPTER Adapter, struct pkt_attrib *pattrib);

View File

@@ -333,7 +333,7 @@ void fill_txdesc_bmc_tx_rate(struct pkt_attrib *pattrib, u8 *ptxdesc);
s32 rtl8723be_hal_mgmt_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
#endif
s32 rtl8723be_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
void rtl8723be_xmit_tasklet(void *priv);
void rtl8723be_xmit_tasklet(unsigned long priv);
#endif
u8 BWMapping_8723B(PADAPTER Adapter, struct pkt_attrib *pattrib);

View File

@@ -521,7 +521,7 @@ void fill_txdesc_bmc_tx_rate(struct pkt_attrib *pattrib, u8 *ptxdesc);
s32 rtl8723de_hal_mgmt_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
#endif
s32 rtl8723de_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
void rtl8723de_xmit_tasklet(void *priv);
void rtl8723de_xmit_tasklet(unsigned long priv);
#endif
u8 BWMapping_8723D(PADAPTER Adapter, struct pkt_attrib *pattrib);

View File

@@ -220,11 +220,28 @@
#define RF_0x52 0x52
#define RF_WeLut_Jaguar 0xEF /* rtl8723f_phy.c */
#ifdef CONFIG_FW_HANDLE_TXBCN
/*
* CONFIG_FW_HANDLE_TXBCN
*/
#define REG_ATIMWND REG_ATIMWND_GROUP1_8723F
#define REG_ATIMWND1_V1 REG_ATIMWND_GROUP2_8723F
#define REG_ATIMWND2 REG_ATIMWND_GROUP3_8723F
#define REG_ATIMWND3 REG_ATIMWND_GROUP4_8723F
#define REG_HIQ_NO_LMT_EN REG_HIQ_NO_LMT_EN_V2_8723F
#define REG_MBSSID_CTRL REG_MBID_BCNQ_EN_8723F
/* REG_DWBCN0_CTRL [15:8] BIT_BCN_HEAD [16] BIT_BCN_VALID*/
#define REG_FIFOPAGE_CTRL_2 (REG_DWBCN0_CTRL + 1)
#define BIT_BCN_VALID_V1 BIT(8)
#define BIT_MASK_BCN_HEAD_1_V1 0xff
#endif /* CONFIG_FW_HANDLE_TXBCN */
/* rtw_lps_state_chk() @hal_com.c */
#define BIT_PWRBIT_OW_EN BIT_WMAC_TCR_PWRMGT_CTL_8723F
/*
* General Functions
/*
* General Functions
*/
void rtl8723f_init_hal_spec(PADAPTER); /* hal/hal_com.c */

View File

@@ -40,8 +40,11 @@
#elif defined(CONFIG_PLATFORM_HISILICON)
/* use 16k to workaround for HISILICON platform */
#define MAX_RECVBUF_SZ (16384)
#else
#elif defined(CONFIG_PLATFORM_I386_PC)
#define MAX_RECVBUF_SZ (32768)
#else
/* Avoid the Synopsys USB host receive buffer size limit */
#define MAX_RECVBUF_SZ (20480) /* 20k */
#endif
#else
#define MAX_RECVBUF_SZ (4000)

View File

@@ -19,10 +19,11 @@
#ifndef MAX_RECVBUF_SZ
#ifndef CONFIG_MINIMAL_MEMORY_USAGE
#ifdef CONFIG_PREALLOC_RX_SKB_BUFFER
#define MAX_RECVBUF_SZ (rtw_rtkm_get_buff_size()) /*depend rtkm*/
#else
#ifdef CONFIG_PLATFORM_I386_PC
#define MAX_RECVBUF_SZ (32768) /*32k*/
#else
/* Avoid the Synopsys USB host receive buffer size limit */
#define MAX_RECVBUF_SZ (20480) /* 20k */
#endif
/* #define MAX_RECVBUF_SZ (24576) */ /* 24k */
/* #define MAX_RECVBUF_SZ (20480) */ /* 20K */

View File

@@ -346,7 +346,7 @@ s32 rtl8812ae_mgnt_xmit(PADAPTER padapter, struct xmit_frame *pmgntframe);
s32 rtl8812ae_hal_mgmt_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
#endif
s32 rtl8812ae_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
void rtl8812ae_xmit_tasklet(void *priv);
void rtl8812ae_xmit_tasklet(unsigned long priv);
#ifdef CONFIG_XMIT_THREAD_MODE
s32 rtl8812ae_xmit_buf_handler(_adapter *padapter);

View File

@@ -292,7 +292,7 @@ void fill_txdesc_bmc_tx_rate(struct pkt_attrib *pattrib, u8 *ptxdesc);
s32 rtl8814ae_hal_mgmt_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
#endif
s32 rtl8814ae_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
void rtl8814ae_xmit_tasklet(void *priv);
void rtl8814ae_xmit_tasklet(unsigned long priv);
#ifdef CONFIG_XMIT_THREAD_MODE
s32 rtl8814ae_xmit_buf_handler(_adapter *padapter);
#endif

View File

@@ -46,7 +46,12 @@
/* 8821C - RX FIFO :16K ,for RX agg DMA mode = 16K, Rx agg USB mode could large than 16k*/
/* #define MAX_RECVBUF_SZ (16384 + RX_FIFO_EXPANDING)*/
/* For Max throughput issue , need to use USB AGG mode to replace DMA AGG mode*/
#ifdef CONFIG_PLATFORM_I386_PC
#define MAX_RECVBUF_SZ (32768)
#else
/* Avoid the Synopsys USB host receive buffer size limit */
#define MAX_RECVBUF_SZ (20480) /*20K*/
#endif
/*#define MAX_RECVBUF_SZ_8821C (24576)*/ /* 24k*/
/*#define MAX_RECVBUF_SZ_8821C (20480)*/ /*20K*/

View File

@@ -37,11 +37,14 @@
#ifndef CONFIG_MINIMAL_MEMORY_USAGE
#ifdef CONFIG_PLATFORM_NOVATEK_NT72668
#define MAX_RECVBUF_SZ (15360) /* 15k */
#elif defined(CONFIG_PLATFORM_HISILICON) || defined(CONFIG_PLATFORM_ARM_RTD299X)
#elif defined(CONFIG_PLATFORM_HISILICON) || defined(CONFIG_PLATFORM_ARM_RTD299X)
/* use 16k to workaround for HISILICON and RTK TV platform */
#define MAX_RECVBUF_SZ (16384)
#else
#elif defined(CONFIG_PLATFORM_I386_PC)
#define MAX_RECVBUF_SZ (32768)
#else
/* Avoid the Synopsys USB host receive buffer size limit */
#define MAX_RECVBUF_SZ (20480)
#endif
#else
#define MAX_RECVBUF_SZ (4000)

View File

@@ -37,7 +37,9 @@
#ifdef CONFIG_PCI_HCI
#define MAX_RECVBUF_SZ 12288 /* 12KB */
#else
#ifndef MAX_RECVBUF_SZ
#define MAX_RECVBUF_SZ 24576 /* 24KB, TX: 256KB */
#endif
#endif /* !CONFIG_PCI_HCI */
#endif /* !CONFIG_SUPPORT_TRX_SHARED */

View File

@@ -40,8 +40,11 @@
#elif defined(CONFIG_PLATFORM_HISILICON) || defined(CONFIG_PLATFORM_ARM_RTD299X)
/* use 16k to workaround for HISILICON and RTK TV platform */
#define MAX_RECVBUF_SZ (16384)
#else
#elif defined(CONFIG_PLATFORM_I386_PC)
#define MAX_RECVBUF_SZ (32768)
#else
/* Avoid the Synopsys USB host receive buffer size limit */
#define MAX_RECVBUF_SZ (20480) /* 20k */
#endif
#else
#define MAX_RECVBUF_SZ (4000)

View File

@@ -0,0 +1,248 @@
/******************************************************************************
*
* Copyright(c) 2015 - 2017 Realtek Corporation.
*
* 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.
*
*****************************************************************************/
#ifndef _RTL8822E_HAL_H_
#define _RTL8822E_HAL_H_
#include <osdep_service.h> /* BIT(x) */
#include <drv_types.h> /* PADAPTER */
#include "../hal/halmac/halmac_api.h" /* MAC REG definition */
#ifdef CONFIG_SUPPORT_TRX_SHARED
#define DEF_RECVBUF_SZ 24576 /* RX 24K */
#if (DFT_TRX_SHARE_MODE == 1)
#define RX_FIFO_EXPANDING 40960 /* RX= 24K+40K=64K , TX=256K-40K=216K */
#elif (DFT_TRX_SHARE_MODE == 2)
#define RX_FIFO_EXPANDING 65536 /* RX= 24K+40K+24=88K , TX=256K-40K-24K=192K */
#elif (DFT_TRX_SHARE_MODE ==3)
#define RX_FIFO_EXPANDING 106496 /* RX= 24K+40K+24+40K=128K , TX=256K-40K-24K-40K=152K */
#elif (DFT_TRX_SHARE_MODE ==4)
#define RX_FIFO_EXPANDING 131072 /* RX= 24K+40K+24+40K+24K=128K , TX=256K-40K-24K-40K-24K=128K */
#else
#define RX_FIFO_EXPANDING 0
#endif
#define MAX_RECVBUF_SZ (DEF_RECVBUF_SZ + RX_FIFO_EXPANDING)
#else /* !CONFIG_SUPPORT_TRX_SHARED */
#ifdef CONFIG_PCI_HCI
#define MAX_RECVBUF_SZ 12288 /* 12KB */
#else
#ifndef MAX_RECVBUF_SZ
#define MAX_RECVBUF_SZ 24576 /* 24KB, TX: 256KB */
#endif
#endif /* !CONFIG_PCI_HCI */
#endif /* !CONFIG_SUPPORT_TRX_SHARED */
/*
* MAC Register definition
*/
#define REG_AFE_XTAL_CTRL REG_AFE_CTRL1_8822E /* hal_com.c & phydm */
#define REG_LEDCFG0 REG_LED_CFG_8822E /* rtw_mp.c */
#define MSR (REG_CR_8822E + 2) /* rtw_mp.c & hal_com.c */
#define MSR1 REG_CR_EXT_8822E /* rtw_mp.c & hal_com.c */
#define REG_C2HEVT_MSG_NORMAL 0x1A0 /* hal_com.c */
#define REG_C2HEVT_CLEAR 0x1AF /* hal_com.c */
#define REG_BCN_CTRL_1 REG_BCN_CTRL_CLINT0_8822E /* hal_com.c */
#define REG_WOWLAN_WAKE_REASON 0x01C7 /* hal_com.c */
#define REG_GPIO_PIN_CTRL_2 REG_GPIO_EXT_CTRL_8822E /* hal_com.c */
/* RXERR_RPT, for rtw_mp.c */
#define RXERR_TYPE_OFDM_PPDU 0
#define RXERR_TYPE_OFDM_FALSE_ALARM 2
#define RXERR_TYPE_OFDM_MPDU_OK 0
#define RXERR_TYPE_OFDM_MPDU_FAIL 1
#define RXERR_TYPE_CCK_PPDU 3
#define RXERR_TYPE_CCK_FALSE_ALARM 5
#define RXERR_TYPE_CCK_MPDU_OK 3
#define RXERR_TYPE_CCK_MPDU_FAIL 4
#define RXERR_TYPE_HT_PPDU 8
#define RXERR_TYPE_HT_FALSE_ALARM 9
#define RXERR_TYPE_HT_MPDU_TOTAL 6
#define RXERR_TYPE_HT_MPDU_OK 6
#define RXERR_TYPE_HT_MPDU_FAIL 7
#define RXERR_TYPE_RX_FULL_DROP 10
#define RXERR_COUNTER_MASK BIT_MASK_RPT_COUNTER_8822E
#define RXERR_RPT_RST BIT_RXERR_RPT_RST_8822E
#define _RXERR_RPT_SEL(type) (BIT_RXERR_RPT_SEL_V1_3_0_8822E(type) \
| ((type & 0x10) ? BIT_RXERR_RPT_SEL_V1_4_8822E : 0))
/*
* BB Register definition
*/
#define rPMAC_Reset 0x100 /* hal_mp.c */
#define rFPGA0_RFMOD 0x800
#define rFPGA0_TxInfo 0x804
#define rOFDMCCKEN_Jaguar 0x808 /* hal_mp.c */
#define rFPGA0_TxGainStage 0x80C /* phydm only */
#define rFPGA0_XA_HSSIParameter1 0x820 /* hal_mp.c */
#define rFPGA0_XA_HSSIParameter2 0x824 /* hal_mp.c */
#define rFPGA0_XB_HSSIParameter1 0x828 /* hal_mp.c */
#define rFPGA0_XB_HSSIParameter2 0x82C /* hal_mp.c */
#define rTxAGC_B_Rate18_06 0x830
#define rTxAGC_B_Rate54_24 0x834
#define rTxAGC_B_CCK1_55_Mcs32 0x838
#define rCCAonSec_Jaguar 0x838 /* hal_mp.c */
#define rTxAGC_B_Mcs03_Mcs00 0x83C
#define rTxAGC_B_Mcs07_Mcs04 0x848
#define rTxAGC_B_Mcs11_Mcs08 0x84C
#define rFPGA0_XA_RFInterfaceOE 0x860
#define rFPGA0_XB_RFInterfaceOE 0x864
#define rTxAGC_B_Mcs15_Mcs12 0x868
#define rTxAGC_B_CCK11_A_CCK2_11 0x86C
#define rFPGA0_XAB_RFInterfaceSW 0x870
#define rFPGA0_XAB_RFParameter 0x878
#define rFPGA0_AnalogParameter4 0x88C /* hal_mp.c & phydm */
#define rFPGA0_XB_LSSIReadBack 0x8A4 /* phydm */
#define rHSSIRead_Jaguar 0x8B0 /* RF read addr (rtl8822e_phy.c) */
#define rC_TxScale_Jaguar2 0x181C /* Pah_C TX scaling factor (hal_mp.c) */
#define rC_IGI_Jaguar2 0x1850 /* Initial Gain for path-C (hal_mp.c) */
#define rFPGA1_TxInfo 0x90C /* hal_mp.c */
#define rSingleTone_ContTx_Jaguar 0x914 /* hal_mp.c */
/* TX BeamForming */
#define REG_BB_TX_PATH_SEL_1_8822E 0x93C /* rtl8822e_phy.c */
#define REG_BB_TX_PATH_SEL_2_8822E 0x940 /* rtl8822e_phy.c */
/* TX BeamForming */
#define REG_BB_TXBF_ANT_SET_BF1_8822E 0x19AC /* rtl8822e_phy.c */
#define REG_BB_TXBF_ANT_SET_BF0_8822E 0x19B4 /* rtl8822e_phy.c */
#define rCCK0_System 0xA00
#define rCCK0_AFESetting 0xA04
#define rCCK0_DSPParameter2 0xA1C
#define rCCK0_TxFilter1 0xA20
#define rCCK0_TxFilter2 0xA24
#define rCCK0_DebugPort 0xA28
#define rCCK0_FalseAlarmReport 0xA2C
#define rD_TxScale_Jaguar2 0x1A1C /* Path_D TX scaling factor (hal_mp.c) */
#define rD_IGI_Jaguar2 0x1A50 /* Initial Gain for path-D (hal_mp.c) */
#define rOFDM0_TRxPathEnable 0xC04
#define rOFDM0_TRMuxPar 0xC08
#define rA_TxScale_Jaguar 0xC1C /* Pah_A TX scaling factor (hal_mp.c) */
#define rOFDM0_RxDetector1 0xC30 /* rtw_mp.c */
#define rOFDM0_ECCAThreshold 0xC4C /* phydm only */
#define rOFDM0_XAAGCCore1 0xC50 /* phydm only */
#define rA_IGI_Jaguar 0xC50 /* Initial Gain for path-A (hal_mp.c) */
#define rOFDM0_XBAGCCore1 0xC58 /* phydm only */
#define rOFDM0_XATxIQImbalance 0xC80 /* phydm only */
#define rA_LSSIWrite_Jaguar 0xC90 /* RF write addr, LSSI Parameter (rtl8822b_phy.c) */
#define rOFDM1_LSTF 0xD00
#define rOFDM1_TRxPathEnable 0xD04 /* hal_mp.c */
#define rA_PIRead_Jaguar 0xD04 /* RF readback with PI (rtl8822e_phy.c) */
#define rA_SIRead_Jaguar 0xD08 /* RF readback with SI (rtl8822e_phy.c) */
#define rB_PIRead_Jaguar 0xD44 /* RF readback with PI (rtl8822e_phy.c) */
#define rB_SIRead_Jaguar 0xD48 /* RF readback with SI (rtl8822e_phy.c) */
#define rTxAGC_A_Rate18_06 0xE00
#define rTxAGC_A_Rate54_24 0xE04
#define rTxAGC_A_CCK1_Mcs32 0xE08
#define rTxAGC_A_Mcs03_Mcs00 0xE10
#define rTxAGC_A_Mcs07_Mcs04 0xE14
#define rTxAGC_A_Mcs11_Mcs08 0xE18
#define rTxAGC_A_Mcs15_Mcs12 0xE1C
#define rB_TxScale_Jaguar 0xE1C /* Path_B TX scaling factor (hal_mp.c) */
#define rB_IGI_Jaguar 0xE50 /* Initial Gain for path-B (hal_mp.c) */
#define rB_LSSIWrite_Jaguar 0xE90 /* RF write addr, LSSI Parameter (rtl8822b_phy.c) */
/* RFE */
#define rA_RFE_Pinmux_Jaguar 0xCB0 /* hal_mp.c */
#define rB_RFE_Pinmux_Jaguar 0xEB0 /* Path_B RFE control pinmux */
#define rA_RFE_Inv_Jaguar 0xCB4 /* Path_A RFE cotrol */
#define rB_RFE_Inv_Jaguar 0xEB4 /* Path_B RFE control */
#define rA_RFE_Jaguar 0xCB8 /* Path_A RFE cotrol */
#define rB_RFE_Jaguar 0xEB8 /* Path_B RFE control */
#define rA_RFE_Inverse_Jaguar 0xCBC /* Path_A RFE control inverse */
#define rB_RFE_Inverse_Jaguar 0xEBC /* Path_B RFE control inverse */
#define r_ANTSEL_SW_Jaguar 0x900 /* ANTSEL SW Control */
#define bMask_RFEInv_Jaguar 0x3FF00000
#define bMask_AntselPathFollow_Jaguar 0x00030000
#define rC_RFE_Pinmux_Jaguar 0x18B4 /* Path_C RFE cotrol pinmux*/
#define rD_RFE_Pinmux_Jaguar 0x1AB4 /* Path_D RFE cotrol pinmux*/
#define rA_RFE_Sel_Jaguar2 0x1990
/* Page1(0x100) */
#define bBBResetB 0x100
/* Page8(0x800) */
#define bCCKEn 0x1000000
#define bOFDMEn 0x2000000
/* Reg 0x80C rFPGA0_TxGainStage */
#define bXBTxAGC 0xF00
#define bXCTxAGC 0xF000
#define bXDTxAGC 0xF0000
/* PageA(0xA00) */
#define bCCKBBMode 0x3
#define bCCKScramble 0x8
#define bCCKTxRate 0x3000
/* General */
#define bMaskByte0 0xFF /* mp, rtw_odm.c & phydm */
#define bMaskByte1 0xFF00 /* hal_mp.c & phydm */
#define bMaskByte2 0xFF0000 /* hal_mp.c & phydm */
#define bMaskByte3 0xFF000000 /* hal_mp.c & phydm */
#define bMaskHWord 0xFFFF0000 /* hal_com.c, rtw_mp.c */
#define bMaskLWord 0x0000FFFF /* mp, hal_com.c & phydm */
#define bMaskDWord 0xFFFFFFFF /* mp, hal, rtw_odm.c & phydm */
#define bEnable 0x1 /* hal_mp.c, rtw_mp.c */
#define bDisable 0x0 /* rtw_mp.c */
#define MAX_STALL_TIME 50 /* unit: us, hal_com_phycfg.c */
#define Rx_Smooth_Factor 20 /* phydm only */
/*
* RF Register definition
*/
#define RF_AC 0x00
#define RF_AC_Jaguar 0x00 /* hal_mp.c */
#define RF_CHNLBW 0x18 /* rtl8822e_phy.c */
#define RF_ModeTableAddr 0x30 /* rtl8822e_phy.c */
#define RF_ModeTableData0 0x31 /* rtl8822e_phy.c */
#define RF_ModeTableData1 0x32 /* rtl8822e_phy.c */
#define RF_0x52 0x52
#define RF_WeLut_Jaguar 0xEF /* rtl8822e_phy.c */
/* rtw_lps_state_chk()@hal_com.c */
#define BIT_PWRBIT_OW_EN BIT_WMAC_TCRPWRMGT_HWDATA_EN_8822E
/* General Functions */
void rtl8822e_init_hal_spec(PADAPTER); /* hal/hal_com.c */
#ifdef CONFIG_MP_INCLUDED
/* MP Functions */
#include <rtw_mp.h> /* struct mp_priv */
void rtl8822e_prepare_mp_txdesc(PADAPTER, struct mp_priv *); /* rtw_mp.c */
void rtl8822e_mp_config_rfpath(PADAPTER); /* hal_mp.c */
#endif
void hw_var_set_dl_rsvd_page(PADAPTER adapter, u8 mstatus);
#ifdef CONFIG_USB_HCI
#include <rtl8822eu_hal.h>
#elif defined(CONFIG_SDIO_HCI)
#include <rtl8822es_hal.h>
#elif defined(CONFIG_PCI_HCI)
#include <rtl8822ee_hal.h>
#endif
#endif /* _RTL8822E_HAL_H_ */

View File

@@ -0,0 +1,27 @@
/******************************************************************************
*
* Copyright(c) 2015 - 2017 Realtek Corporation.
*
* 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.
*
*****************************************************************************/
#ifndef _RTL8822EE_HAL_H_
#define _RTL8822EE_HAL_H_
#include <drv_types.h> /* PADAPTER */
#define RT_BCN_INT_MASKS (BIT20 | BIT25 | BIT26 | BIT16)
/* rtl8822ee_ops.c */
void UpdateInterruptMask8822EE(PADAPTER, u32 AddMSR, u32 AddMSR1, u32 RemoveMSR, u32 RemoveMSR1);
u16 get_txbd_rw_reg(u16 q_idx);
#endif /* _RTL8822EE_HAL_H_ */

View File

@@ -0,0 +1,31 @@
/******************************************************************************
*
* Copyright(c) 2015 - 2017 Realtek Corporation.
*
* 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.
*
*****************************************************************************/
#ifndef _RTL8822ES_HAL_H_
#define _RTL8822ES_HAL_H_
#include <drv_types.h> /* PADAPTER */
/* rtl8822es_ops.c */
void rtl8822es_set_hal_ops(PADAPTER);
#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
void rtl8822es_disable_interrupt_but_cpwm2(PADAPTER adapter);
#endif
/* rtl8822es_xmit.c */
s32 rtl8822es_dequeue_writeport(PADAPTER);
#define _dequeue_writeport(a) rtl8822es_dequeue_writeport(a)
#endif /* _RTL8822ES_HAL_H_ */

View File

@@ -0,0 +1,64 @@
/******************************************************************************
*
* Copyright(c) 2015 - 2017 Realtek Corporation.
*
* 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.
*
*****************************************************************************/
#ifndef _RTL8822EU_HAL_H_
#define _RTL8822EU_HAL_H_
#ifdef CONFIG_USB_HCI
#include <drv_types.h> /* PADAPTER */
#ifdef CONFIG_USB_HCI
#ifdef USB_PACKET_OFFSET_SZ
#define PACKET_OFFSET_SZ (USB_PACKET_OFFSET_SZ)
#else
#define PACKET_OFFSET_SZ (8)
#endif
#define TXDESC_OFFSET (TXDESC_SIZE + PACKET_OFFSET_SZ)
#endif
/* undefine MAX_RECVBUF_SZ from rtl8822c_hal.h */
#ifdef MAX_RECVBUF_SZ
#undef MAX_RECVBUF_SZ
#endif
/* recv_buffer must be large than usb agg size */
#ifndef MAX_RECVBUF_SZ
#ifndef CONFIG_MINIMAL_MEMORY_USAGE
#ifdef CONFIG_PLATFORM_NOVATEK_NT72668
#define MAX_RECVBUF_SZ (15360) /* 15k */
#elif defined(CONFIG_PLATFORM_HISILICON) || defined(CONFIG_PLATFORM_ARM_RTD299X)
/* use 16k to workaround for HISILICON and RTK TV platform */
#define MAX_RECVBUF_SZ (16384)
#elif defined(CONFIG_PLATFORM_I386_PC)
#define MAX_RECVBUF_SZ (32768)
#else
/* Avoid the Synopsys USB host receive buffer size limit */
#define MAX_RECVBUF_SZ (20480)
#endif
#else
#define MAX_RECVBUF_SZ (4000)
#endif
#endif /* !MAX_RECVBUF_SZ */
/* rtl8822eu_ops.c */
void rtl8822eu_set_hal_ops(PADAPTER padapter);
void rtl8822eu_set_hw_type(struct dvobj_priv *pdvobj);
/* rtl8822eu_io.c */
void rtl8822eu_set_intf_ops(struct _io_ops *pops);
#endif /* CONFIG_USB_HCI */
#endif /* _RTL8822EU_HAL_H_ */

View File

@@ -71,13 +71,13 @@ void bss_cap_update_on_sta_join(_adapter *padapter, struct sta_info *psta);
u8 bss_cap_update_on_sta_leave(_adapter *padapter, struct sta_info *psta);
void sta_info_update(_adapter *padapter, struct sta_info *psta);
void ap_sta_info_defer_update(_adapter *padapter, struct sta_info *psta);
u8 ap_free_sta(_adapter *padapter, struct sta_info *psta, bool active, u16 reason, bool enqueue);
u8 ap_free_sta(_adapter *padapter, struct sta_info *psta, bool active, u8 subtype, u16 reason, bool enqueue);
int rtw_sta_flush(_adapter *padapter, bool enqueue);
int rtw_ap_inform_ch_switch(_adapter *padapter, u8 new_ch, u8 ch_offset);
void start_ap_mode(_adapter *padapter);
void stop_ap_mode(_adapter *padapter);
#endif
void rtw_csa_update_clients_ramask(_adapter *adapter);
void rtw_ap_update_bss_chbw(_adapter *adapter, WLAN_BSSID_EX *bss, u8 ch, u8 bw, u8 offset);
u8 rtw_ap_chbw_decision(_adapter *adapter, u8 ifbmp, u8 excl_ifbmp
, s16 req_ch, s8 req_bw, s8 req_offset, u8 *ch, u8 *bw, u8 *offset, u8 *chbw_allow, bool *set_u_ch);

View File

@@ -384,12 +384,12 @@ void rtw_btcoex_SpecialPacketNotify(PADAPTER, u8 pktType);
void rtw_btcoex_IQKNotify(PADAPTER padapter, u8 state);
void rtw_btcoex_WLRFKNotify(PADAPTER padapter, u8 path, u8 type, u8 state);
void rtw_btcoex_BtInfoNotify(PADAPTER, u8 length, u8 *tmpBuf);
void rtw_btcoex_le_audio_info_notify(PADAPTER padapter, u8 length, u8 *tmpBuf);
void rtw_btcoex_BtMpRptNotify(PADAPTER, u8 length, u8 *tmpBuf);
void rtw_btcoex_SuspendNotify(PADAPTER, u8 state);
void rtw_btcoex_HaltNotify(PADAPTER);
void rtw_btcoex_switchband_notify(u8 under_scan, u8 band_type);
void rtw_btcoex_WlFwDbgInfoNotify(PADAPTER padapter, u8* tmpBuf, u8 length);
void rtw_btcoex_rx_rate_change_notify(PADAPTER padapter, u8 is_data_frame, u8 rate_id);
void rtw_btcoex_SwitchBtTRxMask(PADAPTER);
void rtw_btcoex_Switch(PADAPTER, u8 enable);
u8 rtw_btcoex_IsBtDisabled(PADAPTER);

View File

@@ -0,0 +1,30 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2020 Realtek Corporation.
*
* 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.
*
*****************************************************************************/
#ifndef _RTW_CFG_H_
#define _RTW_CFG_H_
uint rtw_load_registry(_adapter *adapter);
#define RTW_ADAPTIVITY_EN_DISABLE 0
#define RTW_ADAPTIVITY_EN_ENABLE 1
#define RTW_ADAPTIVITY_EN_AUTO 2
#define RTW_ADAPTIVITY_MODE_NORMAL 0
#define RTW_ADAPTIVITY_MODE_CARRIER_SENSE 1
void rtw_cfg_adaptivity_config_msg(void *sel, _adapter *adapter);
bool rtw_cfg_adaptivity_needed(_adapter *adapter);
#endif /*_RTW_CFG_H_*/

View File

@@ -15,17 +15,10 @@
#ifndef __RTW_CMD_H_
#define __RTW_CMD_H_
#define C2H_MEM_SZ (16*1024)
#define FREE_CMDOBJ_SZ 128
#define MAX_CMDSZ 1536
#define MAX_RSPSZ 512
#define MAX_EVTSZ 1024
#define CMDBUFF_ALIGN_SZ 512
struct cmd_obj {
_adapter *padapter;
u16 cmdcode;
@@ -35,11 +28,21 @@ struct cmd_obj {
u8 *rsp;
u32 rspsz;
struct submit_ctx *sctx;
/*
* buffer allocated by handler/callback in cmd_thread, will
* 1. got and accessed by caller or
* 2. freed by .sctx_rsp_buf_free when caller timeout
*/
void *sctx_rsp_buf;
/* set to function to free sctx_rsp_buf when caller is timeout */
void (*sctx_rsp_buf_free)(void *);
u8 no_io;
/* _sema cmd_sem; */
_list list;
};
#define CMD_OBJ_SET_HWBAND(cmdobj, hwband) do { /* dummy macro because this driver has only one hwband */ } while (0)
/* cmd flags */
enum {
RTW_CMDF_DIRECTLY = BIT0,
@@ -53,15 +56,10 @@ struct cmd_priv {
_queue cmd_queue;
u8 cmd_seq;
u8 *cmd_buf; /* shall be non-paged, and 4 bytes aligned */
u8 *cmd_allocated_buf;
u8 *rsp_buf; /* shall be non-paged, and 4 bytes aligned */
u8 *rsp_allocated_buf;
u32 cmd_issued_cnt;
u32 cmd_done_cnt;
u32 rsp_cnt;
ATOMIC_T cmdthd_running;
/* u8 cmdthd_running; */
_adapter *padapter;
_mutex sctx_mutex;
@@ -179,7 +177,6 @@ extern void rtw_free_cmd_priv(struct cmd_priv *pcmdpriv);
extern u32 rtw_init_evt_priv(struct evt_priv *pevtpriv);
extern void rtw_free_evt_priv(struct evt_priv *pevtpriv);
extern void rtw_cmd_clr_isr(struct cmd_priv *pcmdpriv);
extern void rtw_evt_notify_isr(struct evt_priv *pevtpriv);
#ifdef CONFIG_P2P
u8 p2p_protocol_wk_cmd(_adapter *padapter, int intCmdType);
@@ -217,6 +214,7 @@ enum rtw_drvextra_cmd_id {
NONE_WK_CID,
STA_MSTATUS_RPT_WK_CID,
DYNAMIC_CHK_WK_CID,
DYNAMIC_CHK_IDLE_WK_CID,
DM_CTRL_WK_CID,
PBC_POLLING_WK_CID,
POWER_SAVING_CTRL_WK_CID,/* IPS,AUTOSuspend */
@@ -263,6 +261,13 @@ enum rtw_drvextra_cmd_id {
MAX_WK_CID
};
enum IPS_CTRL_TYPE {
IPS_CTRL_ENTER = 0,
IPS_CTRL_LEAVE_SET_MODE = 1,
IPS_CTRL_LEAVE_SRESET = 2,
IPS_CTRL_MAX,
};
enum LPS_CTRL_TYPE {
LPS_CTRL_SCAN = 0,
LPS_CTRL_JOINBSS = 1,
@@ -539,31 +544,6 @@ struct set_ch_parm {
u8 ch_offset;
};
struct SetChannelPlan_param {
enum regd_src_t regd_src;
enum rtw_regd_inr inr;
struct country_chplan country_ent;
bool has_country;
u8 channel_plan;
#if CONFIG_IEEE80211_BAND_6GHZ
u8 channel_plan_6g;
#endif
#ifdef CONFIG_80211D
/* used for regd_src == RTK_PRIV and inr == COUNTRY_IE */
struct country_ie_slave_record cisr;
bool has_cisr;
#endif
#ifdef PLATFORM_LINUX
bool rtnl_lock_needed;
#endif
};
struct get_channel_plan_param {
struct get_chplan_resp **chplan;
};
struct LedBlink_param {
void *pLed;
};
@@ -588,6 +568,10 @@ struct reqtxrpt_param {
u8 macid;
};
struct bcn_control_param {
u8 control; /* 0: stop beaon, 1: resume beacon */
};
#define GEN_CMD_CODE(cmd) cmd ## _CMD_
@@ -615,6 +599,7 @@ Result:
#define H2C_ENQ_HEAD 0x08
#define H2C_ENQ_HEAD_FAIL 0x09
#define H2C_CMD_FAIL 0x0A
#define H2C_MEMORY 0x0B
void rtw_init_sitesurvey_parm(_adapter *padapter, struct sitesurvey_parm *pparm);
u8 rtw_sitesurvey_cmd(_adapter *padapter, struct sitesurvey_parm *pparm);
@@ -623,10 +608,11 @@ u8 rtw_create_ibss_cmd(_adapter *adapter, int flags);
u8 rtw_startbss_cmd(_adapter *adapter, int flags);
#endif
#define REQ_CH_NONE -1
#define REQ_BAND_NONE -1
#define REQ_CH_NONE -1
#define REQ_CH_INT_INFO -2
#define REQ_BW_NONE -1
#define REQ_BW_ORI -2
#define REQ_BW_NONE -1
#define REQ_BW_ORI -2
#define REQ_OFFSET_NONE -1
struct sta_info;
@@ -638,6 +624,8 @@ u8 rtw_disassoc_cmd(_adapter *padapter, u32 deauth_timeout_ms, int flags);
#ifdef CONFIG_AP_MODE
u8 rtw_change_bss_chbw_cmd(_adapter *adapter, int flags
, u8 ifbmp, u8 excl_ifbmp, s16 req_ch, s8 req_bw, s8 req_offset);
u8 rtw_change_bss_bchbw_cmd(_adapter *adapter, int flags
, u32 iflbmp, u32 excl_iflbmp, s8 req_band, s16 req_ch, s8 req_bw, s8 req_offset);
u8 rtw_stop_ap_cmd(_adapter *adapter, u8 flags);
#endif
#ifdef CONFIG_RTW_TOKEN_BASED_XMIT
@@ -651,6 +639,7 @@ extern u8 rtw_addbarsp_cmd(_adapter *padapter, u8 *addr, u16 tid, u8 status, u8
extern u8 rtw_reset_securitypriv_cmd(_adapter *padapter);
extern u8 rtw_free_assoc_resources_cmd(_adapter *padapter, u8 lock_scanned_queue, int flags);
extern u8 rtw_dynamic_chk_wk_cmd(_adapter *adapter);
u8 rtw_dynamic_chk_idle_wk_cmd(struct dvobj_priv *dvobj, bool direct);
u8 rtw_lps_ctrl_wk_cmd(_adapter *padapter, u8 lps_ctrl_type, u8 flags);
u8 rtw_lps_ctrl_leave_set_level_cmd(_adapter *adapter, u8 lps_level, u8 flags);
@@ -668,9 +657,9 @@ u8 rtw_rpt_timer_cfg_cmd(_adapter *padapter, u16 minRptTime);
extern u8 rtw_antenna_select_cmd(_adapter *padapter, u8 antenna, u8 enqueue);
#endif
u8 rtw_dm_ra_mask_wk_cmd(_adapter *padapter, u8 *psta);
u8 rtw_dm_ra_mask_wk_cmd(_adapter *padapter, struct sta_info *psta);
extern u8 rtw_ps_cmd(_adapter *padapter);
u8 rtw_ips_ctrl_wk_cmd(_adapter *padapter, u8 ips_ctrl_type, u8 ips_mode, u8 flags);
#if CONFIG_DFS
void rtw_dfs_ch_switch_hdl(struct dvobj_priv *dvobj);
@@ -678,12 +667,6 @@ void rtw_dfs_ch_switch_hdl(struct dvobj_priv *dvobj);
#ifdef CONFIG_AP_MODE
u8 rtw_chk_hi_queue_cmd(_adapter *padapter);
#ifdef CONFIG_DFS_MASTER
u8 rtw_dfs_rd_cmd(_adapter *adapter, bool enqueue);
void rtw_dfs_rd_timer_hdl(void *ctx);
void rtw_dfs_rd_en_decision(_adapter *adapter, u8 mlme_act, u8 excl_ifbmp);
u8 rtw_dfs_rd_en_decision_cmd(_adapter *adapter);
#endif /* CONFIG_DFS_MASTER */
#endif /* CONFIG_AP_MODE */
#ifdef CONFIG_BT_COEXIST
@@ -699,20 +682,14 @@ u8 rtw_periodic_tsf_update_end_cmd(_adapter *adapter);
u8 rtw_set_chbw_cmd(_adapter *padapter, u8 ch, u8 bw, u8 ch_offset, u8 flags);
u8 rtw_iqk_cmd(_adapter *padapter, u8 flags);
u8 rtw_set_chplan_cmd(_adapter *adapter, int flags, u8 chplan, u8 chplan_6g, enum rtw_regd_inr inr);
u8 rtw_set_country_cmd(_adapter *adapter, int flags, const char *country_code, enum rtw_regd_inr inr);
#ifdef CONFIG_REGD_SRC_FROM_OS
u8 rtw_sync_os_regd_cmd(_adapter *adapter, int flags, const char *country_code, u8 dfs_region, enum rtw_regd_inr inr);
#endif
u8 rtw_get_chplan_cmd(_adapter *adapter, int flags, struct get_chplan_resp **chplan);
#ifdef CONFIG_80211D
u8 rtw_apply_recv_country_ie_cmd(_adapter *adapter, int flags, BAND_TYPE band,u8 opch, const u8 *country_ie);
#endif
#ifdef CONFIG_RTW_LED_HANDLED_BY_CMD_THREAD
extern u8 rtw_led_blink_cmd(_adapter *padapter, void *pLed);
#endif
extern u8 rtw_set_csa_cmd(_adapter *adapter);
extern u8 rtw_set_ap_csa_cmd(_adapter *adapter);
u8 bcn_control_cmd(_adapter *adapter, u8 control);
u8 rtw_csa_sta_update_cap_cmd(_adapter *adapter);
extern u8 rtw_tdls_cmd(_adapter *padapter, u8 *addr, u8 option);
u8 rtw_mp_cmd(_adapter *adapter, u8 mp_cmd_id, u8 flags);
@@ -783,7 +760,6 @@ u8 rtw_drvextra_cmd_hdl(_adapter *padapter, unsigned char *pbuf);
extern void rtw_survey_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd);
extern void rtw_disassoc_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd);
extern void rtw_joinbss_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd);
void rtw_create_ibss_post_hdl(_adapter *padapter, int status);
extern void rtw_readtssi_cmdrsp_callback(_adapter *padapter, struct cmd_obj *pcmd);
@@ -818,6 +794,8 @@ enum rtw_cmd_id {
CMD_WRITE_BCN_LEN, /*24 */
CMD_AP_CHANSWITCH, /* 25 AP switch channel */
CMD_REQ_TXRPT, /* 26 */
CMD_BCN_CONTROL, /* 27, stop/resume beacon */
CMD_STA_CSA_UPDATE_CAP, /* 28, update capabilities of STA mode */
CMD_ID_MAX
};

View File

@@ -1,6 +1,6 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2019 Realtek Corporation.
* Copyright(c) 2007 - 2021 Realtek Corporation.
*
* 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
@@ -117,7 +117,7 @@ extern uint rtw_drv_log_level;
#ifdef DBG_CPU_INFO
#define CPU_INFO_FMT "[%u] "
#define CPU_INFO_ARG get_cpu()
#define CPU_INFO_ARG task_cpu(current)
#else /* !DBG_CPU_INFO */
#define CPU_INFO_FMT "%s"
#define CPU_INFO_ARG ""
@@ -295,7 +295,7 @@ void bb_reg_dump(void *sel, _adapter *adapter);
void bb_reg_dump_ex(void *sel, _adapter *adapter);
void rf_reg_dump(void *sel, _adapter *adapter);
void rtw_sink_rtp_seq_dbg(_adapter *adapter, u8 *ehdr_pos);
void rtw_sink_rtp_seq_dbg(_adapter *adapter, u8 *ehdr_pos, u16 wifi_seq);
struct sta_info;
void sta_rx_reorder_ctl_dump(void *sel, struct sta_info *sta);
@@ -540,6 +540,27 @@ int proc_get_wakeup_reason(struct seq_file *m, void *v);
#ifdef CONFIG_WOW_KEEP_ALIVE_PATTERN
int proc_dump_wow_keep_alive_info(struct seq_file *m, void *v);
#endif /*CONFIG_WOW_KEEP_ALIVE_PATTERN*/
#ifdef CONFIG_MDNS_OFFLOAD
ssize_t proc_set_wow_mdns_resp(struct file *file, const char __user *buffer,
size_t count, loff_t *pos, void *data);
int proc_get_wow_mdns_resp(struct seq_file *m, void *v);
ssize_t proc_set_wow_mdns_match_criteria(struct file *file,
const char __user *buffer,
size_t count, loff_t *pos, void *data);
int proc_get_wow_mdns_match_criteria(struct seq_file *m, void *v);
ssize_t proc_set_wow_mdns_passthru_list(struct file *file,
const char __user *buffer,
size_t count, loff_t *pos, void *data);
int proc_get_wow_mdns_passthru_list(struct seq_file *m, void *v);
ssize_t proc_set_wow_mdns_offload_state(struct file *file,
const char __user *buffer,
size_t count, loff_t *pos, void *data);
int proc_get_wow_mdns_offload_state(struct seq_file *m, void *v);
ssize_t proc_set_wow_mdns_passthru_behavior(struct file *file,
const char __user *buffer,
size_t count, loff_t *pos, void *data);
int proc_get_wow_mdns_passthru_behavior(struct seq_file *m, void *v);
#endif /* CONFIG_MDNS_OFFLOAD */
#endif
#ifdef CONFIG_WAR_OFFLOAD
@@ -602,9 +623,15 @@ ssize_t proc_set_xmit_block(struct file *file, const char __user *buffer, size_t
#endif
#ifdef CONFIG_PREALLOC_RX_SKB_BUFFER
int proc_get_rtkm_info(struct seq_file *m, void *v);
int proc_get_rtkm_skb(struct seq_file *m, void *v);
#endif /* CONFIG_PREALLOC_RX_SKB_BUFFER */
#ifdef CONFIG_RTKM
int proc_get_rtkm_info(struct seq_file *m, void *v);
ssize_t proc_set_rtkm_info(struct file *file, const char __user *buffer,
size_t count, loff_t *pos, void *data);
#endif /* CONFIG_RTKM */
#ifdef CONFIG_IEEE80211W
ssize_t proc_set_tx_sa_query(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data);
int proc_get_tx_sa_query(struct seq_file *m, void *v);

View File

@@ -24,7 +24,11 @@
#define HWSET_MAX_SIZE_512 512
#define HWSET_MAX_SIZE_1024 1024
#if defined(CONFIG_RTL8822E)
#define EEPROM_MAX_SIZE EFUSE_MAX_MAP_LEN
#else
#define EEPROM_MAX_SIZE HWSET_MAX_SIZE_1024
#endif
#define CLOCK_RATE 50 /* 100us */

View File

@@ -42,10 +42,14 @@ enum _EFUSE_DEF_TYPE {
TYPE_EFUSE_PROTECT_BYTES_BANK = 5,
TYPE_EFUSE_CONTENT_LEN_BANK = 6,
};
#if defined(CONFIG_RTL8822E)
#define EFUSE_VER_LEN 7
#define EFUSE_MAX_MAP_LEN (2048)
#else
#define EFUSE_VER_LEN 0
#define EFUSE_MAX_MAP_LEN 1024
#define EFUSE_MAX_HW_SIZE 1024
#endif
#define EFUSE_MAX_HW_SIZE 1536
#define EFUSE_MAX_SECTION_BASE 16
#define EFUSE_MAX_SECTION_NUM 128
#define EFUSE_MAX_BANK_SIZE 512
@@ -53,7 +57,7 @@ enum _EFUSE_DEF_TYPE {
/*RTL8822B 8821C BT EFUSE Define 1 BANK 128 size logical map 1024*/
#ifdef RTW_HALMAC
#define BANK_NUM 1
#if defined(CONFIG_RTL8723F)
#if defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E)
#define EFUSE_BT_REAL_BANK_CONTENT_LEN 512
#else
#define EFUSE_BT_REAL_BANK_CONTENT_LEN 128
@@ -63,7 +67,7 @@ enum _EFUSE_DEF_TYPE {
#define EFUSE_BT_MAP_LEN 1024 /* 1k bytes */
#define EFUSE_BT_MAX_SECTION (EFUSE_BT_MAP_LEN / 8)
#if defined(CONFIG_RTL8822C)
#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)
#define EFUSE_PROTECT_BYTES_BANK 54
#elif defined(CONFIG_RTL8723F)
#define EFUSE_PROTECT_BYTES_BANK 40
@@ -85,11 +89,14 @@ enum _EFUSE_DEF_TYPE {
#define GET_MASK_ARRAY_LEN_TC(ic, txt) (EFUSE_GetArrayLen_TC_##ic##txt())
#define GET_MASK_ARRAY_MP(ic, txt, offset) (EFUSE_GetMaskArray_MP_##ic##txt(offset))
#define GET_MASK_ARRAY_TC(ic, txt, offset) (EFUSE_GetMaskArray_TC_##ic##txt(offset))
#define GET_VER_ARRAY_MP(ic, txt, offset) (EFUSE_Ver_GetArray_MP_##ic##txt(offset))
#define GET_VER_ARRAY_LEN_MP(ic, txt) (EFUSE_Ver_GetArrayLen_MP_##ic##txt())
#define IS_MASKED(ic, txt, offset) (IS_MASKED_MP(ic, txt, offset))
#define GET_MASK_ARRAY_LEN(ic, txt) (GET_MASK_ARRAY_LEN_MP(ic, txt))
#define GET_MASK_ARRAY(ic, txt, out) do { GET_MASK_ARRAY_MP(ic, txt, out); } while (0)
#define GET_VER_ARRAY(ic, txt, out) do { GET_VER_ARRAY_MP(ic, txt, out); } while (0)
#define GET_VER_ARRAY_LEN(ic, txt) (GET_VER_ARRAY_LEN_MP(ic, txt))
#ifdef CONFIG_BT_EFUSE_MASK
#define IS_BT_MASKED_MP(ic, txt, offset) (EFUSE_IsBTAddressMasked_MP_##ic##txt(offset))
@@ -143,6 +150,8 @@ typedef struct _EFUSE_HAL {
u8 fakeEfuseModifiedMap[EFUSE_MAX_MAP_LEN];
u32 EfuseUsedBytes;
u8 EfuseUsedPercentage;
u32 EfuseMaskUsedBytes;
BOOLEAN EfuseVerCompare;
u16 BTEfuseUsedBytes;
u8 BTEfuseUsedPercentage;
@@ -179,8 +188,8 @@ typedef struct _EFUSE_HAL {
} EFUSE_HAL, *PEFUSE_HAL;
extern u8 maskfileBuffer[64];
extern u8 btmaskfileBuffer[64];
extern u8 maskfileBuffer[192];
extern u8 btmaskfileBuffer[192];
/*------------------------Export global variable----------------------------*/
extern u8 fakeEfuseBank;
@@ -238,7 +247,7 @@ int Efuse_PgPacketWrite(PADAPTER pAdapter, u8 offset, u8 word_en, u8 *data, BOOL
void efuse_WordEnableDataRead(u8 word_en, u8 *sourdata, u8 *targetdata);
u8 Efuse_WordEnableDataWrite(PADAPTER pAdapter, u16 efuse_addr, u8 word_en, u8 *data, BOOLEAN bPseudoTest);
void EFUSE_ShadowMapUpdate(PADAPTER pAdapter, u8 efuseType, BOOLEAN bPseudoTest);
void EFUSE_ShadowRead(PADAPTER pAdapter, u8 Type, u16 Offset, u32 *Value);
void EFUSE_ShadowRead(PADAPTER pAdapter, u8 Type, u16 Offset, void *Value);
#define efuse_logical_map_read(adapter, type, offset, value) EFUSE_ShadowRead((adapter), (type), (offset), (value))
BOOLEAN rtw_file_efuse_IsMasked(PADAPTER pAdapter, u16 Offset, u8 *maskbuf);
@@ -274,7 +283,7 @@ extern const u8 _mac_hidden_proto_to_hal_proto_cap[];
u8 mac_hidden_wl_func_to_hal_wl_func(u8 func);
#ifdef PLATFORM_LINUX
u8 rtw_efuse_file_read(PADAPTER padapter, u8 *filepath, u8 *buf, u32 len);
u32 rtw_efuse_file_read(PADAPTER padapter, u8 *filepath, u8 *buf, u32 len);
#if !defined(CONFIG_RTW_ANDROID_GKI)
u8 rtw_efuse_file_store(PADAPTER padapter, u8 *filepath, u8 *buf, u32 len);
#endif /* !defined(CONFIG_RTW_ANDROID_GKI) */

View File

@@ -93,7 +93,7 @@ enum rtw_ft_capability {
#define rtw_ft_roam(a) \
((rtw_to_roam(a) > 0) && rtw_ft_chk_flags(a, RTW_FT_PEER_EN))
#define rtw_ft_valid_akm(a, t) \
((rtw_ft_chk_flags(a, RTW_FT_EN)) && \
(((t) == 3) || ((t) == 4) || ((t) == 9)))
@@ -102,11 +102,18 @@ enum rtw_ft_capability {
((rtw_chk_roam_flags(a, RTW_ROAM_ON_EXPIRED)) \
&& (r == WLAN_REASON_ACTIVE_ROAM))
/* allow OTD while driver disconnect with current AP */
#if 1
#define rtw_ft_otd_roam_en(a) \
((rtw_ft_chk_flags(a, RTW_FT_OTD_EN)) \
&& ((a)->mlmepriv.ft_roam.ft_cap & 0x01))
#else
#define rtw_ft_otd_roam_en(a) \
((rtw_ft_chk_flags(a, RTW_FT_OTD_EN)) \
&& ((a)->mlmepriv.ft_roam.ft_roam_on_expired == _FALSE) \
&& ((a)->mlmepriv.ft_roam.ft_cap & 0x01))
#endif
#define rtw_ft_otd_roam(a) \
rtw_ft_chk_flags(a, RTW_FT_PEER_OTD_EN)
@@ -119,18 +126,29 @@ enum rtw_ft_capability {
struct ft_roam_info {
u16 mdid;
u8 ft_cap;
u8 ft_cap;
/*b0: FT over DS, b1: Resource Req Protocol Cap, b2~b7: Reserved*/
u8 updated_ft_ies[RTW_FT_MAX_IE_SZ];
u16 updated_ft_ies_len;
u8 ft_action[RTW_FT_MAX_IE_SZ];
u16 ft_action_len;
struct cfg80211_ft_event_params ft_event;
#ifdef CONFIG_IOCTL_CFG80211
struct cfg80211_ft_event_params ft_event;
#endif
u8 ft_roam_on_expired;
u8 ft_flags;
u32 ft_status;
u32 ft_req_retry_cnt;
bool ft_updated_bcn;
bool ft_updated_bcn;
};
struct rtw_sta_ft_info_t {
u8 *rsn_ie;
u32 rsn_len;
u8 *md_ie;
u32 md_len;
u8 *ft_ie;
u32 ft_len;
};
void rtw_ft_info_init(struct ft_roam_info *pft);
@@ -148,7 +166,7 @@ void rtw_ft_update_stainfo(_adapter *padapter, WLAN_BSSID_EX *pnetwork);
void rtw_ft_reassoc_event_callback(_adapter *padapter, u8 *pbuf);
void rtw_ft_validate_akm_type(_adapter *padapter,
struct wlan_network *pnetwork);
WLAN_BSSID_EX *network);
void rtw_ft_update_bcn(_adapter *padapter, union recv_frame *precv_frame);
@@ -180,4 +198,21 @@ void rtw_ft_roam_timer_hdl(void *ctx);
void rtw_ft_roam_status_reset(_adapter *padapter);
void rtw_ft_peer_info_init(struct sta_info *psta);
void rtw_ft_peer_info_free(struct sta_info *psta);
#ifdef CONFIG_RTW_80211R_AP
int rtw_ft_update_sta_ies(_adapter *padapter,
struct cfg80211_update_ft_ies_params *pie);
void rtw_ft_update_assocresp_ies(struct net_device *net,
struct cfg80211_ap_settings *settings);
void rtw_ft_process_ft_auth_rsp(_adapter *padapter, u8 *pframe, u32 len);
void rtw_ft_build_assoc_rsp_ies(_adapter *padapter,
struct sta_info *psta, struct pkt_attrib *pattrib, u8 **pframe);
#endif /* CONFIG_RTW_80211R_AP */
#endif /* __RTW_FT_H_ */

View File

@@ -26,9 +26,9 @@ u8 rtw_set_acs_sitesurvey(_adapter *adapter);
u8 rtw_set_802_11_infrastructure_mode(_adapter *padapter, NDIS_802_11_NETWORK_INFRASTRUCTURE networktype, u8 flags);
u8 rtw_set_802_11_ssid(_adapter *padapter, NDIS_802_11_SSID *ssid);
u8 rtw_set_802_11_connect(_adapter *padapter,
u8 *bssid, NDIS_802_11_SSID *ssid, u16 ch);
const u8 *bssid, NDIS_802_11_SSID *ssid, u16 ch);
u8 rtw_validate_bssid(u8 *bssid);
u8 rtw_validate_bssid(const u8 *bssid);
u8 rtw_validate_ssid(NDIS_802_11_SSID *ssid);
u16 rtw_get_cur_max_rate(_adapter *adapter);

View File

@@ -16,10 +16,17 @@
#ifndef __RTW_MBO_H_
#define __RTW_MBO_H_
#define rtw_mbo_wifi_logo_test(a) ((a->registrypriv.wifi_spec) == 1)
#define rtw_mbo_wifi_logo_test(a) \
(((a)->registrypriv.wifi_spec) == 1)
#define rtw_mbo_set_ext_cap_internw(_pEleStart, _val) \
SET_BITS_TO_LE_1BYTE(((u8 *)(_pEleStart))+3, 7, 1, _val)
#define rtw_mbo_wifi_spec_test(a) \
(((a)->mlmepriv.mbo_attr.mbo_spec_test) == 1)
#define rtw_mbo_ap_assoc_disallow(a) \
(((a)->mlmepriv.mbo_attr.assoc_disallow) > 0)
#define rtw_mbo_add_internw_ext_cap(d, l) \
rtw_add_ext_cap_info(d, l, INTERWORKING)
#define rtw_mbo_wnm_notification_req(c, a) \
(((c) == RTW_WLAN_CATEGORY_WNM) && \
@@ -34,6 +41,8 @@
#define RTW_MBO_OUI 0x506F9A
#define RTW_MBO_OUI_TYPE 0x16
/* MBO AP Capability Indication */
#define RTW_MBO_ATTR_AP_CAP_ID 0x1
/* Non-preferred Channel Report */
#define RTW_MBO_ATTR_NPREF_CH_RPT_ID 0x2
/* Cellular Data Capabilities */
@@ -45,12 +54,34 @@
/* Transition Rejection Reason Code */
#define RTW_MBO_ATTR_TRANS_REJ_ID 0x7
/* Association Retry Delay */
#define RTW_MBO_ATTR_TASSOC_RETRY_ID 0x8
#define RTW_MBO_ATTR_ASSOC_RETRY_DELAY_ID 0x8
#define RTW_MBO_MAX_CH_LIST_NUM MAX_CHANNEL_NUM
#define RTW_MBO_MAX_CH_RPT_NUM 32
#define RTW_MBO_TEST_CMD_REST 0x00
#define RTW_MBO_TEST_CMD_BTM_REQ_SEND 0xfd
#define RTW_MBO_TEST_CMD_BTM_REQ_SET 0xfe
#define RTW_MBO_TEST_CMD_NB_BSS_ADD 0xff
struct mbo_user_btm_req_pkt {
struct btm_req_hdr hdr;
u32 candidate_cnt;
struct wnm_btm_cant btm_cants[RTW_MAX_NB_RPT_NUM];
u8 append_mbo_ie;
};
struct mbo_attr_info {
u8 mbo_spec_test;
u8 ap_cap_ind;
u8 assoc_disallow;
u8 cell_data_cap;
u8 reason;
u16 delay;
struct mbo_user_btm_req_pkt user_raw;
};
struct npref_ch {
u8 op_class;
u8 chs[RTW_MBO_MAX_CH_LIST_NUM];
@@ -81,11 +112,11 @@ void rtw_mbo_build_trans_reject_reason_attr(
u8 rtw_mbo_disallowed_network(struct wlan_network *pnetwork);
void rtw_mbo_build_exented_cap(
void rtw_mbo_build_extended_cap(
_adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib);
ssize_t rtw_mbo_proc_non_pref_chans_set(
struct file *pfile, const char __user *buffer,
struct file *pfile, const char __user *buffer,
size_t count, loff_t *pos, void *pdata);
int rtw_mbo_proc_non_pref_chans_get(
@@ -98,6 +129,13 @@ ssize_t rtw_mbo_proc_cell_data_set(
int rtw_mbo_proc_cell_data_get(
struct seq_file *m, void *v);
ssize_t rtw_mbo_proc_attr_set(
struct file *pfile, const char __user *buffer,
size_t count, loff_t *pos, void *pdata);
int rtw_mbo_proc_attr_get(
struct seq_file *m, void *v);
void rtw_mbo_wnm_notification_parsing(
_adapter *padapter, const u8 *pdata, size_t data_len);
@@ -110,5 +148,22 @@ void rtw_mbo_build_probe_req_ies(
void rtw_mbo_build_assoc_req_ies(
_adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib);
void rtw_mbo_attr_info_init(_adapter *padapter);
void rtw_mbo_process_assoc_req(
_adapter *padapter, u8 *pie, int ie_len);
void rtw_mbo_build_beacon_ies(
_adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib);
void rtw_mbo_build_probe_rsp_ies(
_adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib);
void rtw_mbo_build_assoc_rsp_ies(
_adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib);
void rtw_mbo_build_wnm_btmreq_reason_ies(
_adapter *padapter, u8 **pframe, struct pkt_attrib *pattrib);
#endif /* __RTW_MBO_H_ */

View File

@@ -19,6 +19,7 @@
#include <drv_types.h> /* PADAPTER */
#define NO_NEED_MCC 2
#define MCC_STATUS_PROCESS_MCC_START_SETTING BIT0
#define MCC_STATUS_PROCESS_MCC_STOP_SETTING BIT1
#define MCC_STATUS_NEED_MCC BIT2
@@ -54,7 +55,7 @@
#define MCC_SINGLE_TX_CRITERIA 5 /* Mbps */
#define MAX_MCC_NUM 2
#ifdef CONFIG_RTL8822C
#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)
#define DBG_MCC_REG_NUM 3
#else
#define DBG_MCC_REG_NUM 4
@@ -130,8 +131,9 @@ enum mcc_status_rpt {
MCC_RPT_STOPMCC = 2,
MCC_RPT_READY = 3,
MCC_RPT_SWICH_CHANNEL_NOTIFY = 7,
MCC_RPT_UPDATE_NOA_START_TIME = 8,
MCC_RPT_TBTT = 8,
MCC_RPT_TSF = 9,
MCC_RPT_UPDATE_NOA_START_TIME = 15, /* Need update FW */
MCC_RPT_MAX,
};
@@ -239,6 +241,7 @@ struct mcc_obj_priv {
u32 dbg_rf_reg[DBG_MCC_RF_REG_NUM];
u32 dbg_rf_reg_val[DBG_MCC_RF_REG_NUM][MAX_RF_PATH];
u8 mcc_phydm_offload;
u8 tsf_sync_done;
};
/* backup IQK val */

View File

@@ -15,15 +15,20 @@
#ifndef __RTW_MEM_H__
#define __RTW_MEM_H__
#include <drv_conf.h>
#include <basic_types.h>
#include <osdep_service.h>
#define RTKM_MGMT_SIZE PAGE_SIZE
u16 rtw_rtkm_get_buff_size(void);
u8 rtw_rtkm_get_nr_recv_skb(void);
struct u8 *rtw_alloc_revcbuf_premem(void);
struct sk_buff *rtw_alloc_skb_premem(u16 in_size);
int rtw_free_skb_premem(struct sk_buff *pskb);
void *rtkm_kmalloc(size_t size, gfp_t flags);
void *rtkm_kzalloc(size_t size, gfp_t flags);
void rtkm_kfree(const void *objp, size_t size);
int rtkm_prealloc_init(void);
void rtkm_prealloc_destroy(void);
void rtkm_dump_mstatus(void *sel);
void rtkm_set_trace(unsigned int mask);
u16 rtkm_get_max_buff_size(void);
u8 rtkm_get_max_nr_rx_skb(void);
inline struct sk_buff *rtkm_alloc_skb(unsigned int length);
void rtkm_kfree_skb_any(struct sk_buff *skb);
#endif /* __RTW_MEM_H__ */

View File

@@ -16,12 +16,16 @@
#define __RTW_MI_H_
void rtw_mi_update_union_chan_inf(_adapter *adapter, u8 ch, u8 offset , u8 bw);
u8 rtw_mi_stayin_union_ch_chk(_adapter *adapter);
u8 rtw_mi_stayin_union_ch_chk(_adapter *adapter, bool fail_detail);
u8 rtw_mi_stayin_union_band_chk(_adapter *adapter);
int rtw_mi_get_ch_setting_union_by_ifbmp(struct dvobj_priv *dvobj, u8 ifbmp, u8 *ch, u8 *bw, u8 *offset);
int rtw_mi_get_ch_setting_union(_adapter *adapter, u8 *ch, u8 *bw, u8 *offset);
int rtw_mi_get_ch_setting_union_no_self(_adapter *adapter, u8 *ch, u8 *bw, u8 *offset);
int rtw_mi_get_bch_setting_union_by_hwband(struct dvobj_priv *dvobj, u8 band_idx
, enum band_type *band, u8 *ch, u8 *bw, u8 *offset);
int rtw_mi_get_bch_setting_union_by_hwband_ifbmp(struct dvobj_priv *dvobj, u8 band_idx, u8 ifbmp
, enum band_type *band, u8 *ch, u8 *bw, u8 *offset);
struct mi_state {
u8 sta_num; /* WIFI_STATION_STATE */
@@ -126,6 +130,8 @@ void rtw_mi_status_by_ifbmp(struct dvobj_priv *dvobj, u8 ifbmp, struct mi_state
void rtw_mi_status(_adapter *adapter, struct mi_state *mstate);
void rtw_mi_status_no_self(_adapter *adapter, struct mi_state *mstate);
void rtw_mi_status_no_others(_adapter *adapter, struct mi_state *mstate);
void rtw_mi_status_by_hwband(struct dvobj_priv *dvobj, u8 band_idx, struct mi_state *mstate);
void rtw_mi_status_by_hwband_ifbmp(struct dvobj_priv *dvobj, u8 band_idx, u8 ifbmp, struct mi_state *mstate);
/* For now, not handle union_ch/bw/offset */
void rtw_mi_status_merge(struct mi_state *d, struct mi_state *a);
@@ -207,6 +213,8 @@ u8 rtw_mi_buddy_check_mlmeinfo_state(_adapter *padapter, u32 state);
u8 rtw_mi_check_fwstate(_adapter *padapter, sint state);
u8 rtw_mi_buddy_check_fwstate(_adapter *padapter, sint state);
u8 rtw_mi_check_fwstate_by_hwband(struct dvobj_priv *dvobj, u8 band_idx, sint state);
enum {
MI_LINKED,
MI_ASSOC,
@@ -244,6 +252,8 @@ u8 rtw_mi_buddy_check_pending_xmitbuf(_adapter *padapter);
#include <rtl8822c_hal.h>
#elif defined(CONFIG_RTL8723F)
#include <rtl8723f_hal.h>
#elif defined(CONFIG_RTL8822E)
#include <rtl8822e_hal.h>
#else
extern s32 _dequeue_writeport(PADAPTER padapter);
#endif
@@ -295,15 +305,25 @@ _adapter *rtw_get_iface_by_macddr(_adapter *padapter, const u8 *mac_addr);
_adapter *rtw_get_iface_by_hwport(_adapter *padapter, u8 hw_port);
void rtw_mi_buddy_clone_bcmc_packet(_adapter *padapter, union recv_frame *precvframe, u8 *pphy_status);
#ifdef CONFIG_PCI_HCI
/*API be create temporary for MI, caller is interrupt-handler, PCIE's interrupt handler cannot apply to multi-AP*/
_adapter *rtw_mi_get_ap_adapter(_adapter *padapter);
#endif
u8 rtw_mi_get_ifbmp_by_hwband(struct dvobj_priv *dvobj, u8 band_idx);
_adapter *rtw_mi_get_iface_by_hwband(struct dvobj_priv *dvobj, u8 band_idx);
u8 rtw_mi_get_ld_sta_ifbmp(_adapter *adapter);
u8 rtw_mi_get_ld_sta_ifbmp_by_hwband(struct dvobj_priv *dvobj, u8 band_idx);
u8 rtw_mi_get_lgd_sta_ifbmp(_adapter *adapter);
u8 rtw_mi_get_lgd_sta_ifbmp_by_hwband(struct dvobj_priv *dvobj, u8 band_idx);
u8 rtw_mi_get_ap_mesh_ifbmp(_adapter *adapter);
u8 rtw_mi_get_ap_mesh_ifbmp_by_hwband(struct dvobj_priv *dvobj, u8 band_idx);
_adapter *rtw_mi_get_ap_mesh_iface_by_hwband(struct dvobj_priv *dvobj, u8 band_idx);
bool rtw_iface_is_operate_at_hwband(_adapter *adapter, u8 band_idx);
void rtw_mi_update_ap_bmc_camid(_adapter *padapter, u8 camid_a, u8 camid_b);
_adapter *rtw_mi_get_linking_adapter(_adapter *adapter);
u32 ifbmp_to_iflbmp(u8 ifbmp);
u8 iflbmp_to_ifbmp(u32 iflbmp);
#endif /*__RTW_MI_H_*/

View File

@@ -20,6 +20,7 @@
/* #define MAX_JOIN_TIMEOUT 2000 */
/* #define MAX_JOIN_TIMEOUT 2500 */
#define MAX_JOIN_TIMEOUT 6500
#define PS_ANNC_DRV_RETRY_INT_MS 30
/* Commented by Albert 20101105
* Increase the scanning timeout because of increasing the SURVEY_TO value. */
@@ -59,7 +60,7 @@
/*#define WIFI_UNDEFINED_STATE 0x04000000*/
/*#define WIFI_UNDEFINED_STATE 0x08000000*/
/*#define WIFI_UNDEFINED_STATE 0x10000000*/
/*#define WIFI_UNDEFINED_STATE 0x20000000*/
#define WIFI_CSA_SKIP_CHECK_BEACON 0x20000000
#define WIFI_CSA_UPDATE_BEACON 0x40000000
#define WIFI_MONITOR_STATE 0x80000000
@@ -567,6 +568,28 @@ struct unassoc_sta_info {
};
#endif
struct wlan_network {
_list list;
int network_type; /* refer to ieee80211.h for WIRELESS_11A/B/G */
int fixed; /* set to fixed when not to be removed as site-surveying */
systime last_scanned; /* timestamp for the network */
systime last_non_hidden_ssid_ap;
#ifdef CONFIG_RTW_MESH
#if CONFIG_RTW_MESH_ACNODE_PREVENT
systime acnode_stime;
systime acnode_notify_etime;
#endif
#endif
int aid; /* will only be valid when a BSS is joinned. */
int join_res;
struct beacon_keys bcn_keys;
bool bcn_keys_valid;
#ifdef CONFIG_80211D
struct country_ie_slave_record cisr;
#endif
WLAN_BSSID_EX network; /* must be the last item */
};
struct mlme_priv {
_lock lock;
@@ -616,7 +639,7 @@ struct mlme_priv {
#endif
u8 bcn_cnts_after_csa;
#ifdef CONFIG_ARP_KEEP_ALIVE
#ifdef CONFIG_ARP_KEEP_ALIVE_GW
/* for arp offload keep alive */
u8 bGetGateway;
u8 GetGatewayTryCnt;
@@ -644,11 +667,6 @@ struct mlme_priv {
struct qos_priv qospriv;
#ifdef CONFIG_80211D
u8 *recv_country_ie;
u32 recv_country_ie_len;
#endif
#ifdef CONFIG_ACTIVE_TPC_REPORT
bool active_tpc_report;
#endif
@@ -663,9 +681,9 @@ struct mlme_priv {
int num_FortyMHzIntolerant;
u8 sw_to_20mhz; /*switch to 20Mhz BW*/
struct ht_priv htpriv;
#endif
#ifdef CONFIG_80211AC_VHT
@@ -731,13 +749,8 @@ struct mlme_priv {
int ht_20mhz_width_req;
int ht_intolerant_ch_reported;
u16 ht_op_mode;
u8 sw_to_20mhz; /*switch to 20Mhz BW*/
#endif /* CONFIG_80211N_HT */
#ifdef CONFIG_RTW_80211R
u8 *auth_rsp;
u32 auth_rsp_len;
#endif
#endif /* CONFIG_AP_MODE and CONFIG_NATIVEAP_MLME */
u8 *assoc_req;
@@ -749,6 +762,11 @@ struct mlme_priv {
/* u8 *wps_probe_req_ie; */
/* u32 wps_probe_req_ie_len; */
u8 *beacon_head_ie;
u32 beacon_head_ie_len;
u8 *beacon_tail_ie;
u32 beacon_tail_ie_len;
u8 *wps_beacon_ie;
u32 wps_beacon_ie_len;
@@ -806,9 +824,15 @@ struct mlme_priv {
u32 wfd_assoc_resp_ie_len;
#endif
#ifdef CONFIG_RTW_80211R
u8 *auth_rsp;
u32 auth_rsp_len;
#endif
#ifdef CONFIG_RTW_MBO
u8 *pcell_data_cap_ie;
u32 cell_data_cap_len;
struct mbo_attr_info mbo_attr;
#endif
#ifdef RTK_DMP_PLATFORM
@@ -862,11 +886,13 @@ struct mlme_priv {
#define MLME_ACTIVE_TPC_REPORT(mlme) 0
#endif
#define RTW_AUTO_SCAN_REASON_UNSPECIFIED 0
#define RTW_AUTO_SCAN_REASON_2040_BSS BIT0
#define RTW_AUTO_SCAN_REASON_ACS BIT1
#define RTW_AUTO_SCAN_REASON_ROAM BIT2
#define RTW_AUTO_SCAN_REASON_MESH_OFFCH_CAND BIT3
#define RTW_AUTO_SCAN_REASON_UNSPECIFIED 0
#define RTW_AUTO_SCAN_REASON_2040_BSS BIT0
#define RTW_AUTO_SCAN_REASON_ACS BIT1
#define RTW_AUTO_SCAN_REASON_ROAM BIT2
#define RTW_AUTO_SCAN_REASON_ROAM_ACTIVE BIT3
#define RTW_AUTO_SCAN_REASON_MESH_OFFCH_CAND BIT4
#define RTW_AUTO_SCAN_REASON_CIS_ENV_BSS BIT5
void rtw_mlme_reset_auto_scan_int(_adapter *adapter, u8 *reason);
@@ -1004,6 +1030,7 @@ __inline static void set_scanned_network_val(struct mlme_priv *pmlmepriv, sint v
extern u16 rtw_get_capability(WLAN_BSSID_EX *bss);
extern bool rtw_update_scanned_network(_adapter *adapter, WLAN_BSSID_EX *target);
void dump_scanned_queue(void *sel, _adapter *adapter);
extern void rtw_disconnect_hdl_under_linked(_adapter *adapter, struct sta_info *psta, u8 free_assoc);
extern void rtw_generate_random_ibss(u8 *pibss);
struct wlan_network *_rtw_find_network(_queue *scanned_queue, const u8 *addr);
@@ -1025,7 +1052,7 @@ void rtw_scan_abort(_adapter *adapter);
u32 rtw_join_abort_timeout(_adapter *adapter, u32 timeout_ms);
int rtw_cached_pmkid(_adapter *Adapter, u8 *bssid);
int rtw_rsn_sync_pmkid(_adapter *adapter, u8 *ie, uint ie_len, int i_ent);
int rtw_pmkid_sync_rsn(_adapter *adapter, u8 *ie, uint ie_len, int i_ent);
extern int rtw_restruct_sec_ie(_adapter *adapter, u8 *out_ie);
#ifdef CONFIG_WMMPS_STA
@@ -1104,6 +1131,9 @@ extern void _rtw_free_network_nolock(struct mlme_priv *pmlmepriv, struct wlan_ne
extern void _rtw_free_network_queue(_adapter *padapter, u8 isfreeall);
struct _ADAPTER_LINK *rtw_get_adapter_link_by_hwband(_adapter *padapter, u8 band_idx);
u8 rtw_adapter_link_get_id(struct _ADAPTER_LINK *alink);
extern sint rtw_if_up(_adapter *padapter);
sint rtw_linked_check(_adapter *padapter);
@@ -1118,7 +1148,7 @@ void rtw_joinbss_reset(_adapter *padapter);
#ifdef CONFIG_80211N_HT
void rtw_ht_use_default_setting(_adapter *padapter);
void rtw_build_wmm_ie_ht(_adapter *padapter, u8 *out_ie, uint *pout_len);
unsigned int rtw_restructure_ht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, u8 channel, struct country_chplan *req_chplan);
unsigned int rtw_restructure_ht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, u8 channel);
void rtw_update_ht_cap(_adapter *padapter, u8 *pie, uint ie_len, u8 channel);
void rtw_issue_addbareq_cmd(_adapter *padapter, struct xmit_frame *pxmitframe, u8 issue_when_busy);
#endif
@@ -1146,8 +1176,8 @@ int is_same_network(WLAN_BSSID_EX *src, WLAN_BSSID_EX *dst, u8 feature);
((adapter)->mlmepriv.roam_flags = flags); \
} while (0)
void _rtw_roaming(_adapter *adapter, struct wlan_network *tgt_network);
void rtw_roaming(_adapter *adapter, struct wlan_network *tgt_network);
void _rtw_roaming(_adapter *adapter, struct wlan_network *tgt_network, u8 scan_band, u8 scan_ch);
void rtw_roaming(_adapter *adapter, struct wlan_network *tgt_network, u8 scan_band, u8 scan_ch);
void rtw_set_to_roam(_adapter *adapter, u8 to_roam);
u8 rtw_dec_to_roam(_adapter *adapter);
u8 rtw_to_roam(_adapter *adapter);
@@ -1158,15 +1188,15 @@ int rtw_select_roaming_candidate(struct mlme_priv *pmlmepriv);
#define rtw_clr_roam_flags(adapter, flags) do {} while (0)
#define rtw_set_roam_flags(adapter, flags) do {} while (0)
#define rtw_assign_roam_flags(adapter, flags) do {} while (0)
#define _rtw_roaming(adapter, tgt_network) do {} while (0)
#define rtw_roaming(adapter, tgt_network) do {} while (0)
#define _rtw_roaming(adapter, tgt_network, scan_band, scan_ch) do {} while (0)
#define rtw_roaming(adapter, tgt_network, scan_band, scan_ch) do {} while (0)
#define rtw_set_to_roam(adapter, to_roam) do {} while (0)
#define rtw_dec_to_roam(adapter) 0
#define rtw_to_roam(adapter) 0
#define rtw_select_roaming_candidate(mlme) _FAIL
#endif /* CONFIG_LAYER2_ROAMING */
bool rtw_adjust_chbw(_adapter *adapter, u8 req_ch, u8 *req_bw, u8 *req_offset);
RTW_FUNC_2G_5G_ONLY bool rtw_adjust_chbw(_adapter *adapter, u8 req_ch, u8 *req_bw, u8 *req_offset);
struct sta_media_status_rpt_cmd_parm {
struct sta_info *sta;

View File

@@ -16,12 +16,13 @@
#define __RTW_MLME_EXT_H_
/* Commented by Albert 20101105
* Increase the SURVEY_TO value from 100 to 150 ( 100ms to 150ms )
* The Realtek 8188CE SoftAP will spend around 100ms to send the probe response after receiving the probe request.
* So, this driver tried to extend the dwell time for each scanning channel.
* This will increase the chance to receive the probe response from SoftAP. */
/*
* SURVEY_TO: dwell time (ms) for passive channel scan or other scan functions
* in addition to normal scan.
* ACTIVE_CH_SURVEY_TO: dwell time (ms) for active scan channel in nomal scan.
*/
#define SURVEY_TO (100)
#define ACTIVE_CH_SURVEY_TO (50)
#define REAUTH_TO (300) /* (50) */
#define REASSOC_TO (300) /* (50) */
@@ -96,11 +97,6 @@ extern unsigned char MULTI_AP_OUI[];
extern unsigned char WMM_INFO_OUI[];
extern unsigned char WMM_PARA_OUI[];
typedef struct _RT_CHANNEL_PLAN {
unsigned char Channel[MAX_CHANNEL_NUM];
unsigned char Len;
} RT_CHANNEL_PLAN, *PRT_CHANNEL_PLAN;
typedef enum _HT_IOT_PEER {
HT_IOT_PEER_UNKNOWN = 0,
HT_IOT_PEER_REALTEK = 1,
@@ -245,6 +241,7 @@ enum TDLS_option {
TDLS_CH_SW_END,
TDLS_RS_RCR,
TDLS_TEARDOWN_STA,
TDLS_TEARDOWN_STA_TOOFAR,
TDLS_TEARDOWN_STA_NO_WAIT,
TDLS_TEARDOWN_STA_LOCALLY,
TDLS_TEARDOWN_STA_LOCALLY_POST,
@@ -346,132 +343,11 @@ struct mlme_ext_info {
#endif
};
enum {
RTW_CHF_NO_IR = BIT0,
RTW_CHF_DFS = BIT1,
RTW_CHF_LONG_CAC = BIT2,
RTW_CHF_NON_OCP = BIT3,
RTW_CHF_NO_HT40U = BIT4,
RTW_CHF_NO_HT40L = BIT5,
RTW_CHF_NO_80MHZ = BIT6,
RTW_CHF_NO_160MHZ = BIT7,
};
void init_channel_list(_adapter *padapter);
/* The channel information about this channel including joining, scanning, and power constraints. */
typedef struct _RT_CHANNEL_INFO {
u8 band; /* BAND_TYPE */
u8 ChannelNum; /* The channel number. */
/*
* Bitmap and its usage:
* RTW_CHF_NO_IR, RTW_CHF_DFS: is used to check for status
* RTW_CHF_NO_HT40U, RTW_CHF_NO_HT40L, RTW_CHF_NO_80MHZ, RTW_CHF_NO_160MHZ: extra bandwidth limitation (ex: from regulatory)
* RTW_CHF_NON_OCP: is only used to record if event is reported, status check is still done using non_ocp_end_time
*/
u8 flags;
/* u16 ScanPeriod; */ /* Listen time in millisecond in this channel. */
/* s32 MaxTxPwrDbm; */ /* Max allowed tx power. */
/* u32 ExInfo; */ /* Extended Information for this channel. */
#ifdef CONFIG_FIND_BEST_CHANNEL
u32 rx_count;
#endif
#if CONFIG_IEEE80211_BAND_5GHZ && CONFIG_DFS
#ifdef CONFIG_DFS_MASTER
systime non_ocp_end_time;
#endif
#endif
u8 hidden_bss_cnt; /* per scan count */
#ifdef CONFIG_IOCTL_CFG80211
void *os_chan;
#endif
} RT_CHANNEL_INFO, *PRT_CHANNEL_INFO;
#define CAC_TIME_MS (60*1000)
#define CAC_TIME_CE_MS (10*60*1000)
#define NON_OCP_TIME_MS (30*60*1000)
#if CONFIG_TXPWR_LIMIT
void rtw_txpwr_init_regd(struct rf_ctl_t *rfctl);
bool rtw_rfctl_is_current_txpwr_lmt(struct rf_ctl_t *rfctl, const char *name);
#endif
int rtw_rfctl_init(_adapter *adapter);
void rtw_rfctl_deinit(_adapter *adapter);
void rtw_rfctl_decide_init_chplan(struct rf_ctl_t *rfctl,
const char *hw_alpha2, u8 hw_chplan, u8 hw_chplan_6g, u8 hw_force_chplan);
void rtw_rfctl_chplan_init(_adapter *adapter);
bool rtw_rfctl_is_disable_sw_channel_plan(struct dvobj_priv *dvobj);
void rtw_rfctl_update_op_mode(struct rf_ctl_t *rfctl, u8 ifbmp_mod, u8 if_op);
bool rtw_rfctl_reg_allow_beacon_hint(struct rf_ctl_t *rfctl);
u8 rtw_rfctl_get_dfs_domain(struct rf_ctl_t *rfctl);
u8 rtw_rfctl_dfs_domain_unknown(struct rf_ctl_t *rfctl);
#ifdef CONFIG_DFS_MASTER
struct rf_ctl_t;
#define CH_IS_NON_OCP(rt_ch_info) (rtw_time_after((rt_ch_info)->non_ocp_end_time, rtw_get_current_time()))
bool rtw_is_cac_reset_needed(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset);
bool _rtw_rfctl_overlap_radar_detect_ch(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset);
bool rtw_rfctl_overlap_radar_detect_ch(struct rf_ctl_t *rfctl);
bool rtw_rfctl_is_tx_blocked_by_ch_waiting(struct rf_ctl_t *rfctl);
bool rtw_chset_is_chbw_non_ocp(RT_CHANNEL_INFO *ch_set, u8 ch, u8 bw, u8 offset);
bool rtw_chset_is_ch_non_ocp(RT_CHANNEL_INFO *ch_set, u8 ch);
bool rtw_chset_update_non_ocp(RT_CHANNEL_INFO *ch_set, u8 ch, u8 bw, u8 offset);
bool rtw_chset_update_non_ocp_ms(RT_CHANNEL_INFO *ch_set, u8 ch, u8 bw, u8 offset, int ms);
void rtw_chset_chk_non_ocp_finish(struct rf_ctl_t *rfctl);
u32 rtw_get_ch_waiting_ms(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset, u32 *r_non_ocp_ms, u32 *r_cac_ms);
void rtw_reset_cac(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset);
u32 rtw_force_stop_cac(struct rf_ctl_t *rfctl, u32 timeout_ms);
#else
#define CH_IS_NON_OCP(rt_ch_info) 0
#define rtw_chset_is_chbw_non_ocp(ch_set, ch, bw, offset) _FALSE
#define rtw_chset_is_ch_non_ocp(ch_set, ch) _FALSE
#define rtw_rfctl_is_tx_blocked_by_ch_waiting(rfctl) _FALSE
#endif
bool rtw_choose_shortest_waiting_ch(struct rf_ctl_t *rfctl, u8 sel_ch, u8 max_bw
, u8 *dec_ch, u8 *dec_bw, u8 *dec_offset
, u8 e_flags, u8 d_flags, u8 cur_ch, bool by_int_info, u8 mesh_only);
struct get_chplan_resp {
enum regd_src_t regd_src;
enum rtw_regd_inr regd_inr;
char alpha2[2];
u8 channel_plan;
#if CONFIG_IEEE80211_BAND_6GHZ
u8 chplan_6g;
#endif
#if CONFIG_TXPWR_LIMIT
const char *txpwr_lmt_name[BAND_MAX];
#endif
u8 edcca_mode_2g;
#if CONFIG_IEEE80211_BAND_5GHZ
u8 edcca_mode_5g;
#endif
#if CONFIG_IEEE80211_BAND_6GHZ
u8 edcca_mode_6g;
#endif
#ifdef CONFIG_DFS_MASTER
u8 dfs_domain;
#endif
u8 proto_en;
u8 chset_num;
RT_CHANNEL_INFO chset[0];
};
#ifdef CONFIG_PROC_DEBUG
void dump_cur_country(void *sel, struct rf_ctl_t *rfctl);
void dump_cur_chset(void *sel, struct rf_ctl_t *rfctl);
#endif
int rtw_chset_search_ch(RT_CHANNEL_INFO *ch_set, const u32 ch);
int rtw_chset_search_ch_by_band(RT_CHANNEL_INFO *ch_set, BAND_TYPE band, const u32 ch);
u8 rtw_chset_is_chbw_valid(RT_CHANNEL_INFO *ch_set, u8 ch, u8 bw, u8 offset
, bool allow_primary_passive, bool allow_passive);
void rtw_chset_sync_chbw(RT_CHANNEL_INFO *ch_set, u8 *req_ch, u8 *req_bw, u8 *req_offset
, u8 *g_ch, u8 *g_bw, u8 *g_offset, bool allow_primary_passive, bool allow_passive);
void rtw_rfctl_update_op_mode(struct rf_ctl_t *rfctl, u8 ifbmp_mod, u8 if_op, u8 ifbmp_excl);
bool rtw_mlme_band_check(_adapter *adapter, const u32 ch);
@@ -739,10 +615,19 @@ u8 rtw_get_oper_bw(_adapter *adapter);
void rtw_set_oper_bw(_adapter *adapter, u8 bw);
u8 rtw_get_oper_choffset(_adapter *adapter);
void rtw_set_oper_choffset(_adapter *adapter, u8 offset);
int rtw_get_oper_bchbw_by_hwband(struct dvobj_priv *dvobj, enum phl_band_idx band_idx
, enum band_type *band, u8 *ch, u8 *bw, u8 *offset);
systime rtw_get_on_oper_ch_time(_adapter *adapter);
systime rtw_get_on_cur_ch_time(_adapter *adapter);
void set_channel_bwmode(_adapter *padapter, unsigned char channel, unsigned char channel_offset, unsigned short bwmode);
RTW_FUNC_2G_5G_ONLY void set_channel_bwmode(_adapter *padapter, unsigned char channel, unsigned char channel_offset, unsigned short bwmode);
void set_bch_bwmode(_adapter *padapter,
struct _ADAPTER_LINK *padapter_link,
enum band_type band,
unsigned char channel,
unsigned char channel_offset,
unsigned short bwmode,
u8 do_rfk);
void csa_timer_hdl(void *FunctionContext);
@@ -755,7 +640,7 @@ void rtw_clean_dk_section(_adapter *adapter);
void rtw_clean_hw_dk_cam(_adapter *adapter);
/* modify both HW and cache */
void write_cam(_adapter *padapter, u8 id, u16 ctrl, u8 *mac, u8 *key);
void write_cam(_adapter *padapter, u8 id, u16 ctrl, u8 *mac, u8 *key, bool ext);
void clear_cam_entry(_adapter *padapter, u8 id);
/* modify cache only */
@@ -826,7 +711,8 @@ int rtw_get_bcn_keys(_adapter *adapter, u8 *whdr, u32 flen, struct beacon_keys *
int rtw_get_bcn_keys_from_bss(WLAN_BSSID_EX *bss, struct beacon_keys *bcn_keys);
int rtw_update_bcn_keys_of_network(struct wlan_network *network);
int validate_beacon_len(u8 *pframe, uint len);
int check_ielen(u8 *start, uint len);
int validate_bcn_and_probe_rsp_len(u8 *pframe, uint len);
void rtw_dump_bcn_keys(void *sel, struct beacon_keys *recv_beacon);
void rtw_bcn_key_err_fix(struct beacon_keys *cur, struct beacon_keys *recv);
bool rtw_bcn_key_compare(struct beacon_keys *cur, struct beacon_keys *recv);
@@ -835,15 +721,12 @@ void update_beacon_info(_adapter *padapter, u8 *pframe, uint len, struct sta_inf
#if CONFIG_DFS
void process_csa_ie(_adapter *padapter, u8 *ies, uint ies_len);
#endif
#ifdef CONFIG_80211D
bool rtw_iface_accept_country_ie(_adapter *adapter);
void process_country_ie(_adapter *adapter, u8 *ies, uint ies_len);
#endif
void update_capinfo(PADAPTER Adapter, u16 updateCap);
void update_wireless_mode(_adapter *padapter);
void update_tx_basic_rate(_adapter *padapter, u8 modulation);
void update_sta_basic_rate(struct sta_info *psta, u8 wireless_mode);
int rtw_ies_get_supported_rate(u8 *ies, uint ies_len, u8 *rate_set, u8 *rate_num);
int rtw_elems_get_supported_rate(struct rtw_ieee802_11_elems *elems, u8 *rate_set, u8 *rate_num);
/* for sta/adhoc mode */
void update_sta_info(_adapter *padapter, struct sta_info *psta);
@@ -977,9 +860,9 @@ void issue_probereq(_adapter *padapter, const NDIS_802_11_SSID *pssid, const u8
s32 issue_probereq_ex(_adapter *padapter, const NDIS_802_11_SSID *pssid, const u8 *da, u8 ch, bool append_wps, int try_cnt, int wait_ms);
int issue_nulldata(_adapter *padapter, unsigned char *da, unsigned int power_mode, int try_cnt, int wait_ms);
int issue_qos_nulldata(_adapter *padapter, unsigned char *da, u16 tid, u8 ps, int try_cnt, int wait_ms);
int issue_disasoc(_adapter *adapter, unsigned char *da, unsigned short reason);
int issue_deauth(_adapter *padapter, unsigned char *da, unsigned short reason);
int issue_deauth_ex(_adapter *padapter, u8 *da, unsigned short reason, int try_cnt, int wait_ms);
void issue_action_spct_ch_switch(_adapter *padapter, u8 *ra, u8 new_ch, u8 ch_offset);
void issue_addba_req(_adapter *adapter, unsigned char *ra, u8 tid);
void issue_addba_rsp(_adapter *adapter, unsigned char *ra, u8 tid, u16 status, u8 size);
u8 issue_addba_rsp_wait_ack(_adapter *adapter, unsigned char *ra, u8 tid, u16 status, u8 size, int try_cnt, int wait_ms);
@@ -1006,6 +889,10 @@ void start_clnt_auth(_adapter *padapter);
void start_clnt_join(_adapter *padapter);
void start_create_ibss(_adapter *padapter);
#if defined(CONFIG_LAYER2_ROAMING) && defined(CONFIG_RTW_80211K)
void rtw_roam_nb_discover(_adapter *padapter, u8 bfroce);
#endif
unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame);
unsigned int OnAssocRsp(_adapter *padapter, union recv_frame *precv_frame);
unsigned int OnProbeReq(_adapter *padapter, union recv_frame *precv_frame);
@@ -1173,11 +1060,12 @@ u8 chk_bmc_sleepq_hdl(_adapter *padapter, unsigned char *pbuf);
u8 tx_beacon_hdl(_adapter *padapter, unsigned char *pbuf);
u8 rtw_set_chbw_hdl(_adapter *padapter, u8 *pbuf);
u8 rtw_iqk_hdl(_adapter *padapter, unsigned char *pbuf);
u8 rtw_set_chplan_hdl(_adapter *padapter, unsigned char *pbuf);
u8 rtw_get_chplan_hdl(_adapter *padapter, unsigned char *pbuf);
u8 led_blink_hdl(_adapter *padapter, unsigned char *pbuf);
u8 set_csa_hdl(_adapter *padapter, unsigned char *pbuf); /* Kurt: Handling DFS channel switch announcement ie. */
u8 set_ap_csa_hdl(_adapter *adapter, unsigned char *pbuf);
u8 bcn_control_hdl(_adapter *adapter, unsigned char *pbuf);
void rtw_update_mlme(_adapter *adapter, u8 *frame, u32 frame_len);
u8 rtw_csa_sta_update_cap_hdl(_adapter *adapter, unsigned char *pbuf);
u8 tdls_hdl(_adapter *padapter, unsigned char *pbuf);
u8 run_in_thread_hdl(_adapter *padapter, u8 *pbuf);
u8 rtw_write_bcnlen_hdl(_adapter *padapter, u8 *pbuf);
@@ -1208,7 +1096,7 @@ u8 rtw_mesh_set_plink_state_cmd_hdl(_adapter *adapter, u8 *parmbuf) { return H2C
#endif
struct rtw_cmd wlancmds[] = {
GEN_MLME_EXT_HANDLER(join_cmd_hdl, rtw_joinbss_cmd_callback) /*CMD_JOINBSS*/
GEN_MLME_EXT_HANDLER(join_cmd_hdl, NULL) /*CMD_JOINBSS*/
GEN_MLME_EXT_HANDLER(disconnect_hdl, rtw_disassoc_cmd_callback) /*CMD_DISCONNECT*/
GEN_MLME_EXT_HANDLER(createbss_hdl, NULL) /*CMD_CREATE_BSS*/
GEN_MLME_EXT_HANDLER(setopmode_hdl, NULL) /*CMD_SET_OPMODE*/
@@ -1231,10 +1119,12 @@ struct rtw_cmd wlancmds[] = {
GEN_MLME_EXT_HANDLER(rm_post_event_hdl, NULL) /*CMD_RM_POST_EVENT*/
GEN_MLME_EXT_HANDLER(rtw_mesh_set_plink_state_cmd_hdl, NULL) /*CMD_SET_MESH_PLINK_STATE*/
GEN_MLME_EXT_HANDLER(rtw_iqk_hdl, NULL) /*CMD_DO_IQK*/
GEN_MLME_EXT_HANDLER(rtw_get_chplan_hdl, NULL) /* CMD_GET_CHANPLAN */
GEN_MLME_EXT_HANDLER(rtw_get_chplan_hdl, rtw_get_chplan_callback) /* CMD_GET_CHANPLAN */
GEN_MLME_EXT_HANDLER(rtw_write_bcnlen_hdl, NULL) /* CMD_WRITE_BCN_LEN */
GEN_MLME_EXT_HANDLER(set_ap_csa_hdl, NULL) /* CMD_AP_CHANSWITCH */
GEN_MLME_EXT_HANDLER(rtw_reqtxrpt_cmd_hdl, NULL) /* CMD_REQ_TXRPT */
GEN_MLME_EXT_HANDLER(bcn_control_hdl, NULL) /* CMD_BCN_CONTROL */
GEN_MLME_EXT_HANDLER(rtw_csa_sta_update_cap_hdl, NULL) /* CMD_BCN_CONTROL */
};
#endif
@@ -1270,7 +1160,7 @@ static struct rtw_event wlanevents[] = {
#ifdef CONFIG_IEEE80211W
{sizeof(struct stadel_event), &rtw_sta_timeout_event_callback}, /*EVT_TIMEOUT_STA*/
#endif /* CONFIG_IEEE80211W */
#ifdef CONFIG_RTW_80211R
#if defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_RTW_80211R)
{sizeof(struct stassoc_event), &rtw_ft_reassoc_event_callback}, /*EVT_FT_REASSOC*/
#endif
};

View File

@@ -292,6 +292,12 @@ enum {
MP_DPK,
MP_GET_TSSIDE,
MP_SET_TSSIDE,
MP_ANTDIV,
#ifdef CONFIG_MP_INCLUDED
#ifdef RTW_HALMAC
MP_GPIO,
#endif
#endif
MP_NULL,
#ifdef CONFIG_APPEND_VENDOR_IE_ENABLE
VENDOR_IE_SET ,
@@ -310,7 +316,6 @@ enum {
#endif
MP_SD_IREAD,
MP_SD_IWRITE,
GET_IC_TYPE,
};
struct mp_priv {
@@ -709,6 +714,13 @@ void PhySetTxPowerLevel(PADAPTER pAdapter);
void fill_txdesc_for_mp(PADAPTER padapter, u8 *ptxdesc);
void SetPacketTx(PADAPTER padapter);
void SetPacketRx(PADAPTER pAdapter, u8 bStartRx, u8 bAB);
#ifdef CONFIG_MP_INCLUDED
#ifdef RTW_HALMAC
int SetGpio(PADAPTER pAdapter, u8 gpio_id, u8 gpio_enable, u8 gpio_func_offset, u8 gpio_mode);
#endif
#endif
void ResetPhyRxPktCount(PADAPTER pAdapter);
u32 GetPhyRxPktReceived(PADAPTER pAdapter);
u32 GetPhyRxPktCRC32Error(PADAPTER pAdapter);
@@ -751,8 +763,13 @@ u32 hal_mpt_query_phytxok(PADAPTER pAdapter);
u32 mpt_get_tx_power_finalabs_val(PADAPTER padapter, u8 rf_path);
void mpt_trigger_tssi_tracking(PADAPTER pAdapter, u8 rf_path);
u32 hal_mpt_tssi_turn_target_power(PADAPTER padapter, s16 power_offset, u8 path);
s16 hal_mpt_get_tx_power_mdbm(_adapter *padapter, u8 rf_path);
void hal_mpt_tssi_set_power_offset(PADAPTER padapter, s16 power_offset, u8 path);
#ifdef CONFIG_MP_INCLUDED
#ifdef RTW_HALMAC
int hal_mpt_SetGpio(PADAPTER pAdapter, u8 gpio_id, u8 gpio_enable, u8 gpio_func_offset, u8 gpio_mode);
#endif
#endif
void
PMAC_Get_Pkt_Param(
@@ -948,4 +965,15 @@ int rtw_mp_get_tsside(struct net_device *dev,
int rtw_mp_set_tsside(struct net_device *dev,
struct iw_request_info *info,
struct iw_point *wrqu, char *extra);
int rtw_mp_ant_div(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra);
#ifdef CONFIG_MP_INCLUDED
#ifdef RTW_HALMAC
int rtw_mp_gpio(struct net_device *dev,
struct iw_request_info *info,
struct iw_point *wrqu, char *extra);
#endif
#endif
#endif /* _RTW_MP_H_ */

View File

@@ -41,7 +41,7 @@ typedef enum _HAL_PHYDM_OPS {
#define rtw_phydm_func_for_offchannel(adapter) \
do { \
rtw_phydm_ability_ops(adapter, HAL_PHYDM_DIS_ALL_FUNC, 0); \
if (rtw_odm_adaptivity_needed(adapter)) \
if (rtw_cfg_adaptivity_needed(adapter)) \
rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_SET, ODM_BB_ADAPTIVITY); \
if (IS_ACS_ENABLE(adapter))\
rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_SET, ODM_BB_ENV_MONITOR); \
@@ -50,7 +50,7 @@ typedef enum _HAL_PHYDM_OPS {
#define rtw_phydm_func_for_offchannel(adapter) \
do { \
rtw_phydm_ability_ops(adapter, HAL_PHYDM_DIS_ALL_FUNC, 0); \
if (rtw_odm_adaptivity_needed(adapter)) \
if (rtw_cfg_adaptivity_needed(adapter)) \
rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_SET, ODM_BB_ADAPTIVITY); \
} while (0)
#endif
@@ -73,10 +73,8 @@ static inline u32 rtw_phydm_ability_get(_adapter *adapter)
void rtw_odm_init_ic_type(_adapter *adapter);
void rtw_odm_adaptivity_config_msg(void *sel, _adapter *adapter);
bool rtw_odm_adaptivity_needed(_adapter *adapter);
void rtw_odm_adaptivity_update(struct dvobj_priv *dvobj);
void rtw_edcca_hal_update(struct dvobj_priv *dvobj);
void rtw_odm_adaptivity_ver_msg(void *sel, _adapter *adapter);
void rtw_odm_adaptivity_parm_msg(void *sel, _adapter *adapter);
void rtw_odm_adaptivity_parm_set(_adapter *adapter, s8 th_l2h_ini, s8 th_edcca_hl_diff);
void rtw_odm_get_perpkt_rssi(void *sel, _adapter *adapter);
@@ -86,13 +84,27 @@ void rtw_odm_releasespinlock(_adapter *adapter, enum rt_spinlock_type type);
struct dm_struct;
s16 rtw_odm_get_tx_power_mbm(struct dm_struct *dm, u8 rfpath, u8 rate, u8 bw, u8 cch);
#if CONFIG_TXPWR_LIMIT
enum txpwr_lmt_reg_exc_match {
TXPWR_LMT_REG_EXC_MATCH_NONE = 0,
TXPWR_LMT_REG_EXC_MATCH_COUNTRY,
TXPWR_LMT_REG_EXC_MATCH_DOMAIN,
};
enum txpwr_lmt_reg_exc_match rtw_txpwr_hal_lmt_reg_exc_search(struct dvobj_priv* dvobj, const char *country, u8 domain, const char **reg_name);
bool rtw_txpwr_hal_lmt_reg_search(struct dvobj_priv* dvobj, enum band_type band, const char *name);
void rtw_txpwr_hal_set_current_lmt_regs_by_name(struct dvobj_priv* dvobj, char *names_of_band[], int names_len_of_band[]);
void rtw_txpwr_hal_get_current_lmt_regs_name(struct dvobj_priv* dvobj, char *names_of_band[], int names_len_of_band[]);
#endif /* CONFIG_TXPWR_LIMIT */
#ifdef CONFIG_DFS_MASTER
void rtw_odm_radar_detect_reset(_adapter *adapter);
void rtw_odm_radar_detect_disable(_adapter *adapter);
void rtw_odm_radar_detect_enable(_adapter *adapter);
BOOLEAN rtw_odm_radar_detect(_adapter *adapter);
void rtw_odm_update_dfs_region(struct dvobj_priv *dvobj);
u8 rtw_odm_radar_detect_polling_int_ms(struct dvobj_priv *dvobj);
bool rtw_dfs_hal_region_supported(struct dvobj_priv* dvobj, enum rtw_dfs_regd domain);
void rtw_dfs_hal_update_region(struct dvobj_priv *dvobj, u8 band_idx, enum rtw_dfs_regd domain);
void rtw_dfs_hal_radar_detect_disable(struct dvobj_priv *dvobj, u8 band_idx);
void rtw_dfs_hal_radar_detect_enable(struct dvobj_priv *dvobj, u8 band_idx, bool cac, u32 rd_freq_hi, u32 rd_freq_lo);
void rtw_dfs_hal_set_cac_status(struct dvobj_priv *dvobj, u8 band_idx, bool cac);
void rtw_dfs_hal_radar_detect_result_polling(struct dvobj_priv *dvobj, u8 band_idx, u8 *radar_cch, u8 *radar_bw);
u8 rtw_dfs_hal_radar_detect_polling_int_ms(struct dvobj_priv *dvobj);
#endif /* CONFIG_DFS_MASTER */
void rtw_odm_parse_rx_phy_status_chinfo(union recv_frame *rframe, u8 *phys);

View File

@@ -49,6 +49,9 @@
#define DEFAULT_PATTERN_NUM 3
#endif
#ifdef CONFIG_GOOGLE_CAST_WAKEUP
#define GOOGLE_CAST_PATTERN_NUM 3
#endif
#ifdef CONFIG_WOW_PATTERN_HW_CAM /* Frame Mask Cam number for pattern match */
#define MAX_WKFM_CAM_NUM 12
#else
@@ -85,6 +88,46 @@ typedef struct rtl_priv_pattern {
char mask[MAX_WKFM_SIZE];
} rtl_priv_pattern_t;
#ifdef CONFIG_MDNS_OFFLOAD
#define MAX_MDNS_RESP_NUM 8
#define MAX_MDNS_RESP_LEN 512
#define MAX_MDNS_MATCH_CRITERIA_NUM 8
#define MAX_MDNS_PASSTHRU_NAME_NUM 8
#define MAX_MDNS_DOMAIN_NAME_LEN 255
#define PASSTHRU_FORWARD_ALL 0
#define PASSTHRU_DROP_ALL 1
#define PASSTHRU_LIST 2
struct rtw_mdns_match_criteria {
u16 name_offset;
u16 type;
u8 name_len;
};
struct rtw_mdns_resp_entry {
u16 content_len;
u8 match_ct_num;
u8 content[MAX_MDNS_RESP_LEN];
struct rtw_mdns_match_criteria match_ct[MAX_MDNS_MATCH_CRITERIA_NUM];
};
struct rtw_mdns_passthru_name {
u8 name[MAX_MDNS_DOMAIN_NAME_LEN];
u8 name_len;
};
struct rtw_mdns_passthru_list {
u8 passthru_behavior;
u8 passthru_name_num;
struct rtw_mdns_passthru_name passthru_name[MAX_MDNS_PASSTHRU_NAME_NUM];
};
struct rtw_mdns_ofld_info {
u8 offload_state;
struct rtw_mdns_resp_entry resp_entry[MAX_MDNS_RESP_NUM];
struct rtw_mdns_passthru_list passthru_list;
};
#endif
#endif /* CONFIG_WOWLAN */
enum Power_Mgnt {
@@ -215,8 +258,9 @@ enum _PS_BBRegBackup_ {
enum { /* for ips_mode */
IPS_NONE = 0,
IPS_NORMAL,
IPS_LEVEL_2,
IPS_NORMAL = 1,
IPS_FWIPS = 2,
IPS_FWIPS_LCLK = 3,
IPS_NUM
};
@@ -339,9 +383,14 @@ struct aoac_report {
u8 version_info;
u8 rekey_ok:1;
u8 dummy:7;
u8 reserved[3];
u8 csa_ch_num;
u8 csa_ch_width;
u8 csa_ch_offset;
u8 rxptk_iv[8];
u8 rxgtk_iv[4][8];
u8 igtk_keyid[2];
u8 igtk_pkt_num[6];
u8 igtk[2][32];
};
#ifdef CONFIG_WAR_OFFLOAD
@@ -493,6 +542,7 @@ struct pwrctrl_priv {
u8 bSupportRemoteWakeup;
u8 wowlan_wake_reason;
u8 wowlan_last_wake_reason;
u8 wowlan_is_disconnect_reason;
u8 wowlan_ap_mode;
u8 wowlan_mode;
u8 wowlan_p2p_mode;
@@ -530,6 +580,7 @@ struct pwrctrl_priv {
#endif
u8 wowlan_aoac_rpt_loc;
struct aoac_report wowlan_aoac_rpt;
u8 wowlan_ips_mode;
u8 wowlan_power_mgmt;
u8 wowlan_lps_level;
#ifdef CONFIG_LPS_1T1R
@@ -574,6 +625,9 @@ struct pwrctrl_priv {
u32 wowlan_war_offload_mdns_rsp_cur_size;
#endif /* CONFIG_OFFLOAD_MDNS_V4 || CONFIG_OFFLOAD_MDNS_V6 */
#endif /* CONFIG_WAR_OFFLOAD */
#ifdef CONFIG_MDNS_OFFLOAD
struct rtw_mdns_ofld_info mdns_ofld_info;
#endif
#endif /* CONFIG_WOWLAN */
_timer pwr_state_check_timer;
int pwr_state_check_interval;
@@ -616,7 +670,7 @@ struct pwrctrl_priv {
#endif
#ifdef CONFIG_LPS_PG
struct rsvd_page_cache_t lpspg_info;
#ifdef CONFIG_RTL8822C
#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)
struct rsvd_page_cache_t lpspg_dpk_info;
struct rsvd_page_cache_t lpspg_iqk_info;
#endif
@@ -708,7 +762,11 @@ void traffic_check_for_leave_lps_by_tp(PADAPTER padapter, u8 tx, struct sta_info
void traffic_check_for_leave_lps(PADAPTER padapter, u8 tx, u32 tx_packets);
#endif /*CONFIG_CHECK_LEAVE_LPS*/
void rtw_set_ps_mode(PADAPTER padapter, u8 ps_mode, u8 smart_ps, u8 bcn_ant_mode, const char *msg);
#ifdef CONFIG_FWLPS_IN_IPS
void rtw_set_fw_in_ips_mode(PADAPTER padapter, u8 enable);
u8 rtw_fw_ips_init(_adapter *padapter);
u8 rtw_fw_ips_deinit(_adapter *padapter);
#endif /* CONFIG_FWLPS_IN_IPS */
u8 rtw_set_rpwm(_adapter *padapter, u8 val8);
#ifdef CONFIG_WOWLAN
void rtw_wow_lps_level_decide(_adapter *adapter, u8 wow_en);
@@ -734,6 +792,12 @@ void rtw_unregister_early_suspend(struct pwrctrl_priv *pwrpriv);
#endif /* CONFIG_HAS_EARLYSUSPEND || CONFIG_ANDROID_POWER */
u8 rtw_interface_ps_func(_adapter *padapter, HAL_INTF_PS_FUNC efunc_id, u8 *val);
#ifdef CONFIG_FWLPS_IN_IPS
BOOLEAN rtw_is_fw_ips_mode(_adapter *padapter);
#ifdef CONFIG_LPS_LCLK
BOOLEAN rtw_is_fw_ips_lclk_mode(_adapter *padapter);
#endif /* CONFIG_LPS_LCLK */
#endif /* CONFIG_FWLPS_IN_IPS */
void rtw_set_ips_deny(_adapter *padapter, u32 ms);
int _rtw_pwr_wakeup(_adapter *padapter, u32 ips_deffer_ms, const char *caller);
#define rtw_pwr_wakeup(adapter) _rtw_pwr_wakeup(adapter, RTW_PWR_STATE_CHK_INTERVAL, __FUNCTION__)
@@ -746,6 +810,7 @@ int rtw_pm_set_lps_1t1r(_adapter *padapter, u8 en);
#endif
void rtw_set_lps_deny(_adapter *adapter, u32 ms);
#ifdef CONFIG_WOWLAN
int rtw_pm_set_wow_ips(_adapter *padapter, u8 mode);
int rtw_pm_set_wow_lps(_adapter *padapter, u8 mode);
int rtw_pm_set_wow_lps_level(_adapter *padapter, u8 level);
#ifdef CONFIG_LPS_1T1R

View File

@@ -1,6 +1,6 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2017 Realtek Corporation.
* Copyright(c) 2007 - 2021 Realtek Corporation.
*
* 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
@@ -30,11 +30,9 @@
#define NR_RECVBUFF (8)
#endif
#endif /* CONFIG_SINGLE_RECV_BUF */
#ifdef CONFIG_PREALLOC_RX_SKB_BUFFER
#define NR_PREALLOC_RECV_SKB (rtw_rtkm_get_nr_recv_skb()>>1)
#else /*!CONFIG_PREALLOC_RX_SKB_BUFFER */
#ifndef NR_PREALLOC_RECV_SKB
#define NR_PREALLOC_RECV_SKB 8
#endif /* CONFIG_PREALLOC_RX_SKB_BUFFER */
#endif /* NR_PREALLOC_RECV_SKB */
#ifdef CONFIG_RTW_NAPI
#define RTL_NAPI_WEIGHT (32)
@@ -226,8 +224,17 @@ struct rx_pkt_attrib {
/* #define REORDER_ENTRY_NUM 128 */
#define REORDER_WAIT_TIME (50) /* (ms) */
#if defined(CONFIG_PLATFORM_RTK390X) && defined(CONFIG_USB_HCI)
#ifdef CONFIG_USB_HCI
#ifdef CONFIG_PLATFORM_I386_PC
#define RECVBUFF_ALIGN_SZ 8
#elif defined(CONFIG_PLATFORM_RTK390X)
#define RECVBUFF_ALIGN_SZ 32
#else
#ifndef RECVBUFF_ALIGN_SZ
/* Avoid the Synopsys USB host receive buffer size limit */
#define RECVBUFF_ALIGN_SZ 4096
#endif
#endif
#else
#define RECVBUFF_ALIGN_SZ 8
#endif
@@ -260,7 +267,10 @@ struct recv_stat {
unsigned int rxdw1;
#if !((defined(CONFIG_RTL8192E) || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C)) && defined(CONFIG_PCI_HCI)) /* exclude 8192ee, 8814ae, 8822be, 8821ce */
#if !((defined(CONFIG_RTL8192E) || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) \
|| defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) \
|| defined(CONFIG_RTL8822E)) && defined(CONFIG_PCI_HCI))
/* exclude 8192ee, 8814ae, 8822be, 8821ce */
unsigned int rxdw2;
unsigned int rxdw3;
@@ -530,6 +540,8 @@ struct recv_priv {
struct smooth_rssi_data signal_strength_data;
#endif /* CONFIG_NEW_SIGNAL_STAT_PROCESS */
u16 sink_udpport, pre_rtp_rxseq, cur_rtp_rxseq;
u16 pre_wifi_seq, cur_wifi_seq;
u64 rtp_drop_count;
BOOLEAN store_law_data_flag;
};
@@ -837,15 +849,12 @@ __inline static u8 *recvframe_put(union recv_frame *precvframe, sint sz)
/* used for append sz bytes from ptr to rx_tail, update rx_tail and return the updated rx_tail to the caller */
/* after putting, rx_tail must be still larger than rx_end. */
unsigned char *prev_rx_tail;
/* RTW_INFO("recvframe_put: len=%d\n", sz); */
if (precvframe == NULL)
return NULL;
prev_rx_tail = precvframe->u.hdr.rx_tail;
precvframe->u.hdr.rx_tail += sz;
if (precvframe->u.hdr.rx_tail > precvframe->u.hdr.rx_end) {
@@ -856,11 +865,8 @@ __inline static u8 *recvframe_put(union recv_frame *precvframe, sint sz)
precvframe->u.hdr.len += sz;
return precvframe->u.hdr.rx_tail;
}
__inline static u8 *recvframe_pull_tail(union recv_frame *precvframe, sint sz)
{
/* rmv data from rx_tail (by yitsen) */

View File

@@ -22,6 +22,8 @@
/* slot time for 11g */
#define SHORT_SLOT_TIME 9
#define NON_SHORT_SLOT_TIME 20
#define SLOT_TIME_10M 0xD
#define SLOT_TIME_5M 0x15
#define CENTER_CH_2G_NUM 14
#define CENTER_CH_2G_40M_NUM 9
@@ -54,24 +56,64 @@ extern u8 center_ch_2g_40m[CENTER_CH_2G_40M_NUM];
u8 center_chs_2g_num(u8 bw);
u8 center_chs_2g(u8 bw, u8 id);
#if CONFIG_IEEE80211_BAND_5GHZ
extern u8 center_ch_5g_20m[CENTER_CH_5G_20M_NUM];
extern u8 center_ch_5g_40m[CENTER_CH_5G_40M_NUM];
extern u8 center_ch_5g_20m_40m[CENTER_CH_5G_20M_NUM + CENTER_CH_5G_40M_NUM];
extern u8 center_ch_5g_80m[CENTER_CH_5G_80M_NUM];
extern u8 center_ch_5g_160m[CENTER_CH_5G_160M_NUM];
extern u8 center_ch_5g_all[CENTER_CH_5G_ALL_NUM];
u8 center_chs_5g_num(u8 bw);
u8 center_chs_5g(u8 bw, u8 id);
#endif
u8 rtw_get_scch_by_cch_offset(u8 cch, u8 bw, u8 offset);
u8 rtw_get_scch_by_cch_opch(u8 cch, u8 bw, u8 opch);
#if CONFIG_IEEE80211_BAND_6GHZ
extern u8 center_ch_6g_20m[CENTER_CH_6G_20M_NUM];
extern u8 center_ch_6g_40m[CENTER_CH_6G_40M_NUM];
extern u8 center_ch_6g_80m[CENTER_CH_6G_80M_NUM];
extern u8 center_ch_6g_160m[CENTER_CH_6G_160M_NUM];
u8 rtw_get_op_chs_by_cch_bw(u8 cch, u8 bw, u8 **op_chs, u8 *op_ch_num);
u8 center_chs_6g_num(u8 bw);
u8 center_chs_6g(u8 bw, u8 id);
#endif
u8 rtw_get_offset_by_chbw(u8 ch, u8 bw, u8 *r_offset);
u8 rtw_get_center_ch(u8 ch, u8 bw, u8 offset);
typedef enum band_type {
BAND_ON_2_4G = 0,
BAND_ON_5G = 1,
#if CONFIG_IEEE80211_BAND_6GHZ
BAND_ON_6G = 2,
#endif
BAND_MAX,
BAND_ON_24G = BAND_ON_2_4G,
} BAND_TYPE, *PBAND_TYPE;
u8 rtw_get_ch_group(u8 ch, u8 *group, u8 *cck_group);
extern u8 (*center_chs_num_of_band[BAND_MAX])(u8 bw);
extern u8 (*center_chs_of_band[BAND_MAX])(u8 bw, u8 id);
RTW_FUNC_2G_5G_ONLY u8 rtw_get_scch_by_cch_offset(u8 cch, u8 bw, u8 offset);
RTW_FUNC_2G_5G_ONLY u8 rtw_get_scch_by_cch_opch(u8 cch, u8 bw, u8 opch);
RTW_FUNC_2G_5G_ONLY u8 rtw_get_op_chs_by_cch_bw(u8 cch, u8 bw, u8 **op_chs, u8 *op_ch_num);
RTW_FUNC_2G_5G_ONLY u8 rtw_get_offset_by_chbw(u8 ch, u8 bw, u8 *r_offset);
RTW_FUNC_2G_5G_ONLY u8 rtw_get_center_ch(u8 ch, u8 bw, u8 offset);
RTW_FUNC_2G_5G_ONLY bool rtw_is_chbw_grouped(u8 ch_a, u8 bw_a, u8 offset_a, u8 ch_b, u8 bw_b, u8 offset_b);
RTW_FUNC_2G_5G_ONLY void rtw_sync_chbw(u8 *req_ch, u8 *req_bw, u8 *req_offset, u8 *g_ch, u8 *g_bw, u8 *g_offset);
u8 rtw_get_scch_by_bcch_offset(enum band_type band, u8 cch, u8 bw, u8 offset);
u8 rtw_get_scch_by_bcch_opch(enum band_type band, u8 cch, u8 bw, u8 opch);
u8 rtw_get_op_chs_by_bcch_bw(enum band_type band, u8 cch, u8 bw, u8 **op_chs, u8 *op_ch_num);
u8 rtw_get_offset_by_bchbw(enum band_type band, u8 ch, u8 bw, u8 *r_offset);
u8 rtw_get_offsets_by_bchbw(enum band_type band, u8 ch, u8 bw, u8 *r_offset, u8 *r_offset_num);
u8 rtw_get_center_ch_by_band(enum band_type band, u8 ch, u8 bw, u8 offset);
bool rtw_is_bchbw_grouped(enum band_type band_a, u8 ch_a, u8 bw_a, u8 offset_a
, enum band_type band_b, u8 ch_b, u8 bw_b, u8 offset_b);
void rtw_sync_bchbw(enum band_type *req_band, u8 *req_ch, u8 *req_bw, u8 *req_offset
, enum band_type *g_band, u8 *g_ch, u8 *g_bw, u8 *g_offset);
typedef enum _CAPABILITY {
cESS = 0x0001,
@@ -100,19 +142,24 @@ enum _REG_PREAMBLE_MODE {
#define rf_path_char(path) (((path) >= RF_PATH_MAX) ? 'X' : 'A' + (path))
enum phl_band_idx {
HW_BAND_0,
HW_BAND_MAX
};
#define RTW_RLINK_MAX (HW_BAND_MAX)
#define RTW_RLINK_PRIMARY (0)
/* Bandwidth Offset */
#define HAL_PRIME_CHNL_OFFSET_DONT_CARE 0
#define HAL_PRIME_CHNL_OFFSET_LOWER 1
#define HAL_PRIME_CHNL_OFFSET_UPPER 2
typedef enum _BAND_TYPE {
BAND_ON_2_4G = 0,
BAND_ON_5G = 1,
#if CONFIG_IEEE80211_BAND_6GHZ
BAND_ON_6G = 2,
#endif
BAND_MAX,
} BAND_TYPE, *PBAND_TYPE;
enum chan_offset {
CHAN_OFFSET_NO_EXT = HAL_PRIME_CHNL_OFFSET_DONT_CARE, /*SCN - no secondary channel*/
CHAN_OFFSET_UPPER = HAL_PRIME_CHNL_OFFSET_LOWER, /*SCA - secondary channel above*/
CHAN_OFFSET_LOWER = HAL_PRIME_CHNL_OFFSET_UPPER, /*SCB - secondary channel below*/
};
#ifdef CONFIG_NARROWBAND_SUPPORTING
enum nb_config {
@@ -139,9 +186,10 @@ enum opc_bw {
OPC_BW20 = 0,
OPC_BW40PLUS = 1,
OPC_BW40MINUS = 2,
OPC_BW80 = 3,
OPC_BW160 = 4,
OPC_BW80P80 = 5,
OPC_BW40 = 3,
OPC_BW80 = 4,
OPC_BW160 = 5,
OPC_BW80P80 = 6,
OPC_BW_NUM,
};
@@ -152,10 +200,25 @@ extern const u8 _opc_bw_to_ch_width[OPC_BW_NUM];
#define opc_bw_to_ch_width(bw) (((bw) < OPC_BW_NUM) ? _opc_bw_to_ch_width[(bw)] : CHANNEL_WIDTH_MAX)
/* global op class APIs */
struct op_class_t {
u8 class_id;
enum band_type band;
enum opc_bw bw;
u8 *len_ch_attr;
};
#define OPC_CH_LIST_LEN(_opc) (_opc.len_ch_attr[0])
#define OPC_CH_LIST_CH(_opc, _i) (_opc.len_ch_attr[_i + 1])
extern const struct op_class_t global_op_class[];
extern const int global_op_class_num;
const struct op_class_t *get_global_op_class_by_id(u8 gid);
bool is_valid_global_op_class_id(u8 gid);
bool is_valid_global_op_class_ch(const struct op_class_t *opc, u8 ch);
s16 get_sub_op_class(u8 gid, u8 ch);
void dump_global_op_class(void *sel);
u8 rtw_get_op_class_by_chbw(u8 ch, u8 bw, u8 offset);
RTW_FUNC_2G_5G_ONLY u8 rtw_get_op_class_by_chbw(u8 ch, u8 bw, u8 offset);
u8 rtw_get_op_class_by_bchbw(enum band_type band, u8 ch, u8 bw, u8 offset);
u8 rtw_get_bw_offset_by_op_class_ch(u8 gid, u8 ch, u8 *bw, u8 *offset);
int get_supported_op_class(_adapter *padapter, u8 *op_set, int len);
@@ -168,7 +231,7 @@ struct op_ch_t {
struct op_class_pref_t {
u8 class_id;
BAND_TYPE band;
enum band_type band;
enum opc_bw bw;
u8 ch_num; /* number of chs */
u8 op_ch_num; /* channel number which is not static non operable */
@@ -176,31 +239,21 @@ struct op_class_pref_t {
struct op_ch_t chs[];
};
int op_class_pref_init(_adapter *adapter);
void op_class_pref_deinit(_adapter *adapter);
struct rf_ctl_t;
int rtw_rfctl_op_class_pref_init(struct rf_ctl_t *rfctl, u8 band_bmp, u8 bw_bmp[]);
void rtw_rfctl_op_class_pref_deinit(struct rf_ctl_t *rfctl);
#define REG_BEACON_HINT 0
#define REG_TXPWR_CHANGE 1
#define REG_CHANGE 2
void op_class_pref_apply_regulatory(_adapter *adapter, u8 reason);
void op_class_pref_apply_regulatory(struct rf_ctl_t *rfctl, u8 reason);
struct rf_ctl_t;
void dump_cap_spt_op_class_ch(void *sel, struct rf_ctl_t *rfctl, bool detail);
void dump_reg_spt_op_class_ch(void *sel, struct rf_ctl_t *rfctl, bool detail);
void dump_cur_spt_op_class_ch(void *sel, struct rf_ctl_t *rfctl, bool detail);
/*
* Represent Extention Channel Offset in HT Capabilities
* This is available only in 40Mhz mode.
* */
typedef enum _EXTCHNL_OFFSET {
EXTCHNL_OFFSET_NO_EXT = 0,
EXTCHNL_OFFSET_UPPER = 1,
EXTCHNL_OFFSET_NO_DEF = 2,
EXTCHNL_OFFSET_LOWER = 3,
} EXTCHNL_OFFSET, *PEXTCHNL_OFFSET;
typedef enum _VHT_DATA_SC {
VHT_DATA_SC_DONOT_CARE = 0,
VHT_DATA_SC_20_UPPER_OF_80MHZ = 1,
@@ -242,16 +295,15 @@ u8 rtw_restrict_trx_path_bmp_by_rftype(u8 trx_path_bmp, enum rf_type type, u8 *t
void tx_path_nss_set_default(enum bb_path txpath_nss[], u8 txpath_num_nss[], u8 txpath);
void tx_path_nss_set_full_tx(enum bb_path txpath_nss[], u8 txpath_num_nss[], u8 txpath);
#if CONFIG_IEEE80211_BAND_6GHZ
int rtw_6gch2freq(int chan);
#endif
int rtw_ch2freq(int chan);
int rtw_ch2freq_by_band(BAND_TYPE band, int ch);
RTW_FUNC_2G_5G_ONLY int rtw_ch2freq(int chan);
int rtw_bch2freq(enum band_type band, int ch);
int rtw_freq2ch(int freq);
BAND_TYPE rtw_freq2band(int freq);
enum band_type rtw_freq2band(int freq);
enum channel_width rtw_frange_to_bw(u32 hi, u32 lo);
bool rtw_freq_consecutive(int a, int b);
bool rtw_chbw_to_freq_range(u8 ch, u8 bw, u8 offset, u32 *hi, u32 *lo);
bool rtw_bcchbw_to_freq_range(enum band_type band, u8 c_ch, u8 bw, u32 *hi, u32 *lo);
bool rtw_bchbw_to_freq_range(enum band_type band, u8 ch, u8 bw, u8 offset, u32 *hi, u32 *lo);
RTW_FUNC_2G_5G_ONLY bool rtw_chbw_to_freq_range(u8 ch, u8 bw, u8 offset, u32 *hi, u32 *lo);
struct rf_ctl_t;
@@ -263,31 +315,6 @@ void txpwr_idx_get_dbm_str(s8 idx, u8 txgi_max, u8 txgi_pdbm, SIZE_T cwidth, cha
void txpwr_mbm_get_dbm_str(s16 mbm, SIZE_T cwidth, char dbm_str[], u8 dbm_str_len);
s16 mb_of_ntx(u8 ntx);
#if CONFIG_TXPWR_LIMIT
struct regd_exc_ent {
_list list;
char country[2];
u8 domain;
char lmt_name[0];
};
void dump_regd_exc_list(void *sel, struct rf_ctl_t *rfctl);
void rtw_regd_exc_add_with_nlen(struct rf_ctl_t *rfctl, const char *country, u8 domain, const char *lmt_name, u32 nlen);
void rtw_regd_exc_add(struct rf_ctl_t *rfctl, const char *country, u8 domain, const char *lmt_name);
struct regd_exc_ent *_rtw_regd_exc_search(struct rf_ctl_t *rfctl, const char *country, u8 domain);
struct regd_exc_ent *rtw_regd_exc_search(struct rf_ctl_t *rfctl, const char *country, u8 domain);
void rtw_regd_exc_list_free(struct rf_ctl_t *rfctl);
void dump_txpwr_lmt(void *sel, _adapter *adapter);
void rtw_txpwr_lmt_add_with_nlen(struct rf_ctl_t *rfctl, const char *lmt_name, u32 nlen
, u8 band, u8 bw, u8 tlrs, u8 ntx_idx, u8 ch_idx, s8 lmt);
void rtw_txpwr_lmt_add(struct rf_ctl_t *rfctl, const char *lmt_name
, u8 band, u8 bw, u8 tlrs, u8 ntx_idx, u8 ch_idx, s8 lmt);
struct txpwr_lmt_ent *_rtw_txpwr_lmt_get_by_name(struct rf_ctl_t *rfctl, const char *lmt_name);
struct txpwr_lmt_ent *rtw_txpwr_lmt_get_by_name(struct rf_ctl_t *rfctl, const char *lmt_name);
void rtw_txpwr_lmt_list_free(struct rf_ctl_t *rfctl);
#endif /* CONFIG_TXPWR_LIMIT */
#define BB_GAIN_2G 0
#if CONFIG_IEEE80211_BAND_5GHZ
#define BB_GAIN_5GLB1 1
@@ -307,29 +334,11 @@ int rtw_ch_to_bb_gain_sel(int ch);
void rtw_rf_set_tx_gain_offset(_adapter *adapter, u8 path, s8 offset);
void rtw_rf_apply_tx_gain_offset(_adapter *adapter, u8 ch);
/* only check channel ranges */
#define rtw_is_2g_ch(ch) (ch >= 1 && ch <= 14)
#define rtw_is_5g_ch(ch) ((ch) >= 36 && (ch) <= 177)
#define rtw_is_same_band(a, b) \
((rtw_is_2g_ch(a) && rtw_is_2g_ch(b)) \
|| (rtw_is_5g_ch(a) && rtw_is_5g_ch(b)))
#define rtw_is_5g_band1(ch) ((ch) >= 36 && (ch) <= 48)
#define rtw_is_5g_band2(ch) ((ch) >= 52 && (ch) <= 64)
#define rtw_is_5g_band3(ch) ((ch) >= 100 && (ch) <= 144)
#define rtw_is_5g_band4(ch) ((ch) >= 149 && (ch) <= 177)
#define rtw_is_same_5g_band(a, b) \
((rtw_is_5g_band1(a) && rtw_is_5g_band1(b)) \
|| (rtw_is_5g_band2(a) && rtw_is_5g_band2(b)) \
|| (rtw_is_5g_band3(a) && rtw_is_5g_band3(b)) \
|| (rtw_is_5g_band4(a) && rtw_is_5g_band4(b)))
#define rtw_is_6g_band1(ch) ((ch) >= 1 && (ch) <= 93)
#define rtw_is_6g_band2(ch) ((ch) >= 97 && (ch) <= 117)
#define rtw_is_6g_band3(ch) ((ch) >= 121 && (ch) <= 189)
#define rtw_is_6g_band4(ch) ((ch) >= 193 && (ch) <= 237)
RTW_FUNC_2G_5G_ONLY static inline bool rtw_is_2g_ch(u8 ch) { return ch >= 1 && ch <= 14; }
RTW_FUNC_2G_5G_ONLY static inline bool rtw_is_5g_ch(u8 ch) { return ch >= 36 && ch <= 177; }
bool rtw_is_long_cac_range(u32 hi, u32 lo, u8 dfs_region);
bool rtw_is_long_cac_ch(u8 ch, u8 bw, u8 offset, u8 dfs_region);
RTW_FUNC_2G_5G_ONLY bool rtw_is_long_cac_ch(u8 ch, u8 bw, u8 offset, u8 dfs_region);
bool rtw_is_long_cac_bch(enum band_type band, u8 ch, u8 bw, u8 offset, u8 dfs_region);
#endif /* _RTL8711_RF_H_ */

View File

@@ -93,6 +93,7 @@ void rtw_ap_parse_sta_rm_en_cap(_adapter *padapter,
int rm_post_event(_adapter *padapter, u32 rmid, enum RM_EV_ID evid);
void rm_handler(_adapter *padapter, struct rm_event *pev);
int rm_get_chset(struct rm_obj *prm);
u8 rm_add_nb_req(_adapter *padapter, struct sta_info *psta);

View File

@@ -54,7 +54,7 @@ u32 rtw_rson_append_ie(_adapter *padapter, unsigned char *pframe, u32 *len);
void rtw_rson_do_disconnect(_adapter *padapter);
void rtw_rson_join_done(_adapter *padapter);
int rtw_rson_isupdate_roamcan(struct mlme_priv *mlme, struct wlan_network **candidate, struct wlan_network *competitor);
void rtw_rson_show_survey_info(struct seq_file *m, _list *plist, _list *phead);
void rtw_rson_show_survey_info(void *sel, _adapter *padapter);
u8 rtw_rson_ap_check_sta(_adapter *padapter, u8 *pframe, uint pkt_len, unsigned short ie_offset);
u8 rtw_rson_scan_wk_cmd(_adapter *padapter, int op);
void rtw_rson_scan_cmd_hdl(_adapter *padapter, int op);

View File

@@ -25,22 +25,20 @@ enum security_type {
_WEP104_ = 0x05,
_SMS4_ = 0x06,
_GCMP_ = 0x07,
#ifdef CONFIG_IEEE80211W
_BIP_CMAC_128_ = 0x08,
_BIP_GMAC_128_ = 0x09,
#endif
_SEC_TYPE_MAX_,
/* EXT_SECTYPE=1 */
_SEC_TYPE_256_ = 0x10,
_CCMP_256_ = (_AES_ | _SEC_TYPE_256_),
_GCMP_256_ = (_GCMP_ | _SEC_TYPE_256_),
#ifdef CONFIG_IEEE80211W
/* EXT_SECTYPE=0, MGNT=1, GK=0/1, KEYID=00/01 */
_SEC_TYPE_BIT_ = 0x20,
_BIP_CMAC_128_ = (_SEC_TYPE_BIT_),
_BIP_GMAC_128_ = (_SEC_TYPE_BIT_ + 1),
_BIP_GMAC_256_ = (_SEC_TYPE_BIT_ + 2),
/* EXT_SECTYPE=1, MGNT=1, GK=1, KEYID=00/01 */
_BIP_CMAC_256_ = (_SEC_TYPE_BIT_ + 3),
_BIP_MAX_,
_BIP_CMAC_256_ = (_BIP_CMAC_128_ | _SEC_TYPE_256_),
_BIP_GMAC_256_ = (_BIP_GMAC_128_ | _SEC_TYPE_256_),
#endif
};
@@ -216,7 +214,6 @@ struct security_priv {
u8 assoc_info[600];
u8 szofcapability[256]; /* for wpa2 usage */
u8 oidassociation[512]; /* for wpa/wpa2 usage */
u8 authenticator_ie[256]; /* store ap security information element */
u8 supplicant_ie[256]; /* store sta security information element */
@@ -296,7 +293,7 @@ struct security_priv {
} \
} while (0)
#define _AES_IV_LEN_ 8
#define IV_LENGTH 8
#define SET_ICE_IV_LEN(iv_len, icv_len, encrypt)\
do {\
@@ -419,6 +416,12 @@ u16 rtw_calc_crc(u8 *pdata, int length);
#define rtw_sec_chk_auth_type(a, s) \
((a)->securitypriv.auth_type == (s))
#define IV_FMT "0x%02x%02x%02x%02x%02x%02x%02x%02x"
#define IV_ARG(iv) iv[7], iv[6], iv[5], iv[4], iv[3], iv[2], iv[1], iv[0]
#define PN_FMT "0x%02x%02x%02x%02x%02x%02x"
#define PN_ARG(pn) pn[5], pn[4], pn[3], pn[2], pn[1], pn[0]
u8 rtw_iv_to_pn(u8 *iv, u8 *pn, u8 *key_id, u32 enc_algo);
u8 rtw_pn_to_iv(u8 *pn, u8 *iv, u8 key_id, u32 enc_algo);
#endif /* __RTL871X_SECURITY_H_ */
u32 rtw_calc_crc32(u8 *data, size_t len);

View File

@@ -1,2 +1,2 @@
#define DRIVERVERSION "v5.14.0.2-0-g4c549b2.20210914_COEX20211210-2727"
#define BTCOEXVERSION "COEX20211210-2727"
#define DRIVERVERSION "v5.15.8.3-17-g157acb413.20240221_COEX20221215-3130"
#define BTCOEXVERSION "COEX20221215-3130"

View File

@@ -208,7 +208,7 @@ void VHT_caps_handler_infra_ap(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE
#endif /* ROKU_PRIVATE */
void VHT_operation_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE);
void rtw_process_vht_op_mode_notify(_adapter *padapter, u8 *pframe, void *sta);
u32 rtw_restructure_vht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, struct country_chplan *req_chplan);
u32 rtw_restructure_vht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, u8 channel);
void VHTOnAssocRsp(_adapter *padapter);
u8 rtw_vht_mcsmap_to_nss(u8 *pvht_mcs_map);
void rtw_vht_nss_to_mcsmap(u8 nss, u8 *target_mcs_map, u8 *cur_mcs_map);

View File

@@ -201,7 +201,7 @@ void rtw_build_beacon_wapi_ie(_adapter *padapter, unsigned char *pframe, struct
void rtw_build_assoc_req_wapi_ie(_adapter *padapter, unsigned char *pframe, struct pkt_attrib *pattrib);
void rtw_wapi_on_assoc_ok(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE);
void rtw_wapi_on_assoc_ok(_adapter *padapter);
void rtw_wapi_return_one_sta_info(_adapter *padapter, u8 *MacAddr);

View File

@@ -45,8 +45,7 @@
(_rtw_memcmp((a)->mlmepriv.nb_info.roam_target_addr,\
(c)->network.MacAddress, ETH_ALEN)))
#define rtw_wnm_set_ext_cap_btm(_pEleStart, _val) \
SET_BITS_TO_LE_1BYTE(((u8 *)(_pEleStart))+2, 3, 1, _val)
#define rtw_wnm_add_btm_ext_cap(d, l) rtw_add_ext_cap_info(d, l, BSS_TRANSITION)
#define wnm_btm_bss_term_inc(p) (*((u8 *)((p)+3)) & BSS_TERMINATION_INCLUDED)
@@ -54,6 +53,8 @@
#define wnm_btm_dialog_token(p) (*((u8 *)((p)+2)))
#define wnm_btm_query_reason(p) (*((u8 *)((p)+3)))
#define wnm_btm_req_mode(p) (*((u8 *)((p)+3)))
#define wnm_btm_disassoc_timer(p) (*((u16 *)((p)+4)))
@@ -176,7 +177,14 @@ void rtw_wnm_disassoc_chk_hdl(void *ctx);
u8 rtw_wnm_try_btm_roam_imnt(_adapter *padapter);
void rtw_wnm_process_btm_req(_adapter *padapter, u8* pframe, u32 frame_len);
void rtw_wnm_process_btm_query(_adapter *padapter,
u8* pframe, u32 frame_len);
void rtw_wnm_process_btm_req(_adapter *padapter,
u8* pframe, u32 frame_len);
void rtw_wnm_process_notification_req(
_adapter *padapter, u8* pframe, u32 frame_len);
void rtw_wnm_reset_btm_candidate(struct roam_nb_info *pnb);

View File

@@ -18,7 +18,7 @@
#if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
#ifdef CONFIG_TX_AGGREGATION
#ifdef CONFIG_RTL8822C
#if defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)
#ifdef CONFIG_SDIO_TX_FORMAT_DUMMY_AUTO
#define MAX_XMITBUF_SZ (51200)
#else
@@ -100,8 +100,10 @@
#define MAX_CMDBUF_SZ (512 * 18)
#elif defined(CONFIG_RTL8723D) && defined(CONFIG_LPS_POFF)
#define MAX_CMDBUF_SZ (128*70) /*(8960)*/
#elif defined(CONFIG_RTL8822C) && defined(CONFIG_WAR_OFFLOAD)
#elif (defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)) && (defined(CONFIG_WAR_OFFLOAD) || defined(CONFIG_MDNS_OFFLOAD))
#define MAX_CMDBUF_SZ (128*128) /*(16k) */
#elif defined(CONFIG_RTL8723F) && defined(CONFIG_WAR_OFFLOAD)
#define MAX_CMDBUF_SZ (128*64) /*(8192) */
#else
#define MAX_CMDBUF_SZ (5120) /* (4096) */
#endif
@@ -221,7 +223,7 @@ enum DEQUEUE_TYPE {
defined(CONFIG_RTL8710B) || defined(CONFIG_RTL8192F) ||\
defined(CONFIG_RTL8723F)
#define TXDESC_SIZE 40
#elif defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C)
#elif defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)
#define TXDESC_SIZE 48 /* HALMAC_TX_DESC_SIZE_8822B */
#elif defined(CONFIG_RTL8821C)
#define TXDESC_SIZE 48 /* HALMAC_TX_DESC_SIZE_8821C */
@@ -250,7 +252,9 @@ enum DEQUEUE_TYPE {
#endif
#ifdef CONFIG_PCI_HCI
#if defined(CONFIG_RTL8192E) || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || defined(CONFIG_TRX_BD_ARCH)
#if defined(CONFIG_RTL8192E) || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) \
|| defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) \
|| defined(CONFIG_RTL8822E) || defined(CONFIG_TRX_BD_ARCH)
/* this section is defined for buffer descriptor ring architecture */
#define TX_WIFI_INFO_SIZE (TXDESC_SIZE) /* it may add 802.11 hdr or others... */
/* tx desc and payload are in the same buf */
@@ -289,7 +293,9 @@ struct tx_buf_desc {
#endif
unsigned int dword[TX_BUFFER_SEG_SIZE * (2 << TX_BUFFER_SEG_NUM)];
} __packed;
#elif (defined(CONFIG_RTL8192E) || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C)) && defined(CONFIG_PCI_HCI) /* 8192ee or 8814ae */
#elif (defined(CONFIG_RTL8192E) || defined(CONFIG_RTL8814A) || defined(CONFIG_RTL8822B) \
|| defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8822E)) \
&& defined(CONFIG_PCI_HCI) /* 8192ee or 8814ae */
/* 8192EE_TODO */
struct tx_desc {
unsigned int txdw0;
@@ -538,6 +544,7 @@ struct submit_ctx {
systime submit_time; /* */
u32 timeout_ms; /* <0: not synchronous, 0: wait forever, >0: up to ms waiting */
int status; /* status for operation */
void *rsp; /* rsp buffer allocated by handler */
#ifdef PLATFORM_LINUX
struct completion done;
#endif
@@ -894,6 +901,10 @@ extern struct xmit_frame *__rtw_alloc_cmdxmitframe_8192ee(struct xmit_priv *pxmi
extern struct xmit_frame *__rtw_alloc_cmdxmitframe_8822be(struct xmit_priv *pxmitpriv,
enum cmdbuf_type buf_type);
#define rtw_alloc_bcnxmitframe(p) __rtw_alloc_cmdxmitframe_8822be(p, CMDBUF_BEACON)
#elif defined(CONFIG_RTL8822E) && defined(CONFIG_PCI_HCI)
extern struct xmit_frame *__rtw_alloc_cmdxmitframe_8822ee(struct xmit_priv *pxmitpriv,
enum cmdbuf_type buf_type);
#define rtw_alloc_bcnxmitframe(p) __rtw_alloc_cmdxmitframe_8822ee(p, CMDBUF_BEACON)
#elif defined(CONFIG_RTL8822C) && defined(CONFIG_PCI_HCI)
extern struct xmit_frame *__rtw_alloc_cmdxmitframe_8822ce(struct xmit_priv *pxmitpriv,
enum cmdbuf_type buf_type);
@@ -1012,7 +1023,7 @@ u8 rtw_get_tx_bw_bmp_of_vht_rate(struct dvobj_priv *dvobj, u8 rate, u8 max_bw);
s16 rtw_adapter_get_oper_txpwr_max_mbm(_adapter *adapter, bool eirp);
s16 rtw_rfctl_get_oper_txpwr_max_mbm(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset, u8 ifbmp_mod, u8 if_op, bool eirp);
s16 rtw_get_oper_txpwr_max_mbm(struct dvobj_priv *dvobj, bool erip);
s16 rtw_rfctl_get_reg_max_txpwr_mbm(struct rf_ctl_t *rfctl, u8 ch, u8 bw, u8 offset, bool eirp);
s16 rtw_rfctl_get_reg_max_txpwr_mbm(struct rf_ctl_t *rfctl, enum band_type band, u8 ch, u8 bw, u8 offset, bool eirp);
u8 query_ra_short_GI(struct sta_info *psta, u8 bw);

View File

@@ -74,7 +74,7 @@ void ClearInterrupt8821AS(PADAPTER padapter);
#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
#if defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8822C) \
|| defined(CONFIG_RTL8723F)
|| defined(CONFIG_RTL8723F) || defined(CONFIG_RTL8822E)
u8 rtw_hal_enable_cpwm2(_adapter *adapter);
#endif
extern u8 RecvOnePkt(PADAPTER padapter);

View File

@@ -269,6 +269,7 @@ struct sta_info {
_lock lock;
_list list; /* free_sta_queue */
_list hash_list; /* sta_hash */
bool is_freeing;
/* _list asoc_list; */ /* 20061114 */
/* _list sleep_list; */ /* sleep_q */
/* _list wakeup_list; */ /* wakeup_q */
@@ -419,10 +420,6 @@ struct sta_info {
u32 akm_suite_type;
#ifdef CONFIG_RTW_80211R
u8 ft_pairwise_key_installed;
#endif
#ifdef CONFIG_NATIVEAP_MLME
u8 wpa_ie[32];
@@ -524,6 +521,11 @@ struct sta_info {
// u8 tbtx_timeslot; /* This sta_info belong to which time slot. */
#endif
#ifdef CONFIG_RTW_80211R
struct rtw_sta_ft_info_t ft_peer;
u8 ft_pairwise_key_installed;
#endif
/*
* Vaiables for queuing TX pkt a short period of time
* to wait something ready.
@@ -533,6 +535,8 @@ struct sta_info {
_workitem tx_q_work;
};
#define STA_MACADDR(sta) (sta)->cmn.mac_addr
#ifdef CONFIG_RTW_MESH
#define STA_SET_MESH_PLINK(sta, link) (sta)->plink = link
#else
@@ -761,13 +765,20 @@ struct sta_info *rtw_get_stainfo_by_offset(struct sta_priv *stapriv, int offset)
extern struct sta_info *rtw_alloc_stainfo(struct sta_priv *pstapriv, const u8 *hwaddr);
extern u32 rtw_free_stainfo(_adapter *padapter , struct sta_info *psta);
extern void rtw_free_all_stainfo(_adapter *padapter);
extern struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, const u8 *hwaddr);
extern struct sta_info *rtw_get_stainfo(struct sta_priv *stapriv, const u8 *hwaddr);
struct sta_info *rtw_get_stainfo_to_free(struct sta_priv *stapriv, const u8 *hwaddr);
void rtw_stainfo_claim_to_free_no_lock(struct sta_info *sta);
void rtw_stainfo_claim_to_free(struct sta_info *sta);
extern u32 rtw_init_bcmc_stainfo(_adapter *padapter);
extern struct sta_info *rtw_get_bcmc_stainfo(_adapter *padapter);
#ifdef CONFIG_AP_MODE
u16 rtw_aid_alloc(_adapter *adapter, struct sta_info *sta);
void dump_aid_status(void *sel, _adapter *adapter);
void rtw_stapriv_asoc_list_lock(struct sta_priv *stapriv);
void rtw_stapriv_asoc_list_unlock(struct sta_priv *stapriv);
void rtw_stapriv_asoc_list_add(struct sta_priv *stapriv, struct sta_info *sta);
void rtw_stapriv_asoc_list_del(struct sta_priv *stapriv, struct sta_info *sta);
#endif
#if CONFIG_RTW_MACADDR_ACL

View File

@@ -1363,4 +1363,7 @@ struct rtw_regulatory {
#endif
#endif
#define GET_MULTIPLE_BSSID_IDX_INDEX(_pEleStart) \
LE_BITS_TO_1BYTE((_pEleStart) + 2, 0, 8)
#endif /* _WIFI_H_ */

View File

@@ -248,6 +248,13 @@ typedef struct _WLAN_BSSID_EX {
}
__attribute__((packed)) WLAN_BSSID_EX, *PWLAN_BSSID_EX;
#define BSS_EX_OP_CH(bss_ex) ((bss_ex)->Configuration.DSConfig)
#define BSS_EX_OP_BAND(bss_ex) (rtw_is_2g_ch(BSS_EX_OP_CH(bss_ex)) ? BAND_ON_24G : BAND_ON_5G)
#ifdef CONFIG_STA_MULTIPLE_BSSID
#define BSS_EX_MBSSID_IDX(bss_ex) ((bss_ex)->mbssid_index)
#else
#define BSS_EX_MBSSID_IDX(bss_ex) 0
#endif
#define BSS_EX_IES(bss_ex) ((bss_ex)->IEs)
#define BSS_EX_IES_LEN(bss_ex) ((bss_ex)->IELength)
#define BSS_EX_FIXED_IE_OFFSET(bss_ex) ((bss_ex)->Reserved[0] == BSS_TYPE_PROB_REQ ? 0 : 12)
@@ -271,27 +278,11 @@ struct beacon_keys {
int encryp_protocol;
int pairwise_cipher;
int group_cipher;
int gmcs;
u32 akm;
};
struct wlan_network {
_list list;
int network_type; /* refer to ieee80211.h for WIRELESS_11A/B/G */
int fixed; /* set to fixed when not to be removed as site-surveying */
systime last_scanned; /* timestamp for the network */
systime last_non_hidden_ssid_ap;
#ifdef CONFIG_RTW_MESH
#if CONFIG_RTW_MESH_ACNODE_PREVENT
systime acnode_stime;
systime acnode_notify_etime;
#endif
#endif
int aid; /* will only be valid when a BSS is joinned. */
int join_res;
struct beacon_keys bcn_keys;
bool bcn_keys_valid;
WLAN_BSSID_EX network; /* must be the last item */
};
struct wlan_network;
enum VRTL_CARRIER_SENSE {
DISABLE_VCS,