-LINUX_VERSION-5.10 = .123
-LINUX_KERNEL_HASH-5.10.123 = 654ab0960b70013e7dad6b3782c25d62e13cbb8c053010daef667d5d74061e52
+LINUX_VERSION-5.10 = .124
+LINUX_KERNEL_HASH-5.10.124 = ec46b1743286b08208769932f2cde2faa93656e986640010d661992500f7e37b
#include "mtk_eth_soc.h"
-@@ -1285,13 +1286,12 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1296,13 +1297,12 @@ static int mtk_poll_rx(struct napi_struc
break;
/* find out which mac the packet come from. values start at 1 */
if (unlikely(mac < 0 || mac >= MTK_MAC_COUNT ||
!eth->netdev[mac]))
-@@ -2257,6 +2257,9 @@ static void mtk_gdm_config(struct mtk_et
+@@ -2274,6 +2274,9 @@ static void mtk_gdm_config(struct mtk_et
val |= config;
obj-$(CONFIG_NET_MEDIATEK_STAR_EMAC) += mtk_star_emac.o
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -2282,12 +2282,17 @@ static int mtk_open(struct net_device *d
+@@ -2299,12 +2299,17 @@ static int mtk_open(struct net_device *d
/* we run 2 netdevs on the same dma ring so we only bring it up once */
if (!refcount_read(ð->dma_refcnt)) {
napi_enable(ð->tx_napi);
napi_enable(ð->rx_napi);
-@@ -2354,6 +2359,9 @@ static int mtk_stop(struct net_device *d
+@@ -2371,6 +2376,9 @@ static int mtk_stop(struct net_device *d
mtk_dma_free(eth);
return 0;
}
-@@ -3082,6 +3090,13 @@ static int mtk_probe(struct platform_dev
+@@ -3099,6 +3107,13 @@ static int mtk_probe(struct platform_dev
goto err_free_dev;
}
for (i = 0; i < MTK_MAX_DEVS; i++) {
if (!eth->netdev[i])
continue;
-@@ -3156,6 +3171,7 @@ static const struct mtk_soc_data mt7621_
+@@ -3173,6 +3188,7 @@ static const struct mtk_soc_data mt7621_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7621_CLKS_BITMAP,
.required_pctl = false,
};
static const struct mtk_soc_data mt7622_data = {
-@@ -3164,6 +3180,7 @@ static const struct mtk_soc_data mt7622_
+@@ -3181,6 +3197,7 @@ static const struct mtk_soc_data mt7622_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7622_CLKS_BITMAP,
.required_pctl = false,
obj-$(CONFIG_NET_MEDIATEK_STAR_EMAC) += mtk_star_emac.o
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -2837,6 +2837,7 @@ static const struct net_device_ops mtk_n
+@@ -2854,6 +2854,7 @@ static const struct net_device_ops mtk_n
#ifdef CONFIG_NET_POLL_CONTROLLER
.ndo_poll_controller = mtk_poll_controller,
#endif
};
static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
-@@ -3095,6 +3096,10 @@ static int mtk_probe(struct platform_dev
+@@ -3112,6 +3113,10 @@ static int mtk_probe(struct platform_dev
eth->base + MTK_ETH_PPE_BASE, 2);
if (err)
goto err_free_dev;
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -1319,6 +1319,9 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1333,6 +1333,9 @@ static int mtk_poll_rx(struct napi_struc
goto release_desc;
}
/* receive data */
skb = build_skb(data, ring->frag_size);
if (unlikely(!skb)) {
-@@ -1328,8 +1331,6 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1342,8 +1345,6 @@ static int mtk_poll_rx(struct napi_struc
}
skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN);
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -1325,9 +1325,9 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1339,9 +1339,9 @@ static int mtk_poll_rx(struct napi_struc
/* receive data */
skb = build_skb(data, ring->frag_size);
if (unlikely(!skb)) {
}
skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN);
-@@ -1347,6 +1347,7 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1361,6 +1361,7 @@ static int mtk_poll_rx(struct napi_struc
skb_record_rx_queue(skb, 0);
napi_gro_receive(napi, skb);
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -879,7 +879,8 @@ static int txd_to_idx(struct mtk_tx_ring
+@@ -890,7 +890,8 @@ static int txd_to_idx(struct mtk_tx_ring
return ((void *)dma - (void *)ring->dma) / sizeof(*dma);
}
{
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
if (tx_buf->flags & MTK_TX_FLAGS_SINGLE0) {
-@@ -911,8 +912,12 @@ static void mtk_tx_unmap(struct mtk_eth
+@@ -922,8 +923,12 @@ static void mtk_tx_unmap(struct mtk_eth
tx_buf->flags = 0;
if (tx_buf->skb &&
tx_buf->skb = NULL;
}
-@@ -1090,7 +1095,7 @@ err_dma:
+@@ -1101,7 +1106,7 @@ err_dma:
tx_buf = mtk_desc_to_tx_buf(ring, itxd);
/* unmap dma */
itxd->txd3 = TX_DMA_LS0 | TX_DMA_OWNER_CPU;
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA))
-@@ -1409,7 +1414,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
+@@ -1423,7 +1428,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
done[mac]++;
budget--;
}
ring->last_free = desc;
atomic_inc(&ring->free_count);
-@@ -1446,7 +1451,7 @@ static int mtk_poll_tx_pdma(struct mtk_e
+@@ -1460,7 +1465,7 @@ static int mtk_poll_tx_pdma(struct mtk_e
budget--;
}
desc = &ring->dma[cpu];
ring->last_free = desc;
-@@ -1648,7 +1653,7 @@ static void mtk_tx_clean(struct mtk_eth
+@@ -1662,7 +1667,7 @@ static void mtk_tx_clean(struct mtk_eth
if (ring->buf) {
for (i = 0; i < MTK_DMA_SIZE; i++)
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -1152,17 +1152,6 @@ static void mtk_wake_queue(struct mtk_et
+@@ -1163,17 +1163,6 @@ static void mtk_wake_queue(struct mtk_et
}
}
static netdev_tx_t mtk_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
struct mtk_mac *mac = netdev_priv(dev);
-@@ -1183,7 +1172,7 @@ static netdev_tx_t mtk_start_xmit(struct
+@@ -1194,7 +1183,7 @@ static netdev_tx_t mtk_start_xmit(struct
tx_num = mtk_cal_txd_req(skb);
if (unlikely(atomic_read(&ring->free_count) <= tx_num)) {
netif_err(eth, tx_queued, dev,
"Tx Ring full when queue awake!\n");
spin_unlock(ð->page_lock);
-@@ -1209,7 +1198,7 @@ static netdev_tx_t mtk_start_xmit(struct
+@@ -1220,7 +1209,7 @@ static netdev_tx_t mtk_start_xmit(struct
goto drop;
if (unlikely(atomic_read(&ring->free_count) <= ring->thresh))
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -2217,7 +2217,7 @@ static int mtk_start_dma(struct mtk_eth
+@@ -2234,7 +2234,7 @@ static int mtk_start_dma(struct mtk_eth
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
mtk_w32(eth,
MTK_TX_WB_DDONE | MTK_TX_DMA_EN |
MediaTek SoC family.
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -1254,12 +1254,13 @@ static void mtk_update_rx_cpu_idx(struct
+@@ -1265,12 +1265,13 @@ static void mtk_update_rx_cpu_idx(struct
static int mtk_poll_rx(struct napi_struct *napi, int budget,
struct mtk_eth *eth)
{
while (done < budget) {
struct net_device *netdev;
-@@ -1333,6 +1334,7 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1347,6 +1348,7 @@ static int mtk_poll_rx(struct napi_struc
else
skb_checksum_none_assert(skb);
skb->protocol = eth_type_trans(skb, netdev);
if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX &&
(trxd.rxd2 & RX_DMA_VTAG))
-@@ -1365,6 +1367,12 @@ rx_done:
+@@ -1379,6 +1381,12 @@ rx_done:
mtk_update_rx_cpu_idx(eth);
}
return done;
}
-@@ -1457,6 +1465,7 @@ static int mtk_poll_tx_pdma(struct mtk_e
+@@ -1471,6 +1479,7 @@ static int mtk_poll_tx_pdma(struct mtk_e
static int mtk_poll_tx(struct mtk_eth *eth, int budget)
{
struct mtk_tx_ring *ring = ð->tx_ring;
unsigned int done[MTK_MAX_DEVS];
unsigned int bytes[MTK_MAX_DEVS];
int total = 0, i;
-@@ -1474,8 +1483,14 @@ static int mtk_poll_tx(struct mtk_eth *e
+@@ -1488,8 +1497,14 @@ static int mtk_poll_tx(struct mtk_eth *e
continue;
netdev_completed_queue(eth->netdev[i], done[i], bytes[i]);
total += done[i];
if (mtk_queue_stopped(eth) &&
(atomic_read(&ring->free_count) > ring->thresh))
mtk_wake_queue(eth);
-@@ -2153,6 +2168,7 @@ static irqreturn_t mtk_handle_irq_rx(int
+@@ -2170,6 +2185,7 @@ static irqreturn_t mtk_handle_irq_rx(int
{
struct mtk_eth *eth = _eth;
if (likely(napi_schedule_prep(ð->rx_napi))) {
__napi_schedule(ð->rx_napi);
mtk_rx_irq_disable(eth, MTK_RX_DONE_INT);
-@@ -2165,6 +2181,7 @@ static irqreturn_t mtk_handle_irq_tx(int
+@@ -2182,6 +2198,7 @@ static irqreturn_t mtk_handle_irq_tx(int
{
struct mtk_eth *eth = _eth;
if (likely(napi_schedule_prep(ð->tx_napi))) {
__napi_schedule(ð->tx_napi);
mtk_tx_irq_disable(eth, MTK_TX_DONE_INT);
-@@ -2349,6 +2366,9 @@ static int mtk_stop(struct net_device *d
+@@ -2366,6 +2383,9 @@ static int mtk_stop(struct net_device *d
napi_disable(ð->tx_napi);
napi_disable(ð->rx_napi);
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA))
mtk_stop_dma(eth, MTK_QDMA_GLO_CFG);
mtk_stop_dma(eth, MTK_PDMA_GLO_CFG);
-@@ -2401,6 +2421,64 @@ err_disable_clks:
+@@ -2418,6 +2438,64 @@ err_disable_clks:
return ret;
}
static int mtk_hw_init(struct mtk_eth *eth)
{
int i, val, ret;
-@@ -2422,9 +2500,6 @@ static int mtk_hw_init(struct mtk_eth *e
+@@ -2439,9 +2517,6 @@ static int mtk_hw_init(struct mtk_eth *e
goto err_disable_pm;
}
/* disable delay and normal interrupt */
mtk_tx_irq_disable(eth, ~0);
mtk_rx_irq_disable(eth, ~0);
-@@ -2463,11 +2538,11 @@ static int mtk_hw_init(struct mtk_eth *e
+@@ -2480,11 +2555,11 @@ static int mtk_hw_init(struct mtk_eth *e
/* Enable RX VLan Offloading */
mtk_w32(eth, 1, MTK_CDMP_EG_CTRL);
mtk_tx_irq_disable(eth, ~0);
mtk_rx_irq_disable(eth, ~0);
-@@ -2972,6 +3047,13 @@ static int mtk_probe(struct platform_dev
+@@ -2989,6 +3064,13 @@ static int mtk_probe(struct platform_dev
spin_lock_init(ð->page_lock);
spin_lock_init(ð->tx_irq_lock);
spin_lock_init(ð->rx_irq_lock);
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -1385,7 +1385,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
+@@ -1399,7 +1399,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
struct mtk_tx_buf *tx_buf;
u32 cpu, dma;
dma = mtk_r32(eth, MTK_QTX_DRX_PTR);
desc = mtk_qdma_phys_to_virt(ring, cpu);
-@@ -1419,6 +1419,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
+@@ -1433,6 +1433,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
cpu = next_cpu;
}
mtk_w32(eth, cpu, MTK_QTX_CRX_PTR);
return budget;
-@@ -1619,6 +1620,7 @@ static int mtk_tx_alloc(struct mtk_eth *
+@@ -1633,6 +1634,7 @@ static int mtk_tx_alloc(struct mtk_eth *
atomic_set(&ring->free_count, MTK_DMA_SIZE - 2);
ring->next_free = &ring->dma[0];
ring->last_free = &ring->dma[MTK_DMA_SIZE - 1];
ring->thresh = MAX_SKB_FRAGS;
/* make sure that all changes to the dma ring are flushed before we
-@@ -1632,9 +1634,7 @@ static int mtk_tx_alloc(struct mtk_eth *
+@@ -1646,9 +1648,7 @@ static int mtk_tx_alloc(struct mtk_eth *
mtk_w32(eth,
ring->phys + ((MTK_DMA_SIZE - 1) * sz),
MTK_QTX_CRX_PTR);
+ return true;
}
- /* the qdma core needs scratch memory to be setup */
-@@ -1276,8 +1281,7 @@ static int mtk_poll_rx(struct napi_struc
+ static void *mtk_max_lro_buf_alloc(gfp_t gfp_mask)
+@@ -1287,8 +1292,7 @@ static int mtk_poll_rx(struct napi_struc
rxd = &ring->dma[idx];
data = ring->data[idx];
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -1540,8 +1540,8 @@ static int mtk_napi_tx(struct napi_struc
+@@ -1554,8 +1554,8 @@ static int mtk_napi_tx(struct napi_struc
if (status & MTK_TX_DONE_INT)
return budget;
return tx_done;
}
-@@ -1574,8 +1574,9 @@ poll_again:
+@@ -1588,8 +1588,9 @@ poll_again:
remain_budget -= rx_done;
goto poll_again;
}
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -1517,7 +1517,6 @@ static void mtk_handle_status_irq(struct
+@@ -1531,7 +1531,6 @@ static void mtk_handle_status_irq(struct
static int mtk_napi_tx(struct napi_struct *napi, int budget)
{
struct mtk_eth *eth = container_of(napi, struct mtk_eth, tx_napi);
int tx_done = 0;
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA))
-@@ -1526,21 +1525,19 @@ static int mtk_napi_tx(struct napi_struc
+@@ -1540,21 +1539,19 @@ static int mtk_napi_tx(struct napi_struc
tx_done = mtk_poll_tx(eth, budget);
if (unlikely(netif_msg_intr(eth))) {
mtk_tx_irq_enable(eth, MTK_TX_DONE_INT);
return tx_done;
-@@ -1549,36 +1546,33 @@ static int mtk_napi_tx(struct napi_struc
+@@ -1563,36 +1560,33 @@ static int mtk_napi_tx(struct napi_struc
static int mtk_napi_rx(struct napi_struct *napi, int budget)
{
struct mtk_eth *eth = container_of(napi, struct mtk_eth, rx_napi);
#include <net/dsa.h>
#include "mtk_eth_soc.h"
-@@ -1271,6 +1272,7 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1282,6 +1283,7 @@ static int mtk_poll_rx(struct napi_struc
struct net_device *netdev;
unsigned int pktlen;
dma_addr_t dma_addr;
int mac;
ring = mtk_get_rx_ring(eth);
-@@ -1340,6 +1342,12 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1354,6 +1356,12 @@ static int mtk_poll_rx(struct napi_struc
skb->protocol = eth_type_trans(skb, netdev);
bytes += pktlen;
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -2057,25 +2057,22 @@ static int mtk_set_features(struct net_d
+@@ -2074,25 +2074,22 @@ static int mtk_set_features(struct net_d
/* 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)
{
return buf_size;
}
-@@ -2609,6 +2609,35 @@ static void mtk_uninit(struct net_device
+@@ -2626,6 +2626,35 @@ static void mtk_uninit(struct net_device
mtk_rx_irq_disable(eth, ~0);
}
static int mtk_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
{
struct mtk_mac *mac = netdev_priv(dev);
-@@ -2905,6 +2934,7 @@ static const struct net_device_ops mtk_n
+@@ -2922,6 +2951,7 @@ static const struct net_device_ops mtk_n
.ndo_set_mac_address = mtk_set_mac_address,
.ndo_validate_addr = eth_validate_addr,
.ndo_do_ioctl = mtk_do_ioctl,
.ndo_tx_timeout = mtk_tx_timeout,
.ndo_get_stats64 = mtk_get_stats64,
.ndo_fix_features = mtk_fix_features,
-@@ -3007,7 +3037,10 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -3024,7 +3054,10 @@ static int mtk_add_mac(struct mtk_eth *e
eth->netdev[id]->irq = eth->irq[0];
eth->netdev[id]->dev.of_node = np;
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -2583,14 +2583,11 @@ static int __init mtk_init(struct net_de
+@@ -2600,14 +2600,11 @@ static int __init mtk_init(struct net_de
{
struct mtk_mac *mac = netdev_priv(dev);
struct mtk_eth *eth = mac->hw;
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
-@@ -33,7 +33,7 @@ config CRYPTO_FIPS
+@@ -34,7 +34,7 @@ config CRYPTO_FIPS
this is.
config CRYPTO_ALGAPI
select CRYPTO_ALGAPI2
help
This option provides the API for cryptographic algorithms.
-@@ -42,7 +42,7 @@ config CRYPTO_ALGAPI2
+@@ -43,7 +43,7 @@ config CRYPTO_ALGAPI2
tristate
config CRYPTO_AEAD
select CRYPTO_AEAD2
select CRYPTO_ALGAPI
-@@ -53,7 +53,7 @@ config CRYPTO_AEAD2
+@@ -54,7 +54,7 @@ config CRYPTO_AEAD2
select CRYPTO_RNG2
config CRYPTO_SKCIPHER
select CRYPTO_SKCIPHER2
select CRYPTO_ALGAPI
-@@ -63,7 +63,7 @@ config CRYPTO_SKCIPHER2
+@@ -64,7 +64,7 @@ config CRYPTO_SKCIPHER2
select CRYPTO_RNG2
config CRYPTO_HASH
select CRYPTO_HASH2
select CRYPTO_ALGAPI
-@@ -72,7 +72,7 @@ config CRYPTO_HASH2
+@@ -73,7 +73,7 @@ config CRYPTO_HASH2
select CRYPTO_ALGAPI2
config CRYPTO_RNG
bool
--- a/lib/Kconfig
+++ b/lib/Kconfig
-@@ -420,16 +420,16 @@ config BCH_CONST_T
+@@ -423,16 +423,16 @@ config BCH_CONST_T
# Textsearch support is select'ed if needed
#
config TEXTSEARCH
that can be interpreted by the ASN.1 stream decoder and used to
--- a/lib/Kconfig
+++ b/lib/Kconfig
-@@ -591,7 +591,7 @@ config LIBFDT
+@@ -594,7 +594,7 @@ config LIBFDT
bool
config OID_REGISTRY
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
-@@ -120,13 +120,13 @@ config CRYPTO_MANAGER
+@@ -121,13 +121,13 @@ config CRYPTO_MANAGER
cbc(aes).
config CRYPTO_MANAGER2
#define QUECTEL_VENDOR_ID 0x2c7c
/* These Quectel products use Quectel's vendor ID */
-@@ -1129,6 +1131,11 @@ static const struct usb_device_id option
+@@ -1131,6 +1133,11 @@ static const struct usb_device_id option
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0, 0) },
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
.driver_info = RSVD(4) },
#define JFFS2_NODE_ACCURATE 0x2000
--- a/lib/Kconfig
+++ b/lib/Kconfig
-@@ -317,6 +317,12 @@ config ZSTD_DECOMPRESS
+@@ -320,6 +320,12 @@ config ZSTD_DECOMPRESS
source "lib/xz/Kconfig"
#include <linux/mfd/syscon.h>
#include <linux/regmap.h>
#include <linux/clk.h>
-@@ -821,7 +822,7 @@ static int mtk_init_fq_dma(struct mtk_et
+@@ -832,7 +833,7 @@ static int mtk_init_fq_dma(struct mtk_et
dma_addr_t dma_addr;
int i;
cnt * sizeof(struct mtk_tx_dma),
ð->phy_scratch_ring,
GFP_ATOMIC);
-@@ -833,10 +834,10 @@ static int mtk_init_fq_dma(struct mtk_et
+@@ -844,10 +845,10 @@ static int mtk_init_fq_dma(struct mtk_et
if (unlikely(!eth->scratch_head))
return -ENOMEM;
return -ENOMEM;
phy_ring_tail = eth->phy_scratch_ring +
-@@ -890,26 +891,26 @@ static void mtk_tx_unmap(struct mtk_eth
+@@ -901,26 +902,26 @@ static void mtk_tx_unmap(struct mtk_eth
{
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
if (tx_buf->flags & MTK_TX_FLAGS_SINGLE0) {
dma_unmap_addr(tx_buf, dma_addr1),
dma_unmap_len(tx_buf, dma_len1),
DMA_TO_DEVICE);
-@@ -987,9 +988,9 @@ static int mtk_tx_map(struct sk_buff *sk
+@@ -998,9 +999,9 @@ static int mtk_tx_map(struct sk_buff *sk
if (skb_vlan_tag_present(skb))
txd4 |= TX_DMA_INS_VLAN | skb_vlan_tag_get(skb);
return -ENOMEM;
WRITE_ONCE(itxd->txd1, mapped_addr);
-@@ -1028,10 +1029,10 @@ static int mtk_tx_map(struct sk_buff *sk
+@@ -1039,10 +1040,10 @@ static int mtk_tx_map(struct sk_buff *sk
frag_map_size = min(frag_size, MTK_TX_DMA_BUF_LEN);
goto err_dma;
if (i == nr_frags - 1 &&
-@@ -1309,18 +1310,18 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1323,18 +1324,18 @@ static int mtk_poll_rx(struct napi_struc
netdev->stats.rx_dropped++;
goto release_desc;
}
ring->buf_size, DMA_FROM_DEVICE);
/* receive data */
-@@ -1593,7 +1594,7 @@ static int mtk_tx_alloc(struct mtk_eth *
+@@ -1607,7 +1608,7 @@ static int mtk_tx_alloc(struct mtk_eth *
if (!ring->buf)
goto no_tx_mem;
&ring->phys, GFP_ATOMIC);
if (!ring->dma)
goto no_tx_mem;
-@@ -1611,7 +1612,7 @@ static int mtk_tx_alloc(struct mtk_eth *
+@@ -1625,7 +1626,7 @@ static int mtk_tx_alloc(struct mtk_eth *
* descriptors in ring->dma_pdma.
*/
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
&ring->phys_pdma,
GFP_ATOMIC);
if (!ring->dma_pdma)
-@@ -1670,7 +1671,7 @@ static void mtk_tx_clean(struct mtk_eth
+@@ -1684,7 +1685,7 @@ static void mtk_tx_clean(struct mtk_eth
}
if (ring->dma) {
MTK_DMA_SIZE * sizeof(*ring->dma),
ring->dma,
ring->phys);
-@@ -1678,7 +1679,7 @@ static void mtk_tx_clean(struct mtk_eth
+@@ -1692,7 +1693,7 @@ static void mtk_tx_clean(struct mtk_eth
}
if (ring->dma_pdma) {
MTK_DMA_SIZE * sizeof(*ring->dma_pdma),
ring->dma_pdma,
ring->phys_pdma);
-@@ -1723,18 +1724,18 @@ static int mtk_rx_alloc(struct mtk_eth *
+@@ -1740,18 +1741,18 @@ static int mtk_rx_alloc(struct mtk_eth *
return -ENOMEM;
}
return -ENOMEM;
ring->dma[i].rxd1 = (unsigned int)dma_addr;
-@@ -1770,7 +1771,7 @@ static void mtk_rx_clean(struct mtk_eth
+@@ -1787,7 +1788,7 @@ static void mtk_rx_clean(struct mtk_eth
continue;
if (!ring->dma[i].rxd1)
continue;
ring->dma[i].rxd1,
ring->buf_size,
DMA_FROM_DEVICE);
-@@ -1781,7 +1782,7 @@ static void mtk_rx_clean(struct mtk_eth
+@@ -1798,7 +1799,7 @@ static void mtk_rx_clean(struct mtk_eth
}
if (ring->dma) {
ring->dma_size * sizeof(*ring->dma),
ring->dma,
ring->phys);
-@@ -2137,7 +2138,7 @@ static void mtk_dma_free(struct mtk_eth
+@@ -2154,7 +2155,7 @@ static void mtk_dma_free(struct mtk_eth
if (eth->netdev[i])
netdev_reset_queue(eth->netdev[i]);
if (eth->scratch_ring) {
MTK_DMA_SIZE * sizeof(struct mtk_tx_dma),
eth->scratch_ring,
eth->phy_scratch_ring);
-@@ -2485,6 +2486,8 @@ static void mtk_dim_tx(struct work_struc
+@@ -2502,6 +2503,8 @@ static void mtk_dim_tx(struct work_struc
static int mtk_hw_init(struct mtk_eth *eth)
{
int i, val, ret;
if (test_and_set_bit(MTK_HW_INIT, ð->state))
-@@ -2497,6 +2500,10 @@ static int mtk_hw_init(struct mtk_eth *e
+@@ -2514,6 +2517,10 @@ static int mtk_hw_init(struct mtk_eth *e
if (ret)
goto err_disable_pm;
if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628)) {
ret = device_reset(eth->dev);
if (ret) {
-@@ -3046,6 +3053,35 @@ free_netdev:
+@@ -3063,6 +3070,35 @@ free_netdev:
return err;
}
static int mtk_probe(struct platform_device *pdev)
{
struct device_node *mac_np;
-@@ -3059,6 +3095,7 @@ static int mtk_probe(struct platform_dev
+@@ -3076,6 +3112,7 @@ static int mtk_probe(struct platform_dev
eth->soc = of_device_get_match_data(&pdev->dev);
eth->dev = &pdev->dev;
eth->base = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(eth->base))
return PTR_ERR(eth->base);
-@@ -3107,6 +3144,16 @@ static int mtk_probe(struct platform_dev
+@@ -3124,6 +3161,16 @@ static int mtk_probe(struct platform_dev
}
}
static int mtk_msg_level = -1;
module_param_named(msg_level, mtk_msg_level, int, 0);
-@@ -3176,6 +3177,22 @@ static int mtk_probe(struct platform_dev
+@@ -3193,6 +3194,22 @@ static int mtk_probe(struct platform_dev
}
}
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -2308,7 +2308,7 @@ static int mtk_open(struct net_device *d
+@@ -2325,7 +2325,7 @@ static int mtk_open(struct net_device *d
if (err)
return err;
gdm_config = MTK_GDMA_TO_PPE;
mtk_gdm_config(eth, gdm_config);
-@@ -2382,7 +2382,7 @@ static int mtk_stop(struct net_device *d
+@@ -2399,7 +2399,7 @@ static int mtk_stop(struct net_device *d
mtk_dma_free(eth);
if (eth->soc->offload_version)
return 0;
}
-@@ -3268,10 +3268,11 @@ static int mtk_probe(struct platform_dev
+@@ -3285,10 +3285,11 @@ static int mtk_probe(struct platform_dev
}
if (eth->soc->offload_version) {
#include <net/dsa.h>
#include "mtk_eth_soc.h"
-@@ -1274,7 +1275,7 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1285,7 +1286,7 @@ static int mtk_poll_rx(struct napi_struc
struct net_device *netdev;
unsigned int pktlen;
dma_addr_t dma_addr;
int mac;
ring = mtk_get_rx_ring(eth);
-@@ -1350,6 +1351,11 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1364,6 +1365,11 @@ static int mtk_poll_rx(struct napi_struc
skb_set_hash(skb, hash, PKT_HASH_TYPE_L4);
}
if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX &&
(trxd.rxd2 & RX_DMA_VTAG))
__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
-@@ -3268,7 +3274,7 @@ static int mtk_probe(struct platform_dev
+@@ -3285,7 +3291,7 @@ static int mtk_probe(struct platform_dev
}
if (eth->soc->offload_version) {
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -2958,6 +2958,7 @@ static const struct net_device_ops mtk_n
+@@ -2975,6 +2975,7 @@ static const struct net_device_ops mtk_n
static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
{
const __be32 *_id = of_get_property(np, "reg", NULL);
phy_interface_t phy_mode;
struct phylink *phylink;
-@@ -3053,6 +3054,9 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -3070,6 +3071,9 @@ static int mtk_add_mac(struct mtk_eth *e
else
eth->netdev[id]->max_mtu = MTK_MAX_RX_LENGTH_2K - MTK_RX_ETH_HLEN;