| From fdf1cf0ff6e25f4e3490da18b5de1162aa7bac3b Mon Sep 17 00:00:00 2001 |
| From: Alex Williamson <alex.williamson@hp.com> |
| Date: Fri, 13 Feb 2009 00:06:29 -0800 |
| Subject: virtio_net: Fix MAX_PACKET_LEN to support 802.1Q VLANs |
| |
| From: Alex Williamson <alex.williamson@hp.com> |
| |
| [ Upstream commit e918085aaff34086e265f825dd469926b1aec4a4 ] |
| |
| 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> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/net/virtio_net.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- 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) |
| |
| struct virtnet_info |
| { |