So you have multiple options your network card supports such as auto-negotiation, different speeds, and half or full duplexing.
To set these options in linux, you can use the ethtool utility.

Here is an example output about one of my interfaces:

# ethtool eth1 Settings for eth1: 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: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on MDI-X: off Supports Wake-on: pumbag Wake-on: g Current message level: 0x00000001 (1) Link detected: yes

Now lets say you want to set it to 100mb and turn off auto negotiation as well as make your nic use half duplex (which sucks, dont do it, this is just an example.).
Use the following:

ethtool -s eth1 duplex half speed 100 autoneg off

It’s as easy as that. You don’t have to take the interface down either just run this command (while the interface is up or down) and you’re good to go.

Mario Loria is a builder of diverse infrastructure with modern workloads on both bare-metal and cloud platforms. He's traversed roles in system administration, network engineering, and DevOps. You can learn more about him here.