1000baseT for RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller

I have a Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06) in my new Ubuntu Trusty (14.04.1) server. As you can see here:

root@orac:/home/jj5# lspci
...
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
...

I was having a problem with the card only supporting 100baseT speeds. I downloaded and installed the Realtek driver (and rebooted):

# bunzip2 r8168-8.039.00.tar.bz2
# tar xf r8168-8.039.00.tar
# cd r8168-8.039.00
# ./autorun.sh
# reboot

That didn’t fix the problem.

I installed the ethtool package and ran it:

# apt-get install ethtool
# ethtool p2p1
Settings for p2p1:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: Unknown
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000033 (51)
                               drv probe ifdown ifup
        Link detected: yes

As you can see the speed is 100Mb/s, not 1000Mb/s. It says that 1000baseT full duplex is supported. I tried forcing the speed:

# ethtool -s p2p1 speed 1000 duplex full advertise 0 autoneg off

But that didn’t work. The ethtool program reported the card was still operating and 100Mb/s.

Then I tried plugging in a different cable… and that fixed the problem!