/******************************************************************************
 *
 * 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
 * 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 __DRV_CONF_H__
#define __DRV_CONF_H__
#include "autoconf.h"

#define CONFIG_RSSI_PRIORITY
#define CONFIG_POST_CORE_KEEP_ALIVE

/*temporary defination,this flag will be removed later*/
#define CONFIG_PHL_WACHDOG_REFINE

/*
 * RTW_BUSY_DENY_SCAN control if scan would be denied by busy traffic.
 * When this defined, BUSY_TRAFFIC_SCAN_DENY_PERIOD would be used to judge if 
 * scan request coming from scan UI. Scan request from scan UI would be
 * exception and never be denied by busy traffic.
 */
#define RTW_BUSY_DENY_SCAN

#if defined(CONFIG_MCC_MODE) && (!defined(CONFIG_CONCURRENT_MODE))

	#error "Enable CONCURRENT_MODE before enable MCC MODE\n"

#endif

#if defined(CONFIG_MCC_MODE) && defined(CONFIG_TDLS)

	#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"

#endif

#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>

	#ifndef CONFIG_PLATFORM_ANDROID
	#define CONFIG_PLATFORM_ANDROID
	#endif
	
	#ifndef CONFIG_IOCTL_CFG80211
	#define CONFIG_IOCTL_CFG80211
	#endif
	
	#ifndef RTW_USE_CFG80211_STA_EVENT
	#define RTW_USE_CFG80211_STA_EVENT
	#endif

	#if (CONFIG_RTW_ANDROID > 4)
	#ifndef CONFIG_RADIO_WORK
	#define CONFIG_RADIO_WORK
	#endif
	#endif

	#if (CONFIG_RTW_ANDROID >= 8)
		#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,18,0))
		#ifndef CONFIG_RTW_WIFI_HAL
		#define CONFIG_RTW_WIFI_HAL
		#endif
		#else
 		#error "Linux kernel version is too old\n"
		#endif
	#endif

	#if (CONFIG_RTW_ANDROID >= 11)
		#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,4,0))
			#ifndef CONFIG_RTW_ANDROID_GKI
			#define CONFIG_RTW_ANDROID_GKI
			#endif
		#endif

		#ifdef CONFIG_RTW_ANDROID_GKI
			#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE
			#undef CONFIG_ADAPTOR_INFO_CACHING_FILE
			#endif
		#endif
	#endif

	#ifdef CONFIG_RTW_WIFI_HAL
	#ifndef CONFIG_RTW_WIFI_HAL_DEBUG
	//#define CONFIG_RTW_WIFI_HAL_DEBUG
	#endif
	#if (CONFIG_RTW_ANDROID < 11)
	#ifndef CONFIG_RTW_CFGVENDOR_LLSTATS
	#define CONFIG_RTW_CFGVENDOR_LLSTATS
	#endif
	#endif
	#if (CONFIG_RTW_ANDROID < 11)
	#ifndef CONFIG_RTW_CFGVENDOR_RANDOM_MAC_OUI
	#define CONFIG_RTW_CFGVENDOR_RANDOM_MAC_OUI
	#endif
	#else /* CONFIG_RTW_ANDROID >= 11 */
	#ifndef CONFIG_RTW_SCAN_RAND
	#define CONFIG_RTW_SCAN_RAND
	#endif
	#endif /* CONFIG_RTW_ANDROID */
	#ifndef CONFIG_RTW_CFGVENDOR_RSSIMONITOR
	#define CONFIG_RTW_CFGVENDOR_RSSIMONITOR
	#endif
	#ifndef CONFIG_RTW_CFGVENDOR_WIFI_LOGGER
	#define CONFIG_RTW_CFGVENDOR_WIFI_LOGGER
	#endif
	#if (CONFIG_RTW_ANDROID >= 10)
	#ifndef CONFIG_RTW_CFGVENDOR_WIFI_OFFLOAD
	//#define CONFIG_RTW_CFGVENDOR_WIFI_OFFLOAD
	#endif
	#ifndef CONFIG_KERNEL_PATCH_EXTERNAL_AUTH
	#define CONFIG_KERNEL_PATCH_EXTERNAL_AUTH
	#endif
	#endif
	#endif // CONFIG_RTW_WIFI_HAL


	/* Some Android build will restart the UI while non-printable ascii is passed
	* between java and c/c++ layer (JNI). We force CONFIG_VALIDATE_SSID
	* for Android here. If you are sure there is no risk on your system about this,
	* mask this macro define to support non-printable ascii ssid.
	* #define CONFIG_VALIDATE_SSID */

	/* Android expect dbm as the rx signal strength unit */
	#define CONFIG_SIGNAL_DISPLAY_DBM
