Can't set up NIC to establish Gigabit link on Linux

I have Ubuntu 11.10 64 bits with one (actually two, but only one is connected) Intel 82578 Gigabit Network Card which is working on 100 Mbps and I want it to work on 1000 Mbps, but I can't. How can I find out what's wrong?

Here's what happens when I try to set the speed with ethtool:

# ethtool -s eth0 speed 1000
Cannot advertise speed 1000

I also tried this and lost network connectivity:

# ethtool -s eth0 speed 1000 duplex full

I'm running out of ideas on where to look.

Some information:

The server is connected to a Cisco RVS4000 router which has all active ports configured to work @ 1000 Mbps Full Duplex with auto negotiation. In fact, there's another server connected to another port of the router, which is working fine at 1000 Mbps.

Info about the server I'm having problems with:

lshw:

# lshw -C network
  *-network               
       description: Ethernet interface
       product: 82578DM Gigabit Network Connection
       vendor: Intel Corporation
       physical id: 19
       bus info: pci@0000:00:19.0
       logical name: eth0
       version: 05
       serial: 00:1e:67:15:2b:f1
       size: 100Mbit/s
       capacity: 1Gbit/s
       width: 32 bits
       clock: 33MHz
       capabilities: pm msi bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=e1000e driverversion=1.3.10-k2 duplex=full firmware=0.10-2 ip=192.168.1.12 latency=0 link=yes multicast=yes port=twisted pair speed=100Mbit/s
       resources: irq:45 memory:b1a00000-b1a1ffff memory:b1a24000-b1a24fff ioport:2020(size=32)
  *-network
       description: Ethernet interface
       product: 82574L Gigabit Network Connection
       vendor: Intel Corporation
       physical id: 0
       bus info: pci@0000:03:00.0
       logical name: eth1
       version: 00
       serial: 00:1e:67:15:2b:f0
       capacity: 1Gbit/s
       width: 32 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=e1000e driverversion=1.3.10-k2 firmware=1.9-0 latency=0 link=no multicast=yes port=twisted pair
       resources: irq:16 memory:b1900000-b191ffff ioport:1000(size=32) memory:b1920000-b1923fff

ethtool

# ethtool eth0
Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 100Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 2
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: on
    Supports Wake-on: pumbg
    Wake-on: g
    Current message level: 0x00000001 (1)
                   drv
    Link detected: yes

dmesg's info about the network driver:

# dmesg |grep e1000e
[    1.938726] e1000e: Intel(R) PRO/1000 Network Driver - 1.3.10-k2
[    1.938729] e1000e: Copyright(c) 1999 - 2011 Intel Corporation.
[    1.938764] e1000e 0000:00:19.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    1.938775] e1000e 0000:00:19.0: setting latency timer to 64
[    1.938878] e1000e 0000:00:19.0: irq 45 for MSI/MSI-X
[    2.181735] e1000e 0000:00:19.0: eth0: (PCI Express:2.5GT/s:Width x1) 00:1e:67:15:2b:f1
[    2.181737] e1000e 0000:00:19.0: eth0: Intel(R) PRO/1000 Network Connection
[    2.181771] e1000e 0000:00:19.0: eth0: MAC: 9, PHY: 9, PBA No: 0310FF-0FF
[    2.181785] e1000e 0000:03:00.0: Disabling ASPM L0s 
[    2.181799] e1000e 0000:03:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    2.181816] e1000e 0000:03:00.0: setting latency timer to 64
[    2.182046] e1000e 0000:03:00.0: irq 46 for MSI/MSI-X
[    2.182050] e1000e 0000:03:00.0: irq 47 for MSI/MSI-X
[    2.182053] e1000e 0000:03:00.0: irq 48 for MSI/MSI-X
[    2.293669] e1000e 0000:03:00.0: eth1: (PCI Express:2.5GT/s:Width x1) 00:1e:67:15:2b:f0
[    2.293672] e1000e 0000:03:00.0: eth1: Intel(R) PRO/1000 Network Connection
[    2.293754] e1000e 0000:03:00.0: eth1: MAC: 3, PHY: 8, PBA No: 1010FF-0FF
[   15.316964] e1000e 0000:00:19.0: irq 45 for MSI/MSI-X
[   15.372707] e1000e 0000:00:19.0: irq 45 for MSI/MSI-X
[   19.897407] e1000e: eth0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: Rx
[   19.897412] e1000e 0000:00:19.0: eth0: 10/100 speed: disabling TSO

Sounds like there's something wrong with the switch port, or with the physical media. If your autonegotiate puts you at 100Mb and you can't force it to 1Gb, then you've likely got a physical problem.

That said, if you're going to force 1Gb/s, you should make sure you do it on both sides. Don't take the NIC off of auto without also taking the corresponding switch port off of auto.