Back to Contents

Linux Driver Software: Broadcom NetXtreme™ 57XX User Guide

This document describes the installation and configuration of the Linux driver software for the Broadcom NetLink™ Gigabit Ethernet Controller and includes the following sections:

Linux Driver Software


Linux Driver Software

Introduction
Limitations
Packaging
Installing Linux Driver Software
Patching PCI Files
Patching Driver Into Kernel
Network Installation
Removing Linux Driver
Module Parameters
Driver Messages
Statistics


Introduction

This section describes the Linux driver for the Broadcom NetLink BCM5700 series 10/100/1000 Mbps Ethernet Network Controllers.


Limitations

The current version of the Linux driver has been tested on the latest Red Hat and United Linux distributions, as well as other similar Linux distributions for i386, ia64, and x86_64 CPU architecture using 2.4.x kernels. The driver has been tested up to kernel version 2.4.20.

NOTE: It is possible to have Turbo Teaming enabled on the BCM5704 card, but this feature is not supported in Linux.

Back to Top


Packaging

The Linux driver is released in two packaging formats: source RPM and compressed tar formats. The file names for the two packages are bcm5700-<version>.src.rpm and bcm5700-<version>.tar.gz. Identical source files to build the driver are included in both RPM and TAR source packages. The tar file contains additional utilities such as patches and driver diskette images for network installation.

Back to Top


Installing Linux Driver Software

The section describes the following Linux driver installations:

NOTE: On newer Distributions and Kernels, it may be necessary to remove the tg3 driver before loading the Broadcom BCM5700 driver. Follow the instructions in the “Removing the tg3 Driver” section.

Installing Source RPM Package

  1. Install the source RPM package:

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

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

    cd /usr/src/{redhat,OpenLinux,turbo,packages,rpm ..}
    rpm -bb SPECS/bcm5700.spec or rpmbuild -bb SPECS/bcm5700.spec

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

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

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

    Note that the --force option is needed if installing on some distributions that may already contain an older version of the driver.

    The driver will be installed in one of the following paths:

    /lib/modules/<kernel_version>/net/bcm5700.o

  4. /lib/modules/<kernel_version>/kernel/drivers/net/bcm5700.o

    /lib/modules/<kernel_version>/kernel/drivers/net/bcm/bcm5700.o

    or

    /lib/modules/<kernel_version>/kernel/drivers/addon/bcm5700/bcm5700.o

  5. Load the driver:

    insmod bcm5700

  6. To configure the network protocol and address, refer to Linux-specific documentation.

Building Driver From TAR File

  1. Create a directory and extract the TAR files:

tar xvzf bcm5700-<version>.tar.gz

  1. Build the driver bcm5700.o as a loadable module for the running kernel:

    cd src
    make

  2. Test the driver by loading it:

    insmod bcm5700.o

  3. Install the driver and man page:

    make install

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


  4. To configure network protocol and address, refer to the manuals supplied with your operating system.

Removing the tg3 Driver

If loading the BCM5700 driver on more recent Red Hat distributions and other new kernels and patches, it may be necessary to unload the tg3 driver first if it is loaded. While tg3 is a fully functioning driver written by Red Hat et al, Broadcom recommends users to use the BCM5700 driver written and tested by Broadcom. Use ifconfig to bring down all eth# interfaces used by tg3 and do the following to unload the tg3 driver.

rmmod tg3

It may also be necessary to manually edit the file /etc/modules.conf to change the interface alias name from tg3 to bcm5700. Example:

alias eth0 tg3

Replace tg3 with bcm5700

alias eth0 bcm5700

For more detailed Linux specific information on ifconfig, rmmod, or modules.conf, please see the respective man pages.

Back to Top


Patching PCI Files (Optional)

To use the Red Hat kudzu hardware detection utility, a number of files containing PCI vendor and device information need to be patched with information on the BCM570x series NICs. The most recent Red Hat distributions are included. Apply the appropriate patch by running the patch command. For example, on Red Hat 8.0 for i386, apply the patch by doing the following:

patch -N -p1 -d /usr < pci-rh80-i386.patch