#else // for Linux

	#ifndef CONFIG_RTW_SCAN_RAND
	#define CONFIG_RTW_SCAN_RAND
	#endif

#endif // CONFIG_RTW_ANDROID

#define RTW_PER_ADAPTER_WIPHY 0

#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"
	#undef CONFIG_RESUME_IN_WORKQUEUE
#endif

#if defined(CONFIG_ANDROID_POWER) && defined(CONFIG_RESUME_IN_WORKQUEUE)
	#warning "You have CONFIG_ANDROID_POWER enabled in your system, we disable CONFIG_RESUME_IN_WORKQUEUE automatically"
	#undef CONFIG_RESUME_IN_WORKQUEUE
#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"
	#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"
	#define CONFIG_USB_VENDOR_REQ_MUTEX
#endif

#ifdef CONFIG_WIFI_MONITOR
	/*	#define CONFIG_MONITOR_MODE_XMIT	*/
#endif

#ifdef CONFIG_CUSTOMER_ALIBABA_GENERAL
	#ifndef CONFIG_WIFI_MONITOR
		#define CONFIG_WIFI_MONITOR
	#endif
	#ifndef CONFIG_MONITOR_MODE_XMIT
		#define CONFIG_MONITOR_MODE_XMIT
	#endif
#endif

#ifndef CONFIG_RTW_DATA_BMC_TO_UC
#define CONFIG_RTW_DATA_BMC_TO_UC 0
#endif

#ifdef CONFIG_AP_MODE
	#define CONFIG_LIMITED_AP_NUM 1
	#define BMC_ON_HIQ

	#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
	#if CONFIG_RTW_AP_DATA_BMC_TO_UC
	#undef CONFIG_RTW_DATA_BMC_TO_UC
	#define CONFIG_RTW_DATA_BMC_TO_UC 1
	#endif
	#ifndef CONFIG_RTW_AP_SRC_B2U_FLAGS
	#define CONFIG_RTW_AP_SRC_B2U_FLAGS 0x8 /* see RTW_AP_B2U_XXX */
	#endif
	#ifndef CONFIG_RTW_AP_FWD_B2U_FLAGS
	#define CONFIG_RTW_AP_FWD_B2U_FLAGS 0x8 /* see RTW_AP_B2U_XXX */
	#endif
#endif

#ifdef CONFIG_RTW_MULTI_AP
	#ifndef CONFIG_AP_MODE
	#error "enable CONFIG_RTW_MULTI_AP without CONFIG_AP_MODE"
	#endif
	#ifndef CONFIG_RTW_WDS
	#define CONFIG_RTW_WDS
	#endif
	#ifndef CONFIG_RTW_UNASOC_STA_MODE_OF_STYPE
	#define CONFIG_RTW_UNASOC_STA_MODE_OF_STYPE {2, 1} /* BMC:2 for all, NMY_UC:1 for interested target */
	#endif
	#ifndef CONFIG_RTW_NLRTW
	#define CONFIG_RTW_NLRTW
	#endif
	#ifndef CONFIG_RTW_WNM
	#define CONFIG_RTW_WNM
	#endif
	#ifndef CONFIG_RTW_FSM_RRM
	#define CONFIG_RTW_80211K
	#endif
#endif

