Table of Contents

Replacing the bnx2 driver

The bnx2 driver is for Broadcom's NetXtreme II (1G, not 10G) series of NICs.

Information Sources

Status

I have confirmed the following cards are working:

The git repository is at: https://git.ipxe.org/people/dewyatt/ipxe.git 5)

Current goals
Completed

Test Setup

My current test NIC is an 39y6070.

My development machine is running Ubuntu and is connected to my test machine via a null modem cable. I use GtkTerm as a serial terminal.

I found it very helpful to wire the power button of my test machine up to the top of my desk. I used some spare wire, a couple female jumper wires (connected to the header on the motherboard), and a pushbutton I desoldered from an old cell phone. This way, I can power cycle the test machine by pushing a button a couple inches from my mouse.

Firmware

The NetXtreme II series of cards require driver-loaded proprietary firmware to function.

The current Linux bnx2 driver uses two separate firmware files 6), one for the RV2P firmware and one for the MIPS firmware.

The MIPS firmware file contains 5 different firmwares, each for a different CPU (there are 6 total 32-bit MIPS CPUs in a bnx2 NIC).

You can use the fw_info tool to print information about the firmware files. Here's an example:

[daniel@daniel-pc gsoc]$ ./fw_info bnx2_bnx2-mips-06-6.2.3.fw 
MIPS firmware
COM (Completion Processor):
    start addr: 0x08000118
    .text:
        addr  : 0x08000000
        len   : 0x00004A68
        offset: 0x000000C8
    .data:
        addr  : 0x00000000
        len   : 0x00000000
        offset: 0x00000000
    .rodata:
        addr  : 0x08004A68
        len   : 0x00000014
        offset: 0x00004B30
...

You can use the fw_elf tool to extract MIPS firmware into a standard ELF to ease disassembly.

3)
Only one of the physical ports can be used
4)
There is a warning about MII reset failing