-LINUX_VERSION-5.15 = .120
-LINUX_KERNEL_HASH-5.15.120 = 6499089eae6b271063cb3e873ab7f4ba0543cfb21dcc9c54d9bcf5357db683f6
+LINUX_VERSION-5.15 = .123
+LINUX_KERNEL_HASH-5.15.123 = 2de69544a12e6a059163c58fc901c13bcf22e8cac39c66b56f8fbb633399bf93
EXPORT_SYMBOL(xfrm_parse_spi);
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
-@@ -4152,14 +4152,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -4158,14 +4158,16 @@ static bool tcp_parse_aligned_timestamp(
{
const __be32 *ptr = (const __be32 *)(th + 1);
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
-@@ -4267,7 +4267,8 @@ static int tg3_power_down_prepare(struct
+@@ -4268,7 +4268,8 @@ static int tg3_power_down_prepare(struct
static void tg3_power_down(struct tg3 *tp)
{
pci_wake_from_d3(tp->pdev, tg3_flag(tp, WOL_ENABLE));
@@ -720,6 +720,8 @@ static int bcm4908_enet_probe(struct pla
SET_NETDEV_DEV(netdev, &pdev->dev);
- err = of_get_mac_address(dev->of_node, netdev->dev_addr);
+ err = of_get_ethdev_address(dev->of_node, netdev);
+ if (err == -EPROBE_DEFER)
+ goto err_dma_free;
if (err)
};
};
-@@ -558,24 +390,4 @@
+@@ -557,24 +389,4 @@
};
};
};
+++ /dev/null
-From d3c8e2c5757153bbfad70019ec1decbca86f3def Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Wed, 3 May 2023 14:28:30 +0200
-Subject: [PATCH] ARM: dts: BCM5301X: Drop "clock-names" from the SPI node
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-There is no such property in the SPI controller binding documentation.
-Also Linux driver doesn't look for it.
-
-This fixes:
-arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dtb: spi@18029200: Unevaluated properties are not allowed ('clock-names' was unexpected)
- From schema: Documentation/devicetree/bindings/spi/brcm,spi-bcm-qspi.yaml
-
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-Link: https://lore.kernel.org/r/20230503122830.3200-1-zajec5@gmail.com
-Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
----
- arch/arm/boot/dts/bcm5301x.dtsi | 1 -
- 1 file changed, 1 deletion(-)
-
---- a/arch/arm/boot/dts/bcm5301x.dtsi
-+++ b/arch/arm/boot/dts/bcm5301x.dtsi
-@@ -335,7 +335,6 @@
- "spi_lr_session_done",
- "spi_lr_overread";
- clocks = <&iprocmed>;
-- clock-names = "iprocmed";
- num-cs = <2>;
- #address-cells = <1>;
- #size-cells = <0>;
+++ /dev/null
-From fd274b733bfdde3ca72f0fa2a37f032f3a8c402c Mon Sep 17 00:00:00 2001
-From: Christian Lamparter <chunkeey@gmail.com>
-Date: Thu, 8 Jun 2023 17:36:29 +0200
-Subject: [PATCH] ARM: dts: BCM5301X: fix duplex-full => full-duplex
-
-this typo was found by the dtbs_check
-| ports:port@5:fixed-link: 'oneOf' conditional failed,
-| {'speed': [[1000]], 'duplex-full': True} is not of type 'array'
-| 'duplex-full' does not match any of the regexes: 'pinctrl-[0-]..."
-
-this should have been full-duplex;
-
-Fixes: 935327a73553 ("ARM: dts: BCM5301X: Add DT for Meraki MR26")
-Fixes: ec88a9c344d9 ("ARM: BCM5301X: Add DT for Meraki MR32")
-Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
-Link: https://lore.kernel.org/r/50522f45566951a9eabd22820647924cc6b4a264.1686238550.git.chunkeey@gmail.com
-Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
----
- arch/arm/boot/dts/bcm53015-meraki-mr26.dts | 2 +-
- arch/arm/boot/dts/bcm53016-meraki-mr32.dts | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
---- a/arch/arm/boot/dts/bcm53015-meraki-mr26.dts
-+++ b/arch/arm/boot/dts/bcm53015-meraki-mr26.dts
-@@ -121,7 +121,7 @@
-
- fixed-link {
- speed = <1000>;
-- duplex-full;
-+ full-duplex;
- };
- };
- };
---- a/arch/arm/boot/dts/bcm53016-meraki-mr32.dts
-+++ b/arch/arm/boot/dts/bcm53016-meraki-mr32.dts
-@@ -182,7 +182,7 @@
-
- fixed-link {
- speed = <1000>;
-- duplex-full;
-+ full-duplex;
- };
- };
- };
/*
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1906,6 +1906,7 @@ struct xhci_hcd {
- #define XHCI_EP_CTX_BROKEN_DCS BIT_ULL(42)
- #define XHCI_SUSPEND_RESUME_CLKS BIT_ULL(43)
+@@ -1908,6 +1908,7 @@ struct xhci_hcd {
#define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
-+#define XHCI_FAKE_DOORBELL BIT_ULL(45)
+ #define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
+ #define XHCI_ZHAOXIN_HOST BIT_ULL(46)
++#define XHCI_FAKE_DOORBELL BIT_ULL(47)
unsigned int num_active_eps;
unsigned int limit_active_eps;
map->format.format_write(map, reg, val);
trace_regmap_hw_write_start(map, reg, 1);
-@@ -2348,6 +2351,7 @@ static int _regmap_raw_multi_reg_write(s
+@@ -2346,6 +2349,7 @@ static int _regmap_raw_multi_reg_write(s
unsigned int reg = regs[i].reg;
unsigned int val = regs[i].def;
trace_regmap_hw_write_start(map, reg, 1);
map->format.format_reg(u8, reg, map->reg_shift);
u8 += reg_bytes + pad_bytes;
map->format.format_val(u8, val, 0);
-@@ -2675,6 +2679,7 @@ static int _regmap_raw_read(struct regma
+@@ -2673,6 +2677,7 @@ static int _regmap_raw_read(struct regma
return ret;
}
reg >>= map->format.reg_downshift;
map->format.format_write(map, reg, val);
-@@ -2351,6 +2355,7 @@ static int _regmap_raw_multi_reg_write(s
+@@ -2349,6 +2353,7 @@ static int _regmap_raw_multi_reg_write(s
unsigned int reg = regs[i].reg;
unsigned int val = regs[i].def;
trace_regmap_hw_write_start(map, reg, 1);
reg >>= map->format.reg_downshift;
map->format.format_reg(u8, reg, map->reg_shift);
u8 += reg_bytes + pad_bytes;
-@@ -2679,6 +2684,7 @@ static int _regmap_raw_read(struct regma
+@@ -2677,6 +2682,7 @@ static int _regmap_raw_read(struct regma
return ret;
}
return map->bus->reg_write(map->bus_context, reg, val);
}
-@@ -2705,6 +2707,8 @@ static int _regmap_bus_reg_read(void *co
+@@ -2703,6 +2705,8 @@ static int _regmap_bus_reg_read(void *co
{
struct regmap *map = context;
return map->bus->reg_read(map->bus_context, reg, val);
}
-@@ -3080,6 +3084,8 @@ static int _regmap_update_bits(struct re
+@@ -3078,6 +3082,8 @@ static int _regmap_update_bits(struct re
*change = false;
if (regmap_volatile(map, reg) && map->reg_update_bits) {
if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628)) {
ret = device_reset(eth->dev);
if (ret) {
-@@ -3079,6 +3086,35 @@ free_netdev:
+@@ -3072,6 +3079,35 @@ free_netdev:
return err;
}
static int mtk_probe(struct platform_device *pdev)
{
struct device_node *mac_np;
-@@ -3092,6 +3128,7 @@ static int mtk_probe(struct platform_dev
+@@ -3085,6 +3121,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);
-@@ -3140,6 +3177,16 @@ static int mtk_probe(struct platform_dev
+@@ -3133,6 +3170,16 @@ static int mtk_probe(struct platform_dev
}
}
static int mtk_msg_level = -1;
module_param_named(msg_level, mtk_msg_level, int, 0);
-@@ -3209,6 +3210,22 @@ static int mtk_probe(struct platform_dev
+@@ -3202,6 +3203,22 @@ static int mtk_probe(struct platform_dev
}
}
return 0;
}
-@@ -3301,10 +3301,11 @@ static int mtk_probe(struct platform_dev
+@@ -3294,10 +3294,11 @@ static int mtk_probe(struct platform_dev
}
if (eth->soc->offload_version) {
if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX &&
(trxd.rxd2 & RX_DMA_VTAG))
__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
-@@ -3301,7 +3307,7 @@ static int mtk_probe(struct platform_dev
+@@ -3294,7 +3300,7 @@ static int mtk_probe(struct platform_dev
}
if (eth->soc->offload_version) {
mediatek,hifsys = <&hifsys>;
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -3188,7 +3188,7 @@ static int mtk_probe(struct platform_dev
+@@ -3181,7 +3181,7 @@ static int mtk_probe(struct platform_dev
struct regmap *cci;
cci = syscon_regmap_lookup_by_phandle(pdev->dev.of_node,
eth->scratch_ring = NULL;
eth->phy_scratch_ring = 0;
}
-@@ -3391,6 +3394,9 @@ static const struct mtk_soc_data mt2701_
+@@ -3384,6 +3387,9 @@ static const struct mtk_soc_data mt2701_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7623_CLKS_BITMAP,
.required_pctl = true,
};
static const struct mtk_soc_data mt7621_data = {
-@@ -3399,6 +3405,9 @@ static const struct mtk_soc_data mt7621_
+@@ -3392,6 +3398,9 @@ static const struct mtk_soc_data mt7621_
.required_clks = MT7621_CLKS_BITMAP,
.required_pctl = false,
.offload_version = 2,
};
static const struct mtk_soc_data mt7622_data = {
-@@ -3408,6 +3417,9 @@ static const struct mtk_soc_data mt7622_
+@@ -3401,6 +3410,9 @@ static const struct mtk_soc_data mt7622_
.required_clks = MT7622_CLKS_BITMAP,
.required_pctl = false,
.offload_version = 2,
};
static const struct mtk_soc_data mt7623_data = {
-@@ -3416,6 +3428,9 @@ static const struct mtk_soc_data mt7623_
+@@ -3409,6 +3421,9 @@ static const struct mtk_soc_data mt7623_
.required_clks = MT7623_CLKS_BITMAP,
.required_pctl = true,
.offload_version = 2,
};
static const struct mtk_soc_data mt7629_data = {
-@@ -3424,6 +3439,9 @@ static const struct mtk_soc_data mt7629_
+@@ -3417,6 +3432,9 @@ static const struct mtk_soc_data mt7629_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7629_CLKS_BITMAP,
.required_pctl = false,
};
static const struct mtk_soc_data rt5350_data = {
-@@ -3431,6 +3449,9 @@ static const struct mtk_soc_data rt5350_
+@@ -3424,6 +3442,9 @@ static const struct mtk_soc_data rt5350_
.hw_features = MTK_HW_FEATURES_MT7628,
.required_clks = MT7628_CLKS_BITMAP,
.required_pctl = false,
ring->dma = NULL;
}
}
-@@ -3406,6 +3405,7 @@ static const struct mtk_soc_data mt2701_
+@@ -3399,6 +3398,7 @@ static const struct mtk_soc_data mt2701_
.required_pctl = true,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
},
};
-@@ -3417,6 +3417,7 @@ static const struct mtk_soc_data mt7621_
+@@ -3410,6 +3410,7 @@ static const struct mtk_soc_data mt7621_
.offload_version = 2,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
},
};
-@@ -3429,6 +3430,7 @@ static const struct mtk_soc_data mt7622_
+@@ -3422,6 +3423,7 @@ static const struct mtk_soc_data mt7622_
.offload_version = 2,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
},
};
-@@ -3440,6 +3442,7 @@ static const struct mtk_soc_data mt7623_
+@@ -3433,6 +3435,7 @@ static const struct mtk_soc_data mt7623_
.offload_version = 2,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
},
};
-@@ -3451,6 +3454,7 @@ static const struct mtk_soc_data mt7629_
+@@ -3444,6 +3447,7 @@ static const struct mtk_soc_data mt7629_
.required_pctl = false,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
},
};
-@@ -3461,6 +3465,7 @@ static const struct mtk_soc_data rt5350_
+@@ -3454,6 +3458,7 @@ static const struct mtk_soc_data rt5350_
.required_pctl = false,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP);
return 0;
-@@ -3171,14 +3234,6 @@ static int mtk_probe(struct platform_dev
+@@ -3164,14 +3227,6 @@ static int mtk_probe(struct platform_dev
if (IS_ERR(eth->base))
return PTR_ERR(eth->base);
if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628)) {
eth->rx_dma_l4_valid = RX_DMA_L4_VALID_PDMA;
eth->ip_align = NET_IP_ALIGN;
-@@ -3412,6 +3467,7 @@ static int mtk_remove(struct platform_de
+@@ -3405,6 +3460,7 @@ static int mtk_remove(struct platform_de
}
static const struct mtk_soc_data mt2701_data = {
.caps = MT7623_CAPS | MTK_HWLRO,
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7623_CLKS_BITMAP,
-@@ -3423,6 +3479,7 @@ static const struct mtk_soc_data mt2701_
+@@ -3416,6 +3472,7 @@ static const struct mtk_soc_data mt2701_
};
static const struct mtk_soc_data mt7621_data = {
.caps = MT7621_CAPS,
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7621_CLKS_BITMAP,
-@@ -3435,6 +3492,7 @@ static const struct mtk_soc_data mt7621_
+@@ -3428,6 +3485,7 @@ static const struct mtk_soc_data mt7621_
};
static const struct mtk_soc_data mt7622_data = {
.ana_rgc3 = 0x2028,
.caps = MT7622_CAPS | MTK_HWLRO,
.hw_features = MTK_HW_FEATURES,
-@@ -3448,6 +3506,7 @@ static const struct mtk_soc_data mt7622_
+@@ -3441,6 +3499,7 @@ static const struct mtk_soc_data mt7622_
};
static const struct mtk_soc_data mt7623_data = {
.caps = MT7623_CAPS | MTK_HWLRO,
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7623_CLKS_BITMAP,
-@@ -3460,6 +3519,7 @@ static const struct mtk_soc_data mt7623_
+@@ -3453,6 +3512,7 @@ static const struct mtk_soc_data mt7623_
};
static const struct mtk_soc_data mt7629_data = {
.ana_rgc3 = 0x128,
.caps = MT7629_CAPS | MTK_HWLRO,
.hw_features = MTK_HW_FEATURES,
-@@ -3472,6 +3532,7 @@ static const struct mtk_soc_data mt7629_
+@@ -3465,6 +3525,7 @@ static const struct mtk_soc_data mt7629_
};
static const struct mtk_soc_data rt5350_data = {
return 0;
err_disable_pm:
-@@ -3234,12 +3403,8 @@ static int mtk_probe(struct platform_dev
+@@ -3227,12 +3396,8 @@ static int mtk_probe(struct platform_dev
if (IS_ERR(eth->base))
return PTR_ERR(eth->base);
spin_lock_init(ð->page_lock);
spin_lock_init(ð->tx_irq_lock);
-@@ -3475,6 +3640,10 @@ static const struct mtk_soc_data mt2701_
+@@ -3468,6 +3633,10 @@ static const struct mtk_soc_data mt2701_
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
},
};
-@@ -3488,6 +3657,10 @@ static const struct mtk_soc_data mt7621_
+@@ -3481,6 +3650,10 @@ static const struct mtk_soc_data mt7621_
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
},
};
-@@ -3502,6 +3675,10 @@ static const struct mtk_soc_data mt7622_
+@@ -3495,6 +3668,10 @@ static const struct mtk_soc_data mt7622_
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
},
};
-@@ -3515,6 +3692,10 @@ static const struct mtk_soc_data mt7623_
+@@ -3508,6 +3685,10 @@ static const struct mtk_soc_data mt7623_
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
},
};
-@@ -3528,6 +3709,10 @@ static const struct mtk_soc_data mt7629_
+@@ -3521,6 +3702,10 @@ static const struct mtk_soc_data mt7629_
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
},
};
-@@ -3540,6 +3725,10 @@ static const struct mtk_soc_data rt5350_
+@@ -3533,6 +3718,10 @@ static const struct mtk_soc_data rt5350_
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
};
void mtk_w32(struct mtk_eth *eth, u32 val, unsigned reg)
-@@ -3712,6 +3749,21 @@ static const struct mtk_soc_data mt7629_
+@@ -3705,6 +3742,21 @@ static const struct mtk_soc_data mt7629_
},
};
static const struct mtk_soc_data rt5350_data = {
.reg_map = &mt7628_reg_map,
.caps = MT7628_CAPS,
-@@ -3734,6 +3786,7 @@ const struct of_device_id of_mtk_match[]
+@@ -3727,6 +3779,7 @@ const struct of_device_id of_mtk_match[]
{ .compatible = "mediatek,mt7622-eth", .data = &mt7622_data},
{ .compatible = "mediatek,mt7623-eth", .data = &mt7623_data},
{ .compatible = "mediatek,mt7629-eth", .data = &mt7629_data},
skb->ip_summed = CHECKSUM_UNNECESSARY;
else
skb_checksum_none_assert(skb);
-@@ -3759,6 +3765,7 @@ static const struct mtk_soc_data mt7986_
+@@ -3752,6 +3758,7 @@ static const struct mtk_soc_data mt7986_
.txd_size = sizeof(struct mtk_tx_dma_v2),
.rxd_size = sizeof(struct mtk_rx_dma_v2),
.rx_irq_done_mask = MTK_RX_DONE_INT_V2,
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -3355,6 +3355,26 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -3348,6 +3348,26 @@ static int mtk_add_mac(struct mtk_eth *e
mac->phylink_config.dev = ð->netdev[id]->dev;
mac->phylink_config.type = PHYLINK_NETDEV;
.mac_pcs_get_state = mtk_mac_pcs_get_state,
.mac_an_restart = mtk_mac_an_restart,
.mac_config = mtk_mac_config,
-@@ -3317,6 +3269,9 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -3310,6 +3262,9 @@ static int mtk_add_mac(struct mtk_eth *e
mac->phylink_config.dev = ð->netdev[id]->dev;
mac->phylink_config.type = PHYLINK_NETDEV;
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -3269,6 +3269,10 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -3262,6 +3262,10 @@ static int mtk_add_mac(struct mtk_eth *e
mac->phylink_config.dev = ð->netdev[id]->dev;
mac->phylink_config.type = PHYLINK_NETDEV;
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -3568,9 +3568,9 @@ static int mtk_probe(struct platform_dev
+@@ -3561,9 +3561,9 @@ static int mtk_probe(struct platform_dev
*/
init_dummy_netdev(ð->dummy_dev);
netif_napi_add(ð->dummy_dev, ð->tx_napi, mtk_napi_tx,
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -3264,7 +3264,6 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -3257,7 +3257,6 @@ static int mtk_add_mac(struct mtk_eth *e
/* mac config is not set */
mac->interface = PHY_INTERFACE_MODE_NA;
mcr &= ~(MAC_MCR_SPEED_100 | MAC_MCR_SPEED_1000 |
MAC_MCR_FORCE_DPX | MAC_MCR_FORCE_TX_FC |
MAC_MCR_FORCE_RX_FC);
-@@ -3268,9 +3278,7 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -3261,9 +3271,7 @@ static int mtk_add_mac(struct mtk_eth *e
mac->phylink_config.dev = ð->netdev[id]->dev;
mac->phylink_config.type = PHYLINK_NETDEV;
static void ethsys_reset(struct mtk_eth *eth, u32 reset_bits)
{
regmap_update_bits(eth->ethsys, ETHSYS_RSTCTRL,
-@@ -3005,6 +3122,12 @@ static int mtk_change_mtu(struct net_dev
+@@ -2988,6 +3105,12 @@ static int mtk_change_mtu(struct net_dev
struct mtk_eth *eth = mac->hw;
u32 mcr_cur, mcr_new;
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628)) {
mcr_cur = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
mcr_new = mcr_cur & ~MAC_MCR_MAX_RX_MASK;
-@@ -3332,6 +3455,7 @@ static const struct net_device_ops mtk_n
+@@ -3314,6 +3437,7 @@ static const struct net_device_ops mtk_n
.ndo_poll_controller = mtk_poll_controller,
#endif
.ndo_setup_tc = mtk_eth_setup_tc,
}
mtk_tx_unmap(eth, tx_buf, true);
-@@ -3478,6 +3627,7 @@ static const struct net_device_ops mtk_n
+@@ -3460,6 +3609,7 @@ static const struct net_device_ops mtk_n
#endif
.ndo_setup_tc = mtk_eth_setup_tc,
.ndo_bpf = mtk_xdp,
MediaTek SoC family.
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -3488,11 +3488,18 @@ static void mtk_get_strings(struct net_d
+@@ -3471,11 +3471,18 @@ static void mtk_get_strings(struct net_d
int i;
switch (stringset) {
break;
}
}
-@@ -3500,13 +3507,35 @@ static void mtk_get_strings(struct net_d
+@@ -3483,13 +3490,35 @@ static void mtk_get_strings(struct net_d
static int mtk_get_sset_count(struct net_device *dev, int sset)
{
switch (sset) {
static void mtk_get_ethtool_stats(struct net_device *dev,
struct ethtool_stats *stats, u64 *data)
{
-@@ -3534,6 +3563,8 @@ static void mtk_get_ethtool_stats(struct
+@@ -3517,6 +3546,8 @@ static void mtk_get_ethtool_stats(struct
for (i = 0; i < ARRAY_SIZE(mtk_ethtool_stats); i++)
*data_dst++ = *(data_src + mtk_ethtool_stats[i].offset);
refcount_set(ð->dma_refcnt, 1);
}
else
-@@ -4048,7 +4053,9 @@ static int mtk_probe(struct platform_dev
+@@ -4041,7 +4046,9 @@ 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
-@@ -4151,6 +4151,7 @@ static const struct mtk_soc_data mt7621_
+@@ -4144,6 +4144,7 @@ static const struct mtk_soc_data mt7621_
.required_clks = MT7621_CLKS_BITMAP,
.required_pctl = false,
.offload_version = 2,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4169,6 +4170,7 @@ static const struct mtk_soc_data mt7622_
+@@ -4162,6 +4163,7 @@ static const struct mtk_soc_data mt7622_
.required_clks = MT7622_CLKS_BITMAP,
.required_pctl = false,
.offload_version = 2,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4186,6 +4188,7 @@ static const struct mtk_soc_data mt7623_
+@@ -4179,6 +4181,7 @@ static const struct mtk_soc_data mt7623_
.required_clks = MT7623_CLKS_BITMAP,
.required_pctl = true,
.offload_version = 2,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4219,6 +4222,7 @@ static const struct mtk_soc_data mt7986_
+@@ -4212,6 +4215,7 @@ static const struct mtk_soc_data mt7986_
.caps = MT7986_CAPS,
.required_clks = MT7986_CLKS_BITMAP,
.required_pctl = false,
return 0;
}
-@@ -4053,12 +4058,19 @@ static int mtk_probe(struct platform_dev
+@@ -4046,12 +4051,19 @@ static int mtk_probe(struct platform_dev
}
if (eth->soc->offload_version) {
};
/* strings used by ethtool */
-@@ -3970,16 +3978,12 @@ static int mtk_probe(struct platform_dev
+@@ -3963,16 +3971,12 @@ static int mtk_probe(struct platform_dev
for (i = 0;; i++) {
struct device_node *np = of_parse_phandle(pdev->dev.of_node,
"mediatek,wed", i);
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -4168,6 +4168,7 @@ static const struct mtk_soc_data mt7621_
+@@ -4161,6 +4161,7 @@ static const struct mtk_soc_data mt7621_
.required_pctl = false,
.offload_version = 2,
.hash_offset = 2,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4187,6 +4188,7 @@ static const struct mtk_soc_data mt7622_
+@@ -4180,6 +4181,7 @@ static const struct mtk_soc_data mt7622_
.required_pctl = false,
.offload_version = 2,
.hash_offset = 2,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4205,6 +4207,7 @@ static const struct mtk_soc_data mt7623_
+@@ -4198,6 +4200,7 @@ static const struct mtk_soc_data mt7623_
.required_pctl = true,
.offload_version = 2,
.hash_offset = 2,
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -3895,6 +3895,7 @@ void mtk_eth_set_dma_device(struct mtk_e
+@@ -3888,6 +3888,7 @@ void mtk_eth_set_dma_device(struct mtk_e
static int mtk_probe(struct platform_device *pdev)
{
struct device_node *mac_np;
struct mtk_eth *eth;
int err, i;
-@@ -3975,16 +3976,31 @@ static int mtk_probe(struct platform_dev
+@@ -3968,16 +3969,31 @@ static int mtk_probe(struct platform_dev
}
}
if (reason == MTK_PPE_CPU_REASON_HIT_UNBIND_RATE_REACHED)
mtk_ppe_check_skb(eth->ppe[0], skb, hash);
-@@ -4184,7 +4185,7 @@ static const struct mtk_soc_data mt7621_
+@@ -4177,7 +4178,7 @@ static const struct mtk_soc_data mt7621_
.required_pctl = false,
.offload_version = 2,
.hash_offset = 2,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4204,7 +4205,7 @@ static const struct mtk_soc_data mt7622_
+@@ -4197,7 +4198,7 @@ static const struct mtk_soc_data mt7622_
.required_pctl = false,
.offload_version = 2,
.hash_offset = 2,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4223,7 +4224,7 @@ static const struct mtk_soc_data mt7623_
+@@ -4216,7 +4217,7 @@ static const struct mtk_soc_data mt7623_
.required_pctl = true,
.offload_version = 2,
.hash_offset = 2,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4255,9 +4256,11 @@ static const struct mtk_soc_data mt7986_
+@@ -4248,9 +4249,11 @@ static const struct mtk_soc_data mt7986_
.reg_map = &mt7986_reg_map,
.ana_rgc3 = 0x128,
.caps = MT7986_CAPS,
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -4259,6 +4259,7 @@ static const struct mtk_soc_data mt7986_
+@@ -4252,6 +4252,7 @@ static const struct mtk_soc_data mt7986_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7986_CLKS_BITMAP,
.required_pctl = false,
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -4011,19 +4011,23 @@ static int mtk_probe(struct platform_dev
+@@ -4004,19 +4004,23 @@ static int mtk_probe(struct platform_dev
eth->irq[i] = platform_get_irq(pdev, i);
if (eth->irq[i] < 0) {
dev_err(&pdev->dev, "no IRQ%d resource found\n", i);
}
eth->clks[i] = NULL;
}
-@@ -4034,7 +4038,7 @@ static int mtk_probe(struct platform_dev
+@@ -4027,7 +4031,7 @@ static int mtk_probe(struct platform_dev
err = mtk_hw_init(eth);
if (err)
eth->hwlro = MTK_HAS_CAPS(eth->soc->caps, MTK_HWLRO);
-@@ -4132,6 +4136,8 @@ err_free_dev:
+@@ -4125,6 +4129,8 @@ err_free_dev:
mtk_free_dev(eth);
err_deinit_hw:
mtk_hw_deinit(eth);
return err;
}
-@@ -4151,6 +4157,7 @@ static int mtk_remove(struct platform_de
+@@ -4144,6 +4150,7 @@ static int mtk_remove(struct platform_de
phylink_disconnect_phy(mac->phylink);
}
/* Indicates CDM to parse the MTK special tag from CPU
* which also is working out for untag packets.
-@@ -3367,7 +3399,6 @@ static int mtk_change_mtu(struct net_dev
+@@ -3350,7 +3382,6 @@ static int mtk_change_mtu(struct net_dev
int length = new_mtu + MTK_RX_ETH_HLEN;
struct mtk_mac *mac = netdev_priv(dev);
struct mtk_eth *eth = mac->hw;
if (rcu_access_pointer(eth->prog) &&
length > MTK_PP_MAX_BUF_SIZE) {
-@@ -3375,23 +3406,7 @@ static int mtk_change_mtu(struct net_dev
+@@ -3358,23 +3389,7 @@ static int mtk_change_mtu(struct net_dev
return -EINVAL;
}
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -3437,11 +3437,8 @@ static void mtk_pending_work(struct work
+@@ -3420,11 +3420,8 @@ static void mtk_pending_work(struct work
rtnl_lock();
dev_dbg(eth->dev, "[%s][%d] reset\n", __func__, __LINE__);
/* stop all devices to make sure that dma is properly shut down */
for (i = 0; i < MTK_MAC_COUNT; i++) {
if (!eth->netdev[i])
-@@ -3475,7 +3472,7 @@ static void mtk_pending_work(struct work
+@@ -3458,7 +3455,7 @@ static void mtk_pending_work(struct work
dev_dbg(eth->dev, "[%s][%d] reset done\n", __func__, __LINE__);
if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) {
/* Set FE to PDMAv2 if necessary */
-@@ -3465,7 +3517,7 @@ static void mtk_pending_work(struct work
+@@ -3448,7 +3500,7 @@ static void mtk_pending_work(struct work
if (eth->dev->pins)
pinctrl_select_state(eth->dev->pins->p,
eth->dev->pins->default_state);
/* restart DMA and enable IRQs */
for (i = 0; i < MTK_MAC_COUNT; i++) {
-@@ -4057,7 +4109,7 @@ static int mtk_probe(struct platform_dev
+@@ -4050,7 +4102,7 @@ static int mtk_probe(struct platform_dev
eth->msg_enable = netif_msg_init(mtk_msg_level, MTK_DEFAULT_MSG_ENABLE);
INIT_WORK(ð->pending_work, mtk_pending_work);
return ret;
}
-@@ -3489,30 +3508,53 @@ static int mtk_do_ioctl(struct net_devic
+@@ -3472,30 +3491,53 @@ static int mtk_do_ioctl(struct net_devic
return -EOPNOTSUPP;
}
if (eth->dev->pins)
pinctrl_select_state(eth->dev->pins->p,
-@@ -3523,15 +3565,19 @@ static void mtk_pending_work(struct work
+@@ -3506,15 +3548,19 @@ static void mtk_pending_work(struct work
for (i = 0; i < MTK_MAC_COUNT; i++) {
if (!test_bit(i, &restart))
continue;
static int mtk_hw_init(struct mtk_eth *eth, bool reset)
{
u32 dma_mask = ETHSYS_DMA_AG_MAP_PDMA | ETHSYS_DMA_AG_MAP_QDMA |
-@@ -3615,6 +3717,7 @@ static int mtk_cleanup(struct mtk_eth *e
+@@ -3598,6 +3700,7 @@ static int mtk_cleanup(struct mtk_eth *e
mtk_unreg_dev(eth);
mtk_free_dev(eth);
cancel_work_sync(ð->pending_work);
return 0;
}
-@@ -4042,6 +4145,7 @@ static int mtk_probe(struct platform_dev
+@@ -4035,6 +4138,7 @@ static int mtk_probe(struct platform_dev
eth->rx_dim.mode = DIM_CQ_PERIOD_MODE_START_FROM_EQE;
INIT_WORK(ð->rx_dim.work, mtk_dim_rx);
eth->tx_dim.mode = DIM_CQ_PERIOD_MODE_START_FROM_EQE;
INIT_WORK(ð->tx_dim.work, mtk_dim_tx);
-@@ -4246,6 +4350,8 @@ static int mtk_probe(struct platform_dev
+@@ -4239,6 +4343,8 @@ static int mtk_probe(struct platform_dev
NAPI_POLL_WEIGHT);
platform_set_drvdata(pdev, eth);
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -3646,6 +3646,11 @@ static void mtk_pending_work(struct work
+@@ -3629,6 +3629,11 @@ static void mtk_pending_work(struct work
set_bit(MTK_RESETTING, ð->state);
mtk_prepare_for_reset(eth);
/* stop all devices to make sure that dma is properly shut down */
for (i = 0; i < MTK_MAC_COUNT; i++) {
-@@ -3683,6 +3688,8 @@ static void mtk_pending_work(struct work
+@@ -3666,6 +3671,8 @@ static void mtk_pending_work(struct work
clear_bit(MTK_RESETTING, ð->state);
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -4428,7 +4428,7 @@ static const struct mtk_soc_data mt7621_
+@@ -4421,7 +4421,7 @@ static const struct mtk_soc_data mt7621_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7621_CLKS_BITMAP,
.required_pctl = false,
.hash_offset = 2,
.foe_entry_size = sizeof(struct mtk_foe_entry) - 16,
.txrx = {
-@@ -4467,7 +4467,7 @@ static const struct mtk_soc_data mt7623_
+@@ -4460,7 +4460,7 @@ static const struct mtk_soc_data mt7623_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7623_CLKS_BITMAP,
.required_pctl = true,
return 0;
}
-@@ -3717,8 +3873,12 @@ static int mtk_unreg_dev(struct mtk_eth
+@@ -3700,8 +3856,12 @@ static int mtk_unreg_dev(struct mtk_eth
int i;
for (i = 0; i < MTK_MAC_COUNT; i++) {
unregister_netdev(eth->netdev[i]);
}
-@@ -3935,6 +4095,23 @@ static int mtk_set_rxnfc(struct net_devi
+@@ -3918,6 +4078,23 @@ static int mtk_set_rxnfc(struct net_devi
return ret;
}
static const struct ethtool_ops mtk_ethtool_ops = {
.get_link_ksettings = mtk_get_link_ksettings,
.set_link_ksettings = mtk_set_link_ksettings,
-@@ -3970,6 +4147,7 @@ static const struct net_device_ops mtk_n
+@@ -3952,6 +4129,7 @@ static const struct net_device_ops mtk_n
.ndo_setup_tc = mtk_eth_setup_tc,
.ndo_bpf = mtk_xdp,
.ndo_xdp_xmit = mtk_xdp_xmit,
};
static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
-@@ -3979,6 +4157,7 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -3961,6 +4139,7 @@ static int mtk_add_mac(struct mtk_eth *e
struct phylink *phylink;
struct mtk_mac *mac;
int id, err;
if (!_id) {
dev_err(eth->dev, "missing mac id\n");
-@@ -3996,7 +4175,10 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -3978,7 +4157,10 @@ static int mtk_add_mac(struct mtk_eth *e
return -EINVAL;
}
if (!eth->netdev[id]) {
dev_err(eth->dev, "alloc_etherdev failed\n");
return -ENOMEM;
-@@ -4093,6 +4275,11 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4086,6 +4268,11 @@ static int mtk_add_mac(struct mtk_eth *e
else
eth->netdev[id]->max_mtu = MTK_MAX_RX_LENGTH_2K - MTK_RX_ETH_HLEN;
/* Enable RX VLan Offloading */
mtk_w32(eth, 1, MTK_CDMP_EG_CTRL);
-@@ -3865,6 +3925,12 @@ static int mtk_free_dev(struct mtk_eth *
+@@ -3848,6 +3908,12 @@ static int mtk_free_dev(struct mtk_eth *
free_netdev(eth->netdev[i]);
}
mtk_eth_path_name(path), __func__, updated);
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -4755,6 +4755,26 @@ static const struct mtk_soc_data mt7629_
+@@ -4748,6 +4748,26 @@ static const struct mtk_soc_data mt7629_
},
};
static const struct mtk_soc_data mt7986_data = {
.reg_map = &mt7986_reg_map,
.ana_rgc3 = 0x128,
-@@ -4797,6 +4817,7 @@ const struct of_device_id of_mtk_match[]
+@@ -4790,6 +4810,7 @@ const struct of_device_id of_mtk_match[]
{ .compatible = "mediatek,mt7622-eth", .data = &mt7622_data},
{ .compatible = "mediatek,mt7623-eth", .data = &mt7623_data},
{ .compatible = "mediatek,mt7629-eth", .data = &mt7629_data},
}
return NULL;
-@@ -3977,8 +3978,17 @@ static int mtk_unreg_dev(struct mtk_eth
+@@ -3960,8 +3961,17 @@ static int mtk_unreg_dev(struct mtk_eth
return 0;
}
mtk_unreg_dev(eth);
mtk_free_dev(eth);
cancel_work_sync(ð->pending_work);
-@@ -4408,6 +4418,36 @@ void mtk_eth_set_dma_device(struct mtk_e
+@@ -4401,6 +4411,36 @@ void mtk_eth_set_dma_device(struct mtk_e
rtnl_unlock();
}
static int mtk_probe(struct platform_device *pdev)
{
struct resource *res = NULL;
-@@ -4471,13 +4511,7 @@ static int mtk_probe(struct platform_dev
+@@ -4464,13 +4504,7 @@ static int mtk_probe(struct platform_dev
}
if (MTK_HAS_CAPS(eth->soc->caps, MTK_SGMII)) {
if (err)
return err;
-@@ -4488,14 +4522,17 @@ static int mtk_probe(struct platform_dev
+@@ -4481,14 +4515,17 @@ static int mtk_probe(struct platform_dev
"mediatek,pctl");
if (IS_ERR(eth->pctl)) {
dev_err(&pdev->dev, "no pctl regmap found\n");
}
if (eth->soc->offload_version) {
-@@ -4655,6 +4692,8 @@ err_deinit_hw:
+@@ -4648,6 +4685,8 @@ err_deinit_hw:
mtk_hw_deinit(eth);
err_wed_exit:
mtk_wed_exit();
+++ /dev/null
-From e7731194fdf085f46d58b1adccfddbd0dfee4873 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Fri, 7 Jul 2023 08:53:25 +0200
-Subject: [PATCH] net: bgmac: postpone turning IRQs off to avoid SoC hangs
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Turning IRQs off is done by accessing Ethernet controller registers.
-That can't be done until device's clock is enabled. It results in a SoC
-hang otherwise.
-
-This bug remained unnoticed for years as most bootloaders keep all
-Ethernet interfaces turned on. It seems to only affect a niche SoC
-family BCM47189. It has two Ethernet controllers but CFE bootloader uses
-only the first one.
-
-Fixes: 34322615cbaa ("net: bgmac: Mask interrupts during probe")
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-Reviewed-by: Michal Kubiak <michal.kubiak@intel.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/ethernet/broadcom/bgmac.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/net/ethernet/broadcom/bgmac.c
-+++ b/drivers/net/ethernet/broadcom/bgmac.c
-@@ -1492,8 +1492,6 @@ int bgmac_enet_probe(struct bgmac *bgmac
-
- bgmac->in_init = true;
-
-- bgmac_chip_intrs_off(bgmac);
--
- net_dev->irq = bgmac->irq;
- SET_NETDEV_DEV(net_dev, bgmac->dev);
- dev_set_drvdata(bgmac->dev, bgmac);
-@@ -1511,6 +1509,8 @@ int bgmac_enet_probe(struct bgmac *bgmac
- */
- bgmac_clk_enable(bgmac, 0);
-
-+ bgmac_chip_intrs_off(bgmac);
-+
- /* This seems to be fixing IRQ by assigning OOB #6 to the core */
- if (!(bgmac->feature_flags & BGMAC_FEAT_IDM_MASK)) {
- if (bgmac->feature_flags & BGMAC_FEAT_IRQ_ID_OOB_6)
stmmac_clear_tx_descriptors(priv, queue);
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
-@@ -7417,6 +7412,25 @@ int stmmac_suspend(struct device *dev)
+@@ -7411,6 +7406,25 @@ int stmmac_suspend(struct device *dev)
}
EXPORT_SYMBOL_GPL(stmmac_suspend);
/**
* stmmac_reset_queues_param - reset queue parameters
* @priv: device pointer
-@@ -7427,22 +7441,11 @@ static void stmmac_reset_queues_param(st
+@@ -7421,22 +7435,11 @@ static void stmmac_reset_queues_param(st
u32 tx_cnt = priv->plat->tx_queues_to_use;
u32 queue;
if (netif_running(dev))
ret = stmmac_open(dev);
-@@ -7363,7 +7367,7 @@ int stmmac_suspend(struct device *dev)
+@@ -7357,7 +7361,7 @@ int stmmac_suspend(struct device *dev)
stmmac_disable_all_queues(priv);
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
if (priv->eee_enabled) {
priv->tx_path_in_lpi_mode = false;
-@@ -7414,7 +7418,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
+@@ -7408,7 +7412,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
static void stmmac_reset_rx_queue(struct stmmac_priv *priv, u32 queue)
{
rx_q->cur_rx = 0;
rx_q->dirty_rx = 0;
-@@ -7422,7 +7426,7 @@ static void stmmac_reset_rx_queue(struct
+@@ -7416,7 +7420,7 @@ static void stmmac_reset_rx_queue(struct
static void stmmac_reset_tx_queue(struct stmmac_priv *priv, u32 queue)
{
dma_desc_error:
return ret;
}
-@@ -7509,7 +7625,7 @@ int stmmac_resume(struct device *dev)
+@@ -7503,7 +7619,7 @@ int stmmac_resume(struct device *dev)
stmmac_reset_queues_param(priv);
stmmac_free_tx_skbufs(priv);
+++ /dev/null
-From cee4bd16c3195a701be683f7da9e88c6e11acb73 Mon Sep 17 00:00:00 2001
-From: Christian Marangi <ansuelsmth@gmail.com>
-Date: Wed, 19 Apr 2023 23:07:39 +0200
-Subject: [PATCH 1/5] leds: trigger: netdev: Recheck NETDEV_LED_MODE_LINKUP on
- dev rename
-
-Dev can be renamed also while up for supported device. We currently
-wrongly clear the NETDEV_LED_MODE_LINKUP flag on NETDEV_CHANGENAME
-event.
-
-Fix this by rechecking if the carrier is ok on NETDEV_CHANGENAME and
-correctly set the NETDEV_LED_MODE_LINKUP bit.
-
-Fixes: 5f820ed52371 ("leds: trigger: netdev: fix handling on interface rename")
-Cc: stable@vger.kernel.org # v5.5+
-Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
-Reviewed-by: Andrew Lunn <andrew@lunn.ch>
-Signed-off-by: Lee Jones <lee@kernel.org>
-Link: https://lore.kernel.org/r/20230419210743.3594-2-ansuelsmth@gmail.com
----
- drivers/leds/trigger/ledtrig-netdev.c | 3 +++
- 1 file changed, 3 insertions(+)
-
---- a/drivers/leds/trigger/ledtrig-netdev.c
-+++ b/drivers/leds/trigger/ledtrig-netdev.c
-@@ -318,6 +318,9 @@ static int netdev_trig_notify(struct not
- clear_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode);
- switch (evt) {
- case NETDEV_CHANGENAME:
-+ if (netif_carrier_ok(dev))
-+ set_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode);
-+ fallthrough;
- case NETDEV_REGISTER:
- if (trigger_data->net_dev)
- dev_put(trigger_data->net_dev);
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
-@@ -2036,7 +2036,9 @@ static void read_symbols(const char *mod
+@@ -2000,7 +2000,9 @@ static void read_symbols(const char *mod
symname = remove_dot(info.strtab + sym->st_name);
handle_symbol(mod, &info, sym, symname);
}
for (sym = info.symtab_start; sym < info.symtab_stop; sym++) {
-@@ -2215,8 +2217,10 @@ static void add_header(struct buffer *b,
+@@ -2179,8 +2181,10 @@ static void add_header(struct buffer *b,
buf_printf(b, "BUILD_SALT;\n");
buf_printf(b, "BUILD_LTO_INFO;\n");
buf_printf(b, "\n");
buf_printf(b, "\n");
buf_printf(b, "__visible struct module __this_module\n");
buf_printf(b, "__section(\".gnu.linkonce.this_module\") = {\n");
-@@ -2233,8 +2237,10 @@ static void add_header(struct buffer *b,
+@@ -2197,8 +2201,10 @@ static void add_header(struct buffer *b,
static void add_intree_flag(struct buffer *b, int is_intree)
{
}
/* Cannot check for assembler */
-@@ -2247,8 +2253,10 @@ static void add_retpoline(struct buffer
+@@ -2211,8 +2217,10 @@ static void add_retpoline(struct buffer
static void add_staging_flag(struct buffer *b, const char *name)
{
}
/**
-@@ -2328,11 +2336,13 @@ static void add_depends(struct buffer *b
+@@ -2292,11 +2300,13 @@ static void add_depends(struct buffer *b
static void add_srcversion(struct buffer *b, struct module *mod)
{
}
static void write_buf(struct buffer *b, const char *fname)
-@@ -2581,7 +2591,9 @@ int main(int argc, char **argv)
+@@ -2545,7 +2555,9 @@ int main(int argc, char **argv)
add_staging_flag(&buf, mod->name);
add_versions(&buf, mod);
add_depends(&buf, mod);
#include <linux/mutex.h>
#include <linux/err.h>
#include <linux/property.h>
-@@ -3360,3 +3361,5 @@ static int __init regmap_initcall(void)
+@@ -3358,3 +3359,5 @@ static int __init regmap_initcall(void)
return 0;
}
postcore_initcall(regmap_initcall);
#define QUECTEL_VENDOR_ID 0x2c7c
/* These Quectel products use Quectel's vendor ID */
-@@ -1173,6 +1175,11 @@ static const struct usb_device_id option
+@@ -1177,6 +1179,11 @@ static const struct usb_device_id option
.driver_info = ZLP },
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
.driver_info = RSVD(4) },
--- a/net/core/sock.c
+++ b/net/core/sock.c
-@@ -3866,6 +3866,8 @@ static __net_initdata struct pernet_oper
+@@ -3877,6 +3877,8 @@ static __net_initdata struct pernet_oper
static int __init proto_init(void)
{
+++ /dev/null
-From eee53f6eb7561f516b9c4bac829ce31c48096130 Mon Sep 17 00:00:00 2001
-From: Fabian Frederick <fabf@skynet.be>
-Date: Tue, 9 May 2017 22:30:03 +0200
-Subject: [PATCH] jffs2: reduce stack usage in jffs2_build_xattr_subsystem()
-
-Use kcalloc() for allocation/flush of 128 pointers table to
-reduce stack usage.
-
-Function now returns -ENOMEM or 0 on success.
-
-stackusage
-Before:
-./fs/jffs2/xattr.c:775 jffs2_build_xattr_subsystem 1208
-dynamic,bounded
-
-After:
-./fs/jffs2/xattr.c:775 jffs2_build_xattr_subsystem 192
-dynamic,bounded
-
-Also update definition when CONFIG_JFFS2_FS_XATTR is not enabled
-
-Tested with an MTD mount point and some user set/getfattr.
-
-Many current target on OpenWRT also suffer from a compilation warning
-(that become an error with CONFIG_WERROR) with the following output:
-
-fs/jffs2/xattr.c: In function 'jffs2_build_xattr_subsystem':
-fs/jffs2/xattr.c:887:1: error: the frame size of 1088 bytes is larger than 1024 bytes [-Werror=frame-larger-than=]
- 887 | }
- | ^
-
-Using dynamic allocation fix this compilation warning.
-
-Fixes: c9f700f840bd ("[JFFS2][XATTR] using 'delete marker' for xdatum/xref deletion")
-Reported-by: Tim Gardner <tim.gardner@canonical.com>
-Reported-by: kernel test robot <lkp@intel.com>
-Reported-by: Ron Economos <re@w6rz.net>
-Reported-by: Nathan Chancellor <nathan@kernel.org>
-Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
-Signed-off-by: Fabian Frederick <fabf@skynet.be>
-Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
-Cc: stable@vger.kernel.org
----
- fs/jffs2/build.c | 5 ++++-
- fs/jffs2/xattr.c | 13 +++++++++----
- fs/jffs2/xattr.h | 4 ++--
- 3 files changed, 15 insertions(+), 7 deletions(-)
-
---- a/fs/jffs2/build.c
-+++ b/fs/jffs2/build.c
-@@ -211,7 +211,10 @@ static int jffs2_build_filesystem(struct
- ic->scan_dents = NULL;
- cond_resched();
- }
-- jffs2_build_xattr_subsystem(c);
-+ ret = jffs2_build_xattr_subsystem(c);
-+ if (ret)
-+ goto exit;
-+
- c->flags &= ~JFFS2_SB_FLAG_BUILDING;
-
- dbg_fsbuild("FS build complete\n");
---- a/fs/jffs2/xattr.c
-+++ b/fs/jffs2/xattr.c
-@@ -772,10 +772,10 @@ void jffs2_clear_xattr_subsystem(struct
- }
-
- #define XREF_TMPHASH_SIZE (128)
--void jffs2_build_xattr_subsystem(struct jffs2_sb_info *c)
-+int jffs2_build_xattr_subsystem(struct jffs2_sb_info *c)
- {
- struct jffs2_xattr_ref *ref, *_ref;
-- struct jffs2_xattr_ref *xref_tmphash[XREF_TMPHASH_SIZE];
-+ struct jffs2_xattr_ref **xref_tmphash;
- struct jffs2_xattr_datum *xd, *_xd;
- struct jffs2_inode_cache *ic;
- struct jffs2_raw_node_ref *raw;
-@@ -784,9 +784,12 @@ void jffs2_build_xattr_subsystem(struct
-
- BUG_ON(!(c->flags & JFFS2_SB_FLAG_BUILDING));
-
-+ xref_tmphash = kcalloc(XREF_TMPHASH_SIZE,
-+ sizeof(struct jffs2_xattr_ref *), GFP_KERNEL);
-+ if (!xref_tmphash)
-+ return -ENOMEM;
-+
- /* Phase.1 : Merge same xref */
-- for (i=0; i < XREF_TMPHASH_SIZE; i++)
-- xref_tmphash[i] = NULL;
- for (ref=c->xref_temp; ref; ref=_ref) {
- struct jffs2_xattr_ref *tmp;
-
-@@ -884,6 +887,8 @@ void jffs2_build_xattr_subsystem(struct
- "%u of xref (%u dead, %u orphan) found.\n",
- xdatum_count, xdatum_unchecked_count, xdatum_orphan_count,
- xref_count, xref_dead_count, xref_orphan_count);
-+ kfree(xref_tmphash);
-+ return 0;
- }
-
- struct jffs2_xattr_datum *jffs2_setup_xattr_datum(struct jffs2_sb_info *c,
---- a/fs/jffs2/xattr.h
-+++ b/fs/jffs2/xattr.h
-@@ -71,7 +71,7 @@ static inline int is_xattr_ref_dead(stru
- #ifdef CONFIG_JFFS2_FS_XATTR
-
- extern void jffs2_init_xattr_subsystem(struct jffs2_sb_info *c);
--extern void jffs2_build_xattr_subsystem(struct jffs2_sb_info *c);
-+extern int jffs2_build_xattr_subsystem(struct jffs2_sb_info *c);
- extern void jffs2_clear_xattr_subsystem(struct jffs2_sb_info *c);
-
- extern struct jffs2_xattr_datum *jffs2_setup_xattr_datum(struct jffs2_sb_info *c,
-@@ -103,7 +103,7 @@ extern ssize_t jffs2_listxattr(struct de
- #else
-
- #define jffs2_init_xattr_subsystem(c)
--#define jffs2_build_xattr_subsystem(c)
-+#define jffs2_build_xattr_subsystem(c) (0)
- #define jffs2_clear_xattr_subsystem(c)
-
- #define jffs2_xattr_do_crccheck_inode(c, ic)
+++ /dev/null
-From 525ff9c2965770762b81d679820552a208070d59 Mon Sep 17 00:00:00 2001
-From: Arnd Bergmann <arnd@arndb.de>
-Date: Tue, 17 Jan 2023 17:40:35 +0100
-Subject: workqueue: fix enum type for gcc-13
-
-In gcc-13, the WORK_STRUCT_WQ_DATA_MASK constant is a signed 64-bit
-type on 32-bit architectures because the enum definition has both
-negative numbers and numbers above LONG_MAX in it:
-
-kernel/workqueue.c: In function 'get_work_pwq':
-kernel/workqueue.c:709:24: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
- 709 | return (void *)(data & WORK_STRUCT_WQ_DATA_MASK);
- | ^
-kernel/workqueue.c: In function 'get_work_pool':
-kernel/workqueue.c:737:25: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
- 737 | return ((struct pool_workqueue *)
- | ^
-kernel/workqueue.c: In function 'get_work_pool_id':
-kernel/workqueue.c:759:25: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
- 759 | return ((struct pool_workqueue *)
- | ^
-
-Change the enum definition to ensure all values can fit into
-the range of 'unsigned long' on all architectures.
-
-Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-Tested-by: Thierry Reding <treding@nvidia.com>
-Tested-by: Lai Jiangshan<jiangshanlai@gmail.com>
-Signed-off-by: Tejun Heo <tj@kernel.org>
----
- include/linux/workqueue.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/include/linux/workqueue.h
-+++ b/include/linux/workqueue.h
-@@ -83,7 +83,7 @@ enum {
-
- /* convenience constants */
- WORK_STRUCT_FLAG_MASK = (1UL << WORK_STRUCT_FLAG_BITS) - 1,
-- WORK_STRUCT_WQ_DATA_MASK = ~WORK_STRUCT_FLAG_MASK,
-+ WORK_STRUCT_WQ_DATA_MASK = (unsigned long)~WORK_STRUCT_FLAG_MASK,
- WORK_STRUCT_NO_POOL = (unsigned long)WORK_OFFQ_POOL_NONE << WORK_OFFQ_POOL_SHIFT,
-
- /* bit mask for work_busy() return values */
--- a/net/core/of_net.c
+++ b/net/core/of_net.c
-@@ -119,27 +119,62 @@ static int of_get_mac_addr_nvmem(struct
+@@ -119,28 +119,63 @@ static int of_get_mac_addr_nvmem(struct
* this case, the real MAC is in 'local-mac-address', and 'mac-address' exists
* but is all zeros.
*
+ return ret;
}
EXPORT_SYMBOL(of_get_mac_address);
+
}
return IRQ_HANDLED;
-@@ -4673,6 +4673,8 @@ static int mtk_probe(struct platform_dev
+@@ -4666,6 +4666,8 @@ static int mtk_probe(struct platform_dev
* for NAPI to work
*/
init_dummy_netdev(ð->dummy_dev);
struct rtnl_link {
rtnl_doit_func doit;
-@@ -4706,7 +4706,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu
+@@ -4712,7 +4712,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu
brport_nla_put_flag(skb, flags, mask,
IFLA_BRPORT_MCAST_FLOOD, BR_MCAST_FLOOD) ||
brport_nla_put_flag(skb, flags, mask,
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -4642,8 +4642,8 @@ static int mtk_probe(struct platform_dev
+@@ -4635,8 +4635,8 @@ static int mtk_probe(struct platform_dev
for (i = 0; i < num_ppe; i++) {
u32 ppe_addr = eth->soc->reg_map->ppe_base + i * 0x400;
if (!eth->ppe[i]) {
err = -ENOMEM;
goto err_free_dev;
-@@ -4770,6 +4770,7 @@ static const struct mtk_soc_data mt7622_
+@@ -4763,6 +4763,7 @@ static const struct mtk_soc_data mt7622_
.required_pctl = false,
.offload_version = 2,
.hash_offset = 2,
.foe_entry_size = sizeof(struct mtk_foe_entry) - 16,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
-@@ -4807,6 +4808,7 @@ static const struct mtk_soc_data mt7629_
+@@ -4800,6 +4801,7 @@ static const struct mtk_soc_data mt7629_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7629_CLKS_BITMAP,
.required_pctl = false,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4827,6 +4829,7 @@ static const struct mtk_soc_data mt7981_
+@@ -4820,6 +4822,7 @@ static const struct mtk_soc_data mt7981_
.offload_version = 2,
.hash_offset = 4,
.foe_entry_size = sizeof(struct mtk_foe_entry),
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma_v2),
.rxd_size = sizeof(struct mtk_rx_dma_v2),
-@@ -4847,6 +4850,7 @@ static const struct mtk_soc_data mt7986_
+@@ -4840,6 +4843,7 @@ static const struct mtk_soc_data mt7986_
.offload_version = 2,
.hash_offset = 4,
.foe_entry_size = sizeof(struct mtk_foe_entry),
/* set interrupt delays based on current Net DIM sample */
mtk_dim_rx(ð->rx_dim.work);
-@@ -4365,7 +4334,7 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4358,7 +4327,7 @@ static int mtk_add_mac(struct mtk_eth *e
eth->netdev[id]->hw_features |= NETIF_F_LRO;
eth->netdev[id]->vlan_features = eth->soc->hw_features &
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -3989,7 +3989,10 @@ static void mtk_sgmii_destroy(struct mtk
+@@ -3972,7 +3972,10 @@ static void mtk_sgmii_destroy(struct mtk
{
int i;
mtk_pcs_lynxi_destroy(eth->sgmii_pcs[i]);
}
-@@ -4432,7 +4435,12 @@ static int mtk_sgmii_init(struct mtk_eth
+@@ -4425,7 +4428,12 @@ static int mtk_sgmii_init(struct mtk_eth
u32 flags;
int i;
np = of_parse_phandle(eth->dev->of_node, "mediatek,sgmiisys", i);
if (!np)
break;
-@@ -4477,6 +4485,18 @@ static int mtk_probe(struct platform_dev
+@@ -4470,6 +4478,18 @@ static int mtk_probe(struct platform_dev
if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628))
eth->ip_align = NET_IP_ALIGN;
spin_lock_init(ð->page_lock);
spin_lock_init(ð->tx_irq_lock);
spin_lock_init(ð->rx_irq_lock);
-@@ -4662,7 +4682,7 @@ static int mtk_probe(struct platform_dev
+@@ -4655,7 +4675,7 @@ static int mtk_probe(struct platform_dev
goto err_free_dev;
}
if (!eth->netdev[i])
continue;
-@@ -4739,6 +4759,7 @@ static const struct mtk_soc_data mt2701_
+@@ -4732,6 +4752,7 @@ static const struct mtk_soc_data mt2701_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7623_CLKS_BITMAP,
.required_pctl = true,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4757,6 +4778,7 @@ static const struct mtk_soc_data mt7621_
+@@ -4750,6 +4771,7 @@ static const struct mtk_soc_data mt7621_
.required_pctl = false,
.offload_version = 1,
.hash_offset = 2,
.foe_entry_size = sizeof(struct mtk_foe_entry) - 16,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
-@@ -4778,6 +4800,7 @@ static const struct mtk_soc_data mt7622_
+@@ -4771,6 +4793,7 @@ static const struct mtk_soc_data mt7622_
.offload_version = 2,
.hash_offset = 2,
.has_accounting = true,
.foe_entry_size = sizeof(struct mtk_foe_entry) - 16,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
-@@ -4797,6 +4820,7 @@ static const struct mtk_soc_data mt7623_
+@@ -4790,6 +4813,7 @@ static const struct mtk_soc_data mt7623_
.required_pctl = true,
.offload_version = 1,
.hash_offset = 2,
.foe_entry_size = sizeof(struct mtk_foe_entry) - 16,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
-@@ -4816,6 +4840,7 @@ static const struct mtk_soc_data mt7629_
+@@ -4809,6 +4833,7 @@ static const struct mtk_soc_data mt7629_
.required_clks = MT7629_CLKS_BITMAP,
.required_pctl = false,
.has_accounting = true,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4837,6 +4862,7 @@ static const struct mtk_soc_data mt7981_
+@@ -4830,6 +4855,7 @@ static const struct mtk_soc_data mt7981_
.hash_offset = 4,
.foe_entry_size = sizeof(struct mtk_foe_entry),
.has_accounting = true,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma_v2),
.rxd_size = sizeof(struct mtk_rx_dma_v2),
-@@ -4856,6 +4882,7 @@ static const struct mtk_soc_data mt7986_
+@@ -4849,6 +4875,7 @@ static const struct mtk_soc_data mt7986_
.required_pctl = false,
.offload_version = 2,
.hash_offset = 4,
.foe_entry_size = sizeof(struct mtk_foe_entry),
.has_accounting = true,
.txrx = {
-@@ -4874,6 +4901,7 @@ static const struct mtk_soc_data rt5350_
+@@ -4867,6 +4894,7 @@ static const struct mtk_soc_data rt5350_
.hw_features = MTK_HW_FEATURES_MT7628,
.required_clks = MT7628_CLKS_BITMAP,
.required_pctl = false,
struct net_device *dev = eth->netdev[i];
mtk_w32(eth, MAC_MCR_FORCE_LINK_DOWN, MTK_MAC_MCR(i));
-@@ -3909,7 +3909,7 @@ static void mtk_pending_work(struct work
+@@ -3892,7 +3892,7 @@ static void mtk_pending_work(struct work
mtk_prepare_for_reset(eth);
/* stop all devices to make sure that dma is properly shut down */
if (!eth->netdev[i] || !netif_running(eth->netdev[i]))
continue;
-@@ -3925,7 +3925,7 @@ static void mtk_pending_work(struct work
+@@ -3908,7 +3908,7 @@ static void mtk_pending_work(struct work
mtk_hw_init(eth, true);
/* restart DMA and enable IRQs */
if (!test_bit(i, &restart))
continue;
-@@ -3953,7 +3953,7 @@ static int mtk_free_dev(struct mtk_eth *
+@@ -3936,7 +3936,7 @@ static int mtk_free_dev(struct mtk_eth *
{
int i;
if (!eth->netdev[i])
continue;
free_netdev(eth->netdev[i]);
-@@ -3972,7 +3972,7 @@ static int mtk_unreg_dev(struct mtk_eth
+@@ -3955,7 +3955,7 @@ static int mtk_unreg_dev(struct mtk_eth
{
int i;
struct mtk_mac *mac;
if (!eth->netdev[i])
continue;
-@@ -4277,7 +4277,7 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4259,7 +4259,7 @@ static int mtk_add_mac(struct mtk_eth *e
}
id = be32_to_cpup(_id);
dev_err(eth->dev, "%d is not a valid mac id\n", id);
return -EINVAL;
}
-@@ -4407,7 +4407,7 @@ void mtk_eth_set_dma_device(struct mtk_e
+@@ -4400,7 +4400,7 @@ void mtk_eth_set_dma_device(struct mtk_e
rtnl_lock();
dev = eth->netdev[i];
if (!dev || !(dev->flags & IFF_UP))
-@@ -4734,7 +4734,7 @@ static int mtk_remove(struct platform_de
+@@ -4727,7 +4727,7 @@ static int mtk_remove(struct platform_de
int i;
/* stop all devices to make sure that dma is properly shut down */
/* PSE should not drop port8 and port9 packets from WDMA Tx */
mtk_w32(eth, 0x00000300, PSE_DROP_CFG);
-@@ -4314,7 +4379,11 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4307,7 +4372,11 @@ static int mtk_add_mac(struct mtk_eth *e
}
spin_lock_init(&mac->hw_stats->stats_lock);
u64_stats_init(&mac->hw_stats->syncp);
data |= TX_DMA_SWC_V2 | QID_BITS_V2(info->qid);
WRITE_ONCE(desc->txd4, data);
-@@ -4964,6 +5065,25 @@ static const struct mtk_soc_data mt7986_
+@@ -4957,6 +5058,25 @@ static const struct mtk_soc_data mt7986_
},
};
static const struct mtk_soc_data rt5350_data = {
.reg_map = &mt7628_reg_map,
.caps = MT7628_CAPS,
-@@ -4982,14 +5102,15 @@ static const struct mtk_soc_data rt5350_
+@@ -4975,14 +5095,15 @@ static const struct mtk_soc_data rt5350_
};
const struct of_device_id of_mtk_match[] = {
mtk_w32(eth, val, MTK_PPSC);
dev_dbg(eth->dev, "MDC is running on %d Hz\n", MDC_MAX_FREQ / divider);
-@@ -4433,8 +4636,8 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4415,8 +4618,8 @@ static int mtk_add_mac(struct mtk_eth *e
const __be32 *_id = of_get_property(np, "reg", NULL);
phy_interface_t phy_mode;
struct phylink *phylink;
int txqs = 1;
if (!_id) {
-@@ -4525,6 +4728,32 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4518,6 +4721,32 @@ static int mtk_add_mac(struct mtk_eth *e
mac->phylink_config.supported_interfaces);
}
phylink = phylink_create(&mac->phylink_config,
of_fwnode_handle(mac->of_node),
phy_mode, &mtk_phylink_ops);
-@@ -4712,6 +4941,13 @@ static int mtk_probe(struct platform_dev
+@@ -4705,6 +4934,13 @@ static int mtk_probe(struct platform_dev
if (err)
return err;
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
-@@ -4347,6 +4347,15 @@ int skb_gro_receive(struct sk_buff *p, s
+@@ -4352,6 +4352,15 @@ int skb_gro_receive(struct sk_buff *p, s
if (unlikely(p->len + len >= 65536 || NAPI_GRO_CB(skb)->flush))
return -E2BIG;
spi-max-frequency = <24000000>;
};
};
-@@ -103,9 +129,48 @@
+@@ -102,6 +128,45 @@
+ status = "okay";
perst-gpio = <&tlmm 38 0x1>;
};
-
++
+ i2c0: i2c@78b7000 { /* BLSP1 QUP2 */
+ pinctrl-0 = <&i2c_0_pins>;
+ pinctrl-names = "default";
+
+ status = "okay";
+ };
-+
- qpic-nand@79b0000 {
- pinctrl-0 = <&nand_pins>;
- pinctrl-names = "default";
- };
+
+ usb3_ss_phy: ssphy@9a000 {
+ status = "okay";
+ };
};
};
+
},
[PORT_NPCM] = {
.name = "Nuvoton 16550",
-@@ -2766,6 +2766,11 @@ serial8250_do_set_termios(struct uart_po
+@@ -2763,6 +2763,11 @@ serial8250_do_set_termios(struct uart_po
unsigned long flags;
unsigned int baud, quot, frac = 0;
if (ret)
--- a/drivers/i2c/busses/i2c-qup.c
+++ b/drivers/i2c/busses/i2c-qup.c
-@@ -1878,7 +1878,7 @@ nodma:
+@@ -1885,7 +1885,7 @@ nodma:
qup->adap.dev.of_node = pdev->dev.of_node;
qup->is_last = true;
* managed to set the command line, unless CONFIG_CMDLINE_FORCE
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
-@@ -1942,6 +1942,14 @@ config CMDLINE_FORCE
+@@ -1983,6 +1983,14 @@ config CMDLINE_FORCE
endchoice
#include <linux/platform_data/x86/apple.h>
#include <linux/pm_runtime.h>
#include <linux/suspend.h>
-@@ -5854,3 +5855,34 @@ static void nvidia_ion_ahci_fixup(struct
+@@ -5856,3 +5857,34 @@ static void nvidia_ion_ahci_fixup(struct
pdev->dev_flags |= PCI_DEV_FLAGS_HAS_MSI_MASKING;
}
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fixup);
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -4633,6 +4633,7 @@ static const struct net_device_ops mtk_n
+@@ -4615,6 +4615,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;
-@@ -4791,6 +4792,9 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4784,6 +4785,9 @@ static int mtk_add_mac(struct mtk_eth *e
register_netdevice_notifier(&mac->device_notifier);
}
--- a/drivers/usb/dwc2/platform.c
+++ b/drivers/usb/dwc2/platform.c
-@@ -498,6 +498,12 @@ static int dwc2_driver_probe(struct plat
+@@ -508,6 +508,12 @@ static int dwc2_driver_probe(struct plat
if (retval)
return retval;