- implement multiqueue via qdma hardware shaper to deal with ports with different speeds - implement hardware DSA untagging - add NETIF_F_ALL_TSO to reduce unnecessary segmentation Signed-off-by: Felix Fietkau <nbd@nbd.name>
52 lines
1.9 KiB
Diff
52 lines
1.9 KiB
Diff
From: Felix Fietkau <nbd@nbd.name>
|
|
Date: Fri, 4 Nov 2022 19:49:08 +0100
|
|
Subject: [PATCH] net: ethernet: mtk_eth_soc: avoid port_mg assignment on
|
|
MT7622 and newer
|
|
|
|
On newer chips, this field is unused and contains some bits related to queue
|
|
assignment. Initialize it to 0 in those cases.
|
|
Fix offload_version on MT7621 and MT7623, which still need the previous value.
|
|
|
|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
---
|
|
|
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
|
@@ -4197,7 +4197,7 @@ static const struct mtk_soc_data mt7621_
|
|
.hw_features = MTK_HW_FEATURES,
|
|
.required_clks = MT7621_CLKS_BITMAP,
|
|
.required_pctl = false,
|
|
- .offload_version = 2,
|
|
+ .offload_version = 1,
|
|
.hash_offset = 2,
|
|
.foe_entry_size = sizeof(struct mtk_foe_entry) - 16,
|
|
.txrx = {
|
|
@@ -4237,7 +4237,7 @@ static const struct mtk_soc_data mt7623_
|
|
.hw_features = MTK_HW_FEATURES,
|
|
.required_clks = MT7623_CLKS_BITMAP,
|
|
.required_pctl = true,
|
|
- .offload_version = 2,
|
|
+ .offload_version = 1,
|
|
.hash_offset = 2,
|
|
.foe_entry_size = sizeof(struct mtk_foe_entry) - 16,
|
|
.txrx = {
|
|
--- a/drivers/net/ethernet/mediatek/mtk_ppe.c
|
|
+++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
|
|
@@ -215,6 +215,8 @@ int mtk_foe_entry_prepare(struct mtk_eth
|
|
val = FIELD_PREP(MTK_FOE_IB2_DEST_PORT_V2, pse_port) |
|
|
FIELD_PREP(MTK_FOE_IB2_PORT_AG_V2, 0xf);
|
|
} else {
|
|
+ int port_mg = eth->soc->offload_version > 1 ? 0 : 0x3f;
|
|
+
|
|
val = FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_BIND) |
|
|
FIELD_PREP(MTK_FOE_IB1_PACKET_TYPE, type) |
|
|
FIELD_PREP(MTK_FOE_IB1_UDP, l4proto == IPPROTO_UDP) |
|
|
@@ -222,7 +224,7 @@ int mtk_foe_entry_prepare(struct mtk_eth
|
|
entry->ib1 = val;
|
|
|
|
val = FIELD_PREP(MTK_FOE_IB2_DEST_PORT, pse_port) |
|
|
- FIELD_PREP(MTK_FOE_IB2_PORT_MG, 0x3f) |
|
|
+ FIELD_PREP(MTK_FOE_IB2_PORT_MG, port_mg) |
|
|
FIELD_PREP(MTK_FOE_IB2_PORT_AG, 0x1f);
|
|
}
|
|
|