diff options
author | Maxime Chevallier <maxime.chevallier@bootlin.com> | 2018-09-24 11:11:05 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-09-24 10:01:10 -0700 |
commit | 0d283ab5b4fdbcd6bde4505863010b6008b6f048 (patch) | |
tree | 92e0b1f6bfa23cac5bee0ad04c95dd532df4225d /drivers/net | |
parent | mlxsw: Make MLXSW_SP1_FWREV_MINOR a hard requirement (diff) | |
download | linux-dev-0d283ab5b4fdbcd6bde4505863010b6008b6f048.tar.xz linux-dev-0d283ab5b4fdbcd6bde4505863010b6008b6f048.zip |
net: mvpp2: support XPS by mapping TX queues to CPUs
Since the PPv2 controller has multiple TX queues, we can spread traffic
by assining TX queues to CPUs, allowing to use XPS to balance egress
traffic between CPUs.
Suggested-by : Yan Markman <ymarkman@marvell.com>
Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c index d30ccc515bb7..bdacb9577216 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c @@ -2423,13 +2423,17 @@ err_cleanup: static int mvpp2_setup_txqs(struct mvpp2_port *port) { struct mvpp2_tx_queue *txq; - int queue, err; + int queue, err, cpu; for (queue = 0; queue < port->ntxqs; queue++) { txq = port->txqs[queue]; err = mvpp2_txq_init(port, txq); if (err) goto err_cleanup; + + /* Assign this queue to a CPU */ + cpu = queue % num_present_cpus(); + netif_set_xps_queue(port->dev, cpumask_of(cpu), queue); } if (port->has_tx_irqs) { |