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().
Michael S. Tsirkin
2014-Feb-13 05:15 UTC
[PATCH net] virtio-net: alloc big buffers also when guest can receive UFO
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
Jason Wang
2014-Feb-13 05:40 UTC
[PATCH net] virtio-net: alloc big buffers also when guest can receive UFO
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.
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] virtio-net: alloc big buffers also when guest can receive UFO
- [PATCH net] virtio-net: alloc big buffers also when guest can receive UFO