[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 14/15] net: move tap_set_offload() code into tap-lin
From: |
Mark McLoughlin |
Subject: |
[Qemu-devel] [PATCH 14/15] net: move tap_set_offload() code into tap-linux.c |
Date: |
Thu, 22 Oct 2009 17:49:15 +0100 |
TUNSETOFFLOAD is only available on Linux
Signed-off-by: Mark McLoughlin <address@hidden>
---
net/tap-aix.c | 5 +++++
net/tap-bsd.c | 5 +++++
net/tap-linux.c | 26 ++++++++++++++++++++++++++
net/tap-solaris.c | 5 +++++
net/tap.c | 21 +--------------------
net/tap.h | 1 +
6 files changed, 43 insertions(+), 20 deletions(-)
diff --git a/net/tap-aix.c b/net/tap-aix.c
index 27143ff..0de3dd9 100644
--- a/net/tap-aix.c
+++ b/net/tap-aix.c
@@ -40,3 +40,8 @@ int tap_probe_vnet_hdr(int fd)
{
return 0;
}
+
+void tap_fd_set_offload(int fd, int csum, int tso4,
+ int tso6, int ecn, int ufo)
+{
+}
diff --git a/net/tap-bsd.c b/net/tap-bsd.c
index 1cdde90..1e85a3c 100644
--- a/net/tap-bsd.c
+++ b/net/tap-bsd.c
@@ -70,3 +70,8 @@ int tap_probe_vnet_hdr(int fd)
{
return 0;
}
+
+void tap_fd_set_offload(int fd, int csum, int tso4,
+ int tso6, int ecn, int ufo)
+{
+}
diff --git a/net/tap-linux.c b/net/tap-linux.c
index 0059404..b6f1fad 100644
--- a/net/tap-linux.c
+++ b/net/tap-linux.c
@@ -111,3 +111,29 @@ int tap_probe_vnet_hdr(int fd)
return ifr.ifr_flags & IFF_VNET_HDR;
}
+
+void tap_fd_set_offload(int fd, int csum, int tso4,
+ int tso6, int ecn, int ufo)
+{
+ unsigned int offload = 0;
+
+ if (csum) {
+ offload |= TUN_F_CSUM;
+ if (tso4)
+ offload |= TUN_F_TSO4;
+ if (tso6)
+ offload |= TUN_F_TSO6;
+ if ((tso4 || tso6) && ecn)
+ offload |= TUN_F_TSO_ECN;
+ if (ufo)
+ offload |= TUN_F_UFO;
+ }
+
+ if (ioctl(fd, TUNSETOFFLOAD, offload) != 0) {
+ offload &= ~TUN_F_UFO;
+ if (ioctl(fd, TUNSETOFFLOAD, offload) != 0) {
+ fprintf(stderr, "TUNSETOFFLOAD ioctl() failed: %s\n",
+ strerror(errno));
+ }
+ }
+}
diff --git a/net/tap-solaris.c b/net/tap-solaris.c
index 3f48e57..614df01 100644
--- a/net/tap-solaris.c
+++ b/net/tap-solaris.c
@@ -193,3 +193,8 @@ int tap_probe_vnet_hdr(int fd)
{
return 0;
}
+
+void tap_fd_set_offload(int fd, int csum, int tso4,
+ int tso6, int ecn, int ufo)
+{
+}
diff --git a/net/tap.c b/net/tap.c
index 3f6722e..9b11071 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -243,27 +243,8 @@ void tap_set_offload(VLANClientState *vc, int csum, int
tso4,
int tso6, int ecn, int ufo)
{
TAPState *s = vc->opaque;
- unsigned int offload = 0;
-
- if (csum) {
- offload |= TUN_F_CSUM;
- if (tso4)
- offload |= TUN_F_TSO4;
- if (tso6)
- offload |= TUN_F_TSO6;
- if ((tso4 || tso6) && ecn)
- offload |= TUN_F_TSO_ECN;
- if (ufo)
- offload |= TUN_F_UFO;
- }
- if (ioctl(s->fd, TUNSETOFFLOAD, offload) != 0) {
- offload &= ~TUN_F_UFO;
- if (ioctl(s->fd, TUNSETOFFLOAD, offload) != 0) {
- fprintf(stderr, "TUNSETOFFLOAD ioctl() failed: %s\n",
- strerror(errno));
- }
- }
+ return tap_fd_set_offload(s->fd, csum, tso4, tso6, ecn, ufo);
}
static void tap_cleanup(VLANClientState *vc)
diff --git a/net/tap.h b/net/tap.h
index de729a7..16398b5 100644
--- a/net/tap.h
+++ b/net/tap.h
@@ -45,5 +45,6 @@ void tap_set_offload(VLANClientState *vc, int csum, int tso4,
int tso6, int ecn,
int tap_set_sndbuf(int fd, QemuOpts *opts);
int tap_probe_vnet_hdr(int fd);
+void tap_fd_set_offload(int fd, int csum, int tso4, int tso6, int ecn, int
ufo);
#endif /* QEMU_NET_TAP_H */
--
1.6.2.5
- [Qemu-devel] [PATCH 00/15] Some networking code re-organization, Mark McLoughlin, 2009/10/22
- [Qemu-devel] [PATCH 03/15] net: move tap-win32.c under net/, Mark McLoughlin, 2009/10/22
- [Qemu-devel] [PATCH 13/15] net: move tap_probe_vnet_hdr() to tap-linux.c, Mark McLoughlin, 2009/10/22
- [Qemu-devel] [PATCH 06/15] net: split all the tap code out into net/tap.c, Mark McLoughlin, 2009/10/22
- [Qemu-devel] [PATCH 01/15] net: move net-queue.[ch] under net/, Mark McLoughlin, 2009/10/22
- [Qemu-devel] [PATCH 02/15] net: move net-checksum.c under net/, Mark McLoughlin, 2009/10/22
- [Qemu-devel] [PATCH 07/15] net: split BSD tap_open() out into net/tap-bsd.c, Mark McLoughlin, 2009/10/22
- [Qemu-devel] [PATCH 04/15] net: move more stuff into net/tap-win32.c, add net/tap.h, Mark McLoughlin, 2009/10/22
- [Qemu-devel] [PATCH 14/15] net: move tap_set_offload() code into tap-linux.c,
Mark McLoughlin <=
- [Qemu-devel] [PATCH 05/15] net: move tap-linux.h under net/, Mark McLoughlin, 2009/10/22
- [Qemu-devel] [PATCH 08/15] net: move solaris code to net/tap-solaris.c, Mark McLoughlin, 2009/10/22
- [Qemu-devel] [PATCH 12/15] net: move tap_set_sndbuf() to tap-linux.c, Mark McLoughlin, 2009/10/22
- [Qemu-devel] [PATCH 10/15] build: add CONFIG_LINUX, Mark McLoughlin, 2009/10/22
- [Qemu-devel] [PATCH 09/15] net: move AIX code into net/tap-aix.c, Mark McLoughlin, 2009/10/22
- [Qemu-devel] [PATCH 11/15] net: move linux code into net/tap-linux.c, Mark McLoughlin, 2009/10/22
- [Qemu-devel] [PATCH 15/15] net: move UFO support detection to tap-linux.c, Mark McLoughlin, 2009/10/22
- Re: [Qemu-devel] [PATCH 00/15] Some networking code re-organization, Anthony Liguori, 2009/10/22