diff --git a/repos/dde_linux/src/app/wireguard/config.xsd b/repos/dde_linux/src/app/wireguard/config.xsd
index 2492b9d6c7..d2b7b15cb5 100644
--- a/repos/dde_linux/src/app/wireguard/config.xsd
+++ b/repos/dde_linux/src/app/wireguard/config.xsd
@@ -19,6 +19,7 @@
 
 			</xs:choice>
 			<xs:attribute name="private_key" type="xs:string"/>
+			<xs:attribute name="ld_verbose"  type="Boolean" />
 			<xs:attribute name="listen_port" type="Port" />
 			<xs:attribute name="use_rtc" type="Boolean" />
 		</xs:complexType>
diff --git a/repos/dde_linux/src/app/wireguard/dep.list b/repos/dde_linux/src/app/wireguard/dep.list
index 3a3d1a3864..daae176fef 100644
--- a/repos/dde_linux/src/app/wireguard/dep.list
+++ b/repos/dde_linux/src/app/wireguard/dep.list
@@ -252,6 +252,7 @@ arch/x86/include/uapi/asm/stat.h
 arch/x86/include/uapi/asm/swab.h
 arch/x86/include/uapi/asm/unistd.h
 arch/x86/include/uapi/asm/vsyscall.h
+crypto/hash.h
 crypto/internal.h
 drivers/net/wireguard/allowedips.h
 drivers/net/wireguard/cookie.h
@@ -554,7 +555,6 @@ include/linux/instrumentation.h
 include/linux/instrumented.h
 include/linux/interrupt.h
 include/linux/io.h
-include/linux/ioasid.h
 include/linux/iocontext.h
 include/linux/iopoll.h
 include/linux/ioport.h
@@ -1007,7 +1007,6 @@ include/net/netns/xdp.h
 include/net/netns/xfrm.h
 include/net/netprio_cgroup.h
 include/net/nexthop.h
-include/net/page_pool.h
 include/net/pptp.h
 include/net/protocol.h
 include/net/request_sock.h
diff --git a/repos/dde_linux/src/app/wireguard/dummies.c b/repos/dde_linux/src/app/wireguard/dummies.c
index e8de9969e2..4553d998c5 100644
--- a/repos/dde_linux/src/app/wireguard/dummies.c
+++ b/repos/dde_linux/src/app/wireguard/dummies.c
@@ -18,6 +18,20 @@
 DEFINE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_sibling_map);
 EXPORT_PER_CPU_SYMBOL(cpu_sibling_map);
 
+DEFINE_PER_CPU(unsigned long, cpu_scale);
+
+#ifdef __aarch64__
+DECLARE_BITMAP(system_cpucaps, ARM64_NCAPS);
+EXPORT_SYMBOL(system_cpucaps);
+#endif
+
+
+/* mm/debug.c */
+const struct trace_print_flags pagetype_names[] = {
+	{0, NULL}
+};
+
+
 extern int __init buses_init(void);
 int __init buses_init(void)
 {
@@ -194,6 +208,47 @@ unsigned long __must_check __arch_copy_to_user(void __user *to, const void *from
 }
 
 
+/* kernel/sched/cpudeadline.h */
+struct cpudl;
+int  cpudl_init(struct cpudl *cp)
+{
+	lx_emul_trace_and_stop(__func__);
+	return -1;
+}
+
+
+void cpudl_cleanup(struct cpudl *cp)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+/* kernel/sched/sched.h */
+bool sched_smp_initialized = true;
+
+struct dl_bw;
+void init_dl_bw(struct dl_bw *dl_b)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+struct irq_work;
+extern void rto_push_irq_work_func(struct irq_work *work);
+void rto_push_irq_work_func(struct irq_work *work)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+/* include/linux/sched/topology.h */
+int arch_asym_cpu_priority(int cpu)
+{
+	lx_emul_trace_and_stop(__func__);
+	return 0;
+}
+
+
 #ifdef CONFIG_ARM64
 extern void flush_dcache_page(struct page * page);
 void flush_dcache_page(struct page * page)
@@ -218,3 +273,14 @@ int get_option(char ** str,int * pint)
 {
 	lx_emul_trace_and_stop(__func__);
 }
+
+
+#ifdef CONFIG_SWIOTLB
+#include <linux/swiotlb.h>
+
+bool is_swiotlb_allocated(void)
+{
+	lx_emul_trace(__func__);
+	return false;
+}
+#endif
diff --git a/repos/dde_linux/src/app/wireguard/genode_c_api/wireguard.c b/repos/dde_linux/src/app/wireguard/genode_c_api/wireguard.c
index 7c80c4d8e8..04930ec64f 100644
--- a/repos/dde_linux/src/app/wireguard/genode_c_api/wireguard.c
+++ b/repos/dde_linux/src/app/wireguard/genode_c_api/wireguard.c
@@ -501,6 +501,7 @@ void lx_user_init(void)
 		&_genode_wg_extack);
 
 	/* create user task, which handles network traffic and configuration changes */
