Message ID | 1392183808-16789-1-git-send-email-jasowang@redhat.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
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@rustcorp.com.au> > Cc: Michael S. Tsirkin <mst@redhat.com> > Cc: Sridhar Samudrala <sri@us.ibm.com> > Signed-off-by: Jason Wang <jasowang@redhat.com> Acked-by: Michael S. Tsirkin <mst@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 -- 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
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(). -- 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
On Thu, Feb 13, 2014 at 11:02:13AM +0800, Jason Wang wrote: > 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(). Hypervisor shouldn't truncate packets silently - if it does it's a hypervisor bug. Passing malformed packets to guest is a bad idea.
On 02/13/2014 01:15 PM, Michael S. Tsirkin wrote: > On Thu, Feb 13, 2014 at 11:02:13AM +0800, Jason Wang wrote: >> 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(). > Hypervisor shouldn't truncate packets silently - if it does > it's a hypervisor bug. Passing malformed packets to guest is > a bad idea. > Yes, but the commit log describes the current behaviour so it was ok? Btw, dropping the packets silently is still not good. Virito needs a method to report rx errors to guest. -- 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 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))
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@rustcorp.com.au> Cc: Michael S. Tsirkin <mst@redhat.com> Cc: Sridhar Samudrala <sri@us.ibm.com> Signed-off-by: Jason Wang <jasowang@redhat.com> --- drivers/net/virtio_net.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)