qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Re: [PATCH] Fix TAP networking on host kernels without


From: Mark McLoughlin
Subject: Re: [Qemu-devel] Re: [PATCH] Fix TAP networking on host kernels without IFF_VNET_HDR support
Date: Tue, 24 Nov 2009 11:22:52 +0000

On Tue, 2009-11-24 at 12:17 +0100, Pierre Riteau wrote:
> On 24 nov. 2009, at 11:28, Mark McLoughlin wrote:
> 
> > On Tue, 2009-11-24 at 10:06 +0100, Pierre Riteau wrote:
> >> vnet_hdr is initialized at 1 by default. We need to reset it to 0 if
> >> the kernel doesn't support IFF_VNET_HDR.
> >> 
> >> Signed-off-by: Pierre Riteau <address@hidden>
> > 
> > Thanks Pierre, I see why this is needed now
> > 
> > Acked-by: Mark McLoughlin <address@hidden>
> > 
> > Cheers,
> > Mark.
> 
> 
> Thanks for your rapid answer!
> 
> BTW, every time I run qemu I see this error message:
> 
>     TUNSETOFFLOAD ioctl() failed: Invalid argument
> 
> It is caused by the piece of code at the end of net/tap-linux.c:
> 
>     if (ioctl(fd, TUNSETOFFLOAD, offload) != 0) {
>         offload &= ~TUN_F_UFO;
>         if (ioctl(fd, TUNSETOFFLOAD, offload) != 0) {
>             fprintf(stderr, "TUNSETOFFLOAD ioctl() failed: %s\n",
>                     strerror(errno));
>         }
>     }
> 
> Isn't there a way to detect whether the kernel supports the
> TUNSETOFFLOAD ioctl at all?

The kernel will set errno to EINVAL if TUNSETOFFLOAD isn't supported, so
we could just ignore that case:

     if (ioctl(fd, TUNSETOFFLOAD, offload) != 0) {
          offload &= ~TUN_F_UFO;
          if (ioctl(fd, TUNSETOFFLOAD, offload) != 0 && errno != EINVAL) {
              fprintf(stderr, "TUNSETOFFLOAD ioctl() failed: %s\n",
                      strerror(errno));
          }
      }

The only concern is that we'll also miss out on an error message if
EINVAL is set for another reason. Currently, the only other reason if we
pass a offload flag not supported by the kernel, but that should never
happen.

Feel free to send a patch with that change and I'll ack it

Thanks,
Mark.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]