qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 00/19]
@ 2009-10-21 11:27 Mark McLoughlin
  2009-10-21 11:27 ` [Qemu-devel] [PATCH 01/19] net: remove unused includes of if_tun.h and if_tap.h Mark McLoughlin
                   ` (18 more replies)
  0 siblings, 19 replies; 21+ messages in thread
From: Mark McLoughlin @ 2009-10-21 11:27 UTC (permalink / raw)
  To: qemu-devel


Hey,
        Over a year ago we added some code to qemu-kvm.git which takes
advantage of the recent tun/tap IFF_VNET_HDR feature in order to allow
virtio-net to send and receive packets with partial checksums and
segmentation offloaded:

  http://article.gmane.org/gmane.comp.emulators.kvm.devel/20440

  "This allows us to pass larger packets and packets with
  partial checkums between the guest and the host, greatly
  increasing the achievable bandwidth."

        Unfortunately, that implementation was quite hacky as it
made some assumptions that would break if e.g. you added another
network client to a vlan where the feature had enabled.

        Now that we have the -netdev parameter, we can more safely
pair the NIC and backend, allowing us to negatiate features like
this.

        What follows is a somewhat cleaned up version of the code
from qemu-kvm.git. Further cleanups are probably possible, but I
think this much is mergeable. Some points of discussion:

  - If you start a guest on a host which supports IFF_VNET_HDR and
    migrate to a host which doesn't support it, we can't just tell
    the guest to stop using GSO.

    We need prevent this by rejecting the migration on the destination
    if IFF_VNET_HDR is required but not available. However, in my
    testing if a load() function returns an error, the migration is
    seen to have completed on the source but failed on the destination.
    Clearly that's wrong, but I haven't investigated further yet.

    Also, we provide a vnet_hdr= arg so that people can prevent the
    feature being used on the source or require that is available on
    the destination.

  - I've slightly abused QemuOpts in 05/19. Comments welcome.

  - The whole mess around adding a 'raw' packet flag for the gratuitous
    ARP packet is gratuitously messy.

  - I'm always enabling IFF_VNET_HDR if it's available. I don't think
    that's a problem, especially compared to what would be required to
    only selectively enable it.

Cheers,
Mark.

^ permalink raw reply	[flat|nested] 21+ messages in thread
* [Qemu-devel] [PATCH 00/19 v2] Add virtio-net/tap support for partial csums and GSO
@ 2009-10-22 16:43 Mark McLoughlin
  2009-10-22 16:43 ` [Qemu-devel] [PATCH 18/19] Enable UFO on virtio-net and tap devices Mark McLoughlin
  0 siblings, 1 reply; 21+ messages in thread
From: Mark McLoughlin @ 2009-10-22 16:43 UTC (permalink / raw)
  To: qemu-devel

Hey,
        Over a year ago we added some code to qemu-kvm.git which takes
advantage of the recent tun/tap IFF_VNET_HDR feature in order to allow
virtio-net to send and receive packets with partial checksums and
segmentation offloaded:

  http://article.gmane.org/gmane.comp.emulators.kvm.devel/20440

  "This allows us to pass larger packets and packets with
  partial checkums between the guest and the host, greatly
  increasing the achievable bandwidth."

        Unfortunately, that implementation was quite hacky as it
made some assumptions that would break if e.g. you added another
network client to a vlan where the feature had enabled.

        Now that we have the -netdev parameter, we can more safely
pair the NIC and backend, allowing us to negatiate features like
this.

        What follows is a somewhat cleaned up version of the code
from qemu-kvm.git. Further cleanups are probably possible, but I
think this much is mergeable. Some points of discussion:

  - If you start a guest on a host which supports IFF_VNET_HDR and
    migrate to a host which doesn't support it, we can't just tell
    the guest to stop using GSO.

    We need prevent this by rejecting the migration on the destination
    if IFF_VNET_HDR is required but not available. However, in my
    testing if a load() function returns an error, the migration is
    seen to have completed on the source but failed on the destination.
    Clearly that's wrong, but I haven't investigated further yet.

    Also, we provide a vnet_hdr= arg so that people can prevent the
    feature being used on the source or require that is available on
    the destination.

  - I've slightly abused QemuOpts in 05/19. Comments welcome.

  - The whole mess around adding a 'raw' packet flag for the gratuitous
    ARP packet is gratuitously messy.

  - I'm always enabling IFF_VNET_HDR if it's available. I don't think
    that's a problem, especially compared to what would be required to
    only selectively enable it.

        Changes since v1:

  - add has_vnet_hdr and has_ufo fields for ease of vmstate conversion

  - use qemu_error() in virtio_net_load()


Cheers,
Mark.

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2009-10-22 16:48 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-21 11:27 [Qemu-devel] [PATCH 00/19] Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 01/19] net: remove unused includes of if_tun.h and if_tap.h Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 02/19] net: import linux tap ioctl definitions Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 03/19] net: make tap_receive() re-use tap_receive_iov() code Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 04/19] net: enable IFF_VNET_HDR on tap fds if available Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 05/19] net: refactor tap initialization Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 06/19] net: add a vnet_hdr=on|off parameter Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 07/19] net: add a client type code Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 08/19] net: add tap_has_vnet_hdr() and tap_using_vnet_hdr() APIs Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 09/19] net: add flags parameter to packet queue interface Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 10/19] net: add an API for 'raw' packets Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 11/19] net: add receive_raw parameter to qemu_new_vlan_client() Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 12/19] net: use qemu_send_packet_raw() in qemu_announce_self() Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 13/19] net: implement tap support for receive_raw() Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 14/19] virtio-net: add vnet_hdr support Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 15/19] net: add tap_set_offload() Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 16/19] virtio-net: enable tap offload if guest supports it Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 17/19] Work around dhclient brokenness Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 18/19] Enable UFO on virtio-net and tap devices Mark McLoughlin
2009-10-21 11:27 ` [Qemu-devel] [PATCH 19/19] virtio-net: add tap_has_ufo flag to saved state Mark McLoughlin
  -- strict thread matches above, loose matches on Subject: below --
2009-10-22 16:43 [Qemu-devel] [PATCH 00/19 v2] Add virtio-net/tap support for partial csums and GSO Mark McLoughlin
2009-10-22 16:43 ` [Qemu-devel] [PATCH 18/19] Enable UFO on virtio-net and tap devices Mark McLoughlin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).