diff mbox series

kernel: bump 5.4 to 5.4.53

Message ID 20200725124600.16470-1-ldir@darbyshire-bryant.me.uk
State Superseded
Headers show
Series kernel: bump 5.4 to 5.4.53 | expand

Commit Message

Kevin Darbyshire-Bryant July 25, 2020, 12:45 p.m. UTC
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

Comments

Stijn Segers July 28, 2020, 6:57 p.m. UTC | #1
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
Stefan Lippers-Hollmann July 29, 2020, 8:31 a.m. UTC | #2
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 mbox series

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;