lede/target/linux/mvebu/patches-6.6/700-mvneta-tx-queue-workaround.patch

44 lines
1.4 KiB
Diff
Raw Normal View History

2025-05-10 23:30:03 +08:00
From: Felix Fietkau <nbd@nbd.name>
Subject: mvneta: tx queue workaround
2018-04-08 22:59:26 +08:00
The hardware queue scheduling is apparently configured with fixed
priorities, which creates a nasty fairness issue where traffic from one
CPU can starve traffic from all other CPUs.
Work around this issue by forcing all tx packets to go through one CPU,
until this issue is fixed properly.
2025-05-10 23:30:03 +08:00
Ref: https://github.com/openwrt/openwrt/issues/5411
2018-04-08 22:59:26 +08:00
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
2025-05-10 23:30:03 +08:00
@@ -5294,6 +5294,16 @@ static int mvneta_setup_tc(struct net_de
2022-09-13 19:25:12 +08:00
}
2018-04-08 22:59:26 +08:00
}
2022-09-13 19:25:12 +08:00
+#ifndef CONFIG_ARM64
2018-04-08 22:59:26 +08:00
+static u16 mvneta_select_queue(struct net_device *dev, struct sk_buff *skb,
2020-07-02 23:30:56 +08:00
+ struct net_device *sb_dev)
2018-04-08 22:59:26 +08:00
+{
+ /* XXX: hardware queue scheduling is broken,
+ * use only one queue until it is fixed */
+ return 0;
+}
2022-09-13 19:25:12 +08:00
+#endif
2018-04-08 22:59:26 +08:00
+
static const struct net_device_ops mvneta_netdev_ops = {
.ndo_open = mvneta_open,
.ndo_stop = mvneta_stop,
2025-05-10 23:30:03 +08:00
@@ -5304,6 +5314,9 @@ static const struct net_device_ops mvnet
2018-04-08 22:59:26 +08:00
.ndo_fix_features = mvneta_fix_features,
.ndo_get_stats64 = mvneta_get_stats64,
2022-09-13 19:25:12 +08:00
.ndo_eth_ioctl = mvneta_ioctl,
+#ifndef CONFIG_ARM64
2018-04-08 22:59:26 +08:00
+ .ndo_select_queue = mvneta_select_queue,
2022-09-13 19:25:12 +08:00
+#endif
.ndo_bpf = mvneta_xdp,
2020-07-02 23:30:56 +08:00
.ndo_xdp_xmit = mvneta_xdp_xmit,
2022-09-13 19:25:12 +08:00
.ndo_setup_tc = mvneta_setup_tc,