From bb8fd41f9a6775734882fe9707f7ad5e5edfbf9e Mon Sep 17 00:00:00 2001 From: John Audia Date: Fri, 20 Oct 2023 04:15:03 -0400 Subject: [PATCH] kernel: bump 6.1 to 6.1.59 Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.59 Manually rebased: bcm27xx/patches-6.1/950-0124-Add-support-for-all-the-downstream-rpi-sound-card-dr.patch Removed upstreamed: generic/backport-6.1/781-v6.6-02-net-dsa-qca8k-fix-potential-MDIO-bus-conflict-when-a.patch[1] All other patches automatically rebased. 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.59&id=881050b25b1dda7b0f14d40d1b09bf38cb3b427c Build system: x86/64 Build-tested: x86/64/AMD Cezanne Run-tested: x86/64/AMD Cezanne Signed-off-by: John Audia --- include/kernel-6.1 | 4 +- .../900-unaligned_access_hacks.patch | 6 +- ...-fixup-modes-that-haven-t-been-reset.patch | 2 +- ...rs-remove-legacy_cursor_update-hacks.patch | 4 +- .../950-0106-Add-dwc_otg-driver.patch | 2 +- ...all-the-downstream-rpi-sound-card-dr.patch | 6 +- ...-option-to-poll-instead-of-relying-o.patch | 6 +- ...prove-mdio-master-read-write-by-usin.patch | 6 +- ...a8k-convert-to-regmap-read-write-API.patch | 2 +- ...ke-learning-configurable-and-keep-of.patch | 4 +- ...mit-user-ports-access-to-the-first-C.patch | 2 +- ...ve-qca8xxx-hol-fixup-to-separate-fun.patch | 4 +- ...e-dsa_for_each-macro-instead-of-for-.patch | 6 +- ...x-potential-MDIO-bus-conflict-when-a.patch | 106 ------------------ .../721-net-add-packet-mangeling.patch | 2 +- ...T-skip-GRO-for-foreign-MAC-addresses.patch | 8 +- ...ional-threading-for-backlog-processi.patch | 18 +-- .../pending-6.1/834-ledtrig-libata.patch | 10 +- ...t-introduce-napi_is_scheduled-helper.patch | 2 +- 19 files changed, 47 insertions(+), 153 deletions(-) delete mode 100644 target/linux/generic/backport-6.1/781-v6.6-02-net-dsa-qca8k-fix-potential-MDIO-bus-conflict-when-a.patch diff --git a/include/kernel-6.1 b/include/kernel-6.1 index ae0ed271c0..ccc3bd85dc 100644 --- a/include/kernel-6.1 +++ b/include/kernel-6.1 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.1 = .58 -LINUX_KERNEL_HASH-6.1.58 = ce987ed3d2f640b3a2a62a0a8573d538a36dfd3cc31e2d7a239ce5a16c1c21ad +LINUX_VERSION-6.1 = .59 +LINUX_KERNEL_HASH-6.1.59 = 627f7724c675036639290fb5c39e3fdeb3d566b80b192c45f4a808ab54c8c0a0 diff --git a/target/linux/ath79/patches-6.1/900-unaligned_access_hacks.patch b/target/linux/ath79/patches-6.1/900-unaligned_access_hacks.patch index c919a8f263..2d35ae1d34 100644 --- a/target/linux/ath79/patches-6.1/900-unaligned_access_hacks.patch +++ b/target/linux/ath79/patches-6.1/900-unaligned_access_hacks.patch @@ -349,7 +349,7 @@ SVN-Revision: 35130 list_for_each_entry(p, head, list) { --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c -@@ -610,48 +610,53 @@ static void tcp_options_write(struct tcp +@@ -612,48 +612,53 @@ static void tcp_options_write(struct tcp u16 options = opts->options; /* mungable copy */ if (unlikely(OPTION_MD5 & options)) { @@ -426,7 +426,7 @@ SVN-Revision: 35130 } if (unlikely(opts->num_sack_blocks)) { -@@ -659,16 +664,17 @@ static void tcp_options_write(struct tcp +@@ -661,16 +666,17 @@ static void tcp_options_write(struct tcp tp->duplicate_sack : tp->selective_acks; int this_sack; @@ -450,7 +450,7 @@ SVN-Revision: 35130 } tp->rx_opt.dsack = 0; -@@ -681,13 +687,14 @@ static void tcp_options_write(struct tcp +@@ -683,13 +689,14 @@ static void tcp_options_write(struct tcp if (foc->exp) { len = TCPOLEN_EXP_FASTOPEN_BASE + foc->len; diff --git a/target/linux/bcm27xx/patches-6.1/950-0005-drm-atomic-Don-t-fixup-modes-that-haven-t-been-reset.patch b/target/linux/bcm27xx/patches-6.1/950-0005-drm-atomic-Don-t-fixup-modes-that-haven-t-been-reset.patch index 0de0b474f3..0682961157 100644 --- a/target/linux/bcm27xx/patches-6.1/950-0005-drm-atomic-Don-t-fixup-modes-that-haven-t-been-reset.patch +++ b/target/linux/bcm27xx/patches-6.1/950-0005-drm-atomic-Don-t-fixup-modes-that-haven-t-been-reset.patch @@ -10,7 +10,7 @@ Signed-off-by: Dave Stevenson --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c -@@ -438,6 +438,11 @@ mode_fixup(struct drm_atomic_state *stat +@@ -443,6 +443,11 @@ mode_fixup(struct drm_atomic_state *stat new_crtc_state = drm_atomic_get_new_crtc_state(state, new_conn_state->crtc); diff --git a/target/linux/bcm27xx/patches-6.1/950-0045-drm-atomic-helpers-remove-legacy_cursor_update-hacks.patch b/target/linux/bcm27xx/patches-6.1/950-0045-drm-atomic-helpers-remove-legacy_cursor_update-hacks.patch index 9d4b5571e2..178d0c514e 100644 --- a/target/linux/bcm27xx/patches-6.1/950-0045-drm-atomic-helpers-remove-legacy_cursor_update-hacks.patch +++ b/target/linux/bcm27xx/patches-6.1/950-0045-drm-atomic-helpers-remove-legacy_cursor_update-hacks.patch @@ -59,7 +59,7 @@ Signed-off-by: Maxime Ripard --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c -@@ -1617,13 +1617,6 @@ drm_atomic_helper_wait_for_vblanks(struc +@@ -1626,13 +1626,6 @@ drm_atomic_helper_wait_for_vblanks(struc int i, ret; unsigned int crtc_mask = 0; @@ -73,7 +73,7 @@ Signed-off-by: Maxime Ripard for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state, new_crtc_state, i) { if (!new_crtc_state->active) continue; -@@ -2273,12 +2266,6 @@ int drm_atomic_helper_setup_commit(struc +@@ -2282,12 +2275,6 @@ int drm_atomic_helper_setup_commit(struc complete_all(&commit->flip_done); continue; } diff --git a/target/linux/bcm27xx/patches-6.1/950-0106-Add-dwc_otg-driver.patch b/target/linux/bcm27xx/patches-6.1/950-0106-Add-dwc_otg-driver.patch index 7eadf3f509..635e864f99 100644 --- a/target/linux/bcm27xx/patches-6.1/950-0106-Add-dwc_otg-driver.patch +++ b/target/linux/bcm27xx/patches-6.1/950-0106-Add-dwc_otg-driver.patch @@ -1185,7 +1185,7 @@ Signed-off-by: Jonathan Bell } --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -5636,7 +5636,7 @@ static void port_event(struct usb_hub *h +@@ -5655,7 +5655,7 @@ static void port_event(struct usb_hub *h port_dev->over_current_count++; port_over_current_notify(port_dev); diff --git a/target/linux/bcm27xx/patches-6.1/950-0124-Add-support-for-all-the-downstream-rpi-sound-card-dr.patch b/target/linux/bcm27xx/patches-6.1/950-0124-Add-support-for-all-the-downstream-rpi-sound-card-dr.patch index 79c281ade2..c5e90fc860 100644 --- a/target/linux/bcm27xx/patches-6.1/950-0124-Add-support-for-all-the-downstream-rpi-sound-card-dr.patch +++ b/target/linux/bcm27xx/patches-6.1/950-0124-Add-support-for-all-the-downstream-rpi-sound-card-dr.patch @@ -17615,12 +17615,12 @@ Signed-off-by: Ashish Vara * For devices with more than one control interface, we assume the --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c -@@ -2171,6 +2171,8 @@ static const struct usb_audio_quirk_flag +@@ -2175,6 +2175,8 @@ static const struct usb_audio_quirk_flag QUIRK_FLAG_FIXED_RATE), DEVICE_FLG(0x0ecb, 0x2069, /* JBL Quantum810 Wireless */ QUIRK_FLAG_FIXED_RATE), + DEVICE_FLG(0x09da, 0x2695, /* A4Tech FHD 1080p webcam */ + QUIRK_FLAG_DISABLE_AUTOSUSPEND | QUIRK_FLAG_GET_SAMPLE_RATE), + DEVICE_FLG(0x1bcf, 0x2283, /* NexiGo N930AF FHD Webcam */ + QUIRK_FLAG_GET_SAMPLE_RATE), - /* Vendor matches */ - VENDOR_FLG(0x045e, /* MS Lifecam */ diff --git a/target/linux/bcm27xx/patches-6.1/950-0689-input-goodix-Add-option-to-poll-instead-of-relying-o.patch b/target/linux/bcm27xx/patches-6.1/950-0689-input-goodix-Add-option-to-poll-instead-of-relying-o.patch index 008bdf36da..23877809ff 100644 --- a/target/linux/bcm27xx/patches-6.1/950-0689-input-goodix-Add-option-to-poll-instead-of-relying-o.patch +++ b/target/linux/bcm27xx/patches-6.1/950-0689-input-goodix-Add-option-to-poll-instead-of-relying-o.patch @@ -96,7 +96,7 @@ Signed-off-by: Dave Stevenson } static int goodix_check_cfg_8(struct goodix_ts_data *ts, const u8 *cfg, int len) -@@ -1406,6 +1459,11 @@ static void goodix_ts_remove(struct i2c_ +@@ -1425,6 +1478,11 @@ static void goodix_ts_remove(struct i2c_ { struct goodix_ts_data *ts = i2c_get_clientdata(client); @@ -108,7 +108,7 @@ Signed-off-by: Dave Stevenson if (ts->load_cfg_from_disk) wait_for_completion(&ts->firmware_loading_complete); } -@@ -1421,7 +1479,7 @@ static int __maybe_unused goodix_suspend +@@ -1440,7 +1498,7 @@ static int __maybe_unused goodix_suspend /* We need gpio pins to suspend/resume */ if (ts->irq_pin_access_method == IRQ_PIN_ACCESS_NONE) { @@ -117,7 +117,7 @@ Signed-off-by: Dave Stevenson return 0; } -@@ -1465,7 +1523,7 @@ static int __maybe_unused goodix_resume( +@@ -1484,7 +1542,7 @@ static int __maybe_unused goodix_resume( int error; if (ts->irq_pin_access_method == IRQ_PIN_ACCESS_NONE) { diff --git a/target/linux/generic/backport-6.1/777-v6.2-05-net-dsa-qca8k-improve-mdio-master-read-write-by-usin.patch b/target/linux/generic/backport-6.1/777-v6.2-05-net-dsa-qca8k-improve-mdio-master-read-write-by-usin.patch index ea34901472..dcafad0fd5 100644 --- a/target/linux/generic/backport-6.1/777-v6.2-05-net-dsa-qca8k-improve-mdio-master-read-write-by-usin.patch +++ b/target/linux/generic/backport-6.1/777-v6.2-05-net-dsa-qca8k-improve-mdio-master-read-write-by-usin.patch @@ -28,7 +28,7 @@ Signed-off-by: David S. Miller --- a/drivers/net/dsa/qca/qca8k-8xxx.c +++ b/drivers/net/dsa/qca/qca8k-8xxx.c -@@ -743,9 +743,9 @@ qca8k_mdio_busy_wait(struct mii_bus *bus +@@ -754,9 +754,9 @@ qca8k_mdio_busy_wait(struct mii_bus *bus qca8k_split_addr(reg, &r1, &r2, &page); @@ -40,7 +40,7 @@ Signed-off-by: David S. Miller /* Check if qca8k_read has failed for a different reason * before returnting -ETIMEDOUT -@@ -787,7 +787,7 @@ qca8k_mdio_write(struct qca8k_priv *priv +@@ -798,7 +798,7 @@ qca8k_mdio_write(struct qca8k_priv *priv exit: /* even if the busy_wait timeouts try to clear the MASTER_EN */ @@ -49,7 +49,7 @@ Signed-off-by: David S. Miller mutex_unlock(&bus->mdio_lock); -@@ -817,18 +817,18 @@ qca8k_mdio_read(struct qca8k_priv *priv, +@@ -828,18 +828,18 @@ qca8k_mdio_read(struct qca8k_priv *priv, if (ret) goto exit; diff --git a/target/linux/generic/backport-6.1/778-v6.3-02-net-dsa-qca8k-convert-to-regmap-read-write-API.patch b/target/linux/generic/backport-6.1/778-v6.3-02-net-dsa-qca8k-convert-to-regmap-read-write-API.patch index f66149ae37..0a631a09c1 100644 --- a/target/linux/generic/backport-6.1/778-v6.3-02-net-dsa-qca8k-convert-to-regmap-read-write-API.patch +++ b/target/linux/generic/backport-6.1/778-v6.3-02-net-dsa-qca8k-convert-to-regmap-read-write-API.patch @@ -168,7 +168,7 @@ Signed-off-by: David S. Miller }; static int -@@ -2091,8 +2147,6 @@ static SIMPLE_DEV_PM_OPS(qca8k_pm_ops, +@@ -2102,8 +2158,6 @@ static SIMPLE_DEV_PM_OPS(qca8k_pm_ops, static const struct qca8k_info_ops qca8xxx_ops = { .autocast_mib = qca8k_get_ethtool_stats_eth, diff --git a/target/linux/generic/backport-6.1/780-v6.6-01-net-dsa-qca8k-make-learning-configurable-and-keep-of.patch b/target/linux/generic/backport-6.1/780-v6.6-01-net-dsa-qca8k-make-learning-configurable-and-keep-of.patch index b1c0a32e1b..6e93491a12 100644 --- a/target/linux/generic/backport-6.1/780-v6.6-01-net-dsa-qca8k-make-learning-configurable-and-keep-of.patch +++ b/target/linux/generic/backport-6.1/780-v6.6-01-net-dsa-qca8k-make-learning-configurable-and-keep-of.patch @@ -32,7 +32,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/dsa/qca/qca8k-8xxx.c +++ b/drivers/net/dsa/qca/qca8k-8xxx.c -@@ -1883,9 +1883,8 @@ qca8k_setup(struct dsa_switch *ds) +@@ -1894,9 +1894,8 @@ qca8k_setup(struct dsa_switch *ds) if (ret) return ret; @@ -44,7 +44,7 @@ Signed-off-by: Paolo Abeni if (ret) return ret; -@@ -1991,6 +1990,8 @@ static const struct dsa_switch_ops qca8k +@@ -2002,6 +2001,8 @@ static const struct dsa_switch_ops qca8k .port_change_mtu = qca8k_port_change_mtu, .port_max_mtu = qca8k_port_max_mtu, .port_stp_state_set = qca8k_port_stp_state_set, diff --git a/target/linux/generic/backport-6.1/780-v6.6-02-net-dsa-qca8k-limit-user-ports-access-to-the-first-C.patch b/target/linux/generic/backport-6.1/780-v6.6-02-net-dsa-qca8k-limit-user-ports-access-to-the-first-C.patch index b430d2f792..fdb3a8cdb9 100644 --- a/target/linux/generic/backport-6.1/780-v6.6-02-net-dsa-qca8k-limit-user-ports-access-to-the-first-C.patch +++ b/target/linux/generic/backport-6.1/780-v6.6-02-net-dsa-qca8k-limit-user-ports-access-to-the-first-C.patch @@ -26,7 +26,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/dsa/qca/qca8k-8xxx.c +++ b/drivers/net/dsa/qca/qca8k-8xxx.c -@@ -1863,18 +1863,16 @@ qca8k_setup(struct dsa_switch *ds) +@@ -1874,18 +1874,16 @@ qca8k_setup(struct dsa_switch *ds) if (ret) return ret; diff --git a/target/linux/generic/backport-6.1/780-v6.6-03-net-dsa-qca8k-move-qca8xxx-hol-fixup-to-separate-fun.patch b/target/linux/generic/backport-6.1/780-v6.6-03-net-dsa-qca8k-move-qca8xxx-hol-fixup-to-separate-fun.patch index 9423c4b604..c789fdf05e 100644 --- a/target/linux/generic/backport-6.1/780-v6.6-03-net-dsa-qca8k-move-qca8xxx-hol-fixup-to-separate-fun.patch +++ b/target/linux/generic/backport-6.1/780-v6.6-03-net-dsa-qca8k-move-qca8xxx-hol-fixup-to-separate-fun.patch @@ -17,7 +17,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/dsa/qca/qca8k-8xxx.c +++ b/drivers/net/dsa/qca/qca8k-8xxx.c -@@ -1773,6 +1773,46 @@ static int qca8k_connect_tag_protocol(st +@@ -1784,6 +1784,46 @@ static int qca8k_connect_tag_protocol(st return 0; } @@ -64,7 +64,7 @@ Signed-off-by: Paolo Abeni static int qca8k_setup(struct dsa_switch *ds) { -@@ -1908,42 +1948,8 @@ qca8k_setup(struct dsa_switch *ds) +@@ -1919,42 +1959,8 @@ qca8k_setup(struct dsa_switch *ds) * missing settings to improve switch stability under load condition. * This problem is limited to qca8337 and other qca8k switch are not affected. */ diff --git a/target/linux/generic/backport-6.1/780-v6.6-04-net-dsa-qca8k-use-dsa_for_each-macro-instead-of-for-.patch b/target/linux/generic/backport-6.1/780-v6.6-04-net-dsa-qca8k-use-dsa_for_each-macro-instead-of-for-.patch index 60de710965..4f9581235d 100644 --- a/target/linux/generic/backport-6.1/780-v6.6-04-net-dsa-qca8k-use-dsa_for_each-macro-instead-of-for-.patch +++ b/target/linux/generic/backport-6.1/780-v6.6-04-net-dsa-qca8k-use-dsa_for_each-macro-instead-of-for-.patch @@ -17,7 +17,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/dsa/qca/qca8k-8xxx.c +++ b/drivers/net/dsa/qca/qca8k-8xxx.c -@@ -1817,7 +1817,8 @@ static int +@@ -1828,7 +1828,8 @@ static int qca8k_setup(struct dsa_switch *ds) { struct qca8k_priv *priv = (struct qca8k_priv *)ds->priv; @@ -27,7 +27,7 @@ Signed-off-by: Paolo Abeni u32 mask; cpu_port = qca8k_find_cpu_port(ds); -@@ -1868,27 +1869,27 @@ qca8k_setup(struct dsa_switch *ds) +@@ -1879,27 +1880,27 @@ qca8k_setup(struct dsa_switch *ds) dev_warn(priv->dev, "mib init failed"); /* Initial setup of all ports */ @@ -70,7 +70,7 @@ Signed-off-by: Paolo Abeni } /* Forward all unknown frames to CPU port for Linux processing -@@ -1910,48 +1911,48 @@ qca8k_setup(struct dsa_switch *ds) +@@ -1921,48 +1922,48 @@ qca8k_setup(struct dsa_switch *ds) return ret; /* Setup connection between CPU port & user ports diff --git a/target/linux/generic/backport-6.1/781-v6.6-02-net-dsa-qca8k-fix-potential-MDIO-bus-conflict-when-a.patch b/target/linux/generic/backport-6.1/781-v6.6-02-net-dsa-qca8k-fix-potential-MDIO-bus-conflict-when-a.patch deleted file mode 100644 index fc573ccb3a..0000000000 --- a/target/linux/generic/backport-6.1/781-v6.6-02-net-dsa-qca8k-fix-potential-MDIO-bus-conflict-when-a.patch +++ /dev/null @@ -1,106 +0,0 @@ -From 526c8ee04bdbd4d8d19a583b1f3b06700229a815 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marek=20Beh=C3=BAn?= -Date: Wed, 4 Oct 2023 11:19:04 +0200 -Subject: [PATCH 2/2] net: dsa: qca8k: fix potential MDIO bus conflict when - accessing internal PHYs via management frames -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Besides the QCA8337 switch the Turris 1.x device has on it's MDIO bus -also Micron ethernet PHY (dedicated to the WAN port). - -We've been experiencing a strange behavior of the WAN ethernet -interface, wherein the WAN PHY started timing out the MDIO accesses, for -example when the interface was brought down and then back up. - -Bisecting led to commit 2cd548566384 ("net: dsa: qca8k: add support for -phy read/write with mgmt Ethernet"), which added support to access the -QCA8337 switch's internal PHYs via management ethernet frames. - -Connecting the MDIO bus pins onto an oscilloscope, I was able to see -that the MDIO bus was active whenever a request to read/write an -internal PHY register was done via an management ethernet frame. - -My theory is that when the switch core always communicates with the -internal PHYs via the MDIO bus, even when externally we request the -access via ethernet. This MDIO bus is the same one via which the switch -and internal PHYs are accessible to the board, and the board may have -other devices connected on this bus. An ASCII illustration may give more -insight: - - +---------+ - +----| | - | | WAN PHY | - | +--| | - | | +---------+ - | | - | | +----------------------------------+ - | | | QCA8337 | -MDC | | | +-------+ | -------o-+--|--------o------------o--| | | -MDIO | | | | | PHY 1 |-|--to RJ45 ---------o--|---o----+---------o--+--| | | - | | | | | +-------+ | - | +-------------+ | o--| | | - | | MDIO MDC | | | | PHY 2 |-|--to RJ45 -eth1 | | | o--+--| | | ------------|-|port0 | | | +-------+ | - | | | | o--| | | - | | switch core | | | | PHY 3 |-|--to RJ45 - | +-------------+ o--+--| | | - | | | +-------+ | - | | o--| ... | | - +----------------------------------+ - -When we send a request to read an internal PHY register via an ethernet -management frame via eth1, the switch core receives the ethernet frame -on port 0 and then communicates with the internal PHY via MDIO. At this -time, other potential devices, such as the WAN PHY on Turris 1.x, cannot -use the MDIO bus, since it may cause a bus conflict. - -Fix this issue by locking the MDIO bus even when we are accessing the -PHY registers via ethernet management frames. - -Fixes: 2cd548566384 ("net: dsa: qca8k: add support for phy read/write with mgmt Ethernet") -Signed-off-by: Marek Behún -Reviewed-by: Christian Marangi -Signed-off-by: David S. Miller ---- - drivers/net/dsa/qca/qca8k-8xxx.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - ---- a/drivers/net/dsa/qca/qca8k-8xxx.c -+++ b/drivers/net/dsa/qca/qca8k-8xxx.c -@@ -665,6 +665,15 @@ qca8k_phy_eth_command(struct qca8k_priv - goto err_read_skb; - } - -+ /* It seems that accessing the switch's internal PHYs via management -+ * packets still uses the MDIO bus within the switch internally, and -+ * these accesses can conflict with external MDIO accesses to other -+ * devices on the MDIO bus. -+ * We therefore need to lock the MDIO bus onto which the switch is -+ * connected. -+ */ -+ mutex_lock(&priv->bus->mdio_lock); -+ - /* Actually start the request: - * 1. Send mdio master packet - * 2. Busy Wait for mdio master command -@@ -677,6 +686,7 @@ qca8k_phy_eth_command(struct qca8k_priv - mgmt_master = priv->mgmt_master; - if (!mgmt_master) { - mutex_unlock(&mgmt_eth_data->mutex); -+ mutex_unlock(&priv->bus->mdio_lock); - ret = -EINVAL; - goto err_mgmt_master; - } -@@ -764,6 +774,7 @@ exit: - QCA8K_ETHERNET_TIMEOUT); - - mutex_unlock(&mgmt_eth_data->mutex); -+ mutex_unlock(&priv->bus->mdio_lock); - - return ret; - diff --git a/target/linux/generic/hack-6.1/721-net-add-packet-mangeling.patch b/target/linux/generic/hack-6.1/721-net-add-packet-mangeling.patch index dd9ca868a2..f083a8f0a1 100644 --- a/target/linux/generic/hack-6.1/721-net-add-packet-mangeling.patch +++ b/target/linux/generic/hack-6.1/721-net-add-packet-mangeling.patch @@ -105,7 +105,7 @@ Signed-off-by: Felix Fietkau help --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3575,6 +3575,11 @@ static int xmit_one(struct sk_buff *skb, +@@ -3579,6 +3579,11 @@ static int xmit_one(struct sk_buff *skb, if (dev_nit_active(dev)) dev_queue_xmit_nit(skb, dev); diff --git a/target/linux/generic/pending-6.1/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-6.1/680-NET-skip-GRO-for-foreign-MAC-addresses.patch index 062b3e82b5..2960385a6d 100644 --- a/target/linux/generic/pending-6.1/680-NET-skip-GRO-for-foreign-MAC-addresses.patch +++ b/target/linux/generic/pending-6.1/680-NET-skip-GRO-for-foreign-MAC-addresses.patch @@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -7593,6 +7593,48 @@ static void __netdev_adjacent_dev_unlink +@@ -7597,6 +7597,48 @@ static void __netdev_adjacent_dev_unlink &upper_dev->adj_list.lower); } @@ -93,7 +93,7 @@ Signed-off-by: Felix Fietkau static int __netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev, bool master, void *upper_priv, void *upper_info, -@@ -7644,6 +7686,7 @@ static int __netdev_upper_dev_link(struc +@@ -7648,6 +7690,7 @@ static int __netdev_upper_dev_link(struc if (ret) return ret; @@ -101,7 +101,7 @@ Signed-off-by: Felix Fietkau ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, &changeupper_info.info); ret = notifier_to_errno(ret); -@@ -7740,6 +7783,7 @@ static void __netdev_upper_dev_unlink(st +@@ -7744,6 +7787,7 @@ static void __netdev_upper_dev_unlink(st __netdev_adjacent_dev_unlink_neighbour(dev, upper_dev); @@ -109,7 +109,7 @@ Signed-off-by: Felix Fietkau call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, &changeupper_info.info); -@@ -8792,6 +8836,7 @@ int dev_set_mac_address(struct net_devic +@@ -8796,6 +8840,7 @@ int dev_set_mac_address(struct net_devic if (err) return err; dev->addr_assign_type = NET_ADDR_SET; diff --git a/target/linux/generic/pending-6.1/760-net-core-add-optional-threading-for-backlog-processi.patch b/target/linux/generic/pending-6.1/760-net-core-add-optional-threading-for-backlog-processi.patch index 1c9ad551aa..cdd98cb203 100644 --- a/target/linux/generic/pending-6.1/760-net-core-add-optional-threading-for-backlog-processi.patch +++ b/target/linux/generic/pending-6.1/760-net-core-add-optional-threading-for-backlog-processi.patch @@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau #endif --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -4593,7 +4593,7 @@ static int napi_schedule_rps(struct soft +@@ -4597,7 +4597,7 @@ static int napi_schedule_rps(struct soft struct softnet_data *mysd = this_cpu_ptr(&softnet_data); #ifdef CONFIG_RPS @@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau sd->rps_ipi_next = mysd->rps_ipi_list; mysd->rps_ipi_list = sd; -@@ -5774,6 +5774,8 @@ static DEFINE_PER_CPU(struct work_struct +@@ -5778,6 +5778,8 @@ static DEFINE_PER_CPU(struct work_struct /* Network device is going away, flush any packets still pending */ static void flush_backlog(struct work_struct *work) { @@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau struct sk_buff *skb, *tmp; struct softnet_data *sd; -@@ -5788,8 +5790,17 @@ static void flush_backlog(struct work_st +@@ -5792,8 +5794,17 @@ static void flush_backlog(struct work_st input_queue_head_incr(sd); } } @@ -66,7 +66,7 @@ Signed-off-by: Felix Fietkau skb_queue_walk_safe(&sd->process_queue, skb, tmp) { if (skb->dev->reg_state == NETREG_UNREGISTERING) { __skb_unlink(skb, &sd->process_queue); -@@ -5797,7 +5808,16 @@ static void flush_backlog(struct work_st +@@ -5801,7 +5812,16 @@ static void flush_backlog(struct work_st input_queue_head_incr(sd); } } @@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau } static bool flush_required(int cpu) -@@ -5929,6 +5949,7 @@ static int process_backlog(struct napi_s +@@ -5933,6 +5953,7 @@ static int process_backlog(struct napi_s } rps_lock_irq_disable(sd); @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau if (skb_queue_empty(&sd->input_pkt_queue)) { /* * Inline a custom version of __napi_complete(). -@@ -5938,7 +5959,8 @@ static int process_backlog(struct napi_s +@@ -5942,7 +5963,8 @@ static int process_backlog(struct napi_s * We can use a plain write instead of clear_bit(), * and we dont need an smp_mb() memory barrier. */ @@ -101,7 +101,7 @@ Signed-off-by: Felix Fietkau again = false; } else { skb_queue_splice_tail_init(&sd->input_pkt_queue, -@@ -6354,6 +6376,55 @@ int dev_set_threaded(struct net_device * +@@ -6358,6 +6380,55 @@ int dev_set_threaded(struct net_device * } EXPORT_SYMBOL(dev_set_threaded); @@ -157,7 +157,7 @@ Signed-off-by: Felix Fietkau void netif_napi_add_weight(struct net_device *dev, struct napi_struct *napi, int (*poll)(struct napi_struct *, int), int weight) { -@@ -11126,6 +11197,9 @@ static int dev_cpu_dead(unsigned int old +@@ -11130,6 +11201,9 @@ static int dev_cpu_dead(unsigned int old raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_enable(); @@ -167,7 +167,7 @@ Signed-off-by: Felix Fietkau #ifdef CONFIG_RPS remsd = oldsd->rps_ipi_list; oldsd->rps_ipi_list = NULL; -@@ -11429,6 +11503,7 @@ static int __init net_dev_init(void) +@@ -11433,6 +11507,7 @@ static int __init net_dev_init(void) INIT_CSD(&sd->defer_csd, trigger_rx_softirq, sd); spin_lock_init(&sd->defer_lock); diff --git a/target/linux/generic/pending-6.1/834-ledtrig-libata.patch b/target/linux/generic/pending-6.1/834-ledtrig-libata.patch index e9339c2206..930610c7e5 100644 --- a/target/linux/generic/pending-6.1/834-ledtrig-libata.patch +++ b/target/linux/generic/pending-6.1/834-ledtrig-libata.patch @@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle /** * ata_build_rw_tf - Build ATA taskfile for given read/write request * @qc: Metadata associated with the taskfile to build -@@ -4622,6 +4635,9 @@ void __ata_qc_complete(struct ata_queued +@@ -4712,6 +4725,9 @@ void __ata_qc_complete(struct ata_queued link->active_tag = ATA_TAG_POISON; ap->nr_active_links--; } @@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle /* clear exclusive status */ if (unlikely(qc->flags & ATA_QCFLAG_CLEAR_EXCL && -@@ -5344,6 +5360,9 @@ struct ata_port *ata_port_alloc(struct a +@@ -5434,6 +5450,9 @@ struct ata_port *ata_port_alloc(struct a ap->stats.unhandled_irq = 1; ap->stats.idle_irq = 1; #endif @@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle ata_sff_port_init(ap); return ap; -@@ -5379,6 +5398,12 @@ static void ata_host_release(struct kref +@@ -5469,6 +5488,12 @@ static void ata_host_release(struct kref kfree(ap->pmp_link); kfree(ap->slave_link); @@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle kfree(ap); host->ports[i] = NULL; } -@@ -5781,7 +5806,23 @@ int ata_host_register(struct ata_host *h +@@ -5871,7 +5896,23 @@ int ata_host_register(struct ata_host *h host->ports[i]->print_id = atomic_inc_return(&ata_print_id); host->ports[i]->local_port_no = i + 1; } @@ -134,7 +134,7 @@ Signed-off-by: Daniel Golle /* * Define if arch has non-standard setup. This is a _PCI_ standard -@@ -861,6 +864,12 @@ struct ata_port { +@@ -864,6 +867,12 @@ struct ata_port { #ifdef CONFIG_ATA_ACPI struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */ #endif diff --git a/target/linux/ipq806x/patches-6.1/700-01-net-introduce-napi_is_scheduled-helper.patch b/target/linux/ipq806x/patches-6.1/700-01-net-introduce-napi_is_scheduled-helper.patch index 9694bf1144..a9bcb0aa45 100644 --- a/target/linux/ipq806x/patches-6.1/700-01-net-introduce-napi_is_scheduled-helper.patch +++ b/target/linux/ipq806x/patches-6.1/700-01-net-introduce-napi_is_scheduled-helper.patch @@ -66,7 +66,7 @@ Signed-off-by: Christian Marangi /** --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -6562,7 +6562,7 @@ static int __napi_poll(struct napi_struc +@@ -6566,7 +6566,7 @@ static int __napi_poll(struct napi_struc * accidentally calling ->poll() when NAPI is not scheduled. */ work = 0; -- 2.30.2