Run kudzu:

kudzu

Back to Top


Patching Driver Into Kernel (Optional)

Patch files are included for patching the driver into some of the latest 2.4.x kernel source trees. This step is optional and should only be done by users familiar with configuring and building the kernel. The patch will modify the original kernel's source code.

Follow the following steps to patch the driver into kernel:

1. Select the patch file that matches your kernel and apply the patch:

patch -p1 -d <kernel_src_root> < bcm5700-<version>-2.4.<x>.patch

where <version> is the version of the BCM570x driver and 2.4.<x> is the version of the kernel to patch (e.g., 2.4.10).

NOTE: <kernel_src_root> is usually /usr/src/linux or /usr/src/linux-2.4.<x>
  1. Configure the kernel to include the BCM570x driver. It can be found under Network Device Support > Ethernet (1000 Mbit) > Broadcom BCM5700 support when make menuconfig is run. Select built-in or module for the driver:
  2. cd <kernel_src_root>
    make menuconfig

  3. Compile the kernel:

    make dep
    make clean
    ....
    ....

Back to Top


Network Installation

For network installations through NFS, FTP, or HTTP (using a network boot disk or PXE), a driver diskette that contains the BCM570x driver may be needed. The driver diskette images for the most recent Red Hat versions are included. Boot drivers for other Linux versions can be compiled by modifying the Makefile and the make environment. Further information is available from Red Hat's website, http://www.redhat.com.

To create the driver diskette, select the appropriate image file and do the following:

dd if=dd.img of=/dev/fd0H1440.

Back to Top


Removing the Linux Driver

The section describes Removing of the following Linux drivers:

Removing the Driver from an RPM Installation

To unload the driver, use ifconfig to bring down all eth# interfaces opened by the driver, then do the following:

rmmod bcm5700


If the driver was installed using rpm, do the following to remove it:

rpm -e bcm5700

Removing the Driver from a TAR Installation

If the driver was installed using make install from the tar file, the driver bcm5700.o has to be manually deleted from the system. Refer to the section Installing Source RPM Package for the location of the installed driver.

Back to Top


Module Parameters

Optional parameters for the driver can be supplied as command line arguments to the insmod command. Typically, these parameters are set in the file /etc/modules.conf (see the man page for modules.conf). These parameters take the form

<parameter>=value[,value,...]

where the multiple values for the same parameter are for multiple NICs installed in the system.

NOTE: The default or other meaningful values will be used when invalid values are selected. Some combinations of parameter values may conflict and lead to failures. The driver cannot detect all such conflicting combinations.

All the module parameters are listed below.

If line-speed is set to 10, 100, or 1000, the NIC will auto-negotiate for the selected speed (and selected duplexity) if auto-speed is set to 1. If auto-speed is set to 0, the selected speed and duplexity will be set without auto-negotiation Note that 1000 Mbps must be negotiated for copper twisted pair links.

Note that this parameter is ignored and assumed 1 if line-speed is set to 0.

Enables or disables TCP Segmentation Option (TSO) when using kernels that support it.

Back to Top


Driver Messages

The following are the most common sample messages that may be logged in the file /var/log/messages. Use dmesg -n <level> to control the level at which messages will appear on the console. Most systems are set to level 6 by default.

Broadcom Gigabit Ethernet Driver bcm5700 with Broadcom NIC Extension (NICE) ver. 5.0.17 (01/10/03)

Driver signon

eth#: Broadcom BCM5701 1000Base-T found at mem faff0000, IRQ 16, node addr 0010180402d8
eth#: Broadcom BCM5701 Integrated Copper transceiver found
eth#: Scatter-gather ON, 64-bit DMA ON, Tx Checksum ON, Rx Checksum ON

NIC detected

bcm5700: eth# NIC Link is Up, 1000 Mbps full-duplex

Link up and speed indication

bcm5700: eth# NIC Link is Down

Link down indication

Back to Top


Statistics

Detailed statistics and configuration information can be viewed in the file /proc/net/nicinfo/eth#.info.


Back to Contents