Subject: eth0: set_features() failed (-1); wanted 0x0000000000004000, left 0x0000000000004800

From: Arthur Marsh <[email-masked]>
Date: Sat, 14 Nov 2015 13:46:52 +1030

Hi, I'm not sure if this is an actual error or just an informational 
message but on this pc (with a single-core AMD Athlon(tm) 64 Processor 
3200+) I've been getting the following:

Nov 13 18:16:12 localhost kernel: [    0.938025] via-rhine 0000:00:12.0 
eth0: set_features() failed (-1); wanted 0x0000000000004000, left 
0x0000000000004800
Nov 13 18:16:12 localhost kernel: [    0.938574] via-rhine 0000:00:12.0 
eth0: VIA Rhine II at 0x1e000, 00:13:d4:cc:9b:57, IRQ 23
Nov 13 18:16:12 localhost kernel: [    0.939418] via-rhine 0000:00:12.0 
eth0: MII PHY found at address 1, status 0x786d advertising 01e1 Link 45e1

The Ethernet card still works nonetheless.

git-bisect showed that the:

eth0: set_features() failed (-1); wanted 0x0000000000004000, left 
0x0000000000004800

messages started with the following commit:

  git bisect good
e7868a85e1b26bcb2e71088841eec1d310a97ac9 is the first bad commit
commit e7868a85e1b26bcb2e71088841eec1d310a97ac9
Author: Jarod Wilson <[email-masked]>
Date:   Tue Nov 3 23:09:32 2015 -0500

     net/core: ensure features get disabled on new lower devs

     With moving netdev_sync_lower_features() after the .ndo_set_features
     calls, I neglected to verify that devices added *after* a flag had been
     disabled on an upper device were properly added with that flag 
disabled as
     well. This currently happens, because we exit 
__netdev_update_features()
     when we see dev->features == features for the upper dev. We can 
retain the
     optimization of leaving without calling .ndo_set_features with a bit of
     tweaking and a goto here.

     Fixes: fd867d51f889 ("net/core: generic support for disabling 
netdev feature
s down stack")
     CC: "David S. Miller" <[email-masked]>
     CC: Eric Dumazet <[email-masked]>
     CC: Jay Vosburgh <[email-masked]>
     CC: Veaceslav Falico <[email-masked]>
     CC: Andy Gospodarek <[email-masked]>
     CC: Jiri Pirko <[email-masked]>
     CC: Nikolay Aleksandrov <[email-masked]>
     CC: Michal Kubecek <[email-masked]>
     CC: Alexander Duyck <[email-masked]>
     CC: [email-masked]
     Reported-by: Nikolay Aleksandrov <[email-masked]>
     Signed-off-by: Jarod Wilson <[email-masked]>
     Signed-off-by: David S. Miller <[email-masked]>

:040000 040000 a0e2932a56d968706558a674f3e071de5e636fe1 
af99ee2c01e95f0dbb46ad69
ed39e0f14a50aa2d M      net

The Ethernet card on this machine is identified as:

# lspci -nnvv -s 0:0:12.0
00:12.0 Ethernet controller [0200]: VIA Technologies, Inc. VT6102/VT6103 
[Rhine-II] [1106:3065] (rev 7c)
         Subsystem: ASUSTeK Computer Inc. A7V600-X Motherboard [1043:80ed]
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- 
ParErr- Stepping- SERR+ FastB2B- DisINTx-
         Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium 
 >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
         Latency: 64 (750ns min, 2000ns max), Cache Line Size: 64 bytes
         Interrupt: pin A routed to IRQ 23
         Region 0: I/O ports at e000 [size=256]
         Region 1: Memory at ff6ff800 (32-bit, non-prefetchable) [size=256]
         Capabilities: [40] Power Management version 2
                 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA 
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                 Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
         Kernel driver in use: via-rhine

Full dmesg output and kernel config are attached.

Apologies if this is not a software bug, I have only seen this problem 
on this particular machine in the last few days.

Arthur.