Thread (11 messages) 11 messages, 4 authors, 2020-09-29

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help