To force a linux nic to 100Meg Full Duplex for example:

[root@ sm-b01 network-scripts]# mii-tool
eth0: no autonegotiation, 100baseTx-HD, link ok
eth1: no autonegotiation, 100baseTx-HD, link ok
[root@sm-b01 root]# mii-tool -F 100baseTx-FD eth0
[root@sm-b01 root]# mii-tool -F 100baseTx-FD eth1
[root@sm-b01 root]# mii-tool
eth0: 100 Mbit, full duplex, link ok
eth1: 100 Mbit, full duplex, link ok

UPDATE: I have since discovered that mii-tool doesnt support gigabit ethernet NICs, to force these to a particular setting, or to see what setting they have auto-negotiated use ethtool, which is included in RedHat 9, but if you dont have it you can get it from Source Forge.

ethtool can be used to set and get the current state:

[root@mon-b01 root]# ethtool eth1
Settings for eth1:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Advertised auto-negotiation: No
        Speed: 100Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: off
        Supports Wake-on: puag
        Wake-on: g
        Link detected: yes
[root@mon-b01 root]# ethtool -s eth1 speed 100 duplex full

UPDATE: Have found this post which explains how to set the duplex and speed settings permanently on RedHat 9, although will probably work for most distributions.

The options you can pass to the network drivers (for the e100 module) are well documented here (Broken link http://www.scyld.com/network/eepro100.html) and most of the other network drivers are documented back (Broken link http://www.scyld.com/network/index.html#pci) a page.