kernel: bump 6.6 to 6.6.46
authorJohn Audia <therealgraysky@proton.me>
Fri, 16 Aug 2024 19:16:04 +0000 (15:16 -0400)
committerHauke Mehrtens <hauke@hauke-m.de>
Tue, 20 Aug 2024 21:41:08 +0000 (23:41 +0200)
This commit makes three changes all needed for the update of the 6.6 kernel.

1. Upstream kernel bump to 6.6.46

Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.46
Manually rebased:
         bcm27xx/patches-6.6/950-0320-spi-spidev-Restore-loading-from-Device-Tree.patch
All other patches automatically rebased.

2. Adjusted the following for new ksym[1] enabling it:

        armsr/config-6.6
        bcm27xx/bcm2712/config-6.6

3. Added a fix to receiving fraglist GSO packets:

generic/pending-6.6/601-udp-fix-receiving-fraglist-GSO_packets.patch[2]

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/diff/arch/arm64/Kconfig?id=v6.6.46&id2=v6.6.45
2. https://marc.info/?l=linux-netdev&m=172407994500599&w=2

Build system: x86/64
Build-tested: x86/64/AMD Cezanne
Run-tested: x86/64/AMD Cezanne

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/16173
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
21 files changed:
include/kernel-6.6
target/linux/armsr/config-6.6
target/linux/ath79/patches-6.6/900-unaligned_access_hacks.patch
target/linux/bcm27xx/bcm2712/config-6.6
target/linux/bcm27xx/patches-6.6/950-0070-spi-spidev-Completely-disable-the-spidev-warning.patch
target/linux/bcm27xx/patches-6.6/950-0214-gpiolib-Don-t-prevent-IRQ-usage-of-output-GPIOs.patch
target/linux/bcm27xx/patches-6.6/950-0320-spi-spidev-Restore-loading-from-Device-Tree.patch
target/linux/bcm27xx/patches-6.6/950-0441-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch
target/linux/bcm27xx/patches-6.6/950-1211-gpiolib-Override-gpiochip-numbers-with-DT-aliases.patch
target/linux/bcm4908/patches-6.6/700-net-dsa-bcm_sf2-enable-GPHY-for-switch-probing.patch
target/linux/bcm4908/patches-6.6/701-net-dsa-bcm_sf2-keep-GPHY-enabled-on-the-BCM4908.patch
target/linux/generic/backport-6.6/611-01-v6.11-udp-Allow-GSO-transmit-from-devices-with-no-checksum.patch
target/linux/generic/backport-6.6/611-03-v6.11-udp-Fall-back-to-software-USO-if-IPv6-extension-head.patch
target/linux/generic/config-6.6
target/linux/generic/hack-6.6/780-usb-net-MeigLink_modem_support.patch
target/linux/generic/hack-6.6/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch
target/linux/generic/pending-6.6/601-udp-fix-receiving-fraglist-GSO_packets.patch [new file with mode: 0644]
target/linux/generic/pending-6.6/680-net-add-TCP-fraglist-GRO-support.patch
target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
target/linux/mediatek/patches-6.6/901-arm-add-cmdline-override.patch
target/linux/ramips/patches-6.6/810-uvc-add-iPassion-iP2970-support.patch

index 3b0f9cbf1c3129883c835d35685abfe4ec04eb01..9581ac4e0443eaa95d09cf8e84b7a6e419af4d86 100644 (file)
@@ -1,2 +1,2 @@
-LINUX_VERSION-6.6 = .45
-LINUX_KERNEL_HASH-6.6.45 = 121bed240767e4a0959c1609e78eeaaf3e0620d9d1a5ed1f6e36bdf609c4f179
+LINUX_VERSION-6.6 = .46
+LINUX_KERNEL_HASH-6.6.46 = 052f932396d9c7d84ceeda91226a8ef797c12188bde41e6c419602d990dd45f2
index 304602ebbd82a9d1961adc1000f95399f14e4ef7..2588ccd3b99bf856503708ca0e4d631ffa03757b 100644 (file)
@@ -55,6 +55,7 @@ CONFIG_ARCH_WANTS_NO_INSTR=y
 CONFIG_ARM64=y
 CONFIG_ARM64_4K_PAGES=y
 # CONFIG_ARM64_ACPI_PARKING_PROTOCOL is not set
+CONFIG_ARM64_ERRATUM_3194386=y
 CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
 CONFIG_ARM64_PAGE_SHIFT=12
 CONFIG_ARM64_PA_BITS=48
