diff --git a/arch/arc/boot/Makefile b/arch/arc/boot/Makefile
index 502336f..655d0cb 100755
--- a/arch/arc/boot/Makefile
+++ b/arch/arc/boot/Makefile
@@ -14,7 +14,7 @@
 
 LZMA := $(shell which lzma)
 MKIMAGE := $(srctree)/scripts/mkuboot.sh
-MKIMAGEFLAGS := -A arc -O linux -C lzma -T kernel -a 0x8493A000 -e 0x8493A000 -n "ARC700 Linux kernel" -Q 0x1 -d
+MKIMAGEFLAGS := -A arc -O linux -C lzma -T kernel -a 0x84938000 -e 0x84938000 -n "ARC700 Linux kernel" -Q 0x1 -d
 OBJCOPYFLAGS := -O binary -R .note -R .note.gnu.build-id -R .comment -S
 
 # From Beta's doc:
diff --git a/arch/arc/configs/topaz_dbdc_config b/arch/arc/configs/topaz_dbdc_config
index 0e586c2..c70bcb7 100644
--- a/arch/arc/configs/topaz_dbdc_config
+++ b/arch/arc/configs/topaz_dbdc_config
@@ -80,7 +80,6 @@
 CONFIG_DEFERRED_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
-# CONFIG_ARC_ELF_CORE_FIX is not set
 # CONFIG_BASE_FULL is not set
 # CONFIG_FUTEX is not set
 # CONFIG_EPOLL is not set
diff --git a/arch/arc/configs/topaz_fpga_config b/arch/arc/configs/topaz_fpga_config
index 744eb1f..1b65a29 100644
--- a/arch/arc/configs/topaz_fpga_config
+++ b/arch/arc/configs/topaz_fpga_config
@@ -80,7 +80,6 @@
 CONFIG_DEFERRED_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
-# CONFIG_ARC_ELF_CORE_FIX is not set
 # CONFIG_BASE_FULL is not set
 # CONFIG_FUTEX is not set
 # CONFIG_EPOLL is not set
diff --git a/arch/arc/configs/topaz_host_config b/arch/arc/configs/topaz_host_config
index 555fa6d..2984cf7 100644
--- a/arch/arc/configs/topaz_host_config
+++ b/arch/arc/configs/topaz_host_config
@@ -82,7 +82,6 @@
 CONFIG_DEFERRED_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
-# CONFIG_ARC_ELF_CORE_FIX is not set
 # CONFIG_BASE_FULL is not set
 # CONFIG_FUTEX is not set
 # CONFIG_EPOLL is not set
diff --git a/arch/arc/configs/topaz_msft_config b/arch/arc/configs/topaz_msft_config
index 1dfe540..4924fd6 100755
--- a/arch/arc/configs/topaz_msft_config
+++ b/arch/arc/configs/topaz_msft_config
@@ -80,7 +80,6 @@
 CONFIG_DEFERRED_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
-# CONFIG_ARC_ELF_CORE_FIX is not set
 # CONFIG_BASE_FULL is not set
 # CONFIG_FUTEX is not set
 # CONFIG_EPOLL is not set
diff --git a/arch/arc/configs/topaz_msmr_config b/arch/arc/configs/topaz_msmr_config
index 1dfe540..4924fd6 100755
--- a/arch/arc/configs/topaz_msmr_config
+++ b/arch/arc/configs/topaz_msmr_config
@@ -80,7 +80,6 @@
 CONFIG_DEFERRED_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
-# CONFIG_ARC_ELF_CORE_FIX is not set
 # CONFIG_BASE_FULL is not set
 # CONFIG_FUTEX is not set
 # CONFIG_EPOLL is not set
diff --git a/arch/arc/configs/topaz_pcie_config b/arch/arc/configs/topaz_pcie_config
index 7df77c7..ee42e2e 100644
--- a/arch/arc/configs/topaz_pcie_config
+++ b/arch/arc/configs/topaz_pcie_config
@@ -81,7 +81,6 @@
 CONFIG_DEFERRED_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
-# CONFIG_ARC_ELF_CORE_FIX is not set
 # CONFIG_BASE_FULL is not set
 # CONFIG_FUTEX is not set
 # CONFIG_EPOLL is not set
diff --git a/arch/arc/configs/topaz_rfic6_config b/arch/arc/configs/topaz_rfic6_config
index 11525a6..66e9102 100644
--- a/arch/arc/configs/topaz_rfic6_config
+++ b/arch/arc/configs/topaz_rfic6_config
@@ -80,7 +80,6 @@
 CONFIG_DEFERRED_PRINTK=n
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
-# CONFIG_ARC_ELF_CORE_FIX is not set
 # CONFIG_BASE_FULL is not set
 # CONFIG_FUTEX is not set
 # CONFIG_EPOLL is not set
diff --git a/arch/arc/configs/topaz_vb_config b/arch/arc/configs/topaz_vb_config
index e5fa6d3..4924fd6 100644
--- a/arch/arc/configs/topaz_vb_config
+++ b/arch/arc/configs/topaz_vb_config
@@ -80,7 +80,6 @@
 CONFIG_DEFERRED_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
-CONFIG_ARC_ELF_CORE_FIX=y
 # CONFIG_BASE_FULL is not set
 # CONFIG_FUTEX is not set
 # CONFIG_EPOLL is not set
@@ -450,8 +449,7 @@
 # CONFIG_FIRMWARE_IN_KERNEL is not set
 CONFIG_EXTRA_FIRMWARE=""
 # CONFIG_SYS_HYPERVISOR is not set
-CONFIG_CONNECTOR=y
-CONFIG_PROC_EVENTS=y
+# CONFIG_CONNECTOR is not set
 CONFIG_MTD=y
 # CONFIG_MTD_DEBUG is not set
 # CONFIG_MTD_TESTS is not set
@@ -530,7 +528,6 @@
 # CONFIG_BLK_DEV_COW_COMMON is not set
 CONFIG_BLK_DEV_LOOP=y
 # CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_DRBD is not set
 
 #
 # DRBD disabled because PROC_FS, INET or CONNECTOR not selected
diff --git a/arch/arc/include/asm/elf.h b/arch/arc/include/asm/elf.h
index f5c487a..60178b1 100755
--- a/arch/arc/include/asm/elf.h
+++ b/arch/arc/include/asm/elf.h
@@ -25,13 +25,8 @@
 
 #define EM_ARCTANGENT	0x5D
 
-#ifdef CONFIG_ARC_ELF_CORE_FIX
-/* Backported from 3.14.24 kernel to fix core dump format */
-#define ELF_NGREG	(sizeof(struct user_regs_struct) / sizeof(elf_greg_t))
-#else
 /* core dump regs is in the order pt_regs, callee_regs, stop_pc (for gdb's sake) */
 #define ELF_NGREG ((sizeof (struct pt_regs)+ sizeof (struct callee_regs) + sizeof(unsigned long))/ sizeof(elf_greg_t))
-#endif
 
 typedef elf_greg_t elf_gregset_t[ELF_NGREG];
 
diff --git a/arch/arc/kernel/troubleshoot.c b/arch/arc/kernel/troubleshoot.c
index 6df40c9..d981025 100644
--- a/arch/arc/kernel/troubleshoot.c
+++ b/arch/arc/kernel/troubleshoot.c
@@ -24,6 +24,7 @@
 #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 */
@@ -423,7 +424,7 @@
 	workspace_size = zlib_deflate_workspacesize();
 	printk(KERN_DEBUG "%s: workspace_size = %d\n", __func__, workspace_size);
 
-	stream.workspace = kmalloc(workspace_size, GFP_ATOMIC);
+	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());
@@ -434,7 +435,7 @@
 	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);
-		kfree(stream.workspace);
+		vfree(stream.workspace);
 		return retval;
 	}
 
@@ -533,7 +534,7 @@
 		printk(KERN_WARNING "%s: zlib_deflateEnd failed, zlib_retval = %d\n", __func__, zlib_retval);
 	}
 
-	kfree(stream.workspace);
+	vfree(stream.workspace);
 
 	return retval;
 }
diff --git a/arch/arc/proc/arc700/traps.c b/arch/arc/proc/arc700/traps.c
index c47fc28..4deb21e 100755
--- a/arch/arc/proc/arc700/traps.c
+++ b/arch/arc/proc/arc700/traps.c
@@ -35,15 +35,14 @@
 volatile int running_on_hw = 1;
 
 void die(const char *str, struct pt_regs *regs, unsigned long address,
-	unsigned long cause_reg)
+         unsigned long cause_reg)
 {
-	if (running_on_hw) {
-		oops_in_progress = 1;
-		show_kernel_fault_diag(str, regs, address, cause_reg);
-	}
+    if (running_on_hw) {
+        show_kernel_fault_diag(str, regs, address, cause_reg);
+    }
 
-	// DEAD END
-	__asm__("flag 1");
+    // DEAD END
+    __asm__("flag 1");
 }
 
 static int noinline do_fatal_exception(unsigned long cause, char *str,
diff --git a/drivers/topaz/Makefile b/drivers/topaz/Makefile
index 79c0aa1..5c3f9d2 100644
--- a/drivers/topaz/Makefile
+++ b/drivers/topaz/Makefile
@@ -1,22 +1,10 @@
 EXTRA_CFLAGS +=	-Wall -Werror -Wno-unknown-pragmas
 
 ifeq ($(board_config),topaz_config)
-	EXTRA_CFLAGS += -DTOPAZ_VB_CONFIG -DTOPAZ_CONGE_CONFIG -DTOPAZ_SRAM_CONFIG
-else ifeq ($(board_config),topaz_vb_config)
-	EXTRA_CFLAGS += -DTOPAZ_VB_CONFIG -DTOPAZ_CONGE_CONFIG -DTOPAZ_SRAM_CONFIG
-else ifeq ($(board_config),topaz_rfic6_config)
-	EXTRA_CFLAGS += -DTOPAZ_VB_CONFIG -DTOPAZ_CONGE_CONFIG -DTOPAZ_SRAM_CONFIG
-else ifeq ($(board_config),topaz_rgmii_config)
-	EXTRA_CFLAGS += -DTOPAZ_CONGE_CONFIG -DTOPAZ_RGMII_CONFIG -DTOPAZ_SRAM_CONFIG
-else ifeq ($(board_config),topaz_vzn_config)
-	EXTRA_CFLAGS += -DTOPAZ_CONGE_CONFIG -DTOPAZ_VZN_CONFIG -DTOPAZ_SRAM_CONFIG
-endif
-
-ifeq ($(board_config),topaz_msft_config)
-	EXTRA_CFLAGS += -DERICSSON_CONFIG
+	EXTRA_CFLAGS += -DTOPAZ_VB_CONFIG
 else
-	ifeq ($(board_config),topaz_msmr_config)
-		EXTRA_CFLAGS += -DERICSSON_CONFIG
+	ifeq ($(board_config),topaz_vb_config)
+		EXTRA_CFLAGS += -DTOPAZ_VB_CONFIG
 	endif
 endif
 
diff --git a/drivers/topaz/fwt_if.c b/drivers/topaz/fwt_if.c
index e9ef948..661496c 100755
--- a/drivers/topaz/fwt_if.c
+++ b/drivers/topaz/fwt_if.c
@@ -234,7 +234,7 @@
 	case FWT_IF_ENABLE:
 		sscanf(str, "%u", &param);
 		if ( (param == 0) || (param == 1)) {
-			*((uint32_t*)var) = param;
+			*((uint8_t*)var) = param;
 		} else {
 			return -EINVAL;
 		}
diff --git a/drivers/topaz/switch_emac.c b/drivers/topaz/switch_emac.c
index 7169949..a805902 100644
--- a/drivers/topaz/switch_emac.c
+++ b/drivers/topaz/switch_emac.c
@@ -53,7 +53,7 @@
 
 #include <compat.h>
 
-#if defined (TOPAZ_SRAM_CONFIG)
+#if defined (TOPAZ_VB_CONFIG)
 #define EMAC_DESC_USE_SRAM 0
 #else
 #define EMAC_DESC_USE_SRAM 1
@@ -78,12 +78,7 @@
 #define EMAC_WBSP_CTRL_DISABLED	0
 #define EMAC_WBSP_CTRL_ENABLED	1
 #define EMAC_WBSP_CTRL_SWAPPED	2
-#if defined (ERICSSON_CONFIG)
-static int emac_wbsp_ctrl = EMAC_WBSP_CTRL_ENABLED;
-#else
 static int emac_wbsp_ctrl = EMAC_WBSP_CTRL_DISABLED;
-#endif
-
 
 static const struct emac_port_info iflist[] = {
 	{
@@ -327,7 +322,6 @@
 	int8_t pool = TOPAZ_HBM_EMAC_TX_DONE_POOL;
 	int interface;
 	struct sk_buff *skb2;
-	struct qtn_vlan_dev *vdev = vport_tbl_lhost[priv->tqe_port];
 
 	for (interface = 0; interface < EMAC_MAX_INTERFACE; interface++){
 		/* In order to drop a packet, the following conditions has to be met:
@@ -346,11 +340,18 @@
 	/*
 	 * restore VLAN tag to packet if needed
 	 */
-	skb2 = switch_vlan_from_proto_stack(skb, vdev, 0, 1);
-	if (!skb2)
+	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;
+	}
 
-	if (vlan_enabled && !qtn_vlan_egress(vdev, 0, skb2->data)) {
+	/*
+	 * 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;
 	}
@@ -695,9 +696,8 @@
 		}
 	}
 
-	skb = switch_vlan_to_proto_stack(skb, 0);
-	if (skb)
-		netif_receive_skb(skb);
+	switch_vlan_strip_tag(skb, 0);
+	netif_receive_skb(skb);
 }
 
 #ifdef TOPAZ_EMAC_NULL_BUF_WR
@@ -919,53 +919,35 @@
 	topaz_dpi_filter_add(port_num, &req);
 }
 
-static void __init topaz_dpi_filter_dscp_vi(int port_num)
-{
-        struct topaz_dpi_filter_request req;
-        struct topaz_dpi_field_def field;
-
-        /* DSCP VI */
-        memset(&req, 0, sizeof(req));
-        memset(&field, 0, sizeof(field));
-
-        req.fields = &field;
-        req.field_count = 1;
-        req.out_port = TOPAZ_TQE_LHOST_PORT;
-        req.out_node = 0;
-        req.tid = 0;
-
-        field.ctrl.data.enable = TOPAZ_DPI_ENABLE;
-        field.ctrl.data.anchor = TOPAZ_DPI_ANCHOR_IPV4;
-        field.ctrl.data.cmp_op = TOPAZ_DPI_CMPOP_EQ;
-        field.ctrl.data.offset = 0;
-	field.val =  0x00b80000;
-	field.mask = 0x00fc0000;
-
-        topaz_dpi_filter_add(port_num, &req);
-}
-
 static void __init topaz_dpi_filter_dhcp(int port_num)
 {
 	struct topaz_dpi_filter_request req;
-	struct topaz_dpi_field_def field;
+	struct topaz_dpi_field_def field[2];
 
-	/* UDP && srcport == 67 && dstport == 68 */
+	/* IPv4 && UDP && srcport == 67 && dstport == 68 */
 
 	memset(&req, 0, sizeof(req));
-	memset(&field, 0, sizeof(field));
+	memset(field, 0, sizeof(field));
 
-	req.fields = &field;
-	req.field_count = 1;
+	req.fields = field;
+	req.field_count = 2;
 	req.out_port = TOPAZ_TQE_LHOST_PORT;
 	req.out_node = 0;
 	req.tid = 0;
 
-	field.ctrl.data.enable = TOPAZ_DPI_ENABLE;
-	field.ctrl.data.anchor = TOPAZ_DPI_ANCHOR_UDP;
-	field.ctrl.data.cmp_op = TOPAZ_DPI_CMPOP_EQ;
-	field.ctrl.data.offset = 0;	/* src_port/dst_port */
-	field.val = (DHCPSERVER_PORT << 16) | DHCPCLIENT_PORT;
-	field.mask = 0xffffffff;
+	field[0].ctrl.data.enable = TOPAZ_DPI_ENABLE;
+	field[0].ctrl.data.anchor = TOPAZ_DPI_ANCHOR_IPV4;
+	field[0].ctrl.data.cmp_op = TOPAZ_DPI_CMPOP_EQ;
+	field[0].ctrl.data.offset = 0;
+	field[0].val = IPUTIL_HDR_VER_4 << 28;
+	field[0].mask = 0xf0000000;
+
+	field[1].ctrl.data.enable = TOPAZ_DPI_ENABLE;
+	field[1].ctrl.data.anchor = TOPAZ_DPI_ANCHOR_UDP;
+	field[1].ctrl.data.cmp_op = TOPAZ_DPI_CMPOP_EQ;
+	field[1].ctrl.data.offset = 0;	/* src_port/dst_port */
+	field[1].val = (DHCPSERVER_PORT << 16) | DHCPCLIENT_PORT;
+	field[1].mask = 0xffffffff;
 
 	topaz_dpi_filter_add(port_num, &req);
 }
@@ -1117,13 +1099,12 @@
 
 	topaz_ipprt_clear_all_entries(port_num);
 	topaz_ipprt_set(port_num, IPPROTO_IGMP, TOPAZ_TQE_LHOST_PORT, 0);
-#if defined(TOPAZ_CONGE_CONFIG)
+#if defined (TOPAZ_VB_CONFIG)
 	topaz_ipprt_set(port_num, IPPROTO_ICMP, TOPAZ_TQE_LHOST_PORT, 0);
 	topaz_ipprt_set(port_num, IPPROTO_TCP, TOPAZ_TQE_LHOST_PORT, 0);
 #endif
 	topaz_dpi_init(port_num);
 	topaz_dpi_filter_arp(port_num);
-	topaz_dpi_filter_dscp_vi(port_num);
 	topaz_dpi_filter_dhcp(port_num);
 #ifdef CONFIG_IPV6
 	topaz_dpi_filter_dhcpv6(port_num);
@@ -1286,8 +1267,6 @@
 	int emac_cfg_p0, emac_cfg_p1;
 	int emac_phy;
 
-	printk("emac wbsp: %d\n", emac_wbsp_ctrl);
-
 	if (!TOPAZ_HBM_SKB_ALLOCATOR_DEFAULT) {
 		printk(KERN_ERR "%s: switch_emac should be used with topaz hbm skb allocator only\n", __FUNCTION__);
 	}
diff --git a/drivers/topaz/switch_tqe.c b/drivers/topaz/switch_tqe.c
index 3329820..96a9275 100644
--- a/drivers/topaz/switch_tqe.c
+++ b/drivers/topaz/switch_tqe.c
@@ -46,7 +46,6 @@
 #include <qtn/iputil.h>
 #include <qtn/mproc_sync.h>
 #include <qtn/qtn_vlan.h>
-#include "linux/net/bridge/br_public.h"
 
 int g_dscp_flag = 0;
 int g_dscp_value[2];
@@ -82,8 +81,6 @@
 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_fwt_add_from_mac_hook g_tqe_fwt_add_from_mac_hook = NULL;
-static tqe_fwt_del_from_mac_hook g_tqe_fwt_del_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);
@@ -122,21 +119,24 @@
 static void tqe_port_set(const enum topaz_tqe_port port, const uint8_t enable)
 {
 	struct topaz_fwt_sw_mcast_entry *mcast_ent;
+	int i;
 
 	if (!g_tqe_fwt_get_mcast_ff_hook) {
 		return;
 	}
 
-	mcast_ent = g_tqe_fwt_get_mcast_ff_hook();
-	if (unlikely(!mcast_ent)) {
-		return;
+	for (i = 0; i < TOPAZ_FWT_MCAST_FF_ENTRIES; i++) {
+		mcast_ent = g_tqe_fwt_get_mcast_ff_hook(i);
+		if (!mcast_ent) {
+			return;
+		}
+		if (enable) {
+			topaz_fwt_sw_mcast_port_set(mcast_ent, port);
+		} else {
+			topaz_fwt_sw_mcast_port_clear(mcast_ent, port);
+		}
+		topaz_fwt_sw_mcast_flush(mcast_ent);
 	}
-	if (enable) {
-		topaz_fwt_sw_mcast_port_set(mcast_ent, port);
-	} else {
-		topaz_fwt_sw_mcast_port_clear(mcast_ent, port);
-	}
-	topaz_fwt_sw_mcast_flush(mcast_ent);
 }
 
 void tqe_port_set_group(const enum topaz_tqe_port port, int32_t group)
@@ -165,15 +165,6 @@
 }
 EXPORT_SYMBOL(tqe_port_unregister);
 
-static inline int tqe_port_same_group(enum topaz_tqe_port in_port, enum topaz_tqe_port out_port)
-{
-	if (tqe_port_handlers[in_port].group > 0 &&
-			tqe_port_handlers[in_port].group == tqe_port_handlers[out_port].group)
-		return 1;
-
-	return 0;
-}
-
 struct update_multicast_tx_stats {
 	void (*fn)(void *ctx, uint8_t node);
 	void *ctx;
@@ -246,7 +237,6 @@
 uint32_t
 switch_tqe_multi_proc_sem_down(char * funcname, int linenum)
 {
-#ifdef CONFIG_TOPAZ_PCIE_TARGET
 	uint32_t prtcnt;
 
 	if (tqe_sem_en == 0)
@@ -258,7 +248,6 @@
 			printk("%s line %d fail to get tqe semaphore\n", funcname, linenum);
 		prtcnt++;
 	}
-#endif
 	return 1;
 }
 
@@ -267,7 +256,6 @@
 uint32_t
 switch_tqe_multi_proc_sem_up(void)
 {
-#ifdef CONFIG_TOPAZ_PCIE_TARGET
 	if (tqe_sem_en == 0)
 		return 1;
 
@@ -277,9 +265,6 @@
 		WARN_ONCE(1, "%s failed to relese HW semaphore\n", __func__);
 		return 0;
 	}
-#else
-	return 1;
-#endif
 }
 
 EXPORT_SYMBOL(switch_tqe_multi_proc_sem_up);
@@ -409,32 +394,6 @@
 		update_multicast.fn(update_multicast.ctx, node);
 }
 
-static inline uint32_t tqe_mcast_enqueue_cnt(const struct topaz_fwt_sw_mcast_entry *const e,
-		uint8_t port_bitmap, const uint8_t in_port, const uint8_t in_node)
-{
-	uint32_t enqueues = 0;
-	uint8_t i;
-
-        /* Exclude input port. If WMAC, the port doesn't contribute, only nodes. */
-        port_bitmap &= ~((1 << in_port) | (1 << TOPAZ_TQE_WMAC_PORT));
-	for (i = 0; i < TOPAZ_TQE_NUM_PORTS; i++) {
-		if ((port_bitmap & BIT(i)) && !tqe_port_same_group(in_port, i))
-			enqueues++;
-	}
-
-        /* add wmac nodes */
-        for (i = 0; i < ARRAY_SIZE(e->node_bitmap) ; i++) {
-                enqueues += topaz_fwt_sw_count_bits(e->node_bitmap[i]);
-        }
-
-        /* must exclude the input node */
-        if (topaz_fwt_sw_mcast_node_is_set(e, in_port, in_node)) {
-                --enqueues;
-        }
-
-        return enqueues;
-}
-
 /*
  * returns the number of TQE pushes; 0 means buffer is not consumed here
  */
@@ -464,7 +423,7 @@
 	}
 
 	/* find the expected enqueue count and set the HBM buffer reference count */
-	push_count = tqe_mcast_enqueue_cnt(&mcast_ent, mcast_ent.port_bitmap,
+	push_count = topaz_fwt_sw_mcast_enqueues(&mcast_ent, mcast_ent.port_bitmap,
 						in_port, in_node);
 	if (unlikely(!push_count)) {
 		return 0;
@@ -481,7 +440,7 @@
 				pushes += topaz_fwt_sw_mcast_do_per_node(tqe_push_mcast,
 							&mcast_ent, desc, queue, in_node, port, tid);
 			} else {
-				if (port != in_port && !tqe_port_same_group(in_port, port))  {
+				if (port != in_port)  {
 					tqe_push_mcast(desc, NULL, port, 0, 0);
 					++pushes;
 				}
@@ -582,7 +541,7 @@
 	}
 
 	if (ipaddr) {
-		topaz_tqe_vlan_gettid(bus_to_virt((uintptr_t)(desc->data.pkt)), &tid, &vlan_index);
+		topaz_tqe_vlan_gettid(desc->data.pkt, &tid, &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
@@ -592,7 +551,7 @@
 
 			if (g_tqe_fwt_get_mcast_hook)
 				mcast_ent = g_tqe_fwt_get_mcast_hook(fwt_lu.data.entry_addr,
-						ipaddr, *ether_type);
+						ipaddr, *ether_type, vlan_index);
 
 			if (mcast_ent) {
 				if ((mcast_ent->flood_forward) && (in_port == TOPAZ_TQE_MUC_PORT)) {
@@ -637,12 +596,9 @@
 }
 EXPORT_SYMBOL(tqe_register_ucastfwt_cbk);
 
-void tqe_register_macfwt_cbk(tqe_fwt_get_from_mac_hook cbk_func,
-			tqe_fwt_add_from_mac_hook add_func, tqe_fwt_del_from_mac_hook del_func)
+void tqe_register_macfwt_cbk(tqe_fwt_get_from_mac_hook cbk_func)
 {
 	 g_tqe_fwt_get_from_mac_hook = cbk_func;
-	 g_tqe_fwt_add_from_mac_hook = add_func;
-	 g_tqe_fwt_del_from_mac_hook = del_func;
 }
 EXPORT_SYMBOL(tqe_register_macfwt_cbk);
 
@@ -679,10 +635,10 @@
 		if(g_dscp_flag){
 			tid = (g_dscp_value[desc->data.in_port] & 0xFF);
 		} else {
-			topaz_tqe_vlan_gettid(bus_to_virt((uintptr_t)(desc->data.pkt)), &tid, &vlan_index);
+			topaz_tqe_vlan_gettid(desc->data.pkt, &tid, &vlan_index);
 		}
 	} else {
-		topaz_tqe_vlan_gettid(bus_to_virt((uintptr_t)(desc->data.pkt)), &tid, &vlan_index);
+		topaz_tqe_vlan_gettid(desc->data.pkt, &tid, &vlan_index);
 	}
 
 	port = fwt_ent->out_port;
@@ -752,222 +708,6 @@
 }
 #endif
 
-struct tqe_unknown_dst_entry {
-	unsigned char dst_mac[ETH_ALEN];
-	unsigned long updated;
-	STAILQ_ENTRY(tqe_unknown_dst_entry) next;
-};
-
-typedef STAILQ_HEAD(, tqe_unknown_dst_entry) tqe_unknown_dst_entry_head;
-
-static int tqe_unknown_dst_entry_tot = 0;
-static int tqe_unknown_dst_entry_max = 32;
-module_param(tqe_unknown_dst_entry_max, int, S_IRWXU);
-static int tqe_unknown_dst_expiry = HZ;
-module_param(tqe_unknown_dst_expiry, int, S_IRWXU);
-
-static spinlock_t tqe_unknown_dst_lock;
-static tqe_unknown_dst_entry_head tqe_unknown_dst_entries;
-static struct timer_list tqe_unknown_dst_timer;
-
-static int tqe_unknown_dst_entry_add(const unsigned char *mac)
-{
-	struct tqe_unknown_dst_entry *entry;
-
-	if (tqe_unknown_dst_entry_tot >= tqe_unknown_dst_entry_max)
-		return -EBUSY;
-
-	STAILQ_FOREACH(entry, &tqe_unknown_dst_entries, next) {
-		if (memcmp(entry->dst_mac, mac, ETH_ALEN) == 0) {
-			entry->updated = jiffies;
-			return 0;
-		}
-	}
-
-	entry = kmalloc(sizeof(struct tqe_unknown_dst_entry), GFP_ATOMIC);
-	if (entry == NULL)
-		return -ENOMEM;
-
-	memcpy(entry->dst_mac, mac, ETH_ALEN);
-	entry->updated = jiffies;
-	STAILQ_INSERT_TAIL(&tqe_unknown_dst_entries, entry, next);
-
-	tqe_unknown_dst_entry_tot++;
-
-	if (tqe_unknown_dst_entry_tot == 1)
-		mod_timer(&tqe_unknown_dst_timer, jiffies + tqe_unknown_dst_expiry);
-
-	return 0;
-}
-
-static int tqe_unknown_dst_entry_del(struct tqe_unknown_dst_entry *entry)
-{
-	if (entry == NULL)
-		return -EINVAL;
-
-	KASSERT(tqe_unknown_dst_entry_tot > 0, ("should not be 0"));
-
-	STAILQ_REMOVE(&tqe_unknown_dst_entries, entry, tqe_unknown_dst_entry, next);
-	kfree(entry);
-
-	tqe_unknown_dst_entry_tot--;
-
-	return 0;
-}
-
-/* RCU lock must be held */
-static struct net_bridge *tqe_find_bridge(const struct net_device *ndev)
-{
-	struct net_bridge *br = NULL;
-
-	if ((ndev->flags & IFF_SLAVE) && ndev->master)
-		ndev = ndev->master;
-
-	if (rcu_dereference(ndev->br_port) != NULL)
-		br = ndev->br_port->br;
-
-	return br;
-}
-
-static int tqe_unknown_dst_local_find(const struct net_device *dev, unsigned char *mac)
-{
-	struct net_bridge_fdb_entry *fdb;
-	struct net_bridge *br;
-
-	int is_local = 0;
-
-	if ((br_fdb_get_hook == NULL) || (br_fdb_put_hook == NULL))
-		return 0;
-
-	if (dev == NULL)
-		return 0;
-
-	rcu_read_lock();
-
-	br = tqe_find_bridge(dev);
-	if (!br)
-		goto out;
-
-	fdb = br_fdb_get_hook(br, NULL, mac);
-	if (fdb == NULL)
-		goto out;
-
-	is_local = fdb->is_local;
-
-	br_fdb_put_hook(fdb);
-
-out:
-	rcu_read_unlock();
-
-	return is_local;
-}
-
-static void tqe_unknown_dst_timer_func(unsigned long data)
-{
-	struct tqe_unknown_dst_entry *cur_entry;
-	struct tqe_unknown_dst_entry *tmp_entry;
-
-	const struct fwt_db_entry *fwt_entry;
-
-	if ((g_tqe_fwt_get_from_mac_hook == NULL) || (g_tqe_fwt_del_from_mac_hook == NULL))
-		return;
-
-	spin_lock(&tqe_unknown_dst_lock);
-
-	STAILQ_FOREACH_SAFE(cur_entry, &tqe_unknown_dst_entries, next, tmp_entry) {
-		if (time_before(jiffies, cur_entry->updated + tqe_unknown_dst_expiry))
-			continue;
-
-		tqe_unknown_dst_entry_del(cur_entry);
-
-		fwt_entry = g_tqe_fwt_get_from_mac_hook(cur_entry->dst_mac);
-		/*
-		 * keep the "drop" FWT entry if it has been updated
-		 * with correct destination port
-		 */
-		if ((fwt_entry != NULL) && (fwt_entry->out_port == TOPAZ_TQE_DROP_PORT))
-			g_tqe_fwt_del_from_mac_hook(cur_entry->dst_mac);
-	}
-
-	if (tqe_unknown_dst_entry_tot > 0)
-		mod_timer(&tqe_unknown_dst_timer, jiffies + tqe_unknown_dst_expiry);
-
-	spin_unlock(&tqe_unknown_dst_lock);
-}
-
-static void tqe_unknown_dst_entry_init(void)
-{
-	STAILQ_INIT(&tqe_unknown_dst_entries);
-
-	spin_lock_init(&tqe_unknown_dst_lock);
-
-	init_timer(&tqe_unknown_dst_timer);
-
-	tqe_unknown_dst_timer.function = tqe_unknown_dst_timer_func;
-}
-
-static int topaz_tx_unknown_unicast(const union topaz_tqe_cpuif_descr *desc,
-			const struct fwt_db_entry *fwt_ent)
-{
-	const struct fwt_db_entry *fwt_dst;
-
-	struct ether_header *eth;
-	struct net_device *dev;
-
-	int ret;
-
-	if (tqe_unknown_dst_entry_max == 0)
-		return 0;
-
-	if ((fwt_ent != NULL) && (fwt_ent->out_port == TOPAZ_TQE_DROP_PORT)) {
-		/*
-		 * Few packets may still be pushed to LHost before the "drop"
-		 * FWT entry takes effect
-		 */
-		tqe_rx_pkt_drop(desc);
-
-		return 1;
-	}
-
-	dev = (struct net_device *)tqe_port_handlers[desc->data.in_port].token;
-	eth = bus_to_virt((uintptr_t)desc->data.pkt);
-	/*
-	 * Local addresses of Linux bridge don't have corresponding hardware FWT entries,
-	 * hence they are always "unknown"
-	 */
-	if (tqe_unknown_dst_local_find(dev, eth->ether_dhost))
-		return 0;
-
-	if ((g_tqe_fwt_get_from_mac_hook == NULL) || (g_tqe_fwt_add_from_mac_hook == NULL))
-		return 0;
-	/*
-	 * TODO fwt_ent is NULL in two cases:
-	 *	src MAC address is not found in FWT
-	 *	dst MAC address is not found in FWT
-	 */
-	fwt_dst = g_tqe_fwt_get_from_mac_hook(eth->ether_dhost);
-	/*
-	 * dst MAC address is found in FWT, but src MAC address is not: pass up for
-	 * src MAC learning
-	 */
-	if (fwt_dst != NULL)
-		return 0;
-
-	spin_lock(&tqe_unknown_dst_lock);
-	ret = tqe_unknown_dst_entry_add(eth->ether_dhost);
-	spin_unlock(&tqe_unknown_dst_lock);
-
-	if (ret < 0)
-		return 0;
-	/*
-	 * add a "drop" FWT entry to push packets destined to same dst
-	 * MAC address to "drop" port and drop them
-	 */
-	g_tqe_fwt_add_from_mac_hook(eth->ether_dhost, TOPAZ_TQE_DROP_PORT, 0, NULL);
-
-	return 0;
-}
-
 static int __sram_text tqe_rx_pktfwd(void *queue, const union topaz_tqe_cpuif_descr *desc)
 {
 	enum topaz_tqe_port in_port = desc->data.in_port;
@@ -1014,12 +754,14 @@
 		return 0;
 
 	fwt_ent = g_tqe_fwt_get_ucast_hook(eh->ether_shost, eh->ether_dhost);
-	if (unlikely(!fwt_ent || (fwt_ent->out_port == TOPAZ_TQE_DROP_PORT)))
-		return topaz_tx_unknown_unicast(desc, fwt_ent);
+	if (unlikely(!fwt_ent))
+		return 0;
 
 	/* Don't return to sender */
 	if (unlikely((in_port == fwt_ent->out_port) ||
-			tqe_port_same_group(in_port, fwt_ent->out_port))) {
+		((tqe_port_handlers[in_port].group > 0) &&
+			tqe_port_handlers[in_port].group ==
+				tqe_port_handlers[fwt_ent->out_port].group))) {
 		tqe_rx_pkt_drop(desc);
 		return 1;
 	}
@@ -1365,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;
@@ -1392,7 +1139,14 @@
 		memcpy(hbm_buf_virt, buf_virt, data_len);
 		buf_virt = hbm_buf_virt;
 
-		if (M_FLAG_ISSET(skb, M_VLAN_TAGGED)) {
+		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);
@@ -1583,8 +1337,6 @@
 
 	device_create_file(&dev->dev, &dev_attr_dbg);
 
-	tqe_unknown_dst_entry_init();
-
 	return dev;
 
 netdev_register_error:
diff --git a/drivers/topaz/switch_vlan.c b/drivers/topaz/switch_vlan.c
index 99cd319..89914c3 100644
--- a/drivers/topaz/switch_vlan.c
+++ b/drivers/topaz/switch_vlan.c
@@ -23,7 +23,6 @@
 #include <linux/etherdevice.h>
 #include <linux/if_vlan.h>
 #include <linux/spinlock.h>
-#include <linux/net/bridge/br_public.h>
 
 #include <net80211/if_ethersubr.h>
 #include <qtn/topaz_tqe_cpuif.h>
@@ -52,6 +51,7 @@
 
 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)
@@ -242,7 +242,7 @@
 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_DROP_PORT;
+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;
@@ -468,41 +468,52 @@
 }
 EXPORT_SYMBOL(switch_vlan_clr_node);
 
