# fine tuning intel pro 1000 mt



## Johnny2Bad (Nov 16, 2010)

Okay you guys knew I would be back. My appologies to DutchDaemon for re-opening the thread. I swapped the network around so that it was using the motherboard NIC for my LAN and the Intel pro 1000 for internet connectivity.

It worked great for a couple of hours, then the LAN kept dropping out.

So I swapped them back and am at the same point I was when I started out.

Why if em4 is the correct driver for the intel pro 1000 does FreeBSD pick it up as em0? And as it has picked it up with the incorrect driver, how do I go about forcing it to use em4?

Thanking you in advance,
Jonathan.


----------



## wblock@ (Nov 16, 2010)

You have the correct driver.  em(4) is a reference to the em man page in section 4.
em0 is the name of the first Ethernet card.  If you had two cards, you'd have em0 and em1.

As to what is going wrong, can't tell.  You could start by showing the output of ifconfig(8) after the problems start.  For that, see http://forums.freebsd.org/showthread.php?t=17309.


----------



## Johnny2Bad (Nov 17, 2010)

Okay here is the output for ifconfig...

```
msk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=c011a<TXCSUM,VLAN_MTU,VLAN_HWTAGGING,TSO4,VLAN_HWTSO,LINKSTATE>
	ether 00:16:e6:43:e6:38
	inet6 fe80::216:e6ff:fe43:e638%msk0 prefixlen 64 scopeid 0x1 
	inet 210.15.202.208 netmask 0xffffff00 broadcast 210.15.202.255
	nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
	media: Ethernet autoselect (100baseTX <full-duplex,flag0,flag1>)
	status: active
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC>
	ether 00:07:e9:0f:fc:60
	inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
	inet6 fe80::207:e9ff:fe0f:fc60%em0 prefixlen 64 scopeid 0x2 
	nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
	media: Ethernet autoselect (100baseTX <full-duplex>)
	status: active
fwe0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=8<VLAN_MTU>
	ether 02:16:e6:b0:e1:c9
	ch 1 dma -1
fwip0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
	lladdr 0.16.e6.0.0.b0.e1.c9.a.2.ff.fe.0.0.0.0
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
	options=3<RXCSUM,TXCSUM>
	inet 127.0.0.1 netmask 0xff000000 
	inet6 ::1 prefixlen 128 
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x7 
	nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
```

The problems start as soon as I boot the machine, and as you pointed out em0 is the interface in question which should be running at 1000M.

Thanks,
Jonathan.


----------



## wblock@ (Nov 17, 2010)

It's autonegotiating to 100, not 1000.  What model is the switch on the other end of the cable?  Is the cable cat5e?  What happens if you manually force the card to 1000base-TX?


----------



## Johnny2Bad (Nov 17, 2010)

It is a simple network, my FreeBSD box is a gateway to the internet. My client machine is connected via a crossover cable (cat 5) to the server. I was previously running another O/S on the server and it worked fine with the computers connecting at 1000. However upon installing FreeBSD it dropped back to 100.

So no it is not a cat5e cable, however the cable functioned perfectly under the old O/S.

I don't know how to manually force the card to 1000base-TX, so any clues here would help.

Thanks,
Jonathan.


----------



## ondra_knezour (Nov 17, 2010)

```
ifconfig em0 media 1000baseTX
```
Most of network interface settings are done via ifconfig(8) tool, so check it's manpage briefly.


----------



## Johnny2Bad (Nov 17, 2010)

I typed
[CMD=""]ifconfig em0 media 1000baseTX[/CMD]
and according too
[CMD=""]ifconfig[/CMD]
it cetainly did default too 1000, however it says it has no carrier.

Is there a way to either manually restart network services? Or is there a way I can use ifconfig to default to 1000 upon bootup?

Thanks,
Jonathan.


----------



## wblock@ (Nov 17, 2010)

Johnny2Bad said:
			
		

> Is there a way to either manually restart network services? Or is there a way I can use ifconfig to default to 1000 upon bootup?



Yes, to both, but it sounds like you have a hardware problem that wouldn't be helped.  It may be that the FreeBSD em driver is more strict than those in the other operating systems you've tried.  Or it could be that your crossover is not wired correctly for gigabit Ethernet and the drivers for the other OSes compensate.

To restart networking:
`# /etc/rc.d/netif restart`

To force the card to 1000baseTX at startup, modify the ifconfig_em0 statement in /etc/rc.conf:

```
ifconfig_em0="inet 192.168.0.1 netmask 255.255.255.0 media 1000baseTX"
```


----------



## Johnny2Bad (Nov 18, 2010)

After making the above changes, the network card did the same thing ie gave a status of no carrier. And after removing the media part of ifconfig I was only connecting at a max rate of 10M!

So after rebooting both machines, unplugging and plugging back in the cross over cable I managed to get it back to 100M.

Maybe at this point it would be wise for me to invest in a new crossover cable? If that's the case then should it be cat 5e or cat 6? And what is the difference?

Cheers,
Jonathan.


----------



## wblock@ (Nov 18, 2010)

If both ends really support gigabit, a normal non-crossover cable should work.  Gigabit has auto-crossover (which I'd have mentioned earlier--if I'd remembered it).  Cat 6 is just a tighter spec than cat 5.  Cat 6 is the cable you're supposed to use for gigabit.


----------



## Johnny2Bad (Nov 18, 2010)

Well I can purchase a cat 6 crossover cable. I really want this too work at 1000M. But that will have to wait till next payday.

So assuming there is nothing wrong with the network cards (my old boss used to too say "when you assume, you make an ASS out of U and ME both"), this should resolve the issue.

I believe it is the cable because why would it drop too 10M from 100M? Perhaps the cleaning lady ran over the cable last time she was vacuuming and there is a dodgey break in the cable. And as cat 6 is recommended for gigabit as you say, I am using a non-standard configuration, and I don't like using non-standard things.

I will get a cross-over cable, just in case it can't negotiate 1000M. Unless you can verify that should it drop too 100M a non-crossover cable will be fine.

Thanking you,
Jonathan.


----------



## wblock@ (Nov 19, 2010)

The Wikipedia Gigabit Ethernet page is interesting.  According to that, what we are using is really 1000baseT misnamed as 1000baseTX, not true 1000baseTX.  Cat 5 is the minimum for 1000baseT.  Automatic crossover is optional, but it's weird that one OS does it but the other does not.

Try a standard Cat 5 cable before buying a gigabit crossover.


----------



## Johnny2Bad (Nov 20, 2010)

Don't ask me how, but this issue has been resolved for now (touch wood), it appears I had a lot of disk errors on my secondary drive which happens to be my mount point for */usr*. It came to a head a couple of nights ago when my server was rebooting every 20mins, and I pondered what could be causing it too reset/freeze like that.

So I looked through the startup messages and noticed that background checks were being performed due to volumes not being dismounted correctly and luckily it would lock up 20mins into the check before the crash would occur so I managed to find out how to disable the background check and make it a foreground check before it crashed again. Upon rebooting a nasty error occurred when it reached my secondary drive and demanded I do the check manually.

Fortunatley for me it fixed the errors on the drive, and upon another reboot. I noticed something strange. My network was running at 1000M as required.

Thanks for all of your help (I may be back because it seems like a strange resolution to a network error),
Jonathan.


----------

