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>
这个提交包含在:
@@ -244,6 +244,20 @@ config TUN
|
||||
|
||||
If you don't know what to use this for, you don't need it.
|
||||
|
||||
config TUN_VNET_CROSS_LE
|
||||
bool "Support for cross-endian vnet headers on little-endian kernels"
|
||||
default n
|
||||
---help---
|
||||
This option allows TUN/TAP and MACVTAP device drivers in a
|
||||
little-endian kernel to parse vnet headers that come from a
|
||||
big-endian legacy virtio device.
|
||||
|
||||
Userspace programs can control the feature using the TUNSETVNETBE
|
||||
and TUNGETVNETBE ioctls.
|
||||
|
||||
Unless you have a little-endian system hosting a big-endian virtual
|
||||
machine with a legacy virtio NIC, you should say N.
|
||||
|
||||
config VETH
|
||||
tristate "Virtual ethernet pair device"
|
||||
---help---
|
||||
|
在新工单中引用
屏蔽一个用户