User can run b44diag in two different modes, Mamufacturing mode and Engineering mode.

In manufacture mode, user can have the following options.
 1.  -l <file> 	      :Log data to file. 
 2.  -c <num>	      :Specify the card to be tested. 
 3.  -I <num>	      :Iteration number
 4.  -t <id>	      :Disable tests
 5.  -T <id>	      :Enable tests
 6.  -com <value>     :Comm port enable (internal use only)
 7.  -r <num>         : Input radix
 8.  -n               : Run in manufacture loop
 9.  -e               : Run program in engineering mode
10.  -m               : Program mac address
11.  -f<filename>     : Program eeprom content from bin before test
12.  -mac             : Program MAC address from command line
13.  -fmac <filename> : Program MAC address from text file through command line.
14.  -b <num>         : Enable/Disable BootRom; 0 = disable; 1 = 16KB, 2 = 32KB, 3 = 64KB, 4 = 128KB.
15.  -lbm             : Option to specify number of packets in Mac Loopback test\n");
16.  -lbp             : Option to specify number of packets in Phy Loopback test\n");
17.  -lbh             : Option to specify number of packets in 100BT External Loopback test\n");
18.  -lbt             : Option to specify number of packets in 10BT External Loopback test\n");

Example:
>b44diag -e XXXXXX -c 0 -f eeprom.bin -fmac macaddr.txt -b 3 -t abc

-e: enter engineering mode.
XXXXXX: Password.
-c: card select
-f: program srom with eeprom.bin. Basic information will be loaded to the
srom. Mac address will remain the same.  Error if file name missing.
-fmac: program MAC address from Mac address file. Only Mac address will be
updated.  Error if file name missing.
-b: enable 64KB Boot Rom. 0 = disable; 1 = 16KB, 2 = 32KB, 3 = 64KB, 4 =
128KB.  Boot Rom status will remain unchanged if -b option is not entered.
-t: disable Test Group A, B and C.

After programming srom with the bin file (-f option is entered), no long need to power cycle the system to have the new SROM configuration loaded.  
Software will run all tests after SROM being programmed.

Mac address programming option:
In stead of entering -fmac option, Mac address in the srom can also be
programmed by entering either -m and -mac options.
By entering -m option, user will be asked to enter Mac address.  In order to
use -mac option, user need to provide the Mac address after entering -mac
option.
Example: b44diag -e XXXXXX -c 0 -f eeprom.bin -mac 001018112240 -b 3  


> b44diag -e XXXXX -c 0 -fmac macaddr.txt

> b44diag -e XXXXX -m
  XXXXX = password.
  If password is valid, user will be prompted to enter 12 bytes mac address.
  Nic card will be programmed with new mac address before running any test.

> b44diag -e XXXXX -f eeprom.bin
  Nic card will be programmed with new content from eeprom.bin before test.

> b44diag -l test.log -c 1 -I 2 -t A3

> b44udiag -l test.log -c 1 -I 2 -t A3 -lbm 3000 -lbp 3000 -lbh 3000 -lbt 3000

There are 3 groups of test. Each group has a few sub tests.
Group A
A1. Indirect Control Register Test
A2. Direct Control Register Test
A3. Interrupt test
A4. Built In Self Test

Group B
B1. LEDs test
B2. EEPROM Test
B3. MII Test
B4. Link Status Test

Group C
C1. MAC Loopback Test
C2. PHY Loopback Test.
C3. External Loopback Test 100BT.  
C4. External Loopback Test 10BT.

Test Descriptions
A1.  
Indirect Register Test
Command: regtest -i
Function: Each Register specified in the configuration contents read only bit and
read/write bit defines. The test writing zero and one by using indirect addressing method into the test bits to insure the read
only bits are not changed, and read/write bits are changed accordingly.
Default: Enabled

A2
Control Register Test
Command: regtest
Function: Each Register specified in the configuration contents read only bit and
read/write bit defines. The test writing zero and one into the test bits to insure the read
only bits are not changed, and read/write bits are changed accordingly.
Default: Enabled

A3	
Interrupt Test
Command: intrtest
Function: This test verifies the interrupt functionality. It enables interrupt and waits for
interrupt to occur. It waits for 500ms and reports error if could not generate interrupts.
Default: Enabled

A4
Built In Self Test
Command: bist
Function: This test will run the Built In Self Test
Default: Enabled

B1
LED Test
Command: ledtest
Function: Tests forcing of the link state for each link speed/duplex.
Default: Enabled

B2
EEPROM Test
Command: setest
Function: Reads Serial Prom and varifies integrity by checking CRC.	
Default: Enabled

B3
MII Test
Command: miitest
Function: Each Register specified in the configuration contents read only bit and
read/write bit defines. The test writing zero and one into the test bits to insure the
read only bits value are not changed, and read/write bits are changed
accordingly.
Default: Enabled

