kernel: bump 5.15 to 5.15.74

我先上了,你们随意
切换内核target/linux/rockchip/Makefile=KERNEL_PATCHVER=5.4更改为5.15即可
This commit is contained in:
DHDAXCW 2022-10-21 08:20:45 +00:00
parent 5cb32256f6
commit 15a7f86611
65 changed files with 375 additions and 334 deletions

View File

@ -1,2 +1,2 @@
LINUX_VERSION-5.15 = .31 LINUX_VERSION-5.15 = .74
LINUX_KERNEL_HASH-5.15.31 = f621384b47d5bed927910bf5211e7b4ccac925f28218e483bb1a9c484b246b88 LINUX_KERNEL_HASH-5.15.74 = 2c1539a2f85b835c36c4a07c8270b52b0bec38fdda7339477d07f0c3af8c4265

View File

@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/Makefile --- a/Makefile
+++ b/Makefile +++ b/Makefile
@@ -523,7 +523,7 @@ KBUILD_LDFLAGS_MODULE := @@ -525,7 +525,7 @@ KBUILD_LDFLAGS_MODULE :=
KBUILD_LDFLAGS := KBUILD_LDFLAGS :=
CLANG_FLAGS := CLANG_FLAGS :=

View File

@ -14,7 +14,7 @@ Signed-off-by: Johan Almbladh <johan.almbladh@anyfinetworks.com>
--- a/MAINTAINERS --- a/MAINTAINERS
+++ b/MAINTAINERS +++ b/MAINTAINERS
@@ -3428,6 +3428,7 @@ S: Supported @@ -3430,6 +3430,7 @@ S: Supported
F: arch/arm64/net/ F: arch/arm64/net/
BPF JIT for MIPS (32-BIT AND 64-BIT) BPF JIT for MIPS (32-BIT AND 64-BIT)

View File

@ -10,7 +10,7 @@ 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
@@ -646,13 +646,41 @@ void nf_flow_table_free(struct nf_flowta @@ -613,13 +613,41 @@ void nf_flow_table_free(struct nf_flowta
} }
EXPORT_SYMBOL_GPL(nf_flow_table_free); EXPORT_SYMBOL_GPL(nf_flow_table_free);
@ -55,7 +55,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
--- a/net/netfilter/nft_flow_offload.c --- a/net/netfilter/nft_flow_offload.c
+++ b/net/netfilter/nft_flow_offload.c +++ b/net/netfilter/nft_flow_offload.c
@@ -438,47 +438,14 @@ static struct nft_expr_type nft_flow_off @@ -444,47 +444,14 @@ static struct nft_expr_type nft_flow_off
.owner = THIS_MODULE, .owner = THIS_MODULE,
}; };

View File

@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/drivers/net/phy/at803x.c --- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c +++ b/drivers/net/phy/at803x.c
@@ -1420,6 +1420,19 @@ static struct phy_driver at803x_driver[] @@ -1412,6 +1412,19 @@ static struct phy_driver at803x_driver[]
.get_sset_count = at803x_get_sset_count, .get_sset_count = at803x_get_sset_count,
.get_strings = at803x_get_strings, .get_strings = at803x_get_strings,
.get_stats = at803x_get_stats, .get_stats = at803x_get_stats,
@ -37,7 +37,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
}, }; }, };
module_phy_driver(at803x_driver); module_phy_driver(at803x_driver);
@@ -1430,6 +1443,8 @@ static struct mdio_device_id __maybe_unu @@ -1422,6 +1435,8 @@ static struct mdio_device_id __maybe_unu
{ PHY_ID_MATCH_EXACT(ATH8032_PHY_ID) }, { PHY_ID_MATCH_EXACT(ATH8032_PHY_ID) },
{ PHY_ID_MATCH_EXACT(ATH8035_PHY_ID) }, { PHY_ID_MATCH_EXACT(ATH8035_PHY_ID) },
{ PHY_ID_MATCH_EXACT(ATH9331_PHY_ID) }, { PHY_ID_MATCH_EXACT(ATH9331_PHY_ID) },

View File

