diff --git a/arch/arc/boot/Makefile b/arch/arc/boot/Makefile
index 655d0cb..502336f 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 0x84938000 -e 0x84938000 -n "ARC700 Linux kernel" -Q 0x1 -d
+MKIMAGEFLAGS := -A arc -O linux -C lzma -T kernel -a 0x8493A000 -e 0x8493A000 -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 c70bcb7..0e586c2 100644
--- a/arch/arc/configs/topaz_dbdc_config
+++ b/arch/arc/configs/topaz_dbdc_config
@@ -80,6 +80,7 @@
 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 1b65a29..744eb1f 100644
--- a/arch/arc/configs/topaz_fpga_config
+++ b/arch/arc/configs/topaz_fpga_config
@@ -80,6 +80,7 @@
 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 2984cf7..555fa6d 100644
--- a/arch/arc/configs/topaz_host_config
+++ b/arch/arc/configs/topaz_host_config
@@ -82,6 +82,7 @@
 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 4924fd6..1dfe540 100755
--- a/arch/arc/configs/topaz_msft_config
+++ b/arch/arc/configs/topaz_msft_config
@@ -80,6 +80,7 @@
 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 4924fd6..1dfe540 100755
--- a/arch/arc/configs/topaz_msmr_config
+++ b/arch/arc/configs/topaz_msmr_config
@@ -80,6 +80,7 @@
 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 ee42e2e..7df77c7 100644
--- a/arch/arc/configs/topaz_pcie_config
+++ b/arch/arc/configs/topaz_pcie_config
@@ -81,6 +81,7 @@
 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 66e9102..11525a6 100644
--- a/arch/arc/configs/topaz_rfic6_config
+++ b/arch/arc/configs/topaz_rfic6_config
@@ -80,6 +80,7 @@
 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 4924fd6..e5fa6d3 100644
--- a/arch/arc/configs/topaz_vb_config
+++ b/arch/arc/configs/topaz_vb_config
@@ -80,6 +80,7 @@
 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
@@ -449,7 +450,8 @@
 # CONFIG_FIRMWARE_IN_KERNEL is not set
 CONFIG_EXTRA_FIRMWARE=""
 # CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_CONNECTOR is not set
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
 CONFIG_MTD=y
 # CONFIG_MTD_DEBUG is not set
 # CONFIG_MTD_TESTS is not set
@@ -528,6 +530,7 @@
 # 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 60178b1..f5c487a 100755
--- a/arch/arc/include/asm/elf.h
+++ b/arch/arc/include/asm/elf.h
@@ -25,8 +25,13 @@
 
 #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 d981025..6df40c9 100644
--- a/arch/arc/kernel/troubleshoot.c
+++ b/arch/arc/kernel/troubleshoot.c
@@ -24,7 +24,6 @@
 #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 */
@@ -424,7 +423,7 @@
 	workspace_size = zlib_deflate_workspacesize();
 	printk(KERN_DEBUG "%s: workspace_size = %d\n", __func__, workspace_size);
 
-	stream.workspace = vmalloc(workspace_size);
+	stream.workspace = kmalloc(workspace_size, GFP_ATOMIC);
         if (!stream.workspace) {
 		printk(KERN_ERR "%s: Failed to allocate %d bytes for deflate workspace\n", __func__,
 			zlib_deflate_workspacesize());
@@ -435,7 +434,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);
-		vfree(stream.workspace);
+		kfree(stream.workspace);
 		return retval;
 	}
 
@@ -534,7 +533,7 @@
 		printk(KERN_WARNING "%s: zlib_deflateEnd failed, zlib_retval = %d\n", __func__, zlib_retval);
 	}
 
-	vfree(stream.workspace);
+	kfree(stream.workspace);
 
 	return retval;
 }
diff --git a/arch/arc/proc/arc700/traps.c b/arch/arc/proc/arc700/traps.c
index 4deb21e..c47fc28 100755
--- a/arch/arc/proc/arc700/traps.c
+++ b/arch/arc/proc/arc700/traps.c
@@ -35,14 +35,15 @@
 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) {
-        show_kernel_fault_diag(str, regs, address, cause_reg);
-    }
+	if (running_on_hw) {
+		oops_in_progress = 1;
+		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 5c3f9d2..79c0aa1 100644
--- a/drivers/topaz/Makefile
+++ b/drivers/topaz/Makefile
@@ -1,10 +1,22 @@
 EXTRA_CFLAGS +=	-Wall -Werror -Wno-unknown-pragmas
 
 ifeq ($(board_config),topaz_config)
-	EXTRA_CFLAGS += -DTOPAZ_VB_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
 else
-	ifeq ($(board_config),topaz_vb_config)
-		EXTRA_CFLAGS += -DTOPAZ_VB_CONFIG
+	ifeq ($(board_config),topaz_msmr_config)
+		EXTRA_CFLAGS += -DERICSSON_CONFIG
 	endif
 endif
 
diff --git a/drivers/topaz/fwt_if.c b/drivers/topaz/fwt_if.c
index 661496c..e9ef948 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)) {
-			*((uint8_t*)var) = param;
+			*((uint32_t*)var) = param;
 		} else {
 			return -EINVAL;
 		}
diff --git a/drivers/topaz/switch_emac.c b/drivers/topaz/switch_emac.c
index a805902..7169949 100644
--- a/drivers/topaz/switch_emac.c
+++ b/drivers/topaz/switch_emac.c
@@ -53,7 +53,7 @@
 
 #include <compat.h>
 
-#if defined (TOPAZ_VB_CONFIG)
+#if defined (TOPAZ_SRAM_CONFIG)
 #define EMAC_DESC_USE_SRAM 0
 #else
 #define EMAC_DESC_USE_SRAM 1
@@ -78,7 +78,12 @@
 #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[] = {
 	{
@@ -322,6 +327,7 @@
 	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:
@@ -340,18 +346,11 @@
 	/*
 	 * restore VLAN tag to packet if needed
 	 */
-	skb2 = switch_vlan_restore_tag(skb, 1);
-	if (!skb2) {
-		printk(KERN_WARNING "failed to add VLAN tag back to header\n");
+	skb2 = switch_vlan_from_proto_stack(skb, vdev, 0, 1);
+	if (!skb2)
 		return NETDEV_TX_OK;
-	}
 
-	/*
-	 * VLAN egress check, for EMAC ports
-	 */
-	if (vlan_enabled
-			&& !switch_vlan_is_local(skb2->data)
-			&& !qtn_vlan_egress(vport_tbl_lhost[priv->tqe_port], 0, skb2->data)) {
+	if (vlan_enabled && !qtn_vlan_egress(vdev, 0, skb2->data)) {
 		dev_kfree_skb(skb2);
 		return NETDEV_TX_OK;
 	}
@@ -696,8 +695,9 @@
 		}
 	}
 
-	switch_vlan_strip_tag(skb, 0);
-	netif_receive_skb(skb);
+	skb = switch_vlan_to_proto_stack(skb, 0);
+	if (skb)
+		netif_receive_skb(skb);
 }
 
 #ifdef TOPAZ_EMAC_NULL_BUF_WR
@@ -919,35 +919,53 @@
 	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[2];
+	struct topaz_dpi_field_def field;
 
