From: Michael S. Tsirkin Date: Wed, 8 Mar 2017 00:14:25 +0000 (+0200) Subject: virtio_net: enable big packets for large MTU values X-Git-Tag: v4.1.12-111.0.20170918_2215~158 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=b824a5651820756084cd99079e8fb4f16a6f0257;p=users%2Fjedix%2Flinux-maple.git virtio_net: enable big packets for large MTU values If one enables e.g. jumbo frames without mergeable buffers, packets won't fit in 1500 byte buffers we use. Switch to big packet mode instead. TODO: make sizing more exact, possibly extend small packet mode to use larger pages. Signed-off-by: Michael S. Tsirkin (cherry picked from commit 2e123b44a3c19de75f40ee0081d6d4fc04adfdc7) Orabug: 26584452 Signed-off-by: Si-Wei Liu Reviewed-by: Joao Martins Conflicts: drivers/net/virtio_net.c Due to the lack of commit d0c2c9973ecd ("net: use core MTU range checking in virt drivers") the MTU size check is still done in the virtio_net. --- diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 4634cba53b703..4f0b08363073d 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -1842,6 +1842,10 @@ static int virtnet_probe(struct virtio_device *vdev) mtu)); if (virtnet_change_mtu(dev, mtu)) __virtio_clear_bit(vdev, VIRTIO_NET_F_MTU); + + /* TODO: size buffers correctly in this case. */ + if (dev->mtu > ETH_DATA_LEN) + vi->big_packets = true; } if (vi->any_header_sg)