--- /dev/null
+From 758dbc756aad429da11c569c0d067f7fd032bcf7 Mon Sep 17 00:00:00 2001
+From: Ricardo Ribalda <ribalda@chromium.org>
+Date: Tue, 21 Oct 2025 10:36:17 +0000
+Subject: media: uvcvideo: Use heuristic to find stream entity
+
+From: Ricardo Ribalda <ribalda@chromium.org>
+
+commit 758dbc756aad429da11c569c0d067f7fd032bcf7 upstream.
+
+Some devices, like the Grandstream GUV3100 webcam, have an invalid UVC
+descriptor where multiple entities share the same ID, this is invalid
+and makes it impossible to make a proper entity tree without heuristics.
+
+We have recently introduced a change in the way that we handle invalid
+entities that has caused a regression on broken devices.
+
+Implement a new heuristic to handle these devices properly.
+
+Reported-by: Angel4005 <ooara1337@gmail.com>
+Closes: https://lore.kernel.org/linux-media/CAOzBiVuS7ygUjjhCbyWg-KiNx+HFTYnqH5+GJhd6cYsNLT=DaA@mail.gmail.com/
+Fixes: 0e2ee70291e6 ("media: uvcvideo: Mark invalid entities with id UVC_INVALID_ENTITY_ID")
+Cc: stable@vger.kernel.org
+Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
+Reviewed-by: Hans de Goede <hansg@kernel.org>
+Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/media/usb/uvc/uvc_driver.c | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
+--- a/drivers/media/usb/uvc/uvc_driver.c
++++ b/drivers/media/usb/uvc/uvc_driver.c
+@@ -165,13 +165,26 @@ static struct uvc_entity *uvc_entity_by_
+
+ static struct uvc_streaming *uvc_stream_by_id(struct uvc_device *dev, int id)
+ {
+- struct uvc_streaming *stream;
++ struct uvc_streaming *stream, *last_stream;
++ unsigned int count = 0;
+
+ list_for_each_entry(stream, &dev->streams, list) {
++ count += 1;
++ last_stream = stream;
+ if (stream->header.bTerminalLink == id)
+ return stream;
+ }
+
++ /*
++ * If the streaming entity is referenced by an invalid ID, notify the
++ * user and use heuristics to guess the correct entity.
++ */
++ if (count == 1 && id == UVC_INVALID_ENTITY_ID) {
++ dev_warn(&dev->intf->dev,
++ "UVC non compliance: Invalid USB header. The streaming entity has an invalid ID, guessing the correct one.");
++ return last_stream;
++ }
++
+ return NULL;
+ }
+
--- /dev/null
+From a04ea57aae375bdda1cb57034d8bcbb351e1f973 Mon Sep 17 00:00:00 2001
+From: Jiawen Wu <jiawenwu@trustnetic.com>
+Date: Tue, 4 Nov 2025 14:23:21 +0800
+Subject: net: libwx: fix device bus LAN ID
+
+From: Jiawen Wu <jiawenwu@trustnetic.com>
+
+commit a04ea57aae375bdda1cb57034d8bcbb351e1f973 upstream.
+
+The device bus LAN ID was obtained from PCI_FUNC(), but when a PF
+port is passthrough to a virtual machine, the function number may not
+match the actual port index on the device. This could cause the driver
+to perform operations such as LAN reset on the wrong port.
+
+Fix this by reading the LAN ID from port status register.
+
+Fixes: a34b3e6ed8fb ("net: txgbe: Store PCI info")
+Cc: stable@vger.kernel.org
+Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
+Reviewed-by: Simon Horman <horms@kernel.org>
+Link: https://patch.msgid.link/B60A670C1F52CB8E+20251104062321.40059-1-jiawenwu@trustnetic.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/wangxun/libwx/wx_hw.c | 3 ++-
+ drivers/net/ethernet/wangxun/libwx/wx_type.h | 4 ++--
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/ethernet/wangxun/libwx/wx_hw.c
++++ b/drivers/net/ethernet/wangxun/libwx/wx_hw.c
+@@ -1667,7 +1667,8 @@ int wx_sw_init(struct wx *wx)
+ wx->oem_svid = pdev->subsystem_vendor;
+ wx->oem_ssid = pdev->subsystem_device;
+ wx->bus.device = PCI_SLOT(pdev->devfn);
+- wx->bus.func = PCI_FUNC(pdev->devfn);
++ wx->bus.func = FIELD_GET(WX_CFG_PORT_ST_LANID,
++ rd32(wx, WX_CFG_PORT_ST));
+
+ if (wx->oem_svid == PCI_VENDOR_ID_WANGXUN) {
+ wx->subsystem_vendor_id = pdev->subsystem_vendor;
+--- a/drivers/net/ethernet/wangxun/libwx/wx_type.h
++++ b/drivers/net/ethernet/wangxun/libwx/wx_type.h
+@@ -65,6 +65,8 @@
+ #define WX_CFG_PORT_CTL_DRV_LOAD BIT(3)
+ #define WX_CFG_PORT_CTL_QINQ BIT(2)
+ #define WX_CFG_PORT_CTL_D_VLAN BIT(0) /* double vlan*/
++#define WX_CFG_PORT_ST 0x14404
++#define WX_CFG_PORT_ST_LANID GENMASK(9, 8)
+ #define WX_CFG_TAG_TPID(_i) (0x14430 + ((_i) * 4))
+ #define WX_CFG_PORT_CTL_NUM_VT_MASK GENMASK(13, 12) /* number of TVs */
+
+@@ -363,8 +365,6 @@ enum WX_MSCA_CMD_value {
+ #define TXD_USE_COUNT(S) DIV_ROUND_UP((S), WX_MAX_DATA_PER_TXD)
+ #define DESC_NEEDED (MAX_SKB_FRAGS + 4)
+
+-#define WX_CFG_PORT_ST 0x14404
+-
+ /******************* Receive Descriptor bit definitions **********************/
+ #define WX_RXD_STAT_DD BIT(0) /* Done */
+ #define WX_RXD_STAT_EOP BIT(1) /* End of Packet */
--- /dev/null
+From 2469bb6a6af944755a7d7daf66be90f3b8decbf9 Mon Sep 17 00:00:00 2001
+From: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
+Date: Mon, 27 Oct 2025 09:49:12 +0800
+Subject: Revert "wifi: ath10k: avoid unnecessary wait for service ready message"
+
+From: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
+
+commit 2469bb6a6af944755a7d7daf66be90f3b8decbf9 upstream.
+
+This reverts commit 51a73f1b2e56b0324b4a3bb8cebc4221b5be4c7a.
+
+Although this commit benefits QCA6174, it breaks QCA988x and
+QCA9984 [1][2]. Since it is not likely to root cause/fix this
+issue in a short time, revert it to get those chips back.
+
+Compile tested only.
+
+Fixes: 51a73f1b2e56 ("wifi: ath10k: avoid unnecessary wait for service ready message")
+Link: https://lore.kernel.org/ath10k/6d41bc00602c33ffbf68781f563ff2e6c6915a3e.camel@gmail.com # [1]
+Closes: https://bugzilla.kernel.org/show_bug.cgi?id=220671 # [2]
+Signed-off-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
+Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
+Cc: stable@vger.kernel.org
+Link: https://patch.msgid.link/20251027-ath10k-revert-polling-first-change-v1-1-89aaf3bcbfa1@oss.qualcomm.com
+Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/wireless/ath/ath10k/wmi.c | 39 +++++++++++++++++-----------------
+ 1 file changed, 20 insertions(+), 19 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath10k/wmi.c
++++ b/drivers/net/wireless/ath/ath10k/wmi.c
+@@ -1763,32 +1763,33 @@ void ath10k_wmi_put_wmi_channel(struct a
+
+ int ath10k_wmi_wait_for_service_ready(struct ath10k *ar)
+ {
+- unsigned long timeout = jiffies + WMI_SERVICE_READY_TIMEOUT_HZ;
+ unsigned long time_left, i;
+
+- /* Sometimes the PCI HIF doesn't receive interrupt
+- * for the service ready message even if the buffer
+- * was completed. PCIe sniffer shows that it's
+- * because the corresponding CE ring doesn't fires
+- * it. Workaround here by polling CE rings. Since
+- * the message could arrive at any time, continue
+- * polling until timeout.
+- */
+- do {
++ time_left = wait_for_completion_timeout(&ar->wmi.service_ready,
++ WMI_SERVICE_READY_TIMEOUT_HZ);
++ if (!time_left) {
++ /* Sometimes the PCI HIF doesn't receive interrupt
++ * for the service ready message even if the buffer
++ * was completed. PCIe sniffer shows that it's
++ * because the corresponding CE ring doesn't fires
++ * it. Workaround here by polling CE rings once.
++ */
++ ath10k_warn(ar, "failed to receive service ready completion, polling..\n");
++
+ for (i = 0; i < CE_COUNT; i++)
+ ath10k_hif_send_complete_check(ar, i, 1);
+
+- /* The 100 ms granularity is a tradeoff considering scheduler
+- * overhead and response latency
+- */
+ time_left = wait_for_completion_timeout(&ar->wmi.service_ready,
+- msecs_to_jiffies(100));
+- if (time_left)
+- return 0;
+- } while (time_before(jiffies, timeout));
++ WMI_SERVICE_READY_TIMEOUT_HZ);
++ if (!time_left) {
++ ath10k_warn(ar, "polling timed out\n");
++ return -ETIMEDOUT;
++ }
++
++ ath10k_warn(ar, "service ready completion received, continuing normally\n");
++ }
+
+- ath10k_warn(ar, "failed to receive service ready completion\n");
+- return -ETIMEDOUT;
++ return 0;
+ }
+
+ int ath10k_wmi_wait_for_unified_ready(struct ath10k *ar)
ceph-add-checking-of-wait_for_completion_killable-re.patch
ceph-refactor-wake_up_bit-pattern-of-calling.patch
alsa-hda-realtek-audio-disappears-on-hp-15-fc000-aft.patch
+media-uvcvideo-use-heuristic-to-find-stream-entity.patch
+revert-wifi-ath10k-avoid-unnecessary-wait-for-service-ready-message.patch
+net-libwx-fix-device-bus-lan-id.patch