-	/* IPv4 && UDP && srcport == 67 && dstport == 68 */
+	/* 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 = 2;
+	req.fields = &field;
+	req.field_count = 1;
 	req.out_port = TOPAZ_TQE_LHOST_PORT;
 	req.out_node = 0;
 	req.tid = 0;
 
-	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;
+	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;
 
 	topaz_dpi_filter_add(port_num, &req);
 }
@@ -1099,12 +1117,13 @@
 
 	topaz_ipprt_clear_all_entries(port_num);
 	topaz_ipprt_set(port_num, IPPROTO_IGMP, TOPAZ_TQE_LHOST_PORT, 0);
-#if defined (TOPAZ_VB_CONFIG)
+#if defined(TOPAZ_CONGE_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);
@@ -1267,6 +1286,8 @@
 	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 96a9275..3329820 100644
--- a/drivers/topaz/switch_tqe.c
+++ b/drivers/topaz/switch_tqe.c
@@ -46,6 +46,7 @@
 #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];
@@ -81,6 +82,8 @@
 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);
@@ -119,24 +122,21 @@
 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;
 	}
 
-	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);
+	mcast_ent = g_tqe_fwt_get_mcast_ff_hook();
+	if (unlikely(!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);
 }
 
 void tqe_port_set_group(const enum topaz_tqe_port port, int32_t group)
@@ -165,6 +165,15 @@
 }
 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;
@@ -237,6 +246,7 @@
 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)
@@ -248,6 +258,7 @@
 			printk("%s line %d fail to get tqe semaphore\n", funcname, linenum);
 		prtcnt++;
 	}
+#endif
 	return 1;
 }
 
@@ -256,6 +267,7 @@
 uint32_t
 switch_tqe_multi_proc_sem_up(void)
 {
+#ifdef CONFIG_TOPAZ_PCIE_TARGET
 	if (tqe_sem_en == 0)
 		return 1;
 
@@ -265,6 +277,9 @@
 		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);
@@ -394,6 +409,32 @@
 		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
  */
@@ -423,7 +464,7 @@
 	}
 
 	/* find the expected enqueue count and set the HBM buffer reference count */