B4
Command: linkstatus
Function: Report current link status.
Default: Enabled

C1
Mac Loopback Test
Command: lbtest -m
Function: Transmits a 2000 or specified by -lbm option of 1514-byte packets with incrementing data pattern, and
checks tx and rx flags and data integrity. 
Default: Enabled

C2
Phy Loopback Test
Command: lbtest -p
Function: This test is same as D1. Mac Loopback Test except, the data is routed
back via physical layer device. 
Default: Enabled

C3 
External Loopback Test 100BT
Command: lbtest -e
Function: This test is same as D1. Mac Loopback Test except, the data is routed
back via loopback device.  
Default: Disabled

C4 
External Loopback Test 10BT
Command: lbtest -a
Function: This test is same as D1. Mac Loopback Test except, the data is routed
back via loopback device.  
Default: Disabled

By dedefault, all tests except C3 and C4 will be covered in manufacture mode unless disabled by user.

User can select Engineering mode by option -b44eng
Example: 
> b44diag -b44eng

When the program is in engineering mode, it prompts user to enter commands.
All commands are covered below.
lbtest
	cmd: lbtest
	Syntax: lbtest [n|c|t] [m|p|a|e|]
	
	'n' = iteration.
	'c' = max packet count.
	't' = packet type: 0 = all 0s, 1 = all 1s, 2 = 5555, 3 = AAAA, 
			   4 = 0F0F, 5 = F0F0, 6 = FF00, 7 = 00FF, 
			   8 = FFFF0000, 9 = 0000FFFF, 10 = Inc, 11 = Random
	'm' = Mac Loopback
        'p' = Phy Loopback
        'e' = 100BT External Loopback.
	'a' = 10BT External Loopback.

	Default max packet count = 2000
        Default iteration = 1
        Default pattern = inc.
        
	Example:
        0:>lbtest -e -n=10 -c=2500 -t=3   (10 times external loopback test with 2500 packets and pattern is AAAA)
 

phyctrl
	cmd: phyctrl
	Description: Configure Speeds/Duplex of PHY
	Syntax: phyctrl [s][h][r][f]
	's' = 0:10 Mbps, 1:100 Mbps
	'h' = half duplex
	'r' = reset phy
	'c' = force
	'f' = write phy initialization scripts
	Example:
	0:> phyctrl -s=0 -h  (10Mbps half duplex)
	initialization scripts
	0:> phyctrl -s=1 -h -c (force 100 BT half duplex)

loadd
	cmd: loadd
	Description: Load default chip setting before blast
	Syntax: loadd

blast  
	cmd: blast
	Description: Blast Packets in Poll Mode
	Syntax: blast [t|r|h] [n] [l] [i] [e]
	't' = tx
        'r' = rx
        'h' = host loop back ( with min 17.6 usec ipg with random packet size; 14.6 usec ipg with Max packet size )
	'H' = host loop back with optimized performance. ( with min 17 usec ipg with random packet size; 14 usec ipg with Max packet size )
        'n' = number of packets to transmit.
        'l' = transmit packets size (min = 60)
        'i' = increment transmit packets length 
        'e' = Upper Limit of Tx buffer in incremental packet size
	'p' = packet type: 0 = all 0s, 1 = all 1s, 2 = 5555, 3 = AAAA, 
			   4 = 0F0F, 5 = F0F0, 6 = FF00, 7 = 00FF, 
                           8 = FFFF0000, 9 = 0000FFFF, 10 = Inc, 11 = Random
	'd' = Interpacket GAP in microseconds

	Default pattern = inc.
	
	Press ESC Key to stop.
        
	Example:
        0:> blast -t -r -p=11 -l=1514 		(RX and TX packet with 1514 bytes of random data)
	0:> blast -t -n=10000 -l=1514 		(TX 10000 packets with size of 1514 bytes of default pattern)
	0:> blast -t -n=10000 -l=1514 -p=3 	(TX 10000 packets with size of 1514 bytes of AAAA pattern)
        0:> blast -t -n=10000 -i -e=1514 	(TX 10000 packets with inc size of default pattern)
        0:> blast -t 			 	(TX packets with size of 64 bytes of default pattern until stop)
        0:> blast -r			 	(RX packets until stop)
        0:> blast -h 				(host loop back with min 14.6 usec ipg)
        0:> blast -H                            (host loop back with optimized performance, with min 14 usec ipg)

        * When software is runnign in host loop back mode, user need to provide enough IPGs or else packets will be dropped or result in interrupt errors.
        * When software is running optimized performance host loop back mode, on-screen countes will not be updated.  
          User can use 'qstat' or 'nicstat' to read counters.   
	* blast will not reset the chip.  User need to use "reset" cmd to reset chip.
	* User also need to use "loadd" cmd to set up the chip to default state before run blast

	Example:
	0:> reset	(reset chip)
	0:> loadd	(set chip to default state)
	0:> do abc.do   (run script or write register if needed)
	0:> blast -t -r -p=11 -l=1514 (RX and TX packet with 1514 bytes of random data)
	Kit "Esc" to stop

