15 Dec, 2011

1 commit

  • FC and SCSI Discovery Fixes:

    - Clear the virtual fabrics bit (word 1 bit 30) when sending the FLOGI
    and FDISC. (CR 124339)
    - Return a MLQUEUE_DEVICE_BUSY if the driver detects that an I/O is being
    retried too quickly (CR 124668)
    - Remove NDLP reference put in lpfc_cmpl_els_logo_acc for all but fabric
    nodes (CR 123924)
    - Only retry FDISCs every second and stop retrying after devloss number
    of retries (CR 13939)
    - Check to see if vports are unloading before adding them to the vport
    work array. (CR 124996)
    - Fixed illegal state transition during driver unload (CR 124191)
    - Added missing protection on setting/clearing of vport->fc_flag bit (CR 126002)
    - Set NPIV flag in lpfc_mbx_process_link_up for all ports sli3 and
    above. (CR 126094)
    - Clear FCP command bytes that are not used. (CR 126209)

    Signed-off-by: Alex Iannicelli
    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

27 May, 2011

2 commits

  • This patch adds support for hardware that returns resource ids via
    extents rather than contiguous ranges.

    [jejb: checkpatch.pl fixes]
    Signed-off-by: Alex Iannicelli
    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     
  • Miscellaneous Fixes and Corrections
    - Remove the memset in the lpfc_sli4_remove_rpi_hdrs call.
    - Correct swapping of SGE word 2 relative to offset value
    - Reorganize CQ and EQ usage to comply with SLI4 Specification.
    - Expand the driver to check the rn bit. Only detect an error if the error bit
    is set and the RN bit is NOT set.
    - If mailbox completion code is not success AND the mailbox status is success,
    then and only then will the driver overwrite the mailbox status.
    - When driver initializing device, if the device is on a PCIe bus, set
    PCI's "needs fundamental reset" bit so that EEH uses fundamental reset
    instead of hot reset for recovery.
    - Prevent driver from using new WWN when changed in firmware (until driver
    reload)
    - When HBA reports maximum SGE size > 0xffffffff (infinite), override
    with 0x80000000.
    - Fixed potential missed SLI4 device initialization failure conditions.
    - Added 100ms delay before driver action following IF_TYPE_2 function reset.
    - Reverted patch to UNREG/REG on PLOGI to mapped/unmapped node.
    - Add a check for the CVL received flag in the fcf inuse routine to avoid
    unregistering the fcf if Devloss fires before Delay discover timer fires.

    Signed-off-by: Alex Iannicelli
    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

31 Mar, 2011

1 commit


19 Feb, 2011

1 commit

  • FC Discovery changes

    - Treat received PLOGI while logged in as a relogin (unregister and reregister).
    - Added a timer to delay Nport discovery when clean bit is cleared and Fabric
    portname/nodename/FCID is changed.
    - Invalidate Port's DID when receiving PLOGI from p2p port with CONFIG_PORT
    mailbox command.

    Signed-off-by: Alex Iannicelli
    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

22 Dec, 2010

1 commit


28 Jul, 2010

2 commits


12 Apr, 2010

1 commit

  • - Add code to prevent unreg_vpi mailbox command from failing.
    - Add code to reset the HBA if unreg_vpi mailbox fails with busy status.
    - Remove code that was clearing the nlp_type stored during rport discovery.

    Signed-off-by: Alex Iannicelli
    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

11 Apr, 2010

1 commit


30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

09 Feb, 2010

2 commits

  • Discovery relates changes:
    - Separated VPI_REGISTERED state of physical port into VFI_REGISTERED and
    VPI_REGISTERED state so that driver can unregister physical port VPI
    independent of VFI.
    - Add code to unregister, re-init and re-register physical port VPI
    when physical port NportID change.
    - Add code to unregister and re-register VPI of a vport when its Nport
    ID change.
    - Add code in FDISC completion path to re-start FLOGI discovery when
    a FDISC complete with LOGIN_REQUIRED reason code.
    - Fix a memory leak in lpfc_init_vpi_cmpl
    - Add code to start a timer for vport to retry FDISC when CVL is received
    by a vport or physical port. If all Nports receive CVLs, then all timers
    are cancelled and a logical link level discovery will be started after
    one second.
    - Flush ELS commands after killing all delayed ELS commands.

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     
  • Fix hardware/SLI relates issues:
    - Handle XB bit so that ELS XRIs are not prematurely released.
    - Handle XB bit so that FCP XRIs are not prematurely released.
    - Define new security SLI Commands.
    - Remove unused security SLI commands
    - Skip receive data size parameter check on received FLOGI.
    - Added LPFC_USE_FCPWQIDX flag to iocb to force SLI layer
    to submit abort WQE on same WQ as the command WQE.

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

