Back to Contents

# Solaris Driver Software: Broadcom NetXtreme™ Gigabit Ethernet Adapter User's Guide

This section contains installation and configuration procedures for the Broadcom NetXtreme™ Gigabit Ethernet Adapter driver for Solaris x86 and Solaris Sparc.

Driver Formats

Installing the Driver

Uninstalling the Driver

Driver Update (DU) Diskette Instruction (Intel Platform Only)

Customizing the Driver Configuration

Customizing the Driver Configuration using the "ndd" Command

## Driver Formats

The driver for Solaris 8.0 is released in three formats:

1. BRCMbcme.pkg : Datastream format
2. BRCMbcme.tar.Z : Compressed and TAR file system format
3. bcmedu.img : Driver Update (DU) binary image which is used to create DU diskette.

## Installing the Driver

1. Change directory to where BRCMbcme.pkg resides
2. pkgadd -d BRCMbcme.pkg

   > > or

   Copy BRCMbcme.tar.Z to /tmp
   cd /tmp
   uncompress BRCMbcme.tar.Z
   tar xvf BRCMbcme.tar
   pkgadd -d /tmp

3. Execute prtconf to determine instance number of the NIC.
4. ifconfig bcme[instance_number] plumb
5. ifconfig bcme[instance_number] ip_address netmask....

To make these changes permanent, follow these steps:

1. Use a text editor (e.g., vi) and create a file named hostname.bcme[instance_number] in the /etc directory. Add the IP address of the interface to this file, then save and exit.
2. Add a proper subnet mask to the file /etc/netmasks.

In Solaris 7.0 (Intel platform), the operating system only allocates 36 pages of 4K physically contiguous memory. The driver needs about 130K of physically contiguous memory per NIC. In order to use more than one NIC the O/S has to allocate more memory. This can be done by setting an O/S system variable "lomempages" in /etc/system. For instance, when 4 NICs are installed in a Solaris 7 system, the physically contiguous memory is calculated as follows:

> 4 NICs * 130K = 520 K ==> 130 pages of 4K is required.

Since this memory might be used by other driver in the system, 200 of 4K of memory is allocated. Add the following line in file /etc/system:

> set lomempages=200

Back to Top

## Uninstalling the Driver

1. ifconfig bcme[instance_number] down
2. ifconfig bcme[instance_number] unplumb
3. pkgrm BRCMbcme

Back to Top

## Driver Update (DU) Diskette Instruction (Intel platform only)

This area contains the Solaris diskette image files(s) and the instructions to create diskettes from these image file(s).

1. Insert a blank diskette into your machine's diskette drive and type one of the following commands to format it:

- If you are using DOS, type:

> format A:

- If you are using the Solaris operating environment, type:

  fdformat -Ud

1. Check to see if Volume Management is running:

- If you are using DOS, type:

  dd filename A:

- If you are using the Solaris operating environment, type:

  volcheck
  ls -l /vol/dev/aliases/floppy0

- If you see a message similar to this:

  lrwxrwxrwx 1 root 34 Jan 21 17:28
  /vol/dev/aliases/floppy0 ->
  /vol/dev/rdiskette0/unnamed_floppy

  Type:

  dd if=bcmedu.img of=/vol/dev/aliases/floppy0
  bs=36k eject floppy0

- If you see this message:

  /vol/dev/aliases/floppy0 not found

  Type:

  dd if=bcmedu.img of=/dev/rdiskette bs=36k

###
Installing Solaris DU Diskette(s)

You can use Solaris DU diskettes in one of two ways:

- To use new drivers to install or upgrade the Solaris operating environment on a machine with new hardware

- To add new drivers to support new hardware on an already installed and booted system

#### Installing Solaris Using DU Diskette(s)

To install Solaris (Intel Platform Edition) using drivers on the DU diskette:

