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

                         Broadcom NetXtreme II iSCSI Driver
                            	For Linux

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

Version 2.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