05 Dec, 2009

1 commit

  • FC protocol fixes.
    - Fix send sequence logic to handle multi SGL IOCBs.
    - Fix FDISC completion always setting VPORT state to failed.
    - Ported the fix on reporting of max_vpi to uppper layer.
    - Fix incorrect number of Vports allowed to be created.
    - Fixed Dead FCoE port after creating vports.
    - Added handling of ELS request for Reinstate Recovery Qualifier (RRQ)
    - Handle unsolicited CT exchange initiator receiving CT exchange ABTS
    - Migrate LUN queue depth ramp up code to scsi mid-layer.
    - Made ABTS WQE go to the same WQ as the WQE to be aborted.
    - Fix Vport does not rediscover after FCF goes away.
    - Fixed lpfc_unreg_vfi failure after devloss timeout.
    - Fixed RPI bit leak.
    - Fix hbq pointer corruption during target discovery.

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

15 Jun, 2009

1 commit

  • Contains the following changes:
    - Force vport to send LOGO to fabric controller when deleting vport
    - Fixed driver failing to register login when a PLOGI is received
    - Fixes for FIP discovery
    - Added stricter checks for FCF addressing mode
    - Added code to send only FLOGI, FDISC and LOGO to Fabric controller as FIP
    - Fixed handling of LOGO from Fabric port
    - Fixed consecutive link up events skipped link_down processing

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

09 Jun, 2009

4 commits


27 Apr, 2009

1 commit

  • 8.3.1 Fixes/Changes :

    - Fix incorrect byte-swapping on word 4 of IOCB (data length) which
    caused LUNs to not be discovered on big-endian (e.g. PPC)

    - Remove a bad cast of MBslimaddr which loses the __iomem (sparse)

    - Make lpfc_debugfs_mask_disc_trc static (sparse)

    - Correct misspelled word BlockGuard in lpfc_logmsg.h comment

    - Replaced repeated code segment for canceling IOCBs from a list with
    a function call, lpfc_sli_cancel_iocbs().

    - Increased HBQ buffers to support 40KB SSC sequences.

    - Added sysfs interface to update speed and topology parameter without
    link bounce.

    - Fixed bug with sysfs fc_host WWNs not being updated after changing
    the WWNs.

    - Check if the active mailbox is NULL in the beginning of the mailbox
    timeout handler - fixes panic in the mailbox timeout handler while
    running IO stress test

    - Fixed system panic in lpfc_pci_remove_one() due to ndlp indirect
    reference to phba through vport

    - Removed de-reference of scsi device after call to scsi_done() to fix
    panic in scsi completion path while accessing scsi device after
    scsi_done is called.

    - Fixed "Nodelist not empty" message when unloading the driver after
    target reboot test

    - Added LP2105 HBA model description

    - Added code to print all 16 words of unrecognized ASYNC events

    - Fixed memory leak in vport create + delete loop

    - Added support for handling dual error bit from HBA

    - Fixed a driver NULL pointer dereference in lpfc_sli_process_sol_iocb

    - Fixed a discovery bug with FC switch reboot in lpfc_setup_disc_node

    - Take NULL termintator into account when calculating available buffer space

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

30 Dec, 2008

1 commit

  • - Avoid polling HBA Error Attention when HBA's PCI channel is offline
    due to PCI EEH

    - Fix handling of RSCN with non-zero event qualifiers

    - Remove unnecessary sleeps during HBA initialization which slow down
    driver load

    - Fix internal and external loopback on FCoE HBAs

    - Fix incorrect decrement of cmd_pending count in lpfc_queuecomand
    error path

    - Fix reporting of port busy events to management application

    - Rename lpfc_adjust_queue_depth() to lpfc_rampdown_queue_depth() for
    consistency with its partner lpfc_rampup_queue_depth()

    - Delete redundant lpfc_cmd->start_time = jiffies assignment in
    lpfc_queuecommand()

    - Fix handling for ELS, mailbox and heartbeat time outs in the worker
    thread by removing unnecessary checking of the work_port_events
    flags.

    - Fix NULL pointer dereference in lpfc_prep_els_iocb

    - In lpfc_device_recov_npr_node(), move clearing of NLP_NPR_2B_DISC
    flag after call to lpfc_cancel_retry_delay_tmo() to keep
    targets-in-discovery count correct

    - Remove lpfc_probe_one()'s call to scsi_scan_host() which could cause
    concurrent SCSI scans to step on each other

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

13 Oct, 2008

