Release Notes Broadcom Linux bnx2 and 10GigE Virtual Bus Drivers(VBD) Version 1.9.20d 11/15/2009 NOTE: These driver files are the original files from the vendor. They include multiple driver change histories for multiple Linux Operating Systems. Some drivers may or may not pertain to all Linux Operating Systems but are part of this file for references. Files included are: A. Broadcom bnx2 Linux Driver B. Broadcom BCM57710/BCM57711/BCM57711E 10 GigE VBD for Linux ****************************************************************************************** A. Broadcom bnx2 Linux Driver Version 1.9.20d 10/07/2009 Broadcom Corporation 5300 California Avenue, Irvine, CA 92617 Copyright (c) 2004 - 2009 Broadcom Corporation All rights reserved bnx2 v1.9.20d (Oct 7, 2009), cnic v1.9.3b (Oct 7, 2009) ======================================================= 1. Change: Updated 5709 firmware to 5.0.0.j7 and 5708/5706 firmware to 5.0.0.j4. Fixes include: 1. L2 hang due to iSCSI PDU's padding byte extended to another TCP segment. 2. Proper flow control trip point for current FTQ size. 3. Increase 5709 rxp FTQ depth from 32 to 256 to enhance the performance on systems without flow control. Impact: 5706/5708/5709. Fixes ----- 1. Problem: (CQ43934) System unable to handle bad TCP packets with unexpected SYN flag during iSCSI offload on 10G devices. Cause: Firmware issue. Change: This issue is fixed in firmware (bnx2x 1.50.20). A workaround in the cnic driver to handle unsolicated reset completion is also needed. Impact: bnx2x iSCSI. bnx2 v1.9.20c (Sept 17, 2009), cnic v1.9.3 (July 09, 2009) ========================================================== Enhancements ------------ 1. Change: Updated firmware to 5.0.0.j3 for better small packet rx performance on 5709. Firmware also fixes header digest error during I/O. Impact: All bnx2 devices. bnx2 v1.9.20b (July 09, 2009), cnic v1.9.3 (July 09, 2009) ========================================================== Fixes ----- 1. Problem: (CQ42534) cnic.c does not compile on older kernels. Cause: Some iscsi_proto constants not defined in Change: Added the constant definitions if not already defined. Impact: None. Enhancements ------------ 1. Change: Updated firmware to 5.0.0.j to fix TMF releated iSCSI issues. Impact: bnx2 iSCSI. bnx2 v1.9.19b (July 01, 2009), cnic v1.9.2 (July 01, 2009) ========================================================== Fixes ----- 1. Problem: (CQ42399) 10G iSCSI fails when initiator and target MTUs don't match. Cause: cnic driver sets the MSS without knowing the actual MSS option and timestamp option during TCP connection. Change: Changed driver to set MSS to 0xffff so that firmware can calculate MSS on its own. Impact: bnx2x iSCSI. 2. Problem: 1G iSCSI fails when initiator and target MTUs don't match and timestamp is enabled. Cause: Firmware was not adjusting for the 12-byte timestamp option if MSS was reduced by MSS option. Change Updated firmware to 5.0.0.i Impact: bnx2 iSCSI. 3. Problem: (CQ42353) Unable to disable TCP timestamp on 10G iSCSI. Cause: Timestamp was hardcoded to be enabled for 10G. Change: Update global timestamp option during each TCP connection. Impact: bnx2x iSCSI. 4. Problem: (CQ42329) bnx2x MC assert during IPv6 login/logout. Cause: EQ filled with more than 128 L4 kcqes without MSI-X interrupt for 2 seconds. The driver can only buffer 128 L4 kcqes. Change: Increased L4 kcqe buffer to 256 entries as a temporary solution. Need to understand the delayed interrupt issue. Impact: None. bnx2 v1.9.18b (June 25, 2009), cnic v1.9.1 (June 24, 2009) ========================================================== Enhancements ------------ 1. Change: Added FTQDiscard counter to the list of counters being reported. During small packet test, there may be FTQ overflow and this counter is very useful. Impact: None. 2. Change: Updated firmware to 5.0.0.h to improve small packet L2 performance and to enhance iSCSI TMF handling. Impact: 5706/5708/5709. bnx2 v1.9.17b (June 24, 2009), cnic v1.9.1 (June 24, 2009) ========================================== Fixes ----- 1. Problem: Leaking NetQueues if the firmware did not respond in time Cause: System might be clogged and there is not enough time to process the KCQ Change: Updated driver/firmware to allow the calling of the free RX queue request before a RX alloc request is issued Impact: 5709 2. Problem: An offloaded iSCSI connection would get stuck Cause: Issing an offload request might fail, and this was not handled properly. Change: Updated driver/firmware to return the proper return code and handle offload connection failures. Impact: 5706/5708/5709 3. Problem: tasklet_init() is being called on a task that is scheduled Cause: When the CNIC calls register_device(), that task might already be schedled. Change: tasklet_disable() is insufficient because the tasklet remains scheduled and stays on the tasklet list, instead tasklet_kill() is now used. Impact: 5706/5708/5709 bnx2 v1.9.16b (June 10, 2009), cnic v1.9.0 (June 10, 2009) ========================================================== Enhancements ------------ 1. Change: (CQ38228) Use symbol_get() for ipv6 symbols so that the cnic driver will load without necessarily loading ipv6 modules. Impact: iSCSI over IPv6. 2. Change: Updated 5706/08/09 MIPS firmware to 5.0.0.g. Impact: 5706/08/09. 3. Change: Backported some dma_mapping_error() checking. Impact: None. bnx2 v1.9.15b (June 1, 2009), cnic v1.8.6 (June 1, 2009) ======================================================== Enhancements ------------ 1. Change: Upstream bnx2 tx path optimizations. Please see ChangeLog. Impact: bnx2 tx path. 2. Change: In the cnic driver, save the last allocated TCP port during unregistration so that previously used TCP ports will not be immediately re-used. Impact: iSCSI. 3. Change: VMWare TCP port allocation changes. Impact: VMWare iSCSI. bnx2 v1.9.14b (May 21, 2009) ========================================== Fixes ----- 1. Problem: NOPOUT timeouts on 570x iSCSI connections. Cause: Bugs in TCP timestamp implementation. Change: Updated MIPS firmware to 5.0.0.f. Impact: 5706/5708/5709. bnx2 v1.9.13b (May 18, 2009) ========================================== Fixes ----- 1. Problem: Potentially exceeding the NetQueue limit recommendations by VMware which could stress system resources Cause: When system resources are strained. Change: There are now limits on the number of NetQueues which the driver will request: When the MTU is 1500 the max number of queues per port is 8 When the MTU is 9000 the max number of queues per port is 4 Impact: NetQueue enabled version of VMware ESX 2. Problem: Getting conflicting NetQueue and iSCSI completions Cause: When MSI-X is not used on a 5709, NetQueue is still enabled Change: NetQueue is not disabled is MSI-X is not used. Impact: NetQueue enabled version of VMware ESX bnx2 v1.9.12b (May 13, 2009) ========================================== Fixes ----- 1. Problem: Potentially returning a negative number of NetQueues Cause: When calculating the number of rings, we use the calculation from the number of msi-x vectors returned, The number of NetQueues returned could potentially be negitive if only 1 vector was returned. This is because the driver was subtracting 2 instead of subtracting 1 (for the default queue) from the total number of rings. Change: Return the proper number of queues not including the default queue. Impact: NetQueue enabled version of VMware ESX bnx2 v1.9.11b (May 12, 2009), cnic v1.8.5 (May 13, 2009) ======================================================== Fixes ----- 1. Problem: TCP Delay ACK not working on bnx2x iSCSI Cause: Disabled in cnic driver. Change: Fixed csk->tcp_flags definitions and enabled the proper storm bit for delay ACK. Impact: bnx2x iSCSI. bnx2 v1.9.11b (May 12, 2009) ========================================== Fixes ----- 1. Problem: iSCSI timestamp TCP option not working. Cause: Disabled in firmware. Change: Updated to 5.0.0e MIPS firmware. Impact: 5709. bnx2 v1.9.10b, cnic v1.8.4 (May 11, 2009) ========================================== Fixes ----- 1. Problem: NetQ and iSCSI do not work in Vmware environment. Cause: 1. cnic driver is overwriting CP and COM mailbox bit values newly defined to support multiple kcqs. 2. Firmware is completing some iSCSI kcqes on the NetQ's kcq. Change: Fixed cnic driver to only set and clear bit 0 of the CP and COM mailbox. Firmware has been updated to 5.0.0d. This firmware also supports TCP timestamp option for iSCSI connections. Impact: 5706/5708/5709 iSCSI, NetQ. bnx2 v1.9.9b (May 1, 2009) ========================================== Fixes ----- 1. Problem: There is link, but can't pass traffic on ESXi Cause: Bits in the RX context are being trampled during the renegotiation of the link. Change: RX context offset 0x6 should only be initialized once during init and not be updated during run-time. Offset 4 contains the BIDX that's mapped to the mailbox. Impact: VMware with NetQueue bnx2 v1.9.8b, cnic v1.8.2 (April 27, 2009) ========================================== Enhancements ------------ 1. Change: Updated cnic driver to support 1.50.x HSI as well as the older 1.48.107 HSI. A compile flag will be used to select one or the other. Impact: iSCSI on bnx2x. 2. Change: Spec file and Makefile changes detect the proper module install directory. Impact: installation. bnx2 v1.9.7b, cnic v1.8.1 (April 22, 2009) ========================================== Fixes ----- 1. Problem: Compile error with redfinition of struct kwqe. Cause: Both the CNIC and bnx2 defined this structure. Change: Because the bnx2 definition is L2 specific, it was renamed to struct l2_kwqe. Impact: None. 2. Problem: Add context memory DMA alignment for 57710. Cause: For the 57710 context memory needs to be 16k aligned. Without this alignment you will see errors when trying to establish more then 5 iSCSI connections on VMware ESX 4.0 U1. Change: Properly aligned the context memory by allocating a bigger chunk of memory and then finding the proper alignment. This reduces the number of possible connections in half but now we can properly establish more then 5 connections on VMware. Impact: iSCSI. bnx2 v1.9.6b (April 17, 2009) ============================= Enhancements ------------ 1. Change: Added NetQueue support for VMware. Impact: 5709. bnx2 v1.9.5b (April 17, 2009) ============================= Enhancements ------------ 1. Change: Updated to 5.0.0.a firmware with NetQ support and iSCSI max connection license information. RV2P firmware unchanged: 4.6.16 for 5706, 4.6.15 for 5709. Impact: All chips. 2. Change: Set USE_INT_PARAM on 5709. This will switch the chip in use "interrupt mode" coalescing after MSI/MSI-X. Impact: 5709. 3. Change: Included 5706 when doing statistics block DMA workaround. Impact: 5706. bnx2 v1.8.8b (March 12, 2009) ============================= Enhancements ------------ 1. Change: Updated to latest 4.6.17 CP firmware for 5709. Impact: iSCSI licensing on 5709. bnx2 v1.8.7b, cnic v1.7.8 (March 10, 2009) ========================================== Enhancements ------------ 1. Change: Reverted 5706/5708 firmware to 4.6.16. Low latency interrupt mode does not work on 5706/5708. Impact: None. 2. Change: VMWare changes to expose max. number of iSCSI connections in the cnic_device structure. Impact: VMware iSCSI. Fixes ----- 1. Problem: (CQ39867) Compile error on RHEL5.3 Xen kernel. Cause: msi related symbols undefined because CONFIG_PCI_MSI is not enabled on Xen kernels. Change: Added CONFIG_PCI_MSI around the msi related code. Impact: None. 2. Problem: (CQ39818) iSCSI targets do not reconnect after running self test. Cause: Interrupt is disabled by bnx2 before notifying CNIC to clean up and stop. As a result, bnx2i will not receive interrupts when closing the connections if sharing INTA/MSI with network. Change: Disable interrupt after notifying CNIC to stop. Impact: iSCSI. bnx2 v1.8.6b, cnic v1.7.7 (March 2, 2009) ========================================= Enhancements ------------ 1. Change: Updated to new 5706 firmware (4.6.17) and 5709 firmware (4.6.16). New interrupt coalescing mode for improved latency and iSCSI cache line fix on 5709. Impact: All bnx2 chips. 2. Change: CNIC iSCSI changes for VMWare. Impact: VMWare only. bnx2 v1.8.5b, cnic v1.7.6 (Feb 9, 2009) ======================================= Fixes ----- 1. Problem: (CQ39380) bnx2x iSCSI license not read correctly. Cause: Using wrong variable to check the license. Change: Fixed the logic. Impact: bnx2x iSCSI. 2. Problem: Driver accesing MMIO registers during VLAN operations when the device is in D3hot state in older kernels. Cause: VLAN registration functions do not check for device state. Change: Added if_running check before MMIO access in VLAN registration functions. Impact: VLAN operations on all bnx2 chips. Enhancements ----------- 1. Problem: Updated 5706/5708 firmware to 4.6.16. Impact: 5706/5708. bnx2 v1.8.4b, cnic v1.7.5 (Jan 30, 2009) ======================================== Fixes ----- 1. Problem: (CQ39281) Management firmware stops passing traffic when bnx2 driver is loaded with jumbo frames enabled. Cause: Firmware bug. Change: Updated to 4.6.15 firmware. Impact: 5706/5708/5709. 2. Problem: iSCSI does not work on 57711 in single function mode. Cause: Driver only allows iSCSI on 57711 if iSCSI is enabled. Change: iSCSI config. not required in single function mode. Impact: bnx2x iSCSI. Enhancements ------------ 1. Change: (CQ38576) Add 5709 to bnx2.4 man page. Impact: None. bnx2 v1.8.3b, cnic v1.7.4 (Jan 23, 2009) ======================================== Fixes ----- 1. Problem: (CQ38610, CQ39000, CQ39015, CQ39071, CQ39133) Various Jumbo frames related data corruption issues. Cause: Bug in RV2P firmware causing jumbo frames to be DMA'ed without the frame header control structure occasionally. Change: New firmware. Impact: 5706/5708/5709. bnx2 v1.8.2c, cnic v1.7.4 (Dec 30, 2008) ======================================== Fixes ----- 1. Problem: (CQ38955) Xen kernel panic when unloading bnx2 with jumbo MTU. Cause: Bug in bnx2_free_rx_mem(). The jumbo page ring memory was freed incorrectly using the wrong local variable as array index. Change: Fixed bug by using the correct variable as array index. Impact: Jumbo frames. 2. Problem: (CQ38965) iSCSI connection timeout on bnx2x. Cause: During CFC Delete RAMROD completion handling, the wrong (older) iSCSI connection ID can sometimes be retrieved using the harware CID. The CID in the mapping table was not cleared after the CID was freed. Fix: Adding clearing of the CID in the data structure after a CID is freed. Impact: bnx2x iSCSI. Enhancements ------------ 1. Change: (CQ38744) Reduced R2TQ memory usage to match new firmware interface (firmware 4.8.9). This reduces the amount of kernel memory substantially for each iSCSI connection on bnx2x. Impact: bnx2x iSCSI. bnx2 v1.8.2b, cnic v1.7.3 (Dec 17, 2008) ======================================== Enhancements ------------ 1. Change: Added iSCSI configuration check on 57711E devices before allowing iSCSI connections. Impact: bnx2x iSCSI. bnx2 v1.8.2b, cnic v1.7.2 (Nov 25, 2008) ======================================== Fixes ----- 1. Problem: bnx2x iSCSI does not work on functions 2 or above. Cause: This was caused by multiple problems: a) Status block ID specified by bnx2x was wrong. b) MSI-X vector assigned to CNIC was wrong. c) New method to ack. status block using HC register was not implemented. d) Status block ID in CSTORM status block is always 0, and as a result, the status block ID used to ack. the status block was wrong. All these problems only affect functions 2 and above. Change: All problems fixed in bnx2x and cnic. Impact: bnx2x iSCSI. bnx2 v1.8.2b, cnic v1.7.1 (Nov 15, 2008) ======================================== Enhancements ------------ 1. Change: Added CNIC support for Multi function bnx2x iSCSI. Impact: bnx2x iSCSI. bnx2 v1.8.2b, cnic v1.6.2 (Nov 12, 2008) ======================================== Enhancements ------------ 1. Change: Updated to latest 4.6.13 5709 firmware to fix context corruption with flow control enabled. Impact: 5709. 2. Change: Added support for 5716S PCI ID. Impact: None. Fixes ----- 1. Problem: (CQ35904) Netdump does not work. Cause: Problem introduced by MSI-X multiqueue. IRQ handlers were changed to take bnx2_napi parameter instead of netdev parameter. Change: Fixed by passing proper parameter to IRQ handler from netpoll. All IRQ handlers are called when using multiple MSI-X vectors. Impact: 5709 netpoll. bnx2 v1.8.1f, cnic v1.6.1 (Nov 5, 2008) ======================================== Fixes ----- 1. Problem: All TSO packets corrupted on 5706/5708. Cause: Firmware bug zeroing the wrong field in IP header. Change: Updated to latest 4.6.11 5706/5708 firmware and 4.6.12 5709 Firmware. Impact: 5706/5708/5709. 2. Problem: bnx2x chip asserts when trying to make iSCSI connection to an unknown IP address. Cause: When connection fails, the driver sends a command to an unitialized CID. Change: Added logic to only send deletion commands to initialized CIDs. Impact: bnx2x iSCSI. Enhancements ------------ 1. Change: Added support for one single VLAN to a bnx2x iSCSI interface. Impact: bnx2x iSCSI. bnx2 v1.8.1e, cnic v1.6.0 (Oct 27, 2008) ======================================== 1. Change: Updated to latest 5709 firmware to fix iSCSI data integrity problem. Impact: 5709. bnx2 v1.8.1d, cnic v1.6.0 (Oct 23, 2008) ======================================== Enhancements ------------ 1. Change: Updated to latest bnx2 firmware to fix iSCSI data integrity problem. Impact: 5706/5708/5709. 2. Change: Updated to the latest bnx2x HSI files. Impact: bnx2x iSCSI. bnx2 v1.8.1c, cnic v1.5.9 (Oct 13, 2008) ======================================== Fixes ----- 1. Problem: (CQ37905) Unable to compile on SLES10 SP2. Cause: DIV_ROUND_UP macro not defined in this kernel. Change: Added it for compatibility. Impact: None. Enhancements ------------ 1. Change: Updated to latest 5709 firmware that fixes an NCSI problem. Impact: 5709. 2. Change: Handle TCP reset in the middle of TCP close more appropriately. Impact: iSCSI. 3. Change: Handle iSCSI license checking in the same way as 5708/5709. Impact: iSCSI on bnx2x. bnx2 v1.8.1b, cnic v1.5.8 (Oct 13, 2008) ======================================== Fixes ----- 1. Problem: bnx2x iSCSI CIDs may be allocated outside the range of allocated host memory. Cause: CID range bigger than the amount of allocated host context memory. Change: Changed to match the CID range with memory range. Impact: bnx2x iSCSI. Enhancements ------------ 1. Change: Sync'ed with the latest upstream driver bnx2 1.8.1. Impact: None. 2. Change: Implemented iSCSI connection license enforcement for bnx2x devices. Impact: bnx2x iSCSI. bnx2 v1.8.0j, cnic v1.5.7 (Oct 6, 2008) ======================================== Fixes ----- 1. Problem: (CQ37610) Chip hangs when changing MTU with active iSCSI connections. Cause: Both cnic and bnx2 drivers setting up the chip at the same time. Change: Added check so that the register_cnic function will fail if the bnx2 driver is in reset. Impact: iSCSI. 2. Problem: (CQ37762) Able to unload bnx2/bnx2x drivers while there are active iSCSI connections. Cause: CNIC driver does not have a reference count on the BNX2/BNX2X drivers. Change: This became a problem after the register_cnic function was no longer exported. To solve the problem, the CNIC driver will now get an explicit reference during register_cnic. Impact: iSCSI. 3. Problem: (CQ37429) MMIO access while the chip is in D3hot state. Cause: The driver does not check if_running state consistently during ethtool operations. Change: Added proper checks to all ethtool and multicast change functions. Impact: ethtool operations and multicast operations. Enhancements ------------ 1. Change: Simplified ipv4 TSO logic in the driver. This was made possible with newer 5708 firmware. Impact: 5708 TSO and other traffic. 2. Change: ethtool -p now blinks forever. This is the standard behavior in most other net drivers. Impact: ethtool -p. bnx2 v1.8.0i, cnic v1.5.5 (Sep 30, 2008) ======================================== Fixes ----- 1. Problem: (CQ36787) iSCSI login/logout commands fail on 5709 after a while. Cause: Not handling the KWQ completion properly on 5709 in INTA/MSI mode. Change: Changed to handle KWQ completions by checking the cmd_consumer_index instead of the rx_quick_index15. Impact: 5709 ISCSI in INTA/MSI mode. 2. Problem: (CQ37497) CNIC driver does not compile on powerpc. Cause: csum_ipv6_magic() not defined. Change: Added #include Impact: None. v1.8.0g (Sep 24, 2008) ======================== Fixes ----- 1. Problem: (CQ37511) System locks up when loading cnic driver on 2.6.16 kernel. Cause: symbol_put_addr() in 2.6.16 tries to acquire the same lock twice. Change: Workaround by using __symbol_put() which does not have the same problem. Impact: None. v1.8.0f (Sep 23, 2008) ======================== Fixes ----- 1. Problem: (CQ37405) Kernel panic when performing ifup/ifdown with iSCSI connections on bnx2x devices. Cause: Sending searcher delete to bnx2x devices when connection was not established (due to Spanning Tree or other reasons). Change: Check PG offload state before sending searcher delete. Impact: iSCSI on bnx2x. v1.8.0e (Sep 22, 2008) ======================== Enhancement ----------- 1. Change: Updated to latest driver firmware 4.6.6 for 5709. Impact: 5709. 2. Change: Updated cnic so that it will not crash even if using older bnx2/bnx2x drivers without CNIC support. The net driver can also be loaded after cnic and it will still work without crashing. Impact: iSCSI. 3. Change: (CQ 37381) Updated driver to check Vaux PRESET before allowing WoL. This is needed to support 5709 quad-port boards. Impact: WoL on all devices. v1.8.0d (Sep 15, 2008) ======================== Enhancements ------------ 1. Change: Updated CNIC iSCSI setup for bnx2x devices. Impact: iSCSI on bnx2x devices. v1.8.0c (Aug 25, 2008) ======================== Fixes ----- 1. Problem: Does not compile on older kernels. Cause: "__maybe_unused" undefined on older kernels. "num_online_cpus()" undefined on 2.4 kernels. Change: Added compatibility code to workaround. Impact: None. v1.8.0b (Aug 25, 2008) ======================== Enhancement ----------- 1. Change: Updated to latest driver firmware 4.6.2 for 5709. Impact: 5709. v1.7.9c (Aug 5, 2008) ======================== Fixes ----- 1. Problem: bnx2 does not compile on older kernels. Cause: is missing on 2.6.19 and older kernels. Change: Added compatibility code to check for kernel version before including the file. Impact: none. v1.7.9b (Aug 5, 2008) ======================== Enhancements ------------ 1. Change: Added multi-tx ring for 5709. This fetaure is available on 2.6.27 kernel when using MSI-X. Impact: 5709 2. Change: Added support for 57710 iSCSI in the CNIC driver. Impact: iSCSI. v1.7.7c (July 14, 2008) ======================== Fixes ----- 1. Problem: Source RPM fails to build. Cause: New file missing in tarball. Change: Added missing file. Impact: None. v1.7.7b (July 9, 2008) ======================== Enhancements ------------ 1. Change: Added probe function so that the CNIC driver can get the pci_device pointer earlier before registration. Impact: iSCSI. 2. Change: Added support for 5716. Impact: None. v1.7.6c (June 6, 2008) ======================== Enhancements ------------ 1. Change: Added multi-ring RX support on 5709 using MSI-X. This feature is only available on 2.6.24 and newer kernels running on SMP machines. Impact: 5709. 2. Change: Added secondary unicast address support. We now support up to 5 unicast addresses. This feature is only available on 2.6.23 and newer kernels. Impact: All chips. v1.7.6b.1 (Aug 14, 2008) ======================== Fixes ----- 1. Problem: (CQ36808) VLAN tagged packets received by host stack without the VLAN tag. Cause: If no VLANs are set up using vconfig, and if the driver configures the chip to strip the VLAN tag, the problem can happen. With IPMI or UMP enabled, the driver is likely to configure the chip to strip the VLAN tag. Change: Modified the driver to re-insert the VLAN tag when necessary. I.e. when IPMI/UMP is enabled and vconfig has not setup any VLANs. Impact: All chips receiving VLAN traffic. v1.7.6b (May 29, 2008) ======================== Fixes ----- 1. Problem: IPv4 TSO generates bad packet when the TSO packet size is 1-MSS. Cause: Probably firmware does not expect this boundary condition. Change: Detect this 1-MSS condition in driver and skip the TSO logic. 1-MSS TSO packet will be treated like a regular TX checksum offload packet. Impact: TSO on all chips. 2. Problem: Cannot disable VLAN stripping even when management firmware is disabled. Cause: The new logic to check firmware VLAN stripping capability was buggy. Change: Fixed the code so that VLAN stripping can always be disabled if management firmware is disabled. Impact: VLAN/management firmware. v1.7.5d (May 13, 2008) ======================== Enhancements ------------ 1. Change: Incorporated latest firmware 4.4.18. Bug fix is in RV2P. Impact: All chips. v1.7.5c (May 7, 2008) ======================== Enhancements ------------ 1. Change: Incorporated latest firmware 4.4.17. Bug fix is in RV2P. Impact: All chips. v1.7.5b (May 5, 2008) ======================== Fixes ----- 1. Problem: (CQ35080) Hard lock when running ethtool -s on the device that is in the down state. Cause: I/O to the device to set link speed in D3-hot state can cause lockup because the chip does not respond to I/O. Change: ethtool -s will just store the new settings without configuring the new speed. When the device is later brought up, the new speed will be set as part of chip init. Impact: All chips. 2. Problem: (CQ35075 CQ35042) Various compile errors on SuSE SLES 9 and SLES 10 distro kernels. Cause: ip_hdr() and __le32/__le32 backported to the distro kernels. Change: Adjusted compatibility defines. Impact: None. Enhancements ------------ 1. Change: Incorporated latest 5709 firmware 4.4.16. Timer context scanning is reduced with this firmware to 500us. With this, the temporary enhancement in 1.7.4c #2 has been removed. Impact: 5709 iSCSI. v1.7.4e (April 26, 2008) ======================== Fixes ----- 1. Problem: (CQ34841) 5709 does not link up on some remote PHY systems. Cause: No initial link interrupt. Change: Added code to poll for link when remote PHY is present. Impact: Remote PHY systems. 2. Problem: (CQ34767) Kernel panic on 5709 when using jumbo frames with NCSI traffic. Cause: RV2P bug causing RX packets to overwrite kernel memory. Change: Updated to latest RV2P code for 5709 and 5708. Impact: 5706/5708/5709. v1.7.4d (April 17, 2008) ======================== Fixes ----- 1. Problem: IPv6 iSCSI does not work. Cause: Added code in the last version 1.7.3c to check for CONFIG_IPV6 before enabling the IPv6 CNIC support. This failed to check for CONFIG_IPV6_MODULE if IPv6 is configured as module in the kernel configuration. Change: Changed the checking to CONFIG_IPV6 or CONFIG_IPV6_MODULE. Impact: None. v1.7.4c (April 16, 2008) ======================== Fixes ----- 1. Problem: (CQ34814, CQ33984) Driver does not compile on 2.4 kernels. Cause: __le32 and __be32 not defined in 2.4 kernels. Change: Defined these as u32 on 2.4 kernels. Impact: 2.4 kernels. Enhancements ------------ 1. Change: Incorporated latest 5709 4.4.12 firmware to fix various iSCSI problems. Impact: 5709. 2. Change: Slowed down the timer block reload time. It was noticed that after the CNIC driver was unloaded, the timer context memory was reloaded in a tight loop by the chip. This issue needs to be properly addressed in the firmware at a future date. Impact: iSCSI. v1.7.4b (April 11, 2008) ======================= Enhancements ------------ 1. Change: Incorporated latest 5709 4.4.11 firmware to fix various iSCSI problems. Impact: 5709. v1.7.3k (April 9, 2008) ======================= Enhancements ------------ 1. Change: Incorporated latest 5709 4.4.10 firmware to fix various iSCSI problems. CID ranges are now read directly from shared memory. Impact: 5709. v1.7.3j (April 7, 2008) ======================= Fixes ----- 1. Problem: (CQ33967) Ethtool register test fails. Cause: Register 0x1004 context status register should not be tested. Change: Removed 0x1004 from register test. Impact: None. Enhancements ------------ 1. Change: Incorporated latest 5709 4.4.9 firmware to fix various iSCSI problems. Impact: 5709. v1.7.3i (April 4, 2008) ======================= Fixes ----- 1. Problem: (CQ33948) iSCSI over IPv6 does not work on SLES10. Cause: The CNIC driver does not handle IPv6 on older kernels without NETEVENTS support. Change: Modified the logic to support older kernels. Impact: All iSCSI connections using IPv4 or IPv6. 2. Problem: (CQ34315) Scanning iSCSI disks during max sessions test causes connection problems. Cause: 5709 context memeory allocated by CNIC driver does not match the iSCSI and PG CID range used by the firmware. Change: Changed to the matching CID range. Impact: 5709 iSCSI. v1.7.3h (March 28, 2008) ======================= Fixes ----- 1. Problem: (CQ33984, CQ34210, CQ34310, CQ34597) Various compiler warnings and errors on RHEL, SuSE, and 2.4 kernels. Cause: New features not compatible with older kernels, or older vendor kernels backported with newer features. Change: Fine-tuned compatibility compiler directives. Impact: All kernels. v1.7.3g (March 10, 2008) ======================= Enhancements ------------ 1. Change: Updated to latest 5709 firmware version 4.4.7. Impact: 5709. v1.7.3f (March 10, 2008) ======================= Fixes ----- 1. Problem: CNIC takes a long time to resolve ARP, causing iSCSI to fail. Cause: NETEVENT_NEIGH_UPDATE event notifier sometimes takes a long time to be called. Change: This is under investigation. For now, the workaround is to use the existing neighbour entry if it is in NUD_VALID state. Previously, we would only use it if it was in NUD_CONNECTED state. Impact: iSCSI neighbour resolution. 2. Problem: iSCSI sometimes fails to initialize. Cause: The KWQ is in full condition and prevents any KWQE to be sent to the firmware. This is caused by the KWQ consumer index in the status block not initializing to 0. Change: Added workaround to skip the KWQ full condition check when sending the first KWQE. This should be properly fixed in firmware. Impact: None. v1.7.3d (February 15, 2008) ============================ Fixes ----- 1. Problem: System hangs with iSCSI traffic. Cause: Infinite loop in NAPI poll. Change: Fixed the problem of not comparing the CNIC tag properly when determining whether there is more work in NAPI poll. Impact: None. 2. Problem: iSCSI does not work on 5709 Cause: Not initializing 5709 properly for iSCSI. The chip_id field was not propagated to the CNIC driver. Change: Fixed the chip_id field. Impact: None. v1.7.3c (February 09, 2008) ============================ Enhancements ------------ 1. Change: Updated 5708 and 5709 firmware to version 4.4.2. Impact: All devices. 2. Change: Updated RV2P firmware to the latest. This may fix the jumbo frame issue. Impact: All devices, especially jumbo frames on 5709 Bx. 3. Change: Modified CNIC interface in preparation for 57710 devices. Impact: iSCSI. v1.7.2f (February 04, 2008) ============================ Fixes ----- 1. Problem: Temporary workaround for one prototype 5709S mezz. card not working. Cause: The driver was looking at the wrong shared memory location to identify the card. Change: Fixed the code to check the correct BNX2_SHARED_HW_CFG_CONFIG location. Impact: 5709S. v1.7.2e (January 31, 2008) ============================ Fixes ----- 1. Problem: (CQ33704) CNIC driver fails MSI-X mode on 5709. Cause: When implementing the fix, the wrong constant was used for the CNIC MSI-X vector. Change: Corrected to use the correct constant BNX2_CNIC_VEC. Impact: None. 2. Problem: iSCSI outgoing packets over IPv6 are bigger than 1518 bytes. Cause: MSS calculation was based on IPv4 and did not accout for the IPv6 header size. Change: Adjusted MSS calculation for IPv6. Impact: None. v1.7.2c (January 30, 2008) ============================ Fixes ----- 1. Problem: CNIC driver does not work in MSI-X mode on 5709. Cause: This is a regression caused by moving the CNIC MSI-X vector from 8 to 2. The context memory did not get updated with the new vector. Change: Changed the definition. All bits that depend on the MSI-X vector will now have the proper definitions automatically. Impact: None. v1.7.2b (January 30, 2008) ============================ Enhancements ------------ 1. Change: Updated 5709 firmware to 4.4.1. Impact: 5709. 2. Change: Added temporary workaround for one prototype 5709S mezz. card. The workaround will be removed once newer cards are available. Impact: 5709S. v1.7.1e (January 14, 2008) ============================ Enhancements ------------ 1. Change: Updated 5709 firmware to 4.1.1 for IPv6 iSCSI support. Impact: 5709. 2. Change: Updated 5708 RXP firmware to 4.1.1. Impact: 5706/5708. 3. Change: Updated RV2P firmware for 5709. Impact: 5709. 4. Change: Added IPv6 support to CNIC driver. Impact: New BNX2I driver must be used with this new CNIC driver. v1.7.1d.3 (February 7, 2008) ============================ Fixes ----- 1. Problem: 5706S continues to not link down occasionally on some blade systems. Cause: In some cases, even turning off the tx current does not cause the link to go down. Change: Link transition can be triggered based on the SYNC_FAILED bit in the AN_DEBUG register when all else fails. Impact: 5706S. v1.7.1d.1 (February 1, 2008) ============================ Fixes ----- 1. Problem: 5706S still not linking down occasionally on some blade systems when the switch blade is disconnected. Cause: Occasionally, all the bits that we check will falsely indicate link up and trigger the parallel detect logic on this blade platform. Once in parallel detect mode with autoneg disabled, the driver will never detect link down. Change: Disabled parallel detect on this platform by checking PCI sub IDs to identify the device. Impact: Parallel detect not supported on this vendor device. v1.7.1d (January 25, 2008) ============================ Fixes ----- 1. Problem: 5706S still not linking down on some blade systems when the switch blade is disconnected. Cause: This is the same problem that was fixed in 1.7.0b. After switch module is removed, the SYNC_FAILED bit sometimes toggles low, and this causes the parallel detect logic in the driver to trigger and disable autoneg. Disabling autoneg causes false link to come up immediately. Change: It seems that the RUDI_INVALID bit can be used to prevent the above from happening. Modified parallel detect code to additionally check the RUDI_INVALID bit and trigger only when the bit is cleared. Impact: Parallel detect logic in 5706S. v1.7.1c (December 27, 2007) ============================ Fixes ----- 1. Problem: Driver crashes when adding VLAN and bonding. Cause: Bonding calls driver's VLAN function in interrupt context with lock held. We recently added a VLAN feature in 1.6.8b which requires chip reset when VLANs are added or removed. The reset will call vmalloc/vfree which must not be called in interrupt context. Change: Reverted the VLAN feature for now. Will workaround it in the future. Impact: 5709 only. This new VLAN feature is no longer available. v1.7.1b (December 24, 2007) ============================ Fixes ----- 1. Problem: Driver crashes when using jumbo frames on 5709 A1. Cause: RV2P firmware problem. Change: Disabled jumbo page ring on 5709 Ax chips. Impact: Jumbo receive page rings not supported on 5709 Ax. 2. Problem: CNIC driver prints "Failed waiting for ref count to go to zero" when unloading the driver. This is a minor cosmetic issue. Cause: Minor bug in driver comparing ref_count to 1 instead of zero during exit. Change: Fixed the code to check for ref_count == 0. Impact: None. v1.7.0b (December 12, 2007) ============================ Fixes ----- 1. Problem: (CQ33032) CPU utilization increases dramatically when TSO is enabled. Cause: Driver is spending a lot of unnecessary time in TX handling code when TSO is enabled. This regression was introduced when the TX handling code was changed to match the RX handling code. The RX handling code was changed to fix a packet rot problem. When TSO is enabled, the tx index can stop at non-packet boundaries and the code will keep waiting until it gets to the next packet boundary. Change: Fixed it to handle this condition properly. Impact: None. 2. Problem: 5706S does not link down in some blade systems. Cause: Hardware problem. Change: Added workaround logic to check periodically and force a link down when the PHY reports SYNC status failed. This only works when autoneg is enabled. Impact: 5706S. v1.6.8e (December 10, 2007) ============================ Fixes ----- 1. Problem: When using jumbo MTU with large RX ring sizes, system will crash or the driver won't load. Cause: Bug in driver where the page descriptor array was declared too small. Change: Fixed the array size. Impact: None. 2. Problem: CNIC driver won't compile on kernels without CONFIG_PCI_MSI. Cause: Some code needs to be conditionally compiled only when CONFIG_PCI_MSI is set. Change: Added #ifdef CONFIG_PCI_MSI where necessary. Impact: None. 3. Change: Disabled iSCSI on 5709 until next release. Impact: None. v1.6.8d (December 07, 2007) ============================ Change: Reverted the 5706S workaround made in 1.6.8c because it was unreliable. Impact: None. v1.6.8c (December 07, 2007) ============================ Fixes ----- 1. Problem: (CQ32794) Kernel panic (skb_over_panic) with jumbo frames. Cause: RV2P firmware incorrectly placed jumbo data into SKB. Change: New RV2P firmware. Impact: Jumbo frames on all hardware. 2. Problem: (CQ32817) ethtool loopback test fails. 3. Problem: (CQ32842) Chariot test fails. Cause: RX buffer size too small to contain MTU-sized frame. This was introduced by the new Jumbo RX logic. Change: Fixed RX buffer size logic. Impact: Traffic on all hardware. 4. Problem: (CQ32862) Fails to compile on RH9u9. Cause: Kernel API skb_fill_page_desc() backported to RH kernel causing duplicate definition. Change: Adjusted compatibility code. Impact: None. 5. Problem: (CQ32866) ISCSI driver fails to compile with 1.6.8b. Cause: print_mac() multiply defined when bnx2.h is included in the bnx2i driver. Change: Changed print_mac() to static inline. Impact: None. 6. Problem: 5706S does not link down in some blade systems. Cause: Hardware problem. Change: Added workaround logic to check periodically. Impact: 5706S. Enhancements ------------ 1. Change: Added flow control logic on 5709. Impact: 5709. 2. Change: Updated all firmware to 4.0.5. Impact: All hardware. v1.6.8b (November 28, 2007) ============================ Enhancements ------------ 1. Change: Added MSIX support for 5709 B0. Impact: 5709 B0. 2. Change: Added multi-page buffer support for Receive Jumbo frames. Impact: All chips. This feature is experimental at this point. 3. Change: Allow VLAN tags in receive packets when management firmware is enabled. Impact: 5709 only. This feature is experimental and requires new boot code and UMP/IPMI code. 4. Change: Updated firmware to 4.0.3. Impact: All chips. v1.6.7b (October 16, 2007) ============================ Fixes ----- 1. Problem: (CQ31861) Remote copper PHY does not link up if WoL is enabled. Cause: bnx2_set_power_state() assumes that only copper devices support WoL and proceeds to configure the copper PHY to 10/100 Mbps. This assumption is no longer valid after Serdes WoL support was added in 1.6.3c. Change: Fixed the code to take check for Serdes and copper when setting up the PHY for WoL. Impact: WoL. v1.6.6b (October 10, 2007) ============================ 1. Change: Update 5708 firmware to 3.7.19. v1.6.5k (October 10, 2007) ============================ 1. Problem: Will not compile on 2.6.23 kernel. Cause: get_perm_addr no longer defined in struct ethtool_ops Change: Adjusted kernel compatibility #ifdef. Impact: None. v1.6.5j (October 10, 2007) ============================ No change to bnx2. Updated cnic driver to 1.1.24. v1.6.5i (October 8, 2007) ============================ Enhancements ------------ 1. Change: Update 5708 firmware to 3.7.18. v1.6.5h (October 4, 2007) ============================ Enhancements ------------ 1. Change: Update 5708 firmware to 3.7.17. v1.6.5g (October 1, 2007) ============================ Enhancements ------------ 1. Change: Update 5708 firmware to 3.7.16. v1.6.5f (September 30, 2007) ============================ Enhancements ------------ 1. Change: Update 5708 firmware to newer 3.7.15. v1.6.5e (September 29, 2007) ============================ Enhancements ------------ 1. Change: Update 5708 firmware to 3.7.15. v1.6.5d (September 28, 2007) ============================ Enhancements ------------ 1. Change: Combined RPM package and tar file with CNIC driver. v1.6.5c (September 26, 2007) ============================ Enhancements ------------ 1. Change: Update 5708 firmware to 3.7.14. v1.6.5b (September 25, 2007) ============================ Fixes ----- 1. Problem: (CQ30086) 5709 A1 does not link up when connected to some Broadcom devices. Cause: Early DAC wakeup workaround needed for 5709 A1. Change: Added workaround. Impact: None. Enhancements ------------ 1. Change: Added CNIC support for iSCSI. Impact: Only enabled on 2.6.16 and newer kernels. v1.6.3c (July 23, 2007) ======================= Fixes ----- 1. Problem: (CQ30591) ethtool -t fails on remote PHY systems. Cause: Link test and loopback test were not modified to support remote PHY. Change: Added remote PHY support to link test and changed the code to skip PHY loopback on remote PHY since it's not supported. Impact: None. 2. Problem: (CQ30625) ethtool speed settings are lost after ifdown. Cause: The remote PHY settings stored in firmware is not the same as the driver's last setting. Change: Modified the code to keep the driver's setting unless there's is change in the remote PHY media. Impact: ethtool -s on remote PHY systems. Enhancements ------------ 1. Change: Change ethtool's wol setting to NVRAM's default and add support for Serdes WoL if NVRAM supports it. Impact: ethtool wol's default setting. v1.6.3b (July 13, 2007) ======================= 1. Problem: Problems reading and writing flash on 5709. Cause: Hardware changes in 5709. Change: Rearranged current flash code to properly support 5709. Impact: Changes will impact flash operations on 5706/5708/5709 devices. 2. Problem: (CQ30516) Management firmware version string disappears on 2nd modprobe of the driver. Cause: The 2nd modprobe will program the device back to D0 from D3hot. This causes a reset and it will take some time before the management firmware information will be available. Change: Added a proper wait loop to wait for the firmware information to be deposited in shared memory. Impact: None. v1.6.2f (July 3, 2007) ======================= 1. Problem: The fix for CQ29488 in the previous version is problematic and needs to be reverted. Cause: Adding the netif_carrier_off() call before register_netdev() in bnx2_init_one() can cause problems if register_netdev() fails. netif_carrier_off() can queue a link watch event that can run later. If register_netdev() fails, the netdev structure will be freed and the link watch event may panic when it is scheduled to run. Change: Moving the netif_carrier_off() to after register_netdev() also will not work as it can cause race conditions with the interrupt handler. So the best thing to do is to revert the earlier fix and not address the CQ29488 issue. Impact: CQ29488 is not fixed. v1.6.2e (July 3, 2007) ======================= Fixes: ------ 1. Problem: (CQ29528) Link does not come up using remote PHY (continued). Cause: ifup script may be using mii-tool to obtain link status, and interfering with remote PHY firmware. Change: Block mii-tool ioctl access when remote PHY firmware is present. Impact: None. 2. Problem: (CQ29488) Driver reports link up in ethtool before the interface is brought up. Cause: The netdevice structure's initial link setting is up and that gets reported directly by ethtool. Change: Added netif_carrier_off() call in bnx2_init_one(). Impact: None. v1.6.2d (June 22, 2007) ======================= Fixes: ------ 1. Problem: (CQ29528) Link does not come up using remote PHY. Cause: The fix in 1.6.2b still has a problem. The copper or Serdes default link setting does not follow the correct port when the port is changed during chip reset. Change: Fix the code to always refresh the port and link setting during chip reset. Impact: None. 2. Problem: (CQ30181) Cannot compile on 2.4 kernels. Cause: USEC_TO_SEC constant is not defined on older kernels. Change: Added conditional #define for this constant on older kernels. Impact: None. Enhancements: ------------- 1. Change: Update 5709 firmware to 3.7.1. Impact: 5709 devices. v1.6.2b (June 21, 2007) ======================= Enhancements: ------------- 1. Change: Added management firmware version to ethtool -i. Impact: None. Fixes: ------ 1. Problem: (CQ29528) Link does not come up using remote PHY. Cause: The driver is using the wrong port when setting up the remote PHY link. Change: Fixed bug to always use the correct requested port or default port when setting remote PHY link. Impact: None. 2. Problem: (CQ30028) Advertised Autoneg not set in ethtool. Cause: Remote PHY code is not setting the flag which is for information only. Change: Added code the set the flag for consistency. Impact: None. v1.6.1c (May 22, 2007) ===================== Enhancements: ------------- 1. Change: (CQ28907) Added support for setting copper and fibre speeds. Impact: Only available on Remote PHY systems. v1.6.1b (May 7, 2007) ===================== Fixes: ------ 1. Problem: (CQ29301) Setting invalid speed setting causes driver to crash. Cause: Lock taken without unlock when exiting iwith error the procedure to set speed. Change: Fixed the code with proper unlock. Impact: None. v1.6.0b (April 30, 2007) ======================== Enhancements: ------------- 1. Change: Improved handshake with remote PHY firmware. Impact: None. v1.5.10c (May 4 , 2007) ======================= Fixes: ------ 1. Problem: Extremely low TSO performance when destination has a smaller MSS than the source. Cause: Packets smaller than MTU are not processed as TSO packets. Change: Removed the SKB length check when doing TSO. Impact: None. v1.5.10b (May 1, 2007) ========================= Enhancements: ------------- 1. Change: Removed Remote PHY until next release. Impact: No Remote PHY support. 2. Change: Added check for 2.5G capability before enabling 2.5G on 5709S. Impact: None. Fixes: ------ 1. Problem: (CQ28438) NETDEV WATCHDOG after OS boot. Cause: The mailbox queue is halted after the OS reads config. register 0x94. Change: Set MQ_CONFIG_HALT_DIS in register MQ_CONFIG on 5709 A0 and A1. Impact: None. v1.5.9b (April 20, 2007) ======================= Enhancements: ------------- 1. Change: Enhanced remote PHY support for 5708S. Impact: None. Fixes: ------ 1. Problem: (CQ29056) Driver does not compile on SLES 10 SP1 kernel. Cause: Backported netif_tx_lock() causes compatibility problem. Change: Adjuested compatibility #ifdef. Impact: None. 2. Problem: (CQ28880) Driver fails register test after running traffic. Cause: A reserved register 0x500c was mistakenly included in the test. Change: Removed this register from the test. Impact: None. v1.5.8b (March 13, 2007) ======================= Enhancements: ------------- 1. Change: Added remote PHY support for 5708S. Impact: None. v1.5.7b (March 2, 2007) ======================= Enhancements: ------------- 1. Change: Added IPV6 TSO for 5709. Impact: None. 2. Change: Added 2.5G parallel detection for 5709s. Impact: None. v1.5.6b (February 28, 2007) =========================== Enhancements: ------------- 1. Change: Added Serdes support for 5709. Impact: None. Fixes: ------ 1. Problem: (CQ28433) Driver does not compile on some early 2.6 and 2.4 kernels. Cause: Kernel compatibility issue. Change: Added some missing #ifdef CONFIG_PCI_MSI. Impact: None. 2. Problem: (CQ28527) System hangs when running bonding scripts on 5709. Cause: Bonding driver reads MDIO registers after the device is in D3hot state. Change: Added check to disallow MDIO access after the device is down. Impact: None. v1.5.5b (January 31, 2007) =========================== Fixes: ------ 1. Problem: (CQ28252) Driver reports the same MAC address for both ports of 5709. Cause: The driver was obtaining the MAC address from the same shared memory area for both ports. Change: Updated driver to read from the deicated shared memory area for each port. Impact: None. 2. Problem: (CQ28226) 5709C does not link up when connected to Dell 5324 and some other switches. Cause: PHY's Early DAC Wakeup Enable bit's strapped value is set. Change: Disable Early DAC Wakeup enable on 5709 A0 after PHY reset. Impact: None. v1.5.4b (January 8, 2006) =========================== Fixes: ------ 1. Problem: 5709 copper device detected as serdes. Cause: Media detection code not complete. Change: Added complete media detection code. Impact: None. Enhancement: ------------ 1. Change: Add IPv6 checksum support. Impact: None. v1.5.2b (December 22, 2006) =========================== Merged in all latest changes. v1.5.1c (November 30, 2006) =========================== Enhancement: ------------ 1. Change: Remove 5709 FPGA code. Impact: None. v1.5.1b (November 15, 2006) =========================== Enhancement: ------------ 1. Change: Added support for 5709. Impact: None. v1.4.52c (March 07, 2007) ========================= Enhancement: ------------ 1. Change: Increase maximum receive ring size to 4080. The default is kept the same at 255. Impact: None. v1.4.51b (December 21, 2006) ============================ Fixes: ------ 1. Problem: (CQ27802) Cannot enable flow control in some cases. Cause: In some cases when flow control is forced to on, the driver detects no changes in advertisement, and as a result, will not re-autoneg. Without the link change, flow control settings will not change. Change: Added some code to setup flow control when no other PHY settings are made. This will ensure that flow control changes will take effect immediately. Impact: None. v1.4.50b (December 15, 2006) ============================ Fixes: ------ 1. Problem: (CQ27424) Panic when writing to nvram. Cause: Bug in driver when an alignment buffer is used Change: Fixed the bug so that the alignment buffer is freed with the correct pointer. Impact: None. v1.4.49b (December 13, 2006) ============================ Fixes: ------ 1. Problem: (CQ27459) Driver reports link down when link is up. Cause: Hotplug scripts can cause bnx2_open() to be called immediately after bnx2_init_one() calls register_netdev(). The initial link state set after register_netdev() may overwrite the actual link state set by the link handler on SMP systems. Change: Move all initial state setup code to before calling register_netdev(). Impact : None. v1.4.48b (December 08, 2006) ============================ Fixes: ------ 1. Problem: (RHBZ 212055) Panic in bnx2_poll(). Cause: Bug in determining tx ring space when the tx ring is completely full. Change: Fixed the flawed logic in bnx2_tx_avail(). Impact: None. 2. Problem: (CQ27424) Buffer overflow when writing to nvram. Cause: Bug in driver when the beginning NVRAM offset is not 4-byte aligned. Change: Fixed the bug to allocate enough buffer space. Impact: None. 3. Problem: (CQ27543) Loopback failed if MAC address is changed. Cause: Driver uses permanent MAC address for loopback which may be different from a locally administered address. Change: Fixed by alwaysing using the current MAC address in the netdevice structure. Impact: None. v1.4.47b (November 02, 2006) =========================== Fixes: ------ 1. Problem: (CQ25922) 5708S does not pass PHY loopback test on some blade servers. Cause: It takes longer (about 100msec) to link up in some backplane environments when the Serdes is set to PHY loopback mode. Change: Increase delay loop to up to 1 sec when waiting for link up after PHY loopback. Previous wait time was 100usec. Impact: None. v1.4.46b (October 30, 2006) =========================== Fixes: ------ 1. Problem: (CQ25916) Device does not receive packets when configured by the Xen bridge script and when IPMI is enabled. Cause: Firmware does not forward packets to the host when the device is in promiscuous mode in some cases. Change: Firmware change and driver change to enable the BNX2_RPM_SORT_USER0_PROM_VLAN bit when going into promiscuous mode. Impact: None. v1.4.45b (October 19, 2006) =========================== Enhancement: ------------ 1. Change: Added software parallel detection on 5708S to link at 1000Mbps or 2500Mbps automatically if the link partner is forced at 2500Mbps. Impact: None. 2. Change: Added 2500Mbps forced speed setting. Setting it requires a future version of ethtool or custom apps. Impact: None. 3. Change: Port driver to compile on 2.6.19 kernel. Impact: None. Fixes: ------ 1. Problem: Driver does not complile on 2.4 kernels. Cause: TSO symbols not defined in 2.4 kernels. Change: Added #ifdef for compatibility. Impact: None. 2. Problem: MSI doesn't work on 5706 when the host bridge is AMD8132. Cause: Compatibility issue. Change: Added code to disable MSI when 5706 is on a systems with AMD8132. Impact: 5706 cannot use MSI on such systems. v1.4.44b (August 10, 2006) ========================== Fixes: ------ 1. Problem: A rare tx race window exists in the tx path. Cause: CPU re-ordering can cause the tx queue to be stopped forever when the tx ring is full in a very rare condition. See ChangeLog for more details. Change: Fixed the race condition with memory barriers. See ChangeLog for more details. Impact: None. Enhancement: ------------ 1. Change: Increase default rx ring size to 255 to prevent packet drops under heavy load. Impact: Higher memory usage. 2. Change: Port driver to run on 2.6.18 kernel. Impact: None. v1.4.43b (June 26, 2006) ======================= Enhancement: ------------ 1. Change: (CQ25508) Use DRV_MSG_CODE_UNLOAD_LNK_DN message on 5708 B1 and older chips so that the link will turn off after ifdown. Impact: None. v1.4.42b (June 2, 2006) ======================= Fixes: ------ 1. Problem: (CQ22585) WoL cannot be enabled on 5708 B2. Cause: Hardware limitation in previous 5708 versions required driver to always disable driver WoL on 5708. Change: With the issue fixed in B2, the driver was changed to allow 5708 B2 and above to support driver WoL. Impact: None. 2. Problem: (CQ21779) Driver does not report dropped receive packets. Cause: Packets dropped by firmware are reported in a scratch pad location in memory separate from other counters. Change: Added code to report this firmware counter. Impact: None. Enhancements: ------------- 1. Change: (CQ24690) Allow driver to be compiled for non-running kernels. Impact: None. v1.4.41b (May 17, 2006) ======================= Fixes: ------ 1. Problem: Driver writes wrong data to non-buffered flash. Cause: Bug in driver causing the unchanged portion of the page to be corrupted. Change: Fixed bug. Impact: None. v1.4.40b (April 17, 2006) ========================= Enhancements: ------------- 1. Change: Combine 2 small memory allocations into 1. Impact: None. 2. Change: Separate tx consumer and producer entries into separate cache lines for better performance. Impact: None. 3. Change: Compress firmware data to reduce driver size. Impact: Driver now requires zib_inflate library which should be available on most vendor kernels. v1.4.39b (Mar. 10, 2006) ======================= Fixes: ------ 1. Problem: (CQ23181) Driver loses track of link changes in some cases. Cause: In some cases, the status block gets a link change indication that contradicts with the MII link status. This is due to transient link signals during link changes. Change: Add coalesce_now at the end of link change interrupt to flush out the transient behavior. Impact: None. 2. Problem: 5708 only supports 40-bit DMA addresses. Cause: Limitation of the built-in PCIE-to-PCIX bridge. Change: Add workaround code to make sure all DMA addresses are less than 40 bits. Impact: Some minor impact on performance on some 64-bits systems. There should be practically no performance impact on i386 and x86_64 systems. 3. Problem: "Copyright" deprecated in RPM spec file. Change: Changed to "License". Impact: Should be none on the distributions that we support. v1.4.38b (Feb. 10, 2006) ======================= Fixes: ------ 1. Problem: Setting rx ring size to 255 causes memory allocation errors. Cause: Multiple bugs that do not handle the full ring properly. Change: Fixed all bugs related to full ring handling and changed maximum ring size from 4080 to 1020 after discussion with Dave Miller. Impact: Maximum rx ring size is now smaller. 2. Problem: Compile warnings and panic on IA64. Cause: not included. Change: Added include . Impact: None. v1.4.36b (Jan. 19, 2006) ======================= Version number update. v1.3.36 (Jan. 17, 2006) ======================= Fixes: ------ 1. Problem: (CQ22827) bnx2 does not compile on 2.6.6 and earlier kernels. Cause: Introduced bug while fixing CQ22666. Change: Fix compatibility code. Impact: None. 2. Problem: (CQ22823) bnx2 reports extra .5 at the end of firmware version string. Change: Skip the last digit in the firmware version string. Impact: None. 3. Problem: (CQ22585) WoL still does not work on 5708. Cause: New WoL mechanism introduced in 1.3.34 has a flaw. Change: Removed the workaround code and disabled WoL support on 5708. During shutdown and suspend, the driver will shutdown the device and WoL will be setup by the bootcode according to the nvram's out-of-box WoL setting. Impact: 5708 will not support driver-initiated (ethtool-intiated) WoL. v1.3.35 (Jan. 17, 2006) ======================= Fixes: ------ 1. Problem: (CQ22666) bnx2 driver does not compile on RHEL3 U7. Cause: if_mii() back-ported to RHEL3 U7. Change: Adjusted the compatibility code. Impact: None. 2. Problem: (CQ22718) UMP connection is lost after enabling WoL. Cause: FORCE LINK was mistakenly set during WoL setup. Change: Do not set FORCE LINK. Impact: None. v1.3.34 (Jan. 13, 2006) ======================= Fixes: ------ 1. Problem: (CQ22585) WoL does not work on 5708. Cause: Internal bridge not in proper PME state. Change: Added new firmware message to allow bootcode to help set up WoL. Impact: None. Enhancements: ------------- 1. Change: Added compile option to include crc32 function for RH2.4 boot kernels. Impact: None. 2. Change: Updated TSO firmware to handle ECN. Impact: None. v1.3.33 (Dec. 12, 2005) ======================= Enhancements: ------------- 1. Change: Increased firmware hand-shake timeout from 50 msec to 100 msec. Also changed the delay from busy-wait udelay to non-busy-wait msleep. Impact: None. 2. Change: Added code to read nvram size from shared memory if available. Otherwise, the size will come from the flash table which only gives the smallest size for that type of flash. Impact: None. 3. Change: Added workaround to issue 2 separate IOs for interrupt acknowledgement. The workaround is only used for INTA (non-MSI) interrupts. Impact: Slightly higher overhead for INTA interrupts. v1.3.32 (Dec. 01, 2005) ======================= Enhancements: ------------- 1. Change: Added PHY loopback to the loopback selftest. Impact: None. 2. Change: (CQ21810) Added ethtool -d register dump. Impact: None. 3. Change: Reduce the number of registers tested in selftest to make the driver smaller. Impact: None. 4. Change: Increased maximum rx ring size to 4080. Impact: None. 5. Change: Changed rx checksum logic for better reliability. Impact: None. 6. Change: Added 5708 B1 workarounds. Impact: None. v1.3.31 (Nov. 18, 2005) ======================= Fixes: ------ 1. Problem: (CQTO2080) Cannot pass traffic during 2nd ifup if IPMI is enabled. Cause: A flaw in driver/firmware handshake. Change: Changed driver/firmware handshake by doing WAIT0 first before writing the first signature. Impact: None. 2. Problem: (CQTO2056) VLAN-tagged IPMI traffic fails after driver is loaded. Cause: Driver configures the NIC to keep the VLAN tag by default, causing VLAN-tagged IPMI traffic to fail. Change: Changed driver to always strip VLAN tags if IPMI is enabled. Impact: VLAN will always be stripped when IPMI is enabled. This may affect some applications that rely on raw VLAN packets. Enhancements: ------------- 1. Change: Sync'ed up with latest upstream bnx2. v1.3.29 (Oct. 6, 2005) ======================= Fixes: ------ 1. Problem: (CQTO1929) Traffic stops when MTU is greater than 1500 with TSO enabled. Cause: TSO firmware bug. Change: Updated to latest firmware. Impact: None. v1.3.28 (Sep. 29, 2005) ======================= Fixes: ------ 1. Problem: (CQTO1875) Traffic stops when running Nettack with TSO turned on. Cause: TSO firmware bug. Change: Updated to latest firmware. Impact: None. 2. Problem: (CQTO1575) ethtool -S shows non-zero rx_error_bytes. Cause: Hardware errata. Change: Ignore this counter and always report zero. Impact: None. v1.3.27 (Sep. 21, 2005) ======================= Enhancements: ------------- 1. Change: Enabled ethernet@wirespeed on copper devices. Impact: None. 2. Change: Enabled customized pre-emphasis and other serdes control settings on 5708S backplane devices. A special PHY register will be programmed according to the NVRAM value. Impact: None. 3. Change: Modified Makefile to check for the source symbolic link in the kbuild environment. Impact: None. 4. Change: Improved NAPI poll processing so that all events will be processed before interrupts are re-enabled. This will reduce the number of unnecessary interrupts. Impact: None. 5. Change: Add support for ETHTOOL_GPERMADDR (from John Linville) Impact: None. Fixes: ------ 1. Problem: Bug in irq handler causing extra register read. Cause: Bug in bnx2_interrupt() reading BNX2_PCICFG_MISC_STATUS register when it is not necessary. Change: Fixed the logic bug and added prefetch of status block in msi handler. Impact: None. v1.3.25 (Aug. 22, 2005) ======================= Fixes: ------ 1. Problem: Ethtool register and memory tests fail on 5708. Cause: Some code was not merged properly many versions ago. Change: Merged in properly code. Impact: None. Enhancements: ------------- 1. Change: Slow down flash clock speeds Impact: None. 2. Change: Code re-sync'ed with upstream driver. Impact: None. v1.3.24 (Aug. 16, 2005) ======================= Enhancements: ------------- 1. Change: Changed all spin_lock_irqsave locks to spin_lock_bh for better overall system performance. All code requiring spin_lock runs in BH or user context. Impact: None. 2. Change: Removed atomic operations in the transmit fast path. Code should run a bit faster as atomic operations can be quite slow. Impact: None. v1.3.23 (Aug. 10, 2005) ======================= Enhancements: ------------- 1. Change: Added reporting of link speed to firmware. Impact: None. 2. Change: Added shared memory base look-up. Impact: None. 3. Change: Possible sparse fixes (from Peter Hagervall) - use C99 struct initializers - make a few arrays and structs static - remove a few uses of literal 0 as NULL pointer - use convenience function instead of cast+dereference in bnx2_ioctl() - remove superfluous casts to u8 * in calls to readl/writel Impact: None. 4. Change: Updated documentation with the crc32 library requirement and other minor updates. Impact: None. v1.3.22 (July 25, 2005) ======================= Enhancements: ------------- 1. Change: Added check for default link speed setting in shared memory. This allows some blade servers that don't support autoneg to default to forced speed to speed up link-up time. Impact: None. 2. Change: Changed timer code to speed up the timer after serdes autoneg. This speeds up the time for parallel detection when the link partner does not autoneg. After autoneg or parallel detction completes, timer goes back to normal 1 HZ interval. With the new scheme, link should be detected up using parallel detection in less than 0.7 seconds. Autoneg normally completes in 120 msec exchanging base pages and 3 next pages. Impact: None. v1.3.21 (July 21, 2005) ======================= Enhancements: ------------- 1. Change: Updated firmware to properly handle TSO packets with ECN bits set. Impact: None. 2. Change: Updated to latest rxp firmware. Impact: None. 3. Change: Added check for the 2.5G capability in shared memory. Impact: None. 4. Change: Expanded nvram support for 5708. Impact: None. Fixes: ------ 1. Problem: (CQTO1511) Downing a team of bnx2 adapters causes hang. Cause: Deadlock when the second adapter's close routine calls flush_scheduled_work() because the linkwatch_event is scheduled on the work queue when the first adapter is closed. The linkwatch_event will try to get the rtnl_lock which is already held by the bnx2_close routine. Change: Fixed by not calling flush_scheduled_work(). Instead, use a flag to indicate work is pending and wait until the flag is cleared. Impact: None. 2. Problem: (CQTO1439) ethtool -S on 5708 causes oops. Cause: A pointer is not initialized if the device is 5708. Change: Added proper initialization. Impact: None. 3. Problem: Some error counters are mis-reporting. Cause: The workaround for the hw errata is not applied properly on the chips with the errata. Change: Added proper checks for the workaround. Impact: None. 4. Problem: High BER on 5708 SerDes. Cause: hardware errata. Change: Added workaround for 5708 A0 and B0. Impact: None. v1.3.19 (May 27, 2005) ======================= Enhancements: ------------- 1. Change: Merged 5708 code with the latest 1.1.19. Impact: None. Fixes: ------ 1. Problem: (CQTO1260) 5708S does not link at 1000Mbps when forced. It links at 2500Mbps when connected back-to-back with another 5708S. Cause: 2.5G bit is still turned on. Change: Fixed by turning off 2.5G when the speed is forced. Impact: None. v1.1.19 (May 26, 2005) ======================= Enhancements: ------------- 1. Change: Made significant changes to merge into the kernel. Among them, consolidate all source files into bnx2.[ch] and bnx2_fw.h, change structure style register definitions to offset based. Impact: None. Fixes: ------ 1. Problem: Excessive stack usage. Cause: Use of local variable array. Change: Fix excessive stack usage in bnx2_alloc_bad_rbuf() by replacing local variable array with kmalloc array. Also changed function to return error code, and changed some of the callers to check for the return code. Impact: None. 2. Problem: Bug in receive checksum. Cause: Software bug. Change: Fix bug in rx checksum by indicating CHECKSUM_UNNECESSARY only when the hw calculated checksum is 0xffff. Impact: None. 3. Problem: Excessive busy loop. Cause: Software bug. Change: Replaced one excessive udelay of 15msec with msleep since the calling context is always process. Impact: None. 4. Problem: Need to call flush_scheduled_work() and bnx2_netif_stop(). Cause: Bug in bnx2_close(). Change: Fix bug in bnx2_close() by calling flush_scheduled_work() since we are using a work queue in netdev watchdog. Also added bnx2_netif_stop() call in bnx2_close(). Impact: None. 5. Problem: Some symbols do not have bnx2 prefix and are not static. Change: Add bnx2_ prefix to some remaining names and mark some remaining names static. Impact: None. v1.1.17 (Apr. 7, 2005) ======================= Fixes: ------ 1. Problem: Driver does not compile on 2.6.12 kernel. Cause: pci_dev->slot_name has been deprecated. Change: replaced with pci_name. Impact: None. All kernels supported by bnx2 including 2.4.21-*EL have pci_name defined. v1.1.16 (Mar. 16, 2005) ======================= Fixes: ------ 1. Problem: (CQTO936 & 1004) Tx carrier and rx_byte_errors reported during normal operations. Cause: 5706 hardware errata on these 2 statistics counters. Change: Modified driver to skip these 2 counters. Impact: These 2 counters will always report 0 and not the true statistics. v1.3.15 (Mar. 11, 2005) ====================== Enhancements: ------------- 1. Change: Added SGMII 10/100/1000 Mbps and fiber mode 1000/2500 Mbps support. Impact: None. v1.1.15 (Mar. 09, 2005) ======================= Enhancements: ------------- 1. Change: Added code to program proper phy settings for jumbo frames on copper and serdes devices. Impact: None. 2. Change: Changed INTx ISR to handle a valid case where INTx arrives before status block update. Impact: None. 3. Change: Added a separate ISR for MSI to handle subtle differences between INTx and MSI. Impact: None. v1.1.14 (Mar. 03, 2005) ====================== Fixes: ------ 1. Problem: netdump does not work on latest RH3EL errata kernel. Cause: #define RED_HAT_LINUX_KERNEL removed from kernel include files, causing netdump poll function to be compiled wrong for RH kernels. Change: Changed Makefile to workaround the problem. Impact: None. v1.1.12 (Feb. 25, 2005) ====================== Fixes: ------ 1. Problem: (CQTO1062) Driver allows ethtool to set illegal speed/duplex on fiber cards. Cause: Missing checks for the case where autoneg is off. Change: Added proper checks. Impact: No. v1.1.11 (Feb. 18, 2005) ====================== Enhancements: ------------- 1. Change: (CQTO901) Added bnx2(4) man page. Impact: None. v1.1.10 (Feb. 16, 2005) ====================== Fixes: ------ 1. Problem: Wrong device ID in pci_dev_id table. Change: Fixed ID. Impact: None. v1.1.9 (Feb. 10, 2005) ====================== Fixes: ------ 1. Problem: (CQTO771) Driver fails to compile on RHEL3 update 4. Cause: The RH kernel has back-ported some netif functions not found in the same vanilla kernel version. Duplicate function names are defined. Change: Added intelligence in Makefile to detect such conditions and change the CFLAGS accordingly. Impact: None. 2. Problem: (CQTO1017) Driver allows 1000 half duplex autoneg off. Cause: Missing validity check. Change: Added check. Impact: None. Enhancements: ------------- 1. Change: The code to handle tx queue full condition was redone to properly handle all boundary and race conditions. Impact: Minimum tx ring size is now MAX_SKB_FRAGS+1. 2. Change: Tx timeout code was changed to work queue context. This allows netif to be shutdown gracefully before chip reset. Impact: None. 3. Change: Added memory barriers to ISR and NAPI poll for correctness. Impact: None. v1.1.8 (Feb. 01, 2005) ====================== Fixes: ------ 1. Problem: (CQTO969) No interupts on a system that does not support MSI. Cause: On this system, the MSI generated in the MSI test terminates with Master Abort which is a fatal condition for the chip. Change: A chip reset is added when MSI test fails to bring the chip back to normal operations again (in INTx mode). Impact: None. Enhancements: ------------- 1. Change: Removed register 0x84 from the ethtool register test. This is an interrupt control register that should not be touched to prevent unwanted interrupts. Impact: None. v1.1.7 (Jan. 28, 2005) ====================== Enhancements: ------------- 1. Change: Added interrupt test when MSI is enabled. If MSI test fails, driver will fallback to INTx mode. Impact: None. 2. Change: Added test for certain chipsets where MSI is known to fail, and disable MSI unconditionally when such chipsets are found. Impact: None. 3. Change: Removed support for 1000 Mbps half duplex. Impact: 1000 Mbps half duplex will no longer work. v1.1.6 (Jan. 26, 2005) ====================== Fixes: ------ 1. Problem: (CQTO940) MTU size not set properly when device is down. Cause: bnx2_change_mtu only handled the "up" case. Change: Simple fix to handle the "down" case as well. Impact: None 2. Problem: (CQTO926) 5706S does not autoneg properly after the tx cable is pulled. Cause: If the link partner is autonegotiating, autoneg will fail when the tx cable is pulled. The software will turn off autoneg seeing that the rx cable is still attached with SIGNAL_DETECT. When the tx cable is re-attached, autoneg is still off and the link partner will not establish link. Change: Added code to poll another PHY register to check if configs are received when autoneg is disabled. Impact: None Enhancements: ------------- 1. Change: Added OEM product name strings. Impact: None. v1.1.5 (Jan. 25, 2005) ====================== Fixes: ------ 1. Problem: PCI-X bus speed may not be detected correctly by the driver, causing failure because certain register settings are done based on bus speed. Cause: hardware problem. Change: Use a different register to detect PCI-X speed. Impact: None. v1.1.4 (Jan. 17, 2005) ====================== Fixes: ------ 1. Problem: 5706S does not reliably detect link up or down. Cause: hardware problem. Change: Enabled hardware workaround which is effective in A2 and newer chips only. Impact: None. v1.1.3 (Jan. 13, 2005) ====================== Fixes: ------ 1. Problem: netdump does not work. Cause: poll_controller routine does not work in NAPI mode. Change: Fixed poll_controller routine for NAPI mode. Impact: None. Enhancements: ------------- 1. Change: Added the new mmiowb macro which is used mainly in NUMA machines to guarantee PCI ordering. Impact: None. 2. Change: Added OEM product name strings. Impact: None. 3. Change: Changed ONE_TDMA workaround on systems with P64H bridge to PING_PONG_DMA on all systems using PCI. Impact: Better performance and better compatibility on all PCI systems. 4. Change: Added "disable_msi" parameter to allow disabling MSI. Impact: None. 5. Change: Reduced default tx coalescing parameters for better tx only performance such as ttcp. Impact: None. 6. Change: Changed NIC detection console message to display more information. Impact: None. 7. Change: Cleaned up some Linux .h files that are not needed. Impact: None. 8. Change: Cleaned up the nvram routines. Impact: None. v1.1.2 (Nov. 11, 2004) ====================== Fixes: ------ 1. Problem: Unable to load the driver on more than 2 or 3 devices. Cause: Default register space is too big. System fails to map the register space on the 3rd or 4th device. Change: Changed driver to map a smaller register space as the higher registers are not needed for standard operations. Impact: None. v1.1.1 (Nov. 9, 2004) ====================== Fixes: ------ 1. Problem: (CQTO656) One remaining ethtool parameter can be set out of range. Cause: Wrong upper bounds in code. Change: Fixed upper bound. Impact: None. 1. Problem: 5706 A1 cannot be run on a PCI bus. Cause: Hardware errata. Change: Added workaround to detect 5706 A1 on PCI bus and abort. Impact: Driver will not load 5706 A1 on PCI bus. v1.1.0 (Oct. 29, 2004) ====================== Fixes: ------ 1. Problem: (CQTO663) No link on fiber NIC set to autoneg when the link partner is set to forced speed. Cause: No code to handle this case. Change: Added code to check SIGNAL DETECT when autoneg fails, and turn off autoneg when appropriate. Also added code to force a link down when speed settings are changed. Impact: None. 2. Problem: (CQTO649) ifconfig up/down can cause system to hang on 2.6 kernels using mmconfig. Cause: Dummy read in the kernel's pci_mmcfg_write routine may cause system to hang during D3hot -> D0 transition. The PLL may lose lock during the internal D0 transition chip reset and cause the dummy read to hang. Change: The PLL problem will be fixed in A2. Meanwhile, the driver is changed to go into D3hot only if wol is enabled. Impact: Minor impact in increased power consumption when the driver is shutdown with wol disabled. 3. Change: Changed to use pci_get_device as pci_find_device will be deprecated soon. Impact: None. 4. Problem: (CQTO656) Some ethtool parameters can be set out of range. Cause: Wrong upper bounds in code or documentation. Change: Fixed code and documentation. Impact: None. v1.0.15 (Oct. 15, 2004) ====================== Fixes: ------ 1. Problem: (CQTO644) Data corruption when sending FTP traffic on Dell Precision 530MT. Cause: PCI bridge errata. Change: Added code to enable ONE_TDMA workaround when P64H PCI bridge is detected. Impact: Slower tx performance on systems using P64H bridge. 2. Problem: (CQTO643) Driver allows MTU to be set up to 9004. Cause: Driver used the wrong upper bound limit. Change: Fixed the upper bound. Impact: None. 3. Problem: Driver does not support forced speed on 5706S. Cause: Missing software logic. Change: Added code to support forced 1000 Full and Half duplex. Impact: None. 4. Change: Added workaround to disable PERR generation on 5706 A1 when it is in PCI 64-bit slot. Impact: None. v1.0.14 (Oct. 05, 2004) ====================== Fixes: ------ 1. Problem: Driver load/unload hangs on some machines. Cause: Transition delay required during D3hot -> D0 transition. Change: Added necessary delay. Impact: None. v1.0.12 (Oct. 04, 2004) ====================== Fixes: ------ 1. Problem: (CQTO609) New flow control parameter does not take effect until ifdown/ifup or link down/up. Cause: New flow control settings are only configured during link up. The driver did not check flow control advertisement changes and therefore no re-negotiation and no link down. Change: Fixed logic so that link will always go down whenever there is a change a flow control advertisement. Impact: None. 2. Problem: (CQTO612) VLAN packet reception not working. Cause: VLAN #define not setup properly. Change: Fixed #define for VLAN. Impact: None. 3. Problem: (CQTO628) WoL not functioning correctly. Cause: Multiple problems in the WoL code. Change: Fixed by: 1. using sort mode. 2. setting up mac address correctly. Impact: None. Enhancements: ------------- 1. Change: Added support for non-dword and non-aligned write access to eeprom, allowing ethtool -E to work. Impact: None. v1.0.11 (Sep. 24, 2004) ====================== Fixes: ------ 1. Problem: (CQTO600) Kernel panic when attempting to ftp on Fedora kernel. Cause: skbuffs are 4-byte aligned on Fedora, causing the rx headers to be misaligned. skbuffs are 16-byte aligned on other standard kernels. Change: Removed any assumptions about skbuff alignment and added code to align all rx skbuffs to 8-byte boundaries. Impact: None. Enhancements: ------------- 1. Change: Added netif_carrier_off to Driver init code so that the initial link state is off. Impact: None. v1.0.10 (Sep. 23, 2004) ====================== Fixes: ------ 1. Problem: (CQTO599) Driver fails to compile on RH 3.0ES. Cause: Bug in poll_bcm5706 where bp is referenced without being defined. Change: Fixed the minor bug. Impact: None. v1.0.9 (Sep. 23, 2004) ====================== Fixes: ------ 1. Problem: Jumbo frames not working reliably. Cause: Bug in bcm5706_reuse_rx_skb. Change: Fixed the bug so that the host address is properly copied from one BD to the other. Impact: None. Enhancements: ------------- 1. Change: Change the locking scheme for more reliable open/close/ioctl operations where the spinlock is needed. Impact: None. 2. Change: Added minimum MTU size check for MTU changes. Impact: None. v1.0.8 (Sep. 20, 2004) ====================== Fixes: ------ 1. Problem: (CQTO561) Kernel panic on RH30EL after repeated driver load/unload. Cause: Occasionally, the system is unable to map device registers, causing subsequent register access to fail. Change: Added check for the return value from ioremap, and exit gracefully if it fails. Impact: None. 2. Problem: (CQTO574) NETDEV WATCHDOG when running 5706 A1 on PCIX 133MHz slot. Cause: Some hw register setup required for 133 Mhz. Change: Added the register setup code. Impact: None. 3. Problem: (CQTO468) Link does not go down after changing from 10Mbps full (forced) to 10Mbps half (forced) and vice versa when the link partner is also using forced speed. Cause: Delay not long enough for the link to go down. Change: Not practical to increase delay as a very long delay is needed for the link to go down. Added code to record the proper link speed and duplex when speed is forced so that ethtool will return the proper speed without the link going down. Note that the link will go down if the link partner has autoneg turned on, ensuring that the link partner will see the link change. Impact: None. Enhancements: ------------- 1. Change: Added power management and WOL during device close. This will allow WOL to work after Linux shutdown. Impact: None. 2. Change: Changed driver so that ethtool will report invalid speed after ifdown. Impact: None. 3. Change: Updated tpatfw.h Impact: None. v1.0.7 (Sep. 14, 2004) ====================== Fixes: ------ 1. Problem: (CQTO523) 5706 A1 hangs after a thousand iterations of load/ifup/ifdown/unload. Cause: The driver may be servicing an interrupt within 15 msec of chip reset, causing the chip to hang. The problem was aggravated by the timer mode coalescing which created an excessive number of interrupts (hardware problem). The Driver may also occasionally see the wrong firmware signature that will cause it to abort. Change: Added synchronization to make sure all pending interrupts are serviced before resetting the chip. Also changed to collect mode coalescing. The firmware signature problem will be fixed in boot code. Impact: The use of collect mode coalescing may affect performance. 2. Problem: (CQTO558) Unable to load driver on some early 2.6 kernels. Cause: pci_dma_sync_single_for_* routines not defined on early 2.6 kernels. Change: Added compatibility defines for earlier kernels. Impact: None. v1.0.6 (Sep. 08, 2004) ====================== Fixes: ------ 1. Problem: (CQTO523) 5706 A1 hangs during repeated driver ifup/down. Cause: No delay after chip reset for A1. Change: Added 15 msec delay after chip reset for A1. Impact: None. 2. Problem: (CQTO468) Link does not go down after changing from 10Mbps full (forced) to 10Mbps half (forced) and vice versa. Cause: Not enough delay after forcing link down. Change: Added proper delay for link to go down. Impact: None. v1.0.5 (Sep. 02, 2004) ====================== Enhancements: ------------- 1. Change: Added support for ethtool -c, ethtool -C, ethtool -p, and firmware version for ethtool -i. Impact: None. Fixes: ------ 1. Problem: 5706C not advertising 1000 half duplex. Cause: 1000 full duplex overwrites 1000 half duplex. Change: Fixed the bug so that the 2 bits are or'ed together. Impact: None. 2. Problem: ethtool -A does not change the flow control settings in all cases. Cause: Flow control settings not zeroed out before setting new values. Change: Minor bug fix to zero out the value. Impact: None. v1.0.4 (Sep. 02, 2004) ====================== Fixes: ------ 1. Problem: (CQTO504) Multiple NFS transfers will hang some connections. Cause: Driver discards some receive packets when the error status is non-zero. Change: Changed the driver to only discard receive packets when the defined error bits in the error status are non-zero. Impact: None. v1.0.3 (Sep. 01, 2004) ====================== Enhancements: ------------- 1. Problem: Driver does not support ethtool -t self test and ethtool -S statistics. Change: Added ethtool self test and statistics. Impact: None. Fixes: ------ 1. Problem: (CQTO478) Kernel still panics when transmitting certain files using NFS after many iterations Cause: Tx DMA stalls on certain UDP packets, causing NFS client to stall. Change: More fixes made in firmware. Impact: None. v1.0.2 (Aug. 26, 2004) ====================== Enhancements: ------------- 1. Problem: Driver does not work on big endian machines. Change: Ported and tested on SPARC64 machine. Impact: None. Fixes: ------ 1. Problem: (CQTO478) Kernel panics when transmitting certain files using NFS. Cause: Tx DMA stalls on certain UDP packets, causing NFS client to stall. Change: Fixed in firmware. Impact: None. 2. Problem: (CQTO469) Unable to modify flow control parameters Cause: Did not call setup_phy after the parameters are changed. Change: Added call to setup_phy after parameters are changed. Impact: None. 3. Problem: (CQTO467) 5706 does not autonegotiate properly after changing settings with ethtool. Cause: This is an ethtool limitation as the proper advertising parameters are not passed to the driver properly. Change: Implemented a new scheme to work around the problem to allow users to specify full autoneg, single speed autoneg, and fixed speed. Impact: None. 4. Problem: ethtool -e does not work. Cause: Various bugs in the nvram routines. Change: Fixed and tested nvram routines on little endian and big endian machines. Impact: None. v1.0.1 (Aug. 18, 2004) ====================== Fixes: ------ 1. Problem: (CQTO459) 5706 NIC does not get link. Cause: Boot code timing out in WAIT2 state before driver is ready. Change: Moved the WAIT2 state ahead in the driver reset sequence as a temporary workaround until it is fixed in boot code. Impact: None. 2. Problem: (CQTO463) Kernel panics when loading the driver on RH30EL (2.4.21-4.EL) Cause: Older kernel used different API to allocate and register netdev. Change: Added older APIs to be used on older kernels. Impact: None. v1.0.0 (Aug. 13, 2004) ====================== Initial release ******************************************************************************************* B. Broadcom BCM57710/BCM57711/BCM57711E 10 GigE VBD for Linux Broadcom BCM57710/BCM57711/BCM57711E 10 GigE VBD For Linux Copyright (c) 2007-2009 Broadcom Corporation All rights reserved. Version 1.50.23 (Oct 21, 2009) ============================== Fixes ----- 1. Problem: (CQ44903) Soft lockups in Tx flow Cause: Tx completion was handled in high priority without any time limit and caused soft lockups Fix: Moved Tx completion handling to low latency tasklet, limit handling time to 1 jiffie Version 1.50.22 (Oct 12, 2009) ============================== Fixes ----- 1. Problem: (CQ44053) Incoming iSCSI PDU with corrupted header caused FW error Cause: Firmware failed to increase activity counter when issuing error report Fix: Fixed in FW 5.0.26: Fix in iSCSI event report flow 2. Problem: Failed to build bnx2x in chroot build environment Cause: The Makefile attempted to run with -j flag to utilize all CPU in the system and in chroot environment it resulted with "-j 0" Fix: The Makefile should not force the -j option. Removed this feature Impact: Without explicitly providing the -j flag when compiling the driver, the compilation will consume more time Version 1.50.21 (Oct 8, 2009) ============================= Fixes ----- 1. Problem: (CQ43831) Driver error reports while loading/unloading under DCC traffic Cause: A race condition between disabling the incoming traffic when unloading and DCC enabling the link Fix: Changed DCC enable/disable commands to use a different register setting that will not interfere with normal unload sequence Version 1.50.20 (Oct 7, 2009) ============================= Fixes ----- 1. Problem: iSCSI offload: Memory sanity of thread check fail during Query ramrod. Cause: During Query ramrod, when FW prepared the context for upload on the scratchpad, it exceeds the thread scratchpad boundary. Fix: Fixed in FW 5.0.25: Use the scratchpad within the thread boundary only 2. Problem: (CQ43517) SLES11u0 iSCSI: SUT hangs when unexpected FIN packet was received under traffic Cause: FW erroneously increased activity counter Fix: Fixed in FW 5.0.25: condition for activity counter increment fixed 3. Problem: (CQ43517) SLES11u0 iSCSI: SUT hangs when unexpected SYN packet was received under traffic Cause: TCP reset initiated by FW caused endless wake ups for FW Fix: Fixed in FW 5.0.25: Changed FW internal flags 4. Problem: Driver load under DCC traffic might fail Cause: Lack of lock between driver load command and DCC ack command Fix: Add mutex to protect the FW mailbox Impact: None 5. Problem: FW asserts while unloading/loading under DCC enable/disable commands Cause: DCC disable command changed the driver internal state and might overrun state changes which are initiated by the load/unload sequence. This caused the driver to be out of sync with the FW Fix: DCC disable/enable command uses different flag and not the driver state Impact: None 6. Problem: Error message is printed when failing to obtain MSI-X vectors Cause: When trying to work in multi-mode and not getting enough MSI-X vectors, the driver printed an error message indicating that it will use a single queue Fix: Since this is a valid condition, remove the error print Impact: None 7. Problem: Direct boards pause capabilities are not resolved as expected Cause: Pause capabilities are negotiated over different registers, hence require distinction between CL73 and CL37. Fix: Verify CL73 negotiation was completed as well as that link-partner supports CL73 to conclude CL73 link up Impact: None Version 1.50.19 (Oct 1, 2009) ============================= Fixes ----- 1. Problem: Direct boards always show flow-control enabled when after CL73 autoneg Cause: Incorrect register was used to access link-partner advertisement Fix: Use the right register for the link-partner advertisement Impact: None 2. Problem: (CQ43831,CQ42532) Driver unload/load test fails Cause: Races in handling DCC commands during driver unload/load Fix: Use atomic flag to sync handling of DCC commands Impact: None 3. Problem: Possible FW assert in driver unload/load test case Cause: Possible race on statistics state machine state change Fix: Added a write barrier to ensure that the state change is committed Impact: None Enhancements ------------ 1. Request: Not handling statistics in panic condition Change: As requested Impact: None Version 1.50.18 (Sep 17, 2009) ============================== Fixes ----- 1. Problem: Link led is down when link is up in CL73 Cause: HW issue Fix: SW workaround by setting led registers Impact: None Version 1.50.17 (Sep 14, 2009) ============================== Fixes ----- 1. Problem: In BCM8727, spirom was loaded first on slave port, rather than on the master port. This may lead to xaui pll issue Cause: Port swap wasn't considered when loading spirom to the BCM8727, hence first the slave port was loaded with the spirom Fix: First load the SPIROM to the master port Impact: None 2. Problem: (CQ42777) In BCM8706 rarely LASI is not cleared after link change (CQ42649) Cable pulled from 10GE Fiber port and port still seen as connected Cause: LASI may not behave well when Serdes link is not up yet Fix: Reorder link up order of BCM8706 so that first it initialize the link between the XGXS and only then initialize the BCM8706 Impact: None Enhancement ----------- 1. Request: (CQ41067) Add CL73 support for CX4 boards Change: As requested Impact: None Version 1.50.16 (Sep 3, 2009) ============================= Fixes ----- 1. Problem: Enabling fairness algorithm in the middle of run causes the function to stop transmitting Cause: The fairness credit is not initialized in this case Fix: Fix in FW 5.0.22: Change the fairness credit init value Impact: None Version 1.50.15 (Aug 25, 2009) ============================== Fixes ----- 1. Problem: (CQ42550) No host traffic when NCSI is enabled on some systems Cause: The driver did not set the required filtering flags and received only traffic which was not intended for the BMC - on some systems, this is not enough and the driver should enable its own masking Fix: Setup the driver mask to receive traffic even when NCSI is enabled Impact: None Version 1.50.14 (Aug 24, 2009) ============================== Fixes ----- 1. Problem: (CQ42998) 57711E PF on OS linked even after unassigning network in VC Cause: ethtool reports the physical link status instead of PF OS link status Fix: bnx2x_get_link() returns no link if driver is not in open state Impact: None 2. Problem: ethtool displays 57711E PF link speed as 0 in certain scenario Cause: VC assigned network and max bandwidth were not refreshed during driver load Fix: Refresh the VC assigned network and max bandwidth during driver load Impact: None 3. Problem: syslog and kernel logs always report 57711E PF speed as 10000 Mbps Cause: bnx2x_link_report() reports the actual physical link speed instead of the max bandwidth assigned to the PF Fix: Report the max bandwidth assigned to the PF Impact: None Version 1.50.13 (Jul 22, 2009) ============================== Enhancements ------------ 1. Request: Update to FW 5.0.21 Change: As requested Impact: None Version 1.50.12 (Jul 16, 2009) ============================== Fixes ----- 1. Problem: In some TPA aggregation cases, might go into TCP slow-start instead of fast-retransmit Cause: When TPA is used, pure ACK on open aggregation was aggregated Fix: (FW 5.0.20) Do not aggregate pure ACK packets in TPA Impact: None Version 1.50.11 (Jul 7, 2009) ============================= Fixes ----- 1. Problem: Setting rx-usecs to the value less than 12 causes the traffic to stop Cause: Did not disable HC coalescing when set the coalescing timeout to zero (coalescing timeouts are multiples of 12us) Fix: Disable HC coalescing, when timeout is set to the zero Impact: None 2. Problem: Packet descriptors in NIG might get out of sync if management egress traffic is pass through during self test Cause: During loppback test management egress traffic might be routed to the host and will not be cleared when exiting the diag mode Fix: Disable management egress traffic when driver is in diag mode Impact: None Version 1.50.10 (Jul 1, 2009) ============================= Fixes ----- 1. Problem: (CQ42298) Management traffic does not resume after self test Cause: Writing to the egress management FIFO during the memory test interpreted as a start of a management packet and cause the FIFO not to be empty Fix: Remove the write to the egress management FIFO from the self test Impact: None 2. Problem: Link up time takes too long with BCM8727 based NICs Cause: EDC mode is not set automatically Fix: Set EDC mode manually according to the SFP+ module type detected (Passive DAC / Active DAC / LC-LRM / LC-SR / LC-LR) Impact: None 3. Problem: (CQ41567) In BCM8727 based NICs, when SFP+ module is not plugged, there is continuous messages of Link Down Cause: The EDC tries to process the Rx data/noise because its OPRXLOS input signal is false (low), indicating an Rx signal is present. Fix: Perform 'Or' of the Active Module Absent Level with the Active Laser Loss of Light Level. This way we tell the EDC not process Rx data/noise when the module is not present. Impact: None Version 1.50.9 (Jun 25, 2009) ============================= Fixes ----- 1. Problem: Low throughput when using VLAN on kernel 2.6.26 or above Cause: New VLAN_features field in struct net_device was not initialized hence no offload capabilities were available with VLAN Fix: Initialize VLAN_features field in struct net_device Impact: None 2. Problem: No event log in case fan failure occured prior to loading the driver Cause: The event was not detected since it was already set when the driver was loaded Fix: Check for the event on load time Impact: None 3. Problem: Loopback test in self test might fail in case NCSI is enabled Cause: NCSI egress traffic is received instead of the loopback test packets Fix: Disable NCSI egress traffic during loopback test Impact: None 4. Problem: ethtool reports link up when the device is down Cause: Bug in ethtool_op_get_link() Fix: Use bnx2x_get_link() instead Impact: None 5. Problem: 57711E WoL does not work if only one function per port was active prior to shutdown Cause: WoL is configured to work in SF mode Fix: Set the chip back to SF mode (so WoL will work) even if only one function was loaded per port in MF mode Impact: None Version 1.50.8 (Jun 8, 2009) ============================ Fixes ----- 1. Problem: When running many TCP connections (>200) on both ports, some connections hangs Cause: When all TPA aggregations are occupied, FW can override the RX CQE consumer of the other port Fix: Fix in FW 5.0.18: reload the RX CQE consumer from RAM after TPA handler breaks to sleep Impact: None 2. Problem: CL73 enhancement causes link down Cause: Unknown Fix: Revert CL73 enhancement until problem resolved Impact: None Version 1.50.7 (Jun 4, 2009) ============================ Fixes ----- 1. Problem: (CQ41533) Unapproved modules behavior is not enforced according to nvram configuration Cause: In case the module was not approved, the function quit before enabling the Tx laser - so even when set to warning, there was no link. When set to power off the module, there was continues false indication of over current when the module was extracted Fix: When set to warning - enable the module. Validate that the module is present before checking for over current indication Impact: None 2. Problem: The coalescing timeout value displayed by `ethtool' is different for the one used by the FW Cause: The limitation for coalescing timeout values in driver's `ethtool -C' callback was wrong Fix: Fix the limitation for coalescing timeout in `ethtool -C' callback Impact: None Enhancements ------------ 1. Request: Reduce the number of cache misses in a fast path Change: Avoid extra cache miss by updating `trans_start' from inside start_xmit() as long as it's done by the core network layer starting from kernel 2.6.31 Impact: None 2. Request: (CQ41067) Add 5771x CL73 support Change: As requested Impact: Everest is now able to link with devices which operate in CL73 alone / CL37 alone / or both 3. Request: Make 8727 over-current behavior code more efficient Change: As requested Impact: None Version 1.50.6 (Jun 1, 2009) ============================ Fixes ----- 1. Problem: In 8727, after power-fault occurred and the driver is unloaded and then reloaded, the interrupt is not cleared Cause: In this scenario, the mod_abs mode remain in "wait for module plugged in", so interrupt was not cleared Fix: Set module_absent to wait for module absent scenario Impact: None 2. Problem: There is no need to read the warning string for un approved modules from the FW/nvram Cause: This is over design that cause unnecessary overhead - a constant string can be used Fix: Use constant warning string instead of receiving it from FW/nvram Impact: Warning message is not to be used in the modules nvram file 3. Problem: High CPU usage in bnx2x_free_tx_pkt() Cause: prefetch(skb_shinfo(skb)) implied immediate cache miss when NET_SKBUFF_DATA_USES_OFFSET is enabled Fix: Replaced prefetch(skb_shinfo(skb)) by prefetch(&skb->end). This would prefetch only the first one from two cache misses needed for reading of skb_shinfo(skb)->nr_frags, which is needed by dev_kfree_skb(skb), but it will do it in a background avoiding an immediate CPU stall Impact: None Enhancements ------------ 1. Request: Add support for BCM8727 without over current detection (BCM8727_NOC) Change: As requested Impact: None Version 1.50.5 (May 26, 2009) ============================= Fixes ----- 1. Problem: (CQ38975) Failed to setup leading connection after a lot of iterations of "down-up" test. Workaround for CQ37893 (Use INTx mode when MSI-X fails due to memory allocation failure) was broken Cause: bnx2x_set_int_mode() wasn't returning a status, thus there was no way to catch a mentioned above memory allocation failure Fix: Return a status from bnx2x_set_int_mode() Impact: None 2. Problem: (CQ41349) Linux panic when disabling RX chksum and running RX traffic Cause: TPA enabled option was not controlled per function/queue level Fix: FW fix in version 5.0.16: TPA enabled is now controlled per function/queue level Impact: None 3. Problem: (CQ41434) ethtool -S was printing junk on kernels with RSS support Cause: There was a bug in function returning number of lines in device statistics bnx2x_get_stats_count - it was returning more than there actually were) Fix: Make bnx2x_get_stats_count return the correct number Impact: None Enhancements ------------ 1. Request: Support approved module list and warn if the module is not on the list Change: This feature requires bootcode 5.0.6 or later and a valid optic modules image on the nvram. The feature is controlled by nvram option 81 Impact: None 2. Request: Allow enabling and disabling the fan failure mechanism for different PHY types Change: Determine if fan failure enforcement is required according to nvram configuration. The configuration can be auto enforcement according to the PHY type, disabled or enabled Impact: None 3. Request: Support firmware flow control when consuming SGEs Change: FW change in FW 5.0.16: Added check for Flow control when consuming SGEs from host Impact: None 4. Request: Advertise driver DCC capabilities Change: As requested Impact: None Version 1.50.4 (May 18, 2009) ============================= Fixes ----- 1. Problem: (CQ40938, CQ40937, CQ40911, CQ40992) LSO test failure Cause: LSO packets with BDs that point to buffers that are less than MSS size caused the firmware to send illegal bytes within the same LSO packet Fix: FW fix in version 5.0.14 Impact: Regression introduced in v1.50.2 2. Problem: (CQ41198) modprobe generate error on RH4.6 or 4.7 which will cause kernel panic Cause: pci_register_driver() returns count and not errno Fix: Ignore the return code from pci_register_driver() in kernels below 2.6.10 Impact: None 3. Problem: (CQ38975,CQ38925) Failed to setup leading connection after a lot of iterations of "down-up" test Cause: There were a few memory barriers missing Fix: Add missing memory barriers Impact: None Enhancements ------------ 1. Request: Reduce the time spent in skb_release_data() Change: Add prefetch(&skb->end) before calling dev_kfree_skb in order to bring in the cache line that skb_release_data() will eventually need (based on the bnx2 patch proposed by Eric Dumazet) Impact: None 2. Request: (CQ33228) Add required IOCTLs to support PHY FW upgrade Change: Add 3 magic numbers to the ethtool -E (eeprom) command to support PHY FW upgrade init, PHY FW upgrade complete, and PHY re-init after upgrade Add CL45 MDIO IOCTL support Impact: None 3. Request: Add support for BCM8481 SPI-ROM upgrade Change: As requested Impact: None Version 1.50.3 (May 14, 2009) ============================= Fixes ----- 1. Problem: (CQ40848,CQ40835) System breaks due to a firmware assert Cause: Firmware asserted when PCI read latency for RX BD ring was longer then 20usec Fix: FW fix in version 5.0.12: Replace the workaround by a flow which polls on the RX BD ring every 4usec Impact: None 2. Problem: (CQ36705) Performance on 57711/57711E is lower when flow control is enabled than when flow control is disabled Cause: L2 firmware flow control was enabled for 57711/57711E and caused performance decrease Fix: Disable L2 firmware flow control by default (add new module parameter to enable it) Impact: None 3. Problem: Workqueue might not be freed if driver fail to register Cause: Workqueue is not freed if driver fail to register Fix: Free workqueue when driver fail to register Impact: None 4. Problem: Negative number of received packages might be returned in STOP_ON_ERROR debug mode Cause: Negative errno is returned in STOP_ON_ERROR debug mode Fix: Do not return negative number of received packages Impact: None 5. Problem: Fan failure on BCM8727 was not supported on port 1 Cause: The fan failure assertion was tied only to port 0 Fix: The fan failure assertion is tied to port 1 also Impact: None 6. Problem: BCM8727 shows link up while RX is disabled Cause: When module-compliance enforcement is enabled, and non-compliant module is detected, then the driver disables the TX-Laser for the phy, yet the link keeps showing link up. Fix: When link is changing, in case the TX-laser is off, indicate that the link is down although the phy detects RX link up. Impact: None 7. Problem: (CQ41000) Could miss link up event in BCM8727 right after optic module insertion Cause: At the time that SFP+ module plugged-in was triggered, driver enabled the module while ignoring link change Fix: Check for link changes during module plugged in/out Impact: None 8. Problem: BCM8727 doesn't link in 10G after changing from 1G Cause: 10G default configuration was overwritten after setting 1G configuration. Since the phy is not reset, the configuration for 10G doesn't go back to default after link speed change Fix: When setting 10G, enforce 10G configuration, and not relay on the default configuration. Impact: None 9. Problem: (CQ40840) BCM57710 didn't receive multicast packets Cause: BCM57710 was unable to receive multicast packets. This BUG was introduced with transition to the new Rx HSI. It's unlikely that this failure is SuSE 11 specific Fix: Fix BCM57710 specific multicast configuration code Impact: None Enhancements ------------ 1. Request: Add dropless_fc module parameter to send pause frames in case where one of the host buffers (when in RSS mode) are exhausted Change: As requested Impact: None Version 1.50.2 (May 05, 2009) ============================= Fixes ----- 1. Problem: (CQ40300) XFP adapter shows link up in network properties with no cable Cause: Link status register was updated long after interrupt was triggered Fix: Check that RX PMD Loss of Sync bit is cleared and RX PMD Sync Acquired bit is set to detect link Impact: None 2. Problem: When Over-Current state is established, LASI interrupts are not cleared Cause: In this scenario, the module is powered-off so OPTXFLT/OPRXLOS indications are set. This cause a fixed RX_ALARM indication which cannot be turned off Fix: When Over-current condition is detected, set RX_ALARM to detect only module-absent events, so when a new module is plugged in, it will be detected and then RX_ALARM will be set to detect link as well Impact: None Enhancements ------------ 1. Request: Improve Tx packet rate Change: FW 5.0.10 Impact: None 2. Request: Add support for future chip revisions Change: From now on bnx2x_main.c doesn't include huge X_init_values.h files. Instead X_init_values.h were transformed to X_init_values.c, which also include internal pointers initialization function for the appropriate chip revision Impact: None 3. Request: Add additional support for BCM8727 Change: Add support module detection, over-current detection and SFP+ EEPROM access Impact: None 4. Request: Add fan-failure check for BCM8727 Change: As requested Impact: None Version 1.50.1 (April 27, 2009) =============================== Fixes ----- 1. Problem: (CQ39681) Dtape test fails on Dell TL2000 media changer device Cause: Misalignment between driver and firmware Fix: FW fix in version 5.0.8 Impact: None 2. Problem: When several protocols work together, interrupt rate is the sum of all protocol rates, instead of the maximum between them Cause: State machines in host coalescing code were independent and generated interrupts on their will Fix: FW fix in version 5.0.8: Add dependency between the states machine - when an interrupt is generated then all state machines of this status block are handled as expired, resulting with lower interrupt rate Impact: None 3. Problem: Bootcode unable to set phy configuration Cause: When driver is loaded, it sets Serdes to work in CL45 while the bootcode is using CL22 for phy access, so when driver is unloaded, bootcode unable to access the phy. Fix: When driver is loaded set Serdes mode to CL22 only when 1G-switch is set. This shall solve the issue for older bootcodes, and will be fixed in newer bootcodes Impact: None 4. Problem: BCM8481 is not able to link up in legacy speeds Cause: Setting legacy speeds requires additional phy configuration, and speed analysis Fix: Enable legacy speeds for this phy Impact: None 5. Problem: (CQ40392) Build for SLES11 do not autoload on reboot Cause: SLES11 disables modules whose source is not maintained in the kernel.org source tree Fix: Provide "supported: external" modules for SLES11 Impact: None 6. Problem: BCM8481 is not able to link with 10/100 switch Cause: XGXS was initializaed to work in none-SGMII mode Fix: Set XGXS to work in SGMII mode if link speed is slower the 1G Impact: None 7. Problem: Potential error on unload Cause: The ILT could have been freed while a timer scan is in progress Fix: Make sure that the timer scan is done before freeing the ILT Impact: None Enhancements ------------ 1. Request: Improve Tx latency Change: Removed taking tx_lock in Tx interrupt flow. This also voided a need for tx_xon_tasklet - Tx is moved to XON state directly from bnx2x_tx_int Impact: None 2. Request: Add support for new BMAC HW block for new chip types Change: When accessing the new BMAC, use the new registers. No need to initialize the PBF HW block credits since flow-control is always enable in that block. Impact: None 3. Request: Enable support for other chips in more general way. Change: Split init values and FW into 2 different files. Work against pointers in bnx2x struct instead of global arrays. Impact: None 4. Request: Add initial support for BCM8727 Change: Add support for the new dual-port SFP+ phy Impact: None 5. Request: In BigMac2, when PFC enabled, pass pause frames towards the NIG Change: Set the appropriate bit in the bigmac control register Impact: None 6. Request: Improve Rx packet rate Change: FW 5.0.8 Impact: None Version 1.50.0 (April 02, 2009) =============================== Fixes ----- 1. Problem: Rx was getting stuck on ia64 platform when system page size was configured to be 64KB on the kernels 2.6.27 and later Cause: The implementation on PAGE_ALIGN macro has been changed, which caused downcast in some places in the code and as a result improper HW configuration Fix: Add a proper casting for the argument of SGE_PAGE_ALIGN macro Impact: None 2. Problem: (CQ39552) Link LED is turned OFF while running external loopback test Cause: When using phy loopback, the link doesn't actually comes up since there's no link partner Fix: Set link led up on loopback test 3. Problem: BCM8481 is not able to link up in 10/100/1000 Mbps Cause: No 10/100/1000 link signal is connected from the BCM8481 to the Everest Fix: BCM8481 will connect LED4 signal to the Everest LASI signal. The Everest will use the NIG latching mechanism which allows to catch a link event even if the link toggles fast 4. Problem: SFP+ (BCM8726) boards do not use flow-control Cause: Flow control wasn't set for BCM8726 Fix: Set flow control according to configuration in BCM8726 Impact: None 5. Problem: Flow-control in MF mode should behave like in SF mode Cause: Old restriction which is not necessary Fix: Remove special flow-control configuration in MF mode Impact: None 6. Problem: CNIC sanity tests fails Cause: When changing to new dynamic HC code, no RAM line was allocated to default SB so there was a memory corruption Fix: FW fix in version 5.0.3: Add RAM line for default SB to dynamic HC array Impact: None 7. Problem: (CQ39503) Transmission stops for 5 second Cause: Confusion in scaling of the receive window of the remote. Sometimes it is taken "as is" as a number of bytes, without scaling Fix: FW fix in version 5.0.3: Scaling added in 3 places in the code Impact: None 8. Problem: Low performance on Tx side in UDP test with small packets Cause: Extra memory barrier in Tx flow Fix: Replace mb() to wmb() Impact: None Enhancements ------------ 1. Request: Improve FW performance Change: HC coalescing has been moved from USTORM to CSTORM. TSTORM performance has been improved. FW 5.0.3 Impact: None 2. Request: Add support for DCC Change: As requested Impact: None 3. Request: Improve performance Change: Connect Tx and Rx to different interrupt vectors Impact: None 4. Request: Add module parameter controlling number of Rx and Tx queues Change: As requested. Number of Tx queues must be not more than number of Rx queues Impact: None 5. Request: Add "per function" statistics support for NCSI management Change: As requested Impact: None Version 1.48.106 (Mar 04, 2009) =============================== Fixes ----- 1. Problem: (CQ38925) Unload/Load with netperf TCP traffic test eventually caused a SETUP ramrod failure Cause: ISR discarded a SP interrupt due to weak synchronization of atomic variable that disables interrupt handling (intr_sem) Fix: Add write memory barriers where intr_sem is updated Impact: None 2. Problem: Possible problem in pram initialization Cause: There was a bug in init code generation script Fix: Fix the pram initialization Impact: None Version 1.48.105 (Mar 02, 2009) =============================== -- Upstream Version -- Fixes ----- 1. Problem: Unload/Load test under traffic caused kernel panic in skb allocation/freeing functions Cause: Previously added patch (enhancement 6 in release 1.48.100) broke proper usage of net_device object Fix: Remove the mentioned patch Impact: None Version 1.48.104 (Mar 01, 2009) =============================== Fixes ----- 1. Problem: New phy version (P14) of the BCM8726 unable to link up Cause: The new phy version doesn't behave exactly like its previous version (P13), hence requires some adjustments Fix: 1. Microcode download requires write of another register 2. Read from "Limiting/LRM mode" register before setting Limiting mode Impact: No impact on P13 Enhancements ------------ 1. Request: Add limited (online) GRC dump using ethtool -d command Change: As Requested Impact: None Version 1.48.103 (Feb 19, 2009) =============================== Fixes ----- 1. Problem: "ext_phy_fw version" command for BCM8705 shows invalid number Cause: BCM8705 has no microcode Fix: Set BCM8705 version to 0 Impact: None 2. Problem: Potential problem in BCM8726 bit stretching work-around Cause: When module detection option is disabled, module should be transmitting regardless of invalid read from EEPROM Fix: Ignore error code when setting limiting mode Impact: None 3. Problem: (CQ38925, CQ38975) "Wait Ramrod" error while running load/unload stress w/ traffic Cause: Tx wasn't properly disabled in the 'close' flow Fix: Properly disable Tx during 'close' flow Impact: None Enhancements ------------ 1. Request: Use DMAE to zero the FW internal memory before loading the FW Change: As Requested Impact: None 2. Request: Remove "budgeting" in bnx2x_tx_int Change: As Requested Impact: None 3. Request: By default, multi_mode is disabled for old NAPI kernels (up to 2.6.24) Change: As Requested Impact: None Version 1.48.102 (Feb 12, 2009) =============================== -- Upstream Version -- Fixes ----- 1. Problem: FW stats counters might not be updated when running heavy stress test Cause: Sending FW stats ramrod query depends on stats_pending flag. This flag might not be cleared by sp_task() under heavy stress. Thus, next FW stats ramrod query will not be send Fix: Clear stats_pending flag at the end of storm_stats_update() Impact: None Version 1.48.101 (Feb 09, 2009) =============================== Fixes ----- 1. Problem: Compilation is broken on kernels >= 2.6.24 Cause: FW constant rename was not updated in latest drop Fix: Fix constant name Impact: None Version 1.48.100 (Feb 09, 2009) =============================== Fixes ----- 1. Problem: "ext_phy_fw version" command for BCM8706 sometimes shows invalid version number Cause: The version number is read during init phase. Reading the BCM8706 version during init phase is done premature Fix: During init phase of the BCM8706, wait until the firmware is loaded completely before reading the version number Impact: None 2. Problem: When setting pre-emphasis values for external phys, the XGXS is also set Cause: In external-phy boards, when pre-emphasis values were set in the nvram, both the external phy and the XGXS pre-emphasis values were set, while the values fit the external phy only Fix: Set pre-emphasis values in XGXS only for direct type boards Impact: None 3. Problem: (CQ37809) loopback test failure Cause: The link was initialized for real work mode and then re-init to loopback mode. During that time, incoming packets might be queued in the rx ring in front of the loopback packet Fix: Always initialize the link to loopback mode if load_mode is LOAD_DIAG Impact: None 4. Problem: Possible false error in the idle check section of the self test regarding the CFC_REG_ACTIVITY_COUNTER register Cause: The test was designed to check halted system (after fatal error) and thus assumed that the chip is idle Fix: Change the test to "info" debug print Impact: None 5. Problem: (CQ39439) mf_cfg function disabled error message displayed Cause: Putting the driver into disabled mode was considered an error Fix: Change the printed message from error to a notification Impact: None 6. Problem: (CQ38925, CQ37645) ifconfig ethX down up may cause a wrong MSI configuration, which will prevent MSI interrupts to arrive Cause: Chip reset function cleared "MSI reconfigure enable" bit Fix: Don't clear the "MSI reconfigure enable" bit Impact: None 7. Problem: Uninitialized HW blocks Cause: XCM and BRB1 port init part were missing Fix: Add XCM and BRB1 port init part Impact: None 8. Problem: Constant pause is sent to the network if pause is enabled and TPA is disabled Cause: Wrong thresholds were configured Fix: Set the thresholds to 0 if TPA is disabled Impact: None 9. Problem: Unloading UNDI by the driver in E1HMF mode might disable interrupts of the wrong function Cause: HC regs are splited by 4 Fix: Pritend to write as function 0 when writing to HC regs Impact: None 10. Problem: BCM8726 MDIO access is not locked as it should be Cause: MDC/MDIO access to BCM8726 is done via single EMAC, hence all MDC/MDIO access to this phy needs to be locked, like BCM8072 and BCM8073 Fix: Lock the hardware using MDIO_RESOURCE when accessing the BCM8726 phy via MDIO Impact: None Enhancements ------------ 1. Request: Set default WoL state according to nvram settings Change: As Requested Impact: None 2. Request: WRR between different COS queues at TX side Change: Added in driver and in FW 4.8.53 Impact: None 3. Request: Add ability to change BCM8726 TX PreEmphasis using nvram configuration Change: When nvram config "Override pre-emphasis configuration" (75) is set, use Tx pre-emphasis nvram configuration (47), lane0 value to set the Main Tap and lane1 to enable TX-PreEmphasis in BCM8726 Impact: None 4. Request: Add basic support for BCM8481 Change: As Requested Impact: None 5. Request: Limit Tx queue number to one for kernels 2.6.24 - 2.6.26 (non-TSS kernels with new NAPI) Change: As Requested Impact: None 6. Request: Add RSS support for old NAPI kernels (up to 2.6.24) that support MSI-X Change: As Requested Impact: multi_mode = 1 is now the default for all kernels Version 1.48.51 (Jan 26, 2009) ============================== Fixes ----- 1. Problem: Load balancing didn't work Cause: Driver assumed that there was Tx work as long as driver packets producer and consumer were not equal Fix: Changed driver's Tx work amount evaluation logic Impact: None Version 1.48.50 (Jan 22, 2009) ============================== Fixes ----- 1. Problem: (CQ38862) modprobe fails to load driver on SuSE 11 Cause: SuSE 11 does not allow 3rd party modules to be loaded without toggling a flag in /etc/modprobe.d/unsupported-modules Fix: Toggle the bit during make install Impact: None 2. Problem: Accessing nvram while the driver is down caused PCI error Cause: The driver attempted to access the nvram while the device was in D3 since it was disabled Fix: Prevent nvram access when the device is down Impact: None 3. Problem: FW assert while running multi_mode=2 with tx MULTI_QUEUE enabled Cause: start_xmit() selected different tx queue than the tx_lock was taken Fix: Implement dev->select_queue() callback so start_xmit() selects the correct tx queue Impact: None 4. Problem: Compilation problem with kernel 2.6.29 Cause: netif_rx_schedule and netif_rx_complete do not require the device parameter anymore Fix: Do not pass the device paramter for those functions for kernels above 2.6.29 Impact: None 5. Problem: Invalid presentation of BCM8726 fw version Cause: The register that holds the fw version is used for other functionality as well, and it is run over after firmware is loaded Fix: Save the firmware version of all external phys in shared memory, after firmware is loaded Impact: None 6. Problem: BCM8726 may start tx laser before module detection occurs Cause: Module detection used to be done during link update, which probably would be after tx was enabled Fix: From now on use interrupt driven event using GPIO3, to detect module plugged in/out, and execute module detection then Impact: None 7. Problem: 1G switch configuration (using the 5th lane) doesn't work Cause: Support for Serdes (5th lane) was not maintained since no production design used it and when switching to CL45 it stopped working Fix: In order for control the Serdes over Clause45, (and not Clause22), it requires first one time register setting in Clause22 Impact: None 8. Problem: Softlock during remove_one() Cause: NAPI context was not released before unloading Fix: Release NAPI context before unloading Impact: None 9. Problem: False self-test failures due to MC_ASSERT Cause: iSCSI FW sometimes report run-time warnings which are acceptable and do not cause any harm Fix: Do not check for MC_ASSERT. A real FW error will cause the interrupt test to fail Impact: None 10. Problem: Possible miss of FW response on unload Cause: Missing memory barrier while waiting for FW response Fix: Add read memory barrier Impact: None 11. Problem: (CQ37809) loopback test failure Cause: A link change interrupt might be queued and activated after the loopback was set Fix: Lock all PHY activities while running loopback test Impact: None 12. Problem: (CQ39057) Everest, 57710 Error message: bnx2x_start_xmit: BUG Tx ring full when queue awake Cause: In kernels 2.6.24 - 2.6.26 (non-TSS kernels with new NAPI) there can be a possibility that NAPI instance (fp instance) other than the one moved Tx to XOFF state will wake the Tx So, this is highly possible that start_xmit is called while the ring is still full In any other kernel this state is an obvious bug Fix: Remove an error message in the code for the mentioned kernels Impact: None Enhancements ------------ 1. Request: Use FW 4.8.50 Change: As Requested Impact: None 2. Request: BCM8726 should be able to link up at 1G Change: Add support for 1G for BCM8726 Impact: When requested speed is 1G force, it will try to link in 1G force. When the speed requested is autoneg, and the speed mask capabilities contain 1G, it will try to autoneg in 1G as well as in 10G 3. Request: (CQ39048) Add ability to change 8706 XAUI RX Equalizer using nvram configuration Change: When nvram config "Override pre-emphasis configuration" (75) is set, use the 3LSB bits of RX_equalizer nvram configuration (48) to set the BCM8706 XAUI RX Equalizer registers for each lane Impact: None 4. Request: Verify external phy image before ROM upgrade Change: New headers will be added to the images of external phys to be upgraded. Currently this list includes BCM8073, BCM8726 and SFX7101. The headers will be checked against fixed magic number and specific phy type Impact: From now on, external phy images MUST include image header Version 1.48.11 (Jan 13, 2009) ============================== Fixes ----- 1. Problem: Possible memory overrun on platforms with page size more than 8K Cause: "linearization" should take into an account system page size and run or not run accordingly Fix: Fixed the compilation condition Impact: None 2. Problem: Compilation problem with kernel 2.6.28 Cause: struct net_device_ops was postponed to next release Fix: Remove struct net_device_ops from compilation Impact: None Enhancements ------------ 1. Request: Limit multi_mode to support only regular mode Change: As requested Impact: None Version 1.48.10 (Jan 07, 2009) ============================== Fixes ----- 1. Problem: (CQ39129) driver assert while logging out during iSCSI max sessions test Cause: QM initialization was wrong Fix: Fix QM initialization Impact: None Version 1.48.9 (Jan 05, 2009) ============================= Fixes ----- 1. Problem: (CQ38909) on IA-64 with TPA enabled, kernel memory was sometimes smeared (depending on the MTU size) Cause: The max TPA fragments assumed 4KB pages and that system had 16KB pages Fix: Fix the SGE (TPA fragment) size to be system page size Impact: Improved performance on systems with page size > 4KB like PPC and IA-64 Version 1.48.8 (Dec 31, 2008) ============================= Fixes ----- 1. Problem: (CQ38992) on IA-64 Driver crash when transmitting on all 8 functions in chariot IPv6 with tx checksum disabled scenario Cause: FW read the buffer descriptor (BD) producer and after that the BD itself before the BD content was updated. This is possible on IA-64 due to weak ordered memory module Fix: Add write barrier after updating the BD data and before updating the BD producer Impact: None Version 1.48.7 (Dec 30, 2008) ============================= Fixes ----- 1. Problem: (CQ38985) Port swap is not working for BCM8726 Cause: BCM8726 is driven by MDC/MDIO through single EMAC. In case of port swap, the EMAC access was left with EMAC0 Fix: In case port-swap is enabled in the NIG, access MDC/MDIO via EMAC1 Impact: None 2. Problem: BCM8726 was not reset when driver was unloaded Cause: This phy hardware reset affects both ports and thus wasn't used Fix: When link needs to be reset, reboot the micro-controller of the BCM8726 Impact: None 3. Problem: BCM8726 was not reset during init Cause: This phy is connected using static port-swap, hence the reset should have been triggered through the opposite port from the spec Fix: Set gpio1 during common init from port1 instead of port0 Impact: None 4. Problem: (CQ38991) In E1HMF mode some interfaces occasionally misreport link speed Cause: Races between interfaces during init cause an interrupt event to be ignored Fix: Flag the device as "ready for interrupts" prior to enabling the interrupts Impact: None 5. Problem: (CQ39057) Everest, 57710 Error message : bnx2x_start_xmit: BUG Tx ring full when queue awake. Cause: Tx BD producer update may not be "seen" by bnx2x_tx_int function running on different CPU, thereby bnx2x_tx_int may erroneously conclude that it may wake Tx. Fix: Add smp_mb() after update of Tx producer before putting Tx to XOFF state. Impact: None 6. Problem: In E1HMF mode with multi queue, functions 2..7 cannot receive data Cause: Incorrect initialization of indirection table Fix: Initialize correctly the indirection table Impact: None 7. Problem: The driver debug crash dump does not handle cyclic rings correctly Cause: The debug prints were simply from start to end and did not print anything in case start < end (cyclic rings) Fix: Enhance the debug prints with cyclic logic Impact: None 8. Problem: Packets dropped due to lack of host buffers were counted twice - in good and bad statistics Cause: Firmware does not maintain separate counters for unicast/broadcast/multicast drops, therefore driver cannot subtract these values from the good packet/byte counters Fix: Fixed in FW 4.8.9 Impact: None 9. Problem: iSCSI FW: High non-paged host memory consumption Cause: Unnecessary optimization of chipset<->memory bandwidth in expense of memory consumption Fix: Fixed in FW 4.8.9 Impact: None Version 1.48.6 (Dec 18, 2008) ============================= Fixes ----- 1. Problem: System hangs when running ifconfig on an 8 CPUs system Cause: A loop variable was used again in an inner loop. That caused an endless loop Fix: Use another variable for the inner loop Impact: None 2. Problem: Some stats names are not displayed but their values were displayed in other stats Cause: Incorrect condition caused to skip stats names but not their values Fix: Correct the condition Impact: None 3. Problem: iSCSI FW: During connection establishment on-chip (option2), in case we receive SYN/ACK with incorrect dst_mac the chip gets stuck Cause: This scenario led to accessing invalid PRAM address which made the chip halt Fix: Fixed in FW 4.8.8 Impact: None 4. Problem: NAPI poll mode was stopped (netif_rx_complete called) and HW interrupts reenabled even if the whole device quota had been consumed. Cause: There was a bug in NAPI poll-mode canceling logic. Fix: Fix the logic in NAPI poll method. Impact: None Version 1.48.5 (Dec 11, 2008) ============================= Fixes ----- 1. Problem: TCP packets with VLAN weren't handled properly, when received in non-accelerated VLAN traffic mode (when VLAN tag is not stripped by the FW) Cause: Driver didn't support receiving VLAN packets in non-accelerated mode. for TPA packets, there was a wrong IP header offset calculation and, as a result, writing IP checksum to the wrong offset. Non-TPA packets weren't handled right as well: driver always used vlan_hwaccel_receive_skb to pass an skb with VLAN to the stack, while it should use netif_receive_skb in non-accelerated case Fix: Fixed IP header offset calculation for TPA packets. Fixed VLAN skb handling logic. Impact: None 2. Problem: (CQ38698, CQ37931) No link when using direct attached copper cable with BRCM8726 PHY Cause: Passive copper cables should always operate in LRM mode rather than in Limiting mode Fix: In case of passive copper cables, link up in LRM mode Impact: None 3. Problem: (CQ38815) iSCSI failure during hotplug Cause: Not everything is setup before calling register_netdev(). pci_set_drvdata() and bnx2x_init_bp() were called after register_netdev(). This potentially can also affect L2 because bnx2x_open() can potentially be called before those 2 calls have successfully completed Fix: Call register_netdev only at the end of successful setup Impact: None 4. Problem: (CQ38862) modprobe fails to load driver on SUSE11 Cause: SuSE does not allow 3rd party modules to be loaded without toggling a flag in /etc/modprobe.d/unsupported-modules Fix: Toggle the bit through the packaging script Impact: None 5. Problem: iSCSI FW: In non-aligned PDUs with data-digest enabled, the data-digest is calculated to a wrong value Cause: The CRC machine was not reset correctly in non-aligned PDUs Fix: Fixed in FW 4.8.6 Impact: None 6. Problem: iSCSI FW: Connection wasn't initialized with the right parameters for the TX in E1HMF mode Cause: Initialization was done using SF mode Fix: Fixed in FW 4.8.6 Impact: None 7. Problem: (CQ38886, CQ38888) iSCSI FW: Double-vlan was not supported for iSCSI. The packet was transmitted with bogus IP length and no inner-vlan Cause: The vlan flag and the header builder command size weren't set correctly Fix: Fixed in FW 4.8.6 Impact: None 8. Problem: Byte counters statistics did not count the 4 FCS bytes Cause: The FCS bytes were not counted Fix: Fixed in FW 4.8.7 Impact: None Enhancements ------------ 1. Request: SFP+ optical module (MSA) vendor verification should be optional when using BCM8726 PHY Change: Verify the optical module vendor according to nvram configuration option #81: "Optic Module Vendor Enforcement" Impact: The new nvram bit is visible using ediag version 4.8.3 or later 2. Request: In multi queue mode, separate FW stats per queue Change: As requested Impact: None 3. Request: Change some stats names: pause_frames_received is now rx_pause_frames pause_frames_sent is now tx_pause_frames timer_max_events is now rx_constant_pause_events Change: As requested Impact: None 4. Request: Align with RMON MIB (rfc 1757): net_device_stats.rx_bytes is total_bytes_received net_device_stats.multicast is total_multicast_packets_received Change: As requested Impact: None 5. Request: Use static singlethread_workqueue shared for all bnx2x interfaces Change: As requested Impact: None Version 1.48.4 (Nov 26, 2008) ============================= Fixes ----- 1. Problem: CNIC driver is failing on higher functions of 57711E Cause: The status block ID for the CNIC was not assigned correctly for higher functions Fix: Assign the status block ID according to the function ID Impact: None Version 1.48.3 (Nov 20, 2008) ============================= Fixes ----- 1. Problem: Intermittent MDC/MDIO failures on 8726 PHY Cause: MDIO register access is sometimes broken since PHY is not hard reset Fix: Pull GPIO1 low for 1 ms after power-on. Note that the hard reset is a shared resource on the PHY Impact: None 2. Problem: gso_type indication was not set for TPA packets Cause: gso_type wasn not set Fix: Set gso_type accordingly Impact: None 3. Problem: Possible false parity indication Cause: When using 5 tuple hash (not used today) the searcher might falsely indicate parity error Fix: Mask bit 6 of the searcher parity errors Impact: None 4. Problem: (CQ37809) Intermittent failures in ethtool diagnostic (CQ36771) Calltrace and interface locks up when up/down interface Cause: If sp_task() is queued in the shared work queue after the linkwatch, it will be starved and will not update the link status until ethtool diagnostic ends and frees rtnl that linkwatch is waiting for Fix: Create private workqueue Impact: None 5. Problem: (CQ38139) iSCSI FW: Performance < 40% of Peak Advertised Cause: Inefficient implementation of ring management in firmware Fix: Fixed in FW 4.8.4 Impact: None 6. Problem: (CQ38424) SAFC iperf drop result is 5 times higher than previous build Cause: Mis-configuration of the SAFC timeout Fix: The new SAFC timeout will be 200usec Impact: None Version 1.48.2 (Nov 10, 2008) ============================= Fixes ----- 1. Problem: SAFC packets were not generated periodically by NIG Cause: A HW architecture bug Fix: Fixed in FW 4.8.3 Impact: None Enhancements ------------ 1. Request: Support iSCSI MAC and VLAN per function in 57711E Change: Added in FW 4.8.3 Impact: None Version 1.48.1 (Nov 06, 2008) ============================= Fixes ----- 1. Problem: Possible race between init_one() and open() with calling to netif_carrier_off() Cause: After register_netdev(), open() can be called at any time and the interrupt handler can be called after that. If you get a link change interrupt, the netif_carrier_* call from IRQ or NAPI poll can race with netif_carrier_off() call in probe. Fix: Move netif_carrier_off() to open() Impact: None 2. Problem: Possible access to illegal addresses inside the chip during self test Cause: Loop size was given in bytes and not in number of entries Fix: Fix the loop size Impact: None Enhancements ------------ 1. Request: Fewer dropped packets when flow control is enabled on 57711/57711E Change: As requested Impact: None Version 1.48.0 (Nov 03, 2008) ============================= Fixes ----- 1. Problem: Failures on RH5 when using enabling and disabling the functions one by one on 57711E Cause: Unloaded driver tries to access the PHY to get its FW version since RH calls "ethtool -i" periodically Fix: Clear the PMF indication when the driver is unloaded Impact: The PHY FW is inaccessible when the driver is unloaded 2. Problem: Searcher block initialization for 57711E is wrong Cause: The searcher registers are split (same address for all functions) Fix: Use the port offset and not the function offset Impact: None 3. Problem: Kernel panic when failing to load the driver Cause: netif_carrier_off was called before making sure that the driver can be loaded Fix: Call netif_carrier_off as last action in the probe Impact: None Enhancements ------------ 1. Request: Add iSCSI for 57711E Change: FW 4.8.2 supports iSCSI for 57711E Impact: None 2. Request: Add transmit multi queue support Change: As requested Impact: This fetaure is available on 2.6.27 kernel when using MSI-X Version 1.46.12 (Oct 29, 2008) ============================== Fixes ----- 1. Problem: (CQ37832) System crash when running TCP connections on 57711 Cause: Access to unsupported address in FW PRAM due to increased FW size Fix: Fixed in FW 4.6.21: Moved all operational FW code to legal PRAM addresses Impact: None 2. Problem: After some cases of driver failure, driver cannot be re-loaded Cause: The driver took the HW out of reset without making sure that it was indeed in reset state Fix: Reset the HW before taking it out of reset Impact: None 3. Problem: (CQ37893) Driver failure when installed on RHEL4.5 from PXE Server Cause: MSI-X fails due to memory allocation failure and though MSI registration succeeded interrupts are not received in MSI mode Fix: Use INTx mode when MSI-X fails due to memory allocation failure Impact: None Enhancements ------------ 1. Request: Add debug module parameter to force MRRS value Change: As requested Impact: None Version 1.46.11 (Oct 23, 2008) ============================== Fixes ----- 1. Problem: (CQ37915) On 57710, if self-test is run on port 1, port 0 stops transmitting/receiving traffic unless in promiscuous mode Cause: Primary MAC address of port 0 is lost after the self-test on port 1 Fix: Changed self-test to fix the problem Impact: None 2. Problem: (CQ37087) iSCSI FW: Data digest error event found in event viewer Cause: Wrong UPB command in non-aligned data that is adjacent to iSCSI header in the TCP segment from the target Fix: Fixed in FW 4.6.17 Impact: None 3. Problem: (CQ38061) iSCSI FW: Invalid iSCSI PDU seen while running OEM diagnostic to Equallogic target Cause: Misinterpretation of the 3720 RFC regarding data-in sequences definition Fix: Fixed in FW 4.6.17 Impact: None 4. Problem: (CQ37861) iSCSI FW: BSOD occurred while running iLab's TOE automated tests and iSCSI traffic Cause: Failed to identify task cleanup during processing of a data-in PDU that belong to the same task Fix: Fixed in FW 4.6.17 Impact: None 5. Problem: (CQ38088) iSCSI FW: FW assert occurred while passing CNIC traffic Cause: Race in iSCSI FW between writing task context entry using the data path and writing R2TQE using the control path Fix: Fixed in FW 4.6.18: Eliminate race, by using R2TQE write through the data path Impact: None 6. Problem: When enabling a lot of debug prints on a system with many (more than 6) interfaces, timeout can occur on driver load Cause: Since printk is busy, it can take longer for operations to complete Fix: Increase the timeout value Impact: None 7. Problem: After load failure, the driver cannot be re-loaded Cause: The FW was not informed that the driver was unloaded Fix: On load failure, send "unload" notification to the FW Impact: None Enhancements ------------ 1. Request: (CQ38040) Do not use crc32c_le symbol Change: Copied the function into the driver Impact: None Version 1.46.10 (Oct 20, 2008) ============================== Fixes ----- 1. Problem: System panic under stress traffic Cause: The alignment to the machine cache size was not calculated correctly for the Rx buffer and so a buffer overrun occurred Fix: Allocate the right amount of memory considering the cache alignment Impact: None Version 1.46.9 (Oct 16, 2008) ============================= Fixes ----- 1. Problem: (CQ37772) iSCSI FW: Bad data digest is transmitted Cause: Missing initialization in FW when going out of slow start Fix: Fixed in FW 4.6.16: Add rxmit parameters init to normal TX flow Impact: None 2. Problem: (CQ37809) Intermittent Failures in Ethtool Diagnostic Cause: When setting PHY loopback, it required some time before configuration is actually take place. Fix: Add 200ms after setting the PHY loopback Impact: None 3. Problem: Unable to receive packets on the iSCSI MAC address Cause: Promiscuous in rx mode was ran over by resetting the rx mode Fix: Reset the rx mode before setting promiscuous mode Impact: None Enhancements ------------ 1. Request: Add the licensing structure to the bnx2x_hsi.h Change: As requested Impact: None 2. Request: Set FW to machine cache alignment (up to 256B) for Rx packets L2 data Change: As requested Impact: None Version 1.46.8 (Oct 07, 2008) ============================= Fixes ----- 1. Problem: A potential firmware bug when L2 packet is duplicated to more than one L2 client when TPA is enabled Cause: Buffer could have been released before it was read by all L2 clients Fix: Fixed in FW 4.6.15 Impact: None 2. Problem: (CQ37471) iSCSI FW: (iLab test 5.12) TCP CLOSE timeout issue Cause: Chip halted since handler apparently stuck in the queue Fix: Fixed in FW 4.6.15 Impact: None 3. Problem: (CQ37244) iSCSI FW: (iLab test 5.10) Chip hangs when receiving SYN+RST+ACK after SYN sent Cause: SYN retransmission with invalid sequence number caused by not rewinding the sequence number after retransmission Fix: Fixed in FW 4.6.15 Impact: None 4. Problem: iSCSI FW: Chip halts after few unanswered connections attempts Cause: After retransmits were done, the chip didn't return the credits it should have Fix: Fixed in FW 4.6.15 Impact: None 5. Problem: (CQ37668) iSCSI FW: Chip hangs when trying to connect to iSCSI target with no licenses present Cause: When licensing of new connection fails, there's a credit leak which caused an invalid handler to wake up Fix: Fixed in FW 4.6.15 Impact: None 6. Problem: (CQ37610) A potential problem if call to register_cnic during MTU change Cause: CNIC and the bnx2x drivers can be trying to setup the chip at the same time Fix: Check for intr_sem in register_cnic to prevent this problem Impact: None Enhancements ------------ 1. Request: Allow better response time to SAFC packets Change: Configure max-byte-credit as required for SAFC mode Impact: None 2. Request: Add priority mapping table to map SAFC priority to HW queue Change: As Requested Impact: None Version 1.46.7 (Sep 28, 2008) ============================= Fixes ----- 1. Problem: (CQ37161) Running ifconfig down up on one interface can cause other interface to fail Cause: Overriding internal memory that belongs to the other interface Fix: Writing only memory of the correct interface Impact: None 2. Problem: (CQ37288) iSCSI FW: iSCSI offload with Everest is extremely slow Cause: PSH flag was not set in last PDU TCP packet Fix: Fixed in FW 4.6.13 Impact: None 3. Problem: Possible overriding the internal memory and possible failure to work with MSI-X when RSS and CNIC enabled Cause: Allocate 16 queues for RSS + 1 queue for CNIC Fix: Allocate only 15 queues for RSS Impact: None 4. Problem: Lower performance on Big-Endian machines Cause: Failure to read correctly the PCI_EXP_DEVCTL on Big-Endian systems. Read PCI_EXP_DEVCTL to u32 variable instaed of u16 variable Fix: Read PCI_EXP_DEVCTL to u16 variable Impact: None Version 1.46.6 (Sep 25, 2008) ============================= Fixes ----- 1. Problem: (CQ37398) Issuing ifdown command on one port causes the other port not to respond either Cause: Clearing all entries in the CAM Fix: Clear only the appropriate entries in the CAM Impact: None 2. Problem: (CQ37407, CQ37508, CQ37509) Compilation fails on RH 4.5, 4.6, 4.7 Cause: A compiler bug Fix: Workaround in the code Impact: None 3. Problem: (CQ36673) iSCSI FW: Hardware attention on MaxLuns Cause: Activity count leak in Ustorm microprocessor Fix: Fixed in FW 4.6.12 Impact: None 4. Problem: (CQ37224) iSCSI FW: (iLab test 5.10) Hardware attention (Microcode assert) Cause: iSCSI FW: SYN+RST drop after SYN sent caused AC leak in TStorm microprocessor in option2 Fix: Fixed in FW 4.6.12 Impact: None 5. Problem: iSCSI FW: (iLab test 6.1) Hardware attention (Microcode assert) Cause: Missing update of R2T buffer offset Fix: Fixed in FW 4.6.12 Impact: None 6. Problem: Possible false warning (not a failure) in the idle check section of the self test regarding the BRB1_PRTY_STS register Cause: The condition was not masked properly Fix: Fixed the condition check for that register Impact: None Enhancements ------------ 1. Request: Add support for BCM8726 (Dual port phy SFP+ ) including MSA module recognition and verification Change: As Requested Impact: None Version 1.46.5 (Sep 17, 2008) ============================= Fixes ----- 1. Problem: (CQ36478) MSI fails on Big-Endian systems Cause: The IGU was configured to swap the data over the PCI Fix: Config IGU not to swap the data and add swap in the driver where it is necessary Impact: None 2. Problem: (CQ37309) Can not compile on some old kernels Cause: Call to pci_disable_msi() was not under appropriate #ifdef Fix: Add the appropriate #ifdef Impact: None 3. Problem: Self test sometimes indicates on a failure Cause: A test result was declared as an error instead of a warning Fix: Declare the test result as a warning Impact: None Version 1.46.4 (Sep 16, 2008) ============================= Enhancements ------------ 1. Request: CNIC enabled in default compilation Change: As Requested Impact: None Version 1.46.3 (Sep 11, 2008) ============================= Fixes ----- 1. Problem: (CQ34165) High number of pause frames Cause: The thresholds in the receive buffer needed some tuning Fix: Tuned the thresholds in the receive buffer Impact: None 2. Problem: (CQ36559, CQ36989) System crash when working on PPC with 64KB page Cause: The allocated buffer was bigger than the PCI mapped buffer, and in the 64KB configuration the buffer is aligned only to 128 bytes and so the packet can overstep the PCI mapped area and cause a fatal error Fix: Map the same size as the allocated buffer size Impact: None 3. Problem: (CQ36479) EEH recovery causes system crash Cause: When EEH detects an i/o error it resets the device thus it cannot be accessed. In this case the driver needs to unload its interface only with OS, kernel and network stack but not with the device. Fix: Add a special unload function for EEH recovery that does not access the device Impact: None 4. Problem: Option2 RST did not complete Cause: Missing context initialization in FW Fix: Fixed in FW 4.6.10 Impact: None 5. Problem: (CQ37090) Placement of RQ data to wrong address Cause: ASM problem Fix: Fixed in FW 4.6.10 Impact: None 6. Problem: (CQ36912) BSOD when destroying erroneous connections Cause: Activity count leak Fix: Fixed in FW 4.6.10 Impact: None 7. Problem: (CQ 36987) Unable to perform media changer/tape functions Cause: Bad padding calculation in long PDUs Fix: Fixed in FW 4.6.10 Impact: None Enhancements ------------ 1. Request: Incorporate latest firmware 4.6.10 Change: As Requested Impact: None 2. Request: Add stats counter for NIG timer max events Change: As Requested Impact: None 3. Request: Enable timer scan for CNIC Change: As Requested Impact: None 4. Request: Add support for using MSI interrupt mode Change: As Requested Impact: None 5. Request: (CQ36758) Firmware now enforces iSCSI licensing and fails the offload if no iSCSI initiator license exists Change: Added in FW 4.6.10 Impact: None Version 1.46.2 (Aug 25, 2008) ============================= Fixes ----- 1. Problem: (CQ36510, CQ36583) Link LED does not turn off when 1G link is lost when external PHY is present Cause: The current code manually turned off the 10G LED but did not handle other speeds which are controlled by HW. Since the HW detect link with the external PHY, the link LED stayed on Fix: Turn off the LED for all speeds manually when link goes down Impact: None 2. Problem: Packets with bad TCP/UDP checksum error are dropped Cause: Actively dropping packets with bad TCP/UDP checksum in the driver Fix: Do not drop packets with bad TCP/UDP checksum - let the stack decide what to do with them Impact: None 3. Problem: Some packets are dropped without showing on any statistics counter Cause: The driver assumed that packets which were identified as bad are counted by the FW, but the FW does not count those when configured to pass them Fix: Add counters in the driver Impact: None 4. Problem: (CQ36153) Flow control doesn't work against non KR switches Cause: Missing support for clause-37 auto negotiation Fix: Add support for clause-37 auto negotiation Impact: 0.5 seconds delay during autoneg 5. Problem: Link dangling during init Cause: no delay after initial link change interrupt Fix: Add 30ms before allowing link update indications Impact: Additional 30ms during init phase 6. Problem: Unable to load driver after iSCSI boot under incoming traffic Causes: The reset function after iSCSI boot did not handle closing incoming traffic Fix: Close the port to prevent Rx traffic and clear all buffers Impact: None 7. Problem: (CQ36408) Failed driver disk installation with SuSE10 and RH4 Cause: The CRC module is not part of the Kernel in those distributions Fix: Special driver disk compilation mode to include the CRC routine in the driver though it is an external module in normal installation with those distributions Impact: The driver in the driver disk is less efficient due to the CRC algorithmic implementation and not static tables as in the CRC module which is used when loading the driver normally under SuSE10 and RH4 8. Problem: (CQ34921) Possible memory leak Cause: rx_page_ring was not freed Change: free rx_page_ring Impact: None 9. Problem: (CQ36242) brb_truncate statistics increments to very high numbers Cause: brb_truncate_discard is a 4 bytes variable but 8 bytes were copied to ethtool Change: use brb_truncate from NIG and extend it to 8 bytes Impact: None 10. Problem: Tx Pause were not send on 1G link Cause: Missing initialization to the EMAC TX_MODE Change: Set FLOW_EN bit in the TX_MODE in addition to the EXT_PAUSE_EN Impact: None 11. Problem: (CQ36361) Changing speed to 1G on KR switch side results in no link in OS Cause: When Serdes is configured to 1G, it should remove setting MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_SEL bit in MDIO_REG_BANK_SERDES_DIGITAL Change: Unset MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_SEL bit for every link change Impact: None 12. Problem: Possible loss of attentions Cause: Attention mask register was manipulated without a proper lock Change: Protect attention mask register using hw lock, use read modify write on this register Impact: None 13. Problem: HW lock was sometimes not taken Cause: HW lock was not taken per function Change: use lock control per function Impact: None 14. Problem: (CQ36089) RX counter on all functions are incorrect Cause: tstorm_client.statistics_counter_id was 0 for all functions Change: set tstorm_client.statistics_counter_id to the cl_id of the function Impact: None 15. Problem: (CQ36090) down/up of the interface during traffic on the other interface caused traffic to stop Cause: Aggregation context must be initialized only at COMMON init block Change: Change initialization code and init-tool output Impact: None 16. Problem: (CQ35672) Doorbell was arriving after halt and before start ramrod Cause: XON/XOFF flow control should be disabled in NIC close flow Change: Fixed XON/XOFF code Impact: None 17. Problem: (CQ34555) MSI-x PCI spec aberration Cause: PBA table starts from the middle of a page Change: Use GRC access instead of BAR access Impact: None 18. Problem: Lost link indication in BCM8073. Cause: During link establishment LASI latched signal wasn't reset and stopped link change indication Change: Fixed flow to clean latched LASI signal Impact: None 19. Problem: Declaring bootcode timeout too soon Cause: The bootcode can take a while to set a link when a link is needed (for example, WoL is enabled). The driver should allow adaptive scheme to wait for the bootcode Change: Waiting up to 2 seconds in 10ms intervals Impact: In some cases, the driver unload process will take up to 2 seconds 20. Problem: Wrong WoL capability report Cause: The WoL capability was read from the nvram which was not always updated Change: Determine the WoL capability from the PCI configuration space Impact: None 21. Problem: (CQ36644, CQ366697, CQ36928, CQ36983) On some cases with low traffic, the computer was irresponsive up to the point of soft-lockup and even hard lockup. Ping-pong latency tests always hit this problem and so get very low result Cause: If the FW was at the end of the Rx page, the driver will already be at the beginning of the next page. In this case the condition of having the driver and the FW on the same pointer was never true and so the driver kept polling until timeout or another packet came in. On driver unload (including intermediate driver unload like in MTU change or self-test) the lockup was fatal Fix: Change the check for "now work" to handle end of page as well Impact: None 22. Problem: (CQ36697 CQ36771) Interface locks up when up/down interface Cause: In nic_unload(), call to netif_poll_disable() cause to set __LINK_STATE_RX_SCHED flag that is checked in dev_close() in a loop forever. This flag is cleared by netif_rx_complete() called by bnx2x_poll() which is not called if !netif_running() Fix: Reorder nic_unload() - first close interrupts, then only if netif_running() call netif_poll_disable() Impact: None 23. Problem: (CQ36795) driver fails to load after iSCSI boot Cause: Unloading UNDI by the driver is protected by a HW lock. With a KR (8073) interface, unloading the UNDI takes more than 1 sec. Taking the lock by another driver times out after 1 sec then the driver tries also to unload UNDI. Fix: Clear UNDI signature and release the lock. Only the driver who saw UNDI signature will continue to unload UNDI. Impact: None 24. Problem: Allocate skbs for unused aggregation queues in 57710 Cause: Allocate skbs for 64 aggregation queues but 57710 has only 32 Fix: Allocate skbs for max_agg_queues according to chip id Impact: None 25. Problem: Wrong cleanup on exit from nic_load() in case of a failure Cause: Upon some failure nic_load() exits without disabling and freeing the interrupts Fix: Fix to disable and free the interrupts in that case Impact: None 26. Problem: Potential link problem when loading two ports with 8073 PHY Cause: Initializing the 8073 PHY takes more than 1 seconds and the HW lock might expire since it is only trying for 1 second Fix: Increase the HW lock timeout to 5 seconds Impact: None 27. Problem: XAUI link on port0 goes down and then up, when the link on port1 is changed Cause: When master port (port1) is down, it will also cause the blade side down. In turn, PLL will change speed from 10G to 1G. It will cause XAUI clock to both ports down and then up again Fix: Set bit in the BCM8073 that enables the fix Impact: None 28. Problem: (CQ36772) KR with 8073 PHY sometimes does not establish link Cause: A missing delay between initializing the PHY SPI ROM and inserting the PHY back to low power mode Fix: Add 15ms delay after loading the SPI PHY ROM which is before entering low power mode Impact: None 29. Problem: Sometimes when unloading the driver a message will appear: "sp_running (j 1)" Cause: Wrong condition, the message should appear only if the counter (j) is greater than 1000. This is a false alarm Fix: Fix the print condition Impact: None 30. Problem: When upgrading 8073 SPI ROM PHY to version 0103 the link will not come up Cause: Register 0x8370 is no longer required in the new version and writing to it cause the link not to come up Fix: Remove the write to address 0x8370 Impact: None 31. Problem: On some KR boards when loading driver on port0, and port1 is not loaded, sometimes the XAUI link is not coming up Cause: The 8073 PHY has two ports that share a single clock. This clock is routed to a port deemed to be the master (port 1), and then a PLL at the master sets the clock frequency and routes the buffered clock to both the master XAUI interface as well as the slave (port 0) XAUI interface. If port 0 is loaded while the 8073 PHY SPI ROM is not loaded, the PLL for port 0 is not guaranteed to lock Fix: First driver to be loaded reset and download SPI ROM on both ports of the 8073 PHY during one-time initialization Impact: The 8073 PHY is only reset when both ports are brought down 32. Problem: On some KR boards when unloading driver on port1 port 0 might loose link Cause: The 8073 PHY has two ports that share a single clock. This clock is routed to a port deemed to be the master (port 1), and then a PLL at the master sets the clock frequency and routes the buffered clock to both the master XAUI interface as well as the slave (port 0) XAUI interface. If port 1 is unloaded while port 0 is in use, the port 0 PLL might loose lock Fix: Do not reset the PHY if either driver is still up Impact: The 8073 PHY is only reset when both ports are brought down 33. Problem: When loading driver after it was loaded before, packets are getting into the chip before the MAC addresses are configured (but not into the host) Cause: The HW filters are not cleared when the driver is unloaded so previous driver configuration is still present Fix: Clear HW filters so no packet will come in when driver is unloaded Impact: None 34. Problem: Driver does not pass the last version of checkpatch.pl Cause: Some updates to the script found some coding standard violations in the code Fix: Fixed all reported errors and spelling mistakes Impact: None 35. Problem: (CQ36492) rx_csum_offload_errors increments for any none TCP/UDP packet Cause: Parsing CQE flags incorrectly Fix: Parse CQE flags according to CQE status bits Impact: None 36. Problem: Packets with IP checksum error are dropped Cause: Dropping packets with IP checksum error Fix: Pass packets with IP checksum error to the stack. Drop only packets with L2 errors Impact: None 37. Problem: (CQ46480) The nomcp module parameter is causing kernel panic Cause: This debug parameter was not needed and not maintained Fix: Remove this debug parameter. The driver can detect if the FW is missing and act accordingly Impact: None 38. Problem: Per function statistics are not cleared on driver load unload Cause: The FW statistics area was not cleared on driver load Fix: Clear FW statistics area when loading the driver Impact: None 39. Problem: (CQ36204, CQ36423) Self-test memory failures reported intermediately Cause: Did not apply the right mask on the HW report caused some false positives Fix: Use mask to check only the memory errors report Impact: None 40. Problem: (CQ36497) Self-test idle_check part is failing Cause: Did not apply the right mask on the HW report caused some false positives Fix: Use mask to check only the memory errors report Impact: None 41. Problem: (CQ36514) Failed to load the driver after iSCSI boot on SuSE10 SP2 Cause: The built-in driver from the SuSE10 SP2 (1.42.3) was loaded after the iSCSI-boot Fix: Added update.post file to SuSE10 SP2 dd.iso Impact: None 42. Problem: (CQ36382) Low 1G UDP performance with one connection with flow control disabled Cause: The credits in the transmitter HW caused too much gap between UDP packets in case the flow control was disabled Fix: Use the same HW credit as if the flow-control is enabled when the line speed is 2.5G or less Impact: None 43. Problem: (CQ35662) NVRAM pre-emphasis support does not take effect Cause: Current nvm values didn't actually affect the phy Fix: To keep backward compatibility, only in case the "Override pre-emphasis configuration" nvm option is enables, it sets the the tx preemphasis and rx equalizer values for the 4 lanes according to the "XGXS backplane Tx pre-emphasis matrix coef." and "XGXS backplane Rx equalizer matrix coef." respectively Impact: None 44. Problem: Prevent possible glitch due to speed change without link down in the middle Cause: Currently the NIG goes into drain mode only after link down. If the only the speed was changed from 1G to 100Mb, for example, without link-down indication then the FIFO isn't cleaned and glitch due to clk change may occur Fix: On speed change set the NIG into drain mode Impact: Several packets may be dropped, but it's ok, since we assume that anyhow several packets were dropped due to the link down 45. Problem: Fix EMAC initialization setting Fix: Currently it is configured inside the enable emac before configuring the EMAC mode. Changed to be after that and should be disabled (with the drain mode setting) at the entrance of the link_update function. In addition, in link down, after putting the nig into drain mode this register should also be disabled. After configuring the mode and before opening the nig_emac#_en, reset the EMAC_REG_EMAC_RX_MODE and EMAC_REG_EMAC_TX_MODE Impact: None Enhancements ------------ 1. Request: Error messages might be displayed in unload Change: Check work only on the tx fast path and call bnx2x_tx_int() to handle it. Rx work is handled during halt ramrod Impact: None 2. Request: Indicate that there is no WoL support for functions higher than 1 (only 0 and 1 should support WoL) Change: As Requested Impact: None 3. Request: Pause in 57711E mode always advertise both Rx and Tx regardless of frame size Change: As Requested Impact: None 4. Request: Skb's marked as CHECKSUM_UNNECESSARY (TPA'ed) were passed to the net stack even if user disabled checksum offloading. Change: Disable TPA if Rx checksum offloading is disabled. Impact: There is no way to enabling TPA in kernels older than 2.6.26 except unloading and loading the driver 5. Request: Do not display internal FW version and enhance readability of the bootcode version Change: As requested Impact: None 6. Request: Optimize link setup and support 2.5G Change: Link will be configured on the external PHY before setting up the internal PHY. When needed, only the external PHY will be configured to autoneg. The internal PHY will be set to the obtained speed Impact: None 7. Request: Skb's marked as CHECKSUM_UNNECESSARY (TPA'ed) were passed to the net stack even if user disabled checksum offloading. Change: Disable TPA if Rx checksum offloading is disabled. Impact: None 8. Request: Incorporated latest firmware 4.6.7 - Add support for priority-based ETH TX queues and enable SAFC pausing per queue Change: As requested Impact: None Version 1.46.1 (June 25, 2008) ============================== Enhancements ------------ 1. Request: Use FW version 4.6.2 Change: As Requested Impact: None Version 1.45.6 (June 23, 2008) ============================== Fixes ----- 1. Problem: (CQ35672, CQ35818) Changing MTU under traffic causes driver hang Cause: A rare case of LSO packet alignment, relatively to MSS, caused a HW debug checking for end of packet to fail Change: In computing the end of packet flag, the calculation of the total packet length was modified Impact: None 2. Problem: Possible memory corruption on kernels with 64K page size Cause: Inconsistency in using page macros Change: Use only BCM page macros Impact: None Enhancements ------------ 1. Request: Add support for TPA (LRO) setting via ethtool Change: As Requested Impact: Kernels after 2.6.26 use this interface to turn off TPA when forwarding enabled due to the limitation of no forwarding (bridging) and TPA together Version 1.45.5 (June 17, 2008) ============================== Fixes ----- 1. Problem: (CQ35691) Undefined symbol __udivdi3 when compiled on 32-bit platforms. Cause: There was 64-bit division Change: Reordered the arithmetic expression in order to eliminate the 64-bit division Impact: None. 2. Problem: (CQ35644) Tx mulicast counter does not increment Cause: start_xmit sets the unicast flag for all packet types Change: Remove the broadcast and mulicast counters Impact: None 3. Problem: (CQ35836) Ethtool reports wrong speed when set via CLP Cause: get_settings returns always the max BW set via CLP without considering the actual link speed Change: Return the min between the max BW set via CLP and the actual link speed Impact: None 4. Problem: (CQ35859) Ethtool -S reports many jumbo tx packets with MTU set to 1500 Cause: There is a different in tx histogram statistics between EMAC and BigMAC Change: Use NIG stats counters instead Impact: None 5. Problem: (CQ35114) Self test failure on some systems Cause: pcie_rst_b test can be set and should not be categorized as ERROR Change: Change pcie_rst_b test priority from ERROR to WARNING Impact: None Enhancements ------------ 1. Request: Remove non-coherent stats in 57711E Change: As Requested Impact: None 2. Request: Remove xSEM_REG_INT_TABLE from memory test Change: As Requested Impact: None Version 1.45.4 (June 10, 2008) ============================== Fixes ----- 1. Problem: (CQ34905) load/unload causes link detect failure Cause: Handling of link events during load wasn't protected Change: Add synchronization in handling of link events during driver load Impact: None 2. Problem: (CQ35114) ethtool -t displays idle_check errors Cause: Some idle_check tests were not adopted to support 57711 Change: Adopt the idle_check Impact: None 3. Problem: (CQ35188) ethtool -t displays mc_assert Cause: The mc_assert was checked at incorrect address Change: Fix mc_assert to use different offsets per MC processor Impact: None 4. Problem: (CQ35611) CLP min throttling disables throttled functions Cause: Credit delta must be less than two times the threshold Change: credit delta must never be less than two times threshold Impact: None 5. Problem: (CQ35184, CQ35364, CQ35575) Compilation problems on SuSE9/10 Cause: Some changes for the upstream kernel were not backwards compatible Change: Added backwards compatibility code Impact: None 6. Problem: (CQ35571) When running dozens of connections on both ports, receiver freezes Cause: A race between the aggregation timer and the swapping of aggregated connections Change: The timers are saved to RAM at each possible swap of handlers in the FW, to avoid the race Impact: None Enhancements ------------ 1. Request: Activate SNR over 8073A1, version 102 Change: As Requested Impact: None 2. Request: Support CLP speed configuration to establish link up to the requested speed (allow 1G when 10G is requested) Change: As Requested Impact: None 3. Request: Do not set XAUI low power on 8073A0 Change: As Requested Impact: None 4. Request: Set flow-control for 8073 Change: As Requested Impact: None Version 1.45.2 (May 29, 2008) ============================= Fixes ----- 1. Problem: Style changes for open source submission Cause: Making sure we pass SPARS and checkpatch.pl Change: Whitespace changes Impact: None Enhancements ------------ 1. Request: Add PCI-E EEH handlers Change: As Requested Impact: None Version 1.45.1 (May 26, 2008) ============================= Fixes ----- 1. Problem: (CQ34964) ethtool -a/A is broken Cause: The autoneg define changed to value of zero and broke the code Change: Use comparison instead of bit-wise logical and Impact: None 2. Problem: (CQ35123) Support for 32bit Kernels is broken Cause: The TPA code had a 64 bit address that broke the 32bits support Change: Fixed the upper 32bits of the address to zero in 32bit Kernel Impact: None 3. Problem: (CQ35123) Support for Big-endian is broken Cause: The TPA and SGE code was not big-endian compliant Change: The necessary le_to_cpu were added Impact: None 4. Problem: Failed to work on emulation with MCP Cause: The time interval between the pulses towards the MCP was the same for ASIC and emulation Change: Increased the time interval between MCP pulses for emulation/FPGA Impact: None 5. Problem: (CQ34313) Compilation error on SuSE Cause: Broken in last drops Change: Fix the errors Impact: None 6. Problem: (CQ35124) Kernel panic when unloading NIC with shared INTA Cause: The interrupts were masked when unloading, but the handler was still present. In case of shared INTA line, the handler was called after freeing the resources due to other device interrupt Change: Free the interrupt handler when masking all interrupts on unload. Clear old interrupt before registering the IRQ on load. Impact: None 7. Problem: Failed to re-load the driver (after unload) on the upstream kernel Cause: The fast path structures which are used by NAPI where released on unload and re-allocated on load Change: Use static allocation for the fast-path structures Impact: None Enhancements ------------ 1. Request: (CQ34895) Change Linux Driver Disk Images from Floppy to ISO Format Change: As Requested Impact: None 2. Request: (CQ34931, CQ34976) Replace RH4.5 binaries with RH4.6 Change: As Requested Impact: None 3. Request: Link down indication should be at error level and not information Change: As Requested Impact: None 4. Request: BCM57711E Support MIN/MAX bandwidth control Change: As Requested Impact: None 5. Request: Support BCM8073A1 external PHY Change: As Requested Impact: None 6. Request: Support Transparent Packet Aggregation (TPA) for 57711E Change: As Requested Impact: None 7. Request: Support WoL Change: As Requested. This feature requires bootcode 4.4.7 or later Impact: None 8. Request: Not allowing any ethtool link change (speed and flow control) in 57711E Change: As Requested Impact: None 9. Request: Reporting the function max speed as the current speed (and not the port speed) for 57711E Change: As Requested Impact: None 10. Request: Only the port master driver can run the link test (part of the self-test) Change: As Requested Impact: None Version 1.46.0 (May 01, 2008) ============================= **** This version should have been named 1.45.0 (and not 1.46.0) **** Fixes ----- 1. Problem: Possible bug on DMAE reads (write from the chip to the host) Cause: HW limitation that was not obeyed Change: DMAE reads (write from the chip to the host) is limited to 128 DWORDS Impact: None Enhancements ------------ 1. Request: Support approximate match for multicast MACs Change: As Requested Impact: New module dependency for bnx2x driver Run 'modprobe crc32c' before 'insmode bnx2x.ko' 2. Request: Support statistics on 57711 Change: As Requested Impact: None Version 1.44.12 (April 21, 2008) ================================ Fixes ----- 1. Problem: (CQ34845) Autoneg flow-control is broken Cause: Broken in last drops - wrong check of the autoneg result Change: Fixed the autoneg result check Impact: None 2. Problem: (CQ34313) Compilation error on SuSE10 Cause: Broken in last drops Change: Fix the errors Impact: None Version 1.44.11 (April 16, 2008) ================================ Fixes ----- 1. Problem: PHY loopback was not performed as part of the self-test Cause: The PHY loopback did not wait for the link to be established Change: Wait for loopback to establish link before starting the test Impact: None 2. Problem: (CQ34313) Compilation error on SuSE9 SP3 Cause: Broken in last drops Change: Fix the errors Impact: None Version 1.44.10 (April 15, 2008) ================================ Fixes ----- 1. Problem: Occasional failures in the self-test Cause: Few registers should not have been included in the registers test. The PHY loopback test fails on some systems Change: Removed some of the registers that should not have been included in the first place from the registers test. Removed the PHY loopback test - only the MAC loopback test is executed Impact: None Version 1.44.9 (April 14, 2008) =============================== Fixes ----- 1. Problem: Kernel panic after stressing bi-directional data over night Cause: A bug in the none-TSO fragmented Tx packets Change: Fix the Aggregation rule of none-TSO packets Impact: None 2. Problem: Possible bug when unloading and reloading the driver: we are not guarantee to allocate all IRQs Cause: The allocation is not guaranteed Change: Force every nic_unload to release the IRQs Impact: None 3. Problem: Possible bug on low memory systems Cause: Number of BDs must be at least equal to number of CQEs Change: Force the rule on init Impact: None 4. Problem: Failures on rmmod Cause: Sleep in timer context Change: No sleep on timer context - simply wait for next tick Impact: None 5. Problem: DMAE timeout problem on 57711 Cause: DMAE needs to be configured differently Change: Reduce the MPS of the DMAE client Impact: None 6. Problem: No link on some functions on 57711 Cause: A link report call was missing after link update Change: Added link report after link update Impact: None Enhancements ------------ 1. Request: Adding internal PHY and MAC loopback tests to ethtool -t (no external PHY and no cable PHY loopback) Change: As Requested Impact: None 2. Request: Update idle_check in self test Change: As Requested Impact: None Version 1.44.8 (April 09, 2008) =============================== **** Starting from this version, there are 2 C files **** Fixes ----- 1. Problem: (CQ34604) Kernel panic after stressing Tx Data over night Cause: The driver did not handle fragmented Tx packets Change: Aggregating packets which are too fragmented for the FW Impact: None 2. Problem: (CQ34586) Warning message after configuring eth port Cause: Did not synchronized the DMAE of the statistics with load/unload operations Change: Changed the statistics mechanism to a state machine which is aware of the device state and DMAE state Impact: None 3. Problem: (CQ34313) Compilation error on SuSE9 SP3 x86-64 Cause: Compatibility issue Change: Fixed Impact: None 4. Problem: (CQ34067) Debug prints are displayed when using the use_multi compilation flag Cause: The debug level of the prints was high Change: Reduced the prints debug level so they will not be displayed by default Impact: None Enhancements ------------ 1. Request: (CQ33897) Support BCM8073 PHY Change: As Requested Impact: This is still an initial HW revision of the BCM8073 PHY so changes might be needed as the PHY HW or FW evolve 2. Request: (CQ33845) Turn off link LED when link is not active Change: As Requested Impact: None 3. Request: Displaying PHY FW (when applicable) at ethtool -i Change: As Requested Impact: None 4. Request: Upgrading the SFG10 FW from ethtool -E Change: As Requested Impact: None 5. Request: Adding Registers test to ethtool -t Change: As Requested Impact: None 6. Request: Adding Memory test to ethtool -t Change: As Requested Impact: None Version 1.44.7 (March 31, 2008) =============================== Fixes ----- 1. Problem: (CQ34445) Interface got stuck when stress with UDP and TCP simultaneously Cause: Wrong CQE size initialization Change: Fixed CQE ring initialization Impact: None 2. Problem: No traffic on higher functions on 57711 Cause: Need to send the client ID in messages to FW Change: Add client ID to the required messages Impact: None 3. Problem: Wrong link indication on 57711 Cause: The link was not updated correctly on 57711 Change: Update the link indication mechanism in 57711 Impact: None 4. Problem: Update coalescing is not working Cause: Wrong parameter was used Change: Changed to the required parameter Impact: None Version 1.44.6 (March 26, 2008) =============================== Fixes ----- 1. Problem: (CQ34445) Interface got stuck when stress with UDP and TCP simultaneously Cause: The BD producer that was passed to the FW was wrapped according to the size of the BD ring and not 16 bits range as expected Change: Wrap the BD producer according to 16 bits range Impact: None Enhancements ------------ 1. Request: full TPA support Change: TPA is now fully supported with the expected performance Impact: None Version 1.44.5 (March 24, 2008) =============================== Enhancements ------------ 1. Request: Initial support for TPA Change: TPA is now supported, but the throughput is still lower than in the DEMO_TPA version - a new version with enhanced throughput is being constructed Impact: None 2. Request: (CQ34011) Add module parameter to disable TPA Change: As requested. For now, TPA is always disabled on 57711 Impact: None 3. Request: CNIC Support Change: As requested. By default, CNIC support is not part of the bnx2x - BCM_CNIC should be defined to enable it. Impact: None Version 1.44.4 (March 20, 2008) =============================== Fixes ----- 1. Problem: DEMO_TPA was broken on 0.44.3 Cause: Compilation problem due to MACRO rename Change: Rename the MACRO for DEMO_TPA as well Impact: None 2. Problem: (CQ43424) Cannot link SFP module at 1G with Dell PowerConnect 6224 Cause: The Dell switch supports only autoneg and not forced 1G Change: Changed the 1G implementation to autoneg with only 1G advertisement Impact: When choosing 1G speed, the speed is achieved via autoneg and not forced Enhancements ------------ 1. Request: Support Emulation, FPGA and ASIC in a single module file Change: Changed the init values and the init routine to support all the compilation of 57710/57711 ASIC/CHIP/EMUL Impact: The size of the binary and the source code is bigger mainly due to having two ASM images 2. Request: Add link update support for 57711 Change: Added Impact: None 3. Request: Add HW statistics for 57711 Change: Added Impact: Only HW (errors) statistics will be displayed since the feature is not yet supported by FW 4. Request: Add nvram test Change: Added Impact: None 5. Request: Add link test Change: Added Impact: None 6. Request: Add interrupt test Change: Added Impact: None Version 0.44.3 (March 12, 2008) =============================== *** TPA is not functional on this release *** Fixes ----- 1. Problem: (CQ #34103) DKMS driver diskette update.tar.gz do not have smp directory Cause: DKMS driver diskette was created only for the default SuSE kernels Change: Add all supported SUSE kernels into the DKMS driver diskette Note: The size of the DKMS driver diskette for the SUSE distributions is 14400 kb. This size is appropriate for USB or CD devices Impact: None Enhancements ------------ 1. Request: Add support for 57711 Change: Added preliminary support Impact: None 2. Request: Remove module param 57711E Change: Move to bp and initialized from analyzing CLP information Impact: None 3. Request: Add fw_dump() to panic_dump() Change: Call fw_dump() before idle_chk() Impact: None 4. Request: Separate bp information to fast-path/common/port/ function Change: Divide bp structure into common/port/function structures Divide get_hwinfo() into common/port/ function. Initialize outer VLAN and MAC from CLP information in 57711E mode Note: CLP FUNC_DISABLED is not handled correctly Impact: None 5. Request: Set link_status according to link_up status Change: link_status was set according to phy_link_up status Impact: None 6. Request: Add is_pmf flag Change: is_pmf flag is initialized from MCP load_code and by general attention from MCP Impact: None 7. Request: Fix attentions in 57711 Change: Init MISC_REG_AEU_MASK_ATTN according to 57711E status Handle attention bits in IGU per function Impact: None 8. Request: Clear HW blocks attentions Change: Clear HW blocks attentions and call panic() Impact: None 9. Request: Call fw_dump() on MCP assert Change: Call fw_dump() instaed of mc_assert() on MCP assert Impact: None 10. Request: Do not send STAT_QUERY ramrod if previous stat ramrod didn't return Change: Do not send STAT_QUERY ramrod if previous stat ramrod didn't return Call panic() if stats didn't updated for 3 times Impact: None 11. Request: Separate init_board() into init_dev() and init_bp() Change: Divide init_board() into init_dev() and init_bp() Impact: None 12. Request: Fix directory name for SuSE Change: Add sles9 and sles10 to the names Impact: None Version 1.42.3 (February 28, 2008) ================================== Fixes ----- 1. Problem: Changing the link speed to "autoneg on" the A1022G will cause driver failure Cause: This board is using TP for the 10G interface, but the command was interpreted as a request to move to the 1G interface which is inactive on this board Change: Do not support switching interfaces since no production board has this feature Impact: A user will not be able to switch between the two valid interfaces of the T1001 test board without changing the nvram configuration Version 1.42.2 (February 20, 2008) ================================== Fixes ----- 1. Problem: TSO is not working against some none Linux clients Cause: TCP flags were not transmitted correctly on TSO packets Change: Corrected bit extraction in tcp_flag_word() Impact: None Version 0.42.1 (February 14, 2008) ================================== Fixes ----- 1. Problem: (CQ #33344) Remove warnings from ethtool -t Cause: The warnings were just debug prints Change: Print is depended on msglevel. Set msglevel in bnx2x_panic_dump() before calling bnx2x_idle_chk() Impact: None 2. Problem: (CQ #33638) Remove warnings when failing to enable MSI-X Cause: The warnings was just a debug print Change: Print is depended on msglevel. Change the printed message from error/failure to a notification Impact: None 3. Problem: (CQ #33547) Flow control does not work on A1022G board Cause: The flow control was not configured/read at the PHY Change: Implemented the flow control code at the PHY Impact: flow control is now working via autoneg. Please force it if the link partner does not support flow control autoneg Enhancements ------------ 1. Request: (CQ #33425) RPM installation fails on some machines Change: Fix installation - copy bnx2x.ko from extra to kernel/drivers/net Impact: None Version 0.42.0 (February 04, 2008) ================================== *** This version requires bootcode 4.2.0 or later *** Fixes ----- 1. Problem: (CQ #33344) Remove warnings from ethtool -t Cause: The warnings were just debug prints Change: Changed the debug level so by default nothing will be printed Impact: None 2. Problem: (CQ #33638) Remove warnings when failing to enable MSI-X Cause: The warnings was just a debug print Change: Changed the debug level so by default nothing will be printed Impact: None 3. Problem: (CQ #33533) Failed to install A1022G on 32bits machines Cause: The board is requesting 128MB for BAR2 and the memory allocation fails Change: Allocate only the required amount of memory and not the entire BAR Impact: None Enhancements ------------ 1. Request: (CQ33571) new 'shared memory' layout for T4.0E/T4.2 that will be compatible with T4.4 new features Change: As requested Impact: Requires bootcode 4.2.0 or later 2. Request: (CQ #33214) Add placeholder to be compatible with the BMPI Change: Added placeholders - the full implementation is scheduled for T4.4 Impact: None 3. Request: Update the KR code Change: Added placeholders - the full implementation is scheduled for T4.4 Impact: None Version 0.40.19 (January 14, 2008) ================================== Fixes ----- 1. Problem: (CQ #31090) Rx pause remains ON after autoneg is retuned back to ON even if MTU > 4500. Cause: Autoneg flow control flag was not considered for advertisement and resolve of the pause mode. Change: Fix the advertisement and the resolve of the pause mode to consider user requests and system constraints. Impact: None 2. Problem: Autoneg flow control is ON for XFP cards. Cause: Autoneg flow control from NVRAM is considered without check if autoneg is supported. Change: Autoneg flow control from NVRAM is considered only if autoneg is supported. Impact: None 3. Problem: ethtool shows 'Port: FIBRE' for the 10GbaseT interface. Cause: Resolve the port type according to XGXS flag. Change: get settings resolves the XGXS port type in use according to external phy config. Impact: None 4. Problem: (CQ #33092, #33215) Unload/load sequence under UDP traffic (receiver) hanged slow path Cause: Wrong flow in resetting HW blocks Change: HW blocks reset flow has been changed Impact: None 5. Problem: (CQ #33305) Changing MTU to 9000 was jamming TCP traffic Cause: LSO wasn't properly enabled on some Kernels Change: Fixed LSO enabling code for all kernels Impact: None Enhancements ------------ 1. Feature: Wait for completion for ramrods sent during nic unload was only by polling and not by an interrupt. Change: stop multi and stop leading are using poll if netif is not running and interrupt otherwise. Impact: None 2. Request: Add workaround for bug in PXP that causes PXP attention on stress scenarios due to under run situation between PXP and USDM Change: The workaround was added Impact: None Version 0.40.18 (January 03, 2008) ================================== Fixes ----- 1. Problem: (CQ #33148) After "make install" command 'modprobe bnx2x' displays "Module bnx2x not found". Cause: Linux Makefile runs depmod automatically only if System.map exists. Change: Run depmod after modules_install. Impact: None 2. Problem: (CQ #33054) Link is not detected after configuring BCM57710 port with Suse 10Sp1. Cause: HW fails to use INTA after using MSI-X. Change: Set MSI_MSIX_INT_EN bit in HC_CONFIG REG to use INTA after MSI-X. Impact: None 3. Problem: (CQ #33190) ifconfig command showed errors received. But ethtool -S ethx did not show any errors. Cause: Some error counters did not have a bin to be printed by ethtool -S command. Change: Add appropriate bins for the missed counters. Impact: None 4. Problem: BSOD on T1002 boards. Cause: A new code was added that manipulate GPIO 1 for external phy reset. On T1002 board this GPIO control the PERST_L_BYPASS. Change: Do not manipulate GPIO 1 on T1002 boards Impact: None Enhancements ------------ 1. Feature: Add support for IPv6 checksum and IPv6 TSO. Change: The support was added Impact: None 2. Feature: Add fan failure detection and external PHY power down for the A1022G Change: When a fan failure is detected (indicated by SPIO5) on the A1022G, the driver will shutdown the PHY (reset and low power mode, using GPIO1+2) and issue a warning message Impact: When fan failure occurs the link will go down until server reset Version 0.40.17 (December 17, 2007) =================================== Fixes ----- 1. Problem: (CQ #33023) Pause RX is on when driver is loaded with MTU > 4500. Cause: Pause mode was computed from the requested flow control parameter in NVRAM without considering the MTU size. Change: Resolve the pause mode only before advertising the flow control. Impact: None 2. Problem: Pause autoneg can be set on for XFP cards. Cause: Pause autoneg mode was always accepted from user. Change: Pause autoneg is not supported if speed autoneg is not supported (e.g. XFP cards). Impact: None 3. Problem: (CQ #33044) make install fail. Cause: No make install target in Makefile. Change: Add make install target to Makefile. Impact: None 4. Problem: (CQ #33057) No README.TXT in driver release folder. Cause: No README.TXT in driver project. Change: Add README.TXT in driver release folder. Impact: None 5. Problem: (CQ #32541) No README.TXT in driver tarball. Cause: No README.TXT in driver project. Change: Add README.TXT to driver tarball and change the directory name. Impact: None Enhancements ------------ 1. Request: Add parity and assert regs for idle check. Change: The check was added Impact: None 2. Request: Add workaround for threshold mechanism for usdm-dp Change: The workaround was added Impact: None 3. Request: Add workaround for full Tetris buffer bug. Change: The workaround was added Impact: None 4. Request: Add support for the SFG10 PHY Change: The support was added Impact: None 5. Request: Add support for the BCM8072 PHY Change: The support was added. The code is still not 100% functional Impact: None 6. Request: Change the MDC/MDIO CL45 scheme Change: The functions are more generic: - Supports different MDC/MDIO controller - Reduce the clock to 2.5MHz - Less PIO writes (writing all the required information at one attempt) Impact: All external PHY access are using a slower (standard) MDC/MDIO clock 7. Request: Hard reset external PHYs Change: The external PHYs are now reset via GPIO. Before working with an external PHY, a reset pulse of 1ms is generated, and when the driver is down, the external PHY is kept in reset Impact: Link partner should always see link down when the link is down Version 0.40.16 (November 29, 2007) ================================== Fixes ----- 1. Problem: (CQ #32296) VLAN broken on older Kernels. Cause: vlan_kill_vid() removed in newer versions is needed by older kernels to allow loading. Change: Re added function. Impact: None 2. Problem: (CQ #29543) System panicked if receiving UDP data while load and unload Cause: sp_task work was not synchronized with int_disable_sync() Change: move sp_task to work_queue element Impact: None 3. Problem: (CQ #32430) XFP port showed link lights on and link detected = yes when configured port up with no cable attached Cause: Link_up was declared by local phy (XGXS) link up without the external phy (8705) link status Change: Link up is now the combination of local phy (XGXS) link up and external phy (8705) link up Impact: None Enhancements ------------ 1. Request: Print PCI link properties upon load. Change: The print was added Impact: None Version 0.40.15 (November 15, 2007) ================================== Fixes ----- 1. Problem: On heavy traffic scenarios, the machine halted due to PCI problem Cause: A HW change in A1 boards requires some registers that controls the PCI credit to be changed as well Change: Updating the PXP credit registers Impact: None 2. Problem: (CQ #31120) The traffic LED was not active for lower speeds Cause: A new bootcode is required to set the traffic LED when the speed is less then 10G (using the emac and not the bmac) Change: The set LED routine was updated and bootcode 4.0.10 or above is required to have the LED functional Impact: None 3. Problem: Found a bug when doing ifconfig down/up during traffic. In this case FW can assert Cause: A packet that was received before unloading driver stayed in Pbuff, and was processed after loading the driver again Fix: Added the reordering mechanism to slow path handlers Impact: Implementation of all L2 slow-path commands was modified 4. Problem: (CQ #30160) Removed false positives from the self test (ethtool -t) Cause: Many tests in the self test were designed to check halted system (after fatal error) and the test assumed that the chip is idle Fix: Any test that can happen while the chip is operational was changed to "info" debug print and is not counted as warning or error Impact: The self test is more reliable Enhancements ------------ 1. Request: Forward preparation in the code for 57711 Change: Using only two DMAE clients per port. Using "port" instead of "function". Impact: Not visible to the user 2. Request: Block RX Pause if Auto-pause was selected and the MTU > 4500 to prevent performance retrogression when using PAUSE with big packets Change: The auto-pause resolution will be only TX pause if the MTU is larger than 4500. Force pause mode will be obeyed as requested Impact: Jumbo frames with auto-pause will achieve higher throughput 3. Request: Report HW errors Change: Parity and blocks errors attentions code was added to the driver. Not all indications are enabled. Impact: In case of an assert in the chip, the user will get an error notification 4. Request: Added the ability to support multi interrupt queues from kernel 2.6.24 and above Change: Allow ISR and NAPI (the stack processing) to run on several CPUs. The new feature is disabled by default Impact: Can reduce latency in some cases 5. Request: Move slow-path to work-queue to allow sleeps Change: The slow-path is now implemented as work queue Impact: Better fairness to other host drivers 6. Request: Changes with statistics requirements due to performance enhancement and preparation for next features. Change: a. Removed rcv_error_bytes b. Replaced errors_discard stat by: mac_discard stat, checksum_discard stat and packet_too_big_discard stat c. Removed statistics histogram Impact: The displayed statistics format was changed 7. Request Remove FW interrupts that are not needed Change: FW no longer interrupts the driver for reading a new slow-path element (it updates driver only when completing processing it) Impact: None 8. Request: Support easier SuSE compilation Change: In previous version, a flag in bnx2x.c was required in order to compile under SUSE. In the new implementation the make file can be used in the following way: SLES9 command: make EXTRA_CFLAGS+=-DBNX2X_SLES_9 SLES10 command: make EXTRA_CFLAGS+=-DBNX2X_SLES_10 Impact: SLES compilation procedure is different now Version 0.40.14 (November 06, 2007) ================================== Enhancements ------------ 1. Naming the TCP performance improvement feature TPA (still for demos only) Version 0.40.13 (November 05, 2007) ================================== Enhancements ------------ 1. Added support for L2 Rx TCP performance improvements in a special mode (implementation for demos only). This support is disabled by default and requires a change of compilation flag to enable. 2. Added support for vanilla kernel 2.6.18.5, SLES9, and RHES4 Version 0.40.12 (October 29, 2007) ================================== Fixes ----- 1. Problem: A fragmented Tcp/Udp packet might have been wrongly dropped Cause: parser doesn't checks tcp/udp checksum for fragmented packets Fix: FW will report to driver the tcp/udp checksum wasn't Validated if the packet was fragmented 2. Problem: ethtool -S|r|t eth[x] on un-configured port causes errors/panic Cause: When port is un-configured memory is not allocated and blocks in chip can be in reset Fix: Check driver state in nway_reset() and self_test() and check memory pointer in get_ethtool_stats() Enhancements ------------ 1. Supporting the upstream Kernel including new NAPI approach 2. Open source coding standard modifications throughout the code, including new init code, new HSI header files, new registers definitions, SPARSE fixes and checkpatch.pl fixes 3. Replaced patches mechanism with #ifdefs 4. Supporting big-endian machines 5. Supporting nVidia chipsets with MCP55 6. Support checksum offload for A1 boards (modification with some flag in PBF command) Version 0.40.10 (August 27, 2007) ================================= Bug fix version, no new features Version 4.0.9 (August 10, 2007) =============================== New features: ------------- 1. Updated to firmware version 4.0.7. 2. Added support for ethtool EEPROM options. Version 4.0.7 (July 23, 2007) ============================= New features: ------------- 1. Added support for flow control. 2. Added patch for Kernel 2.6.22.x. Version 4.0.6 (July 11, 2007) ============================= New features: ------------- 1. Added support for new bootcode 4.0.2. Version 4.0.5 (June 29, 2007) ============================= Fixes: ------ 1. Problem: Linux stack rechecked the RX checksum. Cause: In most cases, the indication of RX checksum was wrong causing the Linux stack to recheck. Fix: Indication mistake was fixed. 2. Problem: NFS UDP test failed writing to server. Cause: Incorrect HW init values. Fix: HW init values were corrected in the driver. 3. Problem: MTU change cause system to assert. Cause: Memory leak in the ifconfig up/down sequence. Fix: Memory leak fixed in driver. Version 4.0.1 (June 15, 2007) ============================= New features: ------------- 1. Added Power management is support. 2. Added WoL is support. 3. Auto-negotiation and speed & duplex is supported. 4. Updated firmware version to v4.0.2. 5. Support for Ethtool. 6. Changing MTU can be done when link is up. Version 0.30.1 (June 4, 2007) ============================ New features: ------------- 1. Updated firmware version to v0.30.0. Version 0.29.1 (May 21, 2007) ============================ New features: ------------- 1. Updated firmware version to v0.29.0. Version 0.27.5 (May 7, 2007) ============================ New features: ------------- 1. Interrupt coalescing values have been optimized. 2. Updated to Linux Kernel 2.6.20.7. Fixes: ------ 1. Problem: High performance scenarios involving many threads could have caused tx ring overrun. Cause: SNP concurrency driver bug. Fix: Driver related code was fixed. Version 0.27.1 (Apr 23, 2007) ============================ New features: ------------- 1. Added speed and activity support for LEDs. Fixes: ------ 1. Problem: Low performance when running Netperf TCP_RR. Cause: Driver bug caused a the driver to enter a busy loop in certain cases when there was no RX processing queued. Fix: The logic used to decide if there is pending RX work was corrected. 2. Problem: XFP link detection problem - intermittent issue. Cause: Driver would not get link change interrupt. Fix: Corrected the setting of the link change interrupt.