Jason Wang
2014-Feb-12 05:43 UTC
[PATCH net] virtio-net: alloc big buffers also when guest can receive UFO
We should alloc big buffers also when guest can receive UFO pakcets. Otherwise the big packets will be truncated when mergeable rx buffer is disabled. Fixes 5c5167515d80f78f6bb538492c423adcae31ad65 (virtio-net: Allow UFO feature to be set and advertised.) Cc: Rusty Russell <rusty at rustcorp.com.au> Cc: Michael S. Tsirkin <mst at redhat.com> Cc: Sridhar Samudrala <sri at us.ibm.com> Signed-off-by: Jason Wang <jasowang at redhat.com> --- drivers/net/virtio_net.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index d75f8ed..5632a99 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -1711,7 +1711,8 @@ static int virtnet_probe(struct virtio_device *vdev) /* If we can receive ANY GSO packets, we must allocate large ones. */ if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO4) || virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO6) || - virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_ECN)) + virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_ECN) || + virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_UFO)) vi->big_packets = true; if (virtio_has_feature(vdev, VIRTIO_NET_F_MRG_RXBUF)) -- 1.8.3.2
Michael S. Tsirkin
2014-Feb-12 11:59 UTC
[PATCH net] virtio-net: alloc big buffers also when guest can receive UFO
On Wed, Feb 12, 2014 at 01:43:28PM +0800, Jason Wang wrote:> We should alloc big buffers also when guest can receive UFO > pakcets. Otherwise the big packets will be truncated when mergeable rx > buffer is disabled.Not truncated, they will be dropped.> Fixes 5c5167515d80f78f6bb538492c423adcae31ad65 > (virtio-net: Allow UFO feature to be set and advertised.) > > Cc: Rusty Russell <rusty at rustcorp.com.au> > Cc: Michael S. Tsirkin <mst at redhat.com> > Cc: Sridhar Samudrala <sri at us.ibm.com> > Signed-off-by: Jason Wang <jasowang at redhat.com>Acked-by: Michael S. Tsirkin <mst at redhat.com> for patch but please fix commit message.> --- > drivers/net/virtio_net.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index d75f8ed..5632a99 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -1711,7 +1711,8 @@ static int virtnet_probe(struct virtio_device *vdev) > /* If we can receive ANY GSO packets, we must allocate large ones. */ > if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO4) || > virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO6) || > - virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_ECN)) > + virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_ECN) || > + virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_UFO)) > vi->big_packets = true; > > if (virtio_has_feature(vdev, VIRTIO_NET_F_MRG_RXBUF)) > -- > 1.8.3.2
Jason Wang
2014-Feb-13 03:02 UTC
[PATCH net] virtio-net: alloc big buffers also when guest can receive UFO
On 02/12/2014 07:59 PM, Michael S. Tsirkin wrote:> On Wed, Feb 12, 2014 at 01:43:28PM +0800, Jason Wang wrote: >> > We should alloc big buffers also when guest can receive UFO >> > pakcets. Otherwise the big packets will be truncated when mergeable rx >> > buffer is disabled. > Not truncated, they will be dropped. >Why dropped? We enable the ufo on tap0 if VIRTIO_NET_F_GUEST_UFO is negotiated. So skb was queued on the receive queue. But since the receive buffer is small, it will be truncated during tun_put_user().
Maybe Matching Threads
- [PATCH net] virtio-net: alloc big buffers also when guest can receive UFO
- [PATCH net] virtio-net: alloc big buffers also when guest can receive UFO
- [PATCH net] virtio-net: alloc big buffers also when guest can receive UFO
- [PATCH net V2] virtio-net: alloc big buffers also when guest can receive UFO
- [PATCH net V2] virtio-net: alloc big buffers also when guest can receive UFO