============================ R E L E A S E N O T E S ============================ Broadcom Linux bnx2 and 10GigE Virtual Bus Drivers(VBD) Version 2.0.23b 03/17/2011 NOTEs: 1. 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. 2. This package may or may not contain iSCSI driver support even though there may be mention of iSCSI support in the documentation. Highlighted Fixes: ================== - 1g/10g Mezzanine cards lose TOE capability when BOFM MAC address is applied to card - Addressed 10g Linux driver compilation errors on some older vanilla kernels - Linux iSCSI - TCP connection erroneously closed - 10g Linux driver - MSI-X configuration was not properly cleared when MSI-X was disabled. Feature Additions: ================== - Non-switch dependent NIC Partitioning support added to all components for 57712 based mezzanine cards. - BOFM support added for NIC Partitioned devices - Added support for Red Hat 5.6, SLES 10 SP4, and SLES 11 SP1 ********* Currently known issues and limitations with Broadcom NetXtreme drivers and devices. ********** 1. When loading drivers through the PNP (Plug and Play) method, users can occasionally end up loading the RIS drivers accidentally. Generally this occurs when a user is asked to point to the proper driver for the device, and the user selects the folder containing the RIS drivers as the driver for the device. This can result in network connections that fail to communicate across the network, as the NDIS driver will fail to bind to the devices. The most obvious way to identify the problem scenario is to open BACS and look at the network adapters displayed. Adapters that have the RIS drivers installed will be grayed out. Observing the driver loaded for the System Device portion of the Broadcom NetXtreme II devices will show that the RIS driver is loaded. Additionally, attempts to load the drivers using the installer will result in NDIS drivers displaying a yellow bang, as they’re not able to bind to the VBD driver. The easiest way to correct the problem is to run add/remove programs on all installed Broadcom devices, and then re-run the installer. 2. Network Teaming limitation with iSCSI offload: When iSCSI offload is enabled on Broadcom NetXtreme II NIC's or LOM's, only SLB teaming mode is supported. In order to create other teaming modes like 802.3ad and FEC/GEC, you will need to disable iSCSI offload. You can disable the iSCSI offload by a. launching the Broadcom Advanced Control Suite 3 (BACS 3). b. select the adapter you want to add to the team c. click the configurations tab, extend resource reservations. d. Uncheck iSCSI resource. 3. Restoring the team configuration with static IPv6 addresses may fail. Use either DHCP addresses for team configuration, or restore the team and re-apply the IP address manually if this issue is encountered. 4. Flow control statistics (MAC Sent X-ON, MAC Sent X-OFF and MAC Rx w/ no Pause Command) are reported incorrectly within BACS for 57710 based adapters. There is no functional impact and device is working as expected. 5. WoL with NPar: When using Wake on LAN (WoL) with NIC Partitioning, all of the devices that comprise a port must be shut down to cause the WoL configuration to be written to the controller during operating system shutdown. If only a single function is shut down, the WoL configuration might not be written to the controller, and the controller might not wake. 7. NC-SI with IOMMU: There is a known problem using NC-SI with IOMMU enabled, that can cause link down/up under stress conditions. If this occurs, disabled IOMMU in the BIOS. Software Compatibility ====================== This release of software supports: - BCM5706 NetXtreme II Gigabit Ethernet Adapter - BCM5706S NetXtreme II Gigabit Ethernet Adapter - BCM5708 NetXtreme II Gigabit Ethernet Adapter - BCM5708S NetXtreme II Gigabit Ethernet Adapter - BCM5709 NetXtreme II Gigabit Ethernet Adapter - BCM5709S NetXtreme II Gigabit Ethernet Adapter - BCM57710 NetXtreme II Gigabit Ethernet Adapter - BCM57711 NetXtreme II Gigabit Ethernet Adapter - BCM57712 NetXtreme II Gigabit Ethernet Adapter Files included are: A. Broadcom bnx2 Linux Driver B. Broadcom BCM57710/BCM57711/BCM57711E 10 GigE VBD for Linux C. Broadcom NetXtreme II iSCSI Driver For Linux ****************************************************************************************** A. Release Notes Broadcom bnx2 Linux Driver Version 2.0.23b 02/01/2011 Broadcom Corporation 5300 California Avenue, Irvine, CA 92617 Copyright (c) 2004 - 2011 Broadcom Corporation All rights reserved bnx2 v2.0.23b (Feb 01, 2011) cnic v2.2.13b (Feb 01, 2011) ========================================================= Fixes ----- 1. Problem: EEH errors on PPC when loading bnx2i Cause: KWQ page tables set up in wrong endian order, causing EEH errors when sending the first KWQ message. Change: Fixes page tables endian order. Impact: PPC only. bnx2 v2.0.22f (Jan 18, 2011) cnic v2.2.12f (Jan 18, 2011) ========================================================= Enhancements ------------ 1. Prevent AER error messages on PPC. PPC does not support AER. Impact: 5709 only. 2. Integrated with bnx2x 1.62.10. Impact: bnx2x iSCSI only. bnx2 v2.0.22e (Jan 12, 2011) ========================================================= Fixes ----- 1. Problem: change MTU would fail for the CNIC IRQ. Cause: Mismatched module IDs for request/free IRQ. Change: Masquerade as CNIC when cnic ops are called from bnx2. Impact: ESX only. bnx2 v2.0.22d (Jan 11, 2011) cnic v2.0.12d (Jan 11, 2011) ========================================================= Fixes ----- 1. Problem: NetQueue would not properly allocate RX queue Cause: BNX2_NETQ_HW_OPENED bit was not properly set. Change: When the NetQueue device is openned properly set the BNX2_NETQ_HW_OPENED bit in the netq_flags field. Impact: ESX NetQueue 2. Problem: NetQueue could possibly get out of sync with the uppper layers Cause: The queue cleanup code between the driver and upper layer is not synchronized Change: Introduce the NetQueue lock to synchronize the cleaning of the queues between the vmkernel and the bnx2 driver. Impact: ESX NetQueue 3. Problem: iSCSI may not work if multi-function is disabled in NPAR NICs. Cause: Bug in logic in detecting NPAR mode. Change: Offload bit should not be checked if iSCSI MAC address is invalid. Impact: iSCSI on 57712 NPAR NIC. bnx2 v2.0.22c (Jan 6, 2011) cnic 2.2.12c (Jan 6, 2011) ========================================================= Enhancements ------------ 1. Change: Updated to 6.2.1a firmware for 5709. It has fixes for CQ51953 (ESX netqueue issue) and CQ51894 (iSCSI performance). Impact: 5709 iSCSI and L2. bnx2 v2.0.22b (Jan 4, 2011) cnic 2.2.12b (Jan 4, 2011) ========================================================= Enhancements ------------ 1. Change: Send netlink IF_DOWN message during cnic_unregister_device(). This fixes the problem of bnx2i referencing freed hba when we used to send the netlink message during cnic_unregister_driver(). Impact: iSCSI. 2. Change: Upstream fix for memory leak in cnic_alloc_uio_rings() when we cannot allocate all the memory. Impact: None. 3. Change: Upstream fix to remove flush_scheduled_work() since it is obsolete. Impact: None. 4. Change: Do not allow iSCSI on bnx2x devices in MF mode. The hardware does not yet support it. Impact: iSCSI. 5. Change: Removed VLAN_ID from the parameters of ulp_ops->indicate_netevent(). Upstream code no longer uses this parameter. Impact: None. Fixes ----- 1. Problem: SPQ RAMROD type field does not consistently contain the function ID. Change: Fixed in cnic_submit_kwqe_16() for HSI 6.0 and above. Impact: iSCSI in NPAR mode. bnx2 v2.0.21b (Dec 21, 2010) cnic 2.2.11b (Dec 21, 2010) ========================================================= Enhancements ------------ 1. Change: Call cm_connect_complete() when an invalid path_response netlink message is received. This will speed up iscsid in disconnecting the connection. This helps to resolve CQ49665. Impact: iSCSI. bnx2 v2.0.20g (Dec 17, 2010) cnic 2.2.10g (Dec 17, 2010) ========================================================= Fixes ----- 1. Problem: (CQ51766) cnic driver panics in cnic_service_bnx2() during iscsid restart. Cause: Referencing the cp->kcq1 pointer before checking that the device is up. Change: Fixed logic so that the cp->kcq1 pointer will only be refernced after checking the device is up. Impact: iSCSI. Enhancements ------------ 1. Change: Added retry logic in iscsi_nl_send_msg() to retry netlink messages to userspace. Impact: iSCSI. bnx2 v2.0.20f (Dec 09, 2010) cnic 2.2.10f (Dec 09, 2010) ========================================================= Fixes ----- 1. Problem: (CQ51544) Unable to connect to iSCSI targets on 57712 NPAR LOMs with NPAR disabled. Cause: ff:ff:ff:ff:ff:ff iSCSI MAC address was used in this case. Change: Add code to detect invalid MAC address and use port MAC address instead. That's the only to determine NPAR is disabled. Impact: 57712 iSCSI. 2. Problem: MTU change in INTA mode crashes occasionally. Cause: Status block may be accessed if INTA is shared with another device during reset. There is a short period that the status block is freed. Change: Free IRQ before freeing status block. Impact: bnx2 MTU change/ring size change. 3. Problem: Heap corruption reported by VMWare. Cause: list_del() is called after kfree() in OOO code. Fix: call list_del() before kfree(). Impact: iSCSI OOO. bnx2 v2.0.20e (Dec 06, 2010) cnic 2.2.10e (Dec 06, 2010) ========================================================= Enhancements ------------ 1. Change: Adjusted hc timeout for EQ to use the T6.0 value of 4. This will match T5.x HC timeout values. Impact: 10G iSCSI only. 2. Change: Minor changes to match upstream code. Impact: None. bnx2 v2.0.20d (Nov 16, 2010) cnic 2.2.10d (Nov 16, 2010) ========================================================= Fixes ----- 1. Problem: VMware NetQueue not working properly on 5709. Cause: HSI mismatch. Change: Updated HSI to match T6.0 bnx2 firmware. Impact: NetQueue on 5709. Enhancements ------------ 1. Change: Adjusted kernel compatibility code to compile on RHEL5.6. Impact: bnx2 and cnic. bnx2 v2.0.20c (Oct 28, 2010) cnic 2.2.10c (Oct 28, 2010) ========================================================= Fixes ----- 1. Problem: (CQ49616) NMI occurs during repeated load/unload of bnx2 driver on 5709. Cause: The 5709 chip's DMA block wasn't stopped properly before reset. Change: Fixed by clearing DMA_ENABLE in NEW_CORE_CTL register and polling for pending bus transactions to stop. Impact: 5709. Enhancements ------------ 1. Change: Update 5706/5708/5709 firmware to 6.2.1. Impact: All 1G devices. 2. Change: Fixed one circular lock dependency issue with bnx2i when making up call to send iSCSI NL message. Impact: None. bnx2 v2.0.20b (Oct 13, 2010) cnic 2.2.10b (Oct 13, 2010) ========================================================= Fixes ----- 1. Problem: (CQ49481) pci_enable_pcie_error_reporting failed on 5706 and 5709. Cause: AER not supported on non-PCIE devices. Change: Enable AER only on PCIE devices (5709). Impact: None. Enhancements ------------ 1. Change: (CQ49858) Support KVM pass-through mode by eliminating config cycles to non-standard PCI registers (PCICFG_MISC_CONFIG, PCICFG_REG_WINDOW*). Impact: All chips. bnx2 v2.0.18c (Sep 13, 2010) cnic 2.2.6c (Sep 13, 2010) ========================================================= Fixes ----- 1. Problem: (CQ49832) bnx2 flow control not working Cause: Mistakenly disabled in firmware in 2.0.17j to fix CQ46393. Change: Re-enabled RV2P flow control with additional fixes to for a number of odd flow control issues. New firmware versions are 6.0.15 for 5706/5708 and 6.0.17 for 5709. Impact: 5706/5708/5709. Enhancements ------------ 1. Change: Added zeroing of the iSCSI L2 ring's RX BD page to help signal ring shutdown to uIP. Impact: iSCSI. 2. Change: Fix compile issues on 2.6.36 kernel. Impact: None. bnx2 v2.0.18b (Sep 02, 2010) cnic 2.2.6b (Sep 02, 2010) ========================================================= Enhancements ------------ 1. Change: Slightly improve the cnic Netlink fix in cnic 2.2.5k. Impact: iSCSI. bnx2 v2.0.17l (Aug 19, 2010) cnic 2.2.5l (Aug 19, 2010) ========================================================= Fixes ----- 1. Problem: (CQ49502) - bnx2x_panic_dump doing DHCP and Data/Header Digest Cause: A mismatch was found in the txbd where the hw prod idx did not match the sw prod idx (via the vlan_id field). The problem will show when uIP restarts without cnic reload. Since uIP restarted, it has lost all previous history about the uio ring. Change: Added cnic_shutdown_rings to the uio_close path so whenever uio_open is called from uIP, the rings will start off fresh. Impact: 570X/5771X iSCSI. 2. Problem: (CQ49211) Connection via bnx2i path fails in SuSE 11 SP1 Cause: For 5708/09, the previous firmware set did not take the l2 frame header length into account in the placement filter. Change: Updated to 5706/08 fw 6.0.14 and 5709 fw 6.0.16 which addresses this issue. Impact: 570X iSCSI. bnx2 v2.0.17k (Aug 18, 2010) cnic 2.2.5k (Aug 18, 2010) ========================================================= Fixes ----- 1. Problem: iSCSI sessions do not recover when running under heavy stress conditions with the socket layer. Cause: The NetLink buffer would get congested, so that the response to the PATH_UPDATE back to uIP would not be delivered. Change: Use CNIC to throttle the number of outstanding PATH_REQ's to uIP, easing the congestion on the Netlink buffer. Impact: 570X/5771X iSCSI. bnx2 v2.0.17j (Aug 15, 2010) cnic 2.2.5j (Aug 15, 2010) ========================================================= Fixes ----- 1. Problem: (CQ49395) Session recovery occurs during heavy traffic. Cause: The mapping of the 10g hw context id to l5 cid didn't consider the port/vfid. Change: Fixed the 10g hw context id to l5 cid mapping in TCP OOO Impact: 5771X iSCSI. 2. Problem: (CQ49111) System freezes when unloading bnx2x drivers while having active sessions. Cause: The iro_arr was not initialized before deferencing which led to a kernel panic. This is caused by a race condition between uIP and cnic. Change: Moved the initialization of the iro_arr to before uIP can call uio open. Impact: 5771X iSCSI. 3. Problem: (CQ49211) 5708/09 Connection via bnx2i path fails SuSE 11 sp1 Cause: For 5709, the fast coalescing algorithm had a bug in the fw. Change: Updated 5709 MIPS firmware to 6.0.14 which contains a fix for this issue. Impact: 5709 iSCSI. 4. Problem: (CQ46393) 5706/08/09 NC-SI Traffic Stops After Host Kernel Panic Cause: RV2P firmware was set to drop input packets at a rate which is slower than input line rate when the host stops posting buffers. This has caused the rxp ftq to backup which eventually led to the rxp ftq hw to assert PAUSE and flood the network. Change: RV2P firmware was modified to disable any waiting before dropping the input packet when the host doesn't post buffers. Impact: 5706/08/09. bnx2 v2.0.17i (Aug 09, 2010) cnic 2.2.5i (Aug 09, 2010) ========================================================= Fixes ----- 1. Problem: (CQ49159) 57710 firmware asserts running disktest. Cause: CSTORM memory corruption. Change: Do not initialize and use the FCoE EQ on 57710. The memory offsets for the FCoE EQ ring are not defined on 57710. Impact: 57710 iSCSI. 2. Problem: (CQ49271) Soft lockup during ifup/ifdown test with active iSCSI connections. Cause: rtnl_lock may have a circular dependency with another filesystem mutex during uio_close(). Change: Removed rtnl_lock() in cnic_uio_close(). Impact: All iSCSI. bnx2 v2.0.17h (Aug 03, 2010) cnic 2.2.5h (Aug 02, 2010) ========================================================= Enhancements ------------ 1. Change: Enabled new RV2P flow control on all bnx2 devices. Impact: All bnx2 devices. 2. Change: Suppressed "OOO CQE is empty" kernel message. Impact: None. bnx2 v2.0.17g (Aug 02, 2010) cnic 2.2.5g (Aug 02, 2010) ========================================================= Fixes ----- 1. Problem: (CQ49152) cnic driver crashes during iscsid restart. Cause: cnic_wq destroyed while cnic_delete_task() is still queued in the workqueue. Change: Call destroy_workqueue() after cnic_release() which waits for the cnic_delete_task() to finish. Impact: 10G iSCSI. bnx2 v2.0.17f (July 30, 2010) cnic 2.2.5f (July 30, 2010) ========================================================= Fixes ----- 1. Problem: iSCSI license not read correctly on 57712 in NIC partitioning mode. Cause: Missing NIC partitioning license logic. Change: Added NIC partitioning license logic. Impact: 10G iSCSI. Enhancements ------------ 1. Change: Updated 5709 firmware to 6.0.13. The new 5709 firmware has additional rx and tx performance improvements. Impact: 5709. bnx2 v2.0.17e (July 29, 2010) cnic 2.2.5e (July 29, 2010) ========================================================= Fixes ----- 1. Problem: (CQ49117, CQ49111) Soft locup when unloading bnx2x with cnic and bnx2fc/bnx2i loaded. Cause: cnic_cm_stop_bnx2x_hw() thread under rtnl_lock() and pci_bus_sem has to wait for cnic_delete_task() to finish the 2-second wait and CFC DELETE of every FCoE or iSCSI connection. There may be work structs scheduled on the common workqueue ahead of cnic_delete_task() that require the same semaphores, leading to the soft lockup. Change: Use a dedicated workqueue for cnic_delete_task(). Impact: 10G iSCSI and FCoE. 2. Problem: (CQ49113) Compilation error with bnx2x 1.60.30. (CQ48828) lediag fails with cnic loaded. Cause: license_key structure changed to use all 32-bit fields. This change is to fix CQ48828 (lediag fails with cnic loaded). 16-bit access causes lediag failure. Change: Made corresponding change to read 32-bit values for the iSCSI license. Impact: 10G iSCSI. 3. Problem: (CQ49097) cnic panics when loading on 5708. Cause: The driver uses NULL OOO ring pointers to initialize OOO for 5708. Change: Skip OOO completely on 5708. Impact: bnx2 iSCSI. bnx2 v2.0.17d (July 28, 2010) cnic 2.2.5d (July 28, 2010) ========================================================= Fixes ----- 1. Problem: (CQ49071) Soft lockup during system shutdown after logging in to 10G iSCSI sessions. Cause: This was introduced in 2.2.5c when fixing CQ49003. flush_scheduled_work() can deadlock because we're holding rtnl_lock and linkwatch_event may be on the workqueue. Change: Fixed by using flags to wait for the cnic_delete_task() to finish. Impact: 10G iSCSI. 2. Problem: cnic driver does not load on 5708 devices. Cause: Bug in driver that skips devices without OOO support. Change: OOO setup has been changed so that cnic initialization will continue even if OOO fails for whatever reason on all chips. Impact: iSCSI. Enhancements ------------ 1. Change: Updated 5708 firmware to 6.0.11 and 5709 firmware to 6.0.12. The new 5709 firmware fixes small packet rx performance issue. Some adiitional fixes for iSCSI and OOO. Impact: All bnx2 chips. bnx2 v2.0.17c (July 23, 2010) cnic 2.2.5c (July 23, 2010) ========================================================= Fixes ----- 1. Problem: (CQ49003) Panic in cnic_free_bnx2x_conn_resc() during ifdown with many 10G iSCSI active sessions. Cause: cancel_work_sync() is not available in RHEL5.x kernels to wait for cnic_delete_task() to finish before freeing the device's data structures (in particular the csk table). Change: Use flush_scheduled_work() to wait instead. Impact: 10G iSCSI on older kernels (e.g. RHEL5.x) Enhancements ------------ 1. Change: Added AER (Advanced Error Reporting) on bnx2. Impact: None. bnx2 v2.0.17b (July 20, 2010) cnic 2.2.5b (July 20, 2010) ========================================================= Fixes ----- 1. Problem: Still seeing uio_release panics during ifup/ifdown test. Cause: UIO device unregistered prematurely. Change: Do not unregister UIO devices until rmmod. Impact: iSCSI. Enhancements ------------ 1. Change: Various upstream patches. Please see ChangeLog for details. bnx2 v2.0.16d (July 14, 2010) cnic 2.2.4d (July 14, 2010) ========================================================= Fixes ----- 1. Problem: (CQ44916) Unload bnx2/bnx2x fails after connecting to iSCSI targets. Cause: UIO device deleted before userspace has closed the device, causing various failures including kernel panic. Change: Separated UIO structure from cnic_dev structure so that we can wait until UIO is closed before unregister and deleting UIO. Impact: iSCSI. This change should have possitive impact on ifup/ifdown, MTU change/selftest/hotplug/etc with active iSCSI sessions. Enhancements ------------ 1. Change: Allocate the actual number of MSI-X vectors instead of always 9. Also, keep trying if the number of vectors is less than the desired number. Impact: 5709 networking and iSCSI. bnx2 v2.0.16c (July 12, 2010) cnic 2.2.4c (July 12, 2010) ========================================================= Enhancements ------------ 1. Change: Added VLAN_TAG_PRESENT to distinguish between physical and VLAN netevents in cnic. Impact: FCoE. bnx2 v2.0.16b (July 8, 2010) cnic 2.2.4b (July 8, 2010) ========================================================= Fixes ----- 1. Problem: (CQ48753) cnic will not compile with bnx2x 1.60.27. Cause: IGU symbols not defined without ELINK_DEBUG defined. Change: Added ELINK_DEBUG. Impact: None. 2. Problem: (CQ48717) Kernel panic in bnx2x during ifdown with active iSCSI sessions. Cause: uio_close() is called after the device is already down. bnx2x will crash when we try to shutdown the iSCSI ring. Change: Shutdown the iSCSI ring even if uio_close() is not called in the shutdown path. Impact: 10G iSCSI. Enhancements ------------ 1. Change: Always run in MSI-X mode on 5709. Impact: 5709. 2. Change: Added wait of 2 seconds when sending PATH_REQ if UIO has not been opened yet. This improves the liklihood of login success during the first login if using older iscsid. Impact: iSCSI. bnx2 v2.0.15k (July 1, 2010) cnic 2.2.3k (July 1, 2010) ========================================================= Fixes ----- 1. Problem: Compile problems on various older kernels. Cause: pci_save_state()/pci_restore_state incompatibility in older kernel. DECLARE_PCI_UNMAP_ADDR() caused dma mapping field to be undefined on kernels not using IOMMU. Change: Do not use pci_save_state()/pci_restore_state() on older kernels. Use dma_addr_t to declare mapping fields. Impact: None. bnx2 v2.0.15j (June 30, 2010) cnic 2.2.3j (June 30, 2010) ========================================================= Fixes ----- 1. Problem: bnx2x firmware asserts if cnic is loaded on 57711E (MF) functions 2 and higher and the device is brought up. Cause: Statistics for iSCSI ring not implemented, casuing firmware to assert when the iSCSI ring is initialized. Change: Do not enable statistics if the clien ID is bigger than MAX_STAT_COUNTER_ID. Impact: bnx2x iSCSI on 57711E. 2. Problem: cnic terminations for iSCSI and FCoE connections may panic or hang during repeated ifdown/ifup. Cause: Data structures may be freed while cnic is still waiting for the 2 second CFC_DELETE wait time. Change: Use cancel_work_sync() to wait for the completion of the cnic_delete_task(). Check that the CTX_FL_DELETE_WAIT flag has been set before waiting. Impact: bnx2x iSCSI and FCoE. 3. Problem: (CQ48642) Compile errors on older kernels. Cause: VMWARE_ESX_DDK_VERSION not defined in Linux. Change: Added check for VMKLNX. Impatc: None. bnx2 v2.0.15i (June 30, 2010) cnic 2.2.3i (June 30, 2010) ========================================================= Enhancements ------------ 1. Change: Added iSCSI out-of-order support. Impact: iSCSI. bnx2 v2.0.15h (June 18, 2010) cnic 2.2.3g (June 10, 2010) ========================================================= Enhancements ------------ 1. Change: Enabled HW RSS indirection table on 5709. Impact: RSS on 5709. 2. Change: Updated to 6.0.10 firmware. Impact: all chips. bnx2 v2.0.15g (June 10, 2010) cnic 2.2.3g (June 10, 2010) ========================================================= Enhancements ------------ 1. Change: Added FCoE statistics SPQ command. Impact: FCoE. bnx2 v2.0.15f (June 4, 2010) cnic 2.2.3f (June 4, 2010) ========================================================= Fixes ----- 1. Problem: (CQ46648) CID leaks while running iLAB 5.12 connection closure test. Cause: Race condition between bnx2i initiated TCP close and an asynchronous RESET_COMP from firmware. Change: Re-structured cnic code that handles close, abort, and various completion events to ensure all scenarios are accounted for with no race conditions. Impact: All iSCSI connection termination scenarios. Enhancements ------------ 1. Change: Added host iSCSI IP address to the cnic_dev structure so that bnx2i can report it to sysfs. This is needed for iSCSI boot during pivot_root. Impact: iSCSI boot. bnx2 v2.0.15e (June 3, 2010) cnic 2.2.3d (June 2, 2010) ========================================================= Fixes ----- 1. Problem: (CQ48133) bnx2 fails to compile on older 2.6 kernels. Cause: PCI MSIX attributes not defined in kernel .h files. Change: Added compatibility code. Impact: None. bnx2 v2.0.15d (June 2, 2010) cnic 2.2.3d (June 2, 2010) ========================================================= Fixes ----- 1. Problem: (CQ47942) rmmod hangs if the device has been opened and closed more than once. Cause: netif_napi_add() called once during every ->open(). netif_napi_del() is only called once during rmmod. Change: Call netif_napi_del() in ->close(). Impact: None. bnx2 v2.0.15c (May 21, 2010) cnic 2.2.3c (April 21, 2010) ========================================================= Fixes ----- 1. Problem: service iscsid restart on 5709 does not work. Cause: Not restarting KWQ correctly due to stale context. Change: Fixed by correctly zeroing KWQ/KCQ/RX context memory. Impact: bnx2 iSCSI. 2. Problem: iSCSI license not read correctly on 57711E in single function mode. Cause: Bug in reading the mf_cfg block. Change: Bug fixed. Change: 57711E iSCSI. Enhancements ------------ 1. Change: Added GRO support. Impact: All devices on kernels supporting GRO. bnx2 v2.0.15b (May 12, 2010) cnic 2.2.3b (April 12, 2010) ========================================================= Fixes ----- 1. Problem: iSCSI does not work on 57712. Cause: License checking always disabled on 57712. Change: Added proper checking for 57712 iSCSI license. Impact: None. 2. Problem: (CQ47360) Compile errors on older kernels not supporting UIO and latest iSCSI. Cause: New cnic driver will only compile on kernels newer than 2.6.31 and some selected distros that have the backport. Change: Makefile changes to compile cnic only on supported kernels. Impact: None. Enhancements ------------ 1. Change: Changed bnx2_cnic_probe() to bnx2_cnic_probe2() so that out-of-tree driver componenets will not inter- operate with upstream components. This avoids compatibility problems that often lead to kernel crashes. Impact: Out-of-tree cnic will not operate with upstream L2 drivers and vice versa. 2. Change: Revert the PRS_REG_NIC_MODE change done in 2.0.11h. Newer bnx2x driver (1.60.18+) do not require this setting. Impact: None. bnx2 v2.0.14b (April 28, 2010) cnic 2.2.2b (April 28, 2010) ============================================================ Enhancements ------------ 1. Change: Added compatibility code for RHEL5.4+ kernels. Impact: None. 2. Change: Added VLAN ID to netdev event callback. Impact: bnx2i. bnx2 v2.0.13b (April 22, 2010) cnic 2.2.1c (April 30, 2010) ============================================================ Enhancements ------------ Add debug code to dump all KWQE's (RAMROD) posted to 5771x chipset. This feature can be enabled/disabled using module parameter, by default this feature is disabled. Also a exported function is introduced to dump 3 pages worth of KCQE's bnx2 v2.0.13b (April 22, 2010) cnic 2.2.1b (April 22, 2010) ============================================================ Enhancements ------------ 1. Change: cnic has been updated to be similar to the upstream versions using UIO with added T6.0 iSCSI support for 10G and other bug fixes. Impact: iSCSI now requires UIO, new bnx2i, and bnx2x 1.60.16+. bnx2 v2.0.11j (April 22, 2010) cnic 1.10.2j (April 22, 2010) ============================================================ Fixes ----- 1. Problem: (CQ47298) Does not compile with bnx2x 1.60.16. Cause: cnic_if.h has changed. Change: Updated code to be compatible with new cnic_if.h. Impact: None. bnx2 v2.0.11i (April 15, 2010) cnic 1.10.2i (April 15, 2010) ============================================================ Fixes ----- 1. Problem: (RHBZ 511368) Driver loses one MSI-X vector after many hours of traffic. Cause: Chip timing out on write cycle to the MSI-X mask bit, causing the unmask operation to be dropped. Change: Increase GRC timeout in register 0x8cc. (Same fix from 2.0.8e). Impact: bnx2x MSI-X mode. 2. Problem: (RHBZ 554706) scheduling while atomic warning when bonding and VLANs are used with cnic loaded. Cause: bond_del_vlans_from_slave() holds bond->lock when calling ndo_vlan_rx_register(). bnx2 calls bnx2_netif_stop() to stop the rx handling while changing the vlgrp. The call also calls bnx2_cnic_stop() which has many sleeping functions. Change: Do not stop cnic when VLANs are changed. Since there is no reset during VLAN change, there is no need to stop cnic. (Same fix from 2.0.8e). Impact: VLAN and iSCSI. 3. Problem: (CQ46940) Poor small packet performance on 5709. Cause: FTQ discards caused by bottlenecks in firmware. Change: Upgraded to 5.0.0.j15 MIPS firmware for 5709. (Same fix from 2.0.8c) Impact: 5709. Enhancements ------------ 1. Change: Improved rx performance by prefetching next entry's descriptor header and SKB. Impact: All chips. 2. Change: Updated cnic interface to support out-of-order processing. This is needed for bnx2x 1.60.15 but the feature is not available in cnic yet. Impact: None. bnx2 v2.0.11h (Mar 29, 2010) cnic 1.10.2h (Mar 29, 2010) ======================================================== Fixes ----- 1. Problem: iSCSI not functional with bnx2x 1.60.11. Cause: PRS_REG_NIC_MODE set to 1, causing L2 to receive iSCSI traffic. Change: Cleared PRS_REG_NIC_MODE. Impact: bnx2x iSCSI. bnx2 v2.0.11g (Mar 17, 2010) cnic 1.10.2g (Mar 17, 2010) ======================================================== Enhancements ------------ 1. Problem: iSCSI not functional on 57712. Cause: Bugs and incomplete support of 57712 in cnic driver. Change: Fixed and completed 57712 support. Impact: iSCSI. bnx2 v2.0.11f (Mar 15, 2010) cnic 1.10.2f (Mar 15, 2010) ====================================================== Fixes ----- 1. Change: More 6.0.12 firmware HSI changes (bnx2x 1.60.10). Impact: bnx2x iSCSI. bnx2 v2.0.11e (Mar 9, 2010) cnic 1.10.2e (Mar 9, 2010) ====================================================== Enhancements ------------ 1. Change: Updated to 6.0.12 firmware HSI (bnx2x 1.60.10). Impact: bnx2x iSCSI. bnx2 v2.0.11d (Feb 25, 2010) cnic 1.10.2d (Feb 25, 2010) ======================================================== Enhancements ------------ 1. Change: Fixed shared memory base checking for T6.0 bnx2x HSI. Impact: bnx2x iSCSI. 2. Change: Added new igu status block ID to handle iSCSI status block acknowledgement in T6.0 HSI. Impact: bnx2x iSCSI. 3. Change: Allow multiple ethtool speed advertisments when using newer ethtool 6. Impact: ethtool -s. Fixes ----- 1. Problem: Statistics 64-bit counters may not be accurate after MTU change. Cause: Bug missing the carry when summing 64-bit counters. Change: Fixed the missing carry. Impact: statistics. bnx2 v2.0.11c (Feb 04, 2010) cnic 1.10.2c (Feb 04, 2010) ======================================================== Enhancements ------------ 2. Change: Added 57712 support in cnic driver. Impact: None. bnx2 v2.0.11b (Jan 28, 2010) cnic 1.10.2b (Jan 27, 2010) ======================================================== Enhancements ------------ 1. Change: Saved bnx2 statistics block before MTU change, ring change, etc. Impact: bnx2 statistics. bnx2 v2.0.10b (Jan 12, 2010) cnic 1.10.1b (Jan 12, 2010) ======================================================== Enhancements ------------ 1. Change: Improved cnic's MTU change/reset logic to fix multiple problems in VMWare. Impact: iSCSI. 2. Change: Converted to bnx2x T6.0 HSI. Impact: bnx2x iSCSI. bnx2 v2.0.8e (April 13, 2010) cnic 1.9.13b (Dec 16, 2009) ========================================================= Fixes ----- 1. Problem: (RHBZ 511368) Driver loses one MSI-X vector after many hours of traffic. Cause: Chip timing out on write cycle to the MSI-X mask bit, causing the unmask operation to be dropped. Change: Increase GRC timeout in register 0x8cc. Impact: bnx2x MSI-X mode. 2. Problem: (RHBZ 554706) scheduling while atomic warning when bonding and VLANs are used with cnic loaded. Cause: bond_del_vlans_from_slave() holds bond->lock when calling ndo_vlan_rx_register(). bnx2 calls bnx2_netif_stop() to stop the rx handling while changing the vlgrp. The call also calls bnx2_cnic_stop() which has many sleeping functions. Change: Do not stop cnic when VLANs are changed. Since there is no reset during VLAN change, there is no need to stop cnic. Impact: VLAN and iSCSI. bnx2 v2.0.8d (April 02, 2010) cnic 1.9.13b (Dec 16, 2009) ========================================================= Enhancements ------------ 1. Change: Improved rx performance by prefetching next entry's descriptor header and SKB. Impact: All chips. bnx2 v2.0.8c (Mar 31, 2010) cnic 1.9.13b (Dec 16, 2009) ======================================================= Fixes ----- 1. Problem: (CQ46940) Poor small packet performance on 5709. Cause: FTQ discards caused by bottlenecks in firmware. Change: Upgraded to 5.0.0.j15 MIPS firmware for 5709. Impact: 5709. bnx2 v2.0.8b (Dec 16, 2009) cnic 1.9.13b (Dec 16, 2009) ======================================================= Fixes ----- 1. Problem: (CQ44964) RHEL5.4 crashes when bnx2 driver is updated with out-of-tree version. Cause: Newer out-of-tree driver's cnic_eth_dev structure has been updated, making it incompatible with RHEL5.4's cnic driver. Change: Reverted the structure update for RHEL5.4. Impact: None. Enhancements ------------ 1. Change: Improved the reset logic to prevent NETDEV WATCHDOG when TSS is enabled. Impact: MTU change, ring size change, selftest, etc. 2. Change: Fixed some compiler warnings when compiling bnx2 and cnic drivers. Impact: None. bnx2 v2.0.7b (Dec 7, 2009) cnic 1.9.12b (Dec 7, 2009) ======================================================= Fixes ----- 1. Problem: (CQ44620) Spurious KCQ entries leading to bnx2x assert. Cause: Stale status block with old KCQ index after restarting hardware. Change: Added some additional cleanup and initialization steps including zeroing the status block. Impact: None. Enhancements ------------ 1. Change: Updated RV2P P1 for 5709 to 5.0.0.j10 to address a flow control issue that can lead to context corruption. Flow control watermarks have also been optimized. Impact: 5709 flow control. bnx2 v2.0.6b (Dec 4, 2009) cnic 1.9.11b (Nov 19, 2009) ======================================================= Fixes ----- 1. Problem: (CQ44801) Unable to compile bnx2 on most 2.6 kernels. Cause: print_mac() kernel compatibility not defined correctly. Fix: Simple compatibility fix. Impact: None. bnx2 v2.0.5b (Dec 4, 2009) cnic 1.9.11b (Nov 19, 2009) ======================================================= Enhancements ------------ 1. Change: Sync'ed up with latest upstream bnx2 driver. Please see ChangeLog for details. Impact: Yes, Linux and VMWare. bnx2 v1.9.42b (Dec 1, 2009) ======================================================= Fixes ----- 1. Problem: Compile error against the VMware ESX 4.0 DDK Cause: vmk_IscsiNetHandle is not defined with the VMware ESX 4.0 DDK Change: Added compile flag Impact: None. Enhancements ------------ 1. Change: Add BMAPILNX ioctl to allow for FW upgrade Impact: bnx2 VMware ESX 4.0 bnx2 v1.9.41b (Nov 19, 2009) cnic 1.9.11b (Nov 19, 2009) ======================================================= Fixes ----- 1. Problem: (CQ44617) Compile error on SLES10 and RHEL4 kernels. Cause: bool not defined on older kernels. Change: Added compatibility code. Impact: None. 2. Problem: (CQ42096) iSCSI sessions do not recover after running selftest/ifdown/etc with max sessions connected. Cause: cnic_lock mutex has circular dependency, causing deadlock when iscsid tries to cleanup connections. Change: Merged in upstream cnic patches to avoid circular dependency. Impact: None. Enhancements ------------ Change: (CQ43088) Changed the firmware version string format. Impact: None. bnx2 v1.9.40b (Nov 18, 2009) cnic 1.9.10b (Nov 12, 2009) ======================================================= Fixes ----- 1. Problem: (CQ44528) Kernel runs out of memory after load/unload bnx2. Cause: RX SKB buffers were not freed. Change: Fixed the regression introduced by VMWare development. Impact: None. 2. Problem: (CQ44399) iLAB 5.10 connection establishment test failure. Cause: Firmware SYN-ACK handling issue. Change: Updated firmware to 5.0.0.j6 in bnx2_fw.h and 5.0.0.j9 in bnx2_fw2.h. Impact: iSCSI. Enhancements ------------ Change: (CQ43088) Added VPD-R V0 firmware version string to ethtool -i. Impact: None. bnx2 v1.9.39b (Nov 6, 2009) cnic 1.9.10b (Nov 12, 2009) ======================================================= Fixes ----- 1. Problem: (CQ44470) Kernel panics when bnx2/bnx2x is unloaded with active iSCSI sessions. Cause: NETDEV_UNREGISTER will cause bcm570x_* transport to be destroyed while sessions may still be active. Change: Use module referencing to prevent bnx2/bnx2x from unloading. This is a simple interim solution to revert back to the old behavior. In T6.0, we will migrate to the upstream driver architecture and network drivers will be able to be unloaded again. Impact: None. Enhancements ------------ Change: Added a short register dump during NETDEV_WATCHDOG. Impact: None. bnx2 v1.9.38b (Nov 6, 2009) cnic 1.9.9b (Nov 6, 2009) ===================================================== Fixes ----- 1. Problem: (CQ44446) cnic panics during 10G iSCSI initialization. Cause: Recent interface changes introduced this regression. cnic_service_bnx2x() panics when accessing uninitialized status block pointer. Change: Added state checking in cnic_service_bnx2x(). Impact: None. 2. Problem: (CQ44439) bnx2 does not compile on older 2.6 kernels. Cause: mutex not defined on older kernels. Change: Use rtnl_lock() to protect bnx2_reset_task(). Impact: None. bnx2 v1.9.37b (Nov 4, 2009) cnic 1.9.8b (Nov 3, 2009) ===================================================== Enhancements ------------ 1. Change: Updated 5708/5706 firmware to 5.0.0.j5 for better small packet performance. Impact: 5706/5708. Fixes ----- 1. Problem: (CQ43280) Cannot unload cnic after bnx2/bnx2x is loaded. Cause: module referencing. Change: Changed module referencing scheme. Impact: None. bnx2 v1.9.36b (Oct 22, 2009) ======================================================= Enhancements ------------ 1. Change: Expand on NetQueue module parameters. Impact: bnx2 VMware NetQ. bnx2 v1.9.35b (Oct 22, 2009) ======================================================= Fixes ----- 1. Problem: If only 1 queue is used on VMware ESX, iSCSI offload would fail. Cause: The inboxed VMware driver would only use 1 MSI-X vector. Because of this the driver would not setup MSI-X Change: Always setup MSI-X reguardless of the number of MSI-X vectors used. Impact: 5709 iSCSI on VMware bnx2 v1.9.34b (Oct 20, 2009) ======================================================= Fixes ----- 1. Change: Updated xinan firmware to 5.0.0.j8 Nop timeout tuning (VMware PR467194) Added a new data fw heartbeat to work with the new bootcode and also handle older bootcode. Impact: 5709. bnx2 v1.9.33b (Oct 8, 2009) ======================================================= Enhancements ------------ 1. Change: Make NetQueue module parameters more explict. Impact: bnx2 VMware NetQ. bnx2 v1.9.32b (Oct 8, 2009) cnic v1.9.7c (Oct 8, 2009) ======================================================= Fixes ----- 1. Problem: CNIC unable to handle an unsolicited RESET COMPLETE which would result in a hung session. Cause: The CNIC driver couldn't handle unexpected SYN. Change: The CNIC driver will now handle an unsolicited RESET COMPLETE and cleanup properly. Impact: cnic Enhancements ------------ 1. Change: Allow the default NetQueue options to be controlled through the macro, BNX2_ENABLE_NETQUEUE. Impact: bnx2 VMware NetQ. bnx2 v1.9.31b (Oct 6, 2009) ======================================================= Fixes ----- 1. Problem: PSOD would occur when alloc()'ing NetQueue's Cause: With the removal of the global 'disable_netq' parameters, the NetQueue CID's weren't being mapped in some cases Change: Always map the NetQueue CID's Impact: bnx2 VMware ESX NetQueue bnx2 v1.9.30b (Oct 5, 2009) ======================================================= Fixes ----- 1. Problem: PSOD would occur because of TX timeouts Cause: The VMware netdev watchdog timer was ran before the reset task got a chance to run on a loaded system. Change: Elongated the TX timeout value for VMware ESX only to allow for the reset task to run. Impact: bnx2 VMware ESX Enhancements ------------ 1. Change: Updated vmkernel module parameter, 'force_netq', to allow NetQueue setting to be adjusted per function rather then globally for all functions. Impact: bnx2 VMware ESX bnx2 v1.9.29b (Oct 1, 2009) ======================================================= Fixes ----- 1. Change: Updated xinan firmware to 5.0.0.j7 and teton firmware to 5.0.0.j4 which will fix L2 hang due to iSCSI PDU's padding byte extended to another TCP segment Impact: 5706/5708/5709. bnx2 v1.9.28b (Sep 25, 2009) ======================================================= Fixes ----- 1. Change: Updated firmware to 5.0.0.j6 which will add the corresponding flow control trip point. Impact: 5709. bnx2 v1.9.27b (Sep 24, 2009) cnic v1.9.7b (Sep 24, 2009) ======================================================= Fixes ----- 1. Problem: For the cnic users would see in the kernel logs: "kcq abs(hw_prod(0) - sw_prod(65534)) > MAX_KCQ_IDX(2047)" Cause: The function was not taking into account the wrapping of the software and hardware producer indexes. Change: Recaculate the difference between the index with wrapping taken into account. Impact: cnic Enhancements ------------ 1. Change: Updated firmware to 5.0.0.j5 which increased the rxpq depth from 32 to 256 to enhance the performance on systems without flow control. Impact: 5709. bnx2 v1.9.26c (Sep 17, 2009) ======================================================= Enhancements ------------ 1. Change: Cleanup the VMware NetQueue code. Eliminate unneeded RX flush routine, fix the number of queues to be the same on 1500 and 9000 MTU sized packets. Impact: bnx2 VMware NetQ. bnx2 v1.9.26b (Sep 14, 2009) ======================================================= Fixes ----- 1. Problem: VMware PSOD on MTU change Cause: MSI-X window was remapped to the beginning of the PCI config space. The driver would disable the bar space because the MSI-X window was remapped incorrectly. This would eventually cause a PSOD. Change: Before the chip reset, the driver would disable MSI-X, after the chip reset, MSI-X is re-enabled. Impact: VMware NetQueue bnx2 v1.9.25b (Aug 21, 2009) cnic v1.9.6 (Aug 21, 2009) ======================================================= Fixes ----- 1. Problem: (CQ 43182/43252) Compile error on RHEL4 Cause: struct mutex not defined on older kernels. Change: Wrap cnic_lock mutex structure and code with #ifdef BCM_CNIC. Impact: None. 2. Problem: Unloading cnic after ifdown may crash. Cause: cnic unregisters with bnx2/bnx2x twice. Change: Fixed logic to unregister only once. Impact: None. bnx2 v1.9.24b (Aug 13, 2009) cnic v1.9.6 (Aug 13, 2009) ======================================================= Fixes ----- 1. Problem: (CQ 42778) Kernel occasionally panics when enabling jumbo frames. Cause: If the driver is unable to allocate memory for the buffers, the device is not properly shutdown. Change: Added logic to shutdown device if unable to allocate buffers and complete the setup of the device. Impact: bnx2, changing MTU and ring sizes. Enhancements ------------ 1. Change: Updated firmware to 5.0.0.j3 for better small packet rx performance. Firmware also fixes header digest error during I/O. Impact: All bnx2 devices. bnx2 v1.9.23b (July 29, 2009) cnic v1.9.5 (July 29, 2009) ========================================================== Fixes ----- 1. Problem: (CQ 42723) KCQ not resetting to 0 problem Cause: RCU deadlock during shutdown Change: Move the bnx2_register_cnic() call out of the above sequence. Instead, register and unregister during NETDEV_UP/NETDEV_DOWN events. Change all slow path RCU read locks to mutex. In cnic, we also use reference counting to protect some slow paths. Impact: bnx2 iSCSI, bnx2x iSCSI bnx2 v1.9.22b (July 23, 2009) cnic v1.9.4 (July 23, 2009) ========================================================== Enhancements ------------ 1. Change: If a TX timeout occurs, there could be the possiblity that the chip is hung. By printing chip state into the kernel ring buffer, it will be easier to determine this. Impact: bnx2 iSCSI. 2. Change: The bnx2 firmware should always be matched with the proper bnx2 driver. The bnx2 firmware version string are now printed. It will be easier to identify the running firmware. Impact: bnx2 3. Change: When a TX timeout occurs and the chip is reset, the ability to debug the chip further is lost. This is because the chip state information is lost during the reset. The users have a choice to prevent the chip reset. Impact: bnx2 4. Change: Add a check to see if there was a KCQ overflow was in the bnx2x firmware. Now this check has been moved to the CNIC so that the driver could control the cleanup/recovery. Impact: bnx2 iSCSI. bnx2 v1.9.21b (July 16, 2009) ========================================================== Enhancements ------------ 1. Change: Updated firmware to 5.0.0.j2 to fix remote reset problem Impact: bnx2 iSCSI. 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. ============================ R E L E A S E N O T E S ============================ Broadcom BCM57710/BCM57711/BCM57711E/BCM57712 10 GigE VBD For Linux Copyright (c) 2007-2011 Broadcom Corporation All rights reserved. Version 1.62.15 (Feb 10, 2011) ============================== Fixes ----- 1. Problem: (CQ52536) Extra bytes might be added in the middle of the payload when a packet with padding after the TCP payload is received, while TPA is enabled. Cause: Firmware wrongly places padding bytes on RX SGEs. Change: (In FW 6.2.7) Fixed relevant firmware flow. Impact: The problem will be exposed only in very rare case in which a device on the network pads the Ethernet packet to longer than 72 bytes. Enhancements ------------ 1. Request: Use FW 6.2.7 Change: As requested. Version 1.62.14 (Feb 03, 2011) ============================== Fixes ----- 1. Problem: (CQ52402) In NPAR mode setting some speed via ethtool -s causes device to hang. Cause: FW configured with illegal configuration. Change: Limit allowed speed to range from 1%-100% of actual line speed. Impact: NPAR mode only. Version 1.62.13 (Feb 01, 2011) ============================== Fixes ----- 1. Problem: (CQ52656) In NPAR mode "ethtool -t ethX" does not report error on some partitions while no link. Cause: Link is not tested for non PMF partitions. Change: Allow link testing for non PMF partitions. Impact: NPAR mode only. 2. Problem: Unresolved bnx2x_invalidate_uc_list symbol on kernels below 2.6.23. Cause: Missing #if block preventing the usage of the above function while it's only implemented for kernels above 2.6.23 (including). Change: Added a missing #if block. Impact: Kernels below 2.6.23. Version 1.62.12 (Feb 01, 2011) ============================== Fixes ----- 1. Problem: (CQ52402) In NPAR mode "ethtool -s ethX speed 0" causes device to hang. Cause: FW configured with illegal configuration. Change: Do not allow speed 0. Impact: NPAR mode only. Enhancements ------------ 1. Request: Add support for dev_uc_add()/dev_mc_add(). Change: As requested. Version 1.62.11 (Jan 24, 2011) ============================== Fixes ----- 1. Problem: ifup returned error when device has illegal iSCSI mac. Cause: FCoE/iSCSI features were enabled even with illegal mac. Change: Disable the features if mac is illegal. Impact: 57712 SF mode. 2. Problem: CQ52212 8073PHY intermittently exhibits signs of disconnected devices upon loading/unloading. Cause: Microcontroller and Driver both controlling Xaui Low Power Mode. Change: Remove Driver control of Xaui Low Power Mode. Impact: 8073 PHY based boards. 3. Problem: CQ51624 PHY TXONOFF_PWRDN_DIS bit set to "1" instead of default 0 to prevent reset & power down of PHY. Cause: When GPIO controls TX Laser on 8727 and 8706, turning off laser will put PHY in low power mode. Change: Set TXONOFF_PWRDN_DIS accordingly. Impact: 8727PHY and 8706PHY based boards with TX laser controlled by GPIO_0. 4. Problem: Potential wrong PHY initialization when loading the first function on a port, after another function from this port was unloaded. Cause: In this case, the driver won't lock PHY access, which may cause MDC/MDIO collision. Change: Initialize the lock flag on the init driver stage, instead of the common and port init stage. Impact: Multi-function mode. Version 1.62.10 (Jan 17, 2011) ============================== Fixes ----- 1. Problem: "Statistics sequence counter out of order" strom assert. Cause: Race between the LINK_UP event handler and the timer which both are calling the bnx2x_storm_stats_post() thus sending consequent statistics ramrods without waiting for a completion of the first. Therefore FW will read the ramrod data of the second ramrod while handling the first one, which will cause the above assert. Change: Prevent the above race. 2. Problem: (FCoE) There was no licensing for FCoE. Cause: Missing FCoE licensing handling code. Change: Added the missing code. Impact: FCoE only. 3. Problem: The module date was not updated since 2010/08/01. Cause: The date was moved to another source file which did not updated it automatically on submission to the version control system. Change: Update the file properties so the version control system will update the date automatically. Impact: Introduced in 1.60.32. 4. Problem: Compilation error on some older vanilla kernels. Cause: Improperly handling gso v6 feature by compat. Change: Fix handling in bnx2x_compat.h. Impact: Introduced in 1.62.06. 5. Problem: ESX - When there's a single netqueue (num_queues=2), it can never be allocated for RX. Cause: When there's a single netqueue it is set aside as an LRO queue, but ESX does not put any queues in the LRO pool. Change: Set aside queues 2 and 4 for LRO instead of 1 and 3. Impact: ESX only. 6. Problem: (CQ52276) Unable to bring up device when iSCSI is not allowed. Cause: Driver tried to enable feature, but failed due to illegal mac. Change: Disable the feature if not allowed. Impact: 57712 SF mode. Introduced in 1.62.09. Version 1.62.09 (Jan 03, 2011) ============================== Fixes ----- 1. Problem: All multicast packets were arriving to all L2 clients. Cause: All queues were configured to accept all multicast packets in NPAR. Change: Fix Rx mode configuration code in bnx2x driver. Impact: NPAR only. Introduced in 1.60.09. 2. Problem: (CQ51731) Kernel paniced after "ethtool -d" test. Cause: Registers dump caused MCP SPAD parity error, which caused "close the gates" flow in HW, which in line caused undefined behaviour of the whole system. Change: Prevent HW blocks parity attentions during registers dump routine. 3. Problem: ESX - CNIC 'change MTU' would fail or result in a PSOD. Cause: Mismatched module IDs for request/free IRQ. Change: Masquerade as CNIC when cnic ops are called form bnx2x. Impact: ESX only. 4. Problem: Possible sending of a spurious MSI-X message after MSI-X is disabled. Cause: MSI-X configuration wasn't properly cleared when MSI-X was disabled. Change: Properly clear MSI-X configuration. Impact: Introduced in 1.60.28. 5. Problem: (NPAR, FCoE) FCoE MAC wasn't read in NPAR mode. Cause: Missing code. Change: Add the missing code. Impact: FCoE in NPAR mode only. 6. Problem: (iSCSI) If iSCSI offload is requested in switch dependent MF mode zero MAC would be configured for iSCSI L2 queue. Cause: Bug in a driver. Change: Prevent the configuration of an illegal MAC. Impact: iSCSI in switch dependent mode only. Enhancements ------------ 1. Request: (CQ51889) Add Common Mode Sense (CMS) enable/disable functionality. Change: Adding field 156 to nvm cfg, as well as support in eLink. Impact: NVM config and Common Mode Sense capable PHYs. 2. Request: Add dcbnl implementation supporting the FW DCBX engine. Change: As requested. Impact: 57712 only. Version 1.62.08 (Dec 20, 2010) ============================== Fixes ----- 1. Problem: (CQ51134) NC-SI functionality dependant on Port initialization Sequence Cause: When the driver loads the first port, some PHYs require reset and loading their microcode on both ports. In case NCSI was enabled on the other port, the traffic was stopped since PHY was reset Change: Load PHY microcode during common init, only if the PHY microcode wasn't loaded Impact: Requires bootcode 6.2.9 to resolve this problem PHY firmware upgrade will require reboot from now on 2. Request: Increase RX ring size to 512 when using Jumbo Frames Change: As requested Impact: ESX only 3. Request: Enable OOO by default and have the OOO ring match in size with a RX ring Change: As requested Impact: ESX only 4. Problem: (CQ51367) - BCM84823/84833 activity LED blinks at lower rate on 10G link Cause: The activity LED control registers are not configured right Change: Enabled activity LED stretch_en bit. Made activity LED blink on source Impact: BCM57712 + BCM84823/84833 based boards 5. Problem: (CQ51413) Driver crashed, when number of queues was set to a value smaller than a default one due to SAFC configuration Cause: Broken connection between an SAFC initialization and a memory allocation code Change: Fixed the above flaw Impact: SAFC only. Introduced in 1.62.06 Enhancements ------------ 1. Request: CQ51710 - Disable CMS (common mode sense) feature in 84823 PHY, as this reduces power consumption and allows a better 10G link stability Change: Clear the CMS bit in PHY register in PHY configuration routine Impact: BCM84823B based boards 2. Request: Re-introduce the dropless_fc vmkernel module parameter Change: As requested Impact: ESX only 3. Request: BCM8727 Link LED not funtioning properly during BACS LED test Change: Not blinking correct link light Impact: BCM57712 + BCM8727 based boards Version 1.62.07 (Dec 15, 2010) ============================== Fixes ----- 1. Problem: (iSCSI, CQ50571) TCP connection erroneously closed Cause: TCP window was closed due to out-of-order state, and initiator failed to send a window update when exiting out-of-order state Change: Fixed in FW 6.2.5 Impact: Introduced in 1.60.00 2. Problem: (CQ51171) One CX4 blade design does not autoneg to link up at 10G with a particular switch. Cause: The autoneg was not enabled due to incorrect setting at the XGXS AER Change: Update the XGXS AER to devad 7 to allow proper configuration of autoneg Impact: 57712 only 3. Problem: (iSCSI, CQ50380) TCP window was closed due to out-of-order state, and initiator failed to send a window update when exiting out-of-order state Cause: Malformed message is sent by FW from Tstrom to Xstorm Change: Fixed in FW 6.2.6 Impact: iSCSI OOO only. Introduced in 1.60.15 Enhancements ------------ 1. Request: Use FW 6.2.6 Change: As requested 2. Request: (CQ48296), (CQ51540) Add support for new BCM8727 boards Change: As requested Impact: BCM8727 based boards Version 1.62.06 (Dec 2, 2010) ============================== Fixes ----- 1. Problem: (CQ50681) Device hangs on up/down test when PFC is enabled Cause: If the device is going down while in PFC Xoff it will not set it to Xon and therefore, on the next load it will remain in constant Xoff Change: Force PFC Xon when enabling the device Impact: 57712 only 2. Problem: ethtool -t failed on single port boards and 57712 (nvram test) Cause: Erroneous access to unexistent port info Fix: remove the access 3. Problem: PCI bus error when trying to transmit LSO packets from 57712 on Big Endian machines Cause: Parsing BD parsing_data field was malformed when running 57712 on Big Endian machines Fix: Fix the code handling the parsing_data field of a parsing BD for 57712 Impact: Introduced in 1.53.0a, 57712 only 4. Problem: Kernel panic when receiving in none-MSI-X interrupt mode Cause: Indirection table was configured with none-existing queues when MSI-X was not attainable and RSS queues set was cut to a single queue. The reason for the above was an improper location of SAFC initialization code and usage of the SAFC parameters for the indirection table configuration despite the fact that an SAFC MF mode was not requested/not available Fix: Don't use SAFC parameters unless SAFC MF mode is requested Impact: Introduced in 1.60.30 5. Problem: (CQ48350, CQ49176, CQ50911, CQ51200) BCM57712 not linking up after system waked up Cause: PHY firmware does not have enough time to download in 8073 and 8727 common init Fix: Poll until PHY firmware is downloaded, and then timeout at 300ms Impact: 8727 and 8073 PHYs Version 1.62.05 (Nov 26, 2010) ============================== Fixes ----- 1. Problem: A possible dead-lock situation between sch_direct_xmit() and bnx2x_run_loopback() (calling bnx2x_tx_int()) on netif_tx_lock() Cause: Both functions above take a netif_tx_lock() but bnx2x_run_loopback() is called in a syscall context and takes a lock without disabling BHes on a local CPU, which may cause a dead lock as long as sch_direct_xmit() is called in a soft_irq() context Fix: Explicitly disable local BHes in bnx2x_run_loopback() to prevent a mentioned above dead-lock situation Impact: Introduced in 1.60.25 Enhancements ------------ 1. Request: Integrate VLAN enhancements from the net-next Change: As requested 2. Request: (NPAR) Restore set speed ethtool interface to use absolute speed instead of percents Change: As requested Impact: NPAR mode only, introduced in 1.62.04 Version 1.62.04 (Nov 17, 2010) ============================== Fixes ----- 1. Problem: Duplex status may be displayed incorrect Cause: Missing duplex configuration in some external PHYs when link goes up Change: Set duplex to FULL when 10G link comes up 2. Problem: 57712 incorrect PCIX interface speed reported to user Cause: Improper print Change: Fix print Impact: 57712 only 3. Problem: (FCoE, NPAR) FIP mac is not configured in NPAR mode Cause: FIP configured for SF only Change: Add NPAR mode Impact: 57712 NPAR mode only 4. Problem: (CQ51015) nx2 Package 6.2.5 has error when compile on RH6.0 Cause: cnic_if.h included before if_vlan.h Change: Move if_vlan.h before cnic_if.h Impact: Introduced in 1.62.01 5. Problem: Compilation failed when kernel configured without 8021Q Cause: Improper #ifdef structure Change: Fix the #ifdef structure to suit the configuration Impact: Introduced in 1.62.01 6. Problem: (CQ50672) Chip hangs when running iSCSI traffic on one function and toggling load/unload on the other function Cause: Firmware initialized the CAM incorrectly, causing iSCSI out of order client to receive an unexpected packet Change: (Fixed in FW 6.2.3) Fixed firmware flow Impact: Introduced in 1.60.01, BCM57710 only 7. Problem: (CQ50748) MinBW not functioning as expected in certain NPAR configuration Cause: MinBW algorithm coefficients were not calculated properly and cause the algorithm to not function well in extreme cases Change: Re-calculate the algorithm coefficients to allow granularity of 1:100 Impact: Affects NPAR mode in which MAX bandwidth can be configured to over-subscription 6. Problem: Compilation failed on RH5.6 Cause: Redefinition of backported function Change: Remove the definition from bnx2x code for RH5.6 Enhancements ------------ 1. Request: Use FW 6.2.3 Change: As requested 2. Request: (CQ51065) NPAR mode: change Max BW from units of "intervals of [100Mbps]" to units of "% of physical link speed" Change: As requested Impact: NPAR mode only Version 1.62.03 (Nov 10, 2010) ============================== Fixes ----- 1. Problem: (CQ50559) Build fails with RHEL6 kernel Cause: Redefinition of backported function Change: Remove the definition for RH kernels Impact: Introduced in 1.62.01 2. Problem: Compilation failed on 2.6.36 kernels Cause: Improper conditions in bnx2x_compat.h layer Change: Fix condition for functions' definitions 3. Problem: (CQ50903) Driver prints some debug info when dcbx enabled Cause: Debug info printed with error dbg level Change: Remove the prints 4. Problem: False bug-check when trying to set speed in NPAR mode when link is down Cause: The FW should be configured only after the physical link is up Change: Do not configure the FW while link is down with the new speed settings Impact: 57712 NPAR mode only 5. Problem: (iSCSI) (CQ50380) Offloaded connection eventually closed Cause: TCP window is closed and initiator cannot properly process incoming in-order packets Change: (in FW 6.2.2) Fixed firmware flow Impact: Introduced in 1.60.01 6. Problem: (iSCSI) in NPAR mode devices have incorrect iscsi mac address Cause: Mac address was taken from port configuration Change: Take the mac addresses from NPAR configuration Enhancements ------------ 1. Request: (CQ49959) Request to log event log in case the PHY does not come out of reset Change: As requested 2. Request: Use FW 6.2.2 Change: As requested Version 1.62.02 (Nov 3, 2010) ============================== Fixes ----- 1. Problem: (CQ49515 & CQ50024) Occasionally losing link on force 10/100 connections on BCM84823 based boards Cause: Not waiting for GPHY to complete reset Change: Add 50ms delay after 84823 PHY comes out of reset Impact: BCM84823 based boards 2. Problem: (CQ50623) MF is not functional on single CPU systems Cause: Improper FW configuration when only one queue configured Change: Allow FW configuration when only one queue configured Impact: Introduced in 1.62.01 3. Problem: Possible race between the netdev->open() and the last part of pci_dev->probe() that configures the interrupt mode and adds NAPIs Cause: Improper operations order: netdev_register() should be called after driver is completely configured Change: Move all driver initializations before the netdev_register() call Impact: Introduced in 1.60.28 Enhancements ------------ 1. Request: (CQ50053) Add "Dual Media Support" section to README/Man pages Change: As requested Version 1.62.01 (Oct 20, 2010) ============================== Fixes ----- 1. Problem: (CQ49888) Can't pass VLAN Tagged packets when CAP_VLAN_RX & TX are disabled Cause: VLAN HW acceleration was performed regardless the value of the runtime NETIF_F_HW_VLAN_RX/NETIF_F_HW_VLAN_TX netdev capabilities Change: Consider NETIF_F_HW_VLAN_RX/NETIF_F_HW_VLAN_TX netdev capabilities when enabling or disabling VLAN HW acceleration capability Impact: ESX only. Introduced in 1.60.11 2. Problem: (CQ49375) VLAN tag was stripped from the packet when there were no VLAN interfaces configured Cause: HW VLAN stripping was always configured Change: Don't configure HW VLAN stripping if there are no VLAN interfaces configured for the current device 3. Problem: iSCSI OOO didn't work over VLAN Cause: Inconsistent Client configuration and fast path functions implementation for OOO Client in regard to HW VLAN acceleration Change: Don't assume HW VLAN acceleration in fast path iSCSI OOO functions Impact: iSCSI OOO only 4. Problem: (PR609549) vsish pNic general statistics always showed 0 Cause: The incorrect stats struct was given to the vmkernel. The private data stats struct was given to the vmkernel rather then the stats struct in the net_device struct Change: When the vmkernel is requesting for the stats, return the stats struct used by ESX 4.x (netdev->stats) Impact: ESX4.x only 5. Problem: (CQ49886) MC Assert on 57710 with more than 4 queues Cause: ESX does not align physical memory to requested size. Thus ILT pages do not adhere to 57710 alignment requirements Change: Allocate extra memory and manually align CDU ILT pages. Define ILT pages for all other clients to be 4K Impact: ESX only. Introduced in 1.60.01 6. Problem: (ESX) LRO (TPA) not enabled for 4.1 Cause: __NO_TPA__ CFLAG defined for all ESX releases Change: Define __NO_TPA__ only for ESX releases below 4.0 Impact: ESX only. Introduced in 1.60.01 7. Problem: On ESX 4.1, not all 8 queues are exposed for BCM57711 Cause: When reducing the number of queues for ESX 4.0 ESX 4.1 was also effected Change: At compile time, allow for 8 queues for ESX 4.1 and 4 queues for ESX 4.0 Impact: ESX only. Introduced in 1.60.43 8. Problem: (CQ50111) Unload/Load driver in MSI mode causes kernel warning Cause: pci_enable_msi() called during open() Change: move pci_enable_msi() to init_one() Impact: Introduced in 1.60.28 9. Problem: (CQ50208) ESX4.0/4.1 pNic statistics are not updated Cause: Using a local statistics structure for ESX instead of the net_device statistics structure Change: Use the correct statistics structure for ESX Impact: ESX only 10. Problem: (CQ50033) Link remains down on the PMF despite the DCC "link up" indication Cause: DCC event handler wasn't handling the event for the PMF Change: Fix the DCC event handler code Impact: 57711 and 57712 only 11. Problem: Link up event is not reported to the OS Cause: Inconsistent link report state handling Change: Change the link report state handling 12. Problem: (CQ50004, CQ50166) ESX4.1. TPA not working, netperf for LRO net-queues fail Cause: IP header offset is not computed correctly for ESX, as a result the IP header checksum is not fixed correctly Change: Correct the IP header offset computation Impact: ESX only 13. Problem: All traffic comes to RX queue 0 Cause: Missing RSS enablement code Change: Add missing code Impact: Introduced in 1.60.30 14. Problem: Xmit was stopping after a short time on the Flex-10 Cause: Wrong parsing of the MIN_MAX configuration in the SHMEM Change: Revert the parsing logic to what it was before 1.60.47 Impact: Introduced in 1.60.47 15. Problem: (ESX) Non LRO net-queues were still aggregating incoming TCP frames Cause: net-queues not reserved for LRO were not internally marked as such (tpa not disabled) Change: correctly disable tpa fpr such queues Impact: ESX only, Introduced in 1.60.48 16. Problem: (CQ50411) All traffic comes to RX queue 0 Cause: Missing RSS enablement code Change: Add missing code Impact: Introduced in 1.60.30 17. Problem: (ESX) Bad IP checksum for TPA packets over VLAN when VLAN acceleration is disabled Cause: IP header offset wasn't properly calculated in the case mentioned above Change: Don't move the IP header pointer in VLAN none-accelerated case as eth_header_len() has already taken it into an account Impact: ESX only 18. Problem: (CQ50080) Link up event is not reported to the OS Cause: Inconsistent link report state handling Change: Change the link report state handling Impact: Introduced in 1.60.47 19. Problem: (CQ49827, CQ49844) pNic Link/Unlink test fails when the pNic eventually fails to load Cause: During load skb allocation for L2 queues is stopped on the first failure. If this happens on the default queue before a minimal number of skbs were successfully allocated nic load fails Fix: Do not break upon first skb allocation failure. Fail only if after queues size allocation attempts not enough skbs were successfully allocated Impact: ESX only 20. Problem: (CQ49826) Wrong skb queue mapping passed to hard_xmit Cause: FCoE L2 queue is not disabled and is used by the stack Change: Disable FCoE L2 queue for E1x in general and all devices in ESX Impact: ESX only 21. Problem: (ESX) packets received on a net queue may arrive after its filters are removed Cause: Filter removal completion is not synchronized with the net-queue fast-path completions Change: Send a flush command for the net-queue after deleting the filter and before returning from the filter removal call-back Impact: ESX only 22. Problem: ethtool -S shows all possible queues including disabled queues such as FCoE or queues with no stats such as iSCSI OOO queues Cause: ethtool statistics call-backs iterate over all queues Change: Iterate only over L2 queues and FCoE queue if not disabled 23. Problem: (ESX, PR379952/PR405074) FW asserts on invalid value in a VLAN field in the start BD (xmit flow) Cause: Invalid calculation of the headers length and, as a result, invalid handling of packet dropping Change: Check that the headers are in the first BD only for the LSO packets. Properly calculate the headers length and drop the skb if it's illegal Impact: ESX only 24. Problem: (CQ49968) DMAE timeout on specific system during init Cause: The DMAE can take up to 200ms to complete on some systems Change: Update the DMAE timeout from 2ms to 200ms Enhancements ------------ 1. Request: Use FW 6.0.34 Change: As requested 2. Request: (CQ49997) Implement Bandwidth allocation for Nic partitioning mode Change: As requested Impact: 57712 only 3. Request: Properly calculate the LRO MSS value (needed for TCP delayed ACK handling) Change: As requested Version 1.60.43 (Sep 16, 2010) ============================== Fixes ----- 1. Problem: Performance regression on ESX4.x Cause: Tx ring was configured to have a smaller length than it was in IOVP driver Change: Configure Tx ring to have the same length as in IOVP driver Impact: ESX4.x only 2. Problem: (PR609549) vsish pNic general statistics always showed 0 Cause: The incorrect stats struct was updated. The private data stats struct was updated rather then the stats struct in the net_device struct Change: When updating the stats, update the stats struct used by ESX 4.x, the stats struct in the net_device struct Impact: ESX4.x only 3. Problem: (CQ49760) No link on 10Gbase-T PHY on some systems Cause: Not waiting until PHY has come out of reset Change: Poll on reset bit. Timeout after 1 second Impact: BCM84823 based boards 4. Problem: BCM8726 was not reset during common init Cause: GPIO assert should have been swap due to board design Change: Assert reset through the swapped GPIO port Impact: BCM8726 based boards Enhancements ------------ 1. Request: Optimize fast path performance Change: Optimized the branching in the bnx2x_rx_int() based on the fact that FP CQE will always have at least one of START or STOP flags set, so if not both bits are set and START bit is not set, then it's a STOP bit that is set Version 1.60.42 (Sep 13, 2010) ============================== Fixes ----- 1. Problem: (CQ49795) Link loss on port after multiple iterations of load-unload Cause: When link change occur, and at the same time the driver is unloaded, the NIG attention is left latched since it is used to be cleared only during link change event. This leads that following link change events are actually masked Change: Clear NIG latched attention during driver unload Impact: BCM84823 based boards Version 1.60.41 (Sep 8, 2010) ============================== Fixes ----- 1. Problem: (ESX) unload flow bails too early without properly releasing resources and resetting the HW Cause: Erroneous state validation causes early bail out form the unload flow Change: Fix the state validation condition Impact: (ESX only) Introduced in 1.60.40 2. Problem: (ESX) ethtool -t (self-test) causes PSOD Cause: Erroneous state validation causes early bail out form the unload flow. As a result napi is not disabled and the next load tries to re-enable the already enabled napi Change: Fix the state validation condition Impact: (ESX only) Version 1.60.40 (Sep 7, 2010) ============================== Fixes ----- 1. Problem: Possible corrupted fast-path state after nic load Cause: The fast-path structure is not zero'd during nic load Change: bzero the fast-path structure Impact: Introduced in 1.60.28 2. Problem: Accessing NULL pointer when debug printing queues stats and ooo rings are disabled Cause: the debug print loop iterates over all rx/tx queues instead of the strictly L2 queues. When ooo is disabled the print will access NULL pointers Change: Iterate over the L2 queues only (eth_queues) Impact: Introduced in 1.60.01 3. Problem: (CQ49299) HW stuck after 8 hours of heavy LSO traffic Cause: Firmware miscalculated SGL length of LSO packet with BDs larger than 64K, leading to erroneous HW command Change: (In FW 6.0.32) Fix calculation 4. Problem: Under low memory condition, on kernels below 2.6.24 and backported GRO infrastructure, when system not able to allocate all RSS queues, some RSS queues become unfunctional Cause: Misplaced preprocessor directives Change: Fix preprocessor directives Impact: Introduced in 1.60.27 Enhancements ------------ 1. Request: Use FW 6.0.33 Change: As requested Version 1.60.39 (Sep 2, 2010) ============================== Enhancements ------------ 1. Request: (CQ49671) Add capability to build against SuSE source RPMs Change: As requested Version 1.60.38 (Aug 31, 2010) ============================== Fixes ----- 1. Problem: Possible inconsistency in parity recovery flow in case of bogus usage of bnx2x_trylock_hw_lock() function Cause: Inconsistent error core returned (-EINVAL while function returns 'bool') Change: Return 'false' in case of an error Impact: Introduced in 1.60.01 2. Problem: (CQ49649) Dual Media: No 1Gb fiber link after changing driver speed property, when cable is connected Cause: Link interrupt is generated from NIG attention common for both phys on dual media board. The NIG status was set for both PHYs while it should have been done for the copper attention only Change: Set NIG attention according to the active PHY Impact: Dual media boards Version 1.60.37 (Aug 25, 2010) ============================== Fixes ----- 1. Problem: num_queues module parameter functionality was broken Cause: Improper initialization of the bp->num_queues Change: Properly initialize the bp->num_queues Impact: Introduced in 1.60.35 2. Problem: When ALL_MULTI rx mode was requested HW was configured to the PROMISC mode Cause: Missing `break' in a switch-case structure Change: Added a missing `break' Impact: Introduced in 1.60.01 3. Problem: (CQ49328) Failed to load an 57710 interface on ESX Cause: Initialization of a forwarding client failed Change: Don't configure iSCSI OOO by default when running on ESX (it's not supported on ESX at the moment) Impact: ESX only 4. Problem: Statistics counter may display inconsistent value Cause: Counting statistics directly into shared buffer Change: Use a private variable to fold rx_dropped value 5. Problem: HW Statistics collection through the DMAE broken on 57712 Cause: For 57712 the DMAE command needs to include the destination function. Change: Adjust the DMAE command to work on 57712 Impact: Introduced in 1.60.01 Version 1.60.36 (Aug 19, 2010) ============================== Fixes ----- 1. Problem: (CQ47494) VMs were unable to pass IPv6 traffic Cause: Default queue rx mode was not properly configured Change: Configure a default queue to always accept an unmatched unicast traffic and never configure it to accept all unicast traffic (even in a promiscuous mode). This fix will also properly resolve a packets duplication problem Impact: ESX only 2. Problem: (CQ49197) No link at 1Gb/2.5Gb on BCM8073 based boards Cause: CL37 BAM was enabled on all boards while it should be configurable Change: Disable CL37 BAM by default Impact: BCM8073 based boards. Introduced in 1.60.21 Version 1.60.35 (Aug 17, 2010) ============================== Fixes ----- 1. Problem: (CQ48954) Kernel panic when system is not able to allocate all MSIX vectors requested by driver Cause: Numbers of queues adjustment didn't count FW+OOO channels Change: Make the adjustment independent of active channels Impact: Introduced in 1.60.13 Enhancements ------------ 1. Request: (DCBX) Change ETS behavior when 100%-0% bandwidth allocation is received from no ETS configuration to 99%-1% bandwidth allocation Change: As requested Version 1.60.34 (Aug 12, 2010) ============================== Fixes ----- 1. Problem: Dual Media PHY 84823 activity and front panel LED's not functioning correctly. Also Diagnostic Mode LED's not firing correctly Cause: LED masks not set correctly Change: Changed LED masks, and added LED mode for Diagnostics Impact: Dual Media boards 2. Problem: (FCoE) (CQ49244) ABTS BA_ACC dropped due to F_CTL (LAST_SEQ bit) verification mismatch Cause: Detecting a protocol violation in ABTS BA_ACC frame from target (target protocol violation) Change: (in FW 6.0.31) No need to verify LAST_SEQ bit in F_CTL field 3. Problem: (CQ49296) - Dual media: Copper link would not come up upon removal of fiber media when serdes priority and 1GB full is set Cause: When Fiber link is set to 1G, its XAUI will not automaticity power down like it does in 10G. This cause the BCM84823 to detect false link from the BCM8727 even if Fiber is not connected. This ends up in not linking the copper side Change: When link is configured to 1G, power down the BCM8727 XAUI side and when link comes up, power it up Impact: Dual Media boards 4. Problem: (CQ49137) -Dual Media: Ethtool fail - Link_test (online) on TP every few iterations Cause: Link detection may take very long in case of copper, while the wait up time was limit to 10sec only Change: Increase link wait up time in link test to 14sec Impact: Dual Media boards Version 1.60.33 (Aug 11, 2010) ============================== Fixes ----- 1. Problem: (CQ48584) Intermitted link issue and unexpected behavior using boards with external PHYs Cause: PHY lock indication was missing on second port, so there was no locking between the ports. When two ports tried to read/write from the PHY, they the instruction may collide. Change: Set PHY lock indication of both ports Impact: 57710/57711 on boards with external PHY; Introduced in 1.50.0 2. Problem: (CQ49219) Dual media: Copper link does not come up once 10gbaseT priority is set in driver property Cause: Link indication from both Copper and Fiber Change: Ignore link indication from Fiber in case Copper is selected Impact: Dual-media boards; Introduced in 1.60.32 Version 1.60.32 (Aug 5, 2010) ============================== Fixes ----- 1. Problem: (CQ48747) Dual media: fiber port does not link at 1gig speed Cause: The link speed in the pass-through phy (84823) was set to 10G Fix: Set the pass-through speed to 1G as well when fiber is set to 1G Impact: Dual-Media boards 2. Problem: (CQ49143) Dual Media: First attempt to change from default TP to FIBRE using ethtool does not work. Cause: When changing port type from TP to FIBRE the command failed since FIBRE doesn't support autoneg, yet the port type was changed. Fix: When ethtool command fail, do not change port type Impact: Dual-Media boards 3. Problem: Compilation error on kernels 2.6.34 and later Cause: netdev_name() defined by both kernel and driver Fix: Fix compat.h for these kernels 4. Problem: 84823 PHY not showing correct Link LED's. Cause: Incorrectly setting LED Masks Fix: Eliminated offending branch in code Impact: Introduced in 1.60.24 5. Problem: (CQ49137) ethtool -t test fails in dual-media boards Cause: Link wasn't tested correctly depending on the media configuration Change: Test link according to media configuration Impact: Dual-Media boards 6. Problem: (CQ49004) Dual Media: Switch show link on both media simultaneously. Cause: Not disabling TX on non-active port. Change: In case link is up in non SFP+, disable the SFP+ TX laser. Impact: Dual-Media boards 7. Problem: On BCM8727 based boards, when link speed is changed from 1G to 10G, PCS may be halted Cause: Restoring 10G link setting was done according to old PHY microcode Change: Restore default 10G link setting according to new microcode Impact: BCM8727 based boards Version 1.60.30 (Jul 29, 2010) ============================== Fixes ----- 1. Problem: (CQ47855) Link test fails under Linux using ethtool Cause: In case a MAC test followed by link test, the NIG attention might be cleared while ISR was already triggered due to NIG attention. This led to declaring the MAC test as failed since there's actually no link in this case Fix: In case NIG interrupt mask is cleared during interrupt handling, do not execute link status update routine 2. Problem: (CQ49067) Compilation failed on kernels 2.6.23 - 2.6.27 Cause: Wrong assumption in #includes order, caused BNX2X_MULTI_QUEUE to be defined on these kernels Fix: Remove the assumption Impact: Introduced in 1.60.14 Enhancements ------------ 1. Request: Support HW Rx hash generation for a single queue configuration Change: As requested Version 1.60.29 (Jul 21, 2010) ============================== Fixes ----- 1. Problem: (CQ48770) When working with rate-limiting in 57711/2 with jumbo frames, the rate is half of what configured Cause: Firmware miscalculated the amount of bytes transmitted Fix: (In FW 6.0.30) Fixed the calculation Impact: Introduced in 1.60.16 (FW 6.0.20) 2. Problem: FW XSTORM assert during server reboot test Cause: There were two statistics ramrods sent with the same statistics counter. There was a race condition in the bnx2x driver that allowed this situation Fix: Protect statistics ramrod sending code and statistics counter update with the spin lock Enhancements ------------ 1. Request: Use FW 6.0.30 Change: As requested 2. Request: Rearrange LLH memory organization Change: Allow 16 MACs in the memory; do not set FCoE MACs in LLH Impact: Switch-Independent mode only Version 1.60.28 (Jul 14, 2010) ============================== Fixes ----- 1. Problem: Possible crash during load/unload of one function, if more functions are loaded. Cause: Statistics ramrod of one function might override data of other functions Fix: (In FW 6.0.29) Fixed statistics ramrod Impact: Introduced in 1.60.07 (FW 6.0.5) 2. Problem: Port detection feature(ethtool -p) for dual-media is not working Cause: BCM8727 LED needs to be set via the PHY, and not the MAC Fix: Set BCM8727 LED via PHY Impact: Dual-Media boards 3. Problem: ethtool -s ethX speed YYY does not work properly Cause: Forcing port configuration every call to ethtool -s Fix: Do not change port configuration if not requested Impact: Introduced in 1.60.27 4. Problem: Divide by 0 in driver code, after disabling coalescing via ethtool Cause: Conversion from usec to interrupt per sec done without check for zero Fix: Check for zero in conversion Impact: Introduced in 1.60.26 5. Problem: (CQ48787) ethtool -t fails in Switch-Independent mode after bringing up higher functions (4,5,6,7) Cause: Improper mac placement in NIG block Fix: Fixed address calculation Impact: Switch-Independent mode only Enhancements ------------ 1. Request: Modify Dual-media look & feel such that ethtool gets and sets the configuration of the active PHY only. Active PHY is the PHY which linked up, or in case of link down, according to the port selection Change: As requested 2. Request: Use FW 6.0.29 Change: As requested 3. Request: Don't call for pci_disable_msix() every time bnx2x_nic_unload() is called Change: Move pci_enable_msi/msix() to pcidev->probe() callback 4. Request: (ESX) Call for netif_napi_add() before netdev->open() Change: As requested. This change is relevant for all platforms 5. Request: Support for ethtool_cmd.speed_hi field Change: As requested Version 1.60.27 (Jul 07, 2010) ============================== Fixes ----- 1. Problem: (CQ48202) Under low memory condition, rx stop functioning during load/unload test Cause: Some queue may be not fully populated, under low memory condition, which may cause FW to drop packets for this queue Fix: Change memory allocation scheme in order to avoid this situation 2. Problem: Link lost every other time when driver is brought up. Cause: When the PHY swap parameter ('nvm cfg' option 124) is set, the PHY's swap everytime the link is brought up. Change: Instead of storing the PHY order, we calculate it fresh everytime. Impact: Dual-media boards. Enhancements ------------ 1. Request: Return an error if bnx2x_set_flags() is called for unsupported flags Change: As requested 2. Request: Don't collect statistics if requested so according to edebug-driver interface (edebug_driver_if field in shmem2 region) Change: As requested 3. Request: Add support to bnx2x to extract Toeplitz hash out of the receive descriptor for use in skb->rxhash Change: As requested Impact: Kernel 2.6.35 and newer 4. Request: Add ethtool port selection for dual media Change: As requested Impact: Dual media boards Version 1.60.26 (Jun 30, 2010) ============================== Fixes ----- 1. Problem: Incorrect LED behavior on dual-media platform Cause: The LED settings are used to control GPIO in favor of over-current detection Fix: On NOC (No-OverCurrent) flavor, configure the GPIOs to reflect LED behavior rather than unnecessary over-current indication Impact: BCM8727 based boards 2. Problem: Possible deadlock on bp->stat_sm_lock spinlock Cause: Inappropriate locking function was used for protecting a resource accessed by workqueue and timer: used spin_lock()/spin_unlock() while should be spin_lock_bh()/spi_unlock_bh() Fix: Use an appropriate locking API: spin_lock_bh()/spin_unlokc_bh() Impact: Introduced in 1.60.22 3. Problem: Possible crash loading cnic if iSCSI OOO has been disabled in a bnx2x Cause: cnic was unaware of the fact that iSCSI OOO may be disabled in the bnx2x Fix: Add an appropriate bit in a cnic_eth_dev->drv_state and set it if iSCSI OOO is disabled in the bnx2x. This is done in a bnx2x_cnic_probe2() Impact: CNIC only 4. Problem: Interrupt coalescing was disabled in the chip Cause: Coalescing was erroneously disabled by bnx2x by default Fix: Properly configure coalescing Impact: Introduced in 1.60.11 Enhancements ------------ 1. Request: Fit Dual media selection to the new scheme Change: As requested 2. Request: Enable to set the GPIO which controls the external PHY reset (through nvm cfg 129) Change: As requested Impact: BCM8727 based boards Version 1.60.25 (Jun 23, 2010) ============================== Fixes ----- 1. Problem: Link down when using specific DACs (Direct Attached Cables) Cause: Some DAC's EEPROM do not respond at 400Khz speed Fix: Set 2-wire transfer rate of SFP+ module EEPROM to 100Khz Impact: BCM8727 based boards 2. Problem: (FCoE) (CQ48021) RESET_LUN operation failed due to error detection Cause: Detecting a protocol violation in response frame from target (target protocol violation) Fix: (In FW 6.0.28) Mask the error reporting Impact: FCoE only 3. Problem: (FCoE) 10% performance degradation Cause: Read queue used by firmware did not have enough credits Fix: (In FW 6.0.28) Change the read queue used by firmware Impact: Introduced in 1.60.24 (FW 6.0.27) 4. Problem: (FCoE) (CQ48403) Target does not handle incoming FCP_DATA Cause: Increasing SEQ_CNT is not supported by target Fix: (In FW 6.0.28) Reset the SEQ_CNT back to zero when transmitting new FCP_DATA frame Impact: FCoE only 5. Problem: There was a "timeout waiting for queue[0]" message in a syslog when running self-test (ethtool -t ethX) on 57712 Cause: Unlike HC IGU won't generate an interrupt for status block updates that have been performed while interrupts disabled thus Tx work generated by loopback test will never be handled Fix: Call for bnx2x_tx_int() from inside the loopback test for chips with IGU (57712 and newer) Impact: 57712 only 6. Problem: (CQ48284) up-down test on port 1 causes traffic to stop on port 0 Cause: Improper cleanup of HC and IGU blocks during function init Fix: Fix HC block cleanup, remove unnecessary IGU clean-up Impact: Introduced in 1.60.15 Enhancements ------------ 1. Request: (CQ48374) Add a module parameter to disable iSCSI OOO Change: As requested: added a disable_iscsi_ooo module parameter, which is present if BCM_CNIC is defined, otherwise iSCSI OOO is not enabled anyway 2. Request: (iSCSI) Add counters for iSCSI out-of-order events Change: As requested (counters can be read from RAM through GRC) (In FW 6.0.28) 3. Request: Use FW 6.0.28 Change: As requested Version 1.60.24 (Jun 16, 2010) ============================== Fixes ----- 1. Problem: (iSCSI) (CQ42399) Unable to run I/Os greater than 1500 bytes with initiator MTU set to 9000 and target MTU set to 1500 Cause: Timestamp option was not considered in MSS calculation Fix: (in FW 6.0.27) Fix mss calculation when timestamp option is present Impact: iSCSI only 2. Problem: (iSCSI) (CQ46648) Connection closure tests fail Cause: Incorrect FIN max retransmit count Fix: (in FW 6.0.27) Fix FIN max retransmit count Impact: iSCSI only 3. Problem: (FCoE) Address calculation of task-context in Ustorm could be wrong Cause: Address calculation considered an argument twice Fix: (in FW 6.0.27) Fix calculation 4. Problem: (FCoE) Ustorm RAM read/update could be wrong during event generation Cause: Confusion between addresses while accessing RAM databases Fix: (in FW 6.0.27) Use appropriate address for each specific database 5. Problem: (FCoE) ABTS local-completion mechanism did not handled error if error was detected on ABTS BA_ACC Cause: Not handling error caused an assert Fix: (in FW 6.0.27) Handle error by overwriting RX state. Cleanup shall follow to clean the task 6. Problem: (FCoE) Writing to host memory from Tstorm could be corrupted Cause: Using the same write VQ for Tstorm and Cstorm Fix: (in FW 6.0.27) Using the write VQ belongs to Tstorm only 7. Problem: bnx2x wouldn't properly function with 2.6.29 kernel Cause: bnx2x used new netdev->netdev_ops interface starting from 2.6.30 and not from 2.6.29 kernel as should be Fix: Use new netdev_ops interface starting from 2.6.29 kernel Impact: 2.6.29 kernel only Enhancements ------------ 1. Request: Align TCP advertised window in iSCSI (4b alignment) Change: As requested in FW 6.0.26 2. Request: Mask protocol violations error detected by chip on HP targets Change: Masking the specific checks (in FW 6.0.26) 3. Request: Dropping invalid packets which are received during the abort procedure Change: As requested (in FW 6.0.27) 4. Request: Use FW 6.0.27 Change: As requested Version 1.60.23 (Jun 10, 2010) ============================== Fixes ----- 1. Problem: Avahi daemon crashed after loading bnx2x.ko on kernels newer than 2.6.30 Cause: SAN MAC was added (dev_addr_add()) before netdev_register() call and call_netdevice_notifiers(NETDEV_CHANGEADDR, dev) has been called for a unregistered device Fix: Call dev_addr_add() after netdev_register() Impact: Introduced in 1.60.21 2. Problem: Link status notification appeared each time when DCBX negotiation received Cause: DCBX update handled as link update and notification printed Fix: Remove link notification from this flow Impact: DCBX only 3. Problem: (CQ47700) Can't get Link when forcing speed on 10/100M Cause: When link is not set to autoneg, MDIX wasn't enabled so link couldn't be established on direct cables Fix: Enable MDIX when autoneg is disabled Impact: BCM84823 based board 4. Problem: (CQ47671) "ethtool -p ethx" has no effect on the port's LED Cause: Specific PHY requires specific phy settings Fix: In case of copper phys, set LED registers directly in the PHY, rather than the NIG Impact: Copper boards 5. Problem: (iSCSI OOO) Producer of OOO Rx CQ ring was updated twice than was expected Cause: The mentioned producer was updated both in the bnx2x_cnic_get_ooo_cqe() and in the bnx2x_cnic_reuse_ooo_pkt() while is meant to be updated only in the bnx2x_cnic_reuse_ooo_pkt() Fix: Don't advance CQ ring producer in the bnx2x_cnic_get_ooo_cqe() Impact: iSCSI OOO only 6. Problem: (iSCSI) UIO Client wasn't able to handle IPv6 traffic Cause: UIO Client was not receiving multicast traffic because in non-promiscuous mode only one Client per function will receive multicast packets (leading RSS Client) Fix: Configure UIO Client's to accept all multicast packets Impact: iSCSI only 7. Problem: bnx2x would not compile on kernel 2.6.34 Cause: Improper dependency in bnx2x_compat.h Fix: Switch on netdev_hw_addr_list_for_each during bnx2x_mc_addr() definition 8. Problem: (CQ47854) Driver crash during FCoE test Cause: HW assert causes driver to halt Fix: Notify user with appropriate message without causing panic 9. Problem: Unable to bring up function 2-7 if MBA didn't configure MACs Cause: Check for MAC for both multi-function modes Fix: Check for OV tag in Switch-Dependent mode Impact: Introduced in 1.60.10 Enhancements ------------ 1. Request: Change PXP Write block initialization values in 57712 to help reduce latency Change: As requested Impact: 57712 only Version 1.60.22 (Jun 02, 2010) ============================== Fixes ----- 1. Problem: (CQ47662) "stats updated by DMAE but no MAC active" message while up/down test Cause: Race on update of statistics' state machine Fix: Use spinlock to protect the state machine 2. Problem: (CQ46918) Network bursts are larger than the configured connection on FLEX 10 Cause: Inaccurate bytes calculation at rate shaping mechanism Fix: Calculation was fixed in FW 6.0.25 3. Problem: (CQ47623,CQ46388,CQ47225,CQ47833) System hangs during iSCSI stress traffic Cause: Incorrect packet trimming lead to HW internal error Fix: Fixed packet trimming on LB port in FW 6.0.25 Impact: Introduced in 1.60.10 (FW 6.0.11) 4. Problem: All BRB interrupts are masked Cause: BRB interrupt mask is not initialized so reset value is used Fix: Initialize interrupt mask so only parser read length errors are masked Impact: In scenarios where BRB interrupts occur, indicate appropriate error information 5. Problem: (CQ47834, CQ47795, CQ47980) On low memory condition, driver caused kernel panic in bnx2x_ilt_mem_op() Cause: Unallocated memory access Fix: Validate non NULL pointers before access 6. Problem: (FCoE) FCoE traffic experiences a lot of drops Cause: Improper PFC configuration - mixed RX/TX COSes Fix: Fixed configuration Impact: Introduced in 1.60.21 Enhancements ------------ 1. Request: Don't limit the pause advertisement for large MTU Change: As requested Impact: 57712 and above 2. Request: Forward setup ramrod should complete on event ring and not as a tx_bd_cons increment Change: (in FW 6.0.25) as requested 3. Request: Use FW 6.0.25 Change: As requested 4. Request: Use terminate ramrod for non forwarding clients Change: As requested Version 1.60.21 (May 26, 2010) ============================== Fixes ----- 1. Problem: (iSCSI OOO) Kernel panicked in the skb_put() when called from bnx2x_cnic_reuse_ooo_pkt() Cause: Wrong skb function has been used for resetting the data length in the skb: skb_put(skb, -skb_headlen(skb)) Fix: Use the proper function: skb_trim(skb, 0) Impact: iSCSI OOO only 2. Problem: 57710 - Load/unload stress test caused chip to hang Cause: Disable of device in the middle of MSIX message caused deadlock in HC block Fix: Use PCI configuration space to avoid the deadlock Impact: 57710 only 3. Problem: iSCSI is not functional in switch independent mode Cause: iSCSI mac was not written into NIG memory Fix: Fix handling of MAC addreses in switch independent mode Impact: switch independent mode only 4. Problem: Changing MTU when CNIC is loaded was causing CFC error Cause: Setting CDU validation value for iSCSI L2 Client was done from bnx2x_register_cnic(), which is not called in change MTU flow Fix: Move setting of iSCSI L2 Client CDU validation value to bnx2x_cnic_sp_post() right before it sends iSCSI L2 Client SETUP ramrod Impact: iSCSI only 5. Problem: 57710/57711/57711E: unable to load device on machine with 16 (and more) CPUs Cause: Improper HC SB calculation Fix: Exclude none l2 contexts from HC SB calculation Impact: 57710/57711/57711E only; introduced on 1.60.13 Enhancements ------------ 1. Request: (FCoE) Set SAN MAC before ifup event in order to allow the bnx2fc properly configure WWN Change: Move the dev_addr_add() for a SAN MAC to pci_dev->probe() flow (bnx2x_init_one()) making it similar to networking MAC address configuration (it is configured in netdev at this stage as well). dev_addr_del() for a SAN MAC has been moved to bnx2x_remove_one() correspondingly Impact: FCoE only 2. Request: Lower the bnx2x skb memory footprint on ESX Change: Limit the OOO Rx ring to 40 BDs Impact: ESX only Version 1.60.20 (May 18, 2010) ============================== Fixes ----- 1. Problem: (iSCSI OOO) Call for bnx2x_cnic_reuse_ooo_pkt() was causing a kernel panic Cause: There was a wrong fp picked in bnx2x_cnic_reuse_ooo_pkt() (fwd instead of ooo) Fix: Pick the right fp Impact: iSCSI OOO only 2. Problem: (FCoE)(CQ47674) Chip hangs during destroy FCoE connection flow Cause: FCoE reordering mechanism was corrupted during disable connection flow Fix: (Fixed in FW 6.0.24) Assure not to overrun relevant context for reordering operation Impact: FCoE only 3. Problem: (FCoE)(CQ47644) Chip reporting an error instead of dropping the packet Cause: Some errors were detected before verifying FCoE delimiters Fix: (Fixed in FW 6.0.24) Once an error detected, verify first the FCoE delimiters before reporting an error Impact: FCoE only 4. Problem: (iSCSI OOO) Chip hangs during out-of-order traffic Cause: Firmware internal synchronization issue between iSCSI and L2 flows Fix: (Fixed in FW 6.0.24) Firmware fix Impact: Introduced in 1.60.10 (FW 6.0.11) Enhancements ------------ 1. Request: Add BNX2X_MSG_CNIC debug level Change: As requested 2. Request: Allow the RX rings to be initialize with a lower number of entries (at the source code level) Change: As requested 3. Request: Use FW 6.0.24 Change: As requested 4. Request: Enable PFC statistics in MAC Change: As requested Version 1.60.19 (May 12, 2010) ============================== Fixes ----- 1. Problem: (iSCSI OOO): OOO packets were not indicated on the OOO Rx ring Cause: There were missing OOO ring's CID and Client ID configuration in a TSTORM Fix: Properly configure OOO ring's CID and Client ID in the TSTORM memory Impact: iSCSI OOO only 2. Problem: (iSCSI OOO): CNIC SB context in internal memory was zeroed after OOO and FWD rings' ramrods were completed Cause: There was a call for bnx2x_init_sb() for CNIC SB in bnx2x_register_cnic() Fix: Remove the bnx2x_init_sb() call from bnx2x_register_cnic() Impact: iSCSI OOO only 3. Problem: (CQ46146) "ethtool -t" fails when the speed is forced on cx4 NICs to 100/10Mb Cause: Internal loopback test needs to conducted when speed is set to 10G force Fix: Set speed to 10G force during loopback test, and restore link speed afterwards. Impact: ethtool -t test 4. Problem: Spelling error in module parameter Cause: "Then" used instead of "Than" Fix: Fixed to "than" 5. Problem: (CQ47609) Link Level Pause causes link to pause after PFC has been negotiated Cause: Wrong MAC registers configuration Fix: Fix configuration Impact: 57712 only 6. Problem: Link change after PMF migration may halt the system Cause: PHY attributes are provided to the initial PMF only Fix: Load PHY attributes for every new function regardless of being PMF or not. Impact: Multi-function mode 7. Problem: (iSCSI OOO) OOO FW was not processing the incoming OOO packets Cause: TSTORM internal RAM was not properly initialized Fix: Properly initialize OOO producer, CID and Client ID of OOO ring in a TSTORM internal memory Impact: iSCSI OOO only 8. Problem: (iSCSI OOO) L2 FW was generating XSTORM x_eth_vlan_special_check assert when trying to post packets on a FWD ring Cause: The running index that was posted on a VLAN field of the start BD was starting from 1, while FW was expecting it to start from 0 Fix: Keep driver's packet producer and consumer running from 0 and decrement a FW packet consumer during completions handling instead Impact: iSCSI OOO only 9. Problem: (CQ47445) The duplex mismatch does not work as expected Cause: Duplex was set correctly in the phy, but wasn't passed to the driver. In addition, when setting 10/100 force speed, it actually advertised 10/100 with autoneg. Fix: Return the correct duplex result, and when speed is set to 10/ 100, set the speed actually for force 10/100 Impact: BCM84823 based boards 10. Problem: (CQ47383) It takes long time to re-establish link in when working against some switches in force 1G mode Cause: PHY is unable to establish good link in this mode Fix: Enable CL37 BCM autoneg instead of working in force 1G Impact: BCM8073 based boards 11. Problem: (CQ47436) FC setting not consistant Cause: "ethtool -a" show flow-control autonegotiation as off when speed is not set to autonegotiate. Fix: Show the actual flow-control settings on "ethtool -a", but in case the speed setting is actually force speed, this setting will have no affect like with the BCM8727 Impact: ethtool -a 12. Problem: (CQ45632) NETDEV Watchdog message appeared and system hung Cause: driver disables tx while carrier still on Fix: call to netif_carrier_off() after netif_tx_disable() Enhancements ------------ 1. Request: Remove redundant LCPLL setting which is done already in the bootcode Change: As requested 2. Request: (DCBX) Changing PFC RX configuration: In RX COS0 will always be configured to lossy and COS1 to lossless Change: As requested 3. Request: Remove Outer Vlan configuration for Mac partitioning mode Change: As requested 4. Request: Use FW 6.0.23 Change: As requested 5. Request: Allow driver compilation with different kernel location Change: As requested Version 1.60.18 (May 03, 2010) ============================== Fixes ----- 1. Problem: (CQ47451) iSCSI and FCoE broken and causes kernel panic Cause: Wrong FW offsets used Fix: fix FW offsets defines Impact: Introduced in 1.60.17 2. Problem: Loading driver on one port may cause link toggling on the other port Cause: PLL was initialized for both ports instead of per chip Fix: Initialize PLL once during common init Impact: 57712 only 3. Problem: Possible race between firmware threads when loading context to chip Cause: Common firmware handler which loads context for slow path handler may override other handlers context load responses Fix: The common handler considers it's thread Id when waiting for the context load response 4. Problem: Loading driver on one port may cause link toggling on the other port Cause: Firmware generates false data digest error on incoming PDU Fix: (Fixed in FW 6.0.22) Firmware fix Impact: Introduced in 1.60.10 (FW 6.0.11) 5. Problem: (iSCSI) (CQ46388,CQ46608,CQ46638) Chip hangs when running stress iSCSI traffic Cause: Firmware caused connection activity-counter to drop to a negative value Fix: (Fixed in FW 6.0.22) Firmware fix Impact: Introduced in 1.60.10 (FW 6.0.11) Enhancements ------------ 1. Request: Remove the extra prefetch instructions from bnx2x_rx_int() Change: As requested 2. Request: (DCBX) add ETS support Change: As requested 3. Request: (DCBX) add DCB statistics information; add support for 4-bytes long remote chassis id Change: As requested 4. Request: Set NIC_MODE when cnic driver does not exist in the system Change: As requested Impact: Revert of change introduced in 1.60.11 5. Request: Remove Modules.supported file Change: As requested 6. Request: Use FW 6.0.22 Change: As requested Version 1.60.17 (Apr 27, 2010) ============================== Fixes ----- 1. Problem: Kernel warning message from pci_enable_msix() in case of parity error Cause: Improper handling of MSI-X enable/disable flow in parity error case Fix: Disable interrupts, disconnect from IRQs and disable MSI-X in OS level in bnx2x_nic_unload() both in parity error case 2. Problem: FIP packets won't arrive to the FCoE L2 ring Cause: Current FW still doesn't support the FIP packets filtering according to the ETH type Fix: Revert the previous enhancement that removed setting the "FIP MAC" to the FCoE L2 Client Impact: Introduced in 1.60.16 3. Problem: PCI speed is always reported as 5G (Gen2) on 57712 Cause: Wrong decoding of the PCI speed Fix: Fixed the speed decoding Impact: Only 57712 4. Problem: There was a possibility that packets might be transmitted on the queue of the FCoE L2 Client before its SETUP ramrod is completed Cause: bp->state was set to OPEN after FUNCTION_START ramrod (before SETUP ramrod(s) are sent) Fix: Set bp->state=OPEN only after all Clients' SETUP ramrods complete Impact: FCoE only, introduced in 1.60.10 5. Problem: (FCoE) Chip transmitting unwanted FCP_CONF frames Cause: Incorrect update of the CONFQ TX producer Fix: (Fixed in FW 6.0.21) Reset the CONFQ TX producer at the beginning of transmission flow Impact: FCoE only Enhancements ------------ 1. Request: Add TCM storm context registers to the register dump Change: As requested Impact: 57712 only 2. Request: Add path info to the registers dump header Change: As requested Impact: 57712 only 3. Request: Modify LED configuration of the BCM84823 to fit the new phy firmware (2.25 and up) Change: As requested Impact: BCM84823 based boards only. 4. Request: Set packets producer for OOO Rx ring in TSTORM Change: As requested Impact: iSCSI only 5. Request: Limit number of BDs in OOO Rx ring to the number of CQEs minus maximum number of outstanding ramrods. Change: As requested Impact: iSCSI only 6. Request: Move handling of the FCoE L2 ring to NAPI Change: As requested Impact: FCoE only 7. Request: Remove support for FCoE L2 rings on 57711 Change: As requested Impact: FCoE only 8. Request: Use FW 6.0.21 Change: As requested Version 1.60.16 (Apr 22, 2010) ============================== Fixes ----- 1. Problem: MIN/MAX feature is not functional Cause: Miscalculation FW offsets in driver code Fix: Offset calculation fixed Impact: Introduced in 1.60.01 2. Problem: (CQ47092) DCBX: Chassis ID Lower and Upper are switched Cause: bnx2x copied upper to lower and lower to upper Fix: Assignment fixed Impact: Introduced in 1.60.01 3. Problem: iSCSI L2 ring Rx side wasn't functional Cause: iSCSI L2 Client Rx filtering configuration wasn't properly set Fix: Properly set iSCSI L2 Client Rx filtering configuration 4. Problem: CQ047058: Link occasionally doesn't come up with 8073 based boards Cause: Insufficient delay during phy firmware load sequence Fix: Increase delay during phy firmware load sequence to 120ms Impact: BCM8073/BCM8727 5. Problem: Function unload could bypass statistic ramrod (Theoretical bug) Cause: There was no reordering mechanism in the relevant firmware flows Fix: (Fixed in FW 6.0.20) Adding reordering Impact: Introduced in 1.60.10 (FW 6.0.12) 6. Problem: (FCoE) (CQ47126, CQ47129) Miss detection of fc-crc error Cause: Firmware bug Fix: (Fixed in FW 6.0.20) Firmware fix Impact: Introduced in 1.60.07 (FW 6.0.6) 7. Problem: (iSCSI) Firmware generate false data digest on incoming PDU Cause: First 4 data bytes arrived splitted into 3 packets Fix: (Fixed in FW 6.0.20) Firmware fix Impact: Introduced in 1.60.10 (FW 6.0.11) 8. Problem: There were sporadic "timeout waiting for state X" messages in the dmesg when loading/unloading the driver Cause: There was a race on bp->set_mac_pending variable during increment/decrement Fix: Replace increment/decrement of bp->set_mac_pending to set 1/set 0 to avoid the race 9. Problem: TSO packet was not identified is ESX environment (as a result there were CSUM errors on wire) Cause: Wrong condition is checked for identification of TSO packet Fix: Fix the TSO identification condition (only check skb_shinfo(skb)->gso_size for being not zero) Impact: ESX and old kernels only (below 2.6.18) 10. Problem: Possible sporadic memory garbadging Cause: Waiting for CFC_DEL ramrod completion for OOO Client was done in polling mode while default SB interrupt was still enabled Fix: Always wait for CFC_DEL ramrod completion in interrupt driven mode for all clients Impact: Introduced in 1.60.15 Enhancements ------------ 1. Request: Reuse completed Tx buffers in Rx ring from Tx DPC Change: As requested Impact: iSCSI OOO only 2. Request: Remove 57711-only FCoE L2 MAC manipulations Change: As requested Impact: FCoE only 3. Request: Simplify the iSCSI L2 Client MAC configuration code Change: Set/Clear iSCSI L2 MAC in bnx2x_drv_ctl() on START_L2/STOP_L2 commands Impact: iSCSI only 4. Request: Use FW 6.0.20 Change: As requested 5. Request: Use kmalloc() instead of vmalloc() for dynamic allocation of none-DMAable buffers Change: As requested 6. Request: Add an way for CNIC to return an L2 SPQ credit Change: Added DRV_CTL_RET_SPQ_CREDIT command option to bnx2x_drv_ctl() Impact: iSCSI only 7. Request: (DCBX) support transaction between different pause modes Change: Added support Impact: 57712 only Version 1.60.15 (Apr 15, 2010) ============================== Fixes ----- 1. Problem: FCoE INIT ramrod timeout Cause: HW wasn't producing interrupt on CNIC SB Fix: bnx2x didn't send an ACK to IGU after establishing OOO and FWD clients Impact: CNIC only 2. Problem: (CQ47020) Kernel panic during cnic load Cause: Initializing of iSCSI L2 context validation values was done from bnx2x_cnic_probe() function, which is called both for devices that are down and their memories are still not allocated (including contexts) Fix: Initialize iSCSI L2 context from bnx2x_register_cnic() which may be called only for interfaces that are up Impact: CNIC only 3. Problem: CFC error when FCoE INIT ramrod is sent Cause: FCoE Init CID was not initialized Fix: Initialize fcoe_init_cid to the correct value in bnx2x_cnic_probe() Impact: FCoE only 4. Problem: (CQ47100) When the force KR enabler is set correctly, traffic does not work on 8073 based boards Cause: Polarity swap was not set correctly in case link is set to 1G Fix: Initialize polarity swap correctly when enabled. Impact: BCM8073 based boards only 5. Problem: DCB change during FLR might cause chip hang Cause: Firmware skipped DCB update when encountered a PCI error Fix: (Fixed in FW 6.0.19) Firmware flow changed to first update DCB version and only then to proceed to handle PCI error Impact: Introduced in 1.60.11 (FW 6.0.15) 6. Problem: (FCoE) Chip hangs after trying to access inappropriate host memory address Cause: Firmware instructed corrupted SGEs in PBF command due to corrupted Xstorm context Fix: (Fixed in FW 6.0.19) Save entire Xstorm context during disable connection procedure Impact: Exists in all previous FCoE releases 7. Problem: (FCoE) (CQ47022) Disabling/Enabling the adapter from Host side without IO, causes device manager to hang Cause: Firmware did not update task properly in host memory after detecting illegal CONF request Fix: (Fixed in FW 6.0.19) Save task context only after all verification has been completed Impact: Introduced in 1.60.01 8. Problem: (iSCSI) Connection close does not complete Cause: Final ACK from target is discarded by firmware Fix: (Fixed in FW 6.0.19) Firmware fix Impact: Introduced in 1.60.10 (FW 6.0.11) 9. Problem: (CQ47034) MIN/MAX is not accurate for small packets Cause: The firmware didn't count inter-packet gap and preamble in bandwidth allocation. Fix: (Fixed in FW 6.0.19) Fixed L2 calculation Impact: Introduced in 1.45.xx. Doesn't include fix for iSCSI and FCoE 10. Problem: (CQ46501) DCBX IOTCL config_dcbx_params.admin_dcbx_version shows incorrect value Cause: Variable initialized to incorrect value of 2 Fix: Fixed to appropriate 0 (CEE) 11. Problem: Link down when upgrading BCM84823 phy firmware to 2.24/2.25 Cause: Changes in the firmware initialization required setting different values Fix: Set the require phy register to achieve link and led in all speeds Impact: BCM84823 based boards Enhancements ------------ 1. Request: Add support for iSCSI OOO flow in L2 driver Change: As requested Impact: iSCSI only 2. Request: Don't call for NAPI related functions from non-NAPI context Change: Handle cleanup ramrods in an interrupt driven mode and not in a polling mode as it was 3. Request: (FCoE) Reset the entire KCQE before start initializing it Change: As requested 4. Request: (FCoE) Change firmware assert to error notification to driver when receiving MP frame with unknown R_CTL.function mode Change: As requested 5. Request: Use FW 6.0.19 Change: As requested 6. Request: Don't disable TPA on XEN enabled kernels Change: As requested Version 1.60.14 (Apr 08, 2010) ============================== Fixes ----- 1. Problem: Driver failed to pass TCP traffic in non-TPA mode on 57712 Cause: SGE buffer size was not configured to zero in non-TPA mode Fix: Properly set TPA-related section in Client Init ramrod data Impact: 57712 only 2. Problem: Link LED for 10M/100M/1000M is not functional on BCM84823 based boards Cause: LED functionality was controlled by 10G core all the time Fix: When link speed is up in 10M/100M/1000M, set led control to 1G core. Impact: BCM84823/BCM8481 based boards 3. Problem: Link doesn't come up when changed from 1G to 10G with BCM84823 based boards. Cause: Phy wasn't initialized in this case so some parameters were not cleared Fix: Reset phy when any parameter is changed Impact: Seen on BCM84823 based board, but may relate to others 4. Problem: (CQ46902) Unable to load driver on some systems Cause: Old BIOS behaviour is not compliant with newest PCIE spec according to number of tags supported by the system Fix: Driver validates the capability Impact: 57712 only Version 1.60.13 (Apr 4, 2010) ============================== **** This release doesn't support non-TPA mode on 57712 devices **** Fixes ----- 1. Problem: (CQ46501) DCBX IOTCL config_dcbx_params.admin_dcbx_version shows incorrect value Cause: Variable initialized to incorrect value of 2 Fix: Fixed to appropriate 0 (CEE) 2. Problem: FC behavior is changed so that setting FC to auto when speed is force has no influence of to flow-control Cause: Although this configuration is not so logic, many boards have their configuration build this way so need to restore this behavior Fix: Change back to old behavior Impact: Optic devices. Introduced in 1.60.11 3. Problem: When RX-polarity swap is set, traffic in 1G link doesn't pass. Cause: RX-polarity was set on the PMA/PMD side instead of the XGXS side Fix: Set RX polarity on the XGXS side of the 8073 Impact: KR (BCM8073) 4. Problem: Autoneg flow-control is not seen using "ethtool -a" Cause: Duplicating the link parameters configuration for dual-media platform Fix: Return the correct FC status Impact: Introduced in 1.60.11 5. Problem: Self-test was reporting errors in an IGU block when driver was configured to use INT#x Cause: Driver was reading interrupt status register when IGU was still disabled for the current PF Fix: Connect to IRQs after HW initializing 6. Problem: Self-test was reporting errors in an IGU block when driver was configured to use INT#x Cause: Driver was reading interrupt status register when IGU was still not configured to Single ISR mode Fix: Set IGU_PF_CONF_SINGLE_ISR_EN bit together with IGU_PF_CONF_FUNC_EN when driver is configured to Single ISR mode (MSI or INT#x) and do not turn it off unless the driver is configured to use MSI-X interrupt mode Impact: 57712 only 7. Problem: When link speed is set to 1G, link comes up in 10G when connected to device which advertise 10G. Cause: BCM84823 always advertises 10G speed. Fix: When speed capability doesn't include 10G, or force speed is not set to 10G, disable 10G advertisement Impact: BCM84823, BCM8481 8. Problem: (CQ46844, CQ46842) Driver did not work properly on machines with large number of CPUs. Cause: Driver was managing more resources then available in FW Fix: Taking into account max available L2 contexts Impact: 57712 only 8. Problem: Potential link issue with force 1G on 8073 Cause: Setting one of the registers in the force 1G sequence incorrectly Fix: Fix 1G force sequence Impact: 57712 + KR only 9. Problem: Terminate ramrod called host coalescing on Tx segment Cause: Wrong logic while sending host coalescing on Tx Fix: (Fixed in FW 6.0.17) The ramrod no longer send host coalescing Impact: Introduced in 1.60.6 (FW 6.0.3) 10. Problem: Firmware asserted when TPA is disable Cause: Wrong logic in the assert Conditions Fix: (Fixed in FW 6.0.17) The assert may occur only when TPA is enabled Impact: Introduced in 1.60.12 (FW 6.0.15) 11. Problem: VF: system crashed when VF reads client init data Cause: Reading client init from VF memory and not from PF memory Fix: (Fixed in FW 6.0.17) VF read the client init from PF memory Impact: Introduced in 1.60.12 (FW 6.0.15) 12. Problem: Pause on exhausted ring broken Cause: Internal pause data structure was initialized improperly Fix: (Fixed in FW 6.0.17) Fix internal ram offset calculation Impact: Introduced in 1.60.12 (FW 6.0.15) 13. Problem: (FCoE) Timer expiration doesn't read DCB info Cause: DCB update is done only for transmission flows Fix: (Fixed in FW 6.0.17) Read DCB info for timer expiration Impact: Introduced in 1.60.12 (FW 6.0.15) 14. Problem: Return credit in termination handler without executing DCB update Cause: Firmware bug Fix: (Fixed in FW 6.0.18) Update DCB in the beginning of the terminate handler Impact: Introduced in 1.60.10 (FW 6.0.11) Enhancements ------------ 1. Request: When link speed is set to force on copper devices, set link to autoneg with specific link speed advertisement since force speed is not copper compliant Change: As requested Impact: BCM84823/BCM8481 based devices 2. Request: Add PFC/DCBX support for E2 Change: As requested 3. Request: Make driver to be compiled, by default, with FCoE support Change: As requested. FCoE support comes by default with CNIC support 4. Request: Don't allocate SGEs when TPA is not enabled for a specific ring Change: As requested 5. Request: Use FW 6.0.18 Change: As requested Version 1.60.12 (Mar 23, 2010) ============================== 1. Problem: Flow control is not set on optic devices Cause: When flow-control was set to force on optic devices, configuration was not permeate to the MACs Fix: Set the FC configuration on optic devices according to user settings Impact: Optic devices Version 1.60.11 (Mar 22, 2010) ============================== Fixes ----- 1. Problem: Driver didn't work on big endian setups Cause: There were endianness bugs both in HSI and in driver Fix: Properly handle endianness in EQ related code Impact: Introduced in 1.60.10 2. Problem: Potential link issue with BCM8727 Cause: In BCM8727, the firmware in second port must be loaded before the first port. Fix: Download the second port to 8727 first during initialization Impact: 57712 only and SFP+ only 3. Problem: Driver didn't work with KVM SR-IOV Cause: Final client delete (CFCdelete ) was not communicated to the SR-IOV management code. Fix: Passing the delete completion notifications to the SR-IOV management. Impact: Introduced in 1.60.10 4. Problem: (CQ46455) Load-unload test failed in Multi-Function mode Cause: Improper initialization and cleanup of IGU block Fix: Fixed Impact: Introduced in 1.60.01 5. Problem: (FCoE) FCoE L2 client was receiving erroneous SETUP client ramrod completions Cause: FCoE L2 Tx SB index was configured to the same value as Rx index. As a result FW was overwriting the Rx SB index with a Tx index value Fix: Fixed Tx index configuration Impact: Introduced in 1.60.10 6. Problem: BCM8073 isn't able to link up on specific board Cause: The default state of the GPIO1 is high and the PHY might not be in the good reset state after a POR Fix: Toggle GPIO1 from LOW to HIGH during common init Impact: 57112 + 8073 7. Problem: (CQ46476) Unable to load driver on RH48/RH47 32bit Cause: Undefined symbols "____log2_NaN" used in kernel Fix: Define the symbol if not defined 8. Problem: Binary data printed during fw_dump() Cause: Address of dump miscalculated for 57712 Fix: Fix address calculation Impact: Only 57712 9. Problem: (CQ45724) in MF configuration, after bringing the interface down, ethtool does not reflect link status correctly Cause: Missing check for device status Fix: Add check for device status 10. Problem: (CQ 46240) Unexpected completion is received during forward connection establishment Cause: Problematic initialization sequence of status blocks Fix: (Fixed in FW 6.0.13) Firmware now checks for function enable before updating the status block Impact: Introduced in 1.60.01 (FW 5.3.19), relevant to 57710/11 only 11. Problem: (FCOE) Detect an error on FCP_RSP with confirmation request Cause: Firmware did not verify confirmation request indication when checked last sequence indication in FC header Fix: (Fixed in FW 6.0.13) Fixed confirmation request verification Impact: Problem exists in all previous FCoE versions 12. Problem: (CQ46005) Maximum bandwidth allocation feature not working as expected Cause: Storm clock frequency was 500MHz instead of 550MHz - this affects the RT clocks configuration which had a 10% deviation Fix: (Fixed in FW 6.0.14) Firmware now use correct clock frequency for RT configuration Impact: Relevant only to BCM57712 13. Problem: "Pause on exhausted rings" functionality broken Cause: Internal firmware variable was not set properly in RAM Fix: (Fixed in FW 6.0.14) Firmware now sets the missing internal variable at L2 client init phase Impact: Introduced in 1.60.06 (FW 6.0.2) 14. Problem: (FCoE)(CQ46506) firmware hanged (all threads in Ustorm sleep) Cause: Error handling was not processed correctly Fix: (Fixed in FW 6.0.14) Firmware fix Impact: Introduced in 1.60.10 (FW 6.0.11) 15. Problem: (FCoE)(CQ46342) RX_ID not populated inside REC_ELS packet Cause: Driver did not receive RX_ID during timer's error reporting Fix: (Fixed in FW 6.0.14) Firmware fix Impact: Problem exist in al previous firmware releases 16. Problem: (iSCSI)Data placement of non-aligned small size data (<4 bytes) caused false data-digest error Cause: Internal firmware error Fix: (Fixed in FW 6.0.14) Firmware fix Impact: Introduced in 1.60.10 (FW 6.0.11) 17. Problem: The firmware supported only unicast addresses that were recognized by the LLH (limit to 16 MACs) in switch independent mode Cause: The search in the CAM used the function id from the LLH Fix: (Fixed in FW 6.0.15) Unmasked the function id in searches in the cam in switch independent mode Impact: Introduced in 1.60.10 (FW 6.0.10) 18. Problem: (iSCSI) Firmware might spin into infinite-loop when RQ is full Cause: Priority of Sleep when fetching new RQ producer is too high Fix: (Fixed in FW 6.0.15) Reduce sleep priority Impact: Introduced in 1.60.10 (FW 6.0.11) 19. Problem: (iSCSI) Saturated window was not supported in option2 TCP connect Cause: Feature not supported Fix: (Fixed in FW 6.0.15) Add support in firmware 20. Problem: (FCoE) (CQ46072) IO errors when running heavy traffic write operations Cause: Inappropriate line credit calculation in transmission path Fix: (Fixed in FW 6.0.15) Firmware fix in line credit calculation Impact: Introduced in 1.60.10 (FW 6.0.10) 21. Problem: in 4-port mode - using port 2 and 3 caused errors followed by fw dump Cause: Inappropriate FW SB allocation, improper FW mailbox calculation Fix: Add port id to the calculations Impact: 57712 4-port only Enhancements ------------ 1. Request: (CQ45126) Change NIC_MODE to impove latency if no offloaded connection is present Change: As requested 2. Request: Support dual-media configuration with swapped phy configuration Change: As requested. Impact: Dual media board 3. Request: Split speed and duplex parameters into two media Change: As requested 4. Request: Support powering down the BCM84823 copper core when phy configuration is set to second_port Change: As requested Impact: BCM84823 dual-media 5. Request: Add support for 4-port mode device Change: As requested Impact: 57712 6. Request: Add support for force 1G for KR triggered by new nvm cfg option 127: "Force KR enabler" Change: As requested Impact: KR(BCM8073) 7. Request: Add support for Client Setup ramrod Change: Use FW 6.0.15 8. Request: Cleanup VLAN related code Change: As requested 9. Request: Add TCP Out-Of-Order support in iSCSI Firmware Change: As requested (in FW 6.0.14) 10.Request: Increase L2 clients from 26 clients to 28 in order to support iSCSI Out of Order in multi function mode Change: As requested (in FW 6.0.15) 11.Request: Added client_init_ramrod_data struct, in order to decouple between driver and firmware client-related structures Change: As requested (in FW 6.0.15) 12.Request: Support changing COS and vlan priority updates according to DCB in L2 TX firmware Change: As requested (in FW 6.0.15) 13.Request: (FCoE) Support stop traffic\start traffic flow control ramrods Change: As requested (in FW 6.0.15) Version 1.60.10 (Mar 8, 2010) ============================== **** This release doesn't support big-endian architecture **** Fixes ----- 1. Problem: CFC HW attention was popping up on 57710 and 57711 when interface was closed Cause: bnx2x_pf_disable() was called for all types of chips Fix: Call bnx2x_pf_disable() for 57712 only Impact: Introduced in 1.60.08; applies for 57711 and 57710 only 2. Problem: (FCoE) PFC didn't function properly Cause: Bad values of LLFC watermarks Fix: Set LLFC watermarks to proper values Impact: 57712 PFC only 3. Problem: Limiting the number of queues with the num_queues module parameter to a number smaller then the number of CPUs renders the driver inoperable. Cause: The RX RSS indirection table is initialized with bad values. Fix: Fixed the indirection table initialization Impact: Introduced in 1.60.01 4. Problem: VF load for VFs with id greater then 3 crashes the host driver. Cause: The host driver failed to allocate the HW-context for such VFs. Fix: Fixed the host driver VF HW-context allocation for VFs. Impact: 57712 IOV only 5. Problem: (CQ45880, CQ46008) On 57712 incorrect statistic information is displayed for ethtool/ifconfig Cause: Reading the information from incorrect memory region Fix: Fixed region and registers addresses Impact: 57712 only 6. Problem: (CQ46197) Compilation error on system with undefined value of CONFIG_PCI_MSI Cause: Code was not compiled due to undefined value Fix: Removed dependency on this value Impact: Introduced in 1.60.06 7. Problem: BCM84823 Copper link doesn't come up Cause: Starting from firmware 2.20, BCM84823 enforces the XGXS to link first with the BCM84823 before it triggers LASI. Fix: Set the appropriate flag for the 84823 which enforce XGXS initialization before external link is up Impact: BCM84823(copper) 8. Problem: CQ45718: Driver crash after driver load Cause: Driver was sending a relatively new command to a bootcode which doesn't support it. This command in unfamiliar with this bootcode, and should only be sent to bootcode which support it. Fix: Send this command only to bootcode which support it. Impact: SFP+ only 9. Problem: Some error statistics weren't counted correctly Cause: The statistics address was miscalculated Fix: Fixed address calculation (in FW 6.0.11) Impact: Introduced in 1.60.06 (FW 6.0.3) 10. Problem: iSCSI firmware broken Cause: TCP layer interface was changed Fix: Applied new TCP interface to iSCSI firmware (in FW 6.0.11) Impact: Introduced in 1.60.07 (FW 6.0.4) 11. Problem: Possible permanent locking of Tx queue Cause: There was a memory barrier missing after tx_cons update Fix: Added a missing barrier 12. Problem: Possible "queue is alive while ring is full" situation Cause: bnx2x_start_xmit() may have run and locked the queue while bnx2x_tx_int() has decided that it may unlock it Fix: Take tx_lock while deciding to unlock the queue Enhancements ------------ 1. Request: Add clarification for int_mode driver parameter Change: Description fixed; Unnecessary define removed 2. Request: Support MAC partitioning mode (Multi function based on MAC classification) Change: As requested Impact: 57712 only (when set to MAC partitioning mode) 3. Request: Use FW 6.0.12 Change: As requested 4. Request: Use the upstream printouts and mcast iterators semantics Change: As requested Version 1.60.09 (Feb 22, 2010) ============================== Fixes ----- 1. Problem: (CQ46006) NIG test A36 failed if the driver was loaded before Cause: Configuration of PGLUE_B register with wrong value, while reset value is good Fix: Remove erroneous configuration Impact: 57712 only 2. Problem: (CQ45648) driver asserts while trying to unload/load iSCSI/FCoE Cause: internal firmware resources were not cleaned properly by driver upon unload Fix: (Fixed in FW 6.0.8) offset was generated for slow path sync line index Impact: 57712 only 3. Problem: (FCoE) Terminate handler will not complete Cause: Race between timer expiration and terminate handler invocation Fix: (Fixed in FW 6.0.8) Impact: 57712 only 4. Problem: (CQ46052) Compilation warning on older kernels ("warning: assignment discards qualifiers from pointer target type") Cause: The compilation condition regarding the kernel version was mistakenly changed Fix: Change the kernel version condition Impact: Introduced in 1.60.08 5. Problem: (FCoE) (CQ45915): Second CNIC interrupt was never arriving when working with port 1 Cause: Wrong SB ID was used in CNIC functions sending ACK to IGU Fix: Added IGU_SB_ID to CNIC interface, fixed CNIC functions sending ACK to IGU to use the new index Impact: Has been introduced in T6.0 Enhancements ------------ 1. Request: For 57712 add support for switch-independent mode Change: As requested 2. Request: Add per-path licensing support Change: (In FW 6.0.9) Support BCM57712 address scheme Impact: 57712 only 3. Request: Minimize DMA transaction to improve PCIE latency Change: (In FW 6.0.9) Packet placement is done in single DMA command instead of two 4. Request: Constant pause avoidance Change: (In FW 6.0.9) Timeout for pause sending was added. Un-pause message will be sent upon timeout expiration. (Timeout default is 1 minute, can be set up to 5 minutes by the driver) Impact: 57711/57711E/57712 only 5. Request: Use FW 6.0.9 Change: As requested Impact: iSCSI is not functional in this version Version 1.60.08 (Feb 18, 2010) ============================== **** iSCSI is not functional in this version **** Fixes ----- 1. Problem: (CQ45963,CQ45962) DCBX IOCTL shows unusual values for admin_configuration_ets_pg, admin_pfc_bitmap Cause: Admin section was initialized with incorrect values Fix: Choose correct init values 2. Problem: (CQ45961,CQ45960) DCBX IOCTL shows incorrect values for admin_dcbx_enable, dcb_enable Cause: The parameters were ignored by driver Fix: Add handling for the parameters 3. Problem: (CQ45763, CQ45799) On 57712 a request can be sent on a disabled function Cause: Request sent from timers block that scans function 6/7 when function 2/3 scan off is set Fix: Workaround in the driver that assures that if the timers starts scanning for function 6/7 nothing fatal will occur Impact: 57712 only 4. Problem: (CQ45973) On 57712 bringing up interface caused DMAE timeout Cause: Initialization of function not performed properly Fix: Enable function in PGLUE_B module before accessing DMAE Impact: 57712 only 5. Problem: In KR board type, when loading the first port first, it causes the other port's link not to come up. Cause: BCM8073 requires that the second port's firmware will be loaded first. Fix: Always load the first phy port's firmware Impact: 57712 only and KR only Enhancements ------------ 1. Request: Replace references to cnic_drv.h with cnic_if.h Change: As requested 2. Request: Add DRV_CTL_{START,STOP}_L2_CMD capabilities to drv_ctl() Change: As requested 3. Request: Update cnic driver with SP_SB information Change: As requested 4. Request: Add handling for iscsi mac addresses during registrer_cnic() unregister_cnic() and chip_cleanup() Change: As requested Version 1.60.07 (Feb 11, 2010) ============================== **** iSCSI is not functional in this version **** Fixes ----- 1. Problem: (CQ45674) Warning message was displayed when modprobe bnx2x "bnx2x_get_hwinfo ..." Cause: Inappropriate printing level for the message used Fix: Set correct level 2. Problem: BCM8073 wasn't initialized during common init Cause: In 57712, the second port is actually port0 of the second path, and it wasn't treated like that. Fix: Initialize port0 of both paths of BCM8073 during common init Impact: 57712 only and KR only 3. Problem: PCIE-X link speed is not displayed correctly for 57712 Cause: Misinterpretation of link speed encoded value Fix: Fixed for 57712 Impact: 57712 only 4. Problem: Performance drop on high-PPS scenarios with new HC code Cause: New HC flow was overloading a HW buffer and caused back pressure on on-chip processors Fix: (In FW 6.0.6) Remove some of the HW buffer uses Impact: introduced in 1.60.01 (FW 5.3.19) 5. Problem: (CQ45499) HW attention at BCM57710 stress test Cause: New HC flow could cause HW bug by using illegal timers command Fix: (In FW 6.0.6) Remove the use of timers command, instead use aggregated interrupts Impact: introduced in 1.60.01 (FW 5.3.19) BCM57710/BCM57711 only 6. Problem: Change MTU causes L4 traffic to stop Cause: Status Block of cnic driver was not updated during nic_load Fix: Add cnic SB update Impact: Introduced in 1.60.01 Enhancements ------------ 1. Request: Use FW 6.0.7 Change: As requested Impact: iSCSI is not functional in this version Version 1.60.06 (Feb 4, 2010) ============================== **** This version requires bootcode 6.0.6 or above for BCM57712 **** Fixes ----- 1. Problem: FCoE wasn't receiving mcast packets, including FIP packets sent to ALL_ENODE_MACS address Cause: There was DROP_ALL_MCAST flag set to FCoE L2 client Fix: Set ACCEPT_MCAST flag to FCoE L2 client that will make it receive only matched mcast packets 2. Problem: Path1 shared memory data run over Path0 configuration Cause: The register that marks the beginning of the shared memory is global rather than split per path Fix: Use different registers to mark the beginning of the shared memory per path. Impact: 57712 only 3. Problem: bnx2x stopped receiving on the VLAN after MTU change Cause: VLAN removal flag was not configured after reloading FW during change MTU flow Fix: Configure VLAN removal flag if needed after MTU change 4. Problem: drivers enter infinite loop during crash dump Cause: lack of parentheses in loop expression Fix: add parentheses 5. Problem: (iSCSI)(CQ45150) OIS Assert occurred after attempting to login to iSCSI target Cause: Firmware bug Fix: Fixed in FW 6.0.2 6. Problem: (FCoE)(CQ44937) Data corruption after forcing FC-CRC error Cause: Hardware bug when detecting CRC error on FCoE data placement Fix: (Fixed in FW 6.0.3) Firmware workaround - Send 64 DMA dummy write commands in order to prevent the false error from appearing 7. Problem: 57712 4-port mode doesn't link up Cause: XGXS wasn't actually configured in this mode since the current MD_DEVAD used didn't work. Fix: Use different MD_DEVAD when working with the E2 XGXS Impact: 57712 only 8. Problem: 57712 4-port D2 nic test(internal loopback test) fail Cause: Loopback was set as 10G instead of 1G loopback Fix: When speed selection is 1G, set 1G loopback, otherwise set 10G loopback. Impact: 57712 only Enhancements ----------- 1. Request: Add support for KVM SR-IOV (BCM57712 and onwards) Change: As requested 2. Request: Add support for VF devices Change: As requested 3. Request: Update README.TXT and manpages with GRO dependency on 8021q module Change: As requested 4. Request: Use FW 6.0.3 Change: As requested Version 1.60.04 (Jan 26, 2010) ============================== 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 2. 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 3. Problem: ifconfig up reported error while using bootcode 6.0.1 Cause: Lack of lock between DCBX init command and response handling Fix: Add mutex to protect the FW mailbox 4. 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 5. 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, the print is allowed under specific messages level only 6. Problem: port 1 of 57712 can't initialize correctly Cause: driver accessed incorrect shmem addresses Fix: fixed Impact: 57712/57712E only 7. Problem: 57712 link is not up Cause: There's difference in AER strapping between 57711 and 57712 Fix: Set the XGXS AER to the appropriate value according to the new XGXS model Impact: 57712 only Version 1.60.03 (Jan 20, 2010) ============================== Fixes ----- 1. Problem: Unresolved symbols during compilation on 32bit platforms Cause: Improper initialization of variable with FP symbol Fix: Using integer constant instead Impact: Introduced in 1.60.01 2. Problem: MF dead in the water for 57711 Cause: Improper initialization of the FW caused it to hang Fix: Fixed initialization Impact: Introduced in 1.60.01 3. Problem: HC not enabled for port 1 Cause: Improper initialization the HC in the FW Fix: Fixed initialization Impact: Introduced in 1.60.01 4. Problem: (iSCSI) Unexpected chip behavior when padding is splitted into 2 or 3 parts Cause: Firmware bug when aligning split padding Fix: Firmware was fixed Impact: Problem exists in all previous releases 5. Problem: (iSCSI) False data digest error when data digest is splitted into 3 parts Cause: Firmware bug when aligning split padding Fix: Fixed in FW 6.0.1 Impact: Problem exists in all previous releases 6. Problem: (FCoE) (CQ45025) False REC_TOV timer expiration Cause: Timer was not reset when a task that supports REC_TOV was replaced by task that didn't Fix: (Fixed in FW 6.0.1) When new task begin, we set the timer if it supports REC_TOV and reset timer if he doesn't Impact: Problem exists in all previous releases 7. Problem: (FCoE) Connection cache was not initialized properly and REC_TOV\E_D_TOV timers weren't disable after all functions destroyed Cause: Wrong calculation of number of active functions Fix: (Fixed in FW 6.0.1) Add designated counter for number of active functions Impact: Problem in BCM57712 only 8. Problem: MSI-X vectors request in repeating ifup/ifdown test case fail due to not sufficient amount of resources Cause: MSI-X/MSI were not disabled if ifup failed due to lack of memory Fix: Properly release allocated MSI-X/MSI vectors if ifup failed due to lack of memory Enhancements ----------- 1. Request: Remove GRO dependency on kernel version Change: Replaced with dependency on NETIF_F_GRO flag 2. Request: Integrate with bootcode 6.0.0 and above for proper handling of phy initialization in 57712 2-PORT-MODE Change: As requested 3. Request: (CQ39624) Provide detailed statistics with ethtool -S eth Change: As requested 4. Request: Add compatability of GRO feature with RH5.4 systems Change: As requested 5. Request: Improve performance of new HC code (submitted in firmware 5.3.19). Cut the storm utilization by 50% Change: As requested (in FW 6.0.1) 6. Request: Add ability to control BCM8073 PN polarity swap through nvm configuration Change: As requested. 7. Request: Use GPIO3 to take BCM84823 phy out of reset Change: As requested. 8. Request: Use FW 6.0.1 Change: As requested. 9. Request: Add support for FCoE to older kernels (e.g. RH5.4 in-the-box kernel) Change: As requested. Version 1.60.02 (Jan 12, 2010) ============================== Fixes ----- 1. Problem: Self-test didn't work on kernels newer than 2.6.25 Cause: There was missing a new way to report the number of tests Fix: Added a support for a new way to report a number of tests when compiled against new kernels 2. Problem: (iSCSI)(CQ45150) OIS assert @ [bxois!HandleConnectionCqeWorkitem+429] when trying to logon to iscsi target Cause: Firmware bug Fix: Fixed in FW 5.3.20.1 Impact: Problem exists only in release T6.0 Enhancements ----------- 1. Request: Add VLAN GRO support Change: As requested 2. Request: Use FW 5.3.20.1 Change: As requested Version 1.60.01 (Jan 12, 2010) ============================== Fixes ----- 1. Problem: 57712 emulation failed to run in 4 domains 10G mode (debug only) Cause: Driver accidently accessed non-existing EMAC Fix: Remove access to EMAC register in case of emulation 2. Problem: In dual-media, only the SFP+ module on the first phy is checked Cause: Insufficient support in SFP+ module checking Fix: Modify SFP+ module API verification to include parameter indicating the exact phy. Impact: Whenever driver send command to the bootcode, it will now also send parameter. Bootcode will treat this parameter only when it is relevant 3. Problem: (FCoE) Chip hangs while running normal rd/wr operations Cause: RX Doorbell was not handled properly Fix: (Fixed in FW 5.3.18) Handling the case where receiving false RX doorbell 4. Problem: (FCoE) (CQ44936, CQ44937) Data corruption during read/write/compare test Cause: Error was not detected by FW since it was short FCP_RSP packets Fix: (Fixed in FW 5.3.20) Checking if received the amount of data when receiving this format of FCP_RSP 5. Problem: (FCoE) (CQ44936, CQ44937) Data corruption during read/write/compare test Cause: When packet with invalid CRC detected, task context isn't reverted to previous valid state Fix: (Fixed in FW 5.3.20) on detection of packet with invalid CRC, task cached context isn't write back to memory 6. Problem: (iSCSI) Chip hangs when running iSCSI read traffic Cause: Miscalculation of HW commands when SGEs are not 64-bytes aligned Fix: (Fixed in FW 5.3.20) Fixing FW calculation of SGE alignment and fields in HW command 7. Problem: (FCoE) Upper layer didn't know which MAC to use during DCBX negotiation. Cause: Proper MAC (SAN) was not set in the netdev. Fix: Call dev_addr_add() with the proper MAC and SAN type. 8. Problem: (FCoE) FIP packets were not ruled by the PFC FC. Cause: FIP packets were arriving on a regular L2 client. Fix: Set a different MAC to the FCoE L2 client. Enhancement ----------- 1. Request: Changed the doorbell size (the stride between consecutive doorbells' addresses) from 4K to 128 Change: As requested 2. Request: Add support for dual-media board type Change: Redesign the CLC to be able to handle multi-phy boards. Rename clc/CLC to elink/ELINK. Driver is required to probe the phys on board before initializing the link. Specific phy access will be done using "phy" structure. Common access will go over all phys on board and execute the command on them. Impact: From now on, high level driver will not be familiar with the phys on-board. For every phy access, it is required to use the elink API, or add new one. 3. Request: Having the ability to pass data from the Tstorm to the driver over the SGL in fast_path_cqe (required for iSCSI Out-Of-Order) Change: As requested (in FW 5.3.20) 4. Request: Use FW 5.3.20 Change: As requested 5. Request: Add DCBX support for 57711 Change: As requested 6. Request: Remove #ifdef CONFIG_PCI_MSI sections from code Change: Removed #ifdef CONFIG_PCI_MSI sections. Left the code that was compiled when this (CONFIG_PCI_MSI) macro has been defined. Version 1.53.14 (Dec 7, 2009) ============================== Enhancement ----------- 1. Request: (CQ41760) Use more generic log message in case of fan failure Change: As requested 2. Request: (CQ43089) Add VPD-R V0 entry to displayed firmware revision in ETHTOOL Change: As requested 3. Request: Use FW 5.3.17 Change: As requested 4. Request: Enable parity errors recognition and recovery. Change: First implementation of parity error recovery flow. Currently only "process kill" is supported. Parity errors are currently disabled for E1 until the proper changes are done to init tool. Version 1.53.13 (Nov 17, 2009) ============================== Fixes ----- 1. Problem: Improper initialization of MF/SF causes driver to stall Cause: Using uninitialized values of fpid Fix: Using fpid moved to later stages after its initialization Impact: None Version 1.53.12 (Nov 16, 2009) ============================== Fixes ----- 1. Problem: CQ41232: Management gets incorrect AN and FC bit values. Cause: FC wasn't updated correctly during link up event Fix: Extract all status_link information correctly Impact: None 2. Problem: CQ36401: Excessive link down messages when driver is unloaded Cause: Link event is reported for every link event, even when link is not changed Fix: Do not report link change unless there's actually link link change Impact: None 3. Problem: BCM8481 doesn't negotiate FC capabilities Cause: FC capabilities weren't advertised during phy initialization Fix: Set BCM8481 FC capabilities during init stage Impact: None 4. Problem: (FCoE) Completions are not arrived on open tasks Cause: Connection does not register to QM since SQ producer/consumer Fix: Fixed in FW 5.3.14: Set BCM8481 FC capabilities during init stage Impact: None Enhancement ----------- 1. Request: Support bootcode on 57712 Change: As requested Impact: 577712 Only 2. Request: Allocate available MSI-X vectors in normal mode Change: As requested Impact: None 3. Request: Use multi cpu rx when using msix in kernels without new napi Change: As requested Impact: None 4. Request: support correct number of iSCSI and FCoE sessions in the HW initializations Change: As requested Impact: None 5. Request: support any number of L2 queues in the HW initializations Change: As requested Impact: None 6. Request: Hanlde both Tx and Rx in NAPI Change: As requested Impact: None 7. Request: Support 4-port mode for 57712 Change: As requested Impact: None 8. Request: Use FW 5.3.14 Change: As requested Impact: None Version 1.53.11 (Nov 11, 2009) ============================== Fixes ----- 1. Problem: When iptable_nat module is installed on RH4, traffic halts Cause: iptable_nat on RH4 requests for GSO without asking for csum offload Fix: When configuring the HW/FW to GSO, always configure csum offload as well 2. Problem: (FCoE) Chip hanged during data placement Cause: Thread started placing data before verifying the task type Fix: Fixed in FW 5.3.13: verify task type is match to read in FCP_DATA before placement Impact: None 3. Problem: (CQ44328) (FCoE) Chip hanged after error was detected Cause: Thread was waiting for CRC result instead of releasing the packet Fix: Fixed in FW 5.3.13: Release the packet if an error occurred during data placement Impact: None Enhancement ----------- 1. Request: Use FW 5.3.13 Change: As requested Impact: None Version 1.53.10 (Nov 08, 2009) ============================== Enhancement ----------- 1. Request: Use FW 5.3.12 Change: As requested Impact: None Version 1.53.9 (Oct 27, 2009) ============================== Fixes ----- 1. Problem: ethtool -t ethX FAILED Cause: test_registers() accessed registers without mask Fix: Added mask for write access Impact: None Version 1.53.8 (Oct 26, 2009) ============================== Enhancement ----------- 1. Request: Use FW 5.3.10 Change: As requested Impact: None Version 1.53.xx (Oct xx, 2009) ============================== Enhancement ----------- 1. Request: Improve times for ifconfig up/down (slow 57712 chip revision) Change: As requested Impact: None Version 1.53.xx (Oct xx, 2009) ============================== Enhancement ----------- 1. Request: Add support for EMAC loopback for FPGA Change: As requested Impact: None Version 1.53.7 (Oct 22, 2009) ============================== Enhancement ----------- 1. Request: Use FW 5.3.9 Change: As requested Impact: None 2. Request: Remove compilation flag for BCM57712/BCM57712E/BCM57713/BCM57713E Change: As requested Impact: None Version 1.53.6 (Oct 21, 2009) ============================== Enhancement ----------- 1. Request: 57712 multifunction support Change: As requested Impact: None Version 1.53.5 (Oct XX, 2009) ============================== Fixes ----- 1. 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.53.4 (Oct 11, 2009) ============================== Fixes ----- 1. Problem: Priority Flow Control on BCM57711 showed low performance Cause: Transmitted Xon PFC packet was malformed. PriorityEnableVector field in PFC packet was set to zero instead of the relevant priorities. This caused to remote peer to wait longer until timers expired to Xon again Fix: Fixed in FW 5.3.8: set properly PriorityEnableVector in Xon PFC packet Impact: None 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.3.8: condition for activity counter increment fixed Impact: None 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.3.8: changed setting of FW internal flags Impact: None 4. 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.3.8: use the scratchpad within the thread boundary only Impact: None 5. Problem: iSCSI offload: TCP Close failed Cause: Bug in byte credit update during termination Fix: Fixed in FW 5.3.8 Impact: None 6. Problem: FCoE INIT ramrod was never completed Cause: Reading from inappropriate VQ in Tstorm Fix: Fixed in FW 5.3.8: reading from to the correct VQ Impact: None Enhancement ----------- 1. Request: BCM577xx support for FW 5.3.8 Change: As requested Impact: None 2. Request: Adding support broadcast and multicast received packets in L2 switch independant mode Change: In FW 5.3.8 as requested Impact: None Version 1.53.3 (Oct xx, 2009) ============================== Fixes ----- 1. Problem: Only Tx queue 0 was used in default configuration on kernel 2.6.30 and above Cause: bnx2x_select_queue() was returning 0 by default Fix: Make bnx2x_select_queue() return stack tx_hash() by default Impact: None Enhancement ----------- 1. Request: Add a separate L2 ring for FCoE L2 traffic Change: As requested Impact: None Version 1.53.2 (Oct 8, 2009) ============================== Fixes ----- 1. Problem: 57712 failed to receive data from network Cause: Incorrect MAC type selected during initialization Fix: MAC initializaton fixed Impact: None 2. Problem: 57712 failed to bring up interface Cause: Unhandled attention interrupt caused processor to stall Fix: Added handling for new attentions Impact: None Version 1.53.1 (Oct 5, 2009) ============================== Enhancement ----------- 1. Request: 57712 support for FW 5.3.7 Change: As requested Impact: None Version 1.53.xx (Sep xx, 2009) ============================== Enhancement ----------- 1. Request: When PFC is enabled, set BigMAC to relay control packets to the system as well, and enable BigMAC to react on received Pause packets Change: As requested Impact: None Version 1.53.0a (Oct 1, 2009) ============================== Enhancements ------------ 1. Request: Use FW 5.3.7 Change: As requested Impact: None 2. Request: Add support for BCM57712 (by compilation flag) Change: As requested Impact: None Version 1.51.0a (Sep 14, 2009) ============================== Fixes ----- 1. Problem: Enabling fairness algorithm in the middle of the run causes the function to stop transmitting. Cause: The fairness credit is not initialized in this case. Fix: Change the fairness credit init value. Impact: None. 2. Problem: (CQ42873) No traffic when number of receive buffers is configured to 50 (the minimum) in the advanced properties page. Cause: Firmware is always saving a CQE for each TPA aggregation. So in case less then 75 CQEs are on the ring, the firmware starts dropping packets. Fix: Check if TPA is enabled before deciding if to drop packet. If TPA is disabled save only 11 CQEs instead of 75. Impact: None. Enhancements ------------ 1. Request: Use FW 5.3.4 Change: As requested Impact: None Version 1.51.x (Aug xx, 2009) ============================= Fixes ----- 1. Problem: Link is down with BCM8481 when connected to 1G device after it was connected to 100M device Cause: When link type changes from SGMII to GMII/XGMII, the SGMII configuration wasn't removed Fix: Remove SGMII configuration in non-SGMII link type Impact: None 2. Problem: BCM8481 link is not able to link up after cable plug out/in Cause: New BCM8481 image required new configurtion of the LED4 signal which generate the interrupt Fix: Detect link down using the LED4 signal rathen than the BCM8481 registers Impact: None 3. Problem: Link is down with BCM8481 when connected to 1G device after it was connected to 100M device Cause: When link type changes from SGMII to GMII/XGMII, the SGMII configuration wasn't removed Fix: Remove SGMII configuration in non-SGMII link type Impact: None 4. Problem: BCM8481 link is not able to link up after cable plug out/in Cause: New BCM8481 image required new configuration of the LED4 signal which generate the interrupt Fix: Detect link down using the LED4 signal rather than the BCM8481 registers Impact: None 5. Problem: Driver might read corrupted data from shared memory in case bootcode is missing Cause: Some pieces of code are not protected in case bootcode is missing Fix: Add additional protection in case bootcode is missing Impact: None Enhancements ------------ 1. Request: When PFC enabled, pass pause frames towards the NIG Change: As requested Impact: None 2. Request: Improve FP performance Change: Remove writing ACK to USTORM from Tx flow and to CSTORM from Rx Impact: None 3. Request: Handle fan failure for BCM8481 PHY Change: As requested Impact: None 4. Request: Once PFC is selected along with emac, it is required to set BIT 3, KEEP_MAC_CONTROL, at emac register rx_mode. Setting this bit causes MAC control frames (except for pause frames) to be passed on for processing. This setting has no affect on the operation of the pause frames. This bit affects all packets regardless of RX Parser packet sorting logic. Change: As requested Impact: None 5. Request: Use FW 5.1.23.1 Change: As requested Impact: None 6. Request: Support kernel 2.6.31 (RC2) Change: Use DMA_MAP macros and .ndo_select_queue Impact: None 7. Request: (CQ41112) - PHY LED Programming for BCM8481 on BlackBird (BCM957711A1100G) Production Board Change: As requested Impact: None 8. Request: Increase DMAE max write size for 57711/57711E Change: As requested Impact: None 9. Request: Not handling statistics in panic condition Change: As requested Impact: None 10. Request: Enhance bnx2x_panic_dump() - print SB data Change: As requested Impact: None Version 1.52.2 (Aug 18, 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 4. Problem: In some cases FW does not respond in time to driver requests and thus driver load fails Cause: For certain PHYs, FW might need some more time before responding to driver request Fix: Increase the timeout up to 5 sec Impact: None Enhancements ------------ 1. Request: Set interrupt coalescing granularity to 4us instead of 12us Change: As requested Impact: None 2. Request: Change default interrupt coalescing numbers to supported numbers Change: Since the interrupt coalescing granularity is 4us, a value of 25 is actually configured as 24 to the HW Impact: None 3. Request: Fix bnx2x_fw_dump() to compute trace start address based on shmem offset Change: As requested Impact: None Version 1.52.1 (Aug 12, 2009) ============================= -- Upstream Version -- Fixes ----- 1. Problem: Link is down with BCM8481 when connected to 1G device after it was connected to 100M device Cause: When link type changes from SGMII to GMII/XGMII, the SGMII configuration wasn't removed Fix: Remove SGMII configuration in non-SGMII link type Impact: None 2. Problem: BCM8481 link is down after cable plug out/in Cause: New BCM8481 image required new configuration of the LED4 signal which generate the interrupt Fix: Detect link down using the LED4 signal rather than the BCM8481 registers Impact: None 3. Problem: (CQ35477) Incorrect display of External Phy Firmware Version for Everest XFP board. Cause: External Phy Firmware Version for BCM8705 PHY used to display 0000:0000 Fix: Change not to display PHY FW version Impact: None 4. 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 5. 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: In promiscuous mode, pass management traffic to the host Change: As Requested Impact: None 2. Request: PCI drivers that implement the struct pci_error_handlers' error_detected callback should return PCI_ERS_RESULT_DISCONNECT if the state passed in is pci_channel_io_perm_failure Change: As Requested Impact: None 3. Request: (CQ41112) PHY LED Programming for BCM8481 PHY Change: As requested Impact: None 4. Request: (CQ41067) Add support for CL73 on XAUI Change: As requested Impact: None Version 1.52.0 (Jul 28, 2009) ============================= Fixes ----- 1. Problem: Redundant settings of vlan_features at set_tso Cause: There is no need to change vlan_features at set_tso since this field is a capability field and not current settings Fix: Remove redundant code Impact: None 2. 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.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 loopback 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. ******************************************************************************************* ******************************************************************************************* ******************************************************************************************* C. ============================ R E L E A S E N O T E S ============================ Broadcom NetXtreme II iSCSI Driver For Linux Copyright (c) 2006-2011 Broadcom Corporation All rights reserved. Version 2.6.2.4c (Feb 01, 2011) =============================== Fixes ===== 1. Problem: Cont00052673 - iLab failed test6_14 - delayed iSCSI response Cause: A bug was found in the ep_disconnect routine where the session variable did not get initialized correctly. This bug will cause TCP abortive disconnect to be requested unconditionally. Change: Fixed the initialization bug Impact: All Version 2.6.2.4b (Jan 14, 2011) =============================== Fixes ===== 1. Problem: Cont00052132 - iSCSI has poor write IOPS at 1K block size Cause: A soft lockup for 10s was observed with this and various different I/O size test where as soon as the bh is released, the scsi_next_command routine will trigger and the queue lock will get stuck. Change: - Restored all CQE processing back to the cnic tasklet bh and modified the session lock granularity - Modified the event coalesce algorithm to include the cmd_cmpl_per_work module param Impact: All 2. Problem: Cont00052131 - Cannot establish solid offload connection to Dell MD3220i target from SLES11sp1 (RHELS is okay) Cause: The problem was caused by the deferred CQE processing to workqueue scheme which caused nop timeouts during logouts. Change: The new CQE processing scheme no longer uses workqueue. Impact: All 3. Problem: Cont00051479 - bnx2 unable to compile under RH5.6ss3 Cause: The bnx2i makefile did not accommodate for native RHELS5.6 installations either. Change: Modified the bnx2i Makefile which will now examine the ...kernel.../linux/include/version.h file for the corresponding RHEL version that it is compiling against. Impact: All Enhancements ============ 1. Updated README for Cont00052157 to update the open-iscsi util Version 2.6.2.3g (Jan 04, 2011) =============================== Fixes ===== 1. Problem: Cont00051896 - iSCSI Read throughput underperforms at lower request sizes with higher qdepths for 5771X Cause: The new workqueue CQE processing mechanism was not tuned for this scenario Change: Various modification has been included for performance optimization Impact: All Enhancements ============ 1. Feature: Removed the scsi_flush_workqueue call and use a hba workqueue array instead. This eliminates the potential libiscsi softlock that one connection is performing scsi cleanup while the other is undergoing scsi_flush_workqueue. Impact: All Version 2.6.2.3f (Dec 20, 2010) =============================== Fixes ===== 1. Problem: Cont00051815 - kernel BUG - logging into EMC NX4 Cause: This target uncover a timing bug in the CQE processing call in the mtask transmission. The nopin response got processed before the nopout request was returned to the stack. This causes the nopout request to timeout all the time as the nopin responses would never get processed. Change: Removed the CQE processing in mtask requests. This is not necessary. Impact: All Version 2.6.2.3e (Dec 17, 2010) =============================== Fixes ===== 1. Problem: Cont00051647 - Unable to logout of Dell MD3220i target for RHELS6.0 Cause: Upon logout or shutdown, a scsi sync cache cmd will get transmitted while the scsi worker is being blocked. Since this is a fastpath cmd, the response was queued to the scsi scsi workqueue which resulted in a lost response. When this happens, the sync cache logic in the kernel will block forever. Change: Upon receiving a scsi sync cache cmd, the cqe processing will switch to direct processing instead of deferring to the wq Impact: All Enhancements ============ 1. Feature: No longer have to flush the entire shost workqueue for every connection termination. In RHELS6.0, the cancel_work_sync function will remove the connection's single entry to the shost's workqueue. Impact: All 2. Feature: Added retry logic in the send nl mesg routine for robustness Impact: All Version 2.6.2.3d (Dec 15, 2010) =============================== Fixes ===== 1. Problem: Cont00051625 - call trace while ifdown with traffic bnx2i_conn_worker Cause: Under certain ifdown cases, the bnx2i_ep and the bnx2i_conn are not associated when going through chip_cleanup. The previous fix did not take this into consideration Change: Moved the disabling of the workqueue to hw_ep_disconnect under bnx2i_conn validation check Impact: All Version 2.6.2.3c (Dec 14, 2010) =============================== Fixes ===== 1. Problem: Cont00051625 - call trace while ifdown with traffic bnx2i_conn_worker Cause: During ifdown, the bnx2i_stop code will clean up all active connections from the chip. However, because of the new workqueue data processing architecture, the workqueues for the already cleaned connections were still being called. This has created a window of opportunity for the libiscsi2 layer to get into a continuous locking/unlocking via the task_xmit path. Change: Added the disabling of the workqueue for every active iSCSI conn before chip cleanup. Impact: All 2. Problem: Cont00051647 - Unable to logout of Dell MD3220i target Cause: The scsi_flush_work call in the ep_disconnect was waiting indefinitely for outstanding nopout cmd which was never sent during the SCSI sync cache phase Change: Removed the scsi_flush_work call until conn_destroy to align with internal scsi state. Note that all outstanding scsi work must be flushed before the bnx2i_conn gets destroyed. Impact: All Version 2.6.2.3b (Dec 07, 2010) =============================== Fixes ===== 1. Problem: Cont00051499 - Call trace seen with bnx2i_process_new_cqes Cause: For targets which employs ip redirect, a remote abort/close event would occur. However, these were not being handled correctly under the new cqe processing architecture Change: Added session recovery workqueue to defer all remote abort/close requests Impact: All Version 2.6.2.3a (Dec 06, 2010) =============================== Fixes ===== 1. Problem: Cont00050655 - Low read/write IOPS on linux configuration 57711 Cause: The chip was being underutilized due to the mutual starvation in the bottomhalf tasklet between the fastpath's EQ->CQE handling and the SCSI ML's queue command requests Change: Alleviate the processing time of the EQ->CQE by creating a workqueue and also added processing of such in the queuecommand's bh. Impact: All 2. Problem: Cont00051427 - Session recovery seen after stopping I/O traffic on Lefthand P4300 target Cause: The nopout's reserved field was not being initialized to zero before being reused. Change: Zero out the entire nopout wqe before sending to fw. Impact: All Enhancements ============ 1. Feature: Updated the README to remove the jumbo MTU limitation caveat Impact: All Version 2.6.2.2b (Nov 09, 2010) =============================== Fixes ===== 1. Problem: Cont00050725 - RH6.0:iSCSI HBA Linux: bnx2i WARN-CONN_DISCON timed out message observed when restarting iSCSI service Cause: A chip panic was observed as CFC delete was initiated without SRC delete being executed first. Change: There's a path where if the connect response exceeded the connection timeout, CFC delete will occur without first executing SRC delete. Impact: 5771X Enhancements ============ 1. Feature: Added jumbo MTU support for iSCSI offload connections Change: For cases where the shost is not provided, jumbo MTU is not supported. Impact: All Version 2.6.2.2a (Oct 28, 2010) =============================== Enhancements ============ 1. Added send text pdu support for iSCSI send-target discovery via the offload path 2. Added compilation support for RHELS5.6-alpha 3. Reduce the hard-coded 20s delay wait time to 1s for NETDEV_GOING_DOWN operations 4. Changed the ulp_ops->iscsi_nl_send_msg() to prevent a circular lock dependency issue Version 2.6.2.1a (Oct 11, 2010) =============================== Fixes ===== 1. Problem: Cont00044011 - Linux iSCSI: Cannot obtain max number of sess when changing sq_size to 16 (5708) Cause: - Task allocation unit were not correctly allocated - Offloaded PG were being leaked - 5706/08 firmware's context allocation were not correct Change: Fixed all 3 desribed issues above. This also requires an update of the 5706/08 firmware which contains this fix. Impact: 570X 2. Problem: Cont00049584 - System panic with this message "mutex_lock" Cause: The single threaded iSCSI daemon has prevented the NETDEV_UNREG path to invalidate the host when it is too busy trying to perform session recovery. Change: The fix is separated in both the open-iscsi utility and bnx2i. The fix in bnx2i is to combat netlink messages from being lost. The fix in the open-iscsi utility is to fix the single threaded scheduler which flushed the INVALID_HOST path. The patch has already been submitted to RHELS for the next release of 5.6/6.0. Impact: 5771X 3. Problem: Cont00049609 - Running iLab automated iSCSI test 6.1 on RHELS6.0 intermittently caused kernel panic Cause: A bug in the TMF LUN reset command generation code in bnx2i has corrupted the LUN number which the target will reject the request. This has led to libiscsi to dereference an incomplete TMF scsi_cmd; hence the kernel panic. Change: Fixed the TMF LUN reset generation in bnx2i. Impact: All Version 2.1.3a (Sep 15, 2010) ============================= Fixes ===== 1. Problem: Cont00049899 - RHELS5.5 iSCSI boot thru offload path fails in IPv6 mode Cause: The local IPv6 address being transferred to the iSCSI daemon is corrupted Change: Fixed the proper formatting of the ipv6 address for the HOST_PARAM_IPADDRESS retrieval Impact: All (RHELS5.4/5.5 and IPv6 only) Version 2.1.2z (Sep 07, 2010) ============================= Fixes ===== 1. Problem: Cont00049798 - System unresponsiveness during cable pull test Cause: This is newly introduced by the previous code. The root cause of the problem relates to how libiscsi immediately initiates another nopout request when the previous one fails to queue Change: Allow nopout requests to return success as normal. The associated task will get freed upon nopout timeout. Impact: All Version 2.1.2y (Sept 02, 2010) ============================== Fixes ===== 1. Problem: Cont00049634 - Linux iSCSI: MC assert on idle port while running ifup/down with 128 sessions 2. Problem: Cont00049667 - Linux iSCSI: bnx2x_panic_dump while running adapter selftest with active sessions connected ([bnx2x_stats_update:1070(eth6)]storm stats were not updated for 3 times) 3. Problem: Cont00049477 - Linux iSCSI: bnx2x_panic_dump while running adapter selftest with active sessions connected (bnx2x_cnic_handle_cfc_del:4443) 4. Problem: Cont00049584 - LinuxiSCSI: System panic with this message "mutex_lock+0x2b/0x50" Cause: Several issue in connection cleanup and bnx2i_stop() code and bnx2i was not uploading connection if it does not receives TCP CONN_DISCON completion. also bnx2i_ep_connect() was not handling certain error cases well which was resulting resource leak and also messing up cid and l5_cid handling mapping Change: * Moved 'hba->adapter_state' flags bit clear to after connection cleanup wait is over. This allows ep_disconnect() code to run normally and upload the connection properly * Added code to wait for pending connection offload and upload requests to complete before proceeding to chip clean-up. iscsid and libiscsi will not cleanup these ep's when session_drop() is called because these ep's are not yet bound to any iscsi sessions * Forcefully terminate all in progress connection recovery at the earliest, either in bind(), send_pdu(LOGIN), or conn_start(). This will avoid iscsid waiting for 10-15-sec waiting for login response and then proceeding with connection cleanup. This fix enables iscsid to start connection cleanup process immediately * There are known certain target TCP stack behavior which could lead to missing CONN_DISCONNECT request timeout eventhough firmware has terminated the tcp connection properly. Firmware team has confirmed it is safe to terminate and CFC_DEL these connections * Fixed several issues in error handling code in bnx2i_ep_connect() which could lead to resource leak and cid and iscsi cid mangling Impact: 5771X Enhancements ============ None Version 2.1.2x (Aug 26, 2010) ============================== Fixes ===== 1. Problem: Cont00049634 - MC assert on idle port while running ifup/down Cause: The chip panic was caused by performing a CFC deletion operation to a connection that is not idle. The tx/rx pipe in the driver were still trying to access the chip. Change: The tx/rx pipe is now suspended before attempting the chip cleanup Impact: 5771X Version 2.1.2w (Aug 25, 2010) ============================== Fixes ===== 1. Problem: Cont00049584 - System panic with this message "mutex_lock" Cause: The single threaded iSCSI daemon has prevented the NETDEV_UNREG path to invalidate the host when it is too busy trying to perform session recovery. Change: Instead of changing the iSCSI initiator code, the NETDEV msg handling path was modified to prevent the iSCSI daemon from entering session recovery in the NETDEV_UNREG path. Impact: 5771X 2. Problem: Cont00049477 - bnx2x_panic_dump while running adapter selftest Cause: Another CFC delete chip panic was observed when CONN_DISCONN timeout (option2 disconnect timed out) happens. The driver should not allow the associated l5_cid from being freed which will prevent l5_cid reuse. Change: Block the freeing of the associated l5_cid Impact: ALL Version 2.1.2v (Aug 18, 2010) ============================== Fixes ===== 1. Problem: Cont00049477 - bnx2x_panic_dump while running adapter selftest Cause: Its a cleanup issue exposed by uIP taking too long to recover the session. This has led to the driver initiating the chip cleanup process while the iSCSI daemon is staggering its connect/disconnect request. Change: Disallow ep_connect request while performing chip cleanup Impact: ALL Version 2.1.2u (Aug 11, 2010) ============================== Fixes ===== 1. Problem: Cont00049283 - cannot login thru offload path with vlan Cause: The hardware net device identifier should be used instead of the vlan identifier Change: Since this is the intended behavior, only the README has been updated with this info Impact: ALL Enhancements ============ 1. Ignore all netevents associated with VLAN. Only process netevents from the non-VLAN net device Version 2.1.2t (Aug 08, 2010) ============================== Fixes ===== 1. Problem: Cont00049208 - Error when compile bnx2i under IA64 Cause: The IA64 architecture does not support cflags of -mhard-float Change: Since bnx2i does not use any floating point components, it has been decided to remove both -ffast-math and -mhard-float from the Makefile Impact: ALL 2. Problem: Cont00049245 - Session recovery timeout kernel panic Cause: iscsi_conn was destroyed asychronously after long selftest Change: Added guard against pointer dereferencing for CONN_DISCONN conditions Impact: ALL 3. Problem: Cont00049247 - Kernel panic seen after selftest a few times Cause: cnic csk was nullified upon chip cleanup from bnx2i stop. At the same time, a new instance of iscsid tries to disconnect the same bnx2i endpoint but now with the cnic csk being NULL. Change: Added guard against double calling of hw_ep_disconnect via ep->state being EP_STATE_IDLE Impact: ALL 4. Problem: Cont00049182 - IPv6 redirection does not work on Equalogic target Cause: With the new ipv6 enabled uIP, it uncovered a bug in the ep_poll routine where bnx2i is providing an erroneous timeout error to the iSCSI daemon. Change: Fixed the bug in the ep_poll routine Impact: ALL Version 2.1.2s (Aug 03, 2010) ============================== Fixes ===== 1. Problem: Cont00049161 - Kernel panic occurs running iLAB test6_1 Cause: The kernel panic was caused by an synchronization issue in the iSCSI stack when a fail TMF lun reset request was introduced by a bug in our driver. Change: Fix the lun reset TMF request endian bug where the lun field was not correct Impact: ALL Version 2.1.2r (Aug 02, 2010) ============================== Fixes ===== 1. Problem: Cont00049047 - EP disconnect timeout - chip panic Cause: Chip panic occurred while trying to force CFC delete upon cm_abort/close (CONN_DISCONN) timeout Change: It is adviced to not separate the conn destroy procedure of SRC_DELETE, terminate offload and CFC_DELETE. So upon a CONN_DISCONN timeout situation, no CFC_DELETE will be issued. Impact: 5771X Enhancements ============ 1. Added temporary workaround for the HOST_IPADDRESS parameter for ipv6 Version 2.1.2q (Jul 30, 2010) ============================== Fixes ===== 1. Problem: Cont00048941 - iscsi2_conn_failure kernel panic due to target restart Cause: Kernel panic occurred in iscsi2_conn_failure dereferencing a NULL iscsi_conn pointer. The asynchronous tcp FIN/RST that gets received might have been blocked while the iscsi_conn is being nullified. Change: Added check against iscsi_conn/sess dereferencing for asynchronous response such as remote abort/close scenarios Impact: All 2. Problem: Cont00049068 - Sessions drop and recovery against Lefthand Networks P4300 target Cause: The session recovery was caused by the LUN reset timeouts. Only abort_task TMF is supported. Change: Added support for other TMF modes like LUN reset. Added protocol violation fix for NOP-Out responses to unsolicited NOP-Ins Impact: All Version 2.1.2p (Jul 29, 2010) ============================== Fixes ===== 1. Problem: Cont00049013 - bnx2i_tear_down_conn kernel panic Cause: Chip panic occurred due to CID reuse without being initialized Change: Added chip cleanup procedure in the bnx2i module unloading code path Impact: 5771X Version 2.1.2o (Jul 28, 2010) ============================== Fixes ===== 1. Problem: Cont00049044 - bnx2i driver version is not correct Cause: Version didn't get bumped Change: Updated version string Impact: ALL 2. Problem: Cont00049047 - EP disconnect timeout Cause: CONN_DISCONN was causing a double CFC delete request which ultimately caused the chip to panic Change: Fixed the double CFC delete request handling Impact: 5771X 3. Problem: Cont00049857 - System lock up when connect to lefthand target Cause: Two sess spinlocks were being requested in the NOP-Out local completion path Change: Fixed the spinlock request in the handling routine Impact: All Version 2.1.2n (Jul 24, 2010) ============================== Fixes ===== 1. Problem: Cont00048998 - Compilation error found with sles11sp1x86 Cause: The ARCH variable during the compilation was overwritten with i686 which failed recordmcount.pl Change: Removed the ARCH variable in the Makefile as it is not used Impact: ALL 2. Problem: Cont00047900 - bnx2x panic observed after booting via iSCSI boot Cause: The previous fix had a bug where the IP ADDRESS was wrong Change: Fixed the IP ADDRESS bug in the HOST_PARAM Impact: ALL Version 2.1.2m (Jul 20, 2010) ============================== Fixes ===== 1. Problem: Cont00047900 - bnx2x panic observed after booting via iSCSI boot Cause: The RQEs were not being freed for unsolicited NOP-Ins Change: Fixed 2 bugs in the NOP-In handling. Modified the conn_bind routine to detect and perform a chip cleanup on the stale endpoints. Added temporary workaround for the HOST_IPADDRESS parameter Impact: ALL Version 2.1.2l (Jul 15, 2010) ============================== Fixes ===== 1. Problem: Cont00041327 - Need Ability to Identify Adapter iSCSI Offload Capabilities Cause: This CQ was resolved in t5.2 but did not work on distro that uses a single transport name such as SLES11 Change: Modified the driver to examine the iSCSI offload license upon bnx2i_start. This will prevent the adapter from appearing in the /sys/class/iscsi_host/hostN entry. Impact: ALL Enhancements ============ 1. Fixed potential kernel panic caused by stale pointer dereferencing from elements in the ofld_list whenever cnic fails the ofld request 2. Modified ep_connect/ep_disconnect to guard against asynchronous calls from the iSCSI daemon during NETDEV_GOING_DOWN->NETDEV_DOWN Version 2.1.2k (Jun 30, 2010) ============================== Enhancements ============ 1. Added ep_active_list to replace active_sess code 2. Optimized the HOST_PARAM_IP_ADDRESS retrieval code to use ep_active_list 3. Added module param ooo_enable to enable the TCP out-of-order feature for iSCSI offload (default = 1) 4. Restored the disconnect timeout for 5771X back to 20s as CONN_DISCON timeouts were observed Version 2.1.2j (Jun 18, 2010) ============================== Fixes ===== 1. Problem: Cont00046648 - CID Leakage occurs while running iLab test 5.12 (connection closure scenarios) rework Cause: The new bnx2x driver 1.60.24 has changed the max FIN disconnect timeout down to 6s instead Change: Modified the disconnect timeout for 5771X back to 10s Also modified the clean up procedure for the case where the iSCSI daemon is slow or not operational for bnx2i_stop Impact: ALL 2. Problem: Cont00044011 - Cannot obtain max number of sessions when changing sq_size to 16 for 5708 Cause: The driver has capped the number of max commands to sq_size/2 unnecessary Change: Restored the cmds_max = sq_size instead of num_ccells Impact: ALL Version 2.1.2i (Jun 10, 2010) ============================== Fixes ===== 1. Problem: Cont00046648 - CID Leakage occurs while running iLab test 5.12 (connection closure scenarios) Cause: Still occurred with the piggybacked FIN on logout responses Change: Extended the disconnect timeout for 5771X to 20s to accommodate for the worse case firmware disconnect timeout of 16s Impact: 5771X Enhancements ============ 1. Correspondingly extended the per connection clean up timeout to 20s Version 2.1.2h (Jun 04, 2010) ============================== Fixes ===== 1. Problem: Cont00047973 - 57711E: Kernel panic when running iLab automated test 6.14 (iProt's delayed logout response) Cause: The open-iscsi stack's 15s logout timeout has expired and a disconnect request was forced prior to the delayed logout response is received. This has created a stale pointer deferencing in the libiscsi stack Change: Modified the disconnect path to handle logout req/resp accordingly. Also suspend the rx endpoint for disconnect timeout conditions to prevent stale pointer dereferencing in libiscsi Impact: 5771X 2. Problem: Cont00046648 - CID Leakage occurs while running iLab test 5.12 (connection closure scenarios) Cause: Reset completion was received instead of close complete kcqe while the driver is engaged in connection close request Change: Modified various graceful/abortive local/remote connection termination code path for both 1g/10g This works in conjunction to the new cnic changes Impact: All Enhancements ============ 1. Added HOST_IP_ADDRESS in sysfs Version 2.1.2g (May 26, 2010) ============================== Fixes ===== 1. Problem: Cont00047794 - Linux-iscsi: Everest always terminates the iSCSI connection (logout) with a reset packet Cause: The code to decide to perform a graceful vs abortive termination did not take into account this situation where a remote close indication happened prior to the locally initiated termination sequence Change: Modified the code which decides to perform a graceful vs abortive termination to account for this scenario Impact: All 2. Problem: TCP timestamp module param option was removed Cause: This option was added from T5.2 and have not been submitted to upstream bnx2i Change: The option has been added Impact: All Enhancements ============ 1. Updated README 2. Added tcp_buf_size module param to control TCP Window size setting Version 2.1.2f (May 24, 2010) ============================== Fixes ===== 1. Problem: Cont00047901 - Linux-iscsi: Unable to initiate iSCSI connection with 57712 Cause: There was a bug in the 57712 identifier code Change: Added fix in the 57712 identifier code Impact: 57712, 57712E Version 2.1.2e (May 21, 2010) ============================== Fixes ===== 1. Problem: Cont00047527 - Linux-iscsi: Kernel panic after manually killing iscsid process and removing bnx2i/cnic modules Cause: The problem was caused by a race condition where the iscsid daemon tries to access the sysfs host entries while bnx2i is undergoing rmmod. Change: Return a length of 0 if the bnx2i hba has been freed or when it has already been unregistered from cnic Impact: all chipsets 2. Problem: Cont00047734 - Linux-iscsi: Kernel panic after rebooting with active iSCSI sessions Cause: The problem was caused by the stop code where the adapter state was set to down before the iSCSI daemon has a chance to perform the cleanup. Change: Added proper cleanup code in the stop routine Impact: all chipsets Enhancements ============ 1. Added sysfs entry last_active_tcp_port to display the source TCP port info of the last iSCSI offload connection used. This is a request from iLab to test OOO. Version 2.1.2d (May 03, 2010) ============================== Enhancements ============ 1. Added support for 57712 Version 2.1.2c (Apr 30, 2010) ============================== Enhancements ============ 1. Added the feature to return -EBUSY if the offload connection failure was due to the 2s CFC WAIT for iscsid. Version 2.1.2b (Apr 22, 2010) ============================= Enhancements ============ 1. Migrated to use the new uIO method for iSCSI offload connections. 2. Removed the obsolete install_usr option (for bnx2id) Version 1.8.13d (Apr 12, 2010) ============================= Fixes ===== 1. Problem: Cont00047101 - Linux-iscsi: Switching from offload to non-offload with OOB iscsi solution on Red hat 5.5 requires extra steps Cause: same root cause as CQ44503, makefile defines macro to use which forces driver to use scsi_transport_iscsi2 for RHEL5.4 only. Change: Update makefile to define __RHEL54_DUAL_ISCSI_STACK__ for both RHEL5.4 and RHEL5.5 Impact: Only RHEL5.5 distro, all chipsets Enhancements ============ None Version 1.8.13c (Mar 19, 2010) ============================= Fixes ===== 1. Problem: Cont00046658 - CID leakage occurs (submit GRC dump message from bnx2i driver) while running iLab automated test 1.1 (login/logout) Cause: 5770x firmware design is changed not to process and complete TCP_CLOSE RAMROD request after any TCP event (FIN/RST received, TCP protocol error detected, etc') occured on the connection Change: This is a big change and we feel there is a finite time delay (big enough) between iscsi logout w/o piggybacked FIN received and by the time iscsid issue ep_disconnect() during which target TCP stack can issue FIN or the RST. By design bnx2i driver issues TCP_CLOSE on a gracefully terminated iscsi session (using iscsi logout process) and for all error conditions it will issue TCP_ABORT request. So the current firmware change cause a big challenge which cannot be mitigated in the driver. Only way bnx2i driver can handle is to issue TCP_ABORT for all connection termination process whether it is graceful or abortive cleanup. This release is just a partial shutdown which will sucessfully handle iscsi logout pdu with piggybacked FIN. Further analysis and discussions is on going with the firmware team. Impact: 5771x chipset. Please refer to 'Change' section for further limitation and follow-up issues to be addressed with the firmware team. 2. Problem: Cont00046691 - Linuxiscsi: SUT became unstable and ask to run grcdump after login/logout Cause: Duplicate of Cont00046658 Change: Please refer to Cont00046658 for details Impact: 5771x chipset Enhancements ============ None Version 1.8.13b (Feb 04, 2010) ============================= Fixes ===== 1. Problem: 5771x doorbell page size reduced from 4096B to 128B causing iSCSI offload to break Cause: iSCSI doorbell calculation has to be fixed to accomodate this HSI change Change: Changed doorbell mapping code to match the HSI Impact: 5771x chipset Enhancements ============ Add 57712 PCI ID support Version 1.8.13a (Jan 20, 2010) ============================= Fixes ===== 1. Problem: 5771x doorbell page size reduced from 4096B to 128B causing iSCSI offload to break Cause: iSCSI doorbell calculation has to be fixed to accomodate this HSI change Change: Changed doorbell mapping code to match the HSI Impact: 5771x chipset Enhancements ============ None Version 1.8.12f (Jan 19, 2010) ============================= Fixes ===== 1. Problem: Cont00044986 - LinuxiSCSI:Unable to get more than a few disks when i login to Netapp setup with maxlun disks Cause: In certain configurations kernel is assigning 'shost->max_lun' a value of '8'. In most configurations is correctly assigned '512' Change: Explicitly initialized shost->max_lun to '512' when a new scsi host is allocated and initialized Impact: All chips, RHEL5.4 Linux distro Enhancements ============ None Version 1.8.12e (Dec 11, 2009) ============================= Fixes ===== None Enhancements ============ Per OEM request made system log entry more administrator friendly e.g. Changed "bnx2i: hba ffff810089abdcef does not support iscsi" to "bnx2i: dev eth0 does not support iscsi" README.TXT was updated to reflect this change. Version 1.8.12d (Dec 09, 2009) ============================= Fixes ===== 1. Problem: Cont00044503: RHEL 5.4 x86_64 with Multiple iSCSI Errors Booting the Kernel Cause: out-of-tree bnx2i was including references to symbols in scsi_transport_iscsi1 where as iscsi_tcp was referencing the ones in scsi_transport_iscsi2. This conflict caused software and offload iscsi not to coexist Change: Modified bnx2i driver to work with scsi_transport_iscsi2. Update session/connection/endpoint setup/teardown code path to account for new data structure objects created in libiscsi2 which were not present in libiscsi1 Impact: All chips, RHEL5.4 Linux distro Enhancements ============ None Version 1.8.12c (Dec 01, 2009) ============================= Fixes ===== 1. Problem: Cont00041327: Linux: Need Ability to Identify Adapter iSCSI Offload Capabilities Cause: OEM's requested this feature because the driver was registering all NX2 devices with the iscsi transport layer. Change: Modified bnx2i to register only the licensed devices with iscsi transport layer. This will avoid the need for mechanism to identify licensed and unlicensed NX2 devices as only the licensed devices will appear in '/sys/class/iscsi_transport' directory. Impact: All chips, All Linux distro Enhancements ============ None Version 1.8.12b (Nov 09, 2009) ============================= Fixes ===== 1. Problem: Async logout with Equallogic target results in "CONN_DISCON" and "CONN_CLEANUP" timeout messages Cause: This issue was initially reported by Vmware against ESX4.5 iSCSI inbox driver. This same issue was reproduced in Linux as well. Driver was returning DID_NO_CONNECT when the session is being logging out which caused a ton of debug log from SCSI-ML. While running heavy I/O on 12 session per port and simultaneously issue async message to logout these sessions caused a huge log spew which caused 570x device interrupt to be delayed in order of 10x seconds. Change: Return DID_HOST_BUSY while session is being logged out and till either session recovers or recovery times out. Once session recovery timeout is hit driver will return DID_NO_CONNECT Impact: All chips, All Linux distro Enhancements ============ None Version 1.8.12a (Oct 22, 2009) ============================= Fixes ===== None Enhancements ============ Repacking 1.8.9u as baseline for T5.2 release Version 1.8.9u (Oct 16, 2009) ============================= Fixes ===== 1. Problem: Cont00044141 - Linux iSCSI: Kernel panic while performing cable pull test with MPIO on RHEL5.4 (swiotlb_map_sg+0x2f/0x14a) Cause: swiotlb_map_sg() crash was caused because SCSI-ML queued a command with sg_length = 0, sg_count = 1 and sg table != NULL. Driver was only looking at last 2 parameters to call pci_map_sg() or not. Follow on issue was cause by open-iscsi daemon changes, ep_disconnect() was called without calling stop_conn(). Change: Fixed driver to consider 'sg_length' before mapping SG buffers & also shost workqueue is flushed in ep_disconnect() if it is not already done so. Impact: All chips on RHEL5.4 Enhancements ============ None Version 1.8.9t (Oct 08, 2009) ============================= Fixes ===== None Enhancements ============ Special sections were added to list know issues and workarounds related to out-of-tree bnx2i and software iscsi coexistence issue in RHEL5.4 Version 1.8.9s (Sept 30, 2009) ============================= Fixes ===== 1. Problem: Cont00043901 - Linux iSCSI: RHEL5.4 OOB - Kernel panic during logout with iscsi-initiator-utils-6.2.0.871-0.10c Cause: Latest open-iscsi changed graceful session tear down sequence. ep_disconnect() is called before stop_conn() and this caused NULL pointer access while dereferencing conn->ep Change: check for 'conn->ep' validity before dereferencing Impact: All chipsets, RHEL5.4 only 2. Problem: Cont00043896 - Linux iSCSI: System crash with iscsi-initiator-utils-6.2.0.871-0.10c Cause: Duplicate of CQ43901. Please check CQ43901 for root cause Change: Same as CQ43901 Impact: All chipsets, RHEL5.4 only Enhancements ============ 1. Problem: Cont00041327 - Linux: Need Ability to Identify Adapter iSCSI Offload Capabilities Cause: Refined fix which caused unlicensed device not to be unregister with iscsi transport. This is a partial fix and needs interface to be up before bnx2i loads. Complete fix will be delivered in T5.2 Change: Check for cnic_dev->mac_iscsi_conn while the device is registered as this value will be cleared during unregister_device() call Impact: All chipsets, Linux Version 1.8.9r (Sept 27, 2009) ============================= Fixes ===== 1. Problem: Cont00041327 - Linux: Need Ability to Identify Adapter iSCSI Offload Capabilities Cause: bnx2i cannot determine license information unless the device is registered with cnic and the network port is initialized by the user (ifup). Because of limitation, driver was registering transport name for all enumerated NX2 devices Change: Driver will continue to register all devices at init time and unregister the transport name when license information is available and found the device is not licensed for iSCSI. This eliminates the need for a separate means to identify if device support iSCSI or not. Impact: All chipsets, Linux Enhancements ============ None Version 1.8.9q (Aug 31, 2009) ============================= Fixes ===== 1. Problem: Cont00043282 - linux:iscsi_offload:can not modporbe bnx2i after installation of linux-nx2 v5.2.6 on RH 5.4 Cause: RHEL5.4 has 2 sets of scsi_transport_iscsi and libiscsi modules, second modules added specifically to support inbox bnx2i. With the current service load order, scsi_transport_iscsi2 gets loaded before bnx2id service is started. Initially bnx2id was chosen to be loaded after network service is started because of dependency of bnx2/bnx2x. Now that cnic driver implements weak symbol linking with bnx2/bnx2x, we can load cnic, bnx2i modules (start bnx2id service) much before network service Change: start bnx2id service before iscsi/iscsid services Impact: All chipsets, Linux Enhancements ============ None Version 1.8.9p (Aug 17, 2009) ============================= Fixes ===== None Enhancements ============ Updated README.TXT to reflect new combined packaging. nextreme2- and ported a bug fix related to doorbell register mapping in IA64 architecture Version 1.8.9o (Jul 25, 2009) ============================= Fixes ===== 1. Problem: Cont00042502 - Linux iSCSI HBA: SUT kernel panics after test I/O is started Cause: MPP driver failed to honor bnx2i's 'sg_tablesize' and 'max_sectors' parameter causing bnx2i to overstep BD table memory. Change: Workaround is to allocate 4KB of memory for each BD table, i.e. 255 entries per table which is sufficient to handle a maximum IO size of 512KB issued by MPP Impact: All chipsets, Linux Enhancements ============ Above change will cause bnx2i to consume little more memory than previous drivers Version 1.8.9n (Jul 22, 2009) ============================= Fixes ===== 1. Problem: Cont00042555 - Kernel panic occurs while running iLab iSCSI automated test 6.4 (data digest error) Cause: Some tests used to hang because session recovery code never returned from wait due to sess->recovery_state mis-match Change: Fixed wait state variable to check for sess->recovery_state = 0, which is cleared when session is re-logged in Impact: All chipsets, Linux, ESX Enhancements ============ None Version 1.8.9m (Jul 01, 2009) ============================= Fixes ===== None Enhancements ============ Updated Makefile in order to package bnx2i, bnx2, bnx2x and cnic together Version 1.8.9l (June 30, 2009) ============================= Fixes ===== 1. Problem: DMA memory leak and eventualy run out of memory during overnight test Cause: wrong 'size' parameter is sent to pci_free_consistent() Change: pass 'dma->size' instead of PAGE_SIZE as 2nd argument to pci_free_consistent() Impact: All chipsets, Linux, ESX 2. Problem: Linux iSCSI: Soft lockup seen while continuously restarting iscsid service overnight with persistent targets attached (bnx2i_conn_stop+0xc8/0x109) Cause: login resources allocation failure was not handled correctly in create_conn() which caused timer_del_sync() to be called on an uninitialized timer in destroy_conn() path. Change: fixed code to handle return value of bnx2i_conn_alloc_login_resources() and also added a flags to track if conn->poll_timer is initialized or not. Impact: All chipsets, Linux, ESX 3. Problem: Everest1.0:Linux iSCSI:CX4 - kernel panic while running IPv6 login/logout maxsessions stress(bnx2i_cm_remote_abort+0x23/0x41) Cause: open-iscsi does conn_stop()/conn_destoy()/ep_disconnect()/ sess_destroy() in the same order. So if remote RST/FIN is received after conn_destoy() will cause panic because driver will try to access ep->conn->worker_enabled and ep->conn is already set to NULL in conn_destoy(). We found the same issue on another test bed last evening Change: Check ep->conn in cnic upcalls for remote RST/FIN and do not start session recovery if 'ep->conn' is NULL. Also take sess->lock to synchronize remote RST/FIN and conn_destroy() accessing ep->conn Impact: All chipsets Enhancements ============ None Version 1.8.9k (June 02, 2009) ============================= Fixes ===== 1. Problem: Cont00041700 - iSCSI Linux Offload:Everest: rmmod bnx2x or bnx2 causes system to hang Cause: hba_poll_timer is only valid for ESX Change: ifdef code valid only for ESX Impact: All chipsets, Linux Enhancements ============ None Version 1.8.9j (May 30, 2009) ============================= Fixes ===== 1. Problem: Cont00041556 - Linux iSCSI: Kernel panic during target logout Cause: ESX change caused this issue. Method to get session pointer from iscsi_transport layer sess pointer is different for Linux and ESX, With recent changes Linux code was trying to get the sess pointer the ESX way Change: Fix the above logic Impact: All chipsets, Linux, ESX Enhancements ============ None Version 1.8.9i (May 26, 2009) ============================= Fixes ===== 1. Problem: Cont00039906 - Linux iSCSI: Soft lockup seen when performing adapter selftest with more than 10+ sessions connected Cause: bnx2i was taking spinlock before calling cnic->register_device() and cnic would call bnx2i_start() in the same context which actually will sleep waiting for ISCSI_INIT response Change: Fix is not to hold spinlock for the duration of register_device() Impact: All chipsets, Linux, ESX 2. Problem: Cont00041210 - Everest1.0:Linux iSCSI:CX4 - kernel panic while running heavy disk traffic with bnx2i v1.8.7 (bnx2i_conn_main_worker+0x10b/0x70a) Cause: There were several bug fixes to workqueue/tasklet in last week and this panic dump is addressed by it Change: Changes made to support tasklet implementation for ESX broke some of the logic. Cleaned up a bunch of issues related to this Impact: All chipsets, Linux, ESX Enhancements ============ More stable ESX code with tasklet implementation and enhanced task management code. Build 00005 is based on this code. Some of the tasklet and workqueue bug fixes are applicable to both ESX and Linux Version 1.8.7 (May 13, 2009) ============================= Fixes ===== 1. Problem: Various driver crashes in error recovery path Cause: tasklet/workqueue are scheduled when connection is in stopped state. Change: Not to accept any commands if conn_stop() is called on the connection and this will eliminate any tasklet/workqueue scheduling. This was initially reported and more often seen in ESX, but same problem exhists in Linux as well Impact: All chipsets, Linux, ESX Enhancements ============ Further enhancements to tasklet/workqueue code Version 1.8.6 (May 11, 2009) ============================= Fixes ===== 1. Problem: Cont00040971 - iSCSI Boot Linux Offload:NX2: compile error with bnx2i v1.8.5 on SuSE 10 SP2 Cause: In order to support older kernel iscsi_compat.h defines some functions which should have been defined 'static' but are not. This creates trouble when scsi_transport_iscsi.h is included in multiple *.c files. Change: worked around iscsi_compat.h header file issues Impact: All chipsets, SLES10 SP2 2. Problem: Cont00040921 - ESX4.0 build 4.0.0-00000_x86_64 w/ bnx2i - iscsi_cmd_win_closed Cause: not conforming to rfc1982 Change: Fixed serial arithmetic logic as per rfc1982 Impact: ALL chipsets, Linux, ESX 3. Problem: Cont00040512 - ESX4.0 build 4.0.0-00000_x86_64 w/ bnx2i - Disks disappear after overnight stress tests Cause: tasklet was being scheduled without being enabled when connections goes into recovery mode Change: Tasklet is disabled in stop_conn() and enabled in bind_conn() Impact: All chips + ESX40U1 4. Problem: Cont00040920 - ESX4.0 build 4.0.0-00001_x86_64 w/ bnx2i - bnx2i_process_new_cqes+0x7b Cause: This issues is seen only in workqueue implementation for ESX as scsi_host workqueue was not flushed fearing it would affect other connections. But would cause work to be scheduled after connection is torn down or in middle of recovery process Change: per connection tasklet implementation will not exhibit this failure as tasklet is disable in conn_stop() and re-enabled in conn_bind() Impact: All chipsets, ESX40U1 5. Problem: Cont00040918 - ESX4.0 betabuild 4.0.0-00001_x86_64 w/ bnx2i Cause: Duplidate of Cont00040920, please refer to Cont00040920 for more details Change: Duplidate of Cont00040920, please refer to Cont00040920 for more details Impact: All chipsets, ESX40U1 Enhancements ============ ESX40U1 driver changes to use tasklet instead of workqueue for command transmission and CQE processing. Version 1.8.5 (Apr 29, 2009) ============================= Fixes ===== None Enhancements ============ ESX40U1 driver changes to match the updated iscsi_net API's Version 1.8.4 (Apr 29, 2009) ============================= Fixes ===== 1. Problem: Connection setup problems with 570x Cause: Changes to 570X_SQE_DEFAULT macro caused alternate connections to fail Change: reverted back 570X_SQE_DEFAULT to 128 Impact: 5706/5708/5709 Enhancements ============ Performance improvements mentioned above Version 1.8.3 (Apr 26, 2009) Version 1.8.2 (Apr 25, 2009) ============================= Fixes ===== None Enhancements ============ Vmware ESX40U1 driver updates Version 1.8.1 (Apr 25, 2009) ============================= Fixes ===== 1. Problem: Cont00040099 - Linux iSCSI T4.6+ 57710 performance bottleneck at 80K IOps (L2 and Offload) Cause: CQE processing in softIRQ context was becoming bottleneck because 5771x has only on MSI-X vector for iSCSI completion notification. This caused 1 core to be pegged 100% processing completions. Change: Implemented a per connection workqueue to process both command request and completion. This spreads work load to across available cores and boosted IOPS numbers to nearly at par with what should be Impact: 57710/5771/57711E Enhancements ============ Performance improvements mentioned above Version 1.8.0 (Apr 22, 2009) ============================ Fixes ===== 1. Problem: Cont00040267: Linux iSCSI: Kernel panic during cable pull with one iSCSI over native TCP connection + iSCSI offloaded connection Cause: iscsi daemon is calling iscsi_transport->ep_poll() with ep_handle=0xffffffff eventhough driver failed ep_connect() request. This causes ep_poll() to access invalid memory and cause the crash Change: Add additional check to ignore both ep_handle = 0xffffffff and null pointer Impact: 5706/5708/5709/57710/5771/57711E Enhancements ============ changed pci dma memory management code to be more stream lined Version 1.7.0 (Mar 17, 2009) ============================ Fixes ===== 1. Problem: Cont00039999 - Linux iSCSI: Usages count increases for bnx2x when iSCSI sessions are connected via Teton/Xinan devices Cause: Before looking up the route to target IP, there is a requirement that bnx2i has to register with cnic all active devices. cnic won't identify the device if the device is not registered. So when the first connection is offloaded, bnx2/bnx2x module usage count will be incremented once for every corresponding NX2 device in the system even though connection is offloaded on only one. This usage counts will be later decrement to zero when the last connection is torn down. Change: Fix is the unregister all idle devices before returning from ep_connect() Impact: 5706/5708/5709/57710/5771/57711E 2. Problem: Cont00040037 - Linux iSCSI: Need jumbo frame support for Linux iSCSI offload in T5.0 Cause: bnx2i was checking and not allowing connection offload is device's MTU is set to > 1500 Change: changed maximum MTU limit to 9000B Impact: 5706/5708/5709/57710/5771/57711E 3. Problem: Cont00039906 - Linux iSCSI: Soft lockup seen when performing adapter selftest with more than 10+ sessions connected Cause: Multiple problem caused this issue - big connection teardown/ cleanup timeout in bnx2i and bnx2 was swutching off interrupts before propogating stop() call to ULPs Change: bnx2 driver code was reordered to keep interrupts enabled during ULP's stop() call and bnx2i driver timeouts are tuned based on device type Impact: 5706/5708/5709 4. Problem: Cont00039648 - Linux iSCSI: Please add line in README.TXT that states ipv6.ko is a requirement for cnic to load Cause: Documentation enhancement request Change: updated README.TXT to reflect the dependency requirements Impact: 5706/5708/5709 Enhancements ============ None Version 1.6.2 (Mar 10, 2009) ============================ Fixes ===== 1. Problem: Cont00039912 - Linux iSCSI accel - unable to offload on NC532i, says iSCSI not supported Cause: mismatch in PCI Id definition between system include and driver source Change: fixed the mismatch Impact: 57711/57711E Enhancements ============ None Version 1.6.1 (Feb 23, 2009) ============================ Fixes ===== 1. Problem: Performance on 5606/5708 is sluggish & session keeps recovering Cause: 5706/5708 firmware can only handle 172 CQ entries and Everest requirements of SQ/CQ to be integral number of pages was causing this issue and 570x family has no such requirements Change: Execute SQ/CQ size massaging code for 5771X device type only Impact: 5706/5708 Enhancements ============ None Version 1.6.0 (Jan 14, 2009) ============================ Fixes ===== 1. Problem: Cont00038728 - Linux iSCSI:Everest:A1: iscsiadm becomes unresponsive if wrong transport name is used Cause: There was a list corruption in open-iscsi daemon code caused when list element is blindly initialized when it is actually a node in the pend_list. Also conn->link was not initialized when bind_conn() failed which caused crash in destroy_conn() code path. Change: Fixed both open-iscsi user daemon and driver issues Impact: 57710/57711E Enhancements ============ Updated copyright information Version 1.4.9 (Jan 03, 2009) ============================ Fixes ===== 1. Problem: CQ38744 - Everest1.5:Linux iSCSI:CX4 - Unable to connect to more than ~450 sessions, out of host memory Cause: Linux kernel can only address 1G memory which includes all kernel code and data structures. This limitation would not allow us to offload 1024 iscsi connections Change: Limit number of outstanding tasks (SQ size) per connections to 64 Impact: 57711E Enhancements ============ None Version 1.4.8 (Dec 31, 2008) ============================ Fixes ===== 1. Problem: CQ38744 - Everest1.5:Linux iSCSI:CX4 - Unable to connect to more than ~450 sessions, out of host memory Note: This is 1 of 3 fixes made to support 1024 connections. Refer to bnx2i-1.4.7 & netxtreme2-1.8.2c_1.48.7 release notes for other changes Cause: 992 connections limitation was due to limit on max numbers of file descriptors 'bnx2id' application was allowed to open. Default value is 1024, so bnx2id was able to allocate 1023 socket structures and last 31 were not even delivered because the daemon was unable to open char device to issue ioctl. So driver ended up with only 992 tcp ports. Change: Modified application to change RLIMIT_NOFILE parameter to 1056. With this change we were able to successfully open 1024 connections using 57711E device on a x86_64 system Impact: 57711E Enhancements ============ Updated rc script to create '/dev/bnx2i' node during startup Version 1.4.7 (Dec 29, 2008) ============================ Fixes ===== 1. Problem: Unable to allocate endpoint structure for 513th connection Cause: Driver was allocating a total of 512 endpoint structures due to a macro definition Change: defined ISCSI_MAX_ADAPTERS to 8 Impact: 57711E Enhancements ============ None Version 1.4.6 (Dec 22, 2008) ============================ Fixes ===== 1. Problem: Cont00038965 - Everest1.5:Linux iSCSI:CX4 MF- bnx2i cid TCP errors while running iSCSI + netperf stress traffic Cause: queuecommand() would report device offine when sess->lead_conn->ep is NULL. But actually this value will be NULL between the time existing endpoint (EP) is cleaned and a new endpoint is bound in bind_conn() call. This is a valid transient state during connection recovery and driver is suppose to report BUSY and not NO_CONNECT Change: reverted back to old scheme Impact: 5706/5708/5709/57710/57711 Enhancements ============ None Version 1.4.5 (Dec 17, 2008) ============================ Fixes ===== 1. Problem: Driver crash when interface IP address is changed while there are actice connection Cause: spinlock contention Change: fixed spinlock contention Impact: 5706/5708/5709/57710/57711 Enhancements ============ None Version 1.4.4 (Dec 11, 2008) ============================ Fixes ===== 1. Problem: Cont00038936 - LinuxiSCSI: bnx2x Firmware crash dump when loging out of EMC target Cause: Incorrect handling of TCP CONNECT failure caused iscsid to behave improperly with follow on connections, ep_disconnect() was getting called just 1-sec after ep_connect(). According to implementation it should wait 15-secs before timing out, while firmware times out in 9-secs (3 attempts at 3-sec interval). So driver doesn't expect ep_disconnect() to be called before 10-secs after ep_connect() returns Change: Fixed handling of TCP CONNECT failure in driver which avoids 'iscsid' to get into weird state. Also even though ep_disconnect() is called immediately, driver will wait for firmware to complete TCP_CONNECT request with either good or failed status before going ahead with connection cleanup Impact: 5706/5708/5709/57710/57711 2. Problem: Cont00038965 - Everest1.5:Linux iSCSI:CX4 MF- bnx2i cid TCP errors while running iSCSI + netperf stress traffic Cause: Recently changed queuecommand() to report device office if session is not in FFP stage. Actually we have to report device offline only after session recovery timeout (120-secs) is reached Change: reverted back to old scheme Impact: 5706/5708/5709/57710/57711 Enhancements ============ None Version 1.4.3 (Dec 09, 2008) ============================ Fixes ===== 1. Problem: Cont00038871 - Everest1.5:Linux iSCSI:CX4 MF- CONN_DISCON timeout + bnx2x driver assert during cable pull test Cause: Due to open-iscsi interface change, NOOP OUT was not working as expected. open-iscsi user stack added following connection params to determine if NOOP is supported in user daemon or the kernel driver - 1. ISCSI_PARAM_PING_TMO 2. ISCSI_PARAM_RECV_TMO As bnx2i depends on iscsid to implement this feature, it should return -ENOSYS to set_param() call to update above said parameters. Change: After implementing this change, iSCSI NOOP OUT started to behave as expected. Impact: 5706/5708/5709/57710/57711 2. Problem: Cont00038797 - LinuxiSCSI:Segmentation fault when running ifup/down and passing traffic Cause: Partly caused by NOOP OUT issue explained above (Cont00038871) and other issue was not guarding 'active_sess' list while traversing in bnx2i_start_hba_shutdown() routine & not properly handling in-recovery state in TMF code path Change: Fixed above said conditions Impact: 5706/5708/5709/57710/57711 Enhancements ============ None Version 1.4.2 (Dec 03, 2008) ============================ Fixes ===== 1. Problem: Everest1.5:Linux iSCSI:CX4 - bnx2x driver assert while changing MTU size with targets connected Cause: Issue was cause by mutex lock deadlock condition in cnic when unregister_device() is called while bnx2i is still in cnic_stop() function call processing. Change: This issue is worked around in bnx2i by deferring inactive device unregistering till all the connections are torn down Impact: 57711 Enhancements ============ None Version 1.4.1 (Nov 17, 2008) ============================ Fixes ===== 1. Problem: Cont00038537 - Everest 1.5E MF-Linux iSCSI: Unable to iSCSI login to target Cause: bnx2i was requesting a large number of TCP ports than bnx2id can allocate. Change: bnx2i is changed to request 32 TCP ports at a time. Eventually bnx2id will be fixed to handle socket()/bind() call failure Impact: 57711 Enhancements ============ Added support for 57711 Version 1.4.0 (Nov 14, 2008) ============================ Fixes ===== None Enhancements ============ Added support for 57711 Version 1.3.11 (Nov 12, 2008) ============================= Fixes ===== 1. Problem: Cont00038195 - LinuxiSCSI:Bnx2x kernel panic when running read/write test or when the target became unaccessible Cause: There was a possibilty driver will unregister with cnic before all the connections are cleaned up. For such connection only driver resources are freed in ep_disconnect(). Driver assumes chip will be reset when ifdown request is completed and this is true for 5706/5708/5709. However in case of 57710 certain blocks such as CFC/SEARCHER will not be reset if second port is up. Change: So driver will have to wait for all connections to cleanup before returning from NETDEV_GOING_DOWN notification. Also driver will block scsi host before entering clean mode to avoid any futher scsi command being queued with the driver Impact: 57710 2. Problem: Cont00038030 - LinuxiSCSI: Data corruption writing to iscsi target Cause: In Couple of scenarios driver was accessing memory immediately after freeing. Also in wrong memory was cleared because of wrong array index (control bits of ITT was not cleared in case of aborted commands. This would cause when a write command is aborted) Change: Rearranged memory resources freeing and cleaned ITT table indexing code Impact: 57710 Enhancements ============ Enforce max SQ size of 128 for 5706/5708/5709 devices and also adjust to power of 2. Version 1.3.10 (Oct 28, 2008) ============================= Fixes ===== None Enhancements ============ Update RPM dependency in bnx2i.spec file from NetXtremeII to netxtrem2 Version 1.3.9 (Oct 28, 2008) ============================= Fixes ===== None Enhancements ============ Fixed a race condition causing kernel dump when a netdev/inet event is received while session is being torn down. Durning iscsi session tear down process, open-iscsi stack will execute tasks in following order - 1) iscsi logout 2) destroy iscsi connection 3) tear down endpoint (TCP connection) 4. destroy iscsi session This issue will manifest when a netdev/inet event is received b/w #2 and #4 Version 1.3.8 (Oct 26, 2008) ============================= Fixes ===== None Enhancements ============ Updated RPM spec file to reflect module dependency to NetXtemeII instead of bnx2/bnx2x Version 1.3.6 (Oct 16, 2008) ============================= Fixes ===== 1. Problem: Cont00037814 - Linux iSCSI:Everest:A1: Kernel panic when running dt during max sessions test (cnic:cnic_get_bnx2x_ctx+0x59/0x6e) Cause: Couple of issues attributed to this issue, 1. bug in ep structure handling code in bnx2i driver 2. memory corruption due to boundary over stepping in bnx2x driver (fixed in 1.46.9) Change: revamped endpoints offload / destroy list handling code Impact: 57710 2. Problem: Cont00037858 - Linux iSCSI:Everest:A1: bnx2i: ofld_timer: CONN_DISCON timeouts when running login/logout continuously to max number of sessions Cause: bug in ep offload / destroy list handling code in bnx2i driver Change: revamped endpoints offload / destroy list handling code Impact: 57710 3. Problem: Cont00037701 - LinuxiSCSI:EverestA1: Kernel Panic whe running traffic on both ports Cause: same as Cont00037814 Change: see Cont00037814 above Impact: 57710 Enhancements ============ Updated driver logs section in README.TXT Version 1.3.5 (Oct 06, 2008) ============================= Fixes ===== 1. Problem: Cont00037576 - Linux iSCSI:Everest:A1: Unable to connect to more than 64 sessions per port Cause: With 8 pages limit driver was able to allocate only 72 endpoint structures. Change: Doubled number of pages used for endpoint structures to 16 Impact: 57710 2. Problem: Test 5.9 failure with kernel panic Cause: Incorrect handling in error path was causing SCSI-ML to free device resources while some commands are still active. Thus causing kernel panic when driver tried to unmap SG list at a later point in time Change: cleaned up session recovery path and cleanup active command list in case host_reset() failed. Impact: 57710 Enhancements ============ Increased TCP CLOSE timeout to 20-secs from 10 -secs to be in sync with firmware limits Version 1.3.4 (Sept 26, 2008) ============================= Fixes ===== 1. Problem: Cont00037386 - Linux iSCSI: Installing drivers via source tarball will not create a bnx2id startup script Cause: Previous release was partially fixed and user still need to run 'chkconfig' to get it to work Change: Added 'chkconfig' to fix the issue properly Impact: 5706/5708/5709/57710 2. Problem: Cont00037576 - Linux iSCSI:Everest:A1: Unable to connect to more than 64 sessions per port Cause: It was hardcoded in header file Change: Fixed code to limit 64 simultaneous iscsi connection on 5706/5708/5709 and 128 connection on 57710 Impact: 57710 Enhancements ============ Increased num outstanding tasks (SQ size) to 256 for 57710. 570x still has SQ size of 128 Version 1.3.3 (Sept 22, 2008) ============================= Fixes ===== 1. Problem: Cont00037386 - Linux iSCSI: Installing drivers via source tarball will not create a bnx2id startup script Cause: In previous release only carried partial fix by installing only the binary, 'bnx2id' and not the init script Change: updated makefile to copy init script along with 'bnx2id' binary when 'install_usr' build target is issued. This was initially fixed in 1.2.12 and got omitted in later releases Impact: 5706/5708/5709/57710 Enhancements ============ Added debug prints in ep_connect() and ep_disconnect() code path to easily identify option-2 related issues Version 1.3.2 (Sept 14, 2008) ============================= Fixes ===== None Enhancements ============ 1) Inserted BUG_ON() to trap TCP disconnect timeout 2) Turned off TCP timestamp and fixed receive window to 256K 3) Added code to replenish RQ buffers before issuing any iscsi requests Version 1.3.1 (Aug 07, 2008) ============================= Fixes ===== 1. Problem: Cont00035910 - LinuxiSCSI:Kernel panic when running login/logout with 64 sessions Cause: iop mapped memory for connection doorbells was not unmapped and also a small piece of memory was not freed. This caused a slow memory leak and eventually system would run out of memory Change: Fixed memory leak issue Impact: 5706/5708/5709 Enhancements ============ Updates README.TXT file to add 'iface' usage with examples. Fixed a critical corruption issue caused by memset() while clearing SQ/RQ/CQ page table for 57710 devices, failed to adjust actual size of page table which starts at an offset of DB structure size from the base address. Version 1.2.14 (June 20, 2008) ============================= Fixes ===== None Enhancements ============ Updates README.TXT file to clarify Broadcom iSCSI Offload software suite loading process. Fixed init rc script to manually unload bnx2i and cnic driver when bnx2id service is stopped. Earlier we would do 'modprobe -r' which could potentially unload bnx2 module and even bring the network interface down. 'service bnx2id stop' is only intended to unload iscsi(storage) modules, keeping networking components intact. Version 1.2.13 (June 19, 2008) ============================= Fixes ===== 1. Problem: Cont00035285 - DF216309: Open iSCSI Initiators Not Provided for RHEL5.2 and SLES10.2 Cause: This was caused by interface change resulted in changes in iscsi transport. This caused a data structure to be referenced after being freed. Change: Fixed session teardown code take care of this interface change Impact: SLES10 SP2 and 5706/5708/5709 Enhancements ============ Removed all references to 57710 in README.TXT file and going forward Broadcom will release single iscsi-initiator package for Redhat EL 5.0, 5.1 and 5.2 Version 1.3.0 (June 02, 2008) ============================= Fixes ===== None Enhancements ============ Complete support for 57710 added Version 1.2.12 (May 23, 2008) ============================= Fixes ===== 1. Problem: Cont00035452 - Linux iSCSI: Installing drivers via source tarball will not create a bnx2id startup script Cause: In previous release only carried partial fix by installing only the binary, 'bnx2id' and not the init script Change: updated makefile to copy init script along with 'bnx2id' binary when 'install_usr' build target is issued Impact: 5706/5708/5709 Enhancements ============ None Version 1.2.11 (May 22, 2008) ============================= Fixes ===== 1. Problem: Cont00035451 - Linux iSCSI: Typo in line 29 of bnx2id startup script Cause: typo Change: fixed the comment line in code Impact: 5706/5708/5709 2. Problem: Cont00035292 - Unnecessary Set Group ID Permission in bnx2i Source Cause: file permissions got changed unintentionally Change: set correct file permissions for source code files Impact: 5706/5708/5709 3. Problem: Cont00035452 - Linux iSCSI: Installing drivers via source tarball will not create a bnx2id startup script Cause: not implemented Change: added 'install_usr' command to Makefile and document the required steps in README text Impact: 5706/5708/5709 Enhancements ============ None Version 1.2.10 (May 14, 2008) ============================= Fixes ===== 1. Problem: Cont00035222 - DF215961: Cannot Compile bxn2i-1.2.8 on SLES10sp2 Cause: SLES10SP2 back ported create_session() to include 2 additional arguments and thus causing minor compilation warning. Also it would create problems when use attempts to establish an iscsi connection Change: Modified makefile to detect number of argument to create_session by looking at function prototype in header file, include/scsi/scsi_transport_iscsi.h Impact: 5706/5708/5709, uses 'awk' to parse the header file efficiently Enhancements ============ None Version 1.2.9 (May 08, 2008) ============================ Fixes ===== 1. Problem: Cont00035222 - DF215961: Cannot Compile bxn2i-1.2.8 on SLES10sp2 Cause: Similar to Cont00035035, but SLES10 update 2 back ported scsi_set_resid & scsi_get_resid and placed them in include/scsi/iscsi_compat.h whereas RHEL 5.2 put them in include/scsi/scsi_cmnd.h Change: Modified makefile to accommodate these differences Impact: 5706/5708/5709 2. Problem: Cont00034621 - Linux iSCSI Xinan: Multiple iSCSI sessions occasionally do not recover after cable pull Cause: Sending TCP_RESET KWQE on a connection for which option-2 connect was not initiated (TCP_CONNECT 1/3) caused neighboring iscsi connection context memory to corrupt Change: bnx2i will not issue cm_abort() if option-2 connect was not successful, it will directly send request to destroy the context Impact: 5709 3. Problem: Cont00034872 - Linux iSCSI Xinan: Target does not recover when running MPIO over both Xinan ports Cause: duplicate of Cont00034621 Change: See Cont00034621 for details Impact: 5709 Enhancements ============ None Version 1.2.8 (May 02, 2008) ============================ Fixes ===== 1. Problem: Cont00034848 - Linux iSCSI Xinan: No network activity (possible chip lockup) after running pqa script (test 6.1-- Errors from initiator to target) in a loop using IPv6. Cause: wrong ITT was posted with login request causing 5709 firmware to hang. This was caused because upper 2-bits weren't clearing before putting aborted SCSI WRITE command's ITT to free list. Same issue won't happen if aborted command was a SCSI READ, because command type field is '0' for read commands. Also normal scsi completion won't suffer the same as driver clears this field before starting completion processing Change: Driver clears command type fields whenever freeing an ITT value Impact: 5709 2. Problem: Cont00035035 - DF214119: bnx2i-1.2.7 Fails to Compile on RHEL5.2-snapshot6 Cause: Newer Linux api functions, scsi_set_resid() and scsi_get_resid() were back ported to 2.6.18-88 kernel in RHEL5.2 resulting in compilation errors because of duplicate definitions Change: worked around in make file. This is a tricky issue caused by distro's backporting newer features back to older kernels. This causes following scenario - 1. RHEL 5.1 kernel 2.6.18-53 does not define these functions 2. RHEL 5.2 kernel 2.6.18-88 does define these functions 3. kernels 2.6.19.x to 2.6.22.x does not define it 4. kernel 2.6.23.x+ is part of kernel by default This makes it hard as it can't be determined whether to define ourselves or use kernel api's based on linux version as LINUX_VERSION takes into account only first 3 bytes out of 2.6.x-y. We counter this by greping for function prototypes in the include directory and based on grep result define macros which facilitates either local definition or references the kernel api's Impact: 5709 3. Problem: Cont00034274 - Linux iSCSI: Running heavy stress on multiple sessions causes connection resets and other errors Cause: duplicate of Cont00034848 Change: duplicate of Cont00034848 Impact: 5709 4. Problem: Cont00034977 - B57DELLCDT447 Contains Two Different Open iSCSI Packages for RHEL5 Cause: Two open-iscsi packages are for RHEL5.0 and RHEL5.1 Change: updates README text file to reflect the importance of two RHEL related open-iscsi packages Impact: NA 5. Problem: Cont00035034 - DF213523: Offload Driver (bnx2i) not getting installed on RHEL5.2 Cause: Duplicate of Cont00035035, package manager was not able to install the driver because non was built due to compilation error Change: Duplicate of Cont00035035, package manager was not able to install the driver because non was built due to compilation error Impact: NA Enhancements ============ User will be able to compile and install bnx2i on RHEL5.2, but would like to remind users/OEMs that RHEL5.2 does not feature in supported distributions list for this release and only minimal validation is achieved. Version 1.2.7 (Apr 10, 2008) ============================ Fixes ===== 1. Problem: Cont00034704 - Linux iSCSI Xinan: Target occasionally does not recover when running ifup/down Cause: This is an expected behavior based on the very nature of the test script and environment. Test script continously toggles the interface up & down with a time difference of 1-sec. Also the interface is configured to aquire IP address via' dhcp, which actually takes upto several seconds. So iSCSI stack will hardly get a chance to reconnect to target lun and after 120-secs SCSI disk will be taken offline Change: Not applicable (not a bug) Impact: 5709 2. Problem: Cont00034705 - Linux iSCSI: Errors seen when running ifup/down with multiple targets attached Cause: logic issue where a loop variable is not reset for each session processing causing 2nd and subsequent sessions to be retried for infinitely long time. Change: fixed the logic Impact: 5709 Enhancements ============ None Version 1.2.6 (Apr 07, 2008) ============================ Fixes ===== 1. Problem: Cont00034260 - Linux iSCSI: Kernel panic while performing ifup/down with target connected Cause: Shutdown thread was waiting for 10-secs for iscsi driver to cleanup all active session whereas ep_disconnect() thread also has 10-sec timeout for TCP connection shutdown. This was causing shutdown thread to return before connection context destruction Change: TCP connection termination timeout is set to a lower value Impact: 5709 Enhancements ============ None Version 1.2.5 (Apr 03, 2008) ============================ Fixes ===== 1. Problem: Cont00034315 - Linux iSCSI Xinan: Scanning disks during max sessions test causes connection problems Cause: CID range allocated by cnic driver was not in sync with firmware expectation causing firmware to allocate CID range for which memory is not allocated by the driver Change: sync'ed driver range with the firmware range Impact: fixes host memory corruption caused by this mis-match 2. Problem: Cont00034260 - Linux iSCSI: Kernel panic while performing ifup/down with target connected Cause: Timing issue caused cnic driver to free resources & stop hardware while bnx2i is still registered. This resulted in cnic driver crash when bnx2i calls cm_destroy() api call to free 'cnic_sock' Change: During repetitive shutdown process driver avoids async events such as connection completion notifications, teardown and connection destroy taks and relies on top level session freeze to keep sanity Impact: Fixes system crash 3. Problem: Cont00031780 - LinuxiSCSI:Unable to load bnx2id from iscsiBoot on suse X86-64 Cause: RPM package was only install 32-bit version of 'bnx2id' and relied of COMPAT feature in kernel module for interoperability. However bnx2i source package did included a 64-bit version of the binary and user was expected to install manually by hand Change: RPM install script is modified to install 'bnx2id' binary based on system architecture Impact: Manual installed required to get iSCSI boot for 64-bit architecture is no more required 4. Problem: Cont00033922 - Linux iSCSI Xinan: Kernel oops when doing "service network restart" Cause: duplicate of Cont00034260 Change: refer to Cont00034260 for more details Impact: refer to Cont00034260 for more details 5. Problem: Cont00031404 - Linux iSCSI: A successful login occurs eventhough initiator receives login response with T-bit and C-bit set to 1 Cause: open-iscsi user daemon wasn't validating (C-bit && T-bit) on received login response Change: updated open-iscsi code to accomodate this in 6.2.0.742-0.6c (RHEL5.0), 6.2.0.865-0.8b (RHEL 5.1) Impact: minimal 6. Problem: Cont00034385 - DF205266: DKMS RPM for bnx2i will not install with bnx2 and bnx2x present Cause: install script was running 'rpm -qa | grep "bnx2.*rpm"' to determine multiple instances of bnx2 RPM is installed. But 57710 dkms rpm is named "bnx2x-*" which also matches the previous expression misleading script to believe multiple instance of same driver. Change: Modified the search pattern to avoid pitfall Impact: DKMS 7. Problem: Cont00034316 - LinuxiSCSI: When installing bnx2i rpm package on Linux-64, it does not install bnx2id64, iscsiboot needs bnx2id64 Cause: RPM package was only install 32-bit version of 'bnx2id' and relied of COMPAT feature in kernel module for interoperability. However bnx2i source package did included a 64-bit version of the binary and user was expected to install manually by hand Change: RPM install script is modified to install 'bnx2id' binary based on system architecture Impact: Manual installed required to get iSCSI boot for 64-bit architecture is no more required Enhancements ============ None Version 1.2.4 (Mar 17, 2008) ============================ Fixes ===== Couple of issues related to PTE setup and queue size adjustments for 57710 are fixed. Also resolved issues with 'sysfs' entry being read during driver load which used to crash the system because it was triggering context stage buffer and PCI bar register access which are suppose to be initialized during iscsi conn offload process. Driver now checks and returns error if the context stage buffer or the pci bar mapping is not present Enhancements ============ None Version 1.2.3 (Mar 10, 2008) ============================ Fixes ===== 1. Problem: Cont00034202 - linuxiSCSI:bnx2i failed to compile on SLES10SP1 X86-64 Cause: missing pci definition due to older kernel Change: changed code to include 'resource_size_t' only if running Linux kernel >= 2.6.18 Impact: SLES 10u1 testing Enhancements ============ None Version 1.2.2 (Mar 10, 2008) ============================ Fixes ===== None Enhancements ============ Modified code to rearrange additional 'iscsi_kwqe_conn_offload3' to include first RQ PTE followed by first CQ PTE [1 - 7]. As we don't intend to include multiple CQ per connection in initial release, bnx2i will only send '1' additional 'iscsi_kwqe_conn_offload3' Version 1.2.1 (Feb 27, 2008) ============================ Fixes ===== None Enhancements ============ Added docbook style function & structure definition header and defined new kwqe 'iscsi_kwqe_conn_offload3' required for offload support on 57710 Version 1.2.0 (Feb 21, 2008) ============================ Fixes ===== None Enhancements ============ Added initial code to support 57710 device Version 1.1.8 (Feb 20, 2008) ============================ Fixes ===== 1. Problem: Cont00033893 - Linux iSCSI: bnx2id does not automatically get loaded with v1.1.5 Cause: init scripts, bnx2id.redhat & bnx2id.suse included in v1.1.5 was in DOS file format, for that reason it was not executed during system boot Change: Converted init scripts to UNIX format Impact: 5708/5709 iscsi testing Enhancements ============ None Version 1.1.7 (Feb 20, 2008) ============================ Fixes ===== 1. Problem: Cont00033898 - Linux iSCSI: kernel panic when connecting to targets with bnx2i v1.1.5 Cause: Timing issue caused by new interface change b/w bnx2i/cnic/bnx2 Earlier 'pcidev' was available when NX2 device is presented to bnx2i and recently CNIC was modified to expose 'pcidev' only after bnx2i registers the device. But it could happen interrupt is processed in register device context causing kernel panic Change: bnx2i HBA adapter and pci_dev binding is determined in bnx2i_start() instead of waiting for register_device() compl. It is gauranteed bnx2i_start() is called before CNIC interrupts are enabled on the device. Impact: 5708/5709 iscsi testing Enhancements ============ None Version 1.1.6 (Feb 19, 2008) ============================= Fixes ===== 1. Problem: Cont00033899 - Linux iSCSI: RPM build errors on SLES10 SP1 with bnx2i v1.1.5 Cause: missing PCI id macro for 5709 in pci_ids.h header file Change: If not defined driver will define the macro to support older kernel such as 2.6.16 carried by SUSE 10SP1 Impact: 5709 testing on SUSE10 SP1 Enhancements ============ None Version 1.1.5 (Feb 13, 2008) ============================= Fixes ===== None Enhancements ============ bnx2i module is completely de-linked from bnx2 driver. Also bnx2i is modified to adhere to new cnic driver interface specification Version 1.1.4 (Jan 25, 2008) ============================ Fixes ===== None Enhancements ============ IPv6 support added. Version 1.1.2 (Dec 06, 2007) ============================= Fixes ===== 1. Problem: Cont00031780 - LinuxiSCSI:Unable to load bnx2id from iscsiBoot on suse X86-64 Cause: missing 32-bit compat libraries Change: use 64-bit binary distributed in the package Impact: Use 64-bit 'bnx2id' binary in iSCSI boot environment 2. Problem: Cont00032801 - bnx2i: Add 64 bit bnx2id to the release Cause: NA Change: source package includes 64-bit binary under 'bnx2i-1.x.y/bin/bnx2id64' (need to rename as 'bnx2id') Impact: Enables user to build initrd image for 64-bit system 3. Problem: Cont00032141 - Linux iSCSI: Update README for MPIO behavior in Section 5 Cause: default values got changed in the latest open-iscsi package Change: Documentation changes Impact: None 4. Problem: Cont00032671 - Linux iSCSI: Interface up/down stress causes kernel softlockup with 5706S Cause: race condition and also hba shutdown thread was un-necessarily waiting on an event which is mutually exclusive ending up in timeout every single time. This wait cluase speeds hba shutdown process resulted because of 'ifdown' command Change: fixed spin_lock issues and removed unnecessary wait event mentioned above Impact: None Enhancements ============ None Version 1.1.1 (Dec 05, 2007) ============================ Fixes ===== None Enhancements ============ Added init scripts to automatically load driver and the daemon during boot. Version 1.1.0 (Nov 15, 2007) ============================= FIRMWARE - 4.4.0 ======== Fixes ===== None Enhancements ============ NX2 5709 support added Version 1.0.32 (Oct 18, 2007) ============================= FIRMWARE - 3.7.19 ======== Fixes ===== 1. Problem: Cont00031905 - Linux iSCSI: login/logout stress against wintarget with multiple luns causes kernel panic Cause: This was an issue caused by Win Targets wierd behavior of holding on to SCSI INQUIRY response till TMF is sent. Other issue was a race condition when logging off iSCSI session while TMF request is pending. this would clear out all commands while TCM timer was still active. When TMF timer expires, it tries to operate on a command already freed when session logged out. Change: if TMF is active while trying to logout, driver will wait for TMF request to either complete or timeout. Only them it will send iSCSI logout pdu. Impact: iSCSI TMF and iSCSI Logout rocessing 2. Problem: Cont00031884 - Linux iSCSI: Kernel panic with ifdown/up when logged into target with 5708s Cause: This issue was caused by a race condition depending on when GOING_DOWN message is received by the driver. Once this message is received, driver will start cleaning up all active sessions and any session already in recovery mode won't be bothered. But when this bug is hit, GOING_DOWN was received when session was in login in phase (recovery mode) and driver let it continue and return to user. Once bnx2i returns to cnic, cnic driver would release all resources including cnic_sock structures. One of the cnic_sock structure belonged to iscsi session which was going through login phase. This connection will stay alive and will be cleaned up during next iteration of interface bring down and CNIC driver won't find refence to this cnic_sock as it was already freed. Change: When HBA is shuting down, driver will wait for recovering sessions to complete iSCSI, then tear active sessions down before returing to user Impact: HBA shutdown code Enhancements ============ None Version 1.0.31 (Oct 10, 2007) ============================= FIRMWARE - 3.7.16 ======== Fixes ===== 1. Problem: Cont00031787 - Linux iSCSI: Red Hat system becomes unresponsive after cable pull test Cause: SCSI-ML issue which got in 2.6.19 kernel. Run same test on 2.6.23 kernel and it did not exhibit this issue. For more details refer to following URL's https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/118833 http://lists.parisc-linux.org/pipermail/parisc-linux-cvs/2006-September/037006.html Change: To avoid crossing the recursion limit of 19, driver sets 'cmd_per_lun' parameter n scsi_host_template to 16 Impact: Could lower iops when measured on a single iSCSI connection Enhancements ============ None Version 1.0.30 (Oct 05, 2007) ============================= FIRMWARE - 3.7.16 ======== NOTICE - iSCSI License enforcement is turned on. ====== Fixes ===== 1. Problem: Cont00031668 - Linux iSCSI Offload Licensing not enforced Cause: Dupicate of CQ31577, FW identifies the card as HP NIC instead of HP LOM, FW was checking for entire register instead of a specific bit Change: change the checking to refer to only a specific bit in MCP's scratchpad and not the entire register Impact: Licensing should work as expected on oem systems 2. Problem: Cont00031671 - Linux iSCSI: unable to connect to maximum number of sessions (64), on an x86_64 system Cause: Driver was allocating only 40 endpoint structures on 64-bit systems. Driver has a logic of allocating a maximum of #n pages of memory for each control structures (endpoint, connection, session, etc') and #n is set to 4. On a 32-bit system size of endpoint structure is 256B whereas on a 64bit system it is ~400B. So driver was able to allocate 40 endpoint structures Change: increaded number of pages per control structure to '8' Impact: None 3. Problem: Cont00031655 - Linux iSCSI: bnx2i: Error message - cmd not allocated w/ v1.0.29 Cause: one command structure was getting leaked when session goes into recovery due to nop-out timeout Change: NOPOUT requests are also queued in active command queue and freed when session is cleaned up Impact: None 4. Problem: Cont00031662 - Linux iSCSI: Kernel Oops running disktest with maximum sessions test Cause: driver was hard coding "sht->can_queue' parameter to 128 (max outstanding commands issued by SCS-ML). Where as the QP size was decreased using 'sysfs'. It get more complicated as 'can_queue' parameter is advertised when iscsi transport is registered which happens even before 'sysfs' setup. So will have to remove 'sysfs' support for changing SQ/RQ/CQ size and instead provide module parameters to choose these parameters based on requirements for number of the iSCSI connection Change: Removed 'sysfs' support for changing SQ/RQ/CQ size and instead module parameters are included to change these parameters. Also 4 command structures are reserved for slow path (TMF ABORT, NOP-OUT, etc) commands. Impact: None Enhancements ============ Broadcom user daemon is renamed to 'bnx2id' and ioctl support added instead of 'sysfs' Version 1.0.28 (Sep 29, 2007) ============================= FIRMWARE - 3.7.15 ======== NOTICE - iSCSI License enforcement is turned on. ====== Fixes ===== None Enhancements ============ All software components are bundled as RPM packages Version 1.0.27 (Sep 28, 2007) ============================= FIRMWARE - 3.7.15 ======== NOTICE - iSCSI License enforcement is turned on. ====== Fixes ===== None Enhancements ============ Includes updated Firmware and CNIC driver Version 1.0.26 (Sep 26, 2007) ============================= FIRMWARE - 3.7.14 ======== NOTICE - iSCSI License enforcement is turned on. ====== Fixes ===== None Enhancements ============ None Version 1.0.25 (Sep 26, 2007) ============================= FIRMWARE - 3.7.14 ======== NOTICE - iSCSI License enforcement is turned on. ====== Fixes ===== 1. Problem: Cont00031537 - Linux iSCSI: Cable pull broken in v1.0.22 Cause: iscsi driver was not destroying the connection context whenu cm_connect() returns failure, it just cleand up driver data structures. This is uncovered because of recent changes to ARP handling in the cnic driver Change: iscsi driver properly destroys iSCSI connection context when cm_connect() returns with failure Impact: None Enhancements ============ None Version 1.0.24 (Sep 25, 2007) ============================= FIRMWARE - 3.7.14 ======== NOTICE - iSCSI License enforcement is turned on. ====== Fixes ===== 1. Problem: Cont00031513 - Linux iSCSI: Cannot log in to target if the number of pending tasks have changed from the previous login/logout sessions Cause: bug in ISCSI_INIT message processing code in TXP/TPAT Change: Fix the initialization of the iSCSI number of pending tasks for TXP and TPAT Impact: None 2. Problem: Cont00031509 - LinuxiSCSI:iSCSIBoot failed to to successfully login to EMC ratget Cause: Unusual behavior of kernel call neigh_event_send() Change: neigh_event_send() returns error after sending the first ARP entry. This error must be ignored and we should only rely on subsequent NETEVENT_NEIGH_UPDATE for proper neighbour status. Impact: None 3. Problem: Cont00031517 - LinuxiSCSIBoot: Connection is not restored when disconnecting Primary HSRP router Cause: 2.6.16 kernel does not support NETEVENT_NEIGH_UPDATE Change: 2.6.16 kernel does not support NETEVENT_NEIGH_UPDATE, so router failover with gratuitous ARP will be unknown to the driver. To fix this issue, a timer was added to check the ARP entries periodically to detect ARP changes on 2.6.16 kernels. Impact: None Enhancements ============ Includes new CNIC driver, V1.1.19 Version 1.0.23 (Sep 24, 2007) ============================= FIRMWARE - 3.7.13 ======== NOTICE - iSCSI License enforcement is turned on. ====== Fixes ===== 1. Problem: Cont00031529 - Linux iSCSI: EMC CX3 target errors out while running Bonnie++ w/ v1.0.22 Cause: programming error - when target returned "UnderFlow' condition and residual_length = Total expected data length, driver used to mistakenly report DDI_BAD_TARGET error. This was because one conditonal check was coded as "<" instead of "<=" Change: Changed the conditional check to "<=" Impact: None Enhancements ============ None Version 1.0.22 (Sep 21, 2007) ============================= FIRMWARE - 3.7.13 ======== NOTICE - iSCSI License enforcement is turned on. ====== Fixes ===== 1. Problem: Cont00031469 - Linux iSCSI: Kernel oops while logging out during maximum sessions test Cause: The warning and stack dump were caused by excessive calls to neigh_release(). This was caused by the work queue being called in a re-entrant way Change: Driver was changed to use tasklet instead of work queues to fix the problem. Tasklet are guaranteed to be single-threaded and runs at a higher priority than work queues. Impact: None Enhancements ============ None Version 1.0.21 (Sep 19, 2007) ============================= FIRMWARE - 3.7.13 ======== NOTICE - iSCSI License enforcement is turned on. ====== Fixes ===== 1. Problem: Cont00031421 - Linux iSCSI: Hotplug feature - Does not reconnect to target if nic is removed and put back in if there is already an iSCSI session established Cause: Offload driver cannot support this and driver will cleanup all activer iSCSI session/connections which also includes all outstanding commands and even releases the adapter structure as part of hot remove. When the adapter is added there won't be enough state information to restore the session. It is is a good idea to orderly shutdown all iSCSI sessions before removing the device Change: Will not be addressed Impact: None 2. Problem: Cont00031193 - LinuxiSCSI:iSCSIBoot continously drops and then recover iscsi connection Cause: This issue happens when 'iscsid' daemon is killed and restarted while one or more iSCSI session are active. When the daemon is restarted, it does not have reference to old TCP connection but it knows iSCSI session and connection information. So iscsid blindly stops the iSCSI connection, establishes a new TCP connection and tries to bind it to iSCSI connection. This results in a resource conflict situation as there is already a TCP conn bound to iSCSI connection causing a bad state with broken link between EP and CONN structures Change: When driver detects this condition old TCP connection is shutdown and cleaned up before binding the new TCP connection to iSCSI connection Impact: None 3. Problem: Cont00031205 - iscsid does not get the established session info after restarting Cause: This issue happens when 'iscsid' daemon is killed and restarted while one or more iSCSI session are active. When the daemon is restarted, it does not have reference to old TCP connection but it knows iSCSI session and connection information. So iscsid blindly stops the iSCSI connection, establishes a new TCP connection and tries to bind it to iSCSI connection. This results in a resource conflict situation as there is already a TCP conn bound to iSCSI connection causing a bad state with broken link between EP and CONN structures Change: When driver detects this condition old TCP connection is shutdown and cleaned up before binding the new TCP connection to iSCSI connection Impact: None Enhancements ============ None Version 1.0.20 (Sep 17, 2007) ============================= FIRMWARE - 3.7.13 ======== NOTICE - iSCSI License enforcement is turned on. ====== Fixes ===== None Enhancements ============ Event coalescing is disabled Version 1.0.19 (Sep 17, 2007) ============================= FIRMWARE - 3.7.12 + COM (Event Coalescing) ======== NOTICE - iSCSI License enforcement is turned on. ====== Fixes ===== 1. Problem: Cont00031304 - Linux iSCSI: Does not see all the disks after LUN has been remove and then re-added on the target Cause: bug in SCSI sense data handling code - driver was copying entire RQ buffer as is, actually first 2 bytes (length field) should be omitted when copying to SCSI command sense buffer Change: Only actual sense data is copied to sense buffer Impact: None 2. Problem: Cont00031238 - Linux iSCSI: Kernel panic after running disktest (w/various io) to Cisco target overnight Cause: this is caused by race condition when command is completed while TMF request is pending. 'cmd->scsi_cmd' will be set to NULL ptr after completing the command to SCSI-ML and system paniced dereferencing cmd->scsi_cmd when TMF completes waking up the waiting thread. Change: driver checks if the cmd completed while waiting for iSCSI TMF Impact: none 3. Problem: Cont00031131 - LinuxiSCSI:Using HP target iscsi session drops after nop-out timedout after 15 seconds on RH5 Cause: some targets do not explicitly respond to NOPOUTs when there are active commands. These iSCSI targets expect initiator to update sequence numbers from SCSI CMD RESPONSE pdus Change: bnx2i driver will not send nopout on wire when following conditions are met - 1. there are active SCSI commands 2. one or more SCSI commands where sent between this and previous nopout request Instead driver will itself respond to nopout. Infact we can even change iscsid to keep track of 'cmdsn' and send down nopout request only if connect is truely idle. We will evaluate changes to iscsid and work to community to incorporate the change. Impact: Initiator's proactive NOPOUTs are not seen on wire when the iSCSI connection is not truely idle 4. Problem: Cont00031121 - Linux iSCSI: Kernel panic when running ifdown/up test + disktest Cause: In interface going down notification, iSCSI connection context was destroyed without tearing down the TCP connection. Another issue was option-2 s/w was not handling 'SYN - ACK - RST' condition properly. Change: Code is fixed to attempt TCP connection shutdown (FIN/RST) before destroying connection context. Impact: none 5. Problem: Cont00031024 - Linux iSCSI: Keyboard locks up when running traffic to Sanrad w/ Suse10 SP1 Cause: There were a bunch of issue uncovered by this test - 1. race condition in cleanup code 2. error while assigning LUN value during TMF request wqe 3. issue related to RQ producer index posting, from the second wraparound, indices posted was in the range 0x0 - 0x10, 0x8000 - 0x8010. Correct RQ producer index range is 0x1 - 0x10, 0x8001 - 0x8010 (this example considers total of 16 RQ buffers) 4. RQ producer suppose to be increment by driver on every unsolicited PDU that generated a CQE(even without iSCSI data) Change: code changes to take care of all above said issues Impact: none 6. Problem: Cont00031221 - Linux iSCSI: Bonnie++ reports drastic I/O error when running to EMC AX100SCi target Cause: combination of Cont00031304 and Cont00031024 (issue #4) Change: combination of Cont00031304 and Cont00031024 (issue #4) Impact: none 7. Problem: Cont00031203 - Linux iSCSI: LUN rescan does not complete after cable pull when connected to multiple targets Cause: couple of issues attributed to this issue - 1. order of conditional checks - link down check was before session recovery state. Actually order should be reversed 2. old recovery state should be a per session attribute but instead was kept as static variable in bnx2i_queuecommand(). When there were multiple sessions this broke state transition Change: Fixed both the issues Impact: None 8. Problem: Cont00031194 - Linux iSCSI: traffic does not resume on standby nic when cable pulled during MPIO testing Cause: couple of issues attributed to this issue - 1. order of conditional checks - link down check was before session recovery state. Actually order should be reversed 2. old recovery state should be a per session attribute but instead was kept as static variable in bnx2i_queuecommand(). When there were multiple sessions this broke state transition Change: Fixed both the issues Impact: none 9. Problem: Cont00031383 - LinuxiSCSI:iSCSIBoot encounters connection failure during iscsiBoot Cause: Related to option-2 issue of not handling 'SYN - ACK - RST' condition properly. Change: Instead of sending Reset on bad ack sequence segment when expecting syn/ack, just redirect to L2 in order for it to send the reset (for the sake of simplicity) Impact: Second SYN request should succeed in establish the 3-way handshake Enhancements ============ Event coalescing is implemented Version 1.0.18 (Aug 30, 2007) ============================= FIRMWARE - 3.7.11 ======== NOTICE - iSCSI License enforcement is turned on. ====== Fixes ===== 1. Problem: Cont00031121 - Linux iSCSI: Kernel panic when running ifdown/up test + disktest Cause: Driver was not tearing down the connection when interface was brought down. This was causing TCP connection to be active on the target side and won't let initiator to reuse the port. Driver is fixed to attemp TCP connection teardown but firmware needs to fixed as well to either indicate error status to driver or return sending SYN packet when first 3-way handshake fails Change: Driver initiates TCP connection teardown process before cleaning up iSCSI state Note: Need firmware fix to resolve SYN - ACK - RST issue as same issue will resurface when 'ifdown' command is issued when cable is disconnected Impact: none Enhancements ============ None Version 1.0.17 (Aug 29, 2007) ============================= FIRMWARE - 3.7.11 ======== NOTICE - iSCSI License enforcement is turned on. ====== Fixes ===== 1. Problem: Cont00031063 - Linux iSCSI: Kernal panic when attempting target login (w/o authentication) with certain login parameters Cause: this is an iET target implementation issue. Target is not setting 'F' bit in the last datain pdu of a sequence. In this test scenario, MBL = MRDSL (initiator) = 2K and the command was a scsi read \ with exp data length = 4K. Target sends 2 datain's - 1. datasn=0, data segment len = 2K, F=0, S=0 2. datasn=1, data segment len = 2K, F=1, S=1 In first DATAIN pdu, 'F' should have been set to '1'. MIPS firmware correclty detects the error & notifies the driver. Driver actually starts the recovery phase, but every single connection will end up in same fate as the 1st. As this happens in SCSI discovery phase right after the iSCSI login, user shell will never return and iscsid will keep retrying. Change: Fixed driver crash issue and made code changes to iET software to be more 3720 compliant. SWE will publish the code changes to iET development community Impact: none Enhancements ============ Made some performance improvements change in CNIC driver which should avoid some spurious interrupts under heavy I/O Version 1.0.16 (Aug 23, 2007) ============================= FIRMWARE - 3.7.11 ======== NOTICE - iSCSI License enforcement is turned on. ====== Fixes ===== 1. Problem: Cont00030122 - Linux iSCSI: Disk does not reappear after cable pull on Sanrad target Cause: link change events was not handled in iscsi driver Change: Link change events are handled in driver correctly and bnx2i driver will not issue new scsi commands / scsi tmf requests to chip if the link is down Impact: none 2. Problem: Cont00031024 - Linux iSCSI: Keyboard locks up when running traffic to Sanrad w/ Suse10 SP1 Cause: This issue uncovered few bugs - 1. race condition in cleanup code 2. there was a coding error while assigning LUN value during TMF request wqe formation 3. logic error in RQ producer index posting - from second RQ index wrap around, producer index posted was (0x0 - RQ_Size) and (0x8000 - (0x8000 + RQ_Size)). Correct indices range is (0x1 - RQ_Size) and (0x8001 - (0x8001 + RQ_Size)) Change: All above said issues were resolved Impact: none Enhancements ============ None Version 1.0.15 (Aug 22, 2007) ============================= FIRMWARE - 3.7.11 ======== NOTICE - iSCSI License enforcement is turned off. ====== Fixes ===== 1. Problem: Cont00030809 - Linux iSCSI: Able to log in to target when FirstBurstLength > MaxBurstLength Note : Check more accurate description of issue at hand when this issue was first resolved Cause: To be in sync with SW open-iscsi implementation, offload driver will not allow FBL > MBL when either immediate data or unsolicited data is enabled, irrespective of target advertised MRDSL Change: Not to allow FBL > MBL when either immediate data or unsolicited data is enabled Impact: None Enhancements ============ None Version 1.0.14 (Aug 21, 2007) ============================= FIRMWARE - 3.7.11 ======== NOTICE - ====== iSCSI License enforcement is turned off. Also TCP port binder utility is bundled in this release, user has to start 'portbind' daemon before attempting to establish iSCSI sessions Fixes ===== 1. Problem: Cont00030892 - Linux iSCSI: Enhancement Request - Print out appropriate message when session cannot be established due to restriction in iSCSI licenses Cause: MIPS firmware was returning single failure error code Change: MIPS firmware returns newly defined error code if unable to allocate iSCSI context space Impact: None 2. Problem: Cont00030042 - Linux ISCSI - Session freezes running ISCSI initiator at 10Mb/s-Hd Cause: iscsi_discovery script under open-iscsi/utils folder was used to discover and connect to targets. This scripts was using iSER to connect to target, so in effect 2 simulaneous connections were made to target Change: not to use iscsi_discovery Impact: None 3. Problem: Cont00031024 - Linux iSCSI: Keyboard locks up when running traffic to Sanrad w/ Suse10 SP1 Cause: race condition in cleanup code and also there was a coding error while assigning LUN value during TMF request wqe formation Change: cleaned up error path to hammer out few remaining bugs Impact: More stable error recovery code 4. Problem: Cont00031040 - Linux iSCSI: Kernel oops occurs between long transmit timout and recovery. Cause: Same as Cont00031024 Change: Same as Cont00031024 Impact: Same as Cont00031024 5. Problem: Cont00029844 - Linux ISCSI - Bonnie++ fails while testing against Linux Target Cause: Same as Cont00031024 Change: Same as Cont00031024 Impact: Same as Cont00031024 6. Problem: Cont00030809 - Linux iSCSI: Able to log in to target when FirstBurstLength > MaxBurstLength Cause: This is a iSCSI target implementation issue - during login reponse following parameters were agreed b/w target and the initiator - 1. MaxBurstLength (MBL) - 32768 2. FirstBurstLength (FBL) - 65536 3. MaxReceiveDataSegmentLength Initiator - 131072 (advertised) 4. MaxReceiveDataSegmentLength Target - 8192 (not advertised, spec defaults) 5. ImmediateData=Yes 6. InitialR2T=Yes When all these parameters are put together Initiator can only send 8192B of immediate data and no unsolicited data. So any negotiated FBL value greater than 8192 is a waste and target might be ignoring it. Change: Third party issue Impact: Won't be addressed Enhancements ============ Fixed one issue related to iSCSI R2T statistic counter update code. Also 'portbind' utility is bundled with this release and the user has to start the daemon before attempting to establish iSCSI sessions Version 1.0.13 (Aug 07, 2007) ============================= FIRMWARE - 3.7.10_b0 ======== NOTICE - iSCSI License is required to use iSCSI Offload ====== Fixes ===== Check CQ resolution information in 1.0.12 (open community release) 1. Cont00030950 2. Cont00030948 3. Cont00030903 4. Cont00029670 5. Cont00030227 6. Cont00030817 Enhancements ============ None Version 1.0.12 (Aug 06, 2007) ============================= FIRMWARE - 3.7.10_b0 ======== NOTICE - iSCSI License is required to use iSCSI Offload ====== Fixes ===== 1. Problem: Cont00030950 - Linux iSCSI: FIN packet is NOT sent out from initiator after each target logout. Cause: Driver was using a single flag to mark FIN received and RST received. Driver used to skip cm_close() path when this flag is set and directly initiate connection context destroy Change: Now this flag is separated into 2 different flag bits and driver will take following action based on state machine - 1. FIN received - initiated an option-2 request to send FIN if remote socket layer sent us FIN either with logout respons PDU or standalone TCP segment with FIN flags set 2. RST received - will skip cm_close() path and directly proceeds to destroy connection context Impact: should also resolve occational "4 - encountered connection failure" error condition when attempting to create a new iSCSI connection 2. Problem: Cont00030948 - Linux iSCSI: Kernel Oops occurs after 3-way handshake (for target login) failed. Cause: In ep_disconnection thread driver tried to dereference a null pointer, ep->sess. this structure element is assigned correct value in conn_bind() routine and this routine is not called when ep_connect() fails because of 3-way handshake failure Change: Check validity of ep->sess pointer before de-referencing Impact: None 3. Problem: Cont00030903 - Linux iSCSI: Cannot log in to target after unloading/loading iSCSI offload drivers if iscsid is not restarted Cause: Everytime is driver is unloaded and reloaded, it is not guarenteed the same 64-bit handle is allocated to iSCSI transport name. 'iscsid', open-iscsi user daemon will cache transport attributes/properties only when the transport name is first discovered. This will result in 'iscsid' trying to use the stale transport handle which is not recoqnized by kernel iscsi tranport module Change: 'iscsid' is changed to check for changed transport handles of existing transport names while scanning iscsi transports directory for updates Impact: Need to co-ordinate with Mike Christie to push this change upstream 4. Problem: Cont00029670 - Linux ISCSI - encounter error (4 - encountered connection failure) when loging to the target Cause: related to Cont00030948, as initiator did not send FIN - ACK, socket was alive at the other end. This causes target to ignore SYN packet when tuple matches with exisiting active connection and send an ACK segment instead Change: Driver code is modified to gracefully shutdown the connection with a FIN/ACK TCP segment before destroying the iSCSI connection context. This ensure ordely shutdown of TCP socket at the other end. Impact: None 5. Problem: Cont00030227 - Linux iSCSI: Login/logout and traffic stress test causes kernel panic Cause: KCQ context was not properly re-initialize when driver tries to stop KCQ and re-init KWQ/KCQ Change: driver and mips firmware was fixed to correctly re-initialize KCQ context when KWQ/KCQ is re-initilaized by the driver Impact: None 6. Problem: Cont00030817 - Linux iSCSI: Login/logout stress causes iscsid process to disappear Cause: related to Cont00030227 Change: refer to Cont00030227 entry above Impact: None Enhancements ============ Driver code was modified as per review comments / suggestions from Arlando Carvalho de Melo Version 1.0.11 (Aug 02, 2007) ============================= FIRMWARE - 3.7.10_a0 ======== Fixes ===== None Enhancements ============ changed a couple of print messages for initial Linux community Version 1.0.10 (Aug 02, 2007) ============================= FIRMWARE - 3.7.10_a0 ======== Fixes ===== 1. Problem: Cont00029443 - Linux iSCSI: iSCSI licenses in xDiag not enforced Cause: not implemented as licensing scheme was finalized very recently Change: Licensing code is implemented in MIPS firmware Impact: iSCSI Offload won't work on engineering boards / servers LOMs which does not carry proper licensing 2. Problem: Cont00030863 - Linux iSCSI: Transport name for 5706 devices is titled bcm5708-xxxxxx w/ v1.0.07 and above Cause: PCI device ID field was cleared by mistake which cased driver to choose the default device type, '5708' Change: fixed in code Impact: transport name format for 5706 devices will be 'bcm5706-xxxxxx' Enhancements ============ None Version 1.0.09 (July 31, 2007) ============================= FIRMWARE - 3.7.9_a1 ======== Fixes ===== 1. Problem: Cont00030788 - Linux iSCSI: CHAP is broken in v1.0.07 Cause: Bug in connection state machine prevented driver from sending multiple iSCSI login requests to firmware Change: connection state machine changed to take care of this issue Impact: none Enhancements ============ None Version 1.0.08 (July 30, 2007) ============================= FIRMWARE - 3.7.9_a1 ======== Fixes ===== 1. Problem: Cont00030302 - Linux iSCSI: Session disconnect and kernel panic when formatting EMC target w/ NOP Out interval set to 10 Cause: there were a few repeated iSCSI protocol warning messages Change: Driver changed to display each warning once for each session Impact: none 2. Problem: Cont00029546 - Linux iSCSI: Requires upgrade to 2.6.19 kernel on Suse10 Cause: SLES10 update 1 had older open-iSCSI components Change: SLES10 SP1 has a newer open-iSCSI and we don't need kernel upgrade Impact: none 3. Problem: Cont00030820 - Linux iSCSI: Error messages seen on Cisco MDS 9216 target w/ v1.0.07 Cause: FW generates iSCSI Error KCQE for each iSCSI protocol violation whether is configured to be treated as warning or error. So driver will priting message for each indication, this caused a flury of messages and slowing down the system. Now driver is changed to print each type of warning only once. Change: Driver prints message only once for each iSCSI protocol violation which is configured to be treated as WARNING and not an ERROR Impact: none 4. Problem: Cont00029689 - Linux iSCSI: Maximum of 16 iSCSI sessions supported Cause: Driver was limiting max offloaded connections to 32 Change: driver and FW are equipped to support upto 64 iSCSI connections Impact: none 5. Problem: Cont00030805 - Linux iSCSI: iSCSI Rx Statistics not incrementing w/ v1.0.07 Cause: issue was introduced in v1.0.07 when code was revamped to meet Linux coding standards. A stale structure element was being check to determine whether the completion is for READ or WRITE command. 'Cuz of constant value of this absolete structure member, same code path was take all the time. Change: Correct structure member is referenced to determine whether the command is SCSI READ or WRITE IMP: currently couple of counter are not correctly implemented in FW and should be taken care in next release. Other than these (R2T/DATAOUT pdu count) everything else look to be fine. Impact: none Enhancements ============ This release is tested on SUSE Enterprise Linux Server 10 (Service Pack 1). Open-iSCSI packaged with SLES 10 SP1 works with offload iSCSI driver and we do not require kernel update on SLES Version 1.0.7 (July 25, 2007) ============================= FIRMWARE - 3.7.7 ======== Fixes ===== 1. Problem: Cont00030060 - Linux iSCSI: Hotplug using fakephp driver w/ iSCSI drivers loaded does not work Cause: Hotplug feature was incomplete Change: This is implemented correctly in cnic as well bnx2i driver in version 1.0.7 release Impact: Hotplug feature is fully supported 2. Problem: Cont00030302 - Linux iSCSI: Session disconnect and kernel panic when formatting EMC target w/ NOP Out interval set to 10 Cause: couple of issue attirbuted to this - 1. race condition in driver caused by not properly guarding critical sections 2. EMC target has issues handling nop-out requests when link is not idle, i.e. if a SCSI command follows the nop-out, it will not respond with nop-in. This caused system crash as the driver was not properly recovering from this failure. Change: System crash is fixed and the initiator reconnects to target after tearing down the connection Impact: None 3. Problem: Cont00030013 - Linux iSCSI: Running disktest read/write with NOP Out interval set to 10 causes system lockup Cause: there was a bug in 'cmdsn' assignment code Change: fixed 'cmdsn" assignement code Impact: None 4. Problem: Cont00030066 - ISCSI Linux - System hangs when issue a couple of ifdown/ifup command Cause: There were few bugs in iscsi driver not properly synchronizing events such as connection setup and interface reset happening simultaneosuly. During ifdown, the cnic will shutdown and a number of bugs were triggered. The L4 connection code did not unregister, and so during subsequent ifup, it could not be registered again. There was also a lock imbalance when L4 connection code tried to register again, and this caused the soft lockup. Change: Now it's all taken care and also driver tracks age of the adapter (number of times it's reset) which allows iscsi driver to detect if the network interface is reset between 2 events from iscsi daemon, e.g. connect establishment and login pdu send Impact: None 4. Problem: Cont00029719 - Linux iSCSI: Enhancement Request - MTU size > 1500 should not be allowed for bnx2 driver Cause: bnx2i driver was not checking MTU Change: bnx2i driver will disallow any iSCSI connection offload if network device's MTU is > 1500B Impact: Enhancements ============ Source code was revamped to meet Linux coding standards Version 1.0.6 (July 10, 2007) ============================= FIRMWARE - 3.7.6_A0 ======== Fixes ===== 1. Problem: Cont00030435 - Linux iSCSI: Cannot log into certain targets w/ driver package v1.0.05 Cause: Linux iSCSI package version 1.0.5 contained firmware version 3.7.4 and it seems the firmware has this issue. This issue not seen with firmware 3.7.6_a0 Change: new firmware image Impact: none Enhancements ============ None Version 1.0.5 (July 06, 2007) ============================= Fixes ===== 1. Problem: Cont00030060 - Linux iSCSI: Hotplug using fakephp driver w/ iSCSI drivers loaded does not work Cause: Hotplug was not implemented properly Change: Support was added in bnx2i driver and also bnx2i-cnic driver interface was upgraded to support hotplug Impact: all of login - logout, driver load - unload test cases need to be re-run to thoroughly validate the interface change Enhancements ============ 1. This release includes iSCSI context dump utility and the required driver hooks is included in this release 2. bnx2i and cnic driver interface changed quite a bit while adding hotplug support Version 1.0.04 (May 30, 2007) ============================= Fixes ===== None Enhancements ============ Added print statement to display network interface and iSCSI transport names for each NX2 device enumerated by the driver. Other enhancements include cosmetic changes to README_iSCSI.txt file and the bnx2 driver includes latest mips firmware. Version 1.0.03 (May 29, 2007) ============================= Fixes ===== 1. Problem: Cont00029452 - Linux iSCSI: Error messages seen during login/logout on Equallogic target with v1.0.01 Cause: iSCSI driver was attempting to do session recovery every time it received a TCP FIN or RST from the remote peer. Actually session recovery has to attempted only if the sess is in FFP state. Change: checks are put in place to avoid any un-necessary recovery attempts Impact: none 2. Problem: Cont00029655 - Linux ISCSI - Seeing error in the /var/log/messages when connecting to Linux target Cause: duplicate of Cont00029452 Change: see notes for Cont00029452 Impact: none 3. Problem: Cont00029662 - Linux iSCSI: Problem formatting EMC target Cause: protocol violation (invalid LUN field in R2T PDU) by the target Change: removed couple of strict protocol checking in MIPS firmware Impact: might affect iSCSI protocol validation certifications, will reinstate the checks once we have this fixed in the target end. 4. Problem: Cont00029690 - Linux iSCSI: Login attempt to 17th session causes the 16th session to be dropped Cause: 'cid_free_cnt' was not decremented after allocating a 'iscsi_cid' from the free list. This caused false queue full condition even when all the entries are allocated. Change: 'cid_free_cnt' is properly updated while allocating iscsi_cid from the free pool Impact: driver will gracefully turn down request to open 17th connection 5. Problem: Cont00029535 - Linux iSCSI: iSCSI session drops and fails to recover Cause: There was a diconnect between BD table allocation and what is advertised to the SCSI layer. Driver was allocating BD table with max 32 entries for each command and what was registered with SCSI-ML was a bigger value. Change: Driver now allocates BD table of size equal to 'sg_tablesize' value specified in scsi_host_template structure Impact: None 6. Problem: Cont00029432 - Linux iSCSI: Does not automatically reconnect to target after cable pull test Cause: 'fdisk -l' will result in couple of read commands and these gets queued up in the TX pipeline (retransmission queue) and firmware will not complete CMD_CLEANUP requests for commands that have some entries in the retransmission queue. Unless the number of CMD_CLEANUP requests issued and responses that got completed match, driver will assume connection can't be shutdown properly. Change: Driver will teardown connection without cleaning up the commands when needed and it is the right thing to do. Impact: None Bug fixes in other modules : -------------------------- a) Cont00029590 - Linux iSCSI: Unable to connect to iSCSI target on a tagged vlan using offload iSCSI Fixed in cnic driver - vlan was not supported by the option-2 component of cnic driver. Code was added to support vlan tagging and checking if the route to desitination is over a vlan interface. cnic driver will set correct VLAN id while sending down option-2 connect request. b) Cont00029579 - Linux iSCSI: Running ethtool -t with target connected causes kernel panic Fixed in bnx2 driver - Asynchronous reset during self-test causes the cnic driver to crash. The fix is to disallow offline selftest when cnic driver is loaded. Version 1.0.02 (May 22, 2007) ============================= Fixes ===== 1. Problem: Cont00029425 - Linux iSCSI: Issue when connecting to 16+ LUNs Cause: RQ buffers replenish code was commented out. By default iSCSI QP is created with 16 RQ buffers, so were we allowed to discover 16 SCSI LUNs. For the 17th LUN firmware did not have RQ buffer to place sense data. Change: cleaned up RQ buffer replenish code Impact: can connect to > 16 LUNs and run I/Os 2. Problem: Cont00029532 - Linux iSCSI: Running more than 64 outstanding I/Os on multiple LUNs w/ disktest has issues Cause: iSCSI initiator was not properly honoring the iSCSI Session Command window presented by the target. Netapp is actually only providing command window of 64 and once violated would drop the connection via' REJECT and ASYNC messages. Change: iSCSI driver is taking care of iSCSI command window correctly 3. Issues fixed in other modules - a) Cont00029404 - Linux iSCSI: Unable to login to Cisco MDS 9216 Fixed in chip software (MIPS firmware) - Wrong KCQE opcode was due an error in error reporting mechanism. New FW version 3.7.1.A0 fixes this. b) Cont00029415 - Linux iSCSI: HP target rejects NOP Out from our driver Fixed in chip software (MIPS firmware) - The correct opcode is sent to the wire now. Fixed in ver 3.7.1.A1 c) Cont00029542 - Linux iSCSI: Problem formatting Stringbean target with ext3 file system Fixed in chip software (MIPS firmware) - The problem was present due to wrong error reporting mechanism in FW. This mechanism is fixed in new FW version 3.7.1.A0 d) Cont00029571 - Linux iSCSI: Adding new session causes previous session to be dropped on Equallogic Fixed in chip software (MIPS firmware) - Wrong cam index handling caused the wrong connection to be flushed away from cam while removing other coonnection e) Cont00029579 - Linux iSCSI: Running ethtool -t with target connected causes kernel panic Fixed in bnx2 driver - Asynchronous reset during self-test causes the cnic driver to crash. The fix is to disallow offline selftest when cnic driver is loaded. f) Cont00029634 - Linux iSCSI: Changing MTU size w/ drivers loaded causes kernel panic Fixed in bnx2 driver - For now, the bnx2 driver will not permit MTU changes after CNIC is loaded. To change the MTU, you need to do so before loading the cnic driver. A better method will be available in future versions. g) Cont00029366 - Linux iSCSI: Unable to connect to EMC AX100SCi Fixed in chip software (MIPS firmware) - The bug is due to target TCP protocol vioaltion (not our bug actually). Now once we support window scale option - this issue is resolved. Enhancements ============ Implemented bnx2i driver maintained iSCSI statistics (Cont00029583). Some of the statistics counters are to be implemented by MIPS firmware and the interface specification. Once those are in place Cont00029583 will be resolved. Also default value of HC_COMP_PROD_TRIP is changed from 0x00020004 to 0x00020008 to boost 2 port performance Version 1.0.01 (May 08, 2007) ============================= Fixes ===== 1. Problem: Cont00029362 - Linux iSCSI: Proactive NOP Out not handled by the driver Cause: 'CmdSN' was not specified in nopout SQ WQE and was always accompanied with cmdsn value of 0x0000000. Also NOPIN received in response to Initiator's proactive NOPOUT was not propogated to open-iscsi user daemon. Change: correct 'cmdsn' is used while posting NOPOUT request to ship and also code was added to send nopout pdu header to user daemon Impact: NA 2. Problem: Cont00029416 - Linux iSCSI: Login/logout stress causes kernel panic Cause: System crashed because of an issue in KCQ processing code in the CNIC driver Change: Refer to CNIC driver's release notes for further information Enhancements ============ None. Version 1.0.00 (April 27, 2007) =============================== Initial release to QA team. This release will support most iSCSI full feature operations including 1. SCSI CMD, TMF, NOPIN, NOPOUT, ASYNC and LOGOUT 2. REJECT is currently not supported 3. All IO size from 512B to 512KB Driver unload and reload is also supported. This driver will work on Linux Kernel 2.6.18 and 2.6.19 and open-iscsi software 2.0-724 or later is required to make connections to iSCSI targets. iSCSI target discovery using 'SendTargets' is the only one tested so far, but it should matter to bnx2i as complete discovery is handled by the open-iscsi user code. Following targets were used during initial debugging stages and should be fully supported - 1. Equallogic PeerStorage PS100E 2. Netapp Target - FAS250, FAS270 3. Linux Software Target - iET 4. Microsoft's StringBean target, minimal validation by developers