                              Release Notes
                      Broadcom bnx2fc VMware Driver
                            Version 1.74.02
                              08/20/2012

                          Broadcom Corporation
                         5300 California Avenue,
                            Irvine, CA 92617

               Copyright (c) 2011 - 2012 Broadcom Corporation
                           All rights reserved


bnx2fc 1.74.02 (Aug 20, 2012)
====================================
   Fixes
   -----
   1. Problem: CQ64732 : VMware BFS (boot from SAN) - boot port display
               wrong VLAN ID in sysfs
      Cause:   VLAN ID was displayed incorrecly because.  libfcoe is not
               updating 'fip' structure for BFS as there is no VLAN Discovery
      Change:  Properly use the correct VLAN ID value when dumping this
               data via sysfs.

   Enhancements
   ------------
   1. Sync cnic_if.h header file

bnx2fc 1.74.01 (July 16, 2012)
====================================
   Fixes
   -----
   1. Problem: CQ64128 : ESX 5.1 BFS:  Lost paths during I/O with failover
      Cause:   VLAN ID was not set when the session was offloaded
      Change:  Libfcoe obtains VLAN information from the fcoe boot tables
		instead of going through VLAN Discovery process. bnx2fc
		driver was expecting VLAN Discovery completion callback to
		note down the VLAN information. Fix is to keep using
		previously set VLAN ID during fcoe_create() call for
		FCoE boot adapters

   2. Problem: CQ64424 - ESX 5.1: Initiator fail to login to switch after
		VSAN suspend or fcoe disable/enable at switch
      Cause:   Duplicate of CQ64128
      Change:  Check CQ64128

   3. Problem: CQ64651 - Vmware BFS - I/O Stress failed in NOG configuraiton
      Cause:   Duplicate of CQ64128
      Change:  Check CQ64128

   4. Problem: CQ64461 - ESX BFS:  No initiator fabric login after
		disable/enable FCoE from Brocade
      Cause:   Duplicate of CQ64329, open() was not called for CNA netdev
      Change:  Check CQ64329


   Enhancements
   ------------
	None


bnx2fc 1.74.00.v50.2 (June 26, 2012)
====================================
   Enhancements
   ------------
   1. Sync cnic_if.h header file

bnx2fc 1.74.00 (May 30, 2012)
==========================
   Enhancements
   ------------
   1. Enable FCoE Boot

bnx2fc 1.72.51 (Apr 19, 2012)
=============================
   Fixes
   -----
   1. Problem: bnx2fc caused unresolved symbol
      Cause:   used wrong debug macro, BNX2FC_IO_DBG instead of bnx2fc_dbg
      Change:  updated code to use the right debug macro

   Enhancements
   ------------
	None


bnx2fc 1.72.50 (Apr 18, 2012)
=============================
   Fixes
   -----
   1. Problem: FLOGI not retried when receiving bad FLOGI responses.
      Cause:   Frame was being dropped in bnx2fc layer
      Change:  Allow upper layer to handle bad frames and retry FLOGI

   2. Problem: Struck I/O when task management times out.
      Cause:   I/O is not cleaned when the task management IO times out or
		a flush operation is performed while task management IO is
		pending
      Change:  With this change, as part of explicit logout, the IO is
		cleaned up.

   Enhancements
   ------------
	None


bnx2fc 1.72.11 (Mar. 30, 2012)
=============================
   Fixes
   -----
   1. Problem: CQ62401: NCSI Get FCoE Capabilities fields are
               incorrect
      Cause:   The driver was not properly setting the 
               capabilities field which is passed to NCSI
      Change:  Properly set values from the FCoE driver
               to the fcoe_capabilities strcuture
               passed to NCSI

bnx2fc 1.72.10 (Feb. 09, 2012)
==========================
   Enhancements
   ------------
   1. Rearrange structure fields and remove un used ones.

bnx2fc 1.72.9 (Jan. 27, 2012)
==========================
   Enhancements
   ------------
   1. Support FCoE Stats request from cnic - MFW.


bnx2fc 1.72.8 (Jan. 10, 2012)
=============================
   Fixes
   -----
   1. Problem: CQ60765: CNIC-ESX: VNTag: PSOD during error recovery
               test case
      Cause:   There is a deadlock in the vmkernel when calling
               vmklnx_cna_cleanup_queues() without initially
               calling vmklnx_cna_reinit_queues().  
      Change:  To prevent this deadlock, the bnx2fc driver will
               keep the state of the CNA rings and only call
               vmklnx_cna_cleanup_queues() if the CNA rings were
               initialized.

   Enhancements
   ------------
   1. Change: Redefined wmb() to use the proper memory barrier
              instruction