#ifdef CONFIG_RTW_MESH
	#ifndef CONFIG_RTW_MESH_ACNODE_PREVENT
	#define CONFIG_RTW_MESH_ACNODE_PREVENT 1
	#endif

	#ifndef CONFIG_RTW_MESH_OFFCH_CAND
	#define CONFIG_RTW_MESH_OFFCH_CAND 1
	#endif

	#ifndef CONFIG_RTW_MESH_PEER_BLACKLIST
	#define CONFIG_RTW_MESH_PEER_BLACKLIST 1
	#endif

	#ifndef CONFIG_RTW_MESH_CTO_MGATE_BLACKLIST
	#define CONFIG_RTW_MESH_CTO_MGATE_BLACKLIST 1
	#endif
	#ifndef CONFIG_RTW_MESH_CTO_MGATE_CARRIER
	#define CONFIG_RTW_MESH_CTO_MGATE_CARRIER CONFIG_RTW_MESH_CTO_MGATE_BLACKLIST
	#endif

	#ifndef CONFIG_RTW_MPM_TX_IES_SYNC_BSS
	#define CONFIG_RTW_MPM_TX_IES_SYNC_BSS 1
	#endif
	#if CONFIG_RTW_MPM_TX_IES_SYNC_BSS
		#ifndef CONFIG_RTW_MESH_AEK
		#define CONFIG_RTW_MESH_AEK
		#endif
	#endif

	#ifndef CONFIG_RTW_MESH_DATA_BMC_TO_UC
	#define CONFIG_RTW_MESH_DATA_BMC_TO_UC 1
	#endif
	#if CONFIG_RTW_MESH_DATA_BMC_TO_UC
	#undef CONFIG_RTW_DATA_BMC_TO_UC
	#define CONFIG_RTW_DATA_BMC_TO_UC 1
	#endif
	#ifndef CONFIG_RTW_MSRC_B2U_FLAGS
	#define CONFIG_RTW_MSRC_B2U_FLAGS 0x0 /* see RTW_MESH_B2U_XXX */
	#endif
	#ifndef CONFIG_RTW_MFWD_B2U_FLAGS
	#define CONFIG_RTW_MFWD_B2U_FLAGS 0x2 /* see RTW_MESH_B2U_XXX */
	#endif
#endif

#if !defined(CONFIG_SCAN_BACKOP) && defined(CONFIG_AP_MODE)
#define CONFIG_SCAN_BACKOP
#endif

#define RTW_SCAN_SPARSE_MIRACAST 1
#define RTW_SCAN_SPARSE_BG 0

#ifndef CONFIG_RTW_HIQ_FILTER
	#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
#endif

#ifndef CONFIG_RTW_ADAPTIVITY_MODE
#define CONFIG_RTW_ADAPTIVITY_MODE 0
#endif

#ifndef CONFIG_RTW_EXCL_CHS
#define CONFIG_RTW_EXCL_CHS {0}
#endif

#ifndef CONFIG_RTW_EXCL_CHS_6G
#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_ENV
#define CONFIG_RTW_ENV 0 /* 0:ANY */
#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 0x00
#endif

#ifndef CONFIG_RTW_COUNTRY_IE_SLAVE_EN_ROLE
#define CONFIG_RTW_COUNTRY_IE_SLAVE_EN_ROLE 0x03 /* BIT0 for pure STA mode, BIT1 for P2P group client */
#endif

#ifndef CONFIG_RTW_COUNTRY_IE_SLAVE_EN_IFBMP
#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

#define CONFIG_IEEE80211_BAND_5GHZ 1

#ifndef CONFIG_IEEE80211_BAND_6GHZ
#define CONFIG_IEEE80211_BAND_6GHZ 0
#endif

#ifndef CONFIG_DFS
#define CONFIG_DFS 1
#endif

#if CONFIG_DFS
#define CONFIG_ECSA_PHL /* Process ECSA by PHL cmd dispatcher */
#ifdef CONFIG_ECSA_PHL
	#define CONFIG_ECSA
	#define CONFIG_ECSA_EXTEND_OPTION
#endif
#endif

#if CONFIG_IEEE80211_BAND_5GHZ && CONFIG_DFS && defined(CONFIG_AP_MODE)
	#if !defined(CONFIG_DFS_SLAVE_WITH_RADAR_DETECT)
	#define CONFIG_DFS_SLAVE_WITH_RADAR_DETECT 0
	#endif
	#if !defined(CONFIG_DFS_MASTER) || CONFIG_DFS_SLAVE_WITH_RADAR_DETECT
	#define CONFIG_DFS_MASTER
	#endif
	#if defined(CONFIG_DFS_MASTER) && !defined(CONFIG_RTW_DFS_REGION_DOMAIN)
	#define CONFIG_RTW_DFS_REGION_DOMAIN 0
	#endif
#else
	#undef CONFIG_DFS_MASTER
	#undef CONFIG_RTW_DFS_REGION_DOMAIN
	#define CONFIG_RTW_DFS_REGION_DOMAIN 0
	#undef CONFIG_DFS_SLAVE_WITH_RADAR_DETECT
	#define CONFIG_DFS_SLAVE_WITH_RADAR_DETECT 0