-	push_count = topaz_fwt_sw_mcast_enqueues(&mcast_ent, mcast_ent.port_bitmap,
+	push_count = tqe_mcast_enqueue_cnt(&mcast_ent, mcast_ent.port_bitmap,
 						in_port, in_node);
 	if (unlikely(!push_count)) {
 		return 0;
@@ -440,7 +481,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)  {
+				if (port != in_port && !tqe_port_same_group(in_port, port))  {
 					tqe_push_mcast(desc, NULL, port, 0, 0);
 					++pushes;
 				}
@@ -541,7 +582,7 @@
 	}
 
 	if (ipaddr) {
-		topaz_tqe_vlan_gettid(desc->data.pkt, &tid, &vlan_index);
+		topaz_tqe_vlan_gettid(bus_to_virt((uintptr_t)(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
@@ -551,7 +592,7 @@
 
 			if (g_tqe_fwt_get_mcast_hook)
 				mcast_ent = g_tqe_fwt_get_mcast_hook(fwt_lu.data.entry_addr,
-						ipaddr, *ether_type, vlan_index);
+						ipaddr, *ether_type);
 
 			if (mcast_ent) {
 				if ((mcast_ent->flood_forward) && (in_port == TOPAZ_TQE_MUC_PORT)) {
@@ -596,9 +637,12 @@
 }
 EXPORT_SYMBOL(tqe_register_ucastfwt_cbk);
 
-void tqe_register_macfwt_cbk(tqe_fwt_get_from_mac_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)
 {
 	 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);
 
@@ -635,10 +679,10 @@
 		if(g_dscp_flag){
 			tid = (g_dscp_value[desc->data.in_port] & 0xFF);
 		} else {
-			topaz_tqe_vlan_gettid(desc->data.pkt, &tid, &vlan_index);
+			topaz_tqe_vlan_gettid(bus_to_virt((uintptr_t)(desc->data.pkt)), &tid, &vlan_index);
 		}
 	} else {
-		topaz_tqe_vlan_gettid(desc->data.pkt, &tid, &vlan_index);
+		topaz_tqe_vlan_gettid(bus_to_virt((uintptr_t)(desc->data.pkt)), &tid, &vlan_index);
 	}
 
 	port = fwt_ent->out_port;
@@ -708,6 +752,222 @@
 }
 #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;
@@ -754,14 +1014,12 @@
 		return 0;
 
 	fwt_ent = g_tqe_fwt_get_ucast_hook(eh->ether_shost, eh->ether_dhost);
-	if (unlikely(!fwt_ent))
-		return 0;
+	if (unlikely(!fwt_ent || (fwt_ent->out_port == TOPAZ_TQE_DROP_PORT)))
+		return topaz_tx_unknown_unicast(desc, fwt_ent);
 
 	/* Don't return to sender */
 	if (unlikely((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_port_same_group(in_port, fwt_ent->out_port))) {
 		tqe_rx_pkt_drop(desc);
 		return 1;
 	}
@@ -1107,11 +1365,6 @@
 		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;
@@ -1139,14 +1392,7 @@
 		memcpy(hbm_buf_virt, buf_virt, data_len);
 		buf_virt = hbm_buf_virt;
 
-		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)) {
+		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);
@@ -1337,6 +1583,8 @@
 
 	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 89914c3..99cd319 100644
--- a/drivers/topaz/switch_vlan.c
+++ b/drivers/topaz/switch_vlan.c
@@ -23,6 +23,7 @@
 #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>
@@ -51,7 +52,6 @@
 
 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_DUMMY_PORT;
+static enum topaz_tqe_port g_topaz_tqe_pcie_rel_port = TOPAZ_TQE_DROP_PORT;
 void tqe_register_pcie_rel_port(const enum topaz_tqe_port tqe_port)
 {
 	g_topaz_tqe_pcie_rel_port = tqe_port;
@@ -468,107 +468,221 @@
 }
 EXPORT_SYMBOL(switch_vlan_clr_node);
 
-int switch_vlan_is_local(const uint8_t *data)
+static struct sk_buff *switch_vlan_tag_pkt(struct sk_buff *skb, uint16_t vlanid)
 {
-	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;
+	struct vlan_ethhdr *veth;
+	struct qtn_vlan_pkt old;
+	struct qtn_vlan_pkt *new;
 
-	if (likely(brdev)) {
-		ret = !compare_ether_addr(eth->h_source, brdev->dev_addr);
-		dev_put(brdev);
+	memcpy(&old, qtn_vlan_get_info(skb->data), sizeof(old));
+
+	if (skb_cow_head(skb, VLAN_HLEN) < 0) {
+		kfree_skb(skb);
+		return NULL;
 	}
+	veth = (struct vlan_ethhdr *)skb_push(skb, VLAN_HLEN);
 
-	return ret;
+	/* 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;
 }
-EXPORT_SYMBOL(switch_vlan_is_local);
 
-struct sk_buff *switch_vlan_strip_tag(struct sk_buff *skb, int copy)
+static struct sk_buff *switch_vlan_untag_pkt(struct sk_buff *skb, int copy)
 {
 	struct sk_buff *skb2;
 	struct vlan_ethhdr *veth;
+	struct qtn_vlan_pkt *pktinfo;
+
+	if (copy) {
+		skb2 = skb_copy(skb, GFP_ATOMIC);
+		kfree_skb(skb);
+	} else {
+		skb2 = skb;
+	}
+
+	if (!skb2)
+		return NULL;
+
+	veth = (struct vlan_ethhdr *)(skb2->data);
+	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;
+
+	return skb2;
+}
+
+struct net_device *switch_vlan_find_br(struct net_device *ndev)
+{
+	struct net_device *brdev = NULL;
+
+	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)
 		return skb;
 
-	veth = vlan_eth_hdr(skb);
-	if (veth->h_vlan_proto != __constant_htons(ETH_P_8021Q))
+	if (skb->protocol == __constant_htons(ETH_P_PAE))
 		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);
+	M_FLAG_SET(skb, M_ORIG_OUTSIDE);
 
-			return skb;
+	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);
+	} else {
+		return 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 (!skb)
+			return NULL;
+
+		skb->protocol = eth_type_trans(skb, skb->dev);
+	}
+
+	return skb;
+}
+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;
 		}
 
-		dev_put(brdev);
+		kfree_skb(skb);
+		skb = skb2;
 	}
 
-	if (copy) {
-		skb2 = skb_copy(skb, GFP_ATOMIC);
-		dev_kfree_skb(skb);
-	} else {
-		skb2 = skb;
-	}
+	pktinfo = qtn_vlan_get_info(skb->data);
+	pktinfo->magic = QVLAN_PKT_MAGIC;
 
-	if (!skb2)
-		return NULL;
-
-	veth = vlan_eth_hdr(skb2);
-	memmove((uint8_t *)veth - QVLAN_PKTCTRL_LEN + VLAN_HLEN,
-		(uint8_t *)veth - QVLAN_PKTCTRL_LEN,
-		QVLAN_PKTCTRL_LEN + 2 * VLAN_ETH_ALEN);
-
-	skb_push(skb2, ETH_HLEN - VLAN_HLEN);
-	skb2->protocol = eth_type_trans(skb2, skb2->dev);
-	M_FLAG_SET(skb2, M_VLAN_TAG_OWE);
-
-	return skb2;
+	M_FLAG_SET(skb, M_VLAN_TAGGED);
+	return skb;
 }
-EXPORT_SYMBOL(switch_vlan_strip_tag);
 
-struct sk_buff *switch_vlan_restore_tag(struct sk_buff *skb, int copy)
+struct sk_buff *switch_vlan_from_proto_stack(struct sk_buff *skb, struct qtn_vlan_dev *outdev, uint16_t ncidx, int copy)
 {
-	struct sk_buff *skb2;
-	struct qtn_vlan_pkt pkt;
+	struct qtn_vlan_pkt *pktinfo;
+	struct vlan_ethhdr *veth;
+	uint16_t vlanid;
+	int tag_in_frame;
+	int should_tag;
 
-	if (!M_FLAG_ISSET(skb, M_VLAN_TAG_OWE))
+	if (!vlan_enabled)
 		return skb;
 
-	if (copy) {
-		skb2 = skb_copy(skb, GFP_ATOMIC);
-		dev_kfree_skb(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 {
-		skb2 = skb;
+		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 (!skb2)
-		return NULL;
+	if (tag_in_frame != should_tag) {
+		if (should_tag)
+			skb = switch_vlan_tag_pkt(skb, vlanid);
+		else
+			skb = switch_vlan_untag_pkt(skb, copy);
+        }
 
-	memcpy(&pkt, qtn_vlan_get_info(skb2->data), sizeof(pkt));
-	BUG_ON(pkt.magic != QVLAN_PKT_MAGIC);
-
-	skb2 = __vlan_put_tag(skb2, pkt.vlan_info & QVLAN_MASK_VID);
-	if (!skb2)
-		return NULL;
-
-	if (unlikely(skb_headroom(skb2) < QVLAN_PKTCTRL_LEN)) {
-		dev_kfree_skb(skb2);
-		return NULL;
-	}
-
-	memcpy(qtn_vlan_get_info(skb2->data), &pkt, sizeof(pkt));
-
-	return skb2;
+	return skb;
+drop_out:
+	kfree_skb(skb);
+	return NULL;
 }
-EXPORT_SYMBOL(switch_vlan_restore_tag);
+EXPORT_SYMBOL(switch_vlan_from_proto_stack);
 
 static int switch_vlan_stats_rd(char *page, char **start, off_t offset,
 		int count, int *eof, void *data)
@@ -589,13 +703,13 @@
 		if (unlikely(!ndev))
 			continue;
 
-		p += sprintf(p, "%s\ti-pass\t\te-pass\t\ti-drop\t\te-drop\n", ndev->name);
-		p += sprintf(p, "Lhost\t%u\t\t%u\t\t%u\t\t%u\n", vdev->ig_pass.lhost, vdev->eg_pass.lhost,
-				vdev->ig_drop.lhost, vdev->eg_drop.lhost);
-		p += sprintf(p, "AuC\t%u\t\t%u\t\t%u\t\t%u\n", vdev->ig_pass.auc, vdev->eg_pass.auc,
-				vdev->ig_drop.auc, vdev->eg_drop.auc);
-		p += sprintf(p, "MuC\t%u\t\t%u\t\t%u\t\t%u\n", vdev->ig_pass.muc, vdev->eg_pass.muc,
-				vdev->ig_drop.muc, vdev->eg_drop.muc);
+		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);
 
 		dev_put(ndev);
 	}
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index 3bc625e..c73137b 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -57,6 +57,10 @@
 #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
@@ -1401,8 +1405,38 @@
 				    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]);
@@ -1576,7 +1610,13 @@
 		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
deleted file mode 100644
index 45f863a..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.103.0-v32.104.0
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * \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
deleted file mode 100644
index a6e95ca..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.104.0-v32.105.0
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
deleted file mode 100644
index c894ee5..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.108.0-v32.109.0
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * \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
deleted file mode 100644
index b3c858a..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.108.1-v32.108.2
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index bbeb7ca..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.111.0-v32.112.0
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 8b91091..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.112.0-v32.113.0
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 42a3b91..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.117.0-v32.118.0
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 084235a..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.118.0-v32.119.0
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 95dbb57..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.120.0-v32.121.0
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * \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
deleted file mode 100644
index c089639..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.122.0-v32.123.0
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * \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
deleted file mode 100644
index d2e821a..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.123.0-v32.124.0
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
deleted file mode 100644
index e8d6916..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.128.0-v32.129.0
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 72deaaa..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.129.0-v32.130.0
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 3a9b6ef..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.90.0-v32.91.0
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * \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
deleted file mode 100644
index c140f29..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.94.0-v32.95.0
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * \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
deleted file mode 100644
index b43b08d..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v32.95.0-v32.96.0
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 76b4a7b..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.12-v35.1.0.13
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 68dac1f..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.14-v35.1.0.15
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index c3fbe75..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.15-v35.2.0.1
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * \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
deleted file mode 100644
index e5ca032..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.4-v35.1.0.5
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 14062b1..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.6-v35.1.0.7
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index e536db9..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.1.0.9-v35.1.0.10
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 8773b07..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.14-v35.2.0.15
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
deleted file mode 100644
index d32355a..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.15-v35.2.0.16
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 29c68ba..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.16-v35.2.0.17
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 9f72cf7..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.19-v35.2.0.20
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 6df4759..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.2-v35.2.0.3
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 26cf365..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.4-v35.2.0.5
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 469f884..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.7-v35.2.0.8
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 6e4498a..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v35.2.0.9-v35.2.0.10
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
new file mode 100644
index 0000000..2e5e107
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1-v36.4
@@ -0,0 +1,50 @@
+/**
+ * \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
deleted file mode 100644
index bd4cc87..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.0-v36.1.0.1
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 1ecbb03..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.10-v36.1.0.11
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
deleted file mode 100644
index eb2fc12..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.13-v36.1.0.14
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 31dbf12..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.14-v36.1.0.15
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index b9dabe2..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.15-v36.1.0.16
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * \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
deleted file mode 100644
index f965cdd..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.3-v36.1.0.4
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 77e2894..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.5-v36.1.0.6
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * \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
deleted file mode 100644
index c94ef5c..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.7-v36.1.0.8
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 826e9b3..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.1.0.8-v36.1.0.9
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
new file mode 100644
index 0000000..450d713
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4-v36.5
@@ -0,0 +1,36 @@
+/**
+ * \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
deleted file mode 100644
index 9245df3..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.1-v36.4.0.2
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 849c111..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.3-v36.4.0.4
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 10080bc..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.4-v36.4.0.5
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 604130f..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.8-v36.4.0.9
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 0a2cec3..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.4.0.9-v36.5.0.0
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * \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
new file mode 100644
index 0000000..2e7ac14
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5-v36.6
@@ -0,0 +1,33 @@
+/**
+ * \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
deleted file mode 100644
index d813123..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.0-v36.5.0.1
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 4142d00..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.1-v36.5.0.2
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 35f7745..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.5-v36.5.0.6
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * \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
deleted file mode 100644
index a692e16..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.6-v36.5.0.7
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 73e2b26..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.7-v36.5.0.8
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 481d72d..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.5.0.8-v36.6.0.0
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * \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
new file mode 100644
index 0000000..d8d2a72
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.6-v36.7
@@ -0,0 +1,11 @@
+/**
+ * \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
deleted file mode 100644
index ce94d29..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.6.0.1-v36.7.0.0
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
new file mode 100644
index 0000000..19bf20d
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7-v37.3
@@ -0,0 +1,73 @@
+/**
+ * \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
deleted file mode 100644
index b378e13..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.0-v36.7.0.1
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 986e467..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.1-v36.7.0.2
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
deleted file mode 100644
index cf8cd33..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.2-v36.7.0.3
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 50bd713..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.3-v36.7.0.4
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 134358c..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.4-v36.7.0.5
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * \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
deleted file mode 100644
index fd768f7..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.5-v36.7.0.6
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 547e3d0..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.6-v36.7.0.7
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * \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
deleted file mode 100644
index e43bcb4..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.7-v36.7.0.8
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index edde96b..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v36.7.0.8-v37.3.0.0
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * \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
new file mode 100644
index 0000000..0ab0b4c
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3-v37.4
@@ -0,0 +1,191 @@
+/**
+ * \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
deleted file mode 100644
index 9662fb4..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.0-v37.3.0.1
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 7f40d09..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.1-v37.3.0.2
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 576eb38..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.10-v37.3.0.11
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * \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
deleted file mode 100644
index a8a056e..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.11-v37.3.0.12
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 6939006..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.12-v37.3.0.13
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 9c878f9..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.14-v37.3.0.15
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 61b2526..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.15-v37.3.0.16
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 0dc105e..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.16-v37.3.0.17
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * \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
deleted file mode 100644
index db4753d..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.17-v37.3.0.18
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 7a6b3c0..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.18-v37.3.0.19
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 3b499c2..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.19-v37.3.0.20
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 333ca49..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.2-v37.3.0.3
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 7876698..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.20-v37.3.0.21
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 9972a0f..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.21-v37.4.0.0
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 070d273..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.3-v37.3.0.4
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index af0df88..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.5-v37.3.0.6
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
deleted file mode 100644
index e412184..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.7-v37.3.0.8
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 336e97a..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.8-v37.3.0.9
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * \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
deleted file mode 100644
index c21c8b1..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.3.0.9-v37.3.0.10
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * \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
new file mode 100644
index 0000000..b6b501d
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.0-v37.4.0.18
@@ -0,0 +1,101 @@
+/**
+ * \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
deleted file mode 100644
index c42ae35..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.1-v37.4.0.2
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 477a85b..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.11-v37.4.0.12
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index da9c881..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.12-v37.4.0.13
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * \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
deleted file mode 100644
index e05ebc0..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.16-v37.4.0.17
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 0b9c149..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.2-v37.4.0.3
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 0e569b1..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.21-v37.4.0.22
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 69036c6..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.22-v37.4.0.23
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 4a9329d..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.23-v37.4.0.24
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * \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
deleted file mode 100644
index 5819cd0..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.24-v37.4.0.25
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * \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
deleted file mode 100644
index ad6a0c7..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.4-v37.4.0.5
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * \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
new file mode 100644
index 0000000..6c76903
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.47-v37.4.0.48
@@ -0,0 +1,12 @@
+/**
+ * \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
new file mode 100644
index 0000000..4fedac4
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.49-v37.4.0.50
@@ -0,0 +1,13 @@
+/**
+ * \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
deleted file mode 100644
index 0075dc7..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.5-v37.4.0.6
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * \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
new file mode 100644
index 0000000..95e7483
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.50-v37.4.0.51
@@ -0,0 +1,16 @@
+/**
+ * \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
new file mode 100644
index 0000000..e4a7d82
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.51-v37.4.0.52
@@ -0,0 +1,16 @@
+/**
+ * \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
new file mode 100644
index 0000000..5686b24
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.53-v37.4.0.54
@@ -0,0 +1,11 @@
+/**
+ * \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
new file mode 100644
index 0000000..78a346e
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.56-v37.4.0.57
@@ -0,0 +1,33 @@
+/**
+ * \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
new file mode 100644
index 0000000..5641f8f
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.57-v37.4.0.58
@@ -0,0 +1,14 @@
+/**
+ * \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
new file mode 100644
index 0000000..376a0e5
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.58-v37.4.0.59
@@ -0,0 +1,12 @@
+/**
+ * \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
new file mode 100644
index 0000000..1d3133f
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.59-v37.4.0.60
@@ -0,0 +1,11 @@
+/**
+ * \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
deleted file mode 100644
index f8e25c5..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.6-v37.4.0.7
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * \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
new file mode 100644
index 0000000..1ecc44e
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.60-v37.4.0.61
@@ -0,0 +1,12 @@
+/**
+ * \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
new file mode 100644
index 0000000..43b07b7
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.62-v37.4.1.62
@@ -0,0 +1,16 @@
+/**
+ * \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
deleted file mode 100644
index 294b5ff..0000000
--- a/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.0.8-v37.4.0.9
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * \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
new file mode 100644
index 0000000..3f47d09
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.10.62-v37.4.11.62
@@ -0,0 +1,11 @@
+/**
+ * \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
new file mode 100644
index 0000000..e1e8b41
--- /dev/null
+++ b/include/common/doxygen/qcsapi_doc/changelog/changes-v37.4.6.62-v37.4.7.62
@@ -0,0 +1,16 @@
+/**
+ * \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 44dced9..0b7e2f0 100644
--- a/include/common/doxygen/qcsapi_doc/groupdefine.txt
+++ b/include/common/doxygen/qcsapi_doc/groupdefine.txt
@@ -335,6 +335,7 @@
 /**@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
@@ -368,6 +369,7 @@
  * <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>
@@ -420,6 +422,24 @@
  *      <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 013e07b..06c97bf 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) + (580 * 1024))
+#define CONFIG_ARC_MUC_SIZE		((3 * 1024 * 1024) + (584 * 1024))
 #else
-#define CONFIG_ARC_MUC_SIZE		((2 * 1024 * 1024) + (768 * 1024))
+#define CONFIG_ARC_MUC_SIZE		((2 * 1024 * 1024) + (772 * 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	8	/* one per vap */
+#define TOPAZ_FWT_MCAST_FF_ENTRIES	1	/* one for all FF addresses */
 #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 052b46e..8319f2f 100644
--- a/include/common/ruby_pm.h
+++ b/include/common/ruby_pm.h
@@ -46,6 +46,7 @@
 #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 7664b11..342d60e 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.28"
+#define RUBY_UBOOT_VERSION	"v37.4.0.29"
 
 #endif // __RUBY_RELEASE_H__
diff --git a/include/kernel/net80211/ieee80211_beacon_desc.h b/include/kernel/net80211/ieee80211_beacon_desc.h
new file mode 100644
index 0000000..79b9181
--- /dev/null
+++ b/include/kernel/net80211/ieee80211_beacon_desc.h
@@ -0,0 +1,53 @@
+/**
+  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 778303e..bb7b59c 100644
--- a/include/kernel/net80211/ieee80211_node.h
+++ b/include/kernel/net80211/ieee80211_node.h
@@ -63,6 +63,13 @@
 #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
@@ -279,6 +286,7 @@
 	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 */
@@ -406,6 +414,9 @@
 	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;
@@ -421,6 +432,7 @@
 		__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 */
@@ -635,8 +647,9 @@
                                        uint8_t bw, uint8_t rx_nss);
 int ieee80211_send_20_40_bss_coex(struct ieee80211vap *vap);
 int ieee80211_check_mode(struct ieee80211vap *vap);
-void ieee80211_nonqtn_sta_join(struct ieee80211vap *vap, struct ieee80211_node *ni);
-void ieee80211_nonqtn_sta_leave(struct ieee80211vap *vap, struct ieee80211_node *ni);
+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);
 
 #define WDS_AGING_TIME		600   /* 10 minutes */
 #define WDS_AGING_COUNT		2
@@ -782,6 +795,9 @@
 
 #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 *);
@@ -832,5 +848,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_no_rxamsdu_no_bf(struct ieee80211_node *ni);
+int ieee80211_node_is_opti_node(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 99a7cd5..43de757 100644
--- a/include/kernel/net80211/ieee80211_proto.h
+++ b/include/kernel/net80211/ieee80211_proto.h
@@ -126,6 +126,7 @@
 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,
@@ -139,6 +140,8 @@
 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,
@@ -496,11 +499,15 @@
 };
 struct sk_buff *ieee80211_beacon_alloc(struct ieee80211_node *,
 	struct ieee80211_beacon_offsets *);
-int ieee80211_beacon_update(struct ieee80211_node *,
+void 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 *);
@@ -530,14 +537,12 @@
 
 u_int8_t *ieee80211_add_vhtcap(struct ieee80211_node *, u_int8_t *, struct ieee80211_vhtcap *, uint8_t);
 u_int8_t *ieee80211_add_vhtop(struct ieee80211_node *, u_int8_t *, struct ieee80211_vhtop *);
-uint8_t *ieee80211_add_vhtop_notif(uint8_t *frm, struct ieee80211com *ic, int band_24g);
+uint8_t *ieee80211_add_vhtop_notif(struct ieee80211_node *ni, 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 a66d477..1899de3 100644
--- a/include/kernel/net80211/ieee80211_scan.h
+++ b/include/kernel/net80211/ieee80211_scan.h
@@ -255,6 +255,7 @@
 	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 */
@@ -370,8 +371,12 @@
 
 	/* 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];
@@ -405,6 +410,8 @@
 			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 907f669..6890593 100644
--- a/include/kernel/net80211/ieee80211_tdls.h
+++ b/include/kernel/net80211/ieee80211_tdls.h
@@ -161,6 +161,9 @@
 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);
 
@@ -228,9 +231,6 @@
 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 42b8745..6264595 100644
--- a/include/kernel/net80211/ieee80211_var.h
+++ b/include/kernel/net80211/ieee80211_var.h
@@ -104,12 +104,6 @@
 #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))
 
@@ -180,6 +174,35 @@
 #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)
@@ -214,6 +237,11 @@
 	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 {
@@ -241,7 +269,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 */
-	uint16_t		scs_debug_enable;
+	int16_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;
@@ -288,6 +316,7 @@
 	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;
@@ -599,6 +628,34 @@
 	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 */
@@ -613,6 +670,7 @@
 	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;
@@ -650,6 +708,7 @@
 	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 */
 
@@ -678,10 +737,11 @@
 	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*/
-	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;
+	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;
 	uint8_t ic_pppc_select_enable;
 	uint8_t ic_pppc_select_enable_backup;
 	uint8_t ic_pppc_step_db;
@@ -699,8 +759,9 @@
 	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:
@@ -728,22 +789,11 @@
 	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 */
@@ -758,6 +808,7 @@
 	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 */
@@ -854,6 +905,7 @@
 	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*/
@@ -868,7 +920,8 @@
 
 	u_int32_t ic_rx_agg_timeout;
 	u_int32_t ic_ndpa_dur;
-	u_int32_t ic_txbf_pkt_cnt;
+	u_int32_t ic_su_txbf_pkt_cnt;
+	u_int32_t ic_mu_txbf_pkt_cnt;
 	u_int32_t ic_tx_max_ampdu_size;
 
 	u_int16_t ic_mu_debug_level;
@@ -879,6 +932,13 @@
 	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 *);
@@ -995,10 +1055,15 @@
 
 
 	void (*ic_mark_channel_availability_status)(struct ieee80211com *ic, struct ieee80211_channel *chan, uint8_t usable);
-	void (*ic_mark_channel_dfs_cac_status)(struct ieee80211com *ic, struct ieee80211_channel *chan, u_int32_t cac_flag, bool set);
-	void (*ic_dump_available_channels)(struct ieee80211com *ic, const char *offending_func);
 
-	void (*ic_ap_next_cac)(struct ieee80211com *ic, struct ieee80211vap *vap,
+	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);
+
+	int (*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);
@@ -1008,6 +1073,9 @@
 	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 */
@@ -1062,6 +1130,8 @@
 			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,
@@ -1167,10 +1237,6 @@
 
 	/* 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;
@@ -1178,11 +1244,27 @@
 	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)
@@ -1505,6 +1587,7 @@
 	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 */
@@ -1590,6 +1673,8 @@
 	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 */
@@ -1610,6 +1695,7 @@
 	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);
 
@@ -1744,13 +1830,28 @@
 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)
