|
@@ -1448,6 +1448,9 @@ static void mvpp2_defaults_set(struct mvpp2_port *port)
|
|
tx_port_num);
|
|
tx_port_num);
|
|
mvpp2_write(port->priv, MVPP2_TXP_SCHED_CMD_1_REG, 0);
|
|
mvpp2_write(port->priv, MVPP2_TXP_SCHED_CMD_1_REG, 0);
|
|
|
|
|
|
|
|
+ /* Set TXQ scheduling to Round-Robin */
|
|
|
|
+ mvpp2_write(port->priv, MVPP2_TXP_SCHED_FIXED_PRIO_REG, 0);
|
|
|
|
+
|
|
/* Close bandwidth for all queues */
|
|
/* Close bandwidth for all queues */
|
|
for (queue = 0; queue < MVPP2_MAX_TXQ; queue++) {
|
|
for (queue = 0; queue < MVPP2_MAX_TXQ; queue++) {
|
|
ptxq = mvpp2_txq_phys(port->id, queue);
|
|
ptxq = mvpp2_txq_phys(port->id, queue);
|
|
@@ -2423,13 +2426,17 @@ err_cleanup:
|
|
static int mvpp2_setup_txqs(struct mvpp2_port *port)
|
|
static int mvpp2_setup_txqs(struct mvpp2_port *port)
|
|
{
|
|
{
|
|
struct mvpp2_tx_queue *txq;
|
|
struct mvpp2_tx_queue *txq;
|
|
- int queue, err;
|
|
|
|
|
|
+ int queue, err, cpu;
|
|
|
|
|
|
for (queue = 0; queue < port->ntxqs; queue++) {
|
|
for (queue = 0; queue < port->ntxqs; queue++) {
|
|
txq = port->txqs[queue];
|
|
txq = port->txqs[queue];
|
|
err = mvpp2_txq_init(port, txq);
|
|
err = mvpp2_txq_init(port, txq);
|
|
if (err)
|
|
if (err)
|
|
goto err_cleanup;
|
|
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) {
|
|
if (port->has_tx_irqs) {
|