FS#19912 - Kernel update to 2.6.34-2 bnx2 firmware missing

Attached to Project: Arch Linux
Opened by Fabiano Furtado (fusca) - Wednesday, 23 June 2010, 02:01 GMT
Last edited by Andrea Scarpino (BaSh) - Tuesday, 29 June 2010, 16:50 GMT
Task Type Bug Report
Category Kernel
Status Closed
Assigned To Tobias Powalowski (tpowa)
Thomas Bächler (brain0)
Architecture x86_64
Severity Critical
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 1
Private No

Details

Description:

This post http://bbs.archlinux.org/viewtopic.php?id=99530 describes exactly the problem:


"This morning I conducted a full system upgrade and in the process upgraded to kernel 2.6.34-2 and rebooted. Upon reboot ifconfig -a would not list any eth devices and only listed lo. So I poke around dmesg looking for eth and find nothing. So I find out my ethernet card by:

Code:

lspci | grep Ethernet
03:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet (rev 11)

Then I searched dmesg using:

Code:

dmesg | grep bnx2
Jun 21 12:43:58 kwond-arch1 kernel: bnx2: Broadcom NetXtreme II Gigabit Ethernet Driver bnx2 v2.0.9 (April 27, 2010)
Jun 21 12:43:58 kwond-arch1 kernel: bnx2 0000:03:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
Jun 21 12:43:58 kwond-arch1 kernel: bnx2 0000:03:00.0: firmware: requesting bnx2/bnx2-mips-06-5.0.0.j6.fw
Jun 21 12:43:58 kwond-arch1 kernel: bnx2: Can't load firmware file "bnx2/bnx2-mips-06-5.0.0.j6.fw"

So it looks like in the kernel update, they neglected to put firmware in question in the package. So I searched around the net and found a rpm package that contained the firmware and copied it to my /lib/firmware/bnx2 and now I have my network connection again."

Additional info:
* package version(s): kernel 2.6.34


Steps to reproduce:
pacman -Syu
This task depends upon

Closed by  Andrea Scarpino (BaSh)
Tuesday, 29 June 2010, 16:50 GMT
Reason for closing:  Not a bug
Additional comments about closing:  firmware is provided by linux-firmware 20100623-1
Comment by Thomas Bächler (brain0) - Wednesday, 23 June 2010, 09:53 GMT
We switched from using the firmware files included in the Linux tree to using the linux-firmware tree from git - which is supposed to be more complete. However, this tree lacks the following commits:

Ken Kawasaki (1):
pcnet_cs: add cis of KTI PE520 pcmcia network card

Michael Chan (2):
bnx2: Update firmwares and update version to 2.0.8.
bnx2: Update 5709 MIPS firmware and version to 2.0.15.

Vladislav Zolotarov (1):
bnx2x: Use firmware 5.2.13

One of the commits by Michael Chan is the one that contains the firmware file you miss. I wrote an email to the linux-firmware maintainer, and I can package a new linux-firmware package with the corrected files later.
Comment by Thomas Bächler (brain0) - Wednesday, 23 June 2010, 11:24 GMT
I just released linux-firmware 20100623-1 to testing. Please verify that it fixes the problem (no need to upgrade to testing, you can simply upgrade this one package).
Comment by Fabiano Furtado (fusca) - Wednesday, 23 June 2010, 12:46 GMT
Thank you Thomas! I'll try this upgrade today at night and I'll post the ressult here.
Comment by Thomas Bächler (brain0) - Wednesday, 23 June 2010, 12:48 GMT
For reference, the package has now been synced to some mirrors, kernel.org for example:
pacman -U http://mirrors.kernel.org/archlinux/testing/os/any/linux-firmware-20100623-1-any.pkg.tar.xz
Comment by Fabiano Furtado (fusca) - Wednesday, 23 June 2010, 14:00 GMT
Thomas, I opened the file linux-firmware-20100623-1-any.pkg.tar.xz and notice the file lib/firmware/bnx2/bnx2-mips-09-5.0.0.j15.fw

My missing file is bnx2-mips-09.5.0.0.j9.fw