1. Insert the appropriate Configuration Assistant diskette, made from the included file bcmedu.img into your machine's diskette drive. Also, insert the Solaris Installation CD-ROM, or for network installation, verify with your system administrator that the Solaris network installation image is available on your network.

2. Turn your machine on.

3. When the Configuration Assistant screen is displayed, choose the F4 option (on 2.6, this is labelled F4_Driver Update; on Solaris 7, F4_Add Driver).

   The message "Enumerating buses ... " is displayed. Then the Install Driver Update screen is displayed.

4. Remove the Configuration Assistant diskette from the diskette drive and insert the first Solaris DU diskette you want.

5. Press F2_Continue.

   The Select Solaris System Version screen is displayed.

6. Select the appropriate Solaris OS and press F2_Continue.

   The Loading Driver Update Software screen is displayed, along with a progress bar that shows the percentage of drivers that have been extracted from the diskette. Drivers are read into memory and survive long enough for the system to successfully boot to its installation program. When all the new drivers on the diskette have been processed, the Continue Driver Update Installation screen is displayed.

7. Remove the DU diskette from the diskette drive and insert the next DU diskette you want, if any.

8. Press F2_Continue.

   Again, the Loading Driver Update Software screen is displayed, along with a progress bar that shows the percentage of drivers that have been extracted from the diskette. Drivers are read into memory and survive long enough for the system to successfully boot to its installation program. When all the new drivers on the diskette have been processed, the Continue Driver Update Installation screen is displayed.

9. Repeat Steps 7 and 8 until all the DU diskettes you want are installed.

10. When all the drivers are processed, remove the DU diskette from the diskette drive and reinsert the Configuration Assistant diskette.

    | NOTE – Do not remove the Configuration Assistant diskette from the diskette drive until you see the following message displayed in a dialog box. If you want to bypass the device configuration and boot screens when the system reboots, eject the Device Configuration Assistant/Boot diskette now.

11. Press F2_Continue.

    The Solaris Device Configuration Assistant screen is displayed.

12. Press F2_Continue.

    The message "Enumerating buses ..." is displayed.

    Then the Scanning Devices screen is displayed. System devices are scanned. When scanning is complete, the Identified Devices screen is displayed.

13. Press F2_Continue.

    The message "Loading driver ..." is displayed followed by messages about the drivers that are required to boot your system. After a few seconds, the Boot Solaris screen is displayed.

14. At the Boot Solaris screen, select the device controller attached to the device that contains your install medium.

15. Press F2_Continue.

    Drivers for the device controller you selected are displayed. Your system boots to run the install program. The install program starts and your machine begins booting the complete Solaris operating environment. Then, after some time, the following messages are displayed, prompting you to insert each of the Solaris DU diskettes required to install your machine:

    Installing unbundled device driver support
    Extracting driver list from tree..
    <DU diskette name> driver-name...

    Please insert the Driver Update diskette labeled <DU diskette name>
    Press <ENTER> when ready.

16. Remove the Configuration Assistant diskette and reinsert the first DU diskette you inserted earlier into the diskette drive.

17. Press Enter.

    Packages, patches, or both that contain the new drivers are installed from the diskette onto your machine. Messages about each installation are displayed.

- If drivers on other DU diskettes are required for your machine, this prompt is displayed:

> Please insert the Driver Update diskette labeled <DU diskette name>
> Press <ENTER> when ready.

- Otherwise, this prompt is displayed:

> If you have additional Update diskettes to install (such as video), please insert diskette now.
> Additional Update diskettes to install? (y/n) [y]

1. If drivers on other DU diskettes are required, remove the DU diskette from the diskette drive, insert the next DU diskette you are prompted to insert, press Enter, and repeat until all drivers you need are installed.

2. Press Enter.

   When installation is complete, the message "Installation complete" is displayed.

3. Remove the diskette from the diskette drive.

4. Reboot your machine.

When the Solaris operating environment is finished booting and running, the new devices whose drivers you installed are available for use.

