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