Revert^2 "bcmdhd: DHD QPR3 release for bcm4398, 2024.02.01 Version : 103.10.243.26"

This reverts commit 04ed02a95d06df36b6bc790174432f33243bfc28.

Reason for revert: The solution of APF SSR is included in https://partner-android-review.git.corp.google.com/c/kernel/private/google-modules/wlan/bcmdhd/bcm4389/+/2754692

Bug:327185608
Change-Id: I5b22dfb9e839bb5fec4dff5748366dca552cf1fb
diff --git a/Kbuild b/Kbuild
index 6b88299..cdf21ff 100644
--- a/Kbuild
+++ b/Kbuild
@@ -1,6 +1,6 @@
 # bcmdhd
 #
-# Copyright (C) 2023, Broadcom.
+# Copyright (C) 2024, Broadcom.
 #
 #      Unless you and Broadcom execute a separate written software license
 # agreement governing use of this software, this software is licensed to you
@@ -660,7 +660,7 @@
 DHDCFLAGS += -DIPV6_NDO_SUPPORT
 
 #Debugaility
-DHDCFLAGS += -DDBG_PKT_MON -DDBG_PKT_MON_INIT_DEFAULT
+DHDCFLAGS += -DDBG_PKT_MON -DDBG_PKT_MON_INIT_DEFAULT -DDHD_PKT_MON_DUAL_STA
 DHDCFLAGS += -DDNGL_EVENT_SUPPORT -DPARSE_DONGLE_HOST_EVENT
 DHDCFLAGS += -DWL_CFGVENDOR_SEND_ALERT_EVENT
 
diff --git a/Kconfig b/Kconfig
index 6952777..55ab76a 100644
--- a/Kconfig
+++ b/Kconfig
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2023, Broadcom.
+# Copyright (C) 2024, Broadcom.
 #
 #      Unless you and Broadcom execute a separate written software license
 # agreement governing use of this software, this software is licensed to you
diff --git a/Makefile b/Makefile
index 8651638..df5079b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2023, Broadcom.
+# Copyright (C) 2024, Broadcom.
 #
 #      Unless you and Broadcom execute a separate written software license
 # agreement governing use of this software, this software is licensed to you
diff --git a/aiutils.c b/aiutils.c
index dd5a97b..bcb3088 100644
--- a/aiutils.c
+++ b/aiutils.c
@@ -3,7 +3,7 @@
  * of the SiliconBackplane-based Broadcom chips.
  * Note: this file is used for both dongle and DHD builds.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcm_app_utils.c b/bcm_app_utils.c
index bb21c47..67192d8 100644
--- a/bcm_app_utils.c
+++ b/bcm_app_utils.c
@@ -3,7 +3,7 @@
  * Contents are wifi-specific, used by any kernel or app-level
  * software that might want wifi things as it grows.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcm_l2_filter.c b/bcm_l2_filter.c
index 8c2afb8..0193fe2 100644
--- a/bcm_l2_filter.c
+++ b/bcm_l2_filter.c
@@ -1,7 +1,7 @@
 /*
  * L2 Filter handling functions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcmbloom.c b/bcmbloom.c
index a279a48..b53359c 100644
--- a/bcmbloom.c
+++ b/bcmbloom.c
@@ -1,7 +1,7 @@
 /*
  * Bloom filter support
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcmcapext.c b/bcmcapext.c
index ac78088..6a81fe8 100644
--- a/bcmcapext.c
+++ b/bcmcapext.c
@@ -1,7 +1,7 @@
 /*
  * wlu capext procesing. Shared between DHD and WLU tool.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcmevent.c b/bcmevent.c
index 76101b6..4a5cff5 100644
--- a/bcmevent.c
+++ b/bcmevent.c
@@ -1,7 +1,7 @@
 /*
  * bcmevent read-only data shared by kernel or app layers
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcmsdh.c b/bcmsdh.c
index a5fd258..da9e398 100644
--- a/bcmsdh.c
+++ b/bcmsdh.c
@@ -2,7 +2,7 @@
  *  BCMSDH interface glue
  *  implement bcmsdh API for SDIOH driver
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcmsdh_linux.c b/bcmsdh_linux.c
index c1beab2..3d99bf8 100644
--- a/bcmsdh_linux.c
+++ b/bcmsdh_linux.c
@@ -1,7 +1,7 @@
 /*
  * SDIO access interface for drivers - linux specific (pci only)
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcmsdh_sdmmc.c b/bcmsdh_sdmmc.c
index 27700c9..9c6455d 100644
--- a/bcmsdh_sdmmc.c
+++ b/bcmsdh_sdmmc.c
@@ -1,7 +1,7 @@
 /*
  * BCMSDH Function Driver for the native SDIO/MMC driver in the Linux Kernel
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcmsdh_sdmmc_linux.c b/bcmsdh_sdmmc_linux.c
index d5a076a..be1d6ce 100644
--- a/bcmsdh_sdmmc_linux.c
+++ b/bcmsdh_sdmmc_linux.c
@@ -1,7 +1,7 @@
 /*
  * BCMSDH Function Driver for the native SDIO/MMC driver in the Linux Kernel
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcmsdspi.h b/bcmsdspi.h
index 4480d46..f8badf9 100644
--- a/bcmsdspi.h
+++ b/bcmsdspi.h
@@ -1,7 +1,7 @@
 /*
  * SD-SPI Protocol Conversion - BCMSDH->SPI Translation Layer
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcmsdspi_linux.c b/bcmsdspi_linux.c
index 4a4a751..bd398e6 100644
--- a/bcmsdspi_linux.c
+++ b/bcmsdspi_linux.c
@@ -1,7 +1,7 @@
 /*
  * Broadcom SPI Host Controller Driver - Linux Per-port
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcmsdstd.h b/bcmsdstd.h
index 105b7d3..2c21b3b 100644
--- a/bcmsdstd.h
+++ b/bcmsdstd.h
@@ -1,7 +1,7 @@
 /*
  *  'Standard' SDIO HOST CONTROLLER driver
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcmspibrcm.c b/bcmspibrcm.c
index 01fe106..d1bf263 100644
--- a/bcmspibrcm.c
+++ b/bcmspibrcm.c
@@ -1,7 +1,7 @@
 /*
  * Broadcom BCMSDH to gSPI Protocol Conversion Layer
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcmstdlib_s.c b/bcmstdlib_s.c
index 74060d3..ebc3619 100644
--- a/bcmstdlib_s.c
+++ b/bcmstdlib_s.c
@@ -1,7 +1,7 @@
 /*
  * Broadcom Secure Standard Library.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcmutils.c b/bcmutils.c
index 32cf6d1..110704b 100644
--- a/bcmutils.c
+++ b/bcmutils.c
@@ -1,7 +1,7 @@
 /*
  * Driver O/S-independent utility routines
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcmwifi_channels.c b/bcmwifi_channels.c
index 58fd987..cb50ce1 100644
--- a/bcmwifi_channels.c
+++ b/bcmwifi_channels.c
@@ -3,7 +3,7 @@
  * Contents are wifi-specific, used by any kernel or app-level
  * software that might want wifi things as it grows.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/bcmxtlv.c b/bcmxtlv.c
index 057cc14..a7be0ab 100644
--- a/bcmxtlv.c
+++ b/bcmxtlv.c
@@ -1,7 +1,7 @@
 /*
  * Driver O/S-independent utility routines
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd.h b/dhd.h
index 731e011..29698f9 100644
--- a/dhd.h
+++ b/dhd.h
@@ -4,7 +4,7 @@
  * Provides type definitions and function prototypes used to link the
  * DHD OS, bus, and protocol modules.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -1006,7 +1006,7 @@
 #endif /* CUSTOMER_HW4 */
 #endif /* !DHD_COMMON_DUMP_PATH */
 
-#define DHD_MEMDUMP_LONGSTR_LEN 180
+#define DHD_MEMDUMP_LONGSTR_LEN 192u
 
 struct cntry_locales_custom {
 	char iso_abbrev[WLC_CNTRY_BUF_SZ];      /* ISO 3166-1 country abbreviation */
@@ -1651,6 +1651,7 @@
 #ifdef DHD_COREDUMP
 	uint8 *coredump_mem;
 	uint32 coredump_len;
+	uint8 ewp_init_state;
 	char memdump_str[DHD_MEMDUMP_LONGSTR_LEN];
 #endif /* DHD_COREDUMP */
 #ifdef COEX_CPU
diff --git a/dhd_bitpack.h b/dhd_bitpack.h
index 090a028..a7c048b 100644
--- a/dhd_bitpack.h
+++ b/dhd_bitpack.h
@@ -1,7 +1,7 @@
 /*
  * Bit packing and Base64 utils for EWP
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_bus.h b/dhd_bus.h
index 5aacad9..09b48df 100644
--- a/dhd_bus.h
+++ b/dhd_bus.h
@@ -4,7 +4,7 @@
  * Provides type definitions and function prototypes used to link the
  * DHD OS, bus, and protocol modules.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -318,6 +318,9 @@
 extern INLINE int dhd_bus_checkdied(struct dhd_bus *bus, char *data, uint size) { return 0; }
 #endif /* BCMPCIE */
 
+#ifdef DHD_COREDUMP
+void dhdpcie_get_etd_trapcode_str(dhd_pub_t *dhd, char *trap_code, char *trap_subcode, int len);
+#endif /* DHD_COREDUMP */
 #if defined(BCMPCIE) && defined(EWP_ETD_PRSRV_LOGS)
 void dhdpcie_get_etd_preserve_logs(dhd_pub_t *dhd, uint8 *ext_trap_data,
 		void *event_decode_data);
@@ -465,6 +468,9 @@
 int dhd_bus_get_ewp_etb_dump(struct dhd_bus *bus, uint8 *buf, uint bufsize);
 int dhd_bus_alloc_ewp_etb_config_mem(struct dhd_bus *bus);
 void dhd_bus_dealloc_ewp_etb_config_mem(struct dhd_bus *bus);
+#ifdef DHD_COREDUMP
+extern void dhd_get_ewp_init_state(struct dhd_bus *bus, uint8 *init_state);
+#endif /* DHD_COREDUMP */
 
 void dhd_bus_update_flow_watermark_stats(struct dhd_bus *bus, uint16 flowid, uint16 rd,
 	uint16 wr, uint16 ringsz, bool upd_watermark);
diff --git a/dhd_buzzz.h b/dhd_buzzz.h
index d0ce285..9bf5ea5 100644
--- a/dhd_buzzz.h
+++ b/dhd_buzzz.h
@@ -2,7 +2,7 @@
 #define _DHD_BUZZZ_H_INCLUDED_
 
 /*
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_cdc.c b/dhd_cdc.c
index 2654a84..a7fa15f 100644
--- a/dhd_cdc.c
+++ b/dhd_cdc.c
@@ -1,7 +1,7 @@
 /*
  * DHD Protocol Module for CDC and BDC.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_cfg80211.c b/dhd_cfg80211.c
index 7b73c59..b2d7bbd 100644
--- a/dhd_cfg80211.c
+++ b/dhd_cfg80211.c
@@ -1,7 +1,7 @@
 /*
  * Linux cfg80211 driver - Dongle Host Driver (DHD) related
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_cfg80211.h b/dhd_cfg80211.h
index 8e08ab0..f1a404e 100644
--- a/dhd_cfg80211.h
+++ b/dhd_cfg80211.h
@@ -1,7 +1,7 @@
 /*
  * Linux cfg80211 driver - Dongle Host Driver (DHD) related
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_cfg_dscp_policy.c b/dhd_cfg_dscp_policy.c
index fa45fe9..8a630d3 100644
--- a/dhd_cfg_dscp_policy.c
+++ b/dhd_cfg_dscp_policy.c
@@ -12,7 +12,7 @@
  *
  * This file is used only if the DHD is built with the feature string "dscp_policy".
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_cfg_dscp_policy.h b/dhd_cfg_dscp_policy.h
index bad9b7c..82f8a63 100644
--- a/dhd_cfg_dscp_policy.h
+++ b/dhd_cfg_dscp_policy.h
@@ -4,7 +4,7 @@
  * Provides type definitions and function prototypes to manage the DSCP policy
  * entries for the network-centric QoS Management in the DHD.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_cfg_dscp_policy_api.h b/dhd_cfg_dscp_policy_api.h
index 5339f40..f971132 100644
--- a/dhd_cfg_dscp_policy_api.h
+++ b/dhd_cfg_dscp_policy_api.h
@@ -1,7 +1,7 @@
 /*
  * DSCP Policy public header file, exports the APIs for other modules.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_common.c b/dhd_common.c
index 0cc10f0..9bfcb4f 100644
--- a/dhd_common.c
+++ b/dhd_common.c
@@ -1,7 +1,7 @@
 /*
  * Broadcom Dongle Host Driver (DHD), common DHD core.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_custom_cis.c b/dhd_custom_cis.c
index eda0ceb..13e4cb4 100644
--- a/dhd_custom_cis.c
+++ b/dhd_custom_cis.c
@@ -2,7 +2,7 @@
  * Process CIS information from OTP for customer platform
  * (Handle the MAC address and module information)
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_custom_google.c b/dhd_custom_google.c
index 6902b27..0619f4d 100644
--- a/dhd_custom_google.c
+++ b/dhd_custom_google.c
@@ -1,7 +1,7 @@
 /*
  * Customer HW 2 dependant file
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_custom_gpio.c b/dhd_custom_gpio.c
index 8c9a3b0..d60568b 100644
--- a/dhd_custom_gpio.c
+++ b/dhd_custom_gpio.c
@@ -1,7 +1,7 @@
 /*
  * Customer code to add GPIO control during WLAN start/stop
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_custom_memprealloc.c b/dhd_custom_memprealloc.c
index dbe7018..0efe702 100644
--- a/dhd_custom_memprealloc.c
+++ b/dhd_custom_memprealloc.c
@@ -1,7 +1,7 @@
 /*
  * Platform Dependent file for usage of Preallocted Memory
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_custom_msm.c b/dhd_custom_msm.c
index 7dcf81e..7901d5b 100644
--- a/dhd_custom_msm.c
+++ b/dhd_custom_msm.c
@@ -1,7 +1,7 @@
 /*
  * Platform Dependent file for Qualcomm MSM/APQ
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_dbg.h b/dhd_dbg.h
index abcc617..c60ad12 100644
--- a/dhd_dbg.h
+++ b/dhd_dbg.h
@@ -1,7 +1,7 @@
 /*
  * Debug/trace/assert driver definitions for Dongle Host Driver.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_dbg_ring.c b/dhd_dbg_ring.c
index fc16f3c..b7ab5b4 100644
--- a/dhd_dbg_ring.c
+++ b/dhd_dbg_ring.c
@@ -1,7 +1,7 @@
 /*
  * DHD debug ring API and structures - implementation
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_dbg_ring.h b/dhd_dbg_ring.h
index 310367d..c1284b7 100644
--- a/dhd_dbg_ring.h
+++ b/dhd_dbg_ring.h
@@ -1,7 +1,7 @@
 /*
  * DHD debug ring header file - interface
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_debug.c b/dhd_debug.c
index f7e981d..2b8b8c3 100644
--- a/dhd_debug.c
+++ b/dhd_debug.c
@@ -1,7 +1,7 @@
 /*
  * DHD debugability support
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -1902,7 +1902,7 @@
 #ifdef DBG_PKT_MON
 static int do_iovar_aml_enable(dhd_pub_t *dhdp, uint val);
 static void dhd_do_aml_disable(void *handle, void *event_info, u8 event);
-void dhd_schedule_aml_disable(dhd_pub_t *dhdp);
+void dhd_schedule_aml_disable(dhd_pub_t *dhdp, int ifidx);
 
 static int
 do_iovar_aml_enable(dhd_pub_t *dhdp, uint val)
@@ -1967,11 +1967,11 @@
 	return;
 }
 
-void dhd_schedule_aml_disable(dhd_pub_t *dhdp)
+void dhd_schedule_aml_disable(dhd_pub_t *dhdp, int ifidx)
 {
-	if (dhdp->dbg->pkt_mon.tx_pkt_state == PKT_MON_STOPPED &&
-			dhdp->dbg->pkt_mon.rx_pkt_state == PKT_MON_STOPPED) {
-		DHD_PRINT(("%s: scheduling aml iovar..\n", __FUNCTION__));
+	if (dhdp->dbg->pkt_mon.tx_pkt_state[ifidx] == PKT_MON_STOPPED &&
+			dhdp->dbg->pkt_mon.rx_pkt_state[ifidx] == PKT_MON_STOPPED) {
+		DHD_PRINT(("%s: scheduling aml iovar..ifidx:%d\n", __FUNCTION__, ifidx));
 		dhd_deferred_schedule_work(dhdp->info->dhd_deferred_wq, NULL,
 			DHD_WQ_WORK_AML_IOVAR, dhd_do_aml_disable, DHD_WQ_WORK_PRIORITY_HIGH);
 	}
@@ -2054,7 +2054,7 @@
 }
 
 int
-dhd_dbg_attach_pkt_monitor(dhd_pub_t *dhdp,
+dhd_dbg_attach_pkt_monitor(dhd_pub_t *dhdp, int ifidx,
 	dbg_mon_tx_pkts_t tx_pkt_mon,
 	dbg_mon_tx_status_t tx_status_mon,
 	dbg_mon_rx_pkts_t rx_pkt_mon)
@@ -2072,21 +2072,26 @@
 	unsigned long flags;
 
 	if (!dhdp || !dhdp->dbg) {
-		DHD_PKT_MON(("%s(): dhdp=%p, dhdp->dbg=%p\n", __FUNCTION__,
-			dhdp, (dhdp ? dhdp->dbg : NULL)));
+		DHD_ERROR(("%s(): dhdp=%p, dhdp->dbg=%p ifidx:%d\n",
+			__FUNCTION__, dhdp, (dhdp ? dhdp->dbg : NULL), ifidx));
+		return -EINVAL;
+	}
+
+	if (ifidx >= PKT_MON_IF_MAX) {
+		DHD_ERROR(("%s: out of bound ifidx:%d\n", __FUNCTION__, ifidx));
 		return -EINVAL;
 	}
 
 	DHD_PKT_MON_LOCK(dhdp->dbg->pkt_mon_lock, flags);
-	tx_pkt_state = dhdp->dbg->pkt_mon.tx_pkt_state;
-	tx_status_state = dhdp->dbg->pkt_mon.tx_pkt_state;
-	rx_pkt_state = dhdp->dbg->pkt_mon.rx_pkt_state;
+	tx_pkt_state = dhdp->dbg->pkt_mon.tx_pkt_state[ifidx];
+	tx_status_state = dhdp->dbg->pkt_mon.tx_pkt_state[ifidx];
+	rx_pkt_state = dhdp->dbg->pkt_mon.rx_pkt_state[ifidx];
 
 	if (PKT_MON_ATTACHED(tx_pkt_state) || PKT_MON_ATTACHED(tx_status_state) ||
 			PKT_MON_ATTACHED(rx_pkt_state)) {
 		DHD_PKT_MON(("%s(): packet monitor is already attached, "
-			"tx_pkt_state=%d, tx_status_state=%d, rx_pkt_state=%d\n",
-			__FUNCTION__, tx_pkt_state, tx_status_state, rx_pkt_state));
+			"ifidx:%d tx_pkt_state=%d, tx_status_state=%d, rx_pkt_state=%d\n",
+			__FUNCTION__, ifidx, tx_pkt_state, tx_status_state, rx_pkt_state));
 		DHD_PKT_MON_UNLOCK(dhdp->dbg->pkt_mon_lock, flags);
 		/* return success as the intention was to initialize packet monitor */
 		return BCME_OK;
@@ -2097,7 +2102,7 @@
 	tx_report = (dhd_dbg_tx_report_t *)MALLOCZ(dhdp->osh, alloc_len);
 	if (unlikely(!tx_report)) {
 		DHD_ERROR(("%s(): could not allocate memory for - "
-			"dhd_dbg_tx_report_t\n", __FUNCTION__));
+			"dhd_dbg_tx_report_t ifidx:%d\n", __FUNCTION__, ifidx));
 		ret = -ENOMEM;
 		goto fail;
 	}
@@ -2106,23 +2111,23 @@
 	tx_pkts = (dhd_dbg_tx_info_t *)MALLOCZ(dhdp->osh, alloc_len);
 	if (unlikely(!tx_pkts)) {
 		DHD_ERROR(("%s(): could not allocate memory for - "
-			"dhd_dbg_tx_info_t\n", __FUNCTION__));
+			"dhd_dbg_tx_info_t ifidx:%d\n", __FUNCTION__, ifidx));
 		ret = -ENOMEM;
 		goto fail;
 	}
-	dhdp->dbg->pkt_mon.tx_report = tx_report;
-	dhdp->dbg->pkt_mon.tx_report->tx_pkts = tx_pkts;
+	dhdp->dbg->pkt_mon.tx_report[ifidx] = tx_report;
+	dhdp->dbg->pkt_mon.tx_report[ifidx]->tx_pkts = tx_pkts;
 	dhdp->dbg->pkt_mon.tx_pkt_mon = tx_pkt_mon;
 	dhdp->dbg->pkt_mon.tx_status_mon = tx_status_mon;
-	dhdp->dbg->pkt_mon.tx_pkt_state = PKT_MON_ATTACHED;
-	dhdp->dbg->pkt_mon.tx_status_state = PKT_MON_ATTACHED;
+	dhdp->dbg->pkt_mon.tx_pkt_state[ifidx] = PKT_MON_ATTACHED;
+	dhdp->dbg->pkt_mon.tx_status_state[ifidx] = PKT_MON_ATTACHED;
 
 	/* allocate and initialze rx packet monitoring */
 	alloc_len = sizeof(*rx_report);
 	rx_report = (dhd_dbg_rx_report_t *)MALLOCZ(dhdp->osh, alloc_len);
 	if (unlikely(!rx_report)) {
 		DHD_ERROR(("%s(): could not allocate memory for - "
-			"dhd_dbg_rx_report_t\n", __FUNCTION__));
+			"dhd_dbg_rx_report_t ifidx:%d\n", __FUNCTION__, ifidx));
 		ret = -ENOMEM;
 		goto fail;
 	}
@@ -2131,17 +2136,18 @@
 	rx_pkts = (dhd_dbg_rx_info_t *)MALLOCZ(dhdp->osh, alloc_len);
 	if (unlikely(!rx_pkts)) {
 		DHD_ERROR(("%s(): could not allocate memory for - "
-			"dhd_dbg_rx_info_t\n", __FUNCTION__));
+			"dhd_dbg_rx_info_t ifidx:%d\n", __FUNCTION__, ifidx));
 		ret = -ENOMEM;
 		goto fail;
 	}
-	dhdp->dbg->pkt_mon.rx_report = rx_report;
-	dhdp->dbg->pkt_mon.rx_report->rx_pkts = rx_pkts;
+	dhdp->dbg->pkt_mon.rx_report[ifidx] = rx_report;
+	dhdp->dbg->pkt_mon.rx_report[ifidx]->rx_pkts = rx_pkts;
 	dhdp->dbg->pkt_mon.rx_pkt_mon = rx_pkt_mon;
-	dhdp->dbg->pkt_mon.rx_pkt_state = PKT_MON_ATTACHED;
+	dhdp->dbg->pkt_mon.rx_pkt_state[ifidx] = PKT_MON_ATTACHED;
 
 	DHD_PKT_MON_UNLOCK(dhdp->dbg->pkt_mon_lock, flags);
-	DHD_PKT_MON(("%s(): packet monitor attach succeeded\n", __FUNCTION__));
+	DHD_PKT_MON(("%s(): packet monitor attach succeeded ifidx:%d\n",
+		__FUNCTION__, ifidx));
 	return ret;
 
 fail:
@@ -2154,12 +2160,12 @@
 		alloc_len = sizeof(*tx_report);
 		MFREE(dhdp->osh, tx_report, alloc_len);
 	}
-	dhdp->dbg->pkt_mon.tx_report = NULL;
-	dhdp->dbg->pkt_mon.tx_report->tx_pkts = NULL;
+	dhdp->dbg->pkt_mon.tx_report[ifidx] = NULL;
+	dhdp->dbg->pkt_mon.tx_report[ifidx]->tx_pkts = NULL;
 	dhdp->dbg->pkt_mon.tx_pkt_mon = NULL;
 	dhdp->dbg->pkt_mon.tx_status_mon = NULL;