@@ -1940,6 +2041,10 @@
 	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);
@@ -1950,6 +2055,7 @@
 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);
@@ -1969,6 +2075,7 @@
 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);
@@ -1978,6 +2085,7 @@
 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);
@@ -1991,7 +2099,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), uint8_t reason,
+		void (*finish_csa)(unsigned long arg), uint32_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);
@@ -2009,6 +2117,13 @@
 		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.
  */
@@ -2031,6 +2146,16 @@
 
 	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
  */
@@ -2071,6 +2196,23 @@
 	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 7323ddc..fd26ce5 100755
--- a/include/qtn/auc_debug_stats.h
+++ b/include/qtn/auc_debug_stats.h
@@ -134,6 +134,7 @@
 	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 1c147f6..2fc2cce 100644
--- a/include/qtn/lhost_muc_comm.h
+++ b/include/qtn/lhost_muc_comm.h
@@ -17,6 +17,7 @@
 #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)
@@ -326,6 +327,9 @@
 #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 */
@@ -408,7 +412,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
@@ -542,6 +546,9 @@
 	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;
@@ -549,6 +556,18 @@
 };
 
 #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;
@@ -559,6 +578,9 @@
 	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 {
@@ -570,6 +592,9 @@
 	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;
@@ -580,6 +605,7 @@
 	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 {
@@ -888,6 +914,7 @@
 	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;
@@ -912,17 +939,15 @@
 
 struct qtn_beacon_args
 {
-	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 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 */
 };
 
 struct qtn_key {
@@ -969,6 +994,13 @@
 
 #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;
@@ -1010,5 +1042,26 @@
 	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 5f1f9ae..8c5e3f5 100644
--- a/include/qtn/mproc_sync.h
+++ b/include/qtn/mproc_sync.h
@@ -126,30 +126,20 @@
 RUBY_INLINE int
 _qtn_mproc_3way_tqe_sem_down(enum topaz_mproc_tqe_sem_id cpuid)
 {
-	uint32_t	sem_get_cnt = 0;
-	uint32_t	value;
+	const uint32_t  set_value = ((cpuid << QTN_MULTI_PROCESSOR_SEMA_KEY_SHIFT) | cpuid);
+	uint32_t        sem_set_cnt = 0;
 
-	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, value);
-		value = qtn_mproc_sync_mem_read(TOPAZ_MPROC_SEMA);
-
-		if ((value & QTN_MULTI_PROCESS_TQE_SEMA) == cpuid)
+		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) {
 			return 1;
-		/*
-		 * Reading the semaphore returns a owner cpuid or zero in the field if is free.
-		 * Wait until no-one is holding the semaphore.
-		 */
-		do {
-			value = qtn_mproc_sync_mem_read(TOPAZ_MPROC_SEMA);
-			value &= QTN_MULTI_PROCESS_TQE_SEMA;
-		} while (value && (sem_get_cnt++ < TQE_SEMA_GET_MAX));
-
-	} while (sem_get_cnt++ < TQE_SEMA_GET_MAX);
+		}
+	} while (++sem_set_cnt < TQE_SEMA_GET_MAX);
 
 	return 0;
 }
