Skip to content

Commit

Permalink
net: mvneta: Remove per-cpu queue mapping for Armada 3700
Browse files Browse the repository at this point in the history
[ Upstream commit cf9bf87 ]

According to Errata linux-sunxi#23 "The per-CPU GbE interrupt is limited to Core
0", we can't use the per-cpu interrupt mechanism on the Armada 3700
familly.

This is correctly checked for RSS configuration, but the initial queue
mapping is still done by having the queues spread across all the CPUs in
the system, both in the init path and in the cpu_hotplug path.

Fixes: 2636ac3 ("net: mvneta: Add network support for Armada 3700 SoC")
Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
minimaxwell authored and gregkh committed Mar 4, 2021
1 parent f32a524 commit badce8f
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion drivers/net/ethernet/marvell/mvneta.c
Original file line number Diff line number Diff line change
Expand Up @@ -3432,7 +3432,9 @@ static int mvneta_txq_sw_init(struct mvneta_port *pp,
return -ENOMEM;

/* Setup XPS mapping */
if (txq_number > 1)
if (pp->neta_armada3700)
cpu = 0;
else if (txq_number > 1)
cpu = txq->id % num_present_cpus();
else
cpu = pp->rxq_def % num_present_cpus();
Expand Down Expand Up @@ -4210,6 +4212,11 @@ static int mvneta_cpu_online(unsigned int cpu, struct hlist_node *node)
node_online);
struct mvneta_pcpu_port *port = per_cpu_ptr(pp->ports, cpu);

/* Armada 3700's per-cpu interrupt for mvneta is broken, all interrupts
* are routed to CPU 0, so we don't need all the cpu-hotplug support
*/
if (pp->neta_armada3700)
return 0;

spin_lock(&pp->lock);
/*
Expand Down

0 comments on commit badce8f

Please sign in to comment.