bnx2fc 1.72.7 (Jan. 04, 2012)
==========================
   Enhancements
   ------------
   1. Change: Update copyright headers to 2012

   2. Sync'ed cnic_if.h header file


bnx2fc 1.72.6 (December 20, 2011)
=============================
   Fixes
   -----
   1. Problem: CQ60212: Dropping a session when getting LOGO flooding 
               from a target
      Cause:   When a flood of unsolicited LOGOs are received by the 
               initiator, due to insuficient PLOGI retries, the session
               is dropped. 
      Change:  Increase max_rport_retry_count to 255 in lport config.

  Enhancements
  ============
    1. Code Cleanup in bnx2fc_initiate_tmf()


bnx2fc 1.72.5 (December 12, 2011)
=============================
  Enhancements
  ============
    1. Integrate FCoE boot support related patch from vmware team.

bnx2fc 1.72.4 (December 06, 2011)
=============================
   Fixes
   -----
   1. Problem: (CQ60043) Data Miscompare with request size 2k and smaller
      Cause:   T7.2 Firmware enhancements compatibility.
      Change:  Driver should initialize SGE contentin the RX only section. 

bnx2fc 1.72.3 (December 01, 2011)
=============================
  Enhancements
  ============
    1.  Cleanup bnx2fc_hba structure

bnx2fc 1.72.2 (November 17, 2011)
=============================
  Enhancements
  ============
    1.  Turn on VMK Memory pool.

bnx2fc 1.72.1 (November 14, 2011)
=============================
   Initial Branch

bnx2fc 1.0.1v (November 1, 2011)
=============================
   Fixes
   -----
   1. Problem: PSOD while doing shut/no shut on sanblaze targets.
      Cause:   mp_resp_bd allocation is not properly checked. This
               is causing null dereference at the time of usage.
      Change:  Change mp_req_bd to mp_resp_bd in the condition check. 
      Impact:  ESX FCoE only.

  Enhancements
  ============
    1.  Code cleanup: removed bringup related TODOs.

bnx2fc 1.0.1t (Oct. 19, 2011)
=============================

  Enhancements
  ============
    1.  Removed unnecessary files, bnx2fc_compat.[c,h] and fcoe.h


bnx2fc 1.0.1s (Sept 27, 2011)
=============================
   Fixes
   -----
   1. Problem: (CQ58879) Incorrect WWPN/WWNN Prefixes is seen with
               bnx2fc
      Cause:   The WWPN/WWNN from bnx2x extracted from shared memory
               were not stored by CNIC.
      Change:  WWPN/WWNN bnx2fc can access this information via the
               cnic_dev structure
      Impact:  ESX FCoE only.

   2. Problem: CQ58446 : ESX 5.0 FCoE: sysfs /proc/scsi/bnx2fc show NPIV enable,
		Need to disable NPIV support
      Cause:   Device advertises as NPIV capable to libfc which is then used in
		FLOGI PDU
      Change:  Do not advertise NPIV capabilities in 'lport->does_npiv'
      Impact:  ESX FCoE only.

  Enhancements
  ============
	None


bnx2fc 1.0.1r (Sept 13, 2011)
=============================
    1.  Problem : CQ58445 : ESX 5.0 FCoE : PSOD at FC_rport_Prli during random
		  packet drop with I/O
        Cause	: Bug in fc_remote_port_chkready() causes LLD to accept ELS/SCSI-IO
		  even before 'rport' is completely setup. Implement own function
		  based in Vmware's implementation of vmklnx_fc_remote_port_chkready()
        Changes	: Added function bnx2fc_remote_port_chkready()
	Impact	: ESX FCoE only

  Enhancements
  ============
	None


bnx2fc 1.0.1q (Sept 13, 2011)
=============================

  Enhancements
  ============
    1.  Update README.TXT in Caveat section 'iSCSI and FCoE offload
        coexistence (For ESX 5.0 and greater)'
    2.  Removed BCM57840 support


bnx2fc 1.0.1p (Aug 31, 2011)
=============================

   Enhancements
   ------------
   1. Change: Add eh_bus_reset functionality.


