From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60412) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YyC7V-00042d-El for qemu-devel@nongnu.org; Fri, 29 May 2015 00:42:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YyC7S-0002XJ-8a for qemu-devel@nongnu.org; Fri, 29 May 2015 00:42:09 -0400 Received: from mail-pa0-f42.google.com ([209.85.220.42]:36007) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YyC7S-0002Wf-2u for qemu-devel@nongnu.org; Fri, 29 May 2015 00:42:06 -0400 Received: by pacux9 with SMTP id ux9so5250pac.3 for ; Thu, 28 May 2015 21:42:01 -0700 (PDT) Message-ID: <5567EE18.2040002@igel.co.jp> Date: Fri, 29 May 2015 13:42:00 +0900 From: Tetsuya Mukawa MIME-Version: 1.0 References: <1432538908-26298-1-git-send-email-mukawa@igel.co.jp> <1432538908-26298-5-git-send-email-mukawa@igel.co.jp> <55639E2E.9040604@redhat.com> <1432608391.2198.39.camel@igel.co.jp> <5563F695.2080706@igel.co.jp> <55646C91.4080409@redhat.com> <55666E97.8020409@igel.co.jp> In-Reply-To: <55666E97.8020409@igel.co.jp> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC PATCH 4/4] vhost-user: Add new option to specify vhost-user backend supports List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake Cc: jasowang@redhat.com, n.nikolaev@virtualopensystems.com, qemu-devel@nongnu.org, stefanha@redhat.com On 2015/05/28 10:25, Tetsuya Mukawa wrote: > On 2015/05/26 21:52, Eric Blake wrote: >> On 05/25/2015 10:29 PM, Tetsuya Mukawa wrote: >> >>>>>> { 'struct': 'NetdevTapOptions', >>>>>> @@ -2259,7 +2261,8 @@ >>>>>> '*vhostfd': 'str', >>>>>> '*vhostfds': 'str', >>>>>> '*vhostforce': 'bool', >>>>>> - '*queues': 'uint32'} } >>>>>> + '*queues': 'uint32', >>>>>> + '*backend_features':'uint64'} } >>>>> Ewww. Making users figure out what integers to pass is NOT user >>>>> friendly. Better would be an enum type, and make the parameter an >>>>> optional array of enum values. >>>> Thanks for your comments. >>>> I guess below may be good example. Is this same as your suggestion? >>>> >>>> virtio-net-pci,netdev=hostnet3,id=net3,gso=off,guest_tso4=off,guest_tso6=off >>>> >>>> So I will improve 'backend-features' like below. >>>> >>>> backend-features=gso=off,guest_tso4=off,guest_tso6=off >>>> >>>> Also I will fix 'qapi-schema.json' to work like above. >>> I seems it's impossible to implement like above. >>> I may need to implement like below. >>> >>> virtio-net-pci,netdev=hostnet3,id=net3,backend_gso=on,backend_guest_tso4=on,backend_guest_tso6=on >> Or even: >> >> virtio-net-pci,netdev=hostnet3,id=net3,backend.gso=on,backend.guest_tso4=on,backend.guest_tso6=on >> >> Look at -device for how to set up nested structs using '.' for a nice >> hierarchy of options all belonging to a common substruct. >> > I appreciate for your suggestion. > I will check '-device' option, and implement like above in v2 patch. I've checked '-device' option and DeviceClass, and found I may not be able to use above nice hierarchy with '-net' option. Probably it is because '-net' option isn't for describing device itself, so there is no DeviceClass. And without DeviceClass I guess I cannot use '.' infrastructure. I may be able to describe vhost-user backend features in '-device virtio-net-pci,.....', but I guess it's not good. Probably describing in '-net vhost-user,....' will be good. As described above, I implemented like below in next patch. -chardev socket,id=chr0,path=/tmp/sock,reconnect=3 \ -device virtio-net-pci,netdev=net0 \ -netdev vhost-user,id=net0,chardev=chr0,vhostforce,backend_gso=on,backend_guest_ecn=on BTW, '-device' option has already had options like below. - guest_csum - guest_tso4 ..... So I used '_' like below - backend_guest_csum - backend_guest_tso4 ...... Regards, Tetsuya