This commit allows each TXQ to be picked in a round-robin fashion by the PPv2 transmit scheduling mechanism. This is opposed to the default behaviour that prioritizes the highest numbered queues.
Unified · Split
| @@ -331,6 +331,7 @@ · 330 unmodified lines | |||
| 331 | #define MVPP2_TXP_SCHED_ENQ_MASK 0xff | 331 | #define MVPP2_TXP_SCHED_ENQ_MASK 0xff |
| 332 | #define MVPP2_TXP_SCHED_DISQ_OFFSET 8 | 332 | #define MVPP2_TXP_SCHED_DISQ_OFFSET 8 |
| 333 | #define MVPP2_TXP_SCHED_CMD_1_REG 0x8010 | 333 | #define MVPP2_TXP_SCHED_CMD_1_REG 0x8010 |
| 334 | #define MVPP2_TXP_SCHED_FIXED_PRIO_REG 0x8014 | ||
| 334 | #define MVPP2_TXP_SCHED_PERIOD_REG 0x8018 | 335 | #define MVPP2_TXP_SCHED_PERIOD_REG 0x8018 |
| 335 | #define MVPP2_TXP_SCHED_MTU_REG 0x801c | 336 | #define MVPP2_TXP_SCHED_MTU_REG 0x801c |
| 336 | #define MVPP2_TXP_MTU_MAX 0x7FFFF | 337 | #define MVPP2_TXP_MTU_MAX 0x7FFFF |
| @@ -1448,6 +1448,9 @@ static void mvpp2_defaults_set(struct mvpp2_port *port) · 1447 unmodified lines | |||
| 1448 | tx_port_num); | 1448 | tx_port_num); |
| 1449 | mvpp2_write(port->priv, MVPP2_TXP_SCHED_CMD_1_REG, 0); | 1449 | mvpp2_write(port->priv, MVPP2_TXP_SCHED_CMD_1_REG, 0); |
| 1450 | 1450 | ||
| 1451 | /* Set TXQ scheduling to Round-Robin */ | ||
| 1452 | mvpp2_write(port->priv, MVPP2_TXP_SCHED_FIXED_PRIO_REG, 0); | ||
| 1453 | |||
| 1451 | /* Close bandwidth for all queues */ | 1454 | /* Close bandwidth for all queues */ |
| 1452 | for (queue = 0; queue < MVPP2_MAX_TXQ; queue++) { | 1455 | for (queue = 0; queue < MVPP2_MAX_TXQ; queue++) { |
| 1453 | ptxq = mvpp2_txq_phys(port->id, queue); | 1456 | ptxq = mvpp2_txq_phys(port->id, queue); |