Re: [PATCH net v2] virtio-net: don't disable guest csum when disable LRO
From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Date: 2020-09-29 08:39:40
Also in:
virtualization
On Tue, Sep 29, 2020 at 9:56 AM Tonghao Zhang [off-list ref] wrote:
On Tue, Sep 29, 2020 at 3:32 PM Willem de Bruijn [off-list ref] wrote:quoted
On Tue, Sep 29, 2020 at 4:00 AM [off-list ref] wrote:quoted
From: Tonghao Zhang <redacted> Open vSwitch and Linux bridge will disable LRO of the interface when this interface added to them. Now when disable the LRO, the virtio-net csum is disable too. That drops the forwarding performance.I had focused on the code previously. The s/w checksum verification cost is significant in a VM with traffic to local destinations. A bridge does not verify transport layer checksums OTOH?Hi Willem. No, think about GRO(In the GRO we don't know packets will be forwarded to other ports or to local).
I had expected a pure bridging setup that disables LRO to disable GRO as well. But if not, then, indeed, the checksum needs to be verified before coalescing. Makes sense.
The call tree as below:
+ 5.41% secondary_startup_64
- 1.22% ret_from_fork
....
net_rx_action
napi_poll
virtnet_poll
virtnet_receive
napi_gro_receive
dev_gro_receive
inet_gro_receive
tcp4_gro_receive
__skb_gro_checksum_complete
skb_checksum
__skb_checksum
csum_partial
do_csum
- 1.13% do_csum
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.001122330001 no eth1
eth2