blob: 95e8f65a8dab74221ddac5201feddff1f7f2d403 [file] [log] [blame]
============================
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