#### Adding a DU Diskette to an Existing Solaris System

Before adding new or updated drivers, the newly supported hardware devices should be installed and configured according to the instructions in the corresponding Device Reference Page, if any. See the Solaris (Intel Platform Edition) Device Configuration Guide.

When the Solaris (Intel Platform Edition) software is already installed, the simplest way to add new or updated drivers is to install the DU diskettes as patches on your system, as follows:

1. Become superuser on your system.

2. Check to see if Volume Management is running on the machine you are updating:

   ps -ef | grep vold

   For more information about managing diskettes and drives, see the System Administration Guide.

3. If Volume Management is running, temporarily stop it by typing:

   # /etc/init.d/volmgt stop

4. Insert the DU diskette into the diskette drive.

5. Mount the DU diskette at the /mnt mount point:

   # mount -F pcfs /dev/diskette /mnt

   | NOTE – At this point, you must mount the DU diskette in the file structure to update your system successfully.

6. Execute the install script on the diskette, using the appropriate Solaris release directory (currently sol_26 for Solaris 2.6, sol_27 for Solaris 7, and so on). For example:

   # /mnt/DU/sol_27/i86pc/Tools/install.sh -i

   The install.sh script searches for all new or updated drivers on the diskette. When a new or updated driver is found, the following prompt is displayed:

   Unconditionally installing DUs <DU driver names>
   Install patch driver-name? [y]

7. If the driver is the one you want to install, at the prompt, type y for yes or press Enter. If the driver is not the one you want to install, type n for no.

   If you type y, the install.sh script installs the driver you indicated as well as the bootmod and bootbin patches.

8. When you're done and the install.sh script exits, unmount the diskette:

   # cd /
   # umount /mnt

9. Remove the DU diskette from the diskette drive.

10. Reboot your machine.

    # touch /reconfigure
    # reboot

11. If you haven't already, turn your system off, add the new hardware, and then turn your system on again.

12. When the autoboot sequence prompt is displayed, quickly press Escape.

    The autoboot sequence is interrupted. The Configuration Assistant screen is displayed.

13. Press F2_Continue.

    The message "Enumerating buses ..." is displayed. The Scanning Devices screen is then displayed. System devices are scanned. When scanning is complete, the Identified Devices screen is displayed.

14. Press F2_Continue.

    The message "Loading driver com.bef ..." is displayed. The Boot Solaris screen is then displayed.

15. On the Boot Solaris screen, select the device controller attached to the device that contains your install medium, in this case the main system disk.

    The /etc/bootrc script is displayed.

16. At the prompt, type:

    b -r

Your machine boots. You can now use your new hardware.

Back to Top

## Customizing the Driver Configuration

To customize the driver, edit /kernel/drv/bcme.conf and update the respective parameters in this file. These parameters are described below:

### ForceSpeedDuplex Parameter

ForceSpeedDuplex configures link (or instance) to a certain Speed and Duplex. By default, all instances are set to AutoNegotiate (0). The Default instance settings then are:

> ForceSpeedDuplex=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

These settings are based on the following values:

> Value | Description
> 0 | AutoNegotiate
> 1 | 10 Mbps speed and Half Duplex mode
> 2 | 10 Mbps speed and Full Duplex mode
> 3 | 100 Mbps speed and half Duplex mode
> 4 | 100 Mbps speed and Full Duplex mode
> 5 | Force 1000 Mbps Full Duplex mode.
> 6 | AutoNegotiate only 1000 Mbps Full Duplex mode.
> 7 | AutoNegotiate only 1000 Mbps Half Duplex mode.
> 8 | AutoNegotiate only 100 Mbps Full Duplex mode.
> 9 | AutoNegotiate only 100 Mbps Half Duplex mode.
> 10 | AutoNegotiate only 10 Mbps Full Duplex mode.
> 11 | AutoNegotiate only 10 Mbps Half Duplex mode.

