diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
index ee610a4..abb7499 100755
--- a/arch/arc/Kconfig
+++ b/arch/arc/Kconfig
@@ -119,6 +119,12 @@
         int
         default "256" #"VMALLOC_SIZE(in MB)"
 
+# To support saving core dump in case of LHost, MuC or AuC crash
+config QTN_SOC_CORE_DUMP
+	bool
+	default y
+	select ZLIB_DEFLATE
+
 source "init/Kconfig"
 
 source "kernel/Kconfig.freezer"
diff --git a/arch/arc/configs/qhs710_msft_config b/arch/arc/configs/qhs710_msft_config
deleted file mode 120000
index 6d2d30b..0000000
--- a/arch/arc/configs/qhs710_msft_config
+++ /dev/null
@@ -1 +0,0 @@
-qhs710_vb_config
\ No newline at end of file
diff --git a/arch/arc/configs/qhs710_msmr_config b/arch/arc/configs/qhs710_msmr_config
deleted file mode 120000
index 6d2d30b..0000000
--- a/arch/arc/configs/qhs710_msmr_config
+++ /dev/null
@@ -1 +0,0 @@
-qhs710_vb_config
\ No newline at end of file
diff --git a/arch/arc/configs/qhs710_vb_cgi_config b/arch/arc/configs/qhs710_vb_cgi_config
deleted file mode 120000
index 6d2d30b..0000000
--- a/arch/arc/configs/qhs710_vb_cgi_config
+++ /dev/null
@@ -1 +0,0 @@
-qhs710_vb_config
\ No newline at end of file
diff --git a/arch/arc/configs/qhs711_host_config b/arch/arc/configs/qhs711_host_config
deleted file mode 100644
index 67bc864..0000000
--- a/arch/arc/configs/qhs711_host_config
+++ /dev/null
@@ -1,1188 +0,0 @@
-#
-# Used with Quantenna PCIe hosts: QHS711 DBDC boards
-#
-# Linux kernel version: 2.6.35.12
-#
-CONFIG_ARCH_ARC=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_UID16=y
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_FLATMEM=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_MMU=y
-CONFIG_NO_IOPORT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_BINFMT_ELF=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_SCHED_OMIT_FRAME_POINTER=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_CONSTRUCTORS=y
-
-#
-# General setup
-#
-# CONFIG_EXPERIMENTAL is not set
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE="/usr/local/ARC/gcc/bin/arc-linux-uclibc-"
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_SWAP is not set
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_AUDIT is not set
-
-#
-# RCU Subsystem
-#
-CONFIG_TREE_RCU=y
-# CONFIG_TREE_PREEMPT_RCU is not set
-# CONFIG_TINY_RCU is not set
-CONFIG_RCU_TRACE=y
-CONFIG_RCU_FANOUT=32
-# CONFIG_RCU_FANOUT_EXACT is not set
-CONFIG_TREE_RCU_TRACE=y
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-# CONFIG_SYSFS_DEPRECATED_V2 is not set
-# CONFIG_RELAY is not set
-# CONFIG_NAMESPACES is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE="../buildroot/rootfs.arc-linux-uclibc.cpio"
-CONFIG_INITRAMFS_ROOT_UID=0
-CONFIG_INITRAMFS_ROOT_GID=0
-# CONFIG_RD_GZIP is not set
-# CONFIG_RD_BZIP2 is not set
-# CONFIG_RD_LZMA is not set
-# CONFIG_RD_LZO is not set
-CONFIG_INITRAMFS_COMPRESSION_NONE=y
-# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set
-# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set
-# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set
-# CONFIG_INITRAMFS_COMPRESSION_LZO is not set
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-CONFIG_EMBEDDED=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_DEFERRED_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-# CONFIG_BASE_FULL is not set
-# CONFIG_FUTEX is not set
-# CONFIG_EPOLL is not set
-# CONFIG_SIGNALFD is not set
-# CONFIG_TIMERFD is not set
-# CONFIG_EVENTFD is not set
-CONFIG_SHMEM=y
-# CONFIG_AIO is not set
-
-#
-# Kernel Performance Events And Counters
-#
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_PCI_QUIRKS=y
-# CONFIG_COMPAT_BRK is not set
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-# CONFIG_PROFILING is not set
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-# CONFIG_HAVE_KPROBES is not set
-# CONFIG_HAVE_KRETPROBES is not set
-
-#
-# GCOV-based kernel profiling
-#
-# CONFIG_GCOV_KERNEL is not set
-# CONFIG_SLOW_WORK is not set
-# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=1
-CONFIG_MODULES=y
-# CONFIG_MODULE_FORCE_LOAD is not set
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_BLOCK=y
-# CONFIG_LBDAF is not set
-# CONFIG_BLK_DEV_BSG is not set
-# CONFIG_BLK_DEV_INTEGRITY is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_DEADLINE is not set
-# CONFIG_IOSCHED_CFQ is not set
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-CONFIG_DEFAULT_NOOP=y
-CONFIG_DEFAULT_IOSCHED="noop"
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
-CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
-CONFIG_INLINE_READ_UNLOCK=y
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
-CONFIG_INLINE_READ_UNLOCK_IRQ=y
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
-CONFIG_INLINE_WRITE_UNLOCK=y
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
-CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-# CONFIG_MUTEX_SPIN_ON_OWNER is not set
-# CONFIG_FREEZER is not set
-
-#
-# Processor Type and features
-#
-CONFIG_ARCH_ARC700=y
-# CONFIG_ARCH_ARC800 is not set
-
-#
-# ARC CPU Core Configuration
-#
-CONFIG_ARC700_CACHE=y
-CONFIG_ARC700_USE_ICACHE=y
-CONFIG_ARC700_USE_DCACHE=y
-CONFIG_ARC700_CACHE_PAGES=y
-# CONFIG_ARCH_ARC_ICCM is not set
-# CONFIG_ARCH_ARC_DCCM is not set
-# CONFIG_ARC_MMU_V1 is not set
-CONFIG_ARC_MMU_V2=y
-# CONFIG_ARC_MMU_V3 is not set
-CONFIG_ARC_PAGE_SIZE_8K=y
-# CONFIG_ARC_PAGE_SIZE_16K is not set
-# CONFIG_ARC_PAGE_SIZE_4K is not set
-# CONFIG_ARCH_ARC_LV2_INTR is not set
-# CONFIG_ARCH_ARC_FPU is not set
-# CONFIG_ARC700_V_4_10 is not set
-
-#
-# Board Configuration
-#
-CONFIG_LINUX_LINK_BASE=0x80002000
-CONFIG_SDRAM_SIZE=0x04000000
-
-#
-# ARC Pheripheral Support
-#
-CONFIG_ARC_AHB_PCI_BRIDGE=y
-# CONFIG_NO_DMA is not set
-# CONFIG_ARC_IDE is not set
-# CONFIG_ARC_SERIAL is not set
-# CONFIG_ARCTANGENT_EMAC is not set
-# CONFIG_XILINX_TEMAC is not set
-# CONFIG_ISS_MAC is not set
-# CONFIG_ARCPGU is not set
-# CONFIG_VFB_SIM is not set
-# CONFIG_SOUND_ARC_AC97 is not set
-CONFIG_ARC_7XX_GPIO=y
-
-#
-# Bus options (PCI etc.)
-#
-CONFIG_PCI=y
-CONFIG_ARCH_SUPPORTS_MSI=y
-CONFIG_PCI_MSI=y
-CONFIG_PCI_LEGACY=y
-# CONFIG_PCI_STUB is not set
-# CONFIG_PCI_IOV is not set
-# CONFIG_HOTPLUG_PCI is not set
-# CONFIG_PCCARD is not set
-CONFIG_ARCH_ARC_CURR_IN_REG=y
-# CONFIG_ARC_TLS_REG_EMUL is not set
-CONFIG_ARC_MISALIGNED_ACCESS=y
-# CONFIG_ARCH_ARC_SPACE_RND is not set
-CONFIG_MMAP_CODE_CMN_VADDR=y
-CONFIG_HZ=200
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_ARC_STACK_NONEXEC=y
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-# CONFIG_ARCH_ARC_HLINK is not set
-CONFIG_ARC_DBG=y
-CONFIG_ARC_STACK_UNWIND=y
-# CONFIG_ARC_TLB_PARANOIA is not set
-# CONFIG_ARC_DBG_EVENT_TIMELINE is not set
-# CONFIG_ARC_TLB_PROFILE is not set
-# CONFIG_ARC_UBOOT_CMDLINE is not set
-# CONFIG_ARC_PROFILING is not set
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_PAGEFLAGS_EXTENDED=y
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=0
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_KSM is not set
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-CONFIG_IPV6=y
-# CONFIG_IPV6_PRIVACY is not set
-CONFIG_IPV6_ROUTER_PREF=y
-# CONFIG_IPV6_ROUTE_INFO is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-# CONFIG_INET6_AH is not set
-# CONFIG_INET6_ESP is not set
-# CONFIG_INET6_IPCOMP is not set
-# CONIFG_IPV6_MIP6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
-# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
-# CONFIG_INET6_XFRM_MODE_BEET is not set
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-# CONFIG_IPV6_SIT is not set
-# CONFIG_IPV6_NDISC_NODETYPE is not set
-# CONFIG_IPV6_TUNNEL is not set
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_IPV6_SUBTREES is not set
-# CONFIG_IPV6_MROUTE is not set
-# CONFIG_IPV6_PIMSM_V2 is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-# CONFIG_NETFILTER_ADVANCED is not set
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=y
-CONFIG_NETFILTER_NETLINK_LOG=y
-CONFIG_NF_CONNTRACK=y
-CONFIG_NF_CONNTRACK_FTP=y
-CONFIG_NF_CONNTRACK_IRC=y
-CONFIG_NF_CONNTRACK_SIP=y
-# CONFIG_NF_CT_NETLINK is not set
-CONFIG_NETFILTER_XTABLES=y
-
-#
-# Xtables combined modules
-#
-CONFIG_NETFILTER_XT_MARK=m
-
-#
-# Xtables targets
-#
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-
-#
-# Xtables matches
-#
-# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
-CONFIG_NETFILTER_XT_MATCH_POLICY=y
-# CONFIG_NETFILTER_XT_MATCH_STATE is not set
-# CONFIG_IP_VS is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV4=y
-CONFIG_NF_CONNTRACK_IPV4=y
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_IPTABLES=y
-CONFIG_IP_NF_FILTER=y
-CONFIG_IP_NF_TARGET_REJECT=y
-CONFIG_IP_NF_TARGET_LOG=y
-CONFIG_IP_NF_TARGET_ULOG=y
-# CONFIG_NF_NAT is not set
-CONFIG_IP_NF_MANGLE=y
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_NF_CONNTRACK_IPV6 is not set
-# CONFIG_IP6_NF_IPTABLES is not set
-# CONFIG_ATM is not set
-# CONFIG_L2TP is not set
-CONFIG_STP=y
-CONFIG_BRIDGE=y
-CONFIG_BRIDGE_IGMP_SNOOPING=y
-CONFIG_VLAN_8021Q=y
-# CONFIG_VLAN_8021Q_GVRP is not set
-# CONFIG_DECNET is not set
-CONFIG_LLC=y
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_PHONET is not set
-CONFIG_NET_SCHED=y
-
-#
-# IPv6: Netfilter Configuration
-#
-#
-# CONFIG_NF_CONNTRACK_IPV6 is not set
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
-# CONFIG_IP6_NF_MATCH_AH is not set
-# CONFIG_IP6_NF_MATCH_EUI64 is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_MH is not set
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_TARGET_HL is not set
-# CONFIG_IP6_NF_TARGET_LOG is not set
-# CONFIG_IP6_NF_FILTER is not set
-# CONFIG_IP6_NF_TARGET_REJECT is not set
-# CONFIG_IP6_NF_MANGLE is not set
-# CONFIG_IP6_NF_RAW is not set
-# CONFIG_IP6_NF_SECURITY is not set
-
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=y
-# CONFIG_NET_SCH_HTB is not set
-# CONFIG_NET_SCH_HFSC is not set
-CONFIG_NET_SCH_PRIO=y
-# CONFIG_NET_SCH_MULTIQ is not set
-CONFIG_NET_SCH_RED=y
-# CONFIG_NET_SCH_SFQ is not set
-# CONFIG_NET_SCH_TEQL is not set
-CONFIG_NET_SCH_TBF=y
-CONFIG_NET_SCH_GRED=y
-CONFIG_NET_SCH_DSMARK=y
-# CONFIG_NET_SCH_NETEM is not set
-# CONFIG_NET_SCH_DRR is not set
-CONFIG_NET_SCH_INGRESS=y
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=y
-CONFIG_NET_CLS_TCINDEX=y
-CONFIG_NET_CLS_ROUTE4=y
-CONFIG_NET_CLS_ROUTE=y
-CONFIG_NET_CLS_FW=y
-CONFIG_NET_CLS_U32=y
-# CONFIG_CLS_U32_PERF is not set
-CONFIG_CLS_U32_MARK=y
-# CONFIG_NET_CLS_RSVP is not set
-# CONFIG_NET_CLS_RSVP6 is not set
-CONFIG_NET_CLS_FLOW=y
-# CONFIG_NET_EMATCH is not set
-CONFIG_NET_CLS_ACT=y
-CONFIG_NET_ACT_POLICE=y
-# CONFIG_NET_ACT_GACT is not set
-# CONFIG_NET_ACT_MIRRED is not set
-# CONFIG_NET_ACT_IPT is not set
-# CONFIG_NET_ACT_NAT is not set
-# CONFIG_NET_ACT_PEDIT is not set
-# CONFIG_NET_ACT_SIMP is not set
-# CONFIG_NET_ACT_SKBEDIT is not set
-CONFIG_NET_CLS_IND=y
-CONFIG_NET_SCH_FIFO=y
-# CONFIG_DCB is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_CAN is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-CONFIG_WIRELESS=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_WEXT_CORE=y
-CONFIG_WEXT_PROC=y
-CONFIG_WEXT_PRIV=y
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT_SYSFS=y
-# CONFIG_LIB80211 is not set
-
-#
-# CFG80211 needs to be enabled for MAC80211
-#
-
-#
-# Some wireless drivers require a rate control algorithm
-#
-# CONFIG_WIMAX is not set
-# CONFIG_RFKILL is not set
-# CONFIG_CAIF is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH=""
-# CONFIG_DEVTMPFS is not set
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_FIRMWARE_IN_KERNEL is not set
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_CONNECTOR is not set
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_TESTS is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AR7_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-# CONFIG_MTD_OOPS is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_INTEL_VR_NOR is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_NAND is not set
-# CONFIG_MTD_ONENAND is not set
-
-#
-# LPDDR flash memory drivers
-#
-# CONFIG_MTD_LPDDR is not set
-
-#
-# UBI - Unsorted block images
-#
-# CONFIG_MTD_UBI is not set
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-
-#
-# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
-#
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SX8 is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=1
-CONFIG_BLK_DEV_RAM_SIZE=2048
-# CONFIG_BLK_DEV_XIP is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-# CONFIG_MISC_DEVICES is not set
-
-#
-# SCSI device support
-#
-CONFIG_SCSI_MOD=y
-# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SCSI_NETLINK is not set
-# CONFIG_ATA is not set
-# CONFIG_MD is not set
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# You can enable one or both FireWire driver stacks.
-#
-
-#
-# The newer stack is recommended.
-#
-# CONFIG_FIREWIRE is not set
-# CONFIG_IEEE1394 is not set
-# CONFIG_I2O is not set
-CONFIG_NETDEVICES=y
-# CONFIG_IFB is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_VETH is not set
-# CONFIG_ARCNET is not set
-CONFIG_PHYLIB=y
-
-#
-# MII PHY device drivers
-#
-# CONFIG_MARVELL_PHY is not set
-# CONFIG_DAVICOM_PHY is not set
-# CONFIG_QSEMI_PHY is not set
-# CONFIG_LXT_PHY is not set
-# CONFIG_CICADA_PHY is not set
-# CONFIG_VITESSE_PHY is not set
-# CONFIG_SMSC_PHY is not set
-# CONFIG_BROADCOM_PHY is not set
-# CONFIG_ICPLUS_PHY is not set
-# CONFIG_REALTEK_PHY is not set
-# CONFIG_NATIONAL_PHY is not set
-# CONFIG_STE10XP is not set
-# CONFIG_LSI_ET1011C_PHY is not set
-# CONFIG_MICREL_PHY is not set
-# CONFIG_FIXED_PHY is not set
-# CONFIG_MDIO_BITBANG is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_ETHOC is not set
-# CONFIG_DNET is not set
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_B44 is not set
-# CONFIG_KS8842 is not set
-# CONFIG_KS8851_MLL is not set
-# CONFIG_ATL2 is not set
-CONFIG_NETDEV_1000=y
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_E1000E is not set
-# CONFIG_IGB is not set
-# CONFIG_IGBVF is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_R8169 is not set
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-# CONFIG_VIA_VELOCITY is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2 is not set
-# CONFIG_CNIC is not set
-# CONFIG_QLA3XXX is not set
-# CONFIG_ATL1 is not set
-# CONFIG_JME is not set
-# CONFIG_NETDEV_10000 is not set
-# CONFIG_TR is not set
-CONFIG_WLAN=y
-# CONFIG_ATMEL is not set
-# CONFIG_HOSTAP is not set
-
-#
-# Enable WiMAX (Networking options) to see the WiMAX drivers
-#
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_VMXNET3 is not set
-# CONFIG_ISDN is not set
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-# CONFIG_INPUT_SPARSEKMAP is not set
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-# CONFIG_VT is not set
-# CONFIG_DEVKMEM is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-# CONFIG_SERIAL_8250_PCI is not set
-CONFIG_SERIAL_8250_NR_UARTS=2
-CONFIG_SERIAL_8250_RUNTIME_UARTS=2
-CONFIG_SERIAL_8250_EXTENDED=y
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_RSA is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-# CONFIG_SERIAL_TIMBERDALE is not set
-# CONFIG_SERIAL_ALTERA_JTAGUART is not set
-# CONFIG_SERIAL_ALTERA_UART is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_RTC is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_RAMOOPS is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-# CONFIG_I2C_COMPAT is not set
-# CONFIG_I2C_CHARDEV is not set
-# CONFIG_I2C_HELPER_AUTO is not set
-# CONFIG_I2C_SMBUS is not set
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# PC SMBus host controller drivers
-#
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_ISCH is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_VIAPRO is not set
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_PCA_PLATFORM is not set
-# CONFIG_I2C_SIMTEC is not set
-
-#
-# External I2C/SMBus adapter drivers
-#
-# CONFIG_I2C_PARPORT_LIGHT is not set
-
-#
-# Other I2C/SMBus bus drivers
-#
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_SPI is not set
-
-#
-# PPS support
-#
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_GPIOLIB=y
-CONFIG_GPIO_SYSFS=y
-
-#
-# Memory mapped GPIO expanders:
-#
-# CONFIG_GPIO_IT8761E is not set
-# CONFIG_GPIO_SCH is not set
-
-#
-# I2C GPIO expanders:
-#
-# CONFIG_GPIO_MAX7300 is not set
-# CONFIG_GPIO_MAX732X is not set
-# CONFIG_GPIO_PCA953X is not set
-# CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_ADP5588 is not set
-
-#
-# PCI GPIO expanders:
-#
-# CONFIG_GPIO_CS5535 is not set
-# CONFIG_GPIO_BT8XX is not set
-# CONFIG_GPIO_LANGWELL is not set
-# CONFIG_GPIO_RDC321X is not set
-
-#
-# SPI GPIO expanders:
-#
-
-#
-# AC97 GPIO expanders:
-#
-
-#
-# MODULbus GPIO expanders:
-#
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
-# CONFIG_THERMAL is not set
-# CONFIG_WATCHDOG is not set
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-# CONFIG_SSB is not set
-CONFIG_MFD_SUPPORT=y
-# CONFIG_MFD_CORE is not set
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_PASIC3 is not set
-# CONFIG_HTC_I2CPLD is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_TPS6507X is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_PMIC_DA903X is not set
-# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_MFD_WM8400 is not set
-# CONFIG_MFD_PCF50633 is not set
-# CONFIG_ABX500_CORE is not set
-# CONFIG_MFD_TIMBERDALE is not set
-# CONFIG_LPC_SCH is not set
-# CONFIG_MFD_RDC321X is not set
-# CONFIG_MFD_JANZ_CMODIO is not set
-# CONFIG_REGULATOR is not set
-# CONFIG_MEDIA_SUPPORT is not set
-
-#
-# Graphics support
-#
-# CONFIG_VGA_ARB is not set
-# CONFIG_DRM is not set
-# CONFIG_VGASTATE is not set
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-# CONFIG_FB is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-# CONFIG_SOUND is not set
-# CONFIG_HID_SUPPORT is not set
-# CONFIG_USB_SUPPORT is not set
-# CONFIG_MMC is not set
-# CONFIG_MEMSTICK is not set
-# CONFIG_NEW_LEDS is not set
-# CONFIG_ACCESSIBILITY is not set
-# CONFIG_INFINIBAND is not set
-# CONFIG_RTC_CLASS is not set
-CONFIG_DMADEVICES=y
-# CONFIG_DMADEVICES_DEBUG is not set
-
-#
-# DMA Devices
-#
-# CONFIG_TIMB_DMA is not set
-# CONFIG_AUXDISPLAY is not set
-# CONFIG_UIO is not set
-# CONFIG_STAGING is not set
-
-#
-# File systems
-#
-# CONFIG_EXT2_FS is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_EXT4_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-CONFIG_FILE_LOCKING=y
-CONFIG_FSNOTIFY=y
-# CONFIG_DNOTIFY is not set
-# CONFIG_INOTIFY is not set
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# Caches
-#
-# CONFIG_FSCACHE is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-# CONFIG_MSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_PROC_SYSCTL=y
-# CONFIG_PROC_PAGE_MONITOR is not set
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-CONFIG_MISC_FILESYSTEMS=y
-# CONFIG_HFSPLUS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_OMFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_NETWORK_FILESYSTEMS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_NLS is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_TRACE_IRQFLAGS_SUPPORT is not set
-CONFIG_PRINTK_TIME=y
-# CONFIG_ENABLE_WARN_DEPRECATED is not set
-# CONFIG_ENABLE_MUST_CHECK is not set
-CONFIG_FRAME_WARN=1024
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_STRIP_ASM_SYMS is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-CONFIG_DEBUG_FS=y
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_STACKTRACE=y
-# CONFIG_DEBUG_MEMORY_INIT is not set
-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-# CONFIG_LKDTM is not set
-# CONFIG_LATENCYTOP is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-CONFIG_TRACING_SUPPORT=y
-# CONFIG_FTRACE is not set
-# CONFIG_DYNAMIC_DEBUG is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-# CONFIG_SAMPLES is not set
-# CONFIG_STRICT_DEVMEM is not set
-CONFIG_EARLY_PRINTK=y
-# CONFIG_16KSTACKS is not set
-# CONFIG_OPTIMIZE_INLINING is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITYFS is not set
-# CONFIG_DEFAULT_SECURITY_SELINUX is not set
-# CONFIG_DEFAULT_SECURITY_SMACK is not set
-# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
-CONFIG_DEFAULT_SECURITY_DAC=y
-CONFIG_DEFAULT_SECURITY=""
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-# CONFIG_CRYPTO_MANAGER is not set
-# CONFIG_CRYPTO_MANAGER2 is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Authenticated Encryption with Associated Data
-#
-# CONFIG_CRYPTO_CCM is not set
-# CONFIG_CRYPTO_GCM is not set
-# CONFIG_CRYPTO_SEQIV is not set
-
-#
-# Block modes
-#
-# CONFIG_CRYPTO_CBC is not set
-# CONFIG_CRYPTO_CTR is not set
-# CONFIG_CRYPTO_CTS is not set
-# CONFIG_CRYPTO_ECB is not set
-# CONFIG_CRYPTO_PCBC is not set
-
-#
-# Hash modes
-#
-# CONFIG_CRYPTO_HMAC is not set
-
-#
-# Digest
-#
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_GHASH is not set
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_RMD128 is not set
-# CONFIG_CRYPTO_RMD160 is not set
-# CONFIG_CRYPTO_RMD256 is not set
-# CONFIG_CRYPTO_RMD320 is not set
-# CONFIG_CRYPTO_SHA1 is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_WP512 is not set
-
-#
-# Ciphers
-#
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_ARC4 is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_DES is not set
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_SEED is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-
-#
-# Compression
-#
-# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_ZLIB is not set
-# CONFIG_CRYPTO_LZO is not set
-
-#
-# Random Number Generation
-#
-# CONFIG_CRYPTO_ANSI_CPRNG is not set
-# CONFIG_CRYPTO_HW is not set
-# CONFIG_BINARY_PRINTF is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_GENERIC_FIND_LAST_BIT=y
-# CONFIG_CRC_CCITT is not set
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_T10DIF is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-# CONFIG_LIBCRC32C is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_GENERIC_ALLOCATOR=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_DMA=y
-CONFIG_NLATTR=y
-
-#
-# Quantenna
-#
-CONFIG_QUANTENNA_RUBY=y
-CONFIG_ARCH_RUBY_NUMA=y
-CONFIG_QVSP=y
-# CONFIG_RUBY_PCIE_TARGET is not set
-CONFIG_RUBY_PCIE_HOST=y
-CONFIG_ARCH_RUBY_SRAM_IRQ_STACK=y
-# CONFIG_KERNEL_TEXT_SNAPSHOTS is not set
-CONFIG_ARCH_RUBY_EMAC_LIB=y
-CONFIG_ARCH_RUBY_EMAC=y
-CONFIG_ARCH_RUBY_EMAC_SMOOTHING=y
-CONFIG_ARCH_RUBY_EMAC_SMOOTHING_BURST_SIZE=48
-CONFIG_ARCH_RUBY_EMAC_SMOOTHING_RATE=50000
-# CONFIG_QUANTENNA_RESTRICT_WLAN_IP is not set
-CONFIG_QUANTENNA_RESTRICT_OWN_IP=0x02AF800A
-# CONFIG_SWITCH_RTL8365MB is not set
-# CONFIG_SWITCH_RTL8363SB is not set
-
-#
-# Quantenna Topaz
-#
-# CONFIG_QUANTENNA_TOPAZ is not set
-# CONFIG_TOPAZ_PCIE_TARGET is not set
-# CONFIG_TOPAZ_PCIE_HOST is not set
diff --git a/arch/arc/configs/qhs711_pcie_config b/arch/arc/configs/qhs711_pcie_config
deleted file mode 100644
index 0ae0638..0000000
--- a/arch/arc/configs/qhs711_pcie_config
+++ /dev/null
@@ -1,1061 +0,0 @@
-#
-# This file is under the control of Perforce and determines the kernel configuration for Ruby / BBIC3.
-# Used with QHS711 PCIe board types
-#
-# Linux kernel version: 2.6.35.12
-#
-CONFIG_ARCH_ARC=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_UID16=y
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_FLATMEM=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_MMU=y
-CONFIG_NO_IOPORT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_BINFMT_ELF=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_SCHED_OMIT_FRAME_POINTER=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_CONSTRUCTORS=y
-
-#
-# General setup
-#
-# CONFIG_EXPERIMENTAL is not set
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE="/usr/local/ARC/gcc/bin/arc-linux-uclibc-"
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_SWAP is not set
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_AUDIT is not set
-
-#
-# RCU Subsystem
-#
-CONFIG_TREE_RCU=y
-# CONFIG_TREE_PREEMPT_RCU is not set
-# CONFIG_TINY_RCU is not set
-CONFIG_RCU_TRACE=y
-CONFIG_RCU_FANOUT=32
-# CONFIG_RCU_FANOUT_EXACT is not set
-CONFIG_TREE_RCU_TRACE=y
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-# CONFIG_SYSFS_DEPRECATED_V2 is not set
-# CONFIG_RELAY is not set
-# CONFIG_NAMESPACES is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE="../buildroot/rootfs.arc-linux-uclibc.cpio"
-CONFIG_INITRAMFS_ROOT_UID=0
-CONFIG_INITRAMFS_ROOT_GID=0
-# CONFIG_RD_GZIP is not set
-# CONFIG_RD_BZIP2 is not set
-# CONFIG_RD_LZMA is not set
-# CONFIG_RD_LZO is not set
-CONFIG_INITRAMFS_COMPRESSION_NONE=y
-# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set
-# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set
-# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set
-# CONFIG_INITRAMFS_COMPRESSION_LZO is not set
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-CONFIG_EMBEDDED=y
-CONFIG_SYSCTL_SYSCALL=y
-# CONFIG_KALLSYMS is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_DEFERRED_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-# CONFIG_BASE_FULL is not set
-# CONFIG_FUTEX is not set
-# CONFIG_EPOLL is not set
-# CONFIG_SIGNALFD is not set
-# CONFIG_TIMERFD is not set
-# CONFIG_EVENTFD is not set
-CONFIG_SHMEM=y
-# CONFIG_AIO is not set
-
-#
-# Kernel Performance Events And Counters
-#
-CONFIG_VM_EVENT_COUNTERS=y
-# CONFIG_COMPAT_BRK is not set
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-# CONFIG_PROFILING is not set
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-# CONFIG_HAVE_KPROBES is not set
-# CONFIG_HAVE_KRETPROBES is not set
-
-#
-# GCOV-based kernel profiling
-#
-# CONFIG_GCOV_KERNEL is not set
-# CONFIG_SLOW_WORK is not set
-# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=1
-CONFIG_MODULES=y
-# CONFIG_MODULE_FORCE_LOAD is not set
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_BLOCK=y
-# CONFIG_LBDAF is not set
-# CONFIG_BLK_DEV_BSG is not set
-# CONFIG_BLK_DEV_INTEGRITY is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_DEADLINE is not set
-# CONFIG_IOSCHED_CFQ is not set
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-CONFIG_DEFAULT_NOOP=y
-CONFIG_DEFAULT_IOSCHED="noop"
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
-CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
-CONFIG_INLINE_READ_UNLOCK=y
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
-CONFIG_INLINE_READ_UNLOCK_IRQ=y
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
-CONFIG_INLINE_WRITE_UNLOCK=y
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
-CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-# CONFIG_MUTEX_SPIN_ON_OWNER is not set
-# CONFIG_FREEZER is not set
-
-#
-# Processor Type and features
-#
-CONFIG_ARCH_ARC700=y
-# CONFIG_ARCH_ARC800 is not set
-
-#
-# ARC CPU Core Configuration
-#
-CONFIG_ARC700_CACHE=y
-CONFIG_ARC700_USE_ICACHE=y
-CONFIG_ARC700_USE_DCACHE=y
-CONFIG_ARC700_CACHE_PAGES=y
-# CONFIG_ARCH_ARC_ICCM is not set
-# CONFIG_ARCH_ARC_DCCM is not set
-# CONFIG_ARC_MMU_V1 is not set
-CONFIG_ARC_MMU_V2=y
-# CONFIG_ARC_MMU_V3 is not set
-CONFIG_ARC_PAGE_SIZE_8K=y
-# CONFIG_ARC_PAGE_SIZE_16K is not set
-# CONFIG_ARC_PAGE_SIZE_4K is not set
-# CONFIG_ARCH_ARC_LV2_INTR is not set
-# CONFIG_ARCH_ARC_FPU is not set
-# CONFIG_ARC700_V_4_10 is not set
-
-#
-# Board Configuration
-#
-CONFIG_LINUX_LINK_BASE=0x80002000
-CONFIG_SDRAM_SIZE=0x04000000
-
-#
-# ARC Pheripheral Support
-#
-# CONFIG_NO_DMA is not set
-# CONFIG_ARC_IDE is not set
-# CONFIG_ARC_SERIAL is not set
-# CONFIG_ARCTANGENT_EMAC is not set
-# CONFIG_XILINX_TEMAC is not set
-# CONFIG_ISS_MAC is not set
-# CONFIG_ARCPGU is not set
-# CONFIG_VFB_SIM is not set
-# CONFIG_SOUND_ARC_AC97 is not set
-CONFIG_ARC_7XX_GPIO=y
-
-#
-# Bus options (PCI etc.)
-#
-# CONFIG_PCI is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-# CONFIG_PCCARD is not set
-CONFIG_ARCH_ARC_CURR_IN_REG=y
-# CONFIG_ARC_TLS_REG_EMUL is not set
-CONFIG_ARC_MISALIGNED_ACCESS=y
-# CONFIG_ARCH_ARC_SPACE_RND is not set
-# CONFIG_MMAP_CODE_CMN_VADDR is not set
-CONFIG_HZ=200
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_ARC_STACK_NONEXEC=y
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-# CONFIG_ARCH_ARC_HLINK is not set
-CONFIG_ARC_DBG=y
-CONFIG_ARC_STACK_UNWIND=y
-# CONFIG_ARC_TLB_PARANOIA is not set
-# CONFIG_ARC_DBG_EVENT_TIMELINE is not set
-# CONFIG_ARC_TLB_PROFILE is not set
-# CONFIG_ARC_UBOOT_CMDLINE is not set
-# CONFIG_ARC_PROFILING is not set
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_PAGEFLAGS_EXTENDED=y
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=0
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_KSM is not set
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-CONFIG_IPV6=y
-# CONFIG_IPV6_PRIVACY is not set
-CONFIG_IPV6_ROUTER_PREF=y
-# CONFIG_INET6_AH is not set
-# CONFIG_INET6_ESP is not set
-# CONFIG_INET6_IPCOMP is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
-# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
-# CONFIG_INET6_XFRM_MODE_BEET is not set
-# CONFIG_IPV6_SIT is not set
-# CONFIG_IPV6_TUNNEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-# CONFIG_NETFILTER_ADVANCED is not set
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=y
-CONFIG_NETFILTER_NETLINK_LOG=y
-CONFIG_NF_CONNTRACK=y
-CONFIG_NF_CONNTRACK_FTP=y
-CONFIG_NF_CONNTRACK_IRC=y
-CONFIG_NF_CONNTRACK_SIP=y
-# CONFIG_NF_CT_NETLINK is not set
-CONFIG_NETFILTER_XTABLES=y
-
-#
-# Xtables combined modules
-#
-CONFIG_NETFILTER_XT_MARK=m
-
-#
-# Xtables targets
-#
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-
-#
-# Xtables matches
-#
-# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
-CONFIG_NETFILTER_XT_MATCH_POLICY=y
-# CONFIG_NETFILTER_XT_MATCH_STATE is not set
-# CONFIG_IP_VS is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV4=y
-CONFIG_NF_CONNTRACK_IPV4=y
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_IPTABLES=y
-CONFIG_IP_NF_FILTER=y
-CONFIG_IP_NF_TARGET_REJECT=y
-CONFIG_IP_NF_TARGET_LOG=y
-CONFIG_IP_NF_TARGET_ULOG=y
-# CONFIG_NF_NAT is not set
-CONFIG_IP_NF_MANGLE=y
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_NF_CONNTRACK_IPV6 is not set
-# CONFIG_IP6_NF_IPTABLES is not set
-# CONFIG_ATM is not set
-# CONFIG_L2TP is not set
-CONFIG_STP=y
-CONFIG_BRIDGE=y
-CONFIG_BRIDGE_IGMP_SNOOPING=y
-CONFIG_VLAN_8021Q=y
-# CONFIG_VLAN_8021Q_GVRP is not set
-# CONFIG_DECNET is not set
-CONFIG_LLC=y
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_PHONET is not set
-CONFIG_NET_SCHED=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=y
-# CONFIG_NET_SCH_HTB is not set
-# CONFIG_NET_SCH_HFSC is not set
-CONFIG_NET_SCH_PRIO=y
-# CONFIG_NET_SCH_MULTIQ is not set
-CONFIG_NET_SCH_RED=y
-# CONFIG_NET_SCH_SFQ is not set
-# CONFIG_NET_SCH_TEQL is not set
-CONFIG_NET_SCH_TBF=y
-CONFIG_NET_SCH_GRED=y
-CONFIG_NET_SCH_DSMARK=y
-# CONFIG_NET_SCH_NETEM is not set
-# CONFIG_NET_SCH_DRR is not set
-CONFIG_NET_SCH_INGRESS=y
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=y
-CONFIG_NET_CLS_TCINDEX=y
-CONFIG_NET_CLS_ROUTE4=y
-CONFIG_NET_CLS_ROUTE=y
-CONFIG_NET_CLS_FW=y
-CONFIG_NET_CLS_U32=y
-# CONFIG_CLS_U32_PERF is not set
-CONFIG_CLS_U32_MARK=y
-# CONFIG_NET_CLS_RSVP is not set
-# CONFIG_NET_CLS_RSVP6 is not set
-CONFIG_NET_CLS_FLOW=y
-# CONFIG_NET_EMATCH is not set
-CONFIG_NET_CLS_ACT=y
-CONFIG_NET_ACT_POLICE=y
-# CONFIG_NET_ACT_GACT is not set
-# CONFIG_NET_ACT_MIRRED is not set
-# CONFIG_NET_ACT_IPT is not set
-# CONFIG_NET_ACT_NAT is not set
-# CONFIG_NET_ACT_PEDIT is not set
-# CONFIG_NET_ACT_SIMP is not set
-# CONFIG_NET_ACT_SKBEDIT is not set
-CONFIG_NET_CLS_IND=y
-CONFIG_NET_SCH_FIFO=y
-# CONFIG_DCB is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_CAN is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-CONFIG_WIRELESS=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_WEXT_CORE=y
-CONFIG_WEXT_PROC=y
-CONFIG_WEXT_PRIV=y
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT_SYSFS=y
-# CONFIG_LIB80211 is not set
-
-#
-# CFG80211 needs to be enabled for MAC80211
-#
-
-#
-# Some wireless drivers require a rate control algorithm
-#
-# CONFIG_WIMAX is not set
-# CONFIG_RFKILL is not set
-# CONFIG_CAIF is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH=""
-# CONFIG_DEVTMPFS is not set
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_FIRMWARE_IN_KERNEL is not set
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_CONNECTOR is not set
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_TESTS is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AR7_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-# CONFIG_MTD_OOPS is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_NAND is not set
-# CONFIG_MTD_ONENAND is not set
-
-#
-# LPDDR flash memory drivers
-#
-# CONFIG_MTD_LPDDR is not set
-
-#
-# UBI - Unsorted block images
-#
-# CONFIG_MTD_UBI is not set
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-
-#
-# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
-#
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=1
-CONFIG_BLK_DEV_RAM_SIZE=2048
-# CONFIG_BLK_DEV_XIP is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-# CONFIG_MISC_DEVICES is not set
-
-#
-# SCSI device support
-#
-CONFIG_SCSI_MOD=y
-# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SCSI_NETLINK is not set
-# CONFIG_ATA is not set
-# CONFIG_MD is not set
-CONFIG_NETDEVICES=y
-# CONFIG_IFB is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_VETH is not set
-CONFIG_PHYLIB=y
-
-#
-# MII PHY device drivers
-#
-# CONFIG_MARVELL_PHY is not set
-# CONFIG_DAVICOM_PHY is not set
-# CONFIG_QSEMI_PHY is not set
-# CONFIG_LXT_PHY is not set
-# CONFIG_CICADA_PHY is not set
-# CONFIG_VITESSE_PHY is not set
-# CONFIG_SMSC_PHY is not set
-# CONFIG_BROADCOM_PHY is not set
-# CONFIG_ICPLUS_PHY is not set
-# CONFIG_REALTEK_PHY is not set
-# CONFIG_NATIONAL_PHY is not set
-# CONFIG_STE10XP is not set
-# CONFIG_LSI_ET1011C_PHY is not set
-# CONFIG_MICREL_PHY is not set
-# CONFIG_FIXED_PHY is not set
-# CONFIG_MDIO_BITBANG is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_ETHOC is not set
-# CONFIG_DNET is not set
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
-# CONFIG_B44 is not set
-# CONFIG_KS8842 is not set
-# CONFIG_KS8851_MLL is not set
-CONFIG_NETDEV_1000=y
-# CONFIG_NETDEV_10000 is not set
-CONFIG_WLAN=y
-# CONFIG_HOSTAP is not set
-
-#
-# Enable WiMAX (Networking options) to see the WiMAX drivers
-#
-# CONFIG_WAN is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_ISDN is not set
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-# CONFIG_INPUT_SPARSEKMAP is not set
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-# CONFIG_VT is not set
-# CONFIG_DEVKMEM is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=2
-CONFIG_SERIAL_8250_RUNTIME_UARTS=2
-CONFIG_SERIAL_8250_EXTENDED=y
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_RSA is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_TIMBERDALE is not set
-# CONFIG_SERIAL_ALTERA_JTAGUART is not set
-# CONFIG_SERIAL_ALTERA_UART is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_RTC is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_RAMOOPS is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-# CONFIG_I2C_COMPAT is not set
-# CONFIG_I2C_CHARDEV is not set
-# CONFIG_I2C_HELPER_AUTO is not set
-# CONFIG_I2C_SMBUS is not set
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_PCA_PLATFORM is not set
-# CONFIG_I2C_SIMTEC is not set
-
-#
-# External I2C/SMBus adapter drivers
-#
-# CONFIG_I2C_PARPORT_LIGHT is not set
-
-#
-# Other I2C/SMBus bus drivers
-#
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_SPI is not set
-
-#
-# PPS support
-#
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_GPIOLIB=y
-CONFIG_GPIO_SYSFS=y
-
-#
-# Memory mapped GPIO expanders:
-#
-# CONFIG_GPIO_IT8761E is not set
-
-#
-# I2C GPIO expanders:
-#
-# CONFIG_GPIO_MAX7300 is not set
-# CONFIG_GPIO_MAX732X is not set
-# CONFIG_GPIO_PCA953X is not set
-# CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_ADP5588 is not set
-
-#
-# PCI GPIO expanders:
-#
-
-#
-# SPI GPIO expanders:
-#
-
-#
-# AC97 GPIO expanders:
-#
-
-#
-# MODULbus GPIO expanders:
-#
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
-# CONFIG_THERMAL is not set
-# CONFIG_WATCHDOG is not set
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-# CONFIG_SSB is not set
-CONFIG_MFD_SUPPORT=y
-# CONFIG_MFD_CORE is not set
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_PASIC3 is not set
-# CONFIG_HTC_I2CPLD is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_TPS6507X is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_PMIC_DA903X is not set
-# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_MFD_WM8400 is not set
-# CONFIG_MFD_PCF50633 is not set
-# CONFIG_ABX500_CORE is not set
-# CONFIG_REGULATOR is not set
-# CONFIG_MEDIA_SUPPORT is not set
-
-#
-# Graphics support
-#
-# CONFIG_VGASTATE is not set
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-# CONFIG_FB is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-# CONFIG_SOUND is not set
-# CONFIG_HID_SUPPORT is not set
-# CONFIG_USB_SUPPORT is not set
-# CONFIG_MMC is not set
-# CONFIG_MEMSTICK is not set
-# CONFIG_NEW_LEDS is not set
-# CONFIG_ACCESSIBILITY is not set
-# CONFIG_RTC_CLASS is not set
-CONFIG_DMADEVICES=y
-# CONFIG_DMADEVICES_DEBUG is not set
-
-#
-# DMA Devices
-#
-# CONFIG_TIMB_DMA is not set
-# CONFIG_AUXDISPLAY is not set
-# CONFIG_UIO is not set
-# CONFIG_STAGING is not set
-
-#
-# File systems
-#
-# CONFIG_EXT2_FS is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_EXT4_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-CONFIG_FILE_LOCKING=y
-CONFIG_FSNOTIFY=y
-# CONFIG_DNOTIFY is not set
-# CONFIG_INOTIFY is not set
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# Caches
-#
-# CONFIG_FSCACHE is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-# CONFIG_MSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_PROC_SYSCTL=y
-# CONFIG_PROC_PAGE_MONITOR is not set
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-CONFIG_MISC_FILESYSTEMS=y
-# CONFIG_HFSPLUS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_OMFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_NETWORK_FILESYSTEMS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_NLS is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_TRACE_IRQFLAGS_SUPPORT is not set
-CONFIG_PRINTK_TIME=y
-# CONFIG_ENABLE_WARN_DEPRECATED is not set
-# CONFIG_ENABLE_MUST_CHECK is not set
-CONFIG_FRAME_WARN=1024
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_STRIP_ASM_SYMS is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-CONFIG_DEBUG_FS=y
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_STACKTRACE=y
-# CONFIG_DEBUG_MEMORY_INIT is not set
-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-# CONFIG_LKDTM is not set
-# CONFIG_LATENCYTOP is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-CONFIG_TRACING_SUPPORT=y
-# CONFIG_FTRACE is not set
-# CONFIG_DYNAMIC_DEBUG is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-# CONFIG_SAMPLES is not set
-# CONFIG_STRICT_DEVMEM is not set
-CONFIG_EARLY_PRINTK=y
-# CONFIG_16KSTACKS is not set
-# CONFIG_OPTIMIZE_INLINING is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITYFS is not set
-# CONFIG_DEFAULT_SECURITY_SELINUX is not set
-# CONFIG_DEFAULT_SECURITY_SMACK is not set
-# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
-CONFIG_DEFAULT_SECURITY_DAC=y
-CONFIG_DEFAULT_SECURITY=""
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-# CONFIG_CRYPTO_MANAGER is not set
-# CONFIG_CRYPTO_MANAGER2 is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Authenticated Encryption with Associated Data
-#
-# CONFIG_CRYPTO_CCM is not set
-# CONFIG_CRYPTO_GCM is not set
-# CONFIG_CRYPTO_SEQIV is not set
-
-#
-# Block modes
-#
-# CONFIG_CRYPTO_CBC is not set
-# CONFIG_CRYPTO_CTR is not set
-# CONFIG_CRYPTO_CTS is not set
-# CONFIG_CRYPTO_ECB is not set
-# CONFIG_CRYPTO_PCBC is not set
-
-#
-# Hash modes
-#
-# CONFIG_CRYPTO_HMAC is not set
-
-#
-# Digest
-#
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_GHASH is not set
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_RMD128 is not set
-# CONFIG_CRYPTO_RMD160 is not set
-# CONFIG_CRYPTO_RMD256 is not set
-# CONFIG_CRYPTO_RMD320 is not set
-# CONFIG_CRYPTO_SHA1 is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_WP512 is not set
-
-#
-# Ciphers
-#
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_ARC4 is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_DES is not set
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_SEED is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-
-#
-# Compression
-#
-# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_ZLIB is not set
-# CONFIG_CRYPTO_LZO is not set
-
-#
-# Random Number Generation
-#
-# CONFIG_CRYPTO_ANSI_CPRNG is not set
-# CONFIG_CRYPTO_HW is not set
-# CONFIG_BINARY_PRINTF is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_GENERIC_FIND_LAST_BIT=y
-# CONFIG_CRC_CCITT is not set
-# CONFIG_CRC16 is not set
-# CONFIG_CRC_T10DIF is not set
-# CONFIG_CRC_ITU_T is not set
-CONFIG_CRC32=y
-# CONFIG_CRC7 is not set
-# CONFIG_LIBCRC32C is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_GENERIC_ALLOCATOR=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_DMA=y
-CONFIG_NLATTR=y
-
-#
-# Quantenna
-#
-CONFIG_QUANTENNA_RUBY=y
-CONFIG_ARCH_RUBY_NUMA=y
-# CONFIG_QVSP is not set
-CONFIG_RUBY_PCIE_TARGET=y
-# CONFIG_RUBY_PCIE_HOST is not set
-CONFIG_ARCH_RUBY_SRAM_IRQ_STACK=y
-# CONFIG_KERNEL_TEXT_SNAPSHOTS is not set
-# CONFIG_ARCH_RUBY_EMAC_LIB is not set
-# CONFIG_ARCH_RUBY_EMAC is not set
-# CONFIG_SWITCH_RTL8365MB is not set
-# CONFIG_SWITCH_RTL8363SB is not set
-
-#
-# Quantenna Topaz
-#
-# CONFIG_QUANTENNA_TOPAZ is not set
-# CONFIG_TOPAZ_PCIE_TARGET is not set
-# CONFIG_TOPAZ_PCIE_HOST is not set
diff --git a/arch/arc/configs/qtm710_np_config b/arch/arc/configs/qtm710_np_config
deleted file mode 120000
index 6d2d30b..0000000
--- a/arch/arc/configs/qtm710_np_config
+++ /dev/null
@@ -1 +0,0 @@
-qhs710_vb_config
\ No newline at end of file
diff --git a/arch/arc/configs/qtm710_rgmii_config b/arch/arc/configs/qtm710_rgmii_config
deleted file mode 120000
index 6d2d30b..0000000
--- a/arch/arc/configs/qtm710_rgmii_config
+++ /dev/null
@@ -1 +0,0 @@
-qhs710_vb_config
\ No newline at end of file
diff --git a/arch/arc/configs/ruby_config b/arch/arc/configs/ruby_config
deleted file mode 120000
index 6d2d30b..0000000
--- a/arch/arc/configs/ruby_config
+++ /dev/null
@@ -1 +0,0 @@
-qhs710_vb_config
\ No newline at end of file
diff --git a/arch/arc/configs/qtm710_rc_config b/arch/arc/configs/topaz_dbdc_config
similarity index 94%
rename from arch/arc/configs/qtm710_rc_config
rename to arch/arc/configs/topaz_dbdc_config
index 5c01aab..c70bcb7 100644
--- a/arch/arc/configs/qtm710_rc_config
+++ b/arch/arc/configs/topaz_dbdc_config
@@ -1,5 +1,5 @@
 #
-# Used with Quantenna PCIe hosts: QTM710 Network Processor boards
+# This file is under the control of Perforce and determines the kernel configuration for Topaz / BBIC4.
 #
 # Linux kernel version: 2.6.35.12
 #
@@ -74,9 +74,10 @@
 CONFIG_EMBEDDED=y
 CONFIG_SYSCTL_SYSCALL=y
 CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_KALLSYMS_EXTRA_PASS=y
 CONFIG_HOTPLUG=y
 CONFIG_PRINTK=y
+CONFIG_DEFERRED_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
 # CONFIG_BASE_FULL is not set
@@ -213,18 +214,17 @@
 # Bus options (PCI etc.)
 #
 CONFIG_PCI=y
-CONFIG_ARCH_SUPPORTS_MSI=y
-CONFIG_PCI_MSI=y
-CONFIG_PCI_LEGACY=y
+# CONFIG_ARCH_SUPPORTS_MSI is not set
 # CONFIG_PCI_STUB is not set
 # CONFIG_PCI_IOV is not set
 # CONFIG_HOTPLUG_PCI is not set
+# CONFIG_PCIEPORTBUS is not set
 # CONFIG_PCCARD is not set
 CONFIG_ARCH_ARC_CURR_IN_REG=y
 # CONFIG_ARC_TLS_REG_EMUL is not set
 CONFIG_ARC_MISALIGNED_ACCESS=y
 # CONFIG_ARCH_ARC_SPACE_RND is not set
-# CONFIG_MMAP_CODE_CMN_VADDR is not set
+CONFIG_MMAP_CODE_CMN_VADDR=y
 CONFIG_HZ=200
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_ARC_STACK_NONEXEC=y
@@ -285,25 +285,16 @@
 CONFIG_IPV6=y
 # CONFIG_IPV6_PRIVACY is not set
 CONFIG_IPV6_ROUTER_PREF=y
-# CONFIG_IPV6_ROUTE_INFO is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
 # CONFIG_INET6_AH is not set
 # CONFIG_INET6_ESP is not set
 # CONFIG_INET6_IPCOMP is not set
-# CONIFG_IPV6_MIP6 is not set
 # CONFIG_INET6_XFRM_TUNNEL is not set
 # CONFIG_INET6_TUNNEL is not set
 # CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
 # CONFIG_INET6_XFRM_MODE_TUNNEL is not set
 # CONFIG_INET6_XFRM_MODE_BEET is not set
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
 # CONFIG_IPV6_SIT is not set
-# CONFIG_IPV6_NDISC_NODETYPE is not set
 # CONFIG_IPV6_TUNNEL is not set
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_IPV6_SUBTREES is not set
-# CONFIG_IPV6_MROUTE is not set
-# CONFIG_IPV6_PIMSM_V2 is not set
 # CONFIG_NETWORK_SECMARK is not set
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
@@ -375,28 +366,6 @@
 CONFIG_NET_SCHED=y
 
 #
-# IPv6: Netfilter Configuration
-#
-#
-# CONFIG_NF_CONNTRACK_IPV6 is not set
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
-# CONFIG_IP6_NF_MATCH_AH is not set
-# CONFIG_IP6_NF_MATCH_EUI64 is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_MH is not set
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_TARGET_HL is not set
-# CONFIG_IP6_NF_TARGET_LOG is not set
-# CONFIG_IP6_NF_FILTER is not set
-# CONFIG_IP6_NF_TARGET_REJECT is not set
-# CONFIG_IP6_NF_MANGLE is not set
-# CONFIG_IP6_NF_RAW is not set
-# CONFIG_IP6_NF_SECURITY is not set
-
 # Queueing/Scheduling
 #
 CONFIG_NET_SCH_CBQ=y
@@ -613,7 +582,7 @@
 CONFIG_NETDEVICES=y
 # CONFIG_IFB is not set
 # CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
+CONFIG_BONDING=m
 # CONFIG_EQUALIZER is not set
 # CONFIG_TUN is not set
 # CONFIG_VETH is not set
@@ -632,7 +601,7 @@
 # CONFIG_SMSC_PHY is not set
 # CONFIG_BROADCOM_PHY is not set
 # CONFIG_ICPLUS_PHY is not set
-# CONFIG_REALTEK_PHY is not set
+CONFIG_REALTEK_PHY=y
 # CONFIG_NATIONAL_PHY is not set
 # CONFIG_STE10XP is not set
 # CONFIG_LSI_ET1011C_PHY is not set
@@ -792,7 +761,6 @@
 #
 # I2C Hardware Bus support
 #
-
 #
 # PC SMBus host controller drivers
 #
@@ -1024,7 +992,7 @@
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_FRAME_WARN=1024
-# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_MAGIC_SYSRQ=y
 # CONFIG_STRIP_ASM_SYMS is not set
 # CONFIG_UNUSED_SYMBOLS is not set
 CONFIG_DEBUG_FS=y
@@ -1032,7 +1000,7 @@
 # CONFIG_DEBUG_KERNEL is not set
 CONFIG_STACKTRACE=y
 # CONFIG_DEBUG_MEMORY_INIT is not set
-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+CONFIG_RCU_CPU_STALL_DETECTOR=y
 # CONFIG_LKDTM is not set
 # CONFIG_LATENCYTOP is not set
 # CONFIG_SYSCTL_SYSCALL_CHECK is not set
@@ -1164,20 +1132,28 @@
 #
 CONFIG_QUANTENNA_RUBY=y
 CONFIG_ARCH_RUBY_NUMA=y
-# CONFIG_QVSP is not set
+CONFIG_QVSP=y
 # CONFIG_RUBY_PCIE_TARGET is not set
-CONFIG_RUBY_PCIE_HOST=y
+# CONFIG_RUBY_PCIE_HOST is not set
+# CONFIG_TOPAZ_PCIE_TARGET is not set
+# CONFIG_TOPAZ_PCIE_HOST is not set
+CONFIG_TOPAZ_DBDC_HOST=y
 CONFIG_ARCH_RUBY_SRAM_IRQ_STACK=y
 # CONFIG_KERNEL_TEXT_SNAPSHOTS is not set
+CONFIG_ARCH_RUBY_EMAC_LIB=m
+CONFIG_ARCH_RUBY_EMAC=m
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING=y
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_BURST_SIZE=48
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_RATE=50000
+# CONFIG_QUANTENNA_RESTRICT_WLAN_IP is not set
 # CONFIG_SWITCH_RTL8365MB is not set
-# CONFIG_SWITCH_RTL8363SB is not set
+CONFIG_SWITCH_RTL8363SB=m
 
 #
 # Quantenna Topaz
 #
-# CONFIG_QUANTENNA_TOPAZ is not set
-# CONFIG_TOPAZ_PCIE_TARGET is not set
-# CONFIG_TOPAZ_PCIE_HOST is not set
+CONFIG_QUANTENNA_TOPAZ=y
+CONFIG_ARCH_TOPAZ_FWT=m
+CONFIG_ARCH_TOPAZ_TQE=m
+# CONFIG_ARCH_TOPAZ_SWITCH_TEST is not set
+CONFIG_ARCH_TOPAZ_EMAC=m
diff --git a/arch/arc/configs/topaz_fpga_config b/arch/arc/configs/topaz_fpga_config
index f654913..1b65a29 100644
--- a/arch/arc/configs/topaz_fpga_config
+++ b/arch/arc/configs/topaz_fpga_config
@@ -1065,3 +1065,4 @@
 # CONFIG_ARCH_TOPAZ_SWITCH_TEST is not set
 # CONFIG_TOPAZ_PCIE_TARGET is not set
 # CONFIG_TOPAZ_PCIE_HOST is not set
+# CONFIG_TOPAZ_DBDC_HOST is not set
diff --git a/arch/arc/configs/topaz_host_config b/arch/arc/configs/topaz_host_config
index 2528ca3..2984cf7 100644
--- a/arch/arc/configs/topaz_host_config
+++ b/arch/arc/configs/topaz_host_config
@@ -1157,7 +1157,6 @@
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_BURST_SIZE=48
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_RATE=50000
 # CONFIG_QUANTENNA_RESTRICT_WLAN_IP is not set
-CONFIG_QUANTENNA_RESTRICT_OWN_IP=0x02AF800A
 # CONFIG_SWITCH_RTL8365MB is not set
 CONFIG_SWITCH_RTL8363SB=m
 
@@ -1171,3 +1170,4 @@
 CONFIG_ARCH_TOPAZ_EMAC=m
 # CONFIG_TOPAZ_PCIE_TARGET is not set
 CONFIG_TOPAZ_PCIE_HOST=y
+# CONFIG_TOPAZ_DBDC_HOST is not set
diff --git a/arch/arc/configs/qhs710_vb_config b/arch/arc/configs/topaz_msft_config
old mode 100644
new mode 100755
similarity index 97%
copy from arch/arc/configs/qhs710_vb_config
copy to arch/arc/configs/topaz_msft_config
index ca7c0fc..4924fd6
--- a/arch/arc/configs/qhs710_vb_config
+++ b/arch/arc/configs/topaz_msft_config
@@ -1,6 +1,5 @@
 #
-# This file is under the control of Perforce and determines the kernel configuration for Ruby / BBIC3.
-# Used with QHS710 Video Bridge and QTM710 Network Processor board types
+# This file is under the control of Perforce and determines the kernel configuration for Topaz / BBIC4.
 #
 # Linux kernel version: 2.6.35.12
 #
@@ -74,8 +73,8 @@
 CONFIG_ANON_INODES=y
 CONFIG_EMBEDDED=y
 CONFIG_SYSCTL_SYSCALL=y
-# CONFIG_KALLSYMS is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_EXTRA_PASS=y
 CONFIG_HOTPLUG=y
 CONFIG_PRINTK=y
 CONFIG_DEFERRED_PRINTK=y
@@ -219,7 +218,7 @@
 # CONFIG_ARC_TLS_REG_EMUL is not set
 CONFIG_ARC_MISALIGNED_ACCESS=y
 # CONFIG_ARCH_ARC_SPACE_RND is not set
-# CONFIG_MMAP_CODE_CMN_VADDR is not set
+CONFIG_MMAP_CODE_CMN_VADDR=y
 CONFIG_HZ=200
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_ARC_STACK_NONEXEC=y
@@ -555,7 +554,7 @@
 CONFIG_NETDEVICES=y
 # CONFIG_IFB is not set
 # CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
+CONFIG_BONDING=m
 # CONFIG_EQUALIZER is not set
 # CONFIG_TUN is not set
 # CONFIG_VETH is not set
@@ -573,7 +572,7 @@
 # CONFIG_SMSC_PHY is not set
 # CONFIG_BROADCOM_PHY is not set
 # CONFIG_ICPLUS_PHY is not set
-# CONFIG_REALTEK_PHY is not set
+CONFIG_REALTEK_PHY=y
 # CONFIG_NATIONAL_PHY is not set
 # CONFIG_STE10XP is not set
 # CONFIG_LSI_ET1011C_PHY is not set
@@ -903,7 +902,7 @@
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_FRAME_WARN=1024
-# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_MAGIC_SYSRQ=y
 # CONFIG_STRIP_ASM_SYMS is not set
 # CONFIG_UNUSED_SYMBOLS is not set
 CONFIG_DEBUG_FS=y
@@ -911,7 +910,7 @@
 # CONFIG_DEBUG_KERNEL is not set
 CONFIG_STACKTRACE=y
 # CONFIG_DEBUG_MEMORY_INIT is not set
-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+CONFIG_RCU_CPU_STALL_DETECTOR=y
 # CONFIG_LKDTM is not set
 # CONFIG_LATENCYTOP is not set
 # CONFIG_SYSCTL_SYSCALL_CHECK is not set
@@ -1046,21 +1045,25 @@
 CONFIG_QVSP=y
 # CONFIG_RUBY_PCIE_TARGET is not set
 # CONFIG_RUBY_PCIE_HOST is not set
+# CONFIG_TOPAZ_PCIE_TARGET is not set
+# CONFIG_TOPAZ_PCIE_HOST is not set
+# CONFIG_TOPAZ_DBDC_HOST is not set
 CONFIG_ARCH_RUBY_SRAM_IRQ_STACK=y
 # CONFIG_KERNEL_TEXT_SNAPSHOTS is not set
-CONFIG_ARCH_RUBY_EMAC_LIB=y
-CONFIG_ARCH_RUBY_EMAC=y
+CONFIG_ARCH_RUBY_EMAC_LIB=m
+CONFIG_ARCH_RUBY_EMAC=m
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING=y
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_BURST_SIZE=48
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_RATE=50000
 # CONFIG_QUANTENNA_RESTRICT_WLAN_IP is not set
-CONFIG_QUANTENNA_RESTRICT_OWN_IP=0x02AF800A
 # CONFIG_SWITCH_RTL8365MB is not set
-# CONFIG_SWITCH_RTL8363SB is not set
+CONFIG_SWITCH_RTL8363SB=m
 
 #
 # Quantenna Topaz
 #
-# CONFIG_QUANTENNA_TOPAZ is not set
-# CONFIG_TOPAZ_PCIE_TARGET is not set
-# CONFIG_TOPAZ_PCIE_HOST is not set
+CONFIG_QUANTENNA_TOPAZ=y
+CONFIG_ARCH_TOPAZ_FWT=m
+CONFIG_ARCH_TOPAZ_TQE=m
+# CONFIG_ARCH_TOPAZ_SWITCH_TEST is not set
+CONFIG_ARCH_TOPAZ_EMAC=m
diff --git a/arch/arc/configs/qhs710_vb_config b/arch/arc/configs/topaz_msmr_config
old mode 100644
new mode 100755
similarity index 97%
copy from arch/arc/configs/qhs710_vb_config
copy to arch/arc/configs/topaz_msmr_config
index ca7c0fc..4924fd6
--- a/arch/arc/configs/qhs710_vb_config
+++ b/arch/arc/configs/topaz_msmr_config
@@ -1,6 +1,5 @@
 #
-# This file is under the control of Perforce and determines the kernel configuration for Ruby / BBIC3.
-# Used with QHS710 Video Bridge and QTM710 Network Processor board types
+# This file is under the control of Perforce and determines the kernel configuration for Topaz / BBIC4.
 #
 # Linux kernel version: 2.6.35.12
 #
@@ -74,8 +73,8 @@
 CONFIG_ANON_INODES=y
 CONFIG_EMBEDDED=y
 CONFIG_SYSCTL_SYSCALL=y
-# CONFIG_KALLSYMS is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_EXTRA_PASS=y
 CONFIG_HOTPLUG=y
 CONFIG_PRINTK=y
 CONFIG_DEFERRED_PRINTK=y
@@ -219,7 +218,7 @@
 # CONFIG_ARC_TLS_REG_EMUL is not set
 CONFIG_ARC_MISALIGNED_ACCESS=y
 # CONFIG_ARCH_ARC_SPACE_RND is not set
-# CONFIG_MMAP_CODE_CMN_VADDR is not set
+CONFIG_MMAP_CODE_CMN_VADDR=y
 CONFIG_HZ=200
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_ARC_STACK_NONEXEC=y
@@ -555,7 +554,7 @@
 CONFIG_NETDEVICES=y
 # CONFIG_IFB is not set
 # CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
+CONFIG_BONDING=m
 # CONFIG_EQUALIZER is not set
 # CONFIG_TUN is not set
 # CONFIG_VETH is not set
@@ -573,7 +572,7 @@
 # CONFIG_SMSC_PHY is not set
 # CONFIG_BROADCOM_PHY is not set
 # CONFIG_ICPLUS_PHY is not set
-# CONFIG_REALTEK_PHY is not set
+CONFIG_REALTEK_PHY=y
 # CONFIG_NATIONAL_PHY is not set
 # CONFIG_STE10XP is not set
 # CONFIG_LSI_ET1011C_PHY is not set
@@ -903,7 +902,7 @@
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_FRAME_WARN=1024
-# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_MAGIC_SYSRQ=y
 # CONFIG_STRIP_ASM_SYMS is not set
 # CONFIG_UNUSED_SYMBOLS is not set
 CONFIG_DEBUG_FS=y
@@ -911,7 +910,7 @@
 # CONFIG_DEBUG_KERNEL is not set
 CONFIG_STACKTRACE=y
 # CONFIG_DEBUG_MEMORY_INIT is not set
-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+CONFIG_RCU_CPU_STALL_DETECTOR=y
 # CONFIG_LKDTM is not set
 # CONFIG_LATENCYTOP is not set
 # CONFIG_SYSCTL_SYSCALL_CHECK is not set
@@ -1046,21 +1045,25 @@
 CONFIG_QVSP=y
 # CONFIG_RUBY_PCIE_TARGET is not set
 # CONFIG_RUBY_PCIE_HOST is not set
+# CONFIG_TOPAZ_PCIE_TARGET is not set
+# CONFIG_TOPAZ_PCIE_HOST is not set
+# CONFIG_TOPAZ_DBDC_HOST is not set
 CONFIG_ARCH_RUBY_SRAM_IRQ_STACK=y
 # CONFIG_KERNEL_TEXT_SNAPSHOTS is not set
-CONFIG_ARCH_RUBY_EMAC_LIB=y
-CONFIG_ARCH_RUBY_EMAC=y
+CONFIG_ARCH_RUBY_EMAC_LIB=m
+CONFIG_ARCH_RUBY_EMAC=m
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING=y
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_BURST_SIZE=48
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_RATE=50000
 # CONFIG_QUANTENNA_RESTRICT_WLAN_IP is not set
-CONFIG_QUANTENNA_RESTRICT_OWN_IP=0x02AF800A
 # CONFIG_SWITCH_RTL8365MB is not set
-# CONFIG_SWITCH_RTL8363SB is not set
+CONFIG_SWITCH_RTL8363SB=m
 
 #
 # Quantenna Topaz
 #
-# CONFIG_QUANTENNA_TOPAZ is not set
-# CONFIG_TOPAZ_PCIE_TARGET is not set
-# CONFIG_TOPAZ_PCIE_HOST is not set
+CONFIG_QUANTENNA_TOPAZ=y
+CONFIG_ARCH_TOPAZ_FWT=m
+CONFIG_ARCH_TOPAZ_TQE=m
+# CONFIG_ARCH_TOPAZ_SWITCH_TEST is not set
+CONFIG_ARCH_TOPAZ_EMAC=m
diff --git a/arch/arc/configs/topaz_pcie_config b/arch/arc/configs/topaz_pcie_config
index 3ccc952..ee42e2e 100644
--- a/arch/arc/configs/topaz_pcie_config
+++ b/arch/arc/configs/topaz_pcie_config
@@ -1046,7 +1046,7 @@
 CONFIG_QVSP=y
 # CONFIG_RUBY_PCIE_TARGET is not set
 # CONFIG_RUBY_PCIE_HOST is not set
-CONFIG_ARCH_RUBY_SRAM_IRQ_STACK=y
+# CONFIG_ARCH_RUBY_SRAM_IRQ_STACK is not set
 # CONFIG_KERNEL_TEXT_SNAPSHOTS is not set
 CONFIG_ARCH_RUBY_EMAC_LIB=m
 CONFIG_ARCH_RUBY_EMAC=m
@@ -1054,7 +1054,6 @@
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_BURST_SIZE=48
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_RATE=50000
 # CONFIG_QUANTENNA_RESTRICT_WLAN_IP is not set
-CONFIG_QUANTENNA_RESTRICT_OWN_IP=0x02AF800A
 # CONFIG_SWITCH_RTL8365MB is not set
 CONFIG_SWITCH_RTL8363SB=m
 
@@ -1068,3 +1067,4 @@
 CONFIG_ARCH_TOPAZ_TQE=m
 CONFIG_ARCH_TOPAZ_EMAC=m
 # CONFIG_ARCH_TOPAZ_SWITCH_TEST is not set
+# CONFIG_TOPAZ_DBDC_HOST is not set
diff --git a/arch/arc/configs/qhs710_vb_config b/arch/arc/configs/topaz_rfic6_config
similarity index 97%
rename from arch/arc/configs/qhs710_vb_config
rename to arch/arc/configs/topaz_rfic6_config
index ca7c0fc..66e9102 100644
--- a/arch/arc/configs/qhs710_vb_config
+++ b/arch/arc/configs/topaz_rfic6_config
@@ -1,6 +1,5 @@
 #
-# This file is under the control of Perforce and determines the kernel configuration for Ruby / BBIC3.
-# Used with QHS710 Video Bridge and QTM710 Network Processor board types
+# This file is under the control of Perforce and determines the kernel configuration for Topaz / BBIC4.
 #
 # Linux kernel version: 2.6.35.12
 #
@@ -74,11 +73,11 @@
 CONFIG_ANON_INODES=y
 CONFIG_EMBEDDED=y
 CONFIG_SYSCTL_SYSCALL=y
-# CONFIG_KALLSYMS is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_EXTRA_PASS=y
 CONFIG_HOTPLUG=y
 CONFIG_PRINTK=y
-CONFIG_DEFERRED_PRINTK=y
+CONFIG_DEFERRED_PRINTK=n
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
 # CONFIG_BASE_FULL is not set
@@ -219,7 +218,7 @@
 # CONFIG_ARC_TLS_REG_EMUL is not set
 CONFIG_ARC_MISALIGNED_ACCESS=y
 # CONFIG_ARCH_ARC_SPACE_RND is not set
-# CONFIG_MMAP_CODE_CMN_VADDR is not set
+CONFIG_MMAP_CODE_CMN_VADDR=y
 CONFIG_HZ=200
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_ARC_STACK_NONEXEC=y
@@ -555,7 +554,7 @@
 CONFIG_NETDEVICES=y
 # CONFIG_IFB is not set
 # CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
+CONFIG_BONDING=m
 # CONFIG_EQUALIZER is not set
 # CONFIG_TUN is not set
 # CONFIG_VETH is not set
@@ -573,7 +572,7 @@
 # CONFIG_SMSC_PHY is not set
 # CONFIG_BROADCOM_PHY is not set
 # CONFIG_ICPLUS_PHY is not set
-# CONFIG_REALTEK_PHY is not set
+CONFIG_REALTEK_PHY=y
 # CONFIG_NATIONAL_PHY is not set
 # CONFIG_STE10XP is not set
 # CONFIG_LSI_ET1011C_PHY is not set
@@ -903,7 +902,7 @@
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_ENABLE_MUST_CHECK is not set
 CONFIG_FRAME_WARN=1024
-# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_MAGIC_SYSRQ=y
 # CONFIG_STRIP_ASM_SYMS is not set
 # CONFIG_UNUSED_SYMBOLS is not set
 CONFIG_DEBUG_FS=y
@@ -911,7 +910,7 @@
 # CONFIG_DEBUG_KERNEL is not set
 CONFIG_STACKTRACE=y
 # CONFIG_DEBUG_MEMORY_INIT is not set
-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+CONFIG_RCU_CPU_STALL_DETECTOR=y
 # CONFIG_LKDTM is not set
 # CONFIG_LATENCYTOP is not set
 # CONFIG_SYSCTL_SYSCALL_CHECK is not set
@@ -1046,21 +1045,25 @@
 CONFIG_QVSP=y
 # CONFIG_RUBY_PCIE_TARGET is not set
 # CONFIG_RUBY_PCIE_HOST is not set
+# CONFIG_TOPAZ_PCIE_TARGET is not set
+# CONFIG_TOPAZ_PCIE_HOST is not set
+# CONFIG_TOPAZ_DBDC_HOST is not set
 CONFIG_ARCH_RUBY_SRAM_IRQ_STACK=y
 # CONFIG_KERNEL_TEXT_SNAPSHOTS is not set
-CONFIG_ARCH_RUBY_EMAC_LIB=y
-CONFIG_ARCH_RUBY_EMAC=y
+CONFIG_ARCH_RUBY_EMAC_LIB=m
+CONFIG_ARCH_RUBY_EMAC=m
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING=y
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_BURST_SIZE=48
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_RATE=50000
 # CONFIG_QUANTENNA_RESTRICT_WLAN_IP is not set
-CONFIG_QUANTENNA_RESTRICT_OWN_IP=0x02AF800A
 # CONFIG_SWITCH_RTL8365MB is not set
-# CONFIG_SWITCH_RTL8363SB is not set
+CONFIG_SWITCH_RTL8363SB=m
 
 #
 # Quantenna Topaz
 #
-# CONFIG_QUANTENNA_TOPAZ is not set
-# CONFIG_TOPAZ_PCIE_TARGET is not set
-# CONFIG_TOPAZ_PCIE_HOST is not set
+CONFIG_QUANTENNA_TOPAZ=y
+CONFIG_ARCH_TOPAZ_FWT=m
+CONFIG_ARCH_TOPAZ_TQE=m
+# CONFIG_ARCH_TOPAZ_SWITCH_TEST is not set
+CONFIG_ARCH_TOPAZ_EMAC=m
diff --git a/arch/arc/configs/topaz_vb_config b/arch/arc/configs/topaz_vb_config
index 998a876..4924fd6 100644
--- a/arch/arc/configs/topaz_vb_config
+++ b/arch/arc/configs/topaz_vb_config
@@ -1047,6 +1047,7 @@
 # CONFIG_RUBY_PCIE_HOST is not set
 # CONFIG_TOPAZ_PCIE_TARGET is not set
 # CONFIG_TOPAZ_PCIE_HOST is not set
+# CONFIG_TOPAZ_DBDC_HOST is not set
 CONFIG_ARCH_RUBY_SRAM_IRQ_STACK=y
 # CONFIG_KERNEL_TEXT_SNAPSHOTS is not set
 CONFIG_ARCH_RUBY_EMAC_LIB=m
@@ -1055,7 +1056,6 @@
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_BURST_SIZE=48
 CONFIG_ARCH_RUBY_EMAC_SMOOTHING_RATE=50000
 # CONFIG_QUANTENNA_RESTRICT_WLAN_IP is not set
-CONFIG_QUANTENNA_RESTRICT_OWN_IP=0x02AF800A
 # CONFIG_SWITCH_RTL8365MB is not set
 CONFIG_SWITCH_RTL8363SB=m
 
diff --git a/arch/arc/configs/topaz_vzn_config b/arch/arc/configs/topaz_vzn_config
new file mode 120000
index 0000000..2d5890a
--- /dev/null
+++ b/arch/arc/configs/topaz_vzn_config
@@ -0,0 +1 @@
+topaz_vb_config
\ No newline at end of file
diff --git a/arch/arc/include/asm/mem.h b/arch/arc/include/asm/mem.h
index d5a1193..1e90471 100755
--- a/arch/arc/include/asm/mem.h
+++ b/arch/arc/include/asm/mem.h
@@ -42,16 +42,12 @@
 #define DMA_NOCACHE_END		(PAGE_OFFSET)
 
 /* PCI remapping */
-#define PCI_REMAP_SIZE		(512*1024*1024)
+#define PCI_REMAP_SIZE		(320*1024*1024)
 #define PCI_REMAP_START		(DMA_NOCACHE_START - PCI_REMAP_SIZE)
 #define PCI_REMAP_END		(DMA_NOCACHE_START)
 
 /* FIXME: this is done to accomodate 64MB DDR systems */
-#if defined (CONFIG_RUBY_PCIE_HOST)
-#define VMALLOC_SIZE		(128*1024*1024)
-#else
-#define VMALLOC_SIZE		(48*1024*1024)
-#endif
+#define VMALLOC_SIZE		(192*1024*1024)
 #define VMALLOC_START	(PCI_REMAP_START - VMALLOC_SIZE)
 #define VMALLOC_END		(PCI_REMAP_START)
 #define VMALLOC_VMADDR(x)	((unsigned long)(x))
diff --git a/arch/arc/kernel/module.c b/arch/arc/kernel/module.c
index f6d392c..61c4e51 100755
--- a/arch/arc/kernel/module.c
+++ b/arch/arc/kernel/module.c
@@ -237,7 +237,6 @@
 {
 	s_memlist.next = NULL;
 
-#ifdef TOPAZ_PLATFORM
 	void *heapbegin = roundmb(&__sram_end);
 #ifdef QTN_RC_ENABLE_HDP
 	void *heapend = truncmb(RUBY_SRAM_BEGIN + CONFIG_ARC_SRAM_END);
@@ -245,30 +244,12 @@
 	void *heapend = truncmb(RUBY_SRAM_BEGIN + CONFIG_ARC_KERNEL_SRAM_B2_END);
 #endif
 
-	printk(KERN_INFO"Topaz heap in SRAM %p<->%p\n",
-		heapbegin, heapend);
+	printk(KERN_INFO"Topaz heap in SRAM %p<->%p, B2 BASE %x\n",
+		heapbegin, heapend, CONFIG_ARC_KERNEL_SRAM_B2_BASE);
 
 	if (heapbegin < heapend) {
 		qtn_new_memblock_init(NULL, heapbegin, heapend);
 	}
-#else
-	void *heapbegin1 = roundmb(RUBY_SRAM_BEGIN + CONFIG_ARC_KERNEL_SRAM_B2_BASE);
-	void *heapend1 = truncmb(RUBY_SRAM_BEGIN + CONFIG_ARC_KERNEL_SRAM_B2_END);
-	void *heapbegin2 = roundmb(&__sram_end);
-	void *heapend2 = truncmb(RUBY_SRAM_BEGIN + CONFIG_ARC_KERNEL_SRAM_B1_END);
-	struct memblock *pmblock = NULL;
-
-	printk(KERN_INFO"Ruby heap in SRAM %p<->%p, %p<->%p\n",
-		heapbegin1, heapend1, heapbegin2, heapend2);
-
-	if (heapbegin1 < heapend1) {
-		pmblock = qtn_new_memblock_init(pmblock, heapbegin1, heapend1);
-	}
-
-	if (heapbegin2 < heapend2) {
-		pmblock = qtn_new_memblock_init(pmblock, heapbegin2, heapend2);
-	}
-#endif
 
 	return 0;
 }
@@ -407,6 +388,8 @@
 	/* Acquire memory from system */
 	if((pmem = (struct memblock *) qtn_memget(nbytes)) == NULL)
 	{
+		printk(KERN_DEBUG"Warning: %s failed to allocate 0x%x bytes from caller %p\n", __func__,
+				nbytes, __builtin_return_address(0));
 		return(NULL);
 	}
 
diff --git a/arch/arc/kernel/time.c b/arch/arc/kernel/time.c
index dd57905..535eb3d 100755
--- a/arch/arc/kernel/time.c
+++ b/arch/arc/kernel/time.c
@@ -36,9 +36,7 @@
 #include <linux/clocksource.h>
 #include <linux/clockchips.h>
 
-#ifdef TOPAZ_PLATFORM
 #include <qtn/topaz_hbm.h>
-#endif
 /* ARC700 has two 32bit independent prog Timers: TIMER0 and TIMER1
  * Each can programmed to go from @count to @limit and optionally
  * interrupt when that happens
@@ -153,9 +151,7 @@
 
     pet_watchdog_timer();
     arc_timer0_ack_event(evt->mode == CLOCK_EVT_MODE_PERIODIC);
-#ifdef TOPAZ_PLATFORM
     topaz_hbm_filter_txdone_pool();
-#endif
     evt->event_handler(evt);
     return IRQ_HANDLED;
 }
diff --git a/arch/arc/kernel/troubleshoot.c b/arch/arc/kernel/troubleshoot.c
index eda8307..d981025 100644
--- a/arch/arc/kernel/troubleshoot.c
+++ b/arch/arc/kernel/troubleshoot.c
@@ -24,6 +24,11 @@
 #include <asm/board/kdump.h>
 #include <asm/board/troubleshoot.h>
 #include <asm/cacheflush.h>
+#include <linux/vmalloc.h>
+#include <linux/zlib.h>
+
+/* 3.4 times seems safe for LHost crash - found by trial and error */
+#define LHOST_CORE_DUMP_COMPRESS_RATIO	(340)
 
 static void show_ecr_verbose(struct pt_regs *regs, unsigned long address, unsigned int cause_reg);
 static void show_task_ecr_verbose(struct pt_regs *regs);
@@ -33,7 +38,7 @@
 #define MAX_GUEST_TROUBLESHOOT	1
 static void (*kdump_guest_troubleshooters[MAX_GUEST_TROUBLESHOOT])(void);
 
-static kdump_guest_troubleshooters_run(void)
+static void kdump_guest_troubleshooters_run(void)
 {
 	int i;
 
@@ -62,7 +67,7 @@
  * we simply loop otherwise gcc generates 13 calls to printk each with it's
  * own arg setup
  */
-void noinline print_reg_file(unsigned long *last_reg, int num)
+void noinline print_reg_file(long *last_reg, int num)
 {
     unsigned int i;
 
@@ -135,6 +140,7 @@
     }
     else printk("@No matching VMA found\n");
 }
+
 void show_stack_fragment(u32 sp)
 {
 	const u32 print_past_sp   = 512;
@@ -344,7 +350,7 @@
 			}
 		}
 	} else if (!is_valid_mem_addr(ret)) {
-		printk("Not a valid memory address to fetch (%08X)\n", ret);
+		printk("Not a valid memory address to fetch (%08lx)\n", ret);
 	} else {
 		/* Single valid address - dump four bytes. Should be safe... */
 		int i;
@@ -357,7 +363,7 @@
 }
 
 
-static void show_ruby_soc_registers()
+static void show_ruby_soc_registers(void)
 {
 	unsigned long base_addr = RUBY_SYS_CTL_BASE_ADDR;
 	/* Registers up to offset 0x8C are contiguous, then from 0x94 to 0xC0 */
@@ -400,38 +406,212 @@
 }
 EXPORT_SYMBOL(arc_set_troubleshoot_start_hook);
 
-void save_printk_sram(void)
+static int32_t compress_circular_buffer(char *p_log, uint32_t log_start, uint32_t log_end, uint32_t log_size, char *buf_out,
+					uint32_t len_buf_out, uint32_t *len_compress_data)
 {
-	char *sp = (char *)s_sram_start;
-	int log_start = 0;
-	int log_end = 0;
-	int log_size = 0;
-	char *p_log = NULL;
+	int32_t retval = -1;
+	int32_t zlib_retval;
+	int32_t workspace_size;
+	z_stream stream;
 
-	if (sf_troubleshoot_start) {
-		sf_troubleshoot_start(sp_troubleshoot_ctx);
+	if (!len_compress_data) {
+		printk(KERN_ERR "%s: len_compress_data is NULL\n", __func__);
+		return -EINVAL;
 	}
 
+	*len_compress_data = 0;
+
+	workspace_size = zlib_deflate_workspacesize();
+	printk(KERN_DEBUG "%s: workspace_size = %d\n", __func__, workspace_size);
+
+	stream.workspace = vmalloc(workspace_size);
+        if (!stream.workspace) {
+		printk(KERN_ERR "%s: Failed to allocate %d bytes for deflate workspace\n", __func__,
+			zlib_deflate_workspacesize());
+		return -ENOMEM;
+	}
+
+	/* Use zlib format because gzip is not available */
+	zlib_retval = zlib_deflateInit(&stream, Z_DEFAULT_COMPRESSION);
+	if (zlib_retval != Z_OK) {
+                printk(KERN_ERR "%s: zlib_deflateInit failed, zlib_retval = %d\n", __func__, zlib_retval);
+		vfree(stream.workspace);
+		return retval;
+	}
+
+	if (log_start <= log_end) {
+		/* Compress the complete data in 1 pass */
+		stream.next_in = (Byte *) p_log + log_start;
+		stream.avail_in = log_end - log_start + 1;
+		stream.total_in = 0;
+
+		stream.next_out = (Byte *) buf_out;
+		stream.avail_out = len_buf_out;
+		stream.total_out = 0;
+
+		zlib_retval = zlib_deflate(&stream, Z_FINISH);
+		if (zlib_retval != Z_STREAM_END) {
+			if (zlib_retval != Z_OK) {
+				printk(KERN_ERR "%s: zlib_deflate failed (only chunk), zlib_retval = %d\n",
+					__func__, zlib_retval);
+				goto deflate_end;
+			}
+
+			printk(KERN_WARNING "%s: zlib_deflate (only chunk): some data would be missing\n",
+				__func__);
+		}
+
+		/*
+		 * If stream.avail_in is not 0, some logs could be missing; we should recheck len_max_input in
+		 * arc_save_to_sram_safe_area()
+		 */
+		if (stream.avail_in != 0)
+			printk(KERN_WARNING "%s: stream.avail_in (%u) is not 0\n", __func__, stream.avail_in);
+	} else {
+		/* Compress the complete data in 2 passes */
+
+		/* Compress the first chunk; from log_start to the end of the buffer */
+		stream.next_in = (Byte *) p_log + log_start;
+		stream.avail_in = log_size - log_start;
+		stream.total_in = 0;
+
+		stream.next_out = (Byte *) buf_out;
+		stream.avail_out = len_buf_out;
+		stream.total_out = 0;
+
+		zlib_retval = zlib_deflate(&stream, Z_SYNC_FLUSH);
+		if (zlib_retval != Z_OK) {
+			printk(KERN_ERR "%s: zlib_deflate failed (first chunk), zlib_retval = %d\n", __func__,
+				zlib_retval);
+			goto deflate_end;
+		}
+
+		/*
+		 * If stream.avail_in is not 0, some logs could be missing; we should recheck len_max_input in
+		 * arc_save_to_sram_safe_area()
+		 */
+		if (stream.avail_in != 0)
+			printk(KERN_WARNING "%s: stream.avail_in (%u) is not 0\n", __func__, stream.avail_in);
+
+		/* Compress the second chunk; from the start of the buffer to log_end */
+		stream.next_in = (Byte *) p_log;
+		stream.avail_in = log_end;
+		stream.total_in = 0;
+
+		/*
+		 * No need to change next_out, avail_out and total_out as zlib_deflate() above has set them
+		 * to appropriate values
+		 */
+
+		zlib_retval = zlib_deflate(&stream, Z_FINISH);
+		if (zlib_retval != Z_STREAM_END) {
+			if (zlib_retval != Z_OK) {
+				printk(KERN_ERR "%s: zlib_deflate failed (second chunk), zlib_retval = %d\n",
+					__func__, zlib_retval);
+				goto deflate_end;
+			}
+
+			printk(KERN_WARNING "%s: zlib_deflate (second chunk): some data would be missing\n",
+				__func__);
+		}
+
+		/*
+		 * If stream.avail_in is not 0, some logs could be missing; we should recheck len_max_input in
+		 * arc_save_to_sram_safe_area()
+		 */
+		if (stream.avail_in != 0)
+			printk(KERN_WARNING "%s: stream.avail_in (%u) is not 0\n", __func__, stream.avail_in);
+	}
+
+	*len_compress_data = stream.total_out;
+	printk(KERN_DEBUG "%s: compressed data length = %u\n", __func__, *len_compress_data);
+
+	retval = 0;
+
+deflate_end:
+	zlib_retval = zlib_deflateEnd(&stream);
+	if (zlib_retval != Z_OK) {
+		printk(KERN_WARNING "%s: zlib_deflateEnd failed, zlib_retval = %d\n", __func__, zlib_retval);
+	}
+
+	vfree(stream.workspace);
+
+	return retval;
+}
+
+/* Save the printk circular buffer to the SRAM safe area */
+void arc_save_to_sram_safe_area(int compress_ratio)
+{
+	uint32_t log_start = 0;
+	uint32_t log_end = 0;
+	uint32_t log_size = 0;
+	char *p_log = NULL;
+	uint32_t len_max_input;
+	uint32_t extra_margin;
+	uint32_t len_compress_data;
+
+	if (sf_troubleshoot_start)
+		sf_troubleshoot_start(sp_troubleshoot_ctx);
+
 	get_log_buf(&log_end, &log_size, &p_log);
 
-	if (!log_size)
+	/* Ensure that there is something in the printk circular buffer */
+	if (!log_size) {
+		printk("%s: log_size is 0\n", __func__);
 		return;
-
-	if (log_end >= log_size)
-		log_start = log_end - log_size;
-
-	if ((log_end - log_start) >= s_sram_safe_size)
-		log_start = log_end - s_sram_safe_size;
-
-	while (log_start != log_end) {
-		*sp++ = *(p_log + (log_start++ & (log_size - 1)));
 	}
 
-	/* Magic number goes almost at the end of the buffer */
-	sp = (char *)s_sram_start + (s_sram_safe_size - 1);
-	*sp = QTN_SAFE_SRAM_MAGIC;
+	if (!log_end) {
+		printk("%s: log_end is 0\n", __func__);
+		return;
+	}
+
+	/* Expecting s_sram_start to be 2 byte aligned */
+	if ((s_sram_start & 0x1) != 0) {
+		printk("%s: s_sram_start (%lu) is not 2 bytes aligned\n", __func__, s_sram_start);
+		return;
+	}
+
+	/* Find the max input length that could be fed into the compression algo */
+	len_max_input = (compress_ratio * s_sram_safe_size) / 100;
+	if (len_max_input > log_size)
+		len_max_input = log_size;
+
+	/* log_end points one ahead of the last valid character i.e. where the next character would be written */
+	if (log_end > len_max_input) {
+		log_start = log_end - len_max_input;
+	}
+
+	/* Refer to include/linux/zlib.h */
+	extra_margin = (log_end - log_start) - (((log_end - log_start) * 1000) / 1001) + 12;
+
+	log_start += extra_margin;
+
+	/*
+	 * log_start and log_end are always incremented; we need to find offsets into the printk
+	 * circular buffer corresponding to them
+	 */
+	log_start = log_start & (log_size - 1);
+	log_end = (log_end - 1) & (log_size - 1);
+
+	/*
+	 * Compress the printk circular buffer and store it in SRAM safe aread (so as to retrieve it on the
+	 * next reboot)
+	 *
+	 * Format of buffer:
+	 *	2 bytes: Header (HEADER_CORE_DUMP)
+	 *	2 bytes: Length of the compressed logs (n)
+	 *	n bytes: Compressed logs
+	 */
+	compress_circular_buffer(p_log, log_start, log_end, log_size, (char *) (s_sram_start + 4),
+					s_sram_safe_size - 4, &len_compress_data);
+
+	*((uint16_t *) s_sram_start) = HEADER_CORE_DUMP;
+	*((uint16_t *) (s_sram_start + 2)) = (uint16_t) len_compress_data;
+
 	flush_dcache_all();
 }
+EXPORT_SYMBOL(arc_save_to_sram_safe_area);
 
 void show_kernel_fault_diag(const char *str, struct pt_regs *regs,
 	unsigned long address, unsigned long cause_reg)
@@ -469,7 +649,8 @@
 	sort_snaps(1);
 
 	kdump_guest_troubleshooters_run();
-	save_printk_sram();
+
+	arc_save_to_sram_safe_area(LHOST_CORE_DUMP_COMPRESS_RATIO);
 }
 
 
diff --git a/arch/arc/kernel/vmlinux.lds.S b/arch/arc/kernel/vmlinux.lds.S
index 8f35ff6..2e57166 100755
--- a/arch/arc/kernel/vmlinux.lds.S
+++ b/arch/arc/kernel/vmlinux.lds.S
@@ -75,8 +75,6 @@
         __sram_start = .;
         __sram_datatext_start = .;
 
-        . = ALIGN(THREAD_SIZE);
-        *(.ksoftirqd.stack)
 #ifdef CONFIG_ARCH_RUBY_SRAM_IRQ_STACK
         __irq_stack_begin = .;
         . = . + THREAD_SIZE + TOPAZ_CACHE_WAR_OFFSET;
@@ -105,6 +103,10 @@
 
         __sram_bss_start = .;
         *(.sram.bss)
+#ifdef CONFIG_TOPAZ_PCIE_TARGET
+	. = ALIGN(THREAD_SIZE);
+	*(.ksoftirqd.stack)
+#endif
         __sram_bss_end = .;
 
         __sram_end = .;
@@ -141,8 +143,12 @@
 
     _edata = .;
 
-    BSS_SECTION(0, 0, 0)
 
+    BSS_SECTION(0, 0, 0)
+#ifndef CONFIG_TOPAZ_PCIE_TARGET
+    . = ALIGN(THREAD_SIZE);
+    .ksoftirqd.stack : { *(.ksoftirqd.stack) }
+#endif
     . = ALIGN(PAGE_SIZE);
     __start_unwind = .;
     .debug_frame  : { *(.debug_frame) }
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index 64be466..acd38c8 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -949,6 +949,9 @@
 				phydev->adjust_link(phydev->attached_dev);
 			}
 			break;
+		case PHY_QTNPM:
+			needs_aneg = 1;
+			break;
 	}
 
 	mutex_unlock(&phydev->lock);
diff --git a/drivers/ruby/Kconfig b/drivers/ruby/Kconfig
index dfe0b55..345a095 100644
--- a/drivers/ruby/Kconfig
+++ b/drivers/ruby/Kconfig
@@ -41,6 +41,10 @@
 	bool "Include generic PCIe driver"
 	default y
 
+config TOPAZ_DBDC_HOST
+	bool "include topaz DBDC host interface for TOPAZ RC Host"
+	help
+	  A build for a board with a topaz RC Host support for DBDC must select this option
 
 config ARCH_RUBY_SRAM_IRQ_STACK
 	bool "Use dedicated SRAM stack for interrupts" if (!ARCH_ARC_LV2_INTR && ARCH_ARC_CURR_IN_REG && !PREEMPT)
@@ -102,11 +106,6 @@
 	Restrict the incoming IP traffic on the WLAN interface to prevent access to the
 	bridge interface on RGMII boards.
 
-config QUANTENNA_RESTRICT_OWN_IP
-	hex "The IP address to restrict access to"
-	default 0x02AF800A
-	depends on QUANTENNA_RESTRICT_WLAN_IP
-
 config SWITCH_RTL8365MB
 	tristate "Realtek RTL8365MB switch"
 	default n
diff --git a/drivers/ruby/arasan_emac_ahb.c b/drivers/ruby/arasan_emac_ahb.c
index 54e1445..fc00fec 100644
--- a/drivers/ruby/arasan_emac_ahb.c
+++ b/drivers/ruby/arasan_emac_ahb.c
@@ -149,7 +149,7 @@
 	}
 	if (!skb) {
 		size_t size;
-#if defined(TOPAZ_PLATFORM) && TOPAZ_HBM_SKB_ALLOCATOR_DEFAULT
+#if TOPAZ_HBM_SKB_ALLOCATOR_DEFAULT
 		size = TOPAZ_HBM_BUF_EMAC_RX_SIZE / 2;
 #else
 		size = qtn_rx_buf_size();
@@ -1036,7 +1036,7 @@
 
 	emac_lib_phy_start(dev);
 	netif_start_queue(dev);
-	emac_lib_pm_add_notifier(dev);
+	emac_lib_pm_emac_add_notifier(dev);
 
 	return 0;
 
@@ -1049,7 +1049,7 @@
 {
 	struct emac_private *arap = netdev_priv(dev);
 
-	emac_lib_pm_remove_notifier(dev);
+	emac_lib_pm_emac_remove_notifier(dev);
 
 	napi_disable(&arap->napi);
 
diff --git a/drivers/ruby/board_config.c b/drivers/ruby/board_config.c
index e551a73..08841a3 100644
--- a/drivers/ruby/board_config.c
+++ b/drivers/ruby/board_config.c
@@ -30,6 +30,7 @@
 static int			global_spi_protect_mode = 0;
 static int			g_slow_ethernet = 0;
 static const board_cfg_t	g_board_cfg_table[] = QTN_BOARD_DB;
+static ruby_bda_t bda_copy;
 
 #define MEM_SIZE_128MB (128 * 1024 * 1024)
 
@@ -74,17 +75,18 @@
 void __init
 qtn_set_spi_protect_config(u32 mode)
 {
-        global_spi_protect_mode = mode;
+	global_spi_protect_mode = mode;
 }
 
 int qtn_get_spi_protect_config(void)
 {
-        return global_spi_protect_mode;
+	return global_spi_protect_mode;
 }
 EXPORT_SYMBOL(qtn_get_spi_protect_config);
 
-static ruby_bda_t *get_bda(void) {
-	return (ruby_bda_t *)(CONFIG_ARC_CONF_BASE);
+static const ruby_bda_t *get_bda(void)
+{
+	return &bda_copy;
 }
 
 static int
@@ -132,9 +134,9 @@
 
 	  case BOARD_CFG_FLASH_SIZE:
 		{
-			ruby_bda_t *bda = get_bda();
-			if (global_board_id == QTN_RUBY_AUTOCONFIG_ID || global_board_id == QTN_RUBY_UNIVERSAL_BOARD_ID) {
-				*p_board_config_value = bda->bda_flashsz;
+			if (global_board_id == QTN_RUBY_AUTOCONFIG_ID ||
+					global_board_id == QTN_RUBY_UNIVERSAL_BOARD_ID) {
+				*p_board_config_value = get_bda()->bda_flashsz;
 			} else {
 				*p_board_config_value = 0;
 			}
@@ -160,14 +162,10 @@
 		return( -1 );
 	}
 
-	if (global_board_id == QTN_RUBY_AUTOCONFIG_ID || global_board_id == QTN_RUBY_UNIVERSAL_BOARD_ID) {
-		ruby_bda_t *bda = get_bda();
-
-		/* need to fixup address VA on LHOST as it may be different to one on uboot */
-		bda->bda_boardcfg.bc_name = bda->bda_boardname;
-
-		return lookup_config(&bda->bda_boardcfg,
-			board_config_param, p_board_config_value );
+	if (global_board_id == QTN_RUBY_AUTOCONFIG_ID ||
+			global_board_id == QTN_RUBY_UNIVERSAL_BOARD_ID) {
+		return lookup_config(&get_bda()->bda_boardcfg, board_config_param,
+					p_board_config_value);
 	}
 	//printk("get_board_config:board ID %d param %d\n",global_board_id,board_config_param);
 	for (iter = 0; iter < sizeof( g_board_cfg_table ) / sizeof( g_board_cfg_table[ 0 ] ) && (found_entry == 0); iter++) {
@@ -219,41 +217,51 @@
 EXPORT_SYMBOL(board_napi_budget);
 
 int
-get_all_board_params( char *p )
+get_all_board_params(char *p)
 {
 	int iter;
-	char *temp=p;
-	board_cfg_t *board = NULL;
+	int ch_printed;
+	const board_cfg_t *board = NULL;
 
-	if (global_board_id == QTN_RUBY_AUTOCONFIG_ID || global_board_id == QTN_RUBY_UNIVERSAL_BOARD_ID) {
-		ruby_bda_t *bda = (ruby_bda_t *)(CONFIG_ARC_CONF_BASE);
-		board = &bda->bda_boardcfg;
+	if (global_board_id == QTN_RUBY_AUTOCONFIG_ID ||
+			global_board_id == QTN_RUBY_UNIVERSAL_BOARD_ID) {
+		board = &get_bda()->bda_boardcfg;
 	} else {
-		for (iter = 0; iter < sizeof( g_board_cfg_table ) / sizeof( g_board_cfg_table[ 0 ] ); iter++) {
-			if (global_board_id == g_board_cfg_table[ iter ].bc_board_id) {
-				board = (board_cfg_t *)&g_board_cfg_table[ iter ];
+		for (iter = 0; iter < ARRAY_SIZE(g_board_cfg_table); iter++) {
+			if (global_board_id == g_board_cfg_table[iter].bc_board_id) {
+				board = &g_board_cfg_table[iter];
 				break;
 			}
 		}
 	}
 
-	if (board) {
-		temp += sprintf( temp, "board_id\t%d\n", board->bc_board_id);
-			temp += sprintf( temp, "name\t%s\n", board->bc_name);
-			temp += sprintf( temp, "ddr_type\t%d\n", board->bc_ddr_type);
-			temp += sprintf( temp, "ddr_speed\t%d\n", board->bc_ddr_speed);
-			temp += sprintf( temp, "ddr_size\t%d\n", board->bc_ddr_size);
-			temp += sprintf( temp, "emac0\t%d\n", board->bc_emac0);
-			temp += sprintf( temp, "emac1\t%d\n", board->bc_emac1);
-			temp += sprintf( temp, "phy0_addr\t%d\n", board->bc_phy0_addr);
-			temp += sprintf( temp, "phy1_addr\t%d\n", board->bc_phy1_addr);
-			temp += sprintf( temp, "spi1\t%d\n", board->bc_spi1);
-			temp += sprintf( temp, "wifi_hw\t%d\n", board->bc_wifi_hw);
-			temp += sprintf( temp, "uart1\t%d\n", board->bc_uart1);
-			temp += sprintf( temp, "bd_pcie\t%d\n", board->bc_pcie);
-			temp += sprintf( temp, "rgmii_timing\t%d\n", board->bc_rgmii_timing);
-		}
-	return (temp-p);
+	if (!board)
+		return 0;
+
+	ch_printed = snprintf(p, PAGE_SIZE,
+				"board_id\t%d\n"
+				"name\t%s\n"
+				"ddr_type\t%d\n"
+				"ddr_speed\t%d\n"
+				"ddr_size\t%d\n"
+				"emac0\t%d\n"
+				"emac1\t%d\n"
+				"phy0_addr\t%d\n"
+				"phy1_addr\t%d\n"
+				"spi1\t%d\n"
+				"wifi_hw\t%d\n"
+				"uart1\t%d\n"
+				"bd_pcie\t%d\n"
+				"rgmii_timing\t%d\n",
+				board->bc_board_id, board->bc_name,
+				board->bc_ddr_type, board->bc_ddr_speed, board->bc_ddr_size,
+				board->bc_emac0, board->bc_emac1, board->bc_phy0_addr,
+				board->bc_phy1_addr, board->bc_spi1, board->bc_wifi_hw,
+				board->bc_uart1, board->bc_pcie, board->bc_rgmii_timing);
+	if (ch_printed < 0)
+		ch_printed = 0;
+
+	return ch_printed;
 }
 EXPORT_SYMBOL(get_all_board_params);
 
@@ -281,4 +289,12 @@
 
 	/* update DDR size */
 	update_ddr_size();
+
+	/*
+	 * Copy bda structure so that it doesn't get overwritten by an A-MSDU with
+	 * a size greater than CONFIG_ARC_CONF_SIZE
+	 */
+	memcpy(&bda_copy, (void *)CONFIG_ARC_CONF_BASE, sizeof(bda_copy));
+	bda_copy.bda_boardcfg.bc_name = bda_copy.bda_boardname;
 }
+
diff --git a/drivers/ruby/emac_lib.c b/drivers/ruby/emac_lib.c
index 872c271..d74559a 100644
--- a/drivers/ruby/emac_lib.c
+++ b/drivers/ruby/emac_lib.c
@@ -54,16 +54,13 @@
 #define PHY_PW_PROC_FILE_NAME	"phy_pw"
 #define PHY_PW_CMD_MAX_LEN	20
 
-static inline bool emac_lib_rtl_switch(uint32_t cfg)
-{
-	return cfg & (EMAC_PHY_RTL8363SB_P0 | EMAC_PHY_RTL8363SB_P1 | EMAC_PHY_RTL8365MB);
-}
-
 static int mdio_use_noops = 0;
 module_param(mdio_use_noops, int, 0);
 int mdc_clk_divisor = 1;
 module_param(mdc_clk_divisor, int, 0644);
 
+static uint32_t emac_lib_dual_emac;
+
 static ssize_t show_mdio_use_noops(struct device *dev, struct device_attribute *attr, char *buf)
 {
 	return snprintf(buf, PAGE_SIZE, "%d\n", mdio_use_noops);
@@ -186,7 +183,8 @@
 		ret = 0;
 	} else if(time_after_eq(jiffies + msecs_to_jiffies(ms_warn), deadline)) {
 		if (func) {
-			printk(KERN_WARNING "%s %s: warn: system is overloaded : spend more ~%lums!\n",
+			if (printk_ratelimit())
+				printk(KERN_WARNING "%s %s: warn: system is overloaded : spend more ~%lums!\n",
 					privc->dev->name, func, ms_warn);
 		}
 	}
@@ -269,36 +267,6 @@
 			printk(KERN_WARNING "%s: Speed (%d) is not supported\n", dev->name, speed);
 			break;
 	}
-
-#ifndef TOPAZ_PLATFORM
-	/*
-	 * These flags impact on peak EMAC performance on Topaz boards,
-	 * however these are required for ZPER on Ruby
-	 */
-
-	val = emac_rd(privc, EMAC_MAC_TX_CTRL);
-	if (duplex == DUPLEX_FULL) {
-		val &= ~MacTxAutoRetry;
-	} else {
-		val |= MacTxAutoRetry;
-	}
-	emac_wr(privc, EMAC_MAC_TX_CTRL, val);
-
-	val = emac_rd(privc, EMAC_DMA_CONFIG);
-	if (speed == SPEED_1000) {
-		/*
-		 * Without this settings we see dropped frames in case of bidir traffic.
-		 * Settings this bit cause EMAC performance degradation, but in case of 1G phy
-		 * we cannot reach maximum level even after degradation.
-		 */
-		emac_wr(privc, EMAC_DMA_CONFIG, val | DmaWait4Done);
-	} else {
-		/*
-		 * Reset bit, otherwise maximum rate is degraded.
-		 */
-		emac_wr(privc, EMAC_DMA_CONFIG, val & ~DmaWait4Done);
-	}
-#endif
 }
 
 static void emac_lib_adjust_link(struct net_device *dev)
@@ -972,37 +940,6 @@
 }
 EXPORT_SYMBOL(emac_lib_set_rx_mode);
 
-static void emac_update_phydev_state_queue(struct net_device *dev, int to_enable)
-{
-	int i, j;
-	struct emac_common * privc = netdev_priv(dev);
-
-	if (!privc)
-		return;
-
-	for (i = 0; i < PHY_MAX_ADDR; i++) {
-		struct phy_device *pdev = privc->mii_bus->phy_map[i];
-		int in_use = 0;
-
-		if (!pdev)
-			continue;
-
-		for (j = 0; j < ARRAY_SIZE(phydev_addr_inuse); j++) {
-			if (phydev_addr_inuse[j] == pdev->addr) {
-				in_use = 1;
-				break;
-			}
-		}
-
-		if (in_use) {
-			if (!to_enable)
-				cancel_delayed_work_sync(&pdev->state_queue);
-			else
-				schedule_delayed_work(&pdev->state_queue, HZ);
-		}
-	}
-}
-
 static void emac_pm_enter_to_halt(struct phy_device *phy_dev)
 {
 	if (phy_dev && phy_dev->state != PHY_HALTED) {
@@ -1023,6 +960,17 @@
 	mdelay(50);
 }
 
+static unsigned long emac_pm_power_save_level = PM_QOS_DEFAULT_VALUE;
+static int emac_pm_adjust_level(const int pm_emac_level, struct phy_device *phy_dev)
+{
+	if (pm_emac_level != BOARD_PM_LEVEL_NO &&
+			(phy_dev->state == PHY_HALTED || emac_lib_dual_emac)) {
+		return pm_emac_level;
+	}
+
+	return emac_pm_power_save_level;
+}
+
 static void emac_pm_level(struct emac_common *arapc, int level)
 {
 	struct phy_device *phy_dev = arapc->phy_dev;
@@ -1033,7 +981,7 @@
 		return;
 	}
 
-	emac_update_phydev_state_queue(arapc->dev, 0);
+	level = emac_pm_adjust_level(level, phy_dev);
 
 	if (level >= BOARD_PM_LEVEL_SUSPEND) {
 		if (phy_dev->state != PHY_HALTED) {
@@ -1042,7 +990,6 @@
 			printk(KERN_INFO "%s: emac halted\n", DRV_NAME);
 		}
 	} else if (level >= BOARD_PM_LEVEL_IDLE) {
-
 		emac_pm_return_from_halt(phy_dev);
 
 		if (!arapc->pm_adv_mode) {
@@ -1053,21 +1000,20 @@
 			const uint32_t adv_1G_F = SUPPORTED_1000baseT_Full;
 			const uint32_t adv_1G_H = SUPPORTED_1000baseT_Half;
 			uint32_t clear_adv = 0;
-			uint32_t restore_adv = 0;
 
 			if (phy_dev->advertising & (adv_10M_F | adv_10M_H)) {
 				clear_adv = adv_10M_H | adv_100M_F | adv_100M_H | adv_1G_F | adv_1G_H;
-				restore_adv = adv_100M_F | adv_1G_F;
 			} else if (phy_dev->advertising & (adv_100M_F | adv_100M_H)) {
 				clear_adv = (adv_1G_H | adv_1G_F);
-				restore_adv = adv_1G_F;
 			}
 
 			if (clear_adv) {
-				arapc->pm_adv_mode = phy_dev->advertising & restore_adv;
+				arapc->pm_adv_mode = 1;
+				mutex_lock(&phy_dev->lock);
 				phy_dev->advertising &= ~clear_adv;
-				phy_start_aneg(phy_dev);
-
+				phy_dev->state = PHY_QTNPM;
+				phy_dev->link = 0;
+				mutex_unlock(&phy_dev->lock);
 			}
 
 			printk(KERN_INFO "%s: emac slowed down\n", DRV_NAME);
@@ -1076,17 +1022,21 @@
 		emac_pm_return_from_halt(phy_dev);
 
 		if (arapc->pm_adv_mode) {
-			phy_dev->advertising |= arapc->pm_adv_mode;
 			arapc->pm_adv_mode = 0;
-			phy_start_aneg(phy_dev);
+			mutex_lock(&phy_dev->lock);
+			phy_dev->advertising = SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full | \
+				SUPPORTED_100baseT_Half | SUPPORTED_10baseT_Full | \
+				SUPPORTED_1000baseT_Half | SUPPORTED_1000baseT_Full;
+			phy_dev->state = PHY_QTNPM;
+			phy_dev->link = 0;
+			mutex_unlock(&phy_dev->lock);
 
 			printk(KERN_INFO "%s: emac resumed from slow down\n", DRV_NAME);
 		}
 	}
-	emac_update_phydev_state_queue(arapc->dev, 1);
 }
 
-static int emac_pm_notify(struct notifier_block *b, unsigned long level, void *v)
+static int emac_lib_pm_emac_notify(struct notifier_block *b, unsigned long level, void *v)
 {
 	struct emac_common *arapc = container_of(b, struct emac_common, pm_notifier);
 
@@ -1095,22 +1045,53 @@
 	return NOTIFY_OK;
 }
 
-void emac_lib_pm_add_notifier(struct net_device *dev)
+void emac_lib_pm_emac_add_notifier(struct net_device *dev)
 {
 	struct emac_common *arapc = netdev_priv(dev);
 
-	arapc->pm_notifier.notifier_call = emac_pm_notify;
-	pm_qos_add_notifier(PM_QOS_POWER_SAVE, &arapc->pm_notifier);
+	arapc->pm_notifier.notifier_call = emac_lib_pm_emac_notify;
+	pm_qos_add_notifier(PM_QOS_POWER_EMAC, &arapc->pm_notifier);
 }
-EXPORT_SYMBOL(emac_lib_pm_add_notifier);
+EXPORT_SYMBOL(emac_lib_pm_emac_add_notifier);
 
-void emac_lib_pm_remove_notifier(struct net_device *dev)
+void emac_lib_pm_emac_remove_notifier(struct net_device *dev)
 {
 	struct emac_common *arapc = netdev_priv(dev);
 
-	pm_qos_remove_notifier(PM_QOS_POWER_SAVE, &arapc->pm_notifier);
+	pm_qos_remove_notifier(PM_QOS_POWER_EMAC, &arapc->pm_notifier);
 }
-EXPORT_SYMBOL(emac_lib_pm_remove_notifier);
+EXPORT_SYMBOL(emac_lib_pm_emac_remove_notifier);
+
+static int emac_pm_save_notify(struct notifier_block *b, unsigned long level, void *v)
+{
+	emac_pm_power_save_level = level;
+	pm_qos_refresh_notifiers(PM_QOS_POWER_EMAC);
+
+	return NOTIFY_OK;
+}
+
+static struct notifier_block pm_save_notifier = {
+	.notifier_call = emac_pm_save_notify,
+};
+
+void emac_lib_pm_save_add_notifier(void)
+{
+	pm_qos_add_notifier(PM_QOS_POWER_SAVE, &pm_save_notifier);
+}
+EXPORT_SYMBOL(emac_lib_pm_save_add_notifier);
+
+void emac_lib_pm_save_remove_notifier(void)
+{
+	pm_qos_remove_notifier(PM_QOS_POWER_SAVE, &pm_save_notifier);
+}
+EXPORT_SYMBOL(emac_lib_pm_save_remove_notifier);
+
+void emac_lib_update_link_vars(const uint32_t dual_link)
+{
+	emac_lib_dual_emac = dual_link;
+	pm_qos_refresh_notifiers(PM_QOS_POWER_EMAC);
+}
+EXPORT_SYMBOL(emac_lib_update_link_vars);
 
 static struct phy_device *phy_power_get_phy(struct net_device *dev)
 {
@@ -1659,7 +1640,6 @@
 	EMACR(EMAC_MAC_RX_START_THRESHOLD),
 	EMACR(EMAC_MAC_INT),
 	EMACR(EMAC_MAC_INT_ENABLE),
-#ifdef TOPAZ_PLATFORM
 	EMACR(TOPAZ_EMAC_WRAP_CTRL),
 	EMACR(TOPAZ_EMAC_RXP_CTRL),
 	EMACR(TOPAZ_EMAC_TXP_CTRL),
@@ -1693,7 +1673,6 @@
 	EMACRR(TOPAZ_EMAC_RX_DPI_FIELD_GROUP(0), TOPAZ_EMAC_NUM_DPI_FILTERS),
 	EMACRR(TOPAZ_EMAC_RX_DPI_OUT_CTRL(0), TOPAZ_EMAC_NUM_DPI_FILTERS),
 	EMACRR(TOPAZ_EMAC_RX_DPI_IPT_GROUP(0), TOPAZ_EMAC_NUM_DPI_FILTERS),
-#endif
 };
 
 void emac_lib_reg_debug(u32 base) {
diff --git a/drivers/ruby/emac_lib.h b/drivers/ruby/emac_lib.h
index 9c1b5df..efa0234 100644
--- a/drivers/ruby/emac_lib.h
+++ b/drivers/ruby/emac_lib.h
@@ -95,6 +95,11 @@
 	readl(RUBY_SYS_CTL_BASE_ADDR);
 }
 
+static inline bool emac_lib_rtl_switch(uint32_t cfg)
+{
+	return cfg & (EMAC_PHY_RTL8363SB_P0 | EMAC_PHY_RTL8363SB_P1 | EMAC_PHY_RTL8365MB);
+}
+
 /*
  * Utility functions for reading/writing registers in the MDIO
  */
@@ -157,13 +162,16 @@
 int emac_lib_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
 struct net_device_stats *emac_lib_stats(struct net_device *dev);
 int emac_lib_stats_sprintf(char *buf, struct net_device *dev);
-void emac_lib_pm_add_notifier(struct net_device *dev);
-void emac_lib_pm_remove_notifier(struct net_device *dev);
+void emac_lib_pm_save_add_notifier(void);
+void emac_lib_pm_save_remove_notifier(void);
 int emac_lib_phy_power_create_proc(struct net_device *dev);
 void emac_lib_phy_power_remove_proc(struct net_device *dev);
 int emac_lib_phy_reg_create_proc(struct net_device *dev);
 void emac_lib_phy_reg_remove_proc(struct net_device *dev);
 
+void emac_lib_update_link_vars(const uint32_t dual_link);
+void emac_lib_pm_emac_add_notifier(struct net_device *dev);
+void emac_lib_pm_emac_remove_notifier(struct net_device *dev);
 
 #if EMAC_REG_DEBUG
 void emac_lib_reg_debug(u32 base);
diff --git a/drivers/ruby/gpio.c b/drivers/ruby/gpio.c
index 615f148..e195c06 100644
--- a/drivers/ruby/gpio.c
+++ b/drivers/ruby/gpio.c
@@ -165,43 +165,73 @@
 
 void gpio_wowlan_output(uint32_t pin, uint32_t value)
 {
+#ifndef TOPAZ_AMBER_IP
 	struct arc_gpio_controller *__iomem g =
 			(struct arc_gpio_controller *) RUBY_GPIO_REGS_ADDR;
 	gpio_output(g, pin, value);
-
+#else
+	/*
+	 * In Amber WOWLAN is handled by WIFI2SOC interrupt.
+	 */
+#endif
 }
 EXPORT_SYMBOL(gpio_wowlan_output);
 
 void gpio_uart0_config(void)
 {
+#ifndef TOPAZ_AMBER_IP
 	gpio_config(RUBY_GPIO_UART0_SO, RUBY_GPIO_ALT_OUTPUT);
 	gpio_config(RUBY_GPIO_UART0_SI, RUBY_GPIO_ALT_INPUT);
+#else
+	/*
+	 * In Amber GPIO pins are not shared. No need to set up alternate function.
+	 */
+#endif
 }
 
 void gpio_uart1_config(void)
 {
+#ifndef TOPAZ_AMBER_IP
 	gpio_config(RUBY_GPIO_UART1_SO, RUBY_GPIO_ALT_OUTPUT);
 	gpio_config(RUBY_GPIO_UART1_SI, RUBY_GPIO_ALT_INPUT);
+#else
+	/*
+	 * In Amber GPIO pins are not shared. No need to set up alternate function.
+	 */
+#endif
 }
 
 void gpio_spi_flash_config(void)
 {
+#ifndef TOPAZ_AMBER_IP
 	gpio_config(RUBY_GPIO_SPI_MISO, RUBY_GPIO_ALT_OUTPUT);
 	gpio_config(RUBY_GPIO_SPI_MOSI, RUBY_GPIO_ALT_INPUT);
 	gpio_config(RUBY_GPIO_SPI_SCK, RUBY_GPIO_ALT_OUTPUT);
 	gpio_config(RUBY_GPIO_SPI_nCS, RUBY_GPIO_ALT_OUTPUT);
+#else
+	/*
+	 * In Amber GPIO pins are not shared. No need to set up alternate function.
+	 */
+#endif
 }
 EXPORT_SYMBOL(gpio_spi_flash_config);
 
 void gpio_lna_toggle_config(void)
 {
+#ifndef TOPAZ_AMBER_IP
 	gpio_config(RUBY_GPIO_LNA_TOGGLE, RUBY_GPIO_ALT_OUTPUT);
+#else
+	/*
+	 * In Amber GPIO pins are not shared. No need to set up alternate function.
+	 */
+#endif
 }
 EXPORT_SYMBOL(gpio_lna_toggle_config);
 
 inline static uint32_t _gpio_pin_pwm_reg(uint32_t pin)
 {
 	switch(pin) {
+#ifndef TOPAZ_AMBER_IP
 		case RUBY_GPIO_PIN1:
 			return RUBY_GPIO1_PWM0;
 		case RUBY_GPIO_PIN3:
@@ -216,6 +246,22 @@
 			return RUBY_GPIO15_PWM5;
 		case RUBY_GPIO_PIN16:
 			return RUBY_GPIO16_PWM6;
+#else
+		case RUBY_GPIO_PIN11:
+			return AMBER_GPIO11_PWM0;
+		case RUBY_GPIO_PIN12:
+			return AMBER_GPIO12_PWM1;
+		case RUBY_GPIO_PIN13:
+			return AMBER_GPIO13_PWM2;
+		case RUBY_GPIO_PIN14:
+			return AMBER_GPIO14_PWM3;
+		case RUBY_GPIO_PIN15:
+			return AMBER_GPIO15_PWM4;
+		case RUBY_GPIO_PIN16:
+			return AMBER_GPIO16_PWM5;
+		case RUBY_GPIO_PIN17:
+			return AMBER_GPIO17_PWM6;
+#endif
 	}
 	return 0;
 }
diff --git a/drivers/ruby/irq.c b/drivers/ruby/irq.c
index d5d1b0f..36091df 100644
--- a/drivers/ruby/irq.c
+++ b/drivers/ruby/irq.c
@@ -102,11 +102,7 @@
 #define ASSERT(expr)
 #endif
 
-#ifdef TOPAZ_PLATFORM
 #define TIMER_INT_MSK(t)	TOPAZ_SYS_CTL_INTR_TIMER_MSK(t)
-#else
-#define TIMER_INT_MSK(t)        RUBY_SYS_CTL_INTR_TIMER_MSK(t)
-#endif
 
 enum toggle_irq {
 	DISABLE,
@@ -473,6 +469,7 @@
 }
 #endif
 
+#ifndef TOPAZ_AMBER_IP
 /*
  *
  * Some checking to prevent registration of isrs on gpio lines that are in use
@@ -488,7 +485,7 @@
 
 	return use_uart1;
 }
-
+#endif
 
 static struct disallowed_isr {
 	int	irq;
@@ -498,12 +495,14 @@
 }
 disallowed_isrs[] =
 {
+#ifndef TOPAZ_AMBER_IP
 	{ -1,	RUBY_GPIO_UART0_SI,	"uart0 rx",	NULL			},
 	{ -1,	RUBY_GPIO_UART0_SO,	"uart0 tx",	NULL			},
 	{ -1,	RUBY_GPIO_UART1_SI,	"uart1 rx",	&check_uart1_use	},
 	{ -1,	RUBY_GPIO_UART1_SO,	"uart1 tx",	&check_uart1_use	},
 	{ -1,	RUBY_GPIO_I2C_SCL,	"i2c scl",	NULL			},
 	{ -1,	RUBY_GPIO_I2C_SDA,	"i2c sda",	NULL			},
+#endif /*TOPAZ_AMBER_IP*/
 	{ RUBY_IRQ_TIMER0,	-1,	"ruby timer0",	NULL			},
 };
 
diff --git a/drivers/ruby/machine.c b/drivers/ruby/machine.c
index 39a7115..ef788da 100644
--- a/drivers/ruby/machine.c
+++ b/drivers/ruby/machine.c
@@ -23,6 +23,10 @@
 
 #include <asm/board/platform.h>
 
+#ifdef TOPAZ_AMBER_IP
+#include <qtn/amber.h>
+#endif
+
 static inline void machine_restart_watchdog(unsigned long delay)
 {
 	writel(RUBY_WDT_ENABLE, RUBY_WDT_CTL);
@@ -39,16 +43,25 @@
 
 void machine_restart(char *__unused)
 {
+#ifndef TOPAZ_AMBER_IP
 	/* Be paranoid - use both watchdog and sysctl to reset */
 	machine_restart_watchdog(RUBY_WDT_RESET_TIMEOUT);
 	machine_restart_sysctrl(RUBY_SYS_CTL_RESET_ALL);
 
 	/* Board must be resetted before this point! */
 	while(1);
+#else
+	machine_halt();
+#endif
 }
 
 void machine_halt(void)
 {
+#ifdef TOPAZ_AMPER_IP
+	local_irq_disable();
+	/* Tell ST HOST we have been halted */
+	amber_shutdown();
+#endif
 	/* Halt the processor */
 	__asm__ __volatile__("flag  %0"::"i"(STATUS_H_MASK));
 }
diff --git a/drivers/ruby/pcibios.c b/drivers/ruby/pcibios.c
index 2603d43..9549094 100644
--- a/drivers/ruby/pcibios.c
+++ b/drivers/ruby/pcibios.c
@@ -42,11 +42,7 @@
 #include "pcibios.h"
 
 #define BUS_SCAN_TRY_MAX		1000
-#ifdef TOPAZ_PLATFORM
 #define PCIE_DEV_LINKUP_MASK TOPAZ_PCIE_LINKUP
-#else
-#define PCIE_DEV_LINKUP_MASK	0x700
-#endif
 
 
 static int
@@ -240,7 +236,6 @@
 	return 0;
 }
 
-#ifdef TOPAZ_PLATFORM
 static int
 rpcic_find_capability(int cap)
 {
@@ -258,7 +253,6 @@
 
 	return pos;
 }
-#endif
 /*
  *  PCI bus scan and initialization
  */
@@ -275,11 +269,7 @@
 	rpcic->mem_res.start = RUBY_PCI_RC_MEM_START;
 	rpcic->mem_res.end	= RUBY_PCI_RC_MEM_START + RUBY_PCI_RC_MEM_WINDOW -1;
 	rpcic->mem_res.flags = IORESOURCE_MEM;
-#ifdef TOPAZ_PLATFORM
 	rpcic->irq = TOPAZ_IRQ_PCIE;
-#else
-	rpcic->irq = RUBY_IRQ_INTA;
-#endif
 
 	if (request_resource(&iomem_resource, &rpcic->mem_res) < 0) {
 		printk(KERN_WARNING "WARNING: Failed to alloc IOMem!\n");
@@ -288,11 +278,7 @@
 
 	/* waiting for end point linked up in the PCI bus */
 	for (i = 0; i < BUS_SCAN_TRY_MAX; i++) {
-#ifdef TOPAZ_PLATFORM
 		ep_up = readl(TOPAZ_PCIE_STAT);
-#else
-		ep_up = readl(RUBY_SYS_CTL_CSR);
-#endif
 		if ( (ep_up & PCIE_DEV_LINKUP_MASK) == PCIE_DEV_LINKUP_MASK ) {
 			break;
 		}
@@ -303,7 +289,6 @@
 	}
 
 	/* Set RC Max_Payload_Size to 256 for topaz */
-#ifdef TOPAZ_PLATFORM
 	int pos;
 	uint32_t dev_ctl_sts;
 	pos = rpcic_find_capability(PCI_CAP_ID_EXP);
@@ -314,7 +299,6 @@
 		dev_ctl_sts = ((dev_ctl_sts & ~PCI_EXP_DEVCTL_PAYLOAD) | BIT(5));
 		writel(dev_ctl_sts, RUBY_PCIE_REG_BASE + pos + PCI_EXP_DEVCTL);
 	}
-#endif
 
 	if ( (ep_up & PCIE_DEV_LINKUP_MASK) == PCIE_DEV_LINKUP_MASK ) {
 		rpcic->bus = pci_scan_bus(0, &rpcic_ops, rpcic);
@@ -515,13 +499,11 @@
 	if (!pos) {
 		printk(KERN_ERR "Error locating MSI capability position, using INTx instead\n");
 	} else {
-#ifdef TOPAZ_PLATFORM
 		/* Setup msi generation info */
 		writel(TOPAZ_PCIE_MSI_REGION, TOPAZ_MSI_ADDR_LOWER);
 		writel(0, TOPAZ_MSI_ADDR_UPPER);
 		writel(BIT(0), TOPAZ_MSI_INT_ENABLE);
 		writel(0, TOPAZ_PCIE_MSI_MASK);
-#endif
 	}
 
 	return 0;
diff --git a/drivers/ruby/pm.c b/drivers/ruby/pm.c
index 65463bd..5a1246b 100644
--- a/drivers/ruby/pm.c
+++ b/drivers/ruby/pm.c
@@ -33,6 +33,7 @@
 #define STR(x)				STR_HELPER(x)
 
 #define PM_PROC_FILE_NAME		"soc_pm"
+#define PM_EMAC_PROC_FILE_NAME		"emac_pm"
 
 #define PM_PROC_ADD_CMD			"add"
 #define PM_PROC_UPDATE_CMD		"update"
@@ -46,8 +47,10 @@
 
 static struct workqueue_struct *pm_wq;
 static DEFINE_SPINLOCK(pm_wq_lock);
+static struct pm_qos_request_list *pm_emac_req;
 
-static int pm_write_proc(struct file *file, const char __user *buffer, unsigned long count, void *data)
+static int pm_write_proc(struct file *file, const char __user *buffer,
+				unsigned long count, void *data)
 {
 	char cmd[PM_MAX_NAME_LEN + 32];
 	char name[PM_MAX_NAME_LEN + 1];
@@ -63,14 +66,28 @@
 	}
 	cmd[count] = '\0';
 
-	if (sscanf(cmd, PM_PROC_PARSE_ADD_CMD, name, &val) == 2) {
-		ret = pm_qos_add_requirement(PM_QOS_POWER_SAVE, name, val);
-	} else if (sscanf(cmd, PM_PROC_PARSE_UPDATE_CMD, name, &val) == 2) {
-		ret = pm_qos_update_requirement(PM_QOS_POWER_SAVE, name, val);
-	} else if (sscanf(cmd, PM_PROC_PARSE_REMOVE_CMD, name) == 1) {
-		pm_qos_remove_requirement(PM_QOS_POWER_SAVE, name);
-	} else {
+	switch ((int)data) {
+	case PM_QOS_POWER_SAVE:
+		if (sscanf(cmd, PM_PROC_PARSE_ADD_CMD, name, &val) == 2) {
+			ret = pm_qos_add_requirement(PM_QOS_POWER_SAVE, name, val);
+		} else if (sscanf(cmd, PM_PROC_PARSE_UPDATE_CMD, name, &val) == 2) {
+			ret = pm_qos_update_requirement(PM_QOS_POWER_SAVE, name, val);
+		} else if (sscanf(cmd, PM_PROC_PARSE_REMOVE_CMD, name) == 1) {
+			pm_qos_remove_requirement(PM_QOS_POWER_SAVE, name);
+		} else {
+			ret = -EINVAL;
+		}
+		break;
+	case PM_QOS_POWER_EMAC:
+		if (sscanf(cmd, "%d", &val) == 1) {
+			pm_qos_update_request(pm_emac_req, val);
+		} else {
+			ret = -EINVAL;
+		}
+		break;
+	default:
 		ret = -EINVAL;
+		break;
 	}
 
 	return ret ? ret : count;
@@ -78,7 +95,41 @@
 
 static int pm_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data)
 {
-	return sprintf(page, "%d", pm_qos_requirement(PM_QOS_POWER_SAVE));
+	return sprintf(page, "%d", pm_qos_requirement((int)data));
+}
+
+static int __init pm_create_proc(void)
+{
+	struct proc_dir_entry *entry;
+	struct proc_dir_entry *emac_proc_entry;
+	/*
+	 * Proc interface to change power save levels.
+	 * Main purpose is debugging.
+	 * Other kernel modules can directly use pm_qos_*() functions.
+	 * User-space application (safe way) can open misc character device
+	 * (major number 10, minor see by "cat /proc/misc")
+	 * provided by PM QoS kernel module and control through it.
+	 * It is safe because 'name' is chosen based on PID,
+	 * and when application quit all its requests are removed.
+	 */
+
+	entry = create_proc_entry(PM_PROC_FILE_NAME, 0600, NULL);
+	if (!entry) {
+		return -ENOMEM;
+	}
+	entry->write_proc = pm_write_proc;
+	entry->read_proc = pm_read_proc;
+	entry->data = (void *)PM_QOS_POWER_SAVE;
+
+	emac_proc_entry = create_proc_entry(PM_EMAC_PROC_FILE_NAME, 0600, NULL);
+	if (!emac_proc_entry) {
+		return -ENOMEM;
+	}
+	emac_proc_entry->write_proc = pm_write_proc;
+	emac_proc_entry->read_proc = pm_read_proc;
+	emac_proc_entry->data = (void *)PM_QOS_POWER_EMAC;
+
+	return 0;
 }
 
 static void __init pm_create_wq(void)
@@ -86,31 +137,13 @@
 	pm_wq = create_rt_workqueue("ruby_pm");
 }
 
-static int __init pm_create_proc(void)
-{
-	/*
-	 * Proc interface to change power save levels.
-	 * Main purpose is debugging.
-	 * Other kernel modules can directly use pm_qos_*() functions.
-	 * User-space application (safe way) can open misc character device (major number 10, minor see by "cat /proc/misc")
-	 * provided by PM QoS kernel module and control through it. It is safe because 'name' is chosen based on PID,
-	 * and when application quit all its requests are removed.
-	 */
-
-	struct proc_dir_entry *entry = create_proc_entry(PM_PROC_FILE_NAME, 0600, NULL);
-	if (!entry) {
-		return -ENOMEM;
-	}
-
-	entry->write_proc = pm_write_proc;
-	entry->read_proc = pm_read_proc;
-
-	return 0;
-}
-
 static int __init pm_init(void)
 {
 	pm_qos_add_requirement(PM_QOS_POWER_SAVE, BOARD_PM_GOVERNOR_QCSAPI, BOARD_PM_LEVEL_INIT);
+	pm_emac_req = pm_qos_add_request(PM_QOS_POWER_EMAC, BOARD_PM_LEVEL_NO);
+	if (!pm_emac_req)
+		return -ENOMEM;
+
 	pm_create_wq();
 	return pm_create_proc();
 }
diff --git a/drivers/ruby/serial.c b/drivers/ruby/serial.c
index 5398385..387da7d 100644
--- a/drivers/ruby/serial.c
+++ b/drivers/ruby/serial.c
@@ -31,12 +31,8 @@
 static struct plat_serial8250_port ruby_data[] =
 {
 	{
-#ifdef TOPAZ_PLATFORM
 		.iotype		= UPIO_DWAPB,
 		.private_data	= (void*)RUBY_UART0_USR,
-#else
-		.iotype		= UPIO_MEM,
-#endif
 		.flags		= (UPF_BOOT_AUTOCONF | UPF_SPD_FLAG),
 		.mapbase	= RUBY_UART0_BASE_ADDR,
 		.membase	= (void*)RUBY_UART0_BASE_ADDR,
@@ -45,12 +41,8 @@
 		.regshift	= 2,
 	},
 	{
-#ifdef TOPAZ_PLATFORM
 		.iotype		= UPIO_DWAPB,
 		.private_data	= (void*)RUBY_UART1_USR,
-#else
-		.iotype		= UPIO_MEM,
-#endif
 		.flags		= (UPF_BOOT_AUTOCONF | UPF_SPD_FLAG),
 		.mapbase	= RUBY_UART1_BASE_ADDR,
 		.membase	= (void*)RUBY_UART1_BASE_ADDR,
diff --git a/drivers/ruby/spi_api.c b/drivers/ruby/spi_api.c
index d868159..abc3539 100644
--- a/drivers/ruby/spi_api.c
+++ b/drivers/ruby/spi_api.c
@@ -459,7 +459,11 @@
                                         return -1;
                                 }
                                 spi_flash_write_enable();
-                                writel(SPI_MEM_ADDR(flash_addr), RUBY_SPI_SECTOR_ERASE_20);
+				if ( device->sector_size * device->n_sectors > RUBY_SPI_BOUNDARY_4B ){
+					writel(SPI_MEM_ADDR_4B(flash_addr), RUBY_SPI_SECTOR_ERASE_20_4B);
+				} else {
+					writel(SPI_MEM_ADDR(flash_addr), RUBY_SPI_SECTOR_ERASE_20);
+				}
 				ret = spi_flash_wait_ready(device);
 				if (ret || device->sector_size == SPI_SECTOR_4K)
 					break;
@@ -473,17 +477,29 @@
                                 return -1;
                         }
                         spi_flash_write_enable();
-                        writel(SPI_MEM_ADDR(flash_addr), RUBY_SPI_SECTOR_ERASE_D8);
+			if ( device->sector_size * device->n_sectors > RUBY_SPI_BOUNDARY_4B ){
+				writel(SPI_MEM_ADDR_4B(flash_addr), RUBY_SPI_SECTOR_ERASE_D8_4B);
+			} else {
+				writel(SPI_MEM_ADDR(flash_addr), RUBY_SPI_SECTOR_ERASE_D8);
+			}
                 }
                 break;
 
         default:
                 spi_flash_write_enable();
-                if (device->flags & SECTOR_ERASE_OP20) {
-                        writel(SPI_MEM_ADDR(flash_addr), RUBY_SPI_SECTOR_ERASE_20);
-                } else {
-                        writel(SPI_MEM_ADDR(flash_addr), RUBY_SPI_SECTOR_ERASE_D8);
-                }
+		if ( device->sector_size * device->n_sectors > RUBY_SPI_BOUNDARY_4B ){
+			if (device->flags & SECTOR_ERASE_OP20) {
+				writel(SPI_MEM_ADDR_4B(flash_addr), RUBY_SPI_SECTOR_ERASE_20_4B);
+			} else {
+				writel(SPI_MEM_ADDR_4B(flash_addr), RUBY_SPI_SECTOR_ERASE_D8_4B);
+			}
+		} else {
+			if (device->flags & SECTOR_ERASE_OP20) {
+				writel(SPI_MEM_ADDR(flash_addr), RUBY_SPI_SECTOR_ERASE_20);
+			} else {
+				writel(SPI_MEM_ADDR(flash_addr), RUBY_SPI_SECTOR_ERASE_D8);
+			}
+		}
         }
 
         return ret;
diff --git a/drivers/ruby/spi_flash.c b/drivers/ruby/spi_flash.c
index 9694f9d..4822376 100644
--- a/drivers/ruby/spi_flash.c
+++ b/drivers/ruby/spi_flash.c
@@ -58,17 +58,6 @@
 /* Each flash chip has same page size */
 #define SPI_PAGE_SIZE			256
 
-/*
- *
- * Ruby uses 3 msb bytes to form addresses.
- * Topaz uses all 4 bytes, just skip first msb if in 3-bytes address mode.
- *
- */
-#ifdef TOPAZ_PLATFORM
-        #define SPI_MEM_ADDR(addr)      (((addr) & 0x00FFFFFF))
-#else
-        #define SPI_MEM_ADDR(addr)      (((addr) & 0x00FFFFFF) << 8)
-#endif
 
 /* Set zero if want to disable log messages */
 #define SPI_FLASH_DEBUG			0
@@ -432,7 +421,11 @@
 			break;
 		}
 		spi_flash_write_enable();
-		writel(spi_flash_addr(write_begin), IO_ADDRESS(RUBY_SPI_PAGE_PROGRAM));
+		if ( flash->info->sector_size * flash->info->n_sectors > RUBY_SPI_BOUNDARY_4B ){
+			writel(SPI_MEM_ADDR_4B(write_begin), IO_ADDRESS(RUBY_SPI_PAGE_PROGRAM_4B));
+		} else {
+			writel(spi_flash_addr(write_begin), IO_ADDRESS(RUBY_SPI_PAGE_PROGRAM));
+		}
 
 		/*
 		 * memcpy((u_char *)flash->mem_write_nocache + write_begin, buf, iter_write_len);
@@ -588,14 +581,25 @@
 	RUBY_MTD_PART(MTD_PARTNAME_DATA,	MTDPART_SIZ_FULL,		MTDPART_OFS_NXTBLK),
 };
 
+#ifdef FLASH_SUPPORT_256KB
+static struct mtd_partition __initdata parts_256K[] = {
+        RUBY_MTD_PART(MTD_PARTNAME_UBOOT_BIN,   F256K_UBOOT_PIGGY_PARTITION_SIZE, 0),
+        RUBY_MTD_PART(MTD_PARTNAME_UBOOT_ENV,   F256K_ENV_PARTITION_SIZE,        MTDPART_OFS_NXTBLK),
+        RUBY_MTD_PART(MTD_PARTNAME_DATA,        MTDPART_SIZ_FULL,               MTDPART_OFS_NXTBLK),
+};
+#endif
 static struct mtd_partition __initdata parts_2M[] = {
 	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_BIN,	UBOOT_TEXT_PARTITION_SIZE,	0),
 	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_ENV,	UBOOT_ENV_PARTITION_SIZE,	MTDPART_OFS_NXTBLK),
 	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_ENV_BAK,UBOOT_ENV_PARTITION_SIZE,	MTDPART_OFS_NXTBLK),
 	RUBY_MTD_PART(MTD_PARTNAME_DATA,	MTDPART_SIZ_FULL,		MTDPART_OFS_NXTBLK),
 };
-
-#ifdef TOPAZ_PLATFORM
+static struct mtd_partition __initdata parts_4M[] = {
+	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_BIN,	UBOOT_TEXT_PARTITION_SIZE,	0),
+	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_ENV,	UBOOT_ENV_PARTITION_SIZE,	MTDPART_OFS_NXTBLK),
+	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_ENV_BAK,UBOOT_ENV_PARTITION_SIZE,	MTDPART_OFS_NXTBLK),
+	RUBY_MTD_PART(MTD_PARTNAME_DATA,	MTDPART_SIZ_FULL,		MTDPART_OFS_NXTBLK),
+};
 static struct mtd_partition __initdata parts_8M[] = {
 	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_BIN,	UBOOT_TEXT_PARTITION_SIZE,	0),
 	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_ENV,	UBOOT_ENV_PARTITION_SIZE,	MTDPART_OFS_NXTBLK),
@@ -603,16 +607,6 @@
 	RUBY_MTD_PART(MTD_PARTNAME_LINUX_LIVE,	IMG_SIZE_8M_FLASH_1_IMG,	MTDPART_OFS_NXTBLK),
 	RUBY_MTD_PART(MTD_PARTNAME_DATA,	MTDPART_SIZ_FULL,		MTDPART_OFS_NXTBLK),
 };
-#else
-static struct mtd_partition __initdata parts_8M[] = {
-	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_BIN,	UBOOT_TEXT_PARTITION_SIZE,	0),
-	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_ENV,	UBOOT_ENV_PARTITION_SIZE,	MTDPART_OFS_NXTBLK),
-	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_ENV_BAK,UBOOT_ENV_PARTITION_SIZE,	MTDPART_OFS_NXTBLK),
-	RUBY_MTD_PART(MTD_PARTNAME_LINUX_SAFETY,IMG_SIZE_8M_FLASH_2_IMG,	MTDPART_OFS_NXTBLK),
-	RUBY_MTD_PART(MTD_PARTNAME_LINUX_LIVE,	IMG_SIZE_8M_FLASH_2_IMG,	MTDPART_OFS_NXTBLK),
-	RUBY_MTD_PART(MTD_PARTNAME_DATA,	MTDPART_SIZ_FULL,		MTDPART_OFS_NXTBLK),
-};
-#endif
 
 static struct mtd_partition __initdata parts_16M[] = {
 	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_BIN,	UBOOT_TEXT_PARTITION_SIZE,	0),
@@ -623,6 +617,26 @@
 	RUBY_MTD_PART(MTD_PARTNAME_DATA,	MTDPART_SIZ_FULL,		MTDPART_OFS_NXTBLK),
 };
 
+static struct mtd_partition __initdata parts_32M[] = {
+	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_BIN,	UBOOT_TEXT_PARTITION_SIZE,	0),
+	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_ENV,	UBOOT_ENV_PARTITION_SIZE,	MTDPART_OFS_NXTBLK),
+	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_ENV_BAK,UBOOT_ENV_PARTITION_SIZE,	MTDPART_OFS_NXTBLK),
+	RUBY_MTD_PART(MTD_PARTNAME_LINUX_SAFETY,IMG_SIZE_16M_FLASH_2_IMG,	MTDPART_OFS_NXTBLK),
+	RUBY_MTD_PART(MTD_PARTNAME_LINUX_LIVE,	IMG_SIZE_16M_FLASH_2_IMG,	MTDPART_OFS_NXTBLK),
+	RUBY_MTD_PART(MTD_PARTNAME_DATA,	RUBY_MIN_DATA_PARTITION_SIZE,		MTDPART_OFS_NXTBLK),
+	RUBY_MTD_PART(MTD_PARTNAME_EXTEND,	MTDPART_SIZ_FULL,		MTDPART_OFS_NXTBLK),
+};
+
+static struct mtd_partition __initdata parts_64M[] = {
+	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_BIN,	UBOOT_TEXT_PARTITION_SIZE,	0),
+	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_ENV,	UBOOT_ENV_PARTITION_SIZE,	MTDPART_OFS_NXTBLK),
+	RUBY_MTD_PART(MTD_PARTNAME_UBOOT_ENV_BAK,UBOOT_ENV_PARTITION_SIZE,	MTDPART_OFS_NXTBLK),
+	RUBY_MTD_PART(MTD_PARTNAME_LINUX_SAFETY,IMG_SIZE_16M_FLASH_2_IMG,	MTDPART_OFS_NXTBLK),
+	RUBY_MTD_PART(MTD_PARTNAME_LINUX_LIVE,	IMG_SIZE_16M_FLASH_2_IMG,	MTDPART_OFS_NXTBLK),
+	RUBY_MTD_PART(MTD_PARTNAME_DATA,	RUBY_MIN_DATA_PARTITION_SIZE,		MTDPART_OFS_NXTBLK),
+	RUBY_MTD_PART(MTD_PARTNAME_EXTEND,	MTDPART_SIZ_FULL,		MTDPART_OFS_NXTBLK),
+};
+
 struct mtd_partition_table {
 	int flashsz;
 	struct mtd_partition *parts;
@@ -630,9 +644,15 @@
 };
 
 static const struct mtd_partition_table partition_tables[] = {
+	{ FLASH_64MB,	parts_64M,	ARRAY_SIZE(parts_64M)	},
+	{ FLASH_32MB,	parts_32M,	ARRAY_SIZE(parts_32M)	},
 	{ FLASH_16MB,	parts_16M,	ARRAY_SIZE(parts_16M)	},
 	{ FLASH_8MB,	parts_8M,	ARRAY_SIZE(parts_8M)	},
+	{ FLASH_4MB,	parts_4M,	ARRAY_SIZE(parts_4M)	},
 	{ FLASH_2MB,	parts_2M,	ARRAY_SIZE(parts_2M)	},
+#ifdef FLASH_SUPPORT_256KB
+        { FLASH_256KB,  parts_256K,     ARRAY_SIZE(parts_256K)   },
+#endif
 	{ FLASH_64KB,	parts_64K,	ARRAY_SIZE(parts_64K)	},
 };
 
@@ -704,6 +724,9 @@
 		goto error;
 	}
 
+	if ( flash->info->sector_size * flash->info->n_sectors > RUBY_SPI_BOUNDARY_4B ){
+		writel(RUBY_SPI_ADDRESS_MODE_4B, RUBY_SPI_CONTROL);
+	}
 
 	*flash_ret = flash;
 
diff --git a/drivers/ruby/troubleshoot.h b/drivers/ruby/troubleshoot.h
index 048b8e0..9850303 100644
--- a/drivers/ruby/troubleshoot.h
+++ b/drivers/ruby/troubleshoot.h
@@ -23,12 +23,14 @@
 #include <linux/types.h>
 #include <common/topaz_platform.h>
 
-#define QTN_SAFE_SRAM_MAGIC 0xF0
+#define HEADER_CORE_DUMP	(0xDEAD)
 
 typedef int (*arc_troubleshoot_start_hook_cbk)(void *in_ctx);
 
 void arc_set_sram_safe_area(unsigned long sram_start, unsigned long sram_end);
 
+void arc_save_to_sram_safe_area(int compress_ratio);
+
 void arc_set_troubleshoot_start_hook(arc_troubleshoot_start_hook_cbk in_troubleshoot_start, void *in_ctx);
 
 /* Inside printk.c - not the ideal header for this, but since it's Quantenna added, is
diff --git a/drivers/topaz/Makefile b/drivers/topaz/Makefile
index 7cfe7e2..5c3f9d2 100644
--- a/drivers/topaz/Makefile
+++ b/drivers/topaz/Makefile
@@ -13,6 +13,7 @@
 ifeq ($(QTN_EXTERNAL_MODULES),y)
 obj-$(CONFIG_ARCH_TOPAZ_FWT) += fwt_if.o
 obj-$(CONFIG_ARCH_TOPAZ_TQE) += switch_tqe.o
+obj-$(CONFIG_ARCH_TOPAZ_TQE) += switch_vlan.o
 obj-$(CONFIG_ARCH_TOPAZ_EMAC) += dpi.o
 obj-$(CONFIG_ARCH_TOPAZ_EMAC) += switch_emac.o
 endif
diff --git a/drivers/topaz/amber.c b/drivers/topaz/amber.c
new file mode 100644
index 0000000..3f41926
--- /dev/null
+++ b/drivers/topaz/amber.c
@@ -0,0 +1,401 @@
+/*
+ * (C) Copyright 2015 Quantenna Communications Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <linux/types.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/proc_fs.h>
+#include <linux/reboot.h>
+#include <linux/interrupt.h>
+#include <asm/io.h>
+#include <asm/uaccess.h>	/* for copy_from_user */
+#include <asm/gpio.h>
+#include <asm/hardware.h>
+
+#include <qtn/amber.h>
+#include <common/topaz_platform.h>
+#include <linux/delay.h>
+
+#define PROC_AMBER_DIR_NAME "amber"
+#define PROC_AMBER_WIFI2SOC_INT_FILE_NAME "wifi2soc_int"
+
+static struct proc_dir_entry *amber_dir;
+static struct proc_dir_entry *amber_wifi2soc_file;
+
+static unsigned long interrupt_errors_mask = 0;
+static unsigned long interrupt_errors_store = 0;
+
+static struct timer_list amber_timer;
+static DEFINE_SPINLOCK(wifi2soc_lock);
+static int initialized = 0;
+
+static struct {
+	const char *token;
+	const int val;
+} wifi2soc_int_token_map[] =
+{
+	{"SYSTEM_READY",	TOPAZ_AMBER_WIFI2SOC_SYSTEM_READY},
+	{"CAL_COMPLETE",	TOPAZ_AMBER_WIFI2SOC_CAL_COMPLETE},
+	{"CAL_CHANGE_REQ",	TOPAZ_AMBER_WIFI2SOC_CAL_CHANGE_REQ},
+	{"SHUTDOWN",		TOPAZ_AMBER_WIFI2SOC_SHUTDOWN},
+	{"WATCHDOG",		TOPAZ_AMBER_WIFI2SOC_WATCHDOG},
+	{"EMERGENCY",		TOPAZ_AMBER_WIFI2SOC_EMERGENCY},
+	{"NFS_MOUNT_FAILURE",	TOPAZ_AMBER_WIFI2SOC_NFS_MOUNT_FAILURE},
+	{"NFS_ACCESS_FAILURE",	TOPAZ_AMBER_WIFI2SOC_NFS_ACCESS_FAILURE},
+	{"NFS_INTEGRITY_FAILURE",TOPAZ_AMBER_WIFI2SOC_NFS_INTEGRITY_FAILURE},
+	{"WAKE_ON_WLAN",	TOPAZ_AMBER_WIFI2SOC_WAKE_ON_WLAN}
+};
+
+static enum amber_shutdown_code shutdown_code = AMBER_SD_CODE_GRACEFUL;
+
+void amber_set_shutdown_code(enum amber_shutdown_code code)
+{
+	shutdown_code = code;
+}
+EXPORT_SYMBOL(amber_set_shutdown_code);
+
+int amber_trigger_wifi2soc_interrupt_sync(unsigned long interrupt_code)
+{
+	interrupt_code &= interrupt_errors_mask;
+
+	if (interrupt_code == 0) {
+		return 0;
+	}
+
+	while (readl(IO_ADDRESS(TOPAZ_AMBER_WIFI2SOC_ERROR_REG)) & interrupt_errors_mask) {
+		/*
+		 * Idle wait for the previous error codes to be cleared by ST Host.
+		 * If we get stuck here, this means ST Host is hung, so it does not matter
+		 * where we halt - here, or few cycles later in machine_halt().
+		 */
+	};
+
+	writel(interrupt_code, IO_ADDRESS(TOPAZ_AMBER_WIFI2SOC_ERROR_REG));
+	writel(TOPAZ_AMBER_WIFI2SOC_INT_OUTPUT, IO_ADDRESS(GPIO_OUTPUT_MASK));
+	writel(TOPAZ_AMBER_WIFI2SOC_INT_OUTPUT, IO_ADDRESS(GPIO_OUTPUT));
+	udelay(1);
+	writel(0, IO_ADDRESS(GPIO_OUTPUT));
+	writel(0, IO_ADDRESS(GPIO_OUTPUT_MASK));
+
+	return 0;
+}
+
+void amber_shutdown(void)
+{
+	unsigned long interrupt_code = 0;
+
+	if (!initialized) {
+		/* Any early reboot is considered emergency */
+		interrupt_code = TOPAZ_AMBER_WIFI2SOC_EMERGENCY;
+		interrupt_errors_mask = readl(IO_ADDRESS(TOPAZ_AMBER_WIFI2SOC_MASK_REG));
+	} else {
+		switch (shutdown_code) {
+		case AMBER_SD_CODE_GRACEFUL:
+			interrupt_code = TOPAZ_AMBER_WIFI2SOC_SHUTDOWN;
+			break;
+		case AMBER_SD_CODE_EMERGENCY:
+			interrupt_code = TOPAZ_AMBER_WIFI2SOC_EMERGENCY;
+			break;
+		case AMBER_SD_CODE_NONE:
+		default:
+			/* Don't send any error code */
+			interrupt_code = 0;
+			break;
+		}
+	}
+
+	amber_trigger_wifi2soc_interrupt_sync(interrupt_code);
+}
+EXPORT_SYMBOL(amber_shutdown);
+
+static int amber_post_stored_interrupts(void)
+{
+	int need_timer = 0;
+
+	if (interrupt_errors_store == 0) {
+		return 0;
+	}
+
+	if ((readl(IO_ADDRESS(TOPAZ_AMBER_WIFI2SOC_ERROR_REG)) & interrupt_errors_mask) == 0) {
+
+		writel(interrupt_errors_store, IO_ADDRESS(TOPAZ_AMBER_WIFI2SOC_ERROR_REG));
+
+		interrupt_errors_store = 0;
+
+		/*
+		 * Pulse WIFI2SOC_INT_O. Minimal pulse width is 5 ns.
+		 * The below two calls compile to JL instructions to call gpio_set_value(),
+		 * which in turn indirectly calls gpio set handler.
+		 * This means the number of 500 MHz cycles between line assert and de-assert is
+		 * sufficiently large to fulfill the minimal pulse width requirement.
+		 */
+
+		gpio_set_value(TOPAZ_AMBER_WIFI2SOC_INT_OUTPUT, 1);
+		gpio_set_value(TOPAZ_AMBER_WIFI2SOC_INT_OUTPUT, 0);
+
+		need_timer = 0;
+	} else {
+		need_timer = 1;
+	}
+
+	return need_timer;
+}
+
+static void amber_timer_func(unsigned long data)
+{
+	amber_trigger_wifi2soc_interrupt(0);
+}
+
+int amber_trigger_wifi2soc_interrupt(unsigned long interrupt_code)
+{
+	int need_timer = 0;
+	unsigned long flags;
+
+	spin_lock_irqsave(&wifi2soc_lock, flags);
+	interrupt_errors_store |= interrupt_code & interrupt_errors_mask;
+	need_timer = amber_post_stored_interrupts();
+	spin_unlock_irqrestore(&wifi2soc_lock, flags);
+
+	if (need_timer) {
+		mod_timer(&amber_timer, jiffies + AMBER_TIMER_PERIOD_JIFFIES);
+	}
+
+	return 0;
+}
+EXPORT_SYMBOL(amber_trigger_wifi2soc_interrupt);
+
+static int amber_wifi2soc_int_proc_read(char *buffer,
+		  char **buffer_location, off_t offset,
+		  int buffer_length, int *eof, void *data)
+{
+	int i;
+	int written = 0;
+	unsigned long interrupt_code = readl(IO_ADDRESS(TOPAZ_AMBER_WIFI2SOC_ERROR_REG));
+
+	*eof = 1;
+
+	for (i = 0; i < ARRAY_SIZE(wifi2soc_int_token_map); i++) {
+		if (interrupt_code & wifi2soc_int_token_map[i].val) {
+			int ret = snprintf(buffer + written,buffer_length - written, "%s\n",
+					wifi2soc_int_token_map[i].token);
+
+			if (ret < 0) {
+				break;
+			}
+
+			if (ret + written > buffer_length) {
+				*eof = 0;
+				written = buffer_length;
+				break;
+			}
+
+			written += ret;
+		}
+	}
+
+	return written;
+}
+
+static int amber_wifi2soc_int_proc_write(struct file *file, const char *buffer,
+		       unsigned long count, void *data)
+{
+	char *procfs_buffer;
+	char *ptr;
+	char *token;
+	char found_token = 0;
+	int i;
+
+	procfs_buffer = kmalloc(count, GFP_KERNEL);
+
+	if (procfs_buffer == NULL) {
+		printk("AMBER: wifi2soc error - out of memory\n");
+		return -ENOMEM;
+	}
+
+	/* write data to the buffer */
+	if (copy_from_user(procfs_buffer, buffer, count)) {
+		goto bail;
+	}
+
+	ptr = (char *)procfs_buffer;
+	ptr[count - 1] = '\0';
+	token = strsep(&ptr, "\n");
+
+	for (i = 0; i < ARRAY_SIZE(wifi2soc_int_token_map); i++) {
+		if (strcmp(token, wifi2soc_int_token_map[i].token) == 0) {
+			amber_trigger_wifi2soc_interrupt(wifi2soc_int_token_map[i].val);
+			found_token = 1;
+			break;
+		}
+	}
+
+	if (!found_token) {
+		printk(KERN_ERR "AMBER: wifi2soc error - unable to parse token %s\n", token);
+	}
+
+bail:
+	kfree(procfs_buffer);
+	return count;
+}
+
+static int amber_panic_notifier(struct notifier_block *this, unsigned long event, void *ptr)
+{
+	amber_set_shutdown_code(AMBER_SD_CODE_EMERGENCY);
+	return NOTIFY_DONE;
+}
+
+static struct notifier_block amber_panic_block = {
+	.notifier_call = amber_panic_notifier,
+};
+
+static void amber_soc2wifi_panic_work(struct work_struct *work)
+{
+	printk("AMBER: SoC host panic - halting Amber kernel\n");
+	amber_set_shutdown_code(AMBER_SD_CODE_NONE);
+	kernel_halt();
+}
+
+static DECLARE_WORK(amber_soc2wifi_panic_wq, &amber_soc2wifi_panic_work);
+
+static void amber_soc2wifi_wake_on_lan_work(struct work_struct *work)
+{
+	printk("AMBER: SoC host - waking up on LAN\n");
+}
+
+static DECLARE_WORK(amber_soc2wifi_wake_on_lan_wq, &amber_soc2wifi_wake_on_lan_work);
+
+static irqreturn_t amber_soc2wifi_irq_handler(int irq, void *dev_id)
+{
+	unsigned long int_status = readl(IO_ADDRESS(TOPAZ_AMBER_GPIO_IRQ_STATUS));
+	unsigned long int_code;
+
+	if ((int_status & (1 << TOPAZ_AMBER_SOC2WIFI_INT_INPUT)) == 0) {
+		/* Filter other GPIO interrupts */
+		return IRQ_NONE;
+	}
+
+	int_code = readl(IO_ADDRESS(TOPAZ_AMBER_SOC2WIFI_ERROR_REG));
+
+	if (int_code & TOPAZ_AMBER_SOC2WIFI_KERNEL_PANIC) {
+		/*
+		 * Clear the mask to prevent anymore wifi2soc interrupts posting
+		 * and halt the kernel.
+		 */
+		interrupt_errors_mask = 0;
+		schedule_work(&amber_soc2wifi_panic_wq);
+	}
+
+	if (int_code & TOPAZ_AMBER_SOC2WIFI_WAKE_ON_LAN) {
+		schedule_work(&amber_soc2wifi_wake_on_lan_wq);
+	}
+
+	writel(1 << TOPAZ_AMBER_SOC2WIFI_INT_INPUT, IO_ADDRESS(TOPAZ_AMBER_GPIO_IRQ_CLEAR));
+
+	return IRQ_HANDLED;
+}
+
+static int __init amber_init(void)
+{
+	int err;
+
+	amber_dir = proc_mkdir(PROC_AMBER_DIR_NAME, NULL);
+
+	amber_wifi2soc_file = create_proc_entry(PROC_AMBER_WIFI2SOC_INT_FILE_NAME, 0x644, amber_dir);
+
+	if (amber_wifi2soc_file == NULL) {
+		printk(KERN_ERR "AMBER: unable to create /proc/%s/%s\n", PROC_AMBER_DIR_NAME,
+			PROC_AMBER_WIFI2SOC_INT_FILE_NAME);
+		err = -ENOMEM;
+		goto out_exit_wifi2soc_proc;
+	}
+
+	amber_wifi2soc_file->read_proc = amber_wifi2soc_int_proc_read;
+	amber_wifi2soc_file->write_proc = amber_wifi2soc_int_proc_write;
+	amber_wifi2soc_file->mode = S_IFREG | S_IRUGO;
+	amber_wifi2soc_file->uid = 0;
+	amber_wifi2soc_file->gid = 0;
+	amber_wifi2soc_file->size = 0x1000;
+	amber_wifi2soc_file->data = NULL;
+
+	spin_lock_init(&wifi2soc_lock);
+	setup_timer(&amber_timer, amber_timer_func, 0);
+
+	interrupt_errors_mask = readl(IO_ADDRESS(TOPAZ_AMBER_WIFI2SOC_MASK_REG));
+
+	err = gpio_request(TOPAZ_AMBER_WIFI2SOC_INT_OUTPUT, "WIFI2SOC_INT_OUTPUT");
+
+	if (err < 0) {
+		printk(KERN_INFO "AMBER: failed to request GPIO %d for WIFI2SOC_INT_OUTPUT\n",
+			TOPAZ_AMBER_WIFI2SOC_INT_OUTPUT);
+		goto out_exit_wifi2soc_gpio;
+	}
+
+	ruby_set_gpio_irq_sel(TOPAZ_AMBER_SOC2WIFI_INT_INPUT);
+
+	err = request_irq(GPIO2IRQ(TOPAZ_AMBER_SOC2WIFI_INT_INPUT), amber_soc2wifi_irq_handler, 0,
+		"amber_soc2wifi", NULL);
+
+	if (err) {
+		printk(KERN_INFO "AMBER: failed to register IRQ %d\n",
+			GPIO2IRQ(TOPAZ_AMBER_SOC2WIFI_INT_INPUT));
+		goto out_exit_wifi2soc_irq;
+	}
+
+	atomic_notifier_chain_register(&panic_notifier_list, &amber_panic_block);
+
+	initialized = 1;
+
+	printk("AMBER: initialized successfully\n");
+
+	return 0;
+
+out_exit_wifi2soc_irq:
+	gpio_free(TOPAZ_AMBER_WIFI2SOC_INT_OUTPUT);
+
+out_exit_wifi2soc_gpio:
+	remove_proc_entry(PROC_AMBER_WIFI2SOC_INT_FILE_NAME, amber_dir);
+
+out_exit_wifi2soc_proc:
+	remove_proc_entry(PROC_AMBER_DIR_NAME, NULL);
+
+	return err;
+}
+
+static void __exit amber_exit(void)
+{
+	del_timer_sync(&amber_timer);
+
+	atomic_notifier_chain_unregister(&panic_notifier_list, &amber_panic_block);
+
+	free_irq(GPIO2IRQ(TOPAZ_AMBER_SOC2WIFI_INT_INPUT), NULL);
+	gpio_free(TOPAZ_AMBER_WIFI2SOC_INT_OUTPUT);
+
+	remove_proc_entry(PROC_AMBER_WIFI2SOC_INT_FILE_NAME, amber_dir);
+	remove_proc_entry(PROC_AMBER_DIR_NAME, NULL);
+}
+
+module_init(amber_init);
+module_exit(amber_exit);
+
+MODULE_DESCRIPTION("Amber Driver");
+MODULE_AUTHOR("Quantenna");
+MODULE_LICENSE("GPL");
diff --git a/drivers/topaz/fwt_if.c b/drivers/topaz/fwt_if.c
index 1ad2687..661496c 100755
--- a/drivers/topaz/fwt_if.c
+++ b/drivers/topaz/fwt_if.c
@@ -55,37 +55,45 @@
 /* Error definition in FWT Interface is return negative value */
 #define FWT_IF_ERROR(x)		(!(FWT_IF_SUCCESS(x)))
 
-/* specific commands keywords */
-#define FWT_IF_KEY_CLEAR	"clear"
-#define FWT_IF_KEY_ON		"on"
-#define FWT_IF_KEY_OFF		"off"
-#define FWT_IF_KEY_PRINT	"print"
-#define FWT_IF_KEY_ADD		"add"
-#define FWT_IF_KEY_DELETE	"del"
-#define FWT_IF_KEY_AUTO		"auto"
-#define FWT_IF_KEY_MANUAL	"manual"
-#define FWT_IF_KEY_NODE		"node"
-#define FWT_IF_KEY_4ADDR	"4addr"
-#define FWT_IF_KEY_HELP		"help"
-#define FWT_IF_KEY_DEBUG	"debug"
-#define FWT_IF_KEY_AGEING	"ageing"
+/* specific commands keywords - must match fwt_if_usr_cmd */
+#define FWT_IF_KEY_CLEAR		"clear"
+#define FWT_IF_KEY_ON			"on"
+#define FWT_IF_KEY_OFF			"off"
+#define FWT_IF_KEY_PRINT		"print"
+#define FWT_IF_KEY_ADD_STATIC_MC	"add_static_mc"
+#define FWT_IF_KEY_DEL_STATIC_MC	"del_static_mc"
+#define FWT_IF_KEY_GET_MC_LIST		"get_mc_list"
+#define FWT_IF_KEY_ADD			"add"
+#define FWT_IF_KEY_DELETE		"del"
+#define FWT_IF_KEY_AUTO			"auto"
+#define FWT_IF_KEY_MANUAL		"manual"
+#define FWT_IF_KEY_NODE			"node"
+#define FWT_IF_KEY_4ADDR		"4addr"
+#define FWT_IF_KEY_HELP			"help"
+#define FWT_IF_KEY_DEBUG		"debug"
+#define FWT_IF_KEY_AGEING		"ageing"
 
 /* additional keywords */
-#define FWT_IF_KEY_PORT		"port"
-#define FWT_IF_KEY_ENABLE	"enable"
+#define FWT_IF_KEY_PORT			"port"
+#define FWT_IF_KEY_ENABLE		"enable"
+#define FWT_IF_KEY_MAC			"mac"
 
 #define PRINT_FWT(a...)		do { if (g_debug) { printk(a); } } while(0)
 
 const char *g_port_names[] = TOPAZ_TQE_PORT_NAMES;
-
 static fwt_if_sw_cmd_hook g_fwt_if_cmd_hook = NULL;
+static char *fwt_if_outbuf = NULL;
+static spinlock_t fwt_if_outbuf_lock;	/* synchronise use of fwt_if_outbuf */
 
 /* set command keywords */
-static char* str_cmd[FWT_IF_MAX_CMD] = {
+static char *fwt_str_cmd[FWT_IF_MAX_CMD] = {
 		FWT_IF_KEY_CLEAR,
 		FWT_IF_KEY_ON,
 		FWT_IF_KEY_OFF,
 		FWT_IF_KEY_PRINT,
+		FWT_IF_KEY_ADD_STATIC_MC,
+		FWT_IF_KEY_DEL_STATIC_MC,
+		FWT_IF_KEY_GET_MC_LIST,
 		FWT_IF_KEY_ADD,
 		FWT_IF_KEY_DELETE,
 		FWT_IF_KEY_AUTO,
@@ -93,15 +101,17 @@
 		FWT_IF_KEY_4ADDR,
 		FWT_IF_KEY_DEBUG,
 		FWT_IF_KEY_HELP,
-		FWT_IF_KEY_AGEING
+		FWT_IF_KEY_AGEING,
 };
 
 /* value of extracted keywords from user */
 typedef	enum {
 	FWT_IF_ID,
+	FWT_IF_MAC,
 	FWT_IF_PORT,
 	FWT_IF_NODE,
 	FWT_IF_ENABLE,
+	FWT_IF_VALUE,
 	FWT_IF_MAX_PARAM,
 } fwt_if_usr_str;
 
@@ -157,7 +167,20 @@
 	}
 
 	switch (cmd) {
+	case FWT_IF_MAC:
+		id = var;
+		mac = id->mac_be;
+		if (sscanf(str, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx",
+					&mac[0], &mac[1], &mac[2],
+					&mac[3], &mac[4], &mac[5]) != ETH_ALEN) {
+			return -EINVAL;
+		}
+		break;
 	case FWT_IF_ID:
+		/*
+		 * This keyword takes a MAC address or an IPv4 or IPv6 address. If it is a multicast
+		 * IP address it is also converted into a multicast layer 2 (MAC) address.
+		 */
 		id = var;
 		ip6 = id->ip.u.ip6.in6_u.u6_addr16;
 		ip4 = (void *) &id->ip.u.ip4;
@@ -168,7 +191,8 @@
 					&ip6[0], &ip6[1], &ip6[2], &ip6[3],
 					&ip6[4], &ip6[5], &ip6[6], &ip6[7]) == 8) {
 			id->ip.proto = htons(ETHERTYPE_IPV6);
-			fwt_mcast_to_mac(mac, &id->ip);
+			if (IPUTIL_V6_ADDR_MULTICAST(*ip6))
+				fwt_mcast_to_mac(mac, &id->ip);
 		} else if (sscanf(str, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx",
 					&mac[0], &mac[1], &mac[2],
 					&mac[3], &mac[4], &mac[5]) == ETH_ALEN) {
@@ -176,7 +200,8 @@
 					&ip4[0], &ip4[1], &ip4[2],
 					&ip4[3]) == FWT_DB_IPV4_SIZE) {
 			id->ip.proto = htons(ETHERTYPE_IP);
-			fwt_mcast_to_mac(mac, &id->ip);
+			if (IPUTIL_V4_ADDR_MULTICAST(*ip4))
+				fwt_mcast_to_mac(mac, &id->ip);
 		} else {
 			return -EINVAL;
 		}
@@ -214,12 +239,17 @@
 			return -EINVAL;
 		}
 		break;
+	case FWT_IF_VALUE:
+		sscanf(str, "%d", &param);
+		*((int32_t*)var) = param;
+		break;
 	default:
 		return -EINVAL;
 	}
 
 	return 1;
 }
+
 /*
  * Get the current value that attached to keyword definition
  * @param str: the string to find keyword
@@ -247,10 +277,19 @@
 	printk("on           enable the FWT interface\n");
 	printk("off          disable the FWT interface\n");
 	printk("print        print the contents of the SW FWT\n");
+	printk("add_static_mc <ip> mac <mac>\n");
+	printk("             add a static multicast entry\n");
+	printk("del_static_mc <ip> mac <mac>\n");
+	printk("             delete a static multicast entry\n");
+	printk("get_mc_list  return a list of multicast addresses\n");
 	printk("add <mac> port <port> node <node>\n");
-	printk("             add an entry to the FWT\n");
-	printk("               e.g. add 01:ab:ac:34:67:20 port wmac node 3\n");
+	printk("             add a unicast entry to the FWT\n");
+	printk("             e.g. add 01:ab:ac:34:67:20 port wmac node 3\n");
+	printk("add <ip> port <port> node <node>\n");
+	printk("             add a multicast entry to the FWT\n");
+	printk("             e.g. add 224.1.2.3 port wmac node 3\n");
 	printk("del <mac>    delete a table entry by MAC address\n");
+	printk("del <ip>     delete a table entry by IP address\n");
 	printk("auto         enable automatic generation of table entries by the bridge module\n");
 	printk("manual       enable manual-only creation of table entries, with no restrictions\n");
 	printk("4addr <mac> enable {0|1}\n");
@@ -345,7 +384,6 @@
 	char *str_val = NULL;
 	struct fwt_if_common data;
 
-	/* Clear node array */
 	memset(data.node, FWT_DB_INVALID_NODE, sizeof(data.node));
 
 	/* ADD example: "add ab:34:be:af:34:42 port lhost node 2:4:3" */
@@ -374,6 +412,123 @@
 
 	return 1;
 }
+
+static int fwt_if_apply_user_add_static_mc(char **words, uint8_t word_count)
+{
+	int rc;
+	char *str_val = NULL;
+	struct fwt_if_common data;
+	struct fwt_if_id *id = &data.id;
+
+	memset(data.node, FWT_DB_INVALID_NODE, sizeof(data.node));
+
+	/* ADD_STATIC_MC example: "add_static_mc 224.51.2.3 mac ab:34:be:af:34:42*/
+	str_val = fwt_if_get_val_from_keyword(FWT_IF_KEY_ADD_STATIC_MC, words, word_count);
+	rc = fwt_if_extract_parm(str_val, FWT_IF_ID, id);
+	if (FWT_IF_ERROR(rc))
+		return rc;
+
+	str_val = fwt_if_get_val_from_keyword(FWT_IF_KEY_MAC, words, word_count);
+	rc = fwt_if_extract_parm(str_val, FWT_IF_MAC, id);
+	if (FWT_IF_ERROR(rc))
+		return rc;
+
+	switch (id->ip.proto) {
+	case htons(ETHERTYPE_IP):
+		if (!IPUTIL_V4_ADDR_MULTICAST(id->ip.u.ip4))
+			return -EINVAL;
+		break;
+	case htons(ETHERTYPE_IPV6):
+		if (!IPUTIL_V6_ADDR_MULTICAST(*id->ip.u.ip6.in6_u.u6_addr16))
+			return -EINVAL;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	rc = fwt_if_set_sw_cmd(FWT_IF_CMD_ADD_STATIC_MC, &data);
+	if (FWT_IF_ERROR(rc))
+		return rc;
+
+	return 1;
+}
+
+static int fwt_if_apply_user_del_static_mc(char **words, uint8_t word_count)
+{
+	int rc;
+	char *str_val = NULL;
+	struct fwt_if_common data;
+	struct fwt_if_id *id = &data.id;
+
+	memset(data.node, FWT_DB_INVALID_NODE, sizeof(data.node));
+
+	/* DEL_STATIC_MC example: "del_static_mc 224.51.2.3 mac ab:34:be:af:34:42*/
+	str_val = fwt_if_get_val_from_keyword(FWT_IF_KEY_DEL_STATIC_MC, words, word_count);
+	rc = fwt_if_extract_parm(str_val, FWT_IF_ID, id);
+	if (FWT_IF_ERROR(rc))
+		return rc;
+
+	str_val = fwt_if_get_val_from_keyword(FWT_IF_KEY_MAC, words, word_count);
+	rc = fwt_if_extract_parm(str_val, FWT_IF_MAC, id);
+	if (FWT_IF_ERROR(rc))
+		return rc;
+
+	switch (id->ip.proto) {
+	case htons(ETHERTYPE_IP):
+		if (!IPUTIL_V4_ADDR_MULTICAST(id->ip.u.ip4))
+			return -EINVAL;
+		break;
+	case htons(ETHERTYPE_IPV6):
+		if (!IPUTIL_V6_ADDR_MULTICAST(*id->ip.u.ip6.in6_u.u6_addr16))
+			return -EINVAL;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	rc = fwt_if_set_sw_cmd(FWT_IF_CMD_DEL_STATIC_MC, &data);
+	if (FWT_IF_ERROR(rc))
+		return rc;
+
+	return 1;
+}
+
+#define FWT_IF_OUTBUF_LEN_MIN	32
+#define FWT_IF_OUTBUF_LEN_MAX	8192
+
+/* Must be called with the fwt_if_outbuf_lock held */
+static int fwt_if_get_mc_list(char **words, uint8_t word_count)
+{
+	int rc;
+	struct fwt_if_common data;
+	char *str_val = NULL;
+
+	if (fwt_if_outbuf) {
+		/* a command was issued previously but the output was not retrieved */
+		kfree(fwt_if_outbuf);
+		fwt_if_outbuf = NULL;
+	}
+
+	str_val = fwt_if_get_val_from_keyword(FWT_IF_KEY_GET_MC_LIST, words, word_count);
+	rc = fwt_if_extract_parm(str_val, FWT_IF_VALUE, &data.param);
+	if (FWT_IF_ERROR(rc))
+		return rc;
+
+	if (data.param <= FWT_IF_OUTBUF_LEN_MIN || data.param > FWT_IF_OUTBUF_LEN_MAX)
+		return -EINVAL;
+
+	fwt_if_outbuf = kmalloc(data.param, GFP_KERNEL);
+	if (!fwt_if_outbuf)
+		return -ENOMEM;
+
+	memset(fwt_if_outbuf, 0, data.param);
+	data.extra = fwt_if_outbuf;
+
+	fwt_if_set_sw_cmd(FWT_IF_CMD_GET_MC_LIST, &data);
+
+	return 1;
+}
+
 /* Apply user command.
  * User command can control the FWT interface.
  * @param cmd_num: command number
@@ -386,9 +541,9 @@
 	int rc = -EINVAL;
 	struct fwt_if_common data;
 
-	if ((word_count == 0) || (!words)) {
+	if ((word_count == 0) || (!words))
 		goto cmd_failure;
-	}
+
 	memset(&data, 0, sizeof(data));
 
 	switch(cmd_num) {
@@ -400,6 +555,11 @@
 		case FWT_IF_CMD_MANUAL:
 			rc = fwt_if_set_sw_cmd(cmd_num, &data);
 			break;
+		case FWT_IF_CMD_GET_MC_LIST:
+			spin_lock(&fwt_if_outbuf_lock);
+			rc = fwt_if_get_mc_list(words, word_count);
+			spin_unlock(&fwt_if_outbuf_lock);
+			break;
 		case FWT_IF_CMD_ADD:
 			rc = fwt_if_apply_user_add_entry(words, word_count);
 			break;
@@ -407,6 +567,12 @@
 			/* Delete example: "del ab:34:be:af:34:42" */
 			rc = fwt_if_apply_user_del_entry(words, word_count);
 			break;
+		case FWT_IF_CMD_ADD_STATIC_MC:
+			rc = fwt_if_apply_user_add_static_mc(words, word_count);
+			break;
+		case FWT_IF_CMD_DEL_STATIC_MC:
+			rc = fwt_if_apply_user_del_static_mc(words, word_count);
+			break;
 		case FWT_IF_CMD_4ADDR:
 			rc = fwt_if_apply_user_4addr_mode(words, word_count);
 			break;
@@ -425,21 +591,43 @@
 		break;
 	}
 
-	if (FWT_IF_ERROR(rc)) {
+	if (FWT_IF_ERROR(rc))
 		goto cmd_failure;
-	}
 
 	return 1;
 
 cmd_failure:
-	if (words)
-		printk(KERN_INFO "Failed to parse command:%s, word count:%d\n", *words, word_count);
+	if (word_count)
+		printk(KERN_INFO "Failed to parse command: %s\n", *words);
 	else
-		printk(KERN_INFO "Failed to parse command:(NULL)\n");
+		fwt_if_apply_user_print_help();
 
 	return -EPERM;
 }
 
+static int fwt_if_read_proc(char *page, char **start, off_t off, int count, int *eof, void *_unused)
+{
+	int printed = 0;
+
+	spin_lock(&fwt_if_outbuf_lock);
+
+	if (fwt_if_outbuf) {
+		printed = strnlen(fwt_if_outbuf, count - 1);
+		strncpy(page, fwt_if_outbuf, printed);
+		kfree(fwt_if_outbuf);
+		fwt_if_outbuf = NULL;
+	} else {
+		page[0] = '\0';
+	}
+
+	spin_unlock(&fwt_if_outbuf_lock);
+
+	page[count - 1] = '\0';
+	*eof = 1;
+
+	return printed;
+}
+
 static int fwt_if_write_proc(struct file *file, const char __user *buffer,
 		unsigned long count, void *_unused)
 {
@@ -461,19 +649,14 @@
 		goto out;
 	}
 
-	/* Set null at last byte, note that count already gives +1 byte count*/
 	cmd[count - 1] = '\0';
 
 	word_count = fwt_if_split_words(words, cmd);
 	for (i = 0; i < FWT_IF_MAX_CMD; i++, cmd_num++) {
-		/* Extract command from first word */
-		if (strcmp(words[0], str_cmd[i]) == 0) {
-			printk(KERN_INFO"FWT user command:%s  \n", str_cmd[i]);
+		if (strcmp(words[0], fwt_str_cmd[i]) == 0)
 			break;
-		}
 	}
 
-	/* Exclude softirqs whilst manipulating forwarding table */
 	local_bh_disable();
 
 	rc = fwt_if_apply_user_command(cmd_num, words, word_count);
@@ -504,12 +687,12 @@
 static int __init topaz_fwt_if_create_proc(void)
 {
 	struct proc_dir_entry *entry = create_proc_entry(PROC_NAME, 0600, NULL);
-	if (!entry) {
+
+	if (!entry)
 		return -ENOMEM;
-	}
 
 	entry->write_proc = fwt_if_write_proc;
-	entry->read_proc = NULL;
+	entry->read_proc = fwt_if_read_proc;
 
 	return 0;
 }
@@ -517,10 +700,12 @@
 static int __init fwt_if_init(void)
 {
 	int rc;
+
 	rc = topaz_fwt_if_create_proc();
-	if (rc) {
+	if (rc)
 		return rc;
-	}
+
+	spin_lock_init(&fwt_if_outbuf_lock);
 
 	return 0;
 }
diff --git a/drivers/topaz/hbm.c b/drivers/topaz/hbm.c
index e027425..25c9260 100644
--- a/drivers/topaz/hbm.c
+++ b/drivers/topaz/hbm.c
@@ -35,9 +35,6 @@
 
 #include <common/queue.h>
 
-#ifndef TOPAZ_PLATFORM
-	#include <qtn/ruby_sbm.h>
-#endif
 #include <qtn/topaz_hbm.h>
 #include <qtn/dmautil.h>
 
@@ -155,7 +152,6 @@
 	uint32_t wr_ptr;
 	uint32_t rd_ptr;
 
-#ifdef TOPAZ_PLATFORM
 	int req_rel_diff = 0;
 	int req_rel_perpool_diff[TOPAZ_HBM_POOL_COUNT];
 	int master, pool;
@@ -205,14 +201,6 @@
 		p += sprintf(p, "pool %d req rel diff %d, available %u\n", pool, req_rel_perpool_diff[pool],
 				topaz_hbm_pool_available(pool));
 	}
-#else	/* ruby sbm */
-	int i;
-	for (i = 0; i < ARRAY_SIZE(sbm_pools); i++) {
-		struct sbm_pool *pool = &sbm_pools[i];
-		p += sprintf(p, "sbm pool %d readp %u writep %u count %lu ptr pool %p\n",
-				i, pool->read, pool->write, BIT(pool->ptr_s), pool->ptrs);
-	}
-#endif
 
 	*eof = 1;
 	return p - page;
@@ -287,10 +275,6 @@
 			payload_size, payload_count);
 }
 
-#ifndef TOPAZ_PLATFORM
-struct sbm_pool sbm_pools[4];
-#endif
-
 static int g_pools_inited = 0;
 
 static void topaz_hbm_init_payload_pools(void)
@@ -529,6 +513,8 @@
 	void *buf_bus = (void *) virt_to_bus(skb->head);
 	const int8_t pool = topaz_hbm_payload_get_free_pool_bus(buf_bus);
 
+	buf_bus = topaz_hbm_payload_store_align_bus(buf_bus,
+		topaz_hbm_payload_get_pool_bus(buf_bus), 0);
 	kmem_cache_free(shinfo_cache, skb_shinfo(skb));
 
 	if (topaz_hbm_pool_valid(pool)) {
@@ -560,7 +546,7 @@
 
 #define QTN_HBM_MAX_FRAME_LEN	12000	/* 12000 is over maximum vht frame size,
 					and there is no rx frame whose size is over 12000 */
-struct sk_buff *_topaz_hbm_attach_skb(void *buf_virt, int8_t pool
+struct sk_buff *_topaz_hbm_attach_skb(void *buf_virt, int8_t pool, int inv, uint8_t headroom
 		QTN_SKB_ALLOC_TRACE_ARGS)
 {
 	struct sk_buff *skb;
@@ -568,6 +554,12 @@
 	uint32_t buf_size;
 	uint8_t *buf_head;
 
+	if (unlikely(headroom > TOPAZ_HBM_PAYLOAD_HEADROOM)) {
+		printk(KERN_WARNING "specified headroom(%u) should be smaller than %u\n",
+			headroom, TOPAZ_HBM_PAYLOAD_HEADROOM);
+		return NULL;
+	}
+
 	shinfo = kmem_cache_alloc(shinfo_cache, GFP_ATOMIC);
 	if (!shinfo) {
 		return NULL;
@@ -584,10 +576,11 @@
 	 * if we set skb buffer size as 17K
 	 */
 	buf_size = min((int)topaz_hbm_pool_buf_max_size(pool), QTN_HBM_MAX_FRAME_LEN);
-	buf_head = topaz_hbm_payload_store_align_virt(buf_virt, pool, 0);
+	buf_head = topaz_hbm_payload_store_align_virt(buf_virt, pool, 0) - headroom;
 
 	/* invalidate all packet dcache before passing to the kernel */
-	inv_dcache_sizerange_safe(buf_head, buf_size);
+	if (inv)
+		inv_dcache_sizerange_safe(buf_head, buf_size);
 
 	__alloc_skb_init(skb, shinfo, buf_head,
 			buf_size, 0, &topaz_hbm_skb_allocator
@@ -1119,8 +1112,8 @@
 		hm->unflow_flag = 0;
 	} else {
 		if ((hm->wmac_pl.pool_depleted_cnt > HBM_BUF_DEPLETION_TH) ||
-			(hm->wmac_pl.pool_depleted_cnt > HBM_BUF_DEPLETION_TH)) {
-			panic("HBM pool is depleted, wmac pool:%d, emac rx poll:%d\n",
+			(hm->emac_pl.pool_depleted_cnt > HBM_BUF_DEPLETION_TH)) {
+			panic("HBM pool is depleted, wmac pool:%u, emac rx pool:%u\n",
 				topaz_hbm_pool_available(TOPAZ_HBM_BUF_WMAC_RX_POOL),
 				topaz_hbm_pool_available(TOPAZ_HBM_BUF_EMAC_RX_POOL));
 		}
diff --git a/drivers/topaz/switch_emac.c b/drivers/topaz/switch_emac.c
index 073c3b0..bd5f5c7 100644
--- a/drivers/topaz/switch_emac.c
+++ b/drivers/topaz/switch_emac.c
@@ -41,6 +41,11 @@
 #include <qtn/qtn_buffers.h>
 #include <qtn/qdrv_sch.h>
 #include <qtn/qtn_wmm_ac.h>
+#include <qtn/qtn_vlan.h>
+#include <qtn/hardware_revision.h>
+#include <qtn/shared_params.h>
+
+#include <asm/board/pm.h>
 
 #ifdef CONFIG_QVSP
 #include "qtn/qvsp.h"
@@ -70,6 +75,10 @@
 static int dscp_value         = 0;
 static int emac_xflow_disable = 0;
 
+#define EMAC_WBSP_CTRL_DISABLED	0
+#define EMAC_WBSP_CTRL_ENABLED	1
+#define EMAC_WBSP_CTRL_SWAPPED	2
+static int emac_wbsp_ctrl = EMAC_WBSP_CTRL_DISABLED;
 
 static const struct emac_port_info iflist[] = {
 	{
@@ -89,6 +98,9 @@
 };
 
 static struct net_device *topaz_emacs[ARRAY_SIZE(iflist)];
+static int topaz_emac_on[ARRAY_SIZE(iflist)];
+static unsigned int topaz_emac_prev_two_connected;
+static struct delayed_work topaz_emac_dual_emac_work;
 
 struct topaz_emac_priv {
 	struct emac_common com;
@@ -99,6 +111,18 @@
 module_param(bonding, int, 0644);
 MODULE_PARM_DESC(bonding, "using bonding for emac0 and emac1");
 
+static inline bool is_qtn_oui_packet(unsigned char *pkt_header)
+{
+	if ((pkt_header[0] == (QTN_OUI & 0xFF)) &&
+		(pkt_header[1] == ((QTN_OUI >> 8) & 0xFF)) &&
+		(pkt_header[2] == ((QTN_OUI >> 16) & 0xFF)) &&
+		(pkt_header[3] >= QTN_OUIE_WIFI_CONTROL_MIN) &&
+		(pkt_header[3] <= QTN_OUIE_WIFI_CONTROL_MAX))
+		return true;
+	else
+		return false;
+}
+
 static void topaz_emac_start(struct net_device *dev)
 {
 	struct topaz_emac_priv *priv = netdev_priv(dev);
@@ -270,7 +294,7 @@
 
 	emac_lib_set_rx_mode(dev);
 	topaz_emac_start(dev);
-	emac_lib_pm_add_notifier(dev);
+	emac_lib_pm_emac_add_notifier(dev);
 	topaz_emac_enable_ints(dev);
 	emac_lib_phy_start(dev);
 	netif_start_queue(dev);
@@ -283,7 +307,7 @@
 static int topaz_emac_ndo_stop(struct net_device *dev)
 {
 	topaz_emac_disable_ints(dev);
-	emac_lib_pm_remove_notifier(dev);
+	emac_lib_pm_emac_remove_notifier(dev);
 	netif_stop_queue(dev);
 	emac_lib_phy_stop(dev);
 	topaz_emac_stop(dev);
@@ -297,7 +321,7 @@
 	union topaz_tqe_cpuif_ppctl ctl;
 	int8_t pool = TOPAZ_HBM_EMAC_TX_DONE_POOL;
 	int interface;
-
+	struct sk_buff *skb2;
 
 	for (interface = 0; interface < EMAC_MAX_INTERFACE; interface++){
 		/* In order to drop a packet, the following conditions has to be met:
@@ -306,17 +330,48 @@
 		 * skb->skb_iif the interface is Rx from emac0 or emac1
 		 */
 
-		if ((emac_xflow_disable) && (skb->skb_iif) && 
+		if ((emac_xflow_disable) && (skb->skb_iif) &&
 		    ((skb->skb_iif) == eth_ifindex[interface])){
 			dev_kfree_skb(skb);
 			return NETDEV_TX_OK;
 		}
         }
+
+	/*
+	 * restore VLAN tag to packet if needed
+	 */
+	skb2 = switch_vlan_restore_tag(skb, 1);
+	if (!skb2) {
+		printk(KERN_WARNING "failed to add VLAN tag back to header\n");
+		return NETDEV_TX_OK;
+	}
+
+	/*
+	 * VLAN egress check, for EMAC ports
+	 */
+	if (vlan_enabled
+			&& !switch_vlan_is_local(skb2->data)
+			&& !qtn_vlan_egress(vport_tbl_lhost[priv->tqe_port], 0, skb2->data)) {
+		dev_kfree_skb(skb2);
+		return NETDEV_TX_OK;
+	}
+
+	/* drop any WBSP control packet towards emac1 (Ethernet type 88b7)
+	Quantenna OUI (00 26 86) is located at data[14-16] followed by 1-byte type field [17] */
+	if ((emac_wbsp_ctrl == EMAC_WBSP_CTRL_ENABLED && dev->ifindex == eth_ifindex[1]) ||
+		(emac_wbsp_ctrl == EMAC_WBSP_CTRL_SWAPPED && dev->ifindex == eth_ifindex[0])) {
+		if (skb2->protocol == __constant_htons(ETHERTYPE_802A) &&
+			skb2->len > 17 && is_qtn_oui_packet(&skb2->data[14])) {
+			dev_kfree_skb(skb2);
+			return NETDEV_TX_OK;
+		}
+	}
+
 	topaz_tqe_cpuif_ppctl_init(&ctl,
 			priv->tqe_port, NULL, 1, 0,
 			0, 1, pool, 1, 0);
 
-	return tqe_tx(&ctl, skb);
+	return tqe_tx(&ctl, skb2);
 }
 
 static const struct net_device_ops topaz_emac_ndo = {
@@ -589,6 +644,37 @@
 	return mac_be[5] % 2;
 }
 
+static ssize_t topaz_emacx_wbsp_ctrl_sysfs_show(struct device *dev, struct device_attribute *attr,
+						char *buff)
+{
+	int count = 0;
+
+	count += sprintf(buff + count, "%d\n", emac_wbsp_ctrl);
+
+	return count;
+}
+
+static ssize_t topaz_emacx_wbsp_ctrl_sysfs_update(struct device *dev, struct device_attribute *attr,
+                const char *buf, size_t count)
+{
+        if (buf[0] == '0') {
+		emac_wbsp_ctrl = EMAC_WBSP_CTRL_DISABLED;
+        } else if (buf[0] == '1') {
+		emac_wbsp_ctrl = EMAC_WBSP_CTRL_ENABLED;
+	} else if (buf[0] == '2') {
+		emac_wbsp_ctrl = EMAC_WBSP_CTRL_SWAPPED;
+	}
+        return count;
+}
+
+static DEVICE_ATTR(device_emacx_wbsp_ctrl, S_IRUGO | S_IWUGO,
+		topaz_emacx_wbsp_ctrl_sysfs_show, topaz_emacx_wbsp_ctrl_sysfs_update);
+
+static int topaz_emacs_wbsp_ctrl_sysfs_create(struct net_device *net_dev)
+{
+	return sysfs_create_file(&net_dev->dev.kobj, &dev_attr_device_emacx_wbsp_ctrl.attr);
+}
+
 static void topaz_emac_tqe_rx_handler(void *token,
 		const union topaz_tqe_cpuif_descr *descr,
 		struct sk_buff *skb, uint8_t *whole_frm_hdr)
@@ -597,6 +683,20 @@
 
 	skb->dev = dev;
 	skb->protocol = eth_type_trans(skb, skb->dev);
+
+	/* discard WBSP control packet coming from emac1 (Ethernet type 88b7)
+	Note that in this receive routine, header has been removed from data buffer, so
+	Quantenna OUI (00 26 86) is now located at data[0-2] followed by 1-byte type field [3] */
+	if ((emac_wbsp_ctrl == EMAC_WBSP_CTRL_ENABLED && dev->ifindex == eth_ifindex[1]) ||
+		(emac_wbsp_ctrl == EMAC_WBSP_CTRL_SWAPPED && dev->ifindex == eth_ifindex[0])) {
+		if (skb->protocol == __constant_htons(ETHERTYPE_802A) &&
+			skb->len > 3 && is_qtn_oui_packet(&skb->data[0])) {
+			dev_kfree_skb(skb);
+			return;
+		}
+	}
+
+	switch_vlan_strip_tag(skb, 0);
 	netif_receive_skb(skb);
 }
 
@@ -651,6 +751,48 @@
 	return 0;
 }
 
+static void topaz_emac_set_outport(struct net_device *ndev, uint32_t enable)
+{
+#define TOPAZ_EMAC_OUTPORT_ENABLE	1
+#define TOPAZ_EMAC_OUTPORT_DISABLE	0
+	struct emac_common *privc;
+	union topaz_emac_rxp_outport_ctrl outport;
+	unsigned long flags;
+
+	privc = netdev_priv(ndev);
+
+	local_irq_save(flags);
+	outport.raw.word0 = emac_rd(privc, TOPAZ_EMAC_RXP_OUTPORT_CTRL);
+	if (enable) {
+		outport.data.static_port_sel = TOPAZ_TQE_LHOST_PORT;
+		outport.data.static_mode_en = TOPAZ_EMAC_OUTPORT_ENABLE;
+	} else {
+		outport.data.static_port_sel = 0;
+		outport.data.static_mode_en = TOPAZ_EMAC_OUTPORT_DISABLE;
+	}
+	emac_wr(privc, TOPAZ_EMAC_RXP_OUTPORT_CTRL, outport.raw.word0);
+	local_irq_restore(flags);
+}
+
+void topaz_emac_to_lhost(uint32_t enable)
+{
+	struct net_device *dev;
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(iflist); i++) {
+		dev = topaz_emacs[i];
+		if (dev)
+			topaz_emac_set_outport(dev, enable);
+	}
+}
+EXPORT_SYMBOL(topaz_emac_to_lhost);
+
+int topaz_emac_get_bonding()
+{
+	return bonding;
+}
+EXPORT_SYMBOL(topaz_emac_get_bonding);
+
 static inline void topaz_emac_stop_rx(void)
 {
 	struct net_device *dev;
@@ -740,6 +882,7 @@
 	struct topaz_dpi_filter_request req;
 	struct topaz_dpi_field_def field;
 
+	/* ARP */
 	memset(&req, 0, sizeof(req));
 	memset(&field, 0, sizeof(field));
 
@@ -757,6 +900,23 @@
 	field.mask = 0xffff0000;
 
         topaz_dpi_filter_add(port_num, &req);
+
+	/* 8021Q && ARP */
+	memset(&req, 0, sizeof(req));
+	memset(&field, 0, sizeof(field));
+
+	req.fields = &field;
+	req.field_count = 1;
+	req.out_port = TOPAZ_TQE_LHOST_PORT;
+
+	field.ctrl.data.enable = TOPAZ_DPI_ENABLE;
+	field.ctrl.data.anchor = TOPAZ_DPI_ANCHOR_VLAN0;
+	field.ctrl.data.cmp_op = TOPAZ_DPI_CMPOP_EQ;
+	field.ctrl.data.offset = 1;
+	field.val = (ETH_P_ARP << 16);
+	field.mask = 0xffff0000;
+
+	topaz_dpi_filter_add(port_num, &req);
 }
 
 static void __init topaz_dpi_filter_dhcp(int port_num)
@@ -920,9 +1080,16 @@
 		goto netdev_register_error;
 	}
 
+	BUG_ON(priv->tqe_port != port_num);
+
+	if (switch_alloc_vlan_dev(port_num, EMAC_VDEV_IDX(port_num), dev->ifindex) == NULL) {
+		printk(KERN_ERR "%s: switch_alloc_vlan_dev returns error\n", __FUNCTION__);
+		goto tqe_register_error;
+	}
+
 	if (tqe_port_add_handler(port->tqe_port, &topaz_emac_tqe_rx_handler, dev)) {
 		printk(KERN_ERR "%s: topaz_port_add_handler returns error\n", __FUNCTION__);
-		goto tqe_register_error;
+		goto switch_vlan_alloc_error;
 	}
 
 	/* Send EMAC through soft reset */
@@ -953,6 +1120,7 @@
 	emac_lib_phy_power_create_proc(dev);
 	emac_lib_mdio_sysfs_create(dev);
 	topaz_emac_vlan_sel_sysfs_create(dev);
+	emac_lib_phy_reg_create_proc(dev);
 
 	if (bonding) {
 		fwt_sw_register_port_remapper(port->tqe_port, topaz_emac_fwt_sw_remap_port);
@@ -972,8 +1140,12 @@
 	topaz_emac_dscp_update_sysfs_create(dev);
 	topaz_emacs_update_sysfs_create(dev);
 
+	topaz_emacs_wbsp_ctrl_sysfs_create(dev);
+
 	return dev;
 
+switch_vlan_alloc_error:
+	switch_free_vlan_dev_by_idx(EMAC_VDEV_IDX(port_num));
 tqe_register_error:
 	unregister_netdev(dev);
 netdev_register_error:
@@ -996,6 +1168,7 @@
 
 	topaz_emac_ndo_stop(dev);
 
+	emac_lib_phy_reg_remove_proc(dev);
 	topaz_emac_vlan_sel_sysfs_remove(dev);
 	emac_lib_mdio_sysfs_remove(dev);
 	emac_lib_phy_power_remove_proc(dev);
@@ -1003,6 +1176,7 @@
 
 	tqe_port_unregister(priv->tqe_port);
 	tqe_port_remove_handler(priv->tqe_port);
+	switch_free_vlan_dev_by_idx(EMAC_VDEV_IDX(privc->mac_id));
 	unregister_netdev(dev);
 
 	emac_bufs_free(dev);
@@ -1023,10 +1197,75 @@
 	writel(ctrl, TOPAZ_TQE_EMAC_TDES_1_CNTL);
 }
 
+static int topaz_emac_find_emac(const struct net_device *const dev)
+{
+	int idx = 0;
+
+	while (idx < ARRAY_SIZE(iflist)) {
+		if (topaz_emacs[idx] == dev)
+			return idx;
+		++idx;
+	}
+
+	return -1;
+}
+
+static int topaz_emacs_connected_num(void)
+{
+	int idx = 0;
+	int in_use = 0;
+
+	while (idx < ARRAY_SIZE(iflist)) {
+		if (topaz_emac_on[idx])
+			++in_use;
+		++idx;
+	}
+
+	return in_use;
+}
+
+#define TOPAZ_EMAC_LINK_CHECK_PERIOD	5
+static int topaz_emac_link_event(struct notifier_block *this, unsigned long event, void *ptr)
+{
+	unsigned int two_emacs_connected;
+	struct net_device *dev = ptr;
+	int emac_idx;
+
+	if (event != NETDEV_CHANGE) {
+		return NOTIFY_DONE;
+	}
+
+	emac_idx = topaz_emac_find_emac(dev);
+	if (emac_idx < 0)
+		return NOTIFY_DONE;
+
+	topaz_emac_on[emac_idx] = netif_carrier_ok(dev);
+
+	two_emacs_connected = (topaz_emacs_connected_num() > 1);
+	if (topaz_emac_prev_two_connected != two_emacs_connected) {
+		pm_flush_work(&topaz_emac_dual_emac_work);
+		topaz_emac_prev_two_connected = two_emacs_connected;
+		pm_queue_work(&topaz_emac_dual_emac_work, HZ * TOPAZ_EMAC_LINK_CHECK_PERIOD);
+	}
+
+	return NOTIFY_DONE;
+}
+
+void topaz_emac_work_fn(struct work_struct *work)
+{
+	emac_lib_update_link_vars(topaz_emac_prev_two_connected);
+}
+
+static struct notifier_block topaz_link_notifier = {
+	.notifier_call = topaz_emac_link_event,
+};
+
 static int __init topaz_emac_module_init(void)
 {
 	int i;
 	int found = 0;
+	int emac_cfg_p0, emac_cfg_p1;
+	int emac_phy;
 
 	if (!TOPAZ_HBM_SKB_ALLOCATOR_DEFAULT) {
 		printk(KERN_ERR "%s: switch_emac should be used with topaz hbm skb allocator only\n", __FUNCTION__);
@@ -1039,7 +1278,21 @@
 	topaz_hbm_emac_rx_pool_intr_init();
 	topaz_hbm_emac_rx_pool_uf_intr_en();
 #endif
-	emac_lib_enable(1);
+	emac_lib_board_cfg(0, &emac_cfg_p0, &emac_phy);
+	emac_lib_board_cfg(1, &emac_cfg_p1, &emac_phy);
+
+	if (_read_hardware_revision() >= HARDWARE_REVISION_TOPAZ_A2) {
+		topaz_tqe_emac_reflect_to(TOPAZ_TQE_LHOST_PORT, bonding);
+		printk("enable A2 %s\n", bonding ? "(bonded)":"(single)");
+	}
+
+	/* We only use rtl switch as PHY, do not do reset which will restore
+	 * to switch mode again. Only do so when using rtl ethernet tranceiver.
+	 */
+	if (!emac_lib_rtl_switch(emac_cfg_p0 | emac_cfg_p1)) {
+		/* Reset ext PHY. This is for bug#11906 */
+		emac_lib_enable(1);
+	}
 
 	topaz_emac_init_tqe();
 	topaz_vlan_clear_all_entries();
@@ -1047,6 +1300,7 @@
 	for (i = 0; i < ARRAY_SIZE(iflist); i++) {
 		topaz_emacs[i] = topaz_emac_init(i);
 		if (topaz_emacs[i]) {
+			topaz_emac_on[i] = netif_carrier_ok(topaz_emacs[i]);
 			found++;
 		}
 	}
@@ -1056,6 +1310,12 @@
 		free_irq(TOPAZ_IRQ_HBM, topaz_emacs);
 #endif
 		return -ENODEV;
+	} else {
+		if (found > 1) {
+			INIT_DELAYED_WORK(&topaz_emac_dual_emac_work, topaz_emac_work_fn);
+			register_netdevice_notifier(&topaz_link_notifier);
+		}
+		emac_lib_pm_save_add_notifier();
 	}
 
 	return 0;
@@ -1064,12 +1324,23 @@
 static void __exit topaz_emac_module_exit(void)
 {
 	int i;
+	int found = 0;
 
 	for (i = 0; i < ARRAY_SIZE(iflist); i++) {
 		if (topaz_emacs[i]) {
 			topaz_emac_exit(topaz_emacs[i]);
+			++found;
 		}
 	}
+
+	if (found) {
+		emac_lib_pm_save_remove_notifier();
+	}
+
+	if (found > 1) {
+		unregister_netdevice_notifier(&topaz_link_notifier);
+		pm_flush_work(&topaz_emac_dual_emac_work);
+	}
 #ifdef TOPAZ_EMAC_NULL_BUF_WR
 	free_irq(TOPAZ_IRQ_HBM, topaz_emacs);
 #endif
diff --git a/drivers/topaz/switch_tqe.c b/drivers/topaz/switch_tqe.c
index 74b5a8a..96a9275 100644
--- a/drivers/topaz/switch_tqe.c
+++ b/drivers/topaz/switch_tqe.c
@@ -20,6 +20,7 @@
 #include <linux/module.h>
 #include <linux/proc_fs.h>
 #include <linux/io.h>
+#include <linux/kernel.h>
 
 #include <linux/netdevice.h>
 #include <linux/etherdevice.h>
@@ -44,6 +45,7 @@
 #include <qtn/qtn_wowlan.h>
 #include <qtn/iputil.h>
 #include <qtn/mproc_sync.h>
+#include <qtn/qtn_vlan.h>
 
 int g_dscp_flag = 0;
 int g_dscp_value[2];
@@ -51,6 +53,10 @@
 uint16_t g_wowlan_match_type = 0;
 uint16_t g_wowlan_l2_ether_type = 0x0842;
 uint16_t g_wowlan_l3_udp_port = 0xffff;
+uint8_t g_l2_ext_filter = 0;
+uint8_t g_l2_ext_filter_port = TOPAZ_TQE_NUM_PORTS;
+EXPORT_SYMBOL(g_l2_ext_filter);
+EXPORT_SYMBOL(g_l2_ext_filter_port);
 EXPORT_SYMBOL(g_wowlan_host_state);
 EXPORT_SYMBOL(g_wowlan_match_type);
 EXPORT_SYMBOL(g_wowlan_l2_ether_type);
@@ -73,6 +79,11 @@
 static tqe_fwt_get_mcast_hook g_tqe_fwt_get_mcast_hook = NULL;
 static tqe_fwt_get_mcast_ff_hook g_tqe_fwt_get_mcast_ff_hook = NULL;
 static tqe_fwt_get_ucast_hook g_tqe_fwt_get_ucast_hook = NULL;
+static tqe_fwt_false_miss_hook g_tqe_fwt_false_miss_hook = NULL;
+static tqe_fwt_get_from_mac_hook g_tqe_fwt_get_from_mac_hook = NULL;
+
+static tqe_mac_reserved_hook g_tqe_mac_reserved_hook = NULL;
+static inline void __sram_text tqe_rx_pkt_drop(const union topaz_tqe_cpuif_descr *desc);
 
 static struct {
 	tqe_port_handler handler;
@@ -232,7 +243,7 @@
 		return 1;
 
 	prtcnt = 0;
-	while (_qtn_mproc_3way_sem_down(TOPAZ_MPROC_TQE_SEM_LHOST) == 0) {
+	while (_qtn_mproc_3way_tqe_sem_down(TOPAZ_MPROC_TQE_SEM_LHOST) == 0) {
 		if ((prtcnt & 0xff) == 0)
 			printk("%s line %d fail to get tqe semaphore\n", funcname, linenum);
 		prtcnt++;
@@ -248,10 +259,10 @@
 	if (tqe_sem_en == 0)
 		return 1;
 
-	if (_qtn_mproc_3way_sem_up(TOPAZ_MPROC_TQE_SEM_LHOST)) {
+	if (_qtn_mproc_3way_tqe_sem_up(TOPAZ_MPROC_TQE_SEM_LHOST)) {
 		return 1;
 	} else {
-		panic("switch tqe fail to relese HW semaphore\n");
+		WARN_ONCE(1, "%s failed to relese HW semaphore\n", __func__);
 		return 0;
 	}
 }
@@ -348,6 +359,19 @@
 	const uint16_t misc_user = 0;
 	void *queue = token2;
 	uint8_t tqe_free = queue ? 0 : 1;
+	struct qtn_vlan_dev *vdev;
+
+	/*
+	 * VLAN egress check -- multicast forwarding
+	 * for out_port==WMAC, AuC handles egress
+	 */
+	if (vlan_enabled && TOPAZ_TQE_PORT_IS_EMAC(port)) {
+		vdev = vport_tbl_lhost[port];
+		if (!qtn_vlan_egress(vdev, 0, bus_to_virt((uintptr_t)desc->data.pkt))) {
+			tqe_rx_pkt_drop(desc);
+			return;
+		}
+	}
 
 	topaz_tqe_cpuif_ppctl_init(&ppctl,
 			port, &node, 1, tid,
@@ -447,6 +471,27 @@
 	return 0;
 }
 
+inline
+const uint16_t *
+tqe_rx_ether_type_skip_vlan(const struct ether_header *eh, uint32_t len)
+{
+	const uint16_t *ether_type = &eh->ether_type;
+
+	if (len < sizeof(struct ether_header)) {
+		return NULL;
+	}
+
+	while(qtn_ether_type_is_vlan(*ether_type)) {
+		if (len < sizeof(struct ether_header) + VLAN_HLEN) {
+			return NULL;
+		}
+		ether_type += VLAN_HLEN / sizeof(*ether_type);
+		len -= VLAN_HLEN;
+	}
+
+	return ether_type;
+}
+
 int __sram_text tqe_rx_multicast(void *congest_queue, const union topaz_tqe_cpuif_descr *desc)
 {
 	int timeout;
@@ -456,21 +501,27 @@
 	const enum topaz_tqe_port in_port = desc->data.in_port;
 	const void *ipaddr = NULL;
 	uint8_t tid = 0;
-	const uint16_t *ether_type = &eh->ether_type;
+	const uint16_t *ether_type = tqe_rx_ether_type_skip_vlan(eh, desc->data.length);
 	const void *iphdr = NULL;
 	uint8_t vlan_index;
 	uint8_t in_node = 0;
 	uint32_t header_access_bytes = 0;
+	uint32_t ether_payload_length = 0;
+	uint8_t false_miss = 0;
 
-	while (*ether_type == __constant_htons(ETH_P_8021Q))
-		ether_type += 2;
+	if (unlikely(!ether_type)) {
+		printk(KERN_WARNING "%s: malformed packet in_port %u\n", __FUNCTION__, in_port);
+		return 0;
+	}
 
 	iphdr = ether_type + 1;
+	ether_payload_length = desc->data.length - ((char *)iphdr - (char *)eh);
 	header_access_bytes = iphdr - (const void *)eh;
 
 	/* FIXME: this won't work for 802.3 frames */
 	if (*ether_type == __constant_htons(ETH_P_IP)
-			&& iputil_mac_is_v4_multicast(eh->ether_dhost)) {
+			&& iputil_mac_is_v4_multicast(eh->ether_dhost)
+			&& (ether_payload_length >= sizeof(struct qtn_ipv4))) {
 		const struct qtn_ipv4 *ipv4 = (const struct qtn_ipv4 *)iphdr;
 		/* do not accelerate IGMP */
 		if (ipv4->proto == QTN_IP_PROTO_IGMP) {
@@ -481,7 +532,8 @@
 		/* Option field doesn't take into account because they are not accessed */
 		header_access_bytes += sizeof (struct qtn_ipv4);
 	} else if (*ether_type == __constant_htons(ETH_P_IPV6)
-			&& iputil_mac_is_v6_multicast(eh->ether_dhost)) {
+			&& iputil_mac_is_v6_multicast(eh->ether_dhost)
+			&& (ether_payload_length >= sizeof(struct qtn_ipv6))) {
 		const struct qtn_ipv6 *ipv6 = (const struct qtn_ipv6 *)iphdr;
 		ipaddr = &ipv6->dstip;
 
@@ -490,10 +542,17 @@
 
 	if (ipaddr) {
 		topaz_tqe_vlan_gettid(desc->data.pkt, &tid, &vlan_index);
-		fwt_lu = __topaz_fwt_hw_lookup_wait_be(eh->ether_dhost, &timeout);
-		if (fwt_lu.data.valid && !timeout && g_tqe_fwt_get_mcast_hook) {
-			mcast_ent = g_tqe_fwt_get_mcast_hook(fwt_lu.data.entry_addr,
-					ipaddr, *ether_type, vlan_index);
+		fwt_lu = topaz_fwt_hw_lookup_wait_be(eh->ether_dhost, &timeout, &false_miss);
+		if (fwt_lu.data.valid && !timeout) {
+#ifndef TOPAZ_DISABLE_FWT_WAR
+			if (unlikely(false_miss && g_tqe_fwt_false_miss_hook))
+				g_tqe_fwt_false_miss_hook(fwt_lu.data.entry_addr, false_miss);
+#endif
+
+			if (g_tqe_fwt_get_mcast_hook)
+				mcast_ent = g_tqe_fwt_get_mcast_hook(fwt_lu.data.entry_addr,
+						ipaddr, *ether_type, vlan_index);
+
 			if (mcast_ent) {
 				if ((mcast_ent->flood_forward) && (in_port == TOPAZ_TQE_MUC_PORT)) {
 					in_node = tqe_rx_get_node_id(eh);
@@ -525,14 +584,11 @@
 	local_irq_restore(flags);
 }
 
-static inline int __sram_text tqe_rx_vlan_terminate(const union topaz_tqe_cpuif_descr *desc)
+void tqe_register_mac_reserved_cbk(tqe_mac_reserved_hook cbk_func)
 {
-	if (desc->data.misc_user & TQE_MISCUSER_M2L_DROP) {
-		tqe_rx_pkt_drop(desc);
-		return 1;
-	}
-	return 0;
+	g_tqe_mac_reserved_hook = cbk_func;
 }
+EXPORT_SYMBOL(tqe_register_mac_reserved_cbk);
 
 void tqe_register_ucastfwt_cbk(tqe_fwt_get_ucast_hook cbk_func)
 {
@@ -540,6 +596,12 @@
 }
 EXPORT_SYMBOL(tqe_register_ucastfwt_cbk);
 
+void tqe_register_macfwt_cbk(tqe_fwt_get_from_mac_hook cbk_func)
+{
+	 g_tqe_fwt_get_from_mac_hook = cbk_func;
+}
+EXPORT_SYMBOL(tqe_register_macfwt_cbk);
+
 static int topaz_swfwd_tqe_xmit(const fwt_db_entry *fwt_ent,
 				const union topaz_tqe_cpuif_descr *desc,
 				void *queue)
@@ -552,11 +614,24 @@
 	uint8_t portal;
 	uint8_t vlan_index;
 	uint8_t tqe_free = queue ? 0 : 1;
+	struct qtn_vlan_dev *vdev;
 
 	if (fwt_ent->out_port == TOPAZ_TQE_LHOST_PORT)
 		return 0;
 
-	if ((desc->data.in_port == TOPAZ_TQE_EMAC_0_PORT) || (desc->data.in_port == TOPAZ_TQE_EMAC_1_PORT)){
+	/*
+	 * VLAN egress check -- unicast forwarding
+	 * for out_port==WMAC, AuC handles egress
+	 */
+	if (vlan_enabled && TOPAZ_TQE_PORT_IS_EMAC(fwt_ent->out_port)) {
+		vdev = vport_tbl_lhost[fwt_ent->out_port];
+		if (!qtn_vlan_egress(vdev, 0, bus_to_virt((uintptr_t)desc->data.pkt))) {
+			tqe_rx_pkt_drop(desc);
+			return 1;
+		}
+	}
+
+	if (TOPAZ_TQE_PORT_IS_EMAC(desc->data.in_port)) {
 		if(g_dscp_flag){
 			tid = (g_dscp_value[desc->data.in_port] & 0xFF);
 		} else {
@@ -697,16 +772,25 @@
 int wowlan_magic_packet_check(const union topaz_tqe_cpuif_descr *desc)
 {
 	const struct ether_header *eh = bus_to_virt((uintptr_t) desc->data.pkt);
-	const uint16_t *ether_type = &eh->ether_type;
+	const uint16_t *ether_type = NULL;
 	const void *iphdr = NULL;
+	uint32_t ether_payload_length = 0;
 
 	if (likely(!g_wowlan_host_state) ||
 			(desc->data.in_port != TOPAZ_TQE_MUC_PORT))
 		return 0;
 
-	while (*ether_type == __constant_htons(ETH_P_8021Q))
-		ether_type += 2;
+	ether_type = tqe_rx_ether_type_skip_vlan(eh, desc->data.length);
+	if (unlikely(!ether_type)) {
+		return 0;
+	}
+
 	iphdr = (void *)(ether_type + 1);
+	ether_payload_length = desc->data.length - ((char *)iphdr - (char *)eh);
+	if ((*ether_type == __constant_htons(ETH_P_IP))
+			&& (ether_payload_length < sizeof(struct iphdr))) {
+		return 0;
+	}
 
 	return wowlan_is_magic_packet(*ether_type, eh, iphdr,
 			g_wowlan_match_type,
@@ -714,13 +798,61 @@
 			g_wowlan_l3_udp_port);
 }
 
-static int __sram_text tqe_rx_desc_handler(const struct tqe_netdev_priv *priv, const union topaz_tqe_cpuif_descr *desc)
+static int tqe_rx_l2_ext_filter_handler(union topaz_tqe_cpuif_descr *desc, struct sk_buff *skb)
+{
+	enum topaz_tqe_port in_port = desc->data.in_port;
+	const struct fwt_db_entry *fwt_ent;
+	const struct ether_header *eh = bus_to_virt((uintptr_t) desc->data.pkt);
+
+	if (in_port != g_l2_ext_filter_port)
+		return 0;
+
+	if (unlikely(!g_tqe_fwt_get_from_mac_hook))
+		return 0;
+
+	fwt_ent = g_tqe_fwt_get_from_mac_hook(eh->ether_shost);
+	if (unlikely(!fwt_ent))
+		return 0;
+
+	if (TOPAZ_TQE_PORT_IS_WMAC(fwt_ent->out_port)) {
+		/* Change the in port to prevent FWT updates */
+		desc->data.in_port = TOPAZ_TQE_MUC_PORT;
+		desc->data.misc_user = fwt_ent->out_node;
+		skb->ext_l2_filter = 1;
+		return 1;
+	}
+
+	return 0;
+}
+
+int __sram_text tqe_rx_l2_ext_filter(union topaz_tqe_cpuif_descr *desc, struct sk_buff *skb)
+{
+	if (unlikely(g_l2_ext_filter))
+		return tqe_rx_l2_ext_filter_handler(desc, skb);
+
+	return 0;
+}
+EXPORT_SYMBOL(tqe_rx_l2_ext_filter);
+
+void __sram_text tqe_rx_call_port_handler(union topaz_tqe_cpuif_descr *desc,
+		struct sk_buff *skb, uint8_t *whole_frm_hdr)
+{
+	enum topaz_tqe_port in_port = desc->data.in_port;
+
+	tqe_port_handlers[in_port].handler(tqe_port_handlers[in_port].token,
+						desc, skb, whole_frm_hdr);
+}
+EXPORT_SYMBOL(tqe_rx_call_port_handler);
+
+static int __sram_text tqe_rx_desc_handler(const struct tqe_netdev_priv *priv, union topaz_tqe_cpuif_descr *desc)
 {
 	enum topaz_tqe_port in_port = desc->data.in_port;
 	void *buf_bus_rx = desc->data.pkt;
 	void *buf_virt_rx = bus_to_virt((unsigned long) buf_bus_rx);
 	uint16_t buflen = desc->data.length;
 	const int8_t pool = topaz_hbm_payload_get_pool_bus(buf_bus_rx);
+	const struct ether_header *eh = bus_to_virt((uintptr_t) desc->data.pkt);
+	uint8_t vinfo_hdr = 0;
 
 	if (unlikely(buf_bus_rx == NULL)) {
 		if (printk_ratelimit()) {
@@ -730,6 +862,13 @@
 		return -1;
 	}
 
+	if (unlikely(buflen < ETH_HLEN)) {
+		printk(KERN_WARNING
+			"%s: buffer from TQE smaller than ethernet header, len %u, in port %u",
+							__FUNCTION__, buflen, in_port);
+		return -1;
+	}
+
 	if (unlikely(!topaz_hbm_pool_valid(pool))) {
 		printk(KERN_CRIT "%s: invalid pool buffer from TQE: 0x%p", __FUNCTION__, buf_bus_rx);
 		return -1;
@@ -748,9 +887,30 @@
 #if defined(CONFIG_ARCH_TOPAZ_SWITCH_TEST) || defined(CONFIG_ARCH_TOPAZ_SWITCH_TEST_MODULE)
 		topaz_tqe_test_ctrl(buf_virt_rx);
 #endif
-		if (likely(!wowlan_magic_packet_check(desc))) {
-			if (tqe_rx_vlan_terminate(desc))
+		if (TOPAZ_TQE_PORT_IS_EMAC(in_port)) {
+			if (vlan_enabled) {
+				struct qtn_vlan_dev *vdev = vport_tbl_lhost[in_port];
+				BUG_ON(vdev == NULL);
+
+				if (!qtn_vlan_ingress(vdev, 0,
+						buf_virt_rx, 0, 1)) {
+					tqe_rx_pkt_drop(desc);
+					return 0;
+				}
+			}
+		} else if (unlikely(((in_port == TOPAZ_TQE_WMAC_PORT) || (in_port == TOPAZ_TQE_MUC_PORT)))) {
+			if (g_tqe_mac_reserved_hook && g_tqe_mac_reserved_hook(eh->ether_shost)) {
+				tqe_rx_pkt_drop(desc);
 				return 0;
+			}
+		} else {
+			BUG_ON(1);
+		}
+
+		if (vlan_enabled)
+			vinfo_hdr = QVLAN_PKTCTRL_LEN;
+
+		if (likely(!wowlan_magic_packet_check(desc))) {
 #ifdef CONFIG_TOPAZ_PCIE_HOST
 			if (tqe_rx_multicast(NULL, desc))
 #else
@@ -775,13 +935,26 @@
 		else
 #endif
 		{
-			skb = topaz_hbm_attach_skb(buf_virt_rx, pool);
+			skb = topaz_hbm_attach_skb((uint8_t *)buf_virt_rx, pool, vinfo_hdr);
 			whole_frm_hdr = skb->head;
 		}
 		if (skb) {
+			/* attach VLAN information to skb */
 			skb_put(skb, buflen);
-			tqe_port_handlers[in_port].handler(
-				tqe_port_handlers[in_port].token, desc, skb, whole_frm_hdr);
+			if (vlan_enabled) {
+				struct qtn_vlan_pkt *pkt = qtn_vlan_get_info(skb->data);
+				if (unlikely(pkt->magic != QVLAN_PKT_MAGIC)) {
+					printk(KERN_WARNING "WARNING: pkt(%p) magic not right. 0x%04x\n", skb->data, pkt->magic);
+				} else {
+					skb->vlan_tci = pkt->vlan_info & QVLAN_MASK_VID;
+				}
+				M_FLAG_SET(skb, M_VLAN_TAGGED);
+			}
+
+			/* Frame received from external L2 filter will not have MAC header */
+			if (tqe_rx_l2_ext_filter(desc, skb))
+				whole_frm_hdr = NULL;
+			tqe_rx_call_port_handler(desc, skb, whole_frm_hdr);
 			return 0;
 		}
 
@@ -901,10 +1074,12 @@
 }
 
 void tqe_register_fwt_cbk(tqe_fwt_get_mcast_hook get_mcast_cbk_func,
-				tqe_fwt_get_mcast_ff_hook get_mcast_ff_cbk_func)
+				tqe_fwt_get_mcast_ff_hook get_mcast_ff_cbk_func,
+				tqe_fwt_false_miss_hook false_miss_func)
 {
 	g_tqe_fwt_get_mcast_hook = get_mcast_cbk_func;
 	g_tqe_fwt_get_mcast_ff_hook = get_mcast_ff_cbk_func;
+	g_tqe_fwt_false_miss_hook = false_miss_func;
 }
 EXPORT_SYMBOL(tqe_register_fwt_cbk);
 
@@ -913,8 +1088,10 @@
 	unsigned int data_len = skb->len;
 	void *buf_virt = skb->data;
 	void *buf_bus = (void *) virt_to_bus(buf_virt);
+	void *buf_virt_vlan;
 	int8_t pool = topaz_hbm_payload_get_pool_bus(buf_bus);
-	const bool hbm_can_use = topaz_hbm_pool_valid(pool) &&
+	const bool hbm_can_use = !vlan_enabled &&
+		topaz_hbm_pool_valid(pool) &&
 		(atomic_read(&skb->users) == 1) &&
 		(atomic_read(&skb_shinfo(skb)->dataref) == 1);
 
@@ -930,6 +1107,11 @@
 		void *hbm_buf_virt;
 		uintptr_t flush_start;
 		size_t flush_size;
+		int from_local = 0;
+
+		if (vlan_enabled && ppctl->data.out_port == TOPAZ_TQE_WMAC_PORT) {
+			from_local = switch_vlan_is_local(buf_virt);
+		}
 
 		if (data_len < TOPAZ_HBM_BUF_EMAC_RX_SIZE) {
 			pool = TOPAZ_HBM_BUF_EMAC_RX_POOL;
@@ -957,8 +1139,24 @@
 		memcpy(hbm_buf_virt, buf_virt, data_len);
 		buf_virt = hbm_buf_virt;
 
-		flush_start = (uintptr_t) align_buf_cache(buf_virt);
-		flush_size = align_buf_cache_size(buf_virt, data_len);
+		if (from_local) {
+			struct qtn_vlan_pkt *pkt = (struct qtn_vlan_pkt *)((uint8_t *)buf_virt - QVLAN_PKTCTRL_LEN);
+			pkt->magic = QVLAN_PKT_MAGIC;
+			pkt->vlan_info = QVLAN_SKIP_CHECK;
+
+			flush_start = (uintptr_t) align_buf_cache((uint8_t *)buf_virt - QVLAN_PKTCTRL_LEN);
+			flush_size = align_buf_cache_size((uint8_t *)buf_virt - QVLAN_PKTCTRL_LEN, data_len + QVLAN_PKTCTRL_LEN);
+		} else if (M_FLAG_ISSET(skb, M_VLAN_TAGGED)) {
+			buf_virt_vlan = qtn_vlan_get_info(buf_virt);
+			memcpy(buf_virt_vlan, (uint8_t *)qtn_vlan_get_info(skb->data),
+					QVLAN_PKTCTRL_LEN);
+			flush_start = (uintptr_t) align_buf_cache(buf_virt_vlan);
+			flush_size = align_buf_cache_size(buf_virt_vlan, data_len + QVLAN_PKTCTRL_LEN);
+		} else {
+			flush_start = (uintptr_t) align_buf_cache(buf_virt);
+			flush_size = align_buf_cache_size(buf_virt, data_len);
+		}
+
 		flush_and_inv_dcache_range(flush_start, flush_start + flush_size);
 	}
 	dev_kfree_skb(skb);
@@ -1138,6 +1336,7 @@
 	tqe_irq_enable();
 
 	device_create_file(&dev->dev, &dev_attr_dbg);
+
 	return dev;
 
 netdev_register_error:
diff --git a/drivers/topaz/switch_vlan.c b/drivers/topaz/switch_vlan.c
new file mode 100644
index 0000000..89914c3
--- /dev/null
+++ b/drivers/topaz/switch_vlan.c
@@ -0,0 +1,658 @@
+/**
+ * Copyright (c) 2015 Quantenna Communications, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ **/
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/netdevice.h>
+#include <linux/etherdevice.h>
+#include <linux/if_vlan.h>
+#include <linux/spinlock.h>
+
+#include <net80211/if_ethersubr.h>
+#include <qtn/topaz_tqe_cpuif.h>
+#include <qtn/qtn_skb_cb.h>
+#include <qtn/qtn_vlan.h>
+#include <qtn/lhost_muc_comm.h>
+#include <drivers/ruby/emac_lib.h>
+
+__sram_data uint8_t vlan_enabled;
+EXPORT_SYMBOL(vlan_enabled);
+
+__sram_data struct qtn_vlan_dev *vdev_tbl_lhost[VLAN_INTERFACE_MAX];
+EXPORT_SYMBOL(vdev_tbl_lhost);
+
+__sram_data struct qtn_vlan_dev *vdev_tbl_bus[VLAN_INTERFACE_MAX];
+EXPORT_SYMBOL(vdev_tbl_bus);
+
+__sram_data struct qtn_vlan_dev *vport_tbl_lhost[TOPAZ_TQE_NUM_PORTS];
+EXPORT_SYMBOL(vport_tbl_lhost);
+
+__sram_data struct qtn_vlan_dev *vport_tbl_bus[TOPAZ_TQE_NUM_PORTS];
+EXPORT_SYMBOL(vport_tbl_bus);
+
+struct qtn_vlan_info qtn_vlan_info;
+EXPORT_SYMBOL(qtn_vlan_info);
+
+static DEFINE_SPINLOCK(lock);
+
+#define         SWITCH_VLAN_LOCAL_INTERFACE_NAME    "br0"
+#define		SWITCH_VLAN_PROC	"topaz_vlan"
+
+static inline void __switch_vlan_add_member(struct qtn_vlan_dev *vdev, uint16_t vid)
+{
+	set_bit_a(vdev->u.member_bitmap, vid);
+}
+
+static inline void __switch_vlan_del_member(struct qtn_vlan_dev *vdev, uint16_t vid)
+{
+	clr_bit_a(vdev->u.member_bitmap, vid);
+}
+
+static inline void __switch_vlan_tag_member(struct qtn_vlan_dev *vdev, uint16_t vid)
+{
+	set_bit_a(vdev->tag_bitmap, vid);
+}
+
+static inline void __switch_vlan_untag_member(struct qtn_vlan_dev *vdev, uint16_t vid)
+{
+	clr_bit_a(vdev->tag_bitmap, vid);
+}
+
+static inline void
+switch_vlan_set_tagrx(struct qtn_vlan_info *vlan_info, uint16_t vlanid, uint8_t tagrx)
+{
+	uint32_t *tagrx_bitmap = vlan_info->vlan_tagrx_bitmap;
+	tagrx = tagrx & QVLAN_TAGRX_BITMASK;
+
+	tagrx_bitmap[qvlan_tagrx_index(vlanid)] &=
+		~(QVLAN_TAGRX_BITMASK << qvlan_tagrx_shift(vlanid));
+
+	tagrx_bitmap[qvlan_tagrx_index(vlanid)] |=
+		tagrx << (qvlan_tagrx_shift(vlanid));
+}
+
+static inline int switch_vlan_manage_tagrx(struct qtn_vlan_dev *vdev,
+		uint16_t vlanid, uint8_t tag, uint32_t member_quit)
+{
+	struct qtn_vlan_dev *other_dev;
+
+	if (vdev->port == TOPAZ_TQE_EMAC_0_PORT)
+		other_dev = vport_tbl_lhost[TOPAZ_TQE_EMAC_1_PORT];
+	else if (vdev->port == TOPAZ_TQE_EMAC_1_PORT)
+		other_dev = vport_tbl_lhost[TOPAZ_TQE_EMAC_0_PORT];
+	else if (vdev->port == TOPAZ_TQE_PCIE_PORT || vdev->port == TOPAZ_TQE_DSP_PORT) {
+		other_dev = NULL;
+	} else {
+		return qtn_vlan_get_tagrx(qtn_vlan_info.vlan_tagrx_bitmap, vlanid);
+	}
+
+	if (other_dev && !member_quit
+			&& qtn_vlan_is_member(other_dev, vlanid)
+			&& qtn_vlan_is_tagged_member(other_dev, vlanid) != !!tag) {
+		/*
+		 * NOTE: All ethernet ports should have the same tag/untag config
+		 * for one VLAN ID. This is to avoid confusion for multicast packets
+		 * destined for multiple ethernet ports.
+		 */
+		printk(KERN_INFO"Warning:port %u forced to %s VLAN %u packets\n",
+			other_dev->port, tag ? "tag" : "untag", vlanid);
+
+		if (tag)
+			__switch_vlan_tag_member(other_dev, vlanid);
+		else
+			__switch_vlan_untag_member(other_dev, vlanid);
+	} else if (member_quit) {
+		if (!other_dev || !qtn_vlan_is_member(other_dev, vlanid))
+			return QVLAN_TAGRX_UNTOUCH;
+		else
+			return qtn_vlan_get_tagrx(qtn_vlan_info.vlan_tagrx_bitmap, vlanid);
+	}
+
+	return (tag ? QVLAN_TAGRX_TAG : QVLAN_TAGRX_STRIP);
+}
+
+static void switch_vlan_add(struct qtn_vlan_dev *vdev, uint16_t vlanid, uint8_t tag)
+{
+	int tagrx;
+
+	if (!qtn_vlan_is_member(vdev, vlanid)) {
+		__switch_vlan_add_member(vdev, vlanid);
+	}
+
+	/* update tag bitmap */
+	if (tag)
+		__switch_vlan_tag_member(vdev, vlanid);
+	else
+		__switch_vlan_untag_member(vdev, vlanid);
+
+	tagrx = switch_vlan_manage_tagrx(vdev, vlanid, tag, 0);
+	switch_vlan_set_tagrx(&qtn_vlan_info, vlanid, tagrx);
+}
+
+static void switch_vlan_del(struct qtn_vlan_dev *vdev, uint16_t vlanid)
+{
+	int tagrx;
+	if (!qtn_vlan_is_member(vdev, vlanid))
+		return;
+
+	tagrx = switch_vlan_manage_tagrx(vdev, vlanid, 0, 1);
+	switch_vlan_set_tagrx(&qtn_vlan_info, vlanid, tagrx);
+
+	__switch_vlan_del_member(vdev, vlanid);
+	__switch_vlan_untag_member(vdev, vlanid);
+}
+
+struct qtn_vlan_dev *switch_alloc_vlan_dev(uint8_t port, uint8_t idx, int ifindex)
+{
+	struct qtn_vlan_dev *vdev = NULL;
+	struct qtn_vlan_user_interface *vintf = NULL;
+	dma_addr_t bus_addr, bus_addr2;
+
+	spin_lock_bh(&lock);
+
+	if (vdev_tbl_lhost[idx] != NULL)
+		goto out;
+
+	vdev = (struct qtn_vlan_dev *)dma_alloc_coherent(NULL,
+		sizeof(struct qtn_vlan_dev), &bus_addr, GFP_ATOMIC);
+	if (!vdev)
+		goto out;
+
+	memset(vdev, 0, sizeof(*vdev));
+	vdev->pvid = QVLAN_DEF_PVID;
+	vdev->bus_addr = (unsigned long)bus_addr;
+	vdev->port = port;
+	vdev->idx = idx;
+	vdev->ifindex = ifindex;
+
+	vintf = (struct qtn_vlan_user_interface *)dma_alloc_coherent(NULL,
+		sizeof(struct qtn_vlan_user_interface), &bus_addr2, GFP_ATOMIC);
+	if (!vintf)
+		goto out;
+
+	memset(vintf, 0, sizeof(*vintf));
+	vintf->bus_addr = bus_addr2;
+	vintf->mode = QVLAN_MODE_ACCESS;
+	vdev->user_data = (void *)vintf;
+
+	arc_write_uncached_32((uint32_t *)&vdev_tbl_lhost[idx], (uint32_t)vdev);
+	arc_write_uncached_32((uint32_t *)&vdev_tbl_bus[idx], (uint32_t)bus_addr);
+
+	if (qtn_vlan_port_indexable(port)) {
+		arc_write_uncached_32((uint32_t *)&vport_tbl_lhost[port], (uint32_t)vdev);
+		arc_write_uncached_32((uint32_t *)&vport_tbl_bus[port], (uint32_t)bus_addr);
+	}
+
+	switch_vlan_add(vdev, vdev->pvid, 0);
+
+	spin_unlock_bh(&lock);
+	return vdev;
+
+out:
+	if (vdev)
+		dma_free_coherent(NULL, sizeof(struct qtn_vlan_dev), vdev, (dma_addr_t)(vdev->bus_addr));
+	spin_unlock_bh(&lock);
+
+	return NULL;
+}
+EXPORT_SYMBOL(switch_alloc_vlan_dev);
+
+void switch_free_vlan_dev(struct qtn_vlan_dev *vdev)
+{
+	struct qtn_vlan_user_interface *vintf = (struct qtn_vlan_user_interface *)vdev->user_data;
+
+	spin_lock_bh(&lock);
+	/* vlan_info_tbl[info->idx] = NULL; */
+	arc_write_uncached_32((uint32_t *)&vdev_tbl_lhost[vdev->idx], (uint32_t)NULL);
+	arc_write_uncached_32((uint32_t *)&vdev_tbl_bus[vdev->idx], (uint32_t)NULL);
+
+	if (qtn_vlan_port_indexable(vdev->port)) {
+		arc_write_uncached_32((uint32_t *)&vport_tbl_lhost[vdev->idx], (uint32_t)NULL);
+		arc_write_uncached_32((uint32_t *)&vport_tbl_bus[vdev->idx], (uint32_t)NULL);
+	}
+	spin_unlock_bh(&lock);
+
+	dma_free_coherent(NULL, sizeof(struct qtn_vlan_dev), vdev, (dma_addr_t)(vdev->bus_addr));
+	dma_free_coherent(NULL, sizeof(struct qtn_vlan_user_interface), vintf, (dma_addr_t)(vintf->bus_addr));
+}
+EXPORT_SYMBOL(switch_free_vlan_dev);
+
+void switch_free_vlan_dev_by_idx(uint8_t idx)
+{
+	BUG_ON(idx >= VLAN_INTERFACE_MAX);
+
+	switch_free_vlan_dev(vdev_tbl_lhost[idx]);
+}
+EXPORT_SYMBOL(switch_free_vlan_dev_by_idx);
+
+#ifdef CONFIG_TOPAZ_DBDC_HOST
+static enum topaz_tqe_port g_topaz_tqe_pcie_rel_port = TOPAZ_TQE_DUMMY_PORT;
+void tqe_register_pcie_rel_port(const enum topaz_tqe_port tqe_port)
+{
+	g_topaz_tqe_pcie_rel_port = tqe_port;
+}
+EXPORT_SYMBOL(tqe_register_pcie_rel_port);
+#endif
+
+struct qtn_vlan_dev*
+switch_vlan_dev_get_by_port(uint8_t port)
+{
+#ifdef CONFIG_TOPAZ_DBDC_HOST
+	uint8_t dev_id = EXTRACT_DEV_ID_FROM_PORT_ID(port);
+
+	port = EXTRACT_PORT_ID_FROM_PORT_ID(port);
+
+	if (port == g_topaz_tqe_pcie_rel_port)
+		return vdev_tbl_lhost[QFP_VDEV_IDX(dev_id)];
+#endif
+	return vport_tbl_lhost[port];
+}
+EXPORT_SYMBOL(switch_vlan_dev_get_by_port);
+
+struct qtn_vlan_dev*
+switch_vlan_dev_get_by_idx(uint8_t idx)
+{
+	return vdev_tbl_lhost[idx];
+}
+EXPORT_SYMBOL(switch_vlan_dev_get_by_idx);
+
+typedef void (*_fn_vlan_member)(struct qtn_vlan_dev *vdev,
+			uint16_t vid, uint8_t tag);
+static int switch_vlan_member_comm(struct qtn_vlan_dev *vdev, uint16_t vid,
+		uint8_t tag, _fn_vlan_member handler)
+{
+	if (vid == QVLAN_VID_ALL) {
+		for (vid = 0; vid < QVLAN_VID_MAX; vid++)
+			handler(vdev, vid, tag);
+	} else if (vid < QVLAN_VID_MAX) {
+		handler(vdev, vid, tag);
+	} else {
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
+static void _vlan_add_member(struct qtn_vlan_dev *vdev, uint16_t vid, uint8_t tag)
+{
+	spin_lock_bh(&lock);
+	switch_vlan_add(vdev, vid, tag);
+	spin_unlock_bh(&lock);
+}
+
+int switch_vlan_add_member(struct qtn_vlan_dev *vdev, uint16_t vid, uint8_t tag)
+{
+	return switch_vlan_member_comm(vdev, vid, tag, _vlan_add_member);
+}
+EXPORT_SYMBOL(switch_vlan_add_member);
+
+static void _vlan_del_member(struct qtn_vlan_dev *vdev, uint16_t vid, uint8_t arg)
+{
+	spin_lock_bh(&lock);
+	switch_vlan_del(vdev, vid);
+	spin_unlock_bh(&lock);
+}
+
+int switch_vlan_del_member(struct qtn_vlan_dev *vdev, uint16_t vid)
+{
+	return switch_vlan_member_comm(vdev, vid, 0, _vlan_del_member);
+}
+EXPORT_SYMBOL(switch_vlan_del_member);
+
+static void _vlan_tag_member(struct qtn_vlan_dev *vdev, uint16_t vid, uint8_t arg)
+{
+	int tagrx;
+	spin_lock_bh(&lock);
+	if (!qtn_vlan_is_member(vdev, vid))
+		goto out;
+
+	__switch_vlan_tag_member(vdev, vid);
+	tagrx = switch_vlan_manage_tagrx(vdev, vid, 1, 0);
+	switch_vlan_set_tagrx(&qtn_vlan_info, vid, tagrx);
+out:
+	spin_unlock_bh(&lock);
+}
+
+int switch_vlan_tag_member(struct qtn_vlan_dev *vdev, uint16_t vid)
+{
+	return switch_vlan_member_comm(vdev, vid, 0, _vlan_tag_member);
+}
+EXPORT_SYMBOL(switch_vlan_tag_member);
+
+static void _vlan_untag_member(struct qtn_vlan_dev *vdev, uint16_t vid, uint8_t arg)
+{
+	int tagrx;
+	spin_lock_bh(&lock);
+	if (!qtn_vlan_is_member(vdev, vid))
+		goto out;
+
+	__switch_vlan_untag_member(vdev, vid);
+	tagrx = switch_vlan_manage_tagrx(vdev, vid, 0, 0);
+	switch_vlan_set_tagrx(&qtn_vlan_info, vid, tagrx);
+out:
+	spin_unlock_bh(&lock);
+}
+
+int switch_vlan_untag_member(struct qtn_vlan_dev *vdev, uint16_t vid)
+{
+	return switch_vlan_member_comm(vdev, vid, 0, _vlan_untag_member);
+}
+EXPORT_SYMBOL(switch_vlan_untag_member);
+
+int switch_vlan_set_pvid(struct qtn_vlan_dev *vdev, uint16_t vid)
+{
+	if (vid >= QVLAN_VID_MAX)
+		return -EINVAL;
+
+	spin_lock_bh(&lock);
+
+	switch_vlan_del(vdev, vdev->pvid);
+	switch_vlan_add(vdev, vid, 0);
+
+	vdev->pvid = vid;
+
+	spin_unlock_bh(&lock);
+
+	return 0;
+}
+EXPORT_SYMBOL(switch_vlan_set_pvid);
+
+int switch_vlan_set_mode(struct qtn_vlan_dev *vdev, uint8_t mode)
+{
+	if (mode >= QVLAN_MODE_MAX)
+		return -EINVAL;
+
+	spin_lock_bh(&lock);
+	if (qtn_vlan_is_mode(vdev, mode))
+		goto out;
+
+	((struct qtn_vlan_user_interface *)vdev->user_data)->mode = mode;
+out:
+	spin_unlock_bh(&lock);
+
+	return 0;
+}
+EXPORT_SYMBOL(switch_vlan_set_mode);
+
+static inline void __switch_vlan_clear_dev(struct qtn_vlan_dev *vdev)
+{
+	memset(&vdev->u, 0, sizeof(vdev->u));
+	memset(&vdev->tag_bitmap, 0, sizeof(vdev->tag_bitmap));
+	memset(&vdev->ig_pass, 0, sizeof(vdev->ig_pass));
+	memset(&vdev->ig_drop, 0, sizeof(vdev->ig_drop));
+	memset(&vdev->eg_pass, 0, sizeof(vdev->eg_pass));
+	memset(&vdev->eg_drop, 0, sizeof(vdev->eg_drop));
+	vdev->pvid = QVLAN_DEF_PVID;
+	vdev->flags = 0;
+}
+
+void switch_vlan_dyn_enable(struct qtn_vlan_dev *vdev)
+{
+	spin_lock_bh(&lock);
+
+	__switch_vlan_clear_dev(vdev);
+	vdev->flags |= QVLAN_DEV_F_DYNAMIC;
+
+	spin_unlock_bh(&lock);
+}
+EXPORT_SYMBOL(switch_vlan_dyn_enable);
+
+void switch_vlan_dyn_disable(struct qtn_vlan_dev *vdev)
+{
+	spin_lock_bh(&lock);
+
+	__switch_vlan_clear_dev(vdev);
+	vdev->pvid = QVLAN_DEF_PVID;
+	switch_vlan_add(vdev, vdev->pvid, 0);
+
+	spin_unlock_bh(&lock);
+}
+EXPORT_SYMBOL(switch_vlan_dyn_disable);
+
+int switch_vlan_set_node(struct qtn_vlan_dev *vdev, uint16_t ncidx, uint16_t vlanid)
+{
+	int ret = 0;
+
+	spin_lock_bh(&lock);
+
+	if (!QVLAN_IS_DYNAMIC(vdev)
+			|| ncidx >= QTN_NCIDX_MAX
+			|| !qtn_vlan_is_valid(vlanid)
+			|| vdev->port != TOPAZ_TQE_WMAC_PORT) {
+		ret = -EINVAL;
+		goto out;
+	}
+
+	vdev->u.node_vlan[ncidx] = vlanid;
+
+out:
+	spin_unlock_bh(&lock);
+	return ret;
+}
+EXPORT_SYMBOL(switch_vlan_set_node);
+
+int switch_vlan_clr_node(struct qtn_vlan_dev *vdev, uint16_t ncidx)
+{
+	int ret = 0;
+
+	spin_lock_bh(&lock);
+
+	if (!QVLAN_IS_DYNAMIC(vdev)
+			|| ncidx >= QTN_NCIDX_MAX
+			|| vdev->port != TOPAZ_TQE_WMAC_PORT) {
+		ret = -EINVAL;
+		goto out;
+	}
+
+	vdev->u.node_vlan[ncidx] = QVLAN_VID_ALL;
+
+out:
+	spin_unlock_bh(&lock);
+	return ret;
+}
+EXPORT_SYMBOL(switch_vlan_clr_node);
+
+int switch_vlan_is_local(const uint8_t *data)
+{
+	const struct ethhdr *eth = (struct ethhdr *)data;
+	struct net_device *brdev = dev_get_by_name(&init_net, SWITCH_VLAN_LOCAL_INTERFACE_NAME);
+	int ret = 0;
+
+	if (likely(brdev)) {
+		ret = !compare_ether_addr(eth->h_source, brdev->dev_addr);
+		dev_put(brdev);
+	}
+
+	return ret;
+}
+EXPORT_SYMBOL(switch_vlan_is_local);
+
+struct sk_buff *switch_vlan_strip_tag(struct sk_buff *skb, int copy)
+{
+	struct sk_buff *skb2;
+	struct vlan_ethhdr *veth;
+	uint16_t vlan_id;
+	struct net_device *brdev;
+
+	BUG_ON(!skb_mac_header_was_set(skb));
+
+	if (!vlan_enabled)
+		return skb;
+
+	veth = vlan_eth_hdr(skb);
+	if (veth->h_vlan_proto != __constant_htons(ETH_P_8021Q))
+		return skb;
+
+	brdev = dev_get_by_name(&init_net, SWITCH_VLAN_LOCAL_INTERFACE_NAME);
+	if (likely(brdev)) {
+		vlan_id = ntohs(veth->h_vlan_TCI) & VLAN_VID_MASK;
+		if (vlan_check_vlan_exist(brdev, vlan_id)) {
+			dev_put(brdev);
+
+			return skb;
+		}
+
+		dev_put(brdev);
+	}
+
+	if (copy) {
+		skb2 = skb_copy(skb, GFP_ATOMIC);
+		dev_kfree_skb(skb);
+	} else {
+		skb2 = skb;
+	}
+
+	if (!skb2)
+		return NULL;
+
+	veth = vlan_eth_hdr(skb2);
+	memmove((uint8_t *)veth - QVLAN_PKTCTRL_LEN + VLAN_HLEN,
+		(uint8_t *)veth - QVLAN_PKTCTRL_LEN,
+		QVLAN_PKTCTRL_LEN + 2 * VLAN_ETH_ALEN);
+
+	skb_push(skb2, ETH_HLEN - VLAN_HLEN);
+	skb2->protocol = eth_type_trans(skb2, skb2->dev);
+	M_FLAG_SET(skb2, M_VLAN_TAG_OWE);
+
+	return skb2;
+}
+EXPORT_SYMBOL(switch_vlan_strip_tag);
+
+struct sk_buff *switch_vlan_restore_tag(struct sk_buff *skb, int copy)
+{
+	struct sk_buff *skb2;
+	struct qtn_vlan_pkt pkt;
+
+	if (!M_FLAG_ISSET(skb, M_VLAN_TAG_OWE))
+		return skb;
+
+	if (copy) {
+		skb2 = skb_copy(skb, GFP_ATOMIC);
+		dev_kfree_skb(skb);
+	} else {
+		skb2 = skb;
+	}
+
+	if (!skb2)
+		return NULL;
+
+	memcpy(&pkt, qtn_vlan_get_info(skb2->data), sizeof(pkt));
+	BUG_ON(pkt.magic != QVLAN_PKT_MAGIC);
+
+	skb2 = __vlan_put_tag(skb2, pkt.vlan_info & QVLAN_MASK_VID);
+	if (!skb2)
+		return NULL;
+
+	if (unlikely(skb_headroom(skb2) < QVLAN_PKTCTRL_LEN)) {
+		dev_kfree_skb(skb2);
+		return NULL;
+	}
+
+	memcpy(qtn_vlan_get_info(skb2->data), &pkt, sizeof(pkt));
+
+	return skb2;
+}
+EXPORT_SYMBOL(switch_vlan_restore_tag);
+
+static int switch_vlan_stats_rd(char *page, char **start, off_t offset,
+		int count, int *eof, void *data)
+{
+	char *p = page;
+	struct qtn_vlan_dev *vdev;
+	struct net_device *ndev;
+	int i;
+
+	spin_lock_bh(&lock);
+
+	for (i = 0; i < VLAN_INTERFACE_MAX; i++) {
+		vdev = vdev_tbl_lhost[i];
+		if (!vdev)
+			continue;
+
+		ndev = dev_get_by_index(&init_net, vdev->ifindex);
+		if (unlikely(!ndev))
+			continue;
+
+		p += sprintf(p, "%s\ti-pass\t\te-pass\t\ti-drop\t\te-drop\n", ndev->name);
+		p += sprintf(p, "Lhost\t%u\t\t%u\t\t%u\t\t%u\n", vdev->ig_pass.lhost, vdev->eg_pass.lhost,
+				vdev->ig_drop.lhost, vdev->eg_drop.lhost);
+		p += sprintf(p, "AuC\t%u\t\t%u\t\t%u\t\t%u\n", vdev->ig_pass.auc, vdev->eg_pass.auc,
+				vdev->ig_drop.auc, vdev->eg_drop.auc);
+		p += sprintf(p, "MuC\t%u\t\t%u\t\t%u\t\t%u\n", vdev->ig_pass.muc, vdev->eg_pass.muc,
+				vdev->ig_drop.muc, vdev->eg_drop.muc);
+
+		dev_put(ndev);
+	}
+
+	spin_unlock_bh(&lock);
+
+	*eof = 1;
+	return p - page;
+}
+
+void switch_vlan_dev_reset(struct qtn_vlan_dev *vdev, uint8_t mode)
+{
+	uint32_t i;
+
+	spin_lock_bh(&lock);
+	for (i = 0; i < QVLAN_VID_MAX; i++) {
+		if (qtn_vlan_is_member(vdev, i))
+			switch_vlan_del(vdev, i);
+	}
+
+	memset(vdev->u.member_bitmap, 0, sizeof(vdev->u.member_bitmap));
+	memset(vdev->tag_bitmap, 0, sizeof(vdev->tag_bitmap));
+	spin_unlock_bh(&lock);
+
+	switch_vlan_set_pvid(vdev, QVLAN_DEF_PVID);
+	switch_vlan_set_mode(vdev, mode);
+}
+EXPORT_SYMBOL(switch_vlan_dev_reset);
+
+void switch_vlan_reset(void)
+{
+	uint32_t i;
+
+	for (i = 0; i < VLAN_INTERFACE_MAX; i++) {
+		if (vdev_tbl_lhost[i])
+			switch_vlan_dev_reset(vdev_tbl_lhost[i], QVLAN_MODE_ACCESS);
+	}
+}
+EXPORT_SYMBOL(switch_vlan_reset);
+
+static int __init switch_vlan_module_init(void)
+{
+	if (!create_proc_read_entry(SWITCH_VLAN_PROC, 0,
+			NULL, switch_vlan_stats_rd, 0))
+		return -EEXIST;
+
+	return 0;
+}
+
+static void __exit switch_vlan_module_exit(void)
+{
+	remove_proc_entry(SWITCH_VLAN_PROC, 0);
+}
+
+module_init(switch_vlan_module_init);
+module_exit(switch_vlan_module_exit);
+
+MODULE_DESCRIPTION("VLAN control panel");
+MODULE_AUTHOR("Quantenna");
+MODULE_LICENSE("GPL");
diff --git a/drivers/topaz/topaz_congest_queue.c b/drivers/topaz/topaz_congest_queue.c
index 7a7c6c3..005f114 100644
--- a/drivers/topaz/topaz_congest_queue.c
+++ b/drivers/topaz/topaz_congest_queue.c
@@ -59,12 +59,12 @@
 EXPORT_SYMBOL(topaz_congest_dump);
 
 struct reg_congest_stats {
-	void (*fn)(void *ctx, uint8_t q_num, uint32_t q_len);
+	void (*fn)(void *ctx, uint32_t type, uint8_t q_num, uint32_t q_value);
 	void *ctx;
 };
 
 struct reg_congest_stats pktlog_update_cgq_stats;
-void reg_congest_queue_stats(void (*fn)(void *, uint8_t, uint32_t), void *ctx)
+void reg_congest_queue_stats(void (*fn)(void *, uint32_t, uint8_t, uint32_t), void *ctx)
 {
 	pktlog_update_cgq_stats.fn = fn;
 	pktlog_update_cgq_stats.ctx = ctx;
@@ -87,16 +87,23 @@
 	}
 }
 
+void topaz_congest_set_unicast_queue_count(uint32_t qnum)
+{
+	if (qnum <= TOPAZ_CONGEST_QUEUE_NUM)
+		topaz_congest_queue_get()->max_unicast_qcount = qnum;
+}
+EXPORT_SYMBOL(topaz_congest_set_unicast_queue_count);
+
 struct topaz_congest_q_desc* topaz_congest_alloc_unicast_queue(struct topaz_congest_queue *congest_queue,
 														uint32_t node_id,
 														uint32_t tid)
 {
 	struct topaz_congest_q_desc* unicast_queue;
 
-	if (get_active_tid_num() > 1)
+	if (get_active_tid_num() > congest_queue->max_unicast_qcount)
 		return NULL;
 
-	if (congest_queue->unicast_qcount >= TOPAZ_CONGEST_QUEUE_UNICAST_NUM)
+	if (congest_queue->unicast_qcount >= congest_queue->max_unicast_qcount)
 		return NULL;
 
 	unicast_queue = topaz_congest_alloc_queue(congest_queue, node_id, tid);
@@ -153,17 +160,20 @@
 	struct topaz_congest_q_elem *ptr;
 	uint32_t index;
 	int8_t pool;
+	int ret = 0;
 
 	if ((queue->qlen >= TOPAZ_CONGEST_PKT_MAX) ||
 			(queue->congest_queue->total_qlen >= TOPAZ_CONGEST_TOTAL_PKT_MAX)) {
 		queue->congest_enq_fail++;
-		return NET_XMIT_CN;
+		ret = NET_XMIT_CN;
+		goto make_stats;
 	}
 
 	pool = topaz_hbm_payload_get_pool_bus(ppctl->data.pkt);
 	if (topaz_hbm_pool_available(pool) <= TOPAZ_HBM_POOL_THRESHOLD) {
 		queue->congest_enq_fail++;
-		return NET_XMIT_CN;
+		ret = NET_XMIT_CN;
+		goto make_stats;
 	}
 
 	queue->congest_queue->logs[queue->qlen]++;
@@ -184,10 +194,20 @@
 	queue->tail = index;
 	queue->qlen++;
 	queue->congest_queue->total_qlen++;
-	if (pktlog_update_cgq_stats.fn)
-		pktlog_update_cgq_stats.fn(pktlog_update_cgq_stats.ctx, queue->index, queue->qlen);
 
-	return 0;
+make_stats:
+	if (pktlog_update_cgq_stats.fn) {
+		pktlog_update_cgq_stats.fn(pktlog_update_cgq_stats.ctx,
+					TOPAZ_CONGEST_QUEUE_STATS_QLEN,
+					queue->index,
+					queue->qlen);
+		pktlog_update_cgq_stats.fn(pktlog_update_cgq_stats.ctx,
+					TOPAZ_CONGEST_QUEUE_STATS_ENQFAIL,
+					queue->index,
+					queue->congest_enq_fail);
+	}
+
+	return ret;
 }
 EXPORT_SYMBOL(topaz_congest_enqueue);
 
@@ -234,7 +254,7 @@
 	queue->qlen--;
 	queue->congest_queue->total_qlen--;
 	if (pktlog_update_cgq_stats.fn)
-		pktlog_update_cgq_stats.fn(pktlog_update_cgq_stats.ctx, queue->index, queue->qlen);
+		pktlog_update_cgq_stats.fn(pktlog_update_cgq_stats.ctx, TOPAZ_CONGEST_QUEUE_STATS_QLEN, queue->index, queue->qlen);
 
 	/* Initial status setting */
 	queue->last_retry_success = 1;
@@ -254,7 +274,7 @@
 }
 EXPORT_SYMBOL(topaz_hbm_congest_queue_put_buf);
 
-inline static void topaz_congest_queue_clear(struct topaz_congest_q_desc *queue)
+noinline static void topaz_congest_queue_clear(struct topaz_congest_q_desc *queue)
 {
 	struct topaz_congest_q_elem *ptr;
 
@@ -270,16 +290,17 @@
 __attribute__((section(".sram.text"))) int topaz_congest_queue_xmit(struct topaz_congest_q_desc *queue, uint32_t budget)
 {
 	union topaz_tqe_cpuif_ppctl *pp_cntl;
+	struct topaz_congest_queue *congest_queue = queue->congest_queue;
 	int re_sched = 0;
 	int ret;
 
+	congest_queue->xmit_entry++;
+
 	if (queue->last_retry_success == 0) {
 		if (time_after(jiffies, queue->retry_timeout)) {
 			/* PNPT queue very likely is gone */
 			topaz_congest_queue_clear(queue);
 			return 0;
-		} else if (get_timestamp() - queue->last_retry_stamp < 100) {
-			return 1;
 		}
 	}
 
@@ -288,9 +309,9 @@
 		if (!pp_cntl)
 			break;
 
-		queue->congest_queue->cnt_retries++;
+		congest_queue->cnt_retries++;
 
-		ret = queue->congest_queue->xmit_func(pp_cntl);
+		ret = congest_queue->xmit_func(pp_cntl);
 
 		if (ret == NET_XMIT_CN) {
 			queue->last_retry_success = 0;
@@ -298,7 +319,7 @@
 			break;
 		}
 
-		queue->retry_timeout = jiffies + queue->congest_queue->congest_timeout;
+		queue->retry_timeout = jiffies + congest_queue->congest_timeout;
 		queue->congest_xmit++;
 
 		/* Transmit successfully */
@@ -308,8 +329,6 @@
 			break;
 	}
 
-	queue->last_retry_stamp = get_timestamp();
-
 	if (budget == 0)
 		re_sched = 1;
 
@@ -321,9 +340,6 @@
 {
 	struct topaz_congest_queue *congest_queue = (struct topaz_congest_queue *)data;
 	struct topaz_congest_q_desc *queue;
-#if TOPAZ_VNET_WR_STAGING
-	struct vmac_priv *vmp = congest_queue->vmp;
-#endif
 	int re_sched = 0;
 	int ret;
 	int i;
@@ -341,11 +357,6 @@
 			re_sched = 1;
 	}
 
-#if TOPAZ_VNET_WR_STAGING
-	if (congest_queue->tasklet_extra_proc)
-		congest_queue->tasklet_extra_proc(vmp);
-#endif
-
 	if (re_sched == 1) {
 		tasklet_schedule(&congest_queue->congest_tx);
 	}
@@ -373,6 +384,7 @@
 	tasklet_init(&queue->congest_tx, congest_tx_tasklet, (unsigned long)queue);
 	queue->xmit_func = NULL;
 	queue->tasklet_extra_proc = NULL;
+	queue->max_unicast_qcount = TOPAZ_CONGEST_MAX_UNICAST_QCOUNT;
 
 	return queue;
 }
diff --git a/drivers/topaz/tqe.c b/drivers/topaz/tqe.c
index 7772ddf..a57bb6b 100644
--- a/drivers/topaz/tqe.c
+++ b/drivers/topaz/tqe.c
@@ -16,7 +16,6 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  **/
-#ifdef TOPAZ_PLATFORM
 
 #include <linux/module.h>
 #include <linux/proc_fs.h>
@@ -79,5 +78,4 @@
 MODULE_AUTHOR("Quantenna");
 MODULE_LICENSE("GPL");
 
-#endif
 
diff --git a/include/common/common_mem.h b/include/common/common_mem.h
index 797c31a..61b106e 100644
--- a/include/common/common_mem.h
+++ b/include/common/common_mem.h
@@ -42,14 +42,8 @@
 #define RUBY_SRAM_NOFLIP_NOCACHE_BEGIN		0x60000000
 #define RUBY_SRAM_BANK_SIZE			(64 * 1024)
 
-#ifdef TOPAZ_PLATFORM
-	#define RUBY_SRAM_SIZE			(8 * RUBY_SRAM_BANK_SIZE)
-	#define RUBY_SRAM_BANK_SAFE_SIZE	RUBY_SRAM_BANK_SIZE
-#else
-	#define RUBY_SRAM_END_BANK_GUARD_SIZE	32
-	#define RUBY_SRAM_SIZE			(4 * RUBY_SRAM_BANK_SIZE)
-	#define RUBY_SRAM_BANK_SAFE_SIZE	(RUBY_SRAM_BANK_SIZE - RUBY_SRAM_END_BANK_GUARD_SIZE)
-#endif
+#define RUBY_SRAM_SIZE			(8 * RUBY_SRAM_BANK_SIZE)
+#define RUBY_SRAM_BANK_SAFE_SIZE	RUBY_SRAM_BANK_SIZE
 
 /* DDR */
 #define RUBY_DRAM_UNIFIED_BEGIN			0x80000000
@@ -103,6 +97,9 @@
 
 #define RUBY_KERNEL_LOAD_DRAM_BEGIN	(RUBY_DRAM_BEGIN + 0x3000000)
 
+/* Safety offset from stack top address */
+#define RUBY_STACK_INIT_OFFSET		4
+
 /* DDR layout */
 #define CONFIG_ARC_NULL_BASE		0x00000000
 #define CONFIG_ARC_NULL_SIZE		(64 * 1024)
@@ -134,19 +131,18 @@
 
 #define CONFIG_ARC_MUC_STACK_INIT_UBOOT		(RUBY_SRAM_BEGIN + CONFIG_ARC_MUC_STACK_OFFSET_UBOOT)
 
-#ifdef TOPAZ_PLATFORM
-	/* Must be equal to RUBY_CRUMBS_OFFSET */
-	#define RUBY_CRUMBS_OFFSET_UBOOT	(0x0003FFC0)
-#else
-	#define RUBY_CRUMBS_OFFSET_UBOOT	(0x0003FFA0)
-#endif
+/* Must be equal to RUBY_CRUMBS_OFFSET */
+#define RUBY_CRUMBS_OFFSET_UBOOT	(0x0003FFC0)
 
+#define RUBY_UBOOT_PIGGY_MAX_SIZE		0x14000
 #define RUBY_CRUMBS_ADDR_UBOOT			(RUBY_SRAM_BEGIN + RUBY_CRUMBS_OFFSET_UBOOT)
 
 /*
- * Crumb structure, sits at the end of SRAM. Each core can use it to
+ * Crumb structure, sits at the end of 4th SRAM bank. Each core can use it to
  * store the last run function to detect bus hangs.
  */
+#define RUBY_CRUMBS_SIZE		64
+
 #ifndef __ASSEMBLY__
 	struct ruby_crumbs_percore {
 		unsigned long	blink;
diff --git a/include/common/current_platform.h b/include/common/current_platform.h
index bc0d20f..bcd3ab4 100644
--- a/include/common/current_platform.h
+++ b/include/common/current_platform.h
@@ -5,4 +5,6 @@
 #define PLATFORM_WMAC_MODE ap
 #undef PLATFORM_DEFAULT_BOARD_ID
 #define ARC_HW_REV_NEEDS_TLBMISS_FIX
-#define TOPAZ_VNET_WR_STAGING 0
+#define FLASH_SUPPORT_64KB
+#define WPA_TKIP_SUPPORT 0
+#define SIGMA_TESTBED_SUPPORT 0
diff --git a/include/common/doxygen/Doxyfile_pdf b/include/common/doxygen/Doxyfile_pdf
index 38c633b..6bf43ed 100644
--- a/include/common/doxygen/Doxyfile_pdf
+++ b/include/common/doxygen/Doxyfile_pdf
@@ -189,11 +189,17 @@
 # will result in a user-defined paragraph with heading "Side Effects:". 
 # You can put \n's in the value part of an alias to insert newlines.
 
-ALIASES = persistent="\par <b>Persistency:</b> this API is <b>persistent</b> across reboot\n"
-ALIASES	+= nonpersistent="\par <b>Persistency:</b> this API is <b>non-persistent</b> across reboot\n"
 ALIASES += callqcsapi="<b><c>call_qcsapi</c> interface:</b><br>"
-ALIASES += wifi0="the interface to perform the action on. (Generally wifi0)"
+ALIASES += wifi0="the interface to perform the action on. (e.g. wifi0)."
+ALIASES += wifi0only="the primary WiFi interface, wifi0 only."
 ALIASES += wifiX="the interface to perform the action on. wifiX, For X=0,1,..."
+ALIASES += wifi_wds="the interface to perform the action on. (e.g. wifi0 or wds0)."
+ALIASES += wifi_wds_eth="the interface to perform the action on. (e.g. wifi0 or wds0 or eth1_0)."
+ALIASES += aponly="This API can only be used in AP mode."
+ALIASES += staonly="This API can only be used in STA mode."
+ALIASES += nonpersistent="The value(s) set by this API are not persistent and must be reapplied if the device reboots."
+ALIASES += primarywifi="This API can only be used on the primary interface (wifi0)"
+ALIASES += hotspot_api="Refer to the WiFi Alliance Hotspot 2.0 (Release 2) Technical Specification for further information."
 
 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
 # sources only. Doxygen will then generate output that is more tailored for C. 
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.1-v37.3.0.2 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.1-v37.3.0.2
index d32b13b..7f40d09 100644
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.1-v37.3.0.2
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.1-v37.3.0.2
@@ -6,10 +6,20 @@
  * \subsection v37_3_0_1_TO_v37_3_0_2Added Added functions
  *
  * The following functions were added between versions v37.3.0.1 and v37.3.0.2
- *
  * \li \ref qcsapi_wifi_get_scan_buf_max_size
  * \li \ref qcsapi_calcmd_get_info
+ * \li \ref qcsapi_wifi_set_scan_buf_max_size
  * \li \ref qcsapi_wifi_get_scan_table_max_len
  * \li \ref qcsapi_wifi_set_scan_table_max_len
- * \li \ref qcsapi_wifi_set_scan_buf_max_size
+ *
+ * \subsection v37_3_0_1_TO_v37_3_0_2Proto Function prototype changes
+ *
+ * The following function prototypes were modified between versions v37.3.0.1 and v37.3.0.2
+ *  - \ref qcsapi_wifi_get_auth_state
+ *    - Old prototype: int qcsapi_wifi_get_auth_state(const char *ifname, char *mac_addr, int *auth_state);
+ *    - New prototype: int qcsapi_wifi_get_auth_state(const char *ifname, const char *mac_addr, int *auth_state);
+ *  - \ref qcsapi_wifi_get_wpa_status
+ *    - Old prototype: int qcsapi_wifi_get_wpa_status(const char *ifname, char *wpa_status, char *mac_addr, const qcsapi_unsigned_int max_len);
+ *    - New prototype: int qcsapi_wifi_get_wpa_status(const char *ifname, char *wpa_status, const char *mac_addr, const qcsapi_unsigned_int max_len);
  */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.10-v37.3.0.11 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.10-v37.3.0.11
index fcaadc7..576eb38 100644
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.10-v37.3.0.11
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.10-v37.3.0.11
@@ -6,6 +6,13 @@
  * \subsection v37_3_0_10_TO_v37_3_0_11Added Added functions
  *
  * The following functions were added between versions v37.3.0.10 and v37.3.0.11
- *
  * \li \ref qcsapi_wifi_enable_tdls_over_qhop
+ *
+ * \subsection v37_3_0_10_TO_v37_3_0_11Proto Function prototype changes
+ *
+ * The following function prototypes were modified between versions v37.3.0.10 and v37.3.0.11
+ *  - \ref qcsapi_wifi_tdls_operate
+ *    - Old prototype: int qcsapi_wifi_tdls_operate(const char *ifname, qcsapi_tdls_oper operate, const char *mac_addr_str);
+ *    - New prototype: int qcsapi_wifi_tdls_operate(const char *ifname, qcsapi_tdls_oper operate, const char *mac_addr_str, int cs_interval);
  */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.12-v37.3.0.13 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.12-v37.3.0.13
index 0abf9be..6939006 100644
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.12-v37.3.0.13
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.12-v37.3.0.13
@@ -6,22 +6,46 @@
  * \subsection v37_3_0_12_TO_v37_3_0_13Added Added functions
  *
  * The following functions were added between versions v37.3.0.12 and v37.3.0.13
- *
- * \li \ref qcsapi_security_add_hs20_conn_capab
- * \li \ref qcsapi_security_add_venue_name
- * \li \ref qcsapi_security_del_hs20_conn_capab
- * \li \ref qcsapi_security_get_venue_name
  * \li \ref qcsapi_security_add_oper_friendly_name
- * \li \ref qcsapi_verify_numeric
- * \li \ref qcsapi_security_del_oper_friendly_name
- * \li \ref qcsapi_security_get_hs20_conn_capab
  * \li \ref qcsapi_security_del_venue_name
+ * \li \ref qcsapi_security_get_hs20_conn_capab
+ * \li \ref qcsapi_security_get_venue_name
+ * \li \ref qcsapi_security_add_venue_name
  * \li \ref qcsapi_security_get_oper_friendly_name
+ * \li \ref qcsapi_security_del_oper_friendly_name
+ * \li \ref qcsapi_security_del_hs20_conn_capab
+ * \li \ref qcsapi_verify_numeric
+ * \li \ref qcsapi_security_add_hs20_conn_capab
  *
  * \subsection v37_3_0_12_TO_v37_3_0_13Removed Removed functions
  *
  * The following functions were removed between versions v37.3.0.12 and v37.3.0.13
+ * \li \ref qcsapi_wifi_set_venue_info
+ * \li \ref qcsapi_wifi_get_venue_info
  *
- * \li qcsapi_wifi_set_venue_info
- * \li qcsapi_wifi_get_venue_info
+ * \subsection v37_3_0_12_TO_v37_3_0_13Proto Function prototype changes
+ *
+ * The following function prototypes were modified between versions v37.3.0.12 and v37.3.0.13
+ *  - \ref qcsapi_security_add_roaming_consortium
+ *    - Old prototype: int qcsapi_security_add_roaming_consortium(const char *ifname, const string_32 p_value);
+ *    - New prototype: int qcsapi_security_add_roaming_consortium(const char *ifname, const char *p_value);
+ *  - \ref qcsapi_security_get_nai_realms
+ *    - Old prototype: int qcsapi_security_get_nai_realms(const char *ifname, string_1024 p_value);
+ *    - New prototype: int qcsapi_security_get_nai_realms(const char *ifname, string_4096 p_value);
+ *  - \ref qcsapi_wifi_set_80211u_params
+ *    - Old prototype: int qcsapi_wifi_set_80211u_params(const char *ifname, const string_32 param, const string_32 p_value);
+ *    - New prototype: int qcsapi_wifi_set_80211u_params(const char *ifname, const string_32 param, const string_256 value1, const string_32 value2);
+ *  - \ref qcsapi_security_del_nai_realm
+ *    - Old prototype: int qcsapi_security_del_nai_realm(const char *ifname, const string_32 p_value);
+ *    - New prototype: int qcsapi_security_del_nai_realm(const char *ifname, const char *nai_realm);
+ *  - \ref qcsapi_get_temperature_info
+ *    - Old prototype: int qcsapi_get_temperature_info(int *temp_external, int *temp_internal);
+ *    - New prototype: int qcsapi_get_temperature_info(int *temp_external, int *temp_internal, int *temp_bb_internal);
+ *  - \ref qcsapi_security_del_roaming_consortium
+ *    - Old prototype: int qcsapi_security_del_roaming_consortium(const char *ifname, const string_32 p_value);
+ *    - New prototype: int qcsapi_security_del_roaming_consortium(const char *ifname, const char *p_value);
+ *  - \ref qcsapi_wifi_get_80211u_params
+ *    - Old prototype: int qcsapi_wifi_get_80211u_params(const char *ifname, const string_32 param, string_32 p_value);
+ *    - New prototype: int qcsapi_wifi_get_80211u_params(const char *ifname, const string_32 param, string_256 p_value);
  */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.16-v37.3.0.17 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.16-v37.3.0.17
index afa4dd9..0dc105e 100644
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.16-v37.3.0.17
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.16-v37.3.0.17
@@ -6,13 +6,20 @@
  * \subsection v37_3_0_16_TO_v37_3_0_17Added Added functions
  *
  * The following functions were added between versions v37.3.0.16 and v37.3.0.17
- *
- * \li \ref qcsapi_wifi_get_mu_use_precode
  * \li \ref qcsapi_wifi_set_enable_mu
  * \li \ref qcsapi_wifi_get_mu_use_eq
+ * \li \ref qcsapi_wifi_get_mu_use_precode
  * \li \ref qcsapi_wifi_get_enable_mu
  * \li \ref qcsapi_wifi_set_mu_use_eq
- * \li \ref qcsapi_wifi_set_mu_use_precode
  * \li \ref qcsapi_wfa_cert_mode_enable
  * \li \ref qcsapi_wifi_get_mu_groups
+ * \li \ref qcsapi_wifi_set_mu_use_precode
+ *
+ * \subsection v37_3_0_16_TO_v37_3_0_17Proto Function prototype changes
+ *
+ * The following function prototypes were modified between versions v37.3.0.16 and v37.3.0.17
+ *  - \ref qcsapi_wifi_set_phy_mode
+ *    - Old prototype: int qcsapi_wifi_set_phy_mode(const char *ifname, char *new_phy_mode);
+ *    - New prototype: int qcsapi_wifi_set_phy_mode(const char *ifname, const char *new_phy_mode);
  */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.17-v37.3.0.18 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.17-v37.3.0.18
new file mode 100644
index 0000000..db4753d
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.17-v37.3.0.18
@@ -0,0 +1,16 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_17_TO_v37_3_0_18 Version v37.3.0.17 to version v37.3.0.18 changes
+ *
+ * \subsection v37_3_0_17_TO_v37_3_0_18Proto Function prototype changes
+ *
+ * The following function prototypes were modified between versions v37.3.0.17 and v37.3.0.18
+ *  - \ref qcsapi_wifi_rfstatus
+ *    - Old prototype: int qcsapi_wifi_rfstatus(const char *ifname, qcsapi_unsigned_int *rfstatus);
+ *    - New prototype: int qcsapi_wifi_rfstatus(qcsapi_unsigned_int *rfstatus);
+ *  - \ref qcsapi_wifi_rfenable
+ *    - Old prototype: int qcsapi_wifi_rfenable(const char *ifname, const qcsapi_unsigned_int onoff);
+ *    - New prototype: int qcsapi_wifi_rfenable(const qcsapi_unsigned_int onoff);
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.18-v37.3.0.19 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.18-v37.3.0.19
index 47f120a..7a6b3c0 100644
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.18-v37.3.0.19
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.18-v37.3.0.19
@@ -6,7 +6,17 @@
  * \subsection v37_3_0_18_TO_v37_3_0_19Added Added functions
  *
  * The following functions were added between versions v37.3.0.18 and v37.3.0.19
- *
  * \li \ref qcsapi_wifi_set_l2_ext_filter
  * \li \ref qcsapi_wifi_get_l2_ext_filter
+ *
+ * \subsection v37_3_0_18_TO_v37_3_0_19Proto Function prototype changes
+ *
+ * The following function prototypes were modified between versions v37.3.0.18 and v37.3.0.19
+ *  - \ref qcsapi_get_service_action_enum
+ *    - Old prototype: int qcsapi_get_service_action_enum(string_32 lookup_action, qcsapi_service_action *serv_action);
+ *    - New prototype: int qcsapi_get_service_action_enum(const char *lookup_action, qcsapi_service_action *serv_action);
+ *  - \ref qcsapi_get_service_name_enum
+ *    - Old prototype: int qcsapi_get_service_name_enum(string_32 lookup_service, qcsapi_service_name *serv_name);
+ *    - New prototype: int qcsapi_get_service_name_enum(const char *lookup_service, qcsapi_service_name *serv_name);
  */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.20-v37.3.0.21 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.20-v37.3.0.21
new file mode 100644
index 0000000..7876698
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.20-v37.3.0.21
@@ -0,0 +1,13 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_20_TO_v37_3_0_21 Version v37.3.0.20 to version v37.3.0.21 changes
+ *
+ * \subsection v37_3_0_20_TO_v37_3_0_21Proto Function prototype changes
+ *
+ * The following function prototypes were modified between versions v37.3.0.20 and v37.3.0.21
+ *  - \ref qcsapi_wifi_set_hs20_params
+ *    - Old prototype: int qcsapi_wifi_set_hs20_params(const char *ifname, const string_32 param, const string_64 p_value);
+ *    - New prototype: int qcsapi_wifi_set_hs20_params(const char *ifname, const string_32 param, const string_64 value1, const string_64 value2, const string_64 value3, const string_64 value4, const string_64 value5, const string_64 value6);
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.21-v37.4.0.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.21-v37.4.0.0
new file mode 100644
index 0000000..9972a0f
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.21-v37.4.0.0
@@ -0,0 +1,13 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_21_TO_v37_4_0_0 Version v37.3.0.21 to version v37.4.0.0 changes
+ *
+ * \subsection v37_3_0_21_TO_v37_4_0_0Added Added functions
+ *
+ * The following functions were added between versions v37.3.0.21 and v37.4.0.0
+ *
+ * \li \ref qcsapi_wifi_set_dfs_s_radio_wea_cac_time
+ * \li \ref qcsapi_str_to_uint32
+ * \li \ref qcsapi_wifi_set_dfs_s_radio_wea_duration
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.22-v37.3.0.23 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.22-v37.3.0.23
deleted file mode 100644
index b270967..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.22-v37.3.0.23
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_3_0_22_TO_v37_3_0_23 Version v37.3.0.22 to version v37.3.0.23 changes
- *
- * \subsection v37_3_0_22_TO_v37_3_0_23Added Added functions
- *
- * The following functions were added between versions v37.3.0.22 and v37.3.0.23
- *
- * \li \ref qcsapi_wifi_set_dfs_s_radio_wea_cac_time
- * \li \ref qcsapi_str_to_uint32
- * \li \ref qcsapi_wifi_set_dfs_s_radio_wea_duration
- */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.1-v37.4.0.2 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.1-v37.4.0.2
new file mode 100644
index 0000000..c42ae35
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.1-v37.4.0.2
@@ -0,0 +1,25 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_1_TO_v37_4_0_2 Version v37.4.0.1 to version v37.4.0.2 changes
+ *
+ * \subsection v37_4_0_1_TO_v37_4_0_2Proto Function prototype changes
+ *
+ * The following function prototypes were modified between versions v37.4.0.1 and v37.4.0.2
+ *  - \ref qcsapi_security_del_venue_name
+ *    - Old prototype: int qcsapi_security_del_venue_name(const char *ifname, char *lang_code, char *venue_name);
+ *    - New prototype: int qcsapi_security_del_venue_name(const char *ifname, const char *lang_code, const char *venue_name);
+ *  - \ref qcsapi_security_add_venue_name
+ *    - Old prototype: int qcsapi_security_add_venue_name(const char *ifname, char *lang_code, char *venue_name);
+ *    - New prototype: int qcsapi_security_add_venue_name(const char *ifname, const char *lang_code, const char *venue_name);
+ *  - \ref qcsapi_security_del_oper_friendly_name
+ *    - Old prototype: int qcsapi_security_del_oper_friendly_name(const char *ifname, char *lang_code, char *oper_friendly_name);
+ *    - New prototype: int qcsapi_security_del_oper_friendly_name(const char *ifname, const char *lang_code, const char *oper_friendly_name);
+ *  - \ref qcsapi_security_add_nai_realm
+ *    - Old prototype: int qcsapi_security_add_nai_realm(const char *ifname, int encoding, char *nai_realm, char *eap_method);
+ *    - New prototype: int qcsapi_security_add_nai_realm(const char *ifname, const int encoding, const char *nai_realm, const char *eap_method);
+ *  - \ref qcsapi_security_add_oper_friendly_name
+ *    - Old prototype: int qcsapi_security_add_oper_friendly_name(const char *ifname, char *lang_code, char *oper_friendly_name);
+ *    - New prototype: int qcsapi_security_add_oper_friendly_name(const char *ifname, const char *lang_code, const char *oper_friendly_name);
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.11-v37.4.0.12 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.11-v37.4.0.12
new file mode 100644
index 0000000..477a85b
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.11-v37.4.0.12
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_11_TO_v37_4_0_12 Version v37.4.0.11 to version v37.4.0.12 changes
+ *
+ * \subsection v37_4_0_11_TO_v37_4_0_12Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.11 and v37.4.0.12
+ *
+ * \li \ref qcsapi_wifi_block_bss
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.12-v37.4.0.13 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.12-v37.4.0.13
new file mode 100644
index 0000000..da9c881
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.12-v37.4.0.13
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_12_TO_v37_4_0_13 Version v37.4.0.12 to version v37.4.0.13 changes
+ *
+ * \subsection v37_4_0_12_TO_v37_4_0_13Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.12 and v37.4.0.13
+ *
+ * \li \ref qcsapi_wifi_chan_control
+ * \li \ref qcsapi_wifi_get_chan_disabled
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.16-v37.4.0.17 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.16-v37.4.0.17
new file mode 100644
index 0000000..e05ebc0
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.16-v37.4.0.17
@@ -0,0 +1,56 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_16_TO_v37_4_0_17 Version v37.4.0.16 to version v37.4.0.17 changes
+ *
+ * \subsection v37_4_0_16_TO_v37_4_0_17Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.16 and v37.4.0.17
+ * \li \ref qcsapi_wifi_set_txba_disable
+ * \li \ref qcsapi_security_del_hs20_icon
+ * \li \ref qcsapi_wifi_get_pairwise_key_interval
+ * \li \ref qcsapi_wifi_get_vap_state
+ * \li \ref qcsapi_wifi_set_vap_default_state
+ * \li \ref qcsapi_wifi_send_qos_map_conf
+ * \li \ref qcsapi_wifi_set_chan_pri_inactive_ext
+ * \li \ref qcsapi_wifi_get_txburst
+ * \li \ref qcsapi_wifi_get_supported_freq_bands
+ * \li \ref qcsapi_wifi_get_qos_map
+ * \li \ref qcsapi_security_del_osu_server_uri
+ * \li \ref qcsapi_wifi_get_sec_chan
+ * \li \ref qcsapi_wifi_get_dscp_tid_map
+ * \li \ref qcsapi_wifi_get_rxba_decline
+ * \li \ref qcsapi_wifi_del_qos_map
+ * \li \ref qcsapi_wifi_set_pairwise_key_interval
+ * \li \ref qcsapi_security_add_osu_server_uri
+ * \li \ref qcsapi_security_get_osu_server_uri
+ * \li \ref qcsapi_security_get_osu_server_param
+ * \li \ref qcsapi_wifi_set_vap_state
+ * \li \ref qcsapi_wifi_get_txba_disable
+ * \li \ref qcsapi_security_del_osu_server_param
+ * \li \ref qcsapi_security_get_hs20_icon
+ * \li \ref qcsapi_wifi_set_qos_map
+ * \li \ref qcsapi_wifi_set_rxba_decline
+ * \li \ref qcsapi_wifi_set_txburst
+ * \li \ref qcsapi_wifi_set_sec_chan
+ * \li \ref qcsapi_security_add_osu_server_param
+ * \li \ref qcsapi_security_add_hs20_icon
+ * \li \ref qcsapi_wifi_get_vap_default_state
+ *
+ * \subsection v37_4_0_16_TO_v37_4_0_17Proto Function prototype changes
+ *
+ * The following function prototypes were modified between versions v37.4.0.16 and v37.4.0.17
+ *  - \ref qcsapi_wifi_set_group_key_interval
+ *    - Old prototype: int qcsapi_wifi_set_group_key_interval(const char *ifname, const string_16 group_key_interval);
+ *    - New prototype: int qcsapi_wifi_set_group_key_interval(const char *ifname, const unsigned int key_interval);
+ *  - \ref qcsapi_wifi_show_vlan_config
+ *    - Old prototype: int qcsapi_wifi_show_vlan_config(const char *ifname, string_1024 vcfg);
+ *    - New prototype: int qcsapi_wifi_show_vlan_config(const char *ifname, string_2048 vcfg, const char *flag);
+ *  - \ref qcsapi_wifi_get_group_key_interval
+ *    - Old prototype: int qcsapi_wifi_get_group_key_interval(const char *ifname, string_16 group_key_interval);
+ *    - New prototype: int qcsapi_wifi_get_group_key_interval(const char *ifname, unsigned int *p_key_interval);
+ *  - \ref qcsapi_wifi_vlan_config
+ *    - Old prototype: int qcsapi_wifi_vlan_config(const char *ifname, qcsapi_vlan_cmd cmd, uint32_t vlanid, uint32_t flags);
+ *    - New prototype: int qcsapi_wifi_vlan_config(const char *ifname, qcsapi_vlan_cmd cmd, uint32_t vlanid);
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.19-v37.4.0.20 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.19-v37.4.0.20
new file mode 100644
index 0000000..87dca00
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.19-v37.4.0.20
@@ -0,0 +1,18 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_19_TO_v37_4_0_20 Version v37.4.0.19 to version v37.4.0.20 changes
+ *
+ * \subsection v37_4_0_19_TO_v37_4_0_20Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.19 and v37.4.0.20
+ * \li \ref qcsapi_wifi_get_24g_bw
+ * \li \ref qcsapi_wifi_set_24g_bw
+ *
+ * \subsection v37_4_0_19_TO_v37_4_0_20Removed Removed functions
+ *
+ * The following functions were removed between versions v37.4.0.19 and v37.4.0.20
+ * \li \ref qcsapi_wifi_get_2_4ghz_bw
+ * \li \ref qcsapi_wifi_set_2_4ghz_bw
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.2-v37.4.0.3 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.2-v37.4.0.3
new file mode 100644
index 0000000..0b9c149
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.2-v37.4.0.3
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_2_TO_v37_4_0_3 Version v37.4.0.2 to version v37.4.0.3 changes
+ *
+ * \subsection v37_4_0_2_TO_v37_4_0_3Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.2 and v37.4.0.3
+ *
+ * \li \ref qcsapi_wifi_set_optim_stats
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.20-v37.4.0.21 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.20-v37.4.0.21
new file mode 100644
index 0000000..6796837
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.20-v37.4.0.21
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_20_TO_v37_4_0_21 Version v37.4.0.20 to version v37.4.0.21 changes
+ *
+ * \subsection v37_4_0_20_TO_v37_4_0_21Removed Removed functions
+ *
+ * The following functions were removed between versions v37.4.0.20 and v37.4.0.21
+ * \li \ref qcsapi_enable_vlan_pass_through
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.21-v37.4.0.22 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.21-v37.4.0.22
new file mode 100644
index 0000000..0e569b1
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.21-v37.4.0.22
@@ -0,0 +1,6 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_21_TO_v37_4_0_22 Version v37.4.0.21 to version v37.4.0.22 changes
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.22-v37.4.0.23 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.22-v37.4.0.23
new file mode 100644
index 0000000..69036c6
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.22-v37.4.0.23
@@ -0,0 +1,6 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_22_TO_v37_4_0_23 Version v37.4.0.22 to version v37.4.0.23 changes
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.23-v37.4.0.24 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.23-v37.4.0.24
new file mode 100644
index 0000000..4a9329d
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.23-v37.4.0.24
@@ -0,0 +1,6 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_23_TO_v37_4_0_24 Version v37.4.0.23 to version v37.4.0.24 changes
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.24-v37.4.0.25 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.24-v37.4.0.25
new file mode 100644
index 0000000..5819cd0
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.24-v37.4.0.25
@@ -0,0 +1,6 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_24_TO_v37_4_0_25 Version v37.4.0.24 to version v37.4.0.25 changes
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.26-v37.4.0.27 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.26-v37.4.0.27
new file mode 100644
index 0000000..94ef05d
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.26-v37.4.0.27
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_26_TO_v37_4_0_27 Version v37.4.0.26 to version v37.4.0.27 changes
+ *
+ * \subsection v37_4_0_26_TO_v37_4_0_27Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.26 and v37.4.0.27
+ * \li \ref qcsapi_qwe_command
+ * \li \ref qcsapi_wifi_get_scan_IEs
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.27-v37.4.0.28 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.27-v37.4.0.28
new file mode 100644
index 0000000..73bb8fd
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.27-v37.4.0.28
@@ -0,0 +1,13 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_27_TO_v37_4_0_28 Version v37.4.0.27 to version v37.4.0.28 changes
+ *
+ * \subsection v37_4_0_27_TO_v37_4_0_28Proto Function prototype changes
+ *
+ * The following function prototypes were modified between versions v37.4.0.27 and v37.4.0.28
+ *  - \ref qcsapi_wifi_get_node_param
+ *    - Old prototype: int qcsapi_wifi_get_node_param(const char *ifname, const uint32_t node_index, qcsapi_per_assoc_param param_type, int local_remote_flag, string_128 input_param_str, qcsapi_measure_report_result *report_result);
+ *    - New prototype: int qcsapi_wifi_get_node_param(const char *ifname, const uint32_t node_index, qcsapi_per_assoc_param param_type, int local_remote_flag, const string_128 input_param_str, qcsapi_measure_report_result *report_result);
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.28-v37.4.0.29 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.28-v37.4.0.29
new file mode 100644
index 0000000..254ebe1
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.28-v37.4.0.29
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_28_TO_v37_4_0_29 Version v37.4.0.28 to version v37.4.0.29 changes
+ *
+ * \subsection v37_4_0_28_TO_v37_4_0_29Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.28 and v37.4.0.29
+ * \li \ref qcsapi_pm_dual_emac_get_mode
+ * \li \ref qcsapi_pm_dual_emac_set_mode
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.29-v37.4.0.30 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.29-v37.4.0.30
new file mode 100644
index 0000000..2a70842
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.29-v37.4.0.30
@@ -0,0 +1,18 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_29_TO_v37_4_0_30 Version v37.4.0.29 to version v37.4.0.30 changes
+ *
+ * \subsection v37_4_0_29_TO_v37_4_0_30Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.29 and v37.4.0.30
+ * \li \ref qcsapi_wifi_get_block_bss
+ * \li \ref qcsapi_qtm_safe_get_rule
+ * \li \ref qcsapi_qtm_safe_get_stats
+ * \li \ref qcsapi_qtm_safe_del_rule
+ * \li \ref qcsapi_qtm_safe_get_strm
+ * \li \ref qcsapi_qtm_safe_get_config_all
+ * \li \ref qcsapi_qtm_safe_add_rule
+ * \li \ref qcsapi_qtm_safe_get_state_all
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.32-v37.4.0.33 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.32-v37.4.0.33
new file mode 100644
index 0000000..c0150e7
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.32-v37.4.0.33
@@ -0,0 +1,14 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_32_TO_v37_4_0_33 Version v37.4.0.32 to version v37.4.0.33 changes
+ *
+ * \subsection v37_4_0_32_TO_v37_4_0_33Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.32 and v37.4.0.33
+ * \li \ref qcsapi_wifi_get_supp_chans
+ * \li \ref qcsapi_get_client_mac_list
+ * \li \ref qcsapi_get_core_dump
+ * \li \ref qcsapi_get_core_dump_size
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.34-v37.4.0.35 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.34-v37.4.0.35
new file mode 100644
index 0000000..94ffb56
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.34-v37.4.0.35
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_34_TO_v37_4_0_35 Version v37.4.0.34 to version v37.4.0.35 changes
+ *
+ * \subsection v37_4_0_34_TO_v37_4_0_35Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.34 and v37.4.0.35
+ * \li \ref qcsapi_wifi_get_per_assoc_data
+ * \li \ref qcsapi_wifi_sample_all_clients
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.35-v37.4.0.36 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.35-v37.4.0.36
new file mode 100644
index 0000000..5d91180
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.35-v37.4.0.36
@@ -0,0 +1,20 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_35_TO_v37_4_0_36 Version v37.4.0.35 to version v37.4.0.36 changes
+ *
+ * \subsection v37_4_0_35_TO_v37_4_0_36Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.35 and v37.4.0.36
+ * \li \ref qcsapi_wifi_get_multicast_list
+ * \li \ref qcsapi_wifi_add_multicast
+ * \li \ref qcsapi_wifi_del_multicast
+ *
+ * \subsection v37_4_0_35_TO_v37_4_0_36Proto Function prototype changes
+ *
+ * The following function prototypes were modified between versions v37.4.0.35 and v37.4.0.36
+ *  - \ref qcsapi_qtm_safe_get_strm
+ *    - Old prototype: int qcsapi_qtm_safe_get_strm(const char *ifname, struct qcsapi_int_array1024 *entries, unsigned int max_entries, int show_all);
+ *    - New prototype: int qcsapi_qtm_safe_get_strm(const char *ifname, struct qvsp_strms *strms, int show_all);
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.4-v37.4.0.5 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.4-v37.4.0.5
new file mode 100644
index 0000000..ad6a0c7
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.4-v37.4.0.5
@@ -0,0 +1,21 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_4_TO_v37_4_0_5 Version v37.4.0.4 to version v37.4.0.5 changes
+ *
+ * \subsection v37_4_0_4_TO_v37_4_0_5Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.4 and v37.4.0.5
+ *
+ * \li \ref qcsapi_wifi_set_sys_time
+ * \li \ref qcsapi_wifi_set_2_4ghz_bw
+ * \li \ref qcsapi_wifi_get_mac_address_reserve
+ * \li \ref qcsapi_wifi_set_vco_lock_detect_mode
+ * \li \ref qcsapi_wifi_clear_mac_address_reserve
+ * \li \ref qcsapi_wifi_set_mac_address_reserve
+ * \li \ref qcsapi_wifi_get_vco_lock_detect_mode
+ * \li \ref qcsapi_wifi_get_sys_time
+ * \li \ref qcsapi_wifi_set_pref_band
+ * \li \ref qcsapi_wifi_get_2_4ghz_bw
+ * \li \ref qcsapi_wifi_get_pref_band
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.40-v37.4.0.41 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.40-v37.4.0.41
new file mode 100644
index 0000000..fbb6ecd
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.40-v37.4.0.41
@@ -0,0 +1,17 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_40_TO_v37_4_0_41 Version v37.4.0.40 to version v37.4.0.41 changes
+ *
+ * \subsection v37_4_0_40_TO_v37_4_0_41Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.40 and v37.4.0.41
+ * \li \ref qcsapi_get_igmp_snooping_state
+ * \li \ref qcsapi_wifi_remove_mac_address_list
+ * \li \ref qcsapi_wifi_is_ready
+ * \li \ref qcsapi_get_ep_status
+ * \li \ref qcsapi_wifi_authorize_mac_address_list
+ * \li \ref qcsapi_set_igmp_snooping_state
+ * \li \ref qcsapi_wifi_deny_mac_address_list
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.41-v37.4.0.42 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.41-v37.4.0.42
new file mode 100644
index 0000000..6da031d
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.41-v37.4.0.42
@@ -0,0 +1,13 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_41_TO_v37_4_0_42 Version v37.4.0.41 to version v37.4.0.42 changes
+ *
+ * \subsection v37_4_0_41_TO_v37_4_0_42Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.41 and v37.4.0.42
+ * \li \ref qcsapi_wifi_set_max_bcast_pps
+ * \li \ref qcsapi_wifi_update_bss_cfg
+ * \li \ref qcsapi_wifi_set_dfs_s_radio_wea_dwell_time
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.42-v37.4.0.43 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.42-v37.4.0.43
new file mode 100644
index 0000000..96f2223
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.42-v37.4.0.43
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_42_TO_v37_4_0_43 Version v37.4.0.42 to version v37.4.0.43 changes
+ *
+ * \subsection v37_4_0_42_TO_v37_4_0_43Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.42 and v37.4.0.43
+ * \li \ref qcsapi_wifi_get_chan_pri_inactive
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.43-v37.4.0.44 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.43-v37.4.0.44
new file mode 100644
index 0000000..0658a86
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.43-v37.4.0.44
@@ -0,0 +1,32 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_43_TO_v37_4_0_44 Version v37.4.0.43 to version v37.4.0.44 changes
+ *
+ * \subsection v37_4_0_43_TO_v37_4_0_44Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.43 and v37.4.0.44
+ * \li \ref qcsapi_wifi_set_SSID_group_id
+ * \li \ref qcsapi_wifi_get_SSID_assoc_reserve
+ * \li \ref qcsapi_wifi_set_scs_leavedfs_chan_mtrc_mrgn
+ * \li \ref qcsapi_wifi_get_SSID_group_id
+ * \li \ref qcsapi_wifi_set_max_boot_cac_duration
+ * \li \ref qcsapi_set_custom_value
+ * \li \ref qcsapi_wifi_set_SSID_assoc_reserve
+ *
+ * \subsection v37_4_0_43_TO_v37_4_0_44Removed Removed functions
+ *
+ * The following functions were removed between versions v37.4.0.43 and v37.4.0.44
+ * \li \ref qcsapi_wifi_fget
+ *
+ * \subsection v37_4_0_43_TO_v37_4_0_44Proto Function prototype changes
+ *
+ * The following function prototypes were modified between versions v37.4.0.43 and v37.4.0.44
+ *  - \ref qcsapi_wifi_set_bss_assoc_limit
+ *    - Old prototype: int qcsapi_wifi_set_bss_assoc_limit(const char *ifname, qcsapi_unsigned_int assoc_limit);
+ *    - New prototype: int qcsapi_wifi_set_bss_assoc_limit(const qcsapi_unsigned_int group, const qcsapi_unsigned_int limit);
+ *  - \ref qcsapi_wifi_get_bss_assoc_limit
+ *    - Old prototype: int qcsapi_wifi_get_bss_assoc_limit(const char *ifname, qcsapi_unsigned_int *p_assoc_limit);
+ *    - New prototype: int qcsapi_wifi_get_bss_assoc_limit(qcsapi_unsigned_int group, qcsapi_unsigned_int *p_assoc_limit);
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.5-v37.4.0.6 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.5-v37.4.0.6
new file mode 100644
index 0000000..0075dc7
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.5-v37.4.0.6
@@ -0,0 +1,13 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_5_TO_v37_4_0_6 Version v37.4.0.5 to version v37.4.0.6 changes
+ *
+ * \subsection v37_4_0_5_TO_v37_4_0_6Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.5 and v37.4.0.6
+ *
+ * \li \ref qcsapi_wifi_ssid_get_bssid
+ * \li \ref qcsapi_wifi_ssid_set_bssid
+ * \li \ref qcsapi_get_eth_info
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.6-v37.4.0.7 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.6-v37.4.0.7
new file mode 100644
index 0000000..f8e25c5
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.6-v37.4.0.7
@@ -0,0 +1,20 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_6_TO_v37_4_0_7 Version v37.4.0.6 to version v37.4.0.7 changes
+ *
+ * \subsection v37_4_0_6_TO_v37_4_0_7Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.6 and v37.4.0.7
+ * \li \ref qcsapi_wifi_get_chan_power_table
+ * \li \ref qcsapi_wifi_get_scs_score_report
+ * \li \ref qcsapi_wifi_set_chan_power_table
+ *
+ * \subsection v37_4_0_6_TO_v37_4_0_7Proto Function prototype changes
+ *
+ * The following function prototypes were modified between versions v37.4.0.6 and v37.4.0.7
+ *  - \ref qcsapi_enable_vlan_pass_through
+ *    - Old prototype: int qcsapi_enable_vlan_pass_through(int enabled);
+ *    - New prototype: int qcsapi_enable_vlan_pass_through(const char *ifname, int enabled);
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.8-v37.4.0.9 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.8-v37.4.0.9
new file mode 100644
index 0000000..294b5ff
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.8-v37.4.0.9
@@ -0,0 +1,20 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_4_0_8_TO_v37_4_0_9 Version v37.4.0.8 to version v37.4.0.9 changes
+ *
+ * \subsection v37_4_0_8_TO_v37_4_0_9Added Added functions
+ *
+ * The following functions were added between versions v37.4.0.8 and v37.4.0.9
+ * \li \ref qcsapi_wifi_get_ap_interface_name
+ * \li \ref qcsapi_wifi_set_ap_interface_name
+ * \li \ref qcsapi_wifi_verify_repeater_mode
+ *
+ * \subsection v37_4_0_8_TO_v37_4_0_9Proto Function prototype changes
+ *
+ * The following function prototypes were modified between versions v37.4.0.8 and v37.4.0.9
+ *  - \ref qcsapi_get_uboot_info
+ *    - Old prototype: int qcsapi_get_uboot_info(char *info, qcsapi_unsigned_int uboot_info);
+ *    - New prototype: int qcsapi_get_uboot_info(string_32 uboot_version, struct early_flash_config *ef_config);
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/groupdefine.txt b/include/common/doxygen/qcsapi_doc/groupdefine.txt
index f1d2d95..44dced9 100644
--- a/include/common/doxygen/qcsapi_doc/groupdefine.txt
+++ b/include/common/doxygen/qcsapi_doc/groupdefine.txt
@@ -58,8 +58,9 @@
  * <TABLE>
  * <TR>	<TD>\b Parameter</TD>  <TD>\b Explanation    </TD>	<TD><b> Valid value</b></TD>	</TR>
  * <TR>	<TD>mode     </TD>  <TD>wifi mode            </TD>	<TD>ap<br>sta	</TD>		</TR>
- * <TR>	<TD>bw       </TD>  <TD>Bandwidth (802.11n)  </TD>	<TD>20<br>40	</TD>		</TR>
+ * <TR>	<TD>bw       </TD>  <TD>Bandwidth (802.11n)<br>Bandwidth (802.11ac)  </TD>	<TD>20/40<br>20/40/80	</TD>		</TR>
  * <TR>	<TD>channel  </TD>  <TD>WiFi channel (802.11)</TD>	<TD>Range:0 - 255</TD>		</TR>
+ * <TR>	<TD>pmf  </TD>  <TD>PMF capability (802.11w)</TD>	<TD>0 (disabled), 1 (optional) or 2 (disabled)</TD>		</TR>
  * </TABLE>
  * Special note regarding the WiFi channel parameter check - this should be considered a sanity check,
  * as the list of valid WiFi channels is much more restricted than the range [0 - 255].<br>
@@ -140,8 +141,8 @@
  *
  * <TABLE>
  * <TR><TD>\b ACname</TD><TD>\b ACindex</TD><TD>\b Priority</TD><TD>\b Description</TD></TR>
- * <TR><TD>AC_BK</TD><TD>0</TD><TD>Lowest</TD><TD>Background traffic</TD></TR>
- * <TR><TD>AC_BE</TD><TD>1</TD><TD> </TD><TD>Best effort traffic</TD></TR>
+ * <TR><TD>AC_BK</TD><TD>1</TD><TD>Lowest</TD><TD>Background traffic</TD></TR>
+ * <TR><TD>AC_BE</TD><TD>0</TD><TD> </TD><TD>Best effort traffic</TD></TR>
  * <TR><TD>AC_VI</TD><TD>2</TD><TD> </TD><TD>Video traffic</TD></TR>
  * <TR><TD>AC_VO</TD><TD>3</TD><TD>Highest</TD><TD>Voice traffic</TD></TR>
  * </TABLE>
@@ -301,14 +302,34 @@
  * \note All MAC Address Filtering APIs work with security configuration files.
  * Their location is determined by the get file path configuration API (section @ref File_Path_conf "File Path configuration").
  * Results from these APIs may be inconsistent or incorrect if the file path to this security configuration files has not been correctly configured.
- * 
+ *
  * @section mysection9_1 Data Type to Configure MAC Address Filtering
- * 
+ *
  * @section mysection9_2 Error Codes from MAC Address Filtering APIs
  * The API that returns a list of authorized MAC addresses will fail with an error code of Configuration Error if the MAC address filtering is not set to Deny Unless Authorized.
  * The API that returns a list of denied or blocked MAC addresses will fail with error code Configuration Error if the MAC address filtering is not set to Authorize Unless Denied.<br>
  * Both of those APIs will fail with an error code of Buffer Overflow if the length of the string is too short to store all MAC addresses. <br>
- * See @ref mysection4_1_4 "section here" for more details on error codes and error messages.
+ * See @ref mysection4_1_4 "QCSAPI Return Values" for more details on error codes and error messages.
+ */
+
+/**@defgroup MACReserveAPIs MAC Address Reservation APIs
+ * @brief MAC address reservation can be used to prevent associated WiFi devices and downstream
+ * devices from hijacking MAC addresses that belong to core network devices.
+ *
+ * MAC address reservation is implemented on an Access Point by configuring a list of up to six
+ * reserved MAC addresses.  An optional mask can be supplied with each entry in order to reserve a
+ * range of MAC addresses.
+ *
+ * The following example reserves 1c:6f:65:d1:bf:01 and the 16 MAC addresses from 1c:6f:65:d1:bf:10
+ * to 1c:6f:65:d1:bf:1f are reserved for devices on the wired side of the Access Point.
+ *
+ * <c>call_qcsapi set_macaddr_reserve wifi0 1c:6f:65:d1:bf:01</c>
+ *
+ * <c>call_qcsapi set_macaddr_reserve wifi0 1c:6f:65:d1:bf:10 ff:ff:ff:ff:ff:f0</c>
+ *
+ * Any association request with a source address that matches an entry in the reserved MAC address
+ * list is refused, and any Ethernet packet with a source address that matches an entry in the
+ * reserved MAC address list is dropped.
  */
 
 /**@defgroup OptionsAPIs Options
@@ -339,6 +360,14 @@
  * <TR>		<TD>qcsapi_GI_probing</TD>		<TD>GI_probing</TD>	</TR>
  * <TR>		<TD>qcsapi_GI_fixed</TD>		<TD>GI_fixed</TD>	</TR>
  * <TR>		<TD>qcsapi_stbc</TD>		<TD>stbc</TD>	</TR>
+ * <TR>		<TD>qcsapi_beamforming</TD>		<TD>beamforming</TD>	</TR>
+ * <TR>		<TD>qcsapi_short_slot</TD>		<TD>short_slot</TD>	</TR>
+ * <TR>		<TD>qcsapi_short_preamble</TD>		<TD>short_preamble</TD>	</TR>
+ * <TR>		<TD>qcsapi_rts_cts</TD>		<TD>rts_cts</TD>	</TR>
+ * <TR>		<TD>qcsapi_40M_only</TD>		<TD>40M_bw_only</TD>	</TR>
+ * <TR>		<TD>qcsapi_obss_coexist</TD>		<TD>obss_coexist</TD>	</TR>
+ * <TR>		<TD>qcsapi_11g_protection</TD>		<TD>11g_protection</TD>	</TR>
+ * <TR>		<TD>qcsapi_11n_protection</TD>		<TD>11n_protection</TD>	</TR>
  * </TABLE>
  * To access the get option API enter:<br>
  * <c>call_qcsapi get_option wifi0 \<option\>	</c><br>
@@ -678,16 +707,20 @@
  * 20 MHz.  Boot parameter <c>calstate</c> must be set to 1.
  */
 
-/**@defgroup DFSAPIs DFS / Radar APIs
+/**@defgroup DFSAPIs DFS, Radar and OCAC APIs
  * Selected channels in the 5 GHz frequency range are also used by weather and military radar.
  * To prevent unwanted interference, WiFi devices using those channels are required to follow special protocols, as describe in 802.11h.
  * APIs are available that list channels that are subject to the DFS protocols and channels that are not subject to those protocols.
  * A separate API reports whether a particular channel is subject to DFS protocols.
  * As the exact DFS-related regulations are determined by the regulatory authority,
  * the regulatory region is a required parameter for all these APIs.
+ *
+ * @section mysection16_1 OCAC
+ * OCAC is a feature where the DFS master device will periodically scan off-channel in order to detect radar on a channel different to
+ * the current operating channel. This feature is limited to operation with up to 2 BSSes only.
  */
 
-/**@defgroup ScanAPIs Reporting on the Results of a Scan for APs on the STA
+/**@defgroup ScanAPIs Scan APIs
  * This section describes APIs that report on properties of APs that were found when the STA scanned the WiFi channels.<br>
  * When a WiFi device configured as a STA starts up, it typically scans the WiFi channels for APs in its neighborhood.
  *
@@ -837,10 +870,6 @@
  * \brief These APIs are used to configure and get status for the Quantenna Smart Channel Select (SCS) feature.
  */
 
-/**@defgroup ParameterOCACAPIs Off Channel CAC APIs
- * \brief These APIs are used to configure, control and obtain status for off-channel CAC.
- */
-
 /**@defgroup VLANAPIs VLAN APIs
  * \brief These APIs are used to configure, control and obtain status for VLANs within the Quantenna device.
  *
@@ -892,3 +921,27 @@
 /**@defgroup StatisticsAPIs Statistics APIs
  * \brief These APIs are used to obtain statistics from the device.
  */
+
+/**@defgroup ServicesAPIs Linux Services APIs
+ * \brief These APIs are used for Linux daemon control.
+ */
+
+/**@defgroup QTM_group Quantenna Traffic Management (QTM) APIs
+ * \brief These APIs are used for Quantenna Traffic Management (QTM) configuration.
+ */
+
+/**@defgroup TDLS_group TDLS APIs
+ * \brief These APIs are used for configuration and control of TDLS.
+ */
+
+/**@defgroup MU_group Multi-user MIMO APIs
+ * \brief These APIs are used for debugging and display of MU details.
+ */
+
+/**@defgroup WOWLAN_group Wake on WLAN (WoWLAN) APIs
+ * \brief These APIs are used for Wake on WLAN configuration and control.
+ */
+
+/**@defgroup ANDROID_group Android APIs
+ * \brief These APIs are used for integrating QTN firmware with Android host.
+ */
diff --git a/include/common/doxygen/qcsapi_doc/vsp_doc.c b/include/common/doxygen/qcsapi_doc/vsp_doc.c
index 3f51cf7..f74a81a 100644
--- a/include/common/doxygen/qcsapi_doc/vsp_doc.c
+++ b/include/common/doxygen/qcsapi_doc/vsp_doc.c
@@ -310,7 +310,7 @@
 
 int main(int argc, char **argv)
 {
-	printf("/** \\addtogroup vsp_group\n\n");
+	printf("/** @addtogroup vsp_group\n\n");
 	create_cfg_table();
 	create_rule_table();
 	printf(" */\n");
diff --git a/include/common/ruby_arasan_emac_ahb.h b/include/common/ruby_arasan_emac_ahb.h
index 4e91368..2d36410 100755
--- a/include/common/ruby_arasan_emac_ahb.h
+++ b/include/common/ruby_arasan_emac_ahb.h
@@ -23,6 +23,10 @@
 #ifndef __COMMON_RUBY_ARASAN_EMAC_AHB_H
 #define __COMMON_RUBY_ARASAN_EMAC_AHB_H	1
 
+#ifdef TOPAZ_AMBER_IP
+#include <include/qtn/amber.h>
+#endif
+
 extern __inline__ void __mydelay(unsigned long loops)
 {
 	__asm__ __volatile__ ( "1: \n\t"
@@ -347,9 +351,13 @@
 
 	/* both interfaces (if enabled) must use same mii config so we can just or here */
 	writel(RUBY_SYS_CTL_MASK_MII, RUBY_SYS_CTL_MASK);
-	if (emac_cfg & EMAC_PHY_MII) {
-		writel(RUBY_SYS_CTL_MASK_MII, RUBY_SYS_CTL_CTRL);
-	} else {
+	if (emac0_cfg & EMAC_PHY_MII) {
+		writel(RUBY_SYS_CTL_MASK_MII_EMAC0, RUBY_SYS_CTL_CTRL);
+	}
+	if (emac1_cfg & EMAC_PHY_MII) {
+		writel(RUBY_SYS_CTL_MASK_MII_EMAC1, RUBY_SYS_CTL_CTRL);
+	}
+	if (!(emac0_cfg & EMAC_PHY_MII) && !(emac1_cfg & EMAC_PHY_MII)){
 		writel(0, RUBY_SYS_CTL_CTRL);
 	}
 	/* Have PLL clock signal go out */
@@ -377,14 +385,13 @@
 	} else if (emac0_cfg & EMAC_IN_USE) {
 		reset_mask = RUBY_SYS_CTL_RESET_ENET0;
 	}
-#ifdef TOPAZ_PLATFORM
+#ifdef TOPAZ_AMBER_IP
+	amber_bus_flush_req(TOPAZ_AMBER_BUS_FLUSH_RGMII);
+#endif
 	if (ext_reset) {
 		reset_mask |= RUBY_SYS_CTL_RESET_EXT;
 	}
 	if (reset_mask && (readl(RUBY_SYS_CTL_CPU_VEC) & reset_mask) != reset_mask) {
-#else
-	if (reset_mask) {
-#endif
 		writel(reset_mask, RUBY_SYS_CTL_CPU_VEC_MASK);
 		if (ext_reset) {
 			writel(RUBY_SYS_CTL_RESET_EXT, RUBY_SYS_CTL_CPU_VEC);
@@ -400,6 +407,9 @@
 
 	writel(0, RUBY_SYS_CTL_MASK);
 	writel(0, RUBY_SYS_CTL_CPU_VEC_MASK);
+#ifdef TOPAZ_AMBER_IP
+	amber_bus_flush_release(TOPAZ_AMBER_BUS_FLUSH_RGMII);
+#endif
 
 	/*
 	 * Trigger dummy MDIO read to set MDC clock
diff --git a/include/common/ruby_board_cfg.h b/include/common/ruby_board_cfg.h
index 8011d68..dc5275a 100644
--- a/include/common/ruby_board_cfg.h
+++ b/include/common/ruby_board_cfg.h
@@ -25,17 +25,6 @@
 
 #include "ruby_platform.h"
 
-#ifndef TOPAZ_PLATFORM
-
-	#ifdef PLATFORM_DEFAULT_BOARD_ID
-		#define DEFAULT_BOARD_ID        PLATFORM_DEFAULT_BOARD_ID
-	#else
-        	/* Default board id used to match Ruby settings if there is no SPI Flash */
-        	#define  DEFAULT_BOARD_ID	QTN_RUBY_BOARD_TYPE_DEFAULT
-	#endif /* #ifdef PLATFORM_DEFAULT_BOARD_ID */
-
-#endif /* #ifndef TOPAZ_PLATFORM */
-
 #define	SPI1_NOT_IN_USE			(0)
 #define	SPI1_IN_USE			(BIT(0))
 
diff --git a/include/common/ruby_board_db.h b/include/common/ruby_board_db.h
index df2b056..da7883d 100644
--- a/include/common/ruby_board_db.h
+++ b/include/common/ruby_board_db.h
@@ -140,10 +140,17 @@
 	CFGSTR(QTN_TPZ_SE5003L1),
 	CFGSTR(QTN_TPZ_SE5003L1_INV),
 	CFGSTR(QTN_TPZ_SKY85703),
+	CFGSTR(QTN_TPZ_DBS),
 	CFGSTR(QTN_TPZ_SKY85405_BPF840),
 	CFGSTR(QTN_TPZ_DBS),
 	CFGSTR(QTN_TPZ_SE5502L),
 	CFGSTR(QTN_TPZ_SKY85710_NG),
+	CFGSTR(QTN_TPZ_DBS_5591),
+	CFGSTR(QTN_TPZ_DBS_5591),
+	CFGSTR(QTN_TPZ_DBS_NXP_BGU7224_BGU7258),
+	CFGSTR(QTN_TPZ_2_4GHZ_NXP_BGU7224),
+	CFGSTR(QTN_TPZ_5GHZ_NXP_BGU7258),
+	CFGSTR(QTN_TPZ_5GHZ_SKY85728),
 	{ "DEFAULT_WIFI_HW", QTN_RUBY_REF_RWPA },
 	{ 0 , 0 }
 };
@@ -228,9 +235,11 @@
 
 #define RFIC_NOT_IN_USE		0
 #define RFIC_V4_IN_USE		4
+#define RFIC_V6_IN_USE		6
 static const struct ruby_cfgstr_map g_cfgstr_rfic[] = {
 	CFGSTR(RFIC_NOT_IN_USE),
 	CFGSTR(RFIC_V4_IN_USE),
+	CFGSTR(RFIC_V6_IN_USE),
 	{ "DEFAULT_RFIC", RFIC_V4_IN_USE },
 	{ 0 , 0 }
 };
diff --git a/include/common/ruby_config.h b/include/common/ruby_config.h
index 0595381..c50e98a 100644
--- a/include/common/ruby_config.h
+++ b/include/common/ruby_config.h
@@ -120,11 +120,13 @@
 #define EMAC_PHY_ADDR_SCAN		(32)	// scan bus for addr
 
 /* Flash memory sizes */
+#define FLASH_64MB			(64*1024*1024)
 #define FLASH_32MB			(32*1024*1024)
 #define FLASH_16MB			(16*1024*1024)
 #define FLASH_8MB			(8*1024*1024)
 #define FLASH_4MB			(4*1024*1024)
 #define FLASH_2MB			(2*1024*1024)
+#define FLASH_256KB			(256*1024)
 #define FLASH_64KB			(64*1024)
 #define DEFAULT_FLASH_SIZE		(FLASH_8MB)
 #define FLASH_SIZE_JEDEC		(0)
diff --git a/include/common/ruby_mem.h b/include/common/ruby_mem.h
index ed84487..013e07b 100644
--- a/include/common/ruby_mem.h
+++ b/include/common/ruby_mem.h
@@ -38,82 +38,60 @@
 #define RUBY_DSP_XYMEM_END			0xDFFFFFFF
 
 /* SRAM layout */
-#define RUBY_CRUMBS_SIZE		64	/* bytes at the very end of sram for crash tracing */
 
-#ifdef TOPAZ_PLATFORM
 #ifdef QTN_RC_ENABLE_HDP
-	#define TOPAZ_HBM_BUF_EMAC_RX_COUNT_S		(14)
-	#define TOPAZ_HBM_BUF_WMAC_RX_COUNT_S		(0)
+#define TOPAZ_HBM_BUF_EMAC_RX_COUNT_S		(14)
+#define TOPAZ_HBM_BUF_WMAC_RX_COUNT_S		(0)
 #else
-	#define TOPAZ_HBM_BUF_EMAC_RX_COUNT_S		(13)
-	#define TOPAZ_HBM_BUF_WMAC_RX_COUNT_S		(11)
+#define TOPAZ_HBM_BUF_EMAC_RX_COUNT_S		(13)
+#define TOPAZ_HBM_BUF_WMAC_RX_COUNT_S		(11)
 #endif
-	#define TOPAZ_HBM_EMAC_TX_DONE_COUNT_S		(12)
+#define TOPAZ_HBM_EMAC_TX_DONE_COUNT_S		(12)
 
-	#define TOPAZ_HBM_BUF_EMAC_RX_COUNT		(1 << TOPAZ_HBM_BUF_EMAC_RX_COUNT_S)
-	#define TOPAZ_HBM_BUF_WMAC_RX_COUNT		(1 << TOPAZ_HBM_BUF_WMAC_RX_COUNT_S)
-	#define TOPAZ_HBM_EMAC_TX_DONE_COUNT		(1 << TOPAZ_HBM_EMAC_TX_DONE_COUNT_S)
+#define TOPAZ_HBM_BUF_EMAC_RX_COUNT		(1 << TOPAZ_HBM_BUF_EMAC_RX_COUNT_S)
+#define TOPAZ_HBM_BUF_WMAC_RX_COUNT		(1 << TOPAZ_HBM_BUF_WMAC_RX_COUNT_S)
+#define TOPAZ_HBM_EMAC_TX_DONE_COUNT		(1 << TOPAZ_HBM_EMAC_TX_DONE_COUNT_S)
 
-	/* dedicated SRAM space for HBM pointer pools */
-	#define TOPAZ_HBM_POOL_PTR_SIZE			4	/* sizeof(void *), 32 bit arch */
-	#define TOPAZ_HBM_POOL_EMAC_RX_START		0x00000000
-	#define TOPAZ_HBM_POOL_EMAC_RX_SIZE		(TOPAZ_HBM_BUF_EMAC_RX_COUNT * TOPAZ_HBM_POOL_PTR_SIZE)
-	#define TOPAZ_HBM_POOL_EMAC_RX_END		(TOPAZ_HBM_POOL_EMAC_RX_START + TOPAZ_HBM_POOL_EMAC_RX_SIZE)
-	#define TOPAZ_HBM_POOL_WMAC_RX_START		TOPAZ_HBM_POOL_EMAC_RX_END
-	#define TOPAZ_HBM_POOL_WMAC_RX_SIZE		(TOPAZ_HBM_BUF_WMAC_RX_COUNT * TOPAZ_HBM_POOL_PTR_SIZE)
-	#define TOPAZ_HBM_POOL_WMAC_RX_END		(TOPAZ_HBM_POOL_WMAC_RX_START + TOPAZ_HBM_POOL_WMAC_RX_SIZE)
-	#define TOPAZ_HBM_POOL_EMAC_TX_DONE_START	TOPAZ_HBM_POOL_WMAC_RX_END
-	#define TOPAZ_HBM_POOL_EMAC_TX_DONE_SIZE	(TOPAZ_HBM_EMAC_TX_DONE_COUNT * TOPAZ_HBM_POOL_PTR_SIZE)
-	#define TOPAZ_HBM_POOL_EMAC_TX_DONE_END		(TOPAZ_HBM_POOL_EMAC_TX_DONE_START + TOPAZ_HBM_POOL_EMAC_TX_DONE_SIZE)
-	#define TOPAZ_FWT_SW_START			TOPAZ_HBM_POOL_EMAC_TX_DONE_END
-	#define TOPAZ_FWT_SW_SIZE			(4096)
-	#define TOPAZ_FWT_SW_END			(TOPAZ_FWT_SW_START + TOPAZ_FWT_SW_SIZE)
-	#define CONFIG_ARC_KERNEL_SRAM_B1_BASE		ROUNDUP(TOPAZ_FWT_SW_END, CONFIG_ARC_KERNEL_PAGE_SIZE)
-	#define CONFIG_ARC_KERNEL_SRAM_B1_SIZE		(30 * 1024)
-	#define CONFIG_ARC_KERNEL_SRAM_B1_END		(CONFIG_ARC_KERNEL_SRAM_B1_BASE + CONFIG_ARC_KERNEL_SRAM_B1_SIZE)
-	#define CONFIG_ARC_KERNEL_SRAM_B2_BASE		CONFIG_ARC_KERNEL_SRAM_B1_END
-	#define CONFIG_ARC_KERNEL_SRAM_B2_END		(ROUNDUP(CONFIG_ARC_KERNEL_SRAM_B2_BASE, RUBY_SRAM_BANK_SIZE) -	\
-							 ROUNDUP(TOPAZ_VNET_WR_STAGING_RESERVE, CONFIG_ARC_KERNEL_PAGE_SIZE))
-	#define CONFIG_ARC_KERNEL_SRAM_B2_SIZE		(CONFIG_ARC_KERNEL_SRAM_B2_END - CONFIG_ARC_KERNEL_SRAM_B2_BASE)
-	#define TOPAZ_VNET_WR_STAGING_1_START		CONFIG_ARC_KERNEL_SRAM_B2_END
-	#define TOPAZ_VNET_WR_STAGING_1_SIZE		TOPAZ_VNET_WR_STAGING_RESERVE
-	#define TOPAZ_VNET_WR_STAGING_1_END		(TOPAZ_VNET_WR_STAGING_1_START + TOPAZ_VNET_WR_STAGING_1_SIZE)
-	#define TOPAZ_VNET_WR_STAGING_2_START		ROUNDUP(TOPAZ_VNET_WR_STAGING_1_END, RUBY_SRAM_BANK_SIZE)
-	#define TOPAZ_VNET_WR_STAGING_2_SIZE		TOPAZ_VNET_WR_STAGING_RESERVE
-	#define TOPAZ_VNET_WR_STAGING_2_END		(TOPAZ_VNET_WR_STAGING_2_START + TOPAZ_VNET_WR_STAGING_2_SIZE)
-	#if TOPAZ_VNET_WR_STAGING_2_START != (2 * RUBY_SRAM_BANK_SIZE)
-		#error SRAM linkmap error forming topaz sram wr staging
-	#endif
-	#define CONFIG_ARC_MUC_SRAM_B1_BASE		ROUNDUP(TOPAZ_VNET_WR_STAGING_2_END, CONFIG_ARC_KERNEL_PAGE_SIZE)
-	#define CONFIG_ARC_MUC_SRAM_B1_END		ROUNDUP(CONFIG_ARC_MUC_SRAM_B1_BASE + 1, RUBY_SRAM_BANK_SIZE)
-	#define CONFIG_ARC_MUC_SRAM_B1_SIZE		(CONFIG_ARC_MUC_SRAM_B1_END - CONFIG_ARC_MUC_SRAM_B1_BASE)
-	#define CONFIG_ARC_MUC_SRAM_B2_BASE		ROUNDUP(CONFIG_ARC_MUC_SRAM_B1_END, RUBY_SRAM_BANK_SIZE)
-	#define CONFIG_ARC_MUC_SRAM_B2_SIZE		(RUBY_SRAM_BANK_SAFE_SIZE - RUBY_CRUMBS_SIZE)
-	#define CONFIG_ARC_MUC_SRAM_B2_END		(CONFIG_ARC_MUC_SRAM_B2_BASE + CONFIG_ARC_MUC_SRAM_B2_SIZE)
-	#define CONFIG_ARC_AUC_SRAM_BASE		ROUNDUP(CONFIG_ARC_MUC_SRAM_B2_END, RUBY_SRAM_BANK_SIZE)
-	#define CONFIG_ARC_AUC_SRAM_SIZE		(3 * RUBY_SRAM_BANK_SIZE)
-	#define CONFIG_ARC_AUC_SRAM_END			(CONFIG_ARC_AUC_SRAM_BASE + CONFIG_ARC_AUC_SRAM_SIZE)
-	#define CONFIG_ARC_SRAM_END			CONFIG_ARC_AUC_SRAM_END
+/* dedicated SRAM space for HBM pointer pools */
+#define TOPAZ_HBM_POOL_PTR_SIZE			4	/* sizeof(void *), 32 bit arch */
+#define TOPAZ_HBM_POOL_EMAC_RX_START		0x00000000
+#define TOPAZ_HBM_POOL_EMAC_RX_SIZE		(TOPAZ_HBM_BUF_EMAC_RX_COUNT * TOPAZ_HBM_POOL_PTR_SIZE)
+#define TOPAZ_HBM_POOL_EMAC_RX_END		(TOPAZ_HBM_POOL_EMAC_RX_START + TOPAZ_HBM_POOL_EMAC_RX_SIZE)
+#define TOPAZ_HBM_POOL_WMAC_RX_START		TOPAZ_HBM_POOL_EMAC_RX_END
+#define TOPAZ_HBM_POOL_WMAC_RX_SIZE		(TOPAZ_HBM_BUF_WMAC_RX_COUNT * TOPAZ_HBM_POOL_PTR_SIZE)
+#define TOPAZ_HBM_POOL_WMAC_RX_END		(TOPAZ_HBM_POOL_WMAC_RX_START + TOPAZ_HBM_POOL_WMAC_RX_SIZE)
+#define TOPAZ_HBM_POOL_EMAC_TX_DONE_START	TOPAZ_HBM_POOL_WMAC_RX_END
+#define TOPAZ_HBM_POOL_EMAC_TX_DONE_SIZE	(TOPAZ_HBM_EMAC_TX_DONE_COUNT * TOPAZ_HBM_POOL_PTR_SIZE)
+#define TOPAZ_HBM_POOL_EMAC_TX_DONE_END		(TOPAZ_HBM_POOL_EMAC_TX_DONE_START + TOPAZ_HBM_POOL_EMAC_TX_DONE_SIZE)
+#define TOPAZ_FWT_SW_START			TOPAZ_HBM_POOL_EMAC_TX_DONE_END
+#define TOPAZ_FWT_SW_SIZE			(4096)
+#define TOPAZ_FWT_SW_END			(TOPAZ_FWT_SW_START + TOPAZ_FWT_SW_SIZE)
 
-	/* MU TxBF qmatrix is stored at the last bank of SRAM, DSP writes to it, has to use SRAM BUS addr */
-        #define CONFIG_ARC_MU_QMAT_BASE			(RUBY_SRAM_BUS_BEGIN + 0X70000)
-	#define CONFIG_ARC_MU_QMAT_SIZE			RUBY_SRAM_BANK_SIZE
-	#define CONFIG_ARC_MU_QMAT_END			(CONFIG_ARC_MU_QMAT_BASE + CONFIG_ARC_MU_QMAT_SIZE)
+#define CONFIG_MUC_EXTRA_RES_BASE		TOPAZ_FWT_SW_END
+#define CONFIG_MUC_EXTRA_RESERVE_SIZE		(8 * 1024)
+#define CONFIG_MUC_EXTRA_RES_END		(CONFIG_MUC_EXTRA_RES_BASE + CONFIG_MUC_EXTRA_RESERVE_SIZE)
 
-#else	/* Ruby */
-	#define CONFIG_ARC_KERNEL_SRAM_B1_BASE		0x00000000
-	#define CONFIG_ARC_KERNEL_SRAM_B1_SIZE		RUBY_SRAM_BANK_SAFE_SIZE
-	#define CONFIG_ARC_KERNEL_SRAM_B1_END		(CONFIG_ARC_KERNEL_SRAM_B1_BASE + CONFIG_ARC_KERNEL_SRAM_B1_SIZE)
-	#define CONFIG_ARC_KERNEL_SRAM_B2_BASE		(CONFIG_ARC_KERNEL_SRAM_B1_BASE + RUBY_SRAM_BANK_SIZE)
-	#define CONFIG_ARC_KERNEL_SRAM_B2_SIZE		RUBY_SRAM_BANK_SAFE_SIZE
-	#define CONFIG_ARC_KERNEL_SRAM_B2_END		(CONFIG_ARC_KERNEL_SRAM_B2_BASE + CONFIG_ARC_KERNEL_SRAM_B2_SIZE)
-	#define CONFIG_ARC_MUC_SRAM_B1_BASE		ROUNDUP(CONFIG_ARC_KERNEL_SRAM_B2_END, RUBY_SRAM_BANK_SIZE)
-	#define CONFIG_ARC_MUC_SRAM_B1_SIZE		RUBY_SRAM_BANK_SAFE_SIZE
-	#define CONFIG_ARC_MUC_SRAM_B1_END		(CONFIG_ARC_MUC_SRAM_B1_BASE + CONFIG_ARC_MUC_SRAM_B1_SIZE)
-	#define CONFIG_ARC_MUC_SRAM_B2_BASE		ROUNDUP(CONFIG_ARC_MUC_SRAM_B1_END, RUBY_SRAM_BANK_SIZE)
-	#define CONFIG_ARC_MUC_SRAM_B2_SIZE		(RUBY_SRAM_BANK_SAFE_SIZE - RUBY_CRUMBS_SIZE)
-	#define CONFIG_ARC_MUC_SRAM_B2_END		(CONFIG_ARC_MUC_SRAM_B2_BASE + CONFIG_ARC_MUC_SRAM_B2_SIZE)
-#endif /* TOPAZ_PLATFORM */
+#define CONFIG_ARC_KERNEL_SRAM_B1_BASE		ROUNDUP(CONFIG_MUC_EXTRA_RES_END, CONFIG_ARC_KERNEL_PAGE_SIZE)
+#define CONFIG_ARC_KERNEL_SRAM_B1_SIZE		(22 * 1024)
+#define CONFIG_ARC_KERNEL_SRAM_B1_END		(CONFIG_ARC_KERNEL_SRAM_B1_BASE + CONFIG_ARC_KERNEL_SRAM_B1_SIZE)
+#define CONFIG_ARC_KERNEL_SRAM_B2_BASE		CONFIG_ARC_KERNEL_SRAM_B1_END
+#define CONFIG_ARC_KERNEL_SRAM_B2_END		ROUNDUP(CONFIG_ARC_KERNEL_SRAM_B2_BASE, RUBY_SRAM_BANK_SIZE)
+#define CONFIG_ARC_KERNEL_SRAM_B2_SIZE		(CONFIG_ARC_KERNEL_SRAM_B2_END - CONFIG_ARC_KERNEL_SRAM_B2_BASE)
+#define CONFIG_ARC_MUC_SRAM_B1_BASE		ROUNDUP(CONFIG_ARC_KERNEL_SRAM_B2_END, CONFIG_ARC_KERNEL_PAGE_SIZE)
+#define CONFIG_ARC_MUC_SRAM_B1_END		ROUNDUP(CONFIG_ARC_MUC_SRAM_B1_BASE + 1, RUBY_SRAM_BANK_SIZE)
+#define CONFIG_ARC_MUC_SRAM_B1_SIZE		(CONFIG_ARC_MUC_SRAM_B1_END - CONFIG_ARC_MUC_SRAM_B1_BASE)
+#define CONFIG_ARC_MUC_SRAM_B2_BASE		ROUNDUP(CONFIG_ARC_MUC_SRAM_B1_END, RUBY_SRAM_BANK_SIZE)
+#define CONFIG_ARC_MUC_SRAM_B2_SIZE		(RUBY_SRAM_BANK_SAFE_SIZE - RUBY_CRUMBS_SIZE)
+#define CONFIG_ARC_MUC_SRAM_B2_END		(CONFIG_ARC_MUC_SRAM_B2_BASE + CONFIG_ARC_MUC_SRAM_B2_SIZE)
+#define CONFIG_ARC_AUC_SRAM_BASE		ROUNDUP(CONFIG_ARC_MUC_SRAM_B2_END, RUBY_SRAM_BANK_SIZE)
+#define CONFIG_ARC_AUC_SRAM_SIZE		(3 * RUBY_SRAM_BANK_SIZE)
+#define CONFIG_ARC_AUC_SRAM_END			(CONFIG_ARC_AUC_SRAM_BASE + CONFIG_ARC_AUC_SRAM_SIZE)
+#define CONFIG_ARC_SRAM_END			CONFIG_ARC_AUC_SRAM_END
+
+/* MU TxBF qmatrix is stored at the last bank of SRAM, DSP writes to it, has to use SRAM BUS addr */
+#define CONFIG_ARC_MU_QMAT_BASE			(RUBY_SRAM_BUS_BEGIN + 0X70000)
+#define CONFIG_ARC_MU_QMAT_SIZE			RUBY_SRAM_BANK_SIZE
+#define CONFIG_ARC_MU_QMAT_END			(CONFIG_ARC_MU_QMAT_BASE + CONFIG_ARC_MU_QMAT_SIZE)
 
 #if TOPAZ_RX_ACCELERATE
 	/* TODO FIXME - MuC crashed when copying data between SRAM and DDR */
@@ -142,107 +120,100 @@
 #define CONFIG_ARC_DSP_SIZE		(768 * 1024)
 #define CONFIG_ARC_DSP_END		(CONFIG_ARC_DSP_BASE + CONFIG_ARC_DSP_SIZE)
 #define CONFIG_ARC_MUC_BASE		CONFIG_ARC_DSP_END
-#ifdef TOPAZ_PLATFORM
 #ifdef TOPAZ_128_NODE_MODE
-#define CONFIG_ARC_MUC_SIZE		((3 * 1024 * 1024) + (368 * 1024))
+#define CONFIG_ARC_MUC_SIZE		((3 * 1024 * 1024) + (580 * 1024))
 #else
 #define CONFIG_ARC_MUC_SIZE		((2 * 1024 * 1024) + (768 * 1024))
 #endif
-#else
-#define CONFIG_ARC_MUC_SIZE             ((1 * 1024 * 1024) + (640 * 1024))
-#endif
+#define MUC_DRAM_RX_RESVERED_RELOC_SIZE		(8 * 1024)
 #define CONFIG_ARC_MUC_END		(CONFIG_ARC_MUC_BASE + CONFIG_ARC_MUC_SIZE)
 #define CONFIG_ARC_MUC_MAPPED_BASE	CONFIG_ARC_MUC_BASE
 #define CONFIG_ARC_MUC_MAPPED_SIZE	(RUBY_MAX_DRAM_SIZE - CONFIG_ARC_MUC_MAPPED_BASE)
-#ifdef TOPAZ_PLATFORM
-	#define CONFIG_ARC_AUC_BASE		CONFIG_ARC_MUC_END
-	#define CONFIG_ARC_AUC_SIZE		(1024 * 1024 + 768 * 1024 + 40 * 1024)
-	#define CONFIG_ARC_AUC_END		(CONFIG_ARC_AUC_BASE + CONFIG_ARC_AUC_SIZE)
-	#define TOPAZ_HBM_BUF_ALIGN		(1 * 1024)
 
-	#define TOPAZ_HBM_BUF_EMAC_RX_POOL	0
-	#define TOPAZ_HBM_BUF_WMAC_RX_POOL	1
-	#define TOPAZ_HBM_AUC_FEEDBACK_POOL	2
-	#define TOPAZ_HBM_EMAC_TX_DONE_POOL	3
+#define CONFIG_ARC_AUC_BASE		CONFIG_ARC_MUC_END
+#define CONFIG_ARC_AUC_SIZE		(1024 * 1024 + 768 * 1024 + 40 * 1024)
+#define CONFIG_ARC_AUC_END		(CONFIG_ARC_AUC_BASE + CONFIG_ARC_AUC_SIZE)
+#define TOPAZ_HBM_BUF_ALIGN		(1 * 1024)
 
-	#define TOPAZ_HBM_BUF_EMAC_RX_SIZE	(4 * 1024)
-	#define TOPAZ_HBM_BUF_WMAC_RX_SIZE	(17 * 1024)
+#define TOPAZ_HBM_BUF_EMAC_RX_POOL	0
+#define TOPAZ_HBM_BUF_WMAC_RX_POOL	1
+#define TOPAZ_HBM_AUC_FEEDBACK_POOL	2
+#define TOPAZ_HBM_EMAC_TX_DONE_POOL	3
 
-	#define TOPAZ_HBM_BUF_META_SIZE		64		/* keep it 2^n */
-	#define TOPAZ_HBM_POOL_GUARD_SIZE	(64 * 1024)
+#define TOPAZ_HBM_BUF_EMAC_RX_SIZE	(4 * 1024)
+#define TOPAZ_HBM_BUF_WMAC_RX_SIZE	(17 * 1024)
 
-	#define TOPAZ_HBM_BUF_EMAC_RX_TOTAL	(TOPAZ_HBM_BUF_EMAC_RX_COUNT *	\
-							TOPAZ_HBM_BUF_EMAC_RX_SIZE)
-	#define TOPAZ_HBM_BUF_WMAC_RX_TOTAL	(TOPAZ_HBM_BUF_WMAC_RX_COUNT *	\
-							TOPAZ_HBM_BUF_WMAC_RX_SIZE)
-	#define TOPAZ_HBM_BUF_META_BASE		CONFIG_ARC_AUC_END
+#define TOPAZ_HBM_BUF_META_SIZE		64		/* keep it 2^n */
+#define TOPAZ_HBM_POOL_GUARD_SIZE	(64 * 1024)
 
-	#define TOPAZ_HBM_BUF_META_EMAC_RX_BASE		(TOPAZ_HBM_BUF_META_BASE + TOPAZ_HBM_BUF_META_SIZE)
-	#define TOPAZ_HBM_BUF_META_EMAC_RX_BASE_VIRT	(RUBY_DRAM_BEGIN + TOPAZ_HBM_BUF_META_EMAC_RX_BASE)
-	#define TOPAZ_HBM_BUF_META_EMAC_RX_TOTAL	(TOPAZ_HBM_BUF_EMAC_RX_COUNT * \
-								TOPAZ_HBM_BUF_META_SIZE)
-	#define TOPAZ_HBM_BUF_META_EMAC_RX_END		(TOPAZ_HBM_BUF_META_EMAC_RX_BASE + \
-								TOPAZ_HBM_BUF_META_EMAC_RX_TOTAL)
+#define TOPAZ_HBM_BUF_EMAC_RX_TOTAL	(TOPAZ_HBM_BUF_EMAC_RX_COUNT *	\
+						TOPAZ_HBM_BUF_EMAC_RX_SIZE)
+#define TOPAZ_HBM_BUF_WMAC_RX_TOTAL	(TOPAZ_HBM_BUF_WMAC_RX_COUNT *	\
+						TOPAZ_HBM_BUF_WMAC_RX_SIZE)
+#define TOPAZ_HBM_BUF_META_BASE		CONFIG_ARC_AUC_END
 
-	#define TOPAZ_HBM_BUF_META_WMAC_RX_BASE		(TOPAZ_HBM_BUF_META_EMAC_RX_END + TOPAZ_HBM_BUF_META_SIZE)
-	#define TOPAZ_HBM_BUF_META_WMAC_RX_BASE_VIRT	(RUBY_DRAM_BEGIN + TOPAZ_HBM_BUF_META_WMAC_RX_BASE)
-	#define TOPAZ_HBM_BUF_META_WMAC_RX_TOTAL	(TOPAZ_HBM_BUF_WMAC_RX_COUNT * \
-								TOPAZ_HBM_BUF_META_SIZE)
-	#define TOPAZ_HBM_BUF_META_WMAC_RX_END		(TOPAZ_HBM_BUF_META_WMAC_RX_BASE + \
-								TOPAZ_HBM_BUF_META_WMAC_RX_TOTAL)
+#define TOPAZ_HBM_BUF_META_EMAC_RX_BASE		(TOPAZ_HBM_BUF_META_BASE + TOPAZ_HBM_BUF_META_SIZE)
+#define TOPAZ_HBM_BUF_META_EMAC_RX_BASE_VIRT	(RUBY_DRAM_BEGIN + TOPAZ_HBM_BUF_META_EMAC_RX_BASE)
+#define TOPAZ_HBM_BUF_META_EMAC_RX_TOTAL	(TOPAZ_HBM_BUF_EMAC_RX_COUNT * \
+							TOPAZ_HBM_BUF_META_SIZE)
+#define TOPAZ_HBM_BUF_META_EMAC_RX_END		(TOPAZ_HBM_BUF_META_EMAC_RX_BASE + \
+							TOPAZ_HBM_BUF_META_EMAC_RX_TOTAL)
 
-	#define TOPAZ_HBM_BUF_META_END		(TOPAZ_HBM_BUF_META_WMAC_RX_END + TOPAZ_HBM_BUF_META_SIZE)
-	#define TOPAZ_HBM_BUF_META_TOTAL	(TOPAZ_HBM_BUF_META_END - TOPAZ_HBM_BUF_META_BASE)
+#define TOPAZ_HBM_BUF_META_WMAC_RX_BASE		(TOPAZ_HBM_BUF_META_EMAC_RX_END + TOPAZ_HBM_BUF_META_SIZE)
+#define TOPAZ_HBM_BUF_META_WMAC_RX_BASE_VIRT	(RUBY_DRAM_BEGIN + TOPAZ_HBM_BUF_META_WMAC_RX_BASE)
+#define TOPAZ_HBM_BUF_META_WMAC_RX_TOTAL	(TOPAZ_HBM_BUF_WMAC_RX_COUNT * \
+							TOPAZ_HBM_BUF_META_SIZE)
+#define TOPAZ_HBM_BUF_META_WMAC_RX_END		(TOPAZ_HBM_BUF_META_WMAC_RX_BASE + \
+							TOPAZ_HBM_BUF_META_WMAC_RX_TOTAL)
 
-	#define TOPAZ_HBM_BUF_BASE		ROUNDUP(TOPAZ_HBM_BUF_META_END, TOPAZ_HBM_BUF_ALIGN)
+#define TOPAZ_HBM_BUF_META_END		(TOPAZ_HBM_BUF_META_WMAC_RX_END + TOPAZ_HBM_BUF_META_SIZE)
+#define TOPAZ_HBM_BUF_META_TOTAL	(TOPAZ_HBM_BUF_META_END - TOPAZ_HBM_BUF_META_BASE)
 
-	#define TOPAZ_HBM_BUF_EMAC_RX_BASE	(TOPAZ_HBM_BUF_BASE + TOPAZ_HBM_POOL_GUARD_SIZE)
-	#define TOPAZ_HBM_BUF_EMAC_RX_BASE_VIRT	(RUBY_DRAM_BEGIN + TOPAZ_HBM_BUF_EMAC_RX_BASE)
-	#define TOPAZ_HBM_BUF_EMAC_RX_END	(TOPAZ_HBM_BUF_EMAC_RX_BASE +	\
-							TOPAZ_HBM_BUF_EMAC_RX_TOTAL)
+#define TOPAZ_HBM_BUF_BASE		ROUNDUP(TOPAZ_HBM_BUF_META_END, TOPAZ_HBM_BUF_ALIGN)
 
-	#define TOPAZ_HBM_BUF_WMAC_RX_BASE	(TOPAZ_HBM_BUF_EMAC_RX_END + TOPAZ_HBM_POOL_GUARD_SIZE)
-	#define TOPAZ_HBM_BUF_WMAC_RX_BASE_VIRT	(RUBY_DRAM_BEGIN + TOPAZ_HBM_BUF_WMAC_RX_BASE)
-	#define TOPAZ_HBM_BUF_WMAC_RX_END	(TOPAZ_HBM_BUF_WMAC_RX_BASE +	\
-							TOPAZ_HBM_BUF_WMAC_RX_TOTAL)
+#define TOPAZ_HBM_BUF_EMAC_RX_BASE	(TOPAZ_HBM_BUF_BASE + TOPAZ_HBM_POOL_GUARD_SIZE)
+#define TOPAZ_HBM_BUF_EMAC_RX_BASE_VIRT	(RUBY_DRAM_BEGIN + TOPAZ_HBM_BUF_EMAC_RX_BASE)
+#define TOPAZ_HBM_BUF_EMAC_RX_END	(TOPAZ_HBM_BUF_EMAC_RX_BASE +	\
+						TOPAZ_HBM_BUF_EMAC_RX_TOTAL)
 
-	#define TOPAZ_HBM_BUF_END		(TOPAZ_HBM_BUF_WMAC_RX_END + TOPAZ_HBM_POOL_GUARD_SIZE)
+#define TOPAZ_HBM_BUF_WMAC_RX_BASE	(TOPAZ_HBM_BUF_EMAC_RX_END + TOPAZ_HBM_POOL_GUARD_SIZE)
+#define TOPAZ_HBM_BUF_WMAC_RX_BASE_VIRT	(RUBY_DRAM_BEGIN + TOPAZ_HBM_BUF_WMAC_RX_BASE)
+#define TOPAZ_HBM_BUF_WMAC_RX_END	(TOPAZ_HBM_BUF_WMAC_RX_BASE +	\
+						TOPAZ_HBM_BUF_WMAC_RX_TOTAL)
 
-	#define TOPAZ_FWT_MCAST_ENTRIES		2048
-	#define TOPAZ_FWT_MCAST_FF_ENTRIES	8	/* one per vap */
-	#define TOPAZ_FWT_MCAST_IPMAP_ENT_SIZE	64	/* sizeof(struct topaz_fwt_sw_ipmap) */
-	#define TOPAZ_FWT_MCAST_TQE_ENT_SIZE	20	/* sizeof(struct topaz_fwt_sw_mcast_entry) */
-	/* Tables are cache-line aligned to ensure proper memory flushing. */
-	#define TOPAZ_FWT_MCAST_IPMAP_SIZE	\
-		ROUNDUP(TOPAZ_FWT_MCAST_ENTRIES * TOPAZ_FWT_MCAST_IPMAP_ENT_SIZE,	\
-				ARC_DCACHE_LINE_LENGTH)
-	#define TOPAZ_FWT_MCAST_TQE_SIZE	\
-		ROUNDUP(TOPAZ_FWT_MCAST_ENTRIES * TOPAZ_FWT_MCAST_TQE_ENT_SIZE,		\
-				ARC_DCACHE_LINE_LENGTH)
-	#define TOPAZ_FWT_MCAST_TQE_FF_SIZE	\
-		ROUNDUP(TOPAZ_FWT_MCAST_FF_ENTRIES * TOPAZ_FWT_MCAST_TQE_ENT_SIZE,	\
-				ARC_DCACHE_LINE_LENGTH)
+#define TOPAZ_HBM_BUF_END		(TOPAZ_HBM_BUF_WMAC_RX_END + TOPAZ_HBM_POOL_GUARD_SIZE)
 
-	#define TOPAZ_FWT_MCAST_IPMAP_BASE	TOPAZ_HBM_BUF_END
-	#define TOPAZ_FWT_MCAST_IPMAP_END	(TOPAZ_FWT_MCAST_IPMAP_BASE + TOPAZ_FWT_MCAST_IPMAP_SIZE)
-	#define TOPAZ_FWT_MCAST_TQE_BASE	TOPAZ_FWT_MCAST_IPMAP_END
-	#define TOPAZ_FWT_MCAST_TQE_END		(TOPAZ_FWT_MCAST_TQE_BASE + TOPAZ_FWT_MCAST_TQE_SIZE)
-	#define TOPAZ_FWT_MCAST_TQE_FF_BASE	TOPAZ_FWT_MCAST_TQE_END
-	#define TOPAZ_FWT_MCAST_TQE_FF_END	(TOPAZ_FWT_MCAST_TQE_FF_BASE + TOPAZ_FWT_MCAST_TQE_FF_SIZE)
-	#define TOPAZ_FWT_MCAST_END		TOPAZ_FWT_MCAST_TQE_FF_END
+#define TOPAZ_FWT_MCAST_ENTRIES		2048
+#define TOPAZ_FWT_MCAST_FF_ENTRIES	8	/* one per vap */
+#define TOPAZ_FWT_MCAST_IPMAP_ENT_SIZE	64	/* sizeof(struct topaz_fwt_sw_ipmap) */
+#define TOPAZ_FWT_MCAST_TQE_ENT_SIZE	20	/* sizeof(struct topaz_fwt_sw_mcast_entry) */
+/* Tables are cache-line aligned to ensure proper memory flushing. */
+#define TOPAZ_FWT_MCAST_IPMAP_SIZE	\
+	ROUNDUP(TOPAZ_FWT_MCAST_ENTRIES * TOPAZ_FWT_MCAST_IPMAP_ENT_SIZE,	\
+			ARC_DCACHE_LINE_LENGTH)
+#define TOPAZ_FWT_MCAST_TQE_SIZE	\
+	ROUNDUP(TOPAZ_FWT_MCAST_ENTRIES * TOPAZ_FWT_MCAST_TQE_ENT_SIZE,		\
+			ARC_DCACHE_LINE_LENGTH)
+#define TOPAZ_FWT_MCAST_TQE_FF_SIZE	\
+	ROUNDUP(TOPAZ_FWT_MCAST_FF_ENTRIES * TOPAZ_FWT_MCAST_TQE_ENT_SIZE,	\
+			ARC_DCACHE_LINE_LENGTH)
 
-	/* Offset from DDR beginning, from which memory start to belong to Linux */
-	#define CONFIG_ARC_KERNEL_MEM_BASE	TOPAZ_FWT_MCAST_END
+#define TOPAZ_FWT_MCAST_IPMAP_BASE	TOPAZ_HBM_BUF_END
+#define TOPAZ_FWT_MCAST_IPMAP_END	(TOPAZ_FWT_MCAST_IPMAP_BASE + TOPAZ_FWT_MCAST_IPMAP_SIZE)
+#define TOPAZ_FWT_MCAST_TQE_BASE	TOPAZ_FWT_MCAST_IPMAP_END
+#define TOPAZ_FWT_MCAST_TQE_END		(TOPAZ_FWT_MCAST_TQE_BASE + TOPAZ_FWT_MCAST_TQE_SIZE)
+#define TOPAZ_FWT_MCAST_TQE_FF_BASE	TOPAZ_FWT_MCAST_TQE_END
+#define TOPAZ_FWT_MCAST_TQE_FF_END	(TOPAZ_FWT_MCAST_TQE_FF_BASE + TOPAZ_FWT_MCAST_TQE_FF_SIZE)
+#define TOPAZ_FWT_MCAST_END		TOPAZ_FWT_MCAST_TQE_FF_END
 
-	#if TOPAZ_HBM_BUF_EMAC_RX_BASE & (TOPAZ_HBM_BUF_ALIGN - 1)
-		#error EMAC Buffer start not aligned
-	#endif
-	#if TOPAZ_HBM_BUF_WMAC_RX_BASE & (TOPAZ_HBM_BUF_ALIGN - 1)
-		#error WMAC Buffer start not aligned
-	#endif
-#else
-	/* Offset from DDR beginning, from which memory start to belong to Linux */
-	#define CONFIG_ARC_KERNEL_MEM_BASE	CONFIG_ARC_MUC_END
+/* Offset from DDR beginning, from which memory start to belong to Linux */
+#define CONFIG_ARC_KERNEL_MEM_BASE	TOPAZ_FWT_MCAST_END
+
+#if TOPAZ_HBM_BUF_EMAC_RX_BASE & (TOPAZ_HBM_BUF_ALIGN - 1)
+	#error EMAC Buffer start not aligned
+#endif
+#if TOPAZ_HBM_BUF_WMAC_RX_BASE & (TOPAZ_HBM_BUF_ALIGN - 1)
+	#error WMAC Buffer start not aligned
 #endif
 #define CONFIG_ARC_UBOOT_RESERVED_SPACE	(8 * 1024)
 
@@ -277,13 +248,8 @@
 			/* Kernel is compiled with -mlong-calls option, so we can make calls between code fragments placed in different memories */
 			#define __sram_text_sect_name	".sram.text"
 			#define __sram_data_sect_name	".sram.data"
-			#if defined(PROFILE_LINUX_EP) || defined(TOPAZ_PLATFORM)
-			# define __sram_text
-			# define __sram_data
-			#else
-			# define __sram_text		__attribute__ ((__section__ (__sram_text_sect_name)))
-			# define __sram_data		__attribute__ ((__section__ (__sram_data_sect_name)))
-			#endif
+			#define __sram_text
+			#define __sram_data
 		#else
 			#define __sram_text_sect_name	".text"
 			#define __sram_data_sect_name	".data"
diff --git a/include/common/ruby_partitions.h b/include/common/ruby_partitions.h
index 4d1fa71..1af2bc5 100644
--- a/include/common/ruby_partitions.h
+++ b/include/common/ruby_partitions.h
@@ -29,26 +29,39 @@
 #define __RUBY_PARTITIONS_H
 
 #define F64K_UBOOT_PIGGY_PARTITION_SIZE	0x5000
-#if defined(TOPAZ_PLATFORM)
-	#define F64K_ENV_PARTITION_SIZE		0x6000
-#else
-	#define F64K_ENV_PARTITION_SIZE         0x4000
+
+#if defined(FLASH_SUPPORT_256KB)
+	#define F256K_UBOOT_PIGGY_PARTITION_SIZE 0x5000
+	#define F256K_ENV_PARTITION_SIZE	0x18000
 #endif
+#define F64K_ENV_PARTITION_SIZE         0x6000
 
 #define UBOOT_TEXT_PARTITION_SIZE	0x20000
+#define UBOOT_TINY_TEXT_PARTITION_SIZE	UBOOT_TEXT_PARTITION_SIZE
+#if defined(FLASH_SUPPORT_256KB)
+	#define UBOOT_ENV_PARTITION_SIZE	0x40000
+#else
+	#define UBOOT_ENV_PARTITION_SIZE        0x10000
+#endif
 #define UBOOT_ENV_PARTITION_ADDR	UBOOT_TEXT_PARTITION_SIZE
-#define UBOOT_ENV_PARTITION_SIZE	0x10000
 
 /*
  * Make sure CONFIG_ENV_SIZE in file carve_env_partition.sh is the same value
  */
-#if defined(TOPAZ_PLATFORM)
+#if defined(FLASH_SUPPORT_256KB)
+	#define BOOT_CFG_SIZE			(96 * 1024)
+#elif defined(FLASH_SUPPORT_64KB)
 	#define BOOT_CFG_SIZE			(24 * 1024)
 #else
-	#define BOOT_CFG_SIZE			(16 * 1024)
+	#define BOOT_CFG_SIZE			(64 * 1024)
 #endif
 
-#define BOOT_CFG_BASE_SIZE              (16 * 1024)
+#if defined(FLASH_SUPPORT_256KB)
+	#define BOOT_CFG_BASE_SIZE	(24 * 1024)
+#else
+	#define BOOT_CFG_BASE_SIZE      (16 * 1024)
+#endif
+
 #define BOOT_CFG_DATA_SIZE		(BOOT_CFG_SIZE - sizeof(u32))
 #define BOOT_CFG_DEF_START		(0x1000)
 
@@ -57,23 +70,32 @@
 #define NON_IMAGE_SIZE			(UBOOT_TEXT_PARTITION_SIZE +		\
 						UBOOT_ENV_PARTITION_SIZE * 2 +	\
 						RUBY_MIN_DATA_PARTITION_SIZE)
+#define TINY_CFG_NON_IMAGE_SIZE		(UBOOT_TINY_TEXT_PARTITION_SIZE +	\
+						UBOOT_ENV_PARTITION_SIZE * 2 +	\
+						UBOOT_TEXT_PARTITION_SIZE * 2 +	\
+						RUBY_MIN_DATA_PARTITION_SIZE)
+
 #define IMG_SIZE_8M_FLASH_2_IMG		((FLASH_8MB - NON_IMAGE_SIZE) / 2)
 #define IMG_SIZE_8M_FLASH_1_IMG		((FLASH_8MB - NON_IMAGE_SIZE) / 1)
 #define IMG_SIZE_16M_FLASH_2_IMG	((FLASH_16MB - NON_IMAGE_SIZE) / 2)
 #define IMG_SIZE_16M_FLASH_1_IMG	((FLASH_16MB - NON_IMAGE_SIZE) / 1)
 
+#define TINY_CFG_SIZE_16M_FLASH_1_IMG	(FLASH_16MB - TINY_CFG_NON_IMAGE_SIZE)
+#define UBOOT_SAFE_PARTITION_ADDR	(IMAGES_START_ADDR + TINY_CFG_SIZE_16M_FLASH_1_IMG)
+#define UBOOT_LIVE_PARTITION_ADDR	(UBOOT_SAFE_PARTITION_ADDR + UBOOT_TEXT_PARTITION_SIZE)
+
 #define MTD_PARTNAME_UBOOT_BIN		"uboot"
+#define MTD_PARTNAME_UBOOT_TINY_BIN	"uboot_tiny"
+#define MTD_PARTNAME_UBOOT_SAFETY	"uboot_safety"
+#define MTD_PARTNAME_UBOOT_LIVE		"uboot_live"
 #define MTD_PARTNAME_UBOOT_ENV		"uboot_env"
 #define MTD_PARTNAME_UBOOT_ENV_BAK	"uboot_env_bak"
 #define MTD_PARTNAME_LINUX_SAFETY	"linux_safety"
 #define MTD_PARTNAME_LINUX_LIVE		"linux_live"
 #define MTD_PARTNAME_DATA		"data"
+#define MTD_PARTNAME_EXTEND		"extend"
 
-#if defined(TOPAZ_PLATFORM)
-	#define IMG_SIZE_LIMIT_PLATFORM	IMG_SIZE_16M_FLASH_2_IMG
-#else
-	#define IMG_SIZE_LIMIT_PLATFORM	IMG_SIZE_8M_FLASH_2_IMG
-#endif
+#define IMG_SIZE_LIMIT_PLATFORM	IMG_SIZE_16M_FLASH_2_IMG
 
 #endif // #ifndef __RUBY_PARTITIONS_H
 
diff --git a/include/common/ruby_platform.h b/include/common/ruby_platform.h
index f6d030c..9708d63 100644
--- a/include/common/ruby_platform.h
+++ b/include/common/ruby_platform.h
@@ -89,6 +89,7 @@
 #define RUBY_GPIO_PIN14			(14)
 #define RUBY_GPIO_PIN15			(15)
 #define RUBY_GPIO_PIN16			(16)
+#define RUBY_GPIO_PIN17			(17)
 
 #define RUBY_GPIO_UART0_SI		(0)
 #define RUBY_GPIO_UART0_SO		(8)
@@ -109,7 +110,13 @@
 #define RUBY_GPIO_WLAN_DISABLE		(12)
 #define RUBY_GPIO_LED1			(13)
 #define RUBY_GPIO_RFIC_INTR		(14)
+
+#ifndef TOPAZ_AMBER_IP
 #define RUBY_GPIO_RFIC_RESET		(15)
+#else
+#define RUBY_GPIO_RFIC_RESET		(10)
+#endif
+
 #define RUBY_GPIO_LED2			(16)
 
 /*****************************************************************************/
@@ -407,17 +414,7 @@
 #define RUBY_SYS_CTL_MASK_DDRCLK	(0x7 << 22)
 #define RUBY_SYS_CTL_MASK_LINUX_MAP	(0x1 << 31)
 
-#if !TOPAZ_FPGA_PLATFORM
-#define RUBY_SYS_CTL_CFG0_PCIE_RC	(0x4)
-#else
-#define RUBY_SYS_CTL_CFG0_PCIE_RC	(0x14)
-#endif
-
-#if defined(TOPAZ_PLATFORM)
-# define RUBY_RESET_CAUSE_UART_SHIFT	(7)
-#else
-# define RUBY_RESET_CAUSE_UART_SHIFT	(24)
-#endif
+#define RUBY_RESET_CAUSE_UART_SHIFT	(7)
 #define RUBY_RESET_CAUSE_UART(x)	(1 << (RUBY_RESET_CAUSE_UART_SHIFT + x))
 
 /* global[30:25,11] unused */
@@ -474,6 +471,11 @@
 #define RUBY_SPI_SECTOR_ERASE_D8	(RUBY_SPI_BASE_ADDR + 0xD800)
 #define RUBY_SPI_READ_DPB               (RUBY_SPI_BASE_ADDR + 0xe000)
 #define RUBY_SPI_WRITE_DPB              (RUBY_SPI_BASE_ADDR + 0xe100)
+#define RUBY_SPI_PAGE_PROGRAM_4B	(RUBY_SPI_BASE_ADDR + 0x1200)
+#define RUBY_SPI_SECTOR_ERASE_D8_4B	(RUBY_SPI_BASE_ADDR + 0xDC00)
+#define RUBY_SPI_SECTOR_ERASE_20_4B	(RUBY_SPI_BASE_ADDR + 0x2100)
+#define RUBY_SPI_ADDRESS_MODE_4B	0x85
+#define RUBY_SPI_BOUNDARY_4B		0x1000000
 
 /*
  * UBOOT_VERSION_LOCATION:
@@ -560,19 +562,14 @@
 #define RUBY_IRQ_GPIO			(25)
 #define RUBY_IRQ_TIMER			(26)
 #define RUBY_IRQ_MISC			(27)
-#if defined(TOPAZ_PLATFORM)
-	/* Combined PCIe Interrupt IRQ 28 */
-	#define RUBY_IRQ_MSI			(28)
-	#define RUBY_IRQ_INTA			(28)
-	/* Combined PCIe DMA Legacy/MSI Interrupt IRQ 22 */
-	#define TOPAZ_IRQ_PCIE_DMA_INT		(22)
-	#define TOPAZ_IRQ_PCIE_IPC4_INT		(29)
-	/* Combined PCIe Legacy/MSI Interrupt IRQ 28 */
-	#define TOPAZ_IRQ_PCIE_INT		RUBY_IRQ_INTA
-#else
-	#define RUBY_IRQ_MSI			(28)
-	#define RUBY_IRQ_INTA			(29)
-#endif
+/* Combined PCIe Interrupt IRQ 28 */
+#define RUBY_IRQ_MSI			(28)
+#define RUBY_IRQ_INTA			(28)
+/* Combined PCIe DMA Legacy/MSI Interrupt IRQ 22 */
+#define TOPAZ_IRQ_PCIE_DMA_INT		(22)
+#define TOPAZ_IRQ_PCIE_IPC4_INT		(29)
+/* Combined PCIe Legacy/MSI Interrupt IRQ 28 */
+#define TOPAZ_IRQ_PCIE_INT		RUBY_IRQ_INTA
 #define RUBY_IRQ_SPI			(30)
 #define RUBY_IRQ_BB_PER_PACKET		(31)
 #define RUBY_MAX_IRQ_VECTOR		(31)
@@ -610,13 +607,8 @@
 #define RUBY_IRQ_MISC_EXT_IRQ_START		(56)
 #define RUBY_IRQ_MISC_RST_CAUSE_START	(26)
 
-#if defined(TOPAZ_PLATFORM)
 #define QTN_IRQ_MISC_EXT_IRQ_COUNT		TOPAZ_IRQ_MISC_EXT_IRQ_COUNT
 #define QTN_IRQ_MISC_RST_CAUSE_START	TOPAZ_IRQ_MISC_RST_CAUSE_START
-#else
-#define QTN_IRQ_MISC_EXT_IRQ_COUNT		RUBY_IRQ_MISC_EXT_IRQ_COUNT
-#define QTN_IRQ_MISC_RST_CAUSE_START	RUBY_IRQ_MISC_RST_CAUSE_START
-#endif
 
 #define RUBY_MAX_IRQ_EXT_VECTOR		(63)
 #define RUBY_IRQ_EXT_VECTORS_NUM	(RUBY_MAX_IRQ_EXT_VECTOR + 1)
diff --git a/include/common/ruby_pm.h b/include/common/ruby_pm.h
index c12b8cc..052b46e 100644
--- a/include/common/ruby_pm.h
+++ b/include/common/ruby_pm.h
@@ -44,6 +44,7 @@
 
 /* wlan timings to switch between modes */
 #define BOARD_PM_WLAN_IDLE_TIMEOUT		(120 * HZ)
+#define BOARD_PM_WLAN_STA_IDLE_TIMEOUT		(15 * HZ)
 #define BOARD_PM_WLAN_DEFAULT_TIMEOUT		(0)
 
 /* qdisc parameters to switch between modes */
@@ -93,6 +94,7 @@
 	QTN_PM_PAUSE_MGMT_PROBERESP,
 	QTN_PM_PAUSE_MGMT_ASSOCRESP,
 	QTN_PM_PAUSE_MGMT_AUTH,
+	QTN_PM_PAUSE_DATA = QTN_PM_PAUSE_MGMT_AUTH,
 
 	/* For Multiple Periods Support */
 	QTN_PM_PERIOD_CHANGE_INTERVAL,	/* How long period setting will be changed(unit: second) */
diff --git a/include/common/ruby_spi_api.h b/include/common/ruby_spi_api.h
index d12ba3d..1612a0d 100644
--- a/include/common/ruby_spi_api.h
+++ b/include/common/ruby_spi_api.h
@@ -86,12 +86,8 @@
 * Topaz uses all 4 bytes, just skip first msb if in 3-bytes address mode.
 *
 */
-#ifdef TOPAZ_PLATFORM
-        #define SPI_MEM_ADDR(addr)      (((addr) & 0x00FFFFFF))
-#else
-        #define SPI_MEM_ADDR(addr)      (((addr) & 0x00FFFFFF) << 8)
-#endif
-
+#define SPI_MEM_ADDR(addr)      (((addr) & 0x00FFFFFF))
+#define SPI_MEM_ADDR_4B(addr)	(((addr) & 0xFFFFFFFF))
 
 enum SPI_TYPES{
 	NOT_SUPPORTED,
@@ -103,6 +99,7 @@
 	MACRONIX,
 	ESMT,
 	EON,
+	MICRON,
 	GD
 };
 
diff --git a/include/common/ruby_spi_flash_data.h b/include/common/ruby_spi_flash_data.h
index a8d79e0..3006f73 100644
--- a/include/common/ruby_spi_flash_data.h
+++ b/include/common/ruby_spi_flash_data.h
@@ -78,9 +78,13 @@
 	{ "s25sl004a", 0x010212, 64 * 1024, 8, 0, FREQ_UNKNOWN, SPANSION },
 	{ "s25sl008a", 0x010213, 64 * 1024, 16, 0, FREQ_UNKNOWN, SPANSION },
 	{ "s25sl016a", 0x010214, 64 * 1024, 32, 0, FREQ_UNKNOWN, SPANSION },
-	{ "s25sl032a", 0x010215, 64 * 1024, 64, 0, FREQ_UNKNOWN, SPANSION },
+	{ "s25fl032", 0x010215, 64 * 1024, 64, 0, FREQ_UNKNOWN, SPANSION },
 	{ "s25sl064a", 0x010216, 64 * 1024, 128, 0, FREQ_UNKNOWN, SPANSION },
 	{ "s25sl12801", 0x012018, 64 * 1024, 256, 0, FREQ_MHZ(40), SPANSION }, /* S25FL129P has same jedec_id, but higher frequency - so it should be supported, but at not at maximum speed */
+	{ "s25fl256s", 0x010219, 64 * 1024, 512, 0, FREQ_UNKNOWN, SPANSION },
+
+	/* Micron */
+	{ "N25Q032", 0x20ba16, 64 * 1024, 64, 0, FREQ_UNKNOWN, MICRON },
 
 	/* SST -- large erase sizes are "overlays", "sectors" are 4K */
 	{ "sst25vf040b", 0xbf258d, 64 * 1024, 8, 0, FREQ_UNKNOWN, SST },
@@ -122,7 +126,8 @@
 	{ "mx25l1606e", 0xc22015, 64 * 1024, 32, 0, FREQ_MHZ(50), MACRONIX },
 	{ "mx25l6405", 0xc22017, 64 * 1024, 128, 0, FREQ_MHZ(50), MACRONIX },
 	{ "mx25l12836e", 0xc22018, 64 * 1024, 256, 0, FREQ_MHZ(104), MACRONIX },
-	{ "mx25l25635", 0xc22019, 64 * 1024, 256, 0, FREQ_MHZ(50), MACRONIX },
+	{ "mx25l25635f", 0xc22019, 64 * 1024, 512, 0, FREQ_MHZ(104), MACRONIX },
+	{ "mx25l51245g", 0xc2201A, 64 * 1024, 1024, 0, FREQ_MHZ(104), MACRONIX },
 
 	/* ESMT -- F25L "blocks are 64K, "sectors" are 4KiB */
 	{ "f25l05pa", 0x8c3010, 4 * 1024, 16, SECTOR_ERASE_OP20, FREQ_MHZ(50), ESMT },
diff --git a/include/common/ruby_version.h b/include/common/ruby_version.h
index b7b34dc..7664b11 100644
--- a/include/common/ruby_version.h
+++ b/include/common/ruby_version.h
@@ -1,5 +1,5 @@
 #ifndef __RUBY_RELEASE_H__
-#define __RUBY_RELEASE__H__
+#define __RUBY_RELEASE_H__
 /*
  * Copyright (c) 2011 Quantenna Communications, Inc.
  * All rights reserved.
@@ -12,6 +12,6 @@
 // Defines
 ////////////////////////////////////////////////////////////////////////////
 
-#define RUBY_UBOOT_VERSION	"v37.3.0.22"
+#define RUBY_UBOOT_VERSION	"v37.4.0.28"
 
 #endif // __RUBY_RELEASE_H__
diff --git a/include/common/topaz_config.h b/include/common/topaz_config.h
index bc488bc..5be0113 100644
--- a/include/common/topaz_config.h
+++ b/include/common/topaz_config.h
@@ -30,32 +30,20 @@
 
 #include "current_platform.h"
 
-#ifdef TOPAZ_PLATFORM
 #if !TOPAZ_FPGA_PLATFORM
 #undef TOPAZ_ICACHE_WORKAROUND
 #endif
-#endif
 
 /*
  * Control registers move depending on unified + alias bit
  */
 
-#ifdef TOPAZ_PLATFORM
-	#define TOPAZ_MMAP_UNIFIED	0
-	#define TOPAZ_MMAP_ALIAS	0
-	#define TOPAZ_RX_ACCELERATE	1
-#else
-	#define TOPAZ_MMAP_UNIFIED	0
-	#define TOPAZ_MMAP_ALIAS	0
-	#define TOPAZ_RX_ACCELERATE	0
-#endif
+#define TOPAZ_MMAP_UNIFIED	0
+#define TOPAZ_MMAP_ALIAS	0
+#define TOPAZ_RX_ACCELERATE	1
 
 /* If MU-MIMO done in HDP or SDP */
-#ifdef TOPAZ_PLATFORM
-	#define QTN_HDP_MU		1
-#else
-	#define QTN_HDP_MU		0
-#endif
+#define QTN_HDP_MU		1
 
 #if QTN_HDP_MU
 #define QTN_HDP_MU_FCS_WORKROUND	1
@@ -85,105 +73,66 @@
 	#define TOPAZ_FPGA_PLATFORM	0
 #endif
 
-#ifndef TOPAZ_VNET_WR_STAGING
-	#define TOPAZ_VNET_WR_STAGING	0
-#endif
-#define TOPAZ_VNET_WR_DMA_CHANNELS			2
-#define TOPAZ_VNET_WR_STAGING_BUF_COUNT_PER_CHAIN	10
-#define TOPAZ_VNET_WR_STAGING_BUF_SIZE			0x600
-#if TOPAZ_VNET_WR_STAGING
-	#define TOPAZ_VNET_WR_STAGING_ALIGN			0x80
-	#define TOPAZ_VNET_WR_STAGING_GAP			TOPAZ_VNET_WR_STAGING_ALIGN
-	#define TOPAZ_VNET_WR_STAGING_RESERVE			((TOPAZ_VNET_WR_STAGING_BUF_COUNT_PER_CHAIN * \
-								  TOPAZ_VNET_WR_STAGING_BUF_SIZE) + \
-								 TOPAZ_VNET_WR_STAGING_GAP)
+/* Definition indicates that Topaz platform is FPGA */
+#if TOPAZ_FPGA_PLATFORM
+	/* CLK speeds are in MHz and 1/10th the speed of actual ASIC */
+	#define TOPAZ_SERIAL_BAUD	38400
+	#define TOPAZ_APB_CLK		12500000
+	#define TOPAZ_AHB_CLK		25000000
+	#define TOPAZ_CPU_CLK		50000000
+	#define RUBY_FPGA_DDR
 #else
-	#define TOPAZ_VNET_WR_STAGING_RESERVE			0
+	#define TOPAZ_SERIAL_BAUD	115200
+	#define TOPAZ_APB_CLK		125000000
+	#define TOPAZ_AHB_CLK		250000000
+	#define TOPAZ_CPU_CLK		500000000
+	#define RUBY_ASIC_DDR
+#endif /* #if TOPAZ_FPGA_PLATFORM */
+
+/*
+ * Setting UPF_SPD_FLAG gives a developer the option to set the
+ * flag to match a UPF_ define from <linux>/include/linux/serial_core.h
+ * or set the value to 0 to use the default baud rate setting DEFAULT_BAUD
+ */
+#define UPF_SPD_FLAG	0
+#define DEFAULT_BAUD	TOPAZ_SERIAL_BAUD
+
+/*
+ * Re-use Ruby defines to simplify the number of changes required
+ * to compile new binaries for Topaz
+ */
+#define RUBY_SERIAL_BAUD	TOPAZ_SERIAL_BAUD
+#define RUBY_FIXED_DEV_CLK	TOPAZ_APB_CLK
+#define RUBY_FIXED_CPU_CLK	TOPAZ_CPU_CLK
+
+#ifdef PLATFORM_DEFAULT_BOARD_ID
+        #define DEFAULT_BOARD_ID	PLATFORM_DEFAULT_BOARD_ID
+#else
+	/* Default board id used to match Topaz setting if there is no SPI Flash */
+	#define DEFAULT_BOARD_ID	QTN_TOPAZ_BB_BOARD
+#endif /* TOPAZ_DEFAULT_BOARD_ID */
+
+#ifndef PLATFORM_ARC7_MMU_VER
+	#define PLATFORM_ARC7_MMU_VER	2
 #endif
 
-#ifdef TOPAZ_PLATFORM
-	/* Definition indicates that Topaz platform is FPGA */
-	#if TOPAZ_FPGA_PLATFORM
-		/* CLK speeds are in MHz and 1/10th the speed of actual ASIC */
-		#define TOPAZ_SERIAL_BAUD	38400
-		#define TOPAZ_APB_CLK		12500000
-		#define TOPAZ_AHB_CLK		25000000
-		#define TOPAZ_CPU_CLK		50000000
-		#define RUBY_FPGA_DDR
-	#else
-		#define TOPAZ_SERIAL_BAUD	115200
-		#define TOPAZ_APB_CLK		125000000
-		#define TOPAZ_AHB_CLK		250000000
-		#define TOPAZ_CPU_CLK		500000000
-		#define RUBY_ASIC_DDR
-	#endif /* #if TOPAZ_FPGA_PLATFORM */
+#define CONFIG_RUBY_BROKEN_IPC_IRQS	0
 
-	/*
-	 * Setting UPF_SPD_FLAG gives a developer the option to set the
-	 * flag to match a UPF_ define from <linux>/include/linux/serial_core.h
-	 * or set the value to 0 to use the default baud rate setting DEFAULT_BAUD
-	 */
-	#define UPF_SPD_FLAG	0
-	#define DEFAULT_BAUD	TOPAZ_SERIAL_BAUD
+#define RUBY_IPC_HI_IRQ(bit_num)	((bit_num) + 8)
+#define RUBY_M2L_IPC_HI_IRQ(bit_num)	(bit_num)
 
-	/*
-	 * Re-use Ruby defines to simplify the number of changes required
-	 * to compile new binaries for Topaz
-	 */
-	#define RUBY_SERIAL_BAUD	TOPAZ_SERIAL_BAUD
-	#define RUBY_FIXED_DEV_CLK	TOPAZ_APB_CLK
-	#define RUBY_FIXED_CPU_CLK	TOPAZ_CPU_CLK
+#define PLATFORM_REG_SWITCH(reg1, reg2)	(reg2)
 
-	#ifdef PLATFORM_DEFAULT_BOARD_ID
-	        #define DEFAULT_BOARD_ID	PLATFORM_DEFAULT_BOARD_ID
-	#else
-		/* Default board id used to match Topaz setting if there is no SPI Flash */
-		#define DEFAULT_BOARD_ID	QTN_TOPAZ_BB_BOARD
-	#endif /* TOPAZ_DEFAULT_BOARD_ID */
+#define writel_topaz(a, b)		writel(a, b)
+#define writel_ruby(a, b)
 
-	#ifndef PLATFORM_ARC7_MMU_VER
-		#define PLATFORM_ARC7_MMU_VER	2
-	#endif
+#define QTN_VLAN_LLC_ENCAP		1
 
-	#define CONFIG_RUBY_BROKEN_IPC_IRQS	0
+#define TOPAZ_128_NODE_MODE		1
 
-	#define RUBY_IPC_HI_IRQ(bit_num)	((bit_num) + 8)
-	#define RUBY_M2L_IPC_HI_IRQ(bit_num)	(bit_num)
+#define TOPAZ_ETH_REFLECT_SW_FWD	0
 
-	#define PLATFORM_REG_SWITCH(reg1, reg2)	(reg2)
-
-	#define writel_topaz(a, b)		writel(a, b)
-	#define writel_ruby(a, b)
-
-	#define QTN_VLAN_LLC_ENCAP		1
-
-	#define TOPAZ_128_NODE_MODE		1
-
-	#define TOPAZ_ETH_REFLECT_SW_FWD	0
-
-	#define DSP_ENABLE_STATS		1
-#else
-	#ifndef PLATFORM_ARC7_MMU_VER
-		#define PLATFORM_ARC7_MMU_VER	2
-	#endif
-
-	/*
-	 * For BBIC3.
-	 * Workaround for IPC interrupt hw flaw. When receiver dynamically masks/unmasks
-	 * interrupt, the transmitter cannot distinguish whether interrupt was acked or just masked.
-	 */
-	#define CONFIG_RUBY_BROKEN_IPC_IRQS	1
-
-	#define RUBY_IPC_HI_IRQ(bit_num)	((bit_num) + 16)
-	#define RUBY_M2L_IPC_HI_IRQ(bit_num)	((bit_num) + 16)
-
-	#define PLATFORM_REG_SWITCH(reg1, reg2)	(reg1)
-
-	#define writel_topaz(a, b)
-	#define writel_ruby(a, b)		writel(a, b)
-
-	#define QTN_VLAN_LLC_ENCAP		0
-#endif /* #ifdef TOPAZ_PLATFORM */
+#define DSP_ENABLE_STATS		1
 
 #endif /* #ifndef __TOPAZ_CONFIG_H */
 
diff --git a/include/common/topaz_emac.h b/include/common/topaz_emac.h
index 2120feb..b6c0bcc 100644
--- a/include/common/topaz_emac.h
+++ b/include/common/topaz_emac.h
@@ -274,5 +274,8 @@
 #define TOPAZ_EMAC_RXP_PRIO_IS_DSCP	2
 #define TOPAZ_EMAC_RXP_PRIO_IS_DPI	3
 
+extern void topaz_emac_to_lhost(uint32_t enable);
+extern int topaz_emac_get_bonding(void);
+
 #endif	// __TOPAZ_EMAC_H
 
diff --git a/include/common/topaz_platform.h b/include/common/topaz_platform.h
index 3f94e51..be27da5 100644
--- a/include/common/topaz_platform.h
+++ b/include/common/topaz_platform.h
@@ -37,6 +37,14 @@
 #define SM(_v, _f)		(((_v) << _f##_S) & _f)
 #endif
 
+/*
+ * The following macro couldn't be defined via SM because of issues with nesting ##
+ * i.e. the following define does not work
+ * do{ where = (where) & (~(bitmask)) | SM(new_value, bitmask); }while(0)
+ */
+#define UPDATE_BITSET(where, bitmask, new_value) \
+	do{ where = ((where) & (~(bitmask))) | (((new_value) << bitmask##_S) & bitmask); }while(0)
+
 /* Extra reset bits */
 #define TOPAZ_SYS_CTL_RESET_AUC		(RUBY_BIT(10))
 #define TOPAZ_SYS_CTL_ALIAS_MAP		(RUBY_BIT(29))
@@ -117,8 +125,10 @@
 #define TOPAZ_TQE_MISC_CLR_DONE_DLY_CYCLE_NUM_S		0
 #define TOPAZ_TQE_MISC_RFLCT_OUT_PORT			0x000F0000	/* dest port for reflected pkts */
 #define TOPAZ_TQE_MISC_RFLCT_OUT_PORT_S			16
-#define TOPAZ_TQE_MISC_RFLCT_OUT_PORT_ENABLE		0x00100000	/* redirect reflected pkts */
+#define TOPAZ_TQE_MISC_RFLCT_OUT_PORT_ENABLE		0x00100000	/* redirect emac0<->emac0 or emac1<->emac1 reflected pkts */
 #define TOPAZ_TQE_MISC_RFLCT_OUT_PORT_ENABLE_S		20
+#define TOPAZ_TQE_MISC_RFLCT_2_OUT_PORT_ENABLE		0x00200000	/* redirect emac0<->emac0/emac1 or emac1<->emac0/emac1 reflected pkts */
+#define TOPAZ_TQE_MISC_RFLCT_2_OUT_PORT_ENABLE_S	21
 #define TOPAZ_TQE_MISC_CLR_DONE_DLY_ENABLE		0x80000000	/* enable q_avail_clr_done delay */
 #define TOPAZ_TQE_MISC_CLR_DONE_DLY_ENABLE_S		31
 #define TOPAZ_TQE_WMAC_Q_STATUS_PTR	(TOPAZ_TQE_BASE_ADDR + 0x0008)
@@ -463,6 +473,16 @@
 #define RUBY_GPIO_PWM_ENABLE				(BIT(16))
 #define RUBY_GPIO_PWM_MAX_COUNT				(255)
 
+#ifdef TOPAZ_AMBER_IP
+#define	AMBER_GPIO11_PWM0				(RUBY_GPIO_REGS_ADDR + 0x20)
+#define AMBER_GPIO12_PWM1				(RUBY_GPIO_REGS_ADDR + 0x24)
+#define	AMBER_GPIO13_PWM2				(RUBY_GPIO_REGS_ADDR + 0x28)
+#define AMBER_GPIO14_PWM3				(RUBY_GPIO_REGS_ADDR + 0x2C)
+#define AMBER_GPIO15_PWM4				(RUBY_GPIO_REGS_ADDR + 0x30)
+#define AMBER_GPIO16_PWM5				(RUBY_GPIO_REGS_ADDR + 0x34)
+#define AMBER_GPIO17_PWM6				(RUBY_GPIO_REGS_ADDR + 0x38)
+#endif
+
 /* Interrupt lines */
 #define TOPAZ_IRQ_MISC_WDT				(57)
 #define TOPAZ_IRQ_MISC_SPI1				(58)
diff --git a/include/common/topaz_reset.h b/include/common/topaz_reset.h
new file mode 100644
index 0000000..fab7393
--- /dev/null
+++ b/include/common/topaz_reset.h
@@ -0,0 +1,94 @@
+/*
+ * (C) Copyright 2015 Quantenna Communications Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/* This header file defines reset function to be used on Topaz */
+
+#ifndef __TOPAZ_RESET_H
+#define __TOPAZ_RESET_H
+
+#include <include/qtn/mproc_sync_base.h>
+#ifdef TOPAZ_AMBER_IP
+#include <include/qtn/amber.h>
+#endif
+
+static void topaz_set_reset_vec(int enable, unsigned long reset)
+{
+#ifdef TOPAZ_AMBER_IP
+	unsigned long flush_mask = 0;
+
+	switch (reset) {
+	case TOPAZ_SYS_CTL_RESET_AUC:
+		flush_mask = TOPAZ_AMBER_BUS_FLUSH_AUC;
+		break;
+	case RUBY_SYS_CTL_RESET_DSP_ALL:
+		flush_mask = TOPAZ_AMBER_BUS_FLUSH_DSP;
+		break;
+	case RUBY_SYS_CTL_RESET_MUC_ALL:
+		flush_mask = TOPAZ_AMBER_BUS_FLUSH_MUC;
+		break;
+	case RUBY_SYS_CTL_RESET_ENET0:
+		flush_mask = TOPAZ_AMBER_BUS_FLUSH_RGMII;
+		break;
+	case RUBY_SYS_CTL_RESET_IOSS:
+		flush_mask = TOPAZ_AMBER_BUS_FLUSH_BRIDGE | TOPAZ_AMBER_BUS_FLUSH_DMA;
+		break;
+	case RUBY_SYS_CTL_RESET_MAC:
+		flush_mask = TOPAZ_AMBER_BUS_FLUSH_WMAC;
+		break;
+	case RUBY_SYS_CTL_RESET_BB:
+		flush_mask = 0;
+		break;
+	default:
+		/* In the case we accidentally get here - request/release flush for everything to be safe */
+		flush_mask = TOPAZ_AMBER_BUS_FLUSH_AUC |
+			TOPAZ_AMBER_BUS_FLUSH_DSP |
+			TOPAZ_AMBER_BUS_FLUSH_MUC |
+			TOPAZ_AMBER_BUS_FLUSH_RGMII |
+			TOPAZ_AMBER_BUS_FLUSH_BRIDGE |
+			TOPAZ_AMBER_BUS_FLUSH_DMA |
+			TOPAZ_AMBER_BUS_FLUSH_WMAC |
+			TOPAZ_AMBER_BUS_FLUSH_LHOST;
+		qtn_mproc_sync_log("%s:%u: error - invalid reset flag 0x%08x\n", __FILE__, __LINE__, reset);
+		break;
+	}
+
+	if (!enable && flush_mask) {
+		/* Need to request bus flush before switching off */
+		amber_bus_flush_req(flush_mask);
+	}
+#endif
+
+	qtn_mproc_sync_mem_write(RUBY_SYS_CTL_CPU_VEC_MASK, reset);
+	qtn_mproc_sync_mem_write_wmb(RUBY_SYS_CTL_CPU_VEC, enable ? reset : 0);
+	qtn_mproc_sync_mem_write_wmb(RUBY_SYS_CTL_CPU_VEC_MASK, 0);
+
+#ifdef TOPAZ_AMBER_IP
+	if (enable && flush_mask) {
+		/* Need to release bus flush after switching on */
+		amber_bus_flush_release(flush_mask);
+	}
+#endif
+
+}
+#endif // #ifndef __TOPAZ_RESET_H
+
+
diff --git a/include/common/topaz_rfic6_config b/include/common/topaz_rfic6_config
new file mode 100644
index 0000000..0b7d498
--- /dev/null
+++ b/include/common/topaz_rfic6_config
@@ -0,0 +1,149 @@
+/*
+ * (C) Copyright 2010 Quantenna Communications Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * Header file which describes Topaz platform.
+ * Has to be used by both kernel and bootloader.
+ */
+
+#ifndef __TOPAZ_CONFIG_H
+#define __TOPAZ_CONFIG_H
+
+#include "current_platform.h"
+
+#if !TOPAZ_FPGA_PLATFORM
+#undef TOPAZ_ICACHE_WORKAROUND
+#endif
+
+/*
+ * Control registers move depending on unified + alias bit
+ */
+
+#define TOPAZ_MMAP_UNIFIED	0
+#define TOPAZ_MMAP_ALIAS	0
+#define TOPAZ_RX_ACCELERATE	1
+
+/*
+ * VSP/QTM
+ * Macro TOPAZ_QTM is used to help identify changes between original VSP and QTM.
+ * In Lhost kernel driver, it must be used within CONFIG_QVSP(in kernel .config).
+ * CONFIG_QVSP	TOPAZ_QTM	ruby		topaz
+ * Y		1		invalid		*QTM works
+ * Y		0		*VSP works	VSP alive but doesn't work for HDP
+ * N		1		invalid		*no VSP/QTM
+ * N		0		*no VSP		no VSP/QTM, and no QTM changes in MuC and AuC
+ * So generally, sololy changing CONFIG_QVSP works for both ruby and topaz as indicated by *.
+ * But to throughly clean QTM code in AuC and MuC, disable TOPAZ_QTM in topaz below.
+ */
+	#define TOPAZ_QTM		1
+
+/*
+ * HBM buffer process in MuC requires that TOPAZ_AUC_RX is dependent on TOPAZ_RX_ACCELERATE, so let's
+ * enable TOPAZ_AUC_RX only when TOPAZ_RX_ACCELERATE is enabled.
+ */
+#if TOPAZ_RX_ACCELERATE
+#define TOPAZ_AUC_RX	1
+#else
+#define TOPAZ_AUC_RX	0
+#endif
+
+#if TOPAZ_MMAP_ALIAS && !TOPAZ_MMAP_UNIFIED
+	#error Alias map requires unified map
+#endif
+
+#if TOPAZ_MMAP_ALIAS
+	#define TOPAZ_ALIAS_MAP_SWITCH(a, b)	(b)
+#else
+	#define TOPAZ_ALIAS_MAP_SWITCH(a, b)	(a)
+#endif
+
+/* Topaz fixed phy addresses */
+#define TOPAZ_FPGAA_PHY0_ADDR		2
+#define TOPAZ_FPGAA_PHY1_ADDR		3
+#define TOPAZ_FPGAB_PHY0_ADDR		4
+#define TOPAZ_FPGAB_PHY1_ADDR		1
+#define TOPAZ_PHY0_ADDR				1
+#define TOPAZ_PHY1_ADDR				3
+
+#ifndef TOPAZ_FPGA_PLATFORM
+	#define TOPAZ_FPGA_PLATFORM	0
+#endif
+
+/* Definition indicates that Topaz platform is FPGA */
+#if TOPAZ_FPGA_PLATFORM
+	/* CLK speeds are in MHz and 1/10th the speed of actual ASIC */
+	#define TOPAZ_SERIAL_BAUD	38400
+	#define TOPAZ_APB_CLK		12500000
+	#define TOPAZ_AHB_CLK		25000000
+	#define TOPAZ_CPU_CLK		50000000
+	#define RUBY_FPGA_DDR
+#else
+	#define TOPAZ_SERIAL_BAUD	115200
+	#define TOPAZ_APB_CLK		125000000
+	#define TOPAZ_AHB_CLK		250000000
+	#define TOPAZ_CPU_CLK		500000000
+	#define RUBY_ASIC_DDR
+#endif /* #if TOPAZ_FPGA_PLATFORM */
+
+/*
+ * Setting UPF_SPD_FLAG gives a developer the option to set the
+ * flag to match a UPF_ define from <linux>/include/linux/serial_core.h
+ * or set the value to 0 to use the default baud rate setting DEFAULT_BAUD
+ */
+#define UPF_SPD_FLAG	0
+#define DEFAULT_BAUD	TOPAZ_SERIAL_BAUD
+
+/*
+ * Re-use Ruby defines to simplify the number of changes required
+ * to compile new binaries for Topaz
+ */
+#define RUBY_SERIAL_BAUD	TOPAZ_SERIAL_BAUD
+#define RUBY_FIXED_DEV_CLK	TOPAZ_APB_CLK
+#define RUBY_FIXED_CPU_CLK	TOPAZ_CPU_CLK
+
+#ifdef PLATFORM_DEFAULT_BOARD_ID
+        #define DEFAULT_BOARD_ID	PLATFORM_DEFAULT_BOARD_ID
+#else
+	/* Default board id used to match Topaz setting if there is no SPI Flash */
+	#define DEFAULT_BOARD_ID	QTN_TOPAZ_BB_BOARD
+#endif /* TOPAZ_DEFAULT_BOARD_ID */
+
+#ifndef PLATFORM_ARC7_MMU_VER
+	#define PLATFORM_ARC7_MMU_VER	2
+#endif
+
+#define CONFIG_RUBY_BROKEN_IPC_IRQS	0
+
+#define RUBY_IPC_HI_IRQ(bit_num)	((bit_num) + 8)
+#define RUBY_M2L_IPC_HI_IRQ(bit_num)	(bit_num)
+
+#define PLATFORM_REG_SWITCH(reg1, reg2)	(reg2)
+
+#define writel_topaz(a, b)		writel(a, b)
+#define writel_ruby(a, b)
+
+#define QTN_VLAN_LLC_ENCAP		1
+
+#define TOPAZ_128_NODE_MODE		1
+
+#endif /* #ifndef __TOPAZ_CONFIG_H */
+
diff --git a/include/common/uboot_header.h b/include/common/uboot_header.h
index 57e4fda..478cf06 100644
--- a/include/common/uboot_header.h
+++ b/include/common/uboot_header.h
@@ -18,6 +18,10 @@
  *
  * This code is taken from u-boot/include/image.h file
  */
+#ifndef UBOOT_HEADER_H
+#define UBOOT_HEADER_H
+
+#ifndef __ASSEMBLY__
 #define IH_MAGIC      0x27051956      /* Image Magic Number           */
 #define IH_NMLEN              32      /* Image Name Length            */
 
@@ -47,3 +51,20 @@
 	return ROUND_UP(sizeof(image_header_t), MAX_KNOWN_PAGE_SIZE);
 }
 
+struct early_flash_config {
+	uint32_t	method;
+	uint32_t	ipaddr;
+	uint32_t	serverip;
+	uint8_t		reserved[8];
+	uint8_t		built_time_utc_sec[11];
+	uint8_t		uboot_type;
+} __attribute__ ((packed));
+#endif /* __ASSEMBLY__ */
+
+#define RUBY_BOOT_METHOD_TRYLOOP        0
+#define RUBY_BOOT_METHOD_TFTP           1
+#define RUBY_BOOT_METHOD_BOOTP          2
+#define RUBY_BOOT_METHOD_MAX            3
+
+#endif /* UBOOT_HEADER_H */
+
diff --git a/include/kernel/net80211/ieee80211_linux.h b/include/kernel/net80211/ieee80211_linux.h
index 03c1edf..67285ae 100644
--- a/include/kernel/net80211/ieee80211_linux.h
+++ b/include/kernel/net80211/ieee80211_linux.h
@@ -528,6 +528,7 @@
 
 void ieee80211_ioctl_vattach(struct ieee80211vap *);
 void ieee80211_ioctl_vdetach(struct ieee80211vap *);
+void sample_rel_client_data(struct ieee80211vap *vap);
 struct ifreq;
 int ieee80211_ioctl_create_vap(struct ieee80211com *, struct ifreq *,
 	struct net_device *);
diff --git a/include/kernel/net80211/ieee80211_node.h b/include/kernel/net80211/ieee80211_node.h
index 19f88b9..778303e 100644
--- a/include/kernel/net80211/ieee80211_node.h
+++ b/include/kernel/net80211/ieee80211_node.h
@@ -40,9 +40,7 @@
 #include "qtn/muc_phy_stats.h"
 #include "qtn/shared_defs.h"
 #include "qtn/qdrv_sch_data.h"
-#ifdef TOPAZ_PLATFORM
 #include "qtn/topaz_shared_params.h"
-#endif
 
 /* #define IEEE80211_DEBUG_REFCNT */
 #define IEEE80211_NODEREF_INCR	1
@@ -83,7 +81,7 @@
 #define	IEEE80211_INACT_WAIT	5		/* inactivity interval (secs) */
 #define	IEEE80211_INACT_INIT	(30/IEEE80211_INACT_WAIT)	/* initial */
 #define	IEEE80211_INACT_AUTH	(30/IEEE80211_INACT_WAIT)	/* associated but not authorized */
-#define	IEEE80211_INACT_RUN	(30 /IEEE80211_INACT_WAIT)	/* authorized */
+#define	IEEE80211_INACT_RUN	(90 /IEEE80211_INACT_WAIT)	/* authorized */
 #define	IEEE80211_INACT_PROBE	(10/IEEE80211_INACT_WAIT)	/* probe */
 #define	IEEE80211_INACT_SCAN	(300/IEEE80211_INACT_WAIT)	/* scanned */
 #define IEEE80211_INACT_SEND_PKT_THRSH	3			/* The threshold that starts to send detection packet */
@@ -132,8 +130,6 @@
 	u_int8_t		dlg_out;
 	u_int8_t		dlg_in;
 	u_int16_t		flags;
-	u_int8_t                dtls_present; /* detected DTLS session */
-	unsigned long           dtls_jiffies; /* DTLS detect timestamp */
 #ifdef CONFIG_QVSP
 	struct ieee80211_ba_throt ba_throt;
 #endif
@@ -304,6 +300,7 @@
 	u_int32_t *ni_challenge;			/* shared-key challenge */
 	u_int8_t *ni_wpa_ie;			/* captured WPA ie */
 	u_int8_t *ni_rsn_ie;			/* captured RSN ie */
+	u_int8_t *ni_osen_ie;			/* captured OSEN ie */
 	u_int8_t *ni_wme_ie;			/* captured WME ie */
 	u_int8_t *ni_wsc_ie;			/* captured WSC ie */
 	u_int8_t *ni_ath_ie;			/* captured Atheros ie */
@@ -524,10 +521,17 @@
 	uint8_t ni_used_auth_algo;
 	int32_t	rssi_avg_dbm;
 	uint8_t ni_wifi_mode;
+	uint8_t ni_vhtop_notif_mode;
 
 #ifdef IEEE80211_DEBUG_REFCNT
 	struct node_refdebug_info *ni_refdebug_info_p;
 #endif
+	uint8_t ni_coex;
+	uint8_t ni_obss_scan;
+	struct ieee80211_obss_scan_ie ni_obss_ie;
+#define IEEE80211_NODE_OBSS_CAPABLE	0x00000001
+#define IEEE80211_NODE_OBSS_RUNNING	0x00000002
+#define IEEE80211_NODE_OBSS_NOT_RUN	0x00000004
 };
 MALLOC_DECLARE(M_80211_NODE);
 
@@ -616,7 +620,7 @@
 void ieee80211_node_unauthorize(struct ieee80211_node *);
 void ieee80211_tdls_add_rate_detection(struct ieee80211_node *);
 void ieee80211_node_training_start(struct ieee80211_node *ni, int immediate);
-
+void ieee80211_restore_bw(struct ieee80211vap *vap, struct ieee80211com *ic);
 void ieee80211_create_bss(struct ieee80211vap *, struct ieee80211_channel *);
 void ieee80211_reset_bss(struct ieee80211vap *);
 int ieee80211_ibss_merge(struct ieee80211_node *);
@@ -629,7 +633,10 @@
 void ieee80211_send_vht_opmode_action(struct ieee80211vap *vap,
                                        struct ieee80211_node *ni,
                                        uint8_t bw, uint8_t rx_nss);
-
+int ieee80211_send_20_40_bss_coex(struct ieee80211vap *vap);
+int ieee80211_check_mode(struct ieee80211vap *vap);
+void ieee80211_nonqtn_sta_join(struct ieee80211vap *vap, struct ieee80211_node *ni);
+void ieee80211_nonqtn_sta_leave(struct ieee80211vap *vap, struct ieee80211_node *ni);
 
 #define WDS_AGING_TIME		600   /* 10 minutes */
 #define WDS_AGING_COUNT		2
diff --git a/include/kernel/net80211/ieee80211_proto.h b/include/kernel/net80211/ieee80211_proto.h
index e678dca..99a7cd5 100644
--- a/include/kernel/net80211/ieee80211_proto.h
+++ b/include/kernel/net80211/ieee80211_proto.h
@@ -71,7 +71,7 @@
 	const u_int8_t *, int);
 int ieee80211_parse_htcap(struct ieee80211_node *ni, u_int8_t *ie);
 int ieee80211_parse_htinfo(struct ieee80211_node *ni, u_int8_t *ie);
-int ieee80211_parse_vhtcap(struct ieee80211_node *ni, u_int8_t *ie);
+void ieee80211_parse_vhtcap(struct ieee80211_node *ni, u_int8_t *ie);
 int ieee80211_parse_vhtop(struct ieee80211_node *ni, u_int8_t *ie);
 int ieee80211_parse_rates(struct ieee80211_node *ni,
 	const u_int8_t *rates, const u_int8_t *xrates);
@@ -80,6 +80,7 @@
 void ieee80211_saveath(struct ieee80211_node *, u_int8_t *);
 int ieee80211_input_tdls_qtnie(struct ieee80211_node *ni, struct ieee80211vap *vap,
 				struct ieee80211_ie_qtn *qtnie);
+void ieee80211_update_current_mode(struct ieee80211_node *ni);
 #if TOPAZ_RX_ACCELERATE
 int ieee80211_tdls_tqe_path_check(struct ieee80211_node *ni, struct sk_buff *skb, int rssi, uint16_t ether_type);
 #endif
@@ -87,11 +88,13 @@
 	int, int, u_int32_t);
 void ieee80211_sta_pwrsave(struct ieee80211vap *, int);
 void ieee80211_parent_queue_xmit(struct sk_buff *);
+struct sk_buff * ieee80211_get_nulldata(struct ieee80211_node *ni);
 int ieee80211_send_nulldata(struct ieee80211_node *);
 int ieee80211_send_qosnulldata(struct ieee80211_node *, int);
 int ieee80211_send_qosnulldata_ext(struct ieee80211com *ic, uint8_t *mac, int pwr);
 void ieee80211_send_csa_frame(struct ieee80211vap *vap, u_int8_t csa_mode,
 	u_int8_t csa_chan, u_int8_t csa_count, u_int64_t tsf);
+void ieee80211_get_channel_bw_offset(struct ieee80211com *ic, int16_t *is_40, int16_t *offset);
 int ieee80211_send_mgmt(struct ieee80211_node *, int, int);
 void ieee80211_mgmt_output(struct ieee80211_node *ni, struct sk_buff *skb, int type,
 	const u_int8_t da[IEEE80211_ADDR_LEN]);
@@ -490,15 +493,16 @@
 	u_int8_t *bo_erp;		/* start of ERP element */
 	u_int8_t *bo_appie_buf;		/* start of APP IE buf */
 	u_int16_t bo_appie_buf_len;	/* APP IE buf length in bytes */
-	u_int16_t bo_chanswitch_trailerlen;
 };
 struct sk_buff *ieee80211_beacon_alloc(struct ieee80211_node *,
 	struct ieee80211_beacon_offsets *);
 int ieee80211_beacon_update(struct ieee80211_node *,
 	struct ieee80211_beacon_offsets *, struct sk_buff *, int);
+void ieee80211_beacon_update_all(struct ieee80211com *);
 
 /* XXX exposed due to of beacon code botch */
 u_int8_t *ieee80211_add_rates(u_int8_t *, const struct ieee80211_rateset *);
+u_int8_t *ieee80211_add_supported_chans(uint8_t *frm, struct ieee80211com *ic);
 u_int8_t *ieee80211_add_xrates(u_int8_t *, const struct ieee80211_rateset *);
 u_int8_t *ieee80211_add_bss_load(u_int8_t *, struct ieee80211vap *);
 u_int8_t *ieee80211_add_extcap(u_int8_t *);
@@ -524,8 +528,9 @@
 u_int8_t *ieee80211_add_htcap(struct ieee80211_node *, u_int8_t *, struct ieee80211_htcap *, int subtype);
 u_int8_t *ieee80211_add_htinfo(struct ieee80211_node *, u_int8_t *, struct ieee80211_htinfo *);
 
-u_int8_t *ieee80211_add_vhtcap(struct ieee80211_node *, u_int8_t *, struct ieee80211_vhtcap *);
+u_int8_t *ieee80211_add_vhtcap(struct ieee80211_node *, u_int8_t *, struct ieee80211_vhtcap *, uint8_t);
 u_int8_t *ieee80211_add_vhtop(struct ieee80211_node *, u_int8_t *, struct ieee80211_vhtop *);
+uint8_t *ieee80211_add_vhtop_notif(uint8_t *frm, struct ieee80211com *ic, int band_24g);
 
 /* MU MIMO */
 void
@@ -535,13 +540,20 @@
 				  uint8_t pos, uint8_t delete);
 struct ieee80211_node *ieee80211_find_node_by_aid(struct ieee80211com *ic, uint8_t aid);
 
+u_int8_t * ieee80211_add_20_40_bss_coex_ie(u_int8_t *frm, u_int8_t coex);
+void ieee80211_get_20_40_bss_into_chan_list(struct ieee80211com *ic, struct ieee80211vap *vap,
+					u_int16_t *pp_ch_list);
+u_int8_t * ieee80211_add_20_40_bss_into_ch_rep(u_int8_t *frm,
+	struct ieee80211com *ic, u_int16_t ch_list);
+u_int8_t * ieee80211_add_obss_scan_ie(u_int8_t *frm, struct ieee80211_obss_scan_ie *obss_ie);
 u_int8_t *ieee80211_add_qtn_extender_role_ie(uint8_t *frm, uint8_t role);
 u_int8_t *ieee80211_add_qtn_extender_bssid_ie(struct ieee80211vap *vap, uint8_t *frm);
+u_int8_t *ieee80211_add_qtn_extender_state_ie(uint8_t *frm, uint8_t ocac);
 int ieee80211_extender_send_event(struct ieee80211vap *vap,
 	const struct qtn_wds_ext_event_data *p_wds_event_data, uint8_t *ie);
-struct ieee80211_extender_wds_info *ieee80211_extender_find_peer_wds_info(struct ieee80211vap *,
-	uint8_t *);
-int ieee80211_extender_remove_peer_wds_info(struct ieee80211vap *vap, uint8_t *mac_addr);
+struct ieee80211_extender_wds_info *ieee80211_extender_find_peer_wds_info(struct ieee80211com *ic,
+	uint8_t *mac_addr);
+int ieee80211_extender_remove_peer_wds_info(struct ieee80211com *ic, uint8_t *mac_addr);
 void ieee80211_extender_notify_ext_role(struct ieee80211_node *ni);
 void ieee80211_extender_sta_update_info(struct ieee80211_node *ni,
 		const struct ieee80211_qtn_ext_role *ie_role,
diff --git a/include/kernel/net80211/ieee80211_scan.h b/include/kernel/net80211/ieee80211_scan.h
index d06729d..a66d477 100644
--- a/include/kernel/net80211/ieee80211_scan.h
+++ b/include/kernel/net80211/ieee80211_scan.h
@@ -49,17 +49,28 @@
 	void *ss_priv;				/* scanner private state */
 	void *ss_scs_priv;			/* scs private state independent of the scan state */
 	u_int16_t ss_flags;
-#define	IEEE80211_SCAN_NOPICK	0x0001		/* scan only, no selection */
-#define	IEEE80211_SCAN_ACTIVE	0x0002		/* active scan (probe req) */
-#define	IEEE80211_SCAN_PICK1ST	0x0004		/* ``hey sailor'' mode */
-#define	IEEE80211_SCAN_BGSCAN	0x0008		/* bg scan, exit ps at end */
-#define	IEEE80211_SCAN_ONCE	0x0010		/* do one complete pass */
-#define	IEEE80211_SCAN_NO_DFS	0x0020		/* avoid DFS channels, AP only */
-#define IEEE80211_SCAN_DFS_ACTION	0x0040	/* scan end, do DFS action */
-#define	IEEE80211_SCAN_GOTPICK	0x1000		/* got candidate, can stop */
-#define IEEE80211_SCAN_QTN_BGSCAN	0x0080	/* quantenna background scanning required */
-#define IEEE80211_SCAN_OPCHAN	0x0100		/* quantenna scanning on operating channel only */
-#define IEEE80211_SCAN_QTN_SEARCH_MBS	0x0200	/* seach MBS, no action on scan end */
+#define	IEEE80211_SCAN_NOPICK			0x0001	/* scan only, no selection */
+#define	IEEE80211_SCAN_ACTIVE			0x0002	/* active scan (probe req) */
+#define	IEEE80211_SCAN_PICK1ST			0x0004	/* ``hey sailor'' mode */
+#define	IEEE80211_SCAN_BGSCAN			0x0008	/* bg scan, exit ps at end */
+#define	IEEE80211_SCAN_ONCE			0x0010	/* do one complete pass */
+#define	IEEE80211_SCAN_NO_DFS			0x0020	/* avoid DFS channels, AP only */
+#define IEEE80211_SCAN_DFS_ACTION		0x0040	/* scan end, do DFS action */
+#define IEEE80211_SCAN_QTN_BGSCAN		0x0080	/* quantenna background scanning required */
+#define IEEE80211_SCAN_OPCHAN			0x0100	/* quantenna scanning on operating channel only */
+#define IEEE80211_SCAN_QTN_SEARCH_MBS		0x0200	/* seach MBS, no action on scan end */
+#define IEEE80211_SCAN_OBSS			0x0400	/* OBSS scan */
+/* Note: top 4 bits for internal use only */
+#define	IEEE80211_SCAN_GOTPICK			0x1000	/* got candidate, can stop */
+
+/* Prefer selecting DFS only channels for bootup CAC*/
+#define IEEE80211_SCAN_PICK_NOT_AVAILABLE_DFS_ONLY		0x0011
+
+/* Select channel from DFS and non-DFS sets which are available only*/
+/* All Non-DFS channels are available by default,
+ * DFS channels are available only after CAC-Completion events
+ */
+#define IEEE80211_SCAN_PICK_AVAILABLE_ANY_CHANNEL		0x0012
 
 	u_int16_t ss_pick_flags;			/* pick a channel via a algorithm in a special domain */
 
@@ -105,7 +116,7 @@
 #define	STA_FAILS_MAX	2		/* assoc failures before ignored */
 #define	STA_FAILS_AGE	(2 * 60)	/* time before clearing fails (secs) */
 #define	STA_PURGE_SCANS	2		/* age for purging sta entries (scans) */
-#define	AP_PURGE_SCANS	2		/* age for purging ap entries (scans) */
+#define	AP_PURGE_SCANS	8		/* age for purging ap entries (scans) */
 
 #define RSSI_LPF_LEN	10
 #define	RSSI_EP_MULTIPLIER	(1<<7)	/* pow2 to optimize out * and / */
@@ -138,6 +149,7 @@
 int ieee80211_check_scan(struct ieee80211vap *, int, u_int, u_int,
 	const struct ieee80211_scan_ssid ssids[],
 	int (*action)(struct ieee80211vap *, const struct ieee80211_scan_entry *));
+int ieee80211_should_scan(struct ieee80211vap *vap);
 int ieee80211_bg_scan(struct ieee80211vap *);
 void ieee80211_cancel_scan(struct ieee80211vap *);
 void ieee80211_cancel_scan_no_wait(struct ieee80211vap *vap);
@@ -203,6 +215,7 @@
 	u_int8_t *vhtcap;
 	u_int8_t *vhtop;
 	u_int8_t *pwr_constraint;
+	u_int8_t *obss_scan;
 	int8_t	local_max_txpwr;
 	struct ieee80211_channel *rxchan;
 	uint8_t extender_role;
@@ -336,6 +349,7 @@
 
 struct ap_state {
 	unsigned int as_numbeacons[IEEE80211_CHAN_MAX];
+	uint8_t as_obss_chanlayout[IEEE80211_CHAN_MAX];
 
 	int as_maxrssi[IEEE80211_CHAN_MAX];
 	int as_cci[IEEE80211_CHAN_MAX];		/* CCI, Co-Channel Interference */
@@ -381,10 +395,14 @@
 	int32_t as_dfs_reentry_level;
 };
 
-void ieee8011_add_scan_entry(struct ieee80211_scan_entry *ise,
+void ieee80211_add_scan_entry(struct ieee80211_scan_entry *ise,
 			const struct ieee80211_scanparams *sp,
 			const struct ieee80211_frame *wh,
 			int subtype, int rssi, int rstamp);
+void ieee80211_scan_check_secondary_channel(struct ieee80211_scan_state *ss,
+			struct ieee80211_scan_entry *ise);
+struct ieee80211_channel *ieee80211_scan_switch_pri_chan(struct ieee80211_scan_state *ss,
+			struct ieee80211_channel *chan_pri);
 int ieee80211_wps_active(uint8_t *wsc_ie);
 void ieee80211_dump_scan_res(struct ieee80211_scan_state *ss);
 
diff --git a/include/kernel/net80211/ieee80211_tdls.h b/include/kernel/net80211/ieee80211_tdls.h
index bc153dc..907f669 100644
--- a/include/kernel/net80211/ieee80211_tdls.h
+++ b/include/kernel/net80211/ieee80211_tdls.h
@@ -119,8 +119,8 @@
 #define DEFAULT_TDLS_PATH_SEL_MODE		0
 #define DEFAULT_TDLS_PATH_SEL_PPS_THRSHLD	20
 #define DEFAULT_TDLS_PATH_SEL_RATE_THRSHLD	24
-#define DEFAULT_TDLS_RATE_DETECTION_PKT_CNT	16
-#define DEFAULT_TDLS_RATE_DETECTION_BURST_CNT	2
+#define DEFAULT_TDLS_RATE_DETECTION_PKT_CNT	1024
+#define DEFAULT_TDLS_RATE_DETECTION_BURST_CNT	4
 #define DEFAULT_TDLS_RATE_DETECTION_WAITING_T	12
 #define DEFAULT_TDLS_LINK_WEIGHT		5
 #define DEFAULT_TDLS_LINK_DISABLE_SCALE		2
@@ -137,7 +137,7 @@
 #define DEFAULT_TDLS_CH_SW_TX_TIME		1500
 #define	DEFAULT_TDLS_FIXED_OFF_CHAN		TDLS_INVALID_CHANNEL_NUM
 
-#define	DEFAULT_TDLS_UAPSD_INDICATION_WND	(2)
+#define	DEFAULT_TDLS_UAPSD_INDICATION_WND	(150)
 #define	DEFAULT_TDLS_SETUP_EXPIRE_DURATION	(20)
 
 const char *
@@ -156,6 +156,9 @@
 ieee80211_tdls_get_smoothed_rssi(struct ieee80211vap *vap, struct ieee80211_node *ni);
 
 int
+ieee80211_tdls_add_bridge_entry_for_peer(struct ieee80211_node *peer_ni);
+
+int
 ieee80211_tdls_disable_peer_link(struct ieee80211_node *ni);
 
 void
diff --git a/include/kernel/net80211/ieee80211_var.h b/include/kernel/net80211/ieee80211_var.h
index 1accce5..42b8745 100644
--- a/include/kernel/net80211/ieee80211_var.h
+++ b/include/kernel/net80211/ieee80211_var.h
@@ -71,6 +71,11 @@
 #define	IEEE80211_BGSCAN_IDLE_MIN	100	/* min idle time (ms) */
 #define	IEEE80211_BGSCAN_IDLE_DEFAULT	250	/* default idle time (ms) */
 
+#define IEEE80211_USE_QTN_BGSCAN(vap)	\
+	(((vap->iv_ic)->ic_flags_ext & IEEE80211_FEXT_REPEATER) &&	\
+	((vap)->iv_opmode == IEEE80211_M_STA) &&	\
+	((vap)->iv_ic->ic_bsschan != IEEE80211_CHAN_ANYC))
+
 #define IEEE80211_COVERAGE_CLASS_MAX	31	/* max coverage class */
 #define IEEE80211_REGCLASSIDS_MAX	10	/* max regclass id list */
 
@@ -99,11 +104,14 @@
 #define IEEE80211_USEC_TO_MS(x)		((x) / 1000)
 #define IEEE80211_MS_TO_JIFFIES(x)	((x) * HZ / 1000)
 
-#define IEEE80211_SCS_PICK_DFS_ONLY		0x1
-#define IEEE80211_SCS_PICK_NON_DFS_ONLY		0x2
-#define IEEE80211_SCS_PICK_ANYWAY		0x4
+#define IEEE80211_SCS_PICK_DFS_ONLY			0x1/* Pick channels from DFS set only*/
+#define IEEE80211_SCS_PICK_NON_DFS_ONLY			0x2/* Pick channels from Non-DFS set only*/
+#define IEEE80211_SCS_PICK_AVAILABLE_ANY_CHANNEL	0x4/* Pick channels from DFS and Non-DFS sets*/
+#define IEEE80211_SCS_PICK_ANYWAY			0x8/* Omit channel margins during channel pick*/
+#define IEEE80211_SCS_PICK_NOT_AVAILABLE_DFS_ONLY	0x10
 
-#define IEEE80211_RX_AGG_TIMEOUT_DEFAULT						 (IEEE80211_USEC_TO_MS(QTN_RX_REORDER_BUF_TIMEOUT_US))
+
+#define IEEE80211_RX_AGG_TIMEOUT_DEFAULT	(IEEE80211_USEC_TO_MS(QTN_RX_REORDER_BUF_TIMEOUT_US))
 
 #define IEEE80211_MAX_AMPDU_SUBFRAMES			(64)
 #define IEEE80211_TX_BA_REQUEST_RETRY_TIMEOUT		(5 * HZ)
@@ -135,6 +143,8 @@
 #define	MAX(_a, _b)	((_a)>(_b)?(_a):(_b))
 #define ABS(_x)		(((_x) > 0) ? (_x) : (0 - (_x)))
 
+#define IS_MULTIPLE_BITS_SET(_x)	(((unsigned)(_x)) & (((unsigned)(_x)) - 1))
+
 /* For Little-endian */
 #define ntohll(x)  be64_to_cpu(x)
 #define htonll(x)  cpu_to_be64(x)
@@ -159,6 +169,7 @@
 #define	IEEE80211_EXTENDER_DEFAULT_RBS_WGT		6
 #define IEEE80211_EXTENDER_DEFAULT_MBS_BEST_RSSI	20
 #define	IEEE80211_EXTENDER_DEFAULT_RBS_BEST_RSSI	20
+#define IEEE80211_EXTENDER_DEFAULT_MBS_RSSI_MARGIN	6
 
 #define IEEE80211_EXTWDS_MAX_PSEUDO_RSSI		70
 #define IEEE80211_EXTWDS_MIN_PSEUDO_RSSI		0
@@ -209,6 +220,7 @@
 	uint8_t s_addr[IEEE80211_ADDR_LEN];	/* Sender address */
 	uint8_t r_addr[IEEE80211_ADDR_LEN];	/* Receiver address */
 	uint16_t tx_time;	/* Tx time - us */
+	uint16_t is_latest;	/* latest statistics data flag */
 } __packed;
 
 struct ieee80211_tdls_scs_entry {
@@ -238,6 +250,8 @@
 	uint32_t		scs_cca_intf_hi_thrshld;
 	uint32_t		scs_cca_intf_lo_thrshld;
 	uint32_t		scs_cca_intf_ratio;
+	uint32_t		scs_cca_intf_dfs_margin;
+	uint32_t		scs_pmbl_err_thrshld;
 	uint32_t		scs_cca_sample_dur;
 #define SCS_CCA_INTF_SMTH_FCTR_NOXP		0
 #define SCS_CCA_INTF_SMTH_FCTR_XPED		1
@@ -248,8 +262,10 @@
 #define SCS_RSSI_SMTH_FCTR_NUM			2
 	uint8_t			scs_rssi_smth_fctr[SCS_RSSI_SMTH_FCTR_NUM];
 	uint8_t			scs_chan_mtrc_mrgn;
+	uint8_t			scs_leavedfs_chan_mtrc_mrgn;/* DFS-to-Non-DFS channel switch margin */
 	int8_t			scs_atten_adjust;
 	uint32_t		scs_cnt[IEEE80211_SCS_CNT_MAX];
+	uint16_t		scs_atten_sw_enable;
 	int16_t			scs_last_smpl_chan;	/* index into the channel array */
 	struct brcm_rxglitch_thrshld_pair *scs_brcm_rxglitch_thrshlds;
 	uint32_t		scs_brcm_rxglitch_thrshlds_scale;
@@ -270,6 +286,8 @@
 	uint16_t		scs_pmp_stats_clear_interval;
 	uint16_t		scs_as_rx_time_smth_fctr;
 	uint16_t		scs_as_tx_time_smth_fctr;
+	uint16_t		scs_cca_idle_smthed;
+	uint16_t		scs_cca_idle_smth_fctr;
 
 	ATH_LIST_HEAD(, ieee80211_tdls_scs_entry) scs_tdls_list[IEEE80211_NODE_HASHSIZE];
 	spinlock_t		scs_tdls_lock;
@@ -282,10 +300,12 @@
 #define IEEE80211_SCS_MEASURE_INIT_TIMER	3
 #define IEEE80211_SCS_MEASURE_TIMER_INTVAL	5
 #define IEEE80211_MAX_STA_CCA_ENABLED		2
-#define IEEE80211_CCA_IDLE_THRSHLD		50
-#define IEEE80211_CCA_INTFR_HIGH_THRSHLD	30
+#define IEEE80211_CCA_IDLE_THRSHLD		40
+#define IEEE80211_CCA_INTFR_HIGH_THRSHLD	50
 #define IEEE80211_CCA_INTFR_LOW_THRSHLD		30
 #define IEEE80211_CCA_INTFR_RATIO		20
+#define IEEE80211_CCA_INTFR_DFS_MARGIN		0
+#define IEEE80211_PMBL_ERR_THRSHLD		300
 
 #define SCS_NODE_TRAFFIC_IDLE        0
 #define SCS_NODE_TRAFFIC_LOADED      1
@@ -305,7 +325,8 @@
 	uint32_t		set_bcn_intval;
 	uint32_t		restore_bcn_intval;
 	uint32_t		pm_update;
-	uint32_t		mbssid_enabled;
+	uint32_t		unsupported_mbssid;
+	uint32_t		beacon_scheme0;
 	uint32_t		wds_exist;
 	uint32_t		set_run;
 	uint32_t		set_pend;
@@ -334,14 +355,16 @@
 
 struct ieee80211_ocac_params {
 	uint16_t		traffic_ctrl;	/* use qosnull frame to control the traffic */
-	uint16_t		dwell_time_ms;	/* milliseconds, the time on off channel
-							within 1 beacon interval */
 	uint16_t		secure_dwell_ms;	/* milliseconds, the time on off channel
 								within one off-channel action, using qosnull
 								with large NAV to protect the traffic */
+	uint16_t		dwell_time_ms;	/* milliseconds, the time on off channel
+							within 1 beacon interval */
 	uint16_t		duration_secs;	/* seconds, the total time for one channel */
 	uint16_t		cac_time_secs;	/* seconds, the total time on off channel
 							for one channel */
+	uint16_t		wea_dwell_time_ms;	/* milliseconds, the time on weather channel
+							within 1 beacon interval */
 	uint32_t		wea_duration_secs;	/* seconds, the total time for weather channel */
 	uint32_t		wea_cac_time_secs;	/* seconds, the total time on off channel
 							for weather channel */
@@ -395,9 +418,6 @@
 #define IEEE80211_SET_CHANNEL_DEFERRED_CANCEL	0x80000000
 #define IEEE80211_SET_CHANNEL_TSF_OFFSET	0x40000000
 
-#define IEEE80211_QTN_BGSCAN_DWELLTIME_ACTIVE	15 /* milliseconds */
-#define IEEE80211_QTN_BGSCAN_DWELLTIME_PASSIVE	15 /* milliseconds */
-
 enum ieee80211_scan_frame_flags {
 	IEEE80211_SCAN_FRAME_START = 0,
 	IEEE80211_SCAN_FRAME_PRBREQ = 1,
@@ -408,6 +428,12 @@
 struct qtn_bgscan_param	{
 	u_int16_t	dwell_msecs_active;
 	u_int16_t	dwell_msecs_passive;
+	u_int16_t	duration_msecs_active;
+	u_int16_t	duration_msecs_passive_fast;
+	u_int16_t	duration_msecs_passive_normal;
+	u_int16_t	duration_msecs_passive_slow;
+	u_int16_t	thrshld_fat_passive_fast;
+	u_int16_t	thrshld_fat_passive_normal;
 	u_int16_t	debug_flags;
 };
 
@@ -499,6 +525,80 @@
 	uint32_t times[IEEE80211_CHAN_MAX];	/* number of times channel was used */
 };
 
+#define DM_TXPOWER_FACTOR_MAX	8
+#define DM_TXPOWER_FACTOR_MIN	0
+#define DM_ACI_FACTOR_MAX	0
+#define DM_ACI_FACTOR_MIN	-4
+#define DM_CCI_FACTOR_MAX	0
+#define DM_CCI_FACTOR_MIN	-4
+#define DM_DFS_FACTOR_MAX	32
+#define DM_DFS_FACTOR_MIN	0
+#define DM_BEACON_FACTOR_MAX	0
+#define DM_BEACON_FACTOR_MIN	-4
+
+#define DM_FLAG_TXPOWER_FACTOR_PRESENT	0x1
+#define DM_FLAG_ACI_FACTOR_PRESENT	0x2
+#define DM_FLAG_CCI_FACTOR_PRESENT	0x4
+#define DM_FLAG_DFS_FACTOR_PRESENT	0x8
+#define DM_FLAG_BEACON_FACTOR_PRESENT	0x10
+
+struct ieee80211_dm_factor {
+	uint32_t flags;
+	int txpower_factor;
+	int aci_factor;
+	int cci_factor;
+	int dfs_factor;
+	int beacon_factor;
+};
+
+#if defined(QBMPS_ENABLE)
+
+#define BMPS_MODE_OFF		0
+#define BMPS_MODE_MANUAL	1
+#define BMPS_MODE_AUTO		2
+
+#define	BMPS_TPUT_THRESHOLD_UPPER	8000	/* 8 mbps */
+#define	BMPS_TPUT_THRESHOLD_LOWER	4000	/* 4 mbps */
+#define BMPS_TPUT_MEASURE_PERIOD_MS	5000	/* 5 seconds */
+
+struct bmps_tput_measure {
+	struct timer_list tput_timer;		/* STA BMPS timer for TX/RX */
+						/* tput measurement */
+	uint32_t prev_tx_bytes;			/* # of TX bytes in previous measurement */
+	uint32_t prev_rx_bytes;			/* # of RX bytes in previous measurement */
+	uint32_t tput_kbps;			/* TX & RX overall throughput in kbps */
+};
+#endif
+
+/*
+ * Operating class table for regulatory region to operating class conversion.
+ */
+struct operating_class_table {
+	uint8_t index;
+	uint8_t global_index;
+	uint8_t bandwidth;
+	uint8_t chan_set[IEEE80211_CHAN_BYTES];
+	uint16_t behavior;
+};
+
+struct region_to_oper_class {
+	const char *region_name;
+	uint8_t class_num_5g;
+	uint8_t classes_5g[IEEE80211_OPER_CLASS_BYTES];
+	uint8_t class_num_24g;
+	uint8_t classes_24g[IEEE80211_OPER_CLASS_BYTES_24G];
+	const struct operating_class_table * const class_table;
+};
+
+/*
+ * Logical SSID group used for defining association limits per group of VAPs.
+ */
+struct ssid_logical_group {
+	u_int16_t limit;
+	u_int16_t reserve;
+	u_int16_t assocs;
+};
+
 struct ieee80211com {
 	/* MATS FIX The member ic_dev is not used in QDRV and should be removed */
 	struct net_device *ic_dev;		/* associated device */
@@ -524,8 +624,10 @@
 	u_int32_t ic_flags_ext;			/* extension of state flags */
 	u_int32_t ic_flags_qtn;			/* Quantenna specific flags */
 	u_int32_t ic_caps;			/* capabilities */
-	u_int8_t ic_ht_nss_cap;			/* HT Max spatial streams */
-	enum ieee80211_vht_nss ic_vht_nss_cap;	/* VHT Max spatial streams */
+	enum ieee80211_vht_mcs_supported ic_vht_mcs_cap;	/* VHT MCS capability */
+	enum ieee80211_ht_nss ic_ht_nss_cap;	/* Current HT Max spatial streams */
+	enum ieee80211_vht_nss ic_vht_nss_cap;	/* Current VHT Max spatial streams */
+	enum ieee80211_vht_nss ic_vht_nss_cap_24g;	/* Current 2.4G VHT Max spatial streams*/
 	u_int8_t ic_ath_cap;			/* Atheros adv. capabilities */
 	u_int8_t ic_promisc;			/* vap's needing promisc mode */
 	u_int8_t ic_allmulti;			/* vap's needing all multicast*/
@@ -565,7 +667,11 @@
 
 	int ic_txbf_period;
 
-	/* 11ac capabilities */
+	/* 2.4G band vht capabilities */
+	struct ieee80211_vhtcap ic_vhtcap_24g;
+	struct ieee80211_vhtop  ic_vhtop_24g;
+
+	/* 5G band capabilities */
 	struct ieee80211_vhtcap ic_vhtcap;
 	struct ieee80211_vhtop	ic_vhtop;
 
@@ -593,6 +699,8 @@
 	uint8_t ic_dyn_wmm;		/* Dynamic WMM enabled */
 	uint8_t ic_emi_power_switch_enable;
 	uint8_t ic_dfs_channels_deactive; /* Deactive all DFS channels */
+	uint16_t ic_vht_opmode_notif;	/* Override OpMode Notification IE, for WFA Testbed */
+	uint8_t ic_beaconing_scheme;
 
 	/*
 	 * Channel state:
@@ -623,14 +731,33 @@
 	struct ieee80211_assoc_history ic_assoc_history;
 	u_int8_t ic_chan_avail[IEEE80211_CHAN_BYTES];
 	u_int8_t ic_chan_active[IEEE80211_CHAN_BYTES];
+
+	/* All DFS channels are marked with CAC_NOT_DONE by default */
+#define IEEE80211_CHANNEL_STATUS_NOT_AVAILABLE_CAC_NOT_DONE	(0x1)
+
+#define IEEE80211_CHANNEL_STATUS_NOT_AVAILABLE_RADAR_DETECTED	(0x2)
+
+	/* --> All Non-DFS channels are AVAILABLE by default
+	 * --> Any DFS Channel is set to AVAILABLE
+	 *	(i) only after CAC_DONE,
+	 *      (ii) and no radar was found
+	 */
+#define IEEE80211_CHANNEL_STATUS_AVAILABLE			(0x4)
+
+	u_int8_t ic_chan_availability_status[IEEE80211_CHAN_MAX+1];
+
 	u_int8_t ic_chan_pri_inactive[IEEE80211_CHAN_BYTES];	/* channel not used as primary */
+	u_int8_t ic_is_inactive_usercfg[IEEE80211_CHAN_BYTES];  /* 0x1-regulatory 0x2-user override */
+	u_int8_t ic_is_inactive_autochan_only[IEEE80211_CHAN_BYTES];
 	u_int8_t ic_chan_dfs_required[IEEE80211_CHAN_BYTES];	/* channel is DFS required */
 	u_int8_t ic_chan_weather_radar[IEEE80211_CHAN_BYTES];	/* weather radar channel */
+	u_int8_t ic_chan_disabled[IEEE80211_CHAN_BYTES];	/* channels are disabled */
 
 	u_int8_t ic_chan_active_20[IEEE80211_CHAN_BYTES];
 	u_int8_t ic_chan_active_40[IEEE80211_CHAN_BYTES];
 	u_int8_t ic_chan_active_80[IEEE80211_CHAN_BYTES];
 	u_int8_t ic_max_system_bw;
+	u_int8_t ic_bss_bw;			/* BSS channel width, in station mode only */
 
 	struct ieee80211_channel *ic_curchan;	/* current channel */
 	struct ieee80211_channel *ic_bsschan;	/* bss channel */
@@ -638,6 +765,9 @@
 	struct ieee80211_channel *ic_scanchan;	/* scanning channel */
 	int16_t ic_channoise;			/* current channel noise in dBm */
 	struct ieee80211_channel *ic_des_chan;	/* desired channel */
+	int ic_des_chan_after_init_cac;	/* Saved desired chan to switch after Initial CAC */
+	int ic_des_chan_after_init_scan;/* Saved desired chan to switch after Initial Scan */
+
 	int ic_chan_is_set;
 	u_int16_t ic_des_mode;			/* desired mode */
 	/* regulatory class ids */
@@ -672,6 +802,8 @@
 	u_int16_t ic_xr_sta_assoc;		/* XR stations associated */
 	u_int16_t ic_nonqtn_sta;		/* Non-Quantenna peers */
 
+	struct ssid_logical_group ic_ssid_grp[IEEE80211_MAX_BSS_GROUP]; /* VAPs logical group assocication limits */
+
 	/* dwell times for channel scanning */
 	u_int16_t ic_mindwell_active;
 	u_int16_t ic_mindwell_passive;
@@ -689,6 +821,7 @@
 	int ic_country_outdoor;
 	struct ieee80211_ie_country ic_country_ie; /* country info element */
 	uint8_t ic_oper_class[IEEE80211_OPER_CLASS_BYTES];	/* Supported operating class */
+	const struct region_to_oper_class *ic_oper_class_table;
 	/*
 	 *  current channel power constraint for Power Constraint IE.
 	 *
@@ -723,6 +856,11 @@
 	u_int8_t ic_ieee_alt_chan;		/* if not zero jump to this channel if radar is detected */
 	u_int32_t ic_non_occupancy_period;	/* radar non-occupancy period. */
 
+	/* boot time CAC*/
+	int32_t ic_max_boot_cac_duration;
+	unsigned long ic_boot_cac_end_jiffy;
+        struct timer_list icac_timer;
+
 	u_int8_t ic_mode_get_phy_stats;
 
 	u_int8_t ic_legacy_retry_limit;
@@ -734,11 +872,18 @@
 	u_int32_t ic_tx_max_ampdu_size;
 
 	u_int16_t ic_mu_debug_level;
+	u_int8_t  ic_mu_enable;
+
+	u_int8_t ic_rts_bw_dyn;
+	u_int8_t ic_cts_bw;
+	u_int8_t use_non_ht_duplicate_for_mu;
+	u_int8_t rx_bws_support_for_mu_ndpa;
 
 	/* virtual ap create/delete */
 	struct ieee80211vap *(*ic_vap_create)(struct ieee80211com *,
 		const char *, int, int, int, struct net_device *);
 	void (*ic_vap_delete)(struct ieee80211vap *);
+	uint8_t (*ic_get_vap_idx)(struct ieee80211vap *);
 	/* send/recv 802.11 management frame */
 	int (*ic_send_mgmt)(struct ieee80211_node *, int, int);
 	void (*ic_recv_mgmt)(struct ieee80211_node *, struct sk_buff *, int,
@@ -755,6 +900,7 @@
 	/* new station association callback/notification */
 	void (*ic_newassoc)(struct ieee80211_node *, int);
 	void (*ic_disassoc)(struct ieee80211_node *);
+	void (*ic_node_update)(struct ieee80211_node *);
 	/* node state management */
 	struct ieee80211_node *(*ic_node_alloc)(struct ieee80211_node_table *,
 		struct ieee80211vap *, const uint8_t *, uint8_t tmp_node);
@@ -779,17 +925,14 @@
 	void (*ic_set_channel)(struct ieee80211com *);
 	void (*ic_bridge_set_dest_addr)(struct sk_buff *skb, void *eh1);
 	void (*ic_get_tsf)(uint64_t *tsf);
-	int (*ic_scs_set_frame)(struct ieee80211com *ic, struct ieee80211_node *ni,
+	int (*ic_bmps_set_frame)(struct ieee80211com *ic, struct ieee80211_node *ni,
 				struct sk_buff *skb);
-	int (*ic_scs_release_frame)(struct ieee80211com *ic);
+	int (*ic_bmps_release_frame)(struct ieee80211com *ic);
 	void (*ic_scs_update_scan_stats)(struct ieee80211com *ic);
-	int (*ic_sample_channel)(struct ieee80211com *ic, struct ieee80211_channel *chan);
+	int (*ic_sample_channel)(struct ieee80211vap *vap, struct ieee80211_channel *chan);
 	int (*ic_bgscan_start)(struct ieee80211com *ic);
-	int (*ic_bgscan_set_frame)(struct ieee80211com *ic, struct ieee80211_node *ni,
-				   struct sk_buff *skb, int frm_flag);
-	int (*ic_bgscan_release_frame)(struct ieee80211com *ic, int frm_flag);
-	int (*ic_bgscan_channel)(struct ieee80211com *ic, struct ieee80211_channel *chan,
-				 int active_scan, int dwelltime);
+	int (*ic_bgscan_channel)(struct ieee80211vap *vap, struct ieee80211_channel *chan,
+				 int scan_mode, int dwelltime);
 	void (*ic_set_channel_deferred)(struct ieee80211com *, u_int64_t tsf, int flags);
 	int  (*ic_set_start_cca_measurement)(struct ieee80211com *ic,
 					     const struct ieee80211_channel *cca_channel,
@@ -828,8 +971,13 @@
 		const u_int8_t mac[IEEE80211_ADDR_LEN]);
 
 	/* L2 external filter */
+	int (*ic_set_l2_ext_filter)(struct ieee80211vap *, int);
+	int (*ic_set_l2_ext_filter_port)(struct ieee80211vap *, int);
+	int (*ic_get_l2_ext_filter_port)(void);
 	void (*ic_send_to_l2_ext_filter)(struct ieee80211vap *, struct sk_buff *);
 
+	int (*ic_mac_reserved)(const uint8_t *addr);
+
 	/* Stats support */
 	void (*ic_get_wlanstats)(struct ieee80211com *, struct iw_statistics *);
 	/* Change of the MIMO power save mode for the STA */
@@ -842,6 +990,26 @@
 	struct ieee80211_channel *(*ic_select_channel)(u_int8_t new_ieee);
 	/* DFS action when channel scan is done*/
 	void (*ic_dfs_action_scan_done)(void);
+	/* Check if current region belongs to EU region */
+	bool (*ic_dfs_is_eu_region)(void);
+
+
+	void (*ic_mark_channel_availability_status)(struct ieee80211com *ic, struct ieee80211_channel *chan, uint8_t usable);
+	void (*ic_mark_channel_dfs_cac_status)(struct ieee80211com *ic, struct ieee80211_channel *chan, u_int32_t cac_flag, bool set);
+	void (*ic_dump_available_channels)(struct ieee80211com *ic, const char *offending_func);
+
+	void (*ic_ap_next_cac)(struct ieee80211com *ic, struct ieee80211vap *vap,
+			unsigned long cac_period,
+			struct ieee80211_channel **qdrv_radar_cb_cac_chan,
+			u_int32_t flags);
+
+	bool (*ic_dfs_chans_available_for_cac)(struct ieee80211com *ic, struct ieee80211_channel *ch);
+	int  (*ic_get_init_cac_duration)(struct ieee80211com *ic);
+	void (*ic_set_init_cac_duration)(struct ieee80211com *ic, int val);
+	void (*ic_start_icac_procedure)(struct ieee80211com *ic);
+	void (*ic_stop_icac_procedure)(struct ieee80211com *ic);
+
+
 	/* DFS select channel */
 	void (*ic_dfs_select_channel)(int channel);
 	void (*ic_wmm_params_update)(struct ieee80211vap *);
@@ -885,6 +1053,7 @@
 	void (*ic_set_radar)(int enable);
 	void (*ic_enable_sta_dfs)(int enable);
 	int (*ic_radar_detections_num)(uint32_t chan);
+	void (*ic_complete_cac)(void);
 	int (*ic_config_channel_list)(struct ieee80211com *ic, int ic_nchans);
 	void (*ic_set_11g_erp)(struct ieee80211vap *vap, int on);
 #ifdef CONFIG_QVSP
@@ -935,6 +1104,9 @@
 	int ic_pm_state[QTN_PM_IOCTL_MAX];
 	struct timer_list ic_pm_period_change;	/* CoC period change timer */
 
+#if defined(QBMPS_ENABLE)
+	struct bmps_tput_measure ic_bmps_tput_check;	/* for BMPS tput measurement */
+#endif
 	/* hold the calling task until the scan completes */
 	wait_queue_head_t	ic_scan_comp;
 
@@ -953,14 +1125,15 @@
 	/* measurement request */
 	struct ieee80211_global_measure_info ic_measure_info;
 
-#ifdef TOPAZ_PLATFORM
 	int (*ic_get_shared_vap_stats)(struct ieee80211vap *vap);
 	int (*ic_reset_shared_vap_stats)(struct ieee80211vap *vap);
 	int (*ic_get_shared_node_stats)(struct ieee80211_node *ni);
 	int (*ic_reset_shared_node_stats)(struct ieee80211_node *ni);
-#endif
 	void (*ic_get_dscp2ac_map)(const uint8_t vapid, uint8_t *dscp2ac);
 	void (*ic_set_dscp2ac_map)(const uint8_t vapid, uint8_t *ip_dscp, uint8_t listlen, uint8_t ac);
+	void (*ic_set_dscp2tid_map)(const uint8_t vapid, const uint8_t *dscp2tid);
+	void (*ic_get_dscp2tid_map)(const uint8_t vapid, uint8_t *dscp2tid);
+
 	struct timer_list	ic_ba_setup_detect;	/*timer for detecting whether it is suitable to enable/disable AMPDU*/
 
 	int (*ic_get_cca_adjusting_status)(void);
@@ -972,7 +1145,9 @@
 	uint8_t ic_extender_mbs_best_rssi;	/* MBS best RSSI threshold */
 	uint8_t ic_extender_rbs_best_rssi;	/* MBS best RSSI threshold */
 	uint8_t ic_extender_verbose;	/* EXTENDER Debug Level */
+	uint8_t ic_extender_mbs_rssi_margin;	/* MBS RSSI margin, used in link down detection only */
 	uint8_t ic_extender_mbs_bssid[IEEE80211_ADDR_LEN];
+	uint8_t ic_extender_mbs_ocac;
 	uint8_t ic_extender_rbs_num;
 	uint8_t ic_extender_rbs_bssid[QTN_MAX_RBS_NUM][IEEE80211_ADDR_LEN];
 	unsigned long ic_extender_mbs_detected_jiffies;
@@ -981,18 +1156,33 @@
 	struct timer_list ic_extender_scan_timer;	/* timer used by RBS to search MBS */
 	uint32_t ic_scan_opchan_enable;
 	uint32_t ic_extender_bgscanintvl;
+	uint8_t  ic_extender_rbs_bw;		/* recorded bandwidth of RBS */
 	uint32_t ic_tqew_descr_limit;		/* tqew desc limit */
 
 	uint32_t ic_scan_tbl_len_max;
 
 	int ic_scan_results_check;
 	struct timer_list ic_scan_results_expire; /* scan results expire timer */
+	int hostap_wpa_state;
+
 	/* VHT related callbacks */
 	void (*ic_send_vht_grp_id_act)(struct ieee80211vap *vap, struct ieee80211_node *ni);
 	void (*ic_node_mu_grp_update)(struct ieee80211_node *ni, uint8_t grp,
 				      uint8_t pos, uint8_t delete);
 	void (*ic_mu_grp_qmat_update)(struct ieee80211_node *ni, uint8_t grp_id,
 					int delete, int feedback);
+	struct timer_list ic_obss_timer;
+	uint8_t ic_obss_scan_enable;
+	uint8_t ic_obss_scan_count;
+	struct ieee80211_obss_scan_ie ic_obss_ie;
+	void (*ic_coex_stats_update)(struct ieee80211com *ic, uint32_t value);
+	struct ieee80211_dm_factor ic_dm_factor;
+	uint32_t ic_vap_default_state;	/* 1 - enabled, 0 - disabled*/
+
+	/* tx airtime callbacks */
+	uint32_t (*ic_tx_airtime)(const struct ieee80211_node *ni);
+	uint32_t (*ic_tx_accum_airtime)(const struct ieee80211_node *ni);
+	void     (*ic_tx_airtime_control)(struct ieee80211vap *vap, uint32_t value);
 };
 
 static __inline__ uint32_t ieee80211_pm_period_tu(const struct ieee80211com *ic)
@@ -1015,7 +1205,7 @@
         u_int8_t mac[IW_MAX_SPY * IEEE80211_ADDR_LEN];
         u_int32_t ts_rssi[IW_MAX_SPY];   /* ts of rssi value from last read */
         u_int8_t thr_low;	/* 1 byte rssi value, 0 = threshold is off */
-        u_int8_t thr_high;	/* 1 byte rssi value */   
+        u_int8_t thr_high;	/* 1 byte rssi value */
         u_int8_t num;
 };
 
@@ -1061,6 +1251,11 @@
 	PPQ_FAIL_MAX,
 };
 
+enum coex_bw_switch{
+	WLAN_COEX_STATS_BW_ACTION,
+	WLAN_COEX_STATS_BW_ASSOC,
+	WLAN_COEX_STATS_BW_SCAN,
+};
 struct ieee80211_pairing_pending_entry {
 	struct ieee80211_pairing_pending_entry *next;
 
@@ -1137,6 +1332,28 @@
 	uint8_t hessid[IEEE80211_ADDR_LEN];     /* homogeneous essid */
 };
 
+/*
+ * Station profile specific to dual band mode.
+ * Each band will maintain profile to be referred while band change.
+ * Station profile is initialized while bootup from user configurations.
+ */
+struct ieee80211_sta_profile {
+        int phy_mode;
+        int vht;
+        int bw;
+        int vsp;
+        int scs;
+        int pmf;
+};
+
+struct bcast_pps_info {
+	u_int16_t	max_bcast_pps;		/* Max broadcast packets allowed per second */
+	u_int16_t	rx_bcast_counter;	/* Counter to record no. of broadcast packets processed in wireless ingress path */
+	unsigned long	rx_bcast_pps_start_time;/* Timestamp in jiffies referred to, to reset the rx_bcast_counter */
+	u_int16_t	tx_bcast_counter;	/* Counter to record no. of broadcast packets processed in EMAC/PCIe ingress path */
+	unsigned long	tx_bcast_pps_start_time;/* Timestamp in jiffies referred to, to reset the tx_bcast_counter */
+};
+
 #define IEEE80211_RX_AMSDU_THRESHOLD_CCA	500
 #define IEEE80211_RX_AMSDU_THRESHOLD_PMBL	1000
 #define IEEE80211_RX_AMSDU_PMBL_WF_SP		10
@@ -1152,6 +1369,9 @@
 	struct proc_dir_entry *iv_proc;
 	struct ieee80211_proc_entry *iv_proc_entries;
 	struct vlan_group *iv_vlgrp;		/* vlan group state */
+        struct ieee80211_sta_profile    iv_2_4ghz_prof;	/* 2.4ghz station profile */
+        struct ieee80211_sta_profile    iv_5ghz_prof;	/* 5ghz station profile */
+	enum ieee80211_pref_band        iv_pref_band;   /* preferred band in dual band mode */
 
 	TAILQ_ENTRY(ieee80211vap) iv_next;	/* list of vap instances */
 	u_int iv_unit;				/* virtual AP unit */
@@ -1293,6 +1513,10 @@
 	u_int16_t iv_swbmiss_warnings;
 	int		  iv_bcn_miss_thr;			/* Beacon miss threshold */
 	u_int8_t  iv_link_loss_enabled;		/* Link loss - Controlled by user. By default is on */
+#if defined(QBMPS_ENABLE)
+	u_int8_t  iv_swbmiss_bmps_warning;	/* swbmiss warning for STA power-saving */
+	int8_t  iv_bmps_tput_high;		/* tput indication for STA power-saving */
+#endif
 
 	u_int8_t  iv_qtn_ap_cap;			    /* Quantenna flags from bcn/probe resp (station only) */
 	u_int8_t  iv_qtn_flags;					/* Quantenna capability flags */
@@ -1305,21 +1529,13 @@
 	struct ieee80211_nsparams iv_nsparams;	/* new state parameters for tasklet for stajoin1 */
 	struct IEEE80211_TQ_STRUCT iv_stajoin1tq; /* tasklet for newstate action called from stajoin1tq */
 	uint16_t iv_vapnode_idx;		/* node_idx to use for tx of non specifically targetted frames */
-#define MIN_PRIORITY_PER_VAP 0
-#define MAX_PRIORITY_PER_VAP 8
-	uint8_t iv_ssid_pri;			/* Priority assigned for per SSID */
+	uint8_t iv_ssid_group;			/* Logical group assigned for SSID, used for BSS association limits */
 	struct timer_list iv_sta_fast_rejoin;
 	uint8_t iv_sta_fast_rejoin_bssid[IEEE80211_ADDR_LEN];
 	uint8_t wds_mac[IEEE80211_ADDR_LEN];
 	struct ieee80211_key iv_wds_peer_key;
 
-#define IEEE80211_QTN_WDS_ONLY		0x0	/* 0 = Plain WDS; No WDS Extender */
-#define	IEEE80211_QTN_WDS_MASK		0x0003
-
-#define	IEEE80211_QTN_WDS_MBS		0x0001	/* 1 = MBS-Master Base Station */
-#define	IEEE80211_QTN_WDS_RBS		0x0002	/* 2 = RBS-Repeater/Remote Base Station */
-
-	uint16_t		iv_wds_flags;
+	uint16_t		iv_extdr_flags;
 
 	struct ieee80211_spy iv_spy;            /* IWSPY support */
 	unsigned int		iv_nsdone;	/* Done with scheduled newstate tasklet */
@@ -1338,7 +1554,7 @@
 	u_int8_t		iv_dual_cts_required;	/* HT dual CTS protection is required */
 	u_int8_t		iv_lsig_txop_ok;	/* is lsig in TXOP ok */
 	u_int8_t		iv_stbc_beacon;		/* is current beacon a stbc beacon */
-	u_int16_t		iv_smps_force;          /* The overridden value for SMPS for the STA. */
+	u_int16_t		iv_smps_force;		/* The overridden value for SMPS for the STA. */
 	u_int8_t		iv_implicit_ba;		/* Implicit block ack flags for the VAP. */
 	u_int16_t		iv_ba_control;		/* Block ack control - zero indicates accept no BAs,
 							   bit in position 'n' indicates accept and send BA for the given TID */
@@ -1347,8 +1563,12 @@
 	u_int16_t		iv_max_ba_win_size;	/* Maximum window size allowable */
 	u_int32_t		iv_rate_training_count; /* Rate training to new STAs - number of bursts */
 	u_int32_t		iv_rate_training_burst_count; /* Rate training to new STAs - packets per burst */
-	u_int8_t		iv_mc_legacy_rate;      /* Multicast legacy rates */
-	u_int8_t		iv_forward_unknown_mc;  /* Forward packets even if we have no bridge entry for them */
+	u_int8_t		iv_mc_legacy_rate;	/* Multicast legacy rates */
+	u_int8_t		iv_forward_unknown_mc;	/* Forward packets even if we have no bridge entry for them */
+	u_int8_t		iv_mc_to_uc;		/* Forward mcast/bcast as unicast */
+#define	IEEE80211_QTN_MC_TO_UC_LEGACY	0
+#define	IEEE80211_QTN_MC_TO_UC_NEVER	1
+#define	IEEE80211_QTN_MC_TO_UC_ALWAYS	2		/* For WFA testing only */
 	u_int8_t		iv_reliable_bcst;
 	u_int8_t		iv_ap_fwd_lncb;
 #if defined(CONFIG_QTN_80211K_SUPPORT)
@@ -1360,10 +1580,8 @@
 
 	struct timer_list	iv_test_traffic;	/* timer to start xr */
 	u_int32_t		iv_test_traffic_period;		/* Interval of periodically sending NULL packet to all associated STAs. 0 means disable */
-#ifdef TOPAZ_PLATFORM
 	uint32_t iv_11ac_enabled;	/* Enable/disable 11AC feature on Topaz */
 	uint8_t	iv_pri;			/* vap priority, used to calculate priority for per node per tid queue */
-#endif
 	uint8_t iv_pmf;                 /* VAP PMF/802.11w capability options */
 	u_int8_t		iv_local_max_txpow;	/* local max transmit power, equal to regulatory max power minus power constraint */
 	u_int16_t iv_disassoc_reason;
@@ -1380,9 +1598,28 @@
 	uint8_t			hs20_enable;		/* Enable/Disable HS2.0 */
 	uint8_t			disable_dgaf;		/* Disable Downstream Group-Addressed Forwarding - used by HS2.0 */
 	uint8_t			proxy_arp;		/* 1 - Enabled,  0- Disabled */
+	uint8_t			iv_coex;
+	uint8_t			allow_tkip_for_vht;	/* 1 - TKIP is allowed, 0 - TKIP is not allowed */
+	uint8_t			is_block_all_assoc;	/* 1 - block, 0 - unblock */
+	uint8_t			tx_ba_disable;		/* 1 - TXBA disable, 0 - TXBA permitted */
+	uint8_t			rx_ba_decline;		/* 1 - RXBA decline, 0 - RXBA permitted */
+	uint8_t			iv_vap_state;		/* 1 - enabled, 0 - disabled */
+	uint8_t			iv_osen;		/* 1/0 - OSEN enabled/disabled */
+
+	uint8_t			sample_sta_count;
+	spinlock_t		sample_sta_lock;
+	struct list_head	sample_sta_list;
+	struct bcast_pps_info	bcast_pps;
 };
 MALLOC_DECLARE(M_80211_VAP);
 
+#define IEEE80211_BAND_IDX_MAX	7
+struct ieee80211_band_info {
+	uint8_t		band_chan_step;			/* step to next channel */
+	uint8_t		band_first_chan;		/* first channel in the band */
+	int16_t		band_chan_cnt;			/* channels in the band */
+};
+
 /*
  * Note: A node table lock must be acquired or IRQ disabled to maintain atomic
  * when calling this function, and must not be released until a node ref is taken
@@ -1472,7 +1709,7 @@
 #define IEEE80211_FEXT_SWBMISS 0x00000400	/* CONF: use software beacon timer */
 #define IEEE80211_FEXT_DROPUNENC_EAPOL 0x00000800      /* CONF: drop unencrypted eapol frames */
 #define IEEE80211_FEXT_APPIE_UPDATE 0x00001000	/* STATE: beacon APP IE updated */
-#define IEEE80211_FEXT_FAST_CC		0x00002000	/* CONF: Fast channel change */
+#define IEEE80211_FEXT_11N_PROTECT	0x00002000	/* Enable 11n protection */
 #define IEEE80211_FEXT_AMPDU		0x00004000	/* CONF: A-MPDU supported */
 #define IEEE80211_FEXT_AMSDU		0x00008000	/* CONF: A-MSDU supported */
 #define IEEE80211_FEXT_USEHT20		0x00010000	/* use HT20 channel in 20/40 mode*/
@@ -1490,6 +1727,8 @@
 #define	IEEE80211_FEXT_AP_TDLS_PROHIB	0x08000000	/* AP prohibit TDLS function */
 #define IEEE80211_FEXT_SPECIFIC_SCAN	0x10000000	/* Just perform specific SSID scan */
 #define IEEE80211_FEXT_SCAN_40		0x20000000	/* Temporarily use 40MHz channel when changing channel */
+#define IEEE80211_FEXT_24GVHT		0x40000000	/* VHT support(256-QAM) on 2.4G band  */
+#define IEEE80211_FEXT_BG_PROTECT	0x80000000	/* 802.11bg protect */
 
 #define IEEE80211_FEXT_TDLS_DISABLED	(IEEE80211_FEXT_AP_TDLS_PROHIB | IEEE80211_FEXT_TDLS_PROHIB)
 
@@ -1499,7 +1738,18 @@
 #define IEEE80211_QTN_PRINT_CH_INUSE	0x00000004	/* Enable printing of channels in Use. */
 #define IEEE80211_QTN_BGSCAN		0x00000008	/* Quantenna background scanning */
 #define IEEE80211_QTN_MONITOR		0x00000010	/* Quantenna sniffer mode */
+#define IEEE80211_QTN_BMPS		0x00000020	/* Quantenna STA BMPS (power-saving) mode */
+#define IEEE80211_QTN_SAMP_CHAN		0x00000040	/* Quantenna SCS sample channel */
 
+static inline int
+ieee80211_is_repeater(struct ieee80211com *ic)
+{
+
+	if (!(ic->ic_flags_ext & IEEE80211_FEXT_REPEATER))
+		return 0;
+
+	return 1;
+}
 
 #define IEEE80211_COM_UAPSD_ENABLE(_ic)		((_ic)->ic_flags_ext |= IEEE80211_FEXT_UAPSD)
 #define IEEE80211_COM_UAPSD_DISABLE(_ic)	((_ic)->ic_flags_ext &= ~IEEE80211_FEXT_UAPSD)
@@ -1512,6 +1762,9 @@
 #define IEEE80211_COM_WDS_IS_RBS(_ic)		((_ic)->ic_extender_role == IEEE80211_EXTENDER_ROLE_RBS)
 #define IEEE80211_COM_WDS_IS_MBS(_ic)		((_ic)->ic_extender_role == IEEE80211_EXTENDER_ROLE_MBS)
 
+#define IEEE80211_BG_PROTECT_ENABLED(_ic)	((_ic)->ic_flags_ext & IEEE80211_FEXT_BG_PROTECT)
+#define IEEE80211_11N_PROTECT_ENABLED(_ic)	((_ic)->ic_flags_ext & IEEE80211_FEXT_11N_PROTECT)
+
 #define IEEE80211_VAP_UAPSD_ENABLE(_v)	((_v)->iv_flags_ext |= IEEE80211_FEXT_UAPSD)
 #define IEEE80211_VAP_UAPSD_DISABLE(_v)	((_v)->iv_flags_ext &= ~IEEE80211_FEXT_UAPSD)
 #define IEEE80211_VAP_UAPSD_ENABLED(_v)	((_v)->iv_flags_ext & IEEE80211_FEXT_UAPSD)
@@ -1527,18 +1780,41 @@
 
 #define IEEE80211_VAP_WDS_ANY(_v)	((_v)->iv_opmode == IEEE80211_M_WDS)
 #define IEEE80211_VAP_WDS_IS_RBS(_v)	(((_v)->iv_opmode == IEEE80211_M_WDS) && \
-					(((_v)->iv_wds_flags & IEEE80211_QTN_WDS_MASK) == IEEE80211_QTN_WDS_RBS))
+					(((_v)->iv_extdr_flags & IEEE80211_QTN_WDS_MASK) == IEEE80211_QTN_WDS_RBS))
 #define IEEE80211_VAP_WDS_IS_MBS(_v)	(((_v)->iv_opmode == IEEE80211_M_WDS) && \
-					(((_v)->iv_wds_flags & IEEE80211_QTN_WDS_MASK) == IEEE80211_QTN_WDS_MBS))
+					(((_v)->iv_extdr_flags & IEEE80211_QTN_WDS_MASK) == IEEE80211_QTN_WDS_MBS))
 #define IEEE80211_VAP_WDS_BASIC(_v)   (((_v)->iv_opmode == IEEE80211_M_WDS) && \
-					(((_v)->iv_wds_flags & IEEE80211_QTN_WDS_MASK) == IEEE80211_QTN_WDS_ONLY))
+					(((_v)->iv_extdr_flags & IEEE80211_QTN_WDS_MASK) == IEEE80211_QTN_WDS_ONLY))
 
-#define	IEEE80211_VAP_WDS_SET_RBS(_v)	do {(_v)->iv_wds_flags &= ~IEEE80211_QTN_WDS_MASK; \
-					     (_v)->iv_wds_flags |= IEEE80211_QTN_WDS_RBS ;} while(0)
-#define	IEEE80211_VAP_WDS_SET_MBS(_v)	do {(_v)->iv_wds_flags &= ~IEEE80211_QTN_WDS_MASK; \
-					     (_v)->iv_wds_flags |= IEEE80211_QTN_WDS_MBS;} while(0)
-#define IEEE80211_VAP_WDS_SET_NONE(_v)	do {(_v)->iv_wds_flags &= ~IEEE80211_QTN_WDS_MASK; \
-					     (_v)->iv_wds_flags |= IEEE80211_QTN_WDS_ONLY;} while(0)
+static __inline__ uint16_t ieee80211_extdr_get_flags(uint32_t comb)
+{
+	return (comb & IEEE80211_QTN_EXTDR_ALLMASK);
+}
+
+static __inline__ uint16_t ieee80211_extdr_get_mask(uint32_t comb)
+{
+	return ((comb >> IEEE80211_QTN_EXTDR_MASK_SHIFT) & IEEE80211_QTN_EXTDR_ALLMASK);
+}
+
+static inline void
+ieee80211_vap_set_extdr_flags(struct ieee80211vap *vap, uint32_t etdr_comb)
+{
+	int flags;
+	int mask;
+
+	flags = ieee80211_extdr_get_flags(etdr_comb);
+	mask = ieee80211_extdr_get_mask(etdr_comb);
+
+	vap->iv_extdr_flags &= ~mask;
+	vap->iv_extdr_flags |= flags;
+}
+
+#define	IEEE80211_VAP_WDS_SET_RBS(_v)	do {(_v)->iv_extdr_flags &= ~IEEE80211_QTN_WDS_MASK; \
+					     (_v)->iv_extdr_flags |= IEEE80211_QTN_WDS_RBS ;} while(0)
+#define	IEEE80211_VAP_WDS_SET_MBS(_v)	do {(_v)->iv_extdr_flags &= ~IEEE80211_QTN_WDS_MASK; \
+					     (_v)->iv_extdr_flags |= IEEE80211_QTN_WDS_MBS;} while(0)
+#define IEEE80211_VAP_WDS_SET_NONE(_v)	do {(_v)->iv_extdr_flags &= ~IEEE80211_QTN_WDS_MASK; \
+					     (_v)->iv_extdr_flags |= IEEE80211_QTN_WDS_ONLY;} while(0)
 
 /* ic_caps */
 #define	IEEE80211_C_WEP		0x00000001	/* CAPABILITY: WEP available */
@@ -1635,8 +1911,6 @@
 int ieee80211_vap_attach(struct ieee80211vap *, ifm_change_cb_t, ifm_stat_cb_t);
 void ieee80211_vap_detach(struct ieee80211vap *);
 void ieee80211_vap_detach_late(struct ieee80211vap *);
-void ieee80211_mark_dfs(struct ieee80211com *, struct ieee80211_channel *);
-void ieee80211_dfs_test_return(struct ieee80211com *, u_int8_t);
 void ieee80211_announce(struct ieee80211com *);
 void ieee80211_announce_channels(struct ieee80211com *);
 int ieee80211_media_change(void *);
@@ -1645,7 +1919,7 @@
 int ieee80211_media2rate(int);
 int ieee80211_mcs2media(struct ieee80211com*, int, enum ieee80211_phymode);
 int ieee80211_media2mcs(int);
-int ieee80211_mcs2rate(int mcs, int mode, int sgi);
+int ieee80211_mcs2rate(int mcs, int mode, int sgi, int vht);
 int ieee80211_rate2mcs(int rate, int mode, int sgi);
 u_int ieee80211_get_chanflags(enum ieee80211_phymode mode);
 u_int ieee80211_mhz2ieee(u_int, u_int);
@@ -1658,6 +1932,8 @@
 int ieee80211_country_string_to_countryid( const char *input_str, u_int16_t *p_iso_code );
 int ieee80211_countryid_to_country_string( const u_int16_t iso_code, char *output_str );
 int ieee80211_region_to_operating_class(struct ieee80211com *ic, char *region_str);
+void ieee80211_get_prichan_list_by_operating_class(struct ieee80211com *ic, int bw,
+			uint8_t *chan_list, uint32_t flag);
 int ieee80211_get_current_operating_class(uint16_t iso_code, int chan, int bw);
 void ieee80211_build_countryie(struct ieee80211com *);
 int ieee80211_media_setup(struct ieee80211com *, struct ifmedia *, u_int32_t,
@@ -1693,28 +1969,46 @@
 void ieee80211_scs_show_ranking_stats(struct ieee80211com *ic, int show_input, int show_result);
 void ieee80211_show_initial_ranking_stats(struct ieee80211com *ic);
 void ieee80211_scs_update_ranking_table_by_scan(struct ieee80211com *ic);
+int ieee80211_dual_sec_chan_supported(struct ieee80211vap *vap, int chan);
+void ieee80211_update_sec_chan_offset(struct ieee80211_channel *chan, int offset);
 int ieee80211_get_bw(struct ieee80211com *ic);
+int ieee80211_get_cap_bw(struct ieee80211com *ic);
+int ieee80211_get_max_ap_bw(const struct ieee80211_scan_entry *se);
+int ieee80211_get_max_node_bw(struct ieee80211_node *ni);
+int ieee80211_get_max_system_bw(struct ieee80211com *ic);
+int ieee80211_get_max_channel_bw(struct ieee80211com *ic, int channel);
+int ieee80211_get_max_bw(struct ieee80211vap *vap, struct ieee80211_node *ni, uint32_t chan);
 int ieee80211_get_mu_grp(struct ieee80211com *ic,
 	struct qtn_mu_grp_args *mu_grp_tbl);
 int ieee80211_find_sec_chan(struct ieee80211_channel *chan);
 int ieee80211_find_sec40u_chan(struct ieee80211_channel *chan);
 int ieee80211_find_sec40l_chan(struct ieee80211_channel *chan);
+int ieee80211_find_sec_chan_by_operating_class(struct ieee80211com *ic, int chan, uint32_t preference);
 
 int ieee80211_rst_dev_stats(struct ieee80211vap *vap);
 
 int ieee80211_swfeat_is_supported(uint16_t feat, uint8_t print_msg);
 
+void ieee80211_finish_csa(unsigned long arg);
 int ieee80211_enter_csa(struct ieee80211com *ic, struct ieee80211_channel *chan,
 		void (*finish_csa)(unsigned long arg), uint8_t reason,
 		uint8_t csa_count, uint8_t csa_mode, uint32_t flag);
-void ieee80211_finish_csa(unsigned long arg);
-
-int ieee80211_scs_pick_channel(struct ieee80211com *ic, int pick_flags);
+void ieee80211_obss_scan_timer(unsigned long arg);
+void ieee80211_start_obss_scan_timer(struct ieee80211vap *vap);
+int ieee80211_scs_pick_channel(struct ieee80211com *ic, int pick_flags, uint32_t cc_flag);
 void ieee80211_parse_cipher_key(struct ieee80211vap *vap, void *ie, uint16_t len);
 
 int ieee80211_vap_wds_mode_change(struct ieee80211vap *vap);
 char *ieee80211_wireless_get_hw_desc(void);
+struct ieee80211_channel *ieee80211_find_channel_by_ieee(struct ieee80211com *ic, int chan_ieee);
+void ieee80211_add_sec_chan_off(u_int8_t **frm, struct ieee80211com *ic, u_int8_t csa_chan);
+uint8_t ieee80211_wband_chanswitch_ie_len(uint32_t bw);
+uint8_t ieee80211_sec_chan_off_ie_len(void);
 
+void ieee80211_find_ht_pri_sec_chan(struct ieee80211vap *vap,
+		struct ieee80211_scan_entry *se, uint8_t *pri_chan, uint8_t *sec_chan);
+int ieee80211_20_40_operation_permitted(struct ieee80211vap *vap,
+				uint8_t se_pri_chan, uint8_t se_sec_chan);
 /*
  * Key update synchronization methods.  XXX should not be visible.
  */
@@ -1808,6 +2102,7 @@
 #define	IEEE80211_MSG_VSP	0x00000008	/* VSP */
 #define IEEE80211_MSG_VHT	0x00000004	/* 11ac mode debug-VHT*/
 #define	IEEE80211_MSG_TDLS	0x00000002	/* TDLS */
+#define	IEEE80211_MSG_EXTDR	0x00000001	/* Extender: QHOP or Repeater */
 
 #define	IEEE80211_MSG_ANY	0xffffffff	/* anything */
 
@@ -1905,9 +2200,19 @@
 #ifdef CONFIG_QHOP
 /* Some prototypes QHOP implementation */
 extern int  ieee80211_scs_is_wds_rbs_node(struct ieee80211com *ic);
-extern void ieee80211_qhop_send_csa(struct ieee80211vap *vap, uint8_t new_chan);
+extern void ieee80211_dfs_send_csa(struct ieee80211vap *vap, uint8_t new_chan);
 #endif
 
+struct ieee80211_band_info *ieee80211_get_band_info(int band_idx);
+
+#if defined(QBMPS_ENABLE)
+extern int ieee80211_wireless_set_sta_bmps(struct ieee80211vap *vap, struct ieee80211com *ic, int value);
+extern int ieee80211_sta_bmps_update(struct ieee80211vap *vap);
+#endif
+
+extern int ieee80211_is_idle_state(struct ieee80211com *ic);
+extern int ieee80211_is_on_weather_channel(struct ieee80211com *ic, struct ieee80211_channel *chan);
+
 extern uint8_t g_l2_ext_filter;
 extern uint8_t g_l2_ext_filter_port;
 #endif /* _NET80211_IEEE80211_VAR_H_ */
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
index 3d870fd..fab522c 100644
--- a/include/linux/if_vlan.h
+++ b/include/linux/if_vlan.h
@@ -126,7 +126,7 @@
 extern gro_result_t
 vlan_gro_frags(struct napi_struct *napi, struct vlan_group *grp,
 	       unsigned int vlan_tci);
-
+extern int vlan_check_vlan_exist(struct net_device *dev, u16 vlan_id);
 #else
 static inline struct net_device *vlan_dev_real_dev(const struct net_device *dev)
 {
@@ -165,6 +165,12 @@
 {
 	return GRO_DROP;
 }
+
+static inline int
+vlan_check_vlan_exist(struct net_device *dev, u16 vlan_id)
+{
+	return 0;
+}
 #endif
 
 /**
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 987e111..12b2516 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -231,7 +231,8 @@
 	PHY_FORCING,
 	PHY_CHANGELINK,
 	PHY_HALTED,
-	PHY_RESUMING
+	PHY_RESUMING,
+	PHY_QTNPM
 };
 
 /* phy_device: An instance of a PHY
diff --git a/include/linux/pm_qos_params.h b/include/linux/pm_qos_params.h
index a317e8a..312c27f 100644
--- a/include/linux/pm_qos_params.h
+++ b/include/linux/pm_qos_params.h
@@ -11,8 +11,9 @@
 #define PM_QOS_NETWORK_LATENCY 2
 #define PM_QOS_NETWORK_THROUGHPUT 3
 #define PM_QOS_POWER_SAVE 4
+#define PM_QOS_POWER_EMAC 5
 
-#define PM_QOS_NUM_CLASSES 5
+#define PM_QOS_NUM_CLASSES 6
 #define PM_QOS_DEFAULT_VALUE -1
 
 struct pm_qos_request_list;
@@ -31,3 +32,5 @@
 int pm_qos_requirement(int pm_qos_class);
 int pm_qos_add_requirement(int pm_qos_class, const char *name, s32 value);
 int pm_qos_update_requirement(int pm_qos_class, const char *name, s32 new_value);
+
+void pm_qos_refresh_notifiers(const int pm_qos_class);
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index b15399f..358588c 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -394,6 +394,9 @@
 	__u8			is_recyclable:1,
 				cache_is_cleaned:1,
 				hbm_no_free:1;
+
+	__u8			ext_l2_filter:1;
+
 	kmemcheck_bitfield_end(flags1);
 	__be16			protocol;
 
diff --git a/include/linux/watch64.h b/include/linux/watch64.h
index fc63f8c..42ec9a4 100644
--- a/include/linux/watch64.h
+++ b/include/linux/watch64.h
@@ -65,6 +65,9 @@
 inline struct watch64* __watch64_find(unsigned long* ptr);
 int watch64_disable(unsigned long* ptr, struct watch64* st);
 inline int __watch64_disable(unsigned long* ptr, struct watch64* st);
+inline int __watch64_write(unsigned long* ptr, struct watch64* st, int enable_flag);
+int watch64_reset(unsigned long* ptr, struct watch64* st);
+inline int __watch64_reset(unsigned long* ptr, struct watch64* st);
 int watch64_enable(unsigned long* ptr, struct watch64* st);
 inline int __watch64_enable(unsigned long* ptr, struct watch64* st);
 int watch64_toggle(unsigned long* ptr, struct watch64* st);
diff --git a/include/qtn/auc_debug_stats.h b/include/qtn/auc_debug_stats.h
index 3bc1d3c..7323ddc 100755
--- a/include/qtn/auc_debug_stats.h
+++ b/include/qtn/auc_debug_stats.h
@@ -17,53 +17,25 @@
 {
 	/* pktlogger expects task_alive_counters to be the first member of this struct */
 	uint32_t task_alive_counters[AUC_TID_NUM];
-	uint32_t task_reschedule[AUC_TID_NUM];
 	uint32_t task_false_trigger[AUC_TID_NUM];
 	uint32_t tqew_ac[4];
 	uint32_t tqew_ac_avail[4];
-	uint32_t tqew_tac_pri_preempt;
-	uint32_t tqew_tac_pri_mercy;
-	uint32_t tqew_airfair_state;
-	uint32_t tqew_air_qos;
-	uint32_t tqew_air_fairness;
-	uint32_t tqew_air_swap;
 	uint32_t tqew_air_humble;
 	uint32_t tqew_air_suppress;
 	uint32_t tqew_air_use_idletime;
 	uint32_t tqew_air_dequeue_only;
-	uint32_t tqew_fsm_no_resource;
 	uint32_t tqew_pkt_pending_for_txdone;
 	uint32_t tqew_descr_alloc_fail;
 	uint32_t tqew_ring_alloc_fail;
 	uint32_t tqew_pop_alloc_fail;
 	uint32_t tqew_pop_sw_limit;
 	uint32_t tqew_pop_empty;
-	uint32_t tqew_pop_global_buf_limit;
 	uint32_t tqew_available_set;
 	uint32_t tqew_available_reset;
 	uint32_t tqew_rx;
 	uint32_t tqew_drop;
 	uint32_t tqew_free;
 	uint32_t tqew_buf_invalid;
-	uint32_t wmac_rx_delba;
-	uint32_t wmac_rx_bb_underflow;
-	uint32_t wmac_rx_bb_overflow;
-	uint32_t wmac_rx_ipc_clean;
-	uint32_t wmac_rx_ipc_replenish;
-	uint32_t wmac_rx_ipc_sreset_recover;
-	uint32_t wmac_rx_prepare;
-	uint32_t wmac_rx_reschedule;
-	uint32_t wmac_rx_hbm_tail_overrun;
-	uint32_t wmac_rxq_intr[AUC_FW_WMAC_RX_QNUM];
-	uint32_t wmac_rxq_fill[AUC_FW_WMAC_RX_QNUM];
-	uint32_t wmac_rxq_nobuf[AUC_FW_WMAC_RX_QNUM];
-	uint32_t wmac_rxq_stop[AUC_FW_WMAC_RX_QNUM];
-	uint32_t wmac_rxq_pkt[AUC_FW_WMAC_RX_QNUM];
-	uint32_t wmac_rxq_bad_status[AUC_FW_WMAC_RX_QNUM];
-	uint32_t wmac_rxq_pkt_oversize[AUC_FW_WMAC_RX_QNUM];
-	uint32_t wmac_rxq_pkt_delivered[AUC_FW_WMAC_RX_QNUM];
-	uint32_t wmac_rx_data_last_seqfrag;
-	uint32_t wmac_rx_data_last_ip_id;
 	uint32_t wmac_tx_done[4];
 	uint32_t agg_aggregate_flag;
 	uint32_t agg_aggressive_agg;
@@ -138,6 +110,7 @@
 	uint32_t tx_mac_push;
 	uint32_t tx_mac_idle;
 	uint32_t tx_mac_rts;
+	uint32_t tx_mac_cts2self;
 	uint32_t tx_vlan_drop;
 	uint32_t tx_acm_drop;
 	uint32_t tx_ps_drop;
@@ -184,6 +157,7 @@
 	uint32_t mu_bar_bitmap_zero;
 	uint32_t mu_mac_wmac1_ipc_push;
 	uint32_t mu_mac_wmac1_auc_push;
+	uint32_t mu_wmac1_resets;
 
 	uint32_t mu_tx_swretry_agg_exceed;
 
@@ -207,10 +181,6 @@
 	uint32_t mu_tx_wmac_0_done_succ;
 	uint32_t mu_tx_wmac_0_done_fail;
 
-	uint32_t mu_tx_wmac_1_done_count;
-	uint32_t mu_tx_wmac_1_bitmap_non_zero;
-	uint32_t mu_tx_wmac_1_bitmap_zero;
-	uint32_t mu_tx_wmac_1_done_timeout;
 	uint32_t mu_tx_wmac_1_done_succ;
 	uint32_t mu_tx_wmac_1_done_fail;
 
diff --git a/include/qtn/dmautil.h b/include/qtn/dmautil.h
index d9692cc..26cceba 100644
--- a/include/qtn/dmautil.h
+++ b/include/qtn/dmautil.h
@@ -66,7 +66,7 @@
 }
 __always_inline static unsigned long align_buf_dma_offset(void *addr)
 {
-	return (align_buf_dma(addr) - addr);
+	return ((char *)align_buf_dma(addr) - (char *)addr);
 }
 __always_inline static void* align_buf_cache(void *addr)
 {
@@ -74,7 +74,7 @@
 }
 __always_inline static unsigned long align_buf_cache_offset(void *addr)
 {
-	return (addr - align_buf_cache(addr));
+	return ((char *)addr - (char *)align_buf_cache(addr));
 }
 __always_inline static unsigned long align_buf_cache_size(void *addr, unsigned long size)
 {
diff --git a/include/qtn/hardware_revision.h b/include/qtn/hardware_revision.h
index 66ceba5..d754fbd 100644
--- a/include/qtn/hardware_revision.h
+++ b/include/qtn/hardware_revision.h
@@ -37,6 +37,38 @@
 	}
 }
 
+#ifdef __KERNEL__
+RUBY_INLINE int _read_hardware_revision(void)
+{
+	int ret = HARDWARE_REVISION_UNKNOWN;
+	uint32_t board_rev = readl(RUBY_SYS_CTL_CSR);
+
+	if ((board_rev & CHIP_ID_MASK) == CHIP_ID_RUBY) {
+		uint32_t spare1 = readl(RUBY_QT3_BB_TD_SPARE_1);
+		if ((spare1 & CHIP_REV_ID_MASK)  == REV_ID_RUBY_A) {
+			ret = HARDWARE_REVISION_RUBY_A;
+		} else if ((spare1 & CHIP_REV_ID_MASK) == REV_ID_RUBY_B) {
+			ret = HARDWARE_REVISION_RUBY_B;
+		} else if ((spare1 & CHIP_REV_ID_MASK) == REV_ID_RUBY_D){
+			ret = HARDWARE_REVISION_RUBY_D;
+		}
+	} else if ((board_rev & CHIP_ID_MASK) == CHIP_ID_TOPAZ) {
+		switch (board_rev & CHIP_REV_ID_MASK) {
+			case REV_ID_TOPAZ_A:
+				ret = HARDWARE_REVISION_TOPAZ_A;
+				break;
+			case REV_ID_TOPAZ_B:
+				ret = HARDWARE_REVISION_TOPAZ_B;
+				break;
+			case REV_ID_TOPAZ_A2:
+				ret = HARDWARE_REVISION_TOPAZ_A2;
+				break;
+		}
+	}
+	return ret;
+}
+#endif //__KERNEL__
+
 #endif	// __ASSEMBLY__
 #endif	// __RUBY_VERSION_H
 
diff --git a/include/qtn/iputil.h b/include/qtn/iputil.h
index 041d18f..39ff354 100644
--- a/include/qtn/iputil.h
+++ b/include/qtn/iputil.h
@@ -60,7 +60,7 @@
 
 #define IPUTIL_V4_ADDR_SSDP		htonl(0xEFFFFFFA) /* 239.255.255.250 */
 #define IPUTIL_V4_ADDR_MULTICAST(_addr)	\
-	((_addr & htonl(0xFF000000)) == htonl(0xE0000000)) /* 224.0.0.0/4 */
+	((_addr & htonl(0xF0000000)) == htonl(0xE0000000)) /* 224.0.0.0/4 */
 #define IPUTIL_V6_ADDR_MULTICAST(_addr)	\
 	((_addr & htonl(0xFF000000)) == htonl(0xFF000000)) /* ff00::/8 - see __ipv6_addr_type() */
 #define IPUTIL_V4_ADDR_LNCB(_addr)	\
@@ -311,7 +311,7 @@
 }
 
 /* Multicast data traffic, with the most common types of non-streaming mc filtered out */
-static inline int iputil_is_mc_data(struct ether_header *eh, void *iph)
+static inline int iputil_is_mc_data(const struct ether_header *eh, void *iph)
 {
 	return iputil_eth_is_multicast(eh) &&
 		!iputil_is_lncb(eh->ether_dhost, iph) &&
diff --git a/include/qtn/lhost_muc_comm.h b/include/qtn/lhost_muc_comm.h
index 2c1a6ff..1c147f6 100644
--- a/include/qtn/lhost_muc_comm.h
+++ b/include/qtn/lhost_muc_comm.h
@@ -155,6 +155,7 @@
 #define IEEE80211_LOWGAIN_TXPOW_MIN	9
 
 #define IEEE80211_CHAN_SEC_SHIFT	4
+#define IEEE80211_24G_CHAN_SEC_SHIFT	1
 
 struct host_ioctl_hifinfo {
 	uint32_t	hi_mboxstart;			/* Start address for mbox */
@@ -306,7 +307,6 @@
 #define IOCTL_DEV_VSP			42	/* Configure QVSP */
 #define IOCTL_DEV_SET_11G_ERP           43      /* set 11bg ERP on/off */
 #define IOCTL_DEV_BGSCAN_CHANNEL	44
-#define IOCTL_DEV_UPDATE_DTLS_PRESENT   45      /* update wheather DTLS session deteced or not */
 #define IOCTL_DEV_SET_OCAC		46
 #define IOCTL_DEV_MEAS_CHANNEL		47	/* notify MUC to execute measurement */
 #define IOCTL_DEV_GET_LINK_MARGIN_INFO	48	/* get rssi info */
@@ -322,12 +322,17 @@
 #define IOCTL_DEV_GET_PRECODE_ENABLE	58	/* get MU precode enable flag */
 #define IOCTL_DEV_GET_MU_USE_EQ		59	/* get EQ enable flag */
 #define IOCTL_DEV_SET_CHAN_POWER_TABLE	60	/* Set MuC power table */
+#define	IOCTL_DEV_ENABLE_VLAN		61	/* Set Global Vlan mode */
+#define	IOCTL_DEV_NODE_UPDATE		62	/* Update node information again after association */
+#define IOCTL_DEV_AIRTIME_CONTROL       63      /* control node tx airtime accumulation start|stop */
+#define IOCTL_DEV_SUSPEND_OFF_CHANNEL   64      /* suspend/resume all off-channel mechanisms globally */
 
 #define IOCTL_DEV_CMD_MEMDBG_DUMP	1	/* Dump MuC memory */
 #define IOCTL_DEV_CMD_MEMDBG_DUMPCFG	2	/* Configuration for dumping MuC memory */
 #define IOCTL_DEV_CMD_MEMDBG_DUMPNODES	3	/* Configuration for dumping MuC nodes */
 #define IOCTL_DEV_CMD_SET_DRV_DBG	4	/* Set MUC debug message level*/
 #define IOCTL_DEV_CMD_GET_DRV_DBG	5	/* Get MUC debug message level*/
+#define IOCTL_DEV_CMD_RF_REG_DUMP	6	/* Dump Rfic6 write fegister */
 
 #define	IOCTL_DEVATTACH_DEVFLAG_MASK			0xFFFF0000
 #define	IOCTL_DEVATTACH_DEVFLAG_MASK_S			16
@@ -460,8 +465,7 @@
 	uint32_t meas_dur_ms;
 	union {
 		struct {
-			uint32_t cca_pri_cnt;
-			uint32_t cca_sec_cnt;
+			uint32_t cca_busy_cnt;
 			uint32_t cca_try_cnt;
 			uint32_t cca_try_ms;
 			uint32_t cca_busy_ms;
@@ -644,8 +648,13 @@
 #define QTN_SCAN_CHAN_MUC_PROBING		0x2
 #define QTN_SCAN_CHAN_MUC_COMPLETED		0x3
 #define QTN_SCAN_CHAN_MUC_FAILED		0x4
+#define QTN_SCAN_CHAN_MUC_SCHEDULED		0x5
 	uint32_t	muc_status;		/* written only by MuC */
-#define QTN_SCAN_CHAN_FLAG_ACTIVE		0x1
+#define QTN_SCAN_CHAN_FLAG_ACTIVE		0x00000001
+#define QTN_SCNA_CHAN_FLAG_PASSIVE_FAST		0x00000002
+#define QTN_SCNA_CHAN_FLAG_PASSIVE_NORMAL	0x00000004
+#define QTN_SCNA_CHAN_FLAG_PASSIVE_SLOW		0x00000008
+#define QTN_SCAN_CHAN_TURNOFF_RF		0x00000010
 	uint32_t	scan_flags;
 	uint32_t	start_txdesc_host;	/* The frame sent before go scan channel,
 						 * e.g. pwrsav frame in STA mode */
@@ -696,12 +705,43 @@
 	uint64_t		tsf_log[OCAC_TSF_LOG_NUM];	/* event tsf log, written by MuC */
 };
 
+enum bmps_state_e {
+	BMPS_STATE_OFF		= 0,		/* STA exits BMPS mode */
+	BMPS_STATE_WAKE		= 1,		/* in BMPS mode, and is fully powered on */
+						/* with PM set to 0 */
+	BMPS_STATE_SLEEP	= 2,		/* in BMPS mode, and is fully powered off */
+						/* with PM set to 1 */
+	BMPS_STATE_WAKE_TO_SLEEP	= 3,	/* in BMPS mode, and is transitting from */
+						/* power-on to power-off by sending Null frame */
+						/* with PM=1 to AP */
+	BMPS_STATE_LEAK_WINDOW	= 4,		/* in BMPS mode, and Null frame with PM=1 */
+						/* has been sent, TX path is paused, */
+						/* but RX patgh is still running to */
+						/* receive packets from leaky AP */
+	BMPS_STATE_SLEEP_TO_WAKE	= 5,	/* in BMPS mode, and is transitting from */
+						/* power-off to power-on by sending */
+						/* Null frame with PM=0 to AP */
+	BMPS_STATE_BEACON_SNOOP	= 6,		/* in BMPS mode, and RX chain is powered up */
+						/* to receive beacon */
+	BMPS_STATE_MAX		= BMPS_STATE_BEACON_SNOOP,
+};
+
+struct qtn_bmps_info {
+	uint32_t	null_txdesc_host;	/* null frame in virtual address */
+	uint32_t	null_txdesc_bus;	/* null frame in physical address */
+	uint16_t	null_frame_len;		/* the frame length of null */
+	uint16_t	tx_node_idx;		/* the node index that null frame to */
+	enum bmps_state_e	state;		/* shared BMPS status */
+};
+
 struct qtn_rf_rxgain_params
 {
-	uint8_t *gain_entry_tbl;
 	uint8_t lna_on_indx;
 	uint8_t max_gain_idx;
-	uint16_t cs_threshold_value;
+	int16_t cs_thresh_dbm;
+	int16_t cca_prim_dbm;
+	int16_t cca_sec_scs_off_dbm;
+	int16_t cca_sec_scs_on_dbm;
 };
 
 /* MuC fops requst */
@@ -754,6 +794,31 @@
 #endif
 #define FOPS_FD_UBOOT_ENV		12
 
+#ifdef TOPAZ_RFIC6_PLATFORM
+#define LHOST_CAL_FILES         {       \
+        NULL,                           \
+        "/proc/bootcfg/bf_factor",      \
+        "/tmp/txpower.txt",             \
+        "/proc/bootcfg/txpower.cal",    \
+        "/proc/bootcfg/dc_iq.cal",      \
+        "/mnt/jffs2/mon.out",           \
+        "/mnt/jffs2/gmon.out",          \
+        "/mnt/jffs2/pecount.out",       \
+        "/proc/bootcfg/pdetector.cal",  \
+        "/mnt/jffs2/profile_ep_muc",    \
+        "/mnt/jffs2/profile_dcache_muc",\
+        "/mnt/jffs2/profile_iptr_muc",  \
+        "/proc/bootcfg/env",            \
+        "/etc/mtest",           \
+        "/proc/bootcfg/rx_iq.cal", \
+				"/mnt/jffs2/profile_iptr_auc",	\
+				"/proc/bootcfg/bf_factor_2g",	\
+				"/tmp/txpower_2g.txt",		\
+				"/proc/bootcfg/dc_iq_2g.cal",	\
+				"/proc/bootcfg/pdetector_2g.cal",\
+				"/tmp/bond_opt.txt",	         \
+}
+#else
 #define LHOST_CAL_FILES		{	\
 	NULL,				\
 	"/proc/bootcfg/bf_factor",	\
@@ -768,10 +833,11 @@
 	"/mnt/jffs2/profile_dcache_muc",\
 	"/mnt/jffs2/profile_iptr_muc",	\
 	"/proc/bootcfg/env",		\
-	"/etc/mtest",			\
+  "/etc/mtest",           \
 	"/proc/bootcfg/rx_iq.cal",	\
 	"/mnt/jffs2/profile_iptr_auc",	\
 }
+#endif
 
 #define MUC_CAL_FILES		{	\
 	NULL,				\
diff --git a/include/qtn/mproc_sync.h b/include/qtn/mproc_sync.h
index 291bfaf..5f1f9ae 100644
--- a/include/qtn/mproc_sync.h
+++ b/include/qtn/mproc_sync.h
@@ -109,56 +109,68 @@
 #endif
 
 #define QTN_ALL_SOC_CPU	(QTN_LHOST_SOC_CPU | QTN_MUC_SOC_CPU | QTN_DSP_SOC_CPU)
+#define QTN_MULTI_PROCESS_TQE_SEMA		0xf
+#define QTN_MULTI_PROCESSOR_SEMA_KEY_SHIFT	28
 
+/*
+ * This multi-processor semaphore register supports up to 7 semaphores,
+ * which is implemented by dedicated flops, not memory. Reading them is as slow or even slower
+ * than reading SRAM.
+ * Currently, the first semaphore is used for TQE and the other 6 semaphores are unused.
+ * However enabling other semaphores could introduce more wait cycles to each other.
+ * The semaphore lock process are:
+ * 1. Try to lock with write CPUID | CPUID << 24 to semaphore register.
+ * 2. Return immediately if successfully lock with passing read verify, otherwise step 3.
+ * 3. Read semaphore and wait for free to lock, then step 1 or timeout with a failure.
+ */
 RUBY_INLINE int
-_qtn_mproc_3way_sem_down(enum topaz_mproc_tqe_sem_id cpuid)
+_qtn_mproc_3way_tqe_sem_down(enum topaz_mproc_tqe_sem_id cpuid)
 {
 	uint32_t	sem_get_cnt = 0;
-	uint32_t	multi_proc_tqe_sem_reg;
-	uint32_t	multi_proc_tqe_sem_val;
+	uint32_t	value;
 
+	value = ((cpuid << QTN_MULTI_PROCESSOR_SEMA_KEY_SHIFT) | cpuid);
 	do {
-		multi_proc_tqe_sem_reg = qtn_mproc_sync_mem_read(TOPAZ_MPROC_SEMA);
-	} while (multi_proc_tqe_sem_reg && (sem_get_cnt++ < TQE_SEMA_GET_MAX));
+		/*
+		 * The semaphore bits [3:0] can be set successfully only when it is unset or already
+		 * owned by current cpuid, otherwise the write has no effect.
+		 */
+		qtn_mproc_sync_mem_write(TOPAZ_MPROC_SEMA, value);
+		value = qtn_mproc_sync_mem_read(TOPAZ_MPROC_SEMA);
 
-	if (sem_get_cnt >= TQE_SEMA_GET_MAX) {
-		return 0;
-	} else {
-		multi_proc_tqe_sem_val = ((cpuid << 28) | cpuid);
-
-		do {
-			qtn_mproc_sync_mem_write(TOPAZ_MPROC_SEMA, multi_proc_tqe_sem_val);
-			multi_proc_tqe_sem_reg = qtn_mproc_sync_mem_read(TOPAZ_MPROC_SEMA);
-			multi_proc_tqe_sem_reg &= 0x0000000f;
-		} while ((multi_proc_tqe_sem_reg != cpuid) && (sem_get_cnt++ < TQE_SEMA_GET_MAX));
-
-		if (sem_get_cnt >= TQE_SEMA_GET_MAX) {
-			return 0;
-		} else {
+		if ((value & QTN_MULTI_PROCESS_TQE_SEMA) == cpuid)
 			return 1;
-		}
-	}
+		/*
+		 * Reading the semaphore returns a owner cpuid or zero in the field if is free.
+		 * Wait until no-one is holding the semaphore.
+		 */
+		do {
+			value = qtn_mproc_sync_mem_read(TOPAZ_MPROC_SEMA);
+			value &= QTN_MULTI_PROCESS_TQE_SEMA;
+		} while (value && (sem_get_cnt++ < TQE_SEMA_GET_MAX));
+
+	} while (sem_get_cnt++ < TQE_SEMA_GET_MAX);
+
+	return 0;
 }
 
+/*
+ * Returns 1 mean success.
+ * Returns 0 if the processor did not hold the semaphore.
+ */
 RUBY_INLINE int
-_qtn_mproc_3way_sem_up(enum topaz_mproc_tqe_sem_id cpuid)
+_qtn_mproc_3way_tqe_sem_up(enum topaz_mproc_tqe_sem_id cpuid)
 {
-	uint32_t	multi_proc_tqe_sem_reg;
-	uint32_t	multi_proc_tqe_sem_val;
+	uint32_t	value;
 
-	multi_proc_tqe_sem_reg = qtn_mproc_sync_mem_read(TOPAZ_MPROC_SEMA);
-	multi_proc_tqe_sem_reg &= 0x0000000f;
-	/* Anyway write current ID back to release HW semaphore */ 
-	multi_proc_tqe_sem_val = (multi_proc_tqe_sem_reg << 28) ;
-	qtn_mproc_sync_mem_write(TOPAZ_MPROC_SEMA, multi_proc_tqe_sem_val);
-
-	/* Return 1 mean success, Return 0 mean failure then pass to upper layer to do panic or halt */
-	if (multi_proc_tqe_sem_reg == cpuid) {
-		return 1;
-	} else {
+	value = qtn_mproc_sync_mem_read(TOPAZ_MPROC_SEMA);
+	value &= QTN_MULTI_PROCESS_TQE_SEMA;
+	if (value != cpuid)
 		return 0;
-	}
+	/* Write current ID back to release HW semaphore */
+	qtn_mproc_sync_mem_write(TOPAZ_MPROC_SEMA, value << QTN_MULTI_PROCESSOR_SEMA_KEY_SHIFT);
 
+	return 1;
 }
 
 RUBY_INLINE void
@@ -687,8 +699,6 @@
 #endif
 }
 
-#ifdef TOPAZ_PLATFORM
-
 RUBY_INLINE void
 qtn_mproc_sync_irq_trigger(u_int32_t irq_reg, u_int32_t irqno)
 {
@@ -713,73 +723,6 @@
 	return qtn_mproc_sync_irq_ack_nolock(irq_reg, mask);
 }
 
-#else
-
-RUBY_WEAK(qtn_mproc_sync_irq_trigger) void
-qtn_mproc_sync_irq_trigger(u_int32_t irq_reg, u_int32_t irqno)
-{
-	unsigned long flags;
-	u_int32_t irq = (1 << irqno);
-	volatile u_int32_t *fixup_data = qtn_mproc_sync_irq_fixup_data_trigger(irq_reg);
-
-	local_irq_save(flags);
-
-	if (unlikely(fixup_data && ((fixup_data[0] & irq) != (fixup_data[1] & irq)))) {
-		/*
-		 * According to workaround interrupt is triggered already.
-		 *
-		 * Side which triggers interrupt flips bit of its own variable.
-		 * Side which acknowledge interrupt flips bit of its own variable.
-		 * So if side which triggers see that bits are different - it means
-		 * interrupt is already triggered and not yet acknowledged (e.g. masked).
-		 * In this case no need to trigger interrupt again - it can
-		 * be masked and it is impossible to distinguish from just reading registers
-		 * whether interrupt is acknowledged already or just keeping masked (in this case
-		 * triggering would mean acknowledging, interrupt losing).
-		 */
-	} else if (unlikely(qtn_mproc_sync_mem_read(irq_reg) & irq)) {
-		/* According to register state interrupt is triggered already */
-	} else {
-		qtn_mproc_sync_mem_write_wmb(irq_reg, irq);
-		if (likely(fixup_data != 0)) {
-			/* Record that interrupt triggered */
-			fixup_data[0] ^= irq;
-		}
-	}
-
-	local_irq_restore(flags);
-}
-
-RUBY_WEAK(qtn_mproc_sync_irq_ack_nolock) u_int32_t
-qtn_mproc_sync_irq_ack_nolock(u_int32_t irq_reg, u_int32_t mask)
-{
-	u_int32_t ret = qtn_mproc_sync_mem_read(irq_reg) & mask;
-	if (likely(ret)) {
-		volatile u_int32_t *fixup_data = qtn_mproc_sync_irq_fixup_data_ack(irq_reg);
-		qtn_mproc_sync_mem_write_wmb(irq_reg, ret);
-		if (likely(fixup_data != RUBY_BAD_VIRT_ADDR)) {
-			/* Record that interrupt acknowledged */
-			fixup_data[1] ^= ret;
-		}
-	}
-	return ret;
-}
-
-RUBY_INLINE u_int32_t
-qtn_mproc_sync_irq_ack(u_int32_t irq_reg, u_int32_t mask)
-{
-	unsigned long flags;
-	u_int32_t ret;
-
-	local_irq_save(flags);
-	ret = qtn_mproc_sync_irq_ack_nolock(irq_reg, mask);
-	local_irq_restore(flags);
-
-	return ret;
-}
-
-#endif // #ifdef TOPAZ_PLATFORM
-
 RUBY_INLINE u_int32_t
 qtn_mproc_sync_irq_ack_all(u_int32_t irq_reg)
 {
diff --git a/include/qtn/mproc_sync_base.h b/include/qtn/mproc_sync_base.h
index e194b78..3c5a5c9 100644
--- a/include/qtn/mproc_sync_base.h
+++ b/include/qtn/mproc_sync_base.h
@@ -65,9 +65,11 @@
 	extern int auc_os_printf(const char *fmt, ...);
 	auc_os_printf("AuC: %s\n", msg);
 #elif defined(ARCSHELL)
-#else
+#elif defined(__KERNEL__) && !defined(UBOOT_BUILD)
 	/* Linux target */
 	printk(KERN_INFO"LHOST: %s : %s : %s\n", KBUILD_MODNAME, KBUILD_BASENAME, msg);
+#else
+	printf("LHOST: %s\n", msg);
 #endif // #if defined(MUC_BUILD)
 }
 
diff --git a/include/qtn/muc_phy_stats.h b/include/qtn/muc_phy_stats.h
index eb2d203..396a796 100644
--- a/include/qtn/muc_phy_stats.h
+++ b/include/qtn/muc_phy_stats.h
@@ -20,7 +20,7 @@
 /**
  * \defgroup PHYSTATS PHY generated statistics
  */
-/* @{ */
+/** @{ */
 
 #define QTN_STATS_MCS_SGI	0x40000000
 #define QTN_STATS_MCS_BW40	0x80000000
@@ -70,6 +70,8 @@
 	uint32_t pkts_per_sec;
 	uint32_t avg_tx_phy_rate;
 	uint32_t acks;
+	uint32_t tx_airtime;
+	uint32_t tx_accum_airtime;
 };
 
 struct qtn_node_shared_stats_rx {
@@ -110,7 +112,11 @@
 	struct qtn_node_shared_stats_tx tx[STATS_MAX];
 	struct qtn_node_shared_stats_rx rx[STATS_MAX];
 	uint64_t beacon_tbtt;
+	uint64_t beacon_tbtt_jiffies;
+	uint64_t last_rx_jiffies;
 	uint64_t dtim_tbtt;
+	uint32_t tim_set;
+	uint32_t dtim_set;
 	uint16_t beacon_interval;
 	TAILQ_ENTRY(qtn_node_shared_stats) next;
 };
@@ -269,7 +275,7 @@
 	u_int32_t rate;		/* this field must be last for stat_parser.pl */
 };
 
-/* @} */
+/** @} */
 
 struct qtn_stats {
 	u_int32_t tstamp;
diff --git a/include/qtn/muc_share_def.h b/include/qtn/muc_share_def.h
index a9a5e97..2b4c64d 100755
--- a/include/qtn/muc_share_def.h
+++ b/include/qtn/muc_share_def.h
@@ -11,9 +11,9 @@
 #define QTN_FW_WMAC_RX_Q_CTRL		1
 #define QTN_FW_WMAC_RX_Q_DATA		2
 #define QTN_FW_WMAC_RX_QNUM		3
-#define QTN_FW_WMAC_RX_QDEEP_MGMT	8
-#define QTN_FW_WMAC_RX_QDEEP_CTRL	8
-#define QTN_FW_WMAC_RX_QDEEP_DATA	280
+#define QTN_FW_WMAC_RX_QDEEP_MGMT	9
+#define QTN_FW_WMAC_RX_QDEEP_CTRL	9
+#define QTN_FW_WMAC_RX_QDEEP_DATA	394
 #define QTN_FW_WMAC_RX_DESC_NUM	(QTN_FW_WMAC_RX_QDEEP_MGMT + \
 	QTN_FW_WMAC_RX_QDEEP_CTRL + QTN_FW_WMAC_RX_QDEEP_DATA)
 
diff --git a/include/qtn/muc_txrx_stats.h b/include/qtn/muc_txrx_stats.h
index 85de25c..e103114 100644
--- a/include/qtn/muc_txrx_stats.h
+++ b/include/qtn/muc_txrx_stats.h
@@ -27,7 +27,7 @@
 /**
  * \defgroup MUCSTATS MuC generated statistics
  */
-/* @{ */
+/** @{ */
 
 /**
  * \brief MuC transmit statistics
@@ -175,6 +175,8 @@
 	u_int32_t	txdone_mgmt;
 	u_int32_t	txdone_data;
 	u_int32_t	tx_pwr;
+	u_int32_t	bcn_scheme_power_save;
+	u_int32_t	bcn_scheme;
 
 	/**
 	 * This counter shows the number of multicast frames sent while a
@@ -236,27 +238,20 @@
 	uint32_t	off_chan_sample;
 	uint32_t	off_chan_scan;
 	uint32_t	off_chan_cac;
+	uint32_t	cca_pri;
+	uint32_t	cca_sec;
+	uint32_t	cca_sec40;
+	uint32_t	cca_busy;
 	uint32_t	cca_fat;
 	uint32_t	cca_intf;
 	uint32_t	cca_trfc;
 	/**
 	 * These counter show the information of MU frames.
 	 */
-	uint32_t	mu_qtn_hardstart;
-	uint32_t	mu_no_buddy;
-	uint32_t	mu_buddy_mgmt;
-	uint32_t	mu_buddy_mismatch;
-	uint32_t	mu_push_to_hw;
-	uint32_t	mu_to_su_hw;
-	uint32_t	mu_txdone_buddy;
-	uint32_t	mu_no_bar;
-	uint32_t	mu_bar_acquire;
-	uint32_t	mu_bar_release;
-	uint32_t	mu_wmac0_retry;
-	uint32_t	mu_wmac1_retry;
-	uint32_t	mu_reservetx_fail;
 	uint32_t	mu_prec_snd_tx;
+	uint32_t	mu_prec_snd_wait_done;
 	uint32_t	mu_grp_sel_snd_tx;
+	uint32_t	mu_grp_sel_snd_wait_done;
 
 	uint32_t	oc_auctx_timeout;
 	uint32_t	oc_auctx_overwrite;
@@ -295,6 +290,22 @@
 	uint32_t	sfs_dyn_wmm_flags;
 	uint32_t	auc_wmm_ps_notify;
 	uint32_t	tx_wmm_ps_null_frames;
+	uint32_t	qtn_bcn_stop;
+	uint32_t	mu_grp_snd_queue_is_not_empty;
+	uint32_t	mu_prec_snd_queue_is_not_empty;
+	uint32_t	autocs_sample_bits;
+	uint32_t	autocs_adjust_bits;
+	uint32_t	autocs_step_size;
+	uint32_t	autocs_cs_thresh;
+	uint32_t	autocs_min_rssi;
+	uint32_t	bmps_null_tx_success;
+	uint32_t	bmps_null_tx_fail;
+	uint32_t	bmps_null_tx_timeout;
+	uint32_t	txqueue_g1q0_deadline_frozen;	/* beacon deadline register frozen counter */
+	uint32_t	auc_ipc_retry;
+	uint32_t	auc_ipc_hwm;
+	uint32_t	auc_ipc_send_delay;
+	uint32_t	auc_ipc_send_delay_hwm;
 };
 
 /**
@@ -314,7 +325,6 @@
 	 * This counter shows the number of descriptors pushed to the hardware
 	 * for receive buffers.
 	 */
-	u_int32_t	rxdesc_push_to_hw;
 	u_int32_t	rxdesc_get_from_queue;
 	u_int32_t	rxdesc_push_to_host;
 	u_int32_t	rxdesc_non_aggr_push_to_host;
@@ -804,6 +814,7 @@
 	uint32_t	rxq_process_sum[QTN_FW_WMAC_RX_QNUM];
 	uint32_t	rxq_process_num[QTN_FW_WMAC_RX_QNUM];
 	uint32_t	rxq_process_limited[QTN_FW_WMAC_RX_QNUM];
+	uint32_t	rxq_desc_chain_empty[QTN_FW_WMAC_RX_QNUM];
 	uint32_t	rx_data_last_seqfrag;
 	uint32_t	rx_data_last_ip_id;
 
@@ -819,8 +830,11 @@
 	 * forwording to the external filter (HotSpot functionality).
 	 */
 	uint32_t	accel_mc_drop_l2_ext_filter;
+
+	uint32_t	rx_frame_addressed_to_wrong_bss;
 };
 
+#define MUC_LEGACY_NUM_RATES	12
 #define MUC_HT_NUM_RATES	77
 #define MUC_VHT_NUM_RATES	40
 struct muc_rx_rates {
@@ -830,22 +844,32 @@
 
 #define QTN_STATS_NUM_BF_SLOTS	10
 struct muc_rx_bf_stats {
+	u_int32_t	rx_bf_valid[QTN_STATS_NUM_BF_SLOTS];
 	u_int32_t	rx_bf_aid[QTN_STATS_NUM_BF_SLOTS];
 	u_int32_t	rx_bf_ng[QTN_STATS_NUM_BF_SLOTS];
 	u_int32_t	rx_bf_11n_ndp[QTN_STATS_NUM_BF_SLOTS];
 	u_int32_t	rx_bf_11ac_ndp[QTN_STATS_NUM_BF_SLOTS];
 	u_int32_t	rx_bf_11n_act[QTN_STATS_NUM_BF_SLOTS];
+	/* Total number of 11ac BF feedbacks */
 	u_int32_t	rx_bf_11ac_act[QTN_STATS_NUM_BF_SLOTS];
+	/* Number of MU group selection BF feedbacks */
 	u_int32_t	rx_bf_11ac_grp_sel[QTN_STATS_NUM_BF_SLOTS];
+	/* Number of MU precoding BF feedbacks */
 	u_int32_t	rx_bf_11ac_prec[QTN_STATS_NUM_BF_SLOTS];
+	/* Number of SU BF feedbacks */
 	u_int32_t	rx_bf_11ac_su[QTN_STATS_NUM_BF_SLOTS];
+	/* Number of corrupted BF feedbacks */
+	u_int32_t	rx_bf_11ac_bad[QTN_STATS_NUM_BF_SLOTS];
+	/* Number of MuC to DSP IPC failures while sending BF feedbacks */
 	u_int32_t	rx_bf_11ac_dsp_fail[QTN_STATS_NUM_BF_SLOTS];
+	/* Number of times QMat for this node has been updated (the node was added to MU group) */
 	u_int32_t	mu_grp_add[QTN_STATS_NUM_BF_SLOTS];
+	/* Number of times the node was removed from MU group */
 	u_int32_t	mu_grp_del[QTN_STATS_NUM_BF_SLOTS];
 	u_int32_t	msg_buf_alloc_fail;
 };
 
-/* @} */
+/** @} */
 
 extern struct muc_rx_stats uc_rx_stats;
 extern struct muc_rx_rates uc_rx_rates;
@@ -876,7 +900,7 @@
 /**
  * \addtogroup MUCSTATS
  */
-/* @{ */
+/** @{ */
 struct qtn_rate_stats_mcs_data {
 	uint16_t	mcs_rate;
 	uint16_t	rate_index;
@@ -919,6 +943,6 @@
 	struct qtn_rate_su_tx_stats  stats_su[RATES_STATS_NUM_ADAPTATIONS];
 	struct qtn_rate_mu_tx_stats  stats_mu[RATES_STATS_NUM_ADAPTATIONS];
 };
-/* @} */
+/** @} */
 
 #endif	/* _STATS_H_ */
diff --git a/include/qtn/qdrv_sch.h b/include/qtn/qdrv_sch.h
index 0b39c77..e761234 100644
--- a/include/qtn/qdrv_sch.h
+++ b/include/qtn/qdrv_sch.h
@@ -64,16 +64,12 @@
 #include "qdrv_sch_const.h"
 #include <qtn/iputil.h>
 #include <qtn/qtn_net_packet.h>
-#if defined(TOPAZ_PLATFORM)
 #include <qtn/topaz_tqe_cpuif.h>
 #include <qtn/topaz_vlan_cpuif.h>
 #include <common/topaz_emac.h>
 #include <asm/hardware.h>
-#endif
 #define ETHER_TYPE_UNKNOWN			0XFFFF
 #define IPTOS_PREC_SHIFT			5
-#define IEEE8021P_PRIORITY_NUM			8
-#define IP_DSCP_NUM				64
 
 #define IP_DSCP_SHIFT		2
 #define IP_DSCP(_pri)           (((_pri) & 0xFF) >> IP_DSCP_SHIFT)
@@ -94,7 +90,6 @@
 extern __sram_data uint8_t qdrv_sch_tos2ac[];
 extern __sram_data uint8_t qdrv_sch_dscp2dot1p[];
 extern __sram_data uint8_t qdrv_vap_vlan_max;
-#if defined(TOPAZ_PLATFORM)
 extern __sram_data uint8_t qdrv_sch_dscp2tid[QTN_MAX_BSS_VAPS][IP_DSCP_MAPPING_SIZE];
 extern __sram_data uint16_t qdrv_sch_vlan2index[QTN_MAX_BSS_VAPS];
 
@@ -119,7 +114,6 @@
 	return readl(IO_ADDRESS(vbase + reg));
 }
 
-#endif
 static inline struct Qdisc *qdrv_tx_sch_vap_get_qdisc(const struct net_device *dev)
 {
 	/* This assumes 1 tx netdev queue per vap */
@@ -285,7 +279,7 @@
 		    (llc_p->llc_dsap == LLC_SNAP_LSAP) &&
 		    (llc_p->llc_ssap == LLC_SNAP_LSAP)) {
 			*ether_type = llc_p->llc_un.type_snap.ether_type;
-			return (void *)(eh + 1) - sizeof(ether_type) + LLC_SNAPFRAMELEN;
+			return (void *)((char *)(eh + 1) - sizeof(ether_type) + LLC_SNAPFRAMELEN);
 		} else {
 			*ether_type = ETHER_TYPE_UNKNOWN;
 			return (void *)(eh + 1);
@@ -301,7 +295,6 @@
 	}
 }
 
-#if defined(TOPAZ_PLATFORM)
 static inline uint8_t qdrv_dscp2tid_default(const uint8_t dscp)
 {
 	const uint8_t tclass = dscp << IP_DSCP_SHIFT;
@@ -470,7 +463,6 @@
 
 	*tid = qdrv_sch_mask_gettid(*vlan_index, ip_dscp);
 }
-#endif/* TOPAZ_PLATFORM */
 int qdrv_sch_node_is_active(const struct qdrv_sch_node_band_data *nbd,
 				const struct qdrv_sch_node_data *nd, uint8_t band);
 int qdrv_sch_enqueue_node(struct qdrv_sch_node_data *nd, struct sk_buff *skb,
@@ -491,9 +483,12 @@
 void qdrv_sch_set_8021p_map(uint8_t ip_dscp, uint8_t dot1p_up);
 uint8_t qdrv_sch_get_8021p_map(uint8_t ip_dscp);
 
-int qdrv_sch_set_dscp2tid_map(const uint8_t vapid, uint8_t *ip_dscp, uint8_t listlen, uint8_t ac);
+int qdrv_sch_set_dscp2ac_map(const uint8_t vapid, uint8_t *ip_dscp, uint8_t listlen, uint8_t ac);
 int qdrv_sch_get_dscp2ac_map(const uint8_t vapid, uint8_t *dscp2ac);
 
+void qdrv_sch_set_dscp2tid_map(const uint8_t vapid, const uint8_t *dscp2tid);
+void qdrv_sch_get_dscp2tid_map(const uint8_t vapid, uint8_t *dscp2tid);
+
 void qdrv_tx_sch_node_data_init(struct Qdisc *sch, struct qdrv_sch_shared_data *sd,
 				struct qdrv_sch_node_data *nd, uint32_t users);
 void qdrv_tx_sch_node_data_exit(struct qdrv_sch_node_data *nd, uint32_t users);
diff --git a/include/qtn/qtn_auc_stats_fields.h b/include/qtn/qtn_auc_stats_fields.h
index 4a457b2..2016fc5 100644
--- a/include/qtn/qtn_auc_stats_fields.h
+++ b/include/qtn/qtn_auc_stats_fields.h
@@ -1,299 +1,234 @@
 	{ 0xe5101248, "sleep" },
-	{ 0xe510127c, "jiffies" },
-	{ 0xe510333c, "IRQ_0" },
-	{ 0xe5103340, "IRQ_1" },
-	{ 0xe5103344, "IRQ_2" },
-	{ 0xe5103348, "IRQ_3" },
-	{ 0xe510334c, "IRQ_4" },
-	{ 0xe5103350, "IRQ_5" },
-	{ 0xe5103354, "IRQ_6" },
-	{ 0xe5103358, "IRQ_7" },
-	{ 0xe510335c, "IRQ_8" },
-	{ 0xe5103360, "IRQ_9" },
-	{ 0xe5103364, "IRQ_10" },
-	{ 0xe5103368, "IRQ_11" },
-	{ 0xe510336c, "IRQ_12" },
-	{ 0xe5103370, "IRQ_13" },
-	{ 0xe5103374, "IRQ_14" },
-	{ 0xe5103378, "IRQ_15" },
-	{ 0xe510337c, "IRQ_16" },
-	{ 0xe5103380, "IRQ_17" },
-	{ 0xe5103384, "IRQ_18" },
-	{ 0xe5103388, "IRQ_19" },
-	{ 0xe5103398,	"task_alive_counters[0]" },
-	{ 0xe510339c,	"task_alive_counters[1]" },
-	{ 0xe51033a0,	"task_alive_counters[2]" },
-	{ 0xe51033a4,	"task_alive_counters[3]" },
-	{ 0xe51033a8,	"task_alive_counters[4]" },
-	{ 0xe51033ac,	"task_alive_counters[5]" },
-	{ 0xe51033b0,	"task_alive_counters[6]" },
-	{ 0xe51033b4,	"task_alive_counters[7]" },
-	{ 0xe51033b8,	"task_alive_counters[8]" },
-	{ 0xe51033bc,	"task_alive_counters[9]" },
-	{ 0xe51033c0,	"task_alive_counters[10]" },
-	{ 0xe51033c4,	"task_alive_counters[11]" },
-	{ 0xe51033c8,	"task_alive_counters[12]" },
-	{ 0xe51033cc,	"task_alive_counters[13]" },
-	{ 0xe51033d0,	"task_alive_counters[14]" },
-	{ 0xe51033d4,	"task_alive_counters[15]" },
-	{ 0xe51033d8,	"task_alive_counters[16]" },
-	{ 0xe51033dc,	"task_alive_counters[17]" },
-	{ 0xe51033e0,	"task_alive_counters[18]" },
-	{ 0xe51033e4,	"task_alive_counters[19]" },
-	{ 0xe51033e8,	"task_reschedule[0]" },
-	{ 0xe51033ec,	"task_reschedule[1]" },
-	{ 0xe51033f0,	"task_reschedule[2]" },
-	{ 0xe51033f4,	"task_reschedule[3]" },
-	{ 0xe51033f8,	"task_reschedule[4]" },
-	{ 0xe51033fc,	"task_reschedule[5]" },
-	{ 0xe5103400,	"task_reschedule[6]" },
-	{ 0xe5103404,	"task_reschedule[7]" },
-	{ 0xe5103408,	"task_reschedule[8]" },
-	{ 0xe510340c,	"task_reschedule[9]" },
-	{ 0xe5103410,	"task_reschedule[10]" },
-	{ 0xe5103414,	"task_reschedule[11]" },
-	{ 0xe5103418,	"task_reschedule[12]" },
-	{ 0xe510341c,	"task_reschedule[13]" },
-	{ 0xe5103420,	"task_reschedule[14]" },
-	{ 0xe5103424,	"task_reschedule[15]" },
-	{ 0xe5103428,	"task_reschedule[16]" },
-	{ 0xe510342c,	"task_reschedule[17]" },
-	{ 0xe5103430,	"task_reschedule[18]" },
-	{ 0xe5103434,	"task_reschedule[19]" },
-	{ 0xe5103438,	"task_false_trigger[0]" },
-	{ 0xe510343c,	"task_false_trigger[1]" },
-	{ 0xe5103440,	"task_false_trigger[2]" },
-	{ 0xe5103444,	"task_false_trigger[3]" },
-	{ 0xe5103448,	"task_false_trigger[4]" },
-	{ 0xe510344c,	"task_false_trigger[5]" },
-	{ 0xe5103450,	"task_false_trigger[6]" },
-	{ 0xe5103454,	"task_false_trigger[7]" },
-	{ 0xe5103458,	"task_false_trigger[8]" },
-	{ 0xe510345c,	"task_false_trigger[9]" },
-	{ 0xe5103460,	"task_false_trigger[10]" },
-	{ 0xe5103464,	"task_false_trigger[11]" },
-	{ 0xe5103468,	"task_false_trigger[12]" },
-	{ 0xe510346c,	"task_false_trigger[13]" },
-	{ 0xe5103470,	"task_false_trigger[14]" },
-	{ 0xe5103474,	"task_false_trigger[15]" },
-	{ 0xe5103478,	"task_false_trigger[16]" },
-	{ 0xe510347c,	"task_false_trigger[17]" },
-	{ 0xe5103480,	"task_false_trigger[18]" },
-	{ 0xe5103484,	"task_false_trigger[19]" },
-	{ 0xe5103488,	"tqew_ac[0]" },
-	{ 0xe510348c,	"tqew_ac[1]" },
-	{ 0xe5103490,	"tqew_ac[2]" },
-	{ 0xe5103494,	"tqew_ac[3]" },
-	{ 0xe5103498,	"tqew_ac_avail[0]" },
-	{ 0xe510349c,	"tqew_ac_avail[1]" },
-	{ 0xe51034a0,	"tqew_ac_avail[2]" },
-	{ 0xe51034a4,	"tqew_ac_avail[3]" },
-	{ 0xe51034a8,	"tqew_tac_pri_preempt" },
-	{ 0xe51034ac,	"tqew_tac_pri_mercy" },
-	{ 0xe51034b0,	"tqew_airfair_state" },
-	{ 0xe51034b4,	"tqew_air_qos" },
-	{ 0xe51034b8,	"tqew_air_fairness" },
-	{ 0xe51034bc,	"tqew_air_swap" },
-	{ 0xe51034c0,	"tqew_air_humble" },
-	{ 0xe51034c4,	"tqew_air_suppress" },
-	{ 0xe51034c8,	"tqew_air_use_idletime" },
-	{ 0xe51034cc,	"tqew_air_dequeue_only" },
-	{ 0xe51034d0,	"tqew_fsm_no_resource" },
-	{ 0xe51034d4,	"tqew_pkt_pending_for_txdone" },
-	{ 0xe51034d8,	"tqew_descr_alloc_fail" },
-	{ 0xe51034dc,	"tqew_ring_alloc_fail" },
-	{ 0xe51034e0,	"tqew_pop_alloc_fail" },
-	{ 0xe51034e4,	"tqew_pop_sw_limit" },
-	{ 0xe51034e8,	"tqew_pop_empty" },
-	{ 0xe51034ec,	"tqew_pop_global_buf_limit" },
-	{ 0xe51034f0,	"tqew_available_set" },
-	{ 0xe51034f4,	"tqew_available_reset" },
-	{ 0xe51034f8,	"tqew_rx" },
-	{ 0xe51034fc,	"tqew_drop" },
-	{ 0xe5103500,	"tqew_free" },
-	{ 0xe5103504,	"tqew_buf_invalid" },
-	{ 0xe5103508,	"wmac_rx_delba" },
-	{ 0xe510350c,	"wmac_rx_bb_underflow" },
-	{ 0xe5103510,	"wmac_rx_bb_overflow" },
-	{ 0xe5103514,	"wmac_rx_ipc_clean" },
-	{ 0xe5103518,	"wmac_rx_ipc_replenish" },
-	{ 0xe510351c,	"wmac_rx_ipc_sreset_recover" },
-	{ 0xe5103520,	"wmac_rx_prepare" },
-	{ 0xe5103524,	"wmac_rx_reschedule" },
-	{ 0xe5103528,	"wmac_rx_hbm_tail_overrun" },
-	{ 0xe510352c,	"wmac_rxq_intr[0]" },
-	{ 0xe5103530,	"wmac_rxq_intr[1]" },
-	{ 0xe5103534,	"wmac_rxq_intr[2]" },
-	{ 0xe5103538,	"wmac_rxq_fill[0]" },
-	{ 0xe510353c,	"wmac_rxq_fill[1]" },
-	{ 0xe5103540,	"wmac_rxq_fill[2]" },
-	{ 0xe5103544,	"wmac_rxq_nobuf[0]" },
-	{ 0xe5103548,	"wmac_rxq_nobuf[1]" },
-	{ 0xe510354c,	"wmac_rxq_nobuf[2]" },
-	{ 0xe5103550,	"wmac_rxq_stop[0]" },
-	{ 0xe5103554,	"wmac_rxq_stop[1]" },
-	{ 0xe5103558,	"wmac_rxq_stop[2]" },
-	{ 0xe510355c,	"wmac_rxq_pkt[0]" },
-	{ 0xe5103560,	"wmac_rxq_pkt[1]" },
-	{ 0xe5103564,	"wmac_rxq_pkt[2]" },
-	{ 0xe5103568,	"wmac_rxq_bad_status[0]" },
-	{ 0xe510356c,	"wmac_rxq_bad_status[1]" },
-	{ 0xe5103570,	"wmac_rxq_bad_status[2]" },
-	{ 0xe5103574,	"wmac_rxq_pkt_oversize[0]" },
-	{ 0xe5103578,	"wmac_rxq_pkt_oversize[1]" },
-	{ 0xe510357c,	"wmac_rxq_pkt_oversize[2]" },
-	{ 0xe5103580,	"wmac_rxq_pkt_delivered[0]" },
-	{ 0xe5103584,	"wmac_rxq_pkt_delivered[1]" },
-	{ 0xe5103588,	"wmac_rxq_pkt_delivered[2]" },
-	{ 0xe510358c,	"wmac_rx_data_last_seqfrag" },
-	{ 0xe5103590,	"wmac_rx_data_last_ip_id" },
-	{ 0xe5103594,	"wmac_tx_done[0]" },
-	{ 0xe5103598,	"wmac_tx_done[1]" },
-	{ 0xe510359c,	"wmac_tx_done[2]" },
-	{ 0xe51035a0,	"wmac_tx_done[3]" },
-	{ 0xe51035a4,	"agg_aggregate_flag" },
-	{ 0xe51035a8,	"agg_aggressive_agg" },
-	{ 0xe51035ac,	"hdrs_available_recent_min" },
-	{ 0xe51035b0,	"agg_states[0]" },
-	{ 0xe51035b4,	"agg_states[1]" },
-	{ 0xe51035b8,	"agg_states[2]" },
-	{ 0xe51035bc,	"agg_states[3]" },
-	{ 0xe51035c0,	"agg_states[4]" },
-	{ 0xe51035c4,	"ethq_push" },
-	{ 0xe51035c8,	"ethq_pop" },
-	{ 0xe51035cc,	"agg_aggregate_mpdu" },
-	{ 0xe51035d0,	"agg_aggregate_msdu" },
-	{ 0xe51035d4,	"agg_singleton_mpdu" },
-	{ 0xe51035d8,	"agg_singleton_mgmt" },
-	{ 0xe51035dc,	"agg_singleton_ctl" },
-	{ 0xe51035e0,	"agg_singleton_probe" },
-	{ 0xe51035e4,	"agg_4K_amsdu" },
-	{ 0xe51035e8,	"agg_8K_amsdu" },
-	{ 0xe51035ec,	"agg_11K_amsdu" },
-	{ 0xe51035f0,	"tx_feedback_success" },
-	{ 0xe51035f4,	"tx_feedback_fail" },
-	{ 0xe51035f8,	"tx_done_status_success" },
-	{ 0xe51035fc,	"tx_done_status_timeout" },
-	{ 0xe5103600,	"tx_done_status_xretry" },
-	{ 0xe5103604,	"tx_done_status_timeout_xretry" },
-	{ 0xe5103608,	"tx_done_pkt_chain_reset" },
-	{ 0xe510360c,	"tx_done_pkt_chain_success" },
-	{ 0xe5103610,	"tx_done_pkt_chain_drop_tid_down" },
-	{ 0xe5103614,	"tx_done_pkt_chain_drop_xattempts" },
-	{ 0xe5103618,	"tx_done_singleton_finish" },
-	{ 0xe510361c,	"tx_done_singleton_swretry" },
-	{ 0xe5103620,	"tx_done_aggregate_finish" },
-	{ 0xe5103624,	"tx_done_aggregate_hwretry" },
-	{ 0xe5103628,	"tx_done_aggregate_swretry" },
-	{ 0xe510362c,	"tx_done_mpdu_swretry" },
-	{ 0xe5103630,	"tx_sample" },
-	{ 0xe5103634,	"tx_bw_sample" },
-	{ 0xe5103638,	"tx_swretry_lower_bw" },
-	{ 0xe510363c,	"tx_swretry_agg_exceed" },
-	{ 0xe5103640,	"tx_scale_base_20m" },
-	{ 0xe5103644,	"tx_scale_base_40m" },
-	{ 0xe5103648,	"tx_scale_base_80m" },
-	{ 0xe510364c,	"tx_scale_max" },
-	{ 0xe5103650,	"tx_scale_overstep" },
-	{ 0xe5103654,	"alloc_tqew_fast" },
-	{ 0xe5103658,	"free_tqew_fast" },
-	{ 0xe510365c,	"alloc_tqew_slow" },
-	{ 0xe5103660,	"free_tqew_slow" },
-	{ 0xe5103664,	"alloc_tqew_local" },
-	{ 0xe5103668,	"free_tqew_local" },
-	{ 0xe510366c,	"alloc_hdr_fast" },
-	{ 0xe5103670,	"free_hdr_fast" },
-	{ 0xe5103674,	"alloc_hdr_slow" },
-	{ 0xe5103678,	"free_hdr_slow" },
-	{ 0xe510367c,	"alloc_msdu_hdr_failed" },
-	{ 0xe5103680,	"alloc_mpdu_hdr_failed" },
-	{ 0xe5103684,	"alloc_tid_superfast" },
-	{ 0xe5103688,	"free_tid_superfast" },
-	{ 0xe510368c,	"alloc_tid_fast" },
-	{ 0xe5103690,	"free_tid_fast" },
-	{ 0xe5103694,	"alloc_tid_slow" },
-	{ 0xe5103698,	"free_tid_slow" },
-	{ 0xe510369c,	"alloc_node_rate_fast" },
-	{ 0xe51036a0,	"free_node_rate_fast" },
-	{ 0xe51036a4,	"alloc_node_rate_slow" },
-	{ 0xe51036a8,	"free_node_rate_slow" },
-	{ 0xe51036ac,	"alloc_node_superfast" },
-	{ 0xe51036b0,	"free_node_superfast" },
-	{ 0xe51036b4,	"alloc_node_fast" },
-	{ 0xe51036b8,	"free_node_fast" },
-	{ 0xe51036bc,	"alloc_fcs" },
-	{ 0xe51036c0,	"free_fcs" },
-	{ 0xe51036c4,	"alloc_mac_descr" },
-	{ 0xe51036c8,	"free_mac_descr" },
-	{ 0xe51036cc,	"tx_mac_push" },
-	{ 0xe51036d0,	"tx_mac_idle" },
-	{ 0xe51036d4,	"tx_mac_rts" },
-	{ 0xe51036d8,	"tx_vlan_drop" },
-	{ 0xe51036dc,	"tx_acm_drop" },
-	{ 0xe51036e0,	"tx_ps_drop" },
-	{ 0xe51036e4,	"ocs_tx_suspend" },
-	{ 0xe51036e8,	"ocs_tx_resume" },
-	{ 0xe51036ec,	"ocs_singleton_suspend" },
-	{ 0xe51036f0,	"ocs_ampdu_suspend" },
-	{ 0xe51036f4,	"ocs_frame_created" },
-	{ 0xe51036f8,	"pwr_mgmt_awake" },
-	{ 0xe51036fc,	"pwr_mgmt_sleep" },
-	{ 0xe5103700,	"pwr_mgmt_tx" },
-	{ 0xe5103704,	"pspoll_rx" },
-	{ 0xe5103708,	"dtim_q_push" },
-	{ 0xe510370c,	"dtim_q_pop" },
-	{ 0xe5103710,	"dtim_trigger" },
-	{ 0xe5103714,	"dtim_q_overflow" },
-	{ 0xe5103718,	"tx_restrict_dropped" },
-	{ 0xe510371c,	"tx_throt_dropped" },
-	{ 0xe5103720,	"tx_block_singleton" },
-	{ 0xe5103724,	"tx_force_unblock_tid" },
-	{ 0xe5103728,	"tx_ctl_pkt_hbm_alloc_fails" },
-	{ 0xe510372c,	"tx_ctl_pkt_alloc_descr_fails" },
-	{ 0xe5103730,	"tx_bar_alloc_ctl_pkt_fails" },
-	{ 0xe5103734,	"wmm_ps_tx" },
-	{ 0xe5103738,	"wmm_ps_tx_null_frames" },
-	{ 0xe510373c,	"wmm_ps_tx_more_data_frames" },
-	{ 0xe5103740,	"wmm_ps_tx_eosp_frames" },
-	{ 0xe5103744,	"mu_tx_su_count" },
-	{ 0xe5103748,	"mu_tx_send_mu_fail" },
-	{ 0xe510374c,	"mu_tx_push_count" },
-	{ 0xe5103750,	"mu_tx_done_count" },
-	{ 0xe5103754,	"mu_tx_done_succ" },
-	{ 0xe5103758,	"mu_tx_done_fail" },
-	{ 0xe510375c,	"mu_tx_sample" },
-	{ 0xe5103760,	"mu_bar_bitmap_non_zero" },
-	{ 0xe5103764,	"mu_bar_bitmap_zero" },
-	{ 0xe5103768,	"mu_mac_wmac1_ipc_push" },
-	{ 0xe510376c,	"mu_mac_wmac1_auc_push" },
-	{ 0xe5103770,	"mu_tx_swretry_agg_exceed" },
-	{ 0xe5103774,	"mu_tx_buddy_try" },
-	{ 0xe5103778,	"mu_tx_buddy_fail_wmac" },
-	{ 0xe510377c,	"mu_tx_buddy_fail_ptid" },
-	{ 0xe5103780,	"mu_tx_buddy_fail_rate" },
-	{ 0xe5103784,	"mu_tx_buddy_fail_create_agg" },
-	{ 0xe5103788,	"mu_tx_buddy_mu_only_timeout" },
-	{ 0xe510378c,	"mu_tx_another_q_push_succ" },
-	{ 0xe5103790,	"mu_tx_another_q_push_fail" },
-	{ 0xe5103794,	"mu_tx_buddy_multi_tid" },
-	{ 0xe5103798,	"mu_tx_wmac_0_done_count" },
-	{ 0xe510379c,	"mu_tx_wmac_0_bitmap_non_zero" },
-	{ 0xe51037a0,	"mu_tx_wmac_0_bitmap_zero" },
-	{ 0xe51037a4,	"mu_tx_wmac_0_done_timeout" },
-	{ 0xe51037a8,	"mu_tx_wmac_0_done_succ" },
-	{ 0xe51037ac,	"mu_tx_wmac_0_done_fail" },
-	{ 0xe51037b0,	"mu_tx_wmac_1_done_count" },
-	{ 0xe51037b4,	"mu_tx_wmac_1_bitmap_non_zero" },
-	{ 0xe51037b8,	"mu_tx_wmac_1_bitmap_zero" },
-	{ 0xe51037bc,	"mu_tx_wmac_1_done_timeout" },
-	{ 0xe51037c0,	"mu_tx_wmac_1_done_succ" },
-	{ 0xe51037c4,	"mu_tx_wmac_1_done_fail" },
-	{ 0xe51037c8,	"mu_tx_wmac_0_mpdu_total" },
-	{ 0xe51037cc,	"mu_tx_wmac_0_mpdu_succ" },
-	{ 0xe51037d0,	"mu_tx_wmac_1_mpdu_total" },
-	{ 0xe51037d4,	"mu_tx_wmac_1_mpdu_succ" },
-	{ 0xe51037d8,	"mu_tx_qnum[0]" },
-	{ 0xe51037dc,	"mu_tx_qnum[1]" },
-	{ 0xe51037e0,	"mu_tx_qnum[2]" },
-	{ 0xe51037e4,	"mu_tx_qnum[3]" },
-	{ 0xe51037e8,	"tqe_sema_fails" },
+	{ 0xe5101280, "jiffies" },
+	{ 0xe5103344, "IRQ_0" },
+	{ 0xe5103348, "IRQ_1" },
+	{ 0xe510334c, "IRQ_2" },
+	{ 0xe5103350, "IRQ_3" },
+	{ 0xe5103354, "IRQ_4" },
+	{ 0xe5103358, "IRQ_5" },
+	{ 0xe510335c, "IRQ_6" },
+	{ 0xe5103360, "IRQ_7" },
+	{ 0xe5103364, "IRQ_8" },
+	{ 0xe5103368, "IRQ_9" },
+	{ 0xe510336c, "IRQ_10" },
+	{ 0xe5103370, "IRQ_11" },
+	{ 0xe5103374, "IRQ_12" },
+	{ 0xe5103378, "IRQ_13" },
+	{ 0xe510337c, "IRQ_14" },
+	{ 0xe5103380, "IRQ_15" },
+	{ 0xe5103384, "IRQ_16" },
+	{ 0xe5103388, "IRQ_17" },
+	{ 0xe510338c, "IRQ_18" },
+	{ 0xe5103390, "IRQ_19" },
+	{ 0xe51033a0,	"task_alive_counters[0]" },
+	{ 0xe51033a4,	"task_alive_counters[1]" },
+	{ 0xe51033a8,	"task_alive_counters[2]" },
+	{ 0xe51033ac,	"task_alive_counters[3]" },
+	{ 0xe51033b0,	"task_alive_counters[4]" },
+	{ 0xe51033b4,	"task_alive_counters[5]" },
+	{ 0xe51033b8,	"task_alive_counters[6]" },
+	{ 0xe51033bc,	"task_alive_counters[7]" },
+	{ 0xe51033c0,	"task_alive_counters[8]" },
+	{ 0xe51033c4,	"task_alive_counters[9]" },
+	{ 0xe51033c8,	"task_alive_counters[10]" },
+	{ 0xe51033cc,	"task_alive_counters[11]" },
+	{ 0xe51033d0,	"task_alive_counters[12]" },
+	{ 0xe51033d4,	"task_alive_counters[13]" },
+	{ 0xe51033d8,	"task_alive_counters[14]" },
+	{ 0xe51033dc,	"task_alive_counters[15]" },
+	{ 0xe51033e0,	"task_alive_counters[16]" },
+	{ 0xe51033e4,	"task_alive_counters[17]" },
+	{ 0xe51033e8,	"task_alive_counters[18]" },
+	{ 0xe51033ec,	"task_alive_counters[19]" },
+	{ 0xe51033f0,	"task_false_trigger[0]" },
+	{ 0xe51033f4,	"task_false_trigger[1]" },
+	{ 0xe51033f8,	"task_false_trigger[2]" },
+	{ 0xe51033fc,	"task_false_trigger[3]" },
+	{ 0xe5103400,	"task_false_trigger[4]" },
+	{ 0xe5103404,	"task_false_trigger[5]" },
+	{ 0xe5103408,	"task_false_trigger[6]" },
+	{ 0xe510340c,	"task_false_trigger[7]" },
+	{ 0xe5103410,	"task_false_trigger[8]" },
+	{ 0xe5103414,	"task_false_trigger[9]" },
+	{ 0xe5103418,	"task_false_trigger[10]" },
+	{ 0xe510341c,	"task_false_trigger[11]" },
+	{ 0xe5103420,	"task_false_trigger[12]" },
+	{ 0xe5103424,	"task_false_trigger[13]" },
+	{ 0xe5103428,	"task_false_trigger[14]" },
+	{ 0xe510342c,	"task_false_trigger[15]" },
+	{ 0xe5103430,	"task_false_trigger[16]" },
+	{ 0xe5103434,	"task_false_trigger[17]" },
+	{ 0xe5103438,	"task_false_trigger[18]" },
+	{ 0xe510343c,	"task_false_trigger[19]" },
+	{ 0xe5103440,	"tqew_ac[0]" },
+	{ 0xe5103444,	"tqew_ac[1]" },
+	{ 0xe5103448,	"tqew_ac[2]" },
+	{ 0xe510344c,	"tqew_ac[3]" },
+	{ 0xe5103450,	"tqew_ac_avail[0]" },
+	{ 0xe5103454,	"tqew_ac_avail[1]" },
+	{ 0xe5103458,	"tqew_ac_avail[2]" },
+	{ 0xe510345c,	"tqew_ac_avail[3]" },
+	{ 0xe5103460,	"tqew_air_humble" },
+	{ 0xe5103464,	"tqew_air_suppress" },
+	{ 0xe5103468,	"tqew_air_use_idletime" },
+	{ 0xe510346c,	"tqew_air_dequeue_only" },
+	{ 0xe5103470,	"tqew_pkt_pending_for_txdone" },
+	{ 0xe5103474,	"tqew_descr_alloc_fail" },
+	{ 0xe5103478,	"tqew_ring_alloc_fail" },
+	{ 0xe510347c,	"tqew_pop_alloc_fail" },
+	{ 0xe5103480,	"tqew_pop_sw_limit" },
+	{ 0xe5103484,	"tqew_pop_empty" },
+	{ 0xe5103488,	"tqew_available_set" },
+	{ 0xe510348c,	"tqew_available_reset" },
+	{ 0xe5103490,	"tqew_rx" },
+	{ 0xe5103494,	"tqew_drop" },
+	{ 0xe5103498,	"tqew_free" },
+	{ 0xe510349c,	"tqew_buf_invalid" },
+	{ 0xe51034a0,	"wmac_tx_done[0]" },
+	{ 0xe51034a4,	"wmac_tx_done[1]" },
+	{ 0xe51034a8,	"wmac_tx_done[2]" },
+	{ 0xe51034ac,	"wmac_tx_done[3]" },
+	{ 0xe51034b0,	"agg_aggregate_flag" },
+	{ 0xe51034b4,	"agg_aggressive_agg" },
+	{ 0xe51034b8,	"hdrs_available_recent_min" },
+	{ 0xe51034bc,	"agg_states[0]" },
+	{ 0xe51034c0,	"agg_states[1]" },
+	{ 0xe51034c4,	"agg_states[2]" },
+	{ 0xe51034c8,	"agg_states[3]" },
+	{ 0xe51034cc,	"agg_states[4]" },
+	{ 0xe51034d0,	"ethq_push" },
+	{ 0xe51034d4,	"ethq_pop" },
+	{ 0xe51034d8,	"agg_aggregate_mpdu" },
+	{ 0xe51034dc,	"agg_aggregate_msdu" },
+	{ 0xe51034e0,	"agg_singleton_mpdu" },
+	{ 0xe51034e4,	"agg_singleton_mgmt" },
+	{ 0xe51034e8,	"agg_singleton_ctl" },
+	{ 0xe51034ec,	"agg_singleton_probe" },
+	{ 0xe51034f0,	"agg_4K_amsdu" },
+	{ 0xe51034f4,	"agg_8K_amsdu" },
+	{ 0xe51034f8,	"agg_11K_amsdu" },
+	{ 0xe51034fc,	"tx_feedback_success" },
+	{ 0xe5103500,	"tx_feedback_fail" },
+	{ 0xe5103504,	"tx_done_status_success" },
+	{ 0xe5103508,	"tx_done_status_timeout" },
+	{ 0xe510350c,	"tx_done_status_xretry" },
+	{ 0xe5103510,	"tx_done_status_timeout_xretry" },
+	{ 0xe5103514,	"tx_done_pkt_chain_reset" },
+	{ 0xe5103518,	"tx_done_pkt_chain_success" },
+	{ 0xe510351c,	"tx_done_pkt_chain_drop_tid_down" },
+	{ 0xe5103520,	"tx_done_pkt_chain_drop_xattempts" },
+	{ 0xe5103524,	"tx_done_singleton_finish" },
+	{ 0xe5103528,	"tx_done_singleton_swretry" },
+	{ 0xe510352c,	"tx_done_aggregate_finish" },
+	{ 0xe5103530,	"tx_done_aggregate_hwretry" },
+	{ 0xe5103534,	"tx_done_aggregate_swretry" },
+	{ 0xe5103538,	"tx_done_mpdu_swretry" },
+	{ 0xe510353c,	"tx_sample" },
+	{ 0xe5103540,	"tx_bw_sample" },
+	{ 0xe5103544,	"tx_swretry_lower_bw" },
+	{ 0xe5103548,	"tx_swretry_agg_exceed" },
+	{ 0xe510354c,	"tx_scale_base_20m" },
+	{ 0xe5103550,	"tx_scale_base_40m" },
+	{ 0xe5103554,	"tx_scale_base_80m" },
+	{ 0xe5103558,	"tx_scale_max" },
+	{ 0xe510355c,	"tx_scale_overstep" },
+	{ 0xe5103560,	"alloc_tqew_fast" },
+	{ 0xe5103564,	"free_tqew_fast" },
+	{ 0xe5103568,	"alloc_tqew_slow" },
+	{ 0xe510356c,	"free_tqew_slow" },
+	{ 0xe5103570,	"alloc_tqew_local" },
+	{ 0xe5103574,	"free_tqew_local" },
+	{ 0xe5103578,	"alloc_hdr_fast" },
+	{ 0xe510357c,	"free_hdr_fast" },
+	{ 0xe5103580,	"alloc_hdr_slow" },
+	{ 0xe5103584,	"free_hdr_slow" },
+	{ 0xe5103588,	"alloc_msdu_hdr_failed" },
+	{ 0xe510358c,	"alloc_mpdu_hdr_failed" },
+	{ 0xe5103590,	"alloc_tid_superfast" },
+	{ 0xe5103594,	"free_tid_superfast" },
+	{ 0xe5103598,	"alloc_tid_fast" },
+	{ 0xe510359c,	"free_tid_fast" },
+	{ 0xe51035a0,	"alloc_tid_slow" },
+	{ 0xe51035a4,	"free_tid_slow" },
+	{ 0xe51035a8,	"alloc_node_rate_fast" },
+	{ 0xe51035ac,	"free_node_rate_fast" },
+	{ 0xe51035b0,	"alloc_node_rate_slow" },
+	{ 0xe51035b4,	"free_node_rate_slow" },
+	{ 0xe51035b8,	"alloc_node_superfast" },
+	{ 0xe51035bc,	"free_node_superfast" },
+	{ 0xe51035c0,	"alloc_node_fast" },
+	{ 0xe51035c4,	"free_node_fast" },
+	{ 0xe51035c8,	"alloc_fcs" },
+	{ 0xe51035cc,	"free_fcs" },
+	{ 0xe51035d0,	"alloc_mac_descr" },
+	{ 0xe51035d4,	"free_mac_descr" },
+	{ 0xe51035d8,	"tx_mac_push" },
+	{ 0xe51035dc,	"tx_mac_idle" },
+	{ 0xe51035e0,	"tx_mac_rts" },
+	{ 0xe51035e4,	"tx_mac_cts2self" },
+	{ 0xe51035e8,	"tx_vlan_drop" },
+	{ 0xe51035ec,	"tx_acm_drop" },
+	{ 0xe51035f0,	"tx_ps_drop" },
+	{ 0xe51035f4,	"ocs_tx_suspend" },
+	{ 0xe51035f8,	"ocs_tx_resume" },
+	{ 0xe51035fc,	"ocs_singleton_suspend" },
+	{ 0xe5103600,	"ocs_ampdu_suspend" },
+	{ 0xe5103604,	"ocs_frame_created" },
+	{ 0xe5103608,	"pwr_mgmt_awake" },
+	{ 0xe510360c,	"pwr_mgmt_sleep" },
+	{ 0xe5103610,	"pwr_mgmt_tx" },
+	{ 0xe5103614,	"pspoll_rx" },
+	{ 0xe5103618,	"dtim_q_push" },
+	{ 0xe510361c,	"dtim_q_pop" },
+	{ 0xe5103620,	"dtim_trigger" },
+	{ 0xe5103624,	"dtim_q_overflow" },
+	{ 0xe5103628,	"tx_restrict_dropped" },
+	{ 0xe510362c,	"tx_throt_dropped" },
+	{ 0xe5103630,	"tx_block_singleton" },
+	{ 0xe5103634,	"tx_force_unblock_tid" },
+	{ 0xe5103638,	"tx_ctl_pkt_hbm_alloc_fails" },
+	{ 0xe510363c,	"tx_ctl_pkt_alloc_descr_fails" },
+	{ 0xe5103640,	"tx_bar_alloc_ctl_pkt_fails" },
+	{ 0xe5103644,	"wmm_ps_tx" },
+	{ 0xe5103648,	"wmm_ps_tx_null_frames" },
+	{ 0xe510364c,	"wmm_ps_tx_more_data_frames" },
+	{ 0xe5103650,	"wmm_ps_tx_eosp_frames" },
+	{ 0xe5103654,	"mu_tx_su_count" },
+	{ 0xe5103658,	"mu_tx_send_mu_fail" },
+	{ 0xe510365c,	"mu_tx_push_count" },
+	{ 0xe5103660,	"mu_tx_done_count" },
+	{ 0xe5103664,	"mu_tx_done_succ" },
+	{ 0xe5103668,	"mu_tx_done_fail" },
+	{ 0xe510366c,	"mu_tx_sample" },
+	{ 0xe5103670,	"mu_bar_bitmap_non_zero" },
+	{ 0xe5103674,	"mu_bar_bitmap_zero" },
+	{ 0xe5103678,	"mu_mac_wmac1_ipc_push" },
+	{ 0xe510367c,	"mu_mac_wmac1_auc_push" },
+	{ 0xe5103680,	"mu_wmac1_resets" },
+	{ 0xe5103684,	"mu_tx_swretry_agg_exceed" },
+	{ 0xe5103688,	"mu_tx_buddy_try" },
+	{ 0xe510368c,	"mu_tx_buddy_fail_wmac" },
+	{ 0xe5103690,	"mu_tx_buddy_fail_ptid" },
+	{ 0xe5103694,	"mu_tx_buddy_fail_rate" },
+	{ 0xe5103698,	"mu_tx_buddy_fail_create_agg" },
+	{ 0xe510369c,	"mu_tx_buddy_mu_only_timeout" },
+	{ 0xe51036a0,	"mu_tx_another_q_push_succ" },
+	{ 0xe51036a4,	"mu_tx_another_q_push_fail" },
+	{ 0xe51036a8,	"mu_tx_buddy_multi_tid" },
+	{ 0xe51036ac,	"mu_tx_wmac_0_done_count" },
+	{ 0xe51036b0,	"mu_tx_wmac_0_bitmap_non_zero" },
+	{ 0xe51036b4,	"mu_tx_wmac_0_bitmap_zero" },
+	{ 0xe51036b8,	"mu_tx_wmac_0_done_timeout" },
+	{ 0xe51036bc,	"mu_tx_wmac_0_done_succ" },
+	{ 0xe51036c0,	"mu_tx_wmac_0_done_fail" },
+	{ 0xe51036c4,	"mu_tx_wmac_1_done_succ" },
+	{ 0xe51036c8,	"mu_tx_wmac_1_done_fail" },
+	{ 0xe51036cc,	"mu_tx_wmac_0_mpdu_total" },
+	{ 0xe51036d0,	"mu_tx_wmac_0_mpdu_succ" },
+	{ 0xe51036d4,	"mu_tx_wmac_1_mpdu_total" },
+	{ 0xe51036d8,	"mu_tx_wmac_1_mpdu_succ" },
+	{ 0xe51036dc,	"mu_tx_qnum[0]" },
+	{ 0xe51036e0,	"mu_tx_qnum[1]" },
+	{ 0xe51036e4,	"mu_tx_qnum[2]" },
+	{ 0xe51036e8,	"mu_tx_qnum[3]" },
+	{ 0xe51036ec,	"tqe_sema_fails" },
diff --git a/include/qtn/qtn_buffers.h b/include/qtn/qtn_buffers.h
index ca69c88..de0540d 100644
--- a/include/qtn/qtn_buffers.h
+++ b/include/qtn/qtn_buffers.h
@@ -25,19 +25,12 @@
 
 #include <common/topaz_config.h>
 
-#if defined(TOPAZ_PLATFORM)
 #define QTN_BUF_USE_11AC_SIZE			1
 #define TOPAZ_HBM_SKB_ALLOCATOR_DEFAULT		1
-#else
-#define QTN_BUF_USE_11AC_SIZE			0
-#define TOPAZ_HBM_SKB_ALLOCATOR_DEFAULT		0
-#endif
 
 #define TOPAZ_HBM_SKB_ALLOCATOR			2
 
-#if !defined(TOPAZ_PLATFORM) && QTN_BUF_USE_11AC_SIZE
-	#error Cannot use QTN_BUF_USE_11AC_SIZE on Ruby, insufficient DDR
-#elif defined(TOPAZ_PLATFORM) && TOPAZ_HBM_SKB_ALLOCATOR_DEFAULT
+#if TOPAZ_HBM_SKB_ALLOCATOR_DEFAULT
 	/*
 	 * Buffer allocation in Topaz when using the switch must be extremely
 	 * careful such that the sum of all possible buffer pileup does not
@@ -51,7 +44,7 @@
 	#define QTN_BUFS_WMAC_TX_NON_LHOST_S	9
 	#define QTN_BUFS_WMAC_TX_QDISC_S	10
 	#define QDRV_TX_SCH_RED_MASK		((1 << 7) - 1)
-#elif defined(TOPAZ_PLATFORM) && QTN_BUF_USE_11AC_SIZE
+#elif QTN_BUF_USE_11AC_SIZE
 	/* Topaz with 11ac buffers, no acceleration */
 	#define TOPAZ_HBM_PAYLOAD_COUNT_S	TOPAZ_HBM_BUF_EMAC_RX_COUNT_S
 	#define QTN_BUFS_EMAC_TX_RING_S		9
@@ -104,7 +97,7 @@
 #define QTN_BUFS_WMAC_TOTAL		(1 * (QTN_BUFS_WMAC_RX_RING + QTN_BUFS_WMAC_TX_NON_LHOST + QTN_BUFS_WMAC_TX_QDISC + QDRV_MAX_QUEUED_MGMT_FRAMES))
 #define QTN_BUFS_ALLOC_TOTAL		(QTN_BUFS_CPUS_TOTAL /*+ QTN_BUFS_EMAC_TOTAL*/ + QTN_BUFS_WMAC_TOTAL)
 
-#if defined(TOPAZ_PLATFORM) && TOPAZ_HBM_SKB_ALLOCATOR_DEFAULT && (TOPAZ_HBM_PAYLOAD_COUNT <= QTN_BUFS_ALLOC_TOTAL)
+#if TOPAZ_HBM_SKB_ALLOCATOR_DEFAULT && (TOPAZ_HBM_PAYLOAD_COUNT <= QTN_BUFS_ALLOC_TOTAL)
 	#error "Payload buffers distribution error"
 #endif
 
diff --git a/include/qtn/qtn_config.h b/include/qtn/qtn_config.h
deleted file mode 100644
index f660f93..0000000
--- a/include/qtn/qtn_config.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*SH1
-*******************************************************************************
-**                                                                           **
-**         Copyright (c) 2012 Quantenna Communications, Inc                  **
-**                            All Rights Reserved                            **
-**                                                                           **
-**  Author      : Quantenna Communications Inc                               **
-**  File        : qtn_config.h                                               **
-**  Description :                                                            **
-**                                                                           **
-*******************************************************************************
-**                                                                           **
-**  Redistribution and use in source and binary forms, with or without       **
-**  modification, are permitted provided that the following conditions       **
-**  are met:                                                                 **
-**  1. Redistributions of source code must retain the above copyright        **
-**     notice, this list of conditions and the following disclaimer.         **
-**  2. Redistributions in binary form must reproduce the above copyright     **
-**     notice, this list of conditions and the following disclaimer in the   **
-**     documentation and/or other materials provided with the distribution.  **
-**  3. The name of the author may not be used to endorse or promote products **
-**     derived from this software without specific prior written permission. **
-**                                                                           **
-**  Alternatively, this software may be distributed under the terms of the   **
-**  GNU General Public License ("GPL") version 2, or (at your option) any    **
-**  later version as published by the Free Software Foundation.              **
-**                                                                           **
-**  In the case this software is distributed under the GPL license,          **
-**  you should have received a copy of the GNU General Public License        **
-**  along with this software; if not, write to the Free Software             **
-**  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  **
-**                                                                           **
-**  THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR       **
-**  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES**
-**  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  **
-**  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,         **
-**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT **
-**  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,**
-**  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY    **
-**  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT      **
-**  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF **
-**  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.        **
-**                                                                           **
-*******************************************************************************
-EH1*/
-
-#ifndef _QTN_CONFIG_H_
-#define _QTN_CONFIG_H_
-
-#define TXBF_6_STA_BF
-
-#endif /* _QTN_CONFIG_H_ */
diff --git a/include/qtn/qtn_debug.h b/include/qtn/qtn_debug.h
index d2b6f7a..3f1b55e 100644
--- a/include/qtn/qtn_debug.h
+++ b/include/qtn/qtn_debug.h
@@ -52,11 +52,7 @@
 stack size is limited to 32.
 When set to 0 AuC formats the output, pass the formatted line to the LHOST that
 prints it. */
-#ifdef TOPAZ_PLATFORM
-	#define AUC_LHOST_PRINT_FORMAT	1
-#else
-	#define AUC_LHOST_PRINT_FORMAT	0
-#endif
+#define AUC_LHOST_PRINT_FORMAT	1
 #define PRINT_STACK_SIZE	32
 
 #if defined(MUC_BUILD)
diff --git a/include/qtn/qtn_decap.h b/include/qtn/qtn_decap.h
index 8389e95..9afffc8 100644
--- a/include/qtn/qtn_decap.h
+++ b/include/qtn/qtn_decap.h
@@ -6,6 +6,7 @@
 #include <net80211/if_llc.h>
 
 #include <qtn/qtn_net_packet.h>
+#include <qtn/qtn_vlan.h>
 
 /*
  * Length of received frame that requires dcache invalidate on receive.
@@ -30,6 +31,7 @@
 	uint16_t	l3_ether_type;		/* l3 header type (may not match eh.ether_type for 802.3 */
 	int8_t		tid;
 	int8_t		nvlans;
+	uint16_t	vlanid;			/* to which VLAN te msdu belongs */
 	uint8_t		first_msdu	:1,	/* first msdu in an amsdu */
 			last_msdu	:1,	/* last msdu in an amsdu */
 			decapped	:1,	/* start is decapped eh, not wireless header */
@@ -81,7 +83,8 @@
  */
 static __inline__ void *
 qtn_rx_decap_set_eth_hdr(struct qtn_rx_decap_info *di, const uint8_t *llc, const uint16_t llclen,
-				uint16_t vlan_mode, uint16_t vid, void *token, void **rate_train)
+				uint16_t pvid, struct qtn_vlan_info *vlan_info, uint8_t vlan_enabled,
+				void *token, void **rate_train)
 {
 	uint16_t *newhdrp = &di->eh.ether_type;
 	int8_t llc_l3_gap = 0;
@@ -90,21 +93,41 @@
 	uint8_t last_byte = llc[5];
 	uint16_t ether_type_eh;
 	bool is_llc_snap_e;
+	uint8_t vlan_hdr = 0;
+	int tagrx;
 
 	ether_type_l3 = (llc[6] << 0) | (llc[7] << 8);
 	ether_type_eh = ether_type_l3;
 
 	di->nvlans = 0;
+	di->vlanid = 0;
+
+	if (ether_type_l3 == htons(ETHERTYPE_8021Q)) {
+		pvid = ((llc[9] << 0) | (llc[8] << 8)) & QVLAN_MASK_VID;
+	}
 
 	/*
 	 * For EAPOL and VLAN frames we do not want to add 802.1Q header.
 	 * Otherwise, the frame won't go through a driver.
 	 */
-	if (vlan_mode && ether_type_l3 != htons(ETHERTYPE_8021Q) &&
-			ether_type_l3 != htons(ETHERTYPE_PAE)) {
-		*newhdrp++ = htons(ETHERTYPE_8021Q);
-		*newhdrp++ = htons(vid);
-		di->nvlans++;
+	if (vlan_enabled) {
+		di->vlanid = pvid;
+		tagrx = qtn_vlan_get_tagrx(vlan_info->vlan_tagrx_bitmap, pvid);
+
+		if (tagrx == QVLAN_TAGRX_TAG) {
+			if (ether_type_l3 != htons(ETHERTYPE_8021Q) &&
+					ether_type_l3 != htons(ETHERTYPE_PAE)) {
+				*newhdrp++ = htons(ETHERTYPE_8021Q);
+				*newhdrp++ = htons(pvid);
+				di->nvlans++;
+			}
+		} else if (tagrx == QVLAN_TAGRX_STRIP) {
+			if (ether_type_l3 == htons(ETHERTYPE_8021Q)) {
+				ether_type_l3 = ((llc[10] << 0) | (llc[11] << 8)) & QVLAN_MASK_VID;
+				ether_type_eh = ether_type_l3;
+				vlan_hdr = 4;
+			}
+		}
 	}
 
 	/*
@@ -132,7 +155,7 @@
 			}
 		}
 
-		llc += LLC_SNAPFRAMELEN;
+		llc += (LLC_SNAPFRAMELEN + vlan_hdr);
 		*newhdrp++ = ether_type_eh;
 	} else {
 		ether_type_eh = htons(llclen);
@@ -170,7 +193,7 @@
 
 QTN_RX_DECAP_FNQUAL int qtn_rx_decap(const struct ieee80211_qosframe_addr4 *const wh_copy,
 		const void *const rxdata, const uint16_t rxlen,
-		const uint16_t vlan_mode, const uint16_t vid,
+		uint16_t pvid, struct qtn_vlan_info *vlan_info, uint8_t vlan_enabled,
 		decap_handler_t handler, void *token, void **rate_train)
 {
 	const uint8_t *llc;
@@ -247,7 +270,7 @@
 		IEEE80211_ADDR_COPY(di->eh.ether_shost, wh_eth_src);
 		llc = ((uint8_t *) rxdata) + header_size;
 		decap_start = qtn_rx_decap_set_eth_hdr(di, llc, rxlen - header_size,
-							vlan_mode, vid, token, rate_train);
+							pvid, vlan_info, vlan_enabled, token, rate_train);
 		if (unlikely(!decap_start)) {
 			return QTN_RX_DECAP_TRAINING;
 		}
@@ -293,7 +316,7 @@
 			/* decapped length includes subframe padding */
 			total_decapped_len = ((uint8_t *)next_msdu_header) - ((uint8_t *)rxdata);
 
-			decap_start = qtn_rx_decap_set_eth_hdr(di, llc, msdu_len, vlan_mode, vid,
+			decap_start = qtn_rx_decap_set_eth_hdr(di, llc, msdu_len, pvid, vlan_info, vlan_enabled,
 								token, rate_train);
 			if (unlikely(!decap_start)) {
 				return QTN_RX_DECAP_TRAINING;
diff --git a/include/qtn/qtn_global.h b/include/qtn/qtn_global.h
index 5c941ec..c1f5aba 100644
--- a/include/qtn/qtn_global.h
+++ b/include/qtn/qtn_global.h
@@ -23,8 +23,13 @@
 #define QTN_AC_BE_INHERIT_Q2Q_DISABLE		0
 #define QTN_TXBF_IOT_DISABLE                    0
 #define QTN_TXBF_IOT_ENABLE                     1
-#define QTN_GLOBAL_MU_ENABLE                    1
-#define QTN_GLOBAL_MU_DISABLE                   0
+#define QTN_GLOBAL_MU_ENABLE			1
+#define QTN_GLOBAL_MU_DISABLE			0
+#define QTN_GLOBAL_MU_INITIAL_STATE		QTN_GLOBAL_MU_DISABLE
+
+#define QTN_AUTO_CS_ENABLE			1
+#define QTN_AUTO_CS_DISABLE			0
+
 /*
  * The MuC TX Queuing algorithm is selected by setting
  * g_tx_queuing_alg. Values are:
@@ -51,7 +56,8 @@
 #define QDRV_TX_LOW_RATE_TOKENS_MAX		QTN_TX_BUF_RETURN_MIN + 28
 
 #define QTN_GLOBAL_RATE_NSS_MAX		4
-#define QTN_2X2_GLOBAL_RATE_NSS_MAX     2
+#define QTN_2X2_GLOBAL_RATE_NSS_MAX	2
+#define QTN_3X3_GLOBAL_RATE_NSS_MAX	3
 #define QTN_RX_REORDER_BUF_TIMEOUT_US	800000
 #define QTN_PROBE_RES_MAX_RETRY_COUNT	4
 #define QTN_TX_SWRETRY_AGG_MAX		8	/* high value for zero PER */
@@ -73,19 +79,10 @@
 #define QTN_TX_AMSDU_ADAPTIVE		1
 #define QTN_TX_AMSDU_FIXED		0xff
 
-#ifdef TOPAZ_PLATFORM
 #define QTN_SEL_PPPC_STEP_DEF		1
 #define QTN_SEL_PPPC_MAX_STEPS		4
-#else
-#define QTN_SEL_PPPC_STEP_DEF		2
-#define QTN_SEL_PPPC_MAX_STEPS		3
-#endif
 
-#ifdef TOPAZ_PLATFORM
 #define QTN_TX_AUC_DEFAULT		1
-#else
-#define QTN_TX_AUC_DEFAULT		0
-#endif
 
 #define QTN_INST_1SS_DEF_MAT_THRESH_DEFAULT	2	/* dbm */
 
@@ -105,6 +102,7 @@
 #define QTN_DBG_MODE_TX_PKT_LOSS		0x00000004
 #define QTN_DBG_MODE_DELBA_ON_TX_PKT_LOSS	0x00000008
 #define QTN_DBG_MODE_CCA_FORCE			0x00000010
+#define QTN_DBG_MODE_INJECT_INV_NDP		0x00000020
 
 #define QTN_DBG_FD_CHECK_PERIODIC	0x00000001
 #define QTN_DBG_FD_DUMP_OLD		0x00000002
@@ -123,6 +121,9 @@
 #define QTN_RX_GAIN_MIN_THRESHOLD		16
 #define QTN_RX_GAIN_MAX_THRESHOLD		44
 #define QTN_RX_GAIN_TIMER_INTV			1000 /* msecs */
+/* counter for delay in RFIC6 500Mhz */
+#define QTN_RFIC6_DELAY_MICRO_S			500
+#define QTN_RFIC6_DELAY_MILI_S			QTN_RFIC6_DELAY_MICRO_S * 1000
 
 #define SIZE_D1(x)	(sizeof(x)/sizeof(x[0]))
 #define SIZE_D2(x)	(sizeof(x[0])/sizeof(x[0][0]))
@@ -154,9 +155,8 @@
 	uint32_t	oc_sp_cnt;
 	uint32_t	oc_cca_pri;
 	uint32_t	oc_cca_sec;
-#ifdef TOPAZ_PLATFORM
 	uint32_t	oc_cca_sec40;
-#endif
+	uint32_t	oc_cca_busy;
 	uint32_t	oc_cca_smpl;
 	uint32_t	oc_cca_try;
 	uint32_t	oc_bcn_recvd;
@@ -165,17 +165,15 @@
 struct qtn_cca_counts {
 	uint32_t	cca_pri_cnt;
 	uint32_t	cca_sec_cnt;
-#ifdef TOPAZ_PLATFORM
 	uint32_t	cca_sec40_cnt;
-#endif
+	uint32_t	cca_busy_cnt;
 	uint32_t	cca_sample_cnt;
 	uint32_t	cca_try_cnt;
 	uint32_t	cca_csw_cnt;
 	uint32_t	cca_off_pri_cnt;
 	uint32_t	cca_off_sec_cnt;
-#ifdef TOPAZ_PLATFORM
 	uint32_t	cca_off_sec40_cnt;
-#endif
+	uint32_t	cca_off_busy_cnt;
 	uint32_t	cca_off_sample_cnt;
 	uint32_t	cca_off_res_cnt;
 	uint32_t	cca_off_try_cnt;
@@ -186,9 +184,7 @@
 	uint32_t	cca_sample_period;
 	uint32_t	cca_pri_cnt;
 	uint32_t	cca_sec_cnt;
-#ifdef TOPAZ_PLATFORM
 	uint32_t	cca_sec40_cnt;
-#endif
 	uint32_t	cca_sample_cnt;
 	uint32_t	cca_try_cnt;
 	uint32_t	cca_csw_cnt;
@@ -199,6 +195,10 @@
 	uint32_t	cca_tx_cnt;
 	uint32_t	rx_time_cnt;
 	uint32_t	tx_time_cnt;
+	uint32_t	cca_pri;
+	uint32_t	cca_sec;
+	uint32_t	cca_sec40;
+	uint32_t	cca_busy;
 	uint32_t	cca_fat;
 	uint32_t	cca_intf;
 	uint32_t	cca_trfc;
@@ -207,9 +207,8 @@
 struct qtn_scs_params {
 	uint32_t	cca_pri_cnt;
 	uint32_t	cca_sec_cnt;
-#ifdef TOPAZ_PLATFORM
 	uint32_t	cca_sec40_cnt;
-#endif
+	uint32_t	cca_busy_cnt;
 	uint32_t	cca_sample_cnt;
 	uint32_t	cca_try_cnt;
 	uint32_t	cca_csw_cnt;
@@ -237,9 +236,8 @@
 	uint32_t	intf_ms;
 	uint32_t	cca_pri_cnt;
 	uint32_t	cca_sec_cnt;
-#ifdef TOPAZ_PLATFORM
 	uint32_t	cca_sec40_cnt;
-#endif
+	uint32_t	cca_busy_cnt;
 	uint32_t	cca_sample_cnt;
 	uint32_t	cca_try_cnt;
 	uint32_t	cca_csw_cnt;
@@ -257,6 +255,7 @@
 
 
 struct qtn_auto_cca_params {
+#define QTN_AUTO_CCA_FLAGS_DISABLE			0x0
 #define QTN_AUTO_CCA_FLAGS_ENABLE			0x1
 #define QTN_AUTO_CCA_FLAGS_DEBUG			0x2
 #define QTN_AUTO_CCA_FLAGS_SAMPLE_ONLY			0x4
@@ -348,6 +347,11 @@
 	uint8_t		g_l2_ext_filter;	/* L2 external filter */
 	uint8_t		g_l2_ext_filter_port;	/* L2 external filter port */
 	uint8_t		g_rate_train_dbg;
+	uint8_t		g_rx_optim_pkt_stats;
+	uint8_t		g_mrc_enable;
+	uint32_t	g_auto_cs_enable;	/* enable/disable auto cs threshold */
+	uint8_t		g_beaconing_scheme;
+	uint32_t	g_muc_sys_dbg;
 	char		*g_last_field;		/* Add all new fields before this one */
 };
 
@@ -413,15 +417,20 @@
 	QTN_AUTO_CCA_PARARMS_DEFAULT,		\
 	{0, 0, 0x0842, 0xffff},			\
 	0,					\
-	QTN_AUC_AIRFAIR_DFT,					\
+	QTN_AUC_AIRFAIR_DFT,			\
 	0,					\
 	QTN_NDPA_IN_LEGACY_FORMAT,		\
 	1,					\
 	QTN_INST_1SS_DEF_MAT_THRESH_DEFAULT,	\
-	QTN_GLOBAL_MU_DISABLE,			\
+	QTN_GLOBAL_MU_INITIAL_STATE,		\
 	0,					\
 	TOPAZ_TQE_EMAC_0_PORT,			\
 	0,					\
+	0,					\
+	1,					\
+	QTN_AUTO_CS_ENABLE,			\
+	0,					\
+	0,					\
 	"end"					\
 }
 
@@ -432,6 +441,7 @@
 extern uint32_t g_qtn_rxtime_usecs;
 extern uint32_t g_qtn_txtime_usecs;
 extern uint32_t g_rf_xmit_status;
+extern int vlan_enabled_bus;
 
 #endif	/* defined(MUC_BUILD) */
 
@@ -446,21 +456,20 @@
 #define M_AGE_SUB(skb,adj)	(skb->skb_age -= adj)
 
 #define QTN_2G_FIRST_OPERATING_CHAN 1
-#define QTN_2G_LAST_OPERATING_CHAN  13
+#define QTN_2G_LAST_OPERATING_CHAN  14
 #define QTN_5G_FIRST_OPERATING_CHAN 36
 #define QTN_5G_LAST_UNII1_OPERATING_CHAN 48
 #define QTN_5G_LAST_UNII2_OPERATING_CHAN 140
 #define QTN_5G_LAST_OPERATING_CHAN  169
 
-/* RFIC5 chip ID */
+/* RFIC chip ID */
 #define RFIC5_EAGLE_PROJ_ID (2)
+#define RFIC6_PROJ_ID (3)
 
 /* MU-MIMO WMAC index */
 enum {
 	WMAC_ID_0	= 0,
-#ifdef TOPAZ_PLATFORM
 	WMAC_ID_1	= 1,
-#endif
 	WMAC_ID_MAX
 };
 
diff --git a/include/qtn/qtn_muc_stats_print.h b/include/qtn/qtn_muc_stats_print.h
index c62e81d..6c663f9 100644
--- a/include/qtn/qtn_muc_stats_print.h
+++ b/include/qtn/qtn_muc_stats_print.h
@@ -53,6 +53,8 @@
 	"txdone_mgmt", \
 	"txdone_data", \
 	"tx_pwr", \
+	"bcn_scheme_power_save", \
+	"bcn_scheme", \
 	"tx_mcast_pwr", \
 	"tx_mcast_defer", \
 	"tx_mcast_defer_hwq", \
@@ -100,24 +102,17 @@
 	"off_chan_sample", \
 	"off_chan_scan", \
 	"off_chan_cac", \
+	"cca_pri", \
+	"cca_sec", \
+	"cca_sec40", \
+	"cca_busy", \
 	"cca_fat", \
 	"cca_intf", \
 	"cca_trfc", \
-	"mu_qtn_hardstart", \
-	"mu_no_buddy", \
-	"mu_buddy_mgmt", \
-	"mu_buddy_mismatch", \
-	"mu_push_to_hw", \
-	"mu_to_su_hw", \
-	"mu_txdone_buddy", \
-	"mu_no_bar", \
-	"mu_bar_acquire", \
-	"mu_bar_release", \
-	"mu_wmac0_retry", \
-	"mu_wmac1_retry", \
-	"mu_reservetx_fail", \
 	"mu_prec_snd_tx", \
+	"mu_prec_snd_wait_done", \
 	"mu_grp_sel_snd_tx", \
+	"mu_grp_sel_snd_wait_done", \
 	"oc_auctx_timeout", \
 	"oc_auctx_overwrite", \
 	"oc_auctx_fail", \
@@ -155,11 +150,26 @@
 	"sfs_dyn_wmm_flags", \
 	"auc_wmm_ps_notify", \
 	"tx_wmm_ps_null_frames", \
+	"qtn_bcn_stop", \
+	"mu_grp_snd_queue_is_not_empty", \
+	"mu_prec_snd_queue_is_not_empty", \
+	"autocs_sample_bits", \
+	"autocs_adjust_bits", \
+	"autocs_step_size", \
+	"autocs_cs_thresh", \
+	"autocs_min_rssi", \
+	"bmps_null_tx_success", \
+	"bmps_null_tx_fail", \
+	"bmps_null_tx_timeout", \
+	"txqueue_g1q0_deadline_frozen", \
+	"auc_ipc_retry", \
+	"auc_ipc_hwm", \
+	"auc_ipc_send_delay", \
+	"auc_ipc_send_delay_hwm", \
 }
 
 #define MUC_RX_STATS_NAMES_TABLE { \
 	"rxdesc_pop_from_host", \
-	"rxdesc_push_to_hw", \
 	"rxdesc_get_from_queue", \
 	"rxdesc_push_to_host", \
 	"rxdesc_non_aggr_push_to_host", \
@@ -402,9 +412,13 @@
 	"rxq_process_limited[0]", \
 	"rxq_process_limited[1]", \
 	"rxq_process_limited[2]", \
+	"rxq_desc_chain_empty[0]", \
+	"rxq_desc_chain_empty[1]", \
+	"rxq_desc_chain_empty[2]", \
 	"rx_data_last_seqfrag", \
 	"rx_data_last_ip_id", \
 	"accel_l2_ext_filter", \
 	"accel_mc_send_l2_ext_filter", \
 	"accel_mc_drop_l2_ext_filter", \
+	"rx_frame_addressed_to_wrong_bss", \
 }
diff --git a/include/qtn/qtn_net_packet.h b/include/qtn/qtn_net_packet.h
index f60e1c2..3ebc872 100644
--- a/include/qtn/qtn_net_packet.h
+++ b/include/qtn/qtn_net_packet.h
@@ -3,15 +3,45 @@
 
 #include <qtn/qtn_global.h>
 
+#ifndef ETHERTYPE_ARP
 #define	ETHERTYPE_ARP	0x0806		/* ARP protocol */
+#endif
+
+#ifndef ETHERTYPE_AARP
 #define ETHERTYPE_AARP	0x80f3		/* Appletalk AARP */
+#endif
+
+#ifndef ETHERTYPE_PAE
 #define	ETHERTYPE_PAE	0x888e		/* EAPOL PAE/802.1x */
+#endif
+
+#ifndef ETHERTYPE_IP
 #define	ETHERTYPE_IP	0x0800		/* IP protocol */
+#endif
+
+#ifndef ETHERTYPE_IPV6
 #define	ETHERTYPE_IPV6	0x86DD		/* IPv6 protocol */
+#endif
+
+#ifndef ETHERTYPE_IPX
 #define ETHERTYPE_IPX	0x8137		/* IPX over DIX */
+#endif
+
+#ifndef ETHERTYPE_802A
 #define ETHERTYPE_802A	0x88B7
+#endif
+
+#ifndef ETHERTYPE_8021Q
 #define	ETHERTYPE_8021Q	0x8100          /* 802.1Q VLAN header */
+#endif
+
+#ifndef ETHERTYPE_8021AD
+#define ETHERTYPE_8021AD	0x88A8  /* 802.1AD VLAN S-TAG header */
+#endif
+
+#ifndef ETHERTYPE_WAKE_ON_LAN
 #define ETHERTYPE_WAKE_ON_LAN	0X0842
+#endif
 
 union qtn_ipv4_addr {
 	uint32_t ip32;
@@ -131,5 +161,11 @@
 	return ((ipv4[1] >> 7) | (ipv4[0] & 0xF) << 1);
 }
 
+RUBY_INLINE uint8_t qtn_ether_type_is_vlan(const uint16_t type)
+{
+	return ((type == htons(ETHERTYPE_8021Q))
+			|| (type == htons(ETHERTYPE_8021AD)));
+}
+
 #endif	// __QTN_NET_PACKET_H__
 
diff --git a/include/qtn/qtn_skb_cb.h b/include/qtn/qtn_skb_cb.h
index d27a36f..41da785 100644
--- a/include/qtn/qtn_skb_cb.h
+++ b/include/qtn/qtn_skb_cb.h
@@ -38,6 +38,8 @@
 #define M_ENQUEUED_SCH		0x0800	/* Enqueued in qdrv_sch */
 #define M_ENQUEUED_MUC		0x1000	/* Enqueued to MuC */
 #define	M_TX_DONE_IMM_INT	0x2000	/* Immediately interrupt lhost when tx done */
+#define M_VLAN_TAGGED		0x4000	/* skb belongs to some VLAN */
+#define M_VLAN_TAG_OWE		0x8000	/* VLAN tag is stripped of this skb */
 };
 
 #define QTN_SKB_ENCAP_ETH		0
diff --git a/include/qtn/qtn_uc_comm.h b/include/qtn/qtn_uc_comm.h
index 9f11482..3c35434 100644
--- a/include/qtn/qtn_uc_comm.h
+++ b/include/qtn/qtn_uc_comm.h
@@ -7,7 +7,7 @@
 
 #define MAC_UNITS		1
 
-#if defined(TOPAZ_PLATFORM) && defined(TOPAZ_128_NODE_MODE)
+#if defined(TOPAZ_128_NODE_MODE)
 #define QTN_NCIDX_MAX			128
 #define QTN_NODE_TBL_SIZE_LHOST		118
 #define QTN_NODETID_NODE_SHIFT		7
diff --git a/include/qtn/qtn_vlan.h b/include/qtn/qtn_vlan.h
index f48bf23..f9d71e4 100644
--- a/include/qtn/qtn_vlan.h
+++ b/include/qtn/qtn_vlan.h
@@ -9,10 +9,19 @@
 #include "../common/ruby_mem.h"
 #include <qtn/qtn_debug.h>
 #include <qtn/qtn_uc_comm.h>
+#include <qtn/qtn_net_packet.h>
+#if defined(__KERNEL__) || defined(MUC_BUILD) || defined(AUC_BUILD)
+#include <qtn/topaz_tqe_cpuif.h>
+#endif
+#if defined(__KERNEL__)
+#include <qtn/dmautil.h>
+#endif
 
-#define QVLAN_MODE_PTHRU		0
-#define QVLAN_MODE_MBSS			1
-#define QVLAN_MODE_DYNAMIC		2
+#define QVLAN_MODE_ACCESS		0
+#define QVLAN_MODE_TRUNK		1
+#define QVLAN_MODE_HYBRID		2
+#define QVLAN_MODE_DYNAMIC		3
+#define QVLAN_MODE_MAX			QVLAN_MODE_DYNAMIC
 #define QVLAN_SHIFT_MODE		16
 #define QVLAN_MASK_MODE			0xffff0000
 #define QVLAN_MASK_VID			0x00000fff
@@ -20,19 +29,9 @@
 #define QVLAN_MODE(x)			(uint16_t)((x) >> QVLAN_SHIFT_MODE)
 #define QVLAN_VID(x)			(uint16_t)((x) & QVLAN_MASK_VID)
 
-#define QVLAN_CMD_PTHRU			0
-#define QVLAN_CMD_UNPTHRU		1
-#define QVLAN_CMD_PTHRU_ALL		2
-#define QVLAN_CMD_UNPTHRU_ALL		3
-#define QVLAN_CMD_BIND			4
-#define QVLAN_CMD_UNBIND		5
-#define QVLAN_CMD_ENABLE		6
-#define QVLAN_CMD_DISABLE		7
-#define QVLAN_CMD_DYNAMIC		8
-#define QVLAN_CMD_UNDYNAMIC		9
-
-#define QVLAN_MODE_STR_BIND	"MBSS (Access) mode"
-#define QVLAN_MODE_STR_PTHRU	"Passthrough (Trunk) mode"
+#define QVLAN_MODE_STR_ACCESS	"Access mode"
+#define QVLAN_MODE_STR_TRUNK	"Trunk mode"
+#define QVLAN_MODE_STR_HYBRID	"Hybrid mode"
 #define QVLAN_MODE_STR_DYNAMIC	"Dynamic mode"
 
 /* default port vlan id */
@@ -42,9 +41,112 @@
 #define QVLAN_VID_MAX_S			12
 #define QVLAN_VID_ALL			0xffff
 
+#ifndef NBBY
+#define NBBY		8
+#endif
+
+#ifndef NBDW
+#define NBDW		32
+#endif
+
+#ifdef CONFIG_TOPAZ_DBDC_HOST
+#define VLAN_INTERFACE_MAX	(QTN_MAX_VAPS + 2 + MAX_QFP_NETDEV)
+#define QFP_VDEV_IDX(dev_id)	(QTN_MAX_VAPS + 2 + (dev_id))
+#else
+#define VLAN_INTERFACE_MAX	(QTN_MAX_VAPS + 2)
+#endif
+#define WMAC_VDEV_IDX_MAX	QTN_MAX_VAPS
+#define EMAC_VDEV_IDX(port)	(QTN_MAX_VAPS + (port))
+#define PCIE_VDEV_IDX		(QTN_MAX_VAPS + 0)
+
+#ifndef howmany
+#define howmany(x, y)			(((x) + ((y) - 1)) / (y))
+#endif
+
+#define bitsz_var(var)			(sizeof(var) * 8)
+#define bitsz_ptr(ptr)			bitsz_var((ptr)[0])
+
+#define set_bit_a(a, i)			((a)[(i) / bitsz_ptr(a)] |= 1 << ((i) % bitsz_ptr(a)))
+#define clr_bit_a(a, i)			((a)[(i) / bitsz_ptr(a)] &= ~(1 << ((i) % bitsz_ptr(a))))
+#define is_set_a(a, i)			((a)[(i) / bitsz_ptr(a)] & (1 << ((i) % bitsz_ptr(a))))
+#define is_clr_a(a, i)			(is_set_a(a, i) == 0)
+
+struct qtn_vlan_stats {
+	uint32_t lhost;
+	uint32_t auc;
+	uint32_t muc;
+};
+
+struct qtn_vlan_user_interface {
+	unsigned long bus_addr;
+	uint8_t mode;
+};
+
+struct qtn_vlan_dev {
+	uint8_t		idx;
+	uint8_t		port;
+	uint16_t	pvid;
+#define QVLAN_DEV_F_DYNAMIC	BIT(0)
+	uint32_t	flags;
+	unsigned long	bus_addr;
+	int		ifindex;
+	union {
+		uint32_t	member_bitmap[howmany(QVLAN_VID_MAX, NBDW)];
+		uint16_t	node_vlan[QTN_NCIDX_MAX];
+	}u;
+	uint32_t	tag_bitmap[howmany(QVLAN_VID_MAX, NBDW)];
+	struct qtn_vlan_stats ig_pass;
+	struct qtn_vlan_stats ig_drop;
+	struct qtn_vlan_stats eg_pass;
+	struct qtn_vlan_stats eg_drop;
+	void		*user_data;
+};
+#define QVLAN_IS_DYNAMIC(vdev)		((vdev)->flags & QVLAN_DEV_F_DYNAMIC)
+
+struct qtn_vlan_pkt {
+#define QVLAN_PKT_MAGIC			0x1234
+	uint16_t	magic;
+#define QVLAN_TAGGED			0x8000
+#define QVLAN_SKIP_CHECK		0x4000
+	uint16_t	vlan_info;
+} __packed;
+
+#define QVLAN_PKTCTRL_LEN	sizeof(struct qtn_vlan_pkt)
+
+struct qtn_vlan_info {
+#define QVLAN_TAGRX_UNTOUCH		0
+#define QVLAN_TAGRX_STRIP		1
+#define QVLAN_TAGRX_TAG			2
+#define QVLAN_TAGRX_BITMASK		0x3
+#define QVLAN_TAGRX_BITWIDTH		2
+#define QVLAN_TAGRX_BITSHIFT		1
+#define QVLAN_TAGRX_NUM_PER_DW		(32 / QVLAN_TAGRX_BITWIDTH)
+#define QVLAN_TAGRX_NUM_PER_DW_S	4
+	uint32_t vlan_tagrx_bitmap[howmany(QVLAN_VID_MAX * QVLAN_TAGRX_BITWIDTH, NBDW)];
+};
+
+RUBY_INLINE int qvlan_tagrx_index(int vid)
+{
+	return (vid >> QVLAN_TAGRX_NUM_PER_DW_S);
+}
+
+RUBY_INLINE int qvlan_tagrx_shift(int vid)
+{
+	int shift;
+
+	shift = vid & (QVLAN_TAGRX_NUM_PER_DW - 1);
+	return (shift << QVLAN_TAGRX_BITSHIFT);
+}
+
 struct qtn_vlan_config {
-	uint32_t vlan_cfg;
-	uint8_t vlan_bitmap[QVLAN_VID_MAX / 7 + 1];
+	uint32_t	vlan_cfg;
+	union {
+		struct vlan_dev_config {
+			uint32_t	member_bitmap[howmany(QVLAN_VID_MAX, NBDW)];
+			uint32_t	tag_bitmap[howmany(QVLAN_VID_MAX, NBDW)];
+		} dev_config;
+		uint32_t	tagrx_config[howmany(QVLAN_VID_MAX * QVLAN_TAGRX_BITWIDTH, NBDW)];
+	} u;
 };
 
 /*
@@ -71,25 +173,51 @@
 RUBY_INLINE int
 qtn_vlan_is_valid(int vid)
 {
-	return (vid >= 0 && vid < QVLAN_VID_MAX);
+	/* VLAN ID 0 is reserved */
+	return (vid > 0 && vid < QVLAN_VID_MAX);
 }
 
 RUBY_INLINE int
-qtn_vlan_is_allowed(volatile uint8_t *vlan_bitmap, uint16_t vid, uint8_t vapid)
+qtn_vlan_is_member(volatile struct qtn_vlan_dev *vdev, uint16_t vid)
 {
-	return !!(vlan_bitmap[(vid << QVLAN_BYTES_PER_VID_SHIFT) + (vapid >> 3)] & BIT(vapid & (8 - 1)));
+	return !!is_set_a(vdev->u.member_bitmap, vid);
 }
 
-RUBY_INLINE void
-qtn_vlan_allow(uint8_t *vlan_bitmap, uint16_t vid, uint8_t vapid)
+RUBY_INLINE int
+qtn_vlan_is_tagged_member(volatile struct qtn_vlan_dev *vdev, uint16_t vid)
 {
-	vlan_bitmap[(vid << QVLAN_BYTES_PER_VID_SHIFT) + (vapid >> 3)] |= BIT(vapid & (8 - 1));
+	return !!is_set_a(vdev->tag_bitmap, vid);
 }
 
-RUBY_INLINE void
-qtn_vlan_disallow(uint8_t *vlan_bitmap, uint16_t vid, uint8_t vapid)
+RUBY_INLINE int
+qtn_vlan_is_pvid(volatile struct qtn_vlan_dev *vdev, uint16_t vid)
 {
-	vlan_bitmap[(vid << QVLAN_BYTES_PER_VID_SHIFT) + (vapid >> 3)] &= ~BIT(vapid & (8 - 1));
+	return vdev->pvid == vid;
+}
+
+RUBY_INLINE int
+qtn_vlan_is_mode(volatile struct qtn_vlan_dev *vdev, uint16_t mode)
+{
+	return ((struct qtn_vlan_user_interface *)vdev->user_data)->mode == mode;
+}
+
+#if defined(__KERNEL__) || defined(MUC_BUILD) || defined(AUC_BUILD)
+RUBY_INLINE int
+qtn_vlan_port_indexable(uint8_t port)
+{
+	return ((port == TOPAZ_TQE_EMAC_0_PORT)
+		|| (port == TOPAZ_TQE_EMAC_1_PORT)
+		|| (port == TOPAZ_TQE_PCIE_PORT)
+		|| (port == TOPAZ_TQE_DSP_PORT));
+}
+#endif
+
+RUBY_INLINE int
+qtn_vlan_get_tagrx(uint32_t *tagrx_bitmap, uint16_t vlanid)
+{
+	return (tagrx_bitmap[vlanid >> QVLAN_TAGRX_NUM_PER_DW_S] >>
+				((vlanid & (QVLAN_TAGRX_NUM_PER_DW - 1)) << QVLAN_TAGRX_BITSHIFT)) &
+		QVLAN_TAGRX_BITMASK;
 }
 
 RUBY_INLINE void
@@ -115,4 +243,165 @@
 		&& mac[4] != 0xff);
 }
 
+#if defined(__KERNEL__) || defined(MUC_BUILD) || defined(AUC_BUILD)
+RUBY_INLINE struct qtn_vlan_pkt*
+qtn_vlan_get_info(const void *data)
+{
+	struct qtn_vlan_pkt *pkt;
+#if defined(AUC_BUILD)
+#pragma Off(Behaved)
+#endif
+	pkt = (struct qtn_vlan_pkt *)((const uint8_t *)data - QVLAN_PKTCTRL_LEN);
+#if defined(AUC_BUILD)
+#pragma On(Behaved)
+#endif
+	return pkt;
+}
+
+RUBY_INLINE int
+qtn_vlan_magic_check(struct qtn_vlan_pkt *pkt)
+{
+#define QVLAN_EGRESS_MAGIC_MSG	"VLAN-egress: magic number incorrect(0x%04x)\n"
+
+	if (unlikely(pkt->magic != QVLAN_PKT_MAGIC)) {
+#if defined (__KERNEL__)
+		printk(KERN_WARNING QVLAN_EGRESS_MAGIC_MSG, pkt->magic);
+#elif defined(AUC_BUILD)
+		auc_os_printf(QVLAN_EGRESS_MAGIC_MSG, pkt->magic);
+#elif defined(MUC_BUILD)
+		uc_printk(QVLAN_EGRESS_MAGIC_MSG, pkt->magic);
+#endif
+		return 0;
+	}
+
+	return 1;
+}
+
+RUBY_INLINE void
+qtn_vlan_inc_stats(struct qtn_vlan_stats *stats) {
+#if defined(__KERNEL__)
+	stats->lhost++;
+#elif defined(AUC_BUILD)
+	stats->auc++;
+#elif defined(MUC_BUILD)
+	stats->muc++;
+#endif
+}
+
+RUBY_INLINE int
+qtn_vlan_vlanid_check(struct qtn_vlan_dev *vdev, uint16_t ncidx, uint16_t vlanid)
+{
+	if (QVLAN_IS_DYNAMIC(vdev))
+		return (vdev->u.node_vlan[ncidx] == vlanid);
+	else
+		return qtn_vlan_is_member(vdev, vlanid);
+}
+
+RUBY_INLINE int
+qtn_vlan_egress(struct qtn_vlan_dev *outdev, uint16_t ncidx, void *data)
+{
+	struct qtn_vlan_pkt *pkt = qtn_vlan_get_info(data);
+
+	if (!qtn_vlan_magic_check(pkt)
+			|| (pkt->vlan_info & QVLAN_SKIP_CHECK)
+			|| qtn_vlan_vlanid_check(outdev, ncidx, pkt->vlan_info & QVLAN_MASK_VID)) {
+		qtn_vlan_inc_stats(&outdev->eg_pass);
+		return 1;
+	}
+
+	qtn_vlan_inc_stats(&outdev->eg_drop);
+	return 0;
+}
+#endif
+
+#if defined(__KERNEL__) || defined(MUC_BUILD)
+RUBY_INLINE int
+qtn_vlan_ingress(struct qtn_vlan_dev *indev, uint16_t ncidx,
+		void *data, uint16_t known_vlanid, uint8_t cache_op)
+{
+	struct ether_header *eh = (struct ether_header *)data;
+	struct qtn_vlan_pkt *pkt = qtn_vlan_get_info(data);
+	uint16_t vlanid;
+	const uint16_t magic = QVLAN_PKT_MAGIC;
+
+	if (eh->ether_type == htons(ETHERTYPE_8021Q)) {
+		vlanid = ntohs(*(uint16_t *)(eh + 1)) & QVLAN_MASK_VID;
+
+		if (!qtn_vlan_vlanid_check(indev, ncidx, vlanid)) {
+			qtn_vlan_inc_stats(&indev->ig_drop);
+			return 0;
+		}
+
+		vlanid |= QVLAN_TAGGED;
+	} else if (known_vlanid) {
+		vlanid = known_vlanid;
+
+		if (!qtn_vlan_vlanid_check(indev, ncidx, vlanid)) {
+			qtn_vlan_inc_stats(&indev->ig_drop);
+			return 0;
+		}
+	} else {
+		vlanid = indev->pvid;
+	}
+
+	pkt->magic = magic;
+	pkt->vlan_info = vlanid;
+
+	if (cache_op) {
+#if defined(__KERNEL__)
+		flush_and_inv_dcache_sizerange_safe(pkt, QVLAN_PKTCTRL_LEN);
+#elif defined(MUC_BUILD)
+		flush_and_inv_dcache_range_safe(pkt, QVLAN_PKTCTRL_LEN);
+#endif
+	}
+
+	qtn_vlan_inc_stats(&indev->ig_pass);
+	return 1;
+}
+#endif
+
+RUBY_INLINE int
+qtn_vlancfg_reform(struct qtn_vlan_config *vcfg)
+{
+	/* remove 0,15,16,31 bits to restore vlan_cfg */
+	vcfg->vlan_cfg &= 0x7ffe7ffe;
+	vcfg->vlan_cfg >>= 1;
+
+	return ((vcfg->vlan_cfg & QVLAN_MASK_MODE) >> QVLAN_SHIFT_MODE);
+}
+
+#if defined(__KERNEL__)
+extern uint8_t vlan_enabled;
+extern struct qtn_vlan_dev *vdev_tbl_lhost[VLAN_INTERFACE_MAX];
+extern struct qtn_vlan_dev *vdev_tbl_bus[VLAN_INTERFACE_MAX];
+extern struct qtn_vlan_dev *vport_tbl_lhost[TOPAZ_TQE_NUM_PORTS];
+extern struct qtn_vlan_dev *vport_tbl_bus[TOPAZ_TQE_NUM_PORTS];
+extern struct qtn_vlan_info qtn_vlan_info;
+
+extern struct qtn_vlan_dev *switch_alloc_vlan_dev(uint8_t port, uint8_t idx, int ifindex);
+extern void switch_free_vlan_dev(struct qtn_vlan_dev *dev);
+extern void switch_free_vlan_dev_by_idx(uint8_t idx);
+extern struct qtn_vlan_dev *switch_vlan_dev_get_by_port(uint8_t port);
+extern struct qtn_vlan_dev *switch_vlan_dev_get_by_idx(uint8_t idx);
+
+extern int switch_vlan_add_member(struct qtn_vlan_dev *vdev, uint16_t vid, uint8_t tag);
+extern int switch_vlan_del_member(struct qtn_vlan_dev *vdev, uint16_t vid);
+extern int switch_vlan_tag_member(struct qtn_vlan_dev *vdev, uint16_t vid);
+extern int switch_vlan_untag_member(struct qtn_vlan_dev *vdev, uint16_t vid);
+extern int switch_vlan_set_pvid(struct qtn_vlan_dev *vdev, uint16_t vid);
+
+/* dynamic VLAN support */
+extern void switch_vlan_dyn_enable(struct qtn_vlan_dev *vdev);
+extern void switch_vlan_dyn_disable(struct qtn_vlan_dev *vdev);
+extern int switch_vlan_set_node(struct qtn_vlan_dev *vdev, uint16_t ncidx, uint16_t vlan);
+extern int switch_vlan_clr_node(struct qtn_vlan_dev *vdev, uint16_t ncidx);
+
+extern int switch_vlan_is_local(const uint8_t *data);
+extern struct sk_buff *switch_vlan_strip_tag(struct sk_buff *, int copy);
+extern struct sk_buff *switch_vlan_restore_tag(struct sk_buff *, int copy);
+extern void switch_vlan_reset(void);
+extern void switch_vlan_dev_reset(struct qtn_vlan_dev *vdev, uint8_t mode);
+extern void switch_vlan_emac_to_lhost(uint32_t enable);
+#endif
+
 #endif
diff --git a/include/qtn/qtn_wmm_ac.h b/include/qtn/qtn_wmm_ac.h
index a2b12a0..bab24ee 100644
--- a/include/qtn/qtn_wmm_ac.h
+++ b/include/qtn/qtn_wmm_ac.h
@@ -71,4 +71,9 @@
 	 ((_ac) == WME_AC_BK) ? 0 :	\
 	  (_ac))
 
+#define QTN_TID_MAP_UNUSED(_tid) ( \
+	(_tid == QTN_TID_2) ? QTN_TID_BK : \
+	(_tid == QTN_TID_3) ? QTN_TID_BE : \
+	(_tid))
+
 #endif	/* _QTN_WMM_AC_H */
diff --git a/include/qtn/shared_defs.h b/include/qtn/shared_defs.h
index d3fb651..ee1483a 100644
--- a/include/qtn/shared_defs.h
+++ b/include/qtn/shared_defs.h
@@ -49,11 +49,7 @@
 
 #include "shared_defs_common.h"
 
-#ifdef TOPAZ_PLATFORM
 #define QTN_SWITCH_CHANNEL_TIME_AVG	3750	/* microseconds */
-#else
-#define QTN_SWITCH_CHANNEL_TIME_AVG	3500	/* microseconds */
-#endif
 
 #define IEEE80211_MAX_NAV	32767
 
@@ -89,6 +85,7 @@
 	IEEE80211_SCS_SET_CHAN_MTRC_MRGN,
 	IEEE80211_SCS_SET_RSSI_SMTH_FCTR,
 	IEEE80211_SCS_SET_ATTEN_ADJUST,
+	IEEE80211_SCS_SET_ATTEN_SWITCH_ENABLE,
 	IEEE80211_SCS_SET_THRSHLD_ATTEN_INC,
 	IEEE80211_SCS_SET_THRSHLD_DFS_REENTRY,
 	IEEE80211_SCS_SET_THRSHLD_DFS_REENTRY_MINRATE,
@@ -113,6 +110,10 @@
 	IEEE80211_SCS_SET_AS_RX_TIME_SMTH_FCTR,
 	IEEE80211_SCS_SET_AS_TX_TIME_SMTH_FCTR,
 	IEEE80211_SCS_SET_STATS_START,
+	IEEE80211_SCS_SET_CCA_IDLE_SMTH_FCTR,
+	IEEE80211_SCS_SET_PMBL_ERR_THRSHLD,
+	IEEE80211_SCS_SET_CCA_INTF_DFS_MARGIN,
+	IEEE80211_SCS_SET_LEAVE_DFS_CHAN_MTRC_MRGN,
 	IEEE80211_SCS_SET_MAX
 };
 
@@ -138,13 +139,12 @@
 #define IEEE80211_SCS_THRSHLD_SMPL_PKTNUM_DEFAULT	16	/* packet number */
 #define IEEE80211_SCS_THRSHLD_SMPL_PKTNUM_MAX	1000	/* packet number */
 #define IEEE80211_SCS_THRSHLD_SMPL_PKTNUM_MIN	1	/* packet number */
-#ifdef TOPAZ_PLATFORM
-#define IEEE80211_SCS_THRSHLD_SMPL_AIRTIME_DEFAULT	100	/* ms */
-#else
-#define IEEE80211_SCS_THRSHLD_SMPL_AIRTIME_DEFAULT	300	/* ms */
-#endif
+#define IEEE80211_SCS_THRSHLD_SMPL_AIRTIME_DEFAULT	200	/* ms */
 #define IEEE80211_SCS_THRSHLD_SMPL_AIRTIME_MAX	1000	/* ms */
 #define IEEE80211_SCS_THRSHLD_SMPL_AIRTIME_MIN	1	/* ms */
+#define IEEE80211_SCS_THRSHLD_PMBL_ERR_MAX	10000	/* count */
+#define IEEE80211_SCS_THRSHLD_PMBL_ERR_MIN	1	/* count */
+
 /*
  * Packet rate threshold is determined by how many packets we can hold in buffer without drop
  * during off-channel period. It is limited by:
@@ -184,7 +184,8 @@
 #define IEEE80211_CCA_INTF_SMTH_FCTR_MIN	0
 #define IEEE80211_CCA_INTF_SMTH_FCTR_MAX	100
 #define IEEE80211_SCS_CHAN_MTRC_MRGN_MAX	100
-#define IEEE80211_SCS_CHAN_MTRC_MRGN_DFT	5
+#define IEEE80211_SCS_CHAN_MTRC_MRGN_DFT	15
+#define IEEE80211_SCS_LEAVE_DFS_CHAN_MTRC_MRGN_DFT	25
 #define IEEE80211_SCS_RSSI_SMTH_FCTR_UP_DFT	75
 #define IEEE80211_SCS_RSSI_SMTH_FCTR_DOWN_DFT	25
 #define IEEE80211_SCS_RSSI_SMTH_FCTR_MAX	100
@@ -195,6 +196,9 @@
 #define IEEE80211_SCS_PMBL_ERR_SMTH_FCTR_MIN    0
 #define IEEE80211_SCS_PMBL_ERR_SMTH_FCTR_MAX    100
 #define IEEE80211_SCS_PMBL_ERR_SMTH_FCTR_DFT    66
+#define IEEE80211_SCS_CCA_IDLE_SMTH_FCTR_MIN    0
+#define IEEE80211_SCS_CCA_IDLE_SMTH_FCTR_MAX    100
+#define IEEE80211_SCS_CCA_IDLE_SMTH_FCTR_DFT    50
 #define IEEE80211_SCS_PMP_RPT_CCA_SMTH_FCTR_MAX    100
 #define IEEE80211_SCS_PMP_RPT_CCA_SMTH_FCTR_DFT    66
 #define IEEE80211_SCS_PMP_RX_TIME_SMTH_FCTR_MAX    100
@@ -246,6 +250,7 @@
 #define IEEE80211_SCS_COMMAND_S			16
 #define IEEE80211_SCS_COMMAND_M			0xffff
 
+#define IEEE80211_SCS_NA_CC			0x0
 #define IEEE80211_SCS_STA_CCA_REQ_CC		0x1
 #define IEEE80211_SCS_SELF_CCA_CC               0x2
 #define IEEE80211_SCS_ATTEN_INC_CC		0x4
@@ -301,6 +306,7 @@
 	IEEE80211_OCAC_SET_BEACON_INTERVAL,
 	IEEE80211_OCAC_SET_WEATHER_DURATION,
 	IEEE80211_OCAC_SET_WEATHER_CAC_TIME,
+	IEEE80211_OCAC_SET_WEATHER_DWELL_TIME,
 	IEEE80211_OCAC_SET_MAX
 };
 
@@ -316,7 +322,8 @@
 
 #define IEEE80211_OCAC_DWELL_TIME_MIN		5	/* milliseconds */
 #define IEEE80211_OCAC_DWELL_TIME_MAX		200	/* milliseconds */
-#define IEEE80211_OCAC_DWELL_TIME_DEFAULT	50	/* milliseconds */
+#define IEEE80211_OCAC_DWELL_TIME_DEFAULT	40	/* milliseconds */
+#define IEEE80211_OCAC_WEA_DWELL_TIME_DEFAULT	20	/* milliseconds */
 
 #define IEEE80211_OCAC_SECURE_DWELL_TIME_MIN		5	/* milliseconds */
 #define IEEE80211_OCAC_SECURE_DWELL_TIME_MAX		23	/* milliseconds */
@@ -324,25 +331,27 @@
 
 #define IEEE80211_OCAC_DURATION_MIN		1	/* seconds */
 #define IEEE80211_OCAC_DURATION_MAX		64800	/* seconds */
-#define IEEE80211_OCAC_DURATION_DEFAULT		360	/* seconds */
+#define IEEE80211_OCAC_DURATION_DEFAULT		720	/* seconds */
 
 #define IEEE80211_OCAC_CAC_TIME_MIN		1	/* seconds */
 #define IEEE80211_OCAC_CAC_TIME_MAX		64800	/* seconds */
-#define IEEE80211_OCAC_CAC_TIME_DEFAULT		145	/* seconds */
+#define IEEE80211_OCAC_CAC_TIME_DEFAULT		240	/* seconds */
 
 #define IEEE80211_OCAC_WEA_DURATION_MIN		60	/* seconds */
 #define IEEE80211_OCAC_WEA_DURATION_MAX		86400	/* seconds */
+#define IEEE80211_OCAC_WEA_DURATION_DEFAULT	11520	/* seconds */
 
 #define IEEE80211_OCAC_WEA_CAC_TIME_MIN		1	/* seconds */
 #define IEEE80211_OCAC_WEA_CAC_TIME_MAX		86400	/* seconds */
+#define IEEE80211_OCAC_WEA_CAC_TIME_DEFAULT	1920	/* seconds */
 
 #define IEEE80211_OCAC_THRESHOLD_FAT_MIN	1	/* percent */
 #define IEEE80211_OCAC_THRESHOLD_FAT_MAX	100	/* percent */
-#define IEEE80211_OCAC_THRESHOLD_FAT_DEFAULT	65	/* percent */
+#define IEEE80211_OCAC_THRESHOLD_FAT_DEFAULT	90	/* percent */
 
 #define IEEE80211_OCAC_THRESHOLD_TRAFFIC_MIN		1	/* percent */
 #define IEEE80211_OCAC_THRESHOLD_TRAFFIC_MAX		100	/* percent */
-#define IEEE80211_OCAC_THRESHOLD_TRAFFIC_DEFAULT	35	/* percent */
+#define IEEE80211_OCAC_THRESHOLD_TRAFFIC_DEFAULT	30	/* percent */
 
 #define IEEE80211_OCAC_OFFSET_TXHALT_MIN		2	/* milliseconds */
 #define IEEE80211_OCAC_OFFSET_TXHALT_MAX		80	/* milliseconds */
@@ -374,6 +383,13 @@
 #define IEEE80211_OCAC_TIMER_EXPIRE_INIT_MAX		65000	/* seconds */
 #define IEEE80211_OCAC_TIMER_EXPIRE_INIT_DEFAULT	2	/* seconds */
 
+#define	IEEE80211_OBSS_PASSIVE_DWELL_DEFAULT		20
+#define	IEEE80211_OBSS_ACTIVE_DWELL_DEFAULT		10
+#define	IEEE80211_OBSS_TRIGGER_INTERVAL_DEFAULT		200
+#define	IEEE80211_OBSS_PASSIVE_TOTAL_DEFAULT		200
+#define	IEEE80211_OBSS_ACTIVE_TOTAL_DEFAULT		20
+#define	IEEE80211_OBSS_CHANNEL_WIDTH_DELAY_DEFAULT	5
+#define	IEEE80211_OBSS_ACTIVITY_THRESHOLD_DEFAULT	25
 
 #define IEEE80211_OCAC_VALUE_S			0
 #define IEEE80211_OCAC_VALUE_M			0xffff
@@ -404,6 +420,7 @@
 #define	QTN_M2A_PS_EVENT_PS_POLL	4		/* ps poll */
 #define	QTN_M2A_EVENT_TYPE_UAPSD_SP	5		/* U-APSD SP */
 #define QTN_M2A_EVENT_PTID_FLAG_SET     6               /* Set per-TID flag(muc) */
+#define QTN_M2A_EVENT_TYPE_TXBA_DISABLE	7		/* per VAP TX BA est control */
 
 /* Common definitions for flags used to indicate ieee80211_node's states */
 #define	IEEE80211_NODE_AUTH		0x0001	/* authorized for data */
@@ -422,9 +439,12 @@
 #define IEEE80211_NODE_TPC		0x8000	/* indicate tpc capability */
 
 /* Common definitions for ext_flags */
-#define IEEE80211_NODE_TDLS_PTI_PENDING	0x0001	/* Should sending PTI request to peer */
-#define IEEE80211_NODE_TDLS_PTI_RESP	0x0002	/* PTI response frame received */
+#define IEEE80211_NODE_TDLS_PTI_REQ	0x0001	/* Should sending PTI request to peer */
+#define IEEE80211_NODE_TDLS_PTI_PENDING	0x0002	/* PTI request xmit to peer but not responsed */
 #define IEEE80211_NODE_UAPSD_SP_IN_PROGRESS	0x0004	/* U-APSD SP in progress */
+#define IEEE80211_NODE_TDLS_PTI_RESP	0x0008	/* PTI response frame received */
+
+#define	IEEE80211_NODE_TDLS_MASK	0x000B	/* Mask for TDLS bits */
 
 #define QTN_VAP_PRIORITY_RESERVED	2	/* reserve the low values for internal use */
 #define QTN_VAP_PRIORITY_NUM		4
@@ -435,27 +455,29 @@
 
 /* Quantenna specific flags (ni_qtn_flags), do not modify in Auc */
 #define QTN_IS_BCM_NODE			0x0000001
-#define QTN_IS_IPAD_NODE		0x0000002
-#define QTN_IS_IPHONE5_NODE		0x0000004
-#define QTN_IS_IPAD3_NODE		0x0000008
-#define QTN_IS_INTEL_5100_NODE		0x0000010
-#define QTN_IS_INTEL_5300_NODE		0x0000020
-#define QTN_IS_SAMSUNG_GALAXY_NODE	0x0000040
-#define QTN_IS_NOT_4ADDR_CAPABLE_NODE	0x0000080
-#define QTN_AC_BE_INHERITANCE_UPTO_VO	0x0000100
-#define QTN_AC_BE_INHERITANCE_UPTO_VI	0x0000200
-#define QTN_IS_INTEL_NODE		0x0000400
-#define QTN_IS_IPAD_AIR_NODE		0x0000800
-#define QTN_IS_IPAD4_NODE		0x0001000
-#define QTN_IS_REALTEK_NODE		0x0004000
-#define	QTN_NODE_TX_RESTRICTED		0x0008000 /* restricted tx enabled */
-#define	QTN_NODE_TX_RESTRICT_RTS	0x0010000 /* use RTS to confirm node is lost */
-#define QTN_IS_NO_RXAMSDU_NO_BF_NODE	0x0020000
-#define QTN_NODE_RXAMSDU_SUPPORT	0x0040000 /* node support TX amsdu */
-#define QTN_NODE_11N_TXAMSDU_OFF	0x0080000
-#define	QTN_NODE_TXOP_RESTRICTED	0x0100000
+#define QTN_IS_INTEL_5100_NODE		0x0000002
+#define QTN_IS_INTEL_5300_NODE		0x0000004
+#define QTN_IS_GALAXY_NOTE_4_NODE	0x0000008
+#define QTN_IS_NOT_4ADDR_CAPABLE_NODE	0x0000010
+#define QTN_AC_BE_INHERITANCE_UPTO_VO	0x0000020
+#define QTN_AC_BE_INHERITANCE_UPTO_VI	0x0000040
+#define QTN_IS_INTEL_NODE		0x0000080
+#define QTN_IS_REALTEK_NODE		0x0000100
+#define	QTN_NODE_TX_RESTRICTED		0x0000200 /* restricted tx enabled */
+#define	QTN_NODE_TX_RESTRICT_RTS	0x0000400 /* use RTS to confirm node is lost */
+#define QTN_IS_NO_RXAMSDU_NO_BF_NODE	0x0000800
+#define QTN_NODE_RXAMSDU_SUPPORT	0x0001000 /* node support TX amsdu */
+#define QTN_NODE_11N_TXAMSDU_OFF	0x0002000
+#define	QTN_NODE_TXOP_RESTRICTED	0x0004000
+/*
+ * Bits that can be updated again by Lhost after association creation. Explicit definition helps
+ * avoid overwriting bits maintained by MuC itself.
+ */
+#define QTN_FLAGS_UPDATABLE_BITS	(QTN_IS_INTEL_NODE)
 
-/* QTN bandwidth definition */
+/* QTN bandwidth definition - make sure this is up-to-date with regards
+ * to txbf_common.h
+ */
 #define QTN_BW_20M	0
 #define QTN_BW_40M	1
 #define QTN_BW_80M	2
@@ -545,11 +567,7 @@
  * So generally, sololy changing CONFIG_QVSP works for both ruby and topaz as indicated by *.
  * But to throughly clean QTM code in AuC and MuC, disable TOPAZ_QTM in topaz below.
  */
-#ifdef TOPAZ_PLATFORM
-	#define TOPAZ_QTM		1
-#else
-	#define TOPAZ_QTM		0
-#endif
+#define TOPAZ_QTM		1
 
 #define COMPILE_TIME_ASSERT(constant_expr)	\
 do {						\
@@ -628,6 +646,7 @@
 	SWFEAT_ID_VHT,
 	SWFEAT_ID_2X2,
 	SWFEAT_ID_2X4,
+	SWFEAT_ID_3X3,
 	SWFEAT_ID_4X4,
 	SWFEAT_ID_HS20,
 	SWFEAT_ID_WPA2_ENT,
@@ -654,4 +673,10 @@
 #define QDRV_TEMPSENS_COEFF    100000
 #define QDRV_TEMPSENS_COEFF10  (10 * QDRV_TEMPSENS_COEFF)
 
+/* Aligns the supplied size to the specified power_of_two */
+#define QTN_ALIGN_TO(size_to_align, power_of_two) \
+	(((size_to_align) + (power_of_two) - 1) & ~((power_of_two) - 1))
+
+#define FIELD_ARRAY_SIZE(t, a)	(sizeof((((t*)0)->a))/sizeof(((((t*)0)->a))[0]))
+
 #endif /* _SHARED_DEFS_H_ */
diff --git a/include/qtn/shared_defs_common.h b/include/qtn/shared_defs_common.h
index 16d2d4d..ef55d8c 100644
--- a/include/qtn/shared_defs_common.h
+++ b/include/qtn/shared_defs_common.h
@@ -144,6 +144,11 @@
 #define  QTN_TPZ_DBS					9	/* BBIC4 + RFIC6 */
 #define  QTN_TPZ_SE5502L				10	/* BBIC4 + RFIC5 */
 #define  QTN_TPZ_SKY85710_NG				11
+#define	 QTN_TPZ_DBS_5591				13	/* BBIC4 A2 + RFIC6 */
+#define	 QTN_TPZ_DBS_NXP_BGU7224_BGU7258		14	/* BBIC4 A2 + RFIC6  DBS support*/
+#define	 QTN_TPZ_2_4GHZ_NXP_BGU7224			15	/* BBIC4 A2 + RFIC6 2.4ghz only */
+#define	 QTN_TPZ_5GHZ_NXP_BGU7258			16	/* BBIC4 A2 + RFIC6 5ghz only */
+#define	 QTN_TPZ_5GHZ_SKY85728				17	/* BBIC4 A2 + RFIC4 5ghz only and BBIC4 A2 + RFIC6 5ghz only */
 
 #endif /* _SHARED_DEFS_COMMON_H_ */
 
diff --git a/include/qtn/shared_params.h b/include/qtn/shared_params.h
index 64eed8d..2b039c5 100644
--- a/include/qtn/shared_params.h
+++ b/include/qtn/shared_params.h
@@ -105,6 +105,7 @@
 #define HARDWARE_REVISION_TOPAZ_B	5
 #define HARDWARE_REVISION_TOPAZ_A2	6
 #define CHIP_ID_MASK			0xF0
+#define CHIP_ID_SW_MASK			0xC0	/* bits set in sw, for downgrade only */
 #define CHIP_REV_ID_MASK		0x0F
 
 #define HW_OPTION_BONDING_RUBY_PROD	(HARDWARE_REVISION_RUBY_D << 8)
@@ -113,24 +114,38 @@
 #define HW_OPTION_BONDING_RUBY_4SS	(HW_OPTION_BONDING_RUBY_PROD | 0x00000002)
 
 #define HW_PLAT_TOPAZ_QV860		0x00
+#define HW_PLAT_TOPAZ_QV860_2X2		0x80	/* downgrade only */
+#define HW_PLAT_TOPAZ_QV860_2X4		0x40	/* downgrade only */
+#define HW_PLAT_TOPAZ_QV860_3X3		0xF0	/* downgrade only */
 #define HW_PLAT_TOPAZ_QD840		0x01
 #define HW_PLAT_TOPAZ_QV880		0x32
+#define HW_PLAT_TOPAZ_QV880_2X2		0xb2	/* downgrade only */
+#define HW_PLAT_TOPAZ_QV880_2X4		0x72	/* downgrade only */
+#define HW_PLAT_TOPAZ_QV880_3X3		0xF2	/* downgrade only */
 #define HW_PLAT_TOPAZ_QV920		0x03
+#define HW_PLAT_TOPAZ_QV920_2X4		0x43	/* downgrade only */
 #define HW_PLAT_TOPAZ_QV840		0x04
+#define HW_PLAT_TOPAZ_QV840_2X4		0x44	/* downgrade only */
 #define HW_PLAT_TOPAZ_QV940		0x05
 #define HW_PLAT_TOPAZ_QV840C		0x06
-#define HW_PLAT_TOPAZ_QV950		0x07
 
 #define HW_OPTION_BONDING_TOPAZ_PROD	(HARDWARE_REVISION_TOPAZ_B << 8)
 enum hw_opt_t {
 	HW_OPTION_BONDING_TOPAZ_QV860 = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QV860),
+	HW_OPTION_BONDING_TOPAZ_QV860_2X2 = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QV860_2X2),
+	HW_OPTION_BONDING_TOPAZ_QV860_2X4 = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QV860_2X4),
+	HW_OPTION_BONDING_TOPAZ_QV860_3X3 = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QV860_3X3),
 	HW_OPTION_BONDING_TOPAZ_QD840 = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QD840),
 	HW_OPTION_BONDING_TOPAZ_QV880 = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QV880),
+	HW_OPTION_BONDING_TOPAZ_QV880_2X2 = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QV880_2X2),
+	HW_OPTION_BONDING_TOPAZ_QV880_2X4 = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QV880_2X4),
+	HW_OPTION_BONDING_TOPAZ_QV880_3X3 = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QV880_3X3),
 	HW_OPTION_BONDING_TOPAZ_QV920 = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QV920),
+	HW_OPTION_BONDING_TOPAZ_QV920_2X4 = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QV920_2X4),
 	HW_OPTION_BONDING_TOPAZ_QV840 = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QV840),
+	HW_OPTION_BONDING_TOPAZ_QV840_2X4 = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QV840_2X4),
 	HW_OPTION_BONDING_TOPAZ_QV940 = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QV940),
 	HW_OPTION_BONDING_TOPAZ_QV840C = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QV840C),
-	HW_OPTION_BONDING_TOPAZ_QV950 = (HW_OPTION_BONDING_TOPAZ_PROD | HW_PLAT_TOPAZ_QV950)
 };
 
 #define HW_OPTION_BONDING_NOT_SET	0xFFFFFFFF
@@ -139,6 +154,8 @@
 {
 	u_int32_t		tqe_sem_en; /*replaced for TQE SWR lh_flags; */
 	u_int16_t		lh_chip_id;
+	u_int8_t		rf_chip_id;
+	u_int8_t		vco_lock_detect_mode;
 	u_int8_t		lh_wifi_hw;
 	u_int8_t		lh_num_devices;
 	u_int8_t		lh_mac_0[ IEEE80211_ADDR_LEN ];
@@ -173,21 +190,11 @@
 #define QTN_IOT_BCM_MBA_AMSDU_TWEAK	0x00000200   /* MBA doesn't work with 7.9k AMSDU with security mode */
 #define QTN_IOT_RLNK_NO_3SS_MCS_TWEAK	0x00000400   /* Disable 3ss MCS for Ralink clients */
 #define QTN_IOT_RTK_NO_AMSDU_TWEAK	0x00000800   /* Disable A-MSDU for Realtek devices */
-#ifndef TOPAZ_PLATFORM
-#define QTN_IOT_DEFAULT_TWEAK		(QTN_IOT_INTEL5100_TWEAK | \
-					 QTN_IOT_INTEL6200_TWEAK | \
-					 QTN_IOT_INTEL6300_TWEAK | \
-					 QTN_IOT_INTEL_SEND_NCW_ACTION | \
-					 QTN_IOT_BCM_NO_3SS_MCS_TWEAK | \
-					 QTN_IOT_RLNK_NO_3SS_MCS_TWEAK \
-					)
-#else
 #define QTN_IOT_DEFAULT_TWEAK		(QTN_IOT_BCM_MBA_AMSDU_TWEAK | \
 					 QTN_IOT_BCM_AMSDU_DUTY_TWEAK | \
 					 QTN_IOT_RLNK_NO_3SS_MCS_TWEAK | \
 					 QTN_IOT_RTK_NO_AMSDU_TWEAK \
 					)
-#endif
 	uint32_t		iot_tweaks;
 
 	struct qtn_txbf_mbox*	txbf_mbox_lhost;
@@ -216,6 +223,9 @@
 	struct qtn_ocac_info*	ocac_lhost;
 	struct qtn_ocac_info*	ocac_bus;
 
+	struct qtn_bmps_info*	bmps_lhost;
+	struct qtn_bmps_info*	bmps_bus;
+
 	struct qtn_meas_chan_info*	chan_meas_lhost;
 	struct qtn_meas_chan_info*	chan_meas_bus;
 
@@ -224,13 +234,12 @@
 	struct qtn_sem_trace_log *sem_trace_log_bus;
 #endif
 
-#ifdef TOPAZ_PLATFORM
-	uint8_t	*vlan_bitmap_lhost;
-	uint8_t	*vlan_bitmap_bus;
-	int	*vlan_enabled_lhost;
-	int	*vlan_enabled_bus;
+	struct qtn_vlan_dev **vdev_lhost;
+	struct qtn_vlan_dev **vdev_bus;
+	struct qtn_vlan_dev **vport_lhost;
+	struct qtn_vlan_dev **vport_bus;
 	struct topaz_ipmac_uc_table *ipmac_table_bus;
-#endif
+	struct qtn_vlan_info *vlan_info;
 
 #if CONFIG_RUBY_BROKEN_IPC_IRQS
 	u_int32_t		m2l_irq[2];
@@ -253,10 +262,8 @@
 #define QTN_FW_VERSION_LENGTH	32
 	char			fw_version[QTN_FW_VERSION_LENGTH + 1];
 #ifndef SYSTEM_BUILD
-#ifdef TOPAZ_PLATFORM
 	shared_params_auc	auc;
 #endif
-#endif
 
 	int			cca_adjusting_flag;
 	int			active_tid_num;
@@ -264,6 +271,7 @@
 	uint32_t		cs_thresh_base_val;	/* Carrier sense threshold base value */
 	uint32_t		qtn_hal_pm_corrupt;
 	uint32_t		qtn_hal_pm_corrupt_debug;
+	uint32_t                free_airtime;		/* in ms */
 } shared_params;
 
 #define QTN_RATE_TRAIN_DATA_LEN		64
diff --git a/include/qtn/skb_recycle.h b/include/qtn/skb_recycle.h
index aaae2ec..b3f7494 100644
--- a/include/qtn/skb_recycle.h
+++ b/include/qtn/skb_recycle.h
@@ -41,16 +41,12 @@
 #define SKB_RECYCLE_STAT(x)
 #endif
 
-#if defined(TOPAZ_PLATFORM)
 #define QTN_SKB_RECYCLE_ENABLE		0
-#else
-#define QTN_SKB_RECYCLE_ENABLE		1
-#endif
 
 /**
  * \addtogroup LHOST_STATS
  */
-/* @{ */
+/** @{ */
 
 /**
  * \brief Linux SKB recycle statistics.
@@ -97,7 +93,7 @@
 	 */
 	u32 alloc_kmalloc;
 };
-/* @} */
+/** @} */
 
 struct qtn_skb_recycle_list {
 	struct sk_buff_head list;			/* Shared buffers between wireless and Ethernet driver */
diff --git a/include/qtn/topaz_congest_queue.h b/include/qtn/topaz_congest_queue.h
index 36a6bc5..f97c6cd 100644
--- a/include/qtn/topaz_congest_queue.h
+++ b/include/qtn/topaz_congest_queue.h
@@ -29,7 +29,7 @@
 /* Maximum number of packets in all congest queues */
 #define TOPAZ_CONGEST_TOTAL_PKT_MAX	(2048)
 /* Maximum number of congest queue for unicast frame */
-#define TOPAZ_CONGEST_QUEUE_UNICAST_NUM	(1)
+#define TOPAZ_CONGEST_MAX_UNICAST_QCOUNT	(3)
 
 /* Budget for packet number consmued at softirq at one time */
 #define TOPAZ_SOFTIRQ_BUDGET  8
@@ -37,6 +37,9 @@
 #define TOPAZ_PCIE_NODE_MAX	(128)
 #define TOPAZ_PCIE_TID_MAX	(16)
 
+#define TOPAZ_CONGEST_QUEUE_STATS_QLEN		0
+#define TOPAZ_CONGEST_QUEUE_STATS_ENQFAIL	1
+
 struct topaz_congest_q_elem {
 	union topaz_tqe_cpuif_ppctl ppctl;
 };
@@ -57,7 +60,6 @@
 	uint32_t congest_drop;	/* Packet number dropped due to transmission time-out */
 	uint32_t congest_enq_fail;	/* packet number dropped due to enqueue failure */
 
-	uint32_t last_retry_stamp;
 	uint32_t last_retry_success;	/* 0: Fail, 1: Success */
 	unsigned long retry_timeout;
 	uint32_t is_unicast;
@@ -81,6 +83,7 @@
 	/* Counters */
 	uint32_t func_entry;	/* tasklet hook function called count */
 	uint32_t cnt_retries;	/* tried times on triggering to TQE */
+	uint32_t xmit_entry;
 
 	int logs[TOPAZ_CONGEST_PKT_MAX]; /* Used to check queue fullness */
 
@@ -90,6 +93,7 @@
 	uint32_t total_qlen;	/* Total number of pending requests in all queues*/
 
 	uint32_t unicast_qcount;	/* Total congest queue count of unicast frame */
+	uint32_t max_unicast_qcount;	/* Max unicast congest queue count*/
 };
 
 struct qdrv_tqe_cgq {
@@ -141,9 +145,11 @@
 
 extern int topaz_congest_queue_xmit(struct topaz_congest_q_desc *queue, uint32_t budget);
 
-extern void reg_congest_queue_stats(void (*fn)(void *, uint8_t, uint32_t), void *ctx);
+extern void reg_congest_queue_stats(void (*fn)(void *, uint32_t, uint8_t, uint32_t), void *ctx);
 
 extern struct topaz_congest_queue* topaz_congest_queue_get(void);
 
 extern void topaz_hbm_congest_queue_put_buf(const union topaz_tqe_cpuif_ppctl *ppctl);
+
+extern void topaz_congest_set_unicast_queue_count(uint32_t qnum);
 #endif
diff --git a/include/qtn/topaz_dpi.h b/include/qtn/topaz_dpi.h
index 751fd4c..b96228c 100644
--- a/include/qtn/topaz_dpi.h
+++ b/include/qtn/topaz_dpi.h
@@ -28,8 +28,6 @@
 #include <linux/in6.h>
 #include <compat.h>
 
-#ifdef TOPAZ_PLATFORM
-
 struct topaz_dpi_field_def {
 	uint32_t val;
 	uint32_t mask;
@@ -94,7 +92,5 @@
 	topaz_dpi_iptuple_poll_complete(base);
 }
 
-#endif	/* TOPAZ_PLATFORM */
-
 #endif	/* __TOPAZ_DPI_H */
 
diff --git a/include/qtn/topaz_fwt.h b/include/qtn/topaz_fwt.h
index 0cb1afa..338815d 100644
--- a/include/qtn/topaz_fwt.h
+++ b/include/qtn/topaz_fwt.h
@@ -7,8 +7,6 @@
 
 #include <qtn/topaz_fwt_cpuif.h>
 
-#ifdef TOPAZ_PLATFORM
-
 typedef void (*fwt_notify_swap )( uint16_t dst_index, uint16_t src_index);
 
 /*
@@ -47,7 +45,6 @@
 
 int topaz_fwt_get_timestamp(uint16_t index);
 int topaz_fwt_init(void);
-#endif	/* TOPAZ_PLATFORM */
 
 #endif	/* __TOPAZ_FWT_H */
 
diff --git a/include/qtn/topaz_fwt_cpuif.h b/include/qtn/topaz_fwt_cpuif.h
index 344d962..f42926b 100644
--- a/include/qtn/topaz_fwt_cpuif.h
+++ b/include/qtn/topaz_fwt_cpuif.h
@@ -247,9 +247,38 @@
 	uint8_t port_bitmap;
 	uint8_t flood_forward;
 	uint8_t seen;
+#ifdef CONFIG_TOPAZ_DBDC_HOST
+	uint8_t dev_bitmap;
+#else
 	uint8_t __pad[1];
+#endif
 };
 
+#ifdef CONFIG_TOPAZ_DBDC_HOST
+RUBY_INLINE int topaz_fwt_sw_mcast_dev_is_set(struct topaz_fwt_sw_mcast_entry *const e,
+						const uint8_t dev_id)
+{
+	return (e->dev_bitmap & (1 << dev_id));
+}
+
+RUBY_INLINE int topaz_fwt_sw_mcast_dev_is_empty(struct topaz_fwt_sw_mcast_entry *const e)
+{
+	return (e->dev_bitmap == 0);
+}
+
+RUBY_INLINE void topaz_fwt_sw_mcast_dev_set(struct topaz_fwt_sw_mcast_entry *const e,
+						const uint8_t dev_id)
+{
+	e->dev_bitmap |= (1 << dev_id);
+}
+
+RUBY_INLINE void topaz_fwt_sw_mcast_dev_clear(struct topaz_fwt_sw_mcast_entry *const e,
+						const uint8_t dev_id)
+{
+	e->dev_bitmap &= ~(1 << dev_id);
+}
+#endif
+
 struct topaz_fwt_sw_alias_table {
 	int16_t mcast_entry_index[TOPAZ_FWT_SW_IP_ALIAS_ENTRIES];
 };
@@ -565,6 +594,33 @@
 	return zero_lookup;
 }
 
+RUBY_INLINE union topaz_fwt_lookup topaz_fwt_hw_lookup_wait_be(const uint8_t *mac_be, int *timeout, uint8_t *false_miss)
+{
+#ifndef TOPAZ_DISABLE_FWT_WAR
+	/*
+	 * This is to workaround the FWT lookup false issue:
+	 * It seems when EMAC is under heavy VLAN traffic, Lhost and MuC
+	 * may get false miss from FWT -- FWT returns invalid while a MAC
+	 * address truly exists in it. A double check reduces count of false
+	 * misses significantly.
+	 */
+	uint8_t retries = 1;
+#else
+	uint8_t retries = 0;
+#endif
+	union topaz_fwt_lookup u;
+
+	do {
+		u = __topaz_fwt_hw_lookup_wait_be(mac_be, timeout);
+	} while (!u.data.valid && retries--);
+
+#if !defined(TOPAZ_DISABLE_FWT_WAR) && !defined(MUC_BUILD)
+	*false_miss += (retries == 0);
+#endif
+
+	return u;
+}
+
 RUBY_INLINE uint32_t __topaz_fwt_cpu_access_rd(void)
 {
 	return qtn_mproc_sync_mem_read(TOPAZ_FWT_CPU_ACCESS);
diff --git a/include/qtn/topaz_fwt_db.h b/include/qtn/topaz_fwt_db.h
index 7c2834b..9f47d16 100644
--- a/include/qtn/topaz_fwt_db.h
+++ b/include/qtn/topaz_fwt_db.h
@@ -5,7 +5,6 @@
 #ifndef FWT_DB_H_
 #define FWT_DB_H_
 
-#ifdef TOPAZ_PLATFORM
 
 #ifndef CONSOLE_TEST
 #include <linux/types.h>
@@ -20,15 +19,6 @@
 #include <qtn/topaz_tqe_cpuif.h>
 #include <qtn/topaz_fwt_cpuif.h>
 #include <qtn/qtn_net_packet.h>
-#else
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <stdbool.h>
-#include "unitest_fwt.h"
-#include "queue.h"
-#endif
 
 typedef enum
 {
@@ -59,9 +49,15 @@
 	uint8_t out_node;
 	int16_t fwt_index;
 	int16_t alias_table_index;
+	uint32_t false_miss;
 	uint8_t portal	:1,
 		valid	:1,
+#ifdef CONFIG_TOPAZ_DBDC_HOST
+		mcast	:1,
+		dev_id  :DEV_ID_BITS;
+#else
 		mcast	:1;
+#endif
 } fwt_db_entry;
 
 /* node list indexed by the fwt */
@@ -130,6 +126,10 @@
 	}
 }
 
+fwt_db_node_element *fwt_db_create_node_element(void);
+void fwt_db_free_node_element(fwt_db_node_element *node_element);
+int fwt_db_is_node_exists_list(uint8_t node_index, uint16_t table_index,
+		uint8_t ip_alias, uint8_t port);
 /*
  * Initialise the fwt_db database
  */
@@ -147,13 +147,20 @@
  * Print FWT Database to console
  * @return number of existing valid entries
  */
-int fwt_db_print(bool is_mult);
+int fwt_db_print(int is_mult);
 
 /*
  * Print FWT node hash lise to console
  * @return number of existing valid entries
  */
 int fwt_db_node_table_print(void);
+
+/*
+ * Print the FWT multicast entries to a buffer
+ * @return number of bytes written
+ */
+int fwt_db_get_mc_list(char *buf, int buflen);
+
 /*
  * Calculate ageing time by the FWT HW timestamp
  * @Param fwt_index: FWT table index
@@ -192,8 +199,8 @@
  * @param node_num:
  * @param table_index: the HW FWT table index
  */
-int fwt_db_add_new_node(uint8_t node_num, uint16_t table_index,
-		const struct br_ip *group, uint8_t port);
+void fwt_db_add_new_node(uint8_t node_num, uint16_t table_index,
+		const int8_t ip_alias, uint8_t port, fwt_db_node_element *const new_element);
 
 /* Remove specific node from the hash list,
  * Note: does not involve removing node from the fwt table.
@@ -244,7 +251,7 @@
  * Return the existing entry if present, otherwise create a new multicast entry
  */
 struct topaz_fwt_sw_mcast_entry *fwt_db_get_or_add_sw_mcast(struct fwt_db_entry *db,
-		const struct br_ip *group);
+		int8_t ip_alias);
 
 /*
  * Free multicast entry, and possibly the alias_table if it becomes empty.
@@ -252,6 +259,17 @@
  */
 int fwt_db_delete_sw_mcast(struct fwt_db_entry *db, uint8_t ipmap_index);
 
+/*
+ * Get mac addresses of nondes behind associated node
+ * @param index: node index
+ * @param num_entries: returns number of entries found
+ * @param max_req: maximum entries requested
+ * @param flags: bit 0 - results overflowed/truncated, bit 1 - 4addr node
+ * @param buf: buffer to store macs
+ */
+int fwt_db_get_macs_behind_node(const uint8_t index, uint32_t *num_entries, uint32_t max_req,
+					uint32_t *flags, uint8_t *buf);
+
 #endif // TOPAZ PLATFORM
 
 #endif /* FWT_DB_H_ */
diff --git a/include/qtn/topaz_fwt_if.h b/include/qtn/topaz_fwt_if.h
index 43cf2f5..746e275 100644
--- a/include/qtn/topaz_fwt_if.h
+++ b/include/qtn/topaz_fwt_if.h
@@ -43,14 +43,17 @@
 #ifndef FWT_INTERFACE_H_
 #define FWT_INTERFACE_H_
 
-#ifdef TOPAZ_PLATFORM
 #include <qtn/br_types.h>
 
+/* Must match FWT_IF_KEY_xxx macros */
 typedef enum fwt_if_usr_cmd {
 	FWT_IF_CMD_CLEAR = 0,
 	FWT_IF_CMD_ON,
 	FWT_IF_CMD_OFF,
 	FWT_IF_CMD_PRINT,
+	FWT_IF_CMD_ADD_STATIC_MC,
+	FWT_IF_CMD_DEL_STATIC_MC,
+	FWT_IF_CMD_GET_MC_LIST,
 	FWT_IF_CMD_ADD,
 	FWT_IF_CMD_DELETE,
 	FWT_IF_CMD_AUTO,
@@ -71,16 +74,16 @@
 	struct br_ip ip;
 };
 
-struct fwt_if_common{
+struct fwt_if_common {
 	struct fwt_if_id id;
 	uint8_t port;
 	uint8_t node[FWT_IF_USER_NODE_MAX];
-	uint8_t param;
+	uint32_t param;
+	void *extra;
 };
 
 typedef int (*fwt_if_sw_cmd_hook)(fwt_if_usr_cmd cmd, struct fwt_if_common *data);
 
 void fwt_if_register_cbk_t(fwt_if_sw_cmd_hook cbk_func);
 
-#endif /* TOPAZ PLATFORM */
 #endif /* FWT_INTERFACE_H_ */
diff --git a/include/qtn/topaz_fwt_sw.h b/include/qtn/topaz_fwt_sw.h
index 22700db..739413f 100644
--- a/include/qtn/topaz_fwt_sw.h
+++ b/include/qtn/topaz_fwt_sw.h
@@ -5,7 +5,6 @@
 #ifndef FWT_SW_H_
 #define FWT_SW_H_
 
-#ifdef TOPAZ_PLATFORM
 
 #include <linux/types.h>
 #include <qtn/topaz_fwt_db.h>
@@ -127,6 +126,16 @@
 
 int fwt_sw_get_index_from_mac_be(const uint8_t *mac_be);
 
+/*
+ * Fast way to get fwt entry for unicast packet
+ * @param src_mac_be: source mac address of the packet
+ * @param dst_mac_be: destination mac address of the packet
+ */
+fwt_db_entry *fwt_sw_fast_get_ucast_entry(const unsigned char *src_mac_be,
+		const unsigned char *dst_mac_be);
+
+void fwt_sw_update_false_miss(int index, uint8_t false_miss);
+
 int fwt_sw_get_ipff(char *buf, int buflen);
 
 extern dma_addr_t ipmac_hash_bus;
@@ -136,6 +145,4 @@
 
 void fwt_sw_remove_uc_ipmac(const uint8_t *ip, uint16_t type);
 
-#endif /* TOPAZ PLATFORM */
-
 #endif /* FWT_INTERFACE_H_ */
diff --git a/include/qtn/topaz_hbm.h b/include/qtn/topaz_hbm.h
index 0d06401..e9548cd 100644
--- a/include/qtn/topaz_hbm.h
+++ b/include/qtn/topaz_hbm.h
@@ -30,10 +30,13 @@
 #include <qtn/dmautil.h>
 #include <asm/cacheflush.h>
 
-#define topaz_hbm_attach_skb(buf_virt, pool)		\
-	_topaz_hbm_attach_skb((buf_virt), (pool)	\
+#define topaz_hbm_attach_skb(buf_virt, pool, headroom)		\
+	_topaz_hbm_attach_skb((buf_virt), (pool), 1, (headroom)	\
 			QTN_SKB_ALLOC_TRACE_ARGSRC)
-struct sk_buff *_topaz_hbm_attach_skb(void *buf_virt, int8_t pool
+#define topaz_hbm_attach_skb_no_invalidate(buf_virt, pool, headroom)		\
+	_topaz_hbm_attach_skb((buf_virt), (pool), 0, (headroom) 	\
+			QTN_SKB_ALLOC_TRACE_ARGSRC)
+struct sk_buff *_topaz_hbm_attach_skb(void *buf_virt, int8_t pool, int inv, uint8_t headroom
 		QTN_SKB_ALLOC_TRACE_ARGS);
 
 #define topaz_hbm_attach_skb_bus(buf_bus, pool)	\
@@ -54,7 +57,7 @@
 		return NULL;
 	}
 
-	return _topaz_hbm_attach_skb(buf_virt, pool
+	return _topaz_hbm_attach_skb(buf_virt, pool, 1, 0
 			QTN_SKB_ALLOC_TRACE_ARGVARS);
 }
 
diff --git a/include/qtn/topaz_hbm_cpuif.h b/include/qtn/topaz_hbm_cpuif.h
index 7a63cc0..daf2609 100644
--- a/include/qtn/topaz_hbm_cpuif.h
+++ b/include/qtn/topaz_hbm_cpuif.h
@@ -81,7 +81,7 @@
 #define TOPAZ_HBM_BUF_EXTERNAL_META		1	/* move meta data outside of buffer */
 #define TOPAZ_HBM_BUF_WMAC_RX_QUARANTINE	1	/* quarantine wmac rx buffers when deliver important packets */
 
-#if defined(CONFIG_TOPAZ_PCIE_TARGET)
+#if defined(CONFIG_TOPAZ_PCIE_TARGET) || defined(CONFIG_TOPAZ_DBDC_HOST)
 /*
  * Checking emac rx pool buffers lead to performance impact in PCIe, so limit
  * the check for wmac rx pool only.
@@ -301,8 +301,6 @@
 			align_virt ? (void *)virt_to_bus(align_virt) : NULL);
 }
 
-#if defined(TOPAZ_PLATFORM)
-
 RUBY_INLINE int __topaz_hbm_is_done(void)
 {
 	return qtn_mproc_sync_mem_read(TOPAZ_HBM_POOL_REQ(TOPAZ_HBM_LOCAL_CPU)) & TOPAZ_HBM_DONE;
@@ -385,7 +383,11 @@
 	__topaz_hbm_release_buf(buf, pool);
 }
 
+#if defined(MUC_BUILD)
+RUBY_INLINE void topaz_hbm_put_buf(void *buf, uint8_t pool)
+#else
 RUBY_WEAK(topaz_hbm_put_buf) void topaz_hbm_put_buf(void *buf, uint8_t pool)
+#endif
 {
 	unsigned long flags;
 
@@ -402,7 +404,11 @@
 	return __topaz_hbm_rd_buf(pool);
 }
 
+#if defined(MUC_BUILD)
+RUBY_INLINE void *topaz_hbm_get_buf(uint8_t pool)
+#else
 RUBY_WEAK(topaz_hbm_get_buf) void *topaz_hbm_get_buf(uint8_t pool)
+#endif
 {
 	unsigned long flags;
 	void *buf;
@@ -428,10 +434,6 @@
 	qtn_mproc_sync_mem_write_wmb(TOPAZ_HBM_CSR_REG, csr | TOPAZ_HBM_CSR_Q_EN(pool));
 }
 
-#endif	/* defined(TOPAZ_PLATFORM) */
-
-#if defined(TOPAZ_PLATFORM) || defined(RUBY_SOFTWARE_HBM)
-
 RUBY_INLINE uint32_t topaz_hbm_pool_buf_whole_size(int8_t pool)
 {
 	if (pool == TOPAZ_HBM_BUF_EMAC_RX_POOL) {
@@ -788,5 +790,4 @@
 #define topaz_hbm_debug_stamp(_buf, _port, _size)
 #endif /* TOPAZ_HBM_DEBUG_STAMPS */
 
-#endif	/* defined(TOPAZ_PLATFORM) || defined(RUBY_SOFTWARE_HBM) */
 #endif	/* __TOPAZ_HBM_CPUIF_PLATFORM_H */
diff --git a/include/qtn/topaz_ipprt.h b/include/qtn/topaz_ipprt.h
index ee6b07f..206f344 100644
--- a/include/qtn/topaz_ipprt.h
+++ b/include/qtn/topaz_ipprt.h
@@ -26,8 +26,6 @@
 #include <common/topaz_emac.h>
 #include <qtn/mproc_sync_base.h>
 
-#ifdef TOPAZ_PLATFORM
-
 union topaz_ipprt_entry {
 	uint32_t raw;
 	struct {
@@ -90,6 +88,5 @@
 	return 0;
 }
 
-#endif	/* TOPAZ_PLATFORM */
 #endif	/* __TOPAZ_IPPROTO_TABLE_H */
 
diff --git a/include/qtn/topaz_qfp.h b/include/qtn/topaz_qfp.h
new file mode 100644
index 0000000..f15a2e9
--- /dev/null
+++ b/include/qtn/topaz_qfp.h
@@ -0,0 +1,143 @@
+/*
+ * (C) Copyright 2015 Quantenna Communications Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __TOPAZ_QFP_H__
+#define __TOPAZ_QFP_H__
+
+
+#define ioremap ioremap_nocache
+
+/**
+ * \brief Initialize topaz PCIe QFP interface.
+ *
+ * Initialize topaz PCIe QFP interface. This function should be called before
+ * any other QFP API call.
+ *
+ * \param pci_dev pci_dev pci_dev structure point to PCIe adapter
+ * \param msi flag for using legacy interrupt (0) or MSI (1)
+ *
+ * \return 0 on success.
+ *
+ */
+extern int qfp_init(struct pci_dev * pci_dev, int msi);
+
+/**
+ * \brief De-initialize topaz PCIe QFP interface.
+ *
+ * De-initialize topaz PCIe QFP interface.
+ *
+ * \param pci_dev pci_dev pci_dev structure point to PCIe adapter
+ * \param msi flag for using legacy interrupt (0) or MSI (1)
+ *
+ *
+ */
+extern void qfp_deinit(struct pci_dev * pci_dev, int msi);
+
+/**
+ * \brief register master netdev to QFP
+ *
+ * Register master netdev to QFP. After calling this function, packets received
+ * or transmit through this netdef will be accelerated by QFP.
+ *
+ * The caller should call this function right before calling register_netdev()
+ * for the master netdev.
+ *
+ * \param netdev pointer to master netdev
+ *
+ * \return 0 on success and other for failure
+ */
+extern int qfp_register_netdev(struct net_device * net_dev);
+
+/**
+ * \brief un-register master netdev from QFP
+ *
+ * Un-register master netdev from QFP.
+ *
+ * The caller should call this function right after calling unregister_netdev()
+ * for the master netdev.
+ *
+ * \param netdev pointer to master netdev
+ *
+ * \return 0 on success and other for failure
+ */
+extern void qfp_unregister_netdev(struct net_device * net_dev);
+
+/**
+ * \brief register virtual netdev to QFP
+ *
+ * Register virtual netdev to QFP. After calling this function, packets
+ * received or transmit through this netdef will be accelerated by QFP. This
+ * function is used to create virtual netdev for VAP.
+ *
+ * The caller should call this function right before calling register_netdev()
+ * for the virtual netdev.
+ *
+ * \param netdev pointer to virtual netdev
+ *
+ * \return 0 on success and other for failure
+ */
+extern int qfp_register_virtual_netdev(struct net_device * net_dev);
+
+/**
+ * \brief un-register virtual netdev from QFP
+ *
+ * Un-register virtual netdev from QFP.
+ *
+ * The caller should call this function right after calling unregister_netdev()
+ * for the virtual netdev.
+ *
+ * \param netdev pointer to virtual netdev
+ *
+ * \return 0 on success and other for failure
+ */
+extern void qfp_unregister_virtual_netdev(struct net_device * net_dev);
+
+/**
+ * \brief allocate skb.
+ *
+ * Allocate a skb from QFP, and all skb will be received to QFP must allocate by
+ * calling this function. The caller should call this function instead of any
+ * linux skb allocation function for RX packets.
+ *
+ * \param size max size of bytes for payload of skb
+ *
+ * \return pointer to a skb or NULL for failure
+ */
+extern struct sk_buff * qfp_alloc_skb(unsigned int size);
+
+/**
+ * \brief Receive skb to QFP.
+ *
+ * Received a skb which allocate by calling qfp_alloc_skb() to QFP. The caller
+ * should call this function instead of calling netif_rx() or netif_receive_skb()
+ * The caller loses reference to the skb when this function return successfu. And
+ * caller should still call netif_rx() or netif_receive_skb() when this function
+ * return failure.
+ *
+ * \param skb pointer to skb need to received to QFP
+ *
+ * \return 0 on success; -1 on failure
+ */
+extern int qfp_rx(struct sk_buff * skb);
+
+#endif
+
diff --git a/include/qtn/topaz_shared_params.h b/include/qtn/topaz_shared_params.h
index b19c2c3..a673848 100644
--- a/include/qtn/topaz_shared_params.h
+++ b/include/qtn/topaz_shared_params.h
@@ -49,6 +49,7 @@
 
 #include <qtn/mproc_sync_mutex.h>
 #include <qtn/qtn_uc_comm.h>
+#include <qtn/qtn_wmm_ac.h>
 
 enum shared_params_auc_ipc_cmd
 {
@@ -75,14 +76,9 @@
 	SHARED_PARAMS_IPC_M2A_PAUSE_OFF_CMD,
 	SHARED_PARAMS_IPC_M2A_NODE_RATEDATA_CHANGE_CMD,
 	SHARED_PARAMS_IPC_M2A_FCS_GIVE_CMD,
-	SHARED_PARAMS_IPC_M2A_RCV_FIRST_CMD,
-	SHARED_PARAMS_IPC_M2A_RCV_SRESET_RECOVER_CMD = SHARED_PARAMS_IPC_M2A_RCV_FIRST_CMD,
-	SHARED_PARAMS_IPC_M2A_RCV_CLEAN_CMD,
-	SHARED_PARAMS_IPC_M2A_RCV_REPLENISH_CMD,
-	SHARED_PARAMS_IPC_M2A_RCV_DBG_CMD,
-	SHARED_PARAMS_IPC_M2A_RCV_LAST_CMD,
 	SHARED_PARAMS_IPC_M2A_OCS_TX_SUSPEND_CMD,
 	SHARED_PARAMS_IPC_M2A_TQEW_DESCR_LIMIT_CMD,
+	SHARED_PARAMS_IPC_M2A_ENABLE_VLAN_CMD,
 	SHARED_PARAMS_IPC_M2A_MU_GRP_UPDATE_CMD,
 	SHARED_PARAMS_IPC_M2A_MU_QMAT_UPDATE_CMD,
 	SHARED_PARAMS_IPC_M2A_MU_DBG_FLAG_UPDATE_CMD,
@@ -96,6 +92,8 @@
 	SHARED_PARAMS_IPC_A2M_AUC_BOOTED_CMD,
 	SHARED_PARAMS_IPC_A2M_BA_ADD_START_CMD,
 	SHARED_PARAMS_IPC_A2M_PANIC,
+	SHARED_PARAMS_IPC_A2M_TDLS_PTI_CMD,
+	SHARED_PARAMS_IPC_A2M_BB_RESET,
 #if QTN_HDP_MU_FCS_WORKROUND
 	SHARED_PARAMS_IPC_A2M_PUSH_WMAC1_FCS,
 #endif
@@ -217,6 +215,7 @@
 	uint32_t arg1;
 	uint32_t arg2;
 	uint32_t arg3;
+	uint32_t ret;
 } shared_params_auc_ipc;
 
 struct qtn_auc_per_node_data_s;
@@ -238,6 +237,11 @@
 
 	uint32_t qtn_tx_mcast; /* Lhost */
 	uint32_t qtn_muc_tx_mcast; /* Muc */
+	/*
+	 * The number of dropped data packets failed to transmit through
+	 * wireless media for each traffic category(TC).
+	 */
+	uint32_t qtn_tx_drop_data_msdu[WMM_AC_NUM]; /* AuC */
 } qtn_shared_node_stats_t;
 
 typedef struct qtn_shared_vap_stats {
@@ -282,11 +286,11 @@
 	uint32_t				*auc_last_ilink2_p;
 	qtn_shared_node_stats_t			*node_stats;
 	qtn_shared_vap_stats_t			*vap_stats;
-	uint8_t					*vlan_bitmap;
-	int					*vlan_enabled;
 	uint32_t				*per_ac_traffic_prev_second;
 	struct qtn_auc_mu_grp_tbl_elem_s	*mu_grp_tbl;
-	struct qtn_hal_tcm                      *hal_wmac1_tcm;	
+	struct qtn_hal_tcm                      *hal_wmac1_tcm;
+	struct qtn_vlan_dev			**vdev_bus;
+	struct qtn_vlan_dev			**vport_bus;
 } shared_params_auc;
 
 RUBY_INLINE void
@@ -302,6 +306,7 @@
 	ipc->arg1 = arg1;
 	ipc->arg2 = arg2;
 	ipc->arg3 = arg3;
+	ipc->ret = 0;
 }
 
 RUBY_INLINE uint32_t
diff --git a/include/qtn/topaz_tqe.h b/include/qtn/topaz_tqe.h
index 0aad47e..0cce989 100644
--- a/include/qtn/topaz_tqe.h
+++ b/include/qtn/topaz_tqe.h
@@ -27,7 +27,6 @@
 #include <linux/netdevice.h>
 #include <qtn/topaz_tqe_cpuif.h>
 
-#ifdef TOPAZ_PLATFORM
 
 typedef void (*tqe_port_handler)(void *token,
 		const union topaz_tqe_cpuif_descr *descr,
@@ -38,16 +37,23 @@
 					uint8_t vap_idx);
 typedef const struct fwt_db_entry*(
 		*tqe_fwt_get_ucast_hook)(const unsigned char *src_mac_be, const unsigned char *dst_mac_be);
+typedef const struct fwt_db_entry*(
+		*tqe_fwt_get_from_mac_hook)(const unsigned char *mac_be);
+typedef int(*tqe_mac_reserved_hook)(const uint8_t *addr);
 typedef struct topaz_fwt_sw_mcast_entry*(
 		*tqe_fwt_get_mcast_ff_hook)(uint8_t vap_idx);
 typedef void(*tqe_fwt_set_mcast_ff_hook)(uint8_t vap_idx);
+typedef void(*tqe_fwt_false_miss_hook)(int fwt_index, uint8_t false_miss);
 
 int tqe_port_add_handler(enum topaz_tqe_port port, tqe_port_handler handler, void *token);
 void tqe_port_remove_handler(enum topaz_tqe_port port);
 int tqe_tx(union topaz_tqe_cpuif_ppctl *ppctl, struct sk_buff *skb);
 void tqe_register_fwt_cbk(tqe_fwt_get_mcast_hook mcast_cbk_func,
-				tqe_fwt_get_mcast_ff_hook mcast_ff_get_cbk_func);
+				tqe_fwt_get_mcast_ff_hook mcast_ff_get_cbk_func,
+				tqe_fwt_false_miss_hook false_miss_func);
 void tqe_register_ucastfwt_cbk(tqe_fwt_get_ucast_hook cbk_func);
+void tqe_register_macfwt_cbk(tqe_fwt_get_from_mac_hook cbk_func);
+void tqe_register_mac_reserved_cbk(tqe_mac_reserved_hook cbk_func);
 int tqe_rx_multicast(void *queue, const union topaz_tqe_cpuif_descr *desc);
 void tqe_port_register(const enum topaz_tqe_port port);
 void tqe_port_unregister(const enum topaz_tqe_port port);
@@ -56,7 +62,9 @@
 void tqe_port_clear_group(const enum topaz_tqe_port port);
 uint32_t switch_tqe_multi_proc_sem_down(char * funcname, int linenum);
 uint32_t switch_tqe_multi_proc_sem_up(void);
-#endif	/* TOPAZ_PLATFORM */
+int tqe_rx_l2_ext_filter(union topaz_tqe_cpuif_descr *desc, struct sk_buff *skb);
+void tqe_rx_call_port_handler(union topaz_tqe_cpuif_descr *desc,
+		struct sk_buff *skb, uint8_t *whole_frm_hdr);
 
 #endif	/* __TOPAZ_TQE_H */
 
diff --git a/include/qtn/topaz_tqe_cpuif.h b/include/qtn/topaz_tqe_cpuif.h
index 9bffceb..80b8f58 100644
--- a/include/qtn/topaz_tqe_cpuif.h
+++ b/include/qtn/topaz_tqe_cpuif.h
@@ -37,7 +37,8 @@
 	TOPAZ_TQE_DSP_PORT	= 6,
 	TOPAZ_TQE_AUC_PORT	= 7,
 
-	TOPAZ_TQE_NUM_PORTS	= 8
+	TOPAZ_TQE_NUM_PORTS	= 8,
+	TOPAZ_TQE_DUMMY_PORT	= 15
 };
 
 enum topaz_mproc_tqe_sem_id
@@ -48,9 +49,32 @@
 	TOPAZ_MPROC_TQE_SEM_AUC		= 3
 };
 
+/* bits of port_id  */
+#define PORT_ID_BITS                       8
+/* high 3 bits in port_id is used to save dev_id for 2.4G VAP */
+#define DEV_ID_BITS                        3
+
+#define MAX_QFP_NETDEV                     (1 << DEV_ID_BITS)
+#define MAX_DEV_ID                         (1 << DEV_ID_BITS)
+#define MAX_PORT_ID                        (1 << (PORT_ID_BITS - DEV_ID_BITS))
+
+#define GET_BIT_FIELD(var, offset, width) \
+		(((var) >> (offset)) & ((1 << (width)) - 1))
+
+#define INJECT_DEV_ID_TO_PORT_ID(port_id, dev_id, target) \
+		do {\
+			BUG_ON((port_id) >= MAX_PORT_ID || (dev_id) >= MAX_DEV_ID); \
+			(target) = (port_id) | ((dev_id) << (PORT_ID_BITS - DEV_ID_BITS)); \
+		} while (0)
+#define EXTRACT_PORT_ID_FROM_PORT_ID(port_id) \
+		GET_BIT_FIELD((port_id), 0, (PORT_ID_BITS - DEV_ID_BITS))
+#define EXTRACT_DEV_ID_FROM_PORT_ID(port_id) \
+		GET_BIT_FIELD((port_id), (PORT_ID_BITS - DEV_ID_BITS), DEV_ID_BITS)
+
 #define TOPAZ_TQE_PORT_NAMES	{ "emac0", "emac1", "wmac", "pcie", "lhost", "muc", "dsp", "auc", }
 #define TOPAZ_TQE_PORT_IS_EMAC(_port)	(((_port) == TOPAZ_TQE_EMAC_0_PORT) || \
 						((_port) == TOPAZ_TQE_EMAC_1_PORT))
+#define TOPAZ_TQE_PORT_IS_WMAC(_port)	((_port) == TOPAZ_TQE_WMAC_PORT)
 
 #if defined(__linux__)
 	#define TOPAZ_TQE_LOCAL_CPU	TOPAZ_TQE_LHOST_PORT
@@ -479,7 +503,7 @@
 	qtn_mproc_sync_mem_write(TOPAZ_TQE_CPUIF_PPCTL2(num), ctl->raw.ppctl2);
 	qtn_mproc_sync_mem_write(TOPAZ_TQE_CPUIF_PPCTL3(num), ctl->raw.ppctl3);
 	qtn_mproc_sync_mem_write(TOPAZ_TQE_CPUIF_PPCTL4(num), ctl->raw.ppctl4);
-	qtn_mproc_sync_mem_write(TOPAZ_TQE_CPUIF_PPCTL5(num), ctl->raw.ppctl5);
+	qtn_mproc_sync_mem_write_wmb(TOPAZ_TQE_CPUIF_PPCTL5(num), ctl->raw.ppctl5);
 	return num;
 }
 
@@ -523,7 +547,7 @@
 	}
 }
 
-RUBY_INLINE void topaz_tqe_emac_reflect_to(const uint8_t out_port)
+RUBY_INLINE void topaz_tqe_emac_reflect_to(const uint8_t out_port, const int bonded)
 {
 	if (out_port < TOPAZ_TQE_NUM_PORTS) {
 		uint32_t done_dly = qtn_mproc_sync_mem_read(TOPAZ_TQE_MISC);
@@ -531,7 +555,13 @@
 		done_dly &= ~TOPAZ_TQE_MISC_RFLCT_OUT_PORT;
 		done_dly |= SM(out_port, TOPAZ_TQE_MISC_RFLCT_OUT_PORT) |
 						TOPAZ_TQE_MISC_RFLCT_OUT_PORT_ENABLE;
+		if (bonded) {
+			done_dly |= TOPAZ_TQE_MISC_RFLCT_2_OUT_PORT_ENABLE;
+		}
 		qtn_mproc_sync_mem_write(TOPAZ_TQE_MISC, done_dly);
+#if defined (__KERNEL__) && defined (DEBUG)
+		printk("TOPAZ_TQE_MISC: 0x%x\n", done_dly);
+#endif
 	}
 }
 #endif /* #ifndef __TOPAZ_TQE_CPUIF_PLATFORM_H */
diff --git a/include/qtn/txbf_common.h b/include/qtn/txbf_common.h
index d9eb782..89677e0 100644
--- a/include/qtn/txbf_common.h
+++ b/include/qtn/txbf_common.h
@@ -55,8 +55,6 @@
 #define TXBF_CANNED_QMAT
 #undef TXBF_CANNED_QMAT
 
-#include <qtn/qtn_config.h>
-
 /* Until we get 2 tx antennas working on a 2x4 station */
 #define HAL_2x4STA_USE_4_TX_ANTENNAS
 
@@ -67,8 +65,6 @@
  */
 #define QTN_TXBF_FFT_LOCK_MANUAL	(1)
 
-#ifdef TOPAZ_PLATFORM
-
 /* VHTTXBFTBD - 11ac BF enabled by default */
 #define TXBF_ENABLE_VHT_BF
 
@@ -76,8 +72,6 @@
 /* #define TXBF_VHT_SW_FEEDBACK */
 /* #define TXBF_VHT_SW_UNCOMPRESSED */	/* for debugging */
 
-#endif /* TOPAZ_PLATFORM */
-
 /* Expansion Matrix Modes */
 #define TXBF_MODE_NO_MATRIX		0
 #define TXBF_MODE_DEFAULT_MATRIX	1
@@ -90,17 +84,17 @@
 enum txbf_buff_state
 {
 	/* Tx BF buffer for the frame is free */
-	TXBF_BUFF_FREE,
+	TXBF_BUFF_FREE		= 0,
 	/* The frame is stored in Tx BF buffer for processing and can not be released*/
-	TXBF_BUFF_IN_USE,
+	TXBF_BUFF_IN_USE	= 1,
 	/* Not used */
-	TXBF_DMA_FROM_BB,
+	TXBF_DMA_FROM_BB	= 2,
 	/* NDP only. The frame is being processed by DSP */
-	TXBF_DSP_PROC,
+	TXBF_DSP_PROC		= 3,
 	/* DSP completes frame processing */
-	TXBF_DSP_DONE,
+	TXBF_DSP_DONE		= 4,
 	/* For action frame only. Action frame is stored in action frame cache */
-	TXBF_DSP_STORED
+	TXBF_DSP_STORED		= 5
 };
 
 #define TXBF_BF_VER1	1	/* Envy */
@@ -143,6 +137,7 @@
 #define QTN_TXBF_TRIG_MU_GRP_SEL_MSG	7
 #define QTN_TXBF_RATE_TRAIN_MSG		8
 #define QTN_TXBF_RATE_TRAIN_HASH_MSG	9
+#define QTN_TXBF_NDP_DISCARD_MSG	10
 
 #define QTN_TXBF_ACT_FRM_XTRA_HDR_LEN	10
 
@@ -153,6 +148,10 @@
 
 #define MU_NDPA_TOKEN_MASK		0x1F
 
+/* Number of 10ms timeslots used on the DSP to process feedback */
+#define QTN_TXBF_SU_DSP_TIMESLOTS	1
+#define QTN_TXBF_MU_DSP_TIMESLOTS	2
+
 /* We leave backward compatibility here. As SU token value was randomly chosen as 0x33
 we now say when bit 5 is set it indicates SU sounding. */
 #define MU_NDPA_SU_MASK			0x20
@@ -195,7 +194,9 @@
 	char act_frame_sa[6];
 	char act_frame_bssid[6];
 	char slot;
-	char mu_grp_id[QTN_MU_QMAT_MAX_SLOTS];
+	uint8_t mu_grp_id[QTN_MU_QMAT_MAX_SLOTS];
+	uint8_t vapid;
+	unsigned counter;
 };
 
 #define IEEE80211_ADDR_LEN	6
@@ -267,11 +268,7 @@
 #define QTN_MAX_STREAMS			4
 #define QTN_MAX_40M_VHT_STREAMS		2
 #define QTN_MAX_20M_VHT_STREAMS		2
-#ifdef TOPAZ_PLATFORM
 #define QTN_MAX_IOT_QMAT_STREAMS	3
-#else
-#define QTN_MAX_IOT_QMAT_STREAMS	2
-#endif
 
 /*
  * Default decimation used for matrices in Q memory. Some matrices
@@ -284,18 +281,8 @@
 
 #define NDP_START_DELAY		2		/* in seconds  */
 
-#ifdef TOPAZ_PLATFORM
 #define STVEC_SIZE_BYTES_1STRM_20M 0x100	/* Assumes NG 1 matrices */
 #define STVEC_MAX_NODES		10
-#else /* TOPAZ_PLATFORM */
-#ifdef TXBF_6_STA_BF
-#define STVEC_SIZE_BYTES_1STRM_20M 0x100	/* Assumes NG 1 matrices */
-#define STVEC_MAX_NODES		6
-#else
-#define STVEC_SIZE_BYTES_1STRM_20M 0x200	/* Assumes NG 0 matrices */
-#define STVEC_MAX_NODES		3
-#endif /* TXBF_6_STA_BF */
-#endif /* TOPAZ_PLATFORM */
 
 /*
  * Matrix sizes for NG 1 matrices
@@ -311,28 +298,24 @@
 #define STVEC_SIZE_BYTES_4STRM_20M (STVEC_SIZE_BYTES_2STRM_20M << 1)
 #define STVEC_SIZE_BYTES_4STRM_40M (STVEC_SIZE_BYTES_2STRM_40M << 1)
 #define STVEC_SIZE_BYTES_4STRM_80M (STVEC_SIZE_BYTES_4STRM_40M << 1)
-#ifdef TOPAZ_PLATFORM
 #define STVEC_SIZE_BYTES_1STRM_MAX STVEC_SIZE_BYTES_1STRM_80M
 #define STVEC_SIZE_BYTES_2STRM_MAX STVEC_SIZE_BYTES_2STRM_80M
 #define STVEC_SIZE_BYTES_3STRM_MAX STVEC_SIZE_BYTES_3STRM_80M
 #define STVEC_SIZE_BYTES_4STRM_MAX STVEC_SIZE_BYTES_4STRM_80M
-#else
-#define STVEC_SIZE_BYTES_1STRM_MAX STVEC_SIZE_BYTES_1STRM_40M
-#define STVEC_SIZE_BYTES_2STRM_MAX STVEC_SIZE_BYTES_2STRM_40M
-#define STVEC_SIZE_BYTES_3STRM_MAX STVEC_SIZE_BYTES_3STRM_40M
-#define STVEC_SIZE_BYTES_4STRM_MAX STVEC_SIZE_BYTES_4STRM_40M
-#endif
 
-#define NDP_SIZE_BYTES_20M   1024
-#define NDP_SIZE_BYTES_40M   (NDP_SIZE_BYTES_20M << 1)
-#ifdef TOPAZ_PLATFORM
-#define NDP_SIZE_BYTES_80M   (NDP_SIZE_BYTES_40M << 1)
-#define NDP_SIZE_BYTES_MAX   NDP_SIZE_BYTES_80M
-#else
-#define NDP_SIZE_BYTES_MAX   NDP_SIZE_BYTES_40M
+#ifndef QTN_BW_20M
+# define QTN_BW_20M 0
+# define QTN_BW_40M 1
+# define QTN_BW_80M 2
 #endif
+#define QTN_BW_SW_MAX QTN_BW_80M
 
-#ifdef TOPAZ_PLATFORM
+#define NDP_SIZE_BYTES_BASE	1024
+#define NDP_SIZE_BYTES_20M	(NDP_SIZE_BYTES_BASE << QTN_BW_20M)
+#define NDP_SIZE_BYTES_40M	(NDP_SIZE_BYTES_BASE << QTN_BW_40M)
+#define NDP_SIZE_BYTES_80M	(NDP_SIZE_BYTES_BASE << QTN_BW_80M)
+#define NDP_SIZE_BYTES_MAX	(NDP_SIZE_BYTES_BASE << QTN_BW_SW_MAX)
+
 /*
  * Q matrix defines for 80 MHz nodes using NG 1
  */
@@ -408,7 +391,6 @@
 							QTN_TXBF_QMAT80_NG2_2STRM_MAT_TOTAL + \
 							QTN_TXBF_QMAT80_NG2_3STRM_MAT_TOTAL + \
 							QTN_TXBF_QMAT80_NG2_4STRM_MAT_TOTAL)
-#endif
 /*
  * Q matrix defines for 40 MHz nodes using NG 1
  */
@@ -444,27 +426,15 @@
 /*
  * Defines for dividing Q memory into slots for nodes using standard BF
  */
-#ifdef TOPAZ_PLATFORM
 #define QTN_TXBF_QMAT_SLOT_SIZE			MAX(QTN_TXBF_QMAT40_TOTAL_SIZE, \
 							QTN_TXBF_QMAT80_TOTAL_SIZE / 2)
-#else
-#ifdef TXBF_6_STA_BF
-#define QTN_TXBF_QMAT_SLOT_SIZE			(QTN_TXBF_QMAT40_TOTAL_SIZE)
-#else
-#define QTN_TXBF_QMAT_SLOT_SIZE	10 * 1024
-#endif
-#endif
 
 #define QTN_TXBF_QMAT_SLOTS_USED(qn)	(MAX(1, ((qn)->qn_node.ni_bw_cap >>		\
 					MAX(((qn)->qn_expmat.ng - QTN_TXBF_DEFAULT_QMAT_NG), 0))))
 
 #define QTN_TXBF_QMAT_SLOT(idx)		((idx) * QTN_TXBF_QMAT_SLOT_SIZE)
 
-#ifdef TOPAZ_PLATFORM
 #define QTN_TXBF_QMAT_OFFSET_SHIFT		6
-#else
-#define QTN_TXBF_QMAT_OFFSET_SHIFT		5
-#endif
 
 /*
  * Defines for fixed matrix (BBF and default) sizes
@@ -497,7 +467,6 @@
 /*
  * Fixed 2x4 node matrix definitions
  */
-#ifdef TOPAZ_PLATFORM
 /*
  * 80MHz 2x4 matrices need to start in normal BF area to fit,
  * this is OK, as they are used on the station only at present
@@ -505,18 +474,9 @@
 #define QTN_TXBF_QMAT_2x4STA_1_STRM_OFFSET	(QTN_TXBF_QMAT_SLOT_SIZE * (STVEC_MAX_NODES - 1))
 #define QTN_TXBF_QMAT_2x4STA_2_STRM_OFFSET	(QTN_TXBF_QMAT_2x4STA_1_STRM_OFFSET + \
 						STVEC_SIZE_BYTES_1STRM_80M)
-#else
-/*
- * Both 2x4 and the standard matrices use the same start offset, since 2x4 matrices
- * are only loaded on stations and standard/BBF matrices are only loaded on APs
- */
-#define QTN_TXBF_QMAT_2x4STA_1_STRM_OFFSET	QTN_TXBF_QMAT_FIXED_MAT_START
-#define QTN_TXBF_QMAT_2x4STA_2_STRM_OFFSET	(QTN_TXBF_QMAT_2x4STA_1_STRM_OFFSET + \
-						STVEC_SIZE_BYTES_1STRM_40M)
-#endif
 
-#define QTN_TXBF_2x4STA_1SS_TONE_DATA	{0x007F007F, 0x00000000}
-#define QTN_TXBF_2x4STA_2SS_TONE_DATA	{0x0000007F, 0x007F0000, 0x00000000, 0x00000000}
+#define QTN_TXBF_2x4STA_1SS_TONE_DATA	{0x00400040, 0x00000000}
+#define QTN_TXBF_2x4STA_2SS_TONE_DATA	{0x00000040, 0x00400000, 0x00000000, 0x00000000}
 
 /*
  * Fixed default matrix offset definitions
@@ -532,11 +492,7 @@
 
 #define QTN_TXBF_IOT_QMAT_START			(QTN_TXBF_QMAT_STD_4_STRM_OFFSET + \
 						QTN_TXBF_IOT_QMAT_4SS_MEM)
-#ifdef TOPAZ_PLATFORM
 #define QTN_TXBF_IOT_QMAT_TONES			2	/* number of tones for fixed matrices */
-#else
-#define QTN_TXBF_IOT_QMAT_TONES			1	/* number of tones for fixed matrices */
-#endif
 
 /*
  * BBF slot and matrix offset definitions
@@ -574,11 +530,7 @@
 #define QTN_TXBF_TONES_PER_CHAN 64
 #define QTN_TXBF_MAX_TONES	128
 #define QTN_TXBF_MIN_TONES	1
-#ifdef TOPAZ_PLATFORM
 #define	QTN_TXBF_MODE	4 /* 80MHz Mode */
-#else
-#define	QTN_TXBF_MODE	2 /* 40MHz Mode */
-#endif
 
 enum {
 	SVD_MODE_STREAM_MIXING =0,
@@ -601,19 +553,53 @@
 	#define QT4_BB_MIMO_BF_RX_INIT_VAL	(QT3_BB_MIMO_BF_RX_INIT_VAL)
 #endif
 
-/* qmat SRAM mem layout */
-#define QTN_SRAM_QMAT_LEN_BYTES		8
-#define QTN_SRAM_MU_1SS_1SS_SIZE	(QTN_SRAM_QMAT_LEN_BYTES + STVEC_SIZE_BYTES_2STRM_80M)
-#define QTN_SRAM_MU_2SS_1SS_SIZE	(QTN_SRAM_QMAT_LEN_BYTES + STVEC_SIZE_BYTES_3STRM_80M)
-#define QTN_SRAM_MU_3SS_1SS_SIZE	(QTN_SRAM_QMAT_LEN_BYTES + STVEC_SIZE_BYTES_4STRM_80M)
-#define QTN_SRAM_MU_1SS_2SS_SIZE	QTN_SRAM_MU_2SS_1SS_SIZE
-#define QTN_SRAM_MU_1SS_3SS_SIZE	QTN_SRAM_MU_3SS_1SS_SIZE
-#define QTN_SRAM_MU_2SS_2SS_SIZE	(QTN_SRAM_QMAT_LEN_BYTES + STVEC_SIZE_BYTES_4STRM_80M)
+/* should be 64 bytes aligned (expmat ptr in TxVector drops lower 5 bits)*/
+struct phys_qmat_layout {
+	uint64_t length;
+	int8_t body[0];
+} __packed;
+
+// TODO: describe bodies as 2 dimensional arrays
+struct phys_qmat_1x1 {
+	uint64_t length;
+	int8_t body[STVEC_SIZE_BYTES_2STRM_80M];
+} __packed;
+
+struct phys_qmat_2x1 {
+	uint64_t length;
+	int8_t body[STVEC_SIZE_BYTES_3STRM_80M];
+} __packed;
+
+struct phys_qmat_3x1 {
+	uint64_t length;
+	int8_t body[STVEC_SIZE_BYTES_4STRM_80M];
+} __packed;
+
+struct phys_qmat_1x2 {
+	uint64_t length;
+	int8_t body[STVEC_SIZE_BYTES_3STRM_80M];
+} __packed;
+
+struct phys_qmat_1x3 {
+	uint64_t length;
+	int8_t body[STVEC_SIZE_BYTES_4STRM_80M];
+} __packed;
+
+struct phys_qmat_2x2 {
+	uint64_t length;
+	int8_t body[STVEC_SIZE_BYTES_4STRM_80M];
+} __packed;
+
+struct phys_qmat_dummy {
+	uint64_t length;
+	int8_t body[0x10];
+} __packed;
+
 /* structure to hold MU group qmatrix info */
 struct qtn_sram_qmat {
 	uint8_t valid;   /* set to 1 when it is occupied, 0 indicates it is free */
 	uint8_t grp_id;  /* MU group id */
-	uint8_t padding[2];
+	uint16_t tk;	/* Token */
 	uint16_t u0_aid;  /* user position 0 AID */
 	uint16_t u1_aid;  /* user position 1 AID */
 	int32_t rank;
@@ -626,6 +612,7 @@
 	uint32_t u0_1ss_u1_2ss;
 	uint32_t u0_1ss_u1_3ss;
 	uint32_t u0_2ss_u1_2ss;
+	uint32_t dsp_cnt;
 } __packed;
 
 struct qtn_grp_rank {
@@ -643,36 +630,20 @@
 #define TXBF_EXPMAT_TYPE_2_QMEM_MODE 2
 #define TXBF_EXPMAT_TYPE_5_QREG_MODE 5
 
-#ifdef TOPAZ_PLATFORM
-#define QTN_TXBF_QMAT_STD_1SS_TONE_DATA	{0x007F007F, 0x007F007F, 0x007F007F, 0x007F007F}
-#define QTN_TXBF_QMAT_STD_2SS_TONE_DATA	{0x005B005B, 0x5B00005B, 0x00A5005B, 0xA500005B, \
-					0x005B005B, 0x5B00005B, 0x00A5005B, 0xA500005B}
-#define QTN_TXBF_QMAT_STD_3SS_TONE_DATA	{0x004A004A, 0x004A004A, 0x00B64A00, 0x00B6004A, \
-					0x004A004A, 0x00B6B600, 0x004A004A, 0x004A004A, \
-					0x00B64A00, 0x00B6004A, 0x004A004A, 0x00B6B600}
-#define QTN_TXBF_QMAT_STD_4SS_TONE_DATA	{0x0000007F, 0x00000000, 0x007F0000, 0x00000000, \
-					0x00000000, 0x0000007F, 0x00000000, 0x007F0000, \
-					0x0000007F, 0x00000000, 0x007F0000, 0x00000000, \
-					0x00000000, 0x0000007F, 0x00000000, 0x007F0000}
-#else
-#define QTN_TXBF_QMAT_STD_1SS_TONE_DATA	{0x007F007F, 0x007F007F}
-#define QTN_TXBF_QMAT_STD_2SS_TONE_DATA	{0x005B005B, 0x5B00005B, 0x00A5005B, 0xA500005B}
-#define QTN_TXBF_QMAT_STD_3SS_TONE_DATA	{0x004A004A, 0x004A004A, 0x00B64A00, 0x00B6004A, \
-					0x004A004A, 0x00B6B600}
-#define QTN_TXBF_QMAT_STD_4SS_TONE_DATA	{0x0000007F, 0x00000000, 0x007F0000, 0x00000000, \
-					0x00000000, 0x0000007F, 0x00000000, 0x007F0000}
-#endif
-
-#ifndef QTN_BW_20M
-#define QTN_BW_20M 0
-#define QTN_BW_40M 1
-#define QTN_BW_80M 2
-#endif
+#define QTN_TXBF_QMAT_STD_1SS_TONE_DATA	{0x00400040, 0x00400040, 0x00400040, 0x00400040}
+#define QTN_TXBF_QMAT_STD_2SS_TONE_DATA	{0x002D002D, 0x2D00002D, 0x00D3002D, 0xD300002D, \
+					0x002D002D, 0x2D00002D, 0x00D3002D, 0xD300002D}
+#define QTN_TXBF_QMAT_STD_3SS_TONE_DATA	{0x00250025, 0x00250025, 0x00DB2500, 0x00DB0025, \
+					0x00250025, 0x00DBDB00, 0x00250025, 0x00250025, \
+					0x00DB2500, 0x00DB0025, 0x00250025, 0x00DBDB00}
+#define QTN_TXBF_QMAT_STD_4SS_TONE_DATA	{0x00000040, 0x00000000, 0x00400000, 0x00000000, \
+					0x00000000, 0x00000040, 0x00000000, 0x00400000, \
+					0x00000040, 0x00000000, 0x00400000, 0x00000000, \
+					0x00000000, 0x00000040, 0x00000000, 0x00400000}
 
 static __inline__ uint8_t qtn_txbf_get_bf_qmat_offsets(uint32_t *expmat_ss, uint8_t max,
 		uint32_t qmat_base_offset, uint8_t node_bw, uint8_t bw, uint8_t ng)
 {
-#ifdef TOPAZ_PLATFORM
 	if ((bw == QTN_BW_40M) && (node_bw == QTN_BW_80M)) {
 		if (ng == QTN_TXBF_DEFAULT_QMAT_NG) {
 			expmat_ss[0] = QTN_TXBF_QMAT80_1STRM_40M_OFFSET(qmat_base_offset);
@@ -718,20 +689,7 @@
 			expmat_ss[3] = QTN_TXBF_QMAT40_4STRM_OFFSET(qmat_base_offset);
 		}
 	}
-#else
-	if ((bw == QTN_BW_20M) && (node_bw > QTN_BW_20M)) {
-		expmat_ss[0] = QTN_TXBF_QMAT40_1STRM_20M_OFFSET(qmat_base_offset);
-		expmat_ss[1] = QTN_TXBF_QMAT40_2STRM_20M_OFFSET(qmat_base_offset);
-	} else {
-		expmat_ss[0] = QTN_TXBF_QMAT40_1STRM_OFFSET(qmat_base_offset);
-		expmat_ss[1] = QTN_TXBF_QMAT40_2STRM_OFFSET(qmat_base_offset);
-		if (max == QTN_MAX_STREAMS) {
-			expmat_ss[2] = QTN_TXBF_QMAT40_3STRM_OFFSET(qmat_base_offset);
-			expmat_ss[3] = QTN_TXBF_QMAT40_4STRM_OFFSET(qmat_base_offset);
-		}
-	}
 
-#endif
 	return (QTN_MAX_STREAMS - 1);
 }
 
diff --git a/include/qtn/txbf_mbox.h b/include/qtn/txbf_mbox.h
index df129f5..7051987 100644
--- a/include/qtn/txbf_mbox.h
+++ b/include/qtn/txbf_mbox.h
@@ -62,60 +62,144 @@
 #if DSP_ENABLE_STATS
 struct qtn_dsp_stats {
 	uint32_t dsp_ndp_rx;
+
+	/* Per-node DSP stats */
+
+	/* Total number of feedbacks received */
 	uint32_t dsp_act_rx[DSP_ACT_RX_DBG_SIZE];
+
+	/* Number of SU feedbacks */
+	uint32_t dsp_act_rx_su[DSP_ACT_RX_DBG_SIZE];
+
+	/* Number of MU group selection feedbacks */
+	uint32_t dsp_act_rx_mu_grp_sel[DSP_ACT_RX_DBG_SIZE];
+
+	/* Number of MU precoding feedbacks */
+	uint32_t dsp_act_rx_mu_prec[DSP_ACT_RX_DBG_SIZE];
+
+	/* Number of bad feedbacks, i.e. those that are not met SU nor MU criteria */
+	uint32_t dsp_act_rx_bad[DSP_ACT_RX_DBG_SIZE];
+
+	/*
+	 * Number of feedbacks that were not places into the cache due to any reason. Counters for two reasons
+	 * are just below
+	 */
+	uint32_t dsp_act_rx_mu_drop[DSP_ACT_RX_DBG_SIZE];
+
+	/* The number of MU feedback not placed into the cache as the previous one has not been exprired */
+	uint32_t dsp_act_rx_mu_nexp[DSP_ACT_RX_DBG_SIZE];
+
+	/* The number of MU feedback not placed into the cache due to cache is locked */
+	uint32_t dsp_act_rx_mu_lock_cache[DSP_ACT_RX_DBG_SIZE];
+
+	/*
+	 * The number of precoding feedback was released unused, i.e. not participated in QMat calculation.
+	 * It means the buddy feedback either have not been received or received after cache expiration time
+	 */
+	uint32_t dsp_act_rx_mu_rel_nuse[DSP_ACT_RX_DBG_SIZE];
+
+	/* The number of MU feedback for which dsp_qmat_check_act_len is failed */
+	uint32_t dsp_act_rx_inval_len[DSP_ACT_RX_DBG_SIZE];
+
 	uint32_t dsp_del_mu_node_rx;
 	uint32_t dsp_ipc_in;
 	uint32_t dsp_ipc_out;
 	uint32_t dsp_sleep_in;
 	uint32_t dsp_sleep_out;
 	uint32_t dsp_act_tx;
+	uint32_t dsp_ndp_discarded;
+	uint32_t dsp_ndp_inv_len;
+	uint32_t dsp_ndp_max_len;
+	uint32_t dsp_ndp_inv_bw;
 	uint32_t dsp_act_free_tx;
 	uint32_t dsp_inst_mu_grp_tx;
 	uint32_t dsp_qmat_invalid;
-	uint32_t dsp_sram_qmat_num;
+/* Number or QMat currently installed */
+	int32_t dsp_sram_qmat_num;
+/*
+ * Number of times dsp_sram_qmat_num becomes negative. Non zero value signals that the number
+ * of QMat de-installation is more than the number of installations. This is an error condition but not a critical one
+ */
+	uint32_t dsp_err_neg_qmat_num;
 	uint32_t dsp_flag;
-
-	uint32_t dsp_ipc_int_in;
-	uint32_t dsp_ipc_int_out;
+	/* Interrupts */
+	uint32_t dsp_ipc_int;
+	uint32_t dsp_timer_int;
+	uint32_t dsp_timer1_int;
 	uint32_t dsp_last_int;
+
+	uint32_t dsp_exc;
 	/* registers */
 	uint32_t dsp_status32;
 	uint32_t dsp_status32_l1;
 	uint32_t dsp_status32_l2;
 	uint32_t dsp_ilink1;
 	uint32_t dsp_ilink2;
+	uint32_t dsp_blink;
 	uint32_t dsp_sp;
 	uint32_t dsp_time;
 
 	uint32_t dsp_point;
 	uint32_t dsp_stat_bad_stack;
 
-	/* lock counters */
-	uint32_t dsp_txbf_msg_lock;
-
 	int16_t dspmu_D_user1[4];
 	int16_t dspmu_D_user2[4];
 	int16_t dspmu_max_intf_user1;
 	int16_t dspmu_max_intf_user2;
-
-	uint32_t dsp_act_rx_grp_sel;
-	uint32_t dsp_act_rx_precoding;
+	int16_t rank_criteria;
 	uint32_t dsp_trig_mu_grp_sel;
 	uint32_t dsp_mu_rank_success;
-	uint32_t dsp_mu_rank_negative;
 	uint32_t dsp_mu_rank_fail;
-	uint32_t dsp_mu_grp_inst_success;
+
+	/* The number of failed group installations */
 	uint32_t dsp_mu_grp_inst_fail;
+
+	/* Per-MU group DSP stats */
+	/* The number of successful group installations */
+	uint32_t dsp_mu_grp_inst_success[QTN_MU_QMAT_MAX_SLOTS];
+	/* The number of successful QMat installations */
+	uint32_t dsp_mu_grp_update_success[QTN_MU_QMAT_MAX_SLOTS];
+	/* The number of failed QMat installations */
+	uint32_t dsp_mu_grp_update_fail[QTN_MU_QMAT_MAX_SLOTS];
+	/* Group's AID 0 */
+	uint32_t dsp_mu_grp_aid0[QTN_MU_QMAT_MAX_SLOTS];
+	/* Group's AID 1 */
+	uint32_t dsp_mu_grp_aid1[QTN_MU_QMAT_MAX_SLOTS];
+	/* Group's rank */
+	int32_t dsp_mu_grp_rank[QTN_MU_QMAT_MAX_SLOTS];
+
+	/*
+	 * Distribution (histogram) of MU QMat copying time
+	 0:  0- 3us
+	 1:  4- 7us
+	 ...............
+	 3: 12+ us
+	 */
+#define DSP_MU_QMAT_COPY_TIME_HIST_WIDTH_US	4
+	uint32_t dsp_mu_qmat_qmem_copy_time_hist[4];
+	uint32_t dsp_mu_qmat_qmem_copy_time_max;
+
+	/*
+	 * Distribution (histogram) of MU QMat calculation and installation time
+	 0:  0- 3ms
+	 1:  4- 7ms
+	 ...............
+	 3: 12+ ms
+	 */
+#define DSP_MU_QMAT_INST_TIME_HIST_WIDTH_MS	6
+	uint32_t dsp_mu_qmat_inst_time_hist[8];
+	uint32_t dsp_mu_qmat_inst_time_max;
+
 	uint32_t dsp_mu_grp_inv_act;
 	uint32_t dsp_act_cache_expired[2];
 	uint32_t dsp_mu_grp_upd_done;
-	uint32_t dsp_mu_mu_node_del;
-	uint32_t dsp_mu_locked_cache_op;
+	uint32_t dsp_mu_node_del;
 
-	uint32_t dsp_su_act_rx;
-	uint32_t dsp_mu_act_rx;
-	uint32_t dsp_act_frm_bad;
 	uint32_t dsp_mimo_ctrl_fail;
+	uint32_t dsp_mu_fb_80mhz;
+	uint32_t dsp_mu_fb_40mhz;
+	uint32_t dsp_mu_fb_20mhz;
+	uint32_t dsp_mu_drop_20mhz;
 };
 #endif
 
@@ -142,22 +226,26 @@
 #define DEBUG_LVL_ALL	1
 	volatile uint32_t debug_level;
 
-#define MU_QMAT_FREEZE		0x00000001
-#define MU_MANUAL_RANK		0x00000002
-#define MU_FREEZE_RANK		0x00000004
-#define MU_QMAT_ZERO_STA0	0x00000010
-#define MU_QMAT_ZERO_STA1	0x00000020
-#define MU_QMAT_PRINT_CHMAT	0x00000100
-#define MU_QMAT_PRINT_PRECMAT	0x00000200
-#define MU_QMAT_PRINT_SNR	0x00000400
-#define MU_QMAT_PRINT_RANK	0x00000800
-#define MU_QMAT_PRINT_STUFFMEM  0x00001000
-#define MU_QMAT_PRINT_ACTFRM    0x00002000
-#define MU_PROJ_PREC_MUEQ_NEED_MASK	0x000F0000
-#define MU_PROJ_PREC_MUEQ_NEED_NC0_MASK	0x00030000
+#define MU_QMAT_FREEZE				0x00000001
+#define MU_MANUAL_RANK				0x00000002
+#define MU_FREEZE_RANK				0x00000004
+#define MU_QMAT_ZERO_STA0			0x00000010
+#define MU_QMAT_ZERO_STA1			0x00000020
+#define MU_QMAT_PRINT_CHMAT			0x00000100
+#define MU_QMAT_PRINT_PRECMAT			0x00000200
+#define MU_QMAT_PRINT_SNR			0x00000400
+#define MU_QMAT_PRINT_RANK			0x00000800
+#define MU_QMAT_PRINT_STUFFMEM			0x00001000
+#define MU_QMAT_PRINT_ACTFRM			0x00002000
+#define MU_MATLAB_PROCESS			0x00004000
+#define MU_V_ANGLE				0x00008000
+#define MU_PROJ_PREC_MUEQ_NEED_MASK		0x000F0000
+#define MU_PROJ_PREC_MUEQ_NEED_NC0_MASK		0x00030000
 #define MU_PROJ_PREC_MUEQ_NEED_NC0_SHIFT	16
-#define MU_PROJ_PREC_MUEQ_NEED_NC1_MASK	0x000C0000
+#define MU_PROJ_PREC_MUEQ_NEED_NC1_MASK		0x000C0000
 #define MU_PROJ_PREC_MUEQ_NEED_NC1_SHIFT	18
+#define MU_PRINT_RANK_INFO			0x00100000
+#define MU_LIMIT_GRP_ENTRY			0x00300000
 	volatile uint32_t debug_flag;
 	volatile struct qtn_sram_qmat mu_grp_qmat[QTN_MU_QMAT_MAX_SLOTS];
 	/* Used for testing to set rank for STA pairs manually */
@@ -166,15 +254,28 @@
 	volatile struct qtn_dsp_stats dsp_stats;
 #endif
 
-#define MU_ALGORITHM_AUTO	0x00000000
-#define MU_ALGORITHM_PROJECTION	0x00000001
-#define MU_ALGORITHM_ITERATION	0x00000002
-#define MU_PRECODING_ALGORITHM_DEFAULT  MU_ALGORITHM_AUTO
-#define MU_RANKING_ALGORITHM_DEFAULT    MU_ALGORITHM_AUTO
+#define MU_ALGORITHM_AUTO		0x00000000
+#define MU_ALGORITHM_PROJECTION		0x00000001
+#define MU_ALGORITHM_ITERATION		0x00000002
+#define MU_PRECODING_ALGORITHM_DEFAULT	MU_ALGORITHM_PROJECTION
+#define MU_RANKING_ALGORITHM_DEFAULT	MU_ALGORITHM_AUTO
 /* in case of adding algorithms above please update below equation accordingly */
 #define MU_ALLOWED_ALG(x) ((x)<=MU_ALGORITHM_ITERATION)
 	volatile uint32_t ranking_algorithm_to_use;
 	volatile uint32_t precoding_algorithm_to_use;
+#define RANK_CRIT_ONE_AND_ONE	0x00000000
+#define RANK_CRIT_TWO_AND_ONE	0x00000001
+#define RANK_CRIT_THREE_AND_ONE	0x00000002
+#define RANK_CRIT_ONE_AND_TWO	0x00000003
+#define RANK_CRIT_ONE_AND_THREE	0x00000004
+#define RANK_CRIT_TWO_AND_TWO	0x00000005
+#define RANK_CRIT_MAX_MU_SUB_MAX_SU	0x00000006
+#define RANK_CRIT_DEFAULT	RANK_CRIT_TWO_AND_TWO
+#define RANK_CRIT_NO_USER_CONF	0x0000000f
+	volatile uint32_t rank_criteria_to_use;
+
+	volatile uint32_t mu_prec_cache_max_time;
+	volatile int32_t mu_rank_tolerance;
 };
 
 struct qtn_muc_dsp_mbox
@@ -280,11 +381,11 @@
 	return mbox->wr;
 }
 
-RUBY_INLINE struct qtn_txbf_mbox*
+RUBY_INLINE volatile struct qtn_txbf_mbox*
 qtn_txbf_mbox_get(void)
 {
 #if defined(MUC_BUILD) || defined(DSP_BUILD) || defined(AUC_BUILD)
-	return (struct qtn_txbf_mbox*)qtn_mproc_sync_nocache
+	return qtn_mproc_sync_nocache
 		(qtn_mproc_sync_shared_params_get()->txbf_mbox_bus);
 #else
 	/* Linux target */
@@ -292,11 +393,11 @@
 #endif
 }
 
-RUBY_INLINE struct qtn_muc_dsp_mbox*
+RUBY_INLINE volatile struct qtn_muc_dsp_mbox*
 qtn_muc_dsp_mbox_get(void)
 {
 #if defined(MUC_BUILD) || defined(DSP_BUILD) || defined(AUC_BUILD)
-	return (struct qtn_muc_dsp_mbox*)qtn_mproc_sync_nocache
+	return qtn_mproc_sync_nocache
 		(qtn_mproc_sync_shared_params_get()->muc_dsp_mbox_bus);
 #else
 	/* Linux target */
@@ -397,6 +498,14 @@
 #endif
 }
 
+/*
+* qtn_txbf_mbox can be used to set parameters for DSP core from other cores.
+* Ideally this way should be reworked but until it happens lets use dedicated macros to access such parameters
+* to distibuish this qtn_txbf_mbox usage purpose from others (IPC, BF feedbacks exchange)
+*/
+#define DSP_PARAM_GET(param) (qtn_txbf_mbox_get()->param)
+#define DSP_PARAM_SET(param, value) qtn_txbf_mbox_get()->param = (value)
+
 #endif // #ifndef __ASSEMBLY__
 
 #endif // #ifndef __QTN_TXBF_MBOX_H
diff --git a/include/shared/net80211/_ieee80211.h b/include/shared/net80211/_ieee80211.h
index d80645f..1669ee4 100644
--- a/include/shared/net80211/_ieee80211.h
+++ b/include/shared/net80211/_ieee80211.h
@@ -85,6 +85,17 @@
 #define IEEE80211_BM_11NA_MINUS	(1 << IEEE80211_MODE_11B)
 */
 
+#define IEEE80211_IS_11A(_c) \
+	((_c)->ic_phymode == IEEE80211_MODE_11A)
+
+#define IEEE80211_IS_11NA_20(_c) \
+	((_c)->ic_phymode == IEEE80211_MODE_11NA)
+
+#define IEEE80211_IS_11NA_40(_c) \
+	((_c)->ic_phymode == IEEE80211_MODE_11NA_HT40PM)
+
+#define IS_IEEE80211_11NA(_c) \
+	(IEEE80211_IS_11NA_20(_c) || IEEE80211_IS_11NA_40(_c))
 
 #define IEEE80211_IS_VHT_20(_c) \
 	((_c)->ic_phymode == IEEE80211_MODE_11AC_VHT20PM)
@@ -102,6 +113,48 @@
 	(IEEE80211_IS_VHT_160(_c) || IEEE80211_IS_VHT_80(_c)\
 	|| IEEE80211_IS_VHT_40(_c) || IEEE80211_IS_VHT_20(_c))
 
+#define IS_IEEE80211_5G_BAND(_c) \
+	(IEEE80211_IS_11A(_c) || IS_IEEE80211_11NA(_c) || IS_IEEE80211_VHT_ENABLED(_c))
+
+#define IEEE80211_IS_11B(_c) \
+	((_c)->ic_phymode == IEEE80211_MODE_11B)
+
+#define IEEE80211_IS_11G(_c) \
+	((_c)->ic_phymode == IEEE80211_MODE_11G)
+
+#define IEEE80211_IS_11NG_20(_c) \
+	((_c)->ic_phymode == IEEE80211_MODE_11NG)
+
+#define IEEE80211_IS_11NG_40(_c) \
+	((_c)->ic_phymode == IEEE80211_MODE_11NG_HT40PM)
+
+#define IS_IEEE80211_11NG(_c) \
+	(IEEE80211_IS_11NG_20(_c) || IEEE80211_IS_11NG_40(_c))
+
+#define IS_IEEE80211_24G_BAND(_c) \
+	(IEEE80211_IS_11B(_c) || IEEE80211_IS_11G(_c) || IS_IEEE80211_11NG(_c))
+
+#define IEEE80211_MODE_IS_11B(m) \
+	((m) == IEEE80211_MODE_11B)
+
+#define IEEE80211_MODE_IS_11G(m) \
+	((m) == IEEE80211_MODE_11G)
+
+#define IEEE80211_MODE_IS_11NG_20(m) \
+	((m) == IEEE80211_MODE_11NG)
+
+#define IEEE80211_MODE_IS_11NG_40(m) \
+	((m) == IEEE80211_MODE_11NG_HT40PM)
+
+#define IS_IEEE80211_MODE_24G_BAND(m) \
+	(IEEE80211_MODE_IS_11B(m) || IEEE80211_MODE_IS_11G(m) || IEEE80211_MODE_IS_11NG_20(m) || IEEE80211_MODE_IS_11NG_40(m))
+
+#define IS_IEEE80211_11NG_VHT_ENABLED(_c) \
+	(IS_IEEE80211_11NG(_c) && ((_c)->ic_flags_ext & IEEE80211_FEXT_24GVHT))
+
+#define IS_IEEE80211_DUALBAND_VHT_ENABLED(_c) \
+	(IS_IEEE80211_VHT_ENABLED(_c) || IS_IEEE80211_11NG_VHT_ENABLED(_c))
+
 enum ieee80211_opmode {
 	IEEE80211_M_STA		= 1,	/* infrastructure station */
 	IEEE80211_M_IBSS	= 0,	/* IBSS (adhoc) station */
@@ -111,6 +164,11 @@
 	IEEE80211_M_WDS		= 2	/* WDS link */
 };
 
+enum ieee80211_pref_band {
+	IEEE80211_2_4Ghz	= 0,
+	IEEE80211_5Ghz		= 1
+};
+
 /*
  * True if this mode must behave like a DFS master, ie do Channel
  * Check Availability and In Service Monitoring. We need to make sure
@@ -263,7 +321,29 @@
 };
 
 #define IEEE80211_OPER_CLASS_MAX	256
-#define	IEEE80211_OPER_CLASS_BYTES	32	/* howmany(IEEE80211_OPER_CLASS_MAX, NBBY) */
+#define	IEEE80211_OPER_CLASS_BYTES	32
+#define	IEEE80211_OPER_CLASS_BYTES_24G	8
+
+#define IEEE80211_OC_BEHAV_DFS_50_100		0x0001
+#define IEEE80211_OC_BEHAV_NOMADIC		0x0002
+#define IEEE80211_OC_BEHAV_LICEN_EXEP		0x0004
+#define IEEE80211_OC_BEHAV_CCA_ED		0x0008
+#define IEEE80211_OC_BEHAV_ITS_NONMOB		0x0010
+#define IEEE80211_OC_BEHAV_ITS_MOBILE		0x0020
+#define IEEE80211_OC_BEHAV_CHAN_LOWWER		0x0040
+#define IEEE80211_OC_BEHAV_CHAN_UPPER		0x0080
+#define IEEE80211_OC_BEHAV_80PLUS		0x0100
+#define IEEE80211_OC_BEHAV_EIRP_TXPOWENV	0x0200
+
+#define IEEE80211_OBSS_CHAN_PRI20		0x01
+#define IEEE80211_OBSS_CHAN_SEC20		0x02
+#define IEEE80211_OBSS_CHAN_PRI40		0x04
+#define IEEE80211_OBSS_CHAN_SEC40		0x08
+
+#define IEEE80211_OBSS_CHAN_MASK		0x0F
+
+#define IEEE80211_IS_OBSS_CHAN_SECONDARY(_c) \
+	(((_c) & IEEE80211_OBSS_CHAN_SEC20) == IEEE80211_OBSS_CHAN_SEC20)
 
 /* power index definition */
 enum ieee80211_power_index_beamforming {
@@ -287,6 +367,13 @@
 	PWR_IDX_BW_MAX = 3
 };
 
+/* MFP capabilities (ieee80211w) */
+enum ieee80211_mfp_capabilities {
+	IEEE80211_MFP_NO_PROTECT = 0,
+	IEEE80211_MFP_PROTECT_CAPABLE = 2,
+	IEEE80211_MFP_PROTECT_REQUIRE = 3
+};
+
 /*
  * Channels are specified by frequency and attributes.
  */
@@ -312,6 +399,10 @@
 #define	IEEE80211_CHAN_ANY	0xffff	/* token for ``any channel'' */
 #define	IEEE80211_CHAN_ANYC 	((struct ieee80211_channel *) IEEE80211_CHAN_ANY)
 
+#define IEEE80211_MIN_DUAL_EXT_CHAN_24G		5
+#define IEEE80211_MAX_DUAL_EXT_CHAN_24G		9
+#define IEEE80211_MAX_DUAL_EXT_CHAN_24G_US	7
+
 #define	IEEE80211_RADAR_11HCOUNT		1
 #define IEEE80211_DEFAULT_CHANCHANGE_TBTT_COUNT	10
 #define	IEEE80211_RADAR_TEST_MUTE_CHAN	36	/* Move to channel 36 for mute test */
@@ -336,12 +427,14 @@
 #define IEEE80211_CHAN_HT40	0x00080000	/* HT 40 with ext channel above/below */
 #define IEEE80211_CHAN_DFS	0x00100000	/* Configuration: DFS-required channel */
 #define IEEE80211_CHAN_DFS_CAC_DONE	0x00200000     /* Status: CAC completed */
-#define IEEE80211_CHAN_VHT80	0x00400000	/* VHT 80 */
+#define IEEE80211_CHAN_VHT80		0x00400000	/* VHT 80 */
 #define IEEE80211_CHAN_DFS_OCAC_DONE	0x00800000	/* Status: Off-channel CAC completed */
 #define IEEE80211_CHAN_DFS_CAC_IN_PROGRESS	0x01000000	/* Status: Valid CAC is in progress */
-#define IEEE80211_CHAN_WEATHER	0x02000000	/* Configuration: weather channel */
+#define IEEE80211_CHAN_WEATHER		0x02000000	/* Configuration: weather channel for 20MHz */
+#define IEEE80211_CHAN_WEATHER_40M	0x04000000	/* Configuration: weather channel for 40MHz */
+#define IEEE80211_CHAN_WEATHER_80M	0x08000000	/* Configuration: weather channel for 80MHz */
 
-#define IEEE80211_DEFAULT_2_4_GHZ_CHANNEL	1
+#define IEEE80211_DEFAULT_2_4_GHZ_CHANNEL	6
 #define IEEE80211_DEFAULT_5_GHZ_CHANNEL		36
 
 #define IEEE80211_MAX_2_4_GHZ_CHANNELS	13
@@ -364,7 +457,7 @@
 #define IEEE80211_CHAN_VHT80_LU	0x00000002
 #define IEEE80211_CHAN_VHT80_UL	0x00000004
 #define IEEE80211_CHAN_VHT80_UU	0x00000008
-
+#define IEEE80211_CHAN_TDLS_OFF_CHAN	0x00000010
 
 /*
  * Useful combinations of channel characteristics.
@@ -432,6 +525,9 @@
 	(IEEE80211_CHAN_HT20 | IEEE80211_CHAN_HT40U | IEEE80211_CHAN_HT40D | \
 		IEEE80211_CHAN_HT40 )
 
+#define	IEEE80211_CHAN_HT40_DUAL_EXT \
+	(IEEE80211_CHAN_HT40U | IEEE80211_CHAN_HT40D)
+
 #define	IEEE80211_IS_CHAN_CACDONE(_c) \
 	(((_c)->ic_flags & IEEE80211_CHAN_DFS_CAC_DONE) != 0)
 #define	IEEE80211_IS_CHAN_CAC_IN_PROGRESS(_c) \
@@ -840,7 +936,8 @@
 	IEEE80211_VHTCAP_RX_STS_5,
 	IEEE80211_VHTCAP_RX_STS_6,
 	IEEE80211_VHTCAP_RX_STS_7,
-	IEEE80211_VHTCAP_RX_STS_8
+	IEEE80211_VHTCAP_RX_STS_8,
+	IEEE80211_VHTCAP_RX_STS_INVALID = 0xff
 };
 
 /* SOUNDING DIM B16-18 */
@@ -984,12 +1081,22 @@
 	u_int16_t			basicvhtmcsnssset;
 } __packed;
 
+/* VHT Operating Mode Notification element */
+#define IEEE80211_VHT_OPMODE_NOTIF_DEFAULT	0xFFFF
+
 /* Max number of MU groups */
 #define IEEE80211_MU_GRP_NUM_MAX	64
 
 /* Max number of nodes in a MU group */
 #define IEEE80211_MU_GRP_NODES_MAX	4
 
+/* GROUP IDs which are used for SU PPDU as per IEEE P802.11ac/D5.0,
+ * chapter 9.17a Group ID and partial AID in VHT PPDUs  */
+#define IEEE80211_SU_GROUP_ID_0		0u
+#define IEEE80211_SU_GROUP_ID_63	63u
+
+#define IEEE80211_MAC_ADDRESS_GROUP_BIT 0x01
+
 /* VHT MU membership & user position arrays */
 struct ieee80211_vht_mu_grp {
 #define IEEE80211_VHT_GRP_1ST_BIT_OFFSET	1
diff --git a/include/shared/net80211/ieee80211.h b/include/shared/net80211/ieee80211.h
index 328eb40..2988ef0 100644
--- a/include/shared/net80211/ieee80211.h
+++ b/include/shared/net80211/ieee80211.h
@@ -36,7 +36,6 @@
 #include "net80211/_ieee80211.h"
 #include "net80211/ieee80211_qos.h"
 #include "net80211/ieee80211_dfs_reentry.h"
-#include <qtn/qtn_config.h>
 
 /*
  * 802.11 protocol definitions.
@@ -335,10 +334,10 @@
 #define IEEE80211_HTC3_AC_CONSTRAINT	0x40
 #define IEEE80211_HTC3_MORE_PPDU_RDG	0x80
 
-
-
-
-
+#define IEEE80211_BW_RANGE		25
+#define IEEE80211_CHAN_SPACE		5
+#define IEEE80211_SEC_CHAN_OFFSET	4
+#define IEEE80211_40M_CENT_FREQ_OFFSET	2
 
 /*
  * Country/Region Codes from MS WINNLS.H
@@ -776,12 +775,59 @@
 	u_int8_t ext_cap[8];
 } __packed;
 
+
+#define IEEE8021P_PRIORITY_NUM			8
+#define IEEE80211_DSCP_MAX_EXCEPTIONS		21
+#define IP_DSCP_NUM				64
+
+/* byte 0 */
+#define IEEE80211_EXTCAP_20_40_COEXISTENCE      0x1
 /* byte 7 */
 #define IEEE80211_EXTCAP_OPMODE_NOTIFICATION	0x40
 #define IEEE80211_EXTCAP_MAX_MSDU_IN_AMSDU	0xC0
 #define IEEE80211_EXTCAP_MAX_MSDU_IN_AMSDU_S	6
 
 /*
+ * 20/40 MHZ BSS coexistence information element.
+ */
+struct ieee80211_20_40_coex_param {
+	u_int8_t param_id;
+	u_int8_t param_len;
+	u_int8_t coex_param;
+} __packed;
+
+#define WLAN_20_40_BSS_COEX_INFO_REQ            BIT(0)
+#define WLAN_20_40_BSS_COEX_40MHZ_INTOL         BIT(1)
+#define WLAN_20_40_BSS_COEX_20MHZ_WIDTH_REQ     BIT(2)
+#define WLAN_20_40_BSS_COEX_OBSS_EXEMPT_REQ     BIT(3)
+#define WLAN_20_40_BSS_COEX_OBSS_EXEMPT_GRNT    BIT(4)
+
+/*
+ * 20/40 MHZ BSS intolerant channel report information element.
+ */
+struct ieee80211_20_40_in_ch_rep {
+	u_int8_t param_id;
+	u_int8_t param_len;
+	u_int8_t reg;
+	u_int8_t chan[0];
+} __packed;
+
+/*
+ * Overlapping BSS Scan Parameter information element.
+ */
+struct ieee80211_obss_scan_ie {
+	u_int8_t param_id;
+	u_int8_t param_len;
+	u_int16_t obss_passive_dwell;
+	u_int16_t obss_active_dwell;
+	u_int16_t obss_trigger_interval;
+	u_int16_t obss_passive_total;
+	u_int16_t obss_active_total;
+	u_int16_t obss_channel_width_delay;
+	u_int16_t obss_activity_threshold;
+} __packed;
+
+/*
  * Atheros Advanced Capability information element.
  */
 struct ieee80211_ie_athAdvCap {
@@ -905,12 +951,8 @@
 
 #ifdef CONFIG_QVSP
 
-#ifdef TOPAZ_PLATFORM
 /* Disable Station side control for QTM-Lite */
 #define IEEE80211_QTN_VSP_VERSION	IEEE80211_QTN_VSP_V_NONE
-#else
-#define IEEE80211_QTN_VSP_VERSION	IEEE80211_QTN_VSP_V1
-#endif
 struct ieee80211_ie_vsp_item {
 	uint8_t	index;
 	uint32_t	value;
@@ -939,14 +981,8 @@
 
 #define IEEE80211_QTN_FLAGS_ENVY	(IEEE80211_QTN_BRIDGEMODE | IEEE80211_QTN_BF_VER1)
 #define IEEE80211_QTN_FLAGS_ENVY_DFLT	IEEE80211_QTN_BF_VER1
-#ifdef TXBF_6_STA_BF
 #define IEEE80211_QTN_CAPS_DFLT		IEEE80211_QTN_BF_VER2 | IEEE80211_QTN_BF_VER3 | \
 					IEEE80211_QTN_BF_VER4 | IEEE80211_QTN_TX_AMSDU
-#else
-#define IEEE80211_QTN_CAPS_DFLT		IEEE80211_QTN_BF_VER2 | IEEE80211_QTN_BF_VER3 | \
-					IEEE80211_QTN_TX_AMSDU
-#endif
-
 /*
  * These flags are used in the following two fields.
  * - qtn_ie_flags contains the sender's settings, except in an association response, where
@@ -1036,6 +1072,7 @@
 #define IEEE80211_ACTION_PUB_GAS_CREQ		12  /* GAS Comeback Request */
 #define IEEE80211_ACTION_PUB_GAS_CRESP		13  /* GAS Comeback Response */
 #define IEEE80211_ACTION_PUB_TDLS_DISC_RESP	14  /* TDLS Discovery Response */
+#define IEEE80211_ACTION_PUB_20_40_COEX         0  /* 20/40 coex */
 
 static __inline__ int ieee80211_action_is_a_gas(const struct ieee80211_action *ia)
 {
@@ -1295,6 +1332,11 @@
 	uint64_t tx_bytes;
 	uint32_t tx_pkts;
 	uint32_t tx_discard;
+	/**
+	 * The number of dropped data packets failed to transmit through
+	 * wireless media for each traffic category(TC).
+	 */
+	uint32_t tx_wifi_drop[WME_AC_NUM];
 	uint32_t tx_err;
 	uint32_t tx_ucast;		/* unicast */
 	uint32_t tx_mcast;		/* multicast */
@@ -2187,6 +2229,16 @@
 	uint8_t rbs_bssid[QTN_MAX_RBS_NUM][IEEE80211_ADDR_LEN]; /* BSSID of rbs */
 } __packed;
 
+struct ieee80211_qtn_ext_state {
+	uint8_t id;				/* IEEE80211_ELEMID_VENDOR */
+	uint8_t len;				/* 8 */
+	uint8_t qtn_ie_oui[3];			/* QTN_OUI - 0x00, 0x26, 0x86 */
+	uint8_t qtn_ie_type;			/* QTN_OUI_EXTENDER_STATE */
+#define QTN_EXT_MBS_OCAC	BIT(0)		/* MBS OCAC on-going */
+	uint8_t state1;				/* record extender specific states */
+	uint8_t __rsvd[3];
+} __packed;
+
 /*
  * 802.11n AMPDU delimiters and frame structure
  */
@@ -2282,9 +2334,11 @@
 #define IEEE80211_11AC_MCS_VAL_ERR		-1
 #define IEEE80211_HT_EQUAL_MCS_START		0
 #define IEEE80211_HT_EQUAL_MCS_2SS_MAX		15
+#define IEEE80211_HT_EQUAL_MCS_3SS_MAX		23
 #define IEEE80211_EQUAL_MCS_32			32
 #define IEEE80211_UNEQUAL_MCS_START		33
 #define IEEE80211_HT_UNEQUAL_MCS_2SS_MAX	38
+#define IEEE80211_HT_UNEQUAL_MCS_3SS_MAX	52
 #define IEEE80211_UNEQUAL_MCS_MAX		76
 #define IEEE80211_UNEQUAL_MCS_BIT		0x40
 #define IEEE80211_AC_MCS_MASK			0xFF
@@ -2475,6 +2529,14 @@
 	IEEE80211_HTCAP_B_ST_STREAM_FOUR	/* four space time streams */
 };
 
+/* HT NSS */
+enum ieee80211_ht_nss {
+	IEEE80211_HT_NSS1 = 1,
+	IEEE80211_HT_NSS2 = 2,
+	IEEE80211_HT_NSS3 = 3,
+	IEEE80211_HT_NSS4 = 4
+};
+
 /* HT capability macros */
 
 /* get macros */
@@ -2642,9 +2704,14 @@
 	uint8_t	hi_basicmcsset[16];	/* basic MCS set */
 } __packed;
 
-#define IEEE80211_HTINFO_B1_REC_TXCHWIDTH_40	0x04
+#define	IEEE80211_HTINFO_CHOFF_SCN			0
+#define	IEEE80211_HTINFO_CHOFF_SCA			1
+#define	IEEE80211_HTINFO_CHOFF_SCB			3
+
+#define IEEE80211_HTINFO_B1_SEC_CHAN_OFFSET		0x03
+#define IEEE80211_HTINFO_B1_REC_TXCHWIDTH_40		0x04
 #define IEEE80211_HTINFO_B1_RIFS_MODE			0x08
-#define IEEE80211_HTINFO_B1_CONTROLLED_ACCESS	0x10
+#define IEEE80211_HTINFO_B1_CONTROLLED_ACCESS		0x10
 #define IEEE80211_HTINFO_B2_NON_GF_PRESENT		0x04
 #define IEEE80211_HTINFO_B2_OBSS_PROT			0x10
 #define IEEE80211_HTINFO_B4_DUAL_BEACON			0x40
@@ -2654,7 +2721,6 @@
 #define IEEE80211_HTINFO_B5_PCO_ACTIVE			0x04
 #define IEEE80211_HTINFO_B5_40MHZPHASE			0x08
 
-
 /* get macros */
 /* control channel (all bits) */
 #define IEEE80211_HTINFO_PRIMARY_CHANNEL(htie) \
@@ -2788,6 +2854,8 @@
 	IEEE80211_ELEMID_HTINFO		= 61,
 	IEEE80211_ELEMID_SEC_CHAN_OFF	= 62,	/* Secondary Channel Offset */
 	IEEE80211_ELEMID_20_40_BSS_COEX = 72,	/* 20/40 BSS Coexistence */
+	IEEE80211_ELEMID_20_40_IT_CH_REP   = 73,  /* 20/40 BSS Intolerant channel report */
+	IEEE80211_ELEMID_OBSS_SCAN	   = 74,   /* Overlapping BSS scan parameter  */
 	IEEE80211_ELEMID_TDLS_LINK_ID	   = 101, /* TDLS Link Identifier */
 	IEEE80211_ELEMID_TDLS_WKUP_SCHED   = 102, /* TDLS Wakeup Schedule */
 	IEEE80211_ELEMID_TDLS_CS_TIMING    = 104, /* TDLS Channel Switch Timing */
@@ -2824,6 +2892,8 @@
 #define QTN_CHANSWITCHANN_TSF_BYTES 10
 #define IEEE80211_CSA_LEN	7
 #define IEEE80211_CSA_TSF_LEN	(IEEE80211_CSA_LEN + 10)
+#define IEEE80211_SEC_CHAN_OFF_IE_LEN 3
+#define IEEE80211_WBAND_CHANSWITCH_IE_LEN 5
 #define IEEE80211_NCW_ACT_LEN   3      /* Notify Channel Width Action size */
 #define IEEE80211_MU_GRP_ID_ACT_LEN 26 /* MU grp id mgmt action size */
 
@@ -2872,7 +2942,7 @@
 
 #define IEEE80211_CHALLENGE_LEN		128
 
-#define IEEE80211_SUPPCHAN_LEN		26
+#define IEEE80211_SUPPCHAN_LEN		52
 
 #define	IEEE80211_RATE_BASIC		0x80
 #define	IEEE80211_RATE_VAL			0x7f
@@ -2910,8 +2980,8 @@
 #define QTN_OUI_SCS             0x12            /* SCS status report and control */
 #define QTN_OUI_QWME            0x13            /* WME IE between QSTA */
 #define QTN_OUI_EXTENDER_ROLE	0x14		/* WDS Extender Role */
-
-#define QTN_OUI_EXTENDER_BSSID	0x15	/* Extender BSSID */
+#define QTN_OUI_EXTENDER_BSSID	0x15		/* Extender BSSID */
+#define QTN_OUI_EXTENDER_STATE	0x16		/* Extender specific states */
 
 #define QTN_OUI_EXTENDER_ROLE_NONE	0x00	/* NONE Role */
 #define QTN_OUI_EXTENDER_ROLE_MBS	0x01	/* MBS Role */
@@ -2939,8 +3009,13 @@
 #define	RSN_OUI			0xac0f00
 #define	RSN_VERSION		1		/* current supported version */
 
+#define WFA_OUI			0x9A6F50
+#define WFA_TYPE_OSEN		0x12
+#define WFA_AKM_TYPE_OSEN	0x1
+
 #define	BCM_OUI			0x4C9000	/* Apple Products */
 #define	BCM_OUI_TYPE		0x01
+#define BCM_OUI_VHT_TYPE	0x0804
 
 #define	BCM_OUI_2		0x181000	/* iPad */
 #define	BCM_OUI_2_TYPE		0x02
@@ -3012,6 +3087,9 @@
 #define IEEE80211_VHTCAP_C_RX_ATN_PATTERN_CONSISTNCY	0x10000000
 #define IEEE80211_VHTCAP_C_TX_ATN_PATTERN_CONSISTNCY	0x20000000
 
+#define IEEE80211_VHTCAP_C_MU_BEAM_FORMXX_CAP_MASK	(IEEE80211_VHTCAP_C_MU_BEAM_FORMER_CAP | \
+							 IEEE80211_VHTCAP_C_MU_BEAM_FORMEE_CAP)
+
 /* VHT mcs info extras */
 #define IEEE80211_VHTCAP_MCS_MAX			8
 #define IEEE80211_VHTCAP_MCS_DISABLED			0x03
@@ -3041,6 +3119,10 @@
 #define IEEE80211_VHTCAP_GET_SGI_80MHZ(vhtcap) \
 	(((vhtcap)->vht_cap[0] & 0x20) >> 5)
 
+/* B6 Short GI for 160MHz support */
+#define IEEE80211_VHTCAP_GET_SGI_160MHZ(vhtcap) \
+	(((vhtcap)->vht_cap[0] & 0x40) >> 6)
+
 /* B7 TX STBC */
 #define IEEE80211_VHTCAP_GET_TXSTBC(vhtcap) \
 	(((vhtcap)->vht_cap[0] & 0x80) >> 7)
@@ -3065,6 +3147,14 @@
 #define IEEE80211_VHTCAP_GET_NUMSOUND(vhtcap) \
 	(u_int8_t)((vhtcap)->vht_cap[2] & 0x07)
 
+/* B19 MU Beam-formee VHT capability */
+#define IEEE80211_VHTCAP_GET_MU_BEAMFORMER(vhtcap) \
+	(((vhtcap)->vht_cap[2] & 0x08) >> 3)
+
+/* B20 MU Beam-former VHT capability */
+#define IEEE80211_VHTCAP_GET_MU_BEAMFORMEE(vhtcap) \
+	(((vhtcap)->vht_cap[2] & 0x10) >> 4)
+
 /* B22 VHT variant HT control field */
 #define IEEE80211_VHTCAP_GET_HTC_VHT(vhtcap) \
 	(((vhtcap)->vht_cap[2] & 0x40) >> 6)
@@ -3331,6 +3421,14 @@
 	u_int32_t	timout_int_value;		/* in tus */
 } __packed;
 
+struct ieee80211_ie_brcm_vht {
+	uint8_t id;
+	uint8_t len;
+	uint8_t brcm_vht_oui[3];
+	uint16_t brcm_vht_type;
+	uint8_t vht_ies[0];
+}__packed;
+
 /*
  * Add the Quantenna OUI to a frame
  */
@@ -3603,7 +3701,6 @@
 	return (p16[0] == 0xFFFF) && (p16[1] == 0xFFFF) && (p16[2] == 0xFFFF);
 }
 
-#ifdef TOPAZ_PLATFORM
 /*
  * IEEE802.11w spec - Table 8-38 and section 11.1.7
  */
@@ -3651,7 +3748,20 @@
 	return is_robust_mgmt;
 }
 #endif
-#endif
+
+/* QTN Extender */
+#define	IEEE80211_QTN_WDS_MASK		0x0003
+#define	IEEE80211_QTN_EXTDR_ALLMASK	0xFFFF
+#define	IEEE80211_QTN_EXTDR_MASK_SHIFT	16
+
+#define	IEEE80211_QTN_WDS_ONLY		0x0000	/* 0 = Plain WDS; No WDS Extender */
+#define	IEEE80211_QTN_WDS_MBS		0x0001	/* 1 = MBS-Master Base Station */
+#define	IEEE80211_QTN_WDS_RBS		0x0002	/* 2 = RBS-Repeater/Remote Base Station */
+
+static __inline__ uint32_t ieee80211_extdr_combinate(uint16_t flags, uint16_t mask)
+{
+	return (mask << IEEE80211_QTN_EXTDR_MASK_SHIFT) | flags;
+}
 
 #define IEEE80211_N_RATE_PREFIX 0x7F000000
 #define IEEE80211_AC_RATE_PREFIX 0x7E000000
@@ -3684,5 +3794,11 @@
 #define IEEE80211_MU_GRP_POS(mu_grp, _grp)	\
 	(((mu_grp).pos[(_grp) >> 2] >> (((_grp) & 0x3) << 1)) & 0x3)
 
+#define	IEEE80211_VAP_STATE_DISABLED			0
+#define	IEEE80211_VAP_STATE_ENABLED			1
+
+#define IEEE80211_MIN_BSS_GROUP	1 /* 0 - Default internal group. 1 - 31 User configurable group id */
+#define IEEE80211_MAX_BSS_GROUP	32
+
 #endif /* _NET80211_IEEE80211_H_ */
 
diff --git a/include/shared/net80211/ieee80211_dfs_reentry.h b/include/shared/net80211/ieee80211_dfs_reentry.h
index b829b5b..fc5c37c 100644
--- a/include/shared/net80211/ieee80211_dfs_reentry.h
+++ b/include/shared/net80211/ieee80211_dfs_reentry.h
@@ -10,11 +10,19 @@
 /*
  *  DFS-reentry
  */
-#define IEEE80211_PICK_DOMIAN_MASK	0x00FF
+#define IEEE80211_PICK_DOMIAN_MASK	0x0007
 #define IEEE80211_PICK_ALL		0x0001		/* pick channel from all available channels */
 #define IEEE80211_PICK_DFS		0x0002		/* pick channel from available DFS channel */
 #define IEEE80211_PICK_NONDFS		0x0004		/* pick channel from available non-DFS channel */
 
+#define IEEE80211_PICK_CONTROL_MASK		0x00F8
+#define IEEE80211_PICK_SCAN_FLUSH		0x0008
+#define IEEE80211_PICK_BG_ACTIVE		0x0010
+#define IEEE80211_PICK_BG_PASSIVE_FAST		0x0020
+#define IEEE80211_PICK_BG_PASSIVE_NORMAL	0x0040
+#define IEEE80211_PICK_BG_PASSIVE_SLOW		0x0080
+#define IEEE80211_PICK_BG_MODE_MASK		0x00F0
+
 #define IEEE80211_PICK_ALGORITHM_MASK	0xFF00
 #define IEEE80211_PICK_CLEAREST		0x0100		/* pick clearest channel */
 #define IEEE80211_PICK_REENTRY		0x0200		/* pick channel again after DFS process */
diff --git a/include/shared/net80211/ieee80211_ioctl.h b/include/shared/net80211/ieee80211_ioctl.h
index e5d6d84..9c3cd0c 100644
--- a/include/shared/net80211/ieee80211_ioctl.h
+++ b/include/shared/net80211/ieee80211_ioctl.h
@@ -42,6 +42,20 @@
 #include "net80211/ieee80211_qos.h"
 #include "net80211/ieee80211_crypto.h"
 
+#pragma pack(4)
+/*
+ * Per-channel flags to differentiate chan_pri_inactive configuration
+ * between regulatory db and user configuration.
+ * By default, system uses static regulatory db configs.
+ * However driver shall always honour dynamic user coniguration.
+ * In this way, user configuration will override regulatory db configs.
+ */
+enum {
+	CHAN_PRI_INACTIVE_CFG_DATABASE = 0x1,
+	CHAN_PRI_INACTIVE_CFG_USER_OVERRIDE = 0x2,
+	CHAN_PRI_INACTIVE_CFG_AUTOCHAN_ONLY = 0x4,
+};
+
 /*
  * Per/node (station) statistics available when operating as an AP.
  */
@@ -107,6 +121,11 @@
 	uint32_t ns_tx_errors;
 	uint32_t ns_rx_dropped;
 	uint32_t ns_tx_dropped;
+	/*
+	 * The number of dropped data packets failed to transmit through
+	 * wireless media for each traffic category(TC).
+	 */
+	uint32_t ns_tx_wifi_drop[WME_AC_NUM];
 
 	uint32_t ns_ap_isolation_dropped;
 	uint32_t ns_rx_fragment_pkts;
@@ -323,6 +342,15 @@
 	struct ieee80211req_scs_ranking_rpt_chan isr_chans[IEEE80211REQ_SCS_REPORT_CHAN_NUM];
 };
 
+struct ieee80211req_scs_score_rpt_chan {
+	uint8_t isrc_chan;
+	uint8_t isrc_score;
+};
+struct ieee80211req_scs_score_rpt {
+	uint8_t isr_num;
+	struct ieee80211req_scs_score_rpt_chan isr_chans[IEEE80211REQ_SCS_REPORT_CHAN_NUM];
+};
+
 #define SCS_MAX_TXTIME_COMP_INDEX	8
 #define SCS_MAX_RXTIME_COMP_INDEX	8
 #define SCS_MAX_TDLSTIME_COMP_INDEX	8
@@ -350,6 +378,8 @@
 	SCS_CCA_INTF_HI_THRSHLD,
 	SCS_CCA_INTF_LO_THRSHLD,
 	SCS_CCA_INTF_RATIO,
+	SCS_CCA_INTF_DFS_MARGIN,
+	SCS_PMBL_ERR_THRSHLD,
 	SCS_CCA_SAMPLE_DUR,
 	SCS_CCA_INTF_SMTH_NOXP,
 	SCS_CCA_INTF_SMTH_XPED,
@@ -357,6 +387,7 @@
 	SCS_RSSI_SMTH_DOWN,
 	SCS_CHAN_MTRC_MRGN,
 	SCS_ATTEN_ADJUST,
+	SCS_ATTEN_SW_ENABLE,
 	SCS_PMBL_ERR_SMTH_FCTR,
 	SCS_PMBL_ERR_RANGE,
 	SCS_PMBL_ERR_MAPPED_INTF_RANGE,
@@ -370,12 +401,14 @@
 	SCS_PMP_STATS_CLEAR_INTERVAL,
 	SCS_AS_RX_TIME_SMTH_FCTR,
 	SCS_AS_TX_TIME_SMTH_FCTR,
+	SCS_CCA_IDLE_SMTH_FCTR,
 	SCS_TX_TIME_COMPENSTATION_START,
 	SCS_TX_TIME_COMPENSTATION_END = SCS_TX_TIME_COMPENSTATION_START+SCS_MAX_TXTIME_COMP_INDEX-1,
 	SCS_RX_TIME_COMPENSTATION_START,
 	SCS_RX_TIME_COMPENSTATION_END = SCS_RX_TIME_COMPENSTATION_START+SCS_MAX_RXTIME_COMP_INDEX-1,
 	SCS_TDLS_TIME_COMPENSTATION_START,
 	SCS_TDLS_TIME_COMPENSTATION_END = SCS_TDLS_TIME_COMPENSTATION_START+SCS_MAX_TDLSTIME_COMP_INDEX-1,
+	SCS_LEAVE_DFS_CHAN_MTRC_MRGN,
 	SCS_PARAM_MAX,
 };
 
@@ -392,6 +425,7 @@
 #define IEEE80211REQ_SCS_GET_INIT_RANKING_RPT     (IEEE80211REQ_SCS_FLAG_GET | 2)
 #define IEEE80211REQ_SCS_GET_RANKING_RPT          (IEEE80211REQ_SCS_FLAG_GET | 3)
 #define IEEE80211REQ_SCS_GET_PARAM_RPT            (IEEE80211REQ_SCS_FLAG_GET | 4)
+#define IEEE80211REQ_SCS_GET_SCORE_RPT            (IEEE80211REQ_SCS_FLAG_GET | 5)
 	uint32_t *is_status;                  /* SCS specific reason for ioctl failure */
 #define IEEE80211REQ_SCS_RESULT_OK                    0
 #define IEEE80211REQ_SCS_RESULT_SYSCALL_ERR           1
@@ -411,7 +445,6 @@
 };
 
 struct ieeee80211_dscp2ac {
-#define IP_DSCP_NUM				64
 	uint8_t dscp[IP_DSCP_NUM];
 	uint8_t list_len;
 	uint8_t ac;
@@ -452,6 +485,29 @@
 	u_int8_t bw;
 	u_int8_t channels[IEEE80211_CHAN_BYTES];
 };
+
+/*
+ * Set or Get the inactive channel list
+ */
+struct ieee80211_inactive_chanlist {
+	u_int8_t channels[IEEE80211_CHAN_MAX];
+};
+
+/*
+ * Set or get the disabled channel list
+ */
+struct ieeee80211_disabled_chanlist {
+	uint8_t chan[IEEE80211_CHAN_MAX];
+	uint32_t list_len;
+	uint8_t flag;	/*0: disable 1: enable*/
+	uint8_t dir;	/*0: set 1: get*/
+};
+
+enum ieee80211_chan_control_dir
+{
+	SET_CHAN_DISABLED = 0,
+	GET_CHAN_DISABLED = 1,
+};
 /*
  * Retrieve the WPA/RSN information element for an associated station.
  */
@@ -459,6 +515,7 @@
 	uint8_t	wpa_macaddr[IEEE80211_ADDR_LEN];
 	uint8_t	wpa_ie[IEEE80211_MAX_OPT_IE];
 	uint8_t	rsn_ie[IEEE80211_MAX_OPT_IE];
+	uint8_t	osen_ie[IEEE80211_MAX_OPT_IE];
 	uint8_t	wps_ie[IEEE80211_MAX_OPT_IE];
 	uint8_t	qtn_pairing_ie[IEEE80211_MAX_OPT_IE];
 #define QTN_PAIRING_IE_EXIST 1
@@ -804,15 +861,36 @@
 	int8_t		ap_addr_mac[IEEE80211_ADDR_LEN];
 	int8_t		ap_name_ssid[32 + 1];
 	int32_t		ap_channel_ieee;
+	int32_t		ap_max_bw;
 	int32_t		ap_rssi;
 	int32_t		ap_flags;
 	int32_t		ap_htcap;
 	int32_t		ap_vhtcap;
 	int8_t		ap_qhop_role;
+	uint32_t	ap_bestrate;
 	int32_t		ap_num_genies;
 	int8_t		ap_ie_buf[0];	/* just to remind there might be WPA/RSN/WSC IEs right behind*/
 };
 
+#define MAX_MACS_SIZE	1200 /* 200 macs */
+/* Report results of get mac address of clients behind associated node */
+struct ieee80211_mac_list {
+	/**
+	 * flags indicating
+	 * bit 0 set means addresses are behind 4 addr node
+	 * bit 1 set means results are truncated to fit to buffer
+	 */
+	uint32_t flags;
+	/**
+	 * num entries in the macaddr list below
+	 */
+	uint32_t num_entries;
+	/**
+	 * buffer to store mac addresses
+	 */
+	uint8_t macaddr[MAX_MACS_SIZE];
+};
+
 #ifdef __FreeBSD__
 /*
  * FreeBSD-style ioctls.
@@ -1126,7 +1204,7 @@
 	IEEE80211_PARAM_RADAR_NONOCCUPY_ACT_SCAN = 152,	/* non-occupancy expire scan/no-action */
 	IEEE80211_PARAM_MC_LEGACY_RATE = 153, /* Legacy multicast rate table */
 	IEEE80211_PARAM_LDPC_ALLOW_NON_QTN = 154, /* Allow non QTN nodes to use LDPC */
-	IEEE80211_PARAM_IGMP_HYBRID = 155, /* Do the IGMP hybrid mode as suggested by Swisscom */
+	IEEE80211_PARAM_FWD_UNKNOWN_MC = 155,	/* forward unknown IP multicast */
 	IEEE80211_PARAM_BCST_4 = 156, /* Reliable (4 addr encapsulated) broadcast to all clients */
 	IEEE80211_PARAM_AP_FWD_LNCB = 157, /* AP forward LNCB packets from the STA to other STAs */
 	IEEE80211_PARAM_PPPC_SELECT = 158, /* Per packet power control */
@@ -1160,7 +1238,6 @@
 	IEEE80211_PARAM_SWRETRY_AGG_MAX = 186,	/* max sw retries for ampdus */
 	IEEE80211_PARAM_SWRETRY_NOAGG_MAX = 187,/* max sw retries for non-agg mpdus */
 	IEEE80211_PARAM_BSS_ASSOC_LIMIT = 188, /* STA assoc limit for a VAP */
-
 	IEEE80211_PARAM_VSP_NOD_DEBUG = 190,	/* turn on/off NOD debugs for VSP */
 	IEEE80211_PARAM_CCA_PRI = 191,		/* Primary CCA threshold */
 	IEEE80211_PARAM_CCA_SEC = 192,		/* Secondary CCA threshold */
@@ -1198,10 +1275,8 @@
 	IEEE80211_PARAM_BEACON_ALLOW = 224,	/* To en/disable beacon rx when associated as STA*/
 	IEEE80211_PARAM_1BIT_PKT_DETECT = 225,  /* enable/disable 1bit pkt detection */
 	IEEE80211_PARAM_WME_THROT = 226,	/* Manual WME throttling */
-#ifdef TOPAZ_PLATFORM
 	IEEE80211_PARAM_ENABLE_11AC = 227,	/* Enable-disable 11AC feature in Topaz */
 	IEEE80211_PARAM_FIXED_11AC_TX_RATE = 228,	/* Set 11AC mcs */
-#endif
 	IEEE80211_PARAM_GENPCAP = 229,		/* WMAC tx/rx pcap ring buffer */
 	IEEE80211_PARAM_CCA_DEBUG = 230,	/* Debug of CCA */
 	IEEE80211_PARAM_STA_DFS	= 231,		/* Enable or disable station DFS */
@@ -1220,9 +1295,9 @@
 	IEEE80211_PARAM_RX_ACCELERATE = 244,	/* Enable/Disable Topaz MuC rx accelerate */
 	IEEE80211_PARAM_RX_ACCEL_LOOKUP_SA = 245,	/* Enable/Disable lookup SA in FWT for rx accelerate */
 	IEEE80211_PARAM_TX_MAXMPDU = 246,		/* Set Max MPDU size to be supported */
-	/* FIXME 247 is available for reuse */
+	/* FIXME 247 is obsolete and do not reuse */
 	IEEE80211_PARAM_SPECIFIC_SCAN = 249,	/* Just perform specific SSID scan */
-	IEEE80211_PARAM_VLAN_CONFIG = 250,		/* Configure VAP into MBSS or Passthrough mode */
+	/* FIXME 250 is obsolete and do not reuse */
 	IEEE80211_PARAM_TRAINING_START = 251,	/* restart rate training to a particular node */
 	IEEE80211_PARAM_AUC_TX_DBG = 252,	/* AuC tx debug command */
 	IEEE80211_PARAM_AC_INHERITANCE = 253,	/* promote AC_BE to use aggresive medium contention */
@@ -1247,7 +1322,6 @@
 	IEEE80211_PARAM_TUNEPD = 272,       /* Specify number of tunning packets to send for power detector tuning */
 	IEEE80211_PARAM_TUNEPD_DONE = 273,              /* Specify number of tunning packets to send for power detector tuning */
 	IEEE80211_PARAM_CONFIG_PMF = 274,       /* Enable/Disable 802.11w / PMF */
-
 	IEEE80211_PARAM_AUTO_CCA_ENABLE = 275,	/* Enable/disable auto-cca-threshold feature */
 	IEEE80211_PARAM_AUTO_CCA_PARAMS = 276,	/* Configure the threshold parameter  */
 	IEEE80211_PARAM_AUTO_CCA_DEBUG = 277,	/* Configure the auto-cca debug flag */
@@ -1262,7 +1336,7 @@
 	IEEE80211_PARAM_EXTENDER_MBS_WGT = 286, /* MBS RSSI weight */
 	IEEE80211_PARAM_EXTENDER_RBS_WGT = 287, /* RBS RSSI weight */
 	IEEE80211_PARAM_AIRFAIR = 288,              /* Set airtime fairness configuration */
-	IEEE80211_PARAM_SET_STA_VLAN = 289,	/* Place a STA into a VLAN */
+	/* FIXME 289 is obsolete and do not reuse */
 	IEEE80211_PARAM_RX_AMSDU_ENABLE = 290,      /* RX AMSDU: 0 - disable, 1 - enable, 2 - enable dynamically */
 	IEEE80211_PARAM_DISASSOC_REASON = 291,	/* Get Disassoc reason */
 	IEEE80211_PARAM_TX_QOS_SCHED = 292,	/* TX QoS hold-time table */
@@ -1276,7 +1350,7 @@
 	IEEE80211_PARAM_AGGRESSIVE_AGG = 300,	/* Compound aggressive agg params */
 	IEEE80211_PARAM_BB_PARAM = 301,	/* Baseband param */
 	IEEE80211_PARAM_VAP_TX_AMSDU = 302,     /* Enable/disable A-MSDU for VAP */
-        IEEE80211_PARAM_PC_OVERRIDE = 303,              /* RSSI based Power-contraint override */
+	IEEE80211_PARAM_PC_OVERRIDE = 303,              /* RSSI based Power-contraint override */
 	IEEE80211_PARAM_NDPA_DUR = 304,         /* set vht NDPA duration field */
 	IEEE80211_PARAM_TXBF_PKT_CNT = 305,     /* set the pkt cnt per txbf interval to fire sounding to a node */
 	IEEE80211_PARAM_MAX_AGG_SIZE = 306,	/* Maximum AMPDU size in bytes */
@@ -1302,7 +1376,7 @@
 	IEEE80211_PARAM_TDLS_NODE_LIFE_CYCLE = 326, /* TDLS node life cycle */
 	IEEE80211_PARAM_NODEREF_DBG = 327,	/* show history of node reference debug info */
 	IEEE80211_PARAM_SWFEAT_DISABLE = 329,	/* disable an optional software feature */
-        IEEE80211_PARAM_11N_AMSDU_CTRL = 330,   /* ctrl TX AMSDU of IP ctrl packets for 11N STAs */
+	IEEE80211_PARAM_11N_AMSDU_CTRL = 330,   /* ctrl TX AMSDU of IP ctrl packets for 11N STAs */
 	IEEE80211_PARAM_CCA_FIXED = 331,
 	IEEE80211_PARAM_CCA_SEC40 = 332,
 	IEEE80211_PARAM_CS_THRESHOLD_DBM = 333,
@@ -1318,7 +1392,6 @@
 	IEEE80211_PARAM_RATE_TRAIN_DBG = 343,			/* Rate training */
 	IEEE80211_PARAM_NDPA_LEGACY_FORMAT = 344,	/* Configure PHY format for NDPA frame */
 	IEEE80211_PARAM_QTN_HAL_PM_CORRUPT_DEBUG = 345,	/* flag to enable debug qtn packet memory corruption */
-
 	IEEE80211_PARAM_UPDATE_MU_GRP = 346,	/* Update MU group/position */
 	IEEE80211_PARAM_FIXED_11AC_MU_TX_RATE = 347,	/* Set 11AC MU fixed mcs */
 	IEEE80211_PARAM_MU_DEBUG_LEVEL = 348,	/* Set 11AC MU debug level */
@@ -1349,7 +1422,61 @@
 	IEEE80211_PARAM_MU_AIRTIME_PADDING = 373,	/* Airtime padding for MU/SU Tx decision */
 	IEEE80211_PARAM_MU_AMSDU_SIZE = 374,        /* Set Fixed MU AMSDU size */
 	IEEE80211_PARAM_SDFS = 375,		/* Seamless DFS, same as PARAM_OCAC */
-	IEEE80211_PARAM_SET_VERIWAVE_POWER = 376,        /* Set Fixed tx power against veriwave clients */
+	IEEE80211_PARAM_DSP_MU_RANK_CRITERIA = 376, /* select mu ranking criteria */
+	IEEE80211_PARAM_ENABLE_RX_OPTIM_STATS = 378,        /* Enable RX optim stats */
+	IEEE80211_PARAM_SET_UNICAST_QUEUE_NUM = 379,     /* Set Max congest queue num for unicast */
+	IEEE80211_PARAM_MRC_ENABLE = 380,        /* Set Management Frame Rate Control feature */
+	IEEE80211_PARAM_VCO_LOCK_DETECT_MODE = 381,	/* Get/Set lock detect functionality enabled/disabled */
+	IEEE80211_PARAM_OBSS_EXEMPT_REQ = 382,  /* OBSS scan exemption request*/
+	IEEE80211_PARAM_OBSS_TRIGG_SCAN_INT = 383,  /* OBSS scan exemption request*/
+	IEEE80211_PARAM_PREF_BAND = 384,	/* Preferred band on dual band mode */
+	IEEE80211_PARAM_BW_2_4GHZ = 385,	/* Bandwidth in 2.4ghz band */
+	IEEE80211_PARAM_ALLOW_VHT_TKIP = 386,	/* allow VHT even only TKIP is set as cipher, for WFA testbed */
+	IEEE80211_PARAM_AUTO_CS_ENABLE = 387,	/* Enable/disable auto-cs-threshold feature */
+	IEEE80211_PARAM_AUTO_CS_PARAMS = 388,	/* Configure the threshold parameter  */
+	IEEE80211_PARAM_QTN_BGSCAN_DURATION_ACTIVE = 389,  /* Quantenna bgscan duration for an active channel */
+	IEEE80211_PARAM_QTN_BGSCAN_DURATION_PASSIVE_FAST = 390, /* Quantenna bgscan duration for a passive channel */
+	IEEE80211_PARAM_QTN_BGSCAN_DURATION_PASSIVE_NORMAL = 391, /* Quantenna bgscan duration for a passive channel */
+	IEEE80211_PARAM_QTN_BGSCAN_DURATION_PASSIVE_SLOW = 392, /* Quantenna bgscan duration for a passive channel */
+	IEEE80211_PARAM_QTN_BGSCAN_THRSHLD_PASSIVE_FAST = 393, /* Quantenna bgscan fat threshold for passive fast mode */
+	IEEE80211_PARAM_QTN_BGSCAN_THRSHLD_PASSIVE_NORMAL = 394, /* Quantenna bgscan fat threshold for passive normal mode */
+	IEEE80211_PARAM_QTN_BLOCK_BSS = 395, /* Block any association request for specified BSS */
+	IEEE80211_PARAM_VHT_2_4GHZ = 396,	/* Quantenna 2.4G band feature -- VHT support */
+	IEEE80211_PARAM_PHY_MODE = 397,		/* Hardware phy mode */
+	IEEE80211_PARAM_BEACONING_SCHEME = 398,	/* the mapping between 8 VAPs and 4 HW event queues for beacon */
+	IEEE80211_PARAM_STA_BMPS = 399,	/* enable/disable STA BMPS */
+	IEEE80211_PARAM_40MHZ_INTOLERANT = 400,	/* 20/40 coexistence - 40 MHz intolerant */
+	IEEE80211_PARAM_ANTENNA_USAGE = 401,	/* how many antennas should be used */
+	IEEE80211_PARAM_DISABLE_TX_BA = 402,	/* enable/disable TX Block Ack establishment */
+	IEEE80211_PARAM_DECLINE_RX_BA = 403,	/* permit/decline RX Block Ack establishment */
+	IEEE80211_PARAM_VAP_STATE = 404,	/* Enable or disable a VAP */
+	IEEE80211_PARAM_TX_AIRTIME_CONTROL = 405, /* start or stop tx airtime accumulaton */
+	IEEE80211_PARAM_OSEN = 406,
+	IEEE80211_PARAM_OBSS_SCAN = 407,	/* Enable or disable OBSS scan */
+	IEEE80211_PARAM_SHORT_SLOT = 408,	/* short slot */
+	IEEE80211_PARAM_SET_RTS_BW_DYN = 409,   /* set RTS bw signal bw and dynamic flag */
+	IEEE80211_PARAM_SET_CTS_BW = 410,   /* force the CTS BW by setting secondary 20/40 channel CCA busy */
+	IEEE80211_PARAM_VHT_MCS_CAP = 411,	/* Set MCS capability for VHT mode, for WFA testbed */
+	IEEE80211_PARAM_VHT_OPMODE_NOTIF = 412,	/* Override OpMode Notification IE, for WFA testbed */
+	IEEE80211_PARAM_FIRST_STA_IN_MU_SOUNDING = 413, /* select STA which will be first in mu sounding */
+	IEEE80211_PARAM_USE_NON_HT_DUPLICATE_MU = 414, /* Allows usage Non-HT duplicate for MU NDPA and Report_Poll using BW signal TA */
+	IEEE80211_PARAM_BG_PROTECT = 415,	/* 802.11g protection */
+	IEEE80211_PARAM_SET_MUC_BW = 416,	/* Set muc bandwidth */
+	IEEE80211_PARAM_11N_PROTECT = 417,	/* 802.11n protection */
+	IEEE80211_PARAM_SET_MU_RANK_TOLERANCE = 418, /* MU rank tolerance */
+	IEEE80211_PARAM_MU_NDPA_BW_SIGNALING_SUPPORT = 420, /* support of receiving NDPA with bandwidth signalling TA */
+	IEEE80211_PARAM_RESTRICT_WLAN_IP = 421,	/* Block all IP packets from wifi to bridge interfaces */
+	IEEE80211_PARAM_MC_TO_UC = 422,		/* Convert L2 multicast to unicast */
+	IEEE80211_PARAM_HOSTAP_STARTED = 424,   /* hostapd state */
+	IEEE80211_PARAM_WPA_STARTED = 425,	/* wpa_supplicant state */
+	IEEE80211_PARAM_MUC_SYS_DEBUG = 427, /* system debug */
+	IEEE80211_PARAM_EP_STATUS = 428,	/* get the EP STATUS */
+	IEEE80211_PARAM_EXTENDER_MBS_RSSI_MARGIN = 429,	/* MBS RSSI margin */
+	IEEE80211_PARAM_MAX_BCAST_PPS = 430,	/* Restrict the number of broadcast pkts allowed to be processed per second */
+	IEEE80211_PARAM_OFF_CHAN_SUSPEND = 431,	/* suspend/resume all off-channel mechanisms globally */
+	IEEE80211_PARAM_BSS_GROUP_ID = 432,	/* Assigns VAP (SSID) a logical group id */
+	IEEE80211_PARAM_BSS_ASSOC_RESERVE = 433,	/* Reserve associations for specified group */
+	IEEE80211_PARAM_MAX_BOOT_CAC_DURATION = 434,	/* Max boot CAC duration in seconds */
 };
 
 #define	SIOCG80211STATS			(SIOCDEVPRIVATE+2)
@@ -1401,12 +1528,31 @@
 #define SIOCDEV_SUBIO_GET_LINK_QUALITY_MAX	(SIOCDEV_SUBIO_BASE + 26)
 #define SIOCDEV_SUBIO_SET_CHANNEL_POWER_TABLE	(SIOCDEV_SUBIO_BASE + 27)
 #define SIOCDEV_SUBIO_SET_WEATHER_CHAN	(SIOCDEV_SUBIO_BASE + 28)
+#define SIOCDEV_SUBIO_GET_CHANNEL_POWER_TABLE	(SIOCDEV_SUBIO_BASE + 29)
+#define SIOCDEV_SUBIO_SETGET_CHAN_DISABLED	(SIOCDEV_SUBIO_BASE + 30)
+#define SIOCDEV_SUBIO_SET_SEC_CHAN		(SIOCDEV_SUBIO_BASE + 31)
+#define SIOCDEV_SUBIO_GET_SEC_CHAN		(SIOCDEV_SUBIO_BASE + 32)
+#define SIOCDEV_SUBIO_SET_DSCP2TID_MAP		(SIOCDEV_SUBIO_BASE + 33)
+#define SIOCDEV_SUBIO_GET_DSCP2TID_MAP		(SIOCDEV_SUBIO_BASE + 34)
+#define SIOCDEV_SUBIO_GET_TX_AIRTIME		(SIOCDEV_SUBIO_BASE + 35)
+#define SIOCDEV_SUBIO_GET_CHAN_PRI_INACT	(SIOCDEV_SUBIO_BASE + 36)
+#define SIOCDEV_SUBIO_GET_SUPP_CHAN		(SIOCDEV_SUBIO_BASE + 37)
+#define SIOCDEV_SUBIO_GET_CLIENT_MACS		(SIOCDEV_SUBIO_BASE + 38)
+#define SIOCDEV_SUBIO_SAMPLE_ALL_DATA		(SIOCDEV_SUBIO_BASE + 39)
+#define SIOCDEV_SUBIO_GET_ASSOC_DATA		(SIOCDEV_SUBIO_BASE + 40)
 
 enum L2_EXT_FILTER_PORT {
 	L2_EXT_FILTER_EMAC_0_PORT = 0,
-	L2_EXT_FILTER_EMAC_1_PORT = 1
+	L2_EXT_FILTER_EMAC_1_PORT = 1,
+	L2_EXT_FILTER_PCIE_PORT = 2
 };
 
+#ifdef CONFIG_TOPAZ_PCIE_TARGET
+	#define L2_EXT_FILTER_DEF_PORT L2_EXT_FILTER_PCIE_PORT
+#else
+	#define L2_EXT_FILTER_DEF_PORT L2_EXT_FILTER_EMAC_0_PORT
+#endif
+
 struct ieee80211_clone_params {
 	char icp_name[IFNAMSIZ];		/* device name */
 	uint16_t icp_opmode;			/* operating mode */
@@ -1435,6 +1581,26 @@
 	IEEE80211_APPIE_NUM_OF_FRAME		= 6
 };
 
+/* the beaconing schemes - the mapping between 8 VAPs and 4 HW TX queues for beacon */
+enum {
+	/*
+	 * Scheme 0 - default
+	 * VAP0/VAP4 - HW queue0
+	 * VAP1/VAP5 - HW queue1
+	 * VAP2/VAP6 - HW queue2
+	 * VAP3/VAP7 - HW queue3
+	 */
+	QTN_BEACONING_SCHEME_0 = 0,
+	/*
+	 * Scheme 1:
+	 * VAP0/VAP1 - HW queue0
+	 * VAP2/VAP3 - HW queue1
+	 * VAP4/VAP5 - HW queue2
+	 * VAP6/VAP7 - HW queue3
+	 */
+	QTN_BEACONING_SCHEME_1 = 1
+};
+
 /*
  * This enum must be kept in sync with tdls_operation_string.
  * enum ieee80211_tdls_operation - values for tdls_oper callbacks
@@ -1500,7 +1666,7 @@
 	u_int8_t	data[0];                /* action frame payload data */
 }__packed;
 
-/* Structre used to send action frame from hostapd */
+/* Structure used to send action frame from hostapd */
 struct app_action_frame_buf {
 	u_int8_t	cat;			/* action frame category */
 	u_int8_t	action;			/* action frame action */
@@ -1570,8 +1736,8 @@
 #define IEEE80211_TDLS_TIMEOUT_TIME_MAX	3600
 #define IEEE80211_TDLS_LINK_WEIGHT_MIN	0
 #define IEEE80211_TDLS_LINK_WEIGHT_MAX	10
-#define IEEE80211_TDLS_TRAINING_PKT_CNT_MIN	10
-#define IEEE80211_TDLS_TRAINING_PKT_CNT_MAX	1000
+#define IEEE80211_TDLS_TRAINING_PKT_CNT_MIN	16
+#define IEEE80211_TDLS_TRAINING_PKT_CNT_MAX	8192
 #define IEEE80211_TDLS_DISC_INTERVAL_MIN	60
 #define IEEE80211_TDLS_DISC_INTERVAL_MAX	3600
 #define IEEE80211_TDLS_PATH_SEL_PPS_THRSHLD_MIN	8
@@ -1654,6 +1820,8 @@
 #define IEEE80211_EXTENDER_MAX_INTERVAL	300
 #define IEEE80211_EXTENDER_MIN_ROAMING	0
 #define IEEE80211_EXTENDER_MAX_ROAMING	1
+#define IEEE80211_EXTENDER_MIN_MARGIN	0
+#define IEEE80211_EXTENDER_MAX_MARGIN	12
 
 /**
  * Structure contains data of wds extender event.
@@ -1670,6 +1838,7 @@
 	uint8_t extender_role;
 	uint8_t link_status;
 	uint8_t channel;
+	uint8_t bandwidth;
 	uint8_t ssid[IEEE80211_NWID_LEN + 1];
 	uint8_t ie_len;
 	uint8_t wds_extender_ie[0];
@@ -1677,4 +1846,6 @@
 
 #endif /* __linux__ */
 
+#pragma pack()
+
 #endif /* _NET80211_IEEE80211_IOCTL_H_ */
diff --git a/include/shared/net80211/ieee80211_qos.h b/include/shared/net80211/ieee80211_qos.h
index ba94cc6..ff75eec 100644
--- a/include/shared/net80211/ieee80211_qos.h
+++ b/include/shared/net80211/ieee80211_qos.h
@@ -12,6 +12,7 @@
 #define	WME_AC_BK	1		/* background */
 #define	WME_AC_VI	2		/* video */
 #define	WME_AC_VO	3		/* voice */
+#define	WME_AC_NUM	4
 
 enum {
 	IEEE80211_WMMPARAMS_CWMIN	= 1,
@@ -19,7 +20,7 @@
 	IEEE80211_WMMPARAMS_AIFS	= 3,
 	IEEE80211_WMMPARAMS_TXOPLIMIT	= 4,
 	IEEE80211_WMMPARAMS_ACM		= 5,
-	IEEE80211_WMMPARAMS_NOACKPOLICY	= 6,	
+	IEEE80211_WMMPARAMS_NOACKPOLICY	= 6,
 };
 
 #endif
diff --git a/include/shared/qtn/qvsp_data.h b/include/shared/qtn/qvsp_data.h
index 4fad0c6..262b52f 100644
--- a/include/shared/qtn/qvsp_data.h
+++ b/include/shared/qtn/qvsp_data.h
@@ -508,6 +508,7 @@
 	struct qvsp_stats_if	stats_if[QVSP_IF_MAX];
 };
 
+/* This structure is being deprecated and replaced with the endian-safe qvsp_strm_entry_s */
 struct qvsp_strm_info {
 	union qvsp_hash_flds	hash_flds;
 	uint16_t		node_idx;
@@ -540,6 +541,41 @@
 	struct qvsp_strm_stats	prev_stats;
 };
 
+/* Endian-safe version of qvsp_strm_info */
+struct qvsp_strm_info_safe {
+	uint16_t		node_idx;
+	uint8_t			node_mac[6];
+	uint8_t			vap_pri;
+	uint8_t			tid;
+	uint16_t		hairpin_id;
+	uint16_t		hairpin_type;
+	uint8_t			ac_in;
+	uint8_t			ac_out;
+	uint8_t			strm_state;
+	uint8_t			disable_remote;
+	uint8_t			is_3rdpt_udp_us;
+	uint16_t		last_ref_secs;
+	uint32_t		ni_inv_phy_rate;
+	uint32_t		phy_rate_disabled;
+	uint32_t		bytes_max;
+	uint32_t		ni_cost;
+	uint16_t		cost_current;
+	uint16_t		cost_max;
+	uint8_t			hash;
+	uint8_t			dir;
+	uint32_t                throt_policy;
+	uint32_t                throt_rate;
+	uint32_t                demote_rule;
+	/* current state, might be different from demote_rule when recovering */
+	uint32_t                demote_state;
+	struct qvsp_strm_stats	prev_stats;
+};
+
+#define QVSP_STRM_MAX_ENTRIES	256
+struct qvsp_strms {
+	struct qvsp_strm_info_safe strms[QVSP_STRM_MAX_ENTRIES];
+};
+
 /** @}*/
 
 #endif	/* MUC_BUILD */
@@ -587,7 +623,7 @@
 static __inline__ uint32_t
 qvsp_inv2phy(uint32_t inv_phy)
 {
-	return 65536 / inv_phy;
+	return (inv_phy == 0) ? 0 : (65536 / inv_phy);
 }
 
 /*
diff --git a/include/shared/qtn/qvsp_ioctl.h b/include/shared/qtn/qvsp_ioctl.h
index 2ffcdc8..5705bdb 100644
--- a/include/shared/qtn/qvsp_ioctl.h
+++ b/include/shared/qtn/qvsp_ioctl.h
@@ -28,7 +28,9 @@
 	QVSP_IOCTL_RULE_DEL_INDEX,
 	QVSP_IOCTL_RULE_GETLIST,
 	QVSP_IOCTL_STRM_GETLIST,
+	QVSP_IOCTL_STRM_GETLIST_SAFE,
 	QVSP_IOCTL_STRM_GETLIST_ALL,
+	QVSP_IOCTL_STRM_GETLIST_ALL_SAFE,
 	QVSP_IOCTL_STATS_GET,
 	QVSP_IOCTL_INACTIVE_FLAGS_GET,
 	QVSP_IOCTL_MAX
diff --git a/kernel/pm_qos_params.c b/kernel/pm_qos_params.c
index db9d6a7..82b11a6 100644
--- a/kernel/pm_qos_params.c
+++ b/kernel/pm_qos_params.c
@@ -108,7 +108,7 @@
 
 static BLOCKING_NOTIFIER_HEAD(power_save_notifier);
 static struct pm_qos_object power_save_pm_qos = {
-	.requests =	{LIST_HEAD_INIT(power_save_pm_qos.requests.list)},
+	.requests = {LIST_HEAD_INIT(power_save_pm_qos.requests.list)},
 	.notifiers = &power_save_notifier,
 	.name = "power_save",
 	.default_value = 1,
@@ -116,12 +116,23 @@
 	.comparitor = max_compare_zero_biggest
 };
 
+static BLOCKING_NOTIFIER_HEAD(power_emac_notifier);
+static struct pm_qos_object power_emac_pm_qos = {
+	.requests = {LIST_HEAD_INIT(power_emac_pm_qos.requests.list)},
+	.notifiers = &power_emac_notifier,
+	.name = "power_emac",
+	.default_value = 1,
+	.target_value = ATOMIC_INIT(0),
+	.comparitor = max_compare_zero_biggest
+};
+
 static struct pm_qos_object *pm_qos_array[] = {
 	&null_pm_qos,
 	&cpu_dma_pm_qos,
 	&network_lat_pm_qos,
 	&network_throughput_pm_qos,
-	&power_save_pm_qos
+	&power_save_pm_qos,
+	&power_emac_pm_qos
 };
 
 static DEFINE_SPINLOCK(pm_qos_lock);
@@ -208,6 +219,14 @@
 	return -1;
 }
 
+void pm_qos_refresh_notifiers(const int pm_qos_class)
+{
+	blocking_notifier_call_chain(
+			pm_qos_array[pm_qos_class]->notifiers,
+			atomic_read(&pm_qos_array[pm_qos_class]->target_value), NULL);
+}
+EXPORT_SYMBOL_GPL(pm_qos_refresh_notifiers);
+
 /**
  * pm_qos_request - returns current system wide qos expectation
  * @pm_qos_class: identification of which qos value is requested
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 4c2af44..f4c1102 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -106,6 +106,7 @@
 #endif
 #ifdef CONFIG_DEFERRED_PRINTK
 #include <linux/interrupt.h>
+#include <linux/console.h>
 unsigned int g_dprintk_en = 0;
 extern struct tasklet_struct printk_tasklet;
 #endif
@@ -2376,20 +2377,29 @@
 		     void __user *buffer, size_t *lenp, loff_t *ppos)
 {
 	int ret;
-	ret = do_proc_dointvec(table, write, buffer, lenp, ppos,
-			NULL, NULL);
+	const uint32_t was_dprintk_enabled = g_dprintk_en;
+
+	acquire_console_sem();
+	ret = do_proc_dointvec(table, write, buffer, lenp, ppos, NULL, NULL);
+	if (ret || !write) {
+		release_console_sem();
+		return ret;
+	}
 
 	if (g_dprintk_en > 1)
-		return ret;
-	if (!ret && write) {
-		if (!g_dprintk_en)
+		g_dprintk_en = 1;
+
+	if (was_dprintk_enabled ^ g_dprintk_en) {
+		if (!g_dprintk_en) {
 			tasklet_disable(&printk_tasklet);
-		else {
+		} else {
 			deferred_printk_rest_index();
 			tasklet_enable(&printk_tasklet);
 		}
 	}
-	return ret;
+	release_console_sem();
+
+	return 0;
 }
 #endif
 /*
diff --git a/kernel/watch64.c b/kernel/watch64.c
index 7b2eee8..4905d12 100644
--- a/kernel/watch64.c
+++ b/kernel/watch64.c
@@ -76,6 +76,16 @@
 	return 0;
 }
 
+int watch64_reset(unsigned long* ptr, struct watch64* st)
+{
+	return 0;
+}
+
+int __watch64_reset(unsigned long* ptr, struct watch64* st)
+{
+	return 0;
+}
+
 int watch64_enable(unsigned long* ptr, struct watch64* st)
 {
 	return 0;
@@ -296,6 +306,49 @@
 	return 0;
 }
 
+inline int __watch64_write(unsigned long* ptr, struct watch64* st, int enable_flag)
+{
+	if (!st)
+		st = __watch64_find(ptr);
+
+	if (!st)
+		return -EINVAL;
+
+	st->oldval = *ptr;
+	write_seqlock(&st->lock);
+	st->total = (u_int64_t) st->oldval;
+	write_sequnlock(&st->lock);
+
+	if (enable_flag)
+		st->active = 1;
+
+	return 0;
+}
+
+/*
+ * Reset a variable watch with RCU lock
+ */
+
+int watch64_reset(unsigned long* ptr, struct watch64* st)
+{
+	int tmp;
+
+	rcu_read_lock();
+	tmp = __watch64_reset(ptr, st);
+	rcu_read_unlock();
+
+	return tmp;
+}
+
+/*
+ * Reset a variable watch without RCU lock
+ */
+
+inline int __watch64_reset(unsigned long* ptr, struct watch64* st)
+{
+	return __watch64_write(ptr, st, 0);
+}
+
 /*
  * Enable a variable watch with RCU lock
  */
@@ -317,19 +370,7 @@
 
 inline int __watch64_enable(unsigned long* ptr, struct watch64* st)
 {
-	if (!st)
-		st = __watch64_find(ptr);
-
-	if (!st)
-		return -EINVAL;
-
-	st->oldval = *ptr;
-	write_seqlock(&st->lock);
-	st->total = (u_int64_t) st->oldval;
-	write_sequnlock(&st->lock);
-	st->active = 1;
-
-	return 0;
+	return __watch64_write(ptr, st, 1);
 }
 
 /*
@@ -396,6 +437,7 @@
 EXPORT_SYMBOL(watch64_unregister);
 EXPORT_SYMBOL(watch64_find);
 EXPORT_SYMBOL(watch64_disable);
+EXPORT_SYMBOL(watch64_reset);
 EXPORT_SYMBOL(watch64_enable);
 EXPORT_SYMBOL(watch64_toggle);
 EXPORT_SYMBOL(watch64_getval);
diff --git a/net/8021q/vlan_core.c b/net/8021q/vlan_core.c
index 9e97364..2844ffc 100644
--- a/net/8021q/vlan_core.c
+++ b/net/8021q/vlan_core.c
@@ -140,3 +140,15 @@
 				 vlan_gro_common(napi, grp, vlan_tci, skb));
 }
 EXPORT_SYMBOL(vlan_gro_frags);
+
+int vlan_check_vlan_exist(struct net_device *dev, u16 vlan_id)
+{
+	int ret;
+
+	rcu_read_lock();
+	ret = !!__find_vlan_dev(dev, vlan_id);
+	rcu_read_unlock();
+
+	return ret;
+}
+EXPORT_SYMBOL(vlan_check_vlan_exist);
diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c
index dc3a8a3..afd0da7 100644
--- a/net/bridge/br_fdb.c
+++ b/net/bridge/br_fdb.c
@@ -77,7 +77,6 @@
 
 static int br_get_timestamp_update_fwt(struct net_bridge_fdb_entry *fdb)
 {
-#ifdef TOPAZ_PLATFORM
 	int fwt_ageing_jiffies;
 
 	if (!fdb->is_static && !fdb->is_local && g_fwt_ageing_jiffies_hook) {
@@ -87,7 +86,7 @@
 			return 1;
 		}
 	}
-#endif
+
 	return 0;
 }
 
@@ -132,7 +131,6 @@
 
 void br_handle_fwt_capacity(struct net_bridge *br)
 {
-#ifdef TOPAZ_PLATFORM
 	uint16_t fwt_entries;
 
 	if (!g_fwt_get_ent_cnt_hook) {
@@ -145,7 +143,6 @@
 		br->ageing_time = max(BR_AGE_MIN_SEC * HZ, br->ageing_time / 2);
 		mod_timer(&br->gc_timer, jiffies);
 	}
-#endif
 }
 
 void br_fdb_changeaddr(struct net_bridge_port *p, const unsigned char *newaddr)
@@ -194,7 +191,7 @@
 	uint16_t fwt_entries;
 	unsigned long delay = hold_time(br);
 
-	if (g_fwt_get_ent_cnt_hook) {
+	if (g_fwt_get_ent_cnt_hook && !br->topology_change) {
 		fwt_entries = g_fwt_get_ent_cnt_hook();
 		if (fwt_entries < BR_FWT_THRESH_HIGH) {
 			mod_timer(&br->gc_timer, jiffies + delay);
@@ -212,7 +209,7 @@
 			if (f->is_static)
 				continue;
 			br_get_timestamp_update_fwt(f);
-			this_timer = f->ageing_timer + br->ageing_time;
+			this_timer = f->ageing_timer + delay;
 			if (time_before_eq(this_timer, jiffies)) {
 				fdb_delete(br, f);
 			}
diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
index 90128b2..459ef82 100644
--- a/net/bridge/br_forward.c
+++ b/net/bridge/br_forward.c
@@ -21,21 +21,7 @@
 #include <linux/netfilter_bridge.h>
 #include "br_private.h"
 
-static int br_vlan_forward = 1;
 static int br_ap_isolate_enabled = 0;
-
-void br_vlan_set_forward(int flag) {
-	br_vlan_forward = !!flag;
-}
-EXPORT_SYMBOL(br_vlan_set_forward);
-
-static inline int br_vlan_pass_through_enabled(const struct sk_buff *skb) {
-	if (br_vlan_forward) {
-		return 1;
-	}
-	return (skb->protocol != htons(ETH_P_8021Q));
-}
-
 void br_set_ap_isolate(int enable) {
 	br_ap_isolate_enabled = !!enable;
 }
@@ -79,7 +65,6 @@
 {
 	return (p->state == BR_STATE_FORWARDING &&
 			br_src_port_filter_check(p, skb, skb->dest_port) &&
-			br_vlan_pass_through_enabled(skb) &&
 			br_ap_isolate_should_forward(p, skb));
 }
 
@@ -115,6 +100,12 @@
 static void __br_deliver(const struct net_bridge_port *to, struct sk_buff *skb)
 {
 	skb->dev = to->dev;
+
+	if (unlikely(skb->ext_l2_filter && !br_is_wlan_dev(skb->dev))) {
+		kfree_skb(skb);
+		return;
+	}
+
 	NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_OUT, skb, NULL, skb->dev,
 		br_forward_finish);
 }
@@ -132,6 +123,11 @@
 	skb->dev = to->dev;
 	skb_forward_csum(skb);
 
+	if (unlikely(skb->ext_l2_filter && !br_is_wlan_dev(skb->dev))) {
+		kfree_skb(skb);
+		return;
+	}
+
 	NF_HOOK(NFPROTO_BRIDGE, NF_BR_FORWARD, skb, indev, skb->dev,
 		br_forward_finish);
 }
@@ -451,6 +447,7 @@
 void br_multicast_copy_to_sub_ports(struct net_bridge *br, struct net_bridge_mdb_entry *mdst,
 		struct sk_buff *skb)
 {
+#if 0
 	struct net_bridge_port *port;
 
 	list_for_each_entry_rcu(port, &br->port_list, list) {
@@ -471,5 +468,13 @@
 			br_multicast_bitmap_flood(port, bmp, skb, __br_forward);
 		}
 	}
+#else
+	struct net_bridge_port_group *pg;
+
+	for (pg = mdst->ports; pg != NULL; pg = pg->next) {
+		skb->dest_port = pg->sub_port;
+		maybe_deliver(pg->port, pg->port, skb, __br_forward);
+	}
+#endif
 }
 #endif
diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c
index 3a93f49..570ce26 100644
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -83,12 +83,7 @@
 
 static int br_handle_mcast_mgmt_frame(struct sk_buff *skb, struct net_bridge *br)
 {
-	uint8_t igmp_snoop;
-
-	igmp_snoop = (br->igmp_snoop_enabled == BR_IGMP_SNOOP_ENABLED ||
-					br->igmp_snoop_enabled == BR_IGMP_SNOOP_HYBRID);
-
-	return igmp_snoop && (!BR_INPUT_SKB_CB(skb)->igmp ||
+	return br->igmp_snoop_enabled && (!BR_INPUT_SKB_CB(skb)->igmp ||
 			BR_INPUT_SKB_CB_UCAST_FWD(skb) ||
 			BR_INPUT_SKB_CB_MROUTERS_ONLY(skb));
 }
@@ -154,7 +149,7 @@
 				if (skb2 == NULL)
 					kfree_skb(skb);
 				skb = NULL;
-			} else if (br->igmp_snoop_enabled == BR_IGMP_SNOOP_ENABLED) {
+			} else if (br->igmp_snoop_enabled) {
 				goto drop;
 			}
 		} else {
@@ -162,7 +157,7 @@
 			if (mdst) {
 				br_multicast_forward(mdst, skb, skb2);
 				skb = NULL;
-			} else if (br->igmp_snoop_enabled == BR_IGMP_SNOOP_ENABLED) {
+			} else if (br->igmp_snoop_enabled) {
 				goto drop;
 			}
 		}
diff --git a/net/bridge/br_ioctl.c b/net/bridge/br_ioctl.c
index d4de4c4..bd6afff 100644
--- a/net/bridge/br_ioctl.c
+++ b/net/bridge/br_ioctl.c
@@ -344,16 +344,10 @@
 				       args[2], args[3]);
 
 	case BRCTL_SET_IGMP_SNOOP_STATE:
-		if (args[1] <= BR_IGMP_SNOOP_HYBRID) {
-			br->igmp_snoop_enabled = args[1];
-		} else {
+		if (args[1] > BR_IGMP_SNOOP_ENABLED)
 			return -EINVAL;
-		}
-		if (br->igmp_snoop_enabled == BR_IGMP_SNOOP_HYBRID) {
-			printk("Hybrid IGMP snooping\n");
-		} else {
-			printk("%sbling IGMP snooping\n", args[1] ? "Ena" : "Disa");
-		}
+		br->igmp_snoop_enabled = args[1];
+		printk("%sbling IGMP snooping\n", args[1] ? "Ena" : "Disa");
 		return 0;
 
 	case BRCTL_SET_SSDP_FLOOD_STATE:
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
index 0e78ff5..116007c 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -63,7 +63,7 @@
 };
 
 static void br_igmp_snoop_trace_v3_report(struct net_device *dev, __be32 saddr,
-	const struct igmphdr *igmp)
+	const struct igmphdr *igmp, const char *vlan_str, uint8_t snoop_enabled)
 {
 	struct igmpv3_report *igmpv3_rpt = (struct igmpv3_report *)igmp;
 	struct igmpv3_grec *igmpv3_grec = &igmpv3_rpt->grec[0];
@@ -71,7 +71,8 @@
 	u8 ngrec;	/* number of Group Records */
 	u8 grec_idx;
 
-	BR_SNOOP_DBG("IGMPv3 Membership Report from " NIPQUAD_FMT "\n", NIPQUAD(saddr));
+	BR_SNOOP_DBG("IGMPv3 Membership Report from %pI4, vlan %s%s\n",
+		&saddr, vlan_str, snoop_enabled ? "" : " [ignored]");
 
 	ngrec = ntohs(igmpv3_rpt->ngrec);
 	/* impossible */
@@ -93,15 +94,15 @@
 		grec_nsrcs = ntohs(igmpv3_grec->grec_nsrcs);
 		grec_len = sizeof(struct igmpv3_grec) + grec_nsrcs * sizeof(__be32);
 
-		BR_SNOOP_DBG("  %u " NIPQUAD_FMT " %s ",
+		BR_SNOOP_DBG("  %u %pI4 %s ",
 			grec_idx,
-			NIPQUAD(igmpv3_grec->grec_mca),
+			&igmpv3_grec->grec_mca,
 			igmpv3_grec_type[igmpv3_grec->grec_type - 1]);
 
 		/* dump source list */
 		for (nsrc_idx = 0; nsrc_idx < grec_nsrcs; nsrc_idx++) {
-			BR_SNOOP_DBG("%s" NIPQUAD_FMT, is_first ? "" : ", ",
-				NIPQUAD(igmpv3_grec->grec_src[nsrc_idx]));
+			BR_SNOOP_DBG("%s %pI4", is_first ? "" : ", ",
+				&igmpv3_grec->grec_src[nsrc_idx]);
 			is_first = 0;
 		}
 		BR_SNOOP_DBG("\n");
@@ -111,32 +112,44 @@
 	}
 }
 
+#define BR_VLANID_STR_MAX_LEN	8
 static void br_igmp_snoop_trace(struct net_device *dev, __be32 saddr,
-	const struct igmphdr *igmp)
+	const struct igmphdr *igmp, struct sk_buff *skb, uint8_t snoop_enabled)
 {
+	struct vlan_ethhdr *veth = vlan_eth_hdr(skb);
+	char vlan_str[BR_VLANID_STR_MAX_LEN] = { 0 };
+
+	if (g_br_igmp_snoop_dbg) {
+		if (veth->h_vlan_proto == __constant_htons(ETH_P_8021Q))
+			snprintf(vlan_str, BR_VLANID_STR_MAX_LEN, "%u", ntohs(veth->h_vlan_TCI) & VLAN_VID_MASK);
+		else
+			snprintf(vlan_str, BR_VLANID_STR_MAX_LEN, "%s", "none");
+	}
+
 	switch(igmp->type) {
 	case IGMP_HOST_MEMBERSHIP_QUERY:
-		BR_SNOOP_DBG("IGMP Membership Query");
+		BR_SNOOP_DBG("IGMP Membership Query, vlan %s", vlan_str);
 		break;
 	case IGMP_HOST_MEMBERSHIP_REPORT:
-		BR_SNOOP_DBG("IGMPv1 Membership Report");
+		BR_SNOOP_DBG("IGMPv1 Membership Report, vlan %s", vlan_str);
 		break;
 	case IGMPV2_HOST_MEMBERSHIP_REPORT:
-		BR_SNOOP_DBG("IGMPv2 Membership Report");
+		BR_SNOOP_DBG("IGMPv2 Membership Report, vlan %s", vlan_str);
 		break;
 	case IGMP_HOST_LEAVE_MESSAGE:
-		BR_SNOOP_DBG("IGMP Leave Group");
+		BR_SNOOP_DBG("IGMP Leave Group, vlan %s", vlan_str);
 		break;
 	case IGMPV3_HOST_MEMBERSHIP_REPORT:
-		br_igmp_snoop_trace_v3_report(dev, saddr, igmp);
+		br_igmp_snoop_trace_v3_report(dev, saddr, igmp, vlan_str, snoop_enabled);
 		return;
 	default:
-		BR_SNOOP_DBG("Unsupported type %u\n", igmp->type);
+		BR_SNOOP_DBG("Unsupported type %u, vlan %s\n", igmp->type, vlan_str);
 		return;
 	}
 
-	BR_SNOOP_DBG(" from " NIPQUAD_FMT " group " NIPQUAD_FMT "\n", NIPQUAD(saddr),
-		NIPQUAD(igmp->group));
+	BR_SNOOP_DBG(" from %pI4 group %pI4%s\n",
+		&saddr, igmp->group, snoop_enabled ? "" : " [ignored]");
+
 }
 
 void br_multicast_mdb_dump(struct net_bridge_mdb_entry *me)
@@ -281,9 +294,13 @@
 	struct net_bridge_mdb_htable *mdb = br->mdb;
 	struct br_ip ip;
 
-	ip.proto = skb->protocol;
+	if (skb->protocol == __constant_htons(ETH_P_8021Q)) {
+		ip.proto = vlan_eth_hdr(skb)->h_vlan_encapsulated_proto;
+	} else {
+		ip.proto = skb->protocol;
+	}
 
-	switch (skb->protocol) {
+	switch (ip.proto) {
 	case htons(ETH_P_IP):
 		ip.u.ip4 = ip_hdr(skb)->daddr;
 		break;
@@ -393,11 +410,6 @@
 	if (mp->ports)
 		goto out;
 
-	if (br->igmp_snoop_enabled == BR_IGMP_SNOOP_HYBRID) {
-		mod_timer(&mp->timer, jiffies + br->multicast_last_member_interval);
-		goto out;
-	}
-
 	mdb = br->mdb;
 	hlist_del_rcu(&mp->hlist[mdb->ver]);
 	mdb->size--;
@@ -461,8 +473,8 @@
 	spin_lock(&br->multicast_lock);
 
 	if (pg->addr.proto == htons(ETH_P_IP))
-		BR_SNOOP_DBG("Member port timeout: group " NIPQUAD_FMT ", subport 0x%x\n",
-			NIPQUAD(pg->addr.u.ip4), pg->sub_port);
+		BR_SNOOP_DBG("Member port timeout: group %pI4, subport 0x%x\n",
+			&pg->addr.u.ip4, pg->sub_port);
 
 	if (!netif_running(br->dev) || timer_pending(&pg->timer) ||
 	    hlist_unhashed(&pg->mglist))
@@ -1703,14 +1715,12 @@
 #endif
 
 /* Added by Quantenna */
-#ifdef TOPAZ_PLATFORM
 void br_register_mult_cbk_t(br_leave_multicast_cbk leave_func, br_join_multicast_cbk join_func)
 {
 	g_fwt_mult_leave_hook = leave_func;
 	g_fwt_mult_join_hook = join_func;
 }
 EXPORT_SYMBOL(br_register_mult_cbk_t);
-#endif
 
 static int br_multicast_ipv4_rcv(struct net_bridge *br,
 				 struct net_bridge_port *port,
@@ -1783,26 +1793,28 @@
 	BR_INPUT_SKB_CB(skb)->igmp = 1;
 	ih = igmp_hdr(skb2);
 
-	switch (ih->type) {
-	case IGMP_HOST_MEMBERSHIP_REPORT:
-	case IGMPV2_HOST_MEMBERSHIP_REPORT:
-		BR_INPUT_SKB_CB(skb)->mrouters_only = 1;
-		err = br_ip4_multicast_add_group(br, port,
-				src_mac, skb->src_port, ih->group);
-		break;
-	case IGMPV3_HOST_MEMBERSHIP_REPORT:
-		err = br_ip4_multicast_igmp3_report(br, port, skb2);
-		break;
-	case IGMP_HOST_MEMBERSHIP_QUERY:
-		err = br_ip4_multicast_query(br, port, skb2);
-		break;
-	case IGMP_HOST_LEAVE_MESSAGE:
-		br_ip4_multicast_leave_group(br, port,
-				src_mac, skb->src_port, ih->group);
-		break;
+	if (br->igmp_snoop_enabled) {
+		switch (ih->type) {
+		case IGMP_HOST_MEMBERSHIP_REPORT:
+		case IGMPV2_HOST_MEMBERSHIP_REPORT:
+			BR_INPUT_SKB_CB(skb)->mrouters_only = 1;
+			err = br_ip4_multicast_add_group(br, port,
+					src_mac, skb->src_port, ih->group);
+			break;
+		case IGMPV3_HOST_MEMBERSHIP_REPORT:
+			err = br_ip4_multicast_igmp3_report(br, port, skb2);
+			break;
+		case IGMP_HOST_MEMBERSHIP_QUERY:
+			err = br_ip4_multicast_query(br, port, skb2);
+			break;
+		case IGMP_HOST_LEAVE_MESSAGE:
+			br_ip4_multicast_leave_group(br, port,
+					src_mac, skb->src_port, ih->group);
+			break;
+		}
 	}
 
-	br_igmp_snoop_trace(skb->dev, iph->saddr, ih);
+	br_igmp_snoop_trace(skb->dev, iph->saddr, ih, skb2, br->igmp_snoop_enabled);
 
 	if ((skb2 != skb) && BR_INPUT_SKB_CB(skb2)->ucast_fwd)
 		BR_INPUT_SKB_CB(skb)->ucast_fwd = 1;
@@ -1977,7 +1989,6 @@
 
 	if (skb->protocol == htons(ETH_P_8021Q)) {
 		skb_push(skb, sizeof(struct vlan_hdr));
-		skb_reset_network_header(skb);
 	}
 
 	return ret;
diff --git a/net/bridge/br_public.h b/net/bridge/br_public.h
index 8be23e3..65aa114 100755
--- a/net/bridge/br_public.h
+++ b/net/bridge/br_public.h
@@ -186,7 +186,6 @@
 	enum {
 		BR_IGMP_SNOOP_DISABLED,
 		BR_IGMP_SNOOP_ENABLED,
-		BR_IGMP_SNOOP_HYBRID,
 	} igmp_snoop_enabled;
 	enum {
 		BR_SSDP_FLOOD_DISABLED,
@@ -213,7 +212,6 @@
 extern void (*br_fdb_put_hook)(struct net_bridge_fdb_entry *ent);
 
 /* new added APIs */
-void br_vlan_set_forward(int flag);
 void br_vlan_set_promisc(int enable);
 void br_set_ap_isolate(int enable);
 int br_get_ap_isolate(void);
@@ -228,12 +226,10 @@
 typedef int (*br_leave_multicast_cbk)(uint8_t sub_port, uint8_t port_id, const struct br_ip *group);
 typedef uint16_t(*br_fwt_get_ent_cnt)(void);
 
-#ifdef TOPAZ_PLATFORM
 /* register CBK for copying bridge database to fwt interface */
 void br_register_hooks_cbk_t(br_add_entry_cbk add_func, br_delete_entry_cbk delete_func,
 		br_fwt_ageing_time_cbk ageing_func, br_fwt_get_ent_cnt entries_cnt);
 void br_register_mult_cbk_t(br_leave_multicast_cbk leave_func, br_join_multicast_cbk join_func);
-#endif
 
 #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
 static inline void br_set_sub_port_bitmap(uint32_t *sub_port_map, port_id sub_port)
diff --git a/net/bridge/br_sysfs_br.c b/net/bridge/br_sysfs_br.c
index c32c1ec..65cff5e 100644
--- a/net/bridge/br_sysfs_br.c
+++ b/net/bridge/br_sysfs_br.c
@@ -210,11 +210,7 @@
 
 	rtnl_lock();
 	br->igmp_snoop_enabled = val;
-	if (br->igmp_snoop_enabled == BR_IGMP_SNOOP_HYBRID) {
-		printk("Hybrid IGMP snooping\n");
-	} else {
-		printk("%sbling IGMP snooping\n", val ? "Ena" : "Disa");
-	}
+	printk("%sbling IGMP snooping\n", val ? "Ena" : "Disa");
 	rtnl_unlock();
 
 	return len;
diff --git a/net/core/dev.c b/net/core/dev.c
index 16a8026..fd04833 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -199,12 +199,6 @@
 DEFINE_RWLOCK(dev_base_lock);
 EXPORT_SYMBOL(dev_base_lock);
 
-#ifdef CONFIG_QUANTENNA_RESTRICT_WLAN_IP
-# ifndef CONFIG_QUANTENNA_RESTRICT_OWN_IP
-# define CONFIG_QUANTENNA_RESTRICT_OWN_IP 0x02AF800A
-# endif
-#endif //CONFIG_QUANTENNA_RESTRICT_WLAN_IP
-
 /* Register/unregister all the members of struct net_device_stats with watch64 */
 static inline void net_register_stats64(struct net_device_stats* stats);
 static inline void net_unregister_stats64(struct net_device_stats* stats);
@@ -2917,38 +2911,6 @@
 	skb_reset_transport_header(skb);
 	skb->mac_len = skb->network_header - skb->mac_header;
 
-#ifdef CONFIG_QUANTENNA_RESTRICT_WLAN_IP
-	if (skb && skb->dev && skb->dev->name && skb->dev->name[0] == 'w') {
-		struct ethhdr *ehdr = eth_hdr(skb);
-		if (ehdr) {
-			unsigned char *skb_nhdr = skb_network_header(skb);
-			int offset = -1;
-
-			if (ehdr->h_proto == htons(ETH_P_IP)) {
-				/* ipv4 */
-				offset = 0;
-			} else if(ehdr->h_proto == htons(ETH_P_8021Q)) {
-				/* vlan */
-				struct vlan_ethhdr *vhdr = vlan_eth_hdr(skb);
-				/* ipv4 as encapsulated protocol? this is what we are looking for */
-				if (vhdr && vhdr->h_vlan_encapsulated_proto == htons(ETH_P_IP)) {
-					offset = sizeof(struct vlan_hdr);
-				}
-			}
-
-			if ((offset >= 0) && (skb_nhdr + offset)) {
-				/* getting appropiate pointer for ip hdr */
-				struct iphdr *ihdr = (struct iphdr *)(skb_nhdr + offset);
-				if (ihdr && ihdr->daddr == CONFIG_QUANTENNA_RESTRICT_OWN_IP) {
-					kfree_skb(skb);
-					return NET_RX_DROP;
-				}
-			}
-		}
-	}
-#endif //CONFIG_QUANTENNA_RESTRICT_WLAN_IP
-
-
 	pt_prev = NULL;
 
 	rcu_read_lock();
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 8ea507e..d2deb62 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -817,6 +817,7 @@
 	new->recycle_list = old->recycle_list;
 	new->cache_is_cleaned = 0;
 	new->is_recyclable = 0;
+	new->ext_l2_filter = old->ext_l2_filter;
 
 
 	skb_copy_secmark(new, old);
@@ -854,6 +855,7 @@
 	n->cache_is_cleaned = 0;
 	n->is_recyclable = 0;
 	n->hbm_no_free = 0;
+	n->ext_l2_filter = skb->ext_l2_filter;
 
 	atomic_set(&n->users, 1);
 
