                          ============================
                           R E L E A S E    N O T E S
                          ============================

                         Broadcom NetXtreme II iSCSI Driver
                            	For Linux

                  Copyright (c) 2006-2012 Broadcom Corporation
                              All rights reserved.

Version 2.7.2.1k (Mar 06, 2012)
===============================
  Fixes
  =====
    1. Problem: Cont00061985 - fails to build on RHEL5.7x32
       Cause:   The /usr/src/kernels/<KVER>-<ARCH> linux src path
                was never included in the Makefile
       Change:  Updated the Makefile to include this
       Impact:  All


Version 2.7.2.1j (Mar 02, 2012)
===============================
  Fixes
  =====
    1. Problem: Cont00061911 - version incorrect
       Cause:   The previous version did not get updated
       Change:  Version is now updated to 2.7.2.1j
       Impact:  All


Version 2.7.2.1i (Feb 28, 2012)
===============================
  Enhancements
  ============
    1. Added definition for ISCSI_KCQE_COMPLETION_STATUS_PARITY_ERR


Version 2.7.2.1h (Feb 16, 2012)
===============================
  Enhancements
  ============
    1. Updated README


Version 2.7.2.1g (Feb 06, 2012)
===============================
  Enhancements
  ============
    1. Updated README


Version 2.7.2.1f (Jan 31, 2012)
===============================
  Fixes
  =====
    1. Problem: Cont00061303 - error_mask1 and error_mask2 module
                parameters do not work
       Cause:   The error_mask overriding mechanism has a bug which
                didn't allow it to work properly.
       Change:  Fixed the bug and also changed the error_mask1/2
                type attribute from int to uint so the MSB of the
                parameters can be set
       Impact:  All


Version 2.7.2.1e (Jan 12, 2012)
===============================
  Enhancements
  ============
    1. Fixed compilation for RHEL5.8


Version 2.7.2.1d (Jan 04, 2012)
===============================
  Enhancements
  ============
    1. Minor optimization to the iSCSI statistics collection code
    2. Adapted to use the newly introduced bnx2x_mfw_req.h header
    3. Updated Copyright year
    4. Fixed the proper notification to the iscsi daemon to handle
       conn failure when NETDEV_GOING_DOWN event arrives first


Version 2.7.2.1c (Dec 21, 2011)
===============================
  Enhancements
  ============
    1. Minor optimization to the iSCSI statistics collection code
    2. Added UPDATE_CONN failure detection to prevent from entering FFP


Version 2.7.2.1b (Dec 01, 2011)
===============================
  Enhancements
  ============
    1. Added support for iSCSI statistics collection
    2. Fixed kthread freezing bug for RHEL5.X and SLES11SP1 distros


Version 2.7.0.4i (Nov 01, 2011)
===============================
  Enhancements
  ============
    1. Fixed compilation for SLES11sp2 beta8+


Version 2.7.0.4h (Sep 15, 2011)
===============================
  Fixes
  =====
    1. Problem: Cont00056438 - Driver panic running Super Stress w/
                Error Recovery
       Cause:   The kernel panic was caused by a race condition between
                the connection establishment retrival of the
                ISCSI_PARAM_CONN_ADDRESS parameter and ep_disconnect.
       Change:  Fixed the race condition by employing the bnx2i_resc_lock
                to lock the bnx2i_conn and bnx2i_ep association.
       Impact:  RHEL6.1/SLES11SP1 and older


Version 2.7.0.4g (Aug 22, 2011)
===============================
  Fixes
  =====
    1. Problem: Cont00057987 - Can't compile under RHEL6.2
       Cause:   The param_mask and host_param_mask has been moved to
                use the attr_is_visible routine
       Change:  Made the proper modification
       Impact:  All


Version 2.7.0.4f (Aug 13, 2011)
===============================
  Fixes
  =====
    1. Problem: Cont00057829 - iscsi ping timeout and session flapping
                connected to nx4 target
       Cause:   Every once in a while, this target would send an async NOP-in
                packet requesting a NOP-out response (TTT != 0xFFFFFFFF).
                There's a bug in the NOP-out send code where big endian was
                forced upon the TTT param instead cpu specific.
       Change:  Added a be32_to_cpu conversion in the TTT setting.
       Impact:  All