-	dhdp->dbg->pkt_mon.tx_pkt_state = PKT_MON_DETACHED;
-	dhdp->dbg->pkt_mon.tx_status_state = PKT_MON_DETACHED;
+	dhdp->dbg->pkt_mon.tx_pkt_state[ifidx] = PKT_MON_DETACHED;
+	dhdp->dbg->pkt_mon.tx_status_state[ifidx] = PKT_MON_DETACHED;
 
 	/* rx packet monitoring */
 	if (rx_pkts) {
@@ -2170,18 +2176,19 @@
 		alloc_len = sizeof(*rx_report);
 		MFREE(dhdp->osh, rx_report, alloc_len);
 	}
-	dhdp->dbg->pkt_mon.rx_report = NULL;
-	dhdp->dbg->pkt_mon.rx_report->rx_pkts = NULL;
+	dhdp->dbg->pkt_mon.rx_report[ifidx] = NULL;
+	dhdp->dbg->pkt_mon.rx_report[ifidx]->rx_pkts = NULL;
 	dhdp->dbg->pkt_mon.rx_pkt_mon = NULL;
-	dhdp->dbg->pkt_mon.rx_pkt_state = PKT_MON_DETACHED;
+	dhdp->dbg->pkt_mon.rx_pkt_state[ifidx] = PKT_MON_DETACHED;
 
 	DHD_PKT_MON_UNLOCK(dhdp->dbg->pkt_mon_lock, flags);
-	DHD_ERROR(("%s(): packet monitor attach failed\n", __FUNCTION__));
+	DHD_ERROR(("%s(): packet monitor attach failed ifidx:%d\n",
+		__FUNCTION__, ifidx));
 	return ret;
 }
 
 int
-dhd_dbg_start_pkt_monitor(dhd_pub_t *dhdp)
+dhd_dbg_start_pkt_monitor(dhd_pub_t *dhdp, int ifidx)
 {
 	dhd_dbg_tx_report_t *tx_report;
 	dhd_dbg_rx_report_t *rx_report;
@@ -2191,35 +2198,48 @@
 	unsigned long flags;
 
 	if (!dhdp || !dhdp->dbg) {
-		DHD_PKT_MON(("%s(): dhdp=%p, dhdp->dbg=%p\n", __FUNCTION__,
-			dhdp, (dhdp ? dhdp->dbg : NULL)));
+		DHD_ERROR(("%s(): dhdp=%p, dhdp->dbg=%p ifidx:%d\n",
+			__FUNCTION__, dhdp, (dhdp ? dhdp->dbg : NULL), ifidx));
 		return -EINVAL;
 	}
 
+	if (ifidx >= PKT_MON_IF_MAX) {
+		DHD_ERROR(("%s: out of bound ifidx:%d\n", __FUNCTION__, ifidx));
+		return -EINVAL;
+	}
+
+#ifdef PCIE_FULL_DONGLE
+	if (!DHD_IF_ROLE_STA(dhdp, ifidx)) {
+		DHD_INFO(("%s(): unsupported role ifidx:%d role:%d\n", __FUNCTION__, ifidx,
+			DHD_IF_ROLE(dhdp, ifidx)));
+		return -EINVAL;
+	}
+#endif /* PCIE_FULL_DONGLE */
+
 	if (do_iovar_aml_enable(dhdp, 1) == BCME_OK) {
 		dhdp->aml_enable = TRUE;
 	}
 
 	DHD_PKT_MON_LOCK(dhdp->dbg->pkt_mon_lock, flags);
-	tx_pkt_state = dhdp->dbg->pkt_mon.tx_pkt_state;
-	tx_status_state = dhdp->dbg->pkt_mon.tx_status_state;
-	rx_pkt_state = dhdp->dbg->pkt_mon.rx_pkt_state;
+	tx_pkt_state = dhdp->dbg->pkt_mon.tx_pkt_state[ifidx];
+	tx_status_state = dhdp->dbg->pkt_mon.tx_status_state[ifidx];
+	rx_pkt_state = dhdp->dbg->pkt_mon.rx_pkt_state[ifidx];
 
 	if (PKT_MON_DETACHED(tx_pkt_state) || PKT_MON_DETACHED(tx_status_state) ||
 			PKT_MON_DETACHED(rx_pkt_state)) {
 		DHD_PKT_MON(("%s(): packet monitor is not yet enabled, "
-			"tx_pkt_state=%d, tx_status_state=%d, rx_pkt_state=%d\n",
-			__FUNCTION__, tx_pkt_state, tx_status_state, rx_pkt_state));
+			"ifidx:%d tx_pkt_state=%d, tx_status_state=%d, rx_pkt_state=%d\n",
+			__FUNCTION__, ifidx, tx_pkt_state, tx_status_state, rx_pkt_state));
 		DHD_PKT_MON_UNLOCK(dhdp->dbg->pkt_mon_lock, flags);
 		return -EINVAL;
 	}
 
-	dhdp->dbg->pkt_mon.tx_pkt_state = PKT_MON_STARTING;
-	dhdp->dbg->pkt_mon.tx_status_state = PKT_MON_STARTING;
-	dhdp->dbg->pkt_mon.rx_pkt_state = PKT_MON_STARTING;
+	dhdp->dbg->pkt_mon.tx_pkt_state[ifidx] = PKT_MON_STARTING;
+	dhdp->dbg->pkt_mon.tx_status_state[ifidx] = PKT_MON_STARTING;
+	dhdp->dbg->pkt_mon.rx_pkt_state[ifidx] = PKT_MON_STARTING;
 
-	tx_report = dhdp->dbg->pkt_mon.tx_report;
-	rx_report = dhdp->dbg->pkt_mon.rx_report;
+	tx_report = dhdp->dbg->pkt_mon.tx_report[ifidx];
+	rx_report = dhdp->dbg->pkt_mon.rx_report[ifidx];
 	if (!tx_report || !rx_report) {
 		DHD_PKT_MON(("%s(): tx_report=%p, rx_report=%p\n",
 			__FUNCTION__, tx_report, rx_report));
@@ -2228,9 +2248,9 @@
 	}
 
 
-	tx_pkt_state = dhdp->dbg->pkt_mon.tx_pkt_state;
-	tx_status_state = dhdp->dbg->pkt_mon.tx_status_state;
-	rx_pkt_state = dhdp->dbg->pkt_mon.rx_pkt_state;
+	tx_pkt_state = dhdp->dbg->pkt_mon.tx_pkt_state[ifidx];
+	tx_status_state = dhdp->dbg->pkt_mon.tx_status_state[ifidx];
+	rx_pkt_state = dhdp->dbg->pkt_mon.rx_pkt_state[ifidx];
 
 	/* Safe to free packets as state pkt_state is STARTING */
 	__dhd_dbg_free_tx_pkts(dhdp, tx_report->tx_pkts, tx_report->pkt_pos);
@@ -2240,20 +2260,20 @@
 	/* reset array postion */
 	tx_report->pkt_pos = 0;
 	tx_report->status_pos = 0;
-	dhdp->dbg->pkt_mon.tx_pkt_state = PKT_MON_STARTED;
-	dhdp->dbg->pkt_mon.tx_status_state = PKT_MON_STARTED;
+	dhdp->dbg->pkt_mon.tx_pkt_state[ifidx] = PKT_MON_STARTED;
+	dhdp->dbg->pkt_mon.tx_status_state[ifidx] = PKT_MON_STARTED;
 
 	rx_report->pkt_pos = 0;
-	dhdp->dbg->pkt_mon.rx_pkt_state = PKT_MON_STARTED;
+	dhdp->dbg->pkt_mon.rx_pkt_state[ifidx] = PKT_MON_STARTED;
 	DHD_PKT_MON_UNLOCK(dhdp->dbg->pkt_mon_lock, flags);
 
-	DHD_PKT_MON(("%s(): packet monitor started\n", __FUNCTION__));
+	DHD_PKT_MON(("%s(): packet monitor started ifidx:%d\n", __FUNCTION__, ifidx));
 	return BCME_OK;
 }
 
 int
-dhd_dbg_monitor_tx_pkts(dhd_pub_t *dhdp, void *pkt, uint32 pktid, frame_type type, uint8 mgmt_acked,
-	bool aml)
+dhd_dbg_monitor_tx_pkts(dhd_pub_t *dhdp, int ifidx, void *pkt, uint32 pktid, frame_type type,
+	uint8 mgmt_acked, bool aml)
 {
 	dhd_dbg_tx_report_t *tx_report;
 	dhd_dbg_tx_info_t *tx_pkts;
@@ -2263,15 +2283,28 @@
 	unsigned long flags;
 
 	if (!dhdp || !dhdp->dbg) {
-		DHD_PKT_MON(("%s(): dhdp=%p, dhdp->dbg=%p\n", __FUNCTION__,
-			dhdp, (dhdp ? dhdp->dbg : NULL)));
+		DHD_ERROR(("%s(): dhdp=%p, dhdp->dbg=%p ifidx:%d\n",
+			__FUNCTION__, dhdp, (dhdp ? dhdp->dbg : NULL), ifidx));
 		return -EINVAL;
 	}
 
+	if (ifidx >= PKT_MON_IF_MAX) {
+		DHD_ERROR(("%s: out of bound ifidx:%d\n", __FUNCTION__, ifidx));
+		return -EINVAL;
+	}
+
+#ifdef PCIE_FULL_DONGLE
+	if (!DHD_IF_ROLE_STA(dhdp, ifidx)) {
+		DHD_INFO(("%s(): unsupported role ifidx:%d role:%d\n", __FUNCTION__, ifidx,
+			DHD_IF_ROLE(dhdp, ifidx)));
+		return -EINVAL;
+	}
+#endif /* PCIE_FULL_DONGLE */
+
 	DHD_PKT_MON_LOCK(dhdp->dbg->pkt_mon_lock, flags);
-	tx_pkt_state = dhdp->dbg->pkt_mon.tx_pkt_state;
+	tx_pkt_state = dhdp->dbg->pkt_mon.tx_pkt_state[ifidx];
 	if (PKT_MON_STARTED(tx_pkt_state)) {
-		tx_report = dhdp->dbg->pkt_mon.tx_report;
+		tx_report = dhdp->dbg->pkt_mon.tx_report[ifidx];
 		pkt_pos = tx_report->pkt_pos;
 
 		if (!PKT_MON_PKT_FULL(pkt_pos)) {
@@ -2308,11 +2341,11 @@
 			if (aml) {
 				PKTFREE(dhdp->osh, pkt, TRUE);
 			}
-			dhdp->dbg->pkt_mon.tx_pkt_state = PKT_MON_STOPPED;
+			dhdp->dbg->pkt_mon.tx_pkt_state[ifidx] = PKT_MON_STOPPED;
 			DHD_PKT_MON(("%s(): tx pkt logging stopped, reached "
-				"max limit\n", __FUNCTION__));
+				"max limit ifidx:%d\n", __FUNCTION__, ifidx));
 			if (dhdp->aml_enable) {
-				dhd_schedule_aml_disable(dhdp);
+				dhd_schedule_aml_disable(dhdp, ifidx);
 			}
 		}
 	}
@@ -2322,7 +2355,7 @@
 }
 
 int
-dhd_dbg_monitor_tx_status(dhd_pub_t *dhdp, void *pkt, uint32 pktid,
+dhd_dbg_monitor_tx_status(dhd_pub_t *dhdp, int ifidx, void *pkt, uint32 pktid,
 		uint16 status)
 {
 	dhd_dbg_tx_report_t *tx_report;
@@ -2336,15 +2369,28 @@
 	unsigned long flags;
 
 	if (!dhdp || !dhdp->dbg) {
-		DHD_PKT_MON(("%s(): dhdp=%p, dhdp->dbg=%p\n", __FUNCTION__,
-			dhdp, (dhdp ? dhdp->dbg : NULL)));
+		DHD_ERROR(("%s(): dhdp=%p, dhdp->dbg=%p ifidx:%d\n",
+			__FUNCTION__, dhdp, (dhdp ? dhdp->dbg : NULL), ifidx));
 		return -EINVAL;
 	}
 
+	if (ifidx >= PKT_MON_IF_MAX) {
+		DHD_ERROR(("%s: out of bound ifidx:%d\n", __FUNCTION__, ifidx));
+		return -EINVAL;
+	}
+
+#ifdef PCIE_FULL_DONGLE
+	if (!DHD_IF_ROLE_STA(dhdp, ifidx)) {
+		DHD_INFO(("%s(): unsupported role ifidx:%d role:%d\n", __FUNCTION__, ifidx,
+			DHD_IF_ROLE(dhdp, ifidx)));
+		return -EINVAL;
+	}
+#endif /* PCIE_FULL_DONGLE */
+
 	DHD_PKT_MON_LOCK(dhdp->dbg->pkt_mon_lock, flags);
-	tx_status_state = dhdp->dbg->pkt_mon.tx_status_state;
+	tx_status_state = dhdp->dbg->pkt_mon.tx_status_state[ifidx];
 	if (PKT_MON_STARTED(tx_status_state)) {
-		tx_report = dhdp->dbg->pkt_mon.tx_report;
+		tx_report = dhdp->dbg->pkt_mon.tx_report[ifidx];
 		pkt_pos = tx_report->pkt_pos;
 		status_pos = tx_report->status_pos;
 
@@ -2391,7 +2437,7 @@
 				}
 			}
 		} else {
-			dhdp->dbg->pkt_mon.tx_status_state = PKT_MON_STOPPED;
+			dhdp->dbg->pkt_mon.tx_status_state[ifidx] = PKT_MON_STOPPED;
 			DHD_PKT_MON(("%s(): tx_status logging stopped, reached "
 				"max limit\n", __FUNCTION__));
 		}
@@ -2402,7 +2448,7 @@
 }
 
 int
-dhd_dbg_monitor_rx_pkts(dhd_pub_t *dhdp, void *pkt, frame_type type, bool aml)
+dhd_dbg_monitor_rx_pkts(dhd_pub_t *dhdp, int ifidx, void *pkt, frame_type type, bool aml)
 {
 	dhd_dbg_rx_report_t *rx_report;
 	dhd_dbg_rx_info_t *rx_pkts;
@@ -2412,15 +2458,28 @@
 	unsigned long flags;
 
 	if (!dhdp || !dhdp->dbg) {
-		DHD_PKT_MON(("%s(): dhdp=%p, dhdp->dbg=%p\n", __FUNCTION__,
-			dhdp, (dhdp ? dhdp->dbg : NULL)));
+		DHD_ERROR(("%s(): dhdp=%p, dhdp->dbg=%p ifidx:%d\n",
+			__FUNCTION__, dhdp, (dhdp ? dhdp->dbg : NULL), ifidx));
 		return -EINVAL;
 	}
 
+	if (ifidx >= PKT_MON_IF_MAX) {
+		DHD_ERROR(("%s: out of bound ifidx:%d\n", __FUNCTION__, ifidx));
+		return -EINVAL;
+	}
+
+#ifdef PCIE_FULL_DONGLE
+	if (!DHD_IF_ROLE_STA(dhdp, ifidx)) {
+		DHD_INFO(("%s(): unsupported role ifidx:%d role:%d\n", __FUNCTION__, ifidx,
+			DHD_IF_ROLE(dhdp, ifidx)));
+		return -EINVAL;
+	}
+#endif /* PCIE_FULL_DONGLE */
+
 	DHD_PKT_MON_LOCK(dhdp->dbg->pkt_mon_lock, flags);
-	rx_pkt_state = dhdp->dbg->pkt_mon.rx_pkt_state;
+	rx_pkt_state = dhdp->dbg->pkt_mon.rx_pkt_state[ifidx];
 	if (PKT_MON_STARTED(rx_pkt_state)) {
-		rx_report = dhdp->dbg->pkt_mon.rx_report;
+		rx_report = dhdp->dbg->pkt_mon.rx_report[ifidx];
 		pkt_pos = rx_report->pkt_pos;
 
 		if (!PKT_MON_PKT_FULL(pkt_pos)) {
@@ -2444,11 +2503,11 @@
 			if (aml) {
 				PKTFREE(dhdp->osh, pkt, TRUE);
 			}
-			dhdp->dbg->pkt_mon.rx_pkt_state = PKT_MON_STOPPED;
+			dhdp->dbg->pkt_mon.rx_pkt_state[ifidx] = PKT_MON_STOPPED;
 			DHD_PKT_MON(("%s(): rx pkt logging stopped, reached "
-					"max limit\n", __FUNCTION__));
+					"max limit ifidx:%d\n", __FUNCTION__, ifidx));
 			if (dhdp->aml_enable) {
-				dhd_schedule_aml_disable(dhdp);
+				dhd_schedule_aml_disable(dhdp, ifidx);
 			}
 		}
 	}
@@ -2458,7 +2517,7 @@
 }
 
 int
-dhd_dbg_stop_pkt_monitor(dhd_pub_t *dhdp)
+dhd_dbg_stop_pkt_monitor(dhd_pub_t *dhdp, int ifidx)
 {
 	dhd_dbg_pkt_mon_state_t tx_pkt_state;
 	dhd_dbg_pkt_mon_state_t tx_status_state;
@@ -2466,15 +2525,20 @@
 	unsigned long flags;
 
 	if (!dhdp || !dhdp->dbg) {
-		DHD_PKT_MON(("%s(): dhdp=%p, dhdp->dbg=%p\n", __FUNCTION__,
-			dhdp, (dhdp ? dhdp->dbg : NULL)));
+		DHD_ERROR(("%s(): dhdp=%p, dhdp->dbg=%p ifidx:%d\n",
+			__FUNCTION__, dhdp, (dhdp ? dhdp->dbg : NULL), ifidx));
+		return -EINVAL;
+	}
+
+	if (ifidx >= PKT_MON_IF_MAX) {
+		DHD_ERROR(("%s: out of bound ifidx:%d\n", __FUNCTION__, ifidx));
 		return -EINVAL;
 	}
 
 	DHD_PKT_MON_LOCK(dhdp->dbg->pkt_mon_lock, flags);
-	tx_pkt_state = dhdp->dbg->pkt_mon.tx_pkt_state;
-	tx_status_state = dhdp->dbg->pkt_mon.tx_status_state;
-	rx_pkt_state = dhdp->dbg->pkt_mon.rx_pkt_state;
+	tx_pkt_state = dhdp->dbg->pkt_mon.tx_pkt_state[ifidx];
+	tx_status_state = dhdp->dbg->pkt_mon.tx_status_state[ifidx];
+	rx_pkt_state = dhdp->dbg->pkt_mon.rx_pkt_state[ifidx];
 
 	if (PKT_MON_DETACHED(tx_pkt_state) || PKT_MON_DETACHED(tx_status_state) ||
 			PKT_MON_DETACHED(rx_pkt_state)) {
@@ -2484,12 +2548,12 @@
 		DHD_PKT_MON_UNLOCK(dhdp->dbg->pkt_mon_lock, flags);
 		return -EINVAL;
 	}
-	dhdp->dbg->pkt_mon.tx_pkt_state = PKT_MON_STOPPED;
-	dhdp->dbg->pkt_mon.tx_status_state = PKT_MON_STOPPED;
-	dhdp->dbg->pkt_mon.rx_pkt_state = PKT_MON_STOPPED;
+	dhdp->dbg->pkt_mon.tx_pkt_state[ifidx] = PKT_MON_STOPPED;
+	dhdp->dbg->pkt_mon.tx_status_state[ifidx] = PKT_MON_STOPPED;
+	dhdp->dbg->pkt_mon.rx_pkt_state[ifidx] = PKT_MON_STOPPED;
 	DHD_PKT_MON_UNLOCK(dhdp->dbg->pkt_mon_lock, flags);
 
-	DHD_PKT_MON(("%s(): packet monitor stopped\n", __FUNCTION__));
+	DHD_PKT_MON(("%s(): packet monitor stopped ifidx:%d\n", __FUNCTION__, ifidx));
 	return BCME_OK;
 }
 
@@ -2519,7 +2583,8 @@
 }
 
 int
-dhd_dbg_monitor_get_tx_pkts(dhd_pub_t *dhdp, void __user *user_buf,
+dhd_dbg_monitor_get_tx_pkts(dhd_pub_t *dhdp, int ifidx,
+		void __user *user_buf,
 		uint16 req_count, uint16 *resp_count)
 {
 	dhd_dbg_tx_report_t *tx_report;
@@ -2537,25 +2602,30 @@
 	BCM_REFERENCE(cptr);
 
 	if (!dhdp || !dhdp->dbg) {
-		DHD_PKT_MON(("%s(): dhdp=%p, dhdp->dbg=%p\n", __FUNCTION__,
-			dhdp, (dhdp ? dhdp->dbg : NULL)));
+		DHD_ERROR(("%s(): dhdp=%p, dhdp->dbg=%p ifidx:%d\n",
+			__FUNCTION__, dhdp, (dhdp ? dhdp->dbg : NULL), ifidx));
+		return -EINVAL;
+	}
+
+	if (ifidx >= PKT_MON_IF_MAX) {
+		DHD_ERROR(("%s: out of bound ifidx:%d\n", __FUNCTION__, ifidx));
 		return -EINVAL;
 	}
 
 	DHD_PKT_MON_LOCK(dhdp->dbg->pkt_mon_lock, flags);
-	tx_pkt_state = dhdp->dbg->pkt_mon.tx_pkt_state;
-	tx_status_state = dhdp->dbg->pkt_mon.tx_status_state;
+	tx_pkt_state = dhdp->dbg->pkt_mon.tx_pkt_state[ifidx];
+	tx_status_state = dhdp->dbg->pkt_mon.tx_status_state[ifidx];
 	if (!PKT_MON_ATTACHED(tx_pkt_state) ||
 			!PKT_MON_ATTACHED(tx_status_state)) {
 		DHD_PKT_MON(("%s(): packet monitor is not yet enabled, "
-			"tx_pkt_state=%d, tx_status_state=%d\n", __FUNCTION__,
-			tx_pkt_state, tx_status_state));
+			"tx_pkt_state=%d, tx_status_state=%d ifidx:%d\n",
+			__FUNCTION__, tx_pkt_state, tx_status_state, ifidx));
 		DHD_PKT_MON_UNLOCK(dhdp->dbg->pkt_mon_lock, flags);
 		return -EINVAL;
 	}
 
 	count = 0;
-	tx_report = dhdp->dbg->pkt_mon.tx_report;
+	tx_report = dhdp->dbg->pkt_mon.tx_report[ifidx];
 	ori_tx_pkt = tx_report->tx_pkts;
 	pkt_count = MIN(req_count, tx_report->status_pos);
 
@@ -2652,7 +2722,8 @@
 }
 
 int
-dhd_dbg_monitor_get_rx_pkts(dhd_pub_t *dhdp, void __user *user_buf,
+dhd_dbg_monitor_get_rx_pkts(dhd_pub_t *dhdp, int ifidx,
+		void __user *user_buf,
 		uint16 req_count, uint16 *resp_count)
 {
 	dhd_dbg_rx_report_t *rx_report;
@@ -2669,22 +2740,27 @@
 	BCM_REFERENCE(cptr);
 
 	if (!dhdp || !dhdp->dbg) {
-		DHD_PKT_MON(("%s(): dhdp=%p, dhdp->dbg=%p\n", __FUNCTION__,
-			dhdp, (dhdp ? dhdp->dbg : NULL)));
+		DHD_ERROR(("%s(): dhdp=%p, dhdp->dbg=%p ifidx:%d\n",
+			__FUNCTION__, dhdp, (dhdp ? dhdp->dbg : NULL), ifidx));
+		return -EINVAL;
+	}
+
+	if (ifidx >= PKT_MON_IF_MAX) {
+		DHD_ERROR(("%s: out of bound ifidx:%d\n", __FUNCTION__, ifidx));
 		return -EINVAL;
 	}
 
 	DHD_PKT_MON_LOCK(dhdp->dbg->pkt_mon_lock, flags);
-	rx_pkt_state = dhdp->dbg->pkt_mon.rx_pkt_state;
+	rx_pkt_state = dhdp->dbg->pkt_mon.rx_pkt_state[ifidx];
 	if (!PKT_MON_ATTACHED(rx_pkt_state)) {
 		DHD_PKT_MON(("%s(): packet fetch is not allowed , "
-			"rx_pkt_state=%d\n", __FUNCTION__, rx_pkt_state));
+			"rx_pkt_state=%d ifidx:%d\n", __FUNCTION__, rx_pkt_state, ifidx));
 		DHD_PKT_MON_UNLOCK(dhdp->dbg->pkt_mon_lock, flags);
 		return -EINVAL;
 	}
 
 	count = 0;
