3:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168 PCI Express Gigabit Ethernet controller (rev 06)
I found that I have to download and install them directly from realtek since - perhaps - my .config wasn't correct. I downloaded version
r8168-8.036.00
.Nevertheless, when I tried to install the drivers for
3.11.0-rc7
I found that they didn't compile:1 2 3 4 5 6 7 8 9 10 11 | r8168-8.036.00/src/r8168_n.c: In function ‘rtl8168_rx_vlan_skb’: r8168-8.036.00/src/r8168_n.c:2237:9: error: too few arguments to function ‘__vlan_hwaccel_put_tag’ In file included from r8168-8.036.00/src/r8168_n.c:46:0: include/linux/if_vlan.h:236:31: note: declared here r8168-8.036.00/src/r8168_n.c: In function ‘rtl8168_hw_set_features’: 8168-8.036.00/src/r8168_n.c:2298:25: error: ‘NETIF_F_HW_VLAN_RX’ undeclared (first use in this function) r8168-8.036.00/src/r8168_n.c:2298:25: note: each undeclared identifier is reported only once for each function it appears in r8168-8.036.00/src/r8168_n.c: In function ‘rtl8168_init_one’: r8168-8.036.00/src/r8168_n.c:16198:26: error: ‘NETIF_F_HW_VLAN_TX’ undeclared (first use in this function) r8168-8.036.00/src/r8168_n.c:16198:47: error: ‘NETIF_F_HW_VLAN_RX’ undeclared (first use in this function) make[3]: *** [r8168-8.036.00/src/r8168_n.o] Error 1 |
So it appears there are 2 issues.
- The first is that the number of arugments for
__vlan_hwaccel_put_tag
is wrong. This appears to be a breaking change toif_vlan.h
in the kernel introduced here. So AFAIK the quick fix is just to add an extra parameter indicating the protocol. Here, I think you puthtons(ETH_P_8021Q)
but someone much wiser can correct me there. That's what I put and it seemed to work for me. - The second issue is that a
#define
has been renamed. TheNETIF_F_HW_VLAN_{R,T}X
defines have been changed toNETIF_F_HW_VLAN_CTAG_{R,T}X
in this change.
This isn't the most scalable of fixes since it's not backwards compatible so I guess the vendor will have to apply to kung-foo using the
KERNEL_VERSION
macro. I didn't bother to look at exactly which kernel version this was broken in.HTH.