Message ID | 20200725124600.16470-1-ldir@darbyshire-bryant.me.uk |
---|---|
State | Superseded |
Headers | show |
Series | kernel: bump 5.4 to 5.4.53 | expand |
Op zaterdag 25 juli 2020 om 13u45 schreef Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>: > Refresh patches. > > Remove upstreamed patches: > > bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch > bcm63xx/patches-5.4/024-v5.8-mtd-rawnand-brcmnand-fix-CS0-layout.patch > > Drop the cake hack as upstream have backported the changes themselves, > but in a slightly different way. > > generic/hack-5.4/641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch > > Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> Tested-by: Stijn Segers <foss@volatilesystems.org> > --- > include/kernel-version.mk | 4 +- > .../910-unaligned_access_hacks.patch | 2 +- > ...ce-quirks-for-Freeway-Airmouse-T3-an.patch | 4 +- > .../905-BCM53573-minor-hacks.patch | 2 +- > ...-brcmnand-improve-hamming-oob-layout.patch | 2 +- > ...cmnand-correctly-verify-erased-pages.patch | 63 ---------- > ...-mtd-rawnand-brcmnand-fix-CS0-layout.patch | 34 ------ > ...antage-of-skb-hash-where-appropriate.patch | 2 +- > ...ve-fwnode-parsing-into-sfp-bus-layer.patch | 2 +- > ....5-net-sfp-rework-upstream-interface.patch | 12 +- > ...fix-sfp_bus_put-kernel-documentation.patch | 2 +- > ...et-sfp-add-support-for-module-quirks.patch | 43 ++----- > ...sfp-add-some-quirks-for-GPON-modules.patch | 6 +- > ...protocol-handling-in-the-presence-of.patch | 114 > ------------------ > ...ng-with-source-address-failed-policy.patch | 22 ++-- > ...ncomplete-100BASE-FX-and-100BASE-LX-.patch | 2 +- > ...nterface-mode-from-ethtool-link-mode.patch | 4 +- > ...p-add-more-extended-compliance-codes.patch | 8 +- > ...le-start-stop-upstream-notifications.patch | 2 +- > ...y-MAC-configuration-for-copper-SFP-m.patch | 8 +- > ...ma-calculate-the-real-count-for-slav.patch | 4 +- > ...ma-Add-eDMA-support-for-QorIQ-LS1028.patch | 4 +- > ...on-build_skb-in-mvneta_rx_swbm-poll-.patch | 2 +- > ...013-net-mvneta-add-basic-XDP-support.patch | 2 +- > ...DP-support-if-sw-bm-is-used-as-fallb.patch | 6 +- > ...-mvebu-armada-38x-enable-libata-leds.patch | 2 +- > .../0069-awake-rt305x-dwc2-controller.patch | 2 +- > 27 files changed, 66 insertions(+), 294 deletions(-) > delete mode 100644 > target/linux/bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch > delete mode 100644 > target/linux/bcm63xx/patches-5.4/024-v5.8-mtd-rawnand-brcmnand-fix-CS0-layout.patch > delete mode 100644 > target/linux/generic/hack-5.4/641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch > > diff --git a/include/kernel-version.mk b/include/kernel-version.mk > index 8bfce3ecfe..08bde0efc6 100644 > --- a/include/kernel-version.mk > +++ b/include/kernel-version.mk > @@ -8,11 +8,11 @@ endif > > LINUX_VERSION-4.14 = .187 > LINUX_VERSION-4.19 = .131 > -LINUX_VERSION-5.4 = .52 > +LINUX_VERSION-5.4 = .53 > > LINUX_KERNEL_HASH-4.14.187 = > 5b223475eaeea196aa7e127d3f253bca5c35d8afdc72ca75230ce1ecdd1454bd > LINUX_KERNEL_HASH-4.19.131 = > 19dfb9f6cc4ba30104b65dcce7d78240a4ae188cb366747d5f8eae35e98964ba > -LINUX_KERNEL_HASH-5.4.52 = > 037efa531120b1c20ff55e78cd3e17288b1804b3a57dc31de760837b3bea5d3a > +LINUX_KERNEL_HASH-5.4.53 = > faa7b6f99220d5726f0eaee74a6394f0a3b89be1a75254f3804630211f3d6d21 > > remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst > https://,,$(1)))) > sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst > .,_,$(subst -,_,$(subst /,_,$(1))))))) > diff --git > a/target/linux/ath79/patches-5.4/910-unaligned_access_hacks.patch > b/target/linux/ath79/patches-5.4/910-unaligned_access_hacks.patch > index 053b72023f..da6f331f85 100644 > --- a/target/linux/ath79/patches-5.4/910-unaligned_access_hacks.patch > +++ b/target/linux/ath79/patches-5.4/910-unaligned_access_hacks.patch > @@ -556,7 +556,7 @@ > #include <linux/netdevice.h> > --- a/include/net/inet_ecn.h > +++ b/include/net/inet_ecn.h > -@@ -139,9 +139,9 @@ static inline int IP6_ECN_set_ce(struct > +@@ -140,9 +140,9 @@ static inline int IP6_ECN_set_ce(struct > if (INET_ECN_is_not_ect(ipv6_get_dsfield(iph))) > return 0; > > diff --git > a/target/linux/bcm27xx/patches-5.4/950-0283-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch > b/target/linux/bcm27xx/patches-5.4/950-0283-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch > index 26a54c22c9..f265beb34e 100644 > --- > a/target/linux/bcm27xx/patches-5.4/950-0283-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch > +++ > b/target/linux/bcm27xx/patches-5.4/950-0283-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch > @@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell > <jonathan@raspberrypi.org> > #define USB_VENDOR_ID_BELKIN 0x050d > #define USB_DEVICE_ID_FLIP_KVM 0x3201 > > -@@ -1234,6 +1237,9 @@ > +@@ -1237,6 +1240,9 @@ > #define USB_VENDOR_ID_XAT 0x2505 > #define USB_DEVICE_ID_XAT_CSR 0x0220 > > @@ -53,7 +53,7 @@ Signed-off-by: Jonathan Bell > <jonathan@raspberrypi.org> > { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, > USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT }, > { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, > USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), > HID_QUIRK_ALWAYS_POLL }, > { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, > USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), > HID_QUIRK_ALWAYS_POLL }, > -@@ -178,6 +179,7 @@ static const struct hid_device_id hid_qu > +@@ -179,6 +180,7 @@ static const struct hid_device_id hid_qu > { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, > USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | > HID_QUIRK_MULTI_INPUT }, > { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, > USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | > HID_QUIRK_MULTI_INPUT }, > { HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, > USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT }, > diff --git > a/target/linux/bcm53xx/patches-5.4/905-BCM53573-minor-hacks.patch > b/target/linux/bcm53xx/patches-5.4/905-BCM53573-minor-hacks.patch > index e3806b4e72..3b0a3323af 100644 > --- a/target/linux/bcm53xx/patches-5.4/905-BCM53573-minor-hacks.patch > +++ b/target/linux/bcm53xx/patches-5.4/905-BCM53573-minor-hacks.patch > @@ -61,7 +61,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl> > #include <linux/clockchips.h> > #include <linux/clocksource.h> > #include <linux/interrupt.h> > -@@ -899,6 +900,16 @@ static void arch_timer_of_configure_rate > +@@ -910,6 +911,16 @@ static void arch_timer_of_configure_rate > if (of_property_read_u32(np, "clock-frequency", &arch_timer_rate)) > arch_timer_rate = rate; > > diff --git > a/target/linux/bcm63xx/patches-5.4/021-v5.8-mtd-rawnand-brcmnand-improve-hamming-oob-layout.patch > b/target/linux/bcm63xx/patches-5.4/021-v5.8-mtd-rawnand-brcmnand-improve-hamming-oob-layout.patch > index 1df2411035..78fa1b39e3 100644 > --- > a/target/linux/bcm63xx/patches-5.4/021-v5.8-mtd-rawnand-brcmnand-improve-hamming-oob-layout.patch > +++ > b/target/linux/bcm63xx/patches-5.4/021-v5.8-mtd-rawnand-brcmnand-improve-hamming-oob-layout.patch > @@ -40,7 +40,7 @@ Link: > https://lore.kernel.org/linux-mtd/20200512075733.745374-3-noltari@gmail.co > > --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c > +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c > -@@ -1003,33 +1003,30 @@ static int brcmnand_hamming_ooblayout_fr > +@@ -1004,33 +1004,30 @@ static int brcmnand_hamming_ooblayout_fr > struct brcmnand_cfg *cfg = &host->hwcfg; > int sas = cfg->spare_area_size << cfg->sector_size_1k; > int sectors = cfg->page_size / (512 << cfg->sector_size_1k); > diff --git > a/target/linux/bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch > b/target/linux/bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch > deleted file mode 100644 > index e8a9f14881..0000000000 > --- > a/target/linux/bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch > +++ /dev/null > @@ -1,63 +0,0 @@ > -From dcb351c03f2fa6a599de1061b174167e03ee312b Mon Sep 17 00:00:00 > 2001 > -From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= > <noltari@gmail.com> > -Date: Tue, 12 May 2020 10:24:51 +0200 > -Subject: [PATCH] mtd: rawnand: brcmnand: correctly verify erased > pages > -MIME-Version: 1.0 > -Content-Type: text/plain; charset=UTF-8 > -Content-Transfer-Encoding: 8bit > - > -The current code checks that the whole OOB area is erased. > -This is a problem when JFFS2 cleanmarkers are added to the OOB, > since it will > -fail due to the usable OOB bytes not being 0xff. > -Correct this by only checking that data and ECC bytes aren't 0xff. > - > -Fixes: 02b88eea9f9c ("mtd: brcmnand: Add check for erased page > bitflips") > -Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> > -Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> > -Link: > https://lore.kernel.org/linux-mtd/20200512082451.771212-1-noltari@gmail.com > ---- > - drivers/mtd/nand/raw/brcmnand/brcmnand.c | 19 +++++++++++-------- > - 1 file changed, 11 insertions(+), 8 deletions(-) > - > ---- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c > -+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c > -@@ -1787,28 +1787,31 @@ static int brcmnand_read_by_pio(struct m > - static int brcmstb_nand_verify_erased_page(struct mtd_info *mtd, > - struct nand_chip *chip, void *buf, u64 addr) > - { > -- int i, sas; > -- void *oob = chip->oob_poi; > -+ struct mtd_oob_region ecc; > -+ int i; > - int bitflips = 0; > - int page = addr >> chip->page_shift; > - int ret; > -+ void *ecc_bytes; > - void *ecc_chunk; > - > - if (!buf) > - buf = nand_get_data_buf(chip); > - > -- sas = mtd->oobsize / chip->ecc.steps; > -- > - /* read without ecc for verification */ > - ret = chip->ecc.read_page_raw(chip, buf, true, page); > - if (ret) > - return ret; > - > -- for (i = 0; i < chip->ecc.steps; i++, oob += sas) { > -+ for (i = 0; i < chip->ecc.steps; i++) { > - ecc_chunk = buf + chip->ecc.size * i; > -- ret = nand_check_erased_ecc_chunk(ecc_chunk, > -- chip->ecc.size, > -- oob, sas, NULL, 0, > -+ > -+ mtd_ooblayout_ecc(mtd, i, &ecc); > -+ ecc_bytes = chip->oob_poi + ecc.offset; > -+ > -+ ret = nand_check_erased_ecc_chunk(ecc_chunk, chip->ecc.size, > -+ ecc_bytes, ecc.length, > -+ NULL, 0, > - chip->ecc.strength); > - if (ret < 0) > - return ret; > diff --git > a/target/linux/bcm63xx/patches-5.4/024-v5.8-mtd-rawnand-brcmnand-fix-CS0-layout.patch > b/target/linux/bcm63xx/patches-5.4/024-v5.8-mtd-rawnand-brcmnand-fix-CS0-layout.patch > deleted file mode 100644 > index 0eeefe12de..0000000000 > --- > a/target/linux/bcm63xx/patches-5.4/024-v5.8-mtd-rawnand-brcmnand-fix-CS0-layout.patch > +++ /dev/null > @@ -1,34 +0,0 @@ > -From 3d3fb3c5be9ce07fa85d8f67fb3922e4613b955b Mon Sep 17 00:00:00 > 2001 > -From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= > <noltari@gmail.com> > -Date: Fri, 22 May 2020 14:15:21 +0200 > -Subject: [PATCH] mtd: rawnand: brcmnand: fix CS0 layout > -MIME-Version: 1.0 > -Content-Type: text/plain; charset=UTF-8 > -Content-Transfer-Encoding: 8bit > - > -Only v3.3-v5.0 have a different CS0 layout. > -Controllers before v3.3 use the same layout for every CS. > - > -Fixes: 27c5b17cd1b1 ("mtd: nand: add NAND driver "library" for > Broadcom STB NAND controller") > -Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> > -Acked-by: Florian Fainelli <f.fainelli@gmail.com> > -Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> > -Link: > https://lore.kernel.org/linux-mtd/20200522121524.4161539-3-noltari@gmail.com > ---- > - drivers/mtd/nand/raw/brcmnand/brcmnand.c | 5 +++-- > - 1 file changed, 3 insertions(+), 2 deletions(-) > - > ---- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c > -+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c > -@@ -537,8 +537,9 @@ static int brcmnand_revision_init(struct > - } else { > - ctrl->cs_offsets = brcmnand_cs_offsets; > - > -- /* v5.0 and earlier has a different CS0 offset layout */ > -- if (ctrl->nand_version <= 0x0500) > -+ /* v3.3-5.0 have a different CS0 offset layout */ > -+ if (ctrl->nand_version >= 0x0303 && > -+ ctrl->nand_version <= 0x0500) > - ctrl->cs0_offsets = brcmnand_cs_offsets_cs0; > - } > - > diff --git > a/target/linux/generic/backport-5.4/395-v5.8-net-sch_cake-Take-advantage-of-skb-hash-where-appropriate.patch > b/target/linux/generic/backport-5.4/395-v5.8-net-sch_cake-Take-advantage-of-skb-hash-where-appropriate.patch > index 12962135d0..a4981acdee 100644 > --- > a/target/linux/generic/backport-5.4/395-v5.8-net-sch_cake-Take-advantage-of-skb-hash-where-appropriate.patch > +++ > b/target/linux/generic/backport-5.4/395-v5.8-net-sch_cake-Take-advantage-of-skb-hash-where-appropriate.patch > @@ -67,7 +67,7 @@ Signed-off-by: Kevin Darbyshire-Bryant > <ldir@darbyshire-bryant.me.uk> > + bool rev = !skb->_nfct, upd = false; > + __be32 ip; > > - if (tc_skb_protocol(skb) != htons(ETH_P_IP)) > + if (skb_protocol(skb, true) != htons(ETH_P_IP)) > - return; > + return false; > > diff --git > a/target/linux/generic/backport-5.4/716-v5.4-net-sfp-move-fwnode-parsing-into-sfp-bus-layer.patch > b/target/linux/generic/backport-5.4/716-v5.4-net-sfp-move-fwnode-parsing-into-sfp-bus-layer.patch > index 858c584c05..92fe224873 100644 > --- > a/target/linux/generic/backport-5.4/716-v5.4-net-sfp-move-fwnode-parsing-into-sfp-bus-layer.patch > +++ > b/target/linux/generic/backport-5.4/716-v5.4-net-sfp-move-fwnode-parsing-into-sfp-bus-layer.patch > @@ -59,7 +59,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > #include <linux/rtnetlink.h> > #include <linux/slab.h> > > -@@ -445,45 +446,63 @@ static void sfp_upstream_clear(struct sf > +@@ -520,45 +521,63 @@ static void sfp_upstream_clear(struct sf > } > > /** > diff --git > a/target/linux/generic/backport-5.4/717-v5.5-net-sfp-rework-upstream-interface.patch > b/target/linux/generic/backport-5.4/717-v5.5-net-sfp-rework-upstream-interface.patch > index f3454851bf..9175f2557a 100644 > --- > a/target/linux/generic/backport-5.4/717-v5.5-net-sfp-rework-upstream-interface.patch > +++ > b/target/linux/generic/backport-5.4/717-v5.5-net-sfp-rework-upstream-interface.patch > @@ -53,7 +53,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > > --- a/drivers/net/phy/sfp-bus.c > +++ b/drivers/net/phy/sfp-bus.c > -@@ -329,10 +329,19 @@ static void sfp_bus_release(struct kref > +@@ -404,10 +404,19 @@ static void sfp_bus_release(struct kref > kfree(bus); > } > > @@ -75,7 +75,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > > static int sfp_register_bus(struct sfp_bus *bus) > { > -@@ -348,11 +357,11 @@ static int sfp_register_bus(struct sfp_b > +@@ -423,11 +432,11 @@ static int sfp_register_bus(struct sfp_b > return ret; > } > } > @@ -88,7 +88,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > return 0; > } > > -@@ -446,13 +455,12 @@ static void sfp_upstream_clear(struct sf > +@@ -521,13 +530,12 @@ static void sfp_upstream_clear(struct sf > } > > /** > @@ -106,7 +106,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > * > * Returns: on success, a pointer to the sfp_bus structure, > * %NULL if no SFP is specified, > -@@ -462,9 +470,7 @@ static void sfp_upstream_clear(struct sf > +@@ -537,9 +545,7 @@ static void sfp_upstream_clear(struct sf > * %-ENOMEM if we failed to allocate the bus. > * an error from the upstream's connect_phy() method. > */ > @@ -117,7 +117,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > { > struct fwnode_reference_args ref; > struct sfp_bus *bus; > -@@ -482,7 +488,39 @@ struct sfp_bus *sfp_register_upstream_no > +@@ -557,7 +563,39 @@ struct sfp_bus *sfp_register_upstream_no > if (!bus) > return ERR_PTR(-ENOMEM); > > @@ -157,7 +157,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > bus->upstream_ops = ops; > bus->upstream = upstream; > > -@@ -495,33 +533,33 @@ struct sfp_bus *sfp_register_upstream_no > +@@ -570,33 +608,33 @@ struct sfp_bus *sfp_register_upstream_no > } > rtnl_unlock(); > > diff --git > a/target/linux/generic/backport-5.4/718-v5.5-net-sfp-fix-sfp_bus_put-kernel-documentation.patch > b/target/linux/generic/backport-5.4/718-v5.5-net-sfp-fix-sfp_bus_put-kernel-documentation.patch > index 13dc5216f9..c7bfd8a304 100644 > --- > a/target/linux/generic/backport-5.4/718-v5.5-net-sfp-fix-sfp_bus_put-kernel-documentation.patch > +++ > b/target/linux/generic/backport-5.4/718-v5.5-net-sfp-fix-sfp_bus_put-kernel-documentation.patch > @@ -16,7 +16,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > > --- a/drivers/net/phy/sfp-bus.c > +++ b/drivers/net/phy/sfp-bus.c > -@@ -331,7 +331,7 @@ static void sfp_bus_release(struct kref > +@@ -406,7 +406,7 @@ static void sfp_bus_release(struct kref > > /** > * sfp_bus_put() - put a reference on the &struct sfp_bus > diff --git > a/target/linux/generic/backport-5.4/742-v5.5-net-sfp-add-support-for-module-quirks.patch > b/target/linux/generic/backport-5.4/742-v5.5-net-sfp-add-support-for-module-quirks.patch > index 46c56a655a..ed5ea29a1a 100644 > --- > a/target/linux/generic/backport-5.4/742-v5.5-net-sfp-add-support-for-module-quirks.patch > +++ > b/target/linux/generic/backport-5.4/742-v5.5-net-sfp-add-support-for-module-quirks.patch > @@ -13,9 +13,9 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > > --- a/drivers/net/phy/sfp-bus.c > +++ b/drivers/net/phy/sfp-bus.c > -@@ -10,6 +10,12 @@ > - > - #include "sfp.h" > +@@ -16,6 +16,12 @@ struct sfp_quirk { > + void (*modes)(const struct sfp_eeprom_id *id, unsigned long > *modes); > + }; > > +struct sfp_quirk { > + const char *vendor; > @@ -26,17 +26,9 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > /** > * struct sfp_bus - internal representation of a sfp bus > */ > -@@ -22,6 +28,7 @@ struct sfp_bus { > - const struct sfp_socket_ops *socket_ops; > - struct device *sfp_dev; > - struct sfp *sfp; > -+ const struct sfp_quirk *sfp_quirk; > - > - const struct sfp_upstream_ops *upstream_ops; > - void *upstream; > -@@ -31,6 +38,46 @@ struct sfp_bus { > - bool started; > - }; > +@@ -178,6 +184,46 @@ int sfp_parse_port(struct sfp_bus *bus, > + } > + EXPORT_SYMBOL_GPL(sfp_parse_port); > > +static const struct sfp_quirk sfp_quirks[] = { > +}; > @@ -79,11 +71,11 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > + return NULL; > +} > /** > - * sfp_parse_port() - Parse the EEPROM base ID, setting the port > type > + * sfp_parse_support() - Parse the eeprom id for supported link > modes > * @bus: a pointer to the &struct sfp_bus structure for the sfp > module > -@@ -234,6 +281,9 @@ void sfp_parse_support(struct sfp_bus *b > - phylink_set(modes, 1000baseX_Full); > - } > +@@ -309,6 +355,9 @@ void sfp_parse_support(struct sfp_bus *b > + if (bus->sfp_quirk) > + bus->sfp_quirk->modes(id, modes); > > + if (bus->sfp_quirk) > + bus->sfp_quirk->modes(id, modes); > @@ -91,21 +83,12 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > bitmap_or(support, support, modes, __ETHTOOL_LINK_MODE_MASK_NBITS); > > phylink_set(support, Autoneg); > -@@ -610,6 +660,8 @@ int sfp_module_insert(struct sfp_bus *bu > - const struct sfp_upstream_ops *ops = sfp_get_upstream_ops(bus); > - int ret = 0; > +@@ -687,6 +736,8 @@ int sfp_module_insert(struct sfp_bus *bu > + > + bus->sfp_quirk = sfp_lookup_quirk(id); > > + bus->sfp_quirk = sfp_lookup_quirk(id); > + > if (ops && ops->module_insert) > ret = ops->module_insert(bus->upstream, id); > > -@@ -623,6 +675,8 @@ void sfp_module_remove(struct sfp_bus *b > - > - if (ops && ops->module_remove) > - ops->module_remove(bus->upstream); > -+ > -+ bus->sfp_quirk = NULL; > - } > - EXPORT_SYMBOL_GPL(sfp_module_remove); > - > diff --git > a/target/linux/generic/backport-5.4/743-v5.5-net-sfp-add-some-quirks-for-GPON-modules.patch > b/target/linux/generic/backport-5.4/743-v5.5-net-sfp-add-some-quirks-for-GPON-modules.patch > index 0b085ff094..a19c827389 100644 > --- > a/target/linux/generic/backport-5.4/743-v5.5-net-sfp-add-some-quirks-for-GPON-modules.patch > +++ > b/target/linux/generic/backport-5.4/743-v5.5-net-sfp-add-some-quirks-for-GPON-modules.patch > @@ -17,9 +17,9 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > > --- a/drivers/net/phy/sfp-bus.c > +++ b/drivers/net/phy/sfp-bus.c > -@@ -38,7 +38,32 @@ struct sfp_bus { > - bool started; > - }; > +@@ -184,7 +184,32 @@ int sfp_parse_port(struct sfp_bus *bus, > + } > + EXPORT_SYMBOL_GPL(sfp_parse_port); > > +static void sfp_quirk_2500basex(const struct sfp_eeprom_id *id, > + unsigned long *modes) > diff --git > a/target/linux/generic/hack-5.4/641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch > b/target/linux/generic/hack-5.4/641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch > deleted file mode 100644 > index e651743c1d..0000000000 > --- > a/target/linux/generic/hack-5.4/641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch > +++ /dev/null > @@ -1,114 +0,0 @@ > -From a00590d570212c3c633bd463cef8ec7377cc7993 Mon Sep 17 00:00:00 > 2001 > -From: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> > -Date: Tue, 30 Jun 2020 12:07:44 +0100 > -Subject: [PATCH] sch_cake: fix IP protocol handling in the presence > of VLAN > - tags > -MIME-Version: 1.0 > -Content-Type: text/plain; charset=UTF-8 > -Content-Transfer-Encoding: 8bit > - > -From: Ilya Ponetayev <i.ponetaev@ndmsystems.com> > - > -CAKE was using the return value of tc_skb_protocol() and expecting > it to be > -the IP protocol type. This can fail in the presence of QinQ VLAN > tags, > -making CAKE unable to handle ECN marking and diffserv parsing in > this case. > -Fix this by implementing our own version of tc_skb_protocol(), which > will > -use skb->protocol directly, but also parse and skip over any VLAN > tags and > -return the inner protocol number instead. > - > -Also fix CE marking by implementing a version of INET_ECN_set_ce() > that > -uses the same parsing routine. > - > -Fixes: ea82511518f4 ("sch_cake: Add NAT awareness to packet > classifier") > -Fixes: b2100cc56fca ("sch_cake: Use tc_skb_protocol() helper for > getting packet protocol") > -Fixes: 046f6fd5daef ("sched: Add Common Applications Kept Enhanced > (cake) qdisc") > -Signed-off-by: Ilya Ponetayev <i.ponetaev@ndmsystems.com> > -[ squash original two patches, rewrite commit message ] > -Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com> > -Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> > ---- > - net/sched/sch_cake.c | 52 > +++++++++++++++++++++++++++++++++++++++++--- > - 1 file changed, 49 insertions(+), 3 deletions(-) > - > ---- a/net/sched/sch_cake.c > -+++ b/net/sched/sch_cake.c > -@@ -497,6 +497,52 @@ static bool cobalt_queue_empty(struct co > - return down; > - } > - > -+static __be16 cake_skb_proto(const struct sk_buff *skb) > -+{ > -+ unsigned int offset = skb_mac_offset(skb) + sizeof(struct ethhdr); > -+ __be16 proto = skb->protocol; > -+ struct vlan_hdr vhdr, *vh; > -+ > -+ while (proto == htons(ETH_P_8021Q) || proto == > htons(ETH_P_8021AD)) { > -+ vh = skb_header_pointer(skb, offset, sizeof(vhdr), &vhdr); > -+ if (!vh) > -+ break; > -+ > -+ proto = vh->h_vlan_encapsulated_proto; > -+ offset += sizeof(vhdr); > -+ } > -+ > -+ return proto; > -+} > -+ > -+static int cake_set_ce(struct sk_buff *skb) > -+{ > -+ int wlen = skb_network_offset(skb); > -+ > -+ switch (cake_skb_proto(skb)) { > -+ case htons(ETH_P_IP): > -+ wlen += sizeof(struct iphdr); > -+ if (!pskb_may_pull(skb, wlen) || > -+ skb_try_make_writable(skb, wlen)) > -+ return 0; > -+ > -+ return IP_ECN_set_ce(ip_hdr(skb)); > -+ > -+ case htons(ETH_P_IPV6): > -+ wlen += sizeof(struct ipv6hdr); > -+ if (!pskb_may_pull(skb, wlen) || > -+ skb_try_make_writable(skb, wlen)) > -+ return 0; > -+ > -+ return IP6_ECN_set_ce(skb, ipv6_hdr(skb)); > -+ > -+ default: > -+ return 0; > -+ } > -+ > -+ return 0; > -+} > -+ > - /* Call this with a freshly dequeued packet for possible congestion > marking. > - * Returns true as an instruction to drop the packet, false for > delivery. > - */ > -@@ -549,7 +595,7 @@ static bool cobalt_should_drop(struct co > - > - if (next_due && vars->dropping) { > - /* Use ECN mark if possible, otherwise drop */ > -- drop = !(vars->ecn_marked = INET_ECN_set_ce(skb)); > -+ drop = !(vars->ecn_marked = cake_set_ce(skb)); > - > - vars->count++; > - if (!vars->count) > -@@ -592,7 +638,7 @@ static bool cake_update_flowkeys(struct > - bool rev = !skb->_nfct, upd = false; > - __be32 ip; > - > -- if (tc_skb_protocol(skb) != htons(ETH_P_IP)) > -+ if (cake_skb_proto(skb) != htons(ETH_P_IP)) > - return false; > - > - if (!nf_ct_get_tuple_skb(&tuple, skb)) > -@@ -1557,7 +1603,7 @@ static u8 cake_handle_diffserv(struct sk > - u16 *buf, buf_; > - u8 dscp; > - > -- switch (tc_skb_protocol(skb)) { > -+ switch (cake_skb_proto(skb)) { > - case htons(ETH_P_IP): > - buf = skb_header_pointer(skb, offset, sizeof(buf_), &buf_); > - if (unlikely(!buf)) > diff --git > a/target/linux/generic/pending-5.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch > b/target/linux/generic/pending-5.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch > index 766abc7489..232aee9634 100644 > --- > a/target/linux/generic/pending-5.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch > +++ > b/target/linux/generic/pending-5.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch > @@ -138,7 +138,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> > static const struct rt6_info ip6_blk_hole_entry_template = { > .dst = { > .__refcnt = ATOMIC_INIT(1), > -@@ -1044,6 +1058,7 @@ static const int fib6_prop[RTN_MAX + 1] > +@@ -1047,6 +1061,7 @@ static const int fib6_prop[RTN_MAX + 1] > [RTN_BLACKHOLE] = -EINVAL, > [RTN_UNREACHABLE] = -EHOSTUNREACH, > [RTN_PROHIBIT] = -EACCES, > @@ -146,7 +146,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> > [RTN_THROW] = -EAGAIN, > [RTN_NAT] = -EINVAL, > [RTN_XRESOLVE] = -EINVAL, > -@@ -1081,6 +1096,10 @@ static void ip6_rt_init_dst_reject(struc > +@@ -1084,6 +1099,10 @@ static void ip6_rt_init_dst_reject(struc > rt->dst.output = ip6_pkt_prohibit_out; > rt->dst.input = ip6_pkt_prohibit; > break; > @@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> > case RTN_THROW: > case RTN_UNREACHABLE: > default: > -@@ -4416,6 +4435,17 @@ static int ip6_pkt_prohibit_out(struct n > +@@ -4419,6 +4438,17 @@ static int ip6_pkt_prohibit_out(struct n > return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, > IPSTATS_MIB_OUTNOROUTES); > } > > @@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> > /* > * Allocate a dst for local (unicast / anycast) address. > */ > -@@ -4896,7 +4926,8 @@ static int rtm_to_fib6_config(struct sk_ > +@@ -4899,7 +4929,8 @@ static int rtm_to_fib6_config(struct sk_ > if (rtm->rtm_type == RTN_UNREACHABLE || > rtm->rtm_type == RTN_BLACKHOLE || > rtm->rtm_type == RTN_PROHIBIT || > @@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> > cfg->fc_flags |= RTF_REJECT; > > if (rtm->rtm_type == RTN_LOCAL) > -@@ -6016,6 +6047,8 @@ static int ip6_route_dev_notify(struct n > +@@ -6019,6 +6050,8 @@ static int ip6_route_dev_notify(struct n > #ifdef CONFIG_IPV6_MULTIPLE_TABLES > net->ipv6.ip6_prohibit_entry->dst.dev = dev; > net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); > @@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> > net->ipv6.ip6_blk_hole_entry->dst.dev = dev; > net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); > #endif > -@@ -6027,6 +6060,7 @@ static int ip6_route_dev_notify(struct n > +@@ -6030,6 +6063,7 @@ static int ip6_route_dev_notify(struct n > in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev); > #ifdef CONFIG_IPV6_MULTIPLE_TABLES > in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev); > @@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> > in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev); > #endif > } > -@@ -6219,6 +6253,8 @@ static int __net_init ip6_route_net_init > +@@ -6222,6 +6256,8 @@ static int __net_init ip6_route_net_init > > #ifdef CONFIG_IPV6_MULTIPLE_TABLES > net->ipv6.fib6_has_custom_rules = false; > @@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> > net->ipv6.ip6_prohibit_entry = > kmemdup(&ip6_prohibit_entry_template, > sizeof(*net->ipv6.ip6_prohibit_entry), > GFP_KERNEL); > -@@ -6229,11 +6265,21 @@ static int __net_init ip6_route_net_init > +@@ -6232,11 +6268,21 @@ static int __net_init ip6_route_net_init > ip6_template_metrics, true); > INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached); > > @@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> > net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; > dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, > ip6_template_metrics, true); > -@@ -6257,6 +6303,8 @@ out: > +@@ -6260,6 +6306,8 @@ out: > return ret; > > #ifdef CONFIG_IPV6_MULTIPLE_TABLES > @@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> > out_ip6_prohibit_entry: > kfree(net->ipv6.ip6_prohibit_entry); > out_ip6_null_entry: > -@@ -6276,6 +6324,7 @@ static void __net_exit ip6_route_net_exi > +@@ -6279,6 +6327,7 @@ static void __net_exit ip6_route_net_exi > kfree(net->ipv6.ip6_null_entry); > #ifdef CONFIG_IPV6_MULTIPLE_TABLES > kfree(net->ipv6.ip6_prohibit_entry); > @@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> > kfree(net->ipv6.ip6_blk_hole_entry); > #endif > dst_entries_destroy(&net->ipv6.ip6_dst_ops); > -@@ -6353,6 +6402,9 @@ void __init ip6_route_init_special_entri > +@@ -6356,6 +6405,9 @@ void __init ip6_route_init_special_entri > init_net.ipv6.ip6_prohibit_entry->rt6i_idev = > in6_dev_get(init_net.loopback_dev); > init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; > init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = > in6_dev_get(init_net.loopback_dev); > diff --git > a/target/linux/generic/pending-5.4/740-net-sfp-remove-incomplete-100BASE-FX-and-100BASE-LX-.patch > b/target/linux/generic/pending-5.4/740-net-sfp-remove-incomplete-100BASE-FX-and-100BASE-LX-.patch > index 4de6305827..32d09a2ee1 100644 > --- > a/target/linux/generic/pending-5.4/740-net-sfp-remove-incomplete-100BASE-FX-and-100BASE-LX-.patch > +++ > b/target/linux/generic/pending-5.4/740-net-sfp-remove-incomplete-100BASE-FX-and-100BASE-LX-.patch > @@ -17,7 +17,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > > --- a/drivers/net/phy/sfp-bus.c > +++ b/drivers/net/phy/sfp-bus.c > -@@ -342,9 +342,7 @@ phy_interface_t sfp_select_interface(str > +@@ -416,9 +416,7 @@ phy_interface_t sfp_select_interface(str > if (phylink_test(link_modes, 2500baseX_Full)) > return PHY_INTERFACE_MODE_2500BASEX; > > diff --git > a/target/linux/generic/pending-5.4/741-net-sfp-derive-interface-mode-from-ethtool-link-mode.patch > b/target/linux/generic/pending-5.4/741-net-sfp-derive-interface-mode-from-ethtool-link-mode.patch > index 8158c78b0e..ecdf9281b0 100644 > --- > a/target/linux/generic/pending-5.4/741-net-sfp-derive-interface-mode-from-ethtool-link-mode.patch > +++ > b/target/linux/generic/pending-5.4/741-net-sfp-derive-interface-mode-from-ethtool-link-mode.patch > @@ -40,7 +40,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > "selection of interface failed, advertisement %*pb\n", > --- a/drivers/net/phy/sfp-bus.c > +++ b/drivers/net/phy/sfp-bus.c > -@@ -320,16 +320,12 @@ EXPORT_SYMBOL_GPL(sfp_parse_support); > +@@ -394,16 +394,12 @@ EXPORT_SYMBOL_GPL(sfp_parse_support); > /** > * sfp_select_interface() - Select appropriate phy_interface_t mode > * @bus: a pointer to the &struct sfp_bus structure for the sfp > module > @@ -59,7 +59,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > unsigned long *link_modes) > { > if (phylink_test(link_modes, 10000baseCR_Full) || > -@@ -342,7 +338,8 @@ phy_interface_t sfp_select_interface(str > +@@ -416,7 +412,8 @@ phy_interface_t sfp_select_interface(str > if (phylink_test(link_modes, 2500baseX_Full)) > return PHY_INTERFACE_MODE_2500BASEX; > > diff --git > a/target/linux/generic/pending-5.4/742-net-sfp-add-more-extended-compliance-codes.patch > b/target/linux/generic/pending-5.4/742-net-sfp-add-more-extended-compliance-codes.patch > index 0ddca287b9..b584d9669c 100644 > --- > a/target/linux/generic/pending-5.4/742-net-sfp-add-more-extended-compliance-codes.patch > +++ > b/target/linux/generic/pending-5.4/742-net-sfp-add-more-extended-compliance-codes.patch > @@ -19,7 +19,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > > --- a/drivers/net/phy/sfp-bus.c > +++ b/drivers/net/phy/sfp-bus.c > -@@ -124,35 +124,35 @@ int sfp_parse_port(struct sfp_bus *bus, > +@@ -130,35 +130,35 @@ int sfp_parse_port(struct sfp_bus *bus, > > /* port is the physical connector, set this from the connector > field. */ > switch (id->base.connector) { > @@ -70,7 +70,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > port = PORT_OTHER; > break; > default: > -@@ -261,22 +261,33 @@ void sfp_parse_support(struct sfp_bus *b > +@@ -332,22 +332,33 @@ void sfp_parse_support(struct sfp_bus *b > } > > switch (id->base.extended_cc) { > @@ -111,7 +111,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > default: > dev_warn(bus->sfp_dev, > "Unknown/unsupported extended compliance code: 0x%02x\n", > -@@ -301,7 +312,7 @@ void sfp_parse_support(struct sfp_bus *b > +@@ -372,7 +383,7 @@ void sfp_parse_support(struct sfp_bus *b > */ > if (bitmap_empty(modes, __ETHTOOL_LINK_MODE_MASK_NBITS)) { > /* If the encoding and bit rate allows 1000baseX */ > @@ -120,7 +120,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > br_min <= 1300 && br_max >= 1200) > phylink_set(modes, 1000baseX_Full); > } > -@@ -332,7 +343,8 @@ phy_interface_t sfp_select_interface(str > +@@ -406,7 +417,8 @@ phy_interface_t sfp_select_interface(str > phylink_test(link_modes, 10000baseSR_Full) || > phylink_test(link_modes, 10000baseLR_Full) || > phylink_test(link_modes, 10000baseLRM_Full) || > diff --git > a/target/linux/generic/pending-5.4/743-net-sfp-add-module-start-stop-upstream-notifications.patch > b/target/linux/generic/pending-5.4/743-net-sfp-add-module-start-stop-upstream-notifications.patch > index 44de1b2a32..de1608cc8b 100644 > --- > a/target/linux/generic/pending-5.4/743-net-sfp-add-module-start-stop-upstream-notifications.patch > +++ > b/target/linux/generic/pending-5.4/743-net-sfp-add-module-start-stop-upstream-notifications.patch > @@ -32,7 +32,7 @@ Signed-off-by: Russell King > <rmk+kernel@armlinux.org.uk> > > --- a/drivers/net/phy/sfp-bus.c > +++ b/drivers/net/phy/sfp-bus.c > -@@ -712,6 +712,27 @@ void sfp_module_remove(struct sfp_bus *b > +@@ -788,6 +788,27 @@ void sfp_module_remove(struct sfp_bus *b > } > EXPORT_SYMBOL_GPL(sfp_module_remove); > > diff --git > a/target/linux/generic/pending-5.4/750-net-phylink-delay-MAC-configuration-for-copper-SFP-m.patch > b/target/linux/generic/pending-5.4/750-net-phylink-delay-MAC-configuration-for-copper-SFP-m.patch > index 667170a398..9ddf69514d 100644 > --- > a/target/linux/generic/pending-5.4/750-net-phylink-delay-MAC-configuration-for-copper-SFP-m.patch > +++ > b/target/linux/generic/pending-5.4/750-net-phylink-delay-MAC-configuration-for-copper-SFP-m.patch > @@ -134,7 +134,7 @@ Signed-off-by: David S. Miller > <davem@davemloft.net> > > --- a/drivers/net/phy/sfp-bus.c > +++ b/drivers/net/phy/sfp-bus.c > -@@ -103,6 +103,7 @@ static const struct sfp_quirk *sfp_looku > +@@ -109,6 +109,7 @@ static const struct sfp_quirk *sfp_looku > > return NULL; > } > @@ -142,9 +142,9 @@ Signed-off-by: David S. Miller > <davem@davemloft.net> > /** > * sfp_parse_port() - Parse the EEPROM base ID, setting the port > type > * @bus: a pointer to the &struct sfp_bus structure for the sfp > module > -@@ -179,6 +180,33 @@ int sfp_parse_port(struct sfp_bus *bus, > - EXPORT_SYMBOL_GPL(sfp_parse_port); > - > +@@ -250,6 +251,33 @@ static const struct sfp_quirk *sfp_looku > + return NULL; > + } > /** > + * sfp_may_have_phy() - indicate whether the module may have a PHY > + * @bus: a pointer to the &struct sfp_bus structure for the sfp > module > diff --git > a/target/linux/layerscape/patches-5.4/806-dma-0019-dmaengine-fsl-edma-calculate-the-real-count-for-slav.patch > b/target/linux/layerscape/patches-5.4/806-dma-0019-dmaengine-fsl-edma-calculate-the-real-count-for-slav.patch > index 4278711b80..f8bbaaffa1 100644 > --- > a/target/linux/layerscape/patches-5.4/806-dma-0019-dmaengine-fsl-edma-calculate-the-real-count-for-slav.patch > +++ > b/target/linux/layerscape/patches-5.4/806-dma-0019-dmaengine-fsl-edma-calculate-the-real-count-for-slav.patch > @@ -60,9 +60,9 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com> > struct dma_async_tx_descriptor *fsl_edma_prep_dma_cyclic( > --- a/drivers/dma/fsl-edma.c > +++ b/drivers/dma/fsl-edma.c > -@@ -46,6 +46,7 @@ static irqreturn_t fsl_edma_tx_handler(i > +@@ -53,6 +53,7 @@ static irqreturn_t fsl_edma_tx_handler(i > + } > > - spin_lock(&fsl_chan->vchan.lock); > if (!fsl_chan->edesc->iscyclic) { > + fsl_edma_get_realcnt(fsl_chan); > list_del(&fsl_chan->edesc->vdesc.node); > diff --git > a/target/linux/layerscape/patches-5.4/806-dma-0028-dmaengine-fsl-edma-Add-eDMA-support-for-QorIQ-LS1028.patch > b/target/linux/layerscape/patches-5.4/806-dma-0028-dmaengine-fsl-edma-Add-eDMA-support-for-QorIQ-LS1028.patch > index 611f96b1a8..4707eccdab 100644 > --- > a/target/linux/layerscape/patches-5.4/806-dma-0028-dmaengine-fsl-edma-Add-eDMA-support-for-QorIQ-LS1028.patch > +++ > b/target/linux/layerscape/patches-5.4/806-dma-0028-dmaengine-fsl-edma-Add-eDMA-support-for-QorIQ-LS1028.patch > @@ -70,7 +70,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org> > }; > --- a/drivers/dma/fsl-edma.c > +++ b/drivers/dma/fsl-edma.c > -@@ -234,6 +234,13 @@ static struct fsl_edma_drvdata vf610_dat > +@@ -241,6 +241,13 @@ static struct fsl_edma_drvdata vf610_dat > .setup_irq = fsl_edma_irq_init, > }; > > @@ -84,7 +84,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org> > static struct fsl_edma_drvdata imx7ulp_data = { > .version = v3, > .dmamuxs = 1, > -@@ -243,6 +250,7 @@ static struct fsl_edma_drvdata imx7ulp_d > +@@ -250,6 +257,7 @@ static struct fsl_edma_drvdata imx7ulp_d > > static const struct of_device_id fsl_edma_dt_ids[] = { > { .compatible = "fsl,vf610-edma", .data = &vf610_data}, > diff --git > a/target/linux/mvebu/patches-5.4/012-net-mvneta-rely-on-build_skb-in-mvneta_rx_swbm-poll-.patch > b/target/linux/mvebu/patches-5.4/012-net-mvneta-rely-on-build_skb-in-mvneta_rx_swbm-poll-.patch > index 13ed9e4c8a..e3269a592f 100644 > --- > a/target/linux/mvebu/patches-5.4/012-net-mvneta-rely-on-build_skb-in-mvneta_rx_swbm-poll-.patch > +++ > b/target/linux/mvebu/patches-5.4/012-net-mvneta-rely-on-build_skb-in-mvneta_rx_swbm-poll-.patch > @@ -292,7 +292,7 @@ Signed-off-by: David S. Miller > <davem@davemloft.net> > MVNETA_RX_BUF_SIZE(pp->pkt_size)); > mvneta_rxq_bm_disable(pp, rxq); > mvneta_rxq_fill(pp, rxq, rxq->size); > -@@ -4700,7 +4705,7 @@ static int mvneta_probe(struct platform_ > +@@ -4708,7 +4713,7 @@ static int mvneta_probe(struct platform_ > SET_NETDEV_DEV(dev, &pdev->dev); > > pp->id = global_port_id++; > diff --git > a/target/linux/mvebu/patches-5.4/013-net-mvneta-add-basic-XDP-support.patch > b/target/linux/mvebu/patches-5.4/013-net-mvneta-add-basic-XDP-support.patch > index 06968bdaef..62c00ddeb1 100644 > --- > a/target/linux/mvebu/patches-5.4/013-net-mvneta-add-basic-XDP-support.patch > +++ > b/target/linux/mvebu/patches-5.4/013-net-mvneta-add-basic-XDP-support.patch > @@ -300,7 +300,7 @@ Signed-off-by: David S. Miller > <davem@davemloft.net> > }; > > static const struct ethtool_ops mvneta_eth_tool_ops = { > -@@ -4705,7 +4835,7 @@ static int mvneta_probe(struct platform_ > +@@ -4713,7 +4843,7 @@ static int mvneta_probe(struct platform_ > SET_NETDEV_DEV(dev, &pdev->dev); > > pp->id = global_port_id++; > diff --git > a/target/linux/mvebu/patches-5.4/023-net-mvneta-fix-XDP-support-if-sw-bm-is-used-as-fallb.patch > b/target/linux/mvebu/patches-5.4/023-net-mvneta-fix-XDP-support-if-sw-bm-is-used-as-fallb.patch > index f76b27a36d..86bffa538a 100644 > --- > a/target/linux/mvebu/patches-5.4/023-net-mvneta-fix-XDP-support-if-sw-bm-is-used-as-fallb.patch > +++ > b/target/linux/mvebu/patches-5.4/023-net-mvneta-fix-XDP-support-if-sw-bm-is-used-as-fallb.patch > @@ -38,7 +38,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> > mvreg_write(pp, MVNETA_ACC_MODE, MVNETA_ACC_MODE_EXT1); > netdev_info(pp->dev, "fail to update MTU, fall back to software > BM\n"); > } > -@@ -4976,7 +4976,6 @@ static int mvneta_probe(struct platform_ > +@@ -4984,7 +4984,6 @@ static int mvneta_probe(struct platform_ > SET_NETDEV_DEV(dev, &pdev->dev); > > pp->id = global_port_id++; > @@ -46,7 +46,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> > > /* Obtain access to BM resources if enabled and already > initialized */ > bm_node = of_parse_phandle(dn, "buffer-manager", 0); > -@@ -5001,6 +5000,10 @@ static int mvneta_probe(struct platform_ > +@@ -5009,6 +5008,10 @@ static int mvneta_probe(struct platform_ > } > of_node_put(bm_node); > > @@ -57,7 +57,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> > err = mvneta_init(&pdev->dev, pp); > if (err < 0) > goto err_netdev; > -@@ -5154,6 +5157,7 @@ static int mvneta_resume(struct device * > +@@ -5166,6 +5169,7 @@ static int mvneta_resume(struct device * > err = mvneta_bm_port_init(pdev, pp); > if (err < 0) { > dev_info(&pdev->dev, "use SW buffer management\n"); > diff --git > a/target/linux/mvebu/patches-5.4/561-mvebu-armada-38x-enable-libata-leds.patch > b/target/linux/mvebu/patches-5.4/561-mvebu-armada-38x-enable-libata-leds.patch > index 3f9ad364de..b8ab700c97 100644 > --- > a/target/linux/mvebu/patches-5.4/561-mvebu-armada-38x-enable-libata-leds.patch > +++ > b/target/linux/mvebu/patches-5.4/561-mvebu-armada-38x-enable-libata-leds.patch > @@ -1,6 +1,6 @@ > --- a/arch/arm/mach-mvebu/Kconfig > +++ b/arch/arm/mach-mvebu/Kconfig > -@@ -68,6 +68,7 @@ > +@@ -69,6 +69,7 @@ config MACH_ARMADA_38X > select HAVE_SMP > select MACH_MVEBU_V7 > select PINCTRL_ARMADA_38X > diff --git > a/target/linux/ramips/patches-5.4/0069-awake-rt305x-dwc2-controller.patch > b/target/linux/ramips/patches-5.4/0069-awake-rt305x-dwc2-controller.patch > index f5283ed123..7110a5b808 100644 > --- > a/target/linux/ramips/patches-5.4/0069-awake-rt305x-dwc2-controller.patch > +++ > b/target/linux/ramips/patches-5.4/0069-awake-rt305x-dwc2-controller.patch > @@ -1,6 +1,6 @@ > --- a/drivers/usb/dwc2/platform.c > +++ b/drivers/usb/dwc2/platform.c > -@@ -430,6 +430,12 @@ static int dwc2_driver_probe(struct plat > +@@ -431,6 +431,12 @@ static int dwc2_driver_probe(struct plat > if (retval) > return retval; > > -- > 2.24.3 (Apple Git-128) > > > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Hi On 2020-07-25, Kevin Darbyshire-Bryant wrote: > Refresh patches. > > Remove upstreamed patches: > > bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch > bcm63xx/patches-5.4/024-v5.8-mtd-rawnand-brcmnand-fix-CS0-layout.patch > > Drop the cake hack as upstream have backported the changes themselves, > but in a slightly different way. > > generic/hack-5.4/641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch > > Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> [...] Runtime tested on: Tested-by: Stefan Lippers-Hollmann <s.l-h@gmx.de> [ath79/tl-wdr3600; ipq806x/nbg6817; ipq40xx/map-ac2200] Build tested on: - ath79 - ath79-tiny - ipq40xx - ipq806x - lantiq Regards Stefan Lippers-Hollmann
diff --git a/include/kernel-version.mk b/include/kernel-version.mk index 8bfce3ecfe..08bde0efc6 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -8,11 +8,11 @@ endif LINUX_VERSION-4.14 = .187 LINUX_VERSION-4.19 = .131 -LINUX_VERSION-5.4 = .52 +LINUX_VERSION-5.4 = .53 LINUX_KERNEL_HASH-4.14.187 = 5b223475eaeea196aa7e127d3f253bca5c35d8afdc72ca75230ce1ecdd1454bd LINUX_KERNEL_HASH-4.19.131 = 19dfb9f6cc4ba30104b65dcce7d78240a4ae188cb366747d5f8eae35e98964ba -LINUX_KERNEL_HASH-5.4.52 = 037efa531120b1c20ff55e78cd3e17288b1804b3a57dc31de760837b3bea5d3a +LINUX_KERNEL_HASH-5.4.53 = faa7b6f99220d5726f0eaee74a6394f0a3b89be1a75254f3804630211f3d6d21 remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) diff --git a/target/linux/ath79/patches-5.4/910-unaligned_access_hacks.patch b/target/linux/ath79/patches-5.4/910-unaligned_access_hacks.patch index 053b72023f..da6f331f85 100644 --- a/target/linux/ath79/patches-5.4/910-unaligned_access_hacks.patch +++ b/target/linux/ath79/patches-5.4/910-unaligned_access_hacks.patch @@ -556,7 +556,7 @@ #include <linux/netdevice.h> --- a/include/net/inet_ecn.h +++ b/include/net/inet_ecn.h -@@ -139,9 +139,9 @@ static inline int IP6_ECN_set_ce(struct +@@ -140,9 +140,9 @@ static inline int IP6_ECN_set_ce(struct if (INET_ECN_is_not_ect(ipv6_get_dsfield(iph))) return 0; diff --git a/target/linux/bcm27xx/patches-5.4/950-0283-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch b/target/linux/bcm27xx/patches-5.4/950-0283-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch index 26a54c22c9..f265beb34e 100644 --- a/target/linux/bcm27xx/patches-5.4/950-0283-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch +++ b/target/linux/bcm27xx/patches-5.4/950-0283-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch @@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org> #define USB_VENDOR_ID_BELKIN 0x050d #define USB_DEVICE_ID_FLIP_KVM 0x3201 -@@ -1234,6 +1237,9 @@ +@@ -1237,6 +1240,9 @@ #define USB_VENDOR_ID_XAT 0x2505 #define USB_DEVICE_ID_XAT_CSR 0x0220 @@ -53,7 +53,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org> { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL }, -@@ -178,6 +179,7 @@ static const struct hid_device_id hid_qu +@@ -179,6 +180,7 @@ static const struct hid_device_id hid_qu { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT }, diff --git a/target/linux/bcm53xx/patches-5.4/905-BCM53573-minor-hacks.patch b/target/linux/bcm53xx/patches-5.4/905-BCM53573-minor-hacks.patch index e3806b4e72..3b0a3323af 100644 --- a/target/linux/bcm53xx/patches-5.4/905-BCM53573-minor-hacks.patch +++ b/target/linux/bcm53xx/patches-5.4/905-BCM53573-minor-hacks.patch @@ -61,7 +61,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl> #include <linux/clockchips.h> #include <linux/clocksource.h> #include <linux/interrupt.h> -@@ -899,6 +900,16 @@ static void arch_timer_of_configure_rate +@@ -910,6 +911,16 @@ static void arch_timer_of_configure_rate if (of_property_read_u32(np, "clock-frequency", &arch_timer_rate)) arch_timer_rate = rate; diff --git a/target/linux/bcm63xx/patches-5.4/021-v5.8-mtd-rawnand-brcmnand-improve-hamming-oob-layout.patch b/target/linux/bcm63xx/patches-5.4/021-v5.8-mtd-rawnand-brcmnand-improve-hamming-oob-layout.patch index 1df2411035..78fa1b39e3 100644 --- a/target/linux/bcm63xx/patches-5.4/021-v5.8-mtd-rawnand-brcmnand-improve-hamming-oob-layout.patch +++ b/target/linux/bcm63xx/patches-5.4/021-v5.8-mtd-rawnand-brcmnand-improve-hamming-oob-layout.patch @@ -40,7 +40,7 @@ Link: https://lore.kernel.org/linux-mtd/20200512075733.745374-3-noltari@gmail.co --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c -@@ -1003,33 +1003,30 @@ static int brcmnand_hamming_ooblayout_fr +@@ -1004,33 +1004,30 @@ static int brcmnand_hamming_ooblayout_fr struct brcmnand_cfg *cfg = &host->hwcfg; int sas = cfg->spare_area_size << cfg->sector_size_1k; int sectors = cfg->page_size / (512 << cfg->sector_size_1k); diff --git a/target/linux/bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch b/target/linux/bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch deleted file mode 100644 index e8a9f14881..0000000000 --- a/target/linux/bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch +++ /dev/null @@ -1,63 +0,0 @@ -From dcb351c03f2fa6a599de1061b174167e03ee312b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com> -Date: Tue, 12 May 2020 10:24:51 +0200 -Subject: [PATCH] mtd: rawnand: brcmnand: correctly verify erased pages -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The current code checks that the whole OOB area is erased. -This is a problem when JFFS2 cleanmarkers are added to the OOB, since it will -fail due to the usable OOB bytes not being 0xff. -Correct this by only checking that data and ECC bytes aren't 0xff. - -Fixes: 02b88eea9f9c ("mtd: brcmnand: Add check for erased page bitflips") -Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> -Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> -Link: https://lore.kernel.org/linux-mtd/20200512082451.771212-1-noltari@gmail.com ---- - drivers/mtd/nand/raw/brcmnand/brcmnand.c | 19 +++++++++++-------- - 1 file changed, 11 insertions(+), 8 deletions(-) - ---- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c -+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c -@@ -1787,28 +1787,31 @@ static int brcmnand_read_by_pio(struct m - static int brcmstb_nand_verify_erased_page(struct mtd_info *mtd, - struct nand_chip *chip, void *buf, u64 addr) - { -- int i, sas; -- void *oob = chip->oob_poi; -+ struct mtd_oob_region ecc; -+ int i; - int bitflips = 0; - int page = addr >> chip->page_shift; - int ret; -+ void *ecc_bytes; - void *ecc_chunk; - - if (!buf) - buf = nand_get_data_buf(chip); - -- sas = mtd->oobsize / chip->ecc.steps; -- - /* read without ecc for verification */ - ret = chip->ecc.read_page_raw(chip, buf, true, page); - if (ret) - return ret; - -- for (i = 0; i < chip->ecc.steps; i++, oob += sas) { -+ for (i = 0; i < chip->ecc.steps; i++) { - ecc_chunk = buf + chip->ecc.size * i; -- ret = nand_check_erased_ecc_chunk(ecc_chunk, -- chip->ecc.size, -- oob, sas, NULL, 0, -+ -+ mtd_ooblayout_ecc(mtd, i, &ecc); -+ ecc_bytes = chip->oob_poi + ecc.offset; -+ -+ ret = nand_check_erased_ecc_chunk(ecc_chunk, chip->ecc.size, -+ ecc_bytes, ecc.length, -+ NULL, 0, - chip->ecc.strength); - if (ret < 0) - return ret; diff --git a/target/linux/bcm63xx/patches-5.4/024-v5.8-mtd-rawnand-brcmnand-fix-CS0-layout.patch b/target/linux/bcm63xx/patches-5.4/024-v5.8-mtd-rawnand-brcmnand-fix-CS0-layout.patch deleted file mode 100644 index 0eeefe12de..0000000000 --- a/target/linux/bcm63xx/patches-5.4/024-v5.8-mtd-rawnand-brcmnand-fix-CS0-layout.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 3d3fb3c5be9ce07fa85d8f67fb3922e4613b955b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com> -Date: Fri, 22 May 2020 14:15:21 +0200 -Subject: [PATCH] mtd: rawnand: brcmnand: fix CS0 layout -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Only v3.3-v5.0 have a different CS0 layout. -Controllers before v3.3 use the same layout for every CS. - -Fixes: 27c5b17cd1b1 ("mtd: nand: add NAND driver "library" for Broadcom STB NAND controller") -Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> -Acked-by: Florian Fainelli <f.fainelli@gmail.com> -Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> -Link: https://lore.kernel.org/linux-mtd/20200522121524.4161539-3-noltari@gmail.com ---- - drivers/mtd/nand/raw/brcmnand/brcmnand.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - ---- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c -+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c -@@ -537,8 +537,9 @@ static int brcmnand_revision_init(struct - } else { - ctrl->cs_offsets = brcmnand_cs_offsets; - -- /* v5.0 and earlier has a different CS0 offset layout */ -- if (ctrl->nand_version <= 0x0500) -+ /* v3.3-5.0 have a different CS0 offset layout */ -+ if (ctrl->nand_version >= 0x0303 && -+ ctrl->nand_version <= 0x0500) - ctrl->cs0_offsets = brcmnand_cs_offsets_cs0; - } - diff --git a/target/linux/generic/backport-5.4/395-v5.8-net-sch_cake-Take-advantage-of-skb-hash-where-appropriate.patch b/target/linux/generic/backport-5.4/395-v5.8-net-sch_cake-Take-advantage-of-skb-hash-where-appropriate.patch index 12962135d0..a4981acdee 100644 --- a/target/linux/generic/backport-5.4/395-v5.8-net-sch_cake-Take-advantage-of-skb-hash-where-appropriate.patch +++ b/target/linux/generic/backport-5.4/395-v5.8-net-sch_cake-Take-advantage-of-skb-hash-where-appropriate.patch @@ -67,7 +67,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> + bool rev = !skb->_nfct, upd = false; + __be32 ip; - if (tc_skb_protocol(skb) != htons(ETH_P_IP)) + if (skb_protocol(skb, true) != htons(ETH_P_IP)) - return; + return false; diff --git a/target/linux/generic/backport-5.4/716-v5.4-net-sfp-move-fwnode-parsing-into-sfp-bus-layer.patch b/target/linux/generic/backport-5.4/716-v5.4-net-sfp-move-fwnode-parsing-into-sfp-bus-layer.patch index 858c584c05..92fe224873 100644 --- a/target/linux/generic/backport-5.4/716-v5.4-net-sfp-move-fwnode-parsing-into-sfp-bus-layer.patch +++ b/target/linux/generic/backport-5.4/716-v5.4-net-sfp-move-fwnode-parsing-into-sfp-bus-layer.patch @@ -59,7 +59,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> #include <linux/rtnetlink.h> #include <linux/slab.h> -@@ -445,45 +446,63 @@ static void sfp_upstream_clear(struct sf +@@ -520,45 +521,63 @@ static void sfp_upstream_clear(struct sf } /** diff --git a/target/linux/generic/backport-5.4/717-v5.5-net-sfp-rework-upstream-interface.patch b/target/linux/generic/backport-5.4/717-v5.5-net-sfp-rework-upstream-interface.patch index f3454851bf..9175f2557a 100644 --- a/target/linux/generic/backport-5.4/717-v5.5-net-sfp-rework-upstream-interface.patch +++ b/target/linux/generic/backport-5.4/717-v5.5-net-sfp-rework-upstream-interface.patch @@ -53,7 +53,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> --- a/drivers/net/phy/sfp-bus.c +++ b/drivers/net/phy/sfp-bus.c -@@ -329,10 +329,19 @@ static void sfp_bus_release(struct kref +@@ -404,10 +404,19 @@ static void sfp_bus_release(struct kref kfree(bus); } @@ -75,7 +75,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> static int sfp_register_bus(struct sfp_bus *bus) { -@@ -348,11 +357,11 @@ static int sfp_register_bus(struct sfp_b +@@ -423,11 +432,11 @@ static int sfp_register_bus(struct sfp_b return ret; } } @@ -88,7 +88,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> return 0; } -@@ -446,13 +455,12 @@ static void sfp_upstream_clear(struct sf +@@ -521,13 +530,12 @@ static void sfp_upstream_clear(struct sf } /** @@ -106,7 +106,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> * * Returns: on success, a pointer to the sfp_bus structure, * %NULL if no SFP is specified, -@@ -462,9 +470,7 @@ static void sfp_upstream_clear(struct sf +@@ -537,9 +545,7 @@ static void sfp_upstream_clear(struct sf * %-ENOMEM if we failed to allocate the bus. * an error from the upstream's connect_phy() method. */ @@ -117,7 +117,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> { struct fwnode_reference_args ref; struct sfp_bus *bus; -@@ -482,7 +488,39 @@ struct sfp_bus *sfp_register_upstream_no +@@ -557,7 +563,39 @@ struct sfp_bus *sfp_register_upstream_no if (!bus) return ERR_PTR(-ENOMEM); @@ -157,7 +157,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> bus->upstream_ops = ops; bus->upstream = upstream; -@@ -495,33 +533,33 @@ struct sfp_bus *sfp_register_upstream_no +@@ -570,33 +608,33 @@ struct sfp_bus *sfp_register_upstream_no } rtnl_unlock(); diff --git a/target/linux/generic/backport-5.4/718-v5.5-net-sfp-fix-sfp_bus_put-kernel-documentation.patch b/target/linux/generic/backport-5.4/718-v5.5-net-sfp-fix-sfp_bus_put-kernel-documentation.patch index 13dc5216f9..c7bfd8a304 100644 --- a/target/linux/generic/backport-5.4/718-v5.5-net-sfp-fix-sfp_bus_put-kernel-documentation.patch +++ b/target/linux/generic/backport-5.4/718-v5.5-net-sfp-fix-sfp_bus_put-kernel-documentation.patch @@ -16,7 +16,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> --- a/drivers/net/phy/sfp-bus.c +++ b/drivers/net/phy/sfp-bus.c -@@ -331,7 +331,7 @@ static void sfp_bus_release(struct kref +@@ -406,7 +406,7 @@ static void sfp_bus_release(struct kref /** * sfp_bus_put() - put a reference on the &struct sfp_bus diff --git a/target/linux/generic/backport-5.4/742-v5.5-net-sfp-add-support-for-module-quirks.patch b/target/linux/generic/backport-5.4/742-v5.5-net-sfp-add-support-for-module-quirks.patch index 46c56a655a..ed5ea29a1a 100644 --- a/target/linux/generic/backport-5.4/742-v5.5-net-sfp-add-support-for-module-quirks.patch +++ b/target/linux/generic/backport-5.4/742-v5.5-net-sfp-add-support-for-module-quirks.patch @@ -13,9 +13,9 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> --- a/drivers/net/phy/sfp-bus.c +++ b/drivers/net/phy/sfp-bus.c -@@ -10,6 +10,12 @@ - - #include "sfp.h" +@@ -16,6 +16,12 @@ struct sfp_quirk { + void (*modes)(const struct sfp_eeprom_id *id, unsigned long *modes); + }; +struct sfp_quirk { + const char *vendor; @@ -26,17 +26,9 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> /** * struct sfp_bus - internal representation of a sfp bus */ -@@ -22,6 +28,7 @@ struct sfp_bus { - const struct sfp_socket_ops *socket_ops; - struct device *sfp_dev; - struct sfp *sfp; -+ const struct sfp_quirk *sfp_quirk; - - const struct sfp_upstream_ops *upstream_ops; - void *upstream; -@@ -31,6 +38,46 @@ struct sfp_bus { - bool started; - }; +@@ -178,6 +184,46 @@ int sfp_parse_port(struct sfp_bus *bus, + } + EXPORT_SYMBOL_GPL(sfp_parse_port); +static const struct sfp_quirk sfp_quirks[] = { +}; @@ -79,11 +71,11 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> + return NULL; +} /** - * sfp_parse_port() - Parse the EEPROM base ID, setting the port type + * sfp_parse_support() - Parse the eeprom id for supported link modes * @bus: a pointer to the &struct sfp_bus structure for the sfp module -@@ -234,6 +281,9 @@ void sfp_parse_support(struct sfp_bus *b - phylink_set(modes, 1000baseX_Full); - } +@@ -309,6 +355,9 @@ void sfp_parse_support(struct sfp_bus *b + if (bus->sfp_quirk) + bus->sfp_quirk->modes(id, modes); + if (bus->sfp_quirk) + bus->sfp_quirk->modes(id, modes); @@ -91,21 +83,12 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> bitmap_or(support, support, modes, __ETHTOOL_LINK_MODE_MASK_NBITS); phylink_set(support, Autoneg); -@@ -610,6 +660,8 @@ int sfp_module_insert(struct sfp_bus *bu - const struct sfp_upstream_ops *ops = sfp_get_upstream_ops(bus); - int ret = 0; +@@ -687,6 +736,8 @@ int sfp_module_insert(struct sfp_bus *bu + + bus->sfp_quirk = sfp_lookup_quirk(id); + bus->sfp_quirk = sfp_lookup_quirk(id); + if (ops && ops->module_insert) ret = ops->module_insert(bus->upstream, id); -@@ -623,6 +675,8 @@ void sfp_module_remove(struct sfp_bus *b - - if (ops && ops->module_remove) - ops->module_remove(bus->upstream); -+ -+ bus->sfp_quirk = NULL; - } - EXPORT_SYMBOL_GPL(sfp_module_remove); - diff --git a/target/linux/generic/backport-5.4/743-v5.5-net-sfp-add-some-quirks-for-GPON-modules.patch b/target/linux/generic/backport-5.4/743-v5.5-net-sfp-add-some-quirks-for-GPON-modules.patch index 0b085ff094..a19c827389 100644 --- a/target/linux/generic/backport-5.4/743-v5.5-net-sfp-add-some-quirks-for-GPON-modules.patch +++ b/target/linux/generic/backport-5.4/743-v5.5-net-sfp-add-some-quirks-for-GPON-modules.patch @@ -17,9 +17,9 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> --- a/drivers/net/phy/sfp-bus.c +++ b/drivers/net/phy/sfp-bus.c -@@ -38,7 +38,32 @@ struct sfp_bus { - bool started; - }; +@@ -184,7 +184,32 @@ int sfp_parse_port(struct sfp_bus *bus, + } + EXPORT_SYMBOL_GPL(sfp_parse_port); +static void sfp_quirk_2500basex(const struct sfp_eeprom_id *id, + unsigned long *modes) diff --git a/target/linux/generic/hack-5.4/641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch b/target/linux/generic/hack-5.4/641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch deleted file mode 100644 index e651743c1d..0000000000 --- a/target/linux/generic/hack-5.4/641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch +++ /dev/null @@ -1,114 +0,0 @@ -From a00590d570212c3c633bd463cef8ec7377cc7993 Mon Sep 17 00:00:00 2001 -From: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> -Date: Tue, 30 Jun 2020 12:07:44 +0100 -Subject: [PATCH] sch_cake: fix IP protocol handling in the presence of VLAN - tags -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -From: Ilya Ponetayev <i.ponetaev@ndmsystems.com> - -CAKE was using the return value of tc_skb_protocol() and expecting it to be -the IP protocol type. This can fail in the presence of QinQ VLAN tags, -making CAKE unable to handle ECN marking and diffserv parsing in this case. -Fix this by implementing our own version of tc_skb_protocol(), which will -use skb->protocol directly, but also parse and skip over any VLAN tags and -return the inner protocol number instead. - -Also fix CE marking by implementing a version of INET_ECN_set_ce() that -uses the same parsing routine. - -Fixes: ea82511518f4 ("sch_cake: Add NAT awareness to packet classifier") -Fixes: b2100cc56fca ("sch_cake: Use tc_skb_protocol() helper for getting packet protocol") -Fixes: 046f6fd5daef ("sched: Add Common Applications Kept Enhanced (cake) qdisc") -Signed-off-by: Ilya Ponetayev <i.ponetaev@ndmsystems.com> -[ squash original two patches, rewrite commit message ] -Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com> -Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> ---- - net/sched/sch_cake.c | 52 +++++++++++++++++++++++++++++++++++++++++--- - 1 file changed, 49 insertions(+), 3 deletions(-) - ---- a/net/sched/sch_cake.c -+++ b/net/sched/sch_cake.c -@@ -497,6 +497,52 @@ static bool cobalt_queue_empty(struct co - return down; - } - -+static __be16 cake_skb_proto(const struct sk_buff *skb) -+{ -+ unsigned int offset = skb_mac_offset(skb) + sizeof(struct ethhdr); -+ __be16 proto = skb->protocol; -+ struct vlan_hdr vhdr, *vh; -+ -+ while (proto == htons(ETH_P_8021Q) || proto == htons(ETH_P_8021AD)) { -+ vh = skb_header_pointer(skb, offset, sizeof(vhdr), &vhdr); -+ if (!vh) -+ break; -+ -+ proto = vh->h_vlan_encapsulated_proto; -+ offset += sizeof(vhdr); -+ } -+ -+ return proto; -+} -+ -+static int cake_set_ce(struct sk_buff *skb) -+{ -+ int wlen = skb_network_offset(skb); -+ -+ switch (cake_skb_proto(skb)) { -+ case htons(ETH_P_IP): -+ wlen += sizeof(struct iphdr); -+ if (!pskb_may_pull(skb, wlen) || -+ skb_try_make_writable(skb, wlen)) -+ return 0; -+ -+ return IP_ECN_set_ce(ip_hdr(skb)); -+ -+ case htons(ETH_P_IPV6): -+ wlen += sizeof(struct ipv6hdr); -+ if (!pskb_may_pull(skb, wlen) || -+ skb_try_make_writable(skb, wlen)) -+ return 0; -+ -+ return IP6_ECN_set_ce(skb, ipv6_hdr(skb)); -+ -+ default: -+ return 0; -+ } -+ -+ return 0; -+} -+ - /* Call this with a freshly dequeued packet for possible congestion marking. - * Returns true as an instruction to drop the packet, false for delivery. - */ -@@ -549,7 +595,7 @@ static bool cobalt_should_drop(struct co - - if (next_due && vars->dropping) { - /* Use ECN mark if possible, otherwise drop */ -- drop = !(vars->ecn_marked = INET_ECN_set_ce(skb)); -+ drop = !(vars->ecn_marked = cake_set_ce(skb)); - - vars->count++; - if (!vars->count) -@@ -592,7 +638,7 @@ static bool cake_update_flowkeys(struct - bool rev = !skb->_nfct, upd = false; - __be32 ip; - -- if (tc_skb_protocol(skb) != htons(ETH_P_IP)) -+ if (cake_skb_proto(skb) != htons(ETH_P_IP)) - return false; - - if (!nf_ct_get_tuple_skb(&tuple, skb)) -@@ -1557,7 +1603,7 @@ static u8 cake_handle_diffserv(struct sk - u16 *buf, buf_; - u8 dscp; - -- switch (tc_skb_protocol(skb)) { -+ switch (cake_skb_proto(skb)) { - case htons(ETH_P_IP): - buf = skb_header_pointer(skb, offset, sizeof(buf_), &buf_); - if (unlikely(!buf)) diff --git a/target/linux/generic/pending-5.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-5.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index 766abc7489..232aee9634 100644 --- a/target/linux/generic/pending-5.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/pending-5.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch @@ -138,7 +138,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> static const struct rt6_info ip6_blk_hole_entry_template = { .dst = { .__refcnt = ATOMIC_INIT(1), -@@ -1044,6 +1058,7 @@ static const int fib6_prop[RTN_MAX + 1] +@@ -1047,6 +1061,7 @@ static const int fib6_prop[RTN_MAX + 1] [RTN_BLACKHOLE] = -EINVAL, [RTN_UNREACHABLE] = -EHOSTUNREACH, [RTN_PROHIBIT] = -EACCES, @@ -146,7 +146,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> [RTN_THROW] = -EAGAIN, [RTN_NAT] = -EINVAL, [RTN_XRESOLVE] = -EINVAL, -@@ -1081,6 +1096,10 @@ static void ip6_rt_init_dst_reject(struc +@@ -1084,6 +1099,10 @@ static void ip6_rt_init_dst_reject(struc rt->dst.output = ip6_pkt_prohibit_out; rt->dst.input = ip6_pkt_prohibit; break; @@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> case RTN_THROW: case RTN_UNREACHABLE: default: -@@ -4416,6 +4435,17 @@ static int ip6_pkt_prohibit_out(struct n +@@ -4419,6 +4438,17 @@ static int ip6_pkt_prohibit_out(struct n return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); } @@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> /* * Allocate a dst for local (unicast / anycast) address. */ -@@ -4896,7 +4926,8 @@ static int rtm_to_fib6_config(struct sk_ +@@ -4899,7 +4929,8 @@ static int rtm_to_fib6_config(struct sk_ if (rtm->rtm_type == RTN_UNREACHABLE || rtm->rtm_type == RTN_BLACKHOLE || rtm->rtm_type == RTN_PROHIBIT || @@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> cfg->fc_flags |= RTF_REJECT; if (rtm->rtm_type == RTN_LOCAL) -@@ -6016,6 +6047,8 @@ static int ip6_route_dev_notify(struct n +@@ -6019,6 +6050,8 @@ static int ip6_route_dev_notify(struct n #ifdef CONFIG_IPV6_MULTIPLE_TABLES net->ipv6.ip6_prohibit_entry->dst.dev = dev; net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); @@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> net->ipv6.ip6_blk_hole_entry->dst.dev = dev; net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); #endif -@@ -6027,6 +6060,7 @@ static int ip6_route_dev_notify(struct n +@@ -6030,6 +6063,7 @@ static int ip6_route_dev_notify(struct n in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev); #ifdef CONFIG_IPV6_MULTIPLE_TABLES in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev); @@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev); #endif } -@@ -6219,6 +6253,8 @@ static int __net_init ip6_route_net_init +@@ -6222,6 +6256,8 @@ static int __net_init ip6_route_net_init #ifdef CONFIG_IPV6_MULTIPLE_TABLES net->ipv6.fib6_has_custom_rules = false; @@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template, sizeof(*net->ipv6.ip6_prohibit_entry), GFP_KERNEL); -@@ -6229,11 +6265,21 @@ static int __net_init ip6_route_net_init +@@ -6232,11 +6268,21 @@ static int __net_init ip6_route_net_init ip6_template_metrics, true); INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached); @@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, ip6_template_metrics, true); -@@ -6257,6 +6303,8 @@ out: +@@ -6260,6 +6306,8 @@ out: return ret; #ifdef CONFIG_IPV6_MULTIPLE_TABLES @@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> out_ip6_prohibit_entry: kfree(net->ipv6.ip6_prohibit_entry); out_ip6_null_entry: -@@ -6276,6 +6324,7 @@ static void __net_exit ip6_route_net_exi +@@ -6279,6 +6327,7 @@ static void __net_exit ip6_route_net_exi kfree(net->ipv6.ip6_null_entry); #ifdef CONFIG_IPV6_MULTIPLE_TABLES kfree(net->ipv6.ip6_prohibit_entry); @@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> kfree(net->ipv6.ip6_blk_hole_entry); #endif dst_entries_destroy(&net->ipv6.ip6_dst_ops); -@@ -6353,6 +6402,9 @@ void __init ip6_route_init_special_entri +@@ -6356,6 +6405,9 @@ void __init ip6_route_init_special_entri init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); diff --git a/target/linux/generic/pending-5.4/740-net-sfp-remove-incomplete-100BASE-FX-and-100BASE-LX-.patch b/target/linux/generic/pending-5.4/740-net-sfp-remove-incomplete-100BASE-FX-and-100BASE-LX-.patch index 4de6305827..32d09a2ee1 100644 --- a/target/linux/generic/pending-5.4/740-net-sfp-remove-incomplete-100BASE-FX-and-100BASE-LX-.patch +++ b/target/linux/generic/pending-5.4/740-net-sfp-remove-incomplete-100BASE-FX-and-100BASE-LX-.patch @@ -17,7 +17,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> --- a/drivers/net/phy/sfp-bus.c +++ b/drivers/net/phy/sfp-bus.c -@@ -342,9 +342,7 @@ phy_interface_t sfp_select_interface(str +@@ -416,9 +416,7 @@ phy_interface_t sfp_select_interface(str if (phylink_test(link_modes, 2500baseX_Full)) return PHY_INTERFACE_MODE_2500BASEX; diff --git a/target/linux/generic/pending-5.4/741-net-sfp-derive-interface-mode-from-ethtool-link-mode.patch b/target/linux/generic/pending-5.4/741-net-sfp-derive-interface-mode-from-ethtool-link-mode.patch index 8158c78b0e..ecdf9281b0 100644 --- a/target/linux/generic/pending-5.4/741-net-sfp-derive-interface-mode-from-ethtool-link-mode.patch +++ b/target/linux/generic/pending-5.4/741-net-sfp-derive-interface-mode-from-ethtool-link-mode.patch @@ -40,7 +40,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> "selection of interface failed, advertisement %*pb\n", --- a/drivers/net/phy/sfp-bus.c +++ b/drivers/net/phy/sfp-bus.c -@@ -320,16 +320,12 @@ EXPORT_SYMBOL_GPL(sfp_parse_support); +@@ -394,16 +394,12 @@ EXPORT_SYMBOL_GPL(sfp_parse_support); /** * sfp_select_interface() - Select appropriate phy_interface_t mode * @bus: a pointer to the &struct sfp_bus structure for the sfp module @@ -59,7 +59,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> unsigned long *link_modes) { if (phylink_test(link_modes, 10000baseCR_Full) || -@@ -342,7 +338,8 @@ phy_interface_t sfp_select_interface(str +@@ -416,7 +412,8 @@ phy_interface_t sfp_select_interface(str if (phylink_test(link_modes, 2500baseX_Full)) return PHY_INTERFACE_MODE_2500BASEX; diff --git a/target/linux/generic/pending-5.4/742-net-sfp-add-more-extended-compliance-codes.patch b/target/linux/generic/pending-5.4/742-net-sfp-add-more-extended-compliance-codes.patch index 0ddca287b9..b584d9669c 100644 --- a/target/linux/generic/pending-5.4/742-net-sfp-add-more-extended-compliance-codes.patch +++ b/target/linux/generic/pending-5.4/742-net-sfp-add-more-extended-compliance-codes.patch @@ -19,7 +19,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> --- a/drivers/net/phy/sfp-bus.c +++ b/drivers/net/phy/sfp-bus.c -@@ -124,35 +124,35 @@ int sfp_parse_port(struct sfp_bus *bus, +@@ -130,35 +130,35 @@ int sfp_parse_port(struct sfp_bus *bus, /* port is the physical connector, set this from the connector field. */ switch (id->base.connector) { @@ -70,7 +70,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> port = PORT_OTHER; break; default: -@@ -261,22 +261,33 @@ void sfp_parse_support(struct sfp_bus *b +@@ -332,22 +332,33 @@ void sfp_parse_support(struct sfp_bus *b } switch (id->base.extended_cc) { @@ -111,7 +111,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> default: dev_warn(bus->sfp_dev, "Unknown/unsupported extended compliance code: 0x%02x\n", -@@ -301,7 +312,7 @@ void sfp_parse_support(struct sfp_bus *b +@@ -372,7 +383,7 @@ void sfp_parse_support(struct sfp_bus *b */ if (bitmap_empty(modes, __ETHTOOL_LINK_MODE_MASK_NBITS)) { /* If the encoding and bit rate allows 1000baseX */ @@ -120,7 +120,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> br_min <= 1300 && br_max >= 1200) phylink_set(modes, 1000baseX_Full); } -@@ -332,7 +343,8 @@ phy_interface_t sfp_select_interface(str +@@ -406,7 +417,8 @@ phy_interface_t sfp_select_interface(str phylink_test(link_modes, 10000baseSR_Full) || phylink_test(link_modes, 10000baseLR_Full) || phylink_test(link_modes, 10000baseLRM_Full) || diff --git a/target/linux/generic/pending-5.4/743-net-sfp-add-module-start-stop-upstream-notifications.patch b/target/linux/generic/pending-5.4/743-net-sfp-add-module-start-stop-upstream-notifications.patch index 44de1b2a32..de1608cc8b 100644 --- a/target/linux/generic/pending-5.4/743-net-sfp-add-module-start-stop-upstream-notifications.patch +++ b/target/linux/generic/pending-5.4/743-net-sfp-add-module-start-stop-upstream-notifications.patch @@ -32,7 +32,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> --- a/drivers/net/phy/sfp-bus.c +++ b/drivers/net/phy/sfp-bus.c -@@ -712,6 +712,27 @@ void sfp_module_remove(struct sfp_bus *b +@@ -788,6 +788,27 @@ void sfp_module_remove(struct sfp_bus *b } EXPORT_SYMBOL_GPL(sfp_module_remove); diff --git a/target/linux/generic/pending-5.4/750-net-phylink-delay-MAC-configuration-for-copper-SFP-m.patch b/target/linux/generic/pending-5.4/750-net-phylink-delay-MAC-configuration-for-copper-SFP-m.patch index 667170a398..9ddf69514d 100644 --- a/target/linux/generic/pending-5.4/750-net-phylink-delay-MAC-configuration-for-copper-SFP-m.patch +++ b/target/linux/generic/pending-5.4/750-net-phylink-delay-MAC-configuration-for-copper-SFP-m.patch @@ -134,7 +134,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> --- a/drivers/net/phy/sfp-bus.c +++ b/drivers/net/phy/sfp-bus.c -@@ -103,6 +103,7 @@ static const struct sfp_quirk *sfp_looku +@@ -109,6 +109,7 @@ static const struct sfp_quirk *sfp_looku return NULL; } @@ -142,9 +142,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net> /** * sfp_parse_port() - Parse the EEPROM base ID, setting the port type * @bus: a pointer to the &struct sfp_bus structure for the sfp module -@@ -179,6 +180,33 @@ int sfp_parse_port(struct sfp_bus *bus, - EXPORT_SYMBOL_GPL(sfp_parse_port); - +@@ -250,6 +251,33 @@ static const struct sfp_quirk *sfp_looku + return NULL; + } /** + * sfp_may_have_phy() - indicate whether the module may have a PHY + * @bus: a pointer to the &struct sfp_bus structure for the sfp module diff --git a/target/linux/layerscape/patches-5.4/806-dma-0019-dmaengine-fsl-edma-calculate-the-real-count-for-slav.patch b/target/linux/layerscape/patches-5.4/806-dma-0019-dmaengine-fsl-edma-calculate-the-real-count-for-slav.patch index 4278711b80..f8bbaaffa1 100644 --- a/target/linux/layerscape/patches-5.4/806-dma-0019-dmaengine-fsl-edma-calculate-the-real-count-for-slav.patch +++ b/target/linux/layerscape/patches-5.4/806-dma-0019-dmaengine-fsl-edma-calculate-the-real-count-for-slav.patch @@ -60,9 +60,9 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com> struct dma_async_tx_descriptor *fsl_edma_prep_dma_cyclic( --- a/drivers/dma/fsl-edma.c +++ b/drivers/dma/fsl-edma.c -@@ -46,6 +46,7 @@ static irqreturn_t fsl_edma_tx_handler(i +@@ -53,6 +53,7 @@ static irqreturn_t fsl_edma_tx_handler(i + } - spin_lock(&fsl_chan->vchan.lock); if (!fsl_chan->edesc->iscyclic) { + fsl_edma_get_realcnt(fsl_chan); list_del(&fsl_chan->edesc->vdesc.node); diff --git a/target/linux/layerscape/patches-5.4/806-dma-0028-dmaengine-fsl-edma-Add-eDMA-support-for-QorIQ-LS1028.patch b/target/linux/layerscape/patches-5.4/806-dma-0028-dmaengine-fsl-edma-Add-eDMA-support-for-QorIQ-LS1028.patch index 611f96b1a8..4707eccdab 100644 --- a/target/linux/layerscape/patches-5.4/806-dma-0028-dmaengine-fsl-edma-Add-eDMA-support-for-QorIQ-LS1028.patch +++ b/target/linux/layerscape/patches-5.4/806-dma-0028-dmaengine-fsl-edma-Add-eDMA-support-for-QorIQ-LS1028.patch @@ -70,7 +70,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org> }; --- a/drivers/dma/fsl-edma.c +++ b/drivers/dma/fsl-edma.c -@@ -234,6 +234,13 @@ static struct fsl_edma_drvdata vf610_dat +@@ -241,6 +241,13 @@ static struct fsl_edma_drvdata vf610_dat .setup_irq = fsl_edma_irq_init, }; @@ -84,7 +84,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org> static struct fsl_edma_drvdata imx7ulp_data = { .version = v3, .dmamuxs = 1, -@@ -243,6 +250,7 @@ static struct fsl_edma_drvdata imx7ulp_d +@@ -250,6 +257,7 @@ static struct fsl_edma_drvdata imx7ulp_d static const struct of_device_id fsl_edma_dt_ids[] = { { .compatible = "fsl,vf610-edma", .data = &vf610_data}, diff --git a/target/linux/mvebu/patches-5.4/012-net-mvneta-rely-on-build_skb-in-mvneta_rx_swbm-poll-.patch b/target/linux/mvebu/patches-5.4/012-net-mvneta-rely-on-build_skb-in-mvneta_rx_swbm-poll-.patch index 13ed9e4c8a..e3269a592f 100644 --- a/target/linux/mvebu/patches-5.4/012-net-mvneta-rely-on-build_skb-in-mvneta_rx_swbm-poll-.patch +++ b/target/linux/mvebu/patches-5.4/012-net-mvneta-rely-on-build_skb-in-mvneta_rx_swbm-poll-.patch @@ -292,7 +292,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> MVNETA_RX_BUF_SIZE(pp->pkt_size)); mvneta_rxq_bm_disable(pp, rxq); mvneta_rxq_fill(pp, rxq, rxq->size); -@@ -4700,7 +4705,7 @@ static int mvneta_probe(struct platform_ +@@ -4708,7 +4713,7 @@ static int mvneta_probe(struct platform_ SET_NETDEV_DEV(dev, &pdev->dev); pp->id = global_port_id++; diff --git a/target/linux/mvebu/patches-5.4/013-net-mvneta-add-basic-XDP-support.patch b/target/linux/mvebu/patches-5.4/013-net-mvneta-add-basic-XDP-support.patch index 06968bdaef..62c00ddeb1 100644 --- a/target/linux/mvebu/patches-5.4/013-net-mvneta-add-basic-XDP-support.patch +++ b/target/linux/mvebu/patches-5.4/013-net-mvneta-add-basic-XDP-support.patch @@ -300,7 +300,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> }; static const struct ethtool_ops mvneta_eth_tool_ops = { -@@ -4705,7 +4835,7 @@ static int mvneta_probe(struct platform_ +@@ -4713,7 +4843,7 @@ static int mvneta_probe(struct platform_ SET_NETDEV_DEV(dev, &pdev->dev); pp->id = global_port_id++; diff --git a/target/linux/mvebu/patches-5.4/023-net-mvneta-fix-XDP-support-if-sw-bm-is-used-as-fallb.patch b/target/linux/mvebu/patches-5.4/023-net-mvneta-fix-XDP-support-if-sw-bm-is-used-as-fallb.patch index f76b27a36d..86bffa538a 100644 --- a/target/linux/mvebu/patches-5.4/023-net-mvneta-fix-XDP-support-if-sw-bm-is-used-as-fallb.patch +++ b/target/linux/mvebu/patches-5.4/023-net-mvneta-fix-XDP-support-if-sw-bm-is-used-as-fallb.patch @@ -38,7 +38,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> mvreg_write(pp, MVNETA_ACC_MODE, MVNETA_ACC_MODE_EXT1); netdev_info(pp->dev, "fail to update MTU, fall back to software BM\n"); } -@@ -4976,7 +4976,6 @@ static int mvneta_probe(struct platform_ +@@ -4984,7 +4984,6 @@ static int mvneta_probe(struct platform_ SET_NETDEV_DEV(dev, &pdev->dev); pp->id = global_port_id++; @@ -46,7 +46,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> /* Obtain access to BM resources if enabled and already initialized */ bm_node = of_parse_phandle(dn, "buffer-manager", 0); -@@ -5001,6 +5000,10 @@ static int mvneta_probe(struct platform_ +@@ -5009,6 +5008,10 @@ static int mvneta_probe(struct platform_ } of_node_put(bm_node); @@ -57,7 +57,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> err = mvneta_init(&pdev->dev, pp); if (err < 0) goto err_netdev; -@@ -5154,6 +5157,7 @@ static int mvneta_resume(struct device * +@@ -5166,6 +5169,7 @@ static int mvneta_resume(struct device * err = mvneta_bm_port_init(pdev, pp); if (err < 0) { dev_info(&pdev->dev, "use SW buffer management\n"); diff --git a/target/linux/mvebu/patches-5.4/561-mvebu-armada-38x-enable-libata-leds.patch b/target/linux/mvebu/patches-5.4/561-mvebu-armada-38x-enable-libata-leds.patch index 3f9ad364de..b8ab700c97 100644 --- a/target/linux/mvebu/patches-5.4/561-mvebu-armada-38x-enable-libata-leds.patch +++ b/target/linux/mvebu/patches-5.4/561-mvebu-armada-38x-enable-libata-leds.patch @@ -1,6 +1,6 @@ --- a/arch/arm/mach-mvebu/Kconfig +++ b/arch/arm/mach-mvebu/Kconfig -@@ -68,6 +68,7 @@ +@@ -69,6 +69,7 @@ config MACH_ARMADA_38X select HAVE_SMP select MACH_MVEBU_V7 select PINCTRL_ARMADA_38X diff --git a/target/linux/ramips/patches-5.4/0069-awake-rt305x-dwc2-controller.patch b/target/linux/ramips/patches-5.4/0069-awake-rt305x-dwc2-controller.patch index f5283ed123..7110a5b808 100644 --- a/target/linux/ramips/patches-5.4/0069-awake-rt305x-dwc2-controller.patch +++ b/target/linux/ramips/patches-5.4/0069-awake-rt305x-dwc2-controller.patch @@ -1,6 +1,6 @@ --- a/drivers/usb/dwc2/platform.c +++ b/drivers/usb/dwc2/platform.c -@@ -430,6 +430,12 @@ static int dwc2_driver_probe(struct plat +@@ -431,6 +431,12 @@ static int dwc2_driver_probe(struct plat if (retval) return retval;
Refresh patches. Remove upstreamed patches: bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch bcm63xx/patches-5.4/024-v5.8-mtd-rawnand-brcmnand-fix-CS0-layout.patch Drop the cake hack as upstream have backported the changes themselves, but in a slightly different way. generic/hack-5.4/641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> --- include/kernel-version.mk | 4 +- .../910-unaligned_access_hacks.patch | 2 +- ...ce-quirks-for-Freeway-Airmouse-T3-an.patch | 4 +- .../905-BCM53573-minor-hacks.patch | 2 +- ...-brcmnand-improve-hamming-oob-layout.patch | 2 +- ...cmnand-correctly-verify-erased-pages.patch | 63 ---------- ...-mtd-rawnand-brcmnand-fix-CS0-layout.patch | 34 ------ ...antage-of-skb-hash-where-appropriate.patch | 2 +- ...ve-fwnode-parsing-into-sfp-bus-layer.patch | 2 +- ....5-net-sfp-rework-upstream-interface.patch | 12 +- ...fix-sfp_bus_put-kernel-documentation.patch | 2 +- ...et-sfp-add-support-for-module-quirks.patch | 43 ++----- ...sfp-add-some-quirks-for-GPON-modules.patch | 6 +- ...protocol-handling-in-the-presence-of.patch | 114 ------------------ ...ng-with-source-address-failed-policy.patch | 22 ++-- ...ncomplete-100BASE-FX-and-100BASE-LX-.patch | 2 +- ...nterface-mode-from-ethtool-link-mode.patch | 4 +- ...p-add-more-extended-compliance-codes.patch | 8 +- ...le-start-stop-upstream-notifications.patch | 2 +- ...y-MAC-configuration-for-copper-SFP-m.patch | 8 +- ...ma-calculate-the-real-count-for-slav.patch | 4 +- ...ma-Add-eDMA-support-for-QorIQ-LS1028.patch | 4 +- ...on-build_skb-in-mvneta_rx_swbm-poll-.patch | 2 +- ...013-net-mvneta-add-basic-XDP-support.patch | 2 +- ...DP-support-if-sw-bm-is-used-as-fallb.patch | 6 +- ...-mvebu-armada-38x-enable-libata-leds.patch | 2 +- .../0069-awake-rt305x-dwc2-controller.patch | 2 +- 27 files changed, 66 insertions(+), 294 deletions(-) delete mode 100644 target/linux/bcm63xx/patches-5.4/022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch delete mode 100644 target/linux/bcm63xx/patches-5.4/024-v5.8-mtd-rawnand-brcmnand-fix-CS0-layout.patch delete mode 100644 target/linux/generic/hack-5.4/641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch