# No network, tg3 driver [SOLVED]

## FatherBusa

I've been tearing my hair out for days trying to get a network on an HP Proliant 380 (rev 8 or 9).  Here's some info:

1. This a rebuild of a box that *was* running without a problem, and it definitely uses the tg3 driver.  What's more, it gets a network without incident from the Gentoo Minimal CD.

2. I began by running oldconfig on the previous kernel config (which was for 3.10.25) on the latest unstable kernel (3.15.6).  Here's a pastebin of the config:  http://pastebin.com/LAvNn7m8.  This didn't work.  It also didn't work when I dialed back to unstable, or when I dialed back to the slot closest to the original (3.10.33).  When I say "didn't work," what I mean is that I get no devices at all.  ifconfig returns net.lo and nothing else.

3. I am running udev 215, but with nothing fancy.  There's nothing in rules.d.

4. I have installed linux-firmware, and have tried both the stable and unstable versions.

5. I have compiled tg3 both as a built in and as a module (with several different kernels).

6. I do get some kind of life out of the card on boot, but in the end it says that I need the correct kernel module for my NIC.

Now, I realize it might be helpful to have the output of lspci and perhaps emerge --info (though this is a new build with CFLAGS set to something like -O2 -native -pipe).  If that's necessary, I can try to pull that stuff onto a usb stick.  But the bottom line is that I feel like I'm really barking up the wrong tree with the stuff I've tried above.

I'm dying here, folks.  Anyone have any ideas?Last edited by FatherBusa on Wed Jul 30, 2014 5:26 pm; edited 1 time in total

----------

## Twenynge

What chip set do you have?  Certain Broadcom chipsets have an issue where improper module loading order breaks networking.  Try running the following:

```
modprobe -r tg3

modprobe broadcom

modprobe tg3
```

Also, dmesg may be useful.  You may find a line that says something like "no PHY devices found".

Note that for the above fix to work, both broadcom and tg3 must be built as modules and /etc/rc.conf must be edited to allow hot plugging.

----------

## FatherBusa

 *Quote:*   

> modprobe -r tg3 
> 
> modprobe broadcom 
> 
> modprobe tg3

 

Thanks.  I've tried that (though I'll try it again just to make sure).  I should also note that the box was previously running with broadcom and tg3 built in without a problem.  If that turns out to be the issue, how would I go about ensuring that the modules are loaded in the correct order?

I'll try to get in and post a dmesg, but I can tell you that the logs do say a lot about PHY.  I thought perhaps I needed BROADCOM_PHY and/or BCM87XX_PHY set, but they weren't set in the previous kernel config and all was well.  There also seems to be some disagreement in the forum over whether those are necessary.

----------

## NeddySeagoon

FatherBusa,

ifconfig only shows network interfaces that are up.

What does

```
ifconfig -a
```

 show?

Are you a victim of udev persistent names?

grep dmesg for eth0, if its there udev will have renamed it.

----------

## FatherBusa

ifconfig -a comes back with eno[0,1,2,3].  On the minimal cd, these were named enp7s0f[1,2,3], and so those are the names I used when I created the symlinks in init.d.

When I create a link to eno0 in init.d, it comes back saying the interface does not exist and that I need the the correct kernel module for my hardware.

The only reference to eth0 that I can see in /etc is in udhcpd.conf.  There's a line that says "interface eth0."

----------

## FatherBusa

Okay, so when I do:

```
modprobe -r tg3

modprobe broadcom

modprobe tg3
```

It comes back and says "module broadcom not found."  Where is that module located in the config?Last edited by FatherBusa on Wed Jul 30, 2014 5:05 pm; edited 1 time in total

----------

## FatherBusa

Here's dmesg (with tg3 compiled as a module):

http://pastebin.com/JHgBK1VP

----------

## Twenynge

That either means you've built it into the kernel or omitted it in your config (I think).  For whatever reason building broadcom into the kernel doesn't work, so I'll need to be a module.  I don't know where it is in the config, but you can search for it after running a make -menuconfig by pressing forward slash "/".  Then type in "broadcom" in the field and press enter.  I *think* the module is named something like "broadcom_phy".

----------

## Twenynge

Looking at your dmesg it doesn't appear that module loading order is your issue.  As I mentioned, my dmesg tells me no PHY devices are found.  It does look like The device is being named "eth0".  Is that what you have in net.conf?

----------

## NeddySeagoon

FatherBusa,

Your system is using eno[0,1,2,3] so thats what you need to use in the net file, as symlinks and so on, or you cat turn network interface renaming off. 

That's in the Wiki article I linked to.

What does lspci -k say about the kernel driver in use.

I don't see a BROADCOM symbol in 3.15.6

----------

## FatherBusa

Solved.  You all rock (as usual).

But actually, the problem appears to have been a moment of colossal stupidity on my part all along.

The links I'd set up in init.d referred to another card (that's used for a SAN).  I had run ifconfig, read the *bottom* of the output, and set the links accordingly.  Changing that over to eno fixed everything.

That still leaves the question of why eth0 is showing up in dmesg.  Could that have to do with dhcpcd.conf?

----------

## NeddySeagoon

FatherBusa,

The kernel names the ethernet interfaces eh0, eth1 ... as they are discovered.

You will see that in dmesg.

Further down in dmesg, you will see that the interfaces have been renamed, once udev becomes aware of the interface.

I can't show that as I either don't use udev at all, or I have interface renaming turned off.

----------