#endif

#ifndef CONFIG_AP_REGU_FORBID
	#if CONFIG_IEEE80211_BAND_6GHZ && defined(CONFIG_AP_MODE)
	#define CONFIG_AP_REGU_FORBID 1
	#else
	#define CONFIG_AP_REGU_FORBID 0
	#endif
#endif

#ifndef CONFIG_TXPWR_BY_RATE_EN
#define CONFIG_TXPWR_BY_RATE_EN 2 /* by efuse */
#endif
#ifndef CONFIG_TXPWR_LIMIT_EN
#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

#ifndef CONFIG_RTW_CHPLAN_6G
#define CONFIG_RTW_CHPLAN_6G 0xFFFF /* RTW_CHPLAN_IOCTL_UNSPECIFIED */
#endif

/* compatible with old fashion configuration */
#if defined(CONFIG_CALIBRATE_TX_POWER_BY_REGULATORY)
	#undef CONFIG_TXPWR_BY_RATE_EN
	#undef CONFIG_TXPWR_LIMIT_EN
	#define CONFIG_TXPWR_BY_RATE_EN 1
	#define CONFIG_TXPWR_LIMIT_EN 1
#elif defined(CONFIG_CALIBRATE_TX_POWER_TO_MAX)
	#undef CONFIG_TXPWR_BY_RATE_EN
	#undef CONFIG_TXPWR_LIMIT_EN
	#define CONFIG_TXPWR_BY_RATE_EN 1
	#define CONFIG_TXPWR_LIMIT_EN 0
#endif

#ifndef CONFIG_COUNTRY_CHPLAN_EDCCA_OVERRIDE
#define CONFIG_COUNTRY_CHPLAN_EDCCA_OVERRIDE 0
#endif

#ifndef RTW_DEF_MODULE_REGULATORY_CERT
	#define RTW_DEF_MODULE_REGULATORY_CERT 0
#endif

#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"
	#endif
	/* force enable TX power by rate and TX power limit */
	#undef CONFIG_TXPWR_BY_RATE_EN
	#undef CONFIG_TXPWR_LIMIT_EN
	#define CONFIG_TXPWR_BY_RATE_EN 1
	#define CONFIG_TXPWR_LIMIT_EN 1
#endif

#if !CONFIG_TXPWR_LIMIT && CONFIG_TXPWR_LIMIT_EN
	#undef CONFIG_TXPWR_LIMIT
	#define CONFIG_TXPWR_LIMIT 1
#endif

#if CONFIG_TXPWR_LIMIT || CONFIG_AP_REGU_FORBID
#ifndef CONFIG_80211D
#define CONFIG_80211D /* define 802.11d for regulatory check */
#endif
#endif

#ifndef CONFIG_RTW_REGD_SRC
#define CONFIG_RTW_REGD_SRC 1 /* 0:RTK_PRIV, 1:OS */
#endif

#ifndef CONFIG_RTW_REGD_SRC_OS_11D
#define CONFIG_RTW_REGD_SRC_OS_11D 1 /* 0:disable, 1:enable */
#endif

#ifdef CONFIG_RTW_IPCAM_APPLICATION
	#undef CONFIG_TXPWR_BY_RATE_EN
	#define CONFIG_TXPWR_BY_RATE_EN 1
	#define CONFIG_RTW_CUSTOMIZE_BEEDCA		0x0000431C
	#define CONFIG_RTW_CUSTOMIZE_BWMODE		0x00
	#define CONFIG_RTW_CUSTOMIZE_RLSTA		0x7
#if defined(CONFIG_RTL8822B)
	#define CONFIG_RTW_TX_NPATH_EN		/*mutually incompatible with STBC_TX & Beamformer	*/
#endif
#endif
/* #define CONFIG_RTW_TOKEN_BASED_XMIT */
#ifdef CONFIG_RTW_TOKEN_BASED_XMIT
	#define NR_TBTX_SLOT			4
	#define NR_MAXSTA_INSLOT		5
	#define TBTX_TX_DURATION		30
	
	#define MAX_TXPAUSE_DURATION	(TBTX_TX_DURATION*NR_TBTX_SLOT)
#endif

/*#define CONFIG_EXTEND_LOWRATE_TXOP			*/