-static struct sk_buff *switch_vlan_tag_pkt(struct sk_buff *skb, uint16_t vlanid)
+int switch_vlan_is_local(const uint8_t *data)
 {
-	struct vlan_ethhdr *veth;
-	struct qtn_vlan_pkt old;
-	struct qtn_vlan_pkt *new;
+	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;
 
-	memcpy(&old, qtn_vlan_get_info(skb->data), sizeof(old));
-
-	if (skb_cow_head(skb, VLAN_HLEN) < 0) {
-		kfree_skb(skb);
-		return NULL;
+	if (likely(brdev)) {
+		ret = !compare_ether_addr(eth->h_source, brdev->dev_addr);
+		dev_put(brdev);
 	}
-	veth = (struct vlan_ethhdr *)skb_push(skb, VLAN_HLEN);
 
-	/* Move the mac addresses to the beginning of the new header. */
-	memmove(skb->data, skb->data + VLAN_HLEN, 2 * VLAN_ETH_ALEN);
-	veth->h_vlan_proto = __constant_htons(ETH_P_8021Q);
-	veth->h_vlan_TCI = htons(vlanid);
-
-	new = qtn_vlan_get_info(skb->data);
-	memcpy(new, &old, sizeof(*new));
-	new->vlan_info |= QVLAN_TAGGED;
-
-	return skb;
+	return ret;
 }
+EXPORT_SYMBOL(switch_vlan_is_local);
 
-static struct sk_buff *switch_vlan_untag_pkt(struct sk_buff *skb, int copy)
+struct sk_buff *switch_vlan_strip_tag(struct sk_buff *skb, int copy)
 {
 	struct sk_buff *skb2;
 	struct vlan_ethhdr *veth;
-	struct qtn_vlan_pkt *pktinfo;
+	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);
-		kfree_skb(skb);
+		dev_kfree_skb(skb);
 	} else {
 		skb2 = skb;
 	}
@@ -510,179 +521,54 @@
 	if (!skb2)
 		return NULL;
 
-	veth = (struct vlan_ethhdr *)(skb2->data);
+	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_pull(skb2, VLAN_HLEN);
-
-	pktinfo = qtn_vlan_get_info(skb2->data);
-	pktinfo->vlan_info &= ~QVLAN_TAGGED;
+	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 net_device *switch_vlan_find_br(struct net_device *ndev)
+struct sk_buff *switch_vlan_restore_tag(struct sk_buff *skb, int copy)
 {
-	struct net_device *brdev = NULL;
+	struct sk_buff *skb2;
+	struct qtn_vlan_pkt pkt;
 
-	if ((ndev->flags & IFF_SLAVE) && ndev->master)
-		ndev = ndev->master;
-
-	rcu_read_lock();
-	if (rcu_dereference(ndev->br_port) != NULL)
-		brdev = ndev->br_port->br->dev;
-	rcu_read_unlock();
-
-	return brdev;
-}
-
-/*
- * supposed to be called after eth_type_trans and before netif_receive_skb
- * VLAN ingress handling should be done already
- */
-struct sk_buff *switch_vlan_to_proto_stack(struct sk_buff *skb, int copy)
-{
-	struct qtn_vlan_pkt *pkt;
-	uint16_t vlan_id;
-	struct net_device *brdev;
-	int tag_in_frame;
-	int should_tag;
-
-	BUG_ON(!skb_mac_header_was_set(skb));
-
-	if (!vlan_enabled)
+	if (!M_FLAG_ISSET(skb, M_VLAN_TAG_OWE))
 		return skb;
 
-	if (skb->protocol == __constant_htons(ETH_P_PAE))
-		return skb;
-
-	M_FLAG_SET(skb, M_ORIG_OUTSIDE);
-
-	pkt = qtn_vlan_get_info(skb_mac_header(skb));
-
-	tag_in_frame = !!(pkt->vlan_info & QVLAN_TAGGED);
-	vlan_id = (pkt->vlan_info & QVLAN_MASK_VID);
-
-	brdev = switch_vlan_find_br(skb->dev);
-	if (likely(brdev)) {
-		should_tag = !!vlan_check_vlan_exist(brdev, vlan_id);
+	if (copy) {
+		skb2 = skb_copy(skb, GFP_ATOMIC);
+		dev_kfree_skb(skb);
 	} else {
-		return skb;
+		skb2 = skb;
 	}
 
-	if (tag_in_frame != should_tag) {
-		skb_push(skb, ETH_HLEN);
-		if (should_tag)
-			skb = switch_vlan_tag_pkt(skb, vlan_id);
-		else
-			skb = switch_vlan_untag_pkt(skb, copy);
+	if (!skb2)
+		return NULL;
 
-		if (!skb)
-			return NULL;
+	memcpy(&pkt, qtn_vlan_get_info(skb2->data), sizeof(pkt));
+	BUG_ON(pkt.magic != QVLAN_PKT_MAGIC);
 
-		skb->protocol = eth_type_trans(skb, skb->dev);
+	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;
 	}
 
-	return skb;
+	memcpy(qtn_vlan_get_info(skb2->data), &pkt, sizeof(pkt));
+
+	return skb2;
 }
-EXPORT_SYMBOL(switch_vlan_to_proto_stack);
-
-static struct sk_buff *switch_vlan_add_pktinfo(struct sk_buff *skb)
-{
-	struct qtn_vlan_pkt *pktinfo;
-
-	if (skb_headroom(skb) < QVLAN_PKTCTRL_LEN) {
-		struct sk_buff *skb2;
-
-		skb2 = skb_copy_expand(skb, QVLAN_PKTCTRL_LEN * 2, skb_tailroom(skb), GFP_ATOMIC);
-		if (!skb2) {
-			kfree_skb(skb);
-			return NULL;
-		}
-
-		kfree_skb(skb);
-		skb = skb2;
-	}
-
-	pktinfo = qtn_vlan_get_info(skb->data);
-	pktinfo->magic = QVLAN_PKT_MAGIC;
-
-	M_FLAG_SET(skb, M_VLAN_TAGGED);
-	return skb;
-}
-
-struct sk_buff *switch_vlan_from_proto_stack(struct sk_buff *skb, struct qtn_vlan_dev *outdev, uint16_t ncidx, int copy)
-{
-	struct qtn_vlan_pkt *pktinfo;
-	struct vlan_ethhdr *veth;
-	uint16_t vlanid;
-	int tag_in_frame;
-	int should_tag;
-
-	if (!vlan_enabled)
-		return skb;
-
-	if (!M_FLAG_ISSET(skb, M_ORIG_OUTSIDE)) {
-		/*
-		 * The packet is generated by the device.
-		 * A qtn_vlan_pkt structure is needed.
-		 */
-		skb = switch_vlan_add_pktinfo(skb);
-		if (!skb)
-			return NULL;
-
-		pktinfo = qtn_vlan_get_info(skb->data);
-
-		if (M_FLAG_ISSET(skb, M_ORIG_BR)) {
-			veth = (struct vlan_ethhdr *)(skb->data);
-
-			if (veth->h_vlan_proto == __constant_htons(ETH_P_8021Q)) {
-				vlanid = ntohs(veth->h_vlan_TCI) & VLAN_VID_MASK;
-				pktinfo->vlan_info = (QVLAN_TAGGED | vlanid);
-			} else {
-				pktinfo->vlan_info = QVLAN_SKIP_CHECK;
-			}
-		} else {
-			pktinfo->vlan_info = QVLAN_SKIP_CHECK;
-		}
-	}
-
-	pktinfo = qtn_vlan_get_info(skb->data);
-	if (pktinfo->vlan_info & QVLAN_SKIP_CHECK)
-		return skb;
-
-	tag_in_frame = !!(pktinfo->vlan_info & QVLAN_TAGGED);
-	vlanid = pktinfo->vlan_info & QVLAN_MASK_VID;
-
-	if (QVLAN_IS_DYNAMIC(outdev)) {
-		if (outdev->u.node_vlan[ncidx] != vlanid) {
-			qtn_vlan_inc_stats(&outdev->eg_drop);
-			goto drop_out;
-		}
-		should_tag = 0;
-	} else {
-		if (!qtn_vlan_is_member(outdev, vlanid)) {
-			qtn_vlan_inc_stats(&outdev->eg_drop);
-			goto drop_out;
-		}
-		should_tag = qtn_vlan_is_tagged_member(outdev, vlanid);
-	}
-
-	if (tag_in_frame != should_tag) {
-		if (should_tag)
-			skb = switch_vlan_tag_pkt(skb, vlanid);
-		else
-			skb = switch_vlan_untag_pkt(skb, copy);
-        }
-
-	return skb;
-drop_out:
-	kfree_skb(skb);
-	return NULL;
-}
-EXPORT_SYMBOL(switch_vlan_from_proto_stack);
+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)
@@ -703,13 +589,13 @@
 		if (unlikely(!ndev))
 			continue;
 
-		p += sprintf(p, "%s\ti-pass\t\te-pass\t\ti-drop\t\te-drop\t\tmagic-invalid\n", ndev->name);
-		p += sprintf(p, "Lhost\t%u\t\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, vdev->magic_invalid.lhost);
-		p += sprintf(p, "AuC\t%u\t\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, vdev->magic_invalid.auc);
-		p += sprintf(p, "MuC\t%u\t\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, vdev->magic_invalid.muc);
+		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);
 	}
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index c73137b..3bc625e 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -57,10 +57,6 @@
 #define ELF_MIN_ALIGN	PAGE_SIZE
 #endif
 
-#ifdef CONFIG_ARC_ELF_CORE_FIX
-#define ARC_ELF_CORE_PRSTATUS_SIZE 236	/* PRSTATUS size expected by binutils/gdb */
-#endif
-
 #ifndef ELF_CORE_EFLAGS
 #define ELF_CORE_EFLAGS	0
 #endif
@@ -1405,38 +1401,8 @@
 				    0, sizeof(t->prstatus.pr_reg),
 				    &t->prstatus.pr_reg, NULL);
 
-#ifdef CONFIG_ARC_ELF_CORE_FIX
-	/*
-	 * Fix core dump format for ARC architecture to be readable
-	 * by toolchain.
-	 * Need to cut two fields (orig_r0, orig_r8) in the middle of
-	 * user_regs_struct structure to comply with binutils/gdb
-	 * core dump format.
-	 */
-	const u8 *prstatus_orig_data = (u8 *) &t->prstatus;
-	u8 *prstatus_fixed = kmalloc(ARC_ELF_CORE_PRSTATUS_SIZE, GFP_KERNEL);
-	const size_t prstatus_cut_pos = offsetof(struct elf_prstatus, pr_reg) +
-					offsetof(struct user_regs_struct, orig_r0);
-	const size_t prstatus_cut_size = sizeof(elf_greg_t) * 2; /* Cut two registers */
-
-	if (unlikely(!prstatus_fixed))
-		return 0;
-
-	BUG_ON(ARC_ELF_CORE_PRSTATUS_SIZE !=
-			(sizeof(struct elf_prstatus) - prstatus_cut_size));
-
-	memcpy(prstatus_fixed, prstatus_orig_data, prstatus_cut_pos);
-	memcpy(prstatus_fixed + prstatus_cut_pos,
-			prstatus_orig_data + prstatus_cut_pos +	prstatus_cut_size,
-			sizeof(struct elf_prstatus) - prstatus_cut_pos - prstatus_cut_size);
-
-	fill_note(&t->notes[0], "CORE", NT_PRSTATUS,
-			ARC_ELF_CORE_PRSTATUS_SIZE, prstatus_fixed);
-#else
 	fill_note(&t->notes[0], "CORE", NT_PRSTATUS,
 		  sizeof(t->prstatus), &t->prstatus);
-#endif
-
 	*total += notesize(&t->notes[0]);
 
 	do_thread_regset_writeback(t->task, &view->regsets[0]);
@@ -1610,13 +1576,7 @@
 		unsigned int i;
 		struct elf_thread_core_info *t = threads;
 		threads = t->next;
-#ifdef CONFIG_ARC_ELF_CORE_FIX
-		if (likely(t->notes[0].data && t->notes[0].data != &t->prstatus &&
-		    t->notes[0].type == NT_PRSTATUS))
-			kfree(t->notes[0].data);
-#else
 		WARN_ON(t->notes[0].data && t->notes[0].data != &t->prstatus);
