OpenWrt – Blame information for rev 4
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
4 | office | 1 | The hardware queue scheduling is apparently configured with fixed |
2 | priorities, which creates a nasty fairness issue where traffic from one |
||
3 | CPU can starve traffic from all other CPUs. |
||
4 | |||
5 | Work around this issue by forcing all tx packets to go through one CPU, |
||
6 | until this issue is fixed properly. |
||
7 | |||
8 | Signed-off-by: Felix Fietkau <nbd@nbd.name> |
||
9 | --- |
||
10 | --- a/drivers/net/ethernet/marvell/mvneta.c |
||
11 | +++ b/drivers/net/ethernet/marvell/mvneta.c |
||
12 | @@ -3962,6 +3962,15 @@ static int mvneta_ethtool_set_wol(struct |
||
13 | return ret; |
||
14 | } |
||
15 | |||
16 | +static u16 mvneta_select_queue(struct net_device *dev, struct sk_buff *skb, |
||
17 | + void *accel_priv, |
||
18 | + select_queue_fallback_t fallback) |
||
19 | +{ |
||
20 | + /* XXX: hardware queue scheduling is broken, |
||
21 | + * use only one queue until it is fixed */ |
||
22 | + return 0; |
||
23 | +} |
||
24 | + |
||
25 | static const struct net_device_ops mvneta_netdev_ops = { |
||
26 | .ndo_open = mvneta_open, |
||
27 | .ndo_stop = mvneta_stop, |
||
28 | @@ -3972,6 +3981,7 @@ static const struct net_device_ops mvnet |
||
29 | .ndo_fix_features = mvneta_fix_features, |
||
30 | .ndo_get_stats64 = mvneta_get_stats64, |
||
31 | .ndo_do_ioctl = mvneta_ioctl, |
||
32 | + .ndo_select_queue = mvneta_select_queue, |
||
33 | }; |
||
34 | |||
35 | static const struct ethtool_ops mvneta_eth_tool_ops = { |