I have two computers, both openSUSE 13.1 (Bottle) (x86_64) with motherboard gigabi ethernet cards.
They are connected trough a linksys se2800 gigabit switch, and the lights at the switch show that it is connected to 1000Mbps capable ports, but connection runs at 100Mbps.
On one computer, with Asus M4A77TD motherboard “Realtek® 8112L, 1 x Gigabit LAN Controller(s), featuring AI NET2”
andromeda:/home/fernando # ethtool eth0
Settings for eth0:
Supported ports: TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Link partner advertised pause frame use: Symmetric Receive-only
Link partner advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000033 (51)
drv probe ifdown ifup
Link detected: yes
One thing you can do is configure your machine to “gulp” larger amounts of data at a time. By default, Linux in general is tuned to support machines of all sizes, and defaults must support small machines with limited resources which of course is very unlike your network.
Take a look at what I wrote years ago for an older version of openSUSE but still applies and perhaps is more relevant as the years go by as old, 10/100 wired (802.3) becomes more rare all the time. You’ll note that you can change the TCP/IP Congestion Control algorithm to do things like intelligently manage TCP/IP window sizes, expiration, drops, and more across unusually and extremely fast reliable connections, unreliable connections, connections over distance, unusually large number of simultaneous connections, more.
Why may the OS or the driver detect a 100Mbps capable device if the device (the switch) is 1000Mpbs capable and it detects the network card as 1000Mbps capable?
It does seem to be an issue with no certain answer
Googled “Link partner advertised link mode” and got plenty of hits.
Skimming those results…
One or two suggested inadequate hardware, either the switch or the cable. All hardware must support GigE.
None I saw tried simply turning off auto-negotiation and trying to force 1000 bits.
I still highly recommend changing to an appropriate TCP/IP congestion control algorithm and enlarging your network TCP/IP buffers if you have adequate RAM to do so without affecting running applications.
I thought about it, but it seems higly unlikely the same error on both cables
I still highly recommend changing to an appropriate TCP/IP congestion control algorithm and enlarging your network TCP/IP buffers if you have adequate RAM to do so without affecting running applications.
I don’t know why the switch does not advertise 1000Mbps FD, but I don’t see that as a Linux issue or a hardware issue with your laptop NICs either. With regards to the cabling, how long are your device cables, and are they screened? As a quick test, you could connect both laptops to each end of a given cable and see how the negotiation is then reported.
it seems higly unlikely the same error on both cables
Which simply means that both your cables are not 1GbE capable. 100mbs cables use 4 wires (2 pairs); 1GbE cables use all 8 wires (all 4 pairs). They are different cables.