-#endif
 		for (i = 1; i < info->thread_notes; ++i)
 			kfree(t->notes[i].data);
 		kfree(t);
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.103.0-v32.104.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.103.0-v32.104.0
new file mode 100644
index 0000000..45f863a
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.103.0-v32.104.0
@@ -0,0 +1,19 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_103_0_TO_v32_104_0 Version v32.103.0 to version v32.104.0 changes
+ *
+ * \subsection v32_103_0_TO_v32_104_0Added Added functions
+ *
+ * The following functions were added between versions v32.103.0 and v32.104.0
+ *
+ * \li \ref qcsapi_wifi_get_ap_isolate
+ * \li \ref qcsapi_wps_set_param
+ * \li \ref qcsapi_wifi_get_wpa_status
+ * \li \ref qcsapi_wifi_get_associated_device_ip_addr
+ * \li \ref qcsapi_wifi_get_radar_status
+ * \li \ref qcsapi_wifi_get_auth_state
+ * \li \ref qcsapi_wifi_set_ap_isolate
+ * \li \ref qcsapi_wifi_qos_set_param
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.104.0-v32.105.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.104.0-v32.105.0
new file mode 100644
index 0000000..a6e95ca
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.104.0-v32.105.0
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_104_0_TO_v32_105_0 Version v32.104.0 to version v32.105.0 changes
+ *
+ * \subsection v32_104_0_TO_v32_105_0Added Added functions
+ *
+ * The following functions were added between versions v32.104.0 and v32.105.0
+ *
+ * \li \ref qcsapi_get_max_bitrate
+ * \li \ref qcsapi_set_max_bitrate
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.108.0-v32.109.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.108.0-v32.109.0
new file mode 100644
index 0000000..c894ee5
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.108.0-v32.109.0
@@ -0,0 +1,30 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_108_0_TO_v32_109_0 Version v32.108.0 to version v32.109.0 changes
+ *
+ * \subsection v32_108_0_TO_v32_109_0Added Added functions
+ *
+ * The following functions were added between versions v32.108.0 and v32.109.0
+ *
+ * \li \ref qcsapi_sem_init
+ * \li \ref qcsapi_vsp_set_config
+ * \li \ref qcsapi_sem_lock
+ * \li \ref qcsapi_vsp_add_rule
+ * \li \ref qcsapi_vsp_get_strm
+ * \li \ref qcsapi_vsp_get_rule
+ * \li \ref qcsapi_vsp_get_wl
+ * \li \ref qcsapi_sem_disable
+ * \li \ref qcsapi_vsp_add_wl
+ * \li \ref qcsapi_vsp_del_rule
+ * \li \ref qcsapi_vsp_get_config
+ * \li \ref qcsapi_vsp_del_wl
+ * \li \ref qcsapi_vsp_get_stats
+ * \li \ref qcsapi_vsp_get_state_all
+ * \li \ref qcsapi_vsp_get_state
+ * \li \ref qcsapi_vsp_del_rule_index
+ * \li \ref qcsapi_vsp_del_wl_index
+ * \li \ref qcsapi_vsp_set_state
+ * \li \ref qcsapi_sem_unlock
+ * \li \ref qcsapi_vsp_get_config_all
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.108.1-v32.108.2 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.108.1-v32.108.2
new file mode 100644
index 0000000..b3c858a
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.108.1-v32.108.2
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_108_1_TO_v32_108_2 Version v32.108.1 to version v32.108.2 changes
+ *
+ * \subsection v32_108_1_TO_v32_108_2Added Added functions
+ *
+ * The following functions were added between versions v32.108.1 and v32.108.2
+ *
+ * \li \ref qcsapi_pm_set_mode
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.111.0-v32.112.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.111.0-v32.112.0
new file mode 100644
index 0000000..bbeb7ca
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.111.0-v32.112.0
@@ -0,0 +1,14 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_111_0_TO_v32_112_0 Version v32.111.0 to version v32.112.0 changes
+ *
+ * \subsection v32_111_0_TO_v32_112_0Added Added functions
+ *
+ * The following functions were added between versions v32.111.0 and v32.112.0
+ *
+ * \li \ref qcsapi_wifi_get_pairing_enable
+ * \li \ref qcsapi_wifi_get_pairing_id
+ * \li \ref qcsapi_wifi_set_pairing_enable
+ * \li \ref qcsapi_wifi_set_pairing_id
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.112.0-v32.113.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.112.0-v32.113.0
new file mode 100644
index 0000000..8b91091
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.112.0-v32.113.0
@@ -0,0 +1,15 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_112_0_TO_v32_113_0 Version v32.112.0 to version v32.113.0 changes
+ *
+ * \subsection v32_112_0_TO_v32_113_0Added Added functions
+ *
+ * The following functions were added between versions v32.112.0 and v32.113.0
+ *
+ * \li \ref qcsapi_wifi_set_scs_verbose
+ * \li \ref qcsapi_wifi_set_scs_cca_intf_smth_fctr
+ * \li \ref qcsapi_wifi_rfstatus
+ * \li \ref qcsapi_wifi_set_scs_smpl_enable
+ * \li \ref qcsapi_get_phy_stats
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.117.0-v32.118.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.117.0-v32.118.0
new file mode 100644
index 0000000..42a3b91
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.117.0-v32.118.0
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_117_0_TO_v32_118_0 Version v32.117.0 to version v32.118.0 changes
+ *
+ * \subsection v32_117_0_TO_v32_118_0Added Added functions
+ *
+ * The following functions were added between versions v32.117.0 and v32.118.0
+ *
+ * \li \ref qcsapi_wifi_run_script
+ * \li \ref qcsapi_pm_set_mode
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.118.0-v32.119.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.118.0-v32.119.0
new file mode 100644
index 0000000..084235a
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.118.0-v32.119.0
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_118_0_TO_v32_119_0 Version v32.118.0 to version v32.119.0 changes
+ *
+ * \subsection v32_118_0_TO_v32_119_0Added Added functions
+ *
+ * The following functions were added between versions v32.118.0 and v32.119.0
+ *
+ * \li \ref qcsapi_wifi_get_disconn_cnt
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.120.0-v32.121.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.120.0-v32.121.0
new file mode 100644
index 0000000..95dbb57
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.120.0-v32.121.0
@@ -0,0 +1,13 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_120_0_TO_v32_121_0 Version v32.120.0 to version v32.121.0 changes
+ *
+ * \subsection v32_120_0_TO_v32_121_0Added Added functions
+ *
+ * The following functions were added between versions v32.120.0 and v32.121.0
+ *
+ * \li \ref qcsapi_eth_phy_power_control
+ * \li \ref qcsapi_wifi_create_restricted_bss
+ * \li \ref qcsapi_wifi_test_traffic
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.122.0-v32.123.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.122.0-v32.123.0
new file mode 100644
index 0000000..c089639
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.122.0-v32.123.0
@@ -0,0 +1,17 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_122_0_TO_v32_123_0 Version v32.122.0 to version v32.123.0 changes
+ *
+ * \subsection v32_122_0_TO_v32_123_0Added Added functions
+ *
+ * The following functions were added between versions v32.122.0 and v32.123.0
+ *
+ * \li \ref qcsapi_wifi_get_disconn_info
+ *
+ * \subsection v32_122_0_TO_v32_123_0Removed Removed functions
+ *
+ * The following functions were removed between versions v32.122.0 and v32.123.0
+ *
+ * \li qcsapi_wifi_get_disconn_cnt
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.123.0-v32.124.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.123.0-v32.124.0
new file mode 100644
index 0000000..d2e821a
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.123.0-v32.124.0
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_123_0_TO_v32_124_0 Version v32.123.0 to version v32.124.0 changes
+ *
+ * \subsection v32_123_0_TO_v32_124_0Added Added functions
+ *
+ * The following functions were added between versions v32.123.0 and v32.124.0
+ *
+ * \li \ref qcsapi_wifi_get_scs_dfs_reentry_request
+ * \li \ref qcsapi_wifi_set_scs_chan_mtrc_mrgn
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.128.0-v32.129.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.128.0-v32.129.0
new file mode 100644
index 0000000..e8d6916
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.128.0-v32.129.0
@@ -0,0 +1,25 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_128_0_TO_v32_129_0 Version v32.128.0 to version v32.129.0 changes
+ *
+ * \subsection v32_128_0_TO_v32_129_0Added Added functions
+ *
+ * The following functions were added between versions v32.128.0 and v32.129.0
+ *
+ * \li \ref qcsapi_calcmd_get_test_mode_bw
+ * \li \ref qcsapi_calcmd_send_dc_cw_signal
+ * \li \ref qcsapi_calcmd_send_test_packet
+ * \li \ref qcsapi_calcmd_get_test_mode_antenna_sel
+ * \li \ref qcsapi_calcmd_get_test_mode_mcs
+ * \li \ref qcsapi_get_temperature_info
+ * \li \ref qcsapi_calcmd_stop_test_packet
+ * \li \ref qcsapi_calcmd_get_tx_power
+ * \li \ref qcsapi_calcmd_show_test_packet
+ * \li \ref qcsapi_calcmd_stop_dc_cw_signal
+ * \li \ref qcsapi_calcmd_set_tx_power
+ * \li \ref qcsapi_wifi_set_accept_oui_filter
+ * \li \ref qcsapi_calcmd_set_test_mode
+ * \li \ref qcsapi_calcmd_get_test_mode_rssi
+ * \li \ref qcsapi_wifi_get_accept_oui_filter
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.129.0-v32.130.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.129.0-v32.130.0
new file mode 100644
index 0000000..72deaaa
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.129.0-v32.130.0
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_129_0_TO_v32_130_0 Version v32.129.0 to version v32.130.0 changes
+ *
+ * \subsection v32_129_0_TO_v32_130_0Added Added functions
+ *
+ * The following functions were added between versions v32.129.0 and v32.130.0
+ *
+ * \li \ref qcsapi_wps_allow_pbc_overlap
+ * \li \ref qcsapi_wps_get_allow_pbc_overlap_status
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.90.0-v32.91.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.90.0-v32.91.0
new file mode 100644
index 0000000..3a9b6ef
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.90.0-v32.91.0
@@ -0,0 +1,16 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_90_0_TO_v32_91_0 Version v32.90.0 to version v32.91.0 changes
+ *
+ * \subsection v32_90_0_TO_v32_91_0Added Added functions
+ *
+ * The following functions were added between versions v32.90.0 and v32.91.0
+ *
+ * \li \ref qcsapi_wps_set_access_control
+ * \li \ref qcsapi_wps_get_access_control
+ * \li \ref qcsapi_wifi_get_assoc_records
+ * \li \ref qcsapi_wifi_start_dfs_reentry
+ * \li \ref qcsapi_wifi_start_scan_ext
+ * \li \ref qcsapi_wifi_get_csw_records
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.94.0-v32.95.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.94.0-v32.95.0
new file mode 100644
index 0000000..c140f29
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.94.0-v32.95.0
@@ -0,0 +1,35 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_94_0_TO_v32_95_0 Version v32.94.0 to version v32.95.0 changes
+ *
+ * \subsection v32_94_0_TO_v32_95_0Added Added functions
+ *
+ * The following functions were added between versions v32.94.0 and v32.95.0
+ *
+ * \li \ref qcsapi_reset_all_counters
+ * \li \ref qcsapi_wifi_set_scs_smpl_dwell_time
+ * \li \ref qcsapi_wifi_set_scs_intf_detect_intv
+ * \li \ref qcsapi_wifi_get_scs_status
+ * \li \ref qcsapi_wifi_set_scs_thrshld
+ * \li \ref qcsapi_wifi_set_scs_sample_intv
+ * \li \ref qcsapi_wifi_get_scs_cce_channels
+ * \li \ref qcsapi_wifi_scs_enable
+ * \li \ref qcsapi_wifi_set_scs_report_only
+ * \li \ref qcsapi_wifi_get_scs_stat_report
+ * \li \ref qcsapi_wifi_set_scs_wf
+ *
+ * \subsection v32940TOv32950Removed Removed functions
+ *
+ * The following functions were removed between versions v32.94.0 and v32.95.0
+ *
+ * \li qcsapi_wifi_set_adm_smpl_dwell_time
+ * \li qcsapi_wifi_adm_enable
+ * \li qcsapi_wifi_get_adm_status
+ * \li qcsapi_wifi_set_adm_sample_intv
+ * \li qcsapi_wifi_get_adm_stat_report
+ * \li qcsapi_wifi_get_adm_cce_channels
+ * \li qcsapi_wifi_set_report_only
+ * \li qcsapi_wifi_set_adm_wf
+ * \li qcsapi_wifi_set_adm_thrshld
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.95.0-v32.96.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.95.0-v32.96.0
new file mode 100644
index 0000000..b43b08d
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v32.95.0-v32.96.0
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v32_95_0_TO_v32_96_0 Version v32.95.0 to version v32.96.0 changes
+ *
+ * \subsection v32_95_0_TO_v32_96_0Added Added functions
+ *
+ * The following functions were added between versions v32.95.0 and v32.96.0
+ *
+ * \li \ref qcsapi_wifi_clear_mac_address_filters
+ */
+
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.12-v35.1.0.13 b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.12-v35.1.0.13
new file mode 100644
index 0000000..76b4a7b
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.12-v35.1.0.13
@@ -0,0 +1,18 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v35_1_0_12_TO_v35_1_0_13 Version v35.1.0.12 to version v35.1.0.13 changes
+ *
+ * \subsection v35_1_0_12_TO_v35_1_0_13Added Added functions
+ *
+ * The following functions were added between versions v35.1.0.12 and v35.1.0.13
+ *
+ * \li \ref qcsapi_calcmd_clear_counter
+ *
+ * \subsection v35_1_0_12_TO_v35_1_0_13Removed Removed functions
+ *
+ * The following functions were removed between versions v35.1.0.12 and v35.1.0.13
+ *
+ * \li qcsapi_wifi_get_max_retries
+ * \li qcsapi_wifi_set_max_retries
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.14-v35.1.0.15 b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.14-v35.1.0.15
new file mode 100644
index 0000000..68dac1f
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.14-v35.1.0.15
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v35_1_0_14_TO_v35_1_0_15 Version v35.1.0.14 to version v35.1.0.15 changes
+ *
+ * \subsection v35_1_0_14_TO_v35_1_0_15Added Added functions
+ *
+ * The following functions were added between versions v35.1.0.14 and v35.1.0.15
+ *
+ * \li \ref qcsapi_SSID_remove_SSID
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.15-v35.2.0.1 b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.15-v35.2.0.1
new file mode 100644
index 0000000..c3fbe75
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.15-v35.2.0.1
@@ -0,0 +1,16 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v35_2_0_0_TO_v35_2_0_1 Version v35.2.0.0 to version v35.2.0.1 changes
+ *
+ * \subsection v35_2_0_0_TO_v35_2_0_1Added Added functions
+ *
+ * The following functions were added between versions v35.2.0.0 and v35.2.0.1
+ *
+ * \li \ref qcsapi_wifi_get_scs_currchan_report
+ * \li \ref qcsapi_wifi_get_autochan_report
+ * \li \ref qcsapi_wifi_get_wmm_ac_map
+ * \li \ref qcsapi_wifi_get_scan_status
+ * \li \ref qcsapi_wps_cancel
+ * \li \ref qcsapi_wifi_set_wmm_ac_map
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.4-v35.1.0.5 b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.4-v35.1.0.5
new file mode 100644
index 0000000..e5ca032
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.4-v35.1.0.5
@@ -0,0 +1,13 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v35_1_0_4_TO_v35_1_0_5 Version v35.1.0.4 to version v35.1.0.5 changes
+ *
+ * \subsection v35_1_0_4_TO_v35_1_0_5Added Added functions
+ *
+ * The following functions were added between versions v35.1.0.4 and v35.1.0.5
+ *
+ * \li \ref qcsapi_wifi_set_bgscan_dwell_times
+ * \li \ref qcsapi_calcmd_set_mac_filter
+ * \li \ref qcsapi_wifi_get_bgscan_dwell_times
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.6-v35.1.0.7 b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.6-v35.1.0.7
new file mode 100644
index 0000000..14062b1
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.6-v35.1.0.7
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v35_1_0_6_TO_v35_1_0_7 Version v35.1.0.6 to version v35.1.0.7 changes
+ *
+ * \subsection v35_1_0_6_TO_v35_1_0_7Added Added functions
+ *
+ * The following functions were added between versions v35.1.0.6 and v35.1.0.7
+ *
+ * \li \ref qcsapi_calcmd_get_antenna_count
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.9-v35.1.0.10 b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.9-v35.1.0.10
new file mode 100644
index 0000000..e536db9
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.9-v35.1.0.10
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v35_1_0_9_TO_v35_1_0_10 Version v35.1.0.9 to version v35.1.0.10 changes
+ *
+ * \subsection v35_1_0_9_TO_v35_1_0_10Added Added functions
+ *
+ * The following functions were added between versions v35.1.0.9 and v35.1.0.10
+ *
+ * \li \ref qcsapi_wifi_set_power_constraint
+ * \li \ref qcsapi_wifi_get_power_constraint
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.14-v35.2.0.15 b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.14-v35.2.0.15
new file mode 100644
index 0000000..8773b07
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.14-v35.2.0.15
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v35_2_0_14_TO_v35_2_0_15 Version v35.2.0.14 to version v35.2.0.15 changes
+ *
+ * \subsection v35_2_0_14_TO_v35_2_0_15Added Added functions
+ *
+ * The following functions were added between versions v35.2.0.14 and v35.2.0.15
+ *
+ * \li \ref qcsapi_wifi_get_tpc_interval
+ * \li \ref qcsapi_wifi_set_tpc_interval
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.15-v35.2.0.16 b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.15-v35.2.0.16
new file mode 100644
index 0000000..d32355a
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.15-v35.2.0.16
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v35_2_0_15_TO_v35_2_0_16 Version v35.2.0.15 to version v35.2.0.16 changes
+ *
+ * \subsection v35_2_0_15_TO_v35_2_0_16Added Added functions
+ *
+ * The following functions were added between versions v35.2.0.15 and v35.2.0.16
+ *
+ * \li \ref qcsapi_wifi_get_cac_status
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.16-v35.2.0.17 b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.16-v35.2.0.17
new file mode 100644
index 0000000..29c68ba
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.16-v35.2.0.17
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v35_2_0_16_TO_v35_2_0_17 Version v35.2.0.16 to version v35.2.0.17 changes
+ *
+ * \subsection v35_2_0_16_TO_v35_2_0_17Added Added functions
+ *
+ * The following functions were added between versions v35.2.0.16 and v35.2.0.17
+ *
+ * \li \ref qcsapi_get_system_status
+ * \li \ref qcsapi_vsp_get_inactive_flags
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.19-v35.2.0.20 b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.19-v35.2.0.20
new file mode 100644
index 0000000..9f72cf7
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.19-v35.2.0.20
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v35_2_0_19_TO_v35_2_0_20 Version v35.2.0.19 to version v35.2.0.20 changes
+ *
+ * \subsection v35_2_0_19_TO_v35_2_0_20Added Added functions
+ *
+ * The following functions were added between versions v35.2.0.19 and v35.2.0.20
+ *
+ * \li \ref qcsapi_wifi_scs_switch_channel
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.2-v35.2.0.3 b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.2-v35.2.0.3
new file mode 100644
index 0000000..6df4759
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.2-v35.2.0.3
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v35_2_0_2_TO_v35_2_0_3 Version v35.2.0.2 to version v35.2.0.3 changes
+ *
+ * \subsection v35_2_0_2_TO_v35_2_0_3Added Added functions
+ *
+ * The following functions were added between versions v35.2.0.2 and v35.2.0.3
+ *
+ * \li \ref qcsapi_wifi_get_hw_noise_per_association
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.4-v35.2.0.5 b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.4-v35.2.0.5
new file mode 100644
index 0000000..26cf365
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.4-v35.2.0.5
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v35_2_0_4_TO_v35_2_0_5 Version v35.2.0.4 to version v35.2.0.5 changes
+ *
+ * \subsection v35_2_0_4_TO_v35_2_0_5Added Added functions
+ *
+ * The following functions were added between versions v35.2.0.4 and v35.2.0.5
+ *
+ * \li \ref qcsapi_wifi_vlan_config
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.7-v35.2.0.8 b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.7-v35.2.0.8
new file mode 100644
index 0000000..469f884
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.7-v35.2.0.8
@@ -0,0 +1,13 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v35_2_0_7_TO_v35_2_0_8 Version v35.2.0.7 to version v35.2.0.8 changes
+ *
+ * \subsection v35_2_0_7_TO_v35_2_0_8Added Added functions
+ *
+ * The following functions were added between versions v35.2.0.7 and v35.2.0.8
+ *
+ * \li \ref qcsapi_set_soc_mac_addr
+ * \li \ref qcsapi_wifi_set_vlan_promisc
+ * \li \ref qcsapi_enable_vlan_pass_through
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.9-v35.2.0.10 b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.9-v35.2.0.10
new file mode 100644
index 0000000..6e4498a
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.9-v35.2.0.10
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v35_2_0_9_TO_v35_2_0_10 Version v35.2.0.9 to version v35.2.0.10 changes
+ *
+ * \subsection v35_2_0_9_TO_v35_2_0_10Added Added functions
+ *
+ * The following functions were added between versions v35.2.0.9 and v35.2.0.10
+ *
+ * \li \ref qcsapi_wifi_get_scs_cca_intf
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1-v36.4 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1-v36.4
deleted file mode 100644
index 2e5e107..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1-v36.4
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v36_1_TO_v36_4 Version v36.1 to version v36.4 changes
- *
- * \subsection v36_1_TO_v36_4Added Added functions
- *
- * The following functions were added between versions v36.1 and v36.4
- *
- * \li \ref qcsapi_wifi_set_vht (36.1.0.1)
- * \li \ref qcsapi_bootcfg_commit (36.1.0.1)
- * \li \ref qcsapi_wifi_scs_switch_channel (36.1.0.1)
- * \li \ref qcsapi_wifi_get_vht (36.1.0.1)
- * \li \ref qcsapi_wifi_get_scs_param_report (36.1.0.4)
- * \li \ref qcsapi_wifi_set_ocac_thrshld (36.1.0.6)
- * \li \ref qcsapi_wifi_set_ocac_duration (36.1.0.6)
- * \li \ref qcsapi_wifi_set_ocac_cac_time (36.1.0.6)
- * \li \ref qcsapi_wifi_get_ocac_status (36.1.0.6)
- * \li \ref qcsapi_wps_set_timeout (36.1.0.6)
- * \li \ref qcsapi_wifi_get_psk_auth_failures (36.1.0.6)
- * \li \ref qcsapi_wifi_set_ocac_report_only (36.1.0.6)
- * \li \ref qcsapi_wifi_stop_ocac (36.1.0.6)
- * \li \ref qcsapi_wifi_set_ocac_dwell_time (36.1.0.6)
- * \li \ref qcsapi_wifi_start_ocac (36.1.0.6)
- * \li \ref qcsapi_wps_on_hidden_ssid (36.1.0.6)
- * \li \ref qcsapi_non_wps_get_pp_enable (36.1.0.8)
- * \li \ref qcsapi_non_wps_set_pp_enable (36.1.0.8)
- * \li \ref qcsapi_wifi_get_dscp_8021p_map (36.1.0.8)
- * \li \ref qcsapi_set_carrier_id (36.1.0.8)
- * \li \ref qcsapi_get_carrier_id (36.1.0.8)
- * \li \ref qcsapi_wifi_set_dscp_8021p_map (36.1.0.8)
- * \li \ref qcsapi_wps_set_ap_pin (36.1.0.9)
- * \li \ref qcsapi_wps_save_ap_pin (36.1.0.9)
- * \li \ref qcsapi_wps_upnp_status (36.1.0.11)
- * \li \ref qcsapi_wps_upnp_enable (36.1.0.11)
- * \li \ref qcsapi_wps_get_pbc_in_srcm (36.1.0.14)
- * \li \ref qcsapi_wps_set_pbc_in_srcm (36.1.0.14)
- * \li \ref qcsapi_wifi_set_chan_pri_inactive (36.1.0.15)
- * \li \ref qcsapi_wifi_enable_tdls (36.1.0.16)
- * \li \ref qcsapi_wifi_get_tdls_status (36.1.0.16)
- * \li \ref qcsapi_wifi_get_tdls_params (36.1.0.16)
- * \li \ref qcsapi_wifi_tdls_operate (36.1.0.16)
- * \li \ref qcsapi_wifi_set_tdls_params (36.1.0.16)
- *
- * \subsection v36_1_TO_v36_4Removed Removed functions
- *
- * The following functions were removed between versions v36.1 and v36.4
- *
- * \li qcsapi_wifi_set_scs_wf (36.1.0.1)
- */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.0-v36.1.0.1 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.0-v36.1.0.1
new file mode 100644
index 0000000..bd4cc87
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.0-v36.1.0.1
@@ -0,0 +1,20 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_1_0_0_TO_v36_1_0_1 Version v36.1.0.0 to version v36.1.0.1 changes
+ *
+ * \subsection v36_1_0_0_TO_v36_1_0_1Added Added functions
+ *
+ * The following functions were added between versions v36.1.0.0 and v36.1.0.1
+ *
+ * \li \ref qcsapi_wifi_set_vht
+ * \li \ref qcsapi_bootcfg_commit
+ * \li \ref qcsapi_wifi_scs_switch_channel
+ * \li \ref qcsapi_wifi_get_vht
+ *
+ * \subsection v36_1_0_0_TO_v36_1_0_1Removed Removed functions
+ *
+ * The following functions were removed between versions v36.1.0.0 and v36.1.0.1
+ *
+ * \li qcsapi_wifi_set_scs_wf
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.10-v36.1.0.11 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.10-v36.1.0.11
new file mode 100644
index 0000000..1ecbb03
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.10-v36.1.0.11
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_1_0_10_TO_v36_1_0_11 Version v36.1.0.10 to version v36.1.0.11 changes
+ *
+ * \subsection v36_1_0_10_TO_v36_1_0_11Added Added functions
+ *
+ * The following functions were added between versions v36.1.0.10 and v36.1.0.11
+ *
+ * \li \ref qcsapi_wps_upnp_status
+ * \li \ref qcsapi_wps_upnp_enable
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.13-v36.1.0.14 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.13-v36.1.0.14
new file mode 100644
index 0000000..eb2fc12
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.13-v36.1.0.14
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_1_0_13_TO_v36_1_0_14 Version v36.1.0.13 to version v36.1.0.14 changes
+ *
+ * \subsection v36_1_0_13_TO_v36_1_0_14Added Added functions
+ *
+ * The following functions were added between versions v36.1.0.13 and v36.1.0.14
+ *
+ * \li \ref qcsapi_wps_get_pbc_in_srcm
+ * \li \ref qcsapi_wps_set_pbc_in_srcm
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.14-v36.1.0.15 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.14-v36.1.0.15
new file mode 100644
index 0000000..31dbf12
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.14-v36.1.0.15
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_1_0_14_TO_v36_1_0_15 Version v36.1.0.14 to version v36.1.0.15 changes
+ *
+ * \subsection v36_1_0_14_TO_v36_1_0_15Added Added functions
+ *
+ * The following functions were added between versions v36.1.0.14 and v36.1.0.15
+ *
+ * \li \ref qcsapi_wifi_set_chan_pri_inactive
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.15-v36.1.0.16 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.15-v36.1.0.16
new file mode 100644
index 0000000..b9dabe2
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.15-v36.1.0.16
@@ -0,0 +1,15 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_1_0_15_TO_v36_1_0_16 Version v36.1.0.15 to version v36.1.0.16 changes
+ *
+ * \subsection v36_1_0_15_TO_v36_1_0_16Added Added functions
+ *
+ * The following functions were added between versions v36.1.0.15 and v36.1.0.16
+ *
+ * \li \ref qcsapi_wifi_enable_tdls
+ * \li \ref qcsapi_wifi_get_tdls_status
+ * \li \ref qcsapi_wifi_get_tdls_params
+ * \li \ref qcsapi_wifi_tdls_operate
+ * \li \ref qcsapi_wifi_set_tdls_params
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.3-v36.1.0.4 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.3-v36.1.0.4
new file mode 100644
index 0000000..f965cdd
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.3-v36.1.0.4
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_1_0_3_TO_v36_1_0_4 Version v36.1.0.3 to version v36.1.0.4 changes
+ *
+ * \subsection v36_1_0_3_TO_v36_1_0_4Added Added functions
+ *
+ * The following functions were added between versions v36.1.0.3 and v36.1.0.4
+ *
+ * \li \ref qcsapi_wifi_get_scs_param_report
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.5-v36.1.0.6 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.5-v36.1.0.6
new file mode 100644
index 0000000..77e2894
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.5-v36.1.0.6
@@ -0,0 +1,21 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_1_0_5_TO_v36_1_0_6 Version v36.1.0.5 to version v36.1.0.6 changes
+ *
+ * \subsection v36_1_0_5_TO_v36_1_0_6Added Added functions
+ *
+ * The following functions were added between versions v36.1.0.5 and v36.1.0.6
+ *
+ * \li \ref qcsapi_wifi_set_ocac_thrshld
+ * \li \ref qcsapi_wifi_set_ocac_duration
+ * \li \ref qcsapi_wifi_set_ocac_cac_time
+ * \li \ref qcsapi_wifi_get_ocac_status
+ * \li \ref qcsapi_wps_set_timeout
+ * \li \ref qcsapi_wifi_get_psk_auth_failures
+ * \li \ref qcsapi_wifi_set_ocac_report_only
+ * \li \ref qcsapi_wifi_stop_ocac
+ * \li \ref qcsapi_wifi_set_ocac_dwell_time
+ * \li \ref qcsapi_wifi_start_ocac
+ * \li \ref qcsapi_wps_on_hidden_ssid
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.7-v36.1.0.8 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.7-v36.1.0.8
new file mode 100644
index 0000000..c94ef5c
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.7-v36.1.0.8
@@ -0,0 +1,16 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_1_0_7_TO_v36_1_0_8 Version v36.1.0.7 to version v36.1.0.8 changes
+ *
+ * \subsection v36_1_0_7_TO_v36_1_0_8Added Added functions
+ *
+ * The following functions were added between versions v36.1.0.7 and v36.1.0.8
+ *
+ * \li \ref qcsapi_non_wps_get_pp_enable
+ * \li \ref qcsapi_non_wps_set_pp_enable
+ * \li \ref qcsapi_wifi_get_dscp_8021p_map
+ * \li \ref qcsapi_set_carrier_id
+ * \li \ref qcsapi_get_carrier_id
+ * \li \ref qcsapi_wifi_set_dscp_8021p_map
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.8-v36.1.0.9 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.8-v36.1.0.9
new file mode 100644
index 0000000..826e9b3
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.8-v36.1.0.9
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_1_0_8_TO_v36_1_0_9 Version v36.1.0.8 to version v36.1.0.9 changes
+ *
+ * \subsection v36_1_0_8_TO_v36_1_0_9Added Added functions
+ *
+ * The following functions were added between versions v36.1.0.8 and v36.1.0.9
+ *
+ * \li \ref qcsapi_wps_set_ap_pin
+ * \li \ref qcsapi_wps_save_ap_pin
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4-v36.5 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4-v36.5
deleted file mode 100644
index 450d713..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4-v36.5
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v36_4TO_v36_5 Version v36.4 to version v36.5 changes
- *
- * \subsection v36_4_TO_v36_5Added Added functions
- *
- * The following functions were added between versions v36.4 and v36.4
- *
- * \li \ref qcsapi_wifi_set_dscp_ac_map (36.4.0.2)
- * \li \ref qcsapi_wifi_get_congestion_index (36.4.0.2)
- * \li \ref qcsapi_wifi_set_tx_power (36.4.0.2)
- * \li \ref qcsapi_wifi_get_dscp_ac_map (36.4.0.2)
- * \li \ref qcsapi_registrar_get_default_pbc_bss (36.4.0.2)
- * \li \ref qcsapi_wifi_get_priority (36.4.0.2)
- * \li \ref qcsapi_regulatory_get_db_version (36.4.0.2)
- * \li \ref qcsapi_wifi_get_carrier_interference (36.4.0.2)
- * \li \ref qcsapi_wifi_set_priority (36.4.0.2)
- * \li \ref qcsapi_registrar_set_default_pbc_bss (36.4.0.2)
- * \li \ref qcsapi_wps_on_hidden_ssid_status (36.4.0.2)
- * \li \ref qcsapi_wps_get_runtime_state (36.4.0.2)
- * \li \ref qcsapi_regulatory_overwrite_country_code (36.4.0.4)
- * \li \ref qcsapi_wifi_get_spinor_jedecid (36.4.0.4)
- * \li \ref qcsapi_get_custom_value (36.4.0.5)
- * \li \ref qcsapi_wifi_get_michael_errcnt (36.4.0.9)
- * \li \ref qcsapi_wifi_get_bw_power (36.5.0.0)
- * \li \ref qcsapi_wifi_set_bw_power (36.5.0.0)
- * \li \ref qcsapi_regulatory_set_bw_power (36.5.0.0)
- *
- * \subsection v36_4TO_v36_5Removed Removed functions
- *
- * The following functions were removed between versions v36.4 and v36.5
- *
- * \li qcsapi_regulatory_get_supported_tx_power_levels (36.4.0.5)
- * \li qcsapi_regulatory_get_current_tx_power_level (36.4.0.5)
- */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.1-v36.4.0.2 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.1-v36.4.0.2
new file mode 100644
index 0000000..9245df3
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.1-v36.4.0.2
@@ -0,0 +1,22 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_4_0_1_TO_v36_4_0_2 Version v36.4.0.1 to version v36.4.0.2 changes
+ *
+ * \subsection v36_4_0_1_TO_v36_4_0_2Added Added functions
+ *
+ * The following functions were added between versions v36.4.0.1 and v36.4.0.2
+ *
+ * \li \ref qcsapi_wifi_set_dscp_ac_map
+ * \li \ref qcsapi_wifi_get_congestion_index
+ * \li \ref qcsapi_wifi_set_tx_power
+ * \li \ref qcsapi_wifi_get_dscp_ac_map
+ * \li \ref qcsapi_registrar_get_default_pbc_bss
+ * \li \ref qcsapi_wifi_get_priority
+ * \li \ref qcsapi_regulatory_get_db_version
+ * \li \ref qcsapi_wifi_get_carrier_interference
+ * \li \ref qcsapi_wifi_set_priority
+ * \li \ref qcsapi_registrar_set_default_pbc_bss
+ * \li \ref qcsapi_wps_on_hidden_ssid_status
+ * \li \ref qcsapi_wps_get_runtime_state
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.3-v36.4.0.4 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.3-v36.4.0.4
new file mode 100644
index 0000000..849c111
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.3-v36.4.0.4
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_4_0_3_TO_v36_4_0_4 Version v36.4.0.3 to version v36.4.0.4 changes
+ *
+ * \subsection v36_4_0_3_TO_v36_4_0_4Added Added functions
+ *
+ * The following functions were added between versions v36.4.0.3 and v36.4.0.4
+ *
+ * \li \ref qcsapi_regulatory_overwrite_country_code
+ * \li \ref qcsapi_wifi_get_spinor_jedecid
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.4-v36.4.0.5 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.4-v36.4.0.5
new file mode 100644
index 0000000..10080bc
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.4-v36.4.0.5
@@ -0,0 +1,18 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_4_0_4_TO_v36_4_0_5 Version v36.4.0.4 to version v36.4.0.5 changes
+ *
+ * \subsection v36_4_0_4_TO_v36_4_0_5Added Added functions
+ *
+ * The following functions were added between versions v36.4.0.4 and v36.4.0.5
+ *
+ * \li \ref qcsapi_get_custom_value
+ *
+ * \subsection v36_4_0_4_TO_v36_4_0_5Removed Removed functions
+ *
+ * The following functions were removed between versions v36.4.0.4 and v36.4.0.5
+ *
+ * \li qcsapi_regulatory_get_supported_tx_power_levels
+ * \li qcsapi_regulatory_get_current_tx_power_level
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.8-v36.4.0.9 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.8-v36.4.0.9
new file mode 100644
index 0000000..604130f
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.8-v36.4.0.9
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_4_0_8_TO_v36_4_0_9 Version v36.4.0.8 to version v36.4.0.9 changes
+ *
+ * \subsection v36_4_0_8_TO_v36_4_0_9Added Added functions
+ *
+ * The following functions were added between versions v36.4.0.8 and v36.4.0.9
+ *
+ * \li \ref qcsapi_wifi_get_michael_errcnt
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.9-v36.5.0.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.9-v36.5.0.0
new file mode 100644
index 0000000..0a2cec3
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.9-v36.5.0.0
@@ -0,0 +1,13 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_4_0_9_TO_v36_5_0_0 Version v36.4.0.9 to version v36.5.0.0 changes
+ *
+ * \subsection v36_4_0_9_TO_v36_5_0_0Added Added functions
+ *
+ * The following functions were added between versions v36.4.0.9 and v36.5.0.0
+ *
+ * \li \ref qcsapi_wifi_get_bw_power
+ * \li \ref qcsapi_wifi_set_bw_power
+ * \li \ref qcsapi_regulatory_set_bw_power
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5-v36.6 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5-v36.6
deleted file mode 100644
index 2e7ac14..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5-v36.6
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v36_5TO_v36_6 Version v36.5 to version v36.6 changes
- *
- * \subsection v36_5TO_v36_6Added Added functions
- *
- * The following functions were added between versions v36.5 and v36.6
- *
- * \li \ref qcsapi_pm_get_mode (36.5.0.1)
- * \li \ref qcsapi_wifi_cancel_scan (36.5.0.2)
- * \li \ref qcsapi_wifi_show_vlan_config (36.5.0.2)
- * \li \ref qcsapi_wifi_set_nss_cap (36.5.0.6)
- * \li \ref qcsapi_wifi_get_ipff (36.5.0.6)
- * \li \ref qcsapi_wifi_get_tx_mcs_per_association (36.5.0.6)
- * \li \ref qcsapi_wifi_get_mlme_stats_per_association (36.5.0.6)
- * \li \ref qcsapi_wifi_get_rx_mcs_per_association (36.5.0.6)
- * \li \ref qcsapi_wifi_get_mlme_stats_per_mac (36.5.0.6)
- * \li \ref qcsapi_wifi_del_ipff (36.5.0.6)
- * \li \ref qcsapi_wifi_get_nss_cap (36.5.0.6)
- * \li \ref qcsapi_wifi_add_ipff (36.5.0.6)
- * \li \ref qcsapi_wifi_get_mlme_stats_macs_list (36.5.0.6)
- * \li \ref qcsapi_wps_enable_ap_pin (36.5.0.7)
- * \li \ref qcsapi_wifi_get_security_defer_mode (36.5.0.8)
- * \li \ref qcsapi_wifi_startprod (36.5.0.8)
- * \li \ref qcsapi_wifi_apply_security_config (36.5.0.8)
- * \li \ref qcsapi_store_ipaddr (36.5.0.8)
- * \li \ref qcsapi_wifi_set_security_defer_mode (36.5.0.8)
- * \li \ref qcsapi_wifi_set_rts_threshold (36.6.0.0)
- * \li \ref qcsapi_config_get_ssid_parameter (36.6.0.0)
- * \li \ref qcsapi_config_update_ssid_parameter (36.6.0.0)
- * \li \ref qcsapi_wifi_get_rts_threshold (36.6.0.0)
- */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.0-v36.5.0.1 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.0-v36.5.0.1
new file mode 100644
index 0000000..d813123
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.0-v36.5.0.1
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_5_0_0_TO_v36_5_0_1 Version v36.5.0.0 to version v36.5.0.1 changes
+ *
+ * \subsection v36_5_0_0_TO_v36_5_0_1Added Added functions
+ *
+ * The following functions were added between versions v36.5.0.0 and v36.5.0.1
+ *
+ * \li \ref qcsapi_pm_get_mode
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.1-v36.5.0.2 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.1-v36.5.0.2
new file mode 100644
index 0000000..4142d00
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.1-v36.5.0.2
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_5_0_1_TO_v36_5_0_2 Version v36.5.0.1 to version v36.5.0.2 changes
+ *
+ * \subsection v36_5_0_1_TO_v36_5_0_2Added Added functions
+ *
+ * The following functions were added between versions v36.5.0.1 and v36.5.0.2
+ *
+ * \li \ref qcsapi_wifi_cancel_scan
+ * \li \ref qcsapi_wifi_show_vlan_config
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.5-v36.5.0.6 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.5-v36.5.0.6
new file mode 100644
index 0000000..35f7745
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.5-v36.5.0.6
@@ -0,0 +1,20 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_5_0_5_TO_v36_5_0_6 Version v36.5.0.5 to version v36.5.0.6 changes
+ *
+ * \subsection v36_5_0_5_TO_v36_5_0_6Added Added functions
+ *
+ * The following functions were added between versions v36.5.0.5 and v36.5.0.6
+ *
+ * \li \ref qcsapi_wifi_set_nss_cap
+ * \li \ref qcsapi_wifi_get_ipff
+ * \li \ref qcsapi_wifi_get_tx_mcs_per_association
+ * \li \ref qcsapi_wifi_get_mlme_stats_per_association
+ * \li \ref qcsapi_wifi_get_rx_mcs_per_association
+ * \li \ref qcsapi_wifi_get_mlme_stats_per_mac
+ * \li \ref qcsapi_wifi_del_ipff
+ * \li \ref qcsapi_wifi_get_nss_cap
+ * \li \ref qcsapi_wifi_add_ipff
+ * \li \ref qcsapi_wifi_get_mlme_stats_macs_list
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.6-v36.5.0.7 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.6-v36.5.0.7
new file mode 100644
index 0000000..a692e16
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.6-v36.5.0.7
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_5_0_6_TO_v36_5_0_7 Version v36.5.0.6 to version v36.5.0.7 changes
+ *
+ * \subsection v36_5_0_6_TO_v36_5_0_7Added Added functions
+ *
+ * The following functions were added between versions v36.5.0.6 and v36.5.0.7
+ *
+ * \li \ref qcsapi_wps_enable_ap_pin
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.7-v36.5.0.8 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.7-v36.5.0.8
new file mode 100644
index 0000000..73e2b26
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.7-v36.5.0.8
@@ -0,0 +1,15 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_5_0_7_TO_v36_5_0_8 Version v36.5.0.7 to version v36.5.0.8 changes
+ *
+ * \subsection v36_5_0_7_TO_v36_5_0_8Added Added functions
+ *
+ * The following functions were added between versions v36.5.0.7 and v36.5.0.8
+ *
+ * \li \ref qcsapi_wifi_get_security_defer_mode
+ * \li \ref qcsapi_wifi_startprod
+ * \li \ref qcsapi_wifi_apply_security_config
+ * \li \ref qcsapi_store_ipaddr
+ * \li \ref qcsapi_wifi_set_security_defer_mode
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.8-v36.6.0.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.8-v36.6.0.0
new file mode 100644
index 0000000..481d72d
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.8-v36.6.0.0
@@ -0,0 +1,14 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_5_0_8_TO_v36_6_0_0 Version v36.5.0.8 to version v36.6.0.0 changes
+ *
+ * \subsection v36_5_0_8_TO_v36_6_0_0Added Added functions
+ *
+ * The following functions were added between versions v36.5.0.8 and v36.6.0.0
+ *
+ * \li \ref qcsapi_wifi_set_rts_threshold
+ * \li \ref qcsapi_config_get_ssid_parameter
+ * \li \ref qcsapi_config_update_ssid_parameter
+ * \li \ref qcsapi_wifi_get_rts_threshold
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.6-v36.7 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.6-v36.7
deleted file mode 100644
index d8d2a72..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.6-v36.7
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v36_6TO_v36_7 Version v36.6 to version v36.7 changes
- *
- * \subsection v36_6TO_v36_7Added Added functions
- *
- * The following functions were added between versions v36.6 and v36.7
- *
- * \li \ref qcsapi_regulatory_apply_tx_power_cap (36.7.0.0)
- */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.6.0.1-v36.7.0.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.6.0.1-v36.7.0.0
new file mode 100644
index 0000000..ce94d29
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.6.0.1-v36.7.0.0
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_6_0_1_TO_v36_7_0_0 Version v36.6.0.1 to version v36.7.0.0 changes
+ *
+ * \subsection v36_6_0_1_TO_v36_7_0_0Added Added functions
+ *
+ * The following functions were added between versions v36.6.0.1 and v36.7.0.0
+ *
+ * \li \ref qcsapi_regulatory_apply_tx_power_cap
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7-v37.3 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7-v37.3
deleted file mode 100644
index 19bf20d..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7-v37.3
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v36_7TO_v37_3 Version v36.7 to version v37.3 changes
- *
- * \subsection v36_7_TO_v37_3Added Added functions
- *
- * The following functions were added between versions v36.7 and v37.3
- *
- * \li \ref qcsapi_wifi_get_pmf (36.7.0.1)
- * \li \ref qcsapi_set_aspm_l1 (36.7.0.1)
- * \li \ref qcsapi_wifi_set_pmf (36.7.0.1)
- * \li \ref qcsapi_led_pwm_enable (36.7.0.2)
- * \li \ref qcsapi_led_brightness (36.7.0.2)
- * \li \ref qcsapi_wifi_set_eap_shared_key (36.7.0.3)
- * \li \ref qcsapi_SSID_get_pmf (36.7.0.3)
- * \li \ref qcsapi_wifi_set_phy_mode (36.7.0.3)
- * \li \ref qcsapi_wifi_get_eap_shared_key (36.7.0.3)
- * \li \ref qcsapi_regulatory_restore_regulatory_tx_power (36.7.0.3)
- * \li \ref qcsapi_wifi_set_eap_radius_port (36.7.0.3)
- * \li \ref qcsapi_get_board_parameter (36.7.0.3)
- * \li \ref qcsapi_SSID_set_pmf (36.7.0.3)
- * \li \ref qcsapi_wifi_set_eap_radius_ipaddr (36.7.0.3)
- * \li \ref qcsapi_wifi_get_eap_radius_port (36.7.0.3)
- * \li \ref qcsapi_wifi_get_phy_mode (36.7.0.3)
- * \li \ref qcsapi_wifi_set_own_ip_addr (36.7.0.3)
- * \li \ref qcsapi_wifi_get_eap_radius_ipaddr (36.7.0.3)
- * \li \ref qcsapi_wifi_set_bss_isolate (36.7.0.4)
- * \li \ref qcsapi_wowlan_set_magic_pattern (36.7.0.4)
- * \li \ref qcsapi_wifi_set_intra_bss_isolate (36.7.0.4)
- * \li \ref qcsapi_wowlan_set_L2_type (36.7.0.4)
- * \li \ref qcsapi_wifi_get_intra_bss_isolate (36.7.0.4)
- * \li \ref qcsapi_set_host_state (36.7.0.4)
- * \li \ref qcsapi_wowlan_set_udp_port (36.7.0.4)
- * \li \ref qcsapi_wifi_get_bss_isolate (36.7.0.4)
- * \li \ref qcsapi_wowlan_set_match_type (36.7.0.4)
- * \li \ref qcsapi_wifi_get_bgscan_status (36.7.0.5)
- * \li \ref qcsapi_wifi_get_extender_params (36.7.0.5)
- * \li \ref qcsapi_wifi_enable_bgscan (36.7.0.5)
- * \li \ref qcsapi_wifi_set_extender_params (36.7.0.5)
- * \li \ref qcsapi_wds_get_mode (36.7.0.5)
- * \li \ref qcsapi_wds_add_peer_encrypt (36.7.0.5)
- * \li \ref qcsapi_wds_set_mode (36.7.0.5)
- * \li \ref qcsapi_get_uboot_info (36.7.0.6)
- * \li \ref qcsapi_wifi_get_airfair (36.7.0.7)
- * \li \ref qcsapi_wifi_get_group_key_interval (36.7.0.7)
- * \li \ref qcsapi_wifi_set_airfair (36.7.0.7)
- * \li \ref qcsapi_wifi_set_group_key_interval (36.7.0.7)
- * \li \ref qcsapi_wifi_disable_dfs_channels (36.7.0.8)
- * \li \ref qcsapi_is_startprod_done (37.3.0.0)
- * \li \ref qcsapi_wifi_wowlan_get_magic_pattern (37.3.0.0)
- * \li \ref qcsapi_wifi_get_auth_enc_per_association (37.3.0.0)
- * \li \ref qcsapi_wifi_get_tx_amsdu (37.3.0.0)
- * \li \ref qcsapi_wifi_wowlan_get_host_state (37.3.0.0)
- * \li \ref qcsapi_wifi_set_scs_stats (37.3.0.0)
- * \li \ref qcsapi_wifi_wowlan_get_match_type (37.3.0.0)
- * \li \ref qcsapi_set_l1 (37.3.0.0)
- * \li \ref qcsapi_wifi_get_config_BSSID (37.3.0.0)
- * \li \ref qcsapi_wifi_set_bf_power (37.3.0.0)
- * \li \ref qcsapi_wifi_set_bb_param (37.3.0.0)
- * \li \ref qcsapi_wifi_get_bb_param (37.3.0.0)
- * \li \ref qcsapi_wifi_get_disassoc_reason (37.3.0.0)
- * \li \ref qcsapi_wifi_get_vendor_per_association (37.3.0.0)
- * \li \ref qcsapi_wifi_wowlan_param_get (37.3.0.0)
- * \li \ref qcsapi_wifi_disassociate_sta (37.3.0.0)
- * \li \ref qcsapi_wifi_wowlan_get_udp_port (37.3.0.0)
- * \li \ref qcsapi_wifi_wowlan_get_l2_type (37.3.0.0)
- * \li \ref qcsapi_wifi_get_bf_power (37.3.0.0)
- * \li \ref qcsapi_get_qpm_level (37.3.0.0)
- * \li \ref qcsapi_wifi_get_tput_caps (37.3.0.0)
- * \li \ref qcsapi_wifi_set_tx_amsdu (37.3.0.0)
- * \li \ref qcsapi_regulatory_set_bf_power (37.3.0.0)
- */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.0-v36.7.0.1 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.0-v36.7.0.1
new file mode 100644
index 0000000..b378e13
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.0-v36.7.0.1
@@ -0,0 +1,13 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_7_0_0_TO_v36_7_0_1 Version v36.7.0.0 to version v36.7.0.1 changes
+ *
+ * \subsection v36_7_0_0_TO_v36_7_0_1Added Added functions
+ *
+ * The following functions were added between versions v36.7.0.0 and v36.7.0.1
+ *
+ * \li \ref qcsapi_wifi_get_pmf
+ * \li \ref qcsapi_set_aspm_l1
+ * \li \ref qcsapi_wifi_set_pmf
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.1-v36.7.0.2 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.1-v36.7.0.2
new file mode 100644
index 0000000..986e467
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.1-v36.7.0.2
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_7_0_1_TO_v36_7_0_2 Version v36.7.0.1 to version v36.7.0.2 changes
+ *
+ * \subsection v36_7_0_1_TO_v36_7_0_2Added Added functions
+ *
+ * The following functions were added between versions v36.7.0.1 and v36.7.0.2
+ *
+ * \li \ref qcsapi_led_pwm_enable
+ * \li \ref qcsapi_led_brightness
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.2-v36.7.0.3 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.2-v36.7.0.3
new file mode 100644
index 0000000..cf8cd33
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.2-v36.7.0.3
@@ -0,0 +1,23 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_7_0_2_TO_v36_7_0_3 Version v36.7.0.2 to version v36.7.0.3 changes
+ *
+ * \subsection v36_7_0_2_TO_v36_7_0_3Added Added functions
+ *
+ * The following functions were added between versions v36.7.0.2 and v36.7.0.3
+ *
+ * \li \ref qcsapi_wifi_set_eap_shared_key
+ * \li \ref qcsapi_SSID_get_pmf
+ * \li \ref qcsapi_wifi_set_phy_mode
+ * \li \ref qcsapi_wifi_get_eap_shared_key
+ * \li \ref qcsapi_regulatory_restore_regulatory_tx_power
+ * \li \ref qcsapi_wifi_set_eap_radius_port
+ * \li \ref qcsapi_get_board_parameter
+ * \li \ref qcsapi_SSID_set_pmf
+ * \li \ref qcsapi_wifi_set_eap_radius_ipaddr
+ * \li \ref qcsapi_wifi_get_eap_radius_port
+ * \li \ref qcsapi_wifi_get_phy_mode
+ * \li \ref qcsapi_wifi_set_own_ip_addr
+ * \li \ref qcsapi_wifi_get_eap_radius_ipaddr
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.3-v36.7.0.4 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.3-v36.7.0.4
new file mode 100644
index 0000000..50bd713
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.3-v36.7.0.4
@@ -0,0 +1,19 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_7_0_3_TO_v36_7_0_4 Version v36.7.0.3 to version v36.7.0.4 changes
+ *
+ * \subsection v36_7_0_3_TO_v36_7_0_4Added Added functions
+ *
+ * The following functions were added between versions v36.7.0.3 and v36.7.0.4
+ *
+ * \li \ref qcsapi_wifi_set_bss_isolate
+ * \li \ref qcsapi_wowlan_set_magic_pattern
+ * \li \ref qcsapi_wifi_set_intra_bss_isolate
+ * \li \ref qcsapi_wowlan_set_L2_type
+ * \li \ref qcsapi_wifi_get_intra_bss_isolate
+ * \li \ref qcsapi_set_host_state
+ * \li \ref qcsapi_wowlan_set_udp_port
+ * \li \ref qcsapi_wifi_get_bss_isolate
+ * \li \ref qcsapi_wowlan_set_match_type
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.4-v36.7.0.5 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.4-v36.7.0.5
new file mode 100644
index 0000000..134358c
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.4-v36.7.0.5
@@ -0,0 +1,17 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_7_0_4_TO_v36_7_0_5 Version v36.7.0.4 to version v36.7.0.5 changes
+ *
+ * \subsection v36_7_0_4_TO_v36_7_0_5Added Added functions
+ *
+ * The following functions were added between versions v36.7.0.4 and v36.7.0.5
+ *
+ * \li \ref qcsapi_wifi_get_bgscan_status
+ * \li \ref qcsapi_wifi_get_extender_params
+ * \li \ref qcsapi_wifi_enable_bgscan
+ * \li \ref qcsapi_wifi_set_extender_params
+ * \li \ref qcsapi_wds_get_mode
+ * \li \ref qcsapi_wds_add_peer_encrypt
+ * \li \ref qcsapi_wds_set_mode
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.5-v36.7.0.6 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.5-v36.7.0.6
new file mode 100644
index 0000000..fd768f7
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.5-v36.7.0.6
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_7_0_5_TO_v36_7_0_6 Version v36.7.0.5 to version v36.7.0.6 changes
+ *
+ * \subsection v36_7_0_5_TO_v36_7_0_6Added Added functions
+ *
+ * The following functions were added between versions v36.7.0.5 and v36.7.0.6
+ *
+ * \li \ref qcsapi_get_uboot_info
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.6-v36.7.0.7 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.6-v36.7.0.7
new file mode 100644
index 0000000..547e3d0
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.6-v36.7.0.7
@@ -0,0 +1,14 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_7_0_6_TO_v36_7_0_7 Version v36.7.0.6 to version v36.7.0.7 changes
+ *
+ * \subsection v36_7_0_6_TO_v36_7_0_7Added Added functions
+ *
+ * The following functions were added between versions v36.7.0.6 and v36.7.0.7
+ *
+ * \li \ref qcsapi_wifi_get_airfair
+ * \li \ref qcsapi_wifi_get_group_key_interval
+ * \li \ref qcsapi_wifi_set_airfair
+ * \li \ref qcsapi_wifi_set_group_key_interval
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.7-v36.7.0.8 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.7-v36.7.0.8
new file mode 100644
index 0000000..e43bcb4
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.7-v36.7.0.8
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_7_0_7_TO_v36_7_0_8 Version v36.7.0.7 to version v36.7.0.8 changes
+ *
+ * \subsection v36_7_0_7_TO_v36_7_0_8Added Added functions
+ *
+ * The following functions were added between versions v36.7.0.7 and v36.7.0.8
+ *
+ * \li \ref qcsapi_wifi_disable_dfs_channels
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.8-v37.3.0.0 b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.8-v37.3.0.0
new file mode 100644
index 0000000..edde96b
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.8-v37.3.0.0
@@ -0,0 +1,33 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v36_7_0_8_TO_v37_3_0_0 Version v36.7.0.8 to version v37.3.0.0 changes
+ *
+ * \subsection v36_7_0_8_TO_v37_3_0_0Added Added functions
+ *
+ * The following functions were added between versions v36.7.0.8 and v37.3.0.0
+ *
+ * \li \ref qcsapi_is_startprod_done
+ * \li \ref qcsapi_wifi_wowlan_get_magic_pattern
+ * \li \ref qcsapi_wifi_get_auth_enc_per_association
+ * \li \ref qcsapi_wifi_get_tx_amsdu
+ * \li \ref qcsapi_wifi_wowlan_get_host_state
+ * \li \ref qcsapi_wifi_set_scs_stats
+ * \li \ref qcsapi_wifi_wowlan_get_match_type
+ * \li \ref qcsapi_set_l1
+ * \li \ref qcsapi_wifi_get_config_BSSID
+ * \li \ref qcsapi_wifi_set_bf_power
+ * \li \ref qcsapi_wifi_set_bb_param
+ * \li \ref qcsapi_wifi_get_bb_param
+ * \li \ref qcsapi_wifi_get_disassoc_reason
+ * \li \ref qcsapi_wifi_get_vendor_per_association
+ * \li \ref qcsapi_wifi_wowlan_param_get
+ * \li \ref qcsapi_wifi_disassociate_sta
+ * \li \ref qcsapi_wifi_wowlan_get_udp_port
+ * \li \ref qcsapi_wifi_wowlan_get_l2_type
+ * \li \ref qcsapi_wifi_get_bf_power
+ * \li \ref qcsapi_get_qpm_level
+ * \li \ref qcsapi_wifi_get_tput_caps
+ * \li \ref qcsapi_wifi_set_tx_amsdu
+ * \li \ref qcsapi_regulatory_set_bf_power
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3-v37.4 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3-v37.4
deleted file mode 100644
index 0ab0b4c..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3-v37.4
+++ /dev/null
@@ -1,191 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_3_TO_v37_4 Version v37.3 to version v37.4 changes
- *
- * \subsection v37_3_TO_v37_4Added Added functions
- *
- * The following functions were added between versions v37.3 and v37.4
- *
- * \li \ref qcsapi_interface_get_counter64 (37.3.0.1)
- * \li \ref qcsapi_wifi_get_scan_buf_max_size (37.3.0.2)
- * \li \ref qcsapi_calcmd_get_info (37.3.0.2)
- * \li \ref qcsapi_wifi_set_scan_buf_max_size (37.3.0.2)
- * \li \ref qcsapi_wifi_get_scan_table_max_len (37.3.0.2)
- * \li \ref qcsapi_wifi_set_scan_table_max_len (37.3.0.2)
- * \li \ref qcsapi_wifi_get_tdls_params (37.3.0.3)
- * \li \ref qcsapi_wifi_get_tdls_status (37.3.0.3)
- * \li \ref qcsapi_wifi_tdls_operate (37.3.0.3)
- * \li \ref qcsapi_wifi_get_connection_mode (37.3.0.3)
- * \li \ref qcsapi_wifi_set_tdls_params (37.3.0.3)
- * \li \ref qcsapi_wifi_reassociate (37.3.0.4)
- * \li \ref qcsapi_wifi_get_max_mimo (37.3.0.6)
- * \li \ref qcsapi_get_swfeat_list (37.3.0.6)
- * \li \ref qcsapi_security_get_nai_realms (37.3.0.8)
- * \li \ref qcsapi_wifi_get_proxy_arp (37.3.0.8)
- * \li \ref qcsapi_wifi_get_80211u_params (37.3.0.8)
- * \li \ref qcsapi_remove_hs20_param (37.3.0.8)
- * \li \ref qcsapi_wifi_set_interworking (37.3.0.8)
- * \li \ref qcsapi_wifi_get_power_selection (37.3.0.8)
- * \li \ref qcsapi_security_get_roaming_consortium (37.3.0.8)
- * \li \ref qcsapi_wifi_get_interworking (37.3.0.8)
- * \li \ref qcsapi_security_del_roaming_consortium (37.3.0.8)
- * \li \ref qcsapi_security_del_nai_realm (37.3.0.8)
- * \li \ref qcsapi_wifi_get_hs20_status (37.3.0.8)
- * \li \ref qcsapi_wifi_set_hs20_status (37.3.0.8)
- * \li \ref qcsapi_wifi_get_hs20_params (37.3.0.8)
- * \li \ref qcsapi_wifi_get_venue_info (37.3.0.8)
- * \li \ref qcsapi_security_add_roaming_consortium (37.3.0.8)
- * \li \ref qcsapi_wifi_set_proxy_arp (37.3.0.8)
- * \li \ref qcsapi_remove_11u_param (37.3.0.8)
- * \li \ref qcsapi_wifi_set_power_selection (37.3.0.8)
- * \li \ref qcsapi_wifi_set_hs20_params (37.3.0.8)
- * \li \ref qcsapi_wifi_set_80211u_params (37.3.0.8)
- * \li \ref qcsapi_wifi_set_venue_info (37.3.0.8)
- * \li \ref qcsapi_security_add_nai_realm (37.3.0.8)
- * \li \ref qcsapi_qtm_del_rule_index (37.3.0.9)
- * \li \ref qcsapi_qtm_get_strm (37.3.0.9)
- * \li \ref qcsapi_qtm_get_state (37.3.0.9)
- * \li \ref qcsapi_qtm_get_state_all (37.3.0.9)
- * \li \ref qcsapi_qtm_del_rule (37.3.0.9)
- * \li \ref qcsapi_qtm_set_state (37.3.0.9)
- * \li \ref qcsapi_qtm_get_config (37.3.0.9)
- * \li \ref qcsapi_qtm_add_rule (37.3.0.9)
- * \li \ref qcsapi_qtm_get_stats (37.3.0.9)
- * \li \ref qcsapi_qtm_get_config_all (37.3.0.9)
- * \li \ref qcsapi_qtm_get_rule (37.3.0.9)
- * \li \ref qcsapi_qtm_get_inactive_flags (37.3.0.9)
- * \li \ref qcsapi_qtm_set_config (37.3.0.9)
- * \li \ref qcsapi_regulatory_get_configured_tx_power_ext (37.3.0.10)
- * \li \ref qcsapi_wifi_get_scan_chk_inv (37.3.0.10)
- * \li \ref qcsapi_get_service_action_enum (37.3.0.10)
- * \li \ref qcsapi_wifi_set_scan_chk_inv (37.3.0.10)
- * \li \ref qcsapi_service_control (37.3.0.10)
- * \li \ref qcsapi_get_service_name_enum (37.3.0.10)
- * \li \ref qcsapi_wifi_set_tx_power_ext (37.3.0.10)
- * \li \ref qcsapi_wifi_get_tx_power_ext (37.3.0.10)
- * \li \ref qcsapi_wifi_enable_tdls_over_qhop (37.3.0.11)
- * \li \ref qcsapi_interface_get_ip4 (37.3.0.12)
- * \li \ref qcsapi_wifi_set_dfs_s_radio_dwell_time (37.3.0.12)
- * \li \ref qcsapi_wifi_set_dfs_s_radio_thrshld (37.3.0.12)
- * \li \ref qcsapi_wifi_get_dfs_s_radio_status (37.3.0.12)
- * \li \ref qcsapi_wifi_get_bss_assoc_limit (37.3.0.12)
- * \li \ref qcsapi_wifi_set_dfs_s_radio_report_only (37.3.0.12)
- * \li \ref qcsapi_wifi_set_dfs_s_radio_cac_time (37.3.0.12)
- * \li \ref qcsapi_wifi_get_dfs_s_radio_availability (37.3.0.12)
- * \li \ref qcsapi_wifi_set_bss_assoc_limit (37.3.0.12)
- * \li \ref qcsapi_interface_set_ip4 (37.3.0.12)
- * \li \ref qcsapi_wifi_start_dfs_s_radio (37.3.0.12)
- * \li \ref qcsapi_wifi_set_dfs_s_radio_duration (37.3.0.12)
- * \li \ref qcsapi_wifi_stop_dfs_s_radio (37.3.0.12)
- * \li \ref qcsapi_security_add_oper_friendly_name (37.3.0.13)
- * \li \ref qcsapi_security_del_venue_name (37.3.0.13)
- * \li \ref qcsapi_security_get_hs20_conn_capab (37.3.0.13)
- * \li \ref qcsapi_security_get_venue_name (37.3.0.13)
- * \li \ref qcsapi_security_add_venue_name (37.3.0.13)
- * \li \ref qcsapi_security_get_oper_friendly_name (37.3.0.13)
- * \li \ref qcsapi_security_del_oper_friendly_name (37.3.0.13)
- * \li \ref qcsapi_security_del_hs20_conn_capab (37.3.0.13)
- * \li \ref qcsapi_verify_numeric (37.3.0.13)
- * \li \ref qcsapi_security_add_hs20_conn_capab (37.3.0.13)
- * \li \ref qcsapi_wifi_del_radius_auth_server_cfg (37.3.0.15)
- * \li \ref qcsapi_wifi_get_radius_auth_server_cfg (37.3.0.15)
- * \li \ref qcsapi_wifi_add_radius_auth_server_cfg (37.3.0.15)
- * \li \ref qcsapi_get_random_seed (37.3.0.16)
- * \li \ref qcsapi_set_random_seed (37.3.0.16)
- * \li \ref qcsapi_wifi_get_link_quality_max (37.3.0.16)
- * \li \ref qcsapi_wifi_set_enable_mu (37.3.0.17)
- * \li \ref qcsapi_wifi_get_mu_use_eq (37.3.0.17)
- * \li \ref qcsapi_wifi_get_mu_use_precode (37.3.0.17)
- * \li \ref qcsapi_wifi_get_enable_mu (37.3.0.17)
- * \li \ref qcsapi_wifi_set_mu_use_eq (37.3.0.17)
- * \li \ref qcsapi_wfa_cert_mode_enable (37.3.0.17)
- * \li \ref qcsapi_wifi_get_mu_groups (37.3.0.17)
- * \li \ref qcsapi_wifi_set_mu_use_precode (37.3.0.17)
- * \li \ref qcsapi_wifi_set_l2_ext_filter (37.3.0.19)
- * \li \ref qcsapi_wifi_get_l2_ext_filter (37.3.0.19)
- * \li \ref qcsapi_set_emac_switch (37.3.0.20)
- * \li \ref qcsapi_send_file (37.3.0.20)
- * \li \ref qcsapi_get_emac_switch (37.3.0.20)
- * \li \ref qcsapi_eth_dscp_map (37.3.0.20)
- * \li \ref qcsapi_wifi_set_dfs_s_radio_wea_cac_time (37.4.0.0)
- * \li \ref qcsapi_str_to_uint32 (37.4.0.0)
- * \li \ref qcsapi_wifi_set_dfs_s_radio_wea_duration (37.4.0.0)
- *
- * \subsection v37_3_TO_v37_4Removed Removed functions
- *
- * The following functions were removed between versions v37.3 and v37.4
- *
- * \li qcsapi_vsp_add_rule (37.3.0.9)
- * \li qcsapi_vsp_get_rule (37.3.0.9)
- * \li qcsapi_vsp_get_strm (37.3.0.9)
- * \li qcsapi_vsp_set_config (37.3.0.9)
- * \li qcsapi_vsp_get_inactive_flags (37.3.0.9)
- * \li qcsapi_vsp_del_rule (37.3.0.9)
- * \li qcsapi_vsp_get_config (37.3.0.9)
- * \li qcsapi_vsp_get_stats (37.3.0.9)
- * \li qcsapi_vsp_get_state_all (37.3.0.9)
- * \li qcsapi_vsp_get_state (37.3.0.9)
- * \li qcsapi_vsp_del_rule_index (37.3.0.9)
- * \li qcsapi_vsp_set_state (37.3.0.9)
- * \li qcsapi_vsp_get_config_all (37.3.0.9)
- * \li \ref qcsapi_wifi_set_venue_info (37.3.0.13)
- * \li \ref qcsapi_wifi_get_venue_info (37.3.0.13)
- * \li qcsapi_wifi_set_eap_shared_key (37.3.0.15)
- * \li qcsapi_wifi_get_eap_shared_key (37.3.0.15)
- * \li qcsapi_wifi_set_eap_radius_port (37.3.0.15)
- * \li qcsapi_wifi_set_eap_radius_ipaddr (37.3.0.15)
- * \li qcsapi_wifi_get_eap_radius_port (37.3.0.15)
- * \li qcsapi_wifi_get_eap_radius_ipaddr (37.3.0.15)
- *
- * \subsection v37_3_0_1_TO_v37_3_0_2Proto Function prototype changes
- * The following function prototypes were modified between versions v37.3 and v37.4
- *  - \ref qcsapi_wifi_get_auth_state (37.3.0.2)
- *    - 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 (37.3.0.2)
- *    - 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);
- *  - \ref qcsapi_wifi_tdls_operate (37.3.0.11)
- *    - 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);
- *  - \ref qcsapi_security_add_roaming_consortium (37.3.0.13)
- *    - 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 (37.3.0.13)
- *    - 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 (37.3.0.13)
- *    - 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 (37.3.0.13)
- *    - 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 (37.3.0.13)
- *    - 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 (37.3.0.13)
- *    - 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 (37.3.0.13)
- *    - 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);
- *  - \ref qcsapi_wifi_set_phy_mode (37.3.0.17)
- *    - 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);
- *  - \ref qcsapi_wifi_rfstatus (37.3.0.18)
- *    - 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 (37.3.0.18)
- *    - 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);
- *  - \ref qcsapi_get_service_action_enum (37.3.0.19)
- *    - 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 (37.3.0.19)
- *    - 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);
- *  - \ref qcsapi_wifi_set_hs20_params (37.3.0.21)
- *    - 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.0-v37.3.0.1 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.0-v37.3.0.1
new file mode 100644
index 0000000..9662fb4
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.0-v37.3.0.1
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_0_TO_v37_3_0_1 Version v37.3.0.0 to version v37.3.0.1 changes
+ *
+ * \subsection v37_3_0_0_TO_v37_3_0_1Added Added functions
+ *
+ * The following functions were added between versions v37.3.0.0 and v37.3.0.1
+ *
+ * \li \ref qcsapi_interface_get_counter64
+ */
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
new file mode 100644
index 0000000..7f40d09
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.1-v37.3.0.2
@@ -0,0 +1,25 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_1_TO_v37_3_0_2 Version v37.3.0.1 to version v37.3.0.2 changes
+ *
+ * \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
+ *
+ * \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
new file mode 100644
index 0000000..576eb38
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.10-v37.3.0.11
@@ -0,0 +1,18 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_10_TO_v37_3_0_11 Version v37.3.0.10 to version v37.3.0.11 changes
+ *
+ * \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.11-v37.3.0.12 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.11-v37.3.0.12
new file mode 100644
index 0000000..a8a056e
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.11-v37.3.0.12
@@ -0,0 +1,23 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_11_TO_v37_3_0_12 Version v37.3.0.11 to version v37.3.0.12 changes
+ *
+ * \subsection v37_3_0_11_TO_v37_3_0_12Added Added functions
+ *
+ * The following functions were added between versions v37.3.0.11 and v37.3.0.12
+ *
+ * \li \ref qcsapi_interface_get_ip4
+ * \li \ref qcsapi_wifi_set_dfs_s_radio_dwell_time
+ * \li \ref qcsapi_wifi_set_dfs_s_radio_thrshld
+ * \li \ref qcsapi_wifi_get_dfs_s_radio_status
+ * \li \ref qcsapi_wifi_get_bss_assoc_limit
+ * \li \ref qcsapi_wifi_set_dfs_s_radio_report_only
+ * \li \ref qcsapi_wifi_set_dfs_s_radio_cac_time
+ * \li \ref qcsapi_wifi_get_dfs_s_radio_availability
+ * \li \ref qcsapi_wifi_set_bss_assoc_limit
+ * \li \ref qcsapi_interface_set_ip4
+ * \li \ref qcsapi_wifi_start_dfs_s_radio
+ * \li \ref qcsapi_wifi_set_dfs_s_radio_duration
+ * \li \ref qcsapi_wifi_stop_dfs_s_radio
+ */
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
new file mode 100644
index 0000000..6939006
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.12-v37.3.0.13
@@ -0,0 +1,51 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_12_TO_v37_3_0_13 Version v37.3.0.12 to version v37.3.0.13 changes
+ *
+ * \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_oper_friendly_name
+ * \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
+ *
+ * \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.14-v37.3.0.15 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.14-v37.3.0.15
new file mode 100644
index 0000000..9c878f9
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.14-v37.3.0.15
@@ -0,0 +1,24 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_14_TO_v37_3_0_15 Version v37.3.0.14 to version v37.3.0.15 changes
+ *
+ * \subsection v37_3_0_14_TO_v37_3_0_15Added Added functions
+ *
+ * The following functions were added between versions v37.3.0.14 and v37.3.0.15
+ *
+ * \li \ref qcsapi_wifi_del_radius_auth_server_cfg
+ * \li \ref qcsapi_wifi_get_radius_auth_server_cfg
+ * \li \ref qcsapi_wifi_add_radius_auth_server_cfg
+ *
+ * \subsection v37_3_0_14_TO_v37_3_0_15Removed Removed functions
+ *
+ * The following functions were removed between versions v37.3.0.14 and v37.3.0.15
+ *
+ * \li qcsapi_wifi_set_eap_shared_key
+ * \li qcsapi_wifi_get_eap_shared_key
+ * \li qcsapi_wifi_set_eap_radius_port
+ * \li qcsapi_wifi_set_eap_radius_ipaddr
+ * \li qcsapi_wifi_get_eap_radius_port
+ * \li qcsapi_wifi_get_eap_radius_ipaddr
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.15-v37.3.0.16 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.15-v37.3.0.16
new file mode 100644
index 0000000..61b2526
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.15-v37.3.0.16
@@ -0,0 +1,13 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_15_TO_v37_3_0_16 Version v37.3.0.15 to version v37.3.0.16 changes
+ *
+ * \subsection v37_3_0_15_TO_v37_3_0_16Added Added functions
+ *
+ * The following functions were added between versions v37.3.0.15 and v37.3.0.16
+ *
+ * \li \ref qcsapi_get_random_seed
+ * \li \ref qcsapi_set_random_seed
+ * \li \ref qcsapi_wifi_get_link_quality_max
+ */
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
new file mode 100644
index 0000000..0dc105e
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.16-v37.3.0.17
@@ -0,0 +1,25 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_16_TO_v37_3_0_17 Version v37.3.0.16 to version v37.3.0.17 changes
+ *
+ * \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_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_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
new file mode 100644
index 0000000..7a6b3c0
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.18-v37.3.0.19
@@ -0,0 +1,22 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_18_TO_v37_3_0_19 Version v37.3.0.18 to version v37.3.0.19 changes
+ *
+ * \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.19-v37.3.0.20 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.19-v37.3.0.20
new file mode 100644
index 0000000..3b499c2
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.19-v37.3.0.20
@@ -0,0 +1,14 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_19_TO_v37_3_0_20 Version v37.3.0.19 to version v37.3.0.20 changes
+ *
+ * \subsection v37_3_0_19_TO_v37_3_0_20Added Added functions
+ *
+ * The following functions were added between versions v37.3.0.19 and v37.3.0.20
+ *
+ * \li \ref qcsapi_set_emac_switch
+ * \li \ref qcsapi_send_file
+ * \li \ref qcsapi_get_emac_switch
+ * \li \ref qcsapi_eth_dscp_map
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.2-v37.3.0.3 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.2-v37.3.0.3
new file mode 100644
index 0000000..333ca49
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.2-v37.3.0.3
@@ -0,0 +1,15 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_2_TO_v37_3_0_3 Version v37.3.0.2 to version v37.3.0.3 changes
+ *
+ * \subsection v37_3_0_2_TO_v37_3_0_3Added Added functions
+ *
+ * The following functions were added between versions v37.3.0.2 and v37.3.0.3
+ *
+ * \li \ref qcsapi_wifi_get_tdls_params
+ * \li \ref qcsapi_wifi_get_tdls_status
+ * \li \ref qcsapi_wifi_tdls_operate
+ * \li \ref qcsapi_wifi_get_connection_mode
+ * \li \ref qcsapi_wifi_set_tdls_params
+ */
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.3-v37.3.0.4 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.3-v37.3.0.4
new file mode 100644
index 0000000..070d273
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.3-v37.3.0.4
@@ -0,0 +1,11 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_3_TO_v37_3_0_4 Version v37.3.0.3 to version v37.3.0.4 changes
+ *
+ * \subsection v37_3_0_3_TO_v37_3_0_4Added Added functions
+ *
+ * The following functions were added between versions v37.3.0.3 and v37.3.0.4
+ *
+ * \li \ref qcsapi_wifi_reassociate
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.5-v37.3.0.6 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.5-v37.3.0.6
new file mode 100644
index 0000000..af0df88
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.5-v37.3.0.6
@@ -0,0 +1,12 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_5_TO_v37_3_0_6 Version v37.3.0.5 to version v37.3.0.6 changes
+ *
+ * \subsection v37_3_0_5_TO_v37_3_0_6Added Added functions
+ *
+ * The following functions were added between versions v37.3.0.5 and v37.3.0.6
+ *
+ * \li \ref qcsapi_wifi_get_max_mimo
+ * \li \ref qcsapi_get_swfeat_list
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.7-v37.3.0.8 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.7-v37.3.0.8
new file mode 100644
index 0000000..e412184
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.7-v37.3.0.8
@@ -0,0 +1,32 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_7_TO_v37_3_0_8 Version v37.3.0.7 to version v37.3.0.8 changes
+ *
+ * \subsection v37_3_0_7_TO_v37_3_0_8Added Added functions
+ *
+ * The following functions were added between versions v37.3.0.7 and v37.3.0.8
+ *
+ * \li \ref qcsapi_security_get_nai_realms
+ * \li \ref qcsapi_wifi_get_proxy_arp
+ * \li \ref qcsapi_wifi_get_80211u_params
+ * \li \ref qcsapi_remove_hs20_param
+ * \li \ref qcsapi_wifi_set_interworking
+ * \li \ref qcsapi_wifi_get_power_selection
+ * \li \ref qcsapi_security_get_roaming_consortium
+ * \li \ref qcsapi_wifi_get_interworking
+ * \li \ref qcsapi_security_del_roaming_consortium
+ * \li \ref qcsapi_security_del_nai_realm
+ * \li \ref qcsapi_wifi_get_hs20_status
+ * \li \ref qcsapi_wifi_set_hs20_status
+ * \li \ref qcsapi_wifi_get_hs20_params
+ * \li \ref qcsapi_wifi_get_venue_info
+ * \li \ref qcsapi_security_add_roaming_consortium
+ * \li \ref qcsapi_wifi_set_proxy_arp
+ * \li \ref qcsapi_remove_11u_param
+ * \li \ref qcsapi_wifi_set_power_selection
+ * \li \ref qcsapi_wifi_set_hs20_params
+ * \li \ref qcsapi_wifi_set_80211u_params
+ * \li \ref qcsapi_wifi_set_venue_info
+ * \li \ref qcsapi_security_add_nai_realm
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.8-v37.3.0.9 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.8-v37.3.0.9
new file mode 100644
index 0000000..336e97a
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.8-v37.3.0.9
@@ -0,0 +1,41 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_8_TO_v37_3_0_9 Version v37.3.0.8 to version v37.3.0.9 changes
+ *
+ * \subsection v37_3_0_8_TO_v37_3_0_9Added Added functions
+ *
+ * The following functions were added between versions v37.3.0.8 and v37.3.0.9
+ *
+ * \li \ref qcsapi_qtm_del_rule_index
+ * \li \ref qcsapi_qtm_get_strm
+ * \li \ref qcsapi_qtm_get_state
+ * \li \ref qcsapi_qtm_get_state_all
+ * \li \ref qcsapi_qtm_del_rule
+ * \li \ref qcsapi_qtm_set_state
+ * \li \ref qcsapi_qtm_get_config
+ * \li \ref qcsapi_qtm_add_rule
+ * \li \ref qcsapi_qtm_get_stats
+ * \li \ref qcsapi_qtm_get_config_all
+ * \li \ref qcsapi_qtm_get_rule
+ * \li \ref qcsapi_qtm_get_inactive_flags
+ * \li \ref qcsapi_qtm_set_config
+ *
+ * \subsection v37_3_0_8_TO_v37_3_0_9Removed Removed functions
+ *
+ * The following functions were removed between versions v37.3.0.8 and v37.3.0.9
+ *
+ * \li qcsapi_vsp_add_rule
+ * \li qcsapi_vsp_get_rule
+ * \li qcsapi_vsp_get_strm
+ * \li qcsapi_vsp_set_config
+ * \li qcsapi_vsp_get_inactive_flags
+ * \li qcsapi_vsp_del_rule
+ * \li qcsapi_vsp_get_config
+ * \li qcsapi_vsp_get_stats
+ * \li qcsapi_vsp_get_state_all
+ * \li qcsapi_vsp_get_state
+ * \li qcsapi_vsp_del_rule_index
+ * \li qcsapi_vsp_set_state
+ * \li qcsapi_vsp_get_config_all
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.9-v37.3.0.10 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.9-v37.3.0.10
new file mode 100644
index 0000000..c21c8b1
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.9-v37.3.0.10
@@ -0,0 +1,18 @@
+/**
+ * \page ChangeLog
+ *
+ * \section v37_3_0_9_TO_v37_3_0_10 Version v37.3.0.9 to version v37.3.0.10 changes
+ *
+ * \subsection v37_3_0_9_TO_v37_3_0_10Added Added functions
+ *
+ * The following functions were added between versions v37.3.0.9 and v37.3.0.10
+ *
+ * \li \ref qcsapi_regulatory_get_configured_tx_power_ext
+ * \li \ref qcsapi_wifi_get_scan_chk_inv
+ * \li \ref qcsapi_get_service_action_enum
+ * \li \ref qcsapi_wifi_set_scan_chk_inv
+ * \li \ref qcsapi_service_control
+ * \li \ref qcsapi_get_service_name_enum
+ * \li \ref qcsapi_wifi_set_tx_power_ext
+ * \li \ref qcsapi_wifi_get_tx_power_ext
+ */
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.0-v37.4.0.18 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.0-v37.4.0.18
deleted file mode 100644
index b6b501d..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.0-v37.4.0.18
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_4_0_0_TO_v37_4_0_18 Version v37.4.0.0 to version v37.4.0.18 changes
- *
- * \subsection v37_4_0_0_TO_v37_4_0_18Added Added functions
- *
- * The following functions were added between versions v37.4.0.0 and v37.4.0.18
- *
- * \li \ref qcsapi_wifi_set_optim_stats (37.4.0.3)
- * \li \ref qcsapi_wifi_set_sys_time (37.4.0.5)
- * \li \ref qcsapi_wifi_set_2_4ghz_bw (37.4.0.5)
- * \li \ref qcsapi_wifi_get_mac_address_reserve (37.4.0.5)
- * \li \ref qcsapi_wifi_set_vco_lock_detect_mode (37.4.0.5)
- * \li \ref qcsapi_wifi_clear_mac_address_reserve (37.4.0.5)
- * \li \ref qcsapi_wifi_set_mac_address_reserve (37.4.0.5)
- * \li \ref qcsapi_wifi_get_vco_lock_detect_mode (37.4.0.5)
- * \li \ref qcsapi_wifi_get_sys_time (37.4.0.5)
- * \li \ref qcsapi_wifi_set_pref_band (37.4.0.5)
- * \li \ref qcsapi_wifi_get_2_4ghz_bw (37.4.0.5)
- * \li \ref qcsapi_wifi_get_pref_band (37.4.0.5)
- * \li \ref qcsapi_wifi_ssid_get_bssid (37.4.0.6)
- * \li \ref qcsapi_wifi_ssid_set_bssid (37.4.0.6)
- * \li \ref qcsapi_get_eth_info (37.4.0.6)
- * \li \ref qcsapi_wifi_get_chan_power_table (37.4.0.7)
- * \li \ref qcsapi_wifi_get_scs_score_report (37.4.0.7)
- * \li \ref qcsapi_wifi_set_chan_power_table (37.4.0.7)
- * \li \ref qcsapi_wifi_get_ap_interface_name (37.4.0.9)
- * \li \ref qcsapi_wifi_set_ap_interface_name (37.4.0.9)
- * \li \ref qcsapi_wifi_verify_repeater_mode (37.4.0.9)
- * \li \ref qcsapi_wifi_block_bss (37.4.0.12)
- * \li \ref qcsapi_wifi_chan_control (37.4.0.13)
- * \li \ref qcsapi_wifi_get_chan_disabled (37.4.0.13)
- * \li \ref qcsapi_wifi_set_txba_disable (37.4.0.17)
- * \li \ref qcsapi_security_del_hs20_icon (37.4.0.17)
- * \li \ref qcsapi_wifi_get_pairwise_key_interval (37.4.0.17)
- * \li \ref qcsapi_wifi_get_vap_state (37.4.0.17)
- * \li \ref qcsapi_wifi_set_vap_default_state (37.4.0.17)
- * \li \ref qcsapi_wifi_send_qos_map_conf (37.4.0.17)
- * \li \ref qcsapi_wifi_set_chan_pri_inactive_ext (37.4.0.17)
- * \li \ref qcsapi_wifi_get_txburst (37.4.0.17)
- * \li \ref qcsapi_wifi_get_supported_freq_bands (37.4.0.17)
- * \li \ref qcsapi_wifi_get_qos_map (37.4.0.17)
- * \li \ref qcsapi_security_del_osu_server_uri (37.4.0.17)
- * \li \ref qcsapi_wifi_get_sec_chan (37.4.0.17)
- * \li \ref qcsapi_wifi_get_dscp_tid_map (37.4.0.17)
- * \li \ref qcsapi_wifi_get_rxba_decline (37.4.0.17)
- * \li \ref qcsapi_wifi_del_qos_map (37.4.0.17)
- * \li \ref qcsapi_wifi_set_pairwise_key_interval (37.4.0.17)
- * \li \ref qcsapi_security_add_osu_server_uri (37.4.0.17)
- * \li \ref qcsapi_security_get_osu_server_uri (37.4.0.17)
- * \li \ref qcsapi_security_get_osu_server_param (37.4.0.17)
- * \li \ref qcsapi_wifi_set_vap_state (37.4.0.17)
- * \li \ref qcsapi_wifi_get_txba_disable (37.4.0.17)
- * \li \ref qcsapi_security_del_osu_server_param (37.4.0.17)
- * \li \ref qcsapi_security_get_hs20_icon (37.4.0.17)
- * \li \ref qcsapi_wifi_set_qos_map (37.4.0.17)
- * \li \ref qcsapi_wifi_set_rxba_decline (37.4.0.17)
- * \li \ref qcsapi_wifi_set_txburst (37.4.0.17)
- * \li \ref qcsapi_wifi_set_sec_chan (37.4.0.17)
- * \li \ref qcsapi_security_add_osu_server_param (37.4.0.17)
- * \li \ref qcsapi_security_add_hs20_icon (37.4.0.17)
- * \li \ref qcsapi_wifi_get_vap_default_state (37.4.0.17)
- *
- * \subsection v37_4_0_0_TO_v37_4_0_18Proto Function prototype changes
- *
- * The following function prototypes were modified between versions v37.4.0.0 and v37.4.0.18
- *  - \ref qcsapi_security_del_venue_name (37.4.0.2)
- *    - 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 (37.4.0.2)
- *    - 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 (37.4.0.2)
- *    - 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 (37.4.0.2)
- *    - 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 (37.4.0.2)
- *    - 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);
- *  - \ref qcsapi_enable_vlan_pass_through (37.4.0.7)
- *    - Old prototype: int qcsapi_enable_vlan_pass_through(int enabled);
- *    - New prototype: int qcsapi_enable_vlan_pass_through(const char *ifname, int enabled);
- *  - \ref qcsapi_get_uboot_info (37.4.0.9)
- *    - 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);
- *  - \ref qcsapi_wifi_set_group_key_interval (37.4.0.17)
- *    - 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 (37.4.0.17)
- *    - 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 (37.4.0.17)
- *    - 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 (37.4.0.17)
- *    - 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.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.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.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.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.47-v37.4.0.48 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.47-v37.4.0.48
deleted file mode 100644
index 6c76903..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.47-v37.4.0.48
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_4_0_47_TO_v37_4_0_48 Version v37.4.0.47 to version v37.4.0.48 changes
- *
- * \subsection v37_4_0_47_TO_v37_4_0_48Added Added functions
- *
- * The following functions were added between versions v37.4.0.47 and v37.4.0.48
- * \li \ref qcsapi_wps_set_default_pbc_bss
- * \li \ref qcsapi_wps_get_default_pbc_bss
- */
-
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.49-v37.4.0.50 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.49-v37.4.0.50
deleted file mode 100644
index 4fedac4..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.49-v37.4.0.50
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_4_0_49_TO_v37_4_0_50 Version v37.4.0.49 to version v37.4.0.50 changes
- *
- * \subsection v37_4_0_49_TO_v37_4_0_50Added Added functions
- *
- * The following functions were added between versions v37.4.0.49 and v37.4.0.50
- * \li \ref qcsapi_wifi_authorize_mac_address_list_ext
- * \li \ref qcsapi_wifi_deny_mac_address_list_ext
- * \li \ref qcsapi_wifi_remove_mac_address_list_ext
- */
-
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.50-v37.4.0.51 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.50-v37.4.0.51
deleted file mode 100644
index 95e7483..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.50-v37.4.0.51
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_4_0_50_TO_v37_4_0_51 Version v37.4.0.50 to version v37.4.0.51 changes
- *
- * \subsection v37_4_0_50_TO_v37_4_0_51Proto Function prototype changes
- *
- * The following function prototypes were modified between versions v37.4.0.50 and v37.4.0.51
- *  - \ref qcsapi_wifi_show_vlan_config
- *    - Old prototype: int qcsapi_wifi_show_vlan_config(const char *ifname, string_2048 vcfg, const char *flag);
- *    - New prototype: int qcsapi_wifi_show_vlan_config(const char *ifname, struct qcsapi_data_2Kbytes *vcfg, const char *flag);
- *  - \ref qcsapi_wifi_get_rates
- *    - Old prototype: int qcsapi_wifi_get_rates(const char *ifname, qcsapi_rate_type rate_type, string_1024 supported_rates);
- *    - New prototype: int qcsapi_wifi_get_rates(const char *ifname, qcsapi_rate_type rate_type, string_2048 supported_rates);
- */
-
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.51-v37.4.0.52 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.51-v37.4.0.52
deleted file mode 100644
index e4a7d82..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.51-v37.4.0.52
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_4_0_51_TO_v37_4_0_52 Version v37.4.0.51 to version v37.4.0.52 changes
- *
- * \subsection v37_4_0_51_TO_v37_4_0_52Added Added functions
- *
- * The following functions were added between versions v37.4.0.51 and v37.4.0.52
- * \li \ref qcsapi_set_log_level
- * \li \ref qcsapi_get_log_level
- * \li \ref qcsapi_get_app_core_dump
- * \li \ref qcsapi_wifi_set_threshold_of_neighborhood_type
- * \li \ref qcsapi_get_app_core_dump_size
- * \li \ref qcsapi_wifi_get_neighborhood_type
- */
-
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.53-v37.4.0.54 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.53-v37.4.0.54
deleted file mode 100644
index 5686b24..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.53-v37.4.0.54
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_4_0_53_TO_v37_4_0_54 Version v37.4.0.53 to version v37.4.0.54 changes
- *
- * \subsection v37_4_0_53_TO_v37_4_0_54Added Added functions
- *
- * The following functions were added between versions v37.4.0.53 and v37.4.0.54
- * \li \ref qcsapi_wifi_set_current_tx_power_level
- */
-
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.56-v37.4.0.57 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.56-v37.4.0.57
deleted file mode 100644
index 78a346e..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.56-v37.4.0.57
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_4_0_56_TO_v37_4_0_57 Version v37.4.0.56 to version v37.4.0.57 changes
- *
- * \subsection v37_4_0_56_TO_v37_4_0_57Added Added functions
- *
- * The following functions were added between versions v37.4.0.56 and v37.4.0.57
- * \li \ref qcsapi_do_system_action
- * \li \ref qcsapi_set_remote_logging
- * \li \ref qcsapi_wifi_node_get_txrx_airtime
- * \li \ref qcsapi_wifi_get_txrx_airtime
- *
- * \subsection v37_4_0_56_TO_v37_4_0_57Removed Removed functions
- *
- * The following functions were removed between versions v37.4.0.56 and v37.4.0.57
- * \li \ref qcsapi_wifi_get_tx_airtime
- * \li \ref qcsapi_wifi_node_get_tx_airtime
- *
- * \subsection v37_4_0_56_TO_v37_4_0_57Proto Function prototype changes
- *
- * The following function prototypes were modified between versions v37.4.0.56 and v37.4.0.57
- *  - \ref qcsapi_set_log_level
- *    - Old prototype: int qcsapi_set_log_level(const char *interface, string_32 level, qcsapi_log_module_name index);
- *    - New prototype: int qcsapi_set_log_level(const char *ifname, qcsapi_log_module_name index, const string_128 params);
- *  - \ref qcsapi_get_log_level
- *    - Old prototype: int qcsapi_get_log_level(const char *interface, string_32 level, qcsapi_log_module_name index);
- *    - New prototype: int qcsapi_get_log_level(const char *ifname, qcsapi_log_module_name index, string_128 params);
- *  - \ref qcsapi_wifi_scs_switch_channel
- *    - Old prototype: int qcsapi_wifi_scs_switch_channel(const char *ifname);
- *    - New prototype: int qcsapi_wifi_scs_switch_channel(const char *ifname, uint16_t pick_flags);
- */
-
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.57-v37.4.0.58 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.57-v37.4.0.58
deleted file mode 100644
index 5641f8f..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.57-v37.4.0.58
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_4_0_57_TO_v37_4_0_58 Version v37.4.0.57 to version v37.4.0.58 changes
- *
- * \subsection v37_4_0_57_TO_v37_4_0_58Added Added functions
- *
- * The following functions were added between versions v37.4.0.57 and v37.4.0.58
- * \li \ref qcsapi_wifi_get_threshold_of_neighborhood_type
- * \li \ref qcsapi_wifi_set_parameter
- * \li \ref qcsapi_wifi_is_weather_channel
- * \li \ref qcsapi_wifi_get_parameter
- */
-
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.58-v37.4.0.59 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.58-v37.4.0.59
deleted file mode 100644
index 376a0e5..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.58-v37.4.0.59
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_4_0_58_TO_v37_4_0_59 Version v37.4.0.58 to version v37.4.0.59 changes
- *
- * \subsection v37_4_0_58_TO_v37_4_0_59Added Added functions
- *
- * The following functions were added between versions v37.4.0.58 and v37.4.0.59
- * \li \ref qcsapi_wifi_set_br_isolate
- * \li \ref qcsapi_wifi_get_br_isolate
- */
-
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.59-v37.4.0.60 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.59-v37.4.0.60
deleted file mode 100644
index 1d3133f..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.59-v37.4.0.60
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_4_0_59_TO_v37_4_0_60 Version v37.4.0.59 to version v37.4.0.60 changes
- *
- * \subsection v37_4_0_59_TO_v37_4_0_60Added Added functions
- *
- * The following functions were added between versions v37.4.0.59 and v37.4.0.60
- * \li \ref qcsapi_set_console
- */
-
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.60-v37.4.0.61 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.60-v37.4.0.61
deleted file mode 100644
index 1ecc44e..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.60-v37.4.0.61
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_4_0_60_TO_v37_4_0_61 Version v37.4.0.60 to version v37.4.0.61 changes
- *
- * \subsection v37_4_0_60_TO_v37_4_0_61Added Added functions
- *
- * The following functions were added between versions v37.4.0.60 and v37.4.0.61
- * \li \ref qcsapi_wifi_set_tx_max_amsdu
- * \li \ref qcsapi_wifi_get_tx_max_amsdu
- */
-
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.62-v37.4.1.62 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.62-v37.4.1.62
deleted file mode 100644
index 43b07b7..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.62-v37.4.1.62
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_4_0_62_TO_v37_4_1_62 Version v37.4.0.62 to version v37.4.1.62 changes
- *
- * \subsection v37_4_0_62_TO_v37_4_1_62Proto Function prototype changes
- *
- * The following function prototypes were modified between versions v37.4.0.62 and v37.4.1.62
- *  - \ref qcsapi_get_app_core_dump
- *    - Old prototype: int qcsapi_get_app_core_dump(char *file, string_4096 buf, uint32_t bytes_to_copy, uint32_t offset, uint32_t *bytes_copied);
- *    - New prototype: int qcsapi_get_app_core_dump(const char *file, string_4096 buf, uint32_t bytes_to_copy, uint32_t offset, uint32_t *bytes_copied);
- *  - \ref qcsapi_get_app_core_dump_size
- *    - Old prototype: int qcsapi_get_app_core_dump_size(char *file, uint32_t *core_dump_size);
- *    - New prototype: int qcsapi_get_app_core_dump_size(const char *file, uint32_t *core_dump_size);
- */
-
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/changelog/changes-v37.4.10.62-v37.4.11.62 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.10.62-v37.4.11.62
deleted file mode 100644
index 3f47d09..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.10.62-v37.4.11.62
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_4_10_62_TO_v37_4_11_62 Version v37.4.10.62 to version v37.4.11.62 changes
- *
- * \subsection v37_4_10_62_TO_v37_4_11_62Added Added functions
- *
- * The following functions were added between versions v37.4.10.62 and v37.4.11.62
- * \li \ref qcsapi_wifi_get_scs_interference_report
- */
-
diff --git a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.6.62-v37.4.7.62 b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.6.62-v37.4.7.62
deleted file mode 100644
index e1e8b41..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.6.62-v37.4.7.62
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * \page ChangeLog
- *
- * \section v37_4_6_62_TO_v37_4_7_62 Version v37.4.6.62 to version v37.4.7.62 changes
- *
- * \subsection v37_4_6_62_TO_v37_4_7_62Added Added functions
- *
- * The following functions were added between versions v37.4.6.62 and v37.4.7.62
- * \li \ref qcsapi_get_app_core_dump_ext
- *
- * \subsection v37_4_6_62_TO_v37_4_7_62Removed Removed functions
- *
- * The following functions were removed between versions v37.4.6.62 and v37.4.7.62
- * \li \ref qcsapi_get_app_core_dump_size
- */
-
diff --git a/include/common/doxygen/qcsapi_doc/groupdefine.txt b/include/common/doxygen/qcsapi_doc/groupdefine.txt
index 0b7e2f0..44dced9 100644
--- a/include/common/doxygen/qcsapi_doc/groupdefine.txt
+++ b/include/common/doxygen/qcsapi_doc/groupdefine.txt
@@ -335,7 +335,6 @@
 /**@defgroup OptionsAPIs Options
  * @brief A variety of options can be accessed or set.
  * See the discussion of the datatype qcsapi_option_type for the list of available options.
- * See the discussion of the datatype qcsapi_wifi_param_type for the list of available parameters.
  * Relevant entry points follow:
  *
  * @section mysection10_3 WiFi Options and the call_qcsapi Interface
@@ -369,7 +368,6 @@
  * <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>
- * <TR>		<TD>qcsapi_txamsdu_11n</TD>		<TD>tx_amsdu_11n</TD>	</TR>
  * </TABLE>
  * To access the get option API enter:<br>
  * <c>call_qcsapi get_option wifi0 \<option\>	</c><br>
@@ -422,24 +420,6 @@
  *      <c>QCS API error 1044: Option is not supported</c><br>
  *   Caller can check the return value <c>-qcsapi_option_not_supported</c> to query
  *   if the option is supported.
- *
- * @section mysection10_5 WiFi Parameters and the call_qcsapi Interface
- * The table below lists selected parameters as listed in the enumerated type and how to pass them to call_qcsapi.
- * <TABLE>
- * <TR>		<TD><b>Option</b></TD>		<TD><b>call_qcsapi representation</b></TD>	</TR>
- * <TR>		<TD>qcsapi_wifi_param_dtim_period</TD>		<TD>dtim_period</TD>	</TR>
- * </TABLE>
- * To access the get parameter API enter:<br>
- * <c>call_qcsapi get_wifi_param wifi0 \<parameter\>	</c><br>
- * Unless an error occurs, the output will be the numeric value of the parameter.<br>
- * To access the set parameter API enter:<br>
- * <c>call_qcsapi set_wifi_param wifi0 \<parameter\> \<numeric value\></c><br>
- * Unless an error occurs, the output will be the string <c>complete</c>.
- *
- * @section mysection10_6 Notes on Selected Parameters
- *
- * - The dtim period is an AP only parameter.<br>
- *   It controls how often the broadcast/multicast traffic indication bit set in beacon unit.<br>
  */
 
 
