generic: 6.6: manually refresh pending patches

Refresh pending patches for kernel 6.6.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Signed-off-by: Weijie Gao <hackpascal@gmail.com>
This commit is contained in:
Weijie Gao 2024-01-04 02:02:00 +08:00 committed by Robert Marko
parent a76397cd47
commit 5b6bca812d
43 changed files with 198 additions and 177 deletions

View File

@ -69,9 +69,9 @@ previously calculated offset is zero for the named platform it is able to boot
Signed-off-by: Tobias Wolf <dev-NTEO@vplace.de> Signed-off-by: Tobias Wolf <dev-NTEO@vplace.de>
--- ---
--- a/mm/page_alloc.c --- a/mm/mm_init.c
+++ b/mm/page_alloc.c +++ b/mm/mm_init.c
@@ -7897,7 +7897,7 @@ static void __init alloc_node_mem_map(st @@ -1673,7 +1673,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

@ -8,18 +8,18 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/fs/jffs2/dir.c --- a/fs/jffs2/dir.c
+++ b/fs/jffs2/dir.c +++ b/fs/jffs2/dir.c
@@ -614,8 +614,8 @@ static int jffs2_rmdir (struct inode *di @@ -617,8 +617,8 @@ static int jffs2_rmdir (struct inode *di
return ret; return ret;
} }
-static int jffs2_mknod (struct user_namespace *mnt_userns, struct inode *dir_i, -static int jffs2_mknod (struct mnt_idmap *idmap, struct inode *dir_i,
- struct dentry *dentry, umode_t mode, dev_t rdev) - struct dentry *dentry, umode_t mode, dev_t rdev)
+static int __jffs2_mknod (struct user_namespace *mnt_userns, struct inode *dir_i, +static int __jffs2_mknod (struct mnt_idmap *idmap, struct inode *dir_i,
+ struct dentry *dentry, umode_t mode, dev_t rdev, bool whiteout) + struct dentry *dentry, umode_t mode, dev_t rdev, bool whiteout)
{ {
struct jffs2_inode_info *f, *dir_f; struct jffs2_inode_info *f, *dir_f;
struct jffs2_sb_info *c; struct jffs2_sb_info *c;
@@ -754,7 +754,11 @@ static int jffs2_mknod (struct user_name @@ -758,7 +758,11 @@ static int jffs2_mknod (struct mnt_idmap
mutex_unlock(&dir_f->sem); mutex_unlock(&dir_f->sem);
jffs2_complete_reservation(c); jffs2_complete_reservation(c);
@ -32,27 +32,27 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
return 0; return 0;
fail: fail:
@@ -762,6 +766,19 @@ static int jffs2_mknod (struct user_name @@ -766,6 +770,19 @@ static int jffs2_mknod (struct mnt_idmap
return ret; return ret;
} }
+static int jffs2_mknod (struct user_namespace *mnt_userns, struct inode *dir_i, +static int jffs2_mknod (struct mnt_idmap *idmap, struct inode *dir_i,
+ struct dentry *dentry, umode_t mode, dev_t rdev) + struct dentry *dentry, umode_t mode, dev_t rdev)
+{ +{
+ return __jffs2_mknod(mnt_userns, dir_i, dentry, mode, rdev, false); + return __jffs2_mknod(idmap, dir_i, dentry, mode, rdev, false);
+} +}
+ +
+static int jffs2_whiteout (struct user_namespace *mnt_userns, struct inode *old_dir, +static int jffs2_whiteout (struct mnt_idmap *idmap, struct inode *old_dir,
+ struct dentry *old_dentry) + struct dentry *old_dentry)
+{ +{
+ return __jffs2_mknod(mnt_userns, old_dir, old_dentry, S_IFCHR | WHITEOUT_MODE, + return __jffs2_mknod(idmap, old_dir, old_dentry, S_IFCHR | WHITEOUT_MODE,
+ WHITEOUT_DEV, true); + WHITEOUT_DEV, true);
+} +}
+ +
static int jffs2_rename (struct user_namespace *mnt_userns, static int jffs2_rename (struct mnt_idmap *idmap,
struct inode *old_dir_i, struct dentry *old_dentry, struct inode *old_dir_i, struct dentry *old_dentry,
struct inode *new_dir_i, struct dentry *new_dentry, struct inode *new_dir_i, struct dentry *new_dentry,
@@ -773,7 +790,7 @@ static int jffs2_rename (struct user_nam @@ -777,7 +794,7 @@ static int jffs2_rename (struct mnt_idma
uint8_t type; uint8_t type;
uint32_t now; uint32_t now;
@ -61,7 +61,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
return -EINVAL; return -EINVAL;
/* The VFS will check for us and prevent trying to rename a /* The VFS will check for us and prevent trying to rename a
@@ -839,9 +856,14 @@ static int jffs2_rename (struct user_nam @@ -843,9 +860,14 @@ static int jffs2_rename (struct mnt_idma
if (d_is_dir(old_dentry) && !victim_f) if (d_is_dir(old_dentry) && !victim_f)
inc_nlink(new_dir_i); inc_nlink(new_dir_i);
@ -70,7 +70,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
- old_dentry->d_name.name, old_dentry->d_name.len, NULL, now); - old_dentry->d_name.name, old_dentry->d_name.len, NULL, now);
+ if (flags & RENAME_WHITEOUT) + if (flags & RENAME_WHITEOUT)
+ /* Replace with whiteout */ + /* Replace with whiteout */
+ ret = jffs2_whiteout(mnt_userns, old_dir_i, old_dentry); + ret = jffs2_whiteout(idmap, old_dir_i, old_dentry);
+ else + else
+ /* Unlink the original */ + /* Unlink the original */
+ ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i), + ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i),

View File

@ -6,7 +6,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/fs/jffs2/dir.c --- a/fs/jffs2/dir.c
+++ b/fs/jffs2/dir.c +++ b/fs/jffs2/dir.c
@@ -787,18 +787,31 @@ static int jffs2_rename (struct user_nam @@ -791,18 +791,31 @@ static int jffs2_rename (struct mnt_idma
int ret; int ret;
struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dir_i->i_sb); struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dir_i->i_sb);
struct jffs2_inode_info *victim_f = NULL; struct jffs2_inode_info *victim_f = NULL;
@ -40,7 +40,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
victim_f = JFFS2_INODE_INFO(d_inode(new_dentry)); victim_f = JFFS2_INODE_INFO(d_inode(new_dentry));
if (d_is_dir(new_dentry)) { if (d_is_dir(new_dentry)) {
struct jffs2_full_dirent *fd; struct jffs2_full_dirent *fd;
@@ -833,7 +846,7 @@ static int jffs2_rename (struct user_nam @@ -837,7 +850,7 @@ static int jffs2_rename (struct mnt_idma
if (ret) if (ret)
return ret; return ret;
@ -49,10 +49,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/* There was a victim. Kill it off nicely */ /* There was a victim. Kill it off nicely */
if (d_is_dir(new_dentry)) if (d_is_dir(new_dentry))
clear_nlink(d_inode(new_dentry)); clear_nlink(d_inode(new_dentry));
@@ -859,6 +872,12 @@ static int jffs2_rename (struct user_nam @@ -863,6 +876,12 @@ static int jffs2_rename (struct mnt_idma
if (flags & RENAME_WHITEOUT) if (flags & RENAME_WHITEOUT)
/* Replace with whiteout */ /* Replace with whiteout */
ret = jffs2_whiteout(mnt_userns, old_dir_i, old_dentry); ret = jffs2_whiteout(idmap, old_dir_i, old_dentry);
+ else if (flags & RENAME_EXCHANGE) + else if (flags & RENAME_EXCHANGE)
+ /* Replace the original */ + /* Replace the original */
+ ret = jffs2_do_link(c, JFFS2_INODE_INFO(old_dir_i), + ret = jffs2_do_link(c, JFFS2_INODE_INFO(old_dir_i),
@ -62,7 +62,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
else else
/* Unlink the original */ /* Unlink the original */
ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i), ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i),
@@ -890,7 +909,7 @@ static int jffs2_rename (struct user_nam @@ -895,7 +914,7 @@ static int jffs2_rename (struct mnt_idma
return ret; return ret;
} }
@ -70,4 +70,4 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ if (d_is_dir(old_dentry) && !(flags & RENAME_EXCHANGE)) + if (d_is_dir(old_dentry) && !(flags & RENAME_EXCHANGE))
drop_nlink(old_dir_i); drop_nlink(old_dir_i);
new_dir_i->i_mtime = new_dir_i->i_ctime = old_dir_i->i_mtime = old_dir_i->i_ctime = ITIME(now); old_dir_i->i_mtime = inode_set_ctime_to_ts(old_dir_i, ITIME(now));

View File

@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
.open = generic_file_open, .open = generic_file_open,
.read_iter = generic_file_read_iter, .read_iter = generic_file_read_iter,
.write_iter = generic_file_write_iter, .write_iter = generic_file_write_iter,
+ .splice_read = generic_file_splice_read, + .splice_read = filemap_splice_read,
+ .splice_write = iter_file_splice_write, + .splice_write = iter_file_splice_write,
.unlocked_ioctl=jffs2_ioctl, .unlocked_ioctl=jffs2_ioctl,
.mmap = generic_file_readonly_mmap, .mmap = generic_file_readonly_mmap,

View File

@ -17,8 +17,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+++ b/net/bridge/br_arp_nd_proxy.c +++ b/net/bridge/br_arp_nd_proxy.c
@@ -204,7 +204,10 @@ void br_do_proxy_suppress_arp(struct sk_ @@ -204,7 +204,10 @@ void br_do_proxy_suppress_arp(struct sk_
if ((p && (p->flags & BR_PROXYARP)) || if ((p && (p->flags & BR_PROXYARP)) ||
(f->dst && (f->dst->flags & (BR_PROXYARP_WIFI | (f->dst && (f->dst->flags & BR_PROXYARP_WIFI)) ||
BR_NEIGH_SUPPRESS)))) { br_is_neigh_suppress_enabled(f->dst, vid)) {
- if (!vid) - if (!vid)
+ replied = true; + replied = true;
+ if (!memcmp(n->ha, sha, dev->addr_len)) + if (!memcmp(n->ha, sha, dev->addr_len))

View File

@ -26,8 +26,8 @@ Signed-off-by: Daniel González Cabanelas <dgcbueu@gmail.com>
dev_dbg(&client->dev, "%s\n", __func__); dev_dbg(&client->dev, "%s\n", __func__);
@@ -868,6 +869,12 @@ static int rs5c372_probe(struct i2c_clie @@ -868,6 +869,12 @@ static int rs5c372_probe(struct i2c_clie
else
rs5c372->type = id->driver_data; rs5c372->type = id->driver_data;
}
+#ifdef CONFIG_OF +#ifdef CONFIG_OF
+ if(of_property_read_bool(client->dev.of_node, + if(of_property_read_bool(client->dev.of_node,

View File

@ -66,8 +66,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
static int base_relative; static int base_relative;
static int lto_clang; static int lto_clang;
@@ -608,6 +609,9 @@ static void write_src(void) @@ -608,6 +609,9 @@ static void write_src(void)
(unsigned char)(table[i]->seq >> 0));
printf("\n"); free(markers);
+ if (uncompressed) + if (uncompressed)
+ return; + return;

View File

@ -32,8 +32,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ mod = __module_address(value); + mod = __module_address(value);
+ if (mod) + if (mod)
+ snprintf(sym + len, sizeof(sym) - len, " [%s@%p+0x%x]", + snprintf(sym + len, sizeof(sym) - len, " [%s@%p+0x%x]",
+ mod->name, mod->core_layout.base, + mod->name, mod->mem[MOD_TEXT].base,
+ mod->core_layout.size); + mod->mem[MOD_TEXT].size);
#endif #endif
+ return string(buf, end, sym, spec); + return string(buf, end, sym, spec);
} }

View File

@ -17,6 +17,6 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
# #
-cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -cflags-y += -G 0 -mno-abicalls -fno-pic -pipe
+cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely +cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
cflags-y += -msoft-float cflags-y += -msoft-float -Wa,-msoft-float
LDFLAGS_vmlinux += -G 0 -static -n -nostdlib LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
KBUILD_AFLAGS_MODULE += -mlong-calls KBUILD_AFLAGS_MODULE += -mlong-calls

View File

@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+++ b/arch/mips/Makefile +++ b/arch/mips/Makefile
@@ -97,8 +97,18 @@ all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlin @@ -97,8 +97,18 @@ all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlin
cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
cflags-y += -msoft-float cflags-y += -msoft-float -Wa,-msoft-float
LDFLAGS_vmlinux += -G 0 -static -n -nostdlib LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
+ifdef CONFIG_64BIT +ifdef CONFIG_64BIT
KBUILD_AFLAGS_MODULE += -mlong-calls KBUILD_AFLAGS_MODULE += -mlong-calls

View File

@ -74,7 +74,7 @@ Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
+ * + *
+ * Note: "OWRTDTB:" won't be overwritten with .dtb, .dtb will follow it. + * Note: "OWRTDTB:" won't be overwritten with .dtb, .dtb will follow it.
+ */ + */
+ .owrt : { + .owrt : {
+ *(.owrt) + *(.owrt)
+ . = ALIGN(PAGE_SIZE); + . = ALIGN(PAGE_SIZE);
+ } + }

View File

@ -43,6 +43,6 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+ of_device_is_compatible(node, "brcm,env")) + of_device_is_compatible(node, "brcm,env"))
+ return 0; + return 0;
+ +
config.id = -1; config.id = NVMEM_DEVID_NONE;
config.dev = &mtd->dev; config.dev = &mtd->dev;
config.name = dev_name(&mtd->dev); config.name = dev_name(&mtd->dev);

View File

@ -25,7 +25,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+#include <linux/namei.h> +#include <linux/namei.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/mtd/ubi.h> #include <linux/mtd/ubi.h>
#include <linux/workqueue.h> #include <linux/blkdev.h>
@@ -67,10 +68,10 @@ struct ubiblock_pdu { @@ -67,10 +68,10 @@ struct ubiblock_pdu {
}; };

View File

@ -21,10 +21,10 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+ +
#include "check.h" #include "check.h"
static int (*check_part[])(struct parsed_partitions *) = { static int (*const check_part[])(struct parsed_partitions *) = {
@@ -298,6 +300,43 @@ static ssize_t whole_disk_show(struct de @@ -298,6 +300,43 @@ static ssize_t whole_disk_show(struct de
} }
static DEVICE_ATTR(whole_disk, 0444, whole_disk_show, NULL); static const DEVICE_ATTR(whole_disk, 0444, whole_disk_show, NULL);
+static struct fwnode_handle *find_partition_fwnode(struct block_device *bdev) +static struct fwnode_handle *find_partition_fwnode(struct block_device *bdev)
+{ +{

View File

@ -33,7 +33,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+ +
source "block/partitions/Kconfig" source "block/partitions/Kconfig"
config BLOCK_COMPAT config BLK_MQ_PCI
--- a/block/Makefile --- a/block/Makefile
+++ b/block/Makefile +++ b/block/Makefile
@@ -35,6 +35,7 @@ obj-$(CONFIG_BLK_DEV_ZONED) += blk-zoned @@ -35,6 +35,7 @@ obj-$(CONFIG_BLK_DEV_ZONED) += blk-zoned
@ -97,7 +97,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+ if (!bnv->bdev->bd_disk->fops->open) + if (!bnv->bdev->bd_disk->fops->open)
+ return -EIO; + return -EIO;
+ +
+ ret = bnv->bdev->bd_disk->fops->open(bnv->bdev, FMODE_READ); + ret = bnv->bdev->bd_disk->fops->open(bnv->bdev->bd_disk, BLK_OPEN_READ);
+ if (ret) + if (ret)
+ return ret; + return ret;
+ +
@ -119,12 +119,12 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+ } + }
+ +
+err_release_bdev: +err_release_bdev:
+ bnv->bdev->bd_disk->fops->release(bnv->bdev->bd_disk, FMODE_READ); + bnv->bdev->bd_disk->fops->release(bnv->bdev->bd_disk);
+ +
+ return ret; + return ret;
+} +}
+ +
+static int blk_nvmem_register(struct device *dev, struct class_interface *iface) +static int blk_nvmem_register(struct device *dev)
+{ +{
+ struct device_node *np = dev_of_node(dev); + struct device_node *np = dev_of_node(dev);
+ struct block_device *bdev = dev_to_bdev(dev); + struct block_device *bdev = dev_to_bdev(dev);
@ -192,7 +192,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+ return 0; + return 0;
+} +}
+ +
+static void blk_nvmem_unregister(struct device *dev, struct class_interface *iface) +static void blk_nvmem_unregister(struct device *dev)
+{ +{
+ struct block_device *bdev = dev_to_bdev(dev); + struct block_device *bdev = dev_to_bdev(dev);
+ struct blk_nvmem *bnv_c, *bnv = NULL; + struct blk_nvmem *bnv_c, *bnv = NULL;

View File

@ -13,8 +13,8 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
--- a/drivers/mmc/core/bus.c --- a/drivers/mmc/core/bus.c
+++ b/drivers/mmc/core/bus.c +++ b/drivers/mmc/core/bus.c
@@ -363,6 +363,8 @@ int mmc_add_card(struct mmc_card *card) @@ -363,6 +363,8 @@ int mmc_add_card(struct mmc_card *card)
mmc_add_card_debugfs(card); mmc_add_card_debugfs(card);
#endif
card->dev.of_node = mmc_of_find_child_device(card->host, 0); card->dev.of_node = mmc_of_find_child_device(card->host, 0);
+ if (card->dev.of_node && !card->dev.fwnode) + if (card->dev.of_node && !card->dev.fwnode)
+ card->dev.fwnode = &card->dev.of_node->fwnode; + card->dev.fwnode = &card->dev.of_node->fwnode;

View File

@ -36,4 +36,4 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+ +
string_get_size((u64)size, 512, STRING_UNITS_2, string_get_size((u64)size, 512, STRING_UNITS_2,
cap_str, sizeof(cap_str)); cap_str, sizeof(cap_str));
pr_info("%s: %s %s %s %s\n", pr_info("%s: %s %s %s%s\n",

View File

@ -8,11 +8,11 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- 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
@@ -106,6 +106,7 @@ static void macronix_nor_default_init(st @@ -115,6 +115,7 @@ static void macronix_nor_default_init(st
{ {
nor->params->quad_enable = spi_nor_sr1_bit6_quad_enable; if (!nor->params->set_4byte_addr_mode)
nor->params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode; nor->params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode_en4b_ex4b;
+ nor->flags |= SNOR_F_HAS_LOCK; + nor->flags |= SNOR_F_HAS_LOCK;
}
static const struct spi_nor_fixups macronix_nor_fixups = { return 0;
}

View File

@ -68,7 +68,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ &spi_nor_xtx, + &spi_nor_xtx,
}; };
static const struct flash_info *spi_nor_match_id(struct spi_nor *nor, static const struct flash_info spi_nor_generic_flash = {
--- a/drivers/mtd/spi-nor/core.h --- a/drivers/mtd/spi-nor/core.h
+++ b/drivers/mtd/spi-nor/core.h +++ b/drivers/mtd/spi-nor/core.h
@@ -633,6 +633,7 @@ extern const struct spi_nor_manufacturer @@ -633,6 +633,7 @@ extern const struct spi_nor_manufacturer

View File

@ -15,7 +15,7 @@ Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
static const struct flash_info gigadevice_nor_parts[] = { static const struct flash_info gigadevice_nor_parts[] = {
+ { "gd25q05", INFO(0xc84010, 0, 64 * 1024, 1) + { "gd25q05", INFO(0xc84010, 0, 64 * 1024, 1)
+ FLAGS(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 | + NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ |
+ SPI_NOR_QUAD_READ) }, + SPI_NOR_QUAD_READ) },
{ "gd25q16", INFO(0xc84015, 0, 64 * 1024, 32) { "gd25q16", INFO(0xc84015, 0, 64 * 1024, 32)

View File

@ -40,15 +40,17 @@ Submitted-by: Daniel Danzberger <daniel@dd-wrt.com>
--- a/drivers/mtd/nand/spi/Makefile --- a/drivers/mtd/nand/spi/Makefile
+++ b/drivers/mtd/nand/spi/Makefile +++ b/drivers/mtd/nand/spi/Makefile
@@ -1,3 +1,3 @@ @@ -1,4 +1,4 @@
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
-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 alliancememory.o ato.o esmt.o gigadevice.o macronix.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 -spinand-objs += micron.o paragon.o toshiba.o winbond.o xtx.o
+spinand-objs := core.o alliancememory.o ato.o esmt.o etron.o gigadevice.o
+spinand-objs += 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
@@ -939,6 +939,7 @@ static const struct nand_ops spinand_ops @@ -940,6 +940,7 @@ static const struct spinand_manufacturer
static const struct spinand_manufacturer *spinand_manufacturers[] = { &alliancememory_spinand_manufacturer,
&ato_spinand_manufacturer, &ato_spinand_manufacturer,
&esmt_c8_spinand_manufacturer, &esmt_c8_spinand_manufacturer,
+ &etron_spinand_manufacturer, + &etron_spinand_manufacturer,
@ -158,8 +160,8 @@ Submitted-by: Daniel Danzberger <daniel@dd-wrt.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
@@ -262,6 +262,7 @@ struct spinand_manufacturer { @@ -263,6 +263,7 @@ struct spinand_manufacturer {
/* SPI NAND manufacturers */ extern const struct spinand_manufacturer alliancememory_spinand_manufacturer;
extern const struct spinand_manufacturer ato_spinand_manufacturer; 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 etron_spinand_manufacturer; +extern const struct spinand_manufacturer etron_spinand_manufacturer;

View File

@ -40,14 +40,15 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
#ifdef CONFIG_ROOT_NFS #ifdef CONFIG_ROOT_NFS
#define NFSROOT_TIMEOUT_MIN 5 #define NFSROOT_TIMEOUT_MIN 5
@@ -579,6 +602,10 @@ void __init mount_root(void) @@ -408,6 +408,11 @@ void __init mount_root(void)
return;
} void __init mount_root(char *root_device_name)
#endif {
+#ifdef CONFIG_MTD_ROOTFS_ROOT_DEV +#ifdef CONFIG_MTD_ROOTFS_ROOT_DEV
+ if (!mount_ubi_rootfs()) + if (!mount_ubi_rootfs())
+ return; + return;
+#endif +#endif
if (ROOT_DEV == 0 && root_device_name && root_fs_names) { +
if (mount_nodev_root() == 0) switch (ROOT_DEV) {
return; case Root_NFS:
mount_nfs_root();

View File

@ -31,4 +31,4 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+ +
return 0; return 0;
out_destroy_wq: out_remove_minor:

View File

@ -20,11 +20,11 @@ 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
@@ -107,6 +107,7 @@ static void macronix_nor_default_init(st @@ -115,6 +115,7 @@ static void macronix_nor_default_init(st
{ {
nor->params->quad_enable = spi_nor_sr1_bit6_quad_enable; if (!nor->params->set_4byte_addr_mode)
nor->params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode; nor->params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode_en4b_ex4b;
+ nor->flags &= ~SNOR_F_HAS_16BIT_SR; + nor->flags &= ~SNOR_F_HAS_16BIT_SR;
nor->flags |= SNOR_F_HAS_LOCK; nor->flags |= SNOR_F_HAS_LOCK;
}
return 0;

View File

@ -17,9 +17,9 @@ Subject: [PATCH] fs: add cdrom dependency
tristate "Apple Macintosh file system support" tristate "Apple Macintosh file system support"
depends on BLOCK depends on BLOCK
+ select CDROM + select CDROM
select BUFFER_HEAD
select NLS select NLS
help select LEGACY_DIRECT_IO
If you say Y here, you will be able to mount Macintosh-formatted
--- a/fs/hfsplus/Kconfig --- a/fs/hfsplus/Kconfig
+++ b/fs/hfsplus/Kconfig +++ b/fs/hfsplus/Kconfig
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
@ -27,9 +27,9 @@ Subject: [PATCH] fs: add cdrom dependency
tristate "Apple Extended HFS file system support" tristate "Apple Extended HFS file system support"
depends on BLOCK depends on BLOCK
+ select CDROM + select CDROM
select BUFFER_HEAD
select NLS select NLS
select NLS_UTF8 select NLS_UTF8
help
--- a/fs/isofs/Kconfig --- a/fs/isofs/Kconfig
+++ b/fs/isofs/Kconfig +++ b/fs/isofs/Kconfig
@@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
@ -37,9 +37,9 @@ Subject: [PATCH] fs: add cdrom dependency
config ISO9660_FS config ISO9660_FS
tristate "ISO 9660 CDROM file system support" tristate "ISO 9660 CDROM file system support"
+ select CDROM + select CDROM
select BUFFER_HEAD
help help
This is the standard file system used on CD-ROMs. It was previously This is the standard file system used on CD-ROMs. It was previously
known as "High Sierra File System" and is called "hsfs" on other
--- a/fs/udf/Kconfig --- a/fs/udf/Kconfig
+++ b/fs/udf/Kconfig +++ b/fs/udf/Kconfig
@@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
@ -47,6 +47,6 @@ Subject: [PATCH] fs: add cdrom dependency
config UDF_FS config UDF_FS
tristate "UDF file system support" tristate "UDF file system support"
+ select CDROM + select CDROM
select BUFFER_HEAD
select CRC_ITU_T select CRC_ITU_T
select NLS select NLS
help

View File

@ -13,13 +13,13 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
--- a/init/do_mounts.c --- a/init/do_mounts.c
+++ b/init/do_mounts.c +++ b/init/do_mounts.c
@@ -645,7 +645,8 @@ void __init prepare_namespace(void) @@ -463,7 +463,8 @@ static dev_t __init parse_root_device(char
int error;
dev_t dev;
if (saved_root_name[0]) { - if (!strncmp(root_device_name, "mtd", 3) ||
root_device_name = saved_root_name; + if (!strncmp(root_device_name, "fit", 3) ||
- if (!strncmp(root_device_name, "mtd", 3) || + !strncmp(root_device_name, "mtd", 3) ||
+ if (!strncmp(root_device_name, "fit", 3) || !strncmp(root_device_name, "ubi", 3))
+ !strncmp(root_device_name, "mtd", 3) || return Root_Generic;
!strncmp(root_device_name, "ubi", 3)) { if (strcmp(root_device_name, "/dev/nfs") == 0)
mount_block_root(root_device_name, root_mountflags);
goto out;

View File

@ -66,26 +66,33 @@ Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
+CFLAGS_compr_lzma.o += -Iinclude/linux -Ilib/lzma +CFLAGS_compr_lzma.o += -Iinclude/linux -Ilib/lzma
--- a/fs/jffs2/compr.c --- a/fs/jffs2/compr.c
+++ b/fs/jffs2/compr.c +++ b/fs/jffs2/compr.c
@@ -378,6 +378,9 @@ int __init jffs2_compressors_init(void) @@ -381,6 +381,9 @@ int __init jffs2_compressors_init(void)
#ifdef CONFIG_JFFS2_LZO ret = jffs2_lzo_init();
jffs2_lzo_init(); if (ret)
#endif goto exit_dynrubin;
+#ifdef CONFIG_JFFS2_LZMA + ret = jffs2_lzma_init();
+ jffs2_lzma_init(); + if (ret)
+#endif + goto exit_lzo;
/* Setting default compression mode */ /* Setting default compression mode */
#ifdef CONFIG_JFFS2_CMODE_NONE @@ -402,6 +405,8 @@ int __init jffs2_compressors_init(void)
jffs2_compression_mode = JFFS2_COMPR_MODE_NONE; #endif
@@ -401,6 +404,9 @@ int __init jffs2_compressors_init(void) return 0;
+exit_lzo:
+ jffs2_lzo_exit();
exit_dynrubin:
jffs2_dynrubin_exit();
exit_runinmips:
@@ -417,6 +422,7 @@ int __init jffs2_compressors_init(void)
int jffs2_compressors_exit(void) int jffs2_compressors_exit(void)
{ {
/* Unregistering compressors */ /* Unregistering compressors */
+#ifdef CONFIG_JFFS2_LZMA
+ jffs2_lzma_exit(); + jffs2_lzma_exit();
+#endif
#ifdef CONFIG_JFFS2_LZO
jffs2_lzo_exit(); jffs2_lzo_exit();
#endif jffs2_dynrubin_exit();
jffs2_rubinmips_exit();
--- a/fs/jffs2/compr.h --- a/fs/jffs2/compr.h
+++ b/fs/jffs2/compr.h +++ b/fs/jffs2/compr.h
@@ -29,9 +29,9 @@ @@ -29,9 +29,9 @@
@ -101,13 +108,16 @@ Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
#define JFFS2_RUBINMIPS_DISABLED /* RUBINs will be used only */ #define JFFS2_RUBINMIPS_DISABLED /* RUBINs will be used only */
#define JFFS2_DYNRUBIN_DISABLED /* for decompression */ #define JFFS2_DYNRUBIN_DISABLED /* for decompression */
@@ -101,5 +101,9 @@ void jffs2_zlib_exit(void); @@ -115,5 +115,12 @@ extern void jffs2_lzo_exit(void);
int jffs2_lzo_init(void); static inline int jffs2_lzo_init(void) { return 0; }
void jffs2_lzo_exit(void); static inline void jffs2_lzo_exit(void) {}
#endif #endif
+#ifdef CONFIG_JFFS2_LZMA +#ifdef CONFIG_JFFS2_LZMA
+int jffs2_lzma_init(void); +extern int jffs2_lzma_init(void);
+void jffs2_lzma_exit(void); +extern void jffs2_lzma_exit(void);
+#else
+static inline int jffs2_lzma_init(void) { return 0; }
+static inline void jffs2_lzma_exit(void) {}
+#endif +#endif
#endif /* __JFFS2_COMPR_H__ */ #endif /* __JFFS2_COMPR_H__ */

View File

@ -21,10 +21,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/* Packet socket options */ /* Packet socket options */
@@ -59,6 +61,7 @@ struct sockaddr_ll { @@ -59,6 +61,7 @@ struct sockaddr_ll {
#define PACKET_ROLLOVER_STATS 21
#define PACKET_FANOUT_DATA 22 #define PACKET_FANOUT_DATA 22
#define PACKET_IGNORE_OUTGOING 23 #define PACKET_IGNORE_OUTGOING 23
+#define PACKET_RECV_TYPE 24 #define PACKET_VNET_HDR_SZ 24
+#define PACKET_RECV_TYPE 25
#define PACKET_FANOUT_HASH 0 #define PACKET_FANOUT_HASH 0
#define PACKET_FANOUT_LB 1 #define PACKET_FANOUT_LB 1
@ -96,7 +96,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (sock->type == SOCK_PACKET) if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt; po->prot_hook.func = packet_rcv_spkt;
@@ -4013,6 +4016,16 @@ packet_setsockopt(struct socket *sock, i @@ -4013,6 +4016,16 @@ packet_setsockopt(struct socket *sock, i
WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit); packet_sock_flag_set(po, PACKET_SOCK_QDISC_BYPASS, val);
return 0; return 0;
} }
+ case PACKET_RECV_TYPE: + case PACKET_RECV_TYPE:
@ -113,8 +113,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
return -ENOPROTOOPT; return -ENOPROTOOPT;
} }
@@ -4069,6 +4082,13 @@ static int packet_getsockopt(struct sock @@ -4069,6 +4082,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR: case PACKET_VNET_HDR_SZ:
val = po->has_vnet_hdr; val = READ_ONCE(po->vnet_hdr_sz);
break; break;
+ case PACKET_RECV_TYPE: + case PACKET_RECV_TYPE:
+ if (len > sizeof(unsigned int)) + if (len > sizeof(unsigned int))
@ -129,10 +129,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/packet/internal.h --- a/net/packet/internal.h
+++ b/net/packet/internal.h +++ b/net/packet/internal.h
@@ -136,6 +136,7 @@ struct packet_sock { @@ -136,6 +136,7 @@ struct packet_sock {
int (*xmit)(struct sk_buff *skb); struct net_device __rcu *cached_dev;
struct packet_type prot_hook ____cacheline_aligned_in_smp; struct packet_type prot_hook ____cacheline_aligned_in_smp;
atomic_t tp_drops ____cacheline_aligned_in_smp; atomic_t tp_drops ____cacheline_aligned_in_smp;
+ unsigned int pkt_type; + unsigned int pkt_type;
}; };
static inline struct packet_sock *pkt_sk(struct sock *sk) #define pkt_sk(ptr) container_of_const(ptr, struct packet_sock, sk)

View File

@ -125,7 +125,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
+static const struct rt6_info ip6_policy_failed_entry_template = { +static const struct rt6_info ip6_policy_failed_entry_template = {
+ .dst = { + .dst = {
+ .__refcnt = ATOMIC_INIT(1), + .__rcuref = RCUREF_INIT(1),
+ .__use = 1, + .__use = 1,
+ .obsolete = DST_OBSOLETE_FORCE_CHK, + .obsolete = DST_OBSOLETE_FORCE_CHK,
+ .error = -EACCES, + .error = -EACCES,
@ -137,7 +137,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
+ +
static const struct rt6_info ip6_blk_hole_entry_template = { static const struct rt6_info ip6_blk_hole_entry_template = {
.dst = { .dst = {
.__refcnt = ATOMIC_INIT(1), .__rcuref = RCUREF_INIT(1),
@@ -1039,6 +1053,7 @@ static const int fib6_prop[RTN_MAX + 1] @@ -1039,6 +1053,7 @@ static const int fib6_prop[RTN_MAX + 1]
[RTN_BLACKHOLE] = -EINVAL, [RTN_BLACKHOLE] = -EINVAL,
[RTN_UNREACHABLE] = -EHOSTUNREACH, [RTN_UNREACHABLE] = -EHOSTUNREACH,
@ -213,7 +213,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
GFP_KERNEL); GFP_KERNEL);
@@ -6499,11 +6535,21 @@ static int __net_init ip6_route_net_init @@ -6499,11 +6535,21 @@ static int __net_init ip6_route_net_init
ip6_template_metrics, true); ip6_template_metrics, true);
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached); INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->dst.rt_uncached);
+ net->ipv6.ip6_policy_failed_entry = + net->ipv6.ip6_policy_failed_entry =
+ kmemdup(&ip6_policy_failed_entry_template, + kmemdup(&ip6_policy_failed_entry_template,
@ -223,7 +223,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
+ net->ipv6.ip6_policy_failed_entry->dst.ops = &net->ipv6.ip6_dst_ops; + net->ipv6.ip6_policy_failed_entry->dst.ops = &net->ipv6.ip6_dst_ops;
+ dst_init_metrics(&net->ipv6.ip6_policy_failed_entry->dst, + dst_init_metrics(&net->ipv6.ip6_policy_failed_entry->dst,
+ ip6_template_metrics, true); + ip6_template_metrics, true);
+ INIT_LIST_HEAD(&net->ipv6.ip6_policy_failed_entry->rt6i_uncached); + INIT_LIST_HEAD(&net->ipv6.ip6_policy_failed_entry->dst.rt_uncached);
+ +
net->ipv6.ip6_blk_hole_entry = kmemdup(&ip6_blk_hole_entry_template, net->ipv6.ip6_blk_hole_entry = kmemdup(&ip6_blk_hole_entry_template,
sizeof(*net->ipv6.ip6_blk_hole_entry), sizeof(*net->ipv6.ip6_blk_hole_entry),

View File

@ -28,13 +28,13 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#endif #endif
+ __u8 gro_skip:1; + __u8 gro_skip:1;
#if IS_ENABLED(CONFIG_IP_VS)
__u8 ipvs_property:1; __u8 ipvs_property:1;
__u8 inner_protocol_type:1;
--- a/net/core/gro.c --- a/net/core/gro.c
+++ b/net/core/gro.c +++ b/net/core/gro.c
@@ -491,6 +491,9 @@ static enum gro_result dev_gro_receive(s @@ -491,6 +491,9 @@ static enum gro_result dev_gro_receive(s
enum gro_result ret;
int same_flow; int same_flow;
int grow;
+ if (skb->gro_skip) + if (skb->gro_skip)
+ goto normal; + goto normal;
@ -109,9 +109,9 @@ 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);
@@ -8824,6 +8868,7 @@ int dev_set_mac_address(struct net_devic @@ -8821,6 +8865,7 @@ int dev_set_mac_address(struct net_devic
if (err) return err;
return err; }
dev->addr_assign_type = NET_ADDR_SET; dev->addr_assign_type = NET_ADDR_SET;
+ netdev_update_addr_mask(dev); + netdev_update_addr_mask(dev);
call_netdevice_notifiers(NETDEV_CHANGEADDR, dev); call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);

View File

@ -18,8 +18,8 @@ property. This way, the MAC address can be accessed using procfs.
--- a/net/core/of_net.c --- a/net/core/of_net.c
+++ b/net/core/of_net.c +++ b/net/core/of_net.c
@@ -95,6 +95,27 @@ static int of_get_mac_addr_nvmem(struct @@ -95,6 +95,27 @@ static int of_get_mac_addr_nvmem(struct
return 0;
} }
EXPORT_SYMBOL(of_get_mac_address_nvmem);
+static int of_add_mac_address(struct device_node *np, u8* addr) +static int of_add_mac_address(struct device_node *np, u8* addr)
+{ +{
@ -62,8 +62,8 @@ property. This way, the MAC address can be accessed using procfs.
- return 0; - return 0;
+ goto found; + goto found;
- return of_get_mac_addr_nvmem(np, addr); - return of_get_mac_address_nvmem(np, addr);
+ ret = of_get_mac_addr_nvmem(np, addr); + ret = of_get_mac_address_nvmem(np, addr);
+ if (ret) + if (ret)
+ return ret; + return ret;
+ +

View File

@ -11,9 +11,9 @@ 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
@@ -1850,6 +1850,9 @@ void phy_detach(struct phy_device *phyde @@ -1753,6 +1753,9 @@ void phy_detach(struct phy_device *phyde
struct module *ndev_owner = NULL; if (phydev->devlink)
struct mii_bus *bus; device_link_del(phydev->devlink);
+ if (phydev->drv && phydev->drv->detach) + if (phydev->drv && phydev->drv->detach)
+ phydev->drv->detach(phydev); + phydev->drv->detach(phydev);

View File

@ -15,18 +15,18 @@ 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
@@ -59,6 +59,7 @@ struct br_ip_list { @@ -59,6 +59,7 @@ struct br_ip_list {
#define BR_MRP_LOST_IN_CONT BIT(19)
#define BR_TX_FWD_OFFLOAD BIT(20)
#define BR_PORT_LOCKED BIT(21) #define BR_PORT_LOCKED BIT(21)
+#define BR_BPDU_FILTER BIT(22) #define BR_PORT_MAB BIT(22)
#define BR_NEIGH_VLAN_SUPPRESS BIT(23)
+#define BR_BPDU_FILTER BIT(24)
#define BR_DEFAULT_AGEING_TIME (300 * HZ) #define BR_DEFAULT_AGEING_TIME (300 * HZ)
--- a/net/bridge/br_forward.c --- a/net/bridge/br_forward.c
+++ b/net/bridge/br_forward.c +++ b/net/bridge/br_forward.c
@@ -199,6 +199,7 @@ out: @@ -199,6 +199,7 @@ out:
void br_flood(struct net_bridge *br, struct sk_buff *skb, enum br_pkt_type pkt_type, bool local_rcv, bool local_orig,
enum br_pkt_type pkt_type, bool local_rcv, bool local_orig) u16 vid)
{ {
+ const unsigned char *dest = eth_hdr(skb)->h_dest; + const unsigned char *dest = eth_hdr(skb)->h_dest;
struct net_bridge_port *prev = NULL; struct net_bridge_port *prev = NULL;
@ -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
@@ -561,6 +561,7 @@ enum { @@ -561,6 +561,7 @@ enum {
IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT, IFLA_BRPORT_MCAST_MAX_GROUPS,
IFLA_BRPORT_MCAST_EHT_HOSTS_CNT, IFLA_BRPORT_NEIGH_VLAN_SUPPRESS,
IFLA_BRPORT_LOCKED, IFLA_BRPORT_BACKUP_NHID,
+ IFLA_BRPORT_BPDU_FILTER, + IFLA_BRPORT_BPDU_FILTER,
__IFLA_BRPORT_MAX __IFLA_BRPORT_MAX
}; };
@ -117,47 +117,47 @@ 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
@@ -188,6 +188,7 @@ static inline size_t br_port_info_size(v @@ -188,6 +188,7 @@ static inline size_t br_port_info_size(v
+ nla_total_size(1) /* IFLA_BRPORT_NEIGH_SUPPRESS */
+ nla_total_size(1) /* IFLA_BRPORT_ISOLATED */
+ nla_total_size(1) /* IFLA_BRPORT_LOCKED */ + nla_total_size(1) /* IFLA_BRPORT_LOCKED */
+ nla_total_size(1) /* IFLA_BRPORT_MAB */
+ nla_total_size(1) /* IFLA_BRPORT_NEIGH_VLAN_SUPPRESS */
+ + 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 */
@@ -274,7 +275,8 @@ static int br_port_fill_attrs(struct sk_ @@ -274,7 +275,8 @@ static int br_port_fill_attrs(struct sk_
nla_put_u8(skb, IFLA_BRPORT_MRP_IN_OPEN, nla_put_u8(skb, IFLA_BRPORT_LOCKED, !!(p->flags & BR_PORT_LOCKED)) ||
!!(p->flags & BR_MRP_LOST_IN_CONT)) || nla_put_u8(skb, IFLA_BRPORT_MAB, !!(p->flags & BR_PORT_MAB)) ||
nla_put_u8(skb, IFLA_BRPORT_ISOLATED, !!(p->flags & BR_ISOLATED)) || nla_put_u8(skb, IFLA_BRPORT_NEIGH_VLAN_SUPPRESS,
- nla_put_u8(skb, IFLA_BRPORT_LOCKED, !!(p->flags & BR_PORT_LOCKED))) - !!(p->flags & BR_NEIGH_VLAN_SUPPRESS)))
+ nla_put_u8(skb, IFLA_BRPORT_LOCKED, !!(p->flags & BR_PORT_LOCKED)) || + !!(p->flags & BR_NEIGH_VLAN_SUPPRESS)) ||
+ 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;
timerval = br_timer_value(&p->message_age_timer); timerval = br_timer_value(&p->message_age_timer);
@@ -878,6 +880,7 @@ static const struct nla_policy br_port_p @@ -878,6 +880,7 @@ static const struct nla_policy br_port_p
[IFLA_BRPORT_LOCKED] = { .type = NLA_U8 }, [IFLA_BRPORT_MCAST_MAX_GROUPS] = { .type = NLA_U32 },
[IFLA_BRPORT_BACKUP_PORT] = { .type = NLA_U32 }, [IFLA_BRPORT_NEIGH_VLAN_SUPPRESS] = NLA_POLICY_MAX(NLA_U8, 1),
[IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT] = { .type = NLA_U32 }, [IFLA_BRPORT_BACKUP_NHID] = { .type = NLA_U32 },
+ [IFLA_BRPORT_BPDU_FILTER] = { .type = NLA_U8 }, + [IFLA_BRPORT_BPDU_FILTER] = { .type = NLA_U8 },
}; };
/* Change the state of the port and notify spanning tree */ /* Change the state of the port and notify spanning tree */
@@ -943,6 +946,7 @@ static int br_setport(struct net_bridge_ @@ -943,6 +946,7 @@ static int br_setport(struct net_bridge_
br_set_port_flag(p, tb, IFLA_BRPORT_NEIGH_SUPPRESS, BR_NEIGH_SUPPRESS); br_set_port_flag(p, tb, IFLA_BRPORT_MAB, BR_PORT_MAB);
br_set_port_flag(p, tb, IFLA_BRPORT_ISOLATED, BR_ISOLATED); br_set_port_flag(p, tb, IFLA_BRPORT_NEIGH_VLAN_SUPPRESS,
br_set_port_flag(p, tb, IFLA_BRPORT_LOCKED, BR_PORT_LOCKED); BR_NEIGH_VLAN_SUPPRESS);
+ 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; if ((p->flags & BR_PORT_MAB) &&
(!(p->flags & BR_PORT_LOCKED) || !(p->flags & BR_LEARNING))) {
--- a/net/core/rtnetlink.c --- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c
@@ -57,7 +57,7 @@ @@ -57,7 +57,7 @@
#include "dev.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 44
+#define RTNL_SLAVE_MAX_TYPE 41 +#define RTNL_SLAVE_MAX_TYPE 45
struct rtnl_link { struct rtnl_link {
rtnl_doit_func doit; rtnl_doit_func doit;

View File

@ -22,7 +22,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+ int val; + int val;
+ u32 id; + u32 id;
+ +
+ if (phydev->mdio.bus->probe_capabilities >= MDIOBUS_C45) { + if (phydev->drv->read_mmd) {
+ val = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_PKGID1); + val = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_PKGID1);
+ if (val < 0) + if (val < 0)
+ return 0; + return 0;

View File

@ -16,6 +16,14 @@ 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
@@ -26,6 +26,7 @@
#include <linux/bitfield.h>
#include <net/dsa.h>
#include <net/dst_metadata.h>
+#include <net/gso.h>
#include <net/page_pool/helpers.h>
#include "mtk_eth_soc.h"
@@ -1562,12 +1562,28 @@ static void mtk_wake_queue(struct mtk_et @@ -1562,12 +1562,28 @@ static void mtk_wake_queue(struct mtk_et
} }
} }

View File

@ -27,13 +27,13 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
F: include/linux/pcs/pcs-mtk-lynxi.h F: include/linux/pcs/pcs-mtk-lynxi.h
+F: include/linux/pcs/pcs-mtk-usxgmii.h +F: include/linux/pcs/pcs-mtk-usxgmii.h
MEDIATEK I2C CONTROLLER DRIVER MEDIATEK ETHERNET PHY DRIVERS
M: Qii Wang <qii.wang@mediatek.com> M: Daniel Golle <daniel@makrotopia.org>
--- a/drivers/net/pcs/Kconfig --- a/drivers/net/pcs/Kconfig
+++ b/drivers/net/pcs/Kconfig +++ b/drivers/net/pcs/Kconfig
@@ -18,6 +18,17 @@ config PCS_LYNX @@ -18,6 +18,17 @@ config PCS_LYNX
This module provides helpers to phylink for managing the Lynx PCS This module provides helpers to phylink for managing the LynxI PCS
which is part of the Layerscape and QorIQ Ethernet SERDES. which is part of MediaTek's SoC and Ethernet switch ICs.
+config PCS_MTK_USXGMII +config PCS_MTK_USXGMII
+ tristate "MediaTek USXGMII PCS" + tristate "MediaTek USXGMII PCS"
@ -51,10 +51,10 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
depends on OF && (ARCH_RZN1 || COMPILE_TEST) depends on OF && (ARCH_RZN1 || COMPILE_TEST)
--- a/drivers/net/pcs/Makefile --- a/drivers/net/pcs/Makefile
+++ b/drivers/net/pcs/Makefile +++ b/drivers/net/pcs/Makefile
@@ -8,3 +8,4 @@ obj-$(CONFIG_PCS_LYNX) += pcs-lynx.o @@ -8,3 +8,4 @@ obj-$(CONFIG_PCS_XPCS) += pcs_xpcs.o
obj-$(CONFIG_PCS_RZN1_MIIC) += pcs-rzn1-miic.o obj-$(CONFIG_PCS_LYNX) += pcs-lynx.o
obj-$(CONFIG_PCS_ALTERA_TSE) += pcs-altera-tse.o
obj-$(CONFIG_PCS_MTK_LYNXI) += pcs-mtk-lynxi.o obj-$(CONFIG_PCS_MTK_LYNXI) += pcs-mtk-lynxi.o
obj-$(CONFIG_PCS_RZN1_MIIC) += pcs-rzn1-miic.o
+obj-$(CONFIG_PCS_MTK_USXGMII) += pcs-mtk-usxgmii.o +obj-$(CONFIG_PCS_MTK_USXGMII) += pcs-mtk-usxgmii.o
--- /dev/null --- /dev/null
+++ b/drivers/net/pcs/pcs-mtk-usxgmii.c +++ b/drivers/net/pcs/pcs-mtk-usxgmii.c

View File

@ -20,10 +20,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/** /**
* napi_disable - prevent NAPI from scheduling * napi_disable - prevent NAPI from scheduling
@@ -3152,6 +3153,7 @@ struct softnet_data { @@ -3129,6 +3130,7 @@ struct softnet_data {
/* stats */
unsigned int processed; unsigned int processed;
unsigned int time_squeeze; unsigned int time_squeeze;
unsigned int received_rps;
+ unsigned int process_queue_empty; + unsigned int process_queue_empty;
#ifdef CONFIG_RPS #ifdef CONFIG_RPS
struct softnet_data *rps_ipi_list; struct softnet_data *rps_ipi_list;

View File

@ -80,7 +80,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
-typedef int (*config_clks_t)(struct device *dev, struct opp_table *opp_table, -typedef int (*config_clks_t)(struct device *dev, struct opp_table *opp_table,
+typedef int (*config_clks_t)(struct device *dev, +typedef int (*config_clks_t)(struct device *dev,
+ struct opp_table *opp_table, struct dev_pm_opp *old_opp, + struct opp_table *opp_table, struct dev_pm_opp *old_opp,
struct dev_pm_opp *opp, void *data, bool scaling_down); struct dev_pm_opp *opp, void *data, bool scaling_down);
/** /**

View File

@ -10,14 +10,14 @@ string.
--- a/drivers/nvmem/Kconfig --- a/drivers/nvmem/Kconfig
+++ b/drivers/nvmem/Kconfig +++ b/drivers/nvmem/Kconfig
@@ -1,6 +1,7 @@ @@ -2,6 +2,7 @@
# SPDX-License-Identifier: GPL-2.0-only
menuconfig NVMEM menuconfig NVMEM
bool "NVMEM Support" bool "NVMEM Support"
+ select GENERIC_NET_UTILS
imply NVMEM_LAYOUTS imply NVMEM_LAYOUTS
+ select GENERIC_NET_UTILS
help help
Support for NVMEM(Non Volatile Memory) devices like EEPROM, EFUSES... Support for NVMEM(Non Volatile Memory) devices like EEPROM, EFUSES...
--- a/drivers/nvmem/core.c --- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c
@@ -7,9 +7,12 @@ @@ -7,9 +7,12 @@

View File

@ -111,5 +111,5 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+} +}
+#endif +#endif
#ifdef CONFIG_PM
extern const struct dev_pm_ops usb_hcd_pci_pm_ops; extern const struct dev_pm_ops usb_hcd_pci_pm_ops;
#endif /* CONFIG_USB_PCI */

View File

@ -46,7 +46,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
--- a/drivers/ata/libata-core.c --- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c
@@ -663,6 +663,19 @@ u64 ata_tf_read_block(const struct ata_t @@ -663,6 +663,19 @@ u64 ata_tf_read_block(const struct ata_t
return block; qc->flags |= ATA_QCFLAG_HAS_CDL | ATA_QCFLAG_RESULT_TF;
} }
+#ifdef CONFIG_ATA_LEDS +#ifdef CONFIG_ATA_LEDS
@ -85,10 +85,10 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
ata_sff_port_init(ap); ata_sff_port_init(ap);
return ap; return ap;
@@ -5473,6 +5492,12 @@ static void ata_host_release(struct kref @@ -5469,6 +5488,12 @@ static void ata_host_release(struct kref
kfree(ap->pmp_link); kfree(ap->pmp_link);
kfree(ap->slave_link); kfree(ap->slave_link);
kfree(ap->ncq_sense_buf);
+#ifdef CONFIG_ATA_LEDS +#ifdef CONFIG_ATA_LEDS
+ if (ap->ledtrig) { + if (ap->ledtrig) {
+ led_trigger_unregister(ap->ledtrig); + led_trigger_unregister(ap->ledtrig);
@ -145,5 +145,5 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+#endif +#endif
+ +
/* owned by EH */ /* owned by EH */
u8 *ncq_sense_buf;
u8 sector_buf[ATA_SECT_SIZE] ____cacheline_aligned; u8 sector_buf[ATA_SECT_SIZE] ____cacheline_aligned;
};

View File

@ -24,8 +24,8 @@ Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
arch/arm/boot/dts/imx7d-pico.dtsi | 8 ++++++++ arch/arm/boot/dts/imx7d-pico.dtsi | 8 ++++++++
1 file changed, 8 insertions(+) 1 file changed, 8 insertions(+)
--- a/arch/arm/boot/dts/imx7d-pico.dtsi --- a/arch/arm/boot/dts/nxp/imx/imx7d-pico.dtsi
+++ b/arch/arm/boot/dts/imx7d-pico.dtsi +++ b/arch/arm/boot/dts/nxp/imx/imx7d-pico.dtsi
@@ -108,6 +108,14 @@ @@ -108,6 +108,14 @@
assigned-clock-rates = <0>, <32768>; assigned-clock-rates = <0>, <32768>;
}; };

View File

@ -13,9 +13,9 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
--- a/init/Kconfig --- a/init/Kconfig
+++ b/init/Kconfig +++ b/init/Kconfig
@@ -1836,6 +1836,15 @@ config EMBEDDED @@ -1827,6 +1827,15 @@ config EMBEDDED
an embedded system so certain expert options are available
for configuration. If unsure, say N.
+config MANGLE_BOOTARGS +config MANGLE_BOOTARGS
+ bool "Rename offending bootargs" + bool "Rename offending bootargs"