2 ms·
There are probably a couple of independent things: (1) HW GRO, most often LRO (TCP) (2) SW GRO aka GRO Hardware GRO was typically called LRO for TCP and is o
by majke 4y ago
There are probably a couple of independent things:
(1) HW GRO, most often LRO (TCP)
(2) SW GRO aka GRO
Hardware GRO was typically called LRO for TCP and is often disabled in practice. One reason is XDP, with XDP some offloads need to stay off. Another is device quirks: while idea of waiting for more data, and passing larger packets into kernel soiunds nice, it also means that device must do packet concatenation. Think about ECN or selective-acks. The concatentation is lossy and unless the flow is perfect, it might not be possible to concatenate packets. Furthermore devices often had issues with being too aggrressive and loosing important data.
In Linux there is a software approach that does kindof the same thing, but in software, called GRO, and this is often sufficient. It also supports more than just TCP.
In other words - having LRO disabled is common.