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 and ia64, and other similar Linux
distributions using 2.4.x kernels. The
driver has been tested up to version 2.4.19.

Only very limited testing has been done on
some CPU platforms other than i386 and ia64.
The Makefile may have to be modified to
include platform compile
switches, and some minor changes in the
source files also be required. On these
platforms, patching the driver into the
kernel is recommended (see below for
instructions).

The 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 respectively.
Identical source files to build the driver
are included in both packages. The tar file
contains additional utilities such as
patches and driver diskette images for
network installation.

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

Note 2: If loading the driver on Red Hat
7.3, Red Hat 2.1 AS, and other newer Red Hat
kernels and patches, it is 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 an
interface alias name from tg3 to bcm5700.
Example:

alias eth0 tg3

Replace tg3 with bcm5700:

alias eth0 bcm5700

See the man pages for ifconfig, rmmod,
modules.conf for more detailed information.
It is also recommended to apply the pci
patch described in the next section.

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 BCM5700
series NICs. Patch files for Red Hat 7.x are
included. Apply the appropriate patch by
running the patch command. For example, on
Red Hat 7.2 for i386, apply the patch by
doing the following:

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 orginal 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
bcm5700 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>

2.
Configure the kernel to include the bcm5700
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:

For network installations through NFS, FTP,
or HTTP (using a network boot disk or PXE),
a driver diskette that contains the bcm5700
driver is needed for Red Hat 7.x. 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.

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

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

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 "Building
Driver From TAR File" for the location of
the installed driver.

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.

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)

mtu

Enables jumbo frames up to the specified MTU
size. The valid range for this parameter is
1500 to 9000. Default is 1500 which is
standard ethernet (non-jumbo) MTU size. Note
that the MTU size excludes the
ethernet header size of 14 bytes. Actual
frame size is MTU size + 14 bytes. Jumbo MTU
sizes are not supported on BCM5705 chips.

Configures the number of transmit
descriptors. Default is 100. The valid range
is from 1 to 600. Note that the driver may
not be able to allocate the required amount
of memory if this parameter is set too high.
This parameter should not be set less than
80 if adaptive_coalesce (see below) is
enabled.

rx_std_desc_cnt

Configures the number of receive descriptors
for frames up to 1528 bytes. Default is 200.
The valid range is from 1 to 511. This
parameter should not be set less than 80 on
systems with high network traffic. Setting
this parameter higher allows the NIC to
buffer larger bursts of network
traffic without dropping frames, especially
on slower systems. Note that the driver may
not be able to allocate the required amount
of memory if this parameter is set too high.
This parameter should not be set less than
50 if adaptive_coalesce (see below) is
enabled.

rx_jumbo_desc_cnt

Configures the number of receive descriptors
for jumbo frames larger than 1528 bytes.
Default is 128 and valid range is from 1 to
255. When jumbo frames larger than 1528
bytes are used, this parameter should not be
set lower than 60 on systems with high
network traffic. Setting this parameter
higher allows the NIC to buffer larger
bursts of jumbo traffic without dropping
frames, especially on slower systems. Note
that each descriptor requires a buffer the
size of a maximum jumbo frame. On systems
with insufficient memory, it may be
necessary to reduce this parameter. This
parameter should not be set less than 50 if
adaptive_coalesce (see below) is enabled.
When the maximum frame size is 1528 or
smaller (MTU size 1514 or smaller), this
parameter is not used and is always 0.

adaptive_coalesce

Enables or disables adaptive adjustments to
the various interrupt coalescing parameters.
Enabling it allows the driver to dynamically
adjust the interrupt coalescing parameters
to achieve high throughput
during heavy traffic and low latency during
light traffic. rx_std_desc_cnt, (and
rx_jumbo_desc_cnt if using jumbo frames)
should not be set less than 50, and
tx_pkt_desc_cnt should not be set less than
80 when this parameter is enabled. The valid
values are:

0 disabled
1 enabled (default)

rx_coalesce_ticks

Configures the number of 1 usec ticks before
the NIC generates receive interrupt after
receiving a frame. This parameter works in
conjunction with the rx_max_coalesce_frames
parameter. Interrupt will be generated when
either of these thresholds is exceeded. 0
means this parameter is ignored and
interrupt will be generated when the
rx_max_coalesce_frames threshold is reached.
The valid range is from 0 to 500, and
default is 100. This parameter is not used
and will be adjusted automatically if
adaptive_coalesce is set to 1.

rx_max_coalesce_frames

Configures the number of received frames
before the NIC generates receive interrupt.
The valid range is from 0 to 100, and
default is 10. This parameter and
rx_coalesce_ticks cannot be both 0,
otherwise no receive interrupts will be
generated. It should also be set lower than
rx_std_desc_cnt (and rx_jumbo_desc_cnt if
using jumbo frames). This parameter is not
used and will be adjusted automatically if
adaptive_coalesce is set to 1.

tx_coalesce_ticks

Configures the number of 1 usec ticks before
the NIC generates transmit interrupt after
transmitting a frame. This parameter works
in conjunction with the
tx_max_coalesce_frames parameter. Interrupt
will be generated when either of these
thresholds is exceeded. 0 means this
parameter is ignored and interrupt will be
generated when the tx_max_coalesce_frames
threshold is reached. The valid range is
from 0 to 500, and default is 400. This
parameter is not used and will be adjusted
automatically if adaptive_coalesce is set to
1.

tx_max_coalesce_frames

Configures the number of transmitted frames
before the NIC generates transmit interrupt.
The valid range is from 0 to 100, and
default is 40. This parameter and
tx_coalesce_ticks cannot be both 0,
otherwise no transmit completion interrupt
will be generated. This parameter should
always be set lower than tx_pkt_desc_cnt.
This parameter is not used and will be
adjusted automatically if adaptive_coalesce
is set to 1.

stats_coalesce_ticks

Configures the number of 1 usec ticks
between periodic statistics block DMAs. The
valid range is from 100 to 3600000000, and
default is 1000000 (1 sec.). 0 is also valid
and is used to disable statistics updates.
This parameter is not used and will be set
to default if adaptive_coalesce is set to 1.

enable_wol

Enables or disables magic packet Wake-On-LAN
when the system is shutdown. Note that not
all systems support Wake-On-LAN. The valid
values are:

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.