Commit 1cf8e410 authored by Michael S. Tsirkin's avatar Michael S. Tsirkin Committed by David S. Miller

tun: drop broken IFF_VNET_LE

Use TUNSETVNETLE/TUNGETVNETLE instead.
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5eea84f4
...@@ -110,9 +110,11 @@ do { \ ...@@ -110,9 +110,11 @@ do { \
* overload it to mean fasync when stored there. * overload it to mean fasync when stored there.
*/ */
#define TUN_FASYNC IFF_ATTACH_QUEUE #define TUN_FASYNC IFF_ATTACH_QUEUE
/* High bits in flags field are unused. */
#define TUN_VNET_LE 0x80000000
#define TUN_FEATURES (IFF_NO_PI | IFF_ONE_QUEUE | IFF_VNET_HDR | \ #define TUN_FEATURES (IFF_NO_PI | IFF_ONE_QUEUE | IFF_VNET_HDR | \
IFF_VNET_LE | IFF_MULTI_QUEUE) IFF_MULTI_QUEUE)
#define GOODCOPY_LEN 128 #define GOODCOPY_LEN 128
#define FLT_EXACT_COUNT 8 #define FLT_EXACT_COUNT 8
...@@ -208,12 +210,12 @@ struct tun_struct { ...@@ -208,12 +210,12 @@ struct tun_struct {
static inline u16 tun16_to_cpu(struct tun_struct *tun, __virtio16 val) static inline u16 tun16_to_cpu(struct tun_struct *tun, __virtio16 val)
{ {
return __virtio16_to_cpu(tun->flags & IFF_VNET_LE, val); return __virtio16_to_cpu(tun->flags & TUN_VNET_LE, val);
} }
static inline __virtio16 cpu_to_tun16(struct tun_struct *tun, u16 val) static inline __virtio16 cpu_to_tun16(struct tun_struct *tun, u16 val)
{ {
return __cpu_to_virtio16(tun->flags & IFF_VNET_LE, val); return __cpu_to_virtio16(tun->flags & TUN_VNET_LE, val);
} }
static inline u32 tun_hashfn(u32 rxhash) static inline u32 tun_hashfn(u32 rxhash)
...@@ -1843,6 +1845,7 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, ...@@ -1843,6 +1845,7 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
int sndbuf; int sndbuf;
int vnet_hdr_sz; int vnet_hdr_sz;
unsigned int ifindex; unsigned int ifindex;
int le;
int ret; int ret;
if (cmd == TUNSETIFF || cmd == TUNSETQUEUE || _IOC_TYPE(cmd) == 0x89) { if (cmd == TUNSETIFF || cmd == TUNSETQUEUE || _IOC_TYPE(cmd) == 0x89) {
...@@ -2042,6 +2045,23 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, ...@@ -2042,6 +2045,23 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
tun->vnet_hdr_sz = vnet_hdr_sz; tun->vnet_hdr_sz = vnet_hdr_sz;
break; break;
case TUNGETVNETLE:
le = !!(tun->flags & TUN_VNET_LE);
if (put_user(le, (int __user *)argp))
ret = -EFAULT;
break;
case TUNSETVNETLE:
if (get_user(le, (int __user *)argp)) {
ret = -EFAULT;
break;
}
if (le)
tun->flags |= TUN_VNET_LE;
else
tun->flags &= ~TUN_VNET_LE;
break;
case TUNATTACHFILTER: case TUNATTACHFILTER:
/* Can be set only for TAPs */ /* Can be set only for TAPs */
ret = -EINVAL; ret = -EINVAL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment