generic: 6.1: manually refresh pending patches

Refresh pending patches for kernel 6.1.

Changes:
- Refresh mtd patches with new implementation.
- Change 191-rtc-rs5c372-let_the_alarm_to_be_used_as_wakeup_source as
  uie_unsupported got dropped and we now set the bit directly.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
This commit is contained in:
Christian Marangi 2022-10-18 23:24:43 +02:00
parent 9aee67efbb
commit fcab78c09f
No known key found for this signature in database
GPG key ID: AC001D09ADBFEAD7
36 changed files with 846 additions and 228 deletions

View file

@ -10,12 +10,12 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/Makefile --- a/Makefile
+++ b/Makefile +++ b/Makefile
@@ -534,7 +534,7 @@ KBUILD_LDFLAGS_MODULE := @@ -523,7 +523,7 @@ KBUILD_LDFLAGS_MODULE :=
KBUILD_LDFLAGS := # Allows the usage of unstable features in stable compilers.
CLANG_FLAGS := export RUSTC_BOOTSTRAP := 1
-export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC HOSTPKG_CONFIG -export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC HOSTPKG_CONFIG
+export ARCH SRCARCH SUBARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC HOSTPKG_CONFIG +export ARCH SRCARCH SUBARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC HOSTPKG_CONFIG
export RUSTC RUSTDOC RUSTFMT RUSTC_OR_CLIPPY_QUIET RUSTC_OR_CLIPPY BINDGEN CARGO
export HOSTRUSTC KBUILD_HOSTRUSTFLAGS
export CPP AR NM STRIP OBJCOPY OBJDUMP READELF PAHOLE RESOLVE_BTFIDS LEX YACC AWK INSTALLKERNEL export CPP AR NM STRIP OBJCOPY OBJDUMP READELF PAHOLE RESOLVE_BTFIDS LEX YACC AWK INSTALLKERNEL
export PERL PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
export KGZIP KBZIP2 KLZOP LZMA LZ4 XZ ZSTD

View file

@ -23,10 +23,10 @@ Signed-off-by: Vincent Tremblay <vincent@vtremblay.dev>
}; };
MODULE_DEVICE_TABLE(spi, spidev_spi_ids); MODULE_DEVICE_TABLE(spi, spidev_spi_ids);
@@ -705,6 +706,7 @@ static const struct of_device_id spidev_ @@ -705,6 +706,7 @@ static const struct of_device_id spidev_
{ .compatible = "menlo,m53cpld" }, { .compatible = "menlo,m53cpld", .data = &spidev_of_check },
{ .compatible = "cisco,spi-petra" }, { .compatible = "cisco,spi-petra", .data = &spidev_of_check },
{ .compatible = "micron,spi-authenta" }, { .compatible = "micron,spi-authenta", .data = &spidev_of_check },
+ { .compatible = "silabs,em3581" }, + { .compatible = "silabs,em3581", .data = &spidev_of_check },
{}, {},
}; };
MODULE_DEVICE_TABLE(of, spidev_dt_ids); MODULE_DEVICE_TABLE(of, spidev_dt_ids);

View file

@ -23,10 +23,10 @@ Signed-off-by: Vincent Tremblay <vincent@vtremblay.dev>
}; };
MODULE_DEVICE_TABLE(spi, spidev_spi_ids); MODULE_DEVICE_TABLE(spi, spidev_spi_ids);
@@ -707,6 +708,7 @@ static const struct of_device_id spidev_ @@ -707,6 +708,7 @@ static const struct of_device_id spidev_
{ .compatible = "cisco,spi-petra" }, { .compatible = "cisco,spi-petra", .data = &spidev_of_check },
{ .compatible = "micron,spi-authenta" }, { .compatible = "micron,spi-authenta", .data = &spidev_of_check },
{ .compatible = "silabs,em3581" }, { .compatible = "silabs,em3581", .data = &spidev_of_check },
+ { .compatible = "silabs,si3210" }, + { .compatible = "silabs,si3210", .data = &spidev_of_check },
{}, {},
}; };
MODULE_DEVICE_TABLE(of, spidev_dt_ids); MODULE_DEVICE_TABLE(of, spidev_dt_ids);

View file

