Transmit queues

For transmit, the device drivers can provide a transmit queue limit.

There can be both hardware queue and software queue limits, depending on the driver and adapter. Some drivers have only a hardware queue; some have both hardware and software queues. Some drivers internally control the hardware queue and only allow the software queue limits to be modified. Generally, the device driver will queue a transmit packet directly to the adapter hardware queue. If the system CPU is fast relative to the speed of the network, or on an SMP system, the system may produce transmit packets faster than they can be transmitted over the network. This will cause the hardware queue to fill.

After the hardware queue is full, some drivers provide a software queue and they will then queue to the software queue. If the software transmit queue limit is reached, then the transmit packets are discarded. This can affect performance because the upper-level protocols must then time out and retransmit the packet. At some point, however, the adapter must discard packets as providing too much space can result in stale packets being sent.

Table 1. Examples of PCI adapter transmit queue sizes
Adapter Type Feature Code ODM attribute Default value Range
IBM® 10/100 Mbps Ethernet PCI Adapter 2968 tx_que_size 8192 16-16384
10/100 Mbps Ethernet Adapter II 4962 tx_que_sz 8192 512-16384
Gigabit Ethernet PCI (SX or TX) 2969, 2975 tx_que_size 8192 512-16384
Gigabit Ethernet PCI (SX or TX) 5700, 5701, 5706, 5707 tx_que_sz 8192 512-16384
10 Gigabit Ethernet PCI-X (LR or SR) 5718, 5719 tx_que_sz 8192 512-16384
ATM 155 (MMF or UTP) 4953, 4957 sw_txq_size 2048 50-16384
ATM 622 (MMF) 2946 sw_txq_size 2048 128-32768
FDDI 2741, 2742, 2743 tx_queue_size 256 3-2048

For adapters that provide hardware queue limits, changing these values will cause more real memory to be consumed on receives because of the control blocks and buffers associated with them. Therefore, raise these limits only if needed or for larger systems where the increase in memory use is negligible. For the software transmit queue limits, increasing these limits does not increase memory usage. It only allows packets to be queued that were already allocated by the higher layer protocols.