From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37756) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XTmrK-000166-Cw for qemu-devel@nongnu.org; Tue, 16 Sep 2014 03:07:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XTmrB-0007k4-1W for qemu-devel@nongnu.org; Tue, 16 Sep 2014 03:07:30 -0400 Received: from szxga02-in.huawei.com ([119.145.14.65]:10897) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XTmrA-0007gg-4T for qemu-devel@nongnu.org; Tue, 16 Sep 2014 03:07:20 -0400 Message-ID: <5417E18E.5090204@huawei.com> Date: Tue, 16 Sep 2014 15:06:54 +0800 From: Linhaifeng MIME-Version: 1.0 References: <1410719879-25181-1-git-send-email-mst@redhat.com> <1410719879-25181-13-git-send-email-mst@redhat.com> In-Reply-To: <1410719879-25181-13-git-send-email-mst@redhat.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PULL 12/12] vhost-user: fix VIRTIO_NET_F_MRG_RXBUF negotiation List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Michael S. Tsirkin" , qemu-devel@nongnu.org Cc: Peter Maydell , Damjan Marion , Anthony Liguori On 2014/9/15 2:41, Michael S. Tsirkin wrote: > From: Damjan Marion > > Header length check should happen only if backend is kernel. For user > backend there is no reason to reset this bit. > > vhost-user code does not define .has_vnet_hdr_len so > VIRTIO_NET_F_MRG_RXBUF cannot be negotiated even if both sides > support it. > > Signed-off-by: Damjan Marion > Reviewed-by: Michael S. Tsirkin > Signed-off-by: Michael S. Tsirkin > --- > hw/net/vhost_net.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c > index b21e7a4..77bb93e 100644 > --- a/hw/net/vhost_net.c > +++ b/hw/net/vhost_net.c > @@ -163,11 +163,11 @@ struct vhost_net *vhost_net_init(VhostNetOptions *options) > if (r < 0) { > goto fail; > } > - if (!qemu_has_vnet_hdr_len(options->net_backend, > - sizeof(struct virtio_net_hdr_mrg_rxbuf))) { > - net->dev.features &= ~(1 << VIRTIO_NET_F_MRG_RXBUF); > - } > if (backend_kernel) { > + if (!qemu_has_vnet_hdr_len(options->net_backend, > + sizeof(struct virtio_net_hdr_mrg_rxbuf))) { > + net->dev.features &= ~(1 << VIRTIO_NET_F_MRG_RXBUF); > + } > if (~net->dev.features & net->dev.backend_features) { > fprintf(stderr, "vhost lacks feature mask %" PRIu64 > " for backend\n", > why vhost-user code not define .has_vnet_hdr_len? I think vhost-user code should define it. if packet bigger than MTU,this will be a bug?