issues with Intel Pro/1000 and 1000baseTX

Bill Moran wmoran at
Thu May 14 15:54:54 UTC 2009

In response to James Tanis <jtanis at>:

> I have a FreeBSD v7.0 box it has two Intel Pro/1000 NICs, the one in 
> question is:
> em1: <Intel(R) PRO/1000 Network Connection Version - 6.7.3> port 
> 0x2020-0x203f mem 0xd8060000-0xd807ffff,0xd8040000-0xd805ffff irq 19 at 
> device 0.1 on pci4
> what we get after boot is:
> mtu 1500
>         ether 00:30:48:xx:xx:xx
>         inet netmask 0xffffff00 broadcast
>         media: Ethernet autoselect (100baseTX <full-duplex>)
>         status: active
> The problem is that the NIC refuses to connect at 1000baseTX.
> It's connected to a HP Procurve 1700-24 switch which supports 1000baseTX 
> on ports 23 and 24. This particular computer is connected on port 24. I 
> have a much older end user system which uses the same card (but earlier 
> revision), runs Windows XP and is plugged in to port 23. The end user 
> system has no problem connecting at 1000baseTX. I have of course tried 
> switching ports.
> Attempting to force 1000baseTX via:
> ifconfig em1 media 1000baseTX mediaopt full-duplex
> gets me:
> status: no carrier
> After forcing the NIC to go 1000baseTX the LEDs on the backpane are both 
> off. I can only come to the conclusion that this is a driver issue based 
> on previous experience and the simple fact that the end user system is 
> capable of connecting at 1000baseTX. Anybody have any suggestions? I'm 
> hoping I'm wrong. I'd rather not do an in-place upgrade, this is a 
> production system and the main gateway for an entire school, when I do 
> not even know for sure whether this will fix the problem. It's worth it 
> to me though, having a 1000baseTX uplink from the switch would remove a 
> major bottleneck for me.

While it's _possible_ that this is a driver issue, it's much more likely
(in my experience) that it's a mismatch between the two network devices
(the HP and the NIC).

Try forcing on both ends (I assume the Procurve will allow you to do that).
One thing I've seen consistently is that if you force the speed/duplex on
one end, the other end will still try to autoneg, and will end up with
something stupid like 100baseT/half-duplex, or will give up and disable
the port.

Also, try autoneg on both ends.  Make absolutely sure the Procurve is set
to autoneg.

Replace the cable.  If the cable is marginal, autoneg will downgrade the
speed to ensure reliability.  Use a cable that you know will produce
1000baseTX because you've tested it on other systems.

Try switching out the NIC.  Manufacturing QA isn't 100% reliable, sometimes
you get a card that's just flaky.

Hope this helps.

Bill Moran

More information about the freebsd-questions mailing list