#ifndef CONFIG_RTW_RX_AMPDU_SZ_LIMIT_1SS
	#define CONFIG_RTW_RX_AMPDU_SZ_LIMIT_1SS {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}
#endif
#ifndef CONFIG_RTW_RX_AMPDU_SZ_LIMIT_2SS
	#define CONFIG_RTW_RX_AMPDU_SZ_LIMIT_2SS {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}
#endif
#ifndef CONFIG_RTW_RX_AMPDU_SZ_LIMIT_3SS
	#define CONFIG_RTW_RX_AMPDU_SZ_LIMIT_3SS {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}
#endif
#ifndef CONFIG_RTW_RX_AMPDU_SZ_LIMIT_4SS
	#define CONFIG_RTW_RX_AMPDU_SZ_LIMIT_4SS {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}
#endif

#ifndef CONFIG_RTW_TARGET_TX_PWR_2G_A
	#define CONFIG_RTW_TARGET_TX_PWR_2G_A {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
#endif

#ifndef CONFIG_RTW_TARGET_TX_PWR_2G_B
	#define CONFIG_RTW_TARGET_TX_PWR_2G_B {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
#endif

#ifndef CONFIG_RTW_TARGET_TX_PWR_2G_C
	#define CONFIG_RTW_TARGET_TX_PWR_2G_C {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
#endif

#ifndef CONFIG_RTW_TARGET_TX_PWR_2G_D
	#define CONFIG_RTW_TARGET_TX_PWR_2G_D {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
#endif

#ifndef CONFIG_RTW_TARGET_TX_PWR_5G_A
	#define CONFIG_RTW_TARGET_TX_PWR_5G_A {-1, -1, -1, -1, -1, -1, -1, -1, -1}
#endif

#ifndef CONFIG_RTW_TARGET_TX_PWR_5G_B
	#define CONFIG_RTW_TARGET_TX_PWR_5G_B {-1, -1, -1, -1, -1, -1, -1, -1, -1}
#endif

#ifndef CONFIG_RTW_TARGET_TX_PWR_5G_C
	#define CONFIG_RTW_TARGET_TX_PWR_5G_C {-1, -1, -1, -1, -1, -1, -1, -1, -1}
#endif

#ifndef CONFIG_RTW_TARGET_TX_PWR_5G_D
	#define CONFIG_RTW_TARGET_TX_PWR_5G_D {-1, -1, -1, -1, -1, -1, -1, -1, -1}
#endif

#ifndef CONFIG_RTW_AMPLIFIER_TYPE_2G
	#define CONFIG_RTW_AMPLIFIER_TYPE_2G 0
#endif

#ifndef CONFIG_RTW_AMPLIFIER_TYPE_5G
	#define CONFIG_RTW_AMPLIFIER_TYPE_5G 0
#endif

#ifndef CONFIG_RTW_RFE_TYPE
	#define CONFIG_RTW_RFE_TYPE 0xFF
#endif

#ifndef CONFIG_RTW_GLNA_TYPE
	#define CONFIG_RTW_GLNA_TYPE 0
#endif

#ifndef CONFIG_RTW_PLL_REF_CLK_SEL
	#define CONFIG_RTW_PLL_REF_CLK_SEL 0x0F
#endif

#ifndef CONFIG_IFACE_NUMBER
	#ifdef CONFIG_CONCURRENT_MODE
		#define CONFIG_IFACE_NUMBER	2
	#else
		#define CONFIG_IFACE_NUMBER	1
	#endif
#endif

#ifdef CONFIG_CONCURRENT_MODE
	#if (CONFIG_IFACE_NUMBER < 2)
		#error "CONFIG_IFACE_NUMBER less 2,but CONFIG_CONCURRENT_MODE defined"
	#endif
#else
	#if (CONFIG_IFACE_NUMBER > 1)
		#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 !!"
#endif


#if (CONFIG_IFACE_NUMBER > 4)
	#error "Not support over 4 interfaces yet !!"
#endif

#if (CONFIG_IFACE_NUMBER > 8)	/*IFACE_ID_MAX*/
	#error "HW count not support over 8 interfaces !!"
#endif

#if (CONFIG_IFACE_NUMBER > 2)
	#ifdef CONFIG_AP_MODE
		#undef CONFIG_LIMITED_AP_NUM
		#define CONFIG_LIMITED_AP_NUM	2
	#endif /*CONFIG_AP_MODE*/