@ -71,7 +71,7 @@ Signed-off-by: Tobias Wolf <dev-NTEO@vplace.de>
--- a/mm/page_alloc.c --- a/mm/page_alloc.c
+++ b/mm/page_alloc.c +++ b/mm/page_alloc.c
@@ -7620,7 +7620,7 @@ static void __init alloc_node_mem_map(st @@ -7556,7 +7556,7 @@ static void __init alloc_node_mem_map(st
if (pgdat == NODE_DATA(0)) { if (pgdat == NODE_DATA(0)) {
mem_map = NODE_DATA(0)->node_mem_map; mem_map = NODE_DATA(0)->node_mem_map;
if (page_to_pfn(mem_map) != pgdat->node_start_pfn) if (page_to_pfn(mem_map) != pgdat->node_start_pfn)

View file

@ -58,12 +58,13 @@ Signed-off-by: Daniel González Cabanelas <dgcbueu@gmail.com>
rs5c372->rtc = devm_rtc_device_register(&client->dev, rs5c372->rtc = devm_rtc_device_register(&client->dev,
rs5c372_driver.driver.name, rs5c372_driver.driver.name,
&rs5c372_rtc_ops, THIS_MODULE); &rs5c372_rtc_ops, THIS_MODULE);
@@ -761,6 +774,9 @@ static int rs5c372_probe(struct i2c_clie @@ -761,6 +774,10 @@ static int rs5c372_probe(struct i2c_clie
if (err) if (err)
goto exit; goto exit;
+ /* the rs5c372 alarm only supports a minute accuracy */ + /* the rs5c372 alarm only supports a minute accuracy */
+ rs5c372->rtc->uie_unsupported = 1; + set_bit(RTC_FEATURE_ALARM_RES_MINUTE, rs5c372->rtc->features);
+ clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, rs5c372->rtc->features);
+ +
return 0; return 0;

View file

@ -95,22 +95,21 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/* using the '\0' symbol last allows compress_symbols to use standard /* using the '\0' symbol last allows compress_symbols to use standard
* fast string functions */ * fast string functions */
for (i = 255; i >= 0; i--) { for (i = 255; i >= 0; i--) {
@@ -773,6 +783,8 @@ int main(int argc, char **argv) @@ -773,6 +783,7 @@ int main(int argc, char **argv)
absolute_percpu = 1; {"all-symbols", no_argument, &all_symbols, 1},
else if (strcmp(argv[i], "--base-relative") == 0) {"absolute-percpu", no_argument, &absolute_percpu, 1},
base_relative = 1; {"base-relative", no_argument, &base_relative, 1},
+ else if (strcmp(argv[i], "--uncompressed") == 0) + {"uncompressed", no_argument, &uncompressed, 1},
+ uncompressed = 1; {},
else };
usage();
}
--- a/scripts/link-vmlinux.sh --- a/scripts/link-vmlinux.sh
+++ b/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh
@@ -257,6 +257,10 @@ kallsyms() @@ -266,6 +266,10 @@ kallsyms()
kallsymopt="${kallsymopt} --base-relative" kallsymopt="${kallsymopt} --base-relative"
fi fi
+ if [ -n "${CONFIG_KALLSYMS_UNCOMPRESSED}" ]; then + if is_enabled CONFIG_KALLSYMS_UNCOMPRESSED; then
+ kallsymopt="${kallsymopt} --uncompressed" + kallsymopt="${kallsymopt} --uncompressed"
+ fi + fi
+ +

View file

@ -17,9 +17,9 @@ Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
--- a/drivers/platform/Kconfig --- a/drivers/platform/Kconfig
+++ b/drivers/platform/Kconfig +++ b/drivers/platform/Kconfig
@@ -15,3 +15,5 @@ source "drivers/platform/mellanox/Kconfi @@ -15,3 +15,5 @@ source "drivers/platform/mellanox/Kconfi
source "drivers/platform/olpc/Kconfig"
source "drivers/platform/surface/Kconfig" source "drivers/platform/surface/Kconfig"
source "drivers/platform/x86/Kconfig"
+ +
+source "drivers/platform/mikrotik/Kconfig" +source "drivers/platform/mikrotik/Kconfig"
--- a/drivers/platform/Makefile --- a/drivers/platform/Makefile

View file

@ -289,7 +289,7 @@ Subject: [PATCH] mtd: mtdsplit support
static inline uint32_t mtd_div_by_ws(uint64_t sz, struct mtd_info *mtd) static inline uint32_t mtd_div_by_ws(uint64_t sz, struct mtd_info *mtd)
{ {
if (mtd->writesize_shift) if (mtd->writesize_shift)
@@ -693,6 +711,13 @@ extern struct mtd_info *of_get_mtd_devic @@ -685,6 +703,13 @@ extern void __put_mtd_device(struct mtd_
extern struct mtd_info *get_mtd_device_nm(const char *name); extern struct mtd_info *get_mtd_device_nm(const char *name);
extern void put_mtd_device(struct mtd_info *mtd); extern void put_mtd_device(struct mtd_info *mtd);

View file

@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/drivers/mtd/parsers/redboot.c --- a/drivers/mtd/parsers/redboot.c
+++ b/drivers/mtd/parsers/redboot.c +++ b/drivers/mtd/parsers/redboot.c
@@ -278,14 +278,21 @@ nogood: @@ -277,14 +277,21 @@ nogood:
#endif #endif
names += strlen(names) + 1; names += strlen(names) + 1;

View file

@ -8,11 +8,12 @@ Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
--- a/drivers/mtd/spi-nor/eon.c --- a/drivers/mtd/spi-nor/eon.c
+++ b/drivers/mtd/spi-nor/eon.c +++ b/drivers/mtd/spi-nor/eon.c
@@ -25,6 +25,7 @@ static const struct flash_info eon_parts @@ -15,6 +15,8 @@ static const struct flash_info eon_parts
{ "en25q32b", INFO(0x1c3016, 0, 64 * 1024, 64, 0) }, { "en25p64", INFO(0x1c2017, 0, 64 * 1024, 128) },
{ "en25p64", INFO(0x1c2017, 0, 64 * 1024, 128, 0) }, { "en25q64", INFO(0x1c3017, 0, 64 * 1024, 128)
{ "en25q64", INFO(0x1c3017, 0, 64 * 1024, 128, SECT_4K) }, NO_SFDP_FLAGS(SECT_4K) },
+ { "en25q128", INFO(0x1c3018, 0, 64 * 1024, 256, SECT_4K) }, + { "en25q128", INFO(0x1c3018, 0, 64 * 1024, 256)
{ "en25q80a", INFO(0x1c3014, 0, 64 * 1024, 16, + NO_SFDP_FLAGS(SECT_4K) },
SECT_4K | SPI_NOR_DUAL_READ) }, { "en25q80a", INFO(0x1c3014, 0, 64 * 1024, 16)
{ "en25qh16", INFO(0x1c7015, 0, 64 * 1024, 32, NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ) },
{ "en25qh16", INFO(0x1c7015, 0, 64 * 1024, 32)

View file

@ -12,10 +12,10 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
--- a/drivers/mtd/spi-nor/eon.c --- a/drivers/mtd/spi-nor/eon.c
+++ b/drivers/mtd/spi-nor/eon.c +++ b/drivers/mtd/spi-nor/eon.c
@@ -26,6 +26,7 @@ static const struct flash_info eon_parts @@ -26,6 +26,7 @@ static const struct flash_info eon_parts
{ "en25p64", INFO(0x1c2017, 0, 64 * 1024, 128, 0) }, NO_SFDP_FLAGS(SECT_4K) },
{ "en25q64", INFO(0x1c3017, 0, 64 * 1024, 128, SECT_4K) }, { "en25q128", INFO(0x1c3018, 0, 64 * 1024, 256)
{ "en25q128", INFO(0x1c3018, 0, 64 * 1024, 256, SECT_4K) }, NO_SFDP_FLAGS(SECT_4K) },
+ { "en25qx128a", INFO(0x1c7118, 0, 64 * 1024, 256, 0) }, + { "en25qx128a", INFO(0x1c7118, 0, 64 * 1024, 256) },
{ "en25q80a", INFO(0x1c3014, 0, 64 * 1024, 16, { "en25q80a", INFO(0x1c3014, 0, 64 * 1024, 16)
SECT_4K | SPI_NOR_DUAL_READ) }, NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ) },
{ "en25qh16", INFO(0x1c7015, 0, 64 * 1024, 32, { "en25qh16", INFO(0x1c7015, 0, 64 * 1024, 32)

View file

@ -31,17 +31,18 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/drivers/mtd/spi-nor/Makefile --- a/drivers/mtd/spi-nor/Makefile
+++ b/drivers/mtd/spi-nor/Makefile +++ b/drivers/mtd/spi-nor/Makefile
@@ -17,6 +17,7 @@ spi-nor-objs += sst.o @@ -17,7 +17,8 @@ spi-nor-objs += sst.o
spi-nor-objs += winbond.o spi-nor-objs += winbond.o
spi-nor-objs += xilinx.o spi-nor-objs += xilinx.o
spi-nor-objs += xmc.o spi-nor-objs += xmc.o
+spi-nor-objs += xtx.o +spi-nor-objs += xtx.o
spi-nor-$(CONFIG_DEBUG_FS) += debugfs.o
obj-$(CONFIG_MTD_SPI_NOR) += spi-nor.o obj-$(CONFIG_MTD_SPI_NOR) += spi-nor.o
obj-$(CONFIG_MTD_SPI_NOR) += controllers/ obj-$(CONFIG_MTD_SPI_NOR) += controllers/
--- /dev/null --- /dev/null
+++ b/drivers/mtd/spi-nor/xtx.c +++ b/drivers/mtd/spi-nor/xtx.c
@@ -0,0 +1,15 @@ @@ -0,0 +1,17 @@
+// SPDX-License-Identifier: GPL-2.0 +// SPDX-License-Identifier: GPL-2.0
+#include <linux/mtd/spi-nor.h> +#include <linux/mtd/spi-nor.h>
+ +
@ -49,7 +50,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ +
+static const struct flash_info xtx_parts[] = { +static const struct flash_info xtx_parts[] = {
+ /* XTX Technology (Shenzhen) Limited */ + /* XTX Technology (Shenzhen) Limited */
+ { "xt25f128b", INFO(0x0B4018, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, + { "xt25f128b", INFO(0x0B4018, 0, 64 * 1024, 256)
+ NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ |
+ SPI_NOR_QUAD_READ) },
+}; +};
+ +
+const struct spi_nor_manufacturer spi_nor_xtx = { +const struct spi_nor_manufacturer spi_nor_xtx = {

View file

@ -10,13 +10,14 @@ Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
--- a/drivers/mtd/spi-nor/gigadevice.c --- a/drivers/mtd/spi-nor/gigadevice.c
+++ b/drivers/mtd/spi-nor/gigadevice.c +++ b/drivers/mtd/spi-nor/gigadevice.c
@@ -24,6 +24,9 @@ static struct spi_nor_fixups gd25q256_fi @@ -24,6 +24,10 @@ static struct spi_nor_fixups gd25q256_fi
}; };
static const struct flash_info gigadevice_parts[] = { static const struct flash_info gigadevice_nor_parts[] = {
+ { "gd25q05", INFO(0xc84010, 0, 64 * 1024, 1, + { "gd25q05", INFO(0xc84010, 0, 64 * 1024, 1)
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | + FLAGS(SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
+ SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) }, + NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ |
{ "gd25q16", INFO(0xc84015, 0, 64 * 1024, 32, + SPI_NOR_QUAD_READ) },
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | { "gd25q16", INFO(0xc84015, 0, 64 * 1024, 32)
SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) }, FLAGS(SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ |

View file

@ -9,13 +9,15 @@ Subject: [PATCH] spi-nor/gigadevic: add gd25q512
--- a/drivers/mtd/spi-nor/gigadevice.c --- a/drivers/mtd/spi-nor/gigadevice.c
+++ b/drivers/mtd/spi-nor/gigadevice.c +++ b/drivers/mtd/spi-nor/gigadevice.c
@@ -53,6 +53,9 @@ static const struct flash_info gigadevic @@ -53,6 +53,11 @@ static const struct flash_info gigadevic
SPI_NOR_4B_OPCODES | SPI_NOR_HAS_LOCK | FLAGS(SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB | SPI_NOR_TB_SR_BIT6)
SPI_NOR_HAS_TB | SPI_NOR_TB_SR_BIT6) FIXUP_FLAGS(SPI_NOR_4B_OPCODES)
.fixups = &gd25q256_fixups }, .fixups = &gd25q256_fixups },
+ { "gd25q512", INFO(0xc84020, 0, 64 * 1024, 1024, + { "gd25q512", INFO(0xc84020, 0, 64 * 1024, 1024)
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | + FLAGS(SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
+ SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB | SPI_NOR_4B_OPCODES) }, + FIXUP_FLAGS(SPI_NOR_4B_OPCODES)
+ NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ |
+ SPI_NOR_QUAD_READ) },
}; };
const struct spi_nor_manufacturer spi_nor_gigadevice = { const struct spi_nor_manufacturer spi_nor_gigadevice = {

View file

@ -12,12 +12,13 @@ flash.
--- a/drivers/mtd/spi-nor/esmt.c --- a/drivers/mtd/spi-nor/esmt.c
+++ b/drivers/mtd/spi-nor/esmt.c +++ b/drivers/mtd/spi-nor/esmt.c
@@ -10,6 +10,8 @@ @@ -10,6 +10,9 @@
static const struct flash_info esmt_parts[] = { static const struct flash_info esmt_parts[] = {
/* ESMT */ /* ESMT */
+ { "f25l16pa-2s", INFO(0x8c2115, 0, 64 * 1024, 32, + { "f25l16pa-2s", INFO(0x8c2115, 0, 64 * 1024, 32)
+ SECT_4K | SPI_NOR_HAS_LOCK) }, + FLAGS(SPI_NOR_HAS_LOCK)
{ "f25l32pa", INFO(0x8c2016, 0, 64 * 1024, 64, + NO_SFDP_FLAGS(SECT_4K) },
SECT_4K | SPI_NOR_HAS_LOCK | SPI_NOR_SWP_IS_VOLATILE) }, { "f25l32pa", INFO(0x8c2016, 0, 64 * 1024, 64)
{ "f25l32qa", INFO(0x8c4116, 0, 64 * 1024, 64, FLAGS(SPI_NOR_HAS_LOCK | SPI_NOR_SWP_IS_VOLATILE)
NO_SFDP_FLAGS(SECT_4K) },

View file

@ -13,12 +13,13 @@ Datasheet available at https://www.xmcwh.com/uploads/435/XM25QH128C.pdf
--- a/drivers/mtd/spi-nor/xmc.c --- a/drivers/mtd/spi-nor/xmc.c
+++ b/drivers/mtd/spi-nor/xmc.c +++ b/drivers/mtd/spi-nor/xmc.c
@@ -14,6 +14,8 @@ static const struct flash_info xmc_parts @@ -14,6 +14,9 @@ static const struct flash_info xmc_parts
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, { "XM25QH128A", INFO(0x207018, 0, 64 * 1024, 256)
{ "XM25QH128A", INFO(0x207018, 0, 64 * 1024, 256, NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ |
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, SPI_NOR_QUAD_READ) },
+ { "XM25QH128C", INFO(0x204018, 0, 64 * 1024, 256, + { "XM25QH128C", INFO(0x204018, 0, 64 * 1024, 256)
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, + NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ |
+ SPI_NOR_QUAD_READ) },
}; };
const struct spi_nor_manufacturer spi_nor_xmc = { const struct spi_nor_manufacturer spi_nor_xmc = {

View file

@ -26,15 +26,15 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
+++ b/drivers/mtd/nand/spi/Makefile +++ b/drivers/mtd/nand/spi/Makefile
@@ -1,3 +1,3 @@ @@ -1,3 +1,3 @@
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
-spinand-objs := core.o gigadevice.o macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o -spinand-objs := core.o ato.o gigadevice.o macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o
+spinand-objs := core.o esmt.o gigadevice.o macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o +spinand-objs := core.o ato.o esmt.o gigadevice.o macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
--- a/drivers/mtd/nand/spi/core.c --- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c
@@ -906,6 +906,7 @@ static const struct nand_ops spinand_ops @@ -896,6 +896,7 @@ static const struct nand_ops spinand_ops
};
static const struct spinand_manufacturer *spinand_manufacturers[] = { static const struct spinand_manufacturer *spinand_manufacturers[] = {
&ato_spinand_manufacturer,
+ &esmt_c8_spinand_manufacturer, + &esmt_c8_spinand_manufacturer,
&gigadevice_spinand_manufacturer, &gigadevice_spinand_manufacturer,
&macronix_spinand_manufacturer, &macronix_spinand_manufacturer,
@ -134,9 +134,9 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
--- a/include/linux/mtd/spinand.h --- a/include/linux/mtd/spinand.h
+++ b/include/linux/mtd/spinand.h +++ b/include/linux/mtd/spinand.h
@@ -260,6 +260,7 @@ struct spinand_manufacturer { @@ -260,6 +260,7 @@ struct spinand_manufacturer {
};
/* SPI NAND manufacturers */ /* SPI NAND manufacturers */
extern const struct spinand_manufacturer ato_spinand_manufacturer;
+extern const struct spinand_manufacturer esmt_c8_spinand_manufacturer; +extern const struct spinand_manufacturer esmt_c8_spinand_manufacturer;
extern const struct spinand_manufacturer gigadevice_spinand_manufacturer; extern const struct spinand_manufacturer gigadevice_spinand_manufacturer;
extern const struct spinand_manufacturer macronix_spinand_manufacturer; extern const struct spinand_manufacturer macronix_spinand_manufacturer;

View file

@ -42,19 +42,19 @@ Submitted-by: Daniel Danzberger <daniel@dd-wrt.com>
+++ b/drivers/mtd/nand/spi/Makefile +++ b/drivers/mtd/nand/spi/Makefile
@@ -1,3 +1,3 @@ @@ -1,3 +1,3 @@
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
-spinand-objs := core.o esmt.o gigadevice.o macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o -spinand-objs := core.o ato.o esmt.o gigadevice.o macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o
+spinand-objs := core.o esmt.o etron.o gigadevice.o macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o +spinand-objs := core.o ato.o esmt.o etron.o gigadevice.o macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
--- a/drivers/mtd/nand/spi/core.c --- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c
@@ -908,6 +908,7 @@ static const struct nand_ops spinand_ops @@ -908,6 +908,7 @@ static const struct nand_ops spinand_ops
static const struct spinand_manufacturer *spinand_manufacturers[] = { static const struct spinand_manufacturer *spinand_manufacturers[] = {
&ato_spinand_manufacturer,
&esmt_c8_spinand_manufacturer, &esmt_c8_spinand_manufacturer,
&gigadevice_spinand_manufacturer,
+ &etron_spinand_manufacturer, + &etron_spinand_manufacturer,
&gigadevice_spinand_manufacturer,
&macronix_spinand_manufacturer, &macronix_spinand_manufacturer,
&micron_spinand_manufacturer, &micron_spinand_manufacturer,
&paragon_spinand_manufacturer,
--- /dev/null --- /dev/null
+++ b/drivers/mtd/nand/spi/etron.c +++ b/drivers/mtd/nand/spi/etron.c
@@ -0,0 +1,98 @@ @@ -0,0 +1,98 @@

View file

@ -11,12 +11,13 @@ Signed-off-by: Joe Mullally <jwmullally@gmail.com>
--- a/drivers/mtd/spi-nor/xmc.c --- a/drivers/mtd/spi-nor/xmc.c
+++ b/drivers/mtd/spi-nor/xmc.c +++ b/drivers/mtd/spi-nor/xmc.c
@@ -12,6 +12,8 @@ static const struct flash_info xmc_parts @@ -12,6 +12,9 @@ static const struct flash_info xmc_parts
/* XMC (Wuhan Xinxin Semiconductor Manufacturing Corp.) */ { "XM25QH64A", INFO(0x207017, 0, 64 * 1024, 128)
{ "XM25QH64A", INFO(0x207017, 0, 64 * 1024, 128, NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ |
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, SPI_NOR_QUAD_READ) },
+ { "XM25QH64C", INFO(0x204017, 0, 64 * 1024, 128, + { "XM25QH64C", INFO(0x204017, 0, 64 * 1024, 128)
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, + NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ |
{ "XM25QH128A", INFO(0x207018, 0, 64 * 1024, 256, + SPI_NOR_QUAD_READ) },
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, { "XM25QH128A", INFO(0x207018, 0, 64 * 1024, 256)
{ "XM25QH128C", INFO(0x204018, 0, 64 * 1024, 256, NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ |
SPI_NOR_QUAD_READ) },

View file

@ -66,7 +66,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+ +
+ mutex_lock(&ubi_devices_mutex); + mutex_lock(&ubi_devices_mutex);
+ pr_notice("UBI: auto-attach mtd%d\n", mtd->index); + pr_notice("UBI: auto-attach mtd%d\n", mtd->index);
+ err = ubi_attach_mtd_dev(mtd, UBI_DEV_NUM_AUTO, 0, 0); + err = ubi_attach_mtd_dev(mtd, UBI_DEV_NUM_AUTO, 0, 0, false);
+ mutex_unlock(&ubi_devices_mutex); + mutex_unlock(&ubi_devices_mutex);
+ if (err < 0) { + if (err < 0) {
+ pr_err("UBI error: cannot attach mtd%d\n", mtd->index); + pr_err("UBI error: cannot attach mtd%d\n", mtd->index);

View file

@ -23,12 +23,12 @@ Signed-off-by: Nick Hainke <vincent@systemli.org>
--- a/drivers/mtd/spi-nor/macronix.c --- a/drivers/mtd/spi-nor/macronix.c
+++ b/drivers/mtd/spi-nor/macronix.c +++ b/drivers/mtd/spi-nor/macronix.c
@@ -41,7 +41,8 @@ static const struct flash_info macronix_ @@ -41,7 +41,8 @@ static const struct flash_info macronix_
{ "mx25l1606e", INFO(0xc22015, 0, 64 * 1024, 32, SECT_4K) }, { "mx25l3255e", INFO(0xc29e16, 0, 64 * 1024, 64)
{ "mx25l3205d", INFO(0xc22016, 0, 64 * 1024, 64, SECT_4K) }, NO_SFDP_FLAGS(SECT_4K) },
{ "mx25l3255e", INFO(0xc29e16, 0, 64 * 1024, 64, SECT_4K) }, { "mx25l6405d", INFO(0xc22017, 0, 64 * 1024, 128)
- { "mx25l6405d", INFO(0xc22017, 0, 64 * 1024, 128, SECT_4K) }, - NO_SFDP_FLAGS(SECT_4K) },
+ { "mx25l6405d", INFO(0xc22017, 0, 64 * 1024, 128, SECT_4K | + FLAGS(SPI_NOR_HAS_LOCK | SPI_NOR_4BIT_BP)
+ SPI_NOR_HAS_LOCK | SPI_NOR_4BIT_BP) }, + NO_SFDP_FLAGS(SECT_4K) },
{ "mx25u2033e", INFO(0xc22532, 0, 64 * 1024, 4, SECT_4K) }, { "mx25u2033e", INFO(0xc22532, 0, 64 * 1024, 4)
{ "mx25u3235f", INFO(0xc22536, 0, 64 * 1024, 64, NO_SFDP_FLAGS(SECT_4K) },
SECT_4K | SPI_NOR_DUAL_READ | { "mx25u3235f", INFO(0xc22536, 0, 64 * 1024, 64)

View file

@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#include <net/net_namespace.h> #include <net/net_namespace.h>
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
#include <linux/sysctl.h> #include <linux/sysctl.h>
@@ -462,6 +463,56 @@ static int ct_cpu_seq_show(struct seq_fi @@ -462,6 +463,58 @@ static int ct_cpu_seq_show(struct seq_fi
return 0; return 0;
} }
@ -47,7 +47,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+static int ct_file_write(struct file *file, char *buf, size_t count) +static int ct_file_write(struct file *file, char *buf, size_t count)
+{ +{
+ struct seq_file *seq = file->private_data; + struct seq_file *seq = file->private_data;
+ struct net *net = seq_file_net(seq); + struct nf_ct_iter_data iter_data;
+ struct kill_request kr = { }; + struct kill_request kr = { };
+ +
+ if (count == 0) + if (count == 0)
@ -66,7 +66,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ return -EINVAL; + return -EINVAL;
+ } + }
+ +
+ nf_ct_iterate_cleanup_net(net, kill_matching, &kr, 0, 0); + iter_data.net = seq_file_net(seq);
+ iter_data.data = &kr;
+ nf_ct_iterate_cleanup_net(kill_matching, &iter_data);
+ +
+ return 0; + return 0;
+} +}

View file

@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/include/linux/skbuff.h --- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h +++ b/include/linux/skbuff.h
@@ -2821,7 +2821,7 @@ static inline int pskb_network_may_pull( @@ -2782,7 +2782,7 @@ static inline int pskb_network_may_pull(
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8) * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
*/ */
#ifndef NET_SKB_PAD #ifndef NET_SKB_PAD

View file

@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/include/linux/netdevice.h --- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h +++ b/include/linux/netdevice.h
@@ -2098,6 +2098,8 @@ struct net_device { @@ -2075,6 +2075,8 @@ struct net_device {
struct netdev_hw_addr_list mc; struct netdev_hw_addr_list mc;
struct netdev_hw_addr_list dev_addrs; struct netdev_hw_addr_list dev_addrs;
@ -22,7 +22,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#endif #endif
--- a/include/linux/skbuff.h --- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h +++ b/include/linux/skbuff.h
@@ -893,6 +893,7 @@ struct sk_buff { @@ -890,6 +890,7 @@ struct sk_buff {
#ifdef CONFIG_IPV6_NDISC_NODETYPE #ifdef CONFIG_IPV6_NDISC_NODETYPE
__u8 ndisc_nodetype:2; __u8 ndisc_nodetype:2;
#endif #endif
@ -30,9 +30,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
__u8 ipvs_property:1; __u8 ipvs_property:1;
__u8 inner_protocol_type:1; __u8 inner_protocol_type:1;
--- a/net/core/dev.c --- a/net/core/gro.c
+++ b/net/core/dev.c +++ b/net/core/gro.c
@@ -6065,6 +6065,9 @@ static enum gro_result dev_gro_receive(s @@ -6062,6 +6062,9 @@ static enum gro_result dev_gro_receive(s
int same_flow; int same_flow;
int grow; int grow;
@ -42,7 +42,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (netif_elide_gro(skb->dev)) if (netif_elide_gro(skb->dev))
goto normal; goto normal;
@@ -8079,6 +8082,48 @@ static void __netdev_adjacent_dev_unlink --- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -8076,6 +8079,48 @@ static void __netdev_adjacent_dev_unlink
&upper_dev->adj_list.lower); &upper_dev->adj_list.lower);
} }
@ -91,7 +93,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
static int __netdev_upper_dev_link(struct net_device *dev, static int __netdev_upper_dev_link(struct net_device *dev,
struct net_device *upper_dev, bool master, struct net_device *upper_dev, bool master,
void *upper_priv, void *upper_info, void *upper_priv, void *upper_info,
@@ -8130,6 +8175,7 @@ static int __netdev_upper_dev_link(struc @@ -8127,6 +8172,7 @@ static int __netdev_upper_dev_link(struc
if (ret) if (ret)
return ret; return ret;
@ -99,7 +101,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
&changeupper_info.info); &changeupper_info.info);
ret = notifier_to_errno(ret); ret = notifier_to_errno(ret);
@@ -8226,6 +8272,7 @@ static void __netdev_upper_dev_unlink(st @@ -8223,6 +8269,7 @@ static void __netdev_upper_dev_unlink(st
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev); __netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
@ -107,7 +109,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
&changeupper_info.info); &changeupper_info.info);
@@ -9045,6 +9092,7 @@ int dev_set_mac_address(struct net_devic @@ -9042,6 +9089,7 @@ int dev_set_mac_address(struct net_devic
if (err) if (err)
return err; return err;
dev->addr_assign_type = NET_ADDR_SET; dev->addr_assign_type = NET_ADDR_SET;

View file

@ -10,9 +10,9 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
--- a/net/netfilter/nf_flow_table_core.c --- a/net/netfilter/nf_flow_table_core.c
+++ b/net/netfilter/nf_flow_table_core.c +++ b/net/netfilter/nf_flow_table_core.c
@@ -613,13 +613,41 @@ void nf_flow_table_free(struct nf_flowta @@ -608,28 +608,52 @@ void nf_flow_table_free(struct nf_flowta
} .exit_batch = nf_flow_table_pernet_exit,
EXPORT_SYMBOL_GPL(nf_flow_table_free); };
+static int nf_flow_table_netdev_event(struct notifier_block *this, +static int nf_flow_table_netdev_event(struct notifier_block *this,
+ unsigned long event, void *ptr) + unsigned long event, void *ptr)
@ -33,24 +33,34 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
+ +
static int __init nf_flow_table_module_init(void) static int __init nf_flow_table_module_init(void)
{ {
- return nf_flow_table_offload_init(); int ret;
+ int ret;
+ ret = register_pernet_subsys(&nf_flow_table_net_ops);
+ ret = nf_flow_table_offload_init(); if (ret < 0)
+ if (ret) return ret;
+ return ret;
ret = nf_flow_table_offload_init();
if (ret)
goto out_offload;
+ +
+ ret = register_netdevice_notifier(&flow_offload_netdev_notifier); + ret = register_netdevice_notifier(&flow_offload_netdev_notifier);
+ if (ret) + if (ret)
+ nf_flow_table_offload_exit(); + goto out_offload_init;
+
+ return ret; return 0;
+out_offload_init:
+ nf_flow_table_offload_exit();
out_offload:
unregister_pernet_subsys(&nf_flow_table_net_ops);
return ret;
} }
static void __exit nf_flow_table_module_exit(void) static void __exit nf_flow_table_module_exit(void)
{ {
+ unregister_netdevice_notifier(&flow_offload_netdev_notifier); + unregister_netdevice_notifier(&flow_offload_netdev_notifier);
nf_flow_table_offload_exit(); nf_flow_table_offload_exit();
unregister_pernet_subsys(&nf_flow_table_net_ops);
} }
--- a/net/netfilter/nft_flow_offload.c --- a/net/netfilter/nft_flow_offload.c

View file

@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -2992,8 +2992,8 @@ static irqreturn_t mtk_handle_irq_rx(int @@ -2443,8 +2443,8 @@ static irqreturn_t mtk_handle_irq_rx(int
eth->rx_events++; eth->rx_events++;
if (likely(napi_schedule_prep(&eth->rx_napi))) { if (likely(napi_schedule_prep(&eth->rx_napi))) {
@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
} }
return IRQ_HANDLED; return IRQ_HANDLED;
@@ -3005,8 +3005,8 @@ static irqreturn_t mtk_handle_irq_tx(int @@ -2456,8 +2456,8 @@ static irqreturn_t mtk_handle_irq_tx(int
eth->tx_events++; eth->tx_events++;
if (likely(napi_schedule_prep(&eth->tx_napi))) { if (likely(napi_schedule_prep(&eth->tx_napi))) {
@ -30,12 +30,12 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
} }
return IRQ_HANDLED; return IRQ_HANDLED;
@@ -4673,6 +4673,8 @@ static int mtk_probe(struct platform_dev @@ -3623,6 +3623,8 @@ static int mtk_probe(struct platform_dev
* for NAPI to work * for NAPI to work
*/ */
init_dummy_netdev(&eth->dummy_dev); init_dummy_netdev(&eth->dummy_dev);
+ eth->dummy_dev.threaded = 1; + eth->dummy_dev.threaded = 1;
+ strcpy(eth->dummy_dev.name, "mtk_eth"); + strcpy(eth->dummy_dev.name, "mtk_eth");
netif_napi_add(&eth->dummy_dev, &eth->tx_napi, mtk_napi_tx, netif_napi_add(&eth->dummy_dev, &eth->tx_napi, mtk_napi_tx);
NAPI_POLL_WEIGHT); netif_napi_add(&eth->dummy_dev, &eth->rx_napi, mtk_napi_rx);
netif_napi_add(&eth->dummy_dev, &eth->rx_napi, mtk_napi_rx,

View file

@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
--- a/drivers/net/phy/phy_device.c --- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c
@@ -1748,6 +1748,9 @@ void phy_detach(struct phy_device *phyde @@ -1738,6 +1738,9 @@ void phy_detach(struct phy_device *phyde
struct module *ndev_owner = NULL; struct module *ndev_owner = NULL;
struct mii_bus *bus; struct mii_bus *bus;
@ -23,7 +23,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
sysfs_remove_link(&dev->dev.kobj, "phydev"); sysfs_remove_link(&dev->dev.kobj, "phydev");
--- a/include/linux/phy.h --- a/include/linux/phy.h
+++ b/include/linux/phy.h +++ b/include/linux/phy.h
@@ -823,6 +823,12 @@ struct phy_driver { @@ -789,6 +789,12 @@ struct phy_driver {
/** @handle_interrupt: Override default interrupt handling */ /** @handle_interrupt: Override default interrupt handling */
irqreturn_t (*handle_interrupt)(struct phy_device *phydev); irqreturn_t (*handle_interrupt)(struct phy_device *phydev);

View file

@ -15,10 +15,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/include/linux/if_bridge.h --- a/include/linux/if_bridge.h
+++ b/include/linux/if_bridge.h +++ b/include/linux/if_bridge.h
@@ -58,6 +58,7 @@ struct br_ip_list { @@ -58,6 +58,7 @@ struct br_ip_list {
#define BR_MRP_LOST_CONT BIT(18)
#define BR_MRP_LOST_IN_CONT BIT(19) #define BR_MRP_LOST_IN_CONT BIT(19)
#define BR_TX_FWD_OFFLOAD BIT(20) #define BR_TX_FWD_OFFLOAD BIT(20)
+#define BR_BPDU_FILTER BIT(21) #define BR_PORT_LOCKED BIT(21)
+#define BR_BPDU_FILTER BIT(22)
#define BR_DEFAULT_AGEING_TIME (300 * HZ) #define BR_DEFAULT_AGEING_TIME (300 * HZ)
@ -107,9 +107,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/include/uapi/linux/if_link.h --- a/include/uapi/linux/if_link.h
+++ b/include/uapi/linux/if_link.h +++ b/include/uapi/linux/if_link.h
@@ -536,6 +536,7 @@ enum { @@ -536,6 +536,7 @@ enum {
IFLA_BRPORT_MRP_IN_OPEN,
IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT, IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
IFLA_BRPORT_MCAST_EHT_HOSTS_CNT, IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
IFLA_BRPORT_LOCKED,
+ IFLA_BRPORT_BPDU_FILTER, + IFLA_BRPORT_BPDU_FILTER,
__IFLA_BRPORT_MAX __IFLA_BRPORT_MAX
}; };
@ -117,19 +117,19 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/bridge/br_netlink.c --- a/net/bridge/br_netlink.c
+++ b/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c
@@ -184,6 +184,7 @@ static inline size_t br_port_info_size(v @@ -184,6 +184,7 @@ static inline size_t br_port_info_size(v
+ nla_total_size(1) /* IFLA_BRPORT_VLAN_TUNNEL */
+ nla_total_size(1) /* IFLA_BRPORT_NEIGH_SUPPRESS */ + nla_total_size(1) /* IFLA_BRPORT_NEIGH_SUPPRESS */
+ nla_total_size(1) /* IFLA_BRPORT_ISOLATED */ + nla_total_size(1) /* IFLA_BRPORT_ISOLATED */
+ nla_total_size(1) /* IFLA_BRPORT_LOCKED */
+ + nla_total_size(1) /* IFLA_BRPORT_BPDU_FILTER */ + + nla_total_size(1) /* IFLA_BRPORT_BPDU_FILTER */
+ nla_total_size(sizeof(struct ifla_bridge_id)) /* IFLA_BRPORT_ROOT_ID */ + nla_total_size(sizeof(struct ifla_bridge_id)) /* IFLA_BRPORT_ROOT_ID */
+ nla_total_size(sizeof(struct ifla_bridge_id)) /* IFLA_BRPORT_BRIDGE_ID */ + nla_total_size(sizeof(struct ifla_bridge_id)) /* IFLA_BRPORT_BRIDGE_ID */
+ nla_total_size(sizeof(u16)) /* IFLA_BRPORT_DESIGNATED_PORT */ + nla_total_size(sizeof(u16)) /* IFLA_BRPORT_DESIGNATED_PORT */
@@ -269,7 +270,8 @@ static int br_port_fill_attrs(struct sk_ @@ -269,7 +270,8 @@ static int br_port_fill_attrs(struct sk_
BR_MRP_LOST_CONT)) ||
nla_put_u8(skb, IFLA_BRPORT_MRP_IN_OPEN, nla_put_u8(skb, IFLA_BRPORT_MRP_IN_OPEN,
!!(p->flags & BR_MRP_LOST_IN_CONT)) || !!(p->flags & BR_MRP_LOST_IN_CONT)) ||
- nla_put_u8(skb, IFLA_BRPORT_ISOLATED, !!(p->flags & BR_ISOLATED))) nla_put_u8(skb, IFLA_BRPORT_ISOLATED, !!(p->flags & BR_ISOLATED)) ||
+ nla_put_u8(skb, IFLA_BRPORT_ISOLATED, !!(p->flags & BR_ISOLATED)) || - nla_put_u8(skb, IFLA_BRPORT_LOCKED, !!(p->flags & BR_PORT_LOCKED)))
+ nla_put_u8(skb, IFLA_BRPORT_LOCKED, !!(p->flags & BR_PORT_LOCKED)) ||
+ nla_put_u8(skb, IFLA_BRPORT_BPDU_FILTER, !!(p->flags & BR_BPDU_FILTER))) + nla_put_u8(skb, IFLA_BRPORT_BPDU_FILTER, !!(p->flags & BR_BPDU_FILTER)))
return -EMSGSIZE; return -EMSGSIZE;
@ -143,9 +143,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/* Change the state of the port and notify spanning tree */ /* Change the state of the port and notify spanning tree */
@@ -893,6 +896,7 @@ static int br_setport(struct net_bridge_ @@ -893,6 +896,7 @@ static int br_setport(struct net_bridge_
br_set_port_flag(p, tb, IFLA_BRPORT_VLAN_TUNNEL, BR_VLAN_TUNNEL);
br_set_port_flag(p, tb, IFLA_BRPORT_NEIGH_SUPPRESS, BR_NEIGH_SUPPRESS); br_set_port_flag(p, tb, IFLA_BRPORT_NEIGH_SUPPRESS, BR_NEIGH_SUPPRESS);
br_set_port_flag(p, tb, IFLA_BRPORT_ISOLATED, BR_ISOLATED); br_set_port_flag(p, tb, IFLA_BRPORT_ISOLATED, BR_ISOLATED);
br_set_port_flag(p, tb, IFLA_BRPORT_LOCKED, BR_PORT_LOCKED);
+ br_set_port_flag(p, tb, IFLA_BRPORT_BPDU_FILTER, BR_BPDU_FILTER); + br_set_port_flag(p, tb, IFLA_BRPORT_BPDU_FILTER, BR_BPDU_FILTER);
changed_mask = old_flags ^ p->flags; changed_mask = old_flags ^ p->flags;
@ -153,7 +153,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/core/rtnetlink.c --- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c
@@ -55,7 +55,7 @@ @@ -55,7 +55,7 @@
#include <net/net_namespace.h> #include "dev.h"
#define RTNL_MAX_TYPE 50 #define RTNL_MAX_TYPE 50
-#define RTNL_SLAVE_MAX_TYPE 40 -#define RTNL_SLAVE_MAX_TYPE 40

View file

@ -167,9 +167,9 @@ v2: fix wrong variable name in return value check spotted by Denis Kirjanov
{ {
ppe_set(ppe, MTK_PPE_CACHE_CTL, MTK_PPE_CACHE_CTL_CLEAR); ppe_set(ppe, MTK_PPE_CACHE_CTL, MTK_PPE_CACHE_CTL_CLEAR);
@@ -464,6 +506,13 @@ __mtk_foe_entry_clear(struct mtk_ppe *pp @@ -464,6 +506,13 @@ __mtk_foe_entry_clear(struct mtk_ppe *pp
hwe->ib1 &= ~MTK_FOE_IB1_STATE;
hwe->ib1 |= FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_INVALID); hwe->ib1 |= FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_INVALID);
dma_wmb(); dma_wmb();
mtk_ppe_cache_clear(ppe);
+ if (ppe->accounting) { + if (ppe->accounting) {
+ struct mtk_foe_accounting *acct; + struct mtk_foe_accounting *acct;
+ +
@ -335,10 +335,10 @@ v2: fix wrong variable name in return value check spotted by Denis Kirjanov
-struct mtk_ppe *mtk_ppe_init(struct mtk_eth *eth, void __iomem *base, -struct mtk_ppe *mtk_ppe_init(struct mtk_eth *eth, void __iomem *base,
- int version, int index); - int version, int index);
+struct mtk_ppe *mtk_ppe_init(struct mtk_eth *eth, void __iomem *base, int index); +struct mtk_ppe *mtk_ppe_init(struct mtk_eth *eth, void __iomem *base, int index);
void mtk_ppe_deinit(struct mtk_eth *eth);
void mtk_ppe_start(struct mtk_ppe *ppe); void mtk_ppe_start(struct mtk_ppe *ppe);
int mtk_ppe_stop(struct mtk_ppe *ppe); int mtk_ppe_stop(struct mtk_ppe *ppe);
int mtk_ppe_prepare_reset(struct mtk_ppe *ppe); @@ -354,5 +373,7 @@ int mtk_foe_entry_commit(struct mtk_ppe
@@ -358,5 +376,7 @@ int mtk_foe_entry_commit(struct mtk_ppe
void mtk_foe_entry_clear(struct mtk_ppe *ppe, struct mtk_flow_entry *entry); void mtk_foe_entry_clear(struct mtk_ppe *ppe, struct mtk_flow_entry *entry);
int mtk_foe_entry_idle_time(struct mtk_ppe *ppe, struct mtk_flow_entry *entry); int mtk_foe_entry_idle_time(struct mtk_ppe *ppe, struct mtk_flow_entry *entry);
int mtk_ppe_debugfs_init(struct mtk_ppe *ppe, int index); int mtk_ppe_debugfs_init(struct mtk_ppe *ppe, int index);

View file

@ -78,9 +78,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
static void mtk_ppe_cache_clear(struct mtk_ppe *ppe) static void mtk_ppe_cache_clear(struct mtk_ppe *ppe)
@@ -508,13 +523,6 @@ __mtk_foe_entry_clear(struct mtk_ppe *pp @@ -508,13 +523,6 @@ __mtk_foe_entry_clear(struct mtk_ppe *pp
hwe->ib1 &= ~MTK_FOE_IB1_STATE;
hwe->ib1 |= FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_INVALID); hwe->ib1 |= FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_INVALID);
dma_wmb(); dma_wmb();
mtk_ppe_cache_clear(ppe);
- if (ppe->accounting) { - if (ppe->accounting) {
- struct mtk_foe_accounting *acct; - struct mtk_foe_accounting *acct;
- -

View file

@ -31,9 +31,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -4574,7 +4574,7 @@ static int rps_ipi_queued(struct softnet @@ -4574,7 +4574,7 @@ static int rps_ipi_queued(struct softnet
#ifdef CONFIG_RPS
struct softnet_data *mysd = this_cpu_ptr(&softnet_data); struct softnet_data *mysd = this_cpu_ptr(&softnet_data);
#ifdef CONFIG_RPS
- if (sd != mysd) { - if (sd != mysd) {
+ if (sd != mysd && !test_bit(NAPI_STATE_THREADED, &sd->backlog.state)) { + if (sd != mysd && !test_bit(NAPI_STATE_THREADED, &sd->backlog.state)) {
sd->rps_ipi_next = mysd->rps_ipi_list; sd->rps_ipi_next = mysd->rps_ipi_list;
@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
struct sk_buff *skb, *tmp; struct sk_buff *skb, *tmp;
struct softnet_data *sd; struct softnet_data *sd;
@@ -5770,9 +5772,18 @@ static void flush_backlog(struct work_st @@ -5770,8 +5772,17 @@ static void flush_backlog(struct work_st
input_queue_head_incr(sd); input_queue_head_incr(sd);
} }
} }
@ -58,8 +58,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ !skb_queue_empty_lockless(&sd->process_queue); + !skb_queue_empty_lockless(&sd->process_queue);
+ if (flush_processq) + if (flush_processq)
+ process_queue_empty = sd->process_queue_empty; + process_queue_empty = sd->process_queue_empty;
rps_unlock(sd); rps_unlock_irq_enable(sd);
local_irq_enable();
+ if (threaded) + if (threaded)
+ goto out; + goto out;
@ -67,7 +66,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
skb_queue_walk_safe(&sd->process_queue, skb, tmp) { skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
if (skb->dev->reg_state == NETREG_UNREGISTERING) { if (skb->dev->reg_state == NETREG_UNREGISTERING) {
__skb_unlink(skb, &sd->process_queue); __skb_unlink(skb, &sd->process_queue);
@@ -5780,7 +5791,18 @@ static void flush_backlog(struct work_st @@ -5780,7 +5791,16 @@ static void flush_backlog(struct work_st
input_queue_head_incr(sd); input_queue_head_incr(sd);
} }
} }
@ -77,19 +76,17 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ +
+ while (flush_processq) { + while (flush_processq) {
+ msleep(1); + msleep(1);
+ local_irq_disable(); + rps_lock_irq_disable(sd);
+ rps_lock(sd);
+ flush_processq = process_queue_empty == sd->process_queue_empty; + flush_processq = process_queue_empty == sd->process_queue_empty;
+ rps_unlock(sd); + rps_unlock_irq_enable(sd);
+ local_irq_enable();
+ } + }
} }
static bool flush_required(int cpu) static bool flush_required(int cpu)
@@ -6463,6 +6485,7 @@ static int process_backlog(struct napi_s @@ -6463,6 +6485,7 @@ static int process_backlog(struct napi_s
}
local_irq_disable();
rps_lock(sd); rps_lock_irq_disable(sd);
+ sd->process_queue_empty++; + sd->process_queue_empty++;
if (skb_queue_empty(&sd->input_pkt_queue)) { if (skb_queue_empty(&sd->input_pkt_queue)) {
/* /*
@ -104,7 +101,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
again = false; again = false;
} else { } else {
skb_queue_splice_tail_init(&sd->input_pkt_queue, skb_queue_splice_tail_init(&sd->input_pkt_queue,
@@ -6889,6 +6913,57 @@ int dev_set_threaded(struct net_device * @@ -6889,6 +6913,55 @@ int dev_set_threaded(struct net_device *
} }
EXPORT_SYMBOL(dev_set_threaded); EXPORT_SYMBOL(dev_set_threaded);
@ -146,20 +143,18 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ struct napi_struct *n = &sd->backlog; + struct napi_struct *n = &sd->backlog;
+ unsigned long flags; + unsigned long flags;
+ +
+ local_irq_save(flags); + rps_lock_irqsave(sd, &flags);
+ rps_lock(sd);
+ if (threaded) + if (threaded)
+ n->state |= NAPIF_STATE_THREADED; + n->state |= NAPIF_STATE_THREADED;
+ else + else
+ n->state &= ~NAPIF_STATE_THREADED; + n->state &= ~NAPIF_STATE_THREADED;
+ rps_unlock(sd); + rps_unlock_irq_restore(sd, &flags);
+ local_irq_restore(flags);
+ } + }
+ +
+ return err; + return err;
+} +}
+ +
void netif_napi_add(struct net_device *dev, struct napi_struct *napi, void netif_napi_add_weight(struct net_device *dev, struct napi_struct *napi,
int (*poll)(struct napi_struct *, int), int weight) int (*poll)(struct napi_struct *, int), int weight)
{ {
@@ -11367,6 +11442,9 @@ static int dev_cpu_dead(unsigned int old @@ -11367,6 +11442,9 @@ static int dev_cpu_dead(unsigned int old
@ -187,8 +182,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
static int min_rcvbuf = SOCK_MIN_RCVBUF; static int min_rcvbuf = SOCK_MIN_RCVBUF;
static int max_skb_frags = MAX_SKB_FRAGS; static int max_skb_frags = MAX_SKB_FRAGS;
+static int backlog_threaded; +static int backlog_threaded;
static long long_one __maybe_unused = 1;
static long long_max __maybe_unused = LONG_MAX; static int net_msg_warn; /* Unused, but still a sysctl */
@@ -114,6 +115,23 @@ static int rps_sock_flow_sysctl(struct c @@ -114,6 +115,23 @@ static int rps_sock_flow_sysctl(struct c
} }

View file

@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#endif /* __LINUX_USB_PCI_QUIRKS_H */ #endif /* __LINUX_USB_PCI_QUIRKS_H */
--- a/include/linux/usb/hcd.h --- a/include/linux/usb/hcd.h
+++ b/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h
@@ -498,7 +498,14 @@ extern int usb_hcd_pci_probe(struct pci_ @@ -497,7 +497,14 @@ extern int usb_hcd_pci_probe(struct pci_
extern void usb_hcd_pci_remove(struct pci_dev *dev); extern void usb_hcd_pci_remove(struct pci_dev *dev);
extern void usb_hcd_pci_shutdown(struct pci_dev *dev); extern void usb_hcd_pci_shutdown(struct pci_dev *dev);

View file

@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
/** /**
* ata_build_rw_tf - Build ATA taskfile for given read/write request * ata_build_rw_tf - Build ATA taskfile for given read/write request
* @tf: Target ATA taskfile * @tf: Target ATA taskfile
@@ -4580,6 +4593,9 @@ struct ata_queued_cmd *ata_qc_new_init(s @@ -4576,6 +4589,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
if (tag < 0) if (tag < 0)
return NULL; return NULL;
} }
@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
qc = __ata_qc_from_tag(ap, tag); qc = __ata_qc_from_tag(ap, tag);
qc->tag = qc->hw_tag = tag; qc->tag = qc->hw_tag = tag;
@@ -5358,6 +5374,9 @@ struct ata_port *ata_port_alloc(struct a @@ -5354,6 +5370,9 @@ struct ata_port *ata_port_alloc(struct a
ap->stats.unhandled_irq = 1; ap->stats.unhandled_irq = 1;
ap->stats.idle_irq = 1; ap->stats.idle_irq = 1;
#endif #endif
@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
ata_sff_port_init(ap); ata_sff_port_init(ap);
return ap; return ap;
@@ -5393,6 +5412,12 @@ static void ata_host_release(struct kref @@ -5389,6 +5408,12 @@ static void ata_host_release(struct kref
kfree(ap->pmp_link); kfree(ap->pmp_link);
kfree(ap->slave_link); kfree(ap->slave_link);
@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
kfree(ap); kfree(ap);
host->ports[i] = NULL; host->ports[i] = NULL;
} }
@@ -5799,7 +5824,23 @@ int ata_host_register(struct ata_host *h @@ -5795,7 +5820,23 @@ int ata_host_register(struct ata_host *h
host->ports[i]->print_id = atomic_inc_return(&ata_print_id); host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
host->ports[i]->local_port_no = i + 1; host->ports[i]->local_port_no = i + 1;
} }

View file

@ -33,7 +33,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
--- a/drivers/pci/controller/pci-aardvark.c --- a/drivers/pci/controller/pci-aardvark.c
+++ b/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c
@@ -275,7 +275,6 @@ struct advk_pcie { @@ -274,7 +274,6 @@ struct advk_pcie {
u8 wins_count; u8 wins_count;
struct irq_domain *rp_irq_domain; struct irq_domain *rp_irq_domain;
struct irq_domain *irq_domain; struct irq_domain *irq_domain;
@ -41,7 +41,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
raw_spinlock_t irq_lock; raw_spinlock_t irq_lock;
struct irq_domain *msi_domain; struct irq_domain *msi_domain;
struct irq_domain *msi_inner_domain; struct irq_domain *msi_inner_domain;
@@ -1345,14 +1344,19 @@ static void advk_pcie_irq_unmask(struct @@ -1330,14 +1329,19 @@ static void advk_pcie_irq_unmask(struct
raw_spin_unlock_irqrestore(&pcie->irq_lock, flags); raw_spin_unlock_irqrestore(&pcie->irq_lock, flags);
} }
@ -63,7 +63,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
irq_set_chip_data(virq, pcie); irq_set_chip_data(virq, pcie);
return 0; return 0;
@@ -1411,7 +1415,6 @@ static int advk_pcie_init_irq_domain(str @@ -1396,7 +1400,6 @@ static int advk_pcie_init_irq_domain(str
struct device *dev = &pcie->pdev->dev; struct device *dev = &pcie->pdev->dev;
struct device_node *node = dev->of_node; struct device_node *node = dev->of_node;
struct device_node *pcie_intc_node; struct device_node *pcie_intc_node;
@ -71,7 +71,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
int ret = 0; int ret = 0;
raw_spin_lock_init(&pcie->irq_lock); raw_spin_lock_init(&pcie->irq_lock);
@@ -1422,28 +1425,14 @@ static int advk_pcie_init_irq_domain(str @@ -1407,28 +1410,14 @@ static int advk_pcie_init_irq_domain(str
return -ENODEV; return -ENODEV;
} }

View file

@ -31,7 +31,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
help help
--- a/init/main.c --- a/init/main.c
+++ b/init/main.c +++ b/init/main.c
@@ -616,6 +616,29 @@ static inline void setup_nr_cpu_ids(void @@ -615,6 +615,29 @@ static inline void setup_nr_cpu_ids(void
static inline void smp_prepare_cpus(unsigned int maxcpus) { } static inline void smp_prepare_cpus(unsigned int maxcpus) { }
#endif #endif
@ -61,7 +61,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
/* /*
* We need to store the untouched command line for future reference. * We need to store the untouched command line for future reference.
* We also need to store the touched command line since the parameter * We also need to store the touched command line since the parameter
@@ -956,6 +979,7 @@ asmlinkage __visible void __init __no_sa @@ -955,6 +978,7 @@ asmlinkage __visible void __init __no_sa
pr_notice("%s", linux_banner); pr_notice("%s", linux_banner);
early_security_init(); early_security_init();
setup_arch(&command_line); setup_arch(&command_line);