diff --git a/include/common/ruby_mem.h b/include/common/ruby_mem.h
index 06c97bf..013e07b 100644
--- a/include/common/ruby_mem.h
+++ b/include/common/ruby_mem.h
@@ -121,9 +121,9 @@
 #define CONFIG_ARC_DSP_END		(CONFIG_ARC_DSP_BASE + CONFIG_ARC_DSP_SIZE)
 #define CONFIG_ARC_MUC_BASE		CONFIG_ARC_DSP_END
 #ifdef TOPAZ_128_NODE_MODE
-#define CONFIG_ARC_MUC_SIZE		((3 * 1024 * 1024) + (584 * 1024))
+#define CONFIG_ARC_MUC_SIZE		((3 * 1024 * 1024) + (580 * 1024))
 #else
-#define CONFIG_ARC_MUC_SIZE		((2 * 1024 * 1024) + (772 * 1024))
+#define CONFIG_ARC_MUC_SIZE		((2 * 1024 * 1024) + (768 * 1024))
 #endif
 #define MUC_DRAM_RX_RESVERED_RELOC_SIZE		(8 * 1024)
 #define CONFIG_ARC_MUC_END		(CONFIG_ARC_MUC_BASE + CONFIG_ARC_MUC_SIZE)
@@ -184,7 +184,7 @@
 #define TOPAZ_HBM_BUF_END		(TOPAZ_HBM_BUF_WMAC_RX_END + TOPAZ_HBM_POOL_GUARD_SIZE)
 
 #define TOPAZ_FWT_MCAST_ENTRIES		2048
