-
-
- You can’t perform that action at this time.
-
-
-
-
-
-
-
-
-
-
-
-
- You signed in with another tab or window. Reload to refresh your session.
- You signed out in another tab or window. Reload to refresh your session.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+image_info = {"type": e("IMAGE_TYPE"), "name": e("IMAGE_NAME"), "sha256": image_hash}
+device_info["images"].append(image_info)
+with open(json_path, "w") as json_file:
+ json.dump(device_info, json_file, sort_keys=True, indent=" ")
diff --git a/target/linux/apm821xx/patches-4.14/023-0007-crypto-crypto4xx-Fix-wrong-ppc4xx_trng_probe-ppc4xx_.patch b/target/linux/apm821xx/patches-4.14/023-0007-crypto-crypto4xx-Fix-wrong-ppc4xx_trng_probe-ppc4xx_.patch
deleted file mode 100644
index d2c3848820..0000000000
--- a/target/linux/apm821xx/patches-4.14/023-0007-crypto-crypto4xx-Fix-wrong-ppc4xx_trng_probe-ppc4xx_.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 6e88098ca43a3d80ae86908f7badba683c8a0d84 Mon Sep 17 00:00:00 2001
-From: Corentin Labbe
-Date: Wed, 23 Jan 2019 11:24:18 +0000
-Subject: [PATCH 07/15] crypto: crypto4xx - Fix wrong
- ppc4xx_trng_probe()/ppc4xx_trng_remove() arguments
-
-When building without CONFIG_HW_RANDOM_PPC4XX, I hit the following build failure:
-drivers/crypto/amcc/crypto4xx_core.c: In function 'crypto4xx_probe':
-drivers/crypto/amcc/crypto4xx_core.c:1407:20: error: passing argument 1 of 'ppc4xx_trng_probe' from incompatible pointer type [-Werror=incompatible-pointer-types]
-In file included from drivers/crypto/amcc/crypto4xx_core.c:50:0:
-drivers/crypto/amcc/crypto4xx_trng.h:28:20: note: expected 'struct crypto4xx_device *' but argument is of type 'struct crypto4xx_core_device *'
-drivers/crypto/amcc/crypto4xx_core.c: In function 'crypto4xx_remove':
-drivers/crypto/amcc/crypto4xx_core.c:1434:21: error: passing argument 1 of 'ppc4xx_trng_remove' from incompatible pointer type [-Werror=incompatible-pointer-types]
-In file included from drivers/crypto/amcc/crypto4xx_core.c:50:0:
-drivers/crypto/amcc/crypto4xx_trng.h:30:20: note: expected 'struct crypto4xx_device *' but argument is of type 'struct crypto4xx_core_device *'
-
-This patch fix the needed argument of ppc4xx_trng_probe()/ppc4xx_trng_remove() in that case.
-
-Fixes: 5343e674f32f ("crypto4xx: integrate ppc4xx-rng into crypto4xx")
-Signed-off-by: Corentin Labbe
-Signed-off-by: Herbert Xu
----
- drivers/crypto/amcc/crypto4xx_trng.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/crypto/amcc/crypto4xx_trng.h
-+++ b/drivers/crypto/amcc/crypto4xx_trng.h
-@@ -26,9 +26,9 @@ void ppc4xx_trng_probe(struct crypto4xx_
- void ppc4xx_trng_remove(struct crypto4xx_core_device *core_dev);
- #else
- static inline void ppc4xx_trng_probe(
-- struct crypto4xx_device *dev __maybe_unused) { }
-+ struct crypto4xx_core_device *dev __maybe_unused) { }
- static inline void ppc4xx_trng_remove(
-- struct crypto4xx_device *dev __maybe_unused) { }
-+ struct crypto4xx_core_device *dev __maybe_unused) { }
- #endif
-
- #endif
diff --git a/target/linux/apm821xx/patches-4.19/023-0007-crypto-crypto4xx-Fix-wrong-ppc4xx_trng_probe-ppc4xx_.patch b/target/linux/apm821xx/patches-4.19/023-0007-crypto-crypto4xx-Fix-wrong-ppc4xx_trng_probe-ppc4xx_.patch
deleted file mode 100644
index d2c3848820..0000000000
--- a/target/linux/apm821xx/patches-4.19/023-0007-crypto-crypto4xx-Fix-wrong-ppc4xx_trng_probe-ppc4xx_.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 6e88098ca43a3d80ae86908f7badba683c8a0d84 Mon Sep 17 00:00:00 2001
-From: Corentin Labbe
-Date: Wed, 23 Jan 2019 11:24:18 +0000
-Subject: [PATCH 07/15] crypto: crypto4xx - Fix wrong
- ppc4xx_trng_probe()/ppc4xx_trng_remove() arguments
-
-When building without CONFIG_HW_RANDOM_PPC4XX, I hit the following build failure:
-drivers/crypto/amcc/crypto4xx_core.c: In function 'crypto4xx_probe':
-drivers/crypto/amcc/crypto4xx_core.c:1407:20: error: passing argument 1 of 'ppc4xx_trng_probe' from incompatible pointer type [-Werror=incompatible-pointer-types]
-In file included from drivers/crypto/amcc/crypto4xx_core.c:50:0:
-drivers/crypto/amcc/crypto4xx_trng.h:28:20: note: expected 'struct crypto4xx_device *' but argument is of type 'struct crypto4xx_core_device *'
-drivers/crypto/amcc/crypto4xx_core.c: In function 'crypto4xx_remove':
-drivers/crypto/amcc/crypto4xx_core.c:1434:21: error: passing argument 1 of 'ppc4xx_trng_remove' from incompatible pointer type [-Werror=incompatible-pointer-types]
-In file included from drivers/crypto/amcc/crypto4xx_core.c:50:0:
-drivers/crypto/amcc/crypto4xx_trng.h:30:20: note: expected 'struct crypto4xx_device *' but argument is of type 'struct crypto4xx_core_device *'
-
-This patch fix the needed argument of ppc4xx_trng_probe()/ppc4xx_trng_remove() in that case.
-
-Fixes: 5343e674f32f ("crypto4xx: integrate ppc4xx-rng into crypto4xx")
-Signed-off-by: Corentin Labbe
-Signed-off-by: Herbert Xu
----
- drivers/crypto/amcc/crypto4xx_trng.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/crypto/amcc/crypto4xx_trng.h
-+++ b/drivers/crypto/amcc/crypto4xx_trng.h
-@@ -26,9 +26,9 @@ void ppc4xx_trng_probe(struct crypto4xx_
- void ppc4xx_trng_remove(struct crypto4xx_core_device *core_dev);
- #else
- static inline void ppc4xx_trng_probe(
-- struct crypto4xx_device *dev __maybe_unused) { }
-+ struct crypto4xx_core_device *dev __maybe_unused) { }
- static inline void ppc4xx_trng_remove(
-- struct crypto4xx_device *dev __maybe_unused) { }
-+ struct crypto4xx_core_device *dev __maybe_unused) { }
- #endif
-
- #endif
diff --git a/target/linux/ath79/patches-4.19/910-unaligned_access_hacks.patch b/target/linux/ath79/patches-4.19/910-unaligned_access_hacks.patch
index 6f36dc683c..92396c13e8 100644
--- a/target/linux/ath79/patches-4.19/910-unaligned_access_hacks.patch
+++ b/target/linux/ath79/patches-4.19/910-unaligned_access_hacks.patch
@@ -728,7 +728,7 @@
EXPORT_SYMBOL(xfrm_parse_spi);
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
-@@ -3895,14 +3895,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -3896,14 +3896,16 @@ static bool tcp_parse_aligned_timestamp(
{
const __be32 *ptr = (const __be32 *)(th + 1);
diff --git a/target/linux/bcm53xx/patches-4.14/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch b/target/linux/bcm53xx/patches-4.14/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch
index 49dd89c2d7..d79b2d0b70 100644
--- a/target/linux/bcm53xx/patches-4.14/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch
+++ b/target/linux/bcm53xx/patches-4.14/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch
@@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -1222,6 +1222,18 @@ static const struct flash_info *spi_nor_
+@@ -1226,6 +1226,18 @@ static const struct flash_info *spi_nor_
}
dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n",
id[0], id[1], id[2]);
diff --git a/target/linux/bcm53xx/patches-4.19/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch b/target/linux/bcm53xx/patches-4.19/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch
index a0d40b0f0b..21687e7a35 100644
--- a/target/linux/bcm53xx/patches-4.19/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch
+++ b/target/linux/bcm53xx/patches-4.19/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch
@@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -1297,6 +1297,18 @@ static const struct flash_info *spi_nor_
+@@ -1301,6 +1301,18 @@ static const struct flash_info *spi_nor_
}
dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n",
id[0], id[1], id[2]);
diff --git a/target/linux/brcm47xx/patches-4.19/209-b44-register-adm-switch.patch b/target/linux/brcm47xx/patches-4.19/209-b44-register-adm-switch.patch
index 3706591b00..bc2d2ab90a 100644
--- a/target/linux/brcm47xx/patches-4.19/209-b44-register-adm-switch.patch
+++ b/target/linux/brcm47xx/patches-4.19/209-b44-register-adm-switch.patch
@@ -19,7 +19,7 @@ Subject: [PATCH 210/210] b44: register adm switch
#include
#include
-@@ -2246,6 +2248,69 @@ static void b44_adjust_link(struct net_d
+@@ -2249,6 +2251,69 @@ static void b44_adjust_link(struct net_d
}
}
@@ -89,7 +89,7 @@ Subject: [PATCH 210/210] b44: register adm switch
static int b44_register_phy_one(struct b44 *bp)
{
struct mii_bus *mii_bus;
-@@ -2281,6 +2346,9 @@ static int b44_register_phy_one(struct b
+@@ -2284,6 +2349,9 @@ static int b44_register_phy_one(struct b
if (!mdiobus_is_registered_device(bp->mii_bus, bp->phy_addr) &&
(sprom->boardflags_lo & (B44_BOARDFLAG_ROBO | B44_BOARDFLAG_ADM))) {
@@ -99,7 +99,7 @@ Subject: [PATCH 210/210] b44: register adm switch
dev_info(sdev->dev,
"could not find PHY at %i, use fixed one\n",
bp->phy_addr);
-@@ -2475,6 +2543,7 @@ static void b44_remove_one(struct ssb_de
+@@ -2478,6 +2546,7 @@ static void b44_remove_one(struct ssb_de
unregister_netdev(dev);
if (bp->flags & B44_FLAG_EXTERNAL_PHY)
b44_unregister_phy_one(bp);
diff --git a/target/linux/brcm47xx/patches-4.19/210-b44_phy_fix.patch b/target/linux/brcm47xx/patches-4.19/210-b44_phy_fix.patch
index 51e4b8c5ae..8c7a73ac0f 100644
--- a/target/linux/brcm47xx/patches-4.19/210-b44_phy_fix.patch
+++ b/target/linux/brcm47xx/patches-4.19/210-b44_phy_fix.patch
@@ -43,7 +43,7 @@
if (bp->flags & B44_FLAG_EXTERNAL_PHY)
return 0;
-@@ -2176,6 +2201,8 @@ static int b44_get_invariants(struct b44
+@@ -2179,6 +2204,8 @@ static int b44_get_invariants(struct b44
* valid PHY address. */
bp->phy_addr &= 0x1F;
diff --git a/target/linux/brcm47xx/patches-4.19/831-old_gpio_wdt.patch b/target/linux/brcm47xx/patches-4.19/831-old_gpio_wdt.patch
index ddac7917ea..259dc01256 100644
--- a/target/linux/brcm47xx/patches-4.19/831-old_gpio_wdt.patch
+++ b/target/linux/brcm47xx/patches-4.19/831-old_gpio_wdt.patch
@@ -4,7 +4,7 @@ Signed-off-by: Mathias Adam
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
-@@ -1497,6 +1497,15 @@ config WDT_MTX1
+@@ -1498,6 +1498,15 @@ config WDT_MTX1
Hardware driver for the MTX-1 boards. This is a watchdog timer that
will reboot the machine after a 100 seconds timer expired.
diff --git a/target/linux/brcm63xx/patches-4.14/001-4.22-01-MIPS-BCM63XX-drop-unused-and-broken-DSP-platform-dev.patch b/target/linux/brcm63xx/patches-4.14/001-4.22-01-MIPS-BCM63XX-drop-unused-and-broken-DSP-platform-dev.patch
deleted file mode 100644
index ac03e643b3..0000000000
--- a/target/linux/brcm63xx/patches-4.14/001-4.22-01-MIPS-BCM63XX-drop-unused-and-broken-DSP-platform-dev.patch
+++ /dev/null
@@ -1,203 +0,0 @@
-From 51559154375fff4a94bbbc249fdd9248a80827b3 Mon Sep 17 00:00:00 2001
-From: Jonas Gorski
-Date: Tue, 18 Dec 2018 10:19:02 +0100
-Subject: [PATCH] MIPS: BCM63XX: drop unused and broken DSP platform device
-
-Trying to register the DSP platform device results in a null pointer
-access:
-
-[ 0.124184] CPU 0 Unable to handle kernel paging request at virtual address 00000000, epc == 804e305c, ra == 804e6f20
-[ 0.135208] Oops[#1]:
-[ 0.137514] CPU: 0 PID: 1 Comm: swapper Not tainted 4.14.87
-...
-[ 0.197117] epc : 804e305c bcm63xx_dsp_register+0x80/0xa4
-[ 0.202838] ra : 804e6f20 board_register_devices+0x258/0x390
-...
-
-This happens because it tries to copy the passed platform data over the
-platform_device's unpopulated platform_data.
-
-Since this code has been broken since its submission, no driver was ever
-submitted for it, and apparently nobody was using it, just remove it
-instead of trying to fix it.
-
-Fixes: e7300d04bd08 ("MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs.")
-Signed-off-by: Jonas Gorski
----
- arch/mips/bcm63xx/Makefile | 6 +--
- arch/mips/bcm63xx/boards/board_bcm963xx.c | 20 --------
- arch/mips/bcm63xx/dev-dsp.c | 56 ----------------------
- .../include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h | 14 ------
- .../mips/include/asm/mach-bcm63xx/board_bcm963xx.h | 5 --
- 5 files changed, 3 insertions(+), 98 deletions(-)
- delete mode 100644 arch/mips/bcm63xx/dev-dsp.c
- delete mode 100644 arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h
-
---- a/arch/mips/bcm63xx/Makefile
-+++ b/arch/mips/bcm63xx/Makefile
-@@ -1,8 +1,8 @@
- # SPDX-License-Identifier: GPL-2.0
- obj-y += clk.o cpu.o cs.o gpio.o irq.o nvram.o prom.o reset.o \
-- setup.o timer.o dev-dsp.o dev-enet.o dev-flash.o \
-- dev-pcmcia.o dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o \
-- dev-wdt.o dev-usb-usbd.o
-+ setup.o timer.o dev-enet.o dev-flash.o dev-pcmcia.o \
-+ dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o dev-wdt.o \
-+ dev-usb-usbd.o
- obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
-
- obj-y += boards/
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -23,7 +23,6 @@
- #include
- #include
- #include
--#include
- #include
- #include
- #include
-@@ -289,14 +288,6 @@ static struct board_info __initdata boar
- .has_pccard = 1,
- .has_ehci0 = 1,
-
-- .has_dsp = 1,
-- .dsp = {
-- .gpio_rst = 6,
-- .gpio_int = 34,
-- .cs = 2,
-- .ext_irq = 2,
-- },
--
- .leds = {
- {
- .name = "adsl-fail",
-@@ -401,14 +392,6 @@ static struct board_info __initdata boar
-
- .has_ohci0 = 1,
-
-- .has_dsp = 1,
-- .dsp = {
-- .gpio_rst = 6,
-- .gpio_int = 34,
-- .ext_irq = 2,
-- .cs = 2,
-- },
--
- .leds = {
- {
- .name = "adsl-fail",
-@@ -898,9 +881,6 @@ int __init board_register_devices(void)
- if (board.has_usbd)
- bcm63xx_usbd_register(&board.usbd);
-
-- if (board.has_dsp)
-- bcm63xx_dsp_register(&board.dsp);
--
- /* Generate MAC address for WLAN and register our SPROM,
- * do this after registering enet devices
- */
---- a/arch/mips/bcm63xx/dev-dsp.c
-+++ /dev/null
-@@ -1,56 +0,0 @@
--/*
-- * Broadcom BCM63xx VoIP DSP registration
-- *
-- * This file is subject to the terms and conditions of the GNU General Public
-- * License. See the file "COPYING" in the main directory of this archive
-- * for more details.
-- *
-- * Copyright (C) 2009 Florian Fainelli
-- */
--
--#include
--#include
--#include
--
--#include
--#include
--#include
--#include
--
--static struct resource voip_dsp_resources[] = {
-- {
-- .start = -1, /* filled at runtime */
-- .end = -1, /* filled at runtime */
-- .flags = IORESOURCE_MEM,
-- },
-- {
-- .start = -1, /* filled at runtime */
-- .flags = IORESOURCE_IRQ,
-- },
--};
--
--static struct platform_device bcm63xx_voip_dsp_device = {
-- .name = "bcm63xx-voip-dsp",
-- .id = -1,
-- .num_resources = ARRAY_SIZE(voip_dsp_resources),
-- .resource = voip_dsp_resources,
--};
--
--int __init bcm63xx_dsp_register(const struct bcm63xx_dsp_platform_data *pd)
--{
-- struct bcm63xx_dsp_platform_data *dpd;
-- u32 val;
--
-- /* Get the memory window */
-- val = bcm_mpi_readl(MPI_CSBASE_REG(pd->cs - 1));
-- val &= MPI_CSBASE_BASE_MASK;
-- voip_dsp_resources[0].start = val;
-- voip_dsp_resources[0].end = val + 0xFFFFFFF;
-- voip_dsp_resources[1].start = pd->ext_irq;
--
-- /* copy given platform data */
-- dpd = bcm63xx_voip_dsp_device.dev.platform_data;
-- memcpy(dpd, pd, sizeof (*pd));
--
-- return platform_device_register(&bcm63xx_voip_dsp_device);
--}
---- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h
-+++ /dev/null
-@@ -1,14 +0,0 @@
--/* SPDX-License-Identifier: GPL-2.0 */
--#ifndef __BCM63XX_DSP_H
--#define __BCM63XX_DSP_H
--
--struct bcm63xx_dsp_platform_data {
-- unsigned gpio_rst;
-- unsigned gpio_int;
-- unsigned cs;
-- unsigned ext_irq;
--};
--
--int __init bcm63xx_dsp_register(const struct bcm63xx_dsp_platform_data *pd);
--
--#endif /* __BCM63XX_DSP_H */
---- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
-+++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
-@@ -7,7 +7,6 @@
- #include
- #include
- #include
--#include
-
- /*
- * flash mapping
-@@ -31,7 +30,6 @@ struct board_info {
- unsigned int has_ohci0:1;
- unsigned int has_ehci0:1;
- unsigned int has_usbd:1;
-- unsigned int has_dsp:1;
- unsigned int has_uart0:1;
- unsigned int has_uart1:1;
-
-@@ -43,9 +41,6 @@ struct board_info {
- /* USB config */
- struct bcm63xx_usbd_platform_data usbd;
-
-- /* DSP config */
-- struct bcm63xx_dsp_platform_data dsp;
--
- /* GPIO LEDs */
- struct gpio_led leds[5];
-
diff --git a/target/linux/brcm63xx/patches-4.19/001-4.22-01-MIPS-BCM63XX-drop-unused-and-broken-DSP-platform-dev.patch b/target/linux/brcm63xx/patches-4.19/001-4.22-01-MIPS-BCM63XX-drop-unused-and-broken-DSP-platform-dev.patch
deleted file mode 100644
index ac03e643b3..0000000000
--- a/target/linux/brcm63xx/patches-4.19/001-4.22-01-MIPS-BCM63XX-drop-unused-and-broken-DSP-platform-dev.patch
+++ /dev/null
@@ -1,203 +0,0 @@
-From 51559154375fff4a94bbbc249fdd9248a80827b3 Mon Sep 17 00:00:00 2001
-From: Jonas Gorski
-Date: Tue, 18 Dec 2018 10:19:02 +0100
-Subject: [PATCH] MIPS: BCM63XX: drop unused and broken DSP platform device
-
-Trying to register the DSP platform device results in a null pointer
-access:
-
-[ 0.124184] CPU 0 Unable to handle kernel paging request at virtual address 00000000, epc == 804e305c, ra == 804e6f20
-[ 0.135208] Oops[#1]:
-[ 0.137514] CPU: 0 PID: 1 Comm: swapper Not tainted 4.14.87
-...
-[ 0.197117] epc : 804e305c bcm63xx_dsp_register+0x80/0xa4
-[ 0.202838] ra : 804e6f20 board_register_devices+0x258/0x390
-...
-
-This happens because it tries to copy the passed platform data over the
-platform_device's unpopulated platform_data.
-
-Since this code has been broken since its submission, no driver was ever
-submitted for it, and apparently nobody was using it, just remove it
-instead of trying to fix it.
-
-Fixes: e7300d04bd08 ("MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs.")
-Signed-off-by: Jonas Gorski
----
- arch/mips/bcm63xx/Makefile | 6 +--
- arch/mips/bcm63xx/boards/board_bcm963xx.c | 20 --------
- arch/mips/bcm63xx/dev-dsp.c | 56 ----------------------
- .../include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h | 14 ------
- .../mips/include/asm/mach-bcm63xx/board_bcm963xx.h | 5 --
- 5 files changed, 3 insertions(+), 98 deletions(-)
- delete mode 100644 arch/mips/bcm63xx/dev-dsp.c
- delete mode 100644 arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h
-
---- a/arch/mips/bcm63xx/Makefile
-+++ b/arch/mips/bcm63xx/Makefile
-@@ -1,8 +1,8 @@
- # SPDX-License-Identifier: GPL-2.0
- obj-y += clk.o cpu.o cs.o gpio.o irq.o nvram.o prom.o reset.o \
-- setup.o timer.o dev-dsp.o dev-enet.o dev-flash.o \
-- dev-pcmcia.o dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o \
-- dev-wdt.o dev-usb-usbd.o
-+ setup.o timer.o dev-enet.o dev-flash.o dev-pcmcia.o \
-+ dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o dev-wdt.o \
-+ dev-usb-usbd.o
- obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
-
- obj-y += boards/
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -23,7 +23,6 @@
- #include
- #include
- #include
--#include
- #include
- #include
- #include
-@@ -289,14 +288,6 @@ static struct board_info __initdata boar
- .has_pccard = 1,
- .has_ehci0 = 1,
-
-- .has_dsp = 1,
-- .dsp = {
-- .gpio_rst = 6,
-- .gpio_int = 34,
-- .cs = 2,
-- .ext_irq = 2,
-- },
--
- .leds = {
- {
- .name = "adsl-fail",
-@@ -401,14 +392,6 @@ static struct board_info __initdata boar
-
- .has_ohci0 = 1,
-
-- .has_dsp = 1,
-- .dsp = {
-- .gpio_rst = 6,
-- .gpio_int = 34,
-- .ext_irq = 2,
-- .cs = 2,
-- },
--
- .leds = {
- {
- .name = "adsl-fail",
-@@ -898,9 +881,6 @@ int __init board_register_devices(void)
- if (board.has_usbd)
- bcm63xx_usbd_register(&board.usbd);
-
-- if (board.has_dsp)
-- bcm63xx_dsp_register(&board.dsp);
--
- /* Generate MAC address for WLAN and register our SPROM,
- * do this after registering enet devices
- */
---- a/arch/mips/bcm63xx/dev-dsp.c
-+++ /dev/null
-@@ -1,56 +0,0 @@
--/*
-- * Broadcom BCM63xx VoIP DSP registration
-- *
-- * This file is subject to the terms and conditions of the GNU General Public
-- * License. See the file "COPYING" in the main directory of this archive
-- * for more details.
-- *
-- * Copyright (C) 2009 Florian Fainelli
-- */
--
--#include
--#include
--#include
--
--#include
--#include
--#include
--#include
--
--static struct resource voip_dsp_resources[] = {
-- {
-- .start = -1, /* filled at runtime */
-- .end = -1, /* filled at runtime */
-- .flags = IORESOURCE_MEM,
-- },
-- {
-- .start = -1, /* filled at runtime */
-- .flags = IORESOURCE_IRQ,
-- },
--};
--
--static struct platform_device bcm63xx_voip_dsp_device = {
-- .name = "bcm63xx-voip-dsp",
-- .id = -1,
-- .num_resources = ARRAY_SIZE(voip_dsp_resources),
-- .resource = voip_dsp_resources,
--};
--
--int __init bcm63xx_dsp_register(const struct bcm63xx_dsp_platform_data *pd)
--{
-- struct bcm63xx_dsp_platform_data *dpd;
-- u32 val;
--
-- /* Get the memory window */
-- val = bcm_mpi_readl(MPI_CSBASE_REG(pd->cs - 1));
-- val &= MPI_CSBASE_BASE_MASK;
-- voip_dsp_resources[0].start = val;
-- voip_dsp_resources[0].end = val + 0xFFFFFFF;
-- voip_dsp_resources[1].start = pd->ext_irq;
--
-- /* copy given platform data */
-- dpd = bcm63xx_voip_dsp_device.dev.platform_data;
-- memcpy(dpd, pd, sizeof (*pd));
--
-- return platform_device_register(&bcm63xx_voip_dsp_device);
--}
---- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h
-+++ /dev/null
-@@ -1,14 +0,0 @@
--/* SPDX-License-Identifier: GPL-2.0 */
--#ifndef __BCM63XX_DSP_H
--#define __BCM63XX_DSP_H
--
--struct bcm63xx_dsp_platform_data {
-- unsigned gpio_rst;
-- unsigned gpio_int;
-- unsigned cs;
-- unsigned ext_irq;
--};
--
--int __init bcm63xx_dsp_register(const struct bcm63xx_dsp_platform_data *pd);
--
--#endif /* __BCM63XX_DSP_H */
---- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
-+++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
-@@ -7,7 +7,6 @@
- #include
- #include
- #include
--#include
-
- /*
- * flash mapping
-@@ -31,7 +30,6 @@ struct board_info {
- unsigned int has_ohci0:1;
- unsigned int has_ehci0:1;
- unsigned int has_usbd:1;
-- unsigned int has_dsp:1;
- unsigned int has_uart0:1;
- unsigned int has_uart1:1;
-
-@@ -43,9 +41,6 @@ struct board_info {
- /* USB config */
- struct bcm63xx_usbd_platform_data usbd;
-
-- /* DSP config */
-- struct bcm63xx_dsp_platform_data dsp;
--
- /* GPIO LEDs */
- struct gpio_led leds[5];
-
diff --git a/target/linux/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch b/target/linux/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
index 55d0f40f45..577f2d3df6 100644
--- a/target/linux/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
+++ b/target/linux/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
@@ -10,7 +10,7 @@ Signed-off-by: Pablo Neira Ayuso
--- a/net/netfilter/nf_flow_table_core.c
+++ b/net/netfilter/nf_flow_table_core.c
-@@ -532,5 +532,35 @@ void nf_flow_table_free(struct nf_flowta
+@@ -535,5 +535,35 @@ void nf_flow_table_free(struct nf_flowta
}
EXPORT_SYMBOL_GPL(nf_flow_table_free);
@@ -48,7 +48,7 @@ Signed-off-by: Pablo Neira Ayuso
MODULE_AUTHOR("Pablo Neira Ayuso ");
--- a/net/netfilter/nft_flow_offload.c
+++ b/net/netfilter/nft_flow_offload.c
-@@ -217,47 +217,14 @@ static struct nft_expr_type nft_flow_off
+@@ -216,47 +216,14 @@ static struct nft_expr_type nft_flow_off
.owner = THIS_MODULE,
};
diff --git a/target/linux/generic/backport-4.19/702-v4.20-net-ethernet-Add-helper-for-MACs-which-support-asym-.patch b/target/linux/generic/backport-4.19/702-v4.20-net-ethernet-Add-helper-for-MACs-which-support-asym-.patch
index ee6e6a6dac..3ada51636b 100644
--- a/target/linux/generic/backport-4.19/702-v4.20-net-ethernet-Add-helper-for-MACs-which-support-asym-.patch
+++ b/target/linux/generic/backport-4.19/702-v4.20-net-ethernet-Add-helper-for-MACs-which-support-asym-.patch
@@ -17,7 +17,7 @@ Signed-off-by: David S. Miller
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1776,6 +1776,19 @@ int phy_set_max_speed(struct phy_device
+@@ -1777,6 +1777,19 @@ int phy_set_max_speed(struct phy_device
}
EXPORT_SYMBOL(phy_set_max_speed);
diff --git a/target/linux/generic/backport-4.19/703-v4.20-net-ethernet-Add-helper-for-set_pauseparam-for-Asym-.patch b/target/linux/generic/backport-4.19/703-v4.20-net-ethernet-Add-helper-for-set_pauseparam-for-Asym-.patch
index 8d68fbfe0f..4ad3bf698a 100644
--- a/target/linux/generic/backport-4.19/703-v4.20-net-ethernet-Add-helper-for-set_pauseparam-for-Asym-.patch
+++ b/target/linux/generic/backport-4.19/703-v4.20-net-ethernet-Add-helper-for-set_pauseparam-for-Asym-.patch
@@ -17,7 +17,7 @@ Signed-off-by: David S. Miller
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1789,6 +1789,36 @@ void phy_support_asym_pause(struct phy_d
+@@ -1790,6 +1790,36 @@ void phy_support_asym_pause(struct phy_d
}
EXPORT_SYMBOL(phy_support_asym_pause);
diff --git a/target/linux/generic/backport-4.19/704-v4.20-net-phy-Stop-with-excessive-soft-reset.patch b/target/linux/generic/backport-4.19/704-v4.20-net-phy-Stop-with-excessive-soft-reset.patch
index 77ad5b96dd..00ef6b7a1d 100644
--- a/target/linux/generic/backport-4.19/704-v4.20-net-phy-Stop-with-excessive-soft-reset.patch
+++ b/target/linux/generic/backport-4.19/704-v4.20-net-phy-Stop-with-excessive-soft-reset.patch
@@ -29,7 +29,7 @@ Signed-off-by: Russell King
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -885,8 +885,6 @@ int phy_init_hw(struct phy_device *phyde
+@@ -886,8 +886,6 @@ int phy_init_hw(struct phy_device *phyde
if (phydev->drv->soft_reset)
ret = phydev->drv->soft_reset(phydev);
diff --git a/target/linux/generic/backport-4.19/737-v5.5-net-phy-add-core-phylib-sfp-support.patch b/target/linux/generic/backport-4.19/737-v5.5-net-phy-add-core-phylib-sfp-support.patch
index 8dcad2fa58..9b34d40a0f 100644
--- a/target/linux/generic/backport-4.19/737-v5.5-net-phy-add-core-phylib-sfp-support.patch
+++ b/target/linux/generic/backport-4.19/737-v5.5-net-phy-add-core-phylib-sfp-support.patch
@@ -54,7 +54,7 @@ Signed-off-by: Russell King
#include
#include
#include
-@@ -943,6 +944,65 @@ void phy_attached_print(struct phy_devic
+@@ -944,6 +945,65 @@ void phy_attached_print(struct phy_devic
EXPORT_SYMBOL(phy_attached_print);
/**
@@ -120,7 +120,7 @@ Signed-off-by: Russell King
* phy_attach_direct - attach a network device to a given PHY device pointer
* @dev: network device to attach
* @phydev: Pointer to phy_device to attach
-@@ -1015,6 +1075,9 @@ int phy_attach_direct(struct net_device
+@@ -1016,6 +1076,9 @@ int phy_attach_direct(struct net_device
phydev->attached_dev = dev;
dev->phydev = phydev;
@@ -130,7 +130,7 @@ Signed-off-by: Russell King
/* Some Ethernet drivers try to connect to a PHY device before
* calling register_netdevice() -> netdev_register_kobject() and
* does the dev->dev.kobj initialization. Here we only check for
-@@ -1949,6 +2012,9 @@ static int phy_remove(struct device *dev
+@@ -1950,6 +2013,9 @@ static int phy_remove(struct device *dev
phydev->state = PHY_DOWN;
mutex_unlock(&phydev->lock);
diff --git a/target/linux/generic/backport-4.19/740-v5.5-net-phy-avoid-matching-all-ones-clause-45-PHY-IDs.patch b/target/linux/generic/backport-4.19/740-v5.5-net-phy-avoid-matching-all-ones-clause-45-PHY-IDs.patch
index d6c0120197..81f161e9b1 100644
--- a/target/linux/generic/backport-4.19/740-v5.5-net-phy-avoid-matching-all-ones-clause-45-PHY-IDs.patch
+++ b/target/linux/generic/backport-4.19/740-v5.5-net-phy-avoid-matching-all-ones-clause-45-PHY-IDs.patch
@@ -37,7 +37,7 @@ Signed-off-by: Russell King
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -334,7 +334,7 @@ static int phy_bus_match(struct device *
+@@ -335,7 +335,7 @@ static int phy_bus_match(struct device *
if (phydev->is_c45) {
for (i = 1; i < num_ids; i++) {
@@ -46,7 +46,7 @@ Signed-off-by: Russell King
continue;
if ((phydrv->phy_id & phydrv->phy_id_mask) ==
-@@ -622,10 +622,13 @@ static int get_phy_id(struct mii_bus *bu
+@@ -623,10 +623,13 @@ static int get_phy_id(struct mii_bus *bu
*/
struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45)
{
diff --git a/target/linux/generic/hack-4.14/645-netfilter-connmark-introduce-savedscp.patch b/target/linux/generic/hack-4.14/645-netfilter-connmark-introduce-savedscp.patch
deleted file mode 100644
index 5217eca582..0000000000
--- a/target/linux/generic/hack-4.14/645-netfilter-connmark-introduce-savedscp.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 5a4d7714faa28c03e85d696fba82716fbda5c432 Mon Sep 17 00:00:00 2001
-From: Kevin Darbyshire-Bryant
-Date: Sat, 23 Mar 2019 09:29:49 +0000
-Subject: [PATCH] netfilter: connmark: introduce savedscp
-
-savedscp is a method of storing the DSCP of an ip packet into conntrack
-mark. In combination with a suitable tc filter action (conndscp but may
-end up being integrated into connmark) DSCP values are able to be stored
-on egress and restored on ingress across links that otherwise alter or
-bleach DSCP.
-
-This is useful for qdiscs such as CAKE which are able to shape according
-to policies based on DSCP.
-
-Ingress classification is traditionally a challenging task since
-iptables rules haven't yet run and tc filter/eBPF programs are pre-NAT
-lookups, hence are unable to see internal IPv4 addresses as used on the
-typical home masquerading gateway.
-
-The ingress problem is solved by the tc filter, but the tc people didn't
-like the idea of tc setting conntrack mark values, though they are ok
-with reading conntrack values and hence restoring DSCP from conntrack
-marks.
-
-x_tables CONNMARK with the new savedscp action solves the problem of
-storing the DSCP to the conntrack mark.
-
-It accepts 2 parameters. The mark is a 32bit value with usually one 1
-bit set. This bit is set when savedscp saves the DSCP to the mark.
-This is useful to implement a 'one shot'
-iptables based classification where the 'complicated' iptables rules are
-only run once to classify the connection on initial (egress) packet and
-subsequent packets are all marked/restored with the same DSCP. A mark
-of zero disables the setting of a status bit/s.
-
-The mask is a 32bit value of at least 6 contiguous bits and represents
-the area where the DSCP will be stored.
-
-e.g.
-
-iptables -A QOS_MARK_eth0 -t mangle -j CONNMARK --savedscp-mark 0xfc000000/0x01000000
-
-Would store the DSCP in the top 6 bits of the 32bit mark field, and use
-the LSB of the top byte as the 'DSCP has been stored' marker.
-
-Signed-off-by: Kevin Darbyshire-Bryant
----
- include/uapi/linux/netfilter/xt_connmark.h | 3 ++-
- net/netfilter/xt_connmark.c | 21 ++++++++++++++++++++-
- 2 files changed, 22 insertions(+), 2 deletions(-)
-
---- a/include/uapi/linux/netfilter/xt_connmark.h
-+++ b/include/uapi/linux/netfilter/xt_connmark.h
-@@ -16,7 +16,8 @@
- enum {
- XT_CONNMARK_SET = 0,
- XT_CONNMARK_SAVE,
-- XT_CONNMARK_RESTORE
-+ XT_CONNMARK_RESTORE,
-+ XT_CONNMARK_SAVEDSCP
- };
-
- struct xt_connmark_tginfo1 {
---- a/net/netfilter/xt_connmark.c
-+++ b/net/netfilter/xt_connmark.c
-@@ -42,6 +42,7 @@ connmark_tg(struct sk_buff *skb, const s
- enum ip_conntrack_info ctinfo;
- struct nf_conn *ct;
- u_int32_t newmark;
-+ u_int8_t dscp, maskshift;
-
- ct = nf_ct_get(skb, &ctinfo);
- if (ct == NULL)
-@@ -57,7 +58,25 @@ connmark_tg(struct sk_buff *skb, const s
- break;
- case XT_CONNMARK_SAVE:
- newmark = (ct->mark & ~info->ctmask) ^
-- (skb->mark & info->nfmask);
-+ (skb->mark & info->nfmask);
-+ if (ct->mark != newmark) {
-+ ct->mark = newmark;
-+ nf_conntrack_event_cache(IPCT_MARK, ct);
-+ }
-+ break;
-+ case XT_CONNMARK_SAVEDSCP:
-+ if (skb->protocol == htons(ETH_P_IP))
-+ dscp = ipv4_get_dsfield(ip_hdr(skb)) >> 2;
-+ else if (skb->protocol == htons(ETH_P_IPV6))
-+ dscp = ipv6_get_dsfield(ipv6_hdr(skb)) >> 2;
-+ else /* protocol doesn't have diffserv */
-+ break;
-+
-+ /* nfmask contains the mask shift value */
-+ maskshift = info->nfmask & 0x1f;
-+ newmark = (ct->mark & ~info->ctmark) |
-+ (info->ctmask | (dscp << maskshift));
-+
- if (ct->mark != newmark) {
- ct->mark = newmark;
- nf_conntrack_event_cache(IPCT_MARK, ct);
diff --git a/target/linux/generic/hack-4.14/645-netfilter-connmark-introduce-set-dscpmark.patch b/target/linux/generic/hack-4.14/645-netfilter-connmark-introduce-set-dscpmark.patch
new file mode 100644
index 0000000000..1ecc95bf22
--- /dev/null
+++ b/target/linux/generic/hack-4.14/645-netfilter-connmark-introduce-set-dscpmark.patch
@@ -0,0 +1,124 @@
+From f1627abea333781d3e2a61bac4c7fd4502395741 Mon Sep 17 00:00:00 2001
+From: Kevin Darbyshire-Bryant
+Date: Sat, 23 Mar 2019 09:29:49 +0000
+Subject: [PATCH] netfilter: connmark: introduce set-dscpmark
+
+set-dscpmark is a method of storing the DSCP of an ip packet into
+conntrack mark. In combination with a suitable tc filter action
+(act_ctinfo) DSCP values are able to be stored in the mark on egress and
+restored on ingress across links that otherwise alter or bleach DSCP.
+
+This is useful for qdiscs such as CAKE which are able to shape according
+to policies based on DSCP.
+
+Ingress classification is traditionally a challenging task since
+iptables rules haven't yet run and tc filter/eBPF programs are pre-NAT
+lookups, hence are unable to see internal IPv4 addresses as used on the
+typical home masquerading gateway.
+
+x_tables CONNMARK set-dscpmark target solves the problem of storing the
+DSCP to the conntrack mark in a way suitable for the new act_ctinfo tc
+action to restore.
+
+The set-dscpmark option accepts 2 parameters, a 32bit 'dscpmask' and a
+32bit 'statemask'. The dscp mask must be 6 contiguous bits and
+represents the area where the DSCP will be stored in the connmark. The
+state mask is a minimum 1 bit length mask that must not overlap with the
+dscpmask. It represents a flag which is set when the DSCP has been
+stored in the conntrack mark. This is useful to implement a 'one shot'
+iptables based classification where the 'complicated' iptables rules are
+only run once to classify the connection on initial (egress) packet and
+subsequent packets are all marked/restored with the same DSCP. A state
+mask of zero disables the setting of a status bit/s.
+
+example syntax with a suitably modified iptables user space application:
+
+iptables -A QOS_MARK_eth0 -t mangle -j CONNMARK --set-dscpmark 0xfc000000/0x01000000
+
+Would store the DSCP in the top 6 bits of the 32bit mark field, and use
+the LSB of the top byte as the 'DSCP has been stored' marker.
+
+|----0xFC----conntrack mark----000000---|
+| Bits 31-26 | bit 25 | bit24 |~~~ Bit 0|
+| DSCP | unused | flag |unused |
+|-----------------------0x01---000000---|
+ ^ ^
+ | |
+ ---| Conditional flag
+ | set this when dscp
+|-ip diffserv-| stored in mark
+| 6 bits |
+|-------------|
+
+an identically configured tc action to restore looks like:
+
+tc filter show dev eth0 ingress
+filter parent ffff: protocol all pref 10 u32 chain 0
+filter parent ffff: protocol all pref 10 u32 chain 0 fh 800: ht divisor 1
+filter parent ffff: protocol all pref 10 u32 chain 0 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1: not_in_hw
+ match 00000000/00000000 at 0
+ action order 1: ctinfo zone 0 pipe
+ index 2 ref 1 bind 1 dscp 0xfc000000/0x1000000
+
+ action order 2: mirred (Egress Redirect to device ifb4eth0) stolen
+ index 1 ref 1 bind 1
+
+|----0xFC----conntrack mark----000000---|
+| Bits 31-26 | bit 25 | bit24 |~~~ Bit 0|
+| DSCP | unused | flag |unused |
+|-----------------------0x01---000000---|
+ | |
+ | |
+ ---| Conditional flag
+ v only restore if set
+|-ip diffserv-|
+| 6 bits |
+|-------------|
+
+Signed-off-by: Kevin Darbyshire-Bryant
+---
+ net/netfilter/xt_connmark.c | 19 +++++++++++++++++--
+ 1 file changed, 17 insertions(+), 2 deletions(-)
+
+--- a/net/netfilter/xt_connmark.c
++++ b/net/netfilter/xt_connmark.c
+@@ -42,6 +42,7 @@ connmark_tg(struct sk_buff *skb, const s
+ enum ip_conntrack_info ctinfo;
+ struct nf_conn *ct;
+ u_int32_t newmark;
++ u_int8_t dscp, maskshift;
+
+ ct = nf_ct_get(skb, &ctinfo);
+ if (ct == NULL)
+@@ -49,7 +50,21 @@ connmark_tg(struct sk_buff *skb, const s
+
+ switch (info->mode) {
+ case XT_CONNMARK_SET:
+- newmark = (ct->mark & ~info->ctmask) ^ info->ctmark;
++ if (info->nfmask & 0x80000000) {
++ newmark = (ct->mark & ~info->ctmask) ^ info->ctmark;
++ } else {
++ if (skb->protocol == htons(ETH_P_IP))
++ dscp = ipv4_get_dsfield(ip_hdr(skb)) >> 2;
++ else if (skb->protocol == htons(ETH_P_IPV6))
++ dscp = ipv6_get_dsfield(ipv6_hdr(skb)) >> 2;
++ else /* protocol doesn't have diffserv */
++ break;
++
++ /* nfmask contains the mask shift value */
++ maskshift = info->nfmask & 0x1f;
++ newmark = (ct->mark & ~info->ctmark) |
++ (info->ctmask | (dscp << maskshift));
++ }
+ if (ct->mark != newmark) {
+ ct->mark = newmark;
+ nf_conntrack_event_cache(IPCT_MARK, ct);
+@@ -57,7 +72,7 @@ connmark_tg(struct sk_buff *skb, const s
+ break;
+ case XT_CONNMARK_SAVE:
+ newmark = (ct->mark & ~info->ctmask) ^
+- (skb->mark & info->nfmask);
++ (skb->mark & info->nfmask);
+ if (ct->mark != newmark) {
+ ct->mark = newmark;
+ nf_conntrack_event_cache(IPCT_MARK, ct);
diff --git a/target/linux/generic/hack-4.14/702-phy_add_aneg_done_function.patch b/target/linux/generic/hack-4.14/702-phy_add_aneg_done_function.patch
index 97bbee96a9..cc84311ef9 100644
--- a/target/linux/generic/hack-4.14/702-phy_add_aneg_done_function.patch
+++ b/target/linux/generic/hack-4.14/702-phy_add_aneg_done_function.patch
@@ -15,7 +15,7 @@
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1461,6 +1461,9 @@ int genphy_update_link(struct phy_device
+@@ -1462,6 +1462,9 @@ int genphy_update_link(struct phy_device
{
int status;
diff --git a/target/linux/generic/hack-4.19/661-use_fq_codel_by_default.patch b/target/linux/generic/hack-4.19/661-use_fq_codel_by_default.patch
index 71a26dba4a..2778377de7 100644
--- a/target/linux/generic/hack-4.19/661-use_fq_codel_by_default.patch
+++ b/target/linux/generic/hack-4.19/661-use_fq_codel_by_default.patch
@@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
-@@ -486,12 +486,13 @@ extern struct Qdisc_ops noop_qdisc_ops;
+@@ -487,12 +487,13 @@ extern struct Qdisc_ops noop_qdisc_ops;
extern struct Qdisc_ops pfifo_fast_ops;
extern struct Qdisc_ops mq_qdisc_ops;
extern struct Qdisc_ops noqueue_qdisc_ops;
@@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau
device, it has to decide which ones to send first, which ones to
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
-@@ -2160,7 +2160,7 @@ static int __init pktsched_init(void)
+@@ -2162,7 +2162,7 @@ static int __init pktsched_init(void)
return err;
}
diff --git a/target/linux/generic/hack-4.19/702-phy_add_aneg_done_function.patch b/target/linux/generic/hack-4.19/702-phy_add_aneg_done_function.patch
index 9a9097d91f..fe295906ee 100644
--- a/target/linux/generic/hack-4.19/702-phy_add_aneg_done_function.patch
+++ b/target/linux/generic/hack-4.19/702-phy_add_aneg_done_function.patch
@@ -15,7 +15,7 @@
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1512,6 +1512,9 @@ int genphy_update_link(struct phy_device
+@@ -1577,6 +1577,9 @@ int genphy_update_link(struct phy_device
{
int status;
diff --git a/target/linux/generic/pending-4.14/630-packet_socket_type.patch b/target/linux/generic/pending-4.14/630-packet_socket_type.patch
index 8dbe06023e..a4737b23ef 100644
--- a/target/linux/generic/pending-4.14/630-packet_socket_type.patch
+++ b/target/linux/generic/pending-4.14/630-packet_socket_type.patch
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau
#define PACKET_FANOUT_LB 1
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
-@@ -1829,6 +1829,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1836,6 +1836,7 @@ static int packet_rcv_spkt(struct sk_buf
{
struct sock *sk;
struct sockaddr_pkt *spkt;
@@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau
/*
* When we registered the protocol we saved the socket in the data
-@@ -1836,6 +1837,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1843,6 +1844,7 @@ static int packet_rcv_spkt(struct sk_buf
*/
sk = pt->af_packet_priv;
@@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau
/*
* Yank back the headers [hope the device set this
-@@ -1848,7 +1850,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1855,7 +1857,7 @@ static int packet_rcv_spkt(struct sk_buf
* so that this procedure is noop.
*/
@@ -55,7 +55,7 @@ Signed-off-by: Felix Fietkau
goto out;
if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -2075,12 +2077,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2082,12 +2084,12 @@ static int packet_rcv(struct sk_buff *sk
unsigned int snaplen, res;
bool is_drop_n_account = false;
@@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -2206,12 +2208,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2213,12 +2215,12 @@ static int tpacket_rcv(struct sk_buff *s
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -3294,6 +3296,7 @@ static int packet_create(struct net *net
+@@ -3301,6 +3303,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -3907,6 +3910,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3923,6 +3926,16 @@ packet_setsockopt(struct socket *sock, i
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
return 0;
}
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau
default:
return -ENOPROTOOPT;
}
-@@ -3959,6 +3972,13 @@ static int packet_getsockopt(struct sock
+@@ -3975,6 +3988,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
diff --git a/target/linux/generic/pending-4.14/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/pending-4.14/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
index 6e2eca6daf..96c8ae9c12 100644
--- a/target/linux/generic/pending-4.14/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
+++ b/target/linux/generic/pending-4.14/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
@@ -350,7 +350,7 @@ Signed-off-by: Steven Barth
memcpy(p->name, u->name, sizeof(u->name));
}
-@@ -1922,6 +2084,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1920,6 +2082,15 @@ static int ip6_tnl_validate(struct nlatt
return 0;
}
@@ -366,7 +366,7 @@ Signed-off-by: Steven Barth
static void ip6_tnl_netlink_parms(struct nlattr *data[],
struct __ip6_tnl_parm *parms)
{
-@@ -1959,6 +2130,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1957,6 +2128,46 @@ static void ip6_tnl_netlink_parms(struct
if (data[IFLA_IPTUN_FWMARK])
parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
@@ -413,7 +413,7 @@ Signed-off-by: Steven Barth
}
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
-@@ -2074,6 +2285,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2072,6 +2283,12 @@ static void ip6_tnl_dellink(struct net_d
static size_t ip6_tnl_get_size(const struct net_device *dev)
{
@@ -426,7 +426,7 @@ Signed-off-by: Steven Barth
return
/* IFLA_IPTUN_LINK */
nla_total_size(4) +
-@@ -2103,6 +2320,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -2101,6 +2318,24 @@ static size_t ip6_tnl_get_size(const str
nla_total_size(0) +
/* IFLA_IPTUN_FWMARK */
nla_total_size(4) +
@@ -451,7 +451,7 @@ Signed-off-by: Steven Barth
0;
}
-@@ -2110,6 +2345,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2108,6 +2343,9 @@ static int ip6_tnl_fill_info(struct sk_b
{
struct ip6_tnl *tunnel = netdev_priv(dev);
struct __ip6_tnl_parm *parm = &tunnel->parms;
@@ -461,7 +461,7 @@ Signed-off-by: Steven Barth
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2119,9 +2357,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2117,9 +2355,27 @@ static int ip6_tnl_fill_info(struct sk_b
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
@@ -490,7 +490,7 @@ Signed-off-by: Steven Barth
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
-@@ -2161,6 +2417,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -2159,6 +2415,7 @@ static const struct nla_policy ip6_tnl_p
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
diff --git a/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
index 8919ea34ec..067de75f3c 100644
--- a/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
+++ b/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
@@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
&changeupper_info.info);
}
-@@ -6970,6 +7017,7 @@ int dev_set_mac_address(struct net_devic
+@@ -6961,6 +7008,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;
diff --git a/target/linux/generic/pending-4.14/703-phy-add-detach-callback-to-struct-phy_driver.patch b/target/linux/generic/pending-4.14/703-phy-add-detach-callback-to-struct-phy_driver.patch
index 4ba722183c..d49fdc77ab 100644
--- a/target/linux/generic/pending-4.14/703-phy-add-detach-callback-to-struct-phy_driver.patch
+++ b/target/linux/generic/pending-4.14/703-phy-add-detach-callback-to-struct-phy_driver.patch
@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1105,6 +1105,9 @@ void phy_detach(struct phy_device *phyde
+@@ -1106,6 +1106,9 @@ void phy_detach(struct phy_device *phyde
struct module *ndev_owner = dev->dev.parent->driver->owner;
struct mii_bus *bus;
diff --git a/target/linux/generic/pending-4.19/630-packet_socket_type.patch b/target/linux/generic/pending-4.19/630-packet_socket_type.patch
index 7c4ab32fa2..25f44b466a 100644
--- a/target/linux/generic/pending-4.19/630-packet_socket_type.patch
+++ b/target/linux/generic/pending-4.19/630-packet_socket_type.patch
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau
#define PACKET_FANOUT_LB 1
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
-@@ -1790,6 +1790,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1796,6 +1796,7 @@ static int packet_rcv_spkt(struct sk_buf
{
struct sock *sk;
struct sockaddr_pkt *spkt;
@@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau
/*
* When we registered the protocol we saved the socket in the data
-@@ -1797,6 +1798,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1803,6 +1804,7 @@ static int packet_rcv_spkt(struct sk_buf
*/
sk = pt->af_packet_priv;
@@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau
/*
* Yank back the headers [hope the device set this
-@@ -1809,7 +1811,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1815,7 +1817,7 @@ static int packet_rcv_spkt(struct sk_buf
* so that this procedure is noop.
*/
@@ -55,7 +55,7 @@ Signed-off-by: Felix Fietkau
goto out;
if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -2037,12 +2039,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2043,12 +2045,12 @@ static int packet_rcv(struct sk_buff *sk
unsigned int snaplen, res;
bool is_drop_n_account = false;
@@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -2168,12 +2170,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2174,12 +2176,12 @@ static int tpacket_rcv(struct sk_buff *s
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -3259,6 +3261,7 @@ static int packet_create(struct net *net
+@@ -3265,6 +3267,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -3870,6 +3873,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3885,6 +3888,16 @@ packet_setsockopt(struct socket *sock, i
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
return 0;
}
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau
default:
return -ENOPROTOOPT;
}
-@@ -3922,6 +3935,13 @@ static int packet_getsockopt(struct sock
+@@ -3937,6 +3950,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
diff --git a/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch b/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch
index a4996efbc8..f0946e8dd2 100644
--- a/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch
+++ b/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch
@@ -237,7 +237,7 @@ Signed-off-by: Pablo Neira Ayuso
INIT_DEFERRABLE_WORK(&flowtable->gc_work, nf_flow_offload_work_gc);
err = rhashtable_init(&flowtable->rhashtable,
-@@ -535,6 +580,8 @@ static void nf_flow_table_iterate_cleanu
+@@ -538,6 +583,8 @@ static void nf_flow_table_iterate_cleanu
{
nf_flow_table_iterate(flowtable, nf_flow_table_do_cleanup, dev);
flush_delayed_work(&flowtable->gc_work);
@@ -246,7 +246,7 @@ Signed-off-by: Pablo Neira Ayuso
}
void nf_flow_table_cleanup(struct net *net, struct net_device *dev)
-@@ -548,6 +595,26 @@ void nf_flow_table_cleanup(struct net *n
+@@ -551,6 +598,26 @@ void nf_flow_table_cleanup(struct net *n
}
EXPORT_SYMBOL_GPL(nf_flow_table_cleanup);
@@ -273,7 +273,7 @@ Signed-off-by: Pablo Neira Ayuso
void nf_flow_table_free(struct nf_flowtable *flow_table)
{
mutex_lock(&flowtable_lock);
-@@ -557,9 +624,58 @@ void nf_flow_table_free(struct nf_flowta
+@@ -560,9 +627,58 @@ void nf_flow_table_free(struct nf_flowta
nf_flow_table_iterate(flow_table, nf_flow_table_do_cleanup, NULL);
WARN_ON(!nf_flow_offload_gc_step(flow_table));
rhashtable_destroy(&flow_table->rhashtable);
@@ -506,7 +506,7 @@ Signed-off-by: Pablo Neira Ayuso
+MODULE_ALIAS("nf-flow-table-hw");
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
-@@ -5490,6 +5490,13 @@ static int nf_tables_flowtable_parse_hoo
+@@ -5503,6 +5503,13 @@ static int nf_tables_flowtable_parse_hoo
if (err < 0)
return err;
@@ -520,7 +520,7 @@ Signed-off-by: Pablo Neira Ayuso
ops = kcalloc(n, sizeof(struct nf_hook_ops), GFP_KERNEL);
if (!ops)
return -ENOMEM;
-@@ -5621,10 +5628,19 @@ static int nf_tables_newflowtable(struct
+@@ -5634,10 +5641,19 @@ static int nf_tables_newflowtable(struct
}
flowtable->data.type = type;
@@ -540,7 +540,7 @@ Signed-off-by: Pablo Neira Ayuso
err = nf_tables_flowtable_parse_hook(&ctx, nla[NFTA_FLOWTABLE_HOOK],
flowtable);
if (err < 0)
-@@ -5750,7 +5766,8 @@ static int nf_tables_fill_flowtable_info
+@@ -5763,7 +5779,8 @@ static int nf_tables_fill_flowtable_info
nla_put_string(skb, NFTA_FLOWTABLE_NAME, flowtable->name) ||
nla_put_be32(skb, NFTA_FLOWTABLE_USE, htonl(flowtable->use)) ||
nla_put_be64(skb, NFTA_FLOWTABLE_HANDLE, cpu_to_be64(flowtable->handle),
@@ -552,7 +552,7 @@ Signed-off-by: Pablo Neira Ayuso
nest = nla_nest_start(skb, NFTA_FLOWTABLE_HOOK);
--- a/net/netfilter/nft_flow_offload.c
+++ b/net/netfilter/nft_flow_offload.c
-@@ -127,6 +127,9 @@ static void nft_flow_offload_eval(const
+@@ -126,6 +126,9 @@ static void nft_flow_offload_eval(const
if (ret < 0)
goto err_flow_add;
diff --git a/target/linux/generic/pending-4.19/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/pending-4.19/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
index d5f4a4c969..8b7594e9cf 100644
--- a/target/linux/generic/pending-4.19/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
+++ b/target/linux/generic/pending-4.19/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
@@ -350,7 +350,7 @@ Signed-off-by: Steven Barth
memcpy(p->name, u->name, sizeof(u->name));
}
-@@ -1926,6 +2088,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1924,6 +2086,15 @@ static int ip6_tnl_validate(struct nlatt
return 0;
}
@@ -366,7 +366,7 @@ Signed-off-by: Steven Barth
static void ip6_tnl_netlink_parms(struct nlattr *data[],
struct __ip6_tnl_parm *parms)
{
-@@ -1963,6 +2134,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1961,6 +2132,46 @@ static void ip6_tnl_netlink_parms(struct
if (data[IFLA_IPTUN_FWMARK])
parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
@@ -413,7 +413,7 @@ Signed-off-by: Steven Barth
}
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
-@@ -2078,6 +2289,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2076,6 +2287,12 @@ static void ip6_tnl_dellink(struct net_d
static size_t ip6_tnl_get_size(const struct net_device *dev)
{
@@ -426,7 +426,7 @@ Signed-off-by: Steven Barth
return
/* IFLA_IPTUN_LINK */
nla_total_size(4) +
-@@ -2107,6 +2324,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -2105,6 +2322,24 @@ static size_t ip6_tnl_get_size(const str
nla_total_size(0) +
/* IFLA_IPTUN_FWMARK */
nla_total_size(4) +
@@ -451,7 +451,7 @@ Signed-off-by: Steven Barth
0;
}
-@@ -2114,6 +2349,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2112,6 +2347,9 @@ static int ip6_tnl_fill_info(struct sk_b
{
struct ip6_tnl *tunnel = netdev_priv(dev);
struct __ip6_tnl_parm *parm = &tunnel->parms;
@@ -461,7 +461,7 @@ Signed-off-by: Steven Barth
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2123,9 +2361,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2121,9 +2359,27 @@ static int ip6_tnl_fill_info(struct sk_b
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
@@ -490,7 +490,7 @@ Signed-off-by: Steven Barth
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
-@@ -2165,6 +2421,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -2163,6 +2419,7 @@ static const struct nla_policy ip6_tnl_p
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
diff --git a/target/linux/generic/pending-4.19/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-4.19/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
index ad7ccdb048..61cc4e830a 100644
--- a/target/linux/generic/pending-4.19/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
+++ b/target/linux/generic/pending-4.19/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
@@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau
__u16 tc_index; /* traffic control index */
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -5483,6 +5483,9 @@ static enum gro_result dev_gro_receive(s
+@@ -5454,6 +5454,9 @@ static enum gro_result dev_gro_receive(s
int same_flow;
int grow;
@@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau
if (netif_elide_gro(skb->dev))
goto normal;
-@@ -7141,6 +7144,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -7112,6 +7115,48 @@ static void __netdev_adjacent_dev_unlink
&upper_dev->adj_list.lower);
}
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau
static int __netdev_upper_dev_link(struct net_device *dev,
struct net_device *upper_dev, bool master,
void *upper_priv, void *upper_info,
-@@ -7191,6 +7236,7 @@ static int __netdev_upper_dev_link(struc
+@@ -7162,6 +7207,7 @@ static int __netdev_upper_dev_link(struc
if (ret)
return ret;
@@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
&changeupper_info.info);
ret = notifier_to_errno(ret);
-@@ -7283,6 +7329,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -7254,6 +7300,7 @@ void netdev_upper_dev_unlink(struct net_
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
@@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
&changeupper_info.info);
-@@ -7913,6 +7960,7 @@ int dev_set_mac_address(struct net_devic
+@@ -7893,6 +7940,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;
diff --git a/target/linux/generic/pending-4.19/703-phy-add-detach-callback-to-struct-phy_driver.patch b/target/linux/generic/pending-4.19/703-phy-add-detach-callback-to-struct-phy_driver.patch
index dafd84759e..1c180b225b 100644
--- a/target/linux/generic/pending-4.19/703-phy-add-detach-callback-to-struct-phy_driver.patch
+++ b/target/linux/generic/pending-4.19/703-phy-add-detach-callback-to-struct-phy_driver.patch
@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1200,6 +1200,9 @@ void phy_detach(struct phy_device *phyde
+@@ -1201,6 +1201,9 @@ void phy_detach(struct phy_device *phyde
struct module *ndev_owner = dev->dev.parent->driver->owner;
struct mii_bus *bus;
diff --git a/target/linux/ipq40xx/patches-4.14/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch b/target/linux/ipq40xx/patches-4.14/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch
index 01de239814..b77ab89e66 100644
--- a/target/linux/ipq40xx/patches-4.14/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch
+++ b/target/linux/ipq40xx/patches-4.14/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch
@@ -8,7 +8,7 @@
{ "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) },
{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) },
{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
-@@ -1201,11 +1202,12 @@ static const struct flash_info spi_nor_i
+@@ -1205,11 +1206,12 @@ static const struct flash_info spi_nor_i
{ },
};
@@ -23,7 +23,7 @@
tmp = nor->read_reg(nor, SPINOR_OP_RDID, id, SPI_NOR_MAX_ID_LEN);
if (tmp < 0) {
-@@ -1216,10 +1218,16 @@ static const struct flash_info *spi_nor_
+@@ -1220,10 +1222,16 @@ static const struct flash_info *spi_nor_
for (tmp = 0; tmp < ARRAY_SIZE(spi_nor_ids) - 1; tmp++) {
info = &spi_nor_ids[tmp];
if (info->id_len) {
@@ -42,7 +42,7 @@
dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n",
id[0], id[1], id[2]);
return ERR_PTR(-ENODEV);
-@@ -2679,7 +2687,7 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -2683,7 +2691,7 @@ int spi_nor_scan(struct spi_nor *nor, co
info = spi_nor_match_id(name);
/* Try to auto-detect if chip name wasn't specified or not found */
if (!info)
@@ -51,7 +51,7 @@
if (IS_ERR_OR_NULL(info))
return -ENOENT;
-@@ -2690,7 +2698,7 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -2694,7 +2702,7 @@ int spi_nor_scan(struct spi_nor *nor, co
if (name && info->id_len) {
const struct flash_info *jinfo;
diff --git a/target/linux/ipq40xx/patches-4.19/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch b/target/linux/ipq40xx/patches-4.19/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch
index 4267107459..66746b962a 100644
--- a/target/linux/ipq40xx/patches-4.19/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch
+++ b/target/linux/ipq40xx/patches-4.19/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch
@@ -8,7 +8,7 @@
{ "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) },
{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) },
{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
-@@ -1276,11 +1277,12 @@ static const struct flash_info spi_nor_i
+@@ -1280,11 +1281,12 @@ static const struct flash_info spi_nor_i
{ },
};
@@ -23,7 +23,7 @@
tmp = nor->read_reg(nor, SPINOR_OP_RDID, id, SPI_NOR_MAX_ID_LEN);
if (tmp < 0) {
-@@ -1291,10 +1293,16 @@ static const struct flash_info *spi_nor_
+@@ -1295,10 +1297,16 @@ static const struct flash_info *spi_nor_
for (tmp = 0; tmp < ARRAY_SIZE(spi_nor_ids) - 1; tmp++) {
info = &spi_nor_ids[tmp];
if (info->id_len) {
@@ -42,7 +42,7 @@
dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n",
id[0], id[1], id[2]);
return ERR_PTR(-ENODEV);
-@@ -2828,7 +2836,7 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -2832,7 +2840,7 @@ int spi_nor_scan(struct spi_nor *nor, co
info = spi_nor_match_id(name);
/* Try to auto-detect if chip name wasn't specified or not found */
if (!info)
@@ -51,7 +51,7 @@
if (IS_ERR_OR_NULL(info))
return -ENOENT;
-@@ -2839,7 +2847,7 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -2843,7 +2851,7 @@ int spi_nor_scan(struct spi_nor *nor, co
if (name && info->id_len) {
const struct flash_info *jinfo;
diff --git a/target/linux/ipq806x/patches-4.19/0049-PM-OPP-Support-adjusting-OPP-voltages-at-runtime.patch b/target/linux/ipq806x/patches-4.19/0049-PM-OPP-Support-adjusting-OPP-voltages-at-runtime.patch
index bb82251bfd..c1cf02e747 100644
--- a/target/linux/ipq806x/patches-4.19/0049-PM-OPP-Support-adjusting-OPP-voltages-at-runtime.patch
+++ b/target/linux/ipq806x/patches-4.19/0049-PM-OPP-Support-adjusting-OPP-voltages-at-runtime.patch
@@ -39,7 +39,7 @@ Signed-off-by: Sylwester Nawrocki
--- a/drivers/opp/core.c
+++ b/drivers/opp/core.c
-@@ -1623,6 +1623,75 @@ put_table:
+@@ -1629,6 +1629,75 @@ put_table:
}
/**
diff --git a/target/linux/ipq806x/patches-4.19/0052-PM-OPP-Update-the-voltage-tolerance-when-adjusting-t.patch b/target/linux/ipq806x/patches-4.19/0052-PM-OPP-Update-the-voltage-tolerance-when-adjusting-t.patch
index 8ba2369ddd..9f0b9ec6d3 100644
--- a/target/linux/ipq806x/patches-4.19/0052-PM-OPP-Update-the-voltage-tolerance-when-adjusting-t.patch
+++ b/target/linux/ipq806x/patches-4.19/0052-PM-OPP-Update-the-voltage-tolerance-when-adjusting-t.patch
@@ -17,7 +17,7 @@ Signed-off-by: Georgi Djakov
--- a/drivers/opp/core.c
+++ b/drivers/opp/core.c
-@@ -1663,6 +1663,7 @@ int dev_pm_opp_adjust_voltage(struct dev
+@@ -1669,6 +1669,7 @@ int dev_pm_opp_adjust_voltage(struct dev
struct opp_table *opp_table;
struct dev_pm_opp *tmp_opp, *opp = ERR_PTR(-ENODEV);
int r = 0;
@@ -25,7 +25,7 @@ Signed-off-by: Georgi Djakov
/* Find the opp_table */
opp_table = _find_opp_table(dev);
-@@ -1692,8 +1693,17 @@ int dev_pm_opp_adjust_voltage(struct dev
+@@ -1698,8 +1699,17 @@ int dev_pm_opp_adjust_voltage(struct dev
goto adjust_unlock;
opp->supplies->u_volt = u_volt;
diff --git a/target/linux/layerscape/patches-4.14/202-core-linux-support-layerscape.patch b/target/linux/layerscape/patches-4.14/202-core-linux-support-layerscape.patch
index 63d12e688e..784b10dd50 100644
--- a/target/linux/layerscape/patches-4.14/202-core-linux-support-layerscape.patch
+++ b/target/linux/layerscape/patches-4.14/202-core-linux-support-layerscape.patch
@@ -77,8 +77,8 @@ Signed-off-by: Yangbo Lu
*
* A side effect of the link creation is re-ordering of dpm_list and the
* devices_kset list by moving the consumer device and all devices depending
-@@ -182,7 +182,8 @@ struct device_link *device_link_add(stru
- struct device_link *link;
+@@ -183,7 +183,8 @@ struct device_link *device_link_add(stru
+ bool rpm_put_supplier = false;
if (!consumer || !supplier ||
- ((flags & DL_FLAG_STATELESS) && (flags & DL_FLAG_AUTOREMOVE)))
@@ -86,8 +86,8 @@ Signed-off-by: Yangbo Lu
+ (flags & DL_FLAG_AUTOREMOVE_CONSUMER)))
return NULL;
- device_links_write_lock();
-@@ -200,8 +201,10 @@ struct device_link *device_link_add(stru
+ if (flags & DL_FLAG_PM_RUNTIME && flags & DL_FLAG_RPM_ACTIVE) {
+@@ -209,8 +210,10 @@ struct device_link *device_link_add(stru
}
list_for_each_entry(link, &supplier->links.consumers, s_node)
@@ -99,7 +99,7 @@ Signed-off-by: Yangbo Lu
link = kzalloc(sizeof(*link), GFP_KERNEL);
if (!link)
-@@ -233,6 +236,7 @@ struct device_link *device_link_add(stru
+@@ -237,6 +240,7 @@ struct device_link *device_link_add(stru
link->consumer = consumer;
INIT_LIST_HEAD(&link->c_node);
link->flags = flags;
@@ -107,7 +107,7 @@ Signed-off-by: Yangbo Lu
/* Determine the initial link state. */
if (flags & DL_FLAG_STATELESS) {
-@@ -303,8 +307,10 @@ static void __device_link_free_srcu(stru
+@@ -311,8 +315,10 @@ static void __device_link_free_srcu(stru
device_link_free(container_of(rhead, struct device_link, rcu_head));
}
@@ -119,7 +119,7 @@ Signed-off-by: Yangbo Lu
dev_info(link->consumer, "Dropping the link to %s\n",
dev_name(link->supplier));
-@@ -316,8 +322,10 @@ static void __device_link_del(struct dev
+@@ -324,8 +330,10 @@ static void __device_link_del(struct dev
call_srcu(&device_links_srcu, &link->rcu_head, __device_link_free_srcu);
}
#else /* !CONFIG_SRCU */
@@ -131,7 +131,7 @@ Signed-off-by: Yangbo Lu
dev_info(link->consumer, "Dropping the link to %s\n",
dev_name(link->supplier));
-@@ -335,18 +343,50 @@ static void __device_link_del(struct dev
+@@ -343,18 +351,50 @@ static void __device_link_del(struct dev
* @link: Device link to delete.
*
* The caller must ensure proper synchronization of this function with runtime
@@ -184,7 +184,7 @@ Signed-off-by: Yangbo Lu
static void device_links_missing_supplier(struct device *dev)
{
struct device_link *link;
-@@ -454,8 +494,8 @@ static void __device_links_no_driver(str
+@@ -462,8 +502,8 @@ static void __device_links_no_driver(str
if (link->flags & DL_FLAG_STATELESS)
continue;
@@ -195,7 +195,7 @@ Signed-off-by: Yangbo Lu
else if (link->status != DL_STATE_SUPPLIER_UNBIND)
WRITE_ONCE(link->status, DL_STATE_AVAILABLE);
}
-@@ -490,8 +530,18 @@ void device_links_driver_cleanup(struct
+@@ -498,8 +538,18 @@ void device_links_driver_cleanup(struct
if (link->flags & DL_FLAG_STATELESS)
continue;
@@ -215,7 +215,7 @@ Signed-off-by: Yangbo Lu
WRITE_ONCE(link->status, DL_STATE_DORMANT);
}
-@@ -608,13 +658,13 @@ static void device_links_purge(struct de
+@@ -616,13 +666,13 @@ static void device_links_purge(struct de
list_for_each_entry_safe_reverse(link, ln, &dev->links.suppliers, c_node) {
WARN_ON(link->status == DL_STATE_ACTIVE);
@@ -231,7 +231,7 @@ Signed-off-by: Yangbo Lu
}
device_links_write_unlock();
-@@ -1036,6 +1086,34 @@ static ssize_t online_store(struct devic
+@@ -1044,6 +1094,34 @@ static ssize_t online_store(struct devic
}
static DEVICE_ATTR_RW(online);
@@ -266,7 +266,7 @@ Signed-off-by: Yangbo Lu
int device_add_groups(struct device *dev, const struct attribute_group **groups)
{
return sysfs_create_groups(&dev->kobj, groups);
-@@ -1207,8 +1285,20 @@ static int device_add_attrs(struct devic
+@@ -1215,8 +1293,20 @@ static int device_add_attrs(struct devic
goto err_remove_dev_groups;
}
@@ -287,7 +287,7 @@ Signed-off-by: Yangbo Lu
err_remove_dev_groups:
device_remove_groups(dev, dev->groups);
err_remove_type_groups:
-@@ -1226,6 +1316,8 @@ static void device_remove_attrs(struct d
+@@ -1234,6 +1324,8 @@ static void device_remove_attrs(struct d
struct class *class = dev->class;
const struct device_type *type = dev->type;
@@ -462,7 +462,7 @@ Signed-off-by: Yangbo Lu
extern int __must_check bus_create_file(struct bus_type *,
struct bus_attribute *);
-@@ -750,14 +752,16 @@ enum device_link_state {
+@@ -751,14 +753,16 @@ enum device_link_state {
* Device link flags.
*
* STATELESS: The core won't track the presence of supplier/consumer drivers.
@@ -484,7 +484,7 @@ Signed-off-by: Yangbo Lu
/**
* struct device_link - Device link representation.
-@@ -768,6 +772,7 @@ enum device_link_state {
+@@ -769,6 +773,7 @@ enum device_link_state {
* @status: The state of the link (with respect to the presence of drivers).
* @flags: Link flags.
* @rpm_active: Whether or not the consumer device is runtime-PM-active.
@@ -492,7 +492,7 @@ Signed-off-by: Yangbo Lu
* @rcu_head: An RCU head to use for deferred execution of SRCU callbacks.
*/
struct device_link {
-@@ -778,6 +783,7 @@ struct device_link {
+@@ -779,6 +784,7 @@ struct device_link {
enum device_link_state status;
u32 flags;
bool rpm_active;
@@ -500,7 +500,7 @@ Signed-off-by: Yangbo Lu
#ifdef CONFIG_SRCU
struct rcu_head rcu_head;
#endif
-@@ -850,6 +856,8 @@ struct dev_links_info {
+@@ -851,6 +857,8 @@ struct dev_links_info {
* @coherent_dma_mask: Like dma_mask, but for alloc_coherent mapping as not all
* hardware supports 64-bit addresses for consistent allocations
* such descriptors.
@@ -509,7 +509,7 @@ Signed-off-by: Yangbo Lu
* @dma_pfn_offset: offset of DMA memory range relatively of RAM
* @dma_parms: A low level driver may set these to teach IOMMU code about
* segment limitations.
-@@ -929,6 +937,7 @@ struct device {
+@@ -930,6 +938,7 @@ struct device {
not all hardware supports
64 bit addresses for consistent
allocations such descriptors. */
@@ -517,7 +517,7 @@ Signed-off-by: Yangbo Lu
unsigned long dma_pfn_offset;
struct device_dma_parameters *dma_parms;
-@@ -1267,6 +1276,7 @@ extern const char *dev_driver_string(con
+@@ -1268,6 +1277,7 @@ extern const char *dev_driver_string(con
struct device_link *device_link_add(struct device *consumer,
struct device *supplier, u32 flags);
void device_link_del(struct device_link *link);
@@ -580,7 +580,7 @@ Signed-off-by: Yangbo Lu
void __kfree_skb(struct sk_buff *skb);
extern struct kmem_cache *skbuff_head_cache;
-@@ -3313,6 +3314,7 @@ static inline void skb_free_datagram_loc
+@@ -3315,6 +3316,7 @@ static inline void skb_free_datagram_loc
}
int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags);
int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len);
diff --git a/target/linux/layerscape/patches-4.14/811-clock-support-layerscape.patch b/target/linux/layerscape/patches-4.14/811-clock-support-layerscape.patch
index 331c77c80a..09a33572fe 100644
--- a/target/linux/layerscape/patches-4.14/811-clock-support-layerscape.patch
+++ b/target/linux/layerscape/patches-4.14/811-clock-support-layerscape.patch
@@ -75,7 +75,7 @@ Signed-off-by: Yogesh Gaur
snprintf(pll->div[i].name, sizeof(pll->div[i].name),
"cg-pll%d-div%d", idx, i + 1);
-@@ -1417,6 +1435,7 @@ CLK_OF_DECLARE(qoriq_clockgen_ls1043a, "
+@@ -1418,6 +1436,7 @@ CLK_OF_DECLARE(qoriq_clockgen_ls1043a, "
CLK_OF_DECLARE(qoriq_clockgen_ls1046a, "fsl,ls1046a-clockgen", clockgen_init);
CLK_OF_DECLARE(qoriq_clockgen_ls1088a, "fsl,ls1088a-clockgen", clockgen_init);
CLK_OF_DECLARE(qoriq_clockgen_ls2080a, "fsl,ls2080a-clockgen", clockgen_init);
diff --git a/target/linux/layerscape/patches-4.14/812-flexspi-support-layerscape.patch b/target/linux/layerscape/patches-4.14/812-flexspi-support-layerscape.patch
index 3ecec1756e..fa1cdf075a 100644
--- a/target/linux/layerscape/patches-4.14/812-flexspi-support-layerscape.patch
+++ b/target/linux/layerscape/patches-4.14/812-flexspi-support-layerscape.patch
@@ -1534,7 +1534,7 @@ Signed-off-by: Yogesh Gaur
/* PMC */
{ "pm25lv512", INFO(0, 0, 32 * 1024, 2, SECT_4K_PMC) },
{ "pm25lv010", INFO(0, 0, 32 * 1024, 4, SECT_4K_PMC) },
-@@ -2431,6 +2438,7 @@ static int spi_nor_init_params(struct sp
+@@ -2435,6 +2442,7 @@ static int spi_nor_init_params(struct sp
params->quad_enable = macronix_quad_enable;
break;
@@ -1542,7 +1542,7 @@ Signed-off-by: Yogesh Gaur
case SNOR_MFR_MICRON:
break;
-@@ -2749,7 +2757,8 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -2753,7 +2761,8 @@ int spi_nor_scan(struct spi_nor *nor, co
mtd->_read = spi_nor_read;
/* NOR protection support for STmicro/Micron chips and similar */
diff --git a/target/linux/layerscape/patches-4.14/820-sec-support-layerscape.patch b/target/linux/layerscape/patches-4.14/820-sec-support-layerscape.patch
index 9632b32d56..63f6540be0 100644
--- a/target/linux/layerscape/patches-4.14/820-sec-support-layerscape.patch
+++ b/target/linux/layerscape/patches-4.14/820-sec-support-layerscape.patch
@@ -11852,7 +11852,7 @@ Signed-off-by: Zhao Qiang
dev = caam_jr_alloc();
if (IS_ERR(dev)) {
-@@ -361,10 +342,3 @@ free_caam_alloc:
+@@ -364,10 +345,3 @@ free_caam_alloc:
caam_jr_free(dev);
return err;
}
diff --git a/target/linux/pistachio/patches-4.14/401-mtd-nor-support-mtd-name-from-device-tree.patch b/target/linux/pistachio/patches-4.14/401-mtd-nor-support-mtd-name-from-device-tree.patch
index d5f9627fac..f35b3901e0 100644
--- a/target/linux/pistachio/patches-4.14/401-mtd-nor-support-mtd-name-from-device-tree.patch
+++ b/target/linux/pistachio/patches-4.14/401-mtd-nor-support-mtd-name-from-device-tree.patch
@@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -2663,6 +2663,7 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -2667,6 +2667,7 @@ int spi_nor_scan(struct spi_nor *nor, co
struct device *dev = nor->dev;
struct mtd_info *mtd = &nor->mtd;
struct device_node *np = spi_nor_get_flash_node(nor);
@@ -18,7 +18,7 @@ Signed-off-by: Abhimanyu Vishwakarma
int ret;
int i;
-@@ -2738,7 +2739,12 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -2742,7 +2743,12 @@ int spi_nor_scan(struct spi_nor *nor, co
spi_nor_wait_till_ready(nor);
}
diff --git a/target/linux/ramips/patches-4.14/0053-mtd-spi-nor-add-w25q256-3b-mode-switch.patch b/target/linux/ramips/patches-4.14/0053-mtd-spi-nor-add-w25q256-3b-mode-switch.patch
index 8631f5d720..dee65a8394 100644
--- a/target/linux/ramips/patches-4.14/0053-mtd-spi-nor-add-w25q256-3b-mode-switch.patch
+++ b/target/linux/ramips/patches-4.14/0053-mtd-spi-nor-add-w25q256-3b-mode-switch.patch
@@ -125,7 +125,7 @@ Signed-off-by: Felix Fietkau
{ "w25m512jv", INFO(0xef7119, 0, 64 * 1024, 1024,
SECT_4K | SPI_NOR_QUAD_READ | SPI_NOR_DUAL_READ) },
-@@ -1237,6 +1289,9 @@ static int spi_nor_read(struct mtd_info
+@@ -1241,6 +1293,9 @@ static int spi_nor_read(struct mtd_info
if (ret)
return ret;
@@ -135,7 +135,7 @@ Signed-off-by: Felix Fietkau
while (len) {
loff_t addr = from;
-@@ -1261,6 +1316,18 @@ static int spi_nor_read(struct mtd_info
+@@ -1265,6 +1320,18 @@ static int spi_nor_read(struct mtd_info
ret = 0;
read_err:
@@ -154,7 +154,7 @@ Signed-off-by: Felix Fietkau
spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_READ);
return ret;
}
-@@ -1362,6 +1429,10 @@ static int spi_nor_write(struct mtd_info
+@@ -1366,6 +1433,10 @@ static int spi_nor_write(struct mtd_info
if (ret)
return ret;
@@ -165,7 +165,7 @@ Signed-off-by: Felix Fietkau
for (i = 0; i < len; ) {
ssize_t written;
loff_t addr = to + i;
-@@ -1402,6 +1473,7 @@ static int spi_nor_write(struct mtd_info
+@@ -1406,6 +1477,7 @@ static int spi_nor_write(struct mtd_info
}
write_err:
@@ -173,7 +173,7 @@ Signed-off-by: Felix Fietkau
spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_WRITE);
return ret;
}
-@@ -2818,8 +2890,10 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -2822,8 +2894,10 @@ int spi_nor_scan(struct spi_nor *nor, co
} else if (mtd->size > 0x1000000) {
/* enable 4-byte addressing if the device exceeds 16MiB */
nor->addr_width = 4;
diff --git a/target/linux/ramips/patches-4.14/0054-mtd-spi-nor-w25q256-respect-default-mode.patch b/target/linux/ramips/patches-4.14/0054-mtd-spi-nor-w25q256-respect-default-mode.patch
index b6266a8ef3..9ea2a11354 100644
--- a/target/linux/ramips/patches-4.14/0054-mtd-spi-nor-w25q256-respect-default-mode.patch
+++ b/target/linux/ramips/patches-4.14/0054-mtd-spi-nor-w25q256-respect-default-mode.patch
@@ -33,7 +33,7 @@
/*
* Write status register 1 byte
* Returns negative if error occurred.
-@@ -2890,9 +2899,16 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -2894,9 +2903,16 @@ int spi_nor_scan(struct spi_nor *nor, co
} else if (mtd->size > 0x1000000) {
/* enable 4-byte addressing if the device exceeds 16MiB */
nor->addr_width = 4;
diff --git a/target/linux/ramips/patches-4.14/304-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch b/target/linux/ramips/patches-4.14/304-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch
index c8febaf73f..831350546d 100644
--- a/target/linux/ramips/patches-4.14/304-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch
+++ b/target/linux/ramips/patches-4.14/304-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch
@@ -18,7 +18,7 @@ For reference see:
{ "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) },
{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) },
{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
-@@ -1267,11 +1268,12 @@ static const struct flash_info spi_nor_i
+@@ -1271,11 +1272,12 @@ static const struct flash_info spi_nor_i
{ },
};
@@ -33,7 +33,7 @@ For reference see:
tmp = nor->read_reg(nor, SPINOR_OP_RDID, id, SPI_NOR_MAX_ID_LEN);
if (tmp < 0) {
-@@ -1282,10 +1284,16 @@ static const struct flash_info *spi_nor_
+@@ -1286,10 +1288,16 @@ static const struct flash_info *spi_nor_
for (tmp = 0; tmp < ARRAY_SIZE(spi_nor_ids) - 1; tmp++) {
info = &spi_nor_ids[tmp];
if (info->id_len) {
@@ -52,7 +52,7 @@ For reference see:
dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n",
id[0], id[1], id[2]);
return ERR_PTR(-ENODEV);
-@@ -2765,7 +2773,7 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -2769,7 +2777,7 @@ int spi_nor_scan(struct spi_nor *nor, co
info = spi_nor_match_id(name);
/* Try to auto-detect if chip name wasn't specified or not found */
if (!info)
@@ -61,7 +61,7 @@ For reference see:
if (IS_ERR_OR_NULL(info))
return -ENOENT;
-@@ -2776,7 +2784,7 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -2780,7 +2788,7 @@ int spi_nor_scan(struct spi_nor *nor, co
if (name && info->id_len) {
const struct flash_info *jinfo;
diff --git a/target/linux/sunxi/patches-4.14/025-arm64-dts-allwinner-A64-Restore-EMAC-changes.patch b/target/linux/sunxi/patches-4.14/025-arm64-dts-allwinner-A64-Restore-EMAC-changes.patch
index af4a921583..23c3ec27ed 100644
--- a/target/linux/sunxi/patches-4.14/025-arm64-dts-allwinner-A64-Restore-EMAC-changes.patch
+++ b/target/linux/sunxi/patches-4.14/025-arm64-dts-allwinner-A64-Restore-EMAC-changes.patch
@@ -155,7 +155,7 @@ Signed-off-by: Maxime Ripard
pinctrl-0 = <&mmc2_pins>;
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
-@@ -449,6 +449,26 @@
+@@ -450,6 +450,26 @@
#size-cells = <0>;
};
diff --git a/target/linux/sunxi/patches-4.14/026-arm64-dts-allwinner-add-snps-dwmac-mdio-compatible-t.patch b/target/linux/sunxi/patches-4.14/026-arm64-dts-allwinner-add-snps-dwmac-mdio-compatible-t.patch
index 40efc9f3e8..ee4731d0dc 100644
--- a/target/linux/sunxi/patches-4.14/026-arm64-dts-allwinner-add-snps-dwmac-mdio-compatible-t.patch
+++ b/target/linux/sunxi/patches-4.14/026-arm64-dts-allwinner-add-snps-dwmac-mdio-compatible-t.patch
@@ -18,7 +18,7 @@ Signed-off-by: Maxime Ripard
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
-@@ -464,6 +464,7 @@
+@@ -465,6 +465,7 @@
#size-cells = <0>;
mdio: mdio {
diff --git a/target/linux/sunxi/patches-4.14/040-arm64-dts-allwinner-a64-Add-watchdog.patch b/target/linux/sunxi/patches-4.14/040-arm64-dts-allwinner-a64-Add-watchdog.patch
index 0503b88823..90c72f9508 100644
--- a/target/linux/sunxi/patches-4.14/040-arm64-dts-allwinner-a64-Add-watchdog.patch
+++ b/target/linux/sunxi/patches-4.14/040-arm64-dts-allwinner-a64-Add-watchdog.patch
@@ -32,7 +32,7 @@ Signed-off-by: Maxime Ripard
Example:
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
-@@ -537,5 +537,12 @@
+@@ -538,5 +538,12 @@
#address-cells = <1>;
#size-cells = <0>;
};
diff --git a/target/linux/sunxi/patches-4.14/080-arm64-allwinner-a64-add-SPI-nodes.patch b/target/linux/sunxi/patches-4.14/080-arm64-allwinner-a64-add-SPI-nodes.patch
index 5374547e92..1e40f99d04 100644
--- a/target/linux/sunxi/patches-4.14/080-arm64-allwinner-a64-add-SPI-nodes.patch
+++ b/target/linux/sunxi/patches-4.14/080-arm64-allwinner-a64-add-SPI-nodes.patch
@@ -21,7 +21,7 @@ Signed-off-by: Maxime Ripard
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
-@@ -325,6 +325,16 @@
+@@ -326,6 +326,16 @@
drive-strength = <40>;
};
@@ -38,7 +38,7 @@ Signed-off-by: Maxime Ripard
uart0_pins_a: uart0@0 {
pins = "PB8", "PB9";
function = "uart0";
-@@ -470,6 +480,37 @@
+@@ -471,6 +481,37 @@
};
};