> Back to Contents Page

> ## Solaris Driver Software: Broadcom NetXtreme® 57XX User Guide

> Introduction

> Installing the Driver Software

> Uninstalling the Driver Software

> Using a Driver Update (DU) Disk

> Setting the Adapter Properties

> Temporarily Changing the Driver Properties by Carrying Out the ndd Command

> NOTE: Before you proceed, review the Readme.txt file to see if there are any problems or limitations associated with the specific Solaris driver software you are using.

> ### Introduction

> The driver software 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 disk

> ### Installing the Driver Software

> 1. Change to the directory where the BRCMbcme.pkg file is located.

>     pkgadd -d BRCMbcme.pkg

> -or-

> Copy BRCMbcme.tar.Z to /tmp.

>     cd /tmp

>     uncompress BRCMbcme.tar.Z

>     tar xvf BRCMbcme.tar

>     pkgadd -d /tmp)

> 2. Carry out prtconf to determine the instance number of the adapter.

>     ifconfig bcme[instance_number] plumb

>     ifconfig bcme[instance_number] ip_address netmask

> To make these changes permanent

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

> In Solaris 7.0 (Intel platform), the operating system allocates only 36 pages of 4 KB to physically contiguous memory. The driver needs about 130 KB of physically contiguous memory per adapter. To use more than one adapter, the operating system must allocate more memory. To allocate more memory, set an operating system variable lomempages in the system file in /etc. For example, if four adapters are installed in a Solaris 7 system, the physically-contiguous memory requirement is calculated as follows:

> 4 * 130 KB = 520 KB ==> 130 pages of 4 KB memory are required.

> Because this memory might be used by other drivers in the system, 200 pages of 4 KB memory should be allocated. Add the following line in the system file in /etc/:

>     set lomempages=200

> ### Uninstalling the Driver Software

> Carry out the following commands in the order listed:

>     ifconfig bcme[instance_number] down

>     ifconfig bcme[instance_number] unplumb

>     pkgrm BRCMbcme

> ### Using a Driver Update (DU) Disk

> You can use a Solaris DU disk either to install new drivers or upgrade existing drivers.

> #### Creating a Driver Update (DU) Disk (Intel Platform Only)

> 1. Insert a 3.5-inch disk into drive A.
> 2. In an MS-DOS environment, type

>     format A:

> -or-

> In a Solaris environment, type

>     fdformat -Ud

> 3. Check to see if Volume Management is running:

> In an MS-DOS environment, type

>     dd filename A:

> -or-

> In a Solaris environment, type

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

> If the following message is displayed

>     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

> -or-

> If the following message is displayed

>     /vol/dev/aliases/floppy0 not found

> type

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

> #### Installing Driver Software or Updating Driver Software

> 1. Insert the appropriate Configuration Assistant disk, made from the included bcmedu.img file, into drive A. Also, insert the Solaris Installation CD into the CD-ROM drive, or, for a network, verify with your system administrator that the Solaris network installation image is available on your network.
> 2. Turn on your system.
> 3. In Configuration Assistant, select the F4 option (on 2.6, this option is labeled F4_Driver Update; on Solaris 7, it is labeled F4_Add Driver). The `Enumerating buses` message is displayed, and then Install Driver Update opens.
> 4. Remove the Configuration Assistant disk from drive A and insert the first Solaris DU disk.
> 5. Select F2_Continue.
> 6. Select Solaris System Version opens.
> 7. Select the appropriate Solaris operating system, and then select F2_Continue. When all the new drivers on the disk have been processed, Continue Driver Update Installation opens.
> 8. Remove the DU disk from drive A and insert the next DU disk, if any.
> 9. Repeat steps 5 through 8 until you have installed all the drivers.
> 10. When all the drivers are processed, remove the last DU disk from drive A and reinsert the Configuration Assistant disk.

> NOTE: Do not remove the Configuration Assistant disk from drive A until the following message is displayed: `If you want to bypass the device configuration and boot screens when the system reboots, eject the Device Configuration Assistant/Boot diskette now.`

