kernel: bump 6.18 to 6.18.33
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.18.33 Removed upstreamed: generic/backport-6.18/742-v7.1-r8152-fix-incorrect-register-write-to-USB_UPHY_XTAL.patch[1] generic/backport-6.18/827-v7.0-crypto-inside-secure-eip93-fix-register-definition.patch[2] generic/backport-6.18/828-v7.0-crypto-inside-secure-eip93-register-hash-before-auth.patch[3] generic/backport-6.18/940-v7.1-net-dsa-realtek-rtl8365mb-fix-mode-mask-calculation.patch[4] generic/pending-6.18/928-crypto-eip93-fix-hmac-setkey-algo-selection.patch[5] All other patches automatically rebased via update_kernel.sh 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.33&id=50c601805fe3 2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.33&id=7ed07c9ce525 3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.33&id=b6263eb2b188 4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.33&id=b707f3109f1a 5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.33&id=fc9310d79fdb Build system: x86/64 Build-tested: x86/64-glibc Run-tested: x86/64-glibc Signed-off-by: John Audia <therealgraysky@proton.me> Link: https://github.com/openwrt/openwrt/pull/23419 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
fc6e17e8e5
commit
17f5538441
@ -760,7 +760,7 @@ SVN-Revision: 35130
|
|||||||
EXPORT_SYMBOL(xfrm_parse_spi);
|
EXPORT_SYMBOL(xfrm_parse_spi);
|
||||||
--- a/net/ipv4/tcp_input.c
|
--- a/net/ipv4/tcp_input.c
|
||||||
+++ b/net/ipv4/tcp_input.c
|
+++ b/net/ipv4/tcp_input.c
|
||||||
@@ -4413,14 +4413,16 @@ static bool tcp_parse_aligned_timestamp(
|
@@ -4419,14 +4419,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||||
{
|
{
|
||||||
const __be32 *ptr = (const __be32 *)(th + 1);
|
const __be32 *ptr = (const __be32 *)(th + 1);
|
||||||
|
|
||||||
|
|||||||
@ -19,7 +19,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
|||||||
|
|
||||||
--- a/drivers/mtd/nand/spi/core.c
|
--- a/drivers/mtd/nand/spi/core.c
|
||||||
+++ b/drivers/mtd/nand/spi/core.c
|
+++ b/drivers/mtd/nand/spi/core.c
|
||||||
@@ -1235,6 +1235,7 @@ static const struct nand_ops spinand_ops
|
@@ -1226,6 +1226,7 @@ static const struct nand_ops spinand_ops
|
||||||
static const struct spinand_manufacturer *spinand_manufacturers[] = {
|
static const struct spinand_manufacturer *spinand_manufacturers[] = {
|
||||||
&alliancememory_spinand_manufacturer,
|
&alliancememory_spinand_manufacturer,
|
||||||
&ato_spinand_manufacturer,
|
&ato_spinand_manufacturer,
|
||||||
@ -74,7 +74,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
|||||||
.name = "ESMT",
|
.name = "ESMT",
|
||||||
--- a/include/linux/mtd/spinand.h
|
--- a/include/linux/mtd/spinand.h
|
||||||
+++ b/include/linux/mtd/spinand.h
|
+++ b/include/linux/mtd/spinand.h
|
||||||
@@ -354,6 +354,7 @@ struct spinand_manufacturer {
|
@@ -360,6 +360,7 @@ struct spinand_manufacturer {
|
||||||
/* SPI NAND manufacturers */
|
/* SPI NAND manufacturers */
|
||||||
extern const struct spinand_manufacturer alliancememory_spinand_manufacturer;
|
extern const struct spinand_manufacturer alliancememory_spinand_manufacturer;
|
||||||
extern const struct spinand_manufacturer ato_spinand_manufacturer;
|
extern const struct spinand_manufacturer ato_spinand_manufacturer;
|
||||||
|
|||||||
@ -22,7 +22,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
|
|
||||||
--- a/drivers/net/ppp/ppp_generic.c
|
--- a/drivers/net/ppp/ppp_generic.c
|
||||||
+++ b/drivers/net/ppp/ppp_generic.c
|
+++ b/drivers/net/ppp/ppp_generic.c
|
||||||
@@ -1641,6 +1641,8 @@ static void ppp_setup(struct net_device
|
@@ -1644,6 +1644,8 @@ static void ppp_setup(struct net_device
|
||||||
dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST;
|
dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST;
|
||||||
dev->priv_destructor = ppp_dev_priv_destructor;
|
dev->priv_destructor = ppp_dev_priv_destructor;
|
||||||
dev->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS;
|
dev->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS;
|
||||||
@ -31,7 +31,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
netif_keep_dst(dev);
|
netif_keep_dst(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1710,6 +1712,10 @@ pad_compress_skb(struct ppp *ppp, struct
|
@@ -1713,6 +1715,10 @@ pad_compress_skb(struct ppp *ppp, struct
|
||||||
ppp->xcomp->comp_extra + ppp->dev->hard_header_len;
|
ppp->xcomp->comp_extra + ppp->dev->hard_header_len;
|
||||||
int compressor_skb_size = ppp->dev->mtu +
|
int compressor_skb_size = ppp->dev->mtu +
|
||||||
ppp->xcomp->comp_extra + PPP_HDRLEN;
|
ppp->xcomp->comp_extra + PPP_HDRLEN;
|
||||||
@ -42,7 +42,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
new_skb = alloc_skb(new_skb_size, GFP_ATOMIC);
|
new_skb = alloc_skb(new_skb_size, GFP_ATOMIC);
|
||||||
if (!new_skb) {
|
if (!new_skb) {
|
||||||
if (net_ratelimit())
|
if (net_ratelimit())
|
||||||
@@ -1797,6 +1803,10 @@ ppp_send_frame(struct ppp *ppp, struct s
|
@@ -1800,6 +1806,10 @@ ppp_send_frame(struct ppp *ppp, struct s
|
||||||
case PPP_IP:
|
case PPP_IP:
|
||||||
if (!ppp->vj || (ppp->flags & SC_COMP_TCP) == 0)
|
if (!ppp->vj || (ppp->flags & SC_COMP_TCP) == 0)
|
||||||
break;
|
break;
|
||||||
@ -53,7 +53,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
/* try to do VJ TCP header compression */
|
/* try to do VJ TCP header compression */
|
||||||
new_skb = alloc_skb(skb->len + ppp->dev->hard_header_len - 2,
|
new_skb = alloc_skb(skb->len + ppp->dev->hard_header_len - 2,
|
||||||
GFP_ATOMIC);
|
GFP_ATOMIC);
|
||||||
@@ -1894,19 +1904,26 @@ ppp_push(struct ppp *ppp)
|
@@ -1897,19 +1907,26 @@ ppp_push(struct ppp *ppp)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ppp->flags & SC_MULTILINK) == 0) {
|
if ((ppp->flags & SC_MULTILINK) == 0) {
|
||||||
@ -85,7 +85,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
spin_unlock(&pch->downl);
|
spin_unlock(&pch->downl);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1991,6 +2008,8 @@ static int ppp_mp_explode(struct ppp *pp
|
@@ -1994,6 +2011,8 @@ static int ppp_mp_explode(struct ppp *pp
|
||||||
return 0; /* can't take now, leave it in xmit_pending */
|
return 0; /* can't take now, leave it in xmit_pending */
|
||||||
|
|
||||||
/* Do protocol field compression */
|
/* Do protocol field compression */
|
||||||
@ -94,7 +94,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
p = skb->data;
|
p = skb->data;
|
||||||
len = skb->len;
|
len = skb->len;
|
||||||
if (*p == 0 && mp_protocol_compress) {
|
if (*p == 0 && mp_protocol_compress) {
|
||||||
@@ -2149,6 +2168,7 @@ static int ppp_mp_explode(struct ppp *pp
|
@@ -2152,6 +2171,7 @@ static int ppp_mp_explode(struct ppp *pp
|
||||||
|
|
||||||
noskb:
|
noskb:
|
||||||
spin_unlock(&pch->downl);
|
spin_unlock(&pch->downl);
|
||||||
|
|||||||
@ -32,8 +32,8 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
|
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
|
|
||||||
@@ -434,7 +435,7 @@ static int pppoe_rcv(struct sk_buff *skb
|
@@ -440,7 +441,7 @@ static int pppoe_rcv(struct sk_buff *skb
|
||||||
if (skb->len < len)
|
if (ppp_skb_is_compressed_proto(skb))
|
||||||
goto drop;
|
goto drop;
|
||||||
|
|
||||||
- if (pskb_trim_rcsum(skb, len))
|
- if (pskb_trim_rcsum(skb, len))
|
||||||
@ -41,7 +41,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
goto drop;
|
goto drop;
|
||||||
|
|
||||||
ph = pppoe_hdr(skb);
|
ph = pppoe_hdr(skb);
|
||||||
@@ -1176,6 +1177,160 @@ static struct pernet_operations pppoe_ne
|
@@ -1182,6 +1183,160 @@ static struct pernet_operations pppoe_ne
|
||||||
.size = sizeof(struct pppoe_net),
|
.size = sizeof(struct pppoe_net),
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -202,7 +202,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
static int __init pppoe_init(void)
|
static int __init pppoe_init(void)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
@@ -1192,6 +1347,8 @@ static int __init pppoe_init(void)
|
@@ -1198,6 +1353,8 @@ static int __init pppoe_init(void)
|
||||||
if (err)
|
if (err)
|
||||||
goto out_unregister_pppoe_proto;
|
goto out_unregister_pppoe_proto;
|
||||||
|
|
||||||
@ -211,7 +211,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
dev_add_pack(&pppoes_ptype);
|
dev_add_pack(&pppoes_ptype);
|
||||||
dev_add_pack(&pppoed_ptype);
|
dev_add_pack(&pppoed_ptype);
|
||||||
register_netdevice_notifier(&pppoe_notifier);
|
register_netdevice_notifier(&pppoe_notifier);
|
||||||
@@ -1211,6 +1368,8 @@ static void __exit pppoe_exit(void)
|
@@ -1217,6 +1374,8 @@ static void __exit pppoe_exit(void)
|
||||||
unregister_netdevice_notifier(&pppoe_notifier);
|
unregister_netdevice_notifier(&pppoe_notifier);
|
||||||
dev_remove_pack(&pppoed_ptype);
|
dev_remove_pack(&pppoed_ptype);
|
||||||
dev_remove_pack(&pppoes_ptype);
|
dev_remove_pack(&pppoes_ptype);
|
||||||
|
|||||||
@ -135,7 +135,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
}
|
}
|
||||||
@@ -1592,7 +1596,7 @@ static unsigned int cake_drop(struct Qdi
|
@@ -1592,7 +1596,7 @@ static unsigned int cake_drop(struct Qdi
|
||||||
flow->dropped++;
|
flow->dropped++;
|
||||||
b->tin_dropped++;
|
WRITE_ONCE(b->tin_dropped, b->tin_dropped + 1);
|
||||||
|
|
||||||
- if (q->rate_flags & CAKE_FLAG_INGRESS)
|
- if (q->rate_flags & CAKE_FLAG_INGRESS)
|
||||||
+ if (q->config->rate_flags & CAKE_FLAG_INGRESS)
|
+ if (q->config->rate_flags & CAKE_FLAG_INGRESS)
|
||||||
@ -326,7 +326,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2317,7 +2322,7 @@ static int cake_config_besteffort(struct
|
@@ -2320,7 +2325,7 @@ static int cake_config_besteffort(struct
|
||||||
struct cake_sched_data *q = qdisc_priv(sch);
|
struct cake_sched_data *q = qdisc_priv(sch);
|
||||||
struct cake_tin_data *b = &q->tins[0];
|
struct cake_tin_data *b = &q->tins[0];
|
||||||
u32 mtu = psched_mtu(qdisc_dev(sch));
|
u32 mtu = psched_mtu(qdisc_dev(sch));
|
||||||
@ -335,7 +335,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
|
|
||||||
q->tin_cnt = 1;
|
q->tin_cnt = 1;
|
||||||
|
|
||||||
@@ -2325,7 +2330,7 @@ static int cake_config_besteffort(struct
|
@@ -2328,7 +2333,7 @@ static int cake_config_besteffort(struct
|
||||||
q->tin_order = normal_order;
|
q->tin_order = normal_order;
|
||||||
|
|
||||||
cake_set_rate(b, rate, mtu,
|
cake_set_rate(b, rate, mtu,
|
||||||
@ -344,7 +344,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
b->tin_quantum = 65535;
|
b->tin_quantum = 65535;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -2336,7 +2341,7 @@ static int cake_config_precedence(struct
|
@@ -2339,7 +2344,7 @@ static int cake_config_precedence(struct
|
||||||
/* convert high-level (user visible) parameters into internal format */
|
/* convert high-level (user visible) parameters into internal format */
|
||||||
struct cake_sched_data *q = qdisc_priv(sch);
|
struct cake_sched_data *q = qdisc_priv(sch);
|
||||||
u32 mtu = psched_mtu(qdisc_dev(sch));
|
u32 mtu = psched_mtu(qdisc_dev(sch));
|
||||||
@ -353,7 +353,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
u32 quantum = 256;
|
u32 quantum = 256;
|
||||||
u32 i;
|
u32 i;
|
||||||
|
|
||||||
@@ -2347,8 +2352,8 @@ static int cake_config_precedence(struct
|
@@ -2350,8 +2355,8 @@ static int cake_config_precedence(struct
|
||||||
for (i = 0; i < q->tin_cnt; i++) {
|
for (i = 0; i < q->tin_cnt; i++) {
|
||||||
struct cake_tin_data *b = &q->tins[i];
|
struct cake_tin_data *b = &q->tins[i];
|
||||||
|
|
||||||
@ -364,7 +364,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
|
|
||||||
b->tin_quantum = max_t(u16, 1U, quantum);
|
b->tin_quantum = max_t(u16, 1U, quantum);
|
||||||
|
|
||||||
@@ -2425,7 +2430,7 @@ static int cake_config_diffserv8(struct
|
@@ -2428,7 +2433,7 @@ static int cake_config_diffserv8(struct
|
||||||
|
|
||||||
struct cake_sched_data *q = qdisc_priv(sch);
|
struct cake_sched_data *q = qdisc_priv(sch);
|
||||||
u32 mtu = psched_mtu(qdisc_dev(sch));
|
u32 mtu = psched_mtu(qdisc_dev(sch));
|
||||||
@ -373,7 +373,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
u32 quantum = 256;
|
u32 quantum = 256;
|
||||||
u32 i;
|
u32 i;
|
||||||
|
|
||||||
@@ -2439,8 +2444,8 @@ static int cake_config_diffserv8(struct
|
@@ -2442,8 +2447,8 @@ static int cake_config_diffserv8(struct
|
||||||
for (i = 0; i < q->tin_cnt; i++) {
|
for (i = 0; i < q->tin_cnt; i++) {
|
||||||
struct cake_tin_data *b = &q->tins[i];
|
struct cake_tin_data *b = &q->tins[i];
|
||||||
|
|
||||||
@ -384,7 +384,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
|
|
||||||
b->tin_quantum = max_t(u16, 1U, quantum);
|
b->tin_quantum = max_t(u16, 1U, quantum);
|
||||||
|
|
||||||
@@ -2469,7 +2474,7 @@ static int cake_config_diffserv4(struct
|
@@ -2472,7 +2477,7 @@ static int cake_config_diffserv4(struct
|
||||||
|
|
||||||
struct cake_sched_data *q = qdisc_priv(sch);
|
struct cake_sched_data *q = qdisc_priv(sch);
|
||||||
u32 mtu = psched_mtu(qdisc_dev(sch));
|
u32 mtu = psched_mtu(qdisc_dev(sch));
|
||||||
@ -393,7 +393,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
u32 quantum = 1024;
|
u32 quantum = 1024;
|
||||||
|
|
||||||
q->tin_cnt = 4;
|
q->tin_cnt = 4;
|
||||||
@@ -2480,13 +2485,13 @@ static int cake_config_diffserv4(struct
|
@@ -2483,13 +2488,13 @@ static int cake_config_diffserv4(struct
|
||||||
|
|
||||||
/* class characteristics */
|
/* class characteristics */
|
||||||
cake_set_rate(&q->tins[0], rate, mtu,
|
cake_set_rate(&q->tins[0], rate, mtu,
|
||||||
@ -411,7 +411,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
|
|
||||||
/* bandwidth-sharing weights */
|
/* bandwidth-sharing weights */
|
||||||
q->tins[0].tin_quantum = quantum;
|
q->tins[0].tin_quantum = quantum;
|
||||||
@@ -2506,7 +2511,7 @@ static int cake_config_diffserv3(struct
|
@@ -2509,7 +2514,7 @@ static int cake_config_diffserv3(struct
|
||||||
*/
|
*/
|
||||||
struct cake_sched_data *q = qdisc_priv(sch);
|
struct cake_sched_data *q = qdisc_priv(sch);
|
||||||
u32 mtu = psched_mtu(qdisc_dev(sch));
|
u32 mtu = psched_mtu(qdisc_dev(sch));
|
||||||
@ -420,7 +420,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
u32 quantum = 1024;
|
u32 quantum = 1024;
|
||||||
|
|
||||||
q->tin_cnt = 3;
|
q->tin_cnt = 3;
|
||||||
@@ -2517,11 +2522,11 @@ static int cake_config_diffserv3(struct
|
@@ -2520,11 +2525,11 @@ static int cake_config_diffserv3(struct
|
||||||
|
|
||||||
/* class characteristics */
|
/* class characteristics */
|
||||||
cake_set_rate(&q->tins[0], rate, mtu,
|
cake_set_rate(&q->tins[0], rate, mtu,
|
||||||
@ -435,7 +435,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
|
|
||||||
/* bandwidth-sharing weights */
|
/* bandwidth-sharing weights */
|
||||||
q->tins[0].tin_quantum = quantum;
|
q->tins[0].tin_quantum = quantum;
|
||||||
@@ -2533,7 +2538,8 @@ static int cake_config_diffserv3(struct
|
@@ -2536,7 +2541,8 @@ static int cake_config_diffserv3(struct
|
||||||
|
|
||||||
static void cake_reconfigure(struct Qdisc *sch)
|
static void cake_reconfigure(struct Qdisc *sch)
|
||||||
{
|
{
|
||||||
@ -445,7 +445,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
int c, ft;
|
int c, ft;
|
||||||
|
|
||||||
switch (q->tin_mode) {
|
switch (q->tin_mode) {
|
||||||
@@ -2559,36 +2565,37 @@ static void cake_reconfigure(struct Qdis
|
@@ -2562,36 +2568,37 @@ static void cake_reconfigure(struct Qdis
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -494,7 +494,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
struct nlattr *tb[TCA_CAKE_MAX + 1];
|
struct nlattr *tb[TCA_CAKE_MAX + 1];
|
||||||
u16 rate_flags;
|
u16 rate_flags;
|
||||||
u8 flow_mode;
|
u8 flow_mode;
|
||||||
@@ -2642,19 +2649,19 @@ static int cake_change(struct Qdisc *sch
|
@@ -2645,19 +2652,19 @@ static int cake_change(struct Qdisc *sch
|
||||||
nla_get_s32(tb[TCA_CAKE_OVERHEAD]));
|
nla_get_s32(tb[TCA_CAKE_OVERHEAD]));
|
||||||
rate_flags |= CAKE_FLAG_OVERHEAD;
|
rate_flags |= CAKE_FLAG_OVERHEAD;
|
||||||
|
|
||||||
@ -522,7 +522,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (tb[TCA_CAKE_MPU])
|
if (tb[TCA_CAKE_MPU])
|
||||||
@@ -2710,7 +2717,7 @@ static int cake_change(struct Qdisc *sch
|
@@ -2713,7 +2720,7 @@ static int cake_change(struct Qdisc *sch
|
||||||
|
|
||||||
WRITE_ONCE(q->rate_flags, rate_flags);
|
WRITE_ONCE(q->rate_flags, rate_flags);
|
||||||
WRITE_ONCE(q->flow_mode, flow_mode);
|
WRITE_ONCE(q->flow_mode, flow_mode);
|
||||||
@ -531,7 +531,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
sch_tree_lock(sch);
|
sch_tree_lock(sch);
|
||||||
cake_reconfigure(sch);
|
cake_reconfigure(sch);
|
||||||
sch_tree_unlock(sch);
|
sch_tree_unlock(sch);
|
||||||
@@ -2726,14 +2733,20 @@ static void cake_destroy(struct Qdisc *s
|
@@ -2729,14 +2736,20 @@ static void cake_destroy(struct Qdisc *s
|
||||||
qdisc_watchdog_cancel(&q->watchdog);
|
qdisc_watchdog_cancel(&q->watchdog);
|
||||||
tcf_block_put(q->block);
|
tcf_block_put(q->block);
|
||||||
kvfree(q->tins);
|
kvfree(q->tins);
|
||||||
@ -553,7 +553,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
sch->limit = 10240;
|
sch->limit = 10240;
|
||||||
q->tin_mode = CAKE_DIFFSERV_DIFFSERV3;
|
q->tin_mode = CAKE_DIFFSERV_DIFFSERV3;
|
||||||
q->flow_mode = CAKE_FLOW_TRIPLE;
|
q->flow_mode = CAKE_FLOW_TRIPLE;
|
||||||
@@ -2745,33 +2758,36 @@ static int cake_init(struct Qdisc *sch,
|
@@ -2748,33 +2761,36 @@ static int cake_init(struct Qdisc *sch,
|
||||||
* for 5 to 10% of interval
|
* for 5 to 10% of interval
|
||||||
*/
|
*/
|
||||||
q->rate_flags |= CAKE_FLAG_SPLIT_GSO;
|
q->rate_flags |= CAKE_FLAG_SPLIT_GSO;
|
||||||
@ -601,7 +601,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
|
|
||||||
INIT_LIST_HEAD(&b->new_flows);
|
INIT_LIST_HEAD(&b->new_flows);
|
||||||
INIT_LIST_HEAD(&b->old_flows);
|
INIT_LIST_HEAD(&b->old_flows);
|
||||||
@@ -2787,22 +2803,27 @@ static int cake_init(struct Qdisc *sch,
|
@@ -2790,22 +2806,27 @@ static int cake_init(struct Qdisc *sch,
|
||||||
INIT_LIST_HEAD(&flow->flowchain);
|
INIT_LIST_HEAD(&flow->flowchain);
|
||||||
cobalt_vars_init(&flow->cvars);
|
cobalt_vars_init(&flow->cvars);
|
||||||
|
|
||||||
|
|||||||
@ -32,7 +32,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
#include <net/pkt_cls.h>
|
#include <net/pkt_cls.h>
|
||||||
#include <net/tcp.h>
|
#include <net/tcp.h>
|
||||||
#include <net/flow_dissector.h>
|
#include <net/flow_dissector.h>
|
||||||
@@ -3160,14 +3161,89 @@ static struct Qdisc_ops cake_qdisc_ops _
|
@@ -3163,14 +3164,89 @@ static struct Qdisc_ops cake_qdisc_ops _
|
||||||
};
|
};
|
||||||
MODULE_ALIAS_NET_SCH("cake");
|
MODULE_ALIAS_NET_SCH("cake");
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
module_init(cake_module_init)
|
module_init(cake_module_init)
|
||||||
@@ -3175,3 +3251,4 @@ module_exit(cake_module_exit)
|
@@ -3178,3 +3254,4 @@ module_exit(cake_module_exit)
|
||||||
MODULE_AUTHOR("Jonathan Morton");
|
MODULE_AUTHOR("Jonathan Morton");
|
||||||
MODULE_LICENSE("Dual BSD/GPL");
|
MODULE_LICENSE("Dual BSD/GPL");
|
||||||
MODULE_DESCRIPTION("The CAKE shaper.");
|
MODULE_DESCRIPTION("The CAKE shaper.");
|
||||||
|
|||||||
@ -27,7 +27,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct cake_sched_data {
|
struct cake_sched_data {
|
||||||
@@ -2592,14 +2593,12 @@ static void cake_reconfigure(struct Qdis
|
@@ -2595,14 +2596,12 @@ static void cake_reconfigure(struct Qdis
|
||||||
q->buffer_config_limit));
|
q->buffer_config_limit));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
int err;
|
int err;
|
||||||
|
|
||||||
err = nla_parse_nested_deprecated(tb, TCA_CAKE_MAX, opt, cake_policy,
|
err = nla_parse_nested_deprecated(tb, TCA_CAKE_MAX, opt, cake_policy,
|
||||||
@@ -2607,7 +2606,6 @@ static int cake_change(struct Qdisc *sch
|
@@ -2610,7 +2609,6 @@ static int cake_change(struct Qdisc *sch
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
@ -54,7 +54,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
if (tb[TCA_CAKE_NAT]) {
|
if (tb[TCA_CAKE_NAT]) {
|
||||||
#if IS_ENABLED(CONFIG_NF_CONNTRACK)
|
#if IS_ENABLED(CONFIG_NF_CONNTRACK)
|
||||||
flow_mode &= ~CAKE_FLOW_NAT_FLAG;
|
flow_mode &= ~CAKE_FLOW_NAT_FLAG;
|
||||||
@@ -2620,6 +2618,19 @@ static int cake_change(struct Qdisc *sch
|
@@ -2623,6 +2621,19 @@ static int cake_change(struct Qdisc *sch
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
if (tb[TCA_CAKE_BASE_RATE64])
|
if (tb[TCA_CAKE_BASE_RATE64])
|
||||||
WRITE_ONCE(q->rate_bps,
|
WRITE_ONCE(q->rate_bps,
|
||||||
nla_get_u64(tb[TCA_CAKE_BASE_RATE64]));
|
nla_get_u64(tb[TCA_CAKE_BASE_RATE64]));
|
||||||
@@ -2628,7 +2639,6 @@ static int cake_change(struct Qdisc *sch
|
@@ -2631,7 +2642,6 @@ static int cake_change(struct Qdisc *sch
|
||||||
WRITE_ONCE(q->tin_mode,
|
WRITE_ONCE(q->tin_mode,
|
||||||
nla_get_u32(tb[TCA_CAKE_DIFFSERV_MODE]));
|
nla_get_u32(tb[TCA_CAKE_DIFFSERV_MODE]));
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
if (tb[TCA_CAKE_WASH]) {
|
if (tb[TCA_CAKE_WASH]) {
|
||||||
if (!!nla_get_u32(tb[TCA_CAKE_WASH]))
|
if (!!nla_get_u32(tb[TCA_CAKE_WASH]))
|
||||||
rate_flags |= CAKE_FLAG_WASH;
|
rate_flags |= CAKE_FLAG_WASH;
|
||||||
@@ -2649,20 +2659,12 @@ static int cake_change(struct Qdisc *sch
|
@@ -2652,20 +2662,12 @@ static int cake_change(struct Qdisc *sch
|
||||||
WRITE_ONCE(q->rate_overhead,
|
WRITE_ONCE(q->rate_overhead,
|
||||||
nla_get_s32(tb[TCA_CAKE_OVERHEAD]));
|
nla_get_s32(tb[TCA_CAKE_OVERHEAD]));
|
||||||
rate_flags |= CAKE_FLAG_OVERHEAD;
|
rate_flags |= CAKE_FLAG_OVERHEAD;
|
||||||
@ -105,7 +105,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (tb[TCA_CAKE_MPU])
|
if (tb[TCA_CAKE_MPU])
|
||||||
@@ -2681,13 +2683,6 @@ static int cake_change(struct Qdisc *sch
|
@@ -2684,13 +2686,6 @@ static int cake_change(struct Qdisc *sch
|
||||||
WRITE_ONCE(q->target, max(target, 1U));
|
WRITE_ONCE(q->target, max(target, 1U));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,7 +119,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
if (tb[TCA_CAKE_INGRESS]) {
|
if (tb[TCA_CAKE_INGRESS]) {
|
||||||
if (!!nla_get_u32(tb[TCA_CAKE_INGRESS]))
|
if (!!nla_get_u32(tb[TCA_CAKE_INGRESS]))
|
||||||
rate_flags |= CAKE_FLAG_INGRESS;
|
rate_flags |= CAKE_FLAG_INGRESS;
|
||||||
@@ -2718,6 +2713,34 @@ static int cake_change(struct Qdisc *sch
|
@@ -2721,6 +2716,34 @@ static int cake_change(struct Qdisc *sch
|
||||||
|
|
||||||
WRITE_ONCE(q->rate_flags, rate_flags);
|
WRITE_ONCE(q->rate_flags, rate_flags);
|
||||||
WRITE_ONCE(q->flow_mode, flow_mode);
|
WRITE_ONCE(q->flow_mode, flow_mode);
|
||||||
@ -154,7 +154,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
if (qd->tins) {
|
if (qd->tins) {
|
||||||
sch_tree_lock(sch);
|
sch_tree_lock(sch);
|
||||||
cake_reconfigure(sch);
|
cake_reconfigure(sch);
|
||||||
@@ -2734,7 +2757,23 @@ static void cake_destroy(struct Qdisc *s
|
@@ -2737,7 +2760,23 @@ static void cake_destroy(struct Qdisc *s
|
||||||
qdisc_watchdog_cancel(&q->watchdog);
|
qdisc_watchdog_cancel(&q->watchdog);
|
||||||
tcf_block_put(q->block);
|
tcf_block_put(q->block);
|
||||||
kvfree(q->tins);
|
kvfree(q->tins);
|
||||||
@ -179,7 +179,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int cake_init(struct Qdisc *sch, struct nlattr *opt,
|
static int cake_init(struct Qdisc *sch, struct nlattr *opt,
|
||||||
@@ -2748,17 +2787,9 @@ static int cake_init(struct Qdisc *sch,
|
@@ -2751,17 +2790,9 @@ static int cake_init(struct Qdisc *sch,
|
||||||
if (!q)
|
if (!q)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
@ -199,7 +199,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
qd->cur_tin = 0;
|
qd->cur_tin = 0;
|
||||||
qd->cur_flow = 0;
|
qd->cur_flow = 0;
|
||||||
qd->config = q;
|
qd->config = q;
|
||||||
@@ -2821,10 +2852,21 @@ err:
|
@@ -2824,10 +2855,21 @@ err:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -222,7 +222,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
struct nlattr *opts;
|
struct nlattr *opts;
|
||||||
u16 rate_flags;
|
u16 rate_flags;
|
||||||
u8 flow_mode;
|
u8 flow_mode;
|
||||||
@@ -2900,6 +2942,13 @@ nla_put_failure:
|
@@ -2903,6 +2945,13 @@ nla_put_failure:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -236,7 +236,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
static int cake_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
|
static int cake_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
|
||||||
{
|
{
|
||||||
struct nlattr *stats = nla_nest_start_noflag(d->skb, TCA_STATS_APP);
|
struct nlattr *stats = nla_nest_start_noflag(d->skb, TCA_STATS_APP);
|
||||||
@@ -3163,6 +3212,7 @@ MODULE_ALIAS_NET_SCH("cake");
|
@@ -3166,6 +3215,7 @@ MODULE_ALIAS_NET_SCH("cake");
|
||||||
|
|
||||||
struct cake_mq_sched {
|
struct cake_mq_sched {
|
||||||
struct mq_sched mq_priv; /* must be first */
|
struct mq_sched mq_priv; /* must be first */
|
||||||
@ -244,7 +244,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
};
|
};
|
||||||
|
|
||||||
static void cake_mq_destroy(struct Qdisc *sch)
|
static void cake_mq_destroy(struct Qdisc *sch)
|
||||||
@@ -3173,25 +3223,68 @@ static void cake_mq_destroy(struct Qdisc
|
@@ -3176,25 +3226,68 @@ static void cake_mq_destroy(struct Qdisc
|
||||||
static int cake_mq_init(struct Qdisc *sch, struct nlattr *opt,
|
static int cake_mq_init(struct Qdisc *sch, struct nlattr *opt,
|
||||||
struct netlink_ext_ack *extack)
|
struct netlink_ext_ack *extack)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -131,13 +131,13 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
return NULL;
|
return NULL;
|
||||||
@@ -2208,6 +2250,7 @@ retry:
|
@@ -2208,6 +2250,7 @@ retry:
|
||||||
|
|
||||||
b->tin_ecn_mark += !!flow->cvars.ecn_marked;
|
WRITE_ONCE(b->tin_ecn_mark, b->tin_ecn_mark + !!flow->cvars.ecn_marked);
|
||||||
qdisc_bstats_update(sch, skb);
|
qdisc_bstats_update(sch, skb);
|
||||||
+ WRITE_ONCE(q->last_active, now);
|
+ WRITE_ONCE(q->last_active, now);
|
||||||
|
|
||||||
/* collect delay stats */
|
/* collect delay stats */
|
||||||
delay = ktime_to_ns(ktime_sub(now, cobalt_get_enqueue_time(skb)));
|
delay = ktime_to_ns(ktime_sub(now, cobalt_get_enqueue_time(skb)));
|
||||||
@@ -2308,6 +2351,9 @@ static void cake_set_rate(struct cake_ti
|
@@ -2310,6 +2353,9 @@ static void cake_set_rate(struct cake_ti
|
||||||
b->tin_rate_ns = rate_ns;
|
b->tin_rate_ns = rate_ns;
|
||||||
b->tin_rate_shft = rate_shft;
|
b->tin_rate_shft = rate_shft;
|
||||||
|
|
||||||
@ -146,8 +146,8 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
+
|
+
|
||||||
byte_target_ns = (byte_target * rate_ns) >> rate_shft;
|
byte_target_ns = (byte_target * rate_ns) >> rate_shft;
|
||||||
|
|
||||||
b->cparams.target = max((byte_target_ns * 3) / 2, target_ns);
|
WRITE_ONCE(b->cparams.target,
|
||||||
@@ -2774,6 +2820,7 @@ static void cake_config_init(struct cake
|
@@ -2777,6 +2823,7 @@ static void cake_config_init(struct cake
|
||||||
*/
|
*/
|
||||||
q->rate_flags |= CAKE_FLAG_SPLIT_GSO;
|
q->rate_flags |= CAKE_FLAG_SPLIT_GSO;
|
||||||
q->is_shared = is_shared;
|
q->is_shared = is_shared;
|
||||||
@ -155,7 +155,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int cake_init(struct Qdisc *sch, struct nlattr *opt,
|
static int cake_init(struct Qdisc *sch, struct nlattr *opt,
|
||||||
@@ -2845,6 +2892,9 @@ static int cake_init(struct Qdisc *sch,
|
@@ -2848,6 +2895,9 @@ static int cake_init(struct Qdisc *sch,
|
||||||
qd->avg_peak_bandwidth = q->rate_bps;
|
qd->avg_peak_bandwidth = q->rate_bps;
|
||||||
qd->min_netlen = ~0;
|
qd->min_netlen = ~0;
|
||||||
qd->min_adjlen = ~0;
|
qd->min_adjlen = ~0;
|
||||||
@ -165,7 +165,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
return 0;
|
return 0;
|
||||||
err:
|
err:
|
||||||
kvfree(qd->config);
|
kvfree(qd->config);
|
||||||
@@ -2977,6 +3027,7 @@ static int cake_dump_stats(struct Qdisc
|
@@ -2980,6 +3030,7 @@ static int cake_dump_stats(struct Qdisc
|
||||||
PUT_STAT_U32(MAX_ADJLEN, q->max_adjlen);
|
PUT_STAT_U32(MAX_ADJLEN, q->max_adjlen);
|
||||||
PUT_STAT_U32(MIN_NETLEN, q->min_netlen);
|
PUT_STAT_U32(MIN_NETLEN, q->min_netlen);
|
||||||
PUT_STAT_U32(MIN_ADJLEN, q->min_adjlen);
|
PUT_STAT_U32(MIN_ADJLEN, q->min_adjlen);
|
||||||
|
|||||||
@ -33,7 +33,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
struct cake_heap_entry overflow_heap[CAKE_QUEUES * CAKE_MAX_TINS];
|
struct cake_heap_entry overflow_heap[CAKE_QUEUES * CAKE_MAX_TINS];
|
||||||
|
|
||||||
@@ -2803,8 +2804,6 @@ static void cake_destroy(struct Qdisc *s
|
@@ -2806,8 +2807,6 @@ static void cake_destroy(struct Qdisc *s
|
||||||
qdisc_watchdog_cancel(&q->watchdog);
|
qdisc_watchdog_cancel(&q->watchdog);
|
||||||
tcf_block_put(q->block);
|
tcf_block_put(q->block);
|
||||||
kvfree(q->tins);
|
kvfree(q->tins);
|
||||||
@ -42,7 +42,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void cake_config_init(struct cake_sched_config *q, bool is_shared)
|
static void cake_config_init(struct cake_sched_config *q, bool is_shared)
|
||||||
@@ -2827,13 +2826,9 @@ static int cake_init(struct Qdisc *sch,
|
@@ -2830,13 +2829,9 @@ static int cake_init(struct Qdisc *sch,
|
||||||
struct netlink_ext_ack *extack)
|
struct netlink_ext_ack *extack)
|
||||||
{
|
{
|
||||||
struct cake_sched_data *qd = qdisc_priv(sch);
|
struct cake_sched_data *qd = qdisc_priv(sch);
|
||||||
@ -57,7 +57,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
cake_config_init(q, false);
|
cake_config_init(q, false);
|
||||||
|
|
||||||
sch->limit = 10240;
|
sch->limit = 10240;
|
||||||
@@ -2845,14 +2840,13 @@ static int cake_init(struct Qdisc *sch,
|
@@ -2848,14 +2843,13 @@ static int cake_init(struct Qdisc *sch,
|
||||||
|
|
||||||
if (opt) {
|
if (opt) {
|
||||||
err = cake_change(sch, opt, extack);
|
err = cake_change(sch, opt, extack);
|
||||||
@ -74,7 +74,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
quantum_div[0] = ~0;
|
quantum_div[0] = ~0;
|
||||||
for (i = 1; i <= CAKE_QUEUES; i++)
|
for (i = 1; i <= CAKE_QUEUES; i++)
|
||||||
@@ -2860,10 +2854,8 @@ static int cake_init(struct Qdisc *sch,
|
@@ -2863,10 +2857,8 @@ static int cake_init(struct Qdisc *sch,
|
||||||
|
|
||||||
qd->tins = kvcalloc(CAKE_MAX_TINS, sizeof(struct cake_tin_data),
|
qd->tins = kvcalloc(CAKE_MAX_TINS, sizeof(struct cake_tin_data),
|
||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
for (i = 0; i < CAKE_MAX_TINS; i++) {
|
for (i = 0; i < CAKE_MAX_TINS; i++) {
|
||||||
struct cake_tin_data *b = qd->tins + i;
|
struct cake_tin_data *b = qd->tins + i;
|
||||||
@@ -2896,22 +2888,13 @@ static int cake_init(struct Qdisc *sch,
|
@@ -2899,22 +2891,13 @@ static int cake_init(struct Qdisc *sch,
|
||||||
qd->last_checked_active = 0;
|
qd->last_checked_active = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@ -48,7 +48,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
}
|
}
|
||||||
|
|
||||||
begin:
|
begin:
|
||||||
@@ -2367,12 +2364,10 @@ static void cake_set_rate(struct cake_ti
|
@@ -2370,12 +2367,10 @@ static void cake_set_rate(struct cake_ti
|
||||||
b->cparams.p_dec = 1 << 20; /* 1/4096 */
|
b->cparams.p_dec = 1 << 20; /* 1/4096 */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
q->tin_cnt = 1;
|
q->tin_cnt = 1;
|
||||||
|
|
||||||
@@ -2386,12 +2381,10 @@ static int cake_config_besteffort(struct
|
@@ -2389,12 +2384,10 @@ static int cake_config_besteffort(struct
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
u32 quantum = 256;
|
u32 quantum = 256;
|
||||||
u32 i;
|
u32 i;
|
||||||
|
|
||||||
@@ -2462,7 +2455,7 @@ static int cake_config_precedence(struct
|
@@ -2465,7 +2458,7 @@ static int cake_config_precedence(struct
|
||||||
* Total 12 traffic classes.
|
* Total 12 traffic classes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
{
|
{
|
||||||
/* Pruned list of traffic classes for typical applications:
|
/* Pruned list of traffic classes for typical applications:
|
||||||
*
|
*
|
||||||
@@ -2479,8 +2472,6 @@ static int cake_config_diffserv8(struct
|
@@ -2482,8 +2475,6 @@ static int cake_config_diffserv8(struct
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct cake_sched_data *q = qdisc_priv(sch);
|
struct cake_sched_data *q = qdisc_priv(sch);
|
||||||
@ -94,7 +94,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
u32 quantum = 256;
|
u32 quantum = 256;
|
||||||
u32 i;
|
u32 i;
|
||||||
|
|
||||||
@@ -2510,7 +2501,7 @@ static int cake_config_diffserv8(struct
|
@@ -2513,7 +2504,7 @@ static int cake_config_diffserv8(struct
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,7 +103,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
{
|
{
|
||||||
/* Further pruned list of traffic classes for four-class system:
|
/* Further pruned list of traffic classes for four-class system:
|
||||||
*
|
*
|
||||||
@@ -2523,8 +2514,6 @@ static int cake_config_diffserv4(struct
|
@@ -2526,8 +2517,6 @@ static int cake_config_diffserv4(struct
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct cake_sched_data *q = qdisc_priv(sch);
|
struct cake_sched_data *q = qdisc_priv(sch);
|
||||||
@ -112,7 +112,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
u32 quantum = 1024;
|
u32 quantum = 1024;
|
||||||
|
|
||||||
q->tin_cnt = 4;
|
q->tin_cnt = 4;
|
||||||
@@ -2552,7 +2541,7 @@ static int cake_config_diffserv4(struct
|
@@ -2555,7 +2544,7 @@ static int cake_config_diffserv4(struct
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
{
|
{
|
||||||
/* Simplified Diffserv structure with 3 tins.
|
/* Simplified Diffserv structure with 3 tins.
|
||||||
* Latency Sensitive (CS7, CS6, EF, VA, TOS4)
|
* Latency Sensitive (CS7, CS6, EF, VA, TOS4)
|
||||||
@@ -2560,8 +2549,6 @@ static int cake_config_diffserv3(struct
|
@@ -2563,8 +2552,6 @@ static int cake_config_diffserv3(struct
|
||||||
* Low Priority (LE, CS1)
|
* Low Priority (LE, CS1)
|
||||||
*/
|
*/
|
||||||
struct cake_sched_data *q = qdisc_priv(sch);
|
struct cake_sched_data *q = qdisc_priv(sch);
|
||||||
@ -130,7 +130,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
u32 quantum = 1024;
|
u32 quantum = 1024;
|
||||||
|
|
||||||
q->tin_cnt = 3;
|
q->tin_cnt = 3;
|
||||||
@@ -2586,32 +2573,33 @@ static int cake_config_diffserv3(struct
|
@@ -2589,32 +2576,33 @@ static int cake_config_diffserv3(struct
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,7 +170,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2622,6 +2610,14 @@ static void cake_reconfigure(struct Qdis
|
@@ -2625,6 +2613,14 @@ static void cake_reconfigure(struct Qdis
|
||||||
|
|
||||||
qd->rate_ns = qd->tins[ft].tin_rate_ns;
|
qd->rate_ns = qd->tins[ft].tin_rate_ns;
|
||||||
qd->rate_shft = qd->tins[ft].tin_rate_shft;
|
qd->rate_shft = qd->tins[ft].tin_rate_shft;
|
||||||
|
|||||||
@ -1,31 +0,0 @@
|
|||||||
From 48afd5124fd6129c46fd12cb06155384b1c4a0c4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Chih Kai Hsu <hsu.chih.kai@realtek.com>
|
|
||||||
Date: Thu, 26 Mar 2026 15:39:23 +0800
|
|
||||||
Subject: [PATCH] r8152: fix incorrect register write to USB_UPHY_XTAL
|
|
||||||
|
|
||||||
The old code used ocp_write_byte() to clear the OOBS_POLLING bit
|
|
||||||
(BIT(8)) in the USB_UPHY_XTAL register, but this doesn't correctly
|
|
||||||
clear a bit in the upper byte of the 16-bit register.
|
|
||||||
|
|
||||||
Fix this by using ocp_write_word() instead.
|
|
||||||
|
|
||||||
Fixes: 195aae321c82 ("r8152: support new chips")
|
|
||||||
Signed-off-by: Chih Kai Hsu <hsu.chih.kai@realtek.com>
|
|
||||||
Reviewed-by: Hayes Wang <hayeswang@realtek.com>
|
|
||||||
Link: https://patch.msgid.link/20260326073925.32976-454-nic_swsd@realtek.com
|
|
||||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|
||||||
---
|
|
||||||
drivers/net/usb/r8152.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/drivers/net/usb/r8152.c
|
|
||||||
+++ b/drivers/net/usb/r8152.c
|
|
||||||
@@ -3898,7 +3898,7 @@ static void r8156_ups_en(struct r8152 *t
|
|
||||||
case RTL_VER_15:
|
|
||||||
ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_UPHY_XTAL);
|
|
||||||
ocp_data &= ~OOBS_POLLING;
|
|
||||||
- ocp_write_byte(tp, MCU_TYPE_USB, USB_UPHY_XTAL, ocp_data);
|
|
||||||
+ ocp_write_word(tp, MCU_TYPE_USB, USB_UPHY_XTAL, ocp_data);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
From b7abbc8c7acaeb60c114b038f1fa91bbedb3d16a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aleksander Jan Bajkowski <olek2@wp.pl>
|
|
||||||
Date: Sun, 8 Feb 2026 11:35:53 +0100
|
|
||||||
Subject: [PATCH] crypto: inside-secure/eip93 - fix register definition
|
|
||||||
|
|
||||||
Checked the register definitions with the documentation[1]. Turns out
|
|
||||||
that the PKTE_INBUF_CNT register has a bad offset. It's used in Direct
|
|
||||||
Host Mode (DHM). The driver uses Autonomous Ring Mode (ARM), so it
|
|
||||||
causes no harm.
|
|
||||||
|
|
||||||
1. ADSP-SC58x/ADSP-2158x SHARC+ Processor Hardware Reference
|
|
||||||
Fixes: 9739f5f93b78 ("crypto: eip93 - Add Inside Secure SafeXcel EIP-93 crypto engine support")
|
|
||||||
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
|
|
||||||
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
|
||||||
---
|
|
||||||
drivers/crypto/inside-secure/eip93/eip93-regs.h | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/drivers/crypto/inside-secure/eip93/eip93-regs.h
|
|
||||||
+++ b/drivers/crypto/inside-secure/eip93/eip93-regs.h
|
|
||||||
@@ -109,7 +109,7 @@
|
|
||||||
#define EIP93_REG_PE_BUF_THRESH 0x10c
|
|
||||||
#define EIP93_PE_OUTBUF_THRESH GENMASK(23, 16)
|
|
||||||
#define EIP93_PE_INBUF_THRESH GENMASK(7, 0)
|
|
||||||
-#define EIP93_REG_PE_INBUF_COUNT 0x100
|
|
||||||
+#define EIP93_REG_PE_INBUF_COUNT 0x110
|
|
||||||
#define EIP93_REG_PE_OUTBUF_COUNT 0x114
|
|
||||||
#define EIP93_REG_PE_BUF_RW_PNTR 0x118 /* BUF_PNTR */
|
|
||||||
|
|
||||||
@ -1,58 +0,0 @@
|
|||||||
From 5377032914b29b4643adece0ff1dfc67e36700f4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aleksander Jan Bajkowski <olek2@wp.pl>
|
|
||||||
Date: Fri, 6 Mar 2026 23:17:40 +0100
|
|
||||||
Subject: [PATCH] crypto: inside-secure/eip93 - register hash before
|
|
||||||
authenc algorithms
|
|
||||||
|
|
||||||
Register hash before hmac and authenc algorithms. This will ensure
|
|
||||||
selftests pass at startup. Previously, selftests failed on the
|
|
||||||
crypto_alloc_ahash() function since the associated algorithm was
|
|
||||||
not yet registered.
|
|
||||||
|
|
||||||
Fixes following error:
|
|
||||||
...
|
|
||||||
[ 18.375811] alg: self-tests for authenc(hmac(sha1),cbc(aes)) using authenc(hmac(sha1-eip93),cbc(aes-eip93)) failed (rc=-2)
|
|
||||||
[ 18.382140] alg: self-tests for authenc(hmac(sha224),rfc3686(ctr(aes))) using authenc(hmac(sha224-eip93),rfc3686(ctr(aes-eip93))) failed (rc=-2)
|
|
||||||
[ 18.395029] alg: aead: authenc(hmac(sha256-eip93),cbc(des-eip93)) setkey failed on test vector 0; expected_error=0, actual_error=-2, flags=0x1
|
|
||||||
[ 18.409734] alg: aead: authenc(hmac(md5-eip93),cbc(des3_ede-eip93)) setkey failed on test vector 0; expected_error=0, actual_error=-2, flags=0x1
|
|
||||||
...
|
|
||||||
|
|
||||||
Fixes: 9739f5f93b78 ("crypto: eip93 - Add Inside Secure SafeXcel EIP-93 crypto engine support")
|
|
||||||
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
|
|
||||||
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
|
||||||
---
|
|
||||||
drivers/crypto/inside-secure/eip93/eip93-main.c | 16 ++++++++--------
|
|
||||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/crypto/inside-secure/eip93/eip93-main.c
|
|
||||||
+++ b/drivers/crypto/inside-secure/eip93/eip93-main.c
|
|
||||||
@@ -36,6 +36,14 @@ static struct eip93_alg_template *eip93_
|
|
||||||
&eip93_alg_cbc_aes,
|
|
||||||
&eip93_alg_ctr_aes,
|
|
||||||
&eip93_alg_rfc3686_aes,
|
|
||||||
+ &eip93_alg_md5,
|
|
||||||
+ &eip93_alg_sha1,
|
|
||||||
+ &eip93_alg_sha224,
|
|
||||||
+ &eip93_alg_sha256,
|
|
||||||
+ &eip93_alg_hmac_md5,
|
|
||||||
+ &eip93_alg_hmac_sha1,
|
|
||||||
+ &eip93_alg_hmac_sha224,
|
|
||||||
+ &eip93_alg_hmac_sha256,
|
|
||||||
&eip93_alg_authenc_hmac_md5_cbc_des,
|
|
||||||
&eip93_alg_authenc_hmac_sha1_cbc_des,
|
|
||||||
&eip93_alg_authenc_hmac_sha224_cbc_des,
|
|
||||||
@@ -52,14 +60,6 @@ static struct eip93_alg_template *eip93_
|
|
||||||
&eip93_alg_authenc_hmac_sha1_rfc3686_aes,
|
|
||||||
&eip93_alg_authenc_hmac_sha224_rfc3686_aes,
|
|
||||||
&eip93_alg_authenc_hmac_sha256_rfc3686_aes,
|
|
||||||
- &eip93_alg_md5,
|
|
||||||
- &eip93_alg_sha1,
|
|
||||||
- &eip93_alg_sha224,
|
|
||||||
- &eip93_alg_sha256,
|
|
||||||
- &eip93_alg_hmac_md5,
|
|
||||||
- &eip93_alg_hmac_sha1,
|
|
||||||
- &eip93_alg_hmac_sha224,
|
|
||||||
- &eip93_alg_hmac_sha256,
|
|
||||||
};
|
|
||||||
|
|
||||||
inline void eip93_irq_disable(struct eip93_device *eip93, u32 mask)
|
|
||||||
@ -219,7 +219,7 @@ Link: https://patch.msgid.link/20251128212055.1409093-3-rrendec@redhat.com
|
|||||||
irq_domain_remove(pp->irq_domain);
|
irq_domain_remove(pp->irq_domain);
|
||||||
--- a/drivers/pci/controller/dwc/pcie-designware.h
|
--- a/drivers/pci/controller/dwc/pcie-designware.h
|
||||||
+++ b/drivers/pci/controller/dwc/pcie-designware.h
|
+++ b/drivers/pci/controller/dwc/pcie-designware.h
|
||||||
@@ -810,7 +810,7 @@ static inline enum dw_pcie_ltssm dw_pcie
|
@@ -812,7 +812,7 @@ static inline enum dw_pcie_ltssm dw_pcie
|
||||||
#ifdef CONFIG_PCIE_DW_HOST
|
#ifdef CONFIG_PCIE_DW_HOST
|
||||||
int dw_pcie_suspend_noirq(struct dw_pcie *pci);
|
int dw_pcie_suspend_noirq(struct dw_pcie *pci);
|
||||||
int dw_pcie_resume_noirq(struct dw_pcie *pci);
|
int dw_pcie_resume_noirq(struct dw_pcie *pci);
|
||||||
@ -228,7 +228,7 @@ Link: https://patch.msgid.link/20251128212055.1409093-3-rrendec@redhat.com
|
|||||||
void dw_pcie_msi_init(struct dw_pcie_rp *pp);
|
void dw_pcie_msi_init(struct dw_pcie_rp *pp);
|
||||||
int dw_pcie_msi_host_init(struct dw_pcie_rp *pp);
|
int dw_pcie_msi_host_init(struct dw_pcie_rp *pp);
|
||||||
void dw_pcie_free_msi(struct dw_pcie_rp *pp);
|
void dw_pcie_free_msi(struct dw_pcie_rp *pp);
|
||||||
@@ -831,10 +831,7 @@ static inline int dw_pcie_resume_noirq(s
|
@@ -833,10 +833,7 @@ static inline int dw_pcie_resume_noirq(s
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,34 +0,0 @@
|
|||||||
From 0c078021d3861966614d5e594ee03587f0c9e74d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mieczyslaw Nalewaj <namiltd@yahoo.com>
|
|
||||||
Date: Sun, 19 Apr 2026 21:37:07 +0200
|
|
||||||
Subject: net: dsa: realtek: rtl8365mb: fix mode mask calculation
|
|
||||||
|
|
||||||
The RTL8365MB_DIGITAL_INTERFACE_SELECT_MODE_MASK macro was shifting
|
|
||||||
the 4-bit mask (0xF) by only (_extint % 2) bits instead of
|
|
||||||
(_extint % 2) * 4. This caused the mask to overlap with the adjacent
|
|
||||||
nibble when configuring odd-numbered external interfaces, selecting
|
|
||||||
the wrong bits entirely.
|
|
||||||
|
|
||||||
Align the shift calculation with the existing ...MODE_OFFSET macro.
|
|
||||||
|
|
||||||
Fixes: 4af2950c50c8 ("net: dsa: realtek-smi: add rtl8365mb subdriver for RTL8365MB-VC")
|
|
||||||
Signed-off-by: Abdulkader Alrezej <alrazj.abdulkader@gmail.com>
|
|
||||||
Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
|
|
||||||
Reviewed-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
|
|
||||||
Link: https://patch.msgid.link/400a6387-a444-4576-af6d-26be5410bce3@yahoo.com
|
|
||||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|
||||||
---
|
|
||||||
drivers/net/dsa/realtek/rtl8365mb.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/drivers/net/dsa/realtek/rtl8365mb.c
|
|
||||||
+++ b/drivers/net/dsa/realtek/rtl8365mb.c
|
|
||||||
@@ -216,7 +216,7 @@
|
|
||||||
(_extint) == 2 ? RTL8365MB_DIGITAL_INTERFACE_SELECT_REG1 : \
|
|
||||||
0x0)
|
|
||||||
#define RTL8365MB_DIGITAL_INTERFACE_SELECT_MODE_MASK(_extint) \
|
|
||||||
- (0xF << (((_extint) % 2)))
|
|
||||||
+ (0xF << (((_extint) % 2) * 4))
|
|
||||||
#define RTL8365MB_DIGITAL_INTERFACE_SELECT_MODE_OFFSET(_extint) \
|
|
||||||
(((_extint) % 2) * 4)
|
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ Signed-off-by: Jonas Köppeler <j.koeppeler@tu-berlin.de>
|
|||||||
struct net_device *dev = qdisc_dev(sch);
|
struct net_device *dev = qdisc_dev(sch);
|
||||||
struct cake_sched_data *other_priv;
|
struct cake_sched_data *other_priv;
|
||||||
u64 new_rate = q->config->rate_bps;
|
u64 new_rate = q->config->rate_bps;
|
||||||
@@ -3358,8 +3361,13 @@ static int __init cake_module_init(void)
|
@@ -3361,8 +3364,13 @@ static int __init cake_module_init(void)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = register_qdisc(&cake_mq_qdisc_ops);
|
ret = register_qdisc(&cake_mq_qdisc_ops);
|
||||||
@ -58,7 +58,7 @@ Signed-off-by: Jonas Köppeler <j.koeppeler@tu-berlin.de>
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -3368,6 +3376,7 @@ static void __exit cake_module_exit(void
|
@@ -3371,6 +3379,7 @@ static void __exit cake_module_exit(void
|
||||||
{
|
{
|
||||||
unregister_qdisc(&cake_qdisc_ops);
|
unregister_qdisc(&cake_qdisc_ops);
|
||||||
unregister_qdisc(&cake_mq_qdisc_ops);
|
unregister_qdisc(&cake_mq_qdisc_ops);
|
||||||
|
|||||||
@ -32,7 +32,7 @@ Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
|
|||||||
mod##SNMP_UPD_PO_STATS((net)->mib.statname##_statistics, field, _val);\
|
mod##SNMP_UPD_PO_STATS((net)->mib.statname##_statistics, field, _val);\
|
||||||
--- a/net/ipv4/tcp_input.c
|
--- a/net/ipv4/tcp_input.c
|
||||||
+++ b/net/ipv4/tcp_input.c
|
+++ b/net/ipv4/tcp_input.c
|
||||||
@@ -3967,6 +3967,12 @@ static u32 tcp_newly_delivered(struct so
|
@@ -3969,6 +3969,12 @@ static u32 tcp_newly_delivered(struct so
|
||||||
struct tcp_sock *tp = tcp_sk(sk);
|
struct tcp_sock *tp = tcp_sk(sk);
|
||||||
u32 delivered;
|
u32 delivered;
|
||||||
|
|
||||||
|
|||||||
@ -1,2 +1,2 @@
|
|||||||
LINUX_VERSION-6.18 = .32
|
LINUX_VERSION-6.18 = .33
|
||||||
LINUX_KERNEL_HASH-6.18.32 = 067dadd445578284ea6158f312f7970d8940fed3e094dbe49cff66d188d3bda4
|
LINUX_KERNEL_HASH-6.18.33 = 6f16ff302599f6fe34742890322cf0775703105fbd8767449682fca6af0fb782
|
||||||
|
|||||||
@ -74,7 +74,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
static const struct flash_info spi_nor_generic_flash = {
|
static const struct flash_info spi_nor_generic_flash = {
|
||||||
--- a/drivers/mtd/spi-nor/core.h
|
--- a/drivers/mtd/spi-nor/core.h
|
||||||
+++ b/drivers/mtd/spi-nor/core.h
|
+++ b/drivers/mtd/spi-nor/core.h
|
||||||
@@ -598,6 +598,7 @@ extern const struct spi_nor_manufacturer
|
@@ -604,6 +604,7 @@ extern const struct spi_nor_manufacturer
|
||||||
extern const struct spi_nor_manufacturer spi_nor_sst;
|
extern const struct spi_nor_manufacturer spi_nor_sst;
|
||||||
extern const struct spi_nor_manufacturer spi_nor_winbond;
|
extern const struct spi_nor_manufacturer spi_nor_winbond;
|
||||||
extern const struct spi_nor_manufacturer spi_nor_xmc;
|
extern const struct spi_nor_manufacturer spi_nor_xmc;
|
||||||
|
|||||||
@ -50,7 +50,7 @@ Submitted-by: Daniel Danzberger <daniel@dd-wrt.com>
|
|||||||
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
|
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
|
||||||
--- a/drivers/mtd/nand/spi/core.c
|
--- a/drivers/mtd/nand/spi/core.c
|
||||||
+++ b/drivers/mtd/nand/spi/core.c
|
+++ b/drivers/mtd/nand/spi/core.c
|
||||||
@@ -1237,6 +1237,7 @@ static const struct spinand_manufacturer
|
@@ -1228,6 +1228,7 @@ static const struct spinand_manufacturer
|
||||||
&ato_spinand_manufacturer,
|
&ato_spinand_manufacturer,
|
||||||
&esmt_8c_spinand_manufacturer,
|
&esmt_8c_spinand_manufacturer,
|
||||||
&esmt_c8_spinand_manufacturer,
|
&esmt_c8_spinand_manufacturer,
|
||||||
@ -161,7 +161,7 @@ Submitted-by: Daniel Danzberger <daniel@dd-wrt.com>
|
|||||||
+};
|
+};
|
||||||
--- a/include/linux/mtd/spinand.h
|
--- a/include/linux/mtd/spinand.h
|
||||||
+++ b/include/linux/mtd/spinand.h
|
+++ b/include/linux/mtd/spinand.h
|
||||||
@@ -356,6 +356,7 @@ extern const struct spinand_manufacturer
|
@@ -362,6 +362,7 @@ extern const struct spinand_manufacturer
|
||||||
extern const struct spinand_manufacturer ato_spinand_manufacturer;
|
extern const struct spinand_manufacturer ato_spinand_manufacturer;
|
||||||
extern const struct spinand_manufacturer esmt_8c_spinand_manufacturer;
|
extern const struct spinand_manufacturer esmt_8c_spinand_manufacturer;
|
||||||
extern const struct spinand_manufacturer esmt_c8_spinand_manufacturer;
|
extern const struct spinand_manufacturer esmt_c8_spinand_manufacturer;
|
||||||
|
|||||||
@ -35,7 +35,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
| NETIF_F_HW_CSUM
|
| NETIF_F_HW_CSUM
|
||||||
--- a/drivers/net/macvlan.c
|
--- a/drivers/net/macvlan.c
|
||||||
+++ b/drivers/net/macvlan.c
|
+++ b/drivers/net/macvlan.c
|
||||||
@@ -904,7 +904,7 @@ static int macvlan_hwtstamp_set(struct n
|
@@ -905,7 +905,7 @@ static int macvlan_hwtstamp_set(struct n
|
||||||
static struct lock_class_key macvlan_netdev_addr_lock_key;
|
static struct lock_class_key macvlan_netdev_addr_lock_key;
|
||||||
|
|
||||||
#define ALWAYS_ON_OFFLOADS \
|
#define ALWAYS_ON_OFFLOADS \
|
||||||
|
|||||||
@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/net/netfilter/nf_tables_api.c
|
--- a/net/netfilter/nf_tables_api.c
|
||||||
+++ b/net/netfilter/nf_tables_api.c
|
+++ b/net/netfilter/nf_tables_api.c
|
||||||
@@ -9091,7 +9091,7 @@ static int nft_register_flowtable_ops(st
|
@@ -9092,7 +9092,7 @@ static int nft_register_flowtable_ops(st
|
||||||
|
|
||||||
err = flowtable->data.type->setup(&flowtable->data,
|
err = flowtable->data.type->setup(&flowtable->data,
|
||||||
ops->dev, FLOW_BLOCK_BIND);
|
ops->dev, FLOW_BLOCK_BIND);
|
||||||
|
|||||||
@ -68,7 +68,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|||||||
|
|
||||||
/* show configuration fields */
|
/* show configuration fields */
|
||||||
#define pci_config_attr(field, format_string) \
|
#define pci_config_attr(field, format_string) \
|
||||||
@@ -1701,12 +1703,32 @@ static const struct attribute_group pci_
|
@@ -1673,12 +1675,32 @@ static const struct attribute_group pci_
|
||||||
.is_visible = resource_resize_is_visible,
|
.is_visible = resource_resize_is_visible,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1727,21 +1749,23 @@ static int __init pci_sysfs_init(void)
|
@@ -1699,21 +1721,23 @@ static int __init pci_sysfs_init(void)
|
||||||
{
|
{
|
||||||
struct pci_dev *pdev = NULL;
|
struct pci_dev *pdev = NULL;
|
||||||
struct pci_bus *pbus = NULL;
|
struct pci_bus *pbus = NULL;
|
||||||
|
|||||||
@ -1,82 +0,0 @@
|
|||||||
From: Aleksander Jan Bajkowski <olek2@wp.pl>
|
|
||||||
Date: Sat, 11 Apr 2026 23:08:17 +0200
|
|
||||||
Subject: [PATCH] crypto: inside-secure/eip93 - eip93: fix hmac setkey algo
|
|
||||||
selection
|
|
||||||
|
|
||||||
eip93_hmac_setkey() allocates a temporary ahash transform for
|
|
||||||
computing HMAC ipad/opad key material. The allocation uses the
|
|
||||||
driver-specific cra_driver_name (e.g. "sha256-eip93") but passes
|
|
||||||
CRYPTO_ALG_ASYNC as the mask, which excludes async algorithms.
|
|
||||||
|
|
||||||
Since the EIP93 hash algorithms are the only ones registered
|
|
||||||
under those driver names and they are inherently async, the
|
|
||||||
lookup is self-contradictory and always fails with -ENOENT.
|
|
||||||
|
|
||||||
When called from the AEAD setkey path, this failure leaves the
|
|
||||||
SA record partially initialized with zeroed digest fields. A
|
|
||||||
subsequent crypto operation then dereferences a NULL pointer in
|
|
||||||
the request context, resulting in a kernel panic:
|
|
||||||
|
|
||||||
```
|
|
||||||
pc : eip93_aead_handle_result+0xc8c/0x1240 [crypto_hw_eip93]
|
|
||||||
lr : eip93_aead_handle_result+0xbec/0x1240 [crypto_hw_eip93]
|
|
||||||
sp : ffffffc082feb820
|
|
||||||
x29: ffffffc082feb820 x28: ffffff8011043980 x27: 0000000000000000
|
|
||||||
x26: 0000000000000000 x25: ffffffc078da0bc8 x24: 0000000091043980
|
|
||||||
x23: ffffff8004d59e50 x22: ffffff8004d59410 x21: ffffff8004d593c0
|
|
||||||
x20: ffffff8004d593c0 x19: ffffff8004d4f300 x18: 0000000000000000
|
|
||||||
x17: 0000000000000000 x16: 0000000000000000 x15: 0000007fda7aa498
|
|
||||||
x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
|
|
||||||
x11: 0000000000000000 x10: fffffffff8127a80 x9 : 0000000000000000
|
|
||||||
x8 : ffffff8004d4f380 x7 : 0000000000000000 x6 : 000000000000003f
|
|
||||||
x5 : 0000000000000040 x4 : 0000000000000008 x3 : 0000000000000009
|
|
||||||
x2 : 0000000000000008 x1 : 0000000028000003 x0 : ffffff8004d388c0
|
|
||||||
Code: 910142b6 f94012e0 f9002aa0 f90006d3 (f9400740)
|
|
||||||
```
|
|
||||||
|
|
||||||
The reported symbol eip93_aead_handle_result+0xc8c is a
|
|
||||||
resolution artifact from static functions being merged under
|
|
||||||
the nearest exported symbol. Decoding the faulting sequence:
|
|
||||||
|
|
||||||
```
|
|
||||||
910142b6 ADD X22, X21, #0x50
|
|
||||||
f94012e0 LDR X0, [X23, #0x20]
|
|
||||||
f9002aa0 STR X0, [X21, #0x50]
|
|
||||||
f90006d3 STR X19, [X22, #0x8]
|
|
||||||
f9400740 LDR X0, [X26, #0x8]
|
|
||||||
```
|
|
||||||
|
|
||||||
The faulting LDR at [X26, #0x8] is loading ctx->flags
|
|
||||||
(offset 8 in eip93_hash_ctx), where ctx has been resolved
|
|
||||||
to NULL from a partially initialized or unreachable
|
|
||||||
transform context following the failed setkey.
|
|
||||||
|
|
||||||
Fix this by dropping the CRYPTO_ALG_ASYNC mask from the
|
|
||||||
crypto_alloc_ahash() call. The code already handles async
|
|
||||||
completion correctly via crypto_wait_req(), so there is no
|
|
||||||
requirement to restrict the lookup to synchronous algorithms.
|
|
||||||
|
|
||||||
Note that hashing a single 64-byte block through the hardware
|
|
||||||
is likely slower than doing it in software due to the DMA
|
|
||||||
round-trip overhead, but offloading it may still spare CPU
|
|
||||||
cycles on the slower embedded cores where this IP is found.
|
|
||||||
|
|
||||||
Fixes: 9739f5f93b78 ("crypto: eip93 - Add Inside Secure SafeXcel EIP-93 crypto engine support")
|
|
||||||
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
|
|
||||||
[Detailed investigation report of this bug]
|
|
||||||
Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
|
|
||||||
---
|
|
||||||
drivers/crypto/inside-secure/eip93/eip93-common.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/drivers/crypto/inside-secure/eip93/eip93-common.c
|
|
||||||
+++ b/drivers/crypto/inside-secure/eip93/eip93-common.c
|
|
||||||
@@ -731,7 +731,7 @@ int eip93_hmac_setkey(u32 ctx_flags, con
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
- ahash_tfm = crypto_alloc_ahash(alg_name, 0, CRYPTO_ALG_ASYNC);
|
|
||||||
+ ahash_tfm = crypto_alloc_ahash(alg_name, 0, 0);
|
|
||||||
if (IS_ERR(ahash_tfm))
|
|
||||||
return PTR_ERR(ahash_tfm);
|
|
||||||
|
|
||||||
@ -136,7 +136,7 @@ Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
|
|||||||
#include <net/dst.h>
|
#include <net/dst.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
#include <net/checksum.h>
|
#include <net/checksum.h>
|
||||||
@@ -5082,6 +5086,9 @@ static const u8 skb_ext_type_len[] = {
|
@@ -5089,6 +5093,9 @@ static const u8 skb_ext_type_len[] = {
|
||||||
#if IS_ENABLED(CONFIG_INET_PSP)
|
#if IS_ENABLED(CONFIG_INET_PSP)
|
||||||
[SKB_EXT_PSP] = SKB_EXT_CHUNKSIZEOF(struct psp_skb_ext),
|
[SKB_EXT_PSP] = SKB_EXT_CHUNKSIZEOF(struct psp_skb_ext),
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -43,7 +43,7 @@ Signed-off-by: Florian Maurer <f.maurer@outlook.com>
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define QCOM_PCIE_2_7_0_MAX_SUPPLIES 2
|
#define QCOM_PCIE_2_7_0_MAX_SUPPLIES 2
|
||||||
@@ -727,12 +740,65 @@ static int qcom_pcie_post_init_2_3_2(str
|
@@ -732,12 +745,65 @@ static int qcom_pcie_post_init_2_3_2(str
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ Signed-off-by: Florian Maurer <f.maurer@outlook.com>
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
res->num_clks = devm_clk_bulk_get_all(dev, &res->clks);
|
res->num_clks = devm_clk_bulk_get_all(dev, &res->clks);
|
||||||
@@ -771,6 +837,17 @@ static void qcom_pcie_deinit_2_4_0(struc
|
@@ -776,6 +842,17 @@ static void qcom_pcie_deinit_2_4_0(struc
|
||||||
clk_bulk_disable_unprepare(res->num_clks, res->clks);
|
clk_bulk_disable_unprepare(res->num_clks, res->clks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ Signed-off-by: Florian Maurer <f.maurer@outlook.com>
|
|||||||
static int qcom_pcie_init_2_4_0(struct qcom_pcie *pcie)
|
static int qcom_pcie_init_2_4_0(struct qcom_pcie *pcie)
|
||||||
{
|
{
|
||||||
struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0;
|
struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0;
|
||||||
@@ -1379,6 +1456,16 @@ static const struct qcom_pcie_ops ops_2_
|
@@ -1384,6 +1461,16 @@ static const struct qcom_pcie_ops ops_2_
|
||||||
.ltssm_enable = qcom_pcie_2_3_2_ltssm_enable,
|
.ltssm_enable = qcom_pcie_2_3_2_ltssm_enable,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -145,7 +145,7 @@ Signed-off-by: Florian Maurer <f.maurer@outlook.com>
|
|||||||
/* Qcom IP rev.: 2.3.3 Synopsys IP rev.: 4.30a */
|
/* Qcom IP rev.: 2.3.3 Synopsys IP rev.: 4.30a */
|
||||||
static const struct qcom_pcie_ops ops_2_3_3 = {
|
static const struct qcom_pcie_ops ops_2_3_3 = {
|
||||||
.get_resources = qcom_pcie_get_resources_2_3_3,
|
.get_resources = qcom_pcie_get_resources_2_3_3,
|
||||||
@@ -1457,6 +1544,10 @@ static const struct qcom_pcie_cfg cfg_2_
|
@@ -1462,6 +1549,10 @@ static const struct qcom_pcie_cfg cfg_2_
|
||||||
.ops = &ops_2_4_0,
|
.ops = &ops_2_4_0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -156,7 +156,7 @@ Signed-off-by: Florian Maurer <f.maurer@outlook.com>
|
|||||||
static const struct qcom_pcie_cfg cfg_2_7_0 = {
|
static const struct qcom_pcie_cfg cfg_2_7_0 = {
|
||||||
.ops = &ops_2_7_0,
|
.ops = &ops_2_7_0,
|
||||||
};
|
};
|
||||||
@@ -2016,6 +2107,7 @@ static const struct of_device_id qcom_pc
|
@@ -2021,6 +2112,7 @@ static const struct of_device_id qcom_pc
|
||||||
{ .compatible = "qcom,pcie-apq8064", .data = &cfg_2_1_0 },
|
{ .compatible = "qcom,pcie-apq8064", .data = &cfg_2_1_0 },
|
||||||
{ .compatible = "qcom,pcie-apq8084", .data = &cfg_1_0_0 },
|
{ .compatible = "qcom,pcie-apq8084", .data = &cfg_1_0_0 },
|
||||||
{ .compatible = "qcom,pcie-ipq4019", .data = &cfg_2_4_0 },
|
{ .compatible = "qcom,pcie-ipq4019", .data = &cfg_2_4_0 },
|
||||||
|
|||||||
@ -4,7 +4,7 @@ Subject: [PATCH] UGW_SW-29163: ATM oam support
|
|||||||
|
|
||||||
--- a/drivers/net/ppp/ppp_generic.c
|
--- a/drivers/net/ppp/ppp_generic.c
|
||||||
+++ b/drivers/net/ppp/ppp_generic.c
|
+++ b/drivers/net/ppp/ppp_generic.c
|
||||||
@@ -3003,6 +3003,24 @@ char *ppp_dev_name(struct ppp_channel *c
|
@@ -3006,6 +3006,24 @@ char *ppp_dev_name(struct ppp_channel *c
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ Subject: [PATCH] UGW_SW-29163: ATM oam support
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Disconnect a channel from the generic layer.
|
* Disconnect a channel from the generic layer.
|
||||||
@@ -3664,6 +3682,7 @@ EXPORT_SYMBOL(ppp_unregister_channel);
|
@@ -3667,6 +3685,7 @@ EXPORT_SYMBOL(ppp_unregister_channel);
|
||||||
EXPORT_SYMBOL(ppp_channel_index);
|
EXPORT_SYMBOL(ppp_channel_index);
|
||||||
EXPORT_SYMBOL(ppp_unit_number);
|
EXPORT_SYMBOL(ppp_unit_number);
|
||||||
EXPORT_SYMBOL(ppp_dev_name);
|
EXPORT_SYMBOL(ppp_dev_name);
|
||||||
|
|||||||
@ -5518,7 +5518,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
(transaction layer end-to-end CRC checking).
|
(transaction layer end-to-end CRC checking).
|
||||||
--- a/include/linux/pci.h
|
--- a/include/linux/pci.h
|
||||||
+++ b/include/linux/pci.h
|
+++ b/include/linux/pci.h
|
||||||
@@ -1660,6 +1660,8 @@ void pci_walk_bus(struct pci_bus *top, i
|
@@ -1654,6 +1654,8 @@ void pci_walk_bus(struct pci_bus *top, i
|
||||||
void *userdata);
|
void *userdata);
|
||||||
int pci_cfg_space_size(struct pci_dev *dev);
|
int pci_cfg_space_size(struct pci_dev *dev);
|
||||||
unsigned char pci_bus_max_busnr(struct pci_bus *bus);
|
unsigned char pci_bus_max_busnr(struct pci_bus *bus);
|
||||||
|
|||||||
@ -98,8 +98,8 @@ Signed-off-by: Mathias Kresin <openwrt@kresin.me>
|
|||||||
return nr_parts;
|
return nr_parts;
|
||||||
|
|
||||||
@@ -197,6 +249,7 @@ ofpart_none:
|
@@ -197,6 +249,7 @@ ofpart_none:
|
||||||
|
if (dedicated)
|
||||||
of_node_put(ofpart_node);
|
of_node_put(ofpart_node);
|
||||||
of_node_put(pp);
|
|
||||||
kfree(parts);
|
kfree(parts);
|
||||||
+ kfree(part_nodes);
|
+ kfree(part_nodes);
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@ -44,7 +44,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
|||||||
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
|
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
|
||||||
--- a/drivers/mtd/nand/spi/core.c
|
--- a/drivers/mtd/nand/spi/core.c
|
||||||
+++ b/drivers/mtd/nand/spi/core.c
|
+++ b/drivers/mtd/nand/spi/core.c
|
||||||
@@ -1235,6 +1235,7 @@ static const struct nand_ops spinand_ops
|
@@ -1226,6 +1226,7 @@ static const struct nand_ops spinand_ops
|
||||||
static const struct spinand_manufacturer *spinand_manufacturers[] = {
|
static const struct spinand_manufacturer *spinand_manufacturers[] = {
|
||||||
&alliancememory_spinand_manufacturer,
|
&alliancememory_spinand_manufacturer,
|
||||||
&ato_spinand_manufacturer,
|
&ato_spinand_manufacturer,
|
||||||
@ -148,7 +148,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
|||||||
+};
|
+};
|
||||||
--- a/include/linux/mtd/spinand.h
|
--- a/include/linux/mtd/spinand.h
|
||||||
+++ b/include/linux/mtd/spinand.h
|
+++ b/include/linux/mtd/spinand.h
|
||||||
@@ -354,6 +354,7 @@ struct spinand_manufacturer {
|
@@ -360,6 +360,7 @@ struct spinand_manufacturer {
|
||||||
/* SPI NAND manufacturers */
|
/* SPI NAND manufacturers */
|
||||||
extern const struct spinand_manufacturer alliancememory_spinand_manufacturer;
|
extern const struct spinand_manufacturer alliancememory_spinand_manufacturer;
|
||||||
extern const struct spinand_manufacturer ato_spinand_manufacturer;
|
extern const struct spinand_manufacturer ato_spinand_manufacturer;
|
||||||
|
|||||||
@ -11,7 +11,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
|||||||
---
|
---
|
||||||
--- a/drivers/mtd/nand/spi/core.c
|
--- a/drivers/mtd/nand/spi/core.c
|
||||||
+++ b/drivers/mtd/nand/spi/core.c
|
+++ b/drivers/mtd/nand/spi/core.c
|
||||||
@@ -979,7 +979,7 @@ static int spinand_mtd_write(struct mtd_
|
@@ -970,7 +970,7 @@ static int spinand_mtd_write(struct mtd_
|
||||||
static bool spinand_isbad(struct nand_device *nand, const struct nand_pos *pos)
|
static bool spinand_isbad(struct nand_device *nand, const struct nand_pos *pos)
|
||||||
{
|
{
|
||||||
struct spinand_device *spinand = nand_to_spinand(nand);
|
struct spinand_device *spinand = nand_to_spinand(nand);
|
||||||
@ -20,7 +20,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
|||||||
struct nand_page_io_req req = {
|
struct nand_page_io_req req = {
|
||||||
.pos = *pos,
|
.pos = *pos,
|
||||||
.ooblen = sizeof(marker),
|
.ooblen = sizeof(marker),
|
||||||
@@ -998,7 +998,7 @@ static bool spinand_isbad(struct nand_de
|
@@ -989,7 +989,7 @@ static bool spinand_isbad(struct nand_de
|
||||||
spinand_read_page(spinand, &req);
|
spinand_read_page(spinand, &req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
|||||||
|
|
||||||
int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val)
|
int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val)
|
||||||
{
|
{
|
||||||
@@ -1685,6 +1686,7 @@ static int spinand_probe(struct spi_mem
|
@@ -1719,6 +1720,7 @@ static int spinand_probe(struct spi_mem
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
|||||||
ret = mtd_device_register(mtd, NULL, 0);
|
ret = mtd_device_register(mtd, NULL, 0);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err_spinand_cleanup;
|
goto err_spinand_cleanup;
|
||||||
@@ -1692,6 +1694,7 @@ static int spinand_probe(struct spi_mem
|
@@ -1726,6 +1728,7 @@ static int spinand_probe(struct spi_mem
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_spinand_cleanup:
|
err_spinand_cleanup:
|
||||||
@ -36,7 +36,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
|||||||
spinand_cleanup(spinand);
|
spinand_cleanup(spinand);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -1710,6 +1713,7 @@ static int spinand_remove(struct spi_mem
|
@@ -1744,6 +1747,7 @@ static int spinand_remove(struct spi_mem
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
|||||||
|
|
||||||
--- a/drivers/mtd/nand/spi/core.c
|
--- a/drivers/mtd/nand/spi/core.c
|
||||||
+++ b/drivers/mtd/nand/spi/core.c
|
+++ b/drivers/mtd/nand/spi/core.c
|
||||||
@@ -1279,6 +1279,56 @@ static int spinand_manufacturer_match(st
|
@@ -1270,6 +1270,56 @@ static int spinand_manufacturer_match(st
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,9 +68,9 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
|||||||
static int spinand_id_detect(struct spinand_device *spinand)
|
static int spinand_id_detect(struct spinand_device *spinand)
|
||||||
{
|
{
|
||||||
u8 *id = spinand->id.data;
|
u8 *id = spinand->id.data;
|
||||||
@@ -1555,6 +1605,10 @@ static int spinand_init(struct spinand_d
|
@@ -1589,6 +1639,10 @@ static int spinand_init(struct spinand_d
|
||||||
if (!spinand->scratchbuf)
|
|
||||||
return -ENOMEM;
|
spinand_init_ssdr_templates(spinand);
|
||||||
|
|
||||||
+ ret = spi_mem_do_calibration(spinand->spimem, spinand_cal_read, spinand);
|
+ ret = spi_mem_do_calibration(spinand->spimem, spinand_cal_read, spinand);
|
||||||
+ if (ret)
|
+ if (ret)
|
||||||
|
|||||||
@ -12,7 +12,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
|||||||
|
|
||||||
--- a/drivers/mtd/nand/spi/core.c
|
--- a/drivers/mtd/nand/spi/core.c
|
||||||
+++ b/drivers/mtd/nand/spi/core.c
|
+++ b/drivers/mtd/nand/spi/core.c
|
||||||
@@ -1320,7 +1320,10 @@ static int spinand_cal_read(void *priv,
|
@@ -1311,7 +1311,10 @@ static int spinand_cal_read(void *priv,
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
|
|
||||||
--- a/drivers/mtd/nand/spi/core.c
|
--- a/drivers/mtd/nand/spi/core.c
|
||||||
+++ b/drivers/mtd/nand/spi/core.c
|
+++ b/drivers/mtd/nand/spi/core.c
|
||||||
@@ -1778,6 +1778,7 @@ static int spinand_remove(struct spi_mem
|
@@ -1812,6 +1812,7 @@ static int spinand_remove(struct spi_mem
|
||||||
|
|
||||||
static const struct spi_device_id spinand_ids[] = {
|
static const struct spi_device_id spinand_ids[] = {
|
||||||
{ .name = "spi-nand" },
|
{ .name = "spi-nand" },
|
||||||
@ -37,7 +37,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
{ /* sentinel */ },
|
{ /* sentinel */ },
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(spi, spinand_ids);
|
MODULE_DEVICE_TABLE(spi, spinand_ids);
|
||||||
@@ -1785,6 +1786,7 @@ MODULE_DEVICE_TABLE(spi, spinand_ids);
|
@@ -1819,6 +1820,7 @@ MODULE_DEVICE_TABLE(spi, spinand_ids);
|
||||||
#ifdef CONFIG_OF
|
#ifdef CONFIG_OF
|
||||||
static const struct of_device_id spinand_of_ids[] = {
|
static const struct of_device_id spinand_of_ids[] = {
|
||||||
{ .compatible = "spi-nand" },
|
{ .compatible = "spi-nand" },
|
||||||
|
|||||||
@ -69,7 +69,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
|||||||
&spi_nor_everspin,
|
&spi_nor_everspin,
|
||||||
--- a/drivers/mtd/spi-nor/core.h
|
--- a/drivers/mtd/spi-nor/core.h
|
||||||
+++ b/drivers/mtd/spi-nor/core.h
|
+++ b/drivers/mtd/spi-nor/core.h
|
||||||
@@ -585,6 +585,7 @@ struct sfdp {
|
@@ -591,6 +591,7 @@ struct sfdp {
|
||||||
|
|
||||||
/* Manufacturer drivers. */
|
/* Manufacturer drivers. */
|
||||||
extern const struct spi_nor_manufacturer spi_nor_atmel;
|
extern const struct spi_nor_manufacturer spi_nor_atmel;
|
||||||
|
|||||||
@ -28,7 +28,7 @@ Signed-off-by: Curry Zhang <curry.zhang@starfivetech.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
axi_dma_enable(chan->chip);
|
axi_dma_enable(chan->chip);
|
||||||
@@ -1074,6 +1076,14 @@ static noinline void axi_chan_handle_err
|
@@ -1072,6 +1074,14 @@ static noinline void axi_chan_handle_err
|
||||||
axi_chan_name(chan));
|
axi_chan_name(chan));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,7 @@ Signed-off-by: Emil Renner Berthing <kernel@esmil.dk>
|
|||||||
|
|
||||||
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
|
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
|
||||||
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
|
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
|
||||||
@@ -723,8 +723,13 @@ static int dw_axi_dma_set_hw_desc(struct
|
@@ -721,8 +721,13 @@ static int dw_axi_dma_set_hw_desc(struct
|
||||||
|
|
||||||
hw_desc->lli->block_ts_lo = cpu_to_le32(block_ts - 1);
|
hw_desc->lli->block_ts_lo = cpu_to_le32(block_ts - 1);
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ Signed-off-by: Emil Renner Berthing <kernel@esmil.dk>
|
|||||||
hw_desc->lli->ctl_lo = cpu_to_le32(ctllo);
|
hw_desc->lli->ctl_lo = cpu_to_le32(ctllo);
|
||||||
|
|
||||||
set_desc_src_master(hw_desc);
|
set_desc_src_master(hw_desc);
|
||||||
@@ -1589,7 +1594,11 @@ static int dw_probe(struct platform_devi
|
@@ -1587,7 +1592,11 @@ static int dw_probe(struct platform_devi
|
||||||
* Therefore, set constraint to 1024 * 4.
|
* Therefore, set constraint to 1024 * 4.
|
||||||
*/
|
*/
|
||||||
dw->dma.dev->dma_parms = &dw->dma_parms;
|
dw->dma.dev->dma_parms = &dw->dma_parms;
|
||||||
@ -38,7 +38,7 @@ Signed-off-by: Emil Renner Berthing <kernel@esmil.dk>
|
|||||||
platform_set_drvdata(pdev, chip);
|
platform_set_drvdata(pdev, chip);
|
||||||
|
|
||||||
pm_runtime_enable(chip->dev);
|
pm_runtime_enable(chip->dev);
|
||||||
@@ -1674,6 +1683,9 @@ static const struct of_device_id dw_dma_
|
@@ -1672,6 +1681,9 @@ static const struct of_device_id dw_dma_
|
||||||
.compatible = "intel,kmb-axi-dma",
|
.compatible = "intel,kmb-axi-dma",
|
||||||
.data = (void *)AXI_DMA_FLAG_HAS_APB_REGS,
|
.data = (void *)AXI_DMA_FLAG_HAS_APB_REGS,
|
||||||
}, {
|
}, {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user