virtualization.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net] virtio-net: alloc big buffers also when guest can receive UFO
@ 2014-02-12  5:43 Jason Wang
  2014-02-12 11:59 ` Michael S. Tsirkin
  0 siblings, 1 reply; 5+ messages in thread
From: Jason Wang @ 2014-02-12  5:43 UTC (permalink / raw)
  To: rusty, mst, virtio-dev, virtualization, netdev, linux-kernel
  Cc: Sridhar Samudrala

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(-)

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

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH net] virtio-net: alloc big buffers also when guest can receive UFO
  2014-02-12  5:43 [PATCH net] virtio-net: alloc big buffers also when guest can receive UFO Jason Wang
@ 2014-02-12 11:59 ` Michael S. Tsirkin
  2014-02-13  3:02   ` Jason Wang
       [not found]   ` <52FC35B5.6000900@redhat.com>
  0 siblings, 2 replies; 5+ messages in thread
From: Michael S. Tsirkin @ 2014-02-12 11:59 UTC (permalink / raw)
  To: Jason Wang
  Cc: virtio-dev, netdev, linux-kernel, virtualization,
	Sridhar Samudrala

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net] virtio-net: alloc big buffers also when guest can receive UFO
  2014-02-12 11:59 ` Michael S. Tsirkin
@ 2014-02-13  3:02   ` Jason Wang
       [not found]   ` <52FC35B5.6000900@redhat.com>
  1 sibling, 0 replies; 5+ messages in thread
From: Jason Wang @ 2014-02-13  3:02 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: virtio-dev, netdev, linux-kernel, virtualization,
	Sridhar Samudrala

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().

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net] virtio-net: alloc big buffers also when guest can receive UFO
       [not found]   ` <52FC35B5.6000900@redhat.com>
@ 2014-02-13  5:15     ` Michael S. Tsirkin
  2014-02-13  5:40       ` Jason Wang
  0 siblings, 1 reply; 5+ messages in thread
From: Michael S. Tsirkin @ 2014-02-13  5:15 UTC (permalink / raw)
  To: Jason Wang
  Cc: virtio-dev, netdev, linux-kernel, virtualization,
	Sridhar Samudrala

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.

-- 
MST

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net] virtio-net: alloc big buffers also when guest can receive UFO
  2014-02-13  5:15     ` Michael S. Tsirkin
@ 2014-02-13  5:40       ` Jason Wang
  0 siblings, 0 replies; 5+ messages in thread
From: Jason Wang @ 2014-02-13  5:40 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: virtio-dev, netdev, linux-kernel, virtualization,
	Sridhar Samudrala

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.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-02-13  5:40 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-12  5:43 [PATCH net] virtio-net: alloc big buffers also when guest can receive UFO Jason Wang
2014-02-12 11:59 ` Michael S. Tsirkin
2014-02-13  3:02   ` Jason Wang
     [not found]   ` <52FC35B5.6000900@redhat.com>
2014-02-13  5:15     ` Michael S. Tsirkin
2014-02-13  5:40       ` Jason Wang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).