diff --git a/include/qtn/muc_phy_stats.h b/include/qtn/muc_phy_stats.h
index 396a796..c0734b6 100644
--- a/include/qtn/muc_phy_stats.h
+++ b/include/qtn/muc_phy_stats.h
@@ -72,6 +72,12 @@
 	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 {
@@ -96,6 +102,8 @@
 	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 e103114..2445a86 100644
--- a/include/qtn/muc_txrx_stats.h
+++ b/include/qtn/muc_txrx_stats.h
@@ -86,63 +86,7 @@
 	 * 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;
@@ -152,13 +96,7 @@
 	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;
@@ -172,8 +110,6 @@
 	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;
@@ -205,10 +141,6 @@
 	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;
@@ -293,6 +225,11 @@
 	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;
@@ -817,6 +754,7 @@
 	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 e761234..e19268d 100644
--- a/include/qtn/qdrv_sch.h
+++ b/include/qtn/qdrv_sch.h
@@ -134,63 +134,6 @@
 	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)
 {
@@ -212,14 +155,71 @@
 	return 0;
 }
 
-#define qdrv_vlan_tx_tag_present(__skb)      ((__skb)->vlan_tci)
+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);
+}
 
 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 vlan_wme_ac = WME_AC_BE;
+	uint8_t tid;
+	uint8_t vlan_index;
 
 	if (M_FLAG_ISSET(skb, M_CLASSIFY)) {
 		return;
@@ -228,28 +228,33 @@
 
 	QTN_SKB_CB_ETHERTYPE(skb) = ether_type;
 
-	if (likely(ether_type == __constant_htons(ETH_P_IP))) {
-		if ((skb->len >= (data_start - skb->data) + sizeof(*iphdr_p)) &&
-				(iphdr_p->version == 4)) {
-			wme_ac = qdrv_sch_classify_ipv4(skb, iphdr_p);
-		}
-	}
+	if (ether_type == __constant_htons(ETH_P_IP)) {
+		struct iphdr *iphdr_p = (struct iphdr *)data_start;
 
+		if ((skb->len >= (data_start - skb->data) + sizeof(*iphdr_p)) &&
+				(iphdr_p->version == 4))
+			QTN_SKB_CB_IPPROTO(skb) = iphdr_p->protocol;
+	}
 #ifdef CONFIG_IPV6
-	if (ether_type == __constant_htons(ETH_P_IPV6)) {
+	else if (ether_type == __constant_htons(ETH_P_IPV6)) {
+		struct ipv6hdr *ipv6hdr_p = (struct ipv6hdr *)data_start;
+
 		if (skb->len >= (data_start - skb->data) + sizeof(struct ipv6hdr) &&
-				(iphdr_p->version == 6)) {
-			wme_ac = qdrv_sch_classify_ipv6(skb, (struct ipv6hdr *)data_start);
+				(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;
 		}
 	}
 #endif
+
 	if (qdrv_sch_classify_ctrl(skb)) {
 		wme_ac = QTN_AC_MGMT;
-	}
-
-	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);
+	} else {
+		topaz_tqe_vlan_gettid(skb->data, &tid, &vlan_index);
+		wme_ac = TID_TO_WMM_AC(tid);
 	}
 
 	skb->priority = wme_ac;
@@ -405,64 +410,6 @@
 #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 2016fc5..070c7ad 100644
--- a/include/qtn/qtn_auc_stats_fields.h
+++ b/include/qtn/qtn_auc_stats_fields.h
@@ -1,234 +1,235 @@
-	{ 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" },
+	{ 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" },
diff --git a/include/qtn/qtn_buffers.h b/include/qtn/qtn_buffers.h
index de0540d..a037e66 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	9
-#elif defined (TOPAZ_VB_CONFIG)
+#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	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 9afffc8..90d9bc1 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)) & QVLAN_MASK_VID;
+				ether_type_l3 = ((llc[10] << 0) | (llc[11] << 8));
 				ether_type_eh = ether_type_l3;
 				vlan_hdr = 4;
 			}
diff --git a/include/qtn/qtn_global.h b/include/qtn/qtn_global.h
index c1f5aba..8f4852f 100644
--- a/include/qtn/qtn_global.h
+++ b/include/qtn/qtn_global.h
@@ -58,7 +58,8 @@
 #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	800000
+#define QTN_RX_REORDER_BUF_TIMEOUT_US		200000
+#define QTN_RX_REORDER_BUF_TIMEOUT_US_VI	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 */
@@ -114,7 +115,12 @@
 #define QTN_DBG_FD_FLAG_MASK		0x0000FFFF
 
 #define QTN_HW_UPDATE_NDPA_DUR  0x0
-#define	QTN_TXBF_TX_CNT_DEF_THRSHLD 2
+#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
 
 #if (defined(MUC_BUILD) || defined(SYSTEM_BUILD))
 
@@ -328,13 +334,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_txbf_pkt_cnt;         /* Tx operation count threshold to a TxBF station */
+	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 */
 	struct qtn_auto_cca_params	g_auto_cca_params;
 	struct qtn_wowlan_params wowlan_params;
 	uint8_t		g_rx_optim;
@@ -352,6 +358,7 @@
 	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 */
 };
 
@@ -407,13 +414,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_TXBF_TX_CNT_DEF_THRSHLD,		\
+	QTN_SU_TXBF_TX_CNT_DEF_THRSHLD,	        \
+	QTN_MU_TXBF_TX_CNT_DEF_THRSHLD,	        \
 	QTN_AUTO_CCA_PARARMS_DEFAULT,		\
 	{0, 0, 0x0842, 0xffff},			\
 	0,					\
@@ -431,6 +438,7 @@
 	QTN_AUTO_CS_ENABLE,			\
 	0,					\
 	0,					\
+	QTN_RX_BAR_SYNC_QTN,			\
 	"end"					\
 }
 
