User`s guide

Chapter II. Network (NIC/TOE)
Chelsio T5/T4 Unified Wire For Linux Page 55
Interrupt Coalescing
The idea behind Interrupt Coalescing (IC) is to avoid flooding the host CPUs with too many
interrupts. Instead of throwing one interrupt per incoming packet, IC waits for ‘n’ packets to be
available in the Rx queues and placed into the host memory through DMA operations before an
interrupt is thrown, reducing the CPU load and thus improving latency. It can be changed using
the following command:
[root@host]# ethtool C ethX rx-frames n
Large Receive Offload / Generic Receive Offload
Large Receive Offload or Generic Receive Offload is a performance improvement feature at the
receiving side. LRO/GRO aggregates the received packets that belong to same stream, and
combines them to form a larger packet before pushing them to the receive host network stack.
By doing this, rather than processing every small packet, the receiver CPU works on fewer
packet headers but with same amount of data. This helps reduce the receive host CPU load and
improve throughput in a 10Gb network environment where CPU can be the bottleneck.
LRO and GRO are different names to refer to the same receiver packets aggregating feature.
LRO and GRO actually differ in their implementation of the feature in the Linux kernel. The
feature was first added into the Linux kernel in version 2.6.24 and named Large Receive Offload
(LRO). However LRO only works for TCP and IPv4. As from kernel 2.6.29, a new protocol-
independent implementation removing the limitation is added to Linux, and it is named Generic
Receive Offload (GRO). The old LRO code is still available in the kernel sources but whenever
both GRO and LRO are presented GRO is always the preferred one to use.
Please note that if your Linux system has IP forwarding enabled, i.e. acting as a bridge or
router, the LRO needs to be disabled. This is due to a known kernel issue.
Chelsio’s T5/T4 card supports both hardware assisted GRO/LRO and Linux-based GRO/LRO.
t4_tom is the kernel module that enables the hardware assisted GRO/LRO. If it is not already in
the kernel module list, use the following command to insert it:
For more information, run the following command:
[root@host]# ethtool -h
Note