aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/marvell/mvpp2
diff options
context:
space:
mode:
authorMaxime Chevallier <maxime.chevallier@bootlin.com>2018-07-12 13:54:22 +0200
committerDavid S. Miller <davem@davemloft.net>2018-07-12 17:30:48 -0700
commit2a2f467daf96f519f9d2ec69e133ad1365d3e8ff (patch)
tree731934d634c2eed16370233bd37f27c526866ebb /drivers/net/ethernet/marvell/mvpp2
parentnet: mvpp2: improve the distribution of packets on CPUs when using RSS (diff)
downloadlinux-dev-2a2f467daf96f519f9d2ec69e133ad1365d3e8ff.tar.xz
linux-dev-2a2f467daf96f519f9d2ec69e133ad1365d3e8ff.zip
net: mvpp2: make sure we don't spread load on disabled CPUs
When filling the RSS table, we have to make sure that the rx queue is attached to an online CPU. This patch is not a full support for cpu_hotplug, but rather a way to make sure that we don't break network on system booted with the maxcpus parameter. Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/marvell/mvpp2')
-rw-r--r--drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
index 7dafc8c425b8..f2bcfa8f1dfd 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
@@ -109,11 +109,17 @@ void mvpp2_cls_oversize_rxq_set(struct mvpp2_port *port)
static inline u32 mvpp22_rxfh_indir(struct mvpp2_port *port, u32 rxq)
{
- int nrxqs, cpus = num_possible_cpus();
+ int nrxqs, cpu, cpus = num_possible_cpus();
/* Number of RXQs per CPU */
nrxqs = port->nrxqs / cpus;
+ /* CPU that will handle this rx queue */
+ cpu = rxq / nrxqs;
+
+ if (!cpu_online(cpu))
+ return port->first_rxq;
+
/* Indirection to better distribute the paquets on the CPUs when
* configuring the RSS queues.
*/