-	pid = kernel_thread(user_task_function, NULL, CLONE_FS | CLONE_FILES);
+	pid = kernel_thread(user_task_function, NULL, "user_task",
+	                    CLONE_FS | CLONE_FILES);
 	_user_task_struct_ptr = find_task_by_pid_ns(pid, NULL);
 }
diff --git a/repos/dde_linux/src/app/wireguard/spec/arm_v8/generated_dummies.c b/repos/dde_linux/src/app/wireguard/spec/arm_v8/generated_dummies.c
index 9d17eaa8f0..6e383c8642 100644
--- a/repos/dde_linux/src/app/wireguard/spec/arm_v8/generated_dummies.c
+++ b/repos/dde_linux/src/app/wireguard/spec/arm_v8/generated_dummies.c
@@ -1,7 +1,7 @@
 /*
  * \brief  Dummy definitions of Linux Kernel functions
  * \author Automatically generated file - do no edit
- * \date   2024-07-16
+ * \date   2024-07-30
  */
 
 #include <lx_emul.h>
@@ -73,7 +73,7 @@ void __put_task_struct(struct task_struct * tsk)
 }
 
 
-#include <linux/netdevice.h>
+#include <net/gso.h>
 
 struct sk_buff * __skb_gso_segment(struct sk_buff * skb,netdev_features_t features,bool tx_path)
 {
@@ -81,6 +81,13 @@ struct sk_buff * __skb_gso_segment(struct sk_buff * skb,netdev_features_t featur
 }
 
 
+extern noinline unsigned int _parse_integer(const char * s,unsigned int base,unsigned long long * p);
+noinline unsigned int _parse_integer(const char * s,unsigned int base,unsigned long long * p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
 #include <linux/printk.h>
 
 int _printk_deferred(const char * fmt,...)
@@ -94,9 +101,17 @@ int _printk_deferred(const char * fmt,...)
 atomic_long_t _totalram_pages;
 
 
-#include <crypto/internal/hash.h>
+#include <linux/cpumask.h>
 
-int crypto_register_shash(struct shash_alg * alg)
+unsigned int cpumask_any_and_distribute(const struct cpumask * src1p,const struct cpumask * src2p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/topology.h>
+
+bool cpus_share_cache(int this_cpu,int that_cpu)
 {
 	lx_emul_trace_and_stop(__func__);
 }
@@ -110,14 +125,6 @@ noinstr void ct_irq_enter(void)
 }
 
 
-#include <linux/context_tracking_irq.h>
-
-void ct_irq_enter_irqson(void)
-{
-	lx_emul_trace_and_stop(__func__);
-}
-
-
 #include <linux/context_tracking_irq.h>
 
 noinstr void ct_irq_exit(void)
@@ -126,14 +133,6 @@ noinstr void ct_irq_exit(void)
 }
 
 
-#include <linux/context_tracking_irq.h>
-
-void ct_irq_exit_irqson(void)
-{
-	lx_emul_trace_and_stop(__func__);
-}
-
-
 #include <linux/netdevice.h>
 
 struct net_device * dev_get_by_index(struct net * net,int ifindex)
@@ -251,12 +250,12 @@ void handle_fasteoi_irq(struct irq_desc * desc)
 }
 
 
-#include <linux/kernel.h>
+#include <linux/hex.h>
 
 const char hex_asc[] = {};
 
 
-#include <linux/kernel.h>
+#include <linux/hex.h>
 
 const char hex_asc_upper[] = {};
 
@@ -383,12 +382,9 @@ noinline int kstrtoll(const char * s,unsigned int base,long long * res)
 }
 
 
-#include <linux/kernel.h>
+#include <linux/delay.h>
 
-char * kvasprintf(gfp_t gfp,const char * fmt,va_list ap)
-{
-	lx_emul_trace_and_stop(__func__);
-}
+unsigned long loops_per_jiffy;
 
 
 #include <linux/delay.h>
