mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 14:15:28 +00:00
util: stop probing for IFF_VNET_HDR
This flag was added by Linux with: commit f43798c27684ab925adde7d8acc34c78c6e50df8 Author: Rusty Russell <rusty@rustcorp.com.au> Date: Thu Jul 3 03:48:02 2008 -0700 tun: Allow GSO using virtio_net_hdr so we can assume all Linux distros we support have this flag available and thus the compile time check is sufficient. Reviewed-by: Ján Tomko <jtomko@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
fcdc387410
commit
5e6d02e0f2
@ -183,66 +183,6 @@ virNetDevTapGetRealDeviceName(char *ifname G_GNUC_UNUSED)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* virNetDevProbeVnetHdr:
|
||||
* @tapfd: a tun/tap file descriptor
|
||||
*
|
||||
* Check whether it is safe to enable the IFF_VNET_HDR flag on the
|
||||
* tap interface.
|
||||
*
|
||||
* Setting IFF_VNET_HDR enables QEMU's virtio_net driver to allow
|
||||
* guests to pass larger (GSO) packets, with partial checksums, to
|
||||
* the host. This greatly increases the achievable throughput.
|
||||
*
|
||||
* It is only useful to enable this when we're setting up a virtio
|
||||
* interface. And it is only *safe* to enable it when we know for
|
||||
* sure that a) qemu has support for IFF_VNET_HDR and b) the running
|
||||
* kernel implements the TUNGETIFF ioctl(), which qemu needs to query
|
||||
* the supplied tapfd.
|
||||
*
|
||||
* Returns 1 if VnetHdr is supported, 0 if not supported
|
||||
*/
|
||||
#ifdef IFF_VNET_HDR
|
||||
static int
|
||||
virNetDevProbeVnetHdr(int tapfd)
|
||||
{
|
||||
# if defined(IFF_VNET_HDR) && defined(TUNGETFEATURES) && defined(TUNGETIFF)
|
||||
unsigned int features;
|
||||
struct ifreq dummy;
|
||||
|
||||
if (ioctl(tapfd, TUNGETFEATURES, &features) != 0) {
|
||||
VIR_INFO("Not enabling IFF_VNET_HDR; "
|
||||
"TUNGETFEATURES ioctl() not implemented");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!(features & IFF_VNET_HDR)) {
|
||||
VIR_INFO("Not enabling IFF_VNET_HDR; "
|
||||
"TUNGETFEATURES ioctl() reports no IFF_VNET_HDR");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* The kernel will always return -1 at this point.
|
||||
* If TUNGETIFF is not implemented then errno == EBADFD.
|
||||
*/
|
||||
if (ioctl(tapfd, TUNGETIFF, &dummy) != -1 || errno != EBADFD) {
|
||||
VIR_INFO("Not enabling IFF_VNET_HDR; "
|
||||
"TUNGETIFF ioctl() not implemented");
|
||||
return 0;
|
||||
}
|
||||
|
||||
VIR_INFO("Enabling IFF_VNET_HDR");
|
||||
|
||||
return 1;
|
||||
# else
|
||||
(void) tapfd;
|
||||
VIR_INFO("Not enabling IFF_VNET_HDR; disabled at build time");
|
||||
return 0;
|
||||
# endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef TUNSETIFF
|
||||
/**
|
||||
* virNetDevTapGenerateName:
|
||||
@ -363,8 +303,7 @@ int virNetDevTapCreate(char **ifname,
|
||||
}
|
||||
|
||||
# ifdef IFF_VNET_HDR
|
||||
if ((flags & VIR_NETDEV_TAP_CREATE_VNET_HDR) &&
|
||||
virNetDevProbeVnetHdr(fd))
|
||||
if (flags & VIR_NETDEV_TAP_CREATE_VNET_HDR)
|
||||
ifr.ifr_flags |= IFF_VNET_HDR;
|
||||
# endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user