mirror of
https://github.com/openwrt/openwrt.git
synced 2025-02-20 17:32:57 +00:00
kernel: fix mtk_eth_soc issue when using secondary GMAC on MT7621/MT7622
The CDMQ ingress special tag flag needs to be set for 7986 even without DSA untag offload, otherwise tx checksum offload seems to break Fixes: 9b482ee22f3f ("kernel: add more fixes for mtk_eth_soc") Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
c1d1202e67
commit
3dff6b53db
@ -111,7 +111,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0);
|
err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0);
|
||||||
if (err) {
|
if (err) {
|
||||||
netdev_err(dev, "%s: could not attach PHY: %d\n", __func__,
|
netdev_err(dev, "%s: could not attach PHY: %d\n", __func__,
|
||||||
@@ -3215,6 +3160,39 @@ static int mtk_open(struct net_device *d
|
@@ -3215,6 +3160,35 @@ static int mtk_open(struct net_device *d
|
||||||
phylink_start(mac->phylink);
|
phylink_start(mac->phylink);
|
||||||
netif_tx_start_all_queues(dev);
|
netif_tx_start_all_queues(dev);
|
||||||
|
|
||||||
@ -141,17 +141,13 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
+ val &= ~MTK_CDMP_STAG_EN;
|
+ val &= ~MTK_CDMP_STAG_EN;
|
||||||
+ mtk_w32(eth, val, MTK_CDMP_IG_CTRL);
|
+ mtk_w32(eth, val, MTK_CDMP_IG_CTRL);
|
||||||
+
|
+
|
||||||
+ val = mtk_r32(eth, MTK_CDMQ_IG_CTRL);
|
|
||||||
+ val &= ~MTK_CDMQ_STAG_EN;
|
|
||||||
+ mtk_w32(eth, val, MTK_CDMQ_IG_CTRL);
|
|
||||||
+
|
|
||||||
+ mtk_w32(eth, 0, MTK_CDMP_EG_CTRL);
|
+ mtk_w32(eth, 0, MTK_CDMP_EG_CTRL);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3508,10 +3486,9 @@ static int mtk_hw_init(struct mtk_eth *e
|
@@ -3508,10 +3482,9 @@ static int mtk_hw_init(struct mtk_eth *e
|
||||||
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) {
|
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) {
|
||||||
val = mtk_r32(eth, MTK_CDMP_IG_CTRL);
|
val = mtk_r32(eth, MTK_CDMP_IG_CTRL);
|
||||||
mtk_w32(eth, val | MTK_CDMP_STAG_EN, MTK_CDMP_IG_CTRL);
|
mtk_w32(eth, val | MTK_CDMP_STAG_EN, MTK_CDMP_IG_CTRL);
|
||||||
@ -164,7 +160,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
/* set interrupt delays based on current Net DIM sample */
|
/* set interrupt delays based on current Net DIM sample */
|
||||||
mtk_dim_rx(ð->rx_dim.work);
|
mtk_dim_rx(ð->rx_dim.work);
|
||||||
@@ -4132,7 +4109,7 @@ static int mtk_add_mac(struct mtk_eth *e
|
@@ -4132,7 +4105,7 @@ static int mtk_add_mac(struct mtk_eth *e
|
||||||
eth->netdev[id]->hw_features |= NETIF_F_LRO;
|
eth->netdev[id]->hw_features |= NETIF_F_LRO;
|
||||||
|
|
||||||
eth->netdev[id]->vlan_features = eth->soc->hw_features &
|
eth->netdev[id]->vlan_features = eth->soc->hw_features &
|
||||||
|
@ -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
|
||||||
@@ -4021,6 +4021,7 @@ static const struct net_device_ops mtk_n
|
@@ -3994,6 +3994,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;
|
||||||
@@ -4149,6 +4150,9 @@ static int mtk_add_mac(struct mtk_eth *e
|
@@ -4122,6 +4123,9 @@ static int mtk_add_mac(struct mtk_eth *e
|
||||||
register_netdevice_notifier(&mac->device_notifier);
|
register_netdevice_notifier(&mac->device_notifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user