@@ -473,6 +469,14 @@ void page_frag_free(void * addr)
 }
 
 
+#include <linux/panic.h>
+
+void panic(const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
 #include <linux/percpu_counter.h>
 
 void percpu_counter_add_batch(struct percpu_counter * fbc,s64 amount,s32 batch)
@@ -481,6 +485,36 @@ void percpu_counter_add_batch(struct percpu_counter * fbc,s64 amount,s32 batch)
 }
 
 
+extern void raw_spin_rq_lock_nested(struct rq * rq,int subclass);
+void raw_spin_rq_lock_nested(struct rq * rq,int subclass)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void raw_spin_rq_unlock(struct rq * rq);
+void raw_spin_rq_unlock(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcuref.h>
+
+bool rcuref_get_slowpath(rcuref_t * ref)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcuref.h>
+
+bool rcuref_put_slowpath(rcuref_t * ref)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
 #include <net/rtnetlink.h>
 
 void rtnl_link_unregister(struct rtnl_link_ops * ops)
@@ -489,6 +523,20 @@ void rtnl_link_unregister(struct rtnl_link_ops * ops)
 }
 
 
+extern void set_rq_offline(struct rq * rq);
+void set_rq_offline(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void set_rq_online(struct rq * rq);
+void set_rq_online(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
 #include <net/sock.h>
 
 void sk_clear_memalloc(struct sock * sk)
@@ -534,14 +582,6 @@ void sock_edemux(struct sk_buff * skb)
 bool static_key_initialized;
 
 
-#include <linux/string_helpers.h>
-
-int string_escape_mem(const char * src,size_t isz,char * dst,size_t osz,unsigned int flags,const char * only)
-{
-	lx_emul_trace_and_stop(__func__);
-}
-
-
 #include <linux/clockchips.h>
 
 void tick_broadcast(const struct cpumask * mask)
@@ -590,6 +630,13 @@ void unregister_pernet_device(struct pernet_operations * ops)
 }
 
 
+extern void update_group_capacity(struct sched_domain * sd,int cpu);
+void update_group_capacity(struct sched_domain * sd,int cpu)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
 #include <linux/uuid.h>
 
 const u8 uuid_index[16] = {};
@@ -602,10 +649,3 @@ void wake_q_add_safe(struct wake_q_head * head,struct task_struct * task)
 	lx_emul_trace_and_stop(__func__);
 }
 
-
-#include <linux/panic.h>
-
-void panic(const char *fmt, ...)
-{
-	lx_emul_trace_and_stop(__func__);
-}
diff --git a/repos/dde_linux/src/app/wireguard/spec/arm_v8/source.list b/repos/dde_linux/src/app/wireguard/spec/arm_v8/source.list
index 275edb5995..1f8403d868 100644
--- a/repos/dde_linux/src/app/wireguard/spec/arm_v8/source.list
+++ b/repos/dde_linux/src/app/wireguard/spec/arm_v8/source.list
@@ -11,6 +11,7 @@ arch/arm64/lib/strlen.S
 crypto/algapi.c
 crypto/api.c
 crypto/scatterwalk.c
+crypto/shash.c
 crypto/skcipher.c
 drivers/net/wireguard/allowedips.c
 drivers/net/wireguard/cookie.c
@@ -65,12 +66,14 @@ lib/find_bit.c
 lib/hweight.c
 lib/idr.c
 lib/math/reciprocal_div.c
+lib/kasprintf.c
 lib/nlattr.c
 lib/radix-tree.c
 lib/refcount.c
 lib/scatterlist.c
 lib/siphash.c
 lib/string.c
+lib/string_helpers.c
 lib/vsprintf.c
 lib/xarray.c
 mm/memblock.c
diff --git a/repos/dde_linux/src/app/wireguard/spec/x86_64/generated_dummies.c b/repos/dde_linux/src/app/wireguard/spec/x86_64/generated_dummies.c
index bc6b87da8e..0863fddd61 100644
--- a/repos/dde_linux/src/app/wireguard/spec/x86_64/generated_dummies.c
+++ b/repos/dde_linux/src/app/wireguard/spec/x86_64/generated_dummies.c
@@ -1,7 +1,7 @@
 /*
  * \brief  Dummy definitions of Linux Kernel functions
  * \author Automatically generated file - do no edit
- * \date   2024-07-30
+ * \date   2024-08-14
  */
 
 #include <lx_emul.h>