@ -26,7 +26,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
#define QCA8337_PHY_ID 0x004dd036 #define QCA8337_PHY_ID 0x004dd036
#define QCA8K_PHY_ID_MASK 0xffffffff #define QCA8K_PHY_ID_MASK 0xffffffff
@@ -1421,10 +1422,23 @@ static struct phy_driver at803x_driver[] @@ -1413,10 +1414,23 @@ static struct phy_driver at803x_driver[]
.get_strings = at803x_get_strings, .get_strings = at803x_get_strings,
.get_stats = at803x_get_stats, .get_stats = at803x_get_stats,
}, { }, {
@ -53,7 +53,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
/* PHY_GBIT_FEATURES */ /* PHY_GBIT_FEATURES */
.probe = at803x_probe, .probe = at803x_probe,
.flags = PHY_IS_INTERNAL, .flags = PHY_IS_INTERNAL,
@@ -1444,7 +1458,8 @@ static struct mdio_device_id __maybe_unu @@ -1436,7 +1450,8 @@ static struct mdio_device_id __maybe_unu
{ PHY_ID_MATCH_EXACT(ATH8035_PHY_ID) }, { PHY_ID_MATCH_EXACT(ATH8035_PHY_ID) },
{ PHY_ID_MATCH_EXACT(ATH9331_PHY_ID) }, { PHY_ID_MATCH_EXACT(ATH9331_PHY_ID) },
{ PHY_ID_MATCH_EXACT(QCA8337_PHY_ID) }, { PHY_ID_MATCH_EXACT(QCA8337_PHY_ID) },

View File

@ -16,7 +16,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/drivers/net/phy/at803x.c --- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c +++ b/drivers/net/phy/at803x.c
@@ -1421,6 +1421,8 @@ static struct phy_driver at803x_driver[] @@ -1413,6 +1413,8 @@ static struct phy_driver at803x_driver[]
.get_sset_count = at803x_get_sset_count, .get_sset_count = at803x_get_sset_count,
.get_strings = at803x_get_strings, .get_strings = at803x_get_strings,
.get_stats = at803x_get_stats, .get_stats = at803x_get_stats,
@ -25,7 +25,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
}, { }, {
/* QCA8327-A from switch QCA8327-AL1A */ /* QCA8327-A from switch QCA8327-AL1A */
.phy_id = QCA8327_A_PHY_ID, .phy_id = QCA8327_A_PHY_ID,
@@ -1434,6 +1436,8 @@ static struct phy_driver at803x_driver[] @@ -1426,6 +1428,8 @@ static struct phy_driver at803x_driver[]
.get_sset_count = at803x_get_sset_count, .get_sset_count = at803x_get_sset_count,
.get_strings = at803x_get_strings, .get_strings = at803x_get_strings,
.get_stats = at803x_get_stats, .get_stats = at803x_get_stats,
@ -34,7 +34,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
}, { }, {
/* QCA8327-B from switch QCA8327-BL1A */ /* QCA8327-B from switch QCA8327-BL1A */
.phy_id = QCA8327_B_PHY_ID, .phy_id = QCA8327_B_PHY_ID,
@@ -1447,6 +1451,8 @@ static struct phy_driver at803x_driver[] @@ -1439,6 +1443,8 @@ static struct phy_driver at803x_driver[]
.get_sset_count = at803x_get_sset_count, .get_sset_count = at803x_get_sset_count,
.get_strings = at803x_get_strings, .get_strings = at803x_get_strings,
.get_stats = at803x_get_stats, .get_stats = at803x_get_stats,

View File

@ -15,7 +15,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/drivers/net/phy/at803x.c --- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c +++ b/drivers/net/phy/at803x.c
@@ -1410,47 +1410,47 @@ static struct phy_driver at803x_driver[] @@ -1402,47 +1402,47 @@ static struct phy_driver at803x_driver[]
.config_aneg = at803x_config_aneg, .config_aneg = at803x_config_aneg,
}, { }, {
/* QCA8337 */ /* QCA8337 */

View File

@ -37,7 +37,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
#define AT803X_DEBUG_REG_1F 0x1F #define AT803X_DEBUG_REG_1F 0x1F
#define AT803X_DEBUG_PLL_ON BIT(2) #define AT803X_DEBUG_PLL_ON BIT(2)
@@ -1312,6 +1317,58 @@ static int qca83xx_config_init(struct ph @@ -1304,6 +1309,58 @@ static int qca83xx_config_init(struct ph
return 0; return 0;
} }
@ -96,7 +96,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
static struct phy_driver at803x_driver[] = { static struct phy_driver at803x_driver[] = {
{ {
/* Qualcomm Atheros AR8035 */ /* Qualcomm Atheros AR8035 */
@@ -1421,8 +1478,8 @@ static struct phy_driver at803x_driver[] @@ -1413,8 +1470,8 @@ static struct phy_driver at803x_driver[]
.get_sset_count = at803x_get_sset_count, .get_sset_count = at803x_get_sset_count,
.get_strings = at803x_get_strings, .get_strings = at803x_get_strings,
.get_stats = at803x_get_stats, .get_stats = at803x_get_stats,
@ -107,7 +107,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
}, { }, {
/* QCA8327-A from switch QCA8327-AL1A */ /* QCA8327-A from switch QCA8327-AL1A */
.phy_id = QCA8327_A_PHY_ID, .phy_id = QCA8327_A_PHY_ID,
@@ -1436,8 +1493,8 @@ static struct phy_driver at803x_driver[] @@ -1428,8 +1485,8 @@ static struct phy_driver at803x_driver[]
.get_sset_count = at803x_get_sset_count, .get_sset_count = at803x_get_sset_count,
.get_strings = at803x_get_strings, .get_strings = at803x_get_strings,
.get_stats = at803x_get_stats, .get_stats = at803x_get_stats,
@ -118,7 +118,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
}, { }, {
/* QCA8327-B from switch QCA8327-BL1A */ /* QCA8327-B from switch QCA8327-BL1A */
.phy_id = QCA8327_B_PHY_ID, .phy_id = QCA8327_B_PHY_ID,
@@ -1451,8 +1508,8 @@ static struct phy_driver at803x_driver[] @@ -1443,8 +1500,8 @@ static struct phy_driver at803x_driver[]
.get_sset_count = at803x_get_sset_count, .get_sset_count = at803x_get_sset_count,
.get_strings = at803x_get_strings, .get_strings = at803x_get_strings,
.get_stats = at803x_get_stats, .get_stats = at803x_get_stats,

View File

@ -27,7 +27,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
#define AT803X_DEBUG_RX_CLK_DLY_EN BIT(15) #define AT803X_DEBUG_RX_CLK_DLY_EN BIT(15)
#define AT803X_DEBUG_REG_5 0x05 #define AT803X_DEBUG_REG_5 0x05
@@ -1314,9 +1316,37 @@ static int qca83xx_config_init(struct ph @@ -1306,9 +1308,37 @@ static int qca83xx_config_init(struct ph
break; break;
} }
@ -65,7 +65,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
static int qca83xx_resume(struct phy_device *phydev) static int qca83xx_resume(struct phy_device *phydev)
{ {
int ret, val; int ret, val;
@@ -1471,6 +1501,7 @@ static struct phy_driver at803x_driver[] @@ -1463,6 +1493,7 @@ static struct phy_driver at803x_driver[]
.phy_id_mask = QCA8K_PHY_ID_MASK, .phy_id_mask = QCA8K_PHY_ID_MASK,
.name = "Qualcomm Atheros 8337 internal PHY", .name = "Qualcomm Atheros 8337 internal PHY",
/* PHY_GBIT_FEATURES */ /* PHY_GBIT_FEATURES */
@ -73,7 +73,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
.probe = at803x_probe, .probe = at803x_probe,
.flags = PHY_IS_INTERNAL, .flags = PHY_IS_INTERNAL,
.config_init = qca83xx_config_init, .config_init = qca83xx_config_init,
@@ -1486,6 +1517,7 @@ static struct phy_driver at803x_driver[] @@ -1478,6 +1509,7 @@ static struct phy_driver at803x_driver[]
.phy_id_mask = QCA8K_PHY_ID_MASK, .phy_id_mask = QCA8K_PHY_ID_MASK,
.name = "Qualcomm Atheros 8327-A internal PHY", .name = "Qualcomm Atheros 8327-A internal PHY",
/* PHY_GBIT_FEATURES */ /* PHY_GBIT_FEATURES */
@ -81,7 +81,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
.probe = at803x_probe, .probe = at803x_probe,
.flags = PHY_IS_INTERNAL, .flags = PHY_IS_INTERNAL,
.config_init = qca83xx_config_init, .config_init = qca83xx_config_init,
@@ -1501,6 +1533,7 @@ static struct phy_driver at803x_driver[] @@ -1493,6 +1525,7 @@ static struct phy_driver at803x_driver[]
.phy_id_mask = QCA8K_PHY_ID_MASK, .phy_id_mask = QCA8K_PHY_ID_MASK,
.name = "Qualcomm Atheros 8327-B internal PHY", .name = "Qualcomm Atheros 8327-B internal PHY",
/* PHY_GBIT_FEATURES */ /* PHY_GBIT_FEATURES */

View File

@ -15,7 +15,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/drivers/net/phy/at803x.c --- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c +++ b/drivers/net/phy/at803x.c
@@ -1325,6 +1325,9 @@ static int qca83xx_config_init(struct ph @@ -1317,6 +1317,9 @@ static int qca83xx_config_init(struct ph
at803x_debug_reg_mask(phydev, AT803X_DEBUG_REG_0, at803x_debug_reg_mask(phydev, AT803X_DEBUG_REG_0,
QCA8327_DEBUG_MANU_CTRL_EN, 0); QCA8327_DEBUG_MANU_CTRL_EN, 0);

View File

@ -69,7 +69,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
AT803X_DEBUG_TX_CLK_DLY_EN, 0); AT803X_DEBUG_TX_CLK_DLY_EN, 0);
} }
@@ -1300,9 +1300,9 @@ static int qca83xx_config_init(struct ph @@ -1292,9 +1292,9 @@ static int qca83xx_config_init(struct ph
switch (switch_revision) { switch (switch_revision) {
case 1: case 1:
/* For 100M waveform */ /* For 100M waveform */
@ -81,7 +81,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
break; break;
case 2: case 2:
@@ -1310,8 +1310,8 @@ static int qca83xx_config_init(struct ph @@ -1302,8 +1302,8 @@ static int qca83xx_config_init(struct ph
fallthrough; fallthrough;
case 4: case 4:
phy_write_mmd(phydev, MDIO_MMD_PCS, MDIO_AZ_DEBUG, 0x803f); phy_write_mmd(phydev, MDIO_MMD_PCS, MDIO_AZ_DEBUG, 0x803f);
@ -92,7 +92,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
at803x_debug_reg_write(phydev, AT803X_DEBUG_REG_3C, 0x6000); at803x_debug_reg_write(phydev, AT803X_DEBUG_REG_3C, 0x6000);
break; break;
} }
@@ -1322,7 +1322,7 @@ static int qca83xx_config_init(struct ph @@ -1314,7 +1314,7 @@ static int qca83xx_config_init(struct ph
*/ */
if (phydev->drv->phy_id == QCA8327_A_PHY_ID || if (phydev->drv->phy_id == QCA8327_A_PHY_ID ||
phydev->drv->phy_id == QCA8327_B_PHY_ID) phydev->drv->phy_id == QCA8327_B_PHY_ID)
@ -101,7 +101,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
QCA8327_DEBUG_MANU_CTRL_EN, 0); QCA8327_DEBUG_MANU_CTRL_EN, 0);
/* Following original QCA sourcecode set port to prefer master */ /* Following original QCA sourcecode set port to prefer master */
@@ -1340,12 +1340,12 @@ static void qca83xx_link_change_notify(s @@ -1332,12 +1332,12 @@ static void qca83xx_link_change_notify(s
/* Set DAC Amplitude adjustment to +6% for 100m on link running */ /* Set DAC Amplitude adjustment to +6% for 100m on link running */
if (phydev->state == PHY_RUNNING) { if (phydev->state == PHY_RUNNING) {
if (phydev->speed == SPEED_100) if (phydev->speed == SPEED_100)
@ -116,7 +116,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
QCA8327_DEBUG_MANU_CTRL_EN, 0); QCA8327_DEBUG_MANU_CTRL_EN, 0);
} }
} }
@@ -1392,7 +1392,7 @@ static int qca83xx_suspend(struct phy_de @@ -1384,7 +1384,7 @@ static int qca83xx_suspend(struct phy_de
phy_modify(phydev, MII_BMCR, mask, 0); phy_modify(phydev, MII_BMCR, mask, 0);
} }

View File

@ -42,7 +42,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
if (ret) if (ret)
return ret; return ret;
} }
@@ -2105,7 +2112,12 @@ static int qca8k_resume(struct device *d @@ -2124,7 +2131,12 @@ static int qca8k_resume(struct device *d
static SIMPLE_DEV_PM_OPS(qca8k_pm_ops, static SIMPLE_DEV_PM_OPS(qca8k_pm_ops,
qca8k_suspend, qca8k_resume); qca8k_suspend, qca8k_resume);
@ -56,7 +56,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
.id = QCA8K_ID_QCA8327, .id = QCA8K_ID_QCA8327,
}; };
@@ -2114,7 +2126,8 @@ static const struct qca8k_match_data qca @@ -2133,7 +2145,8 @@ static const struct qca8k_match_data qca
}; };
static const struct of_device_id qca8k_of_match[] = { static const struct of_device_id qca8k_of_match[] = {

View File

@ -88,7 +88,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/init/Kconfig --- a/init/Kconfig
+++ b/init/Kconfig +++ b/init/Kconfig
@@ -2347,6 +2347,13 @@ config UNUSED_KSYMS_WHITELIST @@ -2352,6 +2352,13 @@ config UNUSED_KSYMS_WHITELIST
one per line. The path can be absolute, or relative to the kernel one per line. The path can be absolute, or relative to the kernel
source tree. source tree.
@ -120,7 +120,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#ifdef CONFIG_MODVERSIONS #ifdef CONFIG_MODVERSIONS
@@ -3227,9 +3229,11 @@ static int setup_load_info(struct load_i @@ -3266,9 +3268,11 @@ static int setup_load_info(struct load_i
static int check_modinfo(struct module *mod, struct load_info *info, int flags) static int check_modinfo(struct module *mod, struct load_info *info, int flags)
{ {
@ -133,7 +133,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (flags & MODULE_INIT_IGNORE_VERMAGIC) if (flags & MODULE_INIT_IGNORE_VERMAGIC)
modmagic = NULL; modmagic = NULL;
@@ -3250,6 +3254,7 @@ static int check_modinfo(struct module * @@ -3289,6 +3293,7 @@ static int check_modinfo(struct module *
mod->name); mod->name);
add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK); add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK);
} }
@ -143,7 +143,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/scripts/mod/modpost.c --- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c
@@ -2033,7 +2033,9 @@ static void read_symbols(const char *mod @@ -2034,7 +2034,9 @@ static void read_symbols(const char *mod
symname = remove_dot(info.strtab + sym->st_name); symname = remove_dot(info.strtab + sym->st_name);
handle_symbol(mod, &info, sym, symname); handle_symbol(mod, &info, sym, symname);
@ -153,7 +153,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
} }
for (sym = info.symtab_start; sym < info.symtab_stop; sym++) { for (sym = info.symtab_start; sym < info.symtab_stop; sym++) {
@@ -2212,8 +2214,10 @@ static void add_header(struct buffer *b, @@ -2213,8 +2215,10 @@ static void add_header(struct buffer *b,
buf_printf(b, "BUILD_SALT;\n"); buf_printf(b, "BUILD_SALT;\n");
buf_printf(b, "BUILD_LTO_INFO;\n"); buf_printf(b, "BUILD_LTO_INFO;\n");
buf_printf(b, "\n"); buf_printf(b, "\n");
@ -164,7 +164,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
buf_printf(b, "\n"); buf_printf(b, "\n");
buf_printf(b, "__visible struct module __this_module\n"); buf_printf(b, "__visible struct module __this_module\n");
buf_printf(b, "__section(\".gnu.linkonce.this_module\") = {\n"); buf_printf(b, "__section(\".gnu.linkonce.this_module\") = {\n");
@@ -2230,8 +2234,10 @@ static void add_header(struct buffer *b, @@ -2231,8 +2235,10 @@ static void add_header(struct buffer *b,
static void add_intree_flag(struct buffer *b, int is_intree) static void add_intree_flag(struct buffer *b, int is_intree)
{ {
@ -175,7 +175,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
} }
/* Cannot check for assembler */ /* Cannot check for assembler */
@@ -2244,8 +2250,10 @@ static void add_retpoline(struct buffer @@ -2245,8 +2251,10 @@ static void add_retpoline(struct buffer
static void add_staging_flag(struct buffer *b, const char *name) static void add_staging_flag(struct buffer *b, const char *name)
{ {
@ -186,7 +186,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
} }
/** /**
@@ -2325,11 +2333,13 @@ static void add_depends(struct buffer *b @@ -2326,11 +2334,13 @@ static void add_depends(struct buffer *b
static void add_srcversion(struct buffer *b, struct module *mod) static void add_srcversion(struct buffer *b, struct module *mod)
{ {
@ -200,7 +200,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
} }
static void write_buf(struct buffer *b, const char *fname) static void write_buf(struct buffer *b, const char *fname)
@@ -2578,7 +2588,9 @@ int main(int argc, char **argv) @@ -2579,7 +2589,9 @@ int main(int argc, char **argv)
add_staging_flag(&buf, mod->name); add_staging_flag(&buf, mod->name);
add_versions(&buf, mod); add_versions(&buf, mod);
add_depends(&buf, mod); add_depends(&buf, mod);

View File

@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
} \ } \
\ \
/* __*init sections */ \ /* __*init sections */ \
@@ -1018,6 +1028,8 @@ @@ -1017,6 +1027,8 @@
#define COMMON_DISCARDS \ #define COMMON_DISCARDS \
SANITIZER_DISCARDS \ SANITIZER_DISCARDS \
@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
*(.modinfo) \ *(.modinfo) \
--- a/include/linux/export.h --- a/include/linux/export.h
+++ b/include/linux/export.h +++ b/include/linux/export.h
@@ -82,6 +82,12 @@ struct kernel_symbol { @@ -84,6 +84,12 @@ struct kernel_symbol {
#else #else
@ -80,7 +80,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/* /*
* For every exported symbol, do the following: * For every exported symbol, do the following:
* *
@@ -99,7 +105,7 @@ struct kernel_symbol { @@ -101,7 +107,7 @@ struct kernel_symbol {
extern const char __kstrtab_##sym[]; \ extern const char __kstrtab_##sym[]; \
extern const char __kstrtabns_##sym[]; \ extern const char __kstrtabns_##sym[]; \
__CRC_SYMBOL(sym, sec); \ __CRC_SYMBOL(sym, sec); \
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
"__kstrtabns_" #sym ": \n" \ "__kstrtabns_" #sym ": \n" \
--- a/scripts/Makefile.build --- a/scripts/Makefile.build
+++ b/scripts/Makefile.build +++ b/scripts/Makefile.build
@@ -385,7 +385,7 @@ targets += $(real-dtb-y) $(lib-y) $(alwa @@ -397,7 +397,7 @@ targets += $(real-dtb-y) $(lib-y) $(alwa
# Linker scripts preprocessor (.lds.S -> .lds) # Linker scripts preprocessor (.lds.S -> .lds)
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
quiet_cmd_cpp_lds_S = LDS $@ quiet_cmd_cpp_lds_S = LDS $@

View File

@ -23,7 +23,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
{ {0x02, 0x21}, "lz4", unlz4 }, { {0x02, 0x21}, "lz4", unlz4 },
--- a/scripts/Makefile.lib --- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib +++ b/scripts/Makefile.lib
@@ -413,7 +413,7 @@ quiet_cmd_bzip2 = BZIP2 $@ @@ -402,7 +402,7 @@ quiet_cmd_bzip2 = BZIP2 $@
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
quiet_cmd_lzma = LZMA $@ quiet_cmd_lzma = LZMA $@

View File

@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/netfilter/Kconfig --- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig +++ b/net/netfilter/Kconfig
@@ -243,7 +243,6 @@ config NF_CONNTRACK_FTP @@ -242,7 +242,6 @@ config NF_CONNTRACK_FTP
config NF_CONNTRACK_H323 config NF_CONNTRACK_H323
tristate "H.323 protocol support" tristate "H.323 protocol support"
@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
depends on NETFILTER_ADVANCED depends on NETFILTER_ADVANCED
help help
H.323 is a VoIP signalling protocol from ITU-T. As one of the most H.323 is a VoIP signalling protocol from ITU-T. As one of the most
@@ -1106,7 +1105,6 @@ config NETFILTER_XT_TARGET_SECMARK @@ -1105,7 +1104,6 @@ config NETFILTER_XT_TARGET_SECMARK
config NETFILTER_XT_TARGET_TCPMSS config NETFILTER_XT_TARGET_TCPMSS
tristate '"TCPMSS" target support' tristate '"TCPMSS" target support'

View File

@ -16,7 +16,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
--- a/crypto/Kconfig --- a/crypto/Kconfig
+++ b/crypto/Kconfig +++ b/crypto/Kconfig
@@ -33,7 +33,7 @@ config CRYPTO_FIPS @@ -34,7 +34,7 @@ config CRYPTO_FIPS
this is. this is.
config CRYPTO_ALGAPI config CRYPTO_ALGAPI
@ -25,7 +25,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
select CRYPTO_ALGAPI2 select CRYPTO_ALGAPI2
help help
This option provides the API for cryptographic algorithms. This option provides the API for cryptographic algorithms.
@@ -42,7 +42,7 @@ config CRYPTO_ALGAPI2 @@ -43,7 +43,7 @@ config CRYPTO_ALGAPI2
tristate tristate
config CRYPTO_AEAD config CRYPTO_AEAD
@ -34,7 +34,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
select CRYPTO_AEAD2 select CRYPTO_AEAD2
select CRYPTO_ALGAPI select CRYPTO_ALGAPI
@@ -53,7 +53,7 @@ config CRYPTO_AEAD2 @@ -54,7 +54,7 @@ config CRYPTO_AEAD2
select CRYPTO_RNG2 select CRYPTO_RNG2
config CRYPTO_SKCIPHER config CRYPTO_SKCIPHER
@ -43,7 +43,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
select CRYPTO_SKCIPHER2 select CRYPTO_SKCIPHER2
select CRYPTO_ALGAPI select CRYPTO_ALGAPI
@@ -63,7 +63,7 @@ config CRYPTO_SKCIPHER2 @@ -64,7 +64,7 @@ config CRYPTO_SKCIPHER2
select CRYPTO_RNG2 select CRYPTO_RNG2
config CRYPTO_HASH config CRYPTO_HASH
@ -52,7 +52,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
select CRYPTO_HASH2 select CRYPTO_HASH2
select CRYPTO_ALGAPI select CRYPTO_ALGAPI
@@ -72,7 +72,7 @@ config CRYPTO_HASH2 @@ -73,7 +73,7 @@ config CRYPTO_HASH2
select CRYPTO_ALGAPI2 select CRYPTO_ALGAPI2
config CRYPTO_RNG config CRYPTO_RNG
@ -92,7 +92,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
bool bool
--- a/lib/Kconfig --- a/lib/Kconfig
+++ b/lib/Kconfig +++ b/lib/Kconfig
@@ -438,16 +438,16 @@ config BCH_CONST_T @@ -443,16 +443,16 @@ config BCH_CONST_T
# Textsearch support is select'ed if needed # Textsearch support is select'ed if needed
# #
config TEXTSEARCH config TEXTSEARCH

View File

@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/crypto/Kconfig --- a/crypto/Kconfig
+++ b/crypto/Kconfig +++ b/crypto/Kconfig
@@ -120,13 +120,13 @@ config CRYPTO_MANAGER @@ -121,13 +121,13 @@ config CRYPTO_MANAGER
cbc(aes). cbc(aes).
config CRYPTO_MANAGER2 config CRYPTO_MANAGER2

View File

@ -12,4 +12,4 @@ from backports.
+ tristate "ARC4 cipher library" + tristate "ARC4 cipher library"
config CRYPTO_ARCH_HAVE_LIB_BLAKE2S config CRYPTO_ARCH_HAVE_LIB_BLAKE2S
tristate bool

View File

@ -16,7 +16,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
--- a/arch/powerpc/Makefile --- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile
@@ -61,19 +61,6 @@ machine-$(CONFIG_PPC64) += 64 @@ -44,19 +44,6 @@ machine-$(CONFIG_PPC64) += 64
machine-$(CONFIG_CPU_LITTLE_ENDIAN) += le machine-$(CONFIG_CPU_LITTLE_ENDIAN) += le
UTS_MACHINE := $(subst $(space),,$(machine-y)) UTS_MACHINE := $(subst $(space),,$(machine-y))

View File

@ -12,7 +12,7 @@ Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com>
--- a/net/bridge/br_input.c --- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c +++ b/net/bridge/br_input.c
@@ -108,10 +108,14 @@ int br_handle_frame_finish(struct net *n @@ -115,10 +115,14 @@ int br_handle_frame_finish(struct net *n
} }
} }

View File

@ -47,7 +47,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
depends on !NF_CONNTRACK || NF_CONNTRACK depends on !NF_CONNTRACK || NF_CONNTRACK
--- a/net/netfilter/Kconfig --- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig +++ b/net/netfilter/Kconfig
@@ -708,8 +708,6 @@ config NFT_REJECT_NETDEV @@ -707,8 +707,6 @@ config NFT_REJECT_NETDEV
endif # NF_TABLES_NETDEV endif # NF_TABLES_NETDEV
@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
config NF_FLOW_TABLE_INET config NF_FLOW_TABLE_INET
tristate "Netfilter flow table mixed IPv4/IPv6 module" tristate "Netfilter flow table mixed IPv4/IPv6 module"
depends on NF_FLOW_TABLE depends on NF_FLOW_TABLE
@@ -718,11 +716,12 @@ config NF_FLOW_TABLE_INET @@ -717,11 +715,12 @@ config NF_FLOW_TABLE_INET
To compile it as a module, choose M here. To compile it as a module, choose M here.
@ -70,7 +70,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
help help
This option adds the flow table core infrastructure. This option adds the flow table core infrastructure.
@@ -1011,6 +1010,15 @@ config NETFILTER_XT_TARGET_NOTRACK @@ -1010,6 +1009,15 @@ config NETFILTER_XT_TARGET_NOTRACK
depends on NETFILTER_ADVANCED depends on NETFILTER_ADVANCED
select NETFILTER_XT_TARGET_CT select NETFILTER_XT_TARGET_CT
@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o
--- /dev/null --- /dev/null
+++ b/net/netfilter/xt_FLOWOFFLOAD.c +++ b/net/netfilter/xt_FLOWOFFLOAD.c
@@ -0,0 +1,656 @@ @@ -0,0 +1,696 @@
+/* +/*
+ * Copyright (C) 2018-2021 Felix Fietkau <nbd@nbd.name> + * Copyright (C) 2018-2021 Felix Fietkau <nbd@nbd.name>
+ * + *
@ -110,6 +110,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+#include <linux/init.h> +#include <linux/init.h>
+#include <linux/netfilter.h> +#include <linux/netfilter.h>
+#include <linux/netfilter/xt_FLOWOFFLOAD.h> +#include <linux/netfilter/xt_FLOWOFFLOAD.h>
+#include <linux/if_vlan.h>
+#include <net/ip.h> +#include <net/ip.h>
+#include <net/netfilter/nf_conntrack.h> +#include <net/netfilter/nf_conntrack.h>
+#include <net/netfilter/nf_conntrack_extend.h> +#include <net/netfilter/nf_conntrack_extend.h>
@ -130,6 +131,21 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ struct delayed_work work; + struct delayed_work work;
+}; +};
+ +
+struct nf_forward_info {
+ const struct net_device *indev;
+ const struct net_device *outdev;
+ const struct net_device *hw_outdev;
+ struct id {
+ __u16 id;
+ __be16 proto;
+ } encap[NF_FLOW_TABLE_ENCAP_MAX];
+ u8 num_encaps;
+ u8 ingress_vlans;
+ u8 h_source[ETH_ALEN];
+ u8 h_dest[ETH_ALEN];
+ enum flow_offload_xmit_type xmit_type;
+};
+
+static DEFINE_SPINLOCK(hooks_lock); +static DEFINE_SPINLOCK(hooks_lock);
+ +
+struct xt_flowoffload_table flowtable[2]; +struct xt_flowoffload_table flowtable[2];
@ -138,12 +154,23 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+xt_flowoffload_net_hook(void *priv, struct sk_buff *skb, +xt_flowoffload_net_hook(void *priv, struct sk_buff *skb,
+ const struct nf_hook_state *state) + const struct nf_hook_state *state)
+{ +{
+ struct nf_flowtable *ft = priv; + struct vlan_ethhdr *veth;
+ + __be16 proto;
+ if (!atomic_read(&ft->rhashtable.nelems))
+ return NF_ACCEPT;
+ +
+ switch (skb->protocol) { + switch (skb->protocol) {
+ case htons(ETH_P_8021Q):
+ veth = (struct vlan_ethhdr *)skb_mac_header(skb);
+ proto = veth->h_vlan_encapsulated_proto;
+ break;
+ case htons(ETH_P_PPP_SES):
+ proto = nf_flow_pppoe_proto(skb);
+ break;
+ default:
+ proto = skb->protocol;
+ break;
+ }
+
+ switch (proto) {
+ case htons(ETH_P_IP): + case htons(ETH_P_IP):
+ return nf_flow_offload_ip_hook(priv, skb, state); + return nf_flow_offload_ip_hook(priv, skb, state);
+ case htons(ETH_P_IPV6): + case htons(ETH_P_IPV6):
@ -262,9 +289,11 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+} +}
+ +
+static void +static void
+xt_flowoffload_check_hook(struct flow_offload *flow, void *data) +xt_flowoffload_check_hook(struct nf_flowtable *flowtable,
+ struct flow_offload *flow, void *data)
+{ +{
+ struct xt_flowoffload_table *table = data; + struct xt_flowoffload_table *table;
+ table = container_of(flowtable, struct xt_flowoffload_table, ft);
+ struct flow_offload_tuple *tuple0 = &flow->tuplehash[0].tuple; + struct flow_offload_tuple *tuple0 = &flow->tuplehash[0].tuple;
+ struct flow_offload_tuple *tuple1 = &flow->tuplehash[1].tuple; + struct flow_offload_tuple *tuple1 = &flow->tuplehash[1].tuple;
+ struct xt_flowoffload_hook *hook; + struct xt_flowoffload_hook *hook;
@ -296,7 +325,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ spin_unlock_bh(&hooks_lock); + spin_unlock_bh(&hooks_lock);
+ +
+ err = nf_flow_table_iterate(&table->ft, xt_flowoffload_check_hook, + err = nf_flow_table_iterate(&table->ft, xt_flowoffload_check_hook,
+ table); + NULL);
+ if (err && err != -EAGAIN) + if (err && err != -EAGAIN)
+ goto out; + goto out;
+ +
@ -323,7 +352,26 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ return false; + return false;
+} +}
+ +
+static bool flow_is_valid_ether_device(const struct net_device *dev) +static enum flow_offload_xmit_type nf_xmit_type(struct dst_entry *dst)
+{
+ if (dst_xfrm(dst))
+ return FLOW_OFFLOAD_XMIT_XFRM;
+
+ return FLOW_OFFLOAD_XMIT_NEIGH;
+}
+
+static void nf_default_forward_path(struct nf_flow_route *route,
+ struct dst_entry *dst_cache,
+ enum ip_conntrack_dir dir,
+ struct net_device **dev)
+{
+ dev[!dir] = dst_cache->dev;
+ route->tuple[!dir].in.ifindex = dst_cache->dev->ifindex;
+ route->tuple[dir].dst = dst_cache;
+ route->tuple[dir].xmit_type = nf_xmit_type(dst_cache);
+}
+
+static bool nf_is_valid_ether_device(const struct net_device *dev)
+{ +{
+ if (!dev || (dev->flags & IFF_LOOPBACK) || dev->type != ARPHRD_ETHER || + if (!dev || (dev->flags & IFF_LOOPBACK) || dev->type != ARPHRD_ETHER ||
+ dev->addr_len != ETH_ALEN || !is_valid_ether_addr(dev->dev_addr)) + dev->addr_len != ETH_ALEN || !is_valid_ether_addr(dev->dev_addr))
@ -332,174 +380,181 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ return true; + return true;
+} +}
+ +
+static void +static void nf_dev_path_info(const struct net_device_path_stack *stack,
+xt_flowoffload_route_check_path(struct nf_flow_route *route, + struct nf_forward_info *info,
+ const struct nf_conn *ct, + unsigned char *ha)
+ enum ip_conntrack_dir dir,
+ struct net_device **out_dev)
+{ +{
+ const struct dst_entry *dst = route->tuple[dir].dst; + const struct net_device_path *path;
+ const void *daddr = &ct->tuplehash[!dir].tuple.src.u3;
+ struct net_device_path_stack stack;
+ enum net_device_path_type prev_type;
+ struct net_device *dev = dst->dev;
+ struct neighbour *n;
+ bool last = false;
+ u8 nud_state;
+ int i; + int i;
+ +
+ route->tuple[!dir].in.ifindex = dev->ifindex; + memcpy(info->h_dest, ha, ETH_ALEN);
+ route->tuple[dir].out.ifindex = dev->ifindex;
+
+ if (route->tuple[dir].xmit_type == FLOW_OFFLOAD_XMIT_XFRM)
+ return;
+
+ if ((dev->flags & IFF_LOOPBACK) ||
+ dev->type != ARPHRD_ETHER || dev->addr_len != ETH_ALEN ||
+ !is_valid_ether_addr(dev->dev_addr))
+ return;
+
+ n = dst_neigh_lookup(dst, daddr);
+ if (!n)
+ return;
+
+ read_lock_bh(&n->lock);
+ nud_state = n->nud_state;
+ memcpy(route->tuple[dir].out.h_dest, n->ha, ETH_ALEN);
+ read_unlock_bh(&n->lock);
+ neigh_release(n);
+
+ if (!(nud_state & NUD_VALID))
+ return;
+
+ if (dev_fill_forward_path(dev, route->tuple[dir].out.h_dest, &stack) ||
+ !stack.num_paths)
+ return;
+
+ prev_type = DEV_PATH_ETHERNET;
+ for (i = 0; i <= stack.num_paths; i++) {
+ const struct net_device_path *path = &stack.path[i];
+ int n_encaps = route->tuple[!dir].in.num_encaps;
+
+ dev = (struct net_device *)path->dev;
+ if (flow_is_valid_ether_device(dev)) {
+ if (route->tuple[dir].xmit_type != FLOW_OFFLOAD_XMIT_DIRECT) {
+ memcpy(route->tuple[dir].out.h_source,
+ dev->dev_addr, ETH_ALEN);
+ route->tuple[dir].out.ifindex = dev->ifindex;
+ }
+ route->tuple[dir].xmit_type = FLOW_OFFLOAD_XMIT_DIRECT;
+ }
+ +
+ for (i = 0; i < stack->num_paths; i++) {
+ path = &stack->path[i];
+ switch (path->type) { + switch (path->type) {
+ case DEV_PATH_PPPOE: + case DEV_PATH_ETHERNET:
+ case DEV_PATH_DSA:
+ case DEV_PATH_VLAN: + case DEV_PATH_VLAN:
+ if (n_encaps >= NF_FLOW_TABLE_ENCAP_MAX || + case DEV_PATH_PPPOE:
+ i == stack.num_paths) { + info->indev = path->dev;
+ last = true; + if (is_zero_ether_addr(info->h_source))
+ memcpy(info->h_source, path->dev->dev_addr, ETH_ALEN);
+
+ if (path->type == DEV_PATH_ETHERNET)
+ break;
+ if (path->type == DEV_PATH_DSA) {
+ i = stack->num_paths;
+ break; + break;
+ } + }
+ +
+ route->tuple[!dir].in.num_encaps++; + /* DEV_PATH_VLAN and DEV_PATH_PPPOE */
+ route->tuple[!dir].in.encap[n_encaps].id = path->encap.id; + if (info->num_encaps >= NF_FLOW_TABLE_ENCAP_MAX) {
+ route->tuple[!dir].in.encap[n_encaps].proto = path->encap.proto; + info->indev = NULL;
+ break;
+ }
+ if (!info->outdev)
+ info->outdev = path->dev;
+ info->encap[info->num_encaps].id = path->encap.id;
+ info->encap[info->num_encaps].proto = path->encap.proto;
+ info->num_encaps++;
+ if (path->type == DEV_PATH_PPPOE) + if (path->type == DEV_PATH_PPPOE)
+ memcpy(route->tuple[dir].out.h_dest, + memcpy(info->h_dest, path->encap.h_dest, ETH_ALEN);
+ path->encap.h_dest, ETH_ALEN);
+ break; + break;
+ case DEV_PATH_BRIDGE: + case DEV_PATH_BRIDGE:
+ switch (path->bridge.vlan_mode) { + if (is_zero_ether_addr(info->h_source))
+ case DEV_PATH_BR_VLAN_TAG: + memcpy(info->h_source, path->dev->dev_addr, ETH_ALEN);
+ if (n_encaps >= NF_FLOW_TABLE_ENCAP_MAX ||
+ i == stack.num_paths) {
+ last = true;
+ break;
+ }
+ +
+ route->tuple[!dir].in.num_encaps++; + switch (path->bridge.vlan_mode) {
+ route->tuple[!dir].in.encap[n_encaps].id = + case DEV_PATH_BR_VLAN_UNTAG_HW:
+ path->bridge.vlan_id; + info->ingress_vlans |= BIT(info->num_encaps - 1);
+ route->tuple[!dir].in.encap[n_encaps].proto = + break;
+ path->bridge.vlan_proto; + case DEV_PATH_BR_VLAN_TAG:
+ info->encap[info->num_encaps].id = path->bridge.vlan_id;
+ info->encap[info->num_encaps].proto = path->bridge.vlan_proto;
+ info->num_encaps++;
+ break; + break;
+ case DEV_PATH_BR_VLAN_UNTAG: + case DEV_PATH_BR_VLAN_UNTAG:
+ route->tuple[!dir].in.num_encaps--; + info->num_encaps--;
+ break;
+ case DEV_PATH_BR_VLAN_UNTAG_HW:
+ route->tuple[!dir].in.ingress_vlans |= BIT(n_encaps - 1);
+ break; + break;
+ case DEV_PATH_BR_VLAN_KEEP: + case DEV_PATH_BR_VLAN_KEEP:
+ break; + break;
+ } + }
+ break; + break;
+ default: + default:
+ last = true; + info->indev = NULL;
+ break; + break;
+ } + }
+
+ if (last)
+ break;
+ } + }
+ if (!info->outdev)
+ info->outdev = info->indev;
+ +
+ *out_dev = dev; + info->hw_outdev = info->indev;
+ route->tuple[dir].out.hw_ifindex = dev->ifindex; +
+ route->tuple[!dir].in.ifindex = dev->ifindex; + if (nf_is_valid_ether_device(info->indev))
+ info->xmit_type = FLOW_OFFLOAD_XMIT_DIRECT;
+} +}
+ +
+static int +static int nf_dev_fill_forward_path(const struct nf_flow_route *route,
+xt_flowoffload_route_dir(struct nf_flow_route *route, const struct nf_conn *ct, + const struct dst_entry *dst_cache,
+ enum ip_conntrack_dir dir, + const struct nf_conn *ct,
+ const struct xt_action_param *par, int ifindex) + enum ip_conntrack_dir dir, u8 *ha,
+ struct net_device_path_stack *stack)
+{ +{
+ struct dst_entry *dst = NULL; + const void *daddr = &ct->tuplehash[!dir].tuple.src.u3;
+ struct flowi fl; + struct net_device *dev = dst_cache->dev;
+ struct neighbour *n;
+ u8 nud_state;
+ +
+ memset(&fl, 0, sizeof(fl)); + if (!nf_is_valid_ether_device(dev))
+ switch (xt_family(par)) { + goto out;
+ case NFPROTO_IPV4: +
+ fl.u.ip4.daddr = ct->tuplehash[!dir].tuple.src.u3.ip; + n = dst_neigh_lookup(dst_cache, daddr);
+ fl.u.ip4.flowi4_oif = ifindex; + if (!n)
+ break; + return -1;
+ case NFPROTO_IPV6: +
+ fl.u.ip6.saddr = ct->tuplehash[!dir].tuple.dst.u3.in6; + read_lock_bh(&n->lock);
+ fl.u.ip6.daddr = ct->tuplehash[!dir].tuple.src.u3.in6; + nud_state = n->nud_state;
+ fl.u.ip6.flowi6_oif = ifindex; + ether_addr_copy(ha, n->ha);
+ break; + read_unlock_bh(&n->lock);
+ neigh_release(n);
+
+ if (!(nud_state & NUD_VALID))
+ return -1;
+
+out:
+ return dev_fill_forward_path(dev, ha, stack);
+}
+
+static void nf_dev_forward_path(struct nf_flow_route *route,
+ const struct nf_conn *ct,
+ enum ip_conntrack_dir dir,
+ struct net_device **devs)
+{
+ const struct dst_entry *dst = route->tuple[dir].dst;
+ struct net_device_path_stack stack;
+ struct nf_forward_info info = {};
+ unsigned char ha[ETH_ALEN];
+ int i;
+
+ if (nf_dev_fill_forward_path(route, dst, ct, dir, ha, &stack) >= 0)
+ nf_dev_path_info(&stack, &info, ha);
+
+ devs[!dir] = (struct net_device *)info.indev;
+ if (!info.indev)
+ return;
+
+ route->tuple[!dir].in.ifindex = info.indev->ifindex;
+ for (i = 0; i < info.num_encaps; i++) {
+ route->tuple[!dir].in.encap[i].id = info.encap[i].id;
+ route->tuple[!dir].in.encap[i].proto = info.encap[i].proto;
+ } + }
+ route->tuple[!dir].in.num_encaps = info.num_encaps;
+ route->tuple[!dir].in.ingress_vlans = info.ingress_vlans;
+ +
+ nf_route(xt_net(par), &dst, &fl, false, xt_family(par)); + if (info.xmit_type == FLOW_OFFLOAD_XMIT_DIRECT) {
+ if (!dst) + memcpy(route->tuple[dir].out.h_source, info.h_source, ETH_ALEN);
+ return -ENOENT; + memcpy(route->tuple[dir].out.h_dest, info.h_dest, ETH_ALEN);
+ + route->tuple[dir].out.ifindex = info.outdev->ifindex;
+ route->tuple[dir].dst = dst; + route->tuple[dir].out.hw_ifindex = info.hw_outdev->ifindex;
+ if (dst_xfrm(dst)) + route->tuple[dir].xmit_type = info.xmit_type;
+ route->tuple[dir].xmit_type = FLOW_OFFLOAD_XMIT_XFRM; + }
+ else
+ route->tuple[dir].xmit_type = FLOW_OFFLOAD_XMIT_NEIGH;
+
+ return 0;
+} +}
+ +
+static int +static int
+xt_flowoffload_route(struct sk_buff *skb, const struct nf_conn *ct, +xt_flowoffload_route(struct sk_buff *skb, const struct nf_conn *ct,
+ const struct xt_action_param *par, + const struct xt_action_param *par,
+ struct nf_flow_route *route, enum ip_conntrack_dir dir, + struct nf_flow_route *route, enum ip_conntrack_dir dir,
+ struct net_device **dev) + struct net_device **devs)
+{ +{
+ int ret; + struct dst_entry *this_dst = skb_dst(skb);
+ struct dst_entry *other_dst = NULL;
+ struct flowi fl;
+ +
+ ret = xt_flowoffload_route_dir(route, ct, dir, par, + memset(&fl, 0, sizeof(fl));
+ dev[dir]->ifindex); + switch (xt_family(par)) {
+ if (ret) + case NFPROTO_IPV4:
+ return ret; + fl.u.ip4.daddr = ct->tuplehash[dir].tuple.src.u3.ip;
+ fl.u.ip4.flowi4_oif = xt_in(par)->ifindex;
+ break;
+ case NFPROTO_IPV6:
+ fl.u.ip6.saddr = ct->tuplehash[!dir].tuple.dst.u3.in6;
+ fl.u.ip6.daddr = ct->tuplehash[dir].tuple.src.u3.in6;
+ fl.u.ip6.flowi6_oif = xt_in(par)->ifindex;
+ break;
+ }
+ +
+ ret = xt_flowoffload_route_dir(route, ct, !dir, par, + nf_route(xt_net(par), &other_dst, &fl, false, xt_family(par));
+ dev[!dir]->ifindex); + if (!other_dst)
+ if (ret) + return -ENOENT;
+ return ret;
+ +
+ xt_flowoffload_route_check_path(route, ct, dir, &dev[!dir]); + nf_default_forward_path(route, this_dst, dir, devs);
+ xt_flowoffload_route_check_path(route, ct, !dir, &dev[dir]); + nf_default_forward_path(route, other_dst, !dir, devs);
+
+ if (route->tuple[dir].xmit_type == FLOW_OFFLOAD_XMIT_NEIGH &&
+ route->tuple[!dir].xmit_type == FLOW_OFFLOAD_XMIT_NEIGH) {
+ nf_dev_forward_path(route, ct, dir, devs);
+ nf_dev_forward_path(route, ct, !dir, devs);
+ }
+ +
+ return 0; + return 0;
+} +}
@ -542,7 +597,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ } + }
+ +
+ if (nf_ct_ext_exist(ct, NF_CT_EXT_HELPER) || + if (nf_ct_ext_exist(ct, NF_CT_EXT_HELPER) ||
+ ct->status & IPS_SEQ_ADJUST) + ct->status & (IPS_SEQ_ADJUST | IPS_NAT_CLASH))
+ return XT_CONTINUE; + return XT_CONTINUE;
+ +
+ if (!nf_ct_is_confirmed(ct)) + if (!nf_ct_is_confirmed(ct))
@ -575,17 +630,17 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ } + }
+ +
+ table = &flowtable[!!(info->flags & XT_FLOWOFFLOAD_HW)]; + table = &flowtable[!!(info->flags & XT_FLOWOFFLOAD_HW)];
+
+ net = read_pnet(&table->ft.net);
+ if (!net)
+ write_pnet(&table->ft.net, xt_net(par));
+
+ if (flow_offload_add(&table->ft, flow) < 0) + if (flow_offload_add(&table->ft, flow) < 0)
+ goto err_flow_add; + goto err_flow_add;
+ +
+ xt_flowoffload_check_device(table, devs[0]); + xt_flowoffload_check_device(table, devs[0]);
+ xt_flowoffload_check_device(table, devs[1]); + xt_flowoffload_check_device(table, devs[1]);
+ +
+ net = read_pnet(&table->ft.net);
+ if (!net)
+ write_pnet(&table->ft.net, xt_net(par));
+
+ dst_release(route.tuple[dir].dst);
+ dst_release(route.tuple[!dir].dst); + dst_release(route.tuple[!dir].dst);
+ +
+ return XT_CONTINUE; + return XT_CONTINUE;
@ -593,7 +648,6 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+err_flow_add: +err_flow_add:
+ flow_offload_free(flow); + flow_offload_free(flow);
+err_flow_alloc: +err_flow_alloc:
+ dst_release(route.tuple[dir].dst);
+ dst_release(route.tuple[!dir].dst); + dst_release(route.tuple[!dir].dst);
+err_flow_route: +err_flow_route:
+ clear_bit(IPS_OFFLOAD_BIT, &ct->status); + clear_bit(IPS_OFFLOAD_BIT, &ct->status);
@ -660,20 +714,6 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ .notifier_call = flow_offload_netdev_event, + .notifier_call = flow_offload_netdev_event,
+}; +};
+ +
+static unsigned int
+nf_flow_offload_inet_hook(void *priv, struct sk_buff *skb,
+ const struct nf_hook_state *state)
+{
+ switch (skb->protocol) {
+ case htons(ETH_P_IP):
+ return nf_flow_offload_ip_hook(priv, skb, state);
+ case htons(ETH_P_IPV6):
+ return nf_flow_offload_ipv6_hook(priv, skb, state);
+ }
+
+ return NF_ACCEPT;
+}
+
+static int nf_flow_rule_route_inet(struct net *net, +static int nf_flow_rule_route_inet(struct net *net,
+ const struct flow_offload *flow, + const struct flow_offload *flow,
+ enum flow_offload_tuple_dir dir, + enum flow_offload_tuple_dir dir,
@ -703,7 +743,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ .setup = nf_flow_table_offload_setup, + .setup = nf_flow_table_offload_setup,
+ .action = nf_flow_rule_route_inet, + .action = nf_flow_rule_route_inet,
+ .free = nf_flow_table_free, + .free = nf_flow_table_free,
+ .hook = nf_flow_offload_inet_hook, + .hook = xt_flowoffload_net_hook,
+ .owner = THIS_MODULE, + .owner = THIS_MODULE,
+}; +};
+ +
@ -765,23 +805,23 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#include <net/netfilter/nf_flow_table.h> #include <net/netfilter/nf_flow_table.h>
#include <net/netfilter/nf_conntrack.h> #include <net/netfilter/nf_conntrack.h>
#include <net/netfilter/nf_conntrack_core.h> #include <net/netfilter/nf_conntrack_core.h>
@@ -397,8 +396,7 @@ flow_offload_lookup(struct nf_flowtable @@ -380,8 +379,7 @@ flow_offload_lookup(struct nf_flowtable
} }
EXPORT_SYMBOL_GPL(flow_offload_lookup); EXPORT_SYMBOL_GPL(flow_offload_lookup);
-static int -static int
-nf_flow_table_iterate(struct nf_flowtable *flow_table, -nf_flow_table_iterate(struct nf_flowtable *flow_table,
+int nf_flow_table_iterate(struct nf_flowtable *flow_table, +int nf_flow_table_iterate(struct nf_flowtable *flow_table,
void (*iter)(struct flow_offload *flow, void *data), void (*iter)(struct nf_flowtable *flowtable,
struct flow_offload *flow, void *data),
void *data) void *data)
{ @@ -435,6 +433,7 @@ static void nf_flow_offload_gc_step(stru
@@ -430,6 +428,7 @@ nf_flow_table_iterate(struct nf_flowtabl nf_flow_offload_stats(flow_table, flow);
}
return err;
} }
+EXPORT_SYMBOL_GPL(nf_flow_table_iterate); +EXPORT_SYMBOL_GPL(nf_flow_table_iterate);
static bool flow_offload_stale_dst(struct flow_offload_tuple *tuple) void nf_flow_table_gc_run(struct nf_flowtable *flow_table)
{ {
--- /dev/null --- /dev/null
+++ b/include/uapi/linux/netfilter/xt_FLOWOFFLOAD.h +++ b/include/uapi/linux/netfilter/xt_FLOWOFFLOAD.h
@ -805,12 +845,13 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+#endif /* _XT_FLOWOFFLOAD_H */ +#endif /* _XT_FLOWOFFLOAD_H */
--- a/include/net/netfilter/nf_flow_table.h --- a/include/net/netfilter/nf_flow_table.h
+++ b/include/net/netfilter/nf_flow_table.h +++ b/include/net/netfilter/nf_flow_table.h
@@ -273,6 +273,10 @@ void nf_flow_table_free(struct nf_flowta @@ -276,6 +276,11 @@ void nf_flow_table_free(struct nf_flowta
void flow_offload_teardown(struct flow_offload *flow); void flow_offload_teardown(struct flow_offload *flow);
+int nf_flow_table_iterate(struct nf_flowtable *flow_table, +int nf_flow_table_iterate(struct nf_flowtable *flow_table,
+ void (*iter)(struct flow_offload *flow, void *data), + void (*iter)(struct nf_flowtable *flowtable,
+ struct flow_offload *flow, void *data),
+ void *data); + void *data);
+ +
void nf_flow_snat_port(const struct flow_offload *flow, void nf_flow_snat_port(const struct flow_offload *flow,

View File

@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/include/net/sch_generic.h --- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h +++ b/include/net/sch_generic.h
@@ -624,12 +624,13 @@ extern struct Qdisc_ops noop_qdisc_ops; @@ -610,12 +610,13 @@ extern struct Qdisc_ops noop_qdisc_ops;
extern struct Qdisc_ops pfifo_fast_ops; extern struct Qdisc_ops pfifo_fast_ops;
extern struct Qdisc_ops mq_qdisc_ops; extern struct Qdisc_ops mq_qdisc_ops;
extern struct Qdisc_ops noqueue_qdisc_ops; extern struct Qdisc_ops noqueue_qdisc_ops;
@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
EXPORT_SYMBOL(default_qdisc_ops); EXPORT_SYMBOL(default_qdisc_ops);
static void qdisc_maybe_clear_missed(struct Qdisc *q, static void qdisc_maybe_clear_missed(struct Qdisc *q,
@@ -1088,12 +1088,12 @@ static void attach_one_default_qdisc(str @@ -1103,12 +1103,12 @@ static void attach_one_default_qdisc(str
void *_unused) void *_unused)
{ {
struct Qdisc *qdisc; struct Qdisc *qdisc;

View File

@ -20,7 +20,7 @@ Signed-off-by: Birger Koblitz <git@birger-koblitz.de>
#define MDIO_PHYXS_VEND_IF_STATUS 0xe812 #define MDIO_PHYXS_VEND_IF_STATUS 0xe812
#define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK GENMASK(7, 3) #define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK GENMASK(7, 3)
@@ -359,6 +361,49 @@ static int aqr107_read_rate(struct phy_d @@ -381,6 +383,49 @@ static int aqr107_read_rate(struct phy_d
return 0; return 0;
} }
@ -70,7 +70,7 @@ Signed-off-by: Birger Koblitz <git@birger-koblitz.de>
static int aqr107_read_status(struct phy_device *phydev) static int aqr107_read_status(struct phy_device *phydev)
{ {
int val, ret; int val, ret;
@@ -489,7 +534,7 @@ static void aqr107_chip_info(struct phy_ @@ -511,7 +556,7 @@ static void aqr107_chip_info(struct phy_
build_id = FIELD_GET(VEND1_GLOBAL_RSVD_STAT1_FW_BUILD_ID, val); build_id = FIELD_GET(VEND1_GLOBAL_RSVD_STAT1_FW_BUILD_ID, val);
prov_id = FIELD_GET(VEND1_GLOBAL_RSVD_STAT1_PROV_ID, val); prov_id = FIELD_GET(VEND1_GLOBAL_RSVD_STAT1_PROV_ID, val);
@ -79,7 +79,7 @@ Signed-off-by: Birger Koblitz <git@birger-koblitz.de>
fw_major, fw_minor, build_id, prov_id); fw_major, fw_minor, build_id, prov_id);
} }
@@ -661,6 +706,24 @@ static struct phy_driver aqr_driver[] = @@ -719,6 +764,24 @@ static struct phy_driver aqr_driver[] =
.link_change_notify = aqr107_link_change_notify, .link_change_notify = aqr107_link_change_notify,
}, },
{ {
@ -104,7 +104,7 @@ Signed-off-by: Birger Koblitz <git@birger-koblitz.de>
PHY_ID_MATCH_MODEL(PHY_ID_AQCS109), PHY_ID_MATCH_MODEL(PHY_ID_AQCS109),
.name = "Aquantia AQCS109", .name = "Aquantia AQCS109",
.probe = aqr107_probe, .probe = aqr107_probe,
@@ -686,6 +749,24 @@ static struct phy_driver aqr_driver[] = @@ -744,6 +807,24 @@ static struct phy_driver aqr_driver[] =
.handle_interrupt = aqr_handle_interrupt, .handle_interrupt = aqr_handle_interrupt,
.read_status = aqr_read_status, .read_status = aqr_read_status,
}, },
@ -129,7 +129,7 @@ Signed-off-by: Birger Koblitz <git@birger-koblitz.de>
}; };
module_phy_driver(aqr_driver); module_phy_driver(aqr_driver);
@@ -696,8 +777,10 @@ static struct mdio_device_id __maybe_unu @@ -754,8 +835,10 @@ static struct mdio_device_id __maybe_unu
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR105) }, { PHY_ID_MATCH_MODEL(PHY_ID_AQR105) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR106) }, { PHY_ID_MATCH_MODEL(PHY_ID_AQR106) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR107) }, { PHY_ID_MATCH_MODEL(PHY_ID_AQR107) },

View File

@ -19,8 +19,8 @@ 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
@@ -1648,6 +1648,10 @@ enum netdev_priv_flags { @@ -1662,6 +1662,10 @@ enum netdev_priv_flags {
IFF_TX_SKB_NO_LINEAR = 1<<31, IFF_TX_SKB_NO_LINEAR = BIT_ULL(31),
}; };
+enum netdev_extra_priv_flags { +enum netdev_extra_priv_flags {
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN #define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
#define IFF_EBRIDGE IFF_EBRIDGE #define IFF_EBRIDGE IFF_EBRIDGE
#define IFF_BONDING IFF_BONDING #define IFF_BONDING IFF_BONDING
@@ -1680,6 +1684,7 @@ enum netdev_priv_flags { @@ -1694,6 +1698,7 @@ enum netdev_priv_flags {
#define IFF_L3MDEV_RX_HANDLER IFF_L3MDEV_RX_HANDLER #define IFF_L3MDEV_RX_HANDLER IFF_L3MDEV_RX_HANDLER
#define IFF_LIVE_RENAME_OK IFF_LIVE_RENAME_OK #define IFF_LIVE_RENAME_OK IFF_LIVE_RENAME_OK
#define IFF_TX_SKB_NO_LINEAR IFF_TX_SKB_NO_LINEAR #define IFF_TX_SKB_NO_LINEAR IFF_TX_SKB_NO_LINEAR
@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/* Specifies the type of the struct net_device::ml_priv pointer */ /* Specifies the type of the struct net_device::ml_priv pointer */
enum netdev_ml_priv_type { enum netdev_ml_priv_type {
@@ -1981,6 +1986,7 @@ struct net_device { @@ -1995,6 +2000,7 @@ struct net_device {
/* Read-mostly cache-line for fast-path access */ /* Read-mostly cache-line for fast-path access */
unsigned int flags; unsigned int flags;
unsigned int priv_flags; unsigned int priv_flags;
@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
const struct net_device_ops *netdev_ops; const struct net_device_ops *netdev_ops;
int ifindex; int ifindex;
unsigned short gflags; unsigned short gflags;
@@ -2041,6 +2047,11 @@ struct net_device { @@ -2055,6 +2061,11 @@ struct net_device {
const struct tlsdev_ops *tlsdev_ops; const struct tlsdev_ops *tlsdev_ops;
#endif #endif
@ -58,7 +58,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
const struct header_ops *header_ops; const struct header_ops *header_ops;
unsigned char operstate; unsigned char operstate;
@@ -2115,6 +2126,10 @@ struct net_device { @@ -2129,6 +2140,10 @@ struct net_device {
struct mctp_dev __rcu *mctp_ptr; struct mctp_dev __rcu *mctp_ptr;
#endif #endif
@ -71,7 +71,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
@@ -2761,6 +2761,10 @@ static inline int pskb_trim(struct sk_bu @@ -2851,6 +2851,10 @@ static inline int pskb_trim(struct sk_bu
return (len < skb->len) ? __pskb_trim(skb, len) : 0; return (len < skb->len) ? __pskb_trim(skb, len) : 0;
} }
@ -82,7 +82,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/** /**
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer * pskb_trim_unique - remove end from a paged unique (not cloned) buffer
* @skb: buffer to alter * @skb: buffer to alter
@@ -2911,16 +2915,6 @@ static inline struct sk_buff *dev_alloc_ @@ -3001,16 +3005,6 @@ static inline struct sk_buff *dev_alloc_
} }
@ -116,7 +116,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
help help
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -3578,6 +3578,11 @@ static int xmit_one(struct sk_buff *skb, @@ -3584,6 +3584,11 @@ static int xmit_one(struct sk_buff *skb,
if (dev_nit_active(dev)) if (dev_nit_active(dev))
dev_queue_xmit_nit(skb, dev); dev_queue_xmit_nit(skb, dev);

View File

@ -22,7 +22,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
#include <linux/crc32.h> #include <linux/crc32.h>
#include <linux/if_vlan.h> #include <linux/if_vlan.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
@@ -6852,6 +6853,22 @@ static void rtl_tally_reset(struct r8152 @@ -6861,6 +6862,22 @@ static void rtl_tally_reset(struct r8152
ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data); ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data);
} }
@ -45,7 +45,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
static void r8152b_init(struct r8152 *tp) static void r8152b_init(struct r8152 *tp)
{ {
u32 ocp_data; u32 ocp_data;
@@ -6893,6 +6910,8 @@ static void r8152b_init(struct r8152 *tp @@ -6902,6 +6919,8 @@ static void r8152b_init(struct r8152 *tp
ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL); ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN); ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN);
ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data); ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
@ -54,7 +54,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
} }
static void r8153_init(struct r8152 *tp) static void r8153_init(struct r8152 *tp)
@@ -7033,6 +7052,8 @@ static void r8153_init(struct r8152 *tp) @@ -7042,6 +7061,8 @@ static void r8153_init(struct r8152 *tp)
tp->coalesce = COALESCE_SLOW; tp->coalesce = COALESCE_SLOW;
break; break;
} }
@ -63,7 +63,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
} }
static void r8153b_init(struct r8152 *tp) static void r8153b_init(struct r8152 *tp)
@@ -7115,6 +7136,8 @@ static void r8153b_init(struct r8152 *tp @@ -7124,6 +7145,8 @@ static void r8153b_init(struct r8152 *tp
rtl_tally_reset(tp); rtl_tally_reset(tp);
tp->coalesce = 15000; /* 15 us */ tp->coalesce = 15000; /* 15 us */

View File

@ -15,7 +15,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
#include "gpiolib.h" #include "gpiolib.h"
#include "gpiolib-of.h" #include "gpiolib-of.h"
@@ -1052,3 +1054,72 @@ void of_gpio_dev_init(struct gpio_chip * @@ -1059,3 +1061,72 @@ void of_gpio_dev_init(struct gpio_chip *
else else
gc->of_node = gdev->dev.of_node; gc->of_node = gdev->dev.of_node;
} }

View File

@ -330,7 +330,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/core/sock.c --- a/net/core/sock.c
+++ b/net/core/sock.c +++ b/net/core/sock.c
@@ -3855,6 +3855,8 @@ static __net_initdata struct pernet_oper @@ -3857,6 +3857,8 @@ static __net_initdata struct pernet_oper
static int __init proto_init(void) static int __init proto_init(void)
{ {
@ -341,7 +341,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/ipv4/fib_trie.c --- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c
@@ -3019,11 +3019,13 @@ static const struct seq_operations fib_r @@ -3022,11 +3022,13 @@ static const struct seq_operations fib_r
int __net_init fib_proc_init(struct net *net) int __net_init fib_proc_init(struct net *net)
{ {
@ -357,7 +357,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
fib_triestat_seq_show, NULL)) fib_triestat_seq_show, NULL))
goto out2; goto out2;
@@ -3034,17 +3036,21 @@ int __net_init fib_proc_init(struct net @@ -3037,17 +3039,21 @@ int __net_init fib_proc_init(struct net
return 0; return 0;
out3: out3:

View File

@ -63,7 +63,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+dma-shared-buffer-objs := $(dma-buf-objs-y) +dma-shared-buffer-objs := $(dma-buf-objs-y)
--- a/drivers/dma-buf/dma-buf.c --- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c
@@ -1498,4 +1498,5 @@ static void __exit dma_buf_deinit(void) @@ -1513,4 +1513,5 @@ static void __exit dma_buf_deinit(void)
kern_unmount(dma_buf_mnt); kern_unmount(dma_buf_mnt);
dma_buf_uninit_sysfs_statistics(); dma_buf_uninit_sysfs_statistics();
} }
@ -72,7 +72,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL");
--- a/kernel/sched/core.c --- a/kernel/sched/core.c
+++ b/kernel/sched/core.c +++ b/kernel/sched/core.c
@@ -4174,6 +4174,7 @@ int wake_up_state(struct task_struct *p, @@ -4184,6 +4184,7 @@ int wake_up_state(struct task_struct *p,
{ {
return try_to_wake_up(p, state, 0); return try_to_wake_up(p, state, 0);
} }

View File

@ -93,7 +93,7 @@ Signed-off-by: Zhi Chen <zhichen@codeaurora.org>
#if defined(CONFIG_NF_CONNTRACK_LABELS) #if defined(CONFIG_NF_CONNTRACK_LABELS)
--- a/net/netfilter/Kconfig --- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig +++ b/net/netfilter/Kconfig
@@ -151,6 +151,14 @@ config NF_CONNTRACK_EVENTS @@ -150,6 +150,14 @@ config NF_CONNTRACK_EVENTS
If unsure, say `N'. If unsure, say `N'.
@ -110,7 +110,7 @@ Signed-off-by: Zhi Chen <zhichen@codeaurora.org>
depends on NETFILTER_ADVANCED depends on NETFILTER_ADVANCED
--- a/net/netfilter/nf_conntrack_core.c --- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c
@@ -2827,6 +2827,10 @@ int nf_conntrack_init_net(struct net *ne @@ -2878,6 +2878,10 @@ int nf_conntrack_init_net(struct net *ne
nf_conntrack_helper_pernet_init(net); nf_conntrack_helper_pernet_init(net);
nf_conntrack_proto_pernet_init(net); nf_conntrack_proto_pernet_init(net);

View File

@ -12,7 +12,7 @@
struct list_head *br_ip_list); struct list_head *br_ip_list);
--- a/include/linux/skbuff.h --- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h +++ b/include/linux/skbuff.h
@@ -877,6 +877,10 @@ struct sk_buff { @@ -912,6 +912,10 @@ struct sk_buff {
#endif #endif
__u8 slow_gro:1; __u8 slow_gro:1;
@ -92,7 +92,7 @@
struct net_bridge_port *p; struct net_bridge_port *p;
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -3574,9 +3574,17 @@ static int xmit_one(struct sk_buff *skb, @@ -3580,9 +3580,17 @@ static int xmit_one(struct sk_buff *skb,
{ {
unsigned int len; unsigned int len;
int rc; int rc;
@ -111,7 +111,7 @@
#ifdef CONFIG_ETHERNET_PACKET_MANGLE #ifdef CONFIG_ETHERNET_PACKET_MANGLE
if (dev->eth_mangle_tx && !(skb = dev->eth_mangle_tx(dev, skb))) if (dev->eth_mangle_tx && !(skb = dev->eth_mangle_tx(dev, skb)))
@@ -5203,6 +5211,11 @@ void netdev_rx_handler_unregister(struct @@ -5211,6 +5219,11 @@ void netdev_rx_handler_unregister(struct
} }
EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister); EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister);
@ -123,7 +123,7 @@
/* /*
* Limit the use of PFMEMALLOC reserves to those protocols that implement * Limit the use of PFMEMALLOC reserves to those protocols that implement
* the special handling of PFMEMALLOC skbs. * the special handling of PFMEMALLOC skbs.
@@ -5251,6 +5264,10 @@ static int __netif_receive_skb_core(stru @@ -5259,6 +5272,10 @@ static int __netif_receive_skb_core(stru
int ret = NET_RX_DROP; int ret = NET_RX_DROP;
__be16 type; __be16 type;
@ -131,10 +131,10 @@
+ int (*fast_recv)(struct sk_buff *skb); + int (*fast_recv)(struct sk_buff *skb);
+#endif +#endif
+ +
net_timestamp_check(!netdev_tstamp_prequeue, skb); net_timestamp_check(!READ_ONCE(netdev_tstamp_prequeue), skb);
trace_netif_receive_skb(skb); trace_netif_receive_skb(skb);
@@ -5288,6 +5305,15 @@ another_round: @@ -5296,6 +5313,15 @@ another_round:
goto out; goto out;
} }

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
@@ -7552,7 +7552,7 @@ static void __init alloc_node_mem_map(st @@ -7601,7 +7601,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

@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/bridge/br_input.c --- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c +++ b/net/bridge/br_input.c
@@ -197,6 +197,9 @@ static void __br_handle_local_finish(str @@ -204,6 +204,9 @@ static void __br_handle_local_finish(str
/* note: already called with rcu_read_lock */ /* note: already called with rcu_read_lock */
static int br_handle_local_finish(struct net *net, struct sock *sk, struct sk_buff *skb) static int br_handle_local_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
{ {
@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
__br_handle_local_finish(skb); __br_handle_local_finish(skb);
/* return 1 to signal the okfn() was called so it's ok to use the skb */ /* return 1 to signal the okfn() was called so it's ok to use the skb */
@@ -362,6 +365,17 @@ static rx_handler_result_t br_handle_fra @@ -369,6 +372,17 @@ static rx_handler_result_t br_handle_fra
forward: forward:
switch (p->state) { switch (p->state) {

View File

@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/Makefile --- a/Makefile
+++ b/Makefile +++ b/Makefile
@@ -752,11 +752,11 @@ KBUILD_CFLAGS += $(call cc-disable-warni @@ -762,11 +762,11 @@ KBUILD_CFLAGS += $(call cc-disable-warni
KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member) KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE

View File

@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/init/Kconfig --- a/init/Kconfig
+++ b/init/Kconfig +++ b/init/Kconfig
@@ -1438,6 +1438,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW @@ -1443,6 +1443,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW
the unaligned access emulation. the unaligned access emulation.
see arch/parisc/kernel/unaligned.c for reference see arch/parisc/kernel/unaligned.c for reference
@ -106,7 +106,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
} }
--- a/scripts/link-vmlinux.sh --- a/scripts/link-vmlinux.sh
+++ b/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh
@@ -260,6 +260,10 @@ kallsyms() @@ -257,6 +257,10 @@ kallsyms()
kallsymopt="${kallsymopt} --base-relative" kallsymopt="${kallsymopt} --base-relative"
fi fi

View File

@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/lib/vsprintf.c --- a/lib/vsprintf.c
+++ b/lib/vsprintf.c +++ b/lib/vsprintf.c
@@ -984,8 +984,10 @@ char *symbol_string(char *buf, char *end @@ -1003,8 +1003,10 @@ char *symbol_string(char *buf, char *end
struct printf_spec spec, const char *fmt) struct printf_spec spec, const char *fmt)
{ {
unsigned long value; unsigned long value;
@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#endif #endif
if (fmt[1] == 'R') if (fmt[1] == 'R')
@@ -1006,8 +1008,14 @@ char *symbol_string(char *buf, char *end @@ -1025,8 +1027,14 @@ char *symbol_string(char *buf, char *end
return string_nocheck(buf, end, sym, spec); return string_nocheck(buf, end, sym, spec);
#else #else

View File

@ -14,7 +14,7 @@ Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
--- a/arch/powerpc/Kconfig --- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig
@@ -222,7 +222,7 @@ config PPC @@ -221,7 +221,7 @@ config PPC
select HAVE_KERNEL_GZIP select HAVE_KERNEL_GZIP
select HAVE_KERNEL_LZMA if DEFAULT_UIMAGE select HAVE_KERNEL_LZMA if DEFAULT_UIMAGE
select HAVE_KERNEL_LZO if DEFAULT_UIMAGE select HAVE_KERNEL_LZO if DEFAULT_UIMAGE

View File

@ -272,7 +272,7 @@
obj-$(CONFIG_MTD_BLOCK) += mtdblock.o obj-$(CONFIG_MTD_BLOCK) += mtdblock.o
--- a/include/linux/mtd/mtd.h --- a/include/linux/mtd/mtd.h
+++ b/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h
@@ -615,6 +615,24 @@ static inline void mtd_align_erase_req(s @@ -613,6 +613,24 @@ static inline void mtd_align_erase_req(s
req->len += mtd->erasesize - mod; req->len += mtd->erasesize - mod;
} }
@ -297,7 +297,7 @@
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)
@@ -687,6 +705,13 @@ extern void __put_mtd_device(struct mtd_ @@ -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

@ -12,7 +12,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
--- a/drivers/mtd/parsers/redboot.c --- a/drivers/mtd/parsers/redboot.c
+++ b/drivers/mtd/parsers/redboot.c +++ b/drivers/mtd/parsers/redboot.c
@@ -304,6 +304,7 @@ nogood: @@ -305,6 +305,7 @@ nogood:
static const struct of_device_id mtd_parser_redboot_of_match_table[] = { static const struct of_device_id mtd_parser_redboot_of_match_table[] = {
{ .compatible = "redboot-fis" }, { .compatible = "redboot-fis" },

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
@@ -277,14 +277,21 @@ nogood: @@ -278,14 +278,21 @@ nogood:
#endif #endif
names += strlen(names) + 1; names += strlen(names) + 1;

View File

@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/drivers/mtd/chips/cfi_cmdset_0002.c --- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
@@ -914,7 +914,7 @@ static int get_chip(struct map_info *map @@ -907,7 +907,7 @@ static int get_chip(struct map_info *map
return 0; return 0;
case FL_ERASING: case FL_ERASING:

View File

@ -7,7 +7,7 @@ Signed-off-by: George Kashperko <george@znau.edu.ua>
1 file changed, 1 insertion(+) 1 file changed, 1 insertion(+)
--- a/drivers/mtd/chips/cfi_cmdset_0002.c --- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
@@ -2058,6 +2058,7 @@ static int __xipram do_write_buffer(stru @@ -2051,6 +2051,7 @@ static int __xipram do_write_buffer(stru
/* Write Buffer Load */ /* Write Buffer Load */
map_write(map, CMD(0x25), cmd_adr); map_write(map, CMD(0x25), cmd_adr);

View File

@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
endif # MTD_SPI_NOR endif # MTD_SPI_NOR
--- a/drivers/mtd/spi-nor/core.c --- a/drivers/mtd/spi-nor/core.c
+++ b/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c
@@ -2625,6 +2625,21 @@ static void spi_nor_info_init_params(str @@ -2634,6 +2634,21 @@ static void spi_nor_info_init_params(str
*/ */
erase_mask = 0; erase_mask = 0;
i = 0; i = 0;
@ -61,7 +61,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (info->flags & SECT_4K_PMC) { if (info->flags & SECT_4K_PMC) {
erase_mask |= BIT(i); erase_mask |= BIT(i);
spi_nor_set_erase_type(&map->erase_type[i], 4096u, spi_nor_set_erase_type(&map->erase_type[i], 4096u,
@@ -2636,6 +2651,7 @@ static void spi_nor_info_init_params(str @@ -2645,6 +2660,7 @@ static void spi_nor_info_init_params(str
SPINOR_OP_BE_4K); SPINOR_OP_BE_4K);
i++; i++;
} }

View File

@ -59,7 +59,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+}; +};
--- a/drivers/mtd/spi-nor/core.c --- a/drivers/mtd/spi-nor/core.c
+++ b/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c
@@ -1846,6 +1846,7 @@ static const struct spi_nor_manufacturer @@ -1855,6 +1855,7 @@ static const struct spi_nor_manufacturer
&spi_nor_winbond, &spi_nor_winbond,
&spi_nor_xilinx, &spi_nor_xilinx,
&spi_nor_xmc, &spi_nor_xmc,

View File

@ -19,7 +19,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
--- a/drivers/mtd/spi-nor/core.c --- a/drivers/mtd/spi-nor/core.c
+++ b/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c
@@ -1637,6 +1637,23 @@ destroy_erase_cmd_list: @@ -1646,6 +1646,23 @@ destroy_erase_cmd_list:
return ret; return ret;
} }
@ -43,7 +43,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
/* /*
* Erase an address range on the nor chip. The address range may extend * Erase an address range on the nor chip. The address range may extend
* one or more erase sectors. Return an error if there is a problem erasing. * one or more erase sectors. Return an error if there is a problem erasing.
@@ -1664,6 +1681,10 @@ static int spi_nor_erase(struct mtd_info @@ -1673,6 +1690,10 @@ static int spi_nor_erase(struct mtd_info
if (ret) if (ret)
return ret; return ret;
@ -54,7 +54,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
/* whole-chip erase? */ /* whole-chip erase? */
if (len == mtd->size && !(nor->flags & SNOR_F_NO_OP_CHIP_ERASE)) { if (len == mtd->size && !(nor->flags & SNOR_F_NO_OP_CHIP_ERASE)) {
unsigned long timeout; unsigned long timeout;
@@ -1723,6 +1744,7 @@ static int spi_nor_erase(struct mtd_info @@ -1732,6 +1753,7 @@ static int spi_nor_erase(struct mtd_info
ret = spi_nor_write_disable(nor); ret = spi_nor_write_disable(nor);
erase_err: erase_err:
@ -62,7 +62,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
spi_nor_unlock_and_unprep(nor); spi_nor_unlock_and_unprep(nor);
return ret; return ret;
@@ -1915,6 +1937,10 @@ static int spi_nor_read(struct mtd_info @@ -1924,6 +1946,10 @@ static int spi_nor_read(struct mtd_info
if (ret) if (ret)
return ret; return ret;
@ -73,7 +73,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
while (len) { while (len) {
loff_t addr = from; loff_t addr = from;
@@ -1938,6 +1964,7 @@ static int spi_nor_read(struct mtd_info @@ -1947,6 +1973,7 @@ static int spi_nor_read(struct mtd_info
ret = 0; ret = 0;
read_err: read_err:
@ -81,7 +81,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
spi_nor_unlock_and_unprep(nor); spi_nor_unlock_and_unprep(nor);
return ret; return ret;
} }
@@ -1960,6 +1987,10 @@ static int spi_nor_write(struct mtd_info @@ -1969,6 +1996,10 @@ static int spi_nor_write(struct mtd_info
if (ret) if (ret)
return ret; return ret;
@ -92,7 +92,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
for (i = 0; i < len; ) { for (i = 0; i < len; ) {
ssize_t written; ssize_t written;
loff_t addr = to + i; loff_t addr = to + i;
@@ -1999,6 +2030,7 @@ static int spi_nor_write(struct mtd_info @@ -2008,6 +2039,7 @@ static int spi_nor_write(struct mtd_info
} }
write_err: write_err:
@ -100,7 +100,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
spi_nor_unlock_and_unprep(nor); spi_nor_unlock_and_unprep(nor);
return ret; return ret;
} }
@@ -2846,9 +2878,13 @@ static int spi_nor_init(struct spi_nor * @@ -2855,9 +2887,13 @@ static int spi_nor_init(struct spi_nor *
* reboots (e.g., crashes). Warn the user (or hopefully, system * reboots (e.g., crashes). Warn the user (or hopefully, system
* designer) that this is bad. * designer) that this is bad.
*/ */

View File

@ -8,7 +8,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
--- a/drivers/mtd/ubi/build.c --- a/drivers/mtd/ubi/build.c
+++ b/drivers/mtd/ubi/build.c +++ b/drivers/mtd/ubi/build.c
@@ -1191,6 +1191,73 @@ static struct mtd_info * __init open_mtd @@ -1184,6 +1184,73 @@ static struct mtd_info * __init open_mtd
return mtd; return mtd;
} }
@ -82,7 +82,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
static int __init ubi_init(void) static int __init ubi_init(void)
{ {
int err, i, k; int err, i, k;
@@ -1274,6 +1341,12 @@ static int __init ubi_init(void) @@ -1267,6 +1334,12 @@ static int __init ubi_init(void)
} }
} }

View File

@ -50,7 +50,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
break; break;
--- a/drivers/mtd/ubi/ubi.h --- a/drivers/mtd/ubi/ubi.h
+++ b/drivers/mtd/ubi/ubi.h +++ b/drivers/mtd/ubi/ubi.h
@@ -780,6 +780,7 @@ struct ubi_attach_info { @@ -778,6 +778,7 @@ struct ubi_attach_info {
int mean_ec; int mean_ec;
uint64_t ec_sum; uint64_t ec_sum;
int ec_count; int ec_count;

View File

@ -64,7 +64,7 @@ Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
mutex_lock(&mtd_table_mutex); mutex_lock(&mtd_table_mutex);
--- a/include/linux/mtd/mtd.h --- a/include/linux/mtd/mtd.h
+++ b/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h
@@ -703,6 +703,8 @@ extern struct mtd_info *get_mtd_device(s @@ -701,6 +701,8 @@ extern struct mtd_info *get_mtd_device(s
extern int __get_mtd_device(struct mtd_info *mtd); extern int __get_mtd_device(struct mtd_info *mtd);
extern void __put_mtd_device(struct mtd_info *mtd); extern void __put_mtd_device(struct mtd_info *mtd);
extern struct mtd_info *get_mtd_device_nm(const char *name); extern struct mtd_info *get_mtd_device_nm(const char *name);

View File

@ -1087,7 +1087,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
#define JFFS2_NODE_ACCURATE 0x2000 #define JFFS2_NODE_ACCURATE 0x2000
--- a/lib/Kconfig --- a/lib/Kconfig
+++ b/lib/Kconfig +++ b/lib/Kconfig
@@ -335,6 +335,12 @@ config ZSTD_DECOMPRESS @@ -340,6 +340,12 @@ config ZSTD_DECOMPRESS
source "lib/xz/Kconfig" source "lib/xz/Kconfig"

View File

@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (ret < 0) if (ret < 0)
goto out; goto out;
@@ -565,6 +571,17 @@ full_scan: @@ -567,6 +573,17 @@ full_scan:
return err; return err;
} }

View File

@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/* /*
* Get the required data from the packet. * Get the required data from the packet.
*/ */
@@ -1151,7 +1154,7 @@ int nf_conntrack_tcp_packet(struct nf_co @@ -1191,7 +1194,7 @@ int nf_conntrack_tcp_packet(struct nf_co
IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED && IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED &&
timeouts[new_state] > timeouts[TCP_CONNTRACK_UNACK]) timeouts[new_state] > timeouts[TCP_CONNTRACK_UNACK])
timeout = timeouts[TCP_CONNTRACK_UNACK]; timeout = timeouts[TCP_CONNTRACK_UNACK];

View File

@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (!net_eq(dev_net(dev), sock_net(sk))) if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop; goto drop;
@@ -3325,6 +3327,7 @@ static int packet_create(struct net *net @@ -3330,6 +3332,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock); mutex_init(&po->pg_vec_lock);
po->rollover = NULL; po->rollover = NULL;
po->prot_hook.func = packet_rcv; po->prot_hook.func = packet_rcv;
@ -95,7 +95,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;
@@ -3966,6 +3969,16 @@ packet_setsockopt(struct socket *sock, i @@ -3971,6 +3974,16 @@ packet_setsockopt(struct socket *sock, i
po->xmit = val ? packet_direct_xmit : dev_queue_xmit; po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
return 0; return 0;
} }
@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
default: default:
return -ENOPROTOOPT; return -ENOPROTOOPT;
} }
@@ -4022,6 +4035,13 @@ static int packet_getsockopt(struct sock @@ -4027,6 +4040,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR: case PACKET_VNET_HDR:
val = po->has_vnet_hdr; val = po->has_vnet_hdr;
break; break;

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
@@ -2727,7 +2727,7 @@ static inline int pskb_network_may_pull( @@ -2817,7 +2817,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

@ -66,7 +66,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
static void rt_fibinfo_free(struct rtable __rcu **rtp) static void rt_fibinfo_free(struct rtable __rcu **rtp)
--- a/net/ipv4/fib_trie.c --- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c
@@ -2767,6 +2767,7 @@ static const char *const rtn_type_names[ @@ -2770,6 +2770,7 @@ static const char *const rtn_type_names[
[RTN_THROW] = "THROW", [RTN_THROW] = "THROW",
[RTN_NAT] = "NAT", [RTN_NAT] = "NAT",
[RTN_XRESOLVE] = "XRESOLVE", [RTN_XRESOLVE] = "XRESOLVE",
@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
case RTN_THROW: case RTN_THROW:
case RTN_UNREACHABLE: case RTN_UNREACHABLE:
default: default:
@@ -4559,6 +4578,17 @@ static int ip6_pkt_prohibit_out(struct n @@ -4560,6 +4579,17 @@ static int ip6_pkt_prohibit_out(struct n
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
} }
@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
/* /*
* Allocate a dst for local (unicast / anycast) address. * Allocate a dst for local (unicast / anycast) address.
*/ */
@@ -5039,7 +5069,8 @@ static int rtm_to_fib6_config(struct sk_ @@ -5047,7 +5077,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE || if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE || rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT || rtm->rtm_type == RTN_PROHIBIT ||
@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
cfg->fc_flags |= RTF_REJECT; cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL) if (rtm->rtm_type == RTN_LOCAL)
@@ -6292,6 +6323,8 @@ static int ip6_route_dev_notify(struct n @@ -6300,6 +6331,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev; net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
net->ipv6.ip6_blk_hole_entry->dst.dev = dev; net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif #endif
@@ -6303,6 +6336,7 @@ static int ip6_route_dev_notify(struct n @@ -6311,6 +6344,7 @@ static int ip6_route_dev_notify(struct n
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev); in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev); in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev); in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
#endif #endif
} }
@@ -6494,6 +6528,8 @@ static int __net_init ip6_route_net_init @@ -6502,6 +6536,8 @@ static int __net_init ip6_route_net_init
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.fib6_has_custom_rules = false; net->ipv6.fib6_has_custom_rules = false;
@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template, net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
sizeof(*net->ipv6.ip6_prohibit_entry), sizeof(*net->ipv6.ip6_prohibit_entry),
GFP_KERNEL); GFP_KERNEL);
@@ -6504,11 +6540,21 @@ static int __net_init ip6_route_net_init @@ -6512,11 +6548,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->rt6i_uncached);
@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true); ip6_template_metrics, true);
@@ -6535,6 +6581,8 @@ out: @@ -6543,6 +6589,8 @@ out:
return ret; return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
out_ip6_prohibit_entry: out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry); kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry: out_ip6_null_entry:
@@ -6554,6 +6602,7 @@ static void __net_exit ip6_route_net_exi @@ -6562,6 +6610,7 @@ static void __net_exit ip6_route_net_exi
kfree(net->ipv6.ip6_null_entry); kfree(net->ipv6.ip6_null_entry);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry); kfree(net->ipv6.ip6_prohibit_entry);
@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
kfree(net->ipv6.ip6_blk_hole_entry); kfree(net->ipv6.ip6_blk_hole_entry);
#endif #endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops); dst_entries_destroy(&net->ipv6.ip6_dst_ops);
@@ -6631,6 +6680,9 @@ void __init ip6_route_init_special_entri @@ -6639,6 +6688,9 @@ void __init ip6_route_init_special_entri
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);

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
@@ -2068,6 +2068,8 @@ struct net_device { @@ -2082,6 +2082,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
@@ -855,6 +855,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
@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
__u8 inner_protocol_type:1; __u8 inner_protocol_type:1;
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -6051,6 +6051,9 @@ static enum gro_result dev_gro_receive(s @@ -6059,6 +6059,9 @@ static enum gro_result dev_gro_receive(s
int same_flow; int same_flow;
int grow; int grow;
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (netif_elide_gro(skb->dev)) if (netif_elide_gro(skb->dev))
goto normal; goto normal;
@@ -8065,6 +8068,48 @@ static void __netdev_adjacent_dev_unlink @@ -8073,6 +8076,48 @@ static void __netdev_adjacent_dev_unlink
&upper_dev->adj_list.lower); &upper_dev->adj_list.lower);
} }
@ -91,7 +91,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,
@@ -8116,6 +8161,7 @@ static int __netdev_upper_dev_link(struc @@ -8124,6 +8169,7 @@ static int __netdev_upper_dev_link(struc
if (ret) if (ret)
return ret; return ret;
@ -99,7 +99,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);
@@ -8212,6 +8258,7 @@ static void __netdev_upper_dev_unlink(st @@ -8220,6 +8266,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 +107,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);
@@ -9031,6 +9078,7 @@ int dev_set_mac_address(struct net_devic @@ -9039,6 +9086,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

@ -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
@@ -1715,6 +1715,9 @@ void phy_detach(struct phy_device *phyde @@ -1746,6 +1746,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
@@ -783,6 +783,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

@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (!(p->flags & BR_BCAST_FLOOD) && skb->dev != br->dev) if (!(p->flags & BR_BCAST_FLOOD) && skb->dev != br->dev)
--- a/net/bridge/br_input.c --- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c +++ b/net/bridge/br_input.c
@@ -319,6 +319,8 @@ static rx_handler_result_t br_handle_fra @@ -326,6 +326,8 @@ static rx_handler_result_t br_handle_fra
fwd_mask |= p->group_fwd_mask; fwd_mask |= p->group_fwd_mask;
switch (dest[5]) { switch (dest[5]) {
case 0x00: /* Bridge Group Address */ case 0x00: /* Bridge Group Address */
@ -161,7 +161,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
struct rtnl_link { struct rtnl_link {
rtnl_doit_func doit; rtnl_doit_func doit;
@@ -4689,7 +4689,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu @@ -4700,7 +4700,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu
brport_nla_put_flag(skb, flags, mask, brport_nla_put_flag(skb, flags, mask,
IFLA_BRPORT_MCAST_FLOOD, BR_MCAST_FLOOD) || IFLA_BRPORT_MCAST_FLOOD, BR_MCAST_FLOOD) ||
brport_nla_put_flag(skb, flags, mask, brport_nla_put_flag(skb, flags, mask,

View File

@ -17,7 +17,7 @@ Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
--- a/drivers/net/dsa/mv88e6xxx/chip.c --- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -6319,6 +6319,7 @@ static int mv88e6xxx_register_switch(str @@ -6321,6 +6321,7 @@ static int mv88e6xxx_register_switch(str
ds->ops = &mv88e6xxx_switch_ops; ds->ops = &mv88e6xxx_switch_ops;
ds->ageing_time_min = chip->info->age_time_coeff; ds->ageing_time_min = chip->info->age_time_coeff;
ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX; ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;

View File

@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
/* /*
* The Mellanox Tavor device gives false positive parity errors. Disable * The Mellanox Tavor device gives false positive parity errors. Disable
* parity error reporting. * parity error reporting.
@@ -3351,6 +3352,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I @@ -3363,6 +3364,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
@ -42,7 +42,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
/* /*
* Ivytown NTB BAR sizes are misreported by the hardware due to an erratum. * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.
* To work around this, query the size it should be configured to by the * To work around this, query the size it should be configured to by the
@@ -3376,6 +3379,8 @@ static void quirk_intel_ntb(struct pci_d @@ -3388,6 +3391,8 @@ static void quirk_intel_ntb(struct pci_d
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb);
@ -51,7 +51,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
/* /*
* Some BIOS implementations leave the Intel GPU interrupts enabled, even * Some BIOS implementations leave the Intel GPU interrupts enabled, even
* though no one is handling them (e.g., if the i915 driver is never * though no one is handling them (e.g., if the i915 driver is never
@@ -3414,6 +3419,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN @@ -3426,6 +3431,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);

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
@@ -495,7 +495,14 @@ extern int usb_hcd_pci_probe(struct pci_ @@ -498,7 +498,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
@@ -4573,6 +4586,9 @@ struct ata_queued_cmd *ata_qc_new_init(s @@ -4580,6 +4593,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;
@@ -5351,6 +5367,9 @@ struct ata_port *ata_port_alloc(struct a @@ -5358,6 +5374,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;
@@ -5386,6 +5405,12 @@ static void ata_host_release(struct kref @@ -5393,6 +5412,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;
} }
@@ -5792,7 +5817,23 @@ int ata_host_register(struct ata_host *h @@ -5799,7 +5824,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

@ -13,7 +13,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
--- a/init/Kconfig --- a/init/Kconfig
+++ b/init/Kconfig +++ b/init/Kconfig
@@ -1805,6 +1805,15 @@ config EMBEDDED @@ -1810,6 +1810,15 @@ config EMBEDDED
an embedded system so certain expert options are available an embedded system so certain expert options are available
for configuration. for configuration.
@ -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
@@ -614,6 +614,29 @@ static inline void setup_nr_cpu_ids(void @@ -616,6 +616,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
@@ -954,6 +977,7 @@ asmlinkage __visible void __init __no_sa @@ -956,6 +979,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);

View File

@ -7,8 +7,8 @@ BOARDNAME:=Rockchip
FEATURES:=ext4 audio usb usbgadget display gpio fpu pci pcie rootfs-part boot-part squashfs FEATURES:=ext4 audio usb usbgadget display gpio fpu pci pcie rootfs-part boot-part squashfs
SUBTARGETS:=armv8 SUBTARGETS:=armv8
KERNEL_PATCHVER=5.4 KERNEL_PATCHVER=5.15
KERNEL_TESTING_PATCHVER=5.15 KERNEL_TESTING_PATCHVER=5.4
define Target/Description define Target/Description
Build firmware image for Rockchip SoC devices. Build firmware image for Rockchip SoC devices.

View File

@ -782,7 +782,7 @@
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -2907,6 +2907,8 @@ static int stmmac_init_dma_engine(struct @@ -2899,6 +2899,8 @@ static int stmmac_init_dma_engine(struct
if (priv->extend_desc && (priv->mode == STMMAC_RING_MODE)) if (priv->extend_desc && (priv->mode == STMMAC_RING_MODE))
atds = 1; atds = 1;