3 commits

  • Added support for new sysfs attributes: lpfc_stat_data_ctrl and
    lpfc_max_scsicmpl_time. The attributes control statistical reporting
    of io load.

    Added support for new fc vendor events for error reporting.

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     
  • Miscellaneous Fixes:
    - Fix the wrong variable name used for checking node active usage status
    - Fix numerous duplicate log message numbers
    - Fix change KERN_WARNING messages to KERN_INFO.
    - Stop sending erroneous LOGO to fabric after vport is already terminated
    - Fix HBQ allocates that were kalloc'ing w/ GFP_KERNEL while holding a lock.
    - Fix gcc 4.3.2 compiler warnings and a sparse warning
    - Fix bugs in handling unsolicited ct event queue
    - Reorder some of the initial link up checks, to remove odd VPI states.
    - Correct poor VPI handling
    - Add debug messages
    - Expand Update_CFG mailbox definition
    - Fix handling of VPD data offsets
    - Reorder loopback flags
    - convert to use offsetof()

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     
  • Miscellaneous Discovery fixes:
    - Fix rejection followed by acceptance in handling RPL and RPS
    unsolicited events
    - Fix for vport delete crash
    - Fix PLOGI vs ADISC race condition

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

12 Jul, 2008

1 commit

  • - Fix ADISC timeout on initiators causing devloss timeout on targets
    - Correct FAN processing : port state vs unreg rpi's wasn't consistent
    - Correct mismatches between ASICs and PLOGI that would skip PLOGI

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

10 Apr, 2008

1 commit

  • Multiple Discovery Fixes:
    - Fix race on discovery due to link events coinciding with vport_delete.
    - Use NLP_FABRIC state to filter out switch-based pseudo initiators that
    reuse the same WWNs.
    - Correct erroneous setting of DID=0 in lpfc_matchdid()
    - Correct extra reference count that was in the lookup path for the
    remoteid from an unsolicited ELS.
    - Correct double-free bug in els abort path.
    - Correct FDMI server discovery logic for switch that return a WWN of 0.
    - Fix bugs in ndlp mgmt when a node changes address
    - Correct bug that did not delete RSCNs for vports upon link transitions
    - Fix "0216 Link event during NS query" error which pops up when vports
    are swapped to different switch ports.
    - Add sanity checks on ndlp structures
    - Fix devloss log message to dump WWN correctly
    - Hold off mgmt commands that were interferring with discovery mailbox cmds
    - Remove unnecessary FC_ESTABLISH_LINK logic.
    - Correct some race conditions in the worker thread, resulting in devloss:
    - Clear the work_port_events field before handling the work port events
    - Clear the deferred ring event before handling a deferred ring event
    - Hold the hba lock when waking up the work thread
    - Send an acc for the rscn even when we aren't going to handle it
    - Fix locking behavior that was not properly protecting the ACTIVE flag,
    thus allowing mailbox command order to shift.

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

12 Feb, 2008

2 commits

  • Miscellaneous fixes:
    - Fix ERRATT flag which was overlapping
    - Allow RESTART mbx commands through when stopped.
    - Accept incoming PLOGI when connected to an N_Port.
    - Fix NPort to NPort pt2pt problems: ADISC and reg_vpi issues
    - Fix vport unloading error that erroneously cleaned up RSCN buffers
    - Fix memory leak during repeated unloads - in mbox handling
    - Fix link bounce vs FLOGI race conditions

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     
  • Correct ndlp referencing issues:
    - Fix ndlp kref issues due to race conditions between threads
    - Fix cancel els delay retry event which missed an ndlp reference count

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

24 Jan, 2008

2 commits


12 Jan, 2008

