|
@@ -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);
|