On 2018/12/13 22:50, Michael S. Tsirkin wrote: > On Thu, Dec 13, 2018 at 11:11:48AM +0800, jiangyiwen wrote: >> On 2018/12/13 3:09, David Miller wrote: >>> From: jiangyiwen <jiangyiwen@xxxxxxxxxx> >>> Date: Wed, 12 Dec 2018 17:29:31 +0800 >>> >>>> diff --git a/include/uapi/linux/virtio_vsock.h b/include/uapi/linux/virtio_vsock.h >>>> index 1d57ed3..2292f30 100644 >>>> --- a/include/uapi/linux/virtio_vsock.h >>>> +++ b/include/uapi/linux/virtio_vsock.h >>>> @@ -63,6 +63,11 @@ struct virtio_vsock_hdr { >>>> __le32 fwd_cnt; >>>> } __attribute__((packed)); >>>> >>>> +/* It add mergeable rx buffers feature */ >>>> +struct virtio_vsock_mrg_rxbuf_hdr { >>>> + __le16 num_buffers; /* number of mergeable rx buffers */ >>>> +} __attribute__((packed)); >>>> + >>> >>> I know the rest of this file uses 'packed' but this attribute should >>> only be used if absolutely necessary as it incurs a >>> non-trivial performance penalty for some architectures. >>> >>> . >>> >> >> Hi David, >> >> I hope Host can fill fewer bytes into rx virtqueue, so >> I keep structure virtio_vsock_mrg_rxbuf_hdr one byte >> alignment. >> >> Thanks, >> Yiwen. > > It doesn't work like this now though, does it? > Buffers are preallocated and they are always aligned. > So I do not see the point. > Hi Michael, Now my patch has a serious problem, I use virtio_vsock_pkt as the transport header from host to guest, it will cause guest parse the wrong packet length. Because this structure size may be different under different compilers (guest and host are different). I will solve the problem in later version. Thanks, Yiwen.