diff options
author | Maxime Chevallier <maxime.chevallier@bootlin.com> | 2018-07-12 13:54:22 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-07-12 17:30:48 -0700 |
commit | 2a2f467daf96f519f9d2ec69e133ad1365d3e8ff (patch) | |
tree | 731934d634c2eed16370233bd37f27c526866ebb | |
parent | 662ae3fe65000a6b7ceeed1ecf510346d8fec447 (diff) |
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>
-rw-r--r-- | drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c | 8 |
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. */ |