@@ -440,6 +448,8 @@
 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 6c663f9..cfbec57 100644
--- a/include/qtn/qtn_muc_stats_print.h
+++ b/include/qtn/qtn_muc_stats_print.h
@@ -11,16 +11,6 @@
 	"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", \
@@ -30,13 +20,7 @@
 	"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", \
@@ -50,8 +34,6 @@
 	"txalert_ndp_update", \
 	"tx_ndp_q_occupied", \
 	"tx_ndp_start", \
-	"txdone_mgmt", \
-	"txdone_data", \
 	"tx_pwr", \
 	"bcn_scheme_power_save", \
 	"bcn_scheme", \
@@ -69,10 +51,6 @@
 	"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", \
@@ -153,6 +131,11 @@
 	"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", \
@@ -417,6 +400,7 @@
 	"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 41da785..eed19e2 100644
--- a/include/qtn/qtn_skb_cb.h
+++ b/include/qtn/qtn_skb_cb.h
@@ -39,7 +39,9 @@
 #define M_ENQUEUED_MUC		0x1000	/* Enqueued to MuC */
 #define	M_TX_DONE_IMM_INT	0x2000	/* Immediately interrupt lhost when tx done */
 #define M_VLAN_TAGGED		0x4000	/* skb belongs to some VLAN */
-#define M_VLAN_TAG_OWE		0x8000	/* VLAN tag is stripped of this skb */
+#define 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 QTN_SKB_ENCAP_ETH		0
diff --git a/include/qtn/qtn_vlan.h b/include/qtn/qtn_vlan.h
index f9d71e4..ca1c220 100644
--- a/include/qtn/qtn_vlan.h
+++ b/include/qtn/qtn_vlan.h
@@ -22,6 +22,7 @@
 #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
@@ -99,6 +100,7 @@
 	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)
@@ -138,6 +140,10 @@
 	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 {
@@ -258,25 +264,6 @@
 	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__)
@@ -289,6 +276,17 @@
 }
 
 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))