> 11. Select F2_Continue.
> 12. in Solaris Device Configuration Assistant, select F2_continue.
> 13. In Identified Devices, select F2_continue.
> 14. In Boot Solaris, select the device controller that is attached to the device that contains your install medium.
> 15. select F2_continue.
> 16. Insert the DU disks each time you are prompted to do so, and follow the on-screen instructions.
> 17. Remove the Configuration Assistant disk and reinsert the first DU disk you initially used.
> 18. Press ENTER and follow the on-screen instructions.
> 19. When the `Installation complete` message is displayed, remove the disk from drive A and restart your machine.

> ##### Adding New Drivers or Updating Existing Drivers

> Before you add new drivers or update existing drivers, be sure that the newly-supported hardware devices are 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 drivers or to update existing drivers is to install the DU disks as patches on the operating system.

> To install the DU disks as patches on the operating system

> 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

> NOTE: For more information about managing disks and drives, refer to the System Administration Guide.

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

>     # /etc/init.d/volmgt stop

> 4. Insert the DU disk into drive A.
> 5. Mount the DU disk at the /mnt mount point by typing

>     # mount -F pcfs /dev/diskette /mnt

> NOTE: At this point, to successfully update your system, you must mount the DU disk in the file structure.

> 6. Carry out the install script on the disk using the appropriate Solaris release directory (currently sol_26 for Solaris 2.6, sol_27 for Solaris 7, and so on). For example, type

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

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

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

> 7. If the driver is the one you want to install, 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 as well as the bootmod and bootbin patches.

> 8. When you are finished, and the install.sh script quits, unmount the disk by typing

>     # cd /
>     # umount /mnt

> 9. Remove the DU disk from drive A.
> 10. Restart your machine.
>     `# touch /reconfigure
>     # reboot`
> 11. If you have not already shut down your system, do so now, add the new hardware, and then turn your system on again.
> 12. When the autoboot sequence message appears, press ESC.
> 13. Select F2_continue.
> 14. When scanning is complete and Identified Devices opens, select F2_continue.
> 15. In Boot Solaris, select the device controller attached to the device that contains your install medium, which in this case the main system disk.
> 16. After the /etc/bootrc script starts, type

>     b -r

> ### Setting the Adapter Properties

> To set the adapter properties, edit the bcme.conf file located at /kernel/drv/ and change the values for each property as you prefer.

> #### ForceSpeedDuplex

> Configures the link (or instance) to a particular speed and duplex mode

> 0 = Auto-negotiate (default)

> 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 (fiber interface only)

> 6 = Auto-negotiate only 1000 Mbps speed, full-duplex mode

> 7 = Auto-negotiate only 1000 Mbps speed, half-duplex mode

> 8 = Auto-negotiate only 100 Mbps speed, full-duplex mode

> 9 = Auto-negotiate only 100 Mbps speed, half-duplex mode

> 10 = Auto-negotiate only 10 Mbps speed, full-duplex mode

> 11 = Auto-negotiate only 10 Mbps speed, half-duplex mode

> For example, configure adapters of instance 0 and instance 3 to 100 Mbps speed, full-duplex mode, and 10 Mbps speed, half-duplex mode.

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

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

> #### FlowControl

> Configures the flow control properties of a link.

> 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 the adapter will not process RX PAUSE frames.

> 2 = RX flow control is enabled. If the adapter receives a PAUSE frame, it will stop sending. The adapter will not send PAUSE frames if resource is low.

> 3 = Both RX and TX flow control are enabled. PAUSE frames will be sent if resource is low. If the adapter receives PAUSE frames, it will stop sending.

> 4 = Advertises both RX and TX flow control as being enable and negotiates with the link partner. If link auto-negotiate is not enabled, both TX and RX flow control are disabled.

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

> #### MaxJumboFrameSize

> Configures the jumbo frame property of a link. The valid range of values for this property is 0 to 9000. If the value configured is less than 1500, the jumbo frame feature is disabled. BCM5705 adapters do not support jumbo frames, and this property will be ignored by the driver regardless of the settings.

>     MaxJumboFrameSize=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

> #### TxPacketDescCnt

> Configures the number of TX packet descriptors. The valid range of values is 32 to 512. More system memory resources will be used for a larger number of TX packet descriptors. The default value is 200.

