
                   Broadcom NetXtreme 1Gb Driver For Solaris

                  Copyright (c) 2008-2013 Broadcom Corporation
                              All rights reserved.

Contents

I. Introduction

II. Installing

III. Configuration

IV. PXE


I. Introduction
   ============

This driver is a modified version of the open source bge driver found in
Solaris. Note that bge conflicts with the bcme driver for many devices and
they cannot both be installed on a system at the same time. This bge driver
is being actively developed and supersedes bcme.


II. Installing
    ==========

II(a). Driver update during Solaris Installation

The driver update (DU) images are used to install the driver during the
installation of Solaris. Using the Solaris text installer there is an
option to "Apply driver updates". Selecting this will bring up another
menu asking for the location of the media. The two easiest options are
either a CD/DVD or a USB Flash drive.

For a CD/DVD simply burn the BRCMbge-<platform>-<arch>-X.Y.Z_DU.iso image
to a disk. Then when prompted for the media location, eject the Solaris disk
and insert the driver update disk. Select the CD/DVD location option and the
driver will be installed. See below for possible errors. Once complete eject
the driver update disk and insert the Solaris disk.

For a USB Flash drive a "DU" directory must be located at the top level of
the drive. Note that the DU tar contains some symlinks which do not transfer
over properly to a FAT32 formatted flash drive. Follow these steps:

1. Mount flash drive:
   # mount /dev/<usb_flash> /media/usb

2. Untar DU image and copy to the flash drive:
   # tar -xvf BRCMbge-<platform>-<arch>-X.Y.Z_DU.tar
   # cp -r BRCMbge-<platform>-<arch>-X.Y.Z_DU/DU /media/usb

3. Fix the symlinks on the flash media. Take note of the original links
   you see after untarring the image. The links are based on the CPU
   architecture and differ between SPARC and x86. For example with x86:
   # cd /media/usb/DU/sol_210
   # cp -r i386 i86pc

4. Unmount flash drive:
   # umount /media/usb

Now simply insert the flash drive into the Solaris system and select the mass
storage device option. See below for possible errors. Once complete pull out
the flash drive.

If the driver does not install properly take note of any warning or error
messages presented. You'll have the option to drop into a shell and see the
actual log output from the driver update installation. Chances are there might
be a conflict with a pre-existing package or the inbox version of the driver.
This can be fixed by running "pkgrm <pkg>" or "rem_drv <drv>" appropriately.

II(b). Post Solaris Installation

1. Change directory to where BRCMbge-<platform>-<arch>-X.Y.Z.pkg resides.
2. pkgadd -d BRCMbge-<platform>-<arch>-X.Y.Z.pkg

   OR

1. Change directory to where BRCMbge-<platform>-<arch>-X.Y.Z.tar.Z resides.
2. uncompress BRCMbge-<platform>-<arch>-X.Y.Z.tar.Z
   tar -xvf BRCMbge-<platform>-<arch>-X.Y.Z.tar
   pkgadd -d .

2(!). If installing on a fresh install of Solaris you will have a conflict
   with the inbox driver which must first be removed. The "checkinstall"
   script in the BRCMbge package will prevent installation over an existing
   driver so examine the output from pkgadd carefully. The inbox driver
   cannot be uninstalled with the pkgrm command since there are no package
   remove scripts in the package directory under /var/sadm/pkg. Use the
   following steps to remove the inbox driver before performing a pkgadd of
   BRCMbge:

   a. Remove the inbox package directory:
        rm -rf /var/sadm/pkg/SUNWbge
        [or]
        mv /var/sadm/pkg/SUNWbge /var/sadm/pkg/SUNWbge.inbox

   b. Remove the driver:
        rem_drv bge

   c. Verify bge is not running:
        modinfo | grep bge

   d. If it is running then unplumb all bge interfaces and try to unload it:
        modunload -i `modinfo | grep bge | awk '{ print $1; }'`

   e. If it doesn't unload then reboot.

   f. Now you can perform the pkgadd as normal in step 2 above.


III. Configuration
     =============

All configuration of the bge driver is performed by modifying the bge.conf
configuration file.  Property changes to this file remain persistent after
the driver is reloaded.  Use ndd/dladm to dynamically change a variable when
and interface is already plumbed.

See bge.conf for configuration details.


IV. PXE
    ===

When creating a PXE installation image you must take extra precaution to remove
the inbox driver.  Assuming you have already ran "setup_install_server" from
the Solaris installation ISO and the media is under "/export/install", proceed
as follows to update the miniroot with the latest bge driver:

  # /boot/solaris/bin/root_archive unpackmedia /export/install /export/foo
  # rem_drv -b /export/foo bge
  # cd /export
  # pkgtrans BRCMbge-<platform>-<arch>-X.Y.Z.pkg .
  # cd BRCMbge/install
  # export BASEDIR=/export/foo
  # sh ./preinstall
  # sh ./postinstall
  # unset BASEDIR
  # cd ..
  # cp -f reloc/kernel/drv/bge* /export/foo/kernel/drv
  # cp -f reloc/kernel/drv/amd64/bge* /export/foo/kernel/drv/amd64
  # /boot/solaris/bin/root_archive packmedia /export/install /export/foo