-#define TOPAZ_FWT_MCAST_FF_ENTRIES	1	/* one for all FF addresses */
+#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. */
diff --git a/include/common/ruby_pm.h b/include/common/ruby_pm.h
index 8319f2f..052b46e 100644
--- a/include/common/ruby_pm.h
+++ b/include/common/ruby_pm.h
@@ -46,7 +46,6 @@
 #define BOARD_PM_WLAN_IDLE_TIMEOUT		(120 * HZ)
 #define BOARD_PM_WLAN_STA_IDLE_TIMEOUT		(15 * HZ)
 #define BOARD_PM_WLAN_DEFAULT_TIMEOUT		(0)
-#define BOARD_PM_WLAN_CHECK_IDLE_AFTER_CAC	(30 * HZ)
 
 /* qdisc parameters to switch between modes */
 #define BOARD_PM_QDISC_TIMER_TIMEOUT		(50/*ms*/ * HZ / 1000)
diff --git a/include/common/ruby_version.h b/include/common/ruby_version.h
index 342d60e..7664b11 100644
--- a/include/common/ruby_version.h
+++ b/include/common/ruby_version.h
@@ -12,6 +12,6 @@
 // Defines
 ////////////////////////////////////////////////////////////////////////////
 
-#define RUBY_UBOOT_VERSION	"v37.4.0.29"
+#define RUBY_UBOOT_VERSION	"v37.4.0.28"
 
 #endif // __RUBY_RELEASE_H__
diff --git a/include/kernel/net80211/ieee80211_beacon_desc.h b/include/kernel/net80211/ieee80211_beacon_desc.h
deleted file mode 100644
index 79b9181..0000000
--- a/include/kernel/net80211/ieee80211_beacon_desc.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
-  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.
-
-**/
-
-#ifndef IEEE80211_BEACON_DESC_H_
-#define IEEE80211_BEACON_DESC_H_
-#include "qtn/beacon_ioctl.h"
-
-struct ieee80211_beacon_param_t {
-	struct beacon_shared_ie_t  *head;
-	struct beacon_shared_ie_t  *tail;
-	uint8_t buf[BEACON_PARAM_SIZE];		/* liner buffer for the ie list */
-	uint32_t curr;			/* current offset of using buffer */
-	uint16_t size;				/* allocated buffer size */
-};
-
-#define IEEE80211_ELEMID_VENDOR_WME		(IEEE80211_ELEMID_VENDOR << 8 | 0x0)
-#define IEEE80211_ELEMID_VENDOR_WPA		(IEEE80211_ELEMID_VENDOR << 8 | 0x1)
-#define IEEE80211_ELEMID_VENDOR_ATH		(IEEE80211_ELEMID_VENDOR << 8 | 0x2)
-#define IEEE80211_ELEMID_VENDOR_QTN		(IEEE80211_ELEMID_VENDOR << 8 | 0x3)
-#define IEEE80211_ELEMID_VENDOR_EXT_ROLE	(IEEE80211_ELEMID_VENDOR << 8 | 0x4)
-#define IEEE80211_ELEMID_VENDOR_EXT_BSSID	(IEEE80211_ELEMID_VENDOR << 8 | 0x5)
-#define IEEE80211_ELEMID_VENDOR_EXT_STATE	(IEEE80211_ELEMID_VENDOR << 8 | 0x6)
-#define IEEE80211_ELEMID_VENDOR_QTN_WME		(IEEE80211_ELEMID_VENDOR << 8 | 0x7)
-#define IEEE80211_ELEMID_VENDOR_EPIGRAM		(IEEE80211_ELEMID_VENDOR << 8 | 0x8)
-#define IEEE80211_ELEMID_VENDOR_APP		(IEEE80211_ELEMID_VENDOR << 8 | 0x9)
-
-int ieee80211_beacon_create_param(struct ieee80211vap *vap);
-void ieee80211_beacon_flush_param(struct ieee80211_beacon_param_t *param);
-void ieee80211_beacon_destroy_param(struct ieee80211vap *vap);
-uint8_t *ieee80211_add_beacon_desc_header(struct ieee80211_node *ni, uint8_t *frm);
-uint8_t *ieee80211_add_beacon_desc_mandatory_fields(struct ieee80211_node *ni, uint8_t *frm,
-		struct ieee80211_beacon_offsets *bo);
-uint8_t *ieee80211_add_beacon_desc_ie(struct ieee80211_node *ni, uint16_t ext_ie_id, uint8_t *frm);
-void ieee80211_dump_beacon_desc_ie(struct ieee80211_beacon_param_t *param);
-
-#endif
diff --git a/include/kernel/net80211/ieee80211_node.h b/include/kernel/net80211/ieee80211_node.h
index bb7b59c..778303e 100644
--- a/include/kernel/net80211/ieee80211_node.h
+++ b/include/kernel/net80211/ieee80211_node.h
@@ -63,13 +63,6 @@
 #endif
 void ieee80211_node_dbgref_history_dump(void);
 
-/* Define of the V optimization */
-enum ieee80211_vopt_state {
-	IEEE80211_VOPT_DISABLED	= 0,
-	IEEE80211_VOPT_ENABLED	= 1,
-	IEEE80211_VOPT_AUTO	= 2,
-};
-
 /*
  * Each ieee80211com instance has a single timer that fires once a
  * second.  This is used to initiate various work depending on the
@@ -286,7 +279,6 @@
 	u_int ni_scangen;			/* gen# for timeout scan */
 	u_int8_t ni_authmode;			/* authentication algorithm */
 	u_int16_t ni_flags;			/* special-purpose state */
-	uint16_t ni_ext_flags;			/* extended special-purpose state */
 	u_int8_t ni_ath_flags;			/* Atheros feature flags */
 	/* NB: These must have the same values as IEEE80211_ATHC_* */
 #define IEEE80211_NODE_TURBOP	0x0001		/* Turbo prime enable */
@@ -414,9 +406,6 @@
 	uint16_t ni_recent_others_time_smth;
 	uint16_t ni_recent_tdls_tx_time;
 	uint16_t ni_recent_tdls_rx_time;
-	uint32_t ni_recent_cca_idle;
-	uint32_t ni_recent_cca_idle_smthed;
-	uint32_t ni_recent_cca_idle_smth_jiffies;
 	uint16_t ni_tdls_tx_time_smthed;
 	uint16_t ni_tdls_rx_time_smthed;
 	uint32_t ni_tdls_time_smth_jiffies;
@@ -432,7 +421,6 @@
 		__le64 tsf;
 	} ni_tstamp;				/* from last rcv'd beacon */
 
-	u_int16_t ni_raw_bintval;		/* raw beacon interval */
 	u_int16_t ni_intval;			/* beacon interval */
 	u_int16_t ni_intval_old;		/* beacon interval before first change */
 	u_int16_t ni_intval_cnt;		/* count of ni_intval != ni_intval_old */
@@ -647,9 +635,8 @@
                                        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_update_active_chanlist(struct ieee80211com *ic, int bw);
-void ieee80211_nonqtn_sta_join(struct ieee80211vap *vap, struct ieee80211_node *ni, const char *caller);
-void ieee80211_nonqtn_sta_leave(struct ieee80211vap *vap, struct ieee80211_node *ni, const char *caller);
+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
@@ -795,9 +782,6 @@
 
 #endif /* IEEE80211_DEBUG_REFCNT */
 
-void ieee80211_sta_assocs_inc(struct ieee80211vap *vap, const char *caller);
-void ieee80211_sta_assocs_dec(struct ieee80211vap *vap, const char *caller);
-
 int ieee80211_add_wds_addr(struct ieee80211_node_table *, struct ieee80211_node *,
 	const u_int8_t *, u_int8_t);
 void ieee80211_remove_wds_addr(struct ieee80211_node_table *, const u_int8_t *);
@@ -848,5 +832,5 @@
 void ieee80211_disconnect_node(struct ieee80211vap *vap, struct ieee80211_node *ni);
 int ieee80211_node_is_intel(struct ieee80211_node *ni);
 int ieee80211_node_is_realtek(struct ieee80211_node *ni);
-int ieee80211_node_is_opti_node(struct ieee80211_node *ni);
+int ieee80211_node_is_no_rxamsdu_no_bf(struct ieee80211_node *ni);
 #endif /* _NET80211_IEEE80211_NODE_H_ */
diff --git a/include/kernel/net80211/ieee80211_proto.h b/include/kernel/net80211/ieee80211_proto.h
index 43de757..99a7cd5 100644
--- a/include/kernel/net80211/ieee80211_proto.h
+++ b/include/kernel/net80211/ieee80211_proto.h
@@ -126,7 +126,6 @@
 void ieee80211_set11gbasicrates(struct ieee80211_rateset *, enum ieee80211_phymode);
 enum ieee80211_phymode ieee80211_get11gbasicrates(struct ieee80211_rateset *);
 void ieee80211_send_pspoll(struct ieee80211_node *);
-void ieee80211_send_vht_opmode_to_all(struct ieee80211com *ic, uint8_t bw);
 void ieee80211_tkip_mic_failure(struct ieee80211vap *, int count);
 void ieee80211_send_rm_req_stastats(struct ieee80211_node *ni, u_int32_t flags);
 int32_t ieee80211_send_rm_rep_stastats(struct ieee80211_node *ni,
@@ -140,8 +139,6 @@
 void ieee80211_send_action_cca_report(struct ieee80211_node *ni, uint8_t token,
 		uint16_t cca_intf, uint64_t tsf, uint16_t duration, uint32_t sp_fail,
 		uint32_t lp_fail, uint16_t others_time, uint8_t *extra_ie, uint16_t ie_len);
-void ieee80211_send_action_fat_report(struct ieee80211_node *ni, uint8_t token,
-		uint16_t cca_intf, uint64_t tsf, uint16_t duration, uint16_t idle_time);
 void ieee80211_send_rm_req_stastats_all(struct ieee80211com *ic);
 void ieee80211_send_rm_req_chan_load(struct ieee80211_node *ni,
 				u_int8_t channel,
@@ -499,15 +496,11 @@
 };
 struct sk_buff *ieee80211_beacon_alloc(struct ieee80211_node *,
 	struct ieee80211_beacon_offsets *);
-void ieee80211_beacon_update(struct ieee80211_node *,
+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 */
-uint8_t *ieee80211_add_beacon_header(struct ieee80211_node *ni, uint8_t *frm);
-uint8_t *ieee80211_add_epigram_ie(uint8_t *frm);
-uint8_t *ieee80211_add_mandatory_field(struct ieee80211_node *ni, uint8_t *frm,
-		struct ieee80211_beacon_offsets *bo);
 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 *);
@@ -537,12 +530,14 @@
 
 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(struct ieee80211_node *ni, uint8_t *frm, struct ieee80211com *ic, int band_24g);
+uint8_t *ieee80211_add_vhtop_notif(uint8_t *frm, struct ieee80211com *ic, int band_24g);
 
 /* MU MIMO */
 void
 ieee80211_send_vht_grp_id_mgmt_action(struct ieee80211vap *vap,
 				      struct ieee80211_node *ni);
+void ieee80211_node_mu_grp_update(struct ieee80211_node *ni, uint8_t grp,
+				  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);
diff --git a/include/kernel/net80211/ieee80211_scan.h b/include/kernel/net80211/ieee80211_scan.h
index 1899de3..a66d477 100644
--- a/include/kernel/net80211/ieee80211_scan.h
+++ b/include/kernel/net80211/ieee80211_scan.h
@@ -255,7 +255,6 @@
 	u_int8_t *se_vhtcap_ie;		/* captured VHT Capability Info ie */
 	u_int8_t *se_vhtop_ie;		/* captured VHT Operation Info ie */
 	u_int8_t *se_ath_ie;		/* captured Atheros ie */
-	u_int8_t *se_qtn_ie;		/* captured qtn ie */
 	u_int8_t se_qtn_ie_flags;	/* captured Quantenna flags */
 	u_int8_t se_is_qtn_dev;		/* 1 - is QTN device, 0 - non-QTN device */
 	u_int8_t se_ext_role;		/* 0 - default mode, 1 - MBS, 2 - RBS */
@@ -371,12 +370,8 @@
 
 	/* CCA interference */
 #define SCS_CCA_INTF_INVALID	0xFFFF
-#define SCS_CCA_IDLE_INVALID	0xFFFF
 	uint16_t as_cca_intf_smth;
 	uint16_t as_cca_intf[IEEE80211_CHAN_MAX];
-	uint16_t as_cca_intf_pri[IEEE80211_CHAN_MAX];
-	uint16_t as_cca_intf_sec[IEEE80211_CHAN_MAX];
-	uint16_t as_cca_intf_sec40[IEEE80211_CHAN_MAX];
 	uint32_t as_cca_intf_jiffies[IEEE80211_CHAN_MAX];
 	uint32_t as_pmbl_err_ap[IEEE80211_CHAN_MAX];
 	uint32_t as_pmbl_err_sta[IEEE80211_CHAN_MAX];
@@ -410,8 +405,6 @@
 			struct ieee80211_channel *chan_pri);
 int ieee80211_wps_active(uint8_t *wsc_ie);
 void ieee80211_dump_scan_res(struct ieee80211_scan_state *ss);
-int ieee80211_get_type_of_neighborhood(struct ieee80211com *ic);
-void ieee80211_check_type_of_neighborhood(struct ieee80211com *ic);
 
 const struct ieee80211_scanner *ieee80211_scanner_get(enum ieee80211_opmode,
 	int);
diff --git a/include/kernel/net80211/ieee80211_tdls.h b/include/kernel/net80211/ieee80211_tdls.h
index 6890593..907f669 100644
--- a/include/kernel/net80211/ieee80211_tdls.h
+++ b/include/kernel/net80211/ieee80211_tdls.h
@@ -161,9 +161,6 @@
 int
 ieee80211_tdls_disable_peer_link(struct ieee80211_node *ni);
 
-int
-ieee80211_tdls_enable_peer_link(struct ieee80211vap *vap, struct ieee80211_node *ni);
-
 void
 ieee80211_tdls_chan_switch_timeout(unsigned long arg);
 
@@ -231,6 +228,9 @@
 ieee80211_tdls_vdetach(struct ieee80211vap *vap);
 
 int
+ieee80211_tdls_node_join(struct ieee80211vap *vap, struct ieee80211_node *ni);
+
+int
 ieee80211_tdls_node_leave(struct ieee80211vap *vap, struct ieee80211_node *ni);
 
 int
diff --git a/include/kernel/net80211/ieee80211_var.h b/include/kernel/net80211/ieee80211_var.h
index 6264595..42b8745 100644
--- a/include/kernel/net80211/ieee80211_var.h
+++ b/include/kernel/net80211/ieee80211_var.h
@@ -104,6 +104,12 @@
 #define IEEE80211_USEC_TO_MS(x)		((x) / 1000)
 #define IEEE80211_MS_TO_JIFFIES(x)	((x) * HZ / 1000)
 
+#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))
 
@@ -174,35 +180,6 @@
 #define IEEE80211_EXTENDER_SCAN_MBS_INTERVAL		15	/* seconds */
 #define IEEE80211_EXTENDER_MBS_INVALID_TIMEOUT		5	/* seconds */
 
-#define STA_DFS_STRICT_TX_CHAN_CLOSE_TIME_MAX		1000	/* ms */
-#define STA_DFS_STRICT_TX_CHAN_CLOSE_TIME_MIN		1	/* ms */
-#define STA_DFS_STRICT_TX_CHAN_CLOSE_TIME_DEFAULT	1000	/* ms */
-
-/*
- * All Non-DFS channels are AVAILABLE by default
- * [AP] Any DFS channel is set to AVAILABLE:
- *	(i) only after CAC_DONE,
- *	(ii) and no radar was found
- * [STA] All DFS channels are NON_AVAILABLE by default.
- *
- */
-#define IEEE80211_CHANNEL_STATUS_NON_AVAILABLE			(0x1)
-#define IEEE80211_CHANNEL_STATUS_AVAILABLE			(0x2)
-/* A DFS channel will stay in the NOT_AVAILABLE_RADAR_DETECTED state during the non-occupancy period */
-#define IEEE80211_CHANNEL_STATUS_NOT_AVAILABLE_RADAR_DETECTED	(0x4)
-/* All DFS channels are marked as NOT_AVAILABLE_CAC_REQUIRED by default */
-#define IEEE80211_CHANNEL_STATUS_NOT_AVAILABLE_CAC_REQUIRED	(0x8)
-
-#define ieee80211_is_chan_available(channel_to_check) \
-	(IEEE80211_CHANNEL_STATUS_AVAILABLE == ic->ic_get_chan_availability_status_by_chan_num(ic, (channel_to_check)))
-#define ieee80211_is_chan_not_available(channel_to_check) \
-	(IEEE80211_CHANNEL_STATUS_NON_AVAILABLE == ic->ic_get_chan_availability_status_by_chan_num(ic, (channel_to_check)))
-#define ieee80211_is_chan_radar_detected(channel_to_check) \
-	(IEEE80211_CHANNEL_STATUS_NOT_AVAILABLE_RADAR_DETECTED == ic->ic_get_chan_availability_status_by_chan_num(ic, (channel_to_check)))
-#define ieee80211_is_chan_cac_required(channel_to_check) \
-	(IEEE80211_CHANNEL_STATUS_NOT_AVAILABLE_CAC_REQUIRED == ic->ic_get_chan_availability_status_by_chan_num(ic, (channel_to_check)))
-
-
 /*
  * 802.11 control state is split into a common portion that maps
  * 1-1 to a physical device and one or more "Virtual AP's" (VAP)
@@ -237,11 +214,6 @@
 	IEEE80211_SCS_CNT_MAX,
 };
 
-enum ieee80211_phy_mode{
-        IEEE80211_11AC_ONLY = 0x1,
-        IEEE80211_11N_ONLY = 0x2
-};
-
 #define	IEEE80211_MAX_TDLS_NODES	16
 
 struct ieee80211_tdls_scs_stats {
@@ -269,7 +241,7 @@
 	uint32_t		scs_thrshld_aging_nor;            /* unit: minute */
 	uint32_t		scs_thrshld_aging_dfsreent;       /* unit: minute */
 	uint16_t		scs_enable;	/* 1 - channel switching can be triggered; 0 - don't change channel */
-	int16_t			scs_debug_enable;
+	uint16_t		scs_debug_enable;
 	uint16_t		scs_smpl_enable;
 	uint8_t			scs_stats_on;	/* 1 - scs stats on; 0 - scs stats off */
 	uint8_t			scs_report_only;
@@ -316,7 +288,6 @@
 	uint16_t		scs_as_tx_time_smth_fctr;
 	uint16_t		scs_cca_idle_smthed;
 	uint16_t		scs_cca_idle_smth_fctr;
-	uint16_t		scs_cca_threshold_type;		/* 0:normal, 1:less sensitive, 2:more sensitive */
 
 	ATH_LIST_HEAD(, ieee80211_tdls_scs_entry) scs_tdls_list[IEEE80211_NODE_HASHSIZE];
 	spinlock_t		scs_tdls_lock;
@@ -628,34 +599,6 @@
 	u_int16_t assocs;
 };
 
-struct offchan_protect {
-	struct timer_list offchan_stop_expire;	/* off channel suspend/resume expiration timer */
-	uint32_t offchan_suspend_cnt;	/* off channel suspending counter */
-	unsigned long offchan_timeout;	/* off channel suspending timeout, in jiffies */
-};
-
-struct sta_dfs_info {
-	struct timer_list sta_radar_timer;
-	bool	sta_dfs_radar_detected_timer;
-	int	sta_dfs_radar_detected_channel;
-	unsigned long	sta_dfs_tx_chan_close_time;
-	uint8_t	sta_dfs_strict_mode;
-	bool	sta_dfs_strict_msr_cac;
-	bool	allow_measurement_report;
-};
-
-struct ieee80211_vopt_info {
-	uint8_t state;
-	uint8_t	cur_state;
-	uint8_t	bf;
-	uint8_t	bbf;
-	uint8_t	pppc;
-	uint8_t airfair;
-	uint32_t scs;
-	uint32_t ocac;
-	uint32_t qtm;
-};
-
 struct ieee80211com {
 	/* MATS FIX The member ic_dev is not used in QDRV and should be removed */
 	struct net_device *ic_dev;		/* associated device */
@@ -670,7 +613,6 @@
 	struct ifmedia ic_media;		/* interface media config */
 	u_int8_t ic_myaddr[IEEE80211_ADDR_LEN];
 	struct timer_list ic_inact;		/* mgmt/inactivity timer */
-	struct offchan_protect ic_offchan_protect;
 
 	uint32_t ic_ver_sw;
 	uint16_t ic_ver_hw;
@@ -708,7 +650,6 @@
 	u_int16_t		ic_uapsdmaxtriggers; /* max triggers that could arrive */
 	u_int8_t		ic_coverageclass; /* coverage class */
 	int8_t			ic_pwr_adjust_scancnt; /* Num of scans after which gain settings toggle */
-	uint32_t		ic_bcn_hang_timeout; /* Beacon hang timeout */
 
 	int rts_cts_prot; /* RTS-CTS protection support */
 
@@ -737,11 +678,10 @@
 	struct ieee80211_scs ic_scs; /* SCS related information */
 	struct delayed_work ic_scs_sample_work;	/* SCS (ACI/CCI Detection and Mitigation) workqueue */
 	struct ieee80211_ocac ic_ocac; /* OCAC related information*/
-	uint32_t ic_11n_40_only_mode;
-	uint16_t ic_vht_opmode_notif;	/* Override OpMode Notification IE, for WFA Testbed */
-	uint8_t ic_non_ht_sta;
-	uint8_t ic_ht_20mhz_only_sta;
-	uint8_t ic_non_ht_non_member;
+	u_int8_t ic_non_ht_sta;
+	u_int8_t ic_ht_20mhz_only_sta;
+	u_int8_t ic_non_ht_non_member;
+	u_int32_t ic_11n_40_only_mode;
 	uint8_t ic_pppc_select_enable;
 	uint8_t ic_pppc_select_enable_backup;
 	uint8_t ic_pppc_step_db;
@@ -759,9 +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;
-	uint8_t ic_dfs_csa_cnt;
-	uint8_t ic_weachan_cac_allowed;
 
 	/*
 	 * Channel state:
@@ -789,11 +728,22 @@
 	struct ieee80211req_csw_record	ic_csw_record;	/* channel switch record */
 	struct ieee80211_chan_occupy_record ic_chan_occupy_record;
 	uint32_t ic_csw_reason;				/* reason for the last channel switch */
-	u_int8_t ic_csw_mac[IEEE80211_ADDR_LEN];	/* client mac addr when SCS channel switch */
 	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 */
@@ -808,7 +758,6 @@
 	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_vopt_info ic_vopt;
 
 	struct ieee80211_channel *ic_curchan;	/* current channel */
 	struct ieee80211_channel *ic_bsschan;	/* bss channel */
@@ -905,7 +854,6 @@
 	u_int8_t ic_cca_chan;			/* channel of cca measurement */
 
 	u_int8_t ic_ieee_alt_chan;		/* if not zero jump to this channel if radar is detected */
-	u_int8_t ic_ieee_best_alt_chan;		/* tracks best alternate chan to fast-switch into if radar is detected */
 	u_int32_t ic_non_occupancy_period;	/* radar non-occupancy period. */
 
 	/* boot time CAC*/
@@ -920,8 +868,7 @@
 
 	u_int32_t ic_rx_agg_timeout;
 	u_int32_t ic_ndpa_dur;
-	u_int32_t ic_su_txbf_pkt_cnt;
-	u_int32_t ic_mu_txbf_pkt_cnt;
+	u_int32_t ic_txbf_pkt_cnt;
 	u_int32_t ic_tx_max_ampdu_size;
 
 	u_int16_t ic_mu_debug_level;
@@ -932,13 +879,6 @@
 	u_int8_t use_non_ht_duplicate_for_mu;
 	u_int8_t rx_bws_support_for_mu_ndpa;
 
-	u_int8_t cca_fix_disable;
-	u_int8_t auto_cca_enable;
-	u_int8_t ic_opmode_bw_switch_en;
-
-	struct muc_tx_stats *ic_muc_tx_stats;
-
-
 	/* virtual ap create/delete */
 	struct ieee80211vap *(*ic_vap_create)(struct ieee80211com *,
 		const char *, int, int, int, struct net_device *);
@@ -1055,15 +995,10 @@
 
 
 	void (*ic_mark_channel_availability_status)(struct ieee80211com *ic, struct ieee80211_channel *chan, uint8_t usable);
-
-	void (*ic_set_chan_availability_status_by_chan_num)(struct ieee80211com *ic,
-			struct ieee80211_channel *chan, uint8_t usable);
-	int (*ic_get_chan_availability_status_by_chan_num)(struct ieee80211com *ic, struct ieee80211_channel *chan);
-
 	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);
+	void (*ic_dump_available_channels)(struct ieee80211com *ic, const char *offending_func);
 
-	int (*ic_ap_next_cac)(struct ieee80211com *ic, struct ieee80211vap *vap,
+	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);
@@ -1073,9 +1008,6 @@
 	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);
-	bool (*ic_chan_compare_equality)(struct ieee80211com *ic,
-					struct ieee80211_channel *curr_chan,
-					struct ieee80211_channel *new_chan);
 
 
 	/* DFS select channel */
@@ -1130,8 +1062,6 @@
 			const struct ieee80211_qvsp_strm_id *strm_id, struct ieee80211_qvsp_strm_dis_attr *attr);
 	void (*ic_vsp_change_stamode)(struct ieee80211com *ic, uint8_t stamode);
 	void (*ic_vsp_configure)(struct ieee80211com *ic, uint32_t index, uint32_t value);
-	void (*ic_vsp_set)(struct ieee80211com *ic, uint32_t index, uint32_t value);
-	int (*ic_vsp_get)(struct ieee80211com *ic, uint32_t index, uint32_t *value);
 
 	/* Callbacks at AP to send commands to sta */
 	void (*ic_vsp_cb_strm_ctrl)(void *token, struct ieee80211_node *node, uint8_t strm_state,
@@ -1237,6 +1167,10 @@
 
 	/* 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;
@@ -1244,27 +1178,11 @@
 	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*/
-	int32_t ic_neighbor_count;	/* Neighbor APs' count */
-	uint8_t ic_neighbor_cnt_sparse; /* Threshold of neighbor AP count when it's sparse */
-	uint8_t ic_neighbor_cnt_dense;	/* Threshold of neighbor AP count when it's dense */
 
 	/* 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);
-	uint32_t (*ic_rx_airtime) (const struct ieee80211_node *ni);
-	uint32_t (*ic_rx_accum_airtime) (const struct ieee80211_node *ni);
-	/* mu group update callback */
-	void	(*ic_mu_group_update)(struct ieee80211com *ic, struct qtn_mu_group_update_args *state);
-
-	/* sync rx reorder window on receiving BAR
-	 * 0 - disabled
-	 * 1 - enabled for QTN devices only
-	 * 2 - enabled for all devices
-	 */
-	uint8_t ic_rx_bar_sync;
-	uint8_t bb_deafness_war_disable;
-	struct sta_dfs_info sta_dfs_info;
 };
 
 static __inline__ uint32_t ieee80211_pm_period_tu(const struct ieee80211com *ic)
@@ -1587,7 +1505,6 @@
 	const struct ieee80211_aclator *iv_acl;	/* aclator glue */
 	void *iv_as;				/* private aclator state */
 
-	struct ieee80211_beacon_param_t *param;		/* beacon ie arguments list */
 	struct timer_list iv_swbmiss;		/* software beacon miss timer */
 	u_int16_t iv_swbmiss_period;		/* software beacon miss timer period */
 	struct timer_list iv_swberp;		/* software obss erp protection check timer */
