diff mbox

[1/1] qemu-kvm: virtio-net: Re-instate GSO code removed upstream

Message ID 1241513785-28738-1-git-send-email-markmc@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Mark McLoughlin May 5, 2009, 8:56 a.m. UTC
This commit:

   commit 559a8f45f34cc50d1a60b4f67a06614d506b2e01
   Subject: Remove stray GSO code from virtio_net (Mark McLoughlin)

Removed some GSO code from upstream qemu.git, but it needs to
be re-instated in qemu-kvm.git.

Reported-by: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: Mark McLoughlin <markmc@redhat.com>
---
 hw/virtio-net.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

Comments

Avi Kivity May 6, 2009, 9:11 a.m. UTC | #1
Mark McLoughlin wrote:
> This commit:
>
>    commit 559a8f45f34cc50d1a60b4f67a06614d506b2e01
>    Subject: Remove stray GSO code from virtio_net (Mark McLoughlin)
>
> Removed some GSO code from upstream qemu.git, but it needs to
> be re-instated in qemu-kvm.git.
>
>   

Applied, thanks.
Mark McLoughlin Sept. 29, 2009, 8:45 p.m. UTC | #2
On Tue, 2009-05-05 at 09:56 +0100, Mark McLoughlin wrote:
> This commit:
> 
>    commit 559a8f45f34cc50d1a60b4f67a06614d506b2e01
>    Subject: Remove stray GSO code from virtio_net (Mark McLoughlin)
> 
> Removed some GSO code from upstream qemu.git, but it needs to
> be re-instated in qemu-kvm.git.
> 
> Reported-by: Sridhar Samudrala <sri@us.ibm.com>
> Signed-off-by: Mark McLoughlin <markmc@redhat.com>
> ---
>  hw/virtio-net.c |    5 +++++
>  1 files changed, 5 insertions(+), 0 deletions(-)
> 
> diff --git a/hw/virtio-net.c b/hw/virtio-net.c
> index ac8e030..e5d7add 100644
> --- a/hw/virtio-net.c
> +++ b/hw/virtio-net.c
> @@ -424,6 +424,11 @@ static int receive_filter(VirtIONet *n, const uint8_t *buf, int size)
>      if (n->promisc)
>          return 1;
>  
> +#ifdef TAP_VNET_HDR
> +    if (tap_has_vnet_hdr(n->vc->vlan->first_client))
> +        ptr += sizeof(struct virtio_net_hdr);
> +#endif
> +
>      if (!memcmp(&ptr[12], vlan, sizeof(vlan))) {
>          int vid = be16_to_cpup((uint16_t *)(ptr + 14)) & 0xfff;
>          if (!(n->vlans[vid >> 5] & (1U << (vid & 0x1f))))

I'm not sure[1] how we didn't notice, but this has been broken on the
stable-0.10 branch since 0.10.3; please apply there too

See:

  https://bugzilla.redhat.com/522994

Cheers,
Mark.

[1] - well, one reason is that libvirt doesn't seem to be enabling
vnet_hdr at the moment. That's the next thing to look at

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/hw/virtio-net.c b/hw/virtio-net.c
index ac8e030..e5d7add 100644
--- a/hw/virtio-net.c
+++ b/hw/virtio-net.c
@@ -424,6 +424,11 @@  static int receive_filter(VirtIONet *n, const uint8_t *buf, int size)
     if (n->promisc)
         return 1;
 
+#ifdef TAP_VNET_HDR
+    if (tap_has_vnet_hdr(n->vc->vlan->first_client))
+        ptr += sizeof(struct virtio_net_hdr);
+#endif
+
     if (!memcmp(&ptr[12], vlan, sizeof(vlan))) {
         int vid = be16_to_cpup((uint16_t *)(ptr + 14)) & 0xfff;
         if (!(n->vlans[vid >> 5] & (1U << (vid & 0x1f))))