4 commits

  • Miscellaneous Small Fixes - part 2

    - Fix ndlp left in PLOGI state after link up
    - Fix cannot rcv unsol ELS frames after running HBA resets for a few minutes
    - Fix HBQ buffer_count implemention
    - Fix RPI leak
    - Fix crash while deleting vports while HBA is reset
    - Revert the FCP Fbits offset back to 7
    - Fix panic when deleting vports
    - Remove unused code in switch statement outside of a case
    - Reject PLOGI from invalid PName or NName of 0
    - Ignore PLOGI responses from WWPName or WWNName of 0
    - Fix debugfs hbqinfo display for ppc
    - Added 8G to list of supported speeds for sysfs parameter
    - Defer ndlp cleanup to dev-loss timeout handler
    - Added support for WRITE_VPARMS mailbox command by applications

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     
  • FC Discovery Fixes:
    - Fix up lpfc_drop_node() vs lpfc_nlp_not_used() usage
    - Clear ADISC flag when unregistering RPI and REMOVE ndlps if in recovery.
    - Fix usage of UNUSED list and ndlps
    - Fix PLOGI race conditions
    - Reset link if NameServer PLOGI errors occur
    - Synchronize GID_FT queries with PLOGI receptions

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     
  • Miscellaneous Small Fixes - part 1
    - Fix typo kmzlloc -> kzalloc
    - Fix discovery ndlp use after free panic
    - Fix link event causing flood of 0108 messages
    - Relieve some mbox congestion on link up with 100 vports
    - Fix broken vport parameters
    - Prevent lock recursion in logo_reglogin_issue
    - Split uses of error variable in lpfc_pci_probe_one into retval and error
    - Remove completion code related to dev_loss_tmo
    - Remove unused LPFC_MAX_HBQ #define
    - Don't compare pointers to 0 for sparse
    - Make 2 functions static for sparse
    - Fix default rpi cleanup code causing rogue ndlps to remain on the NPR list
    - Remove annoying ELS messages when driver is unloaded
    - Fix Cannot issue Register Fabric login problems on link up
    - Remove LPFC_EVT_DEV_LOSS_DELAY
    - Fix FC port swap test leads to device going offline
    - Fix vport CT flags to only be set when accepted
    - Add code to handle signals during vport_create
    - Fix too many retries in FC-AL mode
    - Pull lpfc_port_link_failure out of lpfc_linkdown_port

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     
  • Remove flawed MBX_STOP_IOCB logic

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

02 Aug, 2007

3 commits

  • - Fix vport ndlp ref counting errors
    - Fix use after free of ndlp structure
    - Use the correct flag to check for LOADING setting.
    - Fix driver unload bugs (related to shost references) after link down or rscn
    - Fix up HBQ initialization
    - Fix port_list locking around driver unload.
    - Fix references to hostdata as a phba
    - Fix GFFID type offset to work correctly with big endian structure.
    - Only call pci_disable_msi if the pci_enable_msi succeeded
    - Fix vport_delete wait/fail if in discovery
    - Put a reference on the nameservers ndlp when performing CT traffic.
    - Remove unbalanced hba unlock.
    - Fix up HBQ processing
    - Fix lpfc debugfs discovery trace output for ELS rsp cmpl
    - Send ADISC when rpi is 0
    - Stop FDISC retrying forever
    - Unable to retrieve correct config parameter for vport
    - Fix sli_validate_fcp_iocb, sli_sum_iocb, sli_abort_iocb to be vport-aware.
    - Fix index-out-of-range error in iocb. Spotted by Coverity.

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     
  • Rework the lpfc_printf_log() macro so that logging is enabled on a
    per-vport basis. Used to be on a physical-port basis, thus logging
    with large numbers of vports became a mess. Required redefinition of
    the macro, and an update of every use.

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     
  • - Split attributes up into vport and non-vport attributes.
    - Move vport specific cfg params to vport

    Many of the vport-specific behaviors were still global attributes
    on the physical port. Move them to the vport itself.

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

18 Jun, 2007

3 commits

  • Following the NPIV support, the following changes have been accumulated
    in the testing and qualification of the driver:

    - Fix affinity of ELS ring to slow/deferred event processing
    - Fix Ring attention masks
    - Defer dev_loss_tmo timeout handling to worker thread
    - Consolidate link down error classification for better error checking
    - Remove unused/deprecated nlp_initiator_tmr timer
    - Fix for async scan - move adapter init code back into pci_probe_one
    context. Fix async scan interfaces.
    - Expand validation of ability to create vports
    - Extract VPI resource cnt from firmware
    - Tuning of Login/Reject policies to better deal with overwhelmned targets
    - Misc ELS and discovery fixes
    - Export the npiv_enable attribute to sysfs
    - Mailbox handling fix
    - Add debugfs support
    - A few other small misc fixes:
    - wrong return values, double-frees, bad locking
    - Added adapter failure heartbeat

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     
  • NPIV support is added to the driver. It utilizes the interfaces of
    the fc transport for the creation and deletion of vports. Within the
    driver, a new Scsi_Host is created for each NPIV instance, and is
    paired with a new instance of a FC port. This allows N FC Port
    elements to share a single Adapter.

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     
  • NPIV support is only available via new adapter interface extensions,
    termed SLI-3. This interface changes some of the basic behaviors such
    as command and response ring element sizes and data structures, as
    well as a change in buffer posting. Note: the new firmware extensions
    are found only on our mid-range and enterprise 4Gig adapters - so NPIV
    support is available only on these newer adapters. The latest firmware
    can be downloaded from the Emulex support page.

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart