A while back I spent a few hours trying to figure out why my workstation was only connecting to the LAN at 100Mbit/sec. mii-diag unhelpfully reports 100baseTx-FD even when mii-tool tells me I'm at 1000baseT-HD, which is probably a bug in mii-diag, but in this case I was definitely connecting at 100mbit.
Anyway, today it happened again. Turns out it was the cable: gigabit ethernet uses all 8 wires in the cable, whereas 100baseT uses only 4. So I bet the cable I was using had a flaky wire in one of the wires used only for gigabit.