@@ -1673,8 +1590,6 @@
 	ATH_LIST_HEAD(, ieee80211_extender_wds_info) iv_extender_wds_hash[IEEE80211_NODE_HASHSIZE];
 
 	uint8_t                 iv_tx_amsdu;            /* Enable/disable A-MSDU  */
-	uint8_t			iv_tx_amsdu_11n;	/* Enable/disable A-MSDU for 11n nodes */
-	uint8_t			iv_tx_max_amsdu;	/* Max TX A-MSDU */
 
 	/* 802.11u related */
 	uint8_t			interworking;           /* 1 - Enabled, 0 - Disabled */
@@ -1695,7 +1610,6 @@
 	spinlock_t		sample_sta_lock;
 	struct list_head	sample_sta_list;
 	struct bcast_pps_info	bcast_pps;
-	uint8_t			iv_11ac_and_11n_flag;	/* 1 - IEEE80211_AC_ONLY, 2 - IEEE80211_N_ONLY */
 };
 MALLOC_DECLARE(M_80211_VAP);
 
@@ -1830,28 +1744,13 @@
 static inline int
 ieee80211_is_repeater(struct ieee80211com *ic)
 {
+
 	if (!(ic->ic_flags_ext & IEEE80211_FEXT_REPEATER))
 		return 0;
 
 	return 1;
 }
 
-static inline int
-ieee80211_is_repeater_associated(struct ieee80211com *ic)
-{
-	struct ieee80211vap *vap;
-
-	if (!ieee80211_is_repeater(ic))
-		return 0;
-
-	/* 1st VAP is for STA interface */
-	vap = TAILQ_FIRST(&ic->ic_vaps);
-	if (vap && vap->iv_state == IEEE80211_S_RUN)
-		return 1;
-
-	return 0;
-}
-
 #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)
 #define IEEE80211_COM_UAPSD_ENABLED(_ic)	((_ic)->ic_flags_ext & IEEE80211_FEXT_UAPSD)
@@ -2041,10 +1940,6 @@
 	ifm_change_cb_t, ifm_stat_cb_t);
 void ieee80211_param_to_qdrv(struct ieee80211vap *vap,
 	int param, int value, unsigned char *data, int len);
-void ieee80211_param_from_qdrv(struct ieee80211vap *vap,
-	int param, int *value, unsigned char *data, int *len);
-int ieee80211_param_scs_set(struct net_device *dev, struct ieee80211vap *vap, u_int32_t value);
-int ieee80211_param_ocac_set(struct net_device *dev, struct ieee80211vap *vap, u_int32_t value);
 void get_node_info(void *s, struct ieee80211_node *ni);
 void get_node_assoc_state(void *s, struct ieee80211_node *ni);
 void get_node_ver(void *s, struct ieee80211_node *ni);
@@ -2055,7 +1950,6 @@
 void ieee80211_channel_switch_post(struct ieee80211com *ic);
 void ieee80211_eap_output(struct net_device *dev, const void *eap_msg, int eap_msg_len);
 int ieee80211_blacklist_check(struct ieee80211_node *ni);
-void ieee80211_remove_node_blacklist_timeout(struct ieee80211_node *ni);
 int ieee80211_pwr_adjust(struct ieee80211vap *vap, int rxgain_state);
 void ieee80211_pm_queue_work(struct ieee80211com *ic);
 void ieee80211_beacon_interval_set(struct ieee80211com *ic, int value);
@@ -2075,7 +1969,6 @@
 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);
-void ieee80211_scs_adjust_cca_threshold(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);
@@ -2085,7 +1978,6 @@
 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);
-void ieee80211_update_bw_capa(struct ieee80211vap *vap, int bw);
 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);
@@ -2099,7 +1991,7 @@
 
 void ieee80211_finish_csa(unsigned long arg);
 int ieee80211_enter_csa(struct ieee80211com *ic, struct ieee80211_channel *chan,
-		void (*finish_csa)(unsigned long arg), uint32_t reason,
+		void (*finish_csa)(unsigned long arg), uint8_t reason,
 		uint8_t csa_count, uint8_t csa_mode, uint32_t flag);
 void ieee80211_obss_scan_timer(unsigned long arg);
 void ieee80211_start_obss_scan_timer(struct ieee80211vap *vap);
@@ -2117,13 +2009,6 @@
 		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);
-
-void ieee80211_off_channel_timeout(unsigned long arg);
-void ieee80211_off_channel_resume(struct ieee80211vap *vap);
-void ieee80211_off_channel_suspend(struct ieee80211vap *vap, uint32_t timeout);
-int get_max_supported_chwidth(struct ieee80211_node *ni);
-uint8_t recalc_opmode(struct ieee80211_node *ni, uint8_t opmode);
-
 /*
  * Key update synchronization methods.  XXX should not be visible.
  */
@@ -2146,16 +2031,6 @@
 
 	return 1;
 }
-
-static __inline int
-is_ieee80211_chan_valid(struct ieee80211_channel *chan)
-{
-	if (!chan || (chan == IEEE80211_CHAN_ANYC))
-		return 0;
-
-	return 1;
-}
-
 /*
  * XXX these need to be here for IEEE80211_F_DATAPAD
  */
@@ -2196,23 +2071,6 @@
 	return size;
 }
 
-static __inline int
-ieee80211_tx_amsdu_disabled(struct ieee80211_node *ni)
-{
-	struct ieee80211vap *vap = ni->ni_vap;
-
-	if (!vap->iv_tx_amsdu)
-		return 1;
-
-	if (!IEEE80211_NODE_IS_VHT(ni) &&
-			IEEE80211_NODE_IS_HT(ni) &&
-			!vap->iv_tx_amsdu_11n)
-		return 1;
-
-	return 0;
-}
-
-
 #define IEEE80211_MSG_11N	0x80000000	/* 11n mode debug */
 #define	IEEE80211_MSG_DEBUG	0x40000000	/* IFF_DEBUG equivalent */
 #define	IEEE80211_MSG_DUMPPKTS	0x20000000	/* IFF_LINK2 equivalent */
diff --git a/include/qtn/auc_debug_stats.h b/include/qtn/auc_debug_stats.h
index fd26ce5..7323ddc 100755
--- a/include/qtn/auc_debug_stats.h
+++ b/include/qtn/auc_debug_stats.h
@@ -134,7 +134,6 @@
 	uint32_t tx_ctl_pkt_hbm_alloc_fails;
 	uint32_t tx_ctl_pkt_alloc_descr_fails;
 	uint32_t tx_bar_alloc_ctl_pkt_fails;
-	uint32_t tx_valid_bit_not_set;
 
 	uint32_t wmm_ps_tx;
 	uint32_t wmm_ps_tx_null_frames;
diff --git a/include/qtn/lhost_muc_comm.h b/include/qtn/lhost_muc_comm.h
index 2fc2cce..1c147f6 100644
--- a/include/qtn/lhost_muc_comm.h
+++ b/include/qtn/lhost_muc_comm.h
@@ -17,7 +17,6 @@
 #include "muc_txrx_stats.h"
 #include "qtn/qvsp_common.h"
 #include "qtn/shared_defs.h"
-#include "qtn/txbf_common.h"
 
 /* packed definitions for each compiler */
 #if defined(MUC_BUILD) || defined(DSP_BUILD) || defined(AUC_BUILD)
@@ -327,9 +326,6 @@
 #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_MU_GROUP_UPDATE	65	/* Update MU groups: nodes and qmats */
-#define IOCTL_DEV_FLUSH_DATA		66	/* periodically flush data */
-#define IOCTL_DEV_GET_TX_MAXAMSDU	67	/* get the TX max msdu size */
 
 #define IOCTL_DEV_CMD_MEMDBG_DUMP	1	/* Dump MuC memory */
 #define IOCTL_DEV_CMD_MEMDBG_DUMPCFG	2	/* Configuration for dumping MuC memory */
@@ -412,7 +408,7 @@
 	uint32_t	post_notification_tu;	/* post channel change notification */
 	uint32_t	freq_band;		/* freqency band info */
 	uint32_t	channel;		/* channel to switch to */
-	uint8_t		sta_dfs_strict_mode;
+
 #define QTN_CSA_STATUS_MUC_SCHEDULED		0x00000001
 #define QTN_CSA_STATUS_MUC_ERROR_SCHED		0x00000010
 #define QTN_CSA_STATUS_MUC_PRE			0x00000002
@@ -546,9 +542,6 @@
 	uint32_t	cca_tx;
 	uint32_t	cca_intf;
 	uint32_t	cca_try;
-	uint32_t	cca_pri;
-	uint32_t	cca_sec20;
-	uint32_t	cca_sec40;
 	uint32_t	bcn_rcvd;
 	uint32_t	crc_err;
 	uint32_t	lpre_err;
@@ -556,18 +549,6 @@
 };
 
 #define QTN_SCS_MAX_OC_INFO	32
-struct qtn_scs_data_history {
-#define QTN_SCS_FILTER_WINDOW_SZ	5
-#define QTN_SCS_FILTER_MEDIAN_IDX	(QTN_SCS_FILTER_WINDOW_SZ / 2)
-	uint32_t idx;
-	uint32_t buffer[QTN_SCS_FILTER_WINDOW_SZ];
-};
-
-struct qtn_scs_stats_history {
-	struct qtn_scs_data_history lp_errs[QTN_SCS_MAX_OC_INFO];
-	struct qtn_scs_data_history sp_errs[QTN_SCS_MAX_OC_INFO];
-};
-
 struct qtn_scs_oc_info {
 	uint32_t	off_channel;
 	uint32_t	off_chan_bw_sel;
@@ -578,9 +559,6 @@
 	uint32_t	off_chan_crc_errs;
 	uint32_t	off_chan_sp_errs;
 	uint32_t	off_chan_lp_errs;
-	uint32_t	off_chan_cca_pri;
-	uint32_t	off_chan_cca_sec;
-	uint32_t	off_chan_cca_sec40;
 };
 /* Smart channel selection data shared between Lhost and MuC */
 struct qtn_scs_info {
@@ -592,9 +570,6 @@
 	uint32_t	cca_idle;
 	uint32_t	cca_tx;
 	uint32_t	cca_interference;
-	uint32_t	cca_pri;
-	uint32_t	cca_sec20;
-	uint32_t	cca_sec40;
 	uint32_t	beacon_recvd;
 	uint32_t	tx_usecs;
 	uint32_t	rx_usecs;
@@ -605,7 +580,6 @@
 	uint32_t	valid_index; /* 0 or 1 */
 	struct qtn_scs_info scs_info[2];
 	struct qtn_scs_scan_info scan_info[IEEE80211_CHAN_MAX];
-	struct qtn_scs_stats_history stats_history;
 };
 
 struct qtn_remain_chan_info {
@@ -914,7 +888,6 @@
 	struct wmm_params	wmm_params[WME_NUM_AC];
 	uint8_t	ni_implicit_ba_rx; /* The RX side of the implicit BA. Zero for no implicit RX BA */
 	uint8_t	ni_implicit_ba_tx; /* The TX side of the implicit BA. Zero for no implicit TX BA */
-	uint16_t	ni_raw_bintval;		/* raw beacon interval */
 	uint16_t	ni_implicit_ba_size; /* Size of the implicit BAs */
 	uint8_t	ni_qtn_ie_flags;
 	uint8_t ni_vendor;
@@ -939,15 +912,17 @@
 
 struct qtn_beacon_args
 {
-	struct wmm_params		wmm_params[WME_NUM_AC];
-	uint32_t			bintval;
-	uint32_t			bo_tim_len;
-	uint32_t			bo_htcap;
-	uint32_t			bo_htinfo;
-	uint32_t			bo_vhtcap;
-	uint32_t			bo_vhtop;
-	uint32_t			bc_ie_head;		/* Beacon ie link list head */
-	uint32_t			bc_ie_buf_start;	/* Beacon ie buffer start for MuC */
+	uint32_t	pkt_data;
+	struct wmm_params	wmm_params[WME_NUM_AC];
+	uint32_t	bintval;
+	uint32_t	bo_tim;
+	uint32_t	bo_tim_len;
+	uint32_t	bo_tpc_rep;
+	uint32_t	bo_chanswitch;
+	uint32_t	bo_htcap;
+	uint32_t	bo_htinfo;
+	uint32_t	bo_vhtcap;
+	uint32_t	bo_vhtop;
 };
 
 struct qtn_key {
@@ -994,13 +969,6 @@
 
 #define MUC_RXSTATUS_DONE		0x1
 
-#define MUC_RXSTATUS_MIC_ERR		0x00000002
-#define MUC_RXSTATUS_MIC_ERR_S		1
-#define MUC_RXSTATUS_NCIDX		0x00000FFC
-#define MUC_RXSTATUS_NCIDX_S		2
-#define MUC_RXSTATUS_RXLEN		0xFFFF0000
-#define MUC_RXSTATUS_RXLEN_S		16
-
 struct qtn_link_margin_info {
 	uint32_t	mcs;
 	uint32_t	bw;
@@ -1042,26 +1010,5 @@
 	uint32_t upd_cnt;
 	int32_t rank;
 };
-
-enum grp_op {
-	MU_GRP_NONE = 0,
-	MU_GRP_INST,
-	MU_GRP_DELE,
-};
-
-struct qtn_mu_group_update_args {
-	enum grp_op op;
-	struct upd_grp {
-		int grp_id;
-		unsigned int ap_devid;
-		uint8_t ap_macaddr[IEEE80211_ADDR_LEN];
-		struct upd_nodes {
-			int as_sta;
-			struct ieee80211_vht_mu_grp grp;
-			uint8_t macaddr[IEEE80211_ADDR_LEN];
-		} nodes[QTN_MU_NODES_PER_GROUP];
-	} groups[QTN_MU_QMAT_MAX_SLOTS];
-};
-
 #endif	// _LHOST_MUC_COMM_H
 
diff --git a/include/qtn/mproc_sync.h b/include/qtn/mproc_sync.h
index 8c5e3f5..5f1f9ae 100644
--- a/include/qtn/mproc_sync.h
+++ b/include/qtn/mproc_sync.h
@@ -126,20 +126,30 @@
 RUBY_INLINE int
 _qtn_mproc_3way_tqe_sem_down(enum topaz_mproc_tqe_sem_id cpuid)
 {
-	const uint32_t  set_value = ((cpuid << QTN_MULTI_PROCESSOR_SEMA_KEY_SHIFT) | cpuid);
-	uint32_t        sem_set_cnt = 0;
+	uint32_t	sem_get_cnt = 0;
+	uint32_t	value;
 
+	value = ((cpuid << QTN_MULTI_PROCESSOR_SEMA_KEY_SHIFT) | cpuid);
 	do {
 		/*
 		 * 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, set_value);
-		if ((qtn_mproc_sync_mem_read(TOPAZ_MPROC_SEMA) &
-				QTN_MULTI_PROCESS_TQE_SEMA) == cpuid) {
+		qtn_mproc_sync_mem_write(TOPAZ_MPROC_SEMA, value);
+		value = qtn_mproc_sync_mem_read(TOPAZ_MPROC_SEMA);
+
+		if ((value & QTN_MULTI_PROCESS_TQE_SEMA) == cpuid)
 			return 1;
-		}
-	} while (++sem_set_cnt < TQE_SEMA_GET_MAX);
+		/*
+		 * 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;
 }
diff --git a/include/qtn/muc_phy_stats.h b/include/qtn/muc_phy_stats.h
index c0734b6..396a796 100644
--- a/include/qtn/muc_phy_stats.h
+++ b/include/qtn/muc_phy_stats.h
@@ -72,12 +72,6 @@
 	uint32_t acks;
 	uint32_t tx_airtime;
 	uint32_t tx_accum_airtime;
-	/*
-	 * The number of data packets transmitted through
-	 * wireless media for each traffic category(TC).
-	 */
-#define WMM_AC_NUM 4
-	uint32_t tx_sent_data_msdu[WMM_AC_NUM];
 };
 
 struct qtn_node_shared_stats_rx {
@@ -102,8 +96,6 @@
 	uint32_t pkts_cum;
 	uint32_t inv_phy_rate_smoothed;
 	uint32_t cost;
-	uint32_t rx_airtime;
-	uint32_t rx_accum_airtime;
 };
 
 /**
diff --git a/include/qtn/muc_txrx_stats.h b/include/qtn/muc_txrx_stats.h
index 2445a86..e103114 100644
--- a/include/qtn/muc_txrx_stats.h
+++ b/include/qtn/muc_txrx_stats.h
@@ -86,7 +86,63 @@
 	 * The number of packets held, waiting for BA to complete.
 	 */
 	u_int32_t	pkt_push_back;
+	u_int32_t	tx_timeout;
 
+	/**
+	 * This counter shows the number of MPDUs or AMPDUs which needed to be retried
+	 * by the hardware.
+	 *
+	 * For an MPDU, it indicates that no ACK was received from the peer.
+	 *
+	 * For an AMPDU, it indicates that no BACK was received from the peer.
+	 * In this case, all subframes within the aggregate failed, and the hardware
+	 * has requeued the entire aggregate for retransmission.
+	 *
+	 * If all hardware retries fail, the packet is returned back to the MAC for
+	 * software retries.
+	 *
+	 * \sa tx_sw_retry.
+	 */
+	u_int32_t	tx_hw_retry;
+
+	/**
+	 * This counter shows the number of non-aggregate MPDUs that have been resent
+	 * by software for retransmission after an initial transmission failure.
+	 *
+	 * Transmission failure is when no ACK has been received from the peer after the
+	 * configured number of hardware retries.
+	 */
+	u_int32_t	tx_sw_retry_noagg;
+
+	/**
+	 * This counter shows the number of AMPDUs that have been repackaged
+	 * by software for retransmission after an initial transmission failure.
+	 *
+	 * Transmission failure is when an AMPDU fails to receive a full block
+	 * ACK (some subframes are incorrectly received).  The repackaged AMPDU
+	 * contains a subset of the subframes from the original AMPDU.
+	 */
+	u_int32_t	tx_sw_retry;
+	u_int32_t	tx_xretry;
+	u_int32_t	tx_pspoll_deagg;
+
+	/**
+	 * This counter shows the number of packets (AMPDU subframes) for which all retry
+	 * attempts have failed.
+	 *
+	 * \note This counter represents genuine packet loss.
+	 */
+	u_int32_t	tx_xattempts;
+
+	/**
+	 * This counter shows the number of non-aggregate MPDUs for which all retry
+	 * attempts have failed.
+	 *
+	 * \note This counter represents genuine packet loss.
+	 */
+	u_int32_t	tx_xattempts_noagg;
+	u_int32_t	tx_done_failed;
+	u_int32_t	tx_cca_defer_cnt;
 	u_int32_t	pkt_to_hw;
 	u_int32_t	pkt_to_hw_deferred;
 	u_int32_t	fd_absent;
@@ -96,7 +152,13 @@
 	u_int32_t	pkt_add_q;
 	u_int32_t	pkt_qtn_hardstart;
 	u_int32_t	tx_reserved;
+	u_int32_t	tx_released;
 	u_int32_t	tx_reserve_fail;
+	u_int32_t	tx_release_err;
+	u_int32_t	tx_mu_reserved;
+	u_int32_t	tx_mu_released;
+	u_int32_t	tx_mu_reserve_fail;
+	u_int32_t	tx_mu_release_err;
 	u_int32_t	txalert_mu_ndp_update;
 	u_int32_t	txalert_mu_rpt_poll;
 	u_int32_t	txalert_mu_queue_full;
@@ -110,6 +172,8 @@
 	u_int32_t	txalert_ndp_update;
 	u_int32_t	tx_ndp_q_occupied;
 	u_int32_t	tx_ndp_start;
+	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;
@@ -141,6 +205,10 @@
 	u_int32_t	ba_del;
 	u_int32_t	fd_free_nodeclean;
 	u_int32_t	msdu_expired;
+	u_int32_t	last_ack_ssq;
+	u_int32_t	last_sent_seq;
+	u_int32_t	ampdu_subframe_failure;
+	u_int32_t	ampdu_subframe_done;
 	u_int32_t	tx_window_locked;
 	u_int32_t	tx_window_failed;
 	u_int32_t	tx_restrict_probe;
@@ -225,11 +293,6 @@
 	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	mu_group_delete;
-	uint32_t	mu_group_install;
-	uint32_t	mu_group_rate_node_updates;
-	uint32_t	mu_update_rates_mu;
-	uint32_t	mu_update_rates_su;
 	uint32_t	autocs_sample_bits;
 	uint32_t	autocs_adjust_bits;
 	uint32_t	autocs_step_size;
@@ -754,7 +817,6 @@
 	uint32_t	rxq_desc_chain_empty[QTN_FW_WMAC_RX_QNUM];
 	uint32_t	rx_data_last_seqfrag;
 	uint32_t	rx_data_last_ip_id;
-	uint32_t	rx_opmode_notify;
 
 	/**
 	 * This counter is incremented once per packet which is sent via the
diff --git a/include/qtn/qdrv_sch.h b/include/qtn/qdrv_sch.h
index e19268d..e761234 100644
--- a/include/qtn/qdrv_sch.h
+++ b/include/qtn/qdrv_sch.h
@@ -134,6 +134,63 @@
 	return wme_ac;
 }
 
+static inline uint32_t qdrv_sch_classify_ipv4(struct sk_buff *skb, struct iphdr *iphdr_p)
+{
+	int wme_ac;
+
+	wme_ac = qdrv_sch_tclass_to_ac(iphdr_p->tos);
+
+	QTN_SKB_CB_IPPROTO(skb) = iphdr_p->protocol;
+
+	return wme_ac;
+}
+
+#ifdef CONFIG_IPV6
+static inline uint32_t qdrv_sch_classify_ipv6(struct sk_buff *skb, struct ipv6hdr *ipv6hdr_p)
+{
+	int wme_ac;
+	uint8_t t_class = 0;
+	uint8_t nexthdr;
+
+	t_class = (ipv6hdr_p->priority << 4) | (ipv6hdr_p->flow_lbl[0] >> 4);
+	wme_ac = qdrv_sch_tclass_to_ac(t_class);
+
+	iputil_v6_skip_exthdr(ipv6hdr_p, sizeof(struct ipv6hdr), &nexthdr,
+				(skb->len - ((uint8_t *)ipv6hdr_p - skb->data)), NULL, NULL);
+	QTN_SKB_CB_IPPROTO(skb) = nexthdr;
+
+	return wme_ac;
+}
+#endif
+
+static inline uint32_t qdrv_sch_classify_vlan_tag(struct sk_buff *skb)
+{
+	int wme_ac = WME_AC_BE;
+	struct vlan_ethhdr *vlan_eth = (struct vlan_ethhdr *) skb->data;
+	uint8_t v_pri;
+
+	v_pri = (ntohs(get_unaligned(&vlan_eth->h_vlan_TCI)) >> VLAN_PRI_SHIFT) & VLAN_PRI_MASK;
+	wme_ac = qdrv_sch_tos2ac[v_pri];
+
+	return wme_ac;
+}
+
+/*
+ * Get the max priority between vlan priority and 11p priority
+ */
+static inline uint8_t
+qdrv_sch_get_max_priority(uint8_t vlan_ac, uint8_t ip_ac)
+{
+	uint8_t max_ac = WME_AC_BE;
+
+	if ((vlan_ac <= WME_AC_BK) && (ip_ac <= WME_AC_BK))
+		max_ac = min(vlan_ac, ip_ac);
+	else
+		max_ac = max(vlan_ac, ip_ac);
+
+	return max_ac;
+}
+
 static inline int
 qdrv_sch_classify_ctrl(struct sk_buff *skb)
 {
@@ -155,71 +212,14 @@
 	return 0;
 }
 
-static inline uint8_t qdrv_sch_mask_gettid(uint8_t ifindex, uint8_t dscp)
-{
-	uint8_t index;
-	uint32_t curval;
-	uint8_t	tid;
-
-	index = (dscp >> 1);
-	curval = qdrv_sch_dscp2tid[ifindex][index];
-
-	if (dscp & 0x1)
-		tid  = (curval & 0xf);
-	else
-		tid = (curval >> QDRV_IP_DSCP_MAPPING_SHIFT) & 0xf;
-
-	return tid;
-}
-
-/* Multiple VLAN tags are not currently supported */
-static inline void topaz_tqe_vlan_gettid(void *data, uint8_t *tid, uint8_t *vlan_index)
-{
-	struct vlan_ethhdr *vhd;
-	uint16_t vid = 0;
-	uint8_t ip_dscp = 0;
-	int i;
-	const void *iphdr = NULL;
-	const struct ether_header *eh = data;
-	const uint16_t *ether_type = &eh->ether_type;
-
-	*vlan_index = 0;
-	if (*ether_type == __constant_htons(ETH_P_8021Q)) {
-		ether_type += 2;
-		vhd = data;
-		vid = __constant_htons(vhd->h_vlan_TCI) & VLAN_VID_MASK;
-		for (i = 0; i < qdrv_vap_vlan_max; i++) {
-			if (qdrv_sch_vlan2index[i] == vid) {
-				*vlan_index = i;
-				break;
-			}
-		}
-	}
-
-	iphdr = ether_type + 1;
-	if (*ether_type == __constant_htons(ETH_P_IP)) {
-		const struct qtn_ipv4 *ipv4 = (const struct qtn_ipv4 *) iphdr;
-		ip_dscp = IP_DSCP(ipv4->dscp);
-	} else if (*ether_type == __constant_htons(ETH_P_IPV6)) {
-		const struct qtn_ipv6 *ipv6 = (const struct qtn_ipv6 *) iphdr;
-		ip_dscp = qtn_ipv6_tclass(ipv6);
-	} else if ((*ether_type == __constant_htons(ETH_P_ARP)) || (*ether_type == __constant_htons(ETH_P_PAE))) {
-		*tid = WME_AC_TO_TID(WMM_AC_VO);
-		return;
-	} else {
-		*tid = WME_AC_TO_TID(WMM_AC_BE);
-		return;
-	}
-
-	*tid = qdrv_sch_mask_gettid(*vlan_index, ip_dscp);
-}
+#define qdrv_vlan_tx_tag_present(__skb)      ((__skb)->vlan_tci)
 
 static inline void
 qdrv_sch_classify(struct sk_buff *skb, uint16_t ether_type, uint8_t *data_start)
 {
+	struct iphdr *iphdr_p = (struct iphdr *)data_start;
 	uint8_t wme_ac = WME_AC_BE;
-	uint8_t tid;
-	uint8_t vlan_index;
+	uint8_t vlan_wme_ac = WME_AC_BE;
 
 	if (M_FLAG_ISSET(skb, M_CLASSIFY)) {
 		return;
@@ -228,33 +228,28 @@
 
 	QTN_SKB_CB_ETHERTYPE(skb) = ether_type;
 
-	if (ether_type == __constant_htons(ETH_P_IP)) {
-		struct iphdr *iphdr_p = (struct iphdr *)data_start;
-
+	if (likely(ether_type == __constant_htons(ETH_P_IP))) {
 		if ((skb->len >= (data_start - skb->data) + sizeof(*iphdr_p)) &&
-				(iphdr_p->version == 4))
-			QTN_SKB_CB_IPPROTO(skb) = iphdr_p->protocol;
+				(iphdr_p->version == 4)) {
+			wme_ac = qdrv_sch_classify_ipv4(skb, iphdr_p);
+		}
 	}
+
 #ifdef CONFIG_IPV6
-	else if (ether_type == __constant_htons(ETH_P_IPV6)) {
-		struct ipv6hdr *ipv6hdr_p = (struct ipv6hdr *)data_start;
-
+	if (ether_type == __constant_htons(ETH_P_IPV6)) {
 		if (skb->len >= (data_start - skb->data) + sizeof(struct ipv6hdr) &&
-				(ipv6hdr_p->version == 6)) {
-			uint8_t nexthdr;
-
-			iputil_v6_skip_exthdr(ipv6hdr_p, sizeof(struct ipv6hdr), &nexthdr,
-				(skb->len - ((uint8_t *)ipv6hdr_p - skb->data)), NULL, NULL);
-			QTN_SKB_CB_IPPROTO(skb) = nexthdr;
+				(iphdr_p->version == 6)) {
+			wme_ac = qdrv_sch_classify_ipv6(skb, (struct ipv6hdr *)data_start);
 		}
 	}
 #endif
-
 	if (qdrv_sch_classify_ctrl(skb)) {
 		wme_ac = QTN_AC_MGMT;
-	} else {
-		topaz_tqe_vlan_gettid(skb->data, &tid, &vlan_index);
-		wme_ac = TID_TO_WMM_AC(tid);
+	}
+
+	if (qdrv_vlan_tx_tag_present(skb)) {
+		vlan_wme_ac = qdrv_sch_classify_vlan_tag(skb);
+		wme_ac = qdrv_sch_get_max_priority(vlan_wme_ac, wme_ac);
 	}
 
 	skb->priority = wme_ac;
@@ -410,6 +405,64 @@
 #endif
 }
 
+static inline uint8_t qdrv_sch_mask_gettid(uint8_t ifindex, uint8_t dscp)
+{
+	uint8_t index;
+	uint32_t curval;
+	uint8_t	tid;
+
+	index = (dscp >> 1);
+	curval = qdrv_sch_dscp2tid[ifindex][index];
+
+	if (dscp & 0x1)
+		tid  = (curval & 0xf);
+	else
+		tid = (curval >> QDRV_IP_DSCP_MAPPING_SHIFT) & 0xf;
+
+	return tid;
+}
+
+/* Multiple VLAN tags are not currently supported */
+static inline void topaz_tqe_vlan_gettid(void *data, uint8_t *tid, uint8_t *vlan_index)
+{
+	struct vlan_ethhdr *vhd;
+	uint16_t vid = 0;
+	uint8_t ip_dscp = 0;
+	int i;
+	const void *iphdr = NULL;
+	const struct ether_header *eh = bus_to_virt((uintptr_t) data);
+	const uint16_t *ether_type = &eh->ether_type;
+
+	*vlan_index = 0;
+	if (*ether_type == __constant_htons(ETH_P_8021Q)) {
+		ether_type += 2;
+		vhd = bus_to_virt((uintptr_t) data);
+		vid = __constant_htons(vhd->h_vlan_TCI) & VLAN_VID_MASK;
+		for (i = 0; i < qdrv_vap_vlan_max; i++) {
+			if (qdrv_sch_vlan2index[i] == vid) {
+				*vlan_index = i;
+				break;
+			}
+		}
+	}
+
+	iphdr = ether_type + 1;
+	if (*ether_type == __constant_htons(ETH_P_IP)) {
+		const struct qtn_ipv4 *ipv4 = (const struct qtn_ipv4 *) iphdr;
+		ip_dscp = IP_DSCP(ipv4->dscp);
+	} else if (*ether_type == __constant_htons(ETH_P_IPV6)) {
+		const struct qtn_ipv6 *ipv6 = (const struct qtn_ipv6 *) iphdr;
+		ip_dscp = qtn_ipv6_tclass(ipv6);
+	} else if ((*ether_type == __constant_htons(ETH_P_ARP)) || (*ether_type == __constant_htons(ETH_P_PAE))) {
+		*tid = WME_AC_TO_TID(WMM_AC_VO);
+		return;
+	} else {
+		*tid = WME_AC_TO_TID(WMM_AC_BE);
+		return;
+	}
+
+	*tid = qdrv_sch_mask_gettid(*vlan_index, ip_dscp);
+}
 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,
diff --git a/include/qtn/qtn_auc_stats_fields.h b/include/qtn/qtn_auc_stats_fields.h
index 070c7ad..2016fc5 100644
--- a/include/qtn/qtn_auc_stats_fields.h
+++ b/include/qtn/qtn_auc_stats_fields.h
@@ -1,235 +1,234 @@
-	{ 0xe510124c, "sleep" },
-	{ 0xe5101284, "jiffies" },
-	{ 0xe51033c8, "IRQ_0" },
-	{ 0xe51033cc, "IRQ_1" },
-	{ 0xe51033d0, "IRQ_2" },
-	{ 0xe51033d4, "IRQ_3" },
-	{ 0xe51033d8, "IRQ_4" },
-	{ 0xe51033dc, "IRQ_5" },
-	{ 0xe51033e0, "IRQ_6" },
-	{ 0xe51033e4, "IRQ_7" },
-	{ 0xe51033e8, "IRQ_8" },
-	{ 0xe51033ec, "IRQ_9" },
-	{ 0xe51033f0, "IRQ_10" },
-	{ 0xe51033f4, "IRQ_11" },
-	{ 0xe51033f8, "IRQ_12" },
-	{ 0xe51033fc, "IRQ_13" },
-	{ 0xe5103400, "IRQ_14" },
-	{ 0xe5103404, "IRQ_15" },
-	{ 0xe5103408, "IRQ_16" },
-	{ 0xe510340c, "IRQ_17" },
-	{ 0xe5103410, "IRQ_18" },
-	{ 0xe5103414, "IRQ_19" },
-	{ 0xe5103424,	"task_alive_counters[0]" },
-	{ 0xe5103428,	"task_alive_counters[1]" },
-	{ 0xe510342c,	"task_alive_counters[2]" },
-	{ 0xe5103430,	"task_alive_counters[3]" },
-	{ 0xe5103434,	"task_alive_counters[4]" },
-	{ 0xe5103438,	"task_alive_counters[5]" },
-	{ 0xe510343c,	"task_alive_counters[6]" },
-	{ 0xe5103440,	"task_alive_counters[7]" },
-	{ 0xe5103444,	"task_alive_counters[8]" },
-	{ 0xe5103448,	"task_alive_counters[9]" },
-	{ 0xe510344c,	"task_alive_counters[10]" },
-	{ 0xe5103450,	"task_alive_counters[11]" },
-	{ 0xe5103454,	"task_alive_counters[12]" },
-	{ 0xe5103458,	"task_alive_counters[13]" },
-	{ 0xe510345c,	"task_alive_counters[14]" },
-	{ 0xe5103460,	"task_alive_counters[15]" },
-	{ 0xe5103464,	"task_alive_counters[16]" },
-	{ 0xe5103468,	"task_alive_counters[17]" },
-	{ 0xe510346c,	"task_alive_counters[18]" },
-	{ 0xe5103470,	"task_alive_counters[19]" },
-	{ 0xe5103474,	"task_false_trigger[0]" },
-	{ 0xe5103478,	"task_false_trigger[1]" },
-	{ 0xe510347c,	"task_false_trigger[2]" },
-	{ 0xe5103480,	"task_false_trigger[3]" },
-	{ 0xe5103484,	"task_false_trigger[4]" },
-	{ 0xe5103488,	"task_false_trigger[5]" },
-	{ 0xe510348c,	"task_false_trigger[6]" },
-	{ 0xe5103490,	"task_false_trigger[7]" },
-	{ 0xe5103494,	"task_false_trigger[8]" },
-	{ 0xe5103498,	"task_false_trigger[9]" },
-	{ 0xe510349c,	"task_false_trigger[10]" },
-	{ 0xe51034a0,	"task_false_trigger[11]" },
-	{ 0xe51034a4,	"task_false_trigger[12]" },
-	{ 0xe51034a8,	"task_false_trigger[13]" },
-	{ 0xe51034ac,	"task_false_trigger[14]" },
-	{ 0xe51034b0,	"task_false_trigger[15]" },
-	{ 0xe51034b4,	"task_false_trigger[16]" },
-	{ 0xe51034b8,	"task_false_trigger[17]" },
-	{ 0xe51034bc,	"task_false_trigger[18]" },
-	{ 0xe51034c0,	"task_false_trigger[19]" },
-	{ 0xe51034c4,	"tqew_ac[0]" },
-	{ 0xe51034c8,	"tqew_ac[1]" },
-	{ 0xe51034cc,	"tqew_ac[2]" },
-	{ 0xe51034d0,	"tqew_ac[3]" },
-	{ 0xe51034d4,	"tqew_ac_avail[0]" },
-	{ 0xe51034d8,	"tqew_ac_avail[1]" },
-	{ 0xe51034dc,	"tqew_ac_avail[2]" },
-	{ 0xe51034e0,	"tqew_ac_avail[3]" },
-	{ 0xe51034e4,	"tqew_air_humble" },
-	{ 0xe51034e8,	"tqew_air_suppress" },
-	{ 0xe51034ec,	"tqew_air_use_idletime" },
-	{ 0xe51034f0,	"tqew_air_dequeue_only" },
-	{ 0xe51034f4,	"tqew_pkt_pending_for_txdone" },
-	{ 0xe51034f8,	"tqew_descr_alloc_fail" },
-	{ 0xe51034fc,	"tqew_ring_alloc_fail" },
-	{ 0xe5103500,	"tqew_pop_alloc_fail" },
-	{ 0xe5103504,	"tqew_pop_sw_limit" },
-	{ 0xe5103508,	"tqew_pop_empty" },
-	{ 0xe510350c,	"tqew_available_set" },
-	{ 0xe5103510,	"tqew_available_reset" },
-	{ 0xe5103514,	"tqew_rx" },
-	{ 0xe5103518,	"tqew_drop" },
-	{ 0xe510351c,	"tqew_free" },
-	{ 0xe5103520,	"tqew_buf_invalid" },
-	{ 0xe5103524,	"wmac_tx_done[0]" },
-	{ 0xe5103528,	"wmac_tx_done[1]" },
-	{ 0xe510352c,	"wmac_tx_done[2]" },
-	{ 0xe5103530,	"wmac_tx_done[3]" },
-	{ 0xe5103534,	"agg_aggregate_flag" },
-	{ 0xe5103538,	"agg_aggressive_agg" },
-	{ 0xe510353c,	"hdrs_available_recent_min" },
-	{ 0xe5103540,	"agg_states[0]" },
-	{ 0xe5103544,	"agg_states[1]" },
-	{ 0xe5103548,	"agg_states[2]" },
-	{ 0xe510354c,	"agg_states[3]" },
-	{ 0xe5103550,	"agg_states[4]" },
-	{ 0xe5103554,	"ethq_push" },
-	{ 0xe5103558,	"ethq_pop" },
-	{ 0xe510355c,	"agg_aggregate_mpdu" },
-	{ 0xe5103560,	"agg_aggregate_msdu" },
-	{ 0xe5103564,	"agg_singleton_mpdu" },
-	{ 0xe5103568,	"agg_singleton_mgmt" },
-	{ 0xe510356c,	"agg_singleton_ctl" },
-	{ 0xe5103570,	"agg_singleton_probe" },
-	{ 0xe5103574,	"agg_4K_amsdu" },
-	{ 0xe5103578,	"agg_8K_amsdu" },
-	{ 0xe510357c,	"agg_11K_amsdu" },
-	{ 0xe5103580,	"tx_feedback_success" },
-	{ 0xe5103584,	"tx_feedback_fail" },
-	{ 0xe5103588,	"tx_done_status_success" },
-	{ 0xe510358c,	"tx_done_status_timeout" },
-	{ 0xe5103590,	"tx_done_status_xretry" },
-	{ 0xe5103594,	"tx_done_status_timeout_xretry" },
-	{ 0xe5103598,	"tx_done_pkt_chain_reset" },
-	{ 0xe510359c,	"tx_done_pkt_chain_success" },
-	{ 0xe51035a0,	"tx_done_pkt_chain_drop_tid_down" },
-	{ 0xe51035a4,	"tx_done_pkt_chain_drop_xattempts" },
-	{ 0xe51035a8,	"tx_done_singleton_finish" },
-	{ 0xe51035ac,	"tx_done_singleton_swretry" },
-	{ 0xe51035b0,	"tx_done_aggregate_finish" },
-	{ 0xe51035b4,	"tx_done_aggregate_hwretry" },
-	{ 0xe51035b8,	"tx_done_aggregate_swretry" },
-	{ 0xe51035bc,	"tx_done_mpdu_swretry" },
-	{ 0xe51035c0,	"tx_sample" },
-	{ 0xe51035c4,	"tx_bw_sample" },
-	{ 0xe51035c8,	"tx_swretry_lower_bw" },
-	{ 0xe51035cc,	"tx_swretry_agg_exceed" },
-	{ 0xe51035d0,	"tx_scale_base_20m" },
-	{ 0xe51035d4,	"tx_scale_base_40m" },
-	{ 0xe51035d8,	"tx_scale_base_80m" },
-	{ 0xe51035dc,	"tx_scale_max" },
-	{ 0xe51035e0,	"tx_scale_overstep" },
-	{ 0xe51035e4,	"alloc_tqew_fast" },
-	{ 0xe51035e8,	"free_tqew_fast" },
-	{ 0xe51035ec,	"alloc_tqew_slow" },
-	{ 0xe51035f0,	"free_tqew_slow" },
-	{ 0xe51035f4,	"alloc_tqew_local" },
-	{ 0xe51035f8,	"free_tqew_local" },
-	{ 0xe51035fc,	"alloc_hdr_fast" },
-	{ 0xe5103600,	"free_hdr_fast" },
-	{ 0xe5103604,	"alloc_hdr_slow" },
-	{ 0xe5103608,	"free_hdr_slow" },
-	{ 0xe510360c,	"alloc_msdu_hdr_failed" },
-	{ 0xe5103610,	"alloc_mpdu_hdr_failed" },
-	{ 0xe5103614,	"alloc_tid_superfast" },
-	{ 0xe5103618,	"free_tid_superfast" },
-	{ 0xe510361c,	"alloc_tid_fast" },
-	{ 0xe5103620,	"free_tid_fast" },
-	{ 0xe5103624,	"alloc_tid_slow" },
-	{ 0xe5103628,	"free_tid_slow" },
-	{ 0xe510362c,	"alloc_node_rate_fast" },
-	{ 0xe5103630,	"free_node_rate_fast" },
-	{ 0xe5103634,	"alloc_node_rate_slow" },
-	{ 0xe5103638,	"free_node_rate_slow" },
-	{ 0xe510363c,	"alloc_node_superfast" },
-	{ 0xe5103640,	"free_node_superfast" },
-	{ 0xe5103644,	"alloc_node_fast" },
-	{ 0xe5103648,	"free_node_fast" },
-	{ 0xe510364c,	"alloc_fcs" },
-	{ 0xe5103650,	"free_fcs" },
-	{ 0xe5103654,	"alloc_mac_descr" },
-	{ 0xe5103658,	"free_mac_descr" },
-	{ 0xe510365c,	"tx_mac_push" },
-	{ 0xe5103660,	"tx_mac_idle" },
-	{ 0xe5103664,	"tx_mac_rts" },
-	{ 0xe5103668,	"tx_mac_cts2self" },
-	{ 0xe510366c,	"tx_vlan_drop" },
-	{ 0xe5103670,	"tx_acm_drop" },
-	{ 0xe5103674,	"tx_ps_drop" },
-	{ 0xe5103678,	"ocs_tx_suspend" },
-	{ 0xe510367c,	"ocs_tx_resume" },
-	{ 0xe5103680,	"ocs_singleton_suspend" },
-	{ 0xe5103684,	"ocs_ampdu_suspend" },
-	{ 0xe5103688,	"ocs_frame_created" },
-	{ 0xe510368c,	"pwr_mgmt_awake" },
-	{ 0xe5103690,	"pwr_mgmt_sleep" },
-	{ 0xe5103694,	"pwr_mgmt_tx" },
-	{ 0xe5103698,	"pspoll_rx" },
-	{ 0xe510369c,	"dtim_q_push" },
-	{ 0xe51036a0,	"dtim_q_pop" },
-	{ 0xe51036a4,	"dtim_trigger" },
-	{ 0xe51036a8,	"dtim_q_overflow" },
-	{ 0xe51036ac,	"tx_restrict_dropped" },
-	{ 0xe51036b0,	"tx_throt_dropped" },
-	{ 0xe51036b4,	"tx_block_singleton" },
-	{ 0xe51036b8,	"tx_force_unblock_tid" },
-	{ 0xe51036bc,	"tx_ctl_pkt_hbm_alloc_fails" },
-	{ 0xe51036c0,	"tx_ctl_pkt_alloc_descr_fails" },
-	{ 0xe51036c4,	"tx_bar_alloc_ctl_pkt_fails" },
-	{ 0xe51036c8,	"tx_valid_bit_not_set" },
-	{ 0xe51036cc,	"wmm_ps_tx" },
-	{ 0xe51036d0,	"wmm_ps_tx_null_frames" },
-	{ 0xe51036d4,	"wmm_ps_tx_more_data_frames" },
-	{ 0xe51036d8,	"wmm_ps_tx_eosp_frames" },
-	{ 0xe51036dc,	"mu_tx_su_count" },
-	{ 0xe51036e0,	"mu_tx_send_mu_fail" },
-	{ 0xe51036e4,	"mu_tx_push_count" },
-	{ 0xe51036e8,	"mu_tx_done_count" },
-	{ 0xe51036ec,	"mu_tx_done_succ" },
-	{ 0xe51036f0,	"mu_tx_done_fail" },
-	{ 0xe51036f4,	"mu_tx_sample" },
-	{ 0xe51036f8,	"mu_bar_bitmap_non_zero" },
-	{ 0xe51036fc,	"mu_bar_bitmap_zero" },
-	{ 0xe5103700,	"mu_mac_wmac1_ipc_push" },
-	{ 0xe5103704,	"mu_mac_wmac1_auc_push" },
-	{ 0xe5103708,	"mu_wmac1_resets" },
-	{ 0xe510370c,	"mu_tx_swretry_agg_exceed" },
-	{ 0xe5103710,	"mu_tx_buddy_try" },
-	{ 0xe5103714,	"mu_tx_buddy_fail_wmac" },
-	{ 0xe5103718,	"mu_tx_buddy_fail_ptid" },
-	{ 0xe510371c,	"mu_tx_buddy_fail_rate" },
-	{ 0xe5103720,	"mu_tx_buddy_fail_create_agg" },
-	{ 0xe5103724,	"mu_tx_buddy_mu_only_timeout" },
-	{ 0xe5103728,	"mu_tx_another_q_push_succ" },
-	{ 0xe510372c,	"mu_tx_another_q_push_fail" },
-	{ 0xe5103730,	"mu_tx_buddy_multi_tid" },
-	{ 0xe5103734,	"mu_tx_wmac_0_done_count" },
-	{ 0xe5103738,	"mu_tx_wmac_0_bitmap_non_zero" },
-	{ 0xe510373c,	"mu_tx_wmac_0_bitmap_zero" },
-	{ 0xe5103740,	"mu_tx_wmac_0_done_timeout" },
-	{ 0xe5103744,	"mu_tx_wmac_0_done_succ" },
-	{ 0xe5103748,	"mu_tx_wmac_0_done_fail" },
-	{ 0xe510374c,	"mu_tx_wmac_1_done_succ" },
-	{ 0xe5103750,	"mu_tx_wmac_1_done_fail" },
-	{ 0xe5103754,	"mu_tx_wmac_0_mpdu_total" },
-	{ 0xe5103758,	"mu_tx_wmac_0_mpdu_succ" },
-	{ 0xe510375c,	"mu_tx_wmac_1_mpdu_total" },
-	{ 0xe5103760,	"mu_tx_wmac_1_mpdu_succ" },
-	{ 0xe5103764,	"mu_tx_qnum[0]" },
-	{ 0xe5103768,	"mu_tx_qnum[1]" },
-	{ 0xe510376c,	"mu_tx_qnum[2]" },
-	{ 0xe5103770,	"mu_tx_qnum[3]" },
-	{ 0xe5103774,	"tqe_sema_fails" },
+	{ 0xe5101248, "sleep" },
+	{ 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 a037e66..de0540d 100644
--- a/include/qtn/qtn_buffers.h
+++ b/include/qtn/qtn_buffers.h
@@ -76,8 +76,8 @@
 #if defined (CONFIG_TOPAZ_PCIE_TARGET)
 #define QTN_BUFS_LHOST_TQE_RX_RING_S	8
 #elif defined (CONFIG_TOPAZ_PCIE_HOST)
-#define QTN_BUFS_LHOST_TQE_RX_RING_S	10
-#elif defined(TOPAZ_VB_CONFIG) || defined(TOPAZ_RGMII_CONFIG) || defined(TOPAZ_VZN_CONFIG)
+#define QTN_BUFS_LHOST_TQE_RX_RING_S	9
+#elif defined (TOPAZ_VB_CONFIG)
 #define QTN_BUFS_LHOST_TQE_RX_RING_S	11
 #else
 #define QTN_BUFS_LHOST_TQE_RX_RING_S	9
diff --git a/include/qtn/qtn_decap.h b/include/qtn/qtn_decap.h
index 90d9bc1..9afffc8 100644
--- a/include/qtn/qtn_decap.h
+++ b/include/qtn/qtn_decap.h
@@ -123,7 +123,7 @@
 			}
 		} else if (tagrx == QVLAN_TAGRX_STRIP) {
 			if (ether_type_l3 == htons(ETHERTYPE_8021Q)) {
-				ether_type_l3 = ((llc[10] << 0) | (llc[11] << 8));
+				ether_type_l3 = ((llc[10] << 0) | (llc[11] << 8)) & QVLAN_MASK_VID;
 				ether_type_eh = ether_type_l3;
 				vlan_hdr = 4;
 			}
diff --git a/include/qtn/qtn_global.h b/include/qtn/qtn_global.h
index 8f4852f..c1f5aba 100644
--- a/include/qtn/qtn_global.h
+++ b/include/qtn/qtn_global.h
@@ -58,8 +58,7 @@
 #define QTN_GLOBAL_RATE_NSS_MAX		4
 #define QTN_2X2_GLOBAL_RATE_NSS_MAX	2
 #define QTN_3X3_GLOBAL_RATE_NSS_MAX	3
-#define QTN_RX_REORDER_BUF_TIMEOUT_US		200000
-#define QTN_RX_REORDER_BUF_TIMEOUT_US_VI	800000
+#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 */
 #define QTN_TX_SWRETRY_NOAGG_MAX	1	/* add tx restrict check if this is increased */
@@ -115,12 +114,7 @@
 #define QTN_DBG_FD_FLAG_MASK		0x0000FFFF
 
 #define QTN_HW_UPDATE_NDPA_DUR  0x0
-#define	QTN_SU_TXBF_TX_CNT_DEF_THRSHLD 2
-#define QTN_MU_TXBF_TX_CNT_DEF_THRSHLD 2
-
-#define QTN_RX_BAR_SYNC_DISABLE	0
-#define QTN_RX_BAR_SYNC_QTN	1
-#define QTN_RX_BAR_SYNC_ALL	2
+#define	QTN_TXBF_TX_CNT_DEF_THRSHLD 2
 
 #if (defined(MUC_BUILD) || defined(SYSTEM_BUILD))
 
@@ -334,13 +328,13 @@
 	uint8_t		g_rx_accelerate;
 	uint8_t		g_rx_accel_lu_sa;
 	uint8_t		g_tx_auc;
+	uint16_t	g_tx_maxmpdu;
 	uint8_t		g_tx_ac_inheritance;	/* promote AC_BE traffic to vo/vi */
 	uint8_t         g_txbf_iot;             /* turn on/off TxBF IOT with non QTN node */
 	uint8_t		g_tx_ac_q2q_inheritance;/* promote AC_BE traffic to vo/vi */
 	uint8_t		g_tx_1ss_amsdu_supp;	/* enable-disable 1ss AMSDU support - Non-qtn clients */
 	uint32_t        g_vht_ndpa_dur;         /* manual update VHT NDPA duration, if it is 0, then HW auto update */
-	uint32_t        g_su_txbf_pkt_cnt;      /* Tx operation count threshold to a SU TxBF station */
-	uint32_t        g_mu_txbf_pkt_cnt;      /* Tx operation count threshold to a MU TxBF station */
+	uint32_t        g_txbf_pkt_cnt;         /* Tx operation count threshold to a TxBF station */
 	struct qtn_auto_cca_params	g_auto_cca_params;
 	struct qtn_wowlan_params wowlan_params;
 	uint8_t		g_rx_optim;
@@ -358,7 +352,6 @@
 	uint32_t	g_auto_cs_enable;	/* enable/disable auto cs threshold */
 	uint8_t		g_beaconing_scheme;
 	uint32_t	g_muc_sys_dbg;
-	uint32_t	g_rx_bar_sync;		/* sync rx reorder window on receiving BAR */
 	char		*g_last_field;		/* Add all new fields before this one */
 };
 
@@ -414,13 +407,13 @@
 	1,					\
 	1,					\
 	QTN_TX_AUC_DEFAULT,			\
+	IEEE80211_VHTCAP_MAX_MPDU_11454,	\
 	QTN_AC_BE_INHERIT_VO,			\
 	QTN_TXBF_IOT_ENABLE,			\
 	QTN_AC_BE_INHERIT_Q2Q_ENABLE,		\
 	QTN_TX_AMSDU_DISABLED,			\
 	QTN_HW_UPDATE_NDPA_DUR,			\
-	QTN_SU_TXBF_TX_CNT_DEF_THRSHLD,	        \
-	QTN_MU_TXBF_TX_CNT_DEF_THRSHLD,	        \
+	QTN_TXBF_TX_CNT_DEF_THRSHLD,		\
 	QTN_AUTO_CCA_PARARMS_DEFAULT,		\
 	{0, 0, 0x0842, 0xffff},			\
 	0,					\
@@ -438,7 +431,6 @@
 	QTN_AUTO_CS_ENABLE,			\
 	0,					\
 	0,					\
-	QTN_RX_BAR_SYNC_QTN,			\
 	"end"					\
 }
 
@@ -448,8 +440,6 @@
 extern struct qtn_cca_stats g_qtn_cca_stats;
 extern uint32_t g_qtn_rxtime_usecs;
 extern uint32_t g_qtn_txtime_usecs;
-extern uint8_t g_rf_mixer_gain;
-extern uint8_t g_afe_pga_gain; 
 extern uint32_t g_rf_xmit_status;
 extern int vlan_enabled_bus;
 
diff --git a/include/qtn/qtn_muc_stats_print.h b/include/qtn/qtn_muc_stats_print.h
index cfbec57..6c663f9 100644
--- a/include/qtn/qtn_muc_stats_print.h
+++ b/include/qtn/qtn_muc_stats_print.h
@@ -11,6 +11,16 @@
 	"pkt_before_encap", \
 	"pkt_after_encap", \
 	"pkt_push_back", \
+	"tx_timeout", \
+	"tx_hw_retry", \
+	"tx_sw_retry_noagg", \
+	"tx_sw_retry", \
+	"tx_xretry", \
+	"tx_pspoll_deagg", \
+	"tx_xattempts", \
+	"tx_xattempts_noagg", \
+	"tx_done_failed", \
+	"tx_cca_defer_cnt", \
 	"pkt_to_hw", \
 	"pkt_to_hw_deferred", \
 	"fd_absent", \
@@ -20,7 +30,13 @@
 	"pkt_add_q", \
 	"pkt_qtn_hardstart", \
 	"tx_reserved", \
+	"tx_released", \
 	"tx_reserve_fail", \
+	"tx_release_err", \
+	"tx_mu_reserved", \
+	"tx_mu_released", \
+	"tx_mu_reserve_fail", \
+	"tx_mu_release_err", \
 	"txalert_mu_ndp_update", \
 	"txalert_mu_rpt_poll", \
 	"txalert_mu_queue_full", \
@@ -34,6 +50,8 @@
 	"txalert_ndp_update", \
 	"tx_ndp_q_occupied", \
 	"tx_ndp_start", \
+	"txdone_mgmt", \
+	"txdone_data", \
 	"tx_pwr", \
 	"bcn_scheme_power_save", \
 	"bcn_scheme", \
@@ -51,6 +69,10 @@
 	"ba_del", \
 	"fd_free_nodeclean", \
 	"msdu_expired", \
+	"last_ack_ssq", \
+	"last_sent_seq", \
+	"ampdu_subframe_failure", \
+	"ampdu_subframe_done", \
 	"tx_window_locked", \
 	"tx_window_failed", \
 	"tx_restrict_probe", \
@@ -131,11 +153,6 @@
 	"qtn_bcn_stop", \
 	"mu_grp_snd_queue_is_not_empty", \
 	"mu_prec_snd_queue_is_not_empty", \
-	"mu_group_delete", \
-	"mu_group_install", \
-	"mu_group_rate_node_updates", \
-	"mu_update_rates_mu", \
-	"mu_update_rates_su", \
 	"autocs_sample_bits", \
 	"autocs_adjust_bits", \
 	"autocs_step_size", \
@@ -400,7 +417,6 @@
 	"rxq_desc_chain_empty[2]", \
 	"rx_data_last_seqfrag", \
 	"rx_data_last_ip_id", \
-	"rx_opmode_notify", \
 	"accel_l2_ext_filter", \
 	"accel_mc_send_l2_ext_filter", \
 	"accel_mc_drop_l2_ext_filter", \
diff --git a/include/qtn/qtn_skb_cb.h b/include/qtn/qtn_skb_cb.h
index eed19e2..41da785 100644
--- a/include/qtn/qtn_skb_cb.h
+++ b/include/qtn/qtn_skb_cb.h
@@ -39,9 +39,7 @@
 #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_ORIG_OUTSIDE		0x8000	/* skb is not from local protocol stack */
-#define M_ORIG_BR		0x10000	/* skb is sent from bridge interfaces */
-#define M_NO_L2_LRN		0x20000	/* MAC learning disabled */
+#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_vlan.h b/include/qtn/qtn_vlan.h
index ca1c220..f9d71e4 100644
--- a/include/qtn/qtn_vlan.h
+++ b/include/qtn/qtn_vlan.h
@@ -22,7 +22,6 @@
 #define QVLAN_MODE_HYBRID		2
 #define QVLAN_MODE_DYNAMIC		3
 #define QVLAN_MODE_MAX			QVLAN_MODE_DYNAMIC
-#define QVLAN_MODE_DISABLED		(QVLAN_MODE_MAX + 1)
 #define QVLAN_SHIFT_MODE		16
 #define QVLAN_MASK_MODE			0xffff0000
 #define QVLAN_MASK_VID			0x00000fff
@@ -100,7 +99,6 @@
 	struct qtn_vlan_stats ig_drop;
 	struct qtn_vlan_stats eg_pass;
 	struct qtn_vlan_stats eg_drop;
-	struct qtn_vlan_stats magic_invalid;
 	void		*user_data;
 };
 #define QVLAN_IS_DYNAMIC(vdev)		((vdev)->flags & QVLAN_DEV_F_DYNAMIC)
@@ -140,10 +138,6 @@
 	return (shift << QVLAN_TAGRX_BITSHIFT);
 }
 
-/*
- * Must be in sync with qcsapi_vlan_config in qcsapi.h
- *  -- Whenever 'struct qtn_vlan_config' changes, qcsapi.h changes as well
- */
 struct qtn_vlan_config {
 	uint32_t	vlan_cfg;
 	union {
@@ -264,6 +258,25 @@
 	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__)
@@ -276,17 +289,6 @@
 }
 
 RUBY_INLINE int
-qtn_vlan_magic_check(struct qtn_vlan_dev *outdev, struct qtn_vlan_pkt *pkt)
-{
-	if (unlikely(pkt->magic != QVLAN_PKT_MAGIC)) {
-		qtn_vlan_inc_stats(&outdev->magic_invalid);
-		return 0;
-	}
-
-	return 1;
-}
-
-RUBY_INLINE int
 qtn_vlan_vlanid_check(struct qtn_vlan_dev *vdev, uint16_t ncidx, uint16_t vlanid)
 {
 	if (QVLAN_IS_DYNAMIC(vdev))
@@ -300,7 +302,7 @@
 {
 	struct qtn_vlan_pkt *pkt = qtn_vlan_get_info(data);
 
-	if (!qtn_vlan_magic_check(outdev, pkt)
+	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);
@@ -358,6 +360,16 @@
 }
 #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];
@@ -384,8 +396,9 @@
 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 struct sk_buff *switch_vlan_to_proto_stack(struct sk_buff *, int copy);
-extern struct sk_buff *switch_vlan_from_proto_stack(struct sk_buff *, struct qtn_vlan_dev *, uint16_t ncidx, int copy);
+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);
diff --git a/include/qtn/qvsp.h b/include/qtn/qvsp.h
index d982684..9c52eb3 100644
--- a/include/qtn/qvsp.h
+++ b/include/qtn/qvsp.h
@@ -113,8 +113,6 @@
 void qvsp_cmd_strm_state_set(struct qvsp_s *qvsp, uint8_t strm_state,
 			const struct ieee80211_qvsp_strm_id *strm_id, struct ieee80211_qvsp_strm_dis_attr *attr);
 void qvsp_cmd_vsp_configure(struct qvsp_s *qvsp, uint32_t index, uint32_t value);
-void qvsp_cmd_vsp_cfg_set(struct qvsp_s *qvsp, uint32_t index, uint32_t value);
-int qvsp_cmd_vsp_cfg_get(struct qvsp_s *qvsp, uint32_t index, uint32_t *value);
 void qvsp_fat_set(struct qvsp_s *qvsp, uint32_t fat, uint32_t intf_ms, uint8_t chan);
 void qvsp_node_del(struct qvsp_s *qvsp, struct ieee80211_node *ni);
 void qvsp_reset(struct qvsp_s *qvsp);
diff --git a/include/qtn/shared_defs.h b/include/qtn/shared_defs.h
index 780e5ec..ee1483a 100644
--- a/include/qtn/shared_defs.h
+++ b/include/qtn/shared_defs.h
@@ -114,7 +114,6 @@
 	IEEE80211_SCS_SET_PMBL_ERR_THRSHLD,
 	IEEE80211_SCS_SET_CCA_INTF_DFS_MARGIN,
 	IEEE80211_SCS_SET_LEAVE_DFS_CHAN_MTRC_MRGN,
-	IEEE80211_SCS_SET_CCA_THRESHOLD_TYPE,
 	IEEE80211_SCS_SET_MAX
 };
 
