--- /dev/null
+Date: Tue, 29 Apr 2025 01:49:40 +0800
+Subject: [PATCH] fix usb_driver .shutdown callback
+
+Update API to fix build error on 6.12 kernel:
+
+/workspaces/openwrt/build_dir/target-x86_64_musl/linux-x86_64/rtl8812au-ct-2022.10.26~9b2b203a/os_dep/linux/usb_intf.c:393:17: error: 'struct usb_driver' has no member named 'drvwrap'
+ 393 | .usbdrv.drvwrap.driver.shutdown = rtw_dev_shutdown,
+ | ^~~~~~~
+/workspaces/openwrt/build_dir/target-x86_64_musl/linux-x86_64/rtl8812au-ct-2022.10.26~9b2b203a/os_dep/linux/usb_intf.c:393:43: error: initialization of 'const char *' from incompatible pointer type 'void (*)(struct device *)' [-Werror=incompatible-pointer-types]
+ 393 | .usbdrv.drvwrap.driver.shutdown = rtw_dev_shutdown,
+ | ^~~~~~~~~~~~~~~~
+
+Link: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.11.y&id=a5f81642a7228489292f842a106e33c558121e8b
+---
+ os_dep/linux/usb_intf.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+--- a/os_dep/linux/usb_intf.c
++++ b/os_dep/linux/usb_intf.c
+@@ -49,9 +49,14 @@ static int rtw_resume(struct usb_interfa
+ static int rtw_drv_init(struct usb_interface *pusb_intf,const struct usb_device_id *pdid);
+ static void rtw_dev_remove(struct usb_interface *pusb_intf);
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 11, 0))
++static void rtw_dev_shutdown(struct usb_interface *usb_intf)
++{
++#else
+ static void rtw_dev_shutdown(struct device *dev)
+ {
+ struct usb_interface *usb_intf = container_of(dev, struct usb_interface, dev);
++#endif
+ struct dvobj_priv *dvobj = NULL;
+ _adapter *adapter = NULL;
+ int i;
+@@ -389,7 +394,9 @@ struct rtw_usb_drv usb_drv = {
+ .usbdrv.supports_autosuspend = 1,
+ #endif
+
+-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19))
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 11, 0))
++ .usbdrv.shutdown = rtw_dev_shutdown,
++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19))
+ .usbdrv.drvwrap.driver.shutdown = rtw_dev_shutdown,
+ #else
+ .usbdrv.driver.shutdown = rtw_dev_shutdown,
--- /dev/null
+Date: Tue, 29 Apr 2025 00:21:50 +0800
+Subject: [PATCH] fix sprintf() overlaps destination object warning
+
+/workspaces/openwrt/build_dir/target-x86_64_musl/linux-x86_64/rtl8812au-ct-2022.10.26~9b2b203a/core/rtw_mp.c: In function 'mp_query_psd':
+/workspaces/openwrt/build_dir/target-x86_64_musl/linux-x86_64/rtl8812au-ct-2022.10.26~9b2b203a/core/rtw_mp.c:1874:17: error: 'sprintf' argument 3 overlaps destination object 'data' [-Werror=restrict]
+ 1874 | sprintf(data, "%s%x ", data, psd_data);
+ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/workspaces/openwrt/build_dir/target-x86_64_musl/linux-x86_64/rtl8812au-ct-2022.10.26~9b2b203a/core/rtw_mp.c:1839:41: note: destination object referenced by 'restrict'-qualified argument 1 was declared here
+ 1839 | u32 mp_query_psd(PADAPTER pAdapter, u8 *data)
+ | ~~~~^~~~
+
+---
+ core/rtw_mp.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/core/rtw_mp.c
++++ b/core/rtw_mp.c
+@@ -1871,7 +1871,7 @@ u32 mp_query_psd(PADAPTER pAdapter, u8 *
+ } else {
+ psd_data = rtw_GetPSDData(pAdapter, i);
+ }
+- sprintf(data, "%s%x ", data, psd_data);
++ sprintf(data + strlen(data), "%x ", psd_data);
+ i++;
+ }
+