@@ -302,7 +300,7 @@
 {
 	struct qtn_vlan_pkt *pkt = qtn_vlan_get_info(data);
 
-	if (!qtn_vlan_magic_check(pkt)
+	if (!qtn_vlan_magic_check(outdev, 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);
@@ -360,16 +358,6 @@
 }
 #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];
@@ -396,9 +384,8 @@
 extern int switch_vlan_set_node(struct qtn_vlan_dev *vdev, uint16_t ncidx, uint16_t vlan);
 extern int switch_vlan_clr_node(struct qtn_vlan_dev *vdev, uint16_t ncidx);
 
-extern int switch_vlan_is_local(const uint8_t *data);
-extern struct sk_buff *switch_vlan_strip_tag(struct sk_buff *, int copy);
-extern struct sk_buff *switch_vlan_restore_tag(struct sk_buff *, int copy);
+extern 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 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 9c52eb3..d982684 100644
--- a/include/qtn/qvsp.h
+++ b/include/qtn/qvsp.h
@@ -113,6 +113,8 @@
 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 ee1483a..780e5ec 100644
--- a/include/qtn/shared_defs.h
+++ b/include/qtn/shared_defs.h
@@ -114,6 +114,7 @@
 	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
 };
 
@@ -260,6 +261,17 @@
 
 #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 */
@@ -443,8 +455,9 @@
 #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_MASK	0x000B	/* Mask for TDLS bits */
+#define	IEEE80211_NODE_TDLS_PTI_MASK	0x000B	/* Mask for TDLS PTI bits */
 
 #define QTN_VAP_PRIORITY_RESERVED	2	/* reserve the low values for internal use */
 #define QTN_VAP_PRIORITY_NUM		4
@@ -465,7 +478,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_IS_NO_RXAMSDU_NO_BF_NODE	0x0000800
+#define QTN_OPTI_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
@@ -583,6 +596,13 @@
 /**
  * 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 f42926b..e207e6a 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 uint8_t node)
+						const uint8_t port, const uint16_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 uint8_t node)
+						const uint8_t port, const uint16_t node)
 {
 	if (port == TOPAZ_TQE_WMAC_PORT) {
 		e->node_bitmap[node / TOPAZ_BITS_PER_WD] &= ~(1 << (node % TOPAZ_BITS_PER_WD));
@@ -426,10 +426,9 @@
 	return &fwt[index];
 }
 
-RUBY_INLINE struct topaz_fwt_sw_mcast_entry *topaz_fwt_sw_mcast_ff_entry_get(uint8_t vap_idx)
+RUBY_INLINE struct topaz_fwt_sw_mcast_entry *topaz_fwt_sw_mcast_ff_entry_get(void)
 {
-	return (void *)(RUBY_DRAM_BEGIN + TOPAZ_FWT_MCAST_TQE_FF_BASE +
-			(vap_idx * TOPAZ_FWT_MCAST_TQE_ENT_SIZE));
+	return (void *)(RUBY_DRAM_BEGIN + TOPAZ_FWT_MCAST_TQE_FF_BASE);
 }
 
 RUBY_INLINE struct topaz_fwt_sw_mcast_entry *topaz_fwt_sw_mcast_entry_get(uint16_t index)
@@ -456,29 +455,6 @@
 	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 9f47d16..2c9c54b 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(uint8_t vap_idx)
+static inline struct topaz_fwt_sw_mcast_entry *fwt_db_get_sw_mcast_ff(void)
 {
-	return topaz_fwt_sw_mcast_ff_entry_get(vap_idx);
+	return topaz_fwt_sw_mcast_ff_entry_get();
 }
 
 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 739413f..0267b16 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(uint8_t node_num, uint8_t vap_idx);
+void fwt_sw_register_node(uint16_t node_num);
 
 /*
  * Unregister a node
  * @param node_num: node number
  * @param vap_idx: vap index
  */
-void fwt_sw_unregister_node(uint8_t node_num, uint8_t vap_idx);
+void fwt_sw_unregister_node(uint16_t node_num);
 
 /*
  * Add device to the FWT.
diff --git a/include/qtn/topaz_shared_params.h b/include/qtn/topaz_shared_params.h
index a673848..f2dc0cb 100644
--- a/include/qtn/topaz_shared_params.h
+++ b/include/qtn/topaz_shared_params.h
@@ -54,13 +54,14 @@
 enum shared_params_auc_ipc_cmd
 {
 	SHARED_PARAMS_IPC_NONE_CMD		= 0,
-	SHARED_PARAMS_IPC_M2A_SRESET_BEGIN_CMD,
-	SHARED_PARAMS_IPC_M2A_SRESET_END_CMD,
-	SHARED_PARAMS_IPC_M2A_NODE_CREATE_CMD,
+
+	/* 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_NODE_CREATE_CMD,
 	SHARED_PARAMS_IPC_M2A_NODE_DESTROY_CMD,
-	SHARED_PARAMS_IPC_M2A_TID_CREATE_CMD,
 	SHARED_PARAMS_IPC_M2A_SLOW_TID_CREATE_CMD,
+	SHARED_PARAMS_IPC_M2A_TID_CREATE_CMD,
 	SHARED_PARAMS_IPC_M2A_TID_DESTROY_CMD,
 	SHARED_PARAMS_IPC_M2A_TID_ACTIVATE_CMD,
 	SHARED_PARAMS_IPC_M2A_TID_DEACTIVATE_CMD,
@@ -72,17 +73,23 @@
 	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_PAUSE_ON_CMD,
-	SHARED_PARAMS_IPC_M2A_PAUSE_OFF_CMD,
-	SHARED_PARAMS_IPC_M2A_NODE_RATEDATA_CHANGE_CMD,
+	SHARED_PARAMS_IPC_M2A_TX_AGG_DURATION,
 	SHARED_PARAMS_IPC_M2A_FCS_GIVE_CMD,
+	SHARED_PARAMS_IPC_M2A_NODE_RATEDATA_CHANGE_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
@@ -270,13 +277,14 @@
 #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 */
-#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
+	/*
+	 * '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)
 	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;
@@ -355,20 +363,22 @@
 
 RUBY_INLINE enum shared_params_auc_ipc_cmd
 qtn_mproc_sync_auc_ipc_wait_mready(volatile struct shared_params_auc_ipc *ipc,
-		enum shared_params_auc_ipc_cmd *cmds, int cmds_num, int relax_count)
+		int relax_count, int loop_count)
 {
-	while(1) {
-		int i;
-		enum shared_params_auc_ipc_cmd cmd = ipc->cmd;
+	enum shared_params_auc_ipc_cmd cmd;
+	int loop = 0;
 
-		for (i = 0; i < cmds_num; ++i) {
-			if (cmds[i] == cmd) {
-				return 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;
 		}
 
 		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 0cce989..36a7a0a 100644
--- a/include/qtn/topaz_tqe.h
+++ b/include/qtn/topaz_tqe.h
@@ -26,25 +26,27 @@
 #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,
-					uint8_t vap_idx);
+		*tqe_fwt_get_mcast_hook)(uint16_t fwt_index, const void *addr, uint16_t ether_type);
 typedef const struct fwt_db_entry*(
 		*tqe_fwt_get_ucast_hook)(const unsigned char *src_mac_be, const unsigned char *dst_mac_be);
 typedef const struct fwt_db_entry*(
 		*tqe_fwt_get_from_mac_hook)(const unsigned char *mac_be);
 typedef int(*tqe_mac_reserved_hook)(const uint8_t *addr);
 typedef struct topaz_fwt_sw_mcast_entry*(
-		*tqe_fwt_get_mcast_ff_hook)(uint8_t vap_idx);
-typedef void(*tqe_fwt_set_mcast_ff_hook)(uint8_t vap_idx);
+		*tqe_fwt_get_mcast_ff_hook)(void);
 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);
@@ -52,7 +54,8 @@
 				tqe_fwt_get_mcast_ff_hook mcast_ff_get_cbk_func,
 				tqe_fwt_false_miss_hook false_miss_func);
 void tqe_register_ucastfwt_cbk(tqe_fwt_get_ucast_hook cbk_func);
-void tqe_register_macfwt_cbk(tqe_fwt_get_from_mac_hook cbk_func);
+void tqe_register_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_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 80b8f58..0d41069 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_DUMMY_PORT	= 15
+	TOPAZ_TQE_DROP_PORT	= 15
 };
 
 enum topaz_mproc_tqe_sem_id
@@ -71,7 +71,8 @@
 #define EXTRACT_DEV_ID_FROM_PORT_ID(port_id) \
 		GET_BIT_FIELD((port_id), (PORT_ID_BITS - DEV_ID_BITS), DEV_ID_BITS)
 
-#define TOPAZ_TQE_PORT_NAMES	{ "emac0", "emac1", "wmac", "pcie", "lhost", "muc", "dsp", "auc", }
+#define TOPAZ_TQE_PORT_NAMES	{ "emac0", "emac1", "wmac", "pcie", "lhost", "muc", "dsp", "auc", \
+					"", "", "", "", "", "", "", "drop", }
 #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 7051987..5dad35e 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        (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)
+#define QTN_TXBF_DSP_TO_HOST_INST_MU_GRP        1
+#define QTN_TXBF_DSP_TO_HOST_DELE_MU_GRP        2
 
 #ifndef __ASSEMBLY__
 
@@ -286,6 +286,9 @@
 				__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 1669ee4..c0a4fb5 100644
--- a/include/shared/net80211/_ieee80211.h
+++ b/include/shared/net80211/_ieee80211.h
@@ -170,19 +170,6 @@
 };
 
 /*
- * 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
  */
 
@@ -345,6 +332,17 @@
 #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,
@@ -1108,6 +1106,14 @@
 	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 */
@@ -1327,13 +1333,22 @@
 			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;
-			u_int32_t sp_fail;
-			u_int32_t lp_fail;
-			u_int16_t others_time;
+			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_int8_t *extra_ie;
 			u_int16_t extra_ie_len;
 		} qtn_cca;
