Vincenzo, I'm using a tap interface and in the guest virtual device i see all offloading features are disabled, even though they are enabled in the physical device. Perhaps you can help? See below related information:
Bridge to the physical interface in the host: --------------------------------------------------------------------------- brctl addbr br0 brctl addif br0 eth3 --------------------------------------------------------------------------- /etc/qemu-ifup: --------------------------------------------------------------------------- #!/bin/sh set -x switch=br0 if [ -n "$1" ];then /usr/bin/sudo /usr/sbin/tunctl -u `whoami` -t $1 /usr/bin/sudo /sbin/ip link set $1 up sleep 0.5s /usr/bin/sudo /sbin/brctl addif $switch $1 exit 0 else echo "Error: no interface specified" exit 1 fi --------------------------------------------------------------------------- Activation command: --------------------------------------------------------------------------- qemu-system-arm -enable-kvm -M vexpress-a15 -serial /dev/ttyS1 -append 'root=/dev/vda rw console=ttyAMA0 rootwait earlyprintk' -nographic -kernel /guest/zImage_vexpress -dtb /guest/vexpress-v2p-ca15_a7.dtb -drive if=none,file=/guest/arm-wheezy.img,id=foo -device virtio-blk-device,drive=foo -device virtio-net-device,netdev=net0,mac=DE:AD:BE:EF:F4:E5 -netdev tap,id=net0 --------------------------------------------------------------------------- Physical interface features (ethtool -k eth3): --------------------------------------------------------------------------- Features for eth3: rx-checksumming: on tx-checksumming: on tx-checksum-ipv4: on tx-checksum-ip-generic: off [fixed] tx-checksum-ipv6: on tx-checksum-fcoe-crc: off [fixed] tx-checksum-sctp: off [fixed] scatter-gather: on tx-scatter-gather: on tx-scatter-gather-fraglist: off [fixed] tcp-segmentation-offload: on tx-tcp-segmentation: on tx-tcp-ecn-segmentation: on tx-tcp6-segmentation: on udp-fragmentation-offload: off [fixed] generic-segmentation-offload: on generic-receive-offload: on large-receive-offload: off [fixed] rx-vlan-offload: off [fixed] tx-vlan-offload: off [fixed] ntuple-filters: on receive-hashing: on highdma: on rx-vlan-filter: off [fixed] vlan-challenged: off [fixed] tx-lockless: off [fixed] netns-local: off [fixed] tx-gso-robust: off [fixed] tx-fcoe-segmentation: off [fixed] tx-gre-segmentation: off [fixed] tx-udp_tnl-segmentation: off [fixed] fcoe-mtu: off [fixed] tx-nocache-copy: on loopback: off [fixed] rx-fcs: off [fixed] rx-all: off [fixed] tx-vlan-stag-hw-insert: off [fixed] rx-vlan-stag-hw-parse: off [fixed] rx-vlan-stag-filter: off [fixed] --------------------------------------------------------------------------- Virtual device features in the guest (ethtool -k eth0): --------------------------------------------------------------------------- Features for eth0: rx-checksumming: off [fixed] tx-checksumming: off tx-checksum-ipv4: off [fixed] tx-checksum-ip-generic: off [fixed] tx-checksum-ipv6: off [fixed] tx-checksum-fcoe-crc: off [fixed] tx-checksum-sctp: off [fixed] scatter-gather: off tx-scatter-gather: off [fixed] tx-scatter-gather-fraglist: off [fixed] tcp-segmentation-offload: off tx-tcp-segmentation: off [fixed] tx-tcp-ecn-segmentation: off [fixed] tx-tcp6-segmentation: off [fixed] udp-fragmentation-offload: off [fixed] generic-segmentation-offload: off [requested on] generic-receive-offload: on large-receive-offload: off [fixed] rx-vlan-offload: off [fixed] tx-vlan-offload: off [fixed] ntuple-filters: off [fixed] receive-hashing: off [fixed] highdma: on [fixed] rx-vlan-filter: off [fixed] vlan-challenged: off [fixed] tx-lockless: off [fixed] netns-local: off [fixed] tx-gso-robust: off [fixed] tx-fcoe-segmentation: off [fixed] tx-gre-segmentation: off [fixed] tx-ipip-segmentation: off [fixed] tx-sit-segmentation: off [fixed] tx-udp_tnl-segmentation: off [fixed] tx-mpls-segmentation: off [fixed] fcoe-mtu: off [fixed] tx-nocache-copy: off loopback: off [fixed] rx-fcs: off [fixed] rx-all: off [fixed] tx-vlan-stag-hw-insert: off [fixed] rx-vlan-stag-hw-parse: off [fixed] rx-vlan-stag-filter: off [fixed] l2-fwd-offload: off [fixed] --------------------------------------------------------------------------- Regards, Barak On Tue, Jan 14, 2014 at 12:59 PM, Vincenzo Maffione <v.maffi...@gmail.com>wrote: > The purpose of this patch series is to add offloadings support > (TSO/UFO/CSUM) to the netmap network backend, and make it possible > for the paravirtual network frontends (virtio-net and vmxnet3) to > use it. > In order to achieve this, these patches extend the existing > net.h interface to add abstract operations through which a network > frontend can manipulate backend offloading features, instead of > directly calling TAP-specific functions. > > Guest-to-guest performance before this patches for virtio-net + netmap: > > TCP_STREAM 5.0 Gbps > TCP_RR 12.7 Gbps > UDP_STREAM (64-bytes) 790 Kpps > > Guest-to-guest performance after this patches for virtio-net + netmap: > > TCP_STREAM 21.4 Gbps > TCP_RR 12.7 Gbps > UDP_STREAM (64-bytes) 790 Kpps > > Experiment details: > - Processor: Intel i7-3770K CPU @ 3.50GHz (8 cores) > - Memory @ 1333 MHz > - Host O.S.: Archlinux with Linux 3.11 > - Guest O.S.: Archlinux with Linux 3.11 > > - QEMU command line: > qemu-system-x86_64 archdisk.qcow -snapshot -enable-kvm -device > virtio-net-pci,ioeventfd=on,mac=00:AA:BB:CC:DD:01,netdev=mynet -netdev > netmap,ifname=vale0:01,id=mynet -smp 2 -vga std -m 3G > > > ******** Changes against the previous version *********** > (1) The first two commits were not included into the previous version. They > are used to clean the TAP interface before the offloadings manipulation > API is introduced. > > (2) The fifth commit merges two commits from the previous version: 3/5 > "virtio-net and > vmxnet3 use offloading API" and 5/5 "virtio-net and vmxnet3 can use > netmap offloadings". > This because of (3). > > (3) There is actually an important problem. In the previous patch version, > TCP/UDP traffic was > supported between two guests attached to a VALE switch if and only if > both guests use (or > don't) the same offloadings: e.g. two virtio-net guests or two e1000 > guests. This is why > in this version I put the commit which adds the support for netmap as > the last one and > I temporarily disable the offloading feature (e.g. > netmap_has_vnet_hdr() returns false). > We are working at adding proper support also in the general case in > which there is > a mismatch between the NIC offloadings capabilities. As soon as we > have proper support, > we can enable it in net/netmap.c. > What do you think about that? What's the best way to manage this > temporary lack of > support? > > > Vincenzo Maffione (6): > net: change vnet-hdr TAP prototypes > net: removing tap_using_vnet_hdr() function > net: extend NetClientInfo for offloading manipulations > net: TAP uses NetClientInfo offloading callbacks > net: virtio-net and vmxnet3 use offloading API > net: add offloadings support to netmap backend > > hw/net/virtio-net.c | 18 +++++----------- > hw/net/vmxnet3.c | 12 ++++------- > include/net/net.h | 17 +++++++++++++++ > include/net/tap.h | 5 ++--- > net/net.c | 46 +++++++++++++++++++++++++++++++++++++++++ > net/netmap.c | 59 > ++++++++++++++++++++++++++++++++++++++++++++++++++++- > net/tap-win32.c | 12 ++++------- > net/tap.c | 22 ++++++++------------ > 8 files changed, 145 insertions(+), 46 deletions(-) > > -- > 1.8.5.2 > > >