>     TxPacketDescCnt=200;

> #### RxStdDescCnt

> Configures the number of RX packet descriptors. The valid value range of values 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

> Configures the number of RX jumbo packet descriptors. The valid value is 32 to 256. More system memory resources will be used for a larger number of RX jumbo packet descriptors. This property is used only if the jumbo frame property is enabled. The default value is 50.

>     RxJumboDescCnt=50;

> #### RxCoalescingTicks

> Configures the number of 1-microsecond RX host coalescing ticks. This setting determines the upper boundary of the time interval that the adapter will generate an interrupt if one or more frames are received. The default value is 150.

>     RxCoalescingTicks=150;

> #### RxMaxCoalescedFrames

> Configures the number of received frames before the adapter generates a receive interrupt. The default value is 10.

>     RxMaxCoalescedFrames=10;

> #### TxCoalescingTicks

> Configures the number of 1-microsecond ticks before the adapter generates a receive interrupt. The default value is 500.

>     TxCoalescingTicks=500;

> #### TxMaxCoalescedFrames

> Configures the number of transmitted frames before the adapter generates a transmit interrupt. The default value is 80.

>     TxMaxCoalescedFrames=80;

> #### RxCoalescingTicksDuringInt

> Configures the number of 1-microsecond ticks during a receive interrupt. This determines the upper boundary of the time interval that the adapter generates an interrupt if one or more frames are received during interrupt handling. The default value is 75.

>     RxCoalescingTicksDuringInt=75;

> #### TxCoalescingTicksDuringInt

> Configures the number of 1-microsecond ticks during a transmit interrupt. This determines the upper boundary of the time interval that the adapter generates an interrupt if one or more frames are transmitted during interrupt handling. The default value is 75.

>     TxCoalescingTicksDuringInt=75;

> #### RxMaxCoalescedFramesDuringInt

> Configures the maximum number of received frames during interrupt handling. This determines the upper boundary of the maximum number of Rx buffer descriptors that the adapter processes before it generates an interrupt during interrupt handling. The default value is 10.

>     RxMaxCoalescedFramesDuringInt=10;

> #### TxMaxCoalescedFramesDuringInt

> Configures the maximum number of transmitted frames during interrupt handling. This determines the upper boundary of the maximum number of Tx buffer descriptors that the adapter processes before it generates an interrupt during interrupt handling. The default value is 10.

>     TxMaxCoalescedFramesDuringInt=10;

> #### StatsCoalescingTicks

> Configures the number of 1-microsecond ticks between periodic statistic block DMAs. The default value is 1 000 000.

>     StatsCoalescingTicks=1000000;

> #### DoubleCopyTxBufferSize

> Configures a double copy Tx buffer size. If a packet to be transmitted is less than this property and spanned more than one fragment, the fragments of this packet are combined into one fragment.

>     DoubleCopyTxBufferSize=64;

> ### Temporarily Changing the Driver Properties by Carrying Out the ndd Command

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

> To display the properties that are configurable by carrying out the ndd command, type

>     ndd /dev/bcme '?'

> Table 1 lists the driver properties that can be temporarily changed using the ndd command.

> Table 1: Driver Properties That Can Be Temporarily Changed Using the ndd Command
> Property | Input/Output
> --- | ---
> Instance | R/W
> ForceSpeedDuplex | R/W
> FlowControl | R/W
> RxCoalescingTicks | R/W
> RxMaxCoalescedFrames | R/W
> TxCoalescingTicks | R/W
> TxMaxCoalescedFrames | R/W
> RxCoalescingTicksDuringInt | R/W
> RxMaxCoalescedFramesDuringInt | R/W
> TxCoalescingTicksDuringInt | R/W
> TxMaxCoalescedFramesDuringInt | R/W
> StatsCoalescingTicks | R/W
> BlinkLeds | W

> To set a property for a particular adapter, the Instance property first has to be set to the proper instance associated with that particular adapter.

> Example:

> To force an adapter of instance 1 to 100 Mbps 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 on the adapter associated with instance 5

>     ndd -set /dev/bcme Instance 5

>     ndd -set /dev/bcme BlinkLeds 10

> Back to Contents Page