@@ -261,17 +260,6 @@
 
 #define	IEEE80211_REMAIN_CHAN_MIN_RSV_PERD	2
 
-#define IEEE80211_SCS_UNSTABLE_INTF			0x00000001
-#define IEEE80211_SCS_UNSTABLE_INTF_OUTDATED		0x00000002
-#define IEEE80211_SCS_UNSTABLE_INTF_INVALID		0x00000004
-#define IEEE80211_SCS_UNSTABLE_IDLE			0x00000008
-#define IEEE80211_SCS_UNSTABLE_IDLE_OUTDATED		0x00000010
-#define IEEE80211_SCS_UNSTABLE_OTHERSTIME		0x00000020
-#define IEEE80211_SCS_UNSTABLE_OTHERSTIME_OUTDATED	0x00000040
-#define IEEE80211_SCS_UNSTABLE_TDLS_TX			0x00000080
-#define IEEE80211_SCS_UNSTABLE_TDLS_RX			0x00000100
-#define IEEE80211_SCS_UNSTABLE_TDLS_OUTDATED		0x00000200
-
 enum ieee80211_scs_update_mode {
 	IEEE80211_SCS_OFFCHAN,		/* off-channel, use smoothing and omit current channel */
 	IEEE80211_SCS_COCHAN,		/* co-channel mode */
@@ -455,9 +443,8 @@
 #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_AUTH	0x0010	/* authorized for TDLS link data */
 
-#define	IEEE80211_NODE_TDLS_PTI_MASK	0x000B	/* Mask for TDLS PTI bits */
+#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
@@ -478,7 +465,7 @@
 #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_OPTI_NODE			0x0000800
+#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
@@ -596,13 +583,6 @@
 /**
  * Reason for channel change
  */
-#define CSW_REASON_MASK 0xff
-#define CSW_SCS_FLAG_SHIFT 16
-#define CSW_SCS_FLAG_MASK 0xff0000
-#define CSW_SCS_FLAG_STRING_MAX 64
-
-#define	CSW_REASON_GET_SCS_FLAG(_reason) (((_reason) & CSW_SCS_FLAG_MASK) >> CSW_SCS_FLAG_SHIFT)
-#define CSW_REASON_SET_SCS_FLAG(_scs_flag, _reason)	((((_scs_flag) << CSW_SCS_FLAG_SHIFT) & CSW_SCS_FLAG_MASK) | (_reason))
 enum ieee80211_csw_reason {
 	/**
 	 * Reason is unknown
diff --git a/include/qtn/topaz_fwt_cpuif.h b/include/qtn/topaz_fwt_cpuif.h
index e207e6a..f42926b 100644
--- a/include/qtn/topaz_fwt_cpuif.h
+++ b/include/qtn/topaz_fwt_cpuif.h
@@ -401,7 +401,7 @@
 }
 
 RUBY_INLINE void topaz_fwt_sw_mcast_node_set(struct topaz_fwt_sw_mcast_entry *const e,
-						const uint8_t port, const uint16_t node)
+						const uint8_t port, const uint8_t node)
 {
 	if (port == TOPAZ_TQE_WMAC_PORT) {
 		e->node_bitmap[node / TOPAZ_BITS_PER_WD] |= (1 << (node % TOPAZ_BITS_PER_WD));
@@ -409,7 +409,7 @@
 }
 
 RUBY_INLINE void topaz_fwt_sw_mcast_node_clear(struct topaz_fwt_sw_mcast_entry *const e,
-						const uint8_t port, const uint16_t node)
+						const uint8_t port, const uint8_t node)
 {
 	if (port == TOPAZ_TQE_WMAC_PORT) {
 		e->node_bitmap[node / TOPAZ_BITS_PER_WD] &= ~(1 << (node % TOPAZ_BITS_PER_WD));
@@ -426,9 +426,10 @@
 	return &fwt[index];
 }
 
-RUBY_INLINE struct topaz_fwt_sw_mcast_entry *topaz_fwt_sw_mcast_ff_entry_get(void)
+RUBY_INLINE struct topaz_fwt_sw_mcast_entry *topaz_fwt_sw_mcast_ff_entry_get(uint8_t vap_idx)
 {
-	return (void *)(RUBY_DRAM_BEGIN + TOPAZ_FWT_MCAST_TQE_FF_BASE);
+	return (void *)(RUBY_DRAM_BEGIN + TOPAZ_FWT_MCAST_TQE_FF_BASE +
+			(vap_idx * TOPAZ_FWT_MCAST_TQE_ENT_SIZE));
 }
 
 RUBY_INLINE struct topaz_fwt_sw_mcast_entry *topaz_fwt_sw_mcast_entry_get(uint16_t index)
@@ -455,6 +456,29 @@
 	return bits_set;
 }
 
+RUBY_INLINE uint32_t topaz_fwt_sw_mcast_enqueues(const struct topaz_fwt_sw_mcast_entry *const e,
+		uint8_t port_bitmap, const uint8_t in_port, const uint8_t in_node)
+{
+	uint32_t enqueues = 0;
+	uint8_t i;
+
+	/* Exclude input port. If WMAC, the port doesn't contribute, only nodes. */
+	port_bitmap &= ~((1 << in_port) | (1 << TOPAZ_TQE_WMAC_PORT));
+	enqueues += topaz_fwt_sw_count_bits(port_bitmap);
+
+	/* add wmac nodes */
+	for (i = 0; i < ARRAY_SIZE(e->node_bitmap) ; i++) {
+		enqueues += topaz_fwt_sw_count_bits(e->node_bitmap[i]);
+	}
+
+	/* must exclude the input node */
+	if (topaz_fwt_sw_mcast_node_is_set(e, in_port, in_node)) {
+		--enqueues;
+	}
+
+	return enqueues;
+}
+
 RUBY_INLINE void __topaz_fwt_hash_set(int enable)
 {
 	uint32_t reg = enable ? TOPAZ_FWT_HASH_CTRL_ENABLE : 0;
diff --git a/include/qtn/topaz_fwt_db.h b/include/qtn/topaz_fwt_db.h
index 2c9c54b..9f47d16 100644
--- a/include/qtn/topaz_fwt_db.h
+++ b/include/qtn/topaz_fwt_db.h
@@ -97,9 +97,9 @@
 	return NULL;
 }
 
-static inline struct topaz_fwt_sw_mcast_entry *fwt_db_get_sw_mcast_ff(void)
+static inline struct topaz_fwt_sw_mcast_entry *fwt_db_get_sw_mcast_ff(uint8_t vap_idx)
 {
-	return topaz_fwt_sw_mcast_ff_entry_get();
+	return topaz_fwt_sw_mcast_ff_entry_get(vap_idx);
 }
 
 static inline void topaz_fwt_sw_alias_table_flush(struct topaz_fwt_sw_alias_table *p)
diff --git a/include/qtn/topaz_fwt_sw.h b/include/qtn/topaz_fwt_sw.h
index 0267b16..739413f 100644
--- a/include/qtn/topaz_fwt_sw.h
+++ b/include/qtn/topaz_fwt_sw.h
@@ -37,14 +37,14 @@
  * @param node_num: node number
  * @param vap_idx: vap index
  */
-void fwt_sw_register_node(uint16_t node_num);
+void fwt_sw_register_node(uint8_t node_num, uint8_t vap_idx);
 
 /*
  * Unregister a node
  * @param node_num: node number
  * @param vap_idx: vap index
  */
-void fwt_sw_unregister_node(uint16_t node_num);
+void fwt_sw_unregister_node(uint8_t node_num, uint8_t vap_idx);
 
 /*
  * Add device to the FWT.
diff --git a/include/qtn/topaz_shared_params.h b/include/qtn/topaz_shared_params.h
index f2dc0cb..a673848 100644
--- a/include/qtn/topaz_shared_params.h
+++ b/include/qtn/topaz_shared_params.h
@@ -54,14 +54,13 @@
 enum shared_params_auc_ipc_cmd
 {
 	SHARED_PARAMS_IPC_NONE_CMD		= 0,
-
-	/* begining of M2A IPC config commands */
-	SHARED_PARAMS_IPC_M2A_CFG_PARAMS_MIN,
-	SHARED_PARAMS_IPC_M2A_SLOW_NODE_CREATE_CMD,
+	SHARED_PARAMS_IPC_M2A_SRESET_BEGIN_CMD,
+	SHARED_PARAMS_IPC_M2A_SRESET_END_CMD,
 	SHARED_PARAMS_IPC_M2A_NODE_CREATE_CMD,
+	SHARED_PARAMS_IPC_M2A_SLOW_NODE_CREATE_CMD,
 	SHARED_PARAMS_IPC_M2A_NODE_DESTROY_CMD,
-	SHARED_PARAMS_IPC_M2A_SLOW_TID_CREATE_CMD,
 	SHARED_PARAMS_IPC_M2A_TID_CREATE_CMD,
+	SHARED_PARAMS_IPC_M2A_SLOW_TID_CREATE_CMD,
 	SHARED_PARAMS_IPC_M2A_TID_DESTROY_CMD,
 	SHARED_PARAMS_IPC_M2A_TID_ACTIVATE_CMD,
 	SHARED_PARAMS_IPC_M2A_TID_DEACTIVATE_CMD,
@@ -73,23 +72,17 @@
 	SHARED_PARAMS_IPC_M2A_TX_AGG_TIMEOUT_CMD,
 	SHARED_PARAMS_IPC_M2A_TX_DBG_CMD,
 	SHARED_PARAMS_IPC_M2A_TX_QOS_SCH_CMD,
-	SHARED_PARAMS_IPC_M2A_TX_AGG_DURATION,
-	SHARED_PARAMS_IPC_M2A_FCS_GIVE_CMD,
+	SHARED_PARAMS_IPC_M2A_PAUSE_ON_CMD,
+	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_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,
 	SHARED_PARAMS_IPC_M2A_MU_AIRTIME_PADDING_UPDATE_CMD,
-	/* end of M2A IPC config commands */
-	SHARED_PARAMS_IPC_M2A_CFG_PARAMS_MAX,
-
-	SHARED_PARAMS_IPC_M2A_MU_QMAT_UPDATE_CMD,
-	SHARED_PARAMS_IPC_M2A_SRESET_BEGIN_CMD,
-	SHARED_PARAMS_IPC_M2A_SRESET_END_CMD,
-	SHARED_PARAMS_IPC_M2A_PAUSE_ON_CMD,
-	SHARED_PARAMS_IPC_M2A_PAUSE_OFF_CMD,
 
 	/*
 	 * Following are cmd used in A2M IPC interrupt. Put in same enum so that most code can be
@@ -277,14 +270,13 @@
 #define SHARED_PARAMS_AUC_IPC_STUB			((shared_params_auc_ipc*)1)
 	struct shared_params_auc_ipc		*m2a_ipc;	/* M2A */
 	struct shared_params_auc_ipc		*a2m_ipc;	/* A2M */
-	/*
-	 * 'ma_shared_buf' is used to transfer data btw MuC and AuC in IPC call.
-	 * So far it is used to pass node position in node cache and ieee80211
-	 * vht group. The buffer size is defined to exactly match those data:
-	 * sizeof(struct ieee80211_mu_groups_update)
-	 */
-#define MA_SHARED_BUF_SIZE	(150)
+#if QTN_HDP_MU
+	/* Buf used to transfer data btw MuC and AuC in IPC call. So far it is used to pass
+	MU group and user position masks as well as Q matrixes. The buffer size is defined
+	to exactly match those data */
+#define MA_SHARED_BUF_SIZE	24
 	uint8_t					(*ma_shared_buf)[MA_SHARED_BUF_SIZE];
+#endif
 	struct qtn_auc_per_node_data_s		**auc_per_node_data_ptr;
 	struct qtn_auc_misc_data_s		*auc_misc_data_ptr;
 	struct qtn_auc_per_mac_data_s		*auc_per_mac_data_ptr;
@@ -363,22 +355,20 @@
 
 RUBY_INLINE enum shared_params_auc_ipc_cmd
 qtn_mproc_sync_auc_ipc_wait_mready(volatile struct shared_params_auc_ipc *ipc,
-		int relax_count, int loop_count)
+		enum shared_params_auc_ipc_cmd *cmds, int cmds_num, int relax_count)
 {
-	enum shared_params_auc_ipc_cmd cmd;
-	int loop = 0;
+	while(1) {
+		int i;
+		enum shared_params_auc_ipc_cmd cmd = ipc->cmd;
 
-	while(loop++ < loop_count) {
-		cmd = ipc->cmd;
-		if (cmd > SHARED_PARAMS_IPC_M2A_CFG_PARAMS_MIN &&
-				cmd < SHARED_PARAMS_IPC_M2A_CFG_PARAMS_MAX) {
-			return cmd;
+		for (i = 0; i < cmds_num; ++i) {
+			if (cmds[i] == cmd) {
+				return cmd;
+			}
 		}
 
 		qtn_mproc_sync_mutex_relax(relax_count);
 	}
-
-	return SHARED_PARAMS_IPC_NONE_CMD;
 }
 
 RUBY_INLINE int
diff --git a/include/qtn/topaz_tqe.h b/include/qtn/topaz_tqe.h
index 36a7a0a..0cce989 100644
--- a/include/qtn/topaz_tqe.h
+++ b/include/qtn/topaz_tqe.h
@@ -26,27 +26,25 @@
 #include <linux/if_ether.h>
 #include <linux/netdevice.h>
 #include <qtn/topaz_tqe_cpuif.h>
-#include <qtn/br_types.h>
+
 
 typedef void (*tqe_port_handler)(void *token,
 		const union topaz_tqe_cpuif_descr *descr,
 		struct sk_buff *skb, uint8_t *whole_frm_hdr);
 
 typedef const struct topaz_fwt_sw_mcast_entry*(
-		*tqe_fwt_get_mcast_hook)(uint16_t fwt_index, const void *addr, uint16_t ether_type);
+		*tqe_fwt_get_mcast_hook)(uint16_t fwt_index, const void *addr, uint16_t ether_type,
+					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)(void);
+		*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);
 
