Re: [PATCH] macvtap: add ioctl to modify vnet header size

Previous thread: [PATCHv3] mtd: cfi_cmdset_0002: Add reboot notifier for AMD flashes by Kevin Cernekee on Thursday, April 29, 2010 - 10:26 am. (2 messages)

Next thread: Re: [v3 PATCH] x86: let 'reservetop' functioning right by Ingo Molnar on Friday, April 30, 2010 - 3:22 am. (2 messages)
From: Michael S. Tsirkin
Date: Thursday, April 29, 2010 - 6:51 am

This adds TUNSETVNETHDRSZ/TUNGETVNETHDRSZ support
to macvtap.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---

This just mirrors the support in tun,
http://lkml.org/lkml/2010/3/17/221
so that we can make vhost mergeable buffers work with macvtap as well.

I plan to merge both patches through vhost tree together
with mergeable buffer support. Comments?

 drivers/net/macvtap.c |   31 +++++++++++++++++++++++++++----
 1 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
index d97e1fd..6451c4b 100644
--- a/drivers/net/macvtap.c
+++ b/drivers/net/macvtap.c
@@ -37,6 +37,7 @@
 struct macvtap_queue {
 	struct sock sk;
 	struct socket sock;
+	int vnet_hdr_sz;
 	struct macvlan_dev *vlan;
 	struct file *file;
 	unsigned int flags;
@@ -280,6 +281,7 @@ static int macvtap_open(struct inode *inode, struct file *file)
 	sock_init_data(&q->sock, &q->sk);
 	q->sk.sk_write_space = macvtap_sock_write_space;
 	q->flags = IFF_VNET_HDR | IFF_NO_PI | IFF_TAP;
+	q->vnet_hdr_sz = sizeof(struct virtio_net_hdr);
 
 	err = macvtap_set_queue(dev, file, q);
 	if (err)
@@ -440,14 +442,14 @@ static ssize_t macvtap_get_user(struct macvtap_queue *q,
 	int vnet_hdr_len = 0;
 
 	if (q->flags & IFF_VNET_HDR) {
-		vnet_hdr_len = sizeof(vnet_hdr);
+		vnet_hdr_len = q->vnet_hdr_sz;
 
 		err = -EINVAL;
 		if ((len -= vnet_hdr_len) < 0)
 			goto err;
 
 		err = memcpy_fromiovecend((void *)&vnet_hdr, iv, 0,
-					   vnet_hdr_len);
+					   sizeof(vnet_hdr));
 		if (err < 0)
 			goto err;
 		if ((vnet_hdr.flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) &&
@@ -529,7 +531,7 @@ static ssize_t macvtap_put_user(struct macvtap_queue *q,
 
 	if (q->flags & IFF_VNET_HDR) {
 		struct virtio_net_hdr vnet_hdr;
-		vnet_hdr_len = sizeof (vnet_hdr);
+		vnet_hdr_len = q->vnet_hdr_sz;
 		if ((len -= vnet_hdr_len) < 0)
 			return -EINVAL;
 
@@ -537,7 +539,7 @@ static ssize_t macvtap_put_user(struct macvtap_queue *q,
 		if (ret)
 			return ret;
 
-		if ...
From: Arnd Bergmann
Date: Thursday, April 29, 2010 - 7:40 am

Acked-by: Arnd Bergmann <arnd@arndb.de>
--

From: David Miller
Date: Sunday, May 2, 2010 - 11:32 pm

From: Arnd Bergmann <arnd@arndb.de>

Applied to net-next-2.6, thanks.
--

From: David Miller
Date: Sunday, May 2, 2010 - 11:34 pm

From: David Miller <davem@davemloft.net>

Nevermind, reverted:

drivers/net/macvtap.c: In function 'macvtap_ioctl':
drivers/net/macvtap.c:679:7: error: 'TUNGETVNETHDRSZ' undeclared (first use in this function)
drivers/net/macvtap.c:679:7: note: each undeclared identifier is reported only once for each function it appears in
drivers/net/macvtap.c:685:7: error: 'TUNSETVNETHDRSZ' undeclared (first use in this function)

What tree is this supposed to build under?  Certinaly not net-2.6
or net-next-2.6
--

From: Michael S. Tsirkin
Date: Monday, May 3, 2010 - 12:55 am

The reason is it needs to be applied on top of the patch that adds the
In other words, this will be included in a pull request that I
intend to send out shortly.

-- 
MST
--

From: David Miller
Date: Monday, May 3, 2010 - 1:00 am

From: "Michael S. Tsirkin" <mst@redhat.com>

works for me:

Acked-by: David S. Miller <davem@davemloft.net>
--

Previous thread: [PATCHv3] mtd: cfi_cmdset_0002: Add reboot notifier for AMD flashes by Kevin Cernekee on Thursday, April 29, 2010 - 10:26 am. (2 messages)

Next thread: Re: [v3 PATCH] x86: let 'reservetop' functioning right by Ingo Molnar on Friday, April 30, 2010 - 3:22 am. (2 messages)