macvtap: drop broken IFF_VNET_LE
authorMichael S. Tsirkin <mst@redhat.com>
Tue, 16 Dec 2014 13:05:10 +0000 (15:05 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Dec 2014 16:19:42 +0000 (11:19 -0500)
Use TUNSETVNETLE/TUNGETVNETLE instead.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/macvtap.c

index 80fdb82352faec78fe44082d0a7bbf1a0aa7d197..7df221788cd4dc7ae4d8c3ed2f53789296d00deb 100644 (file)
@@ -46,16 +46,18 @@ struct macvtap_queue {
        struct list_head next;
 };
 
-#define MACVTAP_FEATURES (IFF_VNET_HDR | IFF_VNET_LE | IFF_MULTI_QUEUE)
+#define MACVTAP_FEATURES (IFF_VNET_HDR | IFF_MULTI_QUEUE)
+
+#define MACVTAP_VNET_LE 0x80000000
 
 static inline u16 macvtap16_to_cpu(struct macvtap_queue *q, __virtio16 val)
 {
-       return __virtio16_to_cpu(q->flags & IFF_VNET_LE, val);
+       return __virtio16_to_cpu(q->flags & MACVTAP_VNET_LE, val);
 }
 
 static inline __virtio16 cpu_to_macvtap16(struct macvtap_queue *q, u16 val)
 {
-       return __cpu_to_virtio16(q->flags & IFF_VNET_LE, val);
+       return __cpu_to_virtio16(q->flags & MACVTAP_VNET_LE, val);
 }
 
 static struct proto macvtap_proto = {
@@ -1070,6 +1072,21 @@ static long macvtap_ioctl(struct file *file, unsigned int cmd,
                q->vnet_hdr_sz = s;
                return 0;
 
+       case TUNGETVNETLE:
+               s = !!(q->flags & MACVTAP_VNET_LE);
+               if (put_user(s, sp))
+                       return -EFAULT;
+               return 0;
+
+       case TUNSETVNETLE:
+               if (get_user(s, sp))
+                       return -EFAULT;
+               if (s)
+                       q->flags |= MACVTAP_VNET_LE;
+               else
+                       q->flags &= ~MACVTAP_VNET_LE;
+               return 0;
+
        case TUNSETOFFLOAD:
                /* let the user check for future flags */
                if (arg & ~(TUN_F_CSUM | TUN_F_TSO4 | TUN_F_TSO6 |