index c09a095236ae69df4d96be1bddae0b7dd443081e..e6a4f9d90d870c15829005ab31ec09f72779ec68 100644 (file)
@@ -867,7 +867,7 @@ SVN-Revision: 35130
            iph->daddr == iph2->daddr && iph->saddr == iph2->saddr)
                return segs;
  
-@@ -255,7 +255,7 @@ struct sk_buff *tcp_gro_lookup(struct li
+@@ -258,7 +258,7 @@ struct sk_buff *tcp_gro_lookup(struct li
                        continue;
  
                th2 = tcp_hdr(p);
@@ -876,7 +876,7 @@ SVN-Revision: 35130
                        NAPI_GRO_CB(p)->same_flow = 0;
                        continue;
                }
-@@ -321,8 +321,8 @@ struct sk_buff *tcp_gro_receive(struct l
+@@ -324,8 +324,8 @@ struct sk_buff *tcp_gro_receive(struct l
                  ~(TCP_FLAG_CWR | TCP_FLAG_FIN | TCP_FLAG_PSH));
        flush |= (__force int)(th->ack_seq ^ th2->ack_seq);
        for (i = sizeof(*th); i < thlen; i += 4)
index f61986338b00934b4a6935d37caffe4f0b9c2daa..d61796fb24f6cf537b9f02abe323461fa9bd27d9 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_ARM64_EPAN=y
 CONFIG_ARM64_ERRATUM_1165522=y
 CONFIG_ARM64_ERRATUM_1286807=y
 CONFIG_ARM64_ERRATUM_1463225=y
+CONFIG_ARM64_ERRATUM_3194386=y
 CONFIG_ARM64_HW_AFDBM=y
 CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
 CONFIG_ARM64_PAGE_SHIFT=12
index cbd2877f514c7ede986f9c62fa5c900e51a9c6b5..47d727af5ba0db1e51b259d830c7e60d5946b14b 100644 (file)
@@ -13,7 +13,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 
 --- a/drivers/spi/spidev.c
 +++ b/drivers/spi/spidev.c
-@@ -719,7 +719,7 @@ MODULE_DEVICE_TABLE(spi, spidev_spi_ids)
+@@ -720,7 +720,7 @@ MODULE_DEVICE_TABLE(spi, spidev_spi_ids)
   */
  static int spidev_of_check(struct device *dev)
  {
index 9b5a0fa0884ff13bc6c0028d2d3ad3c62f5d5cb3..29f8ebf0d6814e9218e3d5d0a2bdde072e9a0b62 100644 (file)
@@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 
 --- a/drivers/gpio/gpiolib.c
 +++ b/drivers/gpio/gpiolib.c
-@@ -57,6 +57,8 @@
+@@ -58,6 +58,8 @@
  #define       extra_checks    0
  #endif
  
@@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
  /* Device and char device-related information */
  static DEFINE_IDA(gpio_ida);
  static dev_t gpio_devt;
-@@ -2591,8 +2593,8 @@ int gpiod_direction_output(struct gpio_d
+@@ -2592,8 +2594,8 @@ int gpiod_direction_output(struct gpio_d
                value = !!value;
  
        /* GPIOs used for enabled IRQs shall not be set as output */
@@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
                gpiod_err(desc,
                          "%s: tried to set a GPIO tied to an IRQ as output\n",
                          __func__);
-@@ -3470,8 +3472,8 @@ int gpiochip_lock_as_irq(struct gpio_chi
+@@ -3471,8 +3473,8 @@ int gpiochip_lock_as_irq(struct gpio_chi
        }
  
        /* To be valid for IRQ the line needs to be input or open drain */
index 6f22bfd578d7b0184dcd9d227b674257c2857400..a45389d9ef7420dc904a8fb62e8d11cdf4e0c170 100644 (file)
@@ -20,6 +20,6 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
  
  static const struct spi_device_id spidev_spi_ids[] = {
 +      { .name = "spidev" },
+       { .name = "bh2228fv" },
        { .name = "dh2228fv" },
        { .name = "ltc2488" },
-       { .name = "sx1301" },
index bcf94f9a6ea397cb4a024752c37ec7b94e0fd705..51ba7c697c3fe3c06f650da70e21f4bc1366f1df 100644 (file)
@@ -20,7 +20,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
 
 --- a/net/bluetooth/hci_sync.c
 +++ b/net/bluetooth/hci_sync.c
-@@ -4693,6 +4693,7 @@ static const struct {
+@@ -4707,6 +4707,7 @@ static const struct {
   */
  static int hci_dev_setup_sync(struct hci_dev *hdev)
  {
@@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
        int ret = 0;
        bool invalid_bdaddr;
        size_t i;
-@@ -4721,7 +4722,8 @@ static int hci_dev_setup_sync(struct hci
+@@ -4735,7 +4736,8 @@ static int hci_dev_setup_sync(struct hci
                         test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks);
        if (!ret) {
                if (test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks) &&
index 4ce9c04658d62964cafd3d73b85ffeece4a2a999..d909c6f9a27b2f0093467eec2eeae88b00ade2d1 100644 (file)
@@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
 
 --- a/drivers/gpio/gpiolib.c
 +++ b/drivers/gpio/gpiolib.c
-@@ -110,6 +110,7 @@ static int gpiochip_irqchip_init_valid_m
+@@ -111,6 +111,7 @@ static int gpiochip_irqchip_init_valid_m
  static void gpiochip_irqchip_free_valid_mask(struct gpio_chip *gc);
  
  static bool gpiolib_initialized;
@@ -22,7 +22,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
  
  static inline void desc_set_label(struct gpio_desc *d, const char *label)
  {
-@@ -745,6 +746,7 @@ int gpiochip_add_data_with_key(struct gp
+@@ -746,6 +747,7 @@ int gpiochip_add_data_with_key(struct gp
        unsigned int i;
        int base = 0;
        int ret = 0;
@@ -30,7 +30,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
  
        /*
         * First: allocate and populate the internal stat container, and
-@@ -769,7 +771,16 @@ int gpiochip_add_data_with_key(struct gp
+@@ -770,7 +772,16 @@ int gpiochip_add_data_with_key(struct gp
        else if (gc->parent)
                device_set_node(&gdev->dev, dev_fwnode(gc->parent));
  
index cf089fec6157a07bcc10d22f18565b56c157215e..8961bb298c18c6a0959cee970d97bca48f394034 100644 (file)
@@ -29,7 +29,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
 
 --- a/drivers/net/dsa/bcm_sf2.c
 +++ b/drivers/net/dsa/bcm_sf2.c
-@@ -1522,10 +1522,14 @@ static int bcm_sf2_sw_probe(struct platf
+@@ -1524,10 +1524,14 @@ static int bcm_sf2_sw_probe(struct platf
        rev = reg_readl(priv, REG_PHY_REVISION);
        priv->hw_params.gphy_rev = rev & PHY_REVISION_MASK;
  
index 865eac729a21b8aab3921277db9f590860364b48..ff3f44910b4e4a32f5a8817f5ed36fae36c6a9eb 100644 (file)
@@ -15,7 +15,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
 
 --- a/drivers/net/dsa/bcm_sf2.c
 +++ b/drivers/net/dsa/bcm_sf2.c
-@@ -1536,6 +1536,12 @@ static int bcm_sf2_sw_probe(struct platf
+@@ -1538,6 +1538,12 @@ static int bcm_sf2_sw_probe(struct platf
                 priv->hw_params.core_rev >> 8, priv->hw_params.core_rev & 0xff,
                 priv->irq0, priv->irq1);
  
index 21f18f92b81926e920f052cb00b8232a2efd300d..c199d1778c032592b1d8cdbdbeef3d7e4498b98f 100644 (file)
@@ -65,7 +65,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
                }
 --- a/net/ipv4/udp_offload.c
 +++ b/net/ipv4/udp_offload.c
-@@ -357,6 +357,14 @@ struct sk_buff *__udp_gso_segment(struct
+@@ -361,6 +361,14 @@ struct sk_buff *__udp_gso_segment(struct
        else
                uh->check = gso_make_checksum(seg, ~check) ? : CSUM_MANGLED_0;
  
index 151e2562dbee16912d6837f2f7f3607d82d45c01..fca7bef3cda70f0586caa3a3a2ab15e46a1a4e92 100644 (file)
@@ -71,8 +71,8 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
 
 --- a/net/ipv4/udp_offload.c
 +++ b/net/ipv4/udp_offload.c
-@@ -278,6 +278,12 @@ struct sk_buff *__udp_gso_segment(struct
-       if (gso_skb->len <= sizeof(*uh) + mss)
+@@ -282,6 +282,12 @@ struct sk_buff *__udp_gso_segment(struct
+                    skb_transport_header(gso_skb)))
                return ERR_PTR(-EINVAL);
  
 +      /* We don't know if egress device can segment and checksum the packet
index 959520aadf59a317b386a865f25238f631c0b1e6..cce30e10973b94b07a402f11cde3ec01d4c374e5 100644 (file)
@@ -345,6 +345,7 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
 # CONFIG_ARM64_ERRATUM_2658417 is not set
 # CONFIG_ARM64_ERRATUM_2966298 is not set
 # CONFIG_ARM64_ERRATUM_3117295 is not set
+# CONFIG_ARM64_ERRATUM_3194386 is not set
 # CONFIG_ARM64_ERRATUM_819472 is not set
 # CONFIG_ARM64_ERRATUM_824069 is not set
 # CONFIG_ARM64_ERRATUM_826319 is not set
index d010231e49ee288883ef96a58964217c195f6c86..1d9cb9a0dae693f4c67c344058ae72dda1bb2e1a 100644 (file)
@@ -10,7 +10,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
 
 --- a/drivers/net/usb/qmi_wwan.c
 +++ b/drivers/net/usb/qmi_wwan.c
-@@ -1083,12 +1083,18 @@ static const struct usb_device_id produc
+@@ -1084,12 +1084,18 @@ static const struct usb_device_id produc
                USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0x581d, USB_CLASS_VENDOR_SPEC, 1, 7),
                .driver_info = (unsigned long)&qmi_wwan_info,
        },
index 1c5fb11ff540cd041b719a8d0ae009abd8eec3b6..85a19027fda7f6a2319c88c979d8e4a84bcf6102 100644 (file)
@@ -19,7 +19,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
 
 --- a/drivers/base/core.c
 +++ b/drivers/base/core.c
-@@ -1657,7 +1657,7 @@ static void device_links_purge(struct de
+@@ -1658,7 +1658,7 @@ static void device_links_purge(struct de
  #define FW_DEVLINK_FLAGS_RPM          (FW_DEVLINK_FLAGS_ON | \
                                         DL_FLAG_PM_RUNTIME)
  
diff --git a/target/linux/generic/pending-6.6/601-udp-fix-receiving-fraglist-GSO_packets.patch b/target/linux/generic/pending-6.6/601-udp-fix-receiving-fraglist-GSO_packets.patch
new file mode 100644 (file)
index 0000000..7315581
--- /dev/null
@@ -0,0 +1,26 @@
+From 32412565c27d63e15f25e76d86ee04c29b201b96 Mon Sep 17 00:00:00 2001
+From: Felix Fietkau <nbd@nbd.name>
+Date: Mon, 19 Aug 2024 15:20:42 +0200
+Subject: [PATCH] udp: fix receiving fraglist GSO packets
+
+When assembling fraglist GSO packets, udp4_gro_complete does not set
+skb->csum_start, which makes the extra validation in __udp_gso_segment fail.
+
+Fixes: 89add40066f9 ("net: drop bad gso csum_start and offset in virtio_net_hdr")
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+ net/ipv4/udp_offload.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/net/ipv4/udp_offload.c
++++ b/net/ipv4/udp_offload.c
+@@ -279,7 +279,8 @@ struct sk_buff *__udp_gso_segment(struct
+               return ERR_PTR(-EINVAL);
+       if (unlikely(skb_checksum_start(gso_skb) !=
+-                   skb_transport_header(gso_skb)))
++                   skb_transport_header(gso_skb) &&
++                   !(skb_shinfo(gso_skb)->gso_type & SKB_GSO_FRAGLIST)))
+               return ERR_PTR(-EINVAL);
+       /* We don't know if egress device can segment and checksum the packet
index 8042656397b3a2bfb5daf415d3c848468f0be77b..a321b6afc4cec9d0ab2a53175ceaf3a9c3aa4fc8 100644 (file)
@@ -162,7 +162,7 @@ Signe-off-by: Felix Fietkau <nbd@nbd.name>
        if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) {
                const struct iphdr *iph = ip_hdr(skb);
                struct tcphdr *th = tcp_hdr(skb);
-@@ -178,61 +245,76 @@ out:
+@@ -181,61 +248,76 @@ out:
        return segs;
  }
  
@@ -269,7 +269,7 @@ Signe-off-by: Felix Fietkau <nbd@nbd.name>
        flush = NAPI_GRO_CB(p)->flush;
        flush |= (__force int)(flags & TCP_FLAG_CWR);
        flush |= (__force int)((flags ^ tcp_flag_word(th2)) &
-@@ -269,6 +351,19 @@ found:
+@@ -272,6 +354,19 @@ found:
        flush |= p->decrypted ^ skb->decrypted;
  #endif
  
@@ -289,7 +289,7 @@ Signe-off-by: Felix Fietkau <nbd@nbd.name>
        if (flush || skb_gro_receive(p, skb)) {
                mss = 1;
                goto out_check_final;
-@@ -290,7 +385,6 @@ out_check_final:
+@@ -293,7 +388,6 @@ out_check_final:
        if (p && (!NAPI_GRO_CB(skb)->same_flow || flush))
                pp = p;
  
@@ -297,7 +297,7 @@ Signe-off-by: Felix Fietkau <nbd@nbd.name>
        NAPI_GRO_CB(skb)->flush |= (flush != 0);
  
        return pp;
-@@ -314,18 +408,58 @@ void tcp_gro_complete(struct sk_buff *sk
+@@ -317,18 +411,58 @@ void tcp_gro_complete(struct sk_buff *sk
  }
  EXPORT_SYMBOL(tcp_gro_complete);
  
@@ -361,7 +361,7 @@ Signe-off-by: Felix Fietkau <nbd@nbd.name>
  }
  
  INDIRECT_CALLABLE_SCOPE int tcp4_gro_complete(struct sk_buff *skb, int thoff)
-@@ -333,6 +467,15 @@ INDIRECT_CALLABLE_SCOPE int tcp4_gro_com
+@@ -336,6 +470,15 @@ INDIRECT_CALLABLE_SCOPE int tcp4_gro_com
        const struct iphdr *iph = ip_hdr(skb);
        struct tcphdr *th = tcp_hdr(skb);
  
@@ -379,7 +379,7 @@ Signe-off-by: Felix Fietkau <nbd@nbd.name>
        skb_shinfo(skb)->gso_type |= SKB_GSO_TCPV4;
 --- a/net/ipv4/udp_offload.c
 +++ b/net/ipv4/udp_offload.c
-@@ -447,33 +447,6 @@ out:
+@@ -451,33 +451,6 @@ out:
        return segs;
  }
  
index ca4620ef0c5a3b4e30502aa40219a8e9f747c7ef..59f94093bc9996d21d0b5c12bfc6468be7fe4a82 100644 (file)
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/netfilter/nf_tables_api.c
 +++ b/net/netfilter/nf_tables_api.c
-@@ -8267,7 +8267,7 @@ static int nft_register_flowtable_net_ho
+@@ -8279,7 +8279,7 @@ static int nft_register_flowtable_net_ho
                err = flowtable->data.type->setup(&flowtable->data,
                                                  hook->ops.dev,
                                                  FLOW_BLOCK_BIND);
index 8397915b26a25e124eb36c652ab40ed7234a8e6b..21bbed88d7b0f354a908a2fd0091e907578981ea 100644 (file)
@@ -37,7 +37,7 @@
         * CONFIG_CMDLINE is meant to be a default in case nothing else
 --- a/arch/arm64/Kconfig
 +++ b/arch/arm64/Kconfig
-@@ -2269,6 +2269,14 @@ config CMDLINE_FORCE
+@@ -2307,6 +2307,14 @@ config CMDLINE_FORCE
  
  endchoice
  
index 7e04c9b1bc556d4979666b921fcc8ea649dc0550..9119a7c495e5a62476e3a59fdee2542924a4e16a 100644 (file)
@@ -64,7 +64,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  
  #include <media/v4l2-common.h>
  
-@@ -1246,9 +1251,149 @@ static void uvc_video_decode_data(struct
+@@ -1275,9 +1280,149 @@ static void uvc_video_decode_data(struct
        uvc_urb->async_operations++;
  }
  
@@ -214,7 +214,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
        /* Mark the buffer as done if the EOF marker is set. */
        if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) {
                uvc_dbg(stream->dev, FRAME, "Frame complete (EOF found)\n");
-@@ -1830,6 +1975,8 @@ static int uvc_init_video_isoc(struct uv
+@@ -1859,6 +2004,8 @@ static int uvc_init_video_isoc(struct uv
        if (npackets == 0)
                return -ENOMEM;