bnx2fc 1.0.1p (Aug 31, 2011)
=============================

   Enhancements
   ------------
   1. Change: Add eh_bus_reset functionality.

bnx2fc 1.0.1o (Aug 29, 2011)
=============================

   Enhancements
   ------------
   1. Change: Updated build files to compile on ESX 5.0 GA (build 469512)


bnx2fc 1.0.1n (Aug 24, 2011)
=============================
    1.  Problem	: CQ58006 : ESX 5.0 Initiator logs out from switch after staying
                  connected for around 24 hrs and dont logback in unless reboot
        Cause	: ESX only issue where the SKB was not properly dropped if the
                  packet had a VLAN not registered to the CNA device.
        Changes	: Properly free the SKB if the VLAN packet is to be dropped
	Impact	: ESX FCoE only

   Merge changes from Linux upstream patches:
   -------------------------------------------
        1. Problem: Race condition between CQ doorbell unmap and IO completion
                    path that arms the CQ which causes a NULL dereference.
    	   Change : Protect the ctx_base with cq_lock, wait for the cQ doorbell
                    to be successfully mapped before arming the CQ and do not
                    count unsolicited CQ completions for free_sqes.

   Enhancements
   ------------
   1. Change: Added VLAN packet drop statistics

bnx2fc 1.0.1m (Aug 18, 2011)
=============================
   Merge changes from Linux upstream patches:
   -------------------------------------------
        1. Change: Add 2.5G link speed reporting for NIC partitioned interfaces.

        2. Problem: scsi_dma_unmap() not invoked on IO completions. 
    	   Change : Do not set io_req->sc_cmd to NULL until bnx2fc_unmap_sg_list() 
                    is called to enable it to unmap the DMA mappings.

        3. Problem: Hold tgt->lock when calling cmd_release.
    	   Change : Add tgt_lock when calling cmd_release if init_mp_req() fails.
	
        4. Problem: Do not arm CQ when there are no CQEs.
    	   Change : Add free_cqes in bnx2fc_port to track outstanding CQEs.  

        5. Change : When there is a single BD for the entire data to be transmitted,
                    use the BD inside the SGL context and set the cached SGE indication
                    in the task context

        6. Problem: Missing KCQEs
    	   Change : _DESTROY_CMPL flag was never cleared, the driver does not wait for
                    firmware destroy completion. Clear the flag after the wait_event.
                 
bnx2fc 1.0.1l (Aug 18, 2011)
=============================
    1.  Problem	: CQ57674 : ESX 5.0 FCoE: Target reset initiated form the visor,
		  results in a LUN reset on the wire
        Cause	: ESX only issues eh_device_reset_handler() for both LUN RESET
		  and TARGET RESET. So driver has to consult sc_cmd->vmkflags to
		  identify which request was issued and based on the flags send
		  LUN RESET TMF Command or TARGET RESET command
        Changes	: Change eh_device_reset_handler() to check for sc_cmd->vmkflags
		  to identify the request and accordingly send LUN RESET TMF
		  Command or TARGET RESET command
	Impact	: 57712 ESX FCoE only

    2.  Problem	: CQ57705 : ESX5.0 FCoE: E3 in NPAR mode never sends VLAN Request.
        Cause	: MF PCI DID was not listed supported pci_device_id table
        Changes	: Added MF DID's to table
	Impact	: 57712 ESX FCoE only

    3.  Problem	: CQ57895 : ESX 5.0 FCoE: sysfs - bnx2fc - link_supported _speed
		  field is unknown
        Cause	: 'link_supported_speeds' is a bit field and not a integer value
        Changes	: handle 'link_supported_speeds' as bit field and accordingly
		  display all supported fields.
	Impact	: 57712 ESX FCoE only

    4.  Problem	: CQ57896 : ESX 5.0 FCoE" Typo Link_speed field in sysfs - bnx2fc
        Cause	: Typo
        Changes	: modified source code to rectify the typo
	Impact	: 57712 ESX FCoE only

   Enhancements
   ------------
   1. Change: Added versioning to the CNIC ULP structure to help futher
              prevent the mismatching and mixing of cnic/bnx2i/bnx2fc
              drivers.


bnx2fc 1.0.1k (Aug 05, 2011)
=============================

    1.  Problem	: CQ57629 : ELost FCoE interface after upgrade to driver 50.70.20
        Cause	: Incorrect cnic_if.h was used with the bnx2fc-1.0.1j label
        Changes	: Created a new label with the proper cnic_if.h file
	Impact	: 57712 ESX FCoE only


