Michael S. Tsirkin
2017-Mar-29 12:38 UTC
[PATCH] 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 <mst at redhat.com> --- drivers/net/virtio_net.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index e0fb3707..9dc31dc 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -2428,6 +2428,10 @@ static int virtnet_probe(struct virtio_device *vdev) dev->mtu = mtu; dev->max_mtu = mtu; } + + /* TODO: size buffers correctly in this case. */ + if (dev->mtu > ETH_DATA_LEN) + vi->big_packets = true; } if (vi->any_header_sg) -- MST
Michael S. Tsirkin
2017-Mar-29 16:13 UTC
[PATCH] virtio_net: enable big packets for large MTU values
On Wed, Mar 29, 2017 at 03:38:09PM +0300, Michael S. Tsirkin wrote:> 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 <mst at redhat.com>Fixes: 14de9d114a82 ("virtio-net: Add initial MTU advice feature")> --- > drivers/net/virtio_net.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index e0fb3707..9dc31dc 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -2428,6 +2428,10 @@ static int virtnet_probe(struct virtio_device *vdev) > dev->mtu = mtu; > dev->max_mtu = mtu; > } > + > + /* TODO: size buffers correctly in this case. */ > + if (dev->mtu > ETH_DATA_LEN) > + vi->big_packets = true; > } > > if (vi->any_header_sg) > -- > MST
Jason Wang
2017-Mar-30 04:03 UTC
[PATCH] virtio_net: enable big packets for large MTU values
On 2017?03?29? 20:38, Michael S. Tsirkin wrote:> 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 <mst at redhat.com> > --- > drivers/net/virtio_net.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index e0fb3707..9dc31dc 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -2428,6 +2428,10 @@ static int virtnet_probe(struct virtio_device *vdev) > dev->mtu = mtu; > dev->max_mtu = mtu; > } > + > + /* TODO: size buffers correctly in this case. */ > + if (dev->mtu > ETH_DATA_LEN) > + vi->big_packets = true; > } > > if (vi->any_header_sg)Ok, I think maybe we should fail the probe of small buffer in this case and decrease the max_mtu to ETH_DATA_LEN if small buffer is used (since user are allowed to increase the mtu). Thanks
Possibly Parallel Threads
- [PATCH] virtio_net: enable big packets for large MTU values
- [PATCH net-next 5/6] net: use core MTU range checking in virt drivers
- [PATCH net-next 5/6] net: use core MTU range checking in virt drivers
- [PATCH net-next v2 6/9] net: use core MTU range checking in virt drivers
- [PATCH net-next v2 6/9] net: use core MTU range checking in virt drivers