Message ID | 20090120164822.10112.89512.stgit@debian.lart |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Tue, 2009-01-20 at 09:48 -0700, Alex Williamson wrote: > 802.1Q expanded the maximum ethernet frame size by 4 bytes for the > VLAN tag. We're not taking this into account in virtio_net, which > means the buffers we provide to the backend in the virtqueue RX ring > aren't big enough to hold a full MTU VLAN packet. For QEMU/KVM, > this results in the backend exiting with a packet truncation error. > > Signed-off-by: Alex Williamson <alex.williamson@hp.com> Acked-by: Mark McLoughlin <markmc@redhat.com> Note 1: this only matters if the guest isn't using mergeable receive buffers or GSO Note 2: IMHO, this should go in 2.6.29 and stable Cheers, Mark. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Mark McLoughlin <markmc@redhat.com> Date: Tue, 20 Jan 2009 16:59:26 +0000 > On Tue, 2009-01-20 at 09:48 -0700, Alex Williamson wrote: > > > 802.1Q expanded the maximum ethernet frame size by 4 bytes for the > > VLAN tag. We're not taking this into account in virtio_net, which > > means the buffers we provide to the backend in the virtqueue RX ring > > aren't big enough to hold a full MTU VLAN packet. For QEMU/KVM, > > this results in the backend exiting with a packet truncation error. > > > > Signed-off-by: Alex Williamson <alex.williamson@hp.com> > > Acked-by: Mark McLoughlin <markmc@redhat.com> > > Note 1: this only matters if the guest isn't using mergeable receive > buffers or GSO > > Note 2: IMHO, this should go in 2.6.29 and stable Applied and queued up for -stable, thanks everyone! -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 43f6523..63ef2a8 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -24,6 +24,7 @@ #include <linux/virtio.h> #include <linux/virtio_net.h> #include <linux/scatterlist.h> +#include <linux/if_vlan.h> static int napi_weight = 128; module_param(napi_weight, int, 0444); @@ -33,7 +34,7 @@ module_param(csum, bool, 0444); module_param(gso, bool, 0444); /* FIXME: MTU in config. */ -#define MAX_PACKET_LEN (ETH_HLEN+ETH_DATA_LEN) +#define MAX_PACKET_LEN (ETH_HLEN + VLAN_HLEN + ETH_DATA_LEN) #define GOOD_COPY_LEN 128 struct virtnet_info
802.1Q expanded the maximum ethernet frame size by 4 bytes for the VLAN tag. We're not taking this into account in virtio_net, which means the buffers we provide to the backend in the virtqueue RX ring aren't big enough to hold a full MTU VLAN packet. For QEMU/KVM, this results in the backend exiting with a packet truncation error. Signed-off-by: Alex Williamson <alex.williamson@hp.com> --- drivers/net/virtio_net.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html