bnx2fc 1.0.1j (Aug 04, 2011)
=============================

    1.  Problem	: CQ57474 : ESX 5.0 FCoE: No VLAN request retry after changing
		  VLAN ID on Brocade
        Cause	: Brocade responded to FIP VLAN REQ with VID=4095 which has
		  special significance in ESX and a software bug in current
		  implementation of libfcoe is creating a deadlock. This issue
		  is tracked by PR# 747835
        Changes	: Drop FIP VLAN Notfication frame with VID=4095
	Impact	: 57712 ESX FCoE only

    2.  Problem	: CQ57247 - CNIC-ESX: PSOD removing FCoE hba in ESX5.0 RC on
		  OEM system
        Cause	: bnx2fc was wrongly using fcoe_port instead of bnx2fc_port.
		  Also there is no use 'fcoe' element in this structure,
		  so get rid of allocation and freeing of memory for 'fcoe'.
        Changes	: Do not use 'fcoe_port' and get rid of unused 'port->fcoe'
	Impact	: 57712 ESX FCoE only

    3.  Problem	: CQ57276 - ESX 5.0 FCoE: No restart Fabric Discovery after
		  droppping Discovery Advertisements
        Cause	: FCF refresh and re-discovery happens after 3 DA drops.
		  To make this happen consistently after 2 DA we need to adjust
		  aging calculation parameters within libfcoe
        Changes	: Documented the behavior under "Caveats" section in README.TXT
	Impact	: 57712 ESX FCoE only

    4.  Problem	: CQ56409 - ESX 5.0 FCoE:  Intiator periodically sends out
                  Discovery Solicitation after login is established
        Cause	: Due to no VLAN filtering, Initiator was responding to DA
	          arriving on different VLAN's that the one assigned during
                  VLAN discovery process
        Change:   Added the ability to drop VLAN packets which are not
                  registered to the CNA device.
	Impact	: 57712 ESX FCoE only

    5.  Problem	: Cont00057610 - ESX 5.0 FCoE: ScsiDevice I/O error messages
		  when running I/O
        Cause	: SQ size was configured as 256 with which Max number of
		  SCSI CMDS outstanding per target will be 96. In this particular
		  test I/O stress was run against 6-7 LUNS behind 1 single
		  target with 64 outstanding commands per target. So more often
		  SCSI-ML tried to queue more than 96 commands in which case
		  bnx2fc will return SCSI_MLQUEUE_HOST_BUSY. ESX SCSI-ML does
		  expect LLD to accept everything in queuecommand()
        Change:   Change SQ size to 1024 with which bnx2fc can accpet 384 SCSI
		  commands per target. Also increase MAX_XID to 2048 which will
		  allow each adapter to accept 1024 SCSI commands per HBA
	Impact	: 57712 ESX FCoE only

   Enhancements
   ------------
	None
 
bnx2fc 1.0.1i (July 21, 2011)
============================

    1.  Problem	: CQ56514 - ESX 5.0 FCoE: No FCoE interface link after long 
                  shut/no shut from switch port.
        Cause	: Netevent handler is not starting discovery due to link state
		  check returning not ok during netevent_up handling. 
        Changes	: Changed direct call event handler to workqueue to enable
		  link status polling with 3sec timeout.
	Impact	: 57712 ESX FCoE only

    2.  Problem	: CQ57259 - ESX 5.0 FCoE: Unable to allocate FCoE resources
        Cause	: bnx2fc was reusing the cid and cnic will not reuse the cid
		  till CFC_DELETE is completed.
        Changes	: Do not reuse the fcoe cid immediately as CFC_DELETE is issued
		  2-secs after CONN_TERM is completed. Side effect of reusing is
		  that once a session drops and reconnects, cnic will keep
		  failing FCOE_KWQE_OPCODE_OFFLOAD_CONN1 request until cnic
		  completes CFC_DELETE processing.
	Impact	: 57712 ESX FCoE only

    3.  Problem	: CQ56850 - ESX 5 FCoE T7.0: MTU change takes over 1 minute to
		  response
        Cause	: BNX2FC_FLAG_DESTROY_CMPL bit in hba->flags is not cleared.
		  So first MTU change completes instantaneously where as second
		  and subsequent ones causes issue in cnic and bnx2x because
		  bnx2fc does not wait for FCOE_KWQE_OPCODE_DESTROY KWQE compl.
		  This results in cnic not processing the last kcqe because by
		  then cnic would have cleared CNIC_F_CNIC_UP flags, this flag
		  is cleared immediately after bnx2fc returns from the cnic_stop
	Changes	: Properly handle hba->flags
	Impact	: 57712 ESX FCoE only

   Enhancements
   ------------
	None

