mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
kernel: bump to 5.4.237, 5.10.175 (#11016)
Signed-off-by: Linhui Liu <liulinhui36@gmail.com>
This commit is contained in:
parent
4bb2f2f4d3
commit
a76ac2ef41
@ -1,2 +1,2 @@
|
|||||||
LINUX_VERSION-5.10 = .168
|
LINUX_VERSION-5.10 = .175
|
||||||
LINUX_KERNEL_HASH-5.10.168 = b67d2596ba8d30510f743f31899c94c43eaf006a254ff44d7fc6ea26e7ab359c
|
LINUX_KERNEL_HASH-5.10.175 = e277562e28f234e36665ae12b7585f9557a83a86bc4a8de8840a305af6307bce
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
LINUX_VERSION-5.4 = .234
|
LINUX_VERSION-5.4 = .237
|
||||||
LINUX_KERNEL_HASH-5.4.234 = acc79cb33f2e31bbd8267d4caa7e90bcc9ef5f1fdd060cd34117ad4dae950991
|
LINUX_KERNEL_HASH-5.4.237 = b708fee0ff0533cc64a5202287ba5581482e2653925a5d46800edfa525c25527
|
||||||
|
@ -68,7 +68,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
|||||||
for (i = 0; i < PPC4XX_NUM_SD; i++) {
|
for (i = 0; i < PPC4XX_NUM_SD; i++) {
|
||||||
dev->sdr[i].ptr = dev->scatter_buffer_pa +
|
dev->sdr[i].ptr = dev->scatter_buffer_pa +
|
||||||
PPC4XX_SD_BUFFER_SIZE * i;
|
PPC4XX_SD_BUFFER_SIZE * i;
|
||||||
@@ -1439,16 +1440,15 @@ static int crypto4xx_probe(struct platfo
|
@@ -1437,16 +1438,15 @@ static int crypto4xx_probe(struct platfo
|
||||||
spin_lock_init(&core_dev->lock);
|
spin_lock_init(&core_dev->lock);
|
||||||
INIT_LIST_HEAD(&core_dev->dev->alg_list);
|
INIT_LIST_HEAD(&core_dev->dev->alg_list);
|
||||||
ratelimit_default_init(&core_dev->dev->aead_ratelimit);
|
ratelimit_default_init(&core_dev->dev->aead_ratelimit);
|
||||||
@ -89,7 +89,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
|||||||
goto err_build_sdr;
|
goto err_build_sdr;
|
||||||
|
|
||||||
/* Init tasklet for bottom half processing */
|
/* Init tasklet for bottom half processing */
|
||||||
@@ -1493,7 +1493,6 @@ err_iomap:
|
@@ -1491,7 +1491,6 @@ err_iomap:
|
||||||
err_build_sdr:
|
err_build_sdr:
|
||||||
crypto4xx_destroy_sdr(core_dev->dev);
|
crypto4xx_destroy_sdr(core_dev->dev);
|
||||||
crypto4xx_destroy_gdr(core_dev->dev);
|
crypto4xx_destroy_gdr(core_dev->dev);
|
||||||
|
@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.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
|
||||||
@@ -3152,6 +3152,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
@@ -3161,6 +3161,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||||
struct device *dev = nor->dev;
|
struct device *dev = nor->dev;
|
||||||
struct mtd_info *mtd = &nor->mtd;
|
struct mtd_info *mtd = &nor->mtd;
|
||||||
struct device_node *np = spi_nor_get_flash_node(nor);
|
struct device_node *np = spi_nor_get_flash_node(nor);
|
||||||
@ -18,7 +18,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
|||||||
int ret;
|
int ret;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -3206,7 +3207,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
@@ -3215,7 +3216,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -258,7 +258,7 @@ SVN-Revision: 35130
|
|||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
#include <linux/ipv6.h>
|
#include <linux/ipv6.h>
|
||||||
#include <linux/icmpv6.h>
|
#include <linux/icmpv6.h>
|
||||||
@@ -926,10 +927,10 @@ static void tcp_v6_send_response(const s
|
@@ -927,10 +928,10 @@ static void tcp_v6_send_response(const s
|
||||||
topt = (__be32 *)(t1 + 1);
|
topt = (__be32 *)(t1 + 1);
|
||||||
|
|
||||||
if (tsecr) {
|
if (tsecr) {
|
||||||
|
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -509,7 +509,7 @@ KBUILD_LDFLAGS_MODULE :=
|
@@ -516,7 +516,7 @@ KBUILD_LDFLAGS_MODULE :=
|
||||||
KBUILD_LDFLAGS :=
|
KBUILD_LDFLAGS :=
|
||||||
CLANG_FLAGS :=
|
CLANG_FLAGS :=
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/net/core/dev.c
|
--- a/net/core/dev.c
|
||||||
+++ b/net/core/dev.c
|
+++ b/net/core/dev.c
|
||||||
@@ -6810,15 +6810,10 @@ void __netif_napi_del(struct napi_struct
|
@@ -6813,15 +6813,10 @@ void __netif_napi_del(struct napi_struct
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__netif_napi_del);
|
EXPORT_SYMBOL(__netif_napi_del);
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
weight = n->weight;
|
weight = n->weight;
|
||||||
|
|
||||||
/* This NAPI_STATE_SCHED test is for avoiding a race
|
/* This NAPI_STATE_SCHED test is for avoiding a race
|
||||||
@@ -6838,7 +6833,7 @@ static int napi_poll(struct napi_struct
|
@@ -6841,7 +6836,7 @@ static int napi_poll(struct napi_struct
|
||||||
n->poll, work, weight);
|
n->poll, work, weight);
|
||||||
|
|
||||||
if (likely(work < weight))
|
if (likely(work < weight))
|
||||||
@ -44,7 +44,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
/* Drivers must not modify the NAPI state if they
|
/* Drivers must not modify the NAPI state if they
|
||||||
* consume the entire weight. In such cases this code
|
* consume the entire weight. In such cases this code
|
||||||
@@ -6847,7 +6842,7 @@ static int napi_poll(struct napi_struct
|
@@ -6850,7 +6845,7 @@ static int napi_poll(struct napi_struct
|
||||||
*/
|
*/
|
||||||
if (unlikely(napi_disable_pending(n))) {
|
if (unlikely(napi_disable_pending(n))) {
|
||||||
napi_complete(n);
|
napi_complete(n);
|
||||||
@ -53,7 +53,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (n->gro_bitmask) {
|
if (n->gro_bitmask) {
|
||||||
@@ -6865,12 +6860,29 @@ static int napi_poll(struct napi_struct
|
@@ -6868,12 +6863,29 @@ static int napi_poll(struct napi_struct
|
||||||
if (unlikely(!list_empty(&n->poll_list))) {
|
if (unlikely(!list_empty(&n->poll_list))) {
|
||||||
pr_warn_once("%s: Budget exhausted after napi rescheduled\n",
|
pr_warn_once("%s: Budget exhausted after napi rescheduled\n",
|
||||||
n->dev ? n->dev->name : "backlog");
|
n->dev ? n->dev->name : "backlog");
|
||||||
|
@ -131,7 +131,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
static int __dev_open(struct net_device *dev, struct netlink_ext_ack *extack)
|
static int __dev_open(struct net_device *dev, struct netlink_ext_ack *extack)
|
||||||
{
|
{
|
||||||
const struct net_device_ops *ops = dev->netdev_ops;
|
const struct net_device_ops *ops = dev->netdev_ops;
|
||||||
@@ -4272,6 +4294,21 @@ int gro_normal_batch __read_mostly = 8;
|
@@ -4274,6 +4296,21 @@ int gro_normal_batch __read_mostly = 8;
|
||||||
static inline void ____napi_schedule(struct softnet_data *sd,
|
static inline void ____napi_schedule(struct softnet_data *sd,
|
||||||
struct napi_struct *napi)
|
struct napi_struct *napi)
|
||||||
{
|
{
|
||||||
@ -153,7 +153,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
list_add_tail(&napi->poll_list, &sd->poll_list);
|
list_add_tail(&napi->poll_list, &sd->poll_list);
|
||||||
__raise_softirq_irqoff(NET_RX_SOFTIRQ);
|
__raise_softirq_irqoff(NET_RX_SOFTIRQ);
|
||||||
}
|
}
|
||||||
@@ -6763,6 +6800,12 @@ void netif_napi_add(struct net_device *d
|
@@ -6766,6 +6803,12 @@ void netif_napi_add(struct net_device *d
|
||||||
set_bit(NAPI_STATE_NPSVC, &napi->state);
|
set_bit(NAPI_STATE_NPSVC, &napi->state);
|
||||||
list_add_rcu(&napi->dev_list, &dev->napi_list);
|
list_add_rcu(&napi->dev_list, &dev->napi_list);
|
||||||
napi_hash_add(napi);
|
napi_hash_add(napi);
|
||||||
@ -166,7 +166,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(netif_napi_add);
|
EXPORT_SYMBOL(netif_napi_add);
|
||||||
|
|
||||||
@@ -6779,9 +6822,28 @@ void napi_disable(struct napi_struct *n)
|
@@ -6782,9 +6825,28 @@ void napi_disable(struct napi_struct *n)
|
||||||
hrtimer_cancel(&n->timer);
|
hrtimer_cancel(&n->timer);
|
||||||
|
|
||||||
clear_bit(NAPI_STATE_DISABLE, &n->state);
|
clear_bit(NAPI_STATE_DISABLE, &n->state);
|
||||||
@ -195,7 +195,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
static void flush_gro_hash(struct napi_struct *napi)
|
static void flush_gro_hash(struct napi_struct *napi)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@@ -6807,6 +6869,11 @@ void __netif_napi_del(struct napi_struct
|
@@ -6810,6 +6872,11 @@ void __netif_napi_del(struct napi_struct
|
||||||
|
|
||||||
flush_gro_hash(napi);
|
flush_gro_hash(napi);
|
||||||
napi->gro_bitmask = 0;
|
napi->gro_bitmask = 0;
|
||||||
@ -207,7 +207,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__netif_napi_del);
|
EXPORT_SYMBOL(__netif_napi_del);
|
||||||
|
|
||||||
@@ -6888,6 +6955,51 @@ static int napi_poll(struct napi_struct
|
@@ -6891,6 +6958,51 @@ static int napi_poll(struct napi_struct
|
||||||
return work;
|
return work;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
* @n: NAPI context
|
* @n: NAPI context
|
||||||
--- a/net/core/dev.c
|
--- a/net/core/dev.c
|
||||||
+++ b/net/core/dev.c
|
+++ b/net/core/dev.c
|
||||||
@@ -4298,8 +4298,9 @@ static inline void ____napi_schedule(str
|
@@ -4300,8 +4300,9 @@ static inline void ____napi_schedule(str
|
||||||
|
|
||||||
if (test_bit(NAPI_STATE_THREADED, &napi->state)) {
|
if (test_bit(NAPI_STATE_THREADED, &napi->state)) {
|
||||||
/* Paired with smp_mb__before_atomic() in
|
/* Paired with smp_mb__before_atomic() in
|
||||||
@ -69,7 +69,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
* wake_up_process() when it's not NULL.
|
* wake_up_process() when it's not NULL.
|
||||||
*/
|
*/
|
||||||
thread = READ_ONCE(napi->thread);
|
thread = READ_ONCE(napi->thread);
|
||||||
@@ -6773,6 +6774,49 @@ static void init_gro_hash(struct napi_st
|
@@ -6776,6 +6777,49 @@ static void init_gro_hash(struct napi_st
|
||||||
napi->gro_bitmask = 0;
|
napi->gro_bitmask = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
|||||||
enum gro_result {
|
enum gro_result {
|
||||||
--- a/net/core/dev.c
|
--- a/net/core/dev.c
|
||||||
+++ b/net/core/dev.c
|
+++ b/net/core/dev.c
|
||||||
@@ -4305,6 +4305,8 @@ static inline void ____napi_schedule(str
|
@@ -4307,6 +4307,8 @@ static inline void ____napi_schedule(str
|
||||||
*/
|
*/
|
||||||
thread = READ_ONCE(napi->thread);
|
thread = READ_ONCE(napi->thread);
|
||||||
if (thread) {
|
if (thread) {
|
||||||
@ -54,7 +54,7 @@ Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
|||||||
wake_up_process(thread);
|
wake_up_process(thread);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -6565,7 +6567,8 @@ bool napi_complete_done(struct napi_stru
|
@@ -6568,7 +6570,8 @@ bool napi_complete_done(struct napi_stru
|
||||||
|
|
||||||
WARN_ON_ONCE(!(val & NAPIF_STATE_SCHED));
|
WARN_ON_ONCE(!(val & NAPIF_STATE_SCHED));
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
|||||||
|
|
||||||
/* If STATE_MISSED was set, leave STATE_SCHED set,
|
/* If STATE_MISSED was set, leave STATE_SCHED set,
|
||||||
* because we will call napi->poll() one more time.
|
* because we will call napi->poll() one more time.
|
||||||
@@ -7001,16 +7004,25 @@ static int napi_poll(struct napi_struct
|
@@ -7004,16 +7007,25 @@ static int napi_poll(struct napi_struct
|
||||||
|
|
||||||
static int napi_thread_wait(struct napi_struct *napi)
|
static int napi_thread_wait(struct napi_struct *napi)
|
||||||
{
|
{
|
||||||
|
@ -34,7 +34,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
--- a/net/core/dev.c
|
--- a/net/core/dev.c
|
||||||
+++ b/net/core/dev.c
|
+++ b/net/core/dev.c
|
||||||
@@ -7008,7 +7008,7 @@ static int napi_thread_wait(struct napi_
|
@@ -7011,7 +7011,7 @@ static int napi_thread_wait(struct napi_
|
||||||
|
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
set_current_state(TASK_INTERRUPTIBLE);
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
/* Testing SCHED_THREADED bit here to make sure the current
|
/* Testing SCHED_THREADED bit here to make sure the current
|
||||||
* kthread owns this napi and could poll on this napi.
|
* kthread owns this napi and could poll on this napi.
|
||||||
* Testing SCHED bit is not enough because SCHED bit might be
|
* Testing SCHED bit is not enough because SCHED bit might be
|
||||||
@@ -7026,6 +7026,7 @@ static int napi_thread_wait(struct napi_
|
@@ -7029,6 +7029,7 @@ static int napi_thread_wait(struct napi_
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
set_current_state(TASK_INTERRUPTIBLE);
|
||||||
}
|
}
|
||||||
__set_current_state(TASK_RUNNING);
|
__set_current_state(TASK_RUNNING);
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/net/core/dev.c
|
--- a/net/core/dev.c
|
||||||
+++ b/net/core/dev.c
|
+++ b/net/core/dev.c
|
||||||
@@ -6819,6 +6819,7 @@ int dev_set_threaded(struct net_device *
|
@@ -6822,6 +6822,7 @@ int dev_set_threaded(struct net_device *
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
|||||||
|
|
||||||
#include "mtk_eth_soc.h"
|
#include "mtk_eth_soc.h"
|
||||||
|
|
||||||
@@ -1296,13 +1297,12 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1297,13 +1298,12 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* find out which mac the packet come from. values start at 1 */
|
/* find out which mac the packet come from. values start at 1 */
|
||||||
@ -38,7 +38,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
|||||||
|
|
||||||
if (unlikely(mac < 0 || mac >= MTK_MAC_COUNT ||
|
if (unlikely(mac < 0 || mac >= MTK_MAC_COUNT ||
|
||||||
!eth->netdev[mac]))
|
!eth->netdev[mac]))
|
||||||
@@ -2274,6 +2274,9 @@ static void mtk_gdm_config(struct mtk_et
|
@@ -2275,6 +2275,9 @@ static void mtk_gdm_config(struct mtk_et
|
||||||
|
|
||||||
val |= config;
|
val |= config;
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
|||||||
obj-$(CONFIG_NET_MEDIATEK_STAR_EMAC) += mtk_star_emac.o
|
obj-$(CONFIG_NET_MEDIATEK_STAR_EMAC) += mtk_star_emac.o
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -2299,15 +2299,20 @@ static int mtk_open(struct net_device *d
|
@@ -2300,15 +2300,20 @@ static int mtk_open(struct net_device *d
|
||||||
|
|
||||||
/* we run 2 netdevs on the same dma ring so we only bring it up once */
|
/* we run 2 netdevs on the same dma ring so we only bring it up once */
|
||||||
if (!refcount_read(ð->dma_refcnt)) {
|
if (!refcount_read(ð->dma_refcnt)) {
|
||||||
@ -50,7 +50,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
|||||||
|
|
||||||
napi_enable(ð->tx_napi);
|
napi_enable(ð->tx_napi);
|
||||||
napi_enable(ð->rx_napi);
|
napi_enable(ð->rx_napi);
|
||||||
@@ -2374,6 +2379,9 @@ static int mtk_stop(struct net_device *d
|
@@ -2375,6 +2380,9 @@ static int mtk_stop(struct net_device *d
|
||||||
|
|
||||||
mtk_dma_free(eth);
|
mtk_dma_free(eth);
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3102,6 +3110,13 @@ static int mtk_probe(struct platform_dev
|
@@ -3103,6 +3111,13 @@ static int mtk_probe(struct platform_dev
|
||||||
goto err_free_dev;
|
goto err_free_dev;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
|||||||
for (i = 0; i < MTK_MAX_DEVS; i++) {
|
for (i = 0; i < MTK_MAX_DEVS; i++) {
|
||||||
if (!eth->netdev[i])
|
if (!eth->netdev[i])
|
||||||
continue;
|
continue;
|
||||||
@@ -3176,6 +3191,7 @@ static const struct mtk_soc_data mt7621_
|
@@ -3177,6 +3192,7 @@ static const struct mtk_soc_data mt7621_
|
||||||
.hw_features = MTK_HW_FEATURES,
|
.hw_features = MTK_HW_FEATURES,
|
||||||
.required_clks = MT7621_CLKS_BITMAP,
|
.required_clks = MT7621_CLKS_BITMAP,
|
||||||
.required_pctl = false,
|
.required_pctl = false,
|
||||||
@ -82,7 +82,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct mtk_soc_data mt7622_data = {
|
static const struct mtk_soc_data mt7622_data = {
|
||||||
@@ -3184,6 +3200,7 @@ static const struct mtk_soc_data mt7622_
|
@@ -3185,6 +3201,7 @@ static const struct mtk_soc_data mt7622_
|
||||||
.hw_features = MTK_HW_FEATURES,
|
.hw_features = MTK_HW_FEATURES,
|
||||||
.required_clks = MT7622_CLKS_BITMAP,
|
.required_clks = MT7622_CLKS_BITMAP,
|
||||||
.required_pctl = false,
|
.required_pctl = false,
|
||||||
@ -121,7 +121,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
|||||||
#define RX_DMA_L4_VALID BIT(24)
|
#define RX_DMA_L4_VALID BIT(24)
|
||||||
#define RX_DMA_L4_VALID_PDMA BIT(30) /* when PDMA is used */
|
#define RX_DMA_L4_VALID_PDMA BIT(30) /* when PDMA is used */
|
||||||
#define RX_DMA_FPORT_SHIFT 19
|
#define RX_DMA_FPORT_SHIFT 19
|
||||||
@@ -819,6 +827,7 @@ struct mtk_soc_data {
|
@@ -820,6 +828,7 @@ struct mtk_soc_data {
|
||||||
u32 caps;
|
u32 caps;
|
||||||
u32 required_clks;
|
u32 required_clks;
|
||||||
bool required_pctl;
|
bool required_pctl;
|
||||||
@ -129,7 +129,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
|||||||
netdev_features_t hw_features;
|
netdev_features_t hw_features;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -918,6 +927,8 @@ struct mtk_eth {
|
@@ -919,6 +928,8 @@ struct mtk_eth {
|
||||||
u32 tx_int_status_reg;
|
u32 tx_int_status_reg;
|
||||||
u32 rx_dma_l4_valid;
|
u32 rx_dma_l4_valid;
|
||||||
int ip_align;
|
int ip_align;
|
||||||
|
@ -21,7 +21,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
|||||||
obj-$(CONFIG_NET_MEDIATEK_STAR_EMAC) += mtk_star_emac.o
|
obj-$(CONFIG_NET_MEDIATEK_STAR_EMAC) += mtk_star_emac.o
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -2857,6 +2857,7 @@ static const struct net_device_ops mtk_n
|
@@ -2858,6 +2858,7 @@ static const struct net_device_ops mtk_n
|
||||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||||
.ndo_poll_controller = mtk_poll_controller,
|
.ndo_poll_controller = mtk_poll_controller,
|
||||||
#endif
|
#endif
|
||||||
@ -29,7 +29,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
|||||||
};
|
};
|
||||||
|
|
||||||
static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
|
static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
|
||||||
@@ -3115,6 +3116,10 @@ static int mtk_probe(struct platform_dev
|
@@ -3116,6 +3117,10 @@ static int mtk_probe(struct platform_dev
|
||||||
eth->base + MTK_ETH_PPE_BASE, 2);
|
eth->base + MTK_ETH_PPE_BASE, 2);
|
||||||
if (err)
|
if (err)
|
||||||
goto err_free_dev;
|
goto err_free_dev;
|
||||||
@ -60,7 +60,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
|||||||
#define MTK_HW_FEATURES_MT7628 (NETIF_F_SG | NETIF_F_RXCSUM)
|
#define MTK_HW_FEATURES_MT7628 (NETIF_F_SG | NETIF_F_RXCSUM)
|
||||||
#define NEXT_DESP_IDX(X, Y) (((X) + 1) & ((Y) - 1))
|
#define NEXT_DESP_IDX(X, Y) (((X) + 1) & ((Y) - 1))
|
||||||
|
|
||||||
@@ -929,6 +931,7 @@ struct mtk_eth {
|
@@ -930,6 +932,7 @@ struct mtk_eth {
|
||||||
int ip_align;
|
int ip_align;
|
||||||
|
|
||||||
struct mtk_ppe ppe;
|
struct mtk_ppe ppe;
|
||||||
@ -68,7 +68,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* struct mtk_mac - the structure that holds the info about the MACs of the
|
/* struct mtk_mac - the structure that holds the info about the MACs of the
|
||||||
@@ -973,4 +976,9 @@ int mtk_gmac_sgmii_path_setup(struct mtk
|
@@ -974,4 +977,9 @@ int mtk_gmac_sgmii_path_setup(struct mtk
|
||||||
int mtk_gmac_gephy_path_setup(struct mtk_eth *eth, int mac_id);
|
int mtk_gmac_gephy_path_setup(struct mtk_eth *eth, int mac_id);
|
||||||
int mtk_gmac_rgmii_path_setup(struct mtk_eth *eth, int mac_id);
|
int mtk_gmac_rgmii_path_setup(struct mtk_eth *eth, int mac_id);
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -1333,6 +1333,9 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1334,6 +1334,9 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
goto release_desc;
|
goto release_desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
/* receive data */
|
/* receive data */
|
||||||
skb = build_skb(data, ring->frag_size);
|
skb = build_skb(data, ring->frag_size);
|
||||||
if (unlikely(!skb)) {
|
if (unlikely(!skb)) {
|
||||||
@@ -1342,8 +1345,6 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1343,8 +1346,6 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
}
|
}
|
||||||
skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN);
|
skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN);
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -1339,9 +1339,9 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1340,9 +1340,9 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
/* receive data */
|
/* receive data */
|
||||||
skb = build_skb(data, ring->frag_size);
|
skb = build_skb(data, ring->frag_size);
|
||||||
if (unlikely(!skb)) {
|
if (unlikely(!skb)) {
|
||||||
@ -28,7 +28,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
}
|
}
|
||||||
skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN);
|
skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN);
|
||||||
|
|
||||||
@@ -1361,6 +1361,7 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1362,6 +1362,7 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
skb_record_rx_queue(skb, 0);
|
skb_record_rx_queue(skb, 0);
|
||||||
napi_gro_receive(napi, skb);
|
napi_gro_receive(napi, skb);
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -890,7 +890,8 @@ static int txd_to_idx(struct mtk_tx_ring
|
@@ -891,7 +891,8 @@ static int txd_to_idx(struct mtk_tx_ring
|
||||||
return ((void *)dma - (void *)ring->dma) / sizeof(*dma);
|
return ((void *)dma - (void *)ring->dma) / sizeof(*dma);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
{
|
{
|
||||||
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
|
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
|
||||||
if (tx_buf->flags & MTK_TX_FLAGS_SINGLE0) {
|
if (tx_buf->flags & MTK_TX_FLAGS_SINGLE0) {
|
||||||
@@ -922,8 +923,12 @@ static void mtk_tx_unmap(struct mtk_eth
|
@@ -923,8 +924,12 @@ static void mtk_tx_unmap(struct mtk_eth
|
||||||
|
|
||||||
tx_buf->flags = 0;
|
tx_buf->flags = 0;
|
||||||
if (tx_buf->skb &&
|
if (tx_buf->skb &&
|
||||||
@ -39,7 +39,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
tx_buf->skb = NULL;
|
tx_buf->skb = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1101,7 +1106,7 @@ err_dma:
|
@@ -1102,7 +1107,7 @@ err_dma:
|
||||||
tx_buf = mtk_desc_to_tx_buf(ring, itxd);
|
tx_buf = mtk_desc_to_tx_buf(ring, itxd);
|
||||||
|
|
||||||
/* unmap dma */
|
/* unmap dma */
|
||||||
@ -48,7 +48,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
itxd->txd3 = TX_DMA_LS0 | TX_DMA_OWNER_CPU;
|
itxd->txd3 = TX_DMA_LS0 | TX_DMA_OWNER_CPU;
|
||||||
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA))
|
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA))
|
||||||
@@ -1423,7 +1428,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
|
@@ -1424,7 +1429,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
|
||||||
done[mac]++;
|
done[mac]++;
|
||||||
budget--;
|
budget--;
|
||||||
}
|
}
|
||||||
@ -57,7 +57,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
ring->last_free = desc;
|
ring->last_free = desc;
|
||||||
atomic_inc(&ring->free_count);
|
atomic_inc(&ring->free_count);
|
||||||
@@ -1460,7 +1465,7 @@ static int mtk_poll_tx_pdma(struct mtk_e
|
@@ -1461,7 +1466,7 @@ static int mtk_poll_tx_pdma(struct mtk_e
|
||||||
budget--;
|
budget--;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
desc = &ring->dma[cpu];
|
desc = &ring->dma[cpu];
|
||||||
ring->last_free = desc;
|
ring->last_free = desc;
|
||||||
@@ -1662,7 +1667,7 @@ static void mtk_tx_clean(struct mtk_eth
|
@@ -1663,7 +1668,7 @@ static void mtk_tx_clean(struct mtk_eth
|
||||||
|
|
||||||
if (ring->buf) {
|
if (ring->buf) {
|
||||||
for (i = 0; i < MTK_DMA_SIZE; i++)
|
for (i = 0; i < MTK_DMA_SIZE; i++)
|
||||||
|
@ -16,7 +16,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -1163,17 +1163,6 @@ static void mtk_wake_queue(struct mtk_et
|
@@ -1164,17 +1164,6 @@ static void mtk_wake_queue(struct mtk_et
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
static netdev_tx_t mtk_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
static netdev_tx_t mtk_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||||
{
|
{
|
||||||
struct mtk_mac *mac = netdev_priv(dev);
|
struct mtk_mac *mac = netdev_priv(dev);
|
||||||
@@ -1194,7 +1183,7 @@ static netdev_tx_t mtk_start_xmit(struct
|
@@ -1195,7 +1184,7 @@ static netdev_tx_t mtk_start_xmit(struct
|
||||||
|
|
||||||
tx_num = mtk_cal_txd_req(skb);
|
tx_num = mtk_cal_txd_req(skb);
|
||||||
if (unlikely(atomic_read(&ring->free_count) <= tx_num)) {
|
if (unlikely(atomic_read(&ring->free_count) <= tx_num)) {
|
||||||
@ -43,7 +43,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
netif_err(eth, tx_queued, dev,
|
netif_err(eth, tx_queued, dev,
|
||||||
"Tx Ring full when queue awake!\n");
|
"Tx Ring full when queue awake!\n");
|
||||||
spin_unlock(ð->page_lock);
|
spin_unlock(ð->page_lock);
|
||||||
@@ -1220,7 +1209,7 @@ static netdev_tx_t mtk_start_xmit(struct
|
@@ -1221,7 +1210,7 @@ static netdev_tx_t mtk_start_xmit(struct
|
||||||
goto drop;
|
goto drop;
|
||||||
|
|
||||||
if (unlikely(atomic_read(&ring->free_count) <= ring->thresh))
|
if (unlikely(atomic_read(&ring->free_count) <= ring->thresh))
|
||||||
|
@ -15,7 +15,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -2234,7 +2234,7 @@ static int mtk_start_dma(struct mtk_eth
|
@@ -2235,7 +2235,7 @@ static int mtk_start_dma(struct mtk_eth
|
||||||
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
|
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
|
||||||
mtk_w32(eth,
|
mtk_w32(eth,
|
||||||
MTK_TX_WB_DDONE | MTK_TX_DMA_EN |
|
MTK_TX_WB_DDONE | MTK_TX_DMA_EN |
|
||||||
|
@ -28,7 +28,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
MediaTek SoC family.
|
MediaTek SoC family.
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -1265,12 +1265,13 @@ static void mtk_update_rx_cpu_idx(struct
|
@@ -1266,12 +1266,13 @@ static void mtk_update_rx_cpu_idx(struct
|
||||||
static int mtk_poll_rx(struct napi_struct *napi, int budget,
|
static int mtk_poll_rx(struct napi_struct *napi, int budget,
|
||||||
struct mtk_eth *eth)
|
struct mtk_eth *eth)
|
||||||
{
|
{
|
||||||
@ -43,7 +43,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
while (done < budget) {
|
while (done < budget) {
|
||||||
struct net_device *netdev;
|
struct net_device *netdev;
|
||||||
@@ -1347,6 +1348,7 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1348,6 +1349,7 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
else
|
else
|
||||||
skb_checksum_none_assert(skb);
|
skb_checksum_none_assert(skb);
|
||||||
skb->protocol = eth_type_trans(skb, netdev);
|
skb->protocol = eth_type_trans(skb, netdev);
|
||||||
@ -51,7 +51,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX &&
|
if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX &&
|
||||||
(trxd.rxd2 & RX_DMA_VTAG))
|
(trxd.rxd2 & RX_DMA_VTAG))
|
||||||
@@ -1379,6 +1381,12 @@ rx_done:
|
@@ -1380,6 +1382,12 @@ rx_done:
|
||||||
mtk_update_rx_cpu_idx(eth);
|
mtk_update_rx_cpu_idx(eth);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1471,6 +1479,7 @@ static int mtk_poll_tx_pdma(struct mtk_e
|
@@ -1472,6 +1480,7 @@ static int mtk_poll_tx_pdma(struct mtk_e
|
||||||
static int mtk_poll_tx(struct mtk_eth *eth, int budget)
|
static int mtk_poll_tx(struct mtk_eth *eth, int budget)
|
||||||
{
|
{
|
||||||
struct mtk_tx_ring *ring = ð->tx_ring;
|
struct mtk_tx_ring *ring = ð->tx_ring;
|
||||||
@ -72,7 +72,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
unsigned int done[MTK_MAX_DEVS];
|
unsigned int done[MTK_MAX_DEVS];
|
||||||
unsigned int bytes[MTK_MAX_DEVS];
|
unsigned int bytes[MTK_MAX_DEVS];
|
||||||
int total = 0, i;
|
int total = 0, i;
|
||||||
@@ -1488,8 +1497,14 @@ static int mtk_poll_tx(struct mtk_eth *e
|
@@ -1489,8 +1498,14 @@ static int mtk_poll_tx(struct mtk_eth *e
|
||||||
continue;
|
continue;
|
||||||
netdev_completed_queue(eth->netdev[i], done[i], bytes[i]);
|
netdev_completed_queue(eth->netdev[i], done[i], bytes[i]);
|
||||||
total += done[i];
|
total += done[i];
|
||||||
@ -87,7 +87,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
if (mtk_queue_stopped(eth) &&
|
if (mtk_queue_stopped(eth) &&
|
||||||
(atomic_read(&ring->free_count) > ring->thresh))
|
(atomic_read(&ring->free_count) > ring->thresh))
|
||||||
mtk_wake_queue(eth);
|
mtk_wake_queue(eth);
|
||||||
@@ -2170,6 +2185,7 @@ static irqreturn_t mtk_handle_irq_rx(int
|
@@ -2171,6 +2186,7 @@ static irqreturn_t mtk_handle_irq_rx(int
|
||||||
{
|
{
|
||||||
struct mtk_eth *eth = _eth;
|
struct mtk_eth *eth = _eth;
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
if (likely(napi_schedule_prep(ð->rx_napi))) {
|
if (likely(napi_schedule_prep(ð->rx_napi))) {
|
||||||
__napi_schedule(ð->rx_napi);
|
__napi_schedule(ð->rx_napi);
|
||||||
mtk_rx_irq_disable(eth, MTK_RX_DONE_INT);
|
mtk_rx_irq_disable(eth, MTK_RX_DONE_INT);
|
||||||
@@ -2182,6 +2198,7 @@ static irqreturn_t mtk_handle_irq_tx(int
|
@@ -2183,6 +2199,7 @@ static irqreturn_t mtk_handle_irq_tx(int
|
||||||
{
|
{
|
||||||
struct mtk_eth *eth = _eth;
|
struct mtk_eth *eth = _eth;
|
||||||
|
|
||||||
@ -103,7 +103,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
if (likely(napi_schedule_prep(ð->tx_napi))) {
|
if (likely(napi_schedule_prep(ð->tx_napi))) {
|
||||||
__napi_schedule(ð->tx_napi);
|
__napi_schedule(ð->tx_napi);
|
||||||
mtk_tx_irq_disable(eth, MTK_TX_DONE_INT);
|
mtk_tx_irq_disable(eth, MTK_TX_DONE_INT);
|
||||||
@@ -2369,6 +2386,9 @@ static int mtk_stop(struct net_device *d
|
@@ -2370,6 +2387,9 @@ static int mtk_stop(struct net_device *d
|
||||||
napi_disable(ð->tx_napi);
|
napi_disable(ð->tx_napi);
|
||||||
napi_disable(ð->rx_napi);
|
napi_disable(ð->rx_napi);
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA))
|
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA))
|
||||||
mtk_stop_dma(eth, MTK_QDMA_GLO_CFG);
|
mtk_stop_dma(eth, MTK_QDMA_GLO_CFG);
|
||||||
mtk_stop_dma(eth, MTK_PDMA_GLO_CFG);
|
mtk_stop_dma(eth, MTK_PDMA_GLO_CFG);
|
||||||
@@ -2421,6 +2441,64 @@ err_disable_clks:
|
@@ -2422,6 +2442,64 @@ err_disable_clks:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,7 +178,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
static int mtk_hw_init(struct mtk_eth *eth)
|
static int mtk_hw_init(struct mtk_eth *eth)
|
||||||
{
|
{
|
||||||
int i, val, ret;
|
int i, val, ret;
|
||||||
@@ -2442,9 +2520,6 @@ static int mtk_hw_init(struct mtk_eth *e
|
@@ -2443,9 +2521,6 @@ static int mtk_hw_init(struct mtk_eth *e
|
||||||
goto err_disable_pm;
|
goto err_disable_pm;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,7 +188,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
/* disable delay and normal interrupt */
|
/* disable delay and normal interrupt */
|
||||||
mtk_tx_irq_disable(eth, ~0);
|
mtk_tx_irq_disable(eth, ~0);
|
||||||
mtk_rx_irq_disable(eth, ~0);
|
mtk_rx_irq_disable(eth, ~0);
|
||||||
@@ -2483,11 +2558,11 @@ static int mtk_hw_init(struct mtk_eth *e
|
@@ -2484,11 +2559,11 @@ static int mtk_hw_init(struct mtk_eth *e
|
||||||
/* Enable RX VLan Offloading */
|
/* Enable RX VLan Offloading */
|
||||||
mtk_w32(eth, 1, MTK_CDMP_EG_CTRL);
|
mtk_w32(eth, 1, MTK_CDMP_EG_CTRL);
|
||||||
|
|
||||||
@ -203,7 +203,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
mtk_tx_irq_disable(eth, ~0);
|
mtk_tx_irq_disable(eth, ~0);
|
||||||
mtk_rx_irq_disable(eth, ~0);
|
mtk_rx_irq_disable(eth, ~0);
|
||||||
|
|
||||||
@@ -2992,6 +3067,13 @@ static int mtk_probe(struct platform_dev
|
@@ -2993,6 +3068,13 @@ static int mtk_probe(struct platform_dev
|
||||||
spin_lock_init(ð->page_lock);
|
spin_lock_init(ð->page_lock);
|
||||||
spin_lock_init(ð->tx_irq_lock);
|
spin_lock_init(ð->tx_irq_lock);
|
||||||
spin_lock_init(ð->rx_irq_lock);
|
spin_lock_init(ð->rx_irq_lock);
|
||||||
@ -269,7 +269,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
/* QDMA Interrupt grouping registers */
|
/* QDMA Interrupt grouping registers */
|
||||||
#define MTK_QDMA_INT_GRP1 0x1a20
|
#define MTK_QDMA_INT_GRP1 0x1a20
|
||||||
@@ -863,6 +869,7 @@ struct mtk_sgmii {
|
@@ -864,6 +870,7 @@ struct mtk_sgmii {
|
||||||
* @page_lock: Make sure that register operations are atomic
|
* @page_lock: Make sure that register operations are atomic
|
||||||
* @tx_irq__lock: Make sure that IRQ register operations are atomic
|
* @tx_irq__lock: Make sure that IRQ register operations are atomic
|
||||||
* @rx_irq__lock: Make sure that IRQ register operations are atomic
|
* @rx_irq__lock: Make sure that IRQ register operations are atomic
|
||||||
@ -277,7 +277,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
* @dummy_dev: we run 2 netdevs on 1 physical DMA ring and need a
|
* @dummy_dev: we run 2 netdevs on 1 physical DMA ring and need a
|
||||||
* dummy for NAPI to work
|
* dummy for NAPI to work
|
||||||
* @netdev: The netdev instances
|
* @netdev: The netdev instances
|
||||||
@@ -881,6 +888,14 @@ struct mtk_sgmii {
|
@@ -882,6 +889,14 @@ struct mtk_sgmii {
|
||||||
* @rx_ring_qdma: Pointer to the memory holding info about the QDMA RX ring
|
* @rx_ring_qdma: Pointer to the memory holding info about the QDMA RX ring
|
||||||
* @tx_napi: The TX NAPI struct
|
* @tx_napi: The TX NAPI struct
|
||||||
* @rx_napi: The RX NAPI struct
|
* @rx_napi: The RX NAPI struct
|
||||||
@ -292,7 +292,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
* @scratch_ring: Newer SoCs need memory for a second HW managed TX ring
|
* @scratch_ring: Newer SoCs need memory for a second HW managed TX ring
|
||||||
* @phy_scratch_ring: physical address of scratch_ring
|
* @phy_scratch_ring: physical address of scratch_ring
|
||||||
* @scratch_head: The scratch memory that scratch_ring points to.
|
* @scratch_head: The scratch memory that scratch_ring points to.
|
||||||
@@ -925,6 +940,18 @@ struct mtk_eth {
|
@@ -926,6 +941,18 @@ struct mtk_eth {
|
||||||
|
|
||||||
const struct mtk_soc_data *soc;
|
const struct mtk_soc_data *soc;
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -1399,7 +1399,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
|
@@ -1400,7 +1400,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
|
||||||
struct mtk_tx_buf *tx_buf;
|
struct mtk_tx_buf *tx_buf;
|
||||||
u32 cpu, dma;
|
u32 cpu, dma;
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
dma = mtk_r32(eth, MTK_QTX_DRX_PTR);
|
dma = mtk_r32(eth, MTK_QTX_DRX_PTR);
|
||||||
|
|
||||||
desc = mtk_qdma_phys_to_virt(ring, cpu);
|
desc = mtk_qdma_phys_to_virt(ring, cpu);
|
||||||
@@ -1433,6 +1433,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
|
@@ -1434,6 +1434,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
|
||||||
cpu = next_cpu;
|
cpu = next_cpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
mtk_w32(eth, cpu, MTK_QTX_CRX_PTR);
|
mtk_w32(eth, cpu, MTK_QTX_CRX_PTR);
|
||||||
|
|
||||||
return budget;
|
return budget;
|
||||||
@@ -1633,6 +1634,7 @@ static int mtk_tx_alloc(struct mtk_eth *
|
@@ -1634,6 +1635,7 @@ static int mtk_tx_alloc(struct mtk_eth *
|
||||||
atomic_set(&ring->free_count, MTK_DMA_SIZE - 2);
|
atomic_set(&ring->free_count, MTK_DMA_SIZE - 2);
|
||||||
ring->next_free = &ring->dma[0];
|
ring->next_free = &ring->dma[0];
|
||||||
ring->last_free = &ring->dma[MTK_DMA_SIZE - 1];
|
ring->last_free = &ring->dma[MTK_DMA_SIZE - 1];
|
||||||
@ -42,7 +42,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
ring->thresh = MAX_SKB_FRAGS;
|
ring->thresh = MAX_SKB_FRAGS;
|
||||||
|
|
||||||
/* make sure that all changes to the dma ring are flushed before we
|
/* make sure that all changes to the dma ring are flushed before we
|
||||||
@@ -1646,9 +1648,7 @@ static int mtk_tx_alloc(struct mtk_eth *
|
@@ -1647,9 +1649,7 @@ static int mtk_tx_alloc(struct mtk_eth *
|
||||||
mtk_w32(eth,
|
mtk_w32(eth,
|
||||||
ring->phys + ((MTK_DMA_SIZE - 1) * sz),
|
ring->phys + ((MTK_DMA_SIZE - 1) * sz),
|
||||||
MTK_QTX_CRX_PTR);
|
MTK_QTX_CRX_PTR);
|
||||||
@ -55,7 +55,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
} else {
|
} else {
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||||
@@ -656,6 +656,7 @@ struct mtk_tx_buf {
|
@@ -657,6 +657,7 @@ struct mtk_tx_buf {
|
||||||
* @phys: The physical addr of tx_buf
|
* @phys: The physical addr of tx_buf
|
||||||
* @next_free: Pointer to the next free descriptor
|
* @next_free: Pointer to the next free descriptor
|
||||||
* @last_free: Pointer to the last free descriptor
|
* @last_free: Pointer to the last free descriptor
|
||||||
@ -63,7 +63,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
* @thresh: The threshold of minimum amount of free descriptors
|
* @thresh: The threshold of minimum amount of free descriptors
|
||||||
* @free_count: QDMA uses a linked list. Track how many free descriptors
|
* @free_count: QDMA uses a linked list. Track how many free descriptors
|
||||||
* are present
|
* are present
|
||||||
@@ -666,6 +667,7 @@ struct mtk_tx_ring {
|
@@ -667,6 +668,7 @@ struct mtk_tx_ring {
|
||||||
dma_addr_t phys;
|
dma_addr_t phys;
|
||||||
struct mtk_tx_dma *next_free;
|
struct mtk_tx_dma *next_free;
|
||||||
struct mtk_tx_dma *last_free;
|
struct mtk_tx_dma *last_free;
|
||||||
|
@ -16,7 +16,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -798,13 +798,18 @@ static inline int mtk_max_buf_size(int f
|
@@ -799,13 +799,18 @@ static inline int mtk_max_buf_size(int f
|
||||||
return buf_size;
|
return buf_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void *mtk_max_lro_buf_alloc(gfp_t gfp_mask)
|
static void *mtk_max_lro_buf_alloc(gfp_t gfp_mask)
|
||||||
@@ -1287,8 +1292,7 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1288,8 +1293,7 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
rxd = &ring->dma[idx];
|
rxd = &ring->dma[idx];
|
||||||
data = ring->data[idx];
|
data = ring->data[idx];
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -1554,8 +1554,8 @@ static int mtk_napi_tx(struct napi_struc
|
@@ -1555,8 +1555,8 @@ static int mtk_napi_tx(struct napi_struc
|
||||||
if (status & MTK_TX_DONE_INT)
|
if (status & MTK_TX_DONE_INT)
|
||||||
return budget;
|
return budget;
|
||||||
|
|
||||||
@ -25,7 +25,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
return tx_done;
|
return tx_done;
|
||||||
}
|
}
|
||||||
@@ -1588,8 +1588,9 @@ poll_again:
|
@@ -1589,8 +1589,9 @@ poll_again:
|
||||||
remain_budget -= rx_done;
|
remain_budget -= rx_done;
|
||||||
goto poll_again;
|
goto poll_again;
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -1531,7 +1531,6 @@ static void mtk_handle_status_irq(struct
|
@@ -1532,7 +1532,6 @@ static void mtk_handle_status_irq(struct
|
||||||
static int mtk_napi_tx(struct napi_struct *napi, int budget)
|
static int mtk_napi_tx(struct napi_struct *napi, int budget)
|
||||||
{
|
{
|
||||||
struct mtk_eth *eth = container_of(napi, struct mtk_eth, tx_napi);
|
struct mtk_eth *eth = container_of(napi, struct mtk_eth, tx_napi);
|
||||||
@ -25,7 +25,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
int tx_done = 0;
|
int tx_done = 0;
|
||||||
|
|
||||||
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA))
|
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA))
|
||||||
@@ -1540,21 +1539,19 @@ static int mtk_napi_tx(struct napi_struc
|
@@ -1541,21 +1540,19 @@ static int mtk_napi_tx(struct napi_struc
|
||||||
tx_done = mtk_poll_tx(eth, budget);
|
tx_done = mtk_poll_tx(eth, budget);
|
||||||
|
|
||||||
if (unlikely(netif_msg_intr(eth))) {
|
if (unlikely(netif_msg_intr(eth))) {
|
||||||
@ -52,7 +52,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
mtk_tx_irq_enable(eth, MTK_TX_DONE_INT);
|
mtk_tx_irq_enable(eth, MTK_TX_DONE_INT);
|
||||||
|
|
||||||
return tx_done;
|
return tx_done;
|
||||||
@@ -1563,36 +1560,33 @@ static int mtk_napi_tx(struct napi_struc
|
@@ -1564,36 +1561,33 @@ static int mtk_napi_tx(struct napi_struc
|
||||||
static int mtk_napi_rx(struct napi_struct *napi, int budget)
|
static int mtk_napi_rx(struct napi_struct *napi, int budget)
|
||||||
{
|
{
|
||||||
struct mtk_eth *eth = container_of(napi, struct mtk_eth, rx_napi);
|
struct mtk_eth *eth = container_of(napi, struct mtk_eth, rx_napi);
|
||||||
|
@ -24,7 +24,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
#include <net/dsa.h>
|
#include <net/dsa.h>
|
||||||
|
|
||||||
#include "mtk_eth_soc.h"
|
#include "mtk_eth_soc.h"
|
||||||
@@ -1282,6 +1283,7 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1283,6 +1284,7 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
struct net_device *netdev;
|
struct net_device *netdev;
|
||||||
unsigned int pktlen;
|
unsigned int pktlen;
|
||||||
dma_addr_t dma_addr;
|
dma_addr_t dma_addr;
|
||||||
@ -32,7 +32,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
int mac;
|
int mac;
|
||||||
|
|
||||||
ring = mtk_get_rx_ring(eth);
|
ring = mtk_get_rx_ring(eth);
|
||||||
@@ -1354,6 +1356,12 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1355,6 +1357,12 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
skb->protocol = eth_type_trans(skb, netdev);
|
skb->protocol = eth_type_trans(skb, netdev);
|
||||||
bytes += pktlen;
|
bytes += pktlen;
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -2074,25 +2074,22 @@ static int mtk_set_features(struct net_d
|
@@ -2075,25 +2075,22 @@ static int mtk_set_features(struct net_d
|
||||||
/* wait for DMA to finish whatever it is doing before we start using it again */
|
/* wait for DMA to finish whatever it is doing before we start using it again */
|
||||||
static int mtk_dma_busy_wait(struct mtk_eth *eth)
|
static int mtk_dma_busy_wait(struct mtk_eth *eth)
|
||||||
{
|
{
|
||||||
|
@ -25,10 +25,10 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
mcr_new = mcr_cur;
|
mcr_new = mcr_cur;
|
||||||
- mcr_new |= MAC_MCR_MAX_RX_1536 | MAC_MCR_IPG_CFG | MAC_MCR_FORCE_MODE |
|
- mcr_new |= MAC_MCR_MAX_RX_1536 | MAC_MCR_IPG_CFG | MAC_MCR_FORCE_MODE |
|
||||||
+ mcr_new |= MAC_MCR_IPG_CFG | MAC_MCR_FORCE_MODE |
|
+ mcr_new |= MAC_MCR_IPG_CFG | MAC_MCR_FORCE_MODE |
|
||||||
MAC_MCR_BACKOFF_EN | MAC_MCR_BACKPR_EN | MAC_MCR_FORCE_LINK;
|
MAC_MCR_BACKOFF_EN | MAC_MCR_BACKPR_EN | MAC_MCR_FORCE_LINK |
|
||||||
|
MAC_MCR_RX_FIFO_CLR_DIS;
|
||||||
|
|
||||||
/* Only update control register when needed! */
|
@@ -783,8 +783,8 @@ static void mtk_get_stats64(struct net_d
|
||||||
@@ -782,8 +782,8 @@ static void mtk_get_stats64(struct net_d
|
|
||||||
static inline int mtk_max_frag_size(int mtu)
|
static inline int mtk_max_frag_size(int mtu)
|
||||||
{
|
{
|
||||||
/* make sure buf_size will be at least MTK_MAX_RX_LENGTH */
|
/* make sure buf_size will be at least MTK_MAX_RX_LENGTH */
|
||||||
@ -39,7 +39,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
return SKB_DATA_ALIGN(MTK_RX_HLEN + mtu) +
|
return SKB_DATA_ALIGN(MTK_RX_HLEN + mtu) +
|
||||||
SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
|
SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
|
||||||
@@ -794,7 +794,7 @@ static inline int mtk_max_buf_size(int f
|
@@ -795,7 +795,7 @@ static inline int mtk_max_buf_size(int f
|
||||||
int buf_size = frag_size - NET_SKB_PAD - NET_IP_ALIGN -
|
int buf_size = frag_size - NET_SKB_PAD - NET_IP_ALIGN -
|
||||||
SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
|
SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
return buf_size;
|
return buf_size;
|
||||||
}
|
}
|
||||||
@@ -2629,6 +2629,35 @@ static void mtk_uninit(struct net_device
|
@@ -2630,6 +2630,35 @@ static void mtk_uninit(struct net_device
|
||||||
mtk_rx_irq_disable(eth, ~0);
|
mtk_rx_irq_disable(eth, ~0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
static int mtk_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
static int mtk_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
||||||
{
|
{
|
||||||
struct mtk_mac *mac = netdev_priv(dev);
|
struct mtk_mac *mac = netdev_priv(dev);
|
||||||
@@ -2925,6 +2954,7 @@ static const struct net_device_ops mtk_n
|
@@ -2926,6 +2955,7 @@ static const struct net_device_ops mtk_n
|
||||||
.ndo_set_mac_address = mtk_set_mac_address,
|
.ndo_set_mac_address = mtk_set_mac_address,
|
||||||
.ndo_validate_addr = eth_validate_addr,
|
.ndo_validate_addr = eth_validate_addr,
|
||||||
.ndo_do_ioctl = mtk_do_ioctl,
|
.ndo_do_ioctl = mtk_do_ioctl,
|
||||||
@ -92,7 +92,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
.ndo_tx_timeout = mtk_tx_timeout,
|
.ndo_tx_timeout = mtk_tx_timeout,
|
||||||
.ndo_get_stats64 = mtk_get_stats64,
|
.ndo_get_stats64 = mtk_get_stats64,
|
||||||
.ndo_fix_features = mtk_fix_features,
|
.ndo_fix_features = mtk_fix_features,
|
||||||
@@ -3027,7 +3057,10 @@ static int mtk_add_mac(struct mtk_eth *e
|
@@ -3028,7 +3058,10 @@ static int mtk_add_mac(struct mtk_eth *e
|
||||||
eth->netdev[id]->irq = eth->irq[0];
|
eth->netdev[id]->irq = eth->irq[0];
|
||||||
eth->netdev[id]->dev.of_node = np;
|
eth->netdev[id]->dev.of_node = np;
|
||||||
|
|
||||||
|
@ -629,7 +629,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1003,6 +1023,7 @@ static struct sk_buff *__skb_clone(struc
|
@@ -1002,6 +1022,7 @@ static struct sk_buff *__skb_clone(struc
|
||||||
n->nohdr = 0;
|
n->nohdr = 0;
|
||||||
n->peeked = 0;
|
n->peeked = 0;
|
||||||
C(pfmemalloc);
|
C(pfmemalloc);
|
||||||
@ -637,7 +637,7 @@
|
|||||||
n->destructor = NULL;
|
n->destructor = NULL;
|
||||||
C(tail);
|
C(tail);
|
||||||
C(end);
|
C(end);
|
||||||
@@ -3421,7 +3442,7 @@ int skb_shift(struct sk_buff *tgt, struc
|
@@ -3420,7 +3441,7 @@ int skb_shift(struct sk_buff *tgt, struc
|
||||||
fragto = &skb_shinfo(tgt)->frags[merge];
|
fragto = &skb_shinfo(tgt)->frags[merge];
|
||||||
|
|
||||||
skb_frag_size_add(fragto, skb_frag_size(fragfrom));
|
skb_frag_size_add(fragto, skb_frag_size(fragfrom));
|
||||||
@ -646,7 +646,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Reposition in the original skb */
|
/* Reposition in the original skb */
|
||||||
@@ -5188,6 +5209,20 @@ bool skb_try_coalesce(struct sk_buff *to
|
@@ -5187,6 +5208,20 @@ bool skb_try_coalesce(struct sk_buff *to
|
||||||
if (skb_cloned(to))
|
if (skb_cloned(to))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -895,7 +895,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -2603,14 +2603,11 @@ static int __init mtk_init(struct net_de
|
@@ -2604,14 +2604,11 @@ static int __init mtk_init(struct net_de
|
||||||
{
|
{
|
||||||
struct mtk_mac *mac = netdev_priv(dev);
|
struct mtk_mac *mac = netdev_priv(dev);
|
||||||
struct mtk_eth *eth = mac->hw;
|
struct mtk_eth *eth = mac->hw;
|
||||||
@ -1360,7 +1360,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
int irq;
|
int irq;
|
||||||
--- 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
|
||||||
@@ -5013,7 +5013,7 @@ int stmmac_dvr_probe(struct device *devi
|
@@ -5015,7 +5015,7 @@ int stmmac_dvr_probe(struct device *devi
|
||||||
priv->wol_irq = res->wol_irq;
|
priv->wol_irq = res->wol_irq;
|
||||||
priv->lpi_irq = res->lpi_irq;
|
priv->lpi_irq = res->lpi_irq;
|
||||||
|
|
||||||
@ -1420,7 +1420,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c
|
--- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c
|
||||||
+++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
|
+++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
|
||||||
@@ -1742,7 +1742,6 @@ static int am65_cpsw_nuss_init_slave_por
|
@@ -1713,7 +1713,6 @@ static int am65_cpsw_nuss_init_slave_por
|
||||||
|
|
||||||
for_each_child_of_node(node, port_np) {
|
for_each_child_of_node(node, port_np) {
|
||||||
struct am65_cpsw_port *port;
|
struct am65_cpsw_port *port;
|
||||||
@ -1428,8 +1428,8 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
u32 port_id;
|
u32 port_id;
|
||||||
|
|
||||||
/* it is not a slave port node, continue */
|
/* it is not a slave port node, continue */
|
||||||
@@ -1821,15 +1820,15 @@ static int am65_cpsw_nuss_init_slave_por
|
@@ -1796,15 +1795,15 @@ static int am65_cpsw_nuss_init_slave_por
|
||||||
return ret;
|
goto of_node_put;
|
||||||
}
|
}
|
||||||
|
|
||||||
- mac_addr = of_get_mac_address(port_np);
|
- mac_addr = of_get_mac_address(port_np);
|
||||||
|
@ -34,7 +34,7 @@ Acked-by: Bjorn Helgaas <bhelgaas@google.com>
|
|||||||
set_dev_node(bus->bridge, pcibus_to_node(bus));
|
set_dev_node(bus->bridge, pcibus_to_node(bus));
|
||||||
--- a/include/linux/pci.h
|
--- a/include/linux/pci.h
|
||||||
+++ b/include/linux/pci.h
|
+++ b/include/linux/pci.h
|
||||||
@@ -547,6 +547,7 @@ struct pci_host_bridge {
|
@@ -548,6 +548,7 @@ struct pci_host_bridge {
|
||||||
unsigned int native_dpc:1; /* OS may use PCIe DPC */
|
unsigned int native_dpc:1; /* OS may use PCIe DPC */
|
||||||
unsigned int preserve_config:1; /* Preserve FW resource setup */
|
unsigned int preserve_config:1; /* Preserve FW resource setup */
|
||||||
unsigned int size_windows:1; /* Enable root bus sizing */
|
unsigned int size_windows:1; /* Enable root bus sizing */
|
||||||
|
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -493,7 +493,7 @@ KBUILD_LDFLAGS :=
|
@@ -500,7 +500,7 @@ KBUILD_LDFLAGS :=
|
||||||
GCC_PLUGINS_CFLAGS :=
|
GCC_PLUGINS_CFLAGS :=
|
||||||
CLANG_FLAGS :=
|
CLANG_FLAGS :=
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/net/core/dev.c
|
--- a/net/core/dev.c
|
||||||
+++ b/net/core/dev.c
|
+++ b/net/core/dev.c
|
||||||
@@ -5436,8 +5436,7 @@ static inline void skb_gro_reset_offset(
|
@@ -5438,8 +5438,7 @@ static inline void skb_gro_reset_offset(
|
||||||
NAPI_GRO_CB(skb)->frag0 = NULL;
|
NAPI_GRO_CB(skb)->frag0 = NULL;
|
||||||
NAPI_GRO_CB(skb)->frag0_len = 0;
|
NAPI_GRO_CB(skb)->frag0_len = 0;
|
||||||
|
|
||||||
|
@ -1833,7 +1833,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
}
|
}
|
||||||
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||||
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||||
@@ -3451,10 +3451,11 @@ static int bcmgenet_probe(struct platfor
|
@@ -3459,10 +3459,11 @@ static int bcmgenet_probe(struct platfor
|
||||||
const struct of_device_id *of_id = NULL;
|
const struct of_device_id *of_id = NULL;
|
||||||
struct bcmgenet_priv *priv;
|
struct bcmgenet_priv *priv;
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
@ -1846,7 +1846,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
/* Up to GENET_MAX_MQ_CNT + 1 TX queues and RX queues */
|
/* Up to GENET_MAX_MQ_CNT + 1 TX queues and RX queues */
|
||||||
dev = alloc_etherdev_mqs(sizeof(*priv), GENET_MAX_MQ_CNT + 1,
|
dev = alloc_etherdev_mqs(sizeof(*priv), GENET_MAX_MQ_CNT + 1,
|
||||||
@@ -3481,14 +3482,15 @@ static int bcmgenet_probe(struct platfor
|
@@ -3489,14 +3490,15 @@ static int bcmgenet_probe(struct platfor
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dn) {
|
if (dn) {
|
||||||
@ -1865,7 +1865,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
}
|
}
|
||||||
|
|
||||||
priv->base = devm_platform_ioremap_resource(pdev, 0);
|
priv->base = devm_platform_ioremap_resource(pdev, 0);
|
||||||
@@ -3501,7 +3503,6 @@ static int bcmgenet_probe(struct platfor
|
@@ -3509,7 +3511,6 @@ static int bcmgenet_probe(struct platfor
|
||||||
|
|
||||||
SET_NETDEV_DEV(dev, &pdev->dev);
|
SET_NETDEV_DEV(dev, &pdev->dev);
|
||||||
dev_set_drvdata(&pdev->dev, dev);
|
dev_set_drvdata(&pdev->dev, dev);
|
||||||
|
@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
/* __*init sections */ \
|
/* __*init sections */ \
|
||||||
@@ -1019,6 +1029,8 @@
|
@@ -1024,6 +1034,8 @@
|
||||||
|
|
||||||
#define COMMON_DISCARDS \
|
#define COMMON_DISCARDS \
|
||||||
SANITIZER_DISCARDS \
|
SANITIZER_DISCARDS \
|
||||||
|
@ -105,7 +105,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
|
||||||
@@ -3654,6 +3654,11 @@ static int xmit_one(struct sk_buff *skb,
|
@@ -3656,6 +3656,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);
|
||||||
|
|
||||||
|
@ -50,9 +50,9 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
|||||||
/**************************************************
|
/**************************************************
|
||||||
* MII
|
* MII
|
||||||
**************************************************/
|
**************************************************/
|
||||||
@@ -1542,6 +1554,14 @@ int bgmac_enet_probe(struct bgmac *bgmac
|
@@ -1546,6 +1558,14 @@ int bgmac_enet_probe(struct bgmac *bgmac
|
||||||
/* Omit FCS from max MTU size */
|
|
||||||
net_dev->max_mtu = BGMAC_RX_MAX_FRAME_SIZE - ETH_FCS_LEN;
|
bgmac->in_init = false;
|
||||||
|
|
||||||
+ if ((bgmac->feature_flags & BGMAC_FEAT_SRAB) && !bgmac_b53_pdata.regs) {
|
+ if ((bgmac->feature_flags & BGMAC_FEAT_SRAB) && !bgmac_b53_pdata.regs) {
|
||||||
+ bgmac_b53_pdata.regs = ioremap(0x18007000, 0x1000);
|
+ bgmac_b53_pdata.regs = ioremap(0x18007000, 0x1000);
|
||||||
@ -65,7 +65,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
|||||||
err = register_netdev(bgmac->net_dev);
|
err = register_netdev(bgmac->net_dev);
|
||||||
if (err) {
|
if (err) {
|
||||||
dev_err(bgmac->dev, "Cannot register net device\n");
|
dev_err(bgmac->dev, "Cannot register net device\n");
|
||||||
@@ -1564,6 +1584,10 @@ EXPORT_SYMBOL_GPL(bgmac_enet_probe);
|
@@ -1568,6 +1588,10 @@ EXPORT_SYMBOL_GPL(bgmac_enet_probe);
|
||||||
|
|
||||||
void bgmac_enet_remove(struct bgmac *bgmac)
|
void bgmac_enet_remove(struct bgmac *bgmac)
|
||||||
{
|
{
|
||||||
@ -86,7 +86,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
|||||||
|
|
||||||
struct bgmac_slot_info {
|
struct bgmac_slot_info {
|
||||||
union {
|
union {
|
||||||
@@ -533,6 +534,9 @@ struct bgmac {
|
@@ -535,6 +536,9 @@ struct bgmac {
|
||||||
void (*cmn_maskset32)(struct bgmac *bgmac, u16 offset, u32 mask,
|
void (*cmn_maskset32)(struct bgmac *bgmac, u16 offset, u32 mask,
|
||||||
u32 set);
|
u32 set);
|
||||||
int (*phy_connect)(struct bgmac *bgmac);
|
int (*phy_connect)(struct bgmac *bgmac);
|
||||||
|
@ -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
|
||||||
@@ -3701,6 +3701,8 @@ static __net_initdata struct pernet_oper
|
@@ -3710,6 +3710,8 @@ static __net_initdata struct pernet_oper
|
||||||
|
|
||||||
static int __init proto_init(void)
|
static int __init proto_init(void)
|
||||||
{
|
{
|
||||||
|
@ -274,7 +274,7 @@ Signed-off-by: Zhi Chen <zhichen@codeaurora.org>
|
|||||||
int nf_ct_expect_register_notifier(struct net *net,
|
int nf_ct_expect_register_notifier(struct net *net,
|
||||||
--- a/net/netfilter/nf_conntrack_netlink.c
|
--- a/net/netfilter/nf_conntrack_netlink.c
|
||||||
+++ b/net/netfilter/nf_conntrack_netlink.c
|
+++ b/net/netfilter/nf_conntrack_netlink.c
|
||||||
@@ -706,12 +706,19 @@ static size_t ctnetlink_nlmsg_size(const
|
@@ -707,12 +707,19 @@ static size_t ctnetlink_nlmsg_size(const
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -294,7 +294,7 @@ Signed-off-by: Zhi Chen <zhichen@codeaurora.org>
|
|||||||
struct nf_conn *ct = item->ct;
|
struct nf_conn *ct = item->ct;
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
unsigned int type;
|
unsigned int type;
|
||||||
@@ -3757,9 +3764,15 @@ static int ctnetlink_stat_exp_cpu(struct
|
@@ -3760,9 +3767,15 @@ static int ctnetlink_stat_exp_cpu(struct
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_NF_CONNTRACK_EVENTS
|
#ifdef CONFIG_NF_CONNTRACK_EVENTS
|
||||||
|
@ -80,7 +80,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
|
||||||
@@ -3650,9 +3650,17 @@ static int xmit_one(struct sk_buff *skb,
|
@@ -3652,9 +3652,17 @@ static int xmit_one(struct sk_buff *skb,
|
||||||
{
|
{
|
||||||
unsigned int len;
|
unsigned int len;
|
||||||
int rc;
|
int rc;
|
||||||
@ -99,7 +99,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)))
|
||||||
@@ -5204,6 +5212,11 @@ void netdev_rx_handler_unregister(struct
|
@@ -5206,6 +5214,11 @@ void netdev_rx_handler_unregister(struct
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister);
|
EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister);
|
||||||
|
|
||||||
@ -111,7 +111,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.
|
||||||
@@ -5252,6 +5265,10 @@ static int __netif_receive_skb_core(stru
|
@@ -5254,6 +5267,10 @@ static int __netif_receive_skb_core(stru
|
||||||
int ret = NET_RX_DROP;
|
int ret = NET_RX_DROP;
|
||||||
__be16 type;
|
__be16 type;
|
||||||
|
|
||||||
@ -122,7 +122,7 @@
|
|||||||
net_timestamp_check(!READ_ONCE(netdev_tstamp_prequeue), skb);
|
net_timestamp_check(!READ_ONCE(netdev_tstamp_prequeue), skb);
|
||||||
|
|
||||||
trace_netif_receive_skb(skb);
|
trace_netif_receive_skb(skb);
|
||||||
@@ -5291,6 +5308,15 @@ another_round:
|
@@ -5293,6 +5310,15 @@ another_round:
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,9 +56,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
/* __*init sections */ \
|
/* __*init sections */ \
|
||||||
@@ -905,6 +915,8 @@
|
@@ -917,6 +927,8 @@
|
||||||
EXIT_TEXT \
|
/DISCARD/ : { \
|
||||||
EXIT_DATA \
|
EXIT_DISCARDS \
|
||||||
EXIT_CALL \
|
EXIT_CALL \
|
||||||
+ SYMTAB_DISCARD \
|
+ SYMTAB_DISCARD \
|
||||||
+ SYMTAB_DISCARD_GPL \
|
+ SYMTAB_DISCARD_GPL \
|
||||||
|
@ -101,7 +101,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
|
||||||
@@ -3200,10 +3200,20 @@ static int xmit_one(struct sk_buff *skb,
|
@@ -3202,10 +3202,20 @@ 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);
|
||||||
|
|
||||||
|
@ -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
|
||||||
@@ -3641,6 +3641,8 @@ static __net_initdata struct pernet_oper
|
@@ -3657,6 +3657,8 @@ static __net_initdata struct pernet_oper
|
||||||
|
|
||||||
static int __init proto_init(void)
|
static int __init proto_init(void)
|
||||||
{
|
{
|
||||||
|
@ -295,7 +295,7 @@ Signed-off-by: Zhi Chen <zhichen@codeaurora.org>
|
|||||||
struct nf_conn *ct = item->ct;
|
struct nf_conn *ct = item->ct;
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
unsigned int type;
|
unsigned int type;
|
||||||
@@ -3508,9 +3515,15 @@ static int ctnetlink_stat_exp_cpu(struct
|
@@ -3511,9 +3518,15 @@ static int ctnetlink_stat_exp_cpu(struct
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_NF_CONNTRACK_EVENTS
|
#ifdef CONFIG_NF_CONNTRACK_EVENTS
|
||||||
|
@ -80,7 +80,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
|
||||||
@@ -3197,9 +3197,17 @@ static int xmit_one(struct sk_buff *skb,
|
@@ -3199,9 +3199,17 @@ static int xmit_one(struct sk_buff *skb,
|
||||||
unsigned int len;
|
unsigned int len;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
@ -99,7 +99,7 @@
|
|||||||
#ifdef CONFIG_ETHERNET_PACKET_MANGLE
|
#ifdef CONFIG_ETHERNET_PACKET_MANGLE
|
||||||
if (!dev->eth_mangle_tx ||
|
if (!dev->eth_mangle_tx ||
|
||||||
(skb = dev->eth_mangle_tx(dev, skb)) != NULL)
|
(skb = dev->eth_mangle_tx(dev, skb)) != NULL)
|
||||||
@@ -4715,6 +4723,11 @@ void netdev_rx_handler_unregister(struct
|
@@ -4717,6 +4725,11 @@ void netdev_rx_handler_unregister(struct
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister);
|
EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister);
|
||||||
|
|
||||||
@ -111,7 +111,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.
|
||||||
@@ -4765,6 +4778,10 @@ static int __netif_receive_skb_core(stru
|
@@ -4767,6 +4780,10 @@ static int __netif_receive_skb_core(stru
|
||||||
int ret = NET_RX_DROP;
|
int ret = NET_RX_DROP;
|
||||||
__be16 type;
|
__be16 type;
|
||||||
|
|
||||||
@ -122,7 +122,7 @@
|
|||||||
net_timestamp_check(!READ_ONCE(netdev_tstamp_prequeue), skb);
|
net_timestamp_check(!READ_ONCE(netdev_tstamp_prequeue), skb);
|
||||||
|
|
||||||
trace_netif_receive_skb(skb);
|
trace_netif_receive_skb(skb);
|
||||||
@@ -4804,6 +4821,16 @@ another_round:
|
@@ -4806,6 +4823,16 @@ another_round:
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -747,11 +747,11 @@ KBUILD_CFLAGS += $(call cc-disable-warni
|
@@ -754,11 +754,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
|
||||||
|
@ -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
|
||||||
@@ -2797,6 +2797,21 @@ static void spi_nor_info_init_params(str
|
@@ -2806,6 +2806,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,
|
||||||
@@ -2808,6 +2823,7 @@ static void spi_nor_info_init_params(str
|
@@ -2817,6 +2832,7 @@ static void spi_nor_info_init_params(str
|
||||||
SPINOR_OP_BE_4K);
|
SPINOR_OP_BE_4K);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
@@ -1185,6 +1185,73 @@ static struct mtd_info * __init open_mtd
|
@@ -1192,6 +1192,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;
|
||||||
@@ -1268,6 +1335,12 @@ static int __init ubi_init(void)
|
@@ -1275,6 +1342,12 @@ static int __init ubi_init(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
for (i = sizeof(struct ipt_entry);
|
for (i = sizeof(struct ipt_entry);
|
||||||
i < e->target_offset;
|
i < e->target_offset;
|
||||||
i += m->u.match_size) {
|
i += m->u.match_size) {
|
||||||
@@ -1223,12 +1260,15 @@ compat_copy_entry_to_user(struct ipt_ent
|
@@ -1222,12 +1259,15 @@ compat_copy_entry_to_user(struct ipt_ent
|
||||||
compat_uint_t origsize;
|
compat_uint_t origsize;
|
||||||
const struct xt_entry_match *ematch;
|
const struct xt_entry_match *ematch;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
@ -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)
|
||||||
@@ -6135,6 +6166,8 @@ static int ip6_route_dev_notify(struct n
|
@@ -6136,6 +6167,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
|
||||||
@@ -6146,6 +6179,7 @@ static int ip6_route_dev_notify(struct n
|
@@ -6147,6 +6180,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
|
||||||
}
|
}
|
||||||
@@ -6337,6 +6371,8 @@ static int __net_init ip6_route_net_init
|
@@ -6338,6 +6372,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);
|
||||||
@@ -6347,11 +6383,21 @@ static int __net_init ip6_route_net_init
|
@@ -6348,11 +6384,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);
|
||||||
@@ -6378,6 +6424,8 @@ out:
|
@@ -6379,6 +6425,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:
|
||||||
@@ -6397,6 +6445,7 @@ static void __net_exit ip6_route_net_exi
|
@@ -6398,6 +6446,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);
|
||||||
@@ -6480,6 +6529,9 @@ void __init ip6_route_init_special_entri
|
@@ -6481,6 +6530,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);
|
||||||
|
@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
__u16 tc_index; /* traffic control index */
|
__u16 tc_index; /* traffic control index */
|
||||||
--- a/net/core/dev.c
|
--- a/net/core/dev.c
|
||||||
+++ b/net/core/dev.c
|
+++ b/net/core/dev.c
|
||||||
@@ -6067,6 +6067,9 @@ static enum gro_result dev_gro_receive(s
|
@@ -6069,6 +6069,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;
|
||||||
|
|
||||||
@@ -8045,6 +8048,48 @@ static void __netdev_adjacent_dev_unlink
|
@@ -8048,6 +8051,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,
|
||||||
@@ -8096,6 +8141,7 @@ static int __netdev_upper_dev_link(struc
|
@@ -8099,6 +8144,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);
|
||||||
@@ -8192,6 +8238,7 @@ static void __netdev_upper_dev_unlink(st
|
@@ -8195,6 +8241,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);
|
||||||
|
|
||||||
@@ -8978,6 +9025,7 @@ int dev_set_mac_address(struct net_devic
|
@@ -8981,6 +9028,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;
|
||||||
|
@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
#include <linux/mfd/syscon.h>
|
#include <linux/mfd/syscon.h>
|
||||||
#include <linux/regmap.h>
|
#include <linux/regmap.h>
|
||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
@@ -832,7 +833,7 @@ static int mtk_init_fq_dma(struct mtk_et
|
@@ -833,7 +834,7 @@ static int mtk_init_fq_dma(struct mtk_et
|
||||||
dma_addr_t dma_addr;
|
dma_addr_t dma_addr;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
cnt * sizeof(struct mtk_tx_dma),
|
cnt * sizeof(struct mtk_tx_dma),
|
||||||
ð->phy_scratch_ring,
|
ð->phy_scratch_ring,
|
||||||
GFP_ATOMIC);
|
GFP_ATOMIC);
|
||||||
@@ -844,10 +845,10 @@ static int mtk_init_fq_dma(struct mtk_et
|
@@ -845,10 +846,10 @@ static int mtk_init_fq_dma(struct mtk_et
|
||||||
if (unlikely(!eth->scratch_head))
|
if (unlikely(!eth->scratch_head))
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
phy_ring_tail = eth->phy_scratch_ring +
|
phy_ring_tail = eth->phy_scratch_ring +
|
||||||
@@ -901,26 +902,26 @@ static void mtk_tx_unmap(struct mtk_eth
|
@@ -902,26 +903,26 @@ static void mtk_tx_unmap(struct mtk_eth
|
||||||
{
|
{
|
||||||
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
|
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
|
||||||
if (tx_buf->flags & MTK_TX_FLAGS_SINGLE0) {
|
if (tx_buf->flags & MTK_TX_FLAGS_SINGLE0) {
|
||||||
@ -73,7 +73,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
dma_unmap_addr(tx_buf, dma_addr1),
|
dma_unmap_addr(tx_buf, dma_addr1),
|
||||||
dma_unmap_len(tx_buf, dma_len1),
|
dma_unmap_len(tx_buf, dma_len1),
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
@@ -998,9 +999,9 @@ static int mtk_tx_map(struct sk_buff *sk
|
@@ -999,9 +1000,9 @@ static int mtk_tx_map(struct sk_buff *sk
|
||||||
if (skb_vlan_tag_present(skb))
|
if (skb_vlan_tag_present(skb))
|
||||||
txd4 |= TX_DMA_INS_VLAN | skb_vlan_tag_get(skb);
|
txd4 |= TX_DMA_INS_VLAN | skb_vlan_tag_get(skb);
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
WRITE_ONCE(itxd->txd1, mapped_addr);
|
WRITE_ONCE(itxd->txd1, mapped_addr);
|
||||||
@@ -1039,10 +1040,10 @@ static int mtk_tx_map(struct sk_buff *sk
|
@@ -1040,10 +1041,10 @@ static int mtk_tx_map(struct sk_buff *sk
|
||||||
|
|
||||||
|
|
||||||
frag_map_size = min(frag_size, MTK_TX_DMA_BUF_LEN);
|
frag_map_size = min(frag_size, MTK_TX_DMA_BUF_LEN);
|
||||||
@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
goto err_dma;
|
goto err_dma;
|
||||||
|
|
||||||
if (i == nr_frags - 1 &&
|
if (i == nr_frags - 1 &&
|
||||||
@@ -1323,18 +1324,18 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1324,18 +1325,18 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
netdev->stats.rx_dropped++;
|
netdev->stats.rx_dropped++;
|
||||||
goto release_desc;
|
goto release_desc;
|
||||||
}
|
}
|
||||||
@ -120,7 +120,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
ring->buf_size, DMA_FROM_DEVICE);
|
ring->buf_size, DMA_FROM_DEVICE);
|
||||||
|
|
||||||
/* receive data */
|
/* receive data */
|
||||||
@@ -1607,7 +1608,7 @@ static int mtk_tx_alloc(struct mtk_eth *
|
@@ -1608,7 +1609,7 @@ static int mtk_tx_alloc(struct mtk_eth *
|
||||||
if (!ring->buf)
|
if (!ring->buf)
|
||||||
goto no_tx_mem;
|
goto no_tx_mem;
|
||||||
|
|
||||||
@ -129,7 +129,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
&ring->phys, GFP_ATOMIC);
|
&ring->phys, GFP_ATOMIC);
|
||||||
if (!ring->dma)
|
if (!ring->dma)
|
||||||
goto no_tx_mem;
|
goto no_tx_mem;
|
||||||
@@ -1625,7 +1626,7 @@ static int mtk_tx_alloc(struct mtk_eth *
|
@@ -1626,7 +1627,7 @@ static int mtk_tx_alloc(struct mtk_eth *
|
||||||
* descriptors in ring->dma_pdma.
|
* descriptors in ring->dma_pdma.
|
||||||
*/
|
*/
|
||||||
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
|
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
|
||||||
@ -138,7 +138,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
&ring->phys_pdma,
|
&ring->phys_pdma,
|
||||||
GFP_ATOMIC);
|
GFP_ATOMIC);
|
||||||
if (!ring->dma_pdma)
|
if (!ring->dma_pdma)
|
||||||
@@ -1684,7 +1685,7 @@ static void mtk_tx_clean(struct mtk_eth
|
@@ -1685,7 +1686,7 @@ static void mtk_tx_clean(struct mtk_eth
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ring->dma) {
|
if (ring->dma) {
|
||||||
@ -147,7 +147,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
MTK_DMA_SIZE * sizeof(*ring->dma),
|
MTK_DMA_SIZE * sizeof(*ring->dma),
|
||||||
ring->dma,
|
ring->dma,
|
||||||
ring->phys);
|
ring->phys);
|
||||||
@@ -1692,7 +1693,7 @@ static void mtk_tx_clean(struct mtk_eth
|
@@ -1693,7 +1694,7 @@ static void mtk_tx_clean(struct mtk_eth
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ring->dma_pdma) {
|
if (ring->dma_pdma) {
|
||||||
@ -156,7 +156,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
MTK_DMA_SIZE * sizeof(*ring->dma_pdma),
|
MTK_DMA_SIZE * sizeof(*ring->dma_pdma),
|
||||||
ring->dma_pdma,
|
ring->dma_pdma,
|
||||||
ring->phys_pdma);
|
ring->phys_pdma);
|
||||||
@@ -1740,18 +1741,18 @@ static int mtk_rx_alloc(struct mtk_eth *
|
@@ -1741,18 +1742,18 @@ static int mtk_rx_alloc(struct mtk_eth *
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,7 +178,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
ring->dma[i].rxd1 = (unsigned int)dma_addr;
|
ring->dma[i].rxd1 = (unsigned int)dma_addr;
|
||||||
|
|
||||||
@@ -1787,7 +1788,7 @@ static void mtk_rx_clean(struct mtk_eth
|
@@ -1788,7 +1789,7 @@ static void mtk_rx_clean(struct mtk_eth
|
||||||
continue;
|
continue;
|
||||||
if (!ring->dma[i].rxd1)
|
if (!ring->dma[i].rxd1)
|
||||||
continue;
|
continue;
|
||||||
@ -187,7 +187,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
ring->dma[i].rxd1,
|
ring->dma[i].rxd1,
|
||||||
ring->buf_size,
|
ring->buf_size,
|
||||||
DMA_FROM_DEVICE);
|
DMA_FROM_DEVICE);
|
||||||
@@ -1798,7 +1799,7 @@ static void mtk_rx_clean(struct mtk_eth
|
@@ -1799,7 +1800,7 @@ static void mtk_rx_clean(struct mtk_eth
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ring->dma) {
|
if (ring->dma) {
|
||||||
@ -196,7 +196,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
ring->dma_size * sizeof(*ring->dma),
|
ring->dma_size * sizeof(*ring->dma),
|
||||||
ring->dma,
|
ring->dma,
|
||||||
ring->phys);
|
ring->phys);
|
||||||
@@ -2154,7 +2155,7 @@ static void mtk_dma_free(struct mtk_eth
|
@@ -2155,7 +2156,7 @@ static void mtk_dma_free(struct mtk_eth
|
||||||
if (eth->netdev[i])
|
if (eth->netdev[i])
|
||||||
netdev_reset_queue(eth->netdev[i]);
|
netdev_reset_queue(eth->netdev[i]);
|
||||||
if (eth->scratch_ring) {
|
if (eth->scratch_ring) {
|
||||||
@ -205,7 +205,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
MTK_DMA_SIZE * sizeof(struct mtk_tx_dma),
|
MTK_DMA_SIZE * sizeof(struct mtk_tx_dma),
|
||||||
eth->scratch_ring,
|
eth->scratch_ring,
|
||||||
eth->phy_scratch_ring);
|
eth->phy_scratch_ring);
|
||||||
@@ -2505,6 +2506,8 @@ static void mtk_dim_tx(struct work_struc
|
@@ -2506,6 +2507,8 @@ static void mtk_dim_tx(struct work_struc
|
||||||
|
|
||||||
static int mtk_hw_init(struct mtk_eth *eth)
|
static int mtk_hw_init(struct mtk_eth *eth)
|
||||||
{
|
{
|
||||||
@ -214,7 +214,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
int i, val, ret;
|
int i, val, ret;
|
||||||
|
|
||||||
if (test_and_set_bit(MTK_HW_INIT, ð->state))
|
if (test_and_set_bit(MTK_HW_INIT, ð->state))
|
||||||
@@ -2517,6 +2520,10 @@ static int mtk_hw_init(struct mtk_eth *e
|
@@ -2518,6 +2521,10 @@ static int mtk_hw_init(struct mtk_eth *e
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err_disable_pm;
|
goto err_disable_pm;
|
||||||
|
|
||||||
@ -225,7 +225,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628)) {
|
if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628)) {
|
||||||
ret = device_reset(eth->dev);
|
ret = device_reset(eth->dev);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
@@ -3066,6 +3073,35 @@ free_netdev:
|
@@ -3067,6 +3074,35 @@ free_netdev:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,7 +261,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
static int mtk_probe(struct platform_device *pdev)
|
static int mtk_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct device_node *mac_np;
|
struct device_node *mac_np;
|
||||||
@@ -3079,6 +3115,7 @@ static int mtk_probe(struct platform_dev
|
@@ -3080,6 +3116,7 @@ static int mtk_probe(struct platform_dev
|
||||||
eth->soc = of_device_get_match_data(&pdev->dev);
|
eth->soc = of_device_get_match_data(&pdev->dev);
|
||||||
|
|
||||||
eth->dev = &pdev->dev;
|
eth->dev = &pdev->dev;
|
||||||
@ -269,7 +269,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
eth->base = devm_platform_ioremap_resource(pdev, 0);
|
eth->base = devm_platform_ioremap_resource(pdev, 0);
|
||||||
if (IS_ERR(eth->base))
|
if (IS_ERR(eth->base))
|
||||||
return PTR_ERR(eth->base);
|
return PTR_ERR(eth->base);
|
||||||
@@ -3127,6 +3164,16 @@ static int mtk_probe(struct platform_dev
|
@@ -3128,6 +3165,16 @@ static int mtk_probe(struct platform_dev
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -288,7 +288,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||||
@@ -456,6 +456,12 @@
|
@@ -457,6 +457,12 @@
|
||||||
#define RSTCTRL_FE BIT(6)
|
#define RSTCTRL_FE BIT(6)
|
||||||
#define RSTCTRL_PPE BIT(31)
|
#define RSTCTRL_PPE BIT(31)
|
||||||
|
|
||||||
@ -301,7 +301,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
/* SGMII subsystem config registers */
|
/* SGMII subsystem config registers */
|
||||||
/* Register to auto-negotiation restart */
|
/* Register to auto-negotiation restart */
|
||||||
#define SGMSYS_PCS_CONTROL_1 0x0
|
#define SGMSYS_PCS_CONTROL_1 0x0
|
||||||
@@ -873,6 +879,7 @@ struct mtk_sgmii {
|
@@ -874,6 +880,7 @@ struct mtk_sgmii {
|
||||||
/* struct mtk_eth - This is the main datasructure for holding the state
|
/* struct mtk_eth - This is the main datasructure for holding the state
|
||||||
* of the driver
|
* of the driver
|
||||||
* @dev: The device pointer
|
* @dev: The device pointer
|
||||||
@ -309,7 +309,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
* @base: The mapped register i/o base
|
* @base: The mapped register i/o base
|
||||||
* @page_lock: Make sure that register operations are atomic
|
* @page_lock: Make sure that register operations are atomic
|
||||||
* @tx_irq__lock: Make sure that IRQ register operations are atomic
|
* @tx_irq__lock: Make sure that IRQ register operations are atomic
|
||||||
@@ -916,6 +923,7 @@ struct mtk_sgmii {
|
@@ -917,6 +924,7 @@ struct mtk_sgmii {
|
||||||
|
|
||||||
struct mtk_eth {
|
struct mtk_eth {
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
@ -317,7 +317,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
void __iomem *base;
|
void __iomem *base;
|
||||||
spinlock_t page_lock;
|
spinlock_t page_lock;
|
||||||
spinlock_t tx_irq_lock;
|
spinlock_t tx_irq_lock;
|
||||||
@@ -1014,6 +1022,7 @@ int mtk_gmac_rgmii_path_setup(struct mtk
|
@@ -1015,6 +1023,7 @@ int mtk_gmac_rgmii_path_setup(struct mtk
|
||||||
int mtk_eth_offload_init(struct mtk_eth *eth);
|
int mtk_eth_offload_init(struct mtk_eth *eth);
|
||||||
int mtk_eth_setup_tc(struct net_device *dev, enum tc_setup_type type,
|
int mtk_eth_setup_tc(struct net_device *dev, enum tc_setup_type type,
|
||||||
void *type_data);
|
void *type_data);
|
||||||
|
@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
interface-type = "ace";
|
interface-type = "ace";
|
||||||
reg = <0x5000 0x1000>;
|
reg = <0x5000 0x1000>;
|
||||||
};
|
};
|
||||||
@@ -936,6 +936,8 @@
|
@@ -937,6 +937,8 @@
|
||||||
power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
|
power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
|
||||||
mediatek,ethsys = <ðsys>;
|
mediatek,ethsys = <ðsys>;
|
||||||
mediatek,sgmiisys = <&sgmiisys>;
|
mediatek,sgmiisys = <&sgmiisys>;
|
||||||
|
@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
static int mtk_msg_level = -1;
|
static int mtk_msg_level = -1;
|
||||||
module_param_named(msg_level, mtk_msg_level, int, 0);
|
module_param_named(msg_level, mtk_msg_level, int, 0);
|
||||||
@@ -3196,6 +3197,22 @@ static int mtk_probe(struct platform_dev
|
@@ -3197,6 +3198,22 @@ static int mtk_probe(struct platform_dev
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
|
--- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
|
+++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
|
||||||
@@ -892,6 +892,11 @@
|
@@ -893,6 +893,11 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
ethsys: syscon@1b000000 {
|
ethsys: syscon@1b000000 {
|
||||||
compatible = "mediatek,mt7622-ethsys",
|
compatible = "mediatek,mt7622-ethsys",
|
||||||
"syscon";
|
"syscon";
|
||||||
@@ -910,6 +915,26 @@
|
@@ -911,6 +916,26 @@
|
||||||
#dma-cells = <1>;
|
#dma-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
eth: ethernet@1b100000 {
|
eth: ethernet@1b100000 {
|
||||||
compatible = "mediatek,mt7622-eth",
|
compatible = "mediatek,mt7622-eth",
|
||||||
"mediatek,mt2701-eth",
|
"mediatek,mt2701-eth",
|
||||||
@@ -937,6 +962,9 @@
|
@@ -938,6 +963,9 @@
|
||||||
mediatek,ethsys = <ðsys>;
|
mediatek,ethsys = <ðsys>;
|
||||||
mediatek,sgmiisys = <&sgmiisys>;
|
mediatek,sgmiisys = <&sgmiisys>;
|
||||||
mediatek,cci-control = <&cci_control2>;
|
mediatek,cci-control = <&cci_control2>;
|
||||||
|
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -2328,7 +2328,7 @@ static int mtk_open(struct net_device *d
|
@@ -2329,7 +2329,7 @@ static int mtk_open(struct net_device *d
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
gdm_config = MTK_GDMA_TO_PPE;
|
gdm_config = MTK_GDMA_TO_PPE;
|
||||||
|
|
||||||
mtk_gdm_config(eth, gdm_config);
|
mtk_gdm_config(eth, gdm_config);
|
||||||
@@ -2402,7 +2402,7 @@ static int mtk_stop(struct net_device *d
|
@@ -2403,7 +2403,7 @@ static int mtk_stop(struct net_device *d
|
||||||
mtk_dma_free(eth);
|
mtk_dma_free(eth);
|
||||||
|
|
||||||
if (eth->soc->offload_version)
|
if (eth->soc->offload_version)
|
||||||
@ -28,7 +28,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -3288,10 +3288,11 @@ static int mtk_probe(struct platform_dev
|
@@ -3289,10 +3289,11 @@ static int mtk_probe(struct platform_dev
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eth->soc->offload_version) {
|
if (eth->soc->offload_version) {
|
||||||
@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
if (err)
|
if (err)
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||||
@@ -976,7 +976,7 @@ struct mtk_eth {
|
@@ -977,7 +977,7 @@ struct mtk_eth {
|
||||||
u32 rx_dma_l4_valid;
|
u32 rx_dma_l4_valid;
|
||||||
int ip_align;
|
int ip_align;
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
#include <net/dsa.h>
|
#include <net/dsa.h>
|
||||||
|
|
||||||
#include "mtk_eth_soc.h"
|
#include "mtk_eth_soc.h"
|
||||||
@@ -1285,7 +1286,7 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1286,7 +1287,7 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
struct net_device *netdev;
|
struct net_device *netdev;
|
||||||
unsigned int pktlen;
|
unsigned int pktlen;
|
||||||
dma_addr_t dma_addr;
|
dma_addr_t dma_addr;
|
||||||
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
int mac;
|
int mac;
|
||||||
|
|
||||||
ring = mtk_get_rx_ring(eth);
|
ring = mtk_get_rx_ring(eth);
|
||||||
@@ -1364,6 +1365,11 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1365,6 +1366,11 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
skb_set_hash(skb, hash, PKT_HASH_TYPE_L4);
|
skb_set_hash(skb, hash, PKT_HASH_TYPE_L4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,7 +54,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX &&
|
if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX &&
|
||||||
(trxd.rxd2 & RX_DMA_VTAG))
|
(trxd.rxd2 & RX_DMA_VTAG))
|
||||||
__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
|
__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
|
||||||
@@ -3288,7 +3294,7 @@ static int mtk_probe(struct platform_dev
|
@@ -3289,7 +3295,7 @@ static int mtk_probe(struct platform_dev
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eth->soc->offload_version) {
|
if (eth->soc->offload_version) {
|
||||||
|
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -2199,8 +2199,8 @@ static irqreturn_t mtk_handle_irq_rx(int
|
@@ -2200,8 +2200,8 @@ static irqreturn_t mtk_handle_irq_rx(int
|
||||||
|
|
||||||
eth->rx_events++;
|
eth->rx_events++;
|
||||||
if (likely(napi_schedule_prep(ð->rx_napi))) {
|
if (likely(napi_schedule_prep(ð->rx_napi))) {
|
||||||
@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
}
|
}
|
||||||
|
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
@@ -2212,8 +2212,8 @@ static irqreturn_t mtk_handle_irq_tx(int
|
@@ -2213,8 +2213,8 @@ static irqreturn_t mtk_handle_irq_tx(int
|
||||||
|
|
||||||
eth->tx_events++;
|
eth->tx_events++;
|
||||||
if (likely(napi_schedule_prep(ð->tx_napi))) {
|
if (likely(napi_schedule_prep(ð->tx_napi))) {
|
||||||
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
}
|
}
|
||||||
|
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
@@ -3323,6 +3323,8 @@ static int mtk_probe(struct platform_dev
|
@@ -3324,6 +3324,8 @@ static int mtk_probe(struct platform_dev
|
||||||
* for NAPI to work
|
* for NAPI to work
|
||||||
*/
|
*/
|
||||||
init_dummy_netdev(ð->dummy_dev);
|
init_dummy_netdev(ð->dummy_dev);
|
||||||
|
@ -17,7 +17,7 @@ Signed-off-by: Alexander Duyck <alexanderduyck@fb.com>
|
|||||||
|
|
||||||
--- a/net/core/skbuff.c
|
--- a/net/core/skbuff.c
|
||||||
+++ b/net/core/skbuff.c
|
+++ b/net/core/skbuff.c
|
||||||
@@ -4165,6 +4165,15 @@ int skb_gro_receive(struct sk_buff *p, s
|
@@ -4164,6 +4164,15 @@ int skb_gro_receive(struct sk_buff *p, s
|
||||||
if (unlikely(p->len + len >= 65536 || NAPI_GRO_CB(skb)->flush))
|
if (unlikely(p->len + len >= 65536 || NAPI_GRO_CB(skb)->flush))
|
||||||
return -E2BIG;
|
return -E2BIG;
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -719,11 +719,11 @@ KBUILD_CFLAGS += $(call cc-disable-warni
|
@@ -726,11 +726,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
|
||||||
|
@ -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
|
||||||
@@ -1161,6 +1161,73 @@ static struct mtd_info * __init open_mtd
|
@@ -1168,6 +1168,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;
|
||||||
@@ -1244,6 +1311,12 @@ static int __init ubi_init(void)
|
@@ -1251,6 +1318,12 @@ static int __init ubi_init(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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)
|
||||||
@@ -6091,6 +6122,8 @@ static int ip6_route_dev_notify(struct n
|
@@ -6092,6 +6123,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
|
||||||
@@ -6102,6 +6135,7 @@ static int ip6_route_dev_notify(struct n
|
@@ -6103,6 +6136,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
|
||||||
}
|
}
|
||||||
@@ -6294,6 +6328,8 @@ static int __net_init ip6_route_net_init
|
@@ -6295,6 +6329,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);
|
||||||
@@ -6304,11 +6340,21 @@ static int __net_init ip6_route_net_init
|
@@ -6305,11 +6341,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);
|
||||||
@@ -6332,6 +6378,8 @@ out:
|
@@ -6333,6 +6379,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:
|
||||||
@@ -6351,6 +6399,7 @@ static void __net_exit ip6_route_net_exi
|
@@ -6352,6 +6400,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);
|
||||||
@@ -6434,6 +6483,9 @@ void __init ip6_route_init_special_entri
|
@@ -6435,6 +6484,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);
|
||||||
|
@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
__wsum csum;
|
__wsum csum;
|
||||||
--- a/net/core/dev.c
|
--- a/net/core/dev.c
|
||||||
+++ b/net/core/dev.c
|
+++ b/net/core/dev.c
|
||||||
@@ -5502,6 +5502,9 @@ static enum gro_result dev_gro_receive(s
|
@@ -5504,6 +5504,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;
|
||||||
|
|
||||||
@@ -7304,6 +7307,48 @@ static void __netdev_adjacent_dev_unlink
|
@@ -7306,6 +7309,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,
|
||||||
@@ -7354,6 +7399,7 @@ static int __netdev_upper_dev_link(struc
|
@@ -7356,6 +7401,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);
|
||||||
@@ -7447,6 +7493,7 @@ void netdev_upper_dev_unlink(struct net_
|
@@ -7449,6 +7495,7 @@ void netdev_upper_dev_unlink(struct net_
|
||||||
|
|
||||||
__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);
|
||||||
|
|
||||||
@@ -8177,6 +8224,7 @@ int dev_set_mac_address(struct net_devic
|
@@ -8179,6 +8226,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;
|
||||||
|
@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
static int netif_rx_internal(struct sk_buff *skb);
|
static int netif_rx_internal(struct sk_buff *skb);
|
||||||
static int call_netdevice_notifiers_info(unsigned long val,
|
static int call_netdevice_notifiers_info(unsigned long val,
|
||||||
@@ -5944,6 +5945,11 @@ void __napi_schedule(struct napi_struct
|
@@ -5946,6 +5947,11 @@ void __napi_schedule(struct napi_struct
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
____napi_schedule(this_cpu_ptr(&softnet_data), n);
|
____napi_schedule(this_cpu_ptr(&softnet_data), n);
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
@@ -5995,6 +6001,10 @@ EXPORT_SYMBOL(napi_schedule_prep);
|
@@ -5997,6 +6003,10 @@ EXPORT_SYMBOL(napi_schedule_prep);
|
||||||
*/
|
*/
|
||||||
void __napi_schedule_irqoff(struct napi_struct *n)
|
void __napi_schedule_irqoff(struct napi_struct *n)
|
||||||
{
|
{
|
||||||
@ -118,7 +118,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
if (!IS_ENABLED(CONFIG_PREEMPT_RT))
|
if (!IS_ENABLED(CONFIG_PREEMPT_RT))
|
||||||
____napi_schedule(this_cpu_ptr(&softnet_data), n);
|
____napi_schedule(this_cpu_ptr(&softnet_data), n);
|
||||||
else
|
else
|
||||||
@@ -6259,9 +6269,89 @@ static void init_gro_hash(struct napi_st
|
@@ -6261,9 +6271,89 @@ static void init_gro_hash(struct napi_st
|
||||||
napi->gro_bitmask = 0;
|
napi->gro_bitmask = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,7 +208,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
INIT_LIST_HEAD(&napi->poll_list);
|
INIT_LIST_HEAD(&napi->poll_list);
|
||||||
hrtimer_init(&napi->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED);
|
hrtimer_init(&napi->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED);
|
||||||
napi->timer.function = napi_watchdog;
|
napi->timer.function = napi_watchdog;
|
||||||
@@ -6278,6 +6368,7 @@ void netif_napi_add(struct net_device *d
|
@@ -6280,6 +6370,7 @@ void netif_napi_add(struct net_device *d
|
||||||
#ifdef CONFIG_NETPOLL
|
#ifdef CONFIG_NETPOLL
|
||||||
napi->poll_owner = -1;
|
napi->poll_owner = -1;
|
||||||
#endif
|
#endif
|
||||||
@ -216,7 +216,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
set_bit(NAPI_STATE_SCHED, &napi->state);
|
set_bit(NAPI_STATE_SCHED, &napi->state);
|
||||||
set_bit(NAPI_STATE_NPSVC, &napi->state);
|
set_bit(NAPI_STATE_NPSVC, &napi->state);
|
||||||
list_add_rcu(&napi->dev_list, &dev->napi_list);
|
list_add_rcu(&napi->dev_list, &dev->napi_list);
|
||||||
@@ -6318,6 +6409,7 @@ static void flush_gro_hash(struct napi_s
|
@@ -6320,6 +6411,7 @@ static void flush_gro_hash(struct napi_s
|
||||||
void netif_napi_del(struct napi_struct *napi)
|
void netif_napi_del(struct napi_struct *napi)
|
||||||
{
|
{
|
||||||
might_sleep();
|
might_sleep();
|
||||||
@ -224,7 +224,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
if (napi_hash_del(napi))
|
if (napi_hash_del(napi))
|
||||||
synchronize_net();
|
synchronize_net();
|
||||||
list_del_init(&napi->dev_list);
|
list_del_init(&napi->dev_list);
|
||||||
@@ -6330,50 +6422,18 @@ EXPORT_SYMBOL(netif_napi_del);
|
@@ -6332,50 +6424,18 @@ EXPORT_SYMBOL(netif_napi_del);
|
||||||
|
|
||||||
static int napi_poll(struct napi_struct *n, struct list_head *repoll)
|
static int napi_poll(struct napi_struct *n, struct list_head *repoll)
|
||||||
{
|
{
|
||||||
@ -279,7 +279,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
/* Some drivers may have called napi_schedule
|
/* Some drivers may have called napi_schedule
|
||||||
* prior to exhausting their budget.
|
* prior to exhausting their budget.
|
||||||
@@ -10345,6 +10405,10 @@ static int __init net_dev_init(void)
|
@@ -10347,6 +10407,10 @@ static int __init net_dev_init(void)
|
||||||
sd->backlog.weight = weight_p;
|
sd->backlog.weight = weight_p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1362,7 +1362,7 @@
|
|||||||
out:
|
out:
|
||||||
fib6_info_release(rt);
|
fib6_info_release(rt);
|
||||||
return err;
|
return err;
|
||||||
@@ -6143,6 +6153,20 @@ static int ip6_route_dev_notify(struct n
|
@@ -6144,6 +6154,20 @@ static int ip6_route_dev_notify(struct n
|
||||||
return NOTIFY_OK;
|
return NOTIFY_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&qmp_pcie_phy0 {
|
&pcie_qmp0 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
4
target/linux/ipq807x/files-5.10/arch/arm64/boot/dts/qcom/ipq8078-xtr10890.dts
Executable file → Normal file
4
target/linux/ipq807x/files-5.10/arch/arm64/boot/dts/qcom/ipq8078-xtr10890.dts
Executable file → Normal file
@ -404,7 +404,7 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&qmp_pcie_phy0 {
|
&pcie_qmp0 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -437,7 +437,7 @@
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&qmp_pcie_phy1 {
|
&pcie_qmp1 {
|
||||||
//status = "okay";
|
//status = "okay";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
@ -87,7 +87,7 @@ Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|||||||
|
|
||||||
--- a/drivers/remoteproc/qcom_q6v5_mss.c
|
--- a/drivers/remoteproc/qcom_q6v5_mss.c
|
||||||
+++ b/drivers/remoteproc/qcom_q6v5_mss.c
|
+++ b/drivers/remoteproc/qcom_q6v5_mss.c
|
||||||
@@ -1376,7 +1376,7 @@ static int q6v5_stop(struct rproc *rproc
|
@@ -1402,7 +1402,7 @@ static int q6v5_stop(struct rproc *rproc
|
||||||
struct q6v5 *qproc = (struct q6v5 *)rproc->priv;
|
struct q6v5 *qproc = (struct q6v5 *)rproc->priv;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@ -15,8 +15,8 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
|
|
||||||
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
@@ -197,6 +197,30 @@
|
@@ -224,6 +224,30 @@
|
||||||
status = "disabled";
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
+ cryptobam: dma@704000 {
|
+ cryptobam: dma@704000 {
|
||||||
|
@ -13,8 +13,8 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
|
|
||||||
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
@@ -197,6 +197,14 @@
|
@@ -224,6 +224,14 @@
|
||||||
status = "disabled";
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
+ prng: rng@e3000 {
|
+ prng: rng@e3000 {
|
||||||
|
@ -83,8 +83,8 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
|
|||||||
soc: soc {
|
soc: soc {
|
||||||
#address-cells = <0x1>;
|
#address-cells = <0x1>;
|
||||||
#size-cells = <0x1>;
|
#size-cells = <0x1>;
|
||||||
@@ -727,5 +781,72 @@
|
@@ -758,5 +812,72 @@
|
||||||
"axi_m_sticky";
|
"axi_s_sticky";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
+
|
+
|
||||||
|
@ -13,8 +13,8 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
|
|
||||||
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
@@ -257,6 +257,18 @@
|
@@ -284,6 +284,18 @@
|
||||||
status = "disabled";
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
+ mdio: mdio@90000 {
|
+ mdio: mdio@90000 {
|
||||||
|
@ -1,181 +0,0 @@
|
|||||||
From f46a2d9ff3346809e64fbf5c1796651207b57f00 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Sivaprakash Murugesan <sivaprak@codeaurora.org>
|
|
||||||
Date: Wed, 29 Jul 2020 21:00:07 +0530
|
|
||||||
Subject: [PATCH] arm64: dts: ipq8074: Fixup PCIe dts nodes
|
|
||||||
|
|
||||||
ipq8074 PCIe nodes missing required properties to make them work.
|
|
||||||
Add these properties.
|
|
||||||
|
|
||||||
Signed-off-by: Sivaprakash Murugesan <sivaprak@codeaurora.org>
|
|
||||||
---
|
|
||||||
arch/arm64/boot/dts/qcom/ipq8074.dtsi | 109 +++++++++++++++++---------
|
|
||||||
1 file changed, 74 insertions(+), 35 deletions(-)
|
|
||||||
|
|
||||||
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
|
||||||
@@ -227,34 +227,66 @@
|
|
||||||
resets = <&gcc GCC_QUSB2_0_PHY_BCR>;
|
|
||||||
};
|
|
||||||
|
|
||||||
- pcie_phy0: phy@86000 {
|
|
||||||
- compatible = "qcom,ipq8074-qmp-pcie-phy";
|
|
||||||
- reg = <0x00086000 0x1000>;
|
|
||||||
- #phy-cells = <0>;
|
|
||||||
- clocks = <&gcc GCC_PCIE0_PIPE_CLK>;
|
|
||||||
- clock-names = "pipe_clk";
|
|
||||||
- clock-output-names = "pcie20_phy0_pipe_clk";
|
|
||||||
+ qmp_pcie_phy0: phy@84000 {
|
|
||||||
+ compatible = "qcom,ipq8074-qmp-pcie-gen3-phy";
|
|
||||||
+ reg = <0x00084000 0x1bc>;
|
|
||||||
+ #address-cells = <1>;
|
|
||||||
+ #size-cells = <1>;
|
|
||||||
+ ranges;
|
|
||||||
+
|
|
||||||
+ clocks = <&gcc GCC_PCIE0_AUX_CLK>,
|
|
||||||
+ <&gcc GCC_PCIE0_AHB_CLK>;
|
|
||||||
+ clock-names = "aux", "cfg_ahb";
|
|
||||||
|
|
||||||
resets = <&gcc GCC_PCIE0_PHY_BCR>,
|
|
||||||
- <&gcc GCC_PCIE0PHY_PHY_BCR>;
|
|
||||||
+ <&gcc GCC_PCIE0PHY_PHY_BCR>;
|
|
||||||
reset-names = "phy",
|
|
||||||
"common";
|
|
||||||
+
|
|
||||||
status = "disabled";
|
|
||||||
+ pcie_phy0: lane@84200 {
|
|
||||||
+ reg = <0x84200 0x16c>, /* Serdes Tx */
|
|
||||||
+ <0x84400 0x200>, /* Serdes Rx */
|
|
||||||
+ <0x84800 0x4f4>; /* PCS: Lane0, COM, PCIE */
|
|
||||||
+ #phy-cells = <0>;
|
|
||||||
+
|
|
||||||
+ clocks = <&gcc GCC_PCIE0_PIPE_CLK>;
|
|
||||||
+ clock-names = "pipe0";
|
|
||||||
+ clock-output-names = "gcc_pcie0_pipe_clk_src";
|
|
||||||
+ clock-output-rate = <250000000>;
|
|
||||||
+ #clock-cells = <0>;
|
|
||||||
+ };
|
|
||||||
};
|
|
||||||
|
|
||||||
- pcie_phy1: phy@8e000 {
|
|
||||||
+ qmp_pcie_phy1: phy@8e000 {
|
|
||||||
compatible = "qcom,ipq8074-qmp-pcie-phy";
|
|
||||||
- reg = <0x0008e000 0x1000>;
|
|
||||||
- #phy-cells = <0>;
|
|
||||||
- clocks = <&gcc GCC_PCIE1_PIPE_CLK>;
|
|
||||||
- clock-names = "pipe_clk";
|
|
||||||
- clock-output-names = "pcie20_phy1_pipe_clk";
|
|
||||||
+ reg = <0x8e000 0x1c4>; /* Serdes PLL */
|
|
||||||
+ #address-cells = <1>;
|
|
||||||
+ #size-cells = <1>;
|
|
||||||
+ ranges;
|
|
||||||
+
|
|
||||||
+ clocks = <&gcc GCC_PCIE1_AUX_CLK>,
|
|
||||||
+ <&gcc GCC_PCIE1_AHB_CLK>;
|
|
||||||
+ clock-names = "aux", "cfg_ahb";
|
|
||||||
|
|
||||||
resets = <&gcc GCC_PCIE1_PHY_BCR>,
|
|
||||||
- <&gcc GCC_PCIE1PHY_PHY_BCR>;
|
|
||||||
+ <&gcc GCC_PCIE1PHY_PHY_BCR>;
|
|
||||||
reset-names = "phy",
|
|
||||||
"common";
|
|
||||||
+
|
|
||||||
status = "disabled";
|
|
||||||
+ pcie_phy1: lane@8e200 {
|
|
||||||
+ reg = <0x8e200 0x130>, /* Serdes Tx */
|
|
||||||
+ <0x8e400 0x200>, /* Serdes Rx */
|
|
||||||
+ <0x8e800 0x1f8>; /* PCS */
|
|
||||||
+ #phy-cells = <0>;
|
|
||||||
+
|
|
||||||
+ clocks = <&gcc GCC_PCIE1_PIPE_CLK>;
|
|
||||||
+ clock-names = "pipe0";
|
|
||||||
+ clock-output-names = "gcc_pcie1_pipe_clk_src";
|
|
||||||
+ clock-output-rate = <125000000>;
|
|
||||||
+ #clock-cells = <0>;
|
|
||||||
+ };
|
|
||||||
};
|
|
||||||
|
|
||||||
mdio: mdio@90000 {
|
|
||||||
@@ -687,9 +719,9 @@
|
|
||||||
phy-names = "pciephy";
|
|
||||||
|
|
||||||
ranges = <0x81000000 0 0x10200000 0x10200000
|
|
||||||
- 0 0x100000 /* downstream I/O */
|
|
||||||
- 0x82000000 0 0x10300000 0x10300000
|
|
||||||
- 0 0xd00000>; /* non-prefetchable memory */
|
|
||||||
+ 0 0x100000>, /* downstream I/O */
|
|
||||||
+ <0x82000000 0 0x10220000 0x10220000
|
|
||||||
+ 0 0xfde0000>; /* non-prefetchable memory */
|
|
||||||
|
|
||||||
interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
interrupt-names = "msi";
|
|
||||||
@@ -732,12 +764,13 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
pcie0: pci@20000000 {
|
|
||||||
- compatible = "qcom,pcie-ipq8074";
|
|
||||||
- reg = <0x20000000 0xf1d>,
|
|
||||||
- <0x20000f20 0xa8>,
|
|
||||||
- <0x00080000 0x2000>,
|
|
||||||
- <0x20100000 0x1000>;
|
|
||||||
- reg-names = "dbi", "elbi", "parf", "config";
|
|
||||||
+ compatible = "qcom,pcie-ipq8074-gen3";
|
|
||||||
+ reg = <0x20000000 0xf1d>,
|
|
||||||
+ <0x20000f20 0xa8>,
|
|
||||||
+ <0x20001000 0x1000>,
|
|
||||||
+ <0x00080000 0x4000>,
|
|
||||||
+ <0x20100000 0x1000>;
|
|
||||||
+ reg-names = "dbi", "elbi", "atu", "parf", "config";
|
|
||||||
device_type = "pci";
|
|
||||||
linux,pci-domain = <0>;
|
|
||||||
bus-range = <0x00 0xff>;
|
|
||||||
@@ -749,9 +782,9 @@
|
|
||||||
phy-names = "pciephy";
|
|
||||||
|
|
||||||
ranges = <0x81000000 0 0x20200000 0x20200000
|
|
||||||
- 0 0x100000 /* downstream I/O */
|
|
||||||
- 0x82000000 0 0x20300000 0x20300000
|
|
||||||
- 0 0xd00000>; /* non-prefetchable memory */
|
|
||||||
+ 0 0x100000>, /* downstream I/O */
|
|
||||||
+ <0x82000000 0 0x20220000 0x20220000
|
|
||||||
+ 0 0xfde0000>; /* non-prefetchable memory */
|
|
||||||
|
|
||||||
interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
interrupt-names = "msi";
|
|
||||||
@@ -770,27 +803,33 @@
|
|
||||||
<&gcc GCC_PCIE0_AXI_M_CLK>,
|
|
||||||
<&gcc GCC_PCIE0_AXI_S_CLK>,
|
|
||||||
<&gcc GCC_PCIE0_AHB_CLK>,
|
|
||||||
- <&gcc GCC_PCIE0_AUX_CLK>;
|
|
||||||
+ <&gcc GCC_PCIE0_AUX_CLK>,
|
|
||||||
+ <&gcc GCC_PCIE0_AXI_S_BRIDGE_CLK>,
|
|
||||||
+ <&gcc GCC_PCIE0_RCHNG_CLK>;
|
|
||||||
|
|
||||||
clock-names = "iface",
|
|
||||||
"axi_m",
|
|
||||||
"axi_s",
|
|
||||||
"ahb",
|
|
||||||
- "aux";
|
|
||||||
+ "aux",
|
|
||||||
+ "axi_bridge",
|
|
||||||
+ "rchng";
|
|
||||||
resets = <&gcc GCC_PCIE0_PIPE_ARES>,
|
|
||||||
<&gcc GCC_PCIE0_SLEEP_ARES>,
|
|
||||||
<&gcc GCC_PCIE0_CORE_STICKY_ARES>,
|
|
||||||
<&gcc GCC_PCIE0_AXI_MASTER_ARES>,
|
|
||||||
<&gcc GCC_PCIE0_AXI_SLAVE_ARES>,
|
|
||||||
<&gcc GCC_PCIE0_AHB_ARES>,
|
|
||||||
- <&gcc GCC_PCIE0_AXI_MASTER_STICKY_ARES>;
|
|
||||||
+ <&gcc GCC_PCIE0_AXI_MASTER_STICKY_ARES>,
|
|
||||||
+ <&gcc GCC_PCIE0_AXI_SLAVE_STICKY_ARES>;
|
|
||||||
reset-names = "pipe",
|
|
||||||
"sleep",
|
|
||||||
"sticky",
|
|
||||||
"axi_m",
|
|
||||||
"axi_s",
|
|
||||||
"ahb",
|
|
||||||
- "axi_m_sticky";
|
|
||||||
+ "axi_m_sticky",
|
|
||||||
+ "axi_s_sticky";
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
@ -12,7 +12,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
|
|
||||||
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
@@ -899,5 +899,155 @@
|
@@ -891,5 +891,155 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: Rajkumar Ayyasamy <arajkuma@codeaurora.org>
|
|||||||
|
|
||||||
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
@@ -1049,5 +1049,17 @@
|
@@ -1041,5 +1041,17 @@
|
||||||
resets = <&gcc GCC_EDMA_HW_RESET>;
|
resets = <&gcc GCC_EDMA_HW_RESET>;
|
||||||
reset-names = "edma_rst";
|
reset-names = "edma_rst";
|
||||||
};
|
};
|
||||||
|
@ -13,7 +13,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
|
|
||||||
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
@@ -390,6 +390,25 @@
|
@@ -385,6 +385,25 @@
|
||||||
#reset-cells = <0x1>;
|
#reset-cells = <0x1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ Change-Id: Ie5edb7b3d972e06f3eb2525e10597b49e9bae14d
|
|||||||
|
|
||||||
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
@@ -430,7 +430,6 @@
|
@@ -425,7 +425,6 @@
|
||||||
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
@ -39,7 +39,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
soc: soc {
|
soc: soc {
|
||||||
#address-cells = <0x1>;
|
#address-cells = <0x1>;
|
||||||
#size-cells = <0x1>;
|
#size-cells = <0x1>;
|
||||||
@@ -407,6 +417,42 @@
|
@@ -402,6 +412,42 @@
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <4>;
|
#interrupt-cells = <4>;
|
||||||
cell-index = <0>;
|
cell-index = <0>;
|
||||||
|
@ -57,7 +57,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
next-level-cache = <&L2_0>;
|
next-level-cache = <&L2_0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -909,8 +918,9 @@
|
@@ -901,8 +910,9 @@
|
||||||
|
|
||||||
apcs_glb: mailbox@b111000 {
|
apcs_glb: mailbox@b111000 {
|
||||||
compatible = "qcom,ipq8074-apcs-apps-global";
|
compatible = "qcom,ipq8074-apcs-apps-global";
|
||||||
|
@ -13,7 +13,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
|
|
||||||
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
@@ -974,6 +974,117 @@
|
@@ -966,6 +966,117 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
|
|
||||||
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
@@ -998,7 +998,7 @@
|
@@ -990,7 +990,7 @@
|
||||||
qcom,smem-state-names = "shutdown",
|
qcom,smem-state-names = "shutdown",
|
||||||
"stop";
|
"stop";
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
} else {
|
} else {
|
||||||
/* No mask register on older TSENS */
|
/* No mask register on older TSENS */
|
||||||
d->up_irq_mask = 0;
|
d->up_irq_mask = 0;
|
||||||
@@ -917,6 +923,9 @@ static const struct of_device_id tsens_t
|
@@ -923,6 +929,9 @@ static const struct of_device_id tsens_t
|
||||||
}, {
|
}, {
|
||||||
.compatible = "qcom,tsens-v2",
|
.compatible = "qcom,tsens-v2",
|
||||||
.data = &data_tsens_v2,
|
.data = &data_tsens_v2,
|
||||||
@ -90,7 +90,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
--- a/drivers/thermal/qcom/tsens.h
|
--- a/drivers/thermal/qcom/tsens.h
|
||||||
+++ b/drivers/thermal/qcom/tsens.h
|
+++ b/drivers/thermal/qcom/tsens.h
|
||||||
@@ -591,6 +591,6 @@ extern struct tsens_plat_data data_8916,
|
@@ -591,6 +591,6 @@ extern struct tsens_plat_data data_8916,
|
||||||
extern struct tsens_plat_data data_tsens_v1, data_8976;
|
extern struct tsens_plat_data data_tsens_v1, data_8976, data_8956;
|
||||||
|
|
||||||
/* TSENS v2 targets */
|
/* TSENS v2 targets */
|
||||||
-extern struct tsens_plat_data data_8996, data_tsens_v2;
|
-extern struct tsens_plat_data data_8996, data_tsens_v2;
|
||||||
|
@ -57,7 +57,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
};
|
};
|
||||||
|
|
||||||
L2_0: l2-cache {
|
L2_0: l2-cache {
|
||||||
@@ -365,6 +370,16 @@
|
@@ -360,6 +365,16 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
cryptobam: dma@704000 {
|
cryptobam: dma@704000 {
|
||||||
compatible = "qcom,bam-v1.7.0";
|
compatible = "qcom,bam-v1.7.0";
|
||||||
reg = <0x00704000 0x20000>;
|
reg = <0x00704000 0x20000>;
|
||||||
@@ -1284,4 +1299,90 @@
|
@@ -1276,4 +1291,90 @@
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -24,4 +24,4 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
+ status = "disabled";
|
+ status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
qmp_pcie_phy0: phy@84000 {
|
pcie_qmp0: phy@84000 {
|
||||||
|
@ -17,7 +17,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|||||||
|
|
||||||
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
|
||||||
@@ -634,6 +634,21 @@
|
@@ -629,6 +629,21 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -508,7 +508,7 @@
|
|||||||
#endif
|
#endif
|
||||||
--- a/net/core/neighbour.c
|
--- a/net/core/neighbour.c
|
||||||
+++ b/net/core/neighbour.c
|
+++ b/net/core/neighbour.c
|
||||||
@@ -1224,7 +1224,21 @@ static void neigh_update_hhs(struct neig
|
@@ -1236,7 +1236,21 @@ static void neigh_update_hhs(struct neig
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -530,7 +530,7 @@
|
|||||||
|
|
||||||
/* Generic update routine.
|
/* Generic update routine.
|
||||||
-- lladdr is new lladdr or NULL, if it is not supplied.
|
-- lladdr is new lladdr or NULL, if it is not supplied.
|
||||||
@@ -1255,6 +1269,7 @@ static int __neigh_update(struct neighbo
|
@@ -1267,6 +1281,7 @@ static int __neigh_update(struct neighbo
|
||||||
int notify = 0;
|
int notify = 0;
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
int update_isrouter = 0;
|
int update_isrouter = 0;
|
||||||
@ -538,7 +538,7 @@
|
|||||||
|
|
||||||
trace_neigh_update(neigh, lladdr, new, flags, nlmsg_pid);
|
trace_neigh_update(neigh, lladdr, new, flags, nlmsg_pid);
|
||||||
|
|
||||||
@@ -1269,6 +1284,8 @@ static int __neigh_update(struct neighbo
|
@@ -1281,6 +1296,8 @@ static int __neigh_update(struct neighbo
|
||||||
new = old;
|
new = old;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
@ -547,7 +547,7 @@
|
|||||||
if (!(flags & NEIGH_UPDATE_F_ADMIN) &&
|
if (!(flags & NEIGH_UPDATE_F_ADMIN) &&
|
||||||
(old & (NUD_NOARP | NUD_PERMANENT)))
|
(old & (NUD_NOARP | NUD_PERMANENT)))
|
||||||
goto out;
|
goto out;
|
||||||
@@ -1306,6 +1323,11 @@ static int __neigh_update(struct neighbo
|
@@ -1318,6 +1335,11 @@ static int __neigh_update(struct neighbo
|
||||||
- compare new & old
|
- compare new & old
|
||||||
- if they are different, check override flag
|
- if they are different, check override flag
|
||||||
*/
|
*/
|
||||||
@ -559,7 +559,7 @@
|
|||||||
if ((old & NUD_VALID) &&
|
if ((old & NUD_VALID) &&
|
||||||
!memcmp(lladdr, neigh->ha, dev->addr_len))
|
!memcmp(lladdr, neigh->ha, dev->addr_len))
|
||||||
lladdr = neigh->ha;
|
lladdr = neigh->ha;
|
||||||
@@ -1428,8 +1450,11 @@ out:
|
@@ -1440,8 +1462,11 @@ out:
|
||||||
if (((new ^ old) & NUD_PERMANENT) || ext_learn_change)
|
if (((new ^ old) & NUD_PERMANENT) || ext_learn_change)
|
||||||
neigh_update_gc_list(neigh);
|
neigh_update_gc_list(neigh);
|
||||||
|
|
||||||
@ -718,7 +718,7 @@
|
|||||||
out:
|
out:
|
||||||
fib6_info_release(rt);
|
fib6_info_release(rt);
|
||||||
return err;
|
return err;
|
||||||
@@ -6187,6 +6197,20 @@ static int ip6_route_dev_notify(struct n
|
@@ -6188,6 +6198,20 @@ static int ip6_route_dev_notify(struct n
|
||||||
return NOTIFY_OK;
|
return NOTIFY_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5481,7 +5481,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
|
||||||
@@ -1420,6 +1420,8 @@ void pci_walk_bus(struct pci_bus *top, i
|
@@ -1421,6 +1421,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);
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
default "y"
|
default "y"
|
||||||
--- a/arch/mips/include/asm/vpe.h
|
--- a/arch/mips/include/asm/vpe.h
|
||||||
+++ b/arch/mips/include/asm/vpe.h
|
+++ b/arch/mips/include/asm/vpe.h
|
||||||
@@ -127,4 +127,13 @@ void cleanup_tc(struct tc *tc);
|
@@ -126,4 +126,13 @@ void cleanup_tc(struct tc *tc);
|
||||||
|
|
||||||
int __init vpe_module_init(void);
|
int __init vpe_module_init(void);
|
||||||
void __exit vpe_module_exit(void);
|
void __exit vpe_module_exit(void);
|
||||||
@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
/* check we are the Master VPE */
|
/* check we are the Master VPE */
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
@@ -416,6 +417,8 @@ int __init vpe_module_init(void)
|
@@ -415,6 +416,8 @@ int __init vpe_module_init(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
v->ntcs = hw_tcs - aprp_cpu_index();
|
v->ntcs = hw_tcs - aprp_cpu_index();
|
||||||
@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
/* add the tc to the list of this vpe's tc's. */
|
/* add the tc to the list of this vpe's tc's. */
|
||||||
list_add(&t->tc, &v->tc);
|
list_add(&t->tc, &v->tc);
|
||||||
@@ -519,3 +522,47 @@ void __exit vpe_module_exit(void)
|
@@ -518,3 +521,47 @@ void __exit vpe_module_exit(void)
|
||||||
release_vpe(v);
|
release_vpe(v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -142,7 +142,7 @@
|
|||||||
{
|
{
|
||||||
--- a/arch/mips/lantiq/prom.c
|
--- a/arch/mips/lantiq/prom.c
|
||||||
+++ b/arch/mips/lantiq/prom.c
|
+++ b/arch/mips/lantiq/prom.c
|
||||||
@@ -34,10 +34,14 @@ unsigned long physical_memsize = 0L;
|
@@ -28,10 +28,14 @@ EXPORT_SYMBOL_GPL(ebu_lock);
|
||||||
*/
|
*/
|
||||||
static struct ltq_soc_info soc_info;
|
static struct ltq_soc_info soc_info;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/arch/mips/kernel/vpe-mt.c
|
--- a/arch/mips/kernel/vpe-mt.c
|
||||||
+++ b/arch/mips/kernel/vpe-mt.c
|
+++ b/arch/mips/kernel/vpe-mt.c
|
||||||
@@ -132,7 +132,10 @@ int vpe_run(struct vpe *v)
|
@@ -131,7 +131,10 @@ int vpe_run(struct vpe *v)
|
||||||
* kernels need to turn it on, even if that wasn't the pre-dvpe() state.
|
* kernels need to turn it on, even if that wasn't the pre-dvpe() state.
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
default "y"
|
default "y"
|
||||||
--- a/arch/mips/include/asm/vpe.h
|
--- a/arch/mips/include/asm/vpe.h
|
||||||
+++ b/arch/mips/include/asm/vpe.h
|
+++ b/arch/mips/include/asm/vpe.h
|
||||||
@@ -127,4 +127,13 @@ void cleanup_tc(struct tc *tc);
|
@@ -126,4 +126,13 @@ void cleanup_tc(struct tc *tc);
|
||||||
|
|
||||||
int __init vpe_module_init(void);
|
int __init vpe_module_init(void);
|
||||||
void __exit vpe_module_exit(void);
|
void __exit vpe_module_exit(void);
|
||||||
@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
/* check we are the Master VPE */
|
/* check we are the Master VPE */
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
@@ -416,6 +417,8 @@ int __init vpe_module_init(void)
|
@@ -415,6 +416,8 @@ int __init vpe_module_init(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
v->ntcs = hw_tcs - aprp_cpu_index();
|
v->ntcs = hw_tcs - aprp_cpu_index();
|
||||||
@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
/* add the tc to the list of this vpe's tc's. */
|
/* add the tc to the list of this vpe's tc's. */
|
||||||
list_add(&t->tc, &v->tc);
|
list_add(&t->tc, &v->tc);
|
||||||
@@ -519,3 +522,47 @@ void __exit vpe_module_exit(void)
|
@@ -518,3 +521,47 @@ void __exit vpe_module_exit(void)
|
||||||
release_vpe(v);
|
release_vpe(v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -142,7 +142,7 @@
|
|||||||
{
|
{
|
||||||
--- a/arch/mips/lantiq/prom.c
|
--- a/arch/mips/lantiq/prom.c
|
||||||
+++ b/arch/mips/lantiq/prom.c
|
+++ b/arch/mips/lantiq/prom.c
|
||||||
@@ -34,10 +34,14 @@ unsigned long physical_memsize = 0L;
|
@@ -28,10 +28,14 @@ EXPORT_SYMBOL_GPL(ebu_lock);
|
||||||
*/
|
*/
|
||||||
static struct ltq_soc_info soc_info;
|
static struct ltq_soc_info soc_info;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/arch/mips/kernel/vpe-mt.c
|
--- a/arch/mips/kernel/vpe-mt.c
|
||||||
+++ b/arch/mips/kernel/vpe-mt.c
|
+++ b/arch/mips/kernel/vpe-mt.c
|
||||||
@@ -132,7 +132,10 @@ int vpe_run(struct vpe *v)
|
@@ -131,7 +131,10 @@ int vpe_run(struct vpe *v)
|
||||||
* kernels need to turn it on, even if that wasn't the pre-dvpe() state.
|
* kernels need to turn it on, even if that wasn't the pre-dvpe() state.
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
|
@ -22,7 +22,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
|||||||
#include <linux/platform_data/x86/apple.h>
|
#include <linux/platform_data/x86/apple.h>
|
||||||
#include <linux/pm_runtime.h>
|
#include <linux/pm_runtime.h>
|
||||||
#include <linux/suspend.h>
|
#include <linux/suspend.h>
|
||||||
@@ -5796,3 +5797,34 @@ static void nvidia_ion_ahci_fixup(struct
|
@@ -5819,3 +5820,34 @@ static void nvidia_ion_ahci_fixup(struct
|
||||||
pdev->dev_flags |= PCI_DEV_FLAGS_HAS_MSI_MASKING;
|
pdev->dev_flags |= PCI_DEV_FLAGS_HAS_MSI_MASKING;
|
||||||
}
|
}
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fixup);
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fixup);
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: René van Dorst <opensource@vdorst.com>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -2978,6 +2978,7 @@ static const struct net_device_ops mtk_n
|
@@ -2979,6 +2979,7 @@ static const struct net_device_ops mtk_n
|
||||||
|
|
||||||
static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
|
static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
|
||||||
{
|
{
|
||||||
@ -22,7 +22,7 @@ Signed-off-by: René van Dorst <opensource@vdorst.com>
|
|||||||
const __be32 *_id = of_get_property(np, "reg", NULL);
|
const __be32 *_id = of_get_property(np, "reg", NULL);
|
||||||
phy_interface_t phy_mode;
|
phy_interface_t phy_mode;
|
||||||
struct phylink *phylink;
|
struct phylink *phylink;
|
||||||
@@ -3073,6 +3074,9 @@ static int mtk_add_mac(struct mtk_eth *e
|
@@ -3074,6 +3075,9 @@ static int mtk_add_mac(struct mtk_eth *e
|
||||||
else
|
else
|
||||||
eth->netdev[id]->max_mtu = MTK_MAX_RX_LENGTH_2K - MTK_RX_ETH_HLEN;
|
eth->netdev[id]->max_mtu = MTK_MAX_RX_LENGTH_2K - MTK_RX_ETH_HLEN;
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
|
|
||||||
--- a/drivers/media/usb/uvc/uvc_driver.c
|
--- a/drivers/media/usb/uvc/uvc_driver.c
|
||||||
+++ b/drivers/media/usb/uvc/uvc_driver.c
|
+++ b/drivers/media/usb/uvc/uvc_driver.c
|
||||||
@@ -3004,6 +3004,18 @@ static const struct usb_device_id uvc_id
|
@@ -3012,6 +3012,18 @@ static const struct usb_device_id uvc_id
|
||||||
.bInterfaceSubClass = 1,
|
.bInterfaceSubClass = 1,
|
||||||
.bInterfaceProtocol = 0,
|
.bInterfaceProtocol = 0,
|
||||||
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
|
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
|
||||||
@ -34,7 +34,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) },
|
{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) },
|
||||||
--- a/drivers/media/usb/uvc/uvc_status.c
|
--- a/drivers/media/usb/uvc/uvc_status.c
|
||||||
+++ b/drivers/media/usb/uvc/uvc_status.c
|
+++ b/drivers/media/usb/uvc/uvc_status.c
|
||||||
@@ -223,6 +223,7 @@ static void uvc_status_complete(struct u
|
@@ -225,6 +225,7 @@ static void uvc_status_complete(struct u
|
||||||
if (uvc_event_control(urb, status, len))
|
if (uvc_event_control(urb, status, len))
|
||||||
/* The URB will be resubmitted in work context. */
|
/* The URB will be resubmitted in work context. */
|
||||||
return;
|
return;
|
||||||
@ -42,7 +42,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -271,6 +272,7 @@ int uvc_status_init(struct uvc_device *d
|
@@ -273,6 +274,7 @@ int uvc_status_init(struct uvc_device *d
|
||||||
}
|
}
|
||||||
|
|
||||||
pipe = usb_rcvintpipe(dev->udev, ep->desc.bEndpointAddress);
|
pipe = usb_rcvintpipe(dev->udev, ep->desc.bEndpointAddress);
|
||||||
@ -214,7 +214,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
/* Mark the buffer as done if the EOF marker is set. */
|
/* Mark the buffer as done if the EOF marker is set. */
|
||||||
if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) {
|
if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) {
|
||||||
uvc_trace(UVC_TRACE_FRAME, "Frame complete (EOF found).\n");
|
uvc_trace(UVC_TRACE_FRAME, "Frame complete (EOF found).\n");
|
||||||
@@ -1747,6 +1892,8 @@ static int uvc_init_video_isoc(struct uv
|
@@ -1749,6 +1894,8 @@ static int uvc_init_video_isoc(struct uv
|
||||||
if (npackets == 0)
|
if (npackets == 0)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
@ -225,10 +225,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
for_each_uvc_urb(uvc_urb, stream) {
|
for_each_uvc_urb(uvc_urb, stream) {
|
||||||
--- a/drivers/media/usb/uvc/uvcvideo.h
|
--- a/drivers/media/usb/uvc/uvcvideo.h
|
||||||
+++ b/drivers/media/usb/uvc/uvcvideo.h
|
+++ b/drivers/media/usb/uvc/uvcvideo.h
|
||||||
@@ -203,7 +203,9 @@
|
@@ -204,7 +204,9 @@
|
||||||
#define UVC_QUIRK_RESTORE_CTRLS_ON_INIT 0x00000400
|
|
||||||
#define UVC_QUIRK_FORCE_Y8 0x00000800
|
#define UVC_QUIRK_FORCE_Y8 0x00000800
|
||||||
#define UVC_QUIRK_FORCE_BPP 0x00001000
|
#define UVC_QUIRK_FORCE_BPP 0x00001000
|
||||||
|
#define UVC_QUIRK_WAKE_AUTOSUSPEND 0x00002000
|
||||||
-
|
-
|
||||||
+#define UVC_QUIRK_MOTION 0x00001000
|
+#define UVC_QUIRK_MOTION 0x00001000
|
||||||
+#define UVC_QUIRK_SINGLE_ISO 0x00002000
|
+#define UVC_QUIRK_SINGLE_ISO 0x00002000
|
||||||
@ -236,7 +236,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
/* Format flags */
|
/* Format flags */
|
||||||
#define UVC_FMT_FLAG_COMPRESSED 0x00000001
|
#define UVC_FMT_FLAG_COMPRESSED 0x00000001
|
||||||
#define UVC_FMT_FLAG_STREAM 0x00000002
|
#define UVC_FMT_FLAG_STREAM 0x00000002
|
||||||
@@ -672,6 +674,7 @@ struct uvc_device {
|
@@ -674,6 +676,7 @@ struct uvc_device {
|
||||||
u8 *status;
|
u8 *status;
|
||||||
struct input_dev *input;
|
struct input_dev *input;
|
||||||
char input_phys[64];
|
char input_phys[64];
|
||||||
|
@ -16,7 +16,7 @@ Acked-by: John Crispin <blogic@openwrt.org>
|
|||||||
|
|
||||||
--- a/drivers/spi/Kconfig
|
--- a/drivers/spi/Kconfig
|
||||||
+++ b/drivers/spi/Kconfig
|
+++ b/drivers/spi/Kconfig
|
||||||
@@ -689,6 +689,12 @@ config SPI_QCOM_GENI
|
@@ -688,6 +688,12 @@ config SPI_QCOM_GENI
|
||||||
This driver can also be built as a module. If so, the module
|
This driver can also be built as a module. If so, the module
|
||||||
will be called spi-geni-qcom.
|
will be called spi-geni-qcom.
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
|
|
||||||
--- a/drivers/media/usb/uvc/uvc_driver.c
|
--- a/drivers/media/usb/uvc/uvc_driver.c
|
||||||
+++ b/drivers/media/usb/uvc/uvc_driver.c
|
+++ b/drivers/media/usb/uvc/uvc_driver.c
|
||||||
@@ -2911,6 +2911,18 @@ static const struct usb_device_id uvc_id
|
@@ -2919,6 +2919,18 @@ static const struct usb_device_id uvc_id
|
||||||
.bInterfaceSubClass = 1,
|
.bInterfaceSubClass = 1,
|
||||||
.bInterfaceProtocol = 0,
|
.bInterfaceProtocol = 0,
|
||||||
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
|
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
|
||||||
@ -34,7 +34,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) },
|
{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) },
|
||||||
--- a/drivers/media/usb/uvc/uvc_status.c
|
--- a/drivers/media/usb/uvc/uvc_status.c
|
||||||
+++ b/drivers/media/usb/uvc/uvc_status.c
|
+++ b/drivers/media/usb/uvc/uvc_status.c
|
||||||
@@ -223,6 +223,7 @@ static void uvc_status_complete(struct u
|
@@ -225,6 +225,7 @@ static void uvc_status_complete(struct u
|
||||||
if (uvc_event_control(urb, status, len))
|
if (uvc_event_control(urb, status, len))
|
||||||
/* The URB will be resubmitted in work context. */
|
/* The URB will be resubmitted in work context. */
|
||||||
return;
|
return;
|
||||||
@ -42,7 +42,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -271,6 +272,7 @@ int uvc_status_init(struct uvc_device *d
|
@@ -273,6 +274,7 @@ int uvc_status_init(struct uvc_device *d
|
||||||
}
|
}
|
||||||
|
|
||||||
pipe = usb_rcvintpipe(dev->udev, ep->desc.bEndpointAddress);
|
pipe = usb_rcvintpipe(dev->udev, ep->desc.bEndpointAddress);
|
||||||
@ -214,7 +214,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
/* Mark the buffer as done if the EOF marker is set. */
|
/* Mark the buffer as done if the EOF marker is set. */
|
||||||
if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) {
|
if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) {
|
||||||
uvc_trace(UVC_TRACE_FRAME, "Frame complete (EOF found).\n");
|
uvc_trace(UVC_TRACE_FRAME, "Frame complete (EOF found).\n");
|
||||||
@@ -1747,6 +1892,8 @@ static int uvc_init_video_isoc(struct uv
|
@@ -1749,6 +1894,8 @@ static int uvc_init_video_isoc(struct uv
|
||||||
if (npackets == 0)
|
if (npackets == 0)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
@ -225,10 +225,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
for_each_uvc_urb(uvc_urb, stream) {
|
for_each_uvc_urb(uvc_urb, stream) {
|
||||||
--- a/drivers/media/usb/uvc/uvcvideo.h
|
--- a/drivers/media/usb/uvc/uvcvideo.h
|
||||||
+++ b/drivers/media/usb/uvc/uvcvideo.h
|
+++ b/drivers/media/usb/uvc/uvcvideo.h
|
||||||
@@ -199,7 +199,9 @@
|
@@ -200,7 +200,9 @@
|
||||||
#define UVC_QUIRK_RESTORE_CTRLS_ON_INIT 0x00000400
|
|
||||||
#define UVC_QUIRK_FORCE_Y8 0x00000800
|
#define UVC_QUIRK_FORCE_Y8 0x00000800
|
||||||
#define UVC_QUIRK_FORCE_BPP 0x00001000
|
#define UVC_QUIRK_FORCE_BPP 0x00001000
|
||||||
|
#define UVC_QUIRK_WAKE_AUTOSUSPEND 0x00002000
|
||||||
-
|
-
|
||||||
+#define UVC_QUIRK_MOTION 0x00001000
|
+#define UVC_QUIRK_MOTION 0x00001000
|
||||||
+#define UVC_QUIRK_SINGLE_ISO 0x00002000
|
+#define UVC_QUIRK_SINGLE_ISO 0x00002000
|
||||||
@ -236,7 +236,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
/* Format flags */
|
/* Format flags */
|
||||||
#define UVC_FMT_FLAG_COMPRESSED 0x00000001
|
#define UVC_FMT_FLAG_COMPRESSED 0x00000001
|
||||||
#define UVC_FMT_FLAG_STREAM 0x00000002
|
#define UVC_FMT_FLAG_STREAM 0x00000002
|
||||||
@@ -666,6 +668,7 @@ struct uvc_device {
|
@@ -668,6 +670,7 @@ struct uvc_device {
|
||||||
u8 *status;
|
u8 *status;
|
||||||
struct input_dev *input;
|
struct input_dev *input;
|
||||||
char input_phys[64];
|
char input_phys[64];
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/ethernet/intel/igc/igc_main.c
|
--- a/drivers/net/ethernet/intel/igc/igc_main.c
|
||||||
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
|
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
|
||||||
@@ -108,7 +108,7 @@
|
@@ -99,7 +99,7 @@ void igc_reset(struct igc_adapter *adapt
|
||||||
netdev_err(dev, "Error on hardware initialization\n");
|
netdev_err(dev, "Error on hardware initialization\n");
|
||||||
|
|
||||||
/* Re-establish EEE setting */
|
/* Re-establish EEE setting */
|
||||||
|
Loading…
Reference in New Issue
Block a user