@@ -44,7 +44,7 @@ void __put_task_struct(struct task_struct * tsk)
 }
 
 
-#include <linux/netdevice.h>
+#include <net/gso.h>
 
 struct sk_buff * __skb_gso_segment(struct sk_buff * skb,netdev_features_t features,bool tx_path)
 {
@@ -109,6 +109,22 @@ const struct cpumask * cpu_clustergroup_mask(int cpu)
 }
 
 
+#include <linux/cpumask.h>
+
+unsigned int cpumask_any_and_distribute(const struct cpumask * src1p,const struct cpumask * src2p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/topology.h>
+
+bool cpus_share_cache(int this_cpu,int that_cpu)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
 #include <linux/context_tracking_irq.h>
 
 noinstr void ct_irq_enter(void)
@@ -329,12 +345,9 @@ noinline int kstrtoll(const char * s,unsigned int base,long long * res)
 }
 
 
-#include <linux/kernel.h>
+#include <linux/delay.h>
 
-char * kvasprintf(gfp_t gfp,const char * fmt,va_list ap)
-{
-	lx_emul_trace_and_stop(__func__);
-}
+unsigned long loops_per_jiffy;
 
 
 #include <linux/preempt.h>
@@ -369,6 +382,14 @@ void page_frag_free(void * addr)
 }
 
 
+#include <linux/panic.h>
+
+void panic(const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
 #include <linux/percpu_counter.h>
 
 void percpu_counter_add_batch(struct percpu_counter * fbc,s64 amount,s32 batch)
@@ -377,6 +398,36 @@ void percpu_counter_add_batch(struct percpu_counter * fbc,s64 amount,s32 batch)
 }
 
 
+extern void raw_spin_rq_lock_nested(struct rq * rq,int subclass);
+void raw_spin_rq_lock_nested(struct rq * rq,int subclass)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void raw_spin_rq_unlock(struct rq * rq);
+void raw_spin_rq_unlock(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcuref.h>
+
+bool rcuref_get_slowpath(rcuref_t * ref)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcuref.h>
+
+bool rcuref_put_slowpath(rcuref_t * ref)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
 #include <net/rtnetlink.h>
 
 void rtnl_link_unregister(struct rtnl_link_ops * ops)
@@ -385,6 +436,25 @@ void rtnl_link_unregister(struct rtnl_link_ops * ops)
 }
 
 
+extern void set_rq_offline(struct rq * rq);
+void set_rq_offline(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void set_rq_online(struct rq * rq);
+void set_rq_online(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/smp.h>
+
+unsigned int setup_max_cpus;
+
+
 #include <net/sock.h>
 
 void sk_clear_memalloc(struct sock * sk)
@@ -478,6 +548,13 @@ void unregister_pernet_device(struct pernet_operations * ops)
 }
 
 
+extern void update_group_capacity(struct sched_domain * sd,int cpu);
+void update_group_capacity(struct sched_domain * sd,int cpu)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
 #include <linux/uuid.h>
 
 const u8 uuid_index[16] = {};
@@ -490,10 +567,3 @@ void wake_q_add_safe(struct wake_q_head * head,struct task_struct * task)
 	lx_emul_trace_and_stop(__func__);
 }
 
-
-#include <linux/panic.h>
-
-void panic(const char *fmt, ...)
-{
-	lx_emul_trace_and_stop(__func__);
-}
diff --git a/repos/dde_linux/src/app/wireguard/spec/x86_64/source.list b/repos/dde_linux/src/app/wireguard/spec/x86_64/source.list
index 48d6b100c6..9b963bdb1c 100644
--- a/repos/dde_linux/src/app/wireguard/spec/x86_64/source.list
+++ b/repos/dde_linux/src/app/wireguard/spec/x86_64/source.list
@@ -14,6 +14,7 @@ arch/x86/lib/memset_64.S
 crypto/algapi.c
 crypto/api.c
 crypto/scatterwalk.c
+crypto/shash.c
 drivers/net/wireguard/allowedips.c
 drivers/net/wireguard/cookie.c
 drivers/net/wireguard/device.c
@@ -67,6 +68,7 @@ lib/find_bit.c
 lib/hexdump.c
 lib/idr.c
 lib/math/reciprocal_div.c
+lib/kasprintf.c
 lib/nlattr.c
 lib/radix-tree.c
 lib/refcount.c