bnx2fc 1.0.1h (July 15, 2011)
============================

    1.  Problem	: CQ56918 - ESX 5.0 FCoE: ABTS response after CVL
        Cause	: 2 issues, libfc is not dropping unsolicited ABTS eventhough
		  it doesn't support it and lack of VLAN filter caused tagged
		  frames to be passed up the stack before VLAN Disco completes
        Changes	: Unsoilicited ABTS BLS is dropped in bnx2fc receive routine
	Impact	: 57712 ESX CNA only

    2.  Problem	: CQ56899 - VMware: incorrect response to RLS frame
        Cause	: bnx2fc was not implementing get_lesb() API which forces libfc
		  to initialized stats to it's best of knowledge and set invalid
		  counters to '-1'
        Changes	: Implement get_lesb() API and set irrelevant counters to '0'
	Impact: 57712 ESX CNA only

    3.  Problem	: CQ56967 - ESX 5.0 FCoE: PSOD at bnx2fc_rport_event_handler@<none>+0x701
        Cause	: Session offload path where session resources are freed after
		  rport is logged off. This code path of logging off the rport
		  and reclaiming resources is executed only if we bailing out
		  on connection offload because of some error. This potentially
		  could lead to access rport->rdata after 'rport' memory is
		  freed. Also do not call bnx2fc_free_session_resc() when
		  bnx2fc_init_tgt() fails because by then tgt->cq_lock is not
		  yet initialized, bnx2fc_free_session_resc() could hang trying
		  to acquire tgt->cq_lock spinlock
        Changes	: Free session resources before logging off the 'rport'
	Impact	: 57712 ESX CNA only

    4.  Problem	: Cont00056942 - ESX5.0 FCoE: Host MAC address is all zeros on wire
        Cause	: Use FCoE/FIP MAC address instead of iSCSI MAC from cnic_dev
		  structure as FIP Controller MAC. This is important when device
		  is operating in NPAR mode and only 1 of iSCSI or FCoE feature
		  is enabled.
        Changes	: Use FCoE/FIP MAC address instead of previously picked iSCSI MAC
		  from cnic_dev structure
	Impact	: 57712 ESX CNA only

    5.  Problem	: Cont00057080 - ESX 5.0 FCoE: Not able to login to fabric
		  FIP VLAN ID unavailable
        Cause	: Use FCoE/FIP MAC address instead of iSCSI MAC from cnic_dev
		  structure as FIP Controller MAC. This is important when device
		  is operating in NPAR mode and only 1 of iSCSI or FCoE feature
		  is enabled.
        Changes	: Use FCoE/FIP MAC address instead of previously picked iSCSI MAC
		  from cnic_dev structure
	Impact	: 57712 ESX CNA only


   Enhancements
   ------------
	Converted not so relevant printk()'s to bnx2fc_dbg(). Also initialization code
	is modified to enumerate only FCoE capable 10G devices.


bnx2fc 1.0.1g (July 8, 2011)
============================
   Enhancements
   ------------
   1. Change: Changed static MTU value to set max fc frame size to 2048.

bnx2fc 1.0.1f (July 1, 2011)
============================
   Enhancements
   ------------
   1. Change: Added proc_info support to diaplay hba / lport 
             / shost / rport / scsi_cmd structures. 

bnx2fc 1.0.1e (June 29, 2011)
============================
   Enhancements
   ------------
   1. Change: Added JSON script to the VIB so that the bnx2fc will
              automatically load during system boot.

bnx2fc 1.0.1d (June 24, 2011)
============================
   Fixes:
   ------------
   1. Problem:  CQ56519 -  Repeated shut/no shut on the switch port causes PSOD.

      Change:   Removed unconditional waits in the discovery path to eliminate
                race conditions.

bnx2fc 1.0.1c (June 17, 2011)
============================
   Enhancements
   ------------
   1. Change: Implement Vmk_MemPool scheme for dma memory allocation.

bnx2fc 1.0.1b (June 11, 2011)
============================
   Enhancements
   ------------
   1. Change: Change FCoE L2 Ring (NetQ) reinit logic