-typedef int (*tqe_fwt_add_from_mac_hook)(const uint8_t *mac_be, uint8_t port_id,
-			uint8_t node_idx, const struct br_ip *group);
-typedef int (*tqe_fwt_del_from_mac_hook)(const uint8_t *mac_be);
-
 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);
@@ -54,8 +52,7 @@
 				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,
-			tqe_fwt_add_from_mac_hook add_func, tqe_fwt_del_from_mac_hook del_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);
diff --git a/include/qtn/topaz_tqe_cpuif.h b/include/qtn/topaz_tqe_cpuif.h
index 0d41069..80b8f58 100644
--- a/include/qtn/topaz_tqe_cpuif.h
+++ b/include/qtn/topaz_tqe_cpuif.h
@@ -38,7 +38,7 @@
 	TOPAZ_TQE_AUC_PORT	= 7,
 
 	TOPAZ_TQE_NUM_PORTS	= 8,
-	TOPAZ_TQE_DROP_PORT	= 15
+	TOPAZ_TQE_DUMMY_PORT	= 15
 };
 
 enum topaz_mproc_tqe_sem_id
@@ -71,8 +71,7 @@
 #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", \
-					"", "", "", "", "", "", "", "drop", }
+#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)
diff --git a/include/qtn/txbf_mbox.h b/include/qtn/txbf_mbox.h
index 5dad35e..7051987 100644
--- a/include/qtn/txbf_mbox.h
+++ b/include/qtn/txbf_mbox.h
@@ -44,8 +44,8 @@
 #define QTN_TXBF_NDP_DATA_BUFS			(1)
 
 /* MU group install/delete IPC from DSP to LHost */
-#define QTN_TXBF_DSP_TO_HOST_INST_MU_GRP        1
-#define QTN_TXBF_DSP_TO_HOST_DELE_MU_GRP        2
+#define QTN_TXBF_DSP_TO_HOST_INST_MU_GRP        (QTN_TXBF_MUC_DSP_MSG_RING_SIZE + 1)
+#define QTN_TXBF_DSP_TO_HOST_DELE_MU_GRP        (QTN_TXBF_DSP_TO_HOST_INST_MU_GRP + 1)
 
 #ifndef __ASSEMBLY__
 
@@ -286,9 +286,6 @@
 				__attribute__ ((aligned (ARC_DCACHE_LINE_LENGTH) ));
 };
 
-#define QTN_TXBF_MBOX_PROCESSED 1
-#define QTN_TXBF_MBOX_NOT_PROCESSED 0
-
 #if !defined(MUC_BUILD) && !defined(DSP_BUILD) && !defined(AUC_BUILD)
 
 #if CONFIG_USE_SPI1_FOR_IPC
diff --git a/include/shared/net80211/_ieee80211.h b/include/shared/net80211/_ieee80211.h
index c0a4fb5..1669ee4 100644
--- a/include/shared/net80211/_ieee80211.h
+++ b/include/shared/net80211/_ieee80211.h
@@ -170,6 +170,19 @@
 };
 
 /*
+ * True if this mode must behave like a DFS master, ie do Channel
+ * Check Availability and In Service Monitoring. We need to make sure
+ * that all modes cannot send data without being authorized. Such
+ * enforcement is not done in monitor mode however.
+ */
+
+#define IEEE80211_IS_MODE_DFS_MASTER(_opmode) \
+	((_opmode == IEEE80211_M_IBSS) || \
+	(_opmode == IEEE80211_M_AHDEMO) || \
+	(_opmode == IEEE80211_M_HOSTAP) || \
+	(_opmode == IEEE80211_M_WDS))
+
+/*
  * 802.11n
  */
 
@@ -332,17 +345,6 @@
 #define IEEE80211_IS_OBSS_CHAN_SECONDARY(_c) \
 	(((_c) & IEEE80211_OBSS_CHAN_SEC20) == IEEE80211_OBSS_CHAN_SEC20)
 
-enum ieee80211_neighborhood_type {
-	IEEE80211_NEIGHBORHOOD_TYPE_SPARSE = 0,
-	IEEE80211_NEIGHBORHOOD_TYPE_DENSE = 1,
-	IEEE80211_NEIGHBORHOOD_TYPE_VERY_DENSE = 2,
-	IEEE80211_NEIGHBORHOOD_TYPE_MAX	= IEEE80211_NEIGHBORHOOD_TYPE_VERY_DENSE,
-	IEEE80211_NEIGHBORHOOD_TYPE_UNKNOWN = IEEE80211_NEIGHBORHOOD_TYPE_MAX + 1
-};
-
-#define IEEE80211_NEIGHBORHOOD_TYPE_SPARSE_DFT_THRSHLD	3
-#define IEEE80211_NEIGHBORHOOD_TYPE_DENSE_DFT_THRSHLD	15
-
 /* power index definition */
 enum ieee80211_power_index_beamforming {
 	PWR_IDX_BF_OFF = 0,
@@ -1106,14 +1108,6 @@
 	u_int8_t pos[IEEE80211_VHT_USR_POS_ARRAY_SIZE];
 } __packed;
 
-#define QTN_MU_NODES_PER_GROUP 2 /* Max number of nodes currently supported */
-#define QTN_MU_QMAT_MAX_SLOTS 3
-
-struct ieee80211_mu_groups_update {
-	u_int8_t ncidx[QTN_MU_NODES_PER_GROUP * QTN_MU_QMAT_MAX_SLOTS];
-	struct ieee80211_vht_mu_grp grps[QTN_MU_NODES_PER_GROUP * QTN_MU_QMAT_MAX_SLOTS];
-} __packed;
-
 struct ieee80211_action_data {
 	u_int8_t cat;				/* category identifier */
 	u_int8_t action;			/* action identifier */
@@ -1333,22 +1327,13 @@
 			u_int8_t group_id;
 		} sta_stats;
 		struct _rep_qtn_cca {
-			u_int16_t type;
-			/* CCA radio measurement report field */
 			u_int64_t start_tsf;
 			u_int16_t duration_ms;
 			u_int8_t channel;
 			u_int8_t qtn_cca_report;
-			union {
-				struct _rep_qtn_cca_info {
-					u_int16_t others_time;
-					u_int32_t sp_fail;
-					u_int32_t lp_fail;
-				} qtn_cca_info;
-				struct _rep_qtn_fat_info {
-					u_int16_t free_airtime;
-				} qtn_fat_info;
-			} u;
+			u_int32_t sp_fail;
+			u_int32_t lp_fail;
+			u_int16_t others_time;
 			u_int8_t *extra_ie;
 			u_int16_t extra_ie_len;
 		} qtn_cca;
@@ -1496,7 +1481,6 @@
 	 (_bi) : IEEE80211_BINTVAL_DEFAULT)
 
 #define IEEE80211_SCAN_TBL_LEN_MAX_DFLT	2000
-#define IEEE80211_BEACON_HANG_TIMEOUT_DFLT	(5 * IEEE80211_BINTVAL_DEFAULT)
 
 #define IEEE80211_BWSTR_20	"20"
 #define IEEE80211_BWSTR_40	"40"
diff --git a/include/shared/net80211/ieee80211.h b/include/shared/net80211/ieee80211.h
index 47b9c0e..2988ef0 100644
--- a/include/shared/net80211/ieee80211.h
+++ b/include/shared/net80211/ieee80211.h
@@ -628,10 +628,7 @@
 } __packed;
 
 /* Quantenna SCS IE */
-#define QTN_SCS_IE_TYPE_STA_INTF_RPT		0x1
-#define QTN_SCS_IE_TYPE_STA_FAT_RPT		0x3
-#pragma pack(push)
-#pragma pack(1)
+#define QTN_SCS_IE_TYPE_STA_INTF_RPT        0x1
 struct ieee80211_ie_qtn_scs {
 	uint8_t id;			/* IEEE80211_ELEMID_VENDOR */
 	uint8_t len;                    /* length in bytes */
@@ -639,25 +636,14 @@
 	uint8_t qtn_ie_type;		/* IE type */
 	uint8_t scs_ie_type;            /* for future expansion and backward compatibility */
 	/* following depends on scs_ie_type */
-	union {
-		struct {
-			uint32_t sp_fail;		/* short preamble failure in last second */
-			uint32_t lp_fail;		/* long preamble failure in last second */
-			uint16_t others_time;		/* rx + tx time for all nodes */
-		} cca_info;
-		struct {
-			uint16_t free_airtime;		/* free air time */
-		} fat_info;
-	} u;
-	/* Warning: using this variable length field would cause backward compatibility issue
-	 * in future if want to add new fields */
+	uint32_t sp_fail;		/* short preamble failure in last second */
+	uint32_t lp_fail;		/* long preamble failure in last second */
+	uint16_t others_time;		/* rx + tx time for all nodes */
 	uint16_t extra_ie_len;		/* extra ie len */
 	uint8_t extra_ie[0];		/* tdls stats */
-};
-#pragma pack(pop)
-#define QTN_SCS_IE_LEN_MIN			7    /* till scs ie type */
-#define QTN_SCS_IE_STA_INTF_RPT_LEN_MIN		(QTN_SCS_IE_LEN_MIN + 8)
-#define QTN_SCS_IE_STA_FAT_RPT_LEN_MIN		(QTN_SCS_IE_LEN_MIN + 2)
+} __packed;
+#define QTN_SCS_IE_LEN_MIN              7    /* till scs ie type */
+#define QTN_SCS_IE_STA_INTF_RPT_LEN_MIN     (QTN_SCS_IE_LEN_MIN + 8)
 
 #define IEEE80211_IS_ALL_SET(__flags__, __msb__)	\
 	(((__flags__) & ((1 << ((__msb__)+1)) - 1)) == ((1 << ((__msb__)+1)) - 1))
@@ -2960,7 +2946,7 @@
 
 #define	IEEE80211_RATE_BASIC		0x80
 #define	IEEE80211_RATE_VAL			0x7f
-#define IEEE80211_BSS_MEMBERSHIP_SELECTOR_HT_PHY 0x7F
+#define IEEE80211_BSS_MEMBERSHIP_SELECTOR	0x7F
 
 /* EPR information element flags */
 #define	IEEE80211_ERP_NON_ERP_PRESENT	0x01
@@ -3077,9 +3063,6 @@
 #define PEER_VENDOR_RTK		0x10
 #define PEER_VENDOR_INTEL	0x20
 
-#define PEER_VENDOR_MASK	(PEER_VENDOR_BRCM | PEER_VENDOR_ATH | PEER_VENDOR_RLNK \
-				| PEER_VENDOR_RTK | PEER_VENDOR_INTEL)
-
 /*
  * 802.11ac VHT Capabilities element
  */
@@ -3091,7 +3074,6 @@
 } __packed;
 
 /* VHT capabilities flags */
-#define IEEE80211_VHTCAP_C_CHWIDTH			0x0000000C
 #define IEEE80211_VHTCAP_C_RX_LDPC			0x00000010
 #define IEEE80211_VHTCAP_C_SHORT_GI_80			0x00000020
 #define IEEE80211_VHTCAP_C_SHORT_GI_160			0x00000040
diff --git a/include/shared/net80211/ieee80211_dfs_reentry.h b/include/shared/net80211/ieee80211_dfs_reentry.h
index 8ea15f9..fc5c37c 100644
--- a/include/shared/net80211/ieee80211_dfs_reentry.h
+++ b/include/shared/net80211/ieee80211_dfs_reentry.h
@@ -30,11 +30,4 @@
 #define IEEE80211_PICK_NOPICK_BG	0x0800		/* scan background and do not pick channel */
 #define IEEE80211_PICK_DEFAULT		(IEEE80211_PICK_ALL | IEEE80211_PICK_CLEAREST)
 
-#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_DFS_ONLY		0x4/* Pick channels from available DFS set*/
-#define IEEE80211_SCS_PICK_AVAILABLE_ANY_CHANNEL	0x8/* Pick channels from available DFS and Non-DFS sets*/
-#define IEEE80211_SCS_PICK_ANYWAY			0x10/* Omit channel margins during channel pick*/
-#define IEEE80211_SCS_PICK_NOT_AVAILABLE_DFS_ONLY	0x20/* Pick channels from unavailable DFS set*/
-
 #endif
diff --git a/include/shared/net80211/ieee80211_ioctl.h b/include/shared/net80211/ieee80211_ioctl.h
index 6b43162..9c3cd0c 100644
--- a/include/shared/net80211/ieee80211_ioctl.h
+++ b/include/shared/net80211/ieee80211_ioctl.h
@@ -307,10 +307,6 @@
 	int32_t ib_pkt_len;
 };
 
-#define QTN_CHAN_AVAIL_STATUS_TO_STR	{"", "Non-Available", "Available",\
-					"", "Not-Available-Radar-Detected", "",\
-					"", "", "Not-Available-CAC-Required"}
-
 #define IEEE80211REQ_SCS_REPORT_CHAN_NUM    32
 struct ieee80211req_scs_currchan_rpt {
 	uint8_t iscr_curchan;
@@ -323,7 +319,6 @@
 	uint16_t iscr_rx_ms;
 	uint32_t iscr_pmbl;
 };
-
 struct ieee80211req_scs_ranking_rpt_chan {
 	uint8_t isrc_chan;
 	uint8_t isrc_dfs;
@@ -341,25 +336,12 @@
 	/* channel usage */
 	uint32_t isrc_duration;
 	uint32_t isrc_times;
-	uint8_t isrc_chan_avail_status;
 };
-
 struct ieee80211req_scs_ranking_rpt {
 	uint8_t isr_num;
 	struct ieee80211req_scs_ranking_rpt_chan isr_chans[IEEE80211REQ_SCS_REPORT_CHAN_NUM];
 };
 
-struct ieee80211req_scs_interference_rpt_chan {
-	uint8_t isrc_chan;
-	uint16_t isrc_cca_intf_20;
-	uint16_t isrc_cca_intf_40;
-	uint16_t isrc_cca_intf_80;
-};
-struct ieee80211req_scs_interference_rpt {
-	uint8_t isr_num;
-	struct ieee80211req_scs_interference_rpt_chan isr_chans[IEEE80211REQ_SCS_REPORT_CHAN_NUM];
-};
-
 struct ieee80211req_scs_score_rpt_chan {
 	uint8_t isrc_chan;
 	uint8_t isrc_score;
@@ -427,7 +409,6 @@
 	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_CCA_THRESHOD_TYPE,
 	SCS_PARAM_MAX,
 };
 
@@ -445,7 +426,6 @@
 #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)
-#define IEEE80211REQ_SCS_GET_INTERFERENCE_RPT     (IEEE80211REQ_SCS_FLAG_GET | 6)
 	uint32_t *is_status;                  /* SCS specific reason for ioctl failure */
 #define IEEE80211REQ_SCS_RESULT_OK                    0
 #define IEEE80211REQ_SCS_RESULT_SYSCALL_ERR           1
@@ -491,20 +471,11 @@
 };
 
 /*
- * Basic IEEE Channel info for wireless tools
- */
-struct ieee80211_chan {
-	uint16_t ic_freq;	/* Freq setting in Mhz */
-	uint32_t ic_flags;	/* Channel flags */
-	uint8_t ic_ieee;	/* IEEE channel number */
-} __packed;
-
-/*
  * Get the active channel list info.
  */
 struct ieee80211req_chaninfo {
 	uint32_t ic_nchans;
-	struct ieee80211_chan ic_chans[IEEE80211_CHAN_MAX];
+	struct ieee80211_channel ic_chans[IEEE80211_CHAN_MAX];
 };
 
 /*
@@ -862,7 +833,6 @@
 	uint32_t channel[CSW_MAX_RECORDS_MAX];
 	uint32_t timestamp[CSW_MAX_RECORDS_MAX];
 	uint32_t reason[CSW_MAX_RECORDS_MAX];
-	uint8_t csw_record_mac[CSW_MAX_RECORDS_MAX][IEEE80211_ADDR_LEN];
 };
 
 struct ieee80211req_radar_status {
@@ -899,9 +869,6 @@
 	int8_t		ap_qhop_role;
 	uint32_t	ap_bestrate;
 	int32_t		ap_num_genies;
-	uint16_t	ap_beacon_intval;
-	uint8_t		ap_dtim_intval;
-	uint8_t		ap_is_ess;
 	int8_t		ap_ie_buf[0];	/* just to remind there might be WPA/RSN/WSC IEs right behind*/
 };
 
@@ -1385,7 +1352,7 @@
 	IEEE80211_PARAM_VAP_TX_AMSDU = 302,     /* Enable/disable A-MSDU for VAP */
 	IEEE80211_PARAM_PC_OVERRIDE = 303,              /* RSSI based Power-contraint override */
 	IEEE80211_PARAM_NDPA_DUR = 304,         /* set vht NDPA duration field */
-	IEEE80211_PARAM_SU_TXBF_PKT_CNT = 305,  /* set the pkt cnt per txbf interval to fire SU sounding to a node */
+	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 */
 	IEEE80211_PARAM_TQEW_DESCR_LIMIT = 307,     /* Set/Get tqew descriptors limit */
 	IEEE80211_PARAM_SCAN_TBL_LEN_MAX = 308,
@@ -1510,41 +1477,8 @@
 	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 */
-	IEEE80211_PARAM_RX_BAR_SYNC = 435,	/* sync rx reorder window on receiving BAR */
-	IEEE80211_PARAM_GET_REG_DOMAIN_IS_EU = 436,	/* Check if regulatory region falls under EU domain*/
-	IEEE80211_PARAM_AUC_TX_AGG_DURATION = 437,
-	IEEE80211_PARAM_GET_CHAN_AVAILABILITY_STATUS = 438, /* Channel availability status */
-	IEEE80211_PARAM_STOP_ICAC = 439,
-	IEEE80211_PARAM_STA_DFS_STRICT_MODE = 440,	/* STA DFS - strict mode operation */
-	IEEE80211_PARAM_STA_DFS_STRICT_MEASUREMENT_IN_CAC = 441, /* STA DFS - Send Measurement report if radar found during CAC */
-	IEEE80211_PARAM_STA_DFS_STRICT_TX_CHAN_CLOSE_TIME = 442, /*  STA DFS - Configure channel tx close time when radar detected */
-	IEEE80211_PARAM_NEIGHBORHOOD_THRSHD = 443, /* Set the threshold for neighborhood density type */
-	IEEE80211_PARAM_NEIGHBORHOOD_TYPE = 444, /* Get the neighborhood density type */
-	IEEE80211_PARAM_NEIGHBORHOOD_COUNT = 445,/* Get the neighbor count */
-	IEEE80211_PARAM_MU_TXBF_PKT_CNT = 446, /* set the pkt cnt per txbf interval to fire mu sounding to a node */
-	IEEE80211_PARAM_DFS_CSA_CNT = 447,	/* set CSA count for reason of IEEE80211_CSW_REASON_DFS */
-	IEEE80211_PARAM_IS_WEATHER_CHANNEL = 448, /* check if it's a weather channel */
-	IEEE80211_PARAM_GET_CCA_STATS = 458, /* get CCA stats */
-	IEEE80211_PARAM_OPMODE_BW_SW_EN = 459, /* enable/disable dynamic peer BW using opmode action */
-	IEEE80211_PARAM_LEGACY_SIFS_TIMING = 460, /* write/read legacy sifs timing register */
-	IEEE80211_PARAM_WEATHERCHAN_CAC_ALLOWED = 461, /* control whether weather channels CAC is allowed or not */
-	IEEE80211_PARAM_BEACON_HANG_TIMEOUT = 462,	/* Software beacon hang checking timeout, in ms */
-	IEEE80211_PARAM_BB_DEAFNESS_WAR_EN = 463, /* control whether WAR for BB deafness fast recovery is enabled or not */
-	IEEE80211_PARAM_VOPT = 464,	/* enable/disable V optimization */
-	IEEE80211_PARAM_VMODE = 465,		/* disable/enable v test mode */
-	IEEE80211_PARAM_VAP_TX_AMSDU_11N = 466,     /* Enable/disable A-MSDU for 11n nodes */
-	IEEE80211_PARAM_DYNAMIC_SIFS_TIMING = 468, /* set/get SIFS timing */
 };
 
-#define IEEE80211_OFFCHAN_SUSPEND_MASK		0x80000000
-#define IEEE80211_OFFCHAN_SUSPEND_MASK_S	31
-#define IEEE80211_OFFCHAN_TIMEOUT_MASK		0x7FFFFFFF
-#define IEEE80211_OFFCHAN_TIMEOUT_DEFAULT	1 /* second*/
-#define IEEE80211_OFFCHAN_TIMEOUT_MAX		60 /* second*/
-#define IEEE80211_OFFCHAN_TIMEOUT_MIN		1 /* second*/
-#define IEEE80211_OFFCHAN_TIMEOUT_AUTH		5 /* second*/
-#define IEEE80211_OFFCHAN_TIMEOUT_EAPOL		8 /* second*/
-
 #define	SIOCG80211STATS			(SIOCDEVPRIVATE+2)
 /* NB: require in+out parameters so cannot use wireless extensions, yech */
 #define	IEEE80211_IOCTL_GETKEY		(SIOCDEVPRIVATE+3)
@@ -1606,7 +1540,6 @@
 #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)
-#define SIOCDEV_SUBIO_GET_INTERFACE_WMMAC_STATS	(SIOCDEV_SUBIO_BASE + 41)
 
 enum L2_EXT_FILTER_PORT {
 	L2_EXT_FILTER_EMAC_0_PORT = 0,
@@ -1911,20 +1844,6 @@
 	uint8_t wds_extender_ie[0];
 }__packed;
 
-struct ieee80211req_interface_wmmac_stats {
-#define WMM_AC_NUM 4
-	/**
-	 * Number of dropped data packets failed to transmit through
-	 * wireless media for each traffic category(TC).
-	 */
-	uint32_t tx_wifi_drop[WMM_AC_NUM];
-	/**
-	 * Number of sent data packets that transmit through
-	 * wireless media for each traffic category(TC).
-	 */
-	uint32_t tx_wifi_sent[WMM_AC_NUM];
-};
-
 #endif /* __linux__ */
 
 #pragma pack()
diff --git a/include/shared/qtn/beacon_ioctl.h b/include/shared/qtn/beacon_ioctl.h
deleted file mode 100644
index eb7d501..0000000
--- a/include/shared/qtn/beacon_ioctl.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2015 Quantenna Communications, Inc.
- * All rights reserved.
- */
-
-#ifndef __BEACON_IOCTL_H__
-#define __BEACON_IOCTL_H__
-/*
-#define LHOST_DEBUG_BEACON
-#define MUC_DEBUG_BEACON
-*/
-
-#define BEACON_PARAM_SIZE		1000
-/*
- * A general ie descriptor shared between sender (LHOST) and receiver (MuC).
- * To avoid issues of alignment compatibility between different hosts, all fields has 32bits
- * aligned.
- */
-struct beacon_shared_ie_t
-{
-	dma_addr_t	buf;			/* MuC reference to the ie buffer */
-	uint8_t *	lhost_buf;		/* LHOST reference to the ie buffer */
-	uint32_t	size;			/* total length of ie including id + len */
-	uint32_t	next_muc_addr;		/* next ie descriptor address presented in MuC addr mapping */
-	struct		beacon_shared_ie_t *next;	/* next ie descriptor */
-};
-#endif /* __BEACON_IOCTL_H__ */
diff --git a/init/Kconfig b/init/Kconfig
index d6bbb4c..7c30d76 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -894,15 +894,6 @@
 	help
 	  Enable support for generating core dumps. Disabling saves about 4k.
 
-config ARC_ELF_CORE_FIX
-	default n
-	bool "Enable core dump .reg section fix for ARC" if EMBEDDED
-	depends on ARCH_ARC && ELF_CORE
-	help
-	  Changes ELF core dump registers section format to conform to binutils/gdb
-	  core dump format. Enables kernel to generate core dumps readable by
-	  new versions of ARC GNU toolchain (e.g. 2015.12).
-
 config PCSPKR_PLATFORM
 	bool "Enable PC-Speaker support" if EMBEDDED
 	depends on ALPHA || X86 || MIPS || PPC_PREP || PPC_CHRP || PPC_PSERIES
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
index d3676ec..b16e1c9 100644
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
@@ -22,8 +22,6 @@
 #include <asm/uaccess.h>
 #include "br_private.h"
 
-#include <qtn/qtn_skb_cb.h>
-
 /* net device transmit always called with BH disabled */
 netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev)
 {
@@ -47,7 +45,6 @@
 
 	skb_reset_mac_header(skb);
 	skb_pull(skb, ETH_HLEN);
-	M_FLAG_SET(skb, M_ORIG_BR);
 
 	rcu_read_lock();
 	if (is_multicast_ether_addr(dest)) {
diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c
index 91a3067..570ce26 100644
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -115,11 +115,6 @@
 	return retval;
 }
 
-int br_wlan_report_flood(struct net_bridge *br)
-{
-	return !!br->wlan_report_flood_enable;
-}
-
 int br_handle_frame_finish_multicast(struct sk_buff *skb,
 		struct net_bridge *br, const unsigned char *dest)
 {
@@ -142,11 +137,8 @@
 			br_handle_mcast_mgmt_frame(skb, br) &&
 			br_handle_mcast_exception(br, dest, data)) {
 		if (BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) {
-			if (!br_is_wlan_dev(skb->dev) ||
-					br_wlan_report_flood(br)) {
-				mdst = br_mdb_get_ext(br, skb);
-				br_report_flood(br, mdst, skb);
-			}
+			mdst = br_mdb_get_ext(br, skb);
+			br_report_flood(br, mdst, skb);
 			br_multicast_forward(NULL, skb, skb2);
 			skb = NULL;
 		} else if(BR_INPUT_SKB_CB_UCAST_FWD(skb)) {
@@ -214,7 +206,6 @@
 	}
 
 	/* insert into forwarding database after filtering to avoid spoofing */
-	if (!M_FLAG_ISSET(skb, M_NO_L2_LRN))
 	br_fdb_update(br, p, eth_hdr(skb)->h_source, skb->src_port);
 	br_handle_fwt_capacity(br);
 
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
index bd9eafa..116007c 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -62,9 +62,6 @@
 	"block_old_sources",
 };
 
-/*
- * This function assumes that igmp packet is valid
- */
 static void br_igmp_snoop_trace_v3_report(struct net_device *dev, __be32 saddr,
 	const struct igmphdr *igmp, const char *vlan_str, uint8_t snoop_enabled)
 {
@@ -151,7 +148,7 @@
 	}
 
 	BR_SNOOP_DBG(" from %pI4 group %pI4%s\n",
-		&saddr, &igmp->group, snoop_enabled ? "" : " [ignored]");
+		&saddr, igmp->group, snoop_enabled ? "" : " [ignored]");
 
 }
 
@@ -944,7 +941,6 @@
 		goto err;
 
 	if (!port) {
-		if (hlist_unhashed(&mp->mglist))
 		hlist_add_head(&mp->mglist, &br->mglist);
 		mod_timer(&mp->timer, now + br->multicast_membership_interval);
 		goto out;
@@ -1218,24 +1214,22 @@
 
 		/* We treat this as an IGMPv2 report for now. */
 		switch (type) {
-		case IGMPV3_MODE_IS_INCLUDE:
 		case IGMPV3_MODE_IS_EXCLUDE:
-		case IGMPV3_CHANGE_TO_INCLUDE:
 		case IGMPV3_CHANGE_TO_EXCLUDE:
 		case IGMPV3_ALLOW_NEW_SOURCES:
 		case IGMPV3_BLOCK_OLD_SOURCES:
+			err = br_ip4_multicast_add_group(br, port,
+					src_mac, skb->src_port, group);
 			break;
+		case IGMPV3_CHANGE_TO_INCLUDE:
+		case IGMPV3_MODE_IS_INCLUDE:
+			br_ip4_multicast_leave_group(br, port,
+					src_mac, skb->src_port, group);
+			/* continue */
 		default:
 			continue;
 		}
 
-		if ((type == IGMPV3_CHANGE_TO_INCLUDE || type == IGMPV3_MODE_IS_INCLUDE) &&
-				ntohs(grec->grec_nsrcs) == 0) {
-			br_ip4_multicast_leave_group(br, port, src_mac, skb->src_port, group);
-		} else {
-			err = br_ip4_multicast_add_group(br, port, src_mac, skb->src_port, group);
-		}
-
 		if (err)
 			break;
 	}
@@ -1799,14 +1793,7 @@
 	BR_INPUT_SKB_CB(skb)->igmp = 1;
 	ih = igmp_hdr(skb2);
 
-/*
- * Allow IGMP snooping on PCIe RC ever if it is disabled
- * This is a WAR to allow IP multicast traffic to go on HDP
- */
-#ifndef CONFIG_TOPAZ_PCIE_HOST
-	if (br->igmp_snoop_enabled)
-#endif
-	{
+	if (br->igmp_snoop_enabled) {
 		switch (ih->type) {
 		case IGMP_HOST_MEMBERSHIP_REPORT:
 		case IGMPV2_HOST_MEMBERSHIP_REPORT:
@@ -1827,10 +1814,7 @@
 		}
 	}
 
-	if (!err)
-		br_igmp_snoop_trace(skb->dev, iph->saddr, ih, skb2, br->igmp_snoop_enabled);
-	else
-		BR_SNOOP_DBG("IGMP packet is damaged\n");
+	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;
diff --git a/net/bridge/br_public.h b/net/bridge/br_public.h
index edb0284..65aa114 100755
--- a/net/bridge/br_public.h
+++ b/net/bridge/br_public.h
@@ -154,7 +154,7 @@
 	u32				hash_max;
 #define BR_ALWAYS_FLOOD_REPORT		(-1U)
 	u32				report_flood_interval;
-	u32				wlan_report_flood_enable;
+
 	u32				multicast_last_member_count;
 	u32				multicast_startup_queries_sent;
 	u32				multicast_startup_query_count;
diff --git a/net/bridge/br_sysfs_br.c b/net/bridge/br_sysfs_br.c
index edcdd52..65cff5e 100644
--- a/net/bridge/br_sysfs_br.c
+++ b/net/bridge/br_sysfs_br.c
@@ -288,39 +288,6 @@
 static DEVICE_ATTR(report_flood_interval, S_IRUGO | S_IWUSR, show_report_flood_interval,
 		   store_report_flood_interval);
 
-static ssize_t show_wlan_report_flood_enable(struct device *d,
-			      struct device_attribute *attr, char *buf)
-{
-	struct net_bridge *br = to_bridge(d);
-	return sprintf(buf, "%u\n", br->wlan_report_flood_enable);
-}
-
-static ssize_t store_wlan_report_flood_enable(struct device *d,
-			       struct device_attribute *attr, const char *buf,
-			       size_t len)
-{
-	struct net_bridge *br = to_bridge(d);
-	char *endp;
-	long val;
-
-	if (!capable(CAP_NET_ADMIN))
-		return -EPERM;
-
-	val = simple_strtol(buf, &endp, 0);
-	if (endp == buf)
-		return -EINVAL;
-
-	rtnl_lock();
-	br->wlan_report_flood_enable = val;
-	rtnl_unlock();
-	printk("BRIDGE WLAN report flood-forwarding %s\n",
-				br->wlan_report_flood_enable ? "enabled" : "disabled");
-
-	return len;
-}
-static DEVICE_ATTR(wlan_report_flood_enable, S_IRUGO | S_IWUSR, show_wlan_report_flood_enable,
-		   store_wlan_report_flood_enable);
-
 static ssize_t show_priority(struct device *d, struct device_attribute *attr,
 			     char *buf)
 {
@@ -831,7 +798,6 @@
 	&dev_attr_multicast_query_response_interval.attr,
 	&dev_attr_multicast_startup_query_interval.attr,
 	&dev_attr_report_flood_interval.attr,
-	&dev_attr_wlan_report_flood_enable.attr,
 	&dev_attr_igmp_snoop_group.attr,
 	&dev_attr_igmp_snoop_debug.attr,
 #endif
