Subject: Re: tap/bridge: Dropping NETIF_F_GSO/NETIF_F_SG

From: Shan Wei <[email-masked]>
Date: Sat, 14 May 2011 14:54:16 +0800

Michał Mirosław wrote, at 05/05/2011 11:26 PM:
> On Wed, May 04, 2011 at 09:18:14PM +0300, Michael S. Tsirkin wrote:
>> BTW, I just noticed that net-next spits out
>> many of the following when I run any VMs:
> [...]
>> tap0: Features changed: 0x40004040 -> 0x401b4849
> 
> Before this message, userspace called ioctl(TIOCSETOFFLOAD)
> turning offloads on.
> 
>> tap0: Dropping NETIF_F_SG since no checksum feature.
>> tap0: Dropping NETIF_F_GSO since no SG feature.
>> tap0: Features changed: 0x401b4849 -> 0x40004040
> 
> And then it probably called ioctl(TIOCSETOFFLOAD) again, disabling them.

[263958.167861] tap1: Dropping NETIF_F_SG since no checksum feature.
[263958.167866] tap1: Dropping NETIF_F_GSO since no SG feature.
[263958.167871] tap1: Features changed: 0x401b4849 -> 0x40004040

See same warning message using tunctl to create a tap device on net-next tree.
But on RHEL6, no warning message.

strace shows no TUNSETOFFLOAD to be used.
Seems that checksum feature is not set when creating tap0 interface.

#strace tunctl -u root -t tap1
open("/dev/net/tun", O_RDWR)            = 3
ioctl(3, TUNSETIFF, 0x7fff789ada10)     = 0
ioctl(3, TUNSETOWNER, 0)                = 0
ioctl(3, TUNSETPERSIST, 0x1)            = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f66aeed9000
write(1, "Set 'tap1' persistent and owned "..., 41Set 'tap1' persistent and owned by uid 0
) = 41
exit_group(0)                           = ?

-- 
Best Regards
-----
Shan Wei