                           Installation Notes
                     Broadcom NetXtremeII Linux Drivers
                                10/27/2008

                          Broadcom Corporation
                         5300 California Avenue,
                            Irvine, CA 92617

               Copyright (c) 2004 - 2008 Broadcom Corporation
                           All rights reserved


Table of Contents
=================

  Introduction
  Limitations
  Packaging
  Installing Source RPM Package
  Building Driver From TAR File
 

Introduction
============

This file describes the installation procedures for the following
Broadcom Linux drivers:

- bnx2 driver for the Broadcom NetXtreme II BCM5706/BCM5708/5709/5716
  10/100/1000/2500/10000 Mbps PCIX/PCIE Ethernet Network Controller.

- bnx2x driver for the Broadcom NetXtremeII BCM57710/BCM57711/BCM57711E
  10/100/1000/2500/10000 Mbps PCIE Ethernet Network Controller.

- cnic driver that supports additional features required by the bnx2i iSCSI
  offload driver. The bnx2i iSCSI driver is packaged separately. 


Limitations
===========

The current versions of the drivers have been tested on 2.4.x kernels starting
from 2.4.24 and all 2.6.x kernels. The driver may not compile on kernels
older than 2.4.24. Testing is concentrated on i386 and x86_64 architectures.
Only limited testing has been done on some other architectures.

Minor changes to some source files and Makefile may be needed on some
kernels.

Additionally, the Makefile will not compile the cnic driver on kernels
older than 2.6.16. iSCSI offload is only supported on 2.6.16 and newer
kernels.


Packaging
=========

The driver is released in two packaging formats: source RPM and compressed tar
formats. The file name for the source RPM is:

netxtreme2-<version>.src.rpm

The file name for the tar archive is:
netxtreme2-<version>.tar.gz.

Identical source files to build the drivers are included in both packages.


Installing Source RPM Package
=============================

The following are general guidelines for installing the driver.

1. Install the source RPM package:

   rpm -ivh netxtreme2-<version>.src.rpm

2. CD to the RPM path and build the binary driver for your kernel:

   cd /usr/src/{redhat,OpenLinux,turbo,packages,rpm ..}

   rpm -bb SPECS/netxtreme2.spec

or

   rpmbuild -bb SPECS/netxtreme2.spec (for RPM version 4.x.x)

Note that the RPM path is different for different Linux distributions.

The driver will be compiled for the running kernel by default. To build
the driver for a kernel different than the running one, specify the
kernel by defining it in KVER:

   rpmbuild -bb SPECS/netxtreme2.spec --define "KVER <kernel version>"

where <kernel version> in the form of 2.x.y-z is the version of another
kernel that is installed on the system.

3. Install the newly built package (driver and man page):

   rpm -ivh RPMS/<arch>/netxtreme2-<version>.<arch>.rpm

where <arch> is the machine architecture such as i386:

   rpm -ivh RPMS/i386/netxtreme2-<version>.i386.rpm

Note that the --force option may be needed on some Linux distributions
if conflicts are reported.

The drivers will be installed in the following path:

2.4.x kernels:

    /lib/modules/<kernel_version>/kernel/drivers/net/bnx2.o
    /lib/modules/<kernel_version>/kernel/drivers/net/bnx2x.o

2.6.0 kernels:

    /lib/modules/<kernel_version>/kernel/drivers/net/bnx2.ko
    /lib/modules/<kernel_version>/kernel/drivers/net/bnx2x.ko

2.6.16 and newer kernels:

    /lib/modules/<kernel_version>/kernel/drivers/net/bnx2.ko
    /lib/modules/<kernel_version>/kernel/drivers/net/bnx2x.ko
    /lib/modules/<kernel_version>/kernel/drivers/net/cnic.ko

4. Unload existing driver if necessary:

   rmmod bnx2
   rmmod bnx2x

If the cnic driver is loaded, it should also be unloaded:

   rmmod cnic

5. Load the bnx2 driver for the BCM5706/BCM5708/5709/5716 devices:

   insmod bnx2.o
or
   insmod bnx2.ko (on 2.6.x kernels)
or
   modprobe bnx2

To load the bnx2x driver for the BCM57710/BCM57711/BCM57711E devices:

   insmod bnx2x.o
or
   insmod bnx2x.ko (on 2.6.x kernels)
or
   modprobe bnx2x

To load the cnic driver:

   insmod cnic.ko
or
   modprobe cnic

6. To configure network protocol and address, refer to various Linux
documentations.


Building Driver From TAR File
=============================

The following are general guidelines for installing the driver.

1. Create a directory and extract the files:

   tar xvzf netxtreme2-<version>.tar.gz

2. Build the drivers as a loadable module for the running kernel:

   make

The driver will be compiled for the running kernel by default. To build
the driver for a kernel different than the running one, specify the
kernel by defining it in KVER:

  make KVER=<kernel version>

where <kernel version> in the form of 2.x.y-z is the version of another
kernel that is installed on the system.

3. Test the driver by loading it (Same procedures as described in the 
   Source RPM section above).

4. Install the driver and man page:

   make install

See RPM instructions above for the location of the installed driver.

5. To configure network protocol and address, refer to various Linux
documentations.

