On RedHat (based) Linux:
Edit /etc/sysconfig/network-scripts/ifcfg-eth0 file for eth0 interface.
On my Fedora15, the file looks like the following:
So, open the corresponding file according to your need, then append the following line:
ETHTOOL_OPTS="speed 100 duplex full autoneg off"
Save the file, and restart network interface by executing the following command:
# /etc/init.d/network restart
The previous example is for setting the NIC to 100Mbps, full duplex and no auto negotiation.
If you want 1000Mbs use the following configuration:
ETHTOOL_OPTS="speed 1000 duplex full autoneg off"
ETHTOOL_OPTS="speed 1000 duplex full autoneg on"
For Ubuntu and perhaps Debian and other Debian based Linux, edit /etc/network/interfaces, and add pre-up statment, so it will look like something like the following:
iface eth0 inet static
pre-up /usr/sbin/ethtool -s eth0 speed 1000 duplex full
Refer to this link for more information.
Edit /etc/network/interfaces and add the following line:
pre-up /usr/sbin/ethtool -s $IFACE autoneg off 100 duplex full