-	rx_report = dhdp->dbg->pkt_mon.rx_report;
+	rx_report = dhdp->dbg->pkt_mon.rx_report[ifidx];
 	ori_rx_pkt = rx_report->rx_pkts;
 	pkt_count = MIN(req_count, rx_report->pkt_pos);
 
@@ -2766,7 +2842,7 @@
 }
 
 int
-dhd_dbg_detach_pkt_monitor(dhd_pub_t *dhdp)
+dhd_dbg_detach_pkt_monitor(dhd_pub_t *dhdp, int ifidx)
 {
 	dhd_dbg_tx_report_t *tx_report;
 	dhd_dbg_rx_report_t *rx_report;
@@ -2776,64 +2852,138 @@
 	unsigned long flags;
 
 	if (!dhdp || !dhdp->dbg) {
-		DHD_PKT_MON(("%s(): dhdp=%p, dhdp->dbg=%p\n", __FUNCTION__,
-			dhdp, (dhdp ? dhdp->dbg : NULL)));
+		DHD_ERROR(("%s(): dhdp=%p, dhdp->dbg=%p ifidx:%d\n",
+			__FUNCTION__, dhdp, (dhdp ? dhdp->dbg : NULL), ifidx));
+		return -EINVAL;
+	}
+
+	if (ifidx >= PKT_MON_IF_MAX) {
+		DHD_ERROR(("%s: out of bound ifidx:%d\n", __FUNCTION__, ifidx));
 		return -EINVAL;
 	}
 
 	DHD_PKT_MON_LOCK(dhdp->dbg->pkt_mon_lock, flags);
-	tx_pkt_state = dhdp->dbg->pkt_mon.tx_pkt_state;
-	tx_status_state = dhdp->dbg->pkt_mon.tx_status_state;
-	rx_pkt_state = dhdp->dbg->pkt_mon.rx_pkt_state;
+	tx_pkt_state = dhdp->dbg->pkt_mon.tx_pkt_state[ifidx];
+	tx_status_state = dhdp->dbg->pkt_mon.tx_status_state[ifidx];
+	rx_pkt_state = dhdp->dbg->pkt_mon.rx_pkt_state[ifidx];
 
 	if (PKT_MON_DETACHED(tx_pkt_state) || PKT_MON_DETACHED(tx_status_state) ||
 			PKT_MON_DETACHED(rx_pkt_state)) {
-		DHD_PKT_MON(("%s(): packet monitor is already detached, "
-			"tx_pkt_state=%d, tx_status_state=%d, rx_pkt_state=%d\n",
-			__FUNCTION__, tx_pkt_state, tx_status_state, rx_pkt_state));
+	        DHD_PKT_MON(("%s(): packet monitor is already detached, "
+			"ifidx:%d tx_pkt_state=%d, tx_status_state=%d, rx_pkt_state=%d\n",
+			__FUNCTION__, ifidx, tx_pkt_state, tx_status_state, rx_pkt_state));
 		DHD_PKT_MON_UNLOCK(dhdp->dbg->pkt_mon_lock, flags);
 		return -EINVAL;
 	}
 
-	tx_report = dhdp->dbg->pkt_mon.tx_report;
-	rx_report = dhdp->dbg->pkt_mon.rx_report;
+	tx_report = dhdp->dbg->pkt_mon.tx_report[ifidx];
+	rx_report = dhdp->dbg->pkt_mon.rx_report[ifidx];
 
 	/* free and de-initalize tx packet monitoring */
-	dhdp->dbg->pkt_mon.tx_pkt_state = PKT_MON_DETACHED;
-	dhdp->dbg->pkt_mon.tx_status_state = PKT_MON_DETACHED;
+	dhdp->dbg->pkt_mon.tx_pkt_state[ifidx] = PKT_MON_DETACHED;
+	dhdp->dbg->pkt_mon.tx_status_state[ifidx] = PKT_MON_DETACHED;
 	if (tx_report) {
 		if (tx_report->tx_pkts) {
 			__dhd_dbg_free_tx_pkts(dhdp, tx_report->tx_pkts,
 				tx_report->pkt_pos);
 			MFREE(dhdp->osh, tx_report->tx_pkts,
 				(sizeof(*tx_report->tx_pkts) * MAX_FATE_LOG_LEN));
-			dhdp->dbg->pkt_mon.tx_report->tx_pkts = NULL;
+			dhdp->dbg->pkt_mon.tx_report[ifidx]->tx_pkts = NULL;
 		}
 		MFREE(dhdp->osh, tx_report, sizeof(*tx_report));
-		dhdp->dbg->pkt_mon.tx_report = NULL;
+		dhdp->dbg->pkt_mon.tx_report[ifidx] = NULL;
 	}
 	dhdp->dbg->pkt_mon.tx_pkt_mon = NULL;
 	dhdp->dbg->pkt_mon.tx_status_mon = NULL;
 
 	/* free and de-initalize rx packet monitoring */
-	dhdp->dbg->pkt_mon.rx_pkt_state = PKT_MON_DETACHED;
+	dhdp->dbg->pkt_mon.rx_pkt_state[ifidx] = PKT_MON_DETACHED;
 	if (rx_report) {
 		if (rx_report->rx_pkts) {
 			__dhd_dbg_free_rx_pkts(dhdp, rx_report->rx_pkts,
 				rx_report->pkt_pos);
 			MFREE(dhdp->osh, rx_report->rx_pkts,
 				(sizeof(*rx_report->rx_pkts) * MAX_FATE_LOG_LEN));
-			dhdp->dbg->pkt_mon.rx_report->rx_pkts = NULL;
+			dhdp->dbg->pkt_mon.rx_report[ifidx]->rx_pkts = NULL;
 		}
 		MFREE(dhdp->osh, rx_report, sizeof(*rx_report));
-		dhdp->dbg->pkt_mon.rx_report = NULL;
+		dhdp->dbg->pkt_mon.rx_report[ifidx] = NULL;
 	}
 	dhdp->dbg->pkt_mon.rx_pkt_mon = NULL;
 
 	DHD_PKT_MON_UNLOCK(dhdp->dbg->pkt_mon_lock, flags);
-	DHD_PKT_MON(("%s(): packet monitor detach succeeded\n", __FUNCTION__));
+	DHD_PKT_MON(("%s(): packet monitor detach succeeded ifidx:%d\n",
+		__FUNCTION__, ifidx));
 	return BCME_OK;
 }
+
+void
+dhd_dbg_monitor_mgmt_str(uint8 subtype, char *buf, uint32 buflen)
+{
+	char *str = NULL;
+
+	switch (subtype) {
+		case FC_SUBTYPE_ASSOC_REQ:
+			str = "ASSOC REQ";
+			break;
+		case FC_SUBTYPE_ASSOC_RESP:
+			str = "ASSOC RESP";
+			break;
+		case FC_SUBTYPE_REASSOC_REQ:
+			str = "REASSOC REQ";
+			break;
+		case FC_SUBTYPE_REASSOC_RESP:
+			str = "REASSOC RESP";
+			break;
+		case FC_SUBTYPE_PROBE_REQ:
+			str = "PROBE REQ";
+			break;
+		case FC_SUBTYPE_PROBE_RESP:
+			str = "PROBE RESP";
+			break;
+		case FC_SUBTYPE_AUTH:
+			str = "AUTH";
+			break;
+		default:
+			str = "MGMT NOT EXPECTED";
+			break;
+	}
+	(void)strlcpy(buf, str, buflen);
+}
+
+void
+dhd_dbg_monitor_eapol_str(msg_eapol_t type, char *buf, uint32 buflen)
+{
+	char *str = NULL;
+
+	switch (type) {
+		case EAPOL_OTHER:
+			str = "EAPOL OTHER";
+			break;
+		case EAPOL_4WAY_M1:
+			str = "4WAY M1";
+			break;
+		case EAPOL_4WAY_M2:
+			str = "4WAY M2";
+			break;
+		case EAPOL_4WAY_M3:
+			str = "4WAY M3";
+			break;
+		case EAPOL_4WAY_M4:
+			str = "4WAY M4";
+			break;
+		case EAPOL_GROUPKEY_M1:
+			str = "GROUP M1";
+			break;
+		case EAPOL_GROUPKEY_M2:
+			str = "GROUP M2";
+			break;
+		default:
+			str = "EAPOL NOT EXPECTED";
+			break;
+	}
+	(void)strlcpy(buf, str, buflen);
+}
 #endif /* DBG_PKT_MON */
 
 #if defined(DBG_PKT_MON) || defined(DHD_PKT_LOGGING)
@@ -2844,19 +2994,23 @@
  * completion header.
  */
 bool
