Release Note for B44DIAG Engineering Diagnostics. ================================================== version 2.14 Bug Fix: ======== 1. Problem: (CQ#24082) b44 PCDR plug-in shows instead of N/A with adapter absent. Fix: Changed display from to N/A with adapter absent. version 2.13 Bug Fix: ======== 1. Enhancement: (CQ#23022) Added "setwol" command to support S5 WOL. cmd : setwol Description: Enable and disable S5 WOL. (Need driver support). Syntax: setwol [-e|-d] version 2.12 Bug Fix: ======== 1. Problem: (CQ# 10813) 4401: blast -h fails on 4401-A1. Blast -h will stop loop back packets. Cause: Bit 3 (FairPriority) of Reg 0x200 (Tx channel control Register) was set for 4401A1, but not in B0. The definition of FairPriority is: When this field is set to 1, the descriptor processor uses round-robin arbitration between TX and RX channels. When this field is set to 0, rx channel transfers have priority over tx channel transfers. This bit is removed in B0. The idea of setting this bit is to reduce tx packet drop. However, it cause the RX fifo overflow quicker. Fix: Not to set this bit at all for 4401 A1. Fifo overflow will not happen any more, but some packets will be dropped by software. version 2.11 Bug Fix: ======== 1. Problem: (CQ# 10123) Memory Read Prefetch set to 64 vs. 4 bytes at PnP brigde, makes "mac loopback test" fail Cause: When the loop back test failed, there is 1 packet "missing" from tx counter. In fact, the packet is not missing. It is just when diag read the final tx count, the counter has not been updated yet. Fix: By increasing wait time by 1400 us to allow the last packet get TXed, issue has been solved. Impact: As stated above. version 2.10 Bug Fix: ======== 1. Problem: (CQ# 9828) The b44udiag doesn't run any of the test in dos and creates nothing in the log file. Cause: Incorrect option switch index had been passed when enter "-lbm" option switch. It appeared to diag as an unknown option. As a result, udiag exited without running any tests. Fix: Corrected the option switch index for "-lbm" option switch and issue has been fixed. Impact: As stated above. 2. Enhancement: Customer requests a new command to only program the SSID and SVID in the SPROM (the CRC also gets updated). Fix: Added the "-mfct " command to accomplish the above. The file contains text strings describing the new SSID and SVID. The format for is specified in the b57diag diagnostics user manual "EEPROM.TXT FORMAT" section. version 2.09 Bug Fix: ======== 1. Problem: (CQ# 9474) When enter -d options in blast command, diag will issue Transmit error. Cause: When diag check for error after transmit, it read Reg 0x20. First 5 bits in Reg 0x20 are not used. Diag did not mask out these 5 bits when check for error. Once any of those bit get set, diag will fail error and issue Transmit error message. Fix: Masking out the first 5 bits of Reg 0x20 when check for error will fix the issue. Impact: As stated above. version 2.08 Bug Fix: ======== 1. Problem: (CQ# 9387) The diag does not return the 114 error code when the data file has run out of mac addresses Cause: Zero error level has been used. Fix: Return valid error level when the data file has run out of mac addresses Impact: As stated above. 2. Problem: (CQ# 8987) When running in b44diag the 'chkpxe' command and right after that the 'sromutil -d' command, the SPROM contents is displayed as all ZEROs. Cause: The problem here is that for 4401-B0 a new flag was added to the Backplane Address register (offset 0xA0). Bit[31] has to be set when accessing PXE Boot ROM. The function 'chkpxe' does set the bit[31] to '1' when accessing the PXE boot ROM, but does not restore the original value after it is done. So all consecutive READ attempts from any location other then PXE will return bogus values. Fix: For all b44diag routines that access PXE boot ROM, we need to check that the bit[31] of the Backplane Address Register is reset to ZERO after the function has terminated. Impact: As stated above. version 2.07 Bug Fix: ======== 1. Problem: (CQ# 8623) Several OEM BCM4401-A1 LOM based platforms fail Phy Loopback Test via b44diag v2.06. After shutting down from Windows, running diag will have Phy loopback test failed. Cause: The issue is triggered by the Phy being in the power saving mode, which is set by the NDIS network driver upon Windows shut down. Fix: Diag will bring back Phy from power saving mode and reset Phy. Diag also reset PMCSR register to the "D0" state Impact: As stated above. version 2.06 New Addition: ============= 1. Request:(8478) Customer wants a method to track their SPROM image revision by looking at the 4401 B0 SPROM contents. Change: This feature is only applicable to 4401-B0. The SPROM has an entry for the image revision number at offset[126]. For 4401-A1 the image revision is fixed and set to 0x01. For 4401-B0 we will use the least significant bit of the upper nibble (4 bits) to indicate that this is B0-silicon. The lower 4 bits are being used to display the image revision number for this B0-SPROM-image. 2. Request:(8494). (1) Give b44diag an override mode for when the SPROM is corrupted. When the Device ID gets changed to something unrecognized, either by user error, act of nature, or whatever, the only way to recover right now is to ground the SDO pin of the SPROM until b44diag has loaded. This is quite a hassle because it involves going into the chassis of the host system. It would be great to have some sort of override mode for situations where you know the 4401 is there, but the Device ID is wrong. (2) When b44diag is run on a system with no 4401 in it, the command "sromutil -d" will dump out garbage. It would be nice if it just gracefully refused to execute and explained why. (3) Currently, if user types the command "sromutil -w" with no address or data, it writes 0's to location 0. It would be nice if the command would not execute unless all arguments were valid. (4) When user type the command "sromutil -?", the explanation of the "-w" option is lacking critical details. Specifically, it would be great if it said that the first argument has to be the word address to be written, and the second argument has to be the data word you wish to put there. And if there also was an example shown, that would be even better. Change: (1) -x option switch has been added. It allows user to search 4401 devices by using vendor ID when the SPROM or device ID is corrupted. example: a) b44diag -x b) b44diag -b44eng -x (2) When b44diag is run on a system with no 4401 in it, b44diag will display 'No Broadcom 4401 card has been detected in the system' message and exit to DOS. (3) If user types the command "sromutil -w" with no address or data, b44diag will prompt user if he want to writes 0's to location 0. (4) Example has been added to "sromutil -w" help. 3. Sromutil cmd syntax has been changed. Please see 440xdiag.txt for details. PDF file will also be updated later. version 2.05 Bug Fix: ======== 1. Problem: (CQ# 8456) When saving the SPROM contents back to disk, the system will fail writing the TEXT file, if the file doesn't exist on the disk to begin with. Cause: Diag will generate a txt file of the SPROM contents base on the input file name if the input file name has a xxxx.xxx format. Fix: Diag will take any input file name format and output a bin file and a txt file. Example: In File Out File ======= ======== b44sprom b44sprom.bin, b44sprom.txt b44sprom.bin b44sprom.bin, b44sprom.txt sprom3.02 sprom3.02, sprom3.txt Impact: As stated above. New Addition: ============= 1. Request: The SPROM requires a minimum of 10ms delay between consecutive writes accesses. This requirement is stated in both 4401 and SPROM specs. Change: The delay between consecutive writes accesses has been increase to 10ms. It will up to 11 min to program a 64K size PXE image. version 2.04 Bug Fix: ======== 1. Problem: After Diag programmed PXE, Diag lost memory access to all registers and SPROM. Cause: After Diag programmed PXE via back door registers (0xA0 and 0xA4), Bit 31 of the back door address register (0xA0) still set. It will leave the chip in the Exp Rom access mode. Therefore, Diag lost memory access to all register and SPROM. Fix: After Diag programmed PXE via back door registers (0xA0 and 0xA4), reset Bit 31 such that Diag will gain the memory access back. Impact: As stated above. 2. Problem: (CQ# 8421) b44diag displays error code after exiting program Cause: It is due to stack over flow. Fix: Increase stack in link file from 20000 to 30000 resolved the issue Impact: As stated above. version 2.03 Bug Fix: ======== 1. Problem: (8375) B44Diag is showing Vendor ID as 0000 for 4401 board when dumping SPROM data Cause: Incorrect offset has been used to decode Vendor ID from SPROM Data Fix: Correct Vender ID offset from SPROM Data will be used. Impact: As stated above. 2. Problem: Read back checking routines had been skipped from PXE programming. Cause: After Diag finished programming PXE, it will do a read back check. 'user_abort' flag has not been initialized causing Diag to exit PXE programming function before read back checking Fix: Initializing user_abort flag to avoid the issue. Impact: As stated above. version 2.02 Bug Fix: ======== 1. Problem: (8349) First time, program failed at A3 interrupt. Reboot, program and test passed at the second times. Cause: PCIIntMask(0x94) has not been initialized. This is new for B0. Fix: Initialized PCIIntMask(0x94) with 0x100 to enable Mac to PCI interrupt. Impact: User needs to reboot machine after programming SPROM in order to pass Interrupt Test. New Addition: ============= 1. Request(8281): Test utility for WoL and Interesting packet. Change: Wol test and interesting packet test has been added to support 4401 A1 and B0. User can enter 'woltest' or 'intptest' cmd in engineering mode and shut down machine. By sending wol packet or interesting packet to system under test, system will wake up. 2. Request(7862): PXE download through b44diag, just like b57diag. Change: Added -ppxe option switch to b44diag to support pxe programming in cmd line. Also added 'pxeprg', 'chkpxe' cmds to program pxe and chk pxe chksum in engineering mode. PXE programming only supports 4401B0. version 2.01 New Addition: ============= 1. Request Added support 4401B0. Change: Added support 4401B0. version 1.33 Bug Fix: ======== 1. Problem: (7868) Programming mac sets enables boot rom and sets size to 16kb. Cause: If the boot rom size is disabled, when user program mac address via sromutil cmd without enter -b option to reprogram the boot rom size, Diag will enable the boot rom and set the size to 16K by mistake. Fix: Diag will no longer change the boot rom size if -b option has not been entered. Impact: As stated above 2. Problem: (7902) Reboot System for every New Programming A10 BD (NIC) System needs to reboot to program every NEW BCM4401A10 Boards. Cause: Once the hot swap card has been power up, Diag is looking for a valid Device ID when program a new nic. However, if the srom of the NIC has not been programmed, the device ID is 0xff. Diag will return no device found. Fix: Diag will include 0xff as a valid ID such that new NIC can be program without rebooting system New Addition: ============= 1. Request: (ClearQuest #7467) Added new Error Level when Diag detect invalid command line options and list proper command line Fix: Added Error Code 141 to report invalid command line options. version 1.32 New Addition: ============= 1. Request: (ClearQuest #7679) Test for CAM matching capabilities. The CAM in 4401 can be programmed with up to 64 MAC entries. Each MAC entry is 48 bits, or 6 bytes. Once CAM matching is enabled, the purpose of the CAM is to filter out those packets that don't match any of the entries inside the CAM. The CAM is doing this by comparing/matching the 'destination MAC' address of the incoming packet with any of the 64 MAC entries in the CAM. If at least one of the entries in the CAM matches the 'destination MAC' of the incoming packet, the packet will be passed on by the CAM for further processing. If no match occurs, the packet is silently discarded. This test will ensure that MAC addresses written to the CAM actually 'stick' (see CQ #7629). In addition to that, the test will be added in order to detect any matching capability problems within the CAM. Fix: Cam matching capabilities test has been added to b44diag. Diag will program current MAC address to an cam entry then loopback 40 packets with matching destination mac address. If CAM is functioning, Diag will receive all packets. In addition, 3 negative tests had also been added. The 1st -ive test is disabling CAm and no packet should be received. The 2nd -ive test is sending packets w/ mismatching destination mac address and no packet should be received. The 3rd test is setting mismatching CAM entry and no packet should be received either. version 1.31 New Addition: ============= 1. Request: (ClearQuest #7629) We need a utility in the field to validate that we can WRITE and READ validate the 64 CAM (Content Addressable Memory) entries. It is recommended to W/R some specific 'pattern' that tests for bits stuck to high/low. Fix: Cam test has been added to b44diag. This test will run the CAM Read/Write Test. 48 Bit patterns will be written to 64 entries of the CAM space. Test will read back the 64 entries and check. It will be tested against 5 patterns such as FFFF, 0000, 5555, AAAA, 55AA, AA55. version 1.30 New Addition: ============= 1. Request: (ClearQuest #7439) When external loopback test D3 and D4 test fail provide different error codes for failures at 10/100/1000 Mbit/s. Fix: Added code to achieve the above and documented new error codes. Error Code: 117 */ "No good link! Check Loopback plug (10BT)", Error Code: 118 */ "No good link! Check Loopback plug (100BT)", Error Code: 119 */ "No good link! (PHY)", Error Code: 33 */ "No good link! (MAC)", Error Code: 120 */ "Packets received with CRC error (10BT)", Error Code: 121 */ "Packets received with CRC error (100BT)", Error Code: 122 */ "Packets received with CRC error (PHY)", Error Code: 72 */ "Packets received with CRC error (MAC)", Error Code: 123 */ "Tx DMA failed (10BT)", Error Code: 124 */ "Tx DMA failed (100BT)", Error Code: 125 */ "Tx DMA failed (PHY)", Error Code: 13 */ "Tx DMA failed (MAC)", Error Code: 127 */ "Rx DMA failed (10BT)", Error Code: 128 */ "Rx DMA failed (100BT)", Error Code: 129 */ "Rx DMA failed (PHY)", Error Code: 14 */ "Rx DMA failed (MAC)", 2. Request: (ClearQuest #7155) User requested that an error log file is generated when an error occurs. Only error information is logged (NOT pass information). Fix: Added DOS command line option "-elog " to provide the feature. version 1.29 New Addition: ============= 1. Request: (ClearQuest #7331) The ‘b44diag.exe’ software will provide a new command line option that enables this new feature. In order to improve error detection during the programming of MAC addresses into the BCM 4401 SPROM in manufacturing, the 3 byte MAC prefix, that was scanned in by the bar code reader, will be compared against an existing data string, residing in a text file on the PC. Fix: Added -mc to support entering mac address via scanner. With this switch enable, software will only accept full length (6 bytes) mac address with prefix matches with the prefix provided in input file. See prefix.txt for sample. version 1.28 1. Added -mc to support entering mac address via scanner. With this switch enable, software will only accept full length (6 bytes) mac address. version 1.27 1. Added -info switch from cmd line to display Dev ID Ven ID SVen ID SSystem ID Version 1.26 1. First 40 bytes of the Srom image will be copy to Chip srom shadow area when program srom 2. User will no longer need to reboot to pass all tests. Version 1.25 1. Added -H option to enable host loop back test with less ipg. With -H option, on screen counters will be updated. Only software counters will. User can use "qstat" or "nicstat" cmd to read counters. In case of using SmartBit as Data Source, 14 usec IPG is recommended for random packet size. In case of using 5411 as Data Source, 50 bytes IPG is recommended for 250 bytes packets and incremental packet size from 42 to 1502 bytes. (5411 has 16 bytes overhead). Version 1.24 1. Software will return error level 254 instead of 256 when there is no card found. 2. Modify to display 64bit counters. Version 1.23 1. After SROM being programmed, either use -f option or seprg cmd, Mac address will remain unchanged. Version 1.22 1. Re-release of V1.21 Version 1.21 1. Warning message will be display after SROM being programmed with -f option. User need to power cycle system to for loading new srom configuration. Software will disable all the test and exit to DOS. 2. Same warning message will be display after srom being programmed with seprg cmd. Version 1.20 1. Hard code PCIBAR0WINDOW to 0x18000000 to avoid problem with blank SROM. Version 1.19 1. Release to DVT only. 2. Fixed interrupt capture in blast cmd. Version 1.18 1. "sedump" has been removed. 2. Fixed eeprom.bit size to 128 byte instead of 256 byte. Version 1.17 1. TX and RX buffer memory is allocated only once during software initialization. 2. TX and RX buffer memory is deallocated only before software exit. 3. Fixed bug in all loopback tests and blast -t. The content of the packet is corrupted. Instead of selected pattern being sent out, all zeros pattern is actually being sent out. This bug is found in V1.15 and V1.16. Version 1.16 1. Fixed bug in after sromutil program MAC address then exit, system will give out error message. Version 1.15 1. Enhance "blast -h", "blast -t" and "blast -r" cmds. 2. Added "blast -t -r" cmds 3. Check out com port controls. 4. Added "loadd" cmd to set chip to a working state. 5. Added "qstat" cmd to dump a subset of counters. 6. Added tx packets drop counter. 7. Added "-lbm", -lbp, -lph, -lbt command line options to specify number of packets in loopback tests. Version 1.14 1. 'blast' cmd will no longer reset the chip, user need to use 'reset' cmd to reset chip. 2. 'blast' cmd and 'lbtest' support transmitting packets with random data. It is not the real random packet. What it does is transmit the same packet with random data many times. 3. Source code has been cleaned up. Version 1.13 1. Added vender id and device id labels in "sromutil -d". 2. Fixed Phy loopback CRC bug. Version 1.12 1. In sromutil cmd, -m option will no longer take device ID as input. User should not change device ID. 2. EEPROM program from bin file. 3. User will be able to program the srom and Mac address from the command line. example: >b44diag -e b44kia -c 0 -f eeprom.bin -fmac macaddr.txt -b 3 -T abc -e: enter engineering mode. -c: card select -f: program srom with eeprom.bin. Basic information will be loaded to the srom. 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: enable Test Group A, B and C. Mac address programming option: Instead 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 b44kia -c 0 -f eeprom.bin -mac 001018112240 -b 3 -T abc e.g. Version 1.11 1. -b option in sromutil cmd no longer need to be used along wiht -m option. -b option values had also been changed. Before: 0=16KB, 1=32KB, 2=64KB, 3=128KB After: 0=Disable, 1=16KB, 2=32KB, 3=64KB, 4=128KB 2. Fixed a bug in blast -t. Mac duplex mode will be set according to Phy duplex mode state. 3. Fixed a bug in loopback test. Software counters will be updated before on-chip counters overflow. 4. In loopback test, packet counters had been replace to a 32 bit counter. Version 1.10 1. No longer use DOS4GW.exe, instead,DOS extended memory will be used. 2. Reduced wait time in link_test. 3. Reduced number of trail in led_test. 4. Removed unused code. 5. Reduce total tests time to 22s.(loaded from hard drive) Version 1.09 1. Added -fmac option to program MAC address from file. It works the same way as in b57diag. 2. Reduced total tests (ABC) time to less than 20s. 3. Enabled tx packets with maximum data packet size at wire rate. 4. Enabled rx packets with maximum data packet size with min ipg from data source. 5. Enabled host loop back maximum data packet size with at lease 14.6 usec ipg. 6. Improved blast performance. 7. Packet counts in loop back test have been increase from 200 to 2000. 8. In engineering mode, loop back test max packet count and pattern can be programmed. 9. In engineering mode, pattern for blast tx can be programmed. Version 1.08 1. Version format has been changed to x.xx. 2. Added Error codes. 3. In manufacturing mode, external loopback test has been separated to 2 tests, C3 and C4. C3 is 100BT and C4 is 10BT. 4. Support manufacturing loop (-n) option. 5. Fixed bug in continuously prompting for mac address. 6. Enabled -mac option 7.Changed password to b44kia. 8. Fixed bug in loop command. 9. Phyctrl command will display link status if no option entered. 10. loopback test packet size increase to 1514 bytes (cl4xsb.c) 11. Renamed to b44diag.exe Version 1.07 1. Renamed to b44ediag.exe 2. Allow user to input Eeprom file name with -z. Version 1.06 1. Added External loopback test for 100 and 10 BT. 2. C3 External loopback test will include 100 and 10BT. 3. Sromutil '-f' option must be used along with '-d' option instead of along wiht '-m' option. With '-d -f' option, srom image will be dump to the screen, eeprom.bin and eeprom.txt. 4. Counters displace has been modified. 5. blast default packet length is set to 64 bytes. Version 1.05 1. Modified loopback test to tx 200 packets with 1000 bytes size. 2. Added External loopback test support. 3. Include external loopback test as Group C Test #3. It is disabled by default. Version 1.04 1. Added blast traffic support. 2. Added eeprom programing in both manufacturing mode and engineering mode. 3. Clean up unused functions. 4. Added Phy control support. Version 1.02 1. Added sromutil. 2. Clean up more. Version 1.01: 1. Reduce Size. 2. Support do funciton. 3. Clean up unsupported functions. 4. Fixed help cmd. Version 1.00: 1. Initial release.