Revision 1faac1f7 net/tap.c
b/net/tap.c | ||
---|---|---|
243 | 243 |
int tso6, int ecn, int ufo) |
244 | 244 |
{ |
245 | 245 |
TAPState *s = vc->opaque; |
246 |
unsigned int offload = 0; |
|
247 |
|
|
248 |
if (csum) { |
|
249 |
offload |= TUN_F_CSUM; |
|
250 |
if (tso4) |
|
251 |
offload |= TUN_F_TSO4; |
|
252 |
if (tso6) |
|
253 |
offload |= TUN_F_TSO6; |
|
254 |
if ((tso4 || tso6) && ecn) |
|
255 |
offload |= TUN_F_TSO_ECN; |
|
256 |
if (ufo) |
|
257 |
offload |= TUN_F_UFO; |
|
258 |
} |
|
259 | 246 |
|
260 |
if (ioctl(s->fd, TUNSETOFFLOAD, offload) != 0) { |
|
261 |
offload &= ~TUN_F_UFO; |
|
262 |
if (ioctl(s->fd, TUNSETOFFLOAD, offload) != 0) { |
|
263 |
fprintf(stderr, "TUNSETOFFLOAD ioctl() failed: %s\n", |
|
264 |
strerror(errno)); |
|
265 |
} |
|
266 |
} |
|
247 |
return tap_fd_set_offload(s->fd, csum, tso4, tso6, ecn, ufo); |
|
267 | 248 |
} |
268 | 249 |
|
269 | 250 |
static void tap_cleanup(VLANClientState *vc) |
Also available in: Unified diff