-dhd_dbg_process_tx_status(dhd_pub_t *dhdp, void *pkt, uint32 pktid,
+dhd_dbg_process_tx_status(dhd_pub_t *dhdp, int ifidx, void *pkt, uint32 pktid,
 		uint16 status)
 {
 	bool pkt_fate = TRUE;
 	if (dhdp->d11_tx_status) {
 		pkt_fate = (status == WLFC_CTL_PKTFLAG_DISCARD) ? TRUE : FALSE;
+#ifdef DHD_PKT_MON_DUAL_STA
+		DHD_DBG_PKT_MON_TX_STATUS(dhdp, ifidx, pkt, pktid, status);
+#else
 		DHD_DBG_PKT_MON_TX_STATUS(dhdp, pkt, pktid, status);
+#endif /* DHD_PKT_MON_DUAL_STA */
 	}
 	return pkt_fate;
 }
 #else /* DBG_PKT_MON || DHD_PKT_LOGGING */
 bool
-dhd_dbg_process_tx_status(dhd_pub_t *dhdp, void *pkt,
+dhd_dbg_process_tx_status(dhd_pub_t *dhdp, int ifidx, void *pkt,
 		uint32 pktid, uint16 status)
 {
 	return TRUE;
diff --git a/dhd_debug.h b/dhd_debug.h
index bd4fb80..8d2d5e5 100644
--- a/dhd_debug.h
+++ b/dhd_debug.h
@@ -1,7 +1,7 @@
 /*
  * DHD debugability header file
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -26,6 +26,7 @@
 #include <event_log.h>
 #include <bcmutils.h>
 #include <dhd_dbg_ring.h>
+#include <dhd_linux_pktdump.h>
 
 enum {
 	/* Feature set */
@@ -685,19 +686,25 @@
 
 typedef void (*dbg_pullreq_t)(void *os_priv, const int ring_id);
 typedef void (*dbg_urgent_noti_t) (dhd_pub_t *dhdp, const void *data, const uint32 len);
-typedef int (*dbg_mon_tx_pkts_t) (dhd_pub_t *dhdp, void *pkt, uint32 pktid,
+typedef int (*dbg_mon_tx_pkts_t) (dhd_pub_t *dhdp, int ifidx, void *pkt, uint32 pktid,
 	frame_type type, uint8 mgmt_acked, bool aml);
-typedef int (*dbg_mon_tx_status_t) (dhd_pub_t *dhdp, void *pkt,
+typedef int (*dbg_mon_tx_status_t) (dhd_pub_t *dhdp, int ifidx, void *pkt,
 	uint32 pktid, uint16 status);
-typedef int (*dbg_mon_rx_pkts_t) (dhd_pub_t *dhdp, void *pkt, frame_type type, bool aml);
+typedef int (*dbg_mon_rx_pkts_t) (dhd_pub_t *dhdp, int ifidx, void *pkt, frame_type type, bool aml);
+
+#ifdef DHD_PKT_MON_DUAL_STA
+#define PKT_MON_IF_MAX 2u
+#else
+#define PKT_MON_IF_MAX 1u
+#endif /* DHD_PKT_MON_DUAL_STA */
 
 typedef struct dhd_dbg_pkt_mon
 {
-	dhd_dbg_tx_report_t *tx_report;
-	dhd_dbg_rx_report_t *rx_report;
-	dhd_dbg_pkt_mon_state_t tx_pkt_state;
-	dhd_dbg_pkt_mon_state_t tx_status_state;
-	dhd_dbg_pkt_mon_state_t rx_pkt_state;
+	dhd_dbg_tx_report_t *tx_report[PKT_MON_IF_MAX];
+	dhd_dbg_rx_report_t *rx_report[PKT_MON_IF_MAX];
+	dhd_dbg_pkt_mon_state_t tx_pkt_state[PKT_MON_IF_MAX];
+	dhd_dbg_pkt_mon_state_t tx_status_state[PKT_MON_IF_MAX];
+	dhd_dbg_pkt_mon_state_t rx_pkt_state[PKT_MON_IF_MAX];
 
 	/* call backs */
 	dbg_mon_tx_pkts_t tx_pkt_mon;
@@ -743,32 +750,65 @@
 		(((status_count) >= (pkt_count)) || ((status_count) >= MAX_FATE_LOG_LEN))
 
 #ifdef DBG_PKT_MON
+#ifdef DHD_PKT_MON_DUAL_STA
+#define DHD_DBG_PKT_MON_TX(dhdp, ifidx, pkt, pktid, type, mgmt_acked, aml) \
+	do { \
+		if ((dhdp) && (dhdp)->dbg && (dhdp)->dbg->pkt_mon.tx_pkt_mon && \
+			(pkt) && (ifidx < PKT_MON_IF_MAX)) {                    \
+			(dhdp)->dbg->pkt_mon.tx_pkt_mon((dhdp), (ifidx), (pkt), \
+			(pktid), (type), (mgmt_acked), (aml)); \
+		} \
+	} while (0);
+#define DHD_DBG_PKT_MON_TX_STATUS(dhdp, ifidx, pkt, pktid, status) \
+	do { \
+		if ((dhdp) && (dhdp)->dbg && (dhdp)->dbg->pkt_mon.tx_status_mon && \
+			(pkt) && (ifidx < PKT_MON_IF_MAX)) {                       \
+			(dhdp)->dbg->pkt_mon.tx_status_mon((dhdp), (ifidx), (pkt), \
+			(pktid), (status)); \
+		} \
+	} while (0);
+#define DHD_DBG_PKT_MON_RX(dhdp, ifidx, pkt, type, aml) \
+	do { \
+		if ((dhdp) && (dhdp)->dbg && (dhdp)->dbg->pkt_mon.rx_pkt_mon && \
+			(pkt) && (ifidx < PKT_MON_IF_MAX)) {                    \
+			if (ntoh16((pkt)->protocol) != ETHER_TYPE_BRCM) { \
+				(dhdp)->dbg->pkt_mon.rx_pkt_mon((dhdp), (ifidx), (pkt), \
+				(type), (aml)); \
+			} \
+		} \
+	} while (0);
+#define DHD_DBG_PKT_MON_START(dhdp, ifidx) \
+		dhd_os_dbg_start_pkt_monitor((dhdp), (ifidx));
+#define DHD_DBG_PKT_MON_STOP(dhdp, ifidx) \
+		dhd_os_dbg_stop_pkt_monitor((dhdp), (ifidx));
+#else /* DHD_PKT_MON_DUAL_STA */
 #define DHD_DBG_PKT_MON_TX(dhdp, pkt, pktid, type, mgmt_acked, aml) \
 	do { \
 		if ((dhdp) && (dhdp)->dbg && (dhdp)->dbg->pkt_mon.tx_pkt_mon && (pkt)) { \
-			(dhdp)->dbg->pkt_mon.tx_pkt_mon((dhdp), (pkt), \
+			(dhdp)->dbg->pkt_mon.tx_pkt_mon((dhdp), 0, (pkt), \
 			(pktid), (type), (mgmt_acked), (aml)); \
 		} \
 	} while (0);
 #define DHD_DBG_PKT_MON_TX_STATUS(dhdp, pkt, pktid, status) \
 	do { \
 		if ((dhdp) && (dhdp)->dbg && (dhdp)->dbg->pkt_mon.tx_status_mon && (pkt)) { \
-			(dhdp)->dbg->pkt_mon.tx_status_mon((dhdp), (pkt), (pktid), (status)); \
+			(dhdp)->dbg->pkt_mon.tx_status_mon((dhdp), 0, (pkt), (pktid), (status)); \
 		} \
 	} while (0);
 #define DHD_DBG_PKT_MON_RX(dhdp, pkt, type, aml) \
 	do { \
 		if ((dhdp) && (dhdp)->dbg && (dhdp)->dbg->pkt_mon.rx_pkt_mon && (pkt)) { \
 			if (ntoh16((pkt)->protocol) != ETHER_TYPE_BRCM) { \
-				(dhdp)->dbg->pkt_mon.rx_pkt_mon((dhdp), (pkt), (type), (aml)); \
+				(dhdp)->dbg->pkt_mon.rx_pkt_mon((dhdp), 0, (pkt), (type), (aml)); \
 			} \
 		} \
 	} while (0);
 
 #define DHD_DBG_PKT_MON_START(dhdp) \
-		dhd_os_dbg_start_pkt_monitor((dhdp));
+		dhd_os_dbg_start_pkt_monitor((dhdp), 0);
 #define DHD_DBG_PKT_MON_STOP(dhdp) \
-		dhd_os_dbg_stop_pkt_monitor((dhdp));
+		dhd_os_dbg_stop_pkt_monitor((dhdp), 0);
+#endif /* DHD_PKT_MON_DUAL_STA */
 #else
 #define DHD_DBG_PKT_MON_TX(dhdp, pkt, pktid, type, mgmt_acked, aml)
 #define DHD_DBG_PKT_MON_TX_STATUS(dhdp, pkt, pktid, status)
@@ -884,26 +924,29 @@
 #endif /* SHOW_LOGTRACE */
 
 #ifdef DBG_PKT_MON
-extern int dhd_dbg_attach_pkt_monitor(dhd_pub_t *dhdp,
+extern int dhd_dbg_attach_pkt_monitor(dhd_pub_t *dhdp, int ifidx,
 		dbg_mon_tx_pkts_t tx_pkt_mon,
 		dbg_mon_tx_status_t tx_status_mon,
 		dbg_mon_rx_pkts_t rx_pkt_mon);
-extern int dhd_dbg_start_pkt_monitor(dhd_pub_t *dhdp);
-extern int dhd_dbg_monitor_tx_pkts(dhd_pub_t *dhdp, void *pkt,
+extern int dhd_dbg_start_pkt_monitor(dhd_pub_t *dhdp, int ifidx);
+extern int dhd_dbg_monitor_tx_pkts(dhd_pub_t *dhdp, int ifidx, void *pkt,
 		uint32 pktid, frame_type type, uint8 mgmt_acked, bool aml);
-extern int dhd_dbg_monitor_tx_status(dhd_pub_t *dhdp, void *pkt,
+extern int dhd_dbg_monitor_tx_status(dhd_pub_t *dhdp, int ifidx, void *pkt,
 		uint32 pktid, uint16 status);
-extern int dhd_dbg_monitor_rx_pkts(dhd_pub_t *dhdp, void *pkt, frame_type type,
+extern int dhd_dbg_monitor_rx_pkts(dhd_pub_t *dhdp, int ifidx, void *pkt, frame_type type,
 		bool aml);
-extern int dhd_dbg_stop_pkt_monitor(dhd_pub_t *dhdp);
-extern int dhd_dbg_monitor_get_tx_pkts(dhd_pub_t *dhdp, void __user *user_buf,
+extern int dhd_dbg_stop_pkt_monitor(dhd_pub_t *dhdp, int ifidx);
+extern int dhd_dbg_monitor_get_tx_pkts(dhd_pub_t *dhdp, int ifidx, void __user *user_buf,
 		uint16 req_count, uint16 *resp_count);
-extern int dhd_dbg_monitor_get_rx_pkts(dhd_pub_t *dhdp, void __user *user_buf,
+extern int dhd_dbg_monitor_get_rx_pkts(dhd_pub_t *dhdp, int ifidx, void __user *user_buf,
 		uint16 req_count, uint16 *resp_count);
-extern int dhd_dbg_detach_pkt_monitor(dhd_pub_t *dhdp);
+extern int dhd_dbg_detach_pkt_monitor(dhd_pub_t *dhdp, int ifidx);
+extern void dhd_dbg_monitor_mgmt_str(uint8 subtype, char *buf, uint32 buflen);
+extern void dhd_dbg_monitor_eapol_str(msg_eapol_t type, char *buf, uint32 buflen);
+extern void dhd_dbg_monitor_pkt(dhd_pub_t *dhdp, host_rxbuf_cmpl_t* msg, void *pkt, int ifidx);
 #endif /* DBG_PKT_MON */
 
-extern bool dhd_dbg_process_tx_status(dhd_pub_t *dhdp, void *pkt,
+extern bool dhd_dbg_process_tx_status(dhd_pub_t *dhdp, int ifidx, void *pkt,
 		uint32 pktid, uint16 status);
 
 /* os wrapper function */
@@ -928,18 +971,26 @@
 
 #ifdef DBG_PKT_MON
 extern int dhd_os_dbg_attach_pkt_monitor(dhd_pub_t *dhdp);
-extern int dhd_os_dbg_start_pkt_monitor(dhd_pub_t *dhdp);
-extern int dhd_os_dbg_monitor_tx_pkts(dhd_pub_t *dhdp, void *pkt,
+extern int dhd_os_dbg_start_pkt_monitor(dhd_pub_t *dhdp, int ifidx);
+extern int dhd_os_dbg_monitor_tx_pkts(dhd_pub_t *dhdp, int ifidx, void *pkt,
 	uint32 pktid, frame_type type, uint8 mgmt_acked, bool aml);
-extern int dhd_os_dbg_monitor_tx_status(dhd_pub_t *dhdp, void *pkt,
+extern int dhd_os_dbg_monitor_tx_status(dhd_pub_t *dhdp, int ifidx, void *pkt,
 	uint32 pktid, uint16 status);
-extern int dhd_os_dbg_monitor_rx_pkts(dhd_pub_t *dhdp, void *pkt,
+extern int dhd_os_dbg_monitor_rx_pkts(dhd_pub_t *dhdp, int ifidx, void *pkt,
 	frame_type type, bool aml);
-extern int dhd_os_dbg_stop_pkt_monitor(dhd_pub_t *dhdp);
+extern int dhd_os_dbg_stop_pkt_monitor(dhd_pub_t *dhdp, int ifidx);
+#ifdef DHD_PKT_MON_DUAL_STA
+extern int dhd_os_dbg_attach_pkt_monitor_dev(dhd_pub_t *dhdp, struct net_device *ndev);
+extern int dhd_os_dbg_monitor_get_tx_pkts(dhd_pub_t *dhdp, int ifidx,
+	void __user *user_buf, uint16 req_count, uint16 *resp_count);
+extern int dhd_os_dbg_monitor_get_rx_pkts(dhd_pub_t *dhdp, int ifidx,
+	void __user *user_buf, uint16 req_count, uint16 *resp_count);
+#else
 extern int dhd_os_dbg_monitor_get_tx_pkts(dhd_pub_t *dhdp,
 	void __user *user_buf, uint16 req_count, uint16 *resp_count);
 extern int dhd_os_dbg_monitor_get_rx_pkts(dhd_pub_t *dhdp,
 	void __user *user_buf, uint16 req_count, uint16 *resp_count);
+#endif /* DHD_PKT_MON_DUAL_STA */
 extern int dhd_os_dbg_detach_pkt_monitor(dhd_pub_t *dhdp);
 #endif /* DBG_PKT_MON */
 
diff --git a/dhd_debug_linux.c b/dhd_debug_linux.c
index a696faa..dcb8503 100644
--- a/dhd_debug_linux.c
+++ b/dhd_debug_linux.c
@@ -1,7 +1,7 @@
 /*
  * DHD debugability Linux os layer
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -457,62 +457,114 @@
 int
 dhd_os_dbg_attach_pkt_monitor(dhd_pub_t *dhdp)
 {
-	return dhd_dbg_attach_pkt_monitor(dhdp, dhd_os_dbg_monitor_tx_pkts,
-		dhd_os_dbg_monitor_tx_status, dhd_os_dbg_monitor_rx_pkts);
+	int i, ret;
+	for (i = 0; i < PKT_MON_IF_MAX; i++) {
+		ret = dhd_dbg_attach_pkt_monitor(dhdp, i, dhd_os_dbg_monitor_tx_pkts,
+			dhd_os_dbg_monitor_tx_status, dhd_os_dbg_monitor_rx_pkts);
+		if (unlikely(ret)) {
+			DHD_ERROR(("%s - failed to attach pkt mon idx:%d\n", __func__, i));
+			return ret;
+		}
+	}
+	return BCME_OK;
 }
 
 int
-dhd_os_dbg_start_pkt_monitor(dhd_pub_t *dhdp)
+dhd_os_dbg_start_pkt_monitor(dhd_pub_t *dhdp, int ifidx)
 {
-	return dhd_dbg_start_pkt_monitor(dhdp);
+	return dhd_dbg_start_pkt_monitor(dhdp, ifidx);
 }
 
 int
-dhd_os_dbg_monitor_tx_pkts(dhd_pub_t *dhdp, void *pkt, uint32 pktid,
+dhd_os_dbg_monitor_tx_pkts(dhd_pub_t *dhdp, int ifidx, void *pkt, uint32 pktid,
 	frame_type type, uint8 mgmt_acked, bool aml)
 {
-	return dhd_dbg_monitor_tx_pkts(dhdp, pkt, pktid, type, mgmt_acked,
+	return dhd_dbg_monitor_tx_pkts(dhdp, ifidx, pkt, pktid, type, mgmt_acked,
 		aml);
 }
 
 int
-dhd_os_dbg_monitor_tx_status(dhd_pub_t *dhdp, void *pkt, uint32 pktid,
+dhd_os_dbg_monitor_tx_status(dhd_pub_t *dhdp, int ifidx, void *pkt, uint32 pktid,
 	uint16 status)
 {
-	return dhd_dbg_monitor_tx_status(dhdp, pkt, pktid, status);
+	return dhd_dbg_monitor_tx_status(dhdp, ifidx, pkt, pktid, status);
 }
 
 int
-dhd_os_dbg_monitor_rx_pkts(dhd_pub_t *dhdp, void *pkt, frame_type type,
+dhd_os_dbg_monitor_rx_pkts(dhd_pub_t *dhdp, int ifidx, void *pkt, frame_type type,
 	bool aml)
 {
-	return dhd_dbg_monitor_rx_pkts(dhdp, pkt, type, aml);
+	return dhd_dbg_monitor_rx_pkts(dhdp, ifidx, pkt, type, aml);
 }
 
 int
-dhd_os_dbg_stop_pkt_monitor(dhd_pub_t *dhdp)
+dhd_os_dbg_stop_pkt_monitor(dhd_pub_t *dhdp, int ifidx)
 {
-	return dhd_dbg_stop_pkt_monitor(dhdp);
+	return dhd_dbg_stop_pkt_monitor(dhdp, ifidx);
+}
+
+#ifdef DHD_PKT_MON_DUAL_STA
+int
+dhd_os_dbg_attach_pkt_monitor_dev(dhd_pub_t *dhdp, struct net_device *ndev)
+{
+	int ifidx, ret;
+
+	ifidx = dhd_net2idx(dhdp->info, ndev);
+	if (ifidx == DHD_BAD_IF) {
+		DHD_ERROR(("%s: bad ifidx:%d\n", __FUNCTION__, ifidx));
+		return -EINVAL;
+	}
+
+	ret = dhd_dbg_attach_pkt_monitor(dhdp, ifidx, dhd_os_dbg_monitor_tx_pkts,
+		dhd_os_dbg_monitor_tx_status, dhd_os_dbg_monitor_rx_pkts);
+	if (unlikely(ret)) {
+		DHD_ERROR(("%s - failed to attach pkt mon idx:%d\n", __func__, ifidx));
+		return ret;
+	}
+	return BCME_OK;
 }
 
 int
-dhd_os_dbg_monitor_get_tx_pkts(dhd_pub_t *dhdp, void __user *user_buf,
-	uint16 req_count, uint16 *resp_count)
+dhd_os_dbg_monitor_get_tx_pkts(dhd_pub_t *dhdp, int ifidx,
+	void __user *user_buf, uint16 req_count, uint16 *resp_count)
 {
-	return dhd_dbg_monitor_get_tx_pkts(dhdp, user_buf, req_count, resp_count);
+	return dhd_dbg_monitor_get_tx_pkts(dhdp, ifidx, user_buf, req_count, resp_count);
 }
 
 int
-dhd_os_dbg_monitor_get_rx_pkts(dhd_pub_t *dhdp, void __user *user_buf,
-	uint16 req_count, uint16 *resp_count)
+dhd_os_dbg_monitor_get_rx_pkts(dhd_pub_t *dhdp, int ifidx,
+	void __user *user_buf, uint16 req_count, uint16 *resp_count)
 {
-	return dhd_dbg_monitor_get_rx_pkts(dhdp, user_buf, req_count, resp_count);
+	return dhd_dbg_monitor_get_rx_pkts(dhdp, ifidx, user_buf, req_count, resp_count);
 }
+#else
+int
+dhd_os_dbg_monitor_get_tx_pkts(dhd_pub_t *dhdp,
+	void __user *user_buf, uint16 req_count, uint16 *resp_count)
+{
+	return dhd_dbg_monitor_get_tx_pkts(dhdp, 0, user_buf, req_count, resp_count);
+}
+
+int
+dhd_os_dbg_monitor_get_rx_pkts(dhd_pub_t *dhdp,
+	void __user *user_buf, uint16 req_count, uint16 *resp_count)
+{
+	return dhd_dbg_monitor_get_rx_pkts(dhdp, 0, user_buf, req_count, resp_count);
+}
+#endif /* DHD_PKT_MON_DUAL_STA */
 
 int
 dhd_os_dbg_detach_pkt_monitor(dhd_pub_t *dhdp)
 {
-	return dhd_dbg_detach_pkt_monitor(dhdp);
+	int i, ret;
+	for (i = 0; i < PKT_MON_IF_MAX; i++) {
+		ret = dhd_dbg_detach_pkt_monitor(dhdp, i);
+		if (ret) {
+			DHD_ERROR(("%s - failed to detach pkt mon idx:%d\n", __func__, i));
+			return ret;
+		}
+	}
+	return BCME_OK;
 }
 #endif /* DBG_PKT_MON */
 
diff --git a/dhd_event_log_filter.c b/dhd_event_log_filter.c
index 2d0db6a..93ef86d 100644
--- a/dhd_event_log_filter.c
+++ b/dhd_event_log_filter.c
@@ -1,7 +1,7 @@
 /*
  * Wifi dongle status Filter and Report
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_event_log_filter.h b/dhd_event_log_filter.h
index 290b97f..a226319 100644
--- a/dhd_event_log_filter.h
+++ b/dhd_event_log_filter.h
@@ -1,7 +1,7 @@
 /*
  * Wifi dongle status Filter and Report
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_flowring.c b/dhd_flowring.c
index aeb31d3..cd711b7 100644
--- a/dhd_flowring.c
+++ b/dhd_flowring.c
@@ -4,7 +4,7 @@
  * Flow rings are transmit traffic (=propagating towards antenna) related entities
  *
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_flowring.h b/dhd_flowring.h
index 44c3d0b..37007cd 100644
--- a/dhd_flowring.h
+++ b/dhd_flowring.h
@@ -6,7 +6,7 @@
  * Provides type definitions and function prototypes used to create, delete and manage flow rings at
  * high level.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_ip.c b/dhd_ip.c
index b175a12..d536c44 100644
--- a/dhd_ip.c
+++ b/dhd_ip.c
@@ -1,7 +1,7 @@
 /*
  * IP Packet Parser Module.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_ip.h b/dhd_ip.h
index 6866896..e94ab12 100644
--- a/dhd_ip.h
+++ b/dhd_ip.h
@@ -3,7 +3,7 @@
  *
  * Provides type definitions and function prototypes used to parse ip packet.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_linux.c b/dhd_linux.c
index c257308..df645bb 100644
--- a/dhd_linux.c
+++ b/dhd_linux.c
@@ -1,7 +1,7 @@
 /*
  * Basically selected code segments from usb-cdc.c and usb-rndis.c
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -282,6 +282,10 @@
 #include <dhd_mesh_route.h>
 #endif /* defined(DHD_MESH) */
 
+#ifdef DBG_PKT_MON
+#include <802.11.h>
+#endif /* DBG_PKT_MON */
+
 #if defined(DHD_TCP_WINSIZE_ADJUST)
 static uint target_ports[MAX_TARGET_PORTS] = {20, 0, 0, 0, 0};
 static uint dhd_use_tcp_window_size_adjust = FALSE;
@@ -2509,9 +2513,6 @@
 				 */
 				dhd_enable_packet_filter(1, dhd);
 #endif /* PKT_FILTER_SUPPORT */
-#ifdef APF
-				dhd_dev_apf_enable_filter(dhd_linux_get_primary_netdev(dhd));
-#endif /* APF */
 #ifdef ARP_OFFLOAD_SUPPORT
 				if (dhd->arpoe_enable) {
 					dhd_arp_offload_enable(dhd, TRUE);
@@ -2610,9 +2611,6 @@
 				/* disable pkt filter */
 				dhd_enable_packet_filter(0, dhd);
 #endif /* PKT_FILTER_SUPPORT */
-#ifdef APF
-				dhd_dev_apf_disable_filter(dhd_linux_get_primary_netdev(dhd));
-#endif /* APF */
 #ifdef PASS_ALL_MCAST_PKTS
 				allmulti = 1;
 				for (i = 0; i < DHD_MAX_IFS; i++) {
@@ -5295,14 +5293,20 @@
 }
 
 #if defined(DBG_PKT_MON) && defined(PCIE_FULL_DONGLE)
+#define PKT_MON_TYPESTR_MAX 30
 void
-dhd_80211_mon_pkt(dhd_pub_t *dhdp, host_rxbuf_cmpl_t* msg, void *pkt, int ifidx)
+dhd_dbg_monitor_pkt(dhd_pub_t *dhdp, host_rxbuf_cmpl_t* msg, void *pkt, int ifidx)
 {
 	/* Distinguish rx/tx frame */
 	wl_aml_header_v1_t hdr;
 	bool wpa_sup;
 	struct sk_buff *skb = pkt;
 	frame_type type;
+	struct dot11_management_header *d11hdr;
+	uint8 subtype;
+	char type_str[PKT_MON_TYPESTR_MAX] = {0};
+	msg_eapol_t eapol_type;
+	bool ack, direction;
 #ifdef DHD_PKT_LOGGING
 	struct ether_header *eh;
 	uint32 pktid;
@@ -5314,8 +5318,25 @@
 	PKTPULL(dhdp->osh, skb, sizeof(hdr));
 	wpa_sup = !!(hdr.flags & WL_AML_F_EAPOL);
 	type = wpa_sup ? FRAME_TYPE_ETHERNET_II : FRAME_TYPE_80211_MGMT;
+	if (type == FRAME_TYPE_80211_MGMT) {
+		d11hdr = (struct dot11_management_header *)PKTDATA(dhdp->osh, skb);
+		subtype = FC_SUBTYPE(d11hdr->fc);
+		dhd_dbg_monitor_mgmt_str(subtype, type_str, sizeof(type_str));
+	} else if (type == FRAME_TYPE_ETHERNET_II) {
+		eapol_type = dhd_is_4way_msg(PKTDATA(dhdp->osh, skb));
+		dhd_dbg_monitor_eapol_str(eapol_type, type_str, sizeof(type_str));
+	}
+	ack = !!(hdr.flags & WL_AML_F_ACKED);
+	direction = !!(hdr.flags & WL_AML_F_DIRECTION);
 
-	if (hdr.flags & WL_AML_F_DIRECTION) {
+	if (DHD_PKT_MON_DUMP_ON()) {
+		DHD_PKT_MON(("%s: fw driven pkt [%s] %s %s status:%d ifidx:%d length:%d\n",
+			__FUNCTION__, direction ? "TXS" : "RX",
+			wpa_sup ? "EAPOL" : "80211", type_str, ack,
+			ifidx, PKTLEN(dhdp->osh, skb)));
+	}
+
+	if (direction) {
 		bool ack = !!(hdr.flags & WL_AML_F_ACKED);
 #ifdef DHD_PKT_LOGGING
 		/* Send Tx-ed 4HS packet in dongle to packet logging buffer */
@@ -5328,9 +5349,13 @@
 #endif /* DHD_PKT_LOGGING */
 
 		/* Send Tx-ed mgmt frame and 4HS packet in dongle to upper layer */
+#ifdef DHD_PKT_MON_DUAL_STA
+		DHD_DBG_PKT_MON_TX(dhdp, ifidx, skb, 0, type, (uint8)ack, TRUE);
+#else
 		DHD_DBG_PKT_MON_TX(dhdp, skb, 0, type, (uint8)ack, TRUE);
+#endif /* DHD_PKT_MON_DUAL_STA */
 
-		/* skb can be null here. do null check if skb is used */
+		/* skb can be null here. do not refer to skb */
 	} else {
 #ifdef DHD_PKT_LOGGING
 		/* Send Rx-ed 4HS packet in dongle to packet logging buffer */
@@ -5342,9 +5367,13 @@
 #endif /* DHD_PKT_LOGGING */
 
 		/* Send Rx-ed mgmt frame and 4HS packet in dongle to upper layer */
+#ifdef DHD_PKT_MON_DUAL_STA
+		DHD_DBG_PKT_MON_RX(dhdp, ifidx, (struct sk_buff *)skb, type, TRUE);
+#else
 		DHD_DBG_PKT_MON_RX(dhdp, (struct sk_buff *)skb, type, TRUE);
+#endif /* DHD_PKT_MON_DUAL_STA */
 
-		/* skb can be null here. do null check if skb is used */
+		/* skb can be null here. do not refer to skb */
 	}
 }
 #endif /* DBG_PKT_MON && PCIE_FULL_DONGLE */
@@ -6897,6 +6926,9 @@
 		dhdp->collect_sdtc = TRUE;
 #endif /* DHD_SDTC_ETB_DUMP */
 		dhdp->memdump_type = DUMP_TYPE_DONGLE_INIT_FAILURE;
+#ifdef DHD_COREDUMP
+		dhd_get_ewp_init_state(dhdp->bus, &dhdp->ewp_init_state);
+#endif /* DHD_COREDUMP */
 		dhd_bus_mem_dump(dhdp);
 	} else {
 		DHD_PRINT(("%s:Not collecting memdump, memdump_enabled=%d, busstate=%d\n",
@@ -17864,16 +17896,6 @@
 
 	DHD_APF_LOCK(ndev);
 
-	/* delete, if filter already exists */
-	if (dhdp->apf_set) {
-		ret = _dhd_apf_delete_filter(ndev, PKT_FILTER_APF_ID);
-		if (unlikely(ret)) {
-			DHD_ERROR(("%s: Failed to delete APF filter\n", __FUNCTION__));
-			goto exit;
-		}
-		dhdp->apf_set = FALSE;
-	}
-
 	ret = _dhd_apf_add_filter(ndev, PKT_FILTER_APF_ID, program, program_len);
 	if (ret) {
 		DHD_ERROR(("%s: Failed to add APF filter\n", __FUNCTION__));
@@ -20245,6 +20267,10 @@
 	char lr_fn[DHD_FUNC_STR_LEN] = "\0";
 	trap_t *tr;
 	bool collect_coredump = FALSE;
+	char trap_code[DHD_TRAP_CODE_LEN] = {0};
+	char trap_subcode[DHD_TRAP_CODE_LEN] = {0};
+	int written_len;
+	uint8 ewp_init_state;
 #endif /* DHD_COREDUMP */
 	uint32 memdump_type;
 	bool set_linkdwn_cto = FALSE;
@@ -20264,6 +20290,9 @@
 
 	/* keep it locally to avoid overwriting in other contexts */
 	memdump_type = dhdp->memdump_type;
+#ifdef DHD_COREDUMP
+	ewp_init_state = dhdp->ewp_init_state;
+#endif /* DHD_COREDUMP */
 
 	DHD_GENERAL_LOCK(dhdp, flags);
 	if (DHD_BUS_CHECK_DOWN_OR_DOWN_IN_PROGRESS(dhdp)) {
@@ -20420,13 +20449,27 @@
 	bzero(dhdp->memdump_str, DHD_MEMDUMP_LONGSTR_LEN);
 	dhd_convert_memdump_type_to_str(memdump_type, dhdp->memdump_str,
 		DHD_MEMDUMP_LONGSTR_LEN, dhdp->debug_dump_subcmd);
+	written_len = strlen(dhdp->memdump_str);
 	if (memdump_type == DUMP_TYPE_DONGLE_TRAP &&
 		dhdp->dongle_trap_occured == TRUE) {
+
+		if (dhdp->extended_trap_data) {
+			dhdpcie_get_etd_trapcode_str(dhdp, trap_code, trap_subcode,
+				DHD_TRAP_CODE_LEN);
+			snprintf(&dhdp->memdump_str[written_len],
+					DHD_MEMDUMP_LONGSTR_LEN - written_len,
+					"_%s_%s", trap_code, trap_subcode);
+		}
+
 		tr = &dhdp->last_trap_info;
 		dhd_lookup_map(dhdp->osh, map_path,
 			ltoh32(tr->epc), pc_fn, ltoh32(tr->r14), lr_fn);
-		sprintf(&dhdp->memdump_str[strlen(dhdp->memdump_str)], "_%.79s_%.79s",
-				pc_fn, lr_fn);
+		written_len = strlen(dhdp->memdump_str);
+		snprintf(&dhdp->memdump_str[written_len], DHD_MEMDUMP_LONGSTR_LEN - written_len,
+			 "_%.79s_%.79s", pc_fn, lr_fn);
+	} else if (memdump_type == DUMP_TYPE_DONGLE_INIT_FAILURE) {
+		snprintf(&dhdp->memdump_str[written_len], DHD_MEMDUMP_LONGSTR_LEN - written_len,
+			"_0x%x", ewp_init_state);
 	}
 	DHD_PRINT(("%s: dump reason: %s\n", __FUNCTION__, dhdp->memdump_str));
 
diff --git a/dhd_linux.h b/dhd_linux.h
index 4ec7e5f..a3398ed 100644
--- a/dhd_linux.h
+++ b/dhd_linux.h
@@ -1,7 +1,7 @@
 /*
  * DHD Linux header file (dhd_linux exports for cfg80211 and other components)
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -73,6 +73,7 @@
 #define ALL_ADDR_VAL (PC_FOUND_BIT | LR_FOUND_BIT)
 #define READ_NUM_BYTES 1000
 #define DHD_FUNC_STR_LEN 80
+#define DHD_TRAP_CODE_LEN 12u
 
 #define DHD_COREDUMP_MAGIC 0xDDCEDACF
 #define TLV_TYPE_LENGTH_SIZE	(8u)
diff --git a/dhd_linux_exportfs.c b/dhd_linux_exportfs.c
index a9ef069..48f3cab 100644
--- a/dhd_linux_exportfs.c
+++ b/dhd_linux_exportfs.c
@@ -2,7 +2,7 @@
  * Broadcom Dongle Host Driver (DHD), Linux-specific network interface
  * Basically selected code segments from usb-cdc.c and usb-rndis.c
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_linux_lb.c b/dhd_linux_lb.c
index f234c8a..ee15f62 100644
--- a/dhd_linux_lb.c
+++ b/dhd_linux_lb.c
@@ -2,7 +2,7 @@
  * Broadcom Dongle Host Driver (DHD), Linux-specific network interface
  * Basically selected code segments from usb-cdc.c and usb-rndis.c
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_linux_pktdump.c b/dhd_linux_pktdump.c
index aab7df1..f8a5aa3 100644
--- a/dhd_linux_pktdump.c
+++ b/dhd_linux_pktdump.c
@@ -1,7 +1,7 @@
 /*
  * Packet dump helper functions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_linux_pktdump.h b/dhd_linux_pktdump.h
index 52bd41b..c9aae5a 100644
--- a/dhd_linux_pktdump.h
+++ b/dhd_linux_pktdump.h
@@ -1,7 +1,7 @@
 /*
  * Header file for the Packet dump helper functions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_linux_platdev.c b/dhd_linux_platdev.c
index 41c92d5..f9e7fdd 100644
--- a/dhd_linux_platdev.c
+++ b/dhd_linux_platdev.c
@@ -1,7 +1,7 @@
 /*
  * Linux platform device for DHD WLAN adapter
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_linux_priv.h b/dhd_linux_priv.h
index 3514d57..d224768 100644
--- a/dhd_linux_priv.h
+++ b/dhd_linux_priv.h
@@ -1,7 +1,7 @@
 /*
  * DHD Linux header file - contains private structure definition of the Linux specific layer
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_linux_rx.c b/dhd_linux_rx.c
index 4298628..f493458 100644
--- a/dhd_linux_rx.c
+++ b/dhd_linux_rx.c
@@ -2,7 +2,7 @@
  * Broadcom Dongle Host Driver (DHD),
  * Linux-specific network interface for receive(rx) path
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -773,7 +773,12 @@
 		skb->len = len;
 
 		/* TODO: re-look into dropped packets. */
+#ifdef DHD_PKT_MON_DUAL_STA
+		DHD_DBG_PKT_MON_RX(dhdp, ifidx, skb, FRAME_TYPE_ETHERNET_II, FALSE);
+#else
 		DHD_DBG_PKT_MON_RX(dhdp, skb, FRAME_TYPE_ETHERNET_II, FALSE);
+#endif /* DHD_PKT_MON_DUAL_STA */
+
 		if (ntoh16(skb->protocol) == ETHER_TYPE_BRCM) {
 			DHD_LOG_ROUTE_EVENTS(dhdp->logger, skb, skb->len);
 		}
diff --git a/dhd_linux_sched.c b/dhd_linux_sched.c
index d7d116b..5fe1b92 100644
--- a/dhd_linux_sched.c
+++ b/dhd_linux_sched.c
@@ -1,7 +1,7 @@
 /*
  * Expose some of the kernel scheduler routines
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_linux_sock_qos.h b/dhd_linux_sock_qos.h
index 8abb171..7fd6aa8 100644
--- a/dhd_linux_sock_qos.h
+++ b/dhd_linux_sock_qos.h
@@ -4,7 +4,7 @@
  * Provides type definitions and function prototypes to call into
  * DHD's QOS on Socket Flow module.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_linux_tx.c b/dhd_linux_tx.c
index d668fba..a052456 100644
--- a/dhd_linux_tx.c
+++ b/dhd_linux_tx.c
@@ -2,7 +2,7 @@
  * Broadcom Dongle Host Driver (DHD),
  * Linux-specific network interface for transmit(tx) path
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_linux_tx.h b/dhd_linux_tx.h
index 53ac66d..e243e8a 100644
--- a/dhd_linux_tx.h
+++ b/dhd_linux_tx.h
@@ -2,7 +2,7 @@
  * Broadcom Dongle Host Driver (DHD),
  * Linux-specific network interface for transmit(tx) path
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_linux_wq.c b/dhd_linux_wq.c
index aad3caa..699159e 100644
--- a/dhd_linux_wq.c
+++ b/dhd_linux_wq.c
@@ -2,7 +2,7 @@
  * Broadcom Dongle Host Driver (DHD), Generic work queue framework
  * Generic interface to handle dhd deferred work events
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_linux_wq.h b/dhd_linux_wq.h
index 8794e48..cceba83 100644
--- a/dhd_linux_wq.h
+++ b/dhd_linux_wq.h
@@ -2,7 +2,7 @@
  * Broadcom Dongle Host Driver (DHD), Generic work queue framework
  * Generic interface to handle dhd deferred work events
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_log_dump.c b/dhd_log_dump.c
index eea3f27..78f619c 100644
--- a/dhd_log_dump.c
+++ b/dhd_log_dump.c
@@ -1,7 +1,7 @@
 /*
  * log_dump - debugability support for dumping logs to file
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_log_dump.h b/dhd_log_dump.h
index 467beba..23bd398 100644
--- a/dhd_log_dump.h
+++ b/dhd_log_dump.h
@@ -1,7 +1,7 @@
 /*
  * log_dump - debugability support for dumping logs to file - header file
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_logger.h b/dhd_logger.h
index 46ba2a7..844d332 100644
--- a/dhd_logger.h
+++ b/dhd_logger.h
@@ -8,7 +8,7 @@
  *
  * The interface is OS independent/common.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_mschdbg.c b/dhd_mschdbg.c
index 8d23bd7..062b3f3 100644
--- a/dhd_mschdbg.c
+++ b/dhd_mschdbg.c
@@ -1,7 +1,7 @@
 /*
  * DHD debugability support
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_mschdbg.h b/dhd_mschdbg.h
index 4f1c279..54f1561 100644
--- a/dhd_mschdbg.h
+++ b/dhd_mschdbg.h
@@ -1,7 +1,7 @@
 /*
  * DHD debugability header file
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_msgbuf.c b/dhd_msgbuf.c
index 41b69d9..6d42469 100644
--- a/dhd_msgbuf.c
+++ b/dhd_msgbuf.c
@@ -3,7 +3,7 @@
  * Provides type definitions and function prototypes used to link the
  * DHD OS, bus, and protocol modules.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -1124,9 +1124,6 @@
 #if defined(WL_MONITOR)
 extern bool dhd_monitor_enabled(dhd_pub_t *dhd, int ifidx);
 extern void dhd_rx_mon_pkt(dhd_pub_t *dhdp, host_rxbuf_cmpl_t* msg, void *pkt, int ifidx);
-#if defined(DBG_PKT_MON)
-extern void dhd_80211_mon_pkt(dhd_pub_t *dhdp, host_rxbuf_cmpl_t* msg, void *pkt, int ifidx);
-#endif /* DBG_PKT_MON */
 #endif /* WL_MONITOR */
 
 /* Configure a soft doorbell per D2H ring */
@@ -8332,7 +8329,8 @@
 				} else {
 					if (msg->flags & BCMPCIE_PKT_FLAGS_FRAME_802_11) {
 						DHD_TRACE(("Received 802.11 packet for PKT MON\n"));
-						dhd_80211_mon_pkt(dhd, msg, pkt, ifidx);
+						dhd_dbg_monitor_pkt(dhd, msg, pkt,
+							msg->cmn_hdr.if_id);
 						continue;
 					}
 #endif /* DBG_PKT_MON */
@@ -9277,8 +9275,9 @@
 	dhd->dma_stats.txdata--;
 	dhd->dma_stats.txdata_sz -= len;
 #endif /* DMAMAP_STATS */
-	pkt_fate = dhd_dbg_process_tx_status(dhd, pkt, pktid,
-		ltoh16(txstatus->compl_aggr_hdr.status) & WLFC_CTL_PKTFLAG_MASK);
+	pkt_fate = dhd_dbg_process_tx_status(dhd, ltoh32(txstatus->compl_aggr_hdr.if_id),
+			pkt, pktid,
+			ltoh16(txstatus->compl_aggr_hdr.status) & WLFC_CTL_PKTFLAG_MASK);
 #ifdef DHD_PKT_LOGGING
 	if (dhd->d11_tx_status) {
 		uint16 status = ltoh16(txstatus->compl_aggr_hdr.status) &
@@ -9527,7 +9526,7 @@
 	dhd->dma_stats.txdata--;
 	dhd->dma_stats.txdata_sz -= len;
 #endif /* DMAMAP_STATS */
-	pkt_fate = dhd_dbg_process_tx_status(dhd, pkt, pktid,
+	pkt_fate = dhd_dbg_process_tx_status(dhd, flow_info->ifindex, pkt, pktid,
 		ltoh16(txstatus->compl_hdr.status) & WLFC_CTL_PKTFLAG_MASK);
 #ifdef DHD_PKT_LOGGING
 	if (dhd->d11_tx_status) {
@@ -10082,7 +10081,11 @@
 	pktlen  = PKTLEN(dhd->osh, PKTBUF);
 
 	/* TODO: re-look into dropped packets */
+#ifdef DHD_PKT_MON_DUAL_STA
+	DHD_DBG_PKT_MON_TX(dhd, ifidx, PKTBUF, pktid, FRAME_TYPE_ETHERNET_II, 0, FALSE);
+#else
 	DHD_DBG_PKT_MON_TX(dhd, PKTBUF, pktid, FRAME_TYPE_ETHERNET_II, 0, FALSE);
+#endif /* DHD_PKT_MON_DUAL_STA */
 
 	dhd_handle_pktdata(dhd, ifidx, PKTBUF, pktdata, pktid,
 			pktlen, NULL, &dhd_udr,
diff --git a/dhd_pcie.c b/dhd_pcie.c
index 7821b92..3f1c98c 100644
--- a/dhd_pcie.c
+++ b/dhd_pcie.c
@@ -1,7 +1,7 @@
 /*
  * DHD Bus Module for PCIE
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -17357,6 +17357,51 @@
 }
 #endif /* DHD_SSSR_DUMP */
 
+#ifdef DHD_COREDUMP
+void
+dhd_get_ewp_init_state(dhd_bus_t *bus, uint8 *init_state)
+{
+	int ret = BCME_OK;
+	pciedev_shared_t *sh;
+	ewp_info_t ewp_info;
+
+	/* Initialize state to 0xff */
+	*init_state = -1;
+
+	if (!bus) {
+		DHD_ERROR(("%s: bus null\n", __FUNCTION__));
+		return;
+	}
+
+	sh = bus->pcie_sh;
+	if (!sh) {
+		DHD_ERROR(("%s: sh null\n", __FUNCTION__));
+		return;
+	}
+
+	/* check sanity of ewp_info_addr */
+	if (IS_HWADDR_INVALID(sh->ewp_info_addr)) {
+		DHD_ERROR(("%s: bad ewp_info_addr(%x) \n", __FUNCTION__,
+			sh->ewp_info_addr));
+		return;
+	}
+
+	(void)memset_s(&ewp_info, sizeof(ewp_info), 0, sizeof(ewp_info));
+
+	/* read the ewp_info_t structure */
+	ret = dhdpcie_bus_membytes(bus, FALSE, DHD_PCIE_MEM_BAR1, (ulong)sh->ewp_info_addr,
+		(uint8 *)&ewp_info, sizeof(ewp_info));
+	if (ret < 0) {
+		DHD_ERROR(("%s: Error reading ewp_info structure from dongle \n",
+			__FUNCTION__));
+		return;
+	}
+
+	*init_state = ewp_info.init_state;
+	return;
+}
+#endif /* DHD_COREDUMP */
+
 #if defined(__linux__)
 /*
  * Add any quirks post bus_init here
@@ -19369,6 +19414,59 @@
 	return BCME_OK;
 }
 
+#ifdef DHD_COREDUMP
+void
+dhdpcie_get_etd_trapcode_str(dhd_pub_t *dhdp, char *trap_code, char *trap_subcode, int buflen)
+{
+	uint32 *ext_data;
+	hnd_ext_trap_hdr_t *hdr;
+	const bcm_tlv_t *tlv;
+
+	ext_data = dhdp->extended_trap_data;
+
+	/* Initialize code string to 0x0 */
+	snprintf(trap_code, buflen, "0x%x", TAG_TRAP_NONE);
+	snprintf(trap_subcode, buflen, "0x%x", 0);
+
+	/* return if there is no extended trap data */
+	if (!ext_data || !(dhdp->dongle_trap_data & D2H_DEV_EXT_TRAP_DATA)) {
+		DHD_ERROR(("%s: Not case for filling trap code (0x%x)\n",
+			__FUNCTION__, dhdp->dongle_trap_data));
+		return;
+	}
+
+	/* First word is original trap_data */
+	ext_data++;
+
+	/* Followed by the extended trap data header */
+	hdr = (hnd_ext_trap_hdr_t *)ext_data;
+
+	/* length sanity check */
+	if (hdr->len == 0 || (int16)hdr->len == -1) {
+		DHD_ERROR(("%s: invalid len:%u\n", __FUNCTION__, hdr->len));
+		return;
+	}
+
+	/* Extract TAG_TRAP_CODE */
+	tlv = bcm_parse_tlvs(hdr->data, hdr->len, TAG_TRAP_CODE);
+	if (tlv) {
+		snprintf(trap_code, buflen, "0x%x", *(uint32 *)tlv->data);
+		DHD_PRINT(("%s: ETD TRAP_CODE:0x%x len:%d\n",
+			__FUNCTION__, *(uint32 *)tlv->data, tlv->len));
+	}
+
+	/* Extract TAG_TRAP_SUBCODE */
+	tlv = bcm_parse_tlvs(hdr->data, hdr->len, TAG_TRAP_SUBCODE);
+	if (tlv) {
+		snprintf(trap_subcode, buflen, "0x%x", *(uint32 *)tlv->data);
+		DHD_PRINT(("%s: ETD TRAP_SUBCODE:0x%x len:%d\n",
+			__FUNCTION__, *(uint32 *)tlv->data, tlv->len));
+	}
+
+	return;
+}
+#endif /* DHD_COREDUMP */
+
 #if defined(BCMPCIE) && defined(EWP_ETD_PRSRV_LOGS)
 void
 dhdpcie_get_etd_preserve_logs(dhd_pub_t *dhd,
diff --git a/dhd_pcie.h b/dhd_pcie.h
index 37824a4..172a9c5 100644
--- a/dhd_pcie.h
+++ b/dhd_pcie.h
@@ -1,7 +1,7 @@
 /*
  * Linux DHD Bus Module for PCIE
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_pcie_linux.c b/dhd_pcie_linux.c
index 5a625ef..9e9900e 100644
--- a/dhd_pcie_linux.c
+++ b/dhd_pcie_linux.c
@@ -1,7 +1,7 @@
 /*
  * Linux DHD Bus Module for PCIE
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_pktlog.c b/dhd_pktlog.c
index 688df59..22b4f4d 100644
--- a/dhd_pktlog.c
+++ b/dhd_pktlog.c
@@ -1,7 +1,7 @@
 /*
  * DHD debugability packet logging support
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_pktlog.h b/dhd_pktlog.h
index 2155693..c6a4299 100644
--- a/dhd_pktlog.h
+++ b/dhd_pktlog.h
@@ -1,7 +1,7 @@
 /*
  * DHD debugability packet logging header file
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_plat.h b/dhd_plat.h
index 0c42811..0e4465b 100644
--- a/dhd_plat.h
+++ b/dhd_plat.h
@@ -1,7 +1,7 @@
 /*
  * DHD Linux platform header file
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_pno.c b/dhd_pno.c
index 7c09d06..068867b 100644
--- a/dhd_pno.c
+++ b/dhd_pno.c
@@ -2,7 +2,7 @@
  * Broadcom Dongle Host Driver (DHD)
  * Prefered Network Offload and Wi-Fi Location Service(WLS) code.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_pno.h b/dhd_pno.h
index 464e14d..693d468 100644
--- a/dhd_pno.h
+++ b/dhd_pno.h
@@ -2,7 +2,7 @@
  * Header file of Broadcom Dongle Host Driver (DHD)
  * Prefered Network Offload code and Wi-Fi Location Service(WLS) code.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_proto.h b/dhd_proto.h
index 99786af..5a195ec 100644
--- a/dhd_proto.h
+++ b/dhd_proto.h
@@ -4,7 +4,7 @@
  * Provides type definitions and function prototypes used to link the
  * DHD OS, bus, and protocol modules.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_rtt.c b/dhd_rtt.c
index d5cad4d..b93d657 100644
--- a/dhd_rtt.c
+++ b/dhd_rtt.c
@@ -1,7 +1,7 @@
 /*
  * Broadcom Dongle Host Driver (DHD), RTT
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_rtt.h b/dhd_rtt.h
index fce6522..79bdfe6 100644
--- a/dhd_rtt.h
+++ b/dhd_rtt.h
@@ -1,7 +1,7 @@
 /*
  * Broadcom Dongle Host Driver (DHD), RTT
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_sdio.c b/dhd_sdio.c
index 54c68d4..5ca4af3 100644
--- a/dhd_sdio.c
+++ b/dhd_sdio.c
@@ -1,7 +1,7 @@
 /*
  * DHD Bus Module for SDIO
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_statlog.c b/dhd_statlog.c
index 7beb7ad..e802e5c 100644
--- a/dhd_statlog.c
+++ b/dhd_statlog.c
@@ -1,7 +1,7 @@
 /*
  * DHD debugability: Status Information Logging support
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_statlog.h b/dhd_statlog.h
index c69b609..89c1d38 100644
--- a/dhd_statlog.h
+++ b/dhd_statlog.h
@@ -1,7 +1,7 @@
 /*
  * DHD debugability: Header file for the Status Information Logging
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_wlfc.c b/dhd_wlfc.c
index 8ae138a..658bb47 100644
--- a/dhd_wlfc.c
+++ b/dhd_wlfc.c
@@ -1,7 +1,7 @@
 /*
  * DHD PROP_TXSTATUS Module.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/dhd_wlfc.h b/dhd_wlfc.h
index 994510c..e523dca 100644
--- a/dhd_wlfc.h
+++ b/dhd_wlfc.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/frag.c b/frag.c
index 8a4991e..a41a1fd 100644
--- a/frag.c
+++ b/frag.c
@@ -2,7 +2,7 @@
  * IE/TLV fragmentation/defragmentation support for
  * Broadcom 802.11bang Networking Device Driver
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/fwpkg_utils.c b/fwpkg_utils.c
index 700367b..e438e0e 100644
--- a/fwpkg_utils.c
+++ b/fwpkg_utils.c
@@ -1,7 +1,7 @@
 /*
  * Firmware package functionality
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/hal_nci_cmn.c b/hal_nci_cmn.c
index 09fface..eeb58cb 100644
--- a/hal_nci_cmn.c
+++ b/hal_nci_cmn.c
@@ -2,7 +2,7 @@
  * Shared code between the legacy nci implementation which depended on the EROM and the
  * implementation which depends on vlsi_data.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/hnd_pktpool.c b/hnd_pktpool.c
index 042a882..edcaac3 100644
--- a/hnd_pktpool.c
+++ b/hnd_pktpool.c
@@ -1,7 +1,7 @@
 /*
  * HND generic packet pool operation primitives
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/hnd_pktq.c b/hnd_pktq.c
index 8a959b1..86f41a9 100644
--- a/hnd_pktq.c
+++ b/hnd_pktq.c
@@ -1,7 +1,7 @@
 /*
  * HND generic pktq operation primitives
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/hndpmu_dhd.c b/hndpmu_dhd.c
index 479e30f..925323c 100644
--- a/hndpmu_dhd.c
+++ b/hndpmu_dhd.c
@@ -1,7 +1,7 @@
 /*
  * Misc utility routines for DHD's accessing PMU core.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/hndpmu_priv.h b/hndpmu_priv.h
index 2e0f54a..023dff8 100644
--- a/hndpmu_priv.h
+++ b/hndpmu_priv.h
@@ -1,7 +1,7 @@
 /*
  * PMU support interface private to hndpmu.c and hndpmu_dhd.c.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11.h b/include/802.11.h
index 6dffe86..b45586c 100644
--- a/include/802.11.h
+++ b/include/802.11.h
@@ -7,7 +7,7 @@
  * WFA related work should be placed in 802.11wfa.h.
  * Broadcom specific work should be placed in 802.11brcm.h.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11ac.h b/include/802.11ac.h
index 566aea2..4cea8f1 100644
--- a/include/802.11ac.h
+++ b/include/802.11ac.h
@@ -5,7 +5,7 @@
  * VHT - Very High Throughput
  * OPER_MODE - Operating Mode
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11ah.h b/include/802.11ah.h
index b8f6dfe..9a066a5 100644
--- a/include/802.11ah.h
+++ b/include/802.11ah.h
@@ -2,7 +2,7 @@
  * Basic types and constants relating to 802.11ah standard.
  * This is a portion of 802.11ah definition. The rest are in 802.11.h.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11ax.h b/include/802.11ax.h
index 1fe2428..125c8cf 100644
--- a/include/802.11ax.h
+++ b/include/802.11ax.h
@@ -2,7 +2,7 @@
  * Basic types and constants relating to 802.11ax/HE STA
  * This is a portion of 802.11ax definition. The rest are in 802.11.h.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11az.h b/include/802.11az.h
index 658dd67..b40af68 100644
--- a/include/802.11az.h
+++ b/include/802.11az.h
@@ -6,7 +6,7 @@
  * FTM - Fine Timing Measuremant
  * PASN - Preassociation security negotiation
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11brcm.h b/include/802.11brcm.h
index 35e0fd9..3471d06 100644
--- a/include/802.11brcm.h
+++ b/include/802.11brcm.h
@@ -1,7 +1,7 @@
 /*
  * Broadcom proprietary types and constants relating to 802.11
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11cust.h b/include/802.11cust.h
index 943136b..6fe5041 100644
--- a/include/802.11cust.h
+++ b/include/802.11cust.h
@@ -1,7 +1,7 @@
 /*
  * Customer specific types and constants relating to 802.11
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11e.h b/include/802.11e.h
index be4b693..a0cb628 100644
--- a/include/802.11e.h
+++ b/include/802.11e.h
@@ -1,7 +1,7 @@
 /*
  * 802.11e protocol header file
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11k.h b/include/802.11k.h
index 35d5f21..ca598da 100644
--- a/include/802.11k.h
+++ b/include/802.11k.h
@@ -8,7 +8,7 @@
  * RM - same as RRM?
  * NGBR - Neighbor Report
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11n.h b/include/802.11n.h
index d058d3b..042f428 100644
--- a/include/802.11n.h
+++ b/include/802.11n.h
@@ -6,7 +6,7 @@
  * OBSS - Overlapping BSS
  * EXTCH/EXT_CH - Extension Channel
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11owe.h b/include/802.11owe.h
index fcd1ac6..2528d70 100644
--- a/include/802.11owe.h
+++ b/include/802.11owe.h
@@ -2,7 +2,7 @@
  * Fundamental types and constants relating to OWE (RFC 8110 and WFA spec) -
  * "Opportunistic Wireless Encryption"
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11s.h b/include/802.11s.h
index b3d2b3d..0e8bab6 100644
--- a/include/802.11s.h
+++ b/include/802.11s.h
@@ -2,7 +2,7 @@
  * Fundamental types and constants relating to 802.11s -
  * "Mesh Networking"
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11u.h b/include/802.11u.h
index c0b8c0b..2ce750f 100644
--- a/include/802.11u.h
+++ b/include/802.11u.h
@@ -4,7 +4,7 @@
  *
  * IW - InterWorking
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11v.h b/include/802.11v.h
index 7961b70..250ba4a 100644
--- a/include/802.11v.h
+++ b/include/802.11v.h
@@ -8,7 +8,7 @@
  * BSSTRANS - BSS Management Transition
  * TIMBC - TIM Broadcast
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11w.h b/include/802.11w.h
index e003f1a..d975bca 100644
--- a/include/802.11w.h
+++ b/include/802.11w.h
@@ -2,7 +2,7 @@
  * Fundamental types and constants relating to 802.11w -
  * "Protected Management Frames"
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11wapi.h b/include/802.11wapi.h
index de6e923..f98e05f 100644
--- a/include/802.11wapi.h
+++ b/include/802.11wapi.h
@@ -1,7 +1,7 @@
 /*
  * WAPI specific types and constants relating to 802.11
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11wfa.h b/include/802.11wfa.h
index 11526c8..caa8aef 100644
--- a/include/802.11wfa.h
+++ b/include/802.11wfa.h
@@ -3,7 +3,7 @@
  * Also, see WFA QoS Management spec:
  * https://drive.google.com/file/d/1dj4D92kUhLKrImWkOJZ0__Meg9fZm9fL/view?usp=share_link
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.11z.h b/include/802.11z.h
index 9e31acc..f433116 100644
--- a/include/802.11z.h
+++ b/include/802.11z.h
@@ -4,7 +4,7 @@
  *
  * TDLS - Tunneled DLS
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.1d.h b/include/802.1d.h
index ff81a73..c66548c 100644
--- a/include/802.1d.h
+++ b/include/802.1d.h
@@ -1,7 +1,7 @@
 /*
  * Fundamental types and constants relating to 802.1D
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/802.3.h b/include/802.3.h
index bef4682..280e7c2 100644
--- a/include/802.3.h
+++ b/include/802.3.h
@@ -1,7 +1,7 @@
 /*
  * Fundamental constants relating to 802.3
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/aidmp.h b/include/aidmp.h
index 97da3d9..5683dca 100644
--- a/include/aidmp.h
+++ b/include/aidmp.h
@@ -1,7 +1,7 @@
 /*
  * Broadcom AMBA Interconnect definitions.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcm_l2_filter.h b/include/bcm_l2_filter.h
index 32f0756..4ce44f3 100644
--- a/include/bcm_l2_filter.h
+++ b/include/bcm_l2_filter.h
@@ -1,7 +1,7 @@
 /*
  * L2 Filter handling functions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcm_mpool_pub.h b/include/bcm_mpool_pub.h
index 3fc0a1a..590afbc 100644
--- a/include/bcm_mpool_pub.h
+++ b/include/bcm_mpool_pub.h
@@ -35,7 +35,7 @@
  *              and instrumentation on top of the heap, without modifying the heap
  *              allocation implementation.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcm_ring.h b/include/bcm_ring.h
index 96ddd51..877d0c2 100644
--- a/include/bcm_ring.h
+++ b/include/bcm_ring.h
@@ -6,7 +6,7 @@
  *
  * NOTE: A ring of size N, may only hold N-1 elements.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcm_wifishark.h b/include/bcm_wifishark.h
index 05efe60..07b7f43 100644
--- a/include/bcm_wifishark.h
+++ b/include/bcm_wifishark.h
@@ -1,7 +1,7 @@
 /*
  * Common header file for DHD logger and bcmwifi_dissector component.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmarp.h b/include/bcmarp.h
index 8c73aa2..408e2d8 100644
--- a/include/bcmarp.h
+++ b/include/bcmarp.h
@@ -1,7 +1,7 @@
 /*
  * Fundamental constants relating to ARP Protocol
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmbloom.h b/include/bcmbloom.h
index 216eee8..a04e497 100644
--- a/include/bcmbloom.h
+++ b/include/bcmbloom.h
@@ -1,7 +1,7 @@
 /*
  * Bloom filter support
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmcapext.h b/include/bcmcapext.h
index 52a6be5..cf7796e 100644
--- a/include/bcmcapext.h
+++ b/include/bcmcapext.h
@@ -1,7 +1,7 @@
 /*
  * bcm capext header file
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmcdc.h b/include/bcmcdc.h
index ed27688..e21c2ce 100644
--- a/include/bcmcdc.h
+++ b/include/bcmcdc.h
@@ -4,7 +4,7 @@
  *
  * Definitions subject to change without notice.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmdefs.h b/include/bcmdefs.h
index 1d26469..4fd115b 100644
--- a/include/bcmdefs.h
+++ b/include/bcmdefs.h
@@ -1,7 +1,7 @@
 /*
  * Misc system wide definitions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmdevs.h b/include/bcmdevs.h
index 1847ddd..b00a1a1 100644
--- a/include/bcmdevs.h
+++ b/include/bcmdevs.h
@@ -1,7 +1,7 @@
 /*
  * Broadcom device-specific manifest constants.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmdevs_legacy.h b/include/bcmdevs_legacy.h
index b73df33..a4541e3 100644
--- a/include/bcmdevs_legacy.h
+++ b/include/bcmdevs_legacy.h
@@ -1,7 +1,7 @@
 /*
  * Broadcom device-specific manifest constants used by DHD, but deprecated in firmware.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmdhcp.h b/include/bcmdhcp.h
index 1efbbff..4a03bba 100644
--- a/include/bcmdhcp.h
+++ b/include/bcmdhcp.h
@@ -1,7 +1,7 @@
 /*
  * Fundamental constants relating to DHCP Protocol
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmendian.h b/include/bcmendian.h
index fdf72d0..055ba69 100644
--- a/include/bcmendian.h
+++ b/include/bcmendian.h
@@ -1,7 +1,7 @@
 /*
  * Byte order utilities
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmerror.h b/include/bcmerror.h
index c4ff6d4..b5869bf 100644
--- a/include/bcmerror.h
+++ b/include/bcmerror.h
@@ -1,7 +1,7 @@
 /*
  * Common header file for all error codes.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmeth.h b/include/bcmeth.h
index c56353f..310c687 100644
--- a/include/bcmeth.h
+++ b/include/bcmeth.h
@@ -1,7 +1,7 @@
 /*
  * Broadcom Ethernettype  protocol definitions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmevent.h b/include/bcmevent.h
index a6b2af9..8917b86 100644
--- a/include/bcmevent.h
+++ b/include/bcmevent.h
@@ -3,7 +3,7 @@
  *
  * Dependencies: bcmeth.h
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmicmp.h b/include/bcmicmp.h
index d10c6c8..1ce5d61 100644
--- a/include/bcmicmp.h
+++ b/include/bcmicmp.h
@@ -1,7 +1,7 @@
 /*
  * Fundamental constants relating to ICMP Protocol
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmigmp.h b/include/bcmigmp.h
index 2a6bd5b..03ba00d 100644
--- a/include/bcmigmp.h
+++ b/include/bcmigmp.h
@@ -1,7 +1,7 @@
 /*
  * Fundamental constants relating to IGMP Protocol
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmiov.h b/include/bcmiov.h
index 6931c3d..97c5d4f 100644
--- a/include/bcmiov.h
+++ b/include/bcmiov.h
@@ -4,7 +4,7 @@
  * To be used in firmware and host apps or dhd - reducing code size,
  * duplication, and maintenance overhead.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmip.h b/include/bcmip.h
index 0c56336..6db98ae 100644
--- a/include/bcmip.h
+++ b/include/bcmip.h
@@ -1,7 +1,7 @@
 /*
  * Fundamental constants relating to IP Protocol
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmipv6.h b/include/bcmipv6.h
index 5b53491..f2843fc 100644
--- a/include/bcmipv6.h
+++ b/include/bcmipv6.h
@@ -1,7 +1,7 @@
 /*
  * Fundamental constants relating to Neighbor Discovery Protocol
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmmsgbuf.h b/include/bcmmsgbuf.h
index 50c2d36..02d9828 100644
--- a/include/bcmmsgbuf.h
+++ b/include/bcmmsgbuf.h
@@ -4,7 +4,7 @@
  *
  * Definitions subject to change without notice.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmnvram.h b/include/bcmnvram.h
index 9dc2b22..216370f 100644
--- a/include/bcmnvram.h
+++ b/include/bcmnvram.h
@@ -1,7 +1,7 @@
 /*
  * NVRAM variable manipulation
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmpcie.h b/include/bcmpcie.h
index cc95195..f11c4f7 100644
--- a/include/bcmpcie.h
+++ b/include/bcmpcie.h
@@ -3,7 +3,7 @@
  * Software-specific definitions shared between device and host side
  * Explains the shared area between host and dongle
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmpcispi.h b/include/bcmpcispi.h
index dd55189..c34c764 100644
--- a/include/bcmpcispi.h
+++ b/include/bcmpcispi.h
@@ -1,7 +1,7 @@
 /*
  * Broadcom PCI-SPI Host Controller Register Definitions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmperf.h b/include/bcmperf.h
index b4771d8..ae7c732 100644
--- a/include/bcmperf.h
+++ b/include/bcmperf.h
@@ -1,7 +1,7 @@
 /*
  * Performance counters software interface.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmproto.h b/include/bcmproto.h
index 8be62aa..688c1d0 100644
--- a/include/bcmproto.h
+++ b/include/bcmproto.h
@@ -1,7 +1,7 @@
 /*
  * Fundamental constants relating to IP Protocol
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmrand.h b/include/bcmrand.h
index c59f834..fc476ff 100644
--- a/include/bcmrand.h
+++ b/include/bcmrand.h
@@ -1,7 +1,7 @@
 /*
  * bcmrand.h.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmsdbus.h b/include/bcmsdbus.h
index 90c0a98..d109d3f 100644
--- a/include/bcmsdbus.h
+++ b/include/bcmsdbus.h
@@ -2,7 +2,7 @@
  * Definitions for API from sdio common code (bcmsdh) to individual
  * host controller drivers.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmsdh.h b/include/bcmsdh.h
index 32772e2..102d27b 100644
--- a/include/bcmsdh.h
+++ b/include/bcmsdh.h
@@ -3,7 +3,7 @@
  *     export functions to client drivers
  *     abstract OS and BUS specific details of SDIO
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmsdh_sdmmc.h b/include/bcmsdh_sdmmc.h
index 8345cbf..d960160 100644
--- a/include/bcmsdh_sdmmc.h
+++ b/include/bcmsdh_sdmmc.h
@@ -1,7 +1,7 @@
 /*
  * BCMSDH Function Driver for the native SDIO/MMC driver in the Linux Kernel
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmsdpcm.h b/include/bcmsdpcm.h
index 2573b56..60854ca 100644
--- a/include/bcmsdpcm.h
+++ b/include/bcmsdpcm.h
@@ -2,7 +2,7 @@
  * Broadcom SDIO/PCMCIA
  * Software-specific definitions shared between device and host side
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmspi.h b/include/bcmspi.h
index ca64229..6491d53 100644
--- a/include/bcmspi.h
+++ b/include/bcmspi.h
@@ -1,7 +1,7 @@
 /*
  * Broadcom SPI Low-Level Hardware Driver API
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmspibrcm.h b/include/bcmspibrcm.h
index 241aa03..2684da7 100644
--- a/include/bcmspibrcm.h
+++ b/include/bcmspibrcm.h
@@ -1,7 +1,7 @@
 /*
  * SD-SPI Protocol Conversion - BCMSDH->gSPI Translation Layer
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmsrom_fmt.h b/include/bcmsrom_fmt.h
index 8f379d4..df3a186 100644
--- a/include/bcmsrom_fmt.h
+++ b/include/bcmsrom_fmt.h
@@ -1,7 +1,7 @@
 /*
  * SROM format definition.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmstdlib_s.h b/include/bcmstdlib_s.h
index 459ce86..db6a94e 100644
--- a/include/bcmstdlib_s.h
+++ b/include/bcmstdlib_s.h
@@ -1,7 +1,7 @@
 /*
  * Broadcom Secure Standard Library.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmtcp.h b/include/bcmtcp.h
index 573b300..09f90c9 100644
--- a/include/bcmtcp.h
+++ b/include/bcmtcp.h
@@ -1,7 +1,7 @@
 /*
  * Fundamental constants relating to TCP Protocol
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmtlv.h b/include/bcmtlv.h
index 57410c0..24e7ecd 100644
--- a/include/bcmtlv.h
+++ b/include/bcmtlv.h
@@ -1,7 +1,7 @@
 /*
  * TLV and XTLV support
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmudp.h b/include/bcmudp.h
index b920003..65eabe9 100644
--- a/include/bcmudp.h
+++ b/include/bcmudp.h
@@ -1,7 +1,7 @@
 /*
  * Fundamental constants relating to UDP Protocol
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmutils.h b/include/bcmutils.h
index fcd9925..ea4d851 100644
--- a/include/bcmutils.h
+++ b/include/bcmutils.h
@@ -1,7 +1,7 @@
 /*
  * Misc useful os-independent macros and functions.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmwifi_channels.h b/include/bcmwifi_channels.h
index cad62bb..905f574 100644
--- a/include/bcmwifi_channels.h
+++ b/include/bcmwifi_channels.h
@@ -3,7 +3,7 @@
  * This header file housing the define and function prototype use by
  * both the wl driver, tools & Apps.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmwifi_rates.h b/include/bcmwifi_rates.h
index 6c7e694..9d24681 100644
--- a/include/bcmwifi_rates.h
+++ b/include/bcmwifi_rates.h
@@ -1,7 +1,7 @@
 /*
  * Indices for 802.11 a/b/g/n/ac 1-3 chain symmetric transmit rates
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/bcmwifi_rspec.h b/include/bcmwifi_rspec.h
index c0044f7..1044c62 100644
--- a/include/bcmwifi_rspec.h
+++ b/include/bcmwifi_rspec.h
@@ -1,7 +1,7 @@
 /*
  * Common OS-independent driver header for rate management.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/brcm_nl80211.h b/include/brcm_nl80211.h
index 3cba705..a8aed83 100644
--- a/include/brcm_nl80211.h
+++ b/include/brcm_nl80211.h
@@ -1,7 +1,7 @@
 /*
  * Definitions for nl80211 vendor command/event access to host driver
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/dbus.h b/include/dbus.h
index ca5651a..27d07a5 100644
--- a/include/dbus.h
+++ b/include/dbus.h
@@ -2,7 +2,7 @@
  * Dongle BUS interface Abstraction layer
  *   target serial buses like USB, SDIO, SPI, etc.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/dhd_daemon.h b/include/dhd_daemon.h
index d92796b..3bde2ea 100644
--- a/include/dhd_daemon.h
+++ b/include/dhd_daemon.h
@@ -1,7 +1,7 @@
 /*
  * Header file for DHD daemon to handle timeouts
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/dhdioctl.h b/include/dhdioctl.h
index 88f212a..07668a5 100644
--- a/include/dhdioctl.h
+++ b/include/dhdioctl.h
@@ -5,7 +5,7 @@
  *
  * Definitions subject to change without notice.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/dngl_rtlv.h b/include/dngl_rtlv.h
index d49d8ca..d0fa55b 100644
--- a/include/dngl_rtlv.h
+++ b/include/dngl_rtlv.h
@@ -1,7 +1,7 @@
 /*
  * Interface definitions for reversed TLVs
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/dngl_stats.h b/include/dngl_stats.h
index 453955f..e1d4780 100644
--- a/include/dngl_stats.h
+++ b/include/dngl_stats.h
@@ -2,7 +2,7 @@
  * Common stats definitions for clients of dongle
  * ports
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/dngl_wlhdr.h b/include/dngl_wlhdr.h
index 33b664e..f7511f2 100644
--- a/include/dngl_wlhdr.h
+++ b/include/dngl_wlhdr.h
@@ -1,7 +1,7 @@
 /*
  * Dongle WL Header definitions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/dnglevent.h b/include/dnglevent.h
index acc1adf..c4f4934 100644
--- a/include/dnglevent.h
+++ b/include/dnglevent.h
@@ -3,7 +3,7 @@
  *
  * Dependencies: bcmeth.h
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/dnglioctl.h b/include/dnglioctl.h
index 2d60499..a9f0dcc 100644
--- a/include/dnglioctl.h
+++ b/include/dnglioctl.h
@@ -1,7 +1,7 @@
 /*
  * HND Run Time Environment ioctl.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/dscp_policy.h b/include/dscp_policy.h
index 2d8da60..664e5ca 100644
--- a/include/dscp_policy.h
+++ b/include/dscp_policy.h
@@ -6,7 +6,7 @@
  * https://docs.google.com/document/d/1nZ6X_4cVLsQ7unevm4PIDLbDhEFNcRj0d-9y0I0IAYw/edit?usp=sharing
  * https://drive.google.com/file/d/1ndJEqXsMsliy_B9A8ZME9uwwc5vsrlxR/view?usp=sharing
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/eap.h b/include/eap.h
index 470f9c0..7e84985 100644
--- a/include/eap.h
+++ b/include/eap.h
@@ -4,7 +4,7 @@
  * See
  * RFC 2284: PPP Extensible Authentication Protocol (EAP)
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/eapol.h b/include/eapol.h
index 63614bc..584d77e 100644
--- a/include/eapol.h
+++ b/include/eapol.h
@@ -5,7 +5,7 @@
  * IEEE Std 802.1X-2001
  * IEEE 802.1X RADIUS Usage Guidelines
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/epivers.h b/include/epivers.h
index f797167..2841d26 100644
--- a/include/epivers.h
+++ b/include/epivers.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -29,25 +29,25 @@
 
 #define EPI_RC_NUMBER		243
 
-#define EPI_INCREMENTAL_NUMBER	21
+#define EPI_INCREMENTAL_NUMBER	26
 
 #define EPI_BUILD_NUMBER	0
 
-#define EPI_VERSION		103, 10, 243, 21
+#define EPI_VERSION		103, 10, 243, 26
 
-#define EPI_VERSION_NUM		0x670af315
+#define EPI_VERSION_NUM		0x670af31a
 
 #define EPI_VERSION_DEV		103.10.243
 
 /* Driver Version String, ASCII, 32 chars max */
 #if defined (WLTEST)
-#define EPI_VERSION_STR		"103.10.243.21 (wlan=r1042692 WLTEST)"
+#define EPI_VERSION_STR		"103.10.243.26 (wlan=r1051405 WLTEST)"
 #elif (defined (BCMDBG_ASSERT) && \
 	!defined (BCMDBG_ASSERT_DISABLED) && \
 	!defined (ASSERT_FP_DISABLE))
-#define EPI_VERSION_STR		"103.10.243.21 (wlan=r1042692 ASSRT)"
+#define EPI_VERSION_STR		"103.10.243.26 (wlan=r1051405 ASSRT)"
 #else
-#define EPI_VERSION_STR		"103.10.243.21 (wlan=r1042692)"
+#define EPI_VERSION_STR		"103.10.243.26 (wlan=r1051405)"
 #endif /* BCMINTERNAL */
 
 #endif /* _epivers_h_ */
diff --git a/include/etd.h b/include/etd.h
index 603620a..6af338c 100644
--- a/include/etd.h
+++ b/include/etd.h
@@ -1,7 +1,7 @@
 /*
  * Extended Trap data component interface file.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -78,9 +78,98 @@
 	TAG_TRAP_AXI_HOST_INFO		= 25u, /* AXI Host log */
 	TAG_TRAP_AXI_SR_ERROR		= 26u, /* AXI SR error log */
 	TAG_TRAP_MEM_BIT_FLIP		= 27u, /* Memory 1-Bit Flip error */
+	TAG_TRAP_SUBCODE		= 28u, /* The trap subcode */
 	TAG_TRAP_LAST  /* This must be the last entry */
 } hnd_ext_tag_trap_t;
 
+/* sub codes corresponding to TAG_TRAP_PHY comes from phy_crash_reason_t */
+
+/* sub codes corresponding to TAG_TRAP_PSM_WD. All other subcodes are internal */
+typedef enum etd_subcode_psmwd {
+	ETDSC_PSMWD_MN_TXCRS_HIGH		= 10,	/* waiting due to txcrs high sensing */
+	ETDSC_PSMWD_ER_TXERR_WAIT		= 19,	/* waiting due to txerr recovery */
+	ETDSC_PSMWD_BACKPLANE_REG_WRITE		= 11,	/* reg write timing out */
+	ETDSC_PSMWD_BACKPLANE_REG_READ		= 12,	/* reg read timing out */
+} etd_subcode_psmwd_t;
+
+/* sub codes corr to TAG_TRAP_MAC_WAKE, PHYTXERR_THRESH. All other subcodes are internal */
+typedef enum etd_subcode_psmassert {
+	ETDSC_PSMAS_TXEN_AT_SLEEP		= 1,	/* uCode going to sleep will TX pending */
+	ETDSC_PSMAS_ASSERT2_AVAILABLE		= 2,	/* PSDU Length zero due to faulty
+							 * trigger frame params
+							 */
+	ETDSC_PSMAS_HTC_OFFSET_UNSUPPORTED	= 3,	/* HTC Offset indicated by FW
+							 * is not supported for bitsub
+							 */
+	ETDSC_PSMAS_ASSERT_IQEST_HANG		= 4,	/* IQEst failure */
+	ETDSC_PSMAS_FCBS_RADIO_PD_ERROR		= 11,	/* radio pwr down err during band switch */
+	ETDSC_PSMAS_FCBS_RADIO_PU_ERROR		= 12,	/* radio power up err during band switch */
+	ETDSC_PSMAS_RX_AMSDU_HDR_ERROR		= 13,	/* AMSDU header error during rx */
+	ETDSC_PSMAS_BMC_CORRUPT_ERROR		= 14,	/* Memory corruption error */
+	ETDSC_PSMAS_RESETCCA_RST2RX_ERR		= 29,	/* PHYSM didnt come to RX post resetcca */
+	ETDSC_PSMAS_BAD_BP_ACCESS		= 30,	/* Assert to catch BP access failure */
+	ETDSC_PSMAS_DUAL_BTCX_ANT_INVALID	= 51,	/* Ant. requested by BT is invalid. */
+	ETDSC_PSMAS_PHYERR_TXCRS_HI		= 100,	/* TX CRS High for more than 20ms during
+							 * PHY TX error handling
+							 */
+	ETDSC_PSMAS_MACCLEANUP_TXCRS_HI		= 101,	/* TX CRS High after mac cleanup */
+	ETDSC_PSMAS_PREWDS_ASSERT		= 102,	/* PreWDS assert */
+	ETDSC_PSMAS_SENSORC_CX_WRONG_TX_CHAIN	= 103,	/* TX attempted with inhibited TX Chain */
+} etd_subcode_psmassert_t;
+
+/* sub codes corresponding to TAG_TRAP_ERR_ATTN. This is of the format:
+ *  31.........16		15 ........ 0
+ *  wlan err attn codes		cmn err attn codes
+ */
+#define ETDSC_ERR_ATTN_CMN_MASK				(0xFFFFu)
+#define ETDSC_ERR_ATTN_CMN_SHIFT			(0x0u)
+#define ETDSC_ERR_ATTN_FN0_MASK				(0xFFFF0000u)
+#define ETDSC_ERR_ATTN_FN0_SHIFT			(0x16u)
+
+/* cmn */
+#define ETDSC_PCIE_ERR_ATTN_CMN_UNKNOWNTYPE		(0x1u << 9u)	/* Unknown Header Type err
+									 * at User Tx Detected.
+									 */
+#define ETDSC_PCIE_ERR_ATTN_CMN_BOUNDARY4K		(0x1u << 8u)	/* boundary cross
+									 * violation
+									 */
+#define ETDSC_PCIE_ERR_ATTN_CMN_MRRS			(0x1u << 7u)	/* MRRS violation Error */
+#define ETDSC_PCIE_ERR_ATTN_CMN_MPS			(0x1u << 6u)	/* Max Payload Size
+									 * Violation
+									 */
+#define ETDSC_PCIE_ERR_ATTN_CMN_TTX_BRIDGE_FORWARD	(0x1u << 5u)	/* UserIF violation */
+#define ETDSC_PCIE_ERR_ATTN_CMN_TTX_TXINTF_OVERFLOW	(0x1u << 4u)	/* Too many requests made
+									 * at User tx without
+									 * waiting for Ack.
+									 */
+#define ETDSC_PCIE_ERR_ATTN_CMN_PHY			(0x1u << 3u)	/* PL LayerErr detected */
+#define ETDSC_PCIE_ERR_ATTN_CMN_DL			(0x1u << 2u)	/* DL layerErr detected */
+#define ETDSC_PCIE_ERR_ATTN_CMN_TTX_TAG_IN_USE		(0x1u << 1u)	/* Tx Read req resuing a
+									 * Tag that has not yet
+									 * been completed.
+									 */
+#define ETDSC_PCIE_ERR_ATTN_CMN_TRX_UNEXP_RTAG		(0x1u << 0u)	/* Tx Completion req
+									 * providing
+									 * an Rtag that is wrong.
+									 */
+
+/* wlan */
+#define ETDSC_PCIE_ERR_ATTN_WLAN_TTX_REQ_DURING_D3	(0x1u << 10u)	/* wlan tx req even though
+									 * in non-D0 state.
+									 */
+#define ETDSC_PCIE_ERR_ATTN_WLAN_PRI_SIG_TARGET_ABORT	(0x1u << 9u)	/* targetAbortError Status
+									 * for wlan.
+									 */
+#define ETDSC_PCIE_ERR_ATTN_WLAN_UNSPPORT		(0x1u << 8u)	/* Unsupported Req Err */
+#define ETDSC_PCIE_ERR_ATTN_WLAN_ECRC			(0x1u << 7u)	/* ECRC Error TLP */
+#define ETDSC_PCIE_ERR_ATTN_WLAN_MALF_TLP		(0x1u << 6u)	/* Malformed TLP */
+#define ETDSC_PCIE_ERR_ATTN_WLAN_RX_OFLOW		(0x1u << 5u)	/* Receiver Overflow */
+#define ETDSC_PCIE_ERR_ATTN_WLAN_UNEXP_CPL		(0x1u << 4u)	/* Unexpected Completion */
+#define ETDSC_PCIE_ERR_ATTN_WLAN_MASTER_ABRT		(0x1u << 3u)	/* Receive UR Completion */
+#define ETDSC_PCIE_ERR_ATTN_WLAN_CPL_TIMEOUT		(0x1u << 2u)	/* Completer Timeout. */
+#define ETDSC_PCIE_ERR_ATTN_WLAN_FC_PRTL		(0x1u << 1u)	/* Flow Control Prot Err */
+#define ETDSC_PCIE_ERR_ATTN_WLAN_PSND_TLP		(0x1u << 0u)	/* Poisoned Err Status */
+
 typedef struct hnd_ext_trap_bp_err
 {
 	uint32 error;
@@ -681,7 +770,7 @@
 void etd_notify_trap_ext_callback(trap_t *tr);
 reg_dump_config_t *etd_get_reg_dump_config_tbl(void);
 uint etd_get_reg_dump_config_len(void);
-
+void BCMPOSTTRAPFN(etd_write_trap_reason_subcode)(uint32 tsc);
 extern bool _etd_enab;
 
 #if defined(ROM_ENAB_RUNTIME_CHECK)
diff --git a/include/ethernet.h b/include/ethernet.h
index 97fac2a..1168963 100644
--- a/include/ethernet.h
+++ b/include/ethernet.h
@@ -1,7 +1,7 @@
 /*
  * From FreeBSD 2.2.7: Fundamental constants relating to ethernet.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/event_log.h b/include/event_log.h
index c204d4b..4553cde 100644
--- a/include/event_log.h
+++ b/include/event_log.h
@@ -1,7 +1,7 @@
 /*
  * EVENT_LOG system definitions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/event_log_api_strings.h b/include/event_log_api_strings.h
index d61e569..b60c3e4 100644
--- a/include/event_log_api_strings.h
+++ b/include/event_log_api_strings.h
@@ -3,7 +3,7 @@
  * The strings defined in this file are "API" strings and therefore can't be changed without
  * consulting the consumers of these strings
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/event_log_payload.h b/include/event_log_payload.h
index 7360d1b..14b7a5a 100644
--- a/include/event_log_payload.h
+++ b/include/event_log_payload.h
@@ -4,7 +4,7 @@
  * This file describes the payloads of event log entries that are data buffers
  * rather than formatted string entries. The contents are generally XTLVs.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/event_log_set.h b/include/event_log_set.h
index 0006980..e5725d8 100644
--- a/include/event_log_set.h
+++ b/include/event_log_set.h
@@ -1,7 +1,7 @@
 /*
  * EVENT_LOG system definitions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/event_log_tag.h b/include/event_log_tag.h
index d3118be..caa0fec 100644
--- a/include/event_log_tag.h
+++ b/include/event_log_tag.h
@@ -1,7 +1,7 @@
 /*
  * EVENT_LOG system definitions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/event_trace.h b/include/event_trace.h
index e26f9fc..a3a7ed2 100644
--- a/include/event_trace.h
+++ b/include/event_trace.h
@@ -1,7 +1,7 @@
 /*
  * Trace log blocks sent over HBUS
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/ewp.h b/include/ewp.h
index 5fc78ef..12f38f8 100644
--- a/include/ewp.h
+++ b/include/ewp.h
@@ -3,7 +3,7 @@
  *
  * Software-specific EWP definitions shared between device and host side
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/fils.h b/include/fils.h
index 84a6306..7301994 100644
--- a/include/fils.h
+++ b/include/fils.h
@@ -1,7 +1,7 @@
 /*
  * Fundamental types and constants relating to FILS AUTHENTICATION
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/frag.h b/include/frag.h
index 7a220f1..fdeb447 100644
--- a/include/frag.h
+++ b/include/frag.h
@@ -2,7 +2,7 @@
  * IE/TLV (de)fragmentation declarations/definitions for
  * Broadcom 802.11abgn Networking Device Driver
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/ftm_ioctl.h b/include/ftm_ioctl.h
index e87e86f..dc23146 100644
--- a/include/ftm_ioctl.h
+++ b/include/ftm_ioctl.h
@@ -1,7 +1,7 @@
 /*
  * FTM module IOCTL structure definitions.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/fwpkg_utils.h b/include/fwpkg_utils.h
index bde4bf3..b1da5e2 100644
--- a/include/fwpkg_utils.h
+++ b/include/fwpkg_utils.h
@@ -1,7 +1,7 @@
 /*
  * Firmware package defines
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/hal_nci_cmn.h b/include/hal_nci_cmn.h
index 33a9baa..a60d88b 100644
--- a/include/hal_nci_cmn.h
+++ b/include/hal_nci_cmn.h
@@ -2,7 +2,7 @@
  * Shared code between the legacy nci implementation which depended on the EROM and the
  * implementation which depends on vlsi_data.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/hnd_armtrap.h b/include/hnd_armtrap.h
index 5db2411..fa8d3d2 100644
--- a/include/hnd_armtrap.h
+++ b/include/hnd_armtrap.h
@@ -1,7 +1,7 @@
 /*
  * HND arm trap handling.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/hnd_cons.h b/include/hnd_cons.h
index 5b98fa8..7734ad4 100644
--- a/include/hnd_cons.h
+++ b/include/hnd_cons.h
@@ -1,7 +1,7 @@
 /*
  * Console support for RTE - for host use only.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/hnd_debug.h b/include/hnd_debug.h
index e274e41..5442426 100644
--- a/include/hnd_debug.h
+++ b/include/hnd_debug.h
@@ -1,7 +1,7 @@
 /*
  * HND Run Time Environment debug info area
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/hnd_pktpool.h b/include/hnd_pktpool.h
index 75d013a..cc66729 100644
--- a/include/hnd_pktpool.h
+++ b/include/hnd_pktpool.h
@@ -1,7 +1,7 @@
 /*
  * HND generic packet pool operation primitives
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/hnd_pktq.h b/include/hnd_pktq.h
index 806559a..8481c4a 100644
--- a/include/hnd_pktq.h
+++ b/include/hnd_pktq.h
@@ -1,7 +1,7 @@
 /*
  * HND generic pktq operation primitives
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/hnddap.h b/include/hnddap.h
index fce70f8..ee4ba9a 100644
--- a/include/hnddap.h
+++ b/include/hnddap.h
@@ -1,7 +1,7 @@
 /*
  * DAP(Debug Access Port) interface.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/hndlhl.h b/include/hndlhl.h
index df6bffd..ae70826 100644
--- a/include/hndlhl.h
+++ b/include/hndlhl.h
@@ -1,7 +1,7 @@
 /*
  * HND SiliconBackplane PMU support.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/hndoobr.h b/include/hndoobr.h
index 1e532a7..a2268e6 100644
--- a/include/hndoobr.h
+++ b/include/hndoobr.h
@@ -1,7 +1,7 @@
 /*
  * HND OOBR interface header
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/hndpmu_dhd.h b/include/hndpmu_dhd.h
index 88d2e88..ec045f7 100644
--- a/include/hndpmu_dhd.h
+++ b/include/hndpmu_dhd.h
@@ -1,7 +1,7 @@
 /*
  * PMU core access APIs for DHD.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/hndsoc.h b/include/hndsoc.h
index fcf73c0..bf17924 100644
--- a/include/hndsoc.h
+++ b/include/hndsoc.h
@@ -1,7 +1,7 @@
 /*
  * Broadcom HND chip & on-chip-interconnect-related definitions.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/linux_osl.h b/include/linux_osl.h
index 56e2aaf..c45b8ca 100644
--- a/include/linux_osl.h
+++ b/include/linux_osl.h
@@ -1,7 +1,7 @@
 /*
  * Linux OS Independent Layer
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/linux_pkt.h b/include/linux_pkt.h
index 71a5554..04a20b5 100644
--- a/include/linux_pkt.h
+++ b/include/linux_pkt.h
@@ -1,7 +1,7 @@
 /*
  * Linux Packet (skb) interface
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/linuxerrmap.h b/include/linuxerrmap.h
index beb4172..27516a6 100644
--- a/include/linuxerrmap.h
+++ b/include/linuxerrmap.h
@@ -1,7 +1,7 @@
 /*
  * Linux Error mappings
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/linuxver.h b/include/linuxver.h
index b3a3c6c..a2d3f16 100644
--- a/include/linuxver.h
+++ b/include/linuxver.h
@@ -2,7 +2,7 @@
  * Linux-specific abstractions to gain some independence from linux kernel versions.
  * Pave over some 2.2 versus 2.4 versus 2.6 kernel differences.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/lpflags.h b/include/lpflags.h
index 38bcf08..1b1c13e 100644
--- a/include/lpflags.h
+++ b/include/lpflags.h
@@ -1,7 +1,7 @@
 /*
  * Chip related low power flags
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/mbo.h b/include/mbo.h
index f65b1a9..dcbf4bd 100644
--- a/include/mbo.h
+++ b/include/mbo.h
@@ -1,7 +1,7 @@
 /*
  * Fundamental types and constants relating to WFA MBO
  * (Multiband Operation)
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/miniopt.h b/include/miniopt.h
index d095d66..f11cc80 100644
--- a/include/miniopt.h
+++ b/include/miniopt.h
@@ -1,7 +1,7 @@
 /*
  * Command line options parser.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/msf.h b/include/msf.h
index 1fa746d..6c08d4e 100644
--- a/include/msf.h
+++ b/include/msf.h
@@ -1,7 +1,7 @@
 /*
  * Common interface to MSF (multi-segment format) definitions.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/msgtrace.h b/include/msgtrace.h
index ccc379f..287623a 100644
--- a/include/msgtrace.h
+++ b/include/msgtrace.h
@@ -1,7 +1,7 @@
 /*
  * Trace messages sent over HBUS
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/nan.h b/include/nan.h
index 24a4def..c8b345f 100644
--- a/include/nan.h
+++ b/include/nan.h
@@ -2,7 +2,7 @@
  * Fundamental types and constants relating to WFA NAN
  * (Neighbor Awareness Networking)
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/nci.h b/include/nci.h
index 9ef8a9e..dee6557 100644
--- a/include/nci.h
+++ b/include/nci.h
@@ -2,7 +2,7 @@
  * Misc utility routines for accessing chip-specific features
  * of the BOOKER NCI (non coherent interconnect) based Broadcom chips.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/osl.h b/include/osl.h
index 3362411..3aff008 100644
--- a/include/osl.h
+++ b/include/osl.h
@@ -1,7 +1,7 @@
 /*
  * OS Abstraction Layer
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/osl_decl.h b/include/osl_decl.h
index 5ee4a24..3fd8f5b 100644
--- a/include/osl_decl.h
+++ b/include/osl_decl.h
@@ -1,7 +1,7 @@
 /*
  * osl forward declarations
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/osl_ext.h b/include/osl_ext.h
index 67d11b7..ce76d30 100644
--- a/include/osl_ext.h
+++ b/include/osl_ext.h
@@ -2,7 +2,7 @@
  * OS Abstraction Layer Extension - the APIs defined by the "extension" API
  * are only supported by a subset of all operating systems.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/p2p.h b/include/p2p.h
index 75394d8..adb18ae 100644
--- a/include/p2p.h
+++ b/include/p2p.h
@@ -1,7 +1,7 @@
 /*
  * Fundamental types and constants relating to WFA P2P (aka WiFi Direct)
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/packed_section_end.h b/include/packed_section_end.h
index 70cc6ef..6224198 100644
--- a/include/packed_section_end.h
+++ b/include/packed_section_end.h
@@ -15,7 +15,7 @@
  * #include <packed_section_end.h>
  *
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/packed_section_start.h b/include/packed_section_start.h
index b3890b5..ecb39fd 100644
--- a/include/packed_section_start.h
+++ b/include/packed_section_start.h
@@ -15,7 +15,7 @@
  * #include <packed_section_end.h>
  *
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/pcicfg.h b/include/pcicfg.h
index 2f7bf89..5f7094b 100644
--- a/include/pcicfg.h
+++ b/include/pcicfg.h
@@ -1,7 +1,7 @@
 /*
  * pcicfg.h: PCI configuration constants and structures.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/pcie_core.h b/include/pcie_core.h
index 8177157..90b7264 100644
--- a/include/pcie_core.h
+++ b/include/pcie_core.h
@@ -1,7 +1,7 @@
 /*
  * BCM43XX PCIE core hardware definitions.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/phy_event_log_payload.h b/include/phy_event_log_payload.h
index 1217df2..81d3f8b 100644
--- a/include/phy_event_log_payload.h
+++ b/include/phy_event_log_payload.h
@@ -4,7 +4,7 @@
  * This file describes the payloads of PHY related event log entries that are data buffers
  * rather than formatted string entries.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/sbchipc.h b/include/sbchipc.h
index b0ca95d..d27fe05 100644
--- a/include/sbchipc.h
+++ b/include/sbchipc.h
@@ -5,7 +5,7 @@
  * JTAG, 0/1/2 UARTs, clock frequency control, a watchdog interrupt timer,
  * GPIO interface, extbus, and support for serial and parallel flashes.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/sbconfig.h b/include/sbconfig.h
index 163562e..74b5247 100644
--- a/include/sbconfig.h
+++ b/include/sbconfig.h
@@ -1,7 +1,7 @@
 /*
  * Broadcom SiliconBackplane hardware register definitions.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/sbgci.h b/include/sbgci.h
index 95f62ed..29c3b68 100644
--- a/include/sbgci.h
+++ b/include/sbgci.h
@@ -1,7 +1,7 @@
 /*
  * SiliconBackplane GCI core hardware definitions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/sbhndarm.h b/include/sbhndarm.h
index 9617782..e1de740 100644
--- a/include/sbhndarm.h
+++ b/include/sbhndarm.h
@@ -1,7 +1,7 @@
 /*
  * Broadcom SiliconBackplane ARM definitions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/sbhnddma.h b/include/sbhnddma.h
index 4ae8a7b..e097dea 100644
--- a/include/sbhnddma.h
+++ b/include/sbhnddma.h
@@ -2,7 +2,7 @@
  * Generic Broadcom Home Networking Division (HND) DMA engine HW interface
  * This supports the following chips: BCM42xx, 44xx, 47xx .
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/sbpcmcia.h b/include/sbpcmcia.h
index fb1bfde..078f6d4 100644
--- a/include/sbpcmcia.h
+++ b/include/sbpcmcia.h
@@ -1,7 +1,7 @@
 /*
  * BCM43XX Sonics SiliconBackplane PCMCIA core hardware definitions.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/sbsdio.h b/include/sbsdio.h
index 27e3b0f..61af47c 100644
--- a/include/sbsdio.h
+++ b/include/sbsdio.h
@@ -4,7 +4,7 @@
  *
  * SDIO core support 1bit, 4 bit SDIO mode as well as SPI mode.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/sbsdpcmdev.h b/include/sbsdpcmdev.h
index f19af87..a2f97c4 100644
--- a/include/sbsdpcmdev.h
+++ b/include/sbsdpcmdev.h
@@ -2,7 +2,7 @@
  * Broadcom SiliconBackplane SDIO/PCMCIA hardware-specific
  * device core support
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/sbsocram.h b/include/sbsocram.h
index 17536db..14735f2 100644
--- a/include/sbsocram.h
+++ b/include/sbsocram.h
@@ -1,7 +1,7 @@
 /*
  * BCM47XX Sonics SiliconBackplane embedded ram core
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/sbsreng.h b/include/sbsreng.h
index a583952..ddf5a7a 100644
--- a/include/sbsreng.h
+++ b/include/sbsreng.h
@@ -1,7 +1,7 @@
 /*
  * Header file for save-restore HW
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/sbsysmem.h b/include/sbsysmem.h
index b5f6457..8444a14 100644
--- a/include/sbsysmem.h
+++ b/include/sbsysmem.h
@@ -1,7 +1,7 @@
 /*
  * SiliconBackplane System Memory core
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/sdio.h b/include/sdio.h
index 4110291..4eedd0b 100644
--- a/include/sdio.h
+++ b/include/sdio.h
@@ -2,7 +2,7 @@
  * SDIO spec header file
  * Protocol and standard (common) device definitions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/sdioh.h b/include/sdioh.h
index e5ae7ed..f9a0969 100644
--- a/include/sdioh.h
+++ b/include/sdioh.h
@@ -2,7 +2,7 @@
  * SDIO Host Controller Spec header file
  * Register map and definitions for the Standard Host Controller
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/sdiovar.h b/include/sdiovar.h
index 3aa94da..6faeb5c 100644
--- a/include/sdiovar.h
+++ b/include/sdiovar.h
@@ -2,7 +2,7 @@
  * Structure used by apps whose drivers access SDIO drivers.
  * Pulled out separately so dhdu and wlu can both use it.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/sdspi.h b/include/sdspi.h
index c0658ac..47f5238 100644
--- a/include/sdspi.h
+++ b/include/sdspi.h
@@ -1,7 +1,7 @@
 /*
  * SD-SPI Protocol Standard
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/siutils.h b/include/siutils.h
index 6e3010a..8a3ce0a 100644
--- a/include/siutils.h
+++ b/include/siutils.h
@@ -2,7 +2,7 @@
  * Misc utility routines for accessing the SOC Interconnects
  * of Broadcom HNBU chips.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/spid.h b/include/spid.h
index 96e96c7..a534554 100644
--- a/include/spid.h
+++ b/include/spid.h
@@ -1,7 +1,7 @@
 /*
  * SPI device spec header file
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/trxhdr.h b/include/trxhdr.h
index fdb9752..d8c98c9 100644
--- a/include/trxhdr.h
+++ b/include/trxhdr.h
@@ -1,7 +1,7 @@
 /*
  * TRX image file header format.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/typedefs.h b/include/typedefs.h
index 606501b..2af9654 100644
--- a/include/typedefs.h
+++ b/include/typedefs.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/verhoeff_chksum.h b/include/verhoeff_chksum.h
index 52fddf9..0718665 100644
--- a/include/verhoeff_chksum.h
+++ b/include/verhoeff_chksum.h
@@ -1,7 +1,7 @@
 /*
  * Broadcom Verhoeff Checksum Library.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/vlan.h b/include/vlan.h
index 7f7a7e9..8c6d0e7 100644
--- a/include/vlan.h
+++ b/include/vlan.h
@@ -1,7 +1,7 @@
 /*
  * 802.1Q VLAN protocol definitions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/wldev_common.h b/include/wldev_common.h
index dd312c8..2020ae0 100644
--- a/include/wldev_common.h
+++ b/include/wldev_common.h
@@ -1,7 +1,7 @@
 /*
  * Common function shared by Linux WEXT, cfg80211 and p2p drivers
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/wlfc_proto.h b/include/wlfc_proto.h
index 3ff2171..c8d7577 100644
--- a/include/wlfc_proto.h
+++ b/include/wlfc_proto.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/wlioctl.h b/include/wlioctl.h
index 9b10e0f..a7e74ef 100644
--- a/include/wlioctl.h
+++ b/include/wlioctl.h
@@ -6,7 +6,7 @@
  *
  * Definitions subject to change without notice.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/wlioctl_defs.h b/include/wlioctl_defs.h
index dcbf918..cfc1f1b 100644
--- a/include/wlioctl_defs.h
+++ b/include/wlioctl_defs.h
@@ -4,7 +4,7 @@
  *
  * Definitions subject to change without notice.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/wlioctl_utils.h b/include/wlioctl_utils.h
index 83e7f12..dd5256f 100644
--- a/include/wlioctl_utils.h
+++ b/include/wlioctl_utils.h
@@ -1,7 +1,7 @@
 /*
  * Custom OID/ioctl related helper functions.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/wpa.h b/include/wpa.h
index 1c8b2af..1207b2d 100644
--- a/include/wpa.h
+++ b/include/wpa.h
@@ -1,7 +1,7 @@
 /*
  * Fundamental types and constants relating to WPA
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/include/wps.h b/include/wps.h
index 9c1c948..77b32f0 100644
--- a/include/wps.h
+++ b/include/wps.h
@@ -1,7 +1,7 @@
 /*
  * WPS IE definitions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/linux_osl.c b/linux_osl.c
index 3f672cf..b88b17a 100644
--- a/linux_osl.c
+++ b/linux_osl.c
@@ -1,7 +1,7 @@
 /*
  * Linux OS Independent Layer
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/linux_osl_priv.h b/linux_osl_priv.h
index c575450..956d0cb 100644
--- a/linux_osl_priv.h
+++ b/linux_osl_priv.h
@@ -1,7 +1,7 @@
 /*
  * Private header file for Linux OS Independent Layer
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/linux_pkt.c b/linux_pkt.c
index 4b6b3d7..e7ddb7e 100644
--- a/linux_pkt.c
+++ b/linux_pkt.c
@@ -1,7 +1,7 @@
 /*
  * Linux Packet (skb) interface
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/linuxerrmap.c b/linuxerrmap.c
index 32fde67..87ccf07 100644
--- a/linuxerrmap.c
+++ b/linuxerrmap.c
@@ -1,7 +1,7 @@
 /*
  * Linux Error codes
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/nciutils.c b/nciutils.c
index 31d0fe5..5f95f69 100644
--- a/nciutils.c
+++ b/nciutils.c
@@ -3,7 +3,7 @@
  * of the BOOKER NCI (non coherent interconnect) based Broadcom chips.
  * Note: this file is used for both dongle and DHD builds.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/nciutils_host.c b/nciutils_host.c
index b5d9064..0471cb8 100644
--- a/nciutils_host.c
+++ b/nciutils_host.c
@@ -3,7 +3,7 @@
  * of the BOOKER NCI (non coherent interconnect) based Broadcom chips.
  * For DHD only.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/pcie_core_host.c b/pcie_core_host.c
index c11d2ca..ec861ee 100644
--- a/pcie_core_host.c
+++ b/pcie_core_host.c
@@ -1,7 +1,7 @@
 /*
  * Contains PCIe related functions that are required for host builds.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/siutils.c b/siutils.c
index 7a3139b..796e259 100644
--- a/siutils.c
+++ b/siutils.c
@@ -3,7 +3,7 @@
  * of the SiliconBackplane-based Broadcom chips.
  * Note: this file is used for both dongle and DHD builds.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/siutils_host.c b/siutils_host.c
index 93c87ce..18d1624 100644
--- a/siutils_host.c
+++ b/siutils_host.c
@@ -3,7 +3,7 @@
  * of the SiliconBackplane-based Broadcom chips.
  * For DHD only.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/siutils_priv.h b/siutils_priv.h
index af5057f..bc25fbb 100644
--- a/siutils_priv.h
+++ b/siutils_priv.h
@@ -1,7 +1,7 @@
 /*
  * Include file private to the SOC Interconnect support files.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/verhoeff_chksum.c b/verhoeff_chksum.c
index 943e631..55bd6bd 100644
--- a/verhoeff_chksum.c
+++ b/verhoeff_chksum.c
@@ -1,7 +1,7 @@
 /*
  * Broadcom Verhoeff Checksum Library.
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wb_regon_coordinator.c b/wb_regon_coordinator.c
index 07f401c..3e9b99c 100644
--- a/wb_regon_coordinator.c
+++ b/wb_regon_coordinator.c
@@ -1,7 +1,7 @@
 /*
  * DHD WiFi BT RegON Coordinator - WBRC
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wb_regon_coordinator.h b/wb_regon_coordinator.h
index 819dfee..2f21ba3 100644
--- a/wb_regon_coordinator.h
+++ b/wb_regon_coordinator.h
@@ -1,7 +1,7 @@
 /*
  * DHD BT WiFi Coex RegON Coordinator - Interface
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wifi_stats.h b/wifi_stats.h
index eccc694..8667acf 100644
--- a/wifi_stats.h
+++ b/wifi_stats.h
@@ -2,7 +2,7 @@
  * Common stats definitions for clients of dongle
  * ports
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wl_android.c b/wl_android.c
index 5f4fdb3..f018224 100644
--- a/wl_android.c
+++ b/wl_android.c
@@ -1,7 +1,7 @@
 /*
  * Linux cfg80211 driver - Android related functions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wl_android.h b/wl_android.h
index 4607d4f..6c34acf 100644
--- a/wl_android.h
+++ b/wl_android.h
@@ -1,7 +1,7 @@
 /*
  * Linux cfg80211 driver - Android related functions
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wl_cfg80211.c b/wl_cfg80211.c
index f44c074..ffc8db2 100644
--- a/wl_cfg80211.c
+++ b/wl_cfg80211.c
@@ -1,7 +1,7 @@
 /*
  * Linux cfg80211 driver
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -7642,10 +7642,14 @@
 void
 wl_pkt_mon_start(struct bcm_cfg80211 *cfg, struct net_device *dev)
 {
+	dhd_pub_t *dhdp =  (dhd_pub_t *)(cfg->pub);
+#ifdef DHD_PKT_MON_DUAL_STA
+	DHD_DBG_PKT_MON_START(dhdp, dhd_net2idx(dhdp->info, dev));
+#else
 	if ((dev == bcmcfg_to_prmry_ndev(cfg))) {
-		dhd_pub_t *dhdp =  (dhd_pub_t *)(cfg->pub);
 		DHD_DBG_PKT_MON_START(dhdp);
 	}
+#endif /* DHD_PKT_MON_DUAL_STA */
 }
 #endif /* DBG_PKT_MON && BCMDONGLEHOST */
 
@@ -7840,9 +7844,13 @@
 
 #ifdef DBG_PKT_MON
 	/* Start pkt monitor here to avoid probe auth and assoc lost */
+#ifdef DHD_PKT_MON_DUAL_STA
+	wl_pkt_mon_start(cfg, dev);
+#else
 	if (dev == bcmcfg_to_prmry_ndev(cfg)) {
 		wl_pkt_mon_start(cfg, dev);
 	}
+#endif /* DHD_PKT_MON_DUAL_STA */
 #endif /* DBG_PKT_MON */
 	if (assoc_info.reassoc) {
 		/* Handle roam to same ESS */
@@ -8003,9 +8011,13 @@
 	if (act) {
 #ifdef DBG_PKT_MON
 		/* Stop packet monitor */
+#ifdef DHD_PKT_MON_DUAL_STA
+		DHD_DBG_PKT_MON_STOP(dhdp, dhd_net2idx(dhdp->info, dev));
+#else
 		if (dev == bcmcfg_to_prmry_ndev(cfg)) {
 			DHD_DBG_PKT_MON_STOP(dhdp);
 		}
+#endif /* DHD_PKT_MON_DUAL_STA */
 #endif /* DBG_PKT_MON */
 		/*
 		* Cancel ongoing scan to sync up with sme state machine of cfg80211.
@@ -10092,6 +10104,14 @@
 		}
 	}
 #endif /* CONFIG_SILENT_ROAM */
+
+#ifdef APF
+	if (suspend) {
+		dhd_dev_apf_enable_filter(dev);
+	} else {
+		dhd_dev_apf_disable_filter(dev);
+	}
+#endif /* APF */
 	return BCME_OK;
 }
 
@@ -11046,6 +11066,7 @@
 #ifdef BCMDONGLEHOST
 	dhd_pub_t *dhd = (dhd_pub_t *)(cfg->pub);
 #endif /* BCMDONGLEHOST */
+	u8 gas_frame_type = WL_PUB_AF_STYPE_INVALID;
 
 	int32 requested_dwell = af_params->dwell_time;
 
@@ -11098,7 +11119,7 @@
 				cfg->need_wait_afrx = false;
 			}
 		} else if (wl_cfg80211_is_dpp_gas_action(
-				(void *)action_frame->data, action_frame->len)) {
+				(void *)action_frame->data, action_frame->len, &gas_frame_type)) {
 			config_af_params.max_tx_retry = WL_AF_TX_MAX_RETRY;
 			af_params->dwell_time = WL_MED_DWELL_TIME;
 			cfg->need_wait_afrx = true;
@@ -11107,6 +11128,9 @@
 			if (requested_dwell == 0) {
 				/* Use minimal dwell to take care of Ack */
 				af_params->dwell_time = WL_MIN_DWELL_TIME;
+				if (gas_frame_type == WL_PUB_AF_GAS_IRESP) {
+					af_params->dwell_time = WL_GAS_IRESP_DWELL_TIME;
+				}
 			}
 		} else if ((action == P2P_PUB_AF_ACTION) &&
 			(action_frame_len >= sizeof(wifi_p2p_pub_act_frame_t))) {
@@ -11192,10 +11216,8 @@
 	}
 #endif
 
-	/* if scan is ongoing, abort current scan. */
-	if (wl_get_drv_status_all(cfg, SCANNING)) {
-		wl_cfgscan_cancel_scan(cfg);
-	}
+	/* abort current scan/listen . */
+	wl_cfgscan_cancel_scan(cfg);
 
 	/* Abort P2P listen */
 	if (discover_cfgdev(cfgdev, cfg)) {
@@ -14378,10 +14400,12 @@
 	s32 ret = BCME_OK;
 	dhd_pub_t *dhdp = (dhd_pub_t *)(cfg->pub);
 	char cmd[WLC_IOCTL_SMLEN];
+	int ifidx;
 
 	/* Common Code for connect failure & link down */
 	BCM_REFERENCE(dhdp);
 	BCM_REFERENCE(cmd);
+	BCM_REFERENCE(ifidx);
 
 	WL_INFORM_MEM(("link down. connection state bit status: [%u:%u:%u:%u]\n",
 		wl_get_drv_status(cfg, CONNECTING, ndev),
@@ -14401,10 +14425,15 @@
 	wl_clr_drv_status(cfg, DISCONNECTING, ndev);
 
 #ifdef DBG_PKT_MON
+#ifdef DHD_PKT_MON_DUAL_STA
+	ifidx = dhd_net2idx(dhdp->info, ndev);
+	DHD_DBG_PKT_MON_STOP(dhdp, ifidx);
+#else
 	if (ndev == bcmcfg_to_prmry_ndev(cfg)) {
 		/* Stop packet monitor */
 		DHD_DBG_PKT_MON_STOP(dhdp);
 	}
+#endif /* DHD_PKT_MON_DUAL_STA */
 #endif /* DHD_PKT_MON */
 
 	/* Flush preserve logs */
@@ -15906,8 +15935,11 @@
 	dhd_pub_t *dhdp = (dhd_pub_t *)(cfg->pub);
 	u32 status = ntoh32(e->status);
 	u32 reason = ntoh32(e->reason);
+	int ifidx;
 
 	BCM_REFERENCE(sec);
+	BCM_REFERENCE(ifidx);
+
 	ndev = cfgdev_to_wlc_ndev(cfgdev, cfg);
 
 	if (status == WLC_E_STATUS_SUCCESS && reason != WLC_E_REASON_INITIAL_ASSOC) {
@@ -15929,10 +15961,16 @@
 #endif /* CONFIG_SILENT_ROAM */
 
 #ifdef DBG_PKT_MON
+#ifdef DHD_PKT_MON_DUAL_STA
+	ifidx = dhd_net2idx(dhdp->info, ndev);
+	DHD_DBG_PKT_MON_STOP(dhdp, ifidx);
+	DHD_DBG_PKT_MON_START(dhdp, ifidx);
+#else
 	if (ndev == bcmcfg_to_prmry_ndev(cfg)) {
 		DHD_DBG_PKT_MON_STOP(dhdp);
 		DHD_DBG_PKT_MON_START(dhdp);
 	}
+#endif /* DHD_PKT_MON_DUAL_STA */
 #endif /* DBG_PKT_MON */
 #ifdef DHD_LOSSLESS_ROAMING
 	sec = wl_read_prof(cfg, ndev, WL_PROF_SEC);
@@ -17142,9 +17180,11 @@
 	u8 bsscfgidx;
 	u32 mgmt_frame_len;
 	chanspec_t chspec;
+	u8 gas_frame_type = WL_PUB_AF_STYPE_INVALID;
 #if defined(BCMDONGLEHOST) && defined(TDLS_MSG_ONLY_WFD) && defined(WLTDLS)
 	dhd_pub_t *dhdp = (dhd_pub_t *)(cfg->pub);
 #endif /* BCMDONGLEHOST && TDLS_MSG_ONLY_WFD && WLTDLS */
+
 	if (ntoh32(e->datalen) < sizeof(wl_event_rx_frame_data_t)) {
 		WL_ERR(("wrong datalen:%d\n", ntoh32(e->datalen)));
 		return -EINVAL;
@@ -17247,7 +17287,7 @@
 					(&mgmt_frame[DOT11_MGMT_HDR_LEN]);
 			(void) p2p_act_frm;
 		} else if (wl_cfg80211_is_dpp_gas_action(&mgmt_frame[DOT11_MGMT_HDR_LEN],
-			mgmt_frame_len - DOT11_MGMT_HDR_LEN)) {
+			mgmt_frame_len - DOT11_MGMT_HDR_LEN, &gas_frame_type)) {
 			wl_clr_drv_status(cfg, WAITING_NEXT_ACT_FRM, ndev);
 
 			/* Stop waiting for next AF. */
@@ -26027,6 +26067,10 @@
 			return "DPP_AUTH_RESP";
 		case DPP_AUTH_CONF:
 			return "DPP_AUTH_CONF";
+		case DPP_CONFIGURATION_RESULT:
+			return "DPP_CONFIGURATION_RESULT";
+		case DPP_CONFIGURATION_STATUS_RESULT:
+			return "DPP_CONFIGURATION_STATUS_RESULT";
 		default:
 			return "Unkown DPP frame";
 	}
@@ -26068,7 +26112,7 @@
 	return false;
 }
 
-bool wl_cfg80211_is_dpp_gas_action(void *frame, u32 frame_len)
+bool wl_cfg80211_is_dpp_gas_action(void *frame, u32 frame_len, u8 *gas_frame_type)
 {
 	wl_dpp_gas_af_t *act_frm = (wl_dpp_gas_af_t *)frame;
 	u32 len;
@@ -26084,10 +26128,12 @@
 		ie = (bcm_tlv_t *)act_frm->query_data;
 		/* We are interested only in MNG ADV ID. Skip any other id. */
 		ie = bcm_parse_tlvs(ie, len, DOT11_MNG_ADVERTISEMENT_ID);
+		*gas_frame_type = WL_PUB_AF_GAS_IREQ;
 	} else if (act_frm->action == WL_PUB_AF_GAS_IRESP) {
 		ie = (bcm_tlv_t *)&act_frm->query_data[WL_GAS_RESP_OFFSET];
 		/* We are interested only in MNG ADV ID. Skip any other id. */
 		ie = bcm_parse_tlvs(ie, len, DOT11_MNG_ADVERTISEMENT_ID);
+		*gas_frame_type = WL_PUB_AF_GAS_IRESP;
 	} else {
 		return false;
 	}
diff --git a/wl_cfg80211.h b/wl_cfg80211.h
index f8ea094..b6f56bf 100644
--- a/wl_cfg80211.h
+++ b/wl_cfg80211.h
@@ -1,7 +1,7 @@
 /*
  * Linux cfg80211 driver
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -735,44 +735,45 @@
  * It exceed the original 1024 limitation
  * so change WL_EXTRA_LEN_MAX to 2048
  */
-#define WL_IOCTL_LEN_MAX        2048
-#define WL_EXTRA_BUF_MAX        2048
-#define WL_SCAN_ERSULTS_LAST    (WL_SCAN_RESULTS_NO_MEM+1)
-#define WL_AP_MAX			    256
-#define WL_FILE_NAME_MAX        256
-#define WL_DEFAULT_DWELL_TIME   200
-#define WL_MED_DWELL_TIME       400
-#define WL_MIN_DWELL_TIME       100
-#define WL_LONG_DWELL_TIME      1000
+#define WL_IOCTL_LEN_MAX			2048u
+#define WL_EXTRA_BUF_MAX			2048u
+#define WL_SCAN_ERSULTS_LAST			(WL_SCAN_RESULTS_NO_MEM+1)
+#define WL_AP_MAX				256u
+#define WL_FILE_NAME_MAX			256u
+#define WL_DEFAULT_DWELL_TIME			200u
+#define WL_MED_DWELL_TIME			400u
+#define WL_MIN_DWELL_TIME			100u
+#define WL_GAS_IRESP_DWELL_TIME			200u
+#define WL_LONG_DWELL_TIME			1000u
 #ifdef WL_MLO
-#define IFACE_MAX_CNT           7
+#define IFACE_MAX_CNT				7u
 #else
-#define IFACE_MAX_CNT           5
+#define IFACE_MAX_CNT				5u
 #endif /* WL_MLO */
-#define WL_SCAN_CONNECT_DWELL_TIME_MS		100
-#define WL_SCAN_JOIN_PROBE_INTERVAL_MS		20
-#define WL_SCAN_JOIN_ACTIVE_DWELL_TIME_MS	320
-#define WL_BCAST_SCAN_JOIN_ACTIVE_DWELL_TIME_MS	80
-#define WL_SCAN_JOIN_PASSIVE_DWELL_TIME_MS	400
-#define WL_AF_TX_MAX_RETRY	5
-#define WL_AF_TX_MIN_RETRY	3
+#define WL_SCAN_CONNECT_DWELL_TIME_MS		100u
+#define WL_SCAN_JOIN_PROBE_INTERVAL_MS		20u
+#define WL_SCAN_JOIN_ACTIVE_DWELL_TIME_MS	320u
+#define WL_BCAST_SCAN_JOIN_ACTIVE_DWELL_TIME_MS	80u
+#define WL_SCAN_JOIN_PASSIVE_DWELL_TIME_MS	400u
+#define WL_AF_TX_MAX_RETRY			5u
+#define WL_AF_TX_MIN_RETRY			3u
 
-#define WL_AF_SEARCH_TIME_MAX		450
-#define WL_AF_TX_EXTRA_TIME_MAX		200
+#define WL_AF_SEARCH_TIME_MAX			450u
+#define WL_AF_TX_EXTRA_TIME_MAX			200u
 
-#define WL_SCAN_TIMER_INTERVAL_MS	10000 /* Scan timeout */
+#define WL_SCAN_TIMER_INTERVAL_MS		10000u /* Scan timeout */
 
 /* For devices in non-rsdb mode , need to add 2G scan time also */
 #define WL_SCAN_TIMER_INTERVAL_MS_NON_RSDB	2000u
-#define WL_RSDB_MODE_MIMO	0
-#define WL_RSDB_MODE_RSDB	1u
+#define WL_RSDB_MODE_MIMO			0u
+#define WL_RSDB_MODE_RSDB			1u
 
 #ifdef WL_NAN
-#define WL_SCAN_TIMER_INTERVAL_MS_NAN	15000 /* Scan timeout */
+#define WL_SCAN_TIMER_INTERVAL_MS_NAN		15000u /* Scan timeout */
 #endif /* WL_NAN */
 #ifdef WL_6G_BAND
 /* additional scan timeout for 6GHz, 6000msec */
-#define WL_SCAN_TIMER_INTERVAL_MS_6G	6000
+#define WL_SCAN_TIMER_INTERVAL_MS_6G		6000u
 
 #define CHSPEC_TO_WLC_BAND(chspec) (CHSPEC_IS2G(chspec) ? WLC_BAND_2G : CHSPEC_IS5G(chspec) ? \
 	WLC_BAND_5G : WLC_BAND_6G)
@@ -947,16 +948,17 @@
 
 /* DPP Public Action Frame types */
 enum wl_dpp_ftype {
-    DPP_AUTH_REQ = 0,
-    DPP_AUTH_RESP = 1,
-    DPP_AUTH_CONF = 2,
-    DPP_PEER_DISC_REQ = 5,
-    DPP_PEER_DISC_RESP = 6,
-    DPP_PKEX_EX_REQ = 7,
-    DPP_PKEX_EX_RESP = 8,
-    DPP_PKEX_COMMIT_REVEAL_REQ = 9,
-    DPP_PKEX_COMMIT_REVEAL_RESP = 10,
-    DPP_CONFIGURATION_RESULT = 11
+    DPP_AUTH_REQ			= 0,
+    DPP_AUTH_RESP			= 1,
+    DPP_AUTH_CONF			= 2,
+    DPP_PEER_DISC_REQ			= 5,
+    DPP_PEER_DISC_RESP			= 6,
+    DPP_PKEX_EX_REQ			= 7,
+    DPP_PKEX_EX_RESP			= 8,
+    DPP_PKEX_COMMIT_REVEAL_REQ		= 9,
+    DPP_PKEX_COMMIT_REVEAL_RESP		= 10,
+    DPP_CONFIGURATION_RESULT		= 11,
+    DPP_CONFIGURATION_STATUS_RESULT	= 12
 };
 
 /* DPP Public Action Frame */
@@ -3757,7 +3759,7 @@
 #endif /* !OEM_ANDROID */
 bool wl_cfg80211_is_dpp_frame(void *frame, u32 frame_len);
 const char *get_dpp_pa_ftype(enum wl_dpp_ftype ftype);
-bool wl_cfg80211_is_dpp_gas_action(void *frame, u32 frame_len);
+bool wl_cfg80211_is_dpp_gas_action(void *frame, u32 frame_len, u8 *frame_type);
 extern bool wl_cfg80211_find_gas_subtype(u8 subtype, u16 adv_id, u8* data, s32 len);
 #ifdef ESCAN_CHANNEL_CACHE
 extern void update_roam_cache(struct bcm_cfg80211 *cfg, int ioctl_ver);
diff --git a/wl_cfg_btcoex.c b/wl_cfg_btcoex.c
index 7179f72..202bda9 100644
--- a/wl_cfg_btcoex.c
+++ b/wl_cfg_btcoex.c
@@ -1,7 +1,7 @@
 /*
  * Linux cfg80211 driver - Dongle Host Driver (DHD) related
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wl_cfg_cellavoid.c b/wl_cfg_cellavoid.c
index 445eaee..0130f58 100644
--- a/wl_cfg_cellavoid.c
+++ b/wl_cfg_cellavoid.c
@@ -1,7 +1,7 @@
 /*
  * Cellular channel avoidance implementation
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wl_cfg_cellavoid.h b/wl_cfg_cellavoid.h
index 5f0dbe8..c238085 100644
--- a/wl_cfg_cellavoid.h
+++ b/wl_cfg_cellavoid.h
@@ -1,7 +1,7 @@
 /*
  * Cellular channel avoidance implementation
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wl_cfgnan.c b/wl_cfgnan.c
index 47145dc..7b16468 100644
--- a/wl_cfgnan.c
+++ b/wl_cfgnan.c
@@ -1,7 +1,7 @@
 /*
  * Neighbor Awareness Networking
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wl_cfgnan.h b/wl_cfgnan.h
index 96c5c82..45c3b0b 100644
--- a/wl_cfgnan.h
+++ b/wl_cfgnan.h
@@ -1,7 +1,7 @@
 /*
  * Neighbor Awareness Networking
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wl_cfgp2p.c b/wl_cfgp2p.c
index 9b4b15a..bfa70e8 100644
--- a/wl_cfgp2p.c
+++ b/wl_cfgp2p.c
@@ -1,7 +1,7 @@
 /*
  * Linux cfgp2p driver
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -178,6 +178,7 @@
 bool wl_cfgp2p_is_gas_action(void *frame, u32 frame_len)
 {
 	wifi_p2psd_gas_pub_act_frame_t *sd_act_frm;
+	u8 gas_frame_type = WL_PUB_AF_STYPE_INVALID;
 
 	if (frame == NULL)
 		return false;
@@ -188,7 +189,7 @@
 	if (sd_act_frm->category != P2PSD_ACTION_CATEGORY)
 		return false;
 
-	if (wl_cfg80211_is_dpp_gas_action(frame, frame_len)) {
+	if (wl_cfg80211_is_dpp_gas_action(frame, frame_len, &gas_frame_type)) {
 		return true;
 	}
 
diff --git a/wl_cfgp2p.h b/wl_cfgp2p.h
index 86807bf..4788ad0 100644
--- a/wl_cfgp2p.h
+++ b/wl_cfgp2p.h
@@ -1,7 +1,7 @@
 /*
  * Linux cfgp2p driver
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wl_cfgscan.c b/wl_cfgscan.c
index 6b32834..1fae40c 100644
--- a/wl_cfgscan.c
+++ b/wl_cfgscan.c
@@ -1,7 +1,7 @@
 /*
  * Linux cfg80211 driver scan related code
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -2932,6 +2932,13 @@
 		}
 	}
 
+	if (cfg->loc.in_progress) {
+		/* listen on channel uses passive scan */
+		wl_cfgscan_scan_abort(cfg);
+		WL_INFORM_MEM(("listen on channel aborted! \n"));
+		/* fall through to check scan states */
+	}
+
 	if (!cfg->scan_request && !cfg->sched_scan_req) {
 		/* No scans in progress */
 		WL_INFORM_MEM(("No scan in progress\n"));
diff --git a/wl_cfgscan.h b/wl_cfgscan.h
index 6eccbff..baf1754 100644
--- a/wl_cfgscan.h
+++ b/wl_cfgscan.h
@@ -1,7 +1,7 @@
 /*
  * Header for Linux cfg80211 scan
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wl_cfgvendor.c b/wl_cfgvendor.c
index 943be3c..872a9b6 100644
--- a/wl_cfgvendor.c
+++ b/wl_cfgvendor.c
@@ -1,7 +1,7 @@
 /*
  * Linux cfg80211 Vendor Extension Code
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -9992,7 +9992,11 @@
 	dhd_pub_t *dhd_pub = cfg->pub;
 	int ret;
 
+#ifdef DHD_PKT_MON_DUAL_STA
+	ret = dhd_os_dbg_attach_pkt_monitor_dev(dhd_pub, wdev_to_ndev(wdev));
+#else
 	ret = dhd_os_dbg_attach_pkt_monitor(dhd_pub);
+#endif /* DHD_PKT_MON_DUAL_STA */
 	if (unlikely(ret)) {
 		WL_ERR(("failed to start pkt fate monitoring, ret=%d", ret));
 	}
@@ -10000,11 +10004,21 @@
 	return ret;
 }
 
+#ifdef DHD_PKT_MON_DUAL_STA
+typedef int (*dbg_mon_get_pkts_t) (dhd_pub_t *dhdp, int ifidx,
+	void __user *user_buf, uint16 req_count, uint16 *resp_count);
+#else
 typedef int (*dbg_mon_get_pkts_t) (dhd_pub_t *dhdp, void __user *user_buf,
 	uint16 req_count, uint16 *resp_count);
+#endif /* DHD_PKT_MON_DUAL_STA */
 
+#ifdef DHD_PKT_MON_DUAL_STA
+static int __wl_cfgvendor_dbg_get_pkt_fates(struct wiphy *wiphy, struct wireless_dev *wdev,
+	const void *data, int len, dbg_mon_get_pkts_t dbg_mon_get_pkts)
+#else
 static int __wl_cfgvendor_dbg_get_pkt_fates(struct wiphy *wiphy,
 	const void *data, int len, dbg_mon_get_pkts_t dbg_mon_get_pkts)
+#endif /* DHD_PKT_MON_DUAL_STA */
 {
 	struct bcm_cfg80211 *cfg = wiphy_priv(wiphy);
 	dhd_pub_t *dhd_pub = cfg->pub;
@@ -10013,6 +10027,23 @@
 	void __user *user_buf = NULL;
 	uint16 req_count = 0, resp_count = 0;
 	int ret, tmp, type, mem_needed;
+#ifdef DHD_PKT_MON_DUAL_STA
+	struct net_device *ndev = wdev_to_ndev(wdev);
+	int ifidx;
+
+	if (!ndev) {
+		WL_ERR(("ndev is null\n"));
+		ret = -EINVAL;
+		goto exit;
+	}
+
+	ifidx = dhd_net2idx(dhd_pub->info, ndev);
+	if (ifidx == DHD_BAD_IF || ifidx >= PKT_MON_IF_MAX) {
+		WL_ERR(("invalid ifidx:%d\n", ifidx));
+		ret = -EINVAL;
+		goto exit;
+	}
+#endif /* DHD_PKT_MON_DUAL_STA */
 
 	nla_for_each_attr(iter, data, len, tmp) {
 		type = nla_type(iter);
@@ -10037,7 +10068,11 @@
 		goto exit;
 	}
 
+#ifdef DHD_PKT_MON_DUAL_STA
+	ret = dbg_mon_get_pkts(dhd_pub, ifidx, user_buf, req_count, &resp_count);
+#else
 	ret = dbg_mon_get_pkts(dhd_pub, user_buf, req_count, &resp_count);
+#endif /* DHD_PKT_MON_DUAL_STA */
 	if (unlikely(ret)) {
 		WL_ERR(("failed to get packets, ret:%d \n", ret));
 		goto exit;
@@ -10076,8 +10111,13 @@
 {
 	int ret;
 
+#ifdef DHD_PKT_MON_DUAL_STA
+	ret = __wl_cfgvendor_dbg_get_pkt_fates(wiphy, wdev, data, len,
+			dhd_os_dbg_monitor_get_tx_pkts);
+#else
 	ret = __wl_cfgvendor_dbg_get_pkt_fates(wiphy, data, len,
 			dhd_os_dbg_monitor_get_tx_pkts);
+#endif /* DHD_PKT_MON_DUAL_STA */
 	if (unlikely(ret)) {
 		WL_ERR(("failed to get tx packets, ret:%d \n", ret));
 	}
@@ -10090,8 +10130,13 @@
 {
 	int ret;
 
+#ifdef DHD_PKT_MON_DUAL_STA
+	ret = __wl_cfgvendor_dbg_get_pkt_fates(wiphy, wdev, data, len,
+			dhd_os_dbg_monitor_get_rx_pkts);
+#else
 	ret = __wl_cfgvendor_dbg_get_pkt_fates(wiphy, data, len,
 			dhd_os_dbg_monitor_get_rx_pkts);
+#endif /* DHD_PKT_MON_DUAL_STA */
 	if (unlikely(ret)) {
 		WL_ERR(("failed to get rx packets, ret:%d \n", ret));
 	}
diff --git a/wl_cfgvendor.h b/wl_cfgvendor.h
index ab95783..61ffaac 100644
--- a/wl_cfgvendor.h
+++ b/wl_cfgvendor.h
@@ -1,7 +1,7 @@
 /*
  * Linux cfg80211 Vendor Extension Code
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wl_cfgvif.c b/wl_cfgvif.c
index 7bca124..f075167 100644
--- a/wl_cfgvif.c
+++ b/wl_cfgvif.c
@@ -1,7 +1,7 @@
 /*
  * Wifi Virtual Interface implementaion
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wl_cfgvif.h b/wl_cfgvif.h
index fee676f..60eaa0d 100644
--- a/wl_cfgvif.h
+++ b/wl_cfgvif.h
@@ -1,7 +1,7 @@
 /*
  * Wifi Virtual Interface implementaion
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wl_linux_mon.c b/wl_linux_mon.c
index 1c3b2e5..641bbc4 100644
--- a/wl_linux_mon.c
+++ b/wl_linux_mon.c
@@ -1,7 +1,7 @@
 /*
  * Broadcom Dongle Host Driver (DHD), Linux monitor network interface
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wl_roam.c b/wl_roam.c
index 84ddbd1..42d1a4a 100644
--- a/wl_roam.c
+++ b/wl_roam.c
@@ -1,7 +1,7 @@
 /*
  * Linux roam cache
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
diff --git a/wldev_common.c b/wldev_common.c
index 572c252..b234755 100644
--- a/wldev_common.c
+++ b/wldev_common.c
@@ -1,7 +1,7 @@
 /*
  * Common function shared by Linux WEXT, cfg80211 and p2p drivers
  *
- * Copyright (C) 2023, Broadcom.
+ * Copyright (C) 2024, Broadcom.
  *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
@@ -817,7 +817,6 @@
 
 extern chanspec_t
 wl_chspec_driver_to_host(chanspec_t chanspec);
-#define WL_EXTRA_BUF_MAX 2048
 int wldev_get_mode(
 	struct net_device *dev, uint8 *cap, uint8 caplen)
 {