8e51bdd6237f9e750929b3aec29421cc83d1cb9c
[openwrt/staging/wigyori.git] / target / linux / mediatek / patches-4.9 / 0094-net-affinity.patch
1 Index: linux-4.9.17/drivers/net/ethernet/mediatek/mtk_eth_soc.c
2 ===================================================================
3 --- linux-4.9.17.orig/drivers/net/ethernet/mediatek/mtk_eth_soc.c
4 +++ linux-4.9.17/drivers/net/ethernet/mediatek/mtk_eth_soc.c
5 @@ -2459,15 +2459,23 @@ static int mtk_probe(struct platform_dev
6 goto err_deinit_hw;
7 }
8
9 + for (i = 0; i < 3; i++) {
10 + int cpu = i % num_online_cpus();
11 +
12 + cpumask_set_cpu(cpu, &eth->affinity_mask[i]);
13 + }
14 +
15 err = devm_request_irq(eth->dev, eth->irq[1], mtk_handle_irq_tx, 0,
16 dev_name(eth->dev), eth);
17 if (err)
18 goto err_free_dev;
19 + irq_set_affinity_hint(eth->irq[1], &eth->affinity_mask[1]);
20
21 err = devm_request_irq(eth->dev, eth->irq[2], mtk_handle_irq_rx, 0,
22 dev_name(eth->dev), eth);
23 if (err)
24 goto err_free_dev;
25 + irq_set_affinity_hint(eth->irq[2], &eth->affinity_mask[2]);
26
27 err = mtk_mdio_init(eth);
28 if (err)
29 Index: linux-4.9.17/drivers/net/ethernet/mediatek/mtk_eth_soc.h
30 ===================================================================
31 --- linux-4.9.17.orig/drivers/net/ethernet/mediatek/mtk_eth_soc.h
32 +++ linux-4.9.17/drivers/net/ethernet/mediatek/mtk_eth_soc.h
33 @@ -539,6 +539,7 @@ struct mtk_eth {
34 struct net_device *netdev[MTK_MAX_DEVS];
35 struct mtk_mac *mac[MTK_MAX_DEVS];
36 int irq[3];
37 + cpumask_t affinity_mask[3];
38 u32 msg_enable;
39 unsigned long sysclk;
40 struct regmap *ethsys;