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.
Signed-off-by: Jisheng Zhang <redacted>
Fixes: 2636ac3cc2b4 ("net: mvneta: Add network support for Armada 3700 SoC")
---
drivers/net/ethernet/marvell/mvneta.c | 31 +++++++++++++++++----------
1 file changed, 20 insertions(+), 11 deletions(-)
@@ -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){-structmvneta_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){+structmvneta_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){-structmvneta_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){+structmvneta_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);
From: Andrew Lunn <andrew@lunn.ch> Date: 2018-08-10 13:36:40
On Fri, Aug 10, 2018 at 11:36:27AM +0800, Jisheng Zhang wrote:
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.
Signed-off-by: Jisheng Zhang <redacted>
Fixes: 2636ac3cc2b4 ("net: mvneta: Add network support for Armada 3700 SoC")
Looks reasonable.
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
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.
Signed-off-by: Jisheng Zhang <redacted>
Fixes: 2636ac3cc2b4 ("net: mvneta: Add network support for Armada 3700 SoC")
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.
Signed-off-by: Jisheng Zhang <redacted>
Fixes: 2636ac3cc2b4 ("net: mvneta: Add network support for Armada 3700 SoC")
Applied, thanks.
Hi David
Please can you queue up:
Fixes: 7a86f05faf11 ("net: ethernet: mvneta: Fix napi structure mixup on armada 3700")
and this patch for stable.
Thanks
Andrew
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.
Signed-off-by: Jisheng Zhang <redacted>
Fixes: 2636ac3cc2b4 ("net: mvneta: Add network support for Armada 3700 SoC")
Applied, thanks.
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.