nicstats
	cmd: nicstats
 	Description: Display NIC Statistics
	Syntax: nicstats [c]
        'c' = reset counters
	Example:
	0:> nicstats (display NIC statistics)
        0:> nicstats -c (reset counters)

setest
	cmd: setest
	Description: Serial EEPROM read write test. Serial EEPROM tests dumps the
		contents of the serial EEPROM to the screen and varifies the data with a CRC
		check.
	Syntax: setest [iteration]
	Example:
	1. Display Help.
	0:> setest ?
	Usage : setest [iteration]
	Description:
	The default iteration is 1. 0 means run forever

mread
	cmd: mread
	Description: Read PHY registers via MII
	Syntax: mread <begin_addr>[ | <len>]
	Address range: 0x00 – 0x1F
	Example:
	1. Read MII register 0
	0:> mread 0
	00: 1100
	2. Read MII registers 0 to 10
	0:> mread 0-10
	00: 1100 7949 0020 6051 01e1 0000 0004 2001
	08: 0000 0300 0000 0000 0000 0000 0000 3000
	10: 0002
	3. Read 5 MII registers start from register
	0:> mread 0 5
	00: 1100 7949 0020 6051 01e1

mwrite
	cmd: mwrite
	Description: Write PHY registers via MII
	Syntax: mwrtie <addr > <value>
	Address range: 0x00 – 0x1F
	Example:
	1. Write 0x15 to MII register 2
	0:> mwrite 2 15

miitest
	cmd: miitest [itereation]
	Description: PHY registers read write test
	Syntax: miitest