> Example: To configure adapters of instance #0 and instance #3 to 100 Mbps Full Duplex and instance #3 to 10 Mbps Half Duplex, set the ForceSpeedDuplex parameter as follows:

> ForceSpeedDuplex=2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0;

### FlowControl Parameter

FlowControl configures flow control parameters of a link. By default, all instances are set to disable both Tx and Rx flow control (0). As a result, the default instance settings are:

> FlowControl=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;.

These settings are based on the following values:

> Value | Description
> 0 | Both Tx and Rx flow control are disabled.
> 1 | Tx flow control is enabled. Pause frames will be sent if resource is low. But device will not process Rx Pause Frame.
> 2 | Rx flow control is enabled. If the device receives a Pause Frame, it will stop sending. However, the device will not send a Pause Frame if resource is low.
> 3 | Both Rx and TX flow control are enabled. Pause frames will be sent if resource is low. If the device receives a Pause Frame, it will stop sending.
> 4 | Advertise both Rx and TX Flow Control being enabled and negotiate with the link partner. If link AutoNegotiate is not enabled, then both Tx and Rx Flow Control are disabled.

### MaxJumboFrameSize Parameter

MaxJumboFrameSize configures the Jumbo Frame feature of a link. The valid range of values for this parameter is 0 to 9000. If the value configured is less than 1500, then the Jumbo Frame feature is disabled. Once this is configured, the ifconfig command is used to configure the desired MTU size. The default instant setting is 0 (MaxJumboFrameSize=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;)

> Example: To configure instance 2 to support a Jumbo Frame of up to 9000 bytes, set the MaxJumboFrameSize parameter as follows:

> MaxJumboFrameSize=0,0,9000,0,0,0,0,0,0,0,0,0,0,0,0,0;
> ifconfig bcme2 mtu 9000

### TxPacketDescCnt Parameter

TxPacketDescCnt configures the number of Tx packet descriptors. The valid range of values for this parameter is 32 to 512. More system memory resource will be used for a larger number of Tx Packet Descriptors. The default value is 200:

> TxPacketDescCnt=200;

### RxStdDescCnt Parameter

RxStdDescCnt configures the number of Rx packet descriptors. The valid range of values for this parameter is 32 to 512. More system memory resources will be used for a larger number of Rx Packet descriptors. The default value is 500.

> RxStdDescCnt=500;

### RxJumboDescCnt Parameter

RxJumboDescCnt configures the number of Rx Jumbo packet descriptors. The valid range of values is 32 to 256. More system memory resource will be used for larger number of Rx Jumbo packet descriptors. This parameter is only used if the Jumbo Frame feature is enabled. The default value is 50.

> RxJumboDescCnt=50;

### RxCoalescingTicks Parameter

RxCoalescingTicks configures the number of Rx Host Coalescing Ticks in microseconds. This determines the upper-bound of time interval in which the device will generate an interrupt if one or more frames are received. The default value is 150.

> RxCoalescingTicks=150;

### RxMaxCoalescedFrames Parameter

RxMaxCoalescedFrames configures the number of Rx Maximum Coalesced Frames parameters. This determines the maximum number of Rx buffer descriptors that the device processes before it will generate an interrupt. The default value is 10.

> RxMaxCoalescedFrames=10;

### TxCoalescingTicks Parameter

TxCoalescingTicks configures number of Tx Host Coalescing Ticks in microseconds. This determines upper-bound of time interval that the device will generates interrupt if one or more frames are sent. The default value is 500.

> TxCoalescingTicks=500;

### TxMaxCoalescedFrames Parameter

TxMaxCoalescedFrames configures the number of Tx Maximum Coalesced Frames parameters. This determines upper-bound of the maximum number of Tx buffer descriptors that the device processes before it will generate an interrupt. The default value is 80.

> TxMaxCoalescedFrames=80;