#endif/*(CONFIG_IFACE_NUMBER > 2)*/

#define MACID_NUM_SW_LIMIT 32


/*
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,
power down etc.) in last time, we can unmark this flag to avoid some unpredictable response from AP.
*/
/*#define CONFIG_DEAUTH_BEFORE_CONNECT */

/*#define CONFIG_WEXT_DONT_JOIN_BYSSID	*/
/* #include <rtw_byteorder.h> */


/*#define CONFIG_DOSCAN_IN_BUSYTRAFFIC	*/

/*Don't release SDIO irq in suspend/resume procedure*/
#define CONFIG_RTW_SDIO_KEEP_IRQ	0

#ifdef CONFIG_RTW_HOSTAPD_ACS
	#ifdef CONFIG_FIND_BEST_CHANNEL
		#undef CONFIG_FIND_BEST_CHANNEL
	#endif
	#ifndef CONFIG_RTW_ACS
		#define CONFIG_RTW_ACS
	#endif
#endif

#ifdef CONFIG_POWER_SAVE
#ifdef CONFIG_RTW_IPS
#ifdef RTW_IPS_MODE
	#if (RTW_IPS_MODE > 4 || RTW_IPS_MODE < 0)
		#error "The CONFIG_IPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n"
	#endif
	#ifndef CONFIG_FWIPS
		#if (RTW_IPS_MODE > 1)
			#undef RTW_IPS_MODE
			#define RTW_IPS_MODE PS_PWR_OFF
		#endif /* CONFIG_FWIPS */
	#endif
#else /* RTW_IPS_MODE */
	#ifdef CONFIG_FWIPS
		#define RTW_IPS_MODE PS_IPS_PWR_GATED
	#else
		#define RTW_IPS_MODE PS_PWR_OFF
	#endif /* CONFIG_FWIPS */
#endif /* RTW_IPS_MODE */
#endif /* CONFIG_RTW_IPS */

#ifdef CONFIG_RTW_LPS
#ifdef 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"
	#endif
#else
	#define RTW_LPS_MODE PS_LPS_PWR_GATED
#endif /* RTW_LPS_MODE */
#endif /* CONFIG_RTW_LPS */

#ifdef CONFIG_WOWLAN
#ifdef CONFIG_RTW_IPS_WOW
#ifdef RTW_WOW_IPS_MODE
	#if (RTW_WOW_IPS_MODE > 4 || RTW_WOW_IPS_MODE < 0 || RTW_WOW_IPS_MODE == 1)
		#error "The CONFIG_WOW_IPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n"
	#endif
	#ifndef CONFIG_FWIPS_WOW
		#undef RTW_WOW_IPS_MODE
		#define RTW_WOW_IPS_MODE PS_IPS_NONE
	#endif
#else
	#ifdef CONFIG_FWIPS_WOW
		#define RTW_WOW_IPS_MODE PS_IPS_PWR_GATED
	#else
		#define RTW_WOW_IPS_MODE PS_IPS_NONE
	#endif
#endif /* RTW_WOW_IPS_MODE */
#endif /* CONFIG_RTW_IPS_WOW */

#ifdef CONFIG_RTW_LPS_WOW
#ifdef RTW_WOW_LPS_MODE
	#if (RTW_WOW_LPS_MODE > 3 || RTW_WOW_LPS_MODE < 0)
		#error "The CONFIG_WOW_LPS_MODE value is wrong. Please follow HowTo_enable_the_power_saving_functionality.pdf.\n"
	#endif
#else
	#define RTW_WOW_LPS_MODE PS_LPS_PWR_GATED
#endif /* RTW_WOW_LPS_MODE */
#endif /* CONFIG_RTW_LPS_WOW */
#endif /* CONFIG_WOWLAN */
#endif /* CONFIG_POWER_SAVE */


#ifdef RTW_REDUCE_SCAN_SWITCH_CH_TIME
#ifndef CONFIG_RTL8822B
	#error "Only 8822B support RTW_REDUCE_SCAN_SWITCH_CH_TIME"
#endif
	#ifndef RTW_CHANNEL_SWITCH_OFFLOAD
		#define RTW_CHANNEL_SWITCH_OFFLOAD
	#endif
#endif