Version 2.7.0.4e (Jul 27, 2011)
===============================
  Fixes
  =====
    1. Problem: kernel panic observed when performing ifup/down with I/O under
                SLES11SP2 beta1
       Cause:   The newer kernel requires a bnx2i patch which handles the newly
                defined get_ep_param instead of using the get_conn_param directly
       Change:  Ported over the get_ep_param patch from upstream.  This will be
                employed for newer kernels/distros (RHELS6.2+/SLES11SP2+/Linux
                kernel 2.6.38+)
       Impact:  All

  Enhancements
  ============
    1. Added bnx2i_compat.h to hide all backwards compatibility code.


Version 2.7.0.4d (Jul 19, 2011)
===============================

  Enhancements
  ============
    1. From linux-iscsi, a problem was found in the rq_affinity code which
       prevented HT cpu cores from being scheduled for block I/O processing.
       This severely hampers iSCSI performance if we use the sc->request->cpu
       for kthread scheduling.  The sc->request->cpu will no longer be employed
       in the kthread scheduling until further notice.

    2. Restored the vlan_id from indicate_netevent in accordance to the same
       change in CNIC.


Version 2.7.0.4c (Jul 13, 2011)
===============================

  Enhancements
  ============
    1. Removed the vlan_id from indicate_netevent in accordance to the same
       change in CNIC.


Version 2.7.0.4b (Jul 12, 2011)
===============================

  Enhancements
  ============
    1. Fixed the illegal use of sc->request->cpu as ported from upstream code.
    2. Added support for kernel 3.0.xx compilation.


Version 2.7.0.3c (Jun 20, 2011)
===============================

  Enhancements
  ============
    1. Modified the init procedure to skip the registration to CNIC if
       iSCSI is not supported.
    2. Augmented the SCSI host template parameters can_queue and cmds_per_lun
       for performance optimization.
    3. Synchronized with several minor fixes from the upstream code.


Version 2.7.0.3b (Jun 02, 2011)
===============================

  Fixes
  =====
    1. Problem: Cont00051898 - iSCSI Read throughput dips at 512KB with higher
                qdepths
                Cont00051896 - iSCSI Read throughput under performs at lower
                request sizes with higher qdepths
       Cause:   Both problems are caused by a certain deficiency in the existing
                iSCSI fast path completion code under higher qdepth operations.
       Change:  The iSCSI fast path completion code has been completely retuned
                to include optimization such as using kthreads and a new event
                coalesce formula.
       Impact:  All

  Enhancements
  ============
    1. Removed 57713 and added 57800/57810/57840_MF/VF support.


Version 2.7.0.2b (May 03, 2011)
===============================

  Fixes
  =====
    1. Problem: Cont00054496 - Session continuously drops and reconnects
                with sq_size = 16 against EQL target
       Cause:   The ccell setup in the chip was not at 1/2 of the outstanding
                task setup.  This causes the fw to reuse a ccell which
                wasn't available.
       Change:  The ccell setup will now be reinitialized accordingly after
                the sq_size adjustment.
       Impact:  All

    2. Problem: Can't compile against upstream server
       Cause:   The parsing of the kernel version string requires a '-' or
                a '.' as the delimiter which is missing when running any
                upstream kernel
       Change:  Modified the kernel version parsing string in the Makefile
                to accommodate for this
       Impact:  All

  Enhancements
  ============
    1. Removed obsolete installation instructions from the README.


Version 2.7.0.1b (Mar 29, 2011)
===============================

  Enhancements
  ============
    1. Added support for E3 (57800, 57810, and 57840)


Version 2.6.4.1e (Mar 22, 2011)
===============================

  Fixes
  =====
    1. Problem: CQ53773 - bnx2i -WARN CONN_DISCON timeout after setting
		sq_size to 16
       Cause:   The chip's sq memory was being overdriven where as there
		is no mechanism in the code to flow off the SCSI layer
		from sending more commands down
       Change:  Added a guard to flow off the SCSI layer from queuing more
		than the chip's sq limit
       Impact:  All

  Enhancements
  ============
    1. Added support for XenServer 2.6.32 kernel.


Version 2.6.4.1d (Mar 15, 2011)
===============================

  Fixes
  =====
    1. Problem: bnx2x panic was observed under various recovery PQA tests
       Cause:   The size of the RQ doorbell was changed from 16 to 64
       Change:  Fixed the RQ doorbell size in the driver
       Impact:  5771X


Version 2.6.4.1c (Feb 28, 2011)
===============================

  Enhancements
  ============
    1. Optimized the iSCSI fast path arming procedure; CQE rescan and
       skip the 0xFFFF check.

    2. Modified the Makefile to filter out unsupported distro compilation


Version 2.6.4.1b (Feb 02, 2011)
===============================

  Enhancements
  ============
    1. Restored the vlan_id handling for the indicate_netevent call


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-<version>
     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
