net: mvneta: fix mvneta_config_rss on armada 3700
Subsystems (3)
PATCH 1/1 net: mvneta: fix mvneta_config_rss on armada 3700
The mvneta Ethernet driver is used on a few different Marvell SoCs. Some SoCs have per cpu interrupts for Ethernet events, the driver uses a per CPU napi structure for this case. Some SoCs such as armada 3700 have a single interrupt for Ethernet events, the driver uses a global napi structure for this case.
Current mvneta_config_rss() always operates the per cpu napi structure. Fix it by operating a global napi for "single interrupt" case, and per cpu napi structure for remaining cases.
--- drivers/net/ethernet/marvell/mvneta.c | 31 +++++++++++++++++---------- 1 file changed, 20 insertions(+), 11 deletions(-)
drivers/net/ethernet/marvell/mvneta.c +20 -11
@@ -4107,13 +4107,18 @@ static int mvneta_config_rss(struct mvneta_port *pp)on_each_cpu (mvneta_percpu_mask_interrupt, pp, true); -/* We have to synchronise on the napi of each CPU */ -for_each_online_cpu (cpu) { -struct mvneta_pcpu_port *pcpu_port = -per_cpu_ptr (pp->ports, cpu); +if (!pp->neta_armada3700) { +/* We have to synchronise on the napi of each CPU */ +for_each_online_cpu (cpu) { +struct mvneta_pcpu_port *pcpu_port = +per_cpu_ptr (pp->ports, cpu); -napi_synchronize (&pcpu_port->napi); -napi_disable (&pcpu_port->napi); +napi_synchronize (&pcpu_port->napi); +napi_disable (&pcpu_port->napi); + } + }else { +napi_synchronize (&pp->napi); +napi_disable (&pp->napi); } pp->rxq_def = pp->indir[0 ];
@@ -4130,12 +4135,16 @@ static int mvneta_config_rss(struct mvneta_port *pp)mvneta_percpu_elect (pp);spin_unlock (&pp->lock); -/* We have to synchronise on the napi of each CPU */ -for_each_online_cpu (cpu) { -struct mvneta_pcpu_port *pcpu_port = -per_cpu_ptr (pp->ports, cpu); +if (!pp->neta_armada3700) { +/* We have to synchronise on the napi of each CPU */ +for_each_online_cpu (cpu) { +struct mvneta_pcpu_port *pcpu_port = +per_cpu_ptr (pp->ports, cpu); -napi_enable (&pcpu_port->napi); +napi_enable (&pcpu_port->napi); + } + }else { +napi_enable (&pp->napi); }netif_tx_start_all_queues (pp->dev);
Signature · 1 line
2.18.0
Quoted 6 lines · Jisheng Zhang
The mvneta Ethernet driver is used on a few different Marvell SoCs. Some SoCs have per cpu interrupts for Ethernet events, the driver uses a per CPU napi structure for this case. Some SoCs such as armada 3700 have a single interrupt for Ethernet events, the driver uses a global napi structure for this case.
Quoted 6 lines
Current
mvneta_config_rss()always operates the per cpu napi structure. Fix it by operating a global napi for "single interrupt" case, and per cpu napi structure for remaining cases.Signed-off-by Jisheng Zhang <[email protected]>Fixes 2636ac3cc2b4 ("net: mvneta: Add network support for Armada 3700 SoC")
Looks reasonable.
Andrew
From: Jisheng Zhang <[email protected]>
Date: Fri, 10 Aug 2018 11:36:27 +0800
Quoted 6 lines
The mvneta Ethernet driver is used on a few different Marvell SoCs. Some SoCs have per cpu interrupts for Ethernet events, the driver uses a per CPU napi structure for this case. Some SoCs such as armada 3700 have a single interrupt for Ethernet events, the driver uses a global napi structure for this case.
Quoted 6 lines
Current
mvneta_config_rss()always operates the per cpu napi structure. Fix it by operating a global napi for "single interrupt" case, and per cpu napi structure for remaining cases.Signed-off-by Jisheng Zhang <[email protected]>Fixes 2636ac3cc2b4 ("net: mvneta: Add network support for Armada 3700 SoC")
Applied, thanks.
Quoted 9 lines · David Miller
From: Jisheng Zhang <[email protected]>
Date: Fri, 10 Aug 2018 11:36:27 +0800Quoted 6 lines
The mvneta Ethernet driver is used on a few different Marvell SoCs. Some SoCs have per cpu interrupts for Ethernet events, the driver uses a per CPU napi structure for this case. Some SoCs such as armada 3700 have a single interrupt for Ethernet events, the driver uses a global napi structure for this case.
Quoted 8 lines
Quoted 6 lines
Current
mvneta_config_rss()always operates the per cpu napi structure. Fix it by operating a global napi for "single interrupt" case, and per cpu napi structure for remaining cases.Signed-off-by Jisheng Zhang <[email protected]>Fixes 2636ac3cc2b4 ("net: mvneta: Add network support for Armada 3700 SoC")Applied, thanks.
Hi David
Please can you queue up:
and this patch for stable.
Thanks
Andrew
David Miller
maintainerFrom: Andrew Lunn <[email protected]>
Date: Sat, 11 Aug 2018 00:23:35 +0200
Quoted 19 lines · David Miller
Quoted 9 lines
From: Jisheng Zhang <[email protected]>
Date: Fri, 10 Aug 2018 11:36:27 +0800Quoted 6 lines
The mvneta Ethernet driver is used on a few different Marvell SoCs. Some SoCs have per cpu interrupts for Ethernet events, the driver uses a per CPU napi structure for this case. Some SoCs such as armada 3700 have a single interrupt for Ethernet events, the driver uses a global napi structure for this case.
Quoted 8 lines
Quoted 6 lines
Current
mvneta_config_rss()always operates the per cpu napi structure. Fix it by operating a global napi for "single interrupt" case, and per cpu napi structure for remaining cases.Signed-off-by Jisheng Zhang <[email protected]>Fixes 2636ac3cc2b4 ("net: mvneta: Add network support for Armada 3700 SoC")Applied, thanks.
Quoted 7 lines
Hi David
Please can you queue up:
Fixes 7a86f05faf11 ("net: ethernet: mvneta: Fix napi structure mixup on armada 3700")and this patch for stable.
If you want things to go to -stable, don't mark them for net-next as this patch was.
If it isn't appropriate for 'net' it isn't appropriate for -stable either.
David Miller
maintainerFrom: Andrew Lunn <[email protected]>
Date: Sat, 11 Aug 2018 00:23:35 +0200
Quoted 5 lines
Please can you queue up:
Fixes 7a86f05faf11 ("net: ethernet: mvneta: Fix napi structure mixup on armada 3700")and this patch for stable.
Since these are now both in Linus's tree, done.
But, if one thinks the change belongs in -stable, target 'net' always.