Will this upgrade work for me?
Comment by Thomas Bächler (brain0) - Wednesday, 23 June 2010, 14:24 GMT
Ah, you are missing a different file - I only looked at the original info.

The bnx2 module indeed only lists bnx2-mips-09-5.0.0.j9.fw, but the firmware archive only contains bnx2-mips-09-5.0.0.j15.fw, which is a newer version. It seems the j9 file was removed after 2.6.34 - it was never included in linux-firmware (only 09-5.0.0.j3 was).

However, it seems the driver will just use the newer firmware file without modifications, so you can just put a symlink from the j9 to the j15 in there. We should maybe backport this patch to 2.6.34: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blobdiff;f=drivers/net/bnx2.c;h=ab0068c7070a55f511277e0ee3460fa846543c50;hp=c281218f6d5e0b95f359663bfe757a1c599e5a18;hb=a931d294042b5bbd8e390c59741b968c11856ac1;hpb=b98eba52784fbd4a96241c5395c2c8d99fdb9433
Comment by Jan de Groot (JGC) - Wednesday, 23 June 2010, 21:07 GMT
Note that kernel26-lts also uses these firmwares. This is the downside of using out-of-kernel firmware. We have to match drivers with the firmware in linux-firmware.
Comment by Thomas Bächler (brain0) - Wednesday, 23 June 2010, 21:16 GMT
These are only very few cases ... most firmware files are not versioned in such a stupid way. In the example above, the bnx2-mips-09-5.0.0.j15.fw and bnx2-mips-09-5.0.0.j9.fw files have the same interface and work with identical drivers, so the version number doesn't matter and thus shouldn't be there. At least in this case, symlinking should work.

We need to watch how many more of these failures we will get and try to fix them one by one.
Comment by Fabiano Furtado (fusca) - Friday, 25 June 2010, 19:49 GMT
People,

I´ve just updated this new linux-firmware packge with pacman -U http://mirrors.kernel.org/archlinux/testing/os/any/linux-firmware-20100623-1-any.pkg.tar.xz and... I've got the same error!

After this, I've created the symlink ("... so you can just put a symlink from the j9 to the j15 in there. ...") like above and my eth0 is back BUT I got a DNS error! Simply my server doesn't respont to any DNS request.

Example:
ping www.google.com
pink: unknow host www.google.com

My resolv.conf file is using an OpenDNS server:
nameserver 208.67.222.222
nameserver 208.67.220.220

... and the DNS from all other computer inside my network is working perfectly.

Before this update, the DNS was fine.

What can I do?

Help!
Comment by Fabiano Furtado (fusca) - Saturday, 26 June 2010, 12:29 GMT
Looking at git.kernel.org, url https://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a931d294042b5bbd8e390c59741b968c11856ac1 and https://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=drivers/net/bnx2.c;h=ab0068c7070a55f511277e0ee3460fa846543c50;hb=a931d294042b5bbd8e390c59741b968c11856ac1, the c code from bnx2.c ([linux/kernel/git/torvalds/linux-2.6.git]/drivers/net/bnx2.c) shows

#define DRV_MODULE_NAME "bnx2"
#define DRV_MODULE_VERSION "2.0.15"
#define DRV_MODULE_RELDATE "May 4, 2010"
#define FW_MIPS_FILE_06 "bnx2/bnx2-mips-06-5.0.0.j6.fw"
#define FW_RV2P_FILE_06 "bnx2/bnx2-rv2p-06-5.0.0.j3.fw"
#define FW_MIPS_FILE_09 "bnx2/bnx2-mips-09-5.0.0.j15.fw"
#define FW_RV2P_FILE_09_Ax "bnx2/bnx2-rv2p-09ax-5.0.0.j10.fw"
#define FW_RV2P_FILE_09 "bnx2/bnx2-rv2p-09-5.0.0.j10.fw"

... but the bnx2/bnx2-mips-09-5.0.0.j9.fw was deleted in git.

Do I need to recompile something else?

Thanks!
Comment by Fabiano Furtado (fusca) - Tuesday, 29 June 2010, 12:27 GMT
It seems that I have a network problem, specifically with my modem. Forget about the DNS problem and thank you!

Loading...