On Tue, Nov 19, 2019 at 08:36:38AM -0800, Stephen Hemminger wrote: > On Tue, 19 Nov 2019 14:29:48 +0800 > Tiwei Bie <tiwei....@intel.com> wrote: > > > -static int > > +int > > +vhost_kernel_tap_attach_queue(int fd) > > +{ > > + struct ifreq ifr; > > + > > + memset(&ifr, 0, sizeof(ifr)); > > + ifr.ifr_flags = IFF_ATTACH_QUEUE; > > + return ioctl(fd, TUNSETQUEUE, (void *)&ifr); > > +} > > + > > +int > > +vhost_kernel_tap_detach_queue(int fd) > > +{ > > + struct ifreq ifr; > > + > > + memset(&ifr, 0, sizeof(ifr)); > > + ifr.ifr_flags = IFF_DETACH_QUEUE; > > + return ioctl(fd, TUNSETQUEUE, (void *)&ifr); > > +} > > + > > These both could be squashed into one routine. > > int > vhost_kernel_tap_set_queue(int fd, bool attach) > { > struct ifreq ifr = { > .ifr_flags = attach ? IFF_ATTACH_QUEUE : IFF_DETACH_QUEUE > }; > > return ioctl(fd, TUNSETQUEUE, &ifr); > } > > 1. Use initializer instead of memset > 2. Cast to void * is unnecessary
Thanks! Will do it in v2. Regards, Tiwei