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