
                          Broadcom Corporation
                          16215 Alton Parkway,
                          Irvine, CA 92619-7013
			  
                              Release Notes
                       Broadcom BCM4400 Linux Driver
                              Version 1.0.2
                                09/06/2002

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

  Introduction
  Limitations
  Packaging
  Installing Source RPM Package
  Building Driver From TAR File
  Notes
  Patching PCI Files
  Patching Driver Into Kernel
  Network Installation
  Unloading and Removing Driver
  Module Parameters
  Driver Messages
  Statistics
  Revision History
  
			       
Introduction
============

This file describes the Linux driver for the Broadcom BCM4400 series
10/100 Mbps Ethernet Network Controllers.


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

The current version of the driver has been tested on Red Hat 7.1, 7.2,
7.3, and 8.0 beta Linux distributions for i386 systems, and other similar
Linux distributions using 2.4.x kernels. The driver has been tested up to
kernel version 2.4.18.


Packaging
=========

The driver is released in two packaging formats: source RPM and compressed tar
formats. The file names for the two packages are bcm4400-<version>.src.rpm and
bcm4400-<version>.tar.gz respectively. Identical source files to build the
driver are included in both packages. 


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

1. Install the source RPM package:

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

If installing the driver on SuSE Linux, refer to the Notes section below
before continuing.

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/bcm4400.spec

or

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

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/bcm4400-<version>.i386.rpm

The driver will be installed in the following path:

2.2.x kernels:

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

2.4.x kernels:

    /lib/modules/<kernel_version>/kernel/drivers/net/bcm4400.o

4. Load the driver:

   insmod bcm4400

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

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

1. Create a directory and extract the files:

   tar xvzf bcm4400-<version>.tar.gz

If installing the driver on SuSE Linux, refer to the Notes section below
before continuing.

2. Build the driver bcm4400.o as a loadable module for the running kernel:

   cd src
   make

3. Test the driver by loading it: 

   insmod bcm4400.o

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.

Notes
=====

Note 1: If compiling the driver under SuSE Linux kernel and errors are
reported, follow the general guidelines below to rebuild the kernel
source tree:

cd /usr/src/linux-<kernel_version>.SuSE
cp /boot/vmlinuz.config .config
cp /boot/vmlinuz.version.h include/linux/version.h
cp /boot/vmlinuz.autoconf.h include/linux/autoconf.h
make oldconfig
make dep

where <kernel_version> is the actual kernel version used in the SuSE
distribution. Example: /usr/src/linux-2.4.4.SuSE


Unloading and Removing Driver
=============================

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

rmmod bcm4400


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

rpm -e bcm4400


If the driver was installed using make install from the tar file, the driver
bcm4400.o has to be manually deleted from the system. Refer to the section
"Building Driver From TAR File" for the location of the installed driver.


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 that 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 parameters are listed below.

line_speed

    Selects the line speed of the link. This parameter is used together with
    full_duplex and auto_speed to select the speed and duplexity of the link
    and the setting of autonegotiation.
    
    The valid values are:
    
    0      Autonegotiate for highest speed supported by link partner (default)
    10     10 Mbps
    100    100 Mbps

    If line_speed is set to 10, 100, or 1000, the NIC will autonegotiate 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 autonegotiation. Note that 1000 Mbps must be negotiated for
    copper twisted pair links.

auto_speed

    Enables or disables autonegotiation. The valid values are:

    0      Autonegotiation disabled
    1      Autonegotiation enabled (default)

    Note that this parameter is ignored and assumed 1 if line_speed is set
    to 0.
    
full_duplex

    Selects the duplexity of the link. This paramter is used together with
    line_speed to select the speed and duplexity of the link. Note that this
    parameter is ignored if line_speed is 0.
    
    The valid values are:
    
    0      half duplex
    1      full duplex (default)
    
    
rx_flow_control

    Enables or disables receiving flow control (pause) frames. This parameter
    is used together with auto_flow_control. The valid values are:
    
    0      pause receive disabled (default)
    1      pause receive enabled if auto_flow_control is set to 0, or
           pause receive advertised if auto_flow_control is set to 1

tx_flow_control

    Enables or disables transmitting flow control (pause) frames. This parameter
    is used together with auto_flow_control. The valid values are:
    
    0      pause transmit disabled (default)
    1      pause transmit enabled if auto_flow_control is set to 0, or
           pause transmit advertised if auto_flow_control is set to 1

auto_flow_control

    Enables or disables autonegotiation of flow control. This parameter is used
    together with rx_flow_control and tx_flow_control to determine the
    advertised flow control capability. The valid values are:
    
    0      flow control autonegotiation disabled (default)
    1      flow control autonegotiation enabled with capability specified in
           rx_flow_control and tx_flow_control (only valid if line_speed is
           set to 0 or auto_speed is set to 1)

tx_pkt_desc_cnt

    Configures the number of transmit descriptors. Default is 64. The
    valid range is from 1 to 511.

rx_pkt_desc_cnt

    Configures the number of receive descriptors. Default is 64. The
    valid range is from 1 to 511.


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 4401 Ethernet Driver bcm4400 ver. 1.0.0 (08/21/02)

    Driver signon


eth#: Broadcom BCM4401 100Base-T found at mem f7ffc000, IRQ 18, node addr
0010180407b2

    NIC detected


bcm4400: eth# NIC Link is Up, 100 Mbps full duplex

    Link up and speed indication


bcm4400: eth# NIC Link is Down

    Link down indication


Statistics
==========

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


Revision History
================
1.0.2 (09/06/02)

- Fixed the problem of not passing traffic after stress.

1.0.1 (08/26/02)

- Fixed the problem of resets during heavy traffic.

1.0.0 (08/22/02)

- First release.