read
	cmd: read
	Description: Generic Memory Read
	Syntax: read [!|S|X|#|m|$|l|s|x]<begin_addr> [- end_addr | num_bytes]
	! = Configuration space (address range: 0x00 – 0xFF) (32)
	S = Configuration space (address range: 0x00 – 0xFF) (16)
	X = Configuration space (address range: 0x00 – 0xFF) (08)
	$ = Serial EEPROM
	m = MII Registers
	l = direct access (dword)
	s = direct access (word)
	x = direct access (byte)


write
	cmd: write
	Description: Generic Memory Write
	Syntax: write [!|S|X|#|$|l|s|x]<begin_addr> [- end_addr ] <value>
	! = Configuration space (address range: 0x00 – 0xFF) (32)
	S = Configuration space (address range: 0x00 – 0xFF) (16)
	X = Configuration space (address range: 0x00 – 0xFF) (08)
	$ = Serial EEPROM
	l = direct access (dword)
	s = direct access (word)
	x = direct access (byte)


intrtest
	cmd: intrtest
	Description: Interrupt Test
	Syntax: intrtest

regtest
	cmd: regtest
	Description: MAC registers read write test.
	Syntax: regtest [<iteration>]

pciscan
	cmd: pciscan
	Description: Scan for all PCI Devices
	Syntax: pciscan
	Example:
	0:> pciscan
	Scanning PCI devices ...
	Bus Dev Func Vendor ID Device ID Class Base/IO Address IRQ
	=== === ==== ========= ========= ========== ================= ===
	0 0 0 8086 7190 06:00:00 00000000:F8000008 0
	0 1 0 8086 7191 06:04:00 00000000:00000000 0
	0 7 0 8086 7110 06:01:00 00000000:00000000 0
	0 7 1 8086 7111 01:01:80 00000000:00000000 0
	0 7 2 8086 7112 0C:03:00 00000000:00000000 9
	0 7 3 8086 7113 06:80:00 00000000:00000000 0
	0 14 0 12AE 0003 02:00:00 00000000:F4000004 10
	1 0 0 1002 4742 03:00:00 00009001:F5000000 11

dos
	cmd: dos
	Description: Enter to Dos shell
	Syntax: dos
	Example:
	0:> dos

pciinit
	cmd: pciinit
	Description: Initialize PCI configuration registers
	Syntax: pciinit
	Example:
	0:misc> pciinit
	Initializing PCI Configuration Space
	Bus Number : 0
	Device/Funtion : 14/0
	Base Address : 0xf4000004

q
	cmd: q
	Discription: Exit 
	Syntax: q

exit
	cmd: exit
	Discription: Exit 
	Syntax: exit

help
	cmd :help
	Discription: Display help
	Systax: help

log
	cmd : log 
	Description: Log data to file
	Syntax: log <filename>
	Example: 
	0:> log test.log
	started logfile 'test.log'

nolog
	cmd : nolog 
	Description: Close current log file
	Syntax: nolog
	Example: 
	0:> nolog
	logfile closed at Mon Mar 4 15:25:11 2002

reset
	cmd : reset
	Description: Reset chip
	Syntax: reset
	Example: 
	0:> reset

teste
	cmd : teste
	Description: Enable tests in test configuration
	Syntax: teste <group><tests index>
	Example: 
	0:> teste A23
	Enabled Tests:
	A2  Control Register Test
	A3  Interrupt Test

testd
	cmd : testd
	Description: Disable tests in test configuration
	Syntax: testd <group><tests index>
	Example: 
	0:> testd A23                             
	Disabled Tests:
	A2  Control Register Test
	A3  Interrupt Test

nictest
	cmd : nictest
	Description: Run tests  in configuration
	Syntax: nictest
	
cls
	cmd : cls
	Description: Clear screen
	Syntax: cls

loop
	cmd : loop
	Description: Runing cmd n times
	Syntax: loop [iteration] <cmd> [<parameter> ...]
	Enample:
	0:> loop 3 miitest         (run miitest 3 times)

mrloop
	cmd : mrloop
	Description: This is special test routine for MII read. 
        It loops on MII register read until user abort or if value is zero
	Syntax: mrloop <addr>
	Enample:
	0:> mrloop 02         (Loop on MII read at reg 02)

inp
	cmd : inp
	Description: Read port input
	Syntax: inp <addr>

outp
	cmd : outp
	Description: Write to port
	Syntax: outp <addr> <data>

linkstatus
	cmd : linkstatus
	Description: Report link status
	Syntax: linkstatus

sleep
	cmd : sleep
	Description: Suspense process for Execute command from a file
	Syntax: sleep <ms>

version
	cmd : version
	Description: Display current software version
	Syntax: version

dev
	cmd : dev
	Description: Display and select device
	Syntax: dev <device index>

sromutil
	cmd: sromutil
	Description: Provide SROM access.
	Syntax: sromultil [b<n>] [m <macaddr> <devID> <vedID> <subID>] [c|C|d] [w<location> <value>]
	'b'= Enable bootrom, size encoding: 0=Disable, 1=16KB, 2=32KB, 3=64KB, 4=128KB
	'm'= program addr: macaddr subvenID subdevID
       	'C'= check_crc
    	'c'= fix crc
    	'd'= just dump
	'w'= program word; location in hex; word in hex;
        'f'= out put image to eeprom.bin and eeprom.txt or filename.bin and filename.txt.

	Example:
	sromutil -b 1 -m xxxxxxxxxxxx xxxx xxxx (Enable 16KB bootrom; Program addr)
	sromutil -m xxxxxxxxxxxx xxxx xxxx (Boot rom status remain unchanged; Program addr)
	sromutil -b 0 (Disable bootrom);
	sromutil -b 1 (Enable 16KB bootrom);
	sromutil -C    	(Check crc)
	sromutil -c	(Fix crc)
	sromutil -d	(Dumping data to screen)
        sromutil -d -f<filename>  (Dumping data to screen, eeprom.bin and eeprom.txt or filename.bin and filename.txt)
	sromutil -w 35	1235 (Program word)
setbit
	cmd: setbit
	Description: Set Bit of Generic Memory
	Syntax: setbit [!|S|X|#|m|$|l|s|x]<addr> <bit#> [<bit#>] ....
	! = Configuration space (address range: 0x00 – 0xFF) (32)
	S = Configuration space (address range: 0x00 – 0xFF) (16)
	X = Configuration space (address range: 0x00 – 0xFF) (08)
	$ = Serial EEPROM
	m = MII Registers
	l = direct access (dword)
	s = direct access (word)
	x = direct access (byte)

clearbit
	cmd: clearbit
	Description: Clear Bit of Generic Memory
	Syntax: clearbit [!|S|X|#|m|$|l|s|x]<addr> <bit#> [<bit#>] ....
	! = Configuration space (address range: 0x00 – 0xFF) (32)
	S = Configuration space (address range: 0x00 – 0xFF) (16)
	X = Configuration space (address range: 0x00 – 0xFF) (08)
	$ = Serial EEPROM
	m = MII Registers
	l = direct access (dword)
	s = direct access (word)
	x = direct access (byte)
seprg
	cmd: seprg
	Description: The function reads data from file and program into seeprom. 
	The file name must be specified in the parameter. Mac address will remain unchanged.
	Syntax: seprg <f><file name> [|o] [|l]
	'f' = filename
	'o' = offset of serial eeprom
    	'l' = length in bytes (Default = size of input file)
	Example:
	seprg -f=c:\eeprom.bin 

	
do
	cmd : do
	Description: Excute command from a script file
	Syntax: do <filename.do>


Script file example:

reset
linkstatus
mwrite 0 8000
sleep 1000
mread 02




	

	
	











	