#ifdef CONFIG_PCI_BCN_POLLING
#define CONFIG_BCN_ICF
#endif 

#if !defined (CONFIG_PCI_MSI) || defined (CONFIG_RTW_FORCE_PCI_MSI_DISABLE)
#define CONFIG_RTW_PCI_MSI_DISABLE
#endif

#if 0
/* Debug related compiler flags */
#define DBG_THREAD_PID	/* Add thread pid to debug message prefix */
#define DBG_CPU_INFO	/* Add CPU info to debug message prefix */
#endif

#if defined(CONFIG_RTL8852C)
#define CONFIG_HW_FORM_SEC_HEADER
#endif

#if defined(CONFIG_TX_AMSDU_HW_MODE) || defined(CONFIG_HW_FORM_SEC_HEADER)
#define CONFIG_HW_HDR_CONVERSION
#elif defined(CONFIG_TX_AMSDU_SW_MODE)
#else
#define CONFIG_HW_HDR_CONVERSION	/* TODO: should be 'unchange' */
#endif

/* for phl illegal mac io access check*/
#define CONFIG_MAC_REG_RW_CHK

/* To enable the CONFIG_PHL_P2PPS definition in phl_config.h */
#ifdef CONFIG_P2P_PS
#define CONFIG_P2PPS
#endif

#ifdef CONFIG_CMD_DISP
	/*#define DBG_CONFIG_CMD_DISP*/

	#define CONFIG_CMD_SCAN
	#ifdef CONFIG_CMD_SCAN
		#ifdef CONFIG_IOCTL_CFG80211
		#define CONFIG_PHL_CMD_SCAN_BKOP_TIME
		#endif
		/* Extra time for scan hidden AP in passive channel */
		#define RTW_EXTEND_ACTIVE_SCAN_PERIOD	30	/* unit: ms */
	#endif /* CONFIG_CMD_SCAN */

	#define CONFIG_CMD_GENERAL
	#define CONFIG_CMD_SER
	#define CONFIG_STA_CMD_DISPR
	#define CONFIG_AP_CMD_DISPR
	/*#define CONFIG_IBSS_CMD_DISPR*/
#endif

#ifdef PRIVATE_R
	#define CONFIG_RELEASE_RPT
	/* #define CONFIG_WAKEUP_GPIO_INPUT_MODE
	#define CONFIG_RA_TXSTS_DBG */
	#define CONFIG_SNR_RPT
	#ifndef CONFIG_ARP_KEEP_ALIVE
		#define CONFIG_ARP_KEEP_ALIVE
	#endif
	/* #define CONFIG_WRC_WOW_MAGIC */
	#define CONFIG_WOW_PERIODIC_WAKE
	#ifndef CONFIG_PNO_SECURITY_OFFLOAD
		#define CONFIG_PNO_SECURITY_OFFLOAD
	#endif
	#define DBG_RX_DFRAME_RAW_DATA
	#define DBG_RX_SIGNAL_DISPLAY_RAW_DATA
	#define CONFIG_GO_APPEND_COUNTRY_IE
	#define RTW_IOT_ID 0x112;
#endif

#ifdef CONFIG_80211AX_HE
	#define CONFIG_STA_MULTIPLE_BSSID
#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

#ifndef RTW_IOT_ID
	#define  RTW_IOT_ID 0x0
#endif

#ifdef CONFIG_TDLS_CH_SW
	#ifndef CONFIG_CHSW_OFLD
	#define CONFIG_CHSW_OFLD
	#endif
#endif

/*
 * Channel switch FW offload config:
 * drv needs to call function rtw_phl_set_chsw_ofld_info
 * to effectively enable channel switch fw offload
*/
#ifdef CONFIG_CHSW_OFLD
	#ifndef CONFIG_PHL_CHSWOFLD
	#define CONFIG_PHL_CHSWOFLD
	#endif
#endif

/*
 * Work around Config
 */
/*
 * RTW_WKARD_UPDATE_PHL_ROLE_CAP
 * Update adapter->phl_role.cap & proto_role_cap by driver parameters(registry).
 */
#define RTW_WKARD_UPDATE_PHL_ROLE_CAP

/*
*RTW_WKARD_TRIGGER_FRAME_PARSER-OFDMA UL TB control
*/
#define RTW_WKARD_TRIGGER_FRAME_PARSER

#endif /* __DRV_CONF_H__ */
