• Vlad Yasevich's avatar
    macvlan: Add support for 'always_on' offload features · 8b4703e9
    Vlad Yasevich authored
    Macvlan currently inherits all of its features from the lower
    device.  When lower device disables offload support, this causes
    macvlan to disable offload support as well.  This causes
    performance regression when using macvlan/macvtap in bridge
    mode.
    
    It can be easily demonstrated by creating 2 namespaces using
    macvlan in bridge mode and running netperf between them:
    
    MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.0.0.1 () port 0 AF_INET
    Recv   Send    Send
    Socket Socket  Message  Elapsed
    Size   Size    Size     Time     Throughput
    bytes  bytes   bytes    secs.    10^6bits/sec
    
     87380  16384  16384    20.00    1204.61
    
    To restore the performance, we add software offload features
    to the list of "always_on" features for macvlan.  This way
    when a namespace or a guest using macvtap initially sends a
    packet, this packet will not be segmented at macvlan level.
    It will only be segmented when macvlan sends the packet
    to the lower device.
    
    MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.0.0.1 () port 0 AF_INET
    Recv   Send    Send
    Socket Socket  Message  Elapsed
    Size   Size    Size     Time     Throughput
    bytes  bytes   bytes    secs.    10^6bits/sec
    
     87380  16384  16384    20.00    5507.35
    
    Fixes: 6acf54f1 (macvtap: Add support of packet capture on macvtap device.)
    Fixes: 797f87f8 (macvlan: fix netdev feature propagation from lower device)
    CC: Florian Westphal <fw@strlen.de>
    CC: Christian Borntraeger <borntraeger@de.ibm.com>
    CC: Jason Wang <jasowang@redhat.com>
    CC: Michael S. Tsirkin <mst@redhat.com>
    Tested-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: default avatarVlad Yasevich <vyasevic@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8b4703e9
macvlan.c 27.1 KB