1

I have an Ubuntu 16.04 server connected to a switch and they negotiate a half-duplex connections instead of a full-duplex, and I don't know why. I have tried using another port and cable (which another server uses to successfully connect through full-duplex) but problem persists, so this rules out a cable or switch port problem and I assume that the problem is related to Ubuntu configuration or to the NIC.

# lspci | grep Ethernet
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5722 Gigabit Ethernet PCI Express

# mii-tool -v eno1
eno1: negotiated 1000baseT-HD flow-control, link ok
  product info: vendor 00:50:ef, model 45 rev 0
  basic mode:   autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
  link partner: 1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control

Any ideas about how to fix this and get a full duplex connection (1000baseT-FD)? I don't like forcing the link to 1000baseT-FD, I would prefer to fix/debug autonegotiation so that this mode is automatically selected.

Óscar
  • 1,006

1 Answers1

2

There is a bug in mii-tool that causes HD and FD to be switched around in the case of Gigabit speed links.

You can confirm that the link is actually running 1000baseT-FD by running ethtool:

$ sudo ethtool [interface name] | grep Duplex
         Duplex: full

Alternatively, you can tell from dmesg that the link is running full duplex:

$ dmesg|grep duplex
xxxxxxx      eth0: Link is up at 1000 Mbps, full duplex
Jos
  • 30,529
  • 8
  • 89
  • 96