macvtap/tun: cross-endian support for little-endian hosts
authorGreg Kurz <gkurz@linux.vnet.ibm.com>
Fri, 24 Apr 2015 12:50:36 +0000 (14:50 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Mon, 1 Jun 2015 13:48:56 +0000 (15:48 +0200)
commit8b8e658b16336f0f50aba733f51db636ef121f50
tree07e2259234babcd1c2f535ff43e1bede107f74d2
parent2751c9882b947292fcfb084c4f604e01724af804
macvtap/tun: cross-endian support for little-endian hosts

The VNET_LE flag was introduced to fix accesses to virtio 1.0 headers
that are always little-endian. It can also be used to handle the special
case of a legacy little-endian device implemented by a big-endian host.

Let's add a flag and ioctls for big-endian devices as well. If both flags
are set, little-endian wins.

Since this is isn't a common usecase, the feature is controlled by a kernel
config option (not set by default).

Both macvtap and tun are covered by this patch since they share the same
API with userland.

Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
drivers/net/Kconfig
drivers/net/macvtap.c
drivers/net/tun.c
include/uapi/linux/if_tun.h