[PATCH net-next 13/18] net: mvpp2: make sure we don't spread load on disabled CPUs

From: Maxime Chevallier
Date: Thu Jul 12 2018 - 07:55:00 EST


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@xxxxxxxxxxx>
---
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

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.
*/
--
2.11.0