### RxCoalescingTicksDuringInt Parameter

RxCoalescingTicksDuringInt: configures number of Rx Host Coalescing Ticks in microseconds during interrupt. This determines upper-bound of time interval that the device will generates interrupt if one or more frames are received during interrupt handling. The default value is 75.

> RxCoalescingTicksDuringInt=75;

### TxCoalescingTicksDuringInt Parameter

TxCoalescingTicksDuringInt: configures number of Tx Host Coalescing Ticks in microseconds during interrupt. This etermines upper-bound of time interval that the device will generates interrupt if one or more frames are received during interrupt handling. The default value is 75.

> TxCoalescingTicksDuringInt=75;

### RxMaxCoalescedFramesDuringInt Parameter

RxMaxCoalescedFramesDuringInt: configures number of Rx Maximum Coalesced Frames parameters during interrupt andling. This determines upper-bound of maximum number of Rx buffer descriptors that device processes before it will generate an interrupt during interrupt handling. The default value is 10.

> RxMaxCoalescedFramesDuringInt=10;

### TxMaxCoalescedFramesDuringInt Parameter

TxMaxCoalescedFramesDuringInt configures the number of Tx Maximum Coalesced Frames parameters during interrupt handling. This determines the upper-bound of maximum number of Tx buffer descriptors that the device processes before it will generate an interrupt during interrupt handling. The default value is 10.

> TxMaxCoalescedFramesDuringInt=10;

### StatsCoalescingTicks Parameter

StatsCoalescingTicks configures how often adapter statistics are DMAed to the host memory in microseconds. The default value is 1000000.

> StatsCoalescingTicks=1000000;

### DoubleCopyTxBufferSize Parameter

DoubleCopyTxBufferSize configures a double copy Tx buffer size. If the packet to be transmitted is less than this parameter and spans more than 1 fragment, the fragments of this packet will be combined into one fragment. The default value is 64.

> DoubleCopyTxBufferSize=64;

Back to Top

## Customizing the Driver Configuration using the "ndd" Command

Driver configurations can also be temporarily changed with the Solaris ndd command. Any changes made with ndd command are temporary and will be lost when you reboot the system. To make configuration changes survive after reboot, modify bcme.conf instead.

| NOTE – Refer to the parameter descriptions as required in Customizing the Driver Configuration above.

To display parameters that are configurable using ndd:

> ndd /dev/bcme '?'

The system should return the following:

> ? | (read only)
> Instance | (read and write)
> ForceSpeedDuplex | (read and write)
> FlowControl | (read and write)
> TxPacketDescCnt | (read and write)
> RxStdDescCnt | (read and write)
> RxCoalescingTicks | (read and write)
> RxMaxCoalescedFrames | (read and write)
> TxCoalescingTicks | (read and write)
> TxMaxCoalescedFrames | (read and write)
> RxCoalescingTicksDuringInt | (read and write)
> RxMaxCoalescedFramesDuringInt | (read and write)
> TxCoalescingTicksDuringInt | (read and write)
> TxMaxCoalescedFramesDuringInt | (read and write)
> StatsCoalescingTicks | (read and write)
> DoubleCopyTxBufferSize | (read and write)
> BlinkLeds | (write only)

### Configuring a NIC

To configure a particular NIC, the parameter "instance" must be properly set.

Examples:

> To force a NIC of instance 1 to 100Mbps Full Duplex:

> - ndd -set /dev/bcme Instance 1
> - ndd -set /dev/bcme ForceSpeedDuplex 3

> To query the current configuration of Flow Control of instance 3:

> - ndd -set /dev/bcme Instance 3
> - ndd -get /dev/bcme FlowControl

> To blink all LEDs for 10 seconds of NIC of instance 5:

> - ndd -set /dev/bcme Instance 5
> - ndd -set /dev/bcme BlinkLeds 10

Back to Top

Back to Contents

Please read all restrictions and disclaimers.