Mark McLoughlin wrote:
On Thu, 2009-10-29 at 09:11 -0500, Anthony Liguori wrote:
Mark McLoughlin wrote:
        tap_set_offload(csum: 1, tso4: 1, tso6: 1, ecn: 1)
being called and get an mtu of 1500 on virbr0 using his birdge.sh script.

virtio_net_receive2 was trying to transfer a 1534 byte packet (1524 'size' + 10 
'virtio_net_hdr')
and the guest only had 1524 bytes of space in its input descriptors.
Okay, that sounds like a bug in Dustin's version of the guest virtio-net
driver - if it is only supplying 1524 byte buffers, it should not be
saying it supports the VIRTIO_NET_F_GUEST_TSO4 feature
See:

commit 8eca6b1bc770982595db2f7207c65051572436cb
Author: aliguori <aligu...@c046a42c-6fe2-441c-8c8c-71466251a162>
Date:   Sun Apr 5 17:40:08 2009 +0000

    Fix oops on 2.6.25 guest (Rusty Russell)
I believe this is behind the following:
    https://bugs.edge.launchpad.net/ubuntu/jaunty/+source/linux/+bug/331128
virtio_pci in 2.6.25 didn't do feature negotiation correctly: it acked every
    bit.  Fortunately, we can detect this.
Signed-off-by: Rusty Russell <ru...@rustcorp.com.au>
    Signed-off-by: Anthony Liguori <aligu...@us.ibm.com>

It looks like Rusty's fix wasn't enough. If I change virtio-net to only advertise F_MAC, we don't run into this problem.

If it's not acking VBAD_FEATURE, then it doesn't sound like the same
issue

It was acking VBAD_FEATURE when I tested it.

But if you look at the patch, it whitelists the following features:

   features |= (1 << VIRTIO_NET_F_MAC);
   features |= (1 << VIRTIO_NET_F_GUEST_CSUM);
   features |= (1 << VIRTIO_NET_F_GUEST_TSO4);
   features |= (1 << VIRTIO_NET_F_GUEST_TSO6);
   features |= (1 << VIRTIO_NET_F_GUEST_ECN);

Which is why it's ack'ing TSO4. Removing TSO4 didn't seem to fix it for me.

Regards,

Anthony Liguori


Reply via email to