@@ -1481,6 +1496,7 @@
 	 (_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 2988ef0..47b9c0e 100644
--- a/include/shared/net80211/ieee80211.h
+++ b/include/shared/net80211/ieee80211.h
@@ -628,7 +628,10 @@
 } __packed;
 
 /* Quantenna SCS IE */
-#define QTN_SCS_IE_TYPE_STA_INTF_RPT        0x1
+#define QTN_SCS_IE_TYPE_STA_INTF_RPT		0x1
+#define QTN_SCS_IE_TYPE_STA_FAT_RPT		0x3
+#pragma pack(push)
+#pragma pack(1)
 struct ieee80211_ie_qtn_scs {
 	uint8_t id;			/* IEEE80211_ELEMID_VENDOR */
 	uint8_t len;                    /* length in bytes */
@@ -636,14 +639,25 @@
 	uint8_t qtn_ie_type;		/* IE type */
 	uint8_t scs_ie_type;            /* for future expansion and backward compatibility */
 	/* following depends on scs_ie_type */
-	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 */
+	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 */
 	uint16_t extra_ie_len;		/* extra ie len */
 	uint8_t extra_ie[0];		/* tdls stats */
-} __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)
+};
+#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)
 
 #define IEEE80211_IS_ALL_SET(__flags__, __msb__)	\
 	(((__flags__) & ((1 << ((__msb__)+1)) - 1)) == ((1 << ((__msb__)+1)) - 1))
@@ -2946,7 +2960,7 @@
 
 #define	IEEE80211_RATE_BASIC		0x80
 #define	IEEE80211_RATE_VAL			0x7f
-#define IEEE80211_BSS_MEMBERSHIP_SELECTOR	0x7F
+#define IEEE80211_BSS_MEMBERSHIP_SELECTOR_HT_PHY 0x7F
 
 /* EPR information element flags */
 #define	IEEE80211_ERP_NON_ERP_PRESENT	0x01
@@ -3063,6 +3077,9 @@
 #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
  */
@@ -3074,6 +3091,7 @@
 } __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 fc5c37c..8ea15f9 100644
--- a/include/shared/net80211/ieee80211_dfs_reentry.h
+++ b/include/shared/net80211/ieee80211_dfs_reentry.h
@@ -30,4 +30,11 @@
 #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 9c3cd0c..6b43162 100644
--- a/include/shared/net80211/ieee80211_ioctl.h
+++ b/include/shared/net80211/ieee80211_ioctl.h
@@ -307,6 +307,10 @@
 	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;
@@ -319,6 +323,7 @@
 	uint16_t iscr_rx_ms;
 	uint32_t iscr_pmbl;
 };
+
 struct ieee80211req_scs_ranking_rpt_chan {
 	uint8_t isrc_chan;
 	uint8_t isrc_dfs;
@@ -336,12 +341,25 @@
 	/* 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;
@@ -409,6 +427,7 @@
 	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,
 };
 
@@ -426,6 +445,7 @@
 #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
@@ -471,11 +491,20 @@
 };
 
 /*
+ * 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_channel ic_chans[IEEE80211_CHAN_MAX];
+	struct ieee80211_chan ic_chans[IEEE80211_CHAN_MAX];
 };
 
 /*
@@ -833,6 +862,7 @@
 	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 {
@@ -869,6 +899,9 @@
 	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*/
 };
 
@@ -1352,7 +1385,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_TXBF_PKT_CNT = 305,     /* set the pkt cnt per txbf interval to fire sounding to a node */
+	IEEE80211_PARAM_SU_TXBF_PKT_CNT = 305,  /* set the pkt cnt per txbf interval to fire SU 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,
@@ -1477,8 +1510,41 @@
 	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)
@@ -1540,6 +1606,7 @@
 #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,
@@ -1844,6 +1911,20 @@
 	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
new file mode 100644
index 0000000..eb7d501
--- /dev/null
+++ b/include/shared/qtn/beacon_ioctl.h
@@ -0,0 +1,27 @@
+/*
+ * 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 7c30d76..d6bbb4c 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -894,6 +894,15 @@
 	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 b16e1c9..d3676ec 100644
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
@@ -22,6 +22,8 @@
 #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)
 {
@@ -45,6 +47,7 @@
 
 	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 570ce26..91a3067 100644
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -115,6 +115,11 @@
 	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)
 {
@@ -137,8 +142,11 @@
 			br_handle_mcast_mgmt_frame(skb, br) &&
 			br_handle_mcast_exception(br, dest, data)) {
 		if (BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) {
-			mdst = br_mdb_get_ext(br, skb);
-			br_report_flood(br, mdst, 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);
+			}
 			br_multicast_forward(NULL, skb, skb2);
 			skb = NULL;
 		} else if(BR_INPUT_SKB_CB_UCAST_FWD(skb)) {
@@ -206,6 +214,7 @@
 	}
 
 	/* 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 116007c..bd9eafa 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -62,6 +62,9 @@
 	"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)
 {
@@ -148,7 +151,7 @@
 	}
 
 	BR_SNOOP_DBG(" from %pI4 group %pI4%s\n",
-		&saddr, igmp->group, snoop_enabled ? "" : " [ignored]");
+		&saddr, &igmp->group, snoop_enabled ? "" : " [ignored]");
 
 }
 
@@ -941,6 +944,7 @@
 		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;
@@ -1214,22 +1218,24 @@
 
 		/* 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;
 	}
@@ -1793,7 +1799,14 @@
 	BR_INPUT_SKB_CB(skb)->igmp = 1;
 	ih = igmp_hdr(skb2);
 
-	if (br->igmp_snoop_enabled) {
+/*
+ * 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
+	{
 		switch (ih->type) {
 		case IGMP_HOST_MEMBERSHIP_REPORT:
 		case IGMPV2_HOST_MEMBERSHIP_REPORT:
@@ -1814,7 +1827,10 @@
 		}
 	}
 
-	br_igmp_snoop_trace(skb->dev, iph->saddr, ih, skb2, br->igmp_snoop_enabled);
+	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");
 
 	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 65aa114..edb0284 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 65cff5e..edcdd52 100644
--- a/net/bridge/br_sysfs_br.c
+++ b/net/bridge/br_sysfs_br.c
@@ -288,6 +288,39 @@
 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)
 {
@@ -798,6 +831,7 @@
 	&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
