mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 17:18:59 +00:00
51bbc8114b
1. Update target/linux/generic/config-6.6 for new ksym 2. Refresh patches Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.57 Added: generic/backport-6.6/777-netfilter-xtables-fix-typo-causing-some-targets-to-not-load-on-IPv6.patch[1] Manually rebased: generic/hack-6.6/645-netfilter-connmark-introduce-set-dscpmark.patch Removed upstreamed: gemini/patches-6.6/0001-net-ethernet-cortina-Drop-TSO-support.patch[2] gemini/patches-6.6/0004-net-ethernet-cortina-Restore-TSO-support.patch[3] All other patches automatically rebased. 1. https://lore.kernel.org/all/20241019-xtables-typos-v2-1-6b8b1735dc8e@0upti.me/ 2 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.57&id=452c0740d72c6a77a41f6ddc318a48f18c3d2346 3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.57&id=611f74b0e7fb93ee2366d9d7edca546806b220e9 Build system: x86/64 Build-tested: x86/64/AMD Cezanne, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3 Run-tested: x86/64/AMD Cezanne, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3 Signed-off-by: John Audia <therealgraysky@proton.me> Link: https://github.com/openwrt/openwrt/pull/16726 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
72 lines
2.5 KiB
Diff
72 lines
2.5 KiB
Diff
From a956051a926b0a9e0bc587303ce1a2e153707e80 Mon Sep 17 00:00:00 2001
|
|
From: Dom Cobley <popcornmix@gmail.com>
|
|
Date: Mon, 31 Jul 2023 13:47:10 +0100
|
|
Subject: [PATCH 0061/1085] Revert "Revert "xhci: add quirk for host
|
|
controllers that don't update endpoint DCS""
|
|
|
|
This reverts commit 5bef4b3cb95a5b883dfec8b3ffc0d671323d55bb.
|
|
|
|
We don't agree with upstream revert so undo it.
|
|
---
|
|
drivers/usb/host/xhci-pci.c | 4 +++-
|
|
drivers/usb/host/xhci-ring.c | 25 ++++++++++++++++++++++++-
|
|
2 files changed, 27 insertions(+), 2 deletions(-)
|
|
|
|
--- a/drivers/usb/host/xhci-pci.c
|
|
+++ b/drivers/usb/host/xhci-pci.c
|
|
@@ -490,8 +490,10 @@ static void xhci_pci_quirks(struct devic
|
|
pdev->device == 0x3432)
|
|
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
|
|
|
- if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483)
|
|
+ if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) {
|
|
xhci->quirks |= XHCI_LPM_SUPPORT;
|
|
+ xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
|
|
+ }
|
|
|
|
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
|
pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI) {
|
|
--- a/drivers/usb/host/xhci-ring.c
|
|
+++ b/drivers/usb/host/xhci-ring.c
|
|
@@ -633,8 +633,11 @@ static int xhci_move_dequeue_past_td(str
|
|
struct xhci_ring *ep_ring;
|
|
struct xhci_command *cmd;
|
|
struct xhci_segment *new_seg;
|
|
+ struct xhci_segment *halted_seg = NULL;
|
|
union xhci_trb *new_deq;
|
|
int new_cycle;
|
|
+ union xhci_trb *halted_trb;
|
|
+ int index = 0;
|
|
dma_addr_t addr;
|
|
u64 hw_dequeue;
|
|
bool cycle_found = false;
|
|
@@ -672,7 +675,27 @@ static int xhci_move_dequeue_past_td(str
|
|
hw_dequeue = xhci_get_hw_deq(xhci, dev, ep_index, stream_id);
|
|
new_seg = ep_ring->deq_seg;
|
|
new_deq = ep_ring->dequeue;
|
|
- new_cycle = hw_dequeue & 0x1;
|
|
+
|
|
+ /*
|
|
+ * Quirk: xHC write-back of the DCS field in the hardware dequeue
|
|
+ * pointer is wrong - use the cycle state of the TRB pointed to by
|
|
+ * the dequeue pointer.
|
|
+ */
|
|
+ if (xhci->quirks & XHCI_EP_CTX_BROKEN_DCS &&
|
|
+ !(ep->ep_state & EP_HAS_STREAMS))
|
|
+ halted_seg = trb_in_td(xhci, td->start_seg,
|
|
+ td->first_trb, td->last_trb,
|
|
+ hw_dequeue & ~0xf, false);
|
|
+ if (halted_seg) {
|
|
+ index = ((dma_addr_t)(hw_dequeue & ~0xf) - halted_seg->dma) /
|
|
+ sizeof(*halted_trb);
|
|
+ halted_trb = &halted_seg->trbs[index];
|
|
+ new_cycle = halted_trb->generic.field[3] & 0x1;
|
|
+ xhci_dbg(xhci, "Endpoint DCS = %d TRB index = %d cycle = %d\n",
|
|
+ (u8)(hw_dequeue & 0x1), index, new_cycle);
|
|
+ } else {
|
|
+ new_cycle = hw_dequeue & 0x1;
|
|
+ }
|
|
|
|
/*
